summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2021-07-14 11:30:07 +0200
committerMichaël Zasso <targos@protonmail.com>2021-07-20 15:24:51 +0200
commit6cdd310275bb0f8056aa0ae6d95614e9ca5b70c7 (patch)
tree9ed37b19cd668894854b7f469010f7621e63ef81 /deps
parentc0f10006c82d2d9896a552de98ed146f9542720d (diff)
downloadnode-new-6cdd310275bb0f8056aa0ae6d95614e9ca5b70c7.tar.gz
deps: update V8 to 9.2.230.21
PR-URL: https://github.com/nodejs/node/pull/38990 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps')
-rw-r--r--deps/v8/.gn12
-rw-r--r--deps/v8/AUTHORS3
-rw-r--r--deps/v8/BUILD.gn351
-rw-r--r--deps/v8/DEPS38
-rw-r--r--deps/v8/OWNERS2
-rw-r--r--deps/v8/PRESUBMIT.py6
-rw-r--r--deps/v8/RISCV_OWNERS2
-rw-r--r--deps/v8/WATCHLISTS14
-rw-r--r--deps/v8/base/trace_event/common/trace_event_common.h6
-rw-r--r--deps/v8/gni/v8.gni5
-rw-r--r--deps/v8/include/cppgc/allocation.h5
-rw-r--r--deps/v8/include/cppgc/cross-thread-persistent.h20
-rw-r--r--deps/v8/include/cppgc/explicit-management.h17
-rw-r--r--deps/v8/include/cppgc/heap-statistics.h4
-rw-r--r--deps/v8/include/cppgc/internal/compiler-specific.h4
-rw-r--r--deps/v8/include/cppgc/internal/pointer-policies.h39
-rw-r--r--deps/v8/include/cppgc/member.h31
-rw-r--r--deps/v8/include/cppgc/persistent.h6
-rw-r--r--deps/v8/include/cppgc/sentinel-pointer.h2
-rw-r--r--deps/v8/include/cppgc/type-traits.h19
-rw-r--r--deps/v8/include/js_protocol.pdl11
-rw-r--r--deps/v8/include/v8-cppgc.h32
-rw-r--r--deps/v8/include/v8-fast-api-calls.h50
-rw-r--r--deps/v8/include/v8-inspector.h12
-rw-r--r--deps/v8/include/v8-internal.h75
-rw-r--r--deps/v8/include/v8-metrics.h29
-rw-r--r--deps/v8/include/v8-profiler.h17
-rw-r--r--deps/v8/include/v8-util.h2
-rw-r--r--deps/v8/include/v8-version.h6
-rw-r--r--deps/v8/include/v8.h192
-rw-r--r--deps/v8/include/v8config.h14
-rw-r--r--deps/v8/infra/mb/mb_config.pyl55
-rw-r--r--deps/v8/infra/testing/builders.pyl536
-rw-r--r--deps/v8/samples/OWNERS2
-rw-r--r--deps/v8/samples/shell.cc18
-rw-r--r--deps/v8/src/DEPS2
-rw-r--r--deps/v8/src/api/api-arguments-inl.h44
-rw-r--r--deps/v8/src/api/api-inl.h23
-rw-r--r--deps/v8/src/api/api-macros.h10
-rw-r--r--deps/v8/src/api/api-natives.cc102
-rw-r--r--deps/v8/src/api/api.cc348
-rw-r--r--deps/v8/src/ast/ast-value-factory.cc16
-rw-r--r--deps/v8/src/ast/ast-value-factory.h20
-rw-r--r--deps/v8/src/ast/ast.cc26
-rw-r--r--deps/v8/src/ast/ast.h38
-rw-r--r--deps/v8/src/ast/modules.cc16
-rw-r--r--deps/v8/src/ast/modules.h12
-rw-r--r--deps/v8/src/ast/scopes.cc15
-rw-r--r--deps/v8/src/ast/scopes.h8
-rw-r--r--deps/v8/src/ast/variables.cc7
-rw-r--r--deps/v8/src/ast/variables.h5
-rw-r--r--deps/v8/src/base/atomicops.h298
-rw-r--r--deps/v8/src/base/atomicops_internals_portable.h216
-rw-r--r--deps/v8/src/base/atomicops_internals_std.h224
-rw-r--r--deps/v8/src/base/bit-field.h2
-rw-r--r--deps/v8/src/base/bits.h4
-rw-r--r--deps/v8/src/base/bounds.h2
-rw-r--r--deps/v8/src/base/cpu.cc2
-rw-r--r--deps/v8/src/base/enum-set.h2
-rw-r--r--deps/v8/src/base/hashmap.h4
-rw-r--r--deps/v8/src/base/logging.h6
-rw-r--r--deps/v8/src/base/once.h16
-rw-r--r--deps/v8/src/base/optional.h12
-rw-r--r--deps/v8/src/base/platform/mutex.h4
-rw-r--r--deps/v8/src/base/platform/platform-aix.cc2
-rw-r--r--deps/v8/src/base/platform/platform-freebsd.cc2
-rw-r--r--deps/v8/src/base/platform/platform-posix.cc11
-rw-r--r--deps/v8/src/base/platform/platform-win32.cc2
-rw-r--r--deps/v8/src/base/platform/semaphore.h4
-rw-r--r--deps/v8/src/base/sanitizer/asan.h37
-rw-r--r--deps/v8/src/base/sanitizer/lsan-page-allocator.cc (renamed from deps/v8/src/sanitizer/lsan-page-allocator.cc)2
-rw-r--r--deps/v8/src/base/sanitizer/lsan-page-allocator.h (renamed from deps/v8/src/sanitizer/lsan-page-allocator.h)9
-rw-r--r--deps/v8/src/base/sanitizer/lsan.h (renamed from deps/v8/src/base/lsan.h)12
-rw-r--r--deps/v8/src/base/sanitizer/msan.h40
-rw-r--r--deps/v8/src/base/small-vector.h7
-rw-r--r--deps/v8/src/base/template-utils.h9
-rw-r--r--deps/v8/src/base/v8-fallthrough.h2
-rw-r--r--deps/v8/src/base/vlq.h83
-rw-r--r--deps/v8/src/baseline/arm/baseline-assembler-arm-inl.h12
-rw-r--r--deps/v8/src/baseline/arm/baseline-compiler-arm-inl.h6
-rw-r--r--deps/v8/src/baseline/arm64/baseline-assembler-arm64-inl.h4
-rw-r--r--deps/v8/src/baseline/arm64/baseline-compiler-arm64-inl.h6
-rw-r--r--deps/v8/src/baseline/baseline-assembler-inl.h7
-rw-r--r--deps/v8/src/baseline/baseline-assembler.h5
-rw-r--r--deps/v8/src/baseline/baseline-compiler.cc889
-rw-r--r--deps/v8/src/baseline/baseline-compiler.h34
-rw-r--r--deps/v8/src/baseline/baseline-osr-inl.h38
-rw-r--r--deps/v8/src/baseline/baseline.cc38
-rw-r--r--deps/v8/src/baseline/baseline.h2
-rw-r--r--deps/v8/src/baseline/ia32/baseline-assembler-ia32-inl.h8
-rw-r--r--deps/v8/src/baseline/ia32/baseline-compiler-ia32-inl.h6
-rw-r--r--deps/v8/src/baseline/riscv64/baseline-assembler-riscv64-inl.h615
-rw-r--r--deps/v8/src/baseline/riscv64/baseline-compiler-riscv64-inl.h112
-rw-r--r--deps/v8/src/baseline/x64/baseline-assembler-x64-inl.h11
-rw-r--r--deps/v8/src/baseline/x64/baseline-compiler-x64-inl.h6
-rw-r--r--deps/v8/src/bigint/bigint-internal.cc43
-rw-r--r--deps/v8/src/bigint/bigint-internal.h65
-rw-r--r--deps/v8/src/bigint/bigint.h108
-rw-r--r--deps/v8/src/bigint/digit-arithmetic.h87
-rw-r--r--deps/v8/src/bigint/mul-schoolbook.cc99
-rw-r--r--deps/v8/src/bigint/vector-arithmetic.cc2
-rw-r--r--deps/v8/src/bigint/vector-arithmetic.h20
-rw-r--r--deps/v8/src/builtins/accessors.cc34
-rw-r--r--deps/v8/src/builtins/aggregate-error.tq7
-rw-r--r--deps/v8/src/builtins/arm/builtins-arm.cc52
-rw-r--r--deps/v8/src/builtins/arm64/builtins-arm64.cc58
-rw-r--r--deps/v8/src/builtins/arraybuffer.tq105
-rw-r--r--deps/v8/src/builtins/base.tq10
-rw-r--r--deps/v8/src/builtins/builtins-api.cc6
-rw-r--r--deps/v8/src/builtins/builtins-array-gen.cc1
-rw-r--r--deps/v8/src/builtins/builtins-array.cc65
-rw-r--r--deps/v8/src/builtins/builtins-arraybuffer.cc249
-rw-r--r--deps/v8/src/builtins/builtins-call-gen.cc103
-rw-r--r--deps/v8/src/builtins/builtins-call-gen.h7
-rw-r--r--deps/v8/src/builtins/builtins-debug-gen.cc22
-rw-r--r--deps/v8/src/builtins/builtins-definitions.h46
-rw-r--r--deps/v8/src/builtins/builtins-error.cc5
-rw-r--r--deps/v8/src/builtins/builtins-generator-gen.cc2
-rw-r--r--deps/v8/src/builtins/builtins-handler-gen.cc55
-rw-r--r--deps/v8/src/builtins/builtins-ic-gen.cc273
-rw-r--r--deps/v8/src/builtins/builtins-internal-gen.cc40
-rw-r--r--deps/v8/src/builtins/builtins-intl.cc43
-rw-r--r--deps/v8/src/builtins/builtins-lazy-gen.cc15
-rw-r--r--deps/v8/src/builtins/builtins-microtask-queue-gen.cc3
-rw-r--r--deps/v8/src/builtins/builtins-regexp-gen.cc31
-rw-r--r--deps/v8/src/builtins/builtins-trace.cc1
-rw-r--r--deps/v8/src/builtins/builtins-typed-array-gen.cc69
-rw-r--r--deps/v8/src/builtins/builtins-typed-array.cc3
-rw-r--r--deps/v8/src/builtins/builtins-utils.h3
-rw-r--r--deps/v8/src/builtins/builtins-wasm-gen.cc1
-rw-r--r--deps/v8/src/builtins/cast.tq18
-rw-r--r--deps/v8/src/builtins/constructor.tq11
-rw-r--r--deps/v8/src/builtins/conversion.tq21
-rw-r--r--deps/v8/src/builtins/ia32/builtins-ia32.cc65
-rw-r--r--deps/v8/src/builtins/ic-callable.tq73
-rw-r--r--deps/v8/src/builtins/ic.tq9
-rw-r--r--deps/v8/src/builtins/iterator.tq12
-rw-r--r--deps/v8/src/builtins/mips/builtins-mips.cc37
-rw-r--r--deps/v8/src/builtins/mips64/builtins-mips64.cc49
-rw-r--r--deps/v8/src/builtins/ppc/builtins-ppc.cc241
-rw-r--r--deps/v8/src/builtins/riscv64/builtins-riscv64.cc460
-rw-r--r--deps/v8/src/builtins/s390/builtins-s390.cc51
-rw-r--r--deps/v8/src/builtins/setup-builtins-internal.cc16
-rw-r--r--deps/v8/src/builtins/typed-array-createtypedarray.tq72
-rw-r--r--deps/v8/src/builtins/wasm.tq5
-rw-r--r--deps/v8/src/builtins/x64/builtins-x64.cc194
-rw-r--r--deps/v8/src/codegen/arm/assembler-arm-inl.h2
-rw-r--r--deps/v8/src/codegen/arm/assembler-arm.cc148
-rw-r--r--deps/v8/src/codegen/arm/assembler-arm.h77
-rw-r--r--deps/v8/src/codegen/arm/cpu-arm.cc2
-rw-r--r--deps/v8/src/codegen/arm/interface-descriptors-arm-inl.h256
-rw-r--r--deps/v8/src/codegen/arm/interface-descriptors-arm.cc306
-rw-r--r--deps/v8/src/codegen/arm/macro-assembler-arm.cc98
-rw-r--r--deps/v8/src/codegen/arm/macro-assembler-arm.h27
-rw-r--r--deps/v8/src/codegen/arm64/assembler-arm64-inl.h8
-rw-r--r--deps/v8/src/codegen/arm64/assembler-arm64.h6
-rw-r--r--deps/v8/src/codegen/arm64/cpu-arm64.cc9
-rw-r--r--deps/v8/src/codegen/arm64/interface-descriptors-arm64-inl.h265
-rw-r--r--deps/v8/src/codegen/arm64/interface-descriptors-arm64.cc310
-rw-r--r--deps/v8/src/codegen/arm64/macro-assembler-arm64-inl.h10
-rw-r--r--deps/v8/src/codegen/arm64/macro-assembler-arm64.cc112
-rw-r--r--deps/v8/src/codegen/arm64/macro-assembler-arm64.h27
-rw-r--r--deps/v8/src/codegen/arm64/register-arm64.h10
-rw-r--r--deps/v8/src/codegen/assembler.cc4
-rw-r--r--deps/v8/src/codegen/assembler.h27
-rw-r--r--deps/v8/src/codegen/bailout-reason.h1
-rw-r--r--deps/v8/src/codegen/code-factory.cc48
-rw-r--r--deps/v8/src/codegen/code-factory.h11
-rw-r--r--deps/v8/src/codegen/code-stub-assembler.cc311
-rw-r--r--deps/v8/src/codegen/code-stub-assembler.h69
-rw-r--r--deps/v8/src/codegen/compilation-cache.cc68
-rw-r--r--deps/v8/src/codegen/compilation-cache.h33
-rw-r--r--deps/v8/src/codegen/compiler.cc325
-rw-r--r--deps/v8/src/codegen/compiler.h9
-rw-r--r--deps/v8/src/codegen/constants-arch.h18
-rw-r--r--deps/v8/src/codegen/cpu-features.h3
-rw-r--r--deps/v8/src/codegen/external-reference-table.cc131
-rw-r--r--deps/v8/src/codegen/external-reference-table.h33
-rw-r--r--deps/v8/src/codegen/external-reference.cc8
-rw-r--r--deps/v8/src/codegen/external-reference.h10
-rw-r--r--deps/v8/src/codegen/handler-table.h4
-rw-r--r--deps/v8/src/codegen/ia32/assembler-ia32.cc77
-rw-r--r--deps/v8/src/codegen/ia32/assembler-ia32.h17
-rw-r--r--deps/v8/src/codegen/ia32/interface-descriptors-ia32-inl.h267
-rw-r--r--deps/v8/src/codegen/ia32/interface-descriptors-ia32.cc318
-rw-r--r--deps/v8/src/codegen/ia32/macro-assembler-ia32.cc144
-rw-r--r--deps/v8/src/codegen/ia32/macro-assembler-ia32.h236
-rw-r--r--deps/v8/src/codegen/interface-descriptors-inl.h484
-rw-r--r--deps/v8/src/codegen/interface-descriptors.cc561
-rw-r--r--deps/v8/src/codegen/interface-descriptors.h1384
-rw-r--r--deps/v8/src/codegen/machine-type.cc2
-rw-r--r--deps/v8/src/codegen/machine-type.h29
-rw-r--r--deps/v8/src/codegen/macro-assembler.h6
-rw-r--r--deps/v8/src/codegen/mips/assembler-mips.cc18
-rw-r--r--deps/v8/src/codegen/mips/assembler-mips.h2
-rw-r--r--deps/v8/src/codegen/mips/interface-descriptors-mips-inl.h258
-rw-r--r--deps/v8/src/codegen/mips/interface-descriptors-mips.cc332
-rw-r--r--deps/v8/src/codegen/mips/macro-assembler-mips.cc103
-rw-r--r--deps/v8/src/codegen/mips/macro-assembler-mips.h27
-rw-r--r--deps/v8/src/codegen/mips64/assembler-mips64.cc18
-rw-r--r--deps/v8/src/codegen/mips64/interface-descriptors-mips64-inl.h258
-rw-r--r--deps/v8/src/codegen/mips64/interface-descriptors-mips64.cc332
-rw-r--r--deps/v8/src/codegen/mips64/macro-assembler-mips64.cc103
-rw-r--r--deps/v8/src/codegen/mips64/macro-assembler-mips64.h27
-rw-r--r--deps/v8/src/codegen/optimized-compilation-info.cc16
-rw-r--r--deps/v8/src/codegen/optimized-compilation-info.h31
-rw-r--r--deps/v8/src/codegen/ppc/assembler-ppc.cc22
-rw-r--r--deps/v8/src/codegen/ppc/assembler-ppc.h7
-rw-r--r--deps/v8/src/codegen/ppc/constants-ppc.h42
-rw-r--r--deps/v8/src/codegen/ppc/interface-descriptors-ppc-inl.h256
-rw-r--r--deps/v8/src/codegen/ppc/interface-descriptors-ppc.cc306
-rw-r--r--deps/v8/src/codegen/ppc/macro-assembler-ppc.cc279
-rw-r--r--deps/v8/src/codegen/ppc/macro-assembler-ppc.h72
-rw-r--r--deps/v8/src/codegen/register-arch.h21
-rw-r--r--deps/v8/src/codegen/register.h4
-rw-r--r--deps/v8/src/codegen/reloc-info.cc39
-rw-r--r--deps/v8/src/codegen/reloc-info.h4
-rw-r--r--deps/v8/src/codegen/riscv64/assembler-riscv64-inl.h32
-rw-r--r--deps/v8/src/codegen/riscv64/assembler-riscv64.cc146
-rw-r--r--deps/v8/src/codegen/riscv64/assembler-riscv64.h80
-rw-r--r--deps/v8/src/codegen/riscv64/constants-riscv64.cc5
-rw-r--r--deps/v8/src/codegen/riscv64/constants-riscv64.h15
-rw-r--r--deps/v8/src/codegen/riscv64/interface-descriptors-riscv64-inl.h265
-rw-r--r--deps/v8/src/codegen/riscv64/interface-descriptors-riscv64.cc313
-rw-r--r--deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc367
-rw-r--r--deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h59
-rw-r--r--deps/v8/src/codegen/riscv64/register-riscv64.h2
-rw-r--r--deps/v8/src/codegen/s390/assembler-s390.cc4
-rw-r--r--deps/v8/src/codegen/s390/interface-descriptors-s390-inl.h256
-rw-r--r--deps/v8/src/codegen/s390/interface-descriptors-s390.cc306
-rw-r--r--deps/v8/src/codegen/s390/macro-assembler-s390.cc155
-rw-r--r--deps/v8/src/codegen/s390/macro-assembler-s390.h41
-rw-r--r--deps/v8/src/codegen/safepoint-table.cc58
-rw-r--r--deps/v8/src/codegen/safepoint-table.h43
-rw-r--r--deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc195
-rw-r--r--deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h221
-rw-r--r--deps/v8/src/codegen/signature.h8
-rw-r--r--deps/v8/src/codegen/source-position-table.cc4
-rw-r--r--deps/v8/src/codegen/source-position-table.h4
-rw-r--r--deps/v8/src/codegen/string-constants.cc3
-rw-r--r--deps/v8/src/codegen/turbo-assembler.cc7
-rw-r--r--deps/v8/src/codegen/turbo-assembler.h33
-rw-r--r--deps/v8/src/codegen/x64/assembler-x64.cc66
-rw-r--r--deps/v8/src/codegen/x64/assembler-x64.h11
-rw-r--r--deps/v8/src/codegen/x64/interface-descriptors-x64-inl.h258
-rw-r--r--deps/v8/src/codegen/x64/interface-descriptors-x64.cc309
-rw-r--r--deps/v8/src/codegen/x64/macro-assembler-x64.cc363
-rw-r--r--deps/v8/src/codegen/x64/macro-assembler-x64.h178
-rw-r--r--deps/v8/src/codegen/x64/register-x64.h6
-rw-r--r--deps/v8/src/common/external-pointer-inl.h21
-rw-r--r--deps/v8/src/common/external-pointer.h4
-rw-r--r--deps/v8/src/common/globals.h41
-rw-r--r--deps/v8/src/common/message-template.h5
-rw-r--r--deps/v8/src/common/ptr-compr-inl.h24
-rw-r--r--deps/v8/src/compiler-dispatcher/compiler-dispatcher.cc9
-rw-r--r--deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc17
-rw-r--r--deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h3
-rw-r--r--deps/v8/src/compiler/OWNERS6
-rw-r--r--deps/v8/src/compiler/access-builder.cc14
-rw-r--r--deps/v8/src/compiler/access-builder.h6
-rw-r--r--deps/v8/src/compiler/access-info.cc260
-rw-r--r--deps/v8/src/compiler/access-info.h32
-rw-r--r--deps/v8/src/compiler/add-type-assertions-reducer.cc4
-rw-r--r--deps/v8/src/compiler/backend/arm/code-generator-arm.cc27
-rw-r--r--deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc8
-rw-r--r--deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc27
-rw-r--r--deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc14
-rw-r--r--deps/v8/src/compiler/backend/code-generator.cc8
-rw-r--r--deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc215
-rw-r--r--deps/v8/src/compiler/backend/ia32/instruction-codes-ia32.h6
-rw-r--r--deps/v8/src/compiler/backend/ia32/instruction-scheduler-ia32.cc6
-rw-r--r--deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc85
-rw-r--r--deps/v8/src/compiler/backend/instruction-scheduler.h6
-rw-r--r--deps/v8/src/compiler/backend/instruction-selector-impl.h10
-rw-r--r--deps/v8/src/compiler/backend/instruction-selector.cc30
-rw-r--r--deps/v8/src/compiler/backend/instruction-selector.h3
-rw-r--r--deps/v8/src/compiler/backend/instruction.cc7
-rw-r--r--deps/v8/src/compiler/backend/instruction.h20
-rw-r--r--deps/v8/src/compiler/backend/mid-tier-register-allocator.cc44
-rw-r--r--deps/v8/src/compiler/backend/mips/code-generator-mips.cc85
-rw-r--r--deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc4
-rw-r--r--deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc15
-rw-r--r--deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc61
-rw-r--r--deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc4
-rw-r--r--deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc19
-rw-r--r--deps/v8/src/compiler/backend/ppc/OWNERS5
-rw-r--r--deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc207
-rw-r--r--deps/v8/src/compiler/backend/ppc/instruction-codes-ppc.h6
-rw-r--r--deps/v8/src/compiler/backend/ppc/instruction-scheduler-ppc.cc6
-rw-r--r--deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc8
-rw-r--r--deps/v8/src/compiler/backend/register-allocation.h1
-rw-r--r--deps/v8/src/compiler/backend/register-allocator-verifier.cc22
-rw-r--r--deps/v8/src/compiler/backend/register-allocator-verifier.h2
-rw-r--r--deps/v8/src/compiler/backend/register-allocator.cc48
-rw-r--r--deps/v8/src/compiler/backend/register-allocator.h3
-rw-r--r--deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc112
-rw-r--r--deps/v8/src/compiler/backend/riscv64/instruction-codes-riscv64.h1
-rw-r--r--deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc5
-rw-r--r--deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc22
-rw-r--r--deps/v8/src/compiler/backend/s390/code-generator-s390.cc165
-rw-r--r--deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc11
-rw-r--r--deps/v8/src/compiler/backend/x64/code-generator-x64.cc230
-rw-r--r--deps/v8/src/compiler/backend/x64/instruction-codes-x64.h1
-rw-r--r--deps/v8/src/compiler/backend/x64/instruction-scheduler-x64.cc1
-rw-r--r--deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc91
-rw-r--r--deps/v8/src/compiler/bytecode-graph-builder.cc136
-rw-r--r--deps/v8/src/compiler/code-assembler.cc41
-rw-r--r--deps/v8/src/compiler/code-assembler.h19
-rw-r--r--deps/v8/src/compiler/common-operator-reducer.cc10
-rw-r--r--deps/v8/src/compiler/common-operator.h17
-rw-r--r--deps/v8/src/compiler/compilation-dependencies.cc22
-rw-r--r--deps/v8/src/compiler/compilation-dependencies.h4
-rw-r--r--deps/v8/src/compiler/constant-folding-reducer.cc3
-rw-r--r--deps/v8/src/compiler/dead-code-elimination.cc8
-rw-r--r--deps/v8/src/compiler/dead-code-elimination.h5
-rw-r--r--deps/v8/src/compiler/decompression-optimizer.cc7
-rw-r--r--deps/v8/src/compiler/effect-control-linearizer.cc127
-rw-r--r--deps/v8/src/compiler/effect-control-linearizer.h15
-rw-r--r--deps/v8/src/compiler/globals.h21
-rw-r--r--deps/v8/src/compiler/graph-assembler.cc66
-rw-r--r--deps/v8/src/compiler/graph-assembler.h24
-rw-r--r--deps/v8/src/compiler/graph-reducer.cc4
-rw-r--r--deps/v8/src/compiler/graph-visualizer.cc7
-rw-r--r--deps/v8/src/compiler/graph-visualizer.h3
-rw-r--r--deps/v8/src/compiler/graph.h2
-rw-r--r--deps/v8/src/compiler/heap-refs.cc4594
-rw-r--r--deps/v8/src/compiler/heap-refs.h297
-rw-r--r--deps/v8/src/compiler/int64-lowering.cc33
-rw-r--r--deps/v8/src/compiler/js-call-reducer.cc318
-rw-r--r--deps/v8/src/compiler/js-context-specialization.cc25
-rw-r--r--deps/v8/src/compiler/js-create-lowering.cc120
-rw-r--r--deps/v8/src/compiler/js-create-lowering.h11
-rw-r--r--deps/v8/src/compiler/js-generic-lowering.cc7
-rw-r--r--deps/v8/src/compiler/js-graph.cc3
-rw-r--r--deps/v8/src/compiler/js-graph.h7
-rw-r--r--deps/v8/src/compiler/js-heap-broker.cc4620
-rw-r--r--deps/v8/src/compiler/js-heap-broker.h173
-rw-r--r--deps/v8/src/compiler/js-heap-copy-reducer.cc43
-rw-r--r--deps/v8/src/compiler/js-inlining-heuristic.cc4
-rw-r--r--deps/v8/src/compiler/js-inlining.cc7
-rw-r--r--deps/v8/src/compiler/js-intrinsic-lowering.cc20
-rw-r--r--deps/v8/src/compiler/js-intrinsic-lowering.h1
-rw-r--r--deps/v8/src/compiler/js-native-context-specialization.cc132
-rw-r--r--deps/v8/src/compiler/js-operator.cc10
-rw-r--r--deps/v8/src/compiler/js-operator.h84
-rw-r--r--deps/v8/src/compiler/js-typed-lowering.cc28
-rw-r--r--deps/v8/src/compiler/load-elimination.cc3
-rw-r--r--deps/v8/src/compiler/loop-analysis.cc25
-rw-r--r--deps/v8/src/compiler/machine-graph-verifier.cc1
-rw-r--r--deps/v8/src/compiler/machine-operator.cc10
-rw-r--r--deps/v8/src/compiler/machine-operator.h55
-rw-r--r--deps/v8/src/compiler/map-inference.cc8
-rw-r--r--deps/v8/src/compiler/memory-lowering.cc95
-rw-r--r--deps/v8/src/compiler/memory-lowering.h1
-rw-r--r--deps/v8/src/compiler/memory-optimizer.cc39
-rw-r--r--deps/v8/src/compiler/memory-optimizer.h2
-rw-r--r--deps/v8/src/compiler/node-matchers.h9
-rw-r--r--deps/v8/src/compiler/node-observer.h2
-rw-r--r--deps/v8/src/compiler/node-properties.h10
-rw-r--r--deps/v8/src/compiler/opcodes.h14
-rw-r--r--deps/v8/src/compiler/operation-typer.cc11
-rw-r--r--deps/v8/src/compiler/operator.h2
-rw-r--r--deps/v8/src/compiler/pipeline.cc204
-rw-r--r--deps/v8/src/compiler/processed-feedback.h8
-rw-r--r--deps/v8/src/compiler/property-access-builder.cc27
-rw-r--r--deps/v8/src/compiler/raw-machine-assembler.cc7
-rw-r--r--deps/v8/src/compiler/raw-machine-assembler.h47
-rw-r--r--deps/v8/src/compiler/refs-map.cc4
-rw-r--r--deps/v8/src/compiler/refs-map.h1
-rw-r--r--deps/v8/src/compiler/representation-change.cc33
-rw-r--r--deps/v8/src/compiler/representation-change.h11
-rw-r--r--deps/v8/src/compiler/scheduled-machine-lowering.cc68
-rw-r--r--deps/v8/src/compiler/scheduled-machine-lowering.h51
-rw-r--r--deps/v8/src/compiler/scheduler.cc156
-rw-r--r--deps/v8/src/compiler/scheduler.h7
-rw-r--r--deps/v8/src/compiler/select-lowering.cc10
-rw-r--r--deps/v8/src/compiler/serializer-for-background-compilation.cc216
-rw-r--r--deps/v8/src/compiler/simd-scalar-lowering.cc2829
-rw-r--r--deps/v8/src/compiler/simd-scalar-lowering.h150
-rw-r--r--deps/v8/src/compiler/simplified-lowering.cc207
-rw-r--r--deps/v8/src/compiler/simplified-operator-reducer.cc7
-rw-r--r--deps/v8/src/compiler/simplified-operator.cc38
-rw-r--r--deps/v8/src/compiler/simplified-operator.h44
-rw-r--r--deps/v8/src/compiler/store-store-elimination.cc4
-rw-r--r--deps/v8/src/compiler/type-cache.h18
-rw-r--r--deps/v8/src/compiler/type-narrowing-reducer.cc8
-rw-r--r--deps/v8/src/compiler/type-narrowing-reducer.h1
-rw-r--r--deps/v8/src/compiler/typed-optimization.cc2
-rw-r--r--deps/v8/src/compiler/typer.cc6
-rw-r--r--deps/v8/src/compiler/types.cc13
-rw-r--r--deps/v8/src/compiler/types.h6
-rw-r--r--deps/v8/src/compiler/verifier.cc27
-rw-r--r--deps/v8/src/compiler/wasm-compiler.cc404
-rw-r--r--deps/v8/src/compiler/wasm-compiler.h5
-rw-r--r--deps/v8/src/d8/async-hooks-wrapper.cc6
-rw-r--r--deps/v8/src/d8/d8-console.cc5
-rw-r--r--deps/v8/src/d8/d8-posix.cc132
-rw-r--r--deps/v8/src/d8/d8-test.cc200
-rw-r--r--deps/v8/src/d8/d8.cc217
-rw-r--r--deps/v8/src/d8/d8.h12
-rw-r--r--deps/v8/src/debug/arm/debug-arm.cc57
-rw-r--r--deps/v8/src/debug/arm64/debug-arm64.cc58
-rw-r--r--deps/v8/src/debug/debug-coverage.cc3
-rw-r--r--deps/v8/src/debug/debug-evaluate.cc29
-rw-r--r--deps/v8/src/debug/debug-evaluate.h4
-rw-r--r--deps/v8/src/debug/debug-frames.cc17
-rw-r--r--deps/v8/src/debug/debug-frames.h3
-rw-r--r--deps/v8/src/debug/debug-interface.cc67
-rw-r--r--deps/v8/src/debug/debug-interface.h31
-rw-r--r--deps/v8/src/debug/debug-scopes.cc8
-rw-r--r--deps/v8/src/debug/debug-stack-trace-iterator.cc8
-rw-r--r--deps/v8/src/debug/debug-stack-trace-iterator.h1
-rw-r--r--deps/v8/src/debug/debug-wasm-objects.cc117
-rw-r--r--deps/v8/src/debug/debug-wasm-objects.h11
-rw-r--r--deps/v8/src/debug/debug.cc65
-rw-r--r--deps/v8/src/debug/debug.h32
-rw-r--r--deps/v8/src/debug/ia32/debug-ia32.cc54
-rw-r--r--deps/v8/src/debug/liveedit.cc289
-rw-r--r--deps/v8/src/debug/liveedit.h7
-rw-r--r--deps/v8/src/debug/mips/debug-mips.cc55
-rw-r--r--deps/v8/src/debug/mips64/debug-mips64.cc55
-rw-r--r--deps/v8/src/debug/ppc/OWNERS5
-rw-r--r--deps/v8/src/debug/ppc/debug-ppc.cc53
-rw-r--r--deps/v8/src/debug/riscv64/debug-riscv64.cc55
-rw-r--r--deps/v8/src/debug/s390/debug-s390.cc55
-rw-r--r--deps/v8/src/debug/x64/debug-x64.cc55
-rw-r--r--deps/v8/src/deoptimizer/deoptimizer-cfi-builtins.cc8
-rw-r--r--deps/v8/src/deoptimizer/deoptimizer.cc17
-rw-r--r--deps/v8/src/deoptimizer/riscv64/deoptimizer-riscv64.cc6
-rw-r--r--deps/v8/src/deoptimizer/translated-state.cc4
-rw-r--r--deps/v8/src/diagnostics/compilation-statistics.cc5
-rw-r--r--deps/v8/src/diagnostics/disassembler.cc13
-rw-r--r--deps/v8/src/diagnostics/eh-frame.cc6
-rw-r--r--deps/v8/src/diagnostics/eh-frame.h8
-rw-r--r--deps/v8/src/diagnostics/ia32/disasm-ia32.cc5
-rw-r--r--deps/v8/src/diagnostics/objects-debug.cc31
-rw-r--r--deps/v8/src/diagnostics/objects-printer.cc341
-rw-r--r--deps/v8/src/diagnostics/perf-jit.cc1
-rw-r--r--deps/v8/src/diagnostics/ppc/disasm-ppc.cc36
-rw-r--r--deps/v8/src/diagnostics/riscv64/disasm-riscv64.cc25
-rw-r--r--deps/v8/src/diagnostics/system-jit-metadata-win.h3
-rw-r--r--deps/v8/src/diagnostics/system-jit-win.cc4
-rw-r--r--deps/v8/src/diagnostics/unwinding-info-win64.cc78
-rw-r--r--deps/v8/src/execution/arguments.h45
-rw-r--r--deps/v8/src/execution/arm/simulator-arm.cc696
-rw-r--r--deps/v8/src/execution/arm/simulator-arm.h9
-rw-r--r--deps/v8/src/execution/arm64/simulator-arm64.cc2
-rw-r--r--deps/v8/src/execution/execution.cc16
-rw-r--r--deps/v8/src/execution/external-pointer-table.h9
-rw-r--r--deps/v8/src/execution/frame-constants.h18
-rw-r--r--deps/v8/src/execution/frames.cc41
-rw-r--r--deps/v8/src/execution/frames.h7
-rw-r--r--deps/v8/src/execution/isolate-data.h32
-rw-r--r--deps/v8/src/execution/isolate-utils-inl.h19
-rw-r--r--deps/v8/src/execution/isolate.cc289
-rw-r--r--deps/v8/src/execution/isolate.h136
-rw-r--r--deps/v8/src/execution/local-isolate-inl.h2
-rw-r--r--deps/v8/src/execution/local-isolate.h5
-rw-r--r--deps/v8/src/execution/messages.cc45
-rw-r--r--deps/v8/src/execution/messages.h7
-rw-r--r--deps/v8/src/execution/microtask-queue.cc10
-rw-r--r--deps/v8/src/execution/mips/simulator-mips.cc2
-rw-r--r--deps/v8/src/execution/mips64/simulator-mips64.cc2
-rw-r--r--deps/v8/src/execution/ppc/simulator-ppc.cc52
-rw-r--r--deps/v8/src/execution/ppc/simulator-ppc.h12
-rw-r--r--deps/v8/src/execution/protectors.h2
-rw-r--r--deps/v8/src/execution/riscv64/simulator-riscv64.cc39
-rw-r--r--deps/v8/src/execution/riscv64/simulator-riscv64.h1
-rw-r--r--deps/v8/src/execution/runtime-profiler.cc15
-rw-r--r--deps/v8/src/execution/s390/simulator-s390.cc96
-rw-r--r--deps/v8/src/execution/shared-mutex-guard-if-off-thread.h2
-rw-r--r--deps/v8/src/execution/stack-guard.cc1
-rw-r--r--deps/v8/src/extensions/cputracemark-extension.cc5
-rw-r--r--deps/v8/src/extensions/externalize-string-extension.cc21
-rw-r--r--deps/v8/src/extensions/vtunedomain-support-extension.cc7
-rw-r--r--deps/v8/src/flags/flag-definitions.h144
-rw-r--r--deps/v8/src/flags/flags.cc2
-rw-r--r--deps/v8/src/handles/global-handles.cc23
-rw-r--r--deps/v8/src/handles/handles-inl.h2
-rw-r--r--deps/v8/src/handles/local-handles-inl.h2
-rw-r--r--deps/v8/src/heap/array-buffer-sweeper.cc55
-rw-r--r--deps/v8/src/heap/array-buffer-sweeper.h9
-rw-r--r--deps/v8/src/heap/base/asm/riscv64/push_registers_asm.cc34
-rw-r--r--deps/v8/src/heap/base/asm/x64/push_registers_asm.cc16
-rw-r--r--deps/v8/src/heap/base/asm/x64/push_registers_masm.S18
-rw-r--r--deps/v8/src/heap/base/stack.cc17
-rw-r--r--deps/v8/src/heap/base/stack.h14
-rw-r--r--deps/v8/src/heap/basic-memory-chunk.h7
-rw-r--r--deps/v8/src/heap/code-range.cc172
-rw-r--r--deps/v8/src/heap/code-range.h147
-rw-r--r--deps/v8/src/heap/collection-barrier.cc3
-rw-r--r--deps/v8/src/heap/combined-heap.h3
-rw-r--r--deps/v8/src/heap/concurrent-allocator-inl.h1
-rw-r--r--deps/v8/src/heap/concurrent-marking.cc31
-rw-r--r--deps/v8/src/heap/cppgc-js/cpp-heap.cc115
-rw-r--r--deps/v8/src/heap/cppgc-js/cpp-heap.h9
-rw-r--r--deps/v8/src/heap/cppgc-js/cpp-snapshot.cc10
-rw-r--r--deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.cc11
-rw-r--r--deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.h2
-rw-r--r--deps/v8/src/heap/cppgc/caged-heap.cc23
-rw-r--r--deps/v8/src/heap/cppgc/compactor.cc21
-rw-r--r--deps/v8/src/heap/cppgc/concurrent-marker.cc2
-rw-r--r--deps/v8/src/heap/cppgc/explicit-management.cc67
-rw-r--r--deps/v8/src/heap/cppgc/free-list.cc12
-rw-r--r--deps/v8/src/heap/cppgc/gc-info-table.cc5
-rw-r--r--deps/v8/src/heap/cppgc/heap-base.cc32
-rw-r--r--deps/v8/src/heap/cppgc/heap-base.h30
-rw-r--r--deps/v8/src/heap/cppgc/heap-object-header.cc8
-rw-r--r--deps/v8/src/heap/cppgc/heap-object-header.h43
-rw-r--r--deps/v8/src/heap/cppgc/heap-page.cc5
-rw-r--r--deps/v8/src/heap/cppgc/heap-page.h22
-rw-r--r--deps/v8/src/heap/cppgc/heap-statistics-collector.cc2
-rw-r--r--deps/v8/src/heap/cppgc/heap.cc4
-rw-r--r--deps/v8/src/heap/cppgc/liveness-broker.cc2
-rw-r--r--deps/v8/src/heap/cppgc/marker.cc42
-rw-r--r--deps/v8/src/heap/cppgc/marking-state.h41
-rw-r--r--deps/v8/src/heap/cppgc/marking-verifier.cc61
-rw-r--r--deps/v8/src/heap/cppgc/marking-verifier.h14
-rw-r--r--deps/v8/src/heap/cppgc/marking-visitor.cc2
-rw-r--r--deps/v8/src/heap/cppgc/memory.cc22
-rw-r--r--deps/v8/src/heap/cppgc/memory.h76
-rw-r--r--deps/v8/src/heap/cppgc/metric-recorder.h2
-rw-r--r--deps/v8/src/heap/cppgc/object-allocator.cc2
-rw-r--r--deps/v8/src/heap/cppgc/object-allocator.h10
-rw-r--r--deps/v8/src/heap/cppgc/object-poisoner.h4
-rw-r--r--deps/v8/src/heap/cppgc/object-size-trait.cc7
-rw-r--r--deps/v8/src/heap/cppgc/object-view.h54
-rw-r--r--deps/v8/src/heap/cppgc/page-memory.cc2
-rw-r--r--deps/v8/src/heap/cppgc/pointer-policies.cc59
-rw-r--r--deps/v8/src/heap/cppgc/process-heap-statistics.h2
-rw-r--r--deps/v8/src/heap/cppgc/process-heap.cc56
-rw-r--r--deps/v8/src/heap/cppgc/process-heap.h35
-rw-r--r--deps/v8/src/heap/cppgc/sanitizers.h82
-rw-r--r--deps/v8/src/heap/cppgc/stats-collector.h4
-rw-r--r--deps/v8/src/heap/cppgc/sweeper.cc81
-rw-r--r--deps/v8/src/heap/cppgc/sweeper.h4
-rw-r--r--deps/v8/src/heap/cppgc/trace-trait.cc7
-rw-r--r--deps/v8/src/heap/cppgc/visitor.cc21
-rw-r--r--deps/v8/src/heap/embedder-tracing.cc34
-rw-r--r--deps/v8/src/heap/embedder-tracing.h42
-rw-r--r--deps/v8/src/heap/factory-base-inl.h26
-rw-r--r--deps/v8/src/heap/factory-base.cc121
-rw-r--r--deps/v8/src/heap/factory-base.h9
-rw-r--r--deps/v8/src/heap/factory.cc245
-rw-r--r--deps/v8/src/heap/factory.h19
-rw-r--r--deps/v8/src/heap/finalization-registry-cleanup-task.cc15
-rw-r--r--deps/v8/src/heap/free-list.cc21
-rw-r--r--deps/v8/src/heap/gc-tracer.cc32
-rw-r--r--deps/v8/src/heap/gc-tracer.h6
-rw-r--r--deps/v8/src/heap/heap-inl.h89
-rw-r--r--deps/v8/src/heap/heap-write-barrier.cc11
-rw-r--r--deps/v8/src/heap/heap.cc550
-rw-r--r--deps/v8/src/heap/heap.h127
-rw-r--r--deps/v8/src/heap/incremental-marking.cc43
-rw-r--r--deps/v8/src/heap/large-spaces.cc6
-rw-r--r--deps/v8/src/heap/large-spaces.h1
-rw-r--r--deps/v8/src/heap/local-allocator.h2
-rw-r--r--deps/v8/src/heap/local-heap-inl.h2
-rw-r--r--deps/v8/src/heap/local-heap.cc2
-rw-r--r--deps/v8/src/heap/mark-compact-inl.h8
-rw-r--r--deps/v8/src/heap/mark-compact.cc161
-rw-r--r--deps/v8/src/heap/mark-compact.h7
-rw-r--r--deps/v8/src/heap/marking-barrier-inl.h10
-rw-r--r--deps/v8/src/heap/marking-visitor-inl.h6
-rw-r--r--deps/v8/src/heap/marking-visitor.h9
-rw-r--r--deps/v8/src/heap/memory-allocator.cc112
-rw-r--r--deps/v8/src/heap/memory-allocator.h68
-rw-r--r--deps/v8/src/heap/memory-chunk.cc3
-rw-r--r--deps/v8/src/heap/memory-measurement.cc2
-rw-r--r--deps/v8/src/heap/new-spaces-inl.h8
-rw-r--r--deps/v8/src/heap/new-spaces.cc9
-rw-r--r--deps/v8/src/heap/object-stats.cc2
-rw-r--r--deps/v8/src/heap/objects-visiting-inl.h7
-rw-r--r--deps/v8/src/heap/objects-visiting.h7
-rw-r--r--deps/v8/src/heap/paged-spaces-inl.h3
-rw-r--r--deps/v8/src/heap/paged-spaces.cc6
-rw-r--r--deps/v8/src/heap/read-only-heap.cc4
-rw-r--r--deps/v8/src/heap/read-only-heap.h5
-rw-r--r--deps/v8/src/heap/read-only-spaces.cc40
-rw-r--r--deps/v8/src/heap/read-only-spaces.h3
-rw-r--r--deps/v8/src/heap/scavenger-inl.h20
-rw-r--r--deps/v8/src/heap/scavenger.cc18
-rw-r--r--deps/v8/src/heap/setup-heap-internal.cc32
-rw-r--r--deps/v8/src/heap/spaces-inl.h3
-rw-r--r--deps/v8/src/heap/spaces.cc2
-rw-r--r--deps/v8/src/heap/spaces.h3
-rw-r--r--deps/v8/src/heap/sweeper.cc6
-rw-r--r--deps/v8/src/heap/third-party/heap-api-stub.cc6
-rw-r--r--deps/v8/src/heap/third-party/heap-api.h6
-rw-r--r--deps/v8/src/ic/accessor-assembler.cc265
-rw-r--r--deps/v8/src/ic/accessor-assembler.h6
-rw-r--r--deps/v8/src/ic/call-optimization.cc40
-rw-r--r--deps/v8/src/ic/call-optimization.h29
-rw-r--r--deps/v8/src/ic/ic.cc97
-rw-r--r--deps/v8/src/ic/ic.h5
-rw-r--r--deps/v8/src/ic/keyed-store-generic.cc6
-rw-r--r--deps/v8/src/init/bootstrapper.cc195
-rw-r--r--deps/v8/src/init/heap-symbols.h451
-rw-r--r--deps/v8/src/init/isolate-allocator.cc238
-rw-r--r--deps/v8/src/init/isolate-allocator.h39
-rw-r--r--deps/v8/src/init/v8.cc23
-rw-r--r--deps/v8/src/inspector/injected-script.cc3
-rw-r--r--deps/v8/src/inspector/injected-script.h3
-rw-r--r--deps/v8/src/inspector/string-16.h4
-rw-r--r--deps/v8/src/inspector/v8-console-message.cc2
-rw-r--r--deps/v8/src/inspector/v8-console.cc94
-rw-r--r--deps/v8/src/inspector/v8-debugger-agent-impl.cc18
-rw-r--r--deps/v8/src/inspector/v8-debugger.cc2
-rw-r--r--deps/v8/src/inspector/v8-heap-profiler-agent-impl.cc15
-rw-r--r--deps/v8/src/inspector/v8-heap-profiler-agent-impl.h9
-rw-r--r--deps/v8/src/inspector/v8-inspector-session-impl.cc14
-rw-r--r--deps/v8/src/inspector/v8-inspector-session-impl.h3
-rw-r--r--deps/v8/src/inspector/v8-profiler-agent-impl.cc9
-rw-r--r--deps/v8/src/inspector/v8-runtime-agent-impl.cc19
-rw-r--r--deps/v8/src/inspector/v8-runtime-agent-impl.h3
-rw-r--r--deps/v8/src/inspector/v8-stack-trace-impl.cc17
-rw-r--r--deps/v8/src/inspector/v8-stack-trace-impl.h5
-rw-r--r--deps/v8/src/inspector/v8-string-conversions.cc7
-rw-r--r--deps/v8/src/inspector/value-mirror.cc69
-rw-r--r--deps/v8/src/interpreter/bytecode-array-builder.cc57
-rw-r--r--deps/v8/src/interpreter/bytecode-array-builder.h8
-rw-r--r--deps/v8/src/interpreter/bytecode-array-iterator.cc8
-rw-r--r--deps/v8/src/interpreter/bytecode-array-iterator.h8
-rw-r--r--deps/v8/src/interpreter/bytecode-array-writer.cc8
-rw-r--r--deps/v8/src/interpreter/bytecode-array-writer.h10
-rw-r--r--deps/v8/src/interpreter/bytecode-generator.cc45
-rw-r--r--deps/v8/src/interpreter/bytecode-generator.h16
-rw-r--r--deps/v8/src/interpreter/bytecode-operands.h2
-rw-r--r--deps/v8/src/interpreter/bytecodes.h75
-rw-r--r--deps/v8/src/interpreter/constant-array-builder.cc17
-rw-r--r--deps/v8/src/interpreter/constant-array-builder.h16
-rw-r--r--deps/v8/src/interpreter/handler-table-builder.cc4
-rw-r--r--deps/v8/src/interpreter/handler-table-builder.h4
-rw-r--r--deps/v8/src/interpreter/interpreter-assembler.cc26
-rw-r--r--deps/v8/src/interpreter/interpreter-assembler.h3
-rw-r--r--deps/v8/src/interpreter/interpreter-generator.cc27
-rw-r--r--deps/v8/src/interpreter/interpreter-intrinsics-generator.cc6
-rw-r--r--deps/v8/src/interpreter/interpreter-intrinsics.h1
-rw-r--r--deps/v8/src/interpreter/interpreter.cc36
-rw-r--r--deps/v8/src/json/json-parser.cc16
-rw-r--r--deps/v8/src/libplatform/tracing/recorder-default.cc25
-rw-r--r--deps/v8/src/libplatform/tracing/recorder-mac.cc43
-rw-r--r--deps/v8/src/libplatform/tracing/recorder.h23
-rw-r--r--deps/v8/src/libplatform/tracing/trace-writer.cc5
-rw-r--r--deps/v8/src/libplatform/tracing/trace-writer.h2
-rw-r--r--deps/v8/src/logging/code-events.h6
-rw-r--r--deps/v8/src/logging/counters-definitions.h5
-rw-r--r--deps/v8/src/logging/counters-inl.h64
-rw-r--r--deps/v8/src/logging/counters.cc370
-rw-r--r--deps/v8/src/logging/counters.h687
-rw-r--r--deps/v8/src/logging/log.cc10
-rw-r--r--deps/v8/src/logging/log.h3
-rw-r--r--deps/v8/src/logging/runtime-call-stats.cc370
-rw-r--r--deps/v8/src/logging/runtime-call-stats.h763
-rw-r--r--deps/v8/src/numbers/conversions.cc48
-rw-r--r--deps/v8/src/numbers/conversions.h4
-rw-r--r--deps/v8/src/numbers/dtoa.h11
-rw-r--r--deps/v8/src/objects/all-objects-inl.h1
-rw-r--r--deps/v8/src/objects/allocation-site-inl.h12
-rw-r--r--deps/v8/src/objects/allocation-site.h10
-rw-r--r--deps/v8/src/objects/api-callbacks.h2
-rw-r--r--deps/v8/src/objects/arguments.tq2
-rw-r--r--deps/v8/src/objects/backing-store.cc282
-rw-r--r--deps/v8/src/objects/backing-store.h49
-rw-r--r--deps/v8/src/objects/bigint.cc131
-rw-r--r--deps/v8/src/objects/bigint.h16
-rw-r--r--deps/v8/src/objects/code-inl.h6
-rw-r--r--deps/v8/src/objects/code-kind.cc2
-rw-r--r--deps/v8/src/objects/code-kind.h39
-rw-r--r--deps/v8/src/objects/code.cc124
-rw-r--r--deps/v8/src/objects/code.h3
-rw-r--r--deps/v8/src/objects/compilation-cache-table.cc34
-rw-r--r--deps/v8/src/objects/compilation-cache-table.h7
-rw-r--r--deps/v8/src/objects/compressed-slots-inl.h21
-rw-r--r--deps/v8/src/objects/compressed-slots.h4
-rw-r--r--deps/v8/src/objects/contexts-inl.h87
-rw-r--r--deps/v8/src/objects/contexts.cc7
-rw-r--r--deps/v8/src/objects/contexts.h59
-rw-r--r--deps/v8/src/objects/contexts.tq27
-rw-r--r--deps/v8/src/objects/debug-objects-inl.h6
-rw-r--r--deps/v8/src/objects/debug-objects.cc35
-rw-r--r--deps/v8/src/objects/debug-objects.h8
-rw-r--r--deps/v8/src/objects/debug-objects.tq6
-rw-r--r--deps/v8/src/objects/descriptor-array.h4
-rw-r--r--deps/v8/src/objects/dictionary.h12
-rw-r--r--deps/v8/src/objects/elements-kind.cc12
-rw-r--r--deps/v8/src/objects/elements-kind.h58
-rw-r--r--deps/v8/src/objects/elements.cc870
-rw-r--r--deps/v8/src/objects/elements.h43
-rw-r--r--deps/v8/src/objects/embedder-data-slot-inl.h30
-rw-r--r--deps/v8/src/objects/embedder-data-slot.h5
-rw-r--r--deps/v8/src/objects/feedback-vector-inl.h14
-rw-r--r--deps/v8/src/objects/feedback-vector.cc73
-rw-r--r--deps/v8/src/objects/feedback-vector.h26
-rw-r--r--deps/v8/src/objects/feedback-vector.tq2
-rw-r--r--deps/v8/src/objects/fixed-array-inl.h25
-rw-r--r--deps/v8/src/objects/fixed-array.h28
-rw-r--r--deps/v8/src/objects/fixed-array.tq4
-rw-r--r--deps/v8/src/objects/foreign-inl.h3
-rw-r--r--deps/v8/src/objects/free-space-inl.h8
-rw-r--r--deps/v8/src/objects/free-space.h3
-rw-r--r--deps/v8/src/objects/function-kind.h8
-rw-r--r--deps/v8/src/objects/hash-table-inl.h5
-rw-r--r--deps/v8/src/objects/hash-table.h16
-rw-r--r--deps/v8/src/objects/heap-object.h16
-rw-r--r--deps/v8/src/objects/instance-type-inl.h4
-rw-r--r--deps/v8/src/objects/instance-type.h7
-rw-r--r--deps/v8/src/objects/internal-index.h3
-rw-r--r--deps/v8/src/objects/intl-objects.cc85
-rw-r--r--deps/v8/src/objects/intl-objects.h2
-rw-r--r--deps/v8/src/objects/js-array-buffer-inl.h51
-rw-r--r--deps/v8/src/objects/js-array-buffer.cc51
-rw-r--r--deps/v8/src/objects/js-array-buffer.h37
-rw-r--r--deps/v8/src/objects/js-array-buffer.tq32
-rw-r--r--deps/v8/src/objects/js-array.h4
-rw-r--r--deps/v8/src/objects/js-function-inl.h21
-rw-r--r--deps/v8/src/objects/js-function.cc65
-rw-r--r--deps/v8/src/objects/js-function.h12
-rw-r--r--deps/v8/src/objects/js-locale.cc344
-rw-r--r--deps/v8/src/objects/js-locale.h15
-rw-r--r--deps/v8/src/objects/js-objects-inl.h29
-rw-r--r--deps/v8/src/objects/js-objects.cc60
-rw-r--r--deps/v8/src/objects/js-objects.h22
-rw-r--r--deps/v8/src/objects/js-objects.tq7
-rw-r--r--deps/v8/src/objects/js-regexp.cc21
-rw-r--r--deps/v8/src/objects/js-regexp.h3
-rw-r--r--deps/v8/src/objects/literal-objects.cc62
-rw-r--r--deps/v8/src/objects/literal-objects.h12
-rw-r--r--deps/v8/src/objects/lookup-inl.h5
-rw-r--r--deps/v8/src/objects/lookup.cc35
-rw-r--r--deps/v8/src/objects/map-inl.h140
-rw-r--r--deps/v8/src/objects/map-updater.cc280
-rw-r--r--deps/v8/src/objects/map-updater.h26
-rw-r--r--deps/v8/src/objects/map.cc317
-rw-r--r--deps/v8/src/objects/map.h61
-rw-r--r--deps/v8/src/objects/map.tq3
-rw-r--r--deps/v8/src/objects/megadom-handler-inl.h26
-rw-r--r--deps/v8/src/objects/megadom-handler.h32
-rw-r--r--deps/v8/src/objects/megadom-handler.tq11
-rw-r--r--deps/v8/src/objects/object-list-macros.h4
-rw-r--r--deps/v8/src/objects/object-macros-undef.h6
-rw-r--r--deps/v8/src/objects/object-macros.h27
-rw-r--r--deps/v8/src/objects/objects-body-descriptors-inl.h62
-rw-r--r--deps/v8/src/objects/objects-definitions.h6
-rw-r--r--deps/v8/src/objects/objects-inl.h81
-rw-r--r--deps/v8/src/objects/objects.cc274
-rw-r--r--deps/v8/src/objects/objects.h26
-rw-r--r--deps/v8/src/objects/ordered-hash-table.cc44
-rw-r--r--deps/v8/src/objects/ordered-hash-table.h50
-rw-r--r--deps/v8/src/objects/property-array-inl.h7
-rw-r--r--deps/v8/src/objects/property-array.h6
-rw-r--r--deps/v8/src/objects/scope-info.cc17
-rw-r--r--deps/v8/src/objects/scope-info.h13
-rw-r--r--deps/v8/src/objects/script-inl.h46
-rw-r--r--deps/v8/src/objects/script.h36
-rw-r--r--deps/v8/src/objects/script.tq8
-rw-r--r--deps/v8/src/objects/shared-function-info-inl.h32
-rw-r--r--deps/v8/src/objects/shared-function-info.cc10
-rw-r--r--deps/v8/src/objects/shared-function-info.h34
-rw-r--r--deps/v8/src/objects/shared-function-info.tq1
-rw-r--r--deps/v8/src/objects/slots-inl.h21
-rw-r--r--deps/v8/src/objects/slots.h4
-rw-r--r--deps/v8/src/objects/smi.h10
-rw-r--r--deps/v8/src/objects/source-text-module.cc6
-rw-r--r--deps/v8/src/objects/source-text-module.h13
-rw-r--r--deps/v8/src/objects/source-text-module.tq2
-rw-r--r--deps/v8/src/objects/string-inl.h17
-rw-r--r--deps/v8/src/objects/string-table.cc25
-rw-r--r--deps/v8/src/objects/string-table.h4
-rw-r--r--deps/v8/src/objects/string.cc14
-rw-r--r--deps/v8/src/objects/string.h13
-rw-r--r--deps/v8/src/objects/struct-inl.h7
-rw-r--r--deps/v8/src/objects/struct.h1
-rw-r--r--deps/v8/src/objects/swiss-name-dictionary-inl.h43
-rw-r--r--deps/v8/src/objects/swiss-name-dictionary.cc5
-rw-r--r--deps/v8/src/objects/swiss-name-dictionary.h26
-rw-r--r--deps/v8/src/objects/tagged-field-inl.h62
-rw-r--r--deps/v8/src/objects/tagged-field.h11
-rw-r--r--deps/v8/src/objects/tagged-impl.h3
-rw-r--r--deps/v8/src/objects/tagged-index.h4
-rw-r--r--deps/v8/src/objects/templates-inl.h33
-rw-r--r--deps/v8/src/objects/templates.h51
-rw-r--r--deps/v8/src/objects/templates.tq8
-rw-r--r--deps/v8/src/objects/torque-defined-classes.h1
-rw-r--r--deps/v8/src/objects/transitions.cc10
-rw-r--r--deps/v8/src/objects/transitions.h8
-rw-r--r--deps/v8/src/objects/value-serializer.cc48
-rw-r--r--deps/v8/src/objects/visitors.h5
-rw-r--r--deps/v8/src/parsing/literal-buffer.cc4
-rw-r--r--deps/v8/src/parsing/literal-buffer.h4
-rw-r--r--deps/v8/src/parsing/parse-info.cc4
-rw-r--r--deps/v8/src/parsing/parse-info.h4
-rw-r--r--deps/v8/src/parsing/parser-base.h49
-rw-r--r--deps/v8/src/parsing/parser.cc62
-rw-r--r--deps/v8/src/parsing/parser.h13
-rw-r--r--deps/v8/src/parsing/pending-compilation-error-handler.cc12
-rw-r--r--deps/v8/src/parsing/pending-compilation-error-handler.h12
-rw-r--r--deps/v8/src/parsing/preparser.cc7
-rw-r--r--deps/v8/src/parsing/rewriter.cc7
-rw-r--r--deps/v8/src/parsing/scanner-character-streams.cc6
-rw-r--r--deps/v8/src/parsing/scanner.cc8
-rw-r--r--deps/v8/src/parsing/scanner.h8
-rw-r--r--deps/v8/src/profiler/cpu-profiler.cc21
-rw-r--r--deps/v8/src/profiler/cpu-profiler.h20
-rw-r--r--deps/v8/src/profiler/heap-profiler.cc5
-rw-r--r--deps/v8/src/profiler/heap-profiler.h3
-rw-r--r--deps/v8/src/profiler/heap-snapshot-generator.cc148
-rw-r--r--deps/v8/src/profiler/heap-snapshot-generator.h31
-rw-r--r--deps/v8/src/profiler/profile-generator.cc33
-rw-r--r--deps/v8/src/profiler/profile-generator.h33
-rw-r--r--deps/v8/src/profiler/profiler-listener.cc7
-rw-r--r--deps/v8/src/profiler/profiler-listener.h1
-rw-r--r--deps/v8/src/profiler/sampling-heap-profiler.cc2
-rw-r--r--deps/v8/src/profiler/tick-sample.cc20
-rw-r--r--deps/v8/src/profiler/tick-sample.h1
-rw-r--r--deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc14
-rw-r--r--deps/v8/src/regexp/ppc/OWNERS5
-rw-r--r--deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc98
-rw-r--r--deps/v8/src/regexp/regexp-ast.cc4
-rw-r--r--deps/v8/src/regexp/regexp-ast.h3
-rw-r--r--deps/v8/src/regexp/regexp-bytecodes.h4
-rw-r--r--deps/v8/src/regexp/regexp-compiler.cc34
-rw-r--r--deps/v8/src/regexp/regexp-dotprinter.cc3
-rw-r--r--deps/v8/src/regexp/regexp-macro-assembler.cc7
-rw-r--r--deps/v8/src/regexp/regexp-nodes.h5
-rw-r--r--deps/v8/src/regexp/x64/regexp-macro-assembler-x64.cc15
-rw-r--r--deps/v8/src/roots/roots.cc4
-rw-r--r--deps/v8/src/roots/roots.h9
-rw-r--r--deps/v8/src/runtime/runtime-array.cc15
-rw-r--r--deps/v8/src/runtime/runtime-classes.cc7
-rw-r--r--deps/v8/src/runtime/runtime-compiler.cc64
-rw-r--r--deps/v8/src/runtime/runtime-debug.cc364
-rw-r--r--deps/v8/src/runtime/runtime-internal.cc28
-rw-r--r--deps/v8/src/runtime/runtime-literals.cc3
-rw-r--r--deps/v8/src/runtime/runtime-object.cc117
-rw-r--r--deps/v8/src/runtime/runtime-promise.cc17
-rw-r--r--deps/v8/src/runtime/runtime-regexp.cc10
-rw-r--r--deps/v8/src/runtime/runtime-scopes.cc4
-rw-r--r--deps/v8/src/runtime/runtime-strings.cc2
-rw-r--r--deps/v8/src/runtime/runtime-test-wasm.cc9
-rw-r--r--deps/v8/src/runtime/runtime-test.cc69
-rw-r--r--deps/v8/src/runtime/runtime-typedarray.cc24
-rw-r--r--deps/v8/src/runtime/runtime.cc3
-rw-r--r--deps/v8/src/runtime/runtime.h260
-rw-r--r--deps/v8/src/sanitizer/asan.h28
-rw-r--r--deps/v8/src/sanitizer/msan.h36
-rw-r--r--deps/v8/src/sanitizer/tsan.h47
-rw-r--r--deps/v8/src/snapshot/code-serializer.cc3
-rw-r--r--deps/v8/src/snapshot/context-deserializer.cc4
-rw-r--r--deps/v8/src/snapshot/deserializer.cc3
-rw-r--r--deps/v8/src/snapshot/embedded/embedded-data.cc21
-rw-r--r--deps/v8/src/snapshot/embedded/embedded-data.h8
-rw-r--r--deps/v8/src/snapshot/mksnapshot.cc4
-rw-r--r--deps/v8/src/snapshot/object-deserializer.cc4
-rw-r--r--deps/v8/src/snapshot/read-only-serializer.cc17
-rw-r--r--deps/v8/src/snapshot/read-only-serializer.h2
-rw-r--r--deps/v8/src/snapshot/serializer-deserializer.h9
-rw-r--r--deps/v8/src/snapshot/serializer.cc2
-rw-r--r--deps/v8/src/snapshot/serializer.h4
-rw-r--r--deps/v8/src/snapshot/snapshot-utils.cc2
-rw-r--r--deps/v8/src/snapshot/snapshot.cc26
-rw-r--r--deps/v8/src/snapshot/snapshot.h9
-rw-r--r--deps/v8/src/strings/unicode.cc4461
-rw-r--r--deps/v8/src/third_party/vtune/BUILD.gn9
-rw-r--r--deps/v8/src/torque/class-debug-reader-generator.cc5
-rw-r--r--deps/v8/src/torque/constants.h18
-rw-r--r--deps/v8/src/torque/global-context.h2
-rw-r--r--deps/v8/src/torque/implementation-visitor.cc248
-rw-r--r--deps/v8/src/torque/torque-parser.cc19
-rw-r--r--deps/v8/src/torque/torque.cc5
-rw-r--r--deps/v8/src/tracing/trace-event.cc4
-rw-r--r--deps/v8/src/tracing/trace-event.h9
-rw-r--r--deps/v8/src/trap-handler/DEPS19
-rw-r--r--deps/v8/src/trap-handler/handler-inside-posix.h1
-rw-r--r--deps/v8/src/trap-handler/handler-inside-win.h4
-rw-r--r--deps/v8/src/trap-handler/handler-inside.cc7
-rw-r--r--deps/v8/src/trap-handler/handler-outside-posix.cc6
-rw-r--r--deps/v8/src/trap-handler/handler-outside-win.cc2
-rw-r--r--deps/v8/src/trap-handler/handler-outside.cc35
-rw-r--r--deps/v8/src/trap-handler/handler-shared.cc2
-rw-r--r--deps/v8/src/trap-handler/trap-handler-internal.h2
-rw-r--r--deps/v8/src/trap-handler/trap-handler.h72
-rw-r--r--deps/v8/src/utils/allocation.cc138
-rw-r--r--deps/v8/src/utils/allocation.h105
-rw-r--r--deps/v8/src/utils/ostreams.cc2
-rw-r--r--deps/v8/src/utils/ostreams.h10
-rw-r--r--deps/v8/src/utils/v8dll-main.cc2
-rw-r--r--deps/v8/src/utils/vector.h2
-rw-r--r--deps/v8/src/wasm/OWNERS1
-rw-r--r--deps/v8/src/wasm/baseline/arm/liftoff-assembler-arm.h11
-rw-r--r--deps/v8/src/wasm/baseline/arm64/liftoff-assembler-arm64.h44
-rw-r--r--deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h161
-rw-r--r--deps/v8/src/wasm/baseline/liftoff-assembler.cc32
-rw-r--r--deps/v8/src/wasm/baseline/liftoff-assembler.h11
-rw-r--r--deps/v8/src/wasm/baseline/liftoff-compiler.cc490
-rw-r--r--deps/v8/src/wasm/baseline/liftoff-register.h21
-rw-r--r--deps/v8/src/wasm/baseline/mips/liftoff-assembler-mips.h15
-rw-r--r--deps/v8/src/wasm/baseline/mips64/liftoff-assembler-mips64.h15
-rw-r--r--deps/v8/src/wasm/baseline/ppc/OWNERS5
-rw-r--r--deps/v8/src/wasm/baseline/ppc/liftoff-assembler-ppc.h168
-rw-r--r--deps/v8/src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h306
-rw-r--r--deps/v8/src/wasm/baseline/s390/liftoff-assembler-s390.h358
-rw-r--r--deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h153
-rw-r--r--deps/v8/src/wasm/branch-hint-map.h46
-rw-r--r--deps/v8/src/wasm/c-api.cc46
-rw-r--r--deps/v8/src/wasm/compilation-environment.h12
-rw-r--r--deps/v8/src/wasm/function-body-decoder-impl.h748
-rw-r--r--deps/v8/src/wasm/function-compiler.cc17
-rw-r--r--deps/v8/src/wasm/function-compiler.h9
-rw-r--r--deps/v8/src/wasm/graph-builder-interface.cc177
-rw-r--r--deps/v8/src/wasm/graph-builder-interface.h3
-rw-r--r--deps/v8/src/wasm/memory-protection-key.cc189
-rw-r--r--deps/v8/src/wasm/memory-protection-key.h90
-rw-r--r--deps/v8/src/wasm/memory-tracing.cc2
-rw-r--r--deps/v8/src/wasm/module-compiler.cc65
-rw-r--r--deps/v8/src/wasm/module-decoder.cc360
-rw-r--r--deps/v8/src/wasm/module-decoder.h10
-rw-r--r--deps/v8/src/wasm/module-instantiate.cc48
-rw-r--r--deps/v8/src/wasm/value-type.h39
-rw-r--r--deps/v8/src/wasm/wasm-code-manager.cc439
-rw-r--r--deps/v8/src/wasm/wasm-code-manager.h119
-rw-r--r--deps/v8/src/wasm/wasm-constants.h7
-rw-r--r--deps/v8/src/wasm/wasm-debug.cc10
-rw-r--r--deps/v8/src/wasm/wasm-engine.cc78
-rw-r--r--deps/v8/src/wasm/wasm-engine.h12
-rw-r--r--deps/v8/src/wasm/wasm-feature-flags.h14
-rw-r--r--deps/v8/src/wasm/wasm-init-expr.cc57
-rw-r--r--deps/v8/src/wasm/wasm-init-expr.h150
-rw-r--r--deps/v8/src/wasm/wasm-js.cc35
-rw-r--r--deps/v8/src/wasm/wasm-limits.h5
-rw-r--r--deps/v8/src/wasm/wasm-module-builder.cc12
-rw-r--r--deps/v8/src/wasm/wasm-module-builder.h2
-rw-r--r--deps/v8/src/wasm/wasm-module.cc14
-rw-r--r--deps/v8/src/wasm/wasm-module.h32
-rw-r--r--deps/v8/src/wasm/wasm-objects-inl.h38
-rw-r--r--deps/v8/src/wasm/wasm-objects.cc130
-rw-r--r--deps/v8/src/wasm/wasm-objects.h43
-rw-r--r--deps/v8/src/wasm/wasm-objects.tq22
-rw-r--r--deps/v8/src/wasm/wasm-opcodes-inl.h8
-rw-r--r--deps/v8/src/wasm/wasm-opcodes.cc3
-rw-r--r--deps/v8/src/wasm/wasm-opcodes.h185
-rw-r--r--deps/v8/src/wasm/wasm-serialization.cc6
-rw-r--r--deps/v8/src/wasm/wasm-subtyping.cc71
-rw-r--r--deps/v8/src/wasm/wasm-subtyping.h14
-rw-r--r--deps/v8/src/wasm/wasm-value.h2
-rw-r--r--deps/v8/src/web-snapshot/web-snapshot.cc189
-rw-r--r--deps/v8/src/web-snapshot/web-snapshot.h15
-rw-r--r--deps/v8/src/zone/zone-segment.cc2
-rw-r--r--deps/v8/src/zone/zone.cc2
-rw-r--r--deps/v8/test/benchmarks/cpp/BUILD.gn5
-rw-r--r--deps/v8/test/benchmarks/cpp/DEPS1
-rw-r--r--deps/v8/test/benchmarks/cpp/cppgc/DEPS1
-rw-r--r--deps/v8/test/benchmarks/cpp/cppgc/allocation_perf.cc3
-rw-r--r--deps/v8/test/benchmarks/cpp/cppgc/trace_perf.cc5
-rw-r--r--deps/v8/test/benchmarks/cpp/empty.cc6
-rw-r--r--deps/v8/test/cctest/BUILD.gn4
-rw-r--r--deps/v8/test/cctest/cctest.cc6
-rw-r--r--deps/v8/test/cctest/cctest.h8
-rw-r--r--deps/v8/test/cctest/cctest.status498
-rw-r--r--deps/v8/test/cctest/compiler/serializer-tester.cc6
-rw-r--r--deps/v8/test/cctest/compiler/test-code-assembler.cc2
-rw-r--r--deps/v8/test/cctest/compiler/test-concurrent-shared-function-info.cc2
-rw-r--r--deps/v8/test/cctest/compiler/test-js-context-specialization.cc50
-rw-r--r--deps/v8/test/cctest/compiler/test-representation-change.cc15
-rw-r--r--deps/v8/test/cctest/compiler/test-run-machops.cc126
-rw-r--r--deps/v8/test/cctest/compiler/test-verify-type.cc70
-rw-r--r--deps/v8/test/cctest/heap/heap-utils.cc3
-rw-r--r--deps/v8/test/cctest/heap/test-array-buffer-tracker.cc15
-rw-r--r--deps/v8/test/cctest/heap/test-concurrent-allocation.cc3
-rw-r--r--deps/v8/test/cctest/heap/test-concurrent-marking.cc8
-rw-r--r--deps/v8/test/cctest/heap/test-embedder-tracing.cc9
-rw-r--r--deps/v8/test/cctest/heap/test-external-string-tracker.cc1
-rw-r--r--deps/v8/test/cctest/heap/test-heap.cc178
-rw-r--r--deps/v8/test/cctest/heap/test-invalidated-slots.cc4
-rw-r--r--deps/v8/test/cctest/heap/test-iterators.cc2
-rw-r--r--deps/v8/test/cctest/heap/test-mark-compact.cc1
-rw-r--r--deps/v8/test/cctest/heap/test-memory-measurement.cc2
-rw-r--r--deps/v8/test/cctest/heap/test-shared-heap.cc91
-rw-r--r--deps/v8/test/cctest/heap/test-spaces.cc26
-rw-r--r--deps/v8/test/cctest/heap/test-weak-references.cc9
-rw-r--r--deps/v8/test/cctest/heap/test-write-barrier.cc7
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden8
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden4
-rw-r--r--deps/v8/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden32
-rw-r--r--deps/v8/test/cctest/test-allocation.cc2
-rw-r--r--deps/v8/test/cctest/test-api-accessors.cc210
-rw-r--r--deps/v8/test/cctest/test-api-icu.cc2
-rw-r--r--deps/v8/test/cctest/test-api-interceptors.cc16
-rw-r--r--deps/v8/test/cctest/test-api-stack-traces.cc26
-rw-r--r--deps/v8/test/cctest/test-api.cc319
-rw-r--r--deps/v8/test/cctest/test-assembler-arm.cc2
-rw-r--r--deps/v8/test/cctest/test-assembler-ia32.cc29
-rw-r--r--deps/v8/test/cctest/test-assembler-mips.cc6
-rw-r--r--deps/v8/test/cctest/test-assembler-mips64.cc6
-rw-r--r--deps/v8/test/cctest/test-assembler-riscv64.cc24
-rw-r--r--deps/v8/test/cctest/test-assembler-x64.cc29
-rw-r--r--deps/v8/test/cctest/test-code-pages.cc21
-rw-r--r--deps/v8/test/cctest/test-code-stub-assembler.cc10
-rw-r--r--deps/v8/test/cctest/test-compiler.cc116
-rw-r--r--deps/v8/test/cctest/test-concurrent-prototype.cc4
-rw-r--r--deps/v8/test/cctest/test-concurrent-string.cc2
-rw-r--r--deps/v8/test/cctest/test-cpu-profiler.cc155
-rw-r--r--deps/v8/test/cctest/test-debug-helper.cc16
-rw-r--r--deps/v8/test/cctest/test-debug.cc56
-rw-r--r--deps/v8/test/cctest/test-disasm-riscv64.cc1
-rw-r--r--deps/v8/test/cctest/test-disasm-x64.cc8
-rw-r--r--deps/v8/test/cctest/test-double.cc15
-rw-r--r--deps/v8/test/cctest/test-factory.cc2
-rw-r--r--deps/v8/test/cctest/test-feedback-vector.cc43
-rw-r--r--deps/v8/test/cctest/test-field-type-tracking.cc24
-rw-r--r--deps/v8/test/cctest/test-global-handles.cc4
-rw-r--r--deps/v8/test/cctest/test-heap-profiler.cc31
-rw-r--r--deps/v8/test/cctest/test-inobject-slack-tracking.cc5
-rw-r--r--deps/v8/test/cctest/test-js-to-wasm.cc30
-rw-r--r--deps/v8/test/cctest/test-js-weak-refs.cc9
-rw-r--r--deps/v8/test/cctest/test-log-stack-tracer.cc2
-rw-r--r--deps/v8/test/cctest/test-macro-assembler-mips.cc3
-rw-r--r--deps/v8/test/cctest/test-macro-assembler-mips64.cc3
-rw-r--r--deps/v8/test/cctest/test-macro-assembler-riscv64.cc17
-rw-r--r--deps/v8/test/cctest/test-macro-assembler-x64.cc30
-rw-r--r--deps/v8/test/cctest/test-mementos.cc6
-rw-r--r--deps/v8/test/cctest/test-parsing.cc10
-rw-r--r--deps/v8/test/cctest/test-poison-disasm-arm64.cc8
-rw-r--r--deps/v8/test/cctest/test-ptr-compr-cage.cc175
-rw-r--r--deps/v8/test/cctest/test-serialize.cc1
-rw-r--r--deps/v8/test/cctest/test-simple-riscv64.cc2
-rw-r--r--deps/v8/test/cctest/test-strings.cc2
-rw-r--r--deps/v8/test/cctest/test-weakmaps.cc7
-rw-r--r--deps/v8/test/cctest/test-weaksets.cc8
-rw-r--r--deps/v8/test/cctest/test-web-snapshots.cc369
-rw-r--r--deps/v8/test/cctest/wasm/test-c-wasm-entry.cc1
-rw-r--r--deps/v8/test/cctest/wasm/test-gc.cc220
-rw-r--r--deps/v8/test/cctest/wasm/test-jump-table-assembler.cc10
-rw-r--r--deps/v8/test/cctest/wasm/test-liftoff-inspection.cc25
-rw-r--r--deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc3
-rw-r--r--deps/v8/test/cctest/wasm/test-run-wasm-exceptions.cc70
-rw-r--r--deps/v8/test/cctest/wasm/test-run-wasm-relaxed-simd.cc42
-rw-r--r--deps/v8/test/cctest/wasm/test-run-wasm-simd-liftoff.cc16
-rw-r--r--deps/v8/test/cctest/wasm/test-run-wasm-simd-scalar-lowering.cc332
-rw-r--r--deps/v8/test/cctest/wasm/test-run-wasm-simd.cc776
-rw-r--r--deps/v8/test/cctest/wasm/test-run-wasm.cc77
-rw-r--r--deps/v8/test/cctest/wasm/test-wasm-breakpoints.cc1
-rw-r--r--deps/v8/test/cctest/wasm/test-wasm-serialization.cc1
-rw-r--r--deps/v8/test/cctest/wasm/test-wasm-shared-engine.cc93
-rw-r--r--deps/v8/test/cctest/wasm/wasm-run-utils.cc24
-rw-r--r--deps/v8/test/cctest/wasm/wasm-run-utils.h50
-rw-r--r--deps/v8/test/cctest/wasm/wasm-simd-utils.cc132
-rw-r--r--deps/v8/test/cctest/wasm/wasm-simd-utils.h82
-rw-r--r--deps/v8/test/common/wasm/wasm-interpreter.cc5
-rw-r--r--deps/v8/test/common/wasm/wasm-macro-gen.h5
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-repl-mode-optimized.js33
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-repl-mode.js150
-rw-r--r--deps/v8/test/debugger/debug/debug-liveedit-check-stack.js7
-rw-r--r--deps/v8/test/debugger/debug/debug-liveedit-double-call.js137
-rw-r--r--deps/v8/test/debugger/debug/debug-liveedit-exceptions.js63
-rw-r--r--deps/v8/test/debugger/debug/debug-liveedit-recursion.js8
-rw-r--r--deps/v8/test/debugger/debug/debug-liveedit-replace-code.js31
-rw-r--r--deps/v8/test/debugger/debug/debug-liveedit-restart-frame.js154
-rw-r--r--deps/v8/test/debugger/debug/debug-liveedit-stepin.js73
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-1.js2
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-2.js2
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-3.js4
-rw-r--r--deps/v8/test/debugger/debug/es6/generators-debug-liveedit.js131
-rw-r--r--deps/v8/test/debugger/debug/es8/debug-async-liveedit.js146
-rw-r--r--deps/v8/test/debugger/debug/wasm/breakpoints.js12
-rw-r--r--deps/v8/test/debugger/debug/wasm/debug-step-into-wasm.js2
-rw-r--r--deps/v8/test/debugger/debug/wasm/frame-inspection.js4
-rw-r--r--deps/v8/test/debugger/debug/wasm/stepping-from-js.js14
-rw-r--r--deps/v8/test/debugger/debugger.status15
-rw-r--r--deps/v8/test/debugger/regress/regress-crbug-1156498.js20
-rw-r--r--deps/v8/test/debugger/test-api.js7
-rw-r--r--deps/v8/test/fuzzer/fuzzer.status9
-rw-r--r--deps/v8/test/fuzzer/inspector-fuzzer.cc8
-rw-r--r--deps/v8/test/fuzzer/multi-return.cc2
-rw-r--r--deps/v8/test/inspector/debugger/access-obsolete-frame-expected.txt9
-rw-r--r--deps/v8/test/inspector/debugger/access-obsolete-frame.js69
-rw-r--r--deps/v8/test/inspector/debugger/command-line-api-with-arrow-function-expected.txt23
-rw-r--r--deps/v8/test/inspector/debugger/command-line-api-with-arrow-function.js67
-rw-r--r--deps/v8/test/inspector/debugger/get-properties-paused-expected.txt17
-rw-r--r--deps/v8/test/inspector/debugger/get-properties-paused.js2
-rw-r--r--deps/v8/test/inspector/debugger/restart-frame-expected.txt16
-rw-r--r--deps/v8/test/inspector/debugger/restart-frame.js19
-rw-r--r--deps/v8/test/inspector/debugger/set-script-source-2-expected.txt73
-rw-r--r--deps/v8/test/inspector/debugger/set-script-source-2.js99
-rw-r--r--deps/v8/test/inspector/debugger/set-script-source-stack-padding-expected.txt15
-rw-r--r--deps/v8/test/inspector/debugger/set-script-source-stack-padding.js54
-rw-r--r--deps/v8/test/inspector/debugger/set-variable-value-expected.txt74
-rw-r--r--deps/v8/test/inspector/debugger/wasm-breakpoint-reset-on-debugger-restart.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-conditional-breakpoints.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-debug-command.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-evaluate-on-call-frame-expected.txt44
-rw-r--r--deps/v8/test/inspector/debugger/wasm-gc-breakpoints-expected.txt4
-rw-r--r--deps/v8/test/inspector/debugger/wasm-gc-breakpoints.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-gc-in-debug-break-expected.txt4
-rw-r--r--deps/v8/test/inspector/debugger/wasm-gc-in-debug-break.js4
-rw-r--r--deps/v8/test/inspector/debugger/wasm-get-breakable-locations-byte-offsets.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-imports.js3
-rw-r--r--deps/v8/test/inspector/debugger/wasm-inspect-many-registers.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-instrumentation-breakpoint.js8
-rw-r--r--deps/v8/test/inspector/debugger/wasm-remove-breakpoint.js4
-rw-r--r--deps/v8/test/inspector/debugger/wasm-scope-info-expected.txt48
-rw-r--r--deps/v8/test/inspector/debugger/wasm-scope-info.js5
-rw-r--r--deps/v8/test/inspector/debugger/wasm-set-breakpoint-breaks-on-first-breakable-location.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-set-breakpoint-expected.txt74
-rw-r--r--deps/v8/test/inspector/debugger/wasm-set-breakpoint.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-side-effect-free-debug-evaluate-expected.txt33
-rw-r--r--deps/v8/test/inspector/debugger/wasm-side-effect-free-debug-evaluate.js72
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stack-check.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stack-expected.txt4
-rw-r--r--deps/v8/test/inspector/debugger/wasm-step-a-lot.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-step-after-trap-expected.txt4
-rw-r--r--deps/v8/test/inspector/debugger/wasm-step-after-trap.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-step-from-non-breakable-position.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stepping-in-from-js.js4
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stepping-no-opcode-merging.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stepping-out-from-js.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stepping-to-js.js4
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stepping-with-skiplist.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stepping-with-source-map-expected.txt58
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stepping-with-source-map.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-stepping.js1
-rw-r--r--deps/v8/test/inspector/debugger/wasm-unnamed-function-names-expected.txt4
-rw-r--r--deps/v8/test/inspector/inspector-test.cc12
-rw-r--r--deps/v8/test/inspector/inspector.status336
-rw-r--r--deps/v8/test/inspector/isolate-data.cc10
-rw-r--r--deps/v8/test/inspector/regress/regress-crbug-1195927-expected.txt32
-rw-r--r--deps/v8/test/inspector/regress/regress-crbug-1195927.js54
-rw-r--r--deps/v8/test/inspector/regress/regress-crbug-1197392-expected.txt10
-rw-r--r--deps/v8/test/inspector/regress/regress-crbug-1197392.js16
-rw-r--r--deps/v8/test/inspector/regress/regress-crbug-1207867-expected.txt41
-rw-r--r--deps/v8/test/inspector/regress/regress-crbug-1207867.js59
-rw-r--r--deps/v8/test/inspector/runtime/add-binding-expected.txt44
-rw-r--r--deps/v8/test/inspector/runtime/add-binding.js42
-rw-r--r--deps/v8/test/inspector/runtime/clear-of-command-line-api.js2
-rw-r--r--deps/v8/test/inspector/runtime/command-line-api-expected.txt24
-rw-r--r--deps/v8/test/inspector/runtime/get-properties-expected.txt55
-rw-r--r--deps/v8/test/inspector/runtime/get-properties.js6
-rw-r--r--deps/v8/test/inspector/runtime/internal-properties-expected.txt201
-rw-r--r--deps/v8/test/inspector/runtime/remote-object-expected.txt24
-rw-r--r--deps/v8/test/inspector/runtime/remote-object-get-properties-expected.txt44
-rw-r--r--deps/v8/test/inspector/runtime/remote-object.js8
-rw-r--r--deps/v8/test/inspector/sessions/runtime-remote-object-expected.txt70
-rw-r--r--deps/v8/test/inspector/task-runner.cc4
-rw-r--r--deps/v8/test/inspector/wasm-inspector-test.js7
-rw-r--r--deps/v8/test/intl/general/getCanonicalLocales.js2
-rw-r--r--deps/v8/test/intl/locale/locale-info-check-property.js23
-rw-r--r--deps/v8/test/intl/locale/locale-info-check-return-types.js46
-rw-r--r--deps/v8/test/intl/locale/locale-info-ext.js26
-rw-r--r--deps/v8/test/intl/locale/locale.js2
-rw-r--r--deps/v8/test/memory/Memory.json3
-rw-r--r--deps/v8/test/message/fail/wasm-async-compile-fail.out4
-rw-r--r--deps/v8/test/message/fail/wasm-async-instantiate-fail.out4
-rw-r--r--deps/v8/test/message/fail/wasm-module-name.js2
-rw-r--r--deps/v8/test/message/fail/wasm-no-name.out2
-rw-r--r--deps/v8/test/message/fail/wasm-streaming-compile-fail.out4
-rw-r--r--deps/v8/test/message/fail/wasm-streaming-instantiate-fail.out4
-rw-r--r--deps/v8/test/message/fail/wasm-sync-compile-fail.out4
-rw-r--r--deps/v8/test/message/message.status18
-rw-r--r--deps/v8/test/message/testcfg.py15
-rw-r--r--deps/v8/test/message/wasm-module-name-async.js2
-rw-r--r--deps/v8/test/message/wasm-no-name-async.out2
-rw-r--r--deps/v8/test/message/wasm-no-name-streaming.out2
-rw-r--r--deps/v8/test/message/wasm-trace-memory-liftoff.js1
-rw-r--r--deps/v8/test/message/wasm-trace-memory-liftoff.out28
-rw-r--r--deps/v8/test/message/wasm-trace-memory.js1
-rw-r--r--deps/v8/test/message/wasm-trace-memory.out28
-rw-r--r--deps/v8/test/mjsunit/BUILD.gn8
-rw-r--r--deps/v8/test/mjsunit/baseline/test-osr.js51
-rw-r--r--deps/v8/test/mjsunit/compiler/bigint-asuintn.js37
-rw-r--r--deps/v8/test/mjsunit/compiler/concurrent-invalidate-transition-map.js2
-rw-r--r--deps/v8/test/mjsunit/compiler/concurrent-proto-change.js2
-rw-r--r--deps/v8/test/mjsunit/compiler/deopt-pretenure.js72
-rw-r--r--deps/v8/test/mjsunit/compiler/fast-api-calls.js58
-rw-r--r--deps/v8/test/mjsunit/compiler/fast-api-interface-types.js61
-rw-r--r--deps/v8/test/mjsunit/compiler/load-elimination-const-field.js4
-rw-r--r--deps/v8/test/mjsunit/compiler/opt-higher-order-functions.js45
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-1195650.js31
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-1196185.js46
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-1196683.js2
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-1202312.js24
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-1202625.js21
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-1202924.js18
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-1203116.js30
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-crbug-11564.js32
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-crbug-1201011.js11
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-crbug-1201057.js9
-rw-r--r--deps/v8/test/mjsunit/compiler/regress-crbug-1201082.js11
-rw-r--r--deps/v8/test/mjsunit/compiler/test-literal-map-migration.js30
-rw-r--r--deps/v8/test/mjsunit/concurrent-initial-prototype-change-1.js4
-rw-r--r--deps/v8/test/mjsunit/const-dict-tracking.js1
-rw-r--r--deps/v8/test/mjsunit/harmony/class-static-blocks.js23
-rw-r--r--deps/v8/test/mjsunit/harmony/error-cause.js221
-rw-r--r--deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-12.mjs26
-rw-r--r--deps/v8/test/mjsunit/harmony/to-string.js13
-rw-r--r--deps/v8/test/mjsunit/harmony/weakrefs/finalizationregistry-independent-lifetime.js2
-rw-r--r--deps/v8/test/mjsunit/ic-megadom-2.js52
-rw-r--r--deps/v8/test/mjsunit/ic-megadom.js48
-rw-r--r--deps/v8/test/mjsunit/mjsunit.js2
-rw-r--r--deps/v8/test/mjsunit/mjsunit.status214
-rw-r--r--deps/v8/test/mjsunit/regress-10782.js10
-rw-r--r--deps/v8/test/mjsunit/regress/regress-1189077.js56
-rw-r--r--deps/v8/test/mjsunit/regress/regress-1201114.js19
-rw-r--r--deps/v8/test/mjsunit/regress/regress-1204748.js24
-rw-r--r--deps/v8/test/mjsunit/regress/regress-1205290.js24
-rw-r--r--deps/v8/test/mjsunit/regress/regress-1207679.js24
-rw-r--r--deps/v8/test/mjsunit/regress/regress-1208782.js6
-rw-r--r--deps/v8/test/mjsunit/regress/regress-1212583.js25
-rw-r--r--deps/v8/test/mjsunit/regress/regress-crbug-1163499.js15
-rw-r--r--deps/v8/test/mjsunit/regress/regress-crbug-1209152.js13
-rw-r--r--deps/v8/test/mjsunit/regress/regress-v8-11290.js5
-rw-r--r--deps/v8/test/mjsunit/regress/regress-v8-11616.js8
-rw-r--r--deps/v8/test/mjsunit/regress/regress-v8-11851.js22
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1046472.js4
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-10702.js2
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-11809.js64
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1187831.js2
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1196837.js39
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1199662.js38
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1200231.js19
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1202736.js34
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1217064.js32
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1227351.js13
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-1228720.js13
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-739768.js2
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-803788.js2
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-817380.js3
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-834619.js2
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-crbug-1203692.js12
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-v8-9106.js2
-rw-r--r--deps/v8/test/mjsunit/resizablearraybuffer-growablesharedarraybuffer.js430
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor-test-func-info.log.symbols.json7
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor-test-large.default85
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor-test-large.js58
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor-test-large.log2759
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor-test-large.log.symbols.json1
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor-test.log.symbols.json7
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor-test.separate-baseline-handlers61
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor-test.separate-bytecodes61
-rw-r--r--deps/v8/test/mjsunit/tools/tickprocessor.mjs178
-rw-r--r--deps/v8/test/mjsunit/typedarray-growablesharedarraybuffer.js354
-rw-r--r--deps/v8/test/mjsunit/typedarray-resizablearraybuffer-detach.js138
-rw-r--r--deps/v8/test/mjsunit/typedarray-resizablearraybuffer.js605
-rw-r--r--deps/v8/test/mjsunit/wasm/async-compile.js2
-rw-r--r--deps/v8/test/mjsunit/wasm/bulk-memory.js20
-rw-r--r--deps/v8/test/mjsunit/wasm/call-ref.js17
-rw-r--r--deps/v8/test/mjsunit/wasm/compilation-hints-async-compilation.js2
-rw-r--r--deps/v8/test/mjsunit/wasm/compilation-hints-sync-compilation.js2
-rw-r--r--deps/v8/test/mjsunit/wasm/compiled-module-serialization.js4
-rw-r--r--deps/v8/test/mjsunit/wasm/data-segments.js2
-rw-r--r--deps/v8/test/mjsunit/wasm/element-segments-with-reftypes.js99
-rw-r--r--deps/v8/test/mjsunit/wasm/exceptions.js21
-rw-r--r--deps/v8/test/mjsunit/wasm/export-mutable-global.js28
-rw-r--r--deps/v8/test/mjsunit/wasm/externref-globals.js17
-rw-r--r--deps/v8/test/mjsunit/wasm/externref-table.js8
-rw-r--r--deps/v8/test/mjsunit/wasm/globals.js25
-rw-r--r--deps/v8/test/mjsunit/wasm/import-table.js39
-rw-r--r--deps/v8/test/mjsunit/wasm/indirect-call-non-zero-table.js15
-rw-r--r--deps/v8/test/mjsunit/wasm/indirect-calls.js6
-rw-r--r--deps/v8/test/mjsunit/wasm/indirect-tables.js41
-rw-r--r--deps/v8/test/mjsunit/wasm/loop-unrolling.js23
-rw-r--r--deps/v8/test/mjsunit/wasm/memory64.js11
-rw-r--r--deps/v8/test/mjsunit/wasm/multi-table-element-section.js12
-rw-r--r--deps/v8/test/mjsunit/wasm/reference-globals.js6
-rw-r--r--deps/v8/test/mjsunit/wasm/reference-tables.js3
-rw-r--r--deps/v8/test/mjsunit/wasm/return-calls.js2
-rw-r--r--deps/v8/test/mjsunit/wasm/simd-globals.js5
-rw-r--r--deps/v8/test/mjsunit/wasm/stack.js33
-rw-r--r--deps/v8/test/mjsunit/wasm/table-access.js6
-rw-r--r--deps/v8/test/mjsunit/wasm/table-copy-externref.js2
-rw-r--r--deps/v8/test/mjsunit/wasm/table-copy.js2
-rw-r--r--deps/v8/test/mjsunit/wasm/table-get.js30
-rw-r--r--deps/v8/test/mjsunit/wasm/table-grow.js11
-rw-r--r--deps/v8/test/mjsunit/wasm/unreachable-validation.js4
-rw-r--r--deps/v8/test/mjsunit/wasm/wasm-module-builder.js381
-rw-r--r--deps/v8/test/test262/test262.status16
-rw-r--r--deps/v8/test/test262/testcfg.py3
-rw-r--r--deps/v8/test/unittests/BUILD.gn9
-rw-r--r--deps/v8/test/unittests/base/division-by-constant-unittest.cc2
-rw-r--r--deps/v8/test/unittests/base/platform/platform-unittest.cc2
-rw-r--r--deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc2
-rw-r--r--deps/v8/test/unittests/compiler/arm64/instruction-selector-arm64-unittest.cc23
-rw-r--r--deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc8
-rw-r--r--deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.h2
-rw-r--r--deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.cc4
-rw-r--r--deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.h4
-rw-r--r--deps/v8/test/unittests/compiler/dead-code-elimination-unittest.cc3
-rw-r--r--deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc60
-rw-r--r--deps/v8/test/unittests/compiler/ia32/instruction-selector-ia32-unittest.cc15
-rw-r--r--deps/v8/test/unittests/compiler/int64-lowering-unittest.cc335
-rw-r--r--deps/v8/test/unittests/compiler/js-call-reducer-unittest.cc2
-rw-r--r--deps/v8/test/unittests/compiler/js-native-context-specialization-unittest.cc3
-rw-r--r--deps/v8/test/unittests/compiler/machine-operator-unittest.cc4
-rw-r--r--deps/v8/test/unittests/compiler/node-test-utils.h2
-rw-r--r--deps/v8/test/unittests/compiler/ppc/OWNERS5
-rw-r--r--deps/v8/test/unittests/compiler/riscv64/instruction-selector-riscv64-unittest.cc16
-rw-r--r--deps/v8/test/unittests/compiler/x64/instruction-selector-x64-unittest.cc46
-rw-r--r--deps/v8/test/unittests/execution/microtask-queue-unittest.cc5
-rw-r--r--deps/v8/test/unittests/heap/cppgc/allocation-unittest.cc134
-rw-r--r--deps/v8/test/unittests/heap/cppgc/concurrent-sweeper-unittest.cc17
-rw-r--r--deps/v8/test/unittests/heap/cppgc/custom-spaces-unittest.cc12
-rw-r--r--deps/v8/test/unittests/heap/cppgc/ephemeron-pair-unittest.cc30
-rw-r--r--deps/v8/test/unittests/heap/cppgc/explicit-management-unittest.cc58
-rw-r--r--deps/v8/test/unittests/heap/cppgc/garbage-collected-unittest.cc96
-rw-r--r--deps/v8/test/unittests/heap/cppgc/gc-info-unittest.cc8
-rw-r--r--deps/v8/test/unittests/heap/cppgc/gc-invoker-unittest.cc8
-rw-r--r--deps/v8/test/unittests/heap/cppgc/heap-growing-unittest.cc27
-rw-r--r--deps/v8/test/unittests/heap/cppgc/heap-object-header-unittest.cc20
-rw-r--r--deps/v8/test/unittests/heap/cppgc/heap-page-unittest.cc10
-rw-r--r--deps/v8/test/unittests/heap/cppgc/heap-registry-unittest.cc88
-rw-r--r--deps/v8/test/unittests/heap/cppgc/heap-unittest.cc116
-rw-r--r--deps/v8/test/unittests/heap/cppgc/logging-unittest.cc10
-rw-r--r--deps/v8/test/unittests/heap/cppgc/marker-unittest.cc54
-rw-r--r--deps/v8/test/unittests/heap/cppgc/marking-verifier-unittest.cc83
-rw-r--r--deps/v8/test/unittests/heap/cppgc/marking-visitor-unittest.cc30
-rw-r--r--deps/v8/test/unittests/heap/cppgc/member-unittest.cc193
-rw-r--r--deps/v8/test/unittests/heap/cppgc/minor-gc-unittest.cc20
-rw-r--r--deps/v8/test/unittests/heap/cppgc/name-trait-unittest.cc8
-rw-r--r--deps/v8/test/unittests/heap/cppgc/persistent-family-unittest.cc124
-rw-r--r--deps/v8/test/unittests/heap/cppgc/sanitizer-unittest.cc59
-rw-r--r--deps/v8/test/unittests/heap/cppgc/stack-unittest.cc153
-rw-r--r--deps/v8/test/unittests/heap/cppgc/sweeper-unittest.cc59
-rw-r--r--deps/v8/test/unittests/heap/cppgc/tests.h10
-rw-r--r--deps/v8/test/unittests/heap/cppgc/visitor-unittest.cc38
-rw-r--r--deps/v8/test/unittests/heap/cppgc/weak-container-unittest.cc64
-rw-r--r--deps/v8/test/unittests/heap/cppgc/workloads-unittest.cc351
-rw-r--r--deps/v8/test/unittests/heap/cppgc/write-barrier-unittest.cc23
-rw-r--r--deps/v8/test/unittests/heap/heap-unittest.cc9
-rw-r--r--deps/v8/test/unittests/heap/unified-heap-snapshot-unittest.cc97
-rw-r--r--deps/v8/test/unittests/heap/unified-heap-unittest.cc144
-rw-r--r--deps/v8/test/unittests/heap/unified-heap-utils.cc7
-rw-r--r--deps/v8/test/unittests/heap/unified-heap-utils.h2
-rw-r--r--deps/v8/test/unittests/heap/unmapper-unittest.cc13
-rw-r--r--deps/v8/test/unittests/interpreter/bytecode-array-builder-unittest.cc26
-rw-r--r--deps/v8/test/unittests/interpreter/bytecode-array-iterator-unittest.cc5
-rw-r--r--deps/v8/test/unittests/logging/counters-unittest.cc616
-rw-r--r--deps/v8/test/unittests/logging/runtime-call-stats-unittest.cc643
-rw-r--r--deps/v8/test/unittests/regexp/regexp-unittest.cc39
-rw-r--r--deps/v8/test/unittests/regress/regress-crbug-1041240-unittest.cc4
-rw-r--r--deps/v8/test/unittests/regress/regress-crbug-938251-unittest.cc2
-rw-r--r--deps/v8/test/unittests/test-utils.cc2
-rw-r--r--deps/v8/test/unittests/test-utils.h2
-rw-r--r--deps/v8/test/unittests/unittests.status39
-rw-r--r--deps/v8/test/unittests/utils/allocation-unittest.cc4
-rw-r--r--deps/v8/test/unittests/wasm/function-body-decoder-unittest.cc202
-rw-r--r--deps/v8/test/unittests/wasm/module-decoder-unittest.cc59
-rw-r--r--deps/v8/test/unittests/wasm/subtyping-unittest.cc184
-rw-r--r--deps/v8/test/unittests/wasm/trap-handler-x64-unittest.cc6
-rw-r--r--deps/v8/test/wasm-api-tests/run-all-wasm-api-tests.cc9
-rw-r--r--deps/v8/test/wasm-api-tests/wasm-api-tests.status8
-rw-r--r--deps/v8/test/wasm-js/tests.tar.gz.sha12
-rw-r--r--deps/v8/test/wasm-spec-tests/tests.tar.gz.sha12
-rw-r--r--deps/v8/test/wasm-spec-tests/wasm-spec-tests.status22
-rw-r--r--deps/v8/third_party/google_benchmark/BUILD.gn75
-rw-r--r--deps/v8/third_party/google_benchmark/OWNERS3
-rw-r--r--deps/v8/third_party/google_benchmark/README.v821
-rw-r--r--deps/v8/third_party/googletest/BUILD.gn38
-rw-r--r--deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h6
-rw-r--r--deps/v8/third_party/inspector_protocol/BUILD.gn6
-rw-r--r--deps/v8/third_party/inspector_protocol/README.v82
-rw-r--r--deps/v8/third_party/inspector_protocol/crdtp/serializable.cc5
-rw-r--r--deps/v8/third_party/inspector_protocol/crdtp/status.cc2
-rw-r--r--deps/v8/third_party/inspector_protocol/crdtp/status.h1
-rw-r--r--deps/v8/third_party/inspector_protocol/lib/ValueConversions_cpp.template4
-rw-r--r--deps/v8/third_party/inspector_protocol/lib/base_string_adapter_cc.template5
-rw-r--r--deps/v8/third_party/inspector_protocol/pdl.py3
-rw-r--r--deps/v8/third_party/jsoncpp/BUILD.gn2
-rw-r--r--deps/v8/third_party/zlib/OWNERS1
-rw-r--r--deps/v8/third_party/zlib/google/OWNERS2
-rw-r--r--deps/v8/third_party/zlib/google/zip.cc140
-rw-r--r--deps/v8/third_party/zlib/google/zip.h138
-rw-r--r--deps/v8/third_party/zlib/google/zip_reader_unittest.cc5
-rw-r--r--deps/v8/third_party/zlib/google/zip_unittest.cc187
-rw-r--r--deps/v8/third_party/zlib/google/zip_writer.cc191
-rw-r--r--deps/v8/third_party/zlib/google/zip_writer.h63
-rw-r--r--deps/v8/tools/clusterfuzz/testdata/baseline/d8.py5
-rw-r--r--deps/v8/tools/clusterfuzz/testdata/build3/d8.py7
-rw-r--r--deps/v8/tools/clusterfuzz/testdata/failure_output_arch.txt50
-rw-r--r--deps/v8/tools/clusterfuzz/testdata/failure_output_second.txt50
-rwxr-xr-xdeps/v8/tools/clusterfuzz/v8_foozzie.py87
-rwxr-xr-xdeps/v8/tools/clusterfuzz/v8_foozzie_test.py32
-rw-r--r--deps/v8/tools/clusterfuzz/v8_mock.js12
-rw-r--r--deps/v8/tools/codemap.mjs11
-rwxr-xr-xdeps/v8/tools/cppgc/gen_cmake.py4
-rw-r--r--deps/v8/tools/debug_helper/get-object-properties.cc14
-rwxr-xr-xdeps/v8/tools/dev/gm.py7
-rwxr-xr-xdeps/v8/tools/dev/v8gen.py10
-rwxr-xr-xdeps/v8/tools/generate-header-include-checks.py2
-rwxr-xr-xdeps/v8/tools/mb/mb.py17
-rw-r--r--deps/v8/tools/profile.mjs13
-rw-r--r--deps/v8/tools/profview/profile-utils.js63
-rw-r--r--deps/v8/tools/profview/profview.js166
-rwxr-xr-xdeps/v8/tools/release/auto_roll.py4
-rwxr-xr-xdeps/v8/tools/release/test_scripts.py4
-rw-r--r--deps/v8/tools/system-analyzer/index.css2
-rw-r--r--deps/v8/tools/system-analyzer/index.mjs14
-rw-r--r--deps/v8/tools/system-analyzer/processor.mjs24
-rw-r--r--deps/v8/tools/system-analyzer/view/code-panel-template.html4
-rw-r--r--deps/v8/tools/system-analyzer/view/code-panel.mjs13
-rw-r--r--deps/v8/tools/system-analyzer/view/helper.mjs95
-rw-r--r--deps/v8/tools/system-analyzer/view/list-panel-template.html4
-rw-r--r--deps/v8/tools/system-analyzer/view/list-panel.mjs20
-rw-r--r--deps/v8/tools/system-analyzer/view/map-panel-template.html2
-rw-r--r--deps/v8/tools/system-analyzer/view/map-panel.mjs197
-rw-r--r--deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs2
-rw-r--r--deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs2
-rw-r--r--deps/v8/tools/system-analyzer/view/script-panel-template.html10
-rw-r--r--deps/v8/tools/system-analyzer/view/script-panel.mjs6
-rw-r--r--deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs4
-rw-r--r--deps/v8/tools/system-analyzer/view/tool-tip-template.html1
-rw-r--r--deps/v8/tools/system-analyzer/view/tool-tip.mjs7
-rw-r--r--deps/v8/tools/testrunner/base_runner.py36
-rw-r--r--deps/v8/tools/testrunner/local/junit_output.py49
-rw-r--r--deps/v8/tools/testrunner/local/statusfile.py2
-rw-r--r--deps/v8/tools/testrunner/local/utils.py52
-rw-r--r--deps/v8/tools/testrunner/local/variants.py20
-rw-r--r--deps/v8/tools/testrunner/outproc/message.py8
-rwxr-xr-xdeps/v8/tools/testrunner/standard_runner.py2
-rw-r--r--deps/v8/tools/testrunner/testproc/fuzzer.py1
-rw-r--r--deps/v8/tools/testrunner/testproc/progress.py40
-rw-r--r--deps/v8/tools/tickprocessor-driver.mjs8
-rw-r--r--deps/v8/tools/tickprocessor.mjs25
-rw-r--r--deps/v8/tools/ubsan/ignorelist.txt (renamed from deps/v8/tools/ubsan/blacklist.txt)2
-rw-r--r--deps/v8/tools/ubsan/vptr_ignorelist.txt (renamed from deps/v8/tools/ubsan/vptr_blacklist.txt)6
-rwxr-xr-xdeps/v8/tools/unittests/run_tests_test.py3
-rw-r--r--deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json3
-rw-r--r--deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json3
-rw-r--r--deps/v8/tools/v8.xcodeproj/README.txt11
-rwxr-xr-xdeps/v8/tools/v8_presubmit.py3
-rw-r--r--deps/v8/tools/v8heapconst.py650
-rw-r--r--deps/v8/tools/v8windbg/BUILD.gn5
-rw-r--r--deps/v8/tools/v8windbg/README.md4
-rw-r--r--deps/v8/tools/v8windbg/src/list-chunks.cc238
-rw-r--r--deps/v8/tools/v8windbg/src/list-chunks.h100
-rw-r--r--deps/v8/tools/v8windbg/src/v8windbg-extension.cc4
-rw-r--r--deps/v8/tools/whitespace.txt4
1435 files changed, 54507 insertions, 38158 deletions
diff --git a/deps/v8/.gn b/deps/v8/.gn
index d4ad959954..a691fa339b 100644
--- a/deps/v8/.gn
+++ b/deps/v8/.gn
@@ -7,11 +7,21 @@ import("//build/dotfile_settings.gni")
# The location of the build configuration file.
buildconfig = "//build/config/BUILDCONFIG.gn"
+# The python interpreter to use by default. On Windows, this will look
+# for python3.exe and python3.bat.
+script_executable = "python3"
+
# These are the targets to check headers for by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will have
# their includes checked for proper dependencies when you run either
# "gn check" or "gn gen --check".
-check_targets = []
+no_check_targets = [
+ "//:cppgc_base",
+ "//:v8_internal_headers",
+ "//src/inspector:inspector",
+ "//test/cctest:cctest_sources",
+ "//third_party/icu:*",
+]
# These are the list of GN files that run exec_script. This whitelist exists
# to force additional review for new uses of exec_script, which is strongly
diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS
index abfdc7887b..15909406cc 100644
--- a/deps/v8/AUTHORS
+++ b/deps/v8/AUTHORS
@@ -84,6 +84,7 @@ Colin Ihrig <cjihrig@gmail.com>
Cong Zuo <zckevinzc@gmail.com>
Daniel Andersson <kodandersson@gmail.com>
Daniel Bevenius <daniel.bevenius@gmail.com>
+Daniel Dromboski <dandromb@gmail.com>
Daniel James <dnljms@gmail.com>
David Carlier <devnexen@gmail.com>
David Manouchehri <david@davidmanouchehri.com>
@@ -229,6 +230,7 @@ Vladimir Krivosheev <develar@gmail.com>
Vladimir Shutoff <vovan@shutoff.ru>
Wei Wu <lazyparser@gmail.com>
Wenlu Wang <kingwenlu@gmail.com>
+Wenyu Zhao <wenyu.zhao@anu.edu.au>
Wiktor Garbacz <wiktor.garbacz@gmail.com>
Wouter Vermeiren <wouter.vermeiren@essensium.com>
Xiaofang Zou <zouxiaofang@iscas.ac.cn>
@@ -240,6 +242,7 @@ Yong Wang <ccyongwang@tencent.com>
Youfeng Hao <ajihyf@gmail.com>
Yu Yin <xwafish@gmail.com>
Yusif Khudhur <yusif.khudhur@gmail.com>
+Yuri Iozzelli <yuri@leaningtech.com>
Zac Hansen <xaxxon@gmail.com>
Zeynep Cankara <zeynepcankara402@gmail.com>
Zhao Jiazhong <kyslie3100@gmail.com>
diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn
index d2bfb6129d..5e3045bfdc 100644
--- a/deps/v8/BUILD.gn
+++ b/deps/v8/BUILD.gn
@@ -41,7 +41,7 @@ declare_args() {
v8_enable_future = false
# Sets -DSYSTEM_INSTRUMENTATION. Enables OS-dependent event tracing
- v8_enable_system_instrumentation = true
+ v8_enable_system_instrumentation = is_win || is_mac
# Sets the GUID for the ETW provider
v8_etw_guid = ""
@@ -95,8 +95,19 @@ declare_args() {
v8_win64_unwinding_info = true
# Enable code comments for builtins in the snapshot (impacts performance).
+ # This also enables v8_code_comments.
v8_enable_snapshot_code_comments = false
+ # Allow runtime-enabled code comments (with --code-comments). Enabled by
+ # default in debug builds.
+ # Sets -dV8_CODE_COMMENTS
+ v8_code_comments = ""
+
+ # Allow runtime-enabled debug code (with --debug-code). Enabled by default in
+ # debug builds.
+ # Sets -dV8_ENABLE_DEBUG_CODE
+ v8_enable_debug_code = ""
+
# Enable native counters from the snapshot (impacts performance, sets
# -dV8_SNAPSHOT_NATIVE_CODE_COUNTERS).
# This option will generate extra code in the snapshot to increment counters,
@@ -200,10 +211,6 @@ declare_args() {
(is_linux || is_chromeos || is_mac)) ||
(v8_current_cpu == "ppc64" && (is_linux || is_chromeos))
- # Temporary flag to allow embedders to update their microtasks scopes
- # while rolling in a new version of V8.
- v8_check_microtasks_scopes_consistency = ""
-
# Enable mitigations for executing untrusted code.
# Disabled by default on ia32 due to conflicting requirements with embedded
# builtins. Enabled by default on Android since it doesn't support
@@ -272,6 +279,10 @@ declare_args() {
# Enable heap reservation of size 4GB. Only possible for 64bit archs.
cppgc_enable_caged_heap = v8_current_cpu == "x64" || v8_current_cpu == "arm64"
+ # Enable verification of live bytes in the marking verifier.
+ # TODO(v8:11785): Enable by default when running with the verifier.
+ cppgc_enable_verify_live_bytes = false
+
# Enable young generation in cppgc.
cppgc_enable_young_generation = false
@@ -300,6 +311,12 @@ declare_args() {
# meaning that they are not switched to fast mode.
# Sets -DV8_DICT_PROPERTY_CONST_TRACKING
v8_dict_property_const_tracking = false
+
+ # Enable map packing & unpacking (sets -dV8_MAP_PACKING).
+ v8_enable_map_packing = false
+
+ # Allow for JS promise hooks (instead of just C++).
+ v8_allow_javascript_in_promise_hooks = false
}
# Derived defaults.
@@ -321,9 +338,15 @@ if (v8_enable_test_features == "") {
if (v8_enable_v8_checks == "") {
v8_enable_v8_checks = v8_enable_debugging_features
}
-if (v8_check_microtasks_scopes_consistency == "") {
- v8_check_microtasks_scopes_consistency =
- v8_enable_debugging_features || dcheck_always_on
+if (v8_enable_snapshot_code_comments) {
+ assert(v8_code_comments == true || v8_code_comments == "",
+ "v8_enable_snapshot_code_comments conflicts with v8_code_comments.")
+ v8_code_comments = true
+} else if (v8_code_comments == "") {
+ v8_code_comments = v8_enable_debugging_features
+}
+if (v8_enable_debug_code == "") {
+ v8_enable_debug_code = v8_enable_debugging_features
}
if (v8_enable_snapshot_native_code_counters == "") {
v8_enable_snapshot_native_code_counters = v8_enable_debugging_features
@@ -333,7 +356,7 @@ if (v8_enable_pointer_compression == "") {
v8_current_cpu == "arm64" || v8_current_cpu == "x64"
}
if (v8_enable_pointer_compression_shared_cage == "") {
- v8_enable_pointer_compression_shared_cage = false
+ v8_enable_pointer_compression_shared_cage = v8_enable_pointer_compression
}
if (v8_enable_fast_torque == "") {
v8_enable_fast_torque = v8_enable_fast_mksnapshot
@@ -357,6 +380,13 @@ if (v8_enable_atomic_object_field_writes == "") {
if (v8_enable_atomic_marking_state == "") {
v8_enable_atomic_marking_state = v8_enable_concurrent_marking
}
+if (v8_enable_third_party_heap) {
+ v8_disable_write_barriers = true
+ v8_enable_single_generation = true
+ v8_enable_shared_ro_heap = false
+ v8_enable_pointer_compression = false
+ v8_enable_pointer_compression_shared_cage = false
+}
assert(!v8_enable_concurrent_marking || v8_enable_atomic_object_field_writes,
"Concurrent marking requires atomic object field writes.")
assert(!v8_enable_concurrent_marking || v8_enable_atomic_marking_state,
@@ -386,7 +416,8 @@ if (v8_enable_short_builtin_calls &&
v8_enable_short_builtin_calls = false
}
if (v8_enable_shared_ro_heap == "") {
- v8_enable_shared_ro_heap = !v8_enable_pointer_compression
+ v8_enable_shared_ro_heap = !v8_enable_pointer_compression ||
+ v8_enable_pointer_compression_shared_cage
}
assert(!v8_disable_write_barriers || v8_enable_single_generation,
@@ -398,15 +429,18 @@ assert(v8_current_cpu != "x86" || !v8_untrusted_code_mitigations,
assert(v8_current_cpu == "arm64" || !v8_control_flow_integrity,
"Control-flow integrity is only supported on arm64")
-if (v8_enable_shared_ro_heap && v8_enable_pointer_compression) {
+if (v8_enable_shared_ro_heap && v8_enable_pointer_compression &&
+ !v8_enable_pointer_compression_shared_cage) {
assert(
is_linux || is_chromeos || is_android,
"Sharing read-only heap with pointer compression is only supported on Linux or Android")
}
-assert(
- !v8_enable_pointer_compression_shared_cage || !v8_enable_shared_ro_heap,
- "Sharing read-only heap is not yet supported when sharing a pointer compression cage")
+assert(!v8_enable_map_packing || !v8_enable_pointer_compression,
+ "Map packing does not support pointer compression")
+
+assert(!v8_enable_map_packing || v8_current_cpu == "x64",
+ "Map packing is only supported on x64")
assert(!v8_use_multi_snapshots || !v8_control_flow_integrity,
"Control-flow integrity does not support multisnapshots")
@@ -418,6 +452,10 @@ assert(
!v8_enable_pointer_compression_shared_cage || v8_enable_pointer_compression,
"Can't share a pointer compression cage if pointers aren't compressed")
+assert(!v8_enable_pointer_compression_shared_cage || v8_current_cpu == "x64" ||
+ v8_current_cpu == "arm64",
+ "Sharing a pointer compression cage is only supported on x64 and arm64")
+
assert(!v8_enable_unconditional_write_barriers || !v8_disable_write_barriers,
"Write barriers can't be both enabled and disabled")
@@ -566,6 +604,7 @@ external_v8_defines = [
"V8_IMMINENT_DEPRECATION_WARNINGS",
"V8_NO_ARGUMENTS_ADAPTOR",
"V8_USE_PERFETTO",
+ "V8_MAP_PACKING",
]
enabled_external_v8_defines = []
@@ -575,11 +614,11 @@ if (v8_enable_v8_checks) {
}
if (v8_enable_pointer_compression) {
enabled_external_v8_defines += [ "V8_COMPRESS_POINTERS" ]
-}
-if (v8_enable_pointer_compression_shared_cage) {
- enabled_external_v8_defines += [ "V8_COMPRESS_POINTERS_IN_SHARED_CAGE" ]
-} else if (v8_enable_pointer_compression) {
- enabled_external_v8_defines += [ "V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE" ]
+ if (v8_enable_pointer_compression_shared_cage) {
+ enabled_external_v8_defines += [ "V8_COMPRESS_POINTERS_IN_SHARED_CAGE" ]
+ } else {
+ enabled_external_v8_defines += [ "V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE" ]
+ }
}
if (v8_enable_pointer_compression || v8_enable_31bit_smis_on_64bit_arch) {
enabled_external_v8_defines += [ "V8_31BIT_SMIS_ON_64BIT_ARCH" ]
@@ -599,6 +638,9 @@ if (v8_imminent_deprecation_warnings) {
if (v8_use_perfetto) {
enabled_external_v8_defines += [ "V8_USE_PERFETTO" ]
}
+if (v8_enable_map_packing) {
+ enabled_external_v8_defines += [ "V8_MAP_PACKING" ]
+}
disabled_external_v8_defines = external_v8_defines - enabled_external_v8_defines
@@ -665,6 +707,10 @@ config("features") {
":cppgc_header_features",
]
+ if (cppgc_enable_verify_live_bytes) {
+ defines += [ "CPPGC_VERIFY_LIVE_BYTES" ]
+ }
+
if (v8_embedder_string != "") {
defines += [ "V8_EMBEDDER_STRING=\"$v8_embedder_string\"" ]
}
@@ -729,6 +775,12 @@ config("features") {
if (v8_enable_handle_zapping) {
defines += [ "ENABLE_HANDLE_ZAPPING" ]
}
+ if (v8_code_comments == true) {
+ defines += [ "V8_CODE_COMMENTS" ]
+ }
+ if (v8_enable_debug_code) {
+ defines += [ "V8_ENABLE_DEBUG_CODE" ]
+ }
if (v8_enable_snapshot_native_code_counters) {
defines += [ "V8_SNAPSHOT_NATIVE_CODE_COUNTERS" ]
}
@@ -756,9 +808,6 @@ config("features") {
if (v8_enable_lazy_source_positions) {
defines += [ "V8_ENABLE_LAZY_SOURCE_POSITIONS" ]
}
- if (v8_check_microtasks_scopes_consistency) {
- defines += [ "V8_CHECK_MICROTASKS_SCOPES_CONSISTENCY" ]
- }
if (v8_use_multi_snapshots) {
defines += [ "V8_MULTI_SNAPSHOTS" ]
}
@@ -807,6 +856,9 @@ config("features") {
if (v8_dict_property_const_tracking) {
defines += [ "V8_DICT_PROPERTY_CONST_TRACKING" ]
}
+ if (v8_allow_javascript_in_promise_hooks) {
+ defines += [ "V8_ALLOW_JAVASCRIPT_IN_PROMISE_HOOKS" ]
+ }
}
config("toolchain") {
@@ -1038,6 +1090,10 @@ config("toolchain") {
defines += [ "ENABLE_VERIFY_CSA" ]
}
+ if (v8_enable_runtime_call_stats) {
+ defines += [ "V8_RUNTIME_CALL_STATS" ]
+ }
+
if (!v8_untrusted_code_mitigations) {
defines += [ "DISABLE_UNTRUSTED_CODE_MITIGATIONS" ]
}
@@ -1244,6 +1300,8 @@ action("postmortem-metadata") {
"src/objects/map.cc",
"src/objects/map.h",
"src/objects/map-inl.h",
+ "src/objects/megadom-handler.h",
+ "src/objects/megadom-handler-inl.h",
"src/objects/name.h",
"src/objects/name-inl.h",
"src/objects/objects.h",
@@ -1432,6 +1490,7 @@ torque_files = [
"src/objects/js-weak-refs.tq",
"src/objects/literal-objects.tq",
"src/objects/map.tq",
+ "src/objects/megadom-handler.tq",
"src/objects/microtask.tq",
"src/objects/module.tq",
"src/objects/name.tq",
@@ -1515,44 +1574,37 @@ template("run_torque") {
destination_folder = "$target_gen_dir/torque-generated$suffix"
- files = [
- "$target_gen_dir/torque-generated/bit-fields.h",
- "$target_gen_dir/torque-generated/builtin-definitions.h",
- "$target_gen_dir/torque-generated/class-debug-readers.cc",
- "$target_gen_dir/torque-generated/class-debug-readers.h",
- "$target_gen_dir/torque-generated/class-forward-declarations.h",
- "$target_gen_dir/torque-generated/class-verifiers.cc",
- "$target_gen_dir/torque-generated/class-verifiers.h",
- "$target_gen_dir/torque-generated/csa-types.h",
- "$target_gen_dir/torque-generated/debug-macros.cc",
- "$target_gen_dir/torque-generated/debug-macros.h",
- "$target_gen_dir/torque-generated/enum-verifiers.cc",
- "$target_gen_dir/torque-generated/exported-macros-assembler.cc",
- "$target_gen_dir/torque-generated/exported-macros-assembler.h",
- "$target_gen_dir/torque-generated/factory.cc",
- "$target_gen_dir/torque-generated/factory.inc",
- "$target_gen_dir/torque-generated/field-offsets.h",
- "$target_gen_dir/torque-generated/instance-types.h",
- "$target_gen_dir/torque-generated/interface-descriptors.inc",
- "$target_gen_dir/torque-generated/objects-body-descriptors-inl.inc",
- "$target_gen_dir/torque-generated/objects-printer.cc",
+ outputs = [
+ "$destination_folder/bit-fields.h",
+ "$destination_folder/builtin-definitions.h",
+ "$destination_folder/class-debug-readers.cc",
+ "$destination_folder/class-debug-readers.h",
+ "$destination_folder/class-forward-declarations.h",
+ "$destination_folder/class-verifiers.cc",
+ "$destination_folder/class-verifiers.h",
+ "$destination_folder/csa-types.h",
+ "$destination_folder/debug-macros.cc",
+ "$destination_folder/debug-macros.h",
+ "$destination_folder/enum-verifiers.cc",
+ "$destination_folder/exported-macros-assembler.cc",
+ "$destination_folder/exported-macros-assembler.h",
+ "$destination_folder/factory.cc",
+ "$destination_folder/factory.inc",
+ "$destination_folder/field-offsets.h",
+ "$destination_folder/instance-types.h",
+ "$destination_folder/interface-descriptors.inc",
+ "$destination_folder/objects-body-descriptors-inl.inc",
+ "$destination_folder/objects-printer.cc",
]
- outputs = []
- foreach(file, files) {
- outputs += [ string_replace(file,
- "$target_gen_dir/torque-generated",
- destination_folder) ]
- }
-
foreach(file, torque_files) {
filetq = string_replace(file, ".tq", "-tq")
outputs += [
- "$target_gen_dir/torque-generated/$filetq-csa.cc",
- "$target_gen_dir/torque-generated/$filetq-csa.h",
- "$target_gen_dir/torque-generated/$filetq-inl.inc",
- "$target_gen_dir/torque-generated/$filetq.cc",
- "$target_gen_dir/torque-generated/$filetq.inc",
+ "$destination_folder/$filetq-csa.cc",
+ "$destination_folder/$filetq-csa.h",
+ "$destination_folder/$filetq-inl.inc",
+ "$destination_folder/$filetq.cc",
+ "$destination_folder/$filetq.inc",
]
}
@@ -1892,11 +1944,16 @@ action("v8_dump_build_config") {
"v8_enable_atomic_object_field_writes=" +
"$v8_enable_atomic_object_field_writes",
"v8_enable_concurrent_marking=$v8_enable_concurrent_marking",
+ "v8_enable_single_generation=$v8_enable_single_generation",
"v8_enable_i18n_support=$v8_enable_i18n_support",
"v8_enable_verify_predictable=$v8_enable_verify_predictable",
"v8_enable_verify_csa=$v8_enable_verify_csa",
"v8_enable_lite_mode=$v8_enable_lite_mode",
+ "v8_enable_runtime_call_stats=$v8_enable_runtime_call_stats",
"v8_enable_pointer_compression=$v8_enable_pointer_compression",
+ "v8_enable_pointer_compression_shared_cage=" +
+ "$v8_enable_pointer_compression_shared_cage",
+ "v8_enable_third_party_heap=$v8_enable_third_party_heap",
"v8_enable_webassembly=$v8_enable_webassembly",
"v8_control_flow_integrity=$v8_control_flow_integrity",
"v8_target_cpu=\"$v8_target_cpu\"",
@@ -1918,7 +1975,10 @@ action("v8_dump_build_config") {
v8_source_set("v8_snapshot") {
visibility = [ ":*" ] # Targets in this file can depend on this.
- deps = []
+ deps = [
+ ":v8_internal_headers",
+ ":v8_libbase",
+ ]
public_deps = [
# This should be public so downstream targets can declare the snapshot
# output file as their inputs.
@@ -2000,7 +2060,6 @@ v8_source_set("v8_initializers") {
"src/builtins/builtins-conversion-gen.cc",
"src/builtins/builtins-data-view-gen.h",
"src/builtins/builtins-date-gen.cc",
- "src/builtins/builtins-debug-gen.cc",
"src/builtins/builtins-generator-gen.cc",
"src/builtins/builtins-global-gen.cc",
"src/builtins/builtins-handler-gen.cc",
@@ -2226,9 +2285,8 @@ if (v8_generate_external_defines_header) {
v8_header_set("v8_shared_internal_headers") {
visibility = [
":*",
- "test/cctest:*",
- "test/unittests:*",
- "tools/debug_helper/:*",
+ "test/*",
+ "tools/*",
]
configs = [ ":internal_config" ]
@@ -2245,7 +2303,10 @@ v8_header_set("v8_shared_internal_headers") {
}
v8_header_set("v8_flags") {
- visibility = [ ":*" ]
+ visibility = [
+ ":*",
+ "tools/*",
+ ]
configs = [ ":internal_config" ]
@@ -2273,6 +2334,7 @@ v8_header_set("v8_internal_headers") {
"src/api/api-arguments-inl.h",
"src/api/api-arguments.h",
"src/api/api-inl.h",
+ "src/api/api-macros-undef.h",
"src/api/api-macros.h",
"src/api/api-natives.h",
"src/api/api.h",
@@ -2289,6 +2351,7 @@ v8_header_set("v8_internal_headers") {
"src/baseline/baseline-assembler-inl.h",
"src/baseline/baseline-assembler.h",
"src/baseline/baseline-compiler.h",
+ "src/baseline/baseline-osr-inl.h",
"src/baseline/baseline.h",
"src/baseline/bytecode-offset-iterator.h",
"src/builtins/accessors.h",
@@ -2321,6 +2384,7 @@ v8_header_set("v8_internal_headers") {
"src/codegen/external-reference.h",
"src/codegen/flush-instruction-cache.h",
"src/codegen/handler-table.h",
+ "src/codegen/interface-descriptors-inl.h",
"src/codegen/interface-descriptors.h",
"src/codegen/label.h",
"src/codegen/machine-type.h",
@@ -2382,6 +2446,7 @@ v8_header_set("v8_internal_headers") {
"src/compiler/common-operator-reducer.h",
"src/compiler/common-operator.h",
"src/compiler/compilation-dependencies.h",
+ "src/compiler/compilation-dependency.h",
"src/compiler/compiler-source-position-table.h",
"src/compiler/constant-folding-reducer.h",
"src/compiler/control-equivalence.h",
@@ -2448,18 +2513,17 @@ v8_header_set("v8_internal_headers") {
"src/compiler/persistent-map.h",
"src/compiler/pipeline-statistics.h",
"src/compiler/pipeline.h",
+ "src/compiler/processed-feedback.h",
"src/compiler/property-access-builder.h",
"src/compiler/raw-machine-assembler.h",
"src/compiler/redundancy-elimination.h",
"src/compiler/refs-map.h",
"src/compiler/representation-change.h",
"src/compiler/schedule.h",
- "src/compiler/scheduled-machine-lowering.h",
"src/compiler/scheduler.h",
"src/compiler/select-lowering.h",
"src/compiler/serializer-for-background-compilation.h",
"src/compiler/serializer-hints.h",
- "src/compiler/simd-scalar-lowering.h",
"src/compiler/simplified-lowering.h",
"src/compiler/simplified-operator-reducer.h",
"src/compiler/simplified-operator.h",
@@ -2517,6 +2581,7 @@ v8_header_set("v8_internal_headers") {
"src/execution/interrupts-scope.h",
"src/execution/isolate-data.h",
"src/execution/isolate-inl.h",
+ "src/execution/isolate-utils-inl.h",
"src/execution/isolate-utils.h",
"src/execution/isolate.h",
"src/execution/local-isolate-inl.h",
@@ -2557,6 +2622,7 @@ v8_header_set("v8_internal_headers") {
"src/heap/base-space.h",
"src/heap/basic-memory-chunk.h",
"src/heap/code-object-registry.h",
+ "src/heap/code-range.h",
"src/heap/code-stats.h",
"src/heap/collection-barrier.h",
"src/heap/combined-heap.h",
@@ -2592,11 +2658,13 @@ v8_header_set("v8_internal_headers") {
"src/heap/list.h",
"src/heap/local-allocator-inl.h",
"src/heap/local-allocator.h",
+ "src/heap/local-factory-inl.h",
"src/heap/local-factory.h",
"src/heap/local-heap-inl.h",
"src/heap/local-heap.h",
"src/heap/mark-compact-inl.h",
"src/heap/mark-compact.h",
+ "src/heap/marking-barrier-inl.h",
"src/heap/marking-barrier.h",
"src/heap/marking-visitor-inl.h",
"src/heap/marking-visitor.h",
@@ -2679,13 +2747,13 @@ v8_header_set("v8_internal_headers") {
"src/libsampler/sampler.h",
"src/logging/code-events.h",
"src/logging/counters-definitions.h",
- "src/logging/counters-inl.h",
"src/logging/counters.h",
"src/logging/local-logger.h",
"src/logging/log-inl.h",
"src/logging/log-utils.h",
"src/logging/log.h",
"src/logging/metrics.h",
+ "src/logging/runtime-call-stats.h",
"src/logging/tracing-flags.h",
"src/numbers/bignum-dtoa.h",
"src/numbers/bignum.h",
@@ -2766,6 +2834,7 @@ v8_header_set("v8_internal_headers") {
"src/objects/js-array-inl.h",
"src/objects/js-array.h",
"src/objects/js-collection-inl.h",
+ "src/objects/js-collection-iterator-inl.h",
"src/objects/js-collection-iterator.h",
"src/objects/js-collection.h",
"src/objects/js-function-inl.h",
@@ -2782,6 +2851,8 @@ v8_header_set("v8_internal_headers") {
"src/objects/js-regexp-string-iterator-inl.h",
"src/objects/js-regexp-string-iterator.h",
"src/objects/js-regexp.h",
+ "src/objects/js-segments-inl.h",
+ "src/objects/js-segments.h",
"src/objects/js-weak-refs-inl.h",
"src/objects/js-weak-refs.h",
"src/objects/keys.h",
@@ -2797,6 +2868,8 @@ v8_header_set("v8_internal_headers") {
"src/objects/map.h",
"src/objects/maybe-object-inl.h",
"src/objects/maybe-object.h",
+ "src/objects/megadom-handler-inl.h",
+ "src/objects/megadom-handler.h",
"src/objects/microtask-inl.h",
"src/objects/microtask.h",
"src/objects/module-inl.h",
@@ -2831,6 +2904,7 @@ v8_header_set("v8_internal_headers") {
"src/objects/property.h",
"src/objects/prototype-info-inl.h",
"src/objects/prototype-info.h",
+ "src/objects/prototype-inl.h",
"src/objects/prototype.h",
"src/objects/regexp-match-info.h",
"src/objects/scope-info-inl.h",
@@ -2842,6 +2916,7 @@ v8_header_set("v8_internal_headers") {
"src/objects/slots-atomic-inl.h",
"src/objects/slots-inl.h",
"src/objects/slots.h",
+ "src/objects/source-text-module-inl.h",
"src/objects/source-text-module.h",
"src/objects/stack-frame-info-inl.h",
"src/objects/stack-frame-info.h",
@@ -2880,6 +2955,7 @@ v8_header_set("v8_internal_headers") {
"src/parsing/expression-scope.h",
"src/parsing/func-name-inferrer.h",
"src/parsing/import-assertions.h",
+ "src/parsing/keywords-gen.h",
"src/parsing/literal-buffer.h",
"src/parsing/parse-info.h",
"src/parsing/parser-base.h",
@@ -2892,6 +2968,7 @@ v8_header_set("v8_internal_headers") {
"src/parsing/preparser.h",
"src/parsing/rewriter.h",
"src/parsing/scanner-character-streams.h",
+ "src/parsing/scanner-inl.h",
"src/parsing/scanner.h",
"src/parsing/token.h",
"src/profiler/allocation-tracker.h",
@@ -2939,10 +3016,6 @@ v8_header_set("v8_internal_headers") {
"src/roots/roots.h",
"src/runtime/runtime-utils.h",
"src/runtime/runtime.h",
- "src/sanitizer/asan.h",
- "src/sanitizer/lsan-page-allocator.h",
- "src/sanitizer/msan.h",
- "src/sanitizer/tsan.h",
"src/snapshot/code-serializer.h",
"src/snapshot/context-deserializer.h",
"src/snapshot/context-serializer.h",
@@ -2980,6 +3053,7 @@ v8_header_set("v8_internal_headers") {
"src/tasks/task-utils.h",
"src/third_party/siphash/halfsiphash.h",
"src/third_party/utf8-decoder/utf8-decoder.h",
+ "src/torque/runtime-macro-shims.h",
"src/tracing/trace-event.h",
"src/tracing/traced-value.h",
"src/tracing/tracing-category-observer.h",
@@ -3046,6 +3120,7 @@ v8_header_set("v8_internal_headers") {
"src/wasm/jump-table-assembler.h",
"src/wasm/leb-helper.h",
"src/wasm/local-decl-encoder.h",
+ "src/wasm/memory-protection-key.h",
"src/wasm/memory-tracing.h",
"src/wasm/module-compiler.h",
"src/wasm/module-decoder.h",
@@ -3063,6 +3138,7 @@ v8_header_set("v8_internal_headers") {
"src/wasm/wasm-feature-flags.h",
"src/wasm/wasm-features.h",
"src/wasm/wasm-import-wrapper-cache.h",
+ "src/wasm/wasm-init-expr.h",
"src/wasm/wasm-js.h",
"src/wasm/wasm-linkage.h",
"src/wasm/wasm-module-builder.h",
@@ -3070,6 +3146,7 @@ v8_header_set("v8_internal_headers") {
"src/wasm/wasm-module.h",
"src/wasm/wasm-objects-inl.h",
"src/wasm/wasm-objects.h",
+ "src/wasm/wasm-opcodes-inl.h",
"src/wasm/wasm-opcodes.h",
"src/wasm/wasm-result.h",
"src/wasm/wasm-serialization.h",
@@ -3140,6 +3217,7 @@ v8_header_set("v8_internal_headers") {
"src/codegen/ia32/assembler-ia32-inl.h",
"src/codegen/ia32/assembler-ia32.h",
"src/codegen/ia32/constants-ia32.h",
+ "src/codegen/ia32/interface-descriptors-ia32-inl.h",
"src/codegen/ia32/macro-assembler-ia32.h",
"src/codegen/ia32/register-ia32.h",
"src/codegen/ia32/sse-instr.h",
@@ -3158,6 +3236,7 @@ v8_header_set("v8_internal_headers") {
"src/codegen/x64/assembler-x64.h",
"src/codegen/x64/constants-x64.h",
"src/codegen/x64/fma-instr.h",
+ "src/codegen/x64/interface-descriptors-x64-inl.h",
"src/codegen/x64/macro-assembler-x64.h",
"src/codegen/x64/register-x64.h",
"src/codegen/x64/sse-instr.h",
@@ -3187,6 +3266,7 @@ v8_header_set("v8_internal_headers") {
"src/codegen/arm/assembler-arm-inl.h",
"src/codegen/arm/assembler-arm.h",
"src/codegen/arm/constants-arm.h",
+ "src/codegen/arm/interface-descriptors-arm-inl.h",
"src/codegen/arm/macro-assembler-arm.h",
"src/codegen/arm/register-arm.h",
"src/compiler/backend/arm/instruction-codes-arm.h",
@@ -3206,6 +3286,7 @@ v8_header_set("v8_internal_headers") {
"src/codegen/arm64/decoder-arm64-inl.h",
"src/codegen/arm64/decoder-arm64.h",
"src/codegen/arm64/instructions-arm64.h",
+ "src/codegen/arm64/interface-descriptors-arm64-inl.h",
"src/codegen/arm64/macro-assembler-arm64-inl.h",
"src/codegen/arm64/macro-assembler-arm64.h",
"src/codegen/arm64/register-arm64.h",
@@ -3259,11 +3340,10 @@ v8_header_set("v8_internal_headers") {
]
} else if (v8_current_cpu == "ppc") {
sources += [ ### gcmole(arch:ppc) ###
- "src/baseline/ppc/baseline-assembler-ppc-inl.h",
- "src/baseline/ppc/baseline-compiler-ppc-inl.h",
"src/codegen/ppc/assembler-ppc-inl.h",
"src/codegen/ppc/assembler-ppc.h",
"src/codegen/ppc/constants-ppc.h",
+ "src/codegen/ppc/interface-descriptors-ppc-inl.h",
"src/codegen/ppc/macro-assembler-ppc.h",
"src/codegen/ppc/register-ppc.h",
"src/compiler/backend/ppc/instruction-codes-ppc.h",
@@ -3275,11 +3355,10 @@ v8_header_set("v8_internal_headers") {
]
} else if (v8_current_cpu == "ppc64") {
sources += [ ### gcmole(arch:ppc64) ###
- "src/baseline/ppc/baseline-assembler-ppc-inl.h",
- "src/baseline/ppc/baseline-compiler-ppc-inl.h",
"src/codegen/ppc/assembler-ppc-inl.h",
"src/codegen/ppc/assembler-ppc.h",
"src/codegen/ppc/constants-ppc.h",
+ "src/codegen/ppc/interface-descriptors-ppc-inl.h",
"src/codegen/ppc/macro-assembler-ppc.h",
"src/codegen/ppc/register-ppc.h",
"src/compiler/backend/ppc/instruction-codes-ppc.h",
@@ -3296,6 +3375,7 @@ v8_header_set("v8_internal_headers") {
"src/codegen/s390/assembler-s390-inl.h",
"src/codegen/s390/assembler-s390.h",
"src/codegen/s390/constants-s390.h",
+ "src/codegen/s390/interface-descriptors-s390-inl.h",
"src/codegen/s390/macro-assembler-s390.h",
"src/codegen/s390/register-s390.h",
"src/compiler/backend/s390/instruction-codes-s390.h",
@@ -3384,6 +3464,7 @@ v8_compiler_sources = [
"src/compiler/graph-trimmer.cc",
"src/compiler/graph-visualizer.cc",
"src/compiler/graph.cc",
+ "src/compiler/heap-refs.cc",
"src/compiler/js-call-reducer.cc",
"src/compiler/js-context-specialization.cc",
"src/compiler/js-create-lowering.cc",
@@ -3430,7 +3511,6 @@ v8_compiler_sources = [
"src/compiler/refs-map.cc",
"src/compiler/representation-change.cc",
"src/compiler/schedule.cc",
- "src/compiler/scheduled-machine-lowering.cc",
"src/compiler/scheduler.cc",
"src/compiler/select-lowering.cc",
"src/compiler/serializer-for-background-compilation.cc",
@@ -3452,7 +3532,6 @@ v8_compiler_sources = [
if (v8_enable_webassembly) {
v8_compiler_sources += [
"src/compiler/int64-lowering.cc",
- "src/compiler/simd-scalar-lowering.cc",
"src/compiler/wasm-compiler.cc",
]
}
@@ -3676,6 +3755,7 @@ v8_source_set("v8_base_without_compiler") {
"src/heap/base-space.cc",
"src/heap/basic-memory-chunk.cc",
"src/heap/code-object-registry.cc",
+ "src/heap/code-range.cc",
"src/heap/code-stats.cc",
"src/heap/collection-barrier.cc",
"src/heap/combined-heap.cc",
@@ -3763,6 +3843,7 @@ v8_source_set("v8_base_without_compiler") {
"src/logging/log-utils.cc",
"src/logging/log.cc",
"src/logging/metrics.cc",
+ "src/logging/runtime-call-stats.cc",
"src/logging/tracing-flags.cc",
"src/numbers/bignum-dtoa.cc",
"src/numbers/bignum.cc",
@@ -3908,7 +3989,6 @@ v8_source_set("v8_base_without_compiler") {
"src/runtime/runtime-typedarray.cc",
"src/runtime/runtime-weak-refs.cc",
"src/runtime/runtime.cc",
- "src/sanitizer/lsan-page-allocator.cc",
"src/snapshot/code-serializer.cc",
"src/snapshot/context-deserializer.cc",
"src/snapshot/context-serializer.cc",
@@ -3977,6 +4057,7 @@ v8_source_set("v8_base_without_compiler") {
"src/wasm/graph-builder-interface.cc",
"src/wasm/jump-table-assembler.cc",
"src/wasm/local-decl-encoder.cc",
+ "src/wasm/memory-protection-key.cc",
"src/wasm/memory-tracing.cc",
"src/wasm/module-compiler.cc",
"src/wasm/module-decoder.cc",
@@ -3988,10 +4069,12 @@ v8_source_set("v8_base_without_compiler") {
"src/wasm/value-type.cc",
"src/wasm/wasm-code-manager.cc",
"src/wasm/wasm-debug.cc",
+ "src/wasm/wasm-debug.h",
"src/wasm/wasm-engine.cc",
"src/wasm/wasm-external-refs.cc",
"src/wasm/wasm-features.cc",
"src/wasm/wasm-import-wrapper-cache.cc",
+ "src/wasm/wasm-init-expr.cc",
"src/wasm/wasm-js.cc",
"src/wasm/wasm-module-builder.cc",
"src/wasm/wasm-module-sourcemap.cc",
@@ -4007,7 +4090,10 @@ v8_source_set("v8_base_without_compiler") {
if (v8_enable_third_party_heap) {
sources += v8_third_party_heap_files
} else {
- sources += [ "src/heap/third-party/heap-api-stub.cc" ]
+ sources += [
+ "src/heap/third-party/heap-api-stub.cc",
+ "src/heap/third-party/heap-api.h",
+ ]
}
if (v8_enable_conservative_stack_scanning) {
@@ -4027,24 +4113,15 @@ v8_source_set("v8_base_without_compiler") {
]
}
- if (v8_check_header_includes) {
- # This file will be generated by tools/generate-header-include-checks.py
- # if the "check_v8_header_includes" gclient variable is set.
- import("check-header-includes/sources.gni")
- sources += check_header_includes_sources
- }
-
if (v8_current_cpu == "x86") {
sources += [ ### gcmole(arch:ia32) ###
"src/codegen/ia32/assembler-ia32.cc",
"src/codegen/ia32/cpu-ia32.cc",
- "src/codegen/ia32/interface-descriptors-ia32.cc",
"src/codegen/ia32/macro-assembler-ia32.cc",
"src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc",
"src/compiler/backend/ia32/code-generator-ia32.cc",
"src/compiler/backend/ia32/instruction-scheduler-ia32.cc",
"src/compiler/backend/ia32/instruction-selector-ia32.cc",
- "src/debug/ia32/debug-ia32.cc",
"src/deoptimizer/ia32/deoptimizer-ia32.cc",
"src/diagnostics/ia32/disasm-ia32.cc",
"src/diagnostics/ia32/unwinder-ia32.cc",
@@ -4056,13 +4133,11 @@ v8_source_set("v8_base_without_compiler") {
"src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc",
"src/codegen/x64/assembler-x64.cc",
"src/codegen/x64/cpu-x64.cc",
- "src/codegen/x64/interface-descriptors-x64.cc",
"src/codegen/x64/macro-assembler-x64.cc",
"src/compiler/backend/x64/code-generator-x64.cc",
"src/compiler/backend/x64/instruction-scheduler-x64.cc",
"src/compiler/backend/x64/instruction-selector-x64.cc",
"src/compiler/backend/x64/unwinding-info-writer-x64.cc",
- "src/debug/x64/debug-x64.cc",
"src/deoptimizer/x64/deoptimizer-x64.cc",
"src/diagnostics/x64/disasm-x64.cc",
"src/diagnostics/x64/eh-frame-x64.cc",
@@ -4091,13 +4166,11 @@ v8_source_set("v8_base_without_compiler") {
"src/codegen/arm/assembler-arm.cc",
"src/codegen/arm/constants-arm.cc",
"src/codegen/arm/cpu-arm.cc",
- "src/codegen/arm/interface-descriptors-arm.cc",
"src/codegen/arm/macro-assembler-arm.cc",
"src/compiler/backend/arm/code-generator-arm.cc",
"src/compiler/backend/arm/instruction-scheduler-arm.cc",
"src/compiler/backend/arm/instruction-selector-arm.cc",
"src/compiler/backend/arm/unwinding-info-writer-arm.cc",
- "src/debug/arm/debug-arm.cc",
"src/deoptimizer/arm/deoptimizer-arm.cc",
"src/diagnostics/arm/disasm-arm.cc",
"src/diagnostics/arm/eh-frame-arm.cc",
@@ -4113,7 +4186,6 @@ v8_source_set("v8_base_without_compiler") {
"src/codegen/arm64/decoder-arm64.cc",
"src/codegen/arm64/instructions-arm64-constants.cc",
"src/codegen/arm64/instructions-arm64.cc",
- "src/codegen/arm64/interface-descriptors-arm64.cc",
"src/codegen/arm64/macro-assembler-arm64.cc",
"src/codegen/arm64/register-arm64.cc",
"src/codegen/arm64/utils-arm64.cc",
@@ -4121,7 +4193,6 @@ v8_source_set("v8_base_without_compiler") {
"src/compiler/backend/arm64/instruction-scheduler-arm64.cc",
"src/compiler/backend/arm64/instruction-selector-arm64.cc",
"src/compiler/backend/arm64/unwinding-info-writer-arm64.cc",
- "src/debug/arm64/debug-arm64.cc",
"src/deoptimizer/arm64/deoptimizer-arm64.cc",
"src/diagnostics/arm64/disasm-arm64.cc",
"src/diagnostics/arm64/eh-frame-arm64.cc",
@@ -4146,12 +4217,11 @@ v8_source_set("v8_base_without_compiler") {
"src/codegen/mips/assembler-mips.cc",
"src/codegen/mips/constants-mips.cc",
"src/codegen/mips/cpu-mips.cc",
- "src/codegen/mips/interface-descriptors-mips.cc",
+ "src/codegen/mips/interface-descriptors-mips-inl.h",
"src/codegen/mips/macro-assembler-mips.cc",
"src/compiler/backend/mips/code-generator-mips.cc",
"src/compiler/backend/mips/instruction-scheduler-mips.cc",
"src/compiler/backend/mips/instruction-selector-mips.cc",
- "src/debug/mips/debug-mips.cc",
"src/deoptimizer/mips/deoptimizer-mips.cc",
"src/diagnostics/mips/disasm-mips.cc",
"src/diagnostics/mips/unwinder-mips.cc",
@@ -4164,12 +4234,11 @@ v8_source_set("v8_base_without_compiler") {
"src/codegen/mips64/assembler-mips64.cc",
"src/codegen/mips64/constants-mips64.cc",
"src/codegen/mips64/cpu-mips64.cc",
- "src/codegen/mips64/interface-descriptors-mips64.cc",
+ "src/codegen/mips64/interface-descriptors-mips64-inl.h",
"src/codegen/mips64/macro-assembler-mips64.cc",
"src/compiler/backend/mips64/code-generator-mips64.cc",
"src/compiler/backend/mips64/instruction-scheduler-mips64.cc",
"src/compiler/backend/mips64/instruction-selector-mips64.cc",
- "src/debug/mips64/debug-mips64.cc",
"src/deoptimizer/mips64/deoptimizer-mips64.cc",
"src/diagnostics/mips64/disasm-mips64.cc",
"src/diagnostics/mips64/unwinder-mips64.cc",
@@ -4182,13 +4251,11 @@ v8_source_set("v8_base_without_compiler") {
"src/codegen/ppc/assembler-ppc.cc",
"src/codegen/ppc/constants-ppc.cc",
"src/codegen/ppc/cpu-ppc.cc",
- "src/codegen/ppc/interface-descriptors-ppc.cc",
"src/codegen/ppc/macro-assembler-ppc.cc",
"src/compiler/backend/ppc/code-generator-ppc.cc",
"src/compiler/backend/ppc/instruction-scheduler-ppc.cc",
"src/compiler/backend/ppc/instruction-selector-ppc.cc",
"src/compiler/backend/ppc/unwinding-info-writer-ppc.cc",
- "src/debug/ppc/debug-ppc.cc",
"src/deoptimizer/ppc/deoptimizer-ppc.cc",
"src/diagnostics/ppc/disasm-ppc.cc",
"src/diagnostics/ppc/eh-frame-ppc.cc",
@@ -4202,13 +4269,11 @@ v8_source_set("v8_base_without_compiler") {
"src/codegen/ppc/assembler-ppc.cc",
"src/codegen/ppc/constants-ppc.cc",
"src/codegen/ppc/cpu-ppc.cc",
- "src/codegen/ppc/interface-descriptors-ppc.cc",
"src/codegen/ppc/macro-assembler-ppc.cc",
"src/compiler/backend/ppc/code-generator-ppc.cc",
"src/compiler/backend/ppc/instruction-scheduler-ppc.cc",
"src/compiler/backend/ppc/instruction-selector-ppc.cc",
"src/compiler/backend/ppc/unwinding-info-writer-ppc.cc",
- "src/debug/ppc/debug-ppc.cc",
"src/deoptimizer/ppc/deoptimizer-ppc.cc",
"src/diagnostics/ppc/disasm-ppc.cc",
"src/diagnostics/ppc/eh-frame-ppc.cc",
@@ -4222,13 +4287,11 @@ v8_source_set("v8_base_without_compiler") {
"src/codegen/s390/assembler-s390.cc",
"src/codegen/s390/constants-s390.cc",
"src/codegen/s390/cpu-s390.cc",
- "src/codegen/s390/interface-descriptors-s390.cc",
"src/codegen/s390/macro-assembler-s390.cc",
"src/compiler/backend/s390/code-generator-s390.cc",
"src/compiler/backend/s390/instruction-scheduler-s390.cc",
"src/compiler/backend/s390/instruction-selector-s390.cc",
"src/compiler/backend/s390/unwinding-info-writer-s390.cc",
- "src/debug/s390/debug-s390.cc",
"src/deoptimizer/s390/deoptimizer-s390.cc",
"src/diagnostics/s390/disasm-s390.cc",
"src/diagnostics/s390/eh-frame-s390.cc",
@@ -4239,15 +4302,17 @@ v8_source_set("v8_base_without_compiler") {
]
} else if (v8_current_cpu == "riscv64") {
sources += [ ### gcmole(arch:riscv64) ###
+ "src/baseline/riscv64/baseline-assembler-riscv64-inl.h",
+ "src/baseline/riscv64/baseline-compiler-riscv64-inl.h",
+ "src/codegen/riscv64/assembler-riscv64-inl.h",
"src/codegen/riscv64/assembler-riscv64.cc",
"src/codegen/riscv64/constants-riscv64.cc",
"src/codegen/riscv64/cpu-riscv64.cc",
- "src/codegen/riscv64/interface-descriptors-riscv64.cc",
+ "src/codegen/riscv64/interface-descriptors-riscv64-inl.h",
"src/codegen/riscv64/macro-assembler-riscv64.cc",
"src/compiler/backend/riscv64/code-generator-riscv64.cc",
"src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc",
"src/compiler/backend/riscv64/instruction-selector-riscv64.cc",
- "src/debug/riscv64/debug-riscv64.cc",
"src/deoptimizer/riscv64/deoptimizer-riscv64.cc",
"src/diagnostics/riscv64/disasm-riscv64.cc",
"src/diagnostics/riscv64/unwinder-riscv64.cc",
@@ -4497,8 +4562,6 @@ v8_component("v8_libbase") {
"src/base/atomic-utils.h",
"src/base/atomicops.h",
"src/base/atomicops_internals_atomicword_compat.h",
- "src/base/atomicops_internals_portable.h",
- "src/base/atomicops_internals_std.h",
"src/base/base-export.h",
"src/base/bit-field.h",
"src/base/bits-iterator.h",
@@ -4532,7 +4595,6 @@ v8_component("v8_libbase") {
"src/base/lazy-instance.h",
"src/base/logging.cc",
"src/base/logging.h",
- "src/base/lsan.h",
"src/base/macros.h",
"src/base/memory.h",
"src/base/once.cc",
@@ -4558,6 +4620,11 @@ v8_component("v8_libbase") {
"src/base/safe_conversions.h",
"src/base/safe_conversions_arm_impl.h",
"src/base/safe_conversions_impl.h",
+ "src/base/sanitizer/asan.h",
+ "src/base/sanitizer/lsan-page-allocator.cc",
+ "src/base/sanitizer/lsan-page-allocator.h",
+ "src/base/sanitizer/lsan.h",
+ "src/base/sanitizer/msan.h",
"src/base/small-vector.h",
"src/base/sys-info.cc",
"src/base/sys-info.h",
@@ -4694,9 +4761,11 @@ v8_component("v8_libbase") {
if (is_tsan && !build_with_chromium) {
data += [ "tools/sanitizers/tsan_suppressions.txt" ]
+ }
- # llvm-symbolizer uses libstdc++ from the clang package.
- data += [ "//third_party/llvm-build/Release+Asserts/lib/libstdc++.so.6" ]
+ if (using_sanitizer && !build_with_chromium) {
+ data_deps +=
+ [ "//build/config/clang:llvm-symbolizer_data($host_toolchain)" ]
}
# TODO(jochen): Add support for qnx, freebsd, openbsd, netbsd, and solaris.
@@ -4720,8 +4789,6 @@ v8_component("v8_libplatform") {
"src/libplatform/delayed-task-queue.h",
"src/libplatform/task-queue.cc",
"src/libplatform/task-queue.h",
- "src/libplatform/tracing/recorder-default.cc",
- "src/libplatform/tracing/recorder.h",
"src/libplatform/tracing/trace-buffer.cc",
"src/libplatform/tracing/trace-buffer.h",
"src/libplatform/tracing/trace-config.cc",
@@ -4752,8 +4819,6 @@ v8_component("v8_libplatform") {
if (v8_use_perfetto) {
sources -= [
"//base/trace_event/common/trace_event_common.h",
- "src/libplatform/tracing/recorder-default.cc",
- "src/libplatform/tracing/recorder.h",
"src/libplatform/tracing/trace-buffer.cc",
"src/libplatform/tracing/trace-buffer.h",
"src/libplatform/tracing/trace-object.cc",
@@ -4768,9 +4833,15 @@ v8_component("v8_libplatform") {
# TODO(skyostil): Switch TraceEventListener to protozero.
"//third_party/perfetto/protos/perfetto/trace:lite",
]
- } else if (is_win) {
- sources -= [ "src/libplatform/tracing/recorder-default.cc" ]
- sources += [ "src/libplatform/tracing/recorder-win.cc" ]
+ }
+
+ if (v8_enable_system_instrumentation) {
+ sources += [ "src/libplatform/tracing/recorder.h" ]
+ if (is_mac) {
+ sources += [ "src/libplatform/tracing/recorder-mac.cc" ]
+ } else if (is_win) {
+ sources += [ "src/libplatform/tracing/recorder-win.cc" ]
+ }
}
}
@@ -4794,8 +4865,13 @@ v8_source_set("fuzzer_support") {
v8_source_set("v8_bigint") {
sources = [
+ "src/bigint/bigint-internal.cc",
+ "src/bigint/bigint-internal.h",
"src/bigint/bigint.h",
+ "src/bigint/digit-arithmetic.h",
+ "src/bigint/mul-schoolbook.cc",
"src/bigint/vector-arithmetic.cc",
+ "src/bigint/vector-arithmetic.h",
]
configs = [ ":internal_config" ]
@@ -4807,7 +4883,6 @@ v8_source_set("v8_cppgc_shared") {
"src/heap/base/stack.h",
"src/heap/base/worklist.cc",
"src/heap/base/worklist.h",
- "src/heap/cppgc/sanitizers.h",
]
if (is_clang || !is_win) {
@@ -4954,6 +5029,8 @@ v8_source_set("cppgc_base") {
"src/heap/cppgc/marking-visitor.h",
"src/heap/cppgc/marking-worklists.cc",
"src/heap/cppgc/marking-worklists.h",
+ "src/heap/cppgc/memory.cc",
+ "src/heap/cppgc/memory.h",
"src/heap/cppgc/metric-recorder.h",
"src/heap/cppgc/name-trait.cc",
"src/heap/cppgc/object-allocator.cc",
@@ -4961,6 +5038,7 @@ v8_source_set("cppgc_base") {
"src/heap/cppgc/object-poisoner.h",
"src/heap/cppgc/object-size-trait.cc",
"src/heap/cppgc/object-start-bitmap.h",
+ "src/heap/cppgc/object-view.h",
"src/heap/cppgc/page-memory.cc",
"src/heap/cppgc/page-memory.h",
"src/heap/cppgc/persistent-node.cc",
@@ -5032,6 +5110,35 @@ v8_source_set("cppgc_base_for_testing") {
public_deps = [ ":cppgc_base" ]
}
+if (v8_check_header_includes) {
+ # This file will be generated by tools/generate-header-include-checks.py
+ # if the "check_v8_header_includes" gclient variable is set.
+ import("check-header-includes/sources.gni")
+ v8_source_set("check_headers") {
+ configs = [ ":internal_config" ]
+ sources = check_header_includes_sources
+
+ # Any rules that contain headers files should be added here either directly
+ # or indirectly by including something that has it transitively in its
+ # public_deps.
+ deps = [
+ ":d8",
+ ":mksnapshot",
+ ":torque_base",
+ ":torque_ls_base",
+ ":v8_base_without_compiler",
+ ":v8_bigint",
+ ":v8_initializers",
+ ":v8_internal_headers",
+ ":v8_libbase",
+ ":v8_maybe_icu",
+ ":wee8",
+ "src/inspector:inspector",
+ "src/inspector:inspector_string_conversions",
+ ]
+ }
+}
+
###############################################################################
# Produce a single static library for embedders
#
@@ -5284,6 +5391,10 @@ group("gn_all") {
if (want_v8_shell) {
deps += [ ":v8_shell" ]
}
+
+ if (v8_check_header_includes) {
+ deps += [ ":check_headers" ]
+ }
}
group("v8_python_base") {
@@ -6199,9 +6310,7 @@ if (!build_with_chromium && v8_use_perfetto) {
configs = [ ":v8_tracing_config" ]
public_configs = [ "//third_party/perfetto/gn:public_config" ]
deps = [
- "//third_party/perfetto/src/trace_processor:export_json",
"//third_party/perfetto/src/trace_processor:storage_minimal",
- "//third_party/perfetto/src/tracing:client_api",
"//third_party/perfetto/src/tracing/core",
# TODO(skyostil): Support non-POSIX platforms.
@@ -6210,5 +6319,11 @@ if (!build_with_chromium && v8_use_perfetto) {
"//third_party/perfetto/src/tracing:in_process_backend",
"//third_party/perfetto/src/tracing:platform_impl",
]
+
+ public_deps = [
+ "//third_party/perfetto/include/perfetto/trace_processor",
+ "//third_party/perfetto/src/trace_processor:export_json",
+ "//third_party/perfetto/src/tracing:client_api",
+ ]
}
} # if (!build_with_chromium && v8_use_perfetto)
diff --git a/deps/v8/DEPS b/deps/v8/DEPS
index b27a4e8e8f..d3de2c5ddc 100644
--- a/deps/v8/DEPS
+++ b/deps/v8/DEPS
@@ -9,7 +9,6 @@ gclient_gn_args = [
# TODO(https://crbug.com/1137662, https://crbug.com/1080854)
# Remove when migration is complete.
'checkout_fuchsia_for_arm64_host',
- 'checkout_google_benchmark',
]
vars = {
@@ -44,13 +43,11 @@ vars = {
'download_jsfunfuzz': False,
'check_v8_header_includes': False,
- 'checkout_google_benchmark' : False,
-
# GN CIPD package version.
- 'gn_version': 'git_revision:dba01723a441c358d843a575cb7720d54ddcdf92',
+ 'gn_version': 'git_revision:39a87c0b36310bdf06b692c098f199a0d97fc810',
# luci-go CIPD package version.
- 'luci_go': 'git_revision:d6d24b11ecded4d89f3dfd1b2e5a0072a3d4ab15',
+ 'luci_go': 'git_revision:22d464e2f8f3bd2bd33f69fe819326d63f881008',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling android_sdk_build-tools_version
@@ -88,15 +85,15 @@ vars = {
deps = {
'build':
- Var('chromium_url') + '/chromium/src/build.git' + '@' + '77edba11e25386aa719d4f08c3ce2d8c4f868c15',
+ Var('chromium_url') + '/chromium/src/build.git' + '@' + '4036cf1b17581f5668b487a25e252d56e0321a7f',
'third_party/depot_tools':
- Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '98a52e2e312dd10d7fcf281e322039a6b706b86b',
+ Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '6b0a611c2c692684f94c0c3629f793feebd16b39',
'third_party/icu':
- Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '81d656878ec611cb0b42d52c82e9dae93920d9ba',
+ Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'f022e298b4f4a782486bb6d5ce6589c998b51fe2',
'third_party/instrumented_libraries':
- Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + '084aee04777db574038af9e9d33ca5caed577462',
+ Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + '4ae2535e8e894c3cd81d46aacdaf151b5df30709',
'buildtools':
- Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '5dbd89c9d9c0b0ff47cefdc2bc421b8c9a1c5a21',
+ Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '20b1d0fc13ebaa263a1248f08814f523a86e6bed',
'buildtools/clang_format/script':
Var('chromium_url') + '/external/github.com/llvm/llvm-project/clang/tools/clang-format.git' + '@' + '99803d74e35962f63a775f29477882afd4d57d94',
'buildtools/linux64': {
@@ -122,9 +119,9 @@ deps = {
'buildtools/third_party/libc++/trunk':
Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '8fa87946779682841e21e2da977eccfb6cb3bded',
'buildtools/third_party/libc++abi/trunk':
- Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'd0f33885a2ffa7d5af74af6065b60eb48e3c70f5',
+ Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '767de317f97343db64af048e3d198ab8b10fee5d',
'buildtools/third_party/libunwind/trunk':
- Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '08f35c8514a74817103121def05351186830d4b7',
+ Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '7846d256355e40273f7cc192c8f5893e8665a1f9',
'buildtools/win': {
'packages': [
{
@@ -136,7 +133,7 @@ deps = {
'condition': 'host_os == "win"',
},
'base/trace_event/common':
- Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + 'cab90cbdaaf4444d67aef6ce3cef09fc5fdeb560',
+ Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + 'd5bb24e5d9802c8c917fcaa4375d5239a586c168',
'third_party/android_ndk': {
'url': Var('chromium_url') + '/android_ndk.git' + '@' + '401019bf85744311b26c88ced255cd53401af8b7',
'condition': 'checkout_android',
@@ -184,7 +181,7 @@ deps = {
'dep_type': 'cipd',
},
'third_party/catapult': {
- 'url': Var('chromium_url') + '/catapult.git' + '@' + '41a5e5e465ad93d6e08224613d3544334a6278bc',
+ 'url': Var('chromium_url') + '/catapult.git' + '@' + 'c1e1d559b46476584ec0eb1d83bd7f43fa5a1b36',
'condition': 'checkout_android',
},
'third_party/colorama/src': {
@@ -196,10 +193,9 @@ deps = {
'condition': 'checkout_fuchsia',
},
'third_party/googletest/src':
- Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '07f4869221012b16b7f9ee685d94856e1fc9f361',
+ Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '23ef29555ef4789f555f1ba8c51b4c52975f0907',
'third_party/google_benchmark/src': {
- 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '7f27afe83b82f3a98baf58ef595814b9d42a5b2b',
- 'condition': 'checkout_google_benchmark',
+ 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '7d0d9061d83b663ce05d9de5da3d5865a3845b79',
},
'third_party/jinja2':
Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '11b6b3e5971d760bd2d310f77643f55a818a6d25',
@@ -212,7 +208,7 @@ deps = {
'test/mozilla/data':
Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be',
'test/test262/data':
- Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + '31126581e7290f9233c29cefd93f66c6ac78f1c9',
+ Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + '6d353a4436747e2de8820efac27ae5ef7e601b60',
'test/test262/harness':
Var('chromium_url') + '/external/github.com/test262-utils/test262-harness-py.git' + '@' + '278bcfaed0dcaa13936831fb1769d15e7c1e3b2b',
'third_party/qemu-linux-x64': {
@@ -239,7 +235,7 @@ deps = {
'packages': [
{
'package': 'fuchsia/third_party/aemu/linux-amd64',
- 'version': 'SeLS6a0f6IL-PCOUKbMTN5LYgjjJbDSnb3DGf5q9pwsC'
+ 'version': '-Sz2gSN_5yVSHDlitjxUlmZpHuz-F2kFDW6TnmggCZoC'
},
],
'condition': 'host_os == "linux" and checkout_fuchsia',
@@ -256,7 +252,7 @@ deps = {
'dep_type': 'cipd',
},
'tools/clang':
- Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'a387faa2a6741f565e45d78804a49a0e55de5909',
+ Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'a38f01b956e091d5e698d2af484c81cd4e9a2a2d',
'tools/luci-go': {
'packages': [
{
@@ -290,7 +286,7 @@ deps = {
'third_party/protobuf':
Var('chromium_url') + '/external/github.com/google/protobuf'+ '@' + '6a59a2ad1f61d9696092f79b6d74368b4d7970a3',
'third_party/zlib':
- Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '09490503d0f201b81e03f5ca0ab8ba8ee76d4a8e',
+ Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '5b8d433953beb2a75a755ba321a3076b95f7cdb9',
'third_party/jsoncpp/source':
Var('chromium_url') + '/external/github.com/open-source-parsers/jsoncpp.git'+ '@' + '9059f5cad030ba11d37818847443a53918c327b1',
'third_party/ittapi': {
diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS
index 2a478dbdc5..2ad1949b51 100644
--- a/deps/v8/OWNERS
+++ b/deps/v8/OWNERS
@@ -21,7 +21,7 @@ per-file PRESUBMIT.py=file:INFRA_OWNERS
per-file codereview.settings=file:INFRA_OWNERS
per-file AUTHORS=file:COMMON_OWNERS
-per-file WATCHLIST=file:COMMON_OWNERS
+per-file WATCHLISTS=file:COMMON_OWNERS
per-file *-mips*=file:MIPS_OWNERS
per-file *-mips64*=file:MIPS_OWNERS
diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py
index 2ee14d545e..61963c62f6 100644
--- a/deps/v8/PRESUBMIT.py
+++ b/deps/v8/PRESUBMIT.py
@@ -279,7 +279,7 @@ def _CheckHeadersHaveIncludeGuards(input_api, output_api):
for line in f.NewContents():
for i in range(len(guard_patterns)):
if guard_patterns[i].match(line):
- found_patterns[i] = True
+ found_patterns[i] = True
if skip_check_pattern.match(line):
file_omitted = True
break
@@ -485,7 +485,9 @@ def _CheckNoexceptAnnotations(input_api, output_api):
files_to_check=(r'src[\\\/].*', r'test[\\\/].*'),
# Skip api.cc since we cannot easily add the 'noexcept' annotation to
# public methods.
- files_to_skip=(r'src[\\\/]api[\\\/]api\.cc',))
+ # Skip src/bigint/ because it's meant to be V8-independent.
+ files_to_skip=(r'src[\\\/]api[\\\/]api\.cc',
+ r'src[\\\/]bigint[\\\/].*'))
# matches any class name.
class_name = r'\b([A-Z][A-Za-z0-9_:]*)(?:::\1)?'
diff --git a/deps/v8/RISCV_OWNERS b/deps/v8/RISCV_OWNERS
index f3240b500b..8f8e15a40a 100644
--- a/deps/v8/RISCV_OWNERS
+++ b/deps/v8/RISCV_OWNERS
@@ -1,3 +1,3 @@
brice.dobry@futurewei.com
-lazyparser@gmail.com
peng.w@rioslab.org
+qiuji@iscas.ac.cn
diff --git a/deps/v8/WATCHLISTS b/deps/v8/WATCHLISTS
index fa95f144cb..c54f15ad79 100644
--- a/deps/v8/WATCHLISTS
+++ b/deps/v8/WATCHLISTS
@@ -51,6 +51,9 @@
'|test/cctest/interpreter/' \
'|test/unittests/interpreter/',
},
+ 'baseline': {
+ 'filepath': 'src/baseline/'
+ },
'feature_shipping_status': {
'filepath': 'src/flags/flag-definitions.h',
},
@@ -91,6 +94,9 @@
'filepath': 'src/base/ieee754\.(cc|h)' \
'|src/base/overflowing-math.h' \
'|LICENSE.fdlibm',
+ },
+ 'regexp': {
+ 'filepath': 'src/.*regexp',
}
},
@@ -110,6 +116,10 @@
'interpreter': [
'rmcilroy@chromium.org',
],
+ 'baseline': [
+ 'leszeks+watch@chromium.org',
+ 'verwaest+watch@chromium.org',
+ ],
'feature_shipping_status': [
'hablich@chromium.org',
],
@@ -142,5 +152,9 @@
'rtoy+watch@chromium.org',
'hongchan+watch@chromium.org'
],
+ 'regexp': [
+ 'jgruber+watch@chromium.org',
+ 'pthier+watch@chromium.org'
+ ],
},
}
diff --git a/deps/v8/base/trace_event/common/trace_event_common.h b/deps/v8/base/trace_event/common/trace_event_common.h
index dcbb09bb66..dff2f9b277 100644
--- a/deps/v8/base/trace_event/common/trace_event_common.h
+++ b/deps/v8/base/trace_event/common/trace_event_common.h
@@ -256,10 +256,8 @@ namespace perfetto {
namespace legacy {
template <>
-bool BASE_EXPORT ConvertThreadId(const ::base::PlatformThreadId& thread,
- uint64_t* track_uuid_out,
- int32_t* pid_override_out,
- int32_t* tid_override_out);
+perfetto::ThreadTrack BASE_EXPORT
+ConvertThreadId(const ::base::PlatformThreadId& thread);
} // namespace legacy
diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni
index 9325baf996..8741e86c08 100644
--- a/deps/v8/gni/v8.gni
+++ b/deps/v8/gni/v8.gni
@@ -75,13 +75,16 @@ declare_args() {
# executed as standard JavaScript instead.
v8_enable_webassembly = ""
+ # Enable runtime call stats.
+ v8_enable_runtime_call_stats = true
+
# Add fuzzilli fuzzer support.
v8_fuzzilli = false
# Scan the call stack conservatively during garbage collection.
v8_enable_conservative_stack_scanning = false
- v8_enable_google_benchmark = checkout_google_benchmark
+ v8_enable_google_benchmark = false
cppgc_is_standalone = false
}
diff --git a/deps/v8/include/cppgc/allocation.h b/deps/v8/include/cppgc/allocation.h
index f4f0e72bd5..7a803cf2cc 100644
--- a/deps/v8/include/cppgc/allocation.h
+++ b/deps/v8/include/cppgc/allocation.h
@@ -8,6 +8,7 @@
#include <stdint.h>
#include <atomic>
+#include <type_traits>
#include "cppgc/custom-space.h"
#include "cppgc/garbage-collected.h"
@@ -103,6 +104,10 @@ class MakeGarbageCollectedTraitBase
* \returns the memory to construct an object of type T on.
*/
V8_INLINE static void* Allocate(AllocationHandle& handle, size_t size) {
+ static_assert(
+ std::is_base_of<typename T::ParentMostGarbageCollectedType, T>::value,
+ "U of GarbageCollected<U> must be a base of T. Check "
+ "GarbageCollected<T> base class inheritance.");
return SpacePolicy<
typename internal::GCInfoFolding<
T, typename T::ParentMostGarbageCollectedType>::ResultType,
diff --git a/deps/v8/include/cppgc/cross-thread-persistent.h b/deps/v8/include/cppgc/cross-thread-persistent.h
index 9cfcd23fdf..fe61e9acbc 100644
--- a/deps/v8/include/cppgc/cross-thread-persistent.h
+++ b/deps/v8/include/cppgc/cross-thread-persistent.h
@@ -28,19 +28,19 @@ class BasicCrossThreadPersistent final : public PersistentBase,
~BasicCrossThreadPersistent() { Clear(); }
- BasicCrossThreadPersistent( // NOLINT
+ BasicCrossThreadPersistent(
const SourceLocation& loc = SourceLocation::Current())
: LocationPolicy(loc) {}
- BasicCrossThreadPersistent( // NOLINT
+ BasicCrossThreadPersistent(
std::nullptr_t, const SourceLocation& loc = SourceLocation::Current())
: LocationPolicy(loc) {}
- BasicCrossThreadPersistent( // NOLINT
+ BasicCrossThreadPersistent(
SentinelPointer s, const SourceLocation& loc = SourceLocation::Current())
: PersistentBase(s), LocationPolicy(loc) {}
- BasicCrossThreadPersistent( // NOLINT
+ BasicCrossThreadPersistent(
T* raw, const SourceLocation& loc = SourceLocation::Current())
: PersistentBase(raw), LocationPolicy(loc) {
if (!IsValid(raw)) return;
@@ -58,7 +58,7 @@ class BasicCrossThreadPersistent final : public PersistentBase,
friend class BasicCrossThreadPersistent;
};
- BasicCrossThreadPersistent( // NOLINT
+ BasicCrossThreadPersistent(
UnsafeCtorTag, T* raw,
const SourceLocation& loc = SourceLocation::Current())
: PersistentBase(raw), LocationPolicy(loc) {
@@ -68,14 +68,14 @@ class BasicCrossThreadPersistent final : public PersistentBase,
this->CheckPointer(raw);
}
- BasicCrossThreadPersistent( // NOLINT
+ BasicCrossThreadPersistent(
T& raw, const SourceLocation& loc = SourceLocation::Current())
: BasicCrossThreadPersistent(&raw, loc) {}
template <typename U, typename MemberBarrierPolicy,
typename MemberWeaknessTag, typename MemberCheckingPolicy,
typename = std::enable_if_t<std::is_base_of<T, U>::value>>
- BasicCrossThreadPersistent( // NOLINT
+ BasicCrossThreadPersistent(
internal::BasicMember<U, MemberBarrierPolicy, MemberWeaknessTag,
MemberCheckingPolicy>
member,
@@ -94,7 +94,7 @@ class BasicCrossThreadPersistent final : public PersistentBase,
template <typename U, typename OtherWeaknessPolicy,
typename OtherLocationPolicy, typename OtherCheckingPolicy,
typename = std::enable_if_t<std::is_base_of<T, U>::value>>
- BasicCrossThreadPersistent( // NOLINT
+ BasicCrossThreadPersistent(
const BasicCrossThreadPersistent<U, OtherWeaknessPolicy,
OtherLocationPolicy,
OtherCheckingPolicy>& other,
@@ -139,7 +139,7 @@ class BasicCrossThreadPersistent final : public PersistentBase,
GetNode()->UpdateOwner(this);
other.SetValue(nullptr);
other.SetNode(nullptr);
- this->CheckPointer(GetValue());
+ this->CheckPointer(Get());
return *this;
}
@@ -236,7 +236,7 @@ class BasicCrossThreadPersistent final : public PersistentBase,
*
* \returns the object.
*/
- operator T*() const { return Get(); } // NOLINT
+ operator T*() const { return Get(); }
/**
* Dereferences the stored object.
diff --git a/deps/v8/include/cppgc/explicit-management.h b/deps/v8/include/cppgc/explicit-management.h
index 8fb321c08c..cdb6af4858 100644
--- a/deps/v8/include/cppgc/explicit-management.h
+++ b/deps/v8/include/cppgc/explicit-management.h
@@ -12,9 +12,12 @@
#include "cppgc/type-traits.h"
namespace cppgc {
+
+class HeapHandle;
+
namespace internal {
-V8_EXPORT void FreeUnreferencedObject(void*);
+V8_EXPORT void FreeUnreferencedObject(HeapHandle&, void*);
V8_EXPORT bool Resize(void*, size_t);
} // namespace internal
@@ -30,15 +33,19 @@ namespace subtle {
* to `object` after calling `FreeUnreferencedObject()`. In case such a
* reference exists, it's use results in a use-after-free.
*
+ * To aid in using the API, `FreeUnreferencedObject()` may be called from
+ * destructors on objects that would be reclaimed in the same garbage collection
+ * cycle.
+ *
+ * \param heap_handle The corresponding heap.
* \param object Reference to an object that is of type `GarbageCollected` and
* should be immediately reclaimed.
*/
template <typename T>
-void FreeUnreferencedObject(T* object) {
+void FreeUnreferencedObject(HeapHandle& heap_handle, T& object) {
static_assert(IsGarbageCollectedTypeV<T>,
"Object must be of type GarbageCollected.");
- if (!object) return;
- internal::FreeUnreferencedObject(object);
+ internal::FreeUnreferencedObject(heap_handle, &object);
}
/**
@@ -53,6 +60,8 @@ void FreeUnreferencedObject(T* object) {
* object down, the reclaimed area is not used anymore. Any subsequent use
* results in a use-after-free.
*
+ * The `object` must be live when calling `Resize()`.
+ *
* \param object Reference to an object that is of type `GarbageCollected` and
* should be resized.
* \param additional_bytes Bytes in addition to sizeof(T) that the object should
diff --git a/deps/v8/include/cppgc/heap-statistics.h b/deps/v8/include/cppgc/heap-statistics.h
index cf8d6633cc..2fe6e1ae58 100644
--- a/deps/v8/include/cppgc/heap-statistics.h
+++ b/deps/v8/include/cppgc/heap-statistics.h
@@ -57,7 +57,7 @@ struct HeapStatistics final {
};
/**
- * Stastistics of the freelist (used only in non-large object spaces). For
+ * Statistics of the freelist (used only in non-large object spaces). For
* each bucket in the freelist the statistics record the bucket size, the
* number of freelist entries in the bucket, and the overall allocated memory
* consumed by these freelist entries.
@@ -67,7 +67,7 @@ struct HeapStatistics final {
std::vector<size_t> bucket_size;
/** number of freelist entries per bucket. */
std::vector<size_t> free_count;
- /** memory size concumed by freelist entries per size. */
+ /** memory size consumed by freelist entries per size. */
std::vector<size_t> free_size;
};
diff --git a/deps/v8/include/cppgc/internal/compiler-specific.h b/deps/v8/include/cppgc/internal/compiler-specific.h
index c580894b35..595b6398cb 100644
--- a/deps/v8/include/cppgc/internal/compiler-specific.h
+++ b/deps/v8/include/cppgc/internal/compiler-specific.h
@@ -21,13 +21,13 @@ namespace cppgc {
// [[no_unique_address]] comes in C++20 but supported in clang with -std >=
// c++11.
-#if CPPGC_HAS_CPP_ATTRIBUTE(no_unique_address) // NOLINTNEXTLINE
+#if CPPGC_HAS_CPP_ATTRIBUTE(no_unique_address)
#define CPPGC_NO_UNIQUE_ADDRESS [[no_unique_address]]
#else
#define CPPGC_NO_UNIQUE_ADDRESS
#endif
-#if CPPGC_HAS_ATTRIBUTE(unused) // NOLINTNEXTLINE
+#if CPPGC_HAS_ATTRIBUTE(unused)
#define CPPGC_UNUSED __attribute__((unused))
#else
#define CPPGC_UNUSED
diff --git a/deps/v8/include/cppgc/internal/pointer-policies.h b/deps/v8/include/cppgc/internal/pointer-policies.h
index ceb002f02d..e09b86199f 100644
--- a/deps/v8/include/cppgc/internal/pointer-policies.h
+++ b/deps/v8/include/cppgc/internal/pointer-policies.h
@@ -9,12 +9,15 @@
#include <type_traits>
#include "cppgc/internal/write-barrier.h"
+#include "cppgc/sentinel-pointer.h"
#include "cppgc/source-location.h"
+#include "cppgc/type-traits.h"
#include "v8config.h" // NOLINT(build/include_directory)
namespace cppgc {
namespace internal {
+class HeapBase;
class PersistentRegion;
class CrossThreadPersistentRegion;
@@ -50,11 +53,31 @@ struct NoWriteBarrierPolicy {
class V8_EXPORT EnabledCheckingPolicy {
protected:
- EnabledCheckingPolicy();
- void CheckPointer(const void* ptr);
+ template <typename T>
+ void CheckPointer(const T* ptr) {
+ if (!ptr || (kSentinelPointer == ptr)) return;
+
+ CheckPointersImplTrampoline<T>::Call(this, ptr);
+ }
private:
- void* impl_;
+ void CheckPointerImpl(const void* ptr, bool points_to_payload);
+
+ template <typename T, bool = IsCompleteV<T>>
+ struct CheckPointersImplTrampoline {
+ static void Call(EnabledCheckingPolicy* policy, const T* ptr) {
+ policy->CheckPointerImpl(ptr, false);
+ }
+ };
+
+ template <typename T>
+ struct CheckPointersImplTrampoline<T, true> {
+ static void Call(EnabledCheckingPolicy* policy, const T* ptr) {
+ policy->CheckPointerImpl(ptr, IsGarbageCollectedTypeV<T>);
+ }
+ };
+
+ const HeapBase* heap_ = nullptr;
};
class DisabledCheckingPolicy {
@@ -63,9 +86,11 @@ class DisabledCheckingPolicy {
};
#if V8_ENABLE_CHECKS
-using DefaultCheckingPolicy = EnabledCheckingPolicy;
+using DefaultMemberCheckingPolicy = EnabledCheckingPolicy;
+using DefaultPersistentCheckingPolicy = EnabledCheckingPolicy;
#else
-using DefaultCheckingPolicy = DisabledCheckingPolicy;
+using DefaultMemberCheckingPolicy = DisabledCheckingPolicy;
+using DefaultPersistentCheckingPolicy = DisabledCheckingPolicy;
#endif
class KeepLocationPolicy {
@@ -133,10 +158,10 @@ template <typename T, typename WeaknessPolicy,
class BasicCrossThreadPersistent;
template <typename T, typename WeaknessPolicy,
typename LocationPolicy = DefaultLocationPolicy,
- typename CheckingPolicy = DefaultCheckingPolicy>
+ typename CheckingPolicy = DefaultPersistentCheckingPolicy>
class BasicPersistent;
template <typename T, typename WeaknessTag, typename WriteBarrierPolicy,
- typename CheckingPolicy = DefaultCheckingPolicy>
+ typename CheckingPolicy = DefaultMemberCheckingPolicy>
class BasicMember;
} // namespace internal
diff --git a/deps/v8/include/cppgc/member.h b/deps/v8/include/cppgc/member.h
index 7b76bc4f75..16aed06022 100644
--- a/deps/v8/include/cppgc/member.h
+++ b/deps/v8/include/cppgc/member.h
@@ -24,8 +24,11 @@ namespace internal {
// BasicMember on casting to the right type as needed.
class MemberBase {
protected:
+ struct AtomicInitializerTag {};
+
MemberBase() = default;
explicit MemberBase(const void* value) : raw_(value) {}
+ MemberBase(const void* value, AtomicInitializerTag) { SetRawAtomic(value); }
const void** GetRawSlot() const { return &raw_; }
const void* GetRaw() const { return raw_; }
@@ -61,6 +64,20 @@ class BasicMember final : private MemberBase, private CheckingPolicy {
this->CheckPointer(Get());
}
BasicMember(T& raw) : BasicMember(&raw) {} // NOLINT
+ // Atomic ctor. Using the AtomicInitializerTag forces BasicMember to
+ // initialize using atomic assignments. This is required for preventing
+ // data races with concurrent marking.
+ using AtomicInitializerTag = MemberBase::AtomicInitializerTag;
+ BasicMember(std::nullptr_t, AtomicInitializerTag atomic)
+ : MemberBase(nullptr, atomic) {}
+ BasicMember(SentinelPointer s, AtomicInitializerTag atomic)
+ : MemberBase(s, atomic) {}
+ BasicMember(T* raw, AtomicInitializerTag atomic) : MemberBase(raw, atomic) {
+ InitializingWriteBarrier();
+ this->CheckPointer(Get());
+ }
+ BasicMember(T& raw, AtomicInitializerTag atomic)
+ : BasicMember(&raw, atomic) {}
// Copy ctor.
BasicMember(const BasicMember& other) : BasicMember(other.Get()) {}
// Allow heterogeneous construction.
@@ -79,9 +96,8 @@ class BasicMember final : private MemberBase, private CheckingPolicy {
template <typename U, typename OtherBarrierPolicy, typename OtherWeaknessTag,
typename OtherCheckingPolicy,
typename = std::enable_if_t<std::is_base_of<T, U>::value>>
- BasicMember( // NOLINT
- BasicMember<U, OtherWeaknessTag, OtherBarrierPolicy,
- OtherCheckingPolicy>&& other) noexcept
+ BasicMember(BasicMember<U, OtherWeaknessTag, OtherBarrierPolicy,
+ OtherCheckingPolicy>&& other) noexcept
: BasicMember(other.Get()) {
other.Clear();
}
@@ -90,10 +106,9 @@ class BasicMember final : private MemberBase, private CheckingPolicy {
typename PersistentLocationPolicy,
typename PersistentCheckingPolicy,
typename = std::enable_if_t<std::is_base_of<T, U>::value>>
- BasicMember( // NOLINT
- const BasicPersistent<U, PersistentWeaknessPolicy,
- PersistentLocationPolicy, PersistentCheckingPolicy>&
- p)
+ BasicMember(const BasicPersistent<U, PersistentWeaknessPolicy,
+ PersistentLocationPolicy,
+ PersistentCheckingPolicy>& p)
: BasicMember(p.Get()) {}
// Copy assignment.
@@ -161,7 +176,7 @@ class BasicMember final : private MemberBase, private CheckingPolicy {
}
explicit operator bool() const { return Get(); }
- operator T*() const { return Get(); } // NOLINT
+ operator T*() const { return Get(); }
T* operator->() const { return Get(); }
T& operator*() const { return *Get(); }
diff --git a/deps/v8/include/cppgc/persistent.h b/deps/v8/include/cppgc/persistent.h
index d7aac723c0..22cda7c6e8 100644
--- a/deps/v8/include/cppgc/persistent.h
+++ b/deps/v8/include/cppgc/persistent.h
@@ -95,7 +95,7 @@ class BasicPersistent final : public PersistentBase,
template <typename U, typename OtherWeaknessPolicy,
typename OtherLocationPolicy, typename OtherCheckingPolicy,
typename = std::enable_if_t<std::is_base_of<T, U>::value>>
- BasicPersistent( // NOLINT
+ BasicPersistent(
const BasicPersistent<U, OtherWeaknessPolicy, OtherLocationPolicy,
OtherCheckingPolicy>& other,
const SourceLocation& loc = SourceLocation::Current())
@@ -118,7 +118,7 @@ class BasicPersistent final : public PersistentBase,
template <typename U, typename MemberBarrierPolicy,
typename MemberWeaknessTag, typename MemberCheckingPolicy,
typename = std::enable_if_t<std::is_base_of<T, U>::value>>
- BasicPersistent(internal::BasicMember<U, MemberBarrierPolicy, // NOLINT
+ BasicPersistent(internal::BasicMember<U, MemberBarrierPolicy,
MemberWeaknessTag, MemberCheckingPolicy>
member,
const SourceLocation& loc = SourceLocation::Current())
@@ -181,7 +181,7 @@ class BasicPersistent final : public PersistentBase,
}
explicit operator bool() const { return Get(); }
- operator T*() const { return Get(); } // NOLINT
+ operator T*() const { return Get(); }
T* operator->() const { return Get(); }
T& operator*() const { return *Get(); }
diff --git a/deps/v8/include/cppgc/sentinel-pointer.h b/deps/v8/include/cppgc/sentinel-pointer.h
index f7915834e5..b049d1a2b3 100644
--- a/deps/v8/include/cppgc/sentinel-pointer.h
+++ b/deps/v8/include/cppgc/sentinel-pointer.h
@@ -14,7 +14,7 @@ namespace internal {
// sentinel is defined by the embedder.
struct SentinelPointer {
template <typename T>
- operator T*() const { // NOLINT
+ operator T*() const {
static constexpr intptr_t kSentinelValue = 1;
return reinterpret_cast<T*>(kSentinelValue);
}
diff --git a/deps/v8/include/cppgc/type-traits.h b/deps/v8/include/cppgc/type-traits.h
index 2b50a2164b..56cd55d61e 100644
--- a/deps/v8/include/cppgc/type-traits.h
+++ b/deps/v8/include/cppgc/type-traits.h
@@ -7,6 +7,7 @@
// This file should stay with minimal dependencies to allow embedder to check
// against Oilpan types without including any other parts.
+#include <cstddef>
#include <type_traits>
namespace cppgc {
@@ -164,6 +165,18 @@ struct IsUntracedMemberType : std::false_type {};
template <typename T>
struct IsUntracedMemberType<T, true> : std::true_type {};
+template <typename T>
+struct IsComplete {
+ private:
+ template <typename U, size_t = sizeof(U)>
+ static std::true_type IsSizeOfKnown(U*);
+ static std::false_type IsSizeOfKnown(...);
+
+ public:
+ static constexpr bool value =
+ decltype(IsSizeOfKnown(std::declval<T*>()))::value;
+};
+
} // namespace internal
/**
@@ -223,6 +236,12 @@ constexpr bool IsWeakMemberTypeV = internal::IsWeakMemberType<T>::value;
template <typename T>
constexpr bool IsWeakV = internal::IsWeak<T>::value;
+/**
+ * Value is true for types that are complete, and false otherwise.
+ */
+template <typename T>
+constexpr bool IsCompleteV = internal::IsComplete<T>::value;
+
} // namespace cppgc
#endif // INCLUDE_CPPGC_TYPE_TRAITS_H_
diff --git a/deps/v8/include/js_protocol.pdl b/deps/v8/include/js_protocol.pdl
index 666952f27b..9c0483ae70 100644
--- a/deps/v8/include/js_protocol.pdl
+++ b/deps/v8/include/js_protocol.pdl
@@ -267,7 +267,7 @@ domain Debugger
BreakpointId breakpointId
# Restarts particular call frame from the beginning.
- command restartFrame
+ deprecated command restartFrame
parameters
# Call frame identifier to evaluate on.
CallFrameId callFrameId
@@ -707,6 +707,8 @@ experimental domain HeapProfiler
# when the tracking is stopped.
optional boolean reportProgress
optional boolean treatGlobalObjectsAsRoots
+ # If true, numerical values are included in the snapshot
+ optional boolean captureNumericValue
command takeHeapSnapshot
parameters
@@ -714,6 +716,8 @@ experimental domain HeapProfiler
optional boolean reportProgress
# If true, a raw snapshot without artifical roots will be generated
optional boolean treatGlobalObjectsAsRoots
+ # If true, numerical values are included in the snapshot
+ optional boolean captureNumericValue
event addHeapSnapshotChunk
parameters
@@ -1563,7 +1567,10 @@ domain Runtime
# execution context. If omitted and `executionContextName` is not set,
# the binding is exposed to all execution contexts of the target.
# This parameter is mutually exclusive with `executionContextName`.
- optional ExecutionContextId executionContextId
+ # Deprecated in favor of `executionContextName` due to an unclear use case
+ # and bugs in implementation (crbug.com/1169639). `executionContextId` will be
+ # removed in the future.
+ deprecated optional ExecutionContextId executionContextId
# If specified, the binding is exposed to the executionContext with
# matching name, even for contexts created after the binding is added.
# See also `ExecutionContext.name` and `worldName` parameter to
diff --git a/deps/v8/include/v8-cppgc.h b/deps/v8/include/v8-cppgc.h
index fba35f71c9..745fb04347 100644
--- a/deps/v8/include/v8-cppgc.h
+++ b/deps/v8/include/v8-cppgc.h
@@ -28,6 +28,8 @@ namespace internal {
class CppHeap;
} // namespace internal
+class CustomSpaceStatisticsReceiver;
+
/**
* Describes how V8 wrapper objects maintain references to garbage-collected C++
* objects.
@@ -120,6 +122,16 @@ class V8_EXPORT CppHeap {
cppgc::HeapStatistics::DetailLevel detail_level);
/**
+ * Collects statistics for the given spaces and reports them to the receiver.
+ *
+ * \param custom_spaces a collection of custom space indicies.
+ * \param receiver an object that gets the results.
+ */
+ void CollectCustomSpaceStatisticsAtLastGC(
+ std::vector<cppgc::CustomSpaceIndex> custom_spaces,
+ std::unique_ptr<CustomSpaceStatisticsReceiver> receiver);
+
+ /**
* Enables a detached mode that allows testing garbage collection using
* `cppgc::testing` APIs. Once used, the heap cannot be attached to an
* `Isolate` anymore.
@@ -277,6 +289,26 @@ class V8_EXPORT JSHeapConsistency final {
const TracedReferenceBase& ref);
};
+/**
+ * Provided as input to `CppHeap::CollectCustomSpaceStatisticsAtLastGC()`.
+ *
+ * Its method is invoked with the results of the statistic collection.
+ */
+class CustomSpaceStatisticsReceiver {
+ public:
+ virtual ~CustomSpaceStatisticsReceiver() = default;
+ /**
+ * Reports the size of a space at the last GC. It is called for each space
+ * that was requested in `CollectCustomSpaceStatisticsAtLastGC()`.
+ *
+ * \param space_index The index of the space.
+ * \param bytes The total size of live objects in the space at the last GC.
+ * It is zero if there was no GC yet.
+ */
+ virtual void AllocatedBytes(cppgc::CustomSpaceIndex space_index,
+ size_t bytes) = 0;
+};
+
} // namespace v8
namespace cppgc {
diff --git a/deps/v8/include/v8-fast-api-calls.h b/deps/v8/include/v8-fast-api-calls.h
index f8b5acb093..cdf67decf6 100644
--- a/deps/v8/include/v8-fast-api-calls.h
+++ b/deps/v8/include/v8-fast-api-calls.h
@@ -70,8 +70,7 @@
* return GetInternalField<CustomEmbedderType,
* kV8EmbedderWrapperObjectIndex>(wrapper);
* }
- * static void FastMethod(v8::ApiObject receiver_obj, int param) {
- * v8::Object* v8_object = reinterpret_cast<v8::Object*>(&api_object);
+ * static void FastMethod(v8::Local<v8::Object> receiver_obj, int param) {
* CustomEmbedderType* receiver = static_cast<CustomEmbedderType*>(
* receiver_obj->GetAlignedPointerFromInternalField(
* kV8EmbedderWrapperObjectIndex));
@@ -190,10 +189,13 @@
#include <tuple>
#include <type_traits>
+#include "v8.h" // NOLINT(build/include_directory)
#include "v8config.h" // NOLINT(build/include_directory)
namespace v8 {
+class Isolate;
+
class CTypeInfo {
public:
enum class Type : uint8_t {
@@ -206,6 +208,8 @@ class CTypeInfo {
kFloat32,
kFloat64,
kV8Value,
+ kApiObject, // This will be deprecated once all users have
+ // migrated from v8::ApiObject to v8::Local<v8::Value>.
};
// kCallbackOptionsType is not part of the Type enum
@@ -310,7 +314,7 @@ class V8_EXPORT CFunction {
};
};
-struct ApiObject {
+struct V8_DEPRECATE_SOON("Use v8::Local<v8::Value> instead.") ApiObject {
uintptr_t address;
};
@@ -322,6 +326,14 @@ struct ApiObject {
*/
struct FastApiCallbackOptions {
/**
+ * Creates a new instance of FastApiCallbackOptions for testing purpose. The
+ * returned instance may be filled with mock data.
+ */
+ static FastApiCallbackOptions CreateForTesting(Isolate* isolate) {
+ return {false, {0}};
+ }
+
+ /**
* If the callback wants to signal an error condition or to perform an
* allocation, it must set options.fallback to true and do an early return
* from the fast method. Then V8 checks the value of options.fallback and if
@@ -336,8 +348,12 @@ struct FastApiCallbackOptions {
/**
* The `data` passed to the FunctionTemplate constructor, or `undefined`.
+ * `data_ptr` allows for default constructing FastApiCallbackOptions.
*/
- const ApiObject data;
+ union {
+ uintptr_t data_ptr;
+ v8::Value data;
+ };
};
namespace internal {
@@ -398,16 +414,22 @@ struct TypeInfoHelper {
static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \
};
-#define BASIC_C_TYPES(V) \
- V(void, kVoid) \
- V(bool, kBool) \
- V(int32_t, kInt32) \
- V(uint32_t, kUint32) \
- V(int64_t, kInt64) \
- V(uint64_t, kUint64) \
- V(float, kFloat32) \
- V(double, kFloat64) \
- V(ApiObject, kV8Value)
+#define BASIC_C_TYPES(V) \
+ V(void, kVoid) \
+ V(bool, kBool) \
+ V(int32_t, kInt32) \
+ V(uint32_t, kUint32) \
+ V(int64_t, kInt64) \
+ V(uint64_t, kUint64) \
+ V(float, kFloat32) \
+ V(double, kFloat64) \
+ V(ApiObject, kApiObject) \
+ V(v8::Local<v8::Value>, kV8Value) \
+ V(v8::Local<v8::Object>, kV8Value)
+
+// ApiObject was a temporary solution to wrap the pointer to the v8::Value.
+// Please use v8::Local<v8::Value> in new code for the arguments and
+// v8::Local<v8::Object> for the receiver, as ApiObject will be deprecated.
BASIC_C_TYPES(SPECIALIZE_GET_TYPE_INFO_HELPER_FOR)
diff --git a/deps/v8/include/v8-inspector.h b/deps/v8/include/v8-inspector.h
index a55518e459..852b39d725 100644
--- a/deps/v8/include/v8-inspector.h
+++ b/deps/v8/include/v8-inspector.h
@@ -105,8 +105,9 @@ class V8_EXPORT V8StackTrace {
virtual StringView topSourceURL() const = 0;
virtual int topLineNumber() const = 0;
virtual int topColumnNumber() const = 0;
- virtual StringView topScriptId() const = 0;
- virtual int topScriptIdAsInteger() const = 0;
+ virtual int topScriptId() const = 0;
+ V8_DEPRECATE_SOON("Use V8::StackTrace::topScriptId() instead.")
+ int topScriptIdAsInteger() const { return topScriptId(); }
virtual StringView topFunctionName() const = 0;
virtual ~V8StackTrace() = default;
@@ -130,6 +131,10 @@ class V8_EXPORT V8InspectorSession {
virtual v8::Local<v8::Value> get(v8::Local<v8::Context>) = 0;
virtual ~Inspectable() = default;
};
+ class V8_EXPORT CommandLineAPIScope {
+ public:
+ virtual ~CommandLineAPIScope() = default;
+ };
virtual void addInspectedObject(std::unique_ptr<Inspectable>) = 0;
// Dispatching protocol messages.
@@ -139,6 +144,9 @@ class V8_EXPORT V8InspectorSession {
virtual std::vector<std::unique_ptr<protocol::Schema::API::Domain>>
supportedDomains() = 0;
+ virtual std::unique_ptr<V8InspectorSession::CommandLineAPIScope>
+ initializeCommandLineAPIScope(int executionContextId) = 0;
+
// Debugger actions.
virtual void schedulePauseOnNextStatement(StringView breakReason,
StringView breakDetails) = 0;
diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h
index eb18f76504..f289149d8d 100644
--- a/deps/v8/include/v8-internal.h
+++ b/deps/v8/include/v8-internal.h
@@ -33,6 +33,7 @@ const int kApiSystemPointerSize = sizeof(void*);
const int kApiDoubleSize = sizeof(double);
const int kApiInt32Size = sizeof(int32_t);
const int kApiInt64Size = sizeof(int64_t);
+const int kApiSizetSize = sizeof(size_t);
// Tag information for HeapObject.
const int kHeapObjectTag = 1;
@@ -40,6 +41,13 @@ const int kWeakHeapObjectTag = 3;
const int kHeapObjectTagSize = 2;
const intptr_t kHeapObjectTagMask = (1 << kHeapObjectTagSize) - 1;
+// Tag information for fowarding pointers stored in object headers.
+// 0b00 at the lowest 2 bits in the header indicates that the map word is a
+// forwarding pointer.
+const int kForwardingTag = 0;
+const int kForwardingTagSize = 2;
+const intptr_t kForwardingTagMask = (1 << kForwardingTagSize) - 1;
+
// Tag information for Smi.
const int kSmiTag = 0;
const int kSmiTagSize = 1;
@@ -120,23 +128,28 @@ constexpr bool HeapSandboxIsEnabled() {
using ExternalPointer_t = Address;
-// If the heap sandbox is enabled, these tag values will be XORed with the
+// If the heap sandbox is enabled, these tag values will be ORed with the
// external pointers in the external pointer table to prevent use of pointers of
-// the wrong type.
-enum ExternalPointerTag : Address {
- kExternalPointerNullTag = static_cast<Address>(0ULL),
- kArrayBufferBackingStoreTag = static_cast<Address>(1ULL << 48),
- kTypedArrayExternalPointerTag = static_cast<Address>(2ULL << 48),
- kDataViewDataPointerTag = static_cast<Address>(3ULL << 48),
- kExternalStringResourceTag = static_cast<Address>(4ULL << 48),
- kExternalStringResourceDataTag = static_cast<Address>(5ULL << 48),
- kForeignForeignAddressTag = static_cast<Address>(6ULL << 48),
- kNativeContextMicrotaskQueueTag = static_cast<Address>(7ULL << 48),
- // TODO(v8:10391, saelo): Currently has to be zero so that raw zero values are
- // also nullptr
- kEmbedderDataSlotPayloadTag = static_cast<Address>(0ULL << 48),
+// the wrong type. When a pointer is loaded, it is ANDed with the inverse of the
+// expected type's tag. The tags are constructed in a way that guarantees that a
+// failed type check will result in one or more of the top bits of the pointer
+// to be set, rendering the pointer inacessible. This construction allows
+// performing the type check and removing GC marking bits from the pointer at
+// the same time.
+enum ExternalPointerTag : uint64_t {
+ kExternalPointerNullTag = 0x0000000000000000,
+ kArrayBufferBackingStoreTag = 0x00ff000000000000, // 0b000000011111111
+ kTypedArrayExternalPointerTag = 0x017f000000000000, // 0b000000101111111
+ kDataViewDataPointerTag = 0x01bf000000000000, // 0b000000110111111
+ kExternalStringResourceTag = 0x01df000000000000, // 0b000000111011111
+ kExternalStringResourceDataTag = 0x01ef000000000000, // 0b000000111101111
+ kForeignForeignAddressTag = 0x01f7000000000000, // 0b000000111110111
+ kNativeContextMicrotaskQueueTag = 0x01fb000000000000, // 0b000000111111011
+ kEmbedderDataSlotPayloadTag = 0x01fd000000000000, // 0b000000111111101
};
+constexpr uint64_t kExternalPointerTagMask = 0xffff000000000000;
+
#ifdef V8_31BIT_SMIS_ON_64BIT_ARCH
using PlatformSmiTagging = SmiTagging<kApiInt32Size>;
#else
@@ -177,6 +190,14 @@ V8_EXPORT bool ShouldThrowOnError(v8::internal::Isolate* isolate);
* depend on functions and constants defined here.
*/
class Internals {
+#ifdef V8_MAP_PACKING
+ V8_INLINE static constexpr internal::Address UnpackMapWord(
+ internal::Address mapword) {
+ // TODO(wenyuzhao): Clear header metadata.
+ return mapword ^ kMapWordXorMask;
+ }
+#endif
+
public:
// These values match non-compiler-dependent values defined within
// the implementation of v8.
@@ -209,8 +230,12 @@ class Internals {
kIsolateFastCCallCallerFpOffset + kApiSystemPointerSize;
static const int kIsolateFastApiCallTargetOffset =
kIsolateFastCCallCallerPcOffset + kApiSystemPointerSize;
- static const int kIsolateStackGuardOffset =
+ static const int kIsolateCageBaseOffset =
kIsolateFastApiCallTargetOffset + kApiSystemPointerSize;
+ static const int kIsolateLongTaskStatsCounterOffset =
+ kIsolateCageBaseOffset + kApiSystemPointerSize;
+ static const int kIsolateStackGuardOffset =
+ kIsolateLongTaskStatsCounterOffset + kApiSizetSize;
static const int kIsolateRootsOffset =
kIsolateStackGuardOffset + 7 * kApiSystemPointerSize;
@@ -253,6 +278,17 @@ class Internals {
// incremental GC once the external memory reaches this limit.
static constexpr int kExternalAllocationSoftLimit = 64 * 1024 * 1024;
+#ifdef V8_MAP_PACKING
+ static const uintptr_t kMapWordMetadataMask = 0xffffULL << 48;
+ // The lowest two bits of mapwords are always `0b10`
+ static const uintptr_t kMapWordSignature = 0b10;
+ // XORing a (non-compressed) map with this mask ensures that the two
+ // low-order bits are 0b10. The 0 at the end makes this look like a Smi,
+ // although real Smis have all lower 32 bits unset. We only rely on these
+ // values passing as Smis in very few places.
+ static const int kMapWordXorMask = 0b11;
+#endif
+
V8_EXPORT static void CheckInitializedImpl(v8::Isolate* isolate);
V8_INLINE static void CheckInitialized(v8::Isolate* isolate) {
#ifdef V8_ENABLE_CHECKS
@@ -279,6 +315,9 @@ class Internals {
V8_INLINE static int GetInstanceType(const internal::Address obj) {
typedef internal::Address A;
A map = ReadTaggedPointerField(obj, kHeapObjectMapOffset);
+#ifdef V8_MAP_PACKING
+ map = UnpackMapWord(map);
+#endif
return ReadRawField<uint16_t>(map, kMapInstanceTypeOffset);
}
@@ -329,6 +368,12 @@ class Internals {
return *reinterpret_cast<void* const*>(addr);
}
+ V8_INLINE static void IncrementLongTasksStatsCounter(v8::Isolate* isolate) {
+ internal::Address addr = reinterpret_cast<internal::Address>(isolate) +
+ kIsolateLongTaskStatsCounterOffset;
+ ++(*reinterpret_cast<size_t*>(addr));
+ }
+
V8_INLINE static internal::Address* GetRoot(v8::Isolate* isolate, int index) {
internal::Address addr = reinterpret_cast<internal::Address>(isolate) +
kIsolateRootsOffset +
diff --git a/deps/v8/include/v8-metrics.h b/deps/v8/include/v8-metrics.h
index 0217f40d63..2404cc0a4c 100644
--- a/deps/v8/include/v8-metrics.h
+++ b/deps/v8/include/v8-metrics.h
@@ -5,7 +5,8 @@
#ifndef V8_METRICS_H_
#define V8_METRICS_H_
-#include "v8.h" // NOLINT(build/include_directory)
+#include "v8-internal.h" // NOLINT(build/include_directory)
+#include "v8.h" // NOLINT(build/include_directory)
namespace v8 {
namespace metrics {
@@ -183,6 +184,32 @@ class V8_EXPORT Recorder {
static ContextId GetContextId(Local<Context> context);
};
+/**
+ * Experimental API intended for the LongTasks UKM (crbug.com/1173527).
+ * The Reset() method should be called at the start of a potential
+ * long task. The Get() method returns durations of V8 work that
+ * happened during the task.
+ *
+ * This API is experimental and may be removed/changed in the future.
+ */
+struct V8_EXPORT LongTaskStats {
+ /**
+ * Resets durations of V8 work for the new task.
+ */
+ V8_INLINE static void Reset(Isolate* isolate) {
+ v8::internal::Internals::IncrementLongTasksStatsCounter(isolate);
+ }
+
+ /**
+ * Returns durations of V8 work that happened since the last Reset().
+ */
+ static LongTaskStats Get(Isolate* isolate);
+
+ int64_t gc_full_atomic_wall_clock_duration_us = 0;
+ int64_t gc_full_incremental_wall_clock_duration_us = 0;
+ int64_t gc_young_wall_clock_duration_us = 0;
+};
+
} // namespace metrics
} // namespace v8
diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h
index 85d3f8a482..9a40cfcf30 100644
--- a/deps/v8/include/v8-profiler.h
+++ b/deps/v8/include/v8-profiler.h
@@ -289,8 +289,8 @@ class V8_EXPORT CpuProfilingOptions {
* interval, set via SetSamplingInterval(). If
* zero, the sampling interval will be equal to
* the profiler's sampling interval.
- * \param filter_context Deprecated option to filter by context, currently a
- * no-op.
+ * \param filter_context If specified, profiles will only contain frames
+ * using this context. Other frames will be elided.
*/
CpuProfilingOptions(
CpuProfilingMode mode = kLeafNodeLineNumbers,
@@ -304,9 +304,13 @@ class V8_EXPORT CpuProfilingOptions {
private:
friend class internal::CpuProfile;
+ bool has_filter_context() const { return !filter_context_.IsEmpty(); }
+ void* raw_filter_context() const;
+
CpuProfilingMode mode_;
unsigned max_samples_;
int sampling_interval_us_;
+ CopyablePersistentTraits<Context>::CopyablePersistent filter_context_;
};
/**
@@ -492,7 +496,7 @@ class V8_EXPORT HeapGraphNode {
/**
* An interface for exporting data from V8, using "push" model.
*/
-class V8_EXPORT OutputStream { // NOLINT
+class V8_EXPORT OutputStream {
public:
enum WriteResult {
kContinue = 0,
@@ -519,7 +523,6 @@ class V8_EXPORT OutputStream { // NOLINT
}
};
-
/**
* HeapSnapshots record the state of the JS heap at some moment.
*/
@@ -586,7 +589,7 @@ class V8_EXPORT HeapSnapshot {
* An interface for reporting progress and controlling long-running
* activities.
*/
-class V8_EXPORT ActivityControl { // NOLINT
+class V8_EXPORT ActivityControl {
public:
enum ControlOption {
kContinue = 0,
@@ -600,7 +603,6 @@ class V8_EXPORT ActivityControl { // NOLINT
virtual ControlOption ReportProgressValue(int done, int total) = 0;
};
-
/**
* AllocationProfile is a sampled profile of allocations done by the program.
* This is structured as a call-graph.
@@ -900,7 +902,8 @@ class V8_EXPORT HeapProfiler {
const HeapSnapshot* TakeHeapSnapshot(
ActivityControl* control = nullptr,
ObjectNameResolver* global_object_name_resolver = nullptr,
- bool treat_global_objects_as_roots = true);
+ bool treat_global_objects_as_roots = true,
+ bool capture_numeric_value = false);
/**
* Starts tracking of heap objects population statistics. After calling
diff --git a/deps/v8/include/v8-util.h b/deps/v8/include/v8-util.h
index 89ec4f6a78..8e4d66153d 100644
--- a/deps/v8/include/v8-util.h
+++ b/deps/v8/include/v8-util.h
@@ -43,7 +43,7 @@ class StdMapTraits {
static bool Empty(Impl* impl) { return impl->empty(); }
static size_t Size(Impl* impl) { return impl->size(); }
- static void Swap(Impl& a, Impl& b) { std::swap(a, b); } // NOLINT
+ static void Swap(Impl& a, Impl& b) { std::swap(a, b); }
static Iterator Begin(Impl* impl) { return impl->begin(); }
static Iterator End(Impl* impl) { return impl->end(); }
static K Key(Iterator it) { return it->first; }
diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h
index 4bdb66b2bf..1cf4d7e284 100644
--- a/deps/v8/include/v8-version.h
+++ b/deps/v8/include/v8-version.h
@@ -9,9 +9,9 @@
// NOTE these macros are used by some of the tool scripts and the build
// system so their names cannot be changed without changing the scripts.
#define V8_MAJOR_VERSION 9
-#define V8_MINOR_VERSION 1
-#define V8_BUILD_NUMBER 269
-#define V8_PATCH_LEVEL 38
+#define V8_MINOR_VERSION 2
+#define V8_BUILD_NUMBER 230
+#define V8_PATCH_LEVEL 21
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h
index ba87e57a1e..c4720ca695 100644
--- a/deps/v8/include/v8.h
+++ b/deps/v8/include/v8.h
@@ -596,7 +596,7 @@ template <class T> class PersistentBase {
*/
V8_INLINE uint16_t WrapperClassId() const;
- PersistentBase(const PersistentBase& other) = delete; // NOLINT
+ PersistentBase(const PersistentBase& other) = delete;
void operator=(const PersistentBase&) = delete;
private:
@@ -708,7 +708,7 @@ template <class T, class M> class Persistent : public PersistentBase<T> {
return *this;
}
template <class S, class M2>
- V8_INLINE Persistent& operator=(const Persistent<S, M2>& that) { // NOLINT
+ V8_INLINE Persistent& operator=(const Persistent<S, M2>& that) {
Copy(that);
return *this;
}
@@ -723,7 +723,7 @@ template <class T, class M> class Persistent : public PersistentBase<T> {
// TODO(dcarney): this is pretty useless, fix or remove
template <class S>
- V8_INLINE static Persistent<T>& Cast(const Persistent<S>& that) { // NOLINT
+ V8_INLINE static Persistent<T>& Cast(const Persistent<S>& that) {
#ifdef V8_ENABLE_CHECKS
// If we're going to perform the type check then we have to check
// that the handle isn't empty before doing the checked cast.
@@ -734,7 +734,7 @@ template <class T, class M> class Persistent : public PersistentBase<T> {
// TODO(dcarney): this is pretty useless, fix or remove
template <class S>
- V8_INLINE Persistent<S>& As() const { // NOLINT
+ V8_INLINE Persistent<S>& As() const {
return Persistent<S>::Cast(*this);
}
@@ -803,7 +803,7 @@ class Global : public PersistentBase<T> {
/**
* Pass allows returning uniques from functions, etc.
*/
- Global Pass() { return static_cast<Global&&>(*this); } // NOLINT
+ Global Pass() { return static_cast<Global&&>(*this); }
/*
* For compatibility with Chromium's base::Bind (base::Passed).
@@ -905,8 +905,8 @@ class TracedReferenceBase {
* The exact semantics are:
* - Tracing garbage collections use |v8::EmbedderHeapTracer| or cppgc.
* - Non-tracing garbage collections refer to
- * |v8::EmbedderHeapTracer::IsRootForNonTracingGC()| whether the handle should
- * be treated as root or not.
+ * |v8::EmbedderRootsHandler::IsRoot()| whether the handle should
+ * be treated as root or not.
*
* Note that the base class cannot be instantiated itself. Choose from
* - TracedGlobal
@@ -1427,9 +1427,7 @@ class ScriptOriginOptions {
*/
class ScriptOrigin {
public:
-#if defined(_MSC_VER) && _MSC_VER >= 1910 /* Disable on VS2015 */
V8_DEPRECATE_SOON("Use constructor with primitive C++ types")
-#endif
V8_INLINE explicit ScriptOrigin(
Local<Value> resource_name, Local<Integer> resource_line_offset,
Local<Integer> resource_column_offset,
@@ -1440,9 +1438,7 @@ class ScriptOrigin {
Local<Boolean> is_wasm = Local<Boolean>(),
Local<Boolean> is_module = Local<Boolean>(),
Local<PrimitiveArray> host_defined_options = Local<PrimitiveArray>());
-#if defined(_MSC_VER) && _MSC_VER >= 1910 /* Disable on VS2015 */
V8_DEPRECATE_SOON("Use constructor that takes an isolate")
-#endif
V8_INLINE explicit ScriptOrigin(
Local<Value> resource_name, int resource_line_offset = 0,
int resource_column_offset = 0,
@@ -1653,7 +1649,7 @@ class V8_EXPORT Module : public Data {
*/
int GetIdentityHash() const;
- using ResolveCallback =
+ using ResolveCallback V8_DEPRECATE_SOON("Use ResolveModuleCallback") =
MaybeLocal<Module> (*)(Local<Context> context, Local<String> specifier,
Local<Module> referrer);
using ResolveModuleCallback = MaybeLocal<Module> (*)(
@@ -1678,10 +1674,12 @@ class V8_EXPORT Module : public Data {
/**
* Evaluates the module and its dependencies.
*
- * If status is kInstantiated, run the module's code. On success, set status
- * to kEvaluated and return the completion value; on failure, set status to
- * kErrored and propagate the thrown exception (which is then also available
- * via |GetException|).
+ * If status is kInstantiated, run the module's code and return a Promise
+ * object. On success, set status to kEvaluated and resolve the Promise with
+ * the completion value; on failure, set status to kErrored and reject the
+ * Promise with the error.
+ *
+ * If IsGraphAsync() is false, the returned Promise is settled.
*/
V8_WARN_UNUSED_RESULT MaybeLocal<Value> Evaluate(Local<Context> context);
@@ -1942,11 +1940,9 @@ class V8_EXPORT ScriptCompiler {
public:
enum Encoding { ONE_BYTE, TWO_BYTE, UTF8, WINDOWS_1252 };
-#if defined(_MSC_VER) && _MSC_VER >= 1910 /* Disable on VS2015 */
V8_DEPRECATED(
"This class takes ownership of source_stream, so use the constructor "
"taking a unique_ptr to make these semantics clearer")
-#endif
StreamedSource(ExternalSourceStream* source_stream, Encoding encoding);
StreamedSource(std::unique_ptr<ExternalSourceStream> source_stream,
Encoding encoding);
@@ -2430,7 +2426,7 @@ struct SampleInfo {
StateTag vm_state; // Current VM state.
void* external_callback_entry; // External callback address if VM is
// executing an external callback.
- void* top_context; // Incumbent native context address.
+ void* context; // Incumbent native context address.
};
struct MemoryRange {
@@ -3282,7 +3278,7 @@ class V8_EXPORT String : public Name {
*/
bool IsExternalOneByte() const;
- class V8_EXPORT ExternalStringResourceBase { // NOLINT
+ class V8_EXPORT ExternalStringResourceBase {
public:
virtual ~ExternalStringResourceBase() = default;
@@ -3632,10 +3628,9 @@ class V8_EXPORT Symbol : public Name {
/**
* Returns the description string of the symbol, or undefined if none.
*/
+ V8_DEPRECATE_SOON("Use Symbol::Description(isolate)")
Local<Value> Description() const;
-
- V8_DEPRECATED("Use Symbol::Description()")
- Local<Value> Name() const { return Description(); }
+ Local<Value> Description(Isolate* isolate) const;
/**
* Create a symbol. If description is not empty, it will be used as the
@@ -3986,8 +3981,7 @@ class V8_EXPORT Object : public Value {
//
// Returns true on success.
V8_WARN_UNUSED_RESULT Maybe<bool> DefineProperty(
- Local<Context> context, Local<Name> key,
- PropertyDescriptor& descriptor); // NOLINT(runtime/references)
+ Local<Context> context, Local<Name> key, PropertyDescriptor& descriptor);
V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
Local<Value> key);
@@ -4777,17 +4771,6 @@ class V8_EXPORT Function : public Object {
Local<Value> GetDebugName() const;
/**
- * User-defined name assigned to the "displayName" property of this function.
- * Used to facilitate debugging and profiling of JavaScript code.
- */
- V8_DEPRECATED(
- "Use v8::Object::Get() instead to look up \"displayName\". "
- "V8 and DevTools no longer use \"displayName\" in stack "
- "traces, but the standard \"name\" property. "
- "See http://crbug.com/1177685.")
- Local<Value> GetDisplayName() const;
-
- /**
* Returns zero based line number of function body and
* kLineOffsetNotFound if no information available.
*/
@@ -5364,7 +5347,7 @@ class V8_EXPORT ArrayBuffer : public Object {
* Note that it is unsafe to call back into V8 from any of the allocator
* functions.
*/
- class V8_EXPORT Allocator { // NOLINT
+ class V8_EXPORT Allocator {
public:
virtual ~Allocator() = default;
@@ -6516,6 +6499,15 @@ class V8_EXPORT FunctionTemplate : public Template {
SideEffectType side_effect_type = SideEffectType::kHasSideEffect,
const CFunction* c_function = nullptr);
+ /** Creates a function template for multiple overloaded fast API calls.*/
+ static Local<FunctionTemplate> NewWithCFunctionOverloads(
+ Isolate* isolate, FunctionCallback callback = nullptr,
+ Local<Value> data = Local<Value>(),
+ Local<Signature> signature = Local<Signature>(), int length = 0,
+ ConstructorBehavior behavior = ConstructorBehavior::kAllow,
+ SideEffectType side_effect_type = SideEffectType::kHasSideEffect,
+ const MemorySpan<const CFunction>& c_function_overloads = {});
+
/**
* Creates a function template backed/cached by a private property.
*/
@@ -6547,7 +6539,7 @@ class V8_EXPORT FunctionTemplate : public Template {
void SetCallHandler(
FunctionCallback callback, Local<Value> data = Local<Value>(),
SideEffectType side_effect_type = SideEffectType::kHasSideEffect,
- const CFunction* c_function = nullptr);
+ const MemorySpan<const CFunction>& c_function_overloads = {});
/** Set the predefined length property for the FunctionTemplate. */
void SetLength(int length);
@@ -6608,6 +6600,15 @@ class V8_EXPORT FunctionTemplate : public Template {
*/
bool HasInstance(Local<Value> object);
+ /**
+ * Returns true if the given value is an API object that was constructed by an
+ * instance of this function template (without checking for inheriting
+ * function templates).
+ *
+ * This is an experimental feature and may still change significantly.
+ */
+ bool IsLeafTemplateForApiObject(v8::Local<v8::Value> value) const;
+
V8_INLINE static FunctionTemplate* Cast(Data* data);
private:
@@ -7041,7 +7042,7 @@ class V8_EXPORT AccessorSignature : public Data {
/**
* Ignore
*/
-class V8_EXPORT Extension { // NOLINT
+class V8_EXPORT Extension {
public:
// Note that the strings passed into this constructor must live as long
// as the Extension itself.
@@ -7143,6 +7144,11 @@ class V8_EXPORT ResourceConstraints {
/**
* The amount of virtual memory reserved for generated code. This is relevant
* for 64-bit architectures that rely on code range for calls in code.
+ *
+ * When V8_COMPRESS_POINTERS_IN_SHARED_CAGE is defined, there is a shared
+ * process-wide code range that is lazily initialized. This value is used to
+ * configure that shared code range when the first Isolate is
+ * created. Subsequent Isolates ignore this value.
*/
size_t code_range_size_in_bytes() const { return code_range_size_; }
void set_code_range_size_in_bytes(size_t limit) { code_range_size_ = limit; }
@@ -7287,7 +7293,8 @@ using CallCompletedCallback = void (*)(Isolate*);
* fails (e.g. due to stack overflow), the embedder must propagate
* that exception by returning an empty MaybeLocal.
*/
-using HostImportModuleDynamicallyCallback =
+using HostImportModuleDynamicallyCallback V8_DEPRECATE_SOON(
+ "Use HostImportModuleDynamicallyWithImportAssertionsCallback instead") =
MaybeLocal<Promise> (*)(Local<Context> context,
Local<ScriptOrModule> referrer,
Local<String> specifier);
@@ -7592,6 +7599,10 @@ using WasmSimdEnabledCallback = bool (*)(Local<Context> context);
// --- Callback for checking if WebAssembly exceptions are enabled ---
using WasmExceptionsEnabledCallback = bool (*)(Local<Context> context);
+// --- Callback for checking if the SharedArrayBuffer constructor is enabled ---
+using SharedArrayBufferConstructorEnabledCallback =
+ bool (*)(Local<Context> context);
+
// --- Garbage Collection Callbacks ---
/**
@@ -7913,17 +7924,16 @@ using UnhandledExceptionCallback =
/**
* Interface for iterating through all external resources in the heap.
*/
-class V8_EXPORT ExternalResourceVisitor { // NOLINT
+class V8_EXPORT ExternalResourceVisitor {
public:
virtual ~ExternalResourceVisitor() = default;
virtual void VisitExternalString(Local<String> string) {}
};
-
/**
* Interface for iterating through all the persistent handles in the heap.
*/
-class V8_EXPORT PersistentHandleVisitor { // NOLINT
+class V8_EXPORT PersistentHandleVisitor {
public:
virtual ~PersistentHandleVisitor() = default;
virtual void VisitPersistentHandle(Persistent<Value>* value,
@@ -7941,6 +7951,45 @@ class V8_EXPORT PersistentHandleVisitor { // NOLINT
enum class MemoryPressureLevel { kNone, kModerate, kCritical };
/**
+ * Handler for embedder roots on non-unified heap garbage collections.
+ */
+class V8_EXPORT EmbedderRootsHandler {
+ public:
+ virtual ~EmbedderRootsHandler() = default;
+
+ /**
+ * Returns true if the TracedGlobal handle should be considered as root for
+ * the currently running non-tracing garbage collection and false otherwise.
+ * The default implementation will keep all TracedGlobal references as roots.
+ *
+ * If this returns false, then V8 may decide that the object referred to by
+ * such a handle is reclaimed. In that case:
+ * - No action is required if handles are used with destructors, i.e., by just
+ * using |TracedGlobal|.
+ * - When run without destructors, i.e., by using |TracedReference|, V8 calls
+ * |ResetRoot|.
+ *
+ * Note that the |handle| is different from the handle that the embedder holds
+ * for retaining the object. The embedder may use |WrapperClassId()| to
+ * distinguish cases where it wants handles to be treated as roots from not
+ * being treated as roots.
+ */
+ virtual bool IsRoot(const v8::TracedReference<v8::Value>& handle) = 0;
+ virtual bool IsRoot(const v8::TracedGlobal<v8::Value>& handle) = 0;
+
+ /**
+ * Used in combination with |IsRoot|. Called by V8 when an
+ * object that is backed by a handle is reclaimed by a non-tracing garbage
+ * collection. It is up to the embedder to reset the original handle.
+ *
+ * Note that the |handle| is different from the handle that the embedder holds
+ * for retaining the object. It is up to the embedder to find the original
+ * handle via the object or class id.
+ */
+ virtual void ResetRoot(const v8::TracedReference<v8::Value>& handle) = 0;
+};
+
+/**
* Interface for tracing through the embedder heap. During a V8 garbage
* collection, V8 collects hidden fields of all potential wrappers, and at the
* end of its marking phase iterates the collection and asks the embedder to
@@ -8002,6 +8051,9 @@ class V8_EXPORT EmbedderHeapTracer {
/**
* Called by the embedder to notify V8 of an empty execution stack.
*/
+ V8_DEPRECATE_SOON(
+ "This call only optimized internal caches which V8 is able to figure out "
+ "on its own now.")
void NotifyEmptyEmbedderStack();
/**
@@ -8065,34 +8117,14 @@ class V8_EXPORT EmbedderHeapTracer {
void FinalizeTracing();
/**
- * Returns true if the TracedGlobal handle should be considered as root for
- * the currently running non-tracing garbage collection and false otherwise.
- * The default implementation will keep all TracedGlobal references as roots.
- *
- * If this returns false, then V8 may decide that the object referred to by
- * such a handle is reclaimed. In that case:
- * - No action is required if handles are used with destructors, i.e., by just
- * using |TracedGlobal|.
- * - When run without destructors, i.e., by using
- * |TracedReference|, V8 calls |ResetHandleInNonTracingGC|.
- *
- * Note that the |handle| is different from the handle that the embedder holds
- * for retaining the object. The embedder may use |WrapperClassId()| to
- * distinguish cases where it wants handles to be treated as roots from not
- * being treated as roots.
+ * See documentation on EmbedderRootsHandler.
*/
virtual bool IsRootForNonTracingGC(
const v8::TracedReference<v8::Value>& handle);
virtual bool IsRootForNonTracingGC(const v8::TracedGlobal<v8::Value>& handle);
/**
- * Used in combination with |IsRootForNonTracingGC|. Called by V8 when an
- * object that is backed by a handle is reclaimed by a non-tracing garbage
- * collection. It is up to the embedder to reset the original handle.
- *
- * Note that the |handle| is different from the handle that the embedder holds
- * for retaining the object. It is up to the embedder to find the original
- * handle via the object or class id.
+ * See documentation on EmbedderRootsHandler.
*/
virtual void ResetHandleInNonTracingGC(
const v8::TracedReference<v8::Value>& handle);
@@ -8551,6 +8583,7 @@ class V8_EXPORT Isolate {
kWasmBulkMemory = 109, // Unused.
kWasmMultiValue = 110,
kWasmExceptionHandling = 111,
+ kInvalidatedMegaDOMProtector = 112,
// If you add new values here, you'll also need to update Chromium's:
// web_feature.mojom, use_counter_callback.cc, and enums.xml. V8 changes to
@@ -8887,6 +8920,17 @@ class V8_EXPORT Isolate {
Local<Context> GetIncumbentContext();
/**
+ * Schedules a v8::Exception::Error with the given message.
+ * See ThrowException for more details. Templatized to provide compile-time
+ * errors in case of too long strings (see v8::String::NewFromUtf8Literal).
+ */
+ template <int N>
+ Local<Value> ThrowError(const char (&message)[N]) {
+ return ThrowError(String::NewFromUtf8Literal(this, message));
+ }
+ Local<Value> ThrowError(Local<String> message);
+
+ /**
* Schedules an exception to be thrown when returning to JavaScript. When an
* exception has been scheduled it is illegal to invoke any JavaScript
* operation; the caller must return immediately and only after the exception
@@ -8931,6 +8975,18 @@ class V8_EXPORT Isolate {
EmbedderHeapTracer* GetEmbedderHeapTracer();
/**
+ * Sets an embedder roots handle that V8 should consider when performing
+ * non-unified heap garbage collections.
+ *
+ * Using only EmbedderHeapTracer automatically sets up a default handler.
+ * The intended use case is for setting a custom handler after invoking
+ * `AttachCppHeap()`.
+ *
+ * V8 does not take ownership of the handler.
+ */
+ void SetEmbedderRootsHandler(EmbedderRootsHandler* handler);
+
+ /**
* Attaches a managed C++ heap as an extension to the JavaScript heap. The
* embedder maintains ownership of the CppHeap. At most one C++ heap can be
* attached to V8.
@@ -9499,6 +9555,9 @@ class V8_EXPORT Isolate {
void SetWasmExceptionsEnabledCallback(WasmExceptionsEnabledCallback callback);
+ void SetSharedArrayBufferConstructorEnabledCallback(
+ SharedArrayBufferConstructorEnabledCallback callback);
+
/**
* This function can be called by the embedder to signal V8 that the dynamic
* enabling of features has finished. V8 can now set up dynamically added
@@ -9873,6 +9932,9 @@ class V8_EXPORT V8 {
* Notifies V8 that the process is cross-origin-isolated, which enables
* defining the SharedArrayBuffer function on the global object of Contexts.
*/
+ V8_DEPRECATED(
+ "Use the command line argument --enable-sharedarraybuffer-per-context "
+ "together with SetSharedArrayBufferConstructorEnabledCallback")
static void SetIsCrossOriginIsolated();
private:
diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h
index acd34d7a1f..c1bb691f87 100644
--- a/deps/v8/include/v8config.h
+++ b/deps/v8/include/v8config.h
@@ -310,10 +310,6 @@ path. Add it with -I<path> to the command line
// GCC doc: https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
# define V8_HAS_COMPUTED_GOTO 1
-// Whether constexpr has full C++14 semantics, in particular that non-constexpr
-// code is allowed as long as it's not executed for any constexpr instantiation.
-# define V8_HAS_CXX14_CONSTEXPR 1
-
#elif defined(__GNUC__)
# define V8_CC_GNU 1
@@ -336,7 +332,10 @@ path. Add it with -I<path> to the command line
# define V8_HAS_ATTRIBUTE_UNUSED 1
# define V8_HAS_ATTRIBUTE_VISIBILITY 1
# define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT (!V8_CC_INTEL)
-# define V8_HAS_CPP_ATTRIBUTE_NODISCARD (V8_HAS_CPP_ATTRIBUTE(nodiscard))
+
+// [[nodiscard]] does not work together with with
+// __attribute__((visibility(""))) on GCC 7.4 which is why there is no define
+// for V8_HAS_CPP_ATTRIBUTE_NODISCARD. See https://crbug.com/v8/11707.
# define V8_HAS_BUILTIN_ASSUME_ALIGNED 1
# define V8_HAS_BUILTIN_CLZ 1
@@ -348,11 +347,6 @@ path. Add it with -I<path> to the command line
// GCC doc: https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
#define V8_HAS_COMPUTED_GOTO 1
-// Whether constexpr has full C++14 semantics, in particular that non-constexpr
-// code is allowed as long as it's not executed for any constexpr instantiation.
-// GCC only supports this since version 6.
-# define V8_HAS_CXX14_CONSTEXPR (V8_GNUC_PREREQ(6, 0, 0))
-
#endif
#if defined(_MSC_VER)
diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl
index c87192896c..9c0c933cda 100644
--- a/deps/v8/infra/mb/mb_config.pyl
+++ b/deps/v8/infra/mb/mb_config.pyl
@@ -65,6 +65,7 @@
'V8 Linux64 - debug builder': 'debug_x64',
'V8 Linux64 - dict tracking - debug - builder': 'debug_x64_dict_tracking_trybot',
'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom',
+ 'V8 Linux64 - heap sandbox - debug - builder': 'debug_x64_heap_sandbox',
'V8 Linux64 - internal snapshot': 'release_x64_internal',
'V8 Linux64 - debug - header includes': 'debug_x64_header_includes',
'V8 Linux64 - shared': 'release_x64_shared_verify_heap',
@@ -101,6 +102,7 @@
# FYI.
'V8 iOS - sim': 'release_x64_ios_simulator',
'V8 Linux64 - debug - perfetto - builder': 'debug_x64_perfetto',
+ 'V8 Linux64 - debug - single generation - builder': 'debug_x64_single_generation',
'V8 Linux64 - pointer compression': 'release_x64_pointer_compression',
'V8 Linux64 - pointer compression without dchecks':
'release_x64_pointer_compression_without_dchecks',
@@ -136,9 +138,13 @@
'V8 Clusterfuzz Linux64 - debug builder': 'debug_x64',
'V8 Clusterfuzz Linux64 ASAN no inline - release builder':
'release_x64_asan_symbolized_verify_heap',
+ 'V8 Clusterfuzz Linux ASAN no inline - release builder':
+ 'release_x86_asan_symbolized_verify_heap',
'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan',
+ 'V8 Clusterfuzz Linux ASAN - debug builder': 'debug_x86_asan',
'V8 Clusterfuzz Linux64 ASAN arm64 - debug builder':
'debug_simulate_arm64_asan',
+ 'V8 Clusterfuzz Linux - debug builder': 'debug_x86',
'V8 Clusterfuzz Linux ASAN arm - debug builder':
'debug_simulate_arm_asan',
'V8 Clusterfuzz Linux64 CFI - release builder':
@@ -202,19 +208,23 @@
'v8_linux_gcc_compile_rel': 'release_x86_gcc_minimal_symbols',
'v8_linux_gcc_rel_ng': 'release_x86_gcc_minimal_symbols',
'v8_linux_shared_compile_rel': 'release_x86_shared_verify_heap',
+ 'v8_linux_vtunejit': 'debug_x86_vtunejit',
'v8_linux64_arm64_pointer_compression_rel_ng':
'release_simulate_arm64_pointer_compression',
'v8_linux64_dbg_ng': 'debug_x64_trybot',
'v8_linux64_dict_tracking_dbg_ng': 'debug_x64_dict_tracking_trybot',
'v8_linux64_gc_stress_custom_snapshot_dbg_ng': 'debug_x64_trybot_custom',
'v8_linux64_gcc_compile_dbg': 'debug_x64_gcc',
+ 'v8_linux64_gcov_coverage': 'release_x64_gcc_coverage',
'v8_linux64_header_includes_dbg': 'debug_x64_header_includes',
+ 'v8_linux64_heap_sandbox_dbg_ng': 'debug_x64_heap_sandbox',
'v8_linux64_fyi_rel_ng': 'release_x64_test_features_trybot',
'v8_linux64_nodcheck_rel_ng': 'release_x64',
'v8_linux64_perfetto_dbg_ng': 'debug_x64_perfetto',
'v8_linux64_pointer_compression_rel_ng': 'release_x64_pointer_compression',
'v8_linux64_rel_ng': 'release_x64_test_features_trybot',
'v8_linux64_shared_compile_rel': 'release_x64_shared_verify_heap',
+ 'v8_linux64_single_generation_dbg_ng': 'debug_x64_single_generation',
'v8_linux64_no_wasm_compile_rel': 'release_x64_webassembly_disabled',
'v8_linux64_verify_csa_rel_ng': 'release_x64_verify_csa',
'v8_linux64_asan_rel_ng': 'release_x64_asan_minimal_symbols',
@@ -464,8 +474,9 @@
'release_x64_cfi_clusterfuzz': [
'release_bot', 'x64', 'cfi_clusterfuzz'],
'release_x64_fuzzilli': [
- 'release_bot', 'x64', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_heap',
- 'v8_verify_csa', 'v8_enable_verify_predictable', 'fuzzilli'],
+ 'release_bot', 'x64', 'dcheck_always_on', 'v8_enable_slow_dchecks',
+ 'v8_verify_heap', 'v8_verify_csa', 'v8_enable_verify_predictable',
+ 'fuzzilli'],
'release_x64_msvc': [
'release_bot_no_goma', 'x64', 'minimal_symbols', 'msvc'],
'release_x64_correctness_fuzzer' : [
@@ -475,8 +486,8 @@
'release_x64_fuchsia_trybot': [
'release_trybot', 'x64', 'fuchsia'],
'release_x64_gcc_coverage': [
- 'release_bot_no_goma', 'x64', 'coverage', 'gcc', 'no_custom_libcxx',
- 'no_sysroot'],
+ 'release_bot_no_goma', 'x64', 'coverage', 'gcc', 'lld',
+ 'no_custom_libcxx', 'no_sysroot'],
'release_x64_ios_simulator': [
'release_bot', 'x64', 'ios_simulator'],
'release_x64_internal': [
@@ -529,13 +540,17 @@
'debug_x64_fuchsia': [
'debug_bot', 'x64', 'fuchsia'],
'debug_x64_gcc': [
- 'debug_bot_no_goma', 'x64', 'gcc', 'v8_check_header_includes'],
+ 'debug_bot_no_goma', 'x64', 'gcc', 'lld', 'v8_check_header_includes'],
'debug_x64_header_includes': [
'debug_bot', 'x64', 'v8_check_header_includes'],
+ 'debug_x64_heap_sandbox': [
+ 'debug_bot', 'x64', 'v8_enable_heap_sandbox'],
'debug_x64_minimal_symbols': [
'debug_bot', 'x64', 'minimal_symbols'],
'debug_x64_perfetto': [
'debug_bot', 'x64', 'perfetto'],
+ 'debug_x64_single_generation': [
+ 'debug_bot', 'x64', 'v8_enable_single_generation'],
'debug_x64_trybot': [
'debug_trybot', 'x64'],
'debug_x64_dict_tracking_trybot': [
@@ -548,6 +563,8 @@
# Debug configs for x86.
'debug_x86': [
'debug_bot', 'x86'],
+ 'debug_x86_asan': [
+ 'debug_bot', 'x86', 'asan', 'lsan'],
'debug_x86_minimal_symbols': [
'debug_bot', 'x86', 'minimal_symbols'],
'debug_x86_no_i18n': [
@@ -560,10 +577,13 @@
'debug', 'x86', 'goma', 'v8_enable_slow_dchecks', 'v8_full_debug'],
# Release configs for x86.
+ 'release_x86_asan_symbolized_verify_heap': [
+ 'release_bot', 'x86', 'asan', 'lsan', 'symbolized',
+ 'v8_verify_heap'],
'release_x86_gcc': [
- 'release_bot_no_goma', 'x86', 'gcc', 'v8_check_header_includes'],
+ 'release_bot_no_goma', 'x86', 'gcc', 'lld', 'v8_check_header_includes'],
'release_x86_gcc_minimal_symbols': [
- 'release_bot_no_goma', 'x86', 'gcc', 'minimal_symbols',
+ 'release_bot_no_goma', 'x86', 'gcc', 'lld', 'minimal_symbols',
'v8_check_header_includes'],
'release_x86_gcmole': [
'release_bot', 'x86', 'gcmole'],
@@ -645,7 +665,7 @@
'debug_bot': {
'mixins': [
'debug', 'shared', 'goma', 'v8_enable_slow_dchecks',
- 'v8_optimized_debug'],
+ 'v8_optimized_debug', 'v8_enable_google_benchmark'],
},
'debug_bot_no_goma': {
@@ -701,6 +721,10 @@
'gn_args': 'target_cpu="x64" target_os="ios"',
},
+ 'lld': {
+ 'gn_args': 'use_lld=true',
+ },
+
'lsan': {
'mixins': ['v8_enable_test_features'],
'gn_args': 'is_lsan=true',
@@ -745,7 +769,7 @@
},
'release_bot': {
- 'mixins': ['release', 'static', 'goma'],
+ 'mixins': ['release', 'static', 'goma', 'v8_enable_google_benchmark'],
},
'release_bot_no_goma': {
@@ -834,6 +858,10 @@
'gn_args': 'v8_control_flow_integrity=true',
},
+ 'v8_enable_heap_sandbox': {
+ 'gn_args': 'v8_enable_heap_sandbox=true',
+ },
+
'v8_enable_lite_mode': {
'gn_args': 'v8_enable_lite_mode=true',
},
@@ -842,6 +870,10 @@
'gn_args': 'v8_enable_slow_dchecks=true',
},
+ 'v8_enable_google_benchmark': {
+ 'gn_args': 'v8_enable_google_benchmark=true',
+ },
+
'webassembly_disabled': {
'gn_args': 'v8_enable_webassembly=false',
},
@@ -853,7 +885,10 @@
'v8_disable_pointer_compression': {
'gn_args': 'v8_enable_pointer_compression=false',
},
-
+ 'v8_enable_single_generation': {
+ 'gn_args': 'v8_enable_single_generation=true '
+ 'v8_disable_write_barriers=true',
+ },
'v8_enable_test_features': {
'gn_args': 'v8_enable_test_features=true',
},
diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl
index fc0d1c55b1..8fe8872ed9 100644
--- a/deps/v8/infra/testing/builders.pyl
+++ b/deps/v8/infra/testing/builders.pyl
@@ -49,7 +49,7 @@
# Fuchsia
'v8_fuchsia_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'fuchsia-unittests'},
@@ -57,7 +57,7 @@
},
'V8 Fuchsia': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'fuchsia-unittests'},
@@ -68,7 +68,7 @@
'v8_linux_dbg_ng_triggered': {
'swarming_dimensions' : {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -102,7 +102,7 @@
},
'v8_linux_gc_stress_dbg_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit', 'variant': 'slow_path', 'test_args': ['--gc-stress'], 'shards': 2},
@@ -111,7 +111,7 @@
},
'v8_linux_gcc_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing'},
@@ -120,7 +120,7 @@
'v8_linux_nodcheck_rel_ng_triggered': {
'swarming_dimensions' : {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -135,7 +135,7 @@
},
'v8_linux_noi18n_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mozilla', 'variant': 'default'},
@@ -146,7 +146,7 @@
'v8_linux_rel_ng_triggered': {
'swarming_dimensions' : {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -166,7 +166,7 @@
'v8_linux_optional_rel_ng_triggered': {
'swarming_dimensions' : {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
# Code serializer.
@@ -268,7 +268,7 @@
},
'v8_linux_verify_csa_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 2},
@@ -278,7 +278,7 @@
# Linux32 with arm simulators
'v8_linux_arm_dbg_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit_sp_frame_access'},
@@ -291,7 +291,7 @@
},
'v8_linux_arm_lite_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'variant': 'default', 'shards': 4},
@@ -299,7 +299,7 @@
},
'v8_linux_arm_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit_sp_frame_access', 'shards': 2},
@@ -314,7 +314,7 @@
# Linux64
'v8_linux64_asan_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'test262', 'shards': 7},
@@ -325,7 +325,7 @@
},
'v8_linux64_cfi_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -338,7 +338,7 @@
'v8_linux64_dbg_ng_triggered': {
'swarming_dimensions' : {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -360,7 +360,7 @@
'v8_linux64_dict_tracking_dbg_ng_triggered': {
'swarming_dimensions' : {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 3},
@@ -368,26 +368,14 @@
},
'v8_linux64_fuzzilli_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
# TODO(almuthanna): Add a new test config for the fuzzilli suite.
'tests': [],
},
- 'v8_linux64_gc_stress_custom_snapshot_dbg_ng_triggered': {
- 'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {
- 'name': 'mjsunit',
- 'test_args': ['--gc-stress', '--no-harness'],
- 'shards': 3,
- },
- ],
- },
'v8_linux64_fyi_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
# Infra staging.
@@ -401,11 +389,41 @@
{'name': 'mjsunit', 'variant': 'experimental_regexp'},
# Concurrent inlining.
{'name': 'mjsunit', 'variant': 'concurrent_inlining'},
+ # Wasm write protect code space.
+ {'name': 'mjsunit', 'variant': 'wasm_write_protect_code'},
+ ],
+ },
+ 'v8_linux64_gc_stress_custom_snapshot_dbg_ng_triggered': {
+ 'swarming_dimensions' : {
+ 'os': 'Ubuntu-18.04',
+ },
+ 'tests': [
+ {
+ 'name': 'mjsunit',
+ 'test_args': ['--gc-stress', '--no-harness'],
+ 'shards': 3,
+ },
+ ],
+ },
+ 'v8_linux64_gcov_coverage': {
+ 'swarming_dimensions' : {
+ 'os': 'Ubuntu-18.04',
+ },
+ 'tests': [
+ {'name': 'v8testing'},
+ ],
+ },
+ 'v8_linux64_heap_sandbox_dbg_ng_triggered': {
+ 'swarming_dimensions' : {
+ 'os': 'Ubuntu-18.04',
+ },
+ 'tests': [
+ {'name': 'v8testing', 'shards': 2},
],
},
'v8_linux64_msan_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'test262', 'variant': 'default', 'shards': 2},
@@ -415,7 +433,7 @@
'v8_linux64_nodcheck_rel_ng_triggered': {
'swarming_dimensions' : {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -438,7 +456,7 @@
},
'v8_linux64_perfetto_dbg_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 3},
@@ -446,7 +464,15 @@
},
'v8_linux64_pointer_compression_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
+ },
+ 'tests': [
+ {'name': 'v8testing', 'shards': 3},
+ ],
+ },
+ 'v8_linux64_single_generation_dbg_ng_triggered': {
+ 'swarming_dimensions' : {
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 3},
@@ -455,7 +481,7 @@
'v8_linux64_rel_ng_triggered': {
'swarming_dimensions' : {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
# TODO(machenbach): Add benchmarks.
@@ -475,7 +501,7 @@
},
'v8_linux64_tsan_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -489,7 +515,7 @@
},
'v8_linux64_tsan_no_cm_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{
@@ -507,7 +533,7 @@
},
'v8_linux64_tsan_isolates_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'test_args': ['--isolates'], 'shards': 7},
@@ -515,7 +541,7 @@
},
'v8_linux64_ubsan_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 2},
@@ -523,7 +549,7 @@
},
'v8_linux64_verify_csa_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 2},
@@ -533,7 +559,7 @@
# Linux64 with arm64 simulators
'v8_linux_arm64_dbg_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit_sp_frame_access'},
@@ -546,7 +572,7 @@
},
'v8_linux_arm64_gc_stress_dbg_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'd8testing', 'test_args': ['--gc-stress'], 'shards': 12},
@@ -554,7 +580,7 @@
},
'v8_linux_arm64_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit_sp_frame_access', 'shards': 4},
@@ -567,7 +593,7 @@
},
'v8_linux_arm64_cfi_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'test262', 'variant': 'default', 'shards': 3},
@@ -576,7 +602,7 @@
},
'v8_linux64_arm64_pointer_compression_rel_ng_triggered': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'variant': 'default', 'shards': 4},
@@ -586,7 +612,7 @@
# Linux64 with RISC-V simulators
'v8_linux64_riscv64_rel_ng_triggered': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 3},
@@ -598,7 +624,7 @@
'swarming_dimensions' : {
'cores': '8',
'cpu': 'armv7l-32-ODROID-XU4',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu',
},
'swarming_task_attrs': {
# Use same prio as CI due to limited resources.
@@ -760,6 +786,7 @@
},
'tests': [
{'name': 'v8testing', 'shards': 8},
+ {'name': 'v8testing', 'variant': 'future', 'shards': 2},
],
},
'v8_mac_arm64_sim_dbg_ng_triggered': {
@@ -770,6 +797,7 @@
},
'tests': [
{'name': 'v8testing', 'shards': 8},
+ {'name': 'v8testing', 'variant': 'future', 'shards': 2},
],
},
'v8_mac_arm64_sim_nodcheck_rel_ng_triggered': {
@@ -780,6 +808,7 @@
},
'tests': [
{'name': 'v8testing', 'shards': 8},
+ {'name': 'v8testing', 'variant': 'future', 'shards': 2},
],
},
##############################################################################
@@ -788,7 +817,7 @@
# Main.
'V8 Fuzzer': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -802,7 +831,7 @@
'V8 Linux': {
'swarming_dimensions': {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -873,7 +902,7 @@
},
'V8 Linux - arm64 - sim - CFI': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'test262', 'variant': 'default', 'shards': 3},
@@ -882,7 +911,7 @@
},
'V8 Linux - arm64 - sim - MSAN': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'test262', 'variant': 'default', 'shards': 3},
@@ -892,7 +921,7 @@
'V8 Linux - debug': {
'swarming_dimensions': {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -991,7 +1020,7 @@
},
'V8 Linux - full debug': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'variant': 'default', 'shards': 4},
@@ -999,7 +1028,7 @@
},
'V8 Linux - gc stress': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{
@@ -1017,7 +1046,7 @@
},
'V8 Linux - noi18n - debug': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mozilla', 'variant': 'default'},
@@ -1027,7 +1056,7 @@
},
'V8 Linux - predictable': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -1037,7 +1066,7 @@
},
'V8 Linux - shared': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mozilla'},
@@ -1047,7 +1076,7 @@
},
'V8 Linux - verify csa': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing'},
@@ -1055,7 +1084,7 @@
},
'V8 Linux gcc': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing'},
@@ -1064,7 +1093,7 @@
'V8 Linux64': {
'swarming_dimensions': {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -1108,7 +1137,7 @@
},
'V8 Linux64 - cfi': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -1120,7 +1149,7 @@
},
'V8 Linux64 - custom snapshot - debug': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit', 'test_args': ['--no-harness']},
@@ -1129,7 +1158,7 @@
'V8 Linux64 - debug': {
'swarming_dimensions': {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -1171,7 +1200,7 @@
'V8 Linux64 - dict tracking - debug': {
'swarming_dimensions': {
'cpu': 'x86-64-avx2',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 3},
@@ -1179,7 +1208,7 @@
},
'V8 Linux64 - debug - fyi': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
# Infra staging.
@@ -1193,11 +1222,13 @@
{'name': 'mjsunit', 'variant': 'experimental_regexp'},
# Concurrent inlining.
{'name': 'mjsunit', 'variant': 'concurrent_inlining'},
+ # Wasm write protect code space.
+ {'name': 'mjsunit', 'variant': 'wasm_write_protect_code'},
],
},
'V8 Linux64 - debug - perfetto': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1208,9 +1239,22 @@
{'name': 'v8testing', 'shards': 2},
],
},
+ 'V8 Linux64 - debug - single generation': {
+ 'swarming_dimensions' : {
+ 'os': 'Ubuntu-18.04',
+ },
+ 'swarming_task_attrs': {
+ 'expiration': 14400,
+ 'hard_timeout': 3600,
+ 'priority': 35,
+ },
+ 'tests': [
+ {'name': 'v8testing', 'shards': 3},
+ ],
+ },
'V8 Linux64 - fyi': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
# Infra staging.
@@ -1224,19 +1268,29 @@
{'name': 'mjsunit', 'variant': 'experimental_regexp'},
# Concurrent inlining.
{'name': 'mjsunit', 'variant': 'concurrent_inlining'},
+ # Wasm write protect code space.
+ {'name': 'mjsunit', 'variant': 'wasm_write_protect_code'},
],
},
'V8 Linux64 - gcov coverage': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing'},
],
},
+ 'V8 Linux64 - heap sandbox - debug': {
+ 'swarming_dimensions' : {
+ 'os': 'Ubuntu-18.04',
+ },
+ 'tests': [
+ {'name': 'v8testing', 'shards': 2},
+ ],
+ },
'V8 Linux64 - internal snapshot': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing'},
@@ -1244,7 +1298,7 @@
},
'V8 Linux64 - pointer compression': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'shards': 2},
@@ -1252,7 +1306,7 @@
},
'V8 Linux64 - shared': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mozilla'},
@@ -1262,7 +1316,7 @@
},
'V8 Linux64 - verify csa': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing'},
@@ -1270,7 +1324,7 @@
},
'V8 Linux64 ASAN': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'test262', 'shards': 5},
@@ -1281,7 +1335,7 @@
},
'V8 Linux64 GC Stress - custom snapshot': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{
@@ -1293,7 +1347,7 @@
},
'V8 Linux64 TSAN': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'benchmarks'},
@@ -1307,7 +1361,7 @@
},
'V8 Linux64 TSAN - stress-incremental-marking': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1338,7 +1392,7 @@
},
'V8 Linux64 TSAN - isolates': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'test_args': ['--isolates'], 'shards': 7},
@@ -1346,7 +1400,7 @@
},
'V8 Linux64 TSAN - no-concurrent-marking': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{
@@ -1364,7 +1418,7 @@
},
'V8 Linux64 UBSan': {
'swarming_dimensions' : {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mozilla'},
@@ -1427,8 +1481,8 @@
'priority': 35,
},
'tests': [
- {'name': 'd8testing'},
- {'name': 'd8testing', 'variant': 'extra'},
+ {'name': 'v8testing'},
+ {'name': 'v8testing', 'variant': 'extra'},
],
},
'V8 Mac - arm64 - debug': {
@@ -1460,6 +1514,7 @@
},
'tests': [
{'name': 'v8testing', 'shards': 8},
+ {'name': 'v8testing', 'variant': 'future', 'shards': 2},
],
},
'V8 Mac - arm64 - sim - release': {
@@ -1475,6 +1530,7 @@
},
'tests': [
{'name': 'v8testing', 'shards': 8},
+ {'name': 'v8testing', 'variant': 'future', 'shards': 2},
],
},
'V8 Win32': {
@@ -1558,7 +1614,7 @@
'swarming_dimensions': {
'cores': '8',
'cpu': 'armv7l-32-ODROID-XU4',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu',
},
'swarming_task_attrs': {
'expiration': 21600,
@@ -1587,7 +1643,7 @@
'swarming_dimensions': {
'cores': '8',
'cpu': 'armv7l-32-ODROID-XU4',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu',
},
'swarming_task_attrs': {
'expiration': 21600,
@@ -1615,7 +1671,7 @@
'swarming_dimensions': {
'cores': '8',
'cpu': 'armv7l-32-ODROID-XU4',
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu',
},
'swarming_task_attrs': {
'expiration': 21600,
@@ -1633,7 +1689,7 @@
},
'V8 Linux - arm - sim': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit_sp_frame_access'},
@@ -1682,7 +1738,7 @@
},
'V8 Linux - arm - sim - debug': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit_sp_frame_access', 'shards': 6},
@@ -1735,7 +1791,7 @@
},
'V8 Linux - arm - sim - lite': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'variant': 'default', 'shards': 2},
@@ -1743,7 +1799,7 @@
},
'V8 Linux - arm - sim - lite - debug': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'v8testing', 'variant': 'default', 'shards': 4},
@@ -1751,7 +1807,7 @@
},
'V8 Linux - arm64 - sim': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'tests': [
{'name': 'mjsunit_sp_frame_access'},
@@ -1764,7 +1820,7 @@
},
'V8 Linux - arm64 - sim - debug': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
# TODO(machenbach): Remove longer timeout when this builder scales better.
'swarming_task_attrs': {
@@ -1781,7 +1837,7 @@
},
'V8 Linux - arm64 - sim - gc stress': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1798,7 +1854,7 @@
},
'V8 Linux - mips64el - sim': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1812,7 +1868,7 @@
},
'V8 Linux - mipsel - sim': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1826,7 +1882,7 @@
},
'V8 Linux - ppc64 - sim': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1839,7 +1895,7 @@
},
'V8 Linux - riscv64 - sim': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1852,7 +1908,7 @@
},
'V8 Linux - s390x - sim': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1865,7 +1921,7 @@
},
'V8 Linux64 - arm64 - sim - pointer compression': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 14400,
@@ -1880,7 +1936,7 @@
# Clusterfuzz.
'V8 NumFuzz': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 13800,
@@ -1897,7 +1953,7 @@
},
'V8 NumFuzz - TSAN': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 13800,
@@ -1945,7 +2001,7 @@
},
'V8 NumFuzz - debug': {
'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
+ 'os': 'Ubuntu-18.04',
},
'swarming_task_attrs': {
'expiration': 13800,
@@ -1998,282 +2054,4 @@
},
],
},
- ##############################################################################
- # Branches.
- 'V8 Linux - beta branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing'},
- ],
- },
- 'V8 Linux - beta branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 3},
- ],
- },
- 'V8 Linux - stable branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing'},
- ],
- },
- 'V8 Linux - stable branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 3},
- ],
- },
- 'V8 Linux - previous branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing'},
- ],
- },
- 'V8 Linux - previous branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 3},
- ],
- },
- 'V8 Linux64 - beta branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing'},
- ],
- },
- 'V8 Linux64 - beta branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 3},
- ],
- },
- 'V8 Linux64 - stable branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing'},
- ],
- },
- 'V8 Linux64 - stable branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 3},
- ],
- },
- 'V8 Linux64 - previous branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing'},
- ],
- },
- 'V8 Linux64 - previous branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 3},
- ],
- },
- 'V8 arm - sim - beta branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 4},
- ],
- },
- 'V8 arm - sim - beta branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla', 'shards': 2},
- {'name': 'test262', 'variant': 'default', 'shards': 2},
- {'name': 'v8testing', 'shards': 10},
- ],
- },
- 'V8 arm - sim - stable branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 4},
- ],
- },
- 'V8 arm - sim - stable branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla', 'shards': 2},
- {'name': 'test262', 'variant': 'default', 'shards': 2},
- {'name': 'v8testing', 'shards': 10},
- ],
- },
- 'V8 arm - sim - previous branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla'},
- {'name': 'test262', 'variant': 'default'},
- {'name': 'v8testing', 'shards': 4},
- ],
- },
- 'V8 arm - sim - previous branch - debug': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'mozilla', 'shards': 2},
- {'name': 'test262', 'variant': 'default', 'shards': 2},
- {'name': 'v8testing', 'shards': 10},
- ],
- },
- 'V8 mips64el - sim - beta branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
- 'V8 mips64el - sim - stable branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
- 'V8 mips64el - sim - previous branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
- 'V8 mipsel - sim - beta branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'v8testing', 'shards': 4},
- ],
- },
- 'V8 mipsel - sim - stable branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'v8testing', 'shards': 4},
- ],
- },
- 'V8 mipsel - sim - previous branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'v8testing', 'shards': 4},
- ],
- },
- 'V8 ppc64 - sim - beta branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
- 'V8 ppc64 - sim - stable branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
- 'V8 ppc64 - sim - previous branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
- 'V8 s390x - sim - beta branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
- 'V8 s390x - sim - stable branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
- 'V8 s390x - sim - previous branch': {
- 'swarming_dimensions': {
- 'os': 'Ubuntu-16.04',
- },
- 'tests': [
- {'name': 'unittests'},
- ],
- },
}
diff --git a/deps/v8/samples/OWNERS b/deps/v8/samples/OWNERS
index 9c4f2439aa..6df8720dc5 100644
--- a/deps/v8/samples/OWNERS
+++ b/deps/v8/samples/OWNERS
@@ -1,2 +1,2 @@
mathias@chromium.org
-yangguo@chromium.org
+cbruni@chromium.org
diff --git a/deps/v8/samples/shell.cc b/deps/v8/samples/shell.cc
index e844ca51bf..7de600a88f 100644
--- a/deps/v8/samples/shell.cc
+++ b/deps/v8/samples/shell.cc
@@ -147,20 +147,17 @@ void Print(const v8::FunctionCallbackInfo<v8::Value>& args) {
// the argument into a JavaScript string.
void Read(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 1) {
- args.GetIsolate()->ThrowException(
- v8::String::NewFromUtf8Literal(args.GetIsolate(), "Bad parameters"));
+ args.GetIsolate()->ThrowError("Bad parameters");
return;
}
v8::String::Utf8Value file(args.GetIsolate(), args[0]);
if (*file == NULL) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(), "Error loading file"));
+ args.GetIsolate()->ThrowError("Error loading file");
return;
}
v8::Local<v8::String> source;
if (!ReadFile(args.GetIsolate(), *file).ToLocal(&source)) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(), "Error loading file"));
+ args.GetIsolate()->ThrowError("Error loading file");
return;
}
@@ -175,19 +172,16 @@ void Load(const v8::FunctionCallbackInfo<v8::Value>& args) {
v8::HandleScope handle_scope(args.GetIsolate());
v8::String::Utf8Value file(args.GetIsolate(), args[i]);
if (*file == NULL) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(), "Error loading file"));
+ args.GetIsolate()->ThrowError("Error loading file");
return;
}
v8::Local<v8::String> source;
if (!ReadFile(args.GetIsolate(), *file).ToLocal(&source)) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(), "Error loading file"));
+ args.GetIsolate()->ThrowError("Error loading file");
return;
}
if (!ExecuteString(args.GetIsolate(), source, args[i], false, false)) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(), "Error executing file"));
+ args.GetIsolate()->ThrowError("Error executing file");
return;
}
}
diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS
index c3394e4b7a..3c5dca663f 100644
--- a/deps/v8/src/DEPS
+++ b/deps/v8/src/DEPS
@@ -5,6 +5,7 @@ include_rules = [
"+src/asmjs/asm-js.h",
"-src/baseline",
"+src/baseline/baseline.h",
+ "+src/baseline/baseline-osr-inl.h",
"+src/baseline/bytecode-offset-iterator.h",
"-src/bigint",
"+src/bigint/bigint.h",
@@ -14,6 +15,7 @@ include_rules = [
"+src/compiler/wasm-compiler.h",
"-src/heap",
"+src/heap/basic-memory-chunk.h",
+ "+src/heap/code-range.h",
"+src/heap/combined-heap.h",
"+src/heap/embedder-tracing.h",
"+src/heap/factory.h",
diff --git a/deps/v8/src/api/api-arguments-inl.h b/deps/v8/src/api/api-arguments-inl.h
index 57b533c7c9..4edd0dad29 100644
--- a/deps/v8/src/api/api-arguments-inl.h
+++ b/deps/v8/src/api/api-arguments-inl.h
@@ -96,8 +96,7 @@ inline JSReceiver FunctionCallbackArguments::holder() {
Handle<InterceptorInfo> interceptor, Handle<Name> name) { \
DCHECK_NAME_COMPATIBLE(interceptor, name); \
Isolate* isolate = this->isolate(); \
- RuntimeCallTimerScope timer( \
- isolate, RuntimeCallCounterId::kNamed##FUNCTION##Callback); \
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kNamed##FUNCTION##Callback); \
Handle<Object> receiver_check_unsupported; \
GenericNamedProperty##FUNCTION##Callback f = \
ToCData<GenericNamedProperty##FUNCTION##Callback>( \
@@ -120,8 +119,7 @@ FOR_EACH_CALLBACK(CREATE_NAMED_CALLBACK)
Handle<InterceptorInfo> interceptor, uint32_t index) { \
DCHECK(!interceptor->is_named()); \
Isolate* isolate = this->isolate(); \
- RuntimeCallTimerScope timer( \
- isolate, RuntimeCallCounterId::kIndexed##FUNCTION##Callback); \
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kIndexed##FUNCTION##Callback); \
Handle<Object> receiver_check_unsupported; \
IndexedProperty##FUNCTION##Callback f = \
ToCData<IndexedProperty##FUNCTION##Callback>(interceptor->TYPE()); \
@@ -142,7 +140,7 @@ FOR_EACH_CALLBACK(CREATE_INDEXED_CALLBACK)
Handle<Object> FunctionCallbackArguments::Call(CallHandlerInfo handler) {
Isolate* isolate = this->isolate();
LOG(isolate, ApiObjectAccess("call", holder()));
- RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kFunctionCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kFunctionCallback);
v8::FunctionCallback f =
v8::ToCData<v8::FunctionCallback>(handler.callback());
Handle<Object> receiver_check_unsupported;
@@ -163,8 +161,7 @@ Handle<JSObject> PropertyCallbackArguments::CallNamedEnumerator(
Handle<InterceptorInfo> interceptor) {
DCHECK(interceptor->is_named());
LOG(isolate(), ApiObjectAccess("interceptor-named-enumerator", holder()));
- RuntimeCallTimerScope timer(isolate(),
- RuntimeCallCounterId::kNamedEnumeratorCallback);
+ RCS_SCOPE(isolate(), RuntimeCallCounterId::kNamedEnumeratorCallback);
return CallPropertyEnumerator(interceptor);
}
@@ -172,8 +169,7 @@ Handle<JSObject> PropertyCallbackArguments::CallIndexedEnumerator(
Handle<InterceptorInfo> interceptor) {
DCHECK(!interceptor->is_named());
LOG(isolate(), ApiObjectAccess("interceptor-indexed-enumerator", holder()));
- RuntimeCallTimerScope timer(isolate(),
- RuntimeCallCounterId::kIndexedEnumeratorCallback);
+ RCS_SCOPE(isolate(), RuntimeCallCounterId::kIndexedEnumeratorCallback);
return CallPropertyEnumerator(interceptor);
}
@@ -181,8 +177,7 @@ Handle<Object> PropertyCallbackArguments::CallNamedGetter(
Handle<InterceptorInfo> interceptor, Handle<Name> name) {
DCHECK_NAME_COMPATIBLE(interceptor, name);
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kNamedGetterCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedGetterCallback);
LOG(isolate,
ApiNamedPropertyAccess("interceptor-named-getter", holder(), *name));
GenericNamedPropertyGetterCallback f =
@@ -194,8 +189,7 @@ Handle<Object> PropertyCallbackArguments::CallNamedDescriptor(
Handle<InterceptorInfo> interceptor, Handle<Name> name) {
DCHECK_NAME_COMPATIBLE(interceptor, name);
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kNamedDescriptorCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedDescriptorCallback);
LOG(isolate,
ApiNamedPropertyAccess("interceptor-named-descriptor", holder(), *name));
GenericNamedPropertyDescriptorCallback f =
@@ -222,8 +216,7 @@ Handle<Object> PropertyCallbackArguments::CallNamedSetter(
GenericNamedPropertySetterCallback f =
ToCData<GenericNamedPropertySetterCallback>(interceptor->setter());
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kNamedSetterCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedSetterCallback);
PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(isolate, f, Handle<Object>,
v8::Value);
LOG(isolate,
@@ -237,8 +230,7 @@ Handle<Object> PropertyCallbackArguments::CallNamedDefiner(
const v8::PropertyDescriptor& desc) {
DCHECK_NAME_COMPATIBLE(interceptor, name);
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kNamedDefinerCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedDefinerCallback);
GenericNamedPropertyDefinerCallback f =
ToCData<GenericNamedPropertyDefinerCallback>(interceptor->definer());
PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(isolate, f, Handle<Object>,
@@ -253,8 +245,7 @@ Handle<Object> PropertyCallbackArguments::CallIndexedSetter(
Handle<InterceptorInfo> interceptor, uint32_t index, Handle<Object> value) {
DCHECK(!interceptor->is_named());
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kIndexedSetterCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kIndexedSetterCallback);
IndexedPropertySetterCallback f =
ToCData<IndexedPropertySetterCallback>(interceptor->setter());
PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(isolate, f, Handle<Object>,
@@ -270,8 +261,7 @@ Handle<Object> PropertyCallbackArguments::CallIndexedDefiner(
const v8::PropertyDescriptor& desc) {
DCHECK(!interceptor->is_named());
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kIndexedDefinerCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kIndexedDefinerCallback);
IndexedPropertyDefinerCallback f =
ToCData<IndexedPropertyDefinerCallback>(interceptor->definer());
PREPARE_CALLBACK_INFO_FAIL_SIDE_EFFECT_CHECK(isolate, f, Handle<Object>,
@@ -286,8 +276,7 @@ Handle<Object> PropertyCallbackArguments::CallIndexedGetter(
Handle<InterceptorInfo> interceptor, uint32_t index) {
DCHECK(!interceptor->is_named());
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kNamedGetterCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedGetterCallback);
LOG(isolate,
ApiIndexedPropertyAccess("interceptor-indexed-getter", holder(), index));
IndexedPropertyGetterCallback f =
@@ -299,8 +288,7 @@ Handle<Object> PropertyCallbackArguments::CallIndexedDescriptor(
Handle<InterceptorInfo> interceptor, uint32_t index) {
DCHECK(!interceptor->is_named());
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kIndexedDescriptorCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kIndexedDescriptorCallback);
LOG(isolate, ApiIndexedPropertyAccess("interceptor-indexed-descriptor",
holder(), index));
IndexedPropertyDescriptorCallback f =
@@ -338,8 +326,7 @@ Handle<JSObject> PropertyCallbackArguments::CallPropertyEnumerator(
Handle<Object> PropertyCallbackArguments::CallAccessorGetter(
Handle<AccessorInfo> info, Handle<Name> name) {
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kAccessorGetterCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kAccessorGetterCallback);
LOG(isolate, ApiNamedPropertyAccess("accessor-getter", holder(), *name));
AccessorNameGetterCallback f =
ToCData<AccessorNameGetterCallback>(info->getter());
@@ -351,8 +338,7 @@ Handle<Object> PropertyCallbackArguments::CallAccessorSetter(
Handle<AccessorInfo> accessor_info, Handle<Name> name,
Handle<Object> value) {
Isolate* isolate = this->isolate();
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kAccessorSetterCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kAccessorSetterCallback);
AccessorNameSetterCallback f =
ToCData<AccessorNameSetterCallback>(accessor_info->setter());
PREPARE_CALLBACK_INFO(isolate, f, Handle<Object>, void, accessor_info,
diff --git a/deps/v8/src/api/api-inl.h b/deps/v8/src/api/api-inl.h
index 849364e655..84b9b288bb 100644
--- a/deps/v8/src/api/api-inl.h
+++ b/deps/v8/src/api/api-inl.h
@@ -139,6 +139,7 @@ class V8_NODISCARD CallDepthScope {
CallDepthScope(i::Isolate* isolate, Local<Context> context)
: isolate_(isolate),
context_(context),
+ did_enter_context_(false),
escaped_(false),
safe_for_termination_(isolate->next_v8_call_is_safe_for_termination()),
interrupts_scope_(isolate_, i::StackGuard::TERMINATE_EXECUTION,
@@ -152,12 +153,11 @@ class V8_NODISCARD CallDepthScope {
if (!context.IsEmpty()) {
i::Handle<i::Context> env = Utils::OpenHandle(*context);
i::HandleScopeImplementer* impl = isolate->handle_scope_implementer();
- if (!isolate->context().is_null() &&
- isolate->context().native_context() == env->native_context()) {
- context_ = Local<Context>();
- } else {
+ if (isolate->context().is_null() ||
+ isolate->context().native_context() != env->native_context()) {
impl->SaveContext(isolate->context());
isolate->set_context(*env);
+ did_enter_context_ = true;
}
}
if (do_callback) isolate_->FireBeforeCallEnteredCallback();
@@ -165,16 +165,17 @@ class V8_NODISCARD CallDepthScope {
~CallDepthScope() {
i::MicrotaskQueue* microtask_queue = isolate_->default_microtask_queue();
if (!context_.IsEmpty()) {
- i::HandleScopeImplementer* impl = isolate_->handle_scope_implementer();
- isolate_->set_context(impl->RestoreContext());
+ if (did_enter_context_) {
+ i::HandleScopeImplementer* impl = isolate_->handle_scope_implementer();
+ isolate_->set_context(impl->RestoreContext());
+ }
i::Handle<i::Context> env = Utils::OpenHandle(*context_);
microtask_queue = env->native_context().microtask_queue();
}
if (!escaped_) isolate_->thread_local_top()->DecrementCallDepth(this);
if (do_callback) isolate_->FireCallCompletedCallback(microtask_queue);
-// TODO(jochen): This should be #ifdef DEBUG
-#ifdef V8_CHECK_MICROTASKS_SCOPES_CONSISTENCY
+#ifdef DEBUG
if (do_callback) {
if (microtask_queue && microtask_queue->microtasks_policy() ==
v8::MicrotasksPolicy::kScoped) {
@@ -213,9 +214,9 @@ class V8_NODISCARD CallDepthScope {
i::Isolate* const isolate_;
Local<Context> context_;
- bool escaped_;
- bool do_callback_;
- bool safe_for_termination_;
+ bool did_enter_context_ : 1;
+ bool escaped_ : 1;
+ bool safe_for_termination_ : 1;
i::InterruptsScope interrupts_scope_;
i::Address previous_stack_height_;
diff --git a/deps/v8/src/api/api-macros.h b/deps/v8/src/api/api-macros.h
index b126e1cd5a..9b339321e7 100644
--- a/deps/v8/src/api/api-macros.h
+++ b/deps/v8/src/api/api-macros.h
@@ -30,9 +30,9 @@
* TODO(jochen): Remove calls form API methods to DO_NOT_USE macros.
*/
-#define LOG_API(isolate, class_name, function_name) \
- i::RuntimeCallTimerScope _runtime_timer( \
- isolate, i::RuntimeCallCounterId::kAPI_##class_name##_##function_name); \
+#define LOG_API(isolate, class_name, function_name) \
+ RCS_SCOPE(isolate, \
+ i::RuntimeCallCounterId::kAPI_##class_name##_##function_name); \
LOG(isolate, ApiEntryCall("v8::" #class_name "::" #function_name))
#define ENTER_V8_DO_NOT_USE(isolate) i::VMState<v8::OTHER> __state__((isolate))
@@ -126,7 +126,3 @@
EXCEPTION_BAILOUT_CHECK_SCOPED_DO_NOT_USE(isolate, Nothing<T>())
#define RETURN_ESCAPED(value) return handle_scope.Escape(value);
-
-// TODO(jochen): This should be #ifdef DEBUG
-#ifdef V8_CHECK_MICROTASKS_SCOPES_CONSISTENCY
-#endif
diff --git a/deps/v8/src/api/api-natives.cc b/deps/v8/src/api/api-natives.cc
index 56bf5bd47c..46d54f6f58 100644
--- a/deps/v8/src/api/api-natives.cc
+++ b/deps/v8/src/api/api-natives.cc
@@ -74,9 +74,9 @@ MaybeHandle<Object> DefineAccessorProperty(Isolate* isolate,
Handle<Object> setter,
PropertyAttributes attributes) {
DCHECK(!getter->IsFunctionTemplateInfo() ||
- !FunctionTemplateInfo::cast(*getter).do_not_cache());
+ FunctionTemplateInfo::cast(*getter).should_cache());
DCHECK(!setter->IsFunctionTemplateInfo() ||
- !FunctionTemplateInfo::cast(*setter).do_not_cache());
+ FunctionTemplateInfo::cast(*setter).should_cache());
if (getter->IsFunctionTemplateInfo() &&
FunctionTemplateInfo::cast(*getter).BreakAtEntry()) {
ASSIGN_RETURN_ON_EXCEPTION(
@@ -184,8 +184,7 @@ Object GetIntrinsic(Isolate* isolate, v8::Intrinsic intrinsic) {
template <typename TemplateInfoT>
MaybeHandle<JSObject> ConfigureInstance(Isolate* isolate, Handle<JSObject> obj,
Handle<TemplateInfoT> data) {
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kConfigureInstance);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kConfigureInstance);
HandleScope scope(isolate);
// Disable access checks while instantiating the object.
AccessCheckDisableScope access_check_scope(isolate, obj);
@@ -288,16 +287,20 @@ enum class CachingMode { kLimited, kUnlimited };
MaybeHandle<JSObject> ProbeInstantiationsCache(
Isolate* isolate, Handle<NativeContext> native_context, int serial_number,
CachingMode caching_mode) {
- DCHECK_LE(1, serial_number);
- if (serial_number <= TemplateInfo::kFastTemplateInstantiationsCacheSize) {
+ DCHECK_NE(serial_number, TemplateInfo::kDoNotCache);
+ if (serial_number == TemplateInfo::kUncached) {
+ return {};
+ }
+
+ if (serial_number < TemplateInfo::kFastTemplateInstantiationsCacheSize) {
FixedArray fast_cache =
native_context->fast_template_instantiations_cache();
- Handle<Object> object{fast_cache.get(serial_number - 1), isolate};
+ Handle<Object> object{fast_cache.get(serial_number), isolate};
if (object->IsTheHole(isolate)) return {};
return Handle<JSObject>::cast(object);
}
if (caching_mode == CachingMode::kUnlimited ||
- (serial_number <= TemplateInfo::kSlowTemplateInstantiationsCacheSize)) {
+ (serial_number < TemplateInfo::kSlowTemplateInstantiationsCacheSize)) {
SimpleNumberDictionary slow_cache =
native_context->slow_template_instantiations_cache();
InternalIndex entry = slow_cache.FindEntry(isolate, serial_number);
@@ -310,19 +313,27 @@ MaybeHandle<JSObject> ProbeInstantiationsCache(
void CacheTemplateInstantiation(Isolate* isolate,
Handle<NativeContext> native_context,
- int serial_number, CachingMode caching_mode,
+ Handle<TemplateInfo> data,
+ CachingMode caching_mode,
Handle<JSObject> object) {
- DCHECK_LE(1, serial_number);
- if (serial_number <= TemplateInfo::kFastTemplateInstantiationsCacheSize) {
+ DCHECK_NE(TemplateInfo::kDoNotCache, data->serial_number());
+
+ int serial_number = data->serial_number();
+ if (serial_number == TemplateInfo::kUncached) {
+ serial_number = isolate->heap()->GetNextTemplateSerialNumber();
+ }
+
+ if (serial_number < TemplateInfo::kFastTemplateInstantiationsCacheSize) {
Handle<FixedArray> fast_cache =
handle(native_context->fast_template_instantiations_cache(), isolate);
Handle<FixedArray> new_cache =
- FixedArray::SetAndGrow(isolate, fast_cache, serial_number - 1, object);
+ FixedArray::SetAndGrow(isolate, fast_cache, serial_number, object);
if (*new_cache != *fast_cache) {
native_context->set_fast_template_instantiations_cache(*new_cache);
}
+ data->set_serial_number(serial_number);
} else if (caching_mode == CachingMode::kUnlimited ||
- (serial_number <=
+ (serial_number <
TemplateInfo::kSlowTemplateInstantiationsCacheSize)) {
Handle<SimpleNumberDictionary> cache =
handle(native_context->slow_template_instantiations_cache(), isolate);
@@ -331,20 +342,28 @@ void CacheTemplateInstantiation(Isolate* isolate,
if (*new_cache != *cache) {
native_context->set_slow_template_instantiations_cache(*new_cache);
}
+ data->set_serial_number(serial_number);
+ } else {
+ // we've overflowed the cache limit, no more caching
+ data->set_serial_number(TemplateInfo::kDoNotCache);
}
}
void UncacheTemplateInstantiation(Isolate* isolate,
Handle<NativeContext> native_context,
- int serial_number, CachingMode caching_mode) {
- DCHECK_LE(1, serial_number);
- if (serial_number <= TemplateInfo::kFastTemplateInstantiationsCacheSize) {
+ Handle<TemplateInfo> data,
+ CachingMode caching_mode) {
+ int serial_number = data->serial_number();
+ if (serial_number < 0) return;
+
+ if (serial_number < TemplateInfo::kFastTemplateInstantiationsCacheSize) {
FixedArray fast_cache =
native_context->fast_template_instantiations_cache();
- DCHECK(!fast_cache.get(serial_number - 1).IsUndefined(isolate));
- fast_cache.set_undefined(serial_number - 1);
+ DCHECK(!fast_cache.get(serial_number).IsUndefined(isolate));
+ fast_cache.set_undefined(serial_number);
+ data->set_serial_number(TemplateInfo::kUncached);
} else if (caching_mode == CachingMode::kUnlimited ||
- (serial_number <=
+ (serial_number <
TemplateInfo::kSlowTemplateInstantiationsCacheSize)) {
Handle<SimpleNumberDictionary> cache =
handle(native_context->slow_template_instantiations_cache(), isolate);
@@ -352,6 +371,7 @@ void UncacheTemplateInstantiation(Isolate* isolate,
DCHECK(entry.is_found());
cache = SimpleNumberDictionary::DeleteEntry(isolate, cache, entry);
native_context->set_slow_template_instantiations_cache(*cache);
+ data->set_serial_number(TemplateInfo::kUncached);
}
}
@@ -371,23 +391,22 @@ MaybeHandle<JSObject> InstantiateObject(Isolate* isolate,
Handle<ObjectTemplateInfo> info,
Handle<JSReceiver> new_target,
bool is_prototype) {
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kInstantiateObject);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kInstantiateObject);
Handle<JSFunction> constructor;
- int serial_number = info->serial_number();
+ bool should_cache = info->should_cache();
if (!new_target.is_null()) {
if (IsSimpleInstantiation(isolate, *info, *new_target)) {
constructor = Handle<JSFunction>::cast(new_target);
} else {
// Disable caching for subclass instantiation.
- serial_number = 0;
+ should_cache = false;
}
}
// Fast path.
Handle<JSObject> result;
- if (serial_number) {
+ if (should_cache && info->is_cached()) {
if (ProbeInstantiationsCache(isolate, isolate->native_context(),
- serial_number, CachingMode::kLimited)
+ info->serial_number(), CachingMode::kLimited)
.ToHandle(&result)) {
return isolate->factory()->CopyJSObject(result);
}
@@ -430,9 +449,9 @@ MaybeHandle<JSObject> InstantiateObject(Isolate* isolate,
// TODO(dcarney): is this necessary?
JSObject::MigrateSlowToFast(result, 0, "ApiNatives::InstantiateObject");
// Don't cache prototypes.
- if (serial_number) {
- CacheTemplateInstantiation(isolate, isolate->native_context(),
- serial_number, CachingMode::kLimited, result);
+ if (should_cache) {
+ CacheTemplateInstantiation(isolate, isolate->native_context(), info,
+ CachingMode::kLimited, result);
result = isolate->factory()->CopyJSObject(result);
}
}
@@ -465,12 +484,11 @@ MaybeHandle<Object> GetInstancePrototype(Isolate* isolate,
MaybeHandle<JSFunction> InstantiateFunction(
Isolate* isolate, Handle<NativeContext> native_context,
Handle<FunctionTemplateInfo> data, MaybeHandle<Name> maybe_name) {
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kInstantiateFunction);
- int serial_number = data->serial_number();
- if (serial_number) {
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kInstantiateFunction);
+ bool should_cache = data->should_cache();
+ if (should_cache && data->is_cached()) {
Handle<JSObject> result;
- if (ProbeInstantiationsCache(isolate, native_context, serial_number,
+ if (ProbeInstantiationsCache(isolate, native_context, data->serial_number(),
CachingMode::kUnlimited)
.ToHandle(&result)) {
return Handle<JSFunction>::cast(result);
@@ -504,7 +522,7 @@ MaybeHandle<JSFunction> InstantiateFunction(
GetInstancePrototype(isolate, parent),
JSFunction);
CHECK(parent_prototype->IsHeapObject());
- JSObject::ForceSetPrototype(Handle<JSObject>::cast(prototype),
+ JSObject::ForceSetPrototype(isolate, Handle<JSObject>::cast(prototype),
Handle<HeapObject>::cast(parent_prototype));
}
}
@@ -517,18 +535,16 @@ MaybeHandle<JSFunction> InstantiateFunction(
Handle<JSFunction> function = ApiNatives::CreateApiFunction(
isolate, native_context, data, prototype, function_type, maybe_name);
- if (serial_number) {
+ if (should_cache) {
// Cache the function.
- CacheTemplateInstantiation(isolate, native_context, serial_number,
+ CacheTemplateInstantiation(isolate, native_context, data,
CachingMode::kUnlimited, function);
}
MaybeHandle<JSObject> result = ConfigureInstance(isolate, function, data);
if (result.is_null()) {
// Uncache on error.
- if (serial_number) {
- UncacheTemplateInstantiation(isolate, native_context, serial_number,
- CachingMode::kUnlimited);
- }
+ UncacheTemplateInstantiation(isolate, native_context, data,
+ CachingMode::kUnlimited);
return MaybeHandle<JSFunction>();
}
data->set_published(true);
@@ -596,7 +612,8 @@ MaybeHandle<JSObject> ApiNatives::InstantiateRemoteObject(
object_map->set_may_have_interesting_symbols(true);
Handle<JSObject> object = isolate->factory()->NewJSObjectFromMap(object_map);
- JSObject::ForceSetPrototype(object, isolate->factory()->null_value());
+ JSObject::ForceSetPrototype(isolate, object,
+ isolate->factory()->null_value());
return object;
}
@@ -653,8 +670,7 @@ Handle<JSFunction> ApiNatives::CreateApiFunction(
Isolate* isolate, Handle<NativeContext> native_context,
Handle<FunctionTemplateInfo> obj, Handle<Object> prototype,
InstanceType type, MaybeHandle<Name> maybe_name) {
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kCreateApiFunction);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCreateApiFunction);
Handle<SharedFunctionInfo> shared =
FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(isolate, obj,
maybe_name);
diff --git a/deps/v8/src/api/api.cc b/deps/v8/src/api/api.cc
index b084986042..9d1e53d3bb 100644
--- a/deps/v8/src/api/api.cc
+++ b/deps/v8/src/api/api.cc
@@ -568,7 +568,7 @@ StartupData SnapshotCreator::CreateBlob(
i::GarbageCollectionReason::kSnapshotCreator);
{
i::HandleScope scope(isolate);
- isolate->heap()->CompactWeakArrayLists(internal::AllocationType::kOld);
+ isolate->heap()->CompactWeakArrayLists();
}
i::Snapshot::ClearReconstructableDataForSerialization(
@@ -1093,9 +1093,13 @@ void Context::SetAlignedPointerInEmbedderData(int index, void* value) {
// --- T e m p l a t e ---
-static void InitializeTemplate(i::TemplateInfo that, int type) {
+static void InitializeTemplate(i::TemplateInfo that, int type,
+ bool do_not_cache) {
that.set_number_of_properties(0);
that.set_tag(type);
+ int serial_number =
+ do_not_cache ? i::TemplateInfo::kDoNotCache : i::TemplateInfo::kUncached;
+ that.set_serial_number(serial_number);
}
void Template::Set(v8::Local<Name> name, v8::Local<Data> value,
@@ -1105,15 +1109,18 @@ void Template::Set(v8::Local<Name> name, v8::Local<Data> value,
ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate);
i::HandleScope scope(isolate);
auto value_obj = Utils::OpenHandle(*value);
+
Utils::ApiCheck(!value_obj->IsJSReceiver() || value_obj->IsTemplateInfo(),
"v8::Template::Set",
"Invalid value, must be a primitive or a Template");
+
+ // The template cache only performs shallow clones, if we set an
+ // ObjectTemplate as a property value then we can not cache the receiver
+ // template.
if (value_obj->IsObjectTemplateInfo()) {
- templ->set_serial_number(0);
- if (templ->IsFunctionTemplateInfo()) {
- i::Handle<i::FunctionTemplateInfo>::cast(templ)->set_do_not_cache(true);
- }
+ templ->set_serial_number(i::TemplateInfo::kDoNotCache);
}
+
i::ApiNatives::AddDataProperty(isolate, templ, Utils::OpenHandle(*name),
value_obj,
static_cast<i::PropertyAttributes>(attribute));
@@ -1145,8 +1152,9 @@ void Template::SetAccessorProperty(v8::Local<v8::Name> name,
}
// --- F u n c t i o n T e m p l a t e ---
-static void InitializeFunctionTemplate(i::FunctionTemplateInfo info) {
- InitializeTemplate(info, Consts::FUNCTION_TEMPLATE);
+static void InitializeFunctionTemplate(i::FunctionTemplateInfo info,
+ bool do_not_cache) {
+ InitializeTemplate(info, Consts::FUNCTION_TEMPLATE, do_not_cache);
info.set_flag(0);
}
@@ -1177,7 +1185,7 @@ void FunctionTemplate::SetPrototypeProviderTemplate(
Utils::OpenHandle(*prototype_provider);
Utils::ApiCheck(self->GetPrototypeTemplate().IsUndefined(i_isolate),
"v8::FunctionTemplate::SetPrototypeProviderTemplate",
- "Protoype must be undefiend");
+ "Protoype must be undefined");
Utils::ApiCheck(self->GetParentTemplate().IsUndefined(i_isolate),
"v8::FunctionTemplate::SetPrototypeProviderTemplate",
"Prototype provider must be empty");
@@ -1210,7 +1218,7 @@ static Local<FunctionTemplate> FunctionTemplateNew(
bool do_not_cache,
v8::Local<Private> cached_property_name = v8::Local<Private>(),
SideEffectType side_effect_type = SideEffectType::kHasSideEffect,
- const CFunction* c_function = nullptr) {
+ const MemorySpan<const CFunction>& c_function_overloads = {}) {
i::Handle<i::Struct> struct_obj = isolate->factory()->NewStruct(
i::FUNCTION_TEMPLATE_INFO_TYPE, i::AllocationType::kOld);
i::Handle<i::FunctionTemplateInfo> obj =
@@ -1219,14 +1227,8 @@ static Local<FunctionTemplate> FunctionTemplateNew(
// Disallow GC until all fields of obj have acceptable types.
i::DisallowGarbageCollection no_gc;
i::FunctionTemplateInfo raw = *obj;
- InitializeFunctionTemplate(raw);
+ InitializeFunctionTemplate(raw, do_not_cache);
raw.set_length(length);
- raw.set_do_not_cache(do_not_cache);
- int next_serial_number = i::FunctionTemplateInfo::kInvalidSerialNumber;
- if (!do_not_cache) {
- next_serial_number = isolate->heap()->GetNextTemplateSerialNumber();
- }
- raw.set_serial_number(next_serial_number);
raw.set_undetectable(false);
raw.set_needs_access_check(false);
raw.set_accept_any_receiver(true);
@@ -1241,7 +1243,7 @@ static Local<FunctionTemplate> FunctionTemplateNew(
}
if (callback != nullptr) {
Utils::ToLocal(obj)->SetCallHandler(callback, data, side_effect_type,
- c_function);
+ c_function_overloads);
}
return Utils::ToLocal(obj);
}
@@ -1255,10 +1257,24 @@ Local<FunctionTemplate> FunctionTemplate::New(
// function templates when the isolate is created for serialization.
LOG_API(i_isolate, FunctionTemplate, New);
ENTER_V8_NO_SCRIPT_NO_EXCEPTION(i_isolate);
- auto templ = FunctionTemplateNew(i_isolate, callback, data, signature, length,
- behavior, false, Local<Private>(),
- side_effect_type, c_function);
- return templ;
+ return FunctionTemplateNew(
+ i_isolate, callback, data, signature, length, behavior, false,
+ Local<Private>(), side_effect_type,
+ c_function ? MemorySpan<const CFunction>{c_function, 1}
+ : MemorySpan<const CFunction>{});
+}
+
+Local<FunctionTemplate> FunctionTemplate::NewWithCFunctionOverloads(
+ Isolate* isolate, FunctionCallback callback, v8::Local<Value> data,
+ v8::Local<Signature> signature, int length, ConstructorBehavior behavior,
+ SideEffectType side_effect_type,
+ const MemorySpan<const CFunction>& c_function_overloads) {
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ LOG_API(i_isolate, FunctionTemplate, New);
+ ENTER_V8_NO_SCRIPT_NO_EXCEPTION(i_isolate);
+ return FunctionTemplateNew(i_isolate, callback, data, signature, length,
+ behavior, false, Local<Private>(),
+ side_effect_type, c_function_overloads);
}
Local<FunctionTemplate> FunctionTemplate::NewWithCache(
@@ -1289,10 +1305,10 @@ Local<AccessorSignature> AccessorSignature::New(
(obj)->setter(*foreign); \
} while (false)
-void FunctionTemplate::SetCallHandler(FunctionCallback callback,
- v8::Local<Value> data,
- SideEffectType side_effect_type,
- const CFunction* c_function) {
+void FunctionTemplate::SetCallHandler(
+ FunctionCallback callback, v8::Local<Value> data,
+ SideEffectType side_effect_type,
+ const MemorySpan<const CFunction>& c_function_overloads) {
auto info = Utils::OpenHandle(this);
EnsureNotPublished(info, "v8::FunctionTemplate::SetCallHandler");
i::Isolate* isolate = info->GetIsolate();
@@ -1306,15 +1322,28 @@ void FunctionTemplate::SetCallHandler(FunctionCallback callback,
data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
}
obj->set_data(*Utils::OpenHandle(*data));
- // Blink passes CFunction's constructed with the default constructor
- // for non-fast calls, so we should check the address too.
- if (c_function != nullptr && c_function->GetAddress()) {
- i::FunctionTemplateInfo::SetCFunction(
- isolate, info,
- i::handle(*FromCData(isolate, c_function->GetAddress()), isolate));
- i::FunctionTemplateInfo::SetCSignature(
- isolate, info,
- i::handle(*FromCData(isolate, c_function->GetTypeInfo()), isolate));
+ if (c_function_overloads.size() > 0) {
+ // Stores the data for a sequence of CFunction overloads into a single
+ // FixedArray, as [address_0, signature_0, ... address_n-1, signature_n-1].
+ i::Handle<i::FixedArray> function_overloads =
+ isolate->factory()->NewFixedArray(static_cast<int>(
+ c_function_overloads.size() *
+ i::FunctionTemplateInfo::kFunctionOverloadEntrySize));
+ int function_count = static_cast<int>(c_function_overloads.size());
+ for (int i = 0; i < function_count; i++) {
+ const CFunction& c_function = c_function_overloads.data()[i];
+ i::Handle<i::Object> address =
+ FromCData(isolate, c_function.GetAddress());
+ function_overloads->set(
+ i::FunctionTemplateInfo::kFunctionOverloadEntrySize * i, *address);
+ i::Handle<i::Object> signature =
+ FromCData(isolate, c_function.GetTypeInfo());
+ function_overloads->set(
+ i::FunctionTemplateInfo::kFunctionOverloadEntrySize * i + 1,
+ *signature);
+ }
+ i::FunctionTemplateInfo::SetCFunctionOverloads(isolate, info,
+ function_overloads);
}
info->set_call_code(*obj, kReleaseStore);
}
@@ -1442,13 +1471,8 @@ static Local<ObjectTemplate> ObjectTemplateNew(
// Disallow GC until all fields of obj have acceptable types.
i::DisallowGarbageCollection no_gc;
i::ObjectTemplateInfo raw = *obj;
- InitializeTemplate(raw, Consts::OBJECT_TEMPLATE);
+ InitializeTemplate(raw, Consts::OBJECT_TEMPLATE, do_not_cache);
raw.set_data(0);
- int next_serial_number = 0;
- if (!do_not_cache) {
- next_serial_number = isolate->heap()->GetNextTemplateSerialNumber();
- }
- raw.set_serial_number(next_serial_number);
if (!constructor.IsEmpty()) {
raw.set_constructor(*Utils::OpenHandle(*constructor));
}
@@ -1920,26 +1944,44 @@ MaybeLocal<Value> Script::Run(Local<Context> context) {
ENTER_V8(isolate, context, Script, Run, MaybeLocal<Value>(),
InternalEscapableScope);
i::HistogramTimerScope execute_timer(isolate->counters()->execute(), true);
- i::AggregatingHistogramTimerScope timer(isolate->counters()->compile_lazy());
+ i::AggregatingHistogramTimerScope histogram_timer(
+ isolate->counters()->compile_lazy());
i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate);
auto fun = i::Handle<i::JSFunction>::cast(Utils::OpenHandle(this));
// TODO(crbug.com/1193459): remove once ablation study is completed
- if (i::FLAG_script_run_delay) {
- v8::base::OS::Sleep(
- v8::base::TimeDelta::FromMilliseconds(i::FLAG_script_run_delay));
+ base::ElapsedTimer timer;
+ base::TimeDelta delta;
+ if (i::FLAG_script_delay > 0) {
+ delta = v8::base::TimeDelta::FromMillisecondsD(i::FLAG_script_delay);
}
- if (i::FLAG_script_run_delay_once && !isolate->did_run_script_delay()) {
- v8::base::OS::Sleep(
- v8::base::TimeDelta::FromMilliseconds(i::FLAG_script_run_delay_once));
+ if (i::FLAG_script_delay_once > 0 && !isolate->did_run_script_delay()) {
+ delta = v8::base::TimeDelta::FromMillisecondsD(i::FLAG_script_delay_once);
isolate->set_did_run_script_delay(true);
}
+ if (i::FLAG_script_delay_fraction > 0.0) {
+ timer.Start();
+ } else if (delta.InMicroseconds() > 0) {
+ timer.Start();
+ while (timer.Elapsed() < delta) {
+ // Busy wait.
+ }
+ }
i::Handle<i::Object> receiver = isolate->global_proxy();
Local<Value> result;
has_pending_exception = !ToLocal<Value>(
i::Execution::Call(isolate, fun, receiver, 0, nullptr), &result);
+ if (i::FLAG_script_delay_fraction > 0.0) {
+ delta = v8::base::TimeDelta::FromMillisecondsD(
+ timer.Elapsed().InMillisecondsF() * i::FLAG_script_delay_fraction);
+ timer.Restart();
+ while (timer.Elapsed() < delta) {
+ // Busy wait.
+ }
+ }
+
RETURN_ON_FAILED_EXECUTION(Value);
RETURN_ESCAPED(result);
}
@@ -4053,34 +4095,56 @@ Maybe<bool> v8::Object::CreateDataProperty(v8::Local<v8::Context> context,
v8::Local<Name> key,
v8::Local<Value> value) {
auto isolate = reinterpret_cast<i::Isolate*>(context->GetIsolate());
- ENTER_V8(isolate, context, Object, CreateDataProperty, Nothing<bool>(),
- i::HandleScope);
i::Handle<i::JSReceiver> self = Utils::OpenHandle(this);
i::Handle<i::Name> key_obj = Utils::OpenHandle(*key);
i::Handle<i::Object> value_obj = Utils::OpenHandle(*value);
- Maybe<bool> result = i::JSReceiver::CreateDataProperty(
- isolate, self, key_obj, value_obj, Just(i::kDontThrow));
- has_pending_exception = result.IsNothing();
- RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool);
- return result;
+ i::LookupIterator::Key lookup_key(isolate, key_obj);
+ i::LookupIterator it(isolate, self, lookup_key, i::LookupIterator::OWN);
+ if (self->IsJSProxy()) {
+ ENTER_V8(isolate, context, Object, CreateDataProperty, Nothing<bool>(),
+ i::HandleScope);
+ Maybe<bool> result =
+ i::JSReceiver::CreateDataProperty(&it, value_obj, Just(i::kDontThrow));
+ has_pending_exception = result.IsNothing();
+ RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool);
+ return result;
+ } else {
+ ENTER_V8_NO_SCRIPT(isolate, context, Object, CreateDataProperty,
+ Nothing<bool>(), i::HandleScope);
+ Maybe<bool> result =
+ i::JSObject::CreateDataProperty(&it, value_obj, Just(i::kDontThrow));
+ has_pending_exception = result.IsNothing();
+ RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool);
+ return result;
+ }
}
Maybe<bool> v8::Object::CreateDataProperty(v8::Local<v8::Context> context,
uint32_t index,
v8::Local<Value> value) {
auto isolate = reinterpret_cast<i::Isolate*>(context->GetIsolate());
- ENTER_V8(isolate, context, Object, CreateDataProperty, Nothing<bool>(),
- i::HandleScope);
i::Handle<i::JSReceiver> self = Utils::OpenHandle(this);
i::Handle<i::Object> value_obj = Utils::OpenHandle(*value);
i::LookupIterator it(isolate, self, index, self, i::LookupIterator::OWN);
- Maybe<bool> result =
- i::JSReceiver::CreateDataProperty(&it, value_obj, Just(i::kDontThrow));
- has_pending_exception = result.IsNothing();
- RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool);
- return result;
+ if (self->IsJSProxy()) {
+ ENTER_V8(isolate, context, Object, CreateDataProperty, Nothing<bool>(),
+ i::HandleScope);
+ Maybe<bool> result =
+ i::JSReceiver::CreateDataProperty(&it, value_obj, Just(i::kDontThrow));
+ has_pending_exception = result.IsNothing();
+ RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool);
+ return result;
+ } else {
+ ENTER_V8_NO_SCRIPT(isolate, context, Object, CreateDataProperty,
+ Nothing<bool>(), i::HandleScope);
+ Maybe<bool> result =
+ i::JSObject::CreateDataProperty(&it, value_obj, Just(i::kDontThrow));
+ has_pending_exception = result.IsNothing();
+ RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool);
+ return result;
+ }
}
struct v8::PropertyDescriptor::PrivateData {
@@ -4330,17 +4394,27 @@ Local<Value> v8::Object::GetPrototype() {
Maybe<bool> v8::Object::SetPrototype(Local<Context> context,
Local<Value> value) {
auto isolate = reinterpret_cast<i::Isolate*>(context->GetIsolate());
- ENTER_V8(isolate, context, Object, SetPrototype, Nothing<bool>(),
- i::HandleScope);
auto self = Utils::OpenHandle(this);
auto value_obj = Utils::OpenHandle(*value);
- // We do not allow exceptions thrown while setting the prototype
- // to propagate outside.
- TryCatch try_catch(reinterpret_cast<v8::Isolate*>(isolate));
- auto result =
- i::JSReceiver::SetPrototype(self, value_obj, false, i::kThrowOnError);
- has_pending_exception = result.IsNothing();
- RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool);
+ if (self->IsJSProxy()) {
+ ENTER_V8(isolate, context, Object, SetPrototype, Nothing<bool>(),
+ i::HandleScope);
+ // We do not allow exceptions thrown while setting the prototype
+ // to propagate outside.
+ TryCatch try_catch(reinterpret_cast<v8::Isolate*>(isolate));
+ auto result = i::JSProxy::SetPrototype(i::Handle<i::JSProxy>::cast(self),
+ value_obj, false, i::kThrowOnError);
+ has_pending_exception = result.IsNothing();
+ RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool);
+ } else {
+ ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate);
+ auto result = i::JSObject::SetPrototype(i::Handle<i::JSObject>::cast(self),
+ value_obj, false, i::kThrowOnError);
+ if (result.IsNothing()) {
+ isolate->clear_pending_exception();
+ return Nothing<bool>();
+ }
+ }
return Just(true);
}
@@ -5015,25 +5089,6 @@ Local<Value> Function::GetDebugName() const {
return Utils::ToLocal(i::Handle<i::Object>(*name, self->GetIsolate()));
}
-Local<Value> Function::GetDisplayName() const {
- auto self = Utils::OpenHandle(this);
- i::Isolate* isolate = self->GetIsolate();
- ENTER_V8_NO_SCRIPT_NO_EXCEPTION(isolate);
- if (!self->IsJSFunction()) {
- return ToApiHandle<Primitive>(isolate->factory()->undefined_value());
- }
- auto func = i::Handle<i::JSFunction>::cast(self);
- i::Handle<i::String> property_name =
- isolate->factory()->InternalizeString(i::StaticCharVector("displayName"));
- i::Handle<i::Object> value =
- i::JSReceiver::GetDataProperty(func, property_name);
- if (value->IsString()) {
- i::Handle<i::String> name = i::Handle<i::String>::cast(value);
- if (name->length() > 0) return Utils::ToLocal(name);
- }
- return ToApiHandle<Primitive>(isolate->factory()->undefined_value());
-}
-
ScriptOrigin Function::GetScriptOrigin() const {
auto self = Utils::OpenHandle(this);
auto isolate = reinterpret_cast<v8::Isolate*>(self->GetIsolate());
@@ -5590,19 +5645,33 @@ Local<Value> Symbol::Description() const {
// RO_SPACE. Since RO_SPACE objects are immovable we can use the
// Handle(Address*) constructor with the address of the description
// field in the Symbol object without needing an isolate.
- DCHECK(!COMPRESS_POINTERS_BOOL);
+ DCHECK(!COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL);
+#ifndef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
i::Handle<i::HeapObject> ro_description(reinterpret_cast<i::Address*>(
sym->GetFieldAddress(i::Symbol::kDescriptionOffset)));
return Utils::ToLocal(ro_description);
+#else
+ isolate = reinterpret_cast<i::Isolate*>(Isolate::GetCurrent());
+#endif
}
- i::Handle<i::Object> description(sym->description(), isolate);
+ return Description(reinterpret_cast<Isolate*>(isolate));
+}
+Local<Value> Symbol::Description(Isolate* isolate) const {
+ i::Handle<i::Symbol> sym = Utils::OpenHandle(this);
+ i::Handle<i::Object> description(sym->description(),
+ reinterpret_cast<i::Isolate*>(isolate));
return Utils::ToLocal(description);
}
Local<Value> Private::Name() const {
- return reinterpret_cast<const Symbol*>(this)->Description();
+ const Symbol* sym = reinterpret_cast<const Symbol*>(this);
+ i::Handle<i::Symbol> i_sym = Utils::OpenHandle(sym);
+ // v8::Private symbols are created by API and are therefore writable, so we
+ // can always recover an Isolate.
+ i::Isolate* isolate = i::GetIsolateFromWritableObject(*i_sym);
+ return sym->Description(reinterpret_cast<Isolate*>(isolate));
}
double Number::Value() const {
@@ -5886,12 +5955,7 @@ void V8::GetSharedMemoryStatistics(SharedMemoryStatistics* statistics) {
i::ReadOnlyHeap::PopulateReadOnlySpaceStatistics(statistics);
}
-void V8::SetIsCrossOriginIsolated() {
- i::FLAG_harmony_sharedarraybuffer = true;
-#if V8_ENABLE_WEBASSEMBLY
- i::FLAG_experimental_wasm_threads = true;
-#endif // V8_ENABLE_WEBASSEMBLY
-}
+void V8::SetIsCrossOriginIsolated() {}
template <typename ObjectType>
struct InvokeBootstrapper;
@@ -6273,6 +6337,11 @@ metrics::Recorder::ContextId metrics::Recorder::GetContextId(
handle(i_context->native_context(), isolate));
}
+metrics::LongTaskStats metrics::LongTaskStats::Get(v8::Isolate* isolate) {
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ return *i_isolate->GetCurrentLongTaskStats();
+}
+
namespace {
i::Address* GetSerializedDataFromFixedArray(i::Isolate* isolate,
i::FixedArray list, size_t index) {
@@ -6391,6 +6460,16 @@ bool FunctionTemplate::HasInstance(v8::Local<v8::Value> value) {
return false;
}
+bool FunctionTemplate::IsLeafTemplateForApiObject(
+ v8::Local<v8::Value> value) const {
+ i::DisallowGarbageCollection no_gc;
+
+ i::Object object = *Utils::OpenHandle(*value);
+
+ auto self = Utils::OpenHandle(this);
+ return self->IsLeafTemplateForApiObject(object);
+}
+
Local<External> v8::External::New(Isolate* isolate, void* value) {
STATIC_ASSERT(sizeof(value) == sizeof(i::Address));
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
@@ -8004,6 +8083,10 @@ v8::Local<v8::Context> Isolate::GetIncumbentContext() {
return Utils::ToLocal(context);
}
+v8::Local<Value> Isolate::ThrowError(v8::Local<v8::String> message) {
+ return ThrowException(v8::Exception::Error(message));
+}
+
v8::Local<Value> Isolate::ThrowException(v8::Local<v8::Value> value) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
ENTER_V8_DO_NOT_USE(isolate);
@@ -8076,6 +8159,11 @@ EmbedderHeapTracer* Isolate::GetEmbedderHeapTracer() {
return isolate->heap()->GetEmbedderHeapTracer();
}
+void Isolate::SetEmbedderRootsHandler(EmbedderRootsHandler* handler) {
+ i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
+ isolate->heap()->SetEmbedderRootsHandler(handler);
+}
+
void Isolate::AttachCppHeap(CppHeap* cpp_heap) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
isolate->heap()->AttachCppHeap(cpp_heap);
@@ -8494,10 +8582,11 @@ bool Isolate::GetHeapSpaceStatistics(HeapSpaceStatistics* space_statistics,
}
} else {
i::Space* space = heap->space(static_cast<int>(index));
- space_statistics->space_size_ = space->CommittedMemory();
- space_statistics->space_used_size_ = space->SizeOfObjects();
- space_statistics->space_available_size_ = space->Available();
- space_statistics->physical_space_size_ = space->CommittedPhysicalMemory();
+ space_statistics->space_size_ = space ? space->CommittedMemory() : 0;
+ space_statistics->space_used_size_ = space ? space->SizeOfObjects() : 0;
+ space_statistics->space_available_size_ = space ? space->Available() : 0;
+ space_statistics->physical_space_size_ =
+ space ? space->CommittedPhysicalMemory() : 0;
}
return true;
}
@@ -8845,10 +8934,9 @@ void Isolate::SetStackLimit(uintptr_t stack_limit) {
void Isolate::GetCodeRange(void** start, size_t* length_in_bytes) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
- const base::AddressRegion& code_range =
- isolate->heap()->memory_allocator()->code_range();
- *start = reinterpret_cast<void*>(code_range.begin());
- *length_in_bytes = code_range.size();
+ const base::AddressRegion& code_region = isolate->heap()->code_region();
+ *start = reinterpret_cast<void*>(code_region.begin());
+ *length_in_bytes = code_region.size();
}
void Isolate::GetEmbeddedCodeRange(const void** start,
@@ -8930,12 +9018,19 @@ CALLBACK_SETTER(WasmSimdEnabledCallback, WasmSimdEnabledCallback,
CALLBACK_SETTER(WasmExceptionsEnabledCallback, WasmExceptionsEnabledCallback,
wasm_exceptions_enabled_callback)
+CALLBACK_SETTER(SharedArrayBufferConstructorEnabledCallback,
+ SharedArrayBufferConstructorEnabledCallback,
+ sharedarraybuffer_constructor_enabled_callback)
+
void Isolate::InstallConditionalFeatures(Local<Context> context) {
-#if V8_ENABLE_WEBASSEMBLY
v8::HandleScope handle_scope(this);
v8::Context::Scope context_scope(context);
- i::WasmJs::InstallConditionalFeatures(reinterpret_cast<i::Isolate*>(this),
- Utils::OpenHandle(*context));
+ i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
+ isolate->InstallConditionalFeatures(Utils::OpenHandle(*context));
+#if V8_ENABLE_WEBASSEMBLY
+ if (i::FLAG_expose_wasm) {
+ i::WasmJs::InstallConditionalFeatures(isolate, Utils::OpenHandle(*context));
+ }
#endif // V8_ENABLE_WEBASSEMBLY
}
@@ -9418,7 +9513,21 @@ CpuProfilingOptions::CpuProfilingOptions(CpuProfilingMode mode,
MaybeLocal<Context> filter_context)
: mode_(mode),
max_samples_(max_samples),
- sampling_interval_us_(sampling_interval_us) {}
+ sampling_interval_us_(sampling_interval_us) {
+ if (!filter_context.IsEmpty()) {
+ Local<Context> local_filter_context = filter_context.ToLocalChecked();
+ filter_context_.Reset(local_filter_context->GetIsolate(),
+ local_filter_context);
+ filter_context_.SetWeak();
+ }
+}
+
+void* CpuProfilingOptions::raw_filter_context() const {
+ return reinterpret_cast<void*>(
+ i::Context::cast(*Utils::OpenPersistent(filter_context_))
+ .native_context()
+ .address());
+}
void CpuProfiler::Dispose() { delete reinterpret_cast<i::CpuProfiler*>(this); }
@@ -9699,10 +9808,11 @@ void HeapProfiler::ClearObjectIds() {
const HeapSnapshot* HeapProfiler::TakeHeapSnapshot(
ActivityControl* control, ObjectNameResolver* resolver,
- bool treat_global_objects_as_roots) {
+ bool treat_global_objects_as_roots, bool capture_numeric_value) {
return reinterpret_cast<const HeapSnapshot*>(
reinterpret_cast<i::HeapProfiler*>(this)->TakeSnapshot(
- control, resolver, treat_global_objects_as_roots));
+ control, resolver, treat_global_objects_as_roots,
+ capture_numeric_value));
}
void HeapProfiler::StartTrackingHeapObjects(bool track_allocations) {
@@ -9766,7 +9876,8 @@ void EmbedderHeapTracer::SetStackStart(void* stack_start) {
void EmbedderHeapTracer::NotifyEmptyEmbedderStack() {
CHECK(isolate_);
reinterpret_cast<i::Isolate*>(isolate_)
- ->global_handles()
+ ->heap()
+ ->local_embedder_heap_tracer()
->NotifyEmptyEmbedderStack();
}
@@ -10065,8 +10176,7 @@ void InvokeAccessorGetterCallback(
v8::AccessorNameGetterCallback getter) {
// Leaving JavaScript.
Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kAccessorGetterCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kAccessorGetterCallback);
Address getter_address = reinterpret_cast<Address>(getter);
VMState<EXTERNAL> state(isolate);
ExternalCallbackScope call_scope(isolate, getter_address);
@@ -10076,7 +10186,7 @@ void InvokeAccessorGetterCallback(
void InvokeFunctionCallback(const v8::FunctionCallbackInfo<v8::Value>& info,
v8::FunctionCallback callback) {
Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kFunctionCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kFunctionCallback);
Address callback_address = reinterpret_cast<Address>(callback);
VMState<EXTERNAL> state(isolate);
ExternalCallbackScope call_scope(isolate, callback_address);
@@ -10088,8 +10198,8 @@ void InvokeFinalizationRegistryCleanupFromTask(
Handle<JSFinalizationRegistry> finalization_registry,
Handle<Object> callback) {
Isolate* isolate = finalization_registry->native_context().GetIsolate();
- RuntimeCallTimerScope timer(
- isolate, RuntimeCallCounterId::kFinalizationRegistryCleanupFromTask);
+ RCS_SCOPE(isolate,
+ RuntimeCallCounterId::kFinalizationRegistryCleanupFromTask);
// Do not use ENTER_V8 because this is always called from a running
// FinalizationRegistryCleanupTask within V8 and we should not log it as an
// API call. This method is implemented here to avoid duplication of the
diff --git a/deps/v8/src/ast/ast-value-factory.cc b/deps/v8/src/ast/ast-value-factory.cc
index 6e454b22f1..a300359a0a 100644
--- a/deps/v8/src/ast/ast-value-factory.cc
+++ b/deps/v8/src/ast/ast-value-factory.cc
@@ -61,8 +61,8 @@ class OneByteStringStream {
} // namespace
-template <typename LocalIsolate>
-void AstRawString::Internalize(LocalIsolate* isolate) {
+template <typename IsolateT>
+void AstRawString::Internalize(IsolateT* isolate) {
DCHECK(!has_string_);
if (literal_bytes_.length() == 0) {
set_string(isolate->factory()->empty_string());
@@ -185,8 +185,8 @@ int AstRawString::Compare(const AstRawString* lhs, const AstRawString* rhs) {
return lhs->byte_length() - rhs->byte_length();
}
-template <typename LocalIsolate>
-Handle<String> AstConsString::Allocate(LocalIsolate* isolate) const {
+template <typename IsolateT>
+Handle<String> AstConsString::Allocate(IsolateT* isolate) const {
DCHECK(string_.is_null());
if (IsEmpty()) {
@@ -210,8 +210,8 @@ template EXPORT_TEMPLATE_DEFINE(V8_EXPORT_PRIVATE)
Handle<String> AstConsString::Allocate<LocalIsolate>(
LocalIsolate* isolate) const;
-template <typename LocalIsolate>
-Handle<String> AstConsString::AllocateFlat(LocalIsolate* isolate) const {
+template <typename IsolateT>
+Handle<String> AstConsString::AllocateFlat(IsolateT* isolate) const {
if (IsEmpty()) {
return isolate->factory()->empty_string();
}
@@ -370,8 +370,8 @@ AstConsString* AstValueFactory::NewConsString(const AstRawString* str1,
return NewConsString()->AddString(zone(), str1)->AddString(zone(), str2);
}
-template <typename LocalIsolate>
-void AstValueFactory::Internalize(LocalIsolate* isolate) {
+template <typename IsolateT>
+void AstValueFactory::Internalize(IsolateT* isolate) {
if (!zone_) return;
// Strings need to be internalized before values, because values refer to
diff --git a/deps/v8/src/ast/ast-value-factory.h b/deps/v8/src/ast/ast-value-factory.h
index b66e11f99f..290da7838f 100644
--- a/deps/v8/src/ast/ast-value-factory.h
+++ b/deps/v8/src/ast/ast-value-factory.h
@@ -65,8 +65,8 @@ class AstRawString final : public ZoneObject {
V8_EXPORT_PRIVATE bool IsOneByteEqualTo(const char* data) const;
uint16_t FirstCharacter() const;
- template <typename LocalIsolate>
- void Internalize(LocalIsolate* isolate);
+ template <typename IsolateT>
+ void Internalize(IsolateT* isolate);
// Access the physical representation:
bool is_one_byte() const { return is_one_byte_; }
@@ -161,17 +161,17 @@ class AstConsString final : public ZoneObject {
return segment_.string == nullptr;
}
- template <typename LocalIsolate>
- Handle<String> GetString(LocalIsolate* isolate) {
+ template <typename IsolateT>
+ Handle<String> GetString(IsolateT* isolate) {
if (string_.is_null()) {
string_ = Allocate(isolate);
}
return string_;
}
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<String> AllocateFlat(LocalIsolate* isolate) const;
+ Handle<String> AllocateFlat(IsolateT* isolate) const;
std::forward_list<const AstRawString*> ToRawStrings() const;
@@ -181,9 +181,9 @@ class AstConsString final : public ZoneObject {
AstConsString() : string_(), segment_({nullptr, nullptr}) {}
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<String> Allocate(LocalIsolate* isolate) const;
+ Handle<String> Allocate(IsolateT* isolate) const;
Handle<String> string_;
@@ -354,8 +354,8 @@ class AstValueFactory {
// Internalize all the strings in the factory, and prevent any more from being
// allocated. Multiple calls to Internalize are allowed, for simplicity, where
// subsequent calls are a no-op.
- template <typename LocalIsolate>
- void Internalize(LocalIsolate* isolate);
+ template <typename IsolateT>
+ void Internalize(IsolateT* isolate);
#define F(name, str) \
const AstRawString* name##_string() const { \
diff --git a/deps/v8/src/ast/ast.cc b/deps/v8/src/ast/ast.cc
index 5515a4a3fc..3054f99f1c 100644
--- a/deps/v8/src/ast/ast.cc
+++ b/deps/v8/src/ast/ast.cc
@@ -443,8 +443,8 @@ int ObjectLiteral::InitDepthAndFlags() {
return depth_acc;
}
-template <typename LocalIsolate>
-void ObjectLiteral::BuildBoilerplateDescription(LocalIsolate* isolate) {
+template <typename IsolateT>
+void ObjectLiteral::BuildBoilerplateDescription(IsolateT* isolate) {
if (!boilerplate_description_.is_null()) return;
int index_keys = 0;
@@ -597,8 +597,8 @@ int ArrayLiteral::InitDepthAndFlags() {
return depth_acc;
}
-template <typename LocalIsolate>
-void ArrayLiteral::BuildBoilerplateDescription(LocalIsolate* isolate) {
+template <typename IsolateT>
+void ArrayLiteral::BuildBoilerplateDescription(IsolateT* isolate) {
if (!boilerplate_description_.is_null()) return;
int constants_length =
@@ -642,7 +642,7 @@ void ArrayLiteral::BuildBoilerplateDescription(LocalIsolate* isolate) {
}
// New handle scope here, needs to be after BuildContants().
- typename LocalIsolate::HandleScopeType scope(isolate);
+ typename IsolateT::HandleScopeType scope(isolate);
Object boilerplate_value = *GetBoilerplateValue(element, isolate);
// We shouldn't allocate after creating the boilerplate value.
@@ -697,9 +697,9 @@ bool MaterializedLiteral::IsSimple() const {
return false;
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Object> MaterializedLiteral::GetBoilerplateValue(Expression* expression,
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
if (expression->IsLiteral()) {
return expression->AsLiteral()->BuildValue(isolate);
}
@@ -742,8 +742,8 @@ bool MaterializedLiteral::NeedsInitialAllocationSite() {
return false;
}
-template <typename LocalIsolate>
-void MaterializedLiteral::BuildConstants(LocalIsolate* isolate) {
+template <typename IsolateT>
+void MaterializedLiteral::BuildConstants(IsolateT* isolate) {
if (IsArrayLiteral()) {
AsArrayLiteral()->BuildBoilerplateDescription(isolate);
return;
@@ -760,9 +760,9 @@ template EXPORT_TEMPLATE_DEFINE(
V8_BASE_EXPORT) void MaterializedLiteral::BuildConstants(LocalIsolate*
isolate);
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<TemplateObjectDescription> GetTemplateObject::GetOrBuildDescription(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
Handle<FixedArray> raw_strings = isolate->factory()->NewFixedArray(
this->raw_strings()->length(), AllocationType::kOld);
bool raw_and_cooked_match = true;
@@ -978,8 +978,8 @@ bool Literal::AsArrayIndex(uint32_t* value) const {
return ToUint32(value) && *value != kMaxUInt32;
}
-template <typename LocalIsolate>
-Handle<Object> Literal::BuildValue(LocalIsolate* isolate) const {
+template <typename IsolateT>
+Handle<Object> Literal::BuildValue(IsolateT* isolate) const {
switch (type()) {
case kSmi:
return handle(Smi::FromInt(smi_), isolate);
diff --git a/deps/v8/src/ast/ast.h b/deps/v8/src/ast/ast.h
index e11e6c458f..e9c8592001 100644
--- a/deps/v8/src/ast/ast.h
+++ b/deps/v8/src/ast/ast.h
@@ -986,8 +986,8 @@ class Literal final : public Expression {
// Returns an appropriate Object representing this Literal, allocating
// a heap object if needed.
- template <typename LocalIsolate>
- Handle<Object> BuildValue(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ Handle<Object> BuildValue(IsolateT* isolate) const;
// Support for using Literal as a HashMap key. NOTE: Currently, this works
// only for string and number literals!
@@ -1058,17 +1058,16 @@ class MaterializedLiteral : public Expression {
bool NeedsInitialAllocationSite();
// Populate the constant properties/elements fixed array.
- template <typename LocalIsolate>
- void BuildConstants(LocalIsolate* isolate);
+ template <typename IsolateT>
+ void BuildConstants(IsolateT* isolate);
// If the expression is a literal, return the literal value;
// if the expression is a materialized literal and is_simple
// then return an Array or Object Boilerplate Description
// Otherwise, return undefined literal as the placeholder
// in the object literal boilerplate.
- template <typename LocalIsolate>
- Handle<Object> GetBoilerplateValue(Expression* expression,
- LocalIsolate* isolate);
+ template <typename IsolateT>
+ Handle<Object> GetBoilerplateValue(Expression* expression, IsolateT* isolate);
};
// Node for capturing a regexp literal.
@@ -1265,9 +1264,9 @@ class ObjectLiteral final : public AggregateLiteral {
int InitDepthAndFlags();
// Get the boilerplate description, populating it if necessary.
- template <typename LocalIsolate>
+ template <typename IsolateT>
Handle<ObjectBoilerplateDescription> GetOrBuildBoilerplateDescription(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
if (boilerplate_description_.is_null()) {
BuildBoilerplateDescription(isolate);
}
@@ -1275,8 +1274,8 @@ class ObjectLiteral final : public AggregateLiteral {
}
// Populate the boilerplate description.
- template <typename LocalIsolate>
- void BuildBoilerplateDescription(LocalIsolate* isolate);
+ template <typename IsolateT>
+ void BuildBoilerplateDescription(IsolateT* isolate);
// Mark all computed expressions that are bound to a key that
// is shadowed by a later occurrence of the same key. For the
@@ -1366,9 +1365,9 @@ class ArrayLiteral final : public AggregateLiteral {
int InitDepthAndFlags();
// Get the boilerplate description, populating it if necessary.
- template <typename LocalIsolate>
+ template <typename IsolateT>
Handle<ArrayBoilerplateDescription> GetOrBuildBoilerplateDescription(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
if (boilerplate_description_.is_null()) {
BuildBoilerplateDescription(isolate);
}
@@ -1376,8 +1375,8 @@ class ArrayLiteral final : public AggregateLiteral {
}
// Populate the boilerplate description.
- template <typename LocalIsolate>
- void BuildBoilerplateDescription(LocalIsolate* isolate);
+ template <typename IsolateT>
+ void BuildBoilerplateDescription(IsolateT* isolate);
// Determines whether the {CreateShallowArrayLiteral} builtin can be used.
bool IsFastCloningSupported() const;
@@ -2121,8 +2120,8 @@ class FunctionLiteral final : public Expression {
// Empty handle means that the function does not have a shared name (i.e.
// the name will be set dynamically after creation of the function closure).
- template <typename LocalIsolate>
- MaybeHandle<String> GetName(LocalIsolate* isolate) const {
+ template <typename IsolateT>
+ MaybeHandle<String> GetName(IsolateT* isolate) const {
return raw_name_ ? raw_name_->AllocateFlat(isolate) : MaybeHandle<String>();
}
bool has_shared_name() const { return raw_name_ != nullptr; }
@@ -2644,9 +2643,8 @@ class GetTemplateObject final : public Expression {
return raw_strings_;
}
- template <typename LocalIsolate>
- Handle<TemplateObjectDescription> GetOrBuildDescription(
- LocalIsolate* isolate);
+ template <typename IsolateT>
+ Handle<TemplateObjectDescription> GetOrBuildDescription(IsolateT* isolate);
private:
friend class AstNodeFactory;
diff --git a/deps/v8/src/ast/modules.cc b/deps/v8/src/ast/modules.cc
index 62dc619141..6d1bff226d 100644
--- a/deps/v8/src/ast/modules.cc
+++ b/deps/v8/src/ast/modules.cc
@@ -116,17 +116,17 @@ void SourceTextModuleDescriptor::AddStarExport(
}
namespace {
-template <typename LocalIsolate>
-Handle<PrimitiveHeapObject> ToStringOrUndefined(LocalIsolate* isolate,
+template <typename IsolateT>
+Handle<PrimitiveHeapObject> ToStringOrUndefined(IsolateT* isolate,
const AstRawString* s) {
if (s == nullptr) return isolate->factory()->undefined_value();
return s->string();
}
} // namespace
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<ModuleRequest> SourceTextModuleDescriptor::AstModuleRequest::Serialize(
- LocalIsolate* isolate) const {
+ IsolateT* isolate) const {
// The import assertions will be stored in this array in the form:
// [key1, value1, location1, key2, value2, location2, ...]
Handle<FixedArray> import_assertions_array =
@@ -151,9 +151,9 @@ template Handle<ModuleRequest>
SourceTextModuleDescriptor::AstModuleRequest::Serialize(
LocalIsolate* isolate) const;
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SourceTextModuleInfoEntry> SourceTextModuleDescriptor::Entry::Serialize(
- LocalIsolate* isolate) const {
+ IsolateT* isolate) const {
CHECK(Smi::IsValid(module_request)); // TODO(neis): Check earlier?
return SourceTextModuleInfoEntry::New(
isolate, ToStringOrUndefined(isolate, export_name),
@@ -166,9 +166,9 @@ SourceTextModuleDescriptor::Entry::Serialize(Isolate* isolate) const;
template Handle<SourceTextModuleInfoEntry>
SourceTextModuleDescriptor::Entry::Serialize(LocalIsolate* isolate) const;
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<FixedArray> SourceTextModuleDescriptor::SerializeRegularExports(
- LocalIsolate* isolate, Zone* zone) const {
+ IsolateT* isolate, Zone* zone) const {
// We serialize regular exports in a way that lets us later iterate over their
// local names and for each local name immediately access all its export
// names. (Regular exports have neither import name nor module request.)
diff --git a/deps/v8/src/ast/modules.h b/deps/v8/src/ast/modules.h
index f776d2b522..f496a0bb85 100644
--- a/deps/v8/src/ast/modules.h
+++ b/deps/v8/src/ast/modules.h
@@ -115,8 +115,8 @@ class SourceTextModuleDescriptor : public ZoneObject {
module_request(-1),
cell_index(0) {}
- template <typename LocalIsolate>
- Handle<SourceTextModuleInfoEntry> Serialize(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ Handle<SourceTextModuleInfoEntry> Serialize(IsolateT* isolate) const;
};
enum CellIndexKind { kInvalid, kExport, kImport };
@@ -132,8 +132,8 @@ class SourceTextModuleDescriptor : public ZoneObject {
position_(position),
index_(index) {}
- template <typename LocalIsolate>
- Handle<v8::internal::ModuleRequest> Serialize(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ Handle<v8::internal::ModuleRequest> Serialize(IsolateT* isolate) const;
const AstRawString* specifier() const { return specifier_; }
const ImportAssertions* import_assertions() const {
@@ -225,8 +225,8 @@ class SourceTextModuleDescriptor : public ZoneObject {
namespace_imports_.push_back(entry);
}
- template <typename LocalIsolate>
- Handle<FixedArray> SerializeRegularExports(LocalIsolate* isolate,
+ template <typename IsolateT>
+ Handle<FixedArray> SerializeRegularExports(IsolateT* isolate,
Zone* zone) const;
private:
diff --git a/deps/v8/src/ast/scopes.cc b/deps/v8/src/ast/scopes.cc
index de9b25a5c5..e5b621a283 100644
--- a/deps/v8/src/ast/scopes.cc
+++ b/deps/v8/src/ast/scopes.cc
@@ -623,9 +623,9 @@ void DeclarationScope::HoistSloppyBlockFunctions(AstNodeFactory* factory) {
}
bool DeclarationScope::Analyze(ParseInfo* info) {
- RuntimeCallTimerScope runtimeTimer(
- info->runtime_call_stats(), RuntimeCallCounterId::kCompileScopeAnalysis,
- RuntimeCallStats::kThreadSpecific);
+ RCS_SCOPE(info->runtime_call_stats(),
+ RuntimeCallCounterId::kCompileScopeAnalysis,
+ RuntimeCallStats::kThreadSpecific);
DCHECK_NOT_NULL(info->literal());
DeclarationScope* scope = info->literal()->scope();
@@ -2532,8 +2532,8 @@ void Scope::AllocateVariablesRecursively() {
});
}
-template <typename LocalIsolate>
-void Scope::AllocateScopeInfosRecursively(LocalIsolate* isolate,
+template <typename IsolateT>
+void Scope::AllocateScopeInfosRecursively(IsolateT* isolate,
MaybeHandle<ScopeInfo> outer_scope) {
DCHECK(scope_info_.is_null());
MaybeHandle<ScopeInfo> next_outer_scope = outer_scope;
@@ -2603,9 +2603,8 @@ void DeclarationScope::RecordNeedsPrivateNameContextChainRecalc() {
}
// static
-template <typename LocalIsolate>
-void DeclarationScope::AllocateScopeInfos(ParseInfo* info,
- LocalIsolate* isolate) {
+template <typename IsolateT>
+void DeclarationScope::AllocateScopeInfos(ParseInfo* info, IsolateT* isolate) {
DeclarationScope* scope = info->literal()->scope();
// No one else should have allocated a scope info for this scope yet.
diff --git a/deps/v8/src/ast/scopes.h b/deps/v8/src/ast/scopes.h
index 717c797383..2aa0c23767 100644
--- a/deps/v8/src/ast/scopes.h
+++ b/deps/v8/src/ast/scopes.h
@@ -716,8 +716,8 @@ class V8_EXPORT_PRIVATE Scope : public NON_EXPORTED_BASE(ZoneObject) {
V8_INLINE void AllocateNonParameterLocalsAndDeclaredGlobals();
void AllocateVariablesRecursively();
- template <typename LocalIsolate>
- void AllocateScopeInfosRecursively(LocalIsolate* isolate,
+ template <typename IsolateT>
+ void AllocateScopeInfosRecursively(IsolateT* isolate,
MaybeHandle<ScopeInfo> outer_scope);
void AllocateDebuggerScopeInfos(Isolate* isolate,
@@ -1151,9 +1151,9 @@ class V8_EXPORT_PRIVATE DeclarationScope : public Scope {
// Allocate ScopeInfos for top scope and any inner scopes that need them.
// Does nothing if ScopeInfo is already allocated.
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_EXPORT_PRIVATE static void AllocateScopeInfos(ParseInfo* info,
- LocalIsolate* isolate);
+ IsolateT* isolate);
Handle<StringSet> CollectNonLocals(Isolate* isolate,
Handle<StringSet> non_locals);
diff --git a/deps/v8/src/ast/variables.cc b/deps/v8/src/ast/variables.cc
index da2d8387f5..4f1f46150f 100644
--- a/deps/v8/src/ast/variables.cc
+++ b/deps/v8/src/ast/variables.cc
@@ -30,14 +30,15 @@ bool Variable::IsGlobalObjectProperty() const {
scope_ != nullptr && scope_->is_script_scope();
}
-bool Variable::IsReplGlobalLet() const {
- return scope()->is_repl_mode_scope() && mode() == VariableMode::kLet;
+bool Variable::IsReplGlobal() const {
+ return scope()->is_repl_mode_scope() &&
+ (mode() == VariableMode::kLet || mode() == VariableMode::kConst);
}
void Variable::RewriteLocationForRepl() {
DCHECK(scope_->is_repl_mode_scope());
- if (mode() == VariableMode::kLet) {
+ if (mode() == VariableMode::kLet || mode() == VariableMode::kConst) {
DCHECK_EQ(location(), VariableLocation::CONTEXT);
bit_field_ =
LocationField::update(bit_field_, VariableLocation::REPL_GLOBAL);
diff --git a/deps/v8/src/ast/variables.h b/deps/v8/src/ast/variables.h
index 7c6ee4324e..ec31eb0689 100644
--- a/deps/v8/src/ast/variables.h
+++ b/deps/v8/src/ast/variables.h
@@ -125,8 +125,9 @@ class Variable final : public ZoneObject {
bool IsLookupSlot() const { return location() == VariableLocation::LOOKUP; }
bool IsGlobalObjectProperty() const;
- // True for 'let' variables declared in the script scope of a REPL script.
- bool IsReplGlobalLet() const;
+ // True for 'let' and 'const' variables declared in the script scope of a REPL
+ // script.
+ bool IsReplGlobal() const;
bool is_dynamic() const { return IsDynamicVariableMode(mode()); }
diff --git a/deps/v8/src/base/atomicops.h b/deps/v8/src/base/atomicops.h
index 5d6422be52..cb6940ea70 100644
--- a/deps/v8/src/base/atomicops.h
+++ b/deps/v8/src/base/atomicops.h
@@ -27,6 +27,8 @@
#include <stdint.h>
+#include <atomic>
+
// Small C++ header which defines implementation specific macros used to
// identify the STL implementation.
// - libc++: captures __config for _LIBCPP_VERSION
@@ -35,6 +37,7 @@
#include "src/base/base-export.h"
#include "src/base/build_config.h"
+#include "src/base/macros.h"
#if defined(V8_OS_STARBOARD)
#include "starboard/atomic.h"
@@ -77,6 +80,21 @@ using AtomicWord = SbAtomicPtr;
using AtomicWord = intptr_t;
#endif
+namespace helper {
+template <typename T>
+volatile std::atomic<T>* to_std_atomic(volatile T* ptr) {
+ return reinterpret_cast<volatile std::atomic<T>*>(ptr);
+}
+template <typename T>
+volatile const std::atomic<T>* to_std_atomic_const(volatile const T* ptr) {
+ return reinterpret_cast<volatile const std::atomic<T>*>(ptr);
+}
+} // namespace helper
+
+inline void SeqCst_MemoryFence() {
+ std::atomic_thread_fence(std::memory_order_seq_cst);
+}
+
// Atomically execute:
// result = *ptr;
// if (result == old_value)
@@ -86,75 +104,225 @@ using AtomicWord = intptr_t;
// I.e. replace |*ptr| with |new_value| if |*ptr| used to be |old_value|.
// Always return the value of |*ptr| before the operation.
// Acquire, Relaxed, Release correspond to standard C++ memory orders.
-Atomic8 Relaxed_CompareAndSwap(volatile Atomic8* ptr, Atomic8 old_value,
- Atomic8 new_value);
-Atomic16 Relaxed_CompareAndSwap(volatile Atomic16* ptr, Atomic16 old_value,
- Atomic16 new_value);
-Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, Atomic32 old_value,
- Atomic32 new_value);
-Atomic32 AcquireRelease_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value, Atomic32 new_value);
-Atomic32 Relaxed_CompareAndSwap(volatile Atomic32* ptr, Atomic32 old_value,
- Atomic32 new_value);
-Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, Atomic32 old_value,
- Atomic32 new_value);
-#ifdef V8_HOST_ARCH_64_BIT
-Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, Atomic64 old_value,
- Atomic64 new_value);
-Atomic64 AcquireRelease_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value, Atomic64 new_value);
-Atomic64 Relaxed_CompareAndSwap(volatile Atomic64* ptr, Atomic64 old_value,
- Atomic64 new_value);
-Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, Atomic64 old_value,
- Atomic64 new_value);
-#endif // V8_HOST_ARCH_64_BIT
-
-// Atomically store new_value into |*ptr|, returning the previous value held in
-// |*ptr|.
-Atomic32 Relaxed_AtomicExchange(volatile Atomic32* ptr, Atomic32 new_value);
-#ifdef V8_HOST_ARCH_64_BIT
-Atomic64 Relaxed_AtomicExchange(volatile Atomic64* ptr, Atomic64 new_value);
-#endif // V8_HOST_ARCH_64_BIT
-
-// Atomically increment |*ptr| by |increment|. Returns the new value of
-// |*ptr| with the increment applied.
-Atomic32 Relaxed_AtomicIncrement(volatile Atomic32* ptr, Atomic32 increment);
-
-#ifdef V8_HOST_ARCH_64_BIT
-Atomic64 Relaxed_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment);
-#endif // V8_HOST_ARCH_64_BIT
-
-void SeqCst_MemoryFence();
-
-void Relaxed_Store(volatile Atomic8* ptr, Atomic8 value);
-void Relaxed_Store(volatile Atomic16* ptr, Atomic16 value);
-void Relaxed_Store(volatile Atomic32* ptr, Atomic32 value);
-void Release_Store(volatile Atomic32* ptr, Atomic32 value);
-#ifdef V8_HOST_ARCH_64_BIT
-void Relaxed_Store(volatile Atomic64* ptr, Atomic64 value);
-void Release_Store(volatile Atomic64* ptr, Atomic64 value);
-#endif // V8_HOST_ARCH_64_BIT
-
-Atomic8 Relaxed_Load(volatile const Atomic8* ptr);
-Atomic16 Relaxed_Load(volatile const Atomic16* ptr);
-Atomic32 Relaxed_Load(volatile const Atomic32* ptr);
-Atomic32 Acquire_Load(volatile const Atomic32* ptr);
-#ifdef V8_HOST_ARCH_64_BIT
-Atomic64 Relaxed_Load(volatile const Atomic64* ptr);
-Atomic64 Acquire_Load(volatile const Atomic64* ptr);
-#endif // V8_HOST_ARCH_64_BIT
+inline Atomic8 Relaxed_CompareAndSwap(volatile Atomic8* ptr, Atomic8 old_value,
+ Atomic8 new_value) {
+ std::atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_relaxed, std::memory_order_relaxed);
+ return old_value;
+}
+
+inline Atomic16 Relaxed_CompareAndSwap(volatile Atomic16* ptr,
+ Atomic16 old_value, Atomic16 new_value) {
+ std::atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_relaxed, std::memory_order_relaxed);
+ return old_value;
+}
+
+inline Atomic32 Relaxed_CompareAndSwap(volatile Atomic32* ptr,
+ Atomic32 old_value, Atomic32 new_value) {
+ std::atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_relaxed, std::memory_order_relaxed);
+ return old_value;
+}
+
+inline Atomic32 Relaxed_AtomicExchange(volatile Atomic32* ptr,
+ Atomic32 new_value) {
+ return std::atomic_exchange_explicit(helper::to_std_atomic(ptr), new_value,
+ std::memory_order_relaxed);
+}
+
+inline Atomic32 Relaxed_AtomicIncrement(volatile Atomic32* ptr,
+ Atomic32 increment) {
+ return increment + std::atomic_fetch_add_explicit(helper::to_std_atomic(ptr),
+ increment,
+ std::memory_order_relaxed);
+}
+
+inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
+ Atomic32 old_value, Atomic32 new_value) {
+ atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_acquire, std::memory_order_acquire);
+ return old_value;
+}
+
+inline Atomic8 Release_CompareAndSwap(volatile Atomic8* ptr, Atomic8 old_value,
+ Atomic8 new_value) {
+ bool result = atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_release, std::memory_order_relaxed);
+ USE(result); // Make gcc compiler happy.
+ return old_value;
+}
+
+inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
+ Atomic32 old_value, Atomic32 new_value) {
+ atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_release, std::memory_order_relaxed);
+ return old_value;
+}
+
+inline Atomic32 AcquireRelease_CompareAndSwap(volatile Atomic32* ptr,
+ Atomic32 old_value,
+ Atomic32 new_value) {
+ atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_acq_rel, std::memory_order_acquire);
+ return old_value;
+}
+
+inline void Relaxed_Store(volatile Atomic8* ptr, Atomic8 value) {
+ std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
+ std::memory_order_relaxed);
+}
+
+inline void Relaxed_Store(volatile Atomic16* ptr, Atomic16 value) {
+ std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
+ std::memory_order_relaxed);
+}
+
+inline void Relaxed_Store(volatile Atomic32* ptr, Atomic32 value) {
+ std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
+ std::memory_order_relaxed);
+}
+
+inline void Release_Store(volatile Atomic8* ptr, Atomic8 value) {
+ std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
+ std::memory_order_release);
+}
+
+inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) {
+ std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
+ std::memory_order_release);
+}
+
+inline Atomic8 Relaxed_Load(volatile const Atomic8* ptr) {
+ return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
+ std::memory_order_relaxed);
+}
+
+inline Atomic16 Relaxed_Load(volatile const Atomic16* ptr) {
+ return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
+ std::memory_order_relaxed);
+}
+
+inline Atomic32 Relaxed_Load(volatile const Atomic32* ptr) {
+ return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
+ std::memory_order_relaxed);
+}
+
+inline Atomic8 Acquire_Load(volatile const Atomic8* ptr) {
+ return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
+ std::memory_order_acquire);
+}
+
+inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
+ return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
+ std::memory_order_acquire);
+}
+
+#if defined(V8_HOST_ARCH_64_BIT)
+
+inline Atomic64 Relaxed_CompareAndSwap(volatile Atomic64* ptr,
+ Atomic64 old_value, Atomic64 new_value) {
+ std::atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_relaxed, std::memory_order_relaxed);
+ return old_value;
+}
+
+inline Atomic64 Relaxed_AtomicExchange(volatile Atomic64* ptr,
+ Atomic64 new_value) {
+ return std::atomic_exchange_explicit(helper::to_std_atomic(ptr), new_value,
+ std::memory_order_relaxed);
+}
+
+inline Atomic64 Relaxed_AtomicIncrement(volatile Atomic64* ptr,
+ Atomic64 increment) {
+ return increment + std::atomic_fetch_add_explicit(helper::to_std_atomic(ptr),
+ increment,
+ std::memory_order_relaxed);
+}
+
+inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr,
+ Atomic64 old_value, Atomic64 new_value) {
+ std::atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_acquire, std::memory_order_acquire);
+ return old_value;
+}
+
+inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr,
+ Atomic64 old_value, Atomic64 new_value) {
+ std::atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_release, std::memory_order_relaxed);
+ return old_value;
+}
+
+inline Atomic64 AcquireRelease_CompareAndSwap(volatile Atomic64* ptr,
+ Atomic64 old_value,
+ Atomic64 new_value) {
+ std::atomic_compare_exchange_strong_explicit(
+ helper::to_std_atomic(ptr), &old_value, new_value,
+ std::memory_order_acq_rel, std::memory_order_acquire);
+ return old_value;
+}
+
+inline void Relaxed_Store(volatile Atomic64* ptr, Atomic64 value) {
+ std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
+ std::memory_order_relaxed);
+}
+
+inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) {
+ std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
+ std::memory_order_release);
+}
+
+inline Atomic64 Relaxed_Load(volatile const Atomic64* ptr) {
+ return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
+ std::memory_order_relaxed);
+}
+
+inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) {
+ return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
+ std::memory_order_acquire);
+}
+
+#endif // defined(V8_HOST_ARCH_64_BIT)
+
+inline void Relaxed_Memcpy(volatile Atomic8* dst, volatile const Atomic8* src,
+ size_t bytes) {
+ constexpr size_t kAtomicWordSize = sizeof(AtomicWord);
+ while (bytes > 0 &&
+ !IsAligned(reinterpret_cast<uintptr_t>(dst), kAtomicWordSize)) {
+ Relaxed_Store(dst++, Relaxed_Load(src++));
+ --bytes;
+ }
+ if (IsAligned(reinterpret_cast<uintptr_t>(src), kAtomicWordSize) &&
+ IsAligned(reinterpret_cast<uintptr_t>(dst), kAtomicWordSize)) {
+ while (bytes >= kAtomicWordSize) {
+ Relaxed_Store(
+ reinterpret_cast<volatile AtomicWord*>(dst),
+ Relaxed_Load(reinterpret_cast<const volatile AtomicWord*>(src)));
+ dst += kAtomicWordSize;
+ src += kAtomicWordSize;
+ bytes -= kAtomicWordSize;
+ }
+ }
+ while (bytes > 0) {
+ Relaxed_Store(dst++, Relaxed_Load(src++));
+ --bytes;
+ }
+}
} // namespace base
} // namespace v8
-#if defined(V8_OS_WIN) || defined(V8_OS_STARBOARD)
-#include "src/base/atomicops_internals_std.h"
-#else
-// TODO(ulan): Switch to std version after performance regression with Wheezy
-// sysroot is no longer relevant. Debian Wheezy LTS ends on 31st of May 2018.
-#include "src/base/atomicops_internals_portable.h"
-#endif
-
// On some platforms we need additional declarations to make
// AtomicWord compatible with our other Atomic* types.
#if defined(V8_OS_MACOSX) || defined(V8_OS_OPENBSD) || defined(V8_OS_AIX)
diff --git a/deps/v8/src/base/atomicops_internals_portable.h b/deps/v8/src/base/atomicops_internals_portable.h
deleted file mode 100644
index ac162e2a82..0000000000
--- a/deps/v8/src/base/atomicops_internals_portable.h
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright 2016 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.
-
-// This file is an internal atomic implementation, use atomicops.h instead.
-//
-// This implementation uses C++11 atomics' member functions. The code base is
-// currently written assuming atomicity revolves around accesses instead of
-// C++11's memory locations. The burden is on the programmer to ensure that all
-// memory locations accessed atomically are never accessed non-atomically (tsan
-// should help with this).
-//
-// Of note in this implementation:
-// * All NoBarrier variants are implemented as relaxed.
-// * All Barrier variants are implemented as sequentially-consistent.
-// * Compare exchange's failure ordering is always the same as the success one
-// (except for release, which fails as relaxed): using a weaker ordering is
-// only valid under certain uses of compare exchange.
-// * Acquire store doesn't exist in the C11 memory model, it is instead
-// implemented as a relaxed store followed by a sequentially consistent
-// fence.
-// * Release load doesn't exist in the C11 memory model, it is instead
-// implemented as sequentially consistent fence followed by a relaxed load.
-// * Atomic increment is expected to return the post-incremented value, whereas
-// C11 fetch add returns the previous value. The implementation therefore
-// needs to increment twice (which the compiler should be able to detect and
-// optimize).
-
-#ifndef V8_BASE_ATOMICOPS_INTERNALS_PORTABLE_H_
-#define V8_BASE_ATOMICOPS_INTERNALS_PORTABLE_H_
-
-#include <atomic>
-
-#include "src/base/build_config.h"
-#include "src/base/macros.h"
-
-namespace v8 {
-namespace base {
-
-// This implementation is transitional and maintains the original API for
-// atomicops.h.
-
-inline void SeqCst_MemoryFence() {
-#if defined(__GLIBCXX__)
- // Work around libstdc++ bug 51038 where atomic_thread_fence was declared but
- // not defined, leading to the linker complaining about undefined references.
- __atomic_thread_fence(std::memory_order_seq_cst);
-#else
- std::atomic_thread_fence(std::memory_order_seq_cst);
-#endif
-}
-
-inline Atomic8 Relaxed_CompareAndSwap(volatile Atomic8* ptr, Atomic8 old_value,
- Atomic8 new_value) {
- bool result = __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_RELAXED, __ATOMIC_RELAXED);
- USE(result); // Make gcc compiler happy.
- return old_value;
-}
-
-inline Atomic16 Relaxed_CompareAndSwap(volatile Atomic16* ptr,
- Atomic16 old_value, Atomic16 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_RELAXED, __ATOMIC_RELAXED);
- return old_value;
-}
-
-inline Atomic32 Relaxed_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value, Atomic32 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_RELAXED, __ATOMIC_RELAXED);
- return old_value;
-}
-
-inline Atomic32 Relaxed_AtomicExchange(volatile Atomic32* ptr,
- Atomic32 new_value) {
- return __atomic_exchange_n(ptr, new_value, __ATOMIC_RELAXED);
-}
-
-inline Atomic32 Relaxed_AtomicIncrement(volatile Atomic32* ptr,
- Atomic32 increment) {
- return increment + __atomic_fetch_add(ptr, increment, __ATOMIC_RELAXED);
-}
-
-inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value, Atomic32 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE);
- return old_value;
-}
-
-inline Atomic8 Release_CompareAndSwap(volatile Atomic8* ptr, Atomic8 old_value,
- Atomic8 new_value) {
- bool result = __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_RELEASE, __ATOMIC_RELAXED);
- USE(result); // Make gcc compiler happy.
- return old_value;
-}
-
-inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value, Atomic32 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_RELEASE, __ATOMIC_RELAXED);
- return old_value;
-}
-
-inline Atomic32 AcquireRelease_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value,
- Atomic32 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE);
- return old_value;
-}
-
-inline void Relaxed_Store(volatile Atomic8* ptr, Atomic8 value) {
- __atomic_store_n(ptr, value, __ATOMIC_RELAXED);
-}
-
-inline void Relaxed_Store(volatile Atomic16* ptr, Atomic16 value) {
- __atomic_store_n(ptr, value, __ATOMIC_RELAXED);
-}
-
-inline void Relaxed_Store(volatile Atomic32* ptr, Atomic32 value) {
- __atomic_store_n(ptr, value, __ATOMIC_RELAXED);
-}
-
-inline void Release_Store(volatile Atomic8* ptr, Atomic8 value) {
- __atomic_store_n(ptr, value, __ATOMIC_RELEASE);
-}
-
-inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) {
- __atomic_store_n(ptr, value, __ATOMIC_RELEASE);
-}
-
-inline Atomic8 Relaxed_Load(volatile const Atomic8* ptr) {
- return __atomic_load_n(ptr, __ATOMIC_RELAXED);
-}
-
-inline Atomic16 Relaxed_Load(volatile const Atomic16* ptr) {
- return __atomic_load_n(ptr, __ATOMIC_RELAXED);
-}
-
-inline Atomic32 Relaxed_Load(volatile const Atomic32* ptr) {
- return __atomic_load_n(ptr, __ATOMIC_RELAXED);
-}
-
-inline Atomic8 Acquire_Load(volatile const Atomic8* ptr) {
- return __atomic_load_n(ptr, __ATOMIC_ACQUIRE);
-}
-
-inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
- return __atomic_load_n(ptr, __ATOMIC_ACQUIRE);
-}
-
-#if defined(V8_HOST_ARCH_64_BIT)
-
-inline Atomic64 Relaxed_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value, Atomic64 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_RELAXED, __ATOMIC_RELAXED);
- return old_value;
-}
-
-inline Atomic64 Relaxed_AtomicExchange(volatile Atomic64* ptr,
- Atomic64 new_value) {
- return __atomic_exchange_n(ptr, new_value, __ATOMIC_RELAXED);
-}
-
-inline Atomic64 Relaxed_AtomicIncrement(volatile Atomic64* ptr,
- Atomic64 increment) {
- return increment + __atomic_fetch_add(ptr, increment, __ATOMIC_RELAXED);
-}
-
-inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value, Atomic64 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE);
- return old_value;
-}
-
-inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value, Atomic64 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_RELEASE, __ATOMIC_RELAXED);
- return old_value;
-}
-
-inline Atomic64 AcquireRelease_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value,
- Atomic64 new_value) {
- __atomic_compare_exchange_n(ptr, &old_value, new_value, false,
- __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE);
- return old_value;
-}
-
-inline void Relaxed_Store(volatile Atomic64* ptr, Atomic64 value) {
- __atomic_store_n(ptr, value, __ATOMIC_RELAXED);
-}
-
-inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) {
- __atomic_store_n(ptr, value, __ATOMIC_RELEASE);
-}
-
-inline Atomic64 Relaxed_Load(volatile const Atomic64* ptr) {
- return __atomic_load_n(ptr, __ATOMIC_RELAXED);
-}
-
-inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) {
- return __atomic_load_n(ptr, __ATOMIC_ACQUIRE);
-}
-
-#endif // defined(V8_HOST_ARCH_64_BIT)
-} // namespace base
-} // namespace v8
-
-#endif // V8_BASE_ATOMICOPS_INTERNALS_PORTABLE_H_
diff --git a/deps/v8/src/base/atomicops_internals_std.h b/deps/v8/src/base/atomicops_internals_std.h
deleted file mode 100644
index 1638b8b52a..0000000000
--- a/deps/v8/src/base/atomicops_internals_std.h
+++ /dev/null
@@ -1,224 +0,0 @@
-// Copyright 2017 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_BASE_ATOMICOPS_INTERNALS_STD_H_
-#define V8_BASE_ATOMICOPS_INTERNALS_STD_H_
-
-#include <atomic>
-
-#include "src/base/build_config.h"
-#include "src/base/macros.h"
-
-namespace v8 {
-namespace base {
-
-namespace helper {
-template <typename T>
-volatile std::atomic<T>* to_std_atomic(volatile T* ptr) {
- return reinterpret_cast<volatile std::atomic<T>*>(ptr);
-}
-template <typename T>
-volatile const std::atomic<T>* to_std_atomic_const(volatile const T* ptr) {
- return reinterpret_cast<volatile const std::atomic<T>*>(ptr);
-}
-} // namespace helper
-
-inline void SeqCst_MemoryFence() {
- std::atomic_thread_fence(std::memory_order_seq_cst);
-}
-
-inline Atomic8 Relaxed_CompareAndSwap(volatile Atomic8* ptr, Atomic8 old_value,
- Atomic8 new_value) {
- std::atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_relaxed, std::memory_order_relaxed);
- return old_value;
-}
-
-inline Atomic16 Relaxed_CompareAndSwap(volatile Atomic16* ptr,
- Atomic16 old_value, Atomic16 new_value) {
- std::atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_relaxed, std::memory_order_relaxed);
- return old_value;
-}
-
-inline Atomic32 Relaxed_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value, Atomic32 new_value) {
- std::atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_relaxed, std::memory_order_relaxed);
- return old_value;
-}
-
-inline Atomic32 Relaxed_AtomicExchange(volatile Atomic32* ptr,
- Atomic32 new_value) {
- return std::atomic_exchange_explicit(helper::to_std_atomic(ptr), new_value,
- std::memory_order_relaxed);
-}
-
-inline Atomic32 Relaxed_AtomicIncrement(volatile Atomic32* ptr,
- Atomic32 increment) {
- return increment + std::atomic_fetch_add_explicit(helper::to_std_atomic(ptr),
- increment,
- std::memory_order_relaxed);
-}
-
-inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value, Atomic32 new_value) {
- atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_acquire, std::memory_order_acquire);
- return old_value;
-}
-
-inline Atomic8 Release_CompareAndSwap(volatile Atomic8* ptr, Atomic8 old_value,
- Atomic8 new_value) {
- bool result = atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_release, std::memory_order_relaxed);
- USE(result); // Make gcc compiler happy.
- return old_value;
-}
-
-inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value, Atomic32 new_value) {
- atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_release, std::memory_order_relaxed);
- return old_value;
-}
-
-inline Atomic32 AcquireRelease_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value,
- Atomic32 new_value) {
- atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_acq_rel, std::memory_order_acquire);
- return old_value;
-}
-
-inline void Relaxed_Store(volatile Atomic8* ptr, Atomic8 value) {
- std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
- std::memory_order_relaxed);
-}
-
-inline void Relaxed_Store(volatile Atomic16* ptr, Atomic16 value) {
- std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
- std::memory_order_relaxed);
-}
-
-inline void Relaxed_Store(volatile Atomic32* ptr, Atomic32 value) {
- std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
- std::memory_order_relaxed);
-}
-
-inline void Release_Store(volatile Atomic8* ptr, Atomic8 value) {
- std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
- std::memory_order_release);
-}
-
-inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) {
- std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
- std::memory_order_release);
-}
-
-inline Atomic8 Relaxed_Load(volatile const Atomic8* ptr) {
- return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
- std::memory_order_relaxed);
-}
-
-inline Atomic16 Relaxed_Load(volatile const Atomic16* ptr) {
- return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
- std::memory_order_relaxed);
-}
-
-inline Atomic32 Relaxed_Load(volatile const Atomic32* ptr) {
- return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
- std::memory_order_relaxed);
-}
-
-inline Atomic8 Acquire_Load(volatile const Atomic8* ptr) {
- return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
- std::memory_order_acquire);
-}
-
-inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
- return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
- std::memory_order_acquire);
-}
-
-#if defined(V8_HOST_ARCH_64_BIT)
-
-inline Atomic64 Relaxed_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value, Atomic64 new_value) {
- std::atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_relaxed, std::memory_order_relaxed);
- return old_value;
-}
-
-inline Atomic64 Relaxed_AtomicExchange(volatile Atomic64* ptr,
- Atomic64 new_value) {
- return std::atomic_exchange_explicit(helper::to_std_atomic(ptr), new_value,
- std::memory_order_relaxed);
-}
-
-inline Atomic64 Relaxed_AtomicIncrement(volatile Atomic64* ptr,
- Atomic64 increment) {
- return increment + std::atomic_fetch_add_explicit(helper::to_std_atomic(ptr),
- increment,
- std::memory_order_relaxed);
-}
-
-inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value, Atomic64 new_value) {
- std::atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_acquire, std::memory_order_acquire);
- return old_value;
-}
-
-inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value, Atomic64 new_value) {
- std::atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_release, std::memory_order_relaxed);
- return old_value;
-}
-
-inline Atomic64 AcquireRelease_CompareAndSwap(volatile Atomic64* ptr,
- Atomic64 old_value,
- Atomic64 new_value) {
- std::atomic_compare_exchange_strong_explicit(
- helper::to_std_atomic(ptr), &old_value, new_value,
- std::memory_order_acq_rel, std::memory_order_acquire);
- return old_value;
-}
-
-inline void Relaxed_Store(volatile Atomic64* ptr, Atomic64 value) {
- std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
- std::memory_order_relaxed);
-}
-
-inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) {
- std::atomic_store_explicit(helper::to_std_atomic(ptr), value,
- std::memory_order_release);
-}
-
-inline Atomic64 Relaxed_Load(volatile const Atomic64* ptr) {
- return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
- std::memory_order_relaxed);
-}
-
-inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) {
- return std::atomic_load_explicit(helper::to_std_atomic_const(ptr),
- std::memory_order_acquire);
-}
-
-#endif // defined(V8_HOST_ARCH_64_BIT)
-} // namespace base
-} // namespace v8
-
-#endif // V8_BASE_ATOMICOPS_INTERNALS_STD_H_
diff --git a/deps/v8/src/base/bit-field.h b/deps/v8/src/base/bit-field.h
index ca5fb45921..7b2796e3df 100644
--- a/deps/v8/src/base/bit-field.h
+++ b/deps/v8/src/base/bit-field.h
@@ -52,7 +52,7 @@ class BitField final {
// Returns a type U with the bit field value encoded.
static constexpr U encode(T value) {
- CONSTEXPR_DCHECK(is_valid(value));
+ DCHECK(is_valid(value));
return static_cast<U>(value) << kShift;
}
diff --git a/deps/v8/src/base/bits.h b/deps/v8/src/base/bits.h
index b137f73936..f790dfaab4 100644
--- a/deps/v8/src/base/bits.h
+++ b/deps/v8/src/base/bits.h
@@ -144,7 +144,7 @@ inline constexpr
typename std::enable_if<std::is_integral<T>::value && sizeof(T) <= 8,
unsigned>::type
CountTrailingZerosNonZero(T value) {
- CONSTEXPR_DCHECK(value != 0);
+ DCHECK_NE(0, value);
#if V8_HAS_BUILTIN_CTZ
return bits == 64 ? __builtin_ctzll(static_cast<uint64_t>(value))
: __builtin_ctz(static_cast<uint32_t>(value));
@@ -165,7 +165,7 @@ constexpr inline bool IsPowerOfTwo(T value) {
template <typename T,
typename = typename std::enable_if<std::is_integral<T>::value>::type>
inline constexpr int WhichPowerOfTwo(T value) {
- CONSTEXPR_DCHECK(IsPowerOfTwo(value));
+ DCHECK(IsPowerOfTwo(value));
#if V8_HAS_BUILTIN_CTZ
STATIC_ASSERT(sizeof(T) <= 8);
return sizeof(T) == 8 ? __builtin_ctzll(static_cast<uint64_t>(value))
diff --git a/deps/v8/src/base/bounds.h b/deps/v8/src/base/bounds.h
index fb8c968d66..0fe141b309 100644
--- a/deps/v8/src/base/bounds.h
+++ b/deps/v8/src/base/bounds.h
@@ -15,7 +15,7 @@ namespace base {
// branch.
template <typename T, typename U>
inline constexpr bool IsInRange(T value, U lower_limit, U higher_limit) {
- CONSTEXPR_DCHECK(lower_limit <= higher_limit);
+ DCHECK_LE(lower_limit, higher_limit);
STATIC_ASSERT(sizeof(U) <= sizeof(T));
using unsigned_T = typename std::make_unsigned<T>::type;
// Use static_cast to support enum classes.
diff --git a/deps/v8/src/base/cpu.cc b/deps/v8/src/base/cpu.cc
index 17ef42a299..9ddf8939be 100644
--- a/deps/v8/src/base/cpu.cc
+++ b/deps/v8/src/base/cpu.cc
@@ -50,7 +50,7 @@
#include "src/base/logging.h"
#include "src/base/platform/wrappers.h"
#if V8_OS_WIN
-#include "src/base/win32-headers.h" // NOLINT
+#include "src/base/win32-headers.h"
#endif
namespace v8 {
diff --git a/deps/v8/src/base/enum-set.h b/deps/v8/src/base/enum-set.h
index f623198c2d..ce49b3996e 100644
--- a/deps/v8/src/base/enum-set.h
+++ b/deps/v8/src/base/enum-set.h
@@ -79,7 +79,7 @@ class EnumSet {
explicit constexpr EnumSet(T bits) : bits_(bits) {}
static constexpr T Mask(E element) {
- CONSTEXPR_DCHECK(sizeof(T) * 8 > static_cast<size_t>(element));
+ DCHECK_GT(sizeof(T) * 8, static_cast<size_t>(element));
return T{1} << static_cast<typename std::underlying_type<E>::type>(element);
}
diff --git a/deps/v8/src/base/hashmap.h b/deps/v8/src/base/hashmap.h
index 179da5ecba..819d589a81 100644
--- a/deps/v8/src/base/hashmap.h
+++ b/deps/v8/src/base/hashmap.h
@@ -530,8 +530,8 @@ class TemplateHashMap
AllocationPolicy>;
public:
- STATIC_ASSERT(sizeof(Key*) == sizeof(void*)); // NOLINT
- STATIC_ASSERT(sizeof(Value*) == sizeof(void*)); // NOLINT
+ STATIC_ASSERT(sizeof(Key*) == sizeof(void*));
+ STATIC_ASSERT(sizeof(Value*) == sizeof(void*));
struct value_type {
Key* first;
Value* second;
diff --git a/deps/v8/src/base/logging.h b/deps/v8/src/base/logging.h
index 2c4c536cf3..08db24a947 100644
--- a/deps/v8/src/base/logging.h
+++ b/deps/v8/src/base/logging.h
@@ -134,12 +134,6 @@ V8_BASE_EXPORT void SetDcheckFunction(void (*dcheck_Function)(const char*, int,
#endif
-#if V8_HAS_CXX14_CONSTEXPR
-#define CONSTEXPR_DCHECK(cond) DCHECK(cond)
-#else
-#define CONSTEXPR_DCHECK(cond)
-#endif
-
namespace detail {
template <typename... Ts>
std::string PrintToString(Ts&&... ts) {
diff --git a/deps/v8/src/base/once.h b/deps/v8/src/base/once.h
index dd8b6be621..c4224e84e3 100644
--- a/deps/v8/src/base/once.h
+++ b/deps/v8/src/base/once.h
@@ -53,10 +53,12 @@
#define V8_BASE_ONCE_H_
#include <stddef.h>
+
#include <atomic>
#include <functional>
#include "src/base/base-export.h"
+#include "src/base/template-utils.h"
namespace v8 {
namespace base {
@@ -76,9 +78,9 @@ enum : uint8_t {
using PointerArgFunction = void (*)(void* arg);
-template <typename T>
-struct OneArgFunction {
- using type = void (*)(T);
+template <typename... Args>
+struct FunctionWithArgs {
+ using type = void (*)(Args...);
};
V8_BASE_EXPORT void CallOnceImpl(OnceType* once,
@@ -90,11 +92,13 @@ inline void CallOnce(OnceType* once, std::function<void()> init_func) {
}
}
-template <typename Arg>
+template <typename... Args, typename = std::enable_if_t<
+ conjunction<std::is_scalar<Args>...>::value>>
inline void CallOnce(OnceType* once,
- typename OneArgFunction<Arg*>::type init_func, Arg* arg) {
+ typename FunctionWithArgs<Args...>::type init_func,
+ Args... args) {
if (once->load(std::memory_order_acquire) != ONCE_STATE_DONE) {
- CallOnceImpl(once, [=]() { init_func(arg); });
+ CallOnceImpl(once, [=]() { init_func(args...); });
}
}
diff --git a/deps/v8/src/base/optional.h b/deps/v8/src/base/optional.h
index 3c13e654c8..77e9bb896e 100644
--- a/deps/v8/src/base/optional.h
+++ b/deps/v8/src/base/optional.h
@@ -558,32 +558,32 @@ class OPTIONAL_DECLSPEC_EMPTY_BASES Optional
}
constexpr const T* operator->() const {
- CONSTEXPR_DCHECK(storage_.is_populated_);
+ DCHECK(storage_.is_populated_);
return &storage_.value_;
}
constexpr T* operator->() {
- CONSTEXPR_DCHECK(storage_.is_populated_);
+ DCHECK(storage_.is_populated_);
return &storage_.value_;
}
constexpr const T& operator*() const& {
- CONSTEXPR_DCHECK(storage_.is_populated_);
+ DCHECK(storage_.is_populated_);
return storage_.value_;
}
constexpr T& operator*() & {
- CONSTEXPR_DCHECK(storage_.is_populated_);
+ DCHECK(storage_.is_populated_);
return storage_.value_;
}
constexpr const T&& operator*() const&& {
- CONSTEXPR_DCHECK(storage_.is_populated_);
+ DCHECK(storage_.is_populated_);
return std::move(storage_.value_);
}
constexpr T&& operator*() && {
- CONSTEXPR_DCHECK(storage_.is_populated_);
+ DCHECK(storage_.is_populated_);
return std::move(storage_.value_);
}
diff --git a/deps/v8/src/base/platform/mutex.h b/deps/v8/src/base/platform/mutex.h
index 5685797f4e..328c593a30 100644
--- a/deps/v8/src/base/platform/mutex.h
+++ b/deps/v8/src/base/platform/mutex.h
@@ -14,7 +14,7 @@
#include "src/base/logging.h"
#if V8_OS_POSIX
-#include <pthread.h> // NOLINT
+#include <pthread.h>
#endif
#if V8_OS_STARBOARD
@@ -164,6 +164,8 @@ class V8_BASE_EXPORT RecursiveMutex final {
// successfully locked.
bool TryLock() V8_WARN_UNUSED_RESULT;
+ V8_INLINE void AssertHeld() const { DCHECK_LT(0, level_); }
+
private:
// The implementation-defined native handle type.
#if V8_OS_POSIX
diff --git a/deps/v8/src/base/platform/platform-aix.cc b/deps/v8/src/base/platform/platform-aix.cc
index 6b6a870370..e5a5305d48 100644
--- a/deps/v8/src/base/platform/platform-aix.cc
+++ b/deps/v8/src/base/platform/platform-aix.cc
@@ -82,7 +82,7 @@ double AIXTimezoneCache::LocalTimeOffset(double time_ms, bool is_utc) {
TimezoneCache* OS::CreateTimezoneCache() { return new AIXTimezoneCache(); }
static unsigned StringToLong(char* buffer) {
- return static_cast<unsigned>(strtol(buffer, nullptr, 16)); // NOLINT
+ return static_cast<unsigned>(strtol(buffer, nullptr, 16));
}
std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() {
diff --git a/deps/v8/src/base/platform/platform-freebsd.cc b/deps/v8/src/base/platform/platform-freebsd.cc
index edc793c662..ac36b0527e 100644
--- a/deps/v8/src/base/platform/platform-freebsd.cc
+++ b/deps/v8/src/base/platform/platform-freebsd.cc
@@ -44,7 +44,7 @@ TimezoneCache* OS::CreateTimezoneCache() {
}
static unsigned StringToLong(char* buffer) {
- return static_cast<unsigned>(strtol(buffer, nullptr, 16)); // NOLINT
+ return static_cast<unsigned>(strtol(buffer, nullptr, 16));
}
std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() {
diff --git a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc
index ee787f7d9a..9f61a0aeb5 100644
--- a/deps/v8/src/base/platform/platform-posix.cc
+++ b/deps/v8/src/base/platform/platform-posix.cc
@@ -23,12 +23,12 @@
#include <sys/types.h>
#if defined(__APPLE__) || defined(__DragonFly__) || defined(__FreeBSD__) || \
defined(__NetBSD__) || defined(__OpenBSD__)
-#include <sys/sysctl.h> // NOLINT, for sysctl
+#include <sys/sysctl.h> // for sysctl
#endif
#if defined(ANDROID) && !defined(V8_ANDROID_LOG_STDOUT)
#define LOG_TAG "v8"
-#include <android/log.h> // NOLINT
+#include <android/log.h>
#endif
#include <cmath>
@@ -52,7 +52,7 @@
#endif
#if V8_OS_LINUX
-#include <sys/prctl.h> // NOLINT, for prctl
+#include <sys/prctl.h> // for prctl
#endif
#if defined(V8_OS_FUCHSIA)
@@ -82,7 +82,7 @@ extern int madvise(caddr_t, size_t, int);
#endif
#if defined(V8_LIBC_GLIBC)
-extern "C" void* __libc_stack_end; // NOLINT
+extern "C" void* __libc_stack_end;
#endif
namespace v8 {
@@ -936,8 +936,7 @@ static void InitializeTlsBaseOffset() {
buffer[kBufferSize - 1] = '\0';
char* period_pos = strchr(buffer, '.');
*period_pos = '\0';
- int kernel_version_major =
- static_cast<int>(strtol(buffer, nullptr, 10)); // NOLINT
+ int kernel_version_major = static_cast<int>(strtol(buffer, nullptr, 10));
// The constants below are taken from pthreads.s from the XNU kernel
// sources archive at www.opensource.apple.com.
if (kernel_version_major < 11) {
diff --git a/deps/v8/src/base/platform/platform-win32.cc b/deps/v8/src/base/platform/platform-win32.cc
index 50da60c72f..9fbb257076 100644
--- a/deps/v8/src/base/platform/platform-win32.cc
+++ b/deps/v8/src/base/platform/platform-win32.cc
@@ -30,7 +30,7 @@
#include <VersionHelpers.h>
#if defined(_MSC_VER)
-#include <crtdbg.h> // NOLINT
+#include <crtdbg.h>
#endif // defined(_MSC_VER)
// Extra functions for MinGW. Most of these are the _s functions which are in
diff --git a/deps/v8/src/base/platform/semaphore.h b/deps/v8/src/base/platform/semaphore.h
index 83a7a3392f..ec107bd290 100644
--- a/deps/v8/src/base/platform/semaphore.h
+++ b/deps/v8/src/base/platform/semaphore.h
@@ -12,9 +12,9 @@
#endif
#if V8_OS_MACOSX
-#include <dispatch/dispatch.h> // NOLINT
+#include <dispatch/dispatch.h>
#elif V8_OS_POSIX
-#include <semaphore.h> // NOLINT
+#include <semaphore.h>
#endif
#if V8_OS_STARBOARD
diff --git a/deps/v8/src/base/sanitizer/asan.h b/deps/v8/src/base/sanitizer/asan.h
new file mode 100644
index 0000000000..291006d58c
--- /dev/null
+++ b/deps/v8/src/base/sanitizer/asan.h
@@ -0,0 +1,37 @@
+// 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.
+
+// AddressSanitizer support.
+
+#ifndef V8_BASE_SANITIZER_ASAN_H_
+#define V8_BASE_SANITIZER_ASAN_H_
+
+#include <type_traits>
+
+#include "src/base/macros.h"
+
+#ifdef V8_USE_ADDRESS_SANITIZER
+
+#include <sanitizer/asan_interface.h>
+
+#if !defined(ASAN_POISON_MEMORY_REGION) || !defined(ASAN_UNPOISON_MEMORY_REGION)
+#error \
+ "ASAN_POISON_MEMORY_REGION and ASAN_UNPOISON_MEMORY_REGION must be defined"
+#endif
+
+#else // !V8_USE_ADDRESS_SANITIZER
+
+#define ASAN_POISON_MEMORY_REGION(start, size) \
+ static_assert(std::is_pointer<decltype(start)>::value, \
+ "static type violation"); \
+ static_assert(std::is_convertible<decltype(size), size_t>::value, \
+ "static type violation"); \
+ USE(start, size)
+
+#define ASAN_UNPOISON_MEMORY_REGION(start, size) \
+ ASAN_POISON_MEMORY_REGION(start, size)
+
+#endif // !V8_USE_ADDRESS_SANITIZER
+
+#endif // V8_BASE_SANITIZER_ASAN_H_
diff --git a/deps/v8/src/sanitizer/lsan-page-allocator.cc b/deps/v8/src/base/sanitizer/lsan-page-allocator.cc
index 7794e0b734..bb52eb368f 100644
--- a/deps/v8/src/sanitizer/lsan-page-allocator.cc
+++ b/deps/v8/src/base/sanitizer/lsan-page-allocator.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "src/sanitizer/lsan-page-allocator.h"
+#include "src/base/sanitizer/lsan-page-allocator.h"
#include "include/v8-platform.h"
#include "src/base/logging.h"
diff --git a/deps/v8/src/sanitizer/lsan-page-allocator.h b/deps/v8/src/base/sanitizer/lsan-page-allocator.h
index f86ffd98e8..4c8a1f04a0 100644
--- a/deps/v8/src/sanitizer/lsan-page-allocator.h
+++ b/deps/v8/src/base/sanitizer/lsan-page-allocator.h
@@ -2,10 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef V8_SANITIZER_LSAN_PAGE_ALLOCATOR_H_
-#define V8_SANITIZER_LSAN_PAGE_ALLOCATOR_H_
+#ifndef V8_BASE_SANITIZER_LSAN_PAGE_ALLOCATOR_H_
+#define V8_BASE_SANITIZER_LSAN_PAGE_ALLOCATOR_H_
#include "include/v8-platform.h"
+#include "src/base/base-export.h"
#include "src/base/compiler-specific.h"
namespace v8 {
@@ -14,7 +15,7 @@ namespace base {
// This is a v8::PageAllocator implementation that decorates provided page
// allocator object with leak sanitizer notifications when LEAK_SANITIZER
// is defined.
-class LsanPageAllocator : public v8::PageAllocator {
+class V8_BASE_EXPORT LsanPageAllocator : public v8::PageAllocator {
public:
explicit LsanPageAllocator(v8::PageAllocator* page_allocator);
~LsanPageAllocator() override = default;
@@ -56,4 +57,4 @@ class LsanPageAllocator : public v8::PageAllocator {
} // namespace base
} // namespace v8
-#endif // V8_SANITIZER_LSAN_PAGE_ALLOCATOR_H_
+#endif // V8_BASE_SANITIZER_LSAN_PAGE_ALLOCATOR_H_
diff --git a/deps/v8/src/base/lsan.h b/deps/v8/src/base/sanitizer/lsan.h
index fd9bbd21c1..2d7dcd7f68 100644
--- a/deps/v8/src/base/lsan.h
+++ b/deps/v8/src/base/sanitizer/lsan.h
@@ -4,14 +4,16 @@
// LeakSanitizer support.
-#ifndef V8_BASE_LSAN_H_
-#define V8_BASE_LSAN_H_
+#ifndef V8_BASE_SANITIZER_LSAN_H_
+#define V8_BASE_SANITIZER_LSAN_H_
#include <type_traits>
-// There is no compile time flag for LSan, to enable this whenever ASan is
+#include "src/base/macros.h"
+
+// There is no compile time flag for LSan, so enable this whenever ASan is
// enabled. Note that LSan can be used as part of ASan with 'detect_leaks=1'.
-// On windows, LSan is not implemented yet, so disable it there.
+// On Windows, LSan is not implemented yet, so disable it there.
#if defined(V8_USE_ADDRESS_SANITIZER) && !defined(V8_OS_WIN)
#include <sanitizer/lsan_interface.h>
@@ -26,4 +28,4 @@
#endif // defined(V8_USE_ADDRESS_SANITIZER) && !defined(V8_OS_WIN)
-#endif // V8_BASE_LSAN_H_
+#endif // V8_BASE_SANITIZER_LSAN_H_
diff --git a/deps/v8/src/base/sanitizer/msan.h b/deps/v8/src/base/sanitizer/msan.h
new file mode 100644
index 0000000000..e15208efaf
--- /dev/null
+++ b/deps/v8/src/base/sanitizer/msan.h
@@ -0,0 +1,40 @@
+// Copyright 2013 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.
+
+// MemorySanitizer support.
+
+#ifndef V8_BASE_SANITIZER_MSAN_H_
+#define V8_BASE_SANITIZER_MSAN_H_
+
+#include "src/base/macros.h"
+#include "src/base/memory.h"
+
+#ifdef V8_USE_MEMORY_SANITIZER
+
+#include <sanitizer/msan_interface.h>
+
+// Marks a memory range as uninitialized, as if it was allocated here.
+#define MSAN_ALLOCATED_UNINITIALIZED_MEMORY(start, size) \
+ __msan_allocated_memory(reinterpret_cast<const void*>(start), (size))
+
+// Marks a memory range as initialized.
+#define MSAN_MEMORY_IS_INITIALIZED(start, size) \
+ __msan_unpoison(reinterpret_cast<const void*>(start), (size))
+
+#else // !V8_USE_MEMORY_SANITIZER
+
+#define MSAN_ALLOCATED_UNINITIALIZED_MEMORY(start, size) \
+ static_assert((std::is_pointer<decltype(start)>::value || \
+ std::is_same<v8::base::Address, decltype(start)>::value), \
+ "static type violation"); \
+ static_assert(std::is_convertible<decltype(size), size_t>::value, \
+ "static type violation"); \
+ USE(start, size)
+
+#define MSAN_MEMORY_IS_INITIALIZED(start, size) \
+ MSAN_ALLOCATED_UNINITIALIZED_MEMORY(start, size)
+
+#endif // V8_USE_MEMORY_SANITIZER
+
+#endif // V8_BASE_SANITIZER_MSAN_H_
diff --git a/deps/v8/src/base/small-vector.h b/deps/v8/src/base/small-vector.h
index c337b9052d..b087d44be4 100644
--- a/deps/v8/src/base/small-vector.h
+++ b/deps/v8/src/base/small-vector.h
@@ -154,6 +154,13 @@ class SmallVector {
base::bits::RoundUpToPowerOfTwo(std::max(min_capacity, 2 * capacity()));
T* new_storage =
reinterpret_cast<T*>(base::Malloc(sizeof(T) * new_capacity));
+ if (new_storage == nullptr) {
+ // Should be: V8::FatalProcessOutOfMemory, but we don't include V8 from
+ // base. The message is intentionally the same as FatalProcessOutOfMemory
+ // since that will help fuzzers and chromecrash to categorize such
+ // crashes appropriately.
+ FATAL("Fatal process out of memory: base::SmallVector::Grow");
+ }
base::Memcpy(new_storage, begin_, sizeof(T) * in_use);
if (is_big()) base::Free(begin_);
begin_ = new_storage;
diff --git a/deps/v8/src/base/template-utils.h b/deps/v8/src/base/template-utils.h
index 4f082845d9..f222593e2d 100644
--- a/deps/v8/src/base/template-utils.h
+++ b/deps/v8/src/base/template-utils.h
@@ -98,6 +98,15 @@ struct make_void {
template <class... Ts>
using void_t = typename make_void<Ts...>::type;
+// Corresponds to C++17's std::conjunction
+template <class...>
+struct conjunction : std::true_type {};
+template <class B>
+struct conjunction<B> : B {};
+template <class B, class... Bn>
+struct conjunction<B, Bn...>
+ : std::conditional_t<bool(B::value), conjunction<Bn...>, B> {};
+
} // namespace base
} // namespace v8
diff --git a/deps/v8/src/base/v8-fallthrough.h b/deps/v8/src/base/v8-fallthrough.h
index f61238de06..a6dc6972d6 100644
--- a/deps/v8/src/base/v8-fallthrough.h
+++ b/deps/v8/src/base/v8-fallthrough.h
@@ -13,7 +13,7 @@
// So do not include this header in any of v8's public headers -- only
// use it in src/, not in include/.
#if defined(__clang__)
-#define V8_FALLTHROUGH [[clang::fallthrough]] // NOLINT(whitespace/braces)
+#define V8_FALLTHROUGH [[clang::fallthrough]]
#else
#define V8_FALLTHROUGH
#endif
diff --git a/deps/v8/src/base/vlq.h b/deps/v8/src/base/vlq.h
index baeb5b9430..96ee42cf6e 100644
--- a/deps/v8/src/base/vlq.h
+++ b/deps/v8/src/base/vlq.h
@@ -14,60 +14,95 @@ namespace v8 {
namespace base {
static constexpr uint32_t kContinueShift = 7;
-static constexpr uint32_t kContinueMask = 1 << kContinueShift;
-static constexpr uint32_t kDataMask = kContinueMask - 1;
+static constexpr uint32_t kContinueBit = 1 << kContinueShift;
+static constexpr uint32_t kDataMask = kContinueBit - 1;
// Encodes an unsigned value using variable-length encoding and stores it using
-// the passed process_byte function.
-inline void VLQEncodeUnsigned(const std::function<void(byte)>& process_byte,
- uint32_t value) {
- bool has_next;
+// the passed process_byte function. The function should return a pointer to
+// the byte that was written, so that VLQEncodeUnsigned can mutate it after
+// writing it.
+template <typename Function>
+inline typename std::enable_if<
+ std::is_same<decltype(std::declval<Function>()(0)), byte*>::value,
+ void>::type
+VLQEncodeUnsigned(Function&& process_byte, uint32_t value) {
+ byte* written_byte = process_byte(value);
+ if (value <= kDataMask) {
+ // Value fits in first byte, early return.
+ return;
+ }
do {
- byte cur_byte = value & kDataMask;
+ // Turn on continuation bit in the byte we just wrote.
+ *written_byte |= kContinueBit;
value >>= kContinueShift;
- has_next = value != 0;
- // The most significant bit is set when we are not done with the value yet.
- cur_byte |= static_cast<uint32_t>(has_next) << kContinueShift;
- process_byte(cur_byte);
- } while (has_next);
+ written_byte = process_byte(value);
+ } while (value > kDataMask);
}
// Encodes value using variable-length encoding and stores it using the passed
// process_byte function.
-inline void VLQEncode(const std::function<void(byte)>& process_byte,
- int32_t value) {
+template <typename Function>
+inline typename std::enable_if<
+ std::is_same<decltype(std::declval<Function>()(0)), byte*>::value,
+ void>::type
+VLQEncode(Function&& process_byte, int32_t value) {
// This wouldn't handle kMinInt correctly if it ever encountered it.
DCHECK_NE(value, std::numeric_limits<int32_t>::min());
bool is_negative = value < 0;
// Encode sign in least significant bit.
uint32_t bits = static_cast<uint32_t>((is_negative ? -value : value) << 1) |
static_cast<uint32_t>(is_negative);
- VLQEncodeUnsigned(process_byte, bits);
+ VLQEncodeUnsigned(std::forward<Function>(process_byte), bits);
}
// Wrapper of VLQEncode for std::vector backed storage containers.
template <typename A>
inline void VLQEncode(std::vector<byte, A>* data, int32_t value) {
- VLQEncode([data](byte value) { data->push_back(value); }, value);
+ VLQEncode(
+ [data](byte value) {
+ data->push_back(value);
+ return &data->back();
+ },
+ value);
}
// Wrapper of VLQEncodeUnsigned for std::vector backed storage containers.
template <typename A>
inline void VLQEncodeUnsigned(std::vector<byte, A>* data, uint32_t value) {
- VLQEncodeUnsigned([data](byte value) { data->push_back(value); }, value);
+ VLQEncodeUnsigned(
+ [data](byte value) {
+ data->push_back(value);
+ return &data->back();
+ },
+ value);
+}
+
+// Decodes a variable-length encoded unsigned value from bytes returned by
+// successive calls to the given function.
+template <typename GetNextFunction>
+inline typename std::enable_if<
+ std::is_same<decltype(std::declval<GetNextFunction>()()), byte>::value,
+ uint32_t>::type
+VLQDecodeUnsigned(GetNextFunction&& get_next) {
+ byte cur_byte = get_next();
+ // Single byte fast path; no need to mask.
+ if (cur_byte <= kDataMask) {
+ return cur_byte;
+ }
+ uint32_t bits = cur_byte & kDataMask;
+ for (int shift = kContinueShift; shift <= 32; shift += kContinueShift) {
+ byte cur_byte = get_next();
+ bits |= (cur_byte & kDataMask) << shift;
+ if (cur_byte <= kDataMask) break;
+ }
+ return bits;
}
// Decodes a variable-length encoded unsigned value stored in contiguous memory
// starting at data_start + index, updating index to where the next encoded
// value starts.
inline uint32_t VLQDecodeUnsigned(byte* data_start, int* index) {
- uint32_t bits = 0;
- for (int shift = 0; true; shift += kContinueShift) {
- byte cur_byte = data_start[(*index)++];
- bits += (cur_byte & kDataMask) << shift;
- if ((cur_byte & kContinueMask) == 0) break;
- }
- return bits;
+ return VLQDecodeUnsigned([&] { return data_start[(*index)++]; });
}
// Decodes a variable-length encoded value stored in contiguous memory starting
diff --git a/deps/v8/src/baseline/arm/baseline-assembler-arm-inl.h b/deps/v8/src/baseline/arm/baseline-assembler-arm-inl.h
index eca2b47cc0..bfccef90f8 100644
--- a/deps/v8/src/baseline/arm/baseline-assembler-arm-inl.h
+++ b/deps/v8/src/baseline/arm/baseline-assembler-arm-inl.h
@@ -124,7 +124,7 @@ void BaselineAssembler::CallBuiltin(Builtins::Name builtin) {
Register temp = temps.AcquireScratch();
__ LoadEntryFromBuiltinIndex(builtin, temp);
__ Call(temp);
- if (FLAG_code_comments) __ RecordComment("]");
+ __ RecordComment("]");
}
void BaselineAssembler::TailCallBuiltin(Builtins::Name builtin) {
@@ -133,7 +133,7 @@ void BaselineAssembler::TailCallBuiltin(Builtins::Name builtin) {
Register temp = temps.AcquireScratch();
__ LoadEntryFromBuiltinIndex(builtin, temp);
__ Jump(temp);
- if (FLAG_code_comments) __ RecordComment("]");
+ __ RecordComment("]");
}
void BaselineAssembler::Test(Register value, int mask) {
@@ -151,7 +151,7 @@ void BaselineAssembler::CmpInstanceType(Register map,
InstanceType instance_type) {
ScratchRegisterScope temps(this);
Register type = temps.AcquireScratch();
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
__ AssertNotSmi(map);
__ CompareObjectType(map, type, type, MAP_TYPE);
__ Assert(eq, AbortReason::kUnexpectedValue);
@@ -198,10 +198,10 @@ void BaselineAssembler::Move(MemOperand output, Register source) {
__ str(source, output);
}
void BaselineAssembler::Move(Register output, ExternalReference reference) {
- __ mov(output, Operand(reference));
+ __ Move32BitImmediate(output, Operand(reference));
}
void BaselineAssembler::Move(Register output, Handle<HeapObject> value) {
- __ mov(output, Operand(value));
+ __ Move32BitImmediate(output, Operand(value));
}
void BaselineAssembler::Move(Register output, int32_t value) {
__ mov(output, Operand(value));
@@ -351,7 +351,7 @@ void BaselineAssembler::StoreTaggedFieldWithWriteBarrier(Register target,
Register value) {
__ str(value, FieldMemOperand(target, offset));
__ RecordWriteField(target, offset, value, kLRHasNotBeenSaved,
- kDontSaveFPRegs);
+ SaveFPRegsMode::kIgnore);
}
void BaselineAssembler::StoreTaggedFieldNoWriteBarrier(Register target,
int offset,
diff --git a/deps/v8/src/baseline/arm/baseline-compiler-arm-inl.h b/deps/v8/src/baseline/arm/baseline-compiler-arm-inl.h
index ff2b6d1a83..d7f0a606d3 100644
--- a/deps/v8/src/baseline/arm/baseline-compiler-arm-inl.h
+++ b/deps/v8/src/baseline/arm/baseline-compiler-arm-inl.h
@@ -19,9 +19,9 @@ void BaselineCompiler::Prologue() {
__ masm()->EnterFrame(StackFrame::BASELINE);
DCHECK_EQ(kJSFunctionRegister, kJavaScriptCallTargetRegister);
int max_frame_size = bytecode_->frame_size() + max_call_args_;
- CallBuiltin(Builtins::kBaselineOutOfLinePrologue, kContextRegister,
- kJSFunctionRegister, kJavaScriptCallArgCountRegister,
- max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
+ CallBuiltin<Builtins::kBaselineOutOfLinePrologue>(
+ kContextRegister, kJSFunctionRegister, kJavaScriptCallArgCountRegister,
+ max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
PrologueFillFrame();
}
diff --git a/deps/v8/src/baseline/arm64/baseline-assembler-arm64-inl.h b/deps/v8/src/baseline/arm64/baseline-assembler-arm64-inl.h
index 27b7c2b2d8..63e90df4d6 100644
--- a/deps/v8/src/baseline/arm64/baseline-assembler-arm64-inl.h
+++ b/deps/v8/src/baseline/arm64/baseline-assembler-arm64-inl.h
@@ -167,7 +167,7 @@ void BaselineAssembler::CmpInstanceType(Register map,
InstanceType instance_type) {
ScratchRegisterScope temps(this);
Register type = temps.AcquireScratch();
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
__ AssertNotSmi(map);
__ CompareObjectType(map, type, type, MAP_TYPE);
__ Assert(eq, AbortReason::kUnexpectedValue);
@@ -422,7 +422,7 @@ void BaselineAssembler::StoreTaggedFieldWithWriteBarrier(Register target,
Register value) {
__ StoreTaggedField(value, FieldMemOperand(target, offset));
__ RecordWriteField(target, offset, value, kLRHasNotBeenSaved,
- kDontSaveFPRegs);
+ SaveFPRegsMode::kIgnore);
}
void BaselineAssembler::StoreTaggedFieldNoWriteBarrier(Register target,
int offset,
diff --git a/deps/v8/src/baseline/arm64/baseline-compiler-arm64-inl.h b/deps/v8/src/baseline/arm64/baseline-compiler-arm64-inl.h
index e567be41d2..0807c5434a 100644
--- a/deps/v8/src/baseline/arm64/baseline-compiler-arm64-inl.h
+++ b/deps/v8/src/baseline/arm64/baseline-compiler-arm64-inl.h
@@ -18,9 +18,9 @@ void BaselineCompiler::Prologue() {
__ masm()->EnterFrame(StackFrame::BASELINE);
DCHECK_EQ(kJSFunctionRegister, kJavaScriptCallTargetRegister);
int max_frame_size = bytecode_->frame_size() + max_call_args_;
- CallBuiltin(Builtins::kBaselineOutOfLinePrologue, kContextRegister,
- kJSFunctionRegister, kJavaScriptCallArgCountRegister,
- max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
+ CallBuiltin<Builtins::kBaselineOutOfLinePrologue>(
+ kContextRegister, kJSFunctionRegister, kJavaScriptCallArgCountRegister,
+ max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
__ masm()->AssertSpAligned();
PrologueFillFrame();
diff --git a/deps/v8/src/baseline/baseline-assembler-inl.h b/deps/v8/src/baseline/baseline-assembler-inl.h
index 8fd54d63a2..401062517f 100644
--- a/deps/v8/src/baseline/baseline-assembler-inl.h
+++ b/deps/v8/src/baseline/baseline-assembler-inl.h
@@ -8,12 +8,13 @@
// TODO(v8:11421): Remove #if once baseline compiler is ported to other
// architectures.
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
- V8_TARGET_ARCH_ARM
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
#include <type_traits>
#include <unordered_map>
#include "src/baseline/baseline-assembler.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/interpreter/bytecode-register.h"
#include "src/objects/feedback-cell.h"
#include "src/objects/js-function.h"
@@ -27,6 +28,8 @@
#include "src/baseline/ia32/baseline-assembler-ia32-inl.h"
#elif V8_TARGET_ARCH_ARM
#include "src/baseline/arm/baseline-assembler-arm-inl.h"
+#elif V8_TARGET_ARCH_RISCV64
+#include "src/baseline/riscv64/baseline-assembler-riscv64-inl.h"
#else
#error Unsupported target architecture.
#endif
@@ -41,10 +44,10 @@ void BaselineAssembler::GetCode(Isolate* isolate, CodeDesc* desc) {
__ GetCode(isolate, desc);
}
int BaselineAssembler::pc_offset() const { return __ pc_offset(); }
-bool BaselineAssembler::emit_debug_code() const { return __ emit_debug_code(); }
void BaselineAssembler::CodeEntry() const { __ CodeEntry(); }
void BaselineAssembler::ExceptionHandler() const { __ ExceptionHandler(); }
void BaselineAssembler::RecordComment(const char* string) {
+ if (!FLAG_code_comments) return;
__ RecordComment(string);
}
void BaselineAssembler::Trap() { __ Trap(); }
diff --git a/deps/v8/src/baseline/baseline-assembler.h b/deps/v8/src/baseline/baseline-assembler.h
index 38874d556f..7c46cd5e2c 100644
--- a/deps/v8/src/baseline/baseline-assembler.h
+++ b/deps/v8/src/baseline/baseline-assembler.h
@@ -8,7 +8,7 @@
// TODO(v8:11421): Remove #if once baseline compiler is ported to other
// architectures.
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
- V8_TARGET_ARCH_ARM
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
#include "src/codegen/macro-assembler.h"
#include "src/objects/tagged-index.h"
@@ -32,10 +32,9 @@ class BaselineAssembler {
inline void GetCode(Isolate* isolate, CodeDesc* desc);
inline int pc_offset() const;
- inline bool emit_debug_code() const;
inline void CodeEntry() const;
inline void ExceptionHandler() const;
- inline void RecordComment(const char* string);
+ V8_INLINE void RecordComment(const char* string);
inline void Trap();
inline void DebugBreak();
diff --git a/deps/v8/src/baseline/baseline-compiler.cc b/deps/v8/src/baseline/baseline-compiler.cc
index 3d599c11fd..9c6e3f10e6 100644
--- a/deps/v8/src/baseline/baseline-compiler.cc
+++ b/deps/v8/src/baseline/baseline-compiler.cc
@@ -4,8 +4,9 @@
// TODO(v8:11421): Remove #if once baseline compiler is ported to other
// architectures.
+#include "src/base/bits.h"
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
- V8_TARGET_ARCH_ARM
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
#include "src/baseline/baseline-compiler.h"
@@ -19,7 +20,7 @@
#include "src/builtins/builtins.h"
#include "src/codegen/assembler.h"
#include "src/codegen/compiler.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/machine-type.h"
#include "src/codegen/macro-assembler-inl.h"
#include "src/common/globals.h"
@@ -40,6 +41,8 @@
#include "src/baseline/ia32/baseline-compiler-ia32-inl.h"
#elif V8_TARGET_ARCH_ARM
#include "src/baseline/arm/baseline-compiler-arm-inl.h"
+#elif V8_TARGET_ARCH_RISCV64
+#include "src/baseline/riscv64/baseline-compiler-riscv64-inl.h"
#else
#error Unsupported target architecture.
#endif
@@ -48,9 +51,9 @@ namespace v8 {
namespace internal {
namespace baseline {
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<ByteArray> BytecodeOffsetTableBuilder::ToBytecodeOffsetTable(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
if (bytes_.empty()) return isolate->factory()->empty_byte_array();
Handle<ByteArray> table = isolate->factory()->NewByteArray(
static_cast<int>(bytes_.size()), AllocationType::kOld);
@@ -68,6 +71,7 @@ bool Clobbers(Register target, TaggedIndex index) { return false; }
bool Clobbers(Register target, int32_t imm) { return false; }
bool Clobbers(Register target, RootIndex index) { return false; }
bool Clobbers(Register target, interpreter::Register reg) { return false; }
+bool Clobbers(Register target, interpreter::RegisterList list) { return false; }
// We don't know what's inside machine registers or operands, so assume they
// match.
@@ -97,134 +101,151 @@ bool MachineTypeMatches(MachineType type, interpreter::Register reg) {
return type.IsTagged();
}
-template <typename... Args>
+template <typename Descriptor, typename... Args>
struct CheckArgsHelper;
-template <>
-struct CheckArgsHelper<> {
- static void Check(BaselineAssembler* masm, CallInterfaceDescriptor descriptor,
- int i) {
- if (descriptor.AllowVarArgs()) {
- CHECK_GE(i, descriptor.GetParameterCount());
+template <typename Descriptor>
+struct CheckArgsHelper<Descriptor> {
+ static void Check(BaselineAssembler* masm, int i) {
+ if (Descriptor::AllowVarArgs()) {
+ CHECK_GE(i, Descriptor::GetParameterCount());
} else {
- CHECK_EQ(i, descriptor.GetParameterCount());
+ CHECK_EQ(i, Descriptor::GetParameterCount());
}
}
};
-template <typename Arg, typename... Args>
-struct CheckArgsHelper<Arg, Args...> {
- static void Check(BaselineAssembler* masm, CallInterfaceDescriptor descriptor,
- int i, Arg arg, Args... args) {
- if (i >= descriptor.GetParameterCount()) {
- CHECK(descriptor.AllowVarArgs());
+template <typename Descriptor, typename Arg, typename... Args>
+struct CheckArgsHelper<Descriptor, Arg, Args...> {
+ static void Check(BaselineAssembler* masm, int i, Arg arg, Args... args) {
+ if (i >= Descriptor::GetParameterCount()) {
+ CHECK(Descriptor::AllowVarArgs());
return;
}
- CHECK(MachineTypeMatches(descriptor.GetParameterType(i), arg));
- CheckArgsHelper<Args...>::Check(masm, descriptor, i + 1, args...);
+ CHECK(MachineTypeMatches(Descriptor().GetParameterType(i), arg));
+ CheckArgsHelper<Descriptor, Args...>::Check(masm, i + 1, args...);
}
};
-template <typename... Args>
-struct CheckArgsHelper<interpreter::RegisterList, Args...> {
- static void Check(BaselineAssembler* masm, CallInterfaceDescriptor descriptor,
- int i, interpreter::RegisterList list, Args... args) {
+template <typename Descriptor, typename... Args>
+struct CheckArgsHelper<Descriptor, interpreter::RegisterList, Args...> {
+ static void Check(BaselineAssembler* masm, int i,
+ interpreter::RegisterList list, Args... args) {
for (int reg_index = 0; reg_index < list.register_count();
++reg_index, ++i) {
- if (i >= descriptor.GetParameterCount()) {
- CHECK(descriptor.AllowVarArgs());
+ if (i >= Descriptor::GetParameterCount()) {
+ CHECK(Descriptor::AllowVarArgs());
return;
}
- CHECK(
- MachineTypeMatches(descriptor.GetParameterType(i), list[reg_index]));
+ CHECK(MachineTypeMatches(Descriptor().GetParameterType(i),
+ list[reg_index]));
}
- CheckArgsHelper<Args...>::Check(masm, descriptor, i, args...);
+ CheckArgsHelper<Descriptor, Args...>::Check(masm, i, args...);
}
};
-template <typename... Args>
-void CheckArgs(BaselineAssembler* masm, CallInterfaceDescriptor descriptor,
- Args... args) {
- CheckArgsHelper<Args...>::Check(masm, descriptor, 0, args...);
+template <typename Descriptor, typename... Args>
+void CheckArgs(BaselineAssembler* masm, Args... args) {
+ CheckArgsHelper<Descriptor, Args...>::Check(masm, 0, args...);
+}
+
+void CheckSettingDoesntClobber(Register target) {}
+template <typename Arg, typename... Args>
+void CheckSettingDoesntClobber(Register target, Arg arg, Args... args) {
+ DCHECK(!Clobbers(target, arg));
+ CheckSettingDoesntClobber(target, args...);
}
#else // DEBUG
-template <typename... Args>
+template <typename Descriptor, typename... Args>
void CheckArgs(Args... args) {}
+template <typename... Args>
+void CheckSettingDoesntClobber(Register target, Args... args) {}
+
#endif // DEBUG
-template <typename... Args>
+template <typename Descriptor, int ArgIndex, bool kIsRegister, typename... Args>
struct ArgumentSettingHelper;
-template <>
-struct ArgumentSettingHelper<> {
- static void Set(BaselineAssembler* masm, CallInterfaceDescriptor descriptor,
- int i) {}
- static void CheckSettingDoesntClobber(Register target, int arg_index) {}
+template <typename Descriptor, int ArgIndex, bool kIsRegister>
+struct ArgumentSettingHelper<Descriptor, ArgIndex, kIsRegister> {
+ static void Set(BaselineAssembler* masm) {
+ // Should only ever be called for the end of register arguments.
+ STATIC_ASSERT(ArgIndex == Descriptor::GetRegisterParameterCount());
+ }
};
-template <typename Arg, typename... Args>
-struct ArgumentSettingHelper<Arg, Args...> {
- static void Set(BaselineAssembler* masm, CallInterfaceDescriptor descriptor,
- int i, Arg arg, Args... args) {
- if (i < descriptor.GetRegisterParameterCount()) {
- Register target = descriptor.GetRegisterParameter(i);
- ArgumentSettingHelper<Args...>::CheckSettingDoesntClobber(target, i + 1,
- args...);
- masm->Move(target, arg);
- ArgumentSettingHelper<Args...>::Set(masm, descriptor, i + 1, args...);
- } else if (descriptor.GetStackArgumentOrder() ==
- StackArgumentOrder::kDefault) {
- masm->Push(arg, args...);
- } else {
- masm->PushReverse(arg, args...);
- }
+template <typename Descriptor, int ArgIndex, typename Arg, typename... Args>
+struct ArgumentSettingHelper<Descriptor, ArgIndex, true, Arg, Args...> {
+ static void Set(BaselineAssembler* masm, Arg arg, Args... args) {
+ STATIC_ASSERT(ArgIndex < Descriptor::GetRegisterParameterCount());
+ Register target = Descriptor::GetRegisterParameter(ArgIndex);
+ CheckSettingDoesntClobber(target, args...);
+ masm->Move(target, arg);
+ ArgumentSettingHelper<Descriptor, ArgIndex + 1,
+ (ArgIndex + 1 <
+ Descriptor::GetRegisterParameterCount()),
+ Args...>::Set(masm, args...);
}
- static void CheckSettingDoesntClobber(Register target, int arg_index, Arg arg,
- Args... args) {
- DCHECK(!Clobbers(target, arg));
- ArgumentSettingHelper<Args...>::CheckSettingDoesntClobber(
- target, arg_index + 1, args...);
+};
+
+template <typename Descriptor, int ArgIndex>
+struct ArgumentSettingHelper<Descriptor, ArgIndex, true,
+ interpreter::RegisterList> {
+ static void Set(BaselineAssembler* masm, interpreter::RegisterList list) {
+ STATIC_ASSERT(ArgIndex < Descriptor::GetRegisterParameterCount());
+ DCHECK_EQ(ArgIndex + list.register_count(),
+ Descriptor::GetRegisterParameterCount());
+ for (int i = 0; ArgIndex + i < Descriptor::GetRegisterParameterCount();
+ ++i) {
+ Register target = Descriptor::GetRegisterParameter(ArgIndex + i);
+ masm->Move(target, masm->RegisterFrameOperand(list[i]));
+ }
}
};
-// Specialization for interpreter::RegisterList which iterates it.
-// RegisterLists are only allowed to be the last argument.
-template <>
-struct ArgumentSettingHelper<interpreter::RegisterList> {
- static void Set(BaselineAssembler* masm, CallInterfaceDescriptor descriptor,
- int i, interpreter::RegisterList list) {
- // Either all the values are in machine registers, or they're all on the
- // stack.
- if (i < descriptor.GetRegisterParameterCount()) {
- for (int reg_index = 0; reg_index < list.register_count();
- ++reg_index, ++i) {
- Register target = descriptor.GetRegisterParameter(i);
- masm->Move(target, masm->RegisterFrameOperand(list[reg_index]));
- }
- } else if (descriptor.GetStackArgumentOrder() ==
- StackArgumentOrder::kDefault) {
- masm->Push(list);
+template <typename Descriptor, int ArgIndex, typename Arg, typename... Args>
+struct ArgumentSettingHelper<Descriptor, ArgIndex, false, Arg, Args...> {
+ static void Set(BaselineAssembler* masm, Arg arg, Args... args) {
+ if (Descriptor::kStackArgumentOrder == StackArgumentOrder::kDefault) {
+ masm->Push(arg, args...);
} else {
- masm->PushReverse(list);
+ masm->PushReverse(arg, args...);
}
}
- static void CheckSettingDoesntClobber(Register target, int arg_index,
- interpreter::RegisterList arg) {}
};
-template <typename... Args>
-void MoveArgumentsForDescriptor(BaselineAssembler* masm,
- CallInterfaceDescriptor descriptor,
- Args... args) {
- CheckArgs(masm, descriptor, args...);
- ArgumentSettingHelper<Args...>::Set(masm, descriptor, 0, args...);
+template <Builtins::Name kBuiltin, typename... Args>
+void MoveArgumentsForBuiltin(BaselineAssembler* masm, Args... args) {
+ using Descriptor = typename CallInterfaceDescriptorFor<kBuiltin>::type;
+ CheckArgs<Descriptor>(masm, args...);
+ ArgumentSettingHelper<Descriptor, 0,
+ (0 < Descriptor::GetRegisterParameterCount()),
+ Args...>::Set(masm, args...);
+ if (Descriptor::HasContextParameter()) {
+ masm->LoadContext(Descriptor::ContextRegister());
+ }
}
} // namespace detail
+namespace {
+// Rough upper-bound estimate. Copying the data is most likely more expensive
+// than pre-allocating a large enough buffer.
+#ifdef V8_TARGET_ARCH_IA32
+const int kAverageBytecodeToInstructionRatio = 5;
+#else
+const int kAverageBytecodeToInstructionRatio = 7;
+#endif
+std::unique_ptr<AssemblerBuffer> AllocateBuffer(
+ Handle<BytecodeArray> bytecodes) {
+ int estimated_size = bytecodes->length() * kAverageBytecodeToInstructionRatio;
+ return NewAssemblerBuffer(RoundUp(estimated_size, 4 * KB));
+}
+} // namespace
+
BaselineCompiler::BaselineCompiler(
Isolate* isolate, Handle<SharedFunctionInfo> shared_function_info,
Handle<BytecodeArray> bytecode)
@@ -232,20 +253,26 @@ BaselineCompiler::BaselineCompiler(
stats_(isolate->counters()->runtime_call_stats()),
shared_function_info_(shared_function_info),
bytecode_(bytecode),
- masm_(isolate, CodeObjectRequired::kNo),
+ masm_(isolate, CodeObjectRequired::kNo, AllocateBuffer(bytecode)),
basm_(&masm_),
iterator_(bytecode_),
zone_(isolate->allocator(), ZONE_NAME),
labels_(zone_.NewArray<BaselineLabels*>(bytecode_->length())) {
MemsetPointer(labels_, nullptr, bytecode_->length());
+
+ // Empirically determined expected size of the offset table at the 95th %ile,
+ // based on the size of the bytecode, to be:
+ //
+ // 16 + (bytecode size) / 4
+ bytecode_offset_table_builder_.Reserve(
+ base::bits::RoundUpToPowerOfTwo(16 + bytecode_->Size() / 4));
}
#define __ basm_.
void BaselineCompiler::GenerateCode() {
{
- RuntimeCallTimerScope runtimeTimer(
- stats_, RuntimeCallCounterId::kCompileBaselinePreVisit);
+ RCS_SCOPE(stats_, RuntimeCallCounterId::kCompileBaselinePreVisit);
for (; !iterator_.done(); iterator_.Advance()) {
PreVisitSingleBytecode();
}
@@ -257,8 +284,7 @@ void BaselineCompiler::GenerateCode() {
__ CodeEntry();
{
- RuntimeCallTimerScope runtimeTimer(
- stats_, RuntimeCallCounterId::kCompileBaselineVisit);
+ RCS_SCOPE(stats_, RuntimeCallCounterId::kCompileBaselineVisit);
Prologue();
AddPosition();
for (; !iterator_.done(); iterator_.Advance()) {
@@ -453,7 +479,7 @@ void BaselineCompiler::VisitSingleBytecode() {
}
void BaselineCompiler::VerifyFrame() {
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ RecordComment("[ Verify frame");
__ RecordComment(" -- Verify frame size");
VerifyFrameSize();
@@ -552,28 +578,18 @@ Label* BaselineCompiler::BuildForwardJumpLabel() {
return &threaded_label->label;
}
-template <typename... Args>
-void BaselineCompiler::CallBuiltin(Builtins::Name builtin, Args... args) {
+template <Builtins::Name kBuiltin, typename... Args>
+void BaselineCompiler::CallBuiltin(Args... args) {
__ RecordComment("[ CallBuiltin");
- CallInterfaceDescriptor descriptor =
- Builtins::CallInterfaceDescriptorFor(builtin);
- detail::MoveArgumentsForDescriptor(&basm_, descriptor, args...);
- if (descriptor.HasContextParameter()) {
- __ LoadContext(descriptor.ContextRegister());
- }
- __ CallBuiltin(builtin);
+ detail::MoveArgumentsForBuiltin<kBuiltin>(&basm_, args...);
+ __ CallBuiltin(kBuiltin);
__ RecordComment("]");
}
-template <typename... Args>
-void BaselineCompiler::TailCallBuiltin(Builtins::Name builtin, Args... args) {
- CallInterfaceDescriptor descriptor =
- Builtins::CallInterfaceDescriptorFor(builtin);
- detail::MoveArgumentsForDescriptor(&basm_, descriptor, args...);
- if (descriptor.HasContextParameter()) {
- __ LoadContext(descriptor.ContextRegister());
- }
- __ TailCallBuiltin(builtin);
+template <Builtins::Name kBuiltin, typename... Args>
+void BaselineCompiler::TailCallBuiltin(Args... args) {
+ detail::MoveArgumentsForBuiltin<kBuiltin>(&basm_, args...);
+ __ TailCallBuiltin(kBuiltin);
}
template <typename... Args>
@@ -584,27 +600,17 @@ void BaselineCompiler::CallRuntime(Runtime::FunctionId function, Args... args) {
}
// Returns into kInterpreterAccumulatorRegister
-void BaselineCompiler::JumpIfToBoolean(bool do_jump_if_true, Register reg,
- Label* label, Label::Distance distance) {
- Label end;
- Label::Distance end_distance = Label::kNear;
-
- Label* true_label = do_jump_if_true ? label : &end;
- Label::Distance true_distance = do_jump_if_true ? distance : end_distance;
- Label* false_label = do_jump_if_true ? &end : label;
- Label::Distance false_distance = do_jump_if_true ? end_distance : distance;
-
- BaselineAssembler::ScratchRegisterScope scratch_scope(&basm_);
- Register to_boolean = scratch_scope.AcquireScratch();
- {
- SaveAccumulatorScope accumulator_scope(&basm_);
- CallBuiltin(Builtins::kToBoolean, reg);
- __ Move(to_boolean, kInterpreterAccumulatorRegister);
- }
- __ JumpIfRoot(to_boolean, RootIndex::kTrueValue, true_label, true_distance);
- if (false_label != &end) __ Jump(false_label, false_distance);
-
- __ Bind(&end);
+void BaselineCompiler::JumpIfToBoolean(bool do_jump_if_true, Label* label,
+ Label::Distance distance) {
+ CallBuiltin<Builtins::kToBooleanForBaselineJump>(
+ kInterpreterAccumulatorRegister);
+ // ToBooleanForBaselineJump returns the ToBoolean value into return reg 1, and
+ // the original value into kInterpreterAccumulatorRegister, so we don't have
+ // to worry about it getting clobbered.
+ STATIC_ASSERT(kReturnRegister0 == kInterpreterAccumulatorRegister);
+ __ Cmp(kReturnRegister1, Smi::FromInt(0));
+ __ JumpIf(do_jump_if_true ? Condition::kNotEqual : Condition::kEqual, label,
+ distance);
}
void BaselineCompiler::VisitLdaZero() {
@@ -641,22 +647,21 @@ void BaselineCompiler::VisitLdaConstant() {
}
void BaselineCompiler::VisitLdaGlobal() {
- CallBuiltin(Builtins::kLoadGlobalICBaseline,
- Constant<Name>(0), // name
- IndexAsTagged(1)); // slot
+ CallBuiltin<Builtins::kLoadGlobalICBaseline>(Constant<Name>(0), // name
+ IndexAsTagged(1)); // slot
}
void BaselineCompiler::VisitLdaGlobalInsideTypeof() {
- CallBuiltin(Builtins::kLoadGlobalICInsideTypeofBaseline,
- Constant<Name>(0), // name
- IndexAsTagged(1)); // slot
+ CallBuiltin<Builtins::kLoadGlobalICInsideTypeofBaseline>(
+ Constant<Name>(0), // name
+ IndexAsTagged(1)); // slot
}
void BaselineCompiler::VisitStaGlobal() {
- CallBuiltin(Builtins::kStoreGlobalICBaseline,
- Constant<Name>(0), // name
- kInterpreterAccumulatorRegister, // value
- IndexAsTagged(1)); // slot
+ CallBuiltin<Builtins::kStoreGlobalICBaseline>(
+ Constant<Name>(0), // name
+ kInterpreterAccumulatorRegister, // value
+ IndexAsTagged(1)); // slot
}
void BaselineCompiler::VisitPushContext() {
@@ -730,13 +735,13 @@ void BaselineCompiler::VisitLdaLookupSlot() {
}
void BaselineCompiler::VisitLdaLookupContextSlot() {
- CallBuiltin(Builtins::kLookupContextBaseline, Constant<Name>(0),
- UintAsTagged(2), IndexAsTagged(1));
+ CallBuiltin<Builtins::kLookupContextBaseline>(
+ Constant<Name>(0), UintAsTagged(2), IndexAsTagged(1));
}
void BaselineCompiler::VisitLdaLookupGlobalSlot() {
- CallBuiltin(Builtins::kLookupGlobalICBaseline, Constant<Name>(0),
- UintAsTagged(2), IndexAsTagged(1));
+ CallBuiltin<Builtins::kLookupGlobalICBaseline>(
+ Constant<Name>(0), UintAsTagged(2), IndexAsTagged(1));
}
void BaselineCompiler::VisitLdaLookupSlotInsideTypeof() {
@@ -744,13 +749,13 @@ void BaselineCompiler::VisitLdaLookupSlotInsideTypeof() {
}
void BaselineCompiler::VisitLdaLookupContextSlotInsideTypeof() {
- CallBuiltin(Builtins::kLookupContextInsideTypeofBaseline, Constant<Name>(0),
- UintAsTagged(2), IndexAsTagged(1));
+ CallBuiltin<Builtins::kLookupContextInsideTypeofBaseline>(
+ Constant<Name>(0), UintAsTagged(2), IndexAsTagged(1));
}
void BaselineCompiler::VisitLdaLookupGlobalSlotInsideTypeof() {
- CallBuiltin(Builtins::kLookupGlobalICInsideTypeofBaseline, Constant<Name>(0),
- UintAsTagged(2), IndexAsTagged(1));
+ CallBuiltin<Builtins::kLookupGlobalICInsideTypeofBaseline>(
+ Constant<Name>(0), UintAsTagged(2), IndexAsTagged(1));
}
void BaselineCompiler::VisitStaLookupSlot() {
@@ -793,14 +798,13 @@ void BaselineCompiler::VisitMov() {
}
void BaselineCompiler::VisitLdaNamedProperty() {
- CallBuiltin(Builtins::kLoadICBaseline,
- RegisterOperand(0), // object
- Constant<Name>(1), // name
- IndexAsTagged(2)); // slot
+ CallBuiltin<Builtins::kLoadICBaseline>(RegisterOperand(0), // object
+ Constant<Name>(1), // name
+ IndexAsTagged(2)); // slot
}
void BaselineCompiler::VisitLdaNamedPropertyNoFeedback() {
- CallBuiltin(Builtins::kGetProperty, RegisterOperand(0), Constant<Name>(1));
+ CallBuiltin<Builtins::kGetProperty>(RegisterOperand(0), Constant<Name>(1));
}
void BaselineCompiler::VisitLdaNamedPropertyFromSuper() {
@@ -808,19 +812,19 @@ void BaselineCompiler::VisitLdaNamedPropertyFromSuper() {
LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister(),
kInterpreterAccumulatorRegister);
- CallBuiltin(Builtins::kLoadSuperICBaseline,
- RegisterOperand(0), // object
- LoadWithReceiverAndVectorDescriptor::
- LookupStartObjectRegister(), // lookup start
- Constant<Name>(1), // name
- IndexAsTagged(2)); // slot
+ CallBuiltin<Builtins::kLoadSuperICBaseline>(
+ RegisterOperand(0), // object
+ LoadWithReceiverAndVectorDescriptor::
+ LookupStartObjectRegister(), // lookup start
+ Constant<Name>(1), // name
+ IndexAsTagged(2)); // slot
}
void BaselineCompiler::VisitLdaKeyedProperty() {
- CallBuiltin(Builtins::kKeyedLoadICBaseline,
- RegisterOperand(0), // object
- kInterpreterAccumulatorRegister, // key
- IndexAsTagged(1)); // slot
+ CallBuiltin<Builtins::kKeyedLoadICBaseline>(
+ RegisterOperand(0), // object
+ kInterpreterAccumulatorRegister, // key
+ IndexAsTagged(1)); // slot
}
void BaselineCompiler::VisitLdaModuleVariable() {
@@ -878,11 +882,11 @@ void BaselineCompiler::VisitStaModuleVariable() {
}
void BaselineCompiler::VisitStaNamedProperty() {
- CallBuiltin(Builtins::kStoreICBaseline,
- RegisterOperand(0), // object
- Constant<Name>(1), // name
- kInterpreterAccumulatorRegister, // value
- IndexAsTagged(2)); // slot
+ CallBuiltin<Builtins::kStoreICBaseline>(
+ RegisterOperand(0), // object
+ Constant<Name>(1), // name
+ kInterpreterAccumulatorRegister, // value
+ IndexAsTagged(2)); // slot
}
void BaselineCompiler::VisitStaNamedPropertyNoFeedback() {
@@ -900,19 +904,19 @@ void BaselineCompiler::VisitStaNamedOwnProperty() {
}
void BaselineCompiler::VisitStaKeyedProperty() {
- CallBuiltin(Builtins::kKeyedStoreICBaseline,
- RegisterOperand(0), // object
- RegisterOperand(1), // key
- kInterpreterAccumulatorRegister, // value
- IndexAsTagged(2)); // slot
+ CallBuiltin<Builtins::kKeyedStoreICBaseline>(
+ RegisterOperand(0), // object
+ RegisterOperand(1), // key
+ kInterpreterAccumulatorRegister, // value
+ IndexAsTagged(2)); // slot
}
void BaselineCompiler::VisitStaInArrayLiteral() {
- CallBuiltin(Builtins::kStoreInArrayLiteralICBaseline,
- RegisterOperand(0), // object
- RegisterOperand(1), // name
- kInterpreterAccumulatorRegister, // value
- IndexAsTagged(2)); // slot
+ CallBuiltin<Builtins::kStoreInArrayLiteralICBaseline>(
+ RegisterOperand(0), // object
+ RegisterOperand(1), // name
+ kInterpreterAccumulatorRegister, // value
+ IndexAsTagged(2)); // slot
}
void BaselineCompiler::VisitStaDataPropertyInLiteral() {
@@ -934,140 +938,149 @@ void BaselineCompiler::VisitCollectTypeProfile() {
}
void BaselineCompiler::VisitAdd() {
- CallBuiltin(Builtins::kAdd_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kAdd_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitSub() {
- CallBuiltin(Builtins::kSubtract_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kSubtract_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitMul() {
- CallBuiltin(Builtins::kMultiply_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kMultiply_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitDiv() {
- CallBuiltin(Builtins::kDivide_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kDivide_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitMod() {
- CallBuiltin(Builtins::kModulus_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kModulus_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitExp() {
- CallBuiltin(Builtins::kExponentiate_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kExponentiate_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitBitwiseOr() {
- CallBuiltin(Builtins::kBitwiseOr_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kBitwiseOr_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitBitwiseXor() {
- CallBuiltin(Builtins::kBitwiseXor_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kBitwiseXor_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitBitwiseAnd() {
- CallBuiltin(Builtins::kBitwiseAnd_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kBitwiseAnd_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitShiftLeft() {
- CallBuiltin(Builtins::kShiftLeft_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kShiftLeft_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitShiftRight() {
- CallBuiltin(Builtins::kShiftRight_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
+ CallBuiltin<Builtins::kShiftRight_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitShiftRightLogical() {
- CallBuiltin(Builtins::kShiftRightLogical_Baseline, RegisterOperand(0),
- kInterpreterAccumulatorRegister, Index(1));
-}
-
-void BaselineCompiler::BuildBinopWithConstant(Builtins::Name builtin_name) {
- CallBuiltin(builtin_name, kInterpreterAccumulatorRegister, IntAsSmi(0),
- Index(1));
+ CallBuiltin<Builtins::kShiftRightLogical_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitAddSmi() {
- BuildBinopWithConstant(Builtins::kAdd_Baseline);
+ CallBuiltin<Builtins::kAdd_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitSubSmi() {
- BuildBinopWithConstant(Builtins::kSubtract_Baseline);
+ CallBuiltin<Builtins::kSubtract_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitMulSmi() {
- BuildBinopWithConstant(Builtins::kMultiply_Baseline);
+ CallBuiltin<Builtins::kMultiply_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitDivSmi() {
- BuildBinopWithConstant(Builtins::kDivide_Baseline);
+ CallBuiltin<Builtins::kDivide_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitModSmi() {
- BuildBinopWithConstant(Builtins::kModulus_Baseline);
+ CallBuiltin<Builtins::kModulus_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitExpSmi() {
- BuildBinopWithConstant(Builtins::kExponentiate_Baseline);
+ CallBuiltin<Builtins::kExponentiate_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitBitwiseOrSmi() {
- BuildBinopWithConstant(Builtins::kBitwiseOr_Baseline);
+ CallBuiltin<Builtins::kBitwiseOr_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitBitwiseXorSmi() {
- BuildBinopWithConstant(Builtins::kBitwiseXor_Baseline);
+ CallBuiltin<Builtins::kBitwiseXor_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitBitwiseAndSmi() {
- BuildBinopWithConstant(Builtins::kBitwiseAnd_Baseline);
+ CallBuiltin<Builtins::kBitwiseAnd_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitShiftLeftSmi() {
- BuildBinopWithConstant(Builtins::kShiftLeft_Baseline);
+ CallBuiltin<Builtins::kShiftLeft_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitShiftRightSmi() {
- BuildBinopWithConstant(Builtins::kShiftRight_Baseline);
+ CallBuiltin<Builtins::kShiftRight_Baseline>(kInterpreterAccumulatorRegister,
+ IntAsSmi(0), Index(1));
}
void BaselineCompiler::VisitShiftRightLogicalSmi() {
- BuildBinopWithConstant(Builtins::kShiftRightLogical_Baseline);
+ CallBuiltin<Builtins::kShiftRightLogical_Baseline>(
+ kInterpreterAccumulatorRegister, IntAsSmi(0), Index(1));
}
-void BaselineCompiler::BuildUnop(Builtins::Name builtin_name) {
- CallBuiltin(builtin_name,
- kInterpreterAccumulatorRegister, // value
- Index(0)); // slot
+void BaselineCompiler::VisitInc() {
+ CallBuiltin<Builtins::kIncrement_Baseline>(kInterpreterAccumulatorRegister,
+ Index(0));
}
-void BaselineCompiler::VisitInc() { BuildUnop(Builtins::kIncrement_Baseline); }
-
-void BaselineCompiler::VisitDec() { BuildUnop(Builtins::kDecrement_Baseline); }
+void BaselineCompiler::VisitDec() {
+ CallBuiltin<Builtins::kDecrement_Baseline>(kInterpreterAccumulatorRegister,
+ Index(0));
+}
-void BaselineCompiler::VisitNegate() { BuildUnop(Builtins::kNegate_Baseline); }
+void BaselineCompiler::VisitNegate() {
+ CallBuiltin<Builtins::kNegate_Baseline>(kInterpreterAccumulatorRegister,
+ Index(0));
+}
void BaselineCompiler::VisitBitwiseNot() {
- BuildUnop(Builtins::kBitwiseNot_Baseline);
+ CallBuiltin<Builtins::kBitwiseNot_Baseline>(kInterpreterAccumulatorRegister,
+ Index(0));
}
void BaselineCompiler::VisitToBooleanLogicalNot() {
SelectBooleanConstant(kInterpreterAccumulatorRegister,
[&](Label* if_true, Label::Distance distance) {
- JumpIfToBoolean(false,
- kInterpreterAccumulatorRegister,
- if_true, distance);
+ JumpIfToBoolean(false, if_true, distance);
});
}
@@ -1081,23 +1094,23 @@ void BaselineCompiler::VisitLogicalNot() {
}
void BaselineCompiler::VisitTypeOf() {
- CallBuiltin(Builtins::kTypeof, kInterpreterAccumulatorRegister);
+ CallBuiltin<Builtins::kTypeof>(kInterpreterAccumulatorRegister);
}
void BaselineCompiler::VisitDeletePropertyStrict() {
BaselineAssembler::ScratchRegisterScope scratch_scope(&basm_);
Register scratch = scratch_scope.AcquireScratch();
__ Move(scratch, kInterpreterAccumulatorRegister);
- CallBuiltin(Builtins::kDeleteProperty, RegisterOperand(0), scratch,
- Smi::FromEnum(LanguageMode::kStrict));
+ CallBuiltin<Builtins::kDeleteProperty>(RegisterOperand(0), scratch,
+ Smi::FromEnum(LanguageMode::kStrict));
}
void BaselineCompiler::VisitDeletePropertySloppy() {
BaselineAssembler::ScratchRegisterScope scratch_scope(&basm_);
Register scratch = scratch_scope.AcquireScratch();
__ Move(scratch, kInterpreterAccumulatorRegister);
- CallBuiltin(Builtins::kDeleteProperty, RegisterOperand(0), scratch,
- Smi::FromEnum(LanguageMode::kSloppy));
+ CallBuiltin<Builtins::kDeleteProperty>(RegisterOperand(0), scratch,
+ Smi::FromEnum(LanguageMode::kSloppy));
}
void BaselineCompiler::VisitGetSuperConstructor() {
@@ -1106,87 +1119,115 @@ void BaselineCompiler::VisitGetSuperConstructor() {
__ LoadPrototype(prototype, kInterpreterAccumulatorRegister);
StoreRegister(0, prototype);
}
-template <typename... Args>
-void BaselineCompiler::BuildCall(ConvertReceiverMode mode, uint32_t slot,
- uint32_t arg_count, Args... args) {
- Builtins::Name builtin;
+
+namespace {
+constexpr Builtins::Name ConvertReceiverModeToCompactBuiltin(
+ ConvertReceiverMode mode) {
switch (mode) {
case ConvertReceiverMode::kAny:
- builtin = Builtins::kCall_ReceiverIsAny_Baseline;
+ return Builtins::kCall_ReceiverIsAny_Baseline_Compact;
break;
case ConvertReceiverMode::kNullOrUndefined:
- builtin = Builtins::kCall_ReceiverIsNullOrUndefined_Baseline;
+ return Builtins::kCall_ReceiverIsNullOrUndefined_Baseline_Compact;
break;
case ConvertReceiverMode::kNotNullOrUndefined:
- builtin = Builtins::kCall_ReceiverIsNotNullOrUndefined_Baseline;
+ return Builtins::kCall_ReceiverIsNotNullOrUndefined_Baseline_Compact;
break;
- default:
- UNREACHABLE();
}
- CallBuiltin(builtin,
- RegisterOperand(0), // kFunction
- arg_count, // kActualArgumentsCount
- slot, // kSlot
- args...); // Arguments
+}
+constexpr Builtins::Name ConvertReceiverModeToBuiltin(
+ ConvertReceiverMode mode) {
+ switch (mode) {
+ case ConvertReceiverMode::kAny:
+ return Builtins::kCall_ReceiverIsAny_Baseline;
+ break;
+ case ConvertReceiverMode::kNullOrUndefined:
+ return Builtins::kCall_ReceiverIsNullOrUndefined_Baseline;
+ break;
+ case ConvertReceiverMode::kNotNullOrUndefined:
+ return Builtins::kCall_ReceiverIsNotNullOrUndefined_Baseline;
+ break;
+ }
+}
+} // namespace
+
+template <ConvertReceiverMode kMode, typename... Args>
+void BaselineCompiler::BuildCall(uint32_t slot, uint32_t arg_count,
+ Args... args) {
+ uint32_t bitfield;
+ if (CallTrampoline_Baseline_CompactDescriptor::EncodeBitField(arg_count, slot,
+ &bitfield)) {
+ CallBuiltin<ConvertReceiverModeToCompactBuiltin(kMode)>(
+ RegisterOperand(0), // kFunction
+ bitfield, // kActualArgumentsCount | kSlot
+ args...); // Arguments
+ } else {
+ CallBuiltin<ConvertReceiverModeToBuiltin(kMode)>(
+ RegisterOperand(0), // kFunction
+ arg_count, // kActualArgumentsCount
+ slot, // kSlot
+ args...); // Arguments
+ }
}
void BaselineCompiler::VisitCallAnyReceiver() {
interpreter::RegisterList args = iterator().GetRegisterListOperand(1);
uint32_t arg_count = args.register_count() - 1; // Remove receiver.
- BuildCall(ConvertReceiverMode::kAny, Index(3), arg_count, args);
+ BuildCall<ConvertReceiverMode::kAny>(Index(3), arg_count, args);
}
void BaselineCompiler::VisitCallProperty() {
interpreter::RegisterList args = iterator().GetRegisterListOperand(1);
uint32_t arg_count = args.register_count() - 1; // Remove receiver.
- BuildCall(ConvertReceiverMode::kNotNullOrUndefined, Index(3), arg_count,
- args);
+ BuildCall<ConvertReceiverMode::kNotNullOrUndefined>(Index(3), arg_count,
+ args);
}
void BaselineCompiler::VisitCallProperty0() {
- BuildCall(ConvertReceiverMode::kNotNullOrUndefined, Index(2), 0,
- RegisterOperand(1));
+ BuildCall<ConvertReceiverMode::kNotNullOrUndefined>(Index(2), 0,
+ RegisterOperand(1));
}
void BaselineCompiler::VisitCallProperty1() {
- BuildCall(ConvertReceiverMode::kNotNullOrUndefined, Index(3), 1,
- RegisterOperand(1), RegisterOperand(2));
+ BuildCall<ConvertReceiverMode::kNotNullOrUndefined>(
+ Index(3), 1, RegisterOperand(1), RegisterOperand(2));
}
void BaselineCompiler::VisitCallProperty2() {
- BuildCall(ConvertReceiverMode::kNotNullOrUndefined, Index(4), 2,
- RegisterOperand(1), RegisterOperand(2), RegisterOperand(3));
+ BuildCall<ConvertReceiverMode::kNotNullOrUndefined>(
+ Index(4), 2, RegisterOperand(1), RegisterOperand(2), RegisterOperand(3));
}
void BaselineCompiler::VisitCallUndefinedReceiver() {
interpreter::RegisterList args = iterator().GetRegisterListOperand(1);
uint32_t arg_count = args.register_count();
- BuildCall(ConvertReceiverMode::kNullOrUndefined, Index(3), arg_count,
- RootIndex::kUndefinedValue, args);
+ BuildCall<ConvertReceiverMode::kNullOrUndefined>(
+ Index(3), arg_count, RootIndex::kUndefinedValue, args);
}
void BaselineCompiler::VisitCallUndefinedReceiver0() {
- BuildCall(ConvertReceiverMode::kNullOrUndefined, Index(1), 0,
- RootIndex::kUndefinedValue);
+ BuildCall<ConvertReceiverMode::kNullOrUndefined>(Index(1), 0,
+ RootIndex::kUndefinedValue);
}
void BaselineCompiler::VisitCallUndefinedReceiver1() {
- BuildCall(ConvertReceiverMode::kNullOrUndefined, Index(2), 1,
- RootIndex::kUndefinedValue, RegisterOperand(1));
+ BuildCall<ConvertReceiverMode::kNullOrUndefined>(
+ Index(2), 1, RootIndex::kUndefinedValue, RegisterOperand(1));
}
void BaselineCompiler::VisitCallUndefinedReceiver2() {
- BuildCall(ConvertReceiverMode::kNullOrUndefined, Index(3), 2,
- RootIndex::kUndefinedValue, RegisterOperand(1), RegisterOperand(2));
+ BuildCall<ConvertReceiverMode::kNullOrUndefined>(
+ Index(3), 2, RootIndex::kUndefinedValue, RegisterOperand(1),
+ RegisterOperand(2));
}
void BaselineCompiler::VisitCallNoFeedback() {
interpreter::RegisterList args = iterator().GetRegisterListOperand(1);
uint32_t arg_count = args.register_count();
- CallBuiltin(Builtins::kCall_ReceiverIsAny,
- RegisterOperand(0), // kFunction
- arg_count - 1, // kActualArgumentsCount
- args);
+ CallBuiltin<Builtins::kCall_ReceiverIsAny>(
+ RegisterOperand(0), // kFunction
+ arg_count - 1, // kActualArgumentsCount
+ args);
}
void BaselineCompiler::VisitCallWithSpread() {
@@ -1198,12 +1239,12 @@ void BaselineCompiler::VisitCallWithSpread() {
uint32_t arg_count = args.register_count() - 1; // Remove receiver.
- CallBuiltin(Builtins::kCallWithSpread_Baseline,
- RegisterOperand(0), // kFunction
- arg_count, // kActualArgumentsCount
- spread_register, // kSpread
- Index(3), // kSlot
- args);
+ CallBuiltin<Builtins::kCallWithSpread_Baseline>(
+ RegisterOperand(0), // kFunction
+ arg_count, // kActualArgumentsCount
+ spread_register, // kSpread
+ Index(3), // kSlot
+ args);
}
void BaselineCompiler::VisitCallRuntime() {
@@ -1226,11 +1267,11 @@ void BaselineCompiler::VisitCallJSRuntime() {
__ LoadContext(kContextRegister);
__ LoadNativeContextSlot(kJavaScriptCallTargetRegister,
iterator().GetNativeContextIndexOperand(0));
- CallBuiltin(Builtins::kCall_ReceiverIsNullOrUndefined,
- kJavaScriptCallTargetRegister, // kFunction
- arg_count, // kActualArgumentsCount
- RootIndex::kUndefinedValue, // kReceiver
- args);
+ CallBuiltin<Builtins::kCall_ReceiverIsNullOrUndefined>(
+ kJavaScriptCallTargetRegister, // kFunction
+ arg_count, // kActualArgumentsCount
+ RootIndex::kUndefinedValue, // kReceiver
+ args);
}
void BaselineCompiler::VisitInvokeIntrinsic() {
@@ -1301,29 +1342,25 @@ void BaselineCompiler::VisitIntrinsicIsSmi(interpreter::RegisterList args) {
void BaselineCompiler::VisitIntrinsicCopyDataProperties(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kCopyDataProperties, args);
+ CallBuiltin<Builtins::kCopyDataProperties>(args);
}
void BaselineCompiler::VisitIntrinsicCreateIterResultObject(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kCreateIterResultObject, args);
+ CallBuiltin<Builtins::kCreateIterResultObject>(args);
}
void BaselineCompiler::VisitIntrinsicHasProperty(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kHasProperty, args);
-}
-
-void BaselineCompiler::VisitIntrinsicToString(interpreter::RegisterList args) {
- CallBuiltin(Builtins::kToString, args);
+ CallBuiltin<Builtins::kHasProperty>(args);
}
void BaselineCompiler::VisitIntrinsicToLength(interpreter::RegisterList args) {
- CallBuiltin(Builtins::kToLength, args);
+ CallBuiltin<Builtins::kToLength>(args);
}
void BaselineCompiler::VisitIntrinsicToObject(interpreter::RegisterList args) {
- CallBuiltin(Builtins::kToObject, args);
+ CallBuiltin<Builtins::kToObject>(args);
}
void BaselineCompiler::VisitIntrinsicCall(interpreter::RegisterList args) {
@@ -1335,20 +1372,20 @@ void BaselineCompiler::VisitIntrinsicCall(interpreter::RegisterList args) {
args = args.PopLeft();
uint32_t arg_count = args.register_count();
- CallBuiltin(Builtins::kCall_ReceiverIsAny,
- kJavaScriptCallTargetRegister, // kFunction
- arg_count - 1, // kActualArgumentsCount
- args);
+ CallBuiltin<Builtins::kCall_ReceiverIsAny>(
+ kJavaScriptCallTargetRegister, // kFunction
+ arg_count - 1, // kActualArgumentsCount
+ args);
}
void BaselineCompiler::VisitIntrinsicCreateAsyncFromSyncIterator(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kCreateAsyncFromSyncIteratorBaseline, args[0]);
+ CallBuiltin<Builtins::kCreateAsyncFromSyncIteratorBaseline>(args[0]);
}
void BaselineCompiler::VisitIntrinsicCreateJSGeneratorObject(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kCreateGeneratorObject, args);
+ CallBuiltin<Builtins::kCreateGeneratorObject>(args);
}
void BaselineCompiler::VisitIntrinsicGeneratorGetResumeMode(
@@ -1370,69 +1407,69 @@ void BaselineCompiler::VisitIntrinsicGeneratorClose(
void BaselineCompiler::VisitIntrinsicGetImportMetaObject(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kGetImportMetaObjectBaseline);
+ CallBuiltin<Builtins::kGetImportMetaObjectBaseline>();
}
void BaselineCompiler::VisitIntrinsicAsyncFunctionAwaitCaught(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncFunctionAwaitCaught, args);
+ CallBuiltin<Builtins::kAsyncFunctionAwaitCaught>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncFunctionAwaitUncaught(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncFunctionAwaitUncaught, args);
+ CallBuiltin<Builtins::kAsyncFunctionAwaitUncaught>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncFunctionEnter(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncFunctionEnter, args);
+ CallBuiltin<Builtins::kAsyncFunctionEnter>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncFunctionReject(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncFunctionReject, args);
+ CallBuiltin<Builtins::kAsyncFunctionReject>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncFunctionResolve(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncFunctionResolve, args);
+ CallBuiltin<Builtins::kAsyncFunctionResolve>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncGeneratorAwaitCaught(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncGeneratorAwaitCaught, args);
+ CallBuiltin<Builtins::kAsyncGeneratorAwaitCaught>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncGeneratorAwaitUncaught(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncGeneratorAwaitUncaught, args);
+ CallBuiltin<Builtins::kAsyncGeneratorAwaitUncaught>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncGeneratorReject(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncGeneratorReject, args);
+ CallBuiltin<Builtins::kAsyncGeneratorReject>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncGeneratorResolve(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncGeneratorResolve, args);
+ CallBuiltin<Builtins::kAsyncGeneratorResolve>(args);
}
void BaselineCompiler::VisitIntrinsicAsyncGeneratorYield(
interpreter::RegisterList args) {
- CallBuiltin(Builtins::kAsyncGeneratorYield, args);
+ CallBuiltin<Builtins::kAsyncGeneratorYield>(args);
}
void BaselineCompiler::VisitConstruct() {
interpreter::RegisterList args = iterator().GetRegisterListOperand(1);
uint32_t arg_count = args.register_count();
- CallBuiltin(Builtins::kConstruct_Baseline,
- RegisterOperand(0), // kFunction
- kInterpreterAccumulatorRegister, // kNewTarget
- arg_count, // kActualArgumentsCount
- Index(3), // kSlot
- RootIndex::kUndefinedValue, // kReceiver
- args);
+ CallBuiltin<Builtins::kConstruct_Baseline>(
+ RegisterOperand(0), // kFunction
+ kInterpreterAccumulatorRegister, // kNewTarget
+ arg_count, // kActualArgumentsCount
+ Index(3), // kSlot
+ RootIndex::kUndefinedValue, // kReceiver
+ args);
}
void BaselineCompiler::VisitConstructWithSpread() {
@@ -1444,51 +1481,50 @@ void BaselineCompiler::VisitConstructWithSpread() {
uint32_t arg_count = args.register_count();
+ using Descriptor =
+ CallInterfaceDescriptorFor<Builtins::kConstructWithSpread_Baseline>::type;
Register new_target =
- Builtins::CallInterfaceDescriptorFor(
- Builtins::kConstructWithSpread_Baseline)
- .GetRegisterParameter(
- ConstructWithSpread_BaselineDescriptor::kNewTarget);
+ Descriptor::GetRegisterParameter(Descriptor::kNewTarget);
__ Move(new_target, kInterpreterAccumulatorRegister);
- CallBuiltin(Builtins::kConstructWithSpread_Baseline,
- RegisterOperand(0), // kFunction
- new_target, // kNewTarget
- arg_count, // kActualArgumentsCount
- Index(3), // kSlot
- spread_register, // kSpread
- RootIndex::kUndefinedValue, // kReceiver
- args);
-}
-
-void BaselineCompiler::BuildCompare(Builtins::Name builtin_name) {
- CallBuiltin(builtin_name, RegisterOperand(0), // lhs
- kInterpreterAccumulatorRegister, // rhs
- Index(1)); // slot
+ CallBuiltin<Builtins::kConstructWithSpread_Baseline>(
+ RegisterOperand(0), // kFunction
+ new_target, // kNewTarget
+ arg_count, // kActualArgumentsCount
+ Index(3), // kSlot
+ spread_register, // kSpread
+ RootIndex::kUndefinedValue, // kReceiver
+ args);
}
void BaselineCompiler::VisitTestEqual() {
- BuildCompare(Builtins::kEqual_Baseline);
+ CallBuiltin<Builtins::kEqual_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitTestEqualStrict() {
- BuildCompare(Builtins::kStrictEqual_Baseline);
+ CallBuiltin<Builtins::kStrictEqual_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitTestLessThan() {
- BuildCompare(Builtins::kLessThan_Baseline);
+ CallBuiltin<Builtins::kLessThan_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitTestGreaterThan() {
- BuildCompare(Builtins::kGreaterThan_Baseline);
+ CallBuiltin<Builtins::kGreaterThan_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitTestLessThanOrEqual() {
- BuildCompare(Builtins::kLessThanOrEqual_Baseline);
+ CallBuiltin<Builtins::kLessThanOrEqual_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitTestGreaterThanOrEqual() {
- BuildCompare(Builtins::kGreaterThanOrEqual_Baseline);
+ CallBuiltin<Builtins::kGreaterThanOrEqual_Baseline>(
+ RegisterOperand(0), kInterpreterAccumulatorRegister, Index(1));
}
void BaselineCompiler::VisitTestReferenceEqual() {
@@ -1502,21 +1538,21 @@ void BaselineCompiler::VisitTestReferenceEqual() {
}
void BaselineCompiler::VisitTestInstanceOf() {
- Register callable =
- Builtins::CallInterfaceDescriptorFor(Builtins::kInstanceOf_Baseline)
- .GetRegisterParameter(Compare_BaselineDescriptor::kRight);
+ using Descriptor =
+ CallInterfaceDescriptorFor<Builtins::kInstanceOf_Baseline>::type;
+ Register callable = Descriptor::GetRegisterParameter(Descriptor::kRight);
__ Move(callable, kInterpreterAccumulatorRegister);
- CallBuiltin(Builtins::kInstanceOf_Baseline,
- RegisterOperand(0), // object
- callable, // callable
- Index(1)); // slot
+
+ CallBuiltin<Builtins::kInstanceOf_Baseline>(RegisterOperand(0), // object
+ callable, // callable
+ Index(1)); // slot
}
void BaselineCompiler::VisitTestIn() {
- CallBuiltin(Builtins::kKeyedHasICBaseline,
- kInterpreterAccumulatorRegister, // object
- RegisterOperand(0), // name
- IndexAsTagged(1)); // slot
+ CallBuiltin<Builtins::kKeyedHasICBaseline>(
+ kInterpreterAccumulatorRegister, // object
+ RegisterOperand(0), // name
+ IndexAsTagged(1)); // slot
}
void BaselineCompiler::VisitTestUndetectable() {
@@ -1727,36 +1763,36 @@ void BaselineCompiler::VisitTestTypeOf() {
void BaselineCompiler::VisitToName() {
SaveAccumulatorScope save_accumulator(&basm_);
- CallBuiltin(Builtins::kToName, kInterpreterAccumulatorRegister);
+ CallBuiltin<Builtins::kToName>(kInterpreterAccumulatorRegister);
StoreRegister(0, kInterpreterAccumulatorRegister);
}
void BaselineCompiler::VisitToNumber() {
- CallBuiltin(Builtins::kToNumber_Baseline, kInterpreterAccumulatorRegister,
- Index(0));
+ CallBuiltin<Builtins::kToNumber_Baseline>(kInterpreterAccumulatorRegister,
+ Index(0));
}
void BaselineCompiler::VisitToNumeric() {
- CallBuiltin(Builtins::kToNumeric_Baseline, kInterpreterAccumulatorRegister,
- Index(0));
+ CallBuiltin<Builtins::kToNumeric_Baseline>(kInterpreterAccumulatorRegister,
+ Index(0));
}
void BaselineCompiler::VisitToObject() {
SaveAccumulatorScope save_accumulator(&basm_);
- CallBuiltin(Builtins::kToObject, kInterpreterAccumulatorRegister);
+ CallBuiltin<Builtins::kToObject>(kInterpreterAccumulatorRegister);
StoreRegister(0, kInterpreterAccumulatorRegister);
}
void BaselineCompiler::VisitToString() {
- CallBuiltin(Builtins::kToString, kInterpreterAccumulatorRegister);
+ CallBuiltin<Builtins::kToString>(kInterpreterAccumulatorRegister);
}
void BaselineCompiler::VisitCreateRegExpLiteral() {
- CallBuiltin(Builtins::kCreateRegExpLiteral,
- FeedbackVector(), // feedback vector
- IndexAsTagged(1), // slot
- Constant<HeapObject>(0), // pattern
- FlagAsSmi(2)); // flags
+ CallBuiltin<Builtins::kCreateRegExpLiteral>(
+ FeedbackVector(), // feedback vector
+ IndexAsTagged(1), // slot
+ Constant<HeapObject>(0), // pattern
+ FlagAsSmi(2)); // flags
}
void BaselineCompiler::VisitCreateArrayLiteral() {
@@ -1765,11 +1801,11 @@ void BaselineCompiler::VisitCreateArrayLiteral() {
interpreter::CreateArrayLiteralFlags::FlagsBits::decode(flags));
if (flags &
interpreter::CreateArrayLiteralFlags::FastCloneSupportedBit::kMask) {
- CallBuiltin(Builtins::kCreateShallowArrayLiteral,
- FeedbackVector(), // feedback vector
- IndexAsTagged(1), // slot
- Constant<HeapObject>(0), // constant elements
- Smi::FromInt(flags_raw)); // flags
+ CallBuiltin<Builtins::kCreateShallowArrayLiteral>(
+ FeedbackVector(), // feedback vector
+ IndexAsTagged(1), // slot
+ Constant<HeapObject>(0), // constant elements
+ Smi::FromInt(flags_raw)); // flags
} else {
CallRuntime(Runtime::kCreateArrayLiteral,
FeedbackVector(), // feedback vector
@@ -1780,13 +1816,13 @@ void BaselineCompiler::VisitCreateArrayLiteral() {
}
void BaselineCompiler::VisitCreateArrayFromIterable() {
- CallBuiltin(Builtins::kIterableToListWithSymbolLookup,
- kInterpreterAccumulatorRegister); // iterable
+ CallBuiltin<Builtins::kIterableToListWithSymbolLookup>(
+ kInterpreterAccumulatorRegister); // iterable
}
void BaselineCompiler::VisitCreateEmptyArrayLiteral() {
- CallBuiltin(Builtins::kCreateEmptyArrayLiteral, FeedbackVector(),
- IndexAsTagged(0));
+ CallBuiltin<Builtins::kCreateEmptyArrayLiteral>(FeedbackVector(),
+ IndexAsTagged(0));
}
void BaselineCompiler::VisitCreateObjectLiteral() {
@@ -1795,11 +1831,11 @@ void BaselineCompiler::VisitCreateObjectLiteral() {
interpreter::CreateObjectLiteralFlags::FlagsBits::decode(flags));
if (flags &
interpreter::CreateObjectLiteralFlags::FastCloneSupportedBit::kMask) {
- CallBuiltin(Builtins::kCreateShallowObjectLiteral,
- FeedbackVector(), // feedback vector
- IndexAsTagged(1), // slot
- Constant<ObjectBoilerplateDescription>(0), // boilerplate
- Smi::FromInt(flags_raw)); // flags
+ CallBuiltin<Builtins::kCreateShallowObjectLiteral>(
+ FeedbackVector(), // feedback vector
+ IndexAsTagged(1), // slot
+ Constant<ObjectBoilerplateDescription>(0), // boilerplate
+ Smi::FromInt(flags_raw)); // flags
} else {
CallRuntime(Runtime::kCreateObjectLiteral,
FeedbackVector(), // feedback vector
@@ -1810,39 +1846,39 @@ void BaselineCompiler::VisitCreateObjectLiteral() {
}
void BaselineCompiler::VisitCreateEmptyObjectLiteral() {
- CallBuiltin(Builtins::kCreateEmptyLiteralObject);
+ CallBuiltin<Builtins::kCreateEmptyLiteralObject>();
}
void BaselineCompiler::VisitCloneObject() {
uint32_t flags = Flag(1);
int32_t raw_flags =
interpreter::CreateObjectLiteralFlags::FlagsBits::decode(flags);
- CallBuiltin(Builtins::kCloneObjectICBaseline,
- RegisterOperand(0), // source
- Smi::FromInt(raw_flags), // flags
- IndexAsTagged(2)); // slot
+ CallBuiltin<Builtins::kCloneObjectICBaseline>(
+ RegisterOperand(0), // source
+ Smi::FromInt(raw_flags), // flags
+ IndexAsTagged(2)); // slot
}
void BaselineCompiler::VisitGetTemplateObject() {
BaselineAssembler::ScratchRegisterScope scratch_scope(&basm_);
- CallBuiltin(Builtins::kGetTemplateObject,
- shared_function_info_, // shared function info
- Constant<HeapObject>(0), // description
- Index(1), // slot
- FeedbackVector()); // feedback_vector
+ CallBuiltin<Builtins::kGetTemplateObject>(
+ shared_function_info_, // shared function info
+ Constant<HeapObject>(0), // description
+ Index(1), // slot
+ FeedbackVector()); // feedback_vector
}
void BaselineCompiler::VisitCreateClosure() {
Register feedback_cell =
- Builtins::CallInterfaceDescriptorFor(Builtins::kFastNewClosure)
- .GetRegisterParameter(FastNewClosureDescriptor::kFeedbackCell);
+ FastNewClosureBaselineDescriptor::GetRegisterParameter(
+ FastNewClosureBaselineDescriptor::kFeedbackCell);
LoadClosureFeedbackArray(feedback_cell);
__ LoadFixedArrayElement(feedback_cell, feedback_cell, Index(1));
uint32_t flags = Flag(2);
if (interpreter::CreateClosureFlags::FastNewClosureBit::decode(flags)) {
- CallBuiltin(Builtins::kFastNewClosure, Constant<SharedFunctionInfo>(0),
- feedback_cell);
+ CallBuiltin<Builtins::kFastNewClosureBaseline>(
+ Constant<SharedFunctionInfo>(0), feedback_cell);
} else {
Runtime::FunctionId function_id =
interpreter::CreateClosureFlags::PretenuredBit::decode(flags)
@@ -1868,7 +1904,7 @@ void BaselineCompiler::VisitCreateFunctionContext() {
if (slot_count < static_cast<uint32_t>(
ConstructorBuiltins::MaximumFunctionContextSlots())) {
DCHECK_EQ(info->scope_type(), ScopeType::FUNCTION_SCOPE);
- CallBuiltin(Builtins::kFastNewFunctionContextFunction, info, slot_count);
+ CallBuiltin<Builtins::kFastNewFunctionContextFunction>(info, slot_count);
} else {
CallRuntime(Runtime::kNewFunctionContext, Constant<ScopeInfo>(0));
}
@@ -1880,7 +1916,7 @@ void BaselineCompiler::VisitCreateEvalContext() {
if (slot_count < static_cast<uint32_t>(
ConstructorBuiltins::MaximumFunctionContextSlots())) {
DCHECK_EQ(info->scope_type(), ScopeType::EVAL_SCOPE);
- CallBuiltin(Builtins::kFastNewFunctionContextEval, info, slot_count);
+ CallBuiltin<Builtins::kFastNewFunctionContextEval>(info, slot_count);
} else {
CallRuntime(Runtime::kNewFunctionContext, Constant<ScopeInfo>(0));
}
@@ -1896,16 +1932,16 @@ void BaselineCompiler::VisitCreateMappedArguments() {
if (shared_function_info_->has_duplicate_parameters()) {
CallRuntime(Runtime::kNewSloppyArguments, __ FunctionOperand());
} else {
- CallBuiltin(Builtins::kFastNewSloppyArguments, __ FunctionOperand());
+ CallBuiltin<Builtins::kFastNewSloppyArguments>(__ FunctionOperand());
}
}
void BaselineCompiler::VisitCreateUnmappedArguments() {
- CallBuiltin(Builtins::kFastNewStrictArguments, __ FunctionOperand());
+ CallBuiltin<Builtins::kFastNewStrictArguments>(__ FunctionOperand());
}
void BaselineCompiler::VisitCreateRestParameter() {
- CallBuiltin(Builtins::kFastNewRestArguments, __ FunctionOperand());
+ CallBuiltin<Builtins::kFastNewRestArguments>(__ FunctionOperand());
}
void BaselineCompiler::VisitJumpLoop() {
@@ -1919,7 +1955,7 @@ void BaselineCompiler::VisitJumpLoop() {
int loop_depth = iterator().GetImmediateOperand(1);
__ CompareByte(osr_level, loop_depth);
__ JumpIf(Condition::kUnsignedLessThanEqual, &osr_not_armed);
- CallBuiltin(Builtins::kBaselineOnStackReplacement);
+ CallBuiltin<Builtins::kBaselineOnStackReplacement>();
__ RecordComment("]");
__ Bind(&osr_not_armed);
@@ -1972,16 +2008,14 @@ void BaselineCompiler::VisitJumpIfToBooleanFalseConstant() {
void BaselineCompiler::VisitJumpIfToBooleanTrue() {
Label dont_jump;
- JumpIfToBoolean(false, kInterpreterAccumulatorRegister, &dont_jump,
- Label::kNear);
+ JumpIfToBoolean(false, &dont_jump, Label::kNear);
UpdateInterruptBudgetAndDoInterpreterJump();
__ Bind(&dont_jump);
}
void BaselineCompiler::VisitJumpIfToBooleanFalse() {
Label dont_jump;
- JumpIfToBoolean(true, kInterpreterAccumulatorRegister, &dont_jump,
- Label::kNear);
+ JumpIfToBoolean(true, &dont_jump, Label::kNear);
UpdateInterruptBudgetAndDoInterpreterJump();
__ Bind(&dont_jump);
}
@@ -2057,13 +2091,13 @@ void BaselineCompiler::VisitSwitchOnSmiNoFeedback() {
}
void BaselineCompiler::VisitForInEnumerate() {
- CallBuiltin(Builtins::kForInEnumerate, RegisterOperand(0));
+ CallBuiltin<Builtins::kForInEnumerate>(RegisterOperand(0));
}
void BaselineCompiler::VisitForInPrepare() {
StoreRegister(0, kInterpreterAccumulatorRegister);
- CallBuiltin(Builtins::kForInPrepare, kInterpreterAccumulatorRegister,
- IndexAsTagged(1), FeedbackVector());
+ CallBuiltin<Builtins::kForInPrepare>(kInterpreterAccumulatorRegister,
+ IndexAsTagged(1), FeedbackVector());
interpreter::Register first = iterator().GetRegisterOperand(0);
interpreter::Register second(first.index() + 1);
interpreter::Register third(first.index() + 2);
@@ -2085,13 +2119,12 @@ void BaselineCompiler::VisitForInContinue() {
void BaselineCompiler::VisitForInNext() {
interpreter::Register cache_type, cache_array;
std::tie(cache_type, cache_array) = iterator().GetRegisterPairOperand(2);
- CallBuiltin(Builtins::kForInNext,
- Index(3), // vector slot
- RegisterOperand(0), // object
- cache_array, // cache array
- cache_type, // cache type
- RegisterOperand(1), // index
- FeedbackVector()); // feedback vector
+ CallBuiltin<Builtins::kForInNext>(Index(3), // vector slot
+ RegisterOperand(0), // object
+ cache_array, // cache array
+ cache_type, // cache type
+ RegisterOperand(1), // index
+ FeedbackVector()); // feedback vector
}
void BaselineCompiler::VisitForInStep() {
@@ -2131,8 +2164,8 @@ void BaselineCompiler::VisitReturn() {
int parameter_count_without_receiver =
parameter_count - 1; // Exclude the receiver to simplify the
// computation. We'll account for it at the end.
- TailCallBuiltin(Builtins::kBaselineLeaveFrame,
- parameter_count_without_receiver, -profiling_weight);
+ TailCallBuiltin<Builtins::kBaselineLeaveFrame>(
+ parameter_count_without_receiver, -profiling_weight);
__ RecordComment("]");
}
@@ -2235,10 +2268,11 @@ void BaselineCompiler::VisitSuspendGenerator() {
int bytecode_offset =
BytecodeArray::kHeaderSize + iterator().current_offset();
- CallBuiltin(Builtins::kSuspendGeneratorBaseline, generator_object,
- static_cast<int>(Uint(3)), // suspend_id
- bytecode_offset,
- static_cast<int>(RegisterCount(2))); // register_count
+ CallBuiltin<Builtins::kSuspendGeneratorBaseline>(
+ generator_object,
+ static_cast<int>(Uint(3)), // suspend_id
+ bytecode_offset,
+ static_cast<int>(RegisterCount(2))); // register_count
}
VisitReturn();
}
@@ -2248,26 +2282,27 @@ void BaselineCompiler::VisitResumeGenerator() {
BaselineAssembler::ScratchRegisterScope scratch_scope(&basm_);
Register generator_object = scratch_scope.AcquireScratch();
LoadRegister(generator_object, 0);
- CallBuiltin(Builtins::kResumeGeneratorBaseline, generator_object,
- static_cast<int>(RegisterCount(2))); // register_count
+ CallBuiltin<Builtins::kResumeGeneratorBaseline>(
+ generator_object,
+ static_cast<int>(RegisterCount(2))); // register_count
}
void BaselineCompiler::VisitGetIterator() {
- CallBuiltin(Builtins::kGetIteratorBaseline,
- RegisterOperand(0), // receiver
- IndexAsTagged(1), // load_slot
- IndexAsTagged(2)); // call_slot
+ CallBuiltin<Builtins::kGetIteratorBaseline>(RegisterOperand(0), // receiver
+ IndexAsTagged(1), // load_slot
+ IndexAsTagged(2)); // call_slot
}
void BaselineCompiler::VisitDebugger() {
SaveAccumulatorScope accumulator_scope(&basm_);
- CallBuiltin(Builtins::kHandleDebuggerStatement);
+ CallRuntime(Runtime::kHandleDebuggerStatement);
}
void BaselineCompiler::VisitIncBlockCounter() {
SaveAccumulatorScope accumulator_scope(&basm_);
- CallBuiltin(Builtins::kIncBlockCounter, __ FunctionOperand(),
- IndexAsSmi(0)); // coverage array slot
+ CallBuiltin<Builtins::kIncBlockCounter>(
+ __ FunctionOperand(),
+ IndexAsSmi(0)); // coverage array slot
}
void BaselineCompiler::VisitAbort() {
diff --git a/deps/v8/src/baseline/baseline-compiler.h b/deps/v8/src/baseline/baseline-compiler.h
index dbb2f64f6c..c86d9417e8 100644
--- a/deps/v8/src/baseline/baseline-compiler.h
+++ b/deps/v8/src/baseline/baseline-compiler.h
@@ -8,7 +8,7 @@
// TODO(v8:11421): Remove #if once baseline compiler is ported to other
// architectures.
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
- V8_TARGET_ARCH_ARM
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
#include "src/base/logging.h"
#include "src/base/threaded-list.h"
@@ -39,8 +39,10 @@ class BytecodeOffsetTableBuilder {
previous_pc_ = pc_offset;
}
- template <typename LocalIsolate>
- Handle<ByteArray> ToBytecodeOffsetTable(LocalIsolate* isolate);
+ template <typename IsolateT>
+ Handle<ByteArray> ToBytecodeOffsetTable(IsolateT* isolate);
+
+ void Reserve(size_t size) { bytes_.reserve(size); }
private:
size_t previous_pc_ = 0;
@@ -121,31 +123,21 @@ class BaselineCompiler {
void SelectBooleanConstant(
Register output, std::function<void(Label*, Label::Distance)> jump_func);
- // Returns ToBoolean result into kInterpreterAccumulatorRegister.
- void JumpIfToBoolean(bool do_jump_if_true, Register reg, Label* label,
+ // Jumps based on calling ToBoolean on kInterpreterAccumulatorRegister.
+ void JumpIfToBoolean(bool do_jump_if_true, Label* label,
Label::Distance distance = Label::kFar);
// Call helpers.
- template <typename... Args>
- void CallBuiltin(Builtins::Name builtin, Args... args);
+ template <Builtins::Name kBuiltin, typename... Args>
+ void CallBuiltin(Args... args);
template <typename... Args>
void CallRuntime(Runtime::FunctionId function, Args... args);
- template <typename... Args>
- void TailCallBuiltin(Builtins::Name builtin, Args... args);
+ template <Builtins::Name kBuiltin, typename... Args>
+ void TailCallBuiltin(Args... args);
- void BuildBinop(
- Builtins::Name builtin_name, bool fast_path = false,
- bool check_overflow = false,
- std::function<void(Register, Register)> instruction = [](Register,
- Register) {});
- void BuildUnop(Builtins::Name builtin_name);
- void BuildCompare(Builtins::Name builtin_name);
- void BuildBinopWithConstant(Builtins::Name builtin_name);
-
- template <typename... Args>
- void BuildCall(ConvertReceiverMode mode, uint32_t slot, uint32_t arg_count,
- Args... args);
+ template <ConvertReceiverMode kMode, typename... Args>
+ void BuildCall(uint32_t slot, uint32_t arg_count, Args... args);
#ifdef V8_TRACE_UNOPTIMIZED
void TraceBytecode(Runtime::FunctionId function_id);
diff --git a/deps/v8/src/baseline/baseline-osr-inl.h b/deps/v8/src/baseline/baseline-osr-inl.h
new file mode 100644
index 0000000000..d37007f9cf
--- /dev/null
+++ b/deps/v8/src/baseline/baseline-osr-inl.h
@@ -0,0 +1,38 @@
+// Copyright 2021 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_BASELINE_BASELINE_OSR_INL_H_
+#define V8_BASELINE_BASELINE_OSR_INL_H_
+
+#include "src/execution/frames.h"
+#include "src/execution/isolate-inl.h"
+
+namespace v8 {
+namespace internal {
+
+inline void OSRInterpreterFrameToBaseline(Isolate* isolate,
+ Handle<JSFunction> function,
+ UnoptimizedFrame* frame) {
+ IsCompiledScope is_compiled_scope(
+ function->shared().is_compiled_scope(isolate));
+ if (Compiler::CompileBaseline(isolate, function, Compiler::CLEAR_EXCEPTION,
+ &is_compiled_scope)) {
+ if (V8_LIKELY(FLAG_use_osr)) {
+ DCHECK_NOT_NULL(frame);
+ if (FLAG_trace_osr) {
+ CodeTracer::Scope scope(isolate->GetCodeTracer());
+ PrintF(scope.file(),
+ "[OSR - Entry at OSR bytecode offset %d into baseline code]\n",
+ frame->GetBytecodeOffset());
+ }
+ frame->GetBytecodeArray().set_osr_loop_nesting_level(
+ AbstractCode::kMaxLoopNestingMarker);
+ }
+ }
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_BASELINE_BASELINE_OSR_INL_H_
diff --git a/deps/v8/src/baseline/baseline.cc b/deps/v8/src/baseline/baseline.cc
index b5355660f9..c7cc130c5e 100644
--- a/deps/v8/src/baseline/baseline.cc
+++ b/deps/v8/src/baseline/baseline.cc
@@ -5,14 +5,16 @@
#include "src/baseline/baseline.h"
#include "src/handles/maybe-handles.h"
+#include "src/objects/shared-function-info.h"
// TODO(v8:11421): Remove #if once baseline compiler is ported to other
// architectures.
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
- V8_TARGET_ARCH_ARM
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
#include "src/baseline/baseline-assembler-inl.h"
#include "src/baseline/baseline-compiler.h"
+#include "src/debug/debug.h"
#include "src/heap/factory-inl.h"
#include "src/logging/counters.h"
#include "src/objects/script-inl.h"
@@ -21,10 +23,36 @@
namespace v8 {
namespace internal {
+bool CanCompileWithBaseline(Isolate* isolate, SharedFunctionInfo shared) {
+ DisallowGarbageCollection no_gc;
+
+ if (!FLAG_sparkplug) return false;
+
+ // Check that short builtin calls are enabled if needed.
+ if (FLAG_sparkplug_needs_short_builtins &&
+ !isolate->is_short_builtin_calls_enabled()) {
+ return false;
+ }
+
+ // Check if we actually have bytecode.
+ if (!shared.HasBytecodeArray()) return false;
+
+ // Do not optimize when debugger needs to hook into every call.
+ if (isolate->debug()->needs_check_on_function_call()) return false;
+
+ // Functions with breakpoints have to stay interpreted.
+ if (shared.HasBreakInfo()) return false;
+
+ // Do not baseline compile if sparkplug is disabled or function doesn't pass
+ // sparkplug_filter.
+ if (!shared.PassesFilter(FLAG_sparkplug_filter)) return false;
+
+ return true;
+}
+
MaybeHandle<Code> GenerateBaselineCode(Isolate* isolate,
Handle<SharedFunctionInfo> shared) {
- RuntimeCallTimerScope runtimeTimer(isolate,
- RuntimeCallCounterId::kCompileBaseline);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCompileBaseline);
baseline::BaselineCompiler compiler(
isolate, shared, handle(shared->GetBytecodeArray(isolate), isolate));
@@ -48,6 +76,10 @@ void EmitReturnBaseline(MacroAssembler* masm) {
namespace v8 {
namespace internal {
+bool CanCompileWithBaseline(Isolate* isolate, SharedFunctionInfo shared) {
+ return false;
+}
+
MaybeHandle<Code> GenerateBaselineCode(Isolate* isolate,
Handle<SharedFunctionInfo> shared) {
UNREACHABLE();
diff --git a/deps/v8/src/baseline/baseline.h b/deps/v8/src/baseline/baseline.h
index 2dba2d9674..10a6e25e4f 100644
--- a/deps/v8/src/baseline/baseline.h
+++ b/deps/v8/src/baseline/baseline.h
@@ -14,6 +14,8 @@ class Code;
class SharedFunctionInfo;
class MacroAssembler;
+bool CanCompileWithBaseline(Isolate* isolate, SharedFunctionInfo shared);
+
MaybeHandle<Code> GenerateBaselineCode(Isolate* isolate,
Handle<SharedFunctionInfo> shared);
diff --git a/deps/v8/src/baseline/ia32/baseline-assembler-ia32-inl.h b/deps/v8/src/baseline/ia32/baseline-assembler-ia32-inl.h
index 2cd34aef71..8babb4a5b7 100644
--- a/deps/v8/src/baseline/ia32/baseline-assembler-ia32-inl.h
+++ b/deps/v8/src/baseline/ia32/baseline-assembler-ia32-inl.h
@@ -122,13 +122,13 @@ void BaselineAssembler::JumpIfNotSmi(Register value, Label* target,
void BaselineAssembler::CallBuiltin(Builtins::Name builtin) {
__ RecordCommentForOffHeapTrampoline(builtin);
__ Call(__ EntryFromBuiltinIndexAsOperand(builtin));
- if (FLAG_code_comments) __ RecordComment("]");
+ __ RecordComment("]");
}
void BaselineAssembler::TailCallBuiltin(Builtins::Name builtin) {
__ RecordCommentForOffHeapTrampoline(builtin);
__ jmp(__ EntryFromBuiltinIndexAsOperand(builtin));
- if (FLAG_code_comments) __ RecordComment("]");
+ __ RecordComment("]");
}
void BaselineAssembler::Test(Register value, int mask) {
@@ -147,7 +147,7 @@ void BaselineAssembler::CmpObjectType(Register object,
}
void BaselineAssembler::CmpInstanceType(Register map,
InstanceType instance_type) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
__ movd(xmm0, eax);
__ AssertNotSmi(map);
__ CmpObjectType(map, MAP_TYPE, eax);
@@ -320,7 +320,7 @@ void BaselineAssembler::StoreTaggedFieldWithWriteBarrier(Register target,
Register scratch = scratch_scope.AcquireScratch();
DCHECK(!AreAliased(scratch, target, value));
__ mov(FieldOperand(target, offset), value);
- __ RecordWriteField(target, offset, value, scratch, kDontSaveFPRegs);
+ __ RecordWriteField(target, offset, value, scratch, SaveFPRegsMode::kIgnore);
}
void BaselineAssembler::StoreTaggedFieldNoWriteBarrier(Register target,
int offset,
diff --git a/deps/v8/src/baseline/ia32/baseline-compiler-ia32-inl.h b/deps/v8/src/baseline/ia32/baseline-compiler-ia32-inl.h
index 733c05fe18..4d09f53665 100644
--- a/deps/v8/src/baseline/ia32/baseline-compiler-ia32-inl.h
+++ b/deps/v8/src/baseline/ia32/baseline-compiler-ia32-inl.h
@@ -18,9 +18,9 @@ namespace baseline {
void BaselineCompiler::Prologue() {
DCHECK_EQ(kJSFunctionRegister, kJavaScriptCallTargetRegister);
int max_frame_size = bytecode_->frame_size() + max_call_args_;
- CallBuiltin(Builtins::kBaselineOutOfLinePrologue, kContextRegister,
- kJSFunctionRegister, kJavaScriptCallArgCountRegister,
- max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
+ CallBuiltin<Builtins::kBaselineOutOfLinePrologue>(
+ kContextRegister, kJSFunctionRegister, kJavaScriptCallArgCountRegister,
+ max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
PrologueFillFrame();
}
diff --git a/deps/v8/src/baseline/riscv64/baseline-assembler-riscv64-inl.h b/deps/v8/src/baseline/riscv64/baseline-assembler-riscv64-inl.h
new file mode 100644
index 0000000000..e0667d3472
--- /dev/null
+++ b/deps/v8/src/baseline/riscv64/baseline-assembler-riscv64-inl.h
@@ -0,0 +1,615 @@
+// Copyright 2021 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_BASELINE_RISCV64_BASELINE_ASSEMBLER_RISCV64_INL_H_
+#define V8_BASELINE_RISCV64_BASELINE_ASSEMBLER_RISCV64_INL_H_
+
+#include "src/baseline/baseline-assembler.h"
+#include "src/codegen/assembler-inl.h"
+#include "src/codegen/interface-descriptors.h"
+namespace v8 {
+namespace internal {
+namespace baseline {
+
+constexpr Register kTestReg = t0;
+class BaselineAssembler::ScratchRegisterScope {
+ public:
+ explicit ScratchRegisterScope(BaselineAssembler* assembler)
+ : assembler_(assembler),
+ prev_scope_(assembler->scratch_register_scope_),
+ wrapped_scope_(assembler->masm()) {
+ if (!assembler_->scratch_register_scope_) {
+ // If we haven't opened a scratch scope yet, for the first one add a
+ // couple of extra registers.
+ wrapped_scope_.Include(t2, t4);
+ }
+ assembler_->scratch_register_scope_ = this;
+ }
+ ~ScratchRegisterScope() { assembler_->scratch_register_scope_ = prev_scope_; }
+
+ Register AcquireScratch() { return wrapped_scope_.Acquire(); }
+
+ private:
+ BaselineAssembler* assembler_;
+ ScratchRegisterScope* prev_scope_;
+ UseScratchRegisterScope wrapped_scope_;
+};
+
+enum class Condition : uint32_t {
+ kEqual = eq,
+ kNotEqual = ne,
+
+ kLessThan = lt,
+ kGreaterThan = gt,
+ kLessThanEqual = le,
+ kGreaterThanEqual = ge,
+
+ kUnsignedLessThan = Uless,
+ kUnsignedGreaterThan = Ugreater,
+ kUnsignedLessThanEqual = Uless_equal,
+ kUnsignedGreaterThanEqual = Ugreater_equal,
+
+ kOverflow = overflow,
+ kNoOverflow = no_overflow,
+
+ kZero = eq,
+ kNotZero = ne,
+};
+
+inline internal::Condition AsMasmCondition(Condition cond) {
+ return static_cast<internal::Condition>(cond);
+}
+
+namespace detail {
+
+#ifdef DEBUG
+inline bool Clobbers(Register target, MemOperand op) {
+ return op.is_reg() && op.rm() == target;
+}
+#endif
+
+} // namespace detail
+
+#define __ masm_->
+
+MemOperand BaselineAssembler::RegisterFrameOperand(
+ interpreter::Register interpreter_register) {
+ return MemOperand(fp, interpreter_register.ToOperand() * kSystemPointerSize);
+}
+MemOperand BaselineAssembler::FeedbackVectorOperand() {
+ return MemOperand(fp, BaselineFrameConstants::kFeedbackVectorFromFp);
+}
+
+void BaselineAssembler::Bind(Label* label) { __ bind(label); }
+
+void BaselineAssembler::BindWithoutJumpTarget(Label* label) { __ bind(label); }
+
+void BaselineAssembler::JumpTarget() {
+ // Nop
+}
+
+void BaselineAssembler::Jump(Label* target, Label::Distance distance) {
+ __ jmp(target);
+}
+void BaselineAssembler::JumpIf(Condition cc, Label* target, Label::Distance) {
+ __ Branch(target, AsMasmCondition(cc), kTestReg, Operand((int64_t)0));
+}
+void BaselineAssembler::JumpIfRoot(Register value, RootIndex index,
+ Label* target, Label::Distance) {
+ __ JumpIfRoot(value, index, target);
+}
+void BaselineAssembler::JumpIfNotRoot(Register value, RootIndex index,
+ Label* target, Label::Distance) {
+ __ JumpIfNotRoot(value, index, target);
+}
+void BaselineAssembler::JumpIfSmi(Register value, Label* target,
+ Label::Distance) {
+ __ JumpIfSmi(value, target);
+}
+void BaselineAssembler::JumpIfNotSmi(Register value, Label* target,
+ Label::Distance) {
+ __ JumpIfSmi(value, target);
+}
+
+void BaselineAssembler::CallBuiltin(Builtins::Name builtin) {
+ if (masm()->options().short_builtin_calls) {
+ __ CallBuiltin(builtin);
+ } else {
+ __ RecordCommentForOffHeapTrampoline(builtin);
+ Register temp = t6;
+ __ LoadEntryFromBuiltinIndex(builtin, temp);
+ __ Call(temp);
+ __ RecordComment("]");
+ }
+}
+
+void BaselineAssembler::TailCallBuiltin(Builtins::Name builtin) {
+ if (masm()->options().short_builtin_calls) {
+ // Generate pc-relative jump.
+ __ TailCallBuiltin(builtin);
+ } else {
+ __ RecordCommentForOffHeapTrampoline(builtin);
+ // t6 be used for function call in RISCV64
+ // For example 'jalr t6' or 'jal t6'
+ Register temp = t6;
+ __ LoadEntryFromBuiltinIndex(builtin, temp);
+ __ Jump(temp);
+ __ RecordComment("]");
+ }
+}
+
+void BaselineAssembler::Test(Register value, int mask) {
+ __ And(kTestReg, value, Operand(mask));
+}
+
+void BaselineAssembler::CmpObjectType(Register object,
+ InstanceType instance_type,
+ Register map) {
+ ScratchRegisterScope temps(this);
+ Register type = temps.AcquireScratch();
+ __ GetObjectType(object, map, type);
+ __ Sub64(kTestReg, type, Operand(instance_type));
+}
+void BaselineAssembler::CmpInstanceType(Register value,
+ InstanceType instance_type) {
+ ScratchRegisterScope temps(this);
+ Register type = temps.AcquireScratch();
+ __ Ld(type, FieldMemOperand(value, Map::kInstanceTypeOffset));
+ __ Sub64(kTestReg, type, Operand(instance_type));
+}
+
+void BaselineAssembler::Cmp(Register value, Smi smi) {
+ ScratchRegisterScope temps(this);
+ Register temp = temps.AcquireScratch();
+ __ li(temp, Operand(smi));
+ __ SmiUntag(temp);
+ __ Sub64(kTestReg, value, temp);
+}
+void BaselineAssembler::ComparePointer(Register value, MemOperand operand) {
+ ScratchRegisterScope temps(this);
+ Register temp = temps.AcquireScratch();
+ __ Ld(temp, operand);
+ __ Sub64(kTestReg, value, temp);
+}
+
+void BaselineAssembler::SmiCompare(Register lhs, Register rhs) {
+ __ AssertSmi(lhs);
+ __ AssertSmi(rhs);
+ if (COMPRESS_POINTERS_BOOL) {
+ __ Sub32(kTestReg, lhs, rhs);
+ } else {
+ __ Sub64(kTestReg, lhs, rhs);
+ }
+}
+void BaselineAssembler::CompareTagged(Register value, MemOperand operand) {
+ ScratchRegisterScope temps(this);
+ Register tmp = temps.AcquireScratch();
+ __ Ld(tmp, operand);
+ if (COMPRESS_POINTERS_BOOL) {
+ __ Sub32(kTestReg, value, tmp);
+ } else {
+ __ Sub64(kTestReg, value, tmp);
+ }
+}
+void BaselineAssembler::CompareTagged(MemOperand operand, Register value) {
+ ScratchRegisterScope temps(this);
+ Register tmp = temps.AcquireScratch();
+ __ Ld(tmp, operand);
+ if (COMPRESS_POINTERS_BOOL) {
+ __ Sub32(kTestReg, tmp, value);
+ } else {
+ __ Sub64(kTestReg, tmp, value);
+ }
+}
+
+void BaselineAssembler::CompareByte(Register value, int32_t byte) {
+ __ Sub64(kTestReg, value, Operand(byte));
+}
+
+void BaselineAssembler::Move(interpreter::Register output, Register source) {
+ Move(RegisterFrameOperand(output), source);
+}
+void BaselineAssembler::Move(Register output, TaggedIndex value) {
+ __ li(output, Operand(value.ptr()));
+}
+void BaselineAssembler::Move(MemOperand output, Register source) {
+ __ Sd(source, output);
+}
+void BaselineAssembler::Move(Register output, ExternalReference reference) {
+ __ li(output, Operand(reference));
+}
+void BaselineAssembler::Move(Register output, Handle<HeapObject> value) {
+ __ li(output, Operand(value));
+}
+void BaselineAssembler::Move(Register output, int32_t value) {
+ __ li(output, Operand(value));
+}
+void BaselineAssembler::MoveMaybeSmi(Register output, Register source) {
+ __ Move(output, source);
+}
+void BaselineAssembler::MoveSmi(Register output, Register source) {
+ __ Move(output, source);
+}
+
+namespace detail {
+
+template <typename Arg>
+inline Register ToRegister(BaselineAssembler* basm,
+ BaselineAssembler::ScratchRegisterScope* scope,
+ Arg arg) {
+ Register reg = scope->AcquireScratch();
+ basm->Move(reg, arg);
+ return reg;
+}
+inline Register ToRegister(BaselineAssembler* basm,
+ BaselineAssembler::ScratchRegisterScope* scope,
+ Register reg) {
+ return reg;
+}
+
+template <typename... Args>
+struct CountPushHelper;
+template <>
+struct CountPushHelper<> {
+ static int Count() { return 0; }
+};
+template <typename Arg, typename... Args>
+struct CountPushHelper<Arg, Args...> {
+ static int Count(Arg arg, Args... args) {
+ return 1 + CountPushHelper<Args...>::Count(args...);
+ }
+};
+template <typename... Args>
+struct CountPushHelper<interpreter::RegisterList, Args...> {
+ static int Count(interpreter::RegisterList list, Args... args) {
+ return list.register_count() + CountPushHelper<Args...>::Count(args...);
+ }
+};
+
+template <typename... Args>
+struct PushAllHelper;
+template <typename... Args>
+void PushAll(BaselineAssembler* basm, Args... args) {
+ PushAllHelper<Args...>::Push(basm, args...);
+}
+template <typename... Args>
+void PushAllReverse(BaselineAssembler* basm, Args... args) {
+ PushAllHelper<Args...>::PushReverse(basm, args...);
+}
+
+template <>
+struct PushAllHelper<> {
+ static void Push(BaselineAssembler* basm) {}
+ static void PushReverse(BaselineAssembler* basm) {}
+};
+
+inline void PushSingle(MacroAssembler* masm, RootIndex source) {
+ masm->PushRoot(source);
+}
+inline void PushSingle(MacroAssembler* masm, Register reg) { masm->Push(reg); }
+
+inline void PushSingle(MacroAssembler* masm, Smi value) { masm->Push(value); }
+inline void PushSingle(MacroAssembler* masm, Handle<HeapObject> object) {
+ masm->Push(object);
+}
+inline void PushSingle(MacroAssembler* masm, int32_t immediate) {
+ masm->li(kScratchReg, (int64_t)(immediate));
+ PushSingle(masm, kScratchReg);
+}
+
+inline void PushSingle(MacroAssembler* masm, TaggedIndex value) {
+ masm->li(kScratchReg, static_cast<int64_t>(value.ptr()));
+ PushSingle(masm, kScratchReg);
+}
+inline void PushSingle(MacroAssembler* masm, MemOperand operand) {
+ masm->Ld(kScratchReg, operand);
+ PushSingle(masm, kScratchReg);
+}
+inline void PushSingle(MacroAssembler* masm, interpreter::Register source) {
+ return PushSingle(masm, BaselineAssembler::RegisterFrameOperand(source));
+}
+
+template <typename Arg>
+struct PushAllHelper<Arg> {
+ static void Push(BaselineAssembler* basm, Arg arg) {
+ PushSingle(basm->masm(), arg);
+ }
+ static void PushReverse(BaselineAssembler* basm, Arg arg) {
+ // Push the padding register to round up the amount of values pushed.
+ return Push(basm, arg);
+ }
+};
+template <typename Arg1, typename Arg2, typename... Args>
+struct PushAllHelper<Arg1, Arg2, Args...> {
+ static void Push(BaselineAssembler* basm, Arg1 arg1, Arg2 arg2,
+ Args... args) {
+ {
+ BaselineAssembler::ScratchRegisterScope scope(basm);
+ basm->masm()->Push(ToRegister(basm, &scope, arg1),
+ ToRegister(basm, &scope, arg2));
+ }
+ PushAll(basm, args...);
+ }
+ static void PushReverse(BaselineAssembler* basm, Arg1 arg1, Arg2 arg2,
+ Args... args) {
+ PushAllReverse(basm, args...);
+ {
+ BaselineAssembler::ScratchRegisterScope scope(basm);
+ basm->masm()->Push(ToRegister(basm, &scope, arg2),
+ ToRegister(basm, &scope, arg1));
+ }
+ }
+};
+// Currently RegisterLists are always be the last argument, so we don't
+// specialize for the case where they're not. We do still specialise for the
+// aligned and unaligned cases.
+template <typename Arg>
+struct PushAllHelper<Arg, interpreter::RegisterList> {
+ static void Push(BaselineAssembler* basm, Arg arg,
+ interpreter::RegisterList list) {
+ DCHECK_EQ(list.register_count() % 2, 1);
+ PushAll(basm, arg, list[0], list.PopLeft());
+ }
+ static void PushReverse(BaselineAssembler* basm, Arg arg,
+ interpreter::RegisterList list) {
+ if (list.register_count() == 0) {
+ PushAllReverse(basm, arg);
+ } else {
+ PushAllReverse(basm, arg, list[0], list.PopLeft());
+ }
+ }
+};
+template <>
+struct PushAllHelper<interpreter::RegisterList> {
+ static void Push(BaselineAssembler* basm, interpreter::RegisterList list) {
+ DCHECK_EQ(list.register_count() % 2, 0);
+ for (int reg_index = 0; reg_index < list.register_count(); reg_index += 2) {
+ PushAll(basm, list[reg_index], list[reg_index + 1]);
+ }
+ }
+ static void PushReverse(BaselineAssembler* basm,
+ interpreter::RegisterList list) {
+ int reg_index = list.register_count() - 1;
+ if (reg_index % 2 == 0) {
+ // Push the padding register to round up the amount of values pushed.
+ PushAllReverse(basm, list[reg_index]);
+ reg_index--;
+ }
+ for (; reg_index >= 1; reg_index -= 2) {
+ PushAllReverse(basm, list[reg_index - 1], list[reg_index]);
+ }
+ }
+};
+
+template <typename... T>
+struct PopAllHelper;
+template <>
+struct PopAllHelper<> {
+ static void Pop(BaselineAssembler* basm) {}
+};
+template <>
+struct PopAllHelper<Register> {
+ static void Pop(BaselineAssembler* basm, Register reg) {
+ basm->masm()->Pop(reg);
+ }
+};
+template <typename... T>
+struct PopAllHelper<Register, Register, T...> {
+ static void Pop(BaselineAssembler* basm, Register reg1, Register reg2,
+ T... tail) {
+ basm->masm()->Pop(reg1, reg2);
+ PopAllHelper<T...>::Pop(basm, tail...);
+ }
+};
+
+} // namespace detail
+
+template <typename... T>
+int BaselineAssembler::Push(T... vals) {
+ // We have to count the pushes first, to decide whether to add padding before
+ // the first push.
+ int push_count = detail::CountPushHelper<T...>::Count(vals...);
+ if (push_count % 2 == 0) {
+ detail::PushAll(this, vals...);
+ } else {
+ detail::PushAll(this, vals...);
+ }
+ return push_count;
+}
+
+template <typename... T>
+void BaselineAssembler::PushReverse(T... vals) {
+ detail::PushAllReverse(this, vals...);
+}
+
+template <typename... T>
+void BaselineAssembler::Pop(T... registers) {
+ detail::PopAllHelper<T...>::Pop(this, registers...);
+}
+
+void BaselineAssembler::LoadTaggedPointerField(Register output, Register source,
+ int offset) {
+ // FIXME(riscv64): riscv64 don't implement pointer compressed
+ // __ LoadTaggedPointerField(output, FieldMemOperand(source, offset));
+ __ Ld(output, FieldMemOperand(source, offset));
+}
+void BaselineAssembler::LoadTaggedSignedField(Register output, Register source,
+ int offset) {
+ // FIXME(riscv64): riscv64 don't implement pointer compressed
+ __ Ld(output, FieldMemOperand(source, offset));
+}
+void BaselineAssembler::LoadTaggedAnyField(Register output, Register source,
+ int offset) {
+ // FIXME(riscv64): riscv64 don't implement pointer compressed
+ __ Ld(output, FieldMemOperand(source, offset));
+}
+void BaselineAssembler::LoadByteField(Register output, Register source,
+ int offset) {
+ __ Ld(output, FieldMemOperand(source, offset));
+}
+void BaselineAssembler::StoreTaggedSignedField(Register target, int offset,
+ Smi value) {
+ ScratchRegisterScope temps(this);
+ Register tmp = temps.AcquireScratch();
+ __ li(tmp, Operand(value));
+ // FIXME(riscv64): riscv64 don't implement pointer compressed
+ __ Sd(tmp, FieldMemOperand(target, offset));
+}
+void BaselineAssembler::StoreTaggedFieldWithWriteBarrier(Register target,
+ int offset,
+ Register value) {
+ // FIXME(riscv64): riscv64 don't implement pointer compressed
+ __ Sd(value, FieldMemOperand(target, offset));
+ ScratchRegisterScope temps(this);
+ Register tmp = temps.AcquireScratch();
+ __ RecordWriteField(target, offset, value, tmp, kRAHasNotBeenSaved,
+ SaveFPRegsMode::kIgnore);
+}
+void BaselineAssembler::StoreTaggedFieldNoWriteBarrier(Register target,
+ int offset,
+ Register value) {
+ // FIXME(riscv64): riscv64 don't implement pointer compressed
+ __ Sd(value, FieldMemOperand(target, offset));
+}
+
+void BaselineAssembler::AddToInterruptBudget(int32_t weight) {
+ ScratchRegisterScope scratch_scope(this);
+ Register feedback_cell = scratch_scope.AcquireScratch();
+ LoadFunction(feedback_cell);
+ LoadTaggedPointerField(feedback_cell, feedback_cell,
+ JSFunction::kFeedbackCellOffset);
+
+ Register interrupt_budget = scratch_scope.AcquireScratch();
+ __ Ld(interrupt_budget,
+ FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset));
+ // Remember to set flags as part of the add!
+ __ Add64(interrupt_budget, interrupt_budget, weight);
+ __ Sd(interrupt_budget,
+ FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset));
+}
+
+void BaselineAssembler::AddToInterruptBudget(Register weight) {
+ ScratchRegisterScope scratch_scope(this);
+ Register feedback_cell = scratch_scope.AcquireScratch();
+ LoadFunction(feedback_cell);
+ LoadTaggedPointerField(feedback_cell, feedback_cell,
+ JSFunction::kFeedbackCellOffset);
+
+ Register interrupt_budget = scratch_scope.AcquireScratch();
+ __ Ld(interrupt_budget,
+ FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset));
+ // Remember to set flags as part of the add!
+ __ Add64(interrupt_budget, interrupt_budget, weight);
+ __ Sd(interrupt_budget,
+ FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset));
+}
+
+void BaselineAssembler::AddSmi(Register lhs, Smi rhs) {
+ if (SmiValuesAre31Bits()) {
+ __ Add32(lhs, lhs, Operand(rhs));
+ } else {
+ __ Add64(lhs, lhs, Operand(rhs));
+ }
+}
+
+void BaselineAssembler::Switch(Register reg, int case_value_base,
+ Label** labels, int num_labels) {
+ Label fallthrough;
+ if (case_value_base > 0) {
+ __ Sub64(reg, reg, Operand(case_value_base));
+ }
+
+ // Mostly copied from code-generator-riscv64.cc
+ ScratchRegisterScope scope(this);
+ Register temp = scope.AcquireScratch();
+ Label table;
+ __ Branch(&fallthrough, AsMasmCondition(Condition::kUnsignedGreaterThanEqual),
+ reg, Operand(int64_t(num_labels)));
+ int64_t imm64;
+ imm64 = __ branch_long_offset(&table);
+ DCHECK(is_int32(imm64));
+ int32_t Hi20 = (((int32_t)imm64 + 0x800) >> 12);
+ int32_t Lo12 = (int32_t)imm64 << 20 >> 20;
+ __ auipc(temp, Hi20); // Read PC + Hi20 into t6
+ __ lui(temp, Lo12); // jump PC + Hi20 + Lo12
+
+ int entry_size_log2 = 2;
+ Register temp2 = scope.AcquireScratch();
+ __ CalcScaledAddress(temp2, temp, reg, entry_size_log2);
+ __ Jump(temp);
+ {
+ TurboAssembler::BlockTrampolinePoolScope(masm());
+ __ BlockTrampolinePoolFor(num_labels * kInstrSize);
+ __ bind(&table);
+ for (int i = 0; i < num_labels; ++i) {
+ __ Branch(labels[i]);
+ }
+ DCHECK_EQ(num_labels * kInstrSize, __ InstructionsGeneratedSince(&table));
+ __ bind(&fallthrough);
+ }
+}
+
+#undef __
+
+#define __ basm.
+
+void BaselineAssembler::EmitReturn(MacroAssembler* masm) {
+ BaselineAssembler basm(masm);
+
+ Register weight = BaselineLeaveFrameDescriptor::WeightRegister();
+ Register params_size = BaselineLeaveFrameDescriptor::ParamsSizeRegister();
+
+ __ RecordComment("[ Update Interrupt Budget");
+ __ AddToInterruptBudget(weight);
+
+ // Use compare flags set by add
+ Label skip_interrupt_label;
+ __ JumpIf(Condition::kGreaterThanEqual, &skip_interrupt_label);
+ {
+ __ masm()->SmiTag(params_size);
+ __ masm()->Push(params_size, kInterpreterAccumulatorRegister);
+
+ __ LoadContext(kContextRegister);
+ __ LoadFunction(kJSFunctionRegister);
+ __ masm()->Push(kJSFunctionRegister);
+ __ CallRuntime(Runtime::kBytecodeBudgetInterruptFromBytecode, 1);
+
+ __ masm()->Pop(kInterpreterAccumulatorRegister, params_size);
+ __ masm()->SmiUntag(params_size);
+ }
+ __ RecordComment("]");
+
+ __ Bind(&skip_interrupt_label);
+
+ BaselineAssembler::ScratchRegisterScope temps(&basm);
+ Register actual_params_size = temps.AcquireScratch();
+ // Compute the size of the actual parameters + receiver (in bytes).
+ __ Move(actual_params_size,
+ MemOperand(fp, StandardFrameConstants::kArgCOffset));
+
+ // If actual is bigger than formal, then we should use it to free up the stack
+ // arguments.
+ Label corrected_args_count;
+ __ masm()->Branch(&corrected_args_count, ge, params_size,
+ Operand(actual_params_size));
+ __ masm()->Move(params_size, actual_params_size);
+ __ Bind(&corrected_args_count);
+
+ // Leave the frame (also dropping the register file).
+ __ masm()->LeaveFrame(StackFrame::BASELINE);
+
+ // Drop receiver + arguments.
+ __ masm()->Add64(params_size, params_size, 1); // Include the receiver.
+ __ masm()->slli(params_size, params_size, kPointerSizeLog2);
+ __ masm()->Add64(sp, sp, params_size);
+ __ masm()->Ret();
+}
+
+#undef __
+
+} // namespace baseline
+} // namespace internal
+} // namespace v8
+
+#endif // V8_BASELINE_RISCV64_BASELINE_ASSEMBLER_RISCV64_INL_H_
diff --git a/deps/v8/src/baseline/riscv64/baseline-compiler-riscv64-inl.h b/deps/v8/src/baseline/riscv64/baseline-compiler-riscv64-inl.h
new file mode 100644
index 0000000000..98ca62e303
--- /dev/null
+++ b/deps/v8/src/baseline/riscv64/baseline-compiler-riscv64-inl.h
@@ -0,0 +1,112 @@
+// Copyright 2021 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_BASELINE_RISCV64_BASELINE_COMPILER_RISCV64_INL_H_
+#define V8_BASELINE_RISCV64_BASELINE_COMPILER_RISCV64_INL_H_
+
+#include "src/baseline/baseline-compiler.h"
+
+namespace v8 {
+namespace internal {
+namespace baseline {
+
+#define __ basm_.
+
+void BaselineCompiler::Prologue() {
+ // Enter the frame here, since CallBuiltin will override lr.
+ __ masm()->EnterFrame(StackFrame::BASELINE);
+ DCHECK_EQ(kJSFunctionRegister, kJavaScriptCallTargetRegister);
+ int max_frame_size = bytecode_->frame_size() + max_call_args_;
+ CallBuiltin<Builtins::kBaselineOutOfLinePrologue>(
+ kContextRegister, kJSFunctionRegister, kJavaScriptCallArgCountRegister,
+ max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
+ PrologueFillFrame();
+}
+
+void BaselineCompiler::PrologueFillFrame() {
+ __ RecordComment("[ Fill frame");
+ // Inlined register frame fill
+ interpreter::Register new_target_or_generator_register =
+ bytecode_->incoming_new_target_or_generator_register();
+ __ LoadRoot(kInterpreterAccumulatorRegister, RootIndex::kUndefinedValue);
+ int register_count = bytecode_->register_count();
+ // Magic value
+ const int kLoopUnrollSize = 8;
+ const int new_target_index = new_target_or_generator_register.index();
+ const bool has_new_target = new_target_index != kMaxInt;
+ // BaselineOutOfLinePrologue already pushed one undefined.
+ register_count -= 1;
+ if (has_new_target) {
+ if (new_target_index == 0) {
+ // Oops, need to fix up that undefined that BaselineOutOfLinePrologue
+ // pushed.
+ __ masm()->Sd(kJavaScriptCallNewTargetRegister, MemOperand(sp));
+ } else {
+ DCHECK_LE(new_target_index, register_count);
+ int index = 1;
+ for (; index + 2 <= new_target_index; index += 2) {
+ __ masm()->Push(kInterpreterAccumulatorRegister,
+ kInterpreterAccumulatorRegister);
+ }
+ if (index == new_target_index) {
+ __ masm()->Push(kJavaScriptCallNewTargetRegister,
+ kInterpreterAccumulatorRegister);
+ } else {
+ DCHECK_EQ(index, new_target_index - 1);
+ __ masm()->Push(kInterpreterAccumulatorRegister,
+ kJavaScriptCallNewTargetRegister);
+ }
+ // We pushed "index" registers, minus the one the prologue pushed, plus
+ // the two registers that included new_target.
+ register_count -= (index - 1 + 2);
+ }
+ }
+ if (register_count < 2 * kLoopUnrollSize) {
+ // If the frame is small enough, just unroll the frame fill completely.
+ for (int i = 0; i < register_count; i += 2) {
+ __ masm()->Push(kInterpreterAccumulatorRegister,
+ kInterpreterAccumulatorRegister);
+ }
+ } else {
+ BaselineAssembler::ScratchRegisterScope temps(&basm_);
+ Register scratch = temps.AcquireScratch();
+
+ // Extract the first few registers to round to the unroll size.
+ int first_registers = register_count % kLoopUnrollSize;
+ for (int i = 0; i < first_registers; i += 2) {
+ __ masm()->Push(kInterpreterAccumulatorRegister,
+ kInterpreterAccumulatorRegister);
+ }
+ __ Move(scratch, register_count / kLoopUnrollSize);
+ // We enter the loop unconditionally, so make sure we need to loop at least
+ // once.
+ DCHECK_GT(register_count / kLoopUnrollSize, 0);
+ Label loop;
+ __ Bind(&loop);
+ for (int i = 0; i < kLoopUnrollSize; i += 2) {
+ __ masm()->Push(kInterpreterAccumulatorRegister,
+ kInterpreterAccumulatorRegister);
+ }
+ __ masm()->Sub64(scratch, scratch, 1);
+ __ JumpIf(Condition::kGreaterThan, &loop);
+ }
+ __ RecordComment("]");
+}
+
+void BaselineCompiler::VerifyFrameSize() {
+ __ masm()->Add64(kScratchReg, sp,
+ RoundUp(InterpreterFrameConstants::kFixedFrameSizeFromFp +
+ bytecode_->frame_size(),
+ 2 * kSystemPointerSize));
+ __ masm()->Assert(eq, AbortReason::kUnexpectedStackPointer, kScratchReg,
+ Operand(fp));
+}
+
+#undef __
+
+} // namespace baseline
+} // namespace internal
+} // namespace v8
+
+#endif // V8_BASELINE_RISCV64_BASELINE_COMPILER_RISCV64_INL_H_
diff --git a/deps/v8/src/baseline/x64/baseline-assembler-x64-inl.h b/deps/v8/src/baseline/x64/baseline-assembler-x64-inl.h
index 202f83c761..98ed29a9ca 100644
--- a/deps/v8/src/baseline/x64/baseline-assembler-x64-inl.h
+++ b/deps/v8/src/baseline/x64/baseline-assembler-x64-inl.h
@@ -7,7 +7,6 @@
#include "src/base/macros.h"
#include "src/baseline/baseline-assembler.h"
-#include "src/codegen/interface-descriptors.h"
#include "src/codegen/x64/register-x64.h"
namespace v8 {
@@ -129,7 +128,7 @@ void BaselineAssembler::CallBuiltin(Builtins::Name builtin) {
} else {
__ RecordCommentForOffHeapTrampoline(builtin);
__ Call(__ EntryFromBuiltinIndexAsOperand(builtin));
- if (FLAG_code_comments) __ RecordComment("]");
+ __ RecordComment("]");
}
}
@@ -140,7 +139,7 @@ void BaselineAssembler::TailCallBuiltin(Builtins::Name builtin) {
} else {
__ RecordCommentForOffHeapTrampoline(builtin);
__ Jump(__ EntryFromBuiltinIndexAsOperand(builtin));
- if (FLAG_code_comments) __ RecordComment("]");
+ __ RecordComment("]");
}
}
@@ -160,7 +159,7 @@ void BaselineAssembler::CmpObjectType(Register object,
}
void BaselineAssembler::CmpInstanceType(Register map,
InstanceType instance_type) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
__ AssertNotSmi(map);
__ CmpObjectType(map, MAP_TYPE, kScratchRegister);
__ Assert(equal, AbortReason::kUnexpectedValue);
@@ -201,7 +200,7 @@ void BaselineAssembler::Move(Register output, Handle<HeapObject> value) {
__ Move(output, value);
}
void BaselineAssembler::Move(Register output, int32_t value) {
- __ Move(output, Immediate(value));
+ __ Move(output, value);
}
void BaselineAssembler::MoveMaybeSmi(Register output, Register source) {
__ mov_tagged(output, source);
@@ -326,7 +325,7 @@ void BaselineAssembler::StoreTaggedFieldWithWriteBarrier(Register target,
DCHECK_NE(target, scratch);
DCHECK_NE(value, scratch);
__ StoreTaggedField(FieldOperand(target, offset), value);
- __ RecordWriteField(target, offset, value, scratch, kDontSaveFPRegs);
+ __ RecordWriteField(target, offset, value, scratch, SaveFPRegsMode::kIgnore);
}
void BaselineAssembler::StoreTaggedFieldNoWriteBarrier(Register target,
int offset,
diff --git a/deps/v8/src/baseline/x64/baseline-compiler-x64-inl.h b/deps/v8/src/baseline/x64/baseline-compiler-x64-inl.h
index 73b43770e5..a4d547b067 100644
--- a/deps/v8/src/baseline/x64/baseline-compiler-x64-inl.h
+++ b/deps/v8/src/baseline/x64/baseline-compiler-x64-inl.h
@@ -18,9 +18,9 @@ namespace baseline {
void BaselineCompiler::Prologue() {
DCHECK_EQ(kJSFunctionRegister, kJavaScriptCallTargetRegister);
int max_frame_size = bytecode_->frame_size() + max_call_args_;
- CallBuiltin(Builtins::kBaselineOutOfLinePrologue, kContextRegister,
- kJSFunctionRegister, kJavaScriptCallArgCountRegister,
- max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
+ CallBuiltin<Builtins::kBaselineOutOfLinePrologue>(
+ kContextRegister, kJSFunctionRegister, kJavaScriptCallArgCountRegister,
+ max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_);
PrologueFillFrame();
}
diff --git a/deps/v8/src/bigint/bigint-internal.cc b/deps/v8/src/bigint/bigint-internal.cc
new file mode 100644
index 0000000000..6630c6c4c9
--- /dev/null
+++ b/deps/v8/src/bigint/bigint-internal.cc
@@ -0,0 +1,43 @@
+// Copyright 2021 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.
+
+#include "src/bigint/bigint-internal.h"
+
+namespace v8 {
+namespace bigint {
+
+ProcessorImpl::ProcessorImpl(Platform* platform) : platform_(platform) {}
+
+ProcessorImpl::~ProcessorImpl() { delete platform_; }
+
+Status ProcessorImpl::get_and_clear_status() {
+ Status result = status_;
+ status_ = Status::kOk;
+ return result;
+}
+
+Processor* Processor::New(Platform* platform) {
+ ProcessorImpl* impl = new ProcessorImpl(platform);
+ return static_cast<Processor*>(impl);
+}
+
+void Processor::Destroy() { delete static_cast<ProcessorImpl*>(this); }
+
+void ProcessorImpl::Multiply(RWDigits Z, Digits X, Digits Y) {
+ X.Normalize();
+ Y.Normalize();
+ if (X.len() == 0 || Y.len() == 0) return Z.Clear();
+ if (X.len() < Y.len()) std::swap(X, Y);
+ if (Y.len() == 1) return MultiplySingle(Z, X, Y[0]);
+ return MultiplySchoolbook(Z, X, Y);
+}
+
+Status Processor::Multiply(RWDigits Z, Digits X, Digits Y) {
+ ProcessorImpl* impl = static_cast<ProcessorImpl*>(this);
+ impl->Multiply(Z, X, Y);
+ return impl->get_and_clear_status();
+}
+
+} // namespace bigint
+} // namespace v8
diff --git a/deps/v8/src/bigint/bigint-internal.h b/deps/v8/src/bigint/bigint-internal.h
new file mode 100644
index 0000000000..efe63a06a5
--- /dev/null
+++ b/deps/v8/src/bigint/bigint-internal.h
@@ -0,0 +1,65 @@
+// Copyright 2021 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_BIGINT_BIGINT_INTERNAL_H_
+#define V8_BIGINT_BIGINT_INTERNAL_H_
+
+#include "src/bigint/bigint.h"
+
+namespace v8 {
+namespace bigint {
+
+class ProcessorImpl : public Processor {
+ public:
+ explicit ProcessorImpl(Platform* platform);
+ ~ProcessorImpl();
+
+ Status get_and_clear_status();
+
+ void Multiply(RWDigits Z, Digits X, Digits Y);
+ void MultiplySingle(RWDigits Z, Digits X, digit_t y);
+ void MultiplySchoolbook(RWDigits Z, Digits X, Digits Y);
+
+ private:
+ // Each unit is supposed to represent approximately one CPU {mul} instruction.
+ // Doesn't need to be accurate; we just want to make sure to check for
+ // interrupt requests every now and then (roughly every 10-100 ms; often
+ // enough not to appear stuck, rarely enough not to cause noticeable
+ // overhead).
+ static const uintptr_t kWorkEstimateThreshold = 5000000;
+
+ void AddWorkEstimate(uintptr_t estimate) {
+ work_estimate_ += estimate;
+ if (work_estimate_ >= kWorkEstimateThreshold) {
+ work_estimate_ = 0;
+ if (platform_->InterruptRequested()) {
+ status_ = Status::kInterrupted;
+ }
+ }
+ }
+
+ bool should_terminate() { return status_ == Status::kInterrupted; }
+
+ uintptr_t work_estimate_{0};
+ Status status_{Status::kOk};
+ Platform* platform_;
+};
+
+#define CHECK(cond) \
+ if (!(cond)) { \
+ std::cerr << __FILE__ << ":" << __LINE__ << ": "; \
+ std::cerr << "Assertion failed: " #cond "\n"; \
+ abort(); \
+ }
+
+#ifdef DEBUG
+#define DCHECK(cond) CHECK(cond)
+#else
+#define DCHECK(cond) (void(0))
+#endif
+
+} // namespace bigint
+} // namespace v8
+
+#endif // V8_BIGINT_BIGINT_INTERNAL_H_
diff --git a/deps/v8/src/bigint/bigint.h b/deps/v8/src/bigint/bigint.h
index a87622b167..a365359c53 100644
--- a/deps/v8/src/bigint/bigint.h
+++ b/deps/v8/src/bigint/bigint.h
@@ -120,9 +120,117 @@ class Digits {
}
};
+// Writable version of a Digits array.
+// Does not own the memory it points at.
+class RWDigits : public Digits {
+ public:
+ RWDigits(digit_t* mem, int len) : Digits(mem, len) {}
+ RWDigits(RWDigits src, int offset, int len) : Digits(src, offset, len) {}
+ RWDigits operator+(int i) {
+ BIGINT_H_DCHECK(i >= 0 && i <= len_);
+ return RWDigits(digits_ + i, len_ - i);
+ }
+
+#if UINTPTR_MAX == 0xFFFFFFFF
+ digit_t& operator[](int i) {
+ BIGINT_H_DCHECK(i >= 0 && i < len_);
+ return digits_[i];
+ }
+#else
+ // 64-bit platform. We only require digits arrays to be 4-byte aligned,
+ // so we use a wrapper class to allow regular array syntax while
+ // performing unaligned memory accesses under the hood.
+ class WritableDigitReference {
+ public:
+ // Support "X[i] = x" notation.
+ void operator=(digit_t digit) { memcpy(ptr_, &digit, sizeof(digit)); }
+ // Support "X[i] = Y[j]" notation.
+ WritableDigitReference& operator=(const WritableDigitReference& src) {
+ memcpy(ptr_, src.ptr_, sizeof(digit_t));
+ return *this;
+ }
+ // Support "x = X[i]" notation.
+ operator digit_t() {
+ digit_t result;
+ memcpy(&result, ptr_, sizeof(result));
+ return result;
+ }
+
+ private:
+ // This class is not for public consumption.
+ friend class RWDigits;
+ // Primary constructor.
+ explicit WritableDigitReference(digit_t* ptr)
+ : ptr_(reinterpret_cast<uint32_t*>(ptr)) {}
+ // Required for returning WDR instances from "operator[]" below.
+ WritableDigitReference(const WritableDigitReference& src) = default;
+
+ uint32_t* ptr_;
+ };
+
+ WritableDigitReference operator[](int i) {
+ BIGINT_H_DCHECK(i >= 0 && i < len_);
+ return WritableDigitReference(digits_ + i);
+ }
+#endif
+
+ digit_t* digits() { return digits_; }
+ void set_len(int len) { len_ = len; }
+
+ void Clear() { memset(digits_, 0, len_ * sizeof(digit_t)); }
+};
+
+class Platform {
+ public:
+ virtual ~Platform() = default;
+
+ // If you want the ability to interrupt long-running operations, implement
+ // a Platform subclass that overrides this method. It will be queried
+ // every now and then by long-running operations.
+ virtual bool InterruptRequested() { return false; }
+};
+
+// These are the operations that this library supports.
+// The signatures follow the convention:
+//
+// void Operation(RWDigits results, Digits inputs);
+//
+// You must preallocate the result; use the respective {OperationResultLength}
+// function to determine its minimum required length. The actual result may
+// be smaller, so you should call result.Normalize() on the result.
+//
+// The operations are divided into two groups: "fast" (O(n) with small
+// coefficient) operations are exposed directly as free functions, "slow"
+// operations are methods on a {BigIntProcessor} object, which provides
+// support for interrupting execution via the {Platform}'s {InterruptRequested}
+// mechanism when it takes too long. These functions return a {Status} value.
+
// Returns r such that r < 0 if A < B; r > 0 if A > B; r == 0 if A == B.
int Compare(Digits A, Digits B);
+enum class Status { kOk, kInterrupted };
+
+class Processor {
+ public:
+ // Takes ownership of {platform}.
+ static Processor* New(Platform* platform);
+
+ // Use this for any std::unique_ptr holding an instance of BigIntProcessor.
+ class Destroyer {
+ public:
+ void operator()(Processor* proc) { proc->Destroy(); }
+ };
+ // When not using std::unique_ptr, call this to delete the instance.
+ void Destroy();
+
+ // Z := X * Y
+ Status Multiply(RWDigits Z, Digits X, Digits Y);
+};
+
+inline int MultiplyResultLength(Digits X, Digits Y) {
+ return X.len() + Y.len();
+}
+
} // namespace bigint
} // namespace v8
diff --git a/deps/v8/src/bigint/digit-arithmetic.h b/deps/v8/src/bigint/digit-arithmetic.h
new file mode 100644
index 0000000000..1c5c93c035
--- /dev/null
+++ b/deps/v8/src/bigint/digit-arithmetic.h
@@ -0,0 +1,87 @@
+// Copyright 2021 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.
+
+// Helper functions that operate on individual digits.
+
+#ifndef V8_BIGINT_DIGIT_ARITHMETIC_H_
+#define V8_BIGINT_DIGIT_ARITHMETIC_H_
+
+#include "src/bigint/bigint.h"
+
+namespace v8 {
+namespace bigint {
+
+static constexpr int kHalfDigitBits = kDigitBits / 2;
+static constexpr digit_t kHalfDigitBase = digit_t{1} << kHalfDigitBits;
+static constexpr digit_t kHalfDigitMask = kHalfDigitBase - 1;
+
+// {carry} will be set to 0 or 1.
+inline digit_t digit_add2(digit_t a, digit_t b, digit_t* carry) {
+#if HAVE_TWODIGIT_T
+ twodigit_t result = twodigit_t{a} + b;
+ *carry = result >> kDigitBits;
+ return static_cast<digit_t>(result);
+#else
+ digit_t result = a + b;
+ *carry = (result < a) ? 1 : 0;
+ return result;
+#endif
+}
+
+// This compiles to slightly better machine code than repeated invocations
+// of {digit_add2}.
+inline digit_t digit_add3(digit_t a, digit_t b, digit_t c, digit_t* carry) {
+#if HAVE_TWODIGIT_T
+ twodigit_t result = twodigit_t{a} + b + c;
+ *carry = result >> kDigitBits;
+ return static_cast<digit_t>(result);
+#else
+ digit_t result = a + b;
+ *carry = (result < a) ? 1 : 0;
+ result += c;
+ if (result < c) *carry += 1;
+ return result;
+#endif
+}
+
+// Returns the low half of the result. High half is in {high}.
+inline digit_t digit_mul(digit_t a, digit_t b, digit_t* high) {
+#if HAVE_TWODIGIT_T
+ twodigit_t result = twodigit_t{a} * b;
+ *high = result >> kDigitBits;
+ return static_cast<digit_t>(result);
+#else
+ // Multiply in half-pointer-sized chunks.
+ // For inputs [AH AL]*[BH BL], the result is:
+ //
+ // [AL*BL] // r_low
+ // + [AL*BH] // r_mid1
+ // + [AH*BL] // r_mid2
+ // + [AH*BH] // r_high
+ // = [R4 R3 R2 R1] // high = [R4 R3], low = [R2 R1]
+ //
+ // Where of course we must be careful with carries between the columns.
+ digit_t a_low = a & kHalfDigitMask;
+ digit_t a_high = a >> kHalfDigitBits;
+ digit_t b_low = b & kHalfDigitMask;
+ digit_t b_high = b >> kHalfDigitBits;
+
+ digit_t r_low = a_low * b_low;
+ digit_t r_mid1 = a_low * b_high;
+ digit_t r_mid2 = a_high * b_low;
+ digit_t r_high = a_high * b_high;
+
+ digit_t carry = 0;
+ digit_t low = digit_add3(r_low, r_mid1 << kHalfDigitBits,
+ r_mid2 << kHalfDigitBits, &carry);
+ *high =
+ (r_mid1 >> kHalfDigitBits) + (r_mid2 >> kHalfDigitBits) + r_high + carry;
+ return low;
+#endif
+}
+
+} // namespace bigint
+} // namespace v8
+
+#endif // V8_BIGINT_DIGIT_ARITHMETIC_H_
diff --git a/deps/v8/src/bigint/mul-schoolbook.cc b/deps/v8/src/bigint/mul-schoolbook.cc
new file mode 100644
index 0000000000..8e10685018
--- /dev/null
+++ b/deps/v8/src/bigint/mul-schoolbook.cc
@@ -0,0 +1,99 @@
+// Copyright 2021 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.
+
+#include "src/bigint/bigint-internal.h"
+#include "src/bigint/digit-arithmetic.h"
+#include "src/bigint/vector-arithmetic.h"
+
+namespace v8 {
+namespace bigint {
+
+// Z := X * y, where y is a single digit.
+void ProcessorImpl::MultiplySingle(RWDigits Z, Digits X, digit_t y) {
+ DCHECK(y != 0); // NOLINT(readability/check)
+ digit_t carry = 0;
+ digit_t high = 0;
+ for (int i = 0; i < X.len(); i++) {
+ digit_t new_high;
+ digit_t low = digit_mul(X[i], y, &new_high);
+ Z[i] = digit_add3(low, high, carry, &carry);
+ high = new_high;
+ }
+ AddWorkEstimate(X.len());
+ Z[X.len()] = carry + high;
+ for (int i = X.len() + 1; i < Z.len(); i++) Z[i] = 0;
+}
+
+#define BODY(min, max) \
+ for (int j = min; j <= max; j++) { \
+ digit_t high; \
+ digit_t low = digit_mul(X[j], Y[i - j], &high); \
+ digit_t carrybit; \
+ zi = digit_add2(zi, low, &carrybit); \
+ carry += carrybit; \
+ next = digit_add2(next, high, &carrybit); \
+ next_carry += carrybit; \
+ } \
+ Z[i] = zi
+
+// Z := X * Y.
+// O(n²) "schoolbook" multiplication algorithm. Optimized to minimize
+// bounds and overflow checks: rather than looping over X for every digit
+// of Y (or vice versa), we loop over Z. The {BODY} macro above is what
+// computes one of Z's digits as a sum of the products of relevant digits
+// of X and Y. This yields a nearly 2x improvement compared to more obvious
+// implementations.
+// This method is *highly* performance sensitive even for the advanced
+// algorithms, which use this as the base case of their recursive calls.
+void ProcessorImpl::MultiplySchoolbook(RWDigits Z, Digits X, Digits Y) {
+ DCHECK(IsDigitNormalized(X));
+ DCHECK(IsDigitNormalized(Y));
+ DCHECK(X.len() >= Y.len());
+ DCHECK(Z.len() >= X.len() + Y.len());
+ if (X.len() == 0 || Y.len() == 0) return Z.Clear();
+ digit_t next, next_carry = 0, carry = 0;
+ // Unrolled first iteration: it's trivial.
+ Z[0] = digit_mul(X[0], Y[0], &next);
+ int i = 1;
+ // Unrolled second iteration: a little less setup.
+ if (i < Y.len()) {
+ digit_t zi = next;
+ next = 0;
+ BODY(0, 1);
+ i++;
+ }
+ // Main part: since X.len() >= Y.len() > i, no bounds checks are needed.
+ for (; i < Y.len(); i++) {
+ digit_t zi = digit_add2(next, carry, &carry);
+ next = next_carry + carry;
+ carry = 0;
+ next_carry = 0;
+ BODY(0, i);
+ AddWorkEstimate(i);
+ if (should_terminate()) return;
+ }
+ // Last part: i exceeds Y now, we have to be careful about bounds.
+ int loop_end = X.len() + Y.len() - 2;
+ for (; i <= loop_end; i++) {
+ int max_x_index = std::min(i, X.len() - 1);
+ int max_y_index = Y.len() - 1;
+ int min_x_index = i - max_y_index;
+ digit_t zi = digit_add2(next, carry, &carry);
+ next = next_carry + carry;
+ carry = 0;
+ next_carry = 0;
+ BODY(min_x_index, max_x_index);
+ AddWorkEstimate(max_x_index - min_x_index);
+ if (should_terminate()) return;
+ }
+ // Write the last digit, and zero out any extra space in Z.
+ Z[i++] = digit_add2(next, carry, &carry);
+ DCHECK(carry == 0); // NOLINT(readability/check)
+ for (; i < Z.len(); i++) Z[i] = 0;
+}
+
+#undef BODY
+
+} // namespace bigint
+} // namespace v8
diff --git a/deps/v8/src/bigint/vector-arithmetic.cc b/deps/v8/src/bigint/vector-arithmetic.cc
index 9a28b168ba..734b443911 100644
--- a/deps/v8/src/bigint/vector-arithmetic.cc
+++ b/deps/v8/src/bigint/vector-arithmetic.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "src/bigint/bigint.h"
+#include "src/bigint/vector-arithmetic.h"
namespace v8 {
namespace bigint {
diff --git a/deps/v8/src/bigint/vector-arithmetic.h b/deps/v8/src/bigint/vector-arithmetic.h
new file mode 100644
index 0000000000..617cb20b55
--- /dev/null
+++ b/deps/v8/src/bigint/vector-arithmetic.h
@@ -0,0 +1,20 @@
+// Copyright 2021 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.
+
+// Helper functions that operate on {Digits} vectors of digits.
+
+#ifndef V8_BIGINT_VECTOR_ARITHMETIC_H_
+#define V8_BIGINT_VECTOR_ARITHMETIC_H_
+
+#include "src/bigint/bigint.h"
+
+namespace v8 {
+namespace bigint {
+
+inline bool IsDigitNormalized(Digits X) { return X.len() == 0 || X.msd() != 0; }
+
+} // namespace bigint
+} // namespace v8
+
+#endif // V8_BIGINT_VECTOR_ARITHMETIC_H_
diff --git a/deps/v8/src/builtins/accessors.cc b/deps/v8/src/builtins/accessors.cc
index c255184cae..0285b33e1f 100644
--- a/deps/v8/src/builtins/accessors.cc
+++ b/deps/v8/src/builtins/accessors.cc
@@ -113,8 +113,7 @@ void Accessors::ReconfigureToDataProperty(
v8::Local<v8::Name> key, v8::Local<v8::Value> val,
const v8::PropertyCallbackInfo<v8::Boolean>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope stats_scope(
- isolate, RuntimeCallCounterId::kReconfigureToDataProperty);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kReconfigureToDataProperty);
HandleScope scope(isolate);
Handle<Object> receiver = Utils::OpenHandle(*info.This());
Handle<JSObject> holder =
@@ -155,8 +154,7 @@ Handle<AccessorInfo> Accessors::MakeArgumentsIteratorInfo(Isolate* isolate) {
void Accessors::ArrayLengthGetter(
v8::Local<v8::Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kArrayLengthGetter);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kArrayLengthGetter);
DisallowGarbageCollection no_gc;
HandleScope scope(isolate);
JSArray holder = JSArray::cast(*Utils::OpenHandle(*info.Holder()));
@@ -168,8 +166,7 @@ void Accessors::ArrayLengthSetter(
v8::Local<v8::Name> name, v8::Local<v8::Value> val,
const v8::PropertyCallbackInfo<v8::Boolean>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kArrayLengthSetter);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kArrayLengthSetter);
HandleScope scope(isolate);
DCHECK(Utils::OpenHandle(*name)->SameValue(
@@ -206,7 +203,12 @@ void Accessors::ArrayLengthSetter(
return;
}
- JSArray::SetLength(array, length);
+ if (JSArray::SetLength(array, length).IsNothing()) {
+ // TODO(victorgomes): AccessorNameBooleanSetterCallback does not handle
+ // exceptions.
+ FATAL("Fatal JavaScript invalid array length %u", length);
+ UNREACHABLE();
+ }
uint32_t actual_new_len = 0;
CHECK(array->length().ToArrayLength(&actual_new_len));
@@ -282,8 +284,7 @@ Handle<AccessorInfo> Accessors::MakeModuleNamespaceEntryInfo(
void Accessors::StringLengthGetter(
v8::Local<v8::Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kStringLengthGetter);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kStringLengthGetter);
DisallowGarbageCollection no_gc;
HandleScope scope(isolate);
@@ -330,8 +331,7 @@ static Handle<Object> GetFunctionPrototype(Isolate* isolate,
void Accessors::FunctionPrototypeGetter(
v8::Local<v8::Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kFunctionPrototypeGetter);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kFunctionPrototypeGetter);
HandleScope scope(isolate);
Handle<JSFunction> function =
Handle<JSFunction>::cast(Utils::OpenHandle(*info.Holder()));
@@ -344,8 +344,7 @@ void Accessors::FunctionPrototypeSetter(
v8::Local<v8::Name> name, v8::Local<v8::Value> val,
const v8::PropertyCallbackInfo<v8::Boolean>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kFunctionPrototypeSetter);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kFunctionPrototypeSetter);
HandleScope scope(isolate);
Handle<Object> value = Utils::OpenHandle(*val);
Handle<JSFunction> object =
@@ -367,8 +366,7 @@ Handle<AccessorInfo> Accessors::MakeFunctionPrototypeInfo(Isolate* isolate) {
void Accessors::FunctionLengthGetter(
v8::Local<v8::Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kFunctionLengthGetter);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kFunctionLengthGetter);
HandleScope scope(isolate);
Handle<JSFunction> function =
Handle<JSFunction>::cast(Utils::OpenHandle(*info.Holder()));
@@ -722,8 +720,7 @@ Handle<AccessorInfo> Accessors::MakeFunctionCallerInfo(Isolate* isolate) {
void Accessors::BoundFunctionLengthGetter(
v8::Local<v8::Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kBoundFunctionLengthGetter);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kBoundFunctionLengthGetter);
HandleScope scope(isolate);
Handle<JSBoundFunction> function =
Handle<JSBoundFunction>::cast(Utils::OpenHandle(*info.Holder()));
@@ -749,8 +746,7 @@ Handle<AccessorInfo> Accessors::MakeBoundFunctionLengthInfo(Isolate* isolate) {
void Accessors::BoundFunctionNameGetter(
v8::Local<v8::Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(info.GetIsolate());
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kBoundFunctionNameGetter);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kBoundFunctionNameGetter);
HandleScope scope(isolate);
Handle<JSBoundFunction> function =
Handle<JSBoundFunction>::cast(Utils::OpenHandle(*info.Holder()));
diff --git a/deps/v8/src/builtins/aggregate-error.tq b/deps/v8/src/builtins/aggregate-error.tq
index 9c70ffcb00..c811403274 100644
--- a/deps/v8/src/builtins/aggregate-error.tq
+++ b/deps/v8/src/builtins/aggregate-error.tq
@@ -19,8 +19,9 @@ transitioning javascript builtin AggregateErrorConstructor(
// [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true*
// c. Perform ! DefinePropertyOrThrow(_O_, *"message"*, _msgDesc_).
const message: JSAny = arguments[1];
- const obj: JSObject =
- ConstructAggregateErrorHelper(context, target, newTarget, message);
+ const options: JSAny = arguments[2];
+ const obj: JSObject = ConstructAggregateErrorHelper(
+ context, target, newTarget, message, options);
// 4. Let errorsList be ? IterableToList(errors).
const errors: JSAny = arguments[0];
@@ -38,7 +39,7 @@ transitioning javascript builtin AggregateErrorConstructor(
}
extern transitioning runtime ConstructAggregateErrorHelper(
- Context, JSFunction, JSAny, Object): JSObject;
+ Context, JSFunction, JSAny, Object, Object): JSObject;
extern transitioning runtime ConstructInternalAggregateErrorHelper(
Context, Object): JSObject;
diff --git a/deps/v8/src/builtins/arm/builtins-arm.cc b/deps/v8/src/builtins/arm/builtins-arm.cc
index 817d30fe26..83252446af 100644
--- a/deps/v8/src/builtins/arm/builtins-arm.cc
+++ b/deps/v8/src/builtins/arm/builtins-arm.cc
@@ -6,6 +6,7 @@
#include "src/api/api-arguments.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
// For interpreter_entry_return_pc_offset. TODO(jkummerow): Drop.
#include "src/codegen/macro-assembler-inl.h"
#include "src/codegen/register-configuration.h"
@@ -118,7 +119,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// r0: number of arguments (untagged)
// r1: constructor function
// r3: new target
- __ InvokeFunctionWithNewTarget(r1, r3, r0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(r1, r3, r0, InvokeType::kCall);
// Restore context from the frame.
__ ldr(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
@@ -236,7 +237,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
__ Push(r6);
// Call the function.
- __ InvokeFunctionWithNewTarget(r1, r3, r0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(r1, r3, r0, InvokeType::kCall);
// ----------- S t a t e -------------
// -- r0: constructor result
@@ -337,7 +338,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
// Store input value into generator object.
__ str(r0, FieldMemOperand(r1, JSGeneratorObject::kInputOrDebugPosOffset));
__ RecordWriteField(r1, JSGeneratorObject::kInputOrDebugPosOffset, r0,
- kLRHasNotBeenSaved, kDontSaveFPRegs);
+ kLRHasNotBeenSaved, SaveFPRegsMode::kIgnore);
// Load suspended function and context.
__ ldr(r4, FieldMemOperand(r1, JSGeneratorObject::kFunctionOffset));
@@ -388,16 +389,13 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
FieldMemOperand(r1, JSGeneratorObject::kParametersAndRegistersOffset));
{
Label done_loop, loop;
- __ mov(r6, r3);
-
__ bind(&loop);
- __ sub(r6, r6, Operand(1), SetCC);
+ __ sub(r3, r3, Operand(1), SetCC);
__ b(lt, &done_loop);
- __ add(scratch, r2, Operand(r6, LSL, kTaggedSizeLog2));
+ __ add(scratch, r2, Operand(r3, LSL, kTaggedSizeLog2));
__ ldr(scratch, FieldMemOperand(scratch, FixedArray::kHeaderSize));
__ Push(scratch);
__ b(&loop);
-
__ bind(&done_loop);
// Push receiver.
@@ -799,8 +797,8 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
// Store code entry in the closure.
__ str(optimized_code, FieldMemOperand(closure, JSFunction::kCodeOffset));
__ RecordWriteField(closure, JSFunction::kCodeOffset, optimized_code,
- kLRHasNotBeenSaved, kDontSaveFPRegs, OMIT_REMEMBERED_SET,
- OMIT_SMI_CHECK);
+ kLRHasNotBeenSaved, SaveFPRegsMode::kIgnore,
+ RememberedSetAction::kOmit, SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
@@ -1051,7 +1049,7 @@ void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
__ ldr(feedback_vector,
FieldMemOperand(closure, JSFunction::kFeedbackCellOffset));
__ ldr(feedback_vector, FieldMemOperand(feedback_vector, Cell::kValueOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
UseScratchRegisterScope temps(masm);
Register scratch = temps.Acquire();
__ CompareObjectType(feedback_vector, scratch, scratch,
@@ -1124,7 +1122,7 @@ void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
// Baseline code frames store the feedback vector where interpreter would
// store the bytecode offset.
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
UseScratchRegisterScope temps(masm);
Register scratch = temps.Acquire();
__ CompareObjectType(feedback_vector, scratch, scratch,
@@ -1646,7 +1644,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Jump(kJavaScriptCallCodeStartRegister);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Get bytecode array and bytecode offset from the stack frame.
__ ldr(kInterpreterBytecodeArrayRegister,
MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
@@ -1691,7 +1689,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
@@ -1841,6 +1839,8 @@ void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
}
void Builtins::Generate_BaselineOnStackReplacement(MacroAssembler* masm) {
+ __ ldr(kContextRegister,
+ MemOperand(fp, BaselineFrameConstants::kContextOffset));
return OnStackReplacement(masm, false);
}
@@ -2009,6 +2009,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
}
// static
+// TODO(v8:11615): Observe Code::kMaxArguments in CallOrConstructVarargs
void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
Handle<Code> code) {
// ----------- S t a t e -------------
@@ -2020,7 +2021,7 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
// -----------------------------------
Register scratch = r8;
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow r2 to be a FixedArray, or a FixedDoubleArray if r4 == 0.
Label ok, fail;
__ AssertNotSmi(r2);
@@ -2278,7 +2279,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ ldrh(r2,
FieldMemOperand(r2, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(r1, no_reg, r2, r0, JUMP_FUNCTION);
+ __ InvokeFunctionCode(r1, no_reg, r2, r0, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ bind(&class_constructor);
@@ -2640,6 +2641,11 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
// TODO(v8:10701): Implement for this platform.
__ Trap();
}
+
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ // Only needed on x64.
+ __ Trap();
+}
#endif // V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
@@ -2652,12 +2658,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// sp: stack pointer (restored as callee's sp after C call)
// cp: current context (C callee-saved)
//
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// r2: pointer to the first argument
__ mov(r5, Operand(r1));
- if (argv_mode == kArgvInRegister) {
+ if (argv_mode == ArgvMode::kRegister) {
// Move argv into the correct register.
__ mov(r1, Operand(r2));
} else {
@@ -2669,7 +2675,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Enter the exit frame that transitions from JavaScript to C++.
FrameScope scope(masm, StackFrame::MANUAL);
__ EnterExitFrame(
- save_doubles == kSaveFPRegs, 0,
+ save_doubles == SaveFPRegsMode::kSave, 0,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
// Store a copy of argc in callee-saved registers for later.
@@ -2726,12 +2732,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// r0:r1: result
// sp: stack pointer
// fp: frame pointer
- Register argc = argv_mode == kArgvInRegister
+ Register argc = argv_mode == ArgvMode::kRegister
// We don't want to pop arguments so set argc to no_reg.
? no_reg
// Callee-saved register r4 still holds argc.
: r4;
- __ LeaveExitFrame(save_doubles == kSaveFPRegs, argc);
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, argc);
__ mov(pc, lr);
// Handling of exception.
@@ -2841,7 +2847,7 @@ void Builtins::Generate_DoubleToI(MacroAssembler* masm) {
// If we reach this code, 30 <= exponent <= 83.
// `TryInlineTruncateDoubleToI` above will have truncated any double with an
// exponent lower than 30.
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Scratch is exponent - 1.
__ cmp(scratch, Operand(30 - 1));
__ Check(ge, AbortReason::kUnexpectedValue);
@@ -2957,7 +2963,7 @@ void CallApiFunctionAndReturn(MacroAssembler* masm, Register function_address,
// No more valid handles (the result handle was the last one). Restore
// previous handle scope.
__ str(r4, MemOperand(r9, kNextOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ ldr(r1, MemOperand(r9, kLevelOffset));
__ cmp(r1, r6);
__ Check(eq, AbortReason::kUnexpectedLevelAfterReturnFromApiCall);
diff --git a/deps/v8/src/builtins/arm64/builtins-arm64.cc b/deps/v8/src/builtins/arm64/builtins-arm64.cc
index d095d60b30..3cf3f0153f 100644
--- a/deps/v8/src/builtins/arm64/builtins-arm64.cc
+++ b/deps/v8/src/builtins/arm64/builtins-arm64.cc
@@ -6,6 +6,7 @@
#include "src/api/api-arguments.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
// For interpreter_entry_return_pc_offset. TODO(jkummerow): Drop.
#include "src/codegen/macro-assembler-inl.h"
#include "src/codegen/register-configuration.h"
@@ -99,7 +100,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
Label already_aligned;
Register argc = x0;
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
// Check that FrameScope pushed the context on to the stack already.
__ Peek(x2, 0);
__ Cmp(x2, cp);
@@ -176,7 +177,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// -----------------------------------
// Call the function.
- __ InvokeFunctionWithNewTarget(x1, x3, argc, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(x1, x3, argc, InvokeType::kCall);
// Restore the context from the frame.
__ Ldr(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
@@ -219,7 +220,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
__ EnterFrame(StackFrame::CONSTRUCT);
Label post_instantiation_deopt_entry, not_create_implicit_receiver;
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
// Check that FrameScope pushed the context on to the stack already.
__ Peek(x2, 0);
__ Cmp(x2, cp);
@@ -336,7 +337,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
// Call the function.
__ Mov(x0, x12);
- __ InvokeFunctionWithNewTarget(x1, x3, x0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(x1, x3, x0, InvokeType::kCall);
// ----------- S t a t e -------------
// -- sp[0*kSystemPointerSize]: implicit receiver
@@ -442,7 +443,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
__ StoreTaggedField(
x0, FieldMemOperand(x1, JSGeneratorObject::kInputOrDebugPosOffset));
__ RecordWriteField(x1, JSGeneratorObject::kInputOrDebugPosOffset, x0,
- kLRHasNotBeenSaved, kDontSaveFPRegs);
+ kLRHasNotBeenSaved, SaveFPRegsMode::kIgnore);
// Load suspended function and context.
__ LoadTaggedPointerField(
@@ -639,7 +640,8 @@ void Generate_JSEntryVariant(MacroAssembler* masm, StackFrame::Type type,
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
// Initialize the pointer cage base register.
- __ Mov(kPointerCageBaseRegister, x0);
+ __ LoadRootRelative(kPtrComprCageBaseRegister,
+ IsolateData::cage_base_offset());
#endif
}
@@ -925,7 +927,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
// Don't initialize the reserved registers.
// x26 : root register (kRootRegister).
// x27 : context pointer (cp).
- // x28 : pointer cage base register (kPointerCageBaseRegister).
+ // x28 : pointer cage base register (kPtrComprCageBaseRegister).
// x29 : frame pointer (fp).
Handle<Code> builtin = is_construct
@@ -966,8 +968,8 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
__ StoreTaggedField(optimized_code,
FieldMemOperand(closure, JSFunction::kCodeOffset));
__ RecordWriteField(closure, JSFunction::kCodeOffset, optimized_code,
- kLRHasNotBeenSaved, kDontSaveFPRegs, OMIT_REMEMBERED_SET,
- OMIT_SMI_CHECK);
+ kLRHasNotBeenSaved, SaveFPRegsMode::kIgnore,
+ RememberedSetAction::kOmit, SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
@@ -998,7 +1000,7 @@ static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
__ LeaveFrame(StackFrame::INTERPRETED);
// Drop receiver + arguments.
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Tst(params_size, kSystemPointerSize - 1);
__ Check(eq, AbortReason::kUnexpectedValue);
}
@@ -1230,7 +1232,7 @@ void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
FieldMemOperand(closure, JSFunction::kFeedbackCellOffset));
__ LoadTaggedPointerField(
feedback_vector, FieldMemOperand(feedback_vector, Cell::kValueOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ CompareObjectType(feedback_vector, x4, x4, FEEDBACK_VECTOR_TYPE);
__ Assert(eq, AbortReason::kExpectedFeedbackVector);
}
@@ -1288,7 +1290,7 @@ void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
// Baseline code frames store the feedback vector where interpreter would
// store the bytecode offset.
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ CompareObjectType(feedback_vector, x4, x4, FEEDBACK_VECTOR_TYPE);
__ Assert(eq, AbortReason::kExpectedFeedbackVector);
}
@@ -1859,7 +1861,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Br(x17);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Get bytecode array and bytecode offset from the stack frame.
__ ldr(kInterpreterBytecodeArrayRegister,
MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
@@ -1903,7 +1905,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
@@ -2087,6 +2089,8 @@ void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
}
void Builtins::Generate_BaselineOnStackReplacement(MacroAssembler* masm) {
+ __ ldr(kContextRegister,
+ MemOperand(fp, BaselineFrameConstants::kContextOffset));
return OnStackReplacement(masm, false);
}
@@ -2385,6 +2389,7 @@ void Generate_PrepareForCopyingVarargs(MacroAssembler* masm, Register argc,
} // namespace
// static
+// TODO(v8:11615): Observe Code::kMaxArguments in CallOrConstructVarargs
void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
Handle<Code> code) {
// ----------- S t a t e -------------
@@ -2394,7 +2399,7 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
// -- x4 : len (number of elements to push from args)
// -- x3 : new.target (for [[Construct]])
// -----------------------------------
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow x2 to be a FixedArray, or a FixedDoubleArray if x4 == 0.
Label ok, fail;
__ AssertNotSmi(x2, AbortReason::kOperandIsNotAFixedArray);
@@ -2618,7 +2623,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ Ldrh(x2,
FieldMemOperand(x2, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(x1, no_reg, x2, x0, JUMP_FUNCTION);
+ __ InvokeFunctionCode(x1, no_reg, x2, x0, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ Bind(&class_constructor);
@@ -3036,6 +3041,11 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
// TODO(v8:10701): Implement for this platform.
__ Trap();
}
+
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ // Only needed on x64.
+ __ Trap();
+}
#endif // V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
@@ -3053,7 +3063,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Register parameters:
// x0: argc (including receiver, untagged)
// x1: target
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// x11: argv (pointer to first argument)
//
// The stack on entry holds the arguments and the receiver, with the receiver
@@ -3085,7 +3095,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// (arg[argc-2]), or just below the receiver in case there are no arguments.
// - Adjust for the arg[] array.
Register temp_argv = x11;
- if (argv_mode == kArgvOnStack) {
+ if (argv_mode == ArgvMode::kStack) {
__ SlotAddress(temp_argv, x0);
// - Adjust for the receiver.
__ Sub(temp_argv, temp_argv, 1 * kSystemPointerSize);
@@ -3096,7 +3106,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Enter the exit frame.
FrameScope scope(masm, StackFrame::MANUAL);
__ EnterExitFrame(
- save_doubles == kSaveFPRegs, x10, extra_stack_space,
+ save_doubles == SaveFPRegsMode::kSave, x10, extra_stack_space,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
// Poke callee-saved registers into reserved space.
@@ -3177,8 +3187,8 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
__ Peek(argc, 2 * kSystemPointerSize);
__ Peek(target, 3 * kSystemPointerSize);
- __ LeaveExitFrame(save_doubles == kSaveFPRegs, x10, x9);
- if (argv_mode == kArgvOnStack) {
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, x10, x9);
+ if (argv_mode == ArgvMode::kStack) {
// Drop the remaining stack slots and return from the stub.
__ DropArguments(x11);
}
@@ -3247,7 +3257,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Compute the handler entry address and jump to it. We use x17 here for the
// jump target, as this jump can occasionally end up at the start of
- // InterpreterEnterBytecodeDispatch, which when CFI is enabled starts with
+ // InterpreterEnterAtBytecode, which when CFI is enabled starts with
// a "BTI c".
UseScratchRegisterScope temps(masm);
temps.Exclude(x17);
@@ -3296,7 +3306,7 @@ void Builtins::Generate_DoubleToI(MacroAssembler* masm) {
// signed overflow in the int64_t target. Since we've already handled
// exponents >= 84, we can guarantee that 63 <= exponent < 84.
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Cmp(exponent, HeapNumber::kExponentBias + 63);
// Exponents less than this should have been handled by the Fcvt case.
__ Check(ge, AbortReason::kUnexpectedValue);
@@ -3412,7 +3422,7 @@ void CallApiFunctionAndReturn(MacroAssembler* masm, Register function_address,
// No more valid handles (the result handle was the last one). Restore
// previous handle scope.
__ Str(next_address_reg, MemOperand(handle_scope_base, kNextOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Ldr(w1, MemOperand(handle_scope_base, kLevelOffset));
__ Cmp(w1, level_reg);
__ Check(eq, AbortReason::kUnexpectedLevelAfterReturnFromApiCall);
diff --git a/deps/v8/src/builtins/arraybuffer.tq b/deps/v8/src/builtins/arraybuffer.tq
index 179c4b38fd..5794414443 100644
--- a/deps/v8/src/builtins/arraybuffer.tq
+++ b/deps/v8/src/builtins/arraybuffer.tq
@@ -9,21 +9,25 @@ transitioning javascript builtin ArrayBufferPrototypeGetByteLength(
js-implicit context: NativeContext, receiver: JSAny)(): Number {
// 1. Let O be the this value.
// 2. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
+ const functionName = 'get ArrayBuffer.prototype.byteLength';
const o = Cast<JSArrayBuffer>(receiver) otherwise
ThrowTypeError(
- MessageTemplate::kIncompatibleMethodReceiver,
- 'get ArrayBuffer.prototype.byteLength', receiver);
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
// 3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
if (IsSharedArrayBuffer(o)) {
ThrowTypeError(
- MessageTemplate::kIncompatibleMethodReceiver,
- 'get ArrayBuffer.prototype.byteLength', receiver);
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
}
- // 4. If IsDetachedBuffer(O) is true, throw a TypeError exception.
+ // 4. If IsResizableArrayBuffer(O) is true, throw a TypeError exception.
+ if (IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 5. If IsDetachedBuffer(O) is true, throw a TypeError exception.
// TODO(v8:4895): We don't actually throw here.
- // 5. Let length be O.[[ArrayBufferByteLength]].
+ // 6. Let length be O.[[ArrayBufferByteLength]].
const length = o.byte_length;
- // 6. Return length.
+ // 7. Return length.
return Convert<Number>(length);
}
@@ -32,15 +36,43 @@ transitioning javascript builtin SharedArrayBufferPrototypeGetByteLength(
js-implicit context: NativeContext, receiver: JSAny)(): Number {
// 1. Let O be the this value.
// 2. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
+ const functionName = 'get SharedArrayBuffer.prototype.byteLength';
const o = Cast<JSArrayBuffer>(receiver) otherwise
ThrowTypeError(
- MessageTemplate::kIncompatibleMethodReceiver,
- 'get SharedArrayBuffer.prototype.byteLength', receiver);
- // 3. If IsSharedArrayBuffer(O) is false, throw a TypeError exception.
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ // 3. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
if (!IsSharedArrayBuffer(o)) {
ThrowTypeError(
- MessageTemplate::kIncompatibleMethodReceiver,
- 'get SharedArrayBuffer.prototype.byteLength', receiver);
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 4. If IsResizableArrayBuffer(O) is true, throw a TypeError exception.
+ if (IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 5. Let length be O.[[ArrayBufferByteLength]].
+ const length = o.byte_length;
+ // 6. Return length.
+ return Convert<Number>(length);
+}
+
+// #sec-get-resizablearraybuffer.prototype.bytelength
+transitioning javascript builtin ResizableArrayBufferPrototypeGetByteLength(
+ js-implicit context: NativeContext, receiver: JSAny)(): Number {
+ // 1. Let O be the this value.
+ // 2. Perform ? RequireInternalSlot(O, [[ArrayBufferMaxByteLength]]).
+ const functionName = 'get ResizableArrayBuffer.prototype.byteLength';
+ const o = Cast<JSArrayBuffer>(receiver) otherwise
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ if (!IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
+ if (IsSharedArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
}
// 4. Let length be O.[[ArrayBufferByteLength]].
const length = o.byte_length;
@@ -48,6 +80,55 @@ transitioning javascript builtin SharedArrayBufferPrototypeGetByteLength(
return Convert<Number>(length);
}
+// #sec-get-resizablearraybuffer.prototype.maxbytelength
+transitioning javascript builtin ResizableArrayBufferPrototypeGetMaxByteLength(
+ js-implicit context: NativeContext, receiver: JSAny)(): Number {
+ // 1. Let O be the this value.
+ // 2. Perform ? RequireInternalSlot(O, [[ArrayBufferMaxByteLength]]).
+ const functionName = 'get ResizableArrayBuffer.prototype.maxByteLength';
+ const o = Cast<JSArrayBuffer>(receiver) otherwise
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ if (!IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
+ if (IsSharedArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 4. Let length be O.[[ArrayBufferMaxByteLength]].
+ const length = o.max_byte_length;
+ // 5. Return length.
+ return Convert<Number>(length);
+}
+
+// #sec-get-growablesharedarraybuffer.prototype.maxbytelength
+transitioning javascript builtin
+GrowableSharedArrayBufferPrototypeGetMaxByteLength(
+ js-implicit context: NativeContext, receiver: JSAny)(): Number {
+ // 1. Let O be the this value.
+ // 2. Perform ? RequireInternalSlot(O, [[ArrayBufferMaxByteLength]]).
+ const functionName = 'get GrowableSharedArrayBuffer.prototype.maxByteLength';
+ const o = Cast<JSArrayBuffer>(receiver) otherwise
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ if (!IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 3. If IsSharedArrayBuffer(O) is false, throw a TypeError exception.
+ if (!IsSharedArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 4. Let length be O.[[ArrayBufferMaxByteLength]].
+ const length = o.max_byte_length;
+ // 5. Return length.
+ return Convert<Number>(length);
+}
+
// #sec-arraybuffer.isview
transitioning javascript builtin ArrayBufferIsView(arg: JSAny): Boolean {
// 1. If Type(arg) is not Object, return false.
diff --git a/deps/v8/src/builtins/base.tq b/deps/v8/src/builtins/base.tq
index 08639c04da..fc84e1a2ce 100644
--- a/deps/v8/src/builtins/base.tq
+++ b/deps/v8/src/builtins/base.tq
@@ -141,6 +141,7 @@ intrinsic %MakeLazy<T: type, A1: type, A2: type, A3: type>(
// template, but Torque doesn't understand how to use templates for extern
// macros, so just add whatever overload definitions you need here.
extern macro RunLazy(Lazy<Smi>): Smi;
+extern macro RunLazy(Lazy<JSAny>): JSAny;
// A Smi value containing a bitfield struct as its integer data.
@useParentTypeChecker type SmiTagged<T : type extends uint31> extends Smi;
@@ -262,6 +263,8 @@ extern enum UpdateFeedbackMode { kOptionalFeedback, kGuaranteedFeedback }
extern operator '==' macro UpdateFeedbackModeEqual(
constexpr UpdateFeedbackMode, constexpr UpdateFeedbackMode): constexpr bool;
+extern enum CallFeedbackContent extends int32 { kTarget, kReceiver }
+
extern enum UnicodeEncoding { UTF16, UTF32 }
// Promise constants
@@ -961,6 +964,8 @@ extern operator '|' macro ConstexprWord32Or(
constexpr int32, constexpr int32): constexpr int32;
extern operator '^' macro Word32Xor(int32, int32): int32;
extern operator '^' macro Word32Xor(uint32, uint32): uint32;
+extern operator '<<' macro ConstexprWord32Shl(
+ constexpr uint32, constexpr int32): uint32;
extern operator '==' macro Word64Equal(int64, int64): bool;
extern operator '==' macro Word64Equal(uint64, uint64): bool;
@@ -1296,6 +1301,9 @@ macro GetFastAliasedArgumentsMap(implicit context: Context)(): Map {
macro GetWeakCellMap(implicit context: Context)(): Map {
return %GetClassMapConstant<WeakCell>();
}
+macro GetPrototypeApplyFunction(implicit context: Context)(): JSFunction {
+ return *NativeContextSlot(ContextSlot::FUNCTION_PROTOTYPE_APPLY_INDEX);
+}
// Call(Context, Target, Receiver, ...Args)
// TODO(joshualitt): Assuming the context parameter is for throwing when Target
@@ -1689,7 +1697,7 @@ extern transitioning runtime SetOwnPropertyIgnoreAttributes(
namespace runtime {
extern runtime
-GetDerivedMap(Context, JSFunction, JSReceiver): Map;
+GetDerivedMap(Context, JSFunction, JSReceiver, JSAny): Map;
}
extern macro IsDeprecatedMap(Map): bool;
diff --git a/deps/v8/src/builtins/builtins-api.cc b/deps/v8/src/builtins/builtins-api.cc
index 35e6cc393c..b39bfc84a5 100644
--- a/deps/v8/src/builtins/builtins-api.cc
+++ b/deps/v8/src/builtins/builtins-api.cc
@@ -23,8 +23,7 @@ namespace {
// TODO(dcarney): CallOptimization duplicates this logic, merge.
JSReceiver GetCompatibleReceiver(Isolate* isolate, FunctionTemplateInfo info,
JSReceiver receiver) {
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kGetCompatibleReceiver);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kGetCompatibleReceiver);
Object recv_type = info.signature();
// No signature, return holder.
if (!recv_type.IsFunctionTemplateInfo()) return receiver;
@@ -171,8 +170,7 @@ MaybeHandle<Object> Builtins::InvokeApiFunction(Isolate* isolate,
Handle<Object> receiver,
int argc, Handle<Object> args[],
Handle<HeapObject> new_target) {
- RuntimeCallTimerScope timer(isolate,
- RuntimeCallCounterId::kInvokeApiFunction);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kInvokeApiFunction);
DCHECK(function->IsFunctionTemplateInfo() ||
(function->IsJSFunction() &&
JSFunction::cast(*function).shared().IsApiFunction()));
diff --git a/deps/v8/src/builtins/builtins-array-gen.cc b/deps/v8/src/builtins/builtins-array-gen.cc
index 6b522fda6c..833627c7b4 100644
--- a/deps/v8/src/builtins/builtins-array-gen.cc
+++ b/deps/v8/src/builtins/builtins-array-gen.cc
@@ -10,6 +10,7 @@
#include "src/builtins/builtins-utils-gen.h"
#include "src/builtins/builtins.h"
#include "src/codegen/code-stub-assembler.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/execution/frame-constants.h"
#include "src/heap/factory-inl.h"
#include "src/objects/allocation-site-inl.h"
diff --git a/deps/v8/src/builtins/builtins-array.cc b/deps/v8/src/builtins/builtins-array.cc
index d3bbd980a5..6fe1bfc712 100644
--- a/deps/v8/src/builtins/builtins-array.cc
+++ b/deps/v8/src/builtins/builtins-array.cc
@@ -173,7 +173,8 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Object> SetLengthProperty(
Handle<JSArray> array = Handle<JSArray>::cast(receiver);
if (!JSArray::HasReadOnlyLength(array)) {
DCHECK_LE(length, kMaxUInt32);
- JSArray::SetLength(array, static_cast<uint32_t>(length));
+ MAYBE_RETURN_NULL(
+ JSArray::SetLength(array, static_cast<uint32_t>(length)));
return receiver;
}
}
@@ -207,16 +208,16 @@ V8_WARN_UNUSED_RESULT Object GenericArrayFill(Isolate* isolate,
return *receiver;
}
-V8_WARN_UNUSED_RESULT bool TryFastArrayFill(
+V8_WARN_UNUSED_RESULT Maybe<bool> TryFastArrayFill(
Isolate* isolate, BuiltinArguments* args, Handle<JSReceiver> receiver,
Handle<Object> value, double start_index, double end_index) {
// If indices are too large, use generic path since they are stored as
// properties, not in the element backing store.
- if (end_index > kMaxUInt32) return false;
- if (!receiver->IsJSObject()) return false;
+ if (end_index > kMaxUInt32) return Just(false);
+ if (!receiver->IsJSObject()) return Just(false);
if (!EnsureJSArrayWithWritableFastElements(isolate, receiver, args, 1, 1)) {
- return false;
+ return Just(false);
}
Handle<JSArray> array = Handle<JSArray>::cast(receiver);
@@ -240,14 +241,14 @@ V8_WARN_UNUSED_RESULT bool TryFastArrayFill(
CHECK(DoubleToUint32IfEqualToSelf(end_index, &end));
ElementsAccessor* accessor = array->GetElementsAccessor();
- accessor->Fill(array, value, start, end);
- return true;
+ RETURN_ON_EXCEPTION_VALUE(isolate, accessor->Fill(array, value, start, end),
+ Nothing<bool>());
+ return Just(true);
}
} // namespace
BUILTIN(ArrayPrototypeFill) {
HandleScope scope(isolate);
-
if (isolate->debug_execution_mode() == DebugInfo::kSideEffects) {
if (!isolate->debug()->PerformSideEffectCheckForObject(args.receiver())) {
return ReadOnlyRoots(isolate).exception();
@@ -292,10 +293,12 @@ BUILTIN(ArrayPrototypeFill) {
Handle<Object> value = args.atOrUndefined(isolate, 1);
- if (TryFastArrayFill(isolate, &args, receiver, value, start_index,
- end_index)) {
- return *receiver;
- }
+ bool success;
+ MAYBE_ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, success,
+ TryFastArrayFill(isolate, &args, receiver, value, start_index,
+ end_index));
+ if (success) return *receiver;
return GenericArrayFill(isolate, receiver, value, start_index, end_index);
}
@@ -385,7 +388,9 @@ BUILTIN(ArrayPush) {
}
ElementsAccessor* accessor = array->GetElementsAccessor();
- uint32_t new_length = accessor->Push(array, &args, to_add);
+ uint32_t new_length;
+ MAYBE_ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, new_length, accessor->Push(array, &args, to_add));
return *isolate->factory()->NewNumberFromUint((new_length));
}
@@ -468,7 +473,8 @@ BUILTIN(ArrayPop) {
Handle<Object> result;
if (IsJSArrayFastElementMovingAllowed(isolate, JSArray::cast(*receiver))) {
// Fast Elements Path
- result = array->GetElementsAccessor()->Pop(array);
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, result, array->GetElementsAccessor()->Pop(array));
} else {
// Use Slow Lookup otherwise
uint32_t new_length = len - 1;
@@ -483,7 +489,9 @@ BUILTIN(ArrayPop) {
isolate->factory()->length_string(),
Object::TypeOf(isolate, array), array));
}
- JSArray::SetLength(array, new_length);
+ bool set_len_ok;
+ MAYBE_ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, set_len_ok, JSArray::SetLength(array, new_length));
}
return *result;
@@ -595,7 +603,8 @@ BUILTIN(ArrayShift) {
if (CanUseFastArrayShift(isolate, receiver)) {
Handle<JSArray> array = Handle<JSArray>::cast(receiver);
- return *array->GetElementsAccessor()->Shift(array);
+ RETURN_RESULT_OR_FAILURE(isolate,
+ array->GetElementsAccessor()->Shift(array));
}
return GenericArrayShift(isolate, receiver, length);
@@ -623,7 +632,9 @@ BUILTIN(ArrayUnshift) {
DCHECK(!JSArray::HasReadOnlyLength(array));
ElementsAccessor* accessor = array->GetElementsAccessor();
- int new_length = accessor->Unshift(array, &args, to_add);
+ uint32_t new_length;
+ MAYBE_ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, new_length, accessor->Unshift(array, &args, to_add));
return Smi::FromInt(new_length);
}
@@ -742,7 +753,7 @@ class ArrayConcatVisitor {
array, fast_elements() ? HOLEY_ELEMENTS : DICTIONARY_ELEMENTS);
array->set_length(*length);
array->set_elements(*storage_fixed_array());
- array->synchronized_set_map(*map);
+ array->set_map(*map, kReleaseStore);
return array;
}
@@ -880,9 +891,11 @@ uint32_t EstimateElementCount(Isolate* isolate, Handle<JSArray> array) {
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
TYPED_ARRAYS(TYPED_ARRAY_CASE)
-#undef TYPED_ARRAY_CASE
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
// External arrays are always dense.
return length;
+
+#undef TYPED_ARRAY_CASE
case NO_ELEMENTS:
return 0;
case FAST_SLOPPY_ARGUMENTS_ELEMENTS:
@@ -956,9 +969,7 @@ void CollectElementIndices(Isolate* isolate, Handle<JSObject> object,
}
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
- TYPED_ARRAYS(TYPED_ARRAY_CASE)
-#undef TYPED_ARRAY_CASE
- {
+ TYPED_ARRAYS(TYPED_ARRAY_CASE) {
size_t length = Handle<JSTypedArray>::cast(object)->length();
if (range <= length) {
length = range;
@@ -974,6 +985,11 @@ void CollectElementIndices(Isolate* isolate, Handle<JSObject> object,
if (length == range) return; // All indices accounted for already.
break;
}
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ // TODO(v8:11111): Support RAB / GSAB.
+ UNREACHABLE();
+
+#undef TYPED_ARRAY_CASE
case FAST_SLOPPY_ARGUMENTS_ELEMENTS:
case SLOW_SLOPPY_ARGUMENTS_ELEMENTS: {
DisallowGarbageCollection no_gc;
@@ -1199,8 +1215,11 @@ bool IterateElements(Isolate* isolate, Handle<JSReceiver> receiver,
break;
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
TYPED_ARRAYS(TYPED_ARRAY_CASE)
-#undef TYPED_ARRAY_CASE
return IterateElementsSlow(isolate, receiver, length, visitor);
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ // TODO(v8:11111): Support RAB / GSAB.
+ UNREACHABLE();
+#undef TYPED_ARRAY_CASE
case FAST_STRING_WRAPPER_ELEMENTS:
case SLOW_STRING_WRAPPER_ELEMENTS:
// |array| is guaranteed to be an array or typed array.
diff --git a/deps/v8/src/builtins/builtins-arraybuffer.cc b/deps/v8/src/builtins/builtins-arraybuffer.cc
index 0f5f905186..2d07847d57 100644
--- a/deps/v8/src/builtins/builtins-arraybuffer.cc
+++ b/deps/v8/src/builtins/builtins-arraybuffer.cc
@@ -23,17 +23,43 @@ namespace internal {
name)); \
}
+#define CHECK_RESIZABLE(expected, name, method) \
+ if (name->is_resizable() != expected) { \
+ THROW_NEW_ERROR_RETURN_FAILURE( \
+ isolate, \
+ NewTypeError(MessageTemplate::kIncompatibleMethodReceiver, \
+ isolate->factory()->NewStringFromAsciiChecked(method), \
+ name)); \
+ }
+
// -----------------------------------------------------------------------------
// ES#sec-arraybuffer-objects
namespace {
+bool RoundUpToPageSize(size_t byte_length, size_t page_size,
+ size_t max_allowed_byte_length, size_t* pages) {
+ size_t bytes_wanted = RoundUp(byte_length, page_size);
+ if (bytes_wanted > max_allowed_byte_length) {
+ return false;
+ }
+ *pages = bytes_wanted / page_size;
+ return true;
+}
+
Object ConstructBuffer(Isolate* isolate, Handle<JSFunction> target,
Handle<JSReceiver> new_target, Handle<Object> length,
- InitializedFlag initialized) {
- SharedFlag shared = (*target != target->native_context().array_buffer_fun())
- ? SharedFlag::kShared
- : SharedFlag::kNotShared;
+ Handle<Object> max_length, InitializedFlag initialized) {
+ SharedFlag shared =
+ (*target != target->native_context().array_buffer_fun() &&
+ *target != target->native_context().resizable_array_buffer_fun())
+ ? SharedFlag::kShared
+ : SharedFlag::kNotShared;
+ ResizableFlag resizable =
+ (*target == target->native_context().resizable_array_buffer_fun() ||
+ *target == target->native_context().growable_shared_array_buffer_fun())
+ ? ResizableFlag::kResizable
+ : ResizableFlag::kNotResizable;
Handle<JSObject> result;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, result,
@@ -42,9 +68,10 @@ Object ConstructBuffer(Isolate* isolate, Handle<JSFunction> target,
// Ensure that all fields are initialized because BackingStore::Allocate is
// allowed to GC. Note that we cannot move the allocation of the ArrayBuffer
// after BackingStore::Allocate because of the spec.
- array_buffer->Setup(shared, nullptr);
+ array_buffer->Setup(shared, resizable, nullptr);
size_t byte_length;
+ size_t max_byte_length = 0;
if (!TryNumberToSize(*length, &byte_length) ||
byte_length > JSArrayBuffer::kMaxByteLength) {
// ToNumber failed.
@@ -52,8 +79,46 @@ Object ConstructBuffer(Isolate* isolate, Handle<JSFunction> target,
isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferLength));
}
- auto backing_store =
- BackingStore::Allocate(isolate, byte_length, shared, initialized);
+ std::unique_ptr<BackingStore> backing_store;
+ if (resizable == ResizableFlag::kNotResizable) {
+ backing_store =
+ BackingStore::Allocate(isolate, byte_length, shared, initialized);
+ } else {
+ Handle<Object> number_max_length;
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, number_max_length,
+ Object::ToInteger(isolate, max_length));
+
+ if (!TryNumberToSize(*number_max_length, &max_byte_length)) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate,
+ NewRangeError(MessageTemplate::kInvalidArrayBufferMaxLength));
+ }
+ if (byte_length > max_byte_length) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate,
+ NewRangeError(MessageTemplate::kInvalidArrayBufferMaxLength));
+ }
+
+ size_t page_size = AllocatePageSize();
+ size_t initial_pages;
+ if (!RoundUpToPageSize(byte_length, page_size,
+ JSArrayBuffer::kMaxByteLength, &initial_pages)) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferLength));
+ }
+
+ size_t max_pages;
+ if (!RoundUpToPageSize(max_byte_length, page_size,
+ JSArrayBuffer::kMaxByteLength, &max_pages)) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate,
+ NewRangeError(MessageTemplate::kInvalidArrayBufferMaxLength));
+ }
+ constexpr bool kIsWasmMemory = false;
+ backing_store = BackingStore::TryAllocateAndPartiallyCommitMemory(
+ isolate, byte_length, page_size, initial_pages, max_pages,
+ kIsWasmMemory, shared);
+ }
if (!backing_store) {
// Allocation of backing store failed.
THROW_NEW_ERROR_RETURN_FAILURE(
@@ -61,6 +126,7 @@ Object ConstructBuffer(Isolate* isolate, Handle<JSFunction> target,
}
array_buffer->Attach(std::move(backing_store));
+ array_buffer->set_max_byte_length(max_byte_length);
return *array_buffer;
}
@@ -71,7 +137,10 @@ BUILTIN(ArrayBufferConstructor) {
HandleScope scope(isolate);
Handle<JSFunction> target = args.target();
DCHECK(*target == target->native_context().array_buffer_fun() ||
- *target == target->native_context().shared_array_buffer_fun());
+ *target == target->native_context().shared_array_buffer_fun() ||
+ *target == target->native_context().resizable_array_buffer_fun() ||
+ *target ==
+ target->native_context().growable_shared_array_buffer_fun());
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
@@ -87,10 +156,11 @@ BUILTIN(ArrayBufferConstructor) {
if (number_length->Number() < 0.0) {
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferLength));
- }
+ }
- return ConstructBuffer(isolate, target, new_target, number_length,
- InitializedFlag::kZeroInitialized);
+ Handle<Object> max_length = args.atOrUndefined(isolate, 2);
+ return ConstructBuffer(isolate, target, new_target, number_length, max_length,
+ InitializedFlag::kZeroInitialized);
}
// This is a helper to construct an ArrayBuffer with uinitialized memory.
@@ -101,7 +171,7 @@ BUILTIN(ArrayBufferConstructor_DoNotInitialize) {
Handle<JSFunction> target(isolate->native_context()->array_buffer_fun(),
isolate);
Handle<Object> length = args.atOrUndefined(isolate, 1);
- return ConstructBuffer(isolate, target, target, length,
+ return ConstructBuffer(isolate, target, target, length, Handle<Object>(),
InitializedFlag::kUninitialized);
}
@@ -119,6 +189,8 @@ static Object SliceHelper(BuiltinArguments args, Isolate* isolate,
// * [SAB] If IsSharedArrayBuffer(O) is false, throw a TypeError exception.
CHECK_SHARED(is_shared, array_buffer, kMethodName);
+ CHECK_RESIZABLE(false, array_buffer, kMethodName);
+
// * [AB] If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
if (!is_shared && array_buffer->was_detached()) {
THROW_NEW_ERROR_RETURN_FAILURE(
@@ -280,5 +352,158 @@ BUILTIN(ArrayBufferPrototypeSlice) {
return SliceHelper(args, isolate, kMethodName, false);
}
+static Object ResizeHelper(BuiltinArguments args, Isolate* isolate,
+ const char* kMethodName, bool is_shared) {
+ HandleScope scope(isolate);
+
+ // 1 Let O be the this value.
+ // 2. Perform ? RequireInternalSlot(O, [[ArrayBufferMaxByteLength]]).
+ CHECK_RECEIVER(JSArrayBuffer, array_buffer, kMethodName);
+ CHECK_RESIZABLE(true, array_buffer, kMethodName);
+
+ // [RAB] 3. If IsSharedArrayBuffer(O) is true, throw a *TypeError* exception
+ // [GSAB] 3. If IsSharedArrayBuffer(O) is false, throw a *TypeError* exception
+ CHECK_SHARED(is_shared, array_buffer, kMethodName);
+
+ // Let newByteLength to ? ToIntegerOrInfinity(newLength).
+ Handle<Object> new_length = args.at(1);
+ Handle<Object> number_new_byte_length;
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, number_new_byte_length,
+ Object::ToInteger(isolate, new_length));
+
+ // [RAB] If IsDetachedBuffer(O) is true, throw a TypeError exception.
+ if (!is_shared && array_buffer->was_detached()) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate, NewTypeError(MessageTemplate::kDetachedOperation,
+ isolate->factory()->NewStringFromAsciiChecked(
+ kMethodName)));
+ }
+
+ // [RAB] If newByteLength < 0 or newByteLength >
+ // O.[[ArrayBufferMaxByteLength]], throw a RangeError exception.
+
+ // [GSAB] If newByteLength < currentByteLength or newByteLength >
+ // O.[[ArrayBufferMaxByteLength]], throw a RangeError exception.
+ size_t new_byte_length;
+ if (!TryNumberToSize(*number_new_byte_length, &new_byte_length)) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferResizeLength,
+ isolate->factory()->NewStringFromAsciiChecked(
+ kMethodName)));
+ }
+
+ if (is_shared && new_byte_length < array_buffer->byte_length()) {
+ // GrowableSharedArrayBuffer is only allowed to grow.
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferResizeLength,
+ isolate->factory()->NewStringFromAsciiChecked(
+ kMethodName)));
+ }
+
+ if (new_byte_length > array_buffer->max_byte_length()) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferResizeLength,
+ isolate->factory()->NewStringFromAsciiChecked(
+ kMethodName)));
+ }
+
+ size_t page_size = AllocatePageSize();
+ size_t new_committed_pages;
+ bool round_return_value =
+ RoundUpToPageSize(new_byte_length, page_size,
+ JSArrayBuffer::kMaxByteLength, &new_committed_pages);
+ CHECK(round_return_value);
+
+ // [RAB] Let hostHandled be ? HostResizeArrayBuffer(O, newByteLength).
+ // [GSAB] Let hostHandled be ? HostGrowArrayBuffer(O, newByteLength).
+ // If hostHandled is handled, return undefined.
+
+ // TODO(v8:11111): Wasm integration.
+
+ if (!is_shared) {
+ // [RAB] Let oldBlock be O.[[ArrayBufferData]].
+ // [RAB] Let newBlock be ? CreateByteDataBlock(newByteLength).
+ // [RAB] Let copyLength be min(newByteLength, O.[[ArrayBufferByteLength]]).
+ // [RAB] Perform CopyDataBlockBytes(newBlock, 0, oldBlock, 0, copyLength).
+ // [RAB] NOTE: Neither creation of the new Data Block nor copying from the
+ // old Data Block are observable. Implementations reserve the right to
+ // implement this method as in-place growth or shrinkage.
+ if (array_buffer->GetBackingStore()->ResizeInPlace(
+ isolate, new_byte_length, new_committed_pages * page_size) !=
+ BackingStore::ResizeOrGrowResult::kSuccess) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate, NewRangeError(MessageTemplate::kOutOfMemory,
+ isolate->factory()->NewStringFromAsciiChecked(
+ kMethodName)));
+ }
+ // [RAB] Set O.[[ArrayBufferByteLength]] to newLength.
+ array_buffer->set_byte_length(new_byte_length);
+ } else {
+ // [GSAB] (Detailed description of the algorithm omitted.)
+ auto result = array_buffer->GetBackingStore()->GrowInPlace(
+ isolate, new_byte_length, new_committed_pages * page_size);
+ if (result == BackingStore::ResizeOrGrowResult::kFailure) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate, NewRangeError(MessageTemplate::kOutOfMemory,
+ isolate->factory()->NewStringFromAsciiChecked(
+ kMethodName)));
+ }
+ if (result == BackingStore::ResizeOrGrowResult::kRace) {
+ THROW_NEW_ERROR_RETURN_FAILURE(
+ isolate,
+ NewRangeError(
+ MessageTemplate::kInvalidArrayBufferResizeLength,
+ isolate->factory()->NewStringFromAsciiChecked(kMethodName)));
+ }
+ // Invariant: byte_length for a GSAB is 0 (it needs to be read from the
+ // BackingStore).
+ CHECK_EQ(0, array_buffer->byte_length());
+ }
+ return ReadOnlyRoots(isolate).undefined_value();
+}
+
+// ES #sec-get-growablesharedarraybuffer.prototype.bytelength
+// get GrowableSharedArrayBuffer.prototype.byteLength
+BUILTIN(GrowableSharedArrayBufferPrototypeGetByteLength) {
+ const char* const kMethodName =
+ "get GrowableSharedArrayBuffer.prototype.byteLength";
+ HandleScope scope(isolate);
+
+ // 1. Let O be the this value.
+ // 2. Perform ? RequireInternalSlot(O, [[ArrayBufferMaxLength]]).
+ CHECK_RECEIVER(JSArrayBuffer, array_buffer, kMethodName);
+ CHECK_RESIZABLE(true, array_buffer, kMethodName);
+ // 3. If IsSharedArrayBuffer(O) is false, throw a TypeError exception.
+ CHECK_SHARED(true, array_buffer, kMethodName);
+
+ // 4. Let length be ArrayBufferByteLength(O, SeqCst).
+
+ // Invariant: byte_length for GSAB is 0 (it needs to be read from the
+ // BackingStore).
+ DCHECK_EQ(0, array_buffer->byte_length());
+
+ size_t byte_length =
+ array_buffer->GetBackingStore()->byte_length(std::memory_order_seq_cst);
+
+ // 5. Return length.
+ return *isolate->factory()->NewNumberFromSize(byte_length);
+}
+
+// ES #sec-resizablearraybuffer.prototype.resize
+// ResizableArrayBuffer.prototype.resize(new_size))
+BUILTIN(ResizableArrayBufferPrototypeResize) {
+ const char* const kMethodName = "ResizableArrayBuffer.prototype.resize";
+ constexpr bool kIsShared = false;
+ return ResizeHelper(args, isolate, kMethodName, kIsShared);
+}
+
+// ES #sec-growablesharedarraybuffer.prototype.grow
+// GrowableSharedArrayBuffer.prototype.grow(new_size))
+BUILTIN(GrowableSharedArrayBufferPrototypeGrow) {
+ const char* const kMethodName = "GrowableSharedArrayBuffer.prototype.grow";
+ constexpr bool kIsShared = true;
+ return ResizeHelper(args, isolate, kMethodName, kIsShared);
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/builtins/builtins-call-gen.cc b/deps/v8/src/builtins/builtins-call-gen.cc
index 664f57aadb..89bf77d0b0 100644
--- a/deps/v8/src/builtins/builtins-call-gen.cc
+++ b/deps/v8/src/builtins/builtins-call-gen.cc
@@ -64,38 +64,45 @@ void Builtins::Generate_CallFunctionForwardVarargs(MacroAssembler* masm) {
masm->isolate()->builtins()->CallFunction());
}
+// TODO(cbruni): Try reusing code between builtin versions to avoid binary
+// overhead.
+TF_BUILTIN(Call_ReceiverIsNullOrUndefined_Baseline_Compact,
+ CallOrConstructBuiltinsAssembler) {
+ auto receiver = UndefinedConstant();
+ CallReceiver<Descriptor>(Builtins::kCall_ReceiverIsNullOrUndefined, receiver);
+}
+
TF_BUILTIN(Call_ReceiverIsNullOrUndefined_Baseline,
CallOrConstructBuiltinsAssembler) {
- auto target = Parameter<Object>(Descriptor::kFunction);
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
- auto context = LoadContextFromBaseline();
- auto feedback_vector = LoadFeedbackVectorFromBaseline();
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
- TailCallBuiltin(Builtins::kCall_ReceiverIsNullOrUndefined, context, target,
- argc);
+ auto receiver = UndefinedConstant();
+ CallReceiver<Descriptor>(Builtins::kCall_ReceiverIsNullOrUndefined, argc,
+ slot, receiver);
+}
+
+TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_Baseline_Compact,
+ CallOrConstructBuiltinsAssembler) {
+ CallReceiver<Descriptor>(Builtins::kCall_ReceiverIsNotNullOrUndefined);
}
TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_Baseline,
CallOrConstructBuiltinsAssembler) {
- auto target = Parameter<Object>(Descriptor::kFunction);
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
- auto context = LoadContextFromBaseline();
- auto feedback_vector = LoadFeedbackVectorFromBaseline();
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
- TailCallBuiltin(Builtins::kCall_ReceiverIsNotNullOrUndefined, context, target,
- argc);
+ CallReceiver<Descriptor>(Builtins::kCall_ReceiverIsNotNullOrUndefined, argc,
+ slot);
+}
+
+TF_BUILTIN(Call_ReceiverIsAny_Baseline_Compact,
+ CallOrConstructBuiltinsAssembler) {
+ CallReceiver<Descriptor>(Builtins::kCall_ReceiverIsAny);
}
TF_BUILTIN(Call_ReceiverIsAny_Baseline, CallOrConstructBuiltinsAssembler) {
- auto target = Parameter<Object>(Descriptor::kFunction);
auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
- auto context = LoadContextFromBaseline();
- auto feedback_vector = LoadFeedbackVectorFromBaseline();
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
- TailCallBuiltin(Builtins::kCall_ReceiverIsAny, context, target, argc);
+ CallReceiver<Descriptor>(Builtins::kCall_ReceiverIsAny, argc, slot);
}
TF_BUILTIN(Call_ReceiverIsNullOrUndefined_WithFeedback,
@@ -105,7 +112,9 @@ TF_BUILTIN(Call_ReceiverIsNullOrUndefined_WithFeedback,
auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
+ auto receiver = Parameter<Object>(Descriptor::kReceiver);
+ CollectCallFeedback(
+ target, [=] { return receiver; }, context, feedback_vector, slot);
TailCallBuiltin(Builtins::kCall_ReceiverIsNullOrUndefined, context, target,
argc);
}
@@ -117,7 +126,9 @@ TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_WithFeedback,
auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
+ auto receiver = Parameter<Object>(Descriptor::kReceiver);
+ CollectCallFeedback(
+ target, [=] { return receiver; }, context, feedback_vector, slot);
TailCallBuiltin(Builtins::kCall_ReceiverIsNotNullOrUndefined, context, target,
argc);
}
@@ -128,7 +139,9 @@ TF_BUILTIN(Call_ReceiverIsAny_WithFeedback, CallOrConstructBuiltinsAssembler) {
auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
+ auto receiver = Parameter<Object>(Descriptor::kReceiver);
+ CollectCallFeedback(
+ target, [=] { return receiver; }, context, feedback_vector, slot);
TailCallBuiltin(Builtins::kCall_ReceiverIsAny, context, target, argc);
}
@@ -449,6 +462,43 @@ void CallOrConstructBuiltinsAssembler::CallOrConstructWithSpread(
}
}
+template <class Descriptor>
+void CallOrConstructBuiltinsAssembler::CallReceiver(
+ Builtins::Name id, base::Optional<TNode<Object>> receiver) {
+ static_assert(std::is_same<Descriptor,
+ CallTrampoline_Baseline_CompactDescriptor>::value,
+ "Incompatible Descriptor");
+ auto bitfield = UncheckedParameter<Word32T>(Descriptor::kBitField);
+ TNode<Int32T> argc =
+ Signed(DecodeWord32<
+ CallTrampoline_Baseline_CompactDescriptor::ArgumentCountField>(
+ bitfield));
+ TNode<UintPtrT> slot = ChangeUint32ToWord(
+ DecodeWord32<CallTrampoline_Baseline_CompactDescriptor::SlotField>(
+ bitfield));
+ CallReceiver<Descriptor>(id, argc, slot, receiver);
+}
+
+template <class Descriptor>
+void CallOrConstructBuiltinsAssembler::CallReceiver(
+ Builtins::Name id, TNode<Int32T> argc, TNode<UintPtrT> slot,
+ base::Optional<TNode<Object>> maybe_receiver) {
+ auto target = Parameter<Object>(Descriptor::kFunction);
+ auto context = LoadContextFromBaseline();
+ auto feedback_vector = LoadFeedbackVectorFromBaseline();
+ LazyNode<Object> receiver = [=] {
+ if (maybe_receiver) {
+ return *maybe_receiver;
+ } else {
+ CodeStubArguments args(this, argc);
+ return args.GetReceiver();
+ }
+ };
+
+ CollectCallFeedback(target, receiver, context, feedback_vector, slot);
+ TailCallBuiltin(id, context, target, argc);
+}
+
TF_BUILTIN(CallWithArrayLike, CallOrConstructBuiltinsAssembler) {
auto target = Parameter<Object>(Descriptor::kTarget);
base::Optional<TNode<Object>> new_target = base::nullopt;
@@ -464,7 +514,9 @@ TF_BUILTIN(CallWithArrayLike_WithFeedback, CallOrConstructBuiltinsAssembler) {
auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
+ auto receiver = Parameter<Object>(Descriptor::kReceiver);
+ CollectCallFeedback(
+ target, [=] { return receiver; }, context, feedback_vector, slot);
CallOrConstructWithArrayLike(target, new_target, arguments_list, context);
}
@@ -485,7 +537,10 @@ TF_BUILTIN(CallWithSpread_Baseline, CallOrConstructBuiltinsAssembler) {
auto context = LoadContextFromBaseline();
auto feedback_vector = LoadFeedbackVectorFromBaseline();
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
+ CodeStubArguments args(this, args_count);
+ CollectCallFeedback(
+ target, [=] { return args.GetReceiver(); }, context, feedback_vector,
+ slot);
CallOrConstructWithSpread(target, new_target, spread, args_count, context);
}
@@ -497,7 +552,9 @@ TF_BUILTIN(CallWithSpread_WithFeedback, CallOrConstructBuiltinsAssembler) {
auto context = Parameter<Context>(Descriptor::kContext);
auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
- CollectCallFeedback(target, context, feedback_vector, slot);
+ auto receiver = Parameter<Object>(Descriptor::kReceiver);
+ CollectCallFeedback(
+ target, [=] { return receiver; }, context, feedback_vector, slot);
CallOrConstructWithSpread(target, new_target, spread, args_count, context);
}
diff --git a/deps/v8/src/builtins/builtins-call-gen.h b/deps/v8/src/builtins/builtins-call-gen.h
index c938662d5e..ff4d998ff3 100644
--- a/deps/v8/src/builtins/builtins-call-gen.h
+++ b/deps/v8/src/builtins/builtins-call-gen.h
@@ -30,6 +30,13 @@ class CallOrConstructBuiltinsAssembler : public CodeStubAssembler {
TNode<Object> spread, TNode<Int32T> args_count,
TNode<Context> context);
+ template <class Descriptor>
+ void CallReceiver(Builtins::Name id,
+ base::Optional<TNode<Object>> = base::nullopt);
+ template <class Descriptor>
+ void CallReceiver(Builtins::Name id, TNode<Int32T> argc, TNode<UintPtrT> slot,
+ base::Optional<TNode<Object>> = base::nullopt);
+
enum class CallFunctionTemplateMode : uint8_t {
kCheckAccess,
kCheckCompatibleReceiver,
diff --git a/deps/v8/src/builtins/builtins-debug-gen.cc b/deps/v8/src/builtins/builtins-debug-gen.cc
deleted file mode 100644
index 9d47cf1600..0000000000
--- a/deps/v8/src/builtins/builtins-debug-gen.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2016 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.
-
-#include "src/builtins/builtins-utils.h"
-#include "src/builtins/builtins.h"
-#include "src/debug/debug.h"
-#include "src/objects/objects-inl.h"
-
-namespace v8 {
-namespace internal {
-
-void Builtins::Generate_FrameDropperTrampoline(MacroAssembler* masm) {
- DebugCodegen::GenerateFrameDropperTrampoline(masm);
-}
-
-void Builtins::Generate_HandleDebuggerStatement(MacroAssembler* masm) {
- DebugCodegen::GenerateHandleDebuggerStatement(masm);
-}
-
-} // namespace internal
-} // namespace v8
diff --git a/deps/v8/src/builtins/builtins-definitions.h b/deps/v8/src/builtins/builtins-definitions.h
index b0e608418e..78255a30e9 100644
--- a/deps/v8/src/builtins/builtins-definitions.h
+++ b/deps/v8/src/builtins/builtins-definitions.h
@@ -50,8 +50,13 @@ namespace internal {
ASM(Call_ReceiverIsNullOrUndefined, CallTrampoline) \
ASM(Call_ReceiverIsNotNullOrUndefined, CallTrampoline) \
ASM(Call_ReceiverIsAny, CallTrampoline) \
+ TFC(Call_ReceiverIsNullOrUndefined_Baseline_Compact, \
+ CallTrampoline_Baseline_Compact) \
TFC(Call_ReceiverIsNullOrUndefined_Baseline, CallTrampoline_Baseline) \
+ TFC(Call_ReceiverIsNotNullOrUndefined_Baseline_Compact, \
+ CallTrampoline_Baseline_Compact) \
TFC(Call_ReceiverIsNotNullOrUndefined_Baseline, CallTrampoline_Baseline) \
+ TFC(Call_ReceiverIsAny_Baseline_Compact, CallTrampoline_Baseline_Compact) \
TFC(Call_ReceiverIsAny_Baseline, CallTrampoline_Baseline) \
TFC(Call_ReceiverIsNullOrUndefined_WithFeedback, \
CallTrampoline_WithFeedback) \
@@ -133,13 +138,13 @@ namespace internal {
InterpreterPushArgsThenConstruct) \
ASM(InterpreterPushArgsThenConstructWithFinalSpread, \
InterpreterPushArgsThenConstruct) \
- ASM(InterpreterEnterBytecodeAdvance, Dummy) \
- ASM(InterpreterEnterBytecodeDispatch, Dummy) \
+ ASM(InterpreterEnterAtBytecode, Dummy) \
+ ASM(InterpreterEnterAtNextBytecode, Dummy) \
ASM(InterpreterOnStackReplacement, ContextOnly) \
\
/* Baseline Compiler */ \
ASM(BaselineOutOfLinePrologue, BaselineOutOfLinePrologue) \
- ASM(BaselineOnStackReplacement, ContextOnly) \
+ ASM(BaselineOnStackReplacement, Void) \
ASM(BaselineLeaveFrame, BaselineLeaveFrame) \
ASM(BaselineEnterAtBytecode, Void) \
ASM(BaselineEnterAtNextBytecode, Void) \
@@ -200,8 +205,6 @@ namespace internal {
\
/* Debugger */ \
TFJ(DebugBreakTrampoline, kDontAdaptArgumentsSentinel) \
- ASM(FrameDropperTrampoline, FrameDropperTrampoline) \
- ASM(HandleDebuggerStatement, ContextOnly) \
\
/* Type conversions */ \
TFC(ToNumber, TypeConversion) \
@@ -770,6 +773,11 @@ namespace internal {
ASM(RegExpInterpreterTrampoline, CCall) \
ASM(RegExpExperimentalTrampoline, CCall) \
\
+ /* ResizableArrayBuffer & GrowableSharedArrayBuffer */ \
+ CPP(ResizableArrayBufferPrototypeResize) \
+ CPP(GrowableSharedArrayBufferPrototypeGrow) \
+ CPP(GrowableSharedArrayBufferPrototypeGetByteLength) \
+ \
/* Set */ \
TFJ(SetConstructor, kDontAdaptArgumentsSentinel) \
TFJ(SetPrototypeHas, 1, kReceiver, kKey) \
@@ -863,6 +871,7 @@ namespace internal {
IF_WASM(ASM, GenericJSToWasmWrapper, Dummy) \
IF_WASM(ASM, WasmCompileLazy, Dummy) \
IF_WASM(ASM, WasmDebugBreak, Dummy) \
+ IF_WASM(ASM, WasmOnStackReplace, Dummy) \
IF_WASM(TFC, WasmFloat32ToNumber, WasmFloat32ToNumber) \
IF_WASM(TFC, WasmFloat64ToNumber, WasmFloat64ToNumber) \
IF_WASM(TFC, WasmI32AtomicWait32, WasmI32AtomicWait32) \
@@ -983,6 +992,7 @@ namespace internal {
CPP(CollatorPrototypeCompare) \
/* ecma402 #sec-intl.collator.supportedlocalesof */ \
CPP(CollatorSupportedLocalesOf) \
+ /* ecma402 #sec-intl.collator.prototype.resolvedoptions */ \
CPP(CollatorPrototypeResolvedOptions) \
/* ecma402 #sup-date.prototype.tolocaledatestring */ \
CPP(DatePrototypeToLocaleDateString) \
@@ -1028,21 +1038,46 @@ namespace internal {
CPP(ListFormatSupportedLocalesOf) \
/* ecma402 #sec-intl-locale-constructor */ \
CPP(LocaleConstructor) \
+ /* ecma402 #sec-Intl.Locale.prototype.baseName */ \
CPP(LocalePrototypeBaseName) \
+ /* ecma402 #sec-Intl.Locale.prototype.calendar */ \
CPP(LocalePrototypeCalendar) \
+ /* ecma402 #sec-Intl.Locale.prototype.calendars */ \
+ CPP(LocalePrototypeCalendars) \
+ /* ecma402 #sec-Intl.Locale.prototype.caseFirst */ \
CPP(LocalePrototypeCaseFirst) \
+ /* ecma402 #sec-Intl.Locale.prototype.collation */ \
CPP(LocalePrototypeCollation) \
+ /* ecma402 #sec-Intl.Locale.prototype.collations */ \
+ CPP(LocalePrototypeCollations) \
+ /* ecma402 #sec-Intl.Locale.prototype.hourCycle */ \
CPP(LocalePrototypeHourCycle) \
+ /* ecma402 #sec-Intl.Locale.prototype.hourCycles */ \
+ CPP(LocalePrototypeHourCycles) \
+ /* ecma402 #sec-Intl.Locale.prototype.language */ \
CPP(LocalePrototypeLanguage) \
/* ecma402 #sec-Intl.Locale.prototype.maximize */ \
CPP(LocalePrototypeMaximize) \
/* ecma402 #sec-Intl.Locale.prototype.minimize */ \
CPP(LocalePrototypeMinimize) \
+ /* ecma402 #sec-Intl.Locale.prototype.numeric */ \
CPP(LocalePrototypeNumeric) \
+ /* ecma402 #sec-Intl.Locale.prototype.numberingSystem */ \
CPP(LocalePrototypeNumberingSystem) \
+ /* ecma402 #sec-Intl.Locale.prototype.numberingSystems */ \
+ CPP(LocalePrototypeNumberingSystems) \
+ /* ecma402 #sec-Intl.Locale.prototype.region */ \
CPP(LocalePrototypeRegion) \
+ /* ecma402 #sec-Intl.Locale.prototype.script */ \
CPP(LocalePrototypeScript) \
+ /* ecma402 #sec-Intl.Locale.prototype.textInfo */ \
+ CPP(LocalePrototypeTextInfo) \
+ /* ecma402 #sec-Intl.Locale.prototype.timezones */ \
+ CPP(LocalePrototypeTimeZones) \
+ /* ecma402 #sec-Intl.Locale.prototype.toString */ \
CPP(LocalePrototypeToString) \
+ /* ecma402 #sec-Intl.Locale.prototype.weekInfo */ \
+ CPP(LocalePrototypeWeekInfo) \
/* ecma402 #sec-intl.numberformat */ \
CPP(NumberFormatConstructor) \
/* ecma402 #sec-number-format-functions */ \
@@ -1057,6 +1092,7 @@ namespace internal {
CPP(NumberFormatSupportedLocalesOf) \
/* ecma402 #sec-intl.pluralrules */ \
CPP(PluralRulesConstructor) \
+ /* ecma402 #sec-intl.pluralrules.prototype.resolvedoptions */ \
CPP(PluralRulesPrototypeResolvedOptions) \
/* ecma402 #sec-intl.pluralrules.prototype.select */ \
CPP(PluralRulesPrototypeSelect) \
diff --git a/deps/v8/src/builtins/builtins-error.cc b/deps/v8/src/builtins/builtins-error.cc
index 840298eacb..44dce9224a 100644
--- a/deps/v8/src/builtins/builtins-error.cc
+++ b/deps/v8/src/builtins/builtins-error.cc
@@ -18,9 +18,12 @@ namespace internal {
// ES6 section 19.5.1.1 Error ( message )
BUILTIN(ErrorConstructor) {
HandleScope scope(isolate);
+ Handle<Object> options = FLAG_harmony_error_cause
+ ? args.atOrUndefined(isolate, 2)
+ : isolate->factory()->undefined_value();
RETURN_RESULT_OR_FAILURE(
isolate, ErrorUtils::Construct(isolate, args.target(), args.new_target(),
- args.atOrUndefined(isolate, 1)));
+ args.atOrUndefined(isolate, 1), options));
}
// static
diff --git a/deps/v8/src/builtins/builtins-generator-gen.cc b/deps/v8/src/builtins/builtins-generator-gen.cc
index 2e9d7e24e4..b2d6e223e1 100644
--- a/deps/v8/src/builtins/builtins-generator-gen.cc
+++ b/deps/v8/src/builtins/builtins-generator-gen.cc
@@ -205,7 +205,7 @@ TF_BUILTIN(GeneratorPrototypeThrow, GeneratorBuiltinsAssembler) {
// TODO(cbruni): Merge with corresponding bytecode handler.
TF_BUILTIN(SuspendGeneratorBaseline, GeneratorBuiltinsAssembler) {
auto generator = Parameter<JSGeneratorObject>(Descriptor::kGeneratorObject);
- auto context = Parameter<Context>(Descriptor::kContext);
+ auto context = LoadContextFromBaseline();
StoreJSGeneratorObjectContext(generator, context);
auto suspend_id = SmiTag(UncheckedParameter<IntPtrT>(Descriptor::kSuspendId));
StoreJSGeneratorObjectContinuation(generator, suspend_id);
diff --git a/deps/v8/src/builtins/builtins-handler-gen.cc b/deps/v8/src/builtins/builtins-handler-gen.cc
index 3cbd626b8e..19a31b81a7 100644
--- a/deps/v8/src/builtins/builtins-handler-gen.cc
+++ b/deps/v8/src/builtins/builtins-handler-gen.cc
@@ -183,28 +183,39 @@ TF_BUILTIN(ElementsTransitionAndStore_NoTransitionHandleCOW,
// All elements kinds handled by EmitElementStore. Specifically, this includes
// fast elements and fixed typed array elements.
-#define ELEMENTS_KINDS(V) \
- V(PACKED_SMI_ELEMENTS) \
- V(HOLEY_SMI_ELEMENTS) \
- V(PACKED_ELEMENTS) \
- V(PACKED_NONEXTENSIBLE_ELEMENTS) \
- V(PACKED_SEALED_ELEMENTS) \
- V(HOLEY_ELEMENTS) \
- V(HOLEY_NONEXTENSIBLE_ELEMENTS) \
- V(HOLEY_SEALED_ELEMENTS) \
- V(PACKED_DOUBLE_ELEMENTS) \
- V(HOLEY_DOUBLE_ELEMENTS) \
- V(UINT8_ELEMENTS) \
- V(INT8_ELEMENTS) \
- V(UINT16_ELEMENTS) \
- V(INT16_ELEMENTS) \
- V(UINT32_ELEMENTS) \
- V(INT32_ELEMENTS) \
- V(FLOAT32_ELEMENTS) \
- V(FLOAT64_ELEMENTS) \
- V(UINT8_CLAMPED_ELEMENTS) \
- V(BIGUINT64_ELEMENTS) \
- V(BIGINT64_ELEMENTS)
+#define ELEMENTS_KINDS(V) \
+ V(PACKED_SMI_ELEMENTS) \
+ V(HOLEY_SMI_ELEMENTS) \
+ V(PACKED_ELEMENTS) \
+ V(PACKED_NONEXTENSIBLE_ELEMENTS) \
+ V(PACKED_SEALED_ELEMENTS) \
+ V(HOLEY_ELEMENTS) \
+ V(HOLEY_NONEXTENSIBLE_ELEMENTS) \
+ V(HOLEY_SEALED_ELEMENTS) \
+ V(PACKED_DOUBLE_ELEMENTS) \
+ V(HOLEY_DOUBLE_ELEMENTS) \
+ V(UINT8_ELEMENTS) \
+ V(INT8_ELEMENTS) \
+ V(UINT16_ELEMENTS) \
+ V(INT16_ELEMENTS) \
+ V(UINT32_ELEMENTS) \
+ V(INT32_ELEMENTS) \
+ V(FLOAT32_ELEMENTS) \
+ V(FLOAT64_ELEMENTS) \
+ V(UINT8_CLAMPED_ELEMENTS) \
+ V(BIGUINT64_ELEMENTS) \
+ V(BIGINT64_ELEMENTS) \
+ V(RAB_GSAB_UINT8_ELEMENTS) \
+ V(RAB_GSAB_INT8_ELEMENTS) \
+ V(RAB_GSAB_UINT16_ELEMENTS) \
+ V(RAB_GSAB_INT16_ELEMENTS) \
+ V(RAB_GSAB_UINT32_ELEMENTS) \
+ V(RAB_GSAB_INT32_ELEMENTS) \
+ V(RAB_GSAB_FLOAT32_ELEMENTS) \
+ V(RAB_GSAB_FLOAT64_ELEMENTS) \
+ V(RAB_GSAB_UINT8_CLAMPED_ELEMENTS) \
+ V(RAB_GSAB_BIGUINT64_ELEMENTS) \
+ V(RAB_GSAB_BIGINT64_ELEMENTS)
void HandlerBuiltinsAssembler::DispatchByElementsKind(
TNode<Int32T> elements_kind, const ElementsKindSwitchCase& case_function,
diff --git a/deps/v8/src/builtins/builtins-ic-gen.cc b/deps/v8/src/builtins/builtins-ic-gen.cc
index 81bf6379ec..e172b5a129 100644
--- a/deps/v8/src/builtins/builtins-ic-gen.cc
+++ b/deps/v8/src/builtins/builtins-ic-gen.cc
@@ -10,70 +10,221 @@
namespace v8 {
namespace internal {
-#define IC_BUILTIN(Name) \
- void Builtins::Generate_##Name(compiler::CodeAssemblerState* state) { \
- AccessorAssembler assembler(state); \
- assembler.Generate##Name(); \
- }
+void Builtins::Generate_LoadIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadIC();
+}
+void Builtins::Generate_LoadIC_Megamorphic(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadIC_Megamorphic();
+}
+void Builtins::Generate_LoadIC_Noninlined(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadIC_Noninlined();
+}
+void Builtins::Generate_LoadIC_NoFeedback(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadIC_NoFeedback();
+}
+void Builtins::Generate_LoadICTrampoline(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadICTrampoline();
+}
+void Builtins::Generate_LoadICBaseline(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadICBaseline();
+}
+void Builtins::Generate_LoadICTrampoline_Megamorphic(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadICTrampoline_Megamorphic();
+}
+void Builtins::Generate_LoadSuperIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadSuperIC();
+}
+void Builtins::Generate_LoadSuperICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadSuperICBaseline();
+}
+void Builtins::Generate_KeyedLoadIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedLoadIC();
+}
+void Builtins::Generate_KeyedLoadIC_Megamorphic(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedLoadIC_Megamorphic();
+}
+void Builtins::Generate_KeyedLoadIC_PolymorphicName(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedLoadIC_PolymorphicName();
+}
+void Builtins::Generate_KeyedLoadICTrampoline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedLoadICTrampoline();
+}
+void Builtins::Generate_KeyedLoadICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedLoadICBaseline();
+}
+void Builtins::Generate_KeyedLoadICTrampoline_Megamorphic(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedLoadICTrampoline_Megamorphic();
+}
+void Builtins::Generate_LoadGlobalIC_NoFeedback(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadGlobalIC_NoFeedback();
+}
+void Builtins::Generate_StoreGlobalIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateStoreGlobalIC();
+}
+void Builtins::Generate_StoreGlobalICTrampoline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateStoreGlobalICTrampoline();
+}
+void Builtins::Generate_StoreGlobalICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateStoreGlobalICBaseline();
+}
+void Builtins::Generate_StoreIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateStoreIC();
+}
+void Builtins::Generate_StoreICTrampoline(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateStoreICTrampoline();
+}
+void Builtins::Generate_StoreICBaseline(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateStoreICBaseline();
+}
+void Builtins::Generate_KeyedStoreIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedStoreIC();
+}
+void Builtins::Generate_KeyedStoreICTrampoline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedStoreICTrampoline();
+}
+void Builtins::Generate_KeyedStoreICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedStoreICBaseline();
+}
+void Builtins::Generate_StoreInArrayLiteralIC(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateStoreInArrayLiteralIC();
+}
+void Builtins::Generate_StoreInArrayLiteralICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateStoreInArrayLiteralICBaseline();
+}
+void Builtins::Generate_CloneObjectIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateCloneObjectIC();
+}
+void Builtins::Generate_CloneObjectICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateCloneObjectICBaseline();
+}
+void Builtins::Generate_CloneObjectIC_Slow(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateCloneObjectIC_Slow();
+}
+void Builtins::Generate_KeyedHasIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedHasIC();
+}
+void Builtins::Generate_KeyedHasICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedHasICBaseline();
+}
+void Builtins::Generate_KeyedHasIC_Megamorphic(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedHasIC_Megamorphic();
+}
+void Builtins::Generate_KeyedHasIC_PolymorphicName(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateKeyedHasIC_PolymorphicName();
+}
+
+void Builtins::Generate_LoadGlobalIC(compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadGlobalIC(TypeofMode::kNotInside);
+}
-#define IC_BUILTIN_PARAM(BuiltinName, GeneratorName, parameter) \
- void Builtins::Generate_##BuiltinName(compiler::CodeAssemblerState* state) { \
- AccessorAssembler assembler(state); \
- assembler.Generate##GeneratorName(parameter); \
- }
+void Builtins::Generate_LoadGlobalICInsideTypeof(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadGlobalIC(TypeofMode::kInside);
+}
-IC_BUILTIN(LoadIC)
-IC_BUILTIN(LoadIC_Megamorphic)
-IC_BUILTIN(LoadIC_Noninlined)
-IC_BUILTIN(LoadIC_NoFeedback)
-IC_BUILTIN(LoadICTrampoline)
-IC_BUILTIN(LoadICBaseline)
-IC_BUILTIN(LoadICTrampoline_Megamorphic)
-IC_BUILTIN(LoadSuperIC)
-IC_BUILTIN(LoadSuperICBaseline)
-IC_BUILTIN(KeyedLoadIC)
-IC_BUILTIN(KeyedLoadIC_Megamorphic)
-IC_BUILTIN(KeyedLoadIC_PolymorphicName)
-IC_BUILTIN(KeyedLoadICTrampoline)
-IC_BUILTIN(KeyedLoadICBaseline)
-IC_BUILTIN(KeyedLoadICTrampoline_Megamorphic)
-IC_BUILTIN(LoadGlobalIC_NoFeedback)
-IC_BUILTIN(StoreGlobalIC)
-IC_BUILTIN(StoreGlobalICTrampoline)
-IC_BUILTIN(StoreGlobalICBaseline)
-IC_BUILTIN(StoreIC)
-IC_BUILTIN(StoreICTrampoline)
-IC_BUILTIN(StoreICBaseline)
-IC_BUILTIN(KeyedStoreIC)
-IC_BUILTIN(KeyedStoreICTrampoline)
-IC_BUILTIN(KeyedStoreICBaseline)
-IC_BUILTIN(StoreInArrayLiteralIC)
-IC_BUILTIN(StoreInArrayLiteralICBaseline)
-IC_BUILTIN(CloneObjectIC)
-IC_BUILTIN(CloneObjectICBaseline)
-IC_BUILTIN(CloneObjectIC_Slow)
-IC_BUILTIN(KeyedHasIC)
-IC_BUILTIN(KeyedHasICBaseline)
-IC_BUILTIN(KeyedHasIC_Megamorphic)
-IC_BUILTIN(KeyedHasIC_PolymorphicName)
+void Builtins::Generate_LoadGlobalICTrampoline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadGlobalICTrampoline(TypeofMode::kNotInside);
+}
-IC_BUILTIN_PARAM(LoadGlobalIC, LoadGlobalIC, NOT_INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LoadGlobalICInsideTypeof, LoadGlobalIC, INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LoadGlobalICTrampoline, LoadGlobalICTrampoline,
- NOT_INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LoadGlobalICInsideTypeofTrampoline, LoadGlobalICTrampoline,
- INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LoadGlobalICBaseline, LoadGlobalICBaseline, NOT_INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LoadGlobalICInsideTypeofBaseline, LoadGlobalICBaseline,
- INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LookupGlobalICBaseline, LookupGlobalICBaseline,
- NOT_INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LookupGlobalICInsideTypeofBaseline, LookupGlobalICBaseline,
- INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LookupContextBaseline, LookupContextBaseline,
- NOT_INSIDE_TYPEOF)
-IC_BUILTIN_PARAM(LookupContextInsideTypeofBaseline, LookupContextBaseline,
- INSIDE_TYPEOF)
+void Builtins::Generate_LoadGlobalICInsideTypeofTrampoline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadGlobalICTrampoline(TypeofMode::kInside);
+}
+
+void Builtins::Generate_LoadGlobalICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadGlobalICBaseline(TypeofMode::kNotInside);
+}
+
+void Builtins::Generate_LoadGlobalICInsideTypeofBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLoadGlobalICBaseline(TypeofMode::kInside);
+}
+
+void Builtins::Generate_LookupGlobalICBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLookupGlobalICBaseline(TypeofMode::kNotInside);
+}
+
+void Builtins::Generate_LookupGlobalICInsideTypeofBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLookupGlobalICBaseline(TypeofMode::kInside);
+}
+
+void Builtins::Generate_LookupContextBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLookupContextBaseline(TypeofMode::kNotInside);
+}
+
+void Builtins::Generate_LookupContextInsideTypeofBaseline(
+ compiler::CodeAssemblerState* state) {
+ AccessorAssembler assembler(state);
+ assembler.GenerateLookupContextBaseline(TypeofMode::kInside);
+}
TF_BUILTIN(DynamicCheckMaps, CodeStubAssembler) {
auto map = Parameter<Map>(Descriptor::kMap);
diff --git a/deps/v8/src/builtins/builtins-internal-gen.cc b/deps/v8/src/builtins/builtins-internal-gen.cc
index 0c4131dba9..274709b46a 100644
--- a/deps/v8/src/builtins/builtins-internal-gen.cc
+++ b/deps/v8/src/builtins/builtins-internal-gen.cc
@@ -7,6 +7,7 @@
#include "src/builtins/builtins-utils-gen.h"
#include "src/builtins/builtins.h"
#include "src/codegen/code-stub-assembler.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
#include "src/execution/frame-constants.h"
#include "src/heap/memory-chunk.h"
@@ -172,11 +173,11 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler {
}
TNode<BoolT> ShouldSkipFPRegs(TNode<Smi> mode) {
- return TaggedEqual(mode, SmiConstant(kDontSaveFPRegs));
+ return TaggedEqual(mode, SmiConstant(SaveFPRegsMode::kIgnore));
}
TNode<BoolT> ShouldEmitRememberSet(TNode<Smi> remembered_set) {
- return TaggedEqual(remembered_set, SmiConstant(EMIT_REMEMBERED_SET));
+ return TaggedEqual(remembered_set, SmiConstant(RememberedSetAction::kEmit));
}
template <typename Ret, typename Arg0, typename Arg1>
@@ -188,7 +189,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler {
BIND(&dont_save_fp);
{
CallCFunctionWithCallerSavedRegisters(
- function, MachineTypeOf<Ret>::value, kDontSaveFPRegs,
+ function, MachineTypeOf<Ret>::value, SaveFPRegsMode::kIgnore,
std::make_pair(MachineTypeOf<Arg0>::value, arg0),
std::make_pair(MachineTypeOf<Arg1>::value, arg1));
Goto(next);
@@ -197,7 +198,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler {
BIND(&save_fp);
{
CallCFunctionWithCallerSavedRegisters(
- function, MachineTypeOf<Ret>::value, kSaveFPRegs,
+ function, MachineTypeOf<Ret>::value, SaveFPRegsMode::kSave,
std::make_pair(MachineTypeOf<Arg0>::value, arg0),
std::make_pair(MachineTypeOf<Arg1>::value, arg1));
Goto(next);
@@ -213,7 +214,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler {
BIND(&dont_save_fp);
{
CallCFunctionWithCallerSavedRegisters(
- function, MachineTypeOf<Ret>::value, kDontSaveFPRegs,
+ function, MachineTypeOf<Ret>::value, SaveFPRegsMode::kIgnore,
std::make_pair(MachineTypeOf<Arg0>::value, arg0),
std::make_pair(MachineTypeOf<Arg1>::value, arg1),
std::make_pair(MachineTypeOf<Arg2>::value, arg2));
@@ -223,7 +224,7 @@ class RecordWriteCodeStubAssembler : public CodeStubAssembler {
BIND(&save_fp);
{
CallCFunctionWithCallerSavedRegisters(
- function, MachineTypeOf<Ret>::value, kSaveFPRegs,
+ function, MachineTypeOf<Ret>::value, SaveFPRegsMode::kSave,
std::make_pair(MachineTypeOf<Arg0>::value, arg0),
std::make_pair(MachineTypeOf<Arg1>::value, arg1),
std::make_pair(MachineTypeOf<Arg2>::value, arg2));
@@ -821,8 +822,9 @@ TF_BUILTIN(AdaptorWithBuiltinExitFrame, CodeStubAssembler) {
Int32Constant(BuiltinExitFrameConstants::kNumExtraArgsWithReceiver));
const bool builtin_exit_frame = true;
- TNode<Code> code = HeapConstant(CodeFactory::CEntry(
- isolate(), 1, kDontSaveFPRegs, kArgvOnStack, builtin_exit_frame));
+ TNode<Code> code =
+ HeapConstant(CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame));
// Unconditionally push argc, target and new target as extra stack arguments.
// They will be used by stack frame iterators when constructing stack trace.
@@ -891,54 +893,54 @@ TF_BUILTIN(AbortCSAAssert, CodeStubAssembler) {
void Builtins::Generate_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 1, kDontSaveFPRegs, kArgvOnStack, false);
+ Generate_CEntry(masm, 1, SaveFPRegsMode::kIgnore, ArgvMode::kStack, false);
}
void Builtins::Generate_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 1, kDontSaveFPRegs, kArgvOnStack, true);
+ Generate_CEntry(masm, 1, SaveFPRegsMode::kIgnore, ArgvMode::kStack, true);
}
void Builtins::
Generate_CEntry_Return1_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 1, kDontSaveFPRegs, kArgvInRegister, false);
+ Generate_CEntry(masm, 1, SaveFPRegsMode::kIgnore, ArgvMode::kRegister, false);
}
void Builtins::Generate_CEntry_Return1_SaveFPRegs_ArgvOnStack_NoBuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 1, kSaveFPRegs, kArgvOnStack, false);
+ Generate_CEntry(masm, 1, SaveFPRegsMode::kSave, ArgvMode::kStack, false);
}
void Builtins::Generate_CEntry_Return1_SaveFPRegs_ArgvOnStack_BuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 1, kSaveFPRegs, kArgvOnStack, true);
+ Generate_CEntry(masm, 1, SaveFPRegsMode::kSave, ArgvMode::kStack, true);
}
void Builtins::Generate_CEntry_Return2_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 2, kDontSaveFPRegs, kArgvOnStack, false);
+ Generate_CEntry(masm, 2, SaveFPRegsMode::kIgnore, ArgvMode::kStack, false);
}
void Builtins::Generate_CEntry_Return2_DontSaveFPRegs_ArgvOnStack_BuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 2, kDontSaveFPRegs, kArgvOnStack, true);
+ Generate_CEntry(masm, 2, SaveFPRegsMode::kIgnore, ArgvMode::kStack, true);
}
void Builtins::
Generate_CEntry_Return2_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 2, kDontSaveFPRegs, kArgvInRegister, false);
+ Generate_CEntry(masm, 2, SaveFPRegsMode::kIgnore, ArgvMode::kRegister, false);
}
void Builtins::Generate_CEntry_Return2_SaveFPRegs_ArgvOnStack_NoBuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 2, kSaveFPRegs, kArgvOnStack, false);
+ Generate_CEntry(masm, 2, SaveFPRegsMode::kSave, ArgvMode::kStack, false);
}
void Builtins::Generate_CEntry_Return2_SaveFPRegs_ArgvOnStack_BuiltinExit(
MacroAssembler* masm) {
- Generate_CEntry(masm, 2, kSaveFPRegs, kArgvOnStack, true);
+ Generate_CEntry(masm, 2, SaveFPRegsMode::kSave, ArgvMode::kStack, true);
}
#if !defined(V8_TARGET_ARCH_ARM) && !defined(V8_TARGET_ARCH_MIPS)
@@ -956,7 +958,7 @@ void Builtins::Generate_MemMove(MacroAssembler* masm) {
// TODO(v8:11421): Remove #if once baseline compiler is ported to other
// architectures.
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
- V8_TARGET_ARCH_ARM
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
void Builtins::Generate_BaselineLeaveFrame(MacroAssembler* masm) {
EmitReturnBaseline(masm);
}
diff --git a/deps/v8/src/builtins/builtins-intl.cc b/deps/v8/src/builtins/builtins-intl.cc
index fe32a484a3..6febc81c3a 100644
--- a/deps/v8/src/builtins/builtins-intl.cc
+++ b/deps/v8/src/builtins/builtins-intl.cc
@@ -668,6 +668,49 @@ BUILTIN(LocalePrototypeMinimize) {
RETURN_RESULT_OR_FAILURE(isolate, JSLocale::Minimize(isolate, locale));
}
+BUILTIN(LocalePrototypeCalendars) {
+ HandleScope scope(isolate);
+ CHECK_RECEIVER(JSLocale, locale, "Intl.Locale.prototype.calendars");
+ RETURN_RESULT_OR_FAILURE(isolate, JSLocale::Calendars(isolate, locale));
+}
+
+BUILTIN(LocalePrototypeCollations) {
+ HandleScope scope(isolate);
+ CHECK_RECEIVER(JSLocale, locale, "Intl.Locale.prototype.collations");
+ RETURN_RESULT_OR_FAILURE(isolate, JSLocale::Collations(isolate, locale));
+}
+
+BUILTIN(LocalePrototypeHourCycles) {
+ HandleScope scope(isolate);
+ CHECK_RECEIVER(JSLocale, locale, "Intl.Locale.prototype.hourCycles");
+ RETURN_RESULT_OR_FAILURE(isolate, JSLocale::HourCycles(isolate, locale));
+}
+
+BUILTIN(LocalePrototypeNumberingSystems) {
+ HandleScope scope(isolate);
+ CHECK_RECEIVER(JSLocale, locale, "Intl.Locale.prototype.numberingSystems");
+ RETURN_RESULT_OR_FAILURE(isolate,
+ JSLocale::NumberingSystems(isolate, locale));
+}
+
+BUILTIN(LocalePrototypeTextInfo) {
+ HandleScope scope(isolate);
+ CHECK_RECEIVER(JSLocale, locale, "Intl.Locale.prototype.textInfo");
+ RETURN_RESULT_OR_FAILURE(isolate, JSLocale::TextInfo(isolate, locale));
+}
+
+BUILTIN(LocalePrototypeTimeZones) {
+ HandleScope scope(isolate);
+ CHECK_RECEIVER(JSLocale, locale, "Intl.Locale.prototype.timeZones");
+ RETURN_RESULT_OR_FAILURE(isolate, JSLocale::TimeZones(isolate, locale));
+}
+
+BUILTIN(LocalePrototypeWeekInfo) {
+ HandleScope scope(isolate);
+ CHECK_RECEIVER(JSLocale, locale, "Intl.Locale.prototype.weekInfo");
+ RETURN_RESULT_OR_FAILURE(isolate, JSLocale::WeekInfo(isolate, locale));
+}
+
BUILTIN(RelativeTimeFormatSupportedLocalesOf) {
HandleScope scope(isolate);
Handle<Object> locales = args.atOrUndefined(isolate, 1);
diff --git a/deps/v8/src/builtins/builtins-lazy-gen.cc b/deps/v8/src/builtins/builtins-lazy-gen.cc
index 8af0bef95d..4749ee094b 100644
--- a/deps/v8/src/builtins/builtins-lazy-gen.cc
+++ b/deps/v8/src/builtins/builtins-lazy-gen.cc
@@ -154,20 +154,7 @@ void LazyBuiltinsAssembler::CompileLazy(TNode<JSFunction> function) {
GotoIf(InstanceTypeEqual(sfi_data_type.value(), BASELINE_DATA_TYPE),
&baseline);
- // Finally, check for presence of an NCI cached Code object - if an entry
- // possibly exists, call into runtime to query the cache.
- TNode<Uint8T> flags2 =
- LoadObjectField<Uint8T>(shared, SharedFunctionInfo::kFlags2Offset);
- TNode<BoolT> may_have_cached_code =
- IsSetWord32<SharedFunctionInfo::MayHaveCachedCodeBit>(flags2);
- code = Select<Code>(
- may_have_cached_code,
- [=]() {
- return CAST(CallRuntime(Runtime::kTryInstallNCICode,
- Parameter<Context>(Descriptor::kContext),
- function));
- },
- [=]() { return sfi_code; });
+ code = sfi_code;
Goto(&tailcall_code);
BIND(&baseline);
diff --git a/deps/v8/src/builtins/builtins-microtask-queue-gen.cc b/deps/v8/src/builtins/builtins-microtask-queue-gen.cc
index 1ec9e350f6..281e9234dc 100644
--- a/deps/v8/src/builtins/builtins-microtask-queue-gen.cc
+++ b/deps/v8/src/builtins/builtins-microtask-queue-gen.cc
@@ -473,8 +473,7 @@ void MicrotaskQueueBuiltinsAssembler::RunAllPromiseHooks(
TNode<HeapObject> promise_or_capability) {
Label hook(this, Label::kDeferred), done_hook(this);
TNode<Uint32T> promiseHookFlags = PromiseHookFlags();
- Branch(IsAnyPromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate(
- promiseHookFlags), &hook, &done_hook);
+ Branch(NeedsAnyPromiseHooks(promiseHookFlags), &hook, &done_hook);
BIND(&hook);
{
switch (type) {
diff --git a/deps/v8/src/builtins/builtins-regexp-gen.cc b/deps/v8/src/builtins/builtins-regexp-gen.cc
index 23648efb98..e59d2a00ac 100644
--- a/deps/v8/src/builtins/builtins-regexp-gen.cc
+++ b/deps/v8/src/builtins/builtins-regexp-gen.cc
@@ -1014,6 +1014,12 @@ TF_BUILTIN(RegExpExecInternal, RegExpBuiltinsAssembler) {
TNode<String> RegExpBuiltinsAssembler::FlagsGetter(TNode<Context> context,
TNode<Object> regexp,
bool is_fastpath) {
+ TVARIABLE(String, result);
+ Label runtime(this, Label::kDeferred), done(this, &result);
+ if (is_fastpath) {
+ GotoIfForceSlowPath(&runtime);
+ }
+
Isolate* isolate = this->isolate();
const TNode<IntPtrT> int_one = IntPtrConstant(1);
@@ -1110,7 +1116,7 @@ TNode<String> RegExpBuiltinsAssembler::FlagsGetter(TNode<Context> context,
// corresponding char for each set flag.
{
- const TNode<String> result = AllocateSeqOneByteString(var_length.value());
+ const TNode<String> string = AllocateSeqOneByteString(var_length.value());
TVARIABLE(IntPtrT, var_offset,
IntPtrConstant(SeqOneByteString::kHeaderSize - kHeapObjectTag));
@@ -1120,7 +1126,7 @@ TNode<String> RegExpBuiltinsAssembler::FlagsGetter(TNode<Context> context,
Label next(this); \
GotoIfNot(IsSetWord(var_flags.value(), FLAG), &next); \
const TNode<Int32T> value = Int32Constant(CHAR); \
- StoreNoWriteBarrier(MachineRepresentation::kWord8, result, \
+ StoreNoWriteBarrier(MachineRepresentation::kWord8, string, \
var_offset.value(), value); \
var_offset = IntPtrAdd(var_offset.value(), int_one); \
Goto(&next); \
@@ -1137,7 +1143,26 @@ TNode<String> RegExpBuiltinsAssembler::FlagsGetter(TNode<Context> context,
CASE_FOR_FLAG(JSRegExp::kSticky, 'y');
#undef CASE_FOR_FLAG
- return result;
+ if (is_fastpath) {
+#ifdef V8_ENABLE_FORCE_SLOW_PATH
+ result = string;
+ Goto(&done);
+
+ BIND(&runtime);
+ {
+ result =
+ CAST(CallRuntime(Runtime::kRegExpStringFromFlags, context, regexp));
+ Goto(&done);
+ }
+
+ BIND(&done);
+ return result.value();
+#else
+ return string;
+#endif
+ } else {
+ return string;
+ }
}
}
diff --git a/deps/v8/src/builtins/builtins-trace.cc b/deps/v8/src/builtins/builtins-trace.cc
index cf85ce9948..24baf59522 100644
--- a/deps/v8/src/builtins/builtins-trace.cc
+++ b/deps/v8/src/builtins/builtins-trace.cc
@@ -9,6 +9,7 @@
#include "src/json/json-stringifier.h"
#include "src/logging/counters.h"
#include "src/objects/objects-inl.h"
+#include "src/tracing/traced-value.h"
#if defined(V8_USE_PERFETTO)
#include "protos/perfetto/trace/track_event/debug_annotation.pbzero.h"
diff --git a/deps/v8/src/builtins/builtins-typed-array-gen.cc b/deps/v8/src/builtins/builtins-typed-array-gen.cc
index 65b1ab2f2b..d333a61e39 100644
--- a/deps/v8/src/builtins/builtins-typed-array-gen.cc
+++ b/deps/v8/src/builtins/builtins-typed-array-gen.cc
@@ -123,13 +123,26 @@ TF_BUILTIN(TypedArrayPrototypeByteLength, TypedArrayBuiltinsAssembler) {
// Check if the {receiver} is actually a JSTypedArray.
ThrowIfNotInstanceType(context, receiver, JS_TYPED_ARRAY_TYPE, kMethodName);
- // Default to zero if the {receiver}s buffer was detached.
+ TNode<JSTypedArray> receiver_array = CAST(receiver);
TNode<JSArrayBuffer> receiver_buffer =
- LoadJSArrayBufferViewBuffer(CAST(receiver));
- TNode<UintPtrT> byte_length = Select<UintPtrT>(
- IsDetachedBuffer(receiver_buffer), [=] { return UintPtrConstant(0); },
- [=] { return LoadJSArrayBufferViewByteLength(CAST(receiver)); });
- Return(ChangeUintPtrToTagged(byte_length));
+ LoadJSArrayBufferViewBuffer(receiver_array);
+
+ Label variable_length(this), normal(this);
+ Branch(IsVariableLengthTypedArray(receiver_array), &variable_length, &normal);
+ BIND(&variable_length);
+ {
+ Return(ChangeUintPtrToTagged(LoadVariableLengthJSTypedArrayByteLength(
+ context, receiver_array, receiver_buffer)));
+ }
+
+ BIND(&normal);
+ {
+ // Default to zero if the {receiver}s buffer was detached.
+ TNode<UintPtrT> byte_length = Select<UintPtrT>(
+ IsDetachedBuffer(receiver_buffer), [=] { return UintPtrConstant(0); },
+ [=] { return LoadJSArrayBufferViewByteLength(receiver_array); });
+ Return(ChangeUintPtrToTagged(byte_length));
+ }
}
// ES6 #sec-get-%typedarray%.prototype.byteoffset
@@ -159,13 +172,29 @@ TF_BUILTIN(TypedArrayPrototypeLength, TypedArrayBuiltinsAssembler) {
// Check if the {receiver} is actually a JSTypedArray.
ThrowIfNotInstanceType(context, receiver, JS_TYPED_ARRAY_TYPE, kMethodName);
- // Default to zero if the {receiver}s buffer was detached.
+ TNode<JSTypedArray> receiver_array = CAST(receiver);
TNode<JSArrayBuffer> receiver_buffer =
- LoadJSArrayBufferViewBuffer(CAST(receiver));
- TNode<UintPtrT> length = Select<UintPtrT>(
- IsDetachedBuffer(receiver_buffer), [=] { return UintPtrConstant(0); },
- [=] { return LoadJSTypedArrayLength(CAST(receiver)); });
- Return(ChangeUintPtrToTagged(length));
+ LoadJSArrayBufferViewBuffer(receiver_array);
+
+ Label variable_length(this), normal(this);
+ Branch(IsVariableLengthTypedArray(receiver_array), &variable_length, &normal);
+ BIND(&variable_length);
+ {
+ Label miss(this);
+ Return(ChangeUintPtrToTagged(LoadVariableLengthJSTypedArrayLength(
+ receiver_array, receiver_buffer, &miss)));
+ BIND(&miss);
+ Return(ChangeUintPtrToTagged(UintPtrConstant(0)));
+ }
+
+ BIND(&normal);
+ {
+ // Default to zero if the {receiver}s buffer was detached.
+ TNode<UintPtrT> length = Select<UintPtrT>(
+ IsDetachedBuffer(receiver_buffer), [=] { return UintPtrConstant(0); },
+ [=] { return LoadJSTypedArrayLength(receiver_array); });
+ Return(ChangeUintPtrToTagged(length));
+ }
}
TNode<BoolT> TypedArrayBuiltinsAssembler::IsUint8ElementsKind(
@@ -322,17 +351,18 @@ void TypedArrayBuiltinsAssembler::DispatchTypedArrayByElementsKind(
int32_t elements_kinds[] = {
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) TYPE##_ELEMENTS,
- TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ TYPED_ARRAYS(TYPED_ARRAY_CASE) RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
};
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) Label if_##type##array(this);
TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
Label* elements_kind_labels[] = {
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) &if_##type##array,
- TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ TYPED_ARRAYS(TYPED_ARRAY_CASE) RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
};
STATIC_ASSERT(arraysize(elements_kinds) == arraysize(elements_kind_labels));
@@ -350,6 +380,15 @@ void TypedArrayBuiltinsAssembler::DispatchTypedArrayByElementsKind(
TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
+#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
+ BIND(&if_##type##array); \
+ { \
+ case_function(TYPE##_ELEMENTS, sizeof(ctype), 0); \
+ Goto(&next); \
+ }
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
+#undef TYPED_ARRAY_CASE
+
BIND(&if_unknown_type);
Unreachable();
@@ -374,7 +413,7 @@ void TypedArrayBuiltinsAssembler::SetJSTypedArrayOnHeapDataPtr(
IntPtrSub(full_base, Signed(ChangeUint32ToWord(compressed_base)));
// Add JSTypedArray::ExternalPointerCompensationForOnHeapArray() to offset.
DCHECK_EQ(
- isolate()->isolate_root(),
+ isolate()->cage_base(),
JSTypedArray::ExternalPointerCompensationForOnHeapArray(isolate()));
// See JSTypedArray::SetOnHeapDataPtr() for details.
offset = Unsigned(IntPtrAdd(offset, ptr_compr_cage_base));
diff --git a/deps/v8/src/builtins/builtins-typed-array.cc b/deps/v8/src/builtins/builtins-typed-array.cc
index fdadc7a554..bb936e6e46 100644
--- a/deps/v8/src/builtins/builtins-typed-array.cc
+++ b/deps/v8/src/builtins/builtins-typed-array.cc
@@ -154,7 +154,8 @@ BUILTIN(TypedArrayPrototypeFill) {
DCHECK_LE(end, len);
DCHECK_LE(count, len);
- return ElementsAccessor::ForKind(kind)->Fill(array, obj_value, start, end);
+ RETURN_RESULT_OR_FAILURE(isolate, ElementsAccessor::ForKind(kind)->Fill(
+ array, obj_value, start, end));
}
BUILTIN(TypedArrayPrototypeIncludes) {
diff --git a/deps/v8/src/builtins/builtins-utils.h b/deps/v8/src/builtins/builtins-utils.h
index e5f420a20d..b9146ab625 100644
--- a/deps/v8/src/builtins/builtins-utils.h
+++ b/deps/v8/src/builtins/builtins-utils.h
@@ -85,8 +85,7 @@ class BuiltinArguments : public JavaScriptArguments {
V8_NOINLINE static Address Builtin_Impl_Stats_##name( \
int args_length, Address* args_object, Isolate* isolate) { \
BuiltinArguments args(args_length, args_object); \
- RuntimeCallTimerScope timer(isolate, \
- RuntimeCallCounterId::kBuiltin_##name); \
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kBuiltin_##name); \
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.runtime"), \
"V8.Builtin_" #name); \
return CONVERT_OBJECT(Builtin_Impl_##name(args, isolate)); \
diff --git a/deps/v8/src/builtins/builtins-wasm-gen.cc b/deps/v8/src/builtins/builtins-wasm-gen.cc
index 0704d8681b..eb9311d0c6 100644
--- a/deps/v8/src/builtins/builtins-wasm-gen.cc
+++ b/deps/v8/src/builtins/builtins-wasm-gen.cc
@@ -9,7 +9,6 @@
#include "src/codegen/interface-descriptors.h"
#include "src/objects/objects-inl.h"
#include "src/wasm/wasm-objects.h"
-#include "src/wasm/wasm-opcodes.h"
namespace v8 {
namespace internal {
diff --git a/deps/v8/src/builtins/cast.tq b/deps/v8/src/builtins/cast.tq
index 2bec3d86be..d7d2eb6aa6 100644
--- a/deps/v8/src/builtins/cast.tq
+++ b/deps/v8/src/builtins/cast.tq
@@ -329,6 +329,24 @@ Cast<Number|TheHole>(o: Object): Number|TheHole labels CastError {
}
}
+Cast<Context|Zero|Undefined>(o: Object): Context|Zero|Undefined
+ labels CastError {
+ typeswitch (o) {
+ case (o: Context): {
+ return o;
+ }
+ case (o: Zero): {
+ return o;
+ }
+ case (o: Undefined): {
+ return o;
+ }
+ case (Object): {
+ goto CastError;
+ }
+ }
+}
+
macro Cast<A : type extends HeapObject>(o: HeapObject): A
labels CastError;
diff --git a/deps/v8/src/builtins/constructor.tq b/deps/v8/src/builtins/constructor.tq
index add6db0305..d929c7f485 100644
--- a/deps/v8/src/builtins/constructor.tq
+++ b/deps/v8/src/builtins/constructor.tq
@@ -15,6 +15,8 @@ extern runtime CreateObjectLiteral(
namespace constructor {
+extern builtin FastNewClosure(
+ Context, SharedFunctionInfo, FeedbackCell): JSFunction;
extern builtin FastNewObject(Context, JSFunction, JSReceiver): JSObject;
extern enum AllocationSiteMode {
@@ -42,6 +44,15 @@ extern macro ConstructorBuiltinsAssembler::CreateShallowObjectLiteral(
extern macro ConstructorBuiltinsAssembler::CreateEmptyObjectLiteral(Context):
JSObject;
+extern macro LoadContextFromBaseline(): Context;
+
+builtin FastNewClosureBaseline(
+ sharedFunctionInfo: SharedFunctionInfo,
+ feedbackCell: FeedbackCell): JSFunction {
+ const context = LoadContextFromBaseline();
+ tail FastNewClosure(context, sharedFunctionInfo, feedbackCell);
+}
+
builtin FastNewFunctionContextEval(implicit context: Context)(
scopeInfo: ScopeInfo, slots: uint32): Context {
return FastNewFunctionContext(scopeInfo, slots, context, kEvalScope);
diff --git a/deps/v8/src/builtins/conversion.tq b/deps/v8/src/builtins/conversion.tq
index 5a2dccd068..636f49a024 100644
--- a/deps/v8/src/builtins/conversion.tq
+++ b/deps/v8/src/builtins/conversion.tq
@@ -45,11 +45,30 @@ builtin NumberToString(implicit context: Context)(input: Number): String {
}
// ES6 section 7.1.2 ToBoolean ( argument )
-builtin ToBoolean(implicit context: Context)(input: JSAny): Boolean {
+builtin ToBoolean(input: JSAny): Boolean {
BranchIfToBooleanIsTrue(input) otherwise return TrueConstant(),
return FalseConstant();
}
+struct ToBooleanForBaselineJumpResult {
+ value: JSAny;
+ is_to_boolean: Smi;
+}
+// ToBoolean for baseline code jumps, which
+// a) returns the original value as the first return value, to avoid needing
+// to save it in the caller, and
+// b) returns the true/false value as a Smi, to make the baseline-side
+// comparison cheaper.
+builtin ToBooleanForBaselineJump(input: JSAny): ToBooleanForBaselineJumpResult {
+ try {
+ BranchIfToBooleanIsTrue(input) otherwise IsTrue, IsFalse;
+ } label IsTrue {
+ return ToBooleanForBaselineJumpResult{value: input, is_to_boolean: 1};
+ } label IsFalse {
+ return ToBooleanForBaselineJumpResult{value: input, is_to_boolean: 0};
+ }
+}
+
transitioning builtin ToLength(implicit context: Context)(input: JSAny):
Number {
// We might need to loop once for ToNumber conversion.
diff --git a/deps/v8/src/builtins/ia32/builtins-ia32.cc b/deps/v8/src/builtins/ia32/builtins-ia32.cc
index 44b71bed91..4993de4816 100644
--- a/deps/v8/src/builtins/ia32/builtins-ia32.cc
+++ b/deps/v8/src/builtins/ia32/builtins-ia32.cc
@@ -8,6 +8,7 @@
#include "src/base/bits-iterator.h"
#include "src/base/iterator.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
// For interpreter_entry_return_pc_offset. TODO(jkummerow): Drop.
#include "src/codegen/macro-assembler-inl.h"
#include "src/codegen/register-configuration.h"
@@ -116,7 +117,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// edx: new target
// Reload context from the frame.
__ mov(esi, Operand(ebp, ConstructFrameConstants::kContextOffset));
- __ InvokeFunction(edi, edx, eax, CALL_FUNCTION);
+ __ InvokeFunction(edi, edx, eax, InvokeType::kCall);
// Restore context from the frame.
__ mov(esi, Operand(ebp, ConstructFrameConstants::kContextOffset));
@@ -245,7 +246,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
// Restore and and call the constructor function.
__ mov(edi, Operand(ebp, ConstructFrameConstants::kConstructorOffset));
- __ InvokeFunction(edi, edx, eax, CALL_FUNCTION);
+ __ InvokeFunction(edi, edx, eax, InvokeType::kCall);
// ----------- S t a t e -------------
// -- eax: constructor result
@@ -597,7 +598,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
// Store input value into generator object.
__ mov(FieldOperand(edx, JSGeneratorObject::kInputOrDebugPosOffset), eax);
__ RecordWriteField(edx, JSGeneratorObject::kInputOrDebugPosOffset, eax, ecx,
- kDontSaveFPRegs);
+ SaveFPRegsMode::kIgnore);
// Load suspended function and context.
__ mov(edi, FieldOperand(edx, JSGeneratorObject::kFunctionOffset));
@@ -645,15 +646,12 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
FieldOperand(edx, JSGeneratorObject::kParametersAndRegistersOffset));
{
Label done_loop, loop;
- __ mov(edi, ecx);
-
__ bind(&loop);
- __ dec(edi);
+ __ dec(ecx);
__ j(less, &done_loop);
__ Push(
- FieldOperand(ebx, edi, times_tagged_size, FixedArray::kHeaderSize));
+ FieldOperand(ebx, ecx, times_tagged_size, FixedArray::kHeaderSize));
__ jmp(&loop);
-
__ bind(&done_loop);
}
@@ -740,7 +738,8 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
__ mov(FieldOperand(closure, JSFunction::kCodeOffset), optimized_code);
__ mov(scratch1, optimized_code); // Write barrier clobbers scratch1 below.
__ RecordWriteField(closure, JSFunction::kCodeOffset, scratch1, scratch2,
- kDontSaveFPRegs, OMIT_REMEMBERED_SET, OMIT_SMI_CHECK);
+ SaveFPRegsMode::kIgnore, RememberedSetAction::kOmit,
+ SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
@@ -1458,7 +1457,7 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
// and edi are used as scratch registers.
Generate_InterpreterPushZeroAndArgsAndReturnAddress(
masm, eax, ecx, edx, edi,
- InterpreterPushArgsThenConstructDescriptor::kStackArgumentsCount,
+ InterpreterPushArgsThenConstructDescriptor::GetStackParameterCount(),
&stack_overflow);
// Call the appropriate constructor. eax and ecx already contain intended
@@ -1591,7 +1590,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ jmp(kJavaScriptCallCodeStartRegister);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Get bytecode array and bytecode offset from the stack frame.
__ mov(kInterpreterBytecodeArrayRegister,
Operand(ebp, InterpreterFrameConstants::kBytecodeArrayFromFp));
@@ -1636,7 +1635,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
// static
@@ -1666,7 +1665,7 @@ void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
__ mov(feedback_vector,
FieldOperand(closure, JSFunction::kFeedbackCellOffset));
__ mov(feedback_vector, FieldOperand(feedback_vector, Cell::kValueOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ CmpObjectType(feedback_vector, FEEDBACK_VECTOR_TYPE, scratch);
__ Assert(equal, AbortReason::kExpectedFeedbackVector);
}
@@ -1939,7 +1938,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
// arguments to the receiver.
__ bind(&no_arguments);
{
- __ Set(eax, 0);
+ __ Move(eax, 0);
__ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET);
}
}
@@ -2108,6 +2107,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
}
// static
+// TODO(v8:11615): Observe Code::kMaxArguments in CallOrConstructVarargs
void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
Handle<Code> code) {
// ----------- S t a t e -------------
@@ -2133,7 +2133,7 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
__ pop(kArgumentsList);
__ PushReturnAddressFrom(edx);
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow kArgumentsList to be a FixedArray, or a FixedDoubleArray if
// kArgumentsLength == 0.
Label ok, fail;
@@ -2294,7 +2294,7 @@ void Builtins::Generate_CallOrConstructForwardVarargs(MacroAssembler* masm,
__ AllocateStackSpace(scratch);
// Include return address and receiver.
__ add(eax, Immediate(2));
- __ Set(current, 0);
+ __ Move(current, 0);
__ jmp(&check);
// Loop.
__ bind(&copy);
@@ -2443,7 +2443,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ movzx_w(
ecx, FieldOperand(edx, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(edi, no_reg, ecx, eax, JUMP_FUNCTION);
+ __ InvokeFunctionCode(edi, no_reg, ecx, eax, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ bind(&class_constructor);
{
@@ -2788,6 +2788,8 @@ void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
}
void Builtins::Generate_BaselineOnStackReplacement(MacroAssembler* masm) {
+ __ mov(kContextRegister,
+ MemOperand(ebp, BaselineFrameConstants::kContextOffset));
return OnStackReplacement(masm, false);
}
@@ -2896,6 +2898,11 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
// TODO(v8:10701): Implement for this platform.
__ Trap();
}
+
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ // Only needed on x64.
+ __ Trap();
+}
#endif // V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
@@ -2908,7 +2915,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// esi: current context (C callee-saved)
// edi: JS function of the caller (C callee-saved)
//
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// ecx: pointer to the first argument
STATIC_ASSERT(eax == kRuntimeCallArgCountRegister);
@@ -2928,8 +2935,8 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
int arg_stack_space = 3;
// Enter the exit frame that transitions from JavaScript to C++.
- if (argv_mode == kArgvInRegister) {
- DCHECK(save_doubles == kDontSaveFPRegs);
+ if (argv_mode == ArgvMode::kRegister) {
+ DCHECK(save_doubles == SaveFPRegsMode::kIgnore);
DCHECK(!builtin_exit_frame);
__ EnterApiExitFrame(arg_stack_space, edi);
@@ -2938,7 +2945,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
__ mov(edi, eax);
} else {
__ EnterExitFrame(
- arg_stack_space, save_doubles == kSaveFPRegs,
+ arg_stack_space, save_doubles == SaveFPRegsMode::kSave,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
}
@@ -2985,7 +2992,8 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
}
// Exit the JavaScript to C++ exit frame.
- __ LeaveExitFrame(save_doubles == kSaveFPRegs, argv_mode == kArgvOnStack);
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave,
+ argv_mode == ArgvMode::kStack);
__ ret(0);
// Handling of exception.
@@ -3148,7 +3156,7 @@ Operand ApiParameterOperand(int index) {
// stores the pointer to the reserved slot into esi.
void PrepareCallApiFunction(MacroAssembler* masm, int argc, Register scratch) {
__ EnterApiExitFrame(argc, scratch);
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ mov(esi, Immediate(bit_cast<int32_t>(kZapValue)));
}
}
@@ -3961,9 +3969,16 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
__ movsd(Operand(esi, dst_offset), xmm0);
}
+ if (FLAG_debug_code) {
+ const int kTopMask = 0x3800;
+ __ push(eax);
+ __ fwait();
+ __ fnstsw_ax();
+ __ test(eax, Immediate(kTopMask));
+ __ Assert(zero, AbortReason::kFpuTopIsNotZeroInDeoptimizer);
+ __ pop(eax);
+ }
// Clear FPU all exceptions.
- // TODO(ulan): Find out why the TOP register is not zero here in some cases,
- // and check that the generated code never deoptimizes with unbalanced stack.
__ fnclex();
// Mark the stack as not iterable for the CPU profiler which won't be able to
diff --git a/deps/v8/src/builtins/ic-callable.tq b/deps/v8/src/builtins/ic-callable.tq
index 85525c4c68..dd29e8bf5e 100644
--- a/deps/v8/src/builtins/ic-callable.tq
+++ b/deps/v8/src/builtins/ic-callable.tq
@@ -6,6 +6,10 @@ namespace ic {
namespace callable {
extern macro IncrementCallCount(FeedbackVector, uintptr): void;
+const kCallFeedbackContentFieldMask: constexpr int32
+ generates 'FeedbackNexus::CallFeedbackContentField::kMask';
+const kCallFeedbackContentFieldShift: constexpr uint32
+ generates 'FeedbackNexus::CallFeedbackContentField::kShift';
macro IsMonomorphic(feedback: MaybeObject, target: JSAny): bool {
return IsWeakReferenceToObject(feedback, target);
@@ -50,8 +54,42 @@ macro TransitionToMegamorphic(implicit context: Context)(
ReportFeedbackUpdate(feedbackVector, slotId, 'Call:TransitionMegamorphic');
}
+macro TaggedEqualPrototypeApplyFunction(implicit context: Context)(
+ target: JSAny): bool {
+ return TaggedEqual(target, GetPrototypeApplyFunction());
+}
+
+macro FeedbackValueIsReceiver(implicit context: Context)(
+ feedbackVector: FeedbackVector, slotId: uintptr): bool {
+ const callCount: intptr = SmiUntag(Cast<Smi>(LoadFeedbackVectorSlot(
+ feedbackVector, slotId, kTaggedSize)) otherwise return false);
+ return (callCount & IntPtrConstant(kCallFeedbackContentFieldMask)) !=
+ IntPtrConstant(0);
+}
+
+macro SetCallFeedbackContent(implicit context: Context)(
+ feedbackVector: FeedbackVector, slotId: uintptr,
+ callFeedbackContent: constexpr CallFeedbackContent): void {
+ // Load the call count field from the feecback vector.
+ const callCount: intptr = SmiUntag(Cast<Smi>(LoadFeedbackVectorSlot(
+ feedbackVector, slotId, kTaggedSize)) otherwise return );
+ // The second lowest bits of the call count are used to state whether the
+ // feedback collected is a target or a receiver. Change that bit based on the
+ // callFeedbackContent input.
+ const callFeedbackContentFieldMask: intptr =
+ ~IntPtrConstant(kCallFeedbackContentFieldMask);
+ const newCount: intptr = (callCount & callFeedbackContentFieldMask) |
+ Convert<intptr>(Signed(
+ %RawConstexprCast<constexpr uint32>(callFeedbackContent)
+ << kCallFeedbackContentFieldShift));
+ StoreFeedbackVectorSlot(
+ feedbackVector, slotId, SmiTag(newCount), SKIP_WRITE_BARRIER,
+ kTaggedSize);
+ ReportFeedbackUpdate(feedbackVector, slotId, 'Call:SetCallFeedbackContent');
+}
+
macro CollectCallFeedback(
- maybeTarget: JSAny, context: Context,
+ maybeTarget: JSAny, maybeReceiver: Lazy<JSAny>, context: Context,
maybeFeedbackVector: Undefined|FeedbackVector, slotId: uintptr): void {
// TODO(v8:9891): Remove this assert once all callers are ported to Torque.
// This assert ensures correctness of maybeFeedbackVector's type which can
@@ -72,7 +110,24 @@ macro CollectCallFeedback(
// If cleared, we have a new chance to become monomorphic.
const feedbackValue: HeapObject =
- MaybeObjectToStrong(feedback) otherwise TryInitializeAsMonomorphic;
+ MaybeObjectToStrong(feedback) otherwise TryReinitializeAsMonomorphic;
+
+ if (FeedbackValueIsReceiver(feedbackVector, slotId) &&
+ TaggedEqualPrototypeApplyFunction(maybeTarget)) {
+ // If the Receiver is recorded and the target is
+ // Function.prototype.apply, check whether we can stay monomorphic based
+ // on the receiver.
+ if (IsMonomorphic(feedback, RunLazy(maybeReceiver))) {
+ return;
+ } else {
+ // If not, reinitialize the feedback with target.
+ SetCallFeedbackContent(
+ feedbackVector, slotId, CallFeedbackContent::kTarget);
+ TryInitializeAsMonomorphic(maybeTarget, feedbackVector, slotId)
+ otherwise TransitionToMegamorphic;
+ return;
+ }
+ }
// Try transitioning to a feedback cell.
// Check if {target}s feedback cell matches the {feedbackValue}.
@@ -92,8 +147,20 @@ macro CollectCallFeedback(
StoreWeakReferenceInFeedbackVector(feedbackVector, slotId, feedbackCell);
ReportFeedbackUpdate(feedbackVector, slotId, 'Call:FeedbackVectorCell');
+ } label TryReinitializeAsMonomorphic {
+ SetCallFeedbackContent(
+ feedbackVector, slotId, CallFeedbackContent::kTarget);
+ goto TryInitializeAsMonomorphic;
} label TryInitializeAsMonomorphic {
- TryInitializeAsMonomorphic(maybeTarget, feedbackVector, slotId)
+ let recordedFunction = maybeTarget;
+ if (TaggedEqualPrototypeApplyFunction(maybeTarget)) {
+ recordedFunction = RunLazy(maybeReceiver);
+ SetCallFeedbackContent(
+ feedbackVector, slotId, CallFeedbackContent::kReceiver);
+ } else {
+ assert(!FeedbackValueIsReceiver(feedbackVector, slotId));
+ }
+ TryInitializeAsMonomorphic(recordedFunction, feedbackVector, slotId)
otherwise TransitionToMegamorphic;
} label TransitionToMegamorphic {
TransitionToMegamorphic(feedbackVector, slotId);
diff --git a/deps/v8/src/builtins/ic.tq b/deps/v8/src/builtins/ic.tq
index 49d4e78fa5..a9e92cf63e 100644
--- a/deps/v8/src/builtins/ic.tq
+++ b/deps/v8/src/builtins/ic.tq
@@ -8,10 +8,10 @@ namespace ic {
@export
macro CollectCallFeedback(
- maybeTarget: JSAny, context: Context,
+ maybeTarget: JSAny, maybeReceiver: Lazy<JSAny>, context: Context,
maybeFeedbackVector: Undefined|FeedbackVector, slotId: uintptr): void {
callable::CollectCallFeedback(
- maybeTarget, context, maybeFeedbackVector, slotId);
+ maybeTarget, maybeReceiver, context, maybeFeedbackVector, slotId);
}
@export
@@ -51,10 +51,15 @@ macro IsUninitialized(feedback: MaybeObject): bool {
}
extern macro LoadFeedbackVectorSlot(FeedbackVector, uintptr): MaybeObject;
+extern macro LoadFeedbackVectorSlot(
+ FeedbackVector, uintptr, constexpr int32): MaybeObject;
extern operator '[]' macro LoadFeedbackVectorSlot(
FeedbackVector, intptr): MaybeObject;
extern macro StoreFeedbackVectorSlot(
FeedbackVector, uintptr, MaybeObject): void;
+extern macro StoreFeedbackVectorSlot(
+ FeedbackVector, uintptr, MaybeObject, constexpr WriteBarrierMode,
+ constexpr int32): void;
extern macro StoreWeakReferenceInFeedbackVector(
FeedbackVector, uintptr, HeapObject): MaybeObject;
extern macro ReportFeedbackUpdate(FeedbackVector, uintptr, constexpr string);
diff --git a/deps/v8/src/builtins/iterator.tq b/deps/v8/src/builtins/iterator.tq
index 05993ea6d7..150e3d2cb5 100644
--- a/deps/v8/src/builtins/iterator.tq
+++ b/deps/v8/src/builtins/iterator.tq
@@ -78,8 +78,8 @@ extern macro LoadContextFromBaseline(): Context;
extern macro LoadFeedbackVectorFromBaseline(): FeedbackVector;
transitioning builtin GetIteratorBaseline(
- context: Context, receiver: JSAny, loadSlot: TaggedIndex,
- callSlot: TaggedIndex): JSAny {
+ receiver: JSAny, loadSlot: TaggedIndex, callSlot: TaggedIndex): JSAny {
+ const context: Context = LoadContextFromBaseline();
const feedback: FeedbackVector = LoadFeedbackVectorFromBaseline();
const iteratorMethod: JSAny =
LoadIC(context, receiver, IteratorSymbolConstant(), loadSlot, feedback);
@@ -97,12 +97,18 @@ transitioning builtin CreateAsyncFromSyncIteratorBaseline(syncIterator: JSAny):
return CreateAsyncFromSyncIterator(context, syncIterator);
}
+macro GetLazyReceiver(receiver: JSAny): JSAny {
+ return receiver;
+}
+
transitioning builtin CallIteratorWithFeedback(
context: Context, receiver: JSAny, iteratorMethod: JSAny, callSlot: Smi,
feedback: Undefined|FeedbackVector): JSAny {
// TODO(v8:10047): Use TaggedIndex here once TurboFan supports it.
const callSlotUnTagged: uintptr = Unsigned(SmiUntag(callSlot));
- ic::CollectCallFeedback(iteratorMethod, context, feedback, callSlotUnTagged);
+ ic::CollectCallFeedback(
+ iteratorMethod, %MakeLazy<JSAny, JSAny>('GetLazyReceiver', receiver),
+ context, feedback, callSlotUnTagged);
const iteratorCallable: Callable = Cast<Callable>(iteratorMethod)
otherwise ThrowCalledNonCallable(iteratorMethod);
return Call(context, iteratorCallable, receiver);
diff --git a/deps/v8/src/builtins/mips/builtins-mips.cc b/deps/v8/src/builtins/mips/builtins-mips.cc
index 1d8e80bdf8..6ff2ed4b5c 100644
--- a/deps/v8/src/builtins/mips/builtins-mips.cc
+++ b/deps/v8/src/builtins/mips/builtins-mips.cc
@@ -6,6 +6,7 @@
#include "src/api/api-arguments.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/debug/debug.h"
#include "src/deoptimizer/deoptimizer.h"
#include "src/execution/frame-constants.h"
@@ -102,7 +103,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// a0: number of arguments (untagged)
// a1: constructor function
// a3: new target
- __ InvokeFunctionWithNewTarget(a1, a3, a0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(a1, a3, a0, InvokeType::kCall);
// Restore context from the frame.
__ lw(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
@@ -226,7 +227,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
__ Push(s0);
// Call the function.
- __ InvokeFunctionWithNewTarget(a1, a3, a0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(a1, a3, a0, InvokeType::kCall);
// ----------- S t a t e -------------
// -- v0: constructor result
@@ -637,7 +638,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
// Store input value into generator object.
__ sw(v0, FieldMemOperand(a1, JSGeneratorObject::kInputOrDebugPosOffset));
__ RecordWriteField(a1, JSGeneratorObject::kInputOrDebugPosOffset, v0, a3,
- kRAHasNotBeenSaved, kDontSaveFPRegs);
+ kRAHasNotBeenSaved, SaveFPRegsMode::kIgnore);
// Load suspended function and context.
__ lw(t0, FieldMemOperand(a1, JSGeneratorObject::kFunctionOffset));
@@ -761,8 +762,8 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
__ sw(optimized_code, FieldMemOperand(closure, JSFunction::kCodeOffset));
__ mov(scratch1, optimized_code); // Write barrier clobbers scratch1 below.
__ RecordWriteField(closure, JSFunction::kCodeOffset, scratch1, scratch2,
- kRAHasNotBeenSaved, kDontSaveFPRegs, OMIT_REMEMBERED_SET,
- OMIT_SMI_CHECK);
+ kRAHasNotBeenSaved, SaveFPRegsMode::kIgnore,
+ RememberedSetAction::kOmit, SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
@@ -1406,7 +1407,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Jump(kJavaScriptCallCodeStartRegister);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Advance the current bytecode offset stored within the given interpreter
// stack frame. This simulates what all bytecode handlers do upon completion
// of the underlying operation.
@@ -1453,7 +1454,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
@@ -1756,7 +1757,7 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
// -- t0 : len (number of elements to push from args)
// -- a3 : new.target (for [[Construct]])
// -----------------------------------
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow a2 to be a FixedArray, or a FixedDoubleArray if t0 == 0.
Label ok, fail;
__ AssertNotSmi(a2);
@@ -2005,7 +2006,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ lhu(a2,
FieldMemOperand(a2, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(a1, no_reg, a2, a0, JUMP_FUNCTION);
+ __ InvokeFunctionCode(a1, no_reg, a2, a0, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ bind(&class_constructor);
@@ -2364,6 +2365,12 @@ void Builtins::Generate_WasmDebugBreak(MacroAssembler* masm) {
void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
__ Trap();
}
+
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ // Only needed on x64.
+ __ Trap();
+}
+
#endif // V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
@@ -2376,10 +2383,10 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// sp: stack pointer (restored as callee's sp after C call)
// cp: current context (C callee-saved)
//
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// a2: pointer to the first argument
- if (argv_mode == kArgvInRegister) {
+ if (argv_mode == ArgvMode::kRegister) {
// Move argv into the correct register.
__ mov(s1, a2);
} else {
@@ -2391,7 +2398,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Enter the exit frame that transitions from JavaScript to C++.
FrameScope scope(masm, StackFrame::MANUAL);
__ EnterExitFrame(
- save_doubles == kSaveFPRegs, 0,
+ save_doubles == SaveFPRegsMode::kSave, 0,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
// s0: number of arguments including receiver (C callee-saved)
@@ -2440,12 +2447,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// v0:v1: result
// sp: stack pointer
// fp: frame pointer
- Register argc = argv_mode == kArgvInRegister
+ Register argc = argv_mode == ArgvMode::kRegister
// We don't want to pop arguments so set argc to no_reg.
? no_reg
// s0: still holds argc (callee-saved).
: s0;
- __ LeaveExitFrame(save_doubles == kSaveFPRegs, argc, EMIT_RETURN);
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, argc, EMIT_RETURN);
// Handling of exception.
__ bind(&exception_returned);
@@ -2698,7 +2705,7 @@ void CallApiFunctionAndReturn(MacroAssembler* masm, Register function_address,
// No more valid handles (the result handle was the last one). Restore
// previous handle scope.
__ sw(s0, MemOperand(s5, kNextOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ lw(a1, MemOperand(s5, kLevelOffset));
__ Check(eq, AbortReason::kUnexpectedLevelAfterReturnFromApiCall, a1,
Operand(s2));
diff --git a/deps/v8/src/builtins/mips64/builtins-mips64.cc b/deps/v8/src/builtins/mips64/builtins-mips64.cc
index c029188f14..9d0156e927 100644
--- a/deps/v8/src/builtins/mips64/builtins-mips64.cc
+++ b/deps/v8/src/builtins/mips64/builtins-mips64.cc
@@ -6,6 +6,7 @@
#include "src/api/api-arguments.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/debug/debug.h"
#include "src/deoptimizer/deoptimizer.h"
#include "src/execution/frame-constants.h"
@@ -102,7 +103,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// a0: number of arguments (untagged)
// a1: constructor function
// a3: new target
- __ InvokeFunctionWithNewTarget(a1, a3, a0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(a1, a3, a0, InvokeType::kCall);
// Restore context from the frame.
__ Ld(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
@@ -227,7 +228,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
__ Push(a6);
// Call the function.
- __ InvokeFunctionWithNewTarget(a1, a3, a0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(a1, a3, a0, InvokeType::kCall);
// ----------- S t a t e -------------
// -- v0: constructor result
@@ -324,7 +325,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
// Store input value into generator object.
__ Sd(v0, FieldMemOperand(a1, JSGeneratorObject::kInputOrDebugPosOffset));
__ RecordWriteField(a1, JSGeneratorObject::kInputOrDebugPosOffset, v0, a3,
- kRAHasNotBeenSaved, kDontSaveFPRegs);
+ kRAHasNotBeenSaved, SaveFPRegsMode::kIgnore);
// Load suspended function and context.
__ Ld(a4, FieldMemOperand(a1, JSGeneratorObject::kFunctionOffset));
@@ -777,8 +778,8 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
__ Sd(optimized_code, FieldMemOperand(closure, JSFunction::kCodeOffset));
__ mov(scratch1, optimized_code); // Write barrier clobbers scratch1 below.
__ RecordWriteField(closure, JSFunction::kCodeOffset, scratch1, scratch2,
- kRAHasNotBeenSaved, kDontSaveFPRegs, OMIT_REMEMBERED_SET,
- OMIT_SMI_CHECK);
+ kRAHasNotBeenSaved, SaveFPRegsMode::kIgnore,
+ RememberedSetAction::kOmit, SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
@@ -1424,7 +1425,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Jump(kJavaScriptCallCodeStartRegister);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Advance the current bytecode offset stored within the given interpreter
// stack frame. This simulates what all bytecode handlers do upon completion
// of the underlying operation.
@@ -1471,7 +1472,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
@@ -1815,7 +1816,7 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
// -- a4 : len (number of elements to push from args)
// -- a3 : new.target (for [[Construct]])
// -----------------------------------
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow a2 to be a FixedArray, or a FixedDoubleArray if a4 == 0.
Label ok, fail;
__ AssertNotSmi(a2);
@@ -2073,7 +2074,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ Lhu(a2,
FieldMemOperand(a2, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(a1, no_reg, a2, a0, JUMP_FUNCTION);
+ __ InvokeFunctionCode(a1, no_reg, a2, a0, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ bind(&class_constructor);
@@ -2395,7 +2396,11 @@ void Builtins::Generate_WasmCompileLazy(MacroAssembler* masm) {
__ Lbu(a1, MemOperand(a1));
__ Branch(&push_doubles, le, a1, Operand(zero_reg));
// Save vector registers.
- __ MultiPushMSA(fp_regs);
+ {
+ CpuFeatureScope msa_scope(
+ masm, MIPS_SIMD, CpuFeatureScope::CheckPolicy::kDontCheckSupported);
+ __ MultiPushMSA(fp_regs);
+ }
__ Branch(&simd_pushed);
__ bind(&push_doubles);
__ MultiPushFPU(fp_regs);
@@ -2419,7 +2424,11 @@ void Builtins::Generate_WasmCompileLazy(MacroAssembler* masm) {
__ Lbu(a1, MemOperand(a1));
__ Branch(&pop_doubles, le, a1, Operand(zero_reg));
// Pop vector registers.
- __ MultiPopMSA(fp_regs);
+ {
+ CpuFeatureScope msa_scope(
+ masm, MIPS_SIMD, CpuFeatureScope::CheckPolicy::kDontCheckSupported);
+ __ MultiPopMSA(fp_regs);
+ }
__ Branch(&simd_popped);
__ bind(&pop_doubles);
__ Daddu(sp, sp, base::bits::CountPopulation(fp_regs) * kDoubleSize);
@@ -2456,6 +2465,12 @@ void Builtins::Generate_WasmDebugBreak(MacroAssembler* masm) {
void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
__ Trap();
}
+
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ // Only needed on x64.
+ __ Trap();
+}
+
#endif // V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
@@ -2468,10 +2483,10 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// sp: stack pointer (restored as callee's sp after C call)
// cp: current context (C callee-saved)
//
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// a2: pointer to the first argument
- if (argv_mode == kArgvInRegister) {
+ if (argv_mode == ArgvMode::kRegister) {
// Move argv into the correct register.
__ mov(s1, a2);
} else {
@@ -2483,7 +2498,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Enter the exit frame that transitions from JavaScript to C++.
FrameScope scope(masm, StackFrame::MANUAL);
__ EnterExitFrame(
- save_doubles == kSaveFPRegs, 0,
+ save_doubles == SaveFPRegsMode::kSave, 0,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
// s0: number of arguments including receiver (C callee-saved)
@@ -2532,12 +2547,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// v0:v1: result
// sp: stack pointer
// fp: frame pointer
- Register argc = argv_mode == kArgvInRegister
+ Register argc = argv_mode == ArgvMode::kRegister
// We don't want to pop arguments so set argc to no_reg.
? no_reg
// s0: still holds argc (callee-saved).
: s0;
- __ LeaveExitFrame(save_doubles == kSaveFPRegs, argc, EMIT_RETURN);
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, argc, EMIT_RETURN);
// Handling of exception.
__ bind(&exception_returned);
@@ -2794,7 +2809,7 @@ void CallApiFunctionAndReturn(MacroAssembler* masm, Register function_address,
// No more valid handles (the result handle was the last one). Restore
// previous handle scope.
__ Sd(s0, MemOperand(s5, kNextOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Lw(a1, MemOperand(s5, kLevelOffset));
__ Check(eq, AbortReason::kUnexpectedLevelAfterReturnFromApiCall, a1,
Operand(s2));
diff --git a/deps/v8/src/builtins/ppc/builtins-ppc.cc b/deps/v8/src/builtins/ppc/builtins-ppc.cc
index bc467c9ff9..35d817d3a2 100644
--- a/deps/v8/src/builtins/ppc/builtins-ppc.cc
+++ b/deps/v8/src/builtins/ppc/builtins-ppc.cc
@@ -6,6 +6,7 @@
#include "src/api/api-arguments.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
// For interpreter_entry_return_pc_offset. TODO(jkummerow): Drop.
#include "src/codegen/macro-assembler-inl.h"
#include "src/codegen/register-configuration.h"
@@ -113,13 +114,13 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// r6: new target
{
ConstantPoolUnavailableScope constant_pool_unavailable(masm);
- __ InvokeFunctionWithNewTarget(r4, r6, r3, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(r4, r6, r3, InvokeType::kCall);
}
// Restore context from the frame.
- __ LoadP(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
+ __ LoadU64(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
// Restore smi-tagged arguments count from the frame.
- __ LoadP(scratch, MemOperand(fp, ConstructFrameConstants::kLengthOffset));
+ __ LoadU64(scratch, MemOperand(fp, ConstructFrameConstants::kLengthOffset));
// Leave construct frame.
}
@@ -229,8 +230,8 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
// -----------------------------------
// Restore constructor function and argument count.
- __ LoadP(r4, MemOperand(fp, ConstructFrameConstants::kConstructorOffset));
- __ LoadP(r3, MemOperand(fp, ConstructFrameConstants::kLengthOffset));
+ __ LoadU64(r4, MemOperand(fp, ConstructFrameConstants::kConstructorOffset));
+ __ LoadU64(r3, MemOperand(fp, ConstructFrameConstants::kLengthOffset));
__ SmiUntag(r3);
Label stack_overflow;
@@ -245,7 +246,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
// Call the function.
{
ConstantPoolUnavailableScope constant_pool_unavailable(masm);
- __ InvokeFunctionWithNewTarget(r4, r6, r3, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(r4, r6, r3, InvokeType::kCall);
}
// ----------- S t a t e -------------
@@ -275,12 +276,12 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
// Throw away the result of the constructor invocation and use the
// on-stack receiver as the result.
__ bind(&use_receiver);
- __ LoadP(r3, MemOperand(sp));
+ __ LoadU64(r3, MemOperand(sp));
__ JumpIfRoot(r3, RootIndex::kTheHoleValue, &do_throw);
__ bind(&leave_and_return);
// Restore smi-tagged arguments count from the frame.
- __ LoadP(r4, MemOperand(fp, ConstructFrameConstants::kLengthOffset));
+ __ LoadU64(r4, MemOperand(fp, ConstructFrameConstants::kLengthOffset));
// Leave construct frame.
__ LeaveFrame(StackFrame::CONSTRUCT);
@@ -305,13 +306,13 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
__ bind(&do_throw);
// Restore the context from the frame.
- __ LoadP(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
+ __ LoadU64(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
__ CallRuntime(Runtime::kThrowConstructorReturnedNonObject);
__ bkpt(0);
__ bind(&stack_overflow);
// Restore the context from the frame.
- __ LoadP(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
+ __ LoadU64(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
__ CallRuntime(Runtime::kThrowStackOverflow);
// Unreachable code.
__ bkpt(0);
@@ -347,7 +348,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
__ StoreTaggedField(
r3, FieldMemOperand(r4, JSGeneratorObject::kInputOrDebugPosOffset), r0);
__ RecordWriteField(r4, JSGeneratorObject::kInputOrDebugPosOffset, r3, r6,
- kLRHasNotBeenSaved, kDontSaveFPRegs);
+ kLRHasNotBeenSaved, SaveFPRegsMode::kIgnore);
// Load suspended function and context.
__ LoadTaggedPointerField(
@@ -373,7 +374,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
ExternalReference::debug_suspended_generator_address(masm->isolate());
__ Move(scratch, debug_suspended_generator);
- __ LoadP(scratch, MemOperand(scratch));
+ __ LoadU64(scratch, MemOperand(scratch));
__ cmp(scratch, r4);
__ beq(&prepare_step_in_suspended_generator);
__ bind(&stepping_prepared);
@@ -402,19 +403,16 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
FieldMemOperand(r4, JSGeneratorObject::kParametersAndRegistersOffset));
{
Label done_loop, loop;
- __ mr(r9, r6);
-
__ bind(&loop);
- __ subi(r9, r9, Operand(1));
- __ cmpi(r9, Operand::Zero());
+ __ subi(r6, r6, Operand(1));
+ __ cmpi(r6, Operand::Zero());
__ blt(&done_loop);
- __ ShiftLeftImm(r10, r9, Operand(kTaggedSizeLog2));
+ __ ShiftLeftImm(r10, r6, Operand(kTaggedSizeLog2));
__ add(scratch, r5, r10);
__ LoadAnyTaggedField(scratch,
FieldMemOperand(scratch, FixedArray::kHeaderSize));
__ Push(scratch);
__ b(&loop);
-
__ bind(&done_loop);
// Push receiver.
@@ -554,7 +552,7 @@ void Generate_JSEntryVariant(MacroAssembler* masm, StackFrame::Type type,
// Save copies of the top frame descriptor on the stack.
__ Move(r3, ExternalReference::Create(IsolateAddressId::kCEntryFPAddress,
masm->isolate()));
- __ LoadP(r0, MemOperand(r3));
+ __ LoadU64(r0, MemOperand(r3));
__ push(r0);
// Clear c_entry_fp, now we've pushed its previous value to the stack.
@@ -574,7 +572,7 @@ void Generate_JSEntryVariant(MacroAssembler* masm, StackFrame::Type type,
ExternalReference::Create(IsolateAddressId::kJSEntrySPAddress,
masm->isolate());
__ Move(r3, js_entry_sp);
- __ LoadP(scratch, MemOperand(r3));
+ __ LoadU64(scratch, MemOperand(r3));
__ cmpi(scratch, Operand::Zero());
__ bne(&non_outermost_js);
__ StoreP(fp, MemOperand(r3));
@@ -663,7 +661,7 @@ void Generate_JSEntryVariant(MacroAssembler* masm, StackFrame::Type type,
__ MultiPop(kCalleeSaved);
// Return
- __ LoadP(r0, MemOperand(sp, kStackFrameLRSlot * kSystemPointerSize));
+ __ LoadU64(r0, MemOperand(sp, kStackFrameLRSlot * kSystemPointerSize));
__ mtlr(r0);
__ blr();
}
@@ -703,7 +701,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
ExternalReference context_address = ExternalReference::Create(
IsolateAddressId::kContextAddress, masm->isolate());
__ Move(cp, context_address);
- __ LoadP(cp, MemOperand(cp));
+ __ LoadU64(cp, MemOperand(cp));
// Push the function.
__ Push(r5);
@@ -734,7 +732,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
__ mtctr(r7);
__ bind(&loop);
__ LoadPU(r9, MemOperand(r8, -kSystemPointerSize)); // read next parameter
- __ LoadP(r0, MemOperand(r9)); // dereference handle
+ __ LoadU64(r0, MemOperand(r9)); // dereference handle
__ push(r0); // push parameter
__ bdnz(&loop);
__ bind(&done);
@@ -800,23 +798,23 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
FieldMemOperand(closure, JSFunction::kCodeOffset), r0);
__ mr(scratch1, optimized_code); // Write barrier clobbers scratch1 below.
__ RecordWriteField(closure, JSFunction::kCodeOffset, scratch1, scratch2,
- kLRHasNotBeenSaved, kDontSaveFPRegs, OMIT_REMEMBERED_SET,
- OMIT_SMI_CHECK);
+ kLRHasNotBeenSaved, SaveFPRegsMode::kIgnore,
+ RememberedSetAction::kOmit, SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
Register scratch2) {
Register params_size = scratch1;
// Get the size of the formal parameters + receiver (in bytes).
- __ LoadP(params_size,
- MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
+ __ LoadU64(params_size,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
__ lwz(params_size,
FieldMemOperand(params_size, BytecodeArray::kParameterSizeOffset));
Register actual_params_size = scratch2;
// Compute the size of the actual parameters + receiver (in bytes).
- __ LoadP(actual_params_size,
- MemOperand(fp, StandardFrameConstants::kArgCOffset));
+ __ LoadU64(actual_params_size,
+ MemOperand(fp, StandardFrameConstants::kArgCOffset));
__ ShiftLeftImm(actual_params_size, actual_params_size,
Operand(kSystemPointerSizeLog2));
__ addi(actual_params_size, actual_params_size, Operand(kSystemPointerSize));
@@ -869,7 +867,7 @@ static void TailCallOptimizedCodeSlot(MacroAssembler* masm,
__ LoadTaggedPointerField(
scratch,
FieldMemOperand(optimized_code_entry, Code::kCodeDataContainerOffset));
- __ LoadWordArith(
+ __ LoadS32(
scratch,
FieldMemOperand(scratch, CodeDataContainer::kKindSpecificFlagsOffset));
__ TestBit(scratch, Code::kMarkedForDeoptimizationBit, r0);
@@ -1082,9 +1080,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
Register optimization_state = r7;
// Read off the optimization state in the feedback vector.
- __ LoadWord(optimization_state,
- FieldMemOperand(feedback_vector, FeedbackVector::kFlagsOffset),
- r0);
+ __ LoadU32(optimization_state,
+ FieldMemOperand(feedback_vector, FeedbackVector::kFlagsOffset),
+ r0);
// Check if the optimized code slot is not empty or has a optimization marker.
Label has_optimized_code_or_marker;
@@ -1097,7 +1095,7 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
__ bind(&not_optimized);
// Increment invocation count for the function.
- __ LoadWord(
+ __ LoadU32(
r8,
FieldMemOperand(feedback_vector, FeedbackVector::kInvocationCountOffset),
r0);
@@ -1165,10 +1163,10 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
// If the bytecode array has a valid incoming new target or generator object
// register, initialize it with incoming value which was passed in r6.
Label no_incoming_new_target_or_generator_register;
- __ LoadWordArith(
- r8, FieldMemOperand(
- kInterpreterBytecodeArrayRegister,
- BytecodeArray::kIncomingNewTargetOrGeneratorRegisterOffset));
+ __ LoadS32(r8,
+ FieldMemOperand(
+ kInterpreterBytecodeArrayRegister,
+ BytecodeArray::kIncomingNewTargetOrGeneratorRegisterOffset));
__ cmpi(r8, Operand::Zero());
__ beq(&no_incoming_new_target_or_generator_register);
__ ShiftLeftImm(r8, r8, Operand(kSystemPointerSizeLog2));
@@ -1205,10 +1203,10 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
// or the interpreter tail calling a builtin and then a dispatch.
// Get bytecode array and bytecode offset from the stack frame.
- __ LoadP(kInterpreterBytecodeArrayRegister,
- MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
- __ LoadP(kInterpreterBytecodeOffsetRegister,
- MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp));
+ __ LoadU64(kInterpreterBytecodeArrayRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
+ __ LoadU64(kInterpreterBytecodeOffsetRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp));
__ SmiUntag(kInterpreterBytecodeOffsetRegister);
// Either return, or advance to the next bytecode and dispatch.
@@ -1238,8 +1236,8 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
// After the call, restore the bytecode array, bytecode offset and accumulator
// registers again. Also, restore the bytecode offset in the stack to its
// previous value.
- __ LoadP(kInterpreterBytecodeArrayRegister,
- MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
+ __ LoadU64(kInterpreterBytecodeArrayRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
__ mov(kInterpreterBytecodeOffsetRegister,
Operand(BytecodeArray::kHeaderSize - kHeapObjectTag));
__ LoadRoot(kInterpreterAccumulatorRegister, RootIndex::kUndefinedValue);
@@ -1313,7 +1311,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
// Pass the spread in the register r3.
// r2 already points to the penultimate argument, the spread
// lies in the next interpreter register.
- __ LoadP(r5, MemOperand(r5, -kSystemPointerSize));
+ __ LoadU64(r5, MemOperand(r5, -kSystemPointerSize));
}
// Call the target.
@@ -1364,7 +1362,7 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
// r4 already points to the penultimate argument, the spread
// lies in the next interpreter register.
__ subi(r7, r7, Operand(kSystemPointerSize));
- __ LoadP(r5, MemOperand(r7));
+ __ LoadU64(r5, MemOperand(r7));
} else {
__ AssertUndefinedOrAllocationSite(r5, r8);
}
@@ -1406,7 +1404,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
// custom copy of the interpreter entry trampoline for profiling. If so,
// get the custom trampoline, otherwise grab the entry address of the global
// trampoline.
- __ LoadP(r5, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
+ __ LoadU64(r5, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
__ LoadTaggedPointerField(
r5, FieldMemOperand(r5, JSFunction::kSharedFunctionInfoOffset));
__ LoadTaggedPointerField(
@@ -1425,7 +1423,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Move(r5, ExternalReference::
address_of_interpreter_entry_trampoline_instruction_start(
masm->isolate()));
- __ LoadP(r5, MemOperand(r5));
+ __ LoadU64(r5, MemOperand(r5));
__ bind(&trampoline_loaded);
__ addi(r0, r5, Operand(interpreter_entry_return_pc_offset.value()));
@@ -1437,8 +1435,8 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
ExternalReference::interpreter_dispatch_table_address(masm->isolate()));
// Get the bytecode array pointer from the frame.
- __ LoadP(kInterpreterBytecodeArrayRegister,
- MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
+ __ LoadU64(kInterpreterBytecodeArrayRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
if (FLAG_debug_code) {
// Check function data field is actually a BytecodeArray object.
@@ -1453,8 +1451,8 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
}
// Get the target bytecode offset from the frame.
- __ LoadP(kInterpreterBytecodeOffsetRegister,
- MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp));
+ __ LoadU64(kInterpreterBytecodeOffsetRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp));
__ SmiUntag(kInterpreterBytecodeOffsetRegister);
if (FLAG_debug_code) {
@@ -1478,12 +1476,12 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Jump(kJavaScriptCallCodeStartRegister);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Get bytecode array and bytecode offset from the stack frame.
- __ LoadP(kInterpreterBytecodeArrayRegister,
- MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
- __ LoadP(kInterpreterBytecodeOffsetRegister,
- MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp));
+ __ LoadU64(kInterpreterBytecodeArrayRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
+ __ LoadU64(kInterpreterBytecodeOffsetRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp));
__ SmiUntag(kInterpreterBytecodeOffsetRegister);
Label enter_bytecode, function_entry_bytecode;
@@ -1524,7 +1522,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
@@ -1567,7 +1565,7 @@ void Generate_ContinueToBuiltinHelper(MacroAssembler* masm,
__ subi(r3, r3,
Operand(BuiltinContinuationFrameConstants::kFixedSlotCount));
}
- __ LoadP(
+ __ LoadU64(
fp,
MemOperand(sp, BuiltinContinuationFrameConstants::kFixedFrameSizeFromFp));
// Load builtin index (stored as a Smi) and use it to get the builtin start
@@ -1609,7 +1607,7 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
}
DCHECK_EQ(kInterpreterAccumulatorRegister.code(), r3.code());
- __ LoadP(r3, MemOperand(sp, 0 * kSystemPointerSize));
+ __ LoadU64(r3, MemOperand(sp, 0 * kSystemPointerSize));
__ addi(sp, sp, Operand(1 * kSystemPointerSize));
__ Ret();
}
@@ -1677,13 +1675,13 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
__ mr(r5, r8);
Label done;
- __ LoadP(r4, MemOperand(sp)); // receiver
+ __ LoadU64(r4, MemOperand(sp)); // receiver
__ cmpi(r3, Operand(1));
__ blt(&done);
- __ LoadP(r8, MemOperand(sp, kSystemPointerSize)); // thisArg
+ __ LoadU64(r8, MemOperand(sp, kSystemPointerSize)); // thisArg
__ cmpi(r3, Operand(2));
__ blt(&done);
- __ LoadP(r5, MemOperand(sp, 2 * kSystemPointerSize)); // argArray
+ __ LoadU64(r5, MemOperand(sp, 2 * kSystemPointerSize)); // argArray
__ bind(&done);
__ ShiftLeftImm(ip, r3, Operand(kSystemPointerSizeLog2));
@@ -1762,13 +1760,13 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
Label done;
__ cmpi(r3, Operand(1));
__ blt(&done);
- __ LoadP(r4, MemOperand(sp, kSystemPointerSize)); // thisArg
+ __ LoadU64(r4, MemOperand(sp, kSystemPointerSize)); // thisArg
__ cmpi(r3, Operand(2));
__ blt(&done);
- __ LoadP(r8, MemOperand(sp, 2 * kSystemPointerSize)); // argArray
+ __ LoadU64(r8, MemOperand(sp, 2 * kSystemPointerSize)); // argArray
__ cmpi(r3, Operand(3));
__ blt(&done);
- __ LoadP(r5, MemOperand(sp, 3 * kSystemPointerSize)); // argArray
+ __ LoadU64(r5, MemOperand(sp, 3 * kSystemPointerSize)); // argArray
__ bind(&done);
__ ShiftLeftImm(ip, r3, Operand(kSystemPointerSizeLog2));
@@ -1812,14 +1810,14 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
__ mr(r7, r4);
__ cmpi(r3, Operand(1));
__ blt(&done);
- __ LoadP(r4, MemOperand(sp, kSystemPointerSize)); // thisArg
+ __ LoadU64(r4, MemOperand(sp, kSystemPointerSize)); // thisArg
__ mr(r6, r4);
__ cmpi(r3, Operand(2));
__ blt(&done);
- __ LoadP(r5, MemOperand(sp, 2 * kSystemPointerSize)); // argArray
+ __ LoadU64(r5, MemOperand(sp, 2 * kSystemPointerSize)); // argArray
__ cmpi(r3, Operand(3));
__ blt(&done);
- __ LoadP(r6, MemOperand(sp, 3 * kSystemPointerSize)); // argArray
+ __ LoadU64(r6, MemOperand(sp, 3 * kSystemPointerSize)); // argArray
__ bind(&done);
__ ShiftLeftImm(r0, r3, Operand(kSystemPointerSizeLog2));
__ add(sp, sp, r0);
@@ -1847,6 +1845,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
}
// static
+// TODO(v8:11615): Observe Code::kMaxArguments in CallOrConstructVarargs
void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
Handle<Code> code) {
// ----------- S t a t e -------------
@@ -1859,7 +1858,7 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
Register scratch = ip;
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow r5 to be a FixedArray, or a FixedDoubleArray if r7 == 0.
Label ok, fail;
__ AssertNotSmi(r5);
@@ -1963,7 +1962,7 @@ void Builtins::Generate_CallOrConstructForwardVarargs(MacroAssembler* masm,
}
Label stack_done, stack_overflow;
- __ LoadP(r8, MemOperand(fp, StandardFrameConstants::kArgCOffset));
+ __ LoadU64(r8, MemOperand(fp, StandardFrameConstants::kArgCOffset));
__ sub(r8, r8, r5, LeaveOE, SetRC);
__ ble(&stack_done, cr0);
{
@@ -2125,7 +2124,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ LoadHalfWord(
r5, FieldMemOperand(r5, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(r4, no_reg, r5, r3, JUMP_FUNCTION);
+ __ InvokeFunctionCode(r4, no_reg, r5, r3, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ bind(&class_constructor);
@@ -2511,6 +2510,11 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
// TODO(v8:10701): Implement for this platform.
__ Trap();
}
+
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ // Only needed on x64.
+ __ Trap();
+}
#endif // V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
@@ -2523,12 +2527,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// sp: stack pointer (restored as callee's sp after C call)
// cp: current context (C callee-saved)
//
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// r5: pointer to the first argument
__ mr(r15, r4);
- if (argv_mode == kArgvInRegister) {
+ if (argv_mode == ArgvMode::kRegister) {
// Move argv into the correct register.
__ mr(r4, r5);
} else {
@@ -2552,7 +2556,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
}
__ EnterExitFrame(
- save_doubles, arg_stack_space,
+ save_doubles == SaveFPRegsMode::kSave, arg_stack_space,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
// Store a copy of argc in callee-saved registers for later.
@@ -2584,8 +2588,8 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// If return value is on the stack, pop it to registers.
if (needs_return_buffer) {
- __ LoadP(r4, MemOperand(r3, kSystemPointerSize));
- __ LoadP(r3, MemOperand(r3));
+ __ LoadU64(r4, MemOperand(r3, kSystemPointerSize));
+ __ LoadU64(r3, MemOperand(r3));
}
// Check result for exception sentinel.
@@ -2601,7 +2605,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
IsolateAddressId::kPendingExceptionAddress, masm->isolate());
__ Move(r6, pending_exception_address);
- __ LoadP(r6, MemOperand(r6));
+ __ LoadU64(r6, MemOperand(r6));
__ CompareRoot(r6, RootIndex::kTheHoleValue);
// Cannot use check here as it attempts to generate call into runtime.
__ beq(&okay);
@@ -2613,12 +2617,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// r3:r4: result
// sp: stack pointer
// fp: frame pointer
- Register argc = argv_mode == kArgvInRegister
+ Register argc = argv_mode == ArgvMode::kRegister
// We don't want to pop arguments so set argc to no_reg.
? no_reg
// r14: still holds argc (callee-saved).
: r14;
- __ LeaveExitFrame(save_doubles, argc);
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, argc);
__ blr();
// Handling of exception.
@@ -2653,11 +2657,11 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Retrieve the handler context, SP and FP.
__ Move(cp, pending_handler_context_address);
- __ LoadP(cp, MemOperand(cp));
+ __ LoadU64(cp, MemOperand(cp));
__ Move(sp, pending_handler_sp_address);
- __ LoadP(sp, MemOperand(sp));
+ __ LoadU64(sp, MemOperand(sp));
__ Move(fp, pending_handler_fp_address);
- __ LoadP(fp, MemOperand(fp));
+ __ LoadU64(fp, MemOperand(fp));
// If the handler is a JS frame, restore the context to the frame. Note that
// the context will be set to (cp == 0) for non-JS frames.
@@ -2685,10 +2689,10 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Compute the handler entry address and jump to it.
ConstantPoolUnavailableScope constant_pool_unavailable(masm);
__ Move(ip, pending_handler_entrypoint_address);
- __ LoadP(ip, MemOperand(ip));
+ __ LoadU64(ip, MemOperand(ip));
if (FLAG_enable_embedded_constant_pool) {
__ Move(kConstantPoolRegister, pending_handler_constant_pool_address);
- __ LoadP(kConstantPoolRegister, MemOperand(kConstantPoolRegister));
+ __ LoadU64(kConstantPoolRegister, MemOperand(kConstantPoolRegister));
}
__ Jump(ip);
}
@@ -2873,8 +2877,8 @@ static void CallApiFunctionAndReturn(MacroAssembler* masm,
// r15 - next_address->kLimitOffset
// r16 - next_address->kLevelOffset
__ Move(r17, next_address);
- __ LoadP(r14, MemOperand(r17, kNextOffset));
- __ LoadP(r15, MemOperand(r17, kLimitOffset));
+ __ LoadU64(r14, MemOperand(r17, kNextOffset));
+ __ LoadU64(r15, MemOperand(r17, kLimitOffset));
__ lwz(r16, MemOperand(r17, kLevelOffset));
__ addi(r16, r16, Operand(1));
__ stw(r16, MemOperand(r17, kLevelOffset));
@@ -2887,19 +2891,19 @@ static void CallApiFunctionAndReturn(MacroAssembler* masm,
Label return_value_loaded;
// load value from ReturnValue
- __ LoadP(r3, return_value_operand);
+ __ LoadU64(r3, return_value_operand);
__ bind(&return_value_loaded);
// No more valid handles (the result handle was the last one). Restore
// previous handle scope.
__ StoreP(r14, MemOperand(r17, kNextOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ lwz(r4, MemOperand(r17, kLevelOffset));
__ cmp(r4, r16);
__ Check(eq, AbortReason::kUnexpectedLevelAfterReturnFromApiCall);
}
__ subi(r16, r16, Operand(1));
__ stw(r16, MemOperand(r17, kLevelOffset));
- __ LoadP(r0, MemOperand(r17, kLimitOffset));
+ __ LoadU64(r0, MemOperand(r17, kLimitOffset));
__ cmp(r15, r0);
__ bne(&delete_allocated_handles);
@@ -2907,7 +2911,7 @@ static void CallApiFunctionAndReturn(MacroAssembler* masm,
__ bind(&leave_exit_frame);
// LeaveExitFrame expects unwind space to be in a register.
if (stack_space_operand != nullptr) {
- __ LoadP(r14, *stack_space_operand);
+ __ LoadU64(r14, *stack_space_operand);
} else {
__ mov(r14, Operand(stack_space));
}
@@ -2916,7 +2920,7 @@ static void CallApiFunctionAndReturn(MacroAssembler* masm,
// Check if the function scheduled an exception.
__ LoadRoot(r14, RootIndex::kTheHoleValue);
__ Move(r15, ExternalReference::scheduled_exception_address(isolate));
- __ LoadP(r15, MemOperand(r15));
+ __ LoadU64(r15, MemOperand(r15));
__ cmp(r14, r15);
__ bne(&promote_scheduled_exception);
@@ -3151,8 +3155,8 @@ void Builtins::Generate_CallApiGetter(MacroAssembler* masm) {
__ LoadTaggedPointerField(
scratch, FieldMemOperand(callback, AccessorInfo::kJsGetterOffset));
- __ LoadP(api_function_address,
- FieldMemOperand(scratch, Foreign::kForeignAddressOffset));
+ __ LoadU64(api_function_address,
+ FieldMemOperand(scratch, Foreign::kForeignAddressOffset));
// +3 is to skip prolog, return address and name handle.
MemOperand return_value_operand(
@@ -3174,13 +3178,14 @@ void Builtins::Generate_DirectCEntry(MacroAssembler* masm) {
if (ABI_USES_FUNCTION_DESCRIPTORS) {
// AIX/PPC64BE Linux use a function descriptor;
- __ LoadP(ToRegister(ABI_TOC_REGISTER),
- MemOperand(temp2, kSystemPointerSize));
- __ LoadP(temp2, MemOperand(temp2, 0)); // Instruction address
+ __ LoadU64(ToRegister(ABI_TOC_REGISTER),
+ MemOperand(temp2, kSystemPointerSize));
+ __ LoadU64(temp2, MemOperand(temp2, 0)); // Instruction address
}
__ Call(temp2); // Call the C++ function.
- __ LoadP(r0, MemOperand(sp, kStackFrameExtraParamSlot * kSystemPointerSize));
+ __ LoadU64(r0,
+ MemOperand(sp, kStackFrameExtraParamSlot * kSystemPointerSize));
__ mtlr(r0);
__ blr();
}
@@ -3230,9 +3235,6 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
const int kSavedRegistersAreaSize =
(kNumberOfRegisters * kSystemPointerSize) + kDoubleRegsSize;
- // Get the bailout id is passed as r29 by the caller.
- __ mr(r5, r29);
-
__ mov(r5, Operand(Deoptimizer::kFixedExitSizeMarker));
// Get the address of the location in the code object (r6) (return
// address for lazy deoptimization) and compute the fp-to-sp delta in
@@ -3246,9 +3248,10 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
__ PrepareCallCFunction(6, r8);
__ li(r3, Operand::Zero());
Label context_check;
- __ LoadP(r4, MemOperand(fp, CommonFrameConstants::kContextOrFrameTypeOffset));
+ __ LoadU64(r4,
+ MemOperand(fp, CommonFrameConstants::kContextOrFrameTypeOffset));
__ JumpIfSmi(r4, &context_check);
- __ LoadP(r3, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
+ __ LoadU64(r3, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
__ bind(&context_check);
__ li(r4, Operand(static_cast<int>(deopt_kind)));
// r5: bailout id already loaded.
@@ -3263,14 +3266,14 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
// Preserve "deoptimizer" object in register r3 and get the input
// frame descriptor pointer to r4 (deoptimizer->input_);
- __ LoadP(r4, MemOperand(r3, Deoptimizer::input_offset()));
+ __ LoadU64(r4, MemOperand(r3, Deoptimizer::input_offset()));
// Copy core registers into FrameDescription::registers_[kNumRegisters].
DCHECK_EQ(Register::kNumRegisters, kNumberOfRegisters);
for (int i = 0; i < kNumberOfRegisters; i++) {
int offset =
(i * kSystemPointerSize) + FrameDescription::registers_offset();
- __ LoadP(r5, MemOperand(sp, i * kSystemPointerSize));
+ __ LoadU64(r5, MemOperand(sp, i * kSystemPointerSize));
__ StoreP(r5, MemOperand(r4, offset));
}
@@ -3302,7 +3305,7 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
// Compute a pointer to the unwinding limit in register r5; that is
// the first stack slot not part of the input frame.
- __ LoadP(r5, MemOperand(r4, FrameDescription::frame_size_offset()));
+ __ LoadU64(r5, MemOperand(r4, FrameDescription::frame_size_offset()));
__ add(r5, r5, sp);
// Unwind the stack down to - but not including - the unwinding
@@ -3331,28 +3334,29 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
}
__ pop(r3); // Restore deoptimizer object (class Deoptimizer).
- __ LoadP(sp, MemOperand(r3, Deoptimizer::caller_frame_top_offset()));
+ __ LoadU64(sp, MemOperand(r3, Deoptimizer::caller_frame_top_offset()));
// Replace the current (input) frame with the output frames.
Label outer_push_loop, inner_push_loop, outer_loop_header, inner_loop_header;
// Outer loop state: r7 = current "FrameDescription** output_",
// r4 = one past the last FrameDescription**.
__ lwz(r4, MemOperand(r3, Deoptimizer::output_count_offset()));
- __ LoadP(r7, MemOperand(r3, Deoptimizer::output_offset())); // r7 is output_.
+ __ LoadU64(r7,
+ MemOperand(r3, Deoptimizer::output_offset())); // r7 is output_.
__ ShiftLeftImm(r4, r4, Operand(kSystemPointerSizeLog2));
__ add(r4, r7, r4);
__ b(&outer_loop_header);
__ bind(&outer_push_loop);
// Inner loop state: r5 = current FrameDescription*, r6 = loop index.
- __ LoadP(r5, MemOperand(r7, 0)); // output_[ix]
- __ LoadP(r6, MemOperand(r5, FrameDescription::frame_size_offset()));
+ __ LoadU64(r5, MemOperand(r7, 0)); // output_[ix]
+ __ LoadU64(r6, MemOperand(r5, FrameDescription::frame_size_offset()));
__ b(&inner_loop_header);
__ bind(&inner_push_loop);
__ addi(r6, r6, Operand(-sizeof(intptr_t)));
__ add(r9, r5, r6);
- __ LoadP(r9, MemOperand(r9, FrameDescription::frame_content_offset()));
+ __ LoadU64(r9, MemOperand(r9, FrameDescription::frame_content_offset()));
__ push(r9);
__ bind(&inner_loop_header);
@@ -3364,7 +3368,7 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
__ cmp(r7, r4);
__ blt(&outer_push_loop);
- __ LoadP(r4, MemOperand(r3, Deoptimizer::input_offset()));
+ __ LoadU64(r4, MemOperand(r3, Deoptimizer::input_offset()));
for (int i = 0; i < config->num_allocatable_double_registers(); ++i) {
int code = config->GetAllocatableDoubleCode(i);
const DoubleRegister dreg = DoubleRegister::from_code(code);
@@ -3373,9 +3377,9 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
}
// Push pc, and continuation from the last output frame.
- __ LoadP(r9, MemOperand(r5, FrameDescription::pc_offset()));
+ __ LoadU64(r9, MemOperand(r5, FrameDescription::pc_offset()));
__ push(r9);
- __ LoadP(r9, MemOperand(r5, FrameDescription::continuation_offset()));
+ __ LoadU64(r9, MemOperand(r5, FrameDescription::continuation_offset()));
__ push(r9);
// Restore the registers from the last output frame.
@@ -3388,7 +3392,7 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
int offset =
(i * kSystemPointerSize) + FrameDescription::registers_offset();
if ((restored_regs & (1 << i)) != 0) {
- __ LoadP(ToRegister(i), MemOperand(scratch, offset));
+ __ LoadU64(ToRegister(i), MemOperand(scratch, offset));
}
}
}
@@ -3465,11 +3469,12 @@ void Builtins::Generate_DynamicCheckMapsTrampoline(MacroAssembler* masm) {
descriptor.GetRegisterParameter(DynamicCheckMapsDescriptor::kSlot);
Register handler_arg =
descriptor.GetRegisterParameter(DynamicCheckMapsDescriptor::kHandler);
- __ LoadP(handler_arg, MemOperand(fp, CommonFrameConstants::kCallerPCOffset));
- __ LoadP(
+ __ LoadU64(handler_arg,
+ MemOperand(fp, CommonFrameConstants::kCallerPCOffset));
+ __ LoadU64(
slot_arg,
MemOperand(handler_arg, Deoptimizer::kEagerWithResumeImmedArgs1PcOffset));
- __ LoadP(
+ __ LoadU64(
handler_arg,
MemOperand(handler_arg, Deoptimizer::kEagerWithResumeImmedArgs2PcOffset));
diff --git a/deps/v8/src/builtins/riscv64/builtins-riscv64.cc b/deps/v8/src/builtins/riscv64/builtins-riscv64.cc
index 04907f5268..afd9a1fca1 100644
--- a/deps/v8/src/builtins/riscv64/builtins-riscv64.cc
+++ b/deps/v8/src/builtins/riscv64/builtins-riscv64.cc
@@ -6,6 +6,7 @@
#include "src/api/api-arguments.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/debug/debug.h"
#include "src/deoptimizer/deoptimizer.h"
#include "src/execution/frame-constants.h"
@@ -100,7 +101,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// a0: number of arguments (untagged)
// a1: constructor function
// a3: new target
- __ InvokeFunctionWithNewTarget(a1, a3, a0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(a1, a3, a0, InvokeType::kCall);
// Restore context from the frame.
__ Ld(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
@@ -225,7 +226,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
__ Push(a6);
// Call the function.
- __ InvokeFunctionWithNewTarget(a1, a3, a0, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(a1, a3, a0, InvokeType::kCall);
// ----------- S t a t e -------------
// -- a0: constructor result
@@ -300,12 +301,16 @@ void Builtins::Generate_JSBuiltinsConstructStub(MacroAssembler* masm) {
Generate_JSBuiltinsConstructStubHelper(masm);
}
-static void GetSharedFunctionInfoBytecode(MacroAssembler* masm,
- Register sfi_data,
- Register scratch1) {
+// TODO(v8:11429): Add a path for "not_compiled" and unify the two uses under
+// the more general dispatch.
+static void GetSharedFunctionInfoBytecodeOrBaseline(MacroAssembler* masm,
+ Register sfi_data,
+ Register scratch1,
+ Label* is_baseline) {
Label done;
__ GetObjectType(sfi_data, scratch1, scratch1);
+ __ Branch(is_baseline, eq, scratch1, Operand(BASELINE_DATA_TYPE));
__ Branch(&done, ne, scratch1, Operand(INTERPRETER_DATA_TYPE));
__ Ld(sfi_data,
FieldMemOperand(sfi_data, InterpreterData::kBytecodeArrayOffset));
@@ -325,7 +330,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
// Store input value into generator object.
__ Sd(a0, FieldMemOperand(a1, JSGeneratorObject::kInputOrDebugPosOffset));
__ RecordWriteField(a1, JSGeneratorObject::kInputOrDebugPosOffset, a0, a3,
- kRAHasNotBeenSaved, kDontSaveFPRegs);
+ kRAHasNotBeenSaved, SaveFPRegsMode::kIgnore);
// Load suspended function and context.
__ Ld(a4, FieldMemOperand(a1, JSGeneratorObject::kFunctionOffset));
@@ -388,12 +393,14 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
// Underlying function needs to have bytecode available.
if (FLAG_debug_code) {
+ Label is_baseline;
__ Ld(a3, FieldMemOperand(a4, JSFunction::kSharedFunctionInfoOffset));
__ Ld(a3, FieldMemOperand(a3, SharedFunctionInfo::kFunctionDataOffset));
- GetSharedFunctionInfoBytecode(masm, a3, a0);
+ GetSharedFunctionInfoBytecodeOrBaseline(masm, a3, a0, &is_baseline);
__ GetObjectType(a3, a3, a3);
__ Assert(eq, AbortReason::kMissingBytecodeArray, a3,
Operand(BYTECODE_ARRAY_TYPE));
+ __ bind(&is_baseline);
}
// Resume (Ignition/TurboFan) generator object.
@@ -763,8 +770,8 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
__ Sd(optimized_code, FieldMemOperand(closure, JSFunction::kCodeOffset));
__ Move(scratch1, optimized_code); // Write barrier clobbers scratch1 below.
__ RecordWriteField(closure, JSFunction::kCodeOffset, scratch1, scratch2,
- kRAHasNotBeenSaved, kDontSaveFPRegs, OMIT_REMEMBERED_SET,
- OMIT_SMI_CHECK);
+ kRAHasNotBeenSaved, SaveFPRegsMode::kIgnore,
+ RememberedSetAction::kOmit, SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
@@ -964,6 +971,184 @@ static void AdvanceBytecodeOffsetOrReturn(MacroAssembler* masm,
__ bind(&end);
}
+// Read off the optimization state in the feedback vector and check if there
+// is optimized code or a optimization marker that needs to be processed.
+static void LoadOptimizationStateAndJumpIfNeedsProcessing(
+ MacroAssembler* masm, Register optimization_state, Register feedback_vector,
+ Label* has_optimized_code_or_marker) {
+ __ RecordComment("[ Check optimization state");
+ UseScratchRegisterScope temps(masm);
+ Register scratch = temps.Acquire();
+ __ Lw(optimization_state,
+ FieldMemOperand(feedback_vector, FeedbackVector::kFlagsOffset));
+ __ And(
+ scratch, optimization_state,
+ Operand(FeedbackVector::kHasOptimizedCodeOrCompileOptimizedMarkerMask));
+ __ Branch(has_optimized_code_or_marker, ne, scratch, Operand(zero_reg));
+ __ RecordComment("]");
+}
+
+static void MaybeOptimizeCodeOrTailCallOptimizedCodeSlot(
+ MacroAssembler* masm, Register optimization_state,
+ Register feedback_vector) {
+ Label maybe_has_optimized_code;
+ // Check if optimized code marker is available
+ __ And(
+ t0, optimization_state,
+ Operand(FeedbackVector::kHasCompileOptimizedOrLogFirstExecutionMarker));
+ __ Branch(&maybe_has_optimized_code, eq, t0, Operand(zero_reg));
+
+ Register optimization_marker = optimization_state;
+ __ DecodeField<FeedbackVector::OptimizationMarkerBits>(optimization_marker);
+ MaybeOptimizeCode(masm, feedback_vector, optimization_marker);
+
+ __ bind(&maybe_has_optimized_code);
+ Register optimized_code_entry = optimization_state;
+ __ Ld(optimization_marker,
+ FieldMemOperand(feedback_vector,
+ FeedbackVector::kMaybeOptimizedCodeOffset));
+ TailCallOptimizedCodeSlot(masm, optimized_code_entry, t4, a5);
+}
+
+// static
+void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
+ UseScratchRegisterScope temps(masm);
+ temps.Include(kScratchReg.bit() | kScratchReg2.bit());
+ auto descriptor = Builtins::CallInterfaceDescriptorFor(
+ Builtins::kBaselineOutOfLinePrologue);
+ Register closure = descriptor.GetRegisterParameter(
+ BaselineOutOfLinePrologueDescriptor::kClosure);
+ // Load the feedback vector from the closure.
+ Register feedback_vector = temps.Acquire();
+ __ Ld(feedback_vector,
+ FieldMemOperand(closure, JSFunction::kFeedbackCellOffset));
+ __ Ld(feedback_vector, FieldMemOperand(feedback_vector, Cell::kValueOffset));
+ if (FLAG_debug_code) {
+ __ GetObjectType(feedback_vector, t0, t0);
+ __ Assert(eq, AbortReason::kExpectedFeedbackVector, t0,
+ Operand(FEEDBACK_VECTOR_TYPE));
+ }
+
+ // Check for an optimization marker.
+ Label has_optimized_code_or_marker;
+ Register optimization_state = temps.Acquire();
+ LoadOptimizationStateAndJumpIfNeedsProcessing(
+ masm, optimization_state, feedback_vector, &has_optimized_code_or_marker);
+
+ // Increment invocation count for the function.
+ {
+ Register invocation_count = t0;
+ __ Lw(invocation_count,
+ FieldMemOperand(feedback_vector,
+ FeedbackVector::kInvocationCountOffset));
+ __ Add32(invocation_count, invocation_count, Operand(1));
+ __ Sw(invocation_count,
+ FieldMemOperand(feedback_vector,
+ FeedbackVector::kInvocationCountOffset));
+ }
+
+ __ RecordComment("[ Frame Setup");
+ FrameScope frame_scope(masm, StackFrame::MANUAL);
+ // Normally the first thing we'd do here is Push(lr, fp), but we already
+ // entered the frame in BaselineCompiler::Prologue, as we had to use the
+ // value lr before the call to this BaselineOutOfLinePrologue builtin.
+
+ Register callee_context = descriptor.GetRegisterParameter(
+ BaselineOutOfLinePrologueDescriptor::kCalleeContext);
+ Register callee_js_function = descriptor.GetRegisterParameter(
+ BaselineOutOfLinePrologueDescriptor::kClosure);
+ __ Push(callee_context, callee_js_function);
+ DCHECK_EQ(callee_js_function, kJavaScriptCallTargetRegister);
+ DCHECK_EQ(callee_js_function, kJSFunctionRegister);
+
+ Register argc = descriptor.GetRegisterParameter(
+ BaselineOutOfLinePrologueDescriptor::kJavaScriptCallArgCount);
+ // We'll use the bytecode for both code age/OSR resetting, and pushing onto
+ // the frame, so load it into a register.
+ Register bytecodeArray = descriptor.GetRegisterParameter(
+ BaselineOutOfLinePrologueDescriptor::kInterpreterBytecodeArray);
+
+ // Reset code age and the OSR arming. The OSR field and BytecodeAgeOffset
+ // are 8-bit fields next to each other, so we could just optimize by writing
+ // a 16-bit. These static asserts guard our assumption is valid.
+ STATIC_ASSERT(BytecodeArray::kBytecodeAgeOffset ==
+ BytecodeArray::kOsrNestingLevelOffset + kCharSize);
+ STATIC_ASSERT(BytecodeArray::kNoAgeBytecodeAge == 0);
+ __ Sh(zero_reg,
+ FieldMemOperand(bytecodeArray, BytecodeArray::kOsrNestingLevelOffset));
+
+ __ Push(argc, bytecodeArray);
+
+ // Baseline code frames store the feedback vector where interpreter would
+ // store the bytecode offset.
+ if (FLAG_debug_code) {
+ __ GetObjectType(feedback_vector, t0, t0);
+ __ Assert(eq, AbortReason::kExpectedFeedbackVector, t0,
+ Operand(FEEDBACK_VECTOR_TYPE));
+ }
+ // Our stack is currently aligned. We have have to push something along with
+ // the feedback vector to keep it that way -- we may as well start
+ // initialising the register frame.
+ // TODO(v8:11429,leszeks): Consider guaranteeing that this call leaves
+ // `undefined` in the accumulator register, to skip the load in the baseline
+ // code.
+ __ LoadRoot(kInterpreterAccumulatorRegister, RootIndex::kUndefinedValue);
+ __ Push(feedback_vector, kInterpreterAccumulatorRegister);
+ __ RecordComment("]");
+
+ __ RecordComment("[ Stack/interrupt check");
+ Label call_stack_guard;
+ {
+ // Stack check. This folds the checks for both the interrupt stack limit
+ // check and the real stack limit into one by just checking for the
+ // interrupt limit. The interrupt limit is either equal to the real stack
+ // limit or tighter. By ensuring we have space until that limit after
+ // building the frame we can quickly precheck both at once.
+ Register frame_size = t0;
+ __ Ld(frame_size,
+ FieldMemOperand(bytecodeArray, BytecodeArray::kFrameSizeOffset));
+ Register sp_minus_frame_size = frame_size;
+ __ Sub64(sp_minus_frame_size, sp, frame_size);
+ Register interrupt_limit = t1;
+ __ LoadStackLimit(interrupt_limit,
+ MacroAssembler::StackLimitKind::kInterruptStackLimit);
+ __ Branch(&call_stack_guard, Uless, sp_minus_frame_size,
+ Operand(interrupt_limit));
+ __ RecordComment("]");
+ }
+
+ // Do "fast" return to the caller pc in lr.
+ // TODO(v8:11429): Document this frame setup better.
+ __ Ret();
+
+ __ bind(&has_optimized_code_or_marker);
+ {
+ __ RecordComment("[ Optimized marker check");
+ // Drop the frame created by the baseline call.
+ __ Pop(fp, ra);
+ MaybeOptimizeCodeOrTailCallOptimizedCodeSlot(masm, optimization_state,
+ feedback_vector);
+ __ Trap();
+ __ RecordComment("]");
+ }
+
+ __ bind(&call_stack_guard);
+ {
+ Register new_target = descriptor.GetRegisterParameter(
+ BaselineOutOfLinePrologueDescriptor::kJavaScriptCallNewTarget);
+
+ FrameScope frame_scope(masm, StackFrame::INTERNAL);
+ __ RecordComment("[ Stack/interrupt call");
+ // Save incoming new target or generator
+ __ Push(zero_reg, new_target);
+ __ CallRuntime(Runtime::kStackGuard);
+ __ Pop(new_target, zero_reg);
+ __ RecordComment("]");
+ }
+ __ Ret();
+ temps.Exclude(kScratchReg.bit() | kScratchReg2.bit());
+}
+
// Generate code for entering a JS function with the interpreter.
// On entry to the function the receiver and arguments have been pushed on the
// stack left to right.
@@ -989,8 +1174,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
FieldMemOperand(closure, JSFunction::kSharedFunctionInfoOffset));
__ Ld(kInterpreterBytecodeArrayRegister,
FieldMemOperand(kScratchReg, SharedFunctionInfo::kFunctionDataOffset));
- GetSharedFunctionInfoBytecode(masm, kInterpreterBytecodeArrayRegister,
- kScratchReg);
+ Label is_baseline;
+ GetSharedFunctionInfoBytecodeOrBaseline(
+ masm, kInterpreterBytecodeArrayRegister, kScratchReg, &is_baseline);
// The bytecode array could have been flushed from the shared function info,
// if so, call into CompileLazy.
@@ -1188,6 +1374,44 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
FeedbackVector::kMaybeOptimizedCodeOffset));
TailCallOptimizedCodeSlot(masm, optimized_code_entry, t4, a5);
+ __ bind(&is_baseline);
+ {
+ // Load the feedback vector from the closure.
+ __ Ld(feedback_vector,
+ FieldMemOperand(closure, JSFunction::kFeedbackCellOffset));
+ __ Ld(feedback_vector,
+ FieldMemOperand(feedback_vector, Cell::kValueOffset));
+
+ Label install_baseline_code;
+ // Check if feedback vector is valid. If not, call prepare for baseline to
+ // allocate it.
+ __ Ld(t0, FieldMemOperand(feedback_vector, HeapObject::kMapOffset));
+ __ Lh(t0, FieldMemOperand(t0, Map::kInstanceTypeOffset));
+ __ Branch(&install_baseline_code, ne, t0, Operand(FEEDBACK_VECTOR_TYPE));
+
+ // Read off the optimization state in the feedback vector.
+ // TODO(v8:11429): Is this worth doing here? Baseline code will check it
+ // anyway...
+ __ Ld(optimization_state,
+ FieldMemOperand(feedback_vector, FeedbackVector::kFlagsOffset));
+
+ // Check if there is optimized code or a optimization marker that needes to
+ // be processed.
+ __ And(
+ t0, optimization_state,
+ Operand(FeedbackVector::kHasOptimizedCodeOrCompileOptimizedMarkerMask));
+ __ Branch(&has_optimized_code_or_marker, ne, t0, Operand(zero_reg));
+
+ // Load the baseline code into the closure.
+ __ Ld(a2, FieldMemOperand(kInterpreterBytecodeArrayRegister,
+ BaselineData::kBaselineCodeOffset));
+ static_assert(kJavaScriptCallCodeStartRegister == a2, "ABI mismatch");
+ ReplaceClosureCodeWithOptimizedCode(masm, a2, closure, t0, t1);
+ __ JumpCodeObject(a2);
+
+ __ bind(&install_baseline_code);
+ GenerateTailCallToReturnedCode(masm, Runtime::kInstallBaselineCode);
+ }
__ bind(&compile_lazy);
GenerateTailCallToReturnedCode(masm, Runtime::kCompileLazy);
@@ -1407,7 +1631,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Jump(kJavaScriptCallCodeStartRegister);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Advance the current bytecode offset stored within the given interpreter
// stack frame. This simulates what all bytecode handlers do upon completion
// of the underlying operation.
@@ -1454,7 +1678,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
@@ -1503,12 +1727,12 @@ void Generate_ContinueToBuiltinHelper(MacroAssembler* masm,
sp, BuiltinContinuationFrameConstants::kFixedFrameSizeFromFp));
// Load builtin index (stored as a Smi) and use it to get the builtin start
// address from the builtins table.
- __ Pop(t0);
+ __ Pop(t6);
__ Add64(sp, sp,
Operand(BuiltinContinuationFrameConstants::kFixedFrameSizeFromFp));
__ Pop(ra);
- __ LoadEntryFromBuiltinIndex(t0);
- __ Jump(t0);
+ __ LoadEntryFromBuiltinIndex(t6);
+ __ Jump(t6);
}
} // namespace
@@ -1542,7 +1766,20 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
__ Ret();
}
-void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
+void Builtins::Generate_TailCallOptimizedCodeSlot(MacroAssembler* masm) {
+ Register optimized_code_entry = kJavaScriptCallCodeStartRegister;
+ TailCallOptimizedCodeSlot(masm, optimized_code_entry, t4, t0);
+}
+namespace {
+
+void Generate_OSREntry(MacroAssembler* masm, Register entry_address,
+ Operand offset = Operand(int64_t(0))) {
+ __ Add64(ra, entry_address, offset);
+ // And "return" to the OSR entry point of the function.
+ __ Ret();
+}
+
+void OnStackReplacement(MacroAssembler* masm, bool is_interpreter) {
{
FrameScope scope(masm, StackFrame::INTERNAL);
__ CallRuntime(Runtime::kCompileForOnStackReplacement);
@@ -1550,11 +1787,11 @@ void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
// If the code object is null, just return to the caller.
__ Ret(eq, a0, Operand(Smi::zero()));
-
- // Drop the handler frame that is be sitting on top of the actual
- // JavaScript frame. This is the case then OSR is triggered from bytecode.
- __ LeaveFrame(StackFrame::STUB);
-
+ if (is_interpreter) {
+ // Drop the handler frame that is be sitting on top of the actual
+ // JavaScript frame. This is the case then OSR is triggered from bytecode.
+ __ LeaveFrame(StackFrame::STUB);
+ }
// Load deoptimization data from the code object.
// <deopt_data> = <code>[#deoptimization_data_offset]
__ Ld(a1, MemOperand(a0, Code::kDeoptimizationDataOffset - kHeapObjectTag));
@@ -1568,9 +1805,18 @@ void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
// Compute the target address = code_obj + header_size + osr_offset
// <entry_addr> = <code_obj> + #header_size + <osr_offset>
__ Add64(a0, a0, a1);
- __ Add64(ra, a0, Code::kHeaderSize - kHeapObjectTag);
- // And "return" to the OSR entry point of the function.
- __ Ret();
+ Generate_OSREntry(masm, a0, Operand(Code::kHeaderSize - kHeapObjectTag));
+}
+} // namespace
+
+void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
+ return OnStackReplacement(masm, true);
+}
+
+void Builtins::Generate_BaselineOnStackReplacement(MacroAssembler* masm) {
+ __ Ld(kContextRegister,
+ MemOperand(fp, StandardFrameConstants::kContextOffset));
+ return OnStackReplacement(masm, false);
}
// static
@@ -1808,7 +2054,7 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
// -- a4 : len (number of elements to push from args)
// -- a3 : new.target (for [[Construct]])
// -----------------------------------
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow a2 to be a FixedArray, or a FixedDoubleArray if a4 == 0.
Label ok, fail;
__ AssertNotSmi(a2);
@@ -2070,7 +2316,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ Lhu(a2,
FieldMemOperand(a2, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(a1, no_reg, a2, a0, JUMP_FUNCTION);
+ __ InvokeFunctionCode(a1, no_reg, a2, a0, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ bind(&class_constructor);
@@ -2438,10 +2684,10 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// sp: stack pointer (restored as callee's sp after C call)
// cp: current context (C callee-saved)
//
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// a2: pointer to the first argument
- if (argv_mode == kArgvInRegister) {
+ if (argv_mode == ArgvMode::kRegister) {
// Move argv into the correct register.
__ Move(s1, a2);
} else {
@@ -2453,7 +2699,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// Enter the exit frame that transitions from JavaScript to C++.
FrameScope scope(masm, StackFrame::MANUAL);
__ EnterExitFrame(
- save_doubles == kSaveFPRegs, 0,
+ save_doubles == SaveFPRegsMode::kSave, 0,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
// s3: number of arguments including receiver (C callee-saved)
@@ -2502,12 +2748,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// a0:a1: result
// sp: stack pointer
// fp: frame pointer
- Register argc = argv_mode == kArgvInRegister
+ Register argc = argv_mode == ArgvMode::kRegister
// We don't want to pop arguments so set argc to no_reg.
? no_reg
// s3: still holds argc (callee-saved).
: s3;
- __ LeaveExitFrame(save_doubles == kSaveFPRegs, argc, EMIT_RETURN);
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, argc, EMIT_RETURN);
// Handling of exception.
__ bind(&exception_returned);
@@ -2689,6 +2935,10 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
__ Trap();
}
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ // Only needed on x64.
+ __ Trap();
+}
namespace {
int AddressOffset(ExternalReference ref0, ExternalReference ref1) {
@@ -2762,7 +3012,7 @@ void CallApiFunctionAndReturn(MacroAssembler* masm, Register function_address,
// No more valid handles (the result handle was the last one). Restore
// previous handle scope.
__ Sd(s3, MemOperand(s5, kNextOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Lw(a1, MemOperand(s5, kLevelOffset));
__ Check(eq, AbortReason::kUnexpectedLevelAfterReturnFromApiCall, a1,
Operand(s2));
@@ -3228,9 +3478,9 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
}
}
- __ pop(t3); // Get continuation, leave pc on stack.
+ __ pop(t6); // Get continuation, leave pc on stack.
__ pop(ra);
- __ Jump(t3);
+ __ Jump(t6);
__ stop();
}
@@ -3252,6 +3502,146 @@ void Builtins::Generate_DeoptimizationEntry_Lazy(MacroAssembler* masm) {
Generate_DeoptimizationEntry(masm, DeoptimizeKind::kLazy);
}
+namespace {
+
+// Converts an interpreter frame into a baseline frame and continues execution
+// in baseline code (baseline code has to exist on the shared function info),
+// either at the start or the end of the current bytecode.
+void Generate_BaselineEntry(MacroAssembler* masm, bool next_bytecode,
+ bool is_osr = false) {
+ __ Push(zero_reg, kInterpreterAccumulatorRegister);
+ Label start;
+ __ bind(&start);
+
+ // Get function from the frame.
+ Register closure = a1;
+ __ Ld(closure, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
+
+ // Replace BytecodeOffset with the feedback vector.
+ Register feedback_vector = a2;
+ __ Ld(feedback_vector,
+ FieldMemOperand(closure, JSFunction::kFeedbackCellOffset));
+ __ Ld(feedback_vector, FieldMemOperand(feedback_vector, Cell::kValueOffset));
+ Label install_baseline_code;
+ // Check if feedback vector is valid. If not, call prepare for baseline to
+ // allocate it.
+ __ GetObjectType(feedback_vector, t0, t0);
+ __ Branch(&install_baseline_code, eq, t0, Operand(FEEDBACK_VECTOR_TYPE));
+ // Save BytecodeOffset from the stack frame.
+ __ SmiUntag(kInterpreterBytecodeOffsetRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp));
+ // Replace BytecodeOffset with the feedback vector.
+ __ Sd(feedback_vector,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp));
+ feedback_vector = no_reg;
+
+ // Get the Code object from the shared function info.
+ UseScratchRegisterScope temps(masm);
+ Register code_obj = temps.Acquire();
+ __ Ld(code_obj,
+ FieldMemOperand(closure, JSFunction::kSharedFunctionInfoOffset));
+ __ Ld(code_obj,
+ FieldMemOperand(code_obj, SharedFunctionInfo::kFunctionDataOffset));
+ __ Ld(code_obj, FieldMemOperand(code_obj, BaselineData::kBaselineCodeOffset));
+
+ // Compute baseline pc for bytecode offset.
+ __ Push(zero_reg, kInterpreterAccumulatorRegister);
+ ExternalReference get_baseline_pc_extref;
+ if (next_bytecode || is_osr) {
+ get_baseline_pc_extref =
+ ExternalReference::baseline_pc_for_next_executed_bytecode();
+ } else {
+ get_baseline_pc_extref =
+ ExternalReference::baseline_pc_for_bytecode_offset();
+ }
+
+ Register get_baseline_pc = a3;
+ __ li(get_baseline_pc, get_baseline_pc_extref);
+
+ // If the code deoptimizes during the implicit function entry stack interrupt
+ // check, it will have a bailout ID of kFunctionEntryBytecodeOffset, which is
+ // not a valid bytecode offset.
+ // TODO(pthier): Investigate if it is feasible to handle this special case
+ // in TurboFan instead of here.
+ Label valid_bytecode_offset, function_entry_bytecode;
+ if (!is_osr) {
+ __ Branch(&function_entry_bytecode, eq, kInterpreterBytecodeOffsetRegister,
+ Operand(BytecodeArray::kHeaderSize - kHeapObjectTag +
+ kFunctionEntryBytecodeOffset));
+ }
+
+ __ Sub64(kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeOffsetRegister,
+ (BytecodeArray::kHeaderSize - kHeapObjectTag));
+
+ __ bind(&valid_bytecode_offset);
+ // Get bytecode array from the stack frame.
+ __ Ld(kInterpreterBytecodeArrayRegister,
+ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
+ {
+ Register arg_reg_1 = a0;
+ Register arg_reg_2 = a1;
+ Register arg_reg_3 = a2;
+ __ Move(arg_reg_1, code_obj);
+ __ Move(arg_reg_2, kInterpreterBytecodeOffsetRegister);
+ __ Move(arg_reg_3, kInterpreterBytecodeArrayRegister);
+ FrameScope scope(masm, StackFrame::INTERNAL);
+ __ CallCFunction(get_baseline_pc, 3, 0);
+ }
+ __ Add64(code_obj, code_obj, kReturnRegister0);
+ __ Pop(kInterpreterAccumulatorRegister, zero_reg);
+
+ if (is_osr) {
+ // Reset the OSR loop nesting depth to disarm back edges.
+ // TODO(pthier): Separate baseline Sparkplug from TF arming and don't disarm
+ // Sparkplug here.
+ __ Sd(zero_reg, FieldMemOperand(kInterpreterBytecodeArrayRegister,
+ BytecodeArray::kOsrNestingLevelOffset));
+ Generate_OSREntry(masm, code_obj,
+ Operand(Code::kHeaderSize - kHeapObjectTag));
+ } else {
+ __ Add64(code_obj, code_obj, Code::kHeaderSize - kHeapObjectTag);
+ __ Jump(code_obj);
+ }
+ __ Trap(); // Unreachable.
+
+ if (!is_osr) {
+ __ bind(&function_entry_bytecode);
+ // If the bytecode offset is kFunctionEntryOffset, get the start address of
+ // the first bytecode.
+ __ li(kInterpreterBytecodeOffsetRegister, Operand(int64_t(0)));
+ if (next_bytecode) {
+ __ li(get_baseline_pc,
+ ExternalReference::baseline_pc_for_bytecode_offset());
+ }
+ __ Branch(&valid_bytecode_offset);
+ }
+
+ __ bind(&install_baseline_code);
+ {
+ FrameScope scope(masm, StackFrame::INTERNAL);
+ __ Push(closure);
+ __ CallRuntime(Runtime::kInstallBaselineCode, 1);
+ }
+ // Retry from the start after installing baseline code.
+ __ Branch(&start);
+}
+
+} // namespace
+
+void Builtins::Generate_BaselineEnterAtBytecode(MacroAssembler* masm) {
+ Generate_BaselineEntry(masm, false);
+}
+
+void Builtins::Generate_BaselineEnterAtNextBytecode(MacroAssembler* masm) {
+ Generate_BaselineEntry(masm, true);
+}
+
+void Builtins::Generate_InterpreterOnStackReplacement_ToBaseline(
+ MacroAssembler* masm) {
+ Generate_BaselineEntry(masm, false, true);
+}
+
void Builtins::Generate_DynamicCheckMapsTrampoline(MacroAssembler* masm) {
FrameScope scope(masm, StackFrame::MANUAL);
__ EnterFrame(StackFrame::INTERNAL);
diff --git a/deps/v8/src/builtins/s390/builtins-s390.cc b/deps/v8/src/builtins/s390/builtins-s390.cc
index 7711af6e90..0272621ac0 100644
--- a/deps/v8/src/builtins/s390/builtins-s390.cc
+++ b/deps/v8/src/builtins/s390/builtins-s390.cc
@@ -6,6 +6,7 @@
#include "src/api/api-arguments.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
// For interpreter_entry_return_pc_offset. TODO(jkummerow): Drop.
#include "src/codegen/macro-assembler-inl.h"
#include "src/codegen/register-configuration.h"
@@ -110,7 +111,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// r3: constructor function
// r5: new target
- __ InvokeFunctionWithNewTarget(r3, r5, r2, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(r3, r5, r2, InvokeType::kCall);
// Restore context from the frame.
__ LoadU64(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset));
@@ -238,7 +239,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
__ Push(r8);
// Call the function.
- __ InvokeFunctionWithNewTarget(r3, r5, r2, CALL_FUNCTION);
+ __ InvokeFunctionWithNewTarget(r3, r5, r2, InvokeType::kCall);
// ----------- S t a t e -------------
// -- r0: constructor result
@@ -339,7 +340,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
__ StoreTaggedField(
r2, FieldMemOperand(r3, JSGeneratorObject::kInputOrDebugPosOffset), r0);
__ RecordWriteField(r3, JSGeneratorObject::kInputOrDebugPosOffset, r2, r5,
- kLRHasNotBeenSaved, kDontSaveFPRegs);
+ kLRHasNotBeenSaved, SaveFPRegsMode::kIgnore);
// Load suspended function and context.
__ LoadTaggedPointerField(
@@ -395,18 +396,15 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
FieldMemOperand(r3, JSGeneratorObject::kParametersAndRegistersOffset));
{
Label done_loop, loop;
- __ mov(r8, r5);
-
__ bind(&loop);
- __ SubS64(r8, r8, Operand(1));
+ __ SubS64(r5, r5, Operand(1));
__ blt(&done_loop);
- __ ShiftLeftU64(r1, r8, Operand(kTaggedSizeLog2));
+ __ ShiftLeftU64(r1, r5, Operand(kTaggedSizeLog2));
__ la(scratch, MemOperand(r4, r1));
__ LoadAnyTaggedField(scratch,
FieldMemOperand(scratch, FixedArray::kHeaderSize));
__ Push(scratch);
__ b(&loop);
-
__ bind(&done_loop);
// Push receiver.
@@ -857,8 +855,8 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
__ mov(scratch1,
optimized_code); // Write barrier clobbers scratch1 below.
__ RecordWriteField(closure, JSFunction::kCodeOffset, scratch1, scratch2,
- kLRHasNotBeenSaved, kDontSaveFPRegs, OMIT_REMEMBERED_SET,
- OMIT_SMI_CHECK);
+ kLRHasNotBeenSaved, SaveFPRegsMode::kIgnore,
+ RememberedSetAction::kOmit, SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
@@ -1527,7 +1525,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Jump(kJavaScriptCallCodeStartRegister);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Get bytecode array and bytecode offset from the stack frame.
__ LoadU64(kInterpreterBytecodeArrayRegister,
MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp));
@@ -1573,7 +1571,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
@@ -1890,6 +1888,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
}
// static
+// TODO(v8:11615): Observe Code::kMaxArguments in CallOrConstructVarargs
void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
Handle<Code> code) {
// ----------- S t a t e -------------
@@ -1902,7 +1901,7 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
Register scratch = ip;
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow r4 to be a FixedArray, or a FixedDoubleArray if r6 == 0.
Label ok, fail;
__ AssertNotSmi(r4);
@@ -2177,7 +2176,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ LoadU16(
r4, FieldMemOperand(r4, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(r3, no_reg, r4, r2, JUMP_FUNCTION);
+ __ InvokeFunctionCode(r3, no_reg, r4, r2, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ bind(&class_constructor);
@@ -2549,6 +2548,11 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
// TODO(v8:10701): Implement for this platform.
__ Trap();
}
+
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ // Only needed on x64.
+ __ Trap();
+}
#endif // V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
@@ -2561,12 +2565,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// sp: stack pointer (restored as callee's sp after C call)
// cp: current context (C callee-saved)
//
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// r4: pointer to the first argument
__ mov(r7, r3);
- if (argv_mode == kArgvInRegister) {
+ if (argv_mode == ArgvMode::kRegister) {
// Move argv into the correct register.
__ mov(r3, r4);
} else {
@@ -2594,7 +2598,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
#endif
__ EnterExitFrame(
- save_doubles, arg_stack_space,
+ save_doubles == SaveFPRegsMode::kSave, arg_stack_space,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
// Store a copy of argc, argv in callee-saved registers for later.
@@ -2657,12 +2661,12 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// r2:r3: result
// sp: stack pointer
// fp: frame pointer
- Register argc = argv_mode == kArgvInRegister
+ Register argc = argv_mode == ArgvMode::kRegister
// We don't want to pop arguments so set argc to no_reg.
? no_reg
// r6: still holds argc (callee-saved).
: r6;
- __ LeaveExitFrame(save_doubles, argc);
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, argc);
__ b(r14);
// Handling of exception.
@@ -2916,7 +2920,7 @@ static void CallApiFunctionAndReturn(MacroAssembler* masm,
// No more valid handles (the result handle was the last one). Restore
// previous handle scope.
__ StoreU64(r6, MemOperand(r9, kNextOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ LoadU32(r3, MemOperand(r9, kLevelOffset));
__ CmpS64(r3, r8);
__ Check(eq, AbortReason::kUnexpectedLevelAfterReturnFromApiCall);
@@ -3464,11 +3468,12 @@ void Builtins::Generate_DynamicCheckMapsTrampoline(MacroAssembler* masm) {
descriptor.GetRegisterParameter(DynamicCheckMapsDescriptor::kSlot);
Register handler_arg =
descriptor.GetRegisterParameter(DynamicCheckMapsDescriptor::kHandler);
- __ LoadP(handler_arg, MemOperand(fp, CommonFrameConstants::kCallerPCOffset));
- __ LoadP(
+ __ LoadU64(handler_arg,
+ MemOperand(fp, CommonFrameConstants::kCallerPCOffset));
+ __ LoadU64(
slot_arg,
MemOperand(handler_arg, Deoptimizer::kEagerWithResumeImmedArgs1PcOffset));
- __ LoadP(
+ __ LoadU64(
handler_arg,
MemOperand(handler_arg, Deoptimizer::kEagerWithResumeImmedArgs2PcOffset));
diff --git a/deps/v8/src/builtins/setup-builtins-internal.cc b/deps/v8/src/builtins/setup-builtins-internal.cc
index 348866c9bd..fbcfab56f4 100644
--- a/deps/v8/src/builtins/setup-builtins-internal.cc
+++ b/deps/v8/src/builtins/setup-builtins-internal.cc
@@ -11,7 +11,6 @@
#include "src/compiler/code-assembler.h"
#include "src/execution/isolate.h"
#include "src/handles/handles-inl.h"
-#include "src/heap/heap-inl.h" // For Heap::code_range.
#include "src/init/setup-isolate.h"
#include "src/interpreter/bytecodes.h"
#include "src/interpreter/interpreter-generator.h"
@@ -42,10 +41,10 @@ AssemblerOptions BuiltinAssemblerOptions(Isolate* isolate,
return options;
}
- const base::AddressRegion& code_range = isolate->heap()->code_range();
+ const base::AddressRegion& code_region = isolate->heap()->code_region();
bool pc_relative_calls_fit_in_code_range =
- !code_range.is_empty() &&
- std::ceil(static_cast<float>(code_range.size() / MB)) <=
+ !code_region.is_empty() &&
+ std::ceil(static_cast<float>(code_region.size() / MB)) <=
kMaxPCRelativeCodeRangeInMB;
options.isolate_independent_code = true;
@@ -219,7 +218,7 @@ void SetupIsolateDelegate::PopulateWithPlaceholders(Isolate* isolate) {
// static
void SetupIsolateDelegate::ReplacePlaceholders(Isolate* isolate) {
- // Replace references from all code objects to placeholders.
+ // Replace references from all builtin code objects to placeholders.
Builtins* builtins = isolate->builtins();
DisallowGarbageCollection no_gc;
CodeSpaceMemoryModificationScope modification_scope(isolate->heap());
@@ -228,11 +227,8 @@ void SetupIsolateDelegate::ReplacePlaceholders(Isolate* isolate) {
RelocInfo::ModeMask(RelocInfo::FULL_EMBEDDED_OBJECT) |
RelocInfo::ModeMask(RelocInfo::COMPRESSED_EMBEDDED_OBJECT) |
RelocInfo::ModeMask(RelocInfo::RELATIVE_CODE_TARGET);
- HeapObjectIterator iterator(isolate->heap());
- for (HeapObject obj = iterator.Next(); !obj.is_null();
- obj = iterator.Next()) {
- if (!obj.IsCode()) continue;
- Code code = Code::cast(obj);
+ for (int i = 0; i < Builtins::builtin_count; i++) {
+ Code code = builtins->builtin(i);
bool flush_icache = false;
for (RelocIterator it(code, kRelocMask); !it.done(); it.next()) {
RelocInfo* rinfo = it.rinfo();
diff --git a/deps/v8/src/builtins/typed-array-createtypedarray.tq b/deps/v8/src/builtins/typed-array-createtypedarray.tq
index 6e416ddd98..6333ebf97f 100644
--- a/deps/v8/src/builtins/typed-array-createtypedarray.tq
+++ b/deps/v8/src/builtins/typed-array-createtypedarray.tq
@@ -19,11 +19,17 @@ extern macro TypedArrayBuiltinsAssembler::SetupTypedArrayEmbedderFields(
extern runtime ThrowInvalidTypedArrayAlignment(implicit context: Context)(
Map, String): never;
+extern runtime GrowableSharedArrayBufferByteLength(implicit context: Context)(
+ Object): JSAny;
+
transitioning macro AllocateTypedArray(implicit context: Context)(
isOnHeap: constexpr bool, map: Map, buffer: JSArrayBuffer,
- byteOffset: uintptr, byteLength: uintptr, length: uintptr): JSTypedArray {
+ byteOffset: uintptr, byteLength: uintptr, length: uintptr,
+ isLengthTracking: bool): JSTypedArray {
let elements: ByteArray;
if constexpr (isOnHeap) {
+ assert(!IsResizableArrayBuffer(buffer));
+ assert(!isLengthTracking);
elements = AllocateByteArray(byteLength);
} else {
elements = kEmptyByteArray;
@@ -53,6 +59,9 @@ transitioning macro AllocateTypedArray(implicit context: Context)(
typedArray.byte_offset = byteOffset;
typedArray.byte_length = byteLength;
typedArray.length = length;
+ typedArray.bit_field.is_length_tracking = isLengthTracking;
+ typedArray.bit_field.is_backed_by_rab =
+ IsResizableArrayBuffer(buffer) && !IsSharedArrayBuffer(buffer);
typed_array::AllocateJSTypedArrayExternalPointerEntry(typedArray);
if constexpr (isOnHeap) {
typed_array::SetJSTypedArrayOnHeapDataPtr(typedArray, elements, byteOffset);
@@ -88,8 +97,10 @@ transitioning macro TypedArrayInitialize(implicit context: Context)(
const buffer = AllocateEmptyOnHeapBuffer(byteLength);
const isOnHeap: constexpr bool = true;
+ const isLengthTracking: constexpr bool = false;
const typedArray = AllocateTypedArray(
- isOnHeap, map, buffer, byteOffset, byteLength, length);
+ isOnHeap, map, buffer, byteOffset, byteLength, length,
+ isLengthTracking);
if constexpr (initialize) {
const backingStore = typedArray.data_ptr;
@@ -107,8 +118,10 @@ transitioning macro TypedArrayInitialize(implicit context: Context)(
} label AttachOffHeapBuffer(bufferObj: Object) {
const buffer = Cast<JSArrayBuffer>(bufferObj) otherwise unreachable;
const isOnHeap: constexpr bool = false;
+ const isLengthTracking: constexpr bool = false;
return AllocateTypedArray(
- isOnHeap, map, buffer, byteOffset, byteLength, length);
+ isOnHeap, map, buffer, byteOffset, byteLength, length,
+ isLengthTracking);
}
}
@@ -204,8 +217,26 @@ transitioning macro ConstructByTypedArray(implicit context: Context)(
// 22.2.4.5 TypedArray ( buffer, byteOffset, length )
// ES #sec-typedarray-buffer-byteoffset-length
transitioning macro ConstructByArrayBuffer(implicit context: Context)(
- map: Map, buffer: JSArrayBuffer, byteOffset: JSAny, length: JSAny,
- elementsInfo: typed_array::TypedArrayElementsInfo): JSTypedArray {
+ target: JSFunction, newTarget: JSReceiver, buffer: JSArrayBuffer,
+ byteOffset: JSAny, length: JSAny): JSTypedArray {
+ let map: Map;
+ const isLengthTracking: bool =
+ IsResizableArrayBuffer(buffer) && (length == Undefined);
+ // Pick the RAB / GSAB map (containing the corresponding RAB / GSAB
+ // ElementsKind). GSAB-backed non-length-tracking TypedArrays behave just like
+ // normal TypedArrays, so exclude them.
+ const rabGsab: bool = IsResizableArrayBuffer(buffer) &&
+ (!IsSharedArrayBuffer(buffer) || isLengthTracking);
+ if (rabGsab) {
+ map = GetDerivedRabGsabMap(target, newTarget);
+ } else {
+ map = GetDerivedMap(target, newTarget);
+ }
+
+ // 5. Let elementSize be the Number value of the Element Size value in Table
+ // 56 for constructorName.
+ const elementsInfo = GetTypedArrayElementsInfo(map);
+
try {
// 6. Let offset be ? ToIndex(byteOffset).
const offset: uintptr = ToIndex(byteOffset) otherwise IfInvalidOffset;
@@ -226,7 +257,13 @@ transitioning macro ConstructByArrayBuffer(implicit context: Context)(
}
// 10. Let bufferByteLength be buffer.[[ArrayBufferByteLength]].
- const bufferByteLength: uintptr = buffer.byte_length;
+ let bufferByteLength: uintptr;
+ if (IsResizableArrayBuffer(buffer) && IsSharedArrayBuffer(buffer)) {
+ bufferByteLength = ToIndex(GrowableSharedArrayBufferByteLength(buffer))
+ otherwise unreachable;
+ } else {
+ bufferByteLength = buffer.byte_length;
+ }
// 11. If length is either not present or undefined, then
if (length == Undefined) {
@@ -261,7 +298,8 @@ transitioning macro ConstructByArrayBuffer(implicit context: Context)(
const isOnHeap: constexpr bool = false;
return AllocateTypedArray(
- isOnHeap, map, buffer, offset, newByteLength, newLength);
+ isOnHeap, map, buffer, offset, newByteLength, newLength,
+ isLengthTracking);
} label IfInvalidAlignment(problemString: String) deferred {
ThrowInvalidTypedArrayAlignment(map, problemString);
} label IfInvalidLength deferred {
@@ -286,6 +324,8 @@ transitioning macro TypedArrayCreateByLength(implicit context: Context)(
// ValidateTypedArray currently returns the array, not the ViewBuffer.
const newTypedArray: JSTypedArray =
ValidateTypedArray(context, newTypedArrayObj, methodName);
+ newTypedArray.bit_field.is_length_tracking = false;
+ newTypedArray.bit_field.is_backed_by_rab = false;
if (IsDetachedBuffer(newTypedArray.buffer)) deferred {
ThrowTypeError(MessageTemplate::kDetachedOperation, methodName);
@@ -336,21 +376,16 @@ transitioning builtin CreateTypedArray(
assert(IsConstructor(target));
// 4. Let O be ? AllocateTypedArray(constructorName, NewTarget,
// "%TypedArrayPrototype%").
- const map = GetDerivedMap(target, newTarget);
-
- // 5. Let elementSize be the Number value of the Element Size value in Table
- // 56 for constructorName.
- const elementsInfo = GetTypedArrayElementsInfo(map);
-
try {
typeswitch (arg1) {
case (length: Smi): {
goto IfConstructByLength(length);
}
case (buffer: JSArrayBuffer): {
- return ConstructByArrayBuffer(map, buffer, arg2, arg3, elementsInfo);
+ return ConstructByArrayBuffer(target, newTarget, buffer, arg2, arg3);
}
case (typedArray: JSTypedArray): {
+ // TODO(v8:11111): Support RAB / GSAB.
ConstructByTypedArray(typedArray) otherwise IfConstructByArrayLike;
}
case (obj: JSReceiver): {
@@ -363,9 +398,18 @@ transitioning builtin CreateTypedArray(
}
}
} label IfConstructByLength(length: JSAny) {
+ const map = GetDerivedMap(target, newTarget);
+ // 5. Let elementSize be the Number value of the Element Size value in Table
+ // 56 for constructorName.
+ const elementsInfo = GetTypedArrayElementsInfo(map);
+
return ConstructByLength(map, length, elementsInfo);
} label IfConstructByArrayLike(
arrayLike: JSReceiver, length: uintptr, bufferConstructor: JSReceiver) {
+ const map = GetDerivedMap(target, newTarget);
+ // 5. Let elementSize be the Number value of the Element Size value in Table
+ // 56 for constructorName.
+ const elementsInfo = GetTypedArrayElementsInfo(map);
return ConstructByArrayLike(
map, arrayLike, length, elementsInfo, bufferConstructor);
}
diff --git a/deps/v8/src/builtins/wasm.tq b/deps/v8/src/builtins/wasm.tq
index 05a1516204..f859d1e0bf 100644
--- a/deps/v8/src/builtins/wasm.tq
+++ b/deps/v8/src/builtins/wasm.tq
@@ -287,8 +287,9 @@ builtin WasmAllocateRtt(typeIndex: intptr, parent: Map): Map {
}
builtin WasmAllocateStructWithRtt(rtt: Map): HeapObject {
- const instanceSize: intptr =
- unsafe::TimesTaggedSize(Convert<intptr>(rtt.instance_size_in_words));
+ const typeInfo: WasmTypeInfo = %RawDownCast<WasmTypeInfo>(
+ rtt.constructor_or_back_pointer_or_native_context);
+ const instanceSize: intptr = SmiUntag(typeInfo.instance_size);
const result: HeapObject = unsafe::Allocate(
instanceSize, AllocationFlag::kAllowLargeObjectAllocation);
*UnsafeConstCast(&result.map) = rtt;
diff --git a/deps/v8/src/builtins/x64/builtins-x64.cc b/deps/v8/src/builtins/x64/builtins-x64.cc
index 5b5e964ef9..7fc7c5dec7 100644
--- a/deps/v8/src/builtins/x64/builtins-x64.cc
+++ b/deps/v8/src/builtins/x64/builtins-x64.cc
@@ -8,18 +8,19 @@
#include "src/base/bits-iterator.h"
#include "src/base/iterator.h"
#include "src/codegen/code-factory.h"
-#include "src/common/globals.h"
-#include "src/objects/code.h"
+#include "src/codegen/interface-descriptors-inl.h"
// For interpreter_entry_return_pc_offset. TODO(jkummerow): Drop.
#include "src/codegen/macro-assembler-inl.h"
#include "src/codegen/register-configuration.h"
#include "src/codegen/x64/assembler-x64.h"
+#include "src/common/globals.h"
#include "src/deoptimizer/deoptimizer.h"
#include "src/execution/frame-constants.h"
#include "src/execution/frames.h"
#include "src/heap/heap-inl.h"
#include "src/logging/counters.h"
#include "src/objects/cell.h"
+#include "src/objects/code.h"
#include "src/objects/debug-objects.h"
#include "src/objects/foreign.h"
#include "src/objects/heap-number.h"
@@ -118,7 +119,7 @@ void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) {
// rax: number of arguments (untagged)
// rdi: constructor function
// rdx: new target
- __ InvokeFunction(rdi, rdx, rax, CALL_FUNCTION);
+ __ InvokeFunction(rdi, rdx, rax, InvokeType::kCall);
// Restore smi-tagged arguments count from the frame.
__ movq(rbx, Operand(rbp, ConstructFrameConstants::kLengthOffset));
@@ -242,7 +243,7 @@ void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) {
__ Push(r8);
// Call the function.
- __ InvokeFunction(rdi, rdx, rax, CALL_FUNCTION);
+ __ InvokeFunction(rdi, rdx, rax, InvokeType::kCall);
// ----------- S t a t e -------------
// -- rax constructor result
@@ -383,8 +384,8 @@ void Generate_JSEntryVariant(MacroAssembler* masm, StackFrame::Type type,
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
// Initialize the pointer cage base register.
- // TODO(syg): Actually make a cage.
- __ movq(kPointerCageBaseRegister, arg_reg_1);
+ __ LoadRootRelative(kPtrComprCageBaseRegister,
+ IsolateData::cage_base_offset());
#endif
}
@@ -560,7 +561,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
// rdx : new_target
// Clear the context before we push it when entering the internal frame.
- __ Set(rsi, 0);
+ __ Move(rsi, 0);
// Enter an internal frame.
FrameScope scope(masm, StackFrame::INTERNAL);
@@ -687,9 +688,9 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
__ StoreTaggedField(
FieldOperand(rdx, JSGeneratorObject::kInputOrDebugPosOffset), rax);
__ RecordWriteField(rdx, JSGeneratorObject::kInputOrDebugPosOffset, rax, rcx,
- kDontSaveFPRegs);
+ SaveFPRegsMode::kIgnore);
- Register decompr_scratch1 = COMPRESS_POINTERS_BOOL ? r11 : no_reg;
+ Register decompr_scratch1 = COMPRESS_POINTERS_BOOL ? r8 : no_reg;
// Load suspended function and context.
__ LoadTaggedPointerField(
@@ -740,20 +741,15 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) {
rbx, FieldOperand(rdx, JSGeneratorObject::kParametersAndRegistersOffset));
{
- {
- Label done_loop, loop;
- __ movq(r9, rcx);
-
- __ bind(&loop);
- __ decq(r9);
- __ j(less, &done_loop, Label::kNear);
- __ PushTaggedAnyField(
- FieldOperand(rbx, r9, times_tagged_size, FixedArray::kHeaderSize),
- decompr_scratch1);
- __ jmp(&loop);
-
- __ bind(&done_loop);
- }
+ Label done_loop, loop;
+ __ bind(&loop);
+ __ decq(rcx);
+ __ j(less, &done_loop, Label::kNear);
+ __ PushTaggedAnyField(
+ FieldOperand(rbx, rcx, times_tagged_size, FixedArray::kHeaderSize),
+ decompr_scratch1);
+ __ jmp(&loop);
+ __ bind(&done_loop);
// Push the receiver.
__ PushTaggedPointerField(
@@ -841,7 +837,8 @@ static void ReplaceClosureCodeWithOptimizedCode(MacroAssembler* masm,
optimized_code);
__ movq(scratch1, optimized_code); // Write barrier clobbers scratch1 below.
__ RecordWriteField(closure, JSFunction::kCodeOffset, scratch1, scratch2,
- kDontSaveFPRegs, OMIT_REMEMBERED_SET, OMIT_SMI_CHECK);
+ SaveFPRegsMode::kIgnore, RememberedSetAction::kOmit,
+ SmiCheck::kOmit);
}
static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1,
@@ -1084,7 +1081,7 @@ static void MaybeOptimizeCodeOrTailCallOptimizedCodeSlot(
__ LoadAnyTaggedField(
optimized_code_entry,
FieldOperand(feedback_vector, FeedbackVector::kMaybeOptimizedCodeOffset));
- TailCallOptimizedCodeSlot(masm, optimized_code_entry, r11, r15, jump_mode);
+ TailCallOptimizedCodeSlot(masm, optimized_code_entry, r8, r15, jump_mode);
}
// Generate code for entering a JS function with the interpreter.
@@ -1236,10 +1233,11 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
__ Move(
kInterpreterDispatchTableRegister,
ExternalReference::interpreter_dispatch_table_address(masm->isolate()));
- __ movzxbq(r11, Operand(kInterpreterBytecodeArrayRegister,
- kInterpreterBytecodeOffsetRegister, times_1, 0));
+ __ movzxbq(kScratchRegister,
+ Operand(kInterpreterBytecodeArrayRegister,
+ kInterpreterBytecodeOffsetRegister, times_1, 0));
__ movq(kJavaScriptCallCodeStartRegister,
- Operand(kInterpreterDispatchTableRegister, r11,
+ Operand(kInterpreterDispatchTableRegister, kScratchRegister,
times_system_pointer_size, 0));
__ call(kJavaScriptCallCodeStartRegister);
masm->isolate()->heap()->SetInterpreterEntryReturnPCOffset(masm->pc_offset());
@@ -1259,7 +1257,7 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
kInterpreterBytecodeOffsetRegister, times_1, 0));
AdvanceBytecodeOffsetOrReturn(masm, kInterpreterBytecodeArrayRegister,
kInterpreterBytecodeOffsetRegister, rbx, rcx,
- r11, &do_return);
+ r8, &do_return);
__ jmp(&do_dispatch);
__ bind(&do_return);
@@ -1558,15 +1556,16 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
}
// Dispatch to the target bytecode.
- __ movzxbq(r11, Operand(kInterpreterBytecodeArrayRegister,
- kInterpreterBytecodeOffsetRegister, times_1, 0));
+ __ movzxbq(kScratchRegister,
+ Operand(kInterpreterBytecodeArrayRegister,
+ kInterpreterBytecodeOffsetRegister, times_1, 0));
__ movq(kJavaScriptCallCodeStartRegister,
- Operand(kInterpreterDispatchTableRegister, r11,
+ Operand(kInterpreterDispatchTableRegister, kScratchRegister,
times_system_pointer_size, 0));
__ jmp(kJavaScriptCallCodeStartRegister);
}
-void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) {
// Get bytecode array and bytecode offset from the stack frame.
__ movq(kInterpreterBytecodeArrayRegister,
Operand(rbp, InterpreterFrameConstants::kBytecodeArrayFromFp));
@@ -1587,7 +1586,7 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
Label if_return;
AdvanceBytecodeOffsetOrReturn(masm, kInterpreterBytecodeArrayRegister,
kInterpreterBytecodeOffsetRegister, rbx, rcx,
- r11, &if_return);
+ r8, &if_return);
__ bind(&enter_bytecode);
// Convert new bytecode offset to a Smi and save in the stackframe.
@@ -1611,29 +1610,38 @@ void Builtins::Generate_InterpreterEnterBytecodeAdvance(MacroAssembler* masm) {
__ Abort(AbortReason::kInvalidBytecodeAdvance);
}
-void Builtins::Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm) {
+void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) {
Generate_InterpreterEnterBytecode(masm);
}
// static
void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
+ Register feedback_vector = r8;
+ Register optimization_state = rcx;
+ Register return_address = r15;
+
+#ifdef DEBUG
+ for (auto reg : BaselineOutOfLinePrologueDescriptor::registers()) {
+ DCHECK(
+ !AreAliased(feedback_vector, optimization_state, return_address, reg));
+ }
+#endif
+
auto descriptor = Builtins::CallInterfaceDescriptorFor(
Builtins::kBaselineOutOfLinePrologue);
Register closure = descriptor.GetRegisterParameter(
BaselineOutOfLinePrologueDescriptor::kClosure);
// Load the feedback vector from the closure.
- Register feedback_vector = r11;
__ LoadTaggedPointerField(
feedback_vector, FieldOperand(closure, JSFunction::kFeedbackCellOffset));
__ LoadTaggedPointerField(feedback_vector,
FieldOperand(feedback_vector, Cell::kValueOffset));
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
__ CmpObjectType(feedback_vector, FEEDBACK_VECTOR_TYPE, kScratchRegister);
__ Assert(equal, AbortReason::kExpectedFeedbackVector);
}
// Check for an optimization marker.
- Register optimization_state = rcx;
Label has_optimized_code_or_marker;
LoadOptimizationStateAndJumpIfNeedsProcessing(
masm, optimization_state, feedback_vector, &has_optimized_code_or_marker);
@@ -1642,8 +1650,6 @@ void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
__ incl(
FieldOperand(feedback_vector, FeedbackVector::kInvocationCountOffset));
- Register return_address = r15;
-
__ RecordComment("[ Frame Setup");
// Save the return address, so that we can push it to the end of the newly
// set-up frame once we're done setting it up.
@@ -1723,8 +1729,8 @@ void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) {
// return since we may do a runtime call along the way that requires the
// stack to only contain valid frames.
__ Drop(1);
- MaybeOptimizeCodeOrTailCallOptimizedCodeSlot(masm, rcx, feedback_vector,
- JumpMode::kPushAndReturn);
+ MaybeOptimizeCodeOrTailCallOptimizedCodeSlot(
+ masm, optimization_state, feedback_vector, JumpMode::kPushAndReturn);
__ Trap();
__ RecordComment("]");
}
@@ -1840,7 +1846,7 @@ void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) {
void Builtins::Generate_TailCallOptimizedCodeSlot(MacroAssembler* masm) {
Register optimized_code_entry = kJavaScriptCallCodeStartRegister;
- TailCallOptimizedCodeSlot(masm, optimized_code_entry, r11, r15,
+ TailCallOptimizedCodeSlot(masm, optimized_code_entry, r8, r15,
JumpMode::kJump);
}
@@ -1905,7 +1911,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
// Function.prototype.apply() yet, we use a normal Call builtin here.
__ bind(&no_arguments);
{
- __ Set(rax, 0);
+ __ Move(rax, 0);
__ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET);
}
}
@@ -2062,6 +2068,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
}
// static
+// TODO(v8:11615): Observe Code::kMaxArguments in CallOrConstructVarargs
void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
Handle<Code> code) {
// ----------- S t a t e -------------
@@ -2072,14 +2079,13 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
// -- rdx : new.target (for [[Construct]])
// -- rsp[0] : return address
// -----------------------------------
- Register scratch = r11;
- if (masm->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Allow rbx to be a FixedArray, or a FixedDoubleArray if rcx == 0.
Label ok, fail;
__ AssertNotSmi(rbx);
Register map = r9;
- __ LoadTaggedPointerField(map, FieldOperand(rbx, HeapObject::kMapOffset));
+ __ LoadMap(map, rbx);
__ CmpInstanceType(map, FIXED_ARRAY_TYPE);
__ j(equal, &ok);
__ CmpInstanceType(map, FIXED_DOUBLE_ARRAY_TYPE);
@@ -2101,13 +2107,13 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
// including the receiver and the return address.
{
Label copy, check;
- Register src = r8, dest = rsp, num = r9, current = r11;
+ Register src = r8, dest = rsp, num = r9, current = r12;
__ movq(src, rsp);
__ leaq(kScratchRegister, Operand(rcx, times_system_pointer_size, 0));
__ AllocateStackSpace(kScratchRegister);
__ leaq(num, Operand(rax, 2)); // Number of words to copy.
// +2 for receiver and return address.
- __ Set(current, 0);
+ __ Move(current, 0);
__ jmp(&check);
__ bind(&copy);
__ movq(kScratchRegister,
@@ -2123,9 +2129,9 @@ void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm,
// Copy the additional arguments onto the stack.
{
- Register value = scratch;
+ Register value = r12;
Register src = rbx, dest = r8, num = rcx, current = r9;
- __ Set(current, 0);
+ __ Move(current, 0);
Label done, push, loop;
__ bind(&loop);
__ cmpl(current, num);
@@ -2166,7 +2172,7 @@ void Builtins::Generate_CallOrConstructForwardVarargs(MacroAssembler* masm,
if (mode == CallOrConstructMode::kConstruct) {
Label new_target_constructor, new_target_not_constructor;
__ JumpIfSmi(rdx, &new_target_not_constructor, Label::kNear);
- __ LoadTaggedPointerField(rbx, FieldOperand(rdx, HeapObject::kMapOffset));
+ __ LoadMap(rbx, rdx);
__ testb(FieldOperand(rbx, Map::kBitFieldOffset),
Immediate(Map::Bits1::IsConstructorBit::kMask));
__ j(not_zero, &new_target_constructor, Label::kNear);
@@ -2203,13 +2209,13 @@ void Builtins::Generate_CallOrConstructForwardVarargs(MacroAssembler* masm,
// including the receiver and the return address.
{
Label copy, check;
- Register src = r9, dest = rsp, num = r12, current = r11;
+ Register src = r9, dest = rsp, num = r12, current = r15;
__ movq(src, rsp);
__ leaq(kScratchRegister, Operand(r8, times_system_pointer_size, 0));
__ AllocateStackSpace(kScratchRegister);
__ leaq(num, Operand(rax, 2)); // Number of words to copy.
// +2 for receiver and return address.
- __ Set(current, 0);
+ __ Move(current, 0);
__ jmp(&check);
__ bind(&copy);
__ movq(kScratchRegister,
@@ -2359,7 +2365,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
__ movzxwq(
rbx, FieldOperand(rdx, SharedFunctionInfo::kFormalParameterCountOffset));
- __ InvokeFunctionCode(rdi, no_reg, rbx, rax, JUMP_FUNCTION);
+ __ InvokeFunctionCode(rdi, no_reg, rbx, rax, InvokeType::kJump);
// The function is a "classConstructor", need to raise an exception.
__ bind(&class_constructor);
@@ -2592,7 +2598,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
__ JumpIfSmi(rdi, &non_constructor);
// Check if target has a [[Construct]] internal method.
- __ LoadTaggedPointerField(rcx, FieldOperand(rdi, HeapObject::kMapOffset));
+ __ LoadMap(rcx, rdi);
__ testb(FieldOperand(rcx, Map::kBitFieldOffset),
Immediate(Map::Bits1::IsConstructorBit::kMask));
__ j(zero, &non_constructor);
@@ -2682,15 +2688,17 @@ void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) {
}
void Builtins::Generate_BaselineOnStackReplacement(MacroAssembler* masm) {
+ __ movq(kContextRegister,
+ MemOperand(rbp, BaselineFrameConstants::kContextOffset));
return OnStackReplacement(masm, false);
}
#if V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_WasmCompileLazy(MacroAssembler* masm) {
// The function index was pushed to the stack by the caller as int32.
- __ Pop(r11);
+ __ Pop(r15);
// Convert to Smi for the runtime call.
- __ SmiTag(r11);
+ __ SmiTag(r15);
{
HardAbortScope hard_abort(masm); // Avoid calls to Abort.
FrameScope scope(masm, StackFrame::WASM_COMPILE_LAZY);
@@ -2717,13 +2725,13 @@ void Builtins::Generate_WasmCompileLazy(MacroAssembler* masm) {
// Push the Wasm instance as an explicit argument to WasmCompileLazy.
__ Push(kWasmInstanceRegister);
// Push the function index as second argument.
- __ Push(r11);
+ __ Push(r15);
// Initialize the JavaScript context with 0. CEntry will use it to
// set the current context on the isolate.
__ Move(kContextRegister, Smi::zero());
__ CallRuntime(Runtime::kWasmCompileLazy, 2);
// The entrypoint address is the return value.
- __ movq(r11, kReturnRegister0);
+ __ movq(r15, kReturnRegister0);
// Restore registers.
for (DoubleRegister reg : base::Reversed(wasm::kFpParamRegisters)) {
@@ -2737,7 +2745,7 @@ void Builtins::Generate_WasmCompileLazy(MacroAssembler* masm) {
}
}
// Finally, jump to the entrypoint.
- __ jmp(r11);
+ __ jmp(r15);
}
void Builtins::Generate_WasmDebugBreak(MacroAssembler* masm) {
@@ -2915,7 +2923,7 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
__ LoadExternalPointerField(
signature,
FieldOperand(foreign_signature, Foreign::kForeignAddressOffset),
- kForeignForeignAddressTag);
+ kForeignForeignAddressTag, kScratchRegister);
foreign_signature = no_reg;
Register return_count = r8;
__ movq(return_count,
@@ -3243,28 +3251,17 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
thread_in_wasm_flag_addr,
MemOperand(kRootRegister, Isolate::thread_in_wasm_flag_address_offset()));
__ movl(MemOperand(thread_in_wasm_flag_addr, 0), Immediate(1));
-
- Register jump_table_start = thread_in_wasm_flag_addr;
- __ movq(jump_table_start,
- MemOperand(wasm_instance,
- wasm::ObjectAccess::ToTagged(
- WasmInstanceObject::kJumpTableStartOffset)));
thread_in_wasm_flag_addr = no_reg;
- Register jump_table_offset = function_data;
- __ LoadAnyTaggedField(
- jump_table_offset,
- MemOperand(
- function_data,
- WasmExportedFunctionData::kJumpTableOffsetOffset - kHeapObjectTag));
-
- // Change from smi to integer.
- __ SmiUntag(jump_table_offset);
-
- Register function_entry = jump_table_offset;
- __ addq(function_entry, jump_table_start);
- jump_table_offset = no_reg;
- jump_table_start = no_reg;
+ Register function_entry = function_data;
+ Register scratch = r12;
+ __ LoadExternalPointerField(
+ function_entry,
+ FieldOperand(function_data,
+ WasmExportedFunctionData::kForeignAddressOffset),
+ kForeignForeignAddressTag, scratch);
+ function_data = no_reg;
+ scratch = no_reg;
// We set the indicating value for the GC to the proper one for Wasm call.
constexpr int kWasmCallGCScanSlotCount = 0;
@@ -3349,6 +3346,9 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
// Param conversion builtins.
// -------------------------------------------
__ bind(&convert_param);
+ // Restore function_data register (which was clobbered by the code above,
+ // but was valid when jumping here earlier).
+ function_data = rdi;
// The order of pushes is important. We want the heap objects, that should be
// scanned by GC, to be on the top of the stack.
// We have to set the indicating value for the GC to the number of values on
@@ -3527,6 +3527,13 @@ void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) {
__ jmp(&compile_wrapper_done);
}
+void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
+ MemOperand OSRTargetSlot(rbp, -wasm::kOSRTargetOffset);
+ __ movq(kScratchRegister, OSRTargetSlot);
+ __ movq(OSRTargetSlot, Immediate(0));
+ __ jmp(kScratchRegister);
+}
+
#endif // V8_ENABLE_WEBASSEMBLY
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
@@ -3538,7 +3545,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
// rsp: stack pointer (restored after C call)
// rsi: current context (restored)
//
- // If argv_mode == kArgvInRegister:
+ // If argv_mode == ArgvMode::kRegister:
// r15: pointer to the first argument
#ifdef V8_TARGET_OS_WIN
@@ -3569,15 +3576,15 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
int arg_stack_space =
kArgExtraStackSpace +
(result_size <= kMaxRegisterResultSize ? 0 : result_size);
- if (argv_mode == kArgvInRegister) {
- DCHECK(save_doubles == kDontSaveFPRegs);
+ if (argv_mode == ArgvMode::kRegister) {
+ DCHECK(save_doubles == SaveFPRegsMode::kIgnore);
DCHECK(!builtin_exit_frame);
__ EnterApiExitFrame(arg_stack_space);
// Move argc into r12 (argv is already in r15).
__ movq(r12, rax);
} else {
__ EnterExitFrame(
- arg_stack_space, save_doubles == kSaveFPRegs,
+ arg_stack_space, save_doubles == SaveFPRegsMode::kSave,
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
}
@@ -3641,7 +3648,8 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
}
// Exit the JavaScript to C++ exit frame.
- __ LeaveExitFrame(save_doubles == kSaveFPRegs, argv_mode == kArgvOnStack);
+ __ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave,
+ argv_mode == ArgvMode::kStack);
__ ret(0);
// Handling of exception.
@@ -3866,9 +3874,7 @@ void CallApiFunctionAndReturn(MacroAssembler* masm, Register function_address,
Register map = rcx;
__ JumpIfSmi(return_value, &ok, Label::kNear);
- __ LoadTaggedPointerField(map,
- FieldOperand(return_value, HeapObject::kMapOffset));
-
+ __ LoadMap(map, return_value);
__ CmpInstanceType(map, LAST_NAME_TYPE);
__ j(below_equal, &ok, Label::kNear);
@@ -4053,7 +4059,7 @@ void Builtins::Generate_CallApiGetter(MacroAssembler* masm) {
Register holder = ApiGetterDescriptor::HolderRegister();
Register callback = ApiGetterDescriptor::CallbackRegister();
Register scratch = rax;
- Register decompr_scratch1 = COMPRESS_POINTERS_BOOL ? r11 : no_reg;
+ Register decompr_scratch1 = COMPRESS_POINTERS_BOOL ? r15 : no_reg;
DCHECK(!AreAliased(receiver, holder, callback, scratch, decompr_scratch1));
@@ -4116,7 +4122,7 @@ void Builtins::Generate_CallApiGetter(MacroAssembler* masm) {
__ LoadExternalPointerField(
api_function_address,
FieldOperand(scratch, Foreign::kForeignAddressOffset),
- kForeignForeignAddressTag);
+ kForeignForeignAddressTag, kScratchRegister);
// +3 is to skip prolog, return address and name handle.
Operand return_value_operand(
@@ -4172,7 +4178,7 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
// We use this to keep the value of the fifth argument temporarily.
// Unfortunately we can't store it directly in r8 (used for passing
// this on linux), since it is another parameter passing register on windows.
- Register arg5 = r11;
+ Register arg5 = r15;
__ movq(arg_reg_3, Immediate(Deoptimizer::kFixedExitSizeMarker));
// Get the address of the location in the code object
@@ -4192,7 +4198,7 @@ void Generate_DeoptimizationEntry(MacroAssembler* masm,
__ movq(rax, Operand(rbp, StandardFrameConstants::kFunctionOffset));
__ bind(&context_check);
__ movq(arg_reg_1, rax);
- __ Set(arg_reg_2, static_cast<int>(deopt_kind));
+ __ Move(arg_reg_2, static_cast<int>(deopt_kind));
// Args 3 and 4 are already in the right registers.
// On windows put the arguments on the stack (PrepareCallCFunction
diff --git a/deps/v8/src/codegen/arm/assembler-arm-inl.h b/deps/v8/src/codegen/arm/assembler-arm-inl.h
index 7035fa2492..f72e27703e 100644
--- a/deps/v8/src/codegen/arm/assembler-arm-inl.h
+++ b/deps/v8/src/codegen/arm/assembler-arm-inl.h
@@ -206,7 +206,7 @@ Operand::Operand(Smi value) : rmode_(RelocInfo::NONE) {
Operand::Operand(Register rm) : rm_(rm), shift_op_(LSL), shift_imm_(0) {}
void Assembler::CheckBuffer() {
- if (buffer_space() <= kGap) {
+ if (V8_UNLIKELY(buffer_space() <= kGap)) {
GrowBuffer();
}
MaybeCheckConstPool();
diff --git a/deps/v8/src/codegen/arm/assembler-arm.cc b/deps/v8/src/codegen/arm/assembler-arm.cc
index 17a20a6f97..09c57928ff 100644
--- a/deps/v8/src/codegen/arm/assembler-arm.cc
+++ b/deps/v8/src/codegen/arm/assembler-arm.cc
@@ -534,9 +534,8 @@ Assembler::Assembler(const AssemblerOptions& options,
: AssemblerBase(options, std::move(buffer)),
pending_32_bit_constants_(),
scratch_register_list_(ip.bit()) {
- pending_32_bit_constants_.reserve(kMinNumPendingConstants);
reloc_info_writer.Reposition(buffer_start_ + buffer_->size(), pc_);
- next_buffer_check_ = 0;
+ constant_pool_deadline_ = kMaxInt;
const_pool_blocked_nesting_ = 0;
no_const_pool_before_ = 0;
first_const_pool_32_use_ = -1;
@@ -556,7 +555,10 @@ Assembler::Assembler(const AssemblerOptions& options,
}
}
-Assembler::~Assembler() { DCHECK_EQ(const_pool_blocked_nesting_, 0); }
+Assembler::~Assembler() {
+ DCHECK_EQ(const_pool_blocked_nesting_, 0);
+ DCHECK_EQ(first_const_pool_32_use_, -1);
+}
void Assembler::GetCode(Isolate* isolate, CodeDesc* desc,
SafepointTableBuilder* safepoint_table_builder,
@@ -841,7 +843,7 @@ void Assembler::target_at_put(int pos, int target_pos) {
// orr dst, dst, #target8_2 << 16
uint32_t target24 = target_pos + (Code::kHeaderSize - kHeapObjectTag);
- DCHECK(is_uint24(target24));
+ CHECK(is_uint24(target24));
if (is_uint8(target24)) {
// If the target fits in a byte then only patch with a mov
// instruction.
@@ -897,7 +899,7 @@ void Assembler::target_at_put(int pos, int target_pos) {
instr &= ~kImm24Mask;
}
int imm24 = imm26 >> 2;
- DCHECK(is_int24(imm24));
+ CHECK(is_int24(imm24));
instr_at_put(pos, instr | (imm24 & kImm24Mask));
}
@@ -1030,10 +1032,53 @@ namespace {
bool FitsShifter(uint32_t imm32, uint32_t* rotate_imm, uint32_t* immed_8,
Instr* instr) {
// imm32 must be unsigned.
- for (int rot = 0; rot < 16; rot++) {
- uint32_t imm8 = base::bits::RotateLeft32(imm32, 2 * rot);
- if ((imm8 <= 0xFF)) {
- *rotate_imm = rot;
+ {
+ // 32-bit immediates can be encoded as:
+ // (8-bit value, 2*N bit left rotation)
+ // e.g. 0xab00 can be encoded as 0xab shifted left by 8 == 2*4, i.e.
+ // (0xab, 4)
+ //
+ // Check three categories which cover all possible shifter fits:
+ // 1. 0x000000FF: The value is already 8-bit (no shifting necessary),
+ // 2. 0x000FF000: The 8-bit value is somewhere in the middle of the 32-bit
+ // value, and
+ // 3. 0xF000000F: The 8-bit value is split over the beginning and end of
+ // the 32-bit value.
+
+ // For 0x000000FF.
+ if (imm32 <= 0xFF) {
+ *rotate_imm = 0;
+ *immed_8 = imm32;
+ return true;
+ }
+ // For 0x000FF000, count trailing zeros and shift down to 0x000000FF. Note
+ // that we have to round the trailing zeros down to the nearest multiple of
+ // two, since we can only encode shifts of 2*N. Note also that we know that
+ // imm32 isn't zero, since we already checked if it's less than 0xFF.
+ int half_trailing_zeros = base::bits::CountTrailingZerosNonZero(imm32) / 2;
+ uint32_t imm8 = imm32 >> (half_trailing_zeros * 2);
+ if (imm8 <= 0xFF) {
+ DCHECK_GT(half_trailing_zeros, 0);
+ // Rotating right by trailing_zeros is equivalent to rotating left by
+ // 32 - trailing_zeros. We return rotate_right / 2, so calculate
+ // (32 - trailing_zeros)/2 == 16 - trailing_zeros/2.
+ *rotate_imm = (16 - half_trailing_zeros);
+ *immed_8 = imm8;
+ return true;
+ }
+ // For 0xF000000F, rotate by 16 to get 0x000FF000 and continue as if it
+ // were that case.
+ uint32_t imm32_rot16 = base::bits::RotateLeft32(imm32, 16);
+ half_trailing_zeros =
+ base::bits::CountTrailingZerosNonZero(imm32_rot16) / 2;
+ imm8 = imm32_rot16 >> (half_trailing_zeros * 2);
+ if (imm8 <= 0xFF) {
+ // We've rotated left by 2*8, so we can't have more than that many
+ // trailing zeroes.
+ DCHECK_LT(half_trailing_zeros, 8);
+ // We've already rotated by 2*8, before calculating trailing_zeros/2,
+ // so we need (32 - (16 + trailing_zeros))/2 == 8 - trailing_zeros/2.
+ *rotate_imm = 8 - half_trailing_zeros;
*immed_8 = imm8;
return true;
}
@@ -2258,7 +2303,7 @@ void Assembler::bkpt(uint32_t imm16) {
}
void Assembler::svc(uint32_t imm24, Condition cond) {
- DCHECK(is_uint24(imm24));
+ CHECK(is_uint24(imm24));
emit(cond | 15 * B24 | imm24);
}
@@ -5204,8 +5249,13 @@ void Assembler::ConstantPoolAddEntry(int position, RelocInfo::Mode rmode,
(rmode == RelocInfo::CODE_TARGET && value != 0) ||
(RelocInfo::IsEmbeddedObjectMode(rmode) && value != 0);
DCHECK_LT(pending_32_bit_constants_.size(), kMaxNumPending32Constants);
- if (pending_32_bit_constants_.empty()) {
+ if (first_const_pool_32_use_ < 0) {
+ DCHECK(pending_32_bit_constants_.empty());
+ DCHECK_EQ(constant_pool_deadline_, kMaxInt);
first_const_pool_32_use_ = position;
+ constant_pool_deadline_ = position + kCheckPoolDeadline;
+ } else {
+ DCHECK(!pending_32_bit_constants_.empty());
}
ConstantPoolEntry entry(position, value, sharing_ok, rmode);
@@ -5224,7 +5274,7 @@ void Assembler::ConstantPoolAddEntry(int position, RelocInfo::Mode rmode,
}
}
- pending_32_bit_constants_.push_back(entry);
+ pending_32_bit_constants_.emplace_back(entry);
// Make sure the constant pool is not emitted in place of the next
// instruction for which we just recorded relocation info.
@@ -5239,17 +5289,17 @@ void Assembler::ConstantPoolAddEntry(int position, RelocInfo::Mode rmode,
void Assembler::BlockConstPoolFor(int instructions) {
int pc_limit = pc_offset() + instructions * kInstrSize;
if (no_const_pool_before_ < pc_limit) {
- // Max pool start (if we need a jump and an alignment).
-#ifdef DEBUG
- int start = pc_limit + kInstrSize + 2 * kPointerSize;
- DCHECK(pending_32_bit_constants_.empty() ||
- (start < first_const_pool_32_use_ + kMaxDistToIntPool));
-#endif
no_const_pool_before_ = pc_limit;
}
- if (next_buffer_check_ < no_const_pool_before_) {
- next_buffer_check_ = no_const_pool_before_;
+ // If we're due a const pool check before the block finishes, move it to just
+ // after the block.
+ if (constant_pool_deadline_ < no_const_pool_before_) {
+ // Make sure that the new deadline isn't too late (including a jump and the
+ // constant pool marker).
+ DCHECK_LE(no_const_pool_before_,
+ first_const_pool_32_use_ + kMaxDistToIntPool);
+ constant_pool_deadline_ = no_const_pool_before_;
}
}
@@ -5265,49 +5315,44 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
// There is nothing to do if there are no pending constant pool entries.
if (pending_32_bit_constants_.empty()) {
- // Calculate the offset of the next check.
- next_buffer_check_ = pc_offset() + kCheckPoolInterval;
+ // We should only fall into this case if we're either trying to forcing
+ // emission or opportunistically checking after a jump.
+ DCHECK(force_emit || !require_jump);
return;
}
- // Check that the code buffer is large enough before emitting the constant
- // pool (include the jump over the pool and the constant pool marker and
- // the gap to the relocation information).
- int jump_instr = require_jump ? kInstrSize : 0;
- int size_up_to_marker = jump_instr + kInstrSize;
- int estimated_size_after_marker =
- pending_32_bit_constants_.size() * kPointerSize;
- int estimated_size = size_up_to_marker + estimated_size_after_marker;
-
// We emit a constant pool when:
// * requested to do so by parameter force_emit (e.g. after each function).
// * the distance from the first instruction accessing the constant pool to
- // any of the constant pool entries will exceed its limit the next
- // time the pool is checked. This is overly restrictive, but we don't emit
- // constant pool entries in-order so it's conservatively correct.
+ // the first constant pool entry will exceed its limit the next time the
+ // pool is checked.
// * the instruction doesn't require a jump after itself to jump over the
// constant pool, and we're getting close to running out of range.
if (!force_emit) {
- DCHECK(!pending_32_bit_constants_.empty());
- bool need_emit = false;
- int dist32 = pc_offset() + estimated_size - first_const_pool_32_use_;
- if ((dist32 >= kMaxDistToIntPool - kCheckPoolInterval) ||
- (!require_jump && (dist32 >= kMaxDistToIntPool / 2))) {
- need_emit = true;
+ DCHECK_NE(first_const_pool_32_use_, -1);
+ int dist32 = pc_offset() - first_const_pool_32_use_;
+ if (require_jump) {
+ // We should only be on this path if we've exceeded our deadline.
+ DCHECK_GE(dist32, kCheckPoolDeadline);
+ } else if (dist32 < kCheckPoolDeadline / 2) {
+ return;
}
- if (!need_emit) return;
}
- // Deduplicate constants.
- int size_after_marker = estimated_size_after_marker;
+ int size_after_marker = pending_32_bit_constants_.size() * kPointerSize;
+ // Deduplicate constants.
for (size_t i = 0; i < pending_32_bit_constants_.size(); i++) {
ConstantPoolEntry& entry = pending_32_bit_constants_[i];
if (entry.is_merged()) size_after_marker -= kPointerSize;
}
+ // Check that the code buffer is large enough before emitting the constant
+ // pool (include the jump over the pool and the constant pool marker and
+ // the gap to the relocation information).
+ int jump_instr = require_jump ? kInstrSize : 0;
+ int size_up_to_marker = jump_instr + kInstrSize;
int size = size_up_to_marker + size_after_marker;
-
int needed_space = size + kGap;
while (buffer_space() <= needed_space) GrowBuffer();
@@ -5331,6 +5376,14 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
emit(kConstantPoolMarker |
EncodeConstantPoolLength(size_after_marker / kPointerSize));
+ // The first entry in the constant pool should also be the first
+ CHECK_EQ(first_const_pool_32_use_, pending_32_bit_constants_[0].position());
+ CHECK(!pending_32_bit_constants_[0].is_merged());
+
+ // Make sure we're not emitting the constant too late.
+ CHECK_LE(pc_offset(),
+ first_const_pool_32_use_ + kMaxDistToPcRelativeConstant);
+
// Emit 32-bit constant pool entries.
for (size_t i = 0; i < pending_32_bit_constants_.size(); i++) {
ConstantPoolEntry& entry = pending_32_bit_constants_[i];
@@ -5354,6 +5407,7 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
ConstantPoolEntry& merged =
pending_32_bit_constants_[entry.merged_index()];
DCHECK(entry.value() == merged.value());
+ DCHECK_LT(merged.position(), entry.position());
Instr merged_instr = instr_at(merged.position());
DCHECK(IsLdrPcImmediateOffset(merged_instr));
delta = GetLdrRegisterImmediateOffset(merged_instr);
@@ -5379,9 +5433,9 @@ void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
}
}
- // Since a constant pool was just emitted, move the check offset forward by
- // the standard interval.
- next_buffer_check_ = pc_offset() + kCheckPoolInterval;
+ // Since a constant pool was just emitted, we don't need another check until
+ // the next constant pool entry is added.
+ constant_pool_deadline_ = kMaxInt;
}
PatchingAssembler::PatchingAssembler(const AssemblerOptions& options,
diff --git a/deps/v8/src/codegen/arm/assembler-arm.h b/deps/v8/src/codegen/arm/assembler-arm.h
index e0490a6853..04d5eef054 100644
--- a/deps/v8/src/codegen/arm/assembler-arm.h
+++ b/deps/v8/src/codegen/arm/assembler-arm.h
@@ -45,6 +45,7 @@
#include <memory>
#include <vector>
+#include "src/base/small-vector.h"
#include "src/codegen/arm/constants-arm.h"
#include "src/codegen/arm/register-arm.h"
#include "src/codegen/assembler.h"
@@ -310,7 +311,10 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
~Assembler() override;
- void AbortedCodeGeneration() override { pending_32_bit_constants_.clear(); }
+ void AbortedCodeGeneration() override {
+ pending_32_bit_constants_.clear();
+ first_const_pool_32_use_ = -1;
+ }
// GetCode emits any pending (non-emitted) code and fills the descriptor desc.
static constexpr int kNoHandlerTable = 0;
@@ -1148,13 +1152,24 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
static int DecodeShiftImm(Instr instr);
static Instr PatchShiftImm(Instr instr, int immed);
- // Constants in pools are accessed via pc relative addressing, which can
- // reach +/-4KB for integer PC-relative loads and +/-1KB for floating-point
+ // Constants are accessed via pc relative addressing, which can reach −4095 to
+ // 4095 for integer PC-relative loads, and −1020 to 1020 for floating-point
// PC-relative loads, thereby defining a maximum distance between the
- // instruction and the accessed constant.
- static constexpr int kMaxDistToIntPool = 4 * KB;
- // All relocations could be integer, it therefore acts as the limit.
- static constexpr int kMinNumPendingConstants = 4;
+ // instruction and the accessed constant. Additionally, PC-relative loads
+ // start at a delta from the actual load instruction's PC, so we can add this
+ // on to the (positive) distance.
+ static constexpr int kMaxDistToPcRelativeConstant =
+ 4095 + Instruction::kPcLoadDelta;
+ // The constant pool needs to be jumped over, and has a marker, so the actual
+ // distance from the instruction and start of the constant pool has to include
+ // space for these two instructions.
+ static constexpr int kMaxDistToIntPool =
+ kMaxDistToPcRelativeConstant - 2 * kInstrSize;
+ // Experimentally derived as sufficient for ~95% of compiles.
+ static constexpr int kTypicalNumPending32Constants = 32;
+ // The maximum number of pending constants is reached by a sequence of only
+ // constant loads, which limits it to the number of constant loads that can
+ // fit between the first constant load and the distance to the constant pool.
static constexpr int kMaxNumPending32Constants =
kMaxDistToIntPool / kInstrSize;
@@ -1165,8 +1180,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// Check if is time to emit a constant pool.
void CheckConstPool(bool force_emit, bool require_jump);
- void MaybeCheckConstPool() {
- if (pc_offset() >= next_buffer_check_) {
+ V8_INLINE void MaybeCheckConstPool() {
+ if (V8_UNLIKELY(pc_offset() >= constant_pool_deadline_)) {
CheckConstPool(false, true);
}
}
@@ -1192,9 +1207,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// number of call to EndBlockConstpool.
void StartBlockConstPool() {
if (const_pool_blocked_nesting_++ == 0) {
- // Prevent constant pool checks happening by setting the next check to
- // the biggest possible offset.
- next_buffer_check_ = kMaxInt;
+ // Prevent constant pool checks happening by resetting the deadline.
+ constant_pool_deadline_ = kMaxInt;
}
}
@@ -1202,19 +1216,14 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// StartBlockConstPool to have an effect.
void EndBlockConstPool() {
if (--const_pool_blocked_nesting_ == 0) {
+ if (first_const_pool_32_use_ >= 0) {
#ifdef DEBUG
- // Max pool start (if we need a jump and an alignment).
- int start = pc_offset() + kInstrSize + 2 * kPointerSize;
- // Check the constant pool hasn't been blocked for too long.
- DCHECK(pending_32_bit_constants_.empty() ||
- (start < first_const_pool_32_use_ + kMaxDistToIntPool));
+ // Check the constant pool hasn't been blocked for too long.
+ DCHECK_LE(pc_offset(), first_const_pool_32_use_ + kMaxDistToIntPool);
#endif
- // Two cases:
- // * no_const_pool_before_ >= next_buffer_check_ and the emission is
- // still blocked
- // * no_const_pool_before_ < next_buffer_check_ and the next emit will
- // trigger a check.
- next_buffer_check_ = no_const_pool_before_;
+ // Reset the constant pool check back to the deadline.
+ constant_pool_deadline_ = first_const_pool_32_use_ + kCheckPoolDeadline;
+ }
}
}
@@ -1258,7 +1267,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// pending relocation entry per instruction.
// The buffers of pending constant pool entries.
- std::vector<ConstantPoolEntry> pending_32_bit_constants_;
+ base::SmallVector<ConstantPoolEntry, kTypicalNumPending32Constants>
+ pending_32_bit_constants_;
// Scratch registers available for use by the Assembler.
RegList scratch_register_list_;
@@ -1268,8 +1278,6 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// Avoid overflows for displacements etc.
static const int kMaximalBufferSize = 512 * MB;
- int next_buffer_check_; // pc offset of next buffer check
-
// Constant pool generation
// Pools are emitted in the instruction stream, preferably after unconditional
// jumps or after returns from functions (in dead code locations).
@@ -1281,11 +1289,16 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// if so, a relocation info entry is associated to the constant pool entry.
// Repeated checking whether the constant pool should be emitted is rather
- // expensive. By default we only check again once a number of instructions
- // has been generated. That also means that the sizing of the buffers is not
- // an exact science, and that we rely on some slop to not overrun buffers.
- static constexpr int kCheckPoolIntervalInst = 32;
- static constexpr int kCheckPoolInterval = kCheckPoolIntervalInst * kInstrSize;
+ // expensive. Instead, we check once a deadline is hit; the deadline being
+ // when there is a possibility that MaybeCheckConstPool won't be called before
+ // kMaxDistToIntPoolWithHeader is exceeded. Since MaybeCheckConstPool is
+ // called in CheckBuffer, this means that kGap is an upper bound on this
+ // check. Use 2 * kGap just to give it some slack around BlockConstPoolScopes.
+ static constexpr int kCheckPoolDeadline = kMaxDistToIntPool - 2 * kGap;
+
+ // pc offset of the upcoming constant pool deadline. Equivalent to
+ // first_const_pool_32_use_ + kCheckPoolDeadline.
+ int constant_pool_deadline_;
// Emission of the constant pool may be blocked in some code sequences.
int const_pool_blocked_nesting_; // Block emission if this is not zero.
@@ -1298,7 +1311,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// The bound position, before this we cannot do instruction elimination.
int last_bound_pos_;
- inline void CheckBuffer();
+ V8_INLINE void CheckBuffer();
void GrowBuffer();
// Instruction generation
diff --git a/deps/v8/src/codegen/arm/cpu-arm.cc b/deps/v8/src/codegen/arm/cpu-arm.cc
index 47fe4bdb74..88491c5e51 100644
--- a/deps/v8/src/codegen/arm/cpu-arm.cc
+++ b/deps/v8/src/codegen/arm/cpu-arm.cc
@@ -6,7 +6,7 @@
#ifdef __arm__
#ifdef __QNXNTO__
#include <sys/mman.h> // for cache flushing.
-#undef MAP_TYPE // NOLINT
+#undef MAP_TYPE
#elif V8_OS_FREEBSD
#include <machine/sysarch.h> // for cache flushing
#include <sys/types.h>
diff --git a/deps/v8/src/codegen/arm/interface-descriptors-arm-inl.h b/deps/v8/src/codegen/arm/interface-descriptors-arm-inl.h
new file mode 100644
index 0000000000..296f72d157
--- /dev/null
+++ b/deps/v8/src/codegen/arm/interface-descriptors-arm-inl.h
@@ -0,0 +1,256 @@
+// Copyright 2021 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_CODEGEN_ARM_INTERFACE_DESCRIPTORS_ARM_INL_H_
+#define V8_CODEGEN_ARM_INTERFACE_DESCRIPTORS_ARM_INL_H_
+
+#if V8_TARGET_ARCH_ARM
+
+#include "src/codegen/interface-descriptors.h"
+#include "src/execution/frames.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(r0, r1, r2, r3, r4);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(r0, r1, r2, r3, r4, kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(r0, r1, r2, r3, cp);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(r0, r1, r2, r3, r4, kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return r1; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return r2; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return r0; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return r3; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return r4;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return r1; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return r2; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return r0; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return r4; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() { return r3; }
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return r5; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return r0; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return r3; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return r0; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return r3; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ return r3;
+}
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() { return r4; }
+
+// static
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return r0; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(r3); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // r0 : number of arguments
+ // r1 : the target to call
+ return RegisterArray(r1, r0);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // r0 : number of arguments (on the stack, not including receiver)
+ // r1 : the target to call
+ // r4 : arguments list length (untagged)
+ // r2 : arguments list (FixedArray)
+ return RegisterArray(r1, r0, r4, r2);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // r0 : number of arguments
+ // r2 : start index (to support rest parameters)
+ // r1 : the target to call
+ return RegisterArray(r1, r0, r2);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // r1 : function template info
+ // r2 : number of arguments (on the stack, not including receiver)
+ return RegisterArray(r1, r2);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // r0 : number of arguments (on the stack, not including receiver)
+ // r1 : the target to call
+ // r2 : the object to spread
+ return RegisterArray(r1, r0, r2);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // r1 : the target to call
+ // r2 : the arguments list
+ return RegisterArray(r1, r2);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // r0 : number of arguments (on the stack, not including receiver)
+ // r1 : the target to call
+ // r3 : the new target
+ // r4 : arguments list length (untagged)
+ // r2 : arguments list (FixedArray)
+ return RegisterArray(r1, r3, r0, r4, r2);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // r0 : number of arguments
+ // r3 : the new target
+ // r2 : start index (to support rest parameters)
+ // r1 : the target to call
+ return RegisterArray(r1, r3, r0, r2);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // r0 : number of arguments (on the stack, not including receiver)
+ // r1 : the target to call
+ // r3 : the new target
+ // r2 : the object to spread
+ return RegisterArray(r1, r3, r0, r2);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // r1 : the target to call
+ // r3 : the new target
+ // r2 : the arguments list
+ return RegisterArray(r1, r3, r2);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // r0 : number of arguments
+ // r1 : the target to call
+ // r3 : the new target
+ // r2 : allocation site or undefined
+ return RegisterArray(r1, r3, r0, r2);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(r1); }
+
+// static
+constexpr auto CompareDescriptor::registers() { return RegisterArray(r1, r0); }
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ // r1: left operand
+ // r0: right operand
+ // r2: feedback slot
+ return RegisterArray(r1, r0, r2);
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() { return RegisterArray(r1, r0); }
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ // r1: left operand
+ // r0: right operand
+ // r2: feedback slot
+ return RegisterArray(r1, r0, r2);
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ return RegisterArray(r1, // kApiFunctionAddress
+ r2, // kArgc
+ r3, // kCallData
+ r0); // kHolder
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ return RegisterArray(r0, // argument count (not including receiver)
+ r2, // address of first argument
+ r1); // the target callable to be call
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ return RegisterArray(
+ r0, // argument count (not including receiver)
+ r4, // address of the first argument
+ r1, // constructor to call
+ r3, // new target
+ r2); // allocation site feedback if available, undefined otherwise
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ return RegisterArray(r0, // the value to pass to the generator
+ r1); // the JSGeneratorObject to resume
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray(r0, r1);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_ARM
+
+#endif // V8_CODEGEN_ARM_INTERFACE_DESCRIPTORS_ARM_INL_H_
diff --git a/deps/v8/src/codegen/arm/interface-descriptors-arm.cc b/deps/v8/src/codegen/arm/interface-descriptors-arm.cc
deleted file mode 100644
index 53992227ab..0000000000
--- a/deps/v8/src/codegen/arm/interface-descriptors-arm.cc
+++ /dev/null
@@ -1,306 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_ARM
-
-#include "src/codegen/interface-descriptors.h"
-
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return cp; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- const Register default_stub_registers[] = {r0, r1, r2, r3, r4};
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {r0, r1, r2, r3, r4};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {r0, r1, r2, r3, cp};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {r0, r1, r2, r3, r4};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return r1; }
-const Register LoadDescriptor::NameRegister() { return r2; }
-const Register LoadDescriptor::SlotRegister() { return r0; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return r3; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return r4;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return r1; }
-const Register StoreDescriptor::NameRegister() { return r2; }
-const Register StoreDescriptor::ValueRegister() { return r0; }
-const Register StoreDescriptor::SlotRegister() { return r4; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return r3; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return r4; }
-const Register StoreTransitionDescriptor::VectorRegister() { return r3; }
-const Register StoreTransitionDescriptor::MapRegister() { return r5; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return r0; }
-const Register ApiGetterDescriptor::CallbackRegister() { return r3; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return r0; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return r3; }
-
-const Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() { return r3; }
-const Register BaselineLeaveFrameDescriptor::WeightRegister() { return r4; }
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return r0; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r0 : number of arguments
- // r1 : the target to call
- Register registers[] = {r1, r0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r0 : number of arguments (on the stack, not including receiver)
- // r1 : the target to call
- // r4 : arguments list length (untagged)
- // r2 : arguments list (FixedArray)
- Register registers[] = {r1, r0, r4, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r0 : number of arguments
- // r2 : start index (to support rest parameters)
- // r1 : the target to call
- Register registers[] = {r1, r0, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r1 : function template info
- // r2 : number of arguments (on the stack, not including receiver)
- Register registers[] = {r1, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r0 : number of arguments (on the stack, not including receiver)
- // r1 : the target to call
- // r2 : the object to spread
- Register registers[] = {r1, r0, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r1 : the target to call
- // r2 : the arguments list
- Register registers[] = {r1, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r0 : number of arguments (on the stack, not including receiver)
- // r1 : the target to call
- // r3 : the new target
- // r4 : arguments list length (untagged)
- // r2 : arguments list (FixedArray)
- Register registers[] = {r1, r3, r0, r4, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r0 : number of arguments
- // r3 : the new target
- // r2 : start index (to support rest parameters)
- // r1 : the target to call
- Register registers[] = {r1, r3, r0, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r0 : number of arguments (on the stack, not including receiver)
- // r1 : the target to call
- // r3 : the new target
- // r2 : the object to spread
- Register registers[] = {r1, r3, r0, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r1 : the target to call
- // r3 : the new target
- // r2 : the arguments list
- Register registers[] = {r1, r3, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r0 : number of arguments
- // r1 : the target to call
- // r3 : the new target
- // r2 : allocation site or undefined
- Register registers[] = {r1, r3, r0, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r1};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r1, r0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r1: left operand
- // r0: right operand
- // r2: feedback slot
- Register registers[] = {r1, r0, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r1, r0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r1: left operand
- // r0: right operand
- // r2: feedback slot
- Register registers[] = {r1, r0, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r1, // kApiFunctionAddress
- r2, // kArgc
- r3, // kCallData
- r0, // kHolder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r0, // argument count (not including receiver)
- r2, // address of first argument
- r1 // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r0, // argument count (not including receiver)
- r4, // address of the first argument
- r1, // constructor to call
- r3, // new target
- r2, // allocation site feedback if available, undefined otherwise
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r0, // the value to pass to the generator
- r1 // the JSGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r1, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r0, r1};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_ARM
diff --git a/deps/v8/src/codegen/arm/macro-assembler-arm.cc b/deps/v8/src/codegen/arm/macro-assembler-arm.cc
index f83eee4a91..d4e12f3092 100644
--- a/deps/v8/src/codegen/arm/macro-assembler-arm.cc
+++ b/deps/v8/src/codegen/arm/macro-assembler-arm.cc
@@ -13,6 +13,7 @@
#include "src/codegen/callable.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/external-reference-table.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
#include "src/codegen/register-configuration.h"
#include "src/debug/debug.h"
@@ -59,7 +60,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
bytes += NumRegs(list) * kPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
bytes += DwVfpRegister::kNumRegisters * DwVfpRegister::kSizeInBytes;
}
@@ -85,7 +86,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
bytes += NumRegs(list) * kPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
SaveFPRegs(sp, lr);
bytes += DwVfpRegister::kNumRegisters * DwVfpRegister::kSizeInBytes;
}
@@ -96,7 +97,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
Register exclusion2, Register exclusion3) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
RestoreFPRegs(sp, lr);
bytes += DwVfpRegister::kNumRegisters * DwVfpRegister::kSizeInBytes;
}
@@ -660,7 +661,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -668,7 +669,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
// of the object, so so offset must be a multiple of kPointerSize.
DCHECK(IsAligned(offset, kPointerSize));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label ok;
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -680,7 +681,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, Operand(offset - kHeapObjectTag), value, lr_status,
- save_fp, remembered_set_action, OMIT_SMI_CHECK);
+ save_fp, remembered_set_action, SmiCheck::kOmit);
bind(&done);
}
@@ -826,7 +827,7 @@ void MacroAssembler::RecordWrite(Register object, Operand offset,
RememberedSetAction remembered_set_action,
SmiCheck smi_check) {
DCHECK_NE(object, value);
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
{
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -837,7 +838,7 @@ void MacroAssembler::RecordWrite(Register object, Operand offset,
Check(eq, AbortReason::kWrongAddressOrValuePassedToRecordWrite);
}
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
@@ -847,7 +848,7 @@ void MacroAssembler::RecordWrite(Register object, Operand offset,
// catch stores of smis and stores into the young generation.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -1435,7 +1436,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
PushCommonFrame(scratch);
// Reserve room for saved entry sp.
sub(sp, fp, Operand(ExitFrameConstants::kFixedFrameSizeFromFp));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
mov(scratch, Operand::Zero());
str(scratch, MemOperand(fp, ExitFrameConstants::kSPOffset));
}
@@ -1622,7 +1623,7 @@ void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch,
void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count,
- Label* done, InvokeFlag flag) {
+ Label* done, InvokeType type) {
Label regular_invoke;
// r0: actual arguments count
// r1: function (passed through to callee)
@@ -1722,9 +1723,9 @@ void MacroAssembler::CallDebugOnFunctionCall(Register fun, Register new_target,
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, r1);
DCHECK_IMPLIES(new_target.is_valid(), new_target == r3);
@@ -1746,17 +1747,19 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// We call indirectly through the code field in the function to
// allow recompilation to take effect without changing any of the
// call sites.
Register code = kJavaScriptCallCodeStartRegister;
ldr(code, FieldMemOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- CallCodeObject(code);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- JumpCodeObject(code);
+ switch (type) {
+ case InvokeType::kCall:
+ CallCodeObject(code);
+ break;
+ case InvokeType::kJump:
+ JumpCodeObject(code);
+ break;
}
b(&done);
@@ -1773,9 +1776,9 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
void MacroAssembler::InvokeFunctionWithNewTarget(
Register fun, Register new_target, Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in r1.
DCHECK_EQ(fun, r1);
@@ -1790,15 +1793,15 @@ void MacroAssembler::InvokeFunctionWithNewTarget(
SharedFunctionInfo::kFormalParameterCountOffset));
InvokeFunctionCode(fun, new_target, expected_reg, actual_parameter_count,
- flag);
+ type);
}
void MacroAssembler::InvokeFunction(Register function,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in r1.
DCHECK_EQ(function, r1);
@@ -1807,18 +1810,7 @@ void MacroAssembler::InvokeFunction(Register function,
ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset));
InvokeFunctionCode(r1, no_reg, expected_parameter_count,
- actual_parameter_count, flag);
-}
-
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- ExternalReference restart_fp =
- ExternalReference::debug_restart_fp_address(isolate());
- Move(r1, restart_fp);
- ldr(r1, MemOperand(r1));
- tst(r1, r1);
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
- ne);
+ actual_parameter_count, type);
}
void MacroAssembler::PushStackHandler() {
@@ -1993,8 +1985,8 @@ void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
DCHECK_EQ(builtin.address() & 1, 1);
#endif
Move(r1, builtin);
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET);
}
@@ -2034,11 +2026,11 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
}
void TurboAssembler::Assert(Condition cond, AbortReason reason) {
- if (emit_debug_code()) Check(cond, reason);
+ if (FLAG_debug_code) Check(cond, reason);
}
void TurboAssembler::AssertUnreachable(AbortReason reason) {
- if (emit_debug_code()) Abort(reason);
+ if (FLAG_debug_code) Abort(reason);
}
void TurboAssembler::Check(Condition cond, AbortReason reason) {
@@ -2052,11 +2044,11 @@ void TurboAssembler::Check(Condition cond, AbortReason reason) {
void TurboAssembler::Abort(AbortReason reason) {
Label abort_start;
bind(&abort_start);
-#ifdef DEBUG
- const char* msg = GetAbortReason(reason);
- RecordComment("Abort message: ");
- RecordComment(msg);
-#endif
+ if (FLAG_code_comments) {
+ const char* msg = GetAbortReason(reason);
+ RecordComment("Abort message: ");
+ RecordComment(msg);
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
@@ -2143,7 +2135,7 @@ void MacroAssembler::JumpIfNotSmi(Register value, Label* not_smi_label) {
}
void MacroAssembler::AssertNotSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
tst(object, Operand(kSmiTagMask));
Check(ne, AbortReason::kOperandIsASmi);
@@ -2151,7 +2143,7 @@ void MacroAssembler::AssertNotSmi(Register object) {
}
void MacroAssembler::AssertSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
tst(object, Operand(kSmiTagMask));
Check(eq, AbortReason::kOperandIsNotASmi);
@@ -2159,7 +2151,7 @@ void MacroAssembler::AssertSmi(Register object) {
}
void MacroAssembler::AssertConstructor(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
tst(object, Operand(kSmiTagMask));
Check(ne, AbortReason::kOperandIsASmiAndNotAConstructor);
@@ -2173,7 +2165,7 @@ void MacroAssembler::AssertConstructor(Register object) {
}
void MacroAssembler::AssertFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
tst(object, Operand(kSmiTagMask));
Check(ne, AbortReason::kOperandIsASmiAndNotAFunction);
@@ -2187,7 +2179,7 @@ void MacroAssembler::AssertFunction(Register object) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
tst(object, Operand(kSmiTagMask));
Check(ne, AbortReason::kOperandIsASmiAndNotABoundFunction);
@@ -2199,7 +2191,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
tst(object, Operand(kSmiTagMask));
Check(ne, AbortReason::kOperandIsASmiAndNotAGeneratorObject);
@@ -2229,7 +2221,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done_checking;
AssertNotSmi(object);
CompareRoot(object, RootIndex::kUndefinedValue);
@@ -2520,7 +2512,7 @@ void TurboAssembler::CallCFunctionHelper(Register function,
// running in the simulator. The simulator has its own alignment check which
// provides more information.
#if V8_HOST_ARCH_ARM
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
int frame_alignment = base::OS::ActivationFrameAlignment();
int frame_alignment_mask = frame_alignment - 1;
if (frame_alignment > kPointerSize) {
diff --git a/deps/v8/src/codegen/arm/macro-assembler-arm.h b/deps/v8/src/codegen/arm/macro-assembler-arm.h
index e622d4aa17..3a54f6c45f 100644
--- a/deps/v8/src/codegen/arm/macro-assembler-arm.h
+++ b/deps/v8/src/codegen/arm/macro-assembler-arm.h
@@ -29,8 +29,6 @@ inline MemOperand FieldMemOperand(Register object, int offset) {
return MemOperand(object, offset - kHeapObjectTag);
}
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved };
Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2 = no_reg,
@@ -656,16 +654,16 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, LinkRegisterStatus lr_status,
SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For a given |object| notify the garbage collector that the slot at |offset|
// has been written. |value| is the object being stored.
void RecordWrite(
Register object, Operand offset, Register value,
LinkRegisterStatus lr_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// Enter exit frame.
// stack_space - extra stack space, used for alignment before call to C.
@@ -689,7 +687,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function code by either calling or jumping.
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// On function call, call into the debugger.
void CallDebugOnFunctionCall(Register fun, Register new_target,
@@ -700,13 +698,10 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// current context to the context in the function before invoking.
void InvokeFunctionWithNewTarget(Register function, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag);
+ InvokeType type);
void InvokeFunction(Register function, Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
-
- // Frame restart support
- void MaybeDropFrames();
+ Register actual_parameter_count, InvokeType type);
// Exception handling
@@ -784,18 +779,18 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Call a runtime routine.
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
}
@@ -874,7 +869,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Helper functions for generating invokes.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
DISALLOW_IMPLICIT_CONSTRUCTORS(MacroAssembler);
};
diff --git a/deps/v8/src/codegen/arm64/assembler-arm64-inl.h b/deps/v8/src/codegen/arm64/assembler-arm64-inl.h
index ee64dbe1f2..2668502f81 100644
--- a/deps/v8/src/codegen/arm64/assembler-arm64-inl.h
+++ b/deps/v8/src/codegen/arm64/assembler-arm64-inl.h
@@ -1072,12 +1072,12 @@ const Register& Assembler::AppropriateZeroRegFor(const CPURegister& reg) const {
inline void Assembler::CheckBufferSpace() {
DCHECK_LT(pc_, buffer_start_ + buffer_->size());
- if (buffer_space() < kGap) {
+ if (V8_UNLIKELY(buffer_space() < kGap)) {
GrowBuffer();
}
}
-inline void Assembler::CheckBuffer() {
+V8_INLINE void Assembler::CheckBuffer() {
CheckBufferSpace();
if (pc_offset() >= next_veneer_pool_check_) {
CheckVeneerPool(false, true);
@@ -1085,6 +1085,10 @@ inline void Assembler::CheckBuffer() {
constpool_.MaybeCheck();
}
+EnsureSpace::EnsureSpace(Assembler* assembler) : block_pools_scope_(assembler) {
+ assembler->CheckBufferSpace();
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/codegen/arm64/assembler-arm64.h b/deps/v8/src/codegen/arm64/assembler-arm64.h
index aa2ffb26cd..9d8b135954 100644
--- a/deps/v8/src/codegen/arm64/assembler-arm64.h
+++ b/deps/v8/src/codegen/arm64/assembler-arm64.h
@@ -2634,7 +2634,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
}
void GrowBuffer();
- void CheckBufferSpace();
+ V8_INLINE void CheckBufferSpace();
void CheckBuffer();
// Emission of the veneer pools may be blocked in some code sequences.
@@ -2786,9 +2786,7 @@ class PatchingAssembler : public Assembler {
class EnsureSpace {
public:
- explicit EnsureSpace(Assembler* assembler) : block_pools_scope_(assembler) {
- assembler->CheckBufferSpace();
- }
+ explicit V8_INLINE EnsureSpace(Assembler* assembler);
private:
Assembler::BlockPoolsScope block_pools_scope_;
diff --git a/deps/v8/src/codegen/arm64/cpu-arm64.cc b/deps/v8/src/codegen/arm64/cpu-arm64.cc
index d7bd4834b0..4baf2e07ec 100644
--- a/deps/v8/src/codegen/arm64/cpu-arm64.cc
+++ b/deps/v8/src/codegen/arm64/cpu-arm64.cc
@@ -23,7 +23,7 @@ class CacheLineSizes {
cache_type_register_ = 0;
#else
// Copy the content of the cache type register to a core register.
- __asm__ __volatile__("mrs %x[ctr], ctr_el0" // NOLINT
+ __asm__ __volatile__("mrs %x[ctr], ctr_el0"
: [ctr] "=r"(cache_type_register_));
#endif
}
@@ -64,9 +64,8 @@ void CpuFeatures::FlushICache(void* address, size_t length) {
uintptr_t istart = start & ~(isize - 1);
uintptr_t end = start + length;
- __asm__ __volatile__( // NOLINT
- // Clean every line of the D cache containing the
- // target data.
+ __asm__ __volatile__(
+ // Clean every line of the D cache containing the target data.
"0: \n\t"
// dc : Data Cache maintenance
// c : Clean
@@ -111,7 +110,7 @@ void CpuFeatures::FlushICache(void* address, size_t length) {
: [dsize] "r"(dsize), [isize] "r"(isize), [end] "r"(end)
// This code does not write to memory but without the dependency gcc might
// move this code before the code is generated.
- : "cc", "memory"); // NOLINT
+ : "cc", "memory");
#endif // V8_OS_WIN
#endif // V8_HOST_ARCH_ARM64
}
diff --git a/deps/v8/src/codegen/arm64/interface-descriptors-arm64-inl.h b/deps/v8/src/codegen/arm64/interface-descriptors-arm64-inl.h
new file mode 100644
index 0000000000..90123dbdcb
--- /dev/null
+++ b/deps/v8/src/codegen/arm64/interface-descriptors-arm64-inl.h
@@ -0,0 +1,265 @@
+// Copyright 2021 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_CODEGEN_ARM64_INTERFACE_DESCRIPTORS_ARM64_INL_H_
+#define V8_CODEGEN_ARM64_INTERFACE_DESCRIPTORS_ARM64_INL_H_
+
+#if V8_TARGET_ARCH_ARM64
+
+#include "src/base/template-utils.h"
+#include "src/codegen/interface-descriptors.h"
+#include "src/execution/frames.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(x0, x1, x2, x3, x4);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(x0, x1, x2, x3, x4, kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(x0, x1, x2, x3, cp);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(x0, x1, x2, x3, x4, kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return x1; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return x2; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return x0; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return x3; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return x4;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return x1; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return x2; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return x0; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return x4; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() { return x3; }
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return x5; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return x0; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return x3; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return x0; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return x3; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ return x3;
+}
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() { return x4; }
+
+// static
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return x0; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(x3); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // x1: target
+ // x0: number of arguments
+ return RegisterArray(x1, x0);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // x0 : number of arguments (on the stack, not including receiver)
+ // x1 : the target to call
+ // x4 : arguments list length (untagged)
+ // x2 : arguments list (FixedArray)
+ return RegisterArray(x1, x0, x4, x2);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // x1: target
+ // x0: number of arguments
+ // x2: start index (to supported rest parameters)
+ return RegisterArray(x1, x0, x2);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // x1 : function template info
+ // x2 : number of arguments (on the stack, not including receiver)
+ return RegisterArray(x1, x2);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // x0 : number of arguments (on the stack, not including receiver)
+ // x1 : the target to call
+ // x2 : the object to spread
+ return RegisterArray(x1, x0, x2);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // x1 : the target to call
+ // x2 : the arguments list
+ return RegisterArray(x1, x2);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // x0 : number of arguments (on the stack, not including receiver)
+ // x1 : the target to call
+ // x3 : the new target
+ // x4 : arguments list length (untagged)
+ // x2 : arguments list (FixedArray)
+ return RegisterArray(x1, x3, x0, x4, x2);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // x3: new target
+ // x1: target
+ // x0: number of arguments
+ // x2: start index (to supported rest parameters)
+ return RegisterArray(x1, x3, x0, x2);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // x0 : number of arguments (on the stack, not including receiver)
+ // x1 : the target to call
+ // x3 : the new target
+ // x2 : the object to spread
+ return RegisterArray(x1, x3, x0, x2);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // x1 : the target to call
+ // x3 : the new target
+ // x2 : the arguments list
+ return RegisterArray(x1, x3, x2);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // x3: new target
+ // x1: target
+ // x0: number of arguments
+ // x2: allocation site or undefined
+ return RegisterArray(x1, x3, x0, x2);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(x1); }
+
+// static
+constexpr auto CompareDescriptor::registers() {
+ // x1: left operand
+ // x0: right operand
+ return RegisterArray(x1, x0);
+}
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ // x1: left operand
+ // x0: right operand
+ // x2: feedback slot
+ return RegisterArray(x1, x0, x2);
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() {
+ // x1: left operand
+ // x0: right operand
+ return RegisterArray(x1, x0);
+}
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ // x1: left operand
+ // x0: right operand
+ // x2: feedback slot
+ return RegisterArray(x1, x0, x2);
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ return RegisterArray(x1, // kApiFunctionAddress
+ x2, // kArgc
+ x3, // kCallData
+ x0); // kHolder
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ return RegisterArray(x0, // argument count (not including receiver)
+ x2, // address of first argument
+ x1); // the target callable to be call
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ return RegisterArray(
+ x0, // argument count (not including receiver)
+ x4, // address of the first argument
+ x1, // constructor to call
+ x3, // new target
+ x2); // allocation site feedback if available, undefined otherwise
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ return RegisterArray(x0, // the value to pass to the generator
+ x1); // the JSGeneratorObject to resume
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray(x0, x1);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_ARM64
+
+#endif // V8_CODEGEN_ARM64_INTERFACE_DESCRIPTORS_ARM64_INL_H_
diff --git a/deps/v8/src/codegen/arm64/interface-descriptors-arm64.cc b/deps/v8/src/codegen/arm64/interface-descriptors-arm64.cc
deleted file mode 100644
index 246d6fc961..0000000000
--- a/deps/v8/src/codegen/arm64/interface-descriptors-arm64.cc
+++ /dev/null
@@ -1,310 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_ARM64
-
-#include "src/codegen/interface-descriptors.h"
-
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return cp; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- const Register default_stub_registers[] = {x0, x1, x2, x3, x4};
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {x0, x1, x2, x3, x4};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {x0, x1, x2, x3, cp};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {x0, x1, x2, x3, x4};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return x1; }
-const Register LoadDescriptor::NameRegister() { return x2; }
-const Register LoadDescriptor::SlotRegister() { return x0; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return x3; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return x4;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return x1; }
-const Register StoreDescriptor::NameRegister() { return x2; }
-const Register StoreDescriptor::ValueRegister() { return x0; }
-const Register StoreDescriptor::SlotRegister() { return x4; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return x3; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return x4; }
-const Register StoreTransitionDescriptor::VectorRegister() { return x3; }
-const Register StoreTransitionDescriptor::MapRegister() { return x5; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return x0; }
-const Register ApiGetterDescriptor::CallbackRegister() { return x3; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return x0; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return x3; }
-
-const Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() { return x3; }
-const Register BaselineLeaveFrameDescriptor::WeightRegister() { return x4; }
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return x0; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {x3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1: target
- // x0: number of arguments
- Register registers[] = {x1, x0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x0 : number of arguments (on the stack, not including receiver)
- // x1 : the target to call
- // x4 : arguments list length (untagged)
- // x2 : arguments list (FixedArray)
- Register registers[] = {x1, x0, x4, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1: target
- // x0: number of arguments
- // x2: start index (to supported rest parameters)
- Register registers[] = {x1, x0, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1 : function template info
- // x2 : number of arguments (on the stack, not including receiver)
- Register registers[] = {x1, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x0 : number of arguments (on the stack, not including receiver)
- // x1 : the target to call
- // x2 : the object to spread
- Register registers[] = {x1, x0, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1 : the target to call
- // x2 : the arguments list
- Register registers[] = {x1, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x0 : number of arguments (on the stack, not including receiver)
- // x1 : the target to call
- // x3 : the new target
- // x4 : arguments list length (untagged)
- // x2 : arguments list (FixedArray)
- Register registers[] = {x1, x3, x0, x4, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x3: new target
- // x1: target
- // x0: number of arguments
- // x2: start index (to supported rest parameters)
- Register registers[] = {x1, x3, x0, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x0 : number of arguments (on the stack, not including receiver)
- // x1 : the target to call
- // x3 : the new target
- // x2 : the object to spread
- Register registers[] = {x1, x3, x0, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1 : the target to call
- // x3 : the new target
- // x2 : the arguments list
- Register registers[] = {x1, x3, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x3: new target
- // x1: target
- // x0: number of arguments
- // x2: allocation site or undefined
- Register registers[] = {x1, x3, x0, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {x1};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1: left operand
- // x0: right operand
- Register registers[] = {x1, x0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1: left operand
- // x0: right operand
- // x2: feedback slot
- Register registers[] = {x1, x0, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1: left operand
- // x0: right operand
- Register registers[] = {x1, x0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // x1: left operand
- // x0: right operand
- // x2: feedback slot
- Register registers[] = {x1, x0, x2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- x1, // kApiFunctionAddress
- x2, // kArgc
- x3, // kCallData
- x0, // kHolder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- x0, // argument count (not including receiver)
- x2, // address of first argument
- x1 // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- x0, // argument count (not including receiver)
- x4, // address of the first argument
- x1, // constructor to call
- x3, // new target
- x2, // allocation site feedback if available, undefined otherwise
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- x0, // the value to pass to the generator
- x1 // the JSGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- x1, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {x0, x1};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_ARM64
diff --git a/deps/v8/src/codegen/arm64/macro-assembler-arm64-inl.h b/deps/v8/src/codegen/arm64/macro-assembler-arm64-inl.h
index 6a33f864ab..8fb9bbfd7b 100644
--- a/deps/v8/src/codegen/arm64/macro-assembler-arm64-inl.h
+++ b/deps/v8/src/codegen/arm64/macro-assembler-arm64-inl.h
@@ -7,12 +7,12 @@
#include <ctype.h>
-#include "src/common/globals.h"
-
#include "src/base/bits.h"
#include "src/codegen/arm64/assembler-arm64-inl.h"
#include "src/codegen/arm64/assembler-arm64.h"
#include "src/codegen/macro-assembler.h"
+#include "src/common/globals.h"
+#include "src/execution/isolate-data.h"
namespace v8 {
namespace internal {
@@ -1037,7 +1037,7 @@ void TurboAssembler::InitializeRootRegister() {
ExternalReference isolate_root = ExternalReference::isolate_root(isolate());
Mov(kRootRegister, Operand(isolate_root));
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
- Mov(kPointerCageBaseRegister, Operand(isolate_root));
+ LoadRootRelative(kPtrComprCageBaseRegister, IsolateData::cage_base_offset());
#endif
}
@@ -1200,7 +1200,7 @@ void TurboAssembler::Poke(const CPURegister& src, const Operand& offset) {
if (offset.IsImmediate()) {
DCHECK_GE(offset.ImmediateValue(), 0);
- } else if (emit_debug_code()) {
+ } else if (FLAG_debug_code) {
Cmp(xzr, offset);
Check(le, AbortReason::kStackAccessBelowStackPointer);
}
@@ -1212,7 +1212,7 @@ template <TurboAssembler::LoadLRMode lr_mode>
void TurboAssembler::Peek(const CPURegister& dst, const Operand& offset) {
if (offset.IsImmediate()) {
DCHECK_GE(offset.ImmediateValue(), 0);
- } else if (emit_debug_code()) {
+ } else if (FLAG_debug_code) {
Cmp(xzr, offset);
Check(le, AbortReason::kStackAccessBelowStackPointer);
}
diff --git a/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc b/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc
index a3570b8035..b18ff55455 100644
--- a/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc
+++ b/deps/v8/src/codegen/arm64/macro-assembler-arm64.cc
@@ -10,6 +10,7 @@
#include "src/codegen/callable.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/external-reference-table.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler-inl.h"
#include "src/codegen/register-configuration.h"
#include "src/codegen/reloc-info.h"
@@ -52,7 +53,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
int bytes = list.Count() * kXRegSizeInBits / 8;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
DCHECK_EQ(kCallerSavedV.Count() % 2, 0);
bytes += kCallerSavedV.Count() * kDRegSizeInBits / 8;
}
@@ -69,7 +70,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode,
int bytes = list.Count() * kXRegSizeInBits / 8;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
DCHECK_EQ(kCallerSavedV.Count() % 2, 0);
PushCPURegList(kCallerSavedV);
bytes += kCallerSavedV.Count() * kDRegSizeInBits / 8;
@@ -79,7 +80,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
DCHECK_EQ(kCallerSavedV.Count() % 2, 0);
PopCPURegList(kCallerSavedV);
bytes += kCallerSavedV.Count() * kDRegSizeInBits / 8;
@@ -1266,7 +1267,7 @@ void MacroAssembler::PopCalleeSavedRegisters() {
}
void TurboAssembler::AssertSpAligned() {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
HardAbortScope hard_abort(this); // Avoid calls to Abort.
// Arm64 requires the stack pointer to be 16-byte aligned prior to address
// calculation.
@@ -1299,7 +1300,7 @@ void TurboAssembler::CopyDoubleWords(Register dst, Register src, Register count,
CopyDoubleWordsMode mode) {
DCHECK(!AreAliased(dst, src, count));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Register pointer1 = dst;
Register pointer2 = src;
if (mode == kSrcLessThanDst) {
@@ -1374,7 +1375,7 @@ void TurboAssembler::SlotAddress(Register dst, Register slot_offset) {
}
void TurboAssembler::AssertFPCRState(Register fpcr) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label unexpected_mode, done;
UseScratchRegisterScope temps(this);
if (fpcr.IsNone()) {
@@ -1473,7 +1474,7 @@ void TurboAssembler::Swap(VRegister lhs, VRegister rhs) {
}
void TurboAssembler::AssertSmi(Register object, AbortReason reason) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
Tst(object, kSmiTagMask);
Check(eq, reason);
@@ -1481,7 +1482,7 @@ void TurboAssembler::AssertSmi(Register object, AbortReason reason) {
}
void MacroAssembler::AssertNotSmi(Register object, AbortReason reason) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
Tst(object, kSmiTagMask);
Check(ne, reason);
@@ -1489,7 +1490,7 @@ void MacroAssembler::AssertNotSmi(Register object, AbortReason reason) {
}
void MacroAssembler::AssertConstructor(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
AssertNotSmi(object, AbortReason::kOperandIsASmiAndNotAConstructor);
UseScratchRegisterScope temps(this);
@@ -1504,7 +1505,7 @@ void MacroAssembler::AssertConstructor(Register object) {
}
void MacroAssembler::AssertFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
AssertNotSmi(object, AbortReason::kOperandIsASmiAndNotAFunction);
UseScratchRegisterScope temps(this);
@@ -1517,7 +1518,7 @@ void MacroAssembler::AssertFunction(Register object) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
AssertNotSmi(object, AbortReason::kOperandIsASmiAndNotABoundFunction);
UseScratchRegisterScope temps(this);
@@ -1529,7 +1530,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
AssertNotSmi(object, AbortReason::kOperandIsASmiAndNotAGeneratorObject);
// Load map
@@ -1555,7 +1556,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
}
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
UseScratchRegisterScope temps(this);
Register scratch = temps.AcquireX();
Label done_checking;
@@ -1569,7 +1570,7 @@ void MacroAssembler::AssertUndefinedOrAllocationSite(Register object) {
}
void TurboAssembler::AssertPositiveOrZero(Register value) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done;
int sign_bit = value.Is64Bits() ? kXSignBit : kWSignBit;
Tbz(value, sign_bit, &done);
@@ -1599,8 +1600,8 @@ void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments,
void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
bool builtin_exit_frame) {
Mov(x1, builtin);
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET);
}
@@ -1942,7 +1943,7 @@ void TurboAssembler::CallBuiltin(int builtin_index) {
Ldr(scratch, Operand(entry, RelocInfo::OFF_HEAP_TARGET));
Call(scratch);
}
- if (FLAG_code_comments) RecordComment("]");
+ RecordComment("]");
}
void TurboAssembler::TailCallBuiltin(int builtin_index) {
@@ -1971,7 +1972,7 @@ void TurboAssembler::TailCallBuiltin(int builtin_index) {
Ldr(temp, Operand(entry, RelocInfo::OFF_HEAP_TARGET));
Jump(temp);
}
- if (FLAG_code_comments) RecordComment("]");
+ RecordComment("]");
}
void TurboAssembler::LoadCodeObjectEntry(Register destination,
@@ -2059,7 +2060,7 @@ void TurboAssembler::StoreReturnAddressAndCall(Register target) {
#endif
Poke(x17, 0);
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
// Verify that the slot below fp[kSPOffset]-8 points to the signed return
// location.
Ldr(x16, MemOperand(fp, ExitFrameConstants::kSPOffset));
@@ -2189,7 +2190,7 @@ void MacroAssembler::StackOverflowCheck(Register num_args,
void MacroAssembler::InvokePrologue(Register formal_parameter_count,
Register actual_argument_count, Label* done,
- InvokeFlag flag) {
+ InvokeType type) {
// x0: actual arguments count.
// x1: function (passed through to callee).
// x2: expected arguments count.
@@ -2320,9 +2321,9 @@ void MacroAssembler::CallDebugOnFunctionCall(Register fun, Register new_target,
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, x1);
DCHECK_IMPLIES(new_target.is_valid(), new_target == x3);
@@ -2341,7 +2342,7 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// If actual != expected, InvokePrologue will have handled the call through
// the argument adaptor mechanism.
@@ -2352,11 +2353,13 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register code = kJavaScriptCallCodeStartRegister;
LoadTaggedPointerField(code,
FieldMemOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- CallCodeObject(code);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- JumpCodeObject(code);
+ switch (type) {
+ case InvokeType::kCall:
+ CallCodeObject(code);
+ break;
+ case InvokeType::kJump:
+ JumpCodeObject(code);
+ break;
}
B(&done);
@@ -2377,9 +2380,9 @@ Operand MacroAssembler::ReceiverOperand(Register arg_count) {
void MacroAssembler::InvokeFunctionWithNewTarget(
Register function, Register new_target, Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK(flag == JUMP_FUNCTION || has_frame());
+ DCHECK(type == InvokeType::kJump || has_frame());
// Contract with called JS functions requires that function is passed in x1.
// (See FullCodeGenerator::Generate().)
@@ -2400,15 +2403,15 @@ void MacroAssembler::InvokeFunctionWithNewTarget(
SharedFunctionInfo::kFormalParameterCountOffset));
InvokeFunctionCode(function, new_target, expected_parameter_count,
- actual_parameter_count, flag);
+ actual_parameter_count, type);
}
void MacroAssembler::InvokeFunction(Register function,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK(flag == JUMP_FUNCTION || has_frame());
+ DCHECK(type == InvokeType::kJump || has_frame());
// Contract with called JS functions requires that function is passed in x1.
// (See FullCodeGenerator::Generate().)
@@ -2419,7 +2422,7 @@ void MacroAssembler::InvokeFunction(Register function,
FieldMemOperand(function, JSFunction::kContextOffset));
InvokeFunctionCode(function, no_reg, expected_parameter_count,
- actual_parameter_count, flag);
+ actual_parameter_count, type);
}
void TurboAssembler::TryConvertDoubleToInt64(Register result,
@@ -2664,7 +2667,7 @@ void MacroAssembler::LeaveExitFrame(bool restore_doubles,
ExternalReference::Create(IsolateAddressId::kContextAddress, isolate()));
Ldr(cp, MemOperand(scratch));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
// Also emit debug code to clear the cp in the top frame.
Mov(scratch2, Operand(Context::kInvalidContext));
Mov(scratch, ExternalReference::Create(IsolateAddressId::kContextAddress,
@@ -2715,15 +2718,6 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
IncrementCounter(counter, -value, scratch1, scratch2);
}
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- Mov(x1, ExternalReference::debug_restart_fp_address(isolate()));
- Ldr(x1, MemOperand(x1));
- Tst(x1, x1);
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
- ne);
-}
-
void MacroAssembler::JumpIfObjectType(Register object, Register map,
Register type_reg, InstanceType type,
Label* if_cond_pass, Condition cond) {
@@ -2860,14 +2854,14 @@ void TurboAssembler::DecompressTaggedPointer(const Register& destination,
const MemOperand& field_operand) {
RecordComment("[ DecompressTaggedPointer");
Ldr(destination.W(), field_operand);
- Add(destination, kPointerCageBaseRegister, destination);
+ Add(destination, kPtrComprCageBaseRegister, destination);
RecordComment("]");
}
void TurboAssembler::DecompressTaggedPointer(const Register& destination,
const Register& source) {
RecordComment("[ DecompressTaggedPointer");
- Add(destination, kPointerCageBaseRegister, Operand(source, UXTW));
+ Add(destination, kPtrComprCageBaseRegister, Operand(source, UXTW));
RecordComment("]");
}
@@ -2875,7 +2869,7 @@ void TurboAssembler::DecompressAnyTagged(const Register& destination,
const MemOperand& field_operand) {
RecordComment("[ DecompressAnyTagged");
Ldr(destination.W(), field_operand);
- Add(destination, kPointerCageBaseRegister, destination);
+ Add(destination, kPtrComprCageBaseRegister, destination);
RecordComment("]");
}
@@ -2904,7 +2898,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip the barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -2912,7 +2906,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
// of the object, so offset must be a multiple of kTaggedSize.
DCHECK(IsAligned(offset, kTaggedSize));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label ok;
UseScratchRegisterScope temps(this);
Register scratch = temps.AcquireX();
@@ -2924,7 +2918,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, Operand(offset - kHeapObjectTag), value, lr_status,
- save_fp, remembered_set_action, OMIT_SMI_CHECK);
+ save_fp, remembered_set_action, SmiCheck::kOmit);
Bind(&done);
}
@@ -3069,7 +3063,7 @@ void MacroAssembler::RecordWrite(Register object, Operand offset,
ASM_LOCATION_IN_ASSEMBLER("MacroAssembler::RecordWrite");
DCHECK(!AreAliased(object, value));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
UseScratchRegisterScope temps(this);
Register temp = temps.AcquireX();
@@ -3079,7 +3073,7 @@ void MacroAssembler::RecordWrite(Register object, Operand offset,
Check(eq, AbortReason::kWrongAddressOrValuePassedToRecordWrite);
}
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
@@ -3089,7 +3083,7 @@ void MacroAssembler::RecordWrite(Register object, Operand offset,
// catch stores of smis and stores into the young generation.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
DCHECK_EQ(0, kSmiTag);
JumpIfSmi(value, &done);
}
@@ -3112,13 +3106,13 @@ void MacroAssembler::RecordWrite(Register object, Operand offset,
}
void TurboAssembler::Assert(Condition cond, AbortReason reason) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Check(cond, reason);
}
}
void TurboAssembler::AssertUnreachable(AbortReason reason) {
- if (emit_debug_code()) Abort(reason);
+ if (FLAG_debug_code) Abort(reason);
}
void TurboAssembler::Check(Condition cond, AbortReason reason) {
@@ -3133,10 +3127,10 @@ void TurboAssembler::Trap() { Brk(0); }
void TurboAssembler::DebugBreak() { Debug("DebugBreak", 0, BREAK); }
void TurboAssembler::Abort(AbortReason reason) {
-#ifdef DEBUG
- RecordComment("Abort message: ");
- RecordComment(GetAbortReason(reason));
-#endif
+ if (FLAG_code_comments) {
+ RecordComment("Abort message: ");
+ RecordComment(GetAbortReason(reason));
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
diff --git a/deps/v8/src/codegen/arm64/macro-assembler-arm64.h b/deps/v8/src/codegen/arm64/macro-assembler-arm64.h
index a749676ccc..7bc6432c36 100644
--- a/deps/v8/src/codegen/arm64/macro-assembler-arm64.h
+++ b/deps/v8/src/codegen/arm64/macro-assembler-arm64.h
@@ -126,8 +126,6 @@ inline BranchType InvertBranchType(BranchType type) {
}
}
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved };
enum DiscardMoveMode { kDontDiscardForSameWReg, kDiscardForSameWReg };
@@ -1849,17 +1847,17 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// ---- Calling / Jumping helpers ----
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
@@ -1882,7 +1880,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// 'call_kind' must be x5.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
// On function call, call into the debugger.
void CallDebugOnFunctionCall(Register fun, Register new_target,
@@ -1890,20 +1888,17 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
Register actual_parameter_count);
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// Invoke the JavaScript function in the given register.
// Changes the current context to the context in the function before invoking.
void InvokeFunctionWithNewTarget(Register function, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag);
+ InvokeType type);
void InvokeFunction(Register function, Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// ---- Code generation helpers ----
- // Frame restart support
- void MaybeDropFrames();
-
// ---------------------------------------------------------------------------
// Support functions.
@@ -2032,16 +2027,16 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, LinkRegisterStatus lr_status,
SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For a given |object| notify the garbage collector that the slot at |offset|
// has been written. |value| is the object being stored.
void RecordWrite(
Register object, Operand offset, Register value,
LinkRegisterStatus lr_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// ---------------------------------------------------------------------------
// Debugging.
diff --git a/deps/v8/src/codegen/arm64/register-arm64.h b/deps/v8/src/codegen/arm64/register-arm64.h
index 819806319a..1150daf4c6 100644
--- a/deps/v8/src/codegen/arm64/register-arm64.h
+++ b/deps/v8/src/codegen/arm64/register-arm64.h
@@ -102,7 +102,7 @@ class CPURegister : public RegisterBase<CPURegister, kRegAfterLast> {
}
static constexpr CPURegister Create(int code, int size, RegisterType type) {
- CONSTEXPR_DCHECK(IsValid(code, size, type));
+ DCHECK(IsValid(code, size, type));
return CPURegister{code, size, type};
}
@@ -320,7 +320,7 @@ class VRegister : public CPURegister {
}
static constexpr VRegister Create(int code, int size, int lane_count = 1) {
- CONSTEXPR_DCHECK(IsValidLaneCount(lane_count));
+ DCHECK(IsValidLaneCount(lane_count));
return VRegister(CPURegister::Create(code, size, CPURegister::kVRegister),
lane_count);
}
@@ -477,9 +477,9 @@ ALIAS_REGISTER(Register, kRootRegister, x26);
ALIAS_REGISTER(Register, rr, x26);
// Pointer cage base register.
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
-ALIAS_REGISTER(Register, kPointerCageBaseRegister, x28);
+ALIAS_REGISTER(Register, kPtrComprCageBaseRegister, x28);
#else
-ALIAS_REGISTER(Register, kPointerCageBaseRegister, kRootRegister);
+ALIAS_REGISTER(Register, kPtrComprCageBaseRegister, kRootRegister);
#endif
// Context pointer register.
ALIAS_REGISTER(Register, cp, x27);
@@ -547,8 +547,6 @@ using Simd128Register = VRegister;
// Lists of registers.
class V8_EXPORT_PRIVATE CPURegList {
public:
- CPURegList() = default;
-
template <typename... CPURegisters>
explicit CPURegList(CPURegister reg0, CPURegisters... regs)
: list_(CPURegister::ListOf(reg0, regs...)),
diff --git a/deps/v8/src/codegen/assembler.cc b/deps/v8/src/codegen/assembler.cc
index 95983705ab..bb80d366de 100644
--- a/deps/v8/src/codegen/assembler.cc
+++ b/deps/v8/src/codegen/assembler.cc
@@ -69,7 +69,7 @@ AssemblerOptions AssemblerOptions::Default(Isolate* isolate) {
#endif
options.inline_offheap_trampolines &= !generating_embedded_builtin;
#if V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64
- const base::AddressRegion& code_range = isolate->heap()->code_range();
+ const base::AddressRegion& code_range = isolate->heap()->code_region();
DCHECK_IMPLIES(code_range.begin() != kNullAddress, !code_range.is_empty());
options.code_range_start = code_range.begin();
#endif
@@ -180,7 +180,6 @@ AssemblerBase::AssemblerBase(const AssemblerOptions& options,
: buffer_(std::move(buffer)),
options_(options),
enabled_cpu_features_(0),
- emit_debug_code_(FLAG_debug_code),
predictable_code_size_(false),
constant_pool_available_(false),
jump_optimization_info_(nullptr) {
@@ -298,6 +297,7 @@ Handle<HeapObject> AssemblerBase::GetEmbeddedObject(
int Assembler::WriteCodeComments() {
+ if (!FLAG_code_comments) return 0;
CHECK_IMPLIES(code_comments_writer_.entry_count() > 0,
options().emit_code_comments);
if (code_comments_writer_.entry_count() == 0) return 0;
diff --git a/deps/v8/src/codegen/assembler.h b/deps/v8/src/codegen/assembler.h
index 7066905966..98cca61a7c 100644
--- a/deps/v8/src/codegen/assembler.h
+++ b/deps/v8/src/codegen/assembler.h
@@ -222,9 +222,6 @@ class V8_EXPORT_PRIVATE AssemblerBase : public Malloced {
const AssemblerOptions& options() const { return options_; }
- bool emit_debug_code() const { return emit_debug_code_; }
- void set_emit_debug_code(bool value) { emit_debug_code_ = value; }
-
bool predictable_code_size() const { return predictable_code_size_; }
void set_predictable_code_size(bool value) { predictable_code_size_ = value; }
@@ -291,7 +288,10 @@ class V8_EXPORT_PRIVATE AssemblerBase : public Malloced {
// Record an inline code comment that can be used by a disassembler.
// Use --code-comments to enable.
- void RecordComment(const char* msg) {
+ V8_INLINE void RecordComment(const char* msg) {
+ // Set explicit dependency on --code-comments for dead-code elimination in
+ // release builds.
+ if (!FLAG_code_comments) return;
if (options().emit_code_comments) {
code_comments_writer_.Add(pc_offset(), std::string(msg));
}
@@ -346,7 +346,7 @@ class V8_EXPORT_PRIVATE AssemblerBase : public Malloced {
DCHECK(!RelocInfo::IsNone(rmode));
if (options().disable_reloc_info_for_patching) return false;
if (RelocInfo::IsOnlyForSerializer(rmode) &&
- !options().record_reloc_info_for_serialization && !emit_debug_code()) {
+ !options().record_reloc_info_for_serialization && !FLAG_debug_code) {
return false;
}
return true;
@@ -378,7 +378,6 @@ class V8_EXPORT_PRIVATE AssemblerBase : public Malloced {
const AssemblerOptions options_;
uint64_t enabled_cpu_features_;
- bool emit_debug_code_;
bool predictable_code_size_;
// Indicates whether the constant pool can be accessed, which is only possible
@@ -392,20 +391,6 @@ class V8_EXPORT_PRIVATE AssemblerBase : public Malloced {
friend class ConstantPoolUnavailableScope;
};
-// Avoids emitting debug code during the lifetime of this scope object.
-class V8_NODISCARD DontEmitDebugCodeScope {
- public:
- explicit DontEmitDebugCodeScope(AssemblerBase* assembler)
- : assembler_(assembler), old_value_(assembler->emit_debug_code()) {
- assembler_->set_emit_debug_code(false);
- }
- ~DontEmitDebugCodeScope() { assembler_->set_emit_debug_code(old_value_); }
-
- private:
- AssemblerBase* assembler_;
- bool old_value_;
-};
-
// Enable a specified feature within a scope.
class V8_EXPORT_PRIVATE V8_NODISCARD CpuFeatureScope {
public:
@@ -425,7 +410,7 @@ class V8_EXPORT_PRIVATE V8_NODISCARD CpuFeatureScope {
#else
CpuFeatureScope(AssemblerBase* assembler, CpuFeature f,
CheckPolicy check = kCheckSupported) {}
- ~CpuFeatureScope() { // NOLINT (modernize-use-equals-default)
+ ~CpuFeatureScope() {
// Define a destructor to avoid unused variable warnings.
}
#endif
diff --git a/deps/v8/src/codegen/bailout-reason.h b/deps/v8/src/codegen/bailout-reason.h
index 57bbbca723..e8afa74e16 100644
--- a/deps/v8/src/codegen/bailout-reason.h
+++ b/deps/v8/src/codegen/bailout-reason.h
@@ -24,6 +24,7 @@ namespace internal {
V(kExpectedFeedbackVector, "Expected feedback vector") \
V(kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry, \
"The function_data field should be a BytecodeArray on interpreter entry") \
+ V(kFpuTopIsNotZeroInDeoptimizer, "FPU TOP is not zero in deoptimizer") \
V(kInputStringTooLong, "Input string too long") \
V(kInvalidBytecode, "Invalid bytecode") \
V(kInvalidBytecodeAdvance, "Cannot advance current bytecode, ") \
diff --git a/deps/v8/src/codegen/code-factory.cc b/deps/v8/src/codegen/code-factory.cc
index ece8200023..854969f8cb 100644
--- a/deps/v8/src/codegen/code-factory.cc
+++ b/deps/v8/src/codegen/code-factory.cc
@@ -31,25 +31,35 @@ Handle<Code> CodeFactory::CEntry(Isolate* isolate, int result_size,
const ArgvMode am = argv_mode;
const bool be = builtin_exit_frame;
- if (rs == 1 && sd == kDontSaveFPRegs && am == kArgvOnStack && !be) {
+ if (rs == 1 && sd == SaveFPRegsMode::kIgnore && am == ArgvMode::kStack &&
+ !be) {
return CENTRY_CODE(Return1, DontSaveFPRegs, ArgvOnStack, NoBuiltinExit);
- } else if (rs == 1 && sd == kDontSaveFPRegs && am == kArgvOnStack && be) {
+ } else if (rs == 1 && sd == SaveFPRegsMode::kIgnore &&
+ am == ArgvMode::kStack && be) {
return CENTRY_CODE(Return1, DontSaveFPRegs, ArgvOnStack, BuiltinExit);
- } else if (rs == 1 && sd == kDontSaveFPRegs && am == kArgvInRegister && !be) {
+ } else if (rs == 1 && sd == SaveFPRegsMode::kIgnore &&
+ am == ArgvMode::kRegister && !be) {
return CENTRY_CODE(Return1, DontSaveFPRegs, ArgvInRegister, NoBuiltinExit);
- } else if (rs == 1 && sd == kSaveFPRegs && am == kArgvOnStack && !be) {
+ } else if (rs == 1 && sd == SaveFPRegsMode::kSave && am == ArgvMode::kStack &&
+ !be) {
return CENTRY_CODE(Return1, SaveFPRegs, ArgvOnStack, NoBuiltinExit);
- } else if (rs == 1 && sd == kSaveFPRegs && am == kArgvOnStack && be) {
+ } else if (rs == 1 && sd == SaveFPRegsMode::kSave && am == ArgvMode::kStack &&
+ be) {
return CENTRY_CODE(Return1, SaveFPRegs, ArgvOnStack, BuiltinExit);
- } else if (rs == 2 && sd == kDontSaveFPRegs && am == kArgvOnStack && !be) {
+ } else if (rs == 2 && sd == SaveFPRegsMode::kIgnore &&
+ am == ArgvMode::kStack && !be) {
return CENTRY_CODE(Return2, DontSaveFPRegs, ArgvOnStack, NoBuiltinExit);
- } else if (rs == 2 && sd == kDontSaveFPRegs && am == kArgvOnStack && be) {
+ } else if (rs == 2 && sd == SaveFPRegsMode::kIgnore &&
+ am == ArgvMode::kStack && be) {
return CENTRY_CODE(Return2, DontSaveFPRegs, ArgvOnStack, BuiltinExit);
- } else if (rs == 2 && sd == kDontSaveFPRegs && am == kArgvInRegister && !be) {
+ } else if (rs == 2 && sd == SaveFPRegsMode::kIgnore &&
+ am == ArgvMode::kRegister && !be) {
return CENTRY_CODE(Return2, DontSaveFPRegs, ArgvInRegister, NoBuiltinExit);
- } else if (rs == 2 && sd == kSaveFPRegs && am == kArgvOnStack && !be) {
+ } else if (rs == 2 && sd == SaveFPRegsMode::kSave && am == ArgvMode::kStack &&
+ !be) {
return CENTRY_CODE(Return2, SaveFPRegs, ArgvOnStack, NoBuiltinExit);
- } else if (rs == 2 && sd == kSaveFPRegs && am == kArgvOnStack && be) {
+ } else if (rs == 2 && sd == SaveFPRegsMode::kSave && am == ArgvMode::kStack &&
+ be) {
return CENTRY_CODE(Return2, SaveFPRegs, ArgvOnStack, BuiltinExit);
}
@@ -70,7 +80,7 @@ Callable CodeFactory::CallApiCallback(Isolate* isolate) {
// static
Callable CodeFactory::LoadGlobalIC(Isolate* isolate, TypeofMode typeof_mode) {
- return typeof_mode == NOT_INSIDE_TYPEOF
+ return typeof_mode == TypeofMode::kNotInside
? Builtins::CallableFor(isolate, Builtins::kLoadGlobalICTrampoline)
: Builtins::CallableFor(
isolate, Builtins::kLoadGlobalICInsideTypeofTrampoline);
@@ -79,7 +89,7 @@ Callable CodeFactory::LoadGlobalIC(Isolate* isolate, TypeofMode typeof_mode) {
// static
Callable CodeFactory::LoadGlobalICInOptimizedCode(Isolate* isolate,
TypeofMode typeof_mode) {
- return typeof_mode == NOT_INSIDE_TYPEOF
+ return typeof_mode == TypeofMode::kNotInside
? Builtins::CallableFor(isolate, Builtins::kLoadGlobalIC)
: Builtins::CallableFor(isolate,
Builtins::kLoadGlobalICInsideTypeof);
@@ -233,16 +243,6 @@ Callable CodeFactory::ResumeGenerator(Isolate* isolate) {
}
// static
-Callable CodeFactory::FrameDropperTrampoline(Isolate* isolate) {
- return Builtins::CallableFor(isolate, Builtins::kFrameDropperTrampoline);
-}
-
-// static
-Callable CodeFactory::HandleDebuggerStatement(Isolate* isolate) {
- return Builtins::CallableFor(isolate, Builtins::kHandleDebuggerStatement);
-}
-
-// static
Callable CodeFactory::FastNewFunctionContext(Isolate* isolate,
ScopeType scope_type) {
switch (scope_type) {
@@ -388,8 +388,8 @@ Callable CodeFactory::InterpreterPushArgsThenConstruct(
Callable CodeFactory::InterpreterCEntry(Isolate* isolate, int result_size) {
// Note: If we ever use fpregs in the interpreter then we will need to
// save fpregs too.
- Handle<Code> code = CodeFactory::CEntry(isolate, result_size, kDontSaveFPRegs,
- kArgvInRegister);
+ Handle<Code> code = CodeFactory::CEntry(
+ isolate, result_size, SaveFPRegsMode::kIgnore, ArgvMode::kRegister);
if (result_size == 1) {
return Callable(code, InterpreterCEntry1Descriptor{});
} else {
diff --git a/deps/v8/src/codegen/code-factory.h b/deps/v8/src/codegen/code-factory.h
index aab2977045..e55de10533 100644
--- a/deps/v8/src/codegen/code-factory.h
+++ b/deps/v8/src/codegen/code-factory.h
@@ -28,10 +28,10 @@ class V8_EXPORT_PRIVATE CodeFactory final {
// is exported here.
static Handle<Code> RuntimeCEntry(Isolate* isolate, int result_size = 1);
- static Handle<Code> CEntry(Isolate* isolate, int result_size = 1,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs,
- ArgvMode argv_mode = kArgvOnStack,
- bool builtin_exit_frame = false);
+ static Handle<Code> CEntry(
+ Isolate* isolate, int result_size = 1,
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore,
+ ArgvMode argv_mode = ArgvMode::kStack, bool builtin_exit_frame = false);
// Initial states for ICs.
static Callable LoadGlobalIC(Isolate* isolate, TypeofMode typeof_mode);
@@ -49,9 +49,6 @@ class V8_EXPORT_PRIVATE CodeFactory final {
static Callable ResumeGenerator(Isolate* isolate);
- static Callable FrameDropperTrampoline(Isolate* isolate);
- static Callable HandleDebuggerStatement(Isolate* isolate);
-
static Callable BinaryOperation(Isolate* isolate, Operation op);
static Callable ApiGetter(Isolate* isolate);
diff --git a/deps/v8/src/codegen/code-stub-assembler.cc b/deps/v8/src/codegen/code-stub-assembler.cc
index 492e6aaf37..5995a766d1 100644
--- a/deps/v8/src/codegen/code-stub-assembler.cc
+++ b/deps/v8/src/codegen/code-stub-assembler.cc
@@ -103,7 +103,7 @@ void CodeStubAssembler::Check(const BranchGenerator& branch,
std::initializer_list<ExtraNode> extra_nodes) {
Label ok(this);
Label not_ok(this, Label::kDeferred);
- if (message != nullptr && FLAG_code_comments) {
+ if (message != nullptr) {
Comment("[ Assert: ", message);
} else {
Comment("[ Assert");
@@ -1368,6 +1368,7 @@ TNode<HeapObject> CodeStubAssembler::AllocateInNewSpace(
TNode<HeapObject> CodeStubAssembler::Allocate(TNode<IntPtrT> size_in_bytes,
AllocationFlags flags) {
Comment("Allocate");
+ if (FLAG_single_generation) flags |= kPretenured;
bool const new_space = !(flags & kPretenured);
bool const allow_large_objects = flags & kAllowLargeObjectAllocation;
// For optimized allocations, we don't allow the allocation to happen in a
@@ -1574,8 +1575,8 @@ TNode<RawPtrT> CodeStubAssembler::LoadExternalPointerFromObject(
TNode<UintPtrT> entry = Load<UintPtrT>(table, table_offset);
if (external_pointer_tag != 0) {
- TNode<UintPtrT> tag = UintPtrConstant(external_pointer_tag);
- entry = UncheckedCast<UintPtrT>(WordXor(entry, tag));
+ TNode<UintPtrT> tag = UintPtrConstant(~external_pointer_tag);
+ entry = UncheckedCast<UintPtrT>(WordAnd(entry, tag));
}
return UncheckedCast<RawPtrT>(UncheckedCast<WordT>(entry));
#else
@@ -1603,7 +1604,7 @@ void CodeStubAssembler::StoreExternalPointerToObject(
TNode<UintPtrT> value = UncheckedCast<UintPtrT>(pointer);
if (external_pointer_tag != 0) {
TNode<UintPtrT> tag = UintPtrConstant(external_pointer_tag);
- value = UncheckedCast<UintPtrT>(WordXor(pointer, tag));
+ value = UncheckedCast<UintPtrT>(WordOr(pointer, tag));
}
StoreNoWriteBarrier(MachineType::PointerRepresentation(), table, table_offset,
value);
@@ -1619,6 +1620,8 @@ TNode<Object> CodeStubAssembler::LoadFromParentFrame(int offset) {
TNode<IntPtrT> CodeStubAssembler::LoadAndUntagObjectField(
TNode<HeapObject> object, int offset) {
+ // Please use LoadMap(object) instead.
+ DCHECK_NE(offset, HeapObject::kMapOffset);
if (SmiValuesAre32Bits()) {
#if V8_TARGET_LITTLE_ENDIAN
offset += 4;
@@ -1631,6 +1634,8 @@ TNode<IntPtrT> CodeStubAssembler::LoadAndUntagObjectField(
TNode<Int32T> CodeStubAssembler::LoadAndUntagToWord32ObjectField(
TNode<HeapObject> object, int offset) {
+ // Please use LoadMap(object) instead.
+ DCHECK_NE(offset, HeapObject::kMapOffset);
if (SmiValuesAre32Bits()) {
#if V8_TARGET_LITTLE_ENDIAN
offset += 4;
@@ -1656,7 +1661,15 @@ TNode<Map> CodeStubAssembler::GetInstanceTypeMap(InstanceType instance_type) {
}
TNode<Map> CodeStubAssembler::LoadMap(TNode<HeapObject> object) {
- return LoadObjectField<Map>(object, HeapObject::kMapOffset);
+ TNode<Map> map = LoadObjectField<Map>(object, HeapObject::kMapOffset);
+#ifdef V8_MAP_PACKING
+ // Check the loaded map is unpacked. i.e. the lowest two bits != 0b10
+ CSA_ASSERT(this,
+ WordNotEqual(WordAnd(BitcastTaggedToWord(map),
+ IntPtrConstant(Internals::kMapWordXorMask)),
+ IntPtrConstant(Internals::kMapWordSignature)));
+#endif
+ return map;
}
TNode<Uint16T> CodeStubAssembler::LoadInstanceType(TNode<HeapObject> object) {
@@ -2033,6 +2046,13 @@ void CodeStubAssembler::DispatchMaybeObject(TNode<MaybeObject> maybe_object,
Goto(if_strong);
}
+void CodeStubAssembler::AssertHasValidMap(TNode<HeapObject> object) {
+#ifdef V8_MAP_PACKING
+ // Test if the map is an unpacked and valid map
+ CSA_ASSERT(this, IsMap(LoadMap(object)));
+#endif
+}
+
TNode<BoolT> CodeStubAssembler::IsStrong(TNode<MaybeObject> value) {
return Word32Equal(Word32And(TruncateIntPtrToInt32(
BitcastTaggedToWordForTagAndSmiBits(value)),
@@ -2943,12 +2963,14 @@ void CodeStubAssembler::StoreObjectField(TNode<HeapObject> object,
void CodeStubAssembler::UnsafeStoreObjectFieldNoWriteBarrier(
TNode<HeapObject> object, int offset, TNode<Object> value) {
+ DCHECK_NE(HeapObject::kMapOffset, offset); // Use StoreMap instead.
OptimizedStoreFieldUnsafeNoWriteBarrier(MachineRepresentation::kTagged,
object, offset, value);
}
void CodeStubAssembler::StoreMap(TNode<HeapObject> object, TNode<Map> map) {
OptimizedStoreMap(object, map);
+ AssertHasValidMap(object);
}
void CodeStubAssembler::StoreMapNoWriteBarrier(TNode<HeapObject> object,
@@ -2958,16 +2980,19 @@ void CodeStubAssembler::StoreMapNoWriteBarrier(TNode<HeapObject> object,
void CodeStubAssembler::StoreMapNoWriteBarrier(TNode<HeapObject> object,
TNode<Map> map) {
- OptimizedStoreFieldAssertNoWriteBarrier(MachineRepresentation::kTaggedPointer,
- object, HeapObject::kMapOffset, map);
+ OptimizedStoreMap(object, map);
+ AssertHasValidMap(object);
}
void CodeStubAssembler::StoreObjectFieldRoot(TNode<HeapObject> object,
int offset, RootIndex root_index) {
- if (RootsTable::IsImmortalImmovable(root_index)) {
- StoreObjectFieldNoWriteBarrier(object, offset, LoadRoot(root_index));
+ TNode<Object> root = LoadRoot(root_index);
+ if (offset == HeapObject::kMapOffset) {
+ StoreMap(object, CAST(root));
+ } else if (RootsTable::IsImmortalImmovable(root_index)) {
+ StoreObjectFieldNoWriteBarrier(object, offset, root);
} else {
- StoreObjectField(object, offset, LoadRoot(root_index));
+ StoreObjectField(object, offset, root);
}
}
@@ -4762,7 +4787,11 @@ void CodeStubAssembler::MoveElements(ElementsKind kind,
TNode<IntPtrT> length) {
Label finished(this);
Label needs_barrier(this);
+#ifdef V8_DISABLE_WRITE_BARRIERS
+ const bool needs_barrier_check = false;
+#else
const bool needs_barrier_check = !IsDoubleElementsKind(kind);
+#endif // V8_DISABLE_WRITE_BARRIERS
DCHECK(IsFastElementsKind(kind));
CSA_ASSERT(this, IsFixedArrayWithKind(elements, kind));
@@ -4847,7 +4876,11 @@ void CodeStubAssembler::CopyElements(ElementsKind kind,
WriteBarrierMode write_barrier) {
Label finished(this);
Label needs_barrier(this);
+#ifdef V8_DISABLE_WRITE_BARRIERS
+ const bool needs_barrier_check = false;
+#else
const bool needs_barrier_check = !IsDoubleElementsKind(kind);
+#endif // V8_DISABLE_WRITE_BARRIERS
DCHECK(IsFastElementsKind(kind));
CSA_ASSERT(this, IsFixedArrayWithKind(dst_elements, kind));
@@ -5294,6 +5327,10 @@ TNode<FixedArrayBase> CodeStubAssembler::GrowElementsCapacity(
return new_elements;
}
+template TNode<FixedArrayBase> CodeStubAssembler::GrowElementsCapacity<IntPtrT>(
+ TNode<HeapObject>, TNode<FixedArrayBase>, ElementsKind, ElementsKind,
+ TNode<IntPtrT>, TNode<IntPtrT>, compiler::CodeAssemblerLabel*);
+
void CodeStubAssembler::InitializeAllocationMemento(
TNode<HeapObject> base, TNode<IntPtrT> base_allocation_size,
TNode<AllocationSite> allocation_site) {
@@ -6036,6 +6073,13 @@ TNode<BoolT> CodeStubAssembler::IsNoElementsProtectorCellInvalid() {
return TaggedEqual(cell_value, invalid);
}
+TNode<BoolT> CodeStubAssembler::IsMegaDOMProtectorCellInvalid() {
+ TNode<Smi> invalid = SmiConstant(Protectors::kProtectorInvalid);
+ TNode<PropertyCell> cell = MegaDOMProtectorConstant();
+ TNode<Object> cell_value = LoadObjectField(cell, PropertyCell::kValueOffset);
+ return TaggedEqual(cell_value, invalid);
+}
+
TNode<BoolT> CodeStubAssembler::IsArrayIteratorProtectorCellInvalid() {
TNode<Smi> invalid = SmiConstant(Protectors::kProtectorInvalid);
TNode<PropertyCell> cell = ArrayIteratorProtectorConstant();
@@ -6285,14 +6329,27 @@ TNode<BoolT> CodeStubAssembler::IsJSObjectInstanceType(
Int32Constant(FIRST_JS_OBJECT_TYPE));
}
+TNode<BoolT> CodeStubAssembler::IsJSApiObjectInstanceType(
+ TNode<Int32T> instance_type) {
+ return InstanceTypeEqual(instance_type, JS_API_OBJECT_TYPE);
+}
+
TNode<BoolT> CodeStubAssembler::IsJSObjectMap(TNode<Map> map) {
return IsJSObjectInstanceType(LoadMapInstanceType(map));
}
+TNode<BoolT> CodeStubAssembler::IsJSApiObjectMap(TNode<Map> map) {
+ return IsJSApiObjectInstanceType(LoadMapInstanceType(map));
+}
+
TNode<BoolT> CodeStubAssembler::IsJSObject(TNode<HeapObject> object) {
return IsJSObjectMap(LoadMap(object));
}
+TNode<BoolT> CodeStubAssembler::IsJSApiObject(TNode<HeapObject> object) {
+ return IsJSApiObjectMap(LoadMap(object));
+}
+
TNode<BoolT> CodeStubAssembler::IsJSFinalizationRegistryMap(TNode<Map> map) {
return InstanceTypeEqual(LoadMapInstanceType(map),
JS_FINALIZATION_REGISTRY_TYPE);
@@ -7672,15 +7729,25 @@ TNode<Object> CodeStubAssembler::OrdinaryToPrimitive(
TNode<Uint32T> CodeStubAssembler::DecodeWord32(TNode<Word32T> word32,
uint32_t shift, uint32_t mask) {
DCHECK_EQ((mask >> shift) << shift, mask);
- return Unsigned(Word32And(Word32Shr(word32, static_cast<int>(shift)),
- Int32Constant(mask >> shift)));
+ if ((std::numeric_limits<uint32_t>::max() >> shift) ==
+ ((std::numeric_limits<uint32_t>::max() & mask) >> shift)) {
+ return Unsigned(Word32Shr(word32, static_cast<int>(shift)));
+ } else {
+ return Unsigned(Word32And(Word32Shr(word32, static_cast<int>(shift)),
+ Int32Constant(mask >> shift)));
+ }
}
TNode<UintPtrT> CodeStubAssembler::DecodeWord(TNode<WordT> word, uint32_t shift,
uintptr_t mask) {
DCHECK_EQ((mask >> shift) << shift, mask);
- return Unsigned(WordAnd(WordShr(word, static_cast<int>(shift)),
- IntPtrConstant(mask >> shift)));
+ if ((std::numeric_limits<uintptr_t>::max() >> shift) ==
+ ((std::numeric_limits<uintptr_t>::max() & mask) >> shift)) {
+ return Unsigned(WordShr(word, static_cast<int>(shift)));
+ } else {
+ return Unsigned(WordAnd(WordShr(word, static_cast<int>(shift)),
+ IntPtrConstant(mask >> shift)));
+ }
}
TNode<Word32T> CodeStubAssembler::UpdateWord32(TNode<Word32T> word,
@@ -8871,9 +8938,9 @@ void CodeStubAssembler::ForEachEnumerableOwnProperty(
{
Label slow_load(this, Label::kDeferred);
- var_value = CallGetterIfAccessor(var_value.value(), object,
- var_details.value(), context,
- object, &slow_load, kCallJSGetter);
+ var_value = CallGetterIfAccessor(
+ var_value.value(), object, var_details.value(), context, object,
+ next_key, &slow_load, kCallJSGetter);
Goto(&callback);
BIND(&slow_load);
@@ -9325,8 +9392,8 @@ template void CodeStubAssembler::LoadPropertyFromDictionary(
// result of the getter call.
TNode<Object> CodeStubAssembler::CallGetterIfAccessor(
TNode<Object> value, TNode<HeapObject> holder, TNode<Uint32T> details,
- TNode<Context> context, TNode<Object> receiver, Label* if_bailout,
- GetOwnPropertyMode mode) {
+ TNode<Context> context, TNode<Object> receiver, TNode<Object> name,
+ Label* if_bailout, GetOwnPropertyMode mode) {
TVARIABLE(Object, var_value, value);
Label done(this), if_accessor_info(this, Label::kDeferred);
@@ -9354,13 +9421,16 @@ TNode<Object> CodeStubAssembler::CallGetterIfAccessor(
BIND(&if_callable);
{
- // Call the accessor.
+ // Call the accessor. No need to check side-effect mode here, since it
+ // will be checked later in DebugOnFunctionCall.
var_value = Call(context, getter, receiver);
Goto(&done);
}
BIND(&if_function_template_info);
{
+ Label runtime(this, Label::kDeferred);
+ GotoIf(IsSideEffectFreeDebuggingActive(), &runtime);
TNode<HeapObject> cached_property_name = LoadObjectField<HeapObject>(
getter, FunctionTemplateInfo::kCachedPropertyNameOffset);
GotoIfNot(IsTheHole(cached_property_name), if_bailout);
@@ -9371,6 +9441,13 @@ TNode<Object> CodeStubAssembler::CallGetterIfAccessor(
Builtins::kCallFunctionTemplate_CheckAccessAndCompatibleReceiver,
creation_context, getter, IntPtrConstant(0), receiver);
Goto(&done);
+
+ BIND(&runtime);
+ {
+ var_value = CallRuntime(Runtime::kGetProperty, context, holder, name,
+ receiver);
+ Goto(&done);
+ }
}
} else {
Goto(&done);
@@ -9505,7 +9582,7 @@ void CodeStubAssembler::TryGetOwnProperty(
}
TNode<Object> value =
CallGetterIfAccessor(var_value->value(), object, var_details->value(),
- context, receiver, if_bailout, mode);
+ context, receiver, unique_name, if_bailout, mode);
*var_value = value;
Goto(if_found_value);
}
@@ -9554,6 +9631,7 @@ void CodeStubAssembler::TryLookupElement(
BIGUINT64_ELEMENTS,
BIGINT64_ELEMENTS,
};
+ // TODO(v8:11111): Support RAB / GSAB.
Label* labels[] = {
&if_isobjectorsmi, &if_isobjectorsmi, &if_isobjectorsmi,
&if_isobjectorsmi, &if_isobjectorsmi, &if_isobjectorsmi,
@@ -10811,6 +10889,12 @@ void CodeStubAssembler::EmitElementStore(
TNode<Context> context, TVariable<Object>* maybe_converted_value) {
CSA_ASSERT(this, Word32BinaryNot(IsJSProxy(object)));
+ // TODO(v8:11111): Fast path for RAB / GSAB backed TypedArrays.
+ if (IsRabGsabTypedArrayElementsKind(elements_kind)) {
+ GotoIf(Int32TrueConstant(), bailout);
+ return;
+ }
+
TNode<FixedArrayBase> elements = LoadElements(object);
if (!(IsSmiOrObjectElementsKind(elements_kind) ||
IsSealedElementsKind(elements_kind) ||
@@ -11057,6 +11141,8 @@ void CodeStubAssembler::TrapAllocationMemento(TNode<JSObject> object,
// Bail out if the object is not in new space.
TNode<IntPtrT> object_word = BitcastTaggedToWord(object);
+ // TODO(v8:11641): Skip TrapAllocationMemento when allocation-site
+ // tracking is disabled.
TNode<IntPtrT> object_page = PageFromAddress(object_word);
{
TNode<IntPtrT> page_flags =
@@ -11102,15 +11188,19 @@ void CodeStubAssembler::TrapAllocationMemento(TNode<JSObject> object,
// Memento map check.
BIND(&map_check);
{
- TNode<Object> memento_map = LoadObjectField(object, kMementoMapOffset);
- Branch(TaggedEqual(memento_map, AllocationMementoMapConstant()),
- memento_found, &no_memento_found);
+ TNode<AnyTaggedT> maybe_mapword =
+ LoadObjectField(object, kMementoMapOffset);
+ TNode<AnyTaggedT> memento_mapword =
+ LoadRootMapWord(RootIndex::kAllocationMementoMap);
+ Branch(TaggedEqual(maybe_mapword, memento_mapword), memento_found,
+ &no_memento_found);
}
BIND(&no_memento_found);
Comment("] TrapAllocationMemento");
}
TNode<IntPtrT> CodeStubAssembler::PageFromAddress(TNode<IntPtrT> address) {
+ if (FLAG_enable_third_party_heap) Unreachable();
return WordAnd(address, IntPtrConstant(~kPageAlignmentMask));
}
@@ -11323,7 +11413,12 @@ void CodeStubAssembler::InitializeFieldsWithRoot(TNode<HeapObject> object,
CSA_SLOW_ASSERT(this, TaggedIsNotSmi(object));
start_offset = IntPtrAdd(start_offset, IntPtrConstant(-kHeapObjectTag));
end_offset = IntPtrAdd(end_offset, IntPtrConstant(-kHeapObjectTag));
- TNode<Object> root_value = LoadRoot(root_index);
+ TNode<AnyTaggedT> root_value;
+ if (root_index == RootIndex::kOnePointerFillerMap) {
+ root_value = LoadRootMapWord(root_index);
+ } else {
+ root_value = LoadRoot(root_index);
+ }
BuildFastLoop<IntPtrT>(
end_offset, start_offset,
[=](TNode<IntPtrT> current) {
@@ -13597,6 +13692,149 @@ TNode<UintPtrT> CodeStubAssembler::LoadJSTypedArrayLength(
return LoadObjectField<UintPtrT>(typed_array, JSTypedArray::kLengthOffset);
}
+// ES #sec-integerindexedobjectlength
+TNode<UintPtrT> CodeStubAssembler::LoadVariableLengthJSTypedArrayLength(
+ TNode<JSTypedArray> array, TNode<JSArrayBuffer> buffer, Label* miss) {
+ Label is_gsab(this), is_rab(this), end(this);
+ TVARIABLE(UintPtrT, result);
+
+ Branch(IsSharedArrayBuffer(buffer), &is_gsab, &is_rab);
+ BIND(&is_gsab);
+ {
+ // Non-length-tracking GSAB-backed TypedArrays shouldn't end up here.
+ CSA_ASSERT(this, IsLengthTrackingTypedArray(array));
+ // Read the byte length from the BackingStore.
+ const TNode<ExternalReference> length_function = ExternalConstant(
+ ExternalReference::length_tracking_gsab_backed_typed_array_length());
+ TNode<ExternalReference> isolate_ptr =
+ ExternalConstant(ExternalReference::isolate_address(isolate()));
+ result = UncheckedCast<UintPtrT>(
+ CallCFunction(length_function, MachineType::UintPtr(),
+ std::make_pair(MachineType::Pointer(), isolate_ptr),
+ std::make_pair(MachineType::AnyTagged(), array)));
+ Goto(&end);
+ }
+
+ BIND(&is_rab);
+ {
+ GotoIf(IsDetachedBuffer(buffer), miss);
+
+ TNode<UintPtrT> buffer_byte_length = LoadJSArrayBufferByteLength(buffer);
+ TNode<UintPtrT> array_byte_offset = LoadJSArrayBufferViewByteOffset(array);
+
+ Label is_length_tracking(this), not_length_tracking(this);
+ Branch(IsLengthTrackingTypedArray(array), &is_length_tracking,
+ &not_length_tracking);
+
+ BIND(&is_length_tracking);
+ {
+ // The backing RAB might have been shrunk so that the start of the
+ // TypedArray is already out of bounds.
+ GotoIfNot(UintPtrLessThanOrEqual(array_byte_offset, buffer_byte_length),
+ miss);
+ // length = (buffer_byte_length - byte_offset) / element_size
+ // Conversion to signed is OK since buffer_byte_length <
+ // JSArrayBuffer::kMaxByteLength.
+ TNode<IntPtrT> element_size =
+ RabGsabElementsKindToElementByteSize(LoadElementsKind(array));
+ TNode<IntPtrT> length =
+ IntPtrDiv(Signed(UintPtrSub(buffer_byte_length, array_byte_offset)),
+ element_size);
+ result = Unsigned(length);
+ Goto(&end);
+ }
+
+ BIND(&not_length_tracking);
+ {
+ // Check if the backing RAB has shrunk so that the buffer is out of
+ // bounds.
+ TNode<UintPtrT> array_byte_length =
+ LoadJSArrayBufferViewByteLength(array);
+ GotoIfNot(UintPtrGreaterThanOrEqual(
+ buffer_byte_length,
+ UintPtrAdd(array_byte_offset, array_byte_length)),
+ miss);
+ result = LoadJSTypedArrayLength(array);
+ Goto(&end);
+ }
+ }
+ BIND(&end);
+ return result.value();
+}
+
+// ES #sec-integerindexedobjectbytelength
+TNode<UintPtrT> CodeStubAssembler::LoadVariableLengthJSTypedArrayByteLength(
+ TNode<Context> context, TNode<JSTypedArray> array,
+ TNode<JSArrayBuffer> buffer) {
+ Label miss(this), end(this);
+ TVARIABLE(UintPtrT, result);
+
+ TNode<UintPtrT> length =
+ LoadVariableLengthJSTypedArrayLength(array, buffer, &miss);
+ TNode<IntPtrT> element_size =
+ RabGsabElementsKindToElementByteSize(LoadElementsKind(array));
+ // Conversion to signed is OK since length < JSArrayBuffer::kMaxByteLength.
+ TNode<IntPtrT> byte_length = IntPtrMul(Signed(length), element_size);
+ result = Unsigned(byte_length);
+ Goto(&end);
+ BIND(&miss);
+ {
+ result = UintPtrConstant(0);
+ Goto(&end);
+ }
+ BIND(&end);
+ return result.value();
+}
+
+TNode<IntPtrT> CodeStubAssembler::RabGsabElementsKindToElementByteSize(
+ TNode<Int32T> elements_kind) {
+ TVARIABLE(IntPtrT, result);
+ Label elements_8(this), elements_16(this), elements_32(this),
+ elements_64(this), not_found(this), end(this);
+ int32_t elements_kinds[] = {
+ RAB_GSAB_UINT8_ELEMENTS, RAB_GSAB_UINT8_CLAMPED_ELEMENTS,
+ RAB_GSAB_INT8_ELEMENTS, RAB_GSAB_UINT16_ELEMENTS,
+ RAB_GSAB_INT16_ELEMENTS, RAB_GSAB_UINT32_ELEMENTS,
+ RAB_GSAB_INT32_ELEMENTS, RAB_GSAB_FLOAT32_ELEMENTS,
+ RAB_GSAB_FLOAT64_ELEMENTS, RAB_GSAB_BIGINT64_ELEMENTS,
+ RAB_GSAB_BIGUINT64_ELEMENTS};
+ Label* elements_kind_labels[] = {&elements_8, &elements_8, &elements_8,
+ &elements_16, &elements_16, &elements_32,
+ &elements_32, &elements_32, &elements_64,
+ &elements_64, &elements_64};
+ const size_t kTypedElementsKindCount =
+ LAST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND -
+ FIRST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND + 1;
+ DCHECK_EQ(kTypedElementsKindCount, arraysize(elements_kinds));
+ DCHECK_EQ(kTypedElementsKindCount, arraysize(elements_kind_labels));
+ Switch(elements_kind, &not_found, elements_kinds, elements_kind_labels,
+ kTypedElementsKindCount);
+ BIND(&elements_8);
+ {
+ result = IntPtrConstant(1);
+ Goto(&end);
+ }
+ BIND(&elements_16);
+ {
+ result = IntPtrConstant(2);
+ Goto(&end);
+ }
+ BIND(&elements_32);
+ {
+ result = IntPtrConstant(4);
+ Goto(&end);
+ }
+ BIND(&elements_64);
+ {
+ result = IntPtrConstant(8);
+ Goto(&end);
+ }
+ BIND(&not_found);
+ { Unreachable(); }
+ BIND(&end);
+ return result.value();
+}
+
TNode<JSArrayBuffer> CodeStubAssembler::GetTypedArrayBuffer(
TNode<Context> context, TNode<JSTypedArray> array) {
Label call_runtime(this), done(this);
@@ -13799,6 +14037,17 @@ TNode<BoolT> CodeStubAssembler::IsDebugActive() {
return Word32NotEqual(is_debug_active, Int32Constant(0));
}
+TNode<BoolT> CodeStubAssembler::IsSideEffectFreeDebuggingActive() {
+ TNode<Uint8T> debug_execution_mode = Load<Uint8T>(ExternalConstant(
+ ExternalReference::debug_execution_mode_address(isolate())));
+
+ TNode<BoolT> is_active =
+ Word32Equal(debug_execution_mode,
+ Int32Constant(DebugInfo::ExecutionMode::kSideEffects));
+
+ return is_active;
+}
+
TNode<BoolT> CodeStubAssembler::HasAsyncEventDelegate() {
const TNode<RawPtrT> async_event_delegate = Load<RawPtrT>(ExternalConstant(
ExternalReference::async_event_delegate_address(isolate())));
@@ -13837,18 +14086,8 @@ TNode<BoolT> CodeStubAssembler::
return IsSetWord32(flags, mask);
}
-TNode<BoolT> CodeStubAssembler::
- IsAnyPromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate(
- TNode<Uint32T> flags) {
- return Word32NotEqual(flags, Int32Constant(0));
-}
-
TNode<BoolT> CodeStubAssembler::NeedsAnyPromiseHooks(TNode<Uint32T> flags) {
- uint32_t mask = Isolate::PromiseHookFields::HasContextPromiseHook::kMask |
- Isolate::PromiseHookFields::HasIsolatePromiseHook::kMask |
- Isolate::PromiseHookFields::HasAsyncEventDelegate::kMask |
- Isolate::PromiseHookFields::IsDebugActive::kMask;
- return IsSetWord32(flags, mask);
+ return Word32NotEqual(flags, Int32Constant(0));
}
TNode<Code> CodeStubAssembler::LoadBuiltin(TNode<Smi> builtin_id) {
diff --git a/deps/v8/src/codegen/code-stub-assembler.h b/deps/v8/src/codegen/code-stub-assembler.h
index 24204d82f8..9b54b5014e 100644
--- a/deps/v8/src/codegen/code-stub-assembler.h
+++ b/deps/v8/src/codegen/code-stub-assembler.h
@@ -67,6 +67,7 @@ enum class PrimitiveType { kBoolean, kNumber, kString, kSymbol };
AsyncIteratorValueUnwrapSharedFun) \
V(MapIteratorProtector, map_iterator_protector, MapIteratorProtector) \
V(NoElementsProtector, no_elements_protector, NoElementsProtector) \
+ V(MegaDOMProtector, mega_dom_protector, MegaDOMProtector) \
V(NumberStringCache, number_string_cache, NumberStringCache) \
V(PromiseAllResolveElementSharedFun, promise_all_resolve_element_shared_fun, \
PromiseAllResolveElementSharedFun) \
@@ -157,6 +158,7 @@ enum class PrimitiveType { kBoolean, kNumber, kString, kSymbol };
V(ManyClosuresCellMap, many_closures_cell_map, ManyClosuresCellMap) \
V(match_symbol, match_symbol, MatchSymbol) \
V(megamorphic_symbol, megamorphic_symbol, MegamorphicSymbol) \
+ V(mega_dom_symbol, mega_dom_symbol, MegaDOMSymbol) \
V(message_string, message_string, MessageString) \
V(minus_Infinity_string, minus_Infinity_string, MinusInfinityString) \
V(MinusZeroValue, minus_zero_value, MinusZero) \
@@ -1088,7 +1090,19 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
}
// Load a field from an object on the heap.
template <class T, typename std::enable_if<
- std::is_convertible<TNode<T>, TNode<Object>>::value,
+ std::is_convertible<TNode<T>, TNode<Object>>::value &&
+ std::is_base_of<T, Map>::value,
+ int>::type = 0>
+ TNode<T> LoadObjectField(TNode<HeapObject> object, int offset) {
+ const MachineType machine_type = offset == HeapObject::kMapOffset
+ ? MachineType::MapInHeader()
+ : MachineTypeOf<T>::value;
+ return CAST(LoadFromObject(machine_type, object,
+ IntPtrConstant(offset - kHeapObjectTag)));
+ }
+ template <class T, typename std::enable_if<
+ std::is_convertible<TNode<T>, TNode<Object>>::value &&
+ !std::is_base_of<T, Map>::value,
int>::type = 0>
TNode<T> LoadObjectField(TNode<HeapObject> object, int offset) {
return CAST(LoadFromObject(MachineTypeOf<T>::value, object,
@@ -1163,6 +1177,12 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
std::is_convertible<TNode<T>, TNode<Object>>::value,
int>::type = 0>
TNode<T> LoadReference(Reference reference) {
+ if (IsMapOffsetConstant(reference.offset)) {
+ TNode<Map> map = LoadMap(CAST(reference.object));
+ DCHECK((std::is_base_of<T, Map>::value));
+ return ReinterpretCast<T>(map);
+ }
+
TNode<IntPtrT> offset =
IntPtrSub(reference.offset, IntPtrConstant(kHeapObjectTag));
CSA_ASSERT(this, TaggedIsNotSmi(reference.object));
@@ -1175,6 +1195,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
std::is_same<T, MaybeObject>::value,
int>::type = 0>
TNode<T> LoadReference(Reference reference) {
+ DCHECK(!IsMapOffsetConstant(reference.offset));
TNode<IntPtrT> offset =
IntPtrSub(reference.offset, IntPtrConstant(kHeapObjectTag));
return UncheckedCast<T>(
@@ -1185,6 +1206,10 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
std::is_same<T, MaybeObject>::value,
int>::type = 0>
void StoreReference(Reference reference, TNode<T> value) {
+ if (IsMapOffsetConstant(reference.offset)) {
+ DCHECK((std::is_base_of<T, Map>::value));
+ return StoreMap(CAST(reference.object), ReinterpretCast<Map>(value));
+ }
MachineRepresentation rep = MachineRepresentationOf<T>::value;
StoreToObjectWriteBarrier write_barrier = StoreToObjectWriteBarrier::kFull;
if (std::is_same<T, Smi>::value) {
@@ -1201,6 +1226,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
std::is_convertible<TNode<T>, TNode<UntaggedT>>::value,
int>::type = 0>
void StoreReference(Reference reference, TNode<T> value) {
+ DCHECK(!IsMapOffsetConstant(reference.offset));
TNode<IntPtrT> offset =
IntPtrSub(reference.offset, IntPtrConstant(kHeapObjectTag));
StoreToObject(MachineRepresentationOf<T>::value, reference.object, offset,
@@ -2346,6 +2372,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
// JSProxy or an object with interceptors.
TNode<BoolT> InstanceTypeEqual(TNode<Int32T> instance_type, int type);
TNode<BoolT> IsNoElementsProtectorCellInvalid();
+ TNode<BoolT> IsMegaDOMProtectorCellInvalid();
TNode<BoolT> IsArrayIteratorProtectorCellInvalid();
TNode<BoolT> IsBigIntInstanceType(TNode<Int32T> instance_type);
TNode<BoolT> IsBigInt(TNode<HeapObject> object);
@@ -2395,6 +2422,9 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
TNode<BoolT> IsJSObjectInstanceType(TNode<Int32T> instance_type);
TNode<BoolT> IsJSObjectMap(TNode<Map> map);
TNode<BoolT> IsJSObject(TNode<HeapObject> object);
+ TNode<BoolT> IsJSApiObjectInstanceType(TNode<Int32T> instance_type);
+ TNode<BoolT> IsJSApiObjectMap(TNode<Map> map);
+ TNode<BoolT> IsJSApiObject(TNode<HeapObject> object);
TNode<BoolT> IsJSFinalizationRegistryMap(TNode<Map> map);
TNode<BoolT> IsJSFinalizationRegistry(TNode<HeapObject> object);
TNode<BoolT> IsJSPromiseMap(TNode<Map> map);
@@ -3451,6 +3481,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
// Debug helpers
TNode<BoolT> IsDebugActive();
+ TNode<BoolT> IsSideEffectFreeDebuggingActive();
// JSArrayBuffer helpers
TNode<RawPtrT> LoadJSArrayBufferBackingStorePtr(
@@ -3464,6 +3495,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
TNode<JSArrayBufferView> array_buffer_view);
TNode<UintPtrT> LoadJSArrayBufferViewByteLength(
TNode<JSArrayBufferView> array_buffer_view);
+
TNode<UintPtrT> LoadJSArrayBufferViewByteOffset(
TNode<JSArrayBufferView> array_buffer_view);
void ThrowIfArrayBufferViewBufferIsDetached(
@@ -3472,6 +3504,17 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
// JSTypedArray helpers
TNode<UintPtrT> LoadJSTypedArrayLength(TNode<JSTypedArray> typed_array);
+ // Helper for length tracking JSTypedArrays and JSTypedArrays backed by
+ // ResizableArrayBuffer.
+ TNode<UintPtrT> LoadVariableLengthJSTypedArrayLength(
+ TNode<JSTypedArray> array, TNode<JSArrayBuffer> buffer, Label* miss);
+ // Helper for length tracking JSTypedArrays and JSTypedArrays backed by
+ // ResizableArrayBuffer.
+ TNode<UintPtrT> LoadVariableLengthJSTypedArrayByteLength(
+ TNode<Context> context, TNode<JSTypedArray> array,
+ TNode<JSArrayBuffer> buffer);
+ TNode<IntPtrT> RabGsabElementsKindToElementByteSize(
+ TNode<Int32T> elementsKind);
TNode<RawPtrT> LoadJSTypedArrayDataPtr(TNode<JSTypedArray> typed_array);
TNode<JSArrayBuffer> GetTypedArrayBuffer(TNode<Context> context,
TNode<JSTypedArray> array);
@@ -3528,13 +3571,6 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
return IsIsolatePromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate(
PromiseHookFlags());
}
- TNode<BoolT> IsAnyPromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate(
- TNode<Uint32T> flags);
- TNode<BoolT>
- IsAnyPromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate() {
- return IsAnyPromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate(
- PromiseHookFlags());
- }
TNode<BoolT> NeedsAnyPromiseHooks(TNode<Uint32T> flags);
TNode<BoolT> NeedsAnyPromiseHooks() {
@@ -3600,6 +3636,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
}
int32_t ConstexprWord32Or(int32_t a, int32_t b) { return a | b; }
+ uint32_t ConstexprWord32Shl(uint32_t a, int32_t b) { return a << b; }
bool ConstexprUintPtrLessThan(uintptr_t a, uintptr_t b) { return a < b; }
@@ -3712,12 +3749,10 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
const ForEachKeyValueFunction& body,
Label* bailout);
- TNode<Object> CallGetterIfAccessor(TNode<Object> value,
- TNode<HeapObject> holder,
- TNode<Uint32T> details,
- TNode<Context> context,
- TNode<Object> receiver, Label* if_bailout,
- GetOwnPropertyMode mode = kCallJSGetter);
+ TNode<Object> CallGetterIfAccessor(
+ TNode<Object> value, TNode<HeapObject> holder, TNode<Uint32T> details,
+ TNode<Context> context, TNode<Object> receiver, TNode<Object> name,
+ Label* if_bailout, GetOwnPropertyMode mode = kCallJSGetter);
TNode<IntPtrT> TryToIntptr(TNode<Object> key, Label* if_not_intptr,
TVariable<Int32T>* var_instance_type = nullptr);
@@ -3916,6 +3951,10 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
return CodeAssembler::LoadRoot(root_index);
}
+ TNode<AnyTaggedT> LoadRootMapWord(RootIndex root_index) {
+ return CodeAssembler::LoadRootMapWord(root_index);
+ }
+
template <typename TIndex>
void StoreFixedArrayOrPropertyArrayElement(
TNode<UnionT<FixedArray, PropertyArray>> array, TNode<TIndex> index,
@@ -3955,6 +3994,8 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
TVariable<Number>* var_result,
Label* if_bailout);
+ void AssertHasValidMap(TNode<HeapObject> object);
+
template <typename TValue>
void EmitElementStoreTypedArray(TNode<JSTypedArray> typed_array,
TNode<IntPtrT> key, TNode<Object> value,
diff --git a/deps/v8/src/codegen/compilation-cache.cc b/deps/v8/src/codegen/compilation-cache.cc
index 3941e56e6a..ee50f8b015 100644
--- a/deps/v8/src/codegen/compilation-cache.cc
+++ b/deps/v8/src/codegen/compilation-cache.cc
@@ -29,10 +29,9 @@ CompilationCache::CompilationCache(Isolate* isolate)
eval_global_(isolate),
eval_contextual_(isolate),
reg_exp_(isolate, kRegExpGenerations),
- code_(isolate),
enabled_script_and_eval_(true) {
CompilationSubCache* subcaches[kSubCacheCount] = {
- &script_, &eval_global_, &eval_contextual_, &reg_exp_, &code_};
+ &script_, &eval_global_, &eval_contextual_, &reg_exp_};
for (int i = 0; i < kSubCacheCount; ++i) {
subcaches_[i] = subcaches[i];
}
@@ -77,10 +76,6 @@ void CompilationCacheScript::Age() {
}
void CompilationCacheEval::Age() { AgeCustom(this); }
void CompilationCacheRegExp::Age() { AgeByGeneration(this); }
-void CompilationCacheCode::Age() {
- if (FLAG_trace_turbo_nci) CompilationCacheCode::TraceAgeing();
- AgeByGeneration(this);
-}
void CompilationSubCache::Iterate(RootVisitor* v) {
v->VisitRootPointers(Root::kCompilationCache, nullptr,
@@ -267,58 +262,6 @@ void CompilationCacheRegExp::Put(Handle<String> source, JSRegExp::Flags flags,
CompilationCacheTable::PutRegExp(isolate(), table, source, flags, data));
}
-MaybeHandle<Code> CompilationCacheCode::Lookup(Handle<SharedFunctionInfo> key) {
- // Make sure not to leak the table into the surrounding handle
- // scope. Otherwise, we risk keeping old tables around even after
- // having cleared the cache.
- HandleScope scope(isolate());
- MaybeHandle<Code> maybe_value;
- int generation = 0;
- for (; generation < generations(); generation++) {
- Handle<CompilationCacheTable> table = GetTable(generation);
- maybe_value = table->LookupCode(key);
- if (!maybe_value.is_null()) break;
- }
-
- if (maybe_value.is_null()) {
- isolate()->counters()->compilation_cache_misses()->Increment();
- return MaybeHandle<Code>();
- }
-
- Handle<Code> value = maybe_value.ToHandleChecked();
- if (generation != 0) Put(key, value); // Add to the first generation.
- isolate()->counters()->compilation_cache_hits()->Increment();
- return scope.CloseAndEscape(value);
-}
-
-void CompilationCacheCode::Put(Handle<SharedFunctionInfo> key,
- Handle<Code> value) {
- HandleScope scope(isolate());
- Handle<CompilationCacheTable> table = GetFirstTable();
- SetFirstTable(CompilationCacheTable::PutCode(isolate(), table, key, value));
-}
-
-void CompilationCacheCode::TraceAgeing() {
- DCHECK(FLAG_trace_turbo_nci);
- StdoutStream os;
- os << "NCI cache ageing: Removing oldest generation" << std::endl;
-}
-
-void CompilationCacheCode::TraceInsertion(Handle<SharedFunctionInfo> key,
- Handle<Code> value) {
- DCHECK(FLAG_trace_turbo_nci);
- StdoutStream os;
- os << "NCI cache insertion: " << Brief(*key) << ", " << Brief(*value)
- << std::endl;
-}
-
-void CompilationCacheCode::TraceHit(Handle<SharedFunctionInfo> key,
- Handle<Code> value) {
- DCHECK(FLAG_trace_turbo_nci);
- StdoutStream os;
- os << "NCI cache hit: " << Brief(*key) << ", " << Brief(*value) << std::endl;
-}
-
void CompilationCache::Remove(Handle<SharedFunctionInfo> function_info) {
if (!IsEnabledScriptAndEval()) return;
@@ -372,10 +315,6 @@ MaybeHandle<FixedArray> CompilationCache::LookupRegExp(Handle<String> source,
return reg_exp_.Lookup(source, flags);
}
-MaybeHandle<Code> CompilationCache::LookupCode(Handle<SharedFunctionInfo> sfi) {
- return code_.Lookup(sfi);
-}
-
void CompilationCache::PutScript(Handle<String> source,
LanguageMode language_mode,
Handle<SharedFunctionInfo> function_info) {
@@ -414,11 +353,6 @@ void CompilationCache::PutRegExp(Handle<String> source, JSRegExp::Flags flags,
reg_exp_.Put(source, flags, data);
}
-void CompilationCache::PutCode(Handle<SharedFunctionInfo> shared,
- Handle<Code> code) {
- code_.Put(shared, code);
-}
-
void CompilationCache::Clear() {
for (int i = 0; i < kSubCacheCount; i++) {
subcaches_[i]->Clear();
diff --git a/deps/v8/src/codegen/compilation-cache.h b/deps/v8/src/codegen/compilation-cache.h
index 0ed13e53b6..d4f4ae52dc 100644
--- a/deps/v8/src/codegen/compilation-cache.h
+++ b/deps/v8/src/codegen/compilation-cache.h
@@ -150,32 +150,6 @@ class CompilationCacheRegExp : public CompilationSubCache {
DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheRegExp);
};
-// Sub-cache for Code objects. All code inserted into this cache must
-// be usable across different native contexts.
-class CompilationCacheCode : public CompilationSubCache {
- public:
- explicit CompilationCacheCode(Isolate* isolate)
- : CompilationSubCache(isolate, kGenerations) {}
-
- MaybeHandle<Code> Lookup(Handle<SharedFunctionInfo> key);
- void Put(Handle<SharedFunctionInfo> key, Handle<Code> value);
-
- void Age() override;
-
- // TODO(jgruber,v8:8888): For simplicity we use the generational
- // approach here, but could consider something else (or more
- // generations) in the future.
- static constexpr int kGenerations = 2;
-
- static void TraceAgeing();
- static void TraceInsertion(Handle<SharedFunctionInfo> key,
- Handle<Code> value);
- static void TraceHit(Handle<SharedFunctionInfo> key, Handle<Code> value);
-
- private:
- DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheCode);
-};
-
// The compilation cache keeps shared function infos for compiled
// scripts and evals. The shared function infos are looked up using
// the source string as the key. For regular expressions the
@@ -206,8 +180,6 @@ class V8_EXPORT_PRIVATE CompilationCache {
MaybeHandle<FixedArray> LookupRegExp(Handle<String> source,
JSRegExp::Flags flags);
- MaybeHandle<Code> LookupCode(Handle<SharedFunctionInfo> sfi);
-
// Associate the (source, kind) pair to the shared function
// info. This may overwrite an existing mapping.
void PutScript(Handle<String> source, LanguageMode language_mode,
@@ -225,8 +197,6 @@ class V8_EXPORT_PRIVATE CompilationCache {
void PutRegExp(Handle<String> source, JSRegExp::Flags flags,
Handle<FixedArray> data);
- void PutCode(Handle<SharedFunctionInfo> shared, Handle<Code> code);
-
// Clear the cache - also used to initialize the cache at startup.
void Clear();
@@ -269,9 +239,8 @@ class V8_EXPORT_PRIVATE CompilationCache {
CompilationCacheEval eval_global_;
CompilationCacheEval eval_contextual_;
CompilationCacheRegExp reg_exp_;
- CompilationCacheCode code_;
- static constexpr int kSubCacheCount = 5;
+ static constexpr int kSubCacheCount = 4;
CompilationSubCache* subcaches_[kSubCacheCount];
// Current enable state of the compilation cache for scripts and eval.
diff --git a/deps/v8/src/codegen/compiler.cc b/deps/v8/src/codegen/compiler.cc
index e46639d90a..9de4ae24a3 100644
--- a/deps/v8/src/codegen/compiler.cc
+++ b/deps/v8/src/codegen/compiler.cc
@@ -559,10 +559,10 @@ void InstallInterpreterTrampolineCopy(
script_name, line_num, column_num));
}
-template <typename LocalIsolate>
+template <typename IsolateT>
void InstallUnoptimizedCode(UnoptimizedCompilationInfo* compilation_info,
Handle<SharedFunctionInfo> shared_info,
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
if (compilation_info->has_bytecode_array()) {
DCHECK(!shared_info->HasBytecodeArray()); // Only compiled once.
DCHECK(!compilation_info->has_asm_wasm_data());
@@ -585,7 +585,7 @@ void InstallUnoptimizedCode(UnoptimizedCompilationInfo* compilation_info,
#if V8_ENABLE_WEBASSEMBLY
DCHECK(compilation_info->has_asm_wasm_data());
// We should only have asm/wasm data when finalizing on the main thread.
- DCHECK((std::is_same<LocalIsolate, Isolate>::value));
+ DCHECK((std::is_same<IsolateT, Isolate>::value));
shared_info->set_asm_wasm_data(*compilation_info->asm_wasm_data());
shared_info->set_feedback_metadata(
ReadOnlyRoots(isolate).empty_feedback_metadata());
@@ -606,13 +606,15 @@ void LogUnoptimizedCompilation(Isolate* isolate,
RecordUnoptimizedCompilationStats(isolate, shared_info);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
void EnsureSharedFunctionInfosArrayOnScript(Handle<Script> script,
ParseInfo* parse_info,
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
DCHECK(parse_info->flags().is_toplevel());
- if (script->shared_function_infos().length() > 0) {
- DCHECK_EQ(script->shared_function_infos().length(),
+ if (script->shared_function_info_count() > 0) {
+ DCHECK_LE(script->shared_function_info_count(),
+ script->shared_function_infos().length());
+ DCHECK_EQ(script->shared_function_info_count(),
parse_info->max_function_literal_id() + 1);
return;
}
@@ -640,26 +642,6 @@ void UpdateSharedFunctionFlagsAfterCompilation(FunctionLiteral* literal,
shared_info.SetScopeInfo(*literal->scope()->scope_info());
}
-bool CanCompileWithBaseline(Isolate* isolate,
- Handle<SharedFunctionInfo> shared) {
- // Check if we actually have bytecode.
- if (!shared->HasBytecodeArray()) return false;
-
- // Do not optimize when debugger needs to hook into every call.
- if (isolate->debug()->needs_check_on_function_call()) return false;
-
- // Functions with breakpoints have to stay interpreted.
- if (shared->HasBreakInfo()) return false;
-
- // Do not baseline compile if sparkplug is disabled or function doesn't pass
- // sparkplug_filter.
- if (!FLAG_sparkplug || !shared->PassesFilter(FLAG_sparkplug_filter)) {
- return false;
- }
-
- return true;
-}
-
bool CompileSharedWithBaseline(Isolate* isolate,
Handle<SharedFunctionInfo> shared,
Compiler::ClearExceptionFlag flag,
@@ -671,7 +653,7 @@ bool CompileSharedWithBaseline(Isolate* isolate,
if (shared->HasBaselineData()) return true;
// Check if we actually can compile with baseline.
- if (!CanCompileWithBaseline(isolate, shared)) return false;
+ if (!CanCompileWithBaseline(isolate, *shared)) return false;
StackLimitCheck check(isolate);
if (check.JsHasOverflowed(kStackSpaceRequiredForCompilation * KB)) {
@@ -714,10 +696,10 @@ bool CompileSharedWithBaseline(Isolate* isolate,
// Finalize a single compilation job. This function can return
// RETRY_ON_MAIN_THREAD if the job cannot be finalized off-thread, in which case
// it should be safe to call it again on the main thread with the same job.
-template <typename LocalIsolate>
+template <typename IsolateT>
CompilationJob::Status FinalizeSingleUnoptimizedCompilationJob(
UnoptimizedCompilationJob* job, Handle<SharedFunctionInfo> shared_info,
- LocalIsolate* isolate,
+ IsolateT* isolate,
FinalizeUnoptimizedCompilationDataList*
finalize_unoptimized_compilation_data_list) {
UnoptimizedCompilationInfo* compilation_info = job->compilation_info();
@@ -736,9 +718,8 @@ CompilationJob::Status FinalizeSingleUnoptimizedCompilationJob(
isolate, shared_info, coverage_info, job->time_taken_to_execute(),
job->time_taken_to_finalize());
}
- DCHECK_IMPLIES(
- status == CompilationJob::RETRY_ON_MAIN_THREAD,
- (std::is_same<LocalIsolate, v8::internal::LocalIsolate>::value));
+ DCHECK_IMPLIES(status == CompilationJob::RETRY_ON_MAIN_THREAD,
+ (std::is_same<IsolateT, LocalIsolate>::value));
return status;
}
@@ -801,9 +782,9 @@ bool RecursivelyExecuteUnoptimizedCompilationJobs(
return true;
}
-template <typename LocalIsolate>
+template <typename IsolateT>
bool IterativelyExecuteAndFinalizeUnoptimizedCompilationJobs(
- LocalIsolate* isolate, Handle<SharedFunctionInfo> outer_shared_info,
+ IsolateT* isolate, Handle<SharedFunctionInfo> outer_shared_info,
Handle<Script> script, ParseInfo* parse_info,
AccountingAllocator* allocator, IsCompiledScope* is_compiled_scope,
FinalizeUnoptimizedCompilationDataList*
@@ -849,7 +830,7 @@ bool IterativelyExecuteAndFinalizeUnoptimizedCompilationJobs(
case CompilationJob::RETRY_ON_MAIN_THREAD:
// This should not happen on the main thread.
- DCHECK((!std::is_same<LocalIsolate, Isolate>::value));
+ DCHECK((!std::is_same<IsolateT, Isolate>::value));
DCHECK_NOT_NULL(jobs_to_retry_finalization_on_main_thread);
// Clear the literal and ParseInfo to prevent further attempts to
@@ -943,11 +924,9 @@ bool FinalizeDeferredUnoptimizedCompilationJobs(
V8_WARN_UNUSED_RESULT MaybeHandle<Code> GetCodeFromOptimizedCodeCache(
Handle<JSFunction> function, BytecodeOffset osr_offset,
CodeKind code_kind) {
- RuntimeCallTimerScope runtimeTimer(
- function->GetIsolate(),
- RuntimeCallCounterId::kCompileGetFromOptimizedCodeMap);
- Handle<SharedFunctionInfo> shared(function->shared(), function->GetIsolate());
Isolate* isolate = function->GetIsolate();
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCompileGetFromOptimizedCodeMap);
+ Handle<SharedFunctionInfo> shared(function->shared(), isolate);
DisallowGarbageCollection no_gc;
Code code;
if (osr_offset.IsNone() && function->has_feedback_vector()) {
@@ -975,8 +954,6 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Code> GetCodeFromOptimizedCodeCache(
}
void ClearOptimizedCodeCache(OptimizedCompilationInfo* compilation_info) {
- DCHECK(!CodeKindIsNativeContextIndependentJSFunction(
- compilation_info->code_kind()));
Handle<JSFunction> function = compilation_info->closure();
if (compilation_info->osr_offset().IsNone()) {
Handle<FeedbackVector> vector =
@@ -1015,31 +992,6 @@ void InsertCodeIntoOptimizedCodeCache(
}
}
-void InsertCodeIntoCompilationCache(Isolate* isolate,
- OptimizedCompilationInfo* info) {
- if (!CodeKindIsNativeContextIndependentJSFunction(info->code_kind())) return;
-
- DCHECK(info->osr_offset().IsNone());
-
- Handle<Code> code = info->code();
- DCHECK(!info->function_context_specializing());
-
- Handle<SharedFunctionInfo> sfi = info->shared_info();
- CompilationCache* cache = isolate->compilation_cache();
- cache->PutCode(sfi, code);
- DCHECK(!cache->LookupCode(sfi).is_null());
-
- sfi->set_may_have_cached_code(true);
-
- if (FLAG_trace_turbo_nci) CompilationCacheCode::TraceInsertion(sfi, code);
-}
-
-V8_WARN_UNUSED_RESULT MaybeHandle<Code> GetCodeFromCompilationCache(
- Isolate* isolate, Handle<SharedFunctionInfo> shared) {
- if (!shared->may_have_cached_code()) return {};
- return shared->TryGetCachedCode(isolate);
-}
-
// Runs PrepareJob in the proper compilation & canonical scopes. Handles will be
// allocated in a persistent handle scope that is detached and handed off to the
// {compilation_info} after PrepareJob.
@@ -1054,8 +1006,7 @@ bool PrepareJobWithHandleScope(OptimizedCompilationJob* job, Isolate* isolate,
bool GetOptimizedCodeNow(OptimizedCompilationJob* job, Isolate* isolate,
OptimizedCompilationInfo* compilation_info) {
TimerEventScope<TimerEventRecompileSynchronous> timer(isolate);
- RuntimeCallTimerScope runtimeTimer(
- isolate, RuntimeCallCounterId::kOptimizeNonConcurrent);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kOptimizeNonConcurrent);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.OptimizeNonConcurrent");
@@ -1111,8 +1062,7 @@ bool GetOptimizedCodeLater(std::unique_ptr<OptimizedCompilationJob> job,
}
TimerEventScope<TimerEventRecompileSynchronous> timer(isolate);
- RuntimeCallTimerScope runtimeTimer(
- isolate, RuntimeCallCounterId::kOptimizeConcurrentPrepare);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kOptimizeConcurrentPrepare);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.OptimizeConcurrentPrepare");
@@ -1134,11 +1084,10 @@ bool GetOptimizedCodeLater(std::unique_ptr<OptimizedCompilationJob> job,
function->SetOptimizationMarker(OptimizationMarker::kInOptimizationQueue);
}
- // Note: Usually the active tier is expected to be Ignition or NCI at this
- // point (in other words we don't expect to optimize if the function is
- // already TF-optimized). There is a special case for OSR though, for which
- // we *can* reach this point even if we've already generated non-OSR'd TF
- // code.
+ // Note: Usually the active tier is expected to be Ignition at this point (in
+ // other words we don't expect to optimize if the function is already
+ // TF-optimized). There is a special case for OSR though, for which we *can*
+ // reach this point even if we've already generated non-OSR'd TF code.
DCHECK(function->shared().HasBytecodeArray());
return true;
}
@@ -1148,13 +1097,7 @@ bool GetOptimizedCodeLater(std::unique_ptr<OptimizedCompilationJob> job,
Handle<Code> ContinuationForConcurrentOptimization(
Isolate* isolate, Handle<JSFunction> function) {
Handle<Code> cached_code;
- if (FLAG_turbo_nci && function->NextTier() == CodeKindForTopTier() &&
- GetCodeFromCompilationCache(isolate, handle(function->shared(), isolate))
- .ToHandle(&cached_code)) {
- // Tiering up to Turbofan and cached optimized code exists. Continue
- // execution there until TF optimization has finished.
- return cached_code;
- } else if (FLAG_turboprop && function->HasAvailableOptimizedCode()) {
+ if (FLAG_turboprop && function->HasAvailableOptimizedCode()) {
DCHECK(!FLAG_turboprop_as_toptier);
DCHECK(function->NextTier() == CodeKind::TURBOFAN);
// It is possible that we have marked a closure for TurboFan optimization
@@ -1179,23 +1122,26 @@ Handle<Code> ContinuationForConcurrentOptimization(
return BUILTIN_CODE(isolate, InterpreterEntryTrampoline);
}
+enum class GetOptimizedCodeResultHandling {
+ // Default behavior, i.e. install the result, insert into caches, etc.
+ kDefault,
+ // Used only for stress testing. The compilation result should be discarded.
+ kDiscardForTesting,
+};
+
MaybeHandle<Code> GetOptimizedCode(
- Handle<JSFunction> function, ConcurrencyMode mode, CodeKind code_kind,
- BytecodeOffset osr_offset = BytecodeOffset::None(),
- JavaScriptFrame* osr_frame = nullptr) {
+ Isolate* isolate, Handle<JSFunction> function, ConcurrencyMode mode,
+ CodeKind code_kind, BytecodeOffset osr_offset = BytecodeOffset::None(),
+ JavaScriptFrame* osr_frame = nullptr,
+ GetOptimizedCodeResultHandling result_handling =
+ GetOptimizedCodeResultHandling::kDefault) {
DCHECK(CodeKindIsOptimizedJSFunction(code_kind));
- Isolate* isolate = function->GetIsolate();
Handle<SharedFunctionInfo> shared(function->shared(), isolate);
// Make sure we clear the optimization marker on the function so that we
// don't try to re-optimize.
- // If compiling for NCI (which does not use the optimization marker), don't
- // touch the marker to avoid interfering with Turbofan compilation.
- if (!CodeKindIsNativeContextIndependentJSFunction(code_kind) &&
- function->HasOptimizationMarker()) {
- function->ClearOptimizationMarker();
- }
+ if (function->HasOptimizationMarker()) function->ClearOptimizationMarker();
if (shared->optimization_disabled() &&
shared->disable_optimization_reason() == BailoutReason::kNeverOptimize) {
@@ -1233,25 +1179,9 @@ MaybeHandle<Code> GetOptimizedCode(
DCHECK(shared->is_compiled());
function->feedback_vector().set_profiler_ticks(0);
- // Check the compilation cache (stored on the Isolate, shared between native
- // contexts).
- if (CodeKindIsNativeContextIndependentJSFunction(code_kind)) {
- DCHECK(osr_offset.IsNone());
-
- Handle<Code> cached_code;
- if (GetCodeFromCompilationCache(isolate, shared).ToHandle(&cached_code)) {
- CHECK_EQ(cached_code->kind(), CodeKind::NATIVE_CONTEXT_INDEPENDENT);
- if (FLAG_trace_turbo_nci) {
- CompilationCacheCode::TraceHit(shared, cached_code);
- }
- return cached_code;
- }
- }
-
VMState<COMPILER> state(isolate);
TimerEventScope<TimerEventOptimizeCode> optimize_code_timer(isolate);
- RuntimeCallTimerScope runtimeTimer(isolate,
- RuntimeCallCounterId::kOptimizeCode);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kOptimizeCode);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.OptimizeCode");
DCHECK(!isolate->has_pending_exception());
@@ -1265,6 +1195,10 @@ MaybeHandle<Code> GetOptimizedCode(
has_script, osr_offset, osr_frame));
OptimizedCompilationInfo* compilation_info = job->compilation_info();
+ if (result_handling == GetOptimizedCodeResultHandling::kDiscardForTesting) {
+ compilation_info->set_discard_result_for_testing();
+ }
+
// Prepare the job and launch concurrent compilation, or compile now.
if (mode == ConcurrencyMode::kConcurrent) {
if (GetOptimizedCodeLater(std::move(job), isolate, compilation_info,
@@ -1274,7 +1208,6 @@ MaybeHandle<Code> GetOptimizedCode(
} else {
DCHECK_EQ(mode, ConcurrencyMode::kNotConcurrent);
if (GetOptimizedCodeNow(job.get(), isolate, compilation_info)) {
- InsertCodeIntoCompilationCache(isolate, compilation_info);
return compilation_info->code();
}
}
@@ -1283,13 +1216,30 @@ MaybeHandle<Code> GetOptimizedCode(
return {};
}
+// When --stress-concurrent-inlining is enabled, spawn concurrent jobs in
+// addition to non-concurrent compiles to increase coverage in mjsunit tests
+// (where most interesting compiles are non-concurrent). The result of the
+// compilation is thrown out.
+void SpawnDuplicateConcurrentJobForStressTesting(Isolate* isolate,
+ Handle<JSFunction> function,
+ ConcurrencyMode mode,
+ CodeKind code_kind) {
+ DCHECK(FLAG_stress_concurrent_inlining &&
+ isolate->concurrent_recompilation_enabled() &&
+ mode == ConcurrencyMode::kNotConcurrent &&
+ isolate->node_observer() == nullptr);
+ USE(GetOptimizedCode(isolate, function, ConcurrencyMode::kConcurrent,
+ code_kind, BytecodeOffset::None(), nullptr,
+ GetOptimizedCodeResultHandling::kDiscardForTesting));
+}
+
bool FailAndClearPendingException(Isolate* isolate) {
isolate->clear_pending_exception();
return false;
}
-template <typename LocalIsolate>
-bool PreparePendingException(LocalIsolate* isolate, ParseInfo* parse_info) {
+template <typename IsolateT>
+bool PreparePendingException(IsolateT* isolate, ParseInfo* parse_info) {
if (parse_info->pending_error_handler()->has_pending_error()) {
parse_info->pending_error_handler()->PrepareErrors(
isolate, parse_info->ast_value_factory());
@@ -1389,8 +1339,7 @@ void FinalizeUnoptimizedScriptCompilation(
FunctionLiteral* literal = it.first;
CompilerDispatcher::JobId job_id = it.second;
MaybeHandle<SharedFunctionInfo> maybe_shared_for_task =
- script->FindSharedFunctionInfo(isolate,
- literal->function_literal_id());
+ Script::FindSharedFunctionInfo(script, isolate, literal);
Handle<SharedFunctionInfo> shared_for_task;
if (maybe_shared_for_task.ToHandle(&shared_for_task)) {
dispatcher->RegisterSharedFunctionInfo(job_id, *shared_for_task);
@@ -1412,7 +1361,7 @@ void CompileAllWithBaseline(Isolate* isolate,
Handle<SharedFunctionInfo> shared_info = finalize_data.function_handle();
IsCompiledScope is_compiled_scope(*shared_info, isolate);
if (!is_compiled_scope.is_compiled()) continue;
- if (!CanCompileWithBaseline(isolate, shared_info)) continue;
+ if (!CanCompileWithBaseline(isolate, *shared_info)) continue;
CompileSharedWithBaseline(isolate, shared_info, Compiler::CLEAR_EXCEPTION,
&is_compiled_scope);
}
@@ -1420,9 +1369,9 @@ void CompileAllWithBaseline(Isolate* isolate,
// Create shared function info for top level and shared function infos array for
// inner functions.
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SharedFunctionInfo> CreateTopLevelSharedFunctionInfo(
- ParseInfo* parse_info, Handle<Script> script, LocalIsolate* isolate) {
+ ParseInfo* parse_info, Handle<Script> script, IsolateT* isolate) {
EnsureSharedFunctionInfosArrayOnScript(script, parse_info, isolate);
DCHECK_EQ(kNoSourcePosition,
parse_info->literal()->function_token_position());
@@ -1440,10 +1389,9 @@ MaybeHandle<SharedFunctionInfo> CompileToplevel(
PostponeInterruptsScope postpone(isolate);
DCHECK(!isolate->native_context().is_null());
- RuntimeCallTimerScope runtimeTimer(
- isolate, parse_info->flags().is_eval()
- ? RuntimeCallCounterId::kCompileEval
- : RuntimeCallCounterId::kCompileScript);
+ RCS_SCOPE(isolate, parse_info->flags().is_eval()
+ ? RuntimeCallCounterId::kCompileEval
+ : RuntimeCallCounterId::kCompileScript);
VMState<BYTECODE_COMPILER> state(isolate);
if (parse_info->literal() == nullptr &&
!parsing::ParseProgram(parse_info, script, maybe_outer_scope_info,
@@ -1494,6 +1442,7 @@ MaybeHandle<SharedFunctionInfo> CompileToplevel(
return shared_info;
}
+#ifdef V8_RUNTIME_CALL_STATS
RuntimeCallCounterId RuntimeCallCounterIdForCompileBackground(
ParseInfo* parse_info) {
if (parse_info->flags().is_toplevel()) {
@@ -1504,6 +1453,7 @@ RuntimeCallCounterId RuntimeCallCounterIdForCompileBackground(
}
return RuntimeCallCounterId::kCompileBackgroundFunction;
}
+#endif // V8_RUNTIME_CALL_STATS
MaybeHandle<SharedFunctionInfo> CompileAndFinalizeOnBackgroundThread(
ParseInfo* parse_info, AccountingAllocator* allocator,
@@ -1514,9 +1464,8 @@ MaybeHandle<SharedFunctionInfo> CompileAndFinalizeOnBackgroundThread(
IsCompiledScope* is_compiled_scope) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompileCodeBackground");
- RuntimeCallTimerScope runtimeTimer(
- parse_info->runtime_call_stats(),
- RuntimeCallCounterIdForCompileBackground(parse_info));
+ RCS_SCOPE(parse_info->runtime_call_stats(),
+ RuntimeCallCounterIdForCompileBackground(parse_info));
Handle<SharedFunctionInfo> shared_info =
CreateTopLevelSharedFunctionInfo(parse_info, script, isolate);
@@ -1541,9 +1490,8 @@ void CompileOnBackgroundThread(ParseInfo* parse_info,
DisallowHeapAccess no_heap_access;
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompileCodeBackground");
- RuntimeCallTimerScope runtimeTimer(
- parse_info->runtime_call_stats(),
- RuntimeCallCounterIdForCompileBackground(parse_info));
+ RCS_SCOPE(parse_info->runtime_call_stats(),
+ RuntimeCallCounterIdForCompileBackground(parse_info));
// Generate the unoptimized bytecode or asm-js data.
DCHECK(jobs->empty());
@@ -1557,6 +1505,7 @@ void CompileOnBackgroundThread(ParseInfo* parse_info,
// Character stream shouldn't be used again.
parse_info->ResetCharacterStream();
}
+
} // namespace
CompilationHandleScope::~CompilationHandleScope() {
@@ -1660,8 +1609,8 @@ class V8_NODISCARD OffThreadParseInfoScope {
ParseInfo* parse_info,
WorkerThreadRuntimeCallStats* worker_thread_runtime_stats, int stack_size)
: parse_info_(parse_info),
- original_runtime_call_stats_(parse_info_->runtime_call_stats()),
original_stack_limit_(parse_info_->stack_limit()),
+ original_runtime_call_stats_(parse_info_->runtime_call_stats()),
worker_thread_scope_(worker_thread_runtime_stats) {
parse_info_->SetPerThreadState(GetCurrentStackPosition() - stack_size * KB,
worker_thread_scope_.Get());
@@ -1678,8 +1627,8 @@ class V8_NODISCARD OffThreadParseInfoScope {
private:
ParseInfo* parse_info_;
- RuntimeCallStats* original_runtime_call_stats_;
uintptr_t original_stack_limit_;
+ RuntimeCallStats* original_runtime_call_stats_;
WorkerThreadRuntimeCallStatsScope worker_thread_scope_;
};
@@ -1692,9 +1641,8 @@ void BackgroundCompileTask::Run() {
stack_size_);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"BackgroundCompileTask::Run");
- RuntimeCallTimerScope runtimeTimer(
- info_->runtime_call_stats(),
- RuntimeCallCounterId::kCompileBackgroundCompileTask);
+ RCS_SCOPE(info_->runtime_call_stats(),
+ RuntimeCallCounterId::kCompileBackgroundCompileTask);
// Update the character stream's runtime call stats.
info_->character_stream()->set_runtime_call_stats(
@@ -1817,8 +1765,7 @@ bool Compiler::CollectSourcePositions(Isolate* isolate,
DCHECK(!isolate->has_pending_exception());
VMState<BYTECODE_COMPILER> state(isolate);
PostponeInterruptsScope postpone(isolate);
- RuntimeCallTimerScope runtimeTimer(
- isolate, RuntimeCallCounterId::kCompileCollectSourcePositions);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCompileCollectSourcePositions);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CollectSourcePositions");
HistogramTimerScope timer(isolate->counters()->collect_source_positions());
@@ -1894,8 +1841,7 @@ bool Compiler::Compile(Isolate* isolate, Handle<SharedFunctionInfo> shared_info,
VMState<BYTECODE_COMPILER> state(isolate);
PostponeInterruptsScope postpone(isolate);
TimerEventScope<TimerEventCompileCode> compile_timer(isolate);
- RuntimeCallTimerScope runtimeTimer(isolate,
- RuntimeCallCounterId::kCompileFunction);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCompileFunction);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileCode");
AggregatedHistogramTimerScope timer(isolate->counters()->compile_lazy());
@@ -2000,9 +1946,19 @@ bool Compiler::Compile(Isolate* isolate, Handle<JSFunction> function,
CompilerTracer::TraceOptimizeForAlwaysOpt(isolate, function,
CodeKindForTopTier());
+ const CodeKind code_kind = CodeKindForTopTier();
+ const ConcurrencyMode concurrency_mode = ConcurrencyMode::kNotConcurrent;
+
+ if (FLAG_stress_concurrent_inlining &&
+ isolate->concurrent_recompilation_enabled() &&
+ concurrency_mode == ConcurrencyMode::kNotConcurrent &&
+ isolate->node_observer() == nullptr) {
+ SpawnDuplicateConcurrentJobForStressTesting(isolate, function,
+ concurrency_mode, code_kind);
+ }
+
Handle<Code> maybe_code;
- if (GetOptimizedCode(function, ConcurrencyMode::kNotConcurrent,
- CodeKindForTopTier())
+ if (GetOptimizedCode(isolate, function, concurrency_mode, code_kind)
.ToHandle(&maybe_code)) {
code = maybe_code;
}
@@ -2058,8 +2014,8 @@ bool Compiler::FinalizeBackgroundCompileTask(
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.FinalizeBackgroundCompileTask");
- RuntimeCallTimerScope runtimeTimer(
- isolate, RuntimeCallCounterId::kCompileFinalizeBackgroundCompileTask);
+ RCS_SCOPE(isolate,
+ RuntimeCallCounterId::kCompileFinalizeBackgroundCompileTask);
HandleScope scope(isolate);
ParseInfo* parse_info = task->info();
DCHECK(!parse_info->flags().is_toplevel());
@@ -2099,8 +2055,16 @@ bool Compiler::CompileOptimized(Isolate* isolate, Handle<JSFunction> function,
DCHECK(CodeKindIsOptimizedJSFunction(code_kind));
DCHECK(AllowCompilation::IsAllowed(isolate));
+ if (FLAG_stress_concurrent_inlining &&
+ isolate->concurrent_recompilation_enabled() &&
+ mode == ConcurrencyMode::kNotConcurrent &&
+ isolate->node_observer() == nullptr) {
+ SpawnDuplicateConcurrentJobForStressTesting(isolate, function, mode,
+ code_kind);
+ }
+
Handle<Code> code;
- if (!GetOptimizedCode(function, mode, code_kind).ToHandle(&code)) {
+ if (!GetOptimizedCode(isolate, function, mode, code_kind).ToHandle(&code)) {
// Optimization failed, get the existing code. We could have optimized code
// from a lower tier here. Unoptimized code must exist already if we are
// optimizing.
@@ -2110,23 +2074,18 @@ bool Compiler::CompileOptimized(Isolate* isolate, Handle<JSFunction> function,
code = ContinuationForConcurrentOptimization(isolate, function);
}
- if (!CodeKindIsNativeContextIndependentJSFunction(code_kind)) {
- function->set_code(*code, kReleaseStore);
- }
+ function->set_code(*code, kReleaseStore);
// Check postconditions on success.
DCHECK(!isolate->has_pending_exception());
DCHECK(function->shared().is_compiled());
- DCHECK(CodeKindIsNativeContextIndependentJSFunction(code_kind) ||
- function->is_compiled());
- if (!CodeKindIsNativeContextIndependentJSFunction(code_kind)) {
- DCHECK_IMPLIES(function->HasOptimizationMarker(),
- function->IsInOptimizationQueue());
- DCHECK_IMPLIES(function->HasOptimizationMarker(),
- function->ChecksOptimizationMarker());
- DCHECK_IMPLIES(function->IsInOptimizationQueue(),
- mode == ConcurrencyMode::kConcurrent);
- }
+ DCHECK(function->is_compiled());
+ DCHECK_IMPLIES(function->HasOptimizationMarker(),
+ function->IsInOptimizationQueue());
+ DCHECK_IMPLIES(function->HasOptimizationMarker(),
+ function->ChecksOptimizationMarker());
+ DCHECK_IMPLIES(function->IsInOptimizationQueue(),
+ mode == ConcurrencyMode::kConcurrent);
return true;
}
@@ -2281,8 +2240,7 @@ bool CodeGenerationFromStringsAllowed(Isolate* isolate, Handle<Context> context,
// Callback set. Let it decide if code generation is allowed.
VMState<EXTERNAL> state(isolate);
- RuntimeCallTimerScope timer(
- isolate, RuntimeCallCounterId::kCodeGenerationFromStringsCallbacks);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCodeGenerationFromStringsCallbacks);
AllowCodeGenerationFromStringsCallback callback =
isolate->allow_code_gen_callback();
return callback(v8::Utils::ToLocal(context), v8::Utils::ToLocal(source));
@@ -2301,8 +2259,7 @@ bool ModifyCodeGenerationFromStrings(Isolate* isolate, Handle<Context> context,
// Callback set. Run it, and use the return value as source, or block
// execution if it's not set.
VMState<EXTERNAL> state(isolate);
- RuntimeCallTimerScope timer(
- isolate, RuntimeCallCounterId::kCodeGenerationFromStringsCallbacks);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCodeGenerationFromStringsCallbacks);
ModifyCodeGenerationFromStringsResult result =
isolate->modify_code_gen_callback()
? isolate->modify_code_gen_callback()(v8::Utils::ToLocal(context),
@@ -2881,8 +2838,7 @@ MaybeHandle<SharedFunctionInfo> Compiler::GetSharedFunctionInfoForScript(
compile_timer.set_consuming_code_cache();
// Then check cached code provided by embedder.
HistogramTimerScope timer(isolate->counters()->compile_deserialize());
- RuntimeCallTimerScope runtimeTimer(
- isolate, RuntimeCallCounterId::kCompileDeserialize);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCompileDeserialize);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompileDeserialize");
Handle<SharedFunctionInfo> inner_result;
@@ -2894,7 +2850,6 @@ MaybeHandle<SharedFunctionInfo> Compiler::GetSharedFunctionInfoForScript(
is_compiled_scope = inner_result->is_compiled_scope(isolate);
DCHECK(is_compiled_scope.is_compiled());
compilation_cache->PutScript(source, language_mode, inner_result);
- Handle<Script> script(Script::cast(inner_result->script()), isolate);
maybe_result = inner_result;
} else {
// Deserializer failed. Fall through to compile.
@@ -2970,8 +2925,7 @@ MaybeHandle<JSFunction> Compiler::GetWrappedFunction(
compile_timer.set_consuming_code_cache();
// Then check cached code provided by embedder.
HistogramTimerScope timer(isolate->counters()->compile_deserialize());
- RuntimeCallTimerScope runtimeTimer(
- isolate, RuntimeCallCounterId::kCompileDeserialize);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCompileDeserialize);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompileDeserialize");
maybe_result = CodeSerializer::Deserialize(isolate, cached_data, source,
@@ -3074,8 +3028,8 @@ Compiler::GetSharedFunctionInfoForStreamedScript(
Handle<Script> script;
if (FLAG_finalize_streaming_on_background && !origin_options.IsModule()) {
- RuntimeCallTimerScope runtimeTimerScope(
- isolate, RuntimeCallCounterId::kCompilePublishBackgroundFinalization);
+ RCS_SCOPE(isolate,
+ RuntimeCallCounterId::kCompilePublishBackgroundFinalization);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.OffThreadFinalization.Publish");
@@ -3163,15 +3117,14 @@ Compiler::GetSharedFunctionInfoForStreamedScript(
}
// static
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SharedFunctionInfo> Compiler::GetSharedFunctionInfo(
- FunctionLiteral* literal, Handle<Script> script, LocalIsolate* isolate) {
+ FunctionLiteral* literal, Handle<Script> script, IsolateT* isolate) {
// Precondition: code has been parsed and scopes have been analyzed.
MaybeHandle<SharedFunctionInfo> maybe_existing;
// Find any previously allocated shared function info for the given literal.
- maybe_existing =
- script->FindSharedFunctionInfo(isolate, literal->function_literal_id());
+ maybe_existing = Script::FindSharedFunctionInfo(script, isolate, literal);
// If we found an existing shared function info, return it.
Handle<SharedFunctionInfo> existing;
@@ -3215,12 +3168,13 @@ template Handle<SharedFunctionInfo> Compiler::GetSharedFunctionInfo(
FunctionLiteral* literal, Handle<Script> script, LocalIsolate* isolate);
// static
-MaybeHandle<Code> Compiler::GetOptimizedCodeForOSR(Handle<JSFunction> function,
+MaybeHandle<Code> Compiler::GetOptimizedCodeForOSR(Isolate* isolate,
+ Handle<JSFunction> function,
BytecodeOffset osr_offset,
JavaScriptFrame* osr_frame) {
DCHECK(!osr_offset.IsNone());
DCHECK_NOT_NULL(osr_frame);
- return GetOptimizedCode(function, ConcurrencyMode::kNotConcurrent,
+ return GetOptimizedCode(isolate, function, ConcurrencyMode::kNotConcurrent,
CodeKindForOSR(), osr_offset, osr_frame);
}
@@ -3233,17 +3187,14 @@ bool Compiler::FinalizeOptimizedCompilationJob(OptimizedCompilationJob* job,
OptimizedCompilationInfo* compilation_info = job->compilation_info();
TimerEventScope<TimerEventRecompileSynchronous> timer(isolate);
- RuntimeCallTimerScope runtimeTimer(
- isolate, RuntimeCallCounterId::kOptimizeConcurrentFinalize);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kOptimizeConcurrentFinalize);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.OptimizeConcurrentFinalize");
Handle<SharedFunctionInfo> shared = compilation_info->shared_info();
- CodeKind code_kind = compilation_info->code_kind();
- const bool should_install_code_on_function =
- !CodeKindIsNativeContextIndependentJSFunction(code_kind);
- if (should_install_code_on_function) {
+ const bool use_result = !compilation_info->discard_result_for_testing();
+ if (V8_LIKELY(use_result)) {
// Reset profiler ticks, function is no longer considered hot.
compilation_info->closure()->feedback_vector().set_profiler_ticks(0);
}
@@ -3263,10 +3214,9 @@ bool Compiler::FinalizeOptimizedCompilationJob(OptimizedCompilationJob* job,
isolate);
job->RecordFunctionCompilation(CodeEventListener::LAZY_COMPILE_TAG,
isolate);
- InsertCodeIntoOptimizedCodeCache(compilation_info);
- InsertCodeIntoCompilationCache(isolate, compilation_info);
- CompilerTracer::TraceCompletedJob(isolate, compilation_info);
- if (should_install_code_on_function) {
+ if (V8_LIKELY(use_result)) {
+ InsertCodeIntoOptimizedCodeCache(compilation_info);
+ CompilerTracer::TraceCompletedJob(isolate, compilation_info);
compilation_info->closure()->set_code(*compilation_info->code(),
kReleaseStore);
}
@@ -3276,11 +3226,12 @@ bool Compiler::FinalizeOptimizedCompilationJob(OptimizedCompilationJob* job,
DCHECK_EQ(job->state(), CompilationJob::State::kFailed);
CompilerTracer::TraceAbortedJob(isolate, compilation_info);
- compilation_info->closure()->set_code(shared->GetCode(), kReleaseStore);
- // Clear the InOptimizationQueue marker, if it exists.
- if (!CodeKindIsNativeContextIndependentJSFunction(code_kind) &&
- compilation_info->closure()->IsInOptimizationQueue()) {
- compilation_info->closure()->ClearOptimizationMarker();
+ if (V8_LIKELY(use_result)) {
+ compilation_info->closure()->set_code(shared->GetCode(), kReleaseStore);
+ // Clear the InOptimizationQueue marker, if it exists.
+ if (compilation_info->closure()->IsInOptimizationQueue()) {
+ compilation_info->closure()->ClearOptimizationMarker();
+ }
}
return CompilationJob::FAILED;
}
diff --git a/deps/v8/src/codegen/compiler.h b/deps/v8/src/codegen/compiler.h
index 7ff1b5eecd..e7d05b3ba3 100644
--- a/deps/v8/src/codegen/compiler.h
+++ b/deps/v8/src/codegen/compiler.h
@@ -190,9 +190,10 @@ class V8_EXPORT_PRIVATE Compiler : public AllStatic {
// Create a shared function info object for the given function literal
// node (the code may be lazily compiled).
- template <typename LocalIsolate>
- static Handle<SharedFunctionInfo> GetSharedFunctionInfo(
- FunctionLiteral* node, Handle<Script> script, LocalIsolate* isolate);
+ template <typename IsolateT>
+ static Handle<SharedFunctionInfo> GetSharedFunctionInfo(FunctionLiteral* node,
+ Handle<Script> script,
+ IsolateT* isolate);
// ===========================================================================
// The following family of methods provides support for OSR. Code generated
@@ -205,7 +206,7 @@ class V8_EXPORT_PRIVATE Compiler : public AllStatic {
// Generate and return optimized code for OSR, or empty handle on failure.
V8_WARN_UNUSED_RESULT static MaybeHandle<Code> GetOptimizedCodeForOSR(
- Handle<JSFunction> function, BytecodeOffset osr_offset,
+ Isolate* isolate, Handle<JSFunction> function, BytecodeOffset osr_offset,
JavaScriptFrame* osr_frame);
};
diff --git a/deps/v8/src/codegen/constants-arch.h b/deps/v8/src/codegen/constants-arch.h
index cea8dc068f..2417be5d4d 100644
--- a/deps/v8/src/codegen/constants-arch.h
+++ b/deps/v8/src/codegen/constants-arch.h
@@ -6,23 +6,23 @@
#define V8_CODEGEN_CONSTANTS_ARCH_H_
#if V8_TARGET_ARCH_ARM
-#include "src/codegen/arm/constants-arm.h" // NOLINT
+#include "src/codegen/arm/constants-arm.h"
#elif V8_TARGET_ARCH_ARM64
-#include "src/codegen/arm64/constants-arm64.h" // NOLINT
+#include "src/codegen/arm64/constants-arm64.h"
#elif V8_TARGET_ARCH_IA32
-#include "src/codegen/ia32/constants-ia32.h" // NOLINT
+#include "src/codegen/ia32/constants-ia32.h"
#elif V8_TARGET_ARCH_MIPS
-#include "src/codegen/mips/constants-mips.h" // NOLINT
+#include "src/codegen/mips/constants-mips.h"
#elif V8_TARGET_ARCH_MIPS64
-#include "src/codegen/mips64/constants-mips64.h" // NOLINT
+#include "src/codegen/mips64/constants-mips64.h"
#elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
-#include "src/codegen/ppc/constants-ppc.h" // NOLINT
+#include "src/codegen/ppc/constants-ppc.h"
#elif V8_TARGET_ARCH_S390
-#include "src/codegen/s390/constants-s390.h" // NOLINT
+#include "src/codegen/s390/constants-s390.h"
#elif V8_TARGET_ARCH_X64
-#include "src/codegen/x64/constants-x64.h" // NOLINT
+#include "src/codegen/x64/constants-x64.h"
#elif V8_TARGET_ARCH_RISCV64
-#include "src/codegen/riscv64/constants-riscv64.h" // NOLINT
+#include "src/codegen/riscv64/constants-riscv64.h"
#else
#error Unsupported target architecture.
#endif
diff --git a/deps/v8/src/codegen/cpu-features.h b/deps/v8/src/codegen/cpu-features.h
index b9a450ea3a..6833ee60d0 100644
--- a/deps/v8/src/codegen/cpu-features.h
+++ b/deps/v8/src/codegen/cpu-features.h
@@ -109,6 +109,9 @@ class V8_EXPORT_PRIVATE CpuFeatures : public AllStatic {
return (supported_ & (1u << f)) != 0;
}
+ static void SetSupported(CpuFeature f) { supported_ |= 1u << f; }
+ static void SetUnsupported(CpuFeature f) { supported_ &= ~(1u << f); }
+
static bool SupportsWasmSimd128();
static inline bool SupportsOptimizer();
diff --git a/deps/v8/src/codegen/external-reference-table.cc b/deps/v8/src/codegen/external-reference-table.cc
index 2741bd8ec2..6c109861a2 100644
--- a/deps/v8/src/codegen/external-reference-table.cc
+++ b/deps/v8/src/codegen/external-reference-table.cc
@@ -33,20 +33,24 @@ namespace internal {
// clang-format off
const char* const
ExternalReferenceTable::ref_name_[ExternalReferenceTable::kSize] = {
+ // === Isolate independent ===
// Special references:
"nullptr",
- // External references:
+ // External references (without isolate):
EXTERNAL_REFERENCE_LIST(ADD_EXT_REF_NAME)
- EXTERNAL_REFERENCE_LIST_WITH_ISOLATE(ADD_EXT_REF_NAME)
// Builtins:
BUILTIN_LIST_C(ADD_BUILTIN_NAME)
// Runtime functions:
FOR_EACH_INTRINSIC(ADD_RUNTIME_FUNCTION)
- // Isolate addresses:
- FOR_EACH_ISOLATE_ADDRESS_NAME(ADD_ISOLATE_ADDR)
// Accessors:
ACCESSOR_INFO_LIST_GENERATOR(ADD_ACCESSOR_INFO_NAME, /* not used */)
ACCESSOR_SETTER_LIST(ADD_ACCESSOR_SETTER_NAME)
+
+ // === Isolate dependent ===
+ // External references (with isolate):
+ EXTERNAL_REFERENCE_LIST_WITH_ISOLATE(ADD_EXT_REF_NAME)
+ // Isolate addresses:
+ FOR_EACH_ISOLATE_ADDRESS_NAME(ADD_ISOLATE_ADDR)
// Stub cache:
"Load StubCache::primary_->key",
"Load StubCache::primary_->value",
@@ -72,6 +76,11 @@ const char* const
#undef ADD_ACCESSOR_SETTER_NAME
#undef ADD_STATS_COUNTER_NAME
+namespace {
+static Address ref_addr_isolate_independent_
+ [ExternalReferenceTable::kSizeIsolateIndependent] = {0};
+} // namespace
+
// Forward declarations for C++ builtins.
#define FORWARD_DECLARE(Name) \
Address Builtin_##Name(int argc, Address* args, Isolate* isolate);
@@ -81,13 +90,10 @@ BUILTIN_LIST_C(FORWARD_DECLARE)
void ExternalReferenceTable::Init(Isolate* isolate) {
int index = 0;
- // kNullAddress is preserved through serialization/deserialization.
- Add(kNullAddress, &index);
- AddReferences(isolate, &index);
- AddBuiltins(&index);
- AddRuntimeFunctions(&index);
+ CopyIsolateIndependentReferences(&index);
+
+ AddIsolateDependentReferences(isolate, &index);
AddIsolateAddresses(isolate, &index);
- AddAccessors(&index);
AddStubCache(isolate, &index);
AddNativeCodeStatsCounters(isolate, &index);
is_initialized_ = static_cast<uint32_t>(true);
@@ -108,28 +114,66 @@ const char* ExternalReferenceTable::ResolveSymbol(void* address) {
#endif // SYMBOLIZE_FUNCTION
}
+void ExternalReferenceTable::InitializeOncePerProcess() {
+ int index = 0;
+
+ // kNullAddress is preserved through serialization/deserialization.
+ AddIsolateIndependent(kNullAddress, &index);
+ AddIsolateIndependentReferences(&index);
+ AddBuiltins(&index);
+ AddRuntimeFunctions(&index);
+ AddAccessors(&index);
+
+ CHECK_EQ(kSizeIsolateIndependent, index);
+}
+
+const char* ExternalReferenceTable::NameOfIsolateIndependentAddress(
+ Address address) {
+ for (int i = 0; i < kSizeIsolateIndependent; i++) {
+ if (ref_addr_isolate_independent_[i] == address) {
+ return ref_name_[i];
+ }
+ }
+ return "<unknown>";
+}
+
void ExternalReferenceTable::Add(Address address, int* index) {
ref_addr_[(*index)++] = address;
}
-void ExternalReferenceTable::AddReferences(Isolate* isolate, int* index) {
+void ExternalReferenceTable::AddIsolateIndependent(Address address,
+ int* index) {
+ ref_addr_isolate_independent_[(*index)++] = address;
+}
+
+void ExternalReferenceTable::AddIsolateIndependentReferences(int* index) {
CHECK_EQ(kSpecialReferenceCount, *index);
#define ADD_EXTERNAL_REFERENCE(name, desc) \
- Add(ExternalReference::name().address(), index);
+ AddIsolateIndependent(ExternalReference::name().address(), index);
EXTERNAL_REFERENCE_LIST(ADD_EXTERNAL_REFERENCE)
#undef ADD_EXTERNAL_REFERENCE
+ CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCountIsolateIndependent,
+ *index);
+}
+
+void ExternalReferenceTable::AddIsolateDependentReferences(Isolate* isolate,
+ int* index) {
+ CHECK_EQ(kSizeIsolateIndependent, *index);
+
#define ADD_EXTERNAL_REFERENCE(name, desc) \
Add(ExternalReference::name(isolate).address(), index);
EXTERNAL_REFERENCE_LIST_WITH_ISOLATE(ADD_EXTERNAL_REFERENCE)
#undef ADD_EXTERNAL_REFERENCE
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount, *index);
+ CHECK_EQ(kSizeIsolateIndependent + kExternalReferenceCountIsolateDependent,
+ *index);
}
void ExternalReferenceTable::AddBuiltins(int* index) {
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount, *index);
+ CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCountIsolateIndependent,
+ *index);
static const Address c_builtins[] = {
#define DEF_ENTRY(Name, ...) FUNCTION_ADDR(&Builtin_##Name),
@@ -137,16 +181,16 @@ void ExternalReferenceTable::AddBuiltins(int* index) {
#undef DEF_ENTRY
};
for (Address addr : c_builtins) {
- Add(ExternalReference::Create(addr).address(), index);
+ AddIsolateIndependent(ExternalReference::Create(addr).address(), index);
}
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
+ CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCountIsolateIndependent +
kBuiltinsReferenceCount,
*index);
}
void ExternalReferenceTable::AddRuntimeFunctions(int* index) {
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
+ CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCountIsolateIndependent +
kBuiltinsReferenceCount,
*index);
@@ -157,33 +201,38 @@ void ExternalReferenceTable::AddRuntimeFunctions(int* index) {
};
for (Runtime::FunctionId fId : runtime_functions) {
- Add(ExternalReference::Create(fId).address(), index);
+ AddIsolateIndependent(ExternalReference::Create(fId).address(), index);
}
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
+ CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCountIsolateIndependent +
kBuiltinsReferenceCount + kRuntimeReferenceCount,
*index);
}
+void ExternalReferenceTable::CopyIsolateIndependentReferences(int* index) {
+ CHECK_EQ(0, *index);
+
+ std::copy(ref_addr_isolate_independent_,
+ ref_addr_isolate_independent_ + kSizeIsolateIndependent, ref_addr_);
+ *index += kSizeIsolateIndependent;
+}
+
void ExternalReferenceTable::AddIsolateAddresses(Isolate* isolate, int* index) {
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
- kBuiltinsReferenceCount + kRuntimeReferenceCount,
+ CHECK_EQ(kSizeIsolateIndependent + kExternalReferenceCountIsolateDependent,
*index);
for (int i = 0; i < IsolateAddressId::kIsolateAddressCount; ++i) {
Add(isolate->get_address_from_id(static_cast<IsolateAddressId>(i)), index);
}
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
- kBuiltinsReferenceCount + kRuntimeReferenceCount +
+ CHECK_EQ(kSizeIsolateIndependent + kExternalReferenceCountIsolateDependent +
kIsolateAddressReferenceCount,
*index);
}
void ExternalReferenceTable::AddAccessors(int* index) {
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
- kBuiltinsReferenceCount + kRuntimeReferenceCount +
- kIsolateAddressReferenceCount,
+ CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCountIsolateIndependent +
+ kBuiltinsReferenceCount + kRuntimeReferenceCount,
*index);
static const Address accessors[] = {
@@ -199,19 +248,18 @@ void ExternalReferenceTable::AddAccessors(int* index) {
};
for (Address addr : accessors) {
- Add(addr, index);
+ AddIsolateIndependent(addr, index);
}
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
+ CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCountIsolateIndependent +
kBuiltinsReferenceCount + kRuntimeReferenceCount +
- kIsolateAddressReferenceCount + kAccessorReferenceCount,
+ kAccessorReferenceCount,
*index);
}
void ExternalReferenceTable::AddStubCache(Isolate* isolate, int* index) {
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
- kBuiltinsReferenceCount + kRuntimeReferenceCount +
- kIsolateAddressReferenceCount + kAccessorReferenceCount,
+ CHECK_EQ(kSizeIsolateIndependent + kExternalReferenceCountIsolateDependent +
+ kIsolateAddressReferenceCount,
*index);
StubCache* load_stub_cache = isolate->load_stub_cache();
@@ -235,10 +283,8 @@ void ExternalReferenceTable::AddStubCache(Isolate* isolate, int* index) {
index);
Add(store_stub_cache->map_reference(StubCache::kSecondary).address(), index);
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
- kBuiltinsReferenceCount + kRuntimeReferenceCount +
- kIsolateAddressReferenceCount + kAccessorReferenceCount +
- kStubCacheReferenceCount,
+ CHECK_EQ(kSizeIsolateIndependent + kExternalReferenceCountIsolateDependent +
+ kIsolateAddressReferenceCount + kStubCacheReferenceCount,
*index);
}
@@ -251,10 +297,8 @@ Address ExternalReferenceTable::GetStatsCounterAddress(StatsCounter* counter) {
void ExternalReferenceTable::AddNativeCodeStatsCounters(Isolate* isolate,
int* index) {
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
- kBuiltinsReferenceCount + kRuntimeReferenceCount +
- kIsolateAddressReferenceCount + kAccessorReferenceCount +
- kStubCacheReferenceCount,
+ CHECK_EQ(kSizeIsolateIndependent + kExternalReferenceCountIsolateDependent +
+ kIsolateAddressReferenceCount + kStubCacheReferenceCount,
*index);
Counters* counters = isolate->counters();
@@ -263,10 +307,9 @@ void ExternalReferenceTable::AddNativeCodeStatsCounters(Isolate* isolate,
STATS_COUNTER_NATIVE_CODE_LIST(SC)
#undef SC
- CHECK_EQ(kSpecialReferenceCount + kExternalReferenceCount +
- kBuiltinsReferenceCount + kRuntimeReferenceCount +
- kIsolateAddressReferenceCount + kAccessorReferenceCount +
- kStubCacheReferenceCount + kStatsCountersReferenceCount,
+ CHECK_EQ(kSizeIsolateIndependent + kExternalReferenceCountIsolateDependent +
+ kIsolateAddressReferenceCount + kStubCacheReferenceCount +
+ kStatsCountersReferenceCount,
*index);
CHECK_EQ(kSize, *index);
}
diff --git a/deps/v8/src/codegen/external-reference-table.h b/deps/v8/src/codegen/external-reference-table.h
index 9f75d0fa74..0bf42477ae 100644
--- a/deps/v8/src/codegen/external-reference-table.h
+++ b/deps/v8/src/codegen/external-reference-table.h
@@ -24,8 +24,10 @@ class ExternalReferenceTable {
public:
// For the nullptr ref, see the constructor.
static constexpr int kSpecialReferenceCount = 1;
- static constexpr int kExternalReferenceCount =
- ExternalReference::kExternalReferenceCount;
+ static constexpr int kExternalReferenceCountIsolateIndependent =
+ ExternalReference::kExternalReferenceCountIsolateIndependent;
+ static constexpr int kExternalReferenceCountIsolateDependent =
+ ExternalReference::kExternalReferenceCountIsolateDependent;
static constexpr int kBuiltinsReferenceCount =
#define COUNT_C_BUILTIN(...) +1
BUILTIN_LIST_C(COUNT_C_BUILTIN);
@@ -42,11 +44,14 @@ class ExternalReferenceTable {
#define SC(...) +1
STATS_COUNTER_NATIVE_CODE_LIST(SC);
#undef SC
- static constexpr int kSize =
- kSpecialReferenceCount + kExternalReferenceCount +
+ static constexpr int kSizeIsolateIndependent =
+ kSpecialReferenceCount + kExternalReferenceCountIsolateIndependent +
kBuiltinsReferenceCount + kRuntimeReferenceCount +
- kIsolateAddressReferenceCount + kAccessorReferenceCount +
- kStubCacheReferenceCount + kStatsCountersReferenceCount;
+ kAccessorReferenceCount;
+ static constexpr int kSize =
+ kSizeIsolateIndependent + kExternalReferenceCountIsolateDependent +
+ kIsolateAddressReferenceCount + kStubCacheReferenceCount +
+ kStatsCountersReferenceCount;
static constexpr uint32_t kEntrySize =
static_cast<uint32_t>(kSystemPointerSize);
static constexpr uint32_t kSizeInBytes = kSize * kEntrySize + 2 * kUInt32Size;
@@ -63,6 +68,9 @@ class ExternalReferenceTable {
return i * kEntrySize;
}
+ static void InitializeOncePerProcess();
+ static const char* NameOfIsolateIndependentAddress(Address address);
+
const char* NameFromOffset(uint32_t offset) {
DCHECK_EQ(offset % kEntrySize, 0);
DCHECK_LT(offset, kSizeInBytes);
@@ -76,13 +84,18 @@ class ExternalReferenceTable {
void Init(Isolate* isolate);
private:
+ static void AddIsolateIndependent(Address address, int* index);
+
+ static void AddIsolateIndependentReferences(int* index);
+ static void AddBuiltins(int* index);
+ static void AddRuntimeFunctions(int* index);
+ static void AddAccessors(int* index);
+
void Add(Address address, int* index);
- void AddReferences(Isolate* isolate, int* index);
- void AddBuiltins(int* index);
- void AddRuntimeFunctions(int* index);
+ void CopyIsolateIndependentReferences(int* index);
+ void AddIsolateDependentReferences(Isolate* isolate, int* index);
void AddIsolateAddresses(Isolate* isolate, int* index);
- void AddAccessors(int* index);
void AddStubCache(Isolate* isolate, int* index);
Address GetStatsCounterAddress(StatsCounter* counter);
diff --git a/deps/v8/src/codegen/external-reference.cc b/deps/v8/src/codegen/external-reference.cc
index e992f1f285..3e91306b15 100644
--- a/deps/v8/src/codegen/external-reference.cc
+++ b/deps/v8/src/codegen/external-reference.cc
@@ -819,6 +819,9 @@ ExternalReference ExternalReference::search_string_raw() {
FUNCTION_REFERENCE(jsarray_array_join_concat_to_sequential_string,
JSArray::ArrayJoinConcatToSequentialString)
+FUNCTION_REFERENCE(length_tracking_gsab_backed_typed_array_length,
+ JSTypedArray::LengthTrackingGsabBackedTypedArrayLength)
+
ExternalReference ExternalReference::search_string_raw_one_one() {
return search_string_raw<const uint8_t, const uint8_t>();
}
@@ -1017,11 +1020,6 @@ ExternalReference ExternalReference::debug_suspended_generator_address(
return ExternalReference(isolate->debug()->suspended_generator_address());
}
-ExternalReference ExternalReference::debug_restart_fp_address(
- Isolate* isolate) {
- return ExternalReference(isolate->debug()->restart_fp_address());
-}
-
ExternalReference ExternalReference::fast_c_call_caller_fp_address(
Isolate* isolate) {
return ExternalReference(
diff --git a/deps/v8/src/codegen/external-reference.h b/deps/v8/src/codegen/external-reference.h
index 60603bdb71..f75a5c694a 100644
--- a/deps/v8/src/codegen/external-reference.h
+++ b/deps/v8/src/codegen/external-reference.h
@@ -62,7 +62,6 @@ class StatsCounter;
V(is_profiling_address, "Isolate::is_profiling") \
V(debug_suspended_generator_address, \
"Debug::step_suspended_generator_address()") \
- V(debug_restart_fp_address, "Debug::restart_fp_address()") \
V(fast_c_call_caller_fp_address, \
"IsolateData::fast_c_call_caller_fp_address") \
V(fast_c_call_caller_pc_address, \
@@ -170,6 +169,8 @@ class StatsCounter;
V(jsarray_array_join_concat_to_sequential_string, \
"jsarray_array_join_concat_to_sequential_string") \
V(jsreceiver_create_identity_hash, "jsreceiver_create_identity_hash") \
+ V(length_tracking_gsab_backed_typed_array_length, \
+ "LengthTrackingGsabBackedTypedArrayLength") \
V(libc_memchr_function, "libc_memchr") \
V(libc_memcpy_function, "libc_memcpy") \
V(libc_memmove_function, "libc_memmove") \
@@ -338,10 +339,11 @@ class ExternalReference {
PROFILING_GETTER_CALL
};
- static constexpr int kExternalReferenceCount =
#define COUNT_EXTERNAL_REFERENCE(name, desc) +1
- EXTERNAL_REFERENCE_LIST(COUNT_EXTERNAL_REFERENCE)
- EXTERNAL_REFERENCE_LIST_WITH_ISOLATE(COUNT_EXTERNAL_REFERENCE);
+ static constexpr int kExternalReferenceCountIsolateIndependent =
+ EXTERNAL_REFERENCE_LIST(COUNT_EXTERNAL_REFERENCE);
+ static constexpr int kExternalReferenceCountIsolateDependent =
+ EXTERNAL_REFERENCE_LIST_WITH_ISOLATE(COUNT_EXTERNAL_REFERENCE);
#undef COUNT_EXTERNAL_REFERENCE
ExternalReference() : address_(kNullAddress) {}
diff --git a/deps/v8/src/codegen/handler-table.h b/deps/v8/src/codegen/handler-table.h
index e1626e2be5..5b83bf4a69 100644
--- a/deps/v8/src/codegen/handler-table.h
+++ b/deps/v8/src/codegen/handler-table.h
@@ -97,8 +97,8 @@ class V8_EXPORT_PRIVATE HandlerTable {
int NumberOfReturnEntries() const;
#ifdef ENABLE_DISASSEMBLER
- void HandlerTableRangePrint(std::ostream& os); // NOLINT
- void HandlerTableReturnPrint(std::ostream& os); // NOLINT
+ void HandlerTableRangePrint(std::ostream& os);
+ void HandlerTableReturnPrint(std::ostream& os);
#endif
private:
diff --git a/deps/v8/src/codegen/ia32/assembler-ia32.cc b/deps/v8/src/codegen/ia32/assembler-ia32.cc
index 809df1daef..688b038e91 100644
--- a/deps/v8/src/codegen/ia32/assembler-ia32.cc
+++ b/deps/v8/src/codegen/ia32/assembler-ia32.cc
@@ -138,39 +138,38 @@ void CpuFeatures::ProbeImpl(bool cross_compile) {
// Only use statically determined features for cross compile (snapshot).
if (cross_compile) return;
- // To deal with any combination of flags (e.g. --no-enable-sse4-1
- // --enable-sse-4-2), we start checking from the "highest" supported
- // extension, for each extension, enable if newer extension is supported.
- if (cpu.has_avx2() && FLAG_enable_avx2 && IsSupported(AVX)) {
- supported_ |= 1u << AVX2;
+ if (cpu.has_sse42()) SetSupported(SSE4_2);
+ if (cpu.has_sse41()) SetSupported(SSE4_1);
+ if (cpu.has_ssse3()) SetSupported(SSSE3);
+ if (cpu.has_sse3()) SetSupported(SSE3);
+ if (cpu.has_avx() && cpu.has_osxsave() && OSHasAVXSupport()) {
+ SetSupported(AVX);
+ if (cpu.has_avx2()) SetSupported(AVX2);
+ if (cpu.has_fma3()) SetSupported(FMA3);
}
- if (cpu.has_fma3() && FLAG_enable_fma3 && cpu.has_osxsave() &&
- OSHasAVXSupport()) {
- supported_ |= 1u << FMA3;
- }
- if ((cpu.has_avx() && FLAG_enable_avx && cpu.has_osxsave() &&
- OSHasAVXSupport()) ||
- IsSupported(AVX2) || IsSupported(FMA3)) {
- supported_ |= 1u << AVX;
- }
- if ((cpu.has_sse42() && FLAG_enable_sse4_2) || IsSupported(AVX))
- supported_ |= 1u << SSE4_2;
- if ((cpu.has_sse41() && FLAG_enable_sse4_1) || IsSupported(SSE4_2))
- supported_ |= 1u << SSE4_1;
- if ((cpu.has_ssse3() && FLAG_enable_ssse3) || IsSupported(SSE4_1))
- supported_ |= 1u << SSSE3;
- if ((cpu.has_sse3() && FLAG_enable_sse3) || IsSupported(SSSE3))
- supported_ |= 1u << SSE3;
- if (cpu.has_bmi1() && FLAG_enable_bmi1) supported_ |= 1u << BMI1;
- if (cpu.has_bmi2() && FLAG_enable_bmi2) supported_ |= 1u << BMI2;
- if (cpu.has_lzcnt() && FLAG_enable_lzcnt) supported_ |= 1u << LZCNT;
- if (cpu.has_popcnt() && FLAG_enable_popcnt) supported_ |= 1u << POPCNT;
+
+ if (cpu.has_bmi1() && FLAG_enable_bmi1) SetSupported(BMI1);
+ if (cpu.has_bmi2() && FLAG_enable_bmi2) SetSupported(BMI2);
+ if (cpu.has_lzcnt() && FLAG_enable_lzcnt) SetSupported(LZCNT);
+ if (cpu.has_popcnt() && FLAG_enable_popcnt) SetSupported(POPCNT);
if (strcmp(FLAG_mcpu, "auto") == 0) {
- if (cpu.is_atom()) supported_ |= 1u << ATOM;
+ if (cpu.is_atom()) SetSupported(ATOM);
} else if (strcmp(FLAG_mcpu, "atom") == 0) {
- supported_ |= 1u << ATOM;
+ SetSupported(ATOM);
}
+ // Ensure that supported cpu features make sense. E.g. it is wrong to support
+ // AVX but not SSE4_2, if we have --enable-avx and --no-enable-sse4-2, the
+ // code above would set AVX to supported, and SSE4_2 to unsupported, then the
+ // checks below will set AVX to unsupported.
+ if (!FLAG_enable_sse3) SetUnsupported(SSE3);
+ if (!FLAG_enable_ssse3 || !IsSupported(SSE3)) SetUnsupported(SSSE3);
+ if (!FLAG_enable_sse4_1 || !IsSupported(SSSE3)) SetUnsupported(SSE4_1);
+ if (!FLAG_enable_sse4_2 || !IsSupported(SSE4_1)) SetUnsupported(SSE4_2);
+ if (!FLAG_enable_avx || !IsSupported(SSE4_2)) SetUnsupported(AVX);
+ if (!FLAG_enable_avx2 || !IsSupported(AVX)) SetUnsupported(AVX2);
+ if (!FLAG_enable_fma3 || !IsSupported(AVX)) SetUnsupported(FMA3);
+
// Set a static value on whether Simd is supported.
// This variable is only used for certain archs to query SupportWasmSimd128()
// at runtime in builtins using an extern ref. Other callers should use
@@ -2489,6 +2488,13 @@ void Assembler::movhlps(XMMRegister dst, XMMRegister src) {
emit_sse_operand(dst, src);
}
+void Assembler::movlhps(XMMRegister dst, XMMRegister src) {
+ EnsureSpace ensure_space(this);
+ EMIT(0x0F);
+ EMIT(0x16);
+ emit_sse_operand(dst, src);
+}
+
void Assembler::movlps(XMMRegister dst, Operand src) {
EnsureSpace ensure_space(this);
EMIT(0x0F);
@@ -2980,6 +2986,10 @@ void Assembler::vmovhlps(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
vinstr(0x12, dst, src1, src2, kNone, k0F, kWIG);
}
+void Assembler::vmovlhps(XMMRegister dst, XMMRegister src1, XMMRegister src2) {
+ vinstr(0x16, dst, src1, src2, kNone, k0F, kWIG);
+}
+
void Assembler::vmovlps(XMMRegister dst, XMMRegister src1, Operand src2) {
vinstr(0x12, dst, src1, src2, kNone, k0F, kWIG);
}
@@ -3276,9 +3286,9 @@ void Assembler::sse4_instr(XMMRegister dst, Operand src, byte prefix,
}
void Assembler::vinstr(byte op, XMMRegister dst, XMMRegister src1,
- XMMRegister src2, SIMDPrefix pp, LeadingOpcode m,
- VexW w) {
- DCHECK(IsEnabled(AVX));
+ XMMRegister src2, SIMDPrefix pp, LeadingOpcode m, VexW w,
+ CpuFeature feature) {
+ DCHECK(IsEnabled(feature));
EnsureSpace ensure_space(this);
emit_vex_prefix(src1, kL128, pp, m, w);
EMIT(op);
@@ -3286,8 +3296,9 @@ void Assembler::vinstr(byte op, XMMRegister dst, XMMRegister src1,
}
void Assembler::vinstr(byte op, XMMRegister dst, XMMRegister src1, Operand src2,
- SIMDPrefix pp, LeadingOpcode m, VexW w) {
- DCHECK(IsEnabled(AVX));
+ SIMDPrefix pp, LeadingOpcode m, VexW w,
+ CpuFeature feature) {
+ DCHECK(IsEnabled(feature));
EnsureSpace ensure_space(this);
emit_vex_prefix(src1, kL128, pp, m, w);
EMIT(op);
diff --git a/deps/v8/src/codegen/ia32/assembler-ia32.h b/deps/v8/src/codegen/ia32/assembler-ia32.h
index 2a8fd3ee28..806d17a2d4 100644
--- a/deps/v8/src/codegen/ia32/assembler-ia32.h
+++ b/deps/v8/src/codegen/ia32/assembler-ia32.h
@@ -868,6 +868,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
void shufpd(XMMRegister dst, XMMRegister src, byte imm8);
void movhlps(XMMRegister dst, XMMRegister src);
+ void movlhps(XMMRegister dst, XMMRegister src);
void movlps(XMMRegister dst, Operand src);
void movlps(Operand dst, XMMRegister src);
void movhps(XMMRegister dst, Operand src);
@@ -1398,6 +1399,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
void vshufpd(XMMRegister dst, XMMRegister src1, Operand src2, byte imm8);
void vmovhlps(XMMRegister dst, XMMRegister src1, XMMRegister src2);
+ void vmovlhps(XMMRegister dst, XMMRegister src1, XMMRegister src2);
void vmovlps(XMMRegister dst, XMMRegister src1, Operand src2);
void vmovlps(Operand dst, XMMRegister src);
void vmovhps(XMMRegister dst, XMMRegister src1, Operand src2);
@@ -1516,6 +1518,9 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
void vmovshdup(XMMRegister dst, XMMRegister src) {
vinstr(0x16, dst, xmm0, src, kF3, k0F, kWIG);
}
+ void vbroadcastss(XMMRegister dst, XMMRegister src) {
+ vinstr(0x18, dst, xmm0, src, k66, k0F38, kW0, AVX2);
+ }
void vbroadcastss(XMMRegister dst, Operand src) {
vinstr(0x18, dst, xmm0, src, k66, k0F38, kW0);
}
@@ -1892,9 +1897,9 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
void sse4_instr(XMMRegister dst, Operand src, byte prefix, byte escape1,
byte escape2, byte opcode);
void vinstr(byte op, XMMRegister dst, XMMRegister src1, XMMRegister src2,
- SIMDPrefix pp, LeadingOpcode m, VexW w);
+ SIMDPrefix pp, LeadingOpcode m, VexW w, CpuFeature = AVX);
void vinstr(byte op, XMMRegister dst, XMMRegister src1, Operand src2,
- SIMDPrefix pp, LeadingOpcode m, VexW w);
+ SIMDPrefix pp, LeadingOpcode m, VexW w, CpuFeature = AVX);
// Most BMI instructions are similar.
void bmi1(byte op, Register reg, Register vreg, Operand rm);
void bmi2(SIMDPrefix pp, byte op, Register reg, Register vreg, Operand rm);
@@ -1933,10 +1938,10 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// checks that we did not generate too much.
class EnsureSpace {
public:
- explicit EnsureSpace(Assembler* assembler) : assembler_(assembler) {
- if (assembler_->buffer_overflow()) assembler_->GrowBuffer();
+ explicit V8_INLINE EnsureSpace(Assembler* assembler) : assembler_(assembler) {
+ if (V8_UNLIKELY(assembler_->buffer_overflow())) assembler_->GrowBuffer();
#ifdef DEBUG
- space_before_ = assembler_->available_space();
+ space_before_ = assembler->available_space();
#endif
}
@@ -1948,7 +1953,7 @@ class EnsureSpace {
#endif
private:
- Assembler* assembler_;
+ Assembler* const assembler_;
#ifdef DEBUG
int space_before_;
#endif
diff --git a/deps/v8/src/codegen/ia32/interface-descriptors-ia32-inl.h b/deps/v8/src/codegen/ia32/interface-descriptors-ia32-inl.h
new file mode 100644
index 0000000000..d079dfd725
--- /dev/null
+++ b/deps/v8/src/codegen/ia32/interface-descriptors-ia32-inl.h
@@ -0,0 +1,267 @@
+// Copyright 2021 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_CODEGEN_IA32_INTERFACE_DESCRIPTORS_IA32_INL_H_
+#define V8_CODEGEN_IA32_INTERFACE_DESCRIPTORS_IA32_INL_H_
+
+#if V8_TARGET_ARCH_IA32
+
+#include "src/codegen/interface-descriptors.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(eax, ecx, edx, edi);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(ecx, edx, esi, edi, kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(eax, ecx, edx, edi, esi);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(ecx, edx, esi, edi, kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return edx; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return ecx; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return eax; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return no_reg; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return edi;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return edx; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return ecx; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return no_reg; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return no_reg; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() {
+ return no_reg;
+}
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return edi; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return ecx; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return eax; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return eax; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return ecx; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ return esi;
+}
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() {
+ return edi;
+}
+
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return eax; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(ecx); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // eax : number of arguments
+ // edi : the target to call
+ return RegisterArray(edi, eax);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // eax : number of arguments (on the stack, not including receiver)
+ // edi : the target to call
+ // ecx : arguments list length (untagged)
+ // On the stack : arguments list (FixedArray)
+ return RegisterArray(edi, eax, ecx);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // eax : number of arguments
+ // ecx : start index (to support rest parameters)
+ // edi : the target to call
+ return RegisterArray(edi, eax, ecx);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // edx : function template info
+ // ecx : number of arguments (on the stack, not including receiver)
+ return RegisterArray(edx, ecx);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // eax : number of arguments (on the stack, not including receiver)
+ // edi : the target to call
+ // ecx : the object to spread
+ return RegisterArray(edi, eax, ecx);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // edi : the target to call
+ // edx : the arguments list
+ return RegisterArray(edi, edx);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // eax : number of arguments (on the stack, not including receiver)
+ // edi : the target to call
+ // edx : the new target
+ // ecx : arguments list length (untagged)
+ // On the stack : arguments list (FixedArray)
+ return RegisterArray(edi, edx, eax, ecx);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // eax : number of arguments
+ // edx : the new target
+ // ecx : start index (to support rest parameters)
+ // edi : the target to call
+ return RegisterArray(edi, edx, eax, ecx);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // eax : number of arguments (on the stack, not including receiver)
+ // edi : the target to call
+ // edx : the new target
+ // ecx : the object to spread
+ return RegisterArray(edi, edx, eax, ecx);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // edi : the target to call
+ // edx : the new target
+ // ecx : the arguments list
+ return RegisterArray(edi, edx, ecx);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // eax : number of arguments
+ // edx : the new target
+ // edi : the target to call
+ // ecx : allocation site or undefined
+ // TODO(jgruber): Remove the unused allocation site parameter.
+ return RegisterArray(edi, edx, eax, ecx);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(edx); }
+
+// static
+constexpr auto CompareDescriptor::registers() {
+ return RegisterArray(edx, eax);
+}
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ return RegisterArray(edx, eax, ecx);
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() {
+ return RegisterArray(edx, eax);
+}
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ return RegisterArray(edx, eax, ecx);
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ return RegisterArray(edx, // kApiFunctionAddress
+ ecx, // kArgc
+ eax, // kCallData
+ edi); // kHolder
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ return RegisterArray(eax, // argument count (not including receiver)
+ ecx, // address of first argument
+ edi); // the target callable to be call
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ return RegisterArray(eax, // argument count (not including receiver)
+ ecx); // address of first argument
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ return RegisterArray(eax, // the value to pass to the generator
+ edx); // the JSGeneratorObject to resume
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray();
+}
+
+// static
+constexpr auto WasmFloat32ToNumberDescriptor::registers() {
+ // Work around using eax, whose register code is 0, and leads to the FP
+ // parameter being passed via xmm0, which is not allocatable on ia32.
+ return RegisterArray(ecx);
+}
+
+// static
+constexpr auto WasmFloat64ToNumberDescriptor::registers() {
+ // Work around using eax, whose register code is 0, and leads to the FP
+ // parameter being passed via xmm0, which is not allocatable on ia32.
+ return RegisterArray(ecx);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_IA32
+
+#endif // V8_CODEGEN_IA32_INTERFACE_DESCRIPTORS_IA32_INL_H_
diff --git a/deps/v8/src/codegen/ia32/interface-descriptors-ia32.cc b/deps/v8/src/codegen/ia32/interface-descriptors-ia32.cc
deleted file mode 100644
index fd76e01590..0000000000
--- a/deps/v8/src/codegen/ia32/interface-descriptors-ia32.cc
+++ /dev/null
@@ -1,318 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_IA32
-
-#include "src/codegen/interface-descriptors.h"
-
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return esi; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- constexpr Register default_stub_registers[] = {eax, ecx, edx, edi};
- STATIC_ASSERT(arraysize(default_stub_registers) == kMaxBuiltinRegisterParams);
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- static const Register default_stub_registers[] = {ecx, edx, esi, edi,
- kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {eax, ecx, edx, edi, esi};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- static const Register default_stub_registers[] = {ecx, edx, esi, edi,
- kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return edx; }
-const Register LoadDescriptor::NameRegister() { return ecx; }
-const Register LoadDescriptor::SlotRegister() { return eax; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return no_reg; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return edi;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return edx; }
-const Register StoreDescriptor::NameRegister() { return ecx; }
-const Register StoreDescriptor::ValueRegister() { return no_reg; }
-const Register StoreDescriptor::SlotRegister() { return no_reg; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return no_reg; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return no_reg; }
-const Register StoreTransitionDescriptor::VectorRegister() { return no_reg; }
-const Register StoreTransitionDescriptor::MapRegister() { return edi; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return ecx; }
-const Register ApiGetterDescriptor::CallbackRegister() { return eax; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return eax; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return ecx; }
-
-const Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
- return esi;
-}
-const Register BaselineLeaveFrameDescriptor::WeightRegister() { return edi; }
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return eax; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // eax : number of arguments
- // edi : the target to call
- Register registers[] = {edi, eax};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // eax : number of arguments (on the stack, not including receiver)
- // edi : the target to call
- // ecx : arguments list length (untagged)
- // On the stack : arguments list (FixedArray)
- Register registers[] = {edi, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // eax : number of arguments
- // ecx : start index (to support rest parameters)
- // edi : the target to call
- Register registers[] = {edi, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // edx : function template info
- // ecx : number of arguments (on the stack, not including receiver)
- Register registers[] = {edx, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // eax : number of arguments (on the stack, not including receiver)
- // edi : the target to call
- // ecx : the object to spread
- Register registers[] = {edi, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // edi : the target to call
- // edx : the arguments list
- Register registers[] = {edi, edx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // eax : number of arguments (on the stack, not including receiver)
- // edi : the target to call
- // edx : the new target
- // ecx : arguments list length (untagged)
- // On the stack : arguments list (FixedArray)
- Register registers[] = {edi, edx, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // eax : number of arguments
- // edx : the new target
- // ecx : start index (to support rest parameters)
- // edi : the target to call
- Register registers[] = {edi, edx, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // eax : number of arguments (on the stack, not including receiver)
- // edi : the target to call
- // edx : the new target
- // ecx : the object to spread
- Register registers[] = {edi, edx, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // edi : the target to call
- // edx : the new target
- // ecx : the arguments list
- Register registers[] = {edi, edx, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // eax : number of arguments
- // edx : the new target
- // edi : the target to call
- // ecx : allocation site or undefined
- // TODO(jgruber): Remove the unused allocation site parameter.
- Register registers[] = {edi, edx, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {edx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {edx, eax};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {edx, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {edx, eax};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {edx, eax, ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- edx, // kApiFunctionAddress
- ecx, // kArgc
- eax, // kCallData
- edi, // kHolder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- eax, // argument count (not including receiver)
- ecx, // address of first argument
- edi // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- eax, // argument count (not including receiver)
- ecx, // address of first argument
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- eax, // the value to pass to the generator
- edx // the JSGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- eax, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- data->InitializePlatformSpecific(0, nullptr);
-}
-
-void WasmFloat32ToNumberDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // Work around using eax, whose register code is 0, and leads to the FP
- // parameter being passed via xmm0, which is not allocatable on ia32.
- Register registers[] = {ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void WasmFloat64ToNumberDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // Work around using eax, whose register code is 0, and leads to the FP
- // parameter being passed via xmm0, which is not allocatable on ia32.
- Register registers[] = {ecx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_IA32
diff --git a/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc b/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc
index 9892eb9470..7c8af3fde0 100644
--- a/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc
+++ b/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc
@@ -19,7 +19,7 @@
#include "src/codegen/external-reference.h"
#include "src/codegen/ia32/assembler-ia32.h"
#include "src/codegen/ia32/register-ia32.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/label.h"
#include "src/codegen/macro-assembler.h"
#include "src/codegen/register.h"
@@ -294,7 +294,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
}
}
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
// Count all XMM registers except XMM0.
bytes += kDoubleSize * (XMMRegister::kNumRegisters - 1);
}
@@ -316,7 +316,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
}
}
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
// Save all XMM registers except XMM0.
int delta = kDoubleSize * (XMMRegister::kNumRegisters - 1);
AllocateStackSpace(delta);
@@ -333,7 +333,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
Register exclusion2, Register exclusion3) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
// Restore all XMM registers except XMM0.
int delta = kDoubleSize * (XMMRegister::kNumRegisters - 1);
for (int i = XMMRegister::kNumRegisters - 1; i > 0; i--) {
@@ -365,7 +365,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -374,7 +374,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
DCHECK(IsAligned(offset, kTaggedSize));
lea(dst, FieldOperand(object, offset));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label ok;
test_b(dst, Immediate(kTaggedSize - 1));
j(zero, &ok, Label::kNear);
@@ -383,13 +383,13 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, dst, value, save_fp, remembered_set_action,
- OMIT_SMI_CHECK);
+ SmiCheck::kOmit);
bind(&done);
// Clobber clobbered input registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
mov(value, Immediate(bit_cast<int32_t>(kZapValue)));
mov(dst, Immediate(bit_cast<int32_t>(kZapValue)));
}
@@ -511,13 +511,13 @@ void MacroAssembler::RecordWrite(Register object, Register address,
DCHECK(value != address);
AssertNotSmi(object);
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
}
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label ok;
cmp(value, Operand(address, 0));
j(equal, &ok, Label::kNear);
@@ -529,7 +529,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// catch stores of Smis and stores into young gen.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
// Skip barrier if writing a smi.
JumpIfSmi(value, &done, Label::kNear);
}
@@ -549,25 +549,12 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// Clobber clobbered registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
mov(address, Immediate(bit_cast<int32_t>(kZapValue)));
mov(value, Immediate(bit_cast<int32_t>(kZapValue)));
}
}
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- Label dont_drop;
- ExternalReference restart_fp =
- ExternalReference::debug_restart_fp_address(isolate());
- mov(eax, ExternalReferenceAsOperand(restart_fp, eax));
- test(eax, eax);
- j(zero, &dont_drop, Label::kNear);
-
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET);
- bind(&dont_drop);
-}
-
void TurboAssembler::Cvtsi2ss(XMMRegister dst, Operand src) {
xorps(dst, dst);
cvtsi2ss(dst, src);
@@ -1029,14 +1016,14 @@ void MacroAssembler::CmpInstanceTypeRange(Register map, Register scratch,
}
void MacroAssembler::AssertSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
test(object, Immediate(kSmiTagMask));
Check(equal, AbortReason::kOperandIsNotASmi);
}
}
void MacroAssembler::AssertConstructor(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
test(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmiAndNotAConstructor);
Push(object);
@@ -1049,7 +1036,7 @@ void MacroAssembler::AssertConstructor(Register object) {
}
void MacroAssembler::AssertFunction(Register object, Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
test(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmiAndNotAFunction);
Push(object);
@@ -1062,7 +1049,7 @@ void MacroAssembler::AssertFunction(Register object, Register scratch) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
test(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmiAndNotABoundFunction);
Push(object);
@@ -1073,7 +1060,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
test(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmiAndNotAGeneratorObject);
@@ -1105,7 +1092,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done_checking;
AssertNotSmi(object);
CompareRoot(object, scratch, RootIndex::kUndefinedValue);
@@ -1118,7 +1105,7 @@ void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
}
void MacroAssembler::AssertNotSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
test(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmi);
}
@@ -1147,7 +1134,7 @@ void TurboAssembler::EnterFrame(StackFrame::Type type) {
}
void TurboAssembler::LeaveFrame(StackFrame::Type type) {
- if (emit_debug_code() && !StackFrame::IsJavaScript(type)) {
+ if (FLAG_debug_code && !StackFrame::IsJavaScript(type)) {
cmp(Operand(ebp, CommonFrameConstants::kContextOrFrameTypeOffset),
Immediate(StackFrame::TypeToMarker(type)));
Check(equal, AbortReason::kStackFrameTypesMustMatch);
@@ -1389,8 +1376,8 @@ void MacroAssembler::JumpToExternalReference(const ExternalReference& ext,
bool builtin_exit_frame) {
// Set the entry point and jump to the C entry runtime stub.
Move(kRuntimeCallFunctionRegister, Immediate(ext));
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET);
}
@@ -1494,7 +1481,7 @@ void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch,
void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count,
- Label* done, InvokeFlag flag) {
+ Label* done, InvokeType type) {
if (expected_parameter_count != actual_parameter_count) {
DCHECK_EQ(actual_parameter_count, eax);
DCHECK_EQ(expected_parameter_count, ecx);
@@ -1531,9 +1518,9 @@ void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Operand(expected_parameter_count, times_system_pointer_size, 0));
AllocateStackSpace(scratch);
// Extra words are the receiver and the return address (if a jump).
- int extra_words = flag == CALL_FUNCTION ? 1 : 2;
+ int extra_words = type == InvokeType::kCall ? 1 : 2;
lea(num, Operand(eax, extra_words)); // Number of words to copy.
- Set(current, 0);
+ Move(current, 0);
// Fall-through to the loop body because there are non-zero words to copy.
bind(&copy);
mov(scratch, Operand(src, current, times_system_pointer_size, 0));
@@ -1610,9 +1597,9 @@ void MacroAssembler::CallDebugOnFunctionCall(Register fun, Register new_target,
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, edi);
DCHECK_IMPLIES(new_target.is_valid(), new_target == edx);
DCHECK(expected_parameter_count == ecx || expected_parameter_count == eax);
@@ -1636,17 +1623,19 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// We call indirectly through the code field in the function to
// allow recompilation to take effect without changing any of the
// call sites.
static_assert(kJavaScriptCallCodeStartRegister == ecx, "ABI mismatch");
mov(ecx, FieldOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- CallCodeObject(ecx);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- JumpCodeObject(ecx);
+ switch (type) {
+ case InvokeType::kCall:
+ CallCodeObject(ecx);
+ break;
+ case InvokeType::kJump:
+ JumpCodeObject(ecx);
+ break;
}
jmp(&done, Label::kNear);
@@ -1661,9 +1650,9 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
void MacroAssembler::InvokeFunction(Register fun, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK(flag == JUMP_FUNCTION || has_frame());
+ DCHECK(type == InvokeType::kJump || has_frame());
DCHECK(fun == edi);
mov(ecx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
@@ -1671,7 +1660,7 @@ void MacroAssembler::InvokeFunction(Register fun, Register new_target,
movzx_w(ecx,
FieldOperand(ecx, SharedFunctionInfo::kFormalParameterCountOffset));
- InvokeFunctionCode(edi, new_target, ecx, actual_parameter_count, flag);
+ InvokeFunctionCode(edi, new_target, ecx, actual_parameter_count, type);
}
void MacroAssembler::LoadGlobalProxy(Register dst) {
@@ -1852,34 +1841,6 @@ void TurboAssembler::Pshufb(XMMRegister dst, XMMRegister src, Operand mask) {
pshufb(dst, mask);
}
-void TurboAssembler::Pblendw(XMMRegister dst, Operand src, uint8_t imm8) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vpblendw(dst, dst, src, imm8);
- return;
- }
- if (CpuFeatures::IsSupported(SSE4_1)) {
- CpuFeatureScope sse_scope(this, SSE4_1);
- pblendw(dst, src, imm8);
- return;
- }
- FATAL("no AVX or SSE4.1 support");
-}
-
-void TurboAssembler::Palignr(XMMRegister dst, Operand src, uint8_t imm8) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vpalignr(dst, dst, src, imm8);
- return;
- }
- if (CpuFeatures::IsSupported(SSSE3)) {
- CpuFeatureScope sse_scope(this, SSSE3);
- palignr(dst, src, imm8);
- return;
- }
- FATAL("no AVX or SSE3 support");
-}
-
void TurboAssembler::Pextrd(Register dst, XMMRegister src, uint8_t imm8) {
if (imm8 == 0) {
Movd(dst, src);
@@ -1994,19 +1955,6 @@ void TurboAssembler::Vbroadcastss(XMMRegister dst, Operand src) {
shufps(dst, dst, static_cast<byte>(0));
}
-void TurboAssembler::Shufps(XMMRegister dst, XMMRegister src1, XMMRegister src2,
- uint8_t imm8) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope avx_scope(this, AVX);
- vshufps(dst, src1, src2, imm8);
- } else {
- if (dst != src1) {
- movaps(dst, src1);
- }
- shufps(dst, src2, imm8);
- }
-}
-
void TurboAssembler::Lzcnt(Register dst, Operand src) {
if (CpuFeatures::IsSupported(LZCNT)) {
CpuFeatureScope scope(this, LZCNT);
@@ -2079,11 +2027,11 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
}
void TurboAssembler::Assert(Condition cc, AbortReason reason) {
- if (emit_debug_code()) Check(cc, reason);
+ if (FLAG_debug_code) Check(cc, reason);
}
void TurboAssembler::AssertUnreachable(AbortReason reason) {
- if (emit_debug_code()) Abort(reason);
+ if (FLAG_debug_code) Abort(reason);
}
void TurboAssembler::Check(Condition cc, AbortReason reason) {
@@ -2109,11 +2057,11 @@ void TurboAssembler::CheckStackAlignment() {
}
void TurboAssembler::Abort(AbortReason reason) {
-#ifdef DEBUG
- const char* msg = GetAbortReason(reason);
- RecordComment("Abort message: ");
- RecordComment(msg);
-#endif
+ if (FLAG_code_comments) {
+ const char* msg = GetAbortReason(reason);
+ RecordComment("Abort message: ");
+ RecordComment(msg);
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
@@ -2171,7 +2119,7 @@ void TurboAssembler::CallCFunction(Register function, int num_arguments) {
DCHECK_LE(num_arguments, kMaxCParameters);
DCHECK(has_frame());
// Check stack alignment.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
CheckStackAlignment();
}
diff --git a/deps/v8/src/codegen/ia32/macro-assembler-ia32.h b/deps/v8/src/codegen/ia32/macro-assembler-ia32.h
index 4c5c3ade02..a21a355568 100644
--- a/deps/v8/src/codegen/ia32/macro-assembler-ia32.h
+++ b/deps/v8/src/codegen/ia32/macro-assembler-ia32.h
@@ -44,9 +44,6 @@ class StatsCounter;
// distinguish memory operands from other operands on ia32.
using MemOperand = Operand;
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
-
// TODO(victorgomes): Move definition to macro-assembler.h, once all other
// platforms are updated.
enum class StackLimitKind { kInterruptStackLimit, kRealStackLimit };
@@ -122,6 +119,13 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
void CheckStackAlignment();
// Move a constant into a destination using the most efficient encoding.
+ void Move(Register dst, int32_t x) {
+ if (x == 0) {
+ xor_(dst, dst);
+ } else {
+ mov(dst, Immediate(x));
+ }
+ }
void Move(Register dst, const Immediate& src);
void Move(Register dst, Smi src) { Move(dst, Immediate(src)); }
void Move(Register dst, Handle<HeapObject> src);
@@ -301,152 +305,11 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
// may be bigger than 2^16 - 1. Requires a scratch register.
void Ret(int bytes_dropped, Register scratch);
-// Only use these macros when non-destructive source of AVX version is not
-// needed.
-#define AVX_OP3_WITH_TYPE(macro_name, name, dst_type, src_type) \
- void macro_name(dst_type dst, src_type src) { \
- if (CpuFeatures::IsSupported(AVX)) { \
- CpuFeatureScope scope(this, AVX); \
- v##name(dst, dst, src); \
- } else { \
- name(dst, src); \
- } \
- }
-#define AVX_OP3_XO(macro_name, name) \
- AVX_OP3_WITH_TYPE(macro_name, name, XMMRegister, XMMRegister) \
- AVX_OP3_WITH_TYPE(macro_name, name, XMMRegister, Operand)
-
- AVX_OP3_XO(Packsswb, packsswb)
- AVX_OP3_XO(Packuswb, packuswb)
- AVX_OP3_XO(Paddusb, paddusb)
- AVX_OP3_XO(Pand, pand)
- AVX_OP3_XO(Pcmpeqb, pcmpeqb)
- AVX_OP3_XO(Pcmpeqw, pcmpeqw)
- AVX_OP3_XO(Pcmpeqd, pcmpeqd)
- AVX_OP3_XO(Por, por)
- AVX_OP3_XO(Psubb, psubb)
- AVX_OP3_XO(Psubw, psubw)
- AVX_OP3_XO(Psubd, psubd)
- AVX_OP3_XO(Psubq, psubq)
- AVX_OP3_XO(Punpcklbw, punpcklbw)
- AVX_OP3_XO(Punpckhbw, punpckhbw)
- AVX_OP3_XO(Punpckldq, punpckldq)
- AVX_OP3_XO(Punpcklqdq, punpcklqdq)
- AVX_OP3_XO(Pxor, pxor)
- AVX_OP3_XO(Andps, andps)
- AVX_OP3_XO(Andpd, andpd)
- AVX_OP3_XO(Xorps, xorps)
- AVX_OP3_XO(Xorpd, xorpd)
- AVX_OP3_XO(Sqrtss, sqrtss)
- AVX_OP3_XO(Sqrtsd, sqrtsd)
- AVX_OP3_XO(Orps, orps)
- AVX_OP3_XO(Orpd, orpd)
- AVX_OP3_XO(Andnpd, andnpd)
- AVX_OP3_WITH_TYPE(Movhlps, movhlps, XMMRegister, XMMRegister)
- AVX_OP3_WITH_TYPE(Psraw, psraw, XMMRegister, uint8_t)
- AVX_OP3_WITH_TYPE(Psrlq, psrlq, XMMRegister, uint8_t)
-
-#undef AVX_OP3_XO
-#undef AVX_OP3_WITH_TYPE
-
-// Same as AVX_OP3_WITH_TYPE but supports a CpuFeatureScope
-#define AVX_OP2_WITH_TYPE_SCOPE(macro_name, name, dst_type, src_type, \
- sse_scope) \
- void macro_name(dst_type dst, src_type src) { \
- if (CpuFeatures::IsSupported(AVX)) { \
- CpuFeatureScope scope(this, AVX); \
- v##name(dst, dst, src); \
- } else if (CpuFeatures::IsSupported(sse_scope)) { \
- CpuFeatureScope scope(this, sse_scope); \
- name(dst, src); \
- } \
- }
-#define AVX_OP2_XO(macro_name, name, sse_scope) \
- AVX_OP2_WITH_TYPE_SCOPE(macro_name, name, XMMRegister, XMMRegister, \
- sse_scope) \
- AVX_OP2_WITH_TYPE_SCOPE(macro_name, name, XMMRegister, Operand, sse_scope)
- AVX_OP2_XO(Psignb, psignb, SSSE3)
- AVX_OP2_XO(Psignw, psignw, SSSE3)
- AVX_OP2_XO(Psignd, psignd, SSSE3)
- AVX_OP2_XO(Pcmpeqq, pcmpeqq, SSE4_1)
-#undef AVX_OP2_XO
-#undef AVX_OP2_WITH_TYPE_SCOPE
-
-// Only use this macro when dst and src1 is the same in SSE case.
-#define AVX_PACKED_OP3_WITH_TYPE(macro_name, name, dst_type, src_type) \
- void macro_name(dst_type dst, dst_type src1, src_type src2) { \
- if (CpuFeatures::IsSupported(AVX)) { \
- CpuFeatureScope scope(this, AVX); \
- v##name(dst, src1, src2); \
- } else { \
- DCHECK_EQ(dst, src1); \
- name(dst, src2); \
- } \
- }
-#define AVX_PACKED_OP3(macro_name, name) \
- AVX_PACKED_OP3_WITH_TYPE(macro_name, name, XMMRegister, XMMRegister) \
- AVX_PACKED_OP3_WITH_TYPE(macro_name, name, XMMRegister, Operand)
-
- AVX_PACKED_OP3(Unpcklps, unpcklps)
- AVX_PACKED_OP3(Andnps, andnps)
- AVX_PACKED_OP3(Addps, addps)
- AVX_PACKED_OP3(Addpd, addpd)
- AVX_PACKED_OP3(Subps, subps)
- AVX_PACKED_OP3(Subpd, subpd)
- AVX_PACKED_OP3(Mulps, mulps)
- AVX_PACKED_OP3(Mulpd, mulpd)
- AVX_PACKED_OP3(Divps, divps)
- AVX_PACKED_OP3(Divpd, divpd)
- AVX_PACKED_OP3(Cmpeqpd, cmpeqpd)
- AVX_PACKED_OP3(Cmpneqpd, cmpneqpd)
- AVX_PACKED_OP3(Cmpltpd, cmpltpd)
- AVX_PACKED_OP3(Cmpleps, cmpleps)
- AVX_PACKED_OP3(Cmplepd, cmplepd)
- AVX_PACKED_OP3(Minps, minps)
- AVX_PACKED_OP3(Minpd, minpd)
- AVX_PACKED_OP3(Maxps, maxps)
- AVX_PACKED_OP3(Maxpd, maxpd)
- AVX_PACKED_OP3(Cmpunordps, cmpunordps)
- AVX_PACKED_OP3(Cmpunordpd, cmpunordpd)
- AVX_PACKED_OP3(Psllw, psllw)
- AVX_PACKED_OP3(Pslld, pslld)
- AVX_PACKED_OP3(Psllq, psllq)
- AVX_PACKED_OP3(Psrlw, psrlw)
- AVX_PACKED_OP3(Psrld, psrld)
- AVX_PACKED_OP3(Psrlq, psrlq)
- AVX_PACKED_OP3(Psraw, psraw)
- AVX_PACKED_OP3(Psrad, psrad)
- AVX_PACKED_OP3(Paddd, paddd)
- AVX_PACKED_OP3(Paddq, paddq)
- AVX_PACKED_OP3(Psubd, psubd)
- AVX_PACKED_OP3(Psubq, psubq)
- AVX_PACKED_OP3(Pmuludq, pmuludq)
- AVX_PACKED_OP3(Pavgb, pavgb)
- AVX_PACKED_OP3(Pavgw, pavgw)
- AVX_PACKED_OP3(Pand, pand)
- AVX_PACKED_OP3(Pminub, pminub)
- AVX_PACKED_OP3(Pmaxub, pmaxub)
- AVX_PACKED_OP3(Paddusb, paddusb)
- AVX_PACKED_OP3(Psubusb, psubusb)
- AVX_PACKED_OP3(Pcmpgtb, pcmpgtb)
- AVX_PACKED_OP3(Pcmpeqb, pcmpeqb)
- AVX_PACKED_OP3(Paddb, paddb)
- AVX_PACKED_OP3(Paddsb, paddsb)
- AVX_PACKED_OP3(Psubb, psubb)
- AVX_PACKED_OP3(Psubsb, psubsb)
-
-#undef AVX_PACKED_OP3
-
- AVX_PACKED_OP3_WITH_TYPE(Psllw, psllw, XMMRegister, uint8_t)
- AVX_PACKED_OP3_WITH_TYPE(Pslld, pslld, XMMRegister, uint8_t)
- AVX_PACKED_OP3_WITH_TYPE(Psllq, psllq, XMMRegister, uint8_t)
- AVX_PACKED_OP3_WITH_TYPE(Psrlw, psrlw, XMMRegister, uint8_t)
- AVX_PACKED_OP3_WITH_TYPE(Psrld, psrld, XMMRegister, uint8_t)
- AVX_PACKED_OP3_WITH_TYPE(Psrlq, psrlq, XMMRegister, uint8_t)
- AVX_PACKED_OP3_WITH_TYPE(Psraw, psraw, XMMRegister, uint8_t)
- AVX_PACKED_OP3_WITH_TYPE(Psrad, psrad, XMMRegister, uint8_t)
-
-#undef AVX_PACKED_OP3_WITH_TYPE
+ // Defined here because some callers take a pointer to member functions.
+ AVX_OP(Pcmpeqb, pcmpeqb)
+ AVX_OP(Pcmpeqw, pcmpeqw)
+ AVX_OP(Pcmpeqd, pcmpeqd)
+ AVX_OP_SSE4_1(Pcmpeqq, pcmpeqq)
// Macro for instructions that have 2 operands for AVX version and 1 operand for
// SSE version. Will move src1 to dst if dst != src1.
@@ -468,35 +331,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
AVX_OP3_WITH_MOVE(Pmaddwd, pmaddwd, XMMRegister, Operand)
#undef AVX_OP3_WITH_MOVE
-#define AVX_OP3_WITH_TYPE_SCOPE(macro_name, name, dst_type, src_type, \
- sse_scope) \
- void macro_name(dst_type dst, dst_type src1, src_type src2) { \
- if (CpuFeatures::IsSupported(AVX)) { \
- CpuFeatureScope scope(this, AVX); \
- v##name(dst, src1, src2); \
- return; \
- } \
- if (CpuFeatures::IsSupported(sse_scope)) { \
- CpuFeatureScope scope(this, sse_scope); \
- DCHECK_EQ(dst, src1); \
- name(dst, src2); \
- return; \
- } \
- UNREACHABLE(); \
- }
-#define AVX_OP3_XO_SSE4(macro_name, name) \
- AVX_OP3_WITH_TYPE_SCOPE(macro_name, name, XMMRegister, XMMRegister, SSE4_1) \
- AVX_OP3_WITH_TYPE_SCOPE(macro_name, name, XMMRegister, Operand, SSE4_1)
-
- AVX_OP3_WITH_TYPE_SCOPE(Haddps, haddps, XMMRegister, Operand, SSE3)
- AVX_OP3_XO_SSE4(Pmaxsd, pmaxsd)
- AVX_OP3_XO_SSE4(Pminsb, pminsb)
- AVX_OP3_XO_SSE4(Pmaxsb, pmaxsb)
- AVX_OP3_XO_SSE4(Pcmpeqq, pcmpeqq)
-
-#undef AVX_OP3_XO_SSE4
-#undef AVX_OP3_WITH_TYPE_SCOPE
-
// TODO(zhin): Remove after moving more definitions into SharedTurboAssembler.
void Movlps(Operand dst, XMMRegister src) {
SharedTurboAssembler::Movlps(dst, src);
@@ -513,16 +347,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
}
void Pshufb(XMMRegister dst, XMMRegister src, Operand mask);
- void Pblendw(XMMRegister dst, XMMRegister src, uint8_t imm8) {
- Pblendw(dst, Operand(src), imm8);
- }
- void Pblendw(XMMRegister dst, Operand src, uint8_t imm8);
-
- void Palignr(XMMRegister dst, XMMRegister src, uint8_t imm8) {
- Palignr(dst, Operand(src), imm8);
- }
- void Palignr(XMMRegister dst, Operand src, uint8_t imm8);
-
void Pextrd(Register dst, XMMRegister src, uint8_t imm8);
void Pinsrb(XMMRegister dst, Register src, int8_t imm8) {
Pinsrb(dst, Operand(src), imm8);
@@ -544,10 +368,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
void Pinsrw(XMMRegister dst, XMMRegister src1, Operand src2, int8_t imm8);
void Vbroadcastss(XMMRegister dst, Operand src);
- // Shufps that will mov src1 into dst if AVX is not supported.
- void Shufps(XMMRegister dst, XMMRegister src1, XMMRegister src2,
- uint8_t imm8);
-
// Expression support
// cvtsi2sd instruction only writes to the low 64-bit of dst register, which
// hinders register renaming and makes dependence chains longer. So we use
@@ -680,15 +500,6 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
public:
using TurboAssembler::TurboAssembler;
- // Load a register with a long value as efficiently as possible.
- void Set(Register dst, int32_t x) {
- if (x == 0) {
- xor_(dst, dst);
- } else {
- mov(dst, Immediate(x));
- }
- }
-
void PushRoot(RootIndex index);
// Compare the object in a register to a value and jump if they are equal.
@@ -722,8 +533,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, Register scratch,
SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For page containing |object| mark region covering |address|
// dirty. |object| is the object being stored into, |value| is the
@@ -732,11 +543,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// write barrier if the value is a smi.
void RecordWrite(
Register object, Register address, Register value, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
-
- // Frame restart support
- void MaybeDropFrames();
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// Enter specific kind of exit frame. Expects the number of
// arguments in register eax and sets up the number of arguments in
@@ -768,7 +576,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// On function call, call into the debugger.
// This may clobber ecx.
@@ -779,7 +587,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function in the given register. Changes the
// current context to the context in the function before invoking.
void InvokeFunction(Register function, Register new_target,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// Compare object type for heap object.
// Incoming register is heap_object and outgoing register is map.
@@ -865,18 +673,18 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Call a runtime routine.
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
}
@@ -921,7 +729,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Helper functions for generating invokes.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
void EnterExitFramePrologue(StackFrame::Type frame_type, Register scratch);
void EnterExitFrameEpilogue(int argc, bool save_doubles);
diff --git a/deps/v8/src/codegen/interface-descriptors-inl.h b/deps/v8/src/codegen/interface-descriptors-inl.h
new file mode 100644
index 0000000000..273e9d3e8e
--- /dev/null
+++ b/deps/v8/src/codegen/interface-descriptors-inl.h
@@ -0,0 +1,484 @@
+// Copyright 2021 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_CODEGEN_INTERFACE_DESCRIPTORS_INL_H_
+#define V8_CODEGEN_INTERFACE_DESCRIPTORS_INL_H_
+
+#include <utility>
+
+#include "src/base/logging.h"
+#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/register-arch.h"
+
+#if V8_TARGET_ARCH_X64
+#include "src/codegen/x64/interface-descriptors-x64-inl.h"
+#elif V8_TARGET_ARCH_ARM64
+#include "src/codegen/arm64/interface-descriptors-arm64-inl.h"
+#elif V8_TARGET_ARCH_IA32
+#include "src/codegen/ia32/interface-descriptors-ia32-inl.h"
+#elif V8_TARGET_ARCH_ARM
+#include "src/codegen/arm/interface-descriptors-arm-inl.h"
+#elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
+#include "src/codegen/ppc/interface-descriptors-ppc-inl.h"
+#elif V8_TARGET_ARCH_S390
+#include "src/codegen/s390/interface-descriptors-s390-inl.h"
+#elif V8_TARGET_ARCH_MIPS64
+#include "src/codegen/mips64/interface-descriptors-mips64-inl.h"
+#elif V8_TARGET_ARCH_MIPS
+#include "src/codegen/mips/interface-descriptors-mips-inl.h"
+#elif V8_TARGET_ARCH_RISCV64
+#include "src/codegen/riscv64/interface-descriptors-riscv64-inl.h"
+#else
+#error Unsupported target architecture.
+#endif
+
+namespace v8 {
+namespace internal {
+
+// static
+constexpr std::array<Register, kJSBuiltinRegisterParams>
+CallInterfaceDescriptor::DefaultJSRegisterArray() {
+ return RegisterArray(
+ kJavaScriptCallTargetRegister, kJavaScriptCallNewTargetRegister,
+ kJavaScriptCallArgCountRegister, kJavaScriptCallExtraArg1Register);
+}
+
+// static
+template <typename DerivedDescriptor>
+constexpr auto StaticCallInterfaceDescriptor<DerivedDescriptor>::registers() {
+ return CallInterfaceDescriptor::DefaultRegisterArray();
+}
+
+// static
+template <typename DerivedDescriptor>
+constexpr auto StaticJSCallInterfaceDescriptor<DerivedDescriptor>::registers() {
+ return CallInterfaceDescriptor::DefaultJSRegisterArray();
+}
+
+template <typename DerivedDescriptor>
+void StaticCallInterfaceDescriptor<DerivedDescriptor>::Initialize(
+ CallInterfaceDescriptorData* data) {
+ // Static local copy of the Registers array, for platform-specific
+ // initialization
+ static auto registers = DerivedDescriptor::registers();
+
+ // The passed pointer should be a modifiable pointer to our own data.
+ DCHECK_EQ(data, this->data());
+ DCHECK(!data->IsInitialized());
+
+ if (DerivedDescriptor::kRestrictAllocatableRegisters) {
+ data->RestrictAllocatableRegisters(registers.data(), registers.size());
+ }
+
+ data->InitializeRegisters(
+ DerivedDescriptor::flags(), DerivedDescriptor::kReturnCount,
+ DerivedDescriptor::GetParameterCount(),
+ DerivedDescriptor::kStackArgumentOrder,
+ DerivedDescriptor::GetRegisterParameterCount(), registers.data());
+
+ // InitializeTypes is customizable by the DerivedDescriptor subclass.
+ DerivedDescriptor::InitializeTypes(data);
+
+ DCHECK(data->IsInitialized());
+ DCHECK(this->CheckFloatingPointParameters(data));
+}
+
+// static
+template <typename DerivedDescriptor>
+constexpr int
+StaticCallInterfaceDescriptor<DerivedDescriptor>::GetReturnCount() {
+ static_assert(
+ DerivedDescriptor::kReturnCount >= 0,
+ "DerivedDescriptor subclass should override return count with a value "
+ "that is greater than 0");
+
+ return DerivedDescriptor::kReturnCount;
+}
+
+// static
+template <typename DerivedDescriptor>
+constexpr int
+StaticCallInterfaceDescriptor<DerivedDescriptor>::GetParameterCount() {
+ static_assert(
+ DerivedDescriptor::kParameterCount >= 0,
+ "DerivedDescriptor subclass should override parameter count with a "
+ "value that is greater than 0");
+
+ return DerivedDescriptor::kParameterCount;
+}
+
+namespace detail {
+
+// Helper trait for statically checking if a type is a std::array<Register,N>.
+template <typename T>
+struct IsRegisterArray : public std::false_type {};
+template <size_t N>
+struct IsRegisterArray<std::array<Register, N>> : public std::true_type {};
+template <>
+struct IsRegisterArray<EmptyRegisterArray> : public std::true_type {};
+
+// Helper for finding the index of the first invalid register in a register
+// array.
+template <size_t N, size_t Index>
+struct FirstInvalidRegisterHelper {
+ static constexpr int Call(std::array<Register, N> regs) {
+ if (!std::get<Index>(regs).is_valid()) {
+ // All registers after the first invalid one have to also be invalid (this
+ // DCHECK will be checked recursively).
+ DCHECK_EQ((FirstInvalidRegisterHelper<N, Index + 1>::Call(regs)),
+ Index + 1);
+ return Index;
+ }
+ return FirstInvalidRegisterHelper<N, Index + 1>::Call(regs);
+ }
+};
+template <size_t N>
+struct FirstInvalidRegisterHelper<N, N> {
+ static constexpr int Call(std::array<Register, N> regs) { return N; }
+};
+template <size_t N, size_t Index = 0>
+constexpr size_t FirstInvalidRegister(std::array<Register, N> regs) {
+ return FirstInvalidRegisterHelper<N, 0>::Call(regs);
+}
+constexpr size_t FirstInvalidRegister(EmptyRegisterArray regs) { return 0; }
+
+} // namespace detail
+
+// static
+template <typename DerivedDescriptor>
+constexpr int
+StaticCallInterfaceDescriptor<DerivedDescriptor>::GetRegisterParameterCount() {
+ static_assert(
+ detail::IsRegisterArray<decltype(DerivedDescriptor::registers())>::value,
+ "DerivedDescriptor subclass should define a registers() function "
+ "returning a std::array<Register>");
+
+ // The register parameter count is the minimum of:
+ // 1. The number of named parameters in the descriptor, and
+ // 2. The number of valid registers the descriptor provides with its
+ // registers() function, e.g. for {rax, rbx, no_reg} this number is 2.
+ // 3. The maximum number of register parameters allowed (
+ // kMaxBuiltinRegisterParams for most builtins,
+ // kMaxTFSBuiltinRegisterParams for TFS builtins, customizable by the
+ // subclass otherwise).
+ return std::min<int>({DerivedDescriptor::GetParameterCount(),
+ static_cast<int>(detail::FirstInvalidRegister(
+ DerivedDescriptor::registers())),
+ DerivedDescriptor::kMaxRegisterParams});
+}
+
+// static
+template <typename DerivedDescriptor>
+constexpr int
+StaticCallInterfaceDescriptor<DerivedDescriptor>::GetStackParameterCount() {
+ return DerivedDescriptor::GetParameterCount() -
+ DerivedDescriptor::GetRegisterParameterCount();
+}
+
+// static
+constexpr Register FastNewObjectDescriptor::TargetRegister() {
+ return kJSFunctionRegister;
+}
+
+// static
+constexpr Register FastNewObjectDescriptor::NewTargetRegister() {
+ return kJavaScriptCallNewTargetRegister;
+}
+
+// static
+constexpr Register ApiGetterDescriptor::ReceiverRegister() {
+ return LoadDescriptor::ReceiverRegister();
+}
+
+// static
+constexpr Register LoadGlobalNoFeedbackDescriptor::ICKindRegister() {
+ return LoadDescriptor::SlotRegister();
+}
+
+// static
+constexpr Register LoadNoFeedbackDescriptor::ICKindRegister() {
+ return LoadGlobalNoFeedbackDescriptor::ICKindRegister();
+}
+
+#if V8_TARGET_ARCH_IA32
+// On ia32, LoadWithVectorDescriptor passes vector on the stack and thus we
+// need to choose a new register here.
+// static
+constexpr Register LoadGlobalWithVectorDescriptor::VectorRegister() {
+ STATIC_ASSERT(!LoadWithVectorDescriptor::VectorRegister().is_valid());
+ return LoadDescriptor::ReceiverRegister();
+}
+#else
+// static
+constexpr Register LoadGlobalWithVectorDescriptor::VectorRegister() {
+ return LoadWithVectorDescriptor::VectorRegister();
+}
+#endif
+
+// static
+constexpr auto LoadDescriptor::registers() {
+ return RegisterArray(ReceiverRegister(), NameRegister(), SlotRegister());
+}
+
+// static
+constexpr auto LoadBaselineDescriptor::registers() {
+ return LoadDescriptor::registers();
+}
+
+// static
+constexpr auto LoadGlobalDescriptor::registers() {
+ return RegisterArray(LoadDescriptor::NameRegister(),
+ LoadDescriptor::SlotRegister());
+}
+
+// static
+constexpr auto LoadGlobalBaselineDescriptor::registers() {
+ return LoadGlobalDescriptor::registers();
+}
+
+// static
+constexpr auto StoreDescriptor::registers() {
+ return RegisterArray(ReceiverRegister(), NameRegister(), ValueRegister(),
+ SlotRegister());
+}
+
+// static
+constexpr auto StoreBaselineDescriptor::registers() {
+ return StoreDescriptor::registers();
+}
+
+// static
+constexpr auto StoreGlobalDescriptor::registers() {
+ return RegisterArray(StoreDescriptor::NameRegister(),
+ StoreDescriptor::ValueRegister(),
+ StoreDescriptor::SlotRegister());
+}
+
+// static
+constexpr auto StoreGlobalBaselineDescriptor::registers() {
+ return StoreGlobalDescriptor::registers();
+}
+
+// static
+constexpr auto LoadWithReceiverBaselineDescriptor::registers() {
+ return RegisterArray(
+ LoadDescriptor::ReceiverRegister(),
+ LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister(),
+ LoadDescriptor::NameRegister(), LoadDescriptor::SlotRegister());
+}
+
+// static
+constexpr auto BaselineOutOfLinePrologueDescriptor::registers() {
+ // TODO(v8:11421): Implement on other platforms.
+#if V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_IA32 || \
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 || \
+ V8_TARGET_ARCH_S390 || V8_TARGET_ARCH_RISCV64
+ return RegisterArray(
+ kContextRegister, kJSFunctionRegister, kJavaScriptCallArgCountRegister,
+ kJavaScriptCallExtraArg1Register, kJavaScriptCallNewTargetRegister,
+ kInterpreterBytecodeArrayRegister);
+#else
+ return DefaultRegisterArray();
+#endif
+}
+
+// static
+constexpr auto BaselineLeaveFrameDescriptor::registers() {
+ // TODO(v8:11421): Implement on other platforms.
+#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 || \
+ V8_TARGET_ARCH_S390 || V8_TARGET_ARCH_RISCV64
+ return RegisterArray(ParamsSizeRegister(), WeightRegister());
+#else
+ return DefaultRegisterArray();
+#endif
+}
+
+// static
+constexpr auto VoidDescriptor::registers() { return RegisterArray(); }
+
+// static
+constexpr auto AllocateDescriptor::registers() {
+ return RegisterArray(kAllocateSizeRegister);
+}
+
+// static
+constexpr auto CEntry1ArgvOnStackDescriptor::registers() {
+ return RegisterArray(kRuntimeCallArgCountRegister,
+ kRuntimeCallFunctionRegister);
+}
+
+// static
+constexpr auto InterpreterCEntry1Descriptor::registers() {
+ return RegisterArray(kRuntimeCallArgCountRegister, kRuntimeCallArgvRegister,
+ kRuntimeCallFunctionRegister);
+}
+
+// static
+constexpr auto InterpreterCEntry2Descriptor::registers() {
+ return RegisterArray(kRuntimeCallArgCountRegister, kRuntimeCallArgvRegister,
+ kRuntimeCallFunctionRegister);
+}
+
+// static
+constexpr auto FastNewObjectDescriptor::registers() {
+ return RegisterArray(TargetRegister(), NewTargetRegister());
+}
+
+// static
+constexpr auto TailCallOptimizedCodeSlotDescriptor::registers() {
+ return RegisterArray(kJavaScriptCallCodeStartRegister);
+}
+
+// static
+constexpr auto LoadNoFeedbackDescriptor::registers() {
+ return RegisterArray(LoadDescriptor::ReceiverRegister(),
+ LoadDescriptor::NameRegister(), ICKindRegister());
+}
+
+// static
+constexpr auto LoadGlobalNoFeedbackDescriptor::registers() {
+ return RegisterArray(LoadDescriptor::NameRegister(), ICKindRegister());
+}
+
+// static
+constexpr auto LoadGlobalWithVectorDescriptor::registers() {
+ return RegisterArray(LoadDescriptor::NameRegister(),
+ LoadDescriptor::SlotRegister(), VectorRegister());
+}
+
+// static
+constexpr auto LoadWithReceiverAndVectorDescriptor::registers() {
+ return RegisterArray(
+ LoadDescriptor::ReceiverRegister(), LookupStartObjectRegister(),
+ LoadDescriptor::NameRegister(), LoadDescriptor::SlotRegister(),
+ LoadWithVectorDescriptor::VectorRegister());
+}
+
+// static
+constexpr auto StoreGlobalWithVectorDescriptor::registers() {
+ return RegisterArray(StoreDescriptor::NameRegister(),
+ StoreDescriptor::ValueRegister(),
+ StoreDescriptor::SlotRegister(),
+ StoreWithVectorDescriptor::VectorRegister());
+}
+
+// static
+constexpr auto StoreTransitionDescriptor::registers() {
+ return RegisterArray(StoreDescriptor::ReceiverRegister(),
+ StoreDescriptor::NameRegister(), MapRegister(),
+ StoreDescriptor::ValueRegister(),
+ StoreDescriptor::SlotRegister(),
+ StoreWithVectorDescriptor::VectorRegister());
+}
+
+// static
+constexpr auto TypeConversionDescriptor::registers() {
+ return RegisterArray(ArgumentRegister());
+}
+
+// static
+constexpr auto TypeConversionNoContextDescriptor::registers() {
+ return RegisterArray(TypeConversionDescriptor::ArgumentRegister());
+}
+
+// static
+constexpr auto SingleParameterOnStackDescriptor::registers() {
+ return RegisterArray();
+}
+
+// static
+constexpr auto AsyncFunctionStackParameterDescriptor::registers() {
+ return RegisterArray();
+}
+
+// static
+constexpr auto GetIteratorStackParameterDescriptor::registers() {
+ return RegisterArray();
+}
+
+// static
+constexpr auto LoadWithVectorDescriptor::registers() {
+ return RegisterArray(LoadDescriptor::ReceiverRegister(),
+ LoadDescriptor::NameRegister(),
+ LoadDescriptor::SlotRegister(), VectorRegister());
+}
+
+// static
+constexpr auto StoreWithVectorDescriptor::registers() {
+ return RegisterArray(StoreDescriptor::ReceiverRegister(),
+ StoreDescriptor::NameRegister(),
+ StoreDescriptor::ValueRegister(),
+ StoreDescriptor::SlotRegister(), VectorRegister());
+}
+
+// static
+constexpr auto ApiGetterDescriptor::registers() {
+ return RegisterArray(ReceiverRegister(), HolderRegister(),
+ CallbackRegister());
+}
+
+// static
+constexpr auto ContextOnlyDescriptor::registers() { return RegisterArray(); }
+
+// static
+constexpr auto NoContextDescriptor::registers() { return RegisterArray(); }
+
+// static
+constexpr auto GrowArrayElementsDescriptor::registers() {
+ return RegisterArray(ObjectRegister(), KeyRegister());
+}
+
+// static
+constexpr auto ArrayNArgumentsConstructorDescriptor::registers() {
+ // Keep the arguments on the same registers as they were in
+ // ArrayConstructorDescriptor to avoid unnecessary register moves.
+ // kFunction, kAllocationSite, kActualArgumentsCount
+ return RegisterArray(kJavaScriptCallTargetRegister,
+ kJavaScriptCallExtraArg1Register,
+ kJavaScriptCallArgCountRegister);
+}
+
+// static
+constexpr auto ArrayNoArgumentConstructorDescriptor::registers() {
+ // This descriptor must use the same set of registers as the
+ // ArrayNArgumentsConstructorDescriptor.
+ return ArrayNArgumentsConstructorDescriptor::registers();
+}
+
+// static
+constexpr auto ArraySingleArgumentConstructorDescriptor::registers() {
+ // This descriptor must use the same set of registers as the
+ // ArrayNArgumentsConstructorDescriptor.
+ return ArrayNArgumentsConstructorDescriptor::registers();
+}
+
+// static
+// static
+constexpr Register RunMicrotasksDescriptor::MicrotaskQueueRegister() {
+ return GetRegisterParameter(0);
+}
+
+#define DEFINE_STATIC_BUILTIN_DESCRIPTOR_GETTER(Name, DescriptorName) \
+ template <> \
+ struct CallInterfaceDescriptorFor<Builtins::k##Name> { \
+ using type = DescriptorName##Descriptor; \
+ };
+BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN,
+ /*TFC*/ DEFINE_STATIC_BUILTIN_DESCRIPTOR_GETTER, IGNORE_BUILTIN,
+ /*TFH*/ DEFINE_STATIC_BUILTIN_DESCRIPTOR_GETTER, IGNORE_BUILTIN,
+ /*ASM*/ DEFINE_STATIC_BUILTIN_DESCRIPTOR_GETTER)
+#undef DEFINE_STATIC_BUILTIN_DESCRIPTOR_GETTER
+#define DEFINE_STATIC_BUILTIN_DESCRIPTOR_GETTER(Name, ...) \
+ template <> \
+ struct CallInterfaceDescriptorFor<Builtins::k##Name> { \
+ using type = Name##Descriptor; \
+ };
+BUILTIN_LIST_TFS(DEFINE_STATIC_BUILTIN_DESCRIPTOR_GETTER)
+#undef DEFINE_STATIC_BUILTIN_DESCRIPTOR_GETTER
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_CODEGEN_INTERFACE_DESCRIPTORS_INL_H_
diff --git a/deps/v8/src/codegen/interface-descriptors.cc b/deps/v8/src/codegen/interface-descriptors.cc
index 53b678580e..2cafcae344 100644
--- a/deps/v8/src/codegen/interface-descriptors.cc
+++ b/deps/v8/src/codegen/interface-descriptors.cc
@@ -4,49 +4,48 @@
#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
namespace v8 {
namespace internal {
-void CallInterfaceDescriptorData::InitializePlatformSpecific(
- int register_parameter_count, const Register* registers) {
- DCHECK(!IsInitializedPlatformIndependent());
-
- register_param_count_ = register_parameter_count;
-
- // UBSan doesn't like creating zero-length arrays.
- if (register_parameter_count == 0) return;
+void CallInterfaceDescriptorData::InitializeRegisters(
+ Flags flags, int return_count, int parameter_count,
+ StackArgumentOrder stack_order, int register_parameter_count,
+ const Register* registers) {
+ DCHECK(!IsInitializedTypes());
- // InterfaceDescriptor owns a copy of the registers array.
- register_params_ = NewArray<Register>(register_parameter_count, no_reg);
- for (int i = 0; i < register_parameter_count; i++) {
- // The value of the root register must be reserved, thus any uses
- // within the calling convention are disallowed.
#ifdef DEBUG
- CHECK_NE(registers[i], kRootRegister);
+ {
+ // Make sure that the registers are all valid, and don't alias each other.
+ RegList reglist = 0;
+ for (int i = 0; i < register_parameter_count; ++i) {
+ Register reg = registers[i];
+ DCHECK(reg.is_valid());
+ DCHECK_EQ(reglist & reg.bit(), 0);
+ DCHECK_NE(reg, kRootRegister);
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
- CHECK_NE(registers[i], kPointerCageBaseRegister);
+ DCHECK_NE(reg, kPtrComprCageBaseRegister);
#endif
- // Check for duplicated registers.
- for (int j = i + 1; j < register_parameter_count; j++) {
- CHECK_NE(registers[i], registers[j]);
+ reglist = CombineRegLists(reglist, reg.bit());
}
-#endif
- register_params_[i] = registers[i];
}
-}
-
-void CallInterfaceDescriptorData::InitializePlatformIndependent(
- Flags flags, int return_count, int parameter_count,
- const MachineType* machine_types, int machine_types_length,
- StackArgumentOrder stack_order) {
- DCHECK(IsInitializedPlatformSpecific());
+#endif
flags_ = flags;
stack_order_ = stack_order;
return_count_ = return_count;
param_count_ = parameter_count;
+ register_param_count_ = register_parameter_count;
+
+ // The caller owns the the registers array, so we just set the pointer.
+ register_params_ = registers;
+}
+
+void CallInterfaceDescriptorData::InitializeTypes(
+ const MachineType* machine_types, int machine_types_length) {
+ DCHECK(IsInitializedRegisters());
const int types_length = return_count_ + param_count_;
// Machine types are either fully initialized or null.
@@ -77,7 +76,6 @@ bool CallInterfaceDescriptorData::AllStackParametersAreTagged() const {
void CallInterfaceDescriptorData::Reset() {
delete[] machine_types_;
machine_types_ = nullptr;
- delete[] register_params_;
register_params_ = nullptr;
}
@@ -105,27 +103,6 @@ void CallDescriptors::TearDown() {
}
}
-void CallInterfaceDescriptor::JSDefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int non_js_register_parameter_count) {
- DCHECK_LE(static_cast<unsigned>(non_js_register_parameter_count), 1);
-
- // 3 is for kTarget, kNewTarget and kActualArgumentsCount
- int register_parameter_count = 3 + non_js_register_parameter_count;
-
- DCHECK(!AreAliased(
- kJavaScriptCallTargetRegister, kJavaScriptCallNewTargetRegister,
- kJavaScriptCallArgCountRegister, kJavaScriptCallExtraArg1Register));
-
- const Register default_js_stub_registers[] = {
- kJavaScriptCallTargetRegister, kJavaScriptCallNewTargetRegister,
- kJavaScriptCallArgCountRegister, kJavaScriptCallExtraArg1Register};
-
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_js_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_js_stub_registers);
-}
-
const char* CallInterfaceDescriptor::DebugName() const {
CallDescriptors::Key key = CallDescriptors::GetKey(data_);
switch (key) {
@@ -140,492 +117,12 @@ const char* CallInterfaceDescriptor::DebugName() const {
return "";
}
-#if !defined(V8_TARGET_ARCH_MIPS) && !defined(V8_TARGET_ARCH_MIPS64)
bool CallInterfaceDescriptor::IsValidFloatParameterRegister(Register reg) {
- return true;
-}
-#endif
-
-void VoidDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- data->InitializePlatformSpecific(0, nullptr);
-}
-
-void AllocateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {kAllocateSizeRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CEntry1ArgvOnStackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {kRuntimeCallArgCountRegister,
- kRuntimeCallFunctionRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-namespace {
-
-void InterpreterCEntryDescriptor_InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {kRuntimeCallArgCountRegister,
- kRuntimeCallArgvRegister,
- kRuntimeCallFunctionRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace
-
-void InterpreterCEntry1Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- InterpreterCEntryDescriptor_InitializePlatformSpecific(data);
-}
-
-void InterpreterCEntry2Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- InterpreterCEntryDescriptor_InitializePlatformSpecific(data);
-}
-
-void FastNewObjectDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {TargetRegister(), NewTargetRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-const Register FastNewObjectDescriptor::TargetRegister() {
- return kJSFunctionRegister;
-}
-
-const Register FastNewObjectDescriptor::NewTargetRegister() {
- return kJavaScriptCallNewTargetRegister;
-}
-
-void TailCallOptimizedCodeSlotDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {kJavaScriptCallCodeStartRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void LoadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void LoadBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {LoadDescriptor::ReceiverRegister(),
- LoadDescriptor::NameRegister(),
- LoadDescriptor::SlotRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void LoadNoFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister(), NameRegister(), ICKindRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void LoadGlobalDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {NameRegister(), SlotRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void LoadGlobalBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {LoadGlobalDescriptor::NameRegister(),
- LoadGlobalDescriptor::SlotRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void LookupBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void LoadGlobalNoFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {NameRegister(), ICKindRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void LoadGlobalWithVectorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {NameRegister(), SlotRegister(), VectorRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void LoadWithReceiverAndVectorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DCHECK(!AreAliased(ReceiverRegister(), LookupStartObjectRegister(),
- NameRegister(), SlotRegister(), VectorRegister()));
- Register registers[] = {ReceiverRegister(), LookupStartObjectRegister(),
- NameRegister(), SlotRegister(), VectorRegister()};
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-void LoadWithReceiverBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- LoadWithReceiverAndVectorDescriptor::ReceiverRegister(),
- LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister(),
- LoadWithReceiverAndVectorDescriptor::NameRegister(),
- LoadWithReceiverAndVectorDescriptor::SlotRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void StoreGlobalDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {NameRegister(), ValueRegister(), SlotRegister()};
-
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-void StoreGlobalBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {StoreGlobalDescriptor::NameRegister(),
- StoreGlobalDescriptor::ValueRegister(),
- StoreGlobalDescriptor::SlotRegister()};
-
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-void StoreGlobalWithVectorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {NameRegister(), ValueRegister(), SlotRegister(),
- VectorRegister()};
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-void StoreDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(),
- SlotRegister()};
-
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-void StoreBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- StoreDescriptor::ReceiverRegister(), StoreDescriptor::NameRegister(),
- StoreDescriptor::ValueRegister(), StoreDescriptor::SlotRegister()};
-
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-void StoreTransitionDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- ReceiverRegister(), NameRegister(), MapRegister(),
- ValueRegister(), SlotRegister(), VectorRegister(),
- };
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-void BaselineOutOfLinePrologueDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on other platforms.
-#if V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_IA32 || \
- V8_TARGET_ARCH_ARM
- Register registers[] = {kContextRegister,
- kJSFunctionRegister,
- kJavaScriptCallArgCountRegister,
- kJavaScriptCallExtraArg1Register,
- kJavaScriptCallNewTargetRegister,
- kInterpreterBytecodeArrayRegister};
- data->InitializePlatformSpecific(kParameterCount - kStackArgumentsCount,
- registers);
-#else
- InitializePlatformUnimplemented(data, kParameterCount);
-#endif
-}
-
-void BaselineLeaveFrameDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on other platforms.
-#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
- V8_TARGET_ARCH_ARM
- Register registers[] = {ParamsSizeRegister(), WeightRegister()};
- data->InitializePlatformSpecific(kParameterCount, registers);
+#if defined(V8_TARGET_ARCH_MIPS) || defined(V8_TARGET_ARCH_MIPS64)
+ return reg.code() % 2 == 0;
#else
- InitializePlatformUnimplemented(data, kParameterCount);
-#endif
-}
-
-void StringAtDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void StringAtAsStringDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void StringSubstringDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void TypeConversionDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ArgumentRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void TypeConversionNoContextDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {TypeConversionDescriptor::ArgumentRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void TypeConversion_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void SingleParameterOnStackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- data->InitializePlatformSpecific(0, nullptr);
-}
-
-void AsyncFunctionStackParameterDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- data->InitializePlatformSpecific(0, nullptr);
-}
-
-void GetIteratorStackParameterDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- data->InitializePlatformSpecific(0, nullptr);
-}
-
-void LoadWithVectorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister(),
- VectorRegister()};
- // TODO(jgruber): This DCHECK could be enabled if RegisterBase::ListOf were
- // to allow no_reg entries.
- // DCHECK(!AreAliased(ReceiverRegister(), NameRegister(), SlotRegister(),
- // VectorRegister(), kRootRegister));
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-void StoreWithVectorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(),
- SlotRegister(), VectorRegister()};
- // TODO(jgruber): This DCHECK could be enabled if RegisterBase::ListOf were
- // to allow no_reg entries.
- // DCHECK(!AreAliased(ReceiverRegister(), NameRegister(), kRootRegister));
- int len = arraysize(registers) - kStackArgumentsCount;
- data->InitializePlatformSpecific(len, registers);
-}
-
-const Register ApiGetterDescriptor::ReceiverRegister() {
- return LoadDescriptor::ReceiverRegister();
-}
-
-void ApiGetterDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister(), HolderRegister(),
- CallbackRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ContextOnlyDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- data->InitializePlatformSpecific(0, nullptr);
-}
-
-void NoContextDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- data->InitializePlatformSpecific(0, nullptr);
-}
-
-void GrowArrayElementsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ObjectRegister(), KeyRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // This descriptor must use the same set of registers as the
- // ArrayNArgumentsConstructorDescriptor.
- ArrayNArgumentsConstructorDescriptor::InitializePlatformSpecific(data);
-}
-
-void ArraySingleArgumentConstructorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // This descriptor must use the same set of registers as the
- // ArrayNArgumentsConstructorDescriptor.
- ArrayNArgumentsConstructorDescriptor::InitializePlatformSpecific(data);
-}
-
-void ArrayNArgumentsConstructorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // Keep the arguments on the same registers as they were in
- // ArrayConstructorDescriptor to avoid unnecessary register moves.
- // kFunction, kAllocationSite, kActualArgumentsCount
- Register registers[] = {kJavaScriptCallTargetRegister,
- kJavaScriptCallExtraArg1Register,
- kJavaScriptCallArgCountRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-#if !V8_TARGET_ARCH_IA32
-// We need a custom descriptor on ia32 to avoid using xmm0.
-void WasmFloat32ToNumberDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-// We need a custom descriptor on ia32 to avoid using xmm0.
-void WasmFloat64ToNumberDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-#endif // !V8_TARGET_ARCH_IA32
-
-#if !defined(V8_TARGET_ARCH_MIPS) && !defined(V8_TARGET_ARCH_MIPS64) && \
- !defined(V8_TARGET_ARCH_RISCV64)
-void WasmI32AtomicWait32Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void WasmI64AtomicWait32Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data,
- kParameterCount - kStackArgumentsCount);
-}
+ return true;
#endif
-
-void CloneObjectWithVectorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void CloneObjectBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-// static
-Register RunMicrotasksDescriptor::MicrotaskQueueRegister() {
- return CallDescriptors::call_descriptor_data(CallDescriptors::RunMicrotasks)
- ->register_param(0);
-}
-
-void RunMicrotasksDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void I64ToBigIntDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void I32PairToBigIntDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void BigIntToI64Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void BigIntToI32PairDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void BinaryOp_WithFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 4);
-}
-
-void CallTrampoline_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void CallTrampoline_WithFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 4);
-}
-
-void CallWithArrayLike_WithFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 4);
-}
-
-void CallWithSpread_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void CallWithSpread_WithFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 4);
-}
-
-void ConstructWithArrayLike_WithFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 4);
-}
-
-void ConstructWithSpread_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data,
- kParameterCount - kStackArgumentsCount);
-}
-
-void ConstructWithSpread_WithFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 4);
-}
-
-void Compare_WithFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 4);
-}
-
-void UnaryOp_WithFeedbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 3);
-}
-
-void UnaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, 2);
-}
-
-void ForInPrepareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void SuspendGeneratorBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
-}
-
-void ResumeGeneratorBaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- DefaultInitializePlatformSpecific(data, kParameterCount);
}
} // namespace internal
diff --git a/deps/v8/src/codegen/interface-descriptors.h b/deps/v8/src/codegen/interface-descriptors.h
index 8d03907efc..e64826e6fc 100644
--- a/deps/v8/src/codegen/interface-descriptors.h
+++ b/deps/v8/src/codegen/interface-descriptors.h
@@ -7,6 +7,7 @@
#include <memory>
+#include "src/base/logging.h"
#include "src/codegen/machine-type.h"
#include "src/codegen/register-arch.h"
#include "src/codegen/tnode.h"
@@ -39,6 +40,7 @@ namespace internal {
V(CallFunctionTemplate) \
V(CallTrampoline) \
V(CallTrampoline_Baseline) \
+ V(CallTrampoline_Baseline_Compact) \
V(CallTrampoline_WithFeedback) \
V(CallVarargs) \
V(CallWithArrayLike) \
@@ -68,7 +70,6 @@ namespace internal {
V(EphemeronKeyBarrier) \
V(FastNewObject) \
V(ForInPrepare) \
- V(FrameDropperTrampoline) \
V(GetIteratorStackParameter) \
V(GetProperty) \
V(GrowArrayElements) \
@@ -151,17 +152,21 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptorData {
};
using Flags = base::Flags<Flag>;
+ static constexpr int kUninitializedCount = -1;
+
CallInterfaceDescriptorData() = default;
CallInterfaceDescriptorData(const CallInterfaceDescriptorData&) = delete;
CallInterfaceDescriptorData& operator=(const CallInterfaceDescriptorData&) =
delete;
- // A copy of the passed in registers and param_representations is made
- // and owned by the CallInterfaceDescriptorData.
-
- void InitializePlatformSpecific(int register_parameter_count,
- const Register* registers);
+ // The passed registers are owned by the caller, and their lifetime is
+ // expected to exceed that of this data. In practice, they are expected to
+ // be in a static local.
+ void InitializeRegisters(Flags flags, int return_count, int parameter_count,
+ StackArgumentOrder stack_order,
+ int register_parameter_count,
+ const Register* registers);
// if machine_types is null, then an array of size
// (return_count + parameter_count) will be created with
@@ -171,17 +176,13 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptorData {
// (return_count + parameter_count). Those members of the parameter array will
// be initialized from {machine_types}, and the rest initialized to
// MachineType::AnyTagged().
- void InitializePlatformIndependent(Flags flags, int return_count,
- int parameter_count,
- const MachineType* machine_types,
- int machine_types_length,
- StackArgumentOrder stack_order);
+ void InitializeTypes(const MachineType* machine_types,
+ int machine_types_length);
void Reset();
bool IsInitialized() const {
- return IsInitializedPlatformSpecific() &&
- IsInitializedPlatformIndependent();
+ return IsInitializedRegisters() && IsInitializedTypes();
}
Flags flags() const { return flags_; }
@@ -189,7 +190,6 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptorData {
int param_count() const { return param_count_; }
int register_param_count() const { return register_param_count_; }
Register register_param(int index) const { return register_params_[index]; }
- Register* register_params() const { return register_params_; }
MachineType return_type(int index) const {
DCHECK_LT(index, return_count_);
return machine_types_[index];
@@ -200,9 +200,9 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptorData {
}
StackArgumentOrder stack_order() const { return stack_order_; }
- void RestrictAllocatableRegisters(const Register* registers, int num) {
+ void RestrictAllocatableRegisters(const Register* registers, size_t num) {
DCHECK_EQ(allocatable_registers_, 0);
- for (int i = 0; i < num; ++i) {
+ for (size_t i = 0; i < num; ++i) {
allocatable_registers_ |= registers[i].bit();
}
DCHECK_GT(NumRegs(allocatable_registers_), 0);
@@ -211,17 +211,17 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptorData {
RegList allocatable_registers() const { return allocatable_registers_; }
private:
- bool IsInitializedPlatformSpecific() const {
+ bool IsInitializedRegisters() const {
const bool initialized =
- (register_param_count_ == 0 && register_params_ == nullptr) ||
- (register_param_count_ > 0 && register_params_ != nullptr);
- // Platform-specific initialization happens before platform-independent.
+ return_count_ != kUninitializedCount &&
+ param_count_ != kUninitializedCount &&
+ (register_param_count_ == 0 || register_params_ != nullptr);
+ // Register initialization happens before type initialization.
return initialized;
}
- bool IsInitializedPlatformIndependent() const {
- const bool initialized =
- return_count_ >= 0 && param_count_ >= 0 && machine_types_ != nullptr;
- // Platform-specific initialization happens before platform-independent.
+ bool IsInitializedTypes() const {
+ const bool initialized = machine_types_ != nullptr;
+ // Register initialization happens before type initialization.
return initialized;
}
@@ -229,9 +229,9 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptorData {
bool AllStackParametersAreTagged() const;
#endif // DEBUG
- int register_param_count_ = -1;
- int return_count_ = -1;
- int param_count_ = -1;
+ int register_param_count_ = kUninitializedCount;
+ int return_count_ = kUninitializedCount;
+ int param_count_ = kUninitializedCount;
Flags flags_ = kNoFlags;
StackArgumentOrder stack_order_ = StackArgumentOrder::kDefault;
@@ -242,10 +242,10 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptorData {
// |registers_params_| defines registers that are used for parameter passing.
// |machine_types_| defines machine types for resulting values and incomping
// parameters.
- // Both arrays are allocated dynamically by the InterfaceDescriptor and
- // freed on destruction. This is because static arrays cause creation of
- // runtime static initializers which we don't want.
- Register* register_params_ = nullptr;
+ // The register params array is owned by the caller, and it's expected that it
+ // is a static local stored in the caller function. The machine types are
+ // allocated dynamically by the InterfaceDescriptor and freed on destruction.
+ const Register* register_params_ = nullptr;
MachineType* machine_types_ = nullptr;
};
@@ -278,12 +278,35 @@ class V8_EXPORT_PRIVATE CallDescriptors : public AllStatic {
call_descriptor_data_[NUMBER_OF_DESCRIPTORS];
};
+#if defined(V8_TARGET_ARCH_IA32)
+// To support all possible cases, we must limit the number of register args for
+// TFS builtins on ia32 to 3. Out of the 6 allocatable registers, esi is taken
+// as the context register and ebx is the root register. One register must
+// remain available to store the jump/call target. Thus 3 registers remain for
+// arguments. The reason this applies to TFS builtins specifically is because
+// this becomes relevant for builtins used as targets of Torque function
+// pointers (which must have a register available to store the target).
+// TODO(jgruber): Ideally we should just decrement kMaxBuiltinRegisterParams but
+// that comes with its own set of complications. It's possible, but requires
+// refactoring the calling convention of other existing stubs.
+constexpr int kMaxBuiltinRegisterParams = 4;
+constexpr int kMaxTFSBuiltinRegisterParams = 3;
+#else
+constexpr int kMaxBuiltinRegisterParams = 5;
+constexpr int kMaxTFSBuiltinRegisterParams = kMaxBuiltinRegisterParams;
+#endif
+STATIC_ASSERT(kMaxTFSBuiltinRegisterParams <= kMaxBuiltinRegisterParams);
+constexpr int kJSBuiltinRegisterParams = 4;
+
+// Polymorphic base class for call interface descriptors, which defines getters
+// for the various descriptor properties via a runtime-loaded
+// CallInterfaceDescriptorData field.
class V8_EXPORT_PRIVATE CallInterfaceDescriptor {
public:
using Flags = CallInterfaceDescriptorData::Flags;
CallInterfaceDescriptor() : data_(nullptr) {}
- virtual ~CallInterfaceDescriptor() = default;
+ ~CallInterfaceDescriptor() = default;
explicit CallInterfaceDescriptor(CallDescriptors::Key key)
: data_(CallDescriptors::call_descriptor_data(key)) {}
@@ -333,7 +356,9 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptor {
return data()->stack_order();
}
- static const Register ContextRegister();
+ static constexpr inline Register ContextRegister() {
+ return kContextRegister;
+ }
const char* DebugName() const;
@@ -344,39 +369,13 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptor {
protected:
const CallInterfaceDescriptorData* data() const { return data_; }
- virtual void InitializePlatformSpecific(CallInterfaceDescriptorData* data) {
- UNREACHABLE();
- }
-
- // Initializes |data| to an unspecified state, for platforms that haven't
- // implemented a given builtin.
- static void InitializePlatformUnimplemented(CallInterfaceDescriptorData* data,
- int register_parameter_count) {
- DefaultInitializePlatformSpecific(data,
- std::min(register_parameter_count, 4));
- }
-
- virtual void InitializePlatformIndependent(
- CallInterfaceDescriptorData* data) {
- // Default descriptor configuration: one result, all parameters are passed
- // in registers and all parameters have MachineType::AnyTagged() type.
- data->InitializePlatformIndependent(
- CallInterfaceDescriptorData::kNoFlags, 1, data->register_param_count(),
- nullptr, 0, StackArgumentOrder::kDefault);
- }
-
- // Initializes |data| using the platform dependent default set of registers.
- // It is intended to be used for TurboFan stubs when particular set of
- // registers does not matter.
- static void DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count);
-
- // Initializes |data| using the platform dependent default set of registers
- // for JavaScript-compatible calling convention.
- // It is intended to be used for TurboFan stubs being called with JavaScript
- // linkage + additional parameters on registers and stack.
- static void JSDefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int non_js_register_parameter_count);
+ // Helper for defining the default register set.
+ //
+ // Use auto for the return type to allow different architectures to have
+ // differently sized default register arrays.
+ static constexpr inline auto DefaultRegisterArray();
+ static constexpr inline std::array<Register, kJSBuiltinRegisterParams>
+ DefaultJSRegisterArray();
// Checks if float parameters are not assigned invalid registers.
bool CheckFloatingPointParameters(CallInterfaceDescriptorData* data) {
@@ -393,104 +392,164 @@ class V8_EXPORT_PRIVATE CallInterfaceDescriptor {
bool IsValidFloatParameterRegister(Register reg);
private:
+ const CallInterfaceDescriptorData* data_;
+};
+
+// CRTP base class for call interface descriptors, which defines static getters
+// for the various descriptor properties based on static values defined in the
+// subclass.
+template <typename DerivedDescriptor>
+class StaticCallInterfaceDescriptor : public CallInterfaceDescriptor {
+ public:
+ // ===========================================================================
+ // The following are the descriptor's CRTP configuration points, overwritable
+ // by DerivedDescriptor.
+ static constexpr int kReturnCount =
+ CallInterfaceDescriptorData::kUninitializedCount;
+ static constexpr int kParameterCount =
+ CallInterfaceDescriptorData::kUninitializedCount;
+ static constexpr bool kNoContext = false;
+ static constexpr bool kAllowVarArgs = false;
+ static constexpr bool kNoStackScan = false;
+ static constexpr auto kStackArgumentOrder = StackArgumentOrder::kDefault;
+
+ // The set of registers available to the parameters, as a
+ // std::array<Register,N>. Can be larger or smaller than kParameterCount; if
+ // larger then any remaining registers are ignored; if smaller, any parameters
+ // after registers().size() will be stack registers.
+ //
+ // Defaults to CallInterfaceDescriptor::DefaultRegisterArray().
+ static constexpr inline auto registers();
+
+ // An additional limit on the number of register parameters allowed. This is
+ // here so that it can be overwritten to kMaxTFSBuiltinRegisterParams for TFS
+ // builtins, see comment on kMaxTFSBuiltinRegisterParams above.
+ static constexpr int kMaxRegisterParams = kMaxBuiltinRegisterParams;
+
+ // If set to true, the descriptor will restrict the set of allocatable
+ // registers to the set returned by registers(). Then, it is expected that
+ // the first kParameterCount registers() are the parameters of the builtin.
+ static constexpr bool kRestrictAllocatableRegisters = false;
+
+ // End of customization points.
+ // ===========================================================================
+
+ static constexpr inline Flags flags() {
+ return Flags((DerivedDescriptor::kNoContext
+ ? CallInterfaceDescriptorData::kNoContext
+ : 0) |
+ (DerivedDescriptor::kAllowVarArgs
+ ? CallInterfaceDescriptorData::kAllowVarArgs
+ : 0) |
+ (DerivedDescriptor::kNoStackScan
+ ? CallInterfaceDescriptorData::kNoStackScan
+ : 0));
+ }
+ static constexpr inline bool AllowVarArgs() {
+ return DerivedDescriptor::kAllowVarArgs;
+ }
+ static constexpr inline bool HasContextParameter() {
+ return !DerivedDescriptor::kNoContext;
+ }
+
+ static constexpr inline int GetReturnCount();
+ static constexpr inline int GetParameterCount();
+ static constexpr inline int GetRegisterParameterCount();
+ static constexpr inline int GetStackParameterCount();
+ static constexpr inline Register* GetRegisterData();
+
+ static constexpr inline Register GetRegisterParameter(int i) {
+ return DerivedDescriptor::registers()[i];
+ }
+
+ explicit StaticCallInterfaceDescriptor(CallDescriptors::Key key)
+ : CallInterfaceDescriptor(key) {}
+
+ private:
// {CallDescriptors} is allowed to call the private {Initialize} method.
friend class CallDescriptors;
- const CallInterfaceDescriptorData* data_;
+ inline void Initialize(CallInterfaceDescriptorData* data);
- void Initialize(CallInterfaceDescriptorData* data) {
- // The passed pointer should be a modifiable pointer to our own data.
- DCHECK_EQ(data, data_);
- DCHECK(!data->IsInitialized());
- InitializePlatformSpecific(data);
- InitializePlatformIndependent(data);
- DCHECK(data->IsInitialized());
- DCHECK(CheckFloatingPointParameters(data));
+ // Set up the types of the descriptor. This is a static function, so that it
+ // is overwritable by subclasses. By default, all parameters have
+ // MachineType::AnyTagged() type.
+ static void InitializeTypes(CallInterfaceDescriptorData* data) {
+ data->InitializeTypes(nullptr, 0);
}
};
-#define DECLARE_DESCRIPTOR_WITH_BASE(name, base) \
- public: \
- explicit name() : base(key()) {} \
- static inline CallDescriptors::Key key();
+template <typename Descriptor>
+class StaticJSCallInterfaceDescriptor
+ : public StaticCallInterfaceDescriptor<Descriptor> {
+ public:
+ static constexpr auto kStackArgumentOrder = StackArgumentOrder::kJS;
+ static constexpr inline auto registers();
-#if defined(V8_TARGET_ARCH_IA32)
-// To support all possible cases, we must limit the number of register args for
-// TFS builtins on ia32 to 3. Out of the 6 allocatable registers, esi is taken
-// as the context register and ebx is the root register. One register must
-// remain available to store the jump/call target. Thus 3 registers remain for
-// arguments. The reason this applies to TFS builtins specifically is because
-// this becomes relevant for builtins used as targets of Torque function
-// pointers (which must have a register available to store the target).
-// TODO(jgruber): Ideally we should just decrement kMaxBuiltinRegisterParams but
-// that comes with its own set of complications. It's possible, but requires
-// refactoring the calling convention of other existing stubs.
-constexpr int kMaxBuiltinRegisterParams = 4;
-constexpr int kMaxTFSBuiltinRegisterParams = 3;
-#else
-constexpr int kMaxBuiltinRegisterParams = 5;
-constexpr int kMaxTFSBuiltinRegisterParams = kMaxBuiltinRegisterParams;
-#endif
-STATIC_ASSERT(kMaxTFSBuiltinRegisterParams <= kMaxBuiltinRegisterParams);
+ using StaticCallInterfaceDescriptor<
+ Descriptor>::StaticCallInterfaceDescriptor;
+};
-#define DECLARE_DEFAULT_DESCRIPTOR(name, base) \
- DECLARE_DESCRIPTOR_WITH_BASE(name, base) \
- protected: \
- static const int kRegisterParams = \
- kParameterCount > kMaxTFSBuiltinRegisterParams \
- ? kMaxTFSBuiltinRegisterParams \
- : kParameterCount; \
- static const int kStackParams = kParameterCount - kRegisterParams; \
- void InitializePlatformSpecific(CallInterfaceDescriptorData* data) \
- override { \
- DefaultInitializePlatformSpecific(data, kRegisterParams); \
- } \
- void InitializePlatformIndependent(CallInterfaceDescriptorData* data) \
- override { \
- data->InitializePlatformIndependent(Flags(kDescriptorFlags), kReturnCount, \
- kParameterCount, nullptr, 0, \
- kStackArgumentOrder); \
- } \
- name(CallDescriptors::Key key) : base(key) {} \
- \
- public:
-
-#define DECLARE_JS_COMPATIBLE_DESCRIPTOR(name, base, \
- non_js_reg_parameters_count) \
- DECLARE_DESCRIPTOR_WITH_BASE(name, base) \
- protected: \
- void InitializePlatformSpecific(CallInterfaceDescriptorData* data) \
- override { \
- JSDefaultInitializePlatformSpecific(data, non_js_reg_parameters_count); \
- } \
- name(CallDescriptors::Key key) : base(key) {} \
- \
- public:
-
-#define DEFINE_FLAGS_AND_RESULT_AND_PARAMETERS(flags, stack_order, \
- return_count, ...) \
- static constexpr int kDescriptorFlags = flags; \
- static constexpr int kReturnCount = return_count; \
- static constexpr StackArgumentOrder kStackArgumentOrder = stack_order; \
- enum ParameterIndices { \
- __dummy = -1, /* to be able to pass zero arguments */ \
- ##__VA_ARGS__, \
- \
- kParameterCount, \
- kContext = kParameterCount /* implicit parameter */ \
- };
+template <Builtins::Name kBuiltin>
+struct CallInterfaceDescriptorFor;
+
+// Stub class replacing std::array<Register, 0>, as a workaround for MSVC's
+// https://github.com/microsoft/STL/issues/942
+struct EmptyRegisterArray {
+ Register* data() { return nullptr; }
+ size_t size() const { return 0; }
+ Register operator[](size_t i) const { UNREACHABLE(); }
+};
-#define DEFINE_RESULT_AND_PARAMETERS(return_count, ...) \
- DEFINE_FLAGS_AND_RESULT_AND_PARAMETERS( \
- CallInterfaceDescriptorData::kNoFlags, StackArgumentOrder::kDefault, \
- return_count, ##__VA_ARGS__)
+// Helper method for defining an array of registers for the various
+// Descriptor::registers() methods.
+template <typename... Registers>
+constexpr std::array<Register, 1 + sizeof...(Registers)> RegisterArray(
+ Register first_reg, Registers... regs) {
+ return {first_reg, regs...};
+}
+constexpr EmptyRegisterArray RegisterArray() { return {}; }
+
+#define DECLARE_DESCRIPTOR_WITH_BASE(name, base) \
+ public: \
+ /* StaticCallInterfaceDescriptor can call Initialize methods */ \
+ friend class StaticCallInterfaceDescriptor<name>; \
+ explicit name() : base(key()) {} \
+ static inline CallDescriptors::Key key();
+
+#define DECLARE_DEFAULT_DESCRIPTOR(name) \
+ DECLARE_DESCRIPTOR_WITH_BASE(name, StaticCallInterfaceDescriptor) \
+ static constexpr int kMaxRegisterParams = kMaxTFSBuiltinRegisterParams; \
+ \
+ protected: \
+ explicit name(CallDescriptors::Key key) \
+ : StaticCallInterfaceDescriptor(key) {} \
+ \
+ public:
+
+#define DECLARE_JS_COMPATIBLE_DESCRIPTOR(name) \
+ DECLARE_DESCRIPTOR_WITH_BASE(name, StaticJSCallInterfaceDescriptor) \
+ protected: \
+ explicit name(CallDescriptors::Key key) \
+ : StaticJSCallInterfaceDescriptor(key) {} \
+ \
+ public:
+
+#define DEFINE_RESULT_AND_PARAMETERS(return_count, ...) \
+ static constexpr int kReturnCount = return_count; \
+ enum ParameterIndices { \
+ __dummy = -1, /* to be able to pass zero arguments */ \
+ ##__VA_ARGS__, \
+ \
+ kParameterCount, \
+ kContext = kParameterCount /* implicit parameter */ \
+ };
// This is valid only for builtins that use EntryFrame, which does not scan
// stack arguments on GC.
#define DEFINE_PARAMETERS_ENTRY(...) \
- static constexpr int kDescriptorFlags = \
- CallInterfaceDescriptorData::kNoContext | \
- CallInterfaceDescriptorData::kNoStackScan; \
+ static constexpr bool kNoContext = true; \
+ static constexpr bool kNoStackScan = true; \
static constexpr StackArgumentOrder kStackArgumentOrder = \
StackArgumentOrder::kDefault; \
static constexpr int kReturnCount = 1; \
@@ -501,37 +560,37 @@ STATIC_ASSERT(kMaxTFSBuiltinRegisterParams <= kMaxBuiltinRegisterParams);
kParameterCount \
};
-#define DEFINE_PARAMETERS(...) \
- DEFINE_FLAGS_AND_RESULT_AND_PARAMETERS( \
- CallInterfaceDescriptorData::kNoFlags, StackArgumentOrder::kDefault, 1, \
- ##__VA_ARGS__)
+#define DEFINE_PARAMETERS(...) DEFINE_RESULT_AND_PARAMETERS(1, ##__VA_ARGS__)
+
+#define DEFINE_PARAMETERS_NO_CONTEXT(...) \
+ DEFINE_PARAMETERS(__VA_ARGS__) \
+ static constexpr bool kNoContext = true;
+
+#define DEFINE_PARAMETERS_VARARGS(...) \
+ DEFINE_PARAMETERS(__VA_ARGS__) \
+ static constexpr bool kAllowVarArgs = true; \
+ static constexpr StackArgumentOrder kStackArgumentOrder = \
+ StackArgumentOrder::kJS;
-#define DEFINE_PARAMETERS_NO_CONTEXT(...) \
- DEFINE_FLAGS_AND_RESULT_AND_PARAMETERS( \
- CallInterfaceDescriptorData::kNoContext, StackArgumentOrder::kDefault, \
- 1, ##__VA_ARGS__)
+#define DEFINE_PARAMETERS_NO_CONTEXT_VARARGS(...) \
+ DEFINE_PARAMETERS_NO_CONTEXT(__VA_ARGS__) \
+ static constexpr bool kAllowVarArgs = true; \
+ static constexpr StackArgumentOrder kStackArgumentOrder = \
+ StackArgumentOrder::kJS;
-#define DEFINE_PARAMETERS_VARARGS(...) \
- DEFINE_FLAGS_AND_RESULT_AND_PARAMETERS( \
- CallInterfaceDescriptorData::kAllowVarArgs, StackArgumentOrder::kJS, 1, \
- ##__VA_ARGS__)
+#define DEFINE_RESULT_AND_PARAMETERS_NO_CONTEXT(return_count, ...) \
+ DEFINE_RESULT_AND_PARAMETERS(return_count, ##__VA_ARGS__) \
+ static constexpr bool kNoContext = true;
-#define DEFINE_RESULT_AND_PARAMETER_TYPES_WITH_FLAG(flag, ...) \
- void InitializePlatformIndependent(CallInterfaceDescriptorData* data) \
- override { \
+#define DEFINE_RESULT_AND_PARAMETER_TYPES(...) \
+ static void InitializeTypes(CallInterfaceDescriptorData* data) { \
MachineType machine_types[] = {__VA_ARGS__}; \
static_assert( \
kReturnCount + kParameterCount == arraysize(machine_types), \
"Parameter names definition is not consistent with parameter types"); \
- data->InitializePlatformIndependent( \
- Flags(flag | kDescriptorFlags), kReturnCount, kParameterCount, \
- machine_types, arraysize(machine_types), kStackArgumentOrder); \
+ data->InitializeTypes(machine_types, arraysize(machine_types)); \
}
-#define DEFINE_RESULT_AND_PARAMETER_TYPES(...) \
- DEFINE_RESULT_AND_PARAMETER_TYPES_WITH_FLAG( \
- CallInterfaceDescriptorData::kNoFlags, __VA_ARGS__)
-
#define DEFINE_PARAMETER_TYPES(...) \
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::AnyTagged() /* result */, \
##__VA_ARGS__)
@@ -539,8 +598,7 @@ STATIC_ASSERT(kMaxTFSBuiltinRegisterParams <= kMaxBuiltinRegisterParams);
// When the extra arguments described here are located in the stack, they are
// just above the return address in the frame (first arguments).
#define DEFINE_JS_PARAMETERS(...) \
- static constexpr int kDescriptorFlags = \
- CallInterfaceDescriptorData::kAllowVarArgs; \
+ static constexpr bool kAllowVarArgs = true; \
static constexpr int kReturnCount = 1; \
static constexpr StackArgumentOrder kStackArgumentOrder = \
StackArgumentOrder::kJS; \
@@ -554,9 +612,8 @@ STATIC_ASSERT(kMaxTFSBuiltinRegisterParams <= kMaxBuiltinRegisterParams);
};
#define DEFINE_JS_PARAMETERS_NO_CONTEXT(...) \
- static constexpr int kDescriptorFlags = \
- CallInterfaceDescriptorData::kAllowVarArgs | \
- CallInterfaceDescriptorData::kNoContext; \
+ static constexpr bool kAllowVarArgs = true; \
+ static constexpr bool kNoContext = true; \
static constexpr int kReturnCount = 1; \
static constexpr StackArgumentOrder kStackArgumentOrder = \
StackArgumentOrder::kJS; \
@@ -574,63 +631,22 @@ STATIC_ASSERT(kMaxTFSBuiltinRegisterParams <= kMaxBuiltinRegisterParams);
MachineType::Int32(), /* kActualArgumentsCount */ \
##__VA_ARGS__)
-#define DECLARE_DESCRIPTOR(name, base) \
- DECLARE_DESCRIPTOR_WITH_BASE(name, base) \
- protected: \
- void InitializePlatformSpecific(CallInterfaceDescriptorData* data) override; \
- name(CallDescriptors::Key key) : base(key) {} \
- \
+#define DECLARE_DESCRIPTOR(name) \
+ DECLARE_DESCRIPTOR_WITH_BASE(name, StaticCallInterfaceDescriptor) \
+ protected: \
+ explicit name(CallDescriptors::Key key) \
+ : StaticCallInterfaceDescriptor(key) {} \
+ \
public:
-class V8_EXPORT_PRIVATE VoidDescriptor : public CallInterfaceDescriptor {
+class V8_EXPORT_PRIVATE VoidDescriptor
+ : public StaticCallInterfaceDescriptor<VoidDescriptor> {
public:
DEFINE_PARAMETERS()
DEFINE_PARAMETER_TYPES()
- DECLARE_DESCRIPTOR(VoidDescriptor, CallInterfaceDescriptor)
-};
-
-// This class is subclassed by Torque-generated call interface descriptors.
-template <int return_count, int parameter_count, bool has_context_parameter>
-class TorqueInterfaceDescriptor : public CallInterfaceDescriptor {
- public:
- static constexpr int kDescriptorFlags =
- has_context_parameter ? CallInterfaceDescriptorData::kNoFlags
- : CallInterfaceDescriptorData::kNoContext;
- static constexpr int kParameterCount = parameter_count;
- enum ParameterIndices { kContext = kParameterCount };
- template <int i>
- static ParameterIndices ParameterIndex() {
- STATIC_ASSERT(0 <= i && i < kParameterCount);
- return static_cast<ParameterIndices>(i);
- }
- static constexpr int kReturnCount = return_count;
-
- using CallInterfaceDescriptor::CallInterfaceDescriptor;
+ DECLARE_DESCRIPTOR(VoidDescriptor)
- protected:
- static const int kRegisterParams =
- kParameterCount > kMaxTFSBuiltinRegisterParams
- ? kMaxTFSBuiltinRegisterParams
- : kParameterCount;
- static const int kStackParams = kParameterCount - kRegisterParams;
- virtual std::vector<MachineType> ReturnType() = 0;
- virtual std::array<MachineType, kParameterCount> ParameterTypes() = 0;
- void InitializePlatformSpecific(CallInterfaceDescriptorData* data) override {
- DefaultInitializePlatformSpecific(data, kRegisterParams);
- }
- void InitializePlatformIndependent(
- CallInterfaceDescriptorData* data) override {
- std::vector<MachineType> machine_types = ReturnType();
- DCHECK_EQ(kReturnCount, machine_types.size());
- auto parameter_types = ParameterTypes();
- machine_types.insert(machine_types.end(), parameter_types.begin(),
- parameter_types.end());
- DCHECK_EQ(kReturnCount + kParameterCount, machine_types.size());
- data->InitializePlatformIndependent(Flags(kDescriptorFlags), kReturnCount,
- kParameterCount, machine_types.data(),
- static_cast<int>(machine_types.size()),
- StackArgumentOrder::kDefault);
- }
+ static constexpr auto registers();
};
// Dummy descriptor used to mark builtins that don't yet have their proper
@@ -646,180 +662,171 @@ using CCallDescriptor = VoidDescriptor;
// here.
using DeoptimizationEntryDescriptor = VoidDescriptor;
-class AllocateDescriptor : public CallInterfaceDescriptor {
+class AllocateDescriptor
+ : public StaticCallInterfaceDescriptor<AllocateDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kRequestedSize)
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::TaggedPointer(), // result 1
MachineType::IntPtr()) // kRequestedSize
- DECLARE_DESCRIPTOR(AllocateDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(AllocateDescriptor)
+
+ static constexpr auto registers();
};
// This descriptor defines the JavaScript calling convention that can be used
// by stubs: target, new.target, argc (not including the receiver) and context
// are passed in registers while receiver and the rest of the JS arguments are
// passed on the stack.
-class JSTrampolineDescriptor : public CallInterfaceDescriptor {
+class JSTrampolineDescriptor
+ : public StaticJSCallInterfaceDescriptor<JSTrampolineDescriptor> {
public:
DEFINE_JS_PARAMETERS()
DEFINE_JS_PARAMETER_TYPES()
- DECLARE_JS_COMPATIBLE_DESCRIPTOR(JSTrampolineDescriptor,
- CallInterfaceDescriptor, 0)
+ DECLARE_JS_COMPATIBLE_DESCRIPTOR(JSTrampolineDescriptor)
};
-class ContextOnlyDescriptor : public CallInterfaceDescriptor {
+class ContextOnlyDescriptor
+ : public StaticCallInterfaceDescriptor<ContextOnlyDescriptor> {
public:
DEFINE_PARAMETERS()
DEFINE_PARAMETER_TYPES()
- DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ContextOnlyDescriptor)
+
+ static constexpr auto registers();
};
-class NoContextDescriptor : public CallInterfaceDescriptor {
+class NoContextDescriptor
+ : public StaticCallInterfaceDescriptor<NoContextDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT()
DEFINE_PARAMETER_TYPES()
- DECLARE_DESCRIPTOR(NoContextDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(NoContextDescriptor)
+
+ static constexpr auto registers();
};
// LoadDescriptor is used by all stubs that implement Load/KeyedLoad ICs.
-class LoadDescriptor : public CallInterfaceDescriptor {
+class LoadDescriptor : public StaticCallInterfaceDescriptor<LoadDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kName, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kReceiver
MachineType::AnyTagged(), // kName
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(LoadDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(LoadDescriptor)
+
+ static constexpr inline Register ReceiverRegister();
+ static constexpr inline Register NameRegister();
+ static constexpr inline Register SlotRegister();
- static const Register ReceiverRegister();
- static const Register NameRegister();
- static const Register SlotRegister();
+ static constexpr auto registers();
};
// LoadBaselineDescriptor is a load descriptor that does not take a context as
// input.
-class LoadBaselineDescriptor : public CallInterfaceDescriptor {
+class LoadBaselineDescriptor
+ : public StaticCallInterfaceDescriptor<LoadBaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kReceiver, kName, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kReceiver
MachineType::AnyTagged(), // kName
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(LoadBaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(LoadBaselineDescriptor)
+
+ static constexpr auto registers();
};
-class LoadGlobalNoFeedbackDescriptor : public CallInterfaceDescriptor {
+class LoadGlobalNoFeedbackDescriptor
+ : public StaticCallInterfaceDescriptor<LoadGlobalNoFeedbackDescriptor> {
public:
DEFINE_PARAMETERS(kName, kICKind)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kName
MachineType::TaggedSigned()) // kICKind
- DECLARE_DESCRIPTOR(LoadGlobalNoFeedbackDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(LoadGlobalNoFeedbackDescriptor)
- static const Register NameRegister() {
- return LoadDescriptor::NameRegister();
- }
+ static constexpr inline Register ICKindRegister();
- static const Register ICKindRegister() {
- return LoadDescriptor::SlotRegister();
- }
+ static constexpr auto registers();
};
-class LoadNoFeedbackDescriptor : public LoadGlobalNoFeedbackDescriptor {
+class LoadNoFeedbackDescriptor
+ : public StaticCallInterfaceDescriptor<LoadNoFeedbackDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kName, kICKind)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kReceiver
MachineType::AnyTagged(), // kName
MachineType::TaggedSigned()) // kICKind
- DECLARE_DESCRIPTOR(LoadNoFeedbackDescriptor, LoadGlobalNoFeedbackDescriptor)
-
- static const Register ReceiverRegister() {
- return LoadDescriptor::ReceiverRegister();
- }
+ DECLARE_DESCRIPTOR(LoadNoFeedbackDescriptor)
- static const Register NameRegister() {
- return LoadGlobalNoFeedbackDescriptor::NameRegister();
- }
+ static constexpr inline Register ICKindRegister();
- static const Register ICKindRegister() {
- return LoadGlobalNoFeedbackDescriptor::ICKindRegister();
- }
+ static constexpr auto registers();
};
-class LoadGlobalDescriptor : public CallInterfaceDescriptor {
+class LoadGlobalDescriptor
+ : public StaticCallInterfaceDescriptor<LoadGlobalDescriptor> {
public:
DEFINE_PARAMETERS(kName, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kName
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(LoadGlobalDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(LoadGlobalDescriptor)
- static const Register NameRegister() {
- return LoadDescriptor::NameRegister();
- }
-
- static const Register SlotRegister() {
- return LoadDescriptor::SlotRegister();
- }
+ static constexpr auto registers();
};
-class LoadGlobalBaselineDescriptor : public CallInterfaceDescriptor {
+class LoadGlobalBaselineDescriptor
+ : public StaticCallInterfaceDescriptor<LoadGlobalBaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kName, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kName
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(LoadGlobalBaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(LoadGlobalBaselineDescriptor)
+
+ static constexpr auto registers();
};
-class LookupBaselineDescriptor : public CallInterfaceDescriptor {
+class LookupBaselineDescriptor
+ : public StaticCallInterfaceDescriptor<LookupBaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kName, kDepth, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kName
MachineType::AnyTagged(), // kDepth
MachineType::AnyTagged()) // kSlot
- DECLARE_DESCRIPTOR(LookupBaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(LookupBaselineDescriptor)
};
-class StoreDescriptor : public CallInterfaceDescriptor {
+class StoreDescriptor : public StaticCallInterfaceDescriptor<StoreDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kName, kValue, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kReceiver
MachineType::AnyTagged(), // kName
MachineType::AnyTagged(), // kValue
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(StoreDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(StoreDescriptor)
- static const Register ReceiverRegister();
- static const Register NameRegister();
- static const Register ValueRegister();
- static const Register SlotRegister();
+ static constexpr inline Register ReceiverRegister();
+ static constexpr inline Register NameRegister();
+ static constexpr inline Register ValueRegister();
+ static constexpr inline Register SlotRegister();
-#if V8_TARGET_ARCH_IA32
- static const bool kPassLastArgsOnStack = true;
-#else
- static const bool kPassLastArgsOnStack = false;
-#endif
-
- // Pass value and slot through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 2 : 0;
+ static constexpr auto registers();
};
-class StoreBaselineDescriptor : public CallInterfaceDescriptor {
+class StoreBaselineDescriptor
+ : public StaticCallInterfaceDescriptor<StoreBaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kReceiver, kName, kValue, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kReceiver
MachineType::AnyTagged(), // kName
MachineType::AnyTagged(), // kValue
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(StoreBaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(StoreBaselineDescriptor)
-#if V8_TARGET_ARCH_IA32
- static const bool kPassLastArgsOnStack = true;
-#else
- static const bool kPassLastArgsOnStack = false;
-#endif
-
- // Pass value and slot through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 2 : 0;
+ static constexpr auto registers();
};
-class StoreTransitionDescriptor : public StoreDescriptor {
+class StoreTransitionDescriptor
+ : public StaticCallInterfaceDescriptor<StoreTransitionDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kName, kMap, kValue, kSlot, kVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kReceiver
@@ -828,17 +835,15 @@ class StoreTransitionDescriptor : public StoreDescriptor {
MachineType::AnyTagged(), // kValue
MachineType::TaggedSigned(), // kSlot
MachineType::AnyTagged()) // kVector
- DECLARE_DESCRIPTOR(StoreTransitionDescriptor, StoreDescriptor)
+ DECLARE_DESCRIPTOR(StoreTransitionDescriptor)
- static const Register MapRegister();
- static const Register SlotRegister();
- static const Register VectorRegister();
+ static constexpr inline Register MapRegister();
- // Pass value, slot and vector through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 3 : 0;
+ static constexpr auto registers();
};
-class StoreWithVectorDescriptor : public StoreDescriptor {
+class StoreWithVectorDescriptor
+ : public StaticCallInterfaceDescriptor<StoreWithVectorDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kName, kValue, kSlot, kVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kReceiver
@@ -846,72 +851,52 @@ class StoreWithVectorDescriptor : public StoreDescriptor {
MachineType::AnyTagged(), // kValue
MachineType::TaggedSigned(), // kSlot
MachineType::AnyTagged()) // kVector
- DECLARE_DESCRIPTOR(StoreWithVectorDescriptor, StoreDescriptor)
+ DECLARE_DESCRIPTOR(StoreWithVectorDescriptor)
- static const Register VectorRegister();
+ static constexpr inline Register VectorRegister();
- // Pass value, slot and vector through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 3 : 0;
+ static constexpr auto registers();
};
-class StoreGlobalDescriptor : public CallInterfaceDescriptor {
+class StoreGlobalDescriptor
+ : public StaticCallInterfaceDescriptor<StoreGlobalDescriptor> {
public:
DEFINE_PARAMETERS(kName, kValue, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kName
MachineType::AnyTagged(), // kValue
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(StoreGlobalDescriptor, CallInterfaceDescriptor)
-
- static const bool kPassLastArgsOnStack =
- StoreDescriptor::kPassLastArgsOnStack;
- // Pass value and slot through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 2 : 0;
-
- static const Register NameRegister() {
- return StoreDescriptor::NameRegister();
- }
-
- static const Register ValueRegister() {
- return StoreDescriptor::ValueRegister();
- }
+ DECLARE_DESCRIPTOR(StoreGlobalDescriptor)
- static const Register SlotRegister() {
- return StoreDescriptor::SlotRegister();
- }
+ static constexpr auto registers();
};
-class StoreGlobalBaselineDescriptor : public CallInterfaceDescriptor {
+class StoreGlobalBaselineDescriptor
+ : public StaticCallInterfaceDescriptor<StoreGlobalBaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kName, kValue, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kName
MachineType::AnyTagged(), // kValue
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(StoreGlobalBaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(StoreGlobalBaselineDescriptor)
- static const bool kPassLastArgsOnStack =
- StoreDescriptor::kPassLastArgsOnStack;
- // Pass value and slot through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 2 : 0;
+ static constexpr auto registers();
};
-class StoreGlobalWithVectorDescriptor : public StoreGlobalDescriptor {
+class StoreGlobalWithVectorDescriptor
+ : public StaticCallInterfaceDescriptor<StoreGlobalWithVectorDescriptor> {
public:
DEFINE_PARAMETERS(kName, kValue, kSlot, kVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kName
MachineType::AnyTagged(), // kValue
MachineType::TaggedSigned(), // kSlot
MachineType::AnyTagged()) // kVector
- DECLARE_DESCRIPTOR(StoreGlobalWithVectorDescriptor, StoreGlobalDescriptor)
-
- static const Register VectorRegister() {
- return StoreWithVectorDescriptor::VectorRegister();
- }
+ DECLARE_DESCRIPTOR(StoreGlobalWithVectorDescriptor)
- // Pass value, slot and vector through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 3 : 0;
+ static constexpr auto registers();
};
-class LoadWithVectorDescriptor : public LoadDescriptor {
+class LoadWithVectorDescriptor
+ : public StaticCallInterfaceDescriptor<LoadWithVectorDescriptor> {
public:
// TODO(v8:9497): Revert the Machine type for kSlot to the
// TaggedSigned once Torque can emit better call descriptors
@@ -920,24 +905,19 @@ class LoadWithVectorDescriptor : public LoadDescriptor {
MachineType::AnyTagged(), // kName
MachineType::AnyTagged(), // kSlot
MachineType::AnyTagged()) // kVector
- DECLARE_DESCRIPTOR(LoadWithVectorDescriptor, LoadDescriptor)
+ DECLARE_DESCRIPTOR(LoadWithVectorDescriptor)
- static const Register VectorRegister();
-
-#if V8_TARGET_ARCH_IA32
- static const bool kPassLastArgsOnStack = true;
-#else
- static const bool kPassLastArgsOnStack = false;
-#endif
+ static constexpr inline Register VectorRegister();
- // Pass vector through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 1 : 0;
+ static constexpr auto registers();
};
// Like LoadWithVectorDescriptor, except we pass the receiver (the object which
// should be used as the receiver for accessor function calls) and the lookup
// start object separately.
-class LoadWithReceiverAndVectorDescriptor : public LoadWithVectorDescriptor {
+class LoadWithReceiverAndVectorDescriptor
+ : public StaticCallInterfaceDescriptor<
+ LoadWithReceiverAndVectorDescriptor> {
public:
// TODO(v8:9497): Revert the Machine type for kSlot to the
// TaggedSigned once Torque can emit better call descriptors
@@ -947,22 +927,15 @@ class LoadWithReceiverAndVectorDescriptor : public LoadWithVectorDescriptor {
MachineType::AnyTagged(), // kName
MachineType::AnyTagged(), // kSlot
MachineType::AnyTagged()) // kVector
- DECLARE_DESCRIPTOR(LoadWithReceiverAndVectorDescriptor,
- LoadWithVectorDescriptor)
+ DECLARE_DESCRIPTOR(LoadWithReceiverAndVectorDescriptor)
- static const Register LookupStartObjectRegister();
+ static constexpr inline Register LookupStartObjectRegister();
-#if V8_TARGET_ARCH_IA32
- static const bool kPassLastArgsOnStack = true;
-#else
- static const bool kPassLastArgsOnStack = false;
-#endif
-
- // Pass vector through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 1 : 0;
+ static constexpr auto registers();
};
-class LoadWithReceiverBaselineDescriptor : public LoadBaselineDescriptor {
+class LoadWithReceiverBaselineDescriptor
+ : public StaticCallInterfaceDescriptor<LoadWithReceiverBaselineDescriptor> {
public:
// TODO(v8:9497): Revert the Machine type for kSlot to the
// TaggedSigned once Torque can emit better call descriptors
@@ -971,29 +944,27 @@ class LoadWithReceiverBaselineDescriptor : public LoadBaselineDescriptor {
MachineType::AnyTagged(), // kLookupStartObject
MachineType::AnyTagged(), // kName
MachineType::AnyTagged()) // kSlot
- DECLARE_DESCRIPTOR(LoadWithReceiverBaselineDescriptor, LoadBaselineDescriptor)
+ DECLARE_DESCRIPTOR(LoadWithReceiverBaselineDescriptor)
+
+ static constexpr auto registers();
};
-class LoadGlobalWithVectorDescriptor : public LoadGlobalDescriptor {
+class LoadGlobalWithVectorDescriptor
+ : public StaticCallInterfaceDescriptor<LoadGlobalWithVectorDescriptor> {
public:
DEFINE_PARAMETERS(kName, kSlot, kVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kName
MachineType::TaggedSigned(), // kSlot
MachineType::AnyTagged()) // kVector
- DECLARE_DESCRIPTOR(LoadGlobalWithVectorDescriptor, LoadGlobalDescriptor)
+ DECLARE_DESCRIPTOR(LoadGlobalWithVectorDescriptor)
-#if V8_TARGET_ARCH_IA32
- // On ia32, LoadWithVectorDescriptor passes vector on the stack and thus we
- // need to choose a new register here.
- static const Register VectorRegister() { return edx; }
-#else
- static const Register VectorRegister() {
- return LoadWithVectorDescriptor::VectorRegister();
- }
-#endif
+ static constexpr inline Register VectorRegister();
+
+ static constexpr auto registers();
};
-class DynamicCheckMapsDescriptor final : public CallInterfaceDescriptor {
+class DynamicCheckMapsDescriptor final
+ : public StaticCallInterfaceDescriptor<DynamicCheckMapsDescriptor> {
public:
DEFINE_PARAMETERS(kMap, kSlot, kHandler)
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::Int32(), // return val
@@ -1001,20 +972,28 @@ class DynamicCheckMapsDescriptor final : public CallInterfaceDescriptor {
MachineType::IntPtr(), // kSlot
MachineType::TaggedSigned()) // kHandler
- DECLARE_DESCRIPTOR(DynamicCheckMapsDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(DynamicCheckMapsDescriptor)
+
+ static constexpr auto registers();
+ static constexpr bool kRestrictAllocatableRegisters = true;
};
-class FastNewObjectDescriptor : public CallInterfaceDescriptor {
+class FastNewObjectDescriptor
+ : public StaticCallInterfaceDescriptor<FastNewObjectDescriptor> {
public:
DEFINE_PARAMETERS(kTarget, kNewTarget)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::AnyTagged()) // kNewTarget
- DECLARE_DESCRIPTOR(FastNewObjectDescriptor, CallInterfaceDescriptor)
- static const Register TargetRegister();
- static const Register NewTargetRegister();
+ DECLARE_DESCRIPTOR(FastNewObjectDescriptor)
+
+ static constexpr inline Register TargetRegister();
+ static constexpr inline Register NewTargetRegister();
+
+ static constexpr auto registers();
};
-class RecordWriteDescriptor final : public CallInterfaceDescriptor {
+class RecordWriteDescriptor final
+ : public StaticCallInterfaceDescriptor<RecordWriteDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kObject, kSlot, kRememberedSet, kFPMode)
DEFINE_PARAMETER_TYPES(MachineType::TaggedPointer(), // kObject
@@ -1022,90 +1001,119 @@ class RecordWriteDescriptor final : public CallInterfaceDescriptor {
MachineType::TaggedSigned(), // kRememberedSet
MachineType::TaggedSigned()) // kFPMode
- DECLARE_DESCRIPTOR(RecordWriteDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(RecordWriteDescriptor)
+
+ static constexpr auto registers();
+ static constexpr bool kRestrictAllocatableRegisters = true;
};
-class EphemeronKeyBarrierDescriptor final : public CallInterfaceDescriptor {
+class EphemeronKeyBarrierDescriptor final
+ : public StaticCallInterfaceDescriptor<EphemeronKeyBarrierDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kObject, kSlotAddress, kFPMode)
DEFINE_PARAMETER_TYPES(MachineType::TaggedPointer(), // kObject
MachineType::Pointer(), // kSlotAddress
MachineType::TaggedSigned()) // kFPMode
- DECLARE_DESCRIPTOR(EphemeronKeyBarrierDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(EphemeronKeyBarrierDescriptor)
+
+ static constexpr auto registers();
+ static constexpr bool kRestrictAllocatableRegisters = true;
};
-class TypeConversionDescriptor final : public CallInterfaceDescriptor {
+class TypeConversionDescriptor final
+ : public StaticCallInterfaceDescriptor<TypeConversionDescriptor> {
public:
DEFINE_PARAMETERS(kArgument)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged())
- DECLARE_DESCRIPTOR(TypeConversionDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(TypeConversionDescriptor)
+
+ static constexpr inline Register ArgumentRegister();
- static const Register ArgumentRegister();
+ static constexpr auto registers();
};
-class TypeConversionNoContextDescriptor final : public CallInterfaceDescriptor {
+class TypeConversionNoContextDescriptor final
+ : public StaticCallInterfaceDescriptor<TypeConversionNoContextDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kArgument)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged())
- DECLARE_DESCRIPTOR(TypeConversionNoContextDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(TypeConversionNoContextDescriptor)
+
+ static constexpr auto registers();
};
-class TypeConversion_BaselineDescriptor final : public CallInterfaceDescriptor {
+class TypeConversion_BaselineDescriptor final
+ : public StaticCallInterfaceDescriptor<TypeConversion_BaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kArgument, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), MachineType::UintPtr())
- DECLARE_DESCRIPTOR(TypeConversion_BaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(TypeConversion_BaselineDescriptor)
};
-class SingleParameterOnStackDescriptor final : public CallInterfaceDescriptor {
+class SingleParameterOnStackDescriptor final
+ : public StaticCallInterfaceDescriptor<SingleParameterOnStackDescriptor> {
public:
DEFINE_PARAMETERS(kArgument)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged())
- DECLARE_DESCRIPTOR(SingleParameterOnStackDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(SingleParameterOnStackDescriptor)
+
+ static constexpr auto registers();
};
class AsyncFunctionStackParameterDescriptor final
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ AsyncFunctionStackParameterDescriptor> {
public:
DEFINE_PARAMETERS(kPromise, kResult)
DEFINE_PARAMETER_TYPES(MachineType::TaggedPointer(), MachineType::AnyTagged())
- DECLARE_DESCRIPTOR(AsyncFunctionStackParameterDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(AsyncFunctionStackParameterDescriptor)
+
+ static constexpr auto registers();
};
class GetIteratorStackParameterDescriptor final
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ GetIteratorStackParameterDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kCallSlot, kFeedback, kResult)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), MachineType::AnyTagged(),
MachineType::AnyTagged(), MachineType::AnyTagged())
- DECLARE_DESCRIPTOR(GetIteratorStackParameterDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(GetIteratorStackParameterDescriptor)
+
+ static constexpr auto registers();
};
-class GetPropertyDescriptor final : public CallInterfaceDescriptor {
+class GetPropertyDescriptor final
+ : public StaticCallInterfaceDescriptor<GetPropertyDescriptor> {
public:
DEFINE_PARAMETERS(kObject, kKey)
- DECLARE_DEFAULT_DESCRIPTOR(GetPropertyDescriptor, CallInterfaceDescriptor)
+ DECLARE_DEFAULT_DESCRIPTOR(GetPropertyDescriptor)
};
-class TypeofDescriptor : public CallInterfaceDescriptor {
+class TypeofDescriptor
+ : public StaticCallInterfaceDescriptor<TypeofDescriptor> {
public:
DEFINE_PARAMETERS(kObject)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged())
- DECLARE_DESCRIPTOR(TypeofDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(TypeofDescriptor)
+
+ static constexpr inline auto registers();
};
-class CallTrampolineDescriptor : public CallInterfaceDescriptor {
+class CallTrampolineDescriptor
+ : public StaticCallInterfaceDescriptor<CallTrampolineDescriptor> {
public:
DEFINE_PARAMETERS_VARARGS(kFunction, kActualArgumentsCount)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunction
MachineType::Int32()) // kActualArgumentsCount
- DECLARE_DESCRIPTOR(CallTrampolineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CallTrampolineDescriptor)
+
+ static constexpr inline auto registers();
};
-class CallVarargsDescriptor : public CallInterfaceDescriptor {
+class CallVarargsDescriptor
+ : public StaticCallInterfaceDescriptor<CallVarargsDescriptor> {
public:
DEFINE_PARAMETERS_VARARGS(kTarget, kActualArgumentsCount, kArgumentsLength,
kArgumentsList)
@@ -1113,123 +1121,143 @@ class CallVarargsDescriptor : public CallInterfaceDescriptor {
MachineType::Int32(), // kActualArgumentsCount
MachineType::Int32(), // kArgumentsLength
MachineType::AnyTagged()) // kArgumentsList
- DECLARE_DESCRIPTOR(CallVarargsDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CallVarargsDescriptor)
+
+ static constexpr inline auto registers();
};
-class CallForwardVarargsDescriptor : public CallInterfaceDescriptor {
+class CallForwardVarargsDescriptor
+ : public StaticCallInterfaceDescriptor<CallForwardVarargsDescriptor> {
public:
DEFINE_PARAMETERS_VARARGS(kTarget, kActualArgumentsCount, kStartIndex)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::Int32(), // kActualArgumentsCount
MachineType::Int32()) // kStartIndex
- DECLARE_DESCRIPTOR(CallForwardVarargsDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CallForwardVarargsDescriptor)
+
+ static constexpr inline auto registers();
};
-class CallFunctionTemplateDescriptor : public CallInterfaceDescriptor {
+class CallFunctionTemplateDescriptor
+ : public StaticCallInterfaceDescriptor<CallFunctionTemplateDescriptor> {
public:
DEFINE_PARAMETERS_VARARGS(kFunctionTemplateInfo, kArgumentsCount)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunctionTemplateInfo
MachineType::IntPtr()) // kArgumentsCount
- DECLARE_DESCRIPTOR(CallFunctionTemplateDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CallFunctionTemplateDescriptor)
+
+ static constexpr inline auto registers();
};
-class CallWithSpreadDescriptor : public CallInterfaceDescriptor {
+class CallWithSpreadDescriptor
+ : public StaticCallInterfaceDescriptor<CallWithSpreadDescriptor> {
public:
DEFINE_PARAMETERS_VARARGS(kTarget, kArgumentsCount, kSpread)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::Int32(), // kArgumentsCount
MachineType::AnyTagged()) // kSpread
- DECLARE_DESCRIPTOR(CallWithSpreadDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CallWithSpreadDescriptor)
+
+ static constexpr inline auto registers();
};
-class CallWithSpread_BaselineDescriptor : public CallInterfaceDescriptor {
+class CallWithSpread_BaselineDescriptor
+ : public StaticCallInterfaceDescriptor<CallWithSpread_BaselineDescriptor> {
public:
- DEFINE_PARAMETERS_VARARGS(kTarget, kArgumentsCount, kSpread, kSlot)
+ DEFINE_PARAMETERS_NO_CONTEXT_VARARGS(kTarget, kArgumentsCount, kSpread, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::Int32(), // kArgumentsCount
MachineType::AnyTagged(), // kSpread
MachineType::UintPtr()) // kSlot
- DECLARE_DESCRIPTOR(CallWithSpread_BaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CallWithSpread_BaselineDescriptor)
};
-class CallWithSpread_WithFeedbackDescriptor : public CallInterfaceDescriptor {
+class CallWithSpread_WithFeedbackDescriptor
+ : public StaticCallInterfaceDescriptor<
+ CallWithSpread_WithFeedbackDescriptor> {
public:
DEFINE_PARAMETERS_VARARGS(kTarget, kArgumentsCount, kSpread, kSlot,
- kFeedbackVector)
+ kFeedbackVector, kReceiver)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::Int32(), // kArgumentsCount
MachineType::AnyTagged(), // kSpread
MachineType::UintPtr(), // kSlot
- MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(CallWithSpread_WithFeedbackDescriptor,
- CallInterfaceDescriptor)
+ MachineType::AnyTagged(), // kFeedbackVector
+ MachineType::AnyTagged()) // kReceiver
+ DECLARE_DESCRIPTOR(CallWithSpread_WithFeedbackDescriptor)
};
-class CallWithArrayLikeDescriptor : public CallInterfaceDescriptor {
+class CallWithArrayLikeDescriptor
+ : public StaticCallInterfaceDescriptor<CallWithArrayLikeDescriptor> {
public:
DEFINE_PARAMETERS(kTarget, kArgumentsList)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::AnyTagged()) // kArgumentsList
- DECLARE_DESCRIPTOR(CallWithArrayLikeDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CallWithArrayLikeDescriptor)
+
+ static constexpr inline auto registers();
};
class CallWithArrayLike_WithFeedbackDescriptor
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ CallWithArrayLike_WithFeedbackDescriptor> {
public:
- DEFINE_PARAMETERS(kTarget, kArgumentsList, kSlot, kFeedbackVector)
+ DEFINE_PARAMETERS(kTarget, kArgumentsList, kSlot, kFeedbackVector, kReceiver)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::AnyTagged(), // kArgumentsList
MachineType::UintPtr(), // kSlot
- MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(CallWithArrayLike_WithFeedbackDescriptor,
- CallInterfaceDescriptor)
+ MachineType::AnyTagged(), // kFeedbackVector
+ MachineType::AnyTagged()) // kReceiver
+ DECLARE_DESCRIPTOR(CallWithArrayLike_WithFeedbackDescriptor)
};
-class ConstructVarargsDescriptor : public CallInterfaceDescriptor {
+class ConstructVarargsDescriptor
+ : public StaticCallInterfaceDescriptor<ConstructVarargsDescriptor> {
public:
DEFINE_JS_PARAMETERS(kArgumentsLength, kArgumentsList)
DEFINE_JS_PARAMETER_TYPES(MachineType::Int32(), // kArgumentsLength
MachineType::AnyTagged()) // kArgumentsList
- DECLARE_DESCRIPTOR(ConstructVarargsDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ConstructVarargsDescriptor)
+
+ static constexpr inline auto registers();
};
-class ConstructForwardVarargsDescriptor : public CallInterfaceDescriptor {
+class ConstructForwardVarargsDescriptor
+ : public StaticCallInterfaceDescriptor<ConstructForwardVarargsDescriptor> {
public:
DEFINE_JS_PARAMETERS(kStartIndex)
DEFINE_JS_PARAMETER_TYPES(MachineType::Int32())
- DECLARE_DESCRIPTOR(ConstructForwardVarargsDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ConstructForwardVarargsDescriptor)
+
+ static constexpr inline auto registers();
};
-class ConstructWithSpreadDescriptor : public CallInterfaceDescriptor {
+class ConstructWithSpreadDescriptor
+ : public StaticCallInterfaceDescriptor<ConstructWithSpreadDescriptor> {
public:
DEFINE_JS_PARAMETERS(kSpread)
DEFINE_JS_PARAMETER_TYPES(MachineType::AnyTagged())
- DECLARE_DESCRIPTOR(ConstructWithSpreadDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ConstructWithSpreadDescriptor)
+
+ static constexpr inline auto registers();
};
-class ConstructWithSpread_BaselineDescriptor : public CallInterfaceDescriptor {
+class ConstructWithSpread_BaselineDescriptor
+ : public StaticCallInterfaceDescriptor<
+ ConstructWithSpread_BaselineDescriptor> {
public:
// Note: kSlot comes before kSpread since as an untagged value it must be
// passed in a register.
- DEFINE_JS_PARAMETERS(kSlot, kSpread)
+ DEFINE_JS_PARAMETERS_NO_CONTEXT(kSlot, kSpread)
DEFINE_JS_PARAMETER_TYPES(MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kSpread
- DECLARE_DESCRIPTOR(ConstructWithSpread_BaselineDescriptor,
- CallInterfaceDescriptor)
-
-#if V8_TARGET_ARCH_IA32
- static const bool kPassLastArgsOnStack = true;
-#else
- static const bool kPassLastArgsOnStack = false;
-#endif
-
- // Pass spread through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 1 : 0;
+ DECLARE_DESCRIPTOR(ConstructWithSpread_BaselineDescriptor)
};
class ConstructWithSpread_WithFeedbackDescriptor
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ ConstructWithSpread_WithFeedbackDescriptor> {
public:
// Note: kSlot comes before kSpread since as an untagged value it must be
// passed in a register.
@@ -1237,21 +1265,24 @@ class ConstructWithSpread_WithFeedbackDescriptor
DEFINE_JS_PARAMETER_TYPES(MachineType::UintPtr(), // kSlot
MachineType::AnyTagged(), // kSpread
MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(ConstructWithSpread_WithFeedbackDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ConstructWithSpread_WithFeedbackDescriptor)
};
-class ConstructWithArrayLikeDescriptor : public CallInterfaceDescriptor {
+class ConstructWithArrayLikeDescriptor
+ : public StaticCallInterfaceDescriptor<ConstructWithArrayLikeDescriptor> {
public:
DEFINE_PARAMETERS(kTarget, kNewTarget, kArgumentsList)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
MachineType::AnyTagged(), // kNewTarget
MachineType::AnyTagged()) // kArgumentsList
- DECLARE_DESCRIPTOR(ConstructWithArrayLikeDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ConstructWithArrayLikeDescriptor)
+
+ static constexpr inline auto registers();
};
class ConstructWithArrayLike_WithFeedbackDescriptor
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ ConstructWithArrayLike_WithFeedbackDescriptor> {
public:
DEFINE_PARAMETERS(kTarget, kNewTarget, kArgumentsList, kSlot, kFeedbackVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kTarget
@@ -1259,38 +1290,44 @@ class ConstructWithArrayLike_WithFeedbackDescriptor
MachineType::AnyTagged(), // kArgumentsList
MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(ConstructWithArrayLike_WithFeedbackDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ConstructWithArrayLike_WithFeedbackDescriptor)
};
// TODO(ishell): consider merging this with ArrayConstructorDescriptor
-class ConstructStubDescriptor : public CallInterfaceDescriptor {
+class ConstructStubDescriptor
+ : public StaticCallInterfaceDescriptor<ConstructStubDescriptor> {
public:
// TODO(jgruber): Remove the unused allocation site parameter.
DEFINE_JS_PARAMETERS(kAllocationSite)
DEFINE_JS_PARAMETER_TYPES(MachineType::AnyTagged())
// TODO(ishell): Use DECLARE_JS_COMPATIBLE_DESCRIPTOR if registers match
- DECLARE_DESCRIPTOR(ConstructStubDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ConstructStubDescriptor)
+
+ static constexpr inline auto registers();
};
-class AbortDescriptor : public CallInterfaceDescriptor {
+class AbortDescriptor : public StaticCallInterfaceDescriptor<AbortDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kMessageOrMessageId)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged())
- DECLARE_DESCRIPTOR(AbortDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(AbortDescriptor)
+
+ static constexpr inline auto registers();
};
-class ArrayConstructorDescriptor : public CallInterfaceDescriptor {
+class ArrayConstructorDescriptor
+ : public StaticJSCallInterfaceDescriptor<ArrayConstructorDescriptor> {
public:
DEFINE_JS_PARAMETERS(kAllocationSite)
DEFINE_JS_PARAMETER_TYPES(MachineType::AnyTagged())
- DECLARE_JS_COMPATIBLE_DESCRIPTOR(ArrayConstructorDescriptor,
- CallInterfaceDescriptor, 1)
+ DECLARE_JS_COMPATIBLE_DESCRIPTOR(ArrayConstructorDescriptor)
};
-class ArrayNArgumentsConstructorDescriptor : public CallInterfaceDescriptor {
+class ArrayNArgumentsConstructorDescriptor
+ : public StaticCallInterfaceDescriptor<
+ ArrayNArgumentsConstructorDescriptor> {
public:
// This descriptor declares only register arguments while respective number
// of JS arguments stay on the expression stack.
@@ -1300,12 +1337,14 @@ class ArrayNArgumentsConstructorDescriptor : public CallInterfaceDescriptor {
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunction,
MachineType::AnyTagged(), // kAllocationSite
MachineType::Int32()) // kActualArgumentsCount
- DECLARE_DESCRIPTOR(ArrayNArgumentsConstructorDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ArrayNArgumentsConstructorDescriptor)
+
+ static constexpr auto registers();
};
class ArrayNoArgumentConstructorDescriptor
- : public ArrayNArgumentsConstructorDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ ArrayNoArgumentConstructorDescriptor> {
public:
// This descriptor declares same register arguments as the parent
// ArrayNArgumentsConstructorDescriptor and it declares indices for
@@ -1316,12 +1355,14 @@ class ArrayNoArgumentConstructorDescriptor
MachineType::AnyTagged(), // kAllocationSite
MachineType::Int32(), // kActualArgumentsCount
MachineType::AnyTagged()) // kFunctionParameter
- DECLARE_DESCRIPTOR(ArrayNoArgumentConstructorDescriptor,
- ArrayNArgumentsConstructorDescriptor)
+ DECLARE_DESCRIPTOR(ArrayNoArgumentConstructorDescriptor)
+
+ static constexpr auto registers();
};
class ArraySingleArgumentConstructorDescriptor
- : public ArrayNArgumentsConstructorDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ ArraySingleArgumentConstructorDescriptor> {
public:
// This descriptor declares same register arguments as the parent
// ArrayNArgumentsConstructorDescriptor and it declares indices for
@@ -1334,44 +1375,56 @@ class ArraySingleArgumentConstructorDescriptor
// JS arguments on the stack
MachineType::AnyTagged(), // kArraySizeSmiParameter
MachineType::AnyTagged()) // kReceiverParameter
- DECLARE_DESCRIPTOR(ArraySingleArgumentConstructorDescriptor,
- ArrayNArgumentsConstructorDescriptor)
+ DECLARE_DESCRIPTOR(ArraySingleArgumentConstructorDescriptor)
+
+ static constexpr auto registers();
};
-class CompareDescriptor : public CallInterfaceDescriptor {
+class CompareDescriptor
+ : public StaticCallInterfaceDescriptor<CompareDescriptor> {
public:
DEFINE_PARAMETERS(kLeft, kRight)
- DECLARE_DESCRIPTOR(CompareDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CompareDescriptor)
+
+ static constexpr inline auto registers();
};
-class BinaryOpDescriptor : public CallInterfaceDescriptor {
+class BinaryOpDescriptor
+ : public StaticCallInterfaceDescriptor<BinaryOpDescriptor> {
public:
DEFINE_PARAMETERS(kLeft, kRight)
- DECLARE_DESCRIPTOR(BinaryOpDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(BinaryOpDescriptor)
+
+ static constexpr inline auto registers();
};
-class BinaryOp_BaselineDescriptor : public CallInterfaceDescriptor {
+class BinaryOp_BaselineDescriptor
+ : public StaticCallInterfaceDescriptor<BinaryOp_BaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kLeft, kRight, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kLeft
MachineType::AnyTagged(), // kRight
MachineType::UintPtr()) // kSlot
- DECLARE_DESCRIPTOR(BinaryOp_BaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(BinaryOp_BaselineDescriptor)
+
+ static constexpr inline auto registers();
};
// This desciptor is shared among String.p.charAt/charCodeAt/codePointAt
// as they all have the same interface.
-class StringAtDescriptor final : public CallInterfaceDescriptor {
+class StringAtDescriptor final
+ : public StaticCallInterfaceDescriptor<StringAtDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kPosition)
// TODO(turbofan): Return untagged value here.
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::TaggedSigned(), // result 1
MachineType::AnyTagged(), // kReceiver
MachineType::IntPtr()) // kPosition
- DECLARE_DESCRIPTOR(StringAtDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(StringAtDescriptor)
};
-class StringAtAsStringDescriptor final : public CallInterfaceDescriptor {
+class StringAtAsStringDescriptor final
+ : public StaticCallInterfaceDescriptor<StringAtAsStringDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kPosition)
// TODO(turbofan): Return untagged value here.
@@ -1379,10 +1432,11 @@ class StringAtAsStringDescriptor final : public CallInterfaceDescriptor {
MachineType::TaggedPointer(), // result string
MachineType::AnyTagged(), // kReceiver
MachineType::IntPtr()) // kPosition
- DECLARE_DESCRIPTOR(StringAtAsStringDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(StringAtAsStringDescriptor)
};
-class StringSubstringDescriptor final : public CallInterfaceDescriptor {
+class StringSubstringDescriptor final
+ : public StaticCallInterfaceDescriptor<StringSubstringDescriptor> {
public:
DEFINE_PARAMETERS(kString, kFrom, kTo)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kString
@@ -1390,18 +1444,19 @@ class StringSubstringDescriptor final : public CallInterfaceDescriptor {
MachineType::IntPtr()) // kTo
// TODO(turbofan): Allow builtins to return untagged values.
- DECLARE_DESCRIPTOR(StringSubstringDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(StringSubstringDescriptor)
};
-class CppBuiltinAdaptorDescriptor : public CallInterfaceDescriptor {
+class CppBuiltinAdaptorDescriptor
+ : public StaticJSCallInterfaceDescriptor<CppBuiltinAdaptorDescriptor> {
public:
DEFINE_JS_PARAMETERS(kCFunction)
DEFINE_JS_PARAMETER_TYPES(MachineType::Pointer())
- DECLARE_JS_COMPATIBLE_DESCRIPTOR(CppBuiltinAdaptorDescriptor,
- CallInterfaceDescriptor, 1)
+ DECLARE_JS_COMPATIBLE_DESCRIPTOR(CppBuiltinAdaptorDescriptor)
};
-class CEntry1ArgvOnStackDescriptor : public CallInterfaceDescriptor {
+class CEntry1ArgvOnStackDescriptor
+ : public StaticCallInterfaceDescriptor<CEntry1ArgvOnStackDescriptor> {
public:
DEFINE_PARAMETERS(kArity, // register argument
kCFunction, // register argument
@@ -1415,10 +1470,13 @@ class CEntry1ArgvOnStackDescriptor : public CallInterfaceDescriptor {
MachineType::AnyTagged(), // kArgcSmi
MachineType::AnyTagged(), // kTargetCopy
MachineType::AnyTagged()) // kNewTargetCopy
- DECLARE_DESCRIPTOR(CEntry1ArgvOnStackDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CEntry1ArgvOnStackDescriptor)
+
+ static constexpr auto registers();
};
-class ApiCallbackDescriptor : public CallInterfaceDescriptor {
+class ApiCallbackDescriptor
+ : public StaticCallInterfaceDescriptor<ApiCallbackDescriptor> {
public:
DEFINE_PARAMETERS_VARARGS(kApiFunctionAddress, kActualArgumentsCount,
kCallData, kHolder)
@@ -1428,44 +1486,56 @@ class ApiCallbackDescriptor : public CallInterfaceDescriptor {
MachineType::IntPtr(), // kActualArgumentsCount
MachineType::AnyTagged(), // kCallData
MachineType::AnyTagged()) // kHolder
- DECLARE_DESCRIPTOR(ApiCallbackDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ApiCallbackDescriptor)
+
+ static constexpr inline auto registers();
};
-class ApiGetterDescriptor : public CallInterfaceDescriptor {
+class ApiGetterDescriptor
+ : public StaticCallInterfaceDescriptor<ApiGetterDescriptor> {
public:
DEFINE_PARAMETERS(kReceiver, kHolder, kCallback)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kReceiver
MachineType::AnyTagged(), // kHolder
MachineType::AnyTagged()) // kCallback
- DECLARE_DESCRIPTOR(ApiGetterDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ApiGetterDescriptor)
- static const Register ReceiverRegister();
- static const Register HolderRegister();
- static const Register CallbackRegister();
+ static constexpr inline Register ReceiverRegister();
+ static constexpr inline Register HolderRegister();
+ static constexpr inline Register CallbackRegister();
+
+ static constexpr auto registers();
};
// TODO(turbofan): We should probably rename this to GrowFastElementsDescriptor.
-class GrowArrayElementsDescriptor : public CallInterfaceDescriptor {
+class GrowArrayElementsDescriptor
+ : public StaticCallInterfaceDescriptor<GrowArrayElementsDescriptor> {
public:
DEFINE_PARAMETERS(kObject, kKey)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kObject
MachineType::AnyTagged()) // kKey
- DECLARE_DESCRIPTOR(GrowArrayElementsDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(GrowArrayElementsDescriptor)
+
+ static constexpr inline Register ObjectRegister();
+ static constexpr inline Register KeyRegister();
- static const Register ObjectRegister();
- static const Register KeyRegister();
+ static constexpr auto registers();
};
class V8_EXPORT_PRIVATE TailCallOptimizedCodeSlotDescriptor
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ TailCallOptimizedCodeSlotDescriptor> {
public:
DEFINE_PARAMETERS(kOptimizedCodeEntry)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged()) // kAccumulator
- DECLARE_DESCRIPTOR(TailCallOptimizedCodeSlotDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(TailCallOptimizedCodeSlotDescriptor)
+
+ static constexpr auto registers();
};
-class BaselineOutOfLinePrologueDescriptor : public CallInterfaceDescriptor {
+class BaselineOutOfLinePrologueDescriptor
+ : public StaticCallInterfaceDescriptor<
+ BaselineOutOfLinePrologueDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kCalleeContext, kClosure,
kJavaScriptCallArgCount, kStackFrameSize,
@@ -1477,32 +1547,31 @@ class BaselineOutOfLinePrologueDescriptor : public CallInterfaceDescriptor {
MachineType::Int32(), // kStackFrameSize
MachineType::AnyTagged(), // kJavaScriptCallNewTarget
MachineType::AnyTagged()) // kInterpreterBytecodeArray
- DECLARE_DESCRIPTOR(BaselineOutOfLinePrologueDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(BaselineOutOfLinePrologueDescriptor)
-#if V8_TARGET_ARCH_IA32
- static const bool kPassLastArgsOnStack = true;
-#else
- static const bool kPassLastArgsOnStack = false;
-#endif
+ static constexpr inline auto registers();
- // Pass bytecode array through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 1 : 0;
+ // We pass the context manually, so we have one extra register.
+ static constexpr int kMaxRegisterParams =
+ StaticCallInterfaceDescriptor::kMaxRegisterParams + 1;
};
-class BaselineLeaveFrameDescriptor : public CallInterfaceDescriptor {
+class BaselineLeaveFrameDescriptor
+ : public StaticCallInterfaceDescriptor<BaselineLeaveFrameDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kParamsSize, kWeight)
DEFINE_PARAMETER_TYPES(MachineType::Int32(), // kParamsSize
MachineType::Int32()) // kWeight
- DECLARE_DESCRIPTOR(BaselineLeaveFrameDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(BaselineLeaveFrameDescriptor)
+
+ static constexpr inline Register ParamsSizeRegister();
+ static constexpr inline Register WeightRegister();
- static const Register ParamsSizeRegister();
- static const Register WeightRegister();
+ static constexpr inline auto registers();
};
class V8_EXPORT_PRIVATE InterpreterDispatchDescriptor
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<InterpreterDispatchDescriptor> {
public:
DEFINE_PARAMETERS(kAccumulator, kBytecodeOffset, kBytecodeArray,
kDispatchTable)
@@ -1510,21 +1579,27 @@ class V8_EXPORT_PRIVATE InterpreterDispatchDescriptor
MachineType::IntPtr(), // kBytecodeOffset
MachineType::AnyTagged(), // kBytecodeArray
MachineType::IntPtr()) // kDispatchTable
- DECLARE_DESCRIPTOR(InterpreterDispatchDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(InterpreterDispatchDescriptor)
+
+ static constexpr inline auto registers();
};
-class InterpreterPushArgsThenCallDescriptor : public CallInterfaceDescriptor {
+class InterpreterPushArgsThenCallDescriptor
+ : public StaticCallInterfaceDescriptor<
+ InterpreterPushArgsThenCallDescriptor> {
public:
DEFINE_PARAMETERS(kNumberOfArguments, kFirstArgument, kFunction)
DEFINE_PARAMETER_TYPES(MachineType::Int32(), // kNumberOfArguments
MachineType::Pointer(), // kFirstArgument
MachineType::AnyTagged()) // kFunction
- DECLARE_DESCRIPTOR(InterpreterPushArgsThenCallDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(InterpreterPushArgsThenCallDescriptor)
+
+ static constexpr inline auto registers();
};
class InterpreterPushArgsThenConstructDescriptor
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<
+ InterpreterPushArgsThenConstructDescriptor> {
public:
DEFINE_PARAMETERS(kNumberOfArguments, kFirstArgument, kConstructor,
kNewTarget, kFeedbackElement)
@@ -1533,20 +1608,13 @@ class InterpreterPushArgsThenConstructDescriptor
MachineType::AnyTagged(), // kConstructor
MachineType::AnyTagged(), // kNewTarget
MachineType::AnyTagged()) // kFeedbackElement
- DECLARE_DESCRIPTOR(InterpreterPushArgsThenConstructDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(InterpreterPushArgsThenConstructDescriptor)
-#if V8_TARGET_ARCH_IA32
- static const bool kPassLastArgsOnStack = true;
-#else
- static const bool kPassLastArgsOnStack = false;
-#endif
-
- // Pass constructor, new target and feedback element through the stack.
- static const int kStackArgumentsCount = kPassLastArgsOnStack ? 3 : 0;
+ static constexpr inline auto registers();
};
-class InterpreterCEntry1Descriptor : public CallInterfaceDescriptor {
+class InterpreterCEntry1Descriptor
+ : public StaticCallInterfaceDescriptor<InterpreterCEntry1Descriptor> {
public:
DEFINE_RESULT_AND_PARAMETERS(1, kNumberOfArguments, kFirstArgument,
kFunctionEntry)
@@ -1554,10 +1622,13 @@ class InterpreterCEntry1Descriptor : public CallInterfaceDescriptor {
MachineType::Int32(), // kNumberOfArguments
MachineType::Pointer(), // kFirstArgument
MachineType::Pointer()) // kFunctionEntry
- DECLARE_DESCRIPTOR(InterpreterCEntry1Descriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(InterpreterCEntry1Descriptor)
+
+ static constexpr auto registers();
};
-class InterpreterCEntry2Descriptor : public CallInterfaceDescriptor {
+class InterpreterCEntry2Descriptor
+ : public StaticCallInterfaceDescriptor<InterpreterCEntry2Descriptor> {
public:
DEFINE_RESULT_AND_PARAMETERS(2, kNumberOfArguments, kFirstArgument,
kFunctionEntry)
@@ -1566,10 +1637,13 @@ class InterpreterCEntry2Descriptor : public CallInterfaceDescriptor {
MachineType::Int32(), // kNumberOfArguments
MachineType::Pointer(), // kFirstArgument
MachineType::Pointer()) // kFunctionEntry
- DECLARE_DESCRIPTOR(InterpreterCEntry2Descriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(InterpreterCEntry2Descriptor)
+
+ static constexpr auto registers();
};
-class ForInPrepareDescriptor : public CallInterfaceDescriptor {
+class ForInPrepareDescriptor
+ : public StaticCallInterfaceDescriptor<ForInPrepareDescriptor> {
public:
DEFINE_RESULT_AND_PARAMETERS(2, kEnumerator, kVectorIndex, kFeedbackVector)
DEFINE_RESULT_AND_PARAMETER_TYPES(
@@ -1578,120 +1652,133 @@ class ForInPrepareDescriptor : public CallInterfaceDescriptor {
MachineType::AnyTagged(), // kEnumerator
MachineType::TaggedSigned(), // kVectorIndex
MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(ForInPrepareDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ForInPrepareDescriptor)
};
-class ResumeGeneratorDescriptor final : public CallInterfaceDescriptor {
+class ResumeGeneratorDescriptor final
+ : public StaticCallInterfaceDescriptor<ResumeGeneratorDescriptor> {
public:
DEFINE_PARAMETERS(kValue, kGenerator)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kValue
MachineType::AnyTagged()) // kGenerator
- DECLARE_DESCRIPTOR(ResumeGeneratorDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ResumeGeneratorDescriptor)
+
+ static constexpr inline auto registers();
};
-class ResumeGeneratorBaselineDescriptor final : public CallInterfaceDescriptor {
+class ResumeGeneratorBaselineDescriptor final
+ : public StaticCallInterfaceDescriptor<ResumeGeneratorBaselineDescriptor> {
public:
- DEFINE_PARAMETERS(kGeneratorObject, kRegisterCount)
+ DEFINE_PARAMETERS_NO_CONTEXT(kGeneratorObject, kRegisterCount)
DEFINE_RESULT_AND_PARAMETER_TYPES(
MachineType::TaggedSigned(), // return type
MachineType::AnyTagged(), // kGeneratorObject
MachineType::IntPtr(), // kRegisterCount
)
- DECLARE_DESCRIPTOR(ResumeGeneratorBaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(ResumeGeneratorBaselineDescriptor)
};
class SuspendGeneratorBaselineDescriptor final
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<SuspendGeneratorBaselineDescriptor> {
public:
- DEFINE_PARAMETERS(kGeneratorObject, kSuspendId, kBytecodeOffset,
- kRegisterCount)
+ DEFINE_PARAMETERS_NO_CONTEXT(kGeneratorObject, kSuspendId, kBytecodeOffset,
+ kRegisterCount)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kGeneratorObject
MachineType::IntPtr(), // kSuspendId
MachineType::IntPtr(), // kBytecodeOffset
MachineType::IntPtr(), // kRegisterCount
)
- DECLARE_DESCRIPTOR(SuspendGeneratorBaselineDescriptor,
- CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(SuspendGeneratorBaselineDescriptor)
};
-class FrameDropperTrampolineDescriptor final : public CallInterfaceDescriptor {
- public:
- DEFINE_PARAMETERS(kRestartFp)
- DEFINE_PARAMETER_TYPES(MachineType::Pointer())
- DECLARE_DESCRIPTOR(FrameDropperTrampolineDescriptor, CallInterfaceDescriptor)
-};
-
-class RunMicrotasksEntryDescriptor final : public CallInterfaceDescriptor {
+class RunMicrotasksEntryDescriptor final
+ : public StaticCallInterfaceDescriptor<RunMicrotasksEntryDescriptor> {
public:
DEFINE_PARAMETERS_ENTRY(kRootRegisterValue, kMicrotaskQueue)
DEFINE_PARAMETER_TYPES(MachineType::Pointer(), // kRootRegisterValue
MachineType::Pointer()) // kMicrotaskQueue
- DECLARE_DESCRIPTOR(RunMicrotasksEntryDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(RunMicrotasksEntryDescriptor)
+
+ static constexpr inline auto registers();
};
-class RunMicrotasksDescriptor final : public CallInterfaceDescriptor {
+class RunMicrotasksDescriptor final
+ : public StaticCallInterfaceDescriptor<RunMicrotasksDescriptor> {
public:
DEFINE_PARAMETERS(kMicrotaskQueue)
DEFINE_PARAMETER_TYPES(MachineType::Pointer())
- DECLARE_DESCRIPTOR(RunMicrotasksDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(RunMicrotasksDescriptor)
- static Register MicrotaskQueueRegister();
+ static constexpr inline Register MicrotaskQueueRegister();
};
-class WasmFloat32ToNumberDescriptor final : public CallInterfaceDescriptor {
+class WasmFloat32ToNumberDescriptor final
+ : public StaticCallInterfaceDescriptor<WasmFloat32ToNumberDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kValue)
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::AnyTagged(), // result
MachineType::Float32()) // value
- DECLARE_DESCRIPTOR(WasmFloat32ToNumberDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(WasmFloat32ToNumberDescriptor)
+
+#if V8_TARGET_ARCH_IA32
+ // We need a custom descriptor on ia32 to avoid using xmm0.
+ static constexpr inline auto registers();
+#endif
};
-class WasmFloat64ToNumberDescriptor final : public CallInterfaceDescriptor {
+class WasmFloat64ToNumberDescriptor final
+ : public StaticCallInterfaceDescriptor<WasmFloat64ToNumberDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kValue)
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::AnyTagged(), // result
MachineType::Float64()) // value
- DECLARE_DESCRIPTOR(WasmFloat64ToNumberDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(WasmFloat64ToNumberDescriptor)
+
+#if V8_TARGET_ARCH_IA32
+ // We need a custom descriptor on ia32 to avoid using xmm0.
+ static constexpr inline auto registers();
+#endif
};
class V8_EXPORT_PRIVATE I64ToBigIntDescriptor final
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<I64ToBigIntDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kArgument)
DEFINE_PARAMETER_TYPES(MachineType::Int64()) // kArgument
- DECLARE_DESCRIPTOR(I64ToBigIntDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(I64ToBigIntDescriptor)
};
// 32 bits version of the I64ToBigIntDescriptor call interface descriptor
class V8_EXPORT_PRIVATE I32PairToBigIntDescriptor final
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<I32PairToBigIntDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kLow, kHigh)
DEFINE_PARAMETER_TYPES(MachineType::Uint32(), // kLow
MachineType::Uint32()) // kHigh
- DECLARE_DESCRIPTOR(I32PairToBigIntDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(I32PairToBigIntDescriptor)
};
class V8_EXPORT_PRIVATE BigIntToI64Descriptor final
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<BigIntToI64Descriptor> {
public:
DEFINE_PARAMETERS(kArgument)
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::Int64(), // result 1
MachineType::AnyTagged()) // kArgument
- DECLARE_DESCRIPTOR(BigIntToI64Descriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(BigIntToI64Descriptor)
};
class V8_EXPORT_PRIVATE BigIntToI32PairDescriptor final
- : public CallInterfaceDescriptor {
+ : public StaticCallInterfaceDescriptor<BigIntToI32PairDescriptor> {
public:
DEFINE_RESULT_AND_PARAMETERS(2, kArgument)
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::Uint32(), // result 1
MachineType::Uint32(), // result 2
MachineType::AnyTagged()) // kArgument
- DECLARE_DESCRIPTOR(BigIntToI32PairDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(BigIntToI32PairDescriptor)
};
-class WasmI32AtomicWait32Descriptor final : public CallInterfaceDescriptor {
+class WasmI32AtomicWait32Descriptor final
+ : public StaticCallInterfaceDescriptor<WasmI32AtomicWait32Descriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kAddress, kExpectedValue, kTimeoutLow,
kTimeoutHigh)
@@ -1700,36 +1787,30 @@ class WasmI32AtomicWait32Descriptor final : public CallInterfaceDescriptor {
MachineType::Int32(), // kExpectedValue
MachineType::Uint32(), // kTimeoutLow
MachineType::Uint32()) // kTimeoutHigh
- DECLARE_DESCRIPTOR(WasmI32AtomicWait32Descriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(WasmI32AtomicWait32Descriptor)
};
-class WasmI64AtomicWait32Descriptor final : public CallInterfaceDescriptor {
+class WasmI64AtomicWait32Descriptor final
+ : public StaticCallInterfaceDescriptor<WasmI64AtomicWait32Descriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kAddress, kExpectedValueLow, kExpectedValueHigh,
kTimeoutLow, kTimeoutHigh)
- DEFINE_RESULT_AND_PARAMETER_TYPES_WITH_FLAG(
- CallInterfaceDescriptorData::kNoStackScan, // allow untagged stack params
- MachineType::Uint32(), // result 1
- MachineType::Uint32(), // kAddress
- MachineType::Uint32(), // kExpectedValueLow
- MachineType::Uint32(), // kExpectedValueHigh
- MachineType::Uint32(), // kTimeoutLow
- MachineType::Uint32()) // kTimeoutHigh
+ static constexpr bool kNoStackScan = true;
-#if V8_TARGET_ARCH_IA32
- static constexpr bool kPassLastArgOnStack = true;
-#else
- static constexpr bool kPassLastArgOnStack = false;
-#endif
-
- // Pass the last parameter through the stack.
- static constexpr int kStackArgumentsCount = kPassLastArgOnStack ? 1 : 0;
+ DEFINE_RESULT_AND_PARAMETER_TYPES(
+ MachineType::Uint32(), // result 1
+ MachineType::Uint32(), // kAddress
+ MachineType::Uint32(), // kExpectedValueLow
+ MachineType::Uint32(), // kExpectedValueHigh
+ MachineType::Uint32(), // kTimeoutLow
+ MachineType::Uint32()) // kTimeoutHigh
- DECLARE_DESCRIPTOR(WasmI64AtomicWait32Descriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(WasmI64AtomicWait32Descriptor)
};
-class CloneObjectWithVectorDescriptor final : public CallInterfaceDescriptor {
+class CloneObjectWithVectorDescriptor final
+ : public StaticCallInterfaceDescriptor<CloneObjectWithVectorDescriptor> {
public:
DEFINE_PARAMETERS(kSource, kFlags, kSlot, kVector)
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::TaggedPointer(), // result 1
@@ -1737,108 +1818,142 @@ class CloneObjectWithVectorDescriptor final : public CallInterfaceDescriptor {
MachineType::TaggedSigned(), // kFlags
MachineType::TaggedSigned(), // kSlot
MachineType::AnyTagged()) // kVector
- DECLARE_DESCRIPTOR(CloneObjectWithVectorDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CloneObjectWithVectorDescriptor)
};
-class CloneObjectBaselineDescriptor final : public CallInterfaceDescriptor {
+class CloneObjectBaselineDescriptor final
+ : public StaticCallInterfaceDescriptor<CloneObjectBaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kSource, kFlags, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kSource
MachineType::TaggedSigned(), // kFlags
MachineType::TaggedSigned()) // kSlot
- DECLARE_DESCRIPTOR(CloneObjectBaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CloneObjectBaselineDescriptor)
};
-class BinaryOp_WithFeedbackDescriptor : public CallInterfaceDescriptor {
+class BinaryOp_WithFeedbackDescriptor
+ : public StaticCallInterfaceDescriptor<BinaryOp_WithFeedbackDescriptor> {
public:
DEFINE_PARAMETERS(kLeft, kRight, kSlot, kFeedbackVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kLeft
MachineType::AnyTagged(), // kRight
MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(BinaryOp_WithFeedbackDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(BinaryOp_WithFeedbackDescriptor)
+};
+
+class CallTrampoline_Baseline_CompactDescriptor
+ : public StaticCallInterfaceDescriptor<
+ CallTrampoline_Baseline_CompactDescriptor> {
+ public:
+ using ArgumentCountField = base::BitField<uint32_t, 0, 8>;
+ using SlotField = base::BitField<uintptr_t, 8, 24>;
+
+ static bool EncodeBitField(uint32_t argc, uintptr_t slot, uint32_t* out) {
+ if (ArgumentCountField::is_valid(argc) && SlotField::is_valid(slot)) {
+ *out = ArgumentCountField::encode(argc) | SlotField::encode(slot);
+ return true;
+ }
+ return false;
+ }
+
+ DEFINE_PARAMETERS_NO_CONTEXT_VARARGS(kFunction, kBitField)
+ DEFINE_PARAMETER_TYPES(
+ MachineType::AnyTagged(), // kFunction
+ MachineType::Uint32()) // kBitField = ArgumentCountField | SlotField
+ DECLARE_DESCRIPTOR(CallTrampoline_Baseline_CompactDescriptor)
};
-class CallTrampoline_BaselineDescriptor : public CallInterfaceDescriptor {
+class CallTrampoline_BaselineDescriptor
+ : public StaticCallInterfaceDescriptor<CallTrampoline_BaselineDescriptor> {
public:
- DEFINE_PARAMETERS_VARARGS(kFunction, kActualArgumentsCount, kSlot)
+ DEFINE_PARAMETERS_NO_CONTEXT_VARARGS(kFunction, kActualArgumentsCount, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunction
MachineType::Int32(), // kActualArgumentsCount
MachineType::UintPtr()) // kSlot
- DECLARE_DESCRIPTOR(CallTrampoline_BaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(CallTrampoline_BaselineDescriptor)
};
-class CallTrampoline_WithFeedbackDescriptor : public CallInterfaceDescriptor {
+class CallTrampoline_WithFeedbackDescriptor
+ : public StaticCallInterfaceDescriptor<
+ CallTrampoline_WithFeedbackDescriptor> {
public:
DEFINE_PARAMETERS_VARARGS(kFunction, kActualArgumentsCount, kSlot,
- kFeedbackVector)
+ kFeedbackVector, kReceiver)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kFunction
MachineType::Int32(), // kActualArgumentsCount
MachineType::UintPtr(), // kSlot
- MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(CallTrampoline_WithFeedbackDescriptor,
- CallInterfaceDescriptor)
+ MachineType::AnyTagged(), // kFeedbackVector
+ MachineType::AnyTagged()) // kReceiver
+ DECLARE_DESCRIPTOR(CallTrampoline_WithFeedbackDescriptor)
};
-class Compare_WithFeedbackDescriptor : public CallInterfaceDescriptor {
+class Compare_WithFeedbackDescriptor
+ : public StaticCallInterfaceDescriptor<Compare_WithFeedbackDescriptor> {
public:
DEFINE_PARAMETERS(kLeft, kRight, kSlot, kFeedbackVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kLeft
MachineType::AnyTagged(), // kRight
MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(Compare_WithFeedbackDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(Compare_WithFeedbackDescriptor)
};
-class Compare_BaselineDescriptor : public CallInterfaceDescriptor {
+class Compare_BaselineDescriptor
+ : public StaticCallInterfaceDescriptor<Compare_BaselineDescriptor> {
public:
DEFINE_PARAMETERS_NO_CONTEXT(kLeft, kRight, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kLeft
MachineType::AnyTagged(), // kRight
MachineType::UintPtr()) // kSlot
- DECLARE_DESCRIPTOR(Compare_BaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(Compare_BaselineDescriptor)
+
+ static constexpr inline auto registers();
};
-class Construct_BaselineDescriptor : public CallInterfaceDescriptor {
+class Construct_BaselineDescriptor
+ : public StaticJSCallInterfaceDescriptor<Construct_BaselineDescriptor> {
public:
DEFINE_JS_PARAMETERS_NO_CONTEXT(kSlot)
DEFINE_JS_PARAMETER_TYPES(MachineType::UintPtr()) // kSlot
- DECLARE_JS_COMPATIBLE_DESCRIPTOR(Construct_BaselineDescriptor,
- CallInterfaceDescriptor, 1)
+ DECLARE_JS_COMPATIBLE_DESCRIPTOR(Construct_BaselineDescriptor)
};
-class Construct_WithFeedbackDescriptor : public CallInterfaceDescriptor {
+class Construct_WithFeedbackDescriptor
+ : public StaticJSCallInterfaceDescriptor<Construct_WithFeedbackDescriptor> {
public:
// kSlot is passed in a register, kFeedbackVector on the stack.
DEFINE_JS_PARAMETERS(kSlot, kFeedbackVector)
DEFINE_JS_PARAMETER_TYPES(MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_JS_COMPATIBLE_DESCRIPTOR(Construct_WithFeedbackDescriptor,
- CallInterfaceDescriptor, 1)
+ DECLARE_JS_COMPATIBLE_DESCRIPTOR(Construct_WithFeedbackDescriptor)
};
-class UnaryOp_WithFeedbackDescriptor : public CallInterfaceDescriptor {
+class UnaryOp_WithFeedbackDescriptor
+ : public StaticCallInterfaceDescriptor<UnaryOp_WithFeedbackDescriptor> {
public:
DEFINE_PARAMETERS(kValue, kSlot, kFeedbackVector)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kValue
MachineType::UintPtr(), // kSlot
MachineType::AnyTagged()) // kFeedbackVector
- DECLARE_DESCRIPTOR(UnaryOp_WithFeedbackDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(UnaryOp_WithFeedbackDescriptor)
};
-class UnaryOp_BaselineDescriptor : public CallInterfaceDescriptor {
+class UnaryOp_BaselineDescriptor
+ : public StaticCallInterfaceDescriptor<UnaryOp_BaselineDescriptor> {
public:
- DEFINE_PARAMETERS(kValue, kSlot)
+ DEFINE_PARAMETERS_NO_CONTEXT(kValue, kSlot)
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), // kValue
MachineType::UintPtr()) // kSlot
- DECLARE_DESCRIPTOR(UnaryOp_BaselineDescriptor, CallInterfaceDescriptor)
+ DECLARE_DESCRIPTOR(UnaryOp_BaselineDescriptor)
};
-#define DEFINE_TFS_BUILTIN_DESCRIPTOR(Name, ...) \
- class Name##Descriptor : public CallInterfaceDescriptor { \
- public: \
- DEFINE_PARAMETERS(__VA_ARGS__) \
- DECLARE_DEFAULT_DESCRIPTOR(Name##Descriptor, CallInterfaceDescriptor) \
+#define DEFINE_TFS_BUILTIN_DESCRIPTOR(Name, ...) \
+ class Name##Descriptor \
+ : public StaticCallInterfaceDescriptor<Name##Descriptor> { \
+ public: \
+ DEFINE_PARAMETERS(__VA_ARGS__) \
+ DECLARE_DEFAULT_DESCRIPTOR(Name##Descriptor) \
};
BUILTIN_LIST_TFS(DEFINE_TFS_BUILTIN_DESCRIPTOR)
#undef DEFINE_TFS_BUILTIN_DESCRIPTOR
@@ -1852,11 +1967,12 @@ BUILTIN_LIST_TFS(DEFINE_TFS_BUILTIN_DESCRIPTOR)
#undef DECLARE_DESCRIPTOR_WITH_BASE
#undef DECLARE_DESCRIPTOR
#undef DECLARE_JS_COMPATIBLE_DESCRIPTOR
-#undef DEFINE_FLAGS_AND_RESULT_AND_PARAMETERS
#undef DEFINE_RESULT_AND_PARAMETERS
+#undef DEFINE_PARAMETERS_ENTRY
#undef DEFINE_PARAMETERS
#undef DEFINE_PARAMETERS_VARARGS
#undef DEFINE_PARAMETERS_NO_CONTEXT
+#undef DEFINE_RESULT_AND_PARAMETERS_NO_CONTEXT
#undef DEFINE_RESULT_AND_PARAMETER_TYPES
#undef DEFINE_PARAMETER_TYPES
#undef DEFINE_JS_PARAMETERS
diff --git a/deps/v8/src/codegen/machine-type.cc b/deps/v8/src/codegen/machine-type.cc
index 86fc480ea5..1972c41b24 100644
--- a/deps/v8/src/codegen/machine-type.cc
+++ b/deps/v8/src/codegen/machine-type.cc
@@ -55,6 +55,8 @@ const char* MachineReprToString(MachineRepresentation rep) {
return "kRepCompressedPointer";
case MachineRepresentation::kCompressed:
return "kRepCompressed";
+ case MachineRepresentation::kMapWord:
+ return "kRepMapWord";
}
UNREACHABLE();
}
diff --git a/deps/v8/src/codegen/machine-type.h b/deps/v8/src/codegen/machine-type.h
index ac21d3c3e6..7a00608459 100644
--- a/deps/v8/src/codegen/machine-type.h
+++ b/deps/v8/src/codegen/machine-type.h
@@ -22,6 +22,19 @@ enum class MachineRepresentation : uint8_t {
kWord16,
kWord32,
kWord64,
+ // (uncompressed) MapWord
+ // kMapWord is the representation of a map word, i.e. a map in the header
+ // of a HeapObject.
+ // If V8_MAP_PACKING is disabled, a map word is just the map itself. Hence
+ // kMapWord is equivalent to kTaggedPointer -- in fact it will be
+ // translated to kTaggedPointer during memory lowering.
+ // If V8_MAP_PACKING is enabled, a map word is a Smi-like encoding of a map
+ // and some meta data. Memory lowering of kMapWord loads/stores
+ // produces low-level kTagged loads/stores plus the necessary
+ // decode/encode operations.
+ // In either case, the kMapWord representation is not used after memory
+ // lowering.
+ kMapWord,
kTaggedSigned, // (uncompressed) Smi
kTaggedPointer, // (uncompressed) HeapObject
kTagged, // (uncompressed) Object (Smi or HeapObject)
@@ -102,6 +115,10 @@ class MachineType {
return representation() == MachineRepresentation::kNone;
}
+ constexpr bool IsMapWord() const {
+ return representation() == MachineRepresentation::kMapWord;
+ }
+
constexpr bool IsSigned() const {
return semantic() == MachineSemantic::kInt32 ||
semantic() == MachineSemantic::kInt64;
@@ -187,6 +204,9 @@ class MachineType {
return MachineType(MachineRepresentation::kTaggedPointer,
MachineSemantic::kAny);
}
+ constexpr static MachineType MapInHeader() {
+ return MachineType(MachineRepresentation::kMapWord, MachineSemantic::kAny);
+ }
constexpr static MachineType TaggedSigned() {
return MachineType(MachineRepresentation::kTaggedSigned,
MachineSemantic::kInt32);
@@ -283,7 +303,8 @@ inline bool IsFloatingPoint(MachineRepresentation rep) {
inline bool CanBeTaggedPointer(MachineRepresentation rep) {
return rep == MachineRepresentation::kTagged ||
- rep == MachineRepresentation::kTaggedPointer;
+ rep == MachineRepresentation::kTaggedPointer ||
+ rep == MachineRepresentation::kMapWord;
}
inline bool CanBeTaggedSigned(MachineRepresentation rep) {
@@ -328,16 +349,12 @@ V8_EXPORT_PRIVATE inline constexpr int ElementSizeLog2Of(
case MachineRepresentation::kTaggedSigned:
case MachineRepresentation::kTaggedPointer:
case MachineRepresentation::kTagged:
+ case MachineRepresentation::kMapWord:
case MachineRepresentation::kCompressedPointer:
case MachineRepresentation::kCompressed:
return kTaggedSizeLog2;
default:
-#if V8_HAS_CXX14_CONSTEXPR
UNREACHABLE();
-#else
- // Return something for older compilers.
- return -1;
-#endif
}
}
diff --git a/deps/v8/src/codegen/macro-assembler.h b/deps/v8/src/codegen/macro-assembler.h
index ce3ccbf332..484ec9e4b2 100644
--- a/deps/v8/src/codegen/macro-assembler.h
+++ b/deps/v8/src/codegen/macro-assembler.h
@@ -10,7 +10,7 @@
#include "src/heap/heap.h"
// Helper types to make boolean flag easier to read at call-site.
-enum InvokeFlag { CALL_FUNCTION, JUMP_FUNCTION };
+enum class InvokeType { kCall, kJump };
// Flags used for the AllocateInNewSpace functions.
enum AllocationFlags {
@@ -28,6 +28,10 @@ enum AllocationFlags {
PRETENURE = 1 << 3,
};
+enum class RememberedSetAction { kOmit, kEmit };
+
+enum class SmiCheck { kOmit, kInline };
+
// This is the only place allowed to include the platform-specific headers.
#define INCLUDED_FROM_MACRO_ASSEMBLER_H
#if V8_TARGET_ARCH_IA32
diff --git a/deps/v8/src/codegen/mips/assembler-mips.cc b/deps/v8/src/codegen/mips/assembler-mips.cc
index 2ef08ae87c..c254860b14 100644
--- a/deps/v8/src/codegen/mips/assembler-mips.cc
+++ b/deps/v8/src/codegen/mips/assembler-mips.cc
@@ -261,29 +261,27 @@ static const int kNegOffset = 0x00008000;
// operations as post-increment of sp.
const Instr kPopInstruction = ADDIU | (sp.code() << kRsShift) |
(sp.code() << kRtShift) |
- (kPointerSize & kImm16Mask); // NOLINT
+ (kPointerSize & kImm16Mask);
// addiu(sp, sp, -4) part of Push(r) operation as pre-decrement of sp.
const Instr kPushInstruction = ADDIU | (sp.code() << kRsShift) |
(sp.code() << kRtShift) |
- (-kPointerSize & kImm16Mask); // NOLINT
+ (-kPointerSize & kImm16Mask);
// sw(r, MemOperand(sp, 0))
-const Instr kPushRegPattern =
- SW | (sp.code() << kRsShift) | (0 & kImm16Mask); // NOLINT
+const Instr kPushRegPattern = SW | (sp.code() << kRsShift) | (0 & kImm16Mask);
// lw(r, MemOperand(sp, 0))
-const Instr kPopRegPattern =
- LW | (sp.code() << kRsShift) | (0 & kImm16Mask); // NOLINT
+const Instr kPopRegPattern = LW | (sp.code() << kRsShift) | (0 & kImm16Mask);
const Instr kLwRegFpOffsetPattern =
- LW | (fp.code() << kRsShift) | (0 & kImm16Mask); // NOLINT
+ LW | (fp.code() << kRsShift) | (0 & kImm16Mask);
const Instr kSwRegFpOffsetPattern =
- SW | (fp.code() << kRsShift) | (0 & kImm16Mask); // NOLINT
+ SW | (fp.code() << kRsShift) | (0 & kImm16Mask);
const Instr kLwRegFpNegOffsetPattern =
- LW | (fp.code() << kRsShift) | (kNegOffset & kImm16Mask); // NOLINT
+ LW | (fp.code() << kRsShift) | (kNegOffset & kImm16Mask);
const Instr kSwRegFpNegOffsetPattern =
- SW | (fp.code() << kRsShift) | (kNegOffset & kImm16Mask); // NOLINT
+ SW | (fp.code() << kRsShift) | (kNegOffset & kImm16Mask);
// A mask for the Rt register for push, pop, lw, sw instructions.
const Instr kRtMask = kRtFieldMask;
const Instr kLwSwInstrTypeMask = 0xFFE00000;
diff --git a/deps/v8/src/codegen/mips/assembler-mips.h b/deps/v8/src/codegen/mips/assembler-mips.h
index ccdea03a79..47bdf26d55 100644
--- a/deps/v8/src/codegen/mips/assembler-mips.h
+++ b/deps/v8/src/codegen/mips/assembler-mips.h
@@ -1907,7 +1907,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
class EnsureSpace {
public:
- explicit inline EnsureSpace(Assembler* assembler);
+ explicit V8_INLINE EnsureSpace(Assembler* assembler);
};
class V8_EXPORT_PRIVATE V8_NODISCARD UseScratchRegisterScope {
diff --git a/deps/v8/src/codegen/mips/interface-descriptors-mips-inl.h b/deps/v8/src/codegen/mips/interface-descriptors-mips-inl.h
new file mode 100644
index 0000000000..edea1b3844
--- /dev/null
+++ b/deps/v8/src/codegen/mips/interface-descriptors-mips-inl.h
@@ -0,0 +1,258 @@
+// Copyright 2012 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_CODEGEN_MIPS_INTERFACE_DESCRIPTORS_MIPS_INL_H_
+#define V8_CODEGEN_MIPS_INTERFACE_DESCRIPTORS_MIPS_INL_H_
+
+#if V8_TARGET_ARCH_MIPS
+
+#include "src/codegen/interface-descriptors.h"
+#include "src/execution/frames.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(a0, a1, a2, a3, t0);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(a0, a1, a2, a3, kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(kReturnRegister0, a0, a1, a2, cp);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(a0, a1, a2, a3, kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return a1; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return a2; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return a0; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return a3; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return t0;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return a1; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return a2; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return a0; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return t0; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() { return a3; }
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return t1; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return a0; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return a3; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return a3; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ // TODO(v8:11421): Implement on this platform.
+ return a3;
+}
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() {
+ // TODO(v8:11421): Implement on this platform.
+ return t0;
+}
+
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return a0; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(a3); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // a1: target
+ // a0: number of arguments
+ return RegisterArray(a1, a0);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // t0 : arguments list length (untagged)
+ // a2 : arguments list (FixedArray)
+ return RegisterArray(a1, a0, t0, a2);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // a1: the target to call
+ // a0: number of arguments
+ // a2: start index (to support rest parameters)
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // a1 : function template info
+ // a0 : number of arguments (on the stack, not including receiver)
+ return RegisterArray(a1, a0);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a2 : the object to spread
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // a1 : the target to call
+ // a2 : the arguments list
+ return RegisterArray(a1, a2);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a3 : the new target
+ // t0 : arguments list length (untagged)
+ // a2 : arguments list (FixedArray)
+ return RegisterArray(a1, a3, a0, t0, a2);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // a1: the target to call
+ // a3: new target
+ // a0: number of arguments
+ // a2: start index (to support rest parameters)
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a3 : the new target
+ // a2 : the object to spread
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // a1 : the target to call
+ // a3 : the new target
+ // a2 : the arguments list
+ return RegisterArray(a1, a3, a2);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // a1: target
+ // a3: new target
+ // a0: number of arguments
+ // a2: allocation site or undefined
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(a0); }
+
+// static
+constexpr auto CompareDescriptor::registers() { return RegisterArray(a1, a0); }
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() { return RegisterArray(a1, a0); }
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ // TODO(v8:11421): Implement on this platform.
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ // a1 : kApiFunctionAddress
+ // a2 : kArgc
+ // a3 : kCallData
+ // a0 : kHolder
+ return RegisterArray(a1, a2, a3, a0);
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ // a0 : argument count (not including receiver
+ // a2 : address of first argument
+ // a1 : the target callable to be call
+ return RegisterArray(a0, a2, a1);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ // a0 : argument count (not including receiver)
+ // t4 : address of the first argument
+ // a1 : constructor to call
+ // a3 : new target
+ // a2 : allocation site feedback if available, undefined otherwise
+ return RegisterArray(a0, t4, a1, a3, a2);
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ // v0 : the value to pass to the generator
+ // a1 : the JSGeneratorObject to resume
+ return RegisterArray(v0, a1);
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray(a0, a1);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_MIPS
+
+#endif // V8_CODEGEN_MIPS_INTERFACE_DESCRIPTORS_MIPS_INL_H_
diff --git a/deps/v8/src/codegen/mips/interface-descriptors-mips.cc b/deps/v8/src/codegen/mips/interface-descriptors-mips.cc
deleted file mode 100644
index f41a0e14ca..0000000000
--- a/deps/v8/src/codegen/mips/interface-descriptors-mips.cc
+++ /dev/null
@@ -1,332 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_MIPS
-
-#include "src/codegen/interface-descriptors.h"
-
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return cp; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, t0};
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-// On MIPS it is not allowed to use odd numbered floating point registers
-// (e.g. f1, f3, etc.) for parameters. This can happen if we use
-// DefaultInitializePlatformSpecific to assign float registers for parameters.
-// E.g if fourth parameter goes to float register, f7 would be assigned for
-// parameter (a3 casted to int is 7).
-bool CallInterfaceDescriptor::IsValidFloatParameterRegister(Register reg) {
- return reg.code() % 2 == 0;
-}
-
-void WasmI32AtomicWait32Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3};
- CHECK_EQ(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void WasmI64AtomicWait32Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, t0};
- CHECK_EQ(static_cast<size_t>(kParameterCount - kStackArgumentsCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount - kStackArgumentsCount,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {kReturnRegister0, a0, a1, a2, cp};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return a1; }
-const Register LoadDescriptor::NameRegister() { return a2; }
-const Register LoadDescriptor::SlotRegister() { return a0; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return a3; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return t0;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return a1; }
-const Register StoreDescriptor::NameRegister() { return a2; }
-const Register StoreDescriptor::ValueRegister() { return a0; }
-const Register StoreDescriptor::SlotRegister() { return t0; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return a3; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return t0; }
-const Register StoreTransitionDescriptor::VectorRegister() { return a3; }
-const Register StoreTransitionDescriptor::MapRegister() { return t1; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return a0; }
-const Register ApiGetterDescriptor::CallbackRegister() { return a3; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return a3; }
-
-const Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
- // TODO(v8:11421): Implement on this platform.
- UNREACHABLE();
-}
-const Register BaselineLeaveFrameDescriptor::WeightRegister() {
- // TODO(v8:11421): Implement on this platform.
- UNREACHABLE();
-}
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return a0; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: target
- // a0: number of arguments
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // t0 : arguments list length (untagged)
- // a2 : arguments list (FixedArray)
- Register registers[] = {a1, a0, t0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: the target to call
- // a0: number of arguments
- // a2: start index (to support rest parameters)
- Register registers[] = {a1, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : function template info
- // a0 : number of arguments (on the stack, not including receiver)
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a2 : the object to spread
- Register registers[] = {a1, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : the target to call
- // a2 : the arguments list
- Register registers[] = {a1, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a3 : the new target
- // t0 : arguments list length (untagged)
- // a2 : arguments list (FixedArray)
- Register registers[] = {a1, a3, a0, t0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: the target to call
- // a3: new target
- // a0: number of arguments
- // a2: start index (to support rest parameters)
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a3 : the new target
- // a2 : the object to spread
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : the target to call
- // a3 : the new target
- // a2 : the arguments list
- Register registers[] = {a1, a3, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: target
- // a3: new target
- // a0: number of arguments
- // a2: allocation site or undefined
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a1, // kApiFunctionAddress
- a2, // kArgc
- a3, // kCallData
- a0, // kHolder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a0, // argument count (not including receiver)
- a2, // address of first argument
- a1 // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a0, // argument count (not including receiver)
- t4, // address of the first argument
- a1, // constructor to call
- a3, // new target
- a2, // allocation site feedback if available, undefined otherwise
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- v0, // the value to pass to the generator
- a1 // the JSGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a1, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a0, a1};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_MIPS
diff --git a/deps/v8/src/codegen/mips/macro-assembler-mips.cc b/deps/v8/src/codegen/mips/macro-assembler-mips.cc
index 8bbdbca662..d48b441c7b 100644
--- a/deps/v8/src/codegen/mips/macro-assembler-mips.cc
+++ b/deps/v8/src/codegen/mips/macro-assembler-mips.cc
@@ -12,6 +12,7 @@
#include "src/codegen/callable.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/external-reference-table.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
#include "src/codegen/register-configuration.h"
#include "src/debug/debug.h"
@@ -64,7 +65,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
RegList list = kJSCallerSaved & ~exclusions;
bytes += NumRegs(list) * kPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -89,7 +90,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
MultiPush(list);
bytes += NumRegs(list) * kPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPushFPU(kCallerSavedFPU);
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -100,7 +101,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
Register exclusion2, Register exclusion3) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPopFPU(kCallerSavedFPU);
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -179,7 +180,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -188,7 +189,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
DCHECK(IsAligned(offset, kPointerSize));
Addu(dst, object, Operand(offset - kHeapObjectTag));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
Label ok;
And(t8, dst, Operand(kPointerSize - 1));
@@ -198,13 +199,13 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, dst, value, ra_status, save_fp, remembered_set_action,
- OMIT_SMI_CHECK);
+ SmiCheck::kOmit);
bind(&done);
// Clobber clobbered input registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
li(value, Operand(bit_cast<int32_t>(kZapValue + 4)));
li(dst, Operand(bit_cast<int32_t>(kZapValue + 8)));
}
@@ -336,7 +337,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
DCHECK(!AreAliased(object, address, value, t8));
DCHECK(!AreAliased(object, address, value, t9));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
lw(scratch, MemOperand(address));
@@ -344,7 +345,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
Operand(value));
}
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
@@ -354,7 +355,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// catch stores of smis and stores into the young generation.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
DCHECK_EQ(0, kSmiTag);
JumpIfSmi(value, &done);
}
@@ -379,7 +380,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// Clobber clobbered registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
li(address, Operand(bit_cast<int32_t>(kZapValue + 12)));
li(value, Operand(bit_cast<int32_t>(kZapValue + 16)));
}
@@ -4176,14 +4177,6 @@ void TurboAssembler::PushArray(Register array, Register size, Register scratch,
}
}
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- li(a1, ExternalReference::debug_restart_fp_address(isolate()));
- lw(a1, MemOperand(a1));
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
- ne, a1, Operand(zero_reg));
-}
-
// ---------------------------------------------------------------------------
// Exception handling.
@@ -4373,7 +4366,7 @@ void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch1,
void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count,
- Label* done, InvokeFlag flag) {
+ Label* done, InvokeType type) {
Label regular_invoke;
// a0: actual arguments count
@@ -4484,9 +4477,9 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target,
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, a1);
DCHECK_IMPLIES(new_target.is_valid(), new_target == a3);
@@ -4500,19 +4493,21 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// We call indirectly through the code field in the function to
// allow recompilation to take effect without changing any of the
// call sites.
Register code = kJavaScriptCallCodeStartRegister;
lw(code, FieldMemOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- Addu(code, code, Code::kHeaderSize - kHeapObjectTag);
- Call(code);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- Addu(code, code, Code::kHeaderSize - kHeapObjectTag);
- Jump(code);
+ switch (type) {
+ case InvokeType::kCall:
+ Addu(code, code, Code::kHeaderSize - kHeapObjectTag);
+ Call(code);
+ break;
+ case InvokeType::kJump:
+ Addu(code, code, Code::kHeaderSize - kHeapObjectTag);
+ Jump(code);
+ break;
}
// Continue here if InvokePrologue does handle the invocation due to
@@ -4522,9 +4517,9 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
void MacroAssembler::InvokeFunctionWithNewTarget(
Register function, Register new_target, Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in a1.
DCHECK_EQ(function, a1);
@@ -4538,15 +4533,15 @@ void MacroAssembler::InvokeFunctionWithNewTarget(
SharedFunctionInfo::kFormalParameterCountOffset));
InvokeFunctionCode(function, new_target, expected_reg, actual_parameter_count,
- flag);
+ type);
}
void MacroAssembler::InvokeFunction(Register function,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in a1.
DCHECK_EQ(function, a1);
@@ -4555,7 +4550,7 @@ void MacroAssembler::InvokeFunction(Register function,
lw(cp, FieldMemOperand(a1, JSFunction::kContextOffset));
InvokeFunctionCode(a1, no_reg, expected_parameter_count,
- actual_parameter_count, flag);
+ actual_parameter_count, type);
}
// ---------------------------------------------------------------------------
@@ -4699,8 +4694,8 @@ void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
BranchDelaySlot bd,
bool builtin_exit_frame) {
PrepareCEntryFunction(builtin);
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET, al, zero_reg, Operand(zero_reg), bd);
}
@@ -4746,7 +4741,7 @@ void TurboAssembler::DebugBreak() { stop(); }
void TurboAssembler::Assert(Condition cc, AbortReason reason, Register rs,
Operand rt) {
- if (emit_debug_code()) Check(cc, reason, rs, rt);
+ if (FLAG_debug_code) Check(cc, reason, rs, rt);
}
void TurboAssembler::Check(Condition cc, AbortReason reason, Register rs,
@@ -4761,11 +4756,11 @@ void TurboAssembler::Check(Condition cc, AbortReason reason, Register rs,
void TurboAssembler::Abort(AbortReason reason) {
Label abort_start;
bind(&abort_start);
-#ifdef DEBUG
- const char* msg = GetAbortReason(reason);
- RecordComment("Abort message: ");
- RecordComment(msg);
-#endif
+ if (FLAG_code_comments) {
+ const char* msg = GetAbortReason(reason);
+ RecordComment("Abort message: ");
+ RecordComment(msg);
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
@@ -4885,7 +4880,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
// Set up new frame pointer.
addiu(fp, sp, ExitFrameConstants::kFixedFrameSizeFromFp);
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
sw(zero_reg, MemOperand(fp, ExitFrameConstants::kSPOffset));
}
@@ -4999,7 +4994,7 @@ int TurboAssembler::ActivationFrameAlignment() {
}
void MacroAssembler::AssertStackIsAligned() {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
const int frame_alignment = ActivationFrameAlignment();
const int frame_alignment_mask = frame_alignment - 1;
@@ -5032,7 +5027,7 @@ void MacroAssembler::JumpIfNotSmi(Register value, Label* not_smi_label,
}
void MacroAssembler::AssertNotSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -5042,7 +5037,7 @@ void MacroAssembler::AssertNotSmi(Register object) {
}
void MacroAssembler::AssertSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -5052,7 +5047,7 @@ void MacroAssembler::AssertSmi(Register object) {
}
void MacroAssembler::AssertConstructor(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
SmiTst(object, t8);
@@ -5067,7 +5062,7 @@ void MacroAssembler::AssertConstructor(Register object) {
}
void MacroAssembler::AssertFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
SmiTst(object, t8);
@@ -5083,7 +5078,7 @@ void MacroAssembler::AssertFunction(Register object) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
SmiTst(object, t8);
@@ -5096,7 +5091,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
SmiTst(object, t8);
@@ -5123,7 +5118,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done_checking;
AssertNotSmi(object);
LoadRoot(scratch, RootIndex::kUndefinedValue);
@@ -5416,7 +5411,7 @@ void TurboAssembler::CallCFunctionHelper(Register function_base,
// PrepareCallCFunction. The C function must be called via t9, for mips ABI.
#if V8_HOST_ARCH_MIPS
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
int frame_alignment = base::OS::ActivationFrameAlignment();
int frame_alignment_mask = frame_alignment - 1;
if (frame_alignment > kPointerSize) {
diff --git a/deps/v8/src/codegen/mips/macro-assembler-mips.h b/deps/v8/src/codegen/mips/macro-assembler-mips.h
index 8d54e0b737..8a82eea6fa 100644
--- a/deps/v8/src/codegen/mips/macro-assembler-mips.h
+++ b/deps/v8/src/codegen/mips/macro-assembler-mips.h
@@ -45,8 +45,6 @@ enum LiFlags {
CONSTANT_SIZE = 1
};
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
enum RAStatus { kRAHasNotBeenSaved, kRAHasBeenSaved };
Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2 = no_reg,
@@ -974,8 +972,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, Register scratch,
RAStatus ra_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For a given |object| notify the garbage collector that the slot |address|
// has been written. |value| is the object being stored. The value and
@@ -983,8 +981,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWrite(
Register object, Register address, Register value, RAStatus ra_status,
SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
void Pref(int32_t hint, const MemOperand& rs);
@@ -1016,7 +1014,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function code by either calling or jumping.
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// On function call, call into the debugger if necessary.
void CheckDebugHook(Register fun, Register new_target,
@@ -1027,13 +1025,10 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// current context to the context in the function before invoking.
void InvokeFunctionWithNewTarget(Register function, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag);
+ InvokeType type);
void InvokeFunction(Register function, Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
-
- // Frame restart support.
- void MaybeDropFrames();
+ Register actual_parameter_count, InvokeType type);
// Exception handling.
@@ -1057,18 +1052,18 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Call a runtime routine.
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId id, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(id), num_arguments, save_doubles);
}
@@ -1155,7 +1150,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Helper functions for generating invokes.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
// Compute memory operands for safepoint stack slots.
static int SafepointRegisterStackIndex(int reg_code);
diff --git a/deps/v8/src/codegen/mips64/assembler-mips64.cc b/deps/v8/src/codegen/mips64/assembler-mips64.cc
index 7f7ebd2c73..70a02ddb6f 100644
--- a/deps/v8/src/codegen/mips64/assembler-mips64.cc
+++ b/deps/v8/src/codegen/mips64/assembler-mips64.cc
@@ -235,29 +235,27 @@ void Assembler::AllocateAndInstallRequestedHeapObjects(Isolate* isolate) {
// operations as post-increment of sp.
const Instr kPopInstruction = DADDIU | (sp.code() << kRsShift) |
(sp.code() << kRtShift) |
- (kPointerSize & kImm16Mask); // NOLINT
+ (kPointerSize & kImm16Mask);
// daddiu(sp, sp, -8) part of Push(r) operation as pre-decrement of sp.
const Instr kPushInstruction = DADDIU | (sp.code() << kRsShift) |
(sp.code() << kRtShift) |
- (-kPointerSize & kImm16Mask); // NOLINT
+ (-kPointerSize & kImm16Mask);
// Sd(r, MemOperand(sp, 0))
-const Instr kPushRegPattern =
- SD | (sp.code() << kRsShift) | (0 & kImm16Mask); // NOLINT
+const Instr kPushRegPattern = SD | (sp.code() << kRsShift) | (0 & kImm16Mask);
// Ld(r, MemOperand(sp, 0))
-const Instr kPopRegPattern =
- LD | (sp.code() << kRsShift) | (0 & kImm16Mask); // NOLINT
+const Instr kPopRegPattern = LD | (sp.code() << kRsShift) | (0 & kImm16Mask);
const Instr kLwRegFpOffsetPattern =
- LW | (fp.code() << kRsShift) | (0 & kImm16Mask); // NOLINT
+ LW | (fp.code() << kRsShift) | (0 & kImm16Mask);
const Instr kSwRegFpOffsetPattern =
- SW | (fp.code() << kRsShift) | (0 & kImm16Mask); // NOLINT
+ SW | (fp.code() << kRsShift) | (0 & kImm16Mask);
const Instr kLwRegFpNegOffsetPattern =
- LW | (fp.code() << kRsShift) | (kNegOffset & kImm16Mask); // NOLINT
+ LW | (fp.code() << kRsShift) | (kNegOffset & kImm16Mask);
const Instr kSwRegFpNegOffsetPattern =
- SW | (fp.code() << kRsShift) | (kNegOffset & kImm16Mask); // NOLINT
+ SW | (fp.code() << kRsShift) | (kNegOffset & kImm16Mask);
// A mask for the Rt register for push, pop, lw, sw instructions.
const Instr kRtMask = kRtFieldMask;
const Instr kLwSwInstrTypeMask = 0xFFE00000;
diff --git a/deps/v8/src/codegen/mips64/interface-descriptors-mips64-inl.h b/deps/v8/src/codegen/mips64/interface-descriptors-mips64-inl.h
new file mode 100644
index 0000000000..62e32776ef
--- /dev/null
+++ b/deps/v8/src/codegen/mips64/interface-descriptors-mips64-inl.h
@@ -0,0 +1,258 @@
+// Copyright 2012 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_CODEGEN_MIPS64_INTERFACE_DESCRIPTORS_MIPS64_INL_H_
+#define V8_CODEGEN_MIPS64_INTERFACE_DESCRIPTORS_MIPS64_INL_H_
+
+#if V8_TARGET_ARCH_MIPS64
+
+#include "src/codegen/interface-descriptors.h"
+#include "src/execution/frames.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(a0, a1, a2, a3, a4);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(a0, a1, a2, a3, kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(kReturnRegister0, a0, a1, a2, cp);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(a0, a1, a2, a3, kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return a1; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return a2; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return a0; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return a3; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return a4;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return a1; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return a2; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return a0; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return a4; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() { return a3; }
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return a5; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return a0; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return a3; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return a3; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ // TODO(v8:11421): Implement on this platform.
+ return a3;
+}
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() {
+ // TODO(v8:11421): Implement on this platform.
+ return a4;
+}
+
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return a0; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(a3); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // a1: target
+ // a0: number of arguments
+ return RegisterArray(a1, a0);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a4 : arguments list length (untagged)
+ // a2 : arguments list (FixedArray)
+ return RegisterArray(a1, a0, a4, a2);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // a1: the target to call
+ // a0: number of arguments
+ // a2: start index (to support rest parameters)
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // a1 : function template info
+ // a0 : number of arguments (on the stack, not including receiver)
+ return RegisterArray(a1, a0);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a2 : the object to spread
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // a1 : the target to call
+ // a2 : the arguments list
+ return RegisterArray(a1, a2);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a3 : the new target
+ // a4 : arguments list length (untagged)
+ // a2 : arguments list (FixedArray)
+ return RegisterArray(a1, a3, a0, a4, a2);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // a1: the target to call
+ // a3: new target
+ // a0: number of arguments
+ // a2: start index (to support rest parameters)
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a3 : the new target
+ // a2 : the object to spread
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // a1 : the target to call
+ // a3 : the new target
+ // a2 : the arguments list
+ return RegisterArray(a1, a3, a2);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // a1: target
+ // a3: new target
+ // a0: number of arguments
+ // a2: allocation site or undefined
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(a0); }
+
+// static
+constexpr auto CompareDescriptor::registers() { return RegisterArray(a1, a0); }
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ // TODO(v8:11421): Implement on this platform.
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() { return RegisterArray(a1, a0); }
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ // a1 : kApiFunctionAddress
+ // a2 : kArgc
+ // a3 : kCallData
+ // a0 : kHolder
+ return RegisterArray(a1, a2, a3, a0);
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ // a0 : argument count (not including receiver)
+ // a2 : address of first argument
+ // a1 : the target callable to be call
+ return RegisterArray(a0, a2, a1);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ // a0 : argument count (not including receiver)
+ // a4 : address of the first argument
+ // a1 : constructor to call
+ // a3 : new target
+ // a2 : allocation site feedback if available, undefined otherwise
+ return RegisterArray(a0, a4, a1, a3, a2);
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ // v0 : the value to pass to the generator
+ // a1 : the JSGeneratorObject to resume
+ return RegisterArray(v0, a1);
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray(a0, a1);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_MIPS64
+
+#endif // V8_CODEGEN_MIPS64_INTERFACE_DESCRIPTORS_MIPS64_INL_H_
diff --git a/deps/v8/src/codegen/mips64/interface-descriptors-mips64.cc b/deps/v8/src/codegen/mips64/interface-descriptors-mips64.cc
deleted file mode 100644
index f34d16e15b..0000000000
--- a/deps/v8/src/codegen/mips64/interface-descriptors-mips64.cc
+++ /dev/null
@@ -1,332 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_MIPS64
-
-#include "src/codegen/interface-descriptors.h"
-
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return cp; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, a4};
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-// On MIPS it is not allowed to use odd numbered floating point registers
-// (e.g. f1, f3, etc.) for parameters. This can happen if we use
-// DefaultInitializePlatformSpecific to assign float registers for parameters.
-// E.g if fourth parameter goes to float register, f7 would be assigned for
-// parameter (a3 casted to int is 7).
-bool CallInterfaceDescriptor::IsValidFloatParameterRegister(Register reg) {
- return reg.code() % 2 == 0;
-}
-
-void WasmI32AtomicWait32Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3};
- CHECK_EQ(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void WasmI64AtomicWait32Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, a4};
- CHECK_EQ(static_cast<size_t>(kParameterCount - kStackArgumentsCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount - kStackArgumentsCount,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {kReturnRegister0, a0, a1, a2, cp};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return a1; }
-const Register LoadDescriptor::NameRegister() { return a2; }
-const Register LoadDescriptor::SlotRegister() { return a0; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return a3; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return a4;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return a1; }
-const Register StoreDescriptor::NameRegister() { return a2; }
-const Register StoreDescriptor::ValueRegister() { return a0; }
-const Register StoreDescriptor::SlotRegister() { return a4; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return a3; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return a4; }
-const Register StoreTransitionDescriptor::VectorRegister() { return a3; }
-const Register StoreTransitionDescriptor::MapRegister() { return a5; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return a0; }
-const Register ApiGetterDescriptor::CallbackRegister() { return a3; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return a3; }
-
-const Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
- // TODO(v8:11421): Implement on this platform.
- UNREACHABLE();
-}
-const Register BaselineLeaveFrameDescriptor::WeightRegister() {
- // TODO(v8:11421): Implement on this platform.
- UNREACHABLE();
-}
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return a0; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: target
- // a0: number of arguments
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a4 : arguments list length (untagged)
- // a2 : arguments list (FixedArray)
- Register registers[] = {a1, a0, a4, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: the target to call
- // a0: number of arguments
- // a2: start index (to support rest parameters)
- Register registers[] = {a1, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : function template info
- // a0 : number of arguments (on the stack, not including receiver)
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a2 : the object to spread
- Register registers[] = {a1, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : the target to call
- // a2 : the arguments list
- Register registers[] = {a1, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a3 : the new target
- // a4 : arguments list length (untagged)
- // a2 : arguments list (FixedArray)
- Register registers[] = {a1, a3, a0, a4, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: the target to call
- // a3: new target
- // a0: number of arguments
- // a2: start index (to support rest parameters)
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a3 : the new target
- // a2 : the object to spread
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : the target to call
- // a3 : the new target
- // a2 : the arguments list
- Register registers[] = {a1, a3, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: target
- // a3: new target
- // a0: number of arguments
- // a2: allocation site or undefined
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a1, // kApiFunctionAddress
- a2, // kArgc
- a3, // kCallData
- a0, // kHolder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a0, // argument count (not including receiver)
- a2, // address of first argument
- a1 // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a0, // argument count (not including receiver)
- a4, // address of the first argument
- a1, // constructor to call
- a3, // new target
- a2, // allocation site feedback if available, undefined otherwise
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- v0, // the value to pass to the generator
- a1 // the JSGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a1, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a0, a1};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_MIPS64
diff --git a/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc b/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc
index 29443a2e58..a1896624e5 100644
--- a/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc
+++ b/deps/v8/src/codegen/mips64/macro-assembler-mips64.cc
@@ -12,6 +12,7 @@
#include "src/codegen/callable.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/external-reference-table.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
#include "src/codegen/register-configuration.h"
#include "src/debug/debug.h"
@@ -64,7 +65,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
RegList list = kJSCallerSaved & ~exclusions;
bytes += NumRegs(list) * kPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -89,7 +90,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
MultiPush(list);
bytes += NumRegs(list) * kPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPushFPU(kCallerSavedFPU);
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -100,7 +101,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
Register exclusion2, Register exclusion3) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPopFPU(kCallerSavedFPU);
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -177,7 +178,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -186,7 +187,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
DCHECK(IsAligned(offset, kPointerSize));
Daddu(dst, object, Operand(offset - kHeapObjectTag));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
Label ok;
And(t8, dst, Operand(kPointerSize - 1));
@@ -196,13 +197,13 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, dst, value, ra_status, save_fp, remembered_set_action,
- OMIT_SMI_CHECK);
+ SmiCheck::kOmit);
bind(&done);
// Clobber clobbered input registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
li(value, Operand(bit_cast<int64_t>(kZapValue + 4)));
li(dst, Operand(bit_cast<int64_t>(kZapValue + 8)));
}
@@ -334,7 +335,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
DCHECK(!AreAliased(object, address, value, t8));
DCHECK(!AreAliased(object, address, value, t9));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
Ld(scratch, MemOperand(address));
@@ -342,7 +343,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
Operand(value));
}
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
@@ -352,7 +353,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// catch stores of smis and stores into the young generation.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
DCHECK_EQ(0, kSmiTag);
JumpIfSmi(value, &done);
}
@@ -377,7 +378,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// Clobber clobbered registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
li(address, Operand(bit_cast<int64_t>(kZapValue + 12)));
li(value, Operand(bit_cast<int64_t>(kZapValue + 16)));
}
@@ -4687,14 +4688,6 @@ void TurboAssembler::PushArray(Register array, Register size, Register scratch,
}
}
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- li(a1, ExternalReference::debug_restart_fp_address(isolate()));
- Ld(a1, MemOperand(a1));
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
- ne, a1, Operand(zero_reg));
-}
-
// ---------------------------------------------------------------------------
// Exception handling.
@@ -4887,7 +4880,7 @@ void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch1,
void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count,
- Label* done, InvokeFlag flag) {
+ Label* done, InvokeType type) {
Label regular_invoke;
// a0: actual arguments count
@@ -4999,9 +4992,9 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target,
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, a1);
DCHECK_IMPLIES(new_target.is_valid(), new_target == a3);
@@ -5015,19 +5008,21 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// We call indirectly through the code field in the function to
// allow recompilation to take effect without changing any of the
// call sites.
Register code = kJavaScriptCallCodeStartRegister;
Ld(code, FieldMemOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- Daddu(code, code, Operand(Code::kHeaderSize - kHeapObjectTag));
- Call(code);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- Daddu(code, code, Operand(Code::kHeaderSize - kHeapObjectTag));
- Jump(code);
+ switch (type) {
+ case InvokeType::kCall:
+ Daddu(code, code, Operand(Code::kHeaderSize - kHeapObjectTag));
+ Call(code);
+ break;
+ case InvokeType::kJump:
+ Daddu(code, code, Operand(Code::kHeaderSize - kHeapObjectTag));
+ Jump(code);
+ break;
}
// Continue here if InvokePrologue does handle the invocation due to
@@ -5037,9 +5032,9 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
void MacroAssembler::InvokeFunctionWithNewTarget(
Register function, Register new_target, Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in a1.
DCHECK_EQ(function, a1);
@@ -5053,15 +5048,15 @@ void MacroAssembler::InvokeFunctionWithNewTarget(
SharedFunctionInfo::kFormalParameterCountOffset));
InvokeFunctionCode(a1, new_target, expected_parameter_count,
- actual_parameter_count, flag);
+ actual_parameter_count, type);
}
void MacroAssembler::InvokeFunction(Register function,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in a1.
DCHECK_EQ(function, a1);
@@ -5070,7 +5065,7 @@ void MacroAssembler::InvokeFunction(Register function,
Ld(cp, FieldMemOperand(a1, JSFunction::kContextOffset));
InvokeFunctionCode(a1, no_reg, expected_parameter_count,
- actual_parameter_count, flag);
+ actual_parameter_count, type);
}
// ---------------------------------------------------------------------------
@@ -5214,8 +5209,8 @@ void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
BranchDelaySlot bd,
bool builtin_exit_frame) {
PrepareCEntryFunction(builtin);
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET, al, zero_reg, Operand(zero_reg), bd);
}
@@ -5267,7 +5262,7 @@ void TurboAssembler::DebugBreak() { stop(); }
void TurboAssembler::Assert(Condition cc, AbortReason reason, Register rs,
Operand rt) {
- if (emit_debug_code()) Check(cc, reason, rs, rt);
+ if (FLAG_debug_code) Check(cc, reason, rs, rt);
}
void TurboAssembler::Check(Condition cc, AbortReason reason, Register rs,
@@ -5282,11 +5277,11 @@ void TurboAssembler::Check(Condition cc, AbortReason reason, Register rs,
void TurboAssembler::Abort(AbortReason reason) {
Label abort_start;
bind(&abort_start);
-#ifdef DEBUG
- const char* msg = GetAbortReason(reason);
- RecordComment("Abort message: ");
- RecordComment(msg);
-#endif
+ if (FLAG_code_comments) {
+ const char* msg = GetAbortReason(reason);
+ RecordComment("Abort message: ");
+ RecordComment(msg);
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
@@ -5405,7 +5400,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
// Set up new frame pointer.
daddiu(fp, sp, ExitFrameConstants::kFixedFrameSizeFromFp);
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Sd(zero_reg, MemOperand(fp, ExitFrameConstants::kSPOffset));
}
@@ -5521,7 +5516,7 @@ int TurboAssembler::ActivationFrameAlignment() {
}
void MacroAssembler::AssertStackIsAligned() {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
const int frame_alignment = ActivationFrameAlignment();
const int frame_alignment_mask = frame_alignment - 1;
@@ -5566,7 +5561,7 @@ void MacroAssembler::JumpIfNotSmi(Register value, Label* not_smi_label,
}
void MacroAssembler::AssertNotSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -5576,7 +5571,7 @@ void MacroAssembler::AssertNotSmi(Register object) {
}
void MacroAssembler::AssertSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -5586,7 +5581,7 @@ void MacroAssembler::AssertSmi(Register object) {
}
void MacroAssembler::AssertConstructor(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
SmiTst(object, t8);
@@ -5601,7 +5596,7 @@ void MacroAssembler::AssertConstructor(Register object) {
}
void MacroAssembler::AssertFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
SmiTst(object, t8);
@@ -5617,7 +5612,7 @@ void MacroAssembler::AssertFunction(Register object) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
SmiTst(object, t8);
@@ -5630,7 +5625,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
SmiTst(object, t8);
@@ -5657,7 +5652,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done_checking;
AssertNotSmi(object);
LoadRoot(scratch, RootIndex::kUndefinedValue);
@@ -5949,7 +5944,7 @@ void TurboAssembler::CallCFunctionHelper(Register function,
// PrepareCallCFunction. The C function must be called via t9, for mips ABI.
#if V8_HOST_ARCH_MIPS || V8_HOST_ARCH_MIPS64
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
int frame_alignment = base::OS::ActivationFrameAlignment();
int frame_alignment_mask = frame_alignment - 1;
if (frame_alignment > kPointerSize) {
diff --git a/deps/v8/src/codegen/mips64/macro-assembler-mips64.h b/deps/v8/src/codegen/mips64/macro-assembler-mips64.h
index 756b594edb..054f3345d1 100644
--- a/deps/v8/src/codegen/mips64/macro-assembler-mips64.h
+++ b/deps/v8/src/codegen/mips64/macro-assembler-mips64.h
@@ -55,8 +55,6 @@ enum LiFlags {
ADDRESS_LOAD = 2
};
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
enum RAStatus { kRAHasNotBeenSaved, kRAHasBeenSaved };
Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2 = no_reg,
@@ -994,8 +992,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, Register scratch,
RAStatus ra_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For a given |object| notify the garbage collector that the slot |address|
// has been written. |value| is the object being stored. The value and
@@ -1003,8 +1001,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWrite(
Register object, Register address, Register value, RAStatus ra_status,
SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
void Pref(int32_t hint, const MemOperand& rs);
@@ -1072,7 +1070,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function code by either calling or jumping.
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// On function call, call into the debugger if necessary.
void CheckDebugHook(Register fun, Register new_target,
@@ -1083,12 +1081,9 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// current context to the context in the function before invoking.
void InvokeFunctionWithNewTarget(Register function, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag);
+ InvokeType type);
void InvokeFunction(Register function, Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
-
- // Frame restart support.
- void MaybeDropFrames();
+ Register actual_parameter_count, InvokeType type);
// Exception handling.
@@ -1112,18 +1107,18 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Call a runtime routine.
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
}
@@ -1230,7 +1225,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Helper functions for generating invokes.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
// Compute memory operands for safepoint stack slots.
static int SafepointRegisterStackIndex(int reg_code);
diff --git a/deps/v8/src/codegen/optimized-compilation-info.cc b/deps/v8/src/codegen/optimized-compilation-info.cc
index f6fd5862fd..4d5c7a1d57 100644
--- a/deps/v8/src/codegen/optimized-compilation-info.cc
+++ b/deps/v8/src/codegen/optimized-compilation-info.cc
@@ -23,12 +23,16 @@ namespace internal {
OptimizedCompilationInfo::OptimizedCompilationInfo(
Zone* zone, Isolate* isolate, Handle<SharedFunctionInfo> shared,
- Handle<JSFunction> closure, CodeKind code_kind)
+ Handle<JSFunction> closure, CodeKind code_kind, BytecodeOffset osr_offset,
+ JavaScriptFrame* osr_frame)
: code_kind_(code_kind),
+ osr_offset_(osr_offset),
+ osr_frame_(osr_frame),
zone_(zone),
optimization_id_(isolate->NextOptimizationId()) {
DCHECK_EQ(*shared, closure->shared());
DCHECK(shared->is_compiled());
+ DCHECK_IMPLIES(is_osr(), IsOptimizing());
bytecode_array_ = handle(shared->GetBytecodeArray(isolate), isolate);
shared_info_ = shared;
closure_ = closure;
@@ -64,8 +68,6 @@ bool OptimizedCompilationInfo::FlagSetIsValid(Flag flag) const {
switch (flag) {
case kPoisonRegisterArguments:
return untrusted_code_mitigations();
- case kFunctionContextSpecializing:
- return !IsNativeContextIndependent();
default:
return true;
}
@@ -86,18 +88,22 @@ bool OptimizedCompilationInfo::FlagGetIsValid(Flag flag) const {
void OptimizedCompilationInfo::ConfigureFlags() {
if (FLAG_untrusted_code_mitigations) set_untrusted_code_mitigations();
+ if (FLAG_turbo_inline_js_wasm_calls) set_inline_js_wasm_calls();
+
+ if (!is_osr() && (IsTurboprop() || FLAG_concurrent_inlining)) {
+ set_concurrent_inlining();
+ }
switch (code_kind_) {
case CodeKind::TURBOFAN:
if (FLAG_function_context_specialization) {
set_function_context_specializing();
}
+ if (FLAG_turbo_splitting) set_splitting();
V8_FALLTHROUGH;
case CodeKind::TURBOPROP:
- case CodeKind::NATIVE_CONTEXT_INDEPENDENT:
set_called_with_code_start_register();
set_switch_jump_table();
- if (FLAG_turbo_splitting) set_splitting();
if (FLAG_untrusted_code_mitigations) set_poison_register_arguments();
// TODO(yangguo): Disable this in case of debugging for crbug.com/826613
if (FLAG_analyze_environment_liveness) set_analyze_environment_liveness();
diff --git a/deps/v8/src/codegen/optimized-compilation-info.h b/deps/v8/src/codegen/optimized-compilation-info.h
index 20386cbbee..b5ad1c9816 100644
--- a/deps/v8/src/codegen/optimized-compilation-info.h
+++ b/deps/v8/src/codegen/optimized-compilation-info.h
@@ -70,7 +70,9 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final {
V(TraceTurboAllocation, trace_turbo_allocation, 16) \
V(TraceHeapBroker, trace_heap_broker, 17) \
V(WasmRuntimeExceptionSupport, wasm_runtime_exception_support, 18) \
- V(ConcurrentInlining, concurrent_inlining, 19)
+ V(ConcurrentInlining, concurrent_inlining, 19) \
+ V(DiscardResultForTesting, discard_result_for_testing, 20) \
+ V(InlineJSWasmCalls, inline_js_wasm_calls, 21)
enum Flag {
#define DEF_ENUM(Camel, Lower, Bit) k##Camel = 1 << Bit,
@@ -102,7 +104,15 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final {
// Construct a compilation info for optimized compilation.
OptimizedCompilationInfo(Zone* zone, Isolate* isolate,
Handle<SharedFunctionInfo> shared,
- Handle<JSFunction> closure, CodeKind code_kind);
+ Handle<JSFunction> closure, CodeKind code_kind,
+ BytecodeOffset osr_offset,
+ JavaScriptFrame* osr_frame);
+ // For testing.
+ OptimizedCompilationInfo(Zone* zone, Isolate* isolate,
+ Handle<SharedFunctionInfo> shared,
+ Handle<JSFunction> closure, CodeKind code_kind)
+ : OptimizedCompilationInfo(zone, isolate, shared, closure, code_kind,
+ BytecodeOffset::None(), nullptr) {}
// Construct a compilation info for stub compilation, Wasm, and testing.
OptimizedCompilationInfo(Vector<const char> debug_name, Zone* zone,
CodeKind code_kind);
@@ -160,21 +170,11 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final {
bool IsOptimizing() const {
return CodeKindIsOptimizedJSFunction(code_kind());
}
- bool IsNativeContextIndependent() const {
- return code_kind() == CodeKind::NATIVE_CONTEXT_INDEPENDENT;
- }
bool IsTurboprop() const { return code_kind() == CodeKind::TURBOPROP; }
#if V8_ENABLE_WEBASSEMBLY
bool IsWasm() const { return code_kind() == CodeKind::WASM_FUNCTION; }
#endif // V8_ENABLE_WEBASSEMBLY
- void SetOptimizingForOsr(BytecodeOffset osr_offset,
- JavaScriptFrame* osr_frame) {
- DCHECK(IsOptimizing());
- osr_offset_ = osr_offset;
- osr_frame_ = osr_frame;
- }
-
void set_persistent_handles(
std::unique_ptr<PersistentHandles> persistent_handles) {
DCHECK_NULL(ph_);
@@ -293,7 +293,9 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final {
#endif // V8_ENABLE_WEBASSEMBLY
// Entry point when compiling for OSR, {BytecodeOffset::None} otherwise.
- BytecodeOffset osr_offset_ = BytecodeOffset::None();
+ const BytecodeOffset osr_offset_ = BytecodeOffset::None();
+ // The current OSR frame for specialization or {nullptr}.
+ JavaScriptFrame* const osr_frame_ = nullptr;
// The zone from which the compilation pipeline working on this
// OptimizedCompilationInfo allocates.
@@ -309,9 +311,6 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final {
const int optimization_id_;
unsigned inlined_bytecode_size_ = 0;
- // The current OSR frame for specialization or {nullptr}.
- JavaScriptFrame* osr_frame_ = nullptr;
-
Vector<const char> debug_name_;
std::unique_ptr<char[]> trace_turbo_filename_;
diff --git a/deps/v8/src/codegen/ppc/assembler-ppc.cc b/deps/v8/src/codegen/ppc/assembler-ppc.cc
index 7da9484cce..437f5f96c6 100644
--- a/deps/v8/src/codegen/ppc/assembler-ppc.cc
+++ b/deps/v8/src/codegen/ppc/assembler-ppc.cc
@@ -55,7 +55,11 @@ static unsigned CpuFeaturesImpliedByCompiler() {
}
bool CpuFeatures::SupportsWasmSimd128() {
+#if V8_ENABLE_WEBASSEMBLY
return CpuFeatures::IsSupported(SIMD);
+#else
+ return false;
+#endif // V8_ENABLE_WEBASSEMBLY
}
void CpuFeatures::ProbeImpl(bool cross_compile) {
@@ -1824,6 +1828,12 @@ void Assembler::lxvd(const Simd128Register rt, const MemOperand& src) {
TX);
}
+void Assembler::lxvx(const Simd128Register rt, const MemOperand& src) {
+ int TX = 1;
+ emit(LXVX | rt.code() * B21 | src.ra().code() * B16 | src.rb().code() * B11 |
+ TX);
+}
+
void Assembler::lxsdx(const Simd128Register rt, const MemOperand& src) {
int TX = 1;
emit(LXSDX | rt.code() * B21 | src.ra().code() * B16 | src.rb().code() * B11 |
@@ -1878,18 +1888,18 @@ void Assembler::stxvd(const Simd128Register rt, const MemOperand& dst) {
SX);
}
+void Assembler::stxvx(const Simd128Register rt, const MemOperand& dst) {
+ int SX = 1;
+ emit(STXVX | rt.code() * B21 | dst.ra().code() * B16 | dst.rb().code() * B11 |
+ SX);
+}
+
void Assembler::xxspltib(const Simd128Register rt, const Operand& imm) {
int TX = 1;
CHECK(is_uint8(imm.immediate()));
emit(XXSPLTIB | rt.code() * B21 | imm.immediate() * B11 | TX);
}
-void Assembler::xxbrq(const Simd128Register rt, const Simd128Register rb) {
- int BX = 1;
- int TX = 1;
- emit(XXBRQ | rt.code() * B21 | 31 * B16 | rb.code() * B11 | BX * B1 | TX);
-}
-
// Pseudo instructions.
void Assembler::nop(int type) {
Register reg = r0;
diff --git a/deps/v8/src/codegen/ppc/assembler-ppc.h b/deps/v8/src/codegen/ppc/assembler-ppc.h
index d5b37fe59f..1d7ecf76d7 100644
--- a/deps/v8/src/codegen/ppc/assembler-ppc.h
+++ b/deps/v8/src/codegen/ppc/assembler-ppc.h
@@ -448,6 +448,7 @@ class Assembler : public AssemblerBase {
}
PPC_XX2_OPCODE_A_FORM_LIST(DECLARE_PPC_XX2_INSTRUCTIONS)
+ PPC_XX2_OPCODE_B_FORM_LIST(DECLARE_PPC_XX2_INSTRUCTIONS)
#undef DECLARE_PPC_XX2_INSTRUCTIONS
#define DECLARE_PPC_XX3_INSTRUCTIONS(name, instr_name, instr_value) \
@@ -500,6 +501,9 @@ class Assembler : public AssemblerBase {
PPC_VX_OPCODE_A_FORM_LIST(DECLARE_PPC_VX_INSTRUCTIONS_A_FORM)
PPC_VX_OPCODE_B_FORM_LIST(DECLARE_PPC_VX_INSTRUCTIONS_B_FORM)
PPC_VX_OPCODE_C_FORM_LIST(DECLARE_PPC_VX_INSTRUCTIONS_C_FORM)
+ PPC_VX_OPCODE_D_FORM_LIST(
+ DECLARE_PPC_VX_INSTRUCTIONS_C_FORM) /* OPCODE_D_FORM can use
+ INSTRUCTIONS_C_FORM */
#undef DECLARE_PPC_VX_INSTRUCTIONS_A_FORM
#undef DECLARE_PPC_VX_INSTRUCTIONS_B_FORM
#undef DECLARE_PPC_VX_INSTRUCTIONS_C_FORM
@@ -1028,6 +1032,7 @@ class Assembler : public AssemblerBase {
void mtvsrd(const Simd128Register rt, const Register ra);
void mtvsrdd(const Simd128Register rt, const Register ra, const Register rb);
void lxvd(const Simd128Register rt, const MemOperand& src);
+ void lxvx(const Simd128Register rt, const MemOperand& src);
void lxsdx(const Simd128Register rt, const MemOperand& src);
void lxsibzx(const Simd128Register rt, const MemOperand& src);
void lxsihzx(const Simd128Register rt, const MemOperand& src);
@@ -1037,8 +1042,8 @@ class Assembler : public AssemblerBase {
void stxsihx(const Simd128Register rs, const MemOperand& src);
void stxsiwx(const Simd128Register rs, const MemOperand& src);
void stxvd(const Simd128Register rt, const MemOperand& src);
+ void stxvx(const Simd128Register rt, const MemOperand& src);
void xxspltib(const Simd128Register rt, const Operand& imm);
- void xxbrq(const Simd128Register rt, const Simd128Register rb);
// Pseudo instructions
diff --git a/deps/v8/src/codegen/ppc/constants-ppc.h b/deps/v8/src/codegen/ppc/constants-ppc.h
index 5b37a2ee11..56732b7f8b 100644
--- a/deps/v8/src/codegen/ppc/constants-ppc.h
+++ b/deps/v8/src/codegen/ppc/constants-ppc.h
@@ -418,6 +418,10 @@ using Instr = uint32_t;
/* Saturate */ \
V(xvcvdpuxws, XVCVDPUXWS, 0xF0000320)
+#define PPC_XX2_OPCODE_B_FORM_LIST(V) \
+ /* Vector Byte-Reverse Quadword */ \
+ V(xxbrq, XXBRQ, 0xF01F076C)
+
#define PPC_XX2_OPCODE_UNUSED_LIST(V) \
/* VSX Scalar Square Root Double-Precision */ \
V(xssqrtdp, XSSQRTDP, 0xF000012C) \
@@ -520,12 +524,11 @@ using Instr = uint32_t;
/* VSX Vector Test for software Square Root Single-Precision */ \
V(xvtsqrtsp, XVTSQRTSP, 0xF00002A8) \
/* Vector Splat Immediate Byte */ \
- V(xxspltib, XXSPLTIB, 0xF00002D0) \
- /* Vector Byte-Reverse Quadword */ \
- V(xxbrq, XXBRQ, 0xF000076C)
+ V(xxspltib, XXSPLTIB, 0xF00002D0)
#define PPC_XX2_OPCODE_LIST(V) \
PPC_XX2_OPCODE_A_FORM_LIST(V) \
+ PPC_XX2_OPCODE_B_FORM_LIST(V) \
PPC_XX2_OPCODE_UNUSED_LIST(V)
#define PPC_EVX_OPCODE_LIST(V) \
@@ -1983,6 +1986,8 @@ using Instr = uint32_t;
V(lxsspx, LXSSPX, 0x7C000418) \
/* Load VSR Vector Doubleword*2 Indexed */ \
V(lxvd, LXVD, 0x7C000698) \
+ /* Load VSX Vector Indexed */ \
+ V(lxvx, LXVX, 0x7C000218) \
/* Load VSR Vector Doubleword & Splat Indexed */ \
V(lxvdsx, LXVDSX, 0x7C000298) \
/* Load VSR Vector Word*4 Indexed */ \
@@ -2011,6 +2016,8 @@ using Instr = uint32_t;
V(stxsspx, STXSSPX, 0x7C000518) \
/* Store VSR Vector Doubleword*2 Indexed */ \
V(stxvd, STXVD, 0x7C000798) \
+ /* Store VSX Vector Indexed */ \
+ V(stxvx, STXVX, 0x7C000318) \
/* Store VSR Vector Word*4 Indexed */ \
V(stxvw, STXVW, 0x7C000718)
@@ -2430,6 +2437,12 @@ using Instr = uint32_t;
/* Vector Population Count Byte */ \
V(vpopcntb, VPOPCNTB, 0x10000703)
+#define PPC_VX_OPCODE_D_FORM_LIST(V) \
+ /* Vector Negate Word */ \
+ V(vnegw, VNEGW, 0x10060602) \
+ /* Vector Negate Doubleword */ \
+ V(vnegd, VNEGD, 0x10070602)
+
#define PPC_VX_OPCODE_UNUSED_LIST(V) \
/* Decimal Add Modulo */ \
V(bcdadd, BCDADD, 0xF0000400) \
@@ -2586,6 +2599,7 @@ using Instr = uint32_t;
PPC_VX_OPCODE_A_FORM_LIST(V) \
PPC_VX_OPCODE_B_FORM_LIST(V) \
PPC_VX_OPCODE_C_FORM_LIST(V) \
+ PPC_VX_OPCODE_D_FORM_LIST(V) \
PPC_VX_OPCODE_UNUSED_LIST(V)
#define PPC_XS_OPCODE_LIST(V) \
@@ -2919,9 +2933,19 @@ class Instruction {
PPC_VA_OPCODE_LIST(OPCODE_CASES)
return static_cast<Opcode>(opcode);
}
+ // Some VX opcodes have integers hard coded in the middle, handle those
+ // first.
+ opcode = extcode | BitField(20, 16) | BitField(10, 0);
+ switch (opcode) {
+ PPC_VX_OPCODE_D_FORM_LIST(OPCODE_CASES)
+ return static_cast<Opcode>(opcode);
+ }
opcode = extcode | BitField(10, 0);
switch (opcode) {
- PPC_VX_OPCODE_LIST(OPCODE_CASES)
+ PPC_VX_OPCODE_A_FORM_LIST(OPCODE_CASES)
+ PPC_VX_OPCODE_B_FORM_LIST(OPCODE_CASES)
+ PPC_VX_OPCODE_C_FORM_LIST(OPCODE_CASES)
+ PPC_VX_OPCODE_UNUSED_LIST(OPCODE_CASES)
PPC_X_OPCODE_EH_S_FORM_LIST(OPCODE_CASES)
return static_cast<Opcode>(opcode);
}
@@ -2935,9 +2959,17 @@ class Instruction {
PPC_XFX_OPCODE_LIST(OPCODE_CASES)
return static_cast<Opcode>(opcode);
}
+ // Some XX2 opcodes have integers hard coded in the middle, handle those
+ // first.
+ opcode = extcode | BitField(20, 16) | BitField(10, 2);
+ switch (opcode) {
+ PPC_XX2_OPCODE_B_FORM_LIST(OPCODE_CASES)
+ return static_cast<Opcode>(opcode);
+ }
opcode = extcode | BitField(10, 2);
switch (opcode) {
- PPC_XX2_OPCODE_LIST(OPCODE_CASES)
+ PPC_XX2_OPCODE_A_FORM_LIST(OPCODE_CASES)
+ PPC_XX2_OPCODE_UNUSED_LIST(OPCODE_CASES)
return static_cast<Opcode>(opcode);
}
opcode = extcode | BitField(10, 1);
diff --git a/deps/v8/src/codegen/ppc/interface-descriptors-ppc-inl.h b/deps/v8/src/codegen/ppc/interface-descriptors-ppc-inl.h
new file mode 100644
index 0000000000..69529a3ce6
--- /dev/null
+++ b/deps/v8/src/codegen/ppc/interface-descriptors-ppc-inl.h
@@ -0,0 +1,256 @@
+// Copyright 2021 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_CODEGEN_PPC_INTERFACE_DESCRIPTORS_PPC_INL_H_
+#define V8_CODEGEN_PPC_INTERFACE_DESCRIPTORS_PPC_INL_H_
+
+#if V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
+
+#include "src/codegen/interface-descriptors.h"
+#include "src/execution/frames.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(r3, r4, r5, r6, r7);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(r3, r4, r5, r6, r7, kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(r3, r4, r5, r6, cp);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(r3, r4, r5, r6, r7, kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return r4; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return r5; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return r3; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return r6; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return r7;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return r4; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return r5; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return r3; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return r7; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() { return r6; }
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return r8; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return r3; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return r6; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return r3; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return r6; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ // TODO(v8:11421): Implement on this platform.
+ return r6;
+}
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() {
+ // TODO(v8:11421): Implement on this platform.
+ return r7;
+}
+
+// static
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return r3; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(r6); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // r3 : number of arguments
+ // r4 : the target to call
+ return RegisterArray(r4, r3);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // r3 : number of arguments (on the stack, not including receiver)
+ // r4 : the target to call
+ // r7 : arguments list length (untagged)
+ // r5 : arguments list (FixedArray)
+ return RegisterArray(r4, r3, r7, r5);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // r3 : number of arguments
+ // r5 : start index (to support rest parameters)
+ // r4 : the target to call
+ return RegisterArray(r4, r3, r5);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // r4 : function template info
+ // r5 : number of arguments (on the stack, not including receiver)
+ return RegisterArray(r4, r5);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // r3 : number of arguments (on the stack, not including receiver)
+ // r4 : the target to call
+ // r5 : the object to spread
+ return RegisterArray(r4, r3, r5);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // r4 : the target to call
+ // r5 : the arguments list
+ return RegisterArray(r4, r5);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // r3 : number of arguments (on the stack, not including receiver)
+ // r4 : the target to call
+ // r6 : the new target
+ // r7 : arguments list length (untagged)
+ // r5 : arguments list (FixedArray)
+ return RegisterArray(r4, r6, r3, r7, r5);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // r3 : number of arguments
+ // r6 : the new target
+ // r5 : start index (to support rest parameters)
+ // r4 : the target to call
+ return RegisterArray(r4, r6, r3, r5);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // r3 : number of arguments (on the stack, not including receiver)
+ // r4 : the target to call
+ // r6 : the new target
+ // r5 : the object to spread
+ return RegisterArray(r4, r6, r3, r5);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // r4 : the target to call
+ // r6 : the new target
+ // r5 : the arguments list
+ return RegisterArray(r4, r6, r5);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // r3 : number of arguments
+ // r4 : the target to call
+ // r6 : the new target
+ // r5 : allocation site or undefined
+ return RegisterArray(r4, r6, r3, r5);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(r4); }
+
+// static
+constexpr auto CompareDescriptor::registers() { return RegisterArray(r4, r3); }
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ // TODO(v8:11421): Implement on this platform.
+ return DefaultRegisterArray();
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() { return RegisterArray(r4, r3); }
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ // TODO(v8:11421): Implement on this platform.
+ return DefaultRegisterArray();
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ return RegisterArray(r4, // kApiFunctionAddress
+ r5, // kArgc
+ r6, // kCallData
+ r3); // kHolder
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ return RegisterArray(r3, // argument count (not including receiver)
+ r5, // address of first argument
+ r4); // the target callable to be call
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ return RegisterArray(
+ r3, // argument count (not including receiver)
+ r7, // address of the first argument
+ r4, // constructor to call
+ r6, // new target
+ r5); // allocation site feedback if available, undefined otherwise
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ return RegisterArray(r3, // the value to pass to the generator
+ r4); // the JSGeneratorObject to resume
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray(r3, r4);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
+
+#endif // V8_CODEGEN_PPC_INTERFACE_DESCRIPTORS_PPC_INL_H_
diff --git a/deps/v8/src/codegen/ppc/interface-descriptors-ppc.cc b/deps/v8/src/codegen/ppc/interface-descriptors-ppc.cc
deleted file mode 100644
index ed304e80fc..0000000000
--- a/deps/v8/src/codegen/ppc/interface-descriptors-ppc.cc
+++ /dev/null
@@ -1,306 +0,0 @@
-// Copyright 2014 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.
-
-#if V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
-
-#include "src/codegen/interface-descriptors.h"
-
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return cp; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- const Register default_stub_registers[] = {r3, r4, r5, r6, r7};
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {r3, r4, r5, r6, r7};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {r3, r4, r5, r6, cp};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {r3, r4, r5, r6, r7};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return r4; }
-const Register LoadDescriptor::NameRegister() { return r5; }
-const Register LoadDescriptor::SlotRegister() { return r3; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return r6; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return r7;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return r4; }
-const Register StoreDescriptor::NameRegister() { return r5; }
-const Register StoreDescriptor::ValueRegister() { return r3; }
-const Register StoreDescriptor::SlotRegister() { return r7; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return r6; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return r7; }
-const Register StoreTransitionDescriptor::VectorRegister() { return r6; }
-const Register StoreTransitionDescriptor::MapRegister() { return r8; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return r3; }
-const Register ApiGetterDescriptor::CallbackRegister() { return r6; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return r3; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return r6; }
-
-const Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
- // TODO(v8:11421): Implement on this platform.
- UNREACHABLE();
-}
-const Register BaselineLeaveFrameDescriptor::WeightRegister() {
- // TODO(v8:11421): Implement on this platform.
- UNREACHABLE();
-}
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return r3; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r6};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : number of arguments
- // r4 : the target to call
- Register registers[] = {r4, r3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : number of arguments (on the stack, not including receiver)
- // r4 : the target to call
- // r7 : arguments list length (untagged)
- // r5 : arguments list (FixedArray)
- Register registers[] = {r4, r3, r7, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : number of arguments
- // r5 : start index (to support rest parameters)
- // r4 : the target to call
- Register registers[] = {r4, r3, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r4 : function template info
- // r5 : number of arguments (on the stack, not including receiver)
- Register registers[] = {r4, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : number of arguments (on the stack, not including receiver)
- // r4 : the target to call
- // r5 : the object to spread
- Register registers[] = {r4, r3, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r4 : the target to call
- // r5 : the arguments list
- Register registers[] = {r4, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : number of arguments (on the stack, not including receiver)
- // r4 : the target to call
- // r6 : the new target
- // r7 : arguments list length (untagged)
- // r5 : arguments list (FixedArray)
- Register registers[] = {r4, r6, r3, r7, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : number of arguments
- // r6 : the new target
- // r5 : start index (to support rest parameters)
- // r4 : the target to call
- Register registers[] = {r4, r6, r3, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : number of arguments (on the stack, not including receiver)
- // r4 : the target to call
- // r6 : the new target
- // r5 : the object to spread
- Register registers[] = {r4, r6, r3, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r4 : the target to call
- // r6 : the new target
- // r5 : the arguments list
- Register registers[] = {r4, r6, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : number of arguments
- // r4 : the target to call
- // r6 : the new target
- // r5 : allocation site or undefined
- Register registers[] = {r4, r6, r3, r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r4, r3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r4, r3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r4, // kApiFunctionAddress
- r5, // kArgc
- r6, // kCallData
- r3, // kHolder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r3, // argument count (not including receiver)
- r5, // address of first argument
- r4 // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r3, // argument count (not including receiver)
- r7, // address of the first argument
- r4, // constructor to call
- r6, // new target
- r5, // allocation site feedback if available, undefined otherwise
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r3, // the value to pass to the generator
- r4 // the JSGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r4, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r3, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
diff --git a/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc b/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc
index 658a41f381..e9bce8411f 100644
--- a/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc
+++ b/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc
@@ -12,6 +12,7 @@
#include "src/codegen/callable.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/external-reference-table.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
#include "src/codegen/register-configuration.h"
#include "src/debug/debug.h"
@@ -55,7 +56,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
RegList list = kJSCallerSaved & ~exclusions;
bytes += NumRegs(list) * kSystemPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
bytes += kNumCallerSavedDoubles * kDoubleSize;
}
@@ -80,7 +81,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
MultiPush(list);
bytes += NumRegs(list) * kSystemPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPushDoubles(kCallerSavedDoubles);
bytes += kNumCallerSavedDoubles * kDoubleSize;
}
@@ -91,7 +92,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
Register exclusion2, Register exclusion3) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPopDoubles(kCallerSavedDoubles);
bytes += kNumCallerSavedDoubles * kDoubleSize;
}
@@ -133,7 +134,7 @@ void TurboAssembler::LoadFromConstantsTable(Register destination,
}
void TurboAssembler::LoadRootRelative(Register destination, int32_t offset) {
- LoadP(destination, MemOperand(kRootRegister, offset), r0);
+ LoadU64(destination, MemOperand(kRootRegister, offset), r0);
}
void TurboAssembler::LoadRootRegisterOffset(Register destination,
@@ -184,7 +185,7 @@ void TurboAssembler::Jump(Handle<Code> code, RelocInfo::Mode rmode,
Register scratch = ip;
int offset = code->builtin_index() * kSystemPointerSize +
IsolateData::builtin_entry_table_offset();
- LoadP(scratch, MemOperand(kRootRegister, offset), r0);
+ LoadU64(scratch, MemOperand(kRootRegister, offset), r0);
if (cond != al) b(NegateCondition(cond), &skip, cr);
Jump(scratch);
bind(&skip);
@@ -214,9 +215,9 @@ void TurboAssembler::Jump(const ExternalReference& reference) {
if (ABI_USES_FUNCTION_DESCRIPTORS) {
// AIX uses a function descriptor. When calling C code be
// aware of this descriptor and pick up values from it.
- LoadP(ToRegister(ABI_TOC_REGISTER),
- MemOperand(scratch, kSystemPointerSize));
- LoadP(scratch, MemOperand(scratch, 0));
+ LoadU64(ToRegister(ABI_TOC_REGISTER),
+ MemOperand(scratch, kSystemPointerSize));
+ LoadU64(scratch, MemOperand(scratch, 0));
}
Jump(scratch);
}
@@ -272,7 +273,7 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
Label skip;
int offset = code->builtin_index() * kSystemPointerSize +
IsolateData::builtin_entry_table_offset();
- LoadP(ip, MemOperand(kRootRegister, offset));
+ LoadU64(ip, MemOperand(kRootRegister, offset));
if (cond != al) b(NegateCondition(cond), &skip);
Call(ip);
bind(&skip);
@@ -411,7 +412,7 @@ void TurboAssembler::MultiPop(RegList regs, Register location) {
for (int16_t i = 0; i < Register::kNumRegisters; i++) {
if ((regs & (1 << i)) != 0) {
- LoadP(ToRegister(i), MemOperand(location, stack_offset));
+ LoadU64(ToRegister(i), MemOperand(location, stack_offset));
stack_offset += kSystemPointerSize;
}
}
@@ -442,7 +443,7 @@ void TurboAssembler::MultiPushV128(RegList dregs, Register location) {
Simd128Register dreg = Simd128Register::from_code(i);
stack_offset -= kSimd128Size;
li(ip, Operand(stack_offset));
- StoreSimd128(dreg, MemOperand(location, ip), r0, kScratchSimd128Reg);
+ StoreSimd128(dreg, MemOperand(location, ip));
}
}
}
@@ -467,7 +468,7 @@ void TurboAssembler::MultiPopV128(RegList dregs, Register location) {
if ((dregs & (1 << i)) != 0) {
Simd128Register dreg = Simd128Register::from_code(i);
li(ip, Operand(stack_offset));
- LoadSimd128(dreg, MemOperand(location, ip), r0, kScratchSimd128Reg);
+ LoadSimd128(dreg, MemOperand(location, ip));
stack_offset += kSimd128Size;
}
}
@@ -477,8 +478,8 @@ void TurboAssembler::MultiPopV128(RegList dregs, Register location) {
void TurboAssembler::LoadRoot(Register destination, RootIndex index,
Condition cond) {
DCHECK(cond == al);
- LoadP(destination,
- MemOperand(kRootRegister, RootRegisterOffsetForRootIndex(index)), r0);
+ LoadU64(destination,
+ MemOperand(kRootRegister, RootRegisterOffsetForRootIndex(index)), r0);
}
void TurboAssembler::LoadTaggedPointerField(const Register& destination,
@@ -487,7 +488,7 @@ void TurboAssembler::LoadTaggedPointerField(const Register& destination,
if (COMPRESS_POINTERS_BOOL) {
DecompressTaggedPointer(destination, field_operand);
} else {
- LoadP(destination, field_operand, scratch);
+ LoadU64(destination, field_operand, scratch);
}
}
@@ -497,7 +498,7 @@ void TurboAssembler::LoadAnyTaggedField(const Register& destination,
if (COMPRESS_POINTERS_BOOL) {
DecompressAnyTagged(destination, field_operand);
} else {
- LoadP(destination, field_operand, scratch);
+ LoadU64(destination, field_operand, scratch);
}
}
@@ -505,7 +506,7 @@ void TurboAssembler::SmiUntag(Register dst, const MemOperand& src, RCBit rc) {
if (SmiValuesAre31Bits()) {
lwz(dst, src);
} else {
- LoadP(dst, src);
+ LoadU64(dst, src);
}
SmiUntag(dst, rc);
@@ -550,7 +551,7 @@ void TurboAssembler::DecompressTaggedSigned(Register destination,
void TurboAssembler::DecompressTaggedSigned(Register destination,
MemOperand field_operand) {
RecordComment("[ DecompressTaggedSigned");
- LoadWord(destination, field_operand, r0);
+ LoadU32(destination, field_operand, r0);
RecordComment("]");
}
@@ -565,7 +566,7 @@ void TurboAssembler::DecompressTaggedPointer(Register destination,
void TurboAssembler::DecompressTaggedPointer(Register destination,
MemOperand field_operand) {
RecordComment("[ DecompressTaggedPointer");
- LoadWord(destination, field_operand, r0);
+ LoadU32(destination, field_operand, r0);
add(destination, destination, kRootRegister);
RecordComment("]");
}
@@ -573,7 +574,7 @@ void TurboAssembler::DecompressTaggedPointer(Register destination,
void TurboAssembler::DecompressAnyTagged(Register destination,
MemOperand field_operand) {
RecordComment("[ DecompressAnyTagged");
- LoadWord(destination, field_operand, r0);
+ LoadU32(destination, field_operand, r0);
add(destination, destination, kRootRegister);
RecordComment("]");
}
@@ -597,7 +598,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -606,7 +607,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
DCHECK(IsAligned(offset, kTaggedSize));
Add(dst, object, offset - kHeapObjectTag, r0);
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label ok;
andi(r0, dst, Operand(kTaggedSize - 1));
beq(&ok, cr0);
@@ -615,13 +616,13 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, dst, value, lr_status, save_fp, remembered_set_action,
- OMIT_SMI_CHECK);
+ SmiCheck::kOmit);
bind(&done);
// Clobber clobbered input registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
mov(value, Operand(bit_cast<intptr_t>(kZapValue + 4)));
mov(dst, Operand(bit_cast<intptr_t>(kZapValue + 8)));
}
@@ -752,13 +753,13 @@ void MacroAssembler::RecordWrite(Register object, Register address,
RememberedSetAction remembered_set_action,
SmiCheck smi_check) {
DCHECK(object != value);
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
LoadTaggedPointerField(r0, MemOperand(address));
cmp(r0, value);
Check(eq, AbortReason::kWrongAddressOrValuePassedToRecordWrite);
}
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
@@ -768,7 +769,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// catch stores of smis and stores into the young generation.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -794,7 +795,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// Clobber clobbered registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
mov(address, Operand(bit_cast<intptr_t>(kZapValue + 12)));
mov(value, Operand(bit_cast<intptr_t>(kZapValue + 16)));
}
@@ -849,12 +850,12 @@ void TurboAssembler::PushStandardFrame(Register function_reg) {
void TurboAssembler::RestoreFrameStateForTailCall() {
if (FLAG_enable_embedded_constant_pool) {
- LoadP(kConstantPoolRegister,
- MemOperand(fp, StandardFrameConstants::kConstantPoolOffset));
+ LoadU64(kConstantPoolRegister,
+ MemOperand(fp, StandardFrameConstants::kConstantPoolOffset));
set_constant_pool_available(false);
}
- LoadP(r0, MemOperand(fp, StandardFrameConstants::kCallerPCOffset));
- LoadP(fp, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
+ LoadU64(r0, MemOperand(fp, StandardFrameConstants::kCallerPCOffset));
+ LoadU64(fp, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
mtlr(r0);
}
@@ -1174,11 +1175,11 @@ int TurboAssembler::LeaveFrame(StackFrame::Type type, int stack_adjustment) {
// Drop the execution stack down to the frame pointer and restore
// the caller's state.
int frame_ends;
- LoadP(r0, MemOperand(fp, StandardFrameConstants::kCallerPCOffset));
- LoadP(ip, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
+ LoadU64(r0, MemOperand(fp, StandardFrameConstants::kCallerPCOffset));
+ LoadU64(ip, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
if (FLAG_enable_embedded_constant_pool) {
- LoadP(kConstantPoolRegister,
- MemOperand(fp, StandardFrameConstants::kConstantPoolOffset));
+ LoadU64(kConstantPoolRegister,
+ MemOperand(fp, StandardFrameConstants::kConstantPoolOffset));
}
mtlr(r0);
frame_ends = pc_offset();
@@ -1221,7 +1222,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
// Reserve room for saved entry sp.
subi(sp, fp, Operand(ExitFrameConstants::kFixedFrameSizeFromFp));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
li(r8, Operand::Zero());
StoreP(r8, MemOperand(fp, ExitFrameConstants::kSPOffset));
}
@@ -1305,7 +1306,7 @@ void MacroAssembler::LeaveExitFrame(bool save_doubles, Register argument_count,
// Restore current context from top and clear it in debug mode.
Move(ip,
ExternalReference::Create(IsolateAddressId::kContextAddress, isolate()));
- LoadP(cp, MemOperand(ip));
+ LoadU64(cp, MemOperand(ip));
#ifdef DEBUG
mov(r6, Operand(Context::kInvalidContext));
@@ -1393,7 +1394,7 @@ void MacroAssembler::LoadStackLimit(Register destination, StackLimitKind kind) {
intptr_t offset =
TurboAssembler::RootRegisterOffsetForExternalReference(isolate, limit);
CHECK(is_int32(offset));
- LoadP(destination, MemOperand(kRootRegister, offset), r0);
+ LoadU64(destination, MemOperand(kRootRegister, offset), r0);
}
void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch,
@@ -1413,7 +1414,7 @@ void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch,
void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count,
- Label* done, InvokeFlag flag) {
+ Label* done, InvokeType type) {
Label regular_invoke;
// r3: actual arguments count
@@ -1528,9 +1529,9 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target,
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, r4);
DCHECK_IMPLIES(new_target.is_valid(), new_target == r6);
@@ -1544,18 +1545,20 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// We call indirectly through the code field in the function to
// allow recompilation to take effect without changing any of the
// call sites.
Register code = kJavaScriptCallCodeStartRegister;
LoadTaggedPointerField(code,
FieldMemOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- CallCodeObject(code);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- JumpCodeObject(code);
+ switch (type) {
+ case InvokeType::kCall:
+ CallCodeObject(code);
+ break;
+ case InvokeType::kJump:
+ JumpCodeObject(code);
+ break;
}
// Continue here if InvokePrologue does handle the invocation due to
@@ -1565,9 +1568,9 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
void MacroAssembler::InvokeFunctionWithNewTarget(
Register fun, Register new_target, Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in r4.
DCHECK_EQ(fun, r4);
@@ -1583,15 +1586,15 @@ void MacroAssembler::InvokeFunctionWithNewTarget(
temp_reg, SharedFunctionInfo::kFormalParameterCountOffset));
InvokeFunctionCode(fun, new_target, expected_reg, actual_parameter_count,
- flag);
+ type);
}
void MacroAssembler::InvokeFunction(Register function,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in r4.
DCHECK_EQ(function, r4);
@@ -1600,18 +1603,7 @@ void MacroAssembler::InvokeFunction(Register function,
LoadTaggedPointerField(cp, FieldMemOperand(r4, JSFunction::kContextOffset));
InvokeFunctionCode(r4, no_reg, expected_parameter_count,
- actual_parameter_count, flag);
-}
-
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- ExternalReference restart_fp =
- ExternalReference::debug_restart_fp_address(isolate());
- Move(r4, restart_fp);
- LoadP(r4, MemOperand(r4));
- cmpi(r4, Operand::Zero());
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
- ne);
+ actual_parameter_count, type);
}
void MacroAssembler::PushStackHandler() {
@@ -1625,7 +1617,7 @@ void MacroAssembler::PushStackHandler() {
// Preserve r4-r8.
Move(r3,
ExternalReference::Create(IsolateAddressId::kHandlerAddress, isolate()));
- LoadP(r0, MemOperand(r3));
+ LoadU64(r0, MemOperand(r3));
push(r0);
// Set this new handler as the current one.
@@ -1806,7 +1798,7 @@ void TurboAssembler::TruncateDoubleToI(Isolate* isolate, Zone* zone,
Call(BUILTIN_CODE(isolate, DoubleToI), RelocInfo::CODE_TARGET);
}
- LoadP(result, MemOperand(sp));
+ LoadU64(result, MemOperand(sp));
addi(sp, sp, Operand(kDoubleSize));
pop(r0);
mtlr(r0);
@@ -1873,8 +1865,8 @@ void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) {
void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
bool builtin_exit_frame) {
Move(r4, builtin);
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET);
}
@@ -1921,7 +1913,7 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
}
void TurboAssembler::Assert(Condition cond, AbortReason reason, CRegister cr) {
- if (emit_debug_code()) Check(cond, reason, cr);
+ if (FLAG_debug_code) Check(cond, reason, cr);
}
void TurboAssembler::Check(Condition cond, AbortReason reason, CRegister cr) {
@@ -1935,11 +1927,11 @@ void TurboAssembler::Check(Condition cond, AbortReason reason, CRegister cr) {
void TurboAssembler::Abort(AbortReason reason) {
Label abort_start;
bind(&abort_start);
-#ifdef DEBUG
- const char* msg = GetAbortReason(reason);
- RecordComment("Abort message: ");
- RecordComment(msg);
-#endif
+ if (FLAG_code_comments) {
+ const char* msg = GetAbortReason(reason);
+ RecordComment("Abort message: ");
+ RecordComment(msg);
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
@@ -1984,7 +1976,7 @@ void MacroAssembler::LoadNativeContextSlot(Register dst, int index) {
}
void MacroAssembler::AssertNotSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object, r0);
Check(ne, AbortReason::kOperandIsASmi, cr0);
@@ -1992,7 +1984,7 @@ void MacroAssembler::AssertNotSmi(Register object) {
}
void MacroAssembler::AssertSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object, r0);
Check(eq, AbortReason::kOperandIsNotASmi, cr0);
@@ -2000,7 +1992,7 @@ void MacroAssembler::AssertSmi(Register object) {
}
void MacroAssembler::AssertConstructor(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object, r0);
Check(ne, AbortReason::kOperandIsASmiAndNotAConstructor, cr0);
@@ -2014,7 +2006,7 @@ void MacroAssembler::AssertConstructor(Register object) {
}
void MacroAssembler::AssertFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object, r0);
Check(ne, AbortReason::kOperandIsASmiAndNotAFunction, cr0);
@@ -2028,7 +2020,7 @@ void MacroAssembler::AssertFunction(Register object) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object, r0);
Check(ne, AbortReason::kOperandIsASmiAndNotABoundFunction, cr0);
@@ -2040,7 +2032,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
TestIfSmi(object, r0);
Check(ne, AbortReason::kOperandIsASmiAndNotAGeneratorObject, cr0);
@@ -2070,7 +2062,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done_checking;
AssertNotSmi(object);
CompareRoot(object, RootIndex::kUndefinedValue);
@@ -2217,9 +2209,9 @@ void TurboAssembler::CallCFunctionHelper(Register function,
if (ABI_USES_FUNCTION_DESCRIPTORS && has_function_descriptor) {
// AIX/PPC64BE Linux uses a function descriptor. When calling C code be
// aware of this descriptor and pick up values from it
- LoadP(ToRegister(ABI_TOC_REGISTER),
- MemOperand(function, kSystemPointerSize));
- LoadP(ip, MemOperand(function, 0));
+ LoadU64(ToRegister(ABI_TOC_REGISTER),
+ MemOperand(function, kSystemPointerSize));
+ LoadU64(ip, MemOperand(function, 0));
dest = ip;
} else if (ABI_CALL_VIA_IP) {
// pLinux and Simualtor, not AIX
@@ -2251,7 +2243,7 @@ void TurboAssembler::CallCFunctionHelper(Register function,
CalculateStackPassedWords(num_reg_arguments, num_double_arguments);
int stack_space = kNumRequiredStackFrameSlots + stack_passed_arguments;
if (ActivationFrameAlignment() > kSystemPointerSize) {
- LoadP(sp, MemOperand(sp, stack_space * kSystemPointerSize));
+ LoadU64(sp, MemOperand(sp, stack_space * kSystemPointerSize));
} else {
addi(sp, sp, Operand(stack_space * kSystemPointerSize));
}
@@ -2263,7 +2255,7 @@ void TurboAssembler::CheckPageFlag(
int mask, Condition cc, Label* condition_met) {
DCHECK(cc == ne || cc == eq);
ClearRightImm(scratch, object, Operand(kPageSizeBits));
- LoadP(scratch, MemOperand(scratch, BasicMemoryChunk::kFlagsOffset));
+ LoadU64(scratch, MemOperand(scratch, BasicMemoryChunk::kFlagsOffset));
mov(r0, Operand(mask));
and_(r0, scratch, r0, SetRC);
@@ -2703,8 +2695,8 @@ void MacroAssembler::AndSmiLiteral(Register dst, Register src, Smi smi,
}
// Load a "pointer" sized value from the memory location
-void TurboAssembler::LoadP(Register dst, const MemOperand& mem,
- Register scratch) {
+void TurboAssembler::LoadU64(Register dst, const MemOperand& mem,
+ Register scratch) {
DCHECK_EQ(mem.rb(), no_reg);
int offset = mem.offset();
int misaligned = (offset & 3);
@@ -2797,43 +2789,41 @@ void TurboAssembler::StorePU(Register src, const MemOperand& mem,
}
}
-void TurboAssembler::LoadWordArith(Register dst, const MemOperand& mem,
- Register scratch) {
+void TurboAssembler::LoadS32(Register dst, const MemOperand& mem,
+ Register scratch) {
int offset = mem.offset();
if (!is_int16(offset)) {
- DCHECK(scratch != no_reg);
+ CHECK(scratch != no_reg);
mov(scratch, Operand(offset));
lwax(dst, MemOperand(mem.ra(), scratch));
} else {
-#if V8_TARGET_ARCH_PPC64
int misaligned = (offset & 3);
if (misaligned) {
// adjust base to conform to offset alignment requirements
// Todo: enhance to use scratch if dst is unsuitable
- DCHECK(dst != r0);
+ CHECK(dst != r0);
addi(dst, mem.ra(), Operand((offset & 3) - 4));
lwa(dst, MemOperand(dst, (offset & ~3) + 4));
} else {
lwa(dst, mem);
}
-#else
- lwz(dst, mem);
-#endif
}
}
// Variable length depending on whether offset fits into immediate field
// MemOperand currently only supports d-form
-void TurboAssembler::LoadWord(Register dst, const MemOperand& mem,
- Register scratch) {
+void TurboAssembler::LoadU32(Register dst, const MemOperand& mem,
+ Register scratch) {
Register base = mem.ra();
int offset = mem.offset();
if (!is_int16(offset)) {
- LoadIntLiteral(scratch, offset);
+ CHECK(scratch != no_reg);
+ mov(scratch, Operand(offset));
lwzx(dst, MemOperand(base, scratch));
} else {
+ // lwz can handle offset misalign
lwz(dst, mem);
}
}
@@ -2992,22 +2982,8 @@ void TurboAssembler::LoadSingleU(DoubleRegister dst, const MemOperand& mem,
}
}
-void TurboAssembler::LoadSimd128(Simd128Register dst, const MemOperand& mem,
- Register ScratchReg,
- Simd128Register ScratchDoubleReg) {
- // lvx needs the stack to be 16 byte aligned.
- // We first use lxvd/stxvd to copy the content on an aligned address. lxvd
- // itself reverses the lanes so it cannot be used as is.
- lxvd(ScratchDoubleReg, mem);
- mr(ScratchReg, sp);
- ClearRightImm(
- sp, sp,
- Operand(base::bits::WhichPowerOfTwo(16))); // equivalent to &= -16
- addi(sp, sp, Operand(-16));
- stxvd(ScratchDoubleReg, MemOperand(r0, sp));
- // Load it with correct lane ordering.
- lvx(dst, MemOperand(r0, sp));
- mr(sp, ScratchReg);
+void TurboAssembler::LoadSimd128(Simd128Register dst, const MemOperand& mem) {
+ lxvx(dst, mem);
}
void TurboAssembler::StoreDouble(DoubleRegister src, const MemOperand& mem,
@@ -3062,21 +3038,8 @@ void TurboAssembler::StoreSingleU(DoubleRegister src, const MemOperand& mem,
}
}
-void TurboAssembler::StoreSimd128(Simd128Register src, const MemOperand& mem,
- Register ScratchReg,
- Simd128Register ScratchDoubleReg) {
- // stvx needs the stack to be 16 byte aligned.
- // We use lxvd/stxvd to store the content on an aligned address. stxvd
- // itself reverses the lanes so it cannot be used as is.
- mr(ScratchReg, sp);
- ClearRightImm(
- sp, sp,
- Operand(base::bits::WhichPowerOfTwo(16))); // equivalent to &= -16
- addi(sp, sp, Operand(-16));
- stvx(src, MemOperand(r0, sp));
- lxvd(ScratchDoubleReg, MemOperand(r0, sp));
- mr(sp, ScratchReg);
- stxvd(ScratchDoubleReg, mem);
+void TurboAssembler::StoreSimd128(Simd128Register src, const MemOperand& mem) {
+ stxvx(src, mem);
}
Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2, Register reg3,
@@ -3115,7 +3078,7 @@ void TurboAssembler::SwapP(Register src, MemOperand dst, Register scratch) {
DCHECK(!AreAliased(src, dst.rb(), scratch));
DCHECK(!AreAliased(src, scratch));
mr(scratch, src);
- LoadP(src, dst, r0);
+ LoadU64(src, dst, r0);
StoreP(scratch, dst, r0);
}
@@ -3137,14 +3100,14 @@ void TurboAssembler::SwapP(MemOperand src, MemOperand dst, Register scratch_0,
src = dst;
dst = temp;
}
- LoadP(scratch_1, dst, scratch_0);
- LoadP(scratch_0, src);
+ LoadU64(scratch_1, dst, scratch_0);
+ LoadU64(scratch_0, src);
StoreP(scratch_1, src);
StoreP(scratch_0, dst, scratch_1);
} else {
- LoadP(scratch_1, dst, scratch_0);
+ LoadU64(scratch_1, dst, scratch_0);
push(scratch_1);
- LoadP(scratch_0, src, scratch_1);
+ LoadU64(scratch_0, src, scratch_1);
StoreP(scratch_0, dst, scratch_1);
pop(scratch_1);
StoreP(scratch_1, src, scratch_0);
@@ -3218,13 +3181,13 @@ void TurboAssembler::SwapSimd128(Simd128Register src, MemOperand dst,
DCHECK(src != scratch);
// push v0, to be used as scratch
addi(sp, sp, Operand(-kSimd128Size));
- StoreSimd128(v0, MemOperand(r0, sp), r0, scratch);
+ StoreSimd128(v0, MemOperand(r0, sp));
mov(ip, Operand(dst.offset()));
- LoadSimd128(v0, MemOperand(dst.ra(), ip), r0, scratch);
- StoreSimd128(src, MemOperand(dst.ra(), ip), r0, scratch);
+ LoadSimd128(v0, MemOperand(dst.ra(), ip));
+ StoreSimd128(src, MemOperand(dst.ra(), ip));
vor(src, v0, v0);
// restore v0
- LoadSimd128(v0, MemOperand(r0, sp), ip, scratch);
+ LoadSimd128(v0, MemOperand(r0, sp));
addi(sp, sp, Operand(kSimd128Size));
}
@@ -3232,23 +3195,23 @@ void TurboAssembler::SwapSimd128(MemOperand src, MemOperand dst,
Simd128Register scratch) {
// push v0 and v1, to be used as scratch
addi(sp, sp, Operand(2 * -kSimd128Size));
- StoreSimd128(v0, MemOperand(r0, sp), ip, scratch);
+ StoreSimd128(v0, MemOperand(r0, sp));
li(ip, Operand(kSimd128Size));
- StoreSimd128(v1, MemOperand(ip, sp), r0, scratch);
+ StoreSimd128(v1, MemOperand(ip, sp));
mov(ip, Operand(src.offset()));
- LoadSimd128(v0, MemOperand(src.ra(), ip), r0, scratch);
+ LoadSimd128(v0, MemOperand(src.ra(), ip));
mov(ip, Operand(dst.offset()));
- LoadSimd128(v1, MemOperand(dst.ra(), ip), r0, scratch);
+ LoadSimd128(v1, MemOperand(dst.ra(), ip));
- StoreSimd128(v0, MemOperand(dst.ra(), ip), r0, scratch);
+ StoreSimd128(v0, MemOperand(dst.ra(), ip));
mov(ip, Operand(src.offset()));
- StoreSimd128(v1, MemOperand(src.ra(), ip), r0, scratch);
+ StoreSimd128(v1, MemOperand(src.ra(), ip));
// restore v0 and v1
- LoadSimd128(v0, MemOperand(r0, sp), ip, scratch);
+ LoadSimd128(v0, MemOperand(r0, sp));
li(ip, Operand(kSimd128Size));
- LoadSimd128(v1, MemOperand(ip, sp), r0, scratch);
+ LoadSimd128(v1, MemOperand(ip, sp));
addi(sp, sp, Operand(2 * kSimd128Size));
}
@@ -3313,7 +3276,7 @@ void TurboAssembler::LoadCodeObjectEntry(Register destination,
// Check whether the Code object is an off-heap trampoline. If so, call its
// (off-heap) entry point directly without going through the (on-heap)
// trampoline. Otherwise, just call the Code object as always.
- LoadWordArith(scratch, FieldMemOperand(code_object, Code::kFlagsOffset));
+ LoadS32(scratch, FieldMemOperand(code_object, Code::kFlagsOffset));
mov(r0, Operand(Code::IsOffHeapTrampoline::kMask));
and_(r0, scratch, r0, SetRC);
bne(&if_code_is_off_heap, cr0);
@@ -3326,13 +3289,12 @@ void TurboAssembler::LoadCodeObjectEntry(Register destination,
// An off-heap trampoline, the entry point is loaded from the builtin entry
// table.
bind(&if_code_is_off_heap);
- LoadWordArith(scratch,
- FieldMemOperand(code_object, Code::kBuiltinIndexOffset));
+ LoadS32(scratch, FieldMemOperand(code_object, Code::kBuiltinIndexOffset));
ShiftLeftImm(destination, scratch, Operand(kSystemPointerSizeLog2));
add(destination, destination, kRootRegister);
- LoadP(destination,
- MemOperand(destination, IsolateData::builtin_entry_table_offset()),
- r0);
+ LoadU64(destination,
+ MemOperand(destination, IsolateData::builtin_entry_table_offset()),
+ r0);
bind(&out);
} else {
@@ -3366,8 +3328,9 @@ void TurboAssembler::StoreReturnAddressAndCall(Register target) {
if (ABI_USES_FUNCTION_DESCRIPTORS) {
// AIX/PPC64BE Linux uses a function descriptor. When calling C code be
// aware of this descriptor and pick up values from it
- LoadP(ToRegister(ABI_TOC_REGISTER), MemOperand(target, kSystemPointerSize));
- LoadP(ip, MemOperand(target, 0));
+ LoadU64(ToRegister(ABI_TOC_REGISTER),
+ MemOperand(target, kSystemPointerSize));
+ LoadU64(ip, MemOperand(target, 0));
dest = ip;
} else if (ABI_CALL_VIA_IP && dest != ip) {
Move(ip, target);
@@ -3388,8 +3351,8 @@ void TurboAssembler::CallForDeoptimization(Builtins::Name target, int,
Label* exit, DeoptimizeKind kind,
Label* ret, Label*) {
BlockTrampolinePoolScope block_trampoline_pool(this);
- LoadP(ip, MemOperand(kRootRegister,
- IsolateData::builtin_entry_slot_offset(target)));
+ LoadU64(ip, MemOperand(kRootRegister,
+ IsolateData::builtin_entry_slot_offset(target)));
Call(ip);
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
(kind == DeoptimizeKind::kLazy)
diff --git a/deps/v8/src/codegen/ppc/macro-assembler-ppc.h b/deps/v8/src/codegen/ppc/macro-assembler-ppc.h
index 1d8f3a388d..f657f90f76 100644
--- a/deps/v8/src/codegen/ppc/macro-assembler-ppc.h
+++ b/deps/v8/src/codegen/ppc/macro-assembler-ppc.h
@@ -28,8 +28,6 @@ inline MemOperand FieldMemOperand(Register object, int offset) {
return MemOperand(object, offset - kHeapObjectTag);
}
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved };
Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2 = no_reg,
@@ -149,10 +147,9 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
}
// These exist to provide portability between 32 and 64bit
- void LoadP(Register dst, const MemOperand& mem, Register scratch = no_reg);
+ void LoadU64(Register dst, const MemOperand& mem, Register scratch = no_reg);
void LoadPU(Register dst, const MemOperand& mem, Register scratch = no_reg);
- void LoadWordArith(Register dst, const MemOperand& mem,
- Register scratch = no_reg);
+ void LoadS32(Register dst, const MemOperand& mem, Register scratch = no_reg);
void StoreP(Register src, const MemOperand& mem, Register scratch = no_reg);
void StorePU(Register src, const MemOperand& mem, Register scratch = no_reg);
@@ -161,8 +158,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void LoadFloat32(DoubleRegister dst, const MemOperand& mem,
Register scratch = no_reg);
void LoadDoubleLiteral(DoubleRegister result, Double value, Register scratch);
- void LoadSimd128(Simd128Register dst, const MemOperand& mem,
- Register ScratchReg, Simd128Register ScratchDoubleReg);
+ void LoadSimd128(Simd128Register dst, const MemOperand& mem);
// load a literal signed int value <value> to GPR <dst>
void LoadIntLiteral(Register dst, int value);
@@ -185,8 +181,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
Register scratch = no_reg);
void StoreSingleU(DoubleRegister src, const MemOperand& mem,
Register scratch = no_reg);
- void StoreSimd128(Simd128Register src, const MemOperand& mem,
- Register ScratchReg, Simd128Register ScratchDoubleReg);
+ void StoreSimd128(Simd128Register src, const MemOperand& mem);
void Cmpi(Register src1, const Operand& src2, Register scratch,
CRegister cr = cr7);
@@ -253,36 +248,36 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
// Pop two registers. Pops rightmost register first (from lower address).
void Pop(Register src1, Register src2) {
- LoadP(src2, MemOperand(sp, 0));
- LoadP(src1, MemOperand(sp, kSystemPointerSize));
+ LoadU64(src2, MemOperand(sp, 0));
+ LoadU64(src1, MemOperand(sp, kSystemPointerSize));
addi(sp, sp, Operand(2 * kSystemPointerSize));
}
// Pop three registers. Pops rightmost register first (from lower address).
void Pop(Register src1, Register src2, Register src3) {
- LoadP(src3, MemOperand(sp, 0));
- LoadP(src2, MemOperand(sp, kSystemPointerSize));
- LoadP(src1, MemOperand(sp, 2 * kSystemPointerSize));
+ LoadU64(src3, MemOperand(sp, 0));
+ LoadU64(src2, MemOperand(sp, kSystemPointerSize));
+ LoadU64(src1, MemOperand(sp, 2 * kSystemPointerSize));
addi(sp, sp, Operand(3 * kSystemPointerSize));
}
// Pop four registers. Pops rightmost register first (from lower address).
void Pop(Register src1, Register src2, Register src3, Register src4) {
- LoadP(src4, MemOperand(sp, 0));
- LoadP(src3, MemOperand(sp, kSystemPointerSize));
- LoadP(src2, MemOperand(sp, 2 * kSystemPointerSize));
- LoadP(src1, MemOperand(sp, 3 * kSystemPointerSize));
+ LoadU64(src4, MemOperand(sp, 0));
+ LoadU64(src3, MemOperand(sp, kSystemPointerSize));
+ LoadU64(src2, MemOperand(sp, 2 * kSystemPointerSize));
+ LoadU64(src1, MemOperand(sp, 3 * kSystemPointerSize));
addi(sp, sp, Operand(4 * kSystemPointerSize));
}
// Pop five registers. Pops rightmost register first (from lower address).
void Pop(Register src1, Register src2, Register src3, Register src4,
Register src5) {
- LoadP(src5, MemOperand(sp, 0));
- LoadP(src4, MemOperand(sp, kSystemPointerSize));
- LoadP(src3, MemOperand(sp, 2 * kSystemPointerSize));
- LoadP(src2, MemOperand(sp, 3 * kSystemPointerSize));
- LoadP(src1, MemOperand(sp, 4 * kSystemPointerSize));
+ LoadU64(src5, MemOperand(sp, 0));
+ LoadU64(src4, MemOperand(sp, kSystemPointerSize));
+ LoadU64(src3, MemOperand(sp, 2 * kSystemPointerSize));
+ LoadU64(src2, MemOperand(sp, 3 * kSystemPointerSize));
+ LoadU64(src1, MemOperand(sp, 4 * kSystemPointerSize));
addi(sp, sp, Operand(5 * kSystemPointerSize));
}
@@ -716,7 +711,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void DecompressAnyTagged(Register destination, MemOperand field_operand);
void DecompressAnyTagged(Register destination, Register source);
- void LoadWord(Register dst, const MemOperand& mem, Register scratch);
+ void LoadU32(Register dst, const MemOperand& mem, Register scratch);
void StoreWord(Register src, const MemOperand& mem, Register scratch);
private:
@@ -743,7 +738,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// TODO(victorgomes): Remove this function once we stick with the reversed
// arguments order.
void LoadReceiver(Register dest, Register argc) {
- LoadP(dest, MemOperand(sp, 0));
+ LoadU64(dest, MemOperand(sp, 0));
}
void StoreReceiver(Register rec, Register argc, Register scratch) {
@@ -761,8 +756,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, Register scratch,
LinkRegisterStatus lr_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For a given |object| notify the garbage collector that the slot |address|
// has been written. |value| is the object being stored. The value and
@@ -770,8 +765,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWrite(
Register object, Register address, Register value,
LinkRegisterStatus lr_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// Enter exit frame.
// stack_space - extra stack space, used for parameters before call to C.
@@ -837,7 +832,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function code by either calling or jumping.
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// On function call, call into the debugger if necessary.
void CheckDebugHook(Register fun, Register new_target,
@@ -848,12 +843,9 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// current context to the context in the function before invoking.
void InvokeFunctionWithNewTarget(Register function, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag);
+ InvokeType type);
void InvokeFunction(Register function, Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
-
- // Frame restart support
- void MaybeDropFrames();
+ Register actual_parameter_count, InvokeType type);
// Exception handling
@@ -926,22 +918,22 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Call a runtime routine.
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
void CallRuntimeSaveDoubles(Runtime::FunctionId fid) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
- CallRuntime(function, function->nargs, kSaveFPRegs);
+ CallRuntime(function, function->nargs, SaveFPRegsMode::kSave);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
}
@@ -1053,7 +1045,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Helper functions for generating invokes.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
DISALLOW_IMPLICIT_CONSTRUCTORS(MacroAssembler);
};
diff --git a/deps/v8/src/codegen/register-arch.h b/deps/v8/src/codegen/register-arch.h
index 3936ee80cc..eb4cdb8789 100644
--- a/deps/v8/src/codegen/register-arch.h
+++ b/deps/v8/src/codegen/register-arch.h
@@ -41,6 +41,27 @@ constexpr bool ShouldPadArguments(int argument_count) {
return ArgumentPaddingSlots(argument_count) != 0;
}
+#ifdef DEBUG
+struct CountIfValidRegisterFunctor {
+ template <typename RegType>
+ constexpr int operator()(int count, RegType reg) const {
+ return count + (reg.is_valid() ? 1 : 0);
+ }
+};
+
+template <typename RegType, typename... RegTypes,
+ // All arguments must be either Register or DoubleRegister.
+ typename = typename std::enable_if<
+ base::is_same<Register, RegType, RegTypes...>::value ||
+ base::is_same<DoubleRegister, RegType, RegTypes...>::value>::type>
+inline constexpr bool AreAliased(RegType first_reg, RegTypes... regs) {
+ int num_different_regs = NumRegs(RegType::ListOf(first_reg, regs...));
+ int num_given_regs =
+ base::fold(CountIfValidRegisterFunctor{}, 0, first_reg, regs...);
+ return num_different_regs < num_given_regs;
+}
+#endif
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/codegen/register.h b/deps/v8/src/codegen/register.h
index 57f3a1c62a..49f67ceb1d 100644
--- a/deps/v8/src/codegen/register.h
+++ b/deps/v8/src/codegen/register.h
@@ -33,7 +33,7 @@ class RegisterBase {
static constexpr SubType no_reg() { return SubType{kCode_no_reg}; }
static constexpr SubType from_code(int code) {
- CONSTEXPR_DCHECK(base::IsInRange(code, 0, kNumRegisters - 1));
+ DCHECK(base::IsInRange(code, 0, kNumRegisters - 1));
return SubType{code};
}
@@ -45,7 +45,7 @@ class RegisterBase {
constexpr bool is_valid() const { return reg_code_ != kCode_no_reg; }
constexpr int code() const {
- CONSTEXPR_DCHECK(is_valid());
+ DCHECK(is_valid());
return reg_code_;
}
diff --git a/deps/v8/src/codegen/reloc-info.cc b/deps/v8/src/codegen/reloc-info.cc
index 753b34bdbf..4781e7609b 100644
--- a/deps/v8/src/codegen/reloc-info.cc
+++ b/deps/v8/src/codegen/reloc-info.cc
@@ -4,6 +4,7 @@
#include "src/codegen/reloc-info.h"
+#include "src/base/vlq.h"
#include "src/codegen/assembler-inl.h"
#include "src/codegen/code-reference.h"
#include "src/codegen/external-reference-encoder.h"
@@ -56,11 +57,10 @@ const char* const RelocInfo::kFillerCommentString = "DEOPTIMIZATION PADDING";
// the following record in the usual way. The long pc jump record has variable
// length:
// pc-jump: [PC_JUMP] 11
-// [7 bits data] 0
+// 1 [7 bits data]
// ...
-// [7 bits data] 1
-// (Bits 6..31 of pc delta, with leading zeroes
-// dropped, and last non-zero chunk tagged with 1.)
+// 0 [7 bits data]
+// (Bits 6..31 of pc delta, encoded with VLQ.)
const int kTagBits = 2;
const int kTagMask = (1 << kTagBits) - 1;
@@ -75,12 +75,6 @@ const int kSmallPCDeltaBits = kBitsPerByte - kTagBits;
const int kSmallPCDeltaMask = (1 << kSmallPCDeltaBits) - 1;
const int RelocInfo::kMaxSmallPCDelta = kSmallPCDeltaMask;
-const int kChunkBits = 7;
-const int kChunkMask = (1 << kChunkBits) - 1;
-const int kLastChunkTagBits = 1;
-const int kLastChunkTagMask = 1;
-const int kLastChunkTag = 1;
-
uint32_t RelocInfoWriter::WriteLongPCJump(uint32_t pc_delta) {
// Return if the pc_delta can fit in kSmallPCDeltaBits bits.
// Otherwise write a variable length PC jump for the bits that do
@@ -89,13 +83,12 @@ uint32_t RelocInfoWriter::WriteLongPCJump(uint32_t pc_delta) {
WriteMode(RelocInfo::PC_JUMP);
uint32_t pc_jump = pc_delta >> kSmallPCDeltaBits;
DCHECK_GT(pc_jump, 0);
- // Write kChunkBits size chunks of the pc_jump.
- for (; pc_jump > 0; pc_jump = pc_jump >> kChunkBits) {
- byte b = pc_jump & kChunkMask;
- *--pos_ = b << kLastChunkTagBits;
- }
- // Tag the last chunk so it can be identified.
- *pos_ = *pos_ | kLastChunkTag;
+ base::VLQEncodeUnsigned(
+ [this](byte byte) {
+ *--pos_ = byte;
+ return pos_;
+ },
+ pc_jump);
// Return the remaining kSmallPCDeltaBits of the pc_delta.
return pc_delta & kSmallPCDeltaMask;
}
@@ -205,14 +198,8 @@ void RelocIterator::AdvanceReadData() {
void RelocIterator::AdvanceReadLongPCJump() {
// Read the 32-kSmallPCDeltaBits most significant bits of the
- // pc jump in kChunkBits bit chunks and shift them into place.
- // Stop when the last chunk is encountered.
- uint32_t pc_jump = 0;
- for (int i = 0; i < kIntSize; i++) {
- byte pc_jump_part = *--pos_;
- pc_jump |= (pc_jump_part >> kLastChunkTagBits) << i * kChunkBits;
- if ((pc_jump_part & kLastChunkTagMask) == 1) break;
- }
+ // pc jump as a VLQ encoded integer.
+ uint32_t pc_jump = base::VLQDecodeUnsigned([this] { return *--pos_; });
// The least significant kSmallPCDeltaBits bits will be added
// later.
rinfo_.pc_ += pc_jump << kSmallPCDeltaBits;
@@ -450,7 +437,7 @@ const char* RelocInfo::RelocModeName(RelocInfo::Mode rmode) {
return "unknown relocation type";
}
-void RelocInfo::Print(Isolate* isolate, std::ostream& os) { // NOLINT
+void RelocInfo::Print(Isolate* isolate, std::ostream& os) {
os << reinterpret_cast<const void*>(pc_) << " " << RelocModeName(rmode_);
if (rmode_ == DEOPT_SCRIPT_OFFSET || rmode_ == DEOPT_INLINING_ID) {
os << " (" << data() << ")";
diff --git a/deps/v8/src/codegen/reloc-info.h b/deps/v8/src/codegen/reloc-info.h
index bef433e10b..e8b3c0b98b 100644
--- a/deps/v8/src/codegen/reloc-info.h
+++ b/deps/v8/src/codegen/reloc-info.h
@@ -328,8 +328,8 @@ class RelocInfo {
#ifdef ENABLE_DISASSEMBLER
// Printing
static const char* RelocModeName(Mode rmode);
- void Print(Isolate* isolate, std::ostream& os); // NOLINT
-#endif // ENABLE_DISASSEMBLER
+ void Print(Isolate* isolate, std::ostream& os);
+#endif // ENABLE_DISASSEMBLER
#ifdef VERIFY_HEAP
void Verify(Isolate* isolate);
#endif
diff --git a/deps/v8/src/codegen/riscv64/assembler-riscv64-inl.h b/deps/v8/src/codegen/riscv64/assembler-riscv64-inl.h
index 40bd56d15b..d301a00bf4 100644
--- a/deps/v8/src/codegen/riscv64/assembler-riscv64-inl.h
+++ b/deps/v8/src/codegen/riscv64/assembler-riscv64-inl.h
@@ -63,11 +63,15 @@ void RelocInfo::apply(intptr_t delta) {
if (IsInternalReference(rmode_) || IsInternalReferenceEncoded(rmode_)) {
// Absolute code pointer inside code object moves with the code object.
Assembler::RelocateInternalReference(rmode_, pc_, delta);
+ } else {
+ DCHECK(IsRelativeCodeTarget(rmode_));
+ Assembler::RelocateRelativeReference(rmode_, pc_, delta);
}
}
Address RelocInfo::target_address() {
- DCHECK(IsCodeTarget(rmode_) || IsRuntimeEntry(rmode_) || IsWasmCall(rmode_));
+ DCHECK(IsCodeTargetMode(rmode_) || IsRuntimeEntry(rmode_) ||
+ IsWasmCall(rmode_));
return Assembler::target_address_at(pc_, constant_pool_);
}
@@ -133,9 +137,13 @@ HeapObject RelocInfo::target_object_no_host(Isolate* isolate) {
}
Handle<HeapObject> RelocInfo::target_object_handle(Assembler* origin) {
- DCHECK(IsCodeTarget(rmode_) || IsFullEmbeddedObject(rmode_));
- return Handle<HeapObject>(reinterpret_cast<Address*>(
- Assembler::target_address_at(pc_, constant_pool_)));
+ if (IsCodeTarget(rmode_) || IsFullEmbeddedObject(rmode_)) {
+ return Handle<HeapObject>(reinterpret_cast<Address*>(
+ Assembler::target_address_at(pc_, constant_pool_)));
+ } else {
+ DCHECK(IsRelativeCodeTarget(rmode_));
+ return origin->relative_code_target_object_handle_at(pc_);
+ }
}
void RelocInfo::set_target_object(Heap* heap, HeapObject target,
@@ -163,11 +171,11 @@ void RelocInfo::set_target_external_reference(
}
Address RelocInfo::target_internal_reference() {
- if (rmode_ == INTERNAL_REFERENCE) {
+ if (IsInternalReference(rmode_)) {
return Memory<Address>(pc_);
} else {
// Encoded internal references are j/jal instructions.
- DCHECK(rmode_ == INTERNAL_REFERENCE_ENCODED);
+ DCHECK(IsInternalReferenceEncoded(rmode_));
DCHECK(Assembler::IsLui(Assembler::instr_at(pc_ + 0 * kInstrSize)));
Address address = Assembler::target_address_at(pc_);
return address;
@@ -175,10 +183,20 @@ Address RelocInfo::target_internal_reference() {
}
Address RelocInfo::target_internal_reference_address() {
- DCHECK(rmode_ == INTERNAL_REFERENCE || rmode_ == INTERNAL_REFERENCE_ENCODED);
+ DCHECK(IsInternalReference(rmode_) || IsInternalReferenceEncoded(rmode_));
return pc_;
}
+Handle<Code> Assembler::relative_code_target_object_handle_at(
+ Address pc) const {
+ Instr instr1 = Assembler::instr_at(pc);
+ Instr instr2 = Assembler::instr_at(pc + kInstrSize);
+ DCHECK(IsAuipc(instr1));
+ DCHECK(IsJalr(instr2));
+ int32_t code_target_index = BrachlongOffset(instr1, instr2);
+ return GetCodeTarget(code_target_index);
+}
+
Address RelocInfo::target_runtime_entry(Assembler* origin) {
DCHECK(IsRuntimeEntry(rmode_));
return target_address();
diff --git a/deps/v8/src/codegen/riscv64/assembler-riscv64.cc b/deps/v8/src/codegen/riscv64/assembler-riscv64.cc
index 914ea26f9f..35c56ccdf5 100644
--- a/deps/v8/src/codegen/riscv64/assembler-riscv64.cc
+++ b/deps/v8/src/codegen/riscv64/assembler-riscv64.cc
@@ -128,7 +128,8 @@ Register ToRegister(int num) {
const int RelocInfo::kApplyMask =
RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) |
- RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE_ENCODED);
+ RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE_ENCODED) |
+ RelocInfo::ModeMask(RelocInfo::RELATIVE_CODE_TARGET);
bool RelocInfo::IsCodedSpecially() {
// The deserializer needs to know whether a pointer is specially coded. Being
@@ -454,6 +455,16 @@ static inline Instr SetAuipcOffset(int32_t offset, Instr instr) {
return instr;
}
+static inline Instr SetJalrOffset(int32_t offset, Instr instr) {
+ DCHECK(Assembler::IsJalr(instr));
+ DCHECK(is_int12(offset));
+ instr &= ~kImm12Mask;
+ int32_t imm12 = offset << kImm12Shift;
+ DCHECK(Assembler::IsJalr(instr | (imm12 & kImm12Mask)));
+ DCHECK(Assembler::JalrOffset(instr | (imm12 & kImm12Mask)) == offset);
+ return instr | (imm12 & kImm12Mask);
+}
+
static inline Instr SetJalOffset(int32_t pos, int32_t target_pos, Instr instr) {
DCHECK(Assembler::IsJal(instr));
int32_t imm = target_pos - pos;
@@ -689,17 +700,36 @@ int Assembler::CJumpOffset(Instr instr) {
int Assembler::BrachlongOffset(Instr auipc, Instr instr_I) {
DCHECK(reinterpret_cast<Instruction*>(&instr_I)->InstructionType() ==
InstructionBase::kIType);
- const int kImm19_0Mask = ((1 << 20) - 1);
- int32_t imm_auipc = auipc & (kImm19_0Mask << 12);
- int32_t imm_12 = instr_I >> 20;
- int32_t offset = imm_12 + imm_auipc;
+ DCHECK(IsAuipc(auipc));
+ int32_t imm_auipc = AuipcOffset(auipc);
+ int32_t imm12 = (instr_I & kImm12Mask) >> 20;
+ int32_t offset = imm12 + imm_auipc;
return offset;
}
+int Assembler::PatchBranchlongOffset(Address pc, Instr instr_auipc,
+ Instr instr_jalr, int32_t offset) {
+ DCHECK(IsAuipc(instr_auipc));
+ DCHECK(IsJalr(instr_jalr));
+ int32_t Hi20 = (((int32_t)offset + 0x800) >> 12);
+ int32_t Lo12 = (int32_t)offset << 20 >> 20;
+ CHECK(is_int32(offset));
+ instr_at_put(pc, SetAuipcOffset(Hi20, instr_auipc));
+ instr_at_put(pc + 4, SetJalrOffset(Lo12, instr_jalr));
+ DCHECK(offset ==
+ BrachlongOffset(Assembler::instr_at(pc), Assembler::instr_at(pc + 4)));
+ return 2;
+}
+
int Assembler::LdOffset(Instr instr) {
DCHECK(IsLd(instr));
int32_t imm12 = (instr & kImm12Mask) >> 20;
- imm12 = imm12 << 12 >> 12;
+ return imm12;
+}
+
+int Assembler::JalrOffset(Instr instr) {
+ DCHECK(IsJalr(instr));
+ int32_t imm12 = (instr & kImm12Mask) >> 20;
return imm12;
}
@@ -717,7 +747,7 @@ bool Assembler::MustUseReg(RelocInfo::Mode rmode) {
}
void Assembler::disassembleInstr(Instr instr) {
- if (!FLAG_debug_riscv) return;
+ if (!FLAG_riscv_debug) return;
disasm::NameConverter converter;
disasm::Disassembler disasm(converter);
EmbeddedVector<char, 128> disasm_buffer;
@@ -2567,9 +2597,25 @@ void Assembler::AdjustBaseAndOffset(MemOperand* src, Register scratch,
// Must not overwrite the register 'base' while loading 'offset'.
DCHECK(src->rm() != scratch);
- RV_li(scratch, src->offset());
- add(scratch, scratch, src->rm());
- src->offset_ = 0;
+ constexpr int32_t kMinOffsetForSimpleAdjustment = 0x7F8;
+ constexpr int32_t kMaxOffsetForSimpleAdjustment =
+ 2 * kMinOffsetForSimpleAdjustment;
+ if (0 <= src->offset() && src->offset() <= kMaxOffsetForSimpleAdjustment) {
+ addi(scratch, src->rm(), kMinOffsetForSimpleAdjustment);
+ src->offset_ -= kMinOffsetForSimpleAdjustment;
+ } else if (-kMaxOffsetForSimpleAdjustment <= src->offset() &&
+ src->offset() < 0) {
+ addi(scratch, src->rm(), -kMinOffsetForSimpleAdjustment);
+ src->offset_ += kMinOffsetForSimpleAdjustment;
+ } else if (access_type == OffsetAccessType::SINGLE_ACCESS) {
+ RV_li(scratch, (static_cast<int64_t>(src->offset()) + 0x800) >> 12 << 12);
+ add(scratch, scratch, src->rm());
+ src->offset_ = src->offset() << 20 >> 20;
+ } else {
+ RV_li(scratch, src->offset());
+ add(scratch, scratch, src->rm());
+ src->offset_ = 0;
+ }
src->rm_ = scratch;
}
@@ -2596,6 +2642,22 @@ int Assembler::RelocateInternalReference(RelocInfo::Mode rmode, Address pc,
}
}
+void Assembler::RelocateRelativeReference(RelocInfo::Mode rmode, Address pc,
+ intptr_t pc_delta) {
+ Instr instr = instr_at(pc);
+ Instr instr1 = instr_at(pc + 1 * kInstrSize);
+ DCHECK(RelocInfo::IsRelativeCodeTarget(rmode));
+ if (IsAuipc(instr) && IsJalr(instr1)) {
+ int32_t imm;
+ imm = BrachlongOffset(instr, instr1);
+ imm -= pc_delta;
+ PatchBranchlongOffset(pc, instr, instr1, imm);
+ return;
+ } else {
+ UNREACHABLE();
+ }
+}
+
void Assembler::GrowBuffer() {
DEBUG_PRINTF("GrowBuffer: %p -> ", buffer_start_);
// Compute new buffer size.
@@ -2766,12 +2828,23 @@ void Assembler::set_target_address_at(Address pc, Address constant_pool,
ICacheFlushMode icache_flush_mode) {
Instr* instr = reinterpret_cast<Instr*>(pc);
if (IsAuipc(*instr)) {
- DCHECK(IsLd(*reinterpret_cast<Instr*>(pc + 4)));
- int32_t Hi20 = AuipcOffset(*instr);
- int32_t Lo12 = LdOffset(*reinterpret_cast<Instr*>(pc + 4));
- Memory<Address>(pc + Hi20 + Lo12) = target;
- if (icache_flush_mode != SKIP_ICACHE_FLUSH) {
- FlushInstructionCache(pc + Hi20 + Lo12, 2 * kInstrSize);
+ if (IsLd(*reinterpret_cast<Instr*>(pc + 4))) {
+ int32_t Hi20 = AuipcOffset(*instr);
+ int32_t Lo12 = LdOffset(*reinterpret_cast<Instr*>(pc + 4));
+ Memory<Address>(pc + Hi20 + Lo12) = target;
+ if (icache_flush_mode != SKIP_ICACHE_FLUSH) {
+ FlushInstructionCache(pc + Hi20 + Lo12, 2 * kInstrSize);
+ }
+ } else {
+ DCHECK(IsJalr(*reinterpret_cast<Instr*>(pc + 4)));
+ int64_t imm = (int64_t)target - (int64_t)pc;
+ Instr instr = instr_at(pc);
+ Instr instr1 = instr_at(pc + 1 * kInstrSize);
+ DCHECK(is_int32(imm));
+ int num = PatchBranchlongOffset(pc, instr, instr1, (int32_t)imm);
+ if (icache_flush_mode != SKIP_ICACHE_FLUSH) {
+ FlushInstructionCache(pc, num * kInstrSize);
+ }
}
} else {
set_target_address_at(pc, target, icache_flush_mode);
@@ -2781,10 +2854,17 @@ void Assembler::set_target_address_at(Address pc, Address constant_pool,
Address Assembler::target_address_at(Address pc, Address constant_pool) {
Instr* instr = reinterpret_cast<Instr*>(pc);
if (IsAuipc(*instr)) {
- DCHECK(IsLd(*reinterpret_cast<Instr*>(pc + 4)));
- int32_t Hi20 = AuipcOffset(*instr);
- int32_t Lo12 = LdOffset(*reinterpret_cast<Instr*>(pc + 4));
- return Memory<Address>(pc + Hi20 + Lo12);
+ if (IsLd(*reinterpret_cast<Instr*>(pc + 4))) {
+ int32_t Hi20 = AuipcOffset(*instr);
+ int32_t Lo12 = LdOffset(*reinterpret_cast<Instr*>(pc + 4));
+ return Memory<Address>(pc + Hi20 + Lo12);
+ } else {
+ DCHECK(IsJalr(*reinterpret_cast<Instr*>(pc + 4)));
+ int32_t Hi20 = AuipcOffset(*instr);
+ int32_t Lo12 = JalrOffset(*reinterpret_cast<Instr*>(pc + 4));
+ return pc + Hi20 + Lo12;
+ }
+
} else {
return target_address_at(pc);
}
@@ -2890,17 +2970,17 @@ bool UseScratchRegisterScope::hasAvailable() const { return *available_ != 0; }
bool Assembler::IsConstantPoolAt(Instruction* instr) {
// The constant pool marker is made of two instructions. These instructions
// will never be emitted by the JIT, so checking for the first one is enough:
- // 0: ld x0, t3, #offset
+ // 0: ld x0, x0, #offset
Instr instr_value = *reinterpret_cast<Instr*>(instr);
-
- bool result = IsLd(instr_value) && (instr->RdValue() == kRegCode_zero_reg);
- // It is still worth asserting the marker is complete.
- // 4: j 0
+ bool result = IsLd(instr_value) && (instr->Rs1Value() == kRegCode_zero_reg) &&
+ (instr->RdValue() == kRegCode_zero_reg);
#ifdef DEBUG
- Instruction* instr_fllowing = instr + kInstrSize;
- DCHECK(!result || (IsJal(*reinterpret_cast<Instr*>(instr_fllowing)) &&
- instr_fllowing->Imm20JValue() == 0 &&
- instr_fllowing->RdValue() == kRegCode_zero_reg));
+ // It is still worth asserting the marker is complete.
+ // 1: j 0x0
+ Instruction* instr_following = instr + kInstrSize;
+ DCHECK(!result || (IsJal(*reinterpret_cast<Instr*>(instr_following)) &&
+ instr_following->Imm20JValue() == 0 &&
+ instr_following->RdValue() == kRegCode_zero_reg));
#endif
return result;
}
@@ -2941,9 +3021,9 @@ void ConstantPool::EmitPrologue(Alignment require_alignment) {
int ConstantPool::PrologueSize(Jump require_jump) const {
// Prologue is:
- // j over ;; if require_jump
- // ld x0, t3, #pool_size
- // j xzr
+ // j over ;; if require_jump
+ // ld x0, x0, #pool_size
+ // j 0x0
int prologue_size = require_jump == Jump::kRequired ? kInstrSize : 0;
prologue_size += 2 * kInstrSize;
return prologue_size;
@@ -2954,7 +3034,7 @@ void ConstantPool::SetLoadOffsetToConstPoolEntry(int load_offset,
const ConstantPoolKey& key) {
Instr instr_auipc = assm_->instr_at(load_offset);
Instr instr_ld = assm_->instr_at(load_offset + 4);
- // Instruction to patch must be 'ld t3, t3, offset' with offset == kInstrSize.
+ // Instruction to patch must be 'ld rd, offset(rd)' with 'offset == 0'.
DCHECK(assm_->IsAuipc(instr_auipc));
DCHECK(assm_->IsLd(instr_ld));
DCHECK_EQ(assm_->LdOffset(instr_ld), 0);
diff --git a/deps/v8/src/codegen/riscv64/assembler-riscv64.h b/deps/v8/src/codegen/riscv64/assembler-riscv64.h
index 1dcf4e0aae..ff66351d6a 100644
--- a/deps/v8/src/codegen/riscv64/assembler-riscv64.h
+++ b/deps/v8/src/codegen/riscv64/assembler-riscv64.h
@@ -53,7 +53,7 @@ namespace v8 {
namespace internal {
#define DEBUG_PRINTF(...) \
- if (FLAG_debug_riscv) { \
+ if (FLAG_riscv_debug) { \
printf(__VA_ARGS__); \
}
@@ -160,6 +160,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
virtual ~Assembler() { CHECK(constpool_.IsEmpty()); }
+ void AbortedCodeGeneration() { constpool_.Clear(); }
// GetCode emits any pending (non-emitted) code and fills the descriptor desc.
static constexpr int kNoHandlerTable = 0;
static constexpr SafepointTableBuilder* kNoSafepointTable = nullptr;
@@ -208,11 +209,14 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// Get offset from instr.
int BranchOffset(Instr instr);
- int BrachlongOffset(Instr auipc, Instr jalr);
+ static int BrachlongOffset(Instr auipc, Instr jalr);
+ static int PatchBranchlongOffset(Address pc, Instr auipc, Instr instr_I,
+ int32_t offset);
int JumpOffset(Instr instr);
int CJumpOffset(Instr instr);
static int LdOffset(Instr instr);
static int AuipcOffset(Instr instr);
+ static int JalrOffset(Instr instr);
// Returns the branch offset to the given label from the current code
// position. Links the label to the current position if it is still unbound.
@@ -800,6 +804,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
static int RelocateInternalReference(RelocInfo::Mode rmode, Address pc,
intptr_t pc_delta);
+ static void RelocateRelativeReference(RelocInfo::Mode rmode, Address pc,
+ intptr_t pc_delta);
// Writes a single byte or word of data in the code stream. Used for
// inline tables, e.g., jump-tables.
@@ -862,8 +868,40 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
static bool IsLd(Instr instr);
void CheckTrampolinePool();
+ // Get the code target object for a pc-relative call or jump.
+ V8_INLINE Handle<Code> relative_code_target_object_handle_at(
+ Address pc_) const;
+
inline int UnboundLabelsCount() { return unbound_labels_count_; }
+ using BlockPoolsScope = BlockTrampolinePoolScope;
+
+ void RecordConstPool(int size);
+
+ void ForceConstantPoolEmissionWithoutJump() {
+ constpool_.Check(Emission::kForced, Jump::kOmitted);
+ }
+ void ForceConstantPoolEmissionWithJump() {
+ constpool_.Check(Emission::kForced, Jump::kRequired);
+ }
+ // Check if the const pool needs to be emitted while pretending that {margin}
+ // more bytes of instructions have already been emitted.
+ void EmitConstPoolWithJumpIfNeeded(size_t margin = 0) {
+ constpool_.Check(Emission::kIfNeeded, Jump::kRequired, margin);
+ }
+
+ void EmitConstPoolWithoutJumpIfNeeded(size_t margin = 0) {
+ constpool_.Check(Emission::kIfNeeded, Jump::kOmitted, margin);
+ }
+
+ void RecordEntry(uint32_t data, RelocInfo::Mode rmode) {
+ constpool_.RecordEntry(data, rmode);
+ }
+
+ void RecordEntry(uint64_t data, RelocInfo::Mode rmode) {
+ constpool_.RecordEntry(data, rmode);
+ }
+
protected:
// Readable constants for base and offset adjustment helper, these indicate if
// aside from offset, another value like offset + 4 should fit into int16.
@@ -949,34 +987,6 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
}
}
- using BlockPoolsScope = BlockTrampolinePoolScope;
-
- void RecordConstPool(int size);
-
- void ForceConstantPoolEmissionWithoutJump() {
- constpool_.Check(Emission::kForced, Jump::kOmitted);
- }
- void ForceConstantPoolEmissionWithJump() {
- constpool_.Check(Emission::kForced, Jump::kRequired);
- }
- // Check if the const pool needs to be emitted while pretending that {margin}
- // more bytes of instructions have already been emitted.
- void EmitConstPoolWithJumpIfNeeded(size_t margin = 0) {
- constpool_.Check(Emission::kIfNeeded, Jump::kRequired, margin);
- }
-
- void EmitConstPoolWithoutJumpIfNeeded(size_t margin = 0) {
- constpool_.Check(Emission::kIfNeeded, Jump::kOmitted, margin);
- }
-
- void RecordEntry(uint32_t data, RelocInfo::Mode rmode) {
- constpool_.RecordEntry(data, rmode);
- }
-
- void RecordEntry(uint64_t data, RelocInfo::Mode rmode) {
- constpool_.RecordEntry(data, rmode);
- }
-
private:
// Avoid overflows for displacements etc.
static const int kMaximalBufferSize = 512 * MB;
@@ -1231,6 +1241,16 @@ class V8_EXPORT_PRIVATE UseScratchRegisterScope {
Register Acquire();
bool hasAvailable() const;
+ void Include(const RegList& list) { *available_ |= list; }
+ void Exclude(const RegList& list) { *available_ &= ~list; }
+ void Include(const Register& reg1, const Register& reg2 = no_reg) {
+ RegList list(reg1.bit() | reg2.bit());
+ Include(list);
+ }
+ void Exclude(const Register& reg1, const Register& reg2 = no_reg) {
+ RegList list(reg1.bit() | reg2.bit());
+ Exclude(list);
+ }
private:
RegList* available_;
diff --git a/deps/v8/src/codegen/riscv64/constants-riscv64.cc b/deps/v8/src/codegen/riscv64/constants-riscv64.cc
index 045488bf7f..d2709dc2c7 100644
--- a/deps/v8/src/codegen/riscv64/constants-riscv64.cc
+++ b/deps/v8/src/codegen/riscv64/constants-riscv64.cc
@@ -106,8 +106,11 @@ int FPURegisters::Number(const char* name) {
}
InstructionBase::Type InstructionBase::InstructionType() const {
+ if (IsIllegalInstruction()) {
+ return kUnsupported;
+ }
// RV64C Instruction
- if (IsShortInstruction()) {
+ if (FLAG_riscv_c_extension && IsShortInstruction()) {
switch (InstructionBits() & kRvcOpcodeMask) {
case RO_C_ADDI4SPN:
return kCIWType;
diff --git a/deps/v8/src/codegen/riscv64/constants-riscv64.h b/deps/v8/src/codegen/riscv64/constants-riscv64.h
index 3b5ffff6da..c8f54d8f7f 100644
--- a/deps/v8/src/codegen/riscv64/constants-riscv64.h
+++ b/deps/v8/src/codegen/riscv64/constants-riscv64.h
@@ -8,6 +8,7 @@
#include "src/base/logging.h"
#include "src/base/macros.h"
#include "src/common/globals.h"
+#include "src/flags/flags.h"
// UNIMPLEMENTED_ macro for RISCV.
#ifdef DEBUG
@@ -55,8 +56,7 @@ const uint32_t kLessSignificantWordInDoublewordOffset = 4;
namespace v8 {
namespace internal {
-// TODO(sigurds): Change this value once we use relative jumps.
-constexpr size_t kMaxPCRelativeCodeRangeInMB = 0;
+constexpr size_t kMaxPCRelativeCodeRangeInMB = 4096;
// -----------------------------------------------------------------------------
// Registers and FPURegisters.
@@ -727,18 +727,25 @@ class InstructionBase {
kUnsupported = -1
};
+ inline bool IsIllegalInstruction() const {
+ uint8_t FirstHalfWord = *reinterpret_cast<const uint16_t*>(this);
+ return FirstHalfWord == 0;
+ }
+
inline bool IsShortInstruction() const {
uint8_t FirstByte = *reinterpret_cast<const uint8_t*>(this);
return (FirstByte & 0x03) <= C2;
}
inline uint8_t InstructionSize() const {
- return this->IsShortInstruction() ? kShortInstrSize : kInstrSize;
+ return (FLAG_riscv_c_extension && this->IsShortInstruction())
+ ? kShortInstrSize
+ : kInstrSize;
}
// Get the raw instruction bits.
inline Instr InstructionBits() const {
- if (this->IsShortInstruction()) {
+ if (FLAG_riscv_c_extension && this->IsShortInstruction()) {
return 0x0000FFFF & (*reinterpret_cast<const ShortInstr*>(this));
}
return *reinterpret_cast<const Instr*>(this);
diff --git a/deps/v8/src/codegen/riscv64/interface-descriptors-riscv64-inl.h b/deps/v8/src/codegen/riscv64/interface-descriptors-riscv64-inl.h
new file mode 100644
index 0000000000..4a8bb0d9ee
--- /dev/null
+++ b/deps/v8/src/codegen/riscv64/interface-descriptors-riscv64-inl.h
@@ -0,0 +1,265 @@
+// Copyright 2021 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_CODEGEN_RISCV64_INTERFACE_DESCRIPTORS_RISCV64_INL_H_
+#define V8_CODEGEN_RISCV64_INTERFACE_DESCRIPTORS_RISCV64_INL_H_
+
+#if V8_TARGET_ARCH_RISCV64
+
+#include "src/base/template-utils.h"
+#include "src/codegen/interface-descriptors.h"
+#include "src/execution/frames.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(a0, a1, a2, a3, a4);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(a0, a1, a2, a3, kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(kReturnRegister0, a1, a2, a3, cp);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(a0, a1, a2, a3, kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return a1; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return a2; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return a0; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return a3; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return a4;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return a1; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return a2; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return a0; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return a4; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() { return a3; }
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return a5; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return a0; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return a3; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return a3; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ return a2;
+}
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() { return a3; }
+
+// static
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return a0; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(a3); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // a1: target
+ // a0: number of arguments
+ return RegisterArray(a1, a0);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a4 : arguments list length (untagged)
+ // a2 : arguments list (FixedArray)
+ return RegisterArray(a1, a0, a4, a2);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // a1: target
+ // a0: number of arguments
+ // a2: start index (to supported rest parameters)
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // a1 : function template info
+ // a0 : number of arguments (on the stack, not including receiver)
+ return RegisterArray(a1, a0);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a2 : the object to spread
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // a1 : the target to call
+ // a2 : the arguments list
+ return RegisterArray(a1, a2);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a3 : the new target
+ // a4 : arguments list length (untagged)
+ // a2 : arguments list (FixedArray)
+ return RegisterArray(a1, a3, a0, a4, a2);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // a3: new target
+ // a1: target
+ // a0: number of arguments
+ // a2: start index (to supported rest parameters)
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // a0 : number of arguments (on the stack, not including receiver)
+ // a1 : the target to call
+ // a3 : the new target
+ // a2 : the object to spread
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // a1 : the target to call
+ // a3 : the new target
+ // a2 : the arguments list
+ return RegisterArray(a1, a3, a2);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // a3: new target
+ // a1: target
+ // a0: number of arguments
+ // a2: allocation site or undefined
+ return RegisterArray(a1, a3, a0, a2);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(a0); }
+
+// static
+constexpr auto CompareDescriptor::registers() {
+ // a1: left operand
+ // a0: right operand
+ return RegisterArray(a1, a0);
+}
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ // a1: left operand
+ // a0: right operand
+ // a2: feedback slot
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() {
+ // a1: left operand
+ // a0: right operand
+ return RegisterArray(a1, a0);
+}
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ // a1: left operand
+ // a0: right operand
+ // a2: feedback slot
+ return RegisterArray(a1, a0, a2);
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ return RegisterArray(a1, // kApiFunctionAddress
+ a2, // kArgc
+ a3, // kCallData
+ a0); // kHolder
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ return RegisterArray(a0, // argument count (not including receiver)
+ a2, // address of first argument
+ a1); // the target callable to be call
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ return RegisterArray(
+ a0, // argument count (not including receiver)
+ a4, // address of the first argument
+ a1, // constructor to call
+ a3, // new target
+ a2); // allocation site feedback if available, undefined otherwise
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ return RegisterArray(a0, // the value to pass to the generator
+ a1); // the JSGeneratorObject to resume
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray(a0, a1);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_RISCV64
+
+#endif // V8_CODEGEN_RISCV64_INTERFACE_DESCRIPTORS_RISCV64_INL_H_
diff --git a/deps/v8/src/codegen/riscv64/interface-descriptors-riscv64.cc b/deps/v8/src/codegen/riscv64/interface-descriptors-riscv64.cc
deleted file mode 100644
index 23953097cd..0000000000
--- a/deps/v8/src/codegen/riscv64/interface-descriptors-riscv64.cc
+++ /dev/null
@@ -1,313 +0,0 @@
-// Copyright 2021 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.
-
-#if V8_TARGET_ARCH_RISCV64
-
-#include "src/codegen/interface-descriptors.h"
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return cp; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, a4};
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-void WasmI32AtomicWait32Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3};
- CHECK_EQ(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void WasmI64AtomicWait32Descriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, a4};
- CHECK_EQ(static_cast<size_t>(kParameterCount - kStackArgumentsCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount - kStackArgumentsCount,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {a0, a1, a2, a3, kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {kReturnRegister0, a1, a2, a3, cp};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return a1; }
-const Register LoadDescriptor::NameRegister() { return a2; }
-const Register LoadDescriptor::SlotRegister() { return a0; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return a3; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return a4;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return a1; }
-const Register StoreDescriptor::NameRegister() { return a2; }
-const Register StoreDescriptor::ValueRegister() { return a0; }
-const Register StoreDescriptor::SlotRegister() { return a4; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return a3; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return a4; }
-const Register StoreTransitionDescriptor::VectorRegister() { return a3; }
-const Register StoreTransitionDescriptor::MapRegister() { return a5; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return a0; }
-const Register ApiGetterDescriptor::CallbackRegister() { return a3; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return a3; }
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return a0; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: target
- // a0: number of arguments
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a4 : arguments list length (untagged)
- // a2 : arguments list (FixedArray)
- Register registers[] = {a1, a0, a4, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: the target to call
- // a0: number of arguments
- // a2: start index (to support rest parameters)
- Register registers[] = {a1, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : function template info
- // a0 : number of arguments (on the stack, not including receiver)
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a2 : the object to spread
- Register registers[] = {a1, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : the target to call
- // a2 : the arguments list
- Register registers[] = {a1, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a3 : the new target
- // a4 : arguments list length (untagged)
- // a2 : arguments list (FixedArray)
- Register registers[] = {a1, a3, a0, a4, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: the target to call
- // a3: new target
- // a0: number of arguments
- // a2: start index (to support rest parameters)
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a0 : number of arguments (on the stack, not including receiver)
- // a1 : the target to call
- // a3 : the new target
- // a2 : the object to spread
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1 : the target to call
- // a3 : the new target
- // a2 : the arguments list
- Register registers[] = {a1, a3, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // a1: target
- // a3: new target
- // a0: number of arguments
- // a2: allocation site or undefined
- Register registers[] = {a1, a3, a0, a2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a1, a0};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a1, // kApiFunctionAddress
- a2, // kArgc
- a3, // kCallData
- a0, // kHolder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a0, // argument count (not including receiver)
- a2, // address of first argument
- a1 // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a0, // argument count (not including receiver)
- a4, // address of the first argument
- a1, // constructor to call
- a3, // new target
- a2, // allocation site feedback if available, undefined otherwise
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a0, // the value to pass to the generator
- a1 // the JSGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- a1, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {a0, a1};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_RISCV64
diff --git a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc
index ff798da0e9..801a74f569 100644
--- a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc
+++ b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.cc
@@ -12,6 +12,7 @@
#include "src/codegen/callable.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/external-reference-table.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
#include "src/codegen/register-configuration.h"
#include "src/debug/debug.h"
@@ -61,7 +62,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
RegList list = kJSCallerSaved & ~exclusions;
bytes += NumRegs(list) * kPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -86,7 +87,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
MultiPush(list);
bytes += NumRegs(list) * kPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPushFPU(kCallerSavedFPU);
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -97,7 +98,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
Register exclusion2, Register exclusion3) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPopFPU(kCallerSavedFPU);
bytes += NumRegs(kCallerSavedFPU) * kDoubleSize;
}
@@ -175,7 +176,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -184,7 +185,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
DCHECK(IsAligned(offset, kPointerSize));
Add64(dst, object, Operand(offset - kHeapObjectTag));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
BlockTrampolinePoolScope block_trampoline_pool(this);
@@ -197,13 +198,13 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, dst, value, ra_status, save_fp, remembered_set_action,
- OMIT_SMI_CHECK);
+ SmiCheck::kOmit);
bind(&done);
// Clobber clobbered input registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
li(value, Operand(bit_cast<int64_t>(kZapValue + 4)));
li(dst, Operand(bit_cast<int64_t>(kZapValue + 8)));
}
@@ -336,14 +337,14 @@ void MacroAssembler::RecordWrite(Register object, Register address,
SaveFPRegsMode fp_mode,
RememberedSetAction remembered_set_action,
SmiCheck smi_check) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
DCHECK(!AreAliased(object, address, value, kScratchReg));
Ld(kScratchReg, MemOperand(address));
Assert(eq, AbortReason::kWrongAddressOrValuePassedToRecordWrite,
kScratchReg, Operand(value));
}
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
@@ -353,7 +354,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// catch stores of smis and stores into the young generation.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
DCHECK_EQ(0, kSmiTag);
JumpIfSmi(value, &done);
}
@@ -378,7 +379,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// Clobber clobbered registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
li(address, Operand(bit_cast<int64_t>(kZapValue + 12)));
li(value, Operand(bit_cast<int64_t>(kZapValue + 16)));
}
@@ -393,6 +394,10 @@ void TurboAssembler::Add32(Register rd, Register rs, const Operand& rt) {
} else {
if (is_int12(rt.immediate()) && !MustUseReg(rt.rmode())) {
addiw(rd, rs, static_cast<int32_t>(rt.immediate()));
+ } else if ((-4096 <= rt.immediate() && rt.immediate() <= -2049) ||
+ (2048 <= rt.immediate() && rt.immediate() <= 4094)) {
+ addiw(rd, rs, rt.immediate() / 2);
+ addiw(rd, rd, rt.immediate() - (rt.immediate() / 2));
} else {
// li handles the relocation.
UseScratchRegisterScope temps(this);
@@ -409,6 +414,10 @@ void TurboAssembler::Add64(Register rd, Register rs, const Operand& rt) {
} else {
if (is_int12(rt.immediate()) && !MustUseReg(rt.rmode())) {
addi(rd, rs, static_cast<int32_t>(rt.immediate()));
+ } else if ((-4096 <= rt.immediate() && rt.immediate() <= -2049) ||
+ (2048 <= rt.immediate() && rt.immediate() <= 4094)) {
+ addi(rd, rs, rt.immediate() / 2);
+ addi(rd, rd, rt.immediate() - (rt.immediate() / 2));
} else {
// li handles the relocation.
UseScratchRegisterScope temps(this);
@@ -429,6 +438,10 @@ void TurboAssembler::Sub32(Register rd, Register rs, const Operand& rt) {
addiw(rd, rs,
static_cast<int32_t>(
-rt.immediate())); // No subiw instr, use addiw(x, y, -imm).
+ } else if ((-4096 <= -rt.immediate() && -rt.immediate() <= -2049) ||
+ (2048 <= -rt.immediate() && -rt.immediate() <= 4094)) {
+ addiw(rd, rs, -rt.immediate() / 2);
+ addiw(rd, rd, -rt.immediate() - (-rt.immediate() / 2));
} else {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -452,6 +465,10 @@ void TurboAssembler::Sub64(Register rd, Register rs, const Operand& rt) {
addi(rd, rs,
static_cast<int32_t>(
-rt.immediate())); // No subi instr, use addi(x, y, -imm).
+ } else if ((-4096 <= -rt.immediate() && -rt.immediate() <= -2049) ||
+ (2048 <= -rt.immediate() && -rt.immediate() <= 4094)) {
+ addi(rd, rs, -rt.immediate() / 2);
+ addi(rd, rd, -rt.immediate() - (-rt.immediate() / 2));
} else {
int li_count = InstrCountForLi64Bit(rt.immediate());
int li_neg_count = InstrCountForLi64Bit(-rt.immediate());
@@ -884,6 +901,7 @@ void TurboAssembler::Sll64(Register rd, Register rs, const Operand& rt) {
void TurboAssembler::Ror(Register rd, Register rs, const Operand& rt) {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
+ BlockTrampolinePoolScope block_trampoline_pool(this);
if (rt.is_reg()) {
negw(scratch, rt.rm());
sllw(scratch, rs, scratch);
@@ -908,6 +926,7 @@ void TurboAssembler::Ror(Register rd, Register rs, const Operand& rt) {
void TurboAssembler::Dror(Register rd, Register rs, const Operand& rt) {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
+ BlockTrampolinePoolScope block_trampoline_pool(this);
if (rt.is_reg()) {
negw(scratch, rt.rm());
sll(scratch, rs, scratch);
@@ -928,9 +947,10 @@ void TurboAssembler::Dror(Register rd, Register rs, const Operand& rt) {
}
void TurboAssembler::CalcScaledAddress(Register rd, Register rt, Register rs,
- uint8_t sa, Register scratch) {
+ uint8_t sa) {
DCHECK(sa >= 1 && sa <= 31);
- Register tmp = rd == rt ? scratch : rd;
+ UseScratchRegisterScope temps(this);
+ Register tmp = rd == rt ? temps.Acquire() : rd;
DCHECK(tmp != rt);
slli(tmp, rs, sa);
Add64(rd, rt, tmp);
@@ -1215,8 +1235,9 @@ void TurboAssembler::Uld(Register rd, const MemOperand& rs) {
// Load consequent 32-bit word pair in 64-bit reg. and put first word in low
// bits,
// second word in high bits.
-void MacroAssembler::LoadWordPair(Register rd, const MemOperand& rs,
- Register scratch) {
+void MacroAssembler::LoadWordPair(Register rd, const MemOperand& rs) {
+ UseScratchRegisterScope temps(this);
+ Register scratch = temps.Acquire();
Lwu(rd, rs);
Lw(scratch, MemOperand(rs.rm(), rs.offset() + kPointerSize / 2));
slli(scratch, scratch, 32);
@@ -1228,8 +1249,9 @@ void TurboAssembler::Usd(Register rd, const MemOperand& rs) {
}
// Do 64-bit store as two consequent 32-bit stores to unaligned address.
-void MacroAssembler::StoreWordPair(Register rd, const MemOperand& rs,
- Register scratch) {
+void MacroAssembler::StoreWordPair(Register rd, const MemOperand& rs) {
+ UseScratchRegisterScope temps(this);
+ Register scratch = temps.Acquire();
Sw(rd, rs);
srai(scratch, rd, 32);
Sw(scratch, MemOperand(rs.rm(), rs.offset() + kPointerSize / 2));
@@ -1464,7 +1486,7 @@ void TurboAssembler::li(Register rd, Operand j, LiFlags mode) {
UseScratchRegisterScope temps(this);
int count = li_estimate(j.immediate(), temps.hasAvailable());
int reverse_count = li_estimate(~j.immediate(), temps.hasAvailable());
- if (!FLAG_disable_riscv_constant_pool && count >= 4 && reverse_count >= 4) {
+ if (FLAG_riscv_constant_pool && count >= 4 && reverse_count >= 4) {
// Ld a Address from a constant pool.
RecordEntry((uint64_t)j.immediate(), j.rmode());
auipc(rd, 0);
@@ -1864,6 +1886,28 @@ void TurboAssembler::RoundHelper(FPURegister dst, FPURegister src,
fmv_s(dst, src);
}
}
+ {
+ Label not_NaN;
+ UseScratchRegisterScope temps2(this);
+ Register scratch = temps2.Acquire();
+ // According to the wasm spec
+ // (https://webassembly.github.io/spec/core/exec/numerics.html#aux-nans)
+ // if input is canonical NaN, then output is canonical NaN, and if input is
+ // any other NaN, then output is any NaN with most significant bit of
+ // payload is 1. In RISC-V, feq_d will set scratch to 0 if src is a NaN. If
+ // src is not a NaN, branch to the label and do nothing, but if it is,
+ // fmin_d will set dst to the canonical NaN.
+ if (std::is_same<F, double>::value) {
+ feq_d(scratch, src, src);
+ bnez(scratch, &not_NaN);
+ fmin_d(dst, src, src);
+ } else {
+ feq_s(scratch, src, src);
+ bnez(scratch, &not_NaN);
+ fmin_s(dst, src, src);
+ }
+ bind(&not_NaN);
+ }
// If real exponent (i.e., t6 - kFloatExponentBias) is greater than
// kFloat32MantissaBits, it means the floating-point value has no fractional
@@ -2030,8 +2074,8 @@ void TurboAssembler::CompareF64(Register rd, FPUCondition cc, FPURegister cmp1,
}
}
-void TurboAssembler::CompareIsNanF32(Register rd, FPURegister cmp1,
- FPURegister cmp2) {
+void TurboAssembler::CompareIsNotNanF32(Register rd, FPURegister cmp1,
+ FPURegister cmp2) {
UseScratchRegisterScope temps(this);
BlockTrampolinePoolScope block_trampoline_pool(this);
Register scratch = temps.Acquire();
@@ -2039,11 +2083,10 @@ void TurboAssembler::CompareIsNanF32(Register rd, FPURegister cmp1,
feq_s(rd, cmp1, cmp1); // rd <- !isNan(cmp1)
feq_s(scratch, cmp2, cmp2); // scratch <- !isNaN(cmp2)
And(rd, rd, scratch); // rd <- !isNan(cmp1) && !isNan(cmp2)
- Xor(rd, rd, 1); // rd <- isNan(cmp1) || isNan(cmp2)
}
-void TurboAssembler::CompareIsNanF64(Register rd, FPURegister cmp1,
- FPURegister cmp2) {
+void TurboAssembler::CompareIsNotNanF64(Register rd, FPURegister cmp1,
+ FPURegister cmp2) {
UseScratchRegisterScope temps(this);
BlockTrampolinePoolScope block_trampoline_pool(this);
Register scratch = temps.Acquire();
@@ -2051,7 +2094,18 @@ void TurboAssembler::CompareIsNanF64(Register rd, FPURegister cmp1,
feq_d(rd, cmp1, cmp1); // rd <- !isNan(cmp1)
feq_d(scratch, cmp2, cmp2); // scratch <- !isNaN(cmp2)
And(rd, rd, scratch); // rd <- !isNan(cmp1) && !isNan(cmp2)
- Xor(rd, rd, 1); // rd <- isNan(cmp1) || isNan(cmp2)
+}
+
+void TurboAssembler::CompareIsNanF32(Register rd, FPURegister cmp1,
+ FPURegister cmp2) {
+ CompareIsNotNanF32(rd, cmp1, cmp2); // rd <- !isNan(cmp1) && !isNan(cmp2)
+ Xor(rd, rd, 1); // rd <- isNan(cmp1) || isNan(cmp2)
+}
+
+void TurboAssembler::CompareIsNanF64(Register rd, FPURegister cmp1,
+ FPURegister cmp2) {
+ CompareIsNotNanF64(rd, cmp1, cmp2); // rd <- !isNan(cmp1) && !isNan(cmp2)
+ Xor(rd, rd, 1); // rd <- isNan(cmp1) || isNan(cmp2)
}
void TurboAssembler::BranchTrueShortF(Register rs, Label* target) {
@@ -2949,9 +3003,20 @@ void TurboAssembler::Jump(Handle<Code> code, RelocInfo::Mode rmode,
bool target_is_isolate_independent_builtin =
isolate()->builtins()->IsBuiltinHandle(code, &builtin_index) &&
Builtins::IsIsolateIndependent(builtin_index);
-
- if (root_array_available_ && options().isolate_independent_code &&
- target_is_isolate_independent_builtin) {
+ if (target_is_isolate_independent_builtin &&
+ options().use_pc_relative_calls_and_jumps) {
+ int32_t code_target_index = AddCodeTarget(code);
+ Label skip;
+ BlockTrampolinePoolScope block_trampoline_pool(this);
+ if (cond != al) {
+ Branch(&skip, NegateCondition(cond), rs, rt);
+ }
+ RecordRelocInfo(RelocInfo::RELATIVE_CODE_TARGET);
+ GenPCRelativeJump(t6, code_target_index);
+ bind(&skip);
+ return;
+ } else if (root_array_available_ && options().isolate_independent_code &&
+ target_is_isolate_independent_builtin) {
int offset = code->builtin_index() * kSystemPointerSize +
IsolateData::builtin_entry_table_offset();
Ld(t6, MemOperand(kRootRegister, offset));
@@ -3017,8 +3082,22 @@ void TurboAssembler::Call(Handle<Code> code, RelocInfo::Mode rmode,
bool target_is_isolate_independent_builtin =
isolate()->builtins()->IsBuiltinHandle(code, &builtin_index) &&
Builtins::IsIsolateIndependent(builtin_index);
- if (root_array_available_ && options().isolate_independent_code &&
- target_is_isolate_independent_builtin) {
+ if (target_is_isolate_independent_builtin &&
+ options().use_pc_relative_calls_and_jumps) {
+ int32_t code_target_index = AddCodeTarget(code);
+ Label skip;
+ BlockTrampolinePoolScope block_trampoline_pool(this);
+ RecordCommentForOffHeapTrampoline(builtin_index);
+ if (cond != al) {
+ Branch(&skip, NegateCondition(cond), rs, rt);
+ }
+ RecordRelocInfo(RelocInfo::RELATIVE_CODE_TARGET);
+ GenPCRelativeJumpAndLink(t6, code_target_index);
+ bind(&skip);
+ RecordComment("]");
+ return;
+ } else if (root_array_available_ && options().isolate_independent_code &&
+ target_is_isolate_independent_builtin) {
int offset = code->builtin_index() * kSystemPointerSize +
IsolateData::builtin_entry_table_offset();
LoadRootRelative(t6, offset);
@@ -3059,6 +3138,46 @@ void TurboAssembler::CallBuiltinByIndex(Register builtin_index) {
Call(builtin_index);
}
+void TurboAssembler::CallBuiltin(int builtin_index) {
+ DCHECK(Builtins::IsBuiltinId(builtin_index));
+ RecordCommentForOffHeapTrampoline(builtin_index);
+ CHECK_NE(builtin_index, Builtins::kNoBuiltinId);
+ EmbeddedData d = EmbeddedData::FromBlob(isolate());
+ Address entry = d.InstructionStartOfBuiltin(builtin_index);
+ if (options().short_builtin_calls) {
+ Call(entry, RelocInfo::RUNTIME_ENTRY);
+ } else {
+ Call(entry, RelocInfo::OFF_HEAP_TARGET);
+ }
+ RecordComment("]");
+}
+
+void TurboAssembler::TailCallBuiltin(int builtin_index) {
+ DCHECK(Builtins::IsBuiltinId(builtin_index));
+ RecordCommentForOffHeapTrampoline(builtin_index);
+ CHECK_NE(builtin_index, Builtins::kNoBuiltinId);
+ EmbeddedData d = EmbeddedData::FromBlob(isolate());
+ Address entry = d.InstructionStartOfBuiltin(builtin_index);
+ if (options().short_builtin_calls) {
+ Jump(entry, RelocInfo::RUNTIME_ENTRY);
+ } else {
+ Jump(entry, RelocInfo::OFF_HEAP_TARGET);
+ }
+ RecordComment("]");
+}
+
+void TurboAssembler::LoadEntryFromBuiltinIndex(Builtins::Name builtin_index,
+ Register destination) {
+ Ld(destination, EntryFromBuiltinIndexAsOperand(builtin_index));
+}
+
+MemOperand TurboAssembler::EntryFromBuiltinIndexAsOperand(
+ Builtins::Name builtin_index) {
+ DCHECK(root_array_available());
+ return MemOperand(kRootRegister,
+ IsolateData::builtin_entry_slot_offset(builtin_index));
+}
+
void TurboAssembler::PatchAndJump(Address target) {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
@@ -3115,16 +3234,28 @@ void TurboAssembler::Ret(Condition cond, Register rs, const Operand& rt) {
}
}
+void TurboAssembler::GenPCRelativeJump(Register rd, int64_t imm32) {
+ DCHECK(is_int32(imm32));
+ int32_t Hi20 = (((int32_t)imm32 + 0x800) >> 12);
+ int32_t Lo12 = (int32_t)imm32 << 20 >> 20;
+ auipc(rd, Hi20); // Read PC + Hi20 into scratch.
+ jr(rd, Lo12); // jump PC + Hi20 + Lo12
+}
+
+void TurboAssembler::GenPCRelativeJumpAndLink(Register rd, int64_t imm32) {
+ DCHECK(is_int32(imm32));
+ int32_t Hi20 = (((int32_t)imm32 + 0x800) >> 12);
+ int32_t Lo12 = (int32_t)imm32 << 20 >> 20;
+ auipc(rd, Hi20); // Read PC + Hi20 into scratch.
+ jalr(rd, Lo12); // jump PC + Hi20 + Lo12
+}
+
void TurboAssembler::BranchLong(Label* L) {
// Generate position independent long branch.
BlockTrampolinePoolScope block_trampoline_pool(this);
int64_t imm64;
imm64 = branch_long_offset(L);
- DCHECK(is_int32(imm64));
- int32_t Hi20 = (((int32_t)imm64 + 0x800) >> 12);
- int32_t Lo12 = (int32_t)imm64 << 20 >> 20;
- auipc(t6, Hi20); // Read PC + Hi20 into scratch.
- jr(t6, Lo12); // jump PC + Hi20 + Lo12
+ GenPCRelativeJump(t6, imm64);
EmitConstPoolWithJumpIfNeeded();
}
@@ -3133,11 +3264,7 @@ void TurboAssembler::BranchAndLinkLong(Label* L) {
BlockTrampolinePoolScope block_trampoline_pool(this);
int64_t imm64;
imm64 = branch_long_offset(L);
- DCHECK(is_int32(imm64));
- int32_t Hi20 = (((int32_t)imm64 + 0x800) >> 12);
- int32_t Lo12 = (int32_t)imm64 << 20 >> 20;
- auipc(t6, Hi20); // Read PC + Hi20 into scratch.
- jalr(t6, Lo12); // jump PC + Hi20 + Lo12 and read PC + 4 to ra
+ GenPCRelativeJumpAndLink(t6, imm64);
}
void TurboAssembler::DropAndRet(int drop) {
@@ -3251,14 +3378,6 @@ void TurboAssembler::Push(Handle<HeapObject> handle) {
push(scratch);
}
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- li(a1, ExternalReference::debug_restart_fp_address(isolate()));
- Ld(a1, MemOperand(a1));
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
- ne, a1, Operand(zero_reg));
-}
-
// ---------------------------------------------------------------------------
// Exception handling.
@@ -3294,16 +3413,10 @@ void MacroAssembler::PopStackHandler() {
void TurboAssembler::FPUCanonicalizeNaN(const DoubleRegister dst,
const DoubleRegister src) {
- UseScratchRegisterScope temps(this);
- Register scratch = temps.Acquire();
- Label NotNaN;
-
- fmv_d(dst, src);
- feq_d(scratch, src, src);
- bne(scratch, zero_reg, &NotNaN);
- RV_li(scratch, 0x7ff8000000000000ULL); // This is the canonical NaN
- fmv_d_x(dst, scratch);
- bind(&NotNaN);
+ // Subtracting 0.0 preserves all inputs except for signalling NaNs, which
+ // become quiet NaNs. We use fsub rather than fadd because fsub preserves -0.0
+ // inputs: -0.0 + 0.0 = 0.0, but -0.0 - 0.0 = -0.0.
+ fsub_d(dst, src, kDoubleRegZero);
}
void TurboAssembler::MovFromFloatResult(const DoubleRegister dst) {
@@ -3414,7 +3527,7 @@ void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch1,
void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count,
- Label* done, InvokeFlag flag) {
+ Label* done, InvokeType type) {
Label regular_invoke;
// a0: actual arguments count
@@ -3524,9 +3637,9 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target,
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, a1);
DCHECK_IMPLIES(new_target.is_valid(), new_target == a3);
@@ -3540,17 +3653,19 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// We call indirectly through the code field in the function to
// allow recompilation to take effect without changing any of the
// call sites.
Register code = kJavaScriptCallCodeStartRegister;
Ld(code, FieldMemOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- CallCodeObject(code);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- JumpCodeObject(code);
+ switch (type) {
+ case InvokeType::kCall:
+ CallCodeObject(code);
+ break;
+ case InvokeType::kJump:
+ JumpCodeObject(code);
+ break;
}
// Continue here if InvokePrologue does handle the invocation due to
@@ -3560,9 +3675,9 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
void MacroAssembler::InvokeFunctionWithNewTarget(
Register function, Register new_target, Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in a1.
DCHECK_EQ(function, a1);
@@ -3576,15 +3691,15 @@ void MacroAssembler::InvokeFunctionWithNewTarget(
SharedFunctionInfo::kFormalParameterCountOffset));
InvokeFunctionCode(a1, new_target, expected_parameter_count,
- actual_parameter_count, flag);
+ actual_parameter_count, type);
}
void MacroAssembler::InvokeFunction(Register function,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in a1.
DCHECK_EQ(function, a1);
@@ -3593,7 +3708,7 @@ void MacroAssembler::InvokeFunction(Register function,
Ld(cp, FieldMemOperand(a1, JSFunction::kContextOffset));
InvokeFunctionCode(a1, no_reg, expected_parameter_count,
- actual_parameter_count, flag);
+ actual_parameter_count, type);
}
// ---------------------------------------------------------------------------
@@ -3734,15 +3849,15 @@ void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) {
void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
bool builtin_exit_frame) {
PrepareCEntryFunction(builtin);
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET, al, zero_reg, Operand(zero_reg));
}
void MacroAssembler::JumpToInstructionStream(Address entry) {
// Ld a Address from a constant pool.
// Record a value into constant pool.
- if (FLAG_disable_riscv_constant_pool) {
+ if (!FLAG_riscv_constant_pool) {
li(kOffHeapTrampolineRegister, Operand(entry, RelocInfo::OFF_HEAP_TARGET));
} else {
RecordEntry(entry, RelocInfo::OFF_HEAP_TARGET);
@@ -3795,7 +3910,7 @@ void TurboAssembler::DebugBreak() { stop(); }
void TurboAssembler::Assert(Condition cc, AbortReason reason, Register rs,
Operand rt) {
- if (emit_debug_code()) Check(cc, reason, rs, rt);
+ if (FLAG_debug_code) Check(cc, reason, rs, rt);
}
void TurboAssembler::Check(Condition cc, AbortReason reason, Register rs,
@@ -3810,11 +3925,11 @@ void TurboAssembler::Check(Condition cc, AbortReason reason, Register rs,
void TurboAssembler::Abort(AbortReason reason) {
Label abort_start;
bind(&abort_start);
-#ifdef DEBUG
- const char* msg = GetAbortReason(reason);
- RecordComment("Abort message: ");
- RecordComment(msg);
-#endif
+ if (FLAG_code_comments) {
+ const char* msg = GetAbortReason(reason);
+ RecordComment("Abort message: ");
+ RecordComment(msg);
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
@@ -3882,19 +3997,12 @@ void TurboAssembler::EnterFrame(StackFrame::Type type) {
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
BlockTrampolinePoolScope block_trampoline_pool(this);
- int stack_offset = -3 * kPointerSize;
- const int fp_offset = 1 * kPointerSize;
- addi(sp, sp, stack_offset);
- stack_offset = -stack_offset - kPointerSize;
- Sd(ra, MemOperand(sp, stack_offset));
- stack_offset -= kPointerSize;
- Sd(fp, MemOperand(sp, stack_offset));
- stack_offset -= kPointerSize;
- li(scratch, Operand(StackFrame::TypeToMarker(type)));
- Sd(scratch, MemOperand(sp, stack_offset));
- // Adjust FP to point to saved FP.
- DCHECK_EQ(stack_offset, 0);
- Add64(fp, sp, Operand(fp_offset));
+ Push(ra, fp);
+ Move(fp, sp);
+ if (!StackFrame::IsJavaScript(type)) {
+ li(scratch, Operand(StackFrame::TypeToMarker(type)));
+ Push(scratch);
+ }
}
void TurboAssembler::LeaveFrame(StackFrame::Type type) {
@@ -3935,7 +4043,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
// Set up new frame pointer.
addi(fp, sp, ExitFrameConstants::kFixedFrameSizeFromFp);
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Sd(zero_reg, MemOperand(fp, ExitFrameConstants::kSPOffset));
}
@@ -4011,11 +4119,12 @@ void MacroAssembler::LeaveExitFrame(bool save_doubles, Register argument_count,
ExternalReference::Create(IsolateAddressId::kContextAddress, isolate()));
Ld(cp, MemOperand(scratch));
-#ifdef DEBUG
- li(scratch,
- ExternalReference::Create(IsolateAddressId::kContextAddress, isolate()));
- Sd(a3, MemOperand(scratch));
-#endif
+ if (FLAG_debug_code) {
+ UseScratchRegisterScope temp(this);
+ Register scratch2 = temp.Acquire();
+ li(scratch2, Operand(Context::kInvalidContext));
+ Sd(scratch2, MemOperand(scratch));
+ }
// Pop the arguments, restore registers, and return.
mv(sp, fp); // Respect ABI stack constraint.
@@ -4026,7 +4135,7 @@ void MacroAssembler::LeaveExitFrame(bool save_doubles, Register argument_count,
if (argument_count_is_length) {
add(sp, sp, argument_count);
} else {
- CalcScaledAddress(sp, sp, argument_count, kPointerSizeLog2, scratch);
+ CalcScaledAddress(sp, sp, argument_count, kPointerSizeLog2);
}
}
@@ -4054,7 +4163,7 @@ int TurboAssembler::ActivationFrameAlignment() {
}
void MacroAssembler::AssertStackIsAligned() {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
const int frame_alignment = ActivationFrameAlignment();
const int frame_alignment_mask = frame_alignment - 1;
@@ -4084,22 +4193,24 @@ void TurboAssembler::SmiUntag(Register dst, const MemOperand& src) {
}
}
-void TurboAssembler::JumpIfSmi(Register value, Label* smi_label,
- Register scratch) {
+void TurboAssembler::JumpIfSmi(Register value, Label* smi_label) {
DCHECK_EQ(0, kSmiTag);
+ UseScratchRegisterScope temps(this);
+ Register scratch = temps.Acquire();
andi(scratch, value, kSmiTagMask);
Branch(smi_label, eq, scratch, Operand(zero_reg));
}
-void MacroAssembler::JumpIfNotSmi(Register value, Label* not_smi_label,
- Register scratch) {
+void MacroAssembler::JumpIfNotSmi(Register value, Label* not_smi_label) {
+ UseScratchRegisterScope temps(this);
+ Register scratch = temps.Acquire();
DCHECK_EQ(0, kSmiTag);
andi(scratch, value, kSmiTagMask);
Branch(not_smi_label, ne, scratch, Operand(zero_reg));
}
void MacroAssembler::AssertNotSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
DCHECK(object != kScratchReg);
andi(kScratchReg, object, kSmiTagMask);
@@ -4108,7 +4219,7 @@ void MacroAssembler::AssertNotSmi(Register object) {
}
void MacroAssembler::AssertSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
DCHECK(object != kScratchReg);
andi(kScratchReg, object, kSmiTagMask);
@@ -4117,7 +4228,7 @@ void MacroAssembler::AssertSmi(Register object) {
}
void MacroAssembler::AssertConstructor(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
DCHECK(object != kScratchReg);
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
@@ -4134,7 +4245,7 @@ void MacroAssembler::AssertConstructor(Register object) {
}
void MacroAssembler::AssertFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
DCHECK(object != kScratchReg);
@@ -4151,7 +4262,7 @@ void MacroAssembler::AssertFunction(Register object) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
DCHECK(object != kScratchReg);
@@ -4165,7 +4276,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
BlockTrampolinePoolScope block_trampoline_pool(this);
STATIC_ASSERT(kSmiTag == 0);
DCHECK(object != kScratchReg);
@@ -4193,7 +4304,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done_checking;
AssertNotSmi(object);
LoadRoot(scratch, RootIndex::kUndefinedValue);
@@ -4229,11 +4340,11 @@ void TurboAssembler::FloatMinMaxHelper(FPURegister dst, FPURegister src1,
UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire();
if (std::is_same<float, F_TYPE>::value) {
- CompareIsNanF32(scratch, src1, src2);
+ CompareIsNotNanF32(scratch, src1, src2);
} else {
- CompareIsNanF64(scratch, src1, src2);
+ CompareIsNotNanF64(scratch, src1, src2);
}
- BranchTrueF(scratch, &nan);
+ BranchFalseF(scratch, &nan);
if (kind == MaxMinKind::kMax) {
if (std::is_same<float, F_TYPE>::value) {
@@ -4330,11 +4441,9 @@ void TurboAssembler::PrepareCallCFunction(int num_reg_arguments,
void TurboAssembler::CallCFunction(ExternalReference function,
int num_reg_arguments,
int num_double_arguments) {
- UseScratchRegisterScope temps(this);
- Register scratch = temps.Acquire();
BlockTrampolinePoolScope block_trampoline_pool(this);
- li(scratch, function);
- CallCFunctionHelper(scratch, num_reg_arguments, num_double_arguments);
+ li(t6, function);
+ CallCFunctionHelper(t6, num_reg_arguments, num_double_arguments);
}
void TurboAssembler::CallCFunction(Register function, int num_reg_arguments,
@@ -4363,7 +4472,7 @@ void TurboAssembler::CallCFunctionHelper(Register function,
// PrepareCallCFunction.
#if V8_HOST_ARCH_RISCV64
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
int frame_alignment = base::OS::ActivationFrameAlignment();
int frame_alignment_mask = frame_alignment - 1;
if (frame_alignment > kPointerSize) {
@@ -4387,12 +4496,9 @@ void TurboAssembler::CallCFunctionHelper(Register function,
// allow preemption, so the return address in the link register
// stays correct.
{
- UseScratchRegisterScope temps(this);
- Register func_scratch = temps.Acquire();
- BlockTrampolinePoolScope block_trampoline_pool(this);
- if (function != func_scratch) {
- mv(func_scratch, function);
- function = func_scratch;
+ if (function != t6) {
+ mv(t6, function);
+ function = t6;
}
// Save the frame pointer and PC so that the stack layout remains
@@ -4401,7 +4507,6 @@ void TurboAssembler::CallCFunctionHelper(Register function,
// 't' registers are caller-saved so this is safe as a scratch register.
Register pc_scratch = t1;
Register scratch = t2;
- DCHECK(!AreAliased(pc_scratch, scratch, function));
auipc(pc_scratch, 0);
// TODO(RISCV): Does this need an offset? It seems like this should be the
@@ -4494,12 +4599,10 @@ void TurboAssembler::ResetSpeculationPoisonRegister() {
void TurboAssembler::CallForDeoptimization(Builtins::Name target, int,
Label* exit, DeoptimizeKind kind,
Label* ret, Label*) {
- UseScratchRegisterScope temps(this);
BlockTrampolinePoolScope block_trampoline_pool(this);
- Register scratch = temps.Acquire();
- Ld(scratch,
+ Ld(t6,
MemOperand(kRootRegister, IsolateData::builtin_entry_slot_offset(target)));
- Call(scratch);
+ Call(t6);
DCHECK_EQ(SizeOfCodeGeneratedSince(exit),
(kind == DeoptimizeKind::kLazy)
? Deoptimizer::kLazyDeoptExitSize
diff --git a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h
index b260f1c200..81e5565606 100644
--- a/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h
+++ b/deps/v8/src/codegen/riscv64/macro-assembler-riscv64.h
@@ -12,6 +12,7 @@
#include "src/codegen/assembler.h"
#include "src/codegen/riscv64/assembler-riscv64.h"
#include "src/common/globals.h"
+#include "src/objects/tagged-index.h"
namespace v8 {
namespace internal {
@@ -53,8 +54,6 @@ enum LiFlags {
ADDRESS_LOAD = 2
};
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
enum RAStatus { kRAHasNotBeenSaved, kRAHasBeenSaved };
Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2 = no_reg,
@@ -166,6 +165,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
// Compare double, if any operand is NaN, result is false except for NE
void CompareF64(Register rd, FPUCondition cc, FPURegister cmp1,
FPURegister cmp2);
+ void CompareIsNotNanF32(Register rd, FPURegister cmp1, FPURegister cmp2);
+ void CompareIsNotNanF64(Register rd, FPURegister cmp1, FPURegister cmp2);
void CompareIsNanF32(Register rd, FPURegister cmp1, FPURegister cmp2);
void CompareIsNanF64(Register rd, FPURegister cmp1, FPURegister cmp2);
@@ -187,6 +188,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
li(rd, Operand(j), mode);
}
+ inline void Move(Register output, MemOperand operand) { Ld(output, operand); }
+
void li(Register dst, Handle<HeapObject> value, LiFlags mode = OPTIMIZE_SIZE);
void li(Register dst, ExternalReference value, LiFlags mode = OPTIMIZE_SIZE);
void li(Register dst, const StringConstantBase* string,
@@ -197,6 +200,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void LoadRootRegisterOffset(Register destination, intptr_t offset) override;
void LoadRootRelative(Register destination, int32_t offset) override;
+ inline void GenPCRelativeJump(Register rd, int64_t imm32);
+ inline void GenPCRelativeJumpAndLink(Register rd, int64_t imm32);
// Jump, Call, and Ret pseudo instructions implementing inter-working.
#define COND_ARGS \
Condition cond = al, Register rs = zero_reg, \
@@ -223,7 +228,20 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
// Load the builtin given by the Smi in |builtin_index| into the same
// register.
void LoadEntryFromBuiltinIndex(Register builtin_index);
+ void LoadEntryFromBuiltinIndex(Builtins::Name builtin_index,
+ Register destination);
+ MemOperand EntryFromBuiltinIndexAsOperand(Builtins::Name builtin_index);
void CallBuiltinByIndex(Register builtin_index) override;
+ void CallBuiltin(Builtins::Name builtin) {
+ // TODO(11527): drop the int overload in favour of the Builtins::Name one.
+ return CallBuiltin(static_cast<int>(builtin));
+ }
+ void CallBuiltin(int builtin_index);
+ void TailCallBuiltin(Builtins::Name builtin) {
+ // TODO(11527): drop the int overload in favour of the Builtins::Name one.
+ return TailCallBuiltin(static_cast<int>(builtin));
+ }
+ void TailCallBuiltin(int builtin_index);
void LoadCodeObjectEntry(Register destination, Register code_object) override;
void CallCodeObject(Register code_object) override;
@@ -799,7 +817,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void Ceil_s_s(FPURegister fd, FPURegister fs, FPURegister fpu_scratch);
// Jump the register contains a smi.
- void JumpIfSmi(Register value, Label* smi_label, Register scratch = t3);
+ void JumpIfSmi(Register value, Label* smi_label);
void JumpIfEqual(Register a, int32_t b, Label* dest) {
Branch(dest, eq, a, Operand(b));
@@ -816,8 +834,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
static int ActivationFrameAlignment();
// Calculated scaled address (rd) as rt + rs << sa
- void CalcScaledAddress(Register rd, Register rs, Register rt, uint8_t sa,
- Register scratch = t3);
+ void CalcScaledAddress(Register rd, Register rs, Register rt, uint8_t sa);
// Compute the start of the generated instruction stream from the current PC.
// This is an alternative to embedding the {CodeObject} handle as a reference.
@@ -953,8 +970,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, Register scratch,
RAStatus ra_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For a given |object| notify the garbage collector that the slot |address|
// has been written. |value| is the object being stored. The value and
@@ -962,16 +979,16 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWrite(
Register object, Register address, Register value, RAStatus ra_status,
SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// void Pref(int32_t hint, const MemOperand& rs);
// ---------------------------------------------------------------------------
// Pseudo-instructions.
- void LoadWordPair(Register rd, const MemOperand& rs, Register scratch = t3);
- void StoreWordPair(Register rd, const MemOperand& rs, Register scratch = t3);
+ void LoadWordPair(Register rd, const MemOperand& rs);
+ void StoreWordPair(Register rd, const MemOperand& rs);
void Madd_s(FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft);
void Madd_d(FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft);
@@ -1011,7 +1028,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function code by either calling or jumping.
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// On function call, call into the debugger if necessary.
void CheckDebugHook(Register fun, Register new_target,
@@ -1022,12 +1039,9 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// current context to the context in the function before invoking.
void InvokeFunctionWithNewTarget(Register function, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag);
+ InvokeType type);
void InvokeFunction(Register function, Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
-
- // Frame restart support.
- void MaybeDropFrames();
+ Register actual_parameter_count, InvokeType type);
// Exception handling.
@@ -1051,18 +1065,18 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Call a runtime routine.
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
}
@@ -1131,8 +1145,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
}
// Jump if the register contains a non-smi.
- void JumpIfNotSmi(Register value, Label* not_smi_label,
- Register scratch = t3);
+ void JumpIfNotSmi(Register value, Label* not_smi_label);
// Abort execution if argument is a smi, enabled via --debug-code.
void AssertNotSmi(Register object);
@@ -1170,7 +1183,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Helper functions for generating invokes.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
// Compute memory operands for safepoint stack slots.
static int SafepointRegisterStackIndex(int reg_code);
diff --git a/deps/v8/src/codegen/riscv64/register-riscv64.h b/deps/v8/src/codegen/riscv64/register-riscv64.h
index b97594becd..4aacad611d 100644
--- a/deps/v8/src/codegen/riscv64/register-riscv64.h
+++ b/deps/v8/src/codegen/riscv64/register-riscv64.h
@@ -337,7 +337,7 @@ constexpr Register kJavaScriptCallTargetRegister = kJSFunctionRegister;
constexpr Register kJavaScriptCallNewTargetRegister = a3;
constexpr Register kJavaScriptCallExtraArg1Register = a2;
-constexpr Register kOffHeapTrampolineRegister = t3;
+constexpr Register kOffHeapTrampolineRegister = t6;
constexpr Register kRuntimeCallFunctionRegister = a1;
constexpr Register kRuntimeCallArgCountRegister = a0;
constexpr Register kRuntimeCallArgvRegister = a2;
diff --git a/deps/v8/src/codegen/s390/assembler-s390.cc b/deps/v8/src/codegen/s390/assembler-s390.cc
index dd5f59bc0b..da51395dfd 100644
--- a/deps/v8/src/codegen/s390/assembler-s390.cc
+++ b/deps/v8/src/codegen/s390/assembler-s390.cc
@@ -160,7 +160,11 @@ static bool supportsSTFLE() {
}
bool CpuFeatures::SupportsWasmSimd128() {
+#if V8_ENABLE_WEBASSEMBLY
return CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1);
+#else
+ return false;
+#endif // V8_ENABLE_WEBASSEMBLY
}
void CpuFeatures::ProbeImpl(bool cross_compile) {
diff --git a/deps/v8/src/codegen/s390/interface-descriptors-s390-inl.h b/deps/v8/src/codegen/s390/interface-descriptors-s390-inl.h
new file mode 100644
index 0000000000..d672c4354d
--- /dev/null
+++ b/deps/v8/src/codegen/s390/interface-descriptors-s390-inl.h
@@ -0,0 +1,256 @@
+// Copyright 2021 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_CODEGEN_S390_INTERFACE_DESCRIPTORS_S390_INL_H_
+#define V8_CODEGEN_S390_INTERFACE_DESCRIPTORS_S390_INL_H_
+
+#if V8_TARGET_ARCH_S390
+
+#include "src/codegen/interface-descriptors.h"
+#include "src/execution/frames.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(r2, r3, r4, r5, r6);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(r2, r3, r4, r5, r6, kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(r2, r3, r4, r5, cp);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(r2, r3, r4, r5, r6, kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return r3; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return r4; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return r2; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return r5; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return r6;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return r3; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return r4; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return r2; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return r6; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() { return r5; }
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return r7; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return r2; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return r5; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return r2; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return r5; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ // TODO(v8:11421): Implement on this platform.
+ return r5;
+}
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() {
+ // TODO(v8:11421): Implement on this platform.
+ return r6;
+}
+
+// static
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return r2; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(r5); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // r2 : number of arguments
+ // r3 : the target to call
+ return RegisterArray(r3, r2);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // r2 : number of arguments (on the stack, not including receiver)
+ // r3 : the target to call
+ // r6 : arguments list length (untagged)
+ // r4 : arguments list (FixedArray)
+ return RegisterArray(r3, r2, r6, r4);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // r2 : number of arguments
+ // r4 : start index (to support rest parameters)
+ // r3 : the target to call
+ return RegisterArray(r3, r2, r4);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // r3 : function template info
+ // r4 : number of arguments (on the stack, not including receiver)
+ return RegisterArray(r3, r4);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // r2: number of arguments (on the stack, not including receiver)
+ // r3 : the target to call
+ // r4 : the object to spread
+ return RegisterArray(r3, r2, r4);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // r3 : the target to call
+ // r4 : the arguments list
+ return RegisterArray(r3, r4);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // r2 : number of arguments (on the stack, not including receiver)
+ // r3 : the target to call
+ // r5 : the new target
+ // r6 : arguments list length (untagged)
+ // r4 : arguments list (FixedArray)
+ return RegisterArray(r3, r5, r2, r6, r4);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // r2 : number of arguments
+ // r5 : the new target
+ // r4 : start index (to support rest parameters)
+ // r3 : the target to call
+ return RegisterArray(r3, r5, r2, r4);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // r2 : number of arguments (on the stack, not including receiver)
+ // r3 : the target to call
+ // r5 : the new target
+ // r4 : the object to spread
+ return RegisterArray(r3, r5, r2, r4);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // r3 : the target to call
+ // r5 : the new target
+ // r4 : the arguments list
+ return RegisterArray(r3, r5, r4);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // r2 : number of arguments
+ // r3 : the target to call
+ // r5 : the new target
+ // r4 : allocation site or undefined
+ return RegisterArray(r3, r5, r2, r4);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(r3); }
+
+// static
+constexpr auto CompareDescriptor::registers() { return RegisterArray(r3, r2); }
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ // TODO(v8:11421): Implement on this platform.
+ return DefaultRegisterArray();
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() { return RegisterArray(r3, r2); }
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ // TODO(v8:11421): Implement on this platform.
+ return DefaultRegisterArray();
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ return RegisterArray(r3, // kApiFunctionAddress
+ r4, // kArgc
+ r5, // kCallData
+ r2); // kHolder
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ return RegisterArray(r2, // argument count (not including receiver)
+ r4, // address of first argument
+ r3); // the target callable to be call
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ return RegisterArray(
+ r2, // argument count (not including receiver)
+ r6, // address of the first argument
+ r3, // constructor to call
+ r5, // new target
+ r4); // allocation site feedback if available, undefined otherwise
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ return RegisterArray(r2, // the value to pass to the generator
+ r3); // the JSGeneratorObject to resume
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray(r2, r3);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_S390
+
+#endif // V8_CODEGEN_S390_INTERFACE_DESCRIPTORS_S390_INL_H_
diff --git a/deps/v8/src/codegen/s390/interface-descriptors-s390.cc b/deps/v8/src/codegen/s390/interface-descriptors-s390.cc
deleted file mode 100644
index 9a9ecdcb8b..0000000000
--- a/deps/v8/src/codegen/s390/interface-descriptors-s390.cc
+++ /dev/null
@@ -1,306 +0,0 @@
-// Copyright 2015 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.
-
-#if V8_TARGET_ARCH_S390
-
-#include "src/codegen/interface-descriptors.h"
-
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return cp; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- const Register default_stub_registers[] = {r2, r3, r4, r5, r6};
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {r2, r3, r4, r5, r6};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {r2, r3, r4, r5, cp};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {r2, r3, r4, r5, r6};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return r3; }
-const Register LoadDescriptor::NameRegister() { return r4; }
-const Register LoadDescriptor::SlotRegister() { return r2; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return r5; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return r6;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return r3; }
-const Register StoreDescriptor::NameRegister() { return r4; }
-const Register StoreDescriptor::ValueRegister() { return r2; }
-const Register StoreDescriptor::SlotRegister() { return r6; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return r5; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return r6; }
-const Register StoreTransitionDescriptor::VectorRegister() { return r5; }
-const Register StoreTransitionDescriptor::MapRegister() { return r7; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return r2; }
-const Register ApiGetterDescriptor::CallbackRegister() { return r5; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return r2; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return r5; }
-
-const Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
- // TODO(v8:11421): Implement on this platform.
- UNREACHABLE();
-}
-const Register BaselineLeaveFrameDescriptor::WeightRegister() {
- // TODO(v8:11421): Implement on this platform.
- UNREACHABLE();
-}
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return r2; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r5};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r2 : number of arguments
- // r3 : the target to call
- Register registers[] = {r3, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r2 : number of arguments (on the stack, not including receiver)
- // r3 : the target to call
- // r6 : arguments list length (untagged)
- // r4 : arguments list (FixedArray)
- Register registers[] = {r3, r2, r6, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r2 : number of arguments
- // r4 : start index (to support rest parameters)
- // r3 : the target to call
- Register registers[] = {r3, r2, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : function template info
- // r4 : number of arguments (on the stack, not including receiver)
- Register registers[] = {r3, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r2 : number of arguments (on the stack, not including receiver)
- // r3 : the target to call
- // r4 : the object to spread
- Register registers[] = {r3, r2, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : the target to call
- // r4 : the arguments list
- Register registers[] = {r3, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r2 : number of arguments (on the stack, not including receiver)
- // r3 : the target to call
- // r5 : the new target
- // r6 : arguments list length (untagged)
- // r4 : arguments list (FixedArray)
- Register registers[] = {r3, r5, r2, r6, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r2 : number of arguments
- // r5 : the new target
- // r4 : start index (to support rest parameters)
- // r3 : the target to call
- Register registers[] = {r3, r5, r2, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r2 : number of arguments (on the stack, not including receiver)
- // r3 : the target to call
- // r5 : the new target
- // r4 : the object to spread
- Register registers[] = {r3, r5, r2, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r3 : the target to call
- // r5 : the new target
- // r4 : the arguments list
- Register registers[] = {r3, r5, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // r2 : number of arguments
- // r3 : the target to call
- // r5 : the new target
- // r4 : allocation site or undefined
- Register registers[] = {r3, r5, r2, r4};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r3, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r3, r2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // TODO(v8:11421): Implement on this platform.
- InitializePlatformUnimplemented(data, kParameterCount);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r3, // kApiFunctionAddress
- r4, // kArgc
- r5, // kCallData
- r2, // kHolder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r2, // argument count (not including receiver)
- r4, // address of first argument
- r3 // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r2, // argument count (not including receiver)
- r6, // address of the first argument
- r3, // constructor to call
- r5, // new target
- r4, // allocation site feedback if available, undefined otherwise
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r2, // the value to pass to the generator
- r3 // the JSGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- r3, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {r2, r3};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_S390
diff --git a/deps/v8/src/codegen/s390/macro-assembler-s390.cc b/deps/v8/src/codegen/s390/macro-assembler-s390.cc
index be5798d8d4..de25a93d8b 100644
--- a/deps/v8/src/codegen/s390/macro-assembler-s390.cc
+++ b/deps/v8/src/codegen/s390/macro-assembler-s390.cc
@@ -12,6 +12,7 @@
#include "src/codegen/callable.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/external-reference-table.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
#include "src/codegen/register-configuration.h"
#include "src/debug/debug.h"
@@ -40,6 +41,12 @@ namespace internal {
void TurboAssembler::DoubleMax(DoubleRegister result_reg,
DoubleRegister left_reg,
DoubleRegister right_reg) {
+ if (CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1)) {
+ vfmax(result_reg, left_reg, right_reg, Condition(1), Condition(8),
+ Condition(3));
+ return;
+ }
+
Label check_zero, return_left, return_right, return_nan, done;
cdbr(left_reg, right_reg);
bunordered(&return_nan, Label::kNear);
@@ -80,6 +87,11 @@ void TurboAssembler::DoubleMax(DoubleRegister result_reg,
void TurboAssembler::DoubleMin(DoubleRegister result_reg,
DoubleRegister left_reg,
DoubleRegister right_reg) {
+ if (CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1)) {
+ vfmin(result_reg, left_reg, right_reg, Condition(1), Condition(8),
+ Condition(3));
+ return;
+ }
Label check_zero, return_left, return_right, return_nan, done;
cdbr(left_reg, right_reg);
bunordered(&return_nan, Label::kNear);
@@ -126,6 +138,11 @@ void TurboAssembler::DoubleMin(DoubleRegister result_reg,
void TurboAssembler::FloatMax(DoubleRegister result_reg,
DoubleRegister left_reg,
DoubleRegister right_reg) {
+ if (CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1)) {
+ vfmax(result_reg, left_reg, right_reg, Condition(1), Condition(8),
+ Condition(2));
+ return;
+ }
Label check_zero, return_left, return_right, return_nan, done;
cebr(left_reg, right_reg);
bunordered(&return_nan, Label::kNear);
@@ -166,6 +183,12 @@ void TurboAssembler::FloatMax(DoubleRegister result_reg,
void TurboAssembler::FloatMin(DoubleRegister result_reg,
DoubleRegister left_reg,
DoubleRegister right_reg) {
+ if (CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1)) {
+ vfmin(result_reg, left_reg, right_reg, Condition(1), Condition(8),
+ Condition(2));
+ return;
+ }
+
Label check_zero, return_left, return_right, return_nan, done;
cebr(left_reg, right_reg);
bunordered(&return_nan, Label::kNear);
@@ -208,6 +231,39 @@ void TurboAssembler::FloatMin(DoubleRegister result_reg,
}
bind(&done);
}
+
+void TurboAssembler::CeilF32(DoubleRegister dst, DoubleRegister src) {
+ fiebra(ROUND_TOWARD_POS_INF, dst, src);
+}
+
+void TurboAssembler::CeilF64(DoubleRegister dst, DoubleRegister src) {
+ fidbra(ROUND_TOWARD_POS_INF, dst, src);
+}
+
+void TurboAssembler::FloorF32(DoubleRegister dst, DoubleRegister src) {
+ fiebra(ROUND_TOWARD_NEG_INF, dst, src);
+}
+
+void TurboAssembler::FloorF64(DoubleRegister dst, DoubleRegister src) {
+ fidbra(ROUND_TOWARD_NEG_INF, dst, src);
+}
+
+void TurboAssembler::TruncF32(DoubleRegister dst, DoubleRegister src) {
+ fiebra(ROUND_TOWARD_0, dst, src);
+}
+
+void TurboAssembler::TruncF64(DoubleRegister dst, DoubleRegister src) {
+ fidbra(ROUND_TOWARD_0, dst, src);
+}
+
+void TurboAssembler::NearestIntF32(DoubleRegister dst, DoubleRegister src) {
+ fiebra(ROUND_TO_NEAREST_TO_EVEN, dst, src);
+}
+
+void TurboAssembler::NearestIntF64(DoubleRegister dst, DoubleRegister src) {
+ fidbra(ROUND_TO_NEAREST_TO_EVEN, dst, src);
+}
+
int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
Register exclusion1,
Register exclusion2,
@@ -227,7 +283,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
RegList list = kJSCallerSaved & ~exclusions;
bytes += NumRegs(list) * kSystemPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
bytes += NumRegs(kCallerSavedDoubles) * kDoubleSize;
}
@@ -252,7 +308,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
MultiPush(list);
bytes += NumRegs(list) * kSystemPointerSize;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPushDoubles(kCallerSavedDoubles);
bytes += NumRegs(kCallerSavedDoubles) * kDoubleSize;
}
@@ -263,7 +319,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
Register exclusion2, Register exclusion3) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
MultiPopDoubles(kCallerSavedDoubles);
bytes += NumRegs(kCallerSavedDoubles) * kDoubleSize;
}
@@ -759,7 +815,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -768,7 +824,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
DCHECK(IsAligned(offset, kTaggedSize));
lay(dst, MemOperand(object, offset - kHeapObjectTag));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label ok;
AndP(r0, dst, Operand(kTaggedSize - 1));
beq(&ok, Label::kNear);
@@ -777,13 +833,13 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, dst, value, lr_status, save_fp, remembered_set_action,
- OMIT_SMI_CHECK);
+ SmiCheck::kOmit);
bind(&done);
// Clobber clobbered input registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
mov(value, Operand(bit_cast<intptr_t>(kZapValue + 4)));
mov(dst, Operand(bit_cast<intptr_t>(kZapValue + 8)));
}
@@ -911,13 +967,13 @@ void MacroAssembler::RecordWrite(Register object, Register address,
RememberedSetAction remembered_set_action,
SmiCheck smi_check) {
DCHECK(object != value);
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
LoadTaggedPointerField(r0, MemOperand(address));
CmpS64(value, r0);
Check(eq, AbortReason::kWrongAddressOrValuePassedToRecordWrite);
}
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
@@ -926,7 +982,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// catch stores of smis and stores into the young generation.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -950,7 +1006,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// Clobber clobbered registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
mov(address, Operand(bit_cast<intptr_t>(kZapValue + 12)));
mov(value, Operand(bit_cast<intptr_t>(kZapValue + 16)));
}
@@ -1352,7 +1408,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
// Reserve room for saved entry sp.
lay(sp, MemOperand(fp, -ExitFrameConstants::kFixedFrameSizeFromFp));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
StoreU64(MemOperand(fp, ExitFrameConstants::kSPOffset), Operand::Zero(),
r1);
}
@@ -1537,7 +1593,7 @@ void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch,
void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count,
- Label* done, InvokeFlag flag) {
+ Label* done, InvokeType type) {
Label regular_invoke;
// r2: actual arguments count
@@ -1653,9 +1709,9 @@ void MacroAssembler::CheckDebugHook(Register fun, Register new_target,
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, r3);
DCHECK_IMPLIES(new_target.is_valid(), new_target == r5);
@@ -1669,18 +1725,20 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// We call indirectly through the code field in the function to
// allow recompilation to take effect without changing any of the
// call sites.
Register code = kJavaScriptCallCodeStartRegister;
LoadTaggedPointerField(code,
FieldMemOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- CallCodeObject(code);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- JumpCodeObject(code);
+ switch (type) {
+ case InvokeType::kCall:
+ CallCodeObject(code);
+ break;
+ case InvokeType::kJump:
+ JumpCodeObject(code);
+ break;
}
// Continue here if InvokePrologue does handle the invocation due to
// mismatched parameter counts.
@@ -1689,9 +1747,9 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
void MacroAssembler::InvokeFunctionWithNewTarget(
Register fun, Register new_target, Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in r3.
DCHECK_EQ(fun, r3);
@@ -1707,15 +1765,15 @@ void MacroAssembler::InvokeFunctionWithNewTarget(
SharedFunctionInfo::kFormalParameterCountOffset));
InvokeFunctionCode(fun, new_target, expected_reg, actual_parameter_count,
- flag);
+ type);
}
void MacroAssembler::InvokeFunction(Register function,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
// Contract with called JS functions requires that function is passed in r3.
DCHECK_EQ(function, r3);
@@ -1725,18 +1783,7 @@ void MacroAssembler::InvokeFunction(Register function,
FieldMemOperand(function, JSFunction::kContextOffset));
InvokeFunctionCode(r3, no_reg, expected_parameter_count,
- actual_parameter_count, flag);
-}
-
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- ExternalReference restart_fp =
- ExternalReference::debug_restart_fp_address(isolate());
- Move(r3, restart_fp);
- LoadU64(r3, MemOperand(r3));
- CmpS64(r3, Operand::Zero());
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
- ne);
+ actual_parameter_count, type);
}
void MacroAssembler::PushStackHandler() {
@@ -1904,8 +1951,8 @@ void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) {
void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
bool builtin_exit_frame) {
Move(r3, builtin);
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET);
}
@@ -1947,11 +1994,11 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value,
}
void TurboAssembler::Assert(Condition cond, AbortReason reason, CRegister cr) {
- if (emit_debug_code()) Check(cond, reason, cr);
+ if (FLAG_debug_code) Check(cond, reason, cr);
}
void TurboAssembler::AssertUnreachable(AbortReason reason) {
- if (emit_debug_code()) Abort(reason);
+ if (FLAG_debug_code) Abort(reason);
}
void TurboAssembler::Check(Condition cond, AbortReason reason, CRegister cr) {
@@ -1965,11 +2012,11 @@ void TurboAssembler::Check(Condition cond, AbortReason reason, CRegister cr) {
void TurboAssembler::Abort(AbortReason reason) {
Label abort_start;
bind(&abort_start);
-#ifdef DEBUG
- const char* msg = GetAbortReason(reason);
- RecordComment("Abort message: ");
- RecordComment(msg);
-#endif
+ if (FLAG_code_comments) {
+ const char* msg = GetAbortReason(reason);
+ RecordComment("Abort message: ");
+ RecordComment(msg);
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
@@ -2017,7 +2064,7 @@ void MacroAssembler::LoadNativeContextSlot(Register dst, int index) {
}
void MacroAssembler::AssertNotSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object);
Check(ne, AbortReason::kOperandIsASmi, cr0);
@@ -2025,7 +2072,7 @@ void MacroAssembler::AssertNotSmi(Register object) {
}
void MacroAssembler::AssertSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object);
Check(eq, AbortReason::kOperandIsNotASmi, cr0);
@@ -2033,7 +2080,7 @@ void MacroAssembler::AssertSmi(Register object) {
}
void MacroAssembler::AssertConstructor(Register object, Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object);
Check(ne, AbortReason::kOperandIsASmiAndNotAConstructor);
@@ -2045,7 +2092,7 @@ void MacroAssembler::AssertConstructor(Register object, Register scratch) {
}
void MacroAssembler::AssertFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object);
Check(ne, AbortReason::kOperandIsASmiAndNotAFunction, cr0);
@@ -2059,7 +2106,7 @@ void MacroAssembler::AssertFunction(Register object) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
STATIC_ASSERT(kSmiTag == 0);
TestIfSmi(object);
Check(ne, AbortReason::kOperandIsASmiAndNotABoundFunction, cr0);
@@ -2071,7 +2118,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
TestIfSmi(object);
Check(ne, AbortReason::kOperandIsASmiAndNotAGeneratorObject, cr0);
@@ -2101,7 +2148,7 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
Register scratch) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done_checking;
AssertNotSmi(object);
CompareRoot(object, RootIndex::kUndefinedValue);
diff --git a/deps/v8/src/codegen/s390/macro-assembler-s390.h b/deps/v8/src/codegen/s390/macro-assembler-s390.h
index f2719c3086..13d7ac696b 100644
--- a/deps/v8/src/codegen/s390/macro-assembler-s390.h
+++ b/deps/v8/src/codegen/s390/macro-assembler-s390.h
@@ -32,8 +32,6 @@ inline MemOperand FieldMemOperand(Register object, Register index, int offset) {
return MemOperand(object, index, offset - kHeapObjectTag);
}
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved };
Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2 = no_reg,
@@ -70,6 +68,15 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
DoubleRegister right_reg);
void FloatMin(DoubleRegister result_reg, DoubleRegister left_reg,
DoubleRegister right_reg);
+ void CeilF32(DoubleRegister dst, DoubleRegister src);
+ void CeilF64(DoubleRegister dst, DoubleRegister src);
+ void FloorF32(DoubleRegister dst, DoubleRegister src);
+ void FloorF64(DoubleRegister dst, DoubleRegister src);
+ void TruncF32(DoubleRegister dst, DoubleRegister src);
+ void TruncF64(DoubleRegister dst, DoubleRegister src);
+ void NearestIntF32(DoubleRegister dst, DoubleRegister src);
+ void NearestIntF64(DoubleRegister dst, DoubleRegister src);
+
void LoadFromConstantsTable(Register destination,
int constant_index) override;
void LoadRootRegisterOffset(Register destination, intptr_t offset) override;
@@ -769,9 +776,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
void ResetRoundingMode();
// These exist to provide portability between 32 and 64bit
- void LoadP(Register dst, const MemOperand& mem, Register scratch = no_reg) {
- LoadU64(dst, mem, scratch);
- }
void LoadMultipleP(Register dst1, Register dst2, const MemOperand& mem);
void StoreMultipleP(Register dst1, Register dst2, const MemOperand& mem);
void LoadMultipleW(Register dst1, Register dst2, const MemOperand& mem);
@@ -1094,22 +1098,22 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
}
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
void CallRuntimeSaveDoubles(Runtime::FunctionId fid) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
- CallRuntime(function, function->nargs, kSaveFPRegs);
+ CallRuntime(function, function->nargs, SaveFPRegsMode::kSave);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
}
@@ -1220,7 +1224,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function code by either calling or jumping.
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// On function call, call into the debugger if necessary.
void CheckDebugHook(Register fun, Register new_target,
@@ -1231,12 +1235,9 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// current context to the context in the function before invoking.
void InvokeFunctionWithNewTarget(Register function, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag);
+ InvokeType type);
void InvokeFunction(Register function, Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
-
- // Frame restart support
- void MaybeDropFrames();
+ Register actual_parameter_count, InvokeType type);
// Exception handling
@@ -1353,8 +1354,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, Register scratch,
LinkRegisterStatus lr_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For a given |object| notify the garbage collector that the slot |address|
// has been written. |value| is the object being stored. The value and
@@ -1362,15 +1363,15 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWrite(
Register object, Register address, Register value,
LinkRegisterStatus lr_status, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
private:
static const int kSmiShift = kSmiTagSize + kSmiShiftSize;
// Helper functions for generating invokes.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
DISALLOW_IMPLICIT_CONSTRUCTORS(MacroAssembler);
};
diff --git a/deps/v8/src/codegen/safepoint-table.cc b/deps/v8/src/codegen/safepoint-table.cc
index 58fb6ed9e1..67a17d5f0e 100644
--- a/deps/v8/src/codegen/safepoint-table.cc
+++ b/deps/v8/src/codegen/safepoint-table.cc
@@ -20,20 +20,18 @@ namespace internal {
SafepointTable::SafepointTable(Isolate* isolate, Address pc, Code code)
: SafepointTable(code.InstructionStart(isolate, pc),
- code.SafepointTableAddress(), code.stack_slots(), true) {}
+ code.SafepointTableAddress(), true) {}
#if V8_ENABLE_WEBASSEMBLY
SafepointTable::SafepointTable(const wasm::WasmCode* code)
: SafepointTable(code->instruction_start(),
code->instruction_start() + code->safepoint_table_offset(),
- code->stack_slots(), false) {}
+ false) {}
#endif // V8_ENABLE_WEBASSEMBLY
SafepointTable::SafepointTable(Address instruction_start,
- Address safepoint_table_address,
- uint32_t stack_slots, bool has_deopt)
+ Address safepoint_table_address, bool has_deopt)
: instruction_start_(instruction_start),
- stack_slots_(stack_slots),
has_deopt_(has_deopt),
safepoint_table_address_(safepoint_table_address),
length_(ReadLength(safepoint_table_address)),
@@ -69,27 +67,18 @@ SafepointEntry SafepointTable::FindEntry(Address pc) const {
UNREACHABLE();
}
-void SafepointTable::PrintEntry(unsigned index,
- std::ostream& os) const { // NOLINT
+void SafepointTable::PrintEntry(unsigned index, std::ostream& os) const {
disasm::NameConverter converter;
SafepointEntry entry = GetEntry(index);
uint8_t* bits = entry.bits();
// Print the stack slot bits.
if (entry_size_ > 0) {
- const int first = 0;
- int last = entry_size_ - 1;
- for (int i = first; i < last; i++) PrintBits(os, bits[i], kBitsPerByte);
- int last_bits = stack_slots_ - ((last - first) * kBitsPerByte);
- PrintBits(os, bits[last], last_bits);
- }
-}
-
-void SafepointTable::PrintBits(std::ostream& os, // NOLINT
- uint8_t byte, int digits) {
- DCHECK(digits >= 0 && digits <= kBitsPerByte);
- for (int i = 0; i < digits; i++) {
- os << (((byte & (1 << i)) == 0) ? "0" : "1");
+ for (uint32_t i = 0; i < entry_size_; ++i) {
+ for (int bit = 0; bit < kBitsPerByte; ++bit) {
+ os << ((bits[i] & (1 << bit)) ? "1" : "0");
+ }
+ }
}
}
@@ -122,6 +111,12 @@ int SafepointTableBuilder::UpdateDeoptimizationInfo(int pc, int trampoline,
void SafepointTableBuilder::Emit(Assembler* assembler, int bits_per_entry) {
RemoveDuplicates();
+ TrimEntries(&bits_per_entry);
+
+#if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_ARM64
+ // We cannot emit a const pool within the safepoint table.
+ Assembler::BlockConstPoolScope block_const_pool(assembler);
+#endif
// Make sure the safepoint table is properly aligned. Pad with nops.
assembler->Align(Code::kMetadataAlignment);
@@ -168,6 +163,7 @@ void SafepointTableBuilder::Emit(Assembler* assembler, int bits_per_entry) {
// Run through the indexes and build a bitmap.
for (int idx : *indexes) {
+ DCHECK_GT(bits_per_entry, idx);
int index = bits_per_entry - 1 - idx;
int byte_index = index >> kBitsPerByteLog2;
int bit_index = index & (kBitsPerByte - 1);
@@ -203,6 +199,28 @@ void SafepointTableBuilder::RemoveDuplicates() {
deoptimization_info_.front().pc = kMaxUInt32;
}
+void SafepointTableBuilder::TrimEntries(int* bits_per_entry) {
+ int min_index = *bits_per_entry;
+ if (min_index == 0) return; // Early exit: nothing to trim.
+
+ for (auto& info : deoptimization_info_) {
+ for (int idx : *info.stack_indexes) {
+ DCHECK_GT(*bits_per_entry, idx); // Validity check.
+ if (idx >= min_index) continue;
+ if (idx == 0) return; // Early exit: nothing to trim.
+ min_index = idx;
+ }
+ }
+
+ DCHECK_LT(0, min_index);
+ *bits_per_entry -= min_index;
+ for (auto& info : deoptimization_info_) {
+ for (int& idx : *info.stack_indexes) {
+ idx -= min_index;
+ }
+ }
+}
+
bool SafepointTableBuilder::IsIdenticalExceptForPc(
const DeoptimizationInfo& info1, const DeoptimizationInfo& info2) const {
if (info1.deopt_index != info2.deopt_index) return false;
diff --git a/deps/v8/src/codegen/safepoint-table.h b/deps/v8/src/codegen/safepoint-table.h
index 623b524698..07bbcaf9a0 100644
--- a/deps/v8/src/codegen/safepoint-table.h
+++ b/deps/v8/src/codegen/safepoint-table.h
@@ -5,6 +5,7 @@
#ifndef V8_CODEGEN_SAFEPOINT_TABLE_H_
#define V8_CODEGEN_SAFEPOINT_TABLE_H_
+#include "src/base/iterator.h"
#include "src/base/memory.h"
#include "src/common/assert-scope.h"
#include "src/utils/allocation.h"
@@ -21,11 +22,14 @@ class WasmCode;
class SafepointEntry {
public:
- SafepointEntry()
- : deopt_index_(0), bits_(nullptr), trampoline_pc_(kNoTrampolinePC) {}
-
- SafepointEntry(unsigned deopt_index, uint8_t* bits, int trampoline_pc)
- : deopt_index_(deopt_index), bits_(bits), trampoline_pc_(trampoline_pc) {
+ SafepointEntry() = default;
+
+ SafepointEntry(unsigned deopt_index, uint8_t* bits, uint8_t* bits_end,
+ int trampoline_pc)
+ : deopt_index_(deopt_index),
+ bits_(bits),
+ bits_end_(bits_end),
+ trampoline_pc_(trampoline_pc) {
DCHECK(is_valid());
}
@@ -38,6 +42,7 @@ class SafepointEntry {
void Reset() {
deopt_index_ = 0;
bits_ = nullptr;
+ bits_end_ = nullptr;
}
int trampoline_pc() { return trampoline_pc_; }
@@ -67,16 +72,23 @@ class SafepointEntry {
return deopt_index_ != kNoDeoptIndex;
}
- uint8_t* bits() {
+ uint8_t* bits() const {
DCHECK(is_valid());
return bits_;
}
+ base::iterator_range<uint8_t*> iterate_bits() const {
+ return base::make_iterator_range(bits_, bits_end_);
+ }
+
+ size_t entry_size() const { return bits_end_ - bits_; }
+
private:
- uint32_t deopt_index_;
- uint8_t* bits_;
+ uint32_t deopt_index_ = 0;
+ uint8_t* bits_ = nullptr;
+ uint8_t* bits_end_ = nullptr;
// It needs to be an integer as it is -1 for eager deoptimizations.
- int trampoline_pc_;
+ int trampoline_pc_ = kNoTrampolinePC;
};
class SafepointTable {
@@ -117,17 +129,17 @@ class SafepointTable {
int trampoline_pc = has_deopt_
? base::Memory<int>(GetTrampolineLocation(index))
: SafepointEntry::kNoTrampolinePC;
- return SafepointEntry(deopt_index, bits, trampoline_pc);
+ return SafepointEntry(deopt_index, bits, bits + entry_size_, trampoline_pc);
}
// Returns the entry for the given pc.
SafepointEntry FindEntry(Address pc) const;
- void PrintEntry(unsigned index, std::ostream& os) const; // NOLINT
+ void PrintEntry(unsigned index, std::ostream& os) const;
private:
SafepointTable(Address instruction_start, Address safepoint_table_address,
- uint32_t stack_slots, bool has_deopt);
+ bool has_deopt);
static const uint8_t kNoRegisters = 0xFF;
@@ -165,12 +177,9 @@ class SafepointTable {
return GetPcOffsetLocation(index) + kTrampolinePcOffset;
}
- static void PrintBits(std::ostream& os, uint8_t byte, int digits);
-
DISALLOW_GARBAGE_COLLECTION(no_gc_)
const Address instruction_start_;
- const uint32_t stack_slots_;
const bool has_deopt_;
// Safepoint table layout.
@@ -254,6 +263,10 @@ class SafepointTableBuilder {
// If all entries are identical, replace them by 1 entry with pc = kMaxUInt32.
void RemoveDuplicates();
+ // Try to trim entries by removing trailing zeros (and shrinking
+ // {bits_per_entry}).
+ void TrimEntries(int* bits_per_entry);
+
ZoneChunkList<DeoptimizationInfo> deoptimization_info_;
unsigned offset_;
diff --git a/deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc b/deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc
index 366d1afac9..3a73ae09f8 100644
--- a/deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc
+++ b/deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc
@@ -29,6 +29,174 @@ void SharedTurboAssembler::Movapd(XMMRegister dst, XMMRegister src) {
}
}
+void SharedTurboAssembler::Shufps(XMMRegister dst, XMMRegister src1,
+ XMMRegister src2, uint8_t imm8) {
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope avx_scope(this, AVX);
+ vshufps(dst, src1, src2, imm8);
+ } else {
+ if (dst != src1) {
+ movaps(dst, src1);
+ }
+ shufps(dst, src2, imm8);
+ }
+}
+
+void SharedTurboAssembler::F64x2ExtractLane(DoubleRegister dst, XMMRegister src,
+ uint8_t lane) {
+ if (lane == 0) {
+ if (dst != src) {
+ Movaps(dst, src);
+ }
+ } else {
+ DCHECK_EQ(1, lane);
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope avx_scope(this, AVX);
+ // Pass src as operand to avoid false-dependency on dst.
+ vmovhlps(dst, src, src);
+ } else {
+ movhlps(dst, src);
+ }
+ }
+}
+
+void SharedTurboAssembler::F64x2ReplaceLane(XMMRegister dst, XMMRegister src,
+ DoubleRegister rep, uint8_t lane) {
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope scope(this, AVX);
+ if (lane == 0) {
+ vpblendw(dst, src, rep, 0b00001111);
+ } else {
+ vmovlhps(dst, src, rep);
+ }
+ } else {
+ CpuFeatureScope scope(this, SSE4_1);
+ if (dst != src) {
+ DCHECK_NE(dst, rep); // Ensure rep is not overwritten.
+ movaps(dst, src);
+ }
+ if (lane == 0) {
+ pblendw(dst, rep, 0b00001111);
+ } else {
+ movlhps(dst, rep);
+ }
+ }
+}
+
+void SharedTurboAssembler::F64x2Min(XMMRegister dst, XMMRegister lhs,
+ XMMRegister rhs, XMMRegister scratch) {
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope scope(this, AVX);
+ // The minpd instruction doesn't propagate NaNs and +0's in its first
+ // operand. Perform minpd in both orders, merge the resuls, and adjust.
+ vminpd(scratch, lhs, rhs);
+ vminpd(dst, rhs, lhs);
+ // propagate -0's and NaNs, which may be non-canonical.
+ vorpd(scratch, scratch, dst);
+ // Canonicalize NaNs by quieting and clearing the payload.
+ vcmpunordpd(dst, dst, scratch);
+ vorpd(scratch, scratch, dst);
+ vpsrlq(dst, dst, byte{13});
+ vandnpd(dst, dst, scratch);
+ } else {
+ // Compare lhs with rhs, and rhs with lhs, and have the results in scratch
+ // and dst. If dst overlaps with lhs or rhs, we can save a move.
+ if (dst == lhs || dst == rhs) {
+ XMMRegister src = dst == lhs ? rhs : lhs;
+ movaps(scratch, src);
+ minpd(scratch, dst);
+ minpd(dst, src);
+ } else {
+ movaps(scratch, lhs);
+ movaps(dst, rhs);
+ minpd(scratch, rhs);
+ minpd(dst, lhs);
+ }
+ orpd(scratch, dst);
+ cmpunordpd(dst, scratch);
+ orpd(scratch, dst);
+ psrlq(dst, byte{13});
+ andnpd(dst, scratch);
+ }
+}
+
+void SharedTurboAssembler::F64x2Max(XMMRegister dst, XMMRegister lhs,
+ XMMRegister rhs, XMMRegister scratch) {
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope scope(this, AVX);
+ // The maxpd instruction doesn't propagate NaNs and +0's in its first
+ // operand. Perform maxpd in both orders, merge the resuls, and adjust.
+ vmaxpd(scratch, lhs, rhs);
+ vmaxpd(dst, rhs, lhs);
+ // Find discrepancies.
+ vxorpd(dst, dst, scratch);
+ // Propagate NaNs, which may be non-canonical.
+ vorpd(scratch, scratch, dst);
+ // Propagate sign discrepancy and (subtle) quiet NaNs.
+ vsubpd(scratch, scratch, dst);
+ // Canonicalize NaNs by clearing the payload. Sign is non-deterministic.
+ vcmpunordpd(dst, dst, scratch);
+ vpsrlq(dst, dst, byte{13});
+ vandnpd(dst, dst, scratch);
+ } else {
+ if (dst == lhs || dst == rhs) {
+ XMMRegister src = dst == lhs ? rhs : lhs;
+ movaps(scratch, src);
+ maxpd(scratch, dst);
+ maxpd(dst, src);
+ } else {
+ movaps(scratch, lhs);
+ movaps(dst, rhs);
+ maxpd(scratch, rhs);
+ maxpd(dst, lhs);
+ }
+ xorpd(dst, scratch);
+ orpd(scratch, dst);
+ subpd(scratch, dst);
+ cmpunordpd(dst, scratch);
+ psrlq(dst, byte{13});
+ andnpd(dst, scratch);
+ }
+}
+
+void SharedTurboAssembler::F32x4Splat(XMMRegister dst, DoubleRegister src) {
+ if (CpuFeatures::IsSupported(AVX2)) {
+ CpuFeatureScope avx2_scope(this, AVX2);
+ vbroadcastss(dst, src);
+ } else if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope avx_scope(this, AVX);
+ vshufps(dst, src, src, 0);
+ } else {
+ if (dst == src) {
+ // 1 byte shorter than pshufd.
+ shufps(dst, src, 0);
+ } else {
+ pshufd(dst, src, 0);
+ }
+ }
+}
+
+void SharedTurboAssembler::F32x4ExtractLane(FloatRegister dst, XMMRegister src,
+ uint8_t lane) {
+ DCHECK_LT(lane, 4);
+ // These instructions are shorter than insertps, but will leave junk in
+ // the top lanes of dst.
+ if (lane == 0) {
+ if (dst != src) {
+ Movaps(dst, src);
+ }
+ } else if (lane == 1) {
+ Movshdup(dst, src);
+ } else if (lane == 2 && dst == src) {
+ // Check dst == src to avoid false dependency on dst.
+ Movhlps(dst, src);
+ } else if (dst == src) {
+ Shufps(dst, src, src, lane);
+ } else {
+ Pshufd(dst, src, lane);
+ }
+}
+
void SharedTurboAssembler::S128Store32Lane(Operand dst, XMMRegister src,
uint8_t laneidx) {
if (laneidx == 0) {
@@ -233,6 +401,22 @@ void SharedTurboAssembler::I32x4UConvertI16x8High(XMMRegister dst,
}
}
+void SharedTurboAssembler::I64x2Neg(XMMRegister dst, XMMRegister src,
+ XMMRegister scratch) {
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope scope(this, AVX);
+ vpxor(scratch, scratch, scratch);
+ vpsubq(dst, scratch, src);
+ } else {
+ if (dst == src) {
+ movaps(scratch, src);
+ std::swap(src, scratch);
+ }
+ pxor(dst, dst);
+ psubq(dst, src);
+ }
+}
+
void SharedTurboAssembler::I64x2Abs(XMMRegister dst, XMMRegister src,
XMMRegister scratch) {
if (CpuFeatures::IsSupported(AVX)) {
@@ -379,6 +563,17 @@ void SharedTurboAssembler::I64x2UConvertI32x4High(XMMRegister dst,
}
}
+void SharedTurboAssembler::S128Not(XMMRegister dst, XMMRegister src,
+ XMMRegister scratch) {
+ if (dst == src) {
+ Pcmpeqd(scratch, scratch);
+ Pxor(dst, scratch);
+ } else {
+ Pcmpeqd(dst, dst);
+ Pxor(dst, src);
+ }
+}
+
void SharedTurboAssembler::S128Select(XMMRegister dst, XMMRegister mask,
XMMRegister src1, XMMRegister src2,
XMMRegister scratch) {
diff --git a/deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h b/deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h
index e2778e472d..6be9444c65 100644
--- a/deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h
+++ b/deps/v8/src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h
@@ -39,121 +39,252 @@ class V8_EXPORT_PRIVATE SharedTurboAssembler : public TurboAssemblerBase {
}
}
- template <typename Dst, typename... Args>
+ // Shufps that will mov src1 into dst if AVX is not supported.
+ void Shufps(XMMRegister dst, XMMRegister src1, XMMRegister src2,
+ uint8_t imm8);
+
+ // Helper struct to implement functions that check for AVX support and
+ // dispatch to the appropriate AVX/SSE instruction.
+ template <typename Dst, typename Arg, typename... Args>
struct AvxHelper {
Assembler* assm;
base::Optional<CpuFeature> feature = base::nullopt;
// Call a method where the AVX version expects the dst argument to be
// duplicated.
- template <void (Assembler::*avx)(Dst, Dst, Args...),
+ // E.g. Andps(x, y) -> vandps(x, x, y)
+ // -> andps(x, y)
+ template <void (Assembler::*avx)(Dst, Dst, Arg, Args...),
+ void (Assembler::*no_avx)(Dst, Arg, Args...)>
+ void emit(Dst dst, Arg arg, Args... args) {
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope scope(assm, AVX);
+ (assm->*avx)(dst, dst, arg, args...);
+ } else if (feature.has_value()) {
+ DCHECK(CpuFeatures::IsSupported(*feature));
+ CpuFeatureScope scope(assm, *feature);
+ (assm->*no_avx)(dst, arg, args...);
+ } else {
+ (assm->*no_avx)(dst, arg, args...);
+ }
+ }
+
+ // Call a method in the AVX form (one more operand), but if unsupported will
+ // check that dst == first src.
+ // E.g. Andps(x, y, z) -> vandps(x, y, z)
+ // -> andps(x, z) and check that x == y
+ template <void (Assembler::*avx)(Dst, Arg, Args...),
void (Assembler::*no_avx)(Dst, Args...)>
- void emit(Dst dst, Args... args) {
+ void emit(Dst dst, Arg arg, Args... args) {
if (CpuFeatures::IsSupported(AVX)) {
CpuFeatureScope scope(assm, AVX);
- (assm->*avx)(dst, dst, args...);
+ (assm->*avx)(dst, arg, args...);
} else if (feature.has_value()) {
+ DCHECK_EQ(dst, arg);
DCHECK(CpuFeatures::IsSupported(*feature));
CpuFeatureScope scope(assm, *feature);
(assm->*no_avx)(dst, args...);
} else {
+ DCHECK_EQ(dst, arg);
(assm->*no_avx)(dst, args...);
}
}
// Call a method where the AVX version expects no duplicated dst argument.
- template <void (Assembler::*avx)(Dst, Args...),
- void (Assembler::*no_avx)(Dst, Args...)>
- void emit(Dst dst, Args... args) {
+ // E.g. Movddup(x, y) -> vmovddup(x, y)
+ // -> movddup(x, y)
+ template <void (Assembler::*avx)(Dst, Arg, Args...),
+ void (Assembler::*no_avx)(Dst, Arg, Args...)>
+ void emit(Dst dst, Arg arg, Args... args) {
if (CpuFeatures::IsSupported(AVX)) {
CpuFeatureScope scope(assm, AVX);
- (assm->*avx)(dst, args...);
+ (assm->*avx)(dst, arg, args...);
} else if (feature.has_value()) {
DCHECK(CpuFeatures::IsSupported(*feature));
CpuFeatureScope scope(assm, *feature);
- (assm->*no_avx)(dst, args...);
+ (assm->*no_avx)(dst, arg, args...);
} else {
- (assm->*no_avx)(dst, args...);
+ (assm->*no_avx)(dst, arg, args...);
}
}
};
-#define AVX_OP(macro_name, name) \
- template <typename Dst, typename... Args> \
- void macro_name(Dst dst, Args... args) { \
- AvxHelper<Dst, Args...>{this} \
- .template emit<&Assembler::v##name, &Assembler::name>(dst, args...); \
+#define AVX_OP(macro_name, name) \
+ template <typename Dst, typename Arg, typename... Args> \
+ void macro_name(Dst dst, Arg arg, Args... args) { \
+ AvxHelper<Dst, Arg, Args...>{this} \
+ .template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
+ args...); \
}
-#define AVX_OP_SSE3(macro_name, name) \
- template <typename Dst, typename... Args> \
- void macro_name(Dst dst, Args... args) { \
- AvxHelper<Dst, Args...>{this, base::Optional<CpuFeature>(SSE3)} \
- .template emit<&Assembler::v##name, &Assembler::name>(dst, args...); \
+#define AVX_OP_SSE3(macro_name, name) \
+ template <typename Dst, typename Arg, typename... Args> \
+ void macro_name(Dst dst, Arg arg, Args... args) { \
+ AvxHelper<Dst, Arg, Args...>{this, base::Optional<CpuFeature>(SSE3)} \
+ .template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
+ args...); \
}
-#define AVX_OP_SSSE3(macro_name, name) \
- template <typename Dst, typename... Args> \
- void macro_name(Dst dst, Args... args) { \
- AvxHelper<Dst, Args...>{this, base::Optional<CpuFeature>(SSSE3)} \
- .template emit<&Assembler::v##name, &Assembler::name>(dst, args...); \
+#define AVX_OP_SSSE3(macro_name, name) \
+ template <typename Dst, typename Arg, typename... Args> \
+ void macro_name(Dst dst, Arg arg, Args... args) { \
+ AvxHelper<Dst, Arg, Args...>{this, base::Optional<CpuFeature>(SSSE3)} \
+ .template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
+ args...); \
}
-#define AVX_OP_SSE4_1(macro_name, name) \
- template <typename Dst, typename... Args> \
- void macro_name(Dst dst, Args... args) { \
- AvxHelper<Dst, Args...>{this, base::Optional<CpuFeature>(SSE4_1)} \
- .template emit<&Assembler::v##name, &Assembler::name>(dst, args...); \
+#define AVX_OP_SSE4_1(macro_name, name) \
+ template <typename Dst, typename Arg, typename... Args> \
+ void macro_name(Dst dst, Arg arg, Args... args) { \
+ AvxHelper<Dst, Arg, Args...>{this, base::Optional<CpuFeature>(SSE4_1)} \
+ .template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
+ args...); \
}
-#define AVX_OP_SSE4_2(macro_name, name) \
- template <typename Dst, typename... Args> \
- void macro_name(Dst dst, Args... args) { \
- AvxHelper<Dst, Args...>{this, base::Optional<CpuFeature>(SSE4_2)} \
- .template emit<&Assembler::v##name, &Assembler::name>(dst, args...); \
+#define AVX_OP_SSE4_2(macro_name, name) \
+ template <typename Dst, typename Arg, typename... Args> \
+ void macro_name(Dst dst, Arg arg, Args... args) { \
+ AvxHelper<Dst, Arg, Args...>{this, base::Optional<CpuFeature>(SSE4_2)} \
+ .template emit<&Assembler::v##name, &Assembler::name>(dst, arg, \
+ args...); \
}
+ // Keep this list sorted by required extension, then instruction name.
+ AVX_OP(Addpd, addpd)
+ AVX_OP(Addps, addps)
+ AVX_OP(Andnpd, andnpd)
+ AVX_OP(Andnps, andnps)
+ AVX_OP(Andpd, andpd)
+ AVX_OP(Andps, andps)
+ AVX_OP(Cmpeqpd, cmpeqpd)
+ AVX_OP(Cmplepd, cmplepd)
+ AVX_OP(Cmpleps, cmpleps)
+ AVX_OP(Cmpltpd, cmpltpd)
+ AVX_OP(Cmpneqpd, cmpneqpd)
+ AVX_OP(Cmpunordpd, cmpunordpd)
+ AVX_OP(Cmpunordps, cmpunordps)
AVX_OP(Cvtdq2pd, cvtdq2pd)
AVX_OP(Cvtdq2ps, cvtdq2ps)
- AVX_OP(Cvtps2pd, cvtps2pd)
AVX_OP(Cvtpd2ps, cvtpd2ps)
+ AVX_OP(Cvtps2pd, cvtps2pd)
AVX_OP(Cvttps2dq, cvttps2dq)
+ AVX_OP(Divpd, divpd)
+ AVX_OP(Divps, divps)
+ AVX_OP(Maxpd, maxpd)
+ AVX_OP(Maxps, maxps)
+ AVX_OP(Minpd, minpd)
+ AVX_OP(Minps, minps)
AVX_OP(Movaps, movaps)
AVX_OP(Movd, movd)
+ AVX_OP(Movhlps, movhlps)
AVX_OP(Movhps, movhps)
AVX_OP(Movlps, movlps)
AVX_OP(Movmskpd, movmskpd)
AVX_OP(Movmskps, movmskps)
- AVX_OP(Movss, movss)
AVX_OP(Movsd, movsd)
+ AVX_OP(Movss, movss)
AVX_OP(Movupd, movupd)
AVX_OP(Movups, movups)
+ AVX_OP(Mulpd, mulpd)
+ AVX_OP(Mulps, mulps)
+ AVX_OP(Orpd, orpd)
+ AVX_OP(Orps, orps)
+ AVX_OP(Packssdw, packssdw)
+ AVX_OP(Packsswb, packsswb)
+ AVX_OP(Packuswb, packuswb)
+ AVX_OP(Paddb, paddb)
+ AVX_OP(Paddd, paddd)
+ AVX_OP(Paddq, paddq)
+ AVX_OP(Paddsb, paddsb)
+ AVX_OP(Paddusb, paddusb)
+ AVX_OP(Paddusw, paddusw)
+ AVX_OP(Paddw, paddw)
+ AVX_OP(Pand, pand)
+ AVX_OP(Pavgb, pavgb)
+ AVX_OP(Pavgw, pavgw)
+ AVX_OP(Pcmpgtb, pcmpgtb)
+ AVX_OP(Pcmpeqd, pcmpeqd)
+ AVX_OP(Pmaxub, pmaxub)
+ AVX_OP(Pminub, pminub)
AVX_OP(Pmovmskb, pmovmskb)
AVX_OP(Pmullw, pmullw)
- AVX_OP(Pshuflw, pshuflw)
- AVX_OP(Pshufhw, pshufhw)
+ AVX_OP(Pmuludq, pmuludq)
+ AVX_OP(Por, por)
AVX_OP(Pshufd, pshufd)
+ AVX_OP(Pshufhw, pshufhw)
+ AVX_OP(Pshuflw, pshuflw)
+ AVX_OP(Pslld, pslld)
+ AVX_OP(Psllq, psllq)
+ AVX_OP(Psllw, psllw)
+ AVX_OP(Psrad, psrad)
+ AVX_OP(Psraw, psraw)
+ AVX_OP(Psrld, psrld)
+ AVX_OP(Psrlq, psrlq)
+ AVX_OP(Psrlw, psrlw)
+ AVX_OP(Psubb, psubb)
+ AVX_OP(Psubd, psubd)
+ AVX_OP(Psubq, psubq)
+ AVX_OP(Psubsb, psubsb)
+ AVX_OP(Psubusb, psubusb)
+ AVX_OP(Psubw, psubw)
+ AVX_OP(Punpckhbw, punpckhbw)
+ AVX_OP(Punpckhdq, punpckhdq)
+ AVX_OP(Punpckhqdq, punpckhqdq)
+ AVX_OP(Punpckhwd, punpckhwd)
+ AVX_OP(Punpcklbw, punpcklbw)
+ AVX_OP(Punpckldq, punpckldq)
+ AVX_OP(Punpcklqdq, punpcklqdq)
+ AVX_OP(Punpcklwd, punpcklwd)
+ AVX_OP(Pxor, pxor)
AVX_OP(Rcpps, rcpps)
AVX_OP(Rsqrtps, rsqrtps)
- AVX_OP(Sqrtps, sqrtps)
AVX_OP(Sqrtpd, sqrtpd)
+ AVX_OP(Sqrtps, sqrtps)
+ AVX_OP(Sqrtsd, sqrtsd)
+ AVX_OP(Sqrtss, sqrtss)
+ AVX_OP(Subpd, subpd)
+ AVX_OP(Subps, subps)
+ AVX_OP(Unpcklps, unpcklps)
+ AVX_OP(Xorpd, xorpd)
+ AVX_OP(Xorps, xorps)
+
+ AVX_OP_SSE3(Haddps, haddps)
AVX_OP_SSE3(Movddup, movddup)
AVX_OP_SSE3(Movshdup, movshdup)
+
AVX_OP_SSSE3(Pabsb, pabsb)
- AVX_OP_SSSE3(Pabsw, pabsw)
AVX_OP_SSSE3(Pabsd, pabsd)
+ AVX_OP_SSSE3(Pabsw, pabsw)
+ AVX_OP_SSSE3(Palignr, palignr)
+ AVX_OP_SSSE3(Psignb, psignb)
+ AVX_OP_SSSE3(Psignd, psignd)
+ AVX_OP_SSSE3(Psignw, psignw)
+
AVX_OP_SSE4_1(Extractps, extractps)
+ AVX_OP_SSE4_1(Pblendw, pblendw)
AVX_OP_SSE4_1(Pextrb, pextrb)
AVX_OP_SSE4_1(Pextrw, pextrw)
+ AVX_OP_SSE4_1(Pmaxsb, pmaxsb)
+ AVX_OP_SSE4_1(Pmaxsd, pmaxsd)
+ AVX_OP_SSE4_1(Pminsb, pminsb)
AVX_OP_SSE4_1(Pmovsxbw, pmovsxbw)
- AVX_OP_SSE4_1(Pmovsxwd, pmovsxwd)
AVX_OP_SSE4_1(Pmovsxdq, pmovsxdq)
+ AVX_OP_SSE4_1(Pmovsxwd, pmovsxwd)
AVX_OP_SSE4_1(Pmovzxbw, pmovzxbw)
- AVX_OP_SSE4_1(Pmovzxwd, pmovzxwd)
AVX_OP_SSE4_1(Pmovzxdq, pmovzxdq)
+ AVX_OP_SSE4_1(Pmovzxwd, pmovzxwd)
AVX_OP_SSE4_1(Ptest, ptest)
- AVX_OP_SSE4_1(Roundps, roundps)
AVX_OP_SSE4_1(Roundpd, roundpd)
+ AVX_OP_SSE4_1(Roundps, roundps)
+ void F64x2ExtractLane(DoubleRegister dst, XMMRegister src, uint8_t lane);
+ void F64x2ReplaceLane(XMMRegister dst, XMMRegister src, DoubleRegister rep,
+ uint8_t lane);
+ void F64x2Min(XMMRegister dst, XMMRegister lhs, XMMRegister rhs,
+ XMMRegister scratch);
+ void F64x2Max(XMMRegister dst, XMMRegister lhs, XMMRegister rhs,
+ XMMRegister scratch);
+ void F32x4Splat(XMMRegister dst, DoubleRegister src);
+ void F32x4ExtractLane(FloatRegister dst, XMMRegister src, uint8_t lane);
void S128Store32Lane(Operand dst, XMMRegister src, uint8_t laneidx);
void I16x8ExtMulLow(XMMRegister dst, XMMRegister src1, XMMRegister src2,
XMMRegister scrat, bool is_signed);
@@ -170,6 +301,7 @@ class V8_EXPORT_PRIVATE SharedTurboAssembler : public TurboAssemblerBase {
void I32x4SConvertI16x8High(XMMRegister dst, XMMRegister src);
void I32x4UConvertI16x8High(XMMRegister dst, XMMRegister src,
XMMRegister scratch);
+ void I64x2Neg(XMMRegister dst, XMMRegister src, XMMRegister scratch);
void I64x2Abs(XMMRegister dst, XMMRegister src, XMMRegister scratch);
void I64x2GtS(XMMRegister dst, XMMRegister src0, XMMRegister src1,
XMMRegister scratch);
@@ -180,6 +312,7 @@ class V8_EXPORT_PRIVATE SharedTurboAssembler : public TurboAssemblerBase {
void I64x2SConvertI32x4High(XMMRegister dst, XMMRegister src);
void I64x2UConvertI32x4High(XMMRegister dst, XMMRegister src,
XMMRegister scratch);
+ void S128Not(XMMRegister dst, XMMRegister src, XMMRegister scratch);
// Requires dst == mask when AVX is not supported.
void S128Select(XMMRegister dst, XMMRegister mask, XMMRegister src1,
XMMRegister src2, XMMRegister scratch);
diff --git a/deps/v8/src/codegen/signature.h b/deps/v8/src/codegen/signature.h
index 2c4ca3e0d9..d6d8b5da0f 100644
--- a/deps/v8/src/codegen/signature.h
+++ b/deps/v8/src/codegen/signature.h
@@ -104,6 +104,14 @@ class Signature : public ZoneObject {
T* buffer_;
};
+ static Signature<T>* Build(Zone* zone, std::initializer_list<T> returns,
+ std::initializer_list<T> params) {
+ Builder builder(zone, returns.size(), params.size());
+ for (T ret : returns) builder.AddReturn(ret);
+ for (T param : params) builder.AddParam(param);
+ return builder.Build();
+ }
+
static constexpr size_t kReturnCountOffset = 0;
static constexpr size_t kParameterCountOffset =
kReturnCountOffset + kSizetSize;
diff --git a/deps/v8/src/codegen/source-position-table.cc b/deps/v8/src/codegen/source-position-table.cc
index 63f1d17c70..27466a2690 100644
--- a/deps/v8/src/codegen/source-position-table.cc
+++ b/deps/v8/src/codegen/source-position-table.cc
@@ -170,9 +170,9 @@ void SourcePositionTableBuilder::AddEntry(const PositionTableEntry& entry) {
#endif
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<ByteArray> SourcePositionTableBuilder::ToSourcePositionTable(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
if (bytes_.empty()) return isolate->factory()->empty_byte_array();
DCHECK(!Omit());
diff --git a/deps/v8/src/codegen/source-position-table.h b/deps/v8/src/codegen/source-position-table.h
index 72a4c9f45a..afd7cc434c 100644
--- a/deps/v8/src/codegen/source-position-table.h
+++ b/deps/v8/src/codegen/source-position-table.h
@@ -54,9 +54,9 @@ class V8_EXPORT_PRIVATE SourcePositionTableBuilder {
void AddPosition(size_t code_offset, SourcePosition source_position,
bool is_statement);
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<ByteArray> ToSourcePositionTable(LocalIsolate* isolate);
+ Handle<ByteArray> ToSourcePositionTable(IsolateT* isolate);
OwnedVector<byte> ToSourcePositionTableVector();
inline bool Omit() const { return mode_ != RECORD_SOURCE_POSITIONS; }
diff --git a/deps/v8/src/codegen/string-constants.cc b/deps/v8/src/codegen/string-constants.cc
index 92a5e97396..c1ad5a7b4b 100644
--- a/deps/v8/src/codegen/string-constants.cc
+++ b/deps/v8/src/codegen/string-constants.cc
@@ -5,7 +5,6 @@
#include "src/codegen/string-constants.h"
#include "src/base/functional.h"
-#include "src/numbers/dtoa.h"
#include "src/objects/objects.h"
#include "src/objects/string-inl.h"
@@ -176,7 +175,7 @@ size_t StringConstantBase::GetMaxStringConstantLength() const {
size_t StringLiteral::GetMaxStringConstantLength() const { return length_; }
size_t NumberToStringConstant::GetMaxStringConstantLength() const {
- return kBase10MaximalLength + 1;
+ return kMaxDoubleStringLength;
}
size_t StringCons::GetMaxStringConstantLength() const {
diff --git a/deps/v8/src/codegen/turbo-assembler.cc b/deps/v8/src/codegen/turbo-assembler.cc
index e4c694097b..a9f9e08ead 100644
--- a/deps/v8/src/codegen/turbo-assembler.cc
+++ b/deps/v8/src/codegen/turbo-assembler.cc
@@ -115,12 +115,5 @@ bool TurboAssemblerBase::IsAddressableThroughRootRegister(
return isolate->root_register_addressable_region().contains(address);
}
-void TurboAssemblerBase::RecordCommentForOffHeapTrampoline(int builtin_index) {
- if (!FLAG_code_comments) return;
- std::ostringstream str;
- str << "[ Inlined Trampoline to " << Builtins::name(builtin_index);
- RecordComment(str.str().c_str());
-}
-
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/codegen/turbo-assembler.h b/deps/v8/src/codegen/turbo-assembler.h
index cc9ef92919..e25ee2a629 100644
--- a/deps/v8/src/codegen/turbo-assembler.h
+++ b/deps/v8/src/codegen/turbo-assembler.h
@@ -118,13 +118,18 @@ class V8_EXPORT_PRIVATE TurboAssemblerBase : public Assembler {
static bool IsAddressableThroughRootRegister(
Isolate* isolate, const ExternalReference& reference);
-#ifdef V8_TARGET_OS_WIN
+#if defined(V8_TARGET_OS_WIN) || defined(V8_TARGET_OS_MACOSX)
// Minimum page size. We must touch memory once per page when expanding the
// stack, to avoid access violations.
static constexpr int kStackPageSize = 4 * KB;
#endif
- void RecordCommentForOffHeapTrampoline(int builtin_index);
+ V8_INLINE void RecordCommentForOffHeapTrampoline(int builtin_index) {
+ if (!FLAG_code_comments) return;
+ std::ostringstream str;
+ str << "[ Inlined Trampoline to " << Builtins::name(builtin_index);
+ RecordComment(str.str().c_str());
+ }
protected:
Isolate* const isolate_ = nullptr;
@@ -150,8 +155,7 @@ class V8_EXPORT_PRIVATE TurboAssemblerBase : public Assembler {
};
// Avoids emitting calls to the {Builtins::kAbort} builtin when emitting debug
-// code during the lifetime of this scope object. For disabling debug code
-// entirely use the {DontEmitDebugCodeScope} instead.
+// code during the lifetime of this scope object.
class V8_NODISCARD HardAbortScope {
public:
explicit HardAbortScope(TurboAssemblerBase* assembler)
@@ -165,27 +169,6 @@ class V8_NODISCARD HardAbortScope {
bool old_value_;
};
-#ifdef DEBUG
-struct CountIfValidRegisterFunctor {
- template <typename RegType>
- constexpr int operator()(int count, RegType reg) const {
- return count + (reg.is_valid() ? 1 : 0);
- }
-};
-
-template <typename RegType, typename... RegTypes,
- // All arguments must be either Register or DoubleRegister.
- typename = typename std::enable_if<
- base::is_same<Register, RegType, RegTypes...>::value ||
- base::is_same<DoubleRegister, RegType, RegTypes...>::value>::type>
-inline bool AreAliased(RegType first_reg, RegTypes... regs) {
- int num_different_regs = NumRegs(RegType::ListOf(first_reg, regs...));
- int num_given_regs =
- base::fold(CountIfValidRegisterFunctor{}, 0, first_reg, regs...);
- return num_different_regs < num_given_regs;
-}
-#endif
-
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/codegen/x64/assembler-x64.cc b/deps/v8/src/codegen/x64/assembler-x64.cc
index 032f7eb13d..eb07f3ba3b 100644
--- a/deps/v8/src/codegen/x64/assembler-x64.cc
+++ b/deps/v8/src/codegen/x64/assembler-x64.cc
@@ -86,45 +86,40 @@ void CpuFeatures::ProbeImpl(bool cross_compile) {
// Only use statically determined features for cross compile (snapshot).
if (cross_compile) return;
-
- // To deal with any combination of flags (e.g. --no-enable-sse4-1
- // --enable-sse-4-2), we start checking from the "highest" supported
- // extension, for each extension, enable if newer extension is supported.
- if (cpu.has_avx2() && FLAG_enable_avx2 && IsSupported(AVX)) {
- supported_ |= 1u << AVX2;
- }
- if (cpu.has_fma3() && FLAG_enable_fma3 && cpu.has_osxsave() &&
- OSHasAVXSupport()) {
- supported_ |= 1u << FMA3;
- }
- if ((cpu.has_avx() && FLAG_enable_avx && cpu.has_osxsave() &&
- OSHasAVXSupport()) ||
- IsSupported(AVX2) || IsSupported(FMA3)) {
- supported_ |= 1u << AVX;
- }
- if ((cpu.has_sse42() && FLAG_enable_sse4_2) || IsSupported(AVX)) {
- supported_ |= 1u << SSE4_2;
- }
- if ((cpu.has_sse41() && FLAG_enable_sse4_1) || IsSupported(SSE4_2)) {
- supported_ |= 1u << SSE4_1;
- }
- if ((cpu.has_ssse3() && FLAG_enable_ssse3) || IsSupported(SSE4_1)) {
- supported_ |= 1u << SSSE3;
+ if (cpu.has_sse42()) SetSupported(SSE4_2);
+ if (cpu.has_sse41()) SetSupported(SSE4_1);
+ if (cpu.has_ssse3()) SetSupported(SSSE3);
+ if (cpu.has_sse3()) SetSupported(SSE3);
+ if (cpu.has_avx() && cpu.has_osxsave() && OSHasAVXSupport()) {
+ SetSupported(AVX);
+ if (cpu.has_avx2()) SetSupported(AVX2);
+ if (cpu.has_fma3()) SetSupported(FMA3);
}
- if ((cpu.has_sse3() && FLAG_enable_sse3) || IsSupported(SSSE3))
- supported_ |= 1u << SSE3;
+
// SAHF is not generally available in long mode.
- if (cpu.has_sahf() && FLAG_enable_sahf) supported_ |= 1u << SAHF;
- if (cpu.has_bmi1() && FLAG_enable_bmi1) supported_ |= 1u << BMI1;
- if (cpu.has_bmi2() && FLAG_enable_bmi2) supported_ |= 1u << BMI2;
- if (cpu.has_lzcnt() && FLAG_enable_lzcnt) supported_ |= 1u << LZCNT;
- if (cpu.has_popcnt() && FLAG_enable_popcnt) supported_ |= 1u << POPCNT;
+ if (cpu.has_sahf() && FLAG_enable_sahf) SetSupported(SAHF);
+ if (cpu.has_bmi1() && FLAG_enable_bmi1) SetSupported(BMI1);
+ if (cpu.has_bmi2() && FLAG_enable_bmi2) SetSupported(BMI2);
+ if (cpu.has_lzcnt() && FLAG_enable_lzcnt) SetSupported(LZCNT);
+ if (cpu.has_popcnt() && FLAG_enable_popcnt) SetSupported(POPCNT);
if (strcmp(FLAG_mcpu, "auto") == 0) {
- if (cpu.is_atom()) supported_ |= 1u << ATOM;
+ if (cpu.is_atom()) SetSupported(ATOM);
} else if (strcmp(FLAG_mcpu, "atom") == 0) {
- supported_ |= 1u << ATOM;
+ SetSupported(ATOM);
}
+ // Ensure that supported cpu features make sense. E.g. it is wrong to support
+ // AVX but not SSE4_2, if we have --enable-avx and --no-enable-sse4-2, the
+ // code above would set AVX to supported, and SSE4_2 to unsupported, then the
+ // checks below will set AVX to unsupported.
+ if (!FLAG_enable_sse3) SetUnsupported(SSE3);
+ if (!FLAG_enable_ssse3 || !IsSupported(SSE3)) SetUnsupported(SSSE3);
+ if (!FLAG_enable_sse4_1 || !IsSupported(SSSE3)) SetUnsupported(SSE4_1);
+ if (!FLAG_enable_sse4_2 || !IsSupported(SSE4_1)) SetUnsupported(SSE4_2);
+ if (!FLAG_enable_avx || !IsSupported(SSE4_2)) SetUnsupported(AVX);
+ if (!FLAG_enable_avx2 || !IsSupported(AVX)) SetUnsupported(AVX2);
+ if (!FLAG_enable_fma3 || !IsSupported(AVX)) SetUnsupported(FMA3);
+
// Set a static value on whether Simd is supported.
// This variable is only used for certain archs to query SupportWasmSimd128()
// at runtime in builtins using an extern ref. Other callers should use
@@ -1419,12 +1414,13 @@ void Assembler::j(Condition cc, Label* L, Label::Distance distance) {
}
void Assembler::j(Condition cc, Address entry, RelocInfo::Mode rmode) {
- DCHECK(RelocInfo::IsRuntimeEntry(rmode));
+ DCHECK(RelocInfo::IsWasmStubCall(rmode));
EnsureSpace ensure_space(this);
DCHECK(is_uint4(cc));
emit(0x0F);
emit(0x80 | cc);
- emit_runtime_entry(entry, rmode);
+ RecordRelocInfo(rmode);
+ emitl(static_cast<int32_t>(entry));
}
void Assembler::j(Condition cc, Handle<Code> target, RelocInfo::Mode rmode) {
diff --git a/deps/v8/src/codegen/x64/assembler-x64.h b/deps/v8/src/codegen/x64/assembler-x64.h
index 97e18ed8fe..e6205311c2 100644
--- a/deps/v8/src/codegen/x64/assembler-x64.h
+++ b/deps/v8/src/codegen/x64/assembler-x64.h
@@ -124,6 +124,9 @@ class Immediate {
DCHECK(SmiValuesAre31Bits()); // Only available for 31-bit SMI.
}
+ int32_t value() const { return value_; }
+ RelocInfo::Mode rmode() const { return rmode_; }
+
private:
const int32_t value_;
const RelocInfo::Mode rmode_ = RelocInfo::NONE;
@@ -1274,6 +1277,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
SSE_CMP_P(cmpeq, 0x0)
SSE_CMP_P(cmplt, 0x1)
SSE_CMP_P(cmple, 0x2)
+ SSE_CMP_P(cmpunord, 0x3)
SSE_CMP_P(cmpneq, 0x4)
SSE_CMP_P(cmpnlt, 0x5)
SSE_CMP_P(cmpnle, 0x6)
@@ -1571,6 +1575,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
AVX_CMP_P(vcmpeq, 0x0)
AVX_CMP_P(vcmplt, 0x1)
AVX_CMP_P(vcmple, 0x2)
+ AVX_CMP_P(vcmpunord, 0x3)
AVX_CMP_P(vcmpneq, 0x4)
AVX_CMP_P(vcmpnlt, 0x5)
AVX_CMP_P(vcmpnle, 0x6)
@@ -2374,8 +2379,8 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
// checks that we did not generate too much.
class EnsureSpace {
public:
- explicit EnsureSpace(Assembler* assembler) : assembler_(assembler) {
- if (assembler_->buffer_overflow()) assembler_->GrowBuffer();
+ explicit V8_INLINE EnsureSpace(Assembler* assembler) : assembler_(assembler) {
+ if (V8_UNLIKELY(assembler_->buffer_overflow())) assembler_->GrowBuffer();
#ifdef DEBUG
space_before_ = assembler_->available_space();
#endif
@@ -2389,7 +2394,7 @@ class EnsureSpace {
#endif
private:
- Assembler* assembler_;
+ Assembler* const assembler_;
#ifdef DEBUG
int space_before_;
#endif
diff --git a/deps/v8/src/codegen/x64/interface-descriptors-x64-inl.h b/deps/v8/src/codegen/x64/interface-descriptors-x64-inl.h
new file mode 100644
index 0000000000..a24330a4c7
--- /dev/null
+++ b/deps/v8/src/codegen/x64/interface-descriptors-x64-inl.h
@@ -0,0 +1,258 @@
+// Copyright 2021 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_CODEGEN_X64_INTERFACE_DESCRIPTORS_X64_INL_H_
+#define V8_CODEGEN_X64_INTERFACE_DESCRIPTORS_X64_INL_H_
+
+#if V8_TARGET_ARCH_X64
+
+#include "src/codegen/interface-descriptors.h"
+
+namespace v8 {
+namespace internal {
+
+constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() {
+ auto registers = RegisterArray(rax, rbx, rcx, rdx, rdi);
+ STATIC_ASSERT(registers.size() == kMaxBuiltinRegisterParams);
+ return registers;
+}
+
+// static
+constexpr auto RecordWriteDescriptor::registers() {
+ return RegisterArray(arg_reg_1, arg_reg_2, arg_reg_3, arg_reg_4,
+ kReturnRegister0);
+}
+
+// static
+constexpr auto DynamicCheckMapsDescriptor::registers() {
+ return RegisterArray(kReturnRegister0, arg_reg_1, arg_reg_2, arg_reg_3,
+ kRuntimeCallFunctionRegister, kContextRegister);
+}
+
+// static
+constexpr auto EphemeronKeyBarrierDescriptor::registers() {
+ return RegisterArray(arg_reg_1, arg_reg_2, arg_reg_3, arg_reg_4,
+ kReturnRegister0);
+}
+
+// static
+constexpr Register LoadDescriptor::ReceiverRegister() { return rdx; }
+// static
+constexpr Register LoadDescriptor::NameRegister() { return rcx; }
+// static
+constexpr Register LoadDescriptor::SlotRegister() { return rax; }
+
+// static
+constexpr Register LoadWithVectorDescriptor::VectorRegister() { return rbx; }
+
+// static
+constexpr Register
+LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
+ return rdi;
+}
+
+// static
+constexpr Register StoreDescriptor::ReceiverRegister() { return rdx; }
+// static
+constexpr Register StoreDescriptor::NameRegister() { return rcx; }
+// static
+constexpr Register StoreDescriptor::ValueRegister() { return rax; }
+// static
+constexpr Register StoreDescriptor::SlotRegister() { return rdi; }
+
+// static
+constexpr Register StoreWithVectorDescriptor::VectorRegister() { return rbx; }
+
+// static
+constexpr Register StoreTransitionDescriptor::MapRegister() { return r11; }
+
+// static
+constexpr Register ApiGetterDescriptor::HolderRegister() { return rcx; }
+// static
+constexpr Register ApiGetterDescriptor::CallbackRegister() { return rbx; }
+
+// static
+constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return rax; }
+// static
+constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return rbx; }
+
+// static
+constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
+ return rbx;
+}
+// static
+constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() {
+ return rcx;
+}
+
+// static
+constexpr Register TypeConversionDescriptor::ArgumentRegister() { return rax; }
+
+// static
+constexpr auto TypeofDescriptor::registers() { return RegisterArray(rbx); }
+
+// static
+constexpr auto CallTrampolineDescriptor::registers() {
+ // rax : number of arguments
+ // rdi : the target to call
+ return RegisterArray(rdi, rax);
+}
+
+// static
+constexpr auto CallVarargsDescriptor::registers() {
+ // rax : number of arguments (on the stack, not including receiver)
+ // rdi : the target to call
+ // rcx : arguments list length (untagged)
+ // rbx : arguments list (FixedArray)
+ return RegisterArray(rdi, rax, rcx, rbx);
+}
+
+// static
+constexpr auto CallForwardVarargsDescriptor::registers() {
+ // rax : number of arguments
+ // rcx : start index (to support rest parameters)
+ // rdi : the target to call
+ return RegisterArray(rdi, rax, rcx);
+}
+
+// static
+constexpr auto CallFunctionTemplateDescriptor::registers() {
+ // rdx: the function template info
+ // rcx: number of arguments (on the stack, not including receiver)
+ return RegisterArray(rdx, rcx);
+}
+
+// static
+constexpr auto CallWithSpreadDescriptor::registers() {
+ // rax : number of arguments (on the stack, not including receiver)
+ // rdi : the target to call
+ // rbx : the object to spread
+ return RegisterArray(rdi, rax, rbx);
+}
+
+// static
+constexpr auto CallWithArrayLikeDescriptor::registers() {
+ // rdi : the target to call
+ // rbx : the arguments list
+ return RegisterArray(rdi, rbx);
+}
+
+// static
+constexpr auto ConstructVarargsDescriptor::registers() {
+ // rax : number of arguments (on the stack, not including receiver)
+ // rdi : the target to call
+ // rdx : the new target
+ // rcx : arguments list length (untagged)
+ // rbx : arguments list (FixedArray)
+ return RegisterArray(rdi, rdx, rax, rcx, rbx);
+}
+
+// static
+constexpr auto ConstructForwardVarargsDescriptor::registers() {
+ // rax : number of arguments
+ // rdx : the new target
+ // rcx : start index (to support rest parameters)
+ // rdi : the target to call
+ return RegisterArray(rdi, rdx, rax, rcx);
+}
+
+// static
+constexpr auto ConstructWithSpreadDescriptor::registers() {
+ // rax : number of arguments (on the stack, not including receiver)
+ // rdi : the target to call
+ // rdx : the new target
+ // rbx : the object to spread
+ return RegisterArray(rdi, rdx, rax, rbx);
+}
+
+// static
+constexpr auto ConstructWithArrayLikeDescriptor::registers() {
+ // rdi : the target to call
+ // rdx : the new target
+ // rbx : the arguments list
+ return RegisterArray(rdi, rdx, rbx);
+}
+
+// static
+constexpr auto ConstructStubDescriptor::registers() {
+ // rax : number of arguments
+ // rdx : the new target
+ // rdi : the target to call
+ // rbx : allocation site or undefined
+ return RegisterArray(rdi, rdx, rax, rbx);
+}
+
+// static
+constexpr auto AbortDescriptor::registers() { return RegisterArray(rdx); }
+
+// static
+constexpr auto CompareDescriptor::registers() {
+ return RegisterArray(rdx, rax);
+}
+
+// static
+constexpr auto BinaryOpDescriptor::registers() {
+ return RegisterArray(rdx, rax);
+}
+
+// static
+constexpr auto Compare_BaselineDescriptor::registers() {
+ return RegisterArray(rdx, rax, rbx);
+}
+
+// static
+constexpr auto BinaryOp_BaselineDescriptor::registers() {
+ return RegisterArray(rdx, rax, rbx);
+}
+
+// static
+constexpr auto ApiCallbackDescriptor::registers() {
+ return RegisterArray(rdx, // api function address
+ rcx, // argument count (not including receiver)
+ rbx, // call data
+ rdi); // holder
+}
+
+// static
+constexpr auto InterpreterDispatchDescriptor::registers() {
+ return RegisterArray(
+ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
+ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister);
+}
+
+// static
+constexpr auto InterpreterPushArgsThenCallDescriptor::registers() {
+ return RegisterArray(rax, // argument count (not including receiver)
+ rbx, // address of first argument
+ rdi); // the target callable to be call
+}
+
+// static
+constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() {
+ return RegisterArray(
+ rax, // argument count (not including receiver)
+ rcx, // address of first argument
+ rdi, // constructor to call
+ rdx, // new target
+ rbx); // allocation site feedback if available, undefined otherwise
+}
+
+// static
+constexpr auto ResumeGeneratorDescriptor::registers() {
+ return RegisterArray(
+ rax, // the value to pass to the generator
+ rdx); // the JSGeneratorObject / JSAsyncGeneratorObject to resume
+}
+
+// static
+constexpr auto RunMicrotasksEntryDescriptor::registers() {
+ return RegisterArray(arg_reg_1, arg_reg_2);
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_TARGET_ARCH_X64
+
+#endif // V8_CODEGEN_X64_INTERFACE_DESCRIPTORS_X64_INL_H_
diff --git a/deps/v8/src/codegen/x64/interface-descriptors-x64.cc b/deps/v8/src/codegen/x64/interface-descriptors-x64.cc
deleted file mode 100644
index 4029b56d2b..0000000000
--- a/deps/v8/src/codegen/x64/interface-descriptors-x64.cc
+++ /dev/null
@@ -1,309 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_X64
-
-#include "src/codegen/interface-descriptors.h"
-
-#include "src/execution/frames.h"
-
-namespace v8 {
-namespace internal {
-
-const Register CallInterfaceDescriptor::ContextRegister() { return rsi; }
-
-void CallInterfaceDescriptor::DefaultInitializePlatformSpecific(
- CallInterfaceDescriptorData* data, int register_parameter_count) {
- const Register default_stub_registers[] = {rax, rbx, rcx, rdx, rdi};
- CHECK_LE(static_cast<size_t>(register_parameter_count),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(register_parameter_count,
- default_stub_registers);
-}
-
-void RecordWriteDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {arg_reg_1, arg_reg_2, arg_reg_3,
- arg_reg_4, kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void DynamicCheckMapsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register default_stub_registers[] = {kReturnRegister0,
- arg_reg_1,
- arg_reg_2,
- arg_reg_3,
- kRuntimeCallFunctionRegister,
- kContextRegister};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-void EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- const Register default_stub_registers[] = {arg_reg_1, arg_reg_2, arg_reg_3,
- arg_reg_4, kReturnRegister0};
-
- data->RestrictAllocatableRegisters(default_stub_registers,
- arraysize(default_stub_registers));
-
- CHECK_LE(static_cast<size_t>(kParameterCount),
- arraysize(default_stub_registers));
- data->InitializePlatformSpecific(kParameterCount, default_stub_registers);
-}
-
-const Register LoadDescriptor::ReceiverRegister() { return rdx; }
-const Register LoadDescriptor::NameRegister() { return rcx; }
-const Register LoadDescriptor::SlotRegister() { return rax; }
-
-const Register LoadWithVectorDescriptor::VectorRegister() { return rbx; }
-
-const Register
-LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() {
- return rdi;
-}
-
-const Register StoreDescriptor::ReceiverRegister() { return rdx; }
-const Register StoreDescriptor::NameRegister() { return rcx; }
-const Register StoreDescriptor::ValueRegister() { return rax; }
-const Register StoreDescriptor::SlotRegister() { return rdi; }
-
-const Register StoreWithVectorDescriptor::VectorRegister() { return rbx; }
-
-const Register StoreTransitionDescriptor::SlotRegister() { return rdi; }
-const Register StoreTransitionDescriptor::VectorRegister() { return rbx; }
-const Register StoreTransitionDescriptor::MapRegister() { return r11; }
-
-const Register ApiGetterDescriptor::HolderRegister() { return rcx; }
-const Register ApiGetterDescriptor::CallbackRegister() { return rbx; }
-
-const Register GrowArrayElementsDescriptor::ObjectRegister() { return rax; }
-const Register GrowArrayElementsDescriptor::KeyRegister() { return rbx; }
-
-const Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() {
- return rbx;
-}
-const Register BaselineLeaveFrameDescriptor::WeightRegister() { return rcx; }
-
-void TypeofDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-// static
-const Register TypeConversionDescriptor::ArgumentRegister() { return rax; }
-
-void CallTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rax : number of arguments
- // rdi : the target to call
- Register registers[] = {rdi, rax};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rax : number of arguments (on the stack, not including receiver)
- // rdi : the target to call
- // rcx : arguments list length (untagged)
- // rbx : arguments list (FixedArray)
- Register registers[] = {rdi, rax, rcx, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rax : number of arguments
- // rcx : start index (to support rest parameters)
- // rdi : the target to call
- Register registers[] = {rdi, rax, rcx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallFunctionTemplateDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rdx: the function template info
- // rcx: number of arguments (on the stack, not including receiver)
- Register registers[] = {rdx, rcx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rax : number of arguments (on the stack, not including receiver)
- // rdi : the target to call
- // rbx : the object to spread
- Register registers[] = {rdi, rax, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CallWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rdi : the target to call
- // rbx : the arguments list
- Register registers[] = {rdi, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rax : number of arguments (on the stack, not including receiver)
- // rdi : the target to call
- // rdx : the new target
- // rcx : arguments list length (untagged)
- // rbx : arguments list (FixedArray)
- Register registers[] = {rdi, rdx, rax, rcx, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructForwardVarargsDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rax : number of arguments
- // rdx : the new target
- // rcx : start index (to support rest parameters)
- // rdi : the target to call
- Register registers[] = {rdi, rdx, rax, rcx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithSpreadDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rax : number of arguments (on the stack, not including receiver)
- // rdi : the target to call
- // rdx : the new target
- // rbx : the object to spread
- Register registers[] = {rdi, rdx, rax, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rdi : the target to call
- // rdx : the new target
- // rbx : the arguments list
- Register registers[] = {rdi, rdx, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ConstructStubDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- // rax : number of arguments
- // rdx : the new target
- // rdi : the target to call
- // rbx : allocation site or undefined
- Register registers[] = {rdi, rdx, rax, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void AbortDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {rdx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void CompareDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {rdx, rax};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void Compare_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {rdx, rax, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOpDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {rdx, rax};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void BinaryOp_BaselineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {rdx, rax, rbx};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ApiCallbackDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- rdx, // api function address
- rcx, // argument count (not including receiver)
- rbx, // call data
- rdi, // holder
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterDispatchDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister,
- kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- rax, // argument count (not including receiver)
- rbx, // address of first argument
- rdi // the target callable to be call
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- rax, // argument count (not including receiver)
- rcx, // address of first argument
- rdi, // constructor to call
- rdx, // new target
- rbx, // allocation site feedback if available, undefined otherwise
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void ResumeGeneratorDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- rax, // the value to pass to the generator
- rdx // the JSGeneratorObject / JSAsyncGeneratorObject to resume
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void FrameDropperTrampolineDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {
- rbx, // loaded new FP
- };
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-void RunMicrotasksEntryDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {arg_reg_1, arg_reg_2};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_X64
diff --git a/deps/v8/src/codegen/x64/macro-assembler-x64.cc b/deps/v8/src/codegen/x64/macro-assembler-x64.cc
index cb254370b2..53f3f97f9a 100644
--- a/deps/v8/src/codegen/x64/macro-assembler-x64.cc
+++ b/deps/v8/src/codegen/x64/macro-assembler-x64.cc
@@ -12,6 +12,7 @@
#include "src/codegen/code-factory.h"
#include "src/codegen/cpu-features.h"
#include "src/codegen/external-reference-table.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/macro-assembler.h"
#include "src/codegen/register-configuration.h"
#include "src/codegen/string-constants.h"
@@ -194,6 +195,9 @@ void TurboAssembler::CompareRoot(Operand with, RootIndex index) {
void TurboAssembler::LoadMap(Register destination, Register object) {
LoadTaggedPointerField(destination,
FieldOperand(object, HeapObject::kMapOffset));
+#ifdef V8_MAP_PACKING
+ UnpackMapWord(destination);
+#endif
}
void TurboAssembler::LoadTaggedPointerField(Register destination,
@@ -205,6 +209,16 @@ void TurboAssembler::LoadTaggedPointerField(Register destination,
}
}
+#ifdef V8_MAP_PACKING
+void TurboAssembler::UnpackMapWord(Register r) {
+ // Clear the top two bytes (which may include metadata). Must be in sync with
+ // MapWord::Unpack, and vice versa.
+ shlq(r, Immediate(16));
+ shrq(r, Immediate(16));
+ xorq(r, Immediate(Internals::kMapWordXorMask));
+}
+#endif
+
void TurboAssembler::LoadTaggedSignedField(Register destination,
Operand field_operand) {
if (COMPRESS_POINTERS_BOOL) {
@@ -288,7 +302,7 @@ void TurboAssembler::DecompressTaggedPointer(Register destination,
Operand field_operand) {
RecordComment("[ DecompressTaggedPointer");
movl(destination, field_operand);
- addq(destination, kPointerCageBaseRegister);
+ addq(destination, kPtrComprCageBaseRegister);
RecordComment("]");
}
@@ -296,7 +310,7 @@ void TurboAssembler::DecompressTaggedPointer(Register destination,
Register source) {
RecordComment("[ DecompressTaggedPointer");
movl(destination, source);
- addq(destination, kPointerCageBaseRegister);
+ addq(destination, kPtrComprCageBaseRegister);
RecordComment("]");
}
@@ -304,7 +318,7 @@ void TurboAssembler::DecompressAnyTagged(Register destination,
Operand field_operand) {
RecordComment("[ DecompressAnyTagged");
movl(destination, field_operand);
- addq(destination, kPointerCageBaseRegister);
+ addq(destination, kPtrComprCageBaseRegister);
RecordComment("]");
}
@@ -318,7 +332,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
Label done;
// Skip barrier if writing a smi.
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
JumpIfSmi(value, &done);
}
@@ -327,7 +341,7 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
DCHECK(IsAligned(offset, kTaggedSize));
leaq(dst, FieldOperand(object, offset));
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label ok;
testb(dst, Immediate(kTaggedSize - 1));
j(zero, &ok, Label::kNear);
@@ -336,13 +350,13 @@ void MacroAssembler::RecordWriteField(Register object, int offset,
}
RecordWrite(object, dst, value, save_fp, remembered_set_action,
- OMIT_SMI_CHECK);
+ SmiCheck::kOmit);
bind(&done);
// Clobber clobbered input registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Move(value, kZapValue, RelocInfo::NONE);
Move(dst, kZapValue, RelocInfo::NONE);
}
@@ -357,19 +371,27 @@ void TurboAssembler::SaveRegisters(RegList registers) {
}
}
-void TurboAssembler::LoadExternalPointerField(Register destination,
- Operand field_operand,
- ExternalPointerTag tag) {
+void TurboAssembler::LoadExternalPointerField(
+ Register destination, Operand field_operand, ExternalPointerTag tag,
+ Register scratch, IsolateRootLocation isolateRootLocation) {
#ifdef V8_HEAP_SANDBOX
- LoadAddress(kScratchRegister,
- ExternalReference::external_pointer_table_address(isolate()));
- movq(kScratchRegister,
- Operand(kScratchRegister, Internals::kExternalPointerTableBufferOffset));
+ DCHECK(!field_operand.AddressUsesRegister(scratch));
+ if (isolateRootLocation == IsolateRootLocation::kInRootRegister) {
+ DCHECK(root_array_available_);
+ movq(scratch, Operand(kRootRegister,
+ IsolateData::external_pointer_table_offset() +
+ Internals::kExternalPointerTableBufferOffset));
+ } else {
+ DCHECK(isolateRootLocation == IsolateRootLocation::kInScratchRegister);
+ movq(scratch,
+ Operand(scratch, IsolateData::external_pointer_table_offset() +
+ Internals::kExternalPointerTableBufferOffset));
+ }
movl(destination, field_operand);
- movq(destination, Operand(kScratchRegister, destination, times_8, 0));
+ movq(destination, Operand(scratch, destination, times_8, 0));
if (tag != 0) {
- movq(kScratchRegister, Immediate64(tag));
- xorq(destination, kScratchRegister);
+ movq(scratch, Immediate64(~tag));
+ andq(destination, scratch);
}
#else
movq(destination, field_operand);
@@ -480,13 +502,13 @@ void MacroAssembler::RecordWrite(Register object, Register address,
DCHECK(value != address);
AssertNotSmi(object);
- if ((remembered_set_action == OMIT_REMEMBERED_SET &&
+ if ((remembered_set_action == RememberedSetAction::kOmit &&
!FLAG_incremental_marking) ||
FLAG_disable_write_barriers) {
return;
}
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label ok;
cmp_tagged(value, Operand(address, 0));
j(equal, &ok, Label::kNear);
@@ -498,7 +520,7 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// catch stores of smis and stores into the young generation.
Label done;
- if (smi_check == INLINE_SMI_CHECK) {
+ if (smi_check == SmiCheck::kInline) {
// Skip barrier if writing a smi.
JumpIfSmi(value, &done);
}
@@ -519,18 +541,18 @@ void MacroAssembler::RecordWrite(Register object, Register address,
// Clobber clobbered registers when running with the debug-code flag
// turned on to provoke errors.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Move(address, kZapValue, RelocInfo::NONE);
Move(value, kZapValue, RelocInfo::NONE);
}
}
void TurboAssembler::Assert(Condition cc, AbortReason reason) {
- if (emit_debug_code()) Check(cc, reason);
+ if (FLAG_debug_code) Check(cc, reason);
}
void TurboAssembler::AssertUnreachable(AbortReason reason) {
- if (emit_debug_code()) Abort(reason);
+ if (FLAG_debug_code) Abort(reason);
}
void TurboAssembler::Check(Condition cc, AbortReason reason) {
@@ -556,11 +578,11 @@ void TurboAssembler::CheckStackAlignment() {
}
void TurboAssembler::Abort(AbortReason reason) {
-#ifdef DEBUG
- const char* msg = GetAbortReason(reason);
- RecordComment("Abort message: ");
- RecordComment(msg);
-#endif
+ if (FLAG_code_comments) {
+ const char* msg = GetAbortReason(reason);
+ RecordComment("Abort message: ");
+ RecordComment(msg);
+ }
// Avoid emitting call to builtin if requested.
if (trap_on_abort()) {
@@ -603,7 +625,7 @@ void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments,
// arguments passed in because it is constant. At some point we
// should remove this need and make the runtime routine entry code
// smarter.
- Set(rax, num_arguments);
+ Move(rax, num_arguments);
LoadAddress(rbx, ExternalReference::Create(f));
Handle<Code> code =
CodeFactory::CEntry(isolate(), f->result_size, save_doubles);
@@ -624,7 +646,7 @@ void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
DCHECK_EQ(1, function->result_size);
if (function->nargs >= 0) {
- Set(rax, function->nargs);
+ Move(rax, function->nargs);
}
JumpToExternalReference(ExternalReference::Create(fid));
}
@@ -633,8 +655,8 @@ void MacroAssembler::JumpToExternalReference(const ExternalReference& ext,
bool builtin_exit_frame) {
// Set the entry point and jump to the C entry runtime stub.
LoadAddress(rbx, ext);
- Handle<Code> code = CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs,
- kArgvOnStack, builtin_exit_frame);
+ Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, builtin_exit_frame);
Jump(code, RelocInfo::CODE_TARGET);
}
@@ -656,7 +678,7 @@ int TurboAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode,
}
// R12 to r15 are callee save on all platforms.
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
bytes += kDoubleSize * XMMRegister::kNumRegisters;
}
@@ -678,7 +700,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
}
// R12 to r15 are callee save on all platforms.
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
int delta = kDoubleSize * XMMRegister::kNumRegisters;
AllocateStackSpace(delta);
for (int i = 0; i < XMMRegister::kNumRegisters; i++) {
@@ -694,7 +716,7 @@ int TurboAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
Register exclusion2, Register exclusion3) {
int bytes = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
for (int i = 0; i < XMMRegister::kNumRegisters; i++) {
XMMRegister reg = XMMRegister::from_code(i);
Movsd(reg, Operand(rsp, i * kDoubleSize));
@@ -715,6 +737,24 @@ int TurboAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1,
return bytes;
}
+void TurboAssembler::Movq(XMMRegister dst, Register src) {
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope avx_scope(this, AVX);
+ vmovq(dst, src);
+ } else {
+ movq(dst, src);
+ }
+}
+
+void TurboAssembler::Movq(Register dst, XMMRegister src) {
+ if (CpuFeatures::IsSupported(AVX)) {
+ CpuFeatureScope avx_scope(this, AVX);
+ vmovq(dst, src);
+ } else {
+ movq(dst, src);
+ }
+}
+
void TurboAssembler::Movdqa(XMMRegister dst, Operand src) {
// See comments in Movdqa(XMMRegister, XMMRegister).
if (CpuFeatures::IsSupported(AVX)) {
@@ -1033,7 +1073,7 @@ void ConvertFloatToUint64(TurboAssembler* tasm, Register dst,
// The input value is within uint64 range and the second conversion worked
// successfully, but we still have to undo the subtraction we did
// earlier.
- tasm->Set(kScratchRegister, 0x8000000000000000);
+ tasm->Move(kScratchRegister, 0x8000000000000000);
tasm->orq(dst, kScratchRegister);
tasm->bind(&success);
}
@@ -1055,26 +1095,6 @@ void TurboAssembler::Cvttss2uiq(Register dst, XMMRegister src, Label* fail) {
ConvertFloatToUint64<XMMRegister, false>(this, dst, src, fail);
}
-void TurboAssembler::Set(Register dst, int64_t x) {
- if (x == 0) {
- xorl(dst, dst);
- } else if (is_uint32(x)) {
- movl(dst, Immediate(static_cast<uint32_t>(x)));
- } else if (is_int32(x)) {
- movq(dst, Immediate(static_cast<int32_t>(x)));
- } else {
- movq(dst, x);
- }
-}
-
-void TurboAssembler::Set(Operand dst, intptr_t x) {
- if (is_int32(x)) {
- movq(dst, Immediate(static_cast<int32_t>(x)));
- } else {
- Set(kScratchRegister, x);
- movq(dst, kScratchRegister);
- }
-}
// ----------------------------------------------------------------------------
// Smi tagging, untagging and tag detection.
@@ -1084,36 +1104,6 @@ Register TurboAssembler::GetSmiConstant(Smi source) {
return kScratchRegister;
}
-void TurboAssembler::Move(Register dst, Smi source) {
- STATIC_ASSERT(kSmiTag == 0);
- int value = source.value();
- if (value == 0) {
- xorl(dst, dst);
- } else if (SmiValuesAre32Bits() || value < 0) {
- Move(dst, source.ptr(), RelocInfo::NONE);
- } else {
- uint32_t uvalue = static_cast<uint32_t>(source.ptr());
- if (uvalue <= 0xFF) {
- // Emit shorter instructions for small Smis
- xorl(dst, dst);
- movb(dst, Immediate(uvalue));
- } else {
- movl(dst, Immediate(uvalue));
- }
- }
-}
-
-void TurboAssembler::Move(Register dst, ExternalReference ext) {
- // TODO(jgruber,v8:8887): Also consider a root-relative load when generating
- // non-isolate-independent code. In many cases it might be cheaper than
- // embedding the relocatable value.
- if (root_array_available_ && options().isolate_independent_code) {
- IndirectLoadExternalReference(dst, ext);
- return;
- }
- movq(dst, Immediate64(ext.address(), RelocInfo::EXTERNAL_REFERENCE));
-}
-
void MacroAssembler::Cmp(Register dst, int32_t src) {
if (src == 0) {
testl(dst, dst);
@@ -1335,6 +1325,39 @@ void TurboAssembler::Push(Smi source) {
// ----------------------------------------------------------------------------
+void TurboAssembler::Move(Register dst, Smi source) {
+ STATIC_ASSERT(kSmiTag == 0);
+ int value = source.value();
+ if (value == 0) {
+ xorl(dst, dst);
+ } else if (SmiValuesAre32Bits() || value < 0) {
+ Move(dst, source.ptr(), RelocInfo::NONE);
+ } else {
+ uint32_t uvalue = static_cast<uint32_t>(source.ptr());
+ Move(dst, uvalue);
+ }
+}
+
+void TurboAssembler::Move(Operand dst, intptr_t x) {
+ if (is_int32(x)) {
+ movq(dst, Immediate(static_cast<int32_t>(x)));
+ } else {
+ Move(kScratchRegister, x);
+ movq(dst, kScratchRegister);
+ }
+}
+
+void TurboAssembler::Move(Register dst, ExternalReference ext) {
+ // TODO(jgruber,v8:8887): Also consider a root-relative load when generating
+ // non-isolate-independent code. In many cases it might be cheaper than
+ // embedding the relocatable value.
+ if (root_array_available_ && options().isolate_independent_code) {
+ IndirectLoadExternalReference(dst, ext);
+ return;
+ }
+ movq(dst, Immediate64(ext.address(), RelocInfo::EXTERNAL_REFERENCE));
+}
+
void TurboAssembler::Move(Register dst, Register src) {
if (dst != src) {
movq(dst, src);
@@ -1342,7 +1365,13 @@ void TurboAssembler::Move(Register dst, Register src) {
}
void TurboAssembler::Move(Register dst, Operand src) { movq(dst, src); }
-void TurboAssembler::Move(Register dst, Immediate src) { movl(dst, src); }
+void TurboAssembler::Move(Register dst, Immediate src) {
+ if (src.rmode() == RelocInfo::Mode::NONE) {
+ Move(dst, src.value());
+ } else {
+ movl(dst, src);
+ }
+}
void TurboAssembler::Move(XMMRegister dst, XMMRegister src) {
if (dst != src) {
@@ -1481,7 +1510,7 @@ void TurboAssembler::PushArray(Register array, Register size, Register scratch,
Register counter = scratch;
Label loop, entry;
if (order == PushArrayOrder::kReverse) {
- Set(counter, 0);
+ Move(counter, 0);
jmp(&entry);
bind(&loop);
Push(Operand(array, counter, times_system_pointer_size, 0));
@@ -1681,7 +1710,7 @@ void TurboAssembler::CallBuiltin(int builtin_index) {
Move(kScratchRegister, entry, RelocInfo::OFF_HEAP_TARGET);
call(kScratchRegister);
}
- if (FLAG_code_comments) RecordComment("]");
+ RecordComment("]");
}
void TurboAssembler::TailCallBuiltin(int builtin_index) {
@@ -1698,7 +1727,7 @@ void TurboAssembler::TailCallBuiltin(int builtin_index) {
Address entry = d.InstructionStartOfBuiltin(builtin_index);
Jump(entry, RelocInfo::OFF_HEAP_TARGET);
}
- if (FLAG_code_comments) RecordComment("]");
+ RecordComment("]");
}
void TurboAssembler::LoadCodeObjectEntry(Register destination,
@@ -1854,29 +1883,6 @@ void TurboAssembler::Pmaddubsw(XMMRegister dst, XMMRegister src1,
}
}
-void TurboAssembler::Unpcklps(XMMRegister dst, XMMRegister src1, Operand src2) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope avx_scope(this, AVX);
- vunpcklps(dst, src1, src2);
- } else {
- DCHECK_EQ(dst, src1);
- unpcklps(dst, src2);
- }
-}
-
-void TurboAssembler::Shufps(XMMRegister dst, XMMRegister src1, XMMRegister src2,
- byte imm8) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope avx_scope(this, AVX);
- vshufps(dst, src1, src2, imm8);
- } else {
- if (dst != src1) {
- movaps(dst, src1);
- }
- shufps(dst, src2, imm8);
- }
-}
-
void TurboAssembler::Pextrd(Register dst, XMMRegister src, uint8_t imm8) {
if (imm8 == 0) {
Movd(dst, src);
@@ -2008,36 +2014,6 @@ void TurboAssembler::Pinsrq(XMMRegister dst, XMMRegister src1, Operand src2,
imm8, base::Optional<CpuFeature>(SSE4_1));
}
-void TurboAssembler::Psllq(XMMRegister dst, byte imm8) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vpsllq(dst, dst, imm8);
- } else {
- DCHECK(!IsEnabled(AVX));
- psllq(dst, imm8);
- }
-}
-
-void TurboAssembler::Psrlq(XMMRegister dst, byte imm8) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vpsrlq(dst, dst, imm8);
- } else {
- DCHECK(!IsEnabled(AVX));
- psrlq(dst, imm8);
- }
-}
-
-void TurboAssembler::Pslld(XMMRegister dst, byte imm8) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vpslld(dst, dst, imm8);
- } else {
- DCHECK(!IsEnabled(AVX));
- pslld(dst, imm8);
- }
-}
-
void TurboAssembler::Pblendvb(XMMRegister dst, XMMRegister src1,
XMMRegister src2, XMMRegister mask) {
if (CpuFeatures::IsSupported(AVX)) {
@@ -2375,21 +2351,6 @@ void TurboAssembler::Negpd(XMMRegister dst) {
ExternalReference::address_of_double_neg_constant()));
}
-void TurboAssembler::Psrld(XMMRegister dst, byte imm8) {
- Psrld(dst, dst, imm8);
-}
-
-void TurboAssembler::Psrld(XMMRegister dst, XMMRegister src, byte imm8) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vpsrld(dst, src, imm8);
- } else {
- DCHECK(!IsEnabled(AVX));
- DCHECK_EQ(dst, src);
- psrld(dst, imm8);
- }
-}
-
void TurboAssembler::Lzcntl(Register dst, Register src) {
if (CpuFeatures::IsSupported(LZCNT)) {
CpuFeatureScope scope(this, LZCNT);
@@ -2593,28 +2554,28 @@ void MacroAssembler::CmpInstanceTypeRange(Register map,
}
void MacroAssembler::AssertNotSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Condition is_smi = CheckSmi(object);
Check(NegateCondition(is_smi), AbortReason::kOperandIsASmi);
}
}
void MacroAssembler::AssertSmi(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Condition is_smi = CheckSmi(object);
Check(is_smi, AbortReason::kOperandIsNotASmi);
}
}
void MacroAssembler::AssertSmi(Operand object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Condition is_smi = CheckSmi(object);
Check(is_smi, AbortReason::kOperandIsNotASmi);
}
}
void TurboAssembler::AssertZeroExtended(Register int32_register) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
DCHECK_NE(int32_register, kScratchRegister);
movq(kScratchRegister, int64_t{0x0000000100000000});
cmpq(kScratchRegister, int32_register);
@@ -2623,7 +2584,7 @@ void TurboAssembler::AssertZeroExtended(Register int32_register) {
}
void MacroAssembler::AssertConstructor(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
testb(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmiAndNotAConstructor);
Push(object);
@@ -2636,7 +2597,7 @@ void MacroAssembler::AssertConstructor(Register object) {
}
void MacroAssembler::AssertFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
testb(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmiAndNotAFunction);
Push(object);
@@ -2648,7 +2609,7 @@ void MacroAssembler::AssertFunction(Register object) {
}
void MacroAssembler::AssertBoundFunction(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
testb(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmiAndNotABoundFunction);
Push(object);
@@ -2659,7 +2620,7 @@ void MacroAssembler::AssertBoundFunction(Register object) {
}
void MacroAssembler::AssertGeneratorObject(Register object) {
- if (!emit_debug_code()) return;
+ if (!FLAG_debug_code) return;
testb(object, Immediate(kSmiTagMask));
Check(not_equal, AbortReason::kOperandIsASmiAndNotAGeneratorObject);
@@ -2687,12 +2648,16 @@ void MacroAssembler::AssertGeneratorObject(Register object) {
}
void MacroAssembler::AssertUndefinedOrAllocationSite(Register object) {
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
Label done_checking;
AssertNotSmi(object);
Cmp(object, isolate()->factory()->undefined_value());
j(equal, &done_checking);
- Cmp(FieldOperand(object, 0), isolate()->factory()->allocation_site_map());
+ Register map = object;
+ Push(object);
+ LoadMap(map, object);
+ Cmp(map, isolate()->factory()->allocation_site_map());
+ Pop(object);
Assert(equal, AbortReason::kExpectedUndefinedOrCell);
bind(&done_checking);
}
@@ -2737,20 +2702,6 @@ void MacroAssembler::DecrementCounter(StatsCounter* counter, int value) {
}
}
-void MacroAssembler::MaybeDropFrames() {
- // Check whether we need to drop frames to restart a function on the stack.
- ExternalReference restart_fp =
- ExternalReference::debug_restart_fp_address(isolate());
- Load(rbx, restart_fp);
- testq(rbx, rbx);
-
- Label dont_drop;
- j(zero, &dont_drop, Label::kNear);
- Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET);
-
- bind(&dont_drop);
-}
-
void TurboAssembler::PrepareForTailCall(Register callee_args_count,
Register caller_args_count,
Register scratch0, Register scratch1) {
@@ -2801,32 +2752,32 @@ void TurboAssembler::PrepareForTailCall(Register callee_args_count,
void MacroAssembler::InvokeFunction(Register function, Register new_target,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
LoadTaggedPointerField(
rbx, FieldOperand(function, JSFunction::kSharedFunctionInfoOffset));
movzxwq(rbx,
FieldOperand(rbx, SharedFunctionInfo::kFormalParameterCountOffset));
- InvokeFunction(function, new_target, rbx, actual_parameter_count, flag);
+ InvokeFunction(function, new_target, rbx, actual_parameter_count, type);
}
void MacroAssembler::InvokeFunction(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
- DCHECK(function == rdi);
+ InvokeType type) {
+ DCHECK_EQ(function, rdi);
LoadTaggedPointerField(rsi,
FieldOperand(function, JSFunction::kContextOffset));
InvokeFunctionCode(rdi, new_target, expected_parameter_count,
- actual_parameter_count, flag);
+ actual_parameter_count, type);
}
void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
Register actual_parameter_count,
- InvokeFlag flag) {
+ InvokeType type) {
// You can't call a function without a valid frame.
- DCHECK_IMPLIES(flag == CALL_FUNCTION, has_frame());
+ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame());
DCHECK_EQ(function, rdi);
DCHECK_IMPLIES(new_target.is_valid(), new_target == rdx);
@@ -2848,17 +2799,19 @@ void MacroAssembler::InvokeFunctionCode(Register function, Register new_target,
}
Label done;
- InvokePrologue(expected_parameter_count, actual_parameter_count, &done, flag);
+ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type);
// We call indirectly through the code field in the function to
// allow recompilation to take effect without changing any of the
// call sites.
static_assert(kJavaScriptCallCodeStartRegister == rcx, "ABI mismatch");
LoadTaggedPointerField(rcx, FieldOperand(function, JSFunction::kCodeOffset));
- if (flag == CALL_FUNCTION) {
- CallCodeObject(rcx);
- } else {
- DCHECK(flag == JUMP_FUNCTION);
- JumpCodeObject(rcx);
+ switch (type) {
+ case InvokeType::kCall:
+ CallCodeObject(rcx);
+ break;
+ case InvokeType::kJump:
+ JumpCodeObject(rcx);
+ break;
}
jmp(&done, Label::kNear);
@@ -2911,7 +2864,7 @@ void MacroAssembler::StackOverflowCheck(
void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count,
- Label* done, InvokeFlag flag) {
+ Label* done, InvokeType type) {
if (expected_parameter_count != actual_parameter_count) {
Label regular_invoke;
// If the expected parameter count is equal to the adaptor sentinel, no need
@@ -2937,9 +2890,9 @@ void MacroAssembler::InvokePrologue(Register expected_parameter_count,
Operand(expected_parameter_count, times_system_pointer_size, 0));
AllocateStackSpace(kScratchRegister);
// Extra words are the receiver and the return address (if a jump).
- int extra_words = flag == CALL_FUNCTION ? 1 : 2;
+ int extra_words = type == InvokeType::kCall ? 1 : 2;
leaq(num, Operand(rax, extra_words)); // Number of words to copy.
- Set(current, 0);
+ Move(current, 0);
// Fall-through to the loop body because there are non-zero words to copy.
bind(&copy);
movq(kScratchRegister,
@@ -3034,7 +2987,7 @@ void TurboAssembler::LeaveFrame(StackFrame::Type type) {
// TODO(v8:11429): Consider passing BASELINE instead, and checking for
// IsJSFrame or similar. Could then unify with manual frame leaves in the
// interpreter too.
- if (emit_debug_code() && !StackFrame::IsJavaScript(type)) {
+ if (FLAG_debug_code && !StackFrame::IsJavaScript(type)) {
cmpq(Operand(rbp, CommonFrameConstants::kContextOrFrameTypeOffset),
Immediate(StackFrame::TypeToMarker(type)));
Check(equal, AbortReason::kStackFrameTypesMustMatch);
@@ -3043,11 +2996,11 @@ void TurboAssembler::LeaveFrame(StackFrame::Type type) {
popq(rbp);
}
-#ifdef V8_TARGET_OS_WIN
+#if defined(V8_TARGET_OS_WIN) || defined(V8_TARGET_OS_MACOSX)
void TurboAssembler::AllocateStackSpace(Register bytes_scratch) {
- // In windows, we cannot increment the stack size by more than one page
- // (minimum page size is 4KB) without accessing at least one byte on the
- // page. Check this:
+ // On Windows and on macOS, we cannot increment the stack size by more than
+ // one page (minimum page size is 4KB) without accessing at least one byte on
+ // the page. Check this:
// https://msdn.microsoft.com/en-us/library/aa227153(v=vs.60).aspx.
Label check_offset;
Label touch_next_page;
@@ -3278,7 +3231,7 @@ void TurboAssembler::CallCFunction(Register function, int num_arguments) {
DCHECK_LE(num_arguments, kMaxCParameters);
DCHECK(has_frame());
// Check stack alignment.
- if (emit_debug_code()) {
+ if (FLAG_debug_code) {
CheckStackAlignment();
}
@@ -3376,7 +3329,7 @@ void TurboAssembler::ComputeCodeStartAddress(Register dst) {
void TurboAssembler::ResetSpeculationPoisonRegister() {
// TODO(turbofan): Perhaps, we want to put an lfence here.
- Set(kSpeculationPoisonRegister, -1);
+ Move(kSpeculationPoisonRegister, -1);
}
void TurboAssembler::CallForDeoptimization(Builtins::Name target, int,
diff --git a/deps/v8/src/codegen/x64/macro-assembler-x64.h b/deps/v8/src/codegen/x64/macro-assembler-x64.h
index 40ab1b925c..da5cf7dae3 100644
--- a/deps/v8/src/codegen/x64/macro-assembler-x64.h
+++ b/deps/v8/src/codegen/x64/macro-assembler-x64.h
@@ -14,6 +14,7 @@
#include "src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h"
#include "src/codegen/x64/assembler-x64.h"
#include "src/common/globals.h"
+#include "src/execution/isolate-data.h"
#include "src/objects/contexts.h"
#include "src/objects/tagged-index.h"
@@ -25,9 +26,6 @@ using MemOperand = Operand;
class StringConstantBase;
-enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
-enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
-
struct SmiIndex {
SmiIndex(Register index_register, ScaleFactor scale)
: reg(index_register), scale(scale) {}
@@ -65,124 +63,43 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
AVX_OP(Subsd, subsd)
AVX_OP(Divss, divss)
AVX_OP(Divsd, divsd)
- AVX_OP(Orps, orps)
- AVX_OP(Xorps, xorps)
- AVX_OP(Xorpd, xorpd)
- AVX_OP(Movq, movq)
- AVX_OP(Movhlps, movhlps)
- AVX_OP(Pcmpeqb, pcmpeqb)
- AVX_OP(Pcmpeqw, pcmpeqw)
- AVX_OP(Pcmpeqd, pcmpeqd)
- AVX_OP(Pcmpgtb, pcmpgtb)
AVX_OP(Pcmpgtw, pcmpgtw)
AVX_OP(Pmaxsw, pmaxsw)
- AVX_OP(Pmaxub, pmaxub)
AVX_OP(Pminsw, pminsw)
- AVX_OP(Pminub, pminub)
AVX_OP(Addss, addss)
AVX_OP(Addsd, addsd)
AVX_OP(Mulsd, mulsd)
- AVX_OP(Andps, andps)
- AVX_OP(Andnps, andnps)
- AVX_OP(Andpd, andpd)
- AVX_OP(Andnpd, andnpd)
- AVX_OP(Orpd, orpd)
AVX_OP(Cmpeqps, cmpeqps)
AVX_OP(Cmpltps, cmpltps)
- AVX_OP(Cmpleps, cmpleps)
AVX_OP(Cmpneqps, cmpneqps)
AVX_OP(Cmpnltps, cmpnltps)
AVX_OP(Cmpnleps, cmpnleps)
- AVX_OP(Cmpeqpd, cmpeqpd)
- AVX_OP(Cmpltpd, cmpltpd)
- AVX_OP(Cmplepd, cmplepd)
- AVX_OP(Cmpneqpd, cmpneqpd)
AVX_OP(Cmpnltpd, cmpnltpd)
AVX_OP(Cmpnlepd, cmpnlepd)
- AVX_OP(Sqrtss, sqrtss)
- AVX_OP(Sqrtsd, sqrtsd)
AVX_OP(Cvttpd2dq, cvttpd2dq)
AVX_OP(Ucomiss, ucomiss)
AVX_OP(Ucomisd, ucomisd)
- AVX_OP(Pand, pand)
- AVX_OP(Por, por)
- AVX_OP(Pxor, pxor)
- AVX_OP(Psubb, psubb)
- AVX_OP(Psubw, psubw)
- AVX_OP(Psubd, psubd)
- AVX_OP(Psubq, psubq)
- AVX_OP(Psubsb, psubsb)
AVX_OP(Psubsw, psubsw)
- AVX_OP(Psubusb, psubusb)
AVX_OP(Psubusw, psubusw)
- AVX_OP(Pslld, pslld)
- AVX_OP(Pavgb, pavgb)
- AVX_OP(Pavgw, pavgw)
- AVX_OP(Psraw, psraw)
- AVX_OP(Psrad, psrad)
- AVX_OP(Psllw, psllw)
- AVX_OP(Psllq, psllq)
- AVX_OP(Psrlw, psrlw)
- AVX_OP(Psrld, psrld)
- AVX_OP(Psrlq, psrlq)
- AVX_OP(Paddb, paddb)
- AVX_OP(Paddw, paddw)
- AVX_OP(Paddd, paddd)
- AVX_OP(Paddq, paddq)
- AVX_OP(Paddsb, paddsb)
AVX_OP(Paddsw, paddsw)
- AVX_OP(Paddusb, paddusb)
- AVX_OP(Paddusw, paddusw)
AVX_OP(Pcmpgtd, pcmpgtd)
- AVX_OP(Pmuludq, pmuludq)
- AVX_OP(Addpd, addpd)
- AVX_OP(Subpd, subpd)
- AVX_OP(Mulpd, mulpd)
- AVX_OP(Minps, minps)
- AVX_OP(Minpd, minpd)
- AVX_OP(Divpd, divpd)
- AVX_OP(Maxps, maxps)
- AVX_OP(Maxpd, maxpd)
- AVX_OP(Addps, addps)
- AVX_OP(Subps, subps)
- AVX_OP(Mulps, mulps)
- AVX_OP(Divps, divps)
- AVX_OP(Packsswb, packsswb)
- AVX_OP(Packuswb, packuswb)
- AVX_OP(Packssdw, packssdw)
- AVX_OP(Punpcklbw, punpcklbw)
- AVX_OP(Punpcklwd, punpcklwd)
- AVX_OP(Punpckldq, punpckldq)
- AVX_OP(Punpckhbw, punpckhbw)
- AVX_OP(Punpckhwd, punpckhwd)
- AVX_OP(Punpckhdq, punpckhdq)
- AVX_OP(Punpcklqdq, punpcklqdq)
- AVX_OP(Punpckhqdq, punpckhqdq)
- AVX_OP(Cmpps, cmpps)
- AVX_OP(Cmppd, cmppd)
+ AVX_OP(Pcmpeqb, pcmpeqb)
+ AVX_OP(Pcmpeqw, pcmpeqw)
+ AVX_OP(Pcmpeqd, pcmpeqd)
AVX_OP(Movlhps, movlhps)
- AVX_OP_SSE3(Haddps, haddps)
AVX_OP_SSSE3(Phaddd, phaddd)
AVX_OP_SSSE3(Phaddw, phaddw)
AVX_OP_SSSE3(Pshufb, pshufb)
- AVX_OP_SSSE3(Psignb, psignb)
- AVX_OP_SSSE3(Psignw, psignw)
- AVX_OP_SSSE3(Psignd, psignd)
- AVX_OP_SSSE3(Palignr, palignr)
AVX_OP_SSE4_1(Pcmpeqq, pcmpeqq)
AVX_OP_SSE4_1(Packusdw, packusdw)
- AVX_OP_SSE4_1(Pminsb, pminsb)
AVX_OP_SSE4_1(Pminsd, pminsd)
AVX_OP_SSE4_1(Pminuw, pminuw)
AVX_OP_SSE4_1(Pminud, pminud)
- AVX_OP_SSE4_1(Pmaxsb, pmaxsb)
- AVX_OP_SSE4_1(Pmaxsd, pmaxsd)
AVX_OP_SSE4_1(Pmaxuw, pmaxuw)
AVX_OP_SSE4_1(Pmaxud, pmaxud)
AVX_OP_SSE4_1(Pmulld, pmulld)
AVX_OP_SSE4_1(Insertps, insertps)
AVX_OP_SSE4_1(Pinsrq, pinsrq)
- AVX_OP_SSE4_1(Pblendw, pblendw)
AVX_OP_SSE4_1(Pextrq, pextrq)
AVX_OP_SSE4_1(Roundss, roundss)
AVX_OP_SSE4_1(Roundsd, roundsd)
@@ -190,6 +107,12 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
#undef AVX_OP
+ // Define movq here instead of using AVX_OP. movq is defined using templates
+ // and there is a function template `void movq(P1)`, while technically
+ // impossible, will be selected when deducing the arguments for AvxHelper.
+ void Movq(XMMRegister dst, Register src);
+ void Movq(Register dst, XMMRegister src);
+
void PushReturnAddressFrom(Register src) { pushq(src); }
void PopReturnAddressTo(Register dst) { popq(dst); }
@@ -199,10 +122,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
// may be bigger than 2^16 - 1. Requires a scratch register.
void Ret(int bytes_dropped, Register scratch);
- // Load a register with a long value as efficiently as possible.
- void Set(Register dst, int64_t x);
- void Set(Operand dst, intptr_t x);
-
// Operations on roots in the root-array.
void LoadRoot(Register destination, RootIndex index) override;
void LoadRoot(Operand destination, RootIndex index) {
@@ -323,8 +242,28 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
j(less, dest);
}
+#ifdef V8_MAP_PACKING
+ void UnpackMapWord(Register r);
+#endif
+
void LoadMap(Register destination, Register object);
+ void Move(Register dst, intptr_t x) {
+ if (x == 0) {
+ xorl(dst, dst);
+ } else if (is_uint8(x)) {
+ xorl(dst, dst);
+ movb(dst, Immediate(static_cast<uint32_t>(x)));
+ } else if (is_uint32(x)) {
+ movl(dst, Immediate(static_cast<uint32_t>(x)));
+ } else if (is_int32(x)) {
+ // "movq reg64, imm32" is sign extending.
+ movq(dst, Immediate(static_cast<int32_t>(x)));
+ } else {
+ movq(dst, Immediate64(x));
+ }
+ }
+ void Move(Operand dst, intptr_t x);
void Move(Register dst, Smi source);
void Move(Operand dst, Smi source) {
@@ -332,13 +271,9 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
movq(dst, constant);
}
- void Move(Register dst, TaggedIndex source) {
- movl(dst, Immediate(static_cast<uint32_t>(source.ptr())));
- }
+ void Move(Register dst, TaggedIndex source) { Move(dst, source.ptr()); }
- void Move(Operand dst, TaggedIndex source) {
- movl(dst, Immediate(static_cast<uint32_t>(source.ptr())));
- }
+ void Move(Operand dst, TaggedIndex source) { Move(dst, source.ptr()); }
void Move(Register dst, ExternalReference ext);
@@ -449,10 +384,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
void Pmaddubsw(XMMRegister dst, XMMRegister src1, Operand src2);
void Pmaddubsw(XMMRegister dst, XMMRegister src1, XMMRegister src2);
- void Unpcklps(XMMRegister dst, XMMRegister src1, Operand src2);
- // Shufps that will mov src1 into dst if AVX is not supported.
- void Shufps(XMMRegister dst, XMMRegister src1, XMMRegister src2, byte imm8);
-
// Non-SSE2 instructions.
void Pextrd(Register dst, XMMRegister src, uint8_t imm8);
@@ -467,16 +398,6 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
void Pinsrq(XMMRegister dst, XMMRegister src1, Register src2, uint8_t imm8);
void Pinsrq(XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8);
- void Psllq(XMMRegister dst, int imm8) { Psllq(dst, static_cast<byte>(imm8)); }
- void Psllq(XMMRegister dst, byte imm8);
- void Psrlq(XMMRegister dst, int imm8) { Psrlq(dst, static_cast<byte>(imm8)); }
- void Psrlq(XMMRegister dst, byte imm8);
- void Pslld(XMMRegister dst, byte imm8);
- void Psrld(XMMRegister dst, byte imm8);
-
- // Supports both AVX (dst != src1) and SSE (checks that dst == src1).
- void Psrld(XMMRegister dst, XMMRegister src, byte imm8);
-
void Pblendvb(XMMRegister dst, XMMRegister src1, XMMRegister src2,
XMMRegister mask);
void Blendvps(XMMRegister dst, XMMRegister src1, XMMRegister src2,
@@ -551,7 +472,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
// stack check, do it before calling this function because this function may
// write into the newly allocated space. It may also overwrite the given
// register's value, in the version that takes a register.
-#ifdef V8_TARGET_OS_WIN
+#if defined(V8_TARGET_OS_WIN) || defined(V8_TARGET_OS_MACOSX)
void AllocateStackSpace(Register bytes_scratch);
void AllocateStackSpace(int bytes);
#else
@@ -575,7 +496,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
ExternalReference isolate_root = ExternalReference::isolate_root(isolate());
Move(kRootRegister, isolate_root);
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
- Move(kPointerCageBaseRegister, isolate_root);
+ LoadRootRelative(kPtrComprCageBaseRegister,
+ IsolateData::cage_base_offset());
#endif
}
@@ -675,10 +597,13 @@ class V8_EXPORT_PRIVATE TurboAssembler : public SharedTurboAssembler {
// ---------------------------------------------------------------------------
// V8 Heap sandbox support
+ enum class IsolateRootLocation { kInScratchRegister, kInRootRegister };
// Loads a field containing off-heap pointer and does necessary decoding
// if V8 heap sandbox is enabled.
void LoadExternalPointerField(Register destination, Operand field_operand,
- ExternalPointerTag tag);
+ ExternalPointerTag tag, Register scratch,
+ IsolateRootLocation isolateRootLocation =
+ IsolateRootLocation::kInRootRegister);
protected:
static const int kSmiShift = kSmiTagSize + kSmiShiftSize;
@@ -751,8 +676,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
void RecordWriteField(
Register object, int offset, Register value, Register scratch,
SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// For page containing |object| mark region covering |address|
// dirty. |object| is the object being stored into, |value| is the
@@ -761,11 +686,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// the write barrier if the value is a smi.
void RecordWrite(
Register object, Register address, Register value, SaveFPRegsMode save_fp,
- RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
- SmiCheck smi_check = INLINE_SMI_CHECK);
-
- // Frame restart support.
- void MaybeDropFrames();
+ RememberedSetAction remembered_set_action = RememberedSetAction::kEmit,
+ SmiCheck smi_check = SmiCheck::kInline);
// Enter specific kind of exit frame; either in normal or
// debug mode. Expects the number of arguments in register rax and
@@ -797,7 +719,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function code by either calling or jumping.
void InvokeFunctionCode(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// On function call, call into the debugger.
void CallDebugOnFunctionCall(Register fun, Register new_target,
@@ -807,11 +729,11 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Invoke the JavaScript function in the given register. Changes the
// current context to the context in the function before invoking.
void InvokeFunction(Register function, Register new_target,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
void InvokeFunction(Register function, Register new_target,
Register expected_parameter_count,
- Register actual_parameter_count, InvokeFlag flag);
+ Register actual_parameter_count, InvokeType type);
// ---------------------------------------------------------------------------
// Conversions between tagged smi values and non-tagged integer values.
@@ -975,18 +897,18 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Call a runtime routine.
void CallRuntime(const Runtime::Function* f, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs);
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
const Runtime::Function* function = Runtime::FunctionForId(fid);
CallRuntime(function, function->nargs, save_doubles);
}
// Convenience function: Same as above, but takes the fid instead.
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
+ SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
}
@@ -1017,7 +939,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Helper functions for generating invokes.
void InvokePrologue(Register expected_parameter_count,
Register actual_parameter_count, Label* done,
- InvokeFlag flag);
+ InvokeType type);
void EnterExitFramePrologue(Register saved_rax_reg,
StackFrame::Type frame_type);
diff --git a/deps/v8/src/codegen/x64/register-x64.h b/deps/v8/src/codegen/x64/register-x64.h
index 9a812d06a1..61e7ccf396 100644
--- a/deps/v8/src/codegen/x64/register-x64.h
+++ b/deps/v8/src/codegen/x64/register-x64.h
@@ -212,7 +212,7 @@ constexpr Register kReturnRegister2 = r8;
constexpr Register kJSFunctionRegister = rdi;
constexpr Register kContextRegister = rsi;
constexpr Register kAllocateSizeRegister = rdx;
-constexpr Register kSpeculationPoisonRegister = r12;
+constexpr Register kSpeculationPoisonRegister = r11;
constexpr Register kInterpreterAccumulatorRegister = rax;
constexpr Register kInterpreterBytecodeOffsetRegister = r9;
constexpr Register kInterpreterBytecodeArrayRegister = r12;
@@ -236,9 +236,9 @@ constexpr Register kScratchRegister = r10;
constexpr XMMRegister kScratchDoubleReg = xmm15;
constexpr Register kRootRegister = r13; // callee save
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
-constexpr Register kPointerCageBaseRegister = r14; // callee save
+constexpr Register kPtrComprCageBaseRegister = r14; // callee save
#else
-constexpr Register kPointerCageBaseRegister = kRootRegister;
+constexpr Register kPtrComprCageBaseRegister = kRootRegister;
#endif
constexpr Register kOffHeapTrampolineRegister = kScratchRegister;
diff --git a/deps/v8/src/common/external-pointer-inl.h b/deps/v8/src/common/external-pointer-inl.h
index bc7aea3691..737bd55e5c 100644
--- a/deps/v8/src/common/external-pointer-inl.h
+++ b/deps/v8/src/common/external-pointer-inl.h
@@ -12,20 +12,13 @@
namespace v8 {
namespace internal {
-V8_INLINE Address DecodeExternalPointer(PtrComprCageBase isolate_root,
+V8_INLINE Address DecodeExternalPointer(const Isolate* isolate,
ExternalPointer_t encoded_pointer,
ExternalPointerTag tag) {
STATIC_ASSERT(kExternalPointerSize == kSystemPointerSize);
#ifdef V8_HEAP_SANDBOX
-
- // TODO(syg): V8_HEAP_SANDBOX doesn't work with pointer cage
-#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
-#error "V8_HEAP_SANDBOX requires per-Isolate pointer compression cage"
-#endif
-
uint32_t index = static_cast<uint32_t>(encoded_pointer);
- const Isolate* isolate = Isolate::FromRootAddress(isolate_root.address());
- return isolate->external_pointer_table().get(index) ^ tag;
+ return isolate->external_pointer_table().get(index) & ~tag;
#else
return encoded_pointer;
#endif
@@ -47,9 +40,10 @@ V8_INLINE void InitExternalPointerField(Address field_address,
V8_INLINE void InitExternalPointerField(Address field_address, Isolate* isolate,
Address value, ExternalPointerTag tag) {
#ifdef V8_HEAP_SANDBOX
+ DCHECK_EQ(value & kExternalPointerTagMask, 0);
ExternalPointer_t index = isolate->external_pointer_table().allocate();
isolate->external_pointer_table().set(static_cast<uint32_t>(index),
- value ^ tag);
+ value | tag);
static_assert(kExternalPointerSize == kSystemPointerSize,
"Review the code below, once kExternalPointerSize is 4-byte "
"the address of the field will always be aligned");
@@ -68,7 +62,7 @@ V8_INLINE void InitExternalPointerField(Address field_address, Isolate* isolate,
}
V8_INLINE Address ReadExternalPointerField(Address field_address,
- PtrComprCageBase cage_base,
+ const Isolate* isolate,
ExternalPointerTag tag) {
// Pointer compression causes types larger than kTaggedSize to be unaligned.
constexpr bool v8_pointer_compression_unaligned =
@@ -79,7 +73,7 @@ V8_INLINE Address ReadExternalPointerField(Address field_address,
} else {
encoded_value = base::Memory<ExternalPointer_t>(field_address);
}
- return DecodeExternalPointer(cage_base, encoded_value, tag);
+ return DecodeExternalPointer(isolate, encoded_value, tag);
}
V8_INLINE void WriteExternalPointerField(Address field_address,
@@ -89,11 +83,12 @@ V8_INLINE void WriteExternalPointerField(Address field_address,
static_assert(kExternalPointerSize == kSystemPointerSize,
"Review the code below, once kExternalPointerSize is 4-byte "
"the address of the field will always be aligned");
+ DCHECK_EQ(value & kExternalPointerTagMask, 0);
ExternalPointer_t index =
base::ReadUnalignedValue<ExternalPointer_t>(field_address);
isolate->external_pointer_table().set(static_cast<uint32_t>(index),
- value ^ tag);
+ value | tag);
#else
// Pointer compression causes types larger than kTaggedSize to be unaligned.
constexpr bool v8_pointer_compression_unaligned =
diff --git a/deps/v8/src/common/external-pointer.h b/deps/v8/src/common/external-pointer.h
index c0941f2978..5c1995749c 100644
--- a/deps/v8/src/common/external-pointer.h
+++ b/deps/v8/src/common/external-pointer.h
@@ -12,7 +12,7 @@ namespace internal {
// Convert external pointer from on-V8-heap representation to an actual external
// pointer value.
-V8_INLINE Address DecodeExternalPointer(PtrComprCageBase isolate,
+V8_INLINE Address DecodeExternalPointer(const Isolate* isolate,
ExternalPointer_t encoded_pointer,
ExternalPointerTag tag);
@@ -34,7 +34,7 @@ V8_INLINE void InitExternalPointerField(Address field_address, Isolate* isolate,
// Reads external pointer for the field, and decodes it if the sandbox is
// enabled.
V8_INLINE Address ReadExternalPointerField(Address field_address,
- PtrComprCageBase isolate,
+ const Isolate* isolate,
ExternalPointerTag tag);
// Encodes value if the sandbox is enabled and writes it into the field.
diff --git a/deps/v8/src/common/globals.h b/deps/v8/src/common/globals.h
index f51c3210f8..1be0efd023 100644
--- a/deps/v8/src/common/globals.h
+++ b/deps/v8/src/common/globals.h
@@ -209,6 +209,15 @@ constexpr int kElidedFrameSlots = 0;
#endif
constexpr int kDoubleSizeLog2 = 3;
+// The maximal length of the string representation for a double value
+// (e.g. "-2.2250738585072020E-308"). It is composed as follows:
+// - 17 decimal digits, see kBase10MaximalLength (dtoa.h)
+// - 1 sign
+// - 1 decimal point
+// - 1 E or e
+// - 1 exponent sign
+// - 3 exponent
+constexpr int kMaxDoubleStringLength = 24;
// Total wasm code space per engine (i.e. per process) is limited to make
// certain attacks that rely on heap spraying harder.
@@ -457,11 +466,11 @@ inline LanguageMode stricter_language_mode(LanguageMode mode1,
// a keyed store is of the form a[expression] = foo.
enum class StoreOrigin { kMaybeKeyed, kNamed };
-enum TypeofMode : int { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF };
+enum class TypeofMode { kInside, kNotInside };
// Enums used by CEntry.
-enum SaveFPRegsMode { kDontSaveFPRegs, kSaveFPRegs };
-enum ArgvMode { kArgvOnStack, kArgvInRegister };
+enum class SaveFPRegsMode { kIgnore, kSave };
+enum class ArgvMode { kStack, kRegister };
// This constant is used as an undefined value when passing source positions.
constexpr int kNoSourcePosition = -1;
@@ -789,11 +798,14 @@ constexpr int kSpaceTagSize = 4;
STATIC_ASSERT(FIRST_SPACE == 0);
enum class AllocationType : uint8_t {
- kYoung, // Regular object allocated in NEW_SPACE or NEW_LO_SPACE
- kOld, // Regular object allocated in OLD_SPACE or LO_SPACE
- kCode, // Code object allocated in CODE_SPACE or CODE_LO_SPACE
- kMap, // Map object allocated in MAP_SPACE
- kReadOnly // Object allocated in RO_SPACE
+ kYoung, // Regular object allocated in NEW_SPACE or NEW_LO_SPACE
+ kOld, // Regular object allocated in OLD_SPACE or LO_SPACE
+ kCode, // Code object allocated in CODE_SPACE or CODE_LO_SPACE
+ kMap, // Map object allocated in MAP_SPACE
+ kReadOnly, // Object allocated in RO_SPACE
+ kSharedOld, // Regular object allocated in SHARED_OLD_SPACE or
+ // SHARED_LO_SPACE
+ kSharedMap, // Map object in SHARED_MAP_SPACE
};
inline size_t hash_value(AllocationType kind) {
@@ -812,6 +824,10 @@ inline std::ostream& operator<<(std::ostream& os, AllocationType kind) {
return os << "Map";
case AllocationType::kReadOnly:
return os << "ReadOnly";
+ case AllocationType::kSharedOld:
+ return os << "SharedOld";
+ case AllocationType::kSharedMap:
+ return os << "SharedMap";
}
UNREACHABLE();
}
@@ -880,6 +896,8 @@ enum InlineCacheState {
RECOMPUTE_HANDLER,
// Multiple receiver types have been seen.
POLYMORPHIC,
+ // Many DOM receiver types have been seen for the same accessor.
+ MEGADOM,
// Many receiver types have been seen.
MEGAMORPHIC,
// A generic handler is installed and no extra typefeedback is recorded.
@@ -901,6 +919,8 @@ inline const char* InlineCacheState2String(InlineCacheState state) {
return "POLYMORPHIC";
case MEGAMORPHIC:
return "MEGAMORPHIC";
+ case MEGADOM:
+ return "MEGADOM";
case GENERIC:
return "GENERIC";
}
@@ -1602,6 +1622,7 @@ inline std::ostream& operator<<(std::ostream& os,
}
enum class SpeculationMode { kAllowSpeculation, kDisallowSpeculation };
+enum class CallFeedbackContent { kTarget, kReceiver };
inline std::ostream& operator<<(std::ostream& os,
SpeculationMode speculation_mode) {
@@ -1758,6 +1779,10 @@ class PtrComprCageBase {
inline Address address() const;
+ bool operator==(const PtrComprCageBase& other) const {
+ return address_ == other.address_;
+ }
+
private:
Address address_;
};
diff --git a/deps/v8/src/common/message-template.h b/deps/v8/src/common/message-template.h
index 5193a0bae3..6d7116f73e 100644
--- a/deps/v8/src/common/message-template.h
+++ b/deps/v8/src/common/message-template.h
@@ -330,6 +330,8 @@ namespace internal {
"Expected letters optionally connected with underscores or hyphens for " \
"a location, got %") \
T(InvalidArrayBufferLength, "Invalid array buffer length") \
+ T(InvalidArrayBufferMaxLength, "Invalid array buffer max length") \
+ T(InvalidArrayBufferResizeLength, "%: Invalid length parameter") \
T(ArrayBufferAllocationFailed, "Array buffer allocation failed") \
T(Invalid, "Invalid % : %") \
T(InvalidArrayLength, "Invalid array length") \
@@ -354,6 +356,7 @@ namespace internal {
T(LetInLexicalBinding, "let is disallowed as a lexically bound name") \
T(LocaleMatcher, "Illegal value for localeMatcher:%") \
T(NormalizationForm, "The normalization form should be one of %.") \
+ T(OutOfMemory, "%: Out of memory") \
T(ParameterOfFunctionOutOfRange, \
"Paramenter % of function %() is % and out of range") \
T(ZeroDigitNumericSeparator, \
@@ -564,7 +567,7 @@ namespace internal {
T(WasmTrapRemByZero, "remainder by zero") \
T(WasmTrapFloatUnrepresentable, "float unrepresentable in integer range") \
T(WasmTrapTableOutOfBounds, "table index is out of bounds") \
- T(WasmTrapFuncSigMismatch, "function signature mismatch") \
+ T(WasmTrapFuncSigMismatch, "null function or function signature mismatch") \
T(WasmTrapMultiReturnLengthMismatch, "multi-return length mismatch") \
T(WasmTrapJSTypeError, "type incompatibility when transforming from/to JS") \
T(WasmTrapDataSegmentDropped, "data segment has been dropped") \
diff --git a/deps/v8/src/common/ptr-compr-inl.h b/deps/v8/src/common/ptr-compr-inl.h
index 66c22311b0..7a4d940891 100644
--- a/deps/v8/src/common/ptr-compr-inl.h
+++ b/deps/v8/src/common/ptr-compr-inl.h
@@ -15,30 +15,10 @@ namespace internal {
#ifdef V8_COMPRESS_POINTERS
-#if defined V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
-
-PtrComprCageBase::PtrComprCageBase(const Isolate* isolate)
- : address_(isolate->isolate_root()) {}
-PtrComprCageBase::PtrComprCageBase(const LocalIsolate* isolate)
- : address_(isolate->isolate_root()) {}
-
-#elif defined V8_COMPRESS_POINTERS_IN_SHARED_CAGE
-
PtrComprCageBase::PtrComprCageBase(const Isolate* isolate)
- : address_(isolate->isolate_root()) {
- UNIMPLEMENTED();
-}
+ : address_(isolate->cage_base()) {}
PtrComprCageBase::PtrComprCageBase(const LocalIsolate* isolate)
- : address_(isolate->isolate_root()) {
- UNIMPLEMENTED();
-}
-
-#else
-
-#error "Pointer compression build configuration error"
-
-#endif // V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE,
- // V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+ : address_(isolate->cage_base()) {}
Address PtrComprCageBase::address() const {
Address ret = address_;
diff --git a/deps/v8/src/compiler-dispatcher/compiler-dispatcher.cc b/deps/v8/src/compiler-dispatcher/compiler-dispatcher.cc
index a22c79e0ad..2af0fd498c 100644
--- a/deps/v8/src/compiler-dispatcher/compiler-dispatcher.cc
+++ b/deps/v8/src/compiler-dispatcher/compiler-dispatcher.cc
@@ -59,8 +59,7 @@ base::Optional<CompilerDispatcher::JobId> CompilerDispatcher::Enqueue(
const FunctionLiteral* function_literal) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompilerDispatcherEnqueue");
- RuntimeCallTimerScope runtimeTimer(
- isolate_, RuntimeCallCounterId::kCompileEnqueueOnDispatcher);
+ RCS_SCOPE(isolate_, RuntimeCallCounterId::kCompileEnqueueOnDispatcher);
if (!IsEnabled()) return base::nullopt;
@@ -129,8 +128,7 @@ void CompilerDispatcher::RegisterSharedFunctionInfo(
void CompilerDispatcher::WaitForJobIfRunningOnBackground(Job* job) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompilerDispatcherWaitForBackgroundJob");
- RuntimeCallTimerScope runtimeTimer(
- isolate_, RuntimeCallCounterId::kCompileWaitForDispatcher);
+ RCS_SCOPE(isolate_, RuntimeCallCounterId::kCompileWaitForDispatcher);
base::MutexGuard lock(&mutex_);
if (running_background_jobs_.find(job) == running_background_jobs_.end()) {
@@ -149,8 +147,7 @@ void CompilerDispatcher::WaitForJobIfRunningOnBackground(Job* job) {
bool CompilerDispatcher::FinishNow(Handle<SharedFunctionInfo> function) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompilerDispatcherFinishNow");
- RuntimeCallTimerScope runtimeTimer(
- isolate_, RuntimeCallCounterId::kCompileFinishNowOnDispatcher);
+ RCS_SCOPE(isolate_, RuntimeCallCounterId::kCompileFinishNowOnDispatcher);
if (trace_compiler_dispatcher_) {
PrintF("CompilerDispatcher: finishing ");
function->ShortPrint();
diff --git a/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc b/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc
index 73292dd5ad..c7727c951b 100644
--- a/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc
+++ b/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc
@@ -57,16 +57,19 @@ class OptimizingCompileDispatcher::CompileTask : public CancelableTask {
private:
// v8::Task overrides.
void RunInternal() override {
+#ifdef V8_RUNTIME_CALL_STATS
WorkerThreadRuntimeCallStatsScope runtime_call_stats_scope(
worker_thread_runtime_call_stats_);
LocalIsolate local_isolate(isolate_, ThreadKind::kBackground,
runtime_call_stats_scope.Get());
+#else // V8_RUNTIME_CALL_STATS
+ LocalIsolate local_isolate(isolate_, ThreadKind::kBackground);
+#endif // V8_RUNTIME_CALL_STATS
DCHECK(local_isolate.heap()->IsParked());
{
- RuntimeCallTimerScope runtimeTimer(
- runtime_call_stats_scope.Get(),
- RuntimeCallCounterId::kOptimizeBackgroundDispatcherJob);
+ RCS_SCOPE(runtime_call_stats_scope.Get(),
+ RuntimeCallCounterId::kOptimizeBackgroundDispatcherJob);
TimerEventScope<TimerEventRecompileConcurrent> timer(isolate_);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
@@ -78,7 +81,7 @@ class OptimizingCompileDispatcher::CompileTask : public CancelableTask {
}
dispatcher_->CompileNext(dispatcher_->NextInput(&local_isolate),
- runtime_call_stats_scope.Get(), &local_isolate);
+ &local_isolate);
}
{
base::MutexGuard lock_guard(&dispatcher_->ref_count_mutex_);
@@ -111,12 +114,12 @@ OptimizedCompilationJob* OptimizingCompileDispatcher::NextInput(
}
void OptimizingCompileDispatcher::CompileNext(OptimizedCompilationJob* job,
- RuntimeCallStats* stats,
LocalIsolate* local_isolate) {
if (!job) return;
// The function may have already been optimized by OSR. Simply continue.
- CompilationJob::Status status = job->ExecuteJob(stats, local_isolate);
+ CompilationJob::Status status =
+ job->ExecuteJob(local_isolate->runtime_call_stats(), local_isolate);
USE(status); // Prevent an unused-variable error.
{
@@ -167,6 +170,7 @@ void OptimizingCompileDispatcher::FlushQueues(
}
void OptimizingCompileDispatcher::Flush(BlockingBehavior blocking_behavior) {
+ HandleScope handle_scope(isolate_);
FlushQueues(blocking_behavior, true);
if (FLAG_trace_concurrent_recompilation) {
PrintF(" ** Flushed concurrent recompilation queues. (mode: %s)\n",
@@ -176,6 +180,7 @@ void OptimizingCompileDispatcher::Flush(BlockingBehavior blocking_behavior) {
}
void OptimizingCompileDispatcher::Stop() {
+ HandleScope handle_scope(isolate_);
FlushQueues(BlockingBehavior::kBlock, false);
// At this point the optimizing compiler thread's event loop has stopped.
// There is no need for a mutex when reading input_queue_length_.
diff --git a/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h b/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h
index 37454c67e0..4ae966192f 100644
--- a/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h
+++ b/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h
@@ -64,8 +64,7 @@ class V8_EXPORT_PRIVATE OptimizingCompileDispatcher {
bool restore_function_code);
void FlushInputQueue();
void FlushOutputQueue(bool restore_function_code);
- void CompileNext(OptimizedCompilationJob* job, RuntimeCallStats* stats,
- LocalIsolate* local_isolate);
+ void CompileNext(OptimizedCompilationJob* job, LocalIsolate* local_isolate);
OptimizedCompilationJob* NextInput(LocalIsolate* local_isolate);
inline int InputQueueIndex(int i) {
diff --git a/deps/v8/src/compiler/OWNERS b/deps/v8/src/compiler/OWNERS
index 5260502f32..1626bc5487 100644
--- a/deps/v8/src/compiler/OWNERS
+++ b/deps/v8/src/compiler/OWNERS
@@ -11,6 +11,8 @@ per-file wasm-*=bbudge@chromium.org
per-file wasm-*=clemensb@chromium.org
per-file wasm-*=gdeepti@chromium.org
per-file wasm-*=jkummerow@chromium.org
+per-file wasm-*=manoskouk@chromium.org
+per-file wasm-*=thibaudm@chromium.org
per-file int64-lowering.*=ahaas@chromium.org
@@ -23,7 +25,3 @@ per-file opcodes.*=ahaas@chromium.org
per-file opcodes.*=bbudge@chromium.org
per-file opcodes.*=gdeepti@chromium.org
per-file opcodes.*=zhin@chromium.org
-
-per-file simd-scalar-lowering.*=bbudge@chromium.org
-per-file simd-scalar-lowering.*=gdeepti@chromium.org
-per-file simd-scalar-lowering.*=zhin@chromium.org
diff --git a/deps/v8/src/compiler/access-builder.cc b/deps/v8/src/compiler/access-builder.cc
index 3cc4000d12..675371df57 100644
--- a/deps/v8/src/compiler/access-builder.cc
+++ b/deps/v8/src/compiler/access-builder.cc
@@ -31,11 +31,11 @@ FieldAccess AccessBuilder::ForExternalIntPtr() {
}
// static
-FieldAccess AccessBuilder::ForMap() {
+FieldAccess AccessBuilder::ForMap(WriteBarrierKind write_barrier) {
FieldAccess access = {kTaggedBase, HeapObject::kMapOffset,
MaybeHandle<Name>(), MaybeHandle<Map>(),
- Type::OtherInternal(), MachineType::TaggedPointer(),
- kMapWriteBarrier};
+ Type::OtherInternal(), MachineType::MapInHeader(),
+ write_barrier};
return access;
}
@@ -105,12 +105,12 @@ FieldAccess AccessBuilder::ForJSObjectElements() {
}
// static
-FieldAccess AccessBuilder::ForJSObjectInObjectProperty(const MapRef& map,
- int index) {
+FieldAccess AccessBuilder::ForJSObjectInObjectProperty(
+ const MapRef& map, int index, MachineType machine_type) {
int const offset = map.GetInObjectPropertyOffset(index);
FieldAccess access = {kTaggedBase, offset,
MaybeHandle<Name>(), MaybeHandle<Map>(),
- Type::NonInternal(), MachineType::AnyTagged(),
+ Type::NonInternal(), machine_type,
kFullWriteBarrier};
return access;
}
@@ -760,7 +760,7 @@ FieldAccess AccessBuilder::ForExternalStringResourceData() {
ConstFieldInfo::None(),
false,
#ifdef V8_HEAP_SANDBOX
- kExternalStringResourceTag,
+ kExternalStringResourceDataTag,
#endif
};
return access;
diff --git a/deps/v8/src/compiler/access-builder.h b/deps/v8/src/compiler/access-builder.h
index 08e11179ba..fa68628cf8 100644
--- a/deps/v8/src/compiler/access-builder.h
+++ b/deps/v8/src/compiler/access-builder.h
@@ -31,7 +31,7 @@ class V8_EXPORT_PRIVATE AccessBuilder final
// Access to heap object fields and elements (based on tagged pointer).
// Provides access to HeapObject::map() field.
- static FieldAccess ForMap();
+ static FieldAccess ForMap(WriteBarrierKind write_barrier = kMapWriteBarrier);
// Provides access to HeapNumber::value() field.
static FieldAccess ForHeapNumberValue();
@@ -58,7 +58,9 @@ class V8_EXPORT_PRIVATE AccessBuilder final
static FieldAccess ForJSObjectElements();
// Provides access to JSObject inobject property fields.
- static FieldAccess ForJSObjectInObjectProperty(const MapRef& map, int index);
+ static FieldAccess ForJSObjectInObjectProperty(
+ const MapRef& map, int index,
+ MachineType machine_type = MachineType::AnyTagged());
static FieldAccess ForJSObjectOffset(
int offset, WriteBarrierKind write_barrier_kind = kFullWriteBarrier);
diff --git a/deps/v8/src/compiler/access-info.cc b/deps/v8/src/compiler/access-info.cc
index bc3f113eb7..0e3ccc1948 100644
--- a/deps/v8/src/compiler/access-info.cc
+++ b/deps/v8/src/compiler/access-info.cc
@@ -385,9 +385,10 @@ AccessInfoFactory::AccessInfoFactory(JSHeapBroker* broker,
base::Optional<ElementAccessInfo> AccessInfoFactory::ComputeElementAccessInfo(
Handle<Map> map, AccessMode access_mode) const {
// Check if it is safe to inline element access for the {map}.
- MapRef map_ref(broker(), map);
- if (!CanInlineElementAccess(map_ref)) return base::nullopt;
- ElementsKind const elements_kind = map_ref.elements_kind();
+ base::Optional<MapRef> map_ref = TryMakeRef(broker(), map);
+ if (!map_ref.has_value()) return {};
+ if (!CanInlineElementAccess(*map_ref)) return base::nullopt;
+ ElementsKind const elements_kind = map_ref->elements_kind();
return ElementAccessInfo({{map}, zone()}, elements_kind, zone());
}
@@ -427,8 +428,8 @@ PropertyAccessInfo AccessInfoFactory::ComputeDataFieldAccessInfo(
Handle<Map> receiver_map, Handle<Map> map, MaybeHandle<JSObject> holder,
InternalIndex descriptor, AccessMode access_mode) const {
DCHECK(descriptor.is_found());
- Handle<DescriptorArray> descriptors(map->instance_descriptors(isolate()),
- isolate());
+ Handle<DescriptorArray> descriptors = broker()->CanonicalPersistentHandle(
+ map->instance_descriptors(kAcquireLoad));
PropertyDetails const details = descriptors->GetDetails(descriptor);
int index = descriptors->GetFieldIndex(descriptor);
Representation details_representation = details.representation();
@@ -438,46 +439,55 @@ PropertyAccessInfo AccessInfoFactory::ComputeDataFieldAccessInfo(
// fields for which the representation has not yet been
// determined by the runtime. So we need to catch this case
// here and fall back to use the regular IC logic instead.
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
FieldIndex field_index =
FieldIndex::ForPropertyIndex(*map, index, details_representation);
Type field_type = Type::NonInternal();
MaybeHandle<Map> field_map;
- MapRef map_ref(broker(), map);
+
+ base::Optional<MapRef> map_ref = TryMakeRef(broker(), map);
+ if (!map_ref.has_value()) return Invalid();
+
ZoneVector<CompilationDependency const*> unrecorded_dependencies(zone());
- map_ref.SerializeOwnDescriptor(descriptor);
+ if (!map_ref->TrySerializeOwnDescriptor(descriptor)) {
+ return Invalid();
+ }
if (details_representation.IsSmi()) {
field_type = Type::SignedSmall();
unrecorded_dependencies.push_back(
- dependencies()->FieldRepresentationDependencyOffTheRecord(map_ref,
+ dependencies()->FieldRepresentationDependencyOffTheRecord(*map_ref,
descriptor));
} else if (details_representation.IsDouble()) {
field_type = type_cache_->kFloat64;
unrecorded_dependencies.push_back(
- dependencies()->FieldRepresentationDependencyOffTheRecord(map_ref,
+ dependencies()->FieldRepresentationDependencyOffTheRecord(*map_ref,
descriptor));
} else if (details_representation.IsHeapObject()) {
// Extract the field type from the property details (make sure its
// representation is TaggedPointer to reflect the heap object case).
- Handle<FieldType> descriptors_field_type(
- descriptors->GetFieldType(descriptor), isolate());
+ Handle<FieldType> descriptors_field_type =
+ broker()->CanonicalPersistentHandle(
+ descriptors->GetFieldType(descriptor));
if (descriptors_field_type->IsNone()) {
// Store is not safe if the field type was cleared.
if (access_mode == AccessMode::kStore) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
// The field type was cleared by the GC, so we don't know anything
// about the contents now.
}
unrecorded_dependencies.push_back(
- dependencies()->FieldRepresentationDependencyOffTheRecord(map_ref,
+ dependencies()->FieldRepresentationDependencyOffTheRecord(*map_ref,
descriptor));
if (descriptors_field_type->IsClass()) {
// Remember the field map, and try to infer a useful type.
- Handle<Map> map(descriptors_field_type->AsClass(), isolate());
- field_type = Type::For(MapRef(broker(), map));
+ Handle<Map> map = broker()->CanonicalPersistentHandle(
+ descriptors_field_type->AsClass());
+ base::Optional<MapRef> maybe_ref = TryMakeRef(broker(), map);
+ if (!maybe_ref.has_value()) return Invalid();
+ field_type = Type::For(*maybe_ref);
field_map = MaybeHandle<Map>(map);
}
} else {
@@ -486,7 +496,7 @@ PropertyAccessInfo AccessInfoFactory::ComputeDataFieldAccessInfo(
// TODO(turbofan): We may want to do this only depending on the use
// of the access info.
unrecorded_dependencies.push_back(
- dependencies()->FieldTypeDependencyOffTheRecord(map_ref, descriptor));
+ dependencies()->FieldTypeDependencyOffTheRecord(*map_ref, descriptor));
PropertyConstness constness;
if (details.IsReadOnly() && !details.IsConfigurable()) {
@@ -497,11 +507,11 @@ PropertyAccessInfo AccessInfoFactory::ComputeDataFieldAccessInfo(
// of turboprop.
constness = PropertyConstness::kMutable;
} else {
- map_ref.SerializeOwnDescriptor(descriptor);
- constness = dependencies()->DependOnFieldConstness(map_ref, descriptor);
+ constness = dependencies()->DependOnFieldConstness(*map_ref, descriptor);
}
- Handle<Map> field_owner_map(map->FindFieldOwner(isolate(), descriptor),
- isolate());
+ // TODO(v8:11670): Make FindFieldOwner and friends robust wrt concurrency.
+ Handle<Map> field_owner_map = broker()->CanonicalPersistentHandle(
+ map->FindFieldOwner(isolate(), descriptor));
switch (constness) {
case PropertyConstness::kMutable:
return PropertyAccessInfo::DataField(
@@ -527,13 +537,14 @@ PropertyAccessInfo AccessorAccessInfoHelper(
AccessMode access_mode, AccessorsObjectGetter get_accessors) {
if (map->instance_type() == JS_MODULE_NAMESPACE_TYPE) {
DCHECK(map->is_prototype_map());
- Handle<PrototypeInfo> proto_info(PrototypeInfo::cast(map->prototype_info()),
- isolate);
- Handle<JSModuleNamespace> module_namespace(
- JSModuleNamespace::cast(proto_info->module_namespace()), isolate);
- Handle<Cell> cell(Cell::cast(module_namespace->module().exports().Lookup(
- isolate, name, Smi::ToInt(name->GetHash()))),
- isolate);
+ Handle<PrototypeInfo> proto_info = broker->CanonicalPersistentHandle(
+ PrototypeInfo::cast(map->prototype_info()));
+ Handle<JSModuleNamespace> module_namespace =
+ broker->CanonicalPersistentHandle(
+ JSModuleNamespace::cast(proto_info->module_namespace()));
+ Handle<Cell> cell = broker->CanonicalPersistentHandle(
+ Cell::cast(module_namespace->module().exports().Lookup(
+ isolate, name, Smi::ToInt(name->GetHash()))));
if (cell->value().IsTheHole(isolate)) {
// This module has not been fully initialized yet.
return PropertyAccessInfo::Invalid(zone);
@@ -548,16 +559,20 @@ PropertyAccessInfo AccessorAccessInfoHelper(
return PropertyAccessInfo::FastAccessorConstant(zone, receiver_map,
Handle<Object>(), holder);
}
- Handle<Object> accessors = get_accessors();
- if (!accessors->IsAccessorPair()) {
+ Handle<Object> maybe_accessors = get_accessors();
+ if (!maybe_accessors->IsAccessorPair()) {
return PropertyAccessInfo::Invalid(zone);
}
- Handle<Object> accessor(access_mode == AccessMode::kLoad
- ? Handle<AccessorPair>::cast(accessors)->getter()
- : Handle<AccessorPair>::cast(accessors)->setter(),
- isolate);
+ Handle<AccessorPair> accessors = Handle<AccessorPair>::cast(maybe_accessors);
+ Handle<Object> accessor = broker->CanonicalPersistentHandle(
+ access_mode == AccessMode::kLoad ? accessors->getter()
+ : accessors->setter());
+
+ ObjectData* data = broker->TryGetOrCreateData(accessor);
+ if (data == nullptr) return PropertyAccessInfo::Invalid(zone);
+
if (!accessor->IsJSFunction()) {
- CallOptimization optimization(isolate, accessor);
+ CallOptimization optimization(broker->local_isolate_or_isolate(), accessor);
if (!optimization.is_simple_api_call() ||
optimization.IsCrossContextLazyAccessorPair(
*broker->target_native_context().object(), *map)) {
@@ -565,7 +580,9 @@ PropertyAccessInfo AccessorAccessInfoHelper(
}
CallOptimization::HolderLookup lookup;
- holder = optimization.LookupHolderOfExpectedType(receiver_map, &lookup);
+ holder = broker->CanonicalPersistentHandle(
+ optimization.LookupHolderOfExpectedType(
+ broker->local_isolate_or_isolate(), receiver_map, &lookup));
if (lookup == CallOptimization::kHolderNotFound) {
return PropertyAccessInfo::Invalid(zone);
}
@@ -574,9 +591,11 @@ PropertyAccessInfo AccessorAccessInfoHelper(
DCHECK_IMPLIES(lookup == CallOptimization::kHolderFound, !holder.is_null());
}
if (access_mode == AccessMode::kLoad) {
- Handle<Name> cached_property_name;
- if (FunctionTemplateInfo::TryGetCachedPropertyName(isolate, accessor)
- .ToHandle(&cached_property_name)) {
+ base::Optional<Name> maybe_cached_property_name =
+ FunctionTemplateInfo::TryGetCachedPropertyName(isolate, *accessor);
+ if (maybe_cached_property_name.has_value()) {
+ Handle<Name> cached_property_name =
+ broker->CanonicalPersistentHandle(maybe_cached_property_name.value());
PropertyAccessInfo access_info = ai_factory->ComputePropertyAccessInfo(
map, cached_property_name, access_mode);
if (!access_info.IsInvalid()) return access_info;
@@ -598,12 +617,13 @@ PropertyAccessInfo AccessInfoFactory::ComputeAccessorDescriptorAccessInfo(
MaybeHandle<JSObject> holder, InternalIndex descriptor,
AccessMode access_mode) const {
DCHECK(descriptor.is_found());
- Handle<DescriptorArray> descriptors(
- holder_map->instance_descriptors(kRelaxedLoad), isolate());
+ Handle<DescriptorArray> descriptors = broker()->CanonicalPersistentHandle(
+ holder_map->instance_descriptors(kRelaxedLoad));
SLOW_DCHECK(descriptor == descriptors->Search(*name, *holder_map));
auto get_accessors = [&]() {
- return handle(descriptors->GetStrongValue(descriptor), isolate());
+ return broker()->CanonicalPersistentHandle(
+ descriptors->GetStrongValue(descriptor));
};
return AccessorAccessInfoHelper(isolate(), zone(), broker(), this,
receiver_map, name, holder_map, holder,
@@ -620,7 +640,7 @@ PropertyAccessInfo AccessInfoFactory::ComputeDictionaryProtoAccessInfo(
// We can only inline accesses to constant properties.
if (details.constness() != PropertyConstness::kConst) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
if (details.kind() == PropertyKind::kData) {
@@ -631,7 +651,7 @@ PropertyAccessInfo AccessInfoFactory::ComputeDictionaryProtoAccessInfo(
auto get_accessors = [&]() {
return JSObject::DictionaryPropertyAt(holder, dictionary_index);
};
- Handle<Map> holder_map = handle(holder->map(), isolate());
+ Handle<Map> holder_map = broker()->CanonicalPersistentHandle(holder->map());
return AccessorAccessInfoHelper(isolate(), zone(), broker(), this,
receiver_map, name, holder_map, holder,
access_mode, get_accessors);
@@ -699,17 +719,16 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
Handle<Map> map, Handle<Name> name, AccessMode access_mode) const {
CHECK(name->IsUniqueName());
- base::SharedMutexGuardIf<base::kShared> mutex_guard(
- isolate()->map_updater_access(), should_lock_mutex());
- MapUpdaterMutexDepthScope mumd_scope(this);
+ JSHeapBroker::MapUpdaterGuardIfNeeded mumd_scope(
+ broker(), isolate()->map_updater_access());
if (access_mode == AccessMode::kHas && !map->IsJSReceiverMap()) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
// Check if it is safe to inline property access for the {map}.
if (!CanInlinePropertyAccess(map, access_mode)) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
// We support fast inline cases for certain JSObject getters.
@@ -729,7 +748,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
PropertyDetails details = PropertyDetails::Empty();
InternalIndex index = InternalIndex::NotFound();
if (!TryLoadPropertyDetails(map, holder, name, &index, &details)) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
if (index.is_found()) {
@@ -739,7 +758,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
// Don't bother optimizing stores to read-only properties.
if (details.IsReadOnly()) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
if (details.kind() == kData && !holder.is_null()) {
// This is a store to a property not found on the receiver but on a
@@ -758,7 +777,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
// reaching a dictionary mode prototype holding the property . Due to
// this only being an intermediate state, we don't stupport these kind
// of heterogenous prototype chains.
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
// TryLoadPropertyDetails only succeeds if we know the holder.
@@ -781,7 +800,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
// due to the complications of checking dictionary mode prototypes for
// modification, we don't attempt to support dictionary mode prototypes
// occuring before a fast mode holder on the chain.
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
if (details.location() == kField) {
if (details.kind() == kData) {
@@ -790,7 +809,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
} else {
DCHECK_EQ(kAccessor, details.kind());
// TODO(turbofan): Add support for general accessors?
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
} else {
DCHECK_EQ(kDescriptor, details.location());
@@ -806,9 +825,17 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
// Don't search on the prototype chain for special indices in case of
// integer indexed exotic objects (see ES6 section 9.4.5).
- if (map->IsJSTypedArrayMap() && name->IsString() &&
- IsSpecialIndex(String::cast(*name))) {
- return PropertyAccessInfo::Invalid(zone());
+ if (map->IsJSTypedArrayMap() && name->IsString()) {
+ if (broker()->IsMainThread()) {
+ if (IsSpecialIndex(String::cast(*name))) {
+ return Invalid();
+ }
+ } else {
+ // TODO(jgruber): We are being conservative here since we can't access
+ // string contents from background threads. Should that become possible
+ // in the future, remove this bailout.
+ return Invalid();
+ }
}
// Don't search on the prototype when storing in literals.
@@ -818,7 +845,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
// Don't lookup private symbols on the prototype chain.
if (name->IsPrivate()) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
if (V8_DICT_PROPERTY_CONST_TRACKING_BOOL && !holder.is_null()) {
@@ -833,21 +860,26 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
}
// Walk up the prototype chain.
- MapRef(broker(), map).SerializePrototype();
+ base::Optional<MapRef> map_ref = TryMakeRef(broker(), map);
+ if (!map_ref.has_value()) return Invalid();
+ if (!map_ref->TrySerializePrototype()) return Invalid();
+
// Acquire synchronously the map's prototype's map to guarantee that every
// time we use it, we use the same Map.
- Handle<Map> map_prototype_map(map->prototype().synchronized_map(),
- isolate());
+ Handle<Map> map_prototype_map =
+ broker()->CanonicalPersistentHandle(map->prototype().map(kAcquireLoad));
if (!map_prototype_map->IsJSObjectMap()) {
// Perform the implicit ToObject for primitives here.
// Implemented according to ES6 section 7.3.2 GetV (V, P).
Handle<JSFunction> constructor;
- if (Map::GetConstructorFunction(
- map, broker()->target_native_context().object())
- .ToHandle(&constructor)) {
- map = handle(constructor->initial_map(), isolate());
- map_prototype_map =
- handle(map->prototype().synchronized_map(), isolate());
+ base::Optional<JSFunction> maybe_constructor =
+ Map::GetConstructorFunction(
+ *map, *broker()->target_native_context().object());
+ if (maybe_constructor.has_value()) {
+ map = broker()->CanonicalPersistentHandle(
+ maybe_constructor->initial_map());
+ map_prototype_map = broker()->CanonicalPersistentHandle(
+ map->prototype().map(kAcquireLoad));
DCHECK(map_prototype_map->IsJSObjectMap());
} else if (map->prototype().IsNull()) {
if (dictionary_prototype_on_chain) {
@@ -856,7 +888,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
// with dictionary mode prototypes on the chain, either. This is again
// just due to how we currently deal with dependencies for dictionary
// properties during finalization.
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
// Store to property not found on the receiver or any prototype, we need
@@ -870,16 +902,17 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
// Implemented according to ES6 section 9.1.8 [[Get]] (P, Receiver)
return PropertyAccessInfo::NotFound(zone(), receiver_map, holder);
} else {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
}
- holder = handle(JSObject::cast(map->prototype()), isolate());
+ holder =
+ broker()->CanonicalPersistentHandle(JSObject::cast(map->prototype()));
map = map_prototype_map;
CHECK(!map->is_deprecated());
if (!CanInlinePropertyAccess(map, access_mode)) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
// Successful lookup on prototype chain needs to guarantee that all the
@@ -901,7 +934,7 @@ PropertyAccessInfo AccessInfoFactory::FinalizePropertyAccessInfosAsOne(
return result;
}
}
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
void AccessInfoFactory::ComputePropertyAccessInfos(
@@ -982,23 +1015,26 @@ base::Optional<ElementAccessInfo> AccessInfoFactory::ConsolidateElementLoad(
if (feedback.transition_groups().empty()) return base::nullopt;
DCHECK(!feedback.transition_groups().front().empty());
- MapRef first_map(broker(), feedback.transition_groups().front().front());
- InstanceType instance_type = first_map.instance_type();
- ElementsKind elements_kind = first_map.elements_kind();
+ Handle<Map> first_map = feedback.transition_groups().front().front();
+ base::Optional<MapRef> first_map_ref = TryMakeRef(broker(), first_map);
+ if (!first_map_ref.has_value()) return {};
+ InstanceType instance_type = first_map_ref->instance_type();
+ ElementsKind elements_kind = first_map_ref->elements_kind();
ZoneVector<Handle<Map>> maps(zone());
for (auto const& group : feedback.transition_groups()) {
for (Handle<Map> map_handle : group) {
- MapRef map(broker(), map_handle);
- if (map.instance_type() != instance_type ||
- !CanInlineElementAccess(map)) {
+ base::Optional<MapRef> map = TryMakeRef(broker(), map_handle);
+ if (!map.has_value()) return {};
+ if (map->instance_type() != instance_type ||
+ !CanInlineElementAccess(*map)) {
return base::nullopt;
}
- if (!GeneralizeElementsKind(elements_kind, map.elements_kind())
+ if (!GeneralizeElementsKind(elements_kind, map->elements_kind())
.To(&elements_kind)) {
return base::nullopt;
}
- maps.push_back(map.object());
+ maps.push_back(map->object());
}
}
@@ -1012,7 +1048,7 @@ PropertyAccessInfo AccessInfoFactory::LookupSpecialFieldAccessor(
if (Name::Equals(isolate(), name, isolate()->factory()->length_string())) {
return PropertyAccessInfo::StringLength(zone(), map);
}
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
// Check for special JSObject field accessors.
FieldIndex field_index;
@@ -1041,7 +1077,7 @@ PropertyAccessInfo AccessInfoFactory::LookupSpecialFieldAccessor(
return PropertyAccessInfo::DataField(zone(), map, {{}, zone()}, field_index,
field_representation, field_type, map);
}
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
PropertyAccessInfo AccessInfoFactory::LookupTransition(
@@ -1051,21 +1087,21 @@ PropertyAccessInfo AccessInfoFactory::LookupTransition(
TransitionsAccessor(isolate(), map, broker()->is_concurrent_inlining())
.SearchTransition(*name, kData, NONE);
if (transition.is_null()) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
- Handle<Map> transition_map(transition, isolate());
+ Handle<Map> transition_map = broker()->CanonicalPersistentHandle(transition);
InternalIndex const number = transition_map->LastAdded();
- Handle<DescriptorArray> descriptors(
- transition_map->instance_descriptors(kAcquireLoad), isolate());
+ Handle<DescriptorArray> descriptors = broker()->CanonicalPersistentHandle(
+ transition_map->instance_descriptors(kAcquireLoad));
PropertyDetails const details = descriptors->GetDetails(number);
// Don't bother optimizing stores to read-only properties.
if (details.IsReadOnly()) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
// TODO(bmeurer): Handle transition to data constant?
if (details.location() != kField) {
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
}
int const index = details.field_index();
Representation details_representation = details.representation();
@@ -1073,51 +1109,63 @@ PropertyAccessInfo AccessInfoFactory::LookupTransition(
details_representation);
Type field_type = Type::NonInternal();
MaybeHandle<Map> field_map;
- MapRef transition_map_ref(broker(), transition_map);
+
+ base::Optional<MapRef> transition_map_ref =
+ TryMakeRef(broker(), transition_map);
+ if (!transition_map_ref.has_value()) return Invalid();
+
ZoneVector<CompilationDependency const*> unrecorded_dependencies(zone());
if (details_representation.IsSmi()) {
field_type = Type::SignedSmall();
- transition_map_ref.SerializeOwnDescriptor(number);
+ if (!transition_map_ref->TrySerializeOwnDescriptor(number)) {
+ return Invalid();
+ }
unrecorded_dependencies.push_back(
dependencies()->FieldRepresentationDependencyOffTheRecord(
- transition_map_ref, number));
+ *transition_map_ref, number));
} else if (details_representation.IsDouble()) {
field_type = type_cache_->kFloat64;
- transition_map_ref.SerializeOwnDescriptor(number);
+ if (!transition_map_ref->TrySerializeOwnDescriptor(number)) {
+ return Invalid();
+ }
unrecorded_dependencies.push_back(
dependencies()->FieldRepresentationDependencyOffTheRecord(
- transition_map_ref, number));
+ *transition_map_ref, number));
} else if (details_representation.IsHeapObject()) {
// Extract the field type from the property details (make sure its
// representation is TaggedPointer to reflect the heap object case).
- Handle<FieldType> descriptors_field_type(descriptors->GetFieldType(number),
- isolate());
+ Handle<FieldType> descriptors_field_type =
+ broker()->CanonicalPersistentHandle(descriptors->GetFieldType(number));
if (descriptors_field_type->IsNone()) {
// Store is not safe if the field type was cleared.
- return PropertyAccessInfo::Invalid(zone());
+ return Invalid();
+ }
+ if (!transition_map_ref->TrySerializeOwnDescriptor(number)) {
+ return Invalid();
}
- transition_map_ref.SerializeOwnDescriptor(number);
unrecorded_dependencies.push_back(
dependencies()->FieldRepresentationDependencyOffTheRecord(
- transition_map_ref, number));
+ *transition_map_ref, number));
if (descriptors_field_type->IsClass()) {
unrecorded_dependencies.push_back(
- dependencies()->FieldTypeDependencyOffTheRecord(transition_map_ref,
+ dependencies()->FieldTypeDependencyOffTheRecord(*transition_map_ref,
number));
// Remember the field map, and try to infer a useful type.
- Handle<Map> map(descriptors_field_type->AsClass(), isolate());
- field_type = Type::For(MapRef(broker(), map));
- field_map = MaybeHandle<Map>(map);
+ Handle<Map> map = broker()->CanonicalPersistentHandle(
+ descriptors_field_type->AsClass());
+ base::Optional<MapRef> map_ref = TryMakeRef(broker(), map);
+ if (!map_ref.has_value()) return Invalid();
+ field_type = Type::For(*map_ref);
+ field_map = map;
}
}
unrecorded_dependencies.push_back(
- dependencies()->TransitionDependencyOffTheRecord(
- MapRef(broker(), transition_map)));
- transition_map_ref.SerializeBackPointer(); // For BuildPropertyStore.
+ dependencies()->TransitionDependencyOffTheRecord(*transition_map_ref));
+ transition_map_ref->SerializeBackPointer(); // For BuildPropertyStore.
// Transitioning stores *may* store to const fields. The resulting
// DataConstant access infos can be distinguished from later, i.e. redundant,
// stores to the same constant field by the presence of a transition map.
- switch (dependencies()->DependOnFieldConstness(transition_map_ref, number)) {
+ switch (dependencies()->DependOnFieldConstness(*transition_map_ref, number)) {
case PropertyConstness::kMutable:
return PropertyAccessInfo::DataField(
zone(), map, std::move(unrecorded_dependencies), field_index,
diff --git a/deps/v8/src/compiler/access-info.h b/deps/v8/src/compiler/access-info.h
index b430dacd3a..93215ea0a0 100644
--- a/deps/v8/src/compiler/access-info.h
+++ b/deps/v8/src/compiler/access-info.h
@@ -305,6 +305,10 @@ class AccessInfoFactory final {
MaybeHandle<JSObject> holder, InternalIndex descriptor,
AccessMode access_mode) const;
+ PropertyAccessInfo Invalid() const {
+ return PropertyAccessInfo::Invalid(zone());
+ }
+
void MergePropertyAccessInfos(ZoneVector<PropertyAccessInfo> infos,
AccessMode access_mode,
ZoneVector<PropertyAccessInfo>* result) const;
@@ -313,28 +317,6 @@ class AccessInfoFactory final {
Handle<Name> name, InternalIndex* index_out,
PropertyDetails* details_out) const;
- bool should_lock_mutex() const { return map_updater_mutex_depth_ == 0; }
-
- class MapUpdaterMutexDepthScope final {
- public:
- explicit MapUpdaterMutexDepthScope(const AccessInfoFactory* ptr)
- : ptr_(ptr),
- initial_map_updater_mutex_depth_(ptr->map_updater_mutex_depth_) {
- ptr_->map_updater_mutex_depth_++;
- }
-
- ~MapUpdaterMutexDepthScope() {
- ptr_->map_updater_mutex_depth_--;
- DCHECK_EQ(initial_map_updater_mutex_depth_,
- ptr_->map_updater_mutex_depth_);
- USE(initial_map_updater_mutex_depth_);
- }
-
- private:
- const AccessInfoFactory* const ptr_;
- const int initial_map_updater_mutex_depth_;
- };
-
CompilationDependencies* dependencies() const { return dependencies_; }
JSHeapBroker* broker() const { return broker_; }
Isolate* isolate() const;
@@ -345,12 +327,6 @@ class AccessInfoFactory final {
TypeCache const* const type_cache_;
Zone* const zone_;
- // ComputePropertyAccessInfo can be called recursively, thus we need to
- // emulate a recursive mutex. This field holds the locking depth, i.e. how
- // many times the mutex has been recursively locked. Only the outermost
- // locker actually locks underneath.
- mutable int map_updater_mutex_depth_ = 0;
-
// TODO(nicohartmann@): Move to public
AccessInfoFactory(const AccessInfoFactory&) = delete;
AccessInfoFactory& operator=(const AccessInfoFactory&) = delete;
diff --git a/deps/v8/src/compiler/add-type-assertions-reducer.cc b/deps/v8/src/compiler/add-type-assertions-reducer.cc
index 59d2fe6820..d555d518d2 100644
--- a/deps/v8/src/compiler/add-type-assertions-reducer.cc
+++ b/deps/v8/src/compiler/add-type-assertions-reducer.cc
@@ -27,9 +27,7 @@ Reduction AddTypeAssertionsReducer::Reduce(Node* node) {
visited_.Set(node, true);
Type type = NodeProperties::GetType(node);
- if (!type.IsRange()) {
- return NoChange();
- }
+ if (!type.CanBeAsserted()) return NoChange();
Node* assertion = graph()->NewNode(simplified()->AssertType(type), node);
NodeProperties::SetType(assertion, type);
diff --git a/deps/v8/src/compiler/backend/arm/code-generator-arm.cc b/deps/v8/src/compiler/backend/arm/code-generator-arm.cc
index dba31fe0bc..35d8cb7361 100644
--- a/deps/v8/src/compiler/backend/arm/code-generator-arm.cc
+++ b/deps/v8/src/compiler/backend/arm/code-generator-arm.cc
@@ -194,16 +194,14 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
}
void Generate() final {
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
__ CheckPageFlag(value_, MemoryChunk::kPointersToHereAreInterestingMask, eq,
exit());
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (must_save_lr_) {
// We need to save and restore lr if the frame was elided.
__ Push(lr);
@@ -828,7 +826,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -841,7 +840,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -999,6 +999,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
auto ool = zone()->New<OutOfLineRecordWrite>(
this, object, offset, value, mode, DetermineStubCallMode(),
&unwinding_info_writer_);
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, MemoryChunk::kPointersFromHereAreInterestingMask,
ne, ool->entry());
__ bind(ool->exit());
@@ -3576,7 +3579,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
#undef ASSEMBLE_SIMD_SHIFT_RIGHT
}
return kSuccess;
-} // NOLINT(readability/fn_size)
+}
// Assembles branches after an instruction.
void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) {
@@ -3793,7 +3796,7 @@ void CodeGenerator::AssembleConstructFrame() {
// frame is still on the stack. Optimized code uses OSR values directly from
// the unoptimized frame. Thus, all that needs to be done is to allocate the
// remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
required_slots -= osr_helper()->UnoptimizedFrameSlots();
ResetSpeculationPoison();
@@ -3906,7 +3909,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ cmp(g.ToRegister(additional_pop_count), Operand(0));
__ Assert(eq, AbortReason::kUnexpectedAdditionalPopValue);
}
diff --git a/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc b/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc
index d28ada322d..bb17d45253 100644
--- a/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc
+++ b/deps/v8/src/compiler/backend/arm/instruction-selector-arm.cc
@@ -626,6 +626,7 @@ void InstructionSelector::VisitLoad(Node* node) {
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
case MachineRepresentation::kWord64: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -709,6 +710,7 @@ void InstructionSelector::VisitStore(Node* node) {
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
case MachineRepresentation::kWord64: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -3170,6 +3172,12 @@ void InstructionSelector::VisitF64x2PromoteLowF32x4(Node* node) {
g.UseFixed(node->InputAt(0), q0));
}
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ UNREACHABLE();
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
diff --git a/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc b/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc
index 91b8f1f04b..dfbdf4d093 100644
--- a/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc
+++ b/deps/v8/src/compiler/backend/arm64/code-generator-arm64.cc
@@ -282,19 +282,17 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
}
void Generate() final {
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
if (COMPRESS_POINTERS_BOOL) {
__ DecompressTaggedPointer(value_, value_);
}
__ CheckPageFlag(value_, MemoryChunk::kPointersToHereAreInterestingMask, ne,
exit());
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (must_save_lr_) {
// We need to save and restore lr if the frame was elided.
__ Push<TurboAssembler::kSignLR>(lr, padreg);
@@ -859,7 +857,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -872,7 +871,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -1026,6 +1026,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
this, object, offset, value, mode, DetermineStubCallMode(),
&unwinding_info_writer_);
__ StoreTaggedField(value, MemOperand(object, offset));
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, MemoryChunk::kPointersFromHereAreInterestingMask,
eq, ool->entry());
__ Bind(ool->exit());
@@ -2862,7 +2865,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
SIMD_REDUCE_OP_CASE(kArm64I8x16AllTrue, Uminv, kFormatB, 16B);
}
return kSuccess;
-} // NOLINT(readability/fn_size)
+}
#undef SIMD_UNOP_CASE
#undef SIMD_BINOP_CASE
@@ -3106,7 +3109,7 @@ void CodeGenerator::AssembleConstructFrame() {
// unoptimized frame is still on the stack. Optimized code uses OSR values
// directly from the unoptimized frame. Thus, all that needs to be done is
// to allocate the remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
__ CodeEntry();
size_t unoptimized_frame_slots = osr_helper()->UnoptimizedFrameSlots();
@@ -3280,7 +3283,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ cmp(g.ToRegister(additional_pop_count), Operand(0));
__ Assert(eq, AbortReason::kUnexpectedAdditionalPopValue);
}
diff --git a/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc b/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc
index d9e388b4b5..2b71b2da1a 100644
--- a/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc
+++ b/deps/v8/src/compiler/backend/arm64/instruction-selector-arm64.cc
@@ -354,6 +354,12 @@ bool TryMatchAnyExtend(Arm64OperandGenerator* g, InstructionSelector* selector,
return true;
}
}
+ } else if (nm.IsChangeInt32ToInt64()) {
+ // Use extended register form.
+ *opcode |= AddressingModeField::encode(kMode_Operand2_R_SXTW);
+ *left_op = g->UseRegister(left_node);
+ *right_op = g->UseRegister(right_node->InputAt(0));
+ return true;
}
return false;
}
@@ -827,6 +833,7 @@ void InstructionSelector::VisitLoad(Node* node) {
opcode = kArm64LdrQ;
immediate_mode = kNoImmediate;
break;
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -936,6 +943,7 @@ void InstructionSelector::VisitStore(Node* node) {
opcode = kArm64StrQ;
immediate_mode = kNoImmediate;
break;
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -4040,6 +4048,12 @@ void InstructionSelector::VisitI8x16Popcnt(Node* node) {
VisitRR(this, code, node);
}
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ continuation_outputs_.push_back(g->DefineAsRegister(node));
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
diff --git a/deps/v8/src/compiler/backend/code-generator.cc b/deps/v8/src/compiler/backend/code-generator.cc
index 3ed9eaabf1..5abe799e77 100644
--- a/deps/v8/src/compiler/backend/code-generator.cc
+++ b/deps/v8/src/compiler/backend/code-generator.cc
@@ -588,11 +588,6 @@ MaybeHandle<Code> CodeGenerator::FinalizeCode() {
return MaybeHandle<Code>();
}
- // TODO(jgruber,v8:8888): Turn this into a DCHECK once confidence is
- // high that the implementation is complete.
- CHECK_IMPLIES(info()->IsNativeContextIndependent(),
- code->IsNativeContextIndependent(isolate()));
-
// Counts both compiled code and metadata.
isolate()->counters()->total_compiled_code_size()->Increment(
code->raw_body_size());
@@ -1400,7 +1395,8 @@ void CodeGenerator::AddTranslationForOperand(Instruction* instr,
default:
UNREACHABLE();
}
- if (literal.object().equals(info()->closure())) {
+ if (literal.object().equals(info()->closure()) &&
+ info()->function_context_specializing()) {
translations_.StoreJSFrameFunction();
} else {
int literal_id = DefineDeoptimizationLiteral(literal);
diff --git a/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc b/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc
index ac5d589790..af2eec4e8e 100644
--- a/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc
+++ b/deps/v8/src/compiler/backend/ia32/code-generator-ia32.cc
@@ -320,18 +320,16 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
}
void Generate() final {
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
__ CheckPageFlag(value_, scratch0_,
MemoryChunk::kPointersToHereAreInterestingMask, zero,
exit());
__ lea(scratch1_, operand_);
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (mode_ == RecordWriteMode::kValueIsEphemeronKey) {
__ CallEphemeronKeyBarrier(object_, scratch1_, save_fp_mode);
#if V8_ENABLE_WEBASSEMBLY
@@ -832,7 +830,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -845,7 +844,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -1004,6 +1004,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
scratch0, scratch1, mode,
DetermineStubCallMode());
__ mov(operand, value);
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, scratch0,
MemoryChunk::kPointersFromHereAreInterestingMask,
not_zero, ool->entry());
@@ -1866,77 +1869,17 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kIA32F64x2Splat: {
- XMMRegister dst = i.OutputDoubleRegister();
- XMMRegister src = i.InputDoubleRegister(0);
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope avx_scope(tasm(), AVX);
- __ vshufpd(i.OutputSimd128Register(), src, src, 0x0);
- } else {
- DCHECK_EQ(dst, src);
- __ shufpd(dst, src, 0x0);
- }
- break;
- }
- case kSSEF64x2ExtractLane: {
- DCHECK_EQ(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
- XMMRegister dst = i.OutputDoubleRegister();
- int8_t lane = i.InputInt8(1);
- if (lane != 0) {
- DCHECK_EQ(lane, 1);
- __ shufpd(dst, dst, lane);
- }
+ __ Movddup(i.OutputSimd128Register(), i.InputDoubleRegister(0));
break;
}
- case kAVXF64x2ExtractLane: {
- CpuFeatureScope avx_scope(tasm(), AVX);
- XMMRegister dst = i.OutputDoubleRegister();
- XMMRegister src = i.InputSimd128Register(0);
- int8_t lane = i.InputInt8(1);
- if (lane == 0) {
- if (dst != src) __ vmovapd(dst, src);
- } else {
- DCHECK_EQ(lane, 1);
- __ vshufpd(dst, src, src, lane);
- }
+ case kF64x2ExtractLane: {
+ __ F64x2ExtractLane(i.OutputDoubleRegister(), i.InputDoubleRegister(0),
+ i.InputUint8(1));
break;
}
- case kSSEF64x2ReplaceLane: {
- DCHECK_EQ(i.OutputSimd128Register(), i.InputSimd128Register(0));
- CpuFeatureScope sse_scope(tasm(), SSE4_1);
- XMMRegister dst = i.OutputSimd128Register();
- int8_t lane = i.InputInt8(1);
- DoubleRegister rep = i.InputDoubleRegister(2);
-
- // insertps takes a mask which contains (high to low):
- // - 2 bit specifying source float element to copy
- // - 2 bit specifying destination float element to write to
- // - 4 bits specifying which elements of the destination to zero
- DCHECK_LT(lane, 2);
- if (lane == 0) {
- __ insertps(dst, rep, 0b00000000);
- __ insertps(dst, rep, 0b01010000);
- } else {
- __ insertps(dst, rep, 0b00100000);
- __ insertps(dst, rep, 0b01110000);
- }
- break;
- }
- case kAVXF64x2ReplaceLane: {
- CpuFeatureScope avx_scope(tasm(), AVX);
- XMMRegister dst = i.OutputSimd128Register();
- XMMRegister src = i.InputSimd128Register(0);
- int8_t lane = i.InputInt8(1);
- DoubleRegister rep = i.InputDoubleRegister(2);
- DCHECK_NE(dst, rep);
-
- DCHECK_LT(lane, 2);
- if (lane == 0) {
- __ vinsertps(dst, src, rep, 0b00000000);
- __ vinsertps(dst, dst, rep, 0b01010000);
- } else {
- __ vinsertps(dst, src, rep, 0b00100000);
- __ vinsertps(dst, dst, rep, 0b01110000);
- }
+ case kF64x2ReplaceLane: {
+ __ F64x2ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ i.InputDoubleRegister(2), i.InputInt8(1));
break;
}
case kIA32F64x2Sqrt: {
@@ -1964,44 +1907,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kIA32F64x2Min: {
- Operand src1 = i.InputOperand(1);
- XMMRegister dst = i.OutputSimd128Register(),
- src = i.InputSimd128Register(0),
- tmp = i.TempSimd128Register(0);
- // The minpd instruction doesn't propagate NaNs and +0's in its first
- // operand. Perform minpd in both orders, merge the resuls, and adjust.
- __ Movupd(tmp, src1);
- __ Minpd(tmp, tmp, src);
- __ Minpd(dst, src, src1);
- // propagate -0's and NaNs, which may be non-canonical.
- __ Orpd(tmp, dst);
- // Canonicalize NaNs by quieting and clearing the payload.
- __ Cmpunordpd(dst, dst, tmp);
- __ Orpd(tmp, dst);
- __ Psrlq(dst, 13);
- __ Andnpd(dst, tmp);
+ __ F64x2Min(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ i.InputSimd128Register(1), kScratchDoubleReg);
break;
}
case kIA32F64x2Max: {
- Operand src1 = i.InputOperand(1);
- XMMRegister dst = i.OutputSimd128Register(),
- src = i.InputSimd128Register(0),
- tmp = i.TempSimd128Register(0);
- // The maxpd instruction doesn't propagate NaNs and +0's in its first
- // operand. Perform maxpd in both orders, merge the resuls, and adjust.
- __ Movupd(tmp, src1);
- __ Maxpd(tmp, tmp, src);
- __ Maxpd(dst, src, src1);
- // Find discrepancies.
- __ Xorpd(dst, tmp);
- // Propagate NaNs, which may be non-canonical.
- __ Orpd(tmp, dst);
- // Propagate sign discrepancy and (subtle) quiet NaNs.
- __ Subpd(tmp, tmp, dst);
- // Canonicalize NaNs by clearing the payload. Sign is non-deterministic.
- __ Cmpunordpd(dst, dst, tmp);
- __ Psrlq(dst, 13);
- __ Andnpd(dst, tmp);
+ __ F64x2Max(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ i.InputSimd128Register(1), kScratchDoubleReg);
break;
}
case kIA32F64x2Eq: {
@@ -2158,10 +2070,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kIA32I64x2Neg: {
- XMMRegister dst = i.OutputSimd128Register();
- Operand src = i.InputOperand(0);
- __ Pxor(dst, dst);
- __ Psubq(dst, src);
+ __ I64x2Neg(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ kScratchDoubleReg);
break;
}
case kIA32I64x2Shl: {
@@ -2181,7 +2091,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
// Set up a mask [0x80000000,0,0x80000000,0].
__ Pcmpeqb(tmp2, tmp2);
- __ Psllq(tmp2, tmp2, 63);
+ __ Psllq(tmp2, tmp2, byte{63});
__ Psrlq(tmp2, tmp2, tmp);
__ Psrlq(dst, src, tmp);
@@ -2210,15 +2120,15 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ Movaps(tmp2, right);
// Multiply high dword of each qword of left with right.
- __ Psrlq(tmp1, 32);
+ __ Psrlq(tmp1, byte{32});
__ Pmuludq(tmp1, tmp1, right);
// Multiply high dword of each qword of right with left.
- __ Psrlq(tmp2, 32);
+ __ Psrlq(tmp2, byte{32});
__ Pmuludq(tmp2, tmp2, left);
__ Paddq(tmp2, tmp2, tmp1);
- __ Psllq(tmp2, tmp2, 32);
+ __ Psllq(tmp2, tmp2, byte{32});
__ Pmuludq(dst, left, right);
__ Paddq(dst, dst, tmp2);
@@ -2302,38 +2212,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kIA32F32x4Splat: {
- XMMRegister dst = i.OutputDoubleRegister();
- XMMRegister src = i.InputDoubleRegister(0);
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope avx_scope(tasm(), AVX);
- __ vshufps(i.OutputSimd128Register(), src, src, 0x0);
- } else {
- DCHECK_EQ(dst, src);
- __ shufps(dst, src, 0x0);
- }
+ __ F32x4Splat(i.OutputSimd128Register(), i.InputDoubleRegister(0));
break;
}
case kIA32F32x4ExtractLane: {
- XMMRegister dst = i.OutputFloatRegister();
- XMMRegister src = i.InputSimd128Register(0);
- uint8_t lane = i.InputUint8(1);
- DCHECK_LT(lane, 4);
- // These instructions are shorter than insertps, but will leave junk in
- // the top lanes of dst.
- if (lane == 0) {
- if (dst != src) {
- __ Movaps(dst, src);
- }
- } else if (lane == 1) {
- __ Movshdup(dst, src);
- } else if (lane == 2 && dst == src) {
- // Check dst == src to avoid false dependency on dst.
- __ Movhlps(dst, src);
- } else if (dst == src) {
- __ Shufps(dst, src, src, lane);
- } else {
- __ Pshufd(dst, src, lane);
- }
+ __ F32x4ExtractLane(i.OutputFloatRegister(), i.InputSimd128Register(0),
+ i.InputUint8(1));
break;
}
case kIA32Insertps: {
@@ -2357,10 +2241,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
XMMRegister dst = i.OutputSimd128Register();
XMMRegister src = i.InputSimd128Register(0);
__ Pxor(kScratchDoubleReg, kScratchDoubleReg); // zeros
- __ Pblendw(kScratchDoubleReg, src, 0x55); // get lo 16 bits
+ __ Pblendw(kScratchDoubleReg, src, uint8_t{0x55}); // get lo 16 bits
__ Psubd(dst, src, kScratchDoubleReg); // get hi 16 bits
__ Cvtdq2ps(kScratchDoubleReg, kScratchDoubleReg); // convert lo exactly
- __ Psrld(dst, dst, 1); // divide by 2 to get in unsigned range
+ __ Psrld(dst, dst, byte{1}); // divide by 2 to get in unsigned range
__ Cvtdq2ps(dst, dst); // convert hi exactly
__ Addps(dst, dst, dst); // double hi, exactly
__ Addps(dst, dst, kScratchDoubleReg); // add hi and lo, may round.
@@ -2371,11 +2255,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
XMMRegister src = i.InputSimd128Register(0);
if (dst == src) {
__ Pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
- __ Psrld(kScratchDoubleReg, kScratchDoubleReg, 1);
+ __ Psrld(kScratchDoubleReg, kScratchDoubleReg, byte{1});
__ Andps(dst, kScratchDoubleReg);
} else {
__ Pcmpeqd(dst, dst);
- __ Psrld(dst, dst, 1);
+ __ Psrld(dst, dst, byte{1});
__ Andps(dst, src);
}
break;
@@ -2385,11 +2269,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
XMMRegister src = i.InputSimd128Register(0);
if (dst == src) {
__ Pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
- __ Pslld(kScratchDoubleReg, kScratchDoubleReg, 31);
+ __ Pslld(kScratchDoubleReg, kScratchDoubleReg, byte{31});
__ Xorps(dst, kScratchDoubleReg);
} else {
__ Pcmpeqd(dst, dst);
- __ Pslld(dst, dst, 31);
+ __ Pslld(dst, dst, byte{31});
__ Xorps(dst, src);
}
break;
@@ -2580,7 +2464,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ Cvttps2dq(dst, dst);
// Set top bit if >=0 is now < 0
__ Pand(kScratchDoubleReg, dst);
- __ Psrad(kScratchDoubleReg, kScratchDoubleReg, 31);
+ __ Psrad(kScratchDoubleReg, kScratchDoubleReg, byte{31});
// Set positive overflow lanes to 0x7FFFFFFF
__ Pxor(dst, kScratchDoubleReg);
break;
@@ -3564,15 +3448,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kIA32S128Not: {
- XMMRegister dst = i.OutputSimd128Register();
- XMMRegister src = i.InputSimd128Register(0);
- if (dst == src) {
- __ Pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
- __ Pxor(dst, kScratchDoubleReg);
- } else {
- __ Pcmpeqd(dst, dst);
- __ Pxor(dst, src);
- }
+ __ S128Not(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ kScratchDoubleReg);
break;
}
case kSSES128And: {
@@ -3739,7 +3616,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
DCHECK_NE(0xe4, shuffle); // A simple blend should be handled below.
__ Pshufd(kScratchDoubleReg, i.InputOperand(1), shuffle);
__ Pshufd(i.OutputSimd128Register(), i.InputOperand(0), shuffle);
- __ Pblendw(i.OutputSimd128Register(), kScratchDoubleReg, i.InputInt8(3));
+ __ Pblendw(i.OutputSimd128Register(), kScratchDoubleReg, i.InputUint8(3));
break;
}
case kIA32S16x8Blend:
@@ -3757,7 +3634,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ Pshufhw(kScratchDoubleReg, kScratchDoubleReg, i.InputUint8(3));
__ Pshuflw(dst, i.InputOperand(0), i.InputUint8(2));
__ Pshufhw(dst, dst, i.InputUint8(3));
- __ Pblendw(dst, kScratchDoubleReg, i.InputInt8(4));
+ __ Pblendw(dst, kScratchDoubleReg, i.InputUint8(4));
break;
}
case kIA32S8x16Alignr:
@@ -4250,7 +4127,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
return kSuccess;
-} // NOLINT(readability/fn_size)
+}
static Condition FlagsConditionToCondition(FlagsCondition condition) {
switch (condition) {
@@ -4649,7 +4526,7 @@ void CodeGenerator::AssembleConstructFrame() {
// frame is still on the stack. Optimized code uses OSR values directly from
// the unoptimized frame. Thus, all that needs to be done is to allocate the
// remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
required_slots -= osr_helper()->UnoptimizedFrameSlots();
}
@@ -4738,7 +4615,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ cmp(g.ToRegister(additional_pop_count), Immediate(0));
__ Assert(equal, AbortReason::kUnexpectedAdditionalPopValue);
}
diff --git a/deps/v8/src/compiler/backend/ia32/instruction-codes-ia32.h b/deps/v8/src/compiler/backend/ia32/instruction-codes-ia32.h
index f06ed5156e..42af3326f3 100644
--- a/deps/v8/src/compiler/backend/ia32/instruction-codes-ia32.h
+++ b/deps/v8/src/compiler/backend/ia32/instruction-codes-ia32.h
@@ -117,10 +117,8 @@ namespace compiler {
V(IA32Poke) \
V(IA32Peek) \
V(IA32F64x2Splat) \
- V(SSEF64x2ExtractLane) \
- V(AVXF64x2ExtractLane) \
- V(SSEF64x2ReplaceLane) \
- V(AVXF64x2ReplaceLane) \
+ V(F64x2ExtractLane) \
+ V(F64x2ReplaceLane) \
V(IA32F64x2Sqrt) \
V(IA32F64x2Add) \
V(IA32F64x2Sub) \
diff --git a/deps/v8/src/compiler/backend/ia32/instruction-scheduler-ia32.cc b/deps/v8/src/compiler/backend/ia32/instruction-scheduler-ia32.cc
index 3d1c707359..278e7ea99b 100644
--- a/deps/v8/src/compiler/backend/ia32/instruction-scheduler-ia32.cc
+++ b/deps/v8/src/compiler/backend/ia32/instruction-scheduler-ia32.cc
@@ -102,10 +102,8 @@ int InstructionScheduler::GetTargetInstructionFlags(
case kIA32BitcastFI:
case kIA32BitcastIF:
case kIA32F64x2Splat:
- case kSSEF64x2ExtractLane:
- case kAVXF64x2ExtractLane:
- case kSSEF64x2ReplaceLane:
- case kAVXF64x2ReplaceLane:
+ case kF64x2ExtractLane:
+ case kF64x2ReplaceLane:
case kIA32F64x2Sqrt:
case kIA32F64x2Add:
case kIA32F64x2Sub:
diff --git a/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc b/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc
index 033a566e11..703d574eed 100644
--- a/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc
+++ b/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc
@@ -65,7 +65,8 @@ class IA32OperandGenerator final : public OperandGenerator {
bool CanBeMemoryOperand(InstructionCode opcode, Node* node, Node* input,
int effect_level) {
- if (input->opcode() != IrOpcode::kLoad ||
+ if ((input->opcode() != IrOpcode::kLoad &&
+ input->opcode() != IrOpcode::kLoadImmutable) ||
!selector()->CanCover(node, input)) {
return false;
}
@@ -551,6 +552,7 @@ void InstructionSelector::VisitLoad(Node* node) {
case MachineRepresentation::kCompressed: // Fall through.
case MachineRepresentation::kWord64: // Fall through.
case MachineRepresentation::kNone:
+ case MachineRepresentation::kMapWord:
UNREACHABLE();
}
@@ -633,6 +635,7 @@ void InstructionSelector::VisitStore(Node* node) {
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
case MachineRepresentation::kWord64: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -816,7 +819,8 @@ void InstructionSelector::VisitStackPointerGreaterThan(
Node* const value = node->InputAt(0);
if (g.CanBeMemoryOperand(kIA32Cmp, node, value, effect_level)) {
- DCHECK_EQ(IrOpcode::kLoad, value->opcode());
+ DCHECK(value->opcode() == IrOpcode::kLoad ||
+ value->opcode() == IrOpcode::kLoadImmutable);
// GetEffectiveAddressMemoryOperand can create at most 3 inputs.
static constexpr int kMaxInputCount = 3;
@@ -1432,7 +1436,8 @@ void VisitCompareWithMemoryOperand(InstructionSelector* selector,
InstructionCode opcode, Node* left,
InstructionOperand right,
FlagsContinuation* cont) {
- DCHECK_EQ(IrOpcode::kLoad, left->opcode());
+ DCHECK(left->opcode() == IrOpcode::kLoad ||
+ left->opcode() == IrOpcode::kLoadImmutable);
IA32OperandGenerator g(selector);
size_t input_count = 0;
InstructionOperand inputs[4];
@@ -1463,7 +1468,8 @@ void VisitCompare(InstructionSelector* selector, InstructionCode opcode,
}
MachineType MachineTypeForNarrow(Node* node, Node* hint_node) {
- if (hint_node->opcode() == IrOpcode::kLoad) {
+ if (hint_node->opcode() == IrOpcode::kLoad ||
+ hint_node->opcode() == IrOpcode::kLoadImmutable) {
MachineType hint = LoadRepresentationOf(hint_node->op());
if (node->opcode() == IrOpcode::kInt32Constant ||
node->opcode() == IrOpcode::kInt64Constant) {
@@ -1497,8 +1503,10 @@ MachineType MachineTypeForNarrow(Node* node, Node* hint_node) {
}
}
}
- return node->opcode() == IrOpcode::kLoad ? LoadRepresentationOf(node->op())
- : MachineType::None();
+ return node->opcode() == IrOpcode::kLoad ||
+ node->opcode() == IrOpcode::kLoadImmutable
+ ? LoadRepresentationOf(node->op())
+ : MachineType::None();
}
// Tries to match the size of the given opcode to that of the operands, if
@@ -2346,30 +2354,24 @@ void InstructionSelector::VisitS128Const(Node* node) {
void InstructionSelector::VisitF64x2Min(Node* node) {
IA32OperandGenerator g(this);
- InstructionOperand temps[] = {g.TempSimd128Register()};
- InstructionOperand operand0 = g.UseUniqueRegister(node->InputAt(0));
- InstructionOperand operand1 = g.UseUniqueRegister(node->InputAt(1));
+ InstructionOperand operand0 = g.UseRegister(node->InputAt(0));
+ InstructionOperand operand1 = g.UseRegister(node->InputAt(1));
if (IsSupported(AVX)) {
- Emit(kIA32F64x2Min, g.DefineAsRegister(node), operand0, operand1,
- arraysize(temps), temps);
+ Emit(kIA32F64x2Min, g.DefineAsRegister(node), operand0, operand1);
} else {
- Emit(kIA32F64x2Min, g.DefineSameAsFirst(node), operand0, operand1,
- arraysize(temps), temps);
+ Emit(kIA32F64x2Min, g.DefineSameAsFirst(node), operand0, operand1);
}
}
void InstructionSelector::VisitF64x2Max(Node* node) {
IA32OperandGenerator g(this);
- InstructionOperand temps[] = {g.TempSimd128Register()};
- InstructionOperand operand0 = g.UseUniqueRegister(node->InputAt(0));
- InstructionOperand operand1 = g.UseUniqueRegister(node->InputAt(1));
+ InstructionOperand operand0 = g.UseRegister(node->InputAt(0));
+ InstructionOperand operand1 = g.UseRegister(node->InputAt(1));
if (IsSupported(AVX)) {
- Emit(kIA32F64x2Max, g.DefineAsRegister(node), operand0, operand1,
- arraysize(temps), temps);
+ Emit(kIA32F64x2Max, g.DefineAsRegister(node), operand0, operand1);
} else {
- Emit(kIA32F64x2Max, g.DefineSameAsFirst(node), operand0, operand1,
- arraysize(temps), temps);
+ Emit(kIA32F64x2Max, g.DefineSameAsFirst(node), operand0, operand1);
}
}
@@ -2378,7 +2380,7 @@ void InstructionSelector::VisitF64x2Splat(Node* node) {
}
void InstructionSelector::VisitF64x2ExtractLane(Node* node) {
- VisitRRISimd(this, node, kAVXF64x2ExtractLane, kSSEF64x2ExtractLane);
+ VisitRRISimd(this, node, kF64x2ExtractLane, kF64x2ExtractLane);
}
void InstructionSelector::VisitI64x2SplatI32Pair(Node* node) {
@@ -2406,7 +2408,10 @@ void InstructionSelector::VisitI64x2ReplaceLaneI32Pair(Node* node) {
void InstructionSelector::VisitI64x2Neg(Node* node) {
IA32OperandGenerator g(this);
- InstructionOperand operand0 = g.UseUnique(node->InputAt(0));
+ // If AVX unsupported, make sure dst != src to avoid a move.
+ InstructionOperand operand0 = IsSupported(AVX)
+ ? g.UseRegister(node->InputAt(0))
+ : g.UseUnique(node->InputAt(0));
Emit(kIA32I64x2Neg, g.DefineAsRegister(node), operand0);
}
@@ -2546,27 +2551,15 @@ SIMD_REPLACE_LANE_TYPE_OP(VISIT_SIMD_REPLACE_LANE)
#undef VISIT_SIMD_REPLACE_LANE
#undef SIMD_REPLACE_LANE_TYPE_OP
-// The difference between this and VISIT_SIMD_REPLACE_LANE is that this forces
-// operand2 to be UseRegister, because the codegen relies on insertps using
-// registers.
-// TODO(v8:9764) Remove this UseRegister requirement
-#define VISIT_SIMD_REPLACE_LANE_USE_REG(Type) \
- void InstructionSelector::Visit##Type##ReplaceLane(Node* node) { \
- IA32OperandGenerator g(this); \
- InstructionOperand operand0 = g.UseRegister(node->InputAt(0)); \
- InstructionOperand operand1 = \
- g.UseImmediate(OpParameter<int32_t>(node->op())); \
- InstructionOperand operand2 = g.UseUniqueRegister(node->InputAt(1)); \
- if (IsSupported(AVX)) { \
- Emit(kAVX##Type##ReplaceLane, g.DefineAsRegister(node), operand0, \
- operand1, operand2); \
- } else { \
- Emit(kSSE##Type##ReplaceLane, g.DefineSameAsFirst(node), operand0, \
- operand1, operand2); \
- } \
- }
-VISIT_SIMD_REPLACE_LANE_USE_REG(F64x2)
-#undef VISIT_SIMD_REPLACE_LANE_USE_REG
+void InstructionSelector::VisitF64x2ReplaceLane(Node* node) {
+ IA32OperandGenerator g(this);
+ int32_t lane = OpParameter<int32_t>(node->op());
+ // When no-AVX, define dst == src to save a move.
+ InstructionOperand dst =
+ IsSupported(AVX) ? g.DefineAsRegister(node) : g.DefineSameAsFirst(node);
+ Emit(kF64x2ReplaceLane, dst, g.UseRegister(node->InputAt(0)),
+ g.UseImmediate(lane), g.UseRegister(node->InputAt(1)));
+}
#define VISIT_SIMD_SHIFT_UNIFIED_SSE_AVX(Opcode) \
void InstructionSelector::Visit##Opcode(Node* node) { \
@@ -3159,6 +3152,12 @@ void InstructionSelector::VisitI64x2Abs(Node* node) {
VisitRRSimd(this, node, kIA32I64x2Abs, kIA32I64x2Abs);
}
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ UNREACHABLE();
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
diff --git a/deps/v8/src/compiler/backend/instruction-scheduler.h b/deps/v8/src/compiler/backend/instruction-scheduler.h
index a7c1cc5246..c22190bd50 100644
--- a/deps/v8/src/compiler/backend/instruction-scheduler.h
+++ b/deps/v8/src/compiler/backend/instruction-scheduler.h
@@ -6,15 +6,11 @@
#define V8_COMPILER_BACKEND_INSTRUCTION_SCHEDULER_H_
#include "src/base/optional.h"
+#include "src/base/utils/random-number-generator.h"
#include "src/compiler/backend/instruction.h"
#include "src/zone/zone-containers.h"
namespace v8 {
-
-namespace base {
-class RandomNumberGenerator;
-} // namespace base
-
namespace internal {
namespace compiler {
diff --git a/deps/v8/src/compiler/backend/instruction-selector-impl.h b/deps/v8/src/compiler/backend/instruction-selector-impl.h
index 7e1f183fb7..539ba5dc25 100644
--- a/deps/v8/src/compiler/backend/instruction-selector-impl.h
+++ b/deps/v8/src/compiler/backend/instruction-selector-impl.h
@@ -85,10 +85,12 @@ class OperandGenerator {
GetVReg(node)));
}
+ InstructionOperand DefineSameAsInput(Node* node, int input_index) {
+ return Define(node, UnallocatedOperand(GetVReg(node), input_index));
+ }
+
InstructionOperand DefineSameAsFirst(Node* node) {
- return Define(node,
- UnallocatedOperand(UnallocatedOperand::SAME_AS_FIRST_INPUT,
- GetVReg(node)));
+ return DefineSameAsInput(node, 0);
}
InstructionOperand DefineAsFixed(Node* node, Register reg) {
@@ -224,7 +226,7 @@ class OperandGenerator {
int AllocateVirtualRegister() { return sequence()->NextVirtualRegister(); }
InstructionOperand DefineSameAsFirstForVreg(int vreg) {
- return UnallocatedOperand(UnallocatedOperand::SAME_AS_FIRST_INPUT, vreg);
+ return UnallocatedOperand(UnallocatedOperand::SAME_AS_INPUT, vreg);
}
InstructionOperand DefineAsRegistertForVreg(int vreg) {
diff --git a/deps/v8/src/compiler/backend/instruction-selector.cc b/deps/v8/src/compiler/backend/instruction-selector.cc
index 5638ff1241..c806ad8bbe 100644
--- a/deps/v8/src/compiler/backend/instruction-selector.cc
+++ b/deps/v8/src/compiler/backend/instruction-selector.cc
@@ -9,6 +9,7 @@
#include "src/base/iterator.h"
#include "src/base/platform/wrappers.h"
#include "src/codegen/assembler-inl.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/tick-counter.h"
#include "src/compiler/backend/instruction-selector-impl.h"
#include "src/compiler/compiler-source-position-table.h"
@@ -802,11 +803,6 @@ size_t InstructionSelector::AddInputsToFrameStateDescriptor(
}
Instruction* InstructionSelector::EmitWithContinuation(
- InstructionCode opcode, FlagsContinuation* cont) {
- return EmitWithContinuation(opcode, 0, nullptr, 0, nullptr, cont);
-}
-
-Instruction* InstructionSelector::EmitWithContinuation(
InstructionCode opcode, InstructionOperand a, FlagsContinuation* cont) {
return EmitWithContinuation(opcode, 0, nullptr, 1, &a, cont);
}
@@ -880,8 +876,16 @@ Instruction* InstructionSelector::EmitWithContinuation(
AppendDeoptimizeArguments(&continuation_inputs_, cont->kind(),
cont->reason(), cont->feedback(),
FrameState{cont->frame_state()});
- } else if (cont->IsSet() || cont->IsSelect()) {
+ } else if (cont->IsSet()) {
continuation_outputs_.push_back(g.DefineAsRegister(cont->result()));
+ } else if (cont->IsSelect()) {
+ // The {Select} should put one of two values into the output register,
+ // depending on the result of the condition. The two result values are in
+ // the last two input slots, the {false_value} in {input_count - 2}, and the
+ // true_value in {input_count - 1}. The other inputs are used for the
+ // condition.
+ AddOutputToSelectContinuation(&g, static_cast<int>(input_count) - 2,
+ cont->result());
} else if (cont->IsTrap()) {
int trap_id = static_cast<int>(cont->trap_id());
continuation_inputs_.push_back(g.UseImmediate(trap_id));
@@ -1554,6 +1558,8 @@ void InstructionSelector::VisitNode(Node* node) {
return MarkAsWord32(node), VisitWord32Popcnt(node);
case IrOpcode::kWord64Popcnt:
return MarkAsWord32(node), VisitWord64Popcnt(node);
+ case IrOpcode::kWord32Select:
+ return MarkAsWord32(node), VisitSelect(node);
case IrOpcode::kWord64And:
return MarkAsWord64(node), VisitWord64And(node);
case IrOpcode::kWord64Or:
@@ -1584,6 +1590,8 @@ void InstructionSelector::VisitNode(Node* node) {
return MarkAsWord64(node), VisitInt64AbsWithOverflow(node);
case IrOpcode::kWord64Equal:
return VisitWord64Equal(node);
+ case IrOpcode::kWord64Select:
+ return MarkAsWord64(node), VisitSelect(node);
case IrOpcode::kInt32Add:
return MarkAsWord32(node), VisitInt32Add(node);
case IrOpcode::kInt32AddWithOverflow:
@@ -2842,7 +2850,7 @@ constexpr InstructionCode EncodeCallDescriptorFlags(
// Note: Not all bits of `flags` are preserved.
STATIC_ASSERT(CallDescriptor::kFlagsBitsEncodedInInstructionCode ==
MiscField::kSize);
- CONSTEXPR_DCHECK(Instruction::IsCallWithDescriptorFlags(opcode));
+ DCHECK(Instruction::IsCallWithDescriptorFlags(opcode));
return opcode | MiscField::encode(flags & MiscField::kMax);
}
@@ -2927,8 +2935,8 @@ void InstructionSelector::VisitCall(Node* node, BasicBlock* handler) {
if (call_descriptor->NeedsCallerSavedRegisters()) {
SaveFPRegsMode mode = call_descriptor->NeedsCallerSavedFPRegisters()
- ? kSaveFPRegs
- : kDontSaveFPRegs;
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
Emit(kArchSaveCallerRegisters | MiscField::encode(static_cast<int>(mode)),
g.NoOutput());
}
@@ -3007,8 +3015,8 @@ void InstructionSelector::VisitCall(Node* node, BasicBlock* handler) {
if (call_descriptor->NeedsCallerSavedRegisters()) {
SaveFPRegsMode mode = call_descriptor->NeedsCallerSavedFPRegisters()
- ? kSaveFPRegs
- : kDontSaveFPRegs;
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
Emit(
kArchRestoreCallerRegisters | MiscField::encode(static_cast<int>(mode)),
g.NoOutput());
diff --git a/deps/v8/src/compiler/backend/instruction-selector.h b/deps/v8/src/compiler/backend/instruction-selector.h
index 8984c05c3a..8bfe7fff6f 100644
--- a/deps/v8/src/compiler/backend/instruction-selector.h
+++ b/deps/v8/src/compiler/backend/instruction-selector.h
@@ -680,6 +680,9 @@ class V8_EXPORT_PRIVATE InstructionSelector final {
bool CanProduceSignalingNaN(Node* node);
+ void AddOutputToSelectContinuation(OperandGenerator* g, int first_input_index,
+ Node* node);
+
// ===========================================================================
// ============= Vector instruction (SIMD) helper fns. =======================
// ===========================================================================
diff --git a/deps/v8/src/compiler/backend/instruction.cc b/deps/v8/src/compiler/backend/instruction.cc
index 43824e8fcb..f90a249d9a 100644
--- a/deps/v8/src/compiler/backend/instruction.cc
+++ b/deps/v8/src/compiler/backend/instruction.cc
@@ -155,8 +155,8 @@ std::ostream& operator<<(std::ostream& os, const InstructionOperand& op) {
return os << "(R)";
case UnallocatedOperand::MUST_HAVE_SLOT:
return os << "(S)";
- case UnallocatedOperand::SAME_AS_FIRST_INPUT:
- return os << "(1)";
+ case UnallocatedOperand::SAME_AS_INPUT:
+ return os << "(" << unalloc->input_index() << ")";
case UnallocatedOperand::REGISTER_OR_SLOT:
return os << "(-)";
case UnallocatedOperand::REGISTER_OR_SLOT_OR_CONSTANT:
@@ -247,6 +247,8 @@ std::ostream& operator<<(std::ostream& os, const InstructionOperand& op) {
case MachineRepresentation::kCompressed:
os << "|c";
break;
+ case MachineRepresentation::kMapWord:
+ UNREACHABLE();
}
return os << "]";
}
@@ -914,6 +916,7 @@ static MachineRepresentation FilterRepresentation(MachineRepresentation rep) {
case MachineRepresentation::kCompressed:
return rep;
case MachineRepresentation::kNone:
+ case MachineRepresentation::kMapWord:
break;
}
diff --git a/deps/v8/src/compiler/backend/instruction.h b/deps/v8/src/compiler/backend/instruction.h
index 88a114e08e..33146f3c4f 100644
--- a/deps/v8/src/compiler/backend/instruction.h
+++ b/deps/v8/src/compiler/backend/instruction.h
@@ -185,7 +185,7 @@ class UnallocatedOperand final : public InstructionOperand {
FIXED_FP_REGISTER,
MUST_HAVE_REGISTER,
MUST_HAVE_SLOT,
- SAME_AS_FIRST_INPUT
+ SAME_AS_INPUT
};
// Lifetime of operand inside the instruction.
@@ -208,6 +208,14 @@ class UnallocatedOperand final : public InstructionOperand {
value_ |= LifetimeField::encode(USED_AT_END);
}
+ UnallocatedOperand(int virtual_register, int input_index)
+ : UnallocatedOperand(virtual_register) {
+ value_ |= BasicPolicyField::encode(EXTENDED_POLICY);
+ value_ |= ExtendedPolicyField::encode(SAME_AS_INPUT);
+ value_ |= LifetimeField::encode(USED_AT_END);
+ value_ |= InputIndexField::encode(input_index);
+ }
+
UnallocatedOperand(BasicPolicy policy, int index, int virtual_register)
: UnallocatedOperand(virtual_register) {
DCHECK(policy == FIXED_SLOT);
@@ -270,7 +278,7 @@ class UnallocatedOperand final : public InstructionOperand {
}
bool HasSameAsInputPolicy() const {
return basic_policy() == EXTENDED_POLICY &&
- extended_policy() == SAME_AS_FIRST_INPUT;
+ extended_policy() == SAME_AS_INPUT;
}
bool HasFixedSlotPolicy() const { return basic_policy() == FIXED_SLOT; }
bool HasFixedRegisterPolicy() const {
@@ -300,6 +308,11 @@ class UnallocatedOperand final : public InstructionOperand {
return ExtendedPolicyField::decode(value_);
}
+ int input_index() const {
+ DCHECK(HasSameAsInputPolicy());
+ return InputIndexField::decode(value_);
+ }
+
// [fixed_slot_index]: Only for FIXED_SLOT.
int fixed_slot_index() const {
DCHECK(HasFixedSlotPolicy());
@@ -362,6 +375,7 @@ class UnallocatedOperand final : public InstructionOperand {
using HasSecondaryStorageField = base::BitField64<bool, 40, 1>;
using FixedRegisterField = base::BitField64<int, 41, 6>;
using SecondaryStorageField = base::BitField64<int, 47, 3>;
+ using InputIndexField = base::BitField64<int, 50, 3>;
private:
explicit UnallocatedOperand(int virtual_register)
@@ -545,6 +559,8 @@ class LocationOperand : public InstructionOperand {
case MachineRepresentation::kWord16:
case MachineRepresentation::kNone:
return false;
+ case MachineRepresentation::kMapWord:
+ break;
}
UNREACHABLE();
}
diff --git a/deps/v8/src/compiler/backend/mid-tier-register-allocator.cc b/deps/v8/src/compiler/backend/mid-tier-register-allocator.cc
index 394f319dc0..ee9cd3ddde 100644
--- a/deps/v8/src/compiler/backend/mid-tier-register-allocator.cc
+++ b/deps/v8/src/compiler/backend/mid-tier-register-allocator.cc
@@ -587,8 +587,7 @@ void VirtualRegisterData::AddSpillUse(int instr_index,
const InstructionBlock* block = data->GetBlock(instr_index);
if (CouldSpillOnEntryToDeferred(block)) {
- // TODO(1180335): Remove once crbug.com/1180335 is fixed.
- CHECK(HasSpillRange());
+ DCHECK(HasSpillRange());
data->block_state(block->rpo_number())
.deferred_blocks_region()
->DeferSpillOutputUntilEntry(vreg());
@@ -614,8 +613,7 @@ void VirtualRegisterData::AddDeferredSpillOutput(
AllocatedOperand allocated_op, int instr_index,
MidTierRegisterAllocationData* data) {
DCHECK(!NeedsSpillAtOutput());
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(HasSpillRange());
+ DCHECK(HasSpillRange());
spill_range_->AddDeferredSpillOutput(allocated_op, instr_index, data);
}
@@ -937,9 +935,8 @@ void RegisterState::Register::Use(int virtual_register, int instr_index) {
// A register can have many pending uses, but should only ever have a single
// non-pending use, since any subsiquent use will commit the preceeding use
// first.
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(!is_allocated());
- CHECK(!is_shared());
+ DCHECK(!is_allocated());
+ DCHECK(!is_shared());
needs_gap_move_on_spill_ = true;
virtual_register_ = virtual_register;
last_use_instr_index_ = instr_index;
@@ -950,8 +947,7 @@ void RegisterState::Register::PendingUse(InstructionOperand* operand,
int virtual_register,
bool can_be_constant,
int instr_index) {
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(!was_spilled_while_shared());
+ DCHECK(!was_spilled_while_shared());
if (!is_allocated()) {
virtual_register_ = virtual_register;
last_use_instr_index_ = instr_index;
@@ -972,8 +968,7 @@ void RegisterState::Register::MarkAsPhiMove() {
void RegisterState::Register::AddDeferredBlockSpill(int instr_index,
bool on_exit, Zone* zone) {
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(is_allocated());
+ DCHECK(is_allocated());
if (!deferred_block_spills_) {
deferred_block_spills_.emplace(zone);
}
@@ -981,16 +976,14 @@ void RegisterState::Register::AddDeferredBlockSpill(int instr_index,
}
void RegisterState::Register::AddSharedUses(int shared_use_count) {
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(!was_spilled_while_shared());
+ DCHECK(!was_spilled_while_shared());
is_shared_ = true;
num_commits_required_ += shared_use_count;
}
void RegisterState::Register::CommitAtMerge() {
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(is_shared());
- CHECK(is_allocated());
+ DCHECK(is_shared());
+ DCHECK(is_allocated());
--num_commits_required_;
// We should still have commits required that will be resolved in the merge
// block.
@@ -999,9 +992,8 @@ void RegisterState::Register::CommitAtMerge() {
void RegisterState::Register::Commit(AllocatedOperand allocated_op,
MidTierRegisterAllocationData* data) {
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(is_allocated());
- CHECK_GT(num_commits_required_, 0);
+ DCHECK(is_allocated());
+ DCHECK_GT(num_commits_required_, 0);
if (--num_commits_required_ == 0) {
// Allocate all pending uses to |allocated_op| if this commit is non-shared,
@@ -1038,8 +1030,7 @@ void RegisterState::Register::Commit(AllocatedOperand allocated_op,
vreg_data.EmitDeferredSpillOutputs(data);
}
}
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK_IMPLIES(num_commits_required_ > 0, is_shared());
+ DCHECK_IMPLIES(num_commits_required_ > 0, is_shared());
}
void RegisterState::Register::Spill(AllocatedOperand allocated_op,
@@ -1106,9 +1097,8 @@ void RegisterState::Register::SpillPendingUses(
void RegisterState::Register::SpillForDeferred(
AllocatedOperand allocated, int instr_index,
MidTierRegisterAllocationData* data) {
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(is_allocated());
- CHECK(is_shared());
+ DCHECK(is_allocated());
+ DCHECK(is_shared());
// Add a pending deferred spill, then commit the register (with the commit
// being fullfilled by the deferred spill if the register is fully commited).
data->VirtualRegisterDataFor(virtual_register())
@@ -1120,8 +1110,7 @@ void RegisterState::Register::SpillForDeferred(
void RegisterState::Register::MoveToSpillSlotOnDeferred(
int virtual_register, int instr_index,
MidTierRegisterAllocationData* data) {
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(!was_spilled_while_shared());
+ DCHECK(!was_spilled_while_shared());
if (!is_allocated()) {
virtual_register_ = virtual_register;
last_use_instr_index_ = instr_index;
@@ -2168,8 +2157,7 @@ void SinglePassRegisterAllocator::AllocateDeferredBlockSpillOutput(
int instr_index, RpoNumber deferred_block,
VirtualRegisterData& virtual_register) {
DCHECK(data()->GetBlock(deferred_block)->IsDeferred());
- // TODO(1180335): Make DCHECK once crbug.com/1180335 is fixed.
- CHECK(virtual_register.HasSpillRange());
+ DCHECK(virtual_register.HasSpillRange());
if (!virtual_register.NeedsSpillAtOutput() &&
!DefinedAfter(virtual_register.vreg(), instr_index, UsePosition::kEnd)) {
// If a register has been assigned to the virtual register, and the virtual
diff --git a/deps/v8/src/compiler/backend/mips/code-generator-mips.cc b/deps/v8/src/compiler/backend/mips/code-generator-mips.cc
index 4066ba77e8..4e7b69e45b 100644
--- a/deps/v8/src/compiler/backend/mips/code-generator-mips.cc
+++ b/deps/v8/src/compiler/backend/mips/code-generator-mips.cc
@@ -161,18 +161,16 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
}
void Generate() final {
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
__ CheckPageFlag(value_, scratch0_,
MemoryChunk::kPointersToHereAreInterestingMask, eq,
exit());
__ Addu(scratch1_, object_, index_);
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (must_save_lr_) {
// We need to save and restore ra if the frame was elided.
__ Push(ra);
@@ -373,10 +371,10 @@ void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen,
} else { \
FrameScope scope(tasm(), StackFrame::MANUAL); \
__ Addu(a0, i.InputRegister(0), i.InputRegister(1)); \
- __ PushCallerSaved(kDontSaveFPRegs, v0, v1); \
+ __ PushCallerSaved(SaveFPRegsMode::kIgnore, v0, v1); \
__ PrepareCallCFunction(3, 0, kScratchReg); \
__ CallCFunction(ExternalReference::external(), 3, 0); \
- __ PopCallerSaved(kDontSaveFPRegs, v0, v1); \
+ __ PopCallerSaved(SaveFPRegsMode::kIgnore, v0, v1); \
} \
} while (0)
@@ -403,10 +401,10 @@ void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen,
} else { \
FrameScope scope(tasm(), StackFrame::MANUAL); \
__ Addu(a0, i.InputRegister(0), i.InputRegister(1)); \
- __ PushCallerSaved(kDontSaveFPRegs, v0, v1); \
+ __ PushCallerSaved(SaveFPRegsMode::kIgnore, v0, v1); \
__ PrepareCallCFunction(3, 0, kScratchReg); \
__ CallCFunction(ExternalReference::external(), 3, 0); \
- __ PopCallerSaved(kDontSaveFPRegs, v0, v1); \
+ __ PopCallerSaved(SaveFPRegsMode::kIgnore, v0, v1); \
} \
} while (0)
@@ -494,8 +492,8 @@ void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen,
__ Ll(i.TempRegister(2), MemOperand(i.TempRegister(0), 0)); \
__ ExtractBits(i.OutputRegister(0), i.TempRegister(2), i.TempRegister(1), \
size, sign_extend); \
- __ ExtractBits(i.InputRegister(2), i.InputRegister(2), i.TempRegister(1), \
- size, sign_extend); \
+ __ ExtractBits(i.InputRegister(2), i.InputRegister(2), zero_reg, size, \
+ sign_extend); \
__ BranchShort(&exit, ne, i.InputRegister(2), \
Operand(i.OutputRegister(0))); \
__ InsertBits(i.TempRegister(2), i.InputRegister(3), i.TempRegister(1), \
@@ -746,7 +744,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -759,7 +758,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -781,7 +781,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
int offset = __ root_array_available() ? 68 : 80;
#endif // V8_ENABLE_WEBASSEMBLY
#if V8_HOST_ARCH_MIPS
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
offset += 16;
}
#endif
@@ -873,9 +873,16 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRet:
AssembleReturn(instr->InputAt(0));
break;
- case kArchStackPointerGreaterThan:
- // Pseudo-instruction used for cmp/branch. No opcode emitted here.
+ case kArchStackPointerGreaterThan: {
+ Register lhs_register = sp;
+ uint32_t offset;
+ if (ShouldApplyOffsetToStackCheck(instr, &offset)) {
+ lhs_register = i.TempRegister(1);
+ __ Subu(lhs_register, sp, offset);
+ }
+ __ Sltu(i.TempRegister(0), i.InputRegister(0), lhs_register);
break;
+ }
case kArchStackCheckOffset:
__ Move(i.OutputRegister(), Smi::FromInt(GetStackCheckOffset()));
break;
@@ -906,6 +913,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
DetermineStubCallMode());
__ Addu(kScratchReg, object, index);
__ sw(value, MemOperand(kScratchReg));
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, scratch0,
MemoryChunk::kPointersFromHereAreInterestingMask, ne,
ool->entry());
@@ -1922,10 +1932,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
} else {
FrameScope scope(tasm(), StackFrame::MANUAL);
__ Addu(a0, i.InputRegister(0), i.InputRegister(1));
- __ PushCallerSaved(kDontSaveFPRegs, v0, v1);
+ __ PushCallerSaved(SaveFPRegsMode::kIgnore, v0, v1);
__ PrepareCallCFunction(1, 0, kScratchReg);
__ CallCFunction(ExternalReference::atomic_pair_load_function(), 1, 0);
- __ PopCallerSaved(kDontSaveFPRegs, v0, v1);
+ __ PopCallerSaved(SaveFPRegsMode::kIgnore, v0, v1);
}
break;
}
@@ -1945,10 +1955,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
} else {
FrameScope scope(tasm(), StackFrame::MANUAL);
__ Addu(a0, i.InputRegister(0), i.InputRegister(1));
- __ PushCallerSaved(kDontSaveFPRegs);
+ __ PushCallerSaved(SaveFPRegsMode::kIgnore);
__ PrepareCallCFunction(3, 0, kScratchReg);
__ CallCFunction(ExternalReference::atomic_pair_store_function(), 3, 0);
- __ PopCallerSaved(kDontSaveFPRegs);
+ __ PopCallerSaved(SaveFPRegsMode::kIgnore);
}
break;
}
@@ -1986,12 +1996,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ sync();
} else {
FrameScope scope(tasm(), StackFrame::MANUAL);
- __ PushCallerSaved(kDontSaveFPRegs, v0, v1);
+ __ PushCallerSaved(SaveFPRegsMode::kIgnore, v0, v1);
__ PrepareCallCFunction(3, 0, kScratchReg);
__ Addu(a0, i.InputRegister(0), i.InputRegister(1));
__ CallCFunction(ExternalReference::atomic_pair_exchange_function(), 3,
0);
- __ PopCallerSaved(kDontSaveFPRegs, v0, v1);
+ __ PopCallerSaved(SaveFPRegsMode::kIgnore, v0, v1);
}
break;
case kMipsWord32AtomicPairCompareExchange: {
@@ -2016,13 +2026,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ sync();
} else {
FrameScope scope(tasm(), StackFrame::MANUAL);
- __ PushCallerSaved(kDontSaveFPRegs, v0, v1);
+ __ PushCallerSaved(SaveFPRegsMode::kIgnore, v0, v1);
__ PrepareCallCFunction(5, 0, kScratchReg);
__ addu(a0, i.InputRegister(0), i.InputRegister(1));
__ sw(i.InputRegister(5), MemOperand(sp, 16));
__ CallCFunction(
ExternalReference::atomic_pair_compare_exchange_function(), 5, 0);
- __ PopCallerSaved(kDontSaveFPRegs, v0, v1);
+ __ PopCallerSaved(SaveFPRegsMode::kIgnore, v0, v1);
}
break;
}
@@ -3652,7 +3662,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
}
}
return kSuccess;
-} // NOLINT(readability/fn_size)
+}
void AssembleBranchToLabels(CodeGenerator* gen, TurboAssembler* tasm,
Instruction* instr, FlagsCondition condition,
@@ -3704,13 +3714,11 @@ void AssembleBranchToLabels(CodeGenerator* gen, TurboAssembler* tasm,
__ Branch(tlabel, cc, i.InputRegister(0), i.InputOperand(1));
} else if (instr->arch_opcode() == kArchStackPointerGreaterThan) {
cc = FlagsConditionToConditionCmp(condition);
- Register lhs_register = sp;
- uint32_t offset;
- if (gen->ShouldApplyOffsetToStackCheck(instr, &offset)) {
- lhs_register = i.TempRegister(0);
- __ Subu(lhs_register, sp, offset);
+ DCHECK((cc == ls) || (cc == hi));
+ if (cc == ls) {
+ __ xori(i.TempRegister(0), i.TempRegister(0), 1);
}
- __ Branch(tlabel, cc, lhs_register, Operand(i.InputRegister(0)));
+ __ Branch(tlabel, ne, i.TempRegister(0), Operand(zero_reg));
} else if (instr->arch_opcode() == kMipsCmpS ||
instr->arch_opcode() == kMipsCmpD) {
bool predicate;
@@ -4020,6 +4028,13 @@ void CodeGenerator::AssembleArchBoolean(Instruction* instr,
}
}
return;
+ } else if (instr->arch_opcode() == kArchStackPointerGreaterThan) {
+ cc = FlagsConditionToConditionCmp(condition);
+ DCHECK((cc == ls) || (cc == hi));
+ if (cc == ls) {
+ __ xori(i.OutputRegister(), i.TempRegister(0), 1);
+ }
+ return;
} else {
PrintF("AssembleArchBoolean Unimplemented arch_opcode is : %d\n",
instr->arch_opcode());
@@ -4132,7 +4147,7 @@ void CodeGenerator::AssembleConstructFrame() {
// frame is still on the stack. Optimized code uses OSR values directly from
// the unoptimized frame. Thus, all that needs to be done is to allocate the
// remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
required_slots -= osr_helper()->UnoptimizedFrameSlots();
ResetSpeculationPoison();
@@ -4234,7 +4249,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ Assert(eq, AbortReason::kUnexpectedAdditionalPopValue,
g.ToRegister(additional_pop_count),
Operand(static_cast<int64_t>(0)));
diff --git a/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc b/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc
index 0b8a022014..48635c9c15 100644
--- a/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc
+++ b/deps/v8/src/compiler/backend/mips/instruction-scheduler-mips.cc
@@ -1302,7 +1302,7 @@ int MultiPushFPULatency() {
int PushCallerSavedLatency(SaveFPRegsMode fp_mode) {
int latency = MultiPushLatency();
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
latency += MultiPushFPULatency();
}
return latency;
@@ -1326,7 +1326,7 @@ int MultiPopLatency() {
int PopCallerSavedLatency(SaveFPRegsMode fp_mode) {
int latency = 0;
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
latency += MultiPopFPULatency();
}
return latency + MultiPopLatency();
diff --git a/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc b/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc
index dcea4c8566..b001578b88 100644
--- a/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc
+++ b/deps/v8/src/compiler/backend/mips/instruction-selector-mips.cc
@@ -372,6 +372,7 @@ void InstructionSelector::VisitLoad(Node* node) {
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
case MachineRepresentation::kWord64: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -457,6 +458,7 @@ void InstructionSelector::VisitStore(Node* node) {
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
case MachineRepresentation::kWord64: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -1432,6 +1434,7 @@ void InstructionSelector::VisitUnalignedLoad(Node* node) {
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
case MachineRepresentation::kWord64: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -1485,6 +1488,7 @@ void InstructionSelector::VisitUnalignedStore(Node* node) {
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
case MachineRepresentation::kWord64: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -1630,11 +1634,12 @@ void InstructionSelector::VisitStackPointerGreaterThan(
InstructionOperand* const outputs = nullptr;
const int output_count = 0;
+ // TempRegister(0) is used to store the comparison result.
// Applying an offset to this stack check requires a temp register. Offsets
// are only applied to the first stack check. If applying an offset, we must
// ensure the input and temp registers do not alias, thus kUniqueRegister.
- InstructionOperand temps[] = {g.TempRegister()};
- const int temp_count = (kind == StackCheckKind::kJSFunctionEntry ? 1 : 0);
+ InstructionOperand temps[] = {g.TempRegister(), g.TempRegister()};
+ const int temp_count = (kind == StackCheckKind::kJSFunctionEntry ? 2 : 1);
const auto register_mode = (kind == StackCheckKind::kJSFunctionEntry)
? OperandGenerator::kUniqueRegister
: OperandGenerator::kRegister;
@@ -2500,6 +2505,12 @@ void InstructionSelector::VisitF64x2Pmax(Node* node) {
VisitUniqueRRR(this, kMipsF64x2Pmax, node);
}
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ UNREACHABLE();
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
diff --git a/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc b/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc
index 6edb153943..257ef1bca1 100644
--- a/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc
+++ b/deps/v8/src/compiler/backend/mips64/code-generator-mips64.cc
@@ -163,18 +163,16 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
}
void Generate() final {
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
__ CheckPageFlag(value_, scratch0_,
MemoryChunk::kPointersToHereAreInterestingMask, eq,
exit());
__ Daddu(scratch1_, object_, index_);
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (must_save_lr_) {
// We need to save and restore ra if the frame was elided.
__ Push(ra);
@@ -465,8 +463,8 @@ void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen,
__ load_linked(i.TempRegister(2), MemOperand(i.TempRegister(0), 0)); \
__ ExtractBits(i.OutputRegister(0), i.TempRegister(2), i.TempRegister(1), \
size, sign_extend); \
- __ ExtractBits(i.InputRegister(2), i.InputRegister(2), i.TempRegister(1), \
- size, sign_extend); \
+ __ ExtractBits(i.InputRegister(2), i.InputRegister(2), zero_reg, size, \
+ sign_extend); \
__ BranchShort(&exit, ne, i.InputRegister(2), \
Operand(i.OutputRegister(0))); \
__ InsertBits(i.TempRegister(2), i.InputRegister(3), i.TempRegister(1), \
@@ -711,7 +709,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -724,7 +723,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -746,7 +746,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
int offset = __ root_array_available() ? 76 : 88;
#endif // V8_ENABLE_WEBASSEMBLY
#if V8_HOST_ARCH_MIPS64
- if (__ emit_debug_code()) {
+ if (FLAG_debug_code) {
offset += 16;
}
#endif
@@ -835,9 +835,16 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRet:
AssembleReturn(instr->InputAt(0));
break;
- case kArchStackPointerGreaterThan:
- // Pseudo-instruction used for cmp/branch. No opcode emitted here.
+ case kArchStackPointerGreaterThan: {
+ Register lhs_register = sp;
+ uint32_t offset;
+ if (ShouldApplyOffsetToStackCheck(instr, &offset)) {
+ lhs_register = i.TempRegister(1);
+ __ Dsubu(lhs_register, sp, offset);
+ }
+ __ Sltu(i.TempRegister(0), i.InputRegister(0), lhs_register);
break;
+ }
case kArchStackCheckOffset:
__ Move(i.OutputRegister(), Smi::FromInt(GetStackCheckOffset()));
break;
@@ -868,6 +875,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
DetermineStubCallMode());
__ Daddu(kScratchReg, object, index);
__ Sd(value, MemOperand(kScratchReg));
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, scratch0,
MemoryChunk::kPointersFromHereAreInterestingMask, ne,
ool->entry());
@@ -3817,7 +3827,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
}
}
return kSuccess;
-} // NOLINT(readability/fn_size)
+}
#define UNSUPPORTED_COND(opcode, condition) \
StdoutStream{} << "Unsupported " << #opcode << " condition: \"" << condition \
@@ -3880,13 +3890,11 @@ void AssembleBranchToLabels(CodeGenerator* gen, TurboAssembler* tasm,
__ Branch(tlabel, cc, i.InputRegister(0), i.InputOperand(1));
} else if (instr->arch_opcode() == kArchStackPointerGreaterThan) {
cc = FlagsConditionToConditionCmp(condition);
- Register lhs_register = sp;
- uint32_t offset;
- if (gen->ShouldApplyOffsetToStackCheck(instr, &offset)) {
- lhs_register = i.TempRegister(0);
- __ Dsubu(lhs_register, sp, offset);
+ DCHECK((cc == ls) || (cc == hi));
+ if (cc == ls) {
+ __ xori(i.TempRegister(0), i.TempRegister(0), 1);
}
- __ Branch(tlabel, cc, lhs_register, Operand(i.InputRegister(0)));
+ __ Branch(tlabel, ne, i.TempRegister(0), Operand(zero_reg));
} else if (instr->arch_opcode() == kMips64CmpS ||
instr->arch_opcode() == kMips64CmpD) {
bool predicate;
@@ -4232,6 +4240,13 @@ void CodeGenerator::AssembleArchBoolean(Instruction* instr,
}
}
return;
+ } else if (instr->arch_opcode() == kArchStackPointerGreaterThan) {
+ cc = FlagsConditionToConditionCmp(condition);
+ DCHECK((cc == ls) || (cc == hi));
+ if (cc == ls) {
+ __ xori(i.OutputRegister(), i.TempRegister(0), 1);
+ }
+ return;
} else {
PrintF("AssembleArchBranch Unimplemented arch_opcode is : %d\n",
instr->arch_opcode());
@@ -4342,7 +4357,7 @@ void CodeGenerator::AssembleConstructFrame() {
// frame is still on the stack. Optimized code uses OSR values directly from
// the unoptimized frame. Thus, all that needs to be done is to allocate the
// remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
required_slots -= osr_helper()->UnoptimizedFrameSlots();
ResetSpeculationPoison();
@@ -4446,7 +4461,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ Assert(eq, AbortReason::kUnexpectedAdditionalPopValue,
g.ToRegister(additional_pop_count),
Operand(static_cast<int64_t>(0)));
diff --git a/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc b/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc
index 3b0e5b85fb..c63e0aa3d3 100644
--- a/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc
+++ b/deps/v8/src/compiler/backend/mips64/instruction-scheduler-mips64.cc
@@ -932,7 +932,7 @@ int MultiPushFPULatency() {
int PushCallerSavedLatency(SaveFPRegsMode fp_mode) {
int latency = MultiPushLatency();
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
latency += MultiPushFPULatency();
}
return latency;
@@ -956,7 +956,7 @@ int MultiPopFPULatency() {
int PopCallerSavedLatency(SaveFPRegsMode fp_mode) {
int latency = MultiPopLatency();
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
latency += MultiPopFPULatency();
}
return latency;
diff --git a/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc b/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc
index b0b3fec8f3..6d6b487ccd 100644
--- a/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc
+++ b/deps/v8/src/compiler/backend/mips64/instruction-selector-mips64.cc
@@ -512,6 +512,7 @@ void InstructionSelector::VisitLoad(Node* node) {
break;
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -589,6 +590,7 @@ void InstructionSelector::VisitStore(Node* node) {
break;
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -1452,7 +1454,9 @@ void InstructionSelector::VisitBitcastWord32ToWord64(Node* node) {
void InstructionSelector::VisitChangeInt32ToInt64(Node* node) {
Node* value = node->InputAt(0);
- if (value->opcode() == IrOpcode::kLoad && CanCover(node, value)) {
+ if ((value->opcode() == IrOpcode::kLoad ||
+ value->opcode() == IrOpcode::kLoadImmutable) &&
+ CanCover(node, value)) {
// Generate sign-extending load.
LoadRepresentation load_rep = LoadRepresentationOf(value->op());
InstructionCode opcode = kArchNop;
@@ -1853,6 +1857,7 @@ void InstructionSelector::VisitUnalignedLoad(Node* node) {
case MachineRepresentation::kBit: // Fall through.
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -1906,6 +1911,7 @@ void InstructionSelector::VisitUnalignedStore(Node* node) {
case MachineRepresentation::kBit: // Fall through.
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -2265,11 +2271,12 @@ void InstructionSelector::VisitStackPointerGreaterThan(
InstructionOperand* const outputs = nullptr;
const int output_count = 0;
+ // TempRegister(0) is used to store the comparison result.
// Applying an offset to this stack check requires a temp register. Offsets
// are only applied to the first stack check. If applying an offset, we must
// ensure the input and temp registers do not alias, thus kUniqueRegister.
- InstructionOperand temps[] = {g.TempRegister()};
- const int temp_count = (kind == StackCheckKind::kJSFunctionEntry ? 1 : 0);
+ InstructionOperand temps[] = {g.TempRegister(), g.TempRegister()};
+ const int temp_count = (kind == StackCheckKind::kJSFunctionEntry ? 2 : 1);
const auto register_mode = (kind == StackCheckKind::kJSFunctionEntry)
? OperandGenerator::kUniqueRegister
: OperandGenerator::kRegister;
@@ -3291,6 +3298,12 @@ VISIT_EXTADD_PAIRWISE(I32x4ExtAddPairwiseI16x8S, MSAS16)
VISIT_EXTADD_PAIRWISE(I32x4ExtAddPairwiseI16x8U, MSAU16)
#undef VISIT_EXTADD_PAIRWISE
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ UNREACHABLE();
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
diff --git a/deps/v8/src/compiler/backend/ppc/OWNERS b/deps/v8/src/compiler/backend/ppc/OWNERS
deleted file mode 100644
index 02c2cd757c..0000000000
--- a/deps/v8/src/compiler/backend/ppc/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-junyan@redhat.com
-joransiu@ca.ibm.com
-midawson@redhat.com
-mfarazma@redhat.com
-vasili.skurydzin@ibm.com
diff --git a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
index 334d318f02..2dfae5d2d6 100644
--- a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
+++ b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc
@@ -171,9 +171,6 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
void Generate() final {
ConstantPoolUnavailableScope constant_pool_unavailable(tasm());
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
if (COMPRESS_POINTERS_BOOL) {
__ DecompressTaggedPointer(value_, value_);
}
@@ -187,10 +184,11 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
__ add(scratch1_, object_, offset_);
}
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (must_save_lr_) {
// We need to save and restore lr if the frame was elided.
__ mflr(scratch0_);
@@ -824,8 +822,8 @@ void CodeGenerator::BailoutIfDeoptimized() {
int offset = Code::kCodeDataContainerOffset - Code::kHeaderSize;
__ LoadTaggedPointerField(
r11, MemOperand(kJavaScriptCallCodeStartRegister, offset));
- __ LoadWordArith(
- r11, FieldMemOperand(r11, CodeDataContainer::kKindSpecificFlagsOffset));
+ __ LoadS32(r11,
+ FieldMemOperand(r11, CodeDataContainer::kKindSpecificFlagsOffset));
__ TestBit(r11, Code::kMarkedForDeoptimizationBit);
__ Jump(BUILTIN_CODE(isolate(), CompileLazyDeoptimizedCode),
RelocInfo::CODE_TARGET, ne, cr0);
@@ -981,7 +979,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -994,7 +993,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -1130,7 +1130,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
case kArchParentFramePointer:
if (frame_access_state()->has_frame()) {
- __ LoadP(i.OutputRegister(), MemOperand(fp, 0));
+ __ LoadU64(i.OutputRegister(), MemOperand(fp, 0));
} else {
__ mr(i.OutputRegister(), fp);
}
@@ -1192,6 +1192,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
DetermineStubCallMode(), &unwinding_info_writer_);
__ StoreTaggedFieldX(value, MemOperand(object, offset), r0);
}
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, scratch0,
MemoryChunk::kPointersFromHereAreInterestingMask, ne,
ool->entry());
@@ -1222,11 +1225,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
} else {
DCHECK_EQ(MachineRepresentation::kSimd128, op->representation());
__ mov(ip, Operand(offset));
- __ LoadSimd128(i.OutputSimd128Register(), MemOperand(fp, ip), r0,
- kScratchSimd128Reg);
+ __ LoadSimd128(i.OutputSimd128Register(), MemOperand(fp, ip));
}
} else {
- __ LoadP(i.OutputRegister(), MemOperand(fp, offset), r0);
+ __ LoadU64(i.OutputRegister(), MemOperand(fp, offset), r0);
}
break;
}
@@ -1748,8 +1750,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
case MachineRepresentation::kSimd128:
__ addi(sp, sp, Operand(-kSimd128Size));
- __ StoreSimd128(i.InputSimd128Register(1), MemOperand(r0, sp), r0,
- kScratchSimd128Reg);
+ __ StoreSimd128(i.InputSimd128Register(1), MemOperand(r0, sp));
break;
default:
__ StorePU(i.InputRegister(1), MemOperand(sp, -kSystemPointerSize),
@@ -1791,8 +1792,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
} else {
DCHECK_EQ(MachineRepresentation::kSimd128, op->representation());
__ mov(ip, Operand(slot * kSystemPointerSize));
- __ StoreSimd128(i.InputSimd128Register(0), MemOperand(ip, sp), r0,
- kScratchSimd128Reg);
+ __ StoreSimd128(i.InputSimd128Register(0), MemOperand(ip, sp));
}
} else {
__ StoreP(i.InputRegister(0), MemOperand(sp, slot * kSystemPointerSize),
@@ -2057,9 +2057,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
AddressingMode mode = kMode_None;
MemOperand operand = i.MemoryOperand(&mode);
bool is_atomic = i.InputInt32(2);
- // lvx only supports MRR.
DCHECK_EQ(mode, kMode_MRR);
- __ LoadSimd128(result, operand, r0, kScratchSimd128Reg);
+ __ LoadSimd128(result, operand);
if (is_atomic) __ lwsync();
DCHECK_EQ(LeaveRC, i.OutputRCBit());
break;
@@ -2095,9 +2094,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
Simd128Register value = i.InputSimd128Register(index);
bool is_atomic = i.InputInt32(3);
if (is_atomic) __ lwsync();
- // stvx only supports MRR.
DCHECK_EQ(mode, kMode_MRR);
- __ StoreSimd128(value, operand, r0, kScratchSimd128Reg);
+ __ StoreSimd128(value, operand);
if (is_atomic) __ sync();
DCHECK_EQ(LeaveRC, i.OutputRCBit());
break;
@@ -2479,21 +2477,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
i.InputSimd128Register(1));
break;
}
- case kPPC_I64x2MinS: {
- __ vminsd(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- break;
- }
case kPPC_I32x4MinS: {
__ vminsw(i.OutputSimd128Register(), i.InputSimd128Register(0),
i.InputSimd128Register(1));
break;
}
- case kPPC_I64x2MinU: {
- __ vminud(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- break;
- }
case kPPC_I32x4MinU: {
__ vminuw(i.OutputSimd128Register(), i.InputSimd128Register(0),
i.InputSimd128Register(1));
@@ -2519,21 +2507,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
i.InputSimd128Register(1));
break;
}
- case kPPC_I64x2MaxS: {
- __ vmaxsd(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- break;
- }
case kPPC_I32x4MaxS: {
__ vmaxsw(i.OutputSimd128Register(), i.InputSimd128Register(0),
i.InputSimd128Register(1));
break;
}
- case kPPC_I64x2MaxU: {
- __ vmaxud(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- break;
- }
case kPPC_I32x4MaxU: {
__ vmaxuw(i.OutputSimd128Register(), i.InputSimd128Register(0),
i.InputSimd128Register(1));
@@ -2662,26 +2640,17 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kPPC_I64x2GeS: {
- __ vcmpequd(kScratchSimd128Reg, i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vcmpgtsd(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vor(i.OutputSimd128Register(), i.OutputSimd128Register(),
- kScratchSimd128Reg);
+ __ vcmpgtsd(kScratchSimd128Reg, i.InputSimd128Register(1),
+ i.InputSimd128Register(0));
+ __ vnor(i.OutputSimd128Register(), kScratchSimd128Reg,
+ kScratchSimd128Reg);
break;
}
case kPPC_I32x4GeS: {
- __ vcmpequw(kScratchSimd128Reg, i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vcmpgtsw(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vor(i.OutputSimd128Register(), i.OutputSimd128Register(),
- kScratchSimd128Reg);
- break;
- }
- case kPPC_I64x2GtU: {
- __ vcmpgtud(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
+ __ vcmpgtsw(kScratchSimd128Reg, i.InputSimd128Register(1),
+ i.InputSimd128Register(0));
+ __ vnor(i.OutputSimd128Register(), kScratchSimd128Reg,
+ kScratchSimd128Reg);
break;
}
case kPPC_I32x4GtU: {
@@ -2690,16 +2659,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
- case kPPC_I64x2GeU: {
- __ vcmpequd(kScratchSimd128Reg, i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vcmpgtud(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vor(i.OutputSimd128Register(), i.OutputSimd128Register(),
- kScratchSimd128Reg);
-
- break;
- }
case kPPC_I32x4GeU: {
__ vcmpequw(kScratchSimd128Reg, i.InputSimd128Register(0),
i.InputSimd128Register(1));
@@ -2715,12 +2674,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kPPC_I16x8GeS: {
- __ vcmpequh(kScratchSimd128Reg, i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vcmpgtsh(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vor(i.OutputSimd128Register(), i.OutputSimd128Register(),
- kScratchSimd128Reg);
+ __ vcmpgtsh(kScratchSimd128Reg, i.InputSimd128Register(1),
+ i.InputSimd128Register(0));
+ __ vnor(i.OutputSimd128Register(), kScratchSimd128Reg,
+ kScratchSimd128Reg);
break;
}
case kPPC_I16x8GtU: {
@@ -2743,12 +2700,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kPPC_I8x16GeS: {
- __ vcmpequb(kScratchSimd128Reg, i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vcmpgtsb(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1));
- __ vor(i.OutputSimd128Register(), i.OutputSimd128Register(),
- kScratchSimd128Reg);
+ __ vcmpgtsb(kScratchSimd128Reg, i.InputSimd128Register(1),
+ i.InputSimd128Register(0));
+ __ vnor(i.OutputSimd128Register(), kScratchSimd128Reg,
+ kScratchSimd128Reg);
break;
}
case kPPC_I8x16GtU: {
@@ -2840,15 +2795,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kPPC_S128Const: {
- Simd128Register dst = i.OutputSimd128Register();
- constexpr int lane_width_in_bytes = 8;
uint64_t low = make_uint64(i.InputUint32(1), i.InputUint32(0));
uint64_t high = make_uint64(i.InputUint32(3), i.InputUint32(2));
__ mov(r0, Operand(low));
__ mov(ip, Operand(high));
- __ mtvsrd(dst, ip);
- __ mtvsrd(kScratchSimd128Reg, r0);
- __ vinsertd(dst, kScratchSimd128Reg, Operand(1 * lane_width_in_bytes));
+ __ mtvsrdd(i.OutputSimd128Register(), ip, r0);
break;
}
case kPPC_S128Zero: {
@@ -2908,24 +2859,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kPPC_I64x2Neg: {
- constexpr int lane_width_in_bytes = 8;
- Simd128Register tempFPReg1 = i.ToSimd128Register(instr->TempAt(0));
- __ li(kScratchReg, Operand(1));
- __ mtvsrd(kScratchSimd128Reg, kScratchReg);
- __ vinsertd(kScratchSimd128Reg, kScratchSimd128Reg,
- Operand(1 * lane_width_in_bytes));
- // Perform negation.
- __ vnor(tempFPReg1, i.InputSimd128Register(0), i.InputSimd128Register(0));
- __ vaddudm(i.OutputSimd128Register(), tempFPReg1, kScratchSimd128Reg);
+ __ vnegd(i.OutputSimd128Register(), i.InputSimd128Register(0));
break;
}
case kPPC_I32x4Neg: {
- Simd128Register tempFPReg1 = i.ToSimd128Register(instr->TempAt(0));
- __ li(ip, Operand(1));
- __ mtvsrd(kScratchSimd128Reg, ip);
- __ vspltw(kScratchSimd128Reg, kScratchSimd128Reg, Operand(1));
- __ vnor(tempFPReg1, i.InputSimd128Register(0), i.InputSimd128Register(0));
- __ vadduwm(i.OutputSimd128Register(), kScratchSimd128Reg, tempFPReg1);
+ __ vnegw(i.OutputSimd128Register(), i.InputSimd128Register(0));
break;
}
case kPPC_I64x2Abs: {
@@ -3170,15 +3108,14 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kPPC_I8x16Shuffle: {
- constexpr int lane_width_in_bytes = 8;
Simd128Register dst = i.OutputSimd128Register(),
src0 = i.InputSimd128Register(0),
src1 = i.InputSimd128Register(1);
- __ mov(r0, Operand(make_uint64(i.InputUint32(3), i.InputUint32(2))));
- __ mov(ip, Operand(make_uint64(i.InputUint32(5), i.InputUint32(4))));
- __ mtvsrd(kScratchSimd128Reg, r0);
- __ mtvsrd(dst, ip);
- __ vinsertd(dst, kScratchSimd128Reg, Operand(1 * lane_width_in_bytes));
+ uint64_t low = make_uint64(i.InputUint32(3), i.InputUint32(2));
+ uint64_t high = make_uint64(i.InputUint32(5), i.InputUint32(4));
+ __ mov(r0, Operand(low));
+ __ mov(ip, Operand(high));
+ __ mtvsrdd(dst, ip, r0);
__ vperm(dst, src0, src1, dst);
break;
}
@@ -3226,24 +3163,15 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
Simd128Register dst = i.OutputSimd128Register(),
src0 = i.InputSimd128Register(0),
src1 = i.InputSimd128Register(1),
- tempFPReg1 = i.ToSimd128Register(instr->TempAt(0)),
- tempFPReg2 = i.ToSimd128Register(instr->TempAt(1));
+ tempFPReg1 = i.ToSimd128Register(instr->TempAt(0));
// Saturate the indices to 5 bits. Input indices more than 31 should
// return 0.
- __ xxspltib(tempFPReg2, Operand(31));
- __ vminub(tempFPReg2, src1, tempFPReg2);
- __ addi(sp, sp, Operand(-16));
- __ stxvd(src0, MemOperand(r0, sp));
- __ ldbrx(r0, MemOperand(r0, sp));
- __ li(ip, Operand(8));
- __ ldbrx(ip, MemOperand(ip, sp));
- __ stdx(ip, MemOperand(r0, sp));
- __ li(ip, Operand(8));
- __ stdx(r0, MemOperand(ip, sp));
- __ lxvd(kScratchSimd128Reg, MemOperand(r0, sp));
- __ addi(sp, sp, Operand(16));
- __ vxor(tempFPReg1, tempFPReg1, tempFPReg1);
- __ vperm(dst, kScratchSimd128Reg, tempFPReg1, tempFPReg2);
+ __ xxspltib(tempFPReg1, Operand(31));
+ __ vminub(tempFPReg1, src1, tempFPReg1);
+ // input needs to be reversed.
+ __ xxbrq(dst, src0);
+ __ vxor(kScratchSimd128Reg, kScratchSimd128Reg, kScratchSimd128Reg);
+ __ vperm(dst, dst, kScratchSimd128Reg, tempFPReg1);
break;
}
case kPPC_F64x2Qfma: {
@@ -3871,7 +3799,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
UNREACHABLE();
}
return kSuccess;
-} // NOLINT(readability/fn_size)
+}
// Assembles branches after an instruction.
void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) {
@@ -4174,7 +4102,7 @@ void CodeGenerator::AssembleConstructFrame() {
// frame is still on the stack. Optimized code uses OSR values directly from
// the unoptimized frame. Thus, all that needs to be done is to allocate the
// remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
required_slots -= osr_helper()->UnoptimizedFrameSlots();
ResetSpeculationPoison();
@@ -4200,11 +4128,11 @@ void CodeGenerator::AssembleConstructFrame() {
// check in the condition code.
if ((required_slots * kSystemPointerSize) < (FLAG_stack_size * 1024)) {
Register scratch = ip;
- __ LoadP(
+ __ LoadU64(
scratch,
FieldMemOperand(kWasmInstanceRegister,
WasmInstanceObject::kRealStackLimitAddressOffset));
- __ LoadP(scratch, MemOperand(scratch), r0);
+ __ LoadU64(scratch, MemOperand(scratch), r0);
__ Add(scratch, scratch, required_slots * kSystemPointerSize, r0);
__ cmpl(sp, scratch);
__ bge(&done);
@@ -4284,7 +4212,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ cmpi(g.ToRegister(additional_pop_count), Operand(0));
__ Assert(eq, AbortReason::kUnexpectedAdditionalPopValue);
}
@@ -4315,7 +4243,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
}
if (drop_jsargs) {
// Get the actual argument count.
- __ LoadP(argc_reg, MemOperand(fp, StandardFrameConstants::kArgCOffset));
+ __ LoadU64(argc_reg, MemOperand(fp, StandardFrameConstants::kArgCOffset));
}
AssembleDeconstructFrame();
}
@@ -4327,7 +4255,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
__ addi(argc_reg, argc_reg, Operand(1)); // Also pop the receiver.
if (parameter_slots > 1) {
Label skip;
- __ cmpi(argc_reg, Operand(parameter_slots));
+ __ Cmpi(argc_reg, Operand(parameter_slots), r0);
__ bgt(&skip);
__ mov(argc_reg, Operand(parameter_slots));
__ bind(&skip);
@@ -4378,10 +4306,10 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
DCHECK(destination->IsRegister() || destination->IsStackSlot());
MemOperand src = g.ToMemOperand(source);
if (destination->IsRegister()) {
- __ LoadP(g.ToRegister(destination), src, r0);
+ __ LoadU64(g.ToRegister(destination), src, r0);
} else {
Register temp = kScratchReg;
- __ LoadP(temp, src, r0);
+ __ LoadU64(temp, src, r0);
__ StoreP(temp, g.ToMemOperand(destination), r0);
}
} else if (source->IsConstant()) {
@@ -4494,8 +4422,7 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
DCHECK(destination->IsSimd128StackSlot());
MemOperand dst = g.ToMemOperand(destination);
__ mov(ip, Operand(dst.offset()));
- __ StoreSimd128(g.ToSimd128Register(source), MemOperand(dst.ra(), ip),
- r0, kScratchSimd128Reg);
+ __ StoreSimd128(g.ToSimd128Register(source), MemOperand(dst.ra(), ip));
}
} else {
DoubleRegister src = g.ToDoubleRegister(source);
@@ -4526,7 +4453,7 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
MemOperand src = g.ToMemOperand(source);
__ mov(ip, Operand(src.offset()));
__ LoadSimd128(g.ToSimd128Register(destination),
- MemOperand(src.ra(), ip), r0, kScratchSimd128Reg);
+ MemOperand(src.ra(), ip));
}
} else {
LocationOperand* op = LocationOperand::cast(source);
@@ -4541,15 +4468,15 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
DCHECK_EQ(MachineRepresentation::kSimd128, op->representation());
// push v0, to be used as scratch
__ addi(sp, sp, Operand(-kSimd128Size));
- __ StoreSimd128(v0, MemOperand(r0, sp), r0, kScratchSimd128Reg);
+ __ StoreSimd128(v0, MemOperand(r0, sp));
MemOperand src = g.ToMemOperand(source);
MemOperand dst = g.ToMemOperand(destination);
__ mov(ip, Operand(src.offset()));
- __ LoadSimd128(v0, MemOperand(src.ra(), ip), r0, kScratchSimd128Reg);
+ __ LoadSimd128(v0, MemOperand(src.ra(), ip));
__ mov(ip, Operand(dst.offset()));
- __ StoreSimd128(v0, MemOperand(dst.ra(), ip), r0, kScratchSimd128Reg);
+ __ StoreSimd128(v0, MemOperand(dst.ra(), ip));
// restore v0
- __ LoadSimd128(v0, MemOperand(r0, sp), ip, kScratchSimd128Reg);
+ __ LoadSimd128(v0, MemOperand(r0, sp));
__ addi(sp, sp, Operand(kSimd128Size));
}
}
diff --git a/deps/v8/src/compiler/backend/ppc/instruction-codes-ppc.h b/deps/v8/src/compiler/backend/ppc/instruction-codes-ppc.h
index 787cc2a27d..ccbce18045 100644
--- a/deps/v8/src/compiler/backend/ppc/instruction-codes-ppc.h
+++ b/deps/v8/src/compiler/backend/ppc/instruction-codes-ppc.h
@@ -255,15 +255,9 @@ namespace compiler {
V(PPC_I64x2Add) \
V(PPC_I64x2Sub) \
V(PPC_I64x2Mul) \
- V(PPC_I64x2MinS) \
- V(PPC_I64x2MinU) \
- V(PPC_I64x2MaxS) \
- V(PPC_I64x2MaxU) \
V(PPC_I64x2Eq) \
V(PPC_I64x2Ne) \
V(PPC_I64x2GtS) \
- V(PPC_I64x2GtU) \
- V(PPC_I64x2GeU) \
V(PPC_I64x2GeS) \
V(PPC_I64x2Shl) \
V(PPC_I64x2ShrS) \
diff --git a/deps/v8/src/compiler/backend/ppc/instruction-scheduler-ppc.cc b/deps/v8/src/compiler/backend/ppc/instruction-scheduler-ppc.cc
index 749905a055..e6c59fef22 100644
--- a/deps/v8/src/compiler/backend/ppc/instruction-scheduler-ppc.cc
+++ b/deps/v8/src/compiler/backend/ppc/instruction-scheduler-ppc.cc
@@ -177,15 +177,9 @@ int InstructionScheduler::GetTargetInstructionFlags(
case kPPC_I64x2Add:
case kPPC_I64x2Sub:
case kPPC_I64x2Mul:
- case kPPC_I64x2MinS:
- case kPPC_I64x2MinU:
- case kPPC_I64x2MaxS:
- case kPPC_I64x2MaxU:
case kPPC_I64x2Eq:
case kPPC_I64x2Ne:
case kPPC_I64x2GtS:
- case kPPC_I64x2GtU:
- case kPPC_I64x2GeU:
case kPPC_I64x2GeS:
case kPPC_I64x2Shl:
case kPPC_I64x2ShrS:
diff --git a/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc b/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc
index 849723bdac..d4ef108699 100644
--- a/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc
+++ b/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc
@@ -224,6 +224,7 @@ void InstructionSelector::VisitLoad(Node* node) {
// Vectors do not support MRI mode, only MRR is available.
mode = kNoImmediate;
break;
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -356,6 +357,7 @@ void InstructionSelector::VisitStore(Node* node) {
// Vectors do not support MRI mode, only MRR is available.
mode = kNoImmediate;
break;
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -2642,6 +2644,12 @@ void InstructionSelector::VisitStoreLane(Node* node) {
Emit(opcode | AddressingModeField::encode(kMode_MRR), 0, nullptr, 4, inputs);
}
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ UNREACHABLE();
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
diff --git a/deps/v8/src/compiler/backend/register-allocation.h b/deps/v8/src/compiler/backend/register-allocation.h
index f4a7558b04..37173da1fc 100644
--- a/deps/v8/src/compiler/backend/register-allocation.h
+++ b/deps/v8/src/compiler/backend/register-allocation.h
@@ -65,6 +65,7 @@ inline int ByteWidthForStackSlot(MachineRepresentation rep) {
case MachineRepresentation::kSimd128:
return kSimd128Size;
case MachineRepresentation::kNone:
+ case MachineRepresentation::kMapWord:
break;
}
UNREACHABLE();
diff --git a/deps/v8/src/compiler/backend/register-allocator-verifier.cc b/deps/v8/src/compiler/backend/register-allocator-verifier.cc
index 1587f0ee18..b4099c5fad 100644
--- a/deps/v8/src/compiler/backend/register-allocator-verifier.cc
+++ b/deps/v8/src/compiler/backend/register-allocator-verifier.cc
@@ -72,7 +72,7 @@ RegisterAllocatorVerifier::RegisterAllocatorVerifier(
constraints_.reserve(sequence->instructions().size());
// TODO(dcarney): model unique constraints.
// Construct OperandConstraints for all InstructionOperands, eliminating
- // kSameAsFirst along the way.
+ // kSameAsInput along the way.
for (const Instruction* instr : sequence->instructions()) {
// All gaps should be totally unallocated at this point.
VerifyEmptyGaps(instr);
@@ -90,10 +90,11 @@ RegisterAllocatorVerifier::RegisterAllocatorVerifier(
}
for (size_t i = 0; i < instr->OutputCount(); ++i, ++count) {
BuildConstraint(instr->OutputAt(i), &op_constraints[count]);
- if (op_constraints[count].type_ == kSameAsFirst) {
- CHECK_LT(0, instr->InputCount());
- op_constraints[count].type_ = op_constraints[0].type_;
- op_constraints[count].value_ = op_constraints[0].value_;
+ if (op_constraints[count].type_ == kSameAsInput) {
+ int input_index = op_constraints[count].value_;
+ CHECK_LT(input_index, instr->InputCount());
+ op_constraints[count].type_ = op_constraints[input_index].type_;
+ op_constraints[count].value_ = op_constraints[input_index].value_;
}
VerifyOutput(op_constraints[count]);
}
@@ -105,7 +106,7 @@ RegisterAllocatorVerifier::RegisterAllocatorVerifier(
void RegisterAllocatorVerifier::VerifyInput(
const OperandConstraint& constraint) {
- CHECK_NE(kSameAsFirst, constraint.type_);
+ CHECK_NE(kSameAsInput, constraint.type_);
if (constraint.type_ != kImmediate) {
CHECK_NE(InstructionOperand::kInvalidVirtualRegister,
constraint.virtual_register_);
@@ -114,7 +115,7 @@ void RegisterAllocatorVerifier::VerifyInput(
void RegisterAllocatorVerifier::VerifyTemp(
const OperandConstraint& constraint) {
- CHECK_NE(kSameAsFirst, constraint.type_);
+ CHECK_NE(kSameAsInput, constraint.type_);
CHECK_NE(kImmediate, constraint.type_);
CHECK_NE(kConstant, constraint.type_);
}
@@ -212,8 +213,9 @@ void RegisterAllocatorVerifier::BuildConstraint(const InstructionOperand* op,
constraint->value_ =
ElementSizeLog2Of(sequence()->GetRepresentation(vreg));
break;
- case UnallocatedOperand::SAME_AS_FIRST_INPUT:
- constraint->type_ = kSameAsFirst;
+ case UnallocatedOperand::SAME_AS_INPUT:
+ constraint->type_ = kSameAsInput;
+ constraint->value_ = unallocated->input_index();
break;
}
}
@@ -269,7 +271,7 @@ void RegisterAllocatorVerifier::CheckConstraint(
CHECK_WITH_MSG(op->IsRegister() || op->IsStackSlot() || op->IsConstant(),
caller_info_);
return;
- case kSameAsFirst:
+ case kSameAsInput:
CHECK_WITH_MSG(false, caller_info_);
return;
}
diff --git a/deps/v8/src/compiler/backend/register-allocator-verifier.h b/deps/v8/src/compiler/backend/register-allocator-verifier.h
index 11bd4924f4..c812642d33 100644
--- a/deps/v8/src/compiler/backend/register-allocator-verifier.h
+++ b/deps/v8/src/compiler/backend/register-allocator-verifier.h
@@ -219,7 +219,7 @@ class RegisterAllocatorVerifier final : public ZoneObject {
kRegisterOrSlot,
kRegisterOrSlotFP,
kRegisterOrSlotOrConstant,
- kSameAsFirst,
+ kSameAsInput,
kRegisterAndSlot
};
diff --git a/deps/v8/src/compiler/backend/register-allocator.cc b/deps/v8/src/compiler/backend/register-allocator.cc
index 3cd6cd98de..0649fd5fd0 100644
--- a/deps/v8/src/compiler/backend/register-allocator.cc
+++ b/deps/v8/src/compiler/backend/register-allocator.cc
@@ -1373,21 +1373,6 @@ TopLevelLiveRange* TopTierRegisterAllocationData::NewLiveRange(
return allocation_zone()->New<TopLevelLiveRange>(index, rep);
}
-int TopTierRegisterAllocationData::GetNextLiveRangeId() {
- int vreg = virtual_register_count_++;
- if (vreg >= static_cast<int>(live_ranges().size())) {
- live_ranges().resize(vreg + 1, nullptr);
- }
- return vreg;
-}
-
-TopLevelLiveRange* TopTierRegisterAllocationData::NextLiveRange(
- MachineRepresentation rep) {
- int vreg = GetNextLiveRangeId();
- TopLevelLiveRange* ret = NewLiveRange(vreg, rep);
- return ret;
-}
-
TopTierRegisterAllocationData::PhiMapValue*
TopTierRegisterAllocationData::InitializePhiMap(const InstructionBlock* block,
PhiInstruction* phi) {
@@ -1747,6 +1732,7 @@ void ConstraintBuilder::MeetConstraintsAfter(int instr_index) {
void ConstraintBuilder::MeetConstraintsBefore(int instr_index) {
Instruction* second = code()->InstructionAt(instr_index);
// Handle fixed input operands of second instruction.
+ ZoneVector<TopLevelLiveRange*>* spilled_consts = nullptr;
for (size_t i = 0; i < second->InputCount(); i++) {
InstructionOperand* input = second->InputAt(i);
if (input->IsImmediate()) {
@@ -1757,8 +1743,19 @@ void ConstraintBuilder::MeetConstraintsBefore(int instr_index) {
TopLevelLiveRange* range =
data()->GetOrCreateLiveRangeFor(cur_input->virtual_register());
if (range->HasSpillOperand() && range->GetSpillOperand()->IsConstant()) {
+ bool already_spilled = false;
+ if (spilled_consts == nullptr) {
+ spilled_consts =
+ allocation_zone()->New<ZoneVector<TopLevelLiveRange*>>(
+ allocation_zone());
+ } else {
+ auto it =
+ std::find(spilled_consts->begin(), spilled_consts->end(), range);
+ already_spilled = it != spilled_consts->end();
+ }
auto it = data()->slot_for_const_range().find(range);
if (it == data()->slot_for_const_range().end()) {
+ DCHECK(!already_spilled);
int width = ByteWidthForStackSlot(range->representation());
int index = data()->frame()->AllocateSpillSlot(width);
auto* slot = AllocatedOperand::New(allocation_zone(),
@@ -1766,13 +1763,15 @@ void ConstraintBuilder::MeetConstraintsBefore(int instr_index) {
range->representation(), index);
it = data()->slot_for_const_range().emplace(range, slot).first;
}
- auto* slot = it->second;
- int input_vreg = cur_input->virtual_register();
- UnallocatedOperand input_copy(UnallocatedOperand::REGISTER_OR_SLOT,
- input_vreg);
- // Spill at every use position for simplicity. This case is very rare -
- // the only known instance is crbug.com/1146880.
- data()->AddGapMove(instr_index, Instruction::END, input_copy, *slot);
+ if (!already_spilled) {
+ auto* slot = it->second;
+ int input_vreg = cur_input->virtual_register();
+ UnallocatedOperand input_copy(UnallocatedOperand::REGISTER_OR_SLOT,
+ input_vreg);
+ // Spill at every use position for simplicity, this case is very rare.
+ data()->AddGapMove(instr_index, Instruction::END, input_copy, *slot);
+ spilled_consts->push_back(range);
+ }
}
}
if (cur_input->HasFixedPolicy()) {
@@ -1792,7 +1791,7 @@ void ConstraintBuilder::MeetConstraintsBefore(int instr_index) {
if (!second_output->HasSameAsInputPolicy()) continue;
DCHECK_EQ(0, i); // Only valid for first output.
UnallocatedOperand* cur_input =
- UnallocatedOperand::cast(second->InputAt(0));
+ UnallocatedOperand::cast(second->InputAt(second_output->input_index()));
int output_vreg = second_output->virtual_register();
int input_vreg = cur_input->virtual_register();
UnallocatedOperand input_copy(UnallocatedOperand::REGISTER_OR_SLOT,
@@ -3958,7 +3957,8 @@ void LinearScanAllocator::FindFreeRegistersForRange(
// interesting to this range anyway.
// TODO(mtrofin): extend to aliased ranges, too.
if ((kSimpleFPAliasing || !check_fp_aliasing()) &&
- positions[cur_reg] <= cur_inactive->NextStart()) {
+ (positions[cur_reg] <= cur_inactive->NextStart() ||
+ range->End() <= cur_inactive->NextStart())) {
break;
}
LifetimePosition next_intersection =
diff --git a/deps/v8/src/compiler/backend/register-allocator.h b/deps/v8/src/compiler/backend/register-allocator.h
index 214a1d1308..a9c3ca5ae0 100644
--- a/deps/v8/src/compiler/backend/register-allocator.h
+++ b/deps/v8/src/compiler/backend/register-allocator.h
@@ -305,7 +305,6 @@ class TopTierRegisterAllocationData final : public RegisterAllocationData {
TopLevelLiveRange* GetOrCreateLiveRangeFor(int index);
// Creates a new live range.
TopLevelLiveRange* NewLiveRange(int index, MachineRepresentation rep);
- TopLevelLiveRange* NextLiveRange(MachineRepresentation rep);
SpillRange* AssignSpillRangeToLiveRange(TopLevelLiveRange* range,
SpillMode spill_mode);
@@ -356,8 +355,6 @@ class TopTierRegisterAllocationData final : public RegisterAllocationData {
}
private:
- int GetNextLiveRangeId();
-
Zone* const allocation_zone_;
Frame* const frame_;
InstructionSequence* const code_;
diff --git a/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc
index f01941883e..007edd7a96 100644
--- a/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc
+++ b/deps/v8/src/compiler/backend/riscv64/code-generator-riscv64.cc
@@ -157,18 +157,16 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
zone_(gen->zone()) {}
void Generate() final {
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
__ CheckPageFlag(value_, scratch0_,
MemoryChunk::kPointersToHereAreInterestingMask, eq,
exit());
__ Add64(scratch1_, object_, index_);
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (must_save_lr_) {
// We need to save and restore ra if the frame was elided.
__ Push(ra);
@@ -488,6 +486,11 @@ void CodeGenerator::AssemblePrepareTailCall() {
frame_access_state()->SetFrameAccessToSP();
}
+void CodeGenerator::AssembleArchSelect(Instruction* instr,
+ FlagsCondition condition) {
+ UNIMPLEMENTED();
+}
+
namespace {
void AdjustStackPointerForTailCall(TurboAssembler* tasm,
@@ -606,8 +609,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
Address wasm_code = static_cast<Address>(constant.ToInt64());
__ Call(wasm_code, constant.rmode());
} else {
- __ Add64(kScratchReg, i.InputRegister(0), 0);
- __ Call(kScratchReg);
+ __ Add64(t6, i.InputRegister(0), 0);
+ __ Call(t6);
}
RecordCallPosition(instr);
frame_access_state()->ClearSPDelta();
@@ -676,7 +679,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -689,7 +693,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -816,6 +821,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
DetermineStubCallMode());
__ Add64(kScratchReg, object, index);
__ Sd(value, MemOperand(kScratchReg));
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, scratch0,
MemoryChunk::kPointersFromHereAreInterestingMask, ne,
ool->entry());
@@ -1122,6 +1130,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kRiscvCmp:
// Pseudo-instruction used for cmp/branch. No opcode emitted here.
break;
+ case kRiscvCmpZero:
+ // Pseudo-instruction used for cmpzero/branch. No opcode emitted here.
+ break;
case kRiscvMov:
// TODO(plind): Should we combine mov/li like this, or use separate instr?
// - Also see x64 ASSEMBLE_BINOP & RegisterOrOperandType
@@ -1841,7 +1852,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
UNIMPLEMENTED();
}
return kSuccess;
-} // NOLINT(readability/fn_size)
+}
#define UNSUPPORTED_COND(opcode, condition) \
StdoutStream{} << "Unsupported " << #opcode << " condition: \"" << condition \
@@ -1902,6 +1913,9 @@ void AssembleBranchToLabels(CodeGenerator* gen, TurboAssembler* tasm,
} else if (instr->arch_opcode() == kRiscvCmp) {
cc = FlagsConditionToConditionCmp(condition);
__ Branch(tlabel, cc, i.InputRegister(0), i.InputOperand(1));
+ } else if (instr->arch_opcode() == kRiscvCmpZero) {
+ cc = FlagsConditionToConditionCmp(condition);
+ __ Branch(tlabel, cc, i.InputRegister(0), Operand(zero_reg));
} else if (instr->arch_opcode() == kArchStackPointerGreaterThan) {
cc = FlagsConditionToConditionCmp(condition);
Register lhs_register = sp;
@@ -1957,6 +1971,12 @@ void CodeGenerator::AssembleBranchPoisoning(FlagsCondition condition,
__ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, kScratchReg);
}
return;
+ case kRiscvCmpZero: {
+ __ CompareI(kScratchReg, i.InputRegister(0), Operand(zero_reg),
+ FlagsConditionToConditionCmp(condition));
+ __ LoadZeroIfConditionNotZero(kSpeculationPoisonRegister, kScratchReg);
+ }
+ return;
case kRiscvTst: {
switch (condition) {
case kEqual:
@@ -2224,6 +2244,68 @@ void CodeGenerator::AssembleArchBoolean(Instruction* instr,
UNREACHABLE();
}
return;
+ } else if (instr->arch_opcode() == kRiscvCmpZero) {
+ cc = FlagsConditionToConditionCmp(condition);
+ switch (cc) {
+ case eq: {
+ Register left = i.InputRegister(0);
+ __ Sltu(result, left, 1);
+ break;
+ }
+ case ne: {
+ Register left = i.InputRegister(0);
+ __ Sltu(result, zero_reg, left);
+ break;
+ }
+ case lt:
+ case ge: {
+ Register left = i.InputRegister(0);
+ Operand right = Operand(zero_reg);
+ __ Slt(result, left, right);
+ if (cc == ge) {
+ __ Xor(result, result, 1);
+ }
+ } break;
+ case gt:
+ case le: {
+ Operand left = i.InputOperand(0);
+ __ Slt(result, zero_reg, left);
+ if (cc == le) {
+ __ Xor(result, result, 1);
+ }
+ } break;
+ case Uless:
+ case Ugreater_equal: {
+ Register left = i.InputRegister(0);
+ Operand right = Operand(zero_reg);
+ __ Sltu(result, left, right);
+ if (cc == Ugreater_equal) {
+ __ Xor(result, result, 1);
+ }
+ } break;
+ case Ugreater:
+ case Uless_equal: {
+ Register left = zero_reg;
+ Operand right = i.InputOperand(0);
+ __ Sltu(result, left, right);
+ if (cc == Uless_equal) {
+ __ Xor(result, result, 1);
+ }
+ } break;
+ default:
+ UNREACHABLE();
+ }
+ return;
+ } else if (instr->arch_opcode() == kArchStackPointerGreaterThan) {
+ cc = FlagsConditionToConditionCmp(condition);
+ Register lhs_register = sp;
+ uint32_t offset;
+ if (ShouldApplyOffsetToStackCheck(instr, &offset)) {
+ lhs_register = i.TempRegister(0);
+ __ Sub64(lhs_register, sp, offset);
+ }
+ __ Sgtu(result, lhs_register, Operand(i.InputRegister(0)));
+ return;
} else if (instr->arch_opcode() == kRiscvCmpD ||
instr->arch_opcode() == kRiscvCmpS) {
FPURegister left = i.InputOrZeroDoubleRegister(0);
@@ -2346,7 +2428,7 @@ void CodeGenerator::AssembleConstructFrame() {
// frame is still on the stack. Optimized code uses OSR values directly from
// the unoptimized frame. Thus, all that needs to be done is to allocate the
// remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
required_slots -= osr_helper()->UnoptimizedFrameSlots();
ResetSpeculationPoison();
@@ -2448,7 +2530,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ Assert(eq, AbortReason::kUnexpectedAdditionalPopValue,
g.ToRegister(additional_pop_count),
Operand(static_cast<int64_t>(0)));
@@ -2510,7 +2592,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
__ Ret();
}
-void CodeGenerator::FinishCode() {}
+void CodeGenerator::FinishCode() { __ ForceConstantPoolEmissionWithoutJump(); }
void CodeGenerator::PrepareForDeoptimizationExits(
ZoneDeque<DeoptimizationExit*>* exits) {}
diff --git a/deps/v8/src/compiler/backend/riscv64/instruction-codes-riscv64.h b/deps/v8/src/compiler/backend/riscv64/instruction-codes-riscv64.h
index 61921d1585..f230ce3377 100644
--- a/deps/v8/src/compiler/backend/riscv64/instruction-codes-riscv64.h
+++ b/deps/v8/src/compiler/backend/riscv64/instruction-codes-riscv64.h
@@ -59,6 +59,7 @@ namespace compiler {
V(RiscvMov) \
V(RiscvTst) \
V(RiscvCmp) \
+ V(RiscvCmpZero) \
V(RiscvCmpS) \
V(RiscvAddS) \
V(RiscvSubS) \
diff --git a/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc
index b83942ffce..c9210ded8f 100644
--- a/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc
+++ b/deps/v8/src/compiler/backend/riscv64/instruction-scheduler-riscv64.cc
@@ -32,6 +32,7 @@ int InstructionScheduler::GetTargetInstructionFlags(
case kRiscvCeilWS:
case kRiscvClz32:
case kRiscvCmp:
+ case kRiscvCmpZero:
case kRiscvCmpD:
case kRiscvCmpS:
case kRiscvCtz32:
@@ -812,7 +813,7 @@ int MultiPushFPULatency() {
int PushCallerSavedLatency(SaveFPRegsMode fp_mode) {
int latency = MultiPushLatency();
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
latency += MultiPushFPULatency();
}
return latency;
@@ -836,7 +837,7 @@ int MultiPopFPULatency() {
int PopCallerSavedLatency(SaveFPRegsMode fp_mode) {
int latency = MultiPopLatency();
- if (fp_mode == kSaveFPRegs) {
+ if (fp_mode == SaveFPRegsMode::kSave) {
latency += MultiPopFPULatency();
}
return latency;
diff --git a/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc b/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc
index 1d6b506685..83865fde13 100644
--- a/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc
+++ b/deps/v8/src/compiler/backend/riscv64/instruction-selector-riscv64.cc
@@ -459,6 +459,7 @@ void InstructionSelector::VisitLoad(Node* node) {
break;
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -533,6 +534,7 @@ void InstructionSelector::VisitStore(Node* node) {
break;
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -1214,7 +1216,9 @@ void InstructionSelector::VisitBitcastWord32ToWord64(Node* node) {
void InstructionSelector::VisitChangeInt32ToInt64(Node* node) {
Node* value = node->InputAt(0);
- if (value->opcode() == IrOpcode::kLoad && CanCover(node, value)) {
+ if ((value->opcode() == IrOpcode::kLoad ||
+ value->opcode() == IrOpcode::kLoadImmutable) &&
+ CanCover(node, value)) {
// Generate sign-extending load.
LoadRepresentation load_rep = LoadRepresentationOf(value->op());
InstructionCode opcode = kArchNop;
@@ -1242,7 +1246,8 @@ void InstructionSelector::VisitChangeInt32ToInt64(Node* node) {
bool InstructionSelector::ZeroExtendsWord32ToWord64NoPhis(Node* node) {
DCHECK_NE(node->opcode(), IrOpcode::kPhi);
- if (node->opcode() == IrOpcode::kLoad) {
+ if (node->opcode() == IrOpcode::kLoad ||
+ node->opcode() == IrOpcode::kLoadImmutable) {
LoadRepresentation load_rep = LoadRepresentationOf(node->op());
if (load_rep.IsUnsigned()) {
switch (load_rep.representation()) {
@@ -1598,6 +1603,7 @@ void InstructionSelector::VisitUnalignedLoad(Node* node) {
case MachineRepresentation::kBit: // Fall through.
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -1651,6 +1657,7 @@ void InstructionSelector::VisitUnalignedStore(Node* node) {
case MachineRepresentation::kBit: // Fall through.
case MachineRepresentation::kCompressedPointer: // Fall through.
case MachineRepresentation::kCompressed: // Fall through.
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -1878,8 +1885,7 @@ void VisitWord64Compare(InstructionSelector* selector, Node* node,
void EmitWordCompareZero(InstructionSelector* selector, Node* value,
FlagsContinuation* cont) {
RiscvOperandGenerator g(selector);
- selector->EmitWithContinuation(kRiscvCmp, g.UseRegister(value),
- g.TempImmediate(0), cont);
+ selector->EmitWithContinuation(kRiscvCmpZero, g.UseRegister(value), cont);
}
void VisitAtomicLoad(InstructionSelector* selector, Node* node,
@@ -2654,7 +2660,7 @@ void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) {
V(I32x4AllTrue, kRiscvI32x4AllTrue) \
V(I16x8AllTrue, kRiscvI16x8AllTrue) \
V(I8x16AllTrue, kRiscvI8x16AllTrue) \
- V(I64x2AllTrue, kRiscvI64x2AllTrue) \
+ V(I64x2AllTrue, kRiscvI64x2AllTrue)
#define SIMD_SHIFT_OP_LIST(V) \
V(I64x2Shl) \
@@ -3015,6 +3021,12 @@ VISIT_EXT_MUL(I16x8, I8x16S)
VISIT_EXT_MUL(I16x8, I8x16U)
#undef VISIT_EXT_MUL
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ UNREACHABLE();
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
diff --git a/deps/v8/src/compiler/backend/s390/code-generator-s390.cc b/deps/v8/src/compiler/backend/s390/code-generator-s390.cc
index c5e16b3e49..a6c7dda9b4 100644
--- a/deps/v8/src/compiler/backend/s390/code-generator-s390.cc
+++ b/deps/v8/src/compiler/backend/s390/code-generator-s390.cc
@@ -206,9 +206,6 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
zone_(gen->zone()) {}
void Generate() final {
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
if (COMPRESS_POINTERS_BOOL) {
__ DecompressTaggedPointer(value_, value_);
}
@@ -222,10 +219,11 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
__ AddS64(scratch1_, object_, offset_);
}
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (must_save_lr_) {
// We need to save and restore r14 if the frame was elided.
__ Push(r14);
@@ -1207,7 +1205,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -1220,7 +1219,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -1374,6 +1374,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
DetermineStubCallMode(), &unwinding_info_writer_);
__ StoreTaggedField(value, MemOperand(object, offset));
}
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, scratch0,
MemoryChunk::kPointersFromHereAreInterestingMask, ne,
ool->entry());
@@ -1692,16 +1695,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
ASSEMBLE_UNARY_OP(D_DInstr(sqdbr), nullInstr, nullInstr);
break;
case kS390_FloorFloat:
- __ fiebra(ROUND_TOWARD_NEG_INF, i.OutputDoubleRegister(),
- i.InputDoubleRegister(0));
+ __ FloorF32(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
break;
case kS390_CeilFloat:
- __ fiebra(ROUND_TOWARD_POS_INF, i.OutputDoubleRegister(),
- i.InputDoubleRegister(0));
+ __ CeilF32(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
break;
case kS390_TruncateFloat:
- __ fiebra(ROUND_TOWARD_0, i.OutputDoubleRegister(),
- i.InputDoubleRegister(0));
+ __ TruncF32(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
break;
// Double operations
case kS390_ModDouble:
@@ -1797,16 +1797,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ lpdbr(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
break;
case kS390_FloorDouble:
- __ fidbra(ROUND_TOWARD_NEG_INF, i.OutputDoubleRegister(),
- i.InputDoubleRegister(0));
+ __ FloorF64(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
break;
case kS390_CeilDouble:
- __ fidbra(ROUND_TOWARD_POS_INF, i.OutputDoubleRegister(),
- i.InputDoubleRegister(0));
+ __ CeilF64(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
break;
case kS390_TruncateDouble:
- __ fidbra(ROUND_TOWARD_0, i.OutputDoubleRegister(),
- i.InputDoubleRegister(0));
+ __ TruncF64(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
break;
case kS390_RoundDouble:
__ fidbra(ROUND_TO_NEAREST_AWAY_FROM_0, i.OutputDoubleRegister(),
@@ -2992,12 +2989,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kS390_I32x4GeS: {
- __ vceq(kScratchDoubleReg, i.InputSimd128Register(0),
- i.InputSimd128Register(1), Condition(0), Condition(2));
- __ vch(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1), Condition(0), Condition(2));
- __ vo(i.OutputSimd128Register(), i.OutputSimd128Register(),
- kScratchDoubleReg, Condition(0), Condition(0), Condition(2));
+ __ vch(kScratchDoubleReg, i.InputSimd128Register(1),
+ i.InputSimd128Register(0), Condition(0), Condition(2));
+ __ vno(i.OutputSimd128Register(), kScratchDoubleReg, kScratchDoubleReg,
+ Condition(0), Condition(0), Condition(2));
break;
}
case kS390_I32x4GtU: {
@@ -3020,12 +3015,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kS390_I16x8GeS: {
- __ vceq(kScratchDoubleReg, i.InputSimd128Register(0),
- i.InputSimd128Register(1), Condition(0), Condition(1));
- __ vch(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1), Condition(0), Condition(1));
- __ vo(i.OutputSimd128Register(), i.OutputSimd128Register(),
- kScratchDoubleReg, Condition(0), Condition(0), Condition(1));
+ __ vch(kScratchDoubleReg, i.InputSimd128Register(1),
+ i.InputSimd128Register(0), Condition(0), Condition(1));
+ __ vno(i.OutputSimd128Register(), kScratchDoubleReg, kScratchDoubleReg,
+ Condition(0), Condition(0), Condition(1));
break;
}
case kS390_I16x8GtU: {
@@ -3048,12 +3041,10 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kS390_I8x16GeS: {
- __ vceq(kScratchDoubleReg, i.InputSimd128Register(0),
- i.InputSimd128Register(1), Condition(0), Condition(0));
- __ vch(i.OutputSimd128Register(), i.InputSimd128Register(0),
- i.InputSimd128Register(1), Condition(0), Condition(0));
- __ vo(i.OutputSimd128Register(), i.OutputSimd128Register(),
- kScratchDoubleReg, Condition(0), Condition(0), Condition(0));
+ __ vch(kScratchDoubleReg, i.InputSimd128Register(1),
+ i.InputSimd128Register(0), Condition(0), Condition(0));
+ __ vno(i.OutputSimd128Register(), kScratchDoubleReg, kScratchDoubleReg,
+ Condition(0), Condition(0), Condition(0));
break;
}
case kS390_I8x16GtU: {
@@ -3289,11 +3280,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kS390_S128Const: {
- for (int index = 0, j = 0; index < 2; index++, j = +2) {
- __ mov(index < 1 ? ip : r0, Operand(i.InputInt32(j)));
- __ iihf(index < 1 ? ip : r0, Operand(i.InputInt32(j + 1)));
- }
- __ vlvgp(i.OutputSimd128Register(), r0, ip);
+ uint64_t low = make_uint64(i.InputUint32(1), i.InputUint32(0));
+ uint64_t high = make_uint64(i.InputUint32(3), i.InputUint32(2));
+ __ mov(r0, Operand(low));
+ __ mov(ip, Operand(high));
+ __ vlvgp(i.OutputSimd128Register(), ip, r0);
break;
}
case kS390_S128Zero: {
@@ -3561,15 +3552,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
Simd128Register dst = i.OutputSimd128Register(),
src0 = i.InputSimd128Register(0),
src1 = i.InputSimd128Register(1);
- int32_t k8x16_indices[] = {i.InputInt32(2), i.InputInt32(3),
- i.InputInt32(4), i.InputInt32(5)};
- // create 2 * 8 byte inputs indicating new indices
- for (int i = 0, j = 0; i < 2; i++, j = +2) {
- __ mov(i < 1 ? ip : r0, Operand(k8x16_indices[j]));
- __ iihf(i < 1 ? ip : r0, Operand(k8x16_indices[j + 1]));
- }
- __ vlvgp(kScratchDoubleReg, r0, ip);
- __ vperm(dst, src0, src1, kScratchDoubleReg, Condition(0), Condition(0));
+ uint64_t low = make_uint64(i.InputUint32(3), i.InputUint32(2));
+ uint64_t high = make_uint64(i.InputUint32(5), i.InputUint32(4));
+ __ mov(r0, Operand(low));
+ __ mov(ip, Operand(high));
+ __ vlvgp(dst, ip, r0);
+ __ vperm(dst, src0, src1, dst, Condition(0), Condition(0));
break;
}
case kS390_I8x16Swizzle: {
@@ -3712,80 +3700,65 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
Condition(0), Condition(0), Condition(2));
break;
}
-#define ASSEMBLE_SIMD_I64X2_EXT_MUL(UNPACK_INSTR) \
- __ UNPACK_INSTR(kScratchDoubleReg, i.InputSimd128Register(0), Condition(0), \
- Condition(0), Condition(2)); \
- __ UNPACK_INSTR(i.OutputSimd128Register(), i.InputSimd128Register(1), \
- Condition(0), Condition(0), Condition(2)); \
- Register scratch_0 = r0; \
- Register scratch_1 = r1; \
- for (int lane = 0; lane < 2; lane++) { \
- __ vlgv(scratch_0, kScratchDoubleReg, MemOperand(r0, lane), Condition(3)); \
- __ vlgv(scratch_1, i.OutputSimd128Register(), MemOperand(r0, lane), \
- Condition(3)); \
- __ MulS64(scratch_0, scratch_1); \
- scratch_0 = r1; \
- scratch_1 = ip; \
- } \
- __ vlvgp(i.OutputSimd128Register(), r0, r1);
+#define EXT_MUL(mul_even, mul_odd, merge, mode) \
+ Simd128Register dst = i.OutputSimd128Register(), \
+ src0 = i.InputSimd128Register(0), \
+ src1 = i.InputSimd128Register(1); \
+ __ mul_even(dst, src0, src1, Condition(0), Condition(0), Condition(mode)); \
+ __ mul_odd(kScratchDoubleReg, src0, src1, Condition(0), Condition(0), \
+ Condition(mode)); \
+ __ merge(dst, dst, kScratchDoubleReg, Condition(0), Condition(0), \
+ Condition(mode + 1));
case kS390_I64x2ExtMulLowI32x4S: {
- ASSEMBLE_SIMD_I64X2_EXT_MUL(vupl)
+ EXT_MUL(vme, vmo, vmrl, 2)
break;
}
case kS390_I64x2ExtMulHighI32x4S: {
- ASSEMBLE_SIMD_I64X2_EXT_MUL(vuph)
+ EXT_MUL(vme, vmo, vmrh, 2)
break;
}
case kS390_I64x2ExtMulLowI32x4U: {
- ASSEMBLE_SIMD_I64X2_EXT_MUL(vupll)
+ EXT_MUL(vmle, vmlo, vmrl, 2)
break;
}
case kS390_I64x2ExtMulHighI32x4U: {
- ASSEMBLE_SIMD_I64X2_EXT_MUL(vuplh)
- break;
- }
-#undef ASSEMBLE_SIMD_I64X2_EXT_MUL
-#define ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(UNPACK_INSTR, MODE) \
- __ UNPACK_INSTR(kScratchDoubleReg, i.InputSimd128Register(0), Condition(0), \
- Condition(0), Condition(MODE)); \
- __ UNPACK_INSTR(i.OutputSimd128Register(), i.InputSimd128Register(1), \
- Condition(0), Condition(0), Condition(MODE)); \
- __ vml(i.OutputSimd128Register(), kScratchDoubleReg, \
- i.OutputSimd128Register(), Condition(0), Condition(0), \
- Condition(MODE + 1));
+ EXT_MUL(vmle, vmlo, vmrh, 2)
+ break;
+ }
case kS390_I32x4ExtMulLowI16x8S: {
- ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(vupl, 1)
+ EXT_MUL(vme, vmo, vmrl, 1)
break;
}
case kS390_I32x4ExtMulHighI16x8S: {
- ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(vuph, 1)
+ EXT_MUL(vme, vmo, vmrh, 1)
break;
}
case kS390_I32x4ExtMulLowI16x8U: {
- ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(vupll, 1)
+ EXT_MUL(vmle, vmlo, vmrl, 1)
break;
}
case kS390_I32x4ExtMulHighI16x8U: {
- ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(vuplh, 1)
+ EXT_MUL(vmle, vmlo, vmrh, 1)
break;
}
+
case kS390_I16x8ExtMulLowI8x16S: {
- ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(vupl, 0)
+ EXT_MUL(vme, vmo, vmrl, 0)
break;
}
case kS390_I16x8ExtMulHighI8x16S: {
- ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(vuph, 0)
+ EXT_MUL(vme, vmo, vmrh, 0)
break;
}
case kS390_I16x8ExtMulLowI8x16U: {
- ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(vupll, 0)
+ EXT_MUL(vmle, vmlo, vmrl, 0)
break;
}
case kS390_I16x8ExtMulHighI8x16U: {
- ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL(vuplh, 0)
+ EXT_MUL(vmle, vmlo, vmrh, 0)
break;
}
-#undef ASSEMBLE_SIMD_I32X4_I16X8_EXT_MUL
+#undef EXT_MUL
#define EXT_ADD_PAIRWISE(lane_size, mul_even, mul_odd) \
Simd128Register src = i.InputSimd128Register(0); \
Simd128Register dst = i.OutputSimd128Register(); \
@@ -3942,7 +3915,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
UNREACHABLE();
}
return kSuccess;
-} // NOLINT(readability/fn_size)
+}
// Assembles branches after an instruction.
void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) {
@@ -4204,7 +4177,7 @@ void CodeGenerator::AssembleConstructFrame() {
// frame is still on the stack. Optimized code uses OSR values directly from
// the unoptimized frame. Thus, all that needs to be done is to allocate the
// remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
required_slots -= osr_helper()->UnoptimizedFrameSlots();
ResetSpeculationPoison();
@@ -4309,7 +4282,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ CmpS64(g.ToRegister(additional_pop_count), Operand(0));
__ Assert(eq, AbortReason::kUnexpectedAdditionalPopValue);
}
diff --git a/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc b/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc
index f2375525bb..8be70adf54 100644
--- a/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc
+++ b/deps/v8/src/compiler/backend/s390/instruction-selector-s390.cc
@@ -141,7 +141,8 @@ class S390OperandGenerator final : public OperandGenerator {
bool CanBeMemoryOperand(InstructionCode opcode, Node* user, Node* input,
int effect_level) {
- if (input->opcode() != IrOpcode::kLoad ||
+ if ((input->opcode() != IrOpcode::kLoad &&
+ input->opcode() != IrOpcode::kLoadImmutable) ||
!selector()->CanCover(user, input)) {
return false;
}
@@ -320,6 +321,7 @@ ArchOpcode SelectLoadOpcode(Node* node) {
case MachineRepresentation::kSimd128:
opcode = kS390_LoadSimd128;
break;
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
default:
UNREACHABLE();
@@ -798,6 +800,7 @@ static void VisitGeneralStore(
value = value->InputAt(0);
}
break;
+ case MachineRepresentation::kMapWord: // Fall through.
case MachineRepresentation::kNone:
UNREACHABLE();
}
@@ -2849,6 +2852,12 @@ void InstructionSelector::VisitTruncateFloat32ToUint32(Node* node) {
Emit(opcode, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0)));
}
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ UNREACHABLE();
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
diff --git a/deps/v8/src/compiler/backend/x64/code-generator-x64.cc b/deps/v8/src/compiler/backend/x64/code-generator-x64.cc
index 814f14fb4a..11bba2f0f8 100644
--- a/deps/v8/src/compiler/backend/x64/code-generator-x64.cc
+++ b/deps/v8/src/compiler/backend/x64/code-generator-x64.cc
@@ -276,9 +276,6 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
}
void Generate() final {
- if (mode_ > RecordWriteMode::kValueIsPointer) {
- __ JumpIfSmi(value_, exit());
- }
if (COMPRESS_POINTERS_BOOL) {
__ DecompressTaggedPointer(value_, value_);
}
@@ -288,10 +285,11 @@ class OutOfLineRecordWrite final : public OutOfLineCode {
__ leaq(scratch1_, operand_);
RememberedSetAction const remembered_set_action =
- mode_ > RecordWriteMode::kValueIsMap ? EMIT_REMEMBERED_SET
- : OMIT_REMEMBERED_SET;
- SaveFPRegsMode const save_fp_mode =
- frame()->DidAllocateDoubleRegisters() ? kSaveFPRegs : kDontSaveFPRegs;
+ mode_ > RecordWriteMode::kValueIsMap ? RememberedSetAction::kEmit
+ : RememberedSetAction::kOmit;
+ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters()
+ ? SaveFPRegsMode::kSave
+ : SaveFPRegsMode::kIgnore;
if (mode_ == RecordWriteMode::kValueIsEphemeronKey) {
__ CallEphemeronKeyBarrier(object_, scratch1_, save_fp_mode);
@@ -1016,7 +1014,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchSaveCallerRegisters: {
fp_mode_ =
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode()));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// kReturnRegister0 should have been saved before entering the stub.
int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0);
DCHECK(IsAligned(bytes, kSystemPointerSize));
@@ -1029,7 +1028,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
case kArchRestoreCallerRegisters: {
DCHECK(fp_mode_ ==
static_cast<SaveFPRegsMode>(MiscField::decode(instr->opcode())));
- DCHECK(fp_mode_ == kDontSaveFPRegs || fp_mode_ == kSaveFPRegs);
+ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore ||
+ fp_mode_ == SaveFPRegsMode::kSave);
// Don't overwrite the returned value.
int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0);
frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize));
@@ -1190,6 +1190,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
scratch0, scratch1, mode,
DetermineStubCallMode());
__ StoreTaggedField(operand, value);
+ if (mode > RecordWriteMode::kValueIsPointer) {
+ __ JumpIfSmi(value, ool->exit());
+ }
__ CheckPageFlag(object, scratch0,
MemoryChunk::kPointersFromHereAreInterestingMask,
not_zero, ool->entry());
@@ -1478,7 +1481,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
// TODO(bmeurer): Use RIP relative 128-bit constants.
XMMRegister tmp = i.ToDoubleRegister(instr->TempAt(0));
__ Pcmpeqd(tmp, tmp);
- __ Psrlq(tmp, 33);
+ __ Psrlq(tmp, byte{33});
__ Andps(i.OutputDoubleRegister(), tmp);
break;
}
@@ -1486,7 +1489,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
// TODO(bmeurer): Use RIP relative 128-bit constants.
XMMRegister tmp = i.ToDoubleRegister(instr->TempAt(0));
__ Pcmpeqd(tmp, tmp);
- __ Psllq(tmp, 31);
+ __ Psllq(tmp, byte{31});
__ Xorps(i.OutputDoubleRegister(), tmp);
break;
}
@@ -1734,7 +1737,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ Cvttss2siq(i.OutputRegister(), i.InputOperand(0));
}
if (instr->OutputCount() > 1) {
- __ Set(i.OutputRegister(1), 1);
+ __ Move(i.OutputRegister(1), 1);
Label done;
Label fail;
__ Move(kScratchDoubleReg, static_cast<float>(INT64_MIN));
@@ -1752,7 +1755,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
// INT64_MIN, then the conversion fails.
__ j(no_overflow, &done, Label::kNear);
__ bind(&fail);
- __ Set(i.OutputRegister(1), 0);
+ __ Move(i.OutputRegister(1), 0);
__ bind(&done);
}
break;
@@ -1763,7 +1766,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ Cvttsd2siq(i.OutputRegister(0), i.InputOperand(0));
}
if (instr->OutputCount() > 1) {
- __ Set(i.OutputRegister(1), 1);
+ __ Move(i.OutputRegister(1), 1);
Label done;
Label fail;
__ Move(kScratchDoubleReg, static_cast<double>(INT64_MIN));
@@ -1781,31 +1784,31 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
// INT64_MIN, then the conversion fails.
__ j(no_overflow, &done, Label::kNear);
__ bind(&fail);
- __ Set(i.OutputRegister(1), 0);
+ __ Move(i.OutputRegister(1), 0);
__ bind(&done);
}
break;
case kSSEFloat32ToUint64: {
Label fail;
- if (instr->OutputCount() > 1) __ Set(i.OutputRegister(1), 0);
+ if (instr->OutputCount() > 1) __ Move(i.OutputRegister(1), 0);
if (instr->InputAt(0)->IsFPRegister()) {
__ Cvttss2uiq(i.OutputRegister(), i.InputDoubleRegister(0), &fail);
} else {
__ Cvttss2uiq(i.OutputRegister(), i.InputOperand(0), &fail);
}
- if (instr->OutputCount() > 1) __ Set(i.OutputRegister(1), 1);
+ if (instr->OutputCount() > 1) __ Move(i.OutputRegister(1), 1);
__ bind(&fail);
break;
}
case kSSEFloat64ToUint64: {
Label fail;
- if (instr->OutputCount() > 1) __ Set(i.OutputRegister(1), 0);
+ if (instr->OutputCount() > 1) __ Move(i.OutputRegister(1), 0);
if (instr->InputAt(0)->IsFPRegister()) {
__ Cvttsd2uiq(i.OutputRegister(), i.InputDoubleRegister(0), &fail);
} else {
__ Cvttsd2uiq(i.OutputRegister(), i.InputOperand(0), &fail);
}
- if (instr->OutputCount() > 1) __ Set(i.OutputRegister(1), 1);
+ if (instr->OutputCount() > 1) __ Move(i.OutputRegister(1), 1);
__ bind(&fail);
break;
}
@@ -2390,21 +2393,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kX64F64x2ExtractLane: {
- DoubleRegister dst = i.OutputDoubleRegister();
- XMMRegister src = i.InputSimd128Register(0);
- uint8_t lane = i.InputUint8(1);
- if (lane == 0) {
- __ Move(dst, src);
- } else {
- DCHECK_EQ(1, lane);
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope avx_scope(tasm(), AVX);
- // Pass src as operand to avoid false-dependency on dst.
- __ vmovhlps(dst, src, src);
- } else {
- __ movhlps(dst, src);
- }
- }
+ __ F64x2ExtractLane(i.OutputDoubleRegister(), i.InputDoubleRegister(0),
+ i.InputUint8(1));
+ break;
+ }
+ case kX64F64x2ReplaceLane: {
+ __ F64x2ReplaceLane(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ i.InputDoubleRegister(2), i.InputInt8(1));
break;
}
case kX64F64x2Sqrt: {
@@ -2428,42 +2423,17 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kX64F64x2Min: {
- XMMRegister src1 = i.InputSimd128Register(1),
- dst = i.OutputSimd128Register();
- DCHECK_EQ(dst, i.InputSimd128Register(0));
- // The minpd instruction doesn't propagate NaNs and +0's in its first
- // operand. Perform minpd in both orders, merge the resuls, and adjust.
- __ Movapd(kScratchDoubleReg, src1);
- __ Minpd(kScratchDoubleReg, dst);
- __ Minpd(dst, src1);
- // propagate -0's and NaNs, which may be non-canonical.
- __ Orpd(kScratchDoubleReg, dst);
- // Canonicalize NaNs by quieting and clearing the payload.
- __ Cmppd(dst, kScratchDoubleReg, int8_t{3});
- __ Orpd(kScratchDoubleReg, dst);
- __ Psrlq(dst, 13);
- __ Andnpd(dst, kScratchDoubleReg);
+ // Avoids a move in no-AVX case if dst = src0.
+ DCHECK_EQ(i.OutputSimd128Register(), i.InputSimd128Register(0));
+ __ F64x2Min(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ i.InputSimd128Register(1), kScratchDoubleReg);
break;
}
case kX64F64x2Max: {
- XMMRegister src1 = i.InputSimd128Register(1),
- dst = i.OutputSimd128Register();
- DCHECK_EQ(dst, i.InputSimd128Register(0));
- // The maxpd instruction doesn't propagate NaNs and +0's in its first
- // operand. Perform maxpd in both orders, merge the resuls, and adjust.
- __ Movapd(kScratchDoubleReg, src1);
- __ Maxpd(kScratchDoubleReg, dst);
- __ Maxpd(dst, src1);
- // Find discrepancies.
- __ Xorpd(dst, kScratchDoubleReg);
- // Propagate NaNs, which may be non-canonical.
- __ Orpd(kScratchDoubleReg, dst);
- // Propagate sign discrepancy and (subtle) quiet NaNs.
- __ Subpd(kScratchDoubleReg, dst);
- // Canonicalize NaNs by clearing the payload. Sign is non-deterministic.
- __ Cmppd(dst, kScratchDoubleReg, int8_t{3});
- __ Psrlq(dst, 13);
- __ Andnpd(dst, kScratchDoubleReg);
+ // Avoids a move in no-AVX case if dst = src0.
+ DCHECK_EQ(i.OutputSimd128Register(), i.InputSimd128Register(0));
+ __ F64x2Max(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ i.InputSimd128Register(1), kScratchDoubleReg);
break;
}
case kX64F64x2Eq: {
@@ -2534,43 +2504,12 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kX64F32x4Splat: {
- XMMRegister dst = i.OutputSimd128Register();
- XMMRegister src = i.InputDoubleRegister(0);
- if (CpuFeatures::IsSupported(AVX2)) {
- CpuFeatureScope avx2_scope(tasm(), AVX2);
- __ vbroadcastss(dst, src);
- } else if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope avx_scope(tasm(), AVX);
- __ vshufps(dst, src, src, 0);
- } else {
- if (dst == src) {
- // 1 byte shorter than pshufd.
- __ shufps(dst, src, 0);
- } else {
- __ pshufd(dst, src, 0);
- }
- }
+ __ F32x4Splat(i.OutputSimd128Register(), i.InputDoubleRegister(0));
break;
}
case kX64F32x4ExtractLane: {
- XMMRegister dst = i.OutputDoubleRegister();
- XMMRegister src = i.InputSimd128Register(0);
- uint8_t lane = i.InputUint8(1);
- DCHECK_LT(lane, 4);
- // These instructions are shorter than insertps, but will leave junk in
- // the top lanes of dst.
- if (lane == 0) {
- __ Move(dst, src);
- } else if (lane == 1) {
- __ Movshdup(dst, src);
- } else if (lane == 2 && dst == src) {
- // Check dst == src to avoid false dependency on dst.
- __ Movhlps(dst, src);
- } else if (dst == src) {
- __ Shufps(dst, src, src, lane);
- } else {
- __ Pshufd(dst, src, lane);
- }
+ __ F32x4ExtractLane(i.OutputFloatRegister(), i.InputSimd128Register(0),
+ i.InputUint8(1));
break;
}
case kX64F32x4ReplaceLane: {
@@ -2671,7 +2610,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
// propagate -0's and NaNs, which may be non-canonical.
__ Orps(kScratchDoubleReg, dst);
// Canonicalize NaNs by quieting and clearing the payload.
- __ Cmpps(dst, kScratchDoubleReg, int8_t{3});
+ __ Cmpunordps(dst, kScratchDoubleReg);
__ Orps(kScratchDoubleReg, dst);
__ Psrld(dst, byte{10});
__ Andnps(dst, kScratchDoubleReg);
@@ -2693,7 +2632,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
// Propagate sign discrepancy and (subtle) quiet NaNs.
__ Subps(kScratchDoubleReg, dst);
// Canonicalize NaNs by clearing the payload. Sign is non-deterministic.
- __ Cmpps(dst, kScratchDoubleReg, int8_t{3});
+ __ Cmpunordps(dst, kScratchDoubleReg);
__ Psrld(dst, byte{10});
__ Andnps(dst, kScratchDoubleReg);
break;
@@ -2786,14 +2725,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kX64I64x2Neg: {
- XMMRegister dst = i.OutputSimd128Register();
- XMMRegister src = i.InputSimd128Register(0);
- if (dst == src) {
- __ Movdqa(kScratchDoubleReg, src);
- src = kScratchDoubleReg;
- }
- __ Pxor(dst, dst);
- __ Psubq(dst, src);
+ __ I64x2Neg(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ kScratchDoubleReg);
break;
}
case kX64I64x2BitMask: {
@@ -2843,15 +2776,15 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
__ Movdqa(tmp2, right);
// Multiply high dword of each qword of left with right.
- __ Psrlq(tmp1, 32);
+ __ Psrlq(tmp1, byte{32});
__ Pmuludq(tmp1, right);
// Multiply high dword of each qword of right with left.
- __ Psrlq(tmp2, 32);
+ __ Psrlq(tmp2, byte{32});
__ Pmuludq(tmp2, left);
__ Paddq(tmp2, tmp1);
- __ Psllq(tmp2, 32);
+ __ Psllq(tmp2, byte{32});
__ Pmuludq(left, right);
__ Paddq(left, tmp2); // left == dst
@@ -3675,15 +3608,8 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
break;
}
case kX64S128Not: {
- XMMRegister dst = i.OutputSimd128Register();
- XMMRegister src = i.InputSimd128Register(0);
- if (dst == src) {
- __ Pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
- __ Pxor(dst, kScratchDoubleReg);
- } else {
- __ Pcmpeqd(dst, dst);
- __ Pxor(dst, src);
- }
+ __ S128Not(i.OutputSimd128Register(), i.InputSimd128Register(0),
+ kScratchDoubleReg);
break;
}
case kX64S128Select: {
@@ -4360,7 +4286,7 @@ void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr,
__ decl(rax);
__ j(not_zero, &nodeopt, Label::kNear);
- __ Set(rax, FLAG_deopt_every_n_times);
+ __ Move(rax, FLAG_deopt_every_n_times);
__ store_rax(counter);
__ popq(rax);
__ popfq();
@@ -4451,7 +4377,43 @@ void CodeGenerator::AssembleArchTableSwitch(Instruction* instr) {
void CodeGenerator::AssembleArchSelect(Instruction* instr,
FlagsCondition condition) {
- UNIMPLEMENTED();
+ X64OperandConverter i(this, instr);
+ MachineRepresentation rep =
+ LocationOperand::cast(instr->OutputAt(0))->representation();
+ Condition cc = FlagsConditionToCondition(condition);
+ DCHECK_EQ(i.OutputRegister(), i.InputRegister(instr->InputCount() - 2));
+ size_t last_input = instr->InputCount() - 1;
+ // kUnorderedNotEqual can be implemented more efficiently than
+ // kUnorderedEqual. As the OR of two flags, it can be done with just two
+ // cmovs. If the condition was originally a kUnorderedEqual, expect the
+ // instruction selector to have inverted it and swapped the input.
+ DCHECK_NE(condition, kUnorderedEqual);
+ if (rep == MachineRepresentation::kWord32) {
+ if (HasRegisterInput(instr, last_input)) {
+ __ cmovl(cc, i.OutputRegister(), i.InputRegister(last_input));
+ if (condition == kUnorderedNotEqual) {
+ __ cmovl(parity_even, i.OutputRegister(), i.InputRegister(last_input));
+ }
+ } else {
+ __ cmovl(cc, i.OutputRegister(), i.InputOperand(last_input));
+ if (condition == kUnorderedNotEqual) {
+ __ cmovl(parity_even, i.OutputRegister(), i.InputOperand(last_input));
+ }
+ }
+ } else {
+ DCHECK_EQ(rep, MachineRepresentation::kWord64);
+ if (HasRegisterInput(instr, last_input)) {
+ __ cmovq(cc, i.OutputRegister(), i.InputRegister(last_input));
+ if (condition == kUnorderedNotEqual) {
+ __ cmovq(parity_even, i.OutputRegister(), i.InputRegister(last_input));
+ }
+ } else {
+ __ cmovq(cc, i.OutputRegister(), i.InputOperand(last_input));
+ if (condition == kUnorderedNotEqual) {
+ __ cmovq(parity_even, i.OutputRegister(), i.InputOperand(last_input));
+ }
+ }
+ }
}
namespace {
@@ -4464,13 +4426,11 @@ void CodeGenerator::FinishFrame(Frame* frame) {
CallDescriptor* call_descriptor = linkage()->GetIncomingDescriptor();
const RegList saves_fp = call_descriptor->CalleeSavedFPRegisters();
- if (saves_fp != 0) {
+ if (saves_fp != 0) { // Save callee-saved XMM registers.
frame->AlignSavedCalleeRegisterSlots();
- if (saves_fp != 0) { // Save callee-saved XMM registers.
- const uint32_t saves_fp_count = base::bits::CountPopulation(saves_fp);
- frame->AllocateSavedCalleeRegisterSlots(
- saves_fp_count * (kQuadWordSize / kSystemPointerSize));
- }
+ const uint32_t saves_fp_count = base::bits::CountPopulation(saves_fp);
+ frame->AllocateSavedCalleeRegisterSlots(
+ saves_fp_count * (kQuadWordSize / kSystemPointerSize));
}
const RegList saves = call_descriptor->CalleeSavedRegisters();
if (saves != 0) { // Save callee-saved registers.
@@ -4540,7 +4500,7 @@ void CodeGenerator::AssembleConstructFrame() {
// frame is still on the stack. Optimized code uses OSR values directly from
// the unoptimized frame. Thus, all that needs to be done is to allocate the
// remaining stack slots.
- if (FLAG_code_comments) __ RecordComment("-- OSR entrypoint --");
+ __ RecordComment("-- OSR entrypoint --");
osr_pc_offset_ = __ pc_offset();
required_slots -= static_cast<int>(osr_helper()->UnoptimizedFrameSlots());
ResetSpeculationPoison();
@@ -4664,7 +4624,7 @@ void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) {
if (parameter_slots != 0) {
if (additional_pop_count->IsImmediate()) {
DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0);
- } else if (__ emit_debug_code()) {
+ } else if (FLAG_debug_code) {
__ cmpq(g.ToRegister(additional_pop_count), Immediate(0));
__ Assert(equal, AbortReason::kUnexpectedAdditionalPopValue);
}
@@ -4787,7 +4747,7 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
if (RelocInfo::IsWasmReference(src.rmode())) {
__ movq(dst, Immediate64(src.ToInt64(), src.rmode()));
} else {
- __ Set(dst, src.ToInt64());
+ __ Move(dst, src.ToInt64());
}
break;
case Constant::kFloat32:
@@ -4837,7 +4797,7 @@ void CodeGenerator::AssembleMove(InstructionOperand* source,
__ movq(dst, Immediate(src.ToInt32()));
return;
case Constant::kInt64:
- __ Set(dst, src.ToInt64());
+ __ Move(dst, src.ToInt64());
return;
default:
break;
diff --git a/deps/v8/src/compiler/backend/x64/instruction-codes-x64.h b/deps/v8/src/compiler/backend/x64/instruction-codes-x64.h
index 2ad717c0a0..eba23dcfa9 100644
--- a/deps/v8/src/compiler/backend/x64/instruction-codes-x64.h
+++ b/deps/v8/src/compiler/backend/x64/instruction-codes-x64.h
@@ -156,6 +156,7 @@ namespace compiler {
V(X64Peek) \
V(X64F64x2Splat) \
V(X64F64x2ExtractLane) \
+ V(X64F64x2ReplaceLane) \
V(X64F64x2Abs) \
V(X64F64x2Neg) \
V(X64F64x2Sqrt) \
diff --git a/deps/v8/src/compiler/backend/x64/instruction-scheduler-x64.cc b/deps/v8/src/compiler/backend/x64/instruction-scheduler-x64.cc
index dc323d4cc7..4fada93a31 100644
--- a/deps/v8/src/compiler/backend/x64/instruction-scheduler-x64.cc
+++ b/deps/v8/src/compiler/backend/x64/instruction-scheduler-x64.cc
@@ -132,6 +132,7 @@ int InstructionScheduler::GetTargetInstructionFlags(
case kX64Pinsrq:
case kX64F64x2Splat:
case kX64F64x2ExtractLane:
+ case kX64F64x2ReplaceLane:
case kX64F64x2Abs:
case kX64F64x2Neg:
case kX64F64x2Sqrt:
diff --git a/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc b/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc
index 23bbed3613..40eddf3131 100644
--- a/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc
+++ b/deps/v8/src/compiler/backend/x64/instruction-selector-x64.cc
@@ -66,7 +66,8 @@ class X64OperandGenerator final : public OperandGenerator {
bool CanBeMemoryOperand(InstructionCode opcode, Node* node, Node* input,
int effect_level) {
- if (input->opcode() != IrOpcode::kLoad ||
+ if ((input->opcode() != IrOpcode::kLoad &&
+ input->opcode() != IrOpcode::kLoadImmutable) ||
!selector()->CanCover(node, input)) {
return false;
}
@@ -298,6 +299,7 @@ ArchOpcode GetLoadOpcode(LoadRepresentation load_rep) {
opcode = kX64Movdqu;
break;
case MachineRepresentation::kNone:
+ case MachineRepresentation::kMapWord:
UNREACHABLE();
}
return opcode;
@@ -332,6 +334,7 @@ ArchOpcode GetStoreOpcode(StoreRepresentation store_rep) {
case MachineRepresentation::kSimd128: // Fall through.
return kX64Movdqu;
case MachineRepresentation::kNone:
+ case MachineRepresentation::kMapWord:
UNREACHABLE();
}
UNREACHABLE();
@@ -465,6 +468,7 @@ void InstructionSelector::VisitLoad(Node* node, Node* value,
void InstructionSelector::VisitLoad(Node* node) {
LoadRepresentation load_rep = LoadRepresentationOf(node->op());
+ DCHECK(!load_rep.IsMapWord());
VisitLoad(node, node, GetLoadOpcode(load_rep));
}
@@ -479,6 +483,7 @@ void InstructionSelector::VisitStore(Node* node) {
Node* value = node->InputAt(2);
StoreRepresentation store_rep = StoreRepresentationOf(node->op());
+ DCHECK_NE(store_rep.representation(), MachineRepresentation::kMapWord);
WriteBarrierKind write_barrier_kind = store_rep.write_barrier_kind();
if (FLAG_enable_unconditional_write_barriers &&
@@ -704,7 +709,8 @@ void InstructionSelector::VisitStackPointerGreaterThan(
X64OperandGenerator g(this);
Node* const value = node->InputAt(0);
if (g.CanBeMemoryOperand(kX64Cmp, node, value, effect_level)) {
- DCHECK_EQ(IrOpcode::kLoad, value->opcode());
+ DCHECK(IrOpcode::kLoad == value->opcode() ||
+ IrOpcode::kLoadImmutable == value->opcode());
// GetEffectiveAddressMemoryOperand can create at most 3 inputs.
static constexpr int kMaxInputCount = 3;
@@ -726,7 +732,9 @@ namespace {
bool TryMergeTruncateInt64ToInt32IntoLoad(InstructionSelector* selector,
Node* node, Node* load) {
- if (load->opcode() == IrOpcode::kLoad && selector->CanCover(node, load)) {
+ if ((load->opcode() == IrOpcode::kLoad ||
+ load->opcode() == IrOpcode::kLoadImmutable) &&
+ selector->CanCover(node, load)) {
LoadRepresentation load_rep = LoadRepresentationOf(load->op());
MachineRepresentation rep = load_rep.representation();
InstructionCode opcode;
@@ -1363,7 +1371,9 @@ void InstructionSelector::VisitChangeInt32ToInt64(Node* node) {
X64OperandGenerator g(this);
Node* const value = node->InputAt(0);
- if (value->opcode() == IrOpcode::kLoad && CanCover(node, value)) {
+ if ((value->opcode() == IrOpcode::kLoad ||
+ value->opcode() == IrOpcode::kLoadImmutable) &&
+ CanCover(node, value)) {
LoadRepresentation load_rep = LoadRepresentationOf(value->op());
MachineRepresentation rep = load_rep.representation();
InstructionCode opcode;
@@ -1870,14 +1880,25 @@ void VisitCompareWithMemoryOperand(InstructionSelector* selector,
InstructionCode opcode, Node* left,
InstructionOperand right,
FlagsContinuation* cont) {
- DCHECK_EQ(IrOpcode::kLoad, left->opcode());
+ DCHECK(IrOpcode::kLoad == left->opcode() ||
+ IrOpcode::kLoadImmutable == left->opcode());
X64OperandGenerator g(selector);
size_t input_count = 0;
- InstructionOperand inputs[4];
+ InstructionOperand inputs[6];
AddressingMode addressing_mode =
g.GetEffectiveAddressMemoryOperand(left, inputs, &input_count);
opcode |= AddressingModeField::encode(addressing_mode);
inputs[input_count++] = right;
+ if (cont->IsSelect()) {
+ if (opcode == kUnorderedEqual) {
+ cont->Negate();
+ inputs[input_count++] = g.UseRegister(cont->true_value());
+ inputs[input_count++] = g.Use(cont->false_value());
+ } else {
+ inputs[input_count++] = g.UseRegister(cont->false_value());
+ inputs[input_count++] = g.Use(cont->true_value());
+ }
+ }
selector->EmitWithContinuation(opcode, 0, nullptr, input_count, inputs, cont);
}
@@ -1886,6 +1907,20 @@ void VisitCompareWithMemoryOperand(InstructionSelector* selector,
void VisitCompare(InstructionSelector* selector, InstructionCode opcode,
InstructionOperand left, InstructionOperand right,
FlagsContinuation* cont) {
+ if (cont->IsSelect()) {
+ X64OperandGenerator g(selector);
+ InstructionOperand inputs[4] = {left, right};
+ if (cont->condition() == kUnorderedEqual) {
+ cont->Negate();
+ inputs[2] = g.UseRegister(cont->true_value());
+ inputs[3] = g.Use(cont->false_value());
+ } else {
+ inputs[2] = g.UseRegister(cont->false_value());
+ inputs[3] = g.Use(cont->true_value());
+ }
+ selector->EmitWithContinuation(opcode, 0, nullptr, 4, inputs, cont);
+ return;
+ }
selector->EmitWithContinuation(opcode, left, right, cont);
}
@@ -1901,7 +1936,8 @@ void VisitCompare(InstructionSelector* selector, InstructionCode opcode,
}
MachineType MachineTypeForNarrow(Node* node, Node* hint_node) {
- if (hint_node->opcode() == IrOpcode::kLoad) {
+ if (hint_node->opcode() == IrOpcode::kLoad ||
+ hint_node->opcode() == IrOpcode::kLoadImmutable) {
MachineType hint = LoadRepresentationOf(hint_node->op());
if (node->opcode() == IrOpcode::kInt32Constant ||
node->opcode() == IrOpcode::kInt64Constant) {
@@ -1935,8 +1971,10 @@ MachineType MachineTypeForNarrow(Node* node, Node* hint_node) {
}
}
}
- return node->opcode() == IrOpcode::kLoad ? LoadRepresentationOf(node->op())
- : MachineType::None();
+ return node->opcode() == IrOpcode::kLoad ||
+ node->opcode() == IrOpcode::kLoadImmutable
+ ? LoadRepresentationOf(node->op())
+ : MachineType::None();
}
// Tries to match the size of the given opcode to that of the operands, if
@@ -2151,7 +2189,8 @@ void VisitCompareZero(InstructionSelector* selector, Node* user, Node* node,
}
}
int effect_level = selector->GetEffectLevel(node, cont);
- if (node->opcode() == IrOpcode::kLoad) {
+ if (node->opcode() == IrOpcode::kLoad ||
+ node->opcode() == IrOpcode::kLoadImmutable) {
switch (LoadRepresentationOf(node->op()).representation()) {
case MachineRepresentation::kWord8:
if (opcode == kX64Cmp32) {
@@ -2920,7 +2959,6 @@ VISIT_ATOMIC_BINOP(Xor)
V(F32x4RecipApprox) \
V(F32x4RecipSqrtApprox) \
V(F32x4DemoteF64x2Zero) \
- V(I64x2Neg) \
V(I64x2BitMask) \
V(I64x2SConvertI32x4Low) \
V(I64x2SConvertI32x4High) \
@@ -3045,6 +3083,16 @@ void InstructionSelector::VisitF32x4ReplaceLane(Node* node) {
g.Use(node->InputAt(1)));
}
+void InstructionSelector::VisitF64x2ReplaceLane(Node* node) {
+ X64OperandGenerator g(this);
+ int32_t lane = OpParameter<int32_t>(node->op());
+ // When no-AVX, define dst == src to save a move.
+ InstructionOperand dst =
+ IsSupported(AVX) ? g.DefineAsRegister(node) : g.DefineSameAsFirst(node);
+ Emit(kX64F64x2ReplaceLane, dst, g.UseRegister(node->InputAt(0)),
+ g.UseImmediate(lane), g.UseRegister(node->InputAt(1)));
+}
+
#define VISIT_SIMD_REPLACE_LANE(TYPE, OPCODE) \
void InstructionSelector::Visit##TYPE##ReplaceLane(Node* node) { \
X64OperandGenerator g(this); \
@@ -3054,7 +3102,6 @@ void InstructionSelector::VisitF32x4ReplaceLane(Node* node) {
}
#define SIMD_TYPES_FOR_REPLACE_LANE(V) \
- V(F64x2, kX64Pinsrq) \
V(I64x2, kX64Pinsrq) \
V(I32x4, kX64Pinsrd) \
V(I16x8, kX64Pinsrw) \
@@ -3186,6 +3233,15 @@ VISIT_SIMD_QFMOP(F32x4Qfma)
VISIT_SIMD_QFMOP(F32x4Qfms)
#undef VISIT_SIMD_QFMOP
+void InstructionSelector::VisitI64x2Neg(Node* node) {
+ X64OperandGenerator g(this);
+ // If AVX unsupported, make sure dst != src to avoid a move.
+ InstructionOperand operand0 = IsSupported(AVX)
+ ? g.UseRegister(node->InputAt(0))
+ : g.UseUnique(node->InputAt(0));
+ Emit(kX64I64x2Neg, g.DefineAsRegister(node), operand0);
+}
+
void InstructionSelector::VisitI64x2ShrS(Node* node) {
X64OperandGenerator g(this);
InstructionOperand temps[] = {g.TempRegister()};
@@ -3707,13 +3763,22 @@ void InstructionSelector::VisitI64x2Abs(Node* node) {
}
}
+void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g,
+ int first_input_index,
+ Node* node) {
+ continuation_outputs_.push_back(
+ g->DefineSameAsInput(node, first_input_index));
+}
+
// static
MachineOperatorBuilder::Flags
InstructionSelector::SupportedMachineOperatorFlags() {
MachineOperatorBuilder::Flags flags =
MachineOperatorBuilder::kWord32ShiftIsSafe |
MachineOperatorBuilder::kWord32Ctz | MachineOperatorBuilder::kWord64Ctz |
- MachineOperatorBuilder::kWord32Rol | MachineOperatorBuilder::kWord64Rol;
+ MachineOperatorBuilder::kWord32Rol | MachineOperatorBuilder::kWord64Rol |
+ MachineOperatorBuilder::kWord32Select |
+ MachineOperatorBuilder::kWord64Select;
if (CpuFeatures::IsSupported(POPCNT)) {
flags |= MachineOperatorBuilder::kWord32Popcnt |
MachineOperatorBuilder::kWord64Popcnt;
diff --git a/deps/v8/src/compiler/bytecode-graph-builder.cc b/deps/v8/src/compiler/bytecode-graph-builder.cc
index 54996bb475..faae9c1eab 100644
--- a/deps/v8/src/compiler/bytecode-graph-builder.cc
+++ b/deps/v8/src/compiler/bytecode-graph-builder.cc
@@ -27,7 +27,7 @@
#include "src/objects/literal-objects-inl.h"
#include "src/objects/objects-inl.h"
#include "src/objects/smi.h"
-#include "src/objects/template-objects.h"
+#include "src/objects/template-objects-inl.h"
namespace v8 {
namespace internal {
@@ -72,7 +72,8 @@ class BytecodeGraphBuilder {
CodeKind code_kind() const { return code_kind_; }
bool native_context_independent() const {
- return CodeKindIsNativeContextIndependentJSFunction(code_kind_);
+ // TODO(jgruber,v8:8888): Remove dependent code.
+ return false;
}
bool is_turboprop() const { return code_kind_ == CodeKind::TURBOPROP; }
bool generate_full_feedback_collection() const {
@@ -346,6 +347,10 @@ class BytecodeGraphBuilder {
// feedback. Returns kDisallowSpeculation if feedback is insufficient.
SpeculationMode GetSpeculationMode(int slot_id) const;
+ // Helper function to determine the call feedback relation from the recorded
+ // type feedback. Returns kUnrelated if feedback is insufficient.
+ CallFeedbackRelation ComputeCallFeedbackRelation(int slot_id) const;
+
// Helpers for building the implicit FunctionEntry and IterationBody
// StackChecks.
void BuildFunctionEntryStackCheck();
@@ -412,10 +417,15 @@ class BytecodeGraphBuilder {
int context_register_; // Index of register holding handler context.
};
- Handle<Object> GetConstantForIndexOperand(int operand_index) const {
- return broker_->CanonicalPersistentHandle(
- bytecode_iterator().GetConstantForIndexOperand(operand_index,
- local_isolate_));
+ template <class T = Object>
+ typename ref_traits<T>::ref_type MakeRefForConstantForIndexOperand(
+ int operand_index) {
+ // The BytecodeArray itself was fetched by using a barrier so all reads
+ // from the constant pool are safe.
+ return MakeRefAssumeMemoryFence(
+ broker(), broker()->CanonicalPersistentHandle(Handle<T>::cast(
+ bytecode_iterator().GetConstantForIndexOperand(
+ operand_index, local_isolate_))));
}
Graph* graph() const { return jsgraph_->graph(); }
@@ -428,9 +438,7 @@ class BytecodeGraphBuilder {
return jsgraph_->simplified();
}
Zone* local_zone() const { return local_zone_; }
- BytecodeArrayRef bytecode_array() const {
- return shared_info().GetBytecodeArray();
- }
+ BytecodeArrayRef bytecode_array() const { return bytecode_array_; }
FeedbackVectorRef const& feedback_vector() const { return feedback_vector_; }
const JSTypeHintLowering& type_hint_lowering() const {
return type_hint_lowering_;
@@ -480,6 +488,7 @@ class BytecodeGraphBuilder {
// The native context for which we optimize.
NativeContextRef const native_context_;
SharedFunctionInfoRef const shared_info_;
+ BytecodeArrayRef const bytecode_array_;
FeedbackCellRef const feedback_cell_;
FeedbackVectorRef const feedback_vector_;
CallFrequency const invocation_frequency_;
@@ -1065,6 +1074,7 @@ BytecodeGraphBuilder::BytecodeGraphBuilder(
jsgraph_(jsgraph),
native_context_(native_context),
shared_info_(shared_info),
+ bytecode_array_(shared_info.GetBytecodeArray()),
feedback_cell_(feedback_cell),
feedback_vector_(feedback_cell.value()->AsFeedbackVector()),
invocation_frequency_(invocation_frequency),
@@ -1569,7 +1579,7 @@ void BytecodeGraphBuilder::VisitBytecodes() {
}
// TODO(leszeks): Increment usage counter on BG thread.
- if (!FLAG_concurrent_inlining && has_one_shot_bytecode) {
+ if (!broker()->is_concurrent_inlining() && has_one_shot_bytecode) {
// (For concurrent inlining this is done in the serializer instead.)
isolate()->CountUsage(
v8::Isolate::UseCounterFeature::kOptimizedFunctionWithOneShotBytecode);
@@ -1589,8 +1599,7 @@ void BytecodeGraphBuilder::VisitLdaSmi() {
}
void BytecodeGraphBuilder::VisitLdaConstant() {
- ObjectRef object(broker(), GetConstantForIndexOperand(0),
- ObjectRef::BackgroundSerialization::kAllowed);
+ ObjectRef object = MakeRefForConstantForIndexOperand(0);
Node* node = jsgraph()->Constant(object);
environment()->BindAccumulator(node);
}
@@ -1660,25 +1669,24 @@ Node* BytecodeGraphBuilder::BuildLoadGlobal(NameRef name,
void BytecodeGraphBuilder::VisitLdaGlobal() {
PrepareEagerCheckpoint();
- NameRef name(broker(), GetConstantForIndexOperand(0));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(0);
uint32_t feedback_slot_index = bytecode_iterator().GetIndexOperand(1);
Node* node =
- BuildLoadGlobal(name, feedback_slot_index, TypeofMode::NOT_INSIDE_TYPEOF);
+ BuildLoadGlobal(name, feedback_slot_index, TypeofMode::kNotInside);
environment()->BindAccumulator(node, Environment::kAttachFrameState);
}
void BytecodeGraphBuilder::VisitLdaGlobalInsideTypeof() {
PrepareEagerCheckpoint();
- NameRef name(broker(), GetConstantForIndexOperand(0));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(0);
uint32_t feedback_slot_index = bytecode_iterator().GetIndexOperand(1);
- Node* node =
- BuildLoadGlobal(name, feedback_slot_index, TypeofMode::INSIDE_TYPEOF);
+ Node* node = BuildLoadGlobal(name, feedback_slot_index, TypeofMode::kInside);
environment()->BindAccumulator(node, Environment::kAttachFrameState);
}
void BytecodeGraphBuilder::VisitStaGlobal() {
PrepareEagerCheckpoint();
- NameRef name(broker(), GetConstantForIndexOperand(0));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(0);
FeedbackSource feedback =
CreateFeedbackSource(bytecode_iterator().GetIndexOperand(1));
Node* value = environment()->LookupAccumulator();
@@ -1819,10 +1827,9 @@ void BytecodeGraphBuilder::VisitStaCurrentContextSlot() {
void BytecodeGraphBuilder::BuildLdaLookupSlot(TypeofMode typeof_mode) {
PrepareEagerCheckpoint();
- Node* name =
- jsgraph()->Constant(ObjectRef(broker(), GetConstantForIndexOperand(0)));
+ Node* name = jsgraph()->Constant(MakeRefForConstantForIndexOperand(0));
const Operator* op =
- javascript()->CallRuntime(typeof_mode == TypeofMode::NOT_INSIDE_TYPEOF
+ javascript()->CallRuntime(typeof_mode == TypeofMode::kNotInside
? Runtime::kLoadLookupSlot
: Runtime::kLoadLookupSlotInsideTypeof);
Node* value = NewNode(op, name);
@@ -1830,11 +1837,11 @@ void BytecodeGraphBuilder::BuildLdaLookupSlot(TypeofMode typeof_mode) {
}
void BytecodeGraphBuilder::VisitLdaLookupSlot() {
- BuildLdaLookupSlot(TypeofMode::NOT_INSIDE_TYPEOF);
+ BuildLdaLookupSlot(TypeofMode::kNotInside);
}
void BytecodeGraphBuilder::VisitLdaLookupSlotInsideTypeof() {
- BuildLdaLookupSlot(TypeofMode::INSIDE_TYPEOF);
+ BuildLdaLookupSlot(TypeofMode::kInside);
}
BytecodeGraphBuilder::Environment*
@@ -1870,13 +1877,13 @@ base::Optional<ScopeInfoRef> BytecodeGraphBuilder::TryGetScopeInfo() {
Node* context = environment()->Context();
switch (context->opcode()) {
case IrOpcode::kJSCreateFunctionContext:
- return ScopeInfoRef(
+ return MakeRef(
broker(),
CreateFunctionContextParametersOf(context->op()).scope_info());
case IrOpcode::kJSCreateBlockContext:
case IrOpcode::kJSCreateCatchContext:
case IrOpcode::kJSCreateWithContext:
- return ScopeInfoRef(broker(), ScopeInfoOf(context->op()));
+ return MakeRef(broker(), ScopeInfoOf(context->op()));
case IrOpcode::kParameter: {
ScopeInfoRef scope_info = shared_info_.scope_info();
if (scope_info.HasOuterScopeInfo()) {
@@ -1972,11 +1979,10 @@ void BytecodeGraphBuilder::BuildLdaLookupContextSlot(TypeofMode typeof_mode) {
// Slow path, do a runtime load lookup.
set_environment(slow_environment);
{
- Node* name = jsgraph()->Constant(
- ObjectRef(broker(), GetConstantForIndexOperand(0)));
+ Node* name = jsgraph()->Constant(MakeRefForConstantForIndexOperand(0));
const Operator* op =
- javascript()->CallRuntime(typeof_mode == TypeofMode::NOT_INSIDE_TYPEOF
+ javascript()->CallRuntime(typeof_mode == TypeofMode::kNotInside
? Runtime::kLoadLookupSlot
: Runtime::kLoadLookupSlotInsideTypeof);
Node* value = NewNode(op, name);
@@ -1992,11 +1998,11 @@ void BytecodeGraphBuilder::BuildLdaLookupContextSlot(TypeofMode typeof_mode) {
}
void BytecodeGraphBuilder::VisitLdaLookupContextSlot() {
- BuildLdaLookupContextSlot(TypeofMode::NOT_INSIDE_TYPEOF);
+ BuildLdaLookupContextSlot(TypeofMode::kNotInside);
}
void BytecodeGraphBuilder::VisitLdaLookupContextSlotInsideTypeof() {
- BuildLdaLookupContextSlot(TypeofMode::INSIDE_TYPEOF);
+ BuildLdaLookupContextSlot(TypeofMode::kInside);
}
void BytecodeGraphBuilder::BuildLdaLookupGlobalSlot(TypeofMode typeof_mode) {
@@ -2008,7 +2014,7 @@ void BytecodeGraphBuilder::BuildLdaLookupGlobalSlot(TypeofMode typeof_mode) {
// Fast path, do a global load.
{
PrepareEagerCheckpoint();
- NameRef name(broker(), GetConstantForIndexOperand(0));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(0);
uint32_t feedback_slot_index = bytecode_iterator().GetIndexOperand(1);
Node* node = BuildLoadGlobal(name, feedback_slot_index, typeof_mode);
environment()->BindAccumulator(node, Environment::kAttachFrameState);
@@ -2024,10 +2030,10 @@ void BytecodeGraphBuilder::BuildLdaLookupGlobalSlot(TypeofMode typeof_mode) {
set_environment(slow_environment);
{
Node* name =
- jsgraph()->Constant(NameRef(broker(), GetConstantForIndexOperand(0)));
+ jsgraph()->Constant(MakeRefForConstantForIndexOperand<Name>(0));
const Operator* op =
- javascript()->CallRuntime(typeof_mode == TypeofMode::NOT_INSIDE_TYPEOF
+ javascript()->CallRuntime(typeof_mode == TypeofMode::kNotInside
? Runtime::kLoadLookupSlot
: Runtime::kLoadLookupSlotInsideTypeof);
Node* value = NewNode(op, name);
@@ -2043,18 +2049,17 @@ void BytecodeGraphBuilder::BuildLdaLookupGlobalSlot(TypeofMode typeof_mode) {
}
void BytecodeGraphBuilder::VisitLdaLookupGlobalSlot() {
- BuildLdaLookupGlobalSlot(TypeofMode::NOT_INSIDE_TYPEOF);
+ BuildLdaLookupGlobalSlot(TypeofMode::kNotInside);
}
void BytecodeGraphBuilder::VisitLdaLookupGlobalSlotInsideTypeof() {
- BuildLdaLookupGlobalSlot(TypeofMode::INSIDE_TYPEOF);
+ BuildLdaLookupGlobalSlot(TypeofMode::kInside);
}
void BytecodeGraphBuilder::VisitStaLookupSlot() {
PrepareEagerCheckpoint();
Node* value = environment()->LookupAccumulator();
- Node* name =
- jsgraph()->Constant(ObjectRef(broker(), GetConstantForIndexOperand(0)));
+ Node* name = jsgraph()->Constant(MakeRefForConstantForIndexOperand(0));
int bytecode_flags = bytecode_iterator().GetFlagOperand(1);
LanguageMode language_mode = static_cast<LanguageMode>(
interpreter::StoreLookupSlotFlags::LanguageModeBit::decode(
@@ -2078,7 +2083,7 @@ void BytecodeGraphBuilder::VisitLdaNamedProperty() {
PrepareEagerCheckpoint();
Node* object =
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
- NameRef name(broker(), GetConstantForIndexOperand(1));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(1);
FeedbackSource feedback =
CreateFeedbackSource(bytecode_iterator().GetIndexOperand(2));
const Operator* op = javascript()->LoadNamed(name.object(), feedback);
@@ -2102,7 +2107,7 @@ void BytecodeGraphBuilder::VisitLdaNamedPropertyNoFeedback() {
PrepareEagerCheckpoint();
Node* object =
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
- NameRef name(broker(), GetConstantForIndexOperand(1));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(1);
const Operator* op = javascript()->LoadNamed(name.object(), FeedbackSource());
DCHECK(IrOpcode::IsFeedbackCollectingOpcode(op->opcode()));
Node* node = NewNode(op, object, feedback_vector_node());
@@ -2114,7 +2119,7 @@ void BytecodeGraphBuilder::VisitLdaNamedPropertyFromSuper() {
Node* receiver =
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
Node* home_object = environment()->LookupAccumulator();
- NameRef name(broker(), GetConstantForIndexOperand(1));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(1);
FeedbackSource feedback =
CreateFeedbackSource(bytecode_iterator().GetIndexOperand(2));
@@ -2168,7 +2173,7 @@ void BytecodeGraphBuilder::BuildNamedStore(StoreMode store_mode) {
Node* value = environment()->LookupAccumulator();
Node* object =
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
- NameRef name(broker(), GetConstantForIndexOperand(1));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(1);
FeedbackSource feedback =
CreateFeedbackSource(bytecode_iterator().GetIndexOperand(2));
@@ -2209,7 +2214,7 @@ void BytecodeGraphBuilder::VisitStaNamedPropertyNoFeedback() {
Node* value = environment()->LookupAccumulator();
Node* object =
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
- NameRef name(broker(), GetConstantForIndexOperand(1));
+ NameRef name = MakeRefForConstantForIndexOperand<Name>(1);
LanguageMode language_mode =
static_cast<LanguageMode>(bytecode_iterator().GetFlagOperand(2));
const Operator* op =
@@ -2288,7 +2293,8 @@ void BytecodeGraphBuilder::VisitPopContext() {
}
void BytecodeGraphBuilder::VisitCreateClosure() {
- SharedFunctionInfoRef shared_info(broker(), GetConstantForIndexOperand(0));
+ SharedFunctionInfoRef shared_info =
+ MakeRefForConstantForIndexOperand<SharedFunctionInfo>(0);
AllocationType allocation =
interpreter::CreateClosureFlags::PretenuredBit::decode(
bytecode_iterator().GetFlagOperand(2))
@@ -2305,14 +2311,14 @@ void BytecodeGraphBuilder::VisitCreateClosure() {
}
void BytecodeGraphBuilder::VisitCreateBlockContext() {
- ScopeInfoRef scope_info(broker(), GetConstantForIndexOperand(0));
+ ScopeInfoRef scope_info = MakeRefForConstantForIndexOperand<ScopeInfo>(0);
const Operator* op = javascript()->CreateBlockContext(scope_info.object());
Node* context = NewNode(op);
environment()->BindAccumulator(context);
}
void BytecodeGraphBuilder::VisitCreateFunctionContext() {
- ScopeInfoRef scope_info(broker(), GetConstantForIndexOperand(0));
+ ScopeInfoRef scope_info = MakeRefForConstantForIndexOperand<ScopeInfo>(0);
uint32_t slots = bytecode_iterator().GetUnsignedImmediateOperand(1);
const Operator* op = javascript()->CreateFunctionContext(
scope_info.object(), slots, FUNCTION_SCOPE);
@@ -2321,7 +2327,7 @@ void BytecodeGraphBuilder::VisitCreateFunctionContext() {
}
void BytecodeGraphBuilder::VisitCreateEvalContext() {
- ScopeInfoRef scope_info(broker(), GetConstantForIndexOperand(0));
+ ScopeInfoRef scope_info = MakeRefForConstantForIndexOperand<ScopeInfo>(0);
uint32_t slots = bytecode_iterator().GetUnsignedImmediateOperand(1);
const Operator* op = javascript()->CreateFunctionContext(scope_info.object(),
slots, EVAL_SCOPE);
@@ -2332,7 +2338,7 @@ void BytecodeGraphBuilder::VisitCreateEvalContext() {
void BytecodeGraphBuilder::VisitCreateCatchContext() {
interpreter::Register reg = bytecode_iterator().GetRegisterOperand(0);
Node* exception = environment()->LookupRegister(reg);
- ScopeInfoRef scope_info(broker(), GetConstantForIndexOperand(1));
+ ScopeInfoRef scope_info = MakeRefForConstantForIndexOperand<ScopeInfo>(1);
const Operator* op = javascript()->CreateCatchContext(scope_info.object());
Node* context = NewNode(op, exception);
@@ -2342,7 +2348,7 @@ void BytecodeGraphBuilder::VisitCreateCatchContext() {
void BytecodeGraphBuilder::VisitCreateWithContext() {
Node* object =
environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
- ScopeInfoRef scope_info(broker(), GetConstantForIndexOperand(1));
+ ScopeInfoRef scope_info = MakeRefForConstantForIndexOperand<ScopeInfo>(1);
const Operator* op = javascript()->CreateWithContext(scope_info.object());
Node* context = NewNode(op, object);
@@ -2368,7 +2374,7 @@ void BytecodeGraphBuilder::VisitCreateRestParameter() {
}
void BytecodeGraphBuilder::VisitCreateRegExpLiteral() {
- StringRef constant_pattern(broker(), GetConstantForIndexOperand(0));
+ StringRef constant_pattern = MakeRefForConstantForIndexOperand<String>(0);
int const slot_id = bytecode_iterator().GetIndexOperand(1);
FeedbackSource pair = CreateFeedbackSource(slot_id);
int literal_flags = bytecode_iterator().GetFlagOperand(2);
@@ -2381,8 +2387,8 @@ void BytecodeGraphBuilder::VisitCreateRegExpLiteral() {
}
void BytecodeGraphBuilder::VisitCreateArrayLiteral() {
- ArrayBoilerplateDescriptionRef array_boilerplate_description(
- broker(), GetConstantForIndexOperand(0));
+ ArrayBoilerplateDescriptionRef array_boilerplate_description =
+ MakeRefForConstantForIndexOperand<ArrayBoilerplateDescription>(0);
int const slot_id = bytecode_iterator().GetIndexOperand(1);
FeedbackSource pair = CreateFeedbackSource(slot_id);
int bytecode_flags = bytecode_iterator().GetFlagOperand(2);
@@ -2420,8 +2426,8 @@ void BytecodeGraphBuilder::VisitCreateArrayFromIterable() {
}
void BytecodeGraphBuilder::VisitCreateObjectLiteral() {
- ObjectBoilerplateDescriptionRef constant_properties(
- broker(), GetConstantForIndexOperand(0));
+ ObjectBoilerplateDescriptionRef constant_properties =
+ MakeRefForConstantForIndexOperand<ObjectBoilerplateDescription>(0);
int const slot_id = bytecode_iterator().GetIndexOperand(1);
FeedbackSource pair = CreateFeedbackSource(slot_id);
int bytecode_flags = bytecode_iterator().GetFlagOperand(2);
@@ -2459,8 +2465,8 @@ void BytecodeGraphBuilder::VisitCloneObject() {
void BytecodeGraphBuilder::VisitGetTemplateObject() {
FeedbackSource source =
CreateFeedbackSource(bytecode_iterator().GetIndexOperand(1));
- TemplateObjectDescriptionRef description(broker(),
- GetConstantForIndexOperand(0));
+ TemplateObjectDescriptionRef description =
+ MakeRefForConstantForIndexOperand<TemplateObjectDescription>(0);
STATIC_ASSERT(JSGetTemplateObjectNode::FeedbackVectorIndex() == 0);
const Operator* op = javascript()->GetTemplateObject(
description.object(), shared_info().object(), source);
@@ -2508,9 +2514,11 @@ void BytecodeGraphBuilder::BuildCall(ConvertReceiverMode receiver_mode,
FeedbackSource feedback = CreateFeedbackSource(slot_id);
CallFrequency frequency = ComputeCallFrequency(slot_id);
SpeculationMode speculation_mode = GetSpeculationMode(slot_id);
+ CallFeedbackRelation call_feedback_relation =
+ ComputeCallFeedbackRelation(slot_id);
const Operator* op =
javascript()->Call(arg_count, frequency, feedback, receiver_mode,
- speculation_mode, CallFeedbackRelation::kRelated);
+ speculation_mode, call_feedback_relation);
DCHECK(IrOpcode::IsFeedbackCollectingOpcode(op->opcode()));
JSTypeHintLowering::LoweringResult lowering = TryBuildSimplifiedCall(
@@ -2955,8 +2963,7 @@ void BytecodeGraphBuilder::VisitThrowReferenceErrorIfHole() {
Node* accumulator = environment()->LookupAccumulator();
Node* check_for_hole = NewNode(simplified()->ReferenceEqual(), accumulator,
jsgraph()->TheHoleConstant());
- Node* name =
- jsgraph()->Constant(ObjectRef(broker(), GetConstantForIndexOperand(0)));
+ Node* name = jsgraph()->Constant(MakeRefForConstantForIndexOperand(0));
BuildHoleCheckAndThrow(check_for_hole,
Runtime::kThrowAccessedUninitializedVariable, name);
}
@@ -3088,6 +3095,19 @@ SpeculationMode BytecodeGraphBuilder::GetSpeculationMode(int slot_id) const {
: feedback.AsCall().speculation_mode();
}
+CallFeedbackRelation BytecodeGraphBuilder::ComputeCallFeedbackRelation(
+ int slot_id) const {
+ FeedbackSlot slot = FeedbackVector::ToSlot(slot_id);
+ FeedbackSource source(feedback_vector(), slot);
+ ProcessedFeedback const& feedback = broker()->GetFeedbackForCall(source);
+ if (feedback.IsInsufficient()) return CallFeedbackRelation::kUnrelated;
+ CallFeedbackContent call_feedback_content =
+ feedback.AsCall().call_feedback_content();
+ return call_feedback_content == CallFeedbackContent::kTarget
+ ? CallFeedbackRelation::kTarget
+ : CallFeedbackRelation::kReceiver;
+}
+
void BytecodeGraphBuilder::VisitBitwiseNot() {
FeedbackSource feedback = CreateFeedbackSource(
bytecode_iterator().GetSlotOperand(kUnaryOperationHintIndex));
diff --git a/deps/v8/src/compiler/code-assembler.cc b/deps/v8/src/compiler/code-assembler.cc
index 4ec0c8f9d8..8ff1777366 100644
--- a/deps/v8/src/compiler/code-assembler.cc
+++ b/deps/v8/src/compiler/code-assembler.cc
@@ -8,7 +8,7 @@
#include "src/base/bits.h"
#include "src/codegen/code-factory.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/machine-type.h"
#include "src/codegen/macro-assembler.h"
#include "src/compiler/backend/instruction-selector.h"
@@ -331,6 +331,10 @@ TNode<Float64T> CodeAssembler::Float64Constant(double value) {
return UncheckedCast<Float64T>(jsgraph()->Float64Constant(value));
}
+bool CodeAssembler::IsMapOffsetConstant(Node* node) {
+ return raw_assembler()->IsMapOffsetConstant(node);
+}
+
bool CodeAssembler::TryToInt32Constant(TNode<IntegralT> node,
int32_t* out_value) {
{
@@ -689,11 +693,15 @@ TNode<Object> CodeAssembler::LoadFullTagged(Node* base,
TNode<Object> CodeAssembler::LoadFullTagged(Node* base, TNode<IntPtrT> offset,
LoadSensitivity needs_poisoning) {
+ // Please use LoadFromObject(MachineType::MapInHeader(), object,
+ // IntPtrConstant(-kHeapObjectTag)) instead.
+ DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset));
return BitcastWordToTagged(Load<RawPtrT>(base, offset, needs_poisoning));
}
Node* CodeAssembler::AtomicLoad(MachineType type, TNode<RawPtrT> base,
TNode<WordT> offset) {
+ DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset));
return raw_assembler()->AtomicLoad(type, base, offset);
}
@@ -713,6 +721,27 @@ Node* CodeAssembler::LoadFromObject(MachineType type, TNode<Object> object,
return raw_assembler()->LoadFromObject(type, object, offset);
}
+#ifdef V8_MAP_PACKING
+Node* CodeAssembler::PackMapWord(Node* value) {
+ TNode<IntPtrT> map_word =
+ BitcastTaggedToWordForTagAndSmiBits(UncheckedCast<AnyTaggedT>(value));
+ TNode<WordT> packed = WordXor(UncheckedCast<WordT>(map_word),
+ IntPtrConstant(Internals::kMapWordXorMask));
+ return BitcastWordToTaggedSigned(packed);
+}
+#endif
+
+TNode<AnyTaggedT> CodeAssembler::LoadRootMapWord(RootIndex root_index) {
+#ifdef V8_MAP_PACKING
+ Handle<Object> root = isolate()->root_handle(root_index);
+ Node* map = HeapConstant(Handle<Map>::cast(root));
+ map = PackMapWord(map);
+ return ReinterpretCast<AnyTaggedT>(map);
+#else
+ return LoadRoot(root_index);
+#endif
+}
+
TNode<Object> CodeAssembler::LoadRoot(RootIndex root_index) {
if (RootsTable::IsImmortalImmovable(root_index)) {
Handle<Object> root = isolate()->root_handle(root_index);
@@ -794,11 +823,14 @@ void CodeAssembler::OptimizedStoreMap(TNode<HeapObject> object,
}
void CodeAssembler::Store(Node* base, Node* offset, Node* value) {
+ // Please use OptimizedStoreMap(base, value) instead.
+ DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset));
raw_assembler()->Store(MachineRepresentation::kTagged, base, offset, value,
kFullWriteBarrier);
}
void CodeAssembler::StoreEphemeronKey(Node* base, Node* offset, Node* value) {
+ DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset));
raw_assembler()->Store(MachineRepresentation::kTagged, base, offset, value,
kEphemeronKeyWriteBarrier);
}
@@ -812,6 +844,8 @@ void CodeAssembler::StoreNoWriteBarrier(MachineRepresentation rep, Node* base,
void CodeAssembler::StoreNoWriteBarrier(MachineRepresentation rep, Node* base,
Node* offset, Node* value) {
+ // Please use OptimizedStoreMap(base, value) instead.
+ DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset));
raw_assembler()->Store(
rep, base, offset, value,
CanBeTaggedPointer(rep) ? kAssertNoWriteBarrier : kNoWriteBarrier);
@@ -825,6 +859,8 @@ void CodeAssembler::UnsafeStoreNoWriteBarrier(MachineRepresentation rep,
void CodeAssembler::UnsafeStoreNoWriteBarrier(MachineRepresentation rep,
Node* base, Node* offset,
Node* value) {
+ // Please use OptimizedStoreMap(base, value) instead.
+ DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset));
raw_assembler()->Store(rep, base, offset, value, kNoWriteBarrier);
}
@@ -837,12 +873,15 @@ void CodeAssembler::StoreFullTaggedNoWriteBarrier(TNode<RawPtrT> base,
void CodeAssembler::StoreFullTaggedNoWriteBarrier(TNode<RawPtrT> base,
TNode<IntPtrT> offset,
TNode<Object> tagged_value) {
+ // Please use OptimizedStoreMap(base, tagged_value) instead.
+ DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset));
StoreNoWriteBarrier(MachineType::PointerRepresentation(), base, offset,
BitcastTaggedToWord(tagged_value));
}
void CodeAssembler::AtomicStore(MachineRepresentation rep, TNode<RawPtrT> base,
TNode<WordT> offset, TNode<Word32T> value) {
+ DCHECK(!raw_assembler()->IsMapOffsetConstantMinusTag(offset));
raw_assembler()->AtomicStore(rep, base, offset, value);
}
diff --git a/deps/v8/src/compiler/code-assembler.h b/deps/v8/src/compiler/code-assembler.h
index 9163295cd6..75cb1a9583 100644
--- a/deps/v8/src/compiler/code-assembler.h
+++ b/deps/v8/src/compiler/code-assembler.h
@@ -310,7 +310,6 @@ class CodeAssemblerParameterizedLabel;
V(Word64And, Word64T, Word64T, Word64T) \
V(Word64Or, Word64T, Word64T, Word64T) \
V(Word64Xor, Word64T, Word64T, Word64T) \
- V(Word64Ror, Word64T, Word64T, Word64T) \
V(Word64Shl, Word64T, Word64T, Word64T) \
V(Word64Shr, Word64T, Word64T, Word64T) \
V(Word64Sar, Word64T, Word64T, Word64T)
@@ -585,6 +584,8 @@ class V8_EXPORT_PRIVATE CodeAssembler {
return value ? Int32TrueConstant() : Int32FalseConstant();
}
+ bool IsMapOffsetConstant(Node* node);
+
bool TryToInt32Constant(TNode<IntegralT> node, int32_t* out_value);
bool TryToInt64Constant(TNode<IntegralT> node, int64_t* out_value);
bool TryToIntPtrConstant(TNode<IntegralT> node, intptr_t* out_value);
@@ -789,8 +790,16 @@ class V8_EXPORT_PRIVATE CodeAssembler {
Node* LoadFromObject(MachineType type, TNode<Object> object,
TNode<IntPtrT> offset);
+#ifdef V8_MAP_PACKING
+ Node* PackMapWord(Node* value);
+#endif
+
// Load a value from the root array.
+ // If map packing is enabled, LoadRoot for a root map returns the unpacked map
+ // word (i.e., the map). Use LoadRootMapWord to obtain the packed map word
+ // instead.
TNode<Object> LoadRoot(RootIndex root_index);
+ TNode<AnyTaggedT> LoadRootMapWord(RootIndex root_index);
template <typename Type>
TNode<Type> UnalignedLoad(TNode<RawPtrT> base, TNode<IntPtrT> offset) {
@@ -978,6 +987,11 @@ class V8_EXPORT_PRIVATE CodeAssembler {
static_cast<TNode<Word32T>>(right)));
}
+ TNode<IntPtrT> WordOr(TNode<IntPtrT> left, TNode<IntPtrT> right) {
+ return Signed(WordOr(static_cast<TNode<WordT>>(left),
+ static_cast<TNode<WordT>>(right)));
+ }
+
TNode<Int32T> Word32Or(TNode<Int32T> left, TNode<Int32T> right) {
return Signed(Word32Or(static_cast<TNode<Word32T>>(left),
static_cast<TNode<Word32T>>(right)));
@@ -995,6 +1009,9 @@ class V8_EXPORT_PRIVATE CodeAssembler {
TNode<BoolT> Word64Equal(TNode<Word64T> left, TNode<Word64T> right);
TNode<BoolT> Word64NotEqual(TNode<Word64T> left, TNode<Word64T> right);
+ TNode<IntPtrT> WordNot(TNode<IntPtrT> a) {
+ return Signed(WordNot(static_cast<TNode<WordT>>(a)));
+ }
TNode<BoolT> Word32Or(TNode<BoolT> left, TNode<BoolT> right) {
return UncheckedCast<BoolT>(Word32Or(static_cast<TNode<Word32T>>(left),
static_cast<TNode<Word32T>>(right)));
diff --git a/deps/v8/src/compiler/common-operator-reducer.cc b/deps/v8/src/compiler/common-operator-reducer.cc
index 874bdb0d32..f002f34a40 100644
--- a/deps/v8/src/compiler/common-operator-reducer.cc
+++ b/deps/v8/src/compiler/common-operator-reducer.cc
@@ -8,10 +8,11 @@
#include "src/compiler/common-operator.h"
#include "src/compiler/graph.h"
+#include "src/compiler/js-heap-broker.h"
#include "src/compiler/machine-operator.h"
-#include "src/compiler/node.h"
#include "src/compiler/node-matchers.h"
#include "src/compiler/node-properties.h"
+#include "src/compiler/node.h"
namespace v8 {
namespace internal {
@@ -28,7 +29,9 @@ Decision DecideCondition(JSHeapBroker* broker, Node* const cond) {
}
case IrOpcode::kHeapConstant: {
HeapObjectMatcher m(unwrapped);
- return m.Ref(broker).BooleanValue() ? Decision::kTrue : Decision::kFalse;
+ base::Optional<bool> maybe_result = m.Ref(broker).TryGetBooleanValue();
+ if (!maybe_result.has_value()) return Decision::kUnknown;
+ return *maybe_result ? Decision::kTrue : Decision::kFalse;
}
default:
return Decision::kUnknown;
@@ -53,7 +56,8 @@ CommonOperatorReducer::CommonOperatorReducer(Editor* editor, Graph* graph,
}
Reduction CommonOperatorReducer::Reduce(Node* node) {
- DisallowHeapAccessIf no_heap_access(!FLAG_turbo_direct_heap_access);
+ DisallowHeapAccessIf no_heap_access(broker() == nullptr ||
+ !broker()->is_concurrent_inlining());
switch (node->opcode()) {
case IrOpcode::kBranch:
return ReduceBranch(node);
diff --git a/deps/v8/src/compiler/common-operator.h b/deps/v8/src/compiler/common-operator.h
index 77483b14e8..4115414908 100644
--- a/deps/v8/src/compiler/common-operator.h
+++ b/deps/v8/src/compiler/common-operator.h
@@ -617,8 +617,8 @@ class FrameState : public CommonNodeWrapperBase {
// test, among others). Also, outer_frame_state points at the start node
// for non-inlined functions. This could be avoided by checking
// has_outer_frame_state() before casting to FrameState.
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kFrameState ||
- node->opcode() == IrOpcode::kStart);
+ DCHECK(node->opcode() == IrOpcode::kFrameState ||
+ node->opcode() == IrOpcode::kStart);
}
FrameStateInfo frame_state_info() const {
@@ -668,7 +668,7 @@ class FrameState : public CommonNodeWrapperBase {
class StartNode final : public CommonNodeWrapperBase {
public:
explicit constexpr StartNode(Node* node) : CommonNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kStart);
+ DCHECK_EQ(IrOpcode::kStart, node->opcode());
}
// The receiver is counted as part of formal parameters.
@@ -687,10 +687,10 @@ class StartNode final : public CommonNodeWrapperBase {
kExtraOutputCount);
// Checking related linkage methods here since they rely on Start node
// layout.
- CONSTEXPR_DCHECK(Linkage::kJSCallClosureParamIndex == -1);
- CONSTEXPR_DCHECK(Linkage::GetJSCallNewTargetParamIndex(argc) == argc + 0);
- CONSTEXPR_DCHECK(Linkage::GetJSCallArgCountParamIndex(argc) == argc + 1);
- CONSTEXPR_DCHECK(Linkage::GetJSCallContextParamIndex(argc) == argc + 2);
+ DCHECK_EQ(-1, Linkage::kJSCallClosureParamIndex);
+ DCHECK_EQ(argc + 0, Linkage::GetJSCallNewTargetParamIndex(argc));
+ DCHECK_EQ(argc + 1, Linkage::GetJSCallArgCountParamIndex(argc));
+ DCHECK_EQ(argc + 2, Linkage::GetJSCallContextParamIndex(argc));
return argc + kClosure + kNewTarget + kArgCount + kContext;
}
@@ -773,8 +773,7 @@ class DynamicCheckMapsWithDeoptUnlessNode final : public CommonNodeWrapperBase {
public:
explicit constexpr DynamicCheckMapsWithDeoptUnlessNode(Node* node)
: CommonNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() ==
- IrOpcode::kDynamicCheckMapsWithDeoptUnless);
+ DCHECK_EQ(IrOpcode::kDynamicCheckMapsWithDeoptUnless, node->opcode());
}
#define INPUTS(V) \
diff --git a/deps/v8/src/compiler/compilation-dependencies.cc b/deps/v8/src/compiler/compilation-dependencies.cc
index 3149fe490b..8c73a759ff 100644
--- a/deps/v8/src/compiler/compilation-dependencies.cc
+++ b/deps/v8/src/compiler/compilation-dependencies.cc
@@ -444,7 +444,7 @@ class ElementsKindDependency final : public CompilationDependency {
bool IsValid() const override {
Handle<AllocationSite> site = site_.object();
ElementsKind kind = site->PointsToLiteral()
- ? site->boilerplate().GetElementsKind()
+ ? site->boilerplate(kAcquireLoad).GetElementsKind()
: site->GetElementsKind();
return kind_ == kind;
}
@@ -580,38 +580,38 @@ bool CompilationDependencies::DependOnProtector(const PropertyCellRef& cell) {
}
bool CompilationDependencies::DependOnArrayBufferDetachingProtector() {
- return DependOnProtector(PropertyCellRef(
+ return DependOnProtector(MakeRef(
broker_,
broker_->isolate()->factory()->array_buffer_detaching_protector()));
}
bool CompilationDependencies::DependOnArrayIteratorProtector() {
- return DependOnProtector(PropertyCellRef(
+ return DependOnProtector(MakeRef(
broker_, broker_->isolate()->factory()->array_iterator_protector()));
}
bool CompilationDependencies::DependOnArraySpeciesProtector() {
- return DependOnProtector(PropertyCellRef(
+ return DependOnProtector(MakeRef(
broker_, broker_->isolate()->factory()->array_species_protector()));
}
bool CompilationDependencies::DependOnNoElementsProtector() {
- return DependOnProtector(PropertyCellRef(
- broker_, broker_->isolate()->factory()->no_elements_protector()));
+ return DependOnProtector(
+ MakeRef(broker_, broker_->isolate()->factory()->no_elements_protector()));
}
bool CompilationDependencies::DependOnPromiseHookProtector() {
- return DependOnProtector(PropertyCellRef(
+ return DependOnProtector(MakeRef(
broker_, broker_->isolate()->factory()->promise_hook_protector()));
}
bool CompilationDependencies::DependOnPromiseSpeciesProtector() {
- return DependOnProtector(PropertyCellRef(
+ return DependOnProtector(MakeRef(
broker_, broker_->isolate()->factory()->promise_species_protector()));
}
bool CompilationDependencies::DependOnPromiseThenProtector() {
- return DependOnProtector(PropertyCellRef(
+ return DependOnProtector(MakeRef(
broker_, broker_->isolate()->factory()->promise_then_protector()));
}
@@ -680,7 +680,7 @@ namespace {
void DependOnStablePrototypeChain(CompilationDependencies* deps, MapRef map,
base::Optional<JSObjectRef> last_prototype) {
while (true) {
- HeapObjectRef proto = map.prototype();
+ HeapObjectRef proto = map.prototype().value();
if (!proto.IsJSObject()) {
CHECK_EQ(proto.map().oddball_type(), OddballType::kNull);
break;
@@ -697,7 +697,7 @@ void CompilationDependencies::DependOnStablePrototypeChains(
MapContainer const& receiver_maps, WhereToStart start,
base::Optional<JSObjectRef> last_prototype) {
for (auto map : receiver_maps) {
- MapRef receiver_map(broker_, map);
+ MapRef receiver_map = MakeRef(broker_, map);
if (start == kStartAtReceiver) DependOnStableMap(receiver_map);
if (receiver_map.IsPrimitiveMap()) {
// Perform the implicit ToObject for primitives here.
diff --git a/deps/v8/src/compiler/compilation-dependencies.h b/deps/v8/src/compiler/compilation-dependencies.h
index 5cf2a3f94c..d2acc35261 100644
--- a/deps/v8/src/compiler/compilation-dependencies.h
+++ b/deps/v8/src/compiler/compilation-dependencies.h
@@ -34,6 +34,10 @@ class V8_EXPORT_PRIVATE CompilationDependencies : public ZoneObject {
V8_WARN_UNUSED_RESULT bool Commit(Handle<Code> code);
+ // TODO(jgruber): Remove this method once GetPropertyAccessInfo no longer
+ // uses the two-phase approach between serialization and compilation.
+ void ClearForConcurrentGetPropertyAccessInfo() { dependencies_.clear(); }
+
// Return the initial map of {function} and record the assumption that it
// stays the initial map.
MapRef DependOnInitialMap(const JSFunctionRef& function);
diff --git a/deps/v8/src/compiler/constant-folding-reducer.cc b/deps/v8/src/compiler/constant-folding-reducer.cc
index 1c672c700d..3b187467db 100644
--- a/deps/v8/src/compiler/constant-folding-reducer.cc
+++ b/deps/v8/src/compiler/constant-folding-reducer.cc
@@ -5,6 +5,7 @@
#include "src/compiler/constant-folding-reducer.h"
#include "src/compiler/js-graph.h"
+#include "src/compiler/js-heap-broker.h"
#include "src/objects/objects-inl.h"
namespace v8 {
@@ -63,7 +64,7 @@ ConstantFoldingReducer::ConstantFoldingReducer(Editor* editor, JSGraph* jsgraph,
ConstantFoldingReducer::~ConstantFoldingReducer() = default;
Reduction ConstantFoldingReducer::Reduce(Node* node) {
- DisallowHeapAccessIf no_heap_access(!FLAG_turbo_direct_heap_access);
+ DisallowHeapAccessIf no_heap_access(!broker()->is_concurrent_inlining());
if (!NodeProperties::IsConstant(node) && NodeProperties::IsTyped(node) &&
node->op()->HasProperty(Operator::kEliminatable) &&
node->opcode() != IrOpcode::kFinishRegion) {
diff --git a/deps/v8/src/compiler/dead-code-elimination.cc b/deps/v8/src/compiler/dead-code-elimination.cc
index 61552ba523..9b5958c81a 100644
--- a/deps/v8/src/compiler/dead-code-elimination.cc
+++ b/deps/v8/src/compiler/dead-code-elimination.cc
@@ -16,12 +16,14 @@ namespace compiler {
DeadCodeElimination::DeadCodeElimination(Editor* editor, Graph* graph,
CommonOperatorBuilder* common,
- Zone* temp_zone)
+ Zone* temp_zone,
+ bool is_concurrent_inlining)
: AdvancedReducer(editor),
graph_(graph),
common_(common),
dead_(graph->NewNode(common->Dead())),
- zone_(temp_zone) {
+ zone_(temp_zone),
+ is_concurrent_inlining_(is_concurrent_inlining) {
NodeProperties::SetType(dead_, Type::None());
}
@@ -46,7 +48,7 @@ Node* FindDeadInput(Node* node) {
} // namespace
Reduction DeadCodeElimination::Reduce(Node* node) {
- DisallowHeapAccessIf no_heap_access(!FLAG_turbo_direct_heap_access);
+ DisallowHeapAccessIf no_heap_access(!is_concurrent_inlining_);
switch (node->opcode()) {
case IrOpcode::kEnd:
return ReduceEnd(node);
diff --git a/deps/v8/src/compiler/dead-code-elimination.h b/deps/v8/src/compiler/dead-code-elimination.h
index 7fb22838c7..3e6914d5e1 100644
--- a/deps/v8/src/compiler/dead-code-elimination.h
+++ b/deps/v8/src/compiler/dead-code-elimination.h
@@ -40,7 +40,8 @@ class V8_EXPORT_PRIVATE DeadCodeElimination final
: public NON_EXPORTED_BASE(AdvancedReducer) {
public:
DeadCodeElimination(Editor* editor, Graph* graph,
- CommonOperatorBuilder* common, Zone* temp_zone);
+ CommonOperatorBuilder* common, Zone* temp_zone,
+ bool is_concurrent_inlining);
~DeadCodeElimination() final = default;
DeadCodeElimination(const DeadCodeElimination&) = delete;
DeadCodeElimination& operator=(const DeadCodeElimination&) = delete;
@@ -78,6 +79,8 @@ class V8_EXPORT_PRIVATE DeadCodeElimination final
CommonOperatorBuilder* const common_;
Node* const dead_;
Zone* zone_;
+
+ const bool is_concurrent_inlining_;
};
} // namespace compiler
diff --git a/deps/v8/src/compiler/decompression-optimizer.cc b/deps/v8/src/compiler/decompression-optimizer.cc
index 9b2362c9ef..a8c29d51e4 100644
--- a/deps/v8/src/compiler/decompression-optimizer.cc
+++ b/deps/v8/src/compiler/decompression-optimizer.cc
@@ -17,7 +17,8 @@ bool IsMachineLoad(Node* const node) {
const IrOpcode::Value opcode = node->opcode();
return opcode == IrOpcode::kLoad || opcode == IrOpcode::kPoisonedLoad ||
opcode == IrOpcode::kProtectedLoad ||
- opcode == IrOpcode::kUnalignedLoad;
+ opcode == IrOpcode::kUnalignedLoad ||
+ opcode == IrOpcode::kLoadImmutable;
}
bool IsTaggedMachineLoad(Node* const node) {
@@ -204,6 +205,10 @@ void DecompressionOptimizer::ChangeLoad(Node* const node) {
case IrOpcode::kLoad:
NodeProperties::ChangeOp(node, machine()->Load(compressed_load_rep));
break;
+ case IrOpcode::kLoadImmutable:
+ NodeProperties::ChangeOp(node,
+ machine()->LoadImmutable(compressed_load_rep));
+ break;
case IrOpcode::kPoisonedLoad:
NodeProperties::ChangeOp(node,
machine()->PoisonedLoad(compressed_load_rep));
diff --git a/deps/v8/src/compiler/effect-control-linearizer.cc b/deps/v8/src/compiler/effect-control-linearizer.cc
index dedf68e93c..9799691ce6 100644
--- a/deps/v8/src/compiler/effect-control-linearizer.cc
+++ b/deps/v8/src/compiler/effect-control-linearizer.cc
@@ -7,6 +7,7 @@
#include "include/v8-fast-api-calls.h"
#include "src/base/bits.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/machine-type.h"
#include "src/common/ptr-compr-inl.h"
#include "src/compiler/access-builder.h"
@@ -16,11 +17,13 @@
#include "src/compiler/js-graph.h"
#include "src/compiler/js-heap-broker.h"
#include "src/compiler/linkage.h"
+#include "src/compiler/memory-lowering.h"
#include "src/compiler/node-matchers.h"
#include "src/compiler/node-origin-table.h"
#include "src/compiler/node-properties.h"
#include "src/compiler/node.h"
#include "src/compiler/schedule.h"
+#include "src/compiler/select-lowering.h"
#include "src/execution/frames.h"
#include "src/heap/factory-inl.h"
#include "src/objects/heap-number.h"
@@ -31,10 +34,13 @@ namespace v8 {
namespace internal {
namespace compiler {
+enum class MaintainSchedule { kMaintain, kDiscard };
+enum class MaskArrayIndexEnable { kDoNotMaskArrayIndex, kMaskArrayIndex };
+
class EffectControlLinearizer {
public:
EffectControlLinearizer(JSGraph* js_graph, Schedule* schedule,
- Zone* temp_zone,
+ JSGraphAssembler* graph_assembler, Zone* temp_zone,
SourcePositionTable* source_positions,
NodeOriginTable* node_origins,
MaskArrayIndexEnable mask_array_index,
@@ -48,8 +54,7 @@ class EffectControlLinearizer {
source_positions_(source_positions),
node_origins_(node_origins),
broker_(broker),
- graph_assembler_(js_graph, temp_zone, base::nullopt,
- should_maintain_schedule() ? schedule : nullptr),
+ graph_assembler_(graph_assembler),
frame_state_zapper_(nullptr) {}
void Run();
@@ -112,7 +117,6 @@ class EffectControlLinearizer {
Node* LowerCheckedTaggedToFloat64(Node* node, Node* frame_state);
Node* LowerCheckedTaggedToTaggedSigned(Node* node, Node* frame_state);
Node* LowerCheckedTaggedToTaggedPointer(Node* node, Node* frame_state);
- Node* LowerBigIntAsUintN(Node* node, Node* frame_state);
Node* LowerChangeUint64ToBigInt(Node* node);
Node* LowerTruncateBigIntToUint64(Node* node);
Node* LowerChangeTaggedToFloat64(Node* node);
@@ -192,6 +196,7 @@ class EffectControlLinearizer {
void LowerTransitionElementsKind(Node* node);
Node* LowerLoadFieldByIndex(Node* node);
Node* LowerLoadMessage(Node* node);
+ Node* AdaptFastCallArgument(Node* node, CTypeInfo::Type arg_type);
Node* LowerFastApiCall(Node* node);
Node* LowerLoadTypedElement(Node* node);
Node* LowerLoadDataViewElement(Node* node);
@@ -307,7 +312,7 @@ class EffectControlLinearizer {
return js_graph_->simplified();
}
MachineOperatorBuilder* machine() const { return js_graph_->machine(); }
- JSGraphAssembler* gasm() { return &graph_assembler_; }
+ JSGraphAssembler* gasm() const { return graph_assembler_; }
JSHeapBroker* broker() const { return broker_; }
JSGraph* js_graph_;
@@ -319,7 +324,7 @@ class EffectControlLinearizer {
SourcePositionTable* source_positions_;
NodeOriginTable* node_origins_;
JSHeapBroker* broker_;
- JSGraphAssembler graph_assembler_;
+ JSGraphAssembler* graph_assembler_;
Node* frame_state_zapper_; // For tracking down compiler::Node::New crashes.
};
@@ -1059,9 +1064,6 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node,
case IrOpcode::kCheckedTaggedToTaggedPointer:
result = LowerCheckedTaggedToTaggedPointer(node, frame_state);
break;
- case IrOpcode::kBigIntAsUintN:
- result = LowerBigIntAsUintN(node, frame_state);
- break;
case IrOpcode::kChangeUint64ToBigInt:
result = LowerChangeUint64ToBigInt(node);
break;
@@ -2934,22 +2936,6 @@ Node* EffectControlLinearizer::LowerCheckBigInt(Node* node, Node* frame_state) {
return value;
}
-Node* EffectControlLinearizer::LowerBigIntAsUintN(Node* node,
- Node* frame_state) {
- DCHECK(machine()->Is64());
-
- const int bits = OpParameter<int>(node->op());
- DCHECK(0 <= bits && bits <= 64);
-
- if (bits == 64) {
- // Reduce to nop.
- return node->InputAt(0);
- } else {
- const uint64_t msk = (1ULL << bits) - 1ULL;
- return __ Word64And(node->InputAt(0), __ Int64Constant(msk));
- }
-}
-
Node* EffectControlLinearizer::LowerChangeUint64ToBigInt(Node* node) {
DCHECK(machine()->Is64());
@@ -3683,8 +3669,7 @@ Node* EffectControlLinearizer::LowerToBoolean(Node* node) {
auto call_descriptor = Linkage::GetStubCallDescriptor(
graph()->zone(), callable.descriptor(),
callable.descriptor().GetStackParameterCount(), flags, properties);
- return __ Call(call_descriptor, __ HeapConstant(callable.code()), obj,
- __ NoContextConstant());
+ return __ Call(call_descriptor, __ HeapConstant(callable.code()), obj);
}
Node* EffectControlLinearizer::LowerArgumentsLength(Node* node) {
@@ -4974,7 +4959,8 @@ void EffectControlLinearizer::LowerStoreMessage(Node* node) {
__ StoreField(AccessBuilder::ForExternalIntPtr(), offset, object_pattern);
}
-static MachineType MachineTypeFor(CTypeInfo::Type type) {
+namespace {
+MachineType MachineTypeFor(CTypeInfo::Type type) {
switch (type) {
case CTypeInfo::Type::kVoid:
return MachineType::AnyTagged();
@@ -4993,9 +4979,34 @@ static MachineType MachineTypeFor(CTypeInfo::Type type) {
case CTypeInfo::Type::kFloat64:
return MachineType::Float64();
case CTypeInfo::Type::kV8Value:
+ case CTypeInfo::Type::kApiObject:
return MachineType::AnyTagged();
}
}
+} // namespace
+
+Node* EffectControlLinearizer::AdaptFastCallArgument(Node* node,
+ CTypeInfo::Type arg_type) {
+ switch (arg_type) {
+ case CTypeInfo::Type::kV8Value: {
+ int kAlign = alignof(uintptr_t);
+ int kSize = sizeof(uintptr_t);
+ Node* stack_slot = __ StackSlot(kSize, kAlign);
+
+ __ Store(StoreRepresentation(MachineType::PointerRepresentation(),
+ kNoWriteBarrier),
+ stack_slot, 0, node);
+
+ return stack_slot;
+ }
+ case CTypeInfo::Type::kFloat32: {
+ return __ TruncateFloat64ToFloat32(node);
+ }
+ default: {
+ return node;
+ }
+ }
+}
Node* EffectControlLinearizer::LowerFastApiCall(Node* node) {
FastApiCallNode n(node);
@@ -5060,13 +5071,9 @@ Node* EffectControlLinearizer::LowerFastApiCall(Node* node) {
inputs[0] = n.target();
for (int i = FastApiCallNode::kFastTargetInputCount;
i < c_arg_count + FastApiCallNode::kFastTargetInputCount; ++i) {
- if (c_signature->ArgumentInfo(i - 1).GetType() ==
- CTypeInfo::Type::kFloat32) {
- inputs[i] =
- __ TruncateFloat64ToFloat32(NodeProperties::GetValueInput(node, i));
- } else {
- inputs[i] = NodeProperties::GetValueInput(node, i);
- }
+ inputs[i] =
+ AdaptFastCallArgument(NodeProperties::GetValueInput(node, i),
+ c_signature->ArgumentInfo(i - 1).GetType());
}
if (c_signature->HasOptions()) {
inputs[c_arg_count + 1] = stack_slot;
@@ -5113,6 +5120,7 @@ Node* EffectControlLinearizer::LowerFastApiCall(Node* node) {
c_call_result, CheckForMinusZeroMode::kCheckForMinusZero);
break;
case CTypeInfo::Type::kV8Value:
+ case CTypeInfo::Type::kApiObject:
UNREACHABLE();
}
@@ -5859,11 +5867,10 @@ Node* EffectControlLinearizer::CallBuiltin(Builtins::Name builtin,
Node* EffectControlLinearizer::LowerAssertType(Node* node) {
DCHECK_EQ(node->opcode(), IrOpcode::kAssertType);
Type type = OpParameter<Type>(node->op());
- DCHECK(type.IsRange());
- auto range = type.AsRange();
+ CHECK(type.CanBeAsserted());
Node* const input = node->InputAt(0);
- Node* const min = __ NumberConstant(range->Min());
- Node* const max = __ NumberConstant(range->Max());
+ Node* const min = __ NumberConstant(type.Min());
+ Node* const max = __ NumberConstant(type.Max());
CallBuiltin(Builtins::kCheckNumberInRange, node->op()->properties(), input,
min, max, __ SmiConstant(node->id()));
return input;
@@ -6462,15 +6469,47 @@ Node* EffectControlLinearizer::BuildIsClearedWeakReference(Node* maybe_object) {
#undef __
+namespace {
+
+MaskArrayIndexEnable MaskArrayForPoisonLevel(
+ PoisoningMitigationLevel poison_level) {
+ return (poison_level != PoisoningMitigationLevel::kDontPoison)
+ ? MaskArrayIndexEnable::kMaskArrayIndex
+ : MaskArrayIndexEnable::kDoNotMaskArrayIndex;
+}
+
+} // namespace
+
void LinearizeEffectControl(JSGraph* graph, Schedule* schedule, Zone* temp_zone,
SourcePositionTable* source_positions,
NodeOriginTable* node_origins,
- MaskArrayIndexEnable mask_array_index,
- MaintainSchedule maintain_schedule,
+ PoisoningMitigationLevel poison_level,
+ JSHeapBroker* broker) {
+ JSGraphAssembler graph_assembler_(graph, temp_zone, base::nullopt, nullptr);
+ EffectControlLinearizer linearizer(graph, schedule, &graph_assembler_,
+ temp_zone, source_positions, node_origins,
+ MaskArrayForPoisonLevel(poison_level),
+ MaintainSchedule::kDiscard, broker);
+ linearizer.Run();
+}
+
+void LowerToMachineSchedule(JSGraph* js_graph, Schedule* schedule,
+ Zone* temp_zone,
+ SourcePositionTable* source_positions,
+ NodeOriginTable* node_origins,
+ PoisoningMitigationLevel poison_level,
JSHeapBroker* broker) {
- EffectControlLinearizer linearizer(
- graph, schedule, temp_zone, source_positions, node_origins,
- mask_array_index, maintain_schedule, broker);
+ JSGraphAssembler graph_assembler(js_graph, temp_zone, base::nullopt,
+ schedule);
+ EffectControlLinearizer linearizer(js_graph, schedule, &graph_assembler,
+ temp_zone, source_positions, node_origins,
+ MaskArrayForPoisonLevel(poison_level),
+ MaintainSchedule::kMaintain, broker);
+ MemoryLowering memory_lowering(js_graph, temp_zone, &graph_assembler,
+ poison_level);
+ SelectLowering select_lowering(&graph_assembler, js_graph->graph());
+ graph_assembler.AddInlineReducer(&memory_lowering);
+ graph_assembler.AddInlineReducer(&select_lowering);
linearizer.Run();
}
diff --git a/deps/v8/src/compiler/effect-control-linearizer.h b/deps/v8/src/compiler/effect-control-linearizer.h
index fbfd3046dc..fca4899263 100644
--- a/deps/v8/src/compiler/effect-control-linearizer.h
+++ b/deps/v8/src/compiler/effect-control-linearizer.h
@@ -23,15 +23,18 @@ class Schedule;
class SourcePositionTable;
class JSHeapBroker;
-enum class MaskArrayIndexEnable { kDoNotMaskArrayIndex, kMaskArrayIndex };
-
-enum class MaintainSchedule { kMaintain, kDiscard };
-
V8_EXPORT_PRIVATE void LinearizeEffectControl(
JSGraph* graph, Schedule* schedule, Zone* temp_zone,
SourcePositionTable* source_positions, NodeOriginTable* node_origins,
- MaskArrayIndexEnable mask_array_index, MaintainSchedule maintain_schedule,
- JSHeapBroker* broker);
+ PoisoningMitigationLevel poison_level, JSHeapBroker* broker);
+
+// Performs effect control linearization lowering in addition to machine
+// lowering, producing a scheduled graph that is ready for instruction
+// selection.
+V8_EXPORT_PRIVATE void LowerToMachineSchedule(
+ JSGraph* graph, Schedule* schedule, Zone* temp_zone,
+ SourcePositionTable* source_positions, NodeOriginTable* node_origins,
+ PoisoningMitigationLevel poison_level, JSHeapBroker* broker);
} // namespace compiler
} // namespace internal
diff --git a/deps/v8/src/compiler/globals.h b/deps/v8/src/compiler/globals.h
index ff5b5a5732..66b3272b43 100644
--- a/deps/v8/src/compiler/globals.h
+++ b/deps/v8/src/compiler/globals.h
@@ -49,17 +49,24 @@ inline size_t hash_value(StackCheckKind kind) {
return static_cast<size_t>(kind);
}
-// The CallFeedbackRelation states whether the target feedback stored with a
-// JSCall is related to the call. If, during lowering, a JSCall (e.g. of a
-// higher order function) is replaced by a JSCall with another target, the
-// feedback has to be kept but is now unrelated.
-enum class CallFeedbackRelation { kRelated, kUnrelated };
+// The CallFeedbackRelation provides the meaning of the call feedback for a
+// TurboFan JSCall operator
+// - kReceiver: The call target was Function.prototype.apply and its receiver
+// was recorded as the feedback value.
+// - kTarget: The call target was recorded as the feedback value.
+// - kUnrelated: The feedback is no longer related to the call. If, during
+// lowering, a JSCall (e.g. of a higher order function) is replaced by a
+// JSCall with another target, the feedback has to be kept but is now
+// unrelated.
+enum class CallFeedbackRelation { kReceiver, kTarget, kUnrelated };
inline std::ostream& operator<<(std::ostream& os,
CallFeedbackRelation call_feedback_relation) {
switch (call_feedback_relation) {
- case CallFeedbackRelation::kRelated:
- return os << "CallFeedbackRelation::kRelated";
+ case CallFeedbackRelation::kReceiver:
+ return os << "CallFeedbackRelation::kReceiver";
+ case CallFeedbackRelation::kTarget:
+ return os << "CallFeedbackRelation::kTarget";
case CallFeedbackRelation::kUnrelated:
return os << "CallFeedbackRelation::kUnrelated";
}
diff --git a/deps/v8/src/compiler/graph-assembler.cc b/deps/v8/src/compiler/graph-assembler.cc
index 897e22ac26..73938a5fb9 100644
--- a/deps/v8/src/compiler/graph-assembler.cc
+++ b/deps/v8/src/compiler/graph-assembler.cc
@@ -5,6 +5,8 @@
#include "src/compiler/graph-assembler.h"
#include "src/codegen/code-factory.h"
+#include "src/compiler/access-builder.h"
+#include "src/compiler/graph-reducer.h"
#include "src/compiler/linkage.h"
#include "src/compiler/schedule.h"
// For TNode types.
@@ -329,6 +331,21 @@ BasicBlock* GraphAssembler::BasicBlockUpdater::Finalize(BasicBlock* original) {
return block;
}
+class V8_NODISCARD GraphAssembler::BlockInlineReduction {
+ public:
+ explicit BlockInlineReduction(GraphAssembler* gasm) : gasm_(gasm) {
+ DCHECK(!gasm_->inline_reductions_blocked_);
+ gasm_->inline_reductions_blocked_ = true;
+ }
+ ~BlockInlineReduction() {
+ DCHECK(gasm_->inline_reductions_blocked_);
+ gasm_->inline_reductions_blocked_ = false;
+ }
+
+ private:
+ GraphAssembler* gasm_;
+};
+
GraphAssembler::GraphAssembler(
MachineGraph* mcgraph, Zone* zone,
base::Optional<NodeChangedCallback> node_changed_callback,
@@ -342,6 +359,8 @@ GraphAssembler::GraphAssembler(
? new BasicBlockUpdater(schedule, mcgraph->graph(),
mcgraph->common(), zone)
: nullptr),
+ inline_reducers_(zone),
+ inline_reductions_blocked_(false),
loop_headers_(zone),
mark_loop_exits_(mark_loop_exits) {}
@@ -530,6 +549,31 @@ Node* JSGraphAssembler::StoreField(FieldAccess const& access, Node* object,
value, effect(), control()));
}
+#ifdef V8_MAP_PACKING
+TNode<Map> GraphAssembler::UnpackMapWord(Node* map_word) {
+ map_word = BitcastTaggedToWordForTagAndSmiBits(map_word);
+ // TODO(wenyuzhao): Clear header metadata.
+ Node* map = WordXor(map_word, IntPtrConstant(Internals::kMapWordXorMask));
+ return TNode<Map>::UncheckedCast(BitcastWordToTagged(map));
+}
+
+Node* GraphAssembler::PackMapWord(TNode<Map> map) {
+ Node* map_word = BitcastTaggedToWordForTagAndSmiBits(map);
+ Node* packed = WordXor(map_word, IntPtrConstant(Internals::kMapWordXorMask));
+ return BitcastWordToTaggedSigned(packed);
+}
+#endif
+
+TNode<Map> GraphAssembler::LoadMap(Node* object) {
+ Node* map_word = Load(MachineType::TaggedPointer(), object,
+ HeapObject::kMapOffset - kHeapObjectTag);
+#ifdef V8_MAP_PACKING
+ return UnpackMapWord(map_word);
+#else
+ return TNode<Map>::UncheckedCast(map_word);
+#endif
+}
+
Node* JSGraphAssembler::StoreElement(ElementAccess const& access, Node* object,
Node* index, Node* value) {
return AddNode(graph()->NewNode(simplified()->StoreElement(access), object,
@@ -968,6 +1012,28 @@ Node* GraphAssembler::AddClonedNode(Node* node) {
}
Node* GraphAssembler::AddNode(Node* node) {
+ if (!inline_reducers_.empty() && !inline_reductions_blocked_) {
+ // Reducers may add new nodes to the graph using this graph assembler,
+ // however they should never introduce nodes that need further reduction,
+ // so block reduction
+ BlockInlineReduction scope(this);
+ Reduction reduction;
+ for (auto reducer : inline_reducers_) {
+ reduction = reducer->Reduce(node, nullptr);
+ if (reduction.Changed()) break;
+ }
+ if (reduction.Changed()) {
+ Node* replacement = reduction.replacement();
+ if (replacement != node) {
+ // Replace all uses of node and kill the node to make sure we don't
+ // leave dangling dead uses.
+ NodeProperties::ReplaceUses(node, replacement, effect(), control());
+ node->Kill();
+ return replacement;
+ }
+ }
+ }
+
if (block_updater_) {
block_updater_->AddNode(node);
}
diff --git a/deps/v8/src/compiler/graph-assembler.h b/deps/v8/src/compiler/graph-assembler.h
index bb3bc34a58..d368f36407 100644
--- a/deps/v8/src/compiler/graph-assembler.h
+++ b/deps/v8/src/compiler/graph-assembler.h
@@ -27,6 +27,7 @@ namespace compiler {
class Schedule;
class BasicBlock;
+class Reducer;
#define PURE_ASSEMBLER_MACH_UNOP_LIST(V) \
V(BitcastFloat32ToInt32) \
@@ -270,6 +271,12 @@ class V8_EXPORT_PRIVATE GraphAssembler {
CHECKED_ASSEMBLER_MACH_BINOP_LIST(BINOP_DECL)
#undef BINOP_DECL
+#ifdef V8_MAP_PACKING
+ Node* PackMapWord(TNode<Map> map);
+ TNode<Map> UnpackMapWord(Node* map_word);
+#endif
+ TNode<Map> LoadMap(Node* object);
+
Node* DebugBreak();
// Unreachable nodes are similar to Goto in that they reset effect/control to
@@ -436,6 +443,16 @@ class V8_EXPORT_PRIVATE GraphAssembler {
void ConnectUnreachableToEnd();
+ // Add an inline reducers such that nodes added to the graph will be run
+ // through the reducers and possibly further lowered. Each reducer should
+ // operate on independent node types since once a reducer changes a node we
+ // no longer run any other reducers on that node. The reducers should also
+ // only generate new nodes that wouldn't be further reduced, as new nodes
+ // generated by a reducer won't be passed through the reducers again.
+ void AddInlineReducer(Reducer* reducer) {
+ inline_reducers_.push_back(reducer);
+ }
+
Control control() const { return Control(control_); }
Effect effect() const { return Effect(effect_); }
@@ -532,6 +549,8 @@ class V8_EXPORT_PRIVATE GraphAssembler {
};
private:
+ class BlockInlineReduction;
+
template <typename... Vars>
void BranchImpl(Node* condition,
GraphAssemblerLabel<sizeof...(Vars)>* if_true,
@@ -551,6 +570,11 @@ class V8_EXPORT_PRIVATE GraphAssembler {
base::Optional<NodeChangedCallback> node_changed_callback_;
std::unique_ptr<BasicBlockUpdater> block_updater_;
+ // Inline reducers enable reductions to be performed to nodes as they are
+ // added to the graph with the graph assembler.
+ ZoneVector<Reducer*> inline_reducers_;
+ bool inline_reductions_blocked_;
+
// Track loop information in order to properly mark loop exits with
// {LoopExit,LoopExitEffect,LoopExitValue} nodes. The outermost level has
// a nesting level of 0. See also GraphAssembler::LoopScope.
diff --git a/deps/v8/src/compiler/graph-reducer.cc b/deps/v8/src/compiler/graph-reducer.cc
index 998f37eea8..643f662262 100644
--- a/deps/v8/src/compiler/graph-reducer.cc
+++ b/deps/v8/src/compiler/graph-reducer.cc
@@ -112,7 +112,7 @@ Reduction GraphReducer::Reduce(Node* const node) {
if (FLAG_trace_turbo_reduction) {
UnparkedScopeIfNeeded unparked(broker_);
// TODO(neis): Disallow racy handle dereference once we stop
- // supporting --no-local-heaps --no-turbo-direct-heap-access.
+ // supporting --no-local-heaps --no-concurrent-inlining.
AllowHandleDereference allow_deref;
StdoutStream{} << "- In-place update of #" << *node << " by reducer "
<< (*i)->reducer_name() << std::endl;
@@ -125,7 +125,7 @@ Reduction GraphReducer::Reduce(Node* const node) {
if (FLAG_trace_turbo_reduction) {
UnparkedScopeIfNeeded unparked(broker_);
// TODO(neis): Disallow racy handle dereference once we stop
- // supporting --no-local-heaps --no-turbo-direct-heap-access.
+ // supporting --no-local-heaps --no-concurrent-inlining.
AllowHandleDereference allow_deref;
StdoutStream{} << "- Replacement of #" << *node << " with #"
<< *(reduction.replacement()) << " by reducer "
diff --git a/deps/v8/src/compiler/graph-visualizer.cc b/deps/v8/src/compiler/graph-visualizer.cc
index eb3e4168f9..cc1d07085f 100644
--- a/deps/v8/src/compiler/graph-visualizer.cc
+++ b/deps/v8/src/compiler/graph-visualizer.cc
@@ -421,7 +421,7 @@ std::ostream& operator<<(std::ostream& os, const GraphAsJSON& ad) {
class GraphC1Visualizer {
public:
- GraphC1Visualizer(std::ostream& os, Zone* zone); // NOLINT
+ GraphC1Visualizer(std::ostream& os, Zone* zone);
GraphC1Visualizer(const GraphC1Visualizer&) = delete;
GraphC1Visualizer& operator=(const GraphC1Visualizer&) = delete;
@@ -1132,8 +1132,9 @@ std::ostream& operator<<(std::ostream& os, const InstructionOperandAsJSON& o) {
os << ",\"tooltip\": \"MUST_HAVE_SLOT\"";
break;
}
- case UnallocatedOperand::SAME_AS_FIRST_INPUT: {
- os << ",\"tooltip\": \"SAME_AS_FIRST_INPUT\"";
+ case UnallocatedOperand::SAME_AS_INPUT: {
+ os << ",\"tooltip\": \"SAME_AS_INPUT: " << unalloc->input_index()
+ << "\"";
break;
}
case UnallocatedOperand::REGISTER_OR_SLOT: {
diff --git a/deps/v8/src/compiler/graph-visualizer.h b/deps/v8/src/compiler/graph-visualizer.h
index 5585933015..39a2ef5021 100644
--- a/deps/v8/src/compiler/graph-visualizer.h
+++ b/deps/v8/src/compiler/graph-visualizer.h
@@ -6,7 +6,8 @@
#define V8_COMPILER_GRAPH_VISUALIZER_H_
#include <stdio.h>
-#include <fstream> // NOLINT(readability/streams)
+
+#include <fstream>
#include <iosfwd>
#include <memory>
diff --git a/deps/v8/src/compiler/graph.h b/deps/v8/src/compiler/graph.h
index eb6bfd7e77..25682dc9ae 100644
--- a/deps/v8/src/compiler/graph.h
+++ b/deps/v8/src/compiler/graph.h
@@ -67,7 +67,7 @@ class V8_EXPORT_PRIVATE Graph final : public NON_EXPORTED_BASE(ZoneObject) {
// Factory template for nodes with static input counts.
// Note: Template magic below is used to ensure this method is only considered
- // for argument types convertible to Node* during overload resoluation.
+ // for argument types convertible to Node* during overload resolution.
template <typename... Nodes,
typename = typename std::enable_if_t<
base::all(std::is_convertible<Nodes, Node*>::value...)>>
diff --git a/deps/v8/src/compiler/heap-refs.cc b/deps/v8/src/compiler/heap-refs.cc
new file mode 100644
index 0000000000..7931407a7e
--- /dev/null
+++ b/deps/v8/src/compiler/heap-refs.cc
@@ -0,0 +1,4594 @@
+// Copyright 2021 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.
+
+#include "src/compiler/heap-refs.h"
+
+#ifdef ENABLE_SLOW_DCHECKS
+#include <algorithm>
+#endif
+
+#include "src/api/api-inl.h"
+#include "src/ast/modules.h"
+#include "src/codegen/code-factory.h"
+#include "src/compiler/graph-reducer.h"
+#include "src/compiler/js-heap-broker.h"
+#include "src/execution/protectors-inl.h"
+#include "src/objects/descriptor-array.h"
+#include "src/objects/heap-number-inl.h"
+#include "src/objects/js-array-buffer-inl.h"
+#include "src/objects/property-cell.h"
+#include "src/objects/template-objects-inl.h"
+
+namespace v8 {
+namespace internal {
+namespace compiler {
+
+#define TRACE(broker, x) TRACE_BROKER(broker, x)
+#define TRACE_MISSING(broker, x) TRACE_BROKER_MISSING(broker, x)
+
+#define FORWARD_DECL(Name, ...) class Name##Data;
+HEAP_BROKER_OBJECT_LIST(FORWARD_DECL)
+#undef FORWARD_DECL
+
+// There are several kinds of ObjectData values.
+//
+// kSmi: The underlying V8 object is a Smi and the data is an instance of the
+// base class (ObjectData), i.e. it's basically just the handle. Because the
+// object is a Smi, it's safe to access the handle in order to extract the
+// number value, and AsSmi() does exactly that.
+//
+// kSerializedHeapObject: The underlying V8 object is a HeapObject and the
+// data is an instance of the corresponding (most-specific) subclass, e.g.
+// JSFunctionData, which provides serialized information about the object.
+//
+// kBackgroundSerializedHeapObject: Like kSerializedHeapObject, but
+// allows serialization from the background thread.
+//
+// kUnserializedHeapObject: The underlying V8 object is a HeapObject and the
+// data is an instance of the base class (ObjectData), i.e. it basically
+// carries no information other than the handle.
+//
+// kNeverSerializedHeapObject: The underlying V8 object is a (potentially
+// mutable) HeapObject and the data is an instance of ObjectData. Its handle
+// must be persistent so that the GC can update it at a safepoint. Via this
+// handle, the object can be accessed concurrently to the main thread. To be
+// used the flag --concurrent-inlining must be on.
+//
+// kUnserializedReadOnlyHeapObject: The underlying V8 object is a read-only
+// HeapObject and the data is an instance of ObjectData. For
+// ReadOnlyHeapObjects, it is OK to access heap even from off-thread, so
+// these objects need not be serialized.
+enum ObjectDataKind {
+ kSmi,
+ kSerializedHeapObject,
+ kBackgroundSerializedHeapObject,
+ kUnserializedHeapObject,
+ kNeverSerializedHeapObject,
+ kUnserializedReadOnlyHeapObject
+};
+
+namespace {
+
+bool IsReadOnlyHeapObjectForCompiler(HeapObject object) {
+ DisallowGarbageCollection no_gc;
+ // TODO(jgruber): Remove this compiler-specific predicate and use the plain
+ // heap predicate instead. This would involve removing the special cases for
+ // builtins.
+ return (object.IsCode() && Code::cast(object).is_builtin()) ||
+ (object.IsHeapObject() &&
+ ReadOnlyHeap::Contains(HeapObject::cast(object)));
+}
+
+} // namespace
+
+class ObjectData : public ZoneObject {
+ public:
+ ObjectData(JSHeapBroker* broker, ObjectData** storage, Handle<Object> object,
+ ObjectDataKind kind)
+ : object_(object),
+ kind_(kind)
+#ifdef DEBUG
+ ,
+ broker_(broker)
+#endif // DEBUG
+ {
+ // This assignment ensures we don't end up inserting the same object
+ // in an endless recursion.
+ *storage = this;
+
+ TRACE(broker, "Creating data " << this << " for handle " << object.address()
+ << " (" << Brief(*object) << ")");
+
+ // It is safe to access read only heap objects and builtins from a
+ // background thread. When we read fileds of these objects, we may create
+ // ObjectData on the background thread even without a canonical handle
+ // scope. This is safe too since we don't create handles but just get
+ // handles from read only root table or builtins table which is what
+ // canonical scope uses as well. For all other objects we should have
+ // created ObjectData in canonical handle scope on the main thread.
+ CHECK_IMPLIES(
+ broker->mode() == JSHeapBroker::kDisabled ||
+ broker->mode() == JSHeapBroker::kSerializing,
+ broker->isolate()->handle_scope_data()->canonical_scope != nullptr);
+ CHECK_IMPLIES(broker->mode() == JSHeapBroker::kSerialized,
+ kind == kUnserializedReadOnlyHeapObject || kind == kSmi ||
+ kind == kNeverSerializedHeapObject ||
+ kind == kBackgroundSerializedHeapObject);
+ CHECK_IMPLIES(kind == kUnserializedReadOnlyHeapObject,
+ object->IsHeapObject() && IsReadOnlyHeapObjectForCompiler(
+ HeapObject::cast(*object)));
+ }
+
+#define DECLARE_IS(Name, ...) bool Is##Name() const;
+ HEAP_BROKER_OBJECT_LIST(DECLARE_IS)
+#undef DECLARE_IS
+
+#define DECLARE_AS(Name, ...) Name##Data* As##Name();
+ HEAP_BROKER_OBJECT_LIST(DECLARE_AS)
+#undef DECLARE_AS
+
+ Handle<Object> object() const { return object_; }
+ ObjectDataKind kind() const { return kind_; }
+ bool is_smi() const { return kind_ == kSmi; }
+ bool should_access_heap() const {
+ return kind_ == kUnserializedHeapObject ||
+ kind_ == kNeverSerializedHeapObject ||
+ kind_ == kUnserializedReadOnlyHeapObject;
+ }
+ bool IsNull() const { return object_->IsNull(); }
+
+#ifdef DEBUG
+ enum class Usage{kUnused, kOnlyIdentityUsed, kDataUsed};
+ mutable Usage used_status = Usage::kUnused;
+
+ JSHeapBroker* broker() const { return broker_; }
+#endif // DEBUG
+
+ private:
+ Handle<Object> const object_;
+ ObjectDataKind const kind_;
+#ifdef DEBUG
+ JSHeapBroker* const broker_; // For DCHECKs.
+#endif // DEBUG
+};
+
+namespace {
+
+template <class T>
+constexpr bool IsSerializedRef() {
+ return ref_traits<T>::ref_serialization_kind ==
+ RefSerializationKind::kSerialized;
+}
+
+RefSerializationKind RefSerializationKindOf(ObjectData* const data) {
+ Object o = *data->object();
+ if (o.IsSmi()) {
+ return RefSerializationKind::kNeverSerialized;
+#define DEFINE_REF_SERIALIZATION_KIND(Name, Kind) \
+ } \
+ /* NOLINTNEXTLINE(readability/braces) */ \
+ else if (o.Is##Name()) { \
+ return ref_traits<Name>::ref_serialization_kind;
+ HEAP_BROKER_OBJECT_LIST(DEFINE_REF_SERIALIZATION_KIND)
+#undef DEFINE_REF_SERIALIZATION_KIND
+ }
+ UNREACHABLE();
+}
+
+} // namespace
+
+class HeapObjectData : public ObjectData {
+ public:
+ HeapObjectData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<HeapObject> object,
+ ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject);
+
+ base::Optional<bool> TryGetBooleanValue(JSHeapBroker* broker) const;
+ ObjectData* map() const { return map_; }
+ InstanceType GetMapInstanceType() const;
+
+ private:
+ base::Optional<bool> TryGetBooleanValueImpl(JSHeapBroker* broker) const;
+
+ ObjectData* const map_;
+};
+
+class PropertyCellData : public HeapObjectData {
+ public:
+ PropertyCellData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<PropertyCell> object,
+ ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject);
+
+ bool Serialize(JSHeapBroker* broker);
+
+ PropertyDetails property_details() const {
+ CHECK(serialized());
+ return property_details_;
+ }
+
+ ObjectData* value() const {
+ DCHECK(serialized());
+ return value_;
+ }
+
+ private:
+ PropertyDetails property_details_ = PropertyDetails::Empty();
+ ObjectData* value_ = nullptr;
+
+ bool serialized() const { return value_ != nullptr; }
+};
+
+// TODO(mslekova): Once we have real-world usage data, we might want to
+// reimplement this as sorted vector instead, to reduce the memory overhead.
+typedef ZoneMap<ObjectData*, HolderLookupResult> KnownReceiversMap;
+
+class FunctionTemplateInfoData : public HeapObjectData {
+ public:
+ FunctionTemplateInfoData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<FunctionTemplateInfo> object);
+
+ bool is_signature_undefined() const { return is_signature_undefined_; }
+ bool accept_any_receiver() const { return accept_any_receiver_; }
+ bool has_call_code() const { return has_call_code_; }
+
+ void SerializeCallCode(JSHeapBroker* broker);
+ ObjectData* call_code() const { return call_code_; }
+ ZoneVector<Address> c_functions() const { return c_functions_; }
+ ZoneVector<const CFunctionInfo*> c_signatures() const {
+ return c_signatures_;
+ }
+ KnownReceiversMap& known_receivers() { return known_receivers_; }
+
+ private:
+ bool is_signature_undefined_ = false;
+ bool accept_any_receiver_ = false;
+ bool has_call_code_ = false;
+
+ ObjectData* call_code_ = nullptr;
+ ZoneVector<Address> c_functions_;
+ ZoneVector<const CFunctionInfo*> c_signatures_;
+ KnownReceiversMap known_receivers_;
+};
+
+class CallHandlerInfoData : public HeapObjectData {
+ public:
+ CallHandlerInfoData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<CallHandlerInfo> object);
+
+ Address callback() const { return callback_; }
+
+ void Serialize(JSHeapBroker* broker);
+ ObjectData* data() const { return data_; }
+
+ private:
+ Address const callback_;
+
+ ObjectData* data_ = nullptr;
+};
+
+namespace {
+
+ZoneVector<Address> GetCFunctions(FixedArray function_overloads, Zone* zone) {
+ const int len = function_overloads.length() /
+ FunctionTemplateInfo::kFunctionOverloadEntrySize;
+ ZoneVector<Address> c_functions = ZoneVector<Address>(len, zone);
+ for (int i = 0; i < len; i++) {
+ c_functions[i] = v8::ToCData<Address>(function_overloads.get(
+ FunctionTemplateInfo::kFunctionOverloadEntrySize * i));
+ }
+ return c_functions;
+}
+
+ZoneVector<const CFunctionInfo*> GetCSignatures(FixedArray function_overloads,
+ Zone* zone) {
+ const int len = function_overloads.length() /
+ FunctionTemplateInfo::kFunctionOverloadEntrySize;
+ ZoneVector<const CFunctionInfo*> c_signatures =
+ ZoneVector<const CFunctionInfo*>(len, zone);
+ for (int i = 0; i < len; i++) {
+ c_signatures[i] = v8::ToCData<const CFunctionInfo*>(function_overloads.get(
+ FunctionTemplateInfo::kFunctionOverloadEntrySize * i + 1));
+ }
+ return c_signatures;
+}
+
+} // namespace
+
+FunctionTemplateInfoData::FunctionTemplateInfoData(
+ JSHeapBroker* broker, ObjectData** storage,
+ Handle<FunctionTemplateInfo> object)
+ : HeapObjectData(broker, storage, object),
+ c_functions_(broker->zone()),
+ c_signatures_(broker->zone()),
+ known_receivers_(broker->zone()) {
+ DCHECK(!broker->is_concurrent_inlining());
+
+ auto function_template_info = Handle<FunctionTemplateInfo>::cast(object);
+
+ FixedArray function_overloads_array =
+ FixedArray::cast(function_template_info->GetCFunctionOverloads());
+ c_functions_ = GetCFunctions(function_overloads_array, broker->zone());
+ c_signatures_ = GetCSignatures(function_overloads_array, broker->zone());
+
+ is_signature_undefined_ =
+ function_template_info->signature().IsUndefined(broker->isolate());
+ accept_any_receiver_ = function_template_info->accept_any_receiver();
+
+ CallOptimization call_optimization(broker->local_isolate_or_isolate(),
+ object);
+ has_call_code_ = call_optimization.is_simple_api_call();
+}
+
+CallHandlerInfoData::CallHandlerInfoData(JSHeapBroker* broker,
+ ObjectData** storage,
+ Handle<CallHandlerInfo> object)
+ : HeapObjectData(broker, storage, object),
+ callback_(v8::ToCData<Address>(object->callback())) {
+ DCHECK(!broker->is_concurrent_inlining());
+}
+
+PropertyCellData::PropertyCellData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<PropertyCell> object,
+ ObjectDataKind kind)
+ : HeapObjectData(broker, storage, object, kind) {}
+
+bool PropertyCellData::Serialize(JSHeapBroker* broker) {
+ if (serialized()) return true;
+
+ TraceScope tracer(broker, this, "PropertyCellData::Serialize");
+ auto cell = Handle<PropertyCell>::cast(object());
+
+ // While this code runs on a background thread, the property cell might
+ // undergo state transitions via calls to PropertyCell::Transition. These
+ // transitions follow a certain protocol on which we rely here to ensure that
+ // we only report success when we can guarantee consistent data. A key
+ // property is that after transitioning from cell type A to B (A != B), there
+ // will never be a transition back to A, unless A is kConstant and the new
+ // value is the hole (i.e. the property cell was invalidated, which is a final
+ // state).
+
+ PropertyDetails property_details = cell->property_details(kAcquireLoad);
+
+ Handle<Object> value =
+ broker->CanonicalPersistentHandle(cell->value(kAcquireLoad));
+ if (broker->ObjectMayBeUninitialized(value)) {
+ DCHECK(!broker->IsMainThread());
+ return false;
+ }
+
+ {
+ PropertyDetails property_details_again =
+ cell->property_details(kAcquireLoad);
+ if (property_details != property_details_again) {
+ DCHECK(!broker->IsMainThread());
+ return false;
+ }
+ }
+
+ if (property_details.cell_type() == PropertyCellType::kConstant) {
+ Handle<Object> value_again =
+ broker->CanonicalPersistentHandle(cell->value(kAcquireLoad));
+ if (*value != *value_again) {
+ DCHECK(!broker->IsMainThread());
+ return false;
+ }
+ }
+
+ ObjectData* value_data = broker->TryGetOrCreateData(value);
+ if (value_data == nullptr) {
+ DCHECK(!broker->IsMainThread());
+ return false;
+ }
+
+ PropertyCell::CheckDataIsCompatible(property_details, *value);
+
+ DCHECK(!serialized());
+ property_details_ = property_details;
+ value_ = value_data;
+ DCHECK(serialized());
+ return true;
+}
+
+void FunctionTemplateInfoData::SerializeCallCode(JSHeapBroker* broker) {
+ if (call_code_ != nullptr) return;
+
+ TraceScope tracer(broker, this,
+ "FunctionTemplateInfoData::SerializeCallCode");
+ auto function_template_info = Handle<FunctionTemplateInfo>::cast(object());
+ call_code_ =
+ broker->GetOrCreateData(function_template_info->call_code(kAcquireLoad));
+ if (call_code_->should_access_heap()) {
+ // TODO(mvstanton): When ObjectRef is in the never serialized list, this
+ // code can be removed.
+ broker->GetOrCreateData(
+ Handle<CallHandlerInfo>::cast(call_code_->object())->data());
+ } else {
+ call_code_->AsCallHandlerInfo()->Serialize(broker);
+ }
+}
+
+void CallHandlerInfoData::Serialize(JSHeapBroker* broker) {
+ if (data_ != nullptr) return;
+
+ TraceScope tracer(broker, this, "CallHandlerInfoData::Serialize");
+ auto call_handler_info = Handle<CallHandlerInfo>::cast(object());
+ data_ = broker->GetOrCreateData(call_handler_info->data());
+}
+
+class JSReceiverData : public HeapObjectData {
+ public:
+ JSReceiverData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSReceiver> object, ObjectDataKind kind)
+ : HeapObjectData(broker, storage, object, kind) {}
+};
+
+class JSObjectData : public JSReceiverData {
+ public:
+ JSObjectData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSObject> object);
+
+ // Recursive serialization of all reachable JSObjects.
+ void SerializeAsBoilerplate(JSHeapBroker* broker);
+ ObjectData* GetInobjectField(int property_index) const;
+
+ // Shallow serialization of {elements}.
+ void SerializeElements(JSHeapBroker* broker);
+ bool serialized_elements() const { return serialized_elements_; }
+ ObjectData* elements() const;
+
+ void SerializeObjectCreateMap(JSHeapBroker* broker);
+
+ ObjectData* object_create_map(
+ JSHeapBroker* broker) const { // Can be nullptr.
+ if (!serialized_object_create_map_) {
+ DCHECK_NULL(object_create_map_);
+ TRACE_MISSING(broker, "object_create_map on " << this);
+ }
+ return object_create_map_;
+ }
+
+ ObjectData* GetOwnConstantElement(
+ JSHeapBroker* broker, uint32_t index,
+ SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
+ ObjectData* GetOwnFastDataProperty(
+ JSHeapBroker* broker, Representation representation,
+ FieldIndex field_index,
+ SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
+ ObjectData* GetOwnDictionaryProperty(JSHeapBroker* broker,
+ InternalIndex dict_index,
+ SerializationPolicy policy);
+
+ // This method is only used to assert our invariants.
+ bool cow_or_empty_elements_tenured() const;
+
+ private:
+ void SerializeRecursiveAsBoilerplate(JSHeapBroker* broker, int max_depths);
+
+ ObjectData* elements_ = nullptr;
+ bool cow_or_empty_elements_tenured_ = false;
+ // The {serialized_as_boilerplate} flag is set when all recursively
+ // reachable JSObjects are serialized.
+ bool serialized_as_boilerplate_ = false;
+ bool serialized_elements_ = false;
+
+ ZoneVector<ObjectData*> inobject_fields_;
+
+ bool serialized_object_create_map_ = false;
+ ObjectData* object_create_map_ = nullptr;
+
+ // Elements (indexed properties) that either
+ // (1) are known to exist directly on the object as non-writable and
+ // non-configurable, or (2) are known not to (possibly they don't exist at
+ // all). In case (2), the second pair component is nullptr.
+ ZoneVector<std::pair<uint32_t, ObjectData*>> own_constant_elements_;
+ // Properties that either:
+ // (1) are known to exist directly on the object, or
+ // (2) are known not to (possibly they don't exist at all).
+ // In case (2), the second pair component is nullptr.
+ // For simplicity, this may in theory overlap with inobject_fields_.
+ // For fast mode objects, the keys of the map are the property_index() values
+ // of the respective property FieldIndex'es. For slow mode objects, the keys
+ // are the dictionary indicies.
+ ZoneUnorderedMap<int, ObjectData*> own_properties_;
+};
+
+void JSObjectData::SerializeObjectCreateMap(JSHeapBroker* broker) {
+ if (serialized_object_create_map_) return;
+ serialized_object_create_map_ = true;
+
+ TraceScope tracer(broker, this, "JSObjectData::SerializeObjectCreateMap");
+ Handle<JSObject> jsobject = Handle<JSObject>::cast(object());
+
+ if (jsobject->map().is_prototype_map()) {
+ Handle<Object> maybe_proto_info(jsobject->map().prototype_info(),
+ broker->isolate());
+ if (maybe_proto_info->IsPrototypeInfo()) {
+ auto proto_info = Handle<PrototypeInfo>::cast(maybe_proto_info);
+ if (proto_info->HasObjectCreateMap()) {
+ DCHECK_NULL(object_create_map_);
+ object_create_map_ =
+ broker->GetOrCreateData(proto_info->ObjectCreateMap());
+ }
+ }
+ }
+}
+
+namespace {
+
+base::Optional<ObjectRef> GetOwnElementFromHeap(JSHeapBroker* broker,
+ Handle<Object> receiver,
+ uint32_t index,
+ bool constant_only) {
+ LookupIterator it(broker->isolate(), receiver, index, LookupIterator::OWN);
+ if (it.state() == LookupIterator::DATA &&
+ (!constant_only || (it.IsReadOnly() && !it.IsConfigurable()))) {
+ return MakeRef(broker, it.GetDataValue());
+ }
+ return base::nullopt;
+}
+
+ObjectRef GetOwnFastDataPropertyFromHeap(JSHeapBroker* broker,
+ Handle<JSObject> receiver,
+ Representation representation,
+ FieldIndex field_index) {
+ Handle<Object> constant =
+ JSObject::FastPropertyAt(receiver, representation, field_index);
+ return ObjectRef(broker, constant);
+}
+
+ObjectRef GetOwnDictionaryPropertyFromHeap(JSHeapBroker* broker,
+ Handle<JSObject> receiver,
+ InternalIndex dict_index) {
+ Handle<Object> constant =
+ JSObject::DictionaryPropertyAt(receiver, dict_index);
+ return ObjectRef(broker, constant);
+}
+
+} // namespace
+
+ObjectData* JSObjectData::GetOwnConstantElement(JSHeapBroker* broker,
+ uint32_t index,
+ SerializationPolicy policy) {
+ for (auto const& p : own_constant_elements_) {
+ if (p.first == index) return p.second;
+ }
+
+ if (policy == SerializationPolicy::kAssumeSerialized) {
+ TRACE_MISSING(broker, "knowledge about index " << index << " on " << this);
+ return nullptr;
+ }
+
+ base::Optional<ObjectRef> element =
+ GetOwnElementFromHeap(broker, object(), index, true);
+ ObjectData* result = element.has_value() ? element->data() : nullptr;
+ own_constant_elements_.push_back({index, result});
+ return result;
+}
+
+ObjectData* JSObjectData::GetOwnFastDataProperty(JSHeapBroker* broker,
+ Representation representation,
+ FieldIndex field_index,
+ SerializationPolicy policy) {
+ auto p = own_properties_.find(field_index.property_index());
+ if (p != own_properties_.end()) return p->second;
+
+ if (policy == SerializationPolicy::kAssumeSerialized) {
+ TRACE_MISSING(broker, "knowledge about fast property with index "
+ << field_index.property_index() << " on "
+ << this);
+ return nullptr;
+ }
+
+ ObjectRef property = GetOwnFastDataPropertyFromHeap(
+ broker, Handle<JSObject>::cast(object()), representation, field_index);
+ ObjectData* result(property.data());
+ own_properties_.insert(std::make_pair(field_index.property_index(), result));
+ return result;
+}
+
+ObjectData* JSObjectData::GetOwnDictionaryProperty(JSHeapBroker* broker,
+ InternalIndex dict_index,
+ SerializationPolicy policy) {
+ auto p = own_properties_.find(dict_index.as_int());
+ if (p != own_properties_.end()) return p->second;
+
+ if (policy == SerializationPolicy::kAssumeSerialized) {
+ TRACE_MISSING(broker, "knowledge about dictionary property with index "
+ << dict_index.as_int() << " on " << this);
+ return nullptr;
+ }
+
+ ObjectRef property = GetOwnDictionaryPropertyFromHeap(
+ broker, Handle<JSObject>::cast(object()), dict_index);
+ ObjectData* result(property.data());
+ own_properties_.insert(std::make_pair(dict_index.as_int(), result));
+ return result;
+}
+
+class JSTypedArrayData : public JSObjectData {
+ public:
+ JSTypedArrayData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSTypedArray> object)
+ : JSObjectData(broker, storage, object) {}
+
+ // TODO(v8:7790): Once JSObject is no longer serialized, also make
+ // JSTypedArrayRef never-serialized.
+ STATIC_ASSERT(IsSerializedRef<JSObject>());
+
+ void Serialize(JSHeapBroker* broker);
+ bool serialized() const { return serialized_; }
+
+ bool is_on_heap() const { return is_on_heap_; }
+ size_t length() const { return length_; }
+ void* data_ptr() const { return data_ptr_; }
+
+ ObjectData* buffer() const { return buffer_; }
+
+ private:
+ bool serialized_ = false;
+ bool is_on_heap_ = false;
+ size_t length_ = 0;
+ void* data_ptr_ = nullptr;
+ ObjectData* buffer_ = nullptr;
+};
+
+void JSTypedArrayData::Serialize(JSHeapBroker* broker) {
+ if (serialized_) return;
+ serialized_ = true;
+
+ TraceScope tracer(broker, this, "JSTypedArrayData::Serialize");
+ Handle<JSTypedArray> typed_array = Handle<JSTypedArray>::cast(object());
+
+ is_on_heap_ = typed_array->is_on_heap();
+ length_ = typed_array->length();
+ data_ptr_ = typed_array->DataPtr();
+
+ if (!is_on_heap()) {
+ DCHECK_NULL(buffer_);
+ buffer_ = broker->GetOrCreateData(typed_array->buffer());
+ }
+}
+
+class ArrayBoilerplateDescriptionData : public HeapObjectData {
+ public:
+ ArrayBoilerplateDescriptionData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<ArrayBoilerplateDescription> object)
+ : HeapObjectData(broker, storage, object),
+ constants_elements_length_(object->constant_elements().length()) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+
+ int constants_elements_length() const { return constants_elements_length_; }
+
+ private:
+ int const constants_elements_length_;
+};
+
+class JSDataViewData : public JSObjectData {
+ public:
+ JSDataViewData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSDataView> object);
+
+ size_t byte_length() const { return byte_length_; }
+
+ private:
+ size_t const byte_length_;
+};
+
+class JSBoundFunctionData : public JSObjectData {
+ public:
+ JSBoundFunctionData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSBoundFunction> object);
+
+ bool Serialize(JSHeapBroker* broker);
+ bool serialized() const { return serialized_; }
+
+ ObjectData* bound_target_function() const {
+ DCHECK(!broker()->is_concurrent_inlining());
+ return bound_target_function_;
+ }
+ ObjectData* bound_this() const {
+ DCHECK(!broker()->is_concurrent_inlining());
+ return bound_this_;
+ }
+ ObjectData* bound_arguments() const {
+ DCHECK(!broker()->is_concurrent_inlining());
+ return bound_arguments_;
+ }
+
+ private:
+ bool serialized_ = false;
+
+ ObjectData* bound_target_function_ = nullptr;
+ ObjectData* bound_this_ = nullptr;
+ ObjectData* bound_arguments_ = nullptr;
+};
+
+class JSFunctionData : public JSObjectData {
+ public:
+ JSFunctionData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSFunction> object);
+
+ bool has_feedback_vector() const { return has_feedback_vector_; }
+ bool has_initial_map() const { return has_initial_map_; }
+ bool has_prototype() const { return has_prototype_; }
+ bool PrototypeRequiresRuntimeLookup() const {
+ return PrototypeRequiresRuntimeLookup_;
+ }
+
+ void Serialize(JSHeapBroker* broker);
+ bool serialized() const { return serialized_; }
+
+ void SerializeCodeAndFeedback(JSHeapBroker* broker);
+ bool serialized_code_and_feedback() const {
+ return serialized_code_and_feedback_;
+ }
+
+ ObjectData* context() const { return context_; }
+ ObjectData* native_context() const { return native_context_; }
+ ObjectData* initial_map() const { return initial_map_; }
+ ObjectData* prototype() const { return prototype_; }
+ ObjectData* shared() const { return shared_; }
+ ObjectData* raw_feedback_cell() const {
+ DCHECK(serialized_code_and_feedback());
+ return feedback_cell_;
+ }
+ ObjectData* feedback_vector() const {
+ DCHECK(serialized_code_and_feedback());
+ return feedback_vector_;
+ }
+ ObjectData* code() const {
+ DCHECK(serialized_code_and_feedback());
+ DCHECK(!broker()->is_concurrent_inlining());
+ return code_;
+ }
+ int initial_map_instance_size_with_min_slack() const {
+ CHECK(serialized_);
+ return initial_map_instance_size_with_min_slack_;
+ }
+
+ private:
+ bool has_feedback_vector_;
+ bool has_initial_map_;
+ bool has_prototype_;
+ bool PrototypeRequiresRuntimeLookup_;
+
+ bool serialized_ = false;
+ bool serialized_code_and_feedback_ = false;
+
+ ObjectData* context_ = nullptr;
+ ObjectData* native_context_ = nullptr;
+ ObjectData* initial_map_ = nullptr;
+ ObjectData* prototype_ = nullptr;
+ ObjectData* shared_ = nullptr;
+ ObjectData* feedback_vector_ = nullptr;
+ ObjectData* feedback_cell_ = nullptr;
+ ObjectData* code_ = nullptr;
+ int initial_map_instance_size_with_min_slack_;
+};
+
+class RegExpBoilerplateDescriptionData : public HeapObjectData {
+ public:
+ RegExpBoilerplateDescriptionData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<RegExpBoilerplateDescription> object)
+ : HeapObjectData(broker, storage, object) {}
+
+ void Serialize(JSHeapBroker* broker);
+ ObjectData* data() const {
+ CHECK(serialized_);
+ return data_;
+ }
+ ObjectData* source() const {
+ CHECK(serialized_);
+ return source_;
+ }
+ int flags() const {
+ CHECK(serialized_);
+ return flags_;
+ }
+
+ private:
+ bool serialized_ = false;
+ ObjectData* data_ = nullptr;
+ ObjectData* source_ = nullptr;
+ int flags_;
+};
+
+class HeapNumberData : public HeapObjectData {
+ public:
+ HeapNumberData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<HeapNumber> object,
+ ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject)
+ : HeapObjectData(broker, storage, object, kind),
+ value_(object->value()) {}
+
+ double value() const { return value_; }
+
+ private:
+ double const value_;
+};
+
+class ContextData : public HeapObjectData {
+ public:
+ ContextData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<Context> object);
+
+ ObjectData* previous(
+ JSHeapBroker* broker,
+ SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
+
+ // Returns nullptr if the slot index isn't valid or wasn't serialized,
+ // unless {policy} is {kSerializeIfNeeded}.
+ ObjectData* GetSlot(
+ JSHeapBroker* broker, int index,
+ SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
+
+ private:
+ ZoneMap<int, ObjectData*> slots_;
+ ObjectData* previous_ = nullptr;
+};
+
+ContextData::ContextData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<Context> object)
+ : HeapObjectData(broker, storage, object), slots_(broker->zone()) {}
+
+ObjectData* ContextData::previous(JSHeapBroker* broker,
+ SerializationPolicy policy) {
+ if (policy == SerializationPolicy::kSerializeIfNeeded &&
+ previous_ == nullptr) {
+ TraceScope tracer(broker, this, "ContextData::previous");
+ Handle<Context> context = Handle<Context>::cast(object());
+ previous_ = broker->GetOrCreateData(context->unchecked_previous());
+ }
+ return previous_;
+}
+
+ObjectData* ContextData::GetSlot(JSHeapBroker* broker, int index,
+ SerializationPolicy policy) {
+ DCHECK_GE(index, 0);
+ auto search = slots_.find(index);
+ if (search != slots_.end()) {
+ return search->second;
+ }
+
+ if (policy == SerializationPolicy::kSerializeIfNeeded) {
+ Handle<Context> context = Handle<Context>::cast(object());
+ if (index < context->length()) {
+ TraceScope tracer(broker, this, "ContextData::GetSlot");
+ TRACE(broker, "Serializing context slot " << index);
+ ObjectData* odata = broker->GetOrCreateData(context->get(index));
+ slots_.insert(std::make_pair(index, odata));
+ return odata;
+ }
+ }
+
+ return nullptr;
+}
+
+class NativeContextData : public ContextData {
+ public:
+#define DECL_ACCESSOR(type, name) \
+ ObjectData* name() const { return name##_; }
+ BROKER_NATIVE_CONTEXT_FIELDS(DECL_ACCESSOR)
+#undef DECL_ACCESSOR
+
+ const ZoneVector<ObjectData*>& function_maps() const {
+ CHECK_NE(state_, State::kUnserialized);
+ return function_maps_;
+ }
+
+ ObjectData* scope_info() const {
+ CHECK_NE(state_, State::kUnserialized);
+ return scope_info_;
+ }
+
+ NativeContextData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<NativeContext> object);
+ void Serialize(JSHeapBroker* broker);
+ void SerializeOnBackground(JSHeapBroker* broker);
+
+ private:
+ // After Serialize is called the class is partially serialized and it the
+ // kSerializedOnMainThread state. It then becomes kFullySerialized once
+ // SerializeOnBackground is called.
+ enum class State { kUnserialized, kSerializedOnMainThread, kFullySerialized };
+ State state_;
+
+#define DECL_MEMBER(type, name) ObjectData* name##_ = nullptr;
+ BROKER_NATIVE_CONTEXT_FIELDS(DECL_MEMBER)
+#undef DECL_MEMBER
+ ZoneVector<ObjectData*> function_maps_;
+ ObjectData* scope_info_ = nullptr;
+};
+
+class NameData : public HeapObjectData {
+ public:
+ NameData(JSHeapBroker* broker, ObjectData** storage, Handle<Name> object)
+ : HeapObjectData(broker, storage, object) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+};
+
+class StringData : public NameData {
+ public:
+ StringData(JSHeapBroker* broker, ObjectData** storage, Handle<String> object);
+
+ int length() const { return length_; }
+ uint16_t first_char() const { return first_char_; }
+ base::Optional<double> to_number() const { return to_number_; }
+ bool is_external_string() const { return is_external_string_; }
+ bool is_seq_string() const { return is_seq_string_; }
+
+ ObjectData* GetCharAsStringOrUndefined(
+ JSHeapBroker* broker, uint32_t index,
+ SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
+
+ private:
+ int const length_;
+ uint16_t const first_char_;
+ base::Optional<double> to_number_;
+ bool const is_external_string_;
+ bool const is_seq_string_;
+
+ // Known individual characters as strings, corresponding to the semantics of
+ // element access (s[i]). The first pair component is always less than
+ // {length_}. The second component is never nullptr.
+ ZoneVector<std::pair<uint32_t, ObjectData*>> chars_as_strings_;
+};
+
+class SymbolData : public NameData {
+ public:
+ SymbolData(JSHeapBroker* broker, ObjectData** storage, Handle<Symbol> object)
+ : NameData(broker, storage, object) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+};
+
+StringData::StringData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<String> object)
+ : NameData(broker, storage, object),
+ length_(object->length()),
+ first_char_(length_ > 0 ? object->Get(0) : 0),
+ to_number_(TryStringToDouble(broker->local_isolate(), object)),
+ is_external_string_(object->IsExternalString()),
+ is_seq_string_(object->IsSeqString()),
+ chars_as_strings_(broker->zone()) {
+ DCHECK(!broker->is_concurrent_inlining());
+}
+
+class InternalizedStringData : public StringData {
+ public:
+ InternalizedStringData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<InternalizedString> object)
+ : StringData(broker, storage, object) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+};
+
+ObjectData* StringData::GetCharAsStringOrUndefined(JSHeapBroker* broker,
+ uint32_t index,
+ SerializationPolicy policy) {
+ if (index >= static_cast<uint32_t>(length())) return nullptr;
+
+ for (auto const& p : chars_as_strings_) {
+ if (p.first == index) return p.second;
+ }
+
+ if (policy == SerializationPolicy::kAssumeSerialized) {
+ TRACE_MISSING(broker, "knowledge about index " << index << " on " << this);
+ return nullptr;
+ }
+
+ base::Optional<ObjectRef> element =
+ GetOwnElementFromHeap(broker, object(), index, true);
+ ObjectData* result = element.has_value() ? element->data() : nullptr;
+ chars_as_strings_.push_back({index, result});
+ return result;
+}
+
+namespace {
+
+bool IsFastLiteralHelper(Handle<JSObject> boilerplate, int max_depth,
+ int* max_properties) {
+ DCHECK_GE(max_depth, 0);
+ DCHECK_GE(*max_properties, 0);
+
+ // Check for too deep nesting.
+ if (max_depth == 0) return false;
+
+ Isolate* const isolate = boilerplate->GetIsolate();
+
+ // If the boilerplate map has been deprecated, bailout of fast literal
+ // optimization. The map could be deprecated at some point after the line
+ // below, but it's not a correctness issue -- it only means the literal isn't
+ // created with the most up to date map(s).
+ if (boilerplate->map().is_deprecated()) return false;
+
+ // Check the elements.
+ Handle<FixedArrayBase> elements(boilerplate->elements(), isolate);
+ if (elements->length() > 0 &&
+ elements->map() != ReadOnlyRoots(isolate).fixed_cow_array_map()) {
+ if (boilerplate->HasSmiOrObjectElements()) {
+ Handle<FixedArray> fast_elements = Handle<FixedArray>::cast(elements);
+ int length = elements->length();
+ for (int i = 0; i < length; i++) {
+ if ((*max_properties)-- == 0) return false;
+ Handle<Object> value(fast_elements->get(i), isolate);
+ if (value->IsJSObject()) {
+ Handle<JSObject> value_object = Handle<JSObject>::cast(value);
+ if (!IsFastLiteralHelper(value_object, max_depth - 1,
+ max_properties)) {
+ return false;
+ }
+ }
+ }
+ } else if (boilerplate->HasDoubleElements()) {
+ if (elements->Size() > kMaxRegularHeapObjectSize) return false;
+ } else {
+ return false;
+ }
+ }
+
+ // TODO(turbofan): Do we want to support out-of-object properties?
+ if (!(boilerplate->HasFastProperties() &&
+ boilerplate->property_array().length() == 0)) {
+ return false;
+ }
+
+ // Check the in-object properties.
+ Handle<DescriptorArray> descriptors(
+ boilerplate->map().instance_descriptors(isolate, kRelaxedLoad), isolate);
+ for (InternalIndex i : boilerplate->map().IterateOwnDescriptors()) {
+ PropertyDetails details = descriptors->GetDetails(i);
+ if (details.location() != kField) continue;
+ DCHECK_EQ(kData, details.kind());
+ if ((*max_properties)-- == 0) return false;
+ FieldIndex field_index = FieldIndex::ForDescriptor(boilerplate->map(), i);
+ Handle<Object> value(boilerplate->RawFastPropertyAt(field_index), isolate);
+ if (value->IsJSObject()) {
+ Handle<JSObject> value_object = Handle<JSObject>::cast(value);
+ if (!IsFastLiteralHelper(value_object, max_depth - 1, max_properties)) {
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+// Maximum depth and total number of elements and properties for literal
+// graphs to be considered for fast deep-copying. The limit is chosen to
+// match the maximum number of inobject properties, to ensure that the
+// performance of using object literals is not worse than using constructor
+// functions, see crbug.com/v8/6211 for details.
+const int kMaxFastLiteralDepth = 3;
+const int kMaxFastLiteralProperties = JSObject::kMaxInObjectProperties;
+
+// Determines whether the given array or object literal boilerplate satisfies
+// all limits to be considered for fast deep-copying and computes the total
+// size of all objects that are part of the graph.
+bool IsInlinableFastLiteral(Handle<JSObject> boilerplate) {
+ int max_properties = kMaxFastLiteralProperties;
+ return IsFastLiteralHelper(boilerplate, kMaxFastLiteralDepth,
+ &max_properties);
+}
+
+} // namespace
+
+class AccessorInfoData : public HeapObjectData {
+ public:
+ AccessorInfoData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<AccessorInfo> object);
+};
+
+class AllocationSiteData : public HeapObjectData {
+ public:
+ AllocationSiteData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<AllocationSite> object);
+ void SerializeBoilerplate(JSHeapBroker* broker);
+
+ bool PointsToLiteral() const { return PointsToLiteral_; }
+ AllocationType GetAllocationType() const { return GetAllocationType_; }
+ ObjectData* nested_site() const { return nested_site_; }
+ bool IsFastLiteral() const { return IsFastLiteral_; }
+ ObjectData* boilerplate() const { return boilerplate_; }
+
+ // These are only valid if PointsToLiteral is false.
+ ElementsKind GetElementsKind() const { return GetElementsKind_; }
+ bool CanInlineCall() const { return CanInlineCall_; }
+
+ private:
+ bool const PointsToLiteral_;
+ AllocationType const GetAllocationType_;
+ ObjectData* nested_site_ = nullptr;
+ bool IsFastLiteral_ = false;
+ ObjectData* boilerplate_ = nullptr;
+ ElementsKind GetElementsKind_ = NO_ELEMENTS;
+ bool CanInlineCall_ = false;
+ bool serialized_boilerplate_ = false;
+};
+
+class BigIntData : public HeapObjectData {
+ public:
+ BigIntData(JSHeapBroker* broker, ObjectData** storage, Handle<BigInt> object,
+ ObjectDataKind kind)
+ : HeapObjectData(broker, storage, object, kind),
+ as_uint64_(object->AsUint64(nullptr)) {}
+
+ uint64_t AsUint64() const { return as_uint64_; }
+
+ private:
+ const uint64_t as_uint64_;
+};
+
+struct PropertyDescriptor {
+ ObjectData* key = nullptr;
+ ObjectData* value = nullptr;
+ PropertyDetails details = PropertyDetails::Empty();
+ FieldIndex field_index;
+ ObjectData* field_owner = nullptr;
+ ObjectData* field_type = nullptr;
+};
+
+class MapData : public HeapObjectData {
+ public:
+ MapData(JSHeapBroker* broker, ObjectData** storage, Handle<Map> object,
+ ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject);
+
+ InstanceType instance_type() const { return instance_type_; }
+ int instance_size() const { return instance_size_; }
+ byte bit_field() const { return bit_field_; }
+ byte bit_field2() const { return bit_field2_; }
+ uint32_t bit_field3() const { return bit_field3_; }
+ bool can_be_deprecated() const { return can_be_deprecated_; }
+ bool can_transition() const { return can_transition_; }
+ int in_object_properties_start_in_words() const {
+ CHECK(InstanceTypeChecker::IsJSObject(instance_type()));
+ return in_object_properties_start_in_words_;
+ }
+ int in_object_properties() const {
+ CHECK(InstanceTypeChecker::IsJSObject(instance_type()));
+ return in_object_properties_;
+ }
+ int constructor_function_index() const { return constructor_function_index_; }
+ int NextFreePropertyIndex() const { return next_free_property_index_; }
+ int UnusedPropertyFields() const { return unused_property_fields_; }
+ bool supports_fast_array_iteration() const {
+ return supports_fast_array_iteration_;
+ }
+ bool supports_fast_array_resize() const {
+ return supports_fast_array_resize_;
+ }
+ bool is_abandoned_prototype_map() const {
+ return is_abandoned_prototype_map_;
+ }
+
+ // Extra information.
+
+ void SerializeElementsKindGeneralizations(JSHeapBroker* broker);
+ const ZoneVector<ObjectData*>& elements_kind_generalizations() const {
+ CHECK(serialized_elements_kind_generalizations_);
+ return elements_kind_generalizations_;
+ }
+
+ // Serialize a single (or all) own slot(s) of the descriptor array and recurse
+ // on field owner(s).
+ bool TrySerializeOwnDescriptor(JSHeapBroker* broker,
+ InternalIndex descriptor_index);
+ void SerializeOwnDescriptor(JSHeapBroker* broker,
+ InternalIndex descriptor_index) {
+ CHECK(TrySerializeOwnDescriptor(broker, descriptor_index));
+ }
+ void SerializeOwnDescriptors(JSHeapBroker* broker);
+ ObjectData* GetStrongValue(InternalIndex descriptor_index) const;
+ ObjectData* instance_descriptors() const { return instance_descriptors_; }
+
+ void SerializeRootMap(JSHeapBroker* broker);
+ ObjectData* FindRootMap() const;
+
+ void SerializeConstructor(JSHeapBroker* broker);
+ ObjectData* GetConstructor() const {
+ CHECK(serialized_constructor_);
+ return constructor_;
+ }
+
+ void SerializeBackPointer(JSHeapBroker* broker);
+ ObjectData* GetBackPointer() const {
+ CHECK(serialized_backpointer_);
+ return backpointer_;
+ }
+
+ bool TrySerializePrototype(JSHeapBroker* broker);
+ void SerializePrototype(JSHeapBroker* broker) {
+ CHECK(TrySerializePrototype(broker));
+ }
+ ObjectData* prototype() const {
+ DCHECK_EQ(serialized_prototype_, prototype_ != nullptr);
+ return prototype_;
+ }
+
+ void SerializeForElementLoad(JSHeapBroker* broker);
+
+ void SerializeForElementStore(JSHeapBroker* broker);
+
+ bool has_extra_serialized_data() const {
+ return serialized_elements_kind_generalizations_ ||
+ serialized_own_descriptors_ || serialized_constructor_ ||
+ serialized_backpointer_ || serialized_prototype_ ||
+ serialized_root_map_ || serialized_for_element_load_ ||
+ serialized_for_element_store_;
+ }
+
+ private:
+ // The following fields should be const in principle, but construction
+ // requires locking the MapUpdater lock. For this reason, it's easier to
+ // initialize these inside the constructor body, not in the initializer list.
+
+ // This block of fields will always be serialized.
+ InstanceType instance_type_;
+ int instance_size_;
+ uint32_t bit_field3_;
+ int unused_property_fields_;
+ bool is_abandoned_prototype_map_;
+ int in_object_properties_;
+
+ // These fields will only serialized if we are not concurrent inlining.
+ byte bit_field_;
+ byte bit_field2_;
+ bool can_be_deprecated_;
+ bool can_transition_;
+ int in_object_properties_start_in_words_;
+ int constructor_function_index_;
+ int next_free_property_index_;
+ bool supports_fast_array_iteration_;
+ bool supports_fast_array_resize_;
+
+ // These extra fields still have to be serialized (e.g prototype_) even with
+ // concurrent inling, since those classes have fields themselves which are not
+ // being directly read. This means that, for example, even though we can get
+ // the prototype itself with direct reads, some of its fields require
+ // serialization.
+ bool serialized_elements_kind_generalizations_ = false;
+ ZoneVector<ObjectData*> elements_kind_generalizations_;
+
+ bool serialized_own_descriptors_ = false;
+ ObjectData* instance_descriptors_ = nullptr;
+
+ bool serialized_constructor_ = false;
+ ObjectData* constructor_ = nullptr;
+
+ bool serialized_backpointer_ = false;
+ ObjectData* backpointer_ = nullptr;
+
+ bool serialized_prototype_ = false;
+ ObjectData* prototype_ = nullptr;
+
+ bool serialized_root_map_ = false;
+ ObjectData* root_map_ = nullptr;
+
+ bool serialized_for_element_load_ = false;
+
+ bool serialized_for_element_store_ = false;
+};
+
+AccessorInfoData::AccessorInfoData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<AccessorInfo> object)
+ : HeapObjectData(broker, storage, object) {
+ DCHECK(!broker->is_concurrent_inlining());
+}
+
+AllocationSiteData::AllocationSiteData(JSHeapBroker* broker,
+ ObjectData** storage,
+ Handle<AllocationSite> object)
+ : HeapObjectData(broker, storage, object),
+ PointsToLiteral_(object->PointsToLiteral()),
+ GetAllocationType_(object->GetAllocationType()) {
+ if (PointsToLiteral_) {
+ IsFastLiteral_ = IsInlinableFastLiteral(
+ handle(object->boilerplate(kAcquireLoad), broker->isolate()));
+ } else {
+ GetElementsKind_ = object->GetElementsKind();
+ CanInlineCall_ = object->CanInlineCall();
+ }
+}
+
+void AllocationSiteData::SerializeBoilerplate(JSHeapBroker* broker) {
+ if (serialized_boilerplate_) return;
+ serialized_boilerplate_ = true;
+
+ TraceScope tracer(broker, this, "AllocationSiteData::SerializeBoilerplate");
+ Handle<AllocationSite> site = Handle<AllocationSite>::cast(object());
+
+ CHECK(IsFastLiteral_);
+ DCHECK_NULL(boilerplate_);
+ boilerplate_ = broker->GetOrCreateData(site->boilerplate(kAcquireLoad));
+ if (!boilerplate_->should_access_heap()) {
+ boilerplate_->AsJSObject()->SerializeAsBoilerplate(broker);
+ }
+
+ DCHECK_NULL(nested_site_);
+ nested_site_ = broker->GetOrCreateData(site->nested_site());
+ if (nested_site_->IsAllocationSite() && !nested_site_->should_access_heap()) {
+ nested_site_->AsAllocationSite()->SerializeBoilerplate(broker);
+ }
+}
+
+HeapObjectData::HeapObjectData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<HeapObject> object, ObjectDataKind kind)
+ : ObjectData(broker, storage, object, kind),
+ // We have to use a raw cast below instead of AsMap() because of
+ // recursion. AsMap() would call IsMap(), which accesses the
+ // instance_type_ member. In the case of constructing the MapData for the
+ // meta map (whose map is itself), this member has not yet been
+ // initialized.
+ map_(broker->GetOrCreateData(object->map(kAcquireLoad))) {
+ CHECK_IMPLIES(kind == kSerializedHeapObject,
+ broker->mode() == JSHeapBroker::kSerializing);
+ CHECK_IMPLIES(broker->mode() == JSHeapBroker::kSerialized,
+ kind == kBackgroundSerializedHeapObject);
+}
+
+base::Optional<bool> HeapObjectData::TryGetBooleanValue(
+ JSHeapBroker* broker) const {
+ // Keep in sync with Object::BooleanValue.
+ auto result = TryGetBooleanValueImpl(broker);
+ DCHECK_IMPLIES(broker->IsMainThread() && result.has_value(),
+ result.value() == object()->BooleanValue(broker->isolate()));
+ return result;
+}
+
+base::Optional<bool> HeapObjectData::TryGetBooleanValueImpl(
+ JSHeapBroker* broker) const {
+ DisallowGarbageCollection no_gc;
+ Object o = *object();
+ Isolate* isolate = broker->isolate();
+ const InstanceType t = GetMapInstanceType();
+ if (o.IsTrue(isolate)) {
+ return true;
+ } else if (o.IsFalse(isolate)) {
+ return false;
+ } else if (o.IsNullOrUndefined(isolate)) {
+ return false;
+ } else if (MapRef{broker, map()}.is_undetectable()) {
+ return false; // Undetectable object is false.
+ } else if (InstanceTypeChecker::IsString(t)) {
+ // TODO(jgruber): Implement in possible cases.
+ return {};
+ } else if (InstanceTypeChecker::IsHeapNumber(t)) {
+ return {};
+ } else if (InstanceTypeChecker::IsBigInt(t)) {
+ return {};
+ }
+ return true;
+}
+
+InstanceType HeapObjectData::GetMapInstanceType() const {
+ ObjectData* map_data = map();
+ if (map_data->should_access_heap()) {
+ return Handle<Map>::cast(map_data->object())->instance_type();
+ }
+ return map_data->AsMap()->instance_type();
+}
+
+namespace {
+
+bool IsReadOnlyLengthDescriptor(Isolate* isolate, Handle<Map> jsarray_map) {
+ DCHECK(!jsarray_map->is_dictionary_map());
+ DescriptorArray descriptors =
+ jsarray_map->instance_descriptors(isolate, kRelaxedLoad);
+ static_assert(
+ JSArray::kLengthOffset == JSObject::kHeaderSize,
+ "The length should be the first property on the descriptor array");
+ InternalIndex offset(0);
+ return descriptors.GetDetails(offset).IsReadOnly();
+}
+
+// Important: this predicate does not check Protectors::IsNoElementsIntact. The
+// compiler checks protectors through the compilation dependency mechanism; it
+// doesn't make sense to do that here as part of every MapData construction.
+// Callers *must* take care to take the correct dependency themselves.
+bool SupportsFastArrayIteration(JSHeapBroker* broker, Handle<Map> map) {
+ return map->instance_type() == JS_ARRAY_TYPE &&
+ IsFastElementsKind(map->elements_kind()) &&
+ map->prototype().IsJSArray() &&
+ broker->IsArrayOrObjectPrototype(broker->CanonicalPersistentHandle(
+ JSArray::cast(map->prototype())));
+}
+
+bool SupportsFastArrayResize(JSHeapBroker* broker, Handle<Map> map) {
+ return SupportsFastArrayIteration(broker, map) && map->is_extensible() &&
+ !map->is_dictionary_map() &&
+ !IsReadOnlyLengthDescriptor(broker->isolate(), map);
+}
+
+} // namespace
+
+MapData::MapData(JSHeapBroker* broker, ObjectData** storage, Handle<Map> object,
+ ObjectDataKind kind)
+ : HeapObjectData(broker, storage, object, kind),
+ elements_kind_generalizations_(broker->zone()) {
+ // This lock ensure that MapData can always be background-serialized, i.e.
+ // while the lock is held the Map object may not be modified (except in
+ // benign ways).
+ // TODO(jgruber): Consider removing this lock by being smrt.
+ JSHeapBroker::MapUpdaterGuardIfNeeded mumd_scope(
+ broker, broker->isolate()->map_updater_access());
+
+ // When background serializing the map, we can perform a lite serialization
+ // since the MapRef will read some of the Map's fields can be read directly.
+
+ // Even though MapRefs can read {instance_type} directly, other classes depend
+ // on {instance_type} being serialized.
+ instance_type_ = object->instance_type();
+ instance_size_ = object->instance_size();
+
+ // Both bit_field3 (and below bit_field) are special fields: Even though most
+ // of the individual bits inside of the bitfield could be read / written
+ // non-atomically, the bitfield itself has to use atomic relaxed accessors
+ // since some fields since can be modified in live objects.
+ // TODO(solanes, v8:7790): Assess if adding the exclusive lock in more places
+ // (e.g for set_has_non_instance_prototype) makes sense. Pros: these fields
+ // can use the non-atomic accessors. Cons: We would be acquiring an exclusive
+ // lock in more places.
+ bit_field3_ = object->relaxed_bit_field3();
+ unused_property_fields_ = object->UnusedPropertyFields();
+ is_abandoned_prototype_map_ = object->is_abandoned_prototype_map();
+ in_object_properties_ =
+ object->IsJSObjectMap() ? object->GetInObjectProperties() : 0;
+
+ // These fields are only needed to be serialized when not concurrent inlining
+ // and thus disabling direct reads.
+ if (!broker->is_concurrent_inlining()) {
+ bit_field_ = object->relaxed_bit_field();
+ bit_field2_ = object->bit_field2();
+ can_be_deprecated_ = object->NumberOfOwnDescriptors() > 0
+ ? object->CanBeDeprecated()
+ : false;
+ can_transition_ = object->CanTransition();
+ in_object_properties_start_in_words_ =
+ object->IsJSObjectMap() ? object->GetInObjectPropertiesStartInWords()
+ : 0;
+ next_free_property_index_ = object->NextFreePropertyIndex();
+ constructor_function_index_ = object->IsPrimitiveMap()
+ ? object->GetConstructorFunctionIndex()
+ : Map::kNoConstructorFunctionIndex;
+ supports_fast_array_iteration_ = SupportsFastArrayIteration(broker, object);
+ supports_fast_array_resize_ = SupportsFastArrayResize(broker, object);
+ }
+}
+
+JSFunctionData::JSFunctionData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSFunction> object)
+ : JSObjectData(broker, storage, object),
+ has_feedback_vector_(object->has_feedback_vector()),
+ has_initial_map_(object->has_prototype_slot() &&
+ object->has_initial_map()),
+ has_prototype_(object->has_prototype_slot() && object->has_prototype()),
+ PrototypeRequiresRuntimeLookup_(
+ object->PrototypeRequiresRuntimeLookup()) {}
+
+void JSFunctionData::Serialize(JSHeapBroker* broker) {
+ if (serialized_) return;
+ serialized_ = true;
+
+ TraceScope tracer(broker, this, "JSFunctionData::Serialize");
+ Handle<JSFunction> function = Handle<JSFunction>::cast(object());
+
+ DCHECK_NULL(context_);
+ DCHECK_NULL(native_context_);
+ DCHECK_NULL(initial_map_);
+ DCHECK_NULL(prototype_);
+ DCHECK_NULL(shared_);
+
+ context_ = broker->GetOrCreateData(function->context());
+ native_context_ = broker->GetOrCreateData(function->native_context());
+ shared_ = broker->GetOrCreateData(function->shared());
+
+ initial_map_ = has_initial_map()
+ ? broker->GetOrCreateData(function->initial_map())
+ : nullptr;
+ prototype_ = has_prototype() ? broker->GetOrCreateData(function->prototype())
+ : nullptr;
+
+ if (initial_map_ != nullptr) {
+ initial_map_instance_size_with_min_slack_ =
+ function->ComputeInstanceSizeWithMinSlack(broker->isolate());
+ }
+ if (initial_map_ != nullptr && !initial_map_->should_access_heap()) {
+ if (initial_map_->AsMap()->instance_type() == JS_ARRAY_TYPE) {
+ initial_map_->AsMap()->SerializeElementsKindGeneralizations(broker);
+ }
+ initial_map_->AsMap()->SerializeConstructor(broker);
+ // TODO(neis): This is currently only needed for native_context's
+ // object_function, as used by GetObjectCreateMap. If no further use sites
+ // show up, we should move this into NativeContextData::Serialize.
+ initial_map_->AsMap()->SerializePrototype(broker);
+ }
+}
+
+void JSFunctionData::SerializeCodeAndFeedback(JSHeapBroker* broker) {
+ DCHECK(serialized_);
+ if (serialized_code_and_feedback_) return;
+ serialized_code_and_feedback_ = true;
+
+ TraceScope tracer(broker, this, "JSFunctionData::SerializeCodeAndFeedback");
+ Handle<JSFunction> function = Handle<JSFunction>::cast(object());
+
+ DCHECK_NULL(feedback_cell_);
+ DCHECK_NULL(feedback_vector_);
+ DCHECK_NULL(code_);
+ if (!broker->is_concurrent_inlining()) {
+ // This is conditionalized because Code objects are never serialized now.
+ // We only need to represent the code object in serialized data when
+ // we're unable to perform direct heap accesses.
+ code_ = broker->GetOrCreateData(function->code(kAcquireLoad));
+ }
+ feedback_cell_ = broker->GetOrCreateData(function->raw_feedback_cell());
+ feedback_vector_ = has_feedback_vector()
+ ? broker->GetOrCreateData(function->feedback_vector())
+ : nullptr;
+}
+
+void MapData::SerializeElementsKindGeneralizations(JSHeapBroker* broker) {
+ if (serialized_elements_kind_generalizations_) return;
+ serialized_elements_kind_generalizations_ = true;
+
+ TraceScope tracer(broker, this,
+ "MapData::SerializeElementsKindGeneralizations");
+ DCHECK_EQ(instance_type(), JS_ARRAY_TYPE);
+ MapRef self(broker, this);
+ ElementsKind from_kind = self.elements_kind();
+ DCHECK(elements_kind_generalizations_.empty());
+ for (int i = FIRST_FAST_ELEMENTS_KIND; i <= LAST_FAST_ELEMENTS_KIND; i++) {
+ ElementsKind to_kind = static_cast<ElementsKind>(i);
+ if (IsMoreGeneralElementsKindTransition(from_kind, to_kind)) {
+ Handle<Map> target =
+ Map::AsElementsKind(broker->isolate(), self.object(), to_kind);
+ elements_kind_generalizations_.push_back(broker->GetOrCreateData(target));
+ }
+ }
+}
+
+class DescriptorArrayData : public HeapObjectData {
+ public:
+ DescriptorArrayData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<DescriptorArray> object)
+ : HeapObjectData(broker, storage, object), contents_(broker->zone()) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+
+ ObjectData* FindFieldOwner(InternalIndex descriptor_index) const {
+ return contents_.at(descriptor_index.as_int()).field_owner;
+ }
+
+ PropertyDetails GetPropertyDetails(InternalIndex descriptor_index) const {
+ return contents_.at(descriptor_index.as_int()).details;
+ }
+
+ ObjectData* GetPropertyKey(InternalIndex descriptor_index) const {
+ return contents_.at(descriptor_index.as_int()).key;
+ }
+
+ FieldIndex GetFieldIndexFor(InternalIndex descriptor_index) const {
+ return contents_.at(descriptor_index.as_int()).field_index;
+ }
+
+ ObjectData* GetFieldType(InternalIndex descriptor_index) const {
+ return contents_.at(descriptor_index.as_int()).field_type;
+ }
+
+ ObjectData* GetStrongValue(InternalIndex descriptor_index) const {
+ return contents_.at(descriptor_index.as_int()).value;
+ }
+
+ bool serialized_descriptor(InternalIndex descriptor_index) const {
+ return contents_.find(descriptor_index.as_int()) != contents_.end();
+ }
+
+ void SerializeDescriptor(JSHeapBroker* broker, Handle<Map> map,
+ InternalIndex descriptor_index);
+
+ private:
+ ZoneMap<int, PropertyDescriptor> contents_;
+};
+
+void DescriptorArrayData::SerializeDescriptor(JSHeapBroker* broker,
+ Handle<Map> map,
+ InternalIndex descriptor_index) {
+ CHECK_LT(descriptor_index.as_int(), map->NumberOfOwnDescriptors());
+ if (contents_.find(descriptor_index.as_int()) != contents_.end()) return;
+
+ Isolate* const isolate = broker->isolate();
+ auto descriptors = Handle<DescriptorArray>::cast(object());
+ CHECK_EQ(*descriptors, map->instance_descriptors(isolate));
+
+ PropertyDescriptor d;
+ d.key = broker->GetOrCreateData(descriptors->GetKey(descriptor_index));
+ MaybeObject value = descriptors->GetValue(descriptor_index);
+ HeapObject obj;
+ if (value.GetHeapObjectIfStrong(&obj)) {
+ d.value = broker->GetOrCreateData(obj);
+ }
+ d.details = descriptors->GetDetails(descriptor_index);
+ if (d.details.location() == kField) {
+ d.field_index = FieldIndex::ForDescriptor(*map, descriptor_index);
+ d.field_owner =
+ broker->GetOrCreateData(map->FindFieldOwner(isolate, descriptor_index));
+ d.field_type =
+ broker->GetOrCreateData(descriptors->GetFieldType(descriptor_index));
+ }
+ contents_[descriptor_index.as_int()] = d;
+
+ if (d.details.location() == kField && !d.field_owner->should_access_heap()) {
+ // Recurse on the owner map.
+ d.field_owner->AsMap()->SerializeOwnDescriptor(broker, descriptor_index);
+ }
+
+ TRACE(broker, "Copied descriptor " << descriptor_index.as_int() << " into "
+ << this << " (" << contents_.size()
+ << " total)");
+}
+
+class FeedbackCellData : public HeapObjectData {
+ public:
+ FeedbackCellData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<FeedbackCell> object);
+
+ ObjectData* value() const { return value_; }
+
+ private:
+ ObjectData* const value_;
+};
+
+FeedbackCellData::FeedbackCellData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<FeedbackCell> object)
+ : HeapObjectData(broker, storage, object),
+ value_(object->value().IsFeedbackVector()
+ ? broker->GetOrCreateData(object->value())
+ : nullptr) {
+ DCHECK(!broker->is_concurrent_inlining());
+}
+
+class FeedbackVectorData : public HeapObjectData {
+ public:
+ FeedbackVectorData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<FeedbackVector> object);
+
+ double invocation_count() const { return invocation_count_; }
+
+ ObjectData* shared_function_info() {
+ CHECK(serialized_);
+ return shared_function_info_;
+ }
+
+ void Serialize(JSHeapBroker* broker);
+ bool serialized() const { return serialized_; }
+ ObjectData* GetClosureFeedbackCell(JSHeapBroker* broker, int index) const;
+
+ private:
+ double const invocation_count_;
+
+ bool serialized_ = false;
+ ObjectData* shared_function_info_;
+ ZoneVector<ObjectData*> closure_feedback_cell_array_;
+};
+
+FeedbackVectorData::FeedbackVectorData(JSHeapBroker* broker,
+ ObjectData** storage,
+ Handle<FeedbackVector> object)
+ : HeapObjectData(broker, storage, object),
+ invocation_count_(object->invocation_count()),
+ closure_feedback_cell_array_(broker->zone()) {
+ DCHECK(!broker->is_concurrent_inlining());
+}
+
+ObjectData* FeedbackVectorData::GetClosureFeedbackCell(JSHeapBroker* broker,
+ int index) const {
+ CHECK_GE(index, 0);
+
+ size_t cell_array_size = closure_feedback_cell_array_.size();
+ if (!serialized_) {
+ DCHECK_EQ(cell_array_size, 0);
+ TRACE_BROKER_MISSING(broker,
+ " closure feedback cell array for vector " << this);
+ return nullptr;
+ }
+ CHECK_LT(index, cell_array_size);
+ return closure_feedback_cell_array_[index];
+}
+
+void FeedbackVectorData::Serialize(JSHeapBroker* broker) {
+ if (serialized_) return;
+ serialized_ = true;
+
+ TraceScope tracer(broker, this, "FeedbackVectorData::Serialize");
+ Handle<FeedbackVector> vector = Handle<FeedbackVector>::cast(object());
+ Handle<SharedFunctionInfo> sfi(vector->shared_function_info(),
+ broker->isolate());
+ shared_function_info_ = broker->GetOrCreateData(sfi);
+ DCHECK(closure_feedback_cell_array_.empty());
+ int length = vector->closure_feedback_cell_array().length();
+ closure_feedback_cell_array_.reserve(length);
+ for (int i = 0; i < length; ++i) {
+ Handle<FeedbackCell> cell = vector->GetClosureFeedbackCell(i);
+ ObjectData* cell_data = broker->GetOrCreateData(cell);
+ closure_feedback_cell_array_.push_back(cell_data);
+ }
+ TRACE(broker, "Copied " << length << " feedback cells");
+}
+
+class FixedArrayBaseData : public HeapObjectData {
+ public:
+ FixedArrayBaseData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<FixedArrayBase> object, ObjectDataKind kind)
+ : HeapObjectData(broker, storage, object, kind),
+ length_(object->length()) {}
+
+ int length() const { return length_; }
+
+ private:
+ int const length_;
+};
+
+class FixedArrayData : public FixedArrayBaseData {
+ public:
+ FixedArrayData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<FixedArray> object, ObjectDataKind kind)
+ : FixedArrayBaseData(broker, storage, object, kind) {}
+};
+
+class ObjectBoilerplateDescriptionData : public FixedArrayData {
+ public:
+ ObjectBoilerplateDescriptionData(
+ JSHeapBroker* broker, ObjectData** storage,
+ Handle<ObjectBoilerplateDescription> object,
+ ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject)
+ : FixedArrayData(broker, storage, object, kind), size_(object->size()) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+
+ int size() const { return size_; }
+
+ private:
+ int const size_;
+};
+
+// Only used in JSNativeContextSpecialization.
+class ScriptContextTableData : public FixedArrayData {
+ public:
+ ScriptContextTableData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<ScriptContextTable> object, ObjectDataKind kind)
+ : FixedArrayData(broker, storage, object, kind) {}
+};
+
+JSDataViewData::JSDataViewData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSDataView> object)
+ : JSObjectData(broker, storage, object),
+ byte_length_(object->byte_length()) {}
+
+JSBoundFunctionData::JSBoundFunctionData(JSHeapBroker* broker,
+ ObjectData** storage,
+ Handle<JSBoundFunction> object)
+ : JSObjectData(broker, storage, object) {}
+
+bool JSBoundFunctionData::Serialize(JSHeapBroker* broker) {
+ if (serialized_) return true;
+ if (broker->StackHasOverflowed()) return false;
+
+ TraceScope tracer(broker, this, "JSBoundFunctionData::Serialize");
+ Handle<JSBoundFunction> function = Handle<JSBoundFunction>::cast(object());
+
+ // We don't immediately set {serialized_} in order to correctly handle the
+ // case where a recursive call to this method reaches the stack limit.
+
+ DCHECK_NULL(bound_target_function_);
+ bound_target_function_ =
+ broker->GetOrCreateData(function->bound_target_function());
+ bool serialized_nested = true;
+ if (!bound_target_function_->should_access_heap()) {
+ if (bound_target_function_->IsJSBoundFunction()) {
+ serialized_nested =
+ bound_target_function_->AsJSBoundFunction()->Serialize(broker);
+ } else if (bound_target_function_->IsJSFunction()) {
+ bound_target_function_->AsJSFunction()->Serialize(broker);
+ }
+ }
+ if (!serialized_nested) {
+ // We couldn't serialize all nested bound functions due to stack
+ // overflow. Give up.
+ DCHECK(!serialized_);
+ bound_target_function_ = nullptr; // Reset to sync with serialized_.
+ return false;
+ }
+
+ serialized_ = true;
+
+ DCHECK_NULL(bound_arguments_);
+ bound_arguments_ = broker->GetOrCreateData(function->bound_arguments());
+
+ DCHECK_NULL(bound_this_);
+ bound_this_ = broker->GetOrCreateData(function->bound_this());
+
+ return true;
+}
+
+JSObjectData::JSObjectData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSObject> object)
+ : JSReceiverData(broker, storage, object,
+ ObjectDataKind::kSerializedHeapObject),
+ inobject_fields_(broker->zone()),
+ own_constant_elements_(broker->zone()),
+ own_properties_(broker->zone()) {}
+
+class FixedDoubleArrayData : public FixedArrayBaseData {
+ public:
+ FixedDoubleArrayData(
+ JSHeapBroker* broker, ObjectData** storage,
+ Handle<FixedDoubleArray> object,
+ ObjectDataKind kind = ObjectDataKind::kNeverSerializedHeapObject)
+ : FixedArrayBaseData(broker, storage, object, kind) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+};
+
+class BytecodeArrayData : public FixedArrayBaseData {
+ public:
+ int register_count() const { return register_count_; }
+ int parameter_count() const { return parameter_count_; }
+ interpreter::Register incoming_new_target_or_generator_register() const {
+ return incoming_new_target_or_generator_register_;
+ }
+
+ BytecodeArrayData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<BytecodeArray> object)
+ : FixedArrayBaseData(broker, storage, object,
+ ObjectDataKind::kNeverSerializedHeapObject),
+ register_count_(object->register_count()),
+ parameter_count_(object->parameter_count()),
+ incoming_new_target_or_generator_register_(
+ object->incoming_new_target_or_generator_register()) {}
+
+ private:
+ int const register_count_;
+ int const parameter_count_;
+ interpreter::Register const incoming_new_target_or_generator_register_;
+};
+
+class JSArrayData : public JSObjectData {
+ public:
+ JSArrayData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSArray> object);
+
+ void Serialize(JSHeapBroker* broker);
+ ObjectData* length() const {
+ CHECK(serialized_);
+ return length_;
+ }
+
+ ObjectData* GetOwnElement(
+ JSHeapBroker* broker, uint32_t index,
+ SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
+
+ private:
+ bool serialized_ = false;
+ ObjectData* length_ = nullptr;
+
+ // Elements (indexed properties) that either
+ // (1) are known to exist directly on the object, or
+ // (2) are known not to (possibly they don't exist at all).
+ // In case (2), the second pair component is nullptr.
+ ZoneVector<std::pair<uint32_t, ObjectData*>> own_elements_;
+};
+
+JSArrayData::JSArrayData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSArray> object)
+ : JSObjectData(broker, storage, object), own_elements_(broker->zone()) {}
+
+void JSArrayData::Serialize(JSHeapBroker* broker) {
+ CHECK(!broker->is_concurrent_inlining());
+
+ if (serialized_) return;
+ serialized_ = true;
+
+ TraceScope tracer(broker, this, "JSArrayData::Serialize");
+ Handle<JSArray> jsarray = Handle<JSArray>::cast(object());
+
+ DCHECK_NULL(length_);
+ length_ = broker->GetOrCreateData(jsarray->length());
+}
+
+ObjectData* JSArrayData::GetOwnElement(JSHeapBroker* broker, uint32_t index,
+ SerializationPolicy policy) {
+ for (auto const& p : own_elements_) {
+ if (p.first == index) return p.second;
+ }
+
+ if (policy == SerializationPolicy::kAssumeSerialized) {
+ TRACE_MISSING(broker, "knowledge about index " << index << " on " << this);
+ return nullptr;
+ }
+
+ base::Optional<ObjectRef> element =
+ GetOwnElementFromHeap(broker, object(), index, false);
+ ObjectData* result = element.has_value() ? element->data() : nullptr;
+ own_elements_.push_back({index, result});
+ return result;
+}
+
+class ScopeInfoData : public HeapObjectData {
+ public:
+ ScopeInfoData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<ScopeInfo> object);
+
+ int ContextLength() const { return context_length_; }
+ bool HasContextExtensionSlot() const { return has_context_extension_slot_; }
+ bool HasOuterScopeInfo() const { return has_outer_scope_info_; }
+
+ ObjectData* OuterScopeInfo() const { return outer_scope_info_; }
+ void SerializeScopeInfoChain(JSHeapBroker* broker);
+
+ private:
+ int const context_length_;
+ bool const has_context_extension_slot_;
+ bool const has_outer_scope_info_;
+
+ // Only serialized via SerializeScopeInfoChain.
+ ObjectData* outer_scope_info_;
+};
+
+ScopeInfoData::ScopeInfoData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<ScopeInfo> object)
+ : HeapObjectData(broker, storage, object),
+ context_length_(object->ContextLength()),
+ has_context_extension_slot_(object->HasContextExtensionSlot()),
+ has_outer_scope_info_(object->HasOuterScopeInfo()),
+ outer_scope_info_(nullptr) {
+ DCHECK(!broker->is_concurrent_inlining());
+}
+
+void ScopeInfoData::SerializeScopeInfoChain(JSHeapBroker* broker) {
+ if (outer_scope_info_) return;
+ if (!has_outer_scope_info_) return;
+ outer_scope_info_ = broker->GetOrCreateData(
+ Handle<ScopeInfo>::cast(object())->OuterScopeInfo());
+ if (!outer_scope_info_->should_access_heap()) {
+ outer_scope_info_->AsScopeInfo()->SerializeScopeInfoChain(broker);
+ }
+}
+
+class SharedFunctionInfoData : public HeapObjectData {
+ public:
+ SharedFunctionInfoData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<SharedFunctionInfo> object);
+
+ int builtin_id() const { return builtin_id_; }
+ int context_header_size() const { return context_header_size_; }
+ ObjectData* GetBytecodeArray() const { return GetBytecodeArray_; }
+ SharedFunctionInfo::Inlineability GetInlineability() const {
+ return inlineability_;
+ }
+ void SerializeFunctionTemplateInfo(JSHeapBroker* broker);
+ ObjectData* scope_info() const { return scope_info_; }
+ void SerializeScopeInfoChain(JSHeapBroker* broker);
+ ObjectData* function_template_info() const { return function_template_info_; }
+ ObjectData* GetTemplateObject(FeedbackSlot slot) const {
+ auto lookup_it = template_objects_.find(slot.ToInt());
+ if (lookup_it != template_objects_.cend()) {
+ return lookup_it->second;
+ }
+ return nullptr;
+ }
+ void SetTemplateObject(FeedbackSlot slot, ObjectData* object) {
+ CHECK(
+ template_objects_.insert(std::make_pair(slot.ToInt(), object)).second);
+ }
+
+#define DECL_ACCESSOR(type, name) \
+ type name() const { return name##_; }
+ BROKER_SFI_FIELDS(DECL_ACCESSOR)
+#undef DECL_ACCESSOR
+
+ private:
+ int const builtin_id_;
+ int const context_header_size_;
+ ObjectData* const GetBytecodeArray_;
+#define DECL_MEMBER(type, name) type const name##_;
+ BROKER_SFI_FIELDS(DECL_MEMBER)
+#undef DECL_MEMBER
+ SharedFunctionInfo::Inlineability const inlineability_;
+ ObjectData* function_template_info_;
+ ZoneMap<int, ObjectData*> template_objects_;
+ ObjectData* scope_info_;
+};
+
+SharedFunctionInfoData::SharedFunctionInfoData(
+ JSHeapBroker* broker, ObjectData** storage,
+ Handle<SharedFunctionInfo> object)
+ : HeapObjectData(broker, storage, object),
+ builtin_id_(object->HasBuiltinId() ? object->builtin_id()
+ : Builtins::kNoBuiltinId),
+ context_header_size_(object->scope_info().ContextHeaderLength()),
+ GetBytecodeArray_(object->HasBytecodeArray()
+ ? broker->GetOrCreateData(
+ object->GetBytecodeArray(broker->isolate()))
+ : nullptr)
+#define INIT_MEMBER(type, name) , name##_(object->name())
+ BROKER_SFI_FIELDS(INIT_MEMBER)
+#undef INIT_MEMBER
+ ,
+ inlineability_(object->GetInlineability(broker->isolate())),
+ function_template_info_(nullptr),
+ template_objects_(broker->zone()),
+ scope_info_(nullptr) {
+ DCHECK_EQ(HasBuiltinId_, builtin_id_ != Builtins::kNoBuiltinId);
+ DCHECK_EQ(HasBytecodeArray_, GetBytecodeArray_ != nullptr);
+}
+
+void SharedFunctionInfoData::SerializeFunctionTemplateInfo(
+ JSHeapBroker* broker) {
+ if (function_template_info_) return;
+ function_template_info_ = broker->GetOrCreateData(
+ Handle<SharedFunctionInfo>::cast(object())->function_data(kAcquireLoad));
+}
+
+void SharedFunctionInfoData::SerializeScopeInfoChain(JSHeapBroker* broker) {
+ if (scope_info_) return;
+ scope_info_ = broker->GetOrCreateData(
+ Handle<SharedFunctionInfo>::cast(object())->scope_info());
+ if (!scope_info_->should_access_heap()) {
+ scope_info_->AsScopeInfo()->SerializeScopeInfoChain(broker);
+ }
+}
+
+class SourceTextModuleData : public HeapObjectData {
+ public:
+ SourceTextModuleData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<SourceTextModule> object);
+ void Serialize(JSHeapBroker* broker);
+
+ ObjectData* GetCell(JSHeapBroker* broker, int cell_index) const;
+ ObjectData* GetImportMeta(JSHeapBroker* broker) const;
+
+ private:
+ bool serialized_ = false;
+ ZoneVector<ObjectData*> imports_;
+ ZoneVector<ObjectData*> exports_;
+ ObjectData* import_meta_;
+};
+
+SourceTextModuleData::SourceTextModuleData(JSHeapBroker* broker,
+ ObjectData** storage,
+ Handle<SourceTextModule> object)
+ : HeapObjectData(broker, storage, object),
+ imports_(broker->zone()),
+ exports_(broker->zone()),
+ import_meta_(nullptr) {}
+
+ObjectData* SourceTextModuleData::GetCell(JSHeapBroker* broker,
+ int cell_index) const {
+ if (!serialized_) {
+ DCHECK(imports_.empty());
+ TRACE_BROKER_MISSING(broker,
+ "module cell " << cell_index << " on " << this);
+ return nullptr;
+ }
+ ObjectData* cell;
+ switch (SourceTextModuleDescriptor::GetCellIndexKind(cell_index)) {
+ case SourceTextModuleDescriptor::kImport:
+ cell = imports_.at(SourceTextModule::ImportIndex(cell_index));
+ break;
+ case SourceTextModuleDescriptor::kExport:
+ cell = exports_.at(SourceTextModule::ExportIndex(cell_index));
+ break;
+ case SourceTextModuleDescriptor::kInvalid:
+ UNREACHABLE();
+ }
+ CHECK_NOT_NULL(cell);
+ return cell;
+}
+
+ObjectData* SourceTextModuleData::GetImportMeta(JSHeapBroker* broker) const {
+ CHECK(serialized_);
+ return import_meta_;
+}
+
+void SourceTextModuleData::Serialize(JSHeapBroker* broker) {
+ if (serialized_) return;
+ serialized_ = true;
+
+ TraceScope tracer(broker, this, "SourceTextModuleData::Serialize");
+ Handle<SourceTextModule> module = Handle<SourceTextModule>::cast(object());
+
+ // TODO(neis): We could be smarter and only serialize the cells we care about.
+ // TODO(neis): Define a helper for serializing a FixedArray into a ZoneVector.
+
+ DCHECK(imports_.empty());
+ Handle<FixedArray> imports(module->regular_imports(), broker->isolate());
+ int const imports_length = imports->length();
+ imports_.reserve(imports_length);
+ for (int i = 0; i < imports_length; ++i) {
+ imports_.push_back(broker->GetOrCreateData(imports->get(i)));
+ }
+ TRACE(broker, "Copied " << imports_.size() << " imports");
+
+ DCHECK(exports_.empty());
+ Handle<FixedArray> exports(module->regular_exports(), broker->isolate());
+ int const exports_length = exports->length();
+ exports_.reserve(exports_length);
+ for (int i = 0; i < exports_length; ++i) {
+ exports_.push_back(broker->GetOrCreateData(exports->get(i)));
+ }
+ TRACE(broker, "Copied " << exports_.size() << " exports");
+
+ DCHECK_NULL(import_meta_);
+ import_meta_ = broker->GetOrCreateData(module->import_meta(kAcquireLoad));
+ TRACE(broker, "Copied import_meta");
+}
+
+class CellData : public HeapObjectData {
+ public:
+ CellData(JSHeapBroker* broker, ObjectData** storage, Handle<Cell> object)
+ : HeapObjectData(broker, storage, object) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+};
+
+class JSGlobalObjectData : public JSObjectData {
+ public:
+ JSGlobalObjectData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSGlobalObject> object);
+ bool IsDetached() const { return is_detached_; }
+
+ ObjectData* GetPropertyCell(
+ JSHeapBroker* broker, ObjectData* name,
+ SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
+
+ private:
+ bool const is_detached_;
+
+ // Properties that either
+ // (1) are known to exist as property cells on the global object, or
+ // (2) are known not to (possibly they don't exist at all).
+ // In case (2), the second pair component is nullptr.
+ ZoneVector<std::pair<ObjectData*, ObjectData*>> properties_;
+};
+
+JSGlobalObjectData::JSGlobalObjectData(JSHeapBroker* broker,
+ ObjectData** storage,
+ Handle<JSGlobalObject> object)
+ : JSObjectData(broker, storage, object),
+ is_detached_(object->IsDetached()),
+ properties_(broker->zone()) {}
+
+class JSGlobalProxyData : public JSObjectData {
+ public:
+ JSGlobalProxyData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSGlobalProxy> object);
+};
+
+JSGlobalProxyData::JSGlobalProxyData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<JSGlobalProxy> object)
+ : JSObjectData(broker, storage, object) {}
+
+namespace {
+
+base::Optional<PropertyCellRef> GetPropertyCellFromHeap(JSHeapBroker* broker,
+ Handle<Name> name) {
+ LookupIterator it(
+ broker->isolate(),
+ handle(broker->target_native_context().object()->global_object(),
+ broker->isolate()),
+ name, LookupIterator::OWN);
+ it.TryLookupCachedProperty();
+ if (it.state() == LookupIterator::DATA &&
+ it.GetHolder<JSObject>()->IsJSGlobalObject()) {
+ return TryMakeRef(broker, it.GetPropertyCell());
+ }
+ return base::nullopt;
+}
+
+} // namespace
+
+ObjectData* JSGlobalObjectData::GetPropertyCell(JSHeapBroker* broker,
+ ObjectData* name,
+ SerializationPolicy policy) {
+ CHECK_NOT_NULL(name);
+ for (auto const& p : properties_) {
+ if (p.first == name) return p.second;
+ }
+
+ if (policy == SerializationPolicy::kAssumeSerialized) {
+ TRACE_MISSING(broker, "knowledge about global property " << name);
+ return nullptr;
+ }
+
+ ObjectData* result = nullptr;
+ base::Optional<PropertyCellRef> cell =
+ GetPropertyCellFromHeap(broker, Handle<Name>::cast(name->object()));
+ if (cell.has_value()) {
+ result = cell->data();
+ if (!result->should_access_heap()) {
+ result->AsPropertyCell()->Serialize(broker);
+ }
+ }
+ properties_.push_back({name, result});
+ return result;
+}
+
+class TemplateObjectDescriptionData : public HeapObjectData {
+ public:
+ TemplateObjectDescriptionData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<TemplateObjectDescription> object)
+ : HeapObjectData(broker, storage, object) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+};
+
+class CodeData : public HeapObjectData {
+ public:
+ CodeData(JSHeapBroker* broker, ObjectData** storage, Handle<Code> object)
+ : HeapObjectData(broker, storage, object),
+ inlined_bytecode_size_(object->inlined_bytecode_size() > 0 &&
+ !object->marked_for_deoptimization()
+ ? object->inlined_bytecode_size()
+ : 0) {
+ DCHECK(!broker->is_concurrent_inlining());
+ }
+
+ unsigned inlined_bytecode_size() const { return inlined_bytecode_size_; }
+
+ private:
+ unsigned const inlined_bytecode_size_;
+};
+
+#define DEFINE_IS(Name, ...) \
+ bool ObjectData::Is##Name() const { \
+ if (should_access_heap()) { \
+ return object()->Is##Name(); \
+ } \
+ if (is_smi()) return false; \
+ InstanceType instance_type = \
+ static_cast<const HeapObjectData*>(this)->GetMapInstanceType(); \
+ return InstanceTypeChecker::Is##Name(instance_type); \
+ }
+HEAP_BROKER_OBJECT_LIST(DEFINE_IS)
+#undef DEFINE_IS
+
+#define DEFINE_AS(Name, Kind) \
+ Name##Data* ObjectData::As##Name() { \
+ CHECK(Is##Name()); \
+ CHECK(kind_ == kSerializedHeapObject || \
+ kind_ == kBackgroundSerializedHeapObject); \
+ return static_cast<Name##Data*>(this); \
+ }
+HEAP_BROKER_OBJECT_LIST(DEFINE_AS)
+#undef DEFINE_AS
+
+ObjectData* JSObjectData::GetInobjectField(int property_index) const {
+ CHECK_LT(static_cast<size_t>(property_index), inobject_fields_.size());
+ return inobject_fields_[property_index];
+}
+
+bool JSObjectData::cow_or_empty_elements_tenured() const {
+ return cow_or_empty_elements_tenured_;
+}
+
+ObjectData* JSObjectData::elements() const {
+ CHECK(serialized_elements_);
+ return elements_;
+}
+
+void JSObjectData::SerializeAsBoilerplate(JSHeapBroker* broker) {
+ SerializeRecursiveAsBoilerplate(broker, kMaxFastLiteralDepth);
+}
+
+void JSObjectData::SerializeElements(JSHeapBroker* broker) {
+ if (serialized_elements_) return;
+ serialized_elements_ = true;
+
+ TraceScope tracer(broker, this, "JSObjectData::SerializeElements");
+ Handle<JSObject> boilerplate = Handle<JSObject>::cast(object());
+ Handle<FixedArrayBase> elements_object(boilerplate->elements(),
+ broker->isolate());
+ DCHECK_NULL(elements_);
+ elements_ = broker->GetOrCreateData(elements_object);
+ DCHECK(elements_->IsFixedArrayBase());
+}
+
+void MapData::SerializeConstructor(JSHeapBroker* broker) {
+ if (serialized_constructor_) return;
+ serialized_constructor_ = true;
+
+ TraceScope tracer(broker, this, "MapData::SerializeConstructor");
+ Handle<Map> map = Handle<Map>::cast(object());
+ DCHECK(!map->IsContextMap());
+ DCHECK_NULL(constructor_);
+ constructor_ = broker->GetOrCreateData(map->GetConstructor());
+}
+
+void MapData::SerializeBackPointer(JSHeapBroker* broker) {
+ if (serialized_backpointer_) return;
+ serialized_backpointer_ = true;
+
+ TraceScope tracer(broker, this, "MapData::SerializeBackPointer");
+ Handle<Map> map = Handle<Map>::cast(object());
+ DCHECK_NULL(backpointer_);
+ DCHECK(!map->IsContextMap());
+ backpointer_ = broker->GetOrCreateData(map->GetBackPointer());
+}
+
+bool MapData::TrySerializePrototype(JSHeapBroker* broker) {
+ if (serialized_prototype_) return true;
+
+ TraceScope tracer(broker, this, "MapData::SerializePrototype");
+ Handle<Map> map = Handle<Map>::cast(object());
+ DCHECK_NULL(prototype_);
+ prototype_ = broker->TryGetOrCreateData(map->prototype());
+ if (prototype_ == nullptr) return false;
+ serialized_prototype_ = true;
+ return true;
+}
+
+void MapData::SerializeOwnDescriptors(JSHeapBroker* broker) {
+ if (serialized_own_descriptors_) return;
+ serialized_own_descriptors_ = true;
+
+ TraceScope tracer(broker, this, "MapData::SerializeOwnDescriptors");
+ Handle<Map> map = Handle<Map>::cast(object());
+
+ for (InternalIndex i : map->IterateOwnDescriptors()) {
+ SerializeOwnDescriptor(broker, i);
+ }
+}
+
+bool MapData::TrySerializeOwnDescriptor(JSHeapBroker* broker,
+ InternalIndex descriptor_index) {
+ TraceScope tracer(broker, this, "MapData::SerializeOwnDescriptor");
+ Handle<Map> map = Handle<Map>::cast(object());
+ Isolate* isolate = broker->isolate();
+
+ if (instance_descriptors_ == nullptr) {
+ instance_descriptors_ =
+ broker->TryGetOrCreateData(map->instance_descriptors(kAcquireLoad));
+ if (instance_descriptors_ == nullptr) return false;
+ }
+
+ if (instance_descriptors()->should_access_heap()) {
+ // When accessing the fields concurrently, we still have to recurse on the
+ // owner map if it is different than the current map. This is because
+ // {instance_descriptors_} gets set on SerializeOwnDescriptor and otherwise
+ // we risk the field owner having a null {instance_descriptors_}.
+ Handle<DescriptorArray> descriptors = broker->CanonicalPersistentHandle(
+ map->instance_descriptors(kAcquireLoad));
+ if (descriptors->GetDetails(descriptor_index).location() == kField) {
+ Handle<Map> owner = broker->CanonicalPersistentHandle(
+ map->FindFieldOwner(isolate, descriptor_index));
+ if (!owner.equals(map)) {
+ ObjectData* data = broker->TryGetOrCreateData(owner);
+ if (data == nullptr) return false;
+ data->AsMap()->SerializeOwnDescriptor(broker, descriptor_index);
+ }
+ }
+ } else {
+ DescriptorArrayData* descriptors =
+ instance_descriptors()->AsDescriptorArray();
+ descriptors->SerializeDescriptor(broker, map, descriptor_index);
+ }
+
+ return true;
+}
+
+void MapData::SerializeRootMap(JSHeapBroker* broker) {
+ if (serialized_root_map_) return;
+ serialized_root_map_ = true;
+
+ TraceScope tracer(broker, this, "MapData::SerializeRootMap");
+ Handle<Map> map = Handle<Map>::cast(object());
+ DCHECK_NULL(root_map_);
+ root_map_ = broker->GetOrCreateData(map->FindRootMap(broker->isolate()));
+}
+
+ObjectData* MapData::FindRootMap() const { return root_map_; }
+
+void JSObjectData::SerializeRecursiveAsBoilerplate(JSHeapBroker* broker,
+ int depth) {
+ if (serialized_as_boilerplate_) return;
+ serialized_as_boilerplate_ = true;
+
+ TraceScope tracer(broker, this,
+ "JSObjectData::SerializeRecursiveAsBoilerplate");
+ Handle<JSObject> boilerplate = Handle<JSObject>::cast(object());
+
+ // We only serialize boilerplates that pass the IsInlinableFastLiteral
+ // check, so we only do a check on the depth here.
+ CHECK_GT(depth, 0);
+
+ // Serialize the elements.
+ Isolate* const isolate = broker->isolate();
+ Handle<FixedArrayBase> elements_object(boilerplate->elements(), isolate);
+
+ // Boilerplates need special serialization - we need to make sure COW arrays
+ // are tenured. Boilerplate objects should only be reachable from their
+ // allocation site, so it is safe to assume that the elements have not been
+ // serialized yet.
+
+ bool const empty_or_cow =
+ elements_object->length() == 0 ||
+ elements_object->map() == ReadOnlyRoots(isolate).fixed_cow_array_map();
+ if (empty_or_cow) {
+ // We need to make sure copy-on-write elements are tenured.
+ if (ObjectInYoungGeneration(*elements_object)) {
+ elements_object = isolate->factory()->CopyAndTenureFixedCOWArray(
+ Handle<FixedArray>::cast(elements_object));
+ boilerplate->set_elements(*elements_object);
+ }
+ cow_or_empty_elements_tenured_ = true;
+ }
+
+ DCHECK_NULL(elements_);
+ DCHECK(!serialized_elements_);
+ serialized_elements_ = true;
+ elements_ = broker->GetOrCreateData(elements_object);
+ DCHECK(elements_->IsFixedArrayBase());
+
+ if (empty_or_cow || elements_->should_access_heap()) {
+ // No need to do anything here. Empty or copy-on-write elements
+ // do not need to be serialized because we only need to store the elements
+ // reference to the allocated object.
+ } else if (boilerplate->HasSmiOrObjectElements()) {
+ Handle<FixedArray> fast_elements =
+ Handle<FixedArray>::cast(elements_object);
+ int length = elements_object->length();
+ for (int i = 0; i < length; i++) {
+ Handle<Object> value(fast_elements->get(i), isolate);
+ if (value->IsJSObject()) {
+ ObjectData* value_data = broker->GetOrCreateData(value);
+ if (!value_data->should_access_heap()) {
+ value_data->AsJSObject()->SerializeRecursiveAsBoilerplate(broker,
+ depth - 1);
+ }
+ }
+ }
+ } else {
+ CHECK(boilerplate->HasDoubleElements());
+ CHECK_LE(elements_object->Size(), kMaxRegularHeapObjectSize);
+ }
+
+ // TODO(turbofan): Do we want to support out-of-object properties?
+ CHECK(boilerplate->HasFastProperties() &&
+ boilerplate->property_array().length() == 0);
+ CHECK_EQ(inobject_fields_.size(), 0u);
+
+ // Check the in-object properties.
+ Handle<DescriptorArray> descriptors(
+ boilerplate->map().instance_descriptors(isolate), isolate);
+ for (InternalIndex i : boilerplate->map().IterateOwnDescriptors()) {
+ PropertyDetails details = descriptors->GetDetails(i);
+ if (details.location() != kField) continue;
+ DCHECK_EQ(kData, details.kind());
+
+ FieldIndex field_index = FieldIndex::ForDescriptor(boilerplate->map(), i);
+ // Make sure {field_index} agrees with {inobject_properties} on the index of
+ // this field.
+ DCHECK_EQ(field_index.property_index(),
+ static_cast<int>(inobject_fields_.size()));
+ Handle<Object> value(boilerplate->RawFastPropertyAt(field_index), isolate);
+ // In case of double fields we use a sentinel NaN value to mark
+ // uninitialized fields. A boilerplate value with such a field may migrate
+ // from its double to a tagged representation. The sentinel value carries
+ // no special meaning when it occurs in a heap number, so we would like to
+ // recover the uninitialized value. We check for the sentinel here,
+ // specifically, since migrations might have been triggered as part of
+ // boilerplate serialization.
+ if (!details.representation().IsDouble() && value->IsHeapNumber() &&
+ HeapNumber::cast(*value).value_as_bits() == kHoleNanInt64) {
+ value = isolate->factory()->uninitialized_value();
+ }
+ ObjectData* value_data = broker->GetOrCreateData(value);
+ if (value_data->IsJSObject() && !value_data->should_access_heap()) {
+ value_data->AsJSObject()->SerializeRecursiveAsBoilerplate(broker,
+ depth - 1);
+ }
+ inobject_fields_.push_back(value_data);
+ }
+ TRACE(broker, "Copied " << inobject_fields_.size() << " in-object fields");
+
+ if (!map()->should_access_heap()) {
+ map()->AsMap()->SerializeOwnDescriptors(broker);
+ }
+
+ if (IsJSArray() && !broker->is_concurrent_inlining()) {
+ AsJSArray()->Serialize(broker);
+ }
+}
+
+void RegExpBoilerplateDescriptionData::Serialize(JSHeapBroker* broker) {
+ if (serialized_) return; // Only serialize once.
+ serialized_ = true;
+
+ TraceScope tracer(broker, this,
+ "RegExpBoilerplateDescriptionData::Serialize");
+ auto boilerplate = Handle<RegExpBoilerplateDescription>::cast(object());
+
+ data_ = broker->GetOrCreateData(boilerplate->data());
+ source_ = broker->GetOrCreateData(boilerplate->source());
+ flags_ = boilerplate->flags();
+}
+
+#ifdef DEBUG
+bool ObjectRef::IsNeverSerializedHeapObject() const {
+ return data_->kind() == ObjectDataKind::kNeverSerializedHeapObject;
+}
+#endif // DEBUG
+
+bool ObjectRef::equals(const ObjectRef& other) const {
+#ifdef DEBUG
+ if (broker()->mode() == JSHeapBroker::kSerialized &&
+ data_->used_status == ObjectData::Usage::kUnused) {
+ data_->used_status = ObjectData::Usage::kOnlyIdentityUsed;
+ }
+#endif // DEBUG
+ // TODO(jgruber): Consider going back to reference-equality on data_ once
+ // ObjectData objects are guaranteed to be canonicalized (see also:
+ // ClearReconstructibleData).
+ return data_->object().is_identical_to(other.data_->object());
+}
+
+Isolate* ObjectRef::isolate() const { return broker()->isolate(); }
+
+ContextRef ContextRef::previous(size_t* depth,
+ SerializationPolicy policy) const {
+ DCHECK_NOT_NULL(depth);
+
+ if (data_->should_access_heap()) {
+ Context current = *object();
+ while (*depth != 0 && current.unchecked_previous().IsContext()) {
+ current = Context::cast(current.unchecked_previous());
+ (*depth)--;
+ }
+ return MakeRef(broker(), current);
+ }
+
+ if (*depth == 0) return *this;
+
+ ObjectData* previous_data = data()->AsContext()->previous(broker(), policy);
+ if (previous_data == nullptr || !previous_data->IsContext()) return *this;
+
+ *depth = *depth - 1;
+ return ContextRef(broker(), previous_data).previous(depth, policy);
+}
+
+base::Optional<ObjectRef> ContextRef::get(int index,
+ SerializationPolicy policy) const {
+ CHECK_LE(0, index);
+ if (data_->should_access_heap()) {
+ if (index >= object()->length()) return {};
+ return TryMakeRef(broker(), object()->get(index));
+ }
+ ObjectData* optional_slot =
+ data()->AsContext()->GetSlot(broker(), index, policy);
+ if (optional_slot == nullptr) return {};
+ return ObjectRef(broker(), optional_slot);
+}
+
+SourceTextModuleRef ContextRef::GetModule(SerializationPolicy policy) const {
+ ContextRef current = *this;
+ while (current.map().instance_type() != MODULE_CONTEXT_TYPE) {
+ size_t depth = 1;
+ current = current.previous(&depth, policy);
+ CHECK_EQ(depth, 0);
+ }
+ return current.get(Context::EXTENSION_INDEX, policy)
+ .value()
+ .AsSourceTextModule();
+}
+
+#ifdef DEBUG
+void JSHeapBroker::PrintRefsAnalysis() const {
+ // Usage counts
+ size_t used_total = 0, unused_total = 0, identity_used_total = 0;
+ for (RefsMap::Entry* ref = refs_->Start(); ref != nullptr;
+ ref = refs_->Next(ref)) {
+ switch (ref->value->used_status) {
+ case ObjectData::Usage::kUnused:
+ ++unused_total;
+ break;
+ case ObjectData::Usage::kOnlyIdentityUsed:
+ ++identity_used_total;
+ break;
+ case ObjectData::Usage::kDataUsed:
+ ++used_total;
+ break;
+ }
+ }
+
+ // Ref types analysis
+ TRACE_BROKER_MEMORY(
+ this, "Refs: " << refs_->occupancy() << "; data used: " << used_total
+ << "; only identity used: " << identity_used_total
+ << "; unused: " << unused_total);
+ size_t used_smis = 0, unused_smis = 0, identity_used_smis = 0;
+ size_t used[LAST_TYPE + 1] = {0};
+ size_t unused[LAST_TYPE + 1] = {0};
+ size_t identity_used[LAST_TYPE + 1] = {0};
+ for (RefsMap::Entry* ref = refs_->Start(); ref != nullptr;
+ ref = refs_->Next(ref)) {
+ if (ref->value->is_smi()) {
+ switch (ref->value->used_status) {
+ case ObjectData::Usage::kUnused:
+ ++unused_smis;
+ break;
+ case ObjectData::Usage::kOnlyIdentityUsed:
+ ++identity_used_smis;
+ break;
+ case ObjectData::Usage::kDataUsed:
+ ++used_smis;
+ break;
+ }
+ } else {
+ InstanceType instance_type;
+ if (ref->value->should_access_heap()) {
+ instance_type = Handle<HeapObject>::cast(ref->value->object())
+ ->map()
+ .instance_type();
+ } else {
+ instance_type = ref->value->AsHeapObject()->GetMapInstanceType();
+ }
+ CHECK_LE(FIRST_TYPE, instance_type);
+ CHECK_LE(instance_type, LAST_TYPE);
+ switch (ref->value->used_status) {
+ case ObjectData::Usage::kUnused:
+ ++unused[instance_type];
+ break;
+ case ObjectData::Usage::kOnlyIdentityUsed:
+ ++identity_used[instance_type];
+ break;
+ case ObjectData::Usage::kDataUsed:
+ ++used[instance_type];
+ break;
+ }
+ }
+ }
+
+ TRACE_BROKER_MEMORY(
+ this, "Smis: " << used_smis + identity_used_smis + unused_smis
+ << "; data used: " << used_smis << "; only identity used: "
+ << identity_used_smis << "; unused: " << unused_smis);
+ for (uint16_t i = FIRST_TYPE; i <= LAST_TYPE; ++i) {
+ size_t total = used[i] + identity_used[i] + unused[i];
+ if (total == 0) continue;
+ TRACE_BROKER_MEMORY(
+ this, InstanceType(i) << ": " << total << "; data used: " << used[i]
+ << "; only identity used: " << identity_used[i]
+ << "; unused: " << unused[i]);
+ }
+}
+#endif // DEBUG
+
+void JSHeapBroker::InitializeAndStartSerializing() {
+ TraceScope tracer(this, "JSHeapBroker::InitializeAndStartSerializing");
+
+ CHECK_EQ(mode_, kDisabled);
+ mode_ = kSerializing;
+
+ // Throw away the dummy data that we created while disabled.
+ refs_->Clear();
+ refs_ =
+ zone()->New<RefsMap>(kInitialRefsBucketCount, AddressMatcher(), zone());
+
+ CollectArrayAndObjectPrototypes();
+
+ SetTargetNativeContextRef(target_native_context().object());
+ target_native_context().Serialize();
+ if (!is_concurrent_inlining()) {
+ // Perform full native context serialization now if we can't do it later on
+ // the background thread.
+ target_native_context().SerializeOnBackground();
+ }
+
+ Factory* const f = isolate()->factory();
+ if (!is_concurrent_inlining()) {
+ ObjectData* data;
+ data = GetOrCreateData(f->array_buffer_detaching_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ data = GetOrCreateData(f->array_constructor_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ data = GetOrCreateData(f->array_iterator_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ data = GetOrCreateData(f->array_species_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ data = GetOrCreateData(f->no_elements_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ data = GetOrCreateData(f->promise_hook_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ data = GetOrCreateData(f->promise_species_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ data = GetOrCreateData(f->promise_then_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ data = GetOrCreateData(f->string_length_protector());
+ if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
+ }
+ GetOrCreateData(f->many_closures_cell());
+ GetOrCreateData(CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
+ ArgvMode::kStack, true));
+
+ TRACE(this, "Finished serializing standard objects");
+}
+
+namespace {
+
+template <RefSerializationKind Kind, class DataT, class ObjectT>
+struct CreateDataFunctor {
+ bool operator()(JSHeapBroker* broker, RefsMap* refs,
+ Handle<Object> object, RefsMap::Entry** entry_out,
+ ObjectData** object_data_out) {
+ USE(broker, refs, object, entry_out, object_data_out);
+ UNREACHABLE();
+ }
+};
+
+template <class DataT, class ObjectT>
+struct CreateDataFunctor<RefSerializationKind::kSerialized, DataT, ObjectT> {
+ bool operator()(JSHeapBroker* broker, RefsMap* refs,
+ Handle<Object> object, RefsMap::Entry** entry_out,
+ ObjectData** object_data_out) {
+ if (broker->mode() == JSHeapBroker::kSerializing) {
+ RefsMap::Entry* entry = refs->LookupOrInsert(object.address());
+ *object_data_out = broker->zone()->New<DataT>(
+ broker, &entry->value, Handle<ObjectT>::cast(object));
+ *entry_out = entry;
+ return true;
+ }
+ return false;
+ }
+};
+
+template <class DataT, class ObjectT>
+struct CreateDataFunctor<RefSerializationKind::kBackgroundSerialized, DataT,
+ ObjectT> {
+ bool operator()(JSHeapBroker* broker, RefsMap* refs,
+ Handle<Object> object, RefsMap::Entry** entry_out,
+ ObjectData** object_data_out) {
+ if (broker->is_concurrent_inlining()) {
+ RefsMap::Entry* entry = refs->LookupOrInsert(object.address());
+ *object_data_out = broker->zone()->New<DataT>(
+ broker, &entry->value, Handle<ObjectT>::cast(object),
+ kBackgroundSerializedHeapObject);
+ *entry_out = entry;
+ return true;
+ } else if (broker->mode() == JSHeapBroker::kSerializing) {
+ RefsMap::Entry* entry = refs->LookupOrInsert(object.address());
+ *object_data_out = broker->zone()->New<DataT>(
+ broker, &entry->value, Handle<ObjectT>::cast(object),
+ ObjectDataKind::kSerializedHeapObject);
+ *entry_out = entry;
+ return true;
+ }
+ return false;
+ }
+};
+
+template <class DataT, class ObjectT>
+struct CreateDataFunctor<RefSerializationKind::kNeverSerialized, DataT,
+ ObjectT> {
+ bool operator()(JSHeapBroker* broker, RefsMap* refs, Handle<Object> object,
+ RefsMap::Entry** entry_out, ObjectData** object_data_out) {
+ // TODO(solanes, v8:10866): Remove the `(mode() == kSerializing)` case
+ // below when all classes skip serialization. Same for similar spots if we
+ // end up keeping them.
+ if (broker->is_concurrent_inlining()) {
+ RefsMap::Entry* entry = refs->LookupOrInsert(object.address());
+ *object_data_out = broker->zone()->New<ObjectData>(
+ broker, &entry->value, object, kNeverSerializedHeapObject);
+ *entry_out = entry;
+ return true;
+ } else if (broker->mode() == JSHeapBroker::kSerializing) {
+ RefsMap::Entry* entry = refs->LookupOrInsert(object.address());
+ *object_data_out = broker->zone()->New<DataT>(
+ broker, &entry->value, Handle<ObjectT>::cast(object));
+ *entry_out = entry;
+ return true;
+ }
+ return false;
+ }
+};
+
+} // namespace
+
+void JSHeapBroker::ClearReconstructibleData() {
+ RefsMap::Entry* p = refs_->Start();
+ while (p != nullptr) {
+ Address key = p->key;
+ ObjectData* value = p->value;
+ p = refs_->Next(p);
+ const auto kind = RefSerializationKindOf(value);
+ if (kind == RefSerializationKind::kNeverSerialized ||
+ kind == RefSerializationKind::kBackgroundSerialized) {
+ if (value->IsMap() &&
+ value->kind() == ObjectDataKind::kBackgroundSerializedHeapObject &&
+ value->AsMap()->has_extra_serialized_data()) {
+ continue;
+ }
+ // Can be reconstructed from the background thread.
+ CHECK_NOT_NULL(refs_->Remove(key));
+ }
+ }
+}
+
+ObjectData* JSHeapBroker::TryGetOrCreateData(Handle<Object> object,
+ GetOrCreateDataFlags flags) {
+ RefsMap::Entry* entry = refs_->Lookup(object.address());
+ if (entry != nullptr) return entry->value;
+
+ if (mode() == JSHeapBroker::kDisabled) {
+ entry = refs_->LookupOrInsert(object.address());
+ ObjectData** storage = &entry->value;
+ if (*storage == nullptr) {
+ entry->value = zone()->New<ObjectData>(
+ this, storage, object,
+ object->IsSmi() ? kSmi : kUnserializedHeapObject);
+ }
+ return *storage;
+ }
+
+ CHECK(mode() == JSHeapBroker::kSerializing ||
+ mode() == JSHeapBroker::kSerialized);
+
+ ObjectData* object_data;
+ if (object->IsSmi()) {
+ entry = refs_->LookupOrInsert(object.address());
+ return zone()->New<ObjectData>(this, &entry->value, object, kSmi);
+ }
+
+ DCHECK(!object->IsSmi());
+
+ const bool crash_on_error = (flags & kCrashOnError) != 0;
+
+ // TODO(jgruber): Remove this flag check (and the flag) once TSAN failures
+ // are fixed.
+ // See also: crbug.com/v8/11779
+ if (FLAG_turbo_concurrent_inlining_check_ispendingallocation) {
+ if ((flags & kAssumeMemoryFence) == 0 &&
+ ObjectMayBeUninitialized(HeapObject::cast(*object))) {
+ TRACE_BROKER_MISSING(this, "Object may be uninitialized " << *object);
+ CHECK_WITH_MSG(!crash_on_error, "Ref construction failed");
+ return nullptr;
+ }
+ }
+
+ if (IsReadOnlyHeapObjectForCompiler(HeapObject::cast(*object))) {
+ entry = refs_->LookupOrInsert(object.address());
+ return zone()->New<ObjectData>(this, &entry->value, object,
+ kUnserializedReadOnlyHeapObject);
+ }
+
+#define CREATE_DATA(Name, Kind) \
+ if (object->Is##Name()) { \
+ CreateDataFunctor<Kind, Name##Data, Name> f; \
+ if (!f(this, refs_, object, &entry, &object_data)) { \
+ CHECK_WITH_MSG(!crash_on_error, "Ref construction failed"); \
+ return nullptr; \
+ } \
+ /* NOLINTNEXTLINE(readability/braces) */ \
+ } else
+ HEAP_BROKER_OBJECT_LIST(CREATE_DATA)
+#undef CREATE_DATA
+ {
+ UNREACHABLE();
+ }
+ // At this point the entry pointer is not guaranteed to be valid as
+ // the refs_ hash hable could be resized by one of the constructors above.
+ DCHECK_EQ(object_data, refs_->Lookup(object.address())->value);
+ return object_data;
+}
+
+#define DEFINE_IS_AND_AS(Name, ...) \
+ bool ObjectRef::Is##Name() const { return data()->Is##Name(); } \
+ Name##Ref ObjectRef::As##Name() const { \
+ DCHECK(Is##Name()); \
+ return Name##Ref(broker(), data()); \
+ }
+HEAP_BROKER_OBJECT_LIST(DEFINE_IS_AND_AS)
+#undef DEFINE_IS_AND_AS
+
+bool ObjectRef::IsSmi() const { return data()->is_smi(); }
+
+int ObjectRef::AsSmi() const {
+ DCHECK(IsSmi());
+ // Handle-dereference is always allowed for Handle<Smi>.
+ return Handle<Smi>::cast(object())->value();
+}
+
+base::Optional<MapRef> JSObjectRef::GetObjectCreateMap() const {
+ if (data_->should_access_heap()) {
+ Handle<Map> instance_map;
+ if (Map::TryGetObjectCreateMap(broker()->isolate(), object())
+ .ToHandle(&instance_map)) {
+ return MakeRef(broker(), instance_map);
+ } else {
+ return base::Optional<MapRef>();
+ }
+ }
+ ObjectData* map_data = data()->AsJSObject()->object_create_map(broker());
+ if (map_data == nullptr) return base::Optional<MapRef>();
+ if (map_data->should_access_heap()) {
+ return MakeRef(broker(), Handle<Map>::cast(map_data->object()));
+ }
+ return MapRef(broker(), map_data->AsMap());
+}
+
+#define DEF_TESTER(Type, ...) \
+ bool MapRef::Is##Type##Map() const { \
+ return InstanceTypeChecker::Is##Type(instance_type()); \
+ }
+INSTANCE_TYPE_CHECKERS(DEF_TESTER)
+#undef DEF_TESTER
+
+base::Optional<MapRef> MapRef::AsElementsKind(ElementsKind kind) const {
+ if (data_->should_access_heap()) {
+ return MakeRef(broker(),
+ Map::AsElementsKind(broker()->isolate(), object(), kind));
+ }
+ if (kind == elements_kind()) return *this;
+ const ZoneVector<ObjectData*>& elements_kind_generalizations =
+ data()->AsMap()->elements_kind_generalizations();
+ for (auto data : elements_kind_generalizations) {
+ MapRef map(broker(), data);
+ if (map.elements_kind() == kind) return map;
+ }
+ return base::Optional<MapRef>();
+}
+
+void MapRef::SerializeForElementLoad() {
+ if (data()->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsMap()->SerializeForElementLoad(broker());
+}
+
+void MapRef::SerializeForElementStore() {
+ if (data()->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsMap()->SerializeForElementStore(broker());
+}
+
+void MapData::SerializeForElementLoad(JSHeapBroker* broker) {
+ if (serialized_for_element_load_) return;
+ serialized_for_element_load_ = true;
+
+ TraceScope tracer(broker, this, "MapData::SerializeForElementLoad");
+ SerializePrototype(broker);
+}
+
+void MapData::SerializeForElementStore(JSHeapBroker* broker) {
+ if (serialized_for_element_store_) return;
+ serialized_for_element_store_ = true;
+
+ TraceScope tracer(broker, this, "MapData::SerializeForElementStore");
+ // TODO(solanes, v8:7790): This should use MapData methods rather than
+ // constructing MapRefs, but it involves non-trivial refactoring and this
+ // method should go away anyway once the compiler is fully concurrent.
+ MapRef map(broker, this);
+ do {
+ map.SerializePrototype();
+ map = map.prototype().value().map();
+ } while (map.IsJSObjectMap() && map.is_stable() &&
+ IsFastElementsKind(map.elements_kind()));
+}
+
+bool MapRef::HasOnlyStablePrototypesWithFastElements(
+ ZoneVector<MapRef>* prototype_maps) {
+ DCHECK_NOT_NULL(prototype_maps);
+ MapRef prototype_map = prototype().value().map();
+ while (prototype_map.oddball_type() != OddballType::kNull) {
+ if (!prototype_map.IsJSObjectMap() || !prototype_map.is_stable() ||
+ !IsFastElementsKind(prototype_map.elements_kind())) {
+ return false;
+ }
+ prototype_maps->push_back(prototype_map);
+ prototype_map = prototype_map.prototype().value().map();
+ }
+ return true;
+}
+
+bool MapRef::supports_fast_array_iteration() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ return SupportsFastArrayIteration(broker(), object());
+ }
+ return data()->AsMap()->supports_fast_array_iteration();
+}
+
+bool MapRef::supports_fast_array_resize() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ return SupportsFastArrayResize(broker(), object());
+ }
+ return data()->AsMap()->supports_fast_array_resize();
+}
+
+int JSFunctionRef::InitialMapInstanceSizeWithMinSlack() const {
+ if (data_->should_access_heap()) {
+ return object()->ComputeInstanceSizeWithMinSlack(broker()->isolate());
+ }
+ return data()->AsJSFunction()->initial_map_instance_size_with_min_slack();
+}
+
+OddballType MapRef::oddball_type() const {
+ if (instance_type() != ODDBALL_TYPE) {
+ return OddballType::kNone;
+ }
+ Factory* f = broker()->isolate()->factory();
+ if (equals(MakeRef(broker(), f->undefined_map()))) {
+ return OddballType::kUndefined;
+ }
+ if (equals(MakeRef(broker(), f->null_map()))) {
+ return OddballType::kNull;
+ }
+ if (equals(MakeRef(broker(), f->boolean_map()))) {
+ return OddballType::kBoolean;
+ }
+ if (equals(MakeRef(broker(), f->the_hole_map()))) {
+ return OddballType::kHole;
+ }
+ if (equals(MakeRef(broker(), f->uninitialized_map()))) {
+ return OddballType::kUninitialized;
+ }
+ DCHECK(equals(MakeRef(broker(), f->termination_exception_map())) ||
+ equals(MakeRef(broker(), f->arguments_marker_map())) ||
+ equals(MakeRef(broker(), f->optimized_out_map())) ||
+ equals(MakeRef(broker(), f->stale_register_map())));
+ return OddballType::kOther;
+}
+
+FeedbackCellRef FeedbackVectorRef::GetClosureFeedbackCell(int index) const {
+ if (data_->should_access_heap()) {
+ // These should all be available because we request the cell for each
+ // CreateClosure bytecode.
+ return MakeRef(broker(), object()->closure_feedback_cell(index));
+ }
+
+ return FeedbackCellRef(
+ broker(),
+ data()->AsFeedbackVector()->GetClosureFeedbackCell(broker(), index));
+}
+
+ObjectRef JSObjectRef::RawFastPropertyAt(FieldIndex index) const {
+ CHECK(index.is_inobject());
+ if (data_->should_access_heap()) {
+ return MakeRef(broker(), object()->RawFastPropertyAt(index));
+ }
+ JSObjectData* object_data = data()->AsJSObject();
+ return ObjectRef(broker(),
+ object_data->GetInobjectField(index.property_index()));
+}
+
+bool AllocationSiteRef::IsFastLiteral() const {
+ if (data_->should_access_heap()) {
+ CHECK_NE(data_->kind(), ObjectDataKind::kNeverSerializedHeapObject);
+ return IsInlinableFastLiteral(
+ handle(object()->boilerplate(kAcquireLoad), broker()->isolate()));
+ }
+ return data()->AsAllocationSite()->IsFastLiteral();
+}
+
+void AllocationSiteRef::SerializeBoilerplate() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsAllocationSite()->SerializeBoilerplate(broker());
+}
+
+void JSObjectRef::SerializeElements() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsJSObject()->SerializeElements(broker());
+}
+
+void JSObjectRef::EnsureElementsTenured() {
+ if (data_->should_access_heap()) {
+ Handle<FixedArrayBase> object_elements = elements().value().object();
+ if (ObjectInYoungGeneration(*object_elements)) {
+ // If we would like to pretenure a fixed cow array, we must ensure that
+ // the array is already in old space, otherwise we'll create too many
+ // old-to-new-space pointers (overflowing the store buffer).
+ object_elements =
+ broker()->isolate()->factory()->CopyAndTenureFixedCOWArray(
+ Handle<FixedArray>::cast(object_elements));
+ object()->set_elements(*object_elements);
+ }
+ return;
+ }
+ CHECK(data()->AsJSObject()->cow_or_empty_elements_tenured());
+}
+
+FieldIndex MapRef::GetFieldIndexFor(InternalIndex descriptor_index) const {
+ CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ FieldIndex result = FieldIndex::ForDescriptor(*object(), descriptor_index);
+ DCHECK(result.is_inobject());
+ return result;
+ }
+ DescriptorArrayData* descriptors =
+ data()->AsMap()->instance_descriptors()->AsDescriptorArray();
+ FieldIndex result = descriptors->GetFieldIndexFor(descriptor_index);
+ DCHECK(result.is_inobject());
+ return result;
+}
+
+int MapRef::GetInObjectPropertyOffset(int i) const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ return object()->GetInObjectPropertyOffset(i);
+ }
+ return (GetInObjectPropertiesStartInWords() + i) * kTaggedSize;
+}
+
+PropertyDetails MapRef::GetPropertyDetails(
+ InternalIndex descriptor_index) const {
+ CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
+ return instance_descriptors().GetPropertyDetails(descriptor_index);
+}
+
+NameRef MapRef::GetPropertyKey(InternalIndex descriptor_index) const {
+ CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
+ return instance_descriptors().GetPropertyKey(descriptor_index);
+}
+
+bool MapRef::IsFixedCowArrayMap() const {
+ Handle<Map> fixed_cow_array_map =
+ ReadOnlyRoots(broker()->isolate()).fixed_cow_array_map_handle();
+ return equals(MakeRef(broker(), fixed_cow_array_map));
+}
+
+bool MapRef::IsPrimitiveMap() const {
+ return instance_type() <= LAST_PRIMITIVE_HEAP_OBJECT_TYPE;
+}
+
+MapRef MapRef::FindFieldOwner(InternalIndex descriptor_index) const {
+ CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // TODO(solanes, v8:7790): Consider caching the result of the field owner on
+ // the descriptor array. It would be useful for same map as well as any
+ // other map sharing that descriptor array.
+ return MapRef(broker(), broker()->GetOrCreateData(object()->FindFieldOwner(
+ broker()->isolate(), descriptor_index)));
+ }
+ DescriptorArrayData* descriptors =
+ data()->AsMap()->instance_descriptors()->AsDescriptorArray();
+ return MapRef(broker(), descriptors->FindFieldOwner(descriptor_index));
+}
+
+ObjectRef MapRef::GetFieldType(InternalIndex descriptor_index) const {
+ CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
+ return instance_descriptors().GetFieldType(descriptor_index);
+}
+
+base::Optional<ObjectRef> StringRef::GetCharAsStringOrUndefined(
+ uint32_t index, SerializationPolicy policy) const {
+ if (data_->should_access_heap()) {
+ // TODO(solanes, neis, v8:7790, v8:11012): Re-enable this optimization for
+ // concurrent inlining when we have the infrastructure to safely do so.
+ if (broker()->is_concurrent_inlining()) return base::nullopt;
+ CHECK_EQ(data_->kind(), ObjectDataKind::kUnserializedHeapObject);
+ return GetOwnElementFromHeap(broker(), object(), index, true);
+ }
+ ObjectData* element =
+ data()->AsString()->GetCharAsStringOrUndefined(broker(), index, policy);
+ if (element == nullptr) return base::nullopt;
+ return ObjectRef(broker(), element);
+}
+
+base::Optional<int> StringRef::length() const {
+ if (data_->should_access_heap()) {
+ if (data_->kind() == kNeverSerializedHeapObject &&
+ !this->IsInternalizedString()) {
+ TRACE_BROKER_MISSING(
+ broker(),
+ "length for kNeverSerialized non-internalized string " << *this);
+ return base::nullopt;
+ } else {
+ return object()->length(kAcquireLoad);
+ }
+ }
+ return data()->AsString()->length();
+}
+
+base::Optional<uint16_t> StringRef::GetFirstChar() {
+ if (data_->should_access_heap()) {
+ if (data_->kind() == kNeverSerializedHeapObject &&
+ !this->IsInternalizedString()) {
+ TRACE_BROKER_MISSING(
+ broker(),
+ "first char for kNeverSerialized non-internalized string " << *this);
+ return base::nullopt;
+ }
+
+ if (!broker()->IsMainThread()) {
+ return object()->Get(0, broker()->local_isolate());
+ } else {
+ // TODO(solanes, v8:7790): Remove this case once the inlining phase is
+ // done concurrently all the time.
+ return object()->Get(0);
+ }
+ }
+ return data()->AsString()->first_char();
+}
+
+base::Optional<double> StringRef::ToNumber() {
+ if (data_->should_access_heap()) {
+ if (data_->kind() == kNeverSerializedHeapObject &&
+ !this->IsInternalizedString()) {
+ TRACE_BROKER_MISSING(
+ broker(),
+ "number for kNeverSerialized non-internalized string " << *this);
+ return base::nullopt;
+ }
+
+ return TryStringToDouble(broker()->local_isolate(), object());
+ }
+ return data()->AsString()->to_number();
+}
+
+int ArrayBoilerplateDescriptionRef::constants_elements_length() const {
+ if (data_->should_access_heap()) {
+ return object()->constant_elements().length();
+ }
+ return data()->AsArrayBoilerplateDescription()->constants_elements_length();
+}
+
+ObjectRef FixedArrayRef::get(int i) const { return TryGet(i).value(); }
+
+base::Optional<ObjectRef> FixedArrayRef::TryGet(int i) const {
+ return TryMakeRef(broker(), object()->get(i, kRelaxedLoad));
+}
+
+Float64 FixedDoubleArrayRef::GetFromImmutableFixedDoubleArray(int i) const {
+ STATIC_ASSERT(ref_traits<FixedDoubleArray>::ref_serialization_kind ==
+ RefSerializationKind::kNeverSerialized);
+ return Float64::FromBits(object()->get_representation(i));
+}
+
+Handle<ByteArray> BytecodeArrayRef::SourcePositionTable() const {
+ return broker()->CanonicalPersistentHandle(object()->SourcePositionTable());
+}
+
+Address BytecodeArrayRef::handler_table_address() const {
+ return reinterpret_cast<Address>(
+ object()->handler_table().GetDataStartAddress());
+}
+
+int BytecodeArrayRef::handler_table_size() const {
+ return object()->handler_table().length();
+}
+
+#define IF_ACCESS_FROM_HEAP_C(name) \
+ if (data_->should_access_heap()) { \
+ return object()->name(); \
+ }
+
+#define IF_ACCESS_FROM_HEAP(result, name) \
+ if (data_->should_access_heap()) { \
+ return MakeRef(broker(), result::cast(object()->name())); \
+ }
+
+// Macros for definining a const getter that, depending on the data kind,
+// either looks into the heap or into the serialized data.
+#define BIMODAL_ACCESSOR(holder, result, name) \
+ result##Ref holder##Ref::name() const { \
+ IF_ACCESS_FROM_HEAP(result, name); \
+ return result##Ref(broker(), ObjectRef::data()->As##holder()->name()); \
+ }
+
+// Like above except that the result type is not an XYZRef.
+#define BIMODAL_ACCESSOR_C(holder, result, name) \
+ result holder##Ref::name() const { \
+ IF_ACCESS_FROM_HEAP_C(name); \
+ return ObjectRef::data()->As##holder()->name(); \
+ }
+
+// Like above but for BitFields.
+#define BIMODAL_ACCESSOR_B(holder, field, name, BitField) \
+ typename BitField::FieldType holder##Ref::name() const { \
+ IF_ACCESS_FROM_HEAP_C(name); \
+ return BitField::decode(ObjectRef::data()->As##holder()->field()); \
+ }
+
+// Like IF_ACCESS_FROM_HEAP[_C] but we also allow direct heap access for
+// kSerialized only for methods that we identified to be safe.
+#define IF_ACCESS_FROM_HEAP_WITH_FLAG(result, name) \
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) { \
+ return MakeRef(broker(), result::cast(object()->name())); \
+ }
+#define IF_ACCESS_FROM_HEAP_WITH_FLAG_C(name) \
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) { \
+ return object()->name(); \
+ }
+
+// Like BIMODAL_ACCESSOR[_C] except that we force a direct heap access if
+// broker()->is_concurrent_inlining() is true (even for kSerialized). This is
+// because we identified the method to be safe to use direct heap access, but
+// the holder##Data class still needs to be serialized.
+#define BIMODAL_ACCESSOR_WITH_FLAG(holder, result, name) \
+ result##Ref holder##Ref::name() const { \
+ IF_ACCESS_FROM_HEAP_WITH_FLAG(result, name); \
+ return result##Ref(broker(), ObjectRef::data()->As##holder()->name()); \
+ }
+#define BIMODAL_ACCESSOR_WITH_FLAG_C(holder, result, name) \
+ result holder##Ref::name() const { \
+ IF_ACCESS_FROM_HEAP_WITH_FLAG_C(name); \
+ return ObjectRef::data()->As##holder()->name(); \
+ }
+#define BIMODAL_ACCESSOR_WITH_FLAG_B(holder, field, name, BitField) \
+ typename BitField::FieldType holder##Ref::name() const { \
+ IF_ACCESS_FROM_HEAP_WITH_FLAG_C(name); \
+ return BitField::decode(ObjectRef::data()->As##holder()->field()); \
+ }
+
+BIMODAL_ACCESSOR(AllocationSite, Object, nested_site)
+BIMODAL_ACCESSOR_C(AllocationSite, bool, CanInlineCall)
+BIMODAL_ACCESSOR_C(AllocationSite, bool, PointsToLiteral)
+BIMODAL_ACCESSOR_C(AllocationSite, ElementsKind, GetElementsKind)
+BIMODAL_ACCESSOR_C(AllocationSite, AllocationType, GetAllocationType)
+
+BIMODAL_ACCESSOR_C(BigInt, uint64_t, AsUint64)
+
+BIMODAL_ACCESSOR_C(BytecodeArray, int, register_count)
+BIMODAL_ACCESSOR_C(BytecodeArray, int, parameter_count)
+BIMODAL_ACCESSOR_C(BytecodeArray, interpreter::Register,
+ incoming_new_target_or_generator_register)
+
+BIMODAL_ACCESSOR_C(FeedbackVector, double, invocation_count)
+
+BIMODAL_ACCESSOR(HeapObject, Map, map)
+
+BIMODAL_ACCESSOR_C(HeapNumber, double, value)
+
+// These JSBoundFunction fields are immutable after initialization. Moreover,
+// as long as JSObjects are still serialized on the main thread, all
+// JSBoundFunctionRefs are created at a time when the underlying objects are
+// guaranteed to be fully initialized.
+BIMODAL_ACCESSOR_WITH_FLAG(JSBoundFunction, JSReceiver, bound_target_function)
+BIMODAL_ACCESSOR_WITH_FLAG(JSBoundFunction, Object, bound_this)
+BIMODAL_ACCESSOR_WITH_FLAG(JSBoundFunction, FixedArray, bound_arguments)
+
+BIMODAL_ACCESSOR_C(JSDataView, size_t, byte_length)
+
+BIMODAL_ACCESSOR_C(JSFunction, bool, has_feedback_vector)
+BIMODAL_ACCESSOR_C(JSFunction, bool, has_initial_map)
+BIMODAL_ACCESSOR_C(JSFunction, bool, has_prototype)
+BIMODAL_ACCESSOR_C(JSFunction, bool, PrototypeRequiresRuntimeLookup)
+BIMODAL_ACCESSOR(JSFunction, Context, context)
+BIMODAL_ACCESSOR(JSFunction, NativeContext, native_context)
+BIMODAL_ACCESSOR(JSFunction, Map, initial_map)
+BIMODAL_ACCESSOR(JSFunction, Object, prototype)
+BIMODAL_ACCESSOR(JSFunction, SharedFunctionInfo, shared)
+BIMODAL_ACCESSOR(JSFunction, FeedbackCell, raw_feedback_cell)
+BIMODAL_ACCESSOR(JSFunction, FeedbackVector, feedback_vector)
+
+BIMODAL_ACCESSOR_C(JSGlobalObject, bool, IsDetached)
+
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field2, elements_kind,
+ Map::Bits2::ElementsKindBits)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field3, is_dictionary_map,
+ Map::Bits3::IsDictionaryMapBit)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field3, is_deprecated,
+ Map::Bits3::IsDeprecatedBit)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field3, NumberOfOwnDescriptors,
+ Map::Bits3::NumberOfOwnDescriptorsBits)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field3, is_migration_target,
+ Map::Bits3::IsMigrationTargetBit)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, has_prototype_slot,
+ Map::Bits1::HasPrototypeSlotBit)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, is_access_check_needed,
+ Map::Bits1::IsAccessCheckNeededBit)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, is_callable,
+ Map::Bits1::IsCallableBit)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, has_indexed_interceptor,
+ Map::Bits1::HasIndexedInterceptorBit)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, is_constructor,
+ Map::Bits1::IsConstructorBit)
+BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, is_undetectable,
+ Map::Bits1::IsUndetectableBit)
+BIMODAL_ACCESSOR_C(Map, int, instance_size)
+BIMODAL_ACCESSOR_WITH_FLAG_C(Map, int, NextFreePropertyIndex)
+BIMODAL_ACCESSOR_C(Map, int, UnusedPropertyFields)
+BIMODAL_ACCESSOR_WITH_FLAG_C(Map, InstanceType, instance_type)
+BIMODAL_ACCESSOR_WITH_FLAG(Map, Object, GetConstructor)
+BIMODAL_ACCESSOR_WITH_FLAG(Map, HeapObject, GetBackPointer)
+BIMODAL_ACCESSOR_C(Map, bool, is_abandoned_prototype_map)
+
+#define DEF_NATIVE_CONTEXT_ACCESSOR(type, name) \
+ BIMODAL_ACCESSOR(NativeContext, type, name)
+BROKER_NATIVE_CONTEXT_FIELDS(DEF_NATIVE_CONTEXT_ACCESSOR)
+#undef DEF_NATIVE_CONTEXT_ACCESSOR
+
+BIMODAL_ACCESSOR_C(ObjectBoilerplateDescription, int, size)
+
+BIMODAL_ACCESSOR(PropertyCell, Object, value)
+BIMODAL_ACCESSOR_C(PropertyCell, PropertyDetails, property_details)
+
+BIMODAL_ACCESSOR(RegExpBoilerplateDescription, FixedArray, data)
+BIMODAL_ACCESSOR(RegExpBoilerplateDescription, String, source)
+BIMODAL_ACCESSOR_C(RegExpBoilerplateDescription, int, flags)
+
+base::Optional<CallHandlerInfoRef> FunctionTemplateInfoRef::call_code() const {
+ if (data_->should_access_heap()) {
+ HeapObject call_code = object()->call_code(kAcquireLoad);
+ if (call_code.IsUndefined()) return base::nullopt;
+ return TryMakeRef(broker(), CallHandlerInfo::cast(call_code));
+ }
+ ObjectData* call_code = data()->AsFunctionTemplateInfo()->call_code();
+ if (!call_code) return base::nullopt;
+ return CallHandlerInfoRef(broker(), call_code);
+}
+
+bool FunctionTemplateInfoRef::is_signature_undefined() const {
+ if (data_->should_access_heap()) {
+ return object()->signature().IsUndefined(broker()->isolate());
+ }
+ return data()->AsFunctionTemplateInfo()->is_signature_undefined();
+}
+
+bool FunctionTemplateInfoRef::has_call_code() const {
+ if (data_->should_access_heap()) {
+ HeapObject call_code = object()->call_code(kAcquireLoad);
+ return !call_code.IsUndefined();
+ }
+ return data()->AsFunctionTemplateInfo()->has_call_code();
+}
+
+bool FunctionTemplateInfoRef ::accept_any_receiver() const {
+ if (data_->should_access_heap()) {
+ return object()->accept_any_receiver();
+ }
+ return ObjectRef ::data()->AsFunctionTemplateInfo()->accept_any_receiver();
+}
+
+HolderLookupResult FunctionTemplateInfoRef::LookupHolderOfExpectedType(
+ MapRef receiver_map, SerializationPolicy policy) {
+ const HolderLookupResult not_found;
+
+ if (data_->should_access_heap()) {
+ // There are currently two ways we can see a FunctionTemplateInfo on the
+ // background thread: 1.) As part of a SharedFunctionInfo and 2.) in an
+ // AccessorPair. In both cases, the FTI is fully constructed on the main
+ // thread before.
+ // TODO(nicohartmann@, v8:7790): Once the above no longer holds, we might
+ // have to use the GC predicate to check whether objects are fully
+ // initialized and safe to read.
+ if (!receiver_map.IsJSReceiverMap() ||
+ (receiver_map.is_access_check_needed() &&
+ !object()->accept_any_receiver())) {
+ return not_found;
+ }
+
+ if (!receiver_map.IsJSObjectMap()) return not_found;
+
+ DCHECK(has_call_code());
+
+ DisallowGarbageCollection no_gc;
+ HeapObject signature = object()->signature();
+ if (signature.IsUndefined()) {
+ return HolderLookupResult(CallOptimization::kHolderIsReceiver);
+ }
+ auto expected_receiver_type = FunctionTemplateInfo::cast(signature);
+ if (expected_receiver_type.IsTemplateFor(*receiver_map.object())) {
+ return HolderLookupResult(CallOptimization::kHolderIsReceiver);
+ }
+
+ if (!receiver_map.IsJSGlobalProxyMap()) return not_found;
+ if (policy == SerializationPolicy::kSerializeIfNeeded) {
+ receiver_map.SerializePrototype();
+ }
+ base::Optional<HeapObjectRef> prototype = receiver_map.prototype();
+ if (!prototype.has_value()) return not_found;
+ if (prototype->IsNull()) return not_found;
+
+ JSObject raw_prototype = JSObject::cast(*prototype->object());
+ if (!expected_receiver_type.IsTemplateFor(raw_prototype.map())) {
+ return not_found;
+ }
+ return HolderLookupResult(CallOptimization::kHolderFound,
+ prototype->AsJSObject());
+ }
+
+ FunctionTemplateInfoData* fti_data = data()->AsFunctionTemplateInfo();
+ KnownReceiversMap::iterator lookup_it =
+ fti_data->known_receivers().find(receiver_map.data());
+ if (lookup_it != fti_data->known_receivers().cend()) {
+ return lookup_it->second;
+ }
+ if (policy == SerializationPolicy::kAssumeSerialized) {
+ TRACE_BROKER_MISSING(broker(),
+ "holder for receiver with map " << receiver_map);
+ return not_found;
+ }
+ if (!receiver_map.IsJSReceiverMap() ||
+ (receiver_map.is_access_check_needed() && !accept_any_receiver())) {
+ fti_data->known_receivers().insert({receiver_map.data(), not_found});
+ return not_found;
+ }
+
+ HolderLookupResult result;
+ CallOptimization call_optimization(broker()->local_isolate_or_isolate(),
+ object());
+ Handle<JSObject> holder = broker()->CanonicalPersistentHandle(
+ call_optimization.LookupHolderOfExpectedType(
+ broker()->local_isolate_or_isolate(), receiver_map.object(),
+ &result.lookup));
+
+ switch (result.lookup) {
+ case CallOptimization::kHolderFound: {
+ result.holder = MakeRef(broker(), holder);
+ fti_data->known_receivers().insert({receiver_map.data(), result});
+ break;
+ }
+ default: {
+ DCHECK_EQ(result.holder, base::nullopt);
+ fti_data->known_receivers().insert({receiver_map.data(), result});
+ }
+ }
+ return result;
+}
+
+BIMODAL_ACCESSOR(CallHandlerInfo, Object, data)
+
+BIMODAL_ACCESSOR_C(ScopeInfo, int, ContextLength)
+BIMODAL_ACCESSOR_C(ScopeInfo, bool, HasContextExtensionSlot)
+BIMODAL_ACCESSOR_C(ScopeInfo, bool, HasOuterScopeInfo)
+BIMODAL_ACCESSOR(ScopeInfo, ScopeInfo, OuterScopeInfo)
+
+BIMODAL_ACCESSOR_C(SharedFunctionInfo, int, builtin_id)
+BytecodeArrayRef SharedFunctionInfoRef::GetBytecodeArray() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ BytecodeArray bytecode_array;
+ if (!broker()->IsMainThread()) {
+ bytecode_array = object()->GetBytecodeArray(broker()->local_isolate());
+ } else {
+ bytecode_array = object()->GetBytecodeArray(broker()->isolate());
+ }
+ return MakeRef(broker(), bytecode_array);
+ }
+ return BytecodeArrayRef(
+ broker(), ObjectRef ::data()->AsSharedFunctionInfo()->GetBytecodeArray());
+}
+#define DEF_SFI_ACCESSOR(type, name) \
+ BIMODAL_ACCESSOR_WITH_FLAG_C(SharedFunctionInfo, type, name)
+BROKER_SFI_FIELDS(DEF_SFI_ACCESSOR)
+#undef DEF_SFI_ACCESSOR
+SharedFunctionInfo::Inlineability SharedFunctionInfoRef::GetInlineability()
+ const {
+ if (data_->should_access_heap()) {
+ if (!broker()->IsMainThread()) {
+ return object()->GetInlineability(broker()->local_isolate());
+ } else {
+ return object()->GetInlineability(broker()->isolate());
+ }
+ }
+ return ObjectRef ::data()->AsSharedFunctionInfo()->GetInlineability();
+}
+
+base::Optional<FeedbackVectorRef> FeedbackCellRef::value() const {
+ if (data_->should_access_heap()) {
+ // Note that we use the synchronized accessor.
+ Object value = object()->value(kAcquireLoad);
+ if (!value.IsFeedbackVector()) return base::nullopt;
+ return TryMakeRef(broker(), FeedbackVector::cast(value));
+ }
+ ObjectData* vector = ObjectRef::data()->AsFeedbackCell()->value();
+ return FeedbackVectorRef(broker(), vector->AsFeedbackVector());
+}
+
+base::Optional<ObjectRef> MapRef::GetStrongValue(
+ InternalIndex descriptor_index) const {
+ CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
+ return instance_descriptors().GetStrongValue(descriptor_index);
+}
+
+DescriptorArrayRef MapRef::instance_descriptors() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ return MakeRefAssumeMemoryFence(
+ broker(),
+ object()->instance_descriptors(broker()->isolate(), kAcquireLoad));
+ }
+
+ return DescriptorArrayRef(broker(), data()->AsMap()->instance_descriptors());
+}
+
+base::Optional<HeapObjectRef> MapRef::prototype() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ return TryMakeRef(broker(), HeapObject::cast(object()->prototype()));
+ }
+ ObjectData* prototype_data = data()->AsMap()->prototype();
+ if (prototype_data == nullptr) {
+ TRACE_BROKER_MISSING(broker(), "prototype for map " << *this);
+ return {};
+ }
+ return HeapObjectRef(broker(), prototype_data);
+}
+
+void MapRef::SerializeRootMap() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsMap()->SerializeRootMap(broker());
+}
+
+// TODO(solanes, v8:7790): Remove base::Optional from the return type when
+// deleting serialization.
+base::Optional<MapRef> MapRef::FindRootMap() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // TODO(solanes): Change TryMakeRef to MakeRef when Map is moved to
+ // kNeverSerialized.
+ // TODO(solanes, v8:7790): Consider caching the result of the root map.
+ return TryMakeRef(broker(), object()->FindRootMap(broker()->isolate()));
+ }
+ ObjectData* map_data = data()->AsMap()->FindRootMap();
+ if (map_data != nullptr) {
+ return MapRef(broker(), map_data);
+ }
+ TRACE_BROKER_MISSING(broker(), "root map for object " << *this);
+ return base::nullopt;
+}
+
+bool JSTypedArrayRef::is_on_heap() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // Safe to read concurrently because:
+ // - host object seen by serializer.
+ // - underlying field written 1. during initialization or 2. with
+ // release-store.
+ return object()->is_on_heap(kAcquireLoad);
+ }
+ return data()->AsJSTypedArray()->data_ptr();
+}
+
+size_t JSTypedArrayRef::length() const {
+ CHECK(!is_on_heap());
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // Safe to read concurrently because:
+ // - immutable after initialization.
+ // - host object seen by serializer.
+ return object()->length();
+ }
+ return data()->AsJSTypedArray()->length();
+}
+
+HeapObjectRef JSTypedArrayRef::buffer() const {
+ CHECK(!is_on_heap());
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // Safe to read concurrently because:
+ // - immutable after initialization.
+ // - host object seen by serializer.
+ return MakeRef<HeapObject>(broker(), object()->buffer());
+ }
+ return HeapObjectRef{broker(), data()->AsJSTypedArray()->buffer()};
+}
+
+void* JSTypedArrayRef::data_ptr() const {
+ CHECK(!is_on_heap());
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // Safe to read concurrently because:
+ // - host object seen by serializer.
+ // - underlying field written 1. during initialization or 2. protected by
+ // the is_on_heap release/acquire semantics (external_pointer store
+ // happens-before base_pointer store, and this external_pointer load
+ // happens-after base_pointer load).
+ STATIC_ASSERT(JSTypedArray::kOffHeapDataPtrEqualsExternalPointer);
+ return object()->DataPtr();
+ }
+ return data()->AsJSTypedArray()->data_ptr();
+}
+
+bool MapRef::IsInobjectSlackTrackingInProgress() const {
+ IF_ACCESS_FROM_HEAP_WITH_FLAG_C(IsInobjectSlackTrackingInProgress);
+ return Map::Bits3::ConstructionCounterBits::decode(
+ data()->AsMap()->bit_field3()) != Map::kNoSlackTracking;
+}
+
+int MapRef::constructor_function_index() const {
+ IF_ACCESS_FROM_HEAP_WITH_FLAG_C(GetConstructorFunctionIndex);
+ CHECK(IsPrimitiveMap());
+ return data()->AsMap()->constructor_function_index();
+}
+
+bool MapRef::is_stable() const {
+ IF_ACCESS_FROM_HEAP_C(is_stable);
+ return !Map::Bits3::IsUnstableBit::decode(data()->AsMap()->bit_field3());
+}
+
+bool MapRef::CanBeDeprecated() const {
+ IF_ACCESS_FROM_HEAP_WITH_FLAG_C(CanBeDeprecated);
+ CHECK_GT(NumberOfOwnDescriptors(), 0);
+ return data()->AsMap()->can_be_deprecated();
+}
+
+bool MapRef::CanTransition() const {
+ IF_ACCESS_FROM_HEAP_WITH_FLAG_C(CanTransition);
+ return data()->AsMap()->can_transition();
+}
+
+int MapRef::GetInObjectPropertiesStartInWords() const {
+ IF_ACCESS_FROM_HEAP_WITH_FLAG_C(GetInObjectPropertiesStartInWords);
+ return data()->AsMap()->in_object_properties_start_in_words();
+}
+
+int MapRef::GetInObjectProperties() const {
+ IF_ACCESS_FROM_HEAP_C(GetInObjectProperties);
+ return data()->AsMap()->in_object_properties();
+}
+
+void ScopeInfoRef::SerializeScopeInfoChain() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsScopeInfo()->SerializeScopeInfoChain(broker());
+}
+
+bool StringRef::IsExternalString() const {
+ IF_ACCESS_FROM_HEAP_C(IsExternalString);
+ return data()->AsString()->is_external_string();
+}
+
+Address CallHandlerInfoRef::callback() const {
+ if (data_->should_access_heap()) {
+ return v8::ToCData<Address>(object()->callback());
+ }
+ return HeapObjectRef::data()->AsCallHandlerInfo()->callback();
+}
+
+ZoneVector<Address> FunctionTemplateInfoRef::c_functions() const {
+ if (data_->should_access_heap()) {
+ return GetCFunctions(FixedArray::cast(object()->GetCFunctionOverloads()),
+ broker()->zone());
+ }
+ return HeapObjectRef::data()->AsFunctionTemplateInfo()->c_functions();
+}
+
+ZoneVector<const CFunctionInfo*> FunctionTemplateInfoRef::c_signatures() const {
+ if (data_->should_access_heap()) {
+ return GetCSignatures(FixedArray::cast(object()->GetCFunctionOverloads()),
+ broker()->zone());
+ }
+ return HeapObjectRef::data()->AsFunctionTemplateInfo()->c_signatures();
+}
+
+bool StringRef::IsSeqString() const {
+ IF_ACCESS_FROM_HEAP_C(IsSeqString);
+ return data()->AsString()->is_seq_string();
+}
+
+bool NativeContextRef::is_unserialized_heap_object() const {
+ return data_->kind() == kUnserializedHeapObject;
+}
+
+ScopeInfoRef NativeContextRef::scope_info() const {
+ if (data_->should_access_heap()) {
+ // The scope_info is immutable after initialization.
+ return MakeRefAssumeMemoryFence(broker(), object()->scope_info());
+ }
+ return ScopeInfoRef(broker(), data()->AsNativeContext()->scope_info());
+}
+
+SharedFunctionInfoRef FeedbackVectorRef::shared_function_info() const {
+ if (data_->should_access_heap()) {
+ return MakeRef(broker(), object()->shared_function_info());
+ }
+
+ return SharedFunctionInfoRef(
+ broker(), data()->AsFeedbackVector()->shared_function_info());
+}
+
+MapRef NativeContextRef::GetFunctionMapFromIndex(int index) const {
+ DCHECK_GE(index, Context::FIRST_FUNCTION_MAP_INDEX);
+ DCHECK_LE(index, Context::LAST_FUNCTION_MAP_INDEX);
+ if (data_->should_access_heap()) {
+ CHECK_LT(index, object()->length());
+ return MakeRefAssumeMemoryFence(broker(),
+ object()->get(index, kAcquireLoad))
+ .AsMap();
+ }
+ return MapRef(broker(), data()->AsNativeContext()->function_maps().at(
+ index - Context::FIRST_FUNCTION_MAP_INDEX));
+}
+
+MapRef NativeContextRef::GetInitialJSArrayMap(ElementsKind kind) const {
+ switch (kind) {
+ case PACKED_SMI_ELEMENTS:
+ return js_array_packed_smi_elements_map();
+ case HOLEY_SMI_ELEMENTS:
+ return js_array_holey_smi_elements_map();
+ case PACKED_DOUBLE_ELEMENTS:
+ return js_array_packed_double_elements_map();
+ case HOLEY_DOUBLE_ELEMENTS:
+ return js_array_holey_double_elements_map();
+ case PACKED_ELEMENTS:
+ return js_array_packed_elements_map();
+ case HOLEY_ELEMENTS:
+ return js_array_holey_elements_map();
+ default:
+ UNREACHABLE();
+ }
+}
+
+base::Optional<JSFunctionRef> NativeContextRef::GetConstructorFunction(
+ const MapRef& map) const {
+ CHECK(map.IsPrimitiveMap());
+ switch (map.constructor_function_index()) {
+ case Map::kNoConstructorFunctionIndex:
+ return base::nullopt;
+ case Context::BIGINT_FUNCTION_INDEX:
+ return bigint_function();
+ case Context::BOOLEAN_FUNCTION_INDEX:
+ return boolean_function();
+ case Context::NUMBER_FUNCTION_INDEX:
+ return number_function();
+ case Context::STRING_FUNCTION_INDEX:
+ return string_function();
+ case Context::SYMBOL_FUNCTION_INDEX:
+ return symbol_function();
+ default:
+ UNREACHABLE();
+ }
+}
+
+bool ObjectRef::IsNull() const { return object()->IsNull(); }
+
+bool ObjectRef::IsNullOrUndefined() const {
+ if (IsSmi()) return false;
+ OddballType type = AsHeapObject().map().oddball_type();
+ return type == OddballType::kNull || type == OddballType::kUndefined;
+}
+
+bool ObjectRef::IsTheHole() const {
+ return IsHeapObject() &&
+ AsHeapObject().map().oddball_type() == OddballType::kHole;
+}
+
+base::Optional<bool> ObjectRef::TryGetBooleanValue() const {
+ if (data_->should_access_heap()) {
+ return object()->BooleanValue(broker()->isolate());
+ }
+ if (IsSmi()) return AsSmi() != 0;
+ return data()->AsHeapObject()->TryGetBooleanValue(broker());
+}
+
+Maybe<double> ObjectRef::OddballToNumber() const {
+ OddballType type = AsHeapObject().map().oddball_type();
+
+ switch (type) {
+ case OddballType::kBoolean: {
+ ObjectRef true_ref(broker(),
+ broker()->isolate()->factory()->true_value());
+ return this->equals(true_ref) ? Just(1.0) : Just(0.0);
+ break;
+ }
+ case OddballType::kUndefined: {
+ return Just(std::numeric_limits<double>::quiet_NaN());
+ break;
+ }
+ case OddballType::kNull: {
+ return Just(0.0);
+ break;
+ }
+ default: {
+ return Nothing<double>();
+ break;
+ }
+ }
+}
+
+base::Optional<ObjectRef> JSObjectRef::GetOwnConstantElement(
+ uint32_t index, SerializationPolicy policy) const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // `elements` are currently still serialized as members of JSObjectRef.
+ // TODO(jgruber,v8:7790): Once JSObject is no longer serialized, we must
+ // guarantee consistency between `object`, `elements_kind` and `elements`
+ // through other means (store/load order? locks? storing elements_kind in
+ // elements.map?).
+ STATIC_ASSERT(IsSerializedRef<JSObject>());
+
+ base::Optional<FixedArrayBaseRef> maybe_elements_ref = elements();
+ if (!maybe_elements_ref.has_value()) {
+ TRACE_BROKER_MISSING(broker(), "JSObject::elements" << *this);
+ return {};
+ }
+
+ FixedArrayBaseRef elements_ref = maybe_elements_ref.value();
+ ElementsKind elements_kind = GetElementsKind();
+
+ DCHECK_LE(index, JSObject::kMaxElementIndex);
+
+ // See also ElementsAccessorBase::GetMaxIndex.
+ if (IsJSArray()) {
+ // For JSArrays we additionally need to check against JSArray::length.
+ // Length_unsafe is safe to use in this case since:
+ // - GetOwnConstantElement only detects a constant for JSArray holders if
+ // the array is frozen/sealed.
+ // - Frozen/sealed arrays can't change length.
+ // - We've already seen a map with frozen/sealed elements_kinds (above);
+ // - The release-load of that map ensures we read the newest value
+ // of `length` below.
+ uint32_t array_length;
+ if (!AsJSArray().length_unsafe().object()->ToArrayLength(&array_length)) {
+ return {};
+ }
+ if (index >= array_length) return {};
+ }
+
+ Object maybe_element;
+ auto result = ConcurrentLookupIterator::TryGetOwnConstantElement(
+ &maybe_element, broker()->isolate(), broker()->local_isolate(),
+ *object(), *elements_ref.object(), elements_kind, index);
+
+ if (result == ConcurrentLookupIterator::kGaveUp) {
+ TRACE_BROKER_MISSING(broker(), "JSObject::GetOwnConstantElement on "
+ << *this << " at index " << index);
+ return {};
+ } else if (result == ConcurrentLookupIterator::kNotPresent) {
+ return {};
+ }
+
+ DCHECK_EQ(result, ConcurrentLookupIterator::kPresent);
+ return MakeRef(broker(), maybe_element);
+ } else {
+ ObjectData* element =
+ data()->AsJSObject()->GetOwnConstantElement(broker(), index, policy);
+ if (element == nullptr) return base::nullopt;
+ return ObjectRef(broker(), element);
+ }
+}
+
+base::Optional<ObjectRef> JSObjectRef::GetOwnFastDataProperty(
+ Representation field_representation, FieldIndex index,
+ SerializationPolicy policy) const {
+ if (data_->should_access_heap()) {
+ return GetOwnFastDataPropertyFromHeap(broker(),
+ Handle<JSObject>::cast(object()),
+ field_representation, index);
+ }
+ ObjectData* property = data()->AsJSObject()->GetOwnFastDataProperty(
+ broker(), field_representation, index, policy);
+ if (property == nullptr) return base::nullopt;
+ return ObjectRef(broker(), property);
+}
+
+ObjectRef JSObjectRef::GetOwnDictionaryProperty(
+ InternalIndex index, SerializationPolicy policy) const {
+ CHECK(index.is_found());
+ if (data_->should_access_heap()) {
+ return GetOwnDictionaryPropertyFromHeap(
+ broker(), Handle<JSObject>::cast(object()), index);
+ }
+ ObjectData* property =
+ data()->AsJSObject()->GetOwnDictionaryProperty(broker(), index, policy);
+ CHECK_NE(property, nullptr);
+ return ObjectRef(broker(), property);
+}
+
+ObjectRef JSArrayRef::GetBoilerplateLength() const {
+ // Safe to read concurrently because:
+ // - boilerplates are immutable after initialization.
+ // - boilerplates are published into the feedback vector.
+ return length_unsafe();
+}
+
+ObjectRef JSArrayRef::length_unsafe() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ return MakeRef(broker(),
+ object()->length(broker()->isolate(), kRelaxedLoad));
+ } else {
+ return ObjectRef{broker(), data()->AsJSArray()->length()};
+ }
+}
+
+base::Optional<ObjectRef> JSArrayRef::GetOwnCowElement(
+ FixedArrayBaseRef elements_ref, uint32_t index,
+ SerializationPolicy policy) const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // `elements` are currently still serialized as members of JSObjectRef.
+ // TODO(jgruber,v8:7790): Remove the elements equality DCHECK below once
+ // JSObject is no longer serialized.
+ static_assert(std::is_base_of<JSObject, JSArray>::value, "");
+ STATIC_ASSERT(IsSerializedRef<JSObject>());
+
+ // The elements_ref is passed in by callers to make explicit that it is
+ // also used outside of this function, and must match the `elements` used
+ // inside this function.
+ DCHECK(elements_ref.equals(elements().value()));
+
+ // Due to concurrency, the kind read here may not be consistent with
+ // `elements_ref`. But consistency is guaranteed at runtime due to the
+ // `elements` equality check in the caller.
+ ElementsKind elements_kind = GetElementsKind();
+
+ // We only inspect fixed COW arrays, which may only occur for fast
+ // smi/objects elements kinds.
+ if (!IsSmiOrObjectElementsKind(elements_kind)) return {};
+ DCHECK(IsFastElementsKind(elements_kind));
+ if (!elements_ref.map().IsFixedCowArrayMap()) return {};
+
+ // As the name says, the `length` read here is unsafe and may not match
+ // `elements`. We rely on the invariant that any `length` change will
+ // also result in an `elements` change to make this safe. The `elements`
+ // equality check in the caller thus also guards the value of `length`.
+ ObjectRef length_ref = length_unsafe();
+
+ // Likewise we only deal with smi lengths.
+ if (!length_ref.IsSmi()) return {};
+
+ base::Optional<Object> result =
+ ConcurrentLookupIterator::TryGetOwnCowElement(
+ broker()->isolate(), *elements_ref.AsFixedArray().object(),
+ elements_kind, length_ref.AsSmi(), index);
+ if (!result.has_value()) return {};
+
+ return MakeRef(broker(), result.value());
+ } else {
+ DCHECK(!data_->should_access_heap());
+ DCHECK(!broker()->is_concurrent_inlining());
+
+ // Just to clarify that `elements_ref` is not used on this path.
+ // GetOwnElement accesses the serialized `elements` field on its own.
+ USE(elements_ref);
+
+ if (!elements().value().map().IsFixedCowArrayMap()) return base::nullopt;
+
+ ObjectData* element =
+ data()->AsJSArray()->GetOwnElement(broker(), index, policy);
+ if (element == nullptr) return base::nullopt;
+ return ObjectRef(broker(), element);
+ }
+}
+
+base::Optional<CellRef> SourceTextModuleRef::GetCell(int cell_index) const {
+ if (data_->should_access_heap()) {
+ return TryMakeRef(broker(), object()->GetCell(cell_index));
+ }
+ ObjectData* cell =
+ data()->AsSourceTextModule()->GetCell(broker(), cell_index);
+ if (cell == nullptr) return base::nullopt;
+ return CellRef(broker(), cell);
+}
+
+base::Optional<ObjectRef> SourceTextModuleRef::import_meta() const {
+ if (data_->should_access_heap()) {
+ return TryMakeRef(broker(), object()->import_meta(kAcquireLoad));
+ }
+ return ObjectRef(broker(),
+ data()->AsSourceTextModule()->GetImportMeta(broker()));
+}
+
+ObjectRef::ObjectRef(JSHeapBroker* broker, Handle<Object> object,
+ bool check_type)
+ : broker_(broker) {
+ CHECK_NE(broker->mode(), JSHeapBroker::kRetired);
+ data_ = broker->GetOrCreateData(object);
+}
+
+namespace {
+
+OddballType GetOddballType(Isolate* isolate, Map map) {
+ if (map.instance_type() != ODDBALL_TYPE) {
+ return OddballType::kNone;
+ }
+ ReadOnlyRoots roots(isolate);
+ if (map == roots.undefined_map()) {
+ return OddballType::kUndefined;
+ }
+ if (map == roots.null_map()) {
+ return OddballType::kNull;
+ }
+ if (map == roots.boolean_map()) {
+ return OddballType::kBoolean;
+ }
+ if (map == roots.the_hole_map()) {
+ return OddballType::kHole;
+ }
+ if (map == roots.uninitialized_map()) {
+ return OddballType::kUninitialized;
+ }
+ DCHECK(map == roots.termination_exception_map() ||
+ map == roots.arguments_marker_map() ||
+ map == roots.optimized_out_map() || map == roots.stale_register_map());
+ return OddballType::kOther;
+}
+
+} // namespace
+
+HeapObjectType HeapObjectRef::GetHeapObjectType() const {
+ if (data_->should_access_heap()) {
+ Map map = Handle<HeapObject>::cast(object())->map();
+ HeapObjectType::Flags flags(0);
+ if (map.is_undetectable()) flags |= HeapObjectType::kUndetectable;
+ if (map.is_callable()) flags |= HeapObjectType::kCallable;
+ return HeapObjectType(map.instance_type(), flags,
+ GetOddballType(broker()->isolate(), map));
+ }
+ HeapObjectType::Flags flags(0);
+ if (map().is_undetectable()) flags |= HeapObjectType::kUndetectable;
+ if (map().is_callable()) flags |= HeapObjectType::kCallable;
+ return HeapObjectType(map().instance_type(), flags, map().oddball_type());
+}
+
+base::Optional<JSObjectRef> AllocationSiteRef::boilerplate() const {
+ if (data_->should_access_heap()) {
+ return TryMakeRef(broker(), object()->boilerplate(kAcquireLoad));
+ }
+ ObjectData* boilerplate = data()->AsAllocationSite()->boilerplate();
+ if (boilerplate) {
+ return JSObjectRef(broker(), boilerplate);
+ } else {
+ return base::nullopt;
+ }
+}
+
+ElementsKind JSObjectRef::GetElementsKind() const {
+ return map().elements_kind();
+}
+
+base::Optional<FixedArrayBaseRef> JSObjectRef::elements() const {
+ if (data_->should_access_heap()) {
+ return TryMakeRef(broker(), object()->elements());
+ }
+ const JSObjectData* d = data()->AsJSObject();
+ if (!d->serialized_elements()) {
+ TRACE(broker(), "'elements' on " << this);
+ return base::nullopt;
+ }
+ return FixedArrayBaseRef(broker(), d->elements());
+}
+
+int FixedArrayBaseRef::length() const {
+ IF_ACCESS_FROM_HEAP_C(length);
+ return data()->AsFixedArrayBase()->length();
+}
+
+PropertyDetails DescriptorArrayRef::GetPropertyDetails(
+ InternalIndex descriptor_index) const {
+ if (data_->should_access_heap()) {
+ return object()->GetDetails(descriptor_index);
+ }
+ return data()->AsDescriptorArray()->GetPropertyDetails(descriptor_index);
+}
+
+NameRef DescriptorArrayRef::GetPropertyKey(
+ InternalIndex descriptor_index) const {
+ if (data_->should_access_heap()) {
+ NameRef result = MakeRef(broker(), object()->GetKey(descriptor_index));
+ CHECK(result.IsUniqueName());
+ return result;
+ }
+ return NameRef(broker(),
+ data()->AsDescriptorArray()->GetPropertyKey(descriptor_index));
+}
+
+ObjectRef DescriptorArrayRef::GetFieldType(
+ InternalIndex descriptor_index) const {
+ if (data_->should_access_heap()) {
+ return MakeRef<Object>(broker(), object()->GetFieldType(descriptor_index));
+ }
+ return ObjectRef(broker(),
+ data()->AsDescriptorArray()->GetFieldType(descriptor_index));
+}
+
+base::Optional<ObjectRef> DescriptorArrayRef::GetStrongValue(
+ InternalIndex descriptor_index) const {
+ if (data_->should_access_heap()) {
+ HeapObject heap_object;
+ if (!object()
+ ->GetValue(descriptor_index)
+ .GetHeapObjectIfStrong(&heap_object)) {
+ return {};
+ }
+ // Since the descriptors in the descriptor array can be changed in-place
+ // via DescriptorArray::Replace, we might get a value that we haven't seen
+ // before.
+ return TryMakeRef(broker(), heap_object);
+ }
+ ObjectData* value =
+ data()->AsDescriptorArray()->GetStrongValue(descriptor_index);
+ if (!value) return base::nullopt;
+ return ObjectRef(broker(), value);
+}
+
+base::Optional<SharedFunctionInfoRef> FeedbackCellRef::shared_function_info()
+ const {
+ if (value()) {
+ FeedbackVectorRef vector = *value();
+ if (vector.serialized()) {
+ return vector.shared_function_info();
+ }
+ }
+ return base::nullopt;
+}
+
+void FeedbackVectorRef::Serialize() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsFeedbackVector()->Serialize(broker());
+}
+
+bool FeedbackVectorRef::serialized() const {
+ if (data_->should_access_heap()) return true;
+ return data()->AsFeedbackVector()->serialized();
+}
+
+bool NameRef::IsUniqueName() const {
+ // Must match Name::IsUniqueName.
+ return IsInternalizedString() || IsSymbol();
+}
+
+void RegExpBoilerplateDescriptionRef::Serialize() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ HeapObjectRef::data()->AsRegExpBoilerplateDescription()->Serialize(broker());
+}
+
+Handle<Object> ObjectRef::object() const {
+#ifdef DEBUG
+ if (broker()->mode() == JSHeapBroker::kSerialized &&
+ data_->used_status == ObjectData::Usage::kUnused) {
+ data_->used_status = ObjectData::Usage::kOnlyIdentityUsed;
+ }
+#endif // DEBUG
+ return data_->object();
+}
+
+#ifdef DEBUG
+#define DEF_OBJECT_GETTER(T, ...) \
+ Handle<T> T##Ref::object() const { \
+ if (broker()->mode() == JSHeapBroker::kSerialized && \
+ data_->used_status == ObjectData::Usage::kUnused) { \
+ data_->used_status = ObjectData::Usage::kOnlyIdentityUsed; \
+ } \
+ return Handle<T>(reinterpret_cast<Address*>(data_->object().address())); \
+ }
+#else
+#define DEF_OBJECT_GETTER(T, ...) \
+ Handle<T> T##Ref::object() const { \
+ return Handle<T>(reinterpret_cast<Address*>(data_->object().address())); \
+ }
+#endif // DEBUG
+
+HEAP_BROKER_OBJECT_LIST(DEF_OBJECT_GETTER)
+#undef DEF_OBJECT_GETTER
+
+JSHeapBroker* ObjectRef::broker() const { return broker_; }
+
+ObjectData* ObjectRef::data() const {
+ switch (broker()->mode()) {
+ case JSHeapBroker::kDisabled:
+ CHECK_NE(data_->kind(), kSerializedHeapObject);
+ return data_;
+ case JSHeapBroker::kSerializing:
+ CHECK_NE(data_->kind(), kUnserializedHeapObject);
+ return data_;
+ case JSHeapBroker::kSerialized:
+#ifdef DEBUG
+ data_->used_status = ObjectData::Usage::kDataUsed;
+#endif // DEBUG
+ CHECK_NE(data_->kind(), kUnserializedHeapObject);
+ return data_;
+ case JSHeapBroker::kRetired:
+ UNREACHABLE();
+ }
+}
+
+Reduction NoChangeBecauseOfMissingData(JSHeapBroker* broker,
+ const char* function, int line) {
+ TRACE_MISSING(broker, "data in function " << function << " at line " << line);
+ return AdvancedReducer::NoChange();
+}
+
+NativeContextData::NativeContextData(JSHeapBroker* broker, ObjectData** storage,
+ Handle<NativeContext> object)
+ : ContextData(broker, storage, object),
+ state_(State::kUnserialized),
+ function_maps_(broker->zone()) {}
+
+void NativeContextData::Serialize(JSHeapBroker* broker) {
+ if (state_ != State::kUnserialized) return;
+ state_ = State::kSerializedOnMainThread;
+
+ TraceScope tracer(broker, this, "NativeContextData::Serialize");
+ Handle<NativeContext> context = Handle<NativeContext>::cast(object());
+
+#define SERIALIZE_MEMBER(type, name) \
+ DCHECK_NULL(name##_); \
+ name##_ = broker->GetOrCreateData(context->name()); \
+ if (!name##_->should_access_heap()) { \
+ if (name##_->IsMap() && \
+ !InstanceTypeChecker::IsContext(name##_->AsMap()->instance_type())) { \
+ name##_->AsMap()->SerializeConstructor(broker); \
+ } \
+ if (name##_->IsJSFunction()) { \
+ name##_->AsJSFunction()->Serialize(broker); \
+ } \
+ }
+ BROKER_COMPULSORY_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER)
+ if (!broker->is_isolate_bootstrapping()) {
+ BROKER_OPTIONAL_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER)
+ }
+#undef SERIALIZE_MEMBER
+
+ if (!bound_function_with_constructor_map_->should_access_heap()) {
+ bound_function_with_constructor_map_->AsMap()->SerializePrototype(broker);
+ }
+ if (!bound_function_without_constructor_map_->should_access_heap()) {
+ bound_function_without_constructor_map_->AsMap()->SerializePrototype(
+ broker);
+ }
+
+ scope_info_ = broker->GetOrCreateData(context->scope_info());
+}
+
+void NativeContextData::SerializeOnBackground(JSHeapBroker* broker) {
+ if (state_ == State::kFullySerialized) return;
+ DCHECK_EQ(state_, State::kSerializedOnMainThread);
+ state_ = State::kSerializedOnMainThread;
+
+ UnparkedScopeIfNeeded unparked_scope(broker);
+ TraceScope tracer(broker, this, "NativeContextData::SerializeOnBackground");
+ Handle<NativeContext> context = Handle<NativeContext>::cast(object());
+
+#define SERIALIZE_MEMBER(type, name) \
+ DCHECK_NULL(name##_); \
+ name##_ = broker->GetOrCreateData(context->name(kAcquireLoad), \
+ kAssumeMemoryFence); \
+ if (!name##_->should_access_heap()) { \
+ DCHECK(!name##_->IsJSFunction()); \
+ }
+ BROKER_COMPULSORY_BACKGROUND_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER)
+ if (!broker->is_isolate_bootstrapping()) {
+ BROKER_OPTIONAL_BACKGROUND_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER)
+ }
+#undef SERIALIZE_MEMBER
+
+ DCHECK(function_maps_.empty());
+ int const first = Context::FIRST_FUNCTION_MAP_INDEX;
+ int const last = Context::LAST_FUNCTION_MAP_INDEX;
+ function_maps_.reserve(last + 1 - first);
+ for (int i = first; i <= last; ++i) {
+ function_maps_.push_back(broker->GetOrCreateData(
+ context->get(i, kAcquireLoad), kAssumeMemoryFence));
+ }
+}
+
+void JSFunctionRef::Serialize() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsJSFunction()->Serialize(broker());
+}
+
+void JSFunctionRef::SerializeCodeAndFeedback() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsJSFunction()->SerializeCodeAndFeedback(broker());
+}
+
+bool JSBoundFunctionRef::serialized() const {
+ if (data_->should_access_heap()) return true;
+ if (data_->AsJSBoundFunction()->serialized()) return true;
+ TRACE_BROKER_MISSING(broker(), "data for JSBoundFunction " << this);
+ return false;
+}
+
+bool JSFunctionRef::serialized() const {
+ if (data_->should_access_heap()) return true;
+ if (data_->AsJSFunction()->serialized()) return true;
+ TRACE_BROKER_MISSING(broker(), "data for JSFunction " << this);
+ return false;
+}
+
+bool JSFunctionRef::serialized_code_and_feedback() const {
+ if (data_->should_access_heap()) return true;
+ return data()->AsJSFunction()->serialized_code_and_feedback();
+}
+
+CodeRef JSFunctionRef::code() const {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ return MakeRefAssumeMemoryFence(broker(), object()->code(kAcquireLoad));
+ }
+
+ return CodeRef(broker(), ObjectRef::data()->AsJSFunction()->code());
+}
+
+void SharedFunctionInfoRef::SerializeFunctionTemplateInfo() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsSharedFunctionInfo()->SerializeFunctionTemplateInfo(broker());
+}
+
+void SharedFunctionInfoRef::SerializeScopeInfoChain() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsSharedFunctionInfo()->SerializeScopeInfoChain(broker());
+}
+
+base::Optional<FunctionTemplateInfoRef>
+SharedFunctionInfoRef::function_template_info() const {
+ if (data_->should_access_heap()) {
+ if (!object()->IsApiFunction()) return {};
+ return TryMakeRef(broker(), FunctionTemplateInfo::cast(
+ object()->function_data(kAcquireLoad)));
+ }
+ ObjectData* function_template_info =
+ data()->AsSharedFunctionInfo()->function_template_info();
+ if (!function_template_info) return base::nullopt;
+ return FunctionTemplateInfoRef(broker(), function_template_info);
+}
+
+int SharedFunctionInfoRef::context_header_size() const {
+ IF_ACCESS_FROM_HEAP_C(scope_info().ContextHeaderLength);
+ return data()->AsSharedFunctionInfo()->context_header_size();
+}
+
+ScopeInfoRef SharedFunctionInfoRef::scope_info() const {
+ if (data_->should_access_heap()) {
+ return MakeRef(broker(), object()->scope_info());
+ }
+ return ScopeInfoRef(broker(), data()->AsSharedFunctionInfo()->scope_info());
+}
+
+void JSObjectRef::SerializeObjectCreateMap() {
+ if (data_->should_access_heap()) return;
+ CHECK_IMPLIES(!FLAG_turbo_concurrent_get_property_access_info,
+ broker()->mode() == JSHeapBroker::kSerializing);
+ data()->AsJSObject()->SerializeObjectCreateMap(broker());
+}
+
+bool MapRef::TrySerializeOwnDescriptor(InternalIndex descriptor_index) {
+ CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
+ if (data_->should_access_heap()) return true;
+ CHECK_IMPLIES(!FLAG_turbo_concurrent_get_property_access_info,
+ broker()->mode() == JSHeapBroker::kSerializing);
+ return data()->AsMap()->TrySerializeOwnDescriptor(broker(), descriptor_index);
+}
+
+void MapRef::SerializeOwnDescriptor(InternalIndex descriptor_index) {
+ CHECK(TrySerializeOwnDescriptor(descriptor_index));
+}
+
+bool MapRef::serialized_own_descriptor(InternalIndex descriptor_index) const {
+ CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
+ if (data_->should_access_heap()) return true;
+ ObjectData* maybe_desc_array_data = data()->AsMap()->instance_descriptors();
+ if (!maybe_desc_array_data) return false;
+ if (maybe_desc_array_data->should_access_heap()) return true;
+ DescriptorArrayData* desc_array_data =
+ maybe_desc_array_data->AsDescriptorArray();
+ return desc_array_data->serialized_descriptor(descriptor_index);
+}
+
+void MapRef::SerializeBackPointer() {
+ if (data_->should_access_heap()) return;
+ CHECK_IMPLIES(!FLAG_turbo_concurrent_get_property_access_info,
+ broker()->mode() == JSHeapBroker::kSerializing);
+ data()->AsMap()->SerializeBackPointer(broker());
+}
+
+bool MapRef::TrySerializePrototype() {
+ if (data_->should_access_heap()) return true;
+ CHECK_IMPLIES(!FLAG_turbo_concurrent_get_property_access_info,
+ broker()->mode() == JSHeapBroker::kSerializing);
+ return data()->AsMap()->TrySerializePrototype(broker());
+}
+
+void MapRef::SerializePrototype() { CHECK(TrySerializePrototype()); }
+
+void SourceTextModuleRef::Serialize() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsSourceTextModule()->Serialize(broker());
+}
+
+void NativeContextRef::Serialize() {
+ if (data_->should_access_heap()) return;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsNativeContext()->Serialize(broker());
+}
+
+void NativeContextRef::SerializeOnBackground() {
+ if (data_->should_access_heap()) return;
+ CHECK(broker()->mode() == JSHeapBroker::kSerializing ||
+ broker()->mode() == JSHeapBroker::kSerialized);
+ data()->AsNativeContext()->SerializeOnBackground(broker());
+}
+
+void JSTypedArrayRef::Serialize() {
+ if (data_->should_access_heap() || broker()->is_concurrent_inlining()) {
+ // Even if the typed array object itself is no longer serialized (besides
+ // the JSObject parts), the `buffer` field still is and thus we need to
+ // make sure to visit it.
+ // TODO(jgruber,v8:7790): Remove once JSObject is no longer serialized.
+ static_assert(
+ std::is_base_of<JSObject, decltype(object()->buffer())>::value, "");
+ STATIC_ASSERT(IsSerializedRef<JSObject>());
+ MakeRef<JSObject>(broker(), object()->buffer());
+ } else {
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsJSTypedArray()->Serialize(broker());
+ }
+}
+
+bool JSTypedArrayRef::serialized() const {
+ if (data_->should_access_heap()) return true;
+ if (broker()->is_concurrent_inlining()) return true;
+ if (data_->AsJSTypedArray()->serialized()) return true;
+ TRACE_BROKER_MISSING(broker(), "data for JSTypedArray " << this);
+ return false;
+}
+
+bool JSBoundFunctionRef::Serialize() {
+ if (data_->should_access_heap()) return true;
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ return data()->AsJSBoundFunction()->Serialize(broker());
+}
+
+bool PropertyCellRef::Serialize() const {
+ if (data_->should_access_heap()) return true;
+ CHECK(broker()->mode() == JSHeapBroker::kSerializing ||
+ broker()->mode() == JSHeapBroker::kSerialized);
+ return data()->AsPropertyCell()->Serialize(broker());
+}
+
+void FunctionTemplateInfoRef::SerializeCallCode() {
+ if (data_->should_access_heap()) {
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ // CallHandlerInfo::data may still hold a serialized heap object, so we
+ // have to make the broker aware of it.
+ // TODO(v8:7790): Remove this case once ObjectRef is never serialized.
+ Handle<HeapObject> call_code(object()->call_code(kAcquireLoad),
+ broker()->isolate());
+ if (call_code->IsCallHandlerInfo()) {
+ broker()->GetOrCreateData(
+ Handle<CallHandlerInfo>::cast(call_code)->data());
+ }
+ return;
+ }
+ CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
+ data()->AsFunctionTemplateInfo()->SerializeCallCode(broker());
+}
+
+base::Optional<PropertyCellRef> JSGlobalObjectRef::GetPropertyCell(
+ NameRef const& name, SerializationPolicy policy) const {
+ if (data_->should_access_heap()) {
+ return GetPropertyCellFromHeap(broker(), name.object());
+ }
+ ObjectData* property_cell_data = data()->AsJSGlobalObject()->GetPropertyCell(
+ broker(), name.data(), policy);
+ if (property_cell_data == nullptr) return base::nullopt;
+ return PropertyCellRef(broker(), property_cell_data);
+}
+
+std::ostream& operator<<(std::ostream& os, const ObjectRef& ref) {
+ if (!FLAG_concurrent_recompilation) {
+ // We cannot be in a background thread so it's safe to read the heap.
+ AllowHandleDereference allow_handle_dereference;
+ return os << ref.data() << " {" << ref.object() << "}";
+ } else if (ref.data_->should_access_heap()) {
+ return os << ref.data() << " {" << ref.object() << "}";
+ } else {
+ return os << ref.data();
+ }
+}
+
+unsigned CodeRef::GetInlinedBytecodeSize() const {
+ if (data_->should_access_heap()) {
+ unsigned value = object()->inlined_bytecode_size();
+ if (value > 0) {
+ // Don't report inlined bytecode size if the code object was already
+ // deoptimized.
+ value = object()->marked_for_deoptimization() ? 0 : value;
+ }
+ return value;
+ }
+
+ return ObjectRef::data()->AsCode()->inlined_bytecode_size();
+}
+
+#undef BIMODAL_ACCESSOR
+#undef BIMODAL_ACCESSOR_B
+#undef BIMODAL_ACCESSOR_C
+#undef IF_ACCESS_FROM_HEAP
+#undef IF_ACCESS_FROM_HEAP_C
+#undef TRACE
+#undef TRACE_MISSING
+
+} // namespace compiler
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/src/compiler/heap-refs.h b/deps/v8/src/compiler/heap-refs.h
index 9d12553766..d1f40bbedf 100644
--- a/deps/v8/src/compiler/heap-refs.h
+++ b/deps/v8/src/compiler/heap-refs.h
@@ -40,6 +40,13 @@ struct WasmModule;
namespace compiler {
+class CompilationDependencies;
+struct FeedbackSource;
+class JSHeapBroker;
+class ObjectData;
+class PerIsolateCompilerCache;
+class PropertyAccessInfo;
+
// Whether we are loading a property or storing to a property.
// For a store during literal creation, do not walk up the prototype chain.
enum class AccessMode { kLoad, kStore, kStoreInLiteral, kHas };
@@ -60,111 +67,100 @@ enum class OddballType : uint8_t {
kOther // Oddball, but none of the above.
};
-// This list is sorted such that subtypes appear before their supertypes.
-// This list must not contain a type if it doesn't contain all of its subtypes
-// too. For example, it CANNOT contain FixedArrayBase if it doesn't contain
-// FixedDoubleArray, BytecodeArray and FixedArray.
-// DO NOT VIOLATE THESE TWO PROPERTIES!
-// Classes on this list will skip serialization when
-// FLAG_turbo_direct_heap_access is on. Otherwise, they might get serialized.
-#define HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(V) \
- /* Subtypes of FixedArray */ \
- V(ObjectBoilerplateDescription) \
- V(ScopeInfo) \
- /* Subtypes of String */ \
- V(InternalizedString) \
- /* Subtypes of FixedArrayBase */ \
- V(BytecodeArray) \
- /* Subtypes of Name */ \
- V(String) \
- V(Symbol) \
- /* Subtypes of HeapObject */ \
- V(AccessorInfo) \
- V(ArrayBoilerplateDescription) \
- V(CallHandlerInfo) \
- V(Cell) \
- V(Code) \
- V(DescriptorArray) \
- V(FeedbackCell) \
- V(FeedbackVector) \
- V(FunctionTemplateInfo) \
- V(Name) \
- V(RegExpBoilerplateDescription) \
- V(SharedFunctionInfo) \
- V(TemplateObjectDescription)
+enum class RefSerializationKind {
+ // Will skip serialization when --concurrent-inlining is on. Otherwise, they
+ // might get serialized. (The cake is a lie.)
+ kNeverSerialized,
+ // Can be serialized on demand from the background thread.
+ kBackgroundSerialized,
+ kSerialized,
+};
// This list is sorted such that subtypes appear before their supertypes.
// DO NOT VIOLATE THIS PROPERTY!
-// Classes in this list behave like serialized classes, but they allow lazy
-// serialization from background threads where this is safe (e.g. for objects
-// that are immutable and fully initialized once visible). Pass
-// ObjectRef::BackgroundSerialization::kAllowed to the ObjectRef constructor
-// for objects where serialization from the background thread is safe.
-#define HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(V) \
- /* Subtypes of HeapObject */ \
- V(BigInt) \
- V(HeapNumber) \
- V(Map)
+#define HEAP_BROKER_OBJECT_LIST(V) \
+ /* Subtypes of JSObject */ \
+ V(JSArray, RefSerializationKind::kSerialized) \
+ V(JSBoundFunction, RefSerializationKind::kSerialized) \
+ V(JSDataView, RefSerializationKind::kSerialized) \
+ V(JSFunction, RefSerializationKind::kSerialized) \
+ V(JSGlobalObject, RefSerializationKind::kSerialized) \
+ V(JSGlobalProxy, RefSerializationKind::kSerialized) \
+ V(JSTypedArray, RefSerializationKind::kSerialized) \
+ /* Subtypes of Context */ \
+ V(NativeContext, RefSerializationKind::kSerialized) \
+ /* Subtypes of FixedArray */ \
+ V(ObjectBoilerplateDescription, RefSerializationKind::kNeverSerialized) \
+ V(ScriptContextTable, RefSerializationKind::kBackgroundSerialized) \
+ /* Subtypes of String */ \
+ V(InternalizedString, RefSerializationKind::kNeverSerialized) \
+ /* Subtypes of FixedArrayBase */ \
+ V(BytecodeArray, RefSerializationKind::kNeverSerialized) \
+ V(FixedArray, RefSerializationKind::kBackgroundSerialized) \
+ V(FixedDoubleArray, RefSerializationKind::kNeverSerialized) \
+ /* Subtypes of Name */ \
+ V(String, RefSerializationKind::kNeverSerialized) \
+ V(Symbol, RefSerializationKind::kNeverSerialized) \
+ /* Subtypes of JSReceiver */ \
+ V(JSObject, RefSerializationKind::kSerialized) \
+ /* Subtypes of HeapObject */ \
+ V(AccessorInfo, RefSerializationKind::kNeverSerialized) \
+ V(AllocationSite, RefSerializationKind::kSerialized) \
+ V(ArrayBoilerplateDescription, RefSerializationKind::kNeverSerialized) \
+ V(BigInt, RefSerializationKind::kBackgroundSerialized) \
+ V(CallHandlerInfo, RefSerializationKind::kNeverSerialized) \
+ V(Cell, RefSerializationKind::kNeverSerialized) \
+ V(Code, RefSerializationKind::kNeverSerialized) \
+ V(Context, RefSerializationKind::kSerialized) \
+ V(DescriptorArray, RefSerializationKind::kNeverSerialized) \
+ V(FeedbackCell, RefSerializationKind::kNeverSerialized) \
+ V(FeedbackVector, RefSerializationKind::kNeverSerialized) \
+ V(FixedArrayBase, RefSerializationKind::kBackgroundSerialized) \
+ V(FunctionTemplateInfo, RefSerializationKind::kNeverSerialized) \
+ V(HeapNumber, RefSerializationKind::kNeverSerialized) \
+ V(JSReceiver, RefSerializationKind::kBackgroundSerialized) \
+ V(Map, RefSerializationKind::kBackgroundSerialized) \
+ V(Name, RefSerializationKind::kNeverSerialized) \
+ V(PropertyCell, RefSerializationKind::kBackgroundSerialized) \
+ V(RegExpBoilerplateDescription, RefSerializationKind::kNeverSerialized) \
+ V(ScopeInfo, RefSerializationKind::kNeverSerialized) \
+ V(SharedFunctionInfo, RefSerializationKind::kNeverSerialized) \
+ V(SourceTextModule, RefSerializationKind::kNeverSerialized) \
+ V(TemplateObjectDescription, RefSerializationKind::kNeverSerialized) \
+ /* Subtypes of Object */ \
+ V(HeapObject, RefSerializationKind::kBackgroundSerialized)
+
+#define FORWARD_DECL(Name, ...) class Name##Ref;
+HEAP_BROKER_OBJECT_LIST(FORWARD_DECL)
+#undef FORWARD_DECL
-// This list is sorted such that subtypes appear before their supertypes.
-// DO NOT VIOLATE THIS PROPERTY!
-// Types in this list can be serialized on demand from the background thread.
-#define HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(V) \
- /* Subtypes of HeapObject */ \
- V(PropertyCell)
+class ObjectRef;
-// This list is sorted such that subtypes appear before their supertypes.
-// DO NOT VIOLATE THIS PROPERTY!
-#define HEAP_BROKER_SERIALIZED_OBJECT_LIST(V) \
- /* Subtypes of JSObject */ \
- V(JSArray) \
- V(JSBoundFunction) \
- V(JSDataView) \
- V(JSFunction) \
- V(JSGlobalObject) \
- V(JSGlobalProxy) \
- V(JSTypedArray) \
- /* Subtypes of Context */ \
- V(NativeContext) \
- /* Subtypes of FixedArray */ \
- V(Context) \
- V(ScriptContextTable) \
- /* Subtypes of FixedArrayBase */ \
- V(FixedArray) \
- V(FixedDoubleArray) \
- /* Subtypes of JSReceiver */ \
- V(JSObject) \
- /* Subtypes of HeapObject */ \
- V(AllocationSite) \
- V(FixedArrayBase) \
- V(JSReceiver) \
- V(SourceTextModule) \
- /* Subtypes of Object */ \
- V(HeapObject)
+template <class T>
+struct ref_traits;
-class CompilationDependencies;
-struct FeedbackSource;
-class JSHeapBroker;
-class ObjectData;
-class PerIsolateCompilerCache;
-class PropertyAccessInfo;
-#define FORWARD_DECL(Name) class Name##Ref;
-HEAP_BROKER_SERIALIZED_OBJECT_LIST(FORWARD_DECL)
-HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(FORWARD_DECL)
-HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(FORWARD_DECL)
-HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(FORWARD_DECL)
-#undef FORWARD_DECL
+#define REF_TRAITS(Name, Kind) \
+ template <> \
+ struct ref_traits<Name> { \
+ using ref_type = Name##Ref; \
+ static constexpr RefSerializationKind ref_serialization_kind = Kind; \
+ };
+HEAP_BROKER_OBJECT_LIST(REF_TRAITS)
+#undef REF_TYPE
+
+template <>
+struct ref_traits<Object> {
+ using ref_type = ObjectRef;
+ // Note: While a bit awkward, this artificial ref serialization kind value is
+ // okay: smis are never-serialized, and we never create raw non-smi
+ // ObjectRefs (they would at least be HeapObjectRefs instead).
+ static constexpr RefSerializationKind ref_serialization_kind =
+ RefSerializationKind::kNeverSerialized;
+};
class V8_EXPORT_PRIVATE ObjectRef {
public:
- enum class BackgroundSerialization {
- kDisallowed,
- kAllowed,
- };
-
ObjectRef(JSHeapBroker* broker, Handle<Object> object,
- BackgroundSerialization background_serialization =
- BackgroundSerialization::kDisallowed,
bool check_type = true);
ObjectRef(JSHeapBroker* broker, ObjectData* data, bool check_type = true)
: data_(data), broker_(broker) {
@@ -178,25 +174,19 @@ class V8_EXPORT_PRIVATE ObjectRef {
bool IsSmi() const;
int AsSmi() const;
-#define HEAP_IS_METHOD_DECL(Name) bool Is##Name() const;
- HEAP_BROKER_SERIALIZED_OBJECT_LIST(HEAP_IS_METHOD_DECL)
- HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(HEAP_IS_METHOD_DECL)
- HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(HEAP_IS_METHOD_DECL)
- HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(HEAP_IS_METHOD_DECL)
+#define HEAP_IS_METHOD_DECL(Name, ...) bool Is##Name() const;
+ HEAP_BROKER_OBJECT_LIST(HEAP_IS_METHOD_DECL)
#undef HEAP_IS_METHOD_DECL
-#define HEAP_AS_METHOD_DECL(Name) Name##Ref As##Name() const;
- HEAP_BROKER_SERIALIZED_OBJECT_LIST(HEAP_AS_METHOD_DECL)
- HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(HEAP_AS_METHOD_DECL)
- HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(HEAP_AS_METHOD_DECL)
- HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(HEAP_AS_METHOD_DECL)
+#define HEAP_AS_METHOD_DECL(Name, ...) Name##Ref As##Name() const;
+ HEAP_BROKER_OBJECT_LIST(HEAP_AS_METHOD_DECL)
#undef HEAP_AS_METHOD_DECL
bool IsNull() const;
bool IsNullOrUndefined() const;
bool IsTheHole() const;
- bool BooleanValue() const;
+ base::Optional<bool> TryGetBooleanValue() const;
Maybe<double> OddballToNumber() const;
Isolate* isolate() const;
@@ -272,20 +262,11 @@ class HeapObjectType {
// Constructors are carefully defined such that we do a type check on
// the outermost Ref class in the inheritance chain only.
-#define DEFINE_REF_CONSTRUCTOR(name, base) \
- name##Ref(JSHeapBroker* broker, Handle<Object> object, \
- BackgroundSerialization background_serialization = \
- BackgroundSerialization::kDisallowed, \
- bool check_type = true) \
- : base(broker, object, background_serialization, false) { \
+#define DEFINE_REF_CONSTRUCTOR(Name, Base) \
+ Name##Ref(JSHeapBroker* broker, ObjectData* data, bool check_type = true) \
+ : Base(broker, data, false) { \
if (check_type) { \
- CHECK(Is##name()); \
- } \
- } \
- name##Ref(JSHeapBroker* broker, ObjectData* data, bool check_type = true) \
- : base(broker, data, false) { \
- if (check_type) { \
- CHECK(Is##name()); \
+ CHECK(Is##Name()); \
} \
}
@@ -435,6 +416,11 @@ class RegExpBoilerplateDescriptionRef : public HeapObjectRef {
int flags() const;
};
+// HeapNumberRef is only created for immutable HeapNumbers. Mutable
+// HeapNumbers (those owned by in-object or backing store fields with
+// representation type Double are not exposed to the compiler through
+// HeapNumberRef. Instead, we read their value, and protect that read
+// with a field-constness Dependency.
class HeapNumberRef : public HeapObjectRef {
public:
DEFINE_REF_CONSTRUCTOR(HeapNumber, HeapObjectRef)
@@ -451,9 +437,9 @@ class ContextRef : public HeapObjectRef {
Handle<Context> object() const;
// {previous} decrements {depth} by 1 for each previous link successfully
- // followed. If {depth} != 0 on function return, then it only got
- // partway to the desired depth. If {serialize} is true, then
- // {previous} will cache its findings.
+ // followed. If {depth} != 0 on function return, then it only got partway to
+ // the desired depth. If {serialize} is true, then {previous} will cache its
+ // findings (unless concurrent inlining is enabled).
ContextRef previous(size_t* depth,
SerializationPolicy policy =
SerializationPolicy::kAssumeSerialized) const;
@@ -464,15 +450,14 @@ class ContextRef : public HeapObjectRef {
SerializationPolicy::kAssumeSerialized) const;
SourceTextModuleRef GetModule(SerializationPolicy policy) const;
-
- // We only serialize the ScopeInfo if certain Promise
- // builtins are called.
- void SerializeScopeInfo();
- base::Optional<ScopeInfoRef> scope_info() const;
};
+// TODO(jgruber): Don't serialize NativeContext fields once all refs can be
+// created concurrently.
+
#define BROKER_COMPULSORY_NATIVE_CONTEXT_FIELDS(V) \
V(JSFunction, array_function) \
+ V(JSFunction, function_prototype_apply) \
V(JSFunction, boolean_function) \
V(JSFunction, bigint_function) \
V(JSFunction, number_function) \
@@ -532,6 +517,8 @@ class NativeContextRef : public ContextRef {
public:
DEFINE_REF_CONSTRUCTOR(NativeContext, ContextRef)
+ bool is_unserialized_heap_object() const;
+
Handle<NativeContext> object() const;
void Serialize();
@@ -556,13 +543,6 @@ class NameRef : public HeapObjectRef {
bool IsUniqueName() const;
};
-class ScriptContextTableRef : public HeapObjectRef {
- public:
- DEFINE_REF_CONSTRUCTOR(ScriptContextTable, HeapObjectRef)
-
- Handle<ScriptContextTable> object() const;
-};
-
class DescriptorArrayRef : public HeapObjectRef {
public:
DEFINE_REF_CONSTRUCTOR(DescriptorArray, HeapObjectRef)
@@ -701,8 +681,11 @@ class V8_EXPORT_PRIVATE MapRef : public HeapObjectRef {
HeapObjectRef GetBackPointer() const;
void SerializePrototype();
- bool serialized_prototype() const;
- HeapObjectRef prototype() const;
+ // TODO(neis): We should be able to remove TrySerializePrototype once
+ // concurrent-inlining is always on. Then we can also change the return type
+ // of prototype() back to HeapObjectRef.
+ bool TrySerializePrototype();
+ base::Optional<HeapObjectRef> prototype() const;
void SerializeForElementLoad();
@@ -711,6 +694,7 @@ class V8_EXPORT_PRIVATE MapRef : public HeapObjectRef {
ZoneVector<MapRef>* prototype_maps);
// Concerning the underlying instance_descriptors:
+ bool TrySerializeOwnDescriptor(InternalIndex descriptor_index);
void SerializeOwnDescriptor(InternalIndex descriptor_index);
bool serialized_own_descriptor(InternalIndex descriptor_index) const;
MapRef FindFieldOwner(InternalIndex descriptor_index) const;
@@ -754,8 +738,8 @@ class FunctionTemplateInfoRef : public HeapObjectRef {
void SerializeCallCode();
base::Optional<CallHandlerInfoRef> call_code() const;
- Address c_function() const;
- const CFunctionInfo* c_signature() const;
+ ZoneVector<Address> c_functions() const;
+ ZoneVector<const CFunctionInfo*> c_signatures() const;
HolderLookupResult LookupHolderOfExpectedType(
MapRef receiver_map,
@@ -779,14 +763,6 @@ class ArrayBoilerplateDescriptionRef : public HeapObjectRef {
int constants_elements_length() const;
};
-class ObjectBoilerplateDescriptionRef : public HeapObjectRef {
- public:
- using HeapObjectRef::HeapObjectRef;
- Handle<ObjectBoilerplateDescription> object() const;
-
- int size() const;
-};
-
class FixedArrayRef : public FixedArrayBaseRef {
public:
DEFINE_REF_CONSTRUCTOR(FixedArray, FixedArrayBaseRef)
@@ -794,6 +770,12 @@ class FixedArrayRef : public FixedArrayBaseRef {
Handle<FixedArray> object() const;
ObjectRef get(int i) const;
+
+ // As above but may fail if Ref construction is not possible (e.g. for
+ // serialized types on the background thread).
+ // TODO(jgruber): Remove once all Ref types are never-serialized or
+ // background-serialized and can thus be created on background threads.
+ base::Optional<ObjectRef> TryGet(int i) const;
};
class FixedDoubleArrayRef : public FixedArrayBaseRef {
@@ -802,7 +784,10 @@ class FixedDoubleArrayRef : public FixedArrayBaseRef {
Handle<FixedDoubleArray> object() const;
- Float64 get(int i) const;
+ // Due to 64-bit unaligned reads, only usable for
+ // immutable-after-initialization FixedDoubleArrays protected by
+ // acquire-release semantics (such as boilerplate elements).
+ Float64 GetFromImmutableFixedDoubleArray(int i) const;
};
class BytecodeArrayRef : public FixedArrayBaseRef {
@@ -826,6 +811,22 @@ class BytecodeArrayRef : public FixedArrayBaseRef {
int handler_table_size() const;
};
+class ScriptContextTableRef : public FixedArrayRef {
+ public:
+ DEFINE_REF_CONSTRUCTOR(ScriptContextTable, FixedArrayRef)
+
+ Handle<ScriptContextTable> object() const;
+};
+
+class ObjectBoilerplateDescriptionRef : public FixedArrayRef {
+ public:
+ DEFINE_REF_CONSTRUCTOR(ObjectBoilerplateDescription, FixedArrayRef)
+
+ Handle<ObjectBoilerplateDescription> object() const;
+
+ int size() const;
+};
+
class JSArrayRef : public JSObjectRef {
public:
DEFINE_REF_CONSTRUCTOR(JSArray, JSObjectRef)
@@ -965,7 +966,7 @@ class SourceTextModuleRef : public HeapObjectRef {
void Serialize();
base::Optional<CellRef> GetCell(int cell_index) const;
- ObjectRef import_meta() const;
+ base::Optional<ObjectRef> import_meta() const;
};
class TemplateObjectDescriptionRef : public HeapObjectRef {
diff --git a/deps/v8/src/compiler/int64-lowering.cc b/deps/v8/src/compiler/int64-lowering.cc
index 706cd7de50..28eb30969c 100644
--- a/deps/v8/src/compiler/int64-lowering.cc
+++ b/deps/v8/src/compiler/int64-lowering.cc
@@ -392,8 +392,7 @@ void Int64Lowering::LowerNode(Node* node) {
if (call_descriptor->GetReturnType(old_index).representation() ==
MachineRepresentation::kWord64) {
Node* high_node = graph()->NewNode(
- common()->Projection(new_index + 1), node,
- graph()->start());
+ common()->Projection(new_index + 1), node, graph()->start());
ReplaceNode(use_node, use_node, high_node);
++new_index;
}
@@ -684,11 +683,11 @@ void Int64Lowering::LowerNode(Node* node) {
ReplaceNode(node, low_node, high_node);
break;
}
- case IrOpcode::kWord64Rol:
+ case IrOpcode::kWord64RolLowerable:
DCHECK(machine()->Word32Rol().IsSupported());
V8_FALLTHROUGH;
- case IrOpcode::kWord64Ror: {
- DCHECK_EQ(2, node->InputCount());
+ case IrOpcode::kWord64RorLowerable: {
+ DCHECK_EQ(3, node->InputCount());
Node* input = node->InputAt(0);
Node* shift = HasReplacementLow(node->InputAt(1))
? GetReplacementLow(node->InputAt(1))
@@ -721,7 +720,7 @@ void Int64Lowering::LowerNode(Node* node) {
auto* op1 = machine()->Word32Shr();
auto* op2 = machine()->Word32Shl();
- bool is_ror = node->opcode() == IrOpcode::kWord64Ror;
+ bool is_ror = node->opcode() == IrOpcode::kWord64RorLowerable;
if (!is_ror) std::swap(op1, op2);
Node* low_node =
@@ -742,7 +741,7 @@ void Int64Lowering::LowerNode(Node* node) {
graph()->NewNode(common()->Int32Constant(0x1F)));
}
- bool is_ror = node->opcode() == IrOpcode::kWord64Ror;
+ bool is_ror = node->opcode() == IrOpcode::kWord64RorLowerable;
Node* inv_mask =
is_ror ? graph()->NewNode(
machine()->Word32Xor(),
@@ -774,6 +773,7 @@ void Int64Lowering::LowerNode(Node* node) {
graph(), common(),
graph()->NewNode(machine()->Int32LessThan(), masked_shift6,
graph()->NewNode(common()->Int32Constant(32))));
+ lt32.Chain(NodeProperties::GetControlInput(node));
// The low word and the high word can be swapped either at the input or
// at the output. We swap the inputs so that shift does not have to be
@@ -807,13 +807,14 @@ void Int64Lowering::LowerNode(Node* node) {
}
break;
}
- case IrOpcode::kWord64Clz: {
- DCHECK_EQ(1, node->InputCount());
+ case IrOpcode::kWord64ClzLowerable: {
+ DCHECK_EQ(2, node->InputCount());
Node* input = node->InputAt(0);
Diamond d(
graph(), common(),
graph()->NewNode(machine()->Word32Equal(), GetReplacementHigh(input),
graph()->NewNode(common()->Int32Constant(0))));
+ d.Chain(NodeProperties::GetControlInput(node));
Node* low_node = d.Phi(
MachineRepresentation::kWord32,
@@ -825,14 +826,16 @@ void Int64Lowering::LowerNode(Node* node) {
ReplaceNode(node, low_node, graph()->NewNode(common()->Int32Constant(0)));
break;
}
- case IrOpcode::kWord64Ctz: {
- DCHECK_EQ(1, node->InputCount());
+ case IrOpcode::kWord64CtzLowerable: {
+ DCHECK_EQ(2, node->InputCount());
DCHECK(machine()->Word32Ctz().IsSupported());
Node* input = node->InputAt(0);
Diamond d(
graph(), common(),
graph()->NewNode(machine()->Word32Equal(), GetReplacementLow(input),
graph()->NewNode(common()->Int32Constant(0))));
+ d.Chain(NodeProperties::GetControlInput(node));
+
Node* low_node =
d.Phi(MachineRepresentation::kWord32,
graph()->NewNode(machine()->Int32Add(),
@@ -844,6 +847,12 @@ void Int64Lowering::LowerNode(Node* node) {
ReplaceNode(node, low_node, graph()->NewNode(common()->Int32Constant(0)));
break;
}
+ case IrOpcode::kWord64Ror:
+ case IrOpcode::kWord64Rol:
+ case IrOpcode::kWord64Ctz:
+ case IrOpcode::kWord64Clz:
+ FATAL("%s operator should not be used in 32-bit systems",
+ node->op()->mnemonic());
case IrOpcode::kWord64Popcnt: {
DCHECK_EQ(1, node->InputCount());
Node* input = node->InputAt(0);
@@ -1030,7 +1039,7 @@ void Int64Lowering::LowerNode(Node* node) {
default: { DefaultLowering(node); }
}
-} // NOLINT(readability/fn_size)
+}
void Int64Lowering::LowerComparison(Node* node, const Operator* high_word_op,
const Operator* low_word_op) {
diff --git a/deps/v8/src/compiler/js-call-reducer.cc b/deps/v8/src/compiler/js-call-reducer.cc
index bb7a11d16d..99a29715f5 100644
--- a/deps/v8/src/compiler/js-call-reducer.cc
+++ b/deps/v8/src/compiler/js-call-reducer.cc
@@ -15,6 +15,7 @@
#include "src/codegen/tnode.h"
#include "src/compiler/access-builder.h"
#include "src/compiler/access-info.h"
+#include "src/compiler/allocation-builder-inl.h"
#include "src/compiler/allocation-builder.h"
#include "src/compiler/compilation-dependencies.h"
#include "src/compiler/feedback-source.h"
@@ -42,7 +43,7 @@ namespace internal {
namespace compiler {
// Shorter lambda declarations with less visual clutter.
-#define _ [&]() // NOLINT(whitespace/braces)
+#define _ [&]()
class JSCallReducerAssembler : public JSGraphAssembler {
protected:
@@ -889,8 +890,8 @@ class FastApiCallReducerAssembler : public JSCallReducerAssembler {
Node* holder, const SharedFunctionInfoRef shared, Node* target,
const int arity, Node* effect)
: JSCallReducerAssembler(reducer, node),
- c_function_(function_template_info.c_function()),
- c_signature_(function_template_info.c_signature()),
+ c_functions_(function_template_info.c_functions()),
+ c_signatures_(function_template_info.c_signatures()),
function_template_info_(function_template_info),
receiver_(receiver),
holder_(holder),
@@ -898,8 +899,8 @@ class FastApiCallReducerAssembler : public JSCallReducerAssembler {
target_(target),
arity_(arity) {
DCHECK_EQ(IrOpcode::kJSCall, node->opcode());
- DCHECK_NE(c_function_, kNullAddress);
- CHECK_NOT_NULL(c_signature_);
+ CHECK_GT(c_functions_.size(), 0);
+ CHECK_GT(c_signatures_.size(), 0);
InitializeEffectControl(effect, NodeProperties::GetControlInput(node));
}
@@ -908,13 +909,16 @@ class FastApiCallReducerAssembler : public JSCallReducerAssembler {
// C arguments include the receiver at index 0. Thus C index 1 corresponds
// to the JS argument 0, etc.
const int c_argument_count =
- static_cast<int>(c_signature_->ArgumentCount());
+ static_cast<int>(c_signatures_[0]->ArgumentCount());
CHECK_GE(c_argument_count, kReceiver);
int cursor = 0;
base::SmallVector<Node*, kInlineSize> inputs(c_argument_count + arity_ +
kExtraInputsCount);
- inputs[cursor++] = ExternalConstant(ExternalReference::Create(c_function_));
+ // Multiple function overloads not supported yet, always call the first
+ // overload.
+ inputs[cursor++] =
+ ExternalConstant(ExternalReference::Create(c_functions_[0]));
inputs[cursor++] = n.receiver();
@@ -986,12 +990,12 @@ class FastApiCallReducerAssembler : public JSCallReducerAssembler {
TNode<Object> FastApiCall(CallDescriptor* descriptor, Node** inputs,
size_t inputs_size) {
return AddNode<Object>(graph()->NewNode(
- simplified()->FastApiCall(c_signature_, feedback(), descriptor),
+ simplified()->FastApiCall(c_signatures_[0], feedback(), descriptor),
static_cast<int>(inputs_size), inputs));
}
- const Address c_function_;
- const CFunctionInfo* const c_signature_;
+ const ZoneVector<Address> c_functions_;
+ const ZoneVector<const CFunctionInfo*> c_signatures_;
const FunctionTemplateInfoRef function_template_info_;
Node* const receiver_;
Node* const holder_;
@@ -2170,17 +2174,17 @@ TNode<Object> PromiseBuiltinReducerAssembler::ReducePromiseConstructor(
TrueConstant());
// Allocate closures for the resolve and reject cases.
- SharedFunctionInfoRef resolve_sfi(
- broker_, broker_->isolate()
- ->factory()
- ->promise_capability_default_resolve_shared_fun());
+ SharedFunctionInfoRef resolve_sfi =
+ MakeRef(broker_, broker_->isolate()
+ ->factory()
+ ->promise_capability_default_resolve_shared_fun());
TNode<JSFunction> resolve =
CreateClosureFromBuiltinSharedFunctionInfo(resolve_sfi, promise_context);
- SharedFunctionInfoRef reject_sfi(
- broker_, broker_->isolate()
- ->factory()
- ->promise_capability_default_reject_shared_fun());
+ SharedFunctionInfoRef reject_sfi =
+ MakeRef(broker_, broker_->isolate()
+ ->factory()
+ ->promise_capability_default_reject_shared_fun());
TNode<JSFunction> reject =
CreateClosureFromBuiltinSharedFunctionInfo(reject_sfi, promise_context);
@@ -2447,6 +2451,10 @@ Reduction JSCallReducer::ReduceObjectConstructor(Node* node) {
Reduction JSCallReducer::ReduceFunctionPrototypeApply(Node* node) {
JSCallNode n(node);
CallParameters const& p = n.Parameters();
+ CallFeedbackRelation new_feedback_relation =
+ p.feedback_relation() == CallFeedbackRelation::kReceiver
+ ? CallFeedbackRelation::kTarget
+ : CallFeedbackRelation::kUnrelated;
int arity = p.arity_without_implicit_args();
ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny;
if (arity == 0) {
@@ -2479,9 +2487,9 @@ Reduction JSCallReducer::ReduceFunctionPrototypeApply(Node* node) {
// Morph the {node} to a {JSCallWithArrayLike}.
NodeProperties::ChangeOp(
- node, javascript()->CallWithArrayLike(
- p.frequency(), p.feedback(), p.speculation_mode(),
- CallFeedbackRelation::kUnrelated));
+ node, javascript()->CallWithArrayLike(p.frequency(), p.feedback(),
+ p.speculation_mode(),
+ new_feedback_relation));
return Changed(node).FollowedBy(ReduceJSCallWithArrayLike(node));
} else {
// Check whether {arguments_list} is null.
@@ -2509,7 +2517,7 @@ Reduction JSCallReducer::ReduceFunctionPrototypeApply(Node* node) {
Node* value0 = effect0 = control0 = graph()->NewNode(
javascript()->CallWithArrayLike(p.frequency(), p.feedback(),
p.speculation_mode(),
- CallFeedbackRelation::kUnrelated),
+ new_feedback_relation),
target, this_argument, arguments_list, n.feedback_vector(), context,
frame_state, effect0, control0);
@@ -2559,7 +2567,7 @@ Reduction JSCallReducer::ReduceFunctionPrototypeApply(Node* node) {
NodeProperties::ChangeOp(
node, javascript()->Call(JSCallNode::ArityForArgc(arity), p.frequency(),
p.feedback(), convert_mode, p.speculation_mode(),
- CallFeedbackRelation::kUnrelated));
+ new_feedback_relation));
// Try to further reduce the JSCall {node}.
return Changed(node).FollowedBy(ReduceJSCall(node));
}
@@ -2591,28 +2599,20 @@ Reduction JSCallReducer::ReduceFunctionPrototypeBind(Node* node) {
if (!inference.HaveMaps()) return NoChange();
MapHandles const& receiver_maps = inference.GetMaps();
- MapRef first_receiver_map(broker(), receiver_maps[0]);
+ MapRef first_receiver_map = MakeRef(broker(), receiver_maps[0]);
bool const is_constructor = first_receiver_map.is_constructor();
- if (first_receiver_map.ShouldHaveBeenSerialized() &&
- !first_receiver_map.serialized_prototype()) {
- TRACE_BROKER_MISSING(broker(),
- "serialized prototype on map " << first_receiver_map);
- return inference.NoChange();
- }
- ObjectRef const prototype = first_receiver_map.prototype();
- for (Handle<Map> const map : receiver_maps) {
- MapRef receiver_map(broker(), map);
+ base::Optional<HeapObjectRef> const prototype =
+ first_receiver_map.prototype();
+ if (!prototype.has_value()) return inference.NoChange();
- if (receiver_map.ShouldHaveBeenSerialized() &&
- !receiver_map.serialized_prototype()) {
- TRACE_BROKER_MISSING(broker(),
- "serialized prototype on map " << receiver_map);
- return inference.NoChange();
- }
+ for (Handle<Map> const map : receiver_maps) {
+ MapRef receiver_map = MakeRef(broker(), map);
+ base::Optional<HeapObjectRef> map_prototype = receiver_map.prototype();
+ if (!map_prototype.has_value()) return inference.NoChange();
// Check for consistency among the {receiver_maps}.
- if (!receiver_map.prototype().equals(prototype) ||
+ if (!map_prototype->equals(*prototype) ||
receiver_map.is_constructor() != is_constructor ||
!InstanceTypeChecker::IsJSFunctionOrBoundFunction(
receiver_map.instance_type())) {
@@ -2643,8 +2643,8 @@ Reduction JSCallReducer::ReduceFunctionPrototypeBind(Node* node) {
return inference.NoChange();
}
ReadOnlyRoots roots(isolate());
- StringRef length_string(broker(), roots.length_string_handle());
- StringRef name_string(broker(), roots.name_string_handle());
+ StringRef length_string = MakeRef(broker(), roots.length_string_handle());
+ StringRef name_string = MakeRef(broker(), roots.name_string_handle());
base::Optional<ObjectRef> length_value(
receiver_map.GetStrongValue(kLengthIndex));
@@ -2668,7 +2668,7 @@ Reduction JSCallReducer::ReduceFunctionPrototypeBind(Node* node) {
MapRef map = is_constructor
? native_context().bound_function_with_constructor_map()
: native_context().bound_function_without_constructor_map();
- if (!map.prototype().equals(prototype)) return inference.NoChange();
+ if (!map.prototype().value().equals(*prototype)) return inference.NoChange();
inference.RelyOnMapsPreferStability(dependencies(), jsgraph(), &effect,
control, p.feedback());
@@ -2677,6 +2677,15 @@ Reduction JSCallReducer::ReduceFunctionPrototypeBind(Node* node) {
static constexpr int kBoundThis = 1;
static constexpr int kReceiverContextEffectAndControl = 4;
int const arity = n.ArgumentCount();
+
+ if (arity > 0) {
+ MapRef fixed_array_map = MakeRef(broker(), factory()->fixed_array_map());
+ AllocationBuilder ab(jsgraph(), effect, control);
+ if (!ab.CanAllocateArray(arity, fixed_array_map)) {
+ return NoChange();
+ }
+ }
+
int const arity_with_bound_this = std::max(arity, kBoundThis);
int const input_count =
arity_with_bound_this + kReceiverContextEffectAndControl;
@@ -2713,10 +2722,7 @@ Reduction JSCallReducer::ReduceFunctionPrototypeCall(Node* node) {
HeapObjectMatcher m(target);
if (m.HasResolvedValue() && m.Ref(broker()).IsJSFunction()) {
JSFunctionRef function = m.Ref(broker()).AsJSFunction();
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(), "Serialize call on function " << function);
- return NoChange();
- }
+ if (!function.serialized()) return NoChange();
context = jsgraph()->Constant(function.context());
} else {
context = effect = graph()->NewNode(
@@ -2785,24 +2791,17 @@ Reduction JSCallReducer::ReduceObjectGetPrototype(Node* node, Node* object) {
if (!inference.HaveMaps()) return NoChange();
MapHandles const& object_maps = inference.GetMaps();
- MapRef candidate_map(broker(), object_maps[0]);
- if (candidate_map.ShouldHaveBeenSerialized() &&
- !candidate_map.serialized_prototype()) {
- TRACE_BROKER_MISSING(broker(), "prototype for map " << candidate_map);
- return inference.NoChange();
- }
- ObjectRef candidate_prototype = candidate_map.prototype();
+ MapRef candidate_map = MakeRef(broker(), object_maps[0]);
+ base::Optional<HeapObjectRef> candidate_prototype = candidate_map.prototype();
+ if (!candidate_prototype.has_value()) return inference.NoChange();
// Check if we can constant-fold the {candidate_prototype}.
for (size_t i = 0; i < object_maps.size(); ++i) {
- MapRef object_map(broker(), object_maps[i]);
- if (object_map.ShouldHaveBeenSerialized() &&
- !object_map.serialized_prototype()) {
- TRACE_BROKER_MISSING(broker(), "prototype for map " << object_map);
- return inference.NoChange();
- }
+ MapRef object_map = MakeRef(broker(), object_maps[i]);
+ base::Optional<HeapObjectRef> map_prototype = object_map.prototype();
+ if (!map_prototype.has_value()) return inference.NoChange();
if (IsSpecialReceiverInstanceType(object_map.instance_type()) ||
- !object_map.prototype().equals(candidate_prototype)) {
+ !map_prototype->equals(*candidate_prototype)) {
// We exclude special receivers, like JSProxy or API objects that
// might require access checks here; we also don't want to deal
// with hidden prototypes at this point.
@@ -2815,7 +2814,7 @@ Reduction JSCallReducer::ReduceObjectGetPrototype(Node* node, Node* object) {
if (!inference.RelyOnMapsViaStability(dependencies())) {
return inference.NoChange();
}
- Node* value = jsgraph()->Constant(candidate_prototype);
+ Node* value = jsgraph()->Constant(*candidate_prototype);
ReplaceWithValue(node, value);
return Replace(value);
}
@@ -3177,9 +3176,9 @@ bool CanInlineArrayIteratingBuiltin(JSHeapBroker* broker,
MapHandles const& receiver_maps,
ElementsKind* kind_return) {
DCHECK_NE(0, receiver_maps.size());
- *kind_return = MapRef(broker, receiver_maps[0]).elements_kind();
+ *kind_return = MakeRef(broker, receiver_maps[0]).elements_kind();
for (auto receiver_map : receiver_maps) {
- MapRef map(broker, receiver_map);
+ MapRef map = MakeRef(broker, receiver_map);
if (!map.supports_fast_array_iteration() ||
!UnionElementsKindUptoSize(kind_return, map.elements_kind())) {
return false;
@@ -3194,7 +3193,7 @@ bool CanInlineArrayResizingBuiltin(JSHeapBroker* broker,
bool builtin_is_push = false) {
DCHECK_NE(0, receiver_maps.size());
for (auto receiver_map : receiver_maps) {
- MapRef map(broker, receiver_map);
+ MapRef map = MakeRef(broker, receiver_map);
if (!map.supports_fast_array_resize()) return false;
// TODO(turbofan): We should also handle fast holey double elements once
// we got the hole NaN mess sorted out in TurboFan/V8.
@@ -3432,8 +3431,8 @@ Reduction JSCallReducer::ReduceArraySome(Node* node,
#if V8_ENABLE_WEBASSEMBLY
namespace {
+
bool CanInlineJSToWasmCall(const wasm::FunctionSig* wasm_signature) {
- DCHECK(FLAG_turbo_inline_js_wasm_calls);
if (wasm_signature->return_count() > 1) {
return false;
}
@@ -3450,10 +3449,13 @@ bool CanInlineJSToWasmCall(const wasm::FunctionSig* wasm_signature) {
return true;
}
+
} // namespace
Reduction JSCallReducer::ReduceCallWasmFunction(
Node* node, const SharedFunctionInfoRef& shared) {
+ DCHECK(flags() & kInlineJSToWasmCalls);
+
JSCallNode n(node);
const CallParameters& p = n.Parameters();
@@ -3540,11 +3542,13 @@ bool Has64BitIntegerParamsInSignature(const CFunctionInfo* c_signature) {
bool CanOptimizeFastCall(
const FunctionTemplateInfoRef& function_template_info) {
- const CFunctionInfo* c_signature = function_template_info.c_signature();
+ if (function_template_info.c_functions().empty()) return false;
+
+ // Multiple function overloads not supported yet, always call the first
+ // overload.
+ const CFunctionInfo* c_signature = function_template_info.c_signatures()[0];
- bool optimize_to_fast_call =
- FLAG_turbo_fast_api_calls &&
- function_template_info.c_function() != kNullAddress;
+ bool optimize_to_fast_call = FLAG_turbo_fast_api_calls;
#ifndef V8_ENABLE_FP_PARAMS_IN_C_LINKAGE
optimize_to_fast_call =
optimize_to_fast_call && !HasFPParamsInSignature(c_signature);
@@ -3612,7 +3616,7 @@ Reduction JSCallReducer::ReduceCallApiFunction(
MapInference inference(broker(), receiver, effect);
if (inference.HaveMaps()) {
MapHandles const& receiver_maps = inference.GetMaps();
- MapRef first_receiver_map(broker(), receiver_maps[0]);
+ MapRef first_receiver_map = MakeRef(broker(), receiver_maps[0]);
// See if we can constant-fold the compatible receiver checks.
HolderLookupResult api_holder =
@@ -3645,7 +3649,7 @@ Reduction JSCallReducer::ReduceCallApiFunction(
function_template_info.accept_any_receiver());
for (size_t i = 1; i < receiver_maps.size(); ++i) {
- MapRef receiver_map(broker(), receiver_maps[i]);
+ MapRef receiver_map = MakeRef(broker(), receiver_maps[i]);
HolderLookupResult holder_i =
function_template_info.LookupHolderOfExpectedType(receiver_map);
@@ -3893,8 +3897,8 @@ Reduction JSCallReducer::ReduceCallOrConstructWithArrayLikeOrSpread(
if (!frame_state.frame_state_info().shared_info().ToHandle(&shared)) {
return NoChange();
}
- formal_parameter_count = SharedFunctionInfoRef(broker(), shared)
- .internal_formal_parameter_count();
+ formal_parameter_count =
+ MakeRef(broker(), shared).internal_formal_parameter_count();
}
if (type == CreateArgumentsType::kMappedArguments) {
@@ -3971,10 +3975,9 @@ Reduction JSCallReducer::ReduceCallOrConstructWithArrayLikeOrSpread(
if (IsCallWithArrayLikeOrSpread(node)) {
NodeProperties::ChangeOp(
- node,
- javascript()->Call(JSCallNode::ArityForArgc(argc), frequency, feedback,
- ConvertReceiverMode::kAny, speculation_mode,
- CallFeedbackRelation::kUnrelated));
+ node, javascript()->Call(JSCallNode::ArityForArgc(argc), frequency,
+ feedback, ConvertReceiverMode::kAny,
+ speculation_mode, feedback_relation));
return Changed(node).FollowedBy(ReduceJSCall(node));
} else {
NodeProperties::ChangeOp(
@@ -4048,7 +4051,9 @@ bool ShouldUseCallICFeedback(Node* node) {
} else if (m.IsPhi()) {
// Protect against endless loops here.
Node* control = NodeProperties::GetControlInput(node);
- if (control->opcode() == IrOpcode::kLoop) return false;
+ if (control->opcode() == IrOpcode::kLoop ||
+ control->opcode() == IrOpcode::kDead)
+ return false;
// Check if {node} is a Phi of nodes which shouldn't
// use CallIC feedback (not looking through loops).
int const value_input_count = m.node()->op()->ValueInputCount();
@@ -4063,11 +4068,7 @@ bool ShouldUseCallICFeedback(Node* node) {
} // namespace
bool JSCallReducer::IsBuiltinOrApiFunction(JSFunctionRef function) const {
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(), "data for function " << function);
- return false;
- }
-
+ if (!function.serialized()) return false;
// TODO(neis): Add a way to check if function template info isn't serialized
// and add a warning in such cases. Currently we can't tell if function
// template info doesn't exist or wasn't serialized.
@@ -4091,10 +4092,7 @@ Reduction JSCallReducer::ReduceJSCall(Node* node) {
ObjectRef target_ref = m.Ref(broker());
if (target_ref.IsJSFunction()) {
JSFunctionRef function = target_ref.AsJSFunction();
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(), "data for function " << function);
- return NoChange();
- }
+ if (!function.serialized()) return NoChange();
// Don't inline cross native context.
if (!function.native_context().equals(native_context())) {
@@ -4104,10 +4102,7 @@ Reduction JSCallReducer::ReduceJSCall(Node* node) {
return ReduceJSCall(node, function.shared());
} else if (target_ref.IsJSBoundFunction()) {
JSBoundFunctionRef function = target_ref.AsJSBoundFunction();
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(), "data for function " << function);
- return NoChange();
- }
+ if (!function.serialized()) return NoChange();
ObjectRef bound_this = function.bound_this();
ConvertReceiverMode const convert_mode =
@@ -4115,6 +4110,21 @@ Reduction JSCallReducer::ReduceJSCall(Node* node) {
? ConvertReceiverMode::kNullOrUndefined
: ConvertReceiverMode::kNotNullOrUndefined;
+ // TODO(jgruber): Inline this block below once TryGet is guaranteed to
+ // succeed.
+ FixedArrayRef bound_arguments = function.bound_arguments();
+ const int bound_arguments_length = bound_arguments.length();
+ static constexpr int kInlineSize = 16; // Arbitrary.
+ base::SmallVector<Node*, kInlineSize> args;
+ for (int i = 0; i < bound_arguments_length; ++i) {
+ base::Optional<ObjectRef> maybe_arg = bound_arguments.TryGet(i);
+ if (!maybe_arg.has_value()) {
+ TRACE_BROKER_MISSING(broker(), "bound argument");
+ return NoChange();
+ }
+ args.emplace_back(jsgraph()->Constant(maybe_arg.value()));
+ }
+
// Patch {node} to use [[BoundTargetFunction]] and [[BoundThis]].
NodeProperties::ReplaceValueInput(
node, jsgraph()->Constant(function.bound_target_function()),
@@ -4123,10 +4133,8 @@ Reduction JSCallReducer::ReduceJSCall(Node* node) {
JSCallNode::ReceiverIndex());
// Insert the [[BoundArguments]] for {node}.
- FixedArrayRef bound_arguments = function.bound_arguments();
- for (int i = 0; i < bound_arguments.length(); ++i) {
- node->InsertInput(graph()->zone(), i + 2,
- jsgraph()->Constant(bound_arguments.get(i)));
+ for (int i = 0; i < bound_arguments_length; ++i) {
+ node->InsertInput(graph()->zone(), i + 2, args[i]);
arity++;
}
@@ -4152,9 +4160,9 @@ Reduction JSCallReducer::ReduceJSCall(Node* node) {
// Same if the {target} is the result of a CheckClosure operation.
if (target->opcode() == IrOpcode::kJSCreateClosure) {
CreateClosureParameters const& p = JSCreateClosureNode{target}.Parameters();
- return ReduceJSCall(node, SharedFunctionInfoRef(broker(), p.shared_info()));
+ return ReduceJSCall(node, MakeRef(broker(), p.shared_info()));
} else if (target->opcode() == IrOpcode::kCheckClosure) {
- FeedbackCellRef cell(broker(), FeedbackCellOf(target->op()));
+ FeedbackCellRef cell = MakeRef(broker(), FeedbackCellOf(target->op()));
if (cell.shared_function_info().has_value()) {
return ReduceJSCall(node, *cell.shared_function_info());
} else {
@@ -4201,7 +4209,7 @@ Reduction JSCallReducer::ReduceJSCall(Node* node) {
}
if (!ShouldUseCallICFeedback(target) ||
- p.feedback_relation() != CallFeedbackRelation::kRelated ||
+ p.feedback_relation() == CallFeedbackRelation::kUnrelated ||
!p.feedback().IsValid()) {
return NoChange();
}
@@ -4213,7 +4221,14 @@ Reduction JSCallReducer::ReduceJSCall(Node* node) {
node, DeoptimizeReason::kInsufficientTypeFeedbackForCall);
}
- base::Optional<HeapObjectRef> feedback_target = feedback.AsCall().target();
+ base::Optional<HeapObjectRef> feedback_target;
+ if (p.feedback_relation() == CallFeedbackRelation::kTarget) {
+ feedback_target = feedback.AsCall().target();
+ } else {
+ DCHECK_EQ(p.feedback_relation(), CallFeedbackRelation::kReceiver);
+ feedback_target = native_context().function_prototype_apply();
+ }
+
if (feedback_target.has_value() && feedback_target->map().is_callable()) {
Node* target_function = jsgraph()->Constant(*feedback_target);
@@ -4238,8 +4253,8 @@ Reduction JSCallReducer::ReduceJSCall(Node* node) {
// Try to further reduce the JSCall {node}.
return Changed(node).FollowedBy(ReduceJSCall(node));
} else if (feedback_target.has_value() && feedback_target->IsFeedbackCell()) {
- FeedbackCellRef feedback_cell(
- broker(), feedback_target.value().AsFeedbackCell().object());
+ FeedbackCellRef feedback_cell =
+ MakeRef(broker(), feedback_target.value().AsFeedbackCell().object());
if (feedback_cell.value().has_value()) {
// Check that {target} is a closure with given {feedback_cell},
// which uniquely identifies a given function inside a native context.
@@ -4276,6 +4291,9 @@ Reduction JSCallReducer::ReduceJSCall(Node* node,
Node* target = n.target();
// Do not reduce calls to functions with break points.
+ // If this state changes during background compilation, the compilation
+ // job will be aborted from the main thread (see
+ // Debug::PrepareFunctionForDebugExecution()).
if (shared.HasBreakInfo()) return NoChange();
// Raise a TypeError if the {target} is a "classConstructor".
@@ -4736,13 +4754,12 @@ Reduction JSCallReducer::ReduceJSConstruct(Node* node) {
if (target_ref.IsJSFunction()) {
JSFunctionRef function = target_ref.AsJSFunction();
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(),
- "function, not serialized: " << function);
- return NoChange();
- }
+ if (!function.serialized()) return NoChange();
// Do not reduce constructors with break points.
+ // If this state changes during background compilation, the compilation
+ // job will be aborted from the main thread (see
+ // Debug::PrepareFunctionForDebugExecution()).
if (function.shared().HasBreakInfo()) return NoChange();
// Don't inline cross native context.
@@ -4799,14 +4816,23 @@ Reduction JSCallReducer::ReduceJSConstruct(Node* node) {
}
} else if (target_ref.IsJSBoundFunction()) {
JSBoundFunctionRef function = target_ref.AsJSBoundFunction();
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(),
- "function, not serialized: " << function);
- return NoChange();
- }
-
+ if (!function.serialized()) return NoChange();
ObjectRef bound_target_function = function.bound_target_function();
FixedArrayRef bound_arguments = function.bound_arguments();
+ const int bound_arguments_length = bound_arguments.length();
+
+ // TODO(jgruber): Inline this block below once TryGet is guaranteed to
+ // succeed.
+ static constexpr int kInlineSize = 16; // Arbitrary.
+ base::SmallVector<Node*, kInlineSize> args;
+ for (int i = 0; i < bound_arguments_length; ++i) {
+ base::Optional<ObjectRef> maybe_arg = bound_arguments.TryGet(i);
+ if (!maybe_arg.has_value()) {
+ TRACE_BROKER_MISSING(broker(), "bound argument");
+ return NoChange();
+ }
+ args.emplace_back(jsgraph()->Constant(maybe_arg.value()));
+ }
// Patch {node} to use [[BoundTargetFunction]].
node->ReplaceInput(n.TargetIndex(),
@@ -4823,9 +4849,8 @@ Reduction JSCallReducer::ReduceJSConstruct(Node* node) {
new_target));
// Insert the [[BoundArguments]] for {node}.
- for (int i = 0; i < bound_arguments.length(); ++i) {
- node->InsertInput(graph()->zone(), n.ArgumentIndex(i),
- jsgraph()->Constant(bound_arguments.get(i)));
+ for (int i = 0; i < bound_arguments_length; ++i) {
+ node->InsertInput(graph()->zone(), n.ArgumentIndex(i), args[i]);
arity++;
}
@@ -5064,7 +5089,7 @@ Reduction JSCallReducer::ReduceJSConstructWithArrayLike(Node* node) {
DCHECK_EQ(n.ArgumentCount(), 1); // The arraylike object.
return ReduceCallOrConstructWithArrayLikeOrSpread(
node, arraylike_index, p.frequency(), p.feedback(),
- SpeculationMode::kDisallowSpeculation, CallFeedbackRelation::kRelated);
+ SpeculationMode::kDisallowSpeculation, CallFeedbackRelation::kTarget);
}
Reduction JSCallReducer::ReduceJSConstructWithSpread(Node* node) {
@@ -5074,7 +5099,7 @@ Reduction JSCallReducer::ReduceJSConstructWithSpread(Node* node) {
DCHECK_GE(n.ArgumentCount(), 1); // At least the spread.
return ReduceCallOrConstructWithArrayLikeOrSpread(
node, spread_index, p.frequency(), p.feedback(),
- SpeculationMode::kDisallowSpeculation, CallFeedbackRelation::kRelated);
+ SpeculationMode::kDisallowSpeculation, CallFeedbackRelation::kTarget);
}
Reduction JSCallReducer::ReduceReturnReceiver(Node* node) {
@@ -5611,8 +5636,8 @@ Reduction JSCallReducer::ReduceArrayPrototypeShift(Node* node) {
graph()->zone(), 1, BuiltinArguments::kNumExtraArgsWithReceiver,
Builtins::name(builtin_index), node->op()->properties(),
CallDescriptor::kNeedsFrameState);
- Node* stub_code = jsgraph()->CEntryStubConstant(1, kDontSaveFPRegs,
- kArgvOnStack, true);
+ Node* stub_code = jsgraph()->CEntryStubConstant(
+ 1, SaveFPRegsMode::kIgnore, ArgvMode::kStack, true);
Address builtin_entry = Builtins::CppEntryOf(builtin_index);
Node* entry = jsgraph()->ExternalConstant(
ExternalReference::Create(builtin_entry));
@@ -5701,16 +5726,18 @@ Reduction JSCallReducer::ReduceArrayPrototypeSlice(Node* node) {
// `slice.call(arguments)`, for example jQuery makes heavy use of that.
bool can_be_holey = false;
for (Handle<Map> map : receiver_maps) {
- MapRef receiver_map(broker(), map);
- if (!receiver_map.supports_fast_array_iteration())
+ MapRef receiver_map = MakeRef(broker(), map);
+ if (!receiver_map.supports_fast_array_iteration()) {
return inference.NoChange();
+ }
if (IsHoleyElementsKind(receiver_map.elements_kind())) {
can_be_holey = true;
}
}
- if (!dependencies()->DependOnArraySpeciesProtector())
+ if (!dependencies()->DependOnArraySpeciesProtector()) {
return inference.NoChange();
+ }
if (can_be_holey && !dependencies()->DependOnNoElementsProtector()) {
return inference.NoChange();
}
@@ -5851,7 +5878,7 @@ Reduction JSCallReducer::ReduceArrayIteratorPrototypeNext(Node* node) {
// Check that various {iterated_object_maps} have compatible elements kinds.
ElementsKind elements_kind =
- MapRef(broker(), iterated_object_maps[0]).elements_kind();
+ MakeRef(broker(), iterated_object_maps[0]).elements_kind();
if (IsTypedArrayElementsKind(elements_kind)) {
// TurboFan doesn't support loading from BigInt typed arrays yet.
if (elements_kind == BIGUINT64_ELEMENTS ||
@@ -5859,7 +5886,7 @@ Reduction JSCallReducer::ReduceArrayIteratorPrototypeNext(Node* node) {
return inference.NoChange();
}
for (Handle<Map> map : iterated_object_maps) {
- MapRef iterated_object_map(broker(), map);
+ MapRef iterated_object_map = MakeRef(broker(), map);
if (iterated_object_map.elements_kind() != elements_kind) {
return inference.NoChange();
}
@@ -6475,15 +6502,11 @@ bool JSCallReducer::DoPromiseChecks(MapInference* inference) {
// Check whether all {receiver_maps} are JSPromise maps and
// have the initial Promise.prototype as their [[Prototype]].
for (Handle<Map> map : receiver_maps) {
- MapRef receiver_map(broker(), map);
+ MapRef receiver_map = MakeRef(broker(), map);
if (!receiver_map.IsJSPromiseMap()) return false;
- if (receiver_map.ShouldHaveBeenSerialized() &&
- !receiver_map.serialized_prototype()) {
- TRACE_BROKER_MISSING(broker(), "prototype for map " << receiver_map);
- return false;
- }
- if (!receiver_map.prototype().equals(
- native_context().promise_prototype())) {
+ base::Optional<HeapObjectRef> prototype = receiver_map.prototype();
+ if (!prototype.has_value() ||
+ !prototype->equals(native_context().promise_prototype())) {
return false;
}
}
@@ -6604,14 +6627,14 @@ Reduction JSCallReducer::ReducePromisePrototypeFinally(Node* node) {
context, constructor, etrue, if_true);
// Allocate the closure for the reject case.
- SharedFunctionInfoRef promise_catch_finally(
- broker(), factory()->promise_catch_finally_shared_fun());
+ SharedFunctionInfoRef promise_catch_finally =
+ MakeRef(broker(), factory()->promise_catch_finally_shared_fun());
catch_true = etrue = CreateClosureFromBuiltinSharedFunctionInfo(
promise_catch_finally, context, etrue, if_true);
// Allocate the closure for the fulfill case.
- SharedFunctionInfoRef promise_then_finally(
- broker(), factory()->promise_then_finally_shared_fun());
+ SharedFunctionInfoRef promise_then_finally =
+ MakeRef(broker(), factory()->promise_then_finally_shared_fun());
then_true = etrue = CreateClosureFromBuiltinSharedFunctionInfo(
promise_then_finally, context, etrue, if_true);
}
@@ -7085,9 +7108,10 @@ Reduction JSCallReducer::ReduceCollectionIteratorPrototypeNext(
MapInference inference(broker(), receiver, effect);
if (!inference.HaveMaps()) return NoChange();
MapHandles const& receiver_maps = inference.GetMaps();
- receiver_instance_type = MapRef(broker(), receiver_maps[0]).instance_type();
+ receiver_instance_type =
+ MakeRef(broker(), receiver_maps[0]).instance_type();
for (size_t i = 1; i < receiver_maps.size(); ++i) {
- if (MapRef(broker(), receiver_maps[i]).instance_type() !=
+ if (MakeRef(broker(), receiver_maps[i]).instance_type() !=
receiver_instance_type) {
return inference.NoChange();
}
@@ -7690,10 +7714,10 @@ Reduction JSCallReducer::ReduceRegExpPrototypeTest(Node* node) {
if (broker()->is_concurrent_inlining()) {
// Obtain precomputed access infos from the broker.
for (auto map : regexp_maps) {
- MapRef map_ref(broker(), map);
+ MapRef map_ref = MakeRef(broker(), map);
PropertyAccessInfo access_info = broker()->GetPropertyAccessInfo(
- map_ref, NameRef(broker(), isolate()->factory()->exec_string()),
- AccessMode::kLoad);
+ map_ref, MakeRef(broker(), isolate()->factory()->exec_string()),
+ AccessMode::kLoad, dependencies());
access_infos.push_back(access_info);
}
} else {
@@ -7714,7 +7738,7 @@ Reduction JSCallReducer::ReduceRegExpPrototypeTest(Node* node) {
// Do not reduce if the exec method is not on the prototype chain.
if (!ai_exec.holder().ToHandle(&holder)) return inference.NoChange();
- JSObjectRef holder_ref(broker(), holder);
+ JSObjectRef holder_ref = MakeRef(broker(), holder);
// Bail out if the exec method is not the original one.
base::Optional<ObjectRef> constant = holder_ref.GetOwnFastDataProperty(
@@ -7727,7 +7751,7 @@ Reduction JSCallReducer::ReduceRegExpPrototypeTest(Node* node) {
// Add proper dependencies on the {regexp}s [[Prototype]]s.
dependencies()->DependOnStablePrototypeChains(
ai_exec.lookup_start_object_maps(), kStartAtPrototype,
- JSObjectRef(broker(), holder));
+ MakeRef(broker(), holder));
} else {
// TODO(v8:11457) Support dictionary mode protoypes here.
return inference.NoChange();
@@ -7814,9 +7838,9 @@ Reduction JSCallReducer::ReduceBigIntAsUintN(Node* node) {
NumberMatcher matcher(bits);
if (matcher.IsInteger() && matcher.IsInRange(0, 64)) {
const int bits_value = static_cast<int>(matcher.ResolvedValue());
- value = effect = graph()->NewNode(simplified()->CheckBigInt(p.feedback()),
- value, effect, control);
- value = graph()->NewNode(simplified()->BigIntAsUintN(bits_value), value);
+ value = effect = graph()->NewNode(
+ simplified()->SpeculativeBigIntAsUintN(bits_value, p.feedback()), value,
+ effect, control);
ReplaceWithValue(node, value, effect);
return Replace(value);
}
diff --git a/deps/v8/src/compiler/js-context-specialization.cc b/deps/v8/src/compiler/js-context-specialization.cc
index 448652ad8d..9c53cf1315 100644
--- a/deps/v8/src/compiler/js-context-specialization.cc
+++ b/deps/v8/src/compiler/js-context-specialization.cc
@@ -40,7 +40,7 @@ Reduction JSContextSpecialization::ReduceParameter(Node* node) {
// Constant-fold the function parameter {node}.
Handle<JSFunction> function;
if (closure().ToHandle(&function)) {
- Node* value = jsgraph()->Constant(JSFunctionRef(broker_, function));
+ Node* value = jsgraph()->Constant(MakeRef(broker_, function));
return Replace(value);
}
}
@@ -103,7 +103,7 @@ base::Optional<ContextRef> GetSpecializationContext(
Maybe<OuterContext> maybe_outer) {
switch (node->opcode()) {
case IrOpcode::kHeapConstant: {
- HeapObjectRef object(broker, HeapConstantOf(node->op()));
+ HeapObjectRef object = MakeRef(broker, HeapConstantOf(node->op()));
if (object.IsContext()) return object.AsContext();
break;
}
@@ -112,7 +112,7 @@ base::Optional<ContextRef> GetSpecializationContext(
if (maybe_outer.To(&outer) && IsContextParameter(node) &&
*distance >= outer.distance) {
*distance -= outer.distance;
- return ContextRef(broker, outer.context);
+ return MakeRef(broker, outer.context);
}
break;
}
@@ -231,7 +231,7 @@ base::Optional<ContextRef> GetModuleContext(JSHeapBroker* broker, Node* node,
switch (context->opcode()) {
case IrOpcode::kHeapConstant: {
- HeapObjectRef object(broker, HeapConstantOf(context->op()));
+ HeapObjectRef object = MakeRef(broker, HeapConstantOf(context->op()));
if (object.IsContext()) {
return find_context(object.AsContext());
}
@@ -240,7 +240,7 @@ base::Optional<ContextRef> GetModuleContext(JSHeapBroker* broker, Node* node,
case IrOpcode::kParameter: {
OuterContext outer;
if (maybe_context.To(&outer) && IsContextParameter(context)) {
- return find_context(ContextRef(broker, outer.context));
+ return find_context(MakeRef(broker, outer.context));
}
break;
}
@@ -259,17 +259,18 @@ Reduction JSContextSpecialization::ReduceJSGetImportMeta(Node* node) {
ContextRef context = maybe_context.value();
SourceTextModuleRef module =
context.get(Context::EXTENSION_INDEX).value().AsSourceTextModule();
- ObjectRef import_meta = module.import_meta();
- if (import_meta.IsJSObject()) {
- Node* import_meta_const = jsgraph()->Constant(import_meta);
- ReplaceWithValue(node, import_meta_const);
- return Changed(import_meta_const);
- } else {
- DCHECK(import_meta.IsTheHole());
+ base::Optional<ObjectRef> import_meta = module.import_meta();
+ if (!import_meta.has_value()) return NoChange();
+ if (!import_meta->IsJSObject()) {
+ DCHECK(import_meta->IsTheHole());
// The import.meta object has not yet been created. Let JSGenericLowering
// replace the operator with a runtime call.
return NoChange();
}
+
+ Node* import_meta_const = jsgraph()->Constant(*import_meta);
+ ReplaceWithValue(node, import_meta_const);
+ return Changed(import_meta_const);
}
Isolate* JSContextSpecialization::isolate() const {
diff --git a/deps/v8/src/compiler/js-create-lowering.cc b/deps/v8/src/compiler/js-create-lowering.cc
index 899922a27f..21ba072f31 100644
--- a/deps/v8/src/compiler/js-create-lowering.cc
+++ b/deps/v8/src/compiler/js-create-lowering.cc
@@ -151,8 +151,8 @@ Reduction JSCreateLowering::ReduceJSCreateArguments(Node* node) {
FrameState frame_state{NodeProperties::GetFrameStateInput(node)};
Node* const control = graph()->start();
FrameStateInfo state_info = frame_state.frame_state_info();
- SharedFunctionInfoRef shared(broker(),
- state_info.shared_info().ToHandleChecked());
+ SharedFunctionInfoRef shared =
+ MakeRef(broker(), state_info.shared_info().ToHandleChecked());
// Use the ArgumentsAccessStub for materializing both mapped and unmapped
// arguments object, but only for non-inlined (i.e. outermost) frames.
@@ -404,7 +404,7 @@ Reduction JSCreateLowering::ReduceJSCreateGeneratorObject(Node* node) {
int parameter_count_no_receiver = shared.internal_formal_parameter_count();
int length = parameter_count_no_receiver +
shared.GetBytecodeArray().register_count();
- MapRef fixed_array_map(broker(), factory()->fixed_array_map());
+ MapRef fixed_array_map = MakeRef(broker(), factory()->fixed_array_map());
AllocationBuilder ab(jsgraph(), effect, control);
if (!ab.CanAllocateArray(length, fixed_array_map)) {
return NoChange();
@@ -622,7 +622,7 @@ Reduction JSCreateLowering::ReduceJSCreateArray(Node* node) {
{
Handle<AllocationSite> site;
if (p.site().ToHandle(&site)) {
- site_ref = AllocationSiteRef(broker(), site);
+ site_ref = MakeRef(broker(), site);
}
}
AllocationType allocation = AllocationType::kYoung;
@@ -650,8 +650,8 @@ Reduction JSCreateLowering::ReduceJSCreateArray(Node* node) {
allocation = dependencies()->DependOnPretenureMode(*site_ref);
dependencies()->DependOnElementsKind(*site_ref);
} else {
- PropertyCellRef array_constructor_protector(
- broker(), factory()->array_constructor_protector());
+ PropertyCellRef array_constructor_protector =
+ MakeRef(broker(), factory()->array_constructor_protector());
array_constructor_protector.SerializeAsProtector();
can_inline_call = array_constructor_protector.value().AsSmi() ==
Protectors::kProtectorValid;
@@ -775,11 +775,9 @@ Reduction JSCreateLowering::ReduceJSCreateAsyncFunctionObject(Node* node) {
Node* control = NodeProperties::GetControlInput(node);
// Create the register file.
- MapRef fixed_array_map(broker(), factory()->fixed_array_map());
+ MapRef fixed_array_map = MakeRef(broker(), factory()->fixed_array_map());
AllocationBuilder ab(jsgraph(), effect, control);
- if (!ab.CanAllocateArray(register_count, fixed_array_map)) {
- return NoChange();
- }
+ CHECK(ab.CanAllocateArray(register_count, fixed_array_map));
ab.AllocateArray(register_count, fixed_array_map);
for (int i = 0; i < register_count; ++i) {
ab.Store(AccessBuilder::ForFixedArraySlot(i),
@@ -881,7 +879,7 @@ Reduction JSCreateLowering::ReduceJSCreateBoundFunction(Node* node) {
CreateBoundFunctionParameters const& p =
CreateBoundFunctionParametersOf(node->op());
int const arity = static_cast<int>(p.arity());
- MapRef const map(broker(), p.map());
+ MapRef const map = MakeRef(broker(), p.map());
Node* bound_target_function = NodeProperties::GetValueInput(node, 0);
Node* bound_this = NodeProperties::GetValueInput(node, 1);
Node* effect = NodeProperties::GetEffectInput(node);
@@ -890,11 +888,9 @@ Reduction JSCreateLowering::ReduceJSCreateBoundFunction(Node* node) {
// Create the [[BoundArguments]] for the result.
Node* bound_arguments = jsgraph()->EmptyFixedArrayConstant();
if (arity > 0) {
- MapRef fixed_array_map(broker(), factory()->fixed_array_map());
+ MapRef fixed_array_map = MakeRef(broker(), factory()->fixed_array_map());
AllocationBuilder ab(jsgraph(), effect, control);
- if (!ab.CanAllocateArray(arity, fixed_array_map)) {
- return NoChange();
- }
+ CHECK(ab.CanAllocateArray(arity, fixed_array_map));
ab.AllocateArray(arity, fixed_array_map);
for (int i = 0; i < arity; ++i) {
ab.Store(AccessBuilder::ForFixedArraySlot(i),
@@ -924,9 +920,9 @@ Reduction JSCreateLowering::ReduceJSCreateBoundFunction(Node* node) {
Reduction JSCreateLowering::ReduceJSCreateClosure(Node* node) {
JSCreateClosureNode n(node);
CreateClosureParameters const& p = n.Parameters();
- SharedFunctionInfoRef shared(broker(), p.shared_info());
+ SharedFunctionInfoRef shared = MakeRef(broker(), p.shared_info());
FeedbackCellRef feedback_cell = n.GetFeedbackCellRefChecked(broker());
- HeapObjectRef code(broker(), p.code());
+ HeapObjectRef code = MakeRef(broker(), p.code());
Effect effect = n.effect();
Control control = n.control();
Node* context = n.context();
@@ -935,7 +931,7 @@ Reduction JSCreateLowering::ReduceJSCreateClosure(Node* node) {
// seen more than one instantiation, this simplifies the generated code and
// also serves as a heuristic of which allocation sites benefit from it.
if (!feedback_cell.map().equals(
- MapRef(broker(), factory()->many_closures_cell_map()))) {
+ MakeRef(broker(), factory()->many_closures_cell_map()))) {
return NoChange();
}
@@ -1041,7 +1037,7 @@ Reduction JSCreateLowering::ReduceJSCreateKeyValueArray(Node* node) {
Node* length = jsgraph()->Constant(2);
AllocationBuilder aa(jsgraph(), effect, graph()->start());
- aa.AllocateArray(2, MapRef(broker(), factory()->fixed_array_map()));
+ aa.AllocateArray(2, MakeRef(broker(), factory()->fixed_array_map()));
aa.Store(AccessBuilder::ForFixedArrayElement(PACKED_ELEMENTS),
jsgraph()->ZeroConstant(), key);
aa.Store(AccessBuilder::ForFixedArrayElement(PACKED_ELEMENTS),
@@ -1100,14 +1096,21 @@ Reduction JSCreateLowering::ReduceJSCreateLiteralArrayOrObject(Node* node) {
if (!feedback.IsInsufficient()) {
AllocationSiteRef site = feedback.AsLiteral().value();
if (site.IsFastLiteral()) {
- AllocationType allocation = AllocationType::kYoung;
+ AllocationType allocation = FLAG_allocation_site_pretenuring
+ ? site.GetAllocationType()
+ : AllocationType::kYoung;
+ JSObjectRef boilerplate = site.boilerplate().value();
+ base::Optional<Node*> maybe_value =
+ TryAllocateFastLiteral(effect, control, boilerplate, allocation);
+ if (!maybe_value.has_value()) {
+ TRACE_BROKER_MISSING(broker(), "bound argument");
+ return NoChange();
+ }
if (FLAG_allocation_site_pretenuring) {
- allocation = dependencies()->DependOnPretenureMode(site);
+ CHECK_EQ(dependencies()->DependOnPretenureMode(site), allocation);
}
dependencies()->DependOnElementsKinds(site);
- JSObjectRef boilerplate = site.boilerplate().value();
- Node* value = effect =
- AllocateFastLiteral(effect, control, boilerplate, allocation);
+ Node* value = effect = maybe_value.value();
ReplaceWithValue(node, value, effect, control);
return Replace(value);
}
@@ -1209,7 +1212,7 @@ Reduction JSCreateLowering::ReduceJSCreateFunctionContext(Node* node) {
DCHECK_EQ(IrOpcode::kJSCreateFunctionContext, node->opcode());
const CreateFunctionContextParameters& parameters =
CreateFunctionContextParametersOf(node->op());
- ScopeInfoRef scope_info(broker(), parameters.scope_info());
+ ScopeInfoRef scope_info = MakeRef(broker(), parameters.scope_info());
int slot_count = parameters.slot_count();
ScopeType scope_type = parameters.scope_type();
@@ -1249,7 +1252,7 @@ Reduction JSCreateLowering::ReduceJSCreateFunctionContext(Node* node) {
Reduction JSCreateLowering::ReduceJSCreateWithContext(Node* node) {
DCHECK_EQ(IrOpcode::kJSCreateWithContext, node->opcode());
- ScopeInfoRef scope_info(broker(), ScopeInfoOf(node->op()));
+ ScopeInfoRef scope_info = MakeRef(broker(), ScopeInfoOf(node->op()));
Node* extension = NodeProperties::GetValueInput(node, 0);
Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node);
@@ -1270,7 +1273,7 @@ Reduction JSCreateLowering::ReduceJSCreateWithContext(Node* node) {
Reduction JSCreateLowering::ReduceJSCreateCatchContext(Node* node) {
DCHECK_EQ(IrOpcode::kJSCreateCatchContext, node->opcode());
- ScopeInfoRef scope_info(broker(), ScopeInfoOf(node->op()));
+ ScopeInfoRef scope_info = MakeRef(broker(), ScopeInfoOf(node->op()));
Node* exception = NodeProperties::GetValueInput(node, 0);
Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node);
@@ -1291,7 +1294,7 @@ Reduction JSCreateLowering::ReduceJSCreateCatchContext(Node* node) {
Reduction JSCreateLowering::ReduceJSCreateBlockContext(Node* node) {
DCHECK_EQ(IrOpcode::kJSCreateBlockContext, node->opcode());
- ScopeInfoRef scope_info(broker(), ScopeInfoOf(node->op()));
+ ScopeInfoRef scope_info = MakeRef(broker(), ScopeInfoOf(node->op()));
int const context_length = scope_info.ContextLength();
// Use inline allocation for block contexts up to a size limit.
@@ -1323,7 +1326,7 @@ base::Optional<MapRef> GetObjectCreateMap(JSHeapBroker* broker,
HeapObjectRef prototype) {
MapRef standard_map =
broker->target_native_context().object_function().initial_map();
- if (prototype.equals(standard_map.prototype())) {
+ if (prototype.equals(standard_map.prototype().value())) {
return standard_map;
}
if (prototype.map().oddball_type() == OddballType::kNull) {
@@ -1354,7 +1357,7 @@ Reduction JSCreateLowering::ReduceJSCreateObject(Node* node) {
if (instance_map.is_dictionary_map()) {
DCHECK_EQ(prototype_const.map().oddball_type(), OddballType::kNull);
// Allocate an empty NameDictionary as backing store for the properties.
- MapRef map(broker(), factory()->name_dictionary_map());
+ MapRef map = MakeRef(broker(), factory()->name_dictionary_map());
int capacity =
NameDictionary::ComputeCapacity(NameDictionary::kInitialCapacity);
DCHECK(base::bits::IsPowerOfTwo(capacity));
@@ -1430,7 +1433,7 @@ Node* JSCreateLowering::TryAllocateArguments(Node* effect, Node* control,
auto parameters_it = parameters_access.begin_without_receiver();
// Actually allocate the backing store.
- MapRef fixed_array_map(broker(), factory()->fixed_array_map());
+ MapRef fixed_array_map = MakeRef(broker(), factory()->fixed_array_map());
AllocationBuilder ab(jsgraph(), effect, control);
if (!ab.CanAllocateArray(argument_count, fixed_array_map)) {
return nullptr;
@@ -1461,7 +1464,7 @@ Node* JSCreateLowering::TryAllocateRestArguments(Node* effect, Node* control,
parameters_access.begin_without_receiver_and_skip(start_index);
// Actually allocate the backing store.
- MapRef fixed_array_map(broker(), factory()->fixed_array_map());
+ MapRef fixed_array_map = MakeRef(broker(), factory()->fixed_array_map());
AllocationBuilder ab(jsgraph(), effect, control);
if (!ab.CanAllocateArray(num_elements, fixed_array_map)) {
return nullptr;
@@ -1496,14 +1499,14 @@ Node* JSCreateLowering::TryAllocateAliasedArguments(
int mapped_count = std::min(argument_count, parameter_count);
*has_aliased_arguments = true;
- MapRef sloppy_arguments_elements_map(
- broker(), factory()->sloppy_arguments_elements_map());
+ MapRef sloppy_arguments_elements_map =
+ MakeRef(broker(), factory()->sloppy_arguments_elements_map());
if (!AllocationBuilder::CanAllocateSloppyArgumentElements(
mapped_count, sloppy_arguments_elements_map)) {
return nullptr;
}
- MapRef fixed_array_map(broker(), factory()->fixed_array_map());
+ MapRef fixed_array_map = MakeRef(broker(), factory()->fixed_array_map());
if (!AllocationBuilder::CanAllocateArray(argument_count, fixed_array_map)) {
return nullptr;
}
@@ -1561,8 +1564,8 @@ Node* JSCreateLowering::TryAllocateAliasedArguments(
}
int mapped_count = parameter_count;
- MapRef sloppy_arguments_elements_map(
- broker(), factory()->sloppy_arguments_elements_map());
+ MapRef sloppy_arguments_elements_map =
+ MakeRef(broker(), factory()->sloppy_arguments_elements_map());
if (!AllocationBuilder::CanAllocateSloppyArgumentElements(
mapped_count, sloppy_arguments_elements_map)) {
return nullptr;
@@ -1617,7 +1620,7 @@ Node* JSCreateLowering::AllocateElements(Node* effect, Node* control,
// Actually allocate the backing store.
AllocationBuilder a(jsgraph(), effect, control);
- a.AllocateArray(capacity, MapRef(broker(), elements_map), allocation);
+ a.AllocateArray(capacity, MakeRef(broker(), elements_map), allocation);
for (int i = 0; i < capacity; ++i) {
Node* index = jsgraph()->Constant(i);
a.Store(access, index, value);
@@ -1642,7 +1645,7 @@ Node* JSCreateLowering::AllocateElements(Node* effect, Node* control,
// Actually allocate the backing store.
AllocationBuilder a(jsgraph(), effect, control);
- a.AllocateArray(capacity, MapRef(broker(), elements_map), allocation);
+ a.AllocateArray(capacity, MakeRef(broker(), elements_map), allocation);
for (int i = 0; i < capacity; ++i) {
Node* index = jsgraph()->Constant(i);
a.Store(access, index, values[i]);
@@ -1650,9 +1653,9 @@ Node* JSCreateLowering::AllocateElements(Node* effect, Node* control,
return a.Finish();
}
-Node* JSCreateLowering::AllocateFastLiteral(Node* effect, Node* control,
- JSObjectRef boilerplate,
- AllocationType allocation) {
+base::Optional<Node*> JSCreateLowering::TryAllocateFastLiteral(
+ Node* effect, Node* control, JSObjectRef boilerplate,
+ AllocationType allocation) {
// Compute the in-object properties to store first (might have effects).
MapRef boilerplate_map = boilerplate.map();
ZoneVector<std::pair<FieldAccess, Node*>> inobject_fields(zone());
@@ -1686,15 +1689,17 @@ Node* JSCreateLowering::AllocateFastLiteral(Node* effect, Node* control,
Node* value;
if (boilerplate_value.IsJSObject()) {
JSObjectRef boilerplate_object = boilerplate_value.AsJSObject();
- value = effect =
- AllocateFastLiteral(effect, control, boilerplate_object, allocation);
+ base::Optional<Node*> maybe_value = TryAllocateFastLiteral(
+ effect, control, boilerplate_object, allocation);
+ if (!maybe_value.has_value()) return {};
+ value = effect = maybe_value.value();
} else if (property_details.representation().IsDouble()) {
double number = boilerplate_value.AsHeapNumber().value();
// Allocate a mutable HeapNumber box and store the value into it.
AllocationBuilder builder(jsgraph(), effect, control);
builder.Allocate(HeapNumber::kSize, allocation);
builder.Store(AccessBuilder::ForMap(),
- MapRef(broker(), factory()->heap_number_map()));
+ MakeRef(broker(), factory()->heap_number_map()));
builder.Store(AccessBuilder::ForHeapNumberValue(),
jsgraph()->Constant(number));
value = effect = builder.Finish();
@@ -1712,6 +1717,9 @@ Node* JSCreateLowering::AllocateFastLiteral(Node* effect, Node* control,
int const boilerplate_length = boilerplate_map.GetInObjectProperties();
for (int index = static_cast<int>(inobject_fields.size());
index < boilerplate_length; ++index) {
+ DCHECK(!V8_MAP_PACKING_BOOL);
+ // TODO(wenyuzhao): Fix incorrect MachineType when V8_MAP_PACKING is
+ // enabled.
FieldAccess access =
AccessBuilder::ForJSObjectInObjectProperty(boilerplate_map, index);
Node* value = jsgraph()->HeapConstant(factory()->one_pointer_filler_map());
@@ -1719,8 +1727,10 @@ Node* JSCreateLowering::AllocateFastLiteral(Node* effect, Node* control,
}
// Setup the elements backing store.
- Node* elements =
- AllocateFastLiteralElements(effect, control, boilerplate, allocation);
+ base::Optional<Node*> maybe_elements =
+ TryAllocateFastLiteralElements(effect, control, boilerplate, allocation);
+ if (!maybe_elements.has_value()) return {};
+ Node* elements = maybe_elements.value();
if (elements->op()->EffectOutputCount() > 0) effect = elements;
// Actually allocate and initialize the object.
@@ -1743,9 +1753,9 @@ Node* JSCreateLowering::AllocateFastLiteral(Node* effect, Node* control,
return builder.Finish();
}
-Node* JSCreateLowering::AllocateFastLiteralElements(Node* effect, Node* control,
- JSObjectRef boilerplate,
- AllocationType allocation) {
+base::Optional<Node*> JSCreateLowering::TryAllocateFastLiteralElements(
+ Node* effect, Node* control, JSObjectRef boilerplate,
+ AllocationType allocation) {
FixedArrayBaseRef boilerplate_elements = boilerplate.elements().value();
// Empty or copy-on-write elements just store a constant.
@@ -1764,7 +1774,7 @@ Node* JSCreateLowering::AllocateFastLiteralElements(Node* effect, Node* control,
if (elements_map.instance_type() == FIXED_DOUBLE_ARRAY_TYPE) {
FixedDoubleArrayRef elements = boilerplate_elements.AsFixedDoubleArray();
for (int i = 0; i < elements_length; ++i) {
- Float64 value = elements.get(i);
+ Float64 value = elements.GetFromImmutableFixedDoubleArray(i);
if (value.is_hole_nan()) {
elements_values[i] = jsgraph()->TheHoleConstant();
} else {
@@ -1774,10 +1784,14 @@ Node* JSCreateLowering::AllocateFastLiteralElements(Node* effect, Node* control,
} else {
FixedArrayRef elements = boilerplate_elements.AsFixedArray();
for (int i = 0; i < elements_length; ++i) {
- ObjectRef element_value = elements.get(i);
+ base::Optional<ObjectRef> maybe_element_value = elements.TryGet(i);
+ if (!maybe_element_value.has_value()) return {};
+ ObjectRef element_value = maybe_element_value.value();
if (element_value.IsJSObject()) {
- elements_values[i] = effect = AllocateFastLiteral(
+ base::Optional<Node*> maybe_value = TryAllocateFastLiteral(
effect, control, element_value.AsJSObject(), allocation);
+ if (!maybe_value.has_value()) return {};
+ elements_values[i] = effect = maybe_value.value();
} else {
elements_values[i] = jsgraph()->Constant(element_value);
}
diff --git a/deps/v8/src/compiler/js-create-lowering.h b/deps/v8/src/compiler/js-create-lowering.h
index 0edbda79a0..e780b685bf 100644
--- a/deps/v8/src/compiler/js-create-lowering.h
+++ b/deps/v8/src/compiler/js-create-lowering.h
@@ -97,6 +97,12 @@ class V8_EXPORT_PRIVATE JSCreateLowering final
Node* arguments_length,
const SharedFunctionInfoRef& shared,
bool* has_aliased_arguments);
+ base::Optional<Node*> TryAllocateFastLiteral(Node* effect, Node* control,
+ JSObjectRef boilerplate,
+ AllocationType allocation);
+ base::Optional<Node*> TryAllocateFastLiteralElements(
+ Node* effect, Node* control, JSObjectRef boilerplate,
+ AllocationType allocation);
Node* AllocateElements(Node* effect, Node* control,
ElementsKind elements_kind, int capacity,
@@ -107,11 +113,6 @@ class V8_EXPORT_PRIVATE JSCreateLowering final
ElementsKind elements_kind,
std::vector<Node*> const& values,
AllocationType allocation);
- Node* AllocateFastLiteral(Node* effect, Node* control,
- JSObjectRef boilerplate, AllocationType allocation);
- Node* AllocateFastLiteralElements(Node* effect, Node* control,
- JSObjectRef boilerplate,
- AllocationType allocation);
Node* AllocateLiteralRegExp(Node* effect, Node* control,
RegExpBoilerplateDescriptionRef boilerplate);
diff --git a/deps/v8/src/compiler/js-generic-lowering.cc b/deps/v8/src/compiler/js-generic-lowering.cc
index 71a0d43a41..935581b346 100644
--- a/deps/v8/src/compiler/js-generic-lowering.cc
+++ b/deps/v8/src/compiler/js-generic-lowering.cc
@@ -7,6 +7,7 @@
#include "src/ast/ast.h"
#include "src/builtins/builtins-constructor.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/compiler/access-builder.h"
#include "src/compiler/common-operator.h"
#include "src/compiler/js-graph.h"
@@ -715,8 +716,8 @@ void JSGenericLowering::LowerJSCreateLiteralArray(Node* node) {
void JSGenericLowering::LowerJSGetTemplateObject(Node* node) {
JSGetTemplateObjectNode n(node);
GetTemplateObjectParameters const& p = n.Parameters();
- SharedFunctionInfoRef shared(broker(), p.shared());
- TemplateObjectDescriptionRef description(broker(), p.description());
+ SharedFunctionInfoRef shared = MakeRef(broker(), p.shared());
+ TemplateObjectDescriptionRef description = MakeRef(broker(), p.description());
DCHECK_EQ(node->op()->ControlInputCount(), 1);
node->RemoveInput(NodeProperties::FirstControlIndex(node));
@@ -1443,7 +1444,7 @@ void JSGenericLowering::LowerJSStackCheck(Node* node) {
}
void JSGenericLowering::LowerJSDebugger(Node* node) {
- ReplaceWithBuiltinCall(node, Builtins::kHandleDebuggerStatement);
+ ReplaceWithRuntimeCall(node, Runtime::kHandleDebuggerStatement);
}
Zone* JSGenericLowering::zone() const { return graph()->zone(); }
diff --git a/deps/v8/src/compiler/js-graph.cc b/deps/v8/src/compiler/js-graph.cc
index aca12b4cb5..652c7391fa 100644
--- a/deps/v8/src/compiler/js-graph.cc
+++ b/deps/v8/src/compiler/js-graph.cc
@@ -20,7 +20,8 @@ namespace compiler {
Node* JSGraph::CEntryStubConstant(int result_size, SaveFPRegsMode save_doubles,
ArgvMode argv_mode, bool builtin_exit_frame) {
- if (save_doubles == kDontSaveFPRegs && argv_mode == kArgvOnStack) {
+ if (save_doubles == SaveFPRegsMode::kIgnore &&
+ argv_mode == ArgvMode::kStack) {
DCHECK(result_size >= 1 && result_size <= 3);
if (!builtin_exit_frame) {
Node** ptr = nullptr;
diff --git a/deps/v8/src/compiler/js-graph.h b/deps/v8/src/compiler/js-graph.h
index e86bb594ba..c38d868db4 100644
--- a/deps/v8/src/compiler/js-graph.h
+++ b/deps/v8/src/compiler/js-graph.h
@@ -38,10 +38,9 @@ class V8_EXPORT_PRIVATE JSGraph : public MachineGraph {
JSGraph& operator=(const JSGraph&) = delete;
// CEntryStubs are cached depending on the result size and other flags.
- Node* CEntryStubConstant(int result_size,
- SaveFPRegsMode save_doubles = kDontSaveFPRegs,
- ArgvMode argv_mode = kArgvOnStack,
- bool builtin_exit_frame = false);
+ Node* CEntryStubConstant(
+ int result_size, SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore,
+ ArgvMode argv_mode = ArgvMode::kStack, bool builtin_exit_frame = false);
// Used for padding frames. (alias: the hole)
Node* PaddingConstant() { return TheHoleConstant(); }
diff --git a/deps/v8/src/compiler/js-heap-broker.cc b/deps/v8/src/compiler/js-heap-broker.cc
index ac90e4c667..13cd02ab08 100644
--- a/deps/v8/src/compiler/js-heap-broker.cc
+++ b/deps/v8/src/compiler/js-heap-broker.cc
@@ -4,291 +4,26 @@
#include "src/compiler/js-heap-broker.h"
-#include "src/common/globals.h"
-#include "src/compiler/heap-refs.h"
-
#ifdef ENABLE_SLOW_DCHECKS
#include <algorithm>
#endif
-#include "include/v8-fast-api-calls.h"
-#include "src/api/api-inl.h"
-#include "src/ast/modules.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/optimized-compilation-info.h"
-#include "src/compiler/access-info.h"
-#include "src/compiler/graph-reducer.h"
-#include "src/compiler/per-isolate-compiler-cache.h"
-#include "src/execution/protectors-inl.h"
+#include "src/handles/handles-inl.h"
+#include "src/ic/handler-configuration.h"
#include "src/init/bootstrapper.h"
-#include "src/objects/allocation-site-inl.h"
-#include "src/objects/api-callbacks.h"
-#include "src/objects/cell-inl.h"
-#include "src/objects/heap-number-inl.h"
-#include "src/objects/instance-type-inl.h"
-#include "src/objects/js-array-buffer-inl.h"
+#include "src/objects/feedback-cell.h"
#include "src/objects/js-array-inl.h"
-#include "src/objects/js-regexp-inl.h"
-#include "src/objects/literal-objects-inl.h"
-#include "src/objects/module-inl.h"
#include "src/objects/objects-inl.h"
-#include "src/objects/property-details.h"
-#include "src/objects/template-objects-inl.h"
-#include "src/objects/templates.h"
-#include "src/utils/utils.h"
+#include "src/objects/oddball.h"
+#include "src/objects/property-cell.h"
namespace v8 {
namespace internal {
namespace compiler {
#define TRACE(broker, x) TRACE_BROKER(broker, x)
-#define TRACE_MISSING(broker, x) TRACE_BROKER_MISSING(broker, x)
-
-#define FORWARD_DECL(Name) class Name##Data;
-HEAP_BROKER_SERIALIZED_OBJECT_LIST(FORWARD_DECL)
-HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(FORWARD_DECL)
-HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(FORWARD_DECL)
-HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(FORWARD_DECL)
-#undef FORWARD_DECL
-
-// There are several kinds of ObjectData values.
-//
-// kSmi: The underlying V8 object is a Smi and the data is an instance of the
-// base class (ObjectData), i.e. it's basically just the handle. Because the
-// object is a Smi, it's safe to access the handle in order to extract the
-// number value, and AsSmi() does exactly that.
-//
-// kSerializedHeapObject: The underlying V8 object is a HeapObject and the
-// data is an instance of the corresponding (most-specific) subclass, e.g.
-// JSFunctionData, which provides serialized information about the object.
-//
-// kBackgroundSerializedHeapObject: Like kSerializedHeapObject, but
-// allows serialization from the background thread.
-//
-// kUnserializedHeapObject: The underlying V8 object is a HeapObject and the
-// data is an instance of the base class (ObjectData), i.e. it basically
-// carries no information other than the handle.
-//
-// kNeverSerializedHeapObject: The underlying V8 object is a (potentially
-// mutable) HeapObject and the data is an instance of ObjectData. Its handle
-// must be persistent so that the GC can update it at a safepoint. Via this
-// handle, the object can be accessed concurrently to the main thread. To be
-// used the flag --turbo-direct-heap-access must be on.
-//
-// kUnserializedReadOnlyHeapObject: The underlying V8 object is a read-only
-// HeapObject and the data is an instance of ObjectData. For
-// ReadOnlyHeapObjects, it is OK to access heap even from off-thread, so
-// these objects need not be serialized.
-enum ObjectDataKind {
- kSmi,
- kSerializedHeapObject,
- kBackgroundSerializedHeapObject,
- kUnserializedHeapObject,
- kNeverSerializedHeapObject,
- kUnserializedReadOnlyHeapObject
-};
-
-namespace {
-bool IsReadOnlyHeapObject(Object object) {
- DisallowGarbageCollection no_gc;
- return (object.IsCode() && Code::cast(object).is_builtin()) ||
- (object.IsHeapObject() &&
- ReadOnlyHeap::Contains(HeapObject::cast(object)));
-}
-
-template <class T>
-constexpr bool IsSerializedHeapObject() {
- return false;
-}
-
-#define DEFINE_MARKER(Name) \
- template <> \
- constexpr bool IsSerializedHeapObject<Name>() { \
- return true; \
- } \
- STATIC_ASSERT(IsSerializedHeapObject<Name>());
-HEAP_BROKER_SERIALIZED_OBJECT_LIST(DEFINE_MARKER)
-#undef DEFINE_MARKER
-} // namespace
-
-class ObjectData : public ZoneObject {
- public:
- ObjectData(JSHeapBroker* broker, ObjectData** storage, Handle<Object> object,
- ObjectDataKind kind)
- : object_(object), kind_(kind) {
- // This assignment ensures we don't end up inserting the same object
- // in an endless recursion.
- *storage = this;
-
- TRACE(broker, "Creating data " << this << " for handle " << object.address()
- << " (" << Brief(*object) << ")");
-
- // It is safe to access read only heap objects and builtins from a
- // background thread. When we read fileds of these objects, we may create
- // ObjectData on the background thread even without a canonical handle
- // scope. This is safe too since we don't create handles but just get
- // handles from read only root table or builtins table which is what
- // canonical scope uses as well. For all other objects we should have
- // created ObjectData in canonical handle scope on the main thread.
- CHECK_IMPLIES(
- broker->mode() == JSHeapBroker::kDisabled ||
- broker->mode() == JSHeapBroker::kSerializing,
- broker->isolate()->handle_scope_data()->canonical_scope != nullptr);
- CHECK_IMPLIES(broker->mode() == JSHeapBroker::kSerialized,
- kind == kUnserializedReadOnlyHeapObject || kind == kSmi ||
- kind == kNeverSerializedHeapObject ||
- kind == kBackgroundSerializedHeapObject);
- CHECK_IMPLIES(kind == kUnserializedReadOnlyHeapObject,
- IsReadOnlyHeapObject(*object));
- }
-
-#define DECLARE_IS(Name) bool Is##Name() const;
- HEAP_BROKER_SERIALIZED_OBJECT_LIST(DECLARE_IS)
- HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(DECLARE_IS)
- HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(DECLARE_IS)
- HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(DECLARE_IS)
-#undef DECLARE_IS
-
-#define DECLARE_AS(Name) Name##Data* As##Name();
- HEAP_BROKER_SERIALIZED_OBJECT_LIST(DECLARE_AS)
- HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(DECLARE_AS)
- HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(DECLARE_AS)
- HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(DECLARE_AS)
-#undef DECLARE_AS
-
- Handle<Object> object() const { return object_; }
- ObjectDataKind kind() const { return kind_; }
- bool is_smi() const { return kind_ == kSmi; }
- bool should_access_heap() const {
- return kind_ == kUnserializedHeapObject ||
- kind_ == kNeverSerializedHeapObject ||
- kind_ == kUnserializedReadOnlyHeapObject;
- }
- bool IsNull() const { return object_->IsNull(); }
-
-#ifdef DEBUG
- enum class Usage{kUnused, kOnlyIdentityUsed, kDataUsed};
- mutable Usage used_status = Usage::kUnused;
-#endif // DEBUG
-
- private:
- Handle<Object> const object_;
- ObjectDataKind const kind_;
-};
-
-class HeapObjectData : public ObjectData {
- public:
- HeapObjectData(JSHeapBroker* broker, ObjectData** storage,
- Handle<HeapObject> object,
- ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject);
-
- bool boolean_value() const { return boolean_value_; }
- ObjectData* map() const { return map_; }
- InstanceType GetMapInstanceType() const;
-
- static HeapObjectData* Serialize(JSHeapBroker* broker,
- Handle<HeapObject> object);
-
- private:
- bool const boolean_value_;
- ObjectData* const map_;
-};
-
-class PropertyCellData : public HeapObjectData {
- public:
- PropertyCellData(JSHeapBroker* broker, ObjectData** storage,
- Handle<PropertyCell> object,
- ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject);
-
- bool Serialize(JSHeapBroker* broker);
-
- PropertyDetails property_details() const {
- CHECK(serialized());
- return property_details_;
- }
-
- ObjectData* value() const {
- DCHECK(serialized());
- return value_;
- }
-
- private:
- PropertyDetails property_details_ = PropertyDetails::Empty();
- ObjectData* value_ = nullptr;
-
- bool serialized() const { return value_ != nullptr; }
-};
-
-// TODO(mslekova): Once we have real-world usage data, we might want to
-// reimplement this as sorted vector instead, to reduce the memory overhead.
-typedef ZoneMap<ObjectData*, HolderLookupResult> KnownReceiversMap;
-
-class FunctionTemplateInfoData : public HeapObjectData {
- public:
- FunctionTemplateInfoData(JSHeapBroker* broker, ObjectData** storage,
- Handle<FunctionTemplateInfo> object);
-
- bool is_signature_undefined() const { return is_signature_undefined_; }
- bool accept_any_receiver() const { return accept_any_receiver_; }
- bool has_call_code() const { return has_call_code_; }
-
- void SerializeCallCode(JSHeapBroker* broker);
- ObjectData* call_code() const { return call_code_; }
- Address c_function() const { return c_function_; }
- const CFunctionInfo* c_signature() const { return c_signature_; }
- KnownReceiversMap& known_receivers() { return known_receivers_; }
-
- private:
- bool is_signature_undefined_ = false;
- bool accept_any_receiver_ = false;
- bool has_call_code_ = false;
-
- ObjectData* call_code_ = nullptr;
- const Address c_function_;
- const CFunctionInfo* const c_signature_;
- KnownReceiversMap known_receivers_;
-};
-
-class CallHandlerInfoData : public HeapObjectData {
- public:
- CallHandlerInfoData(JSHeapBroker* broker, ObjectData** storage,
- Handle<CallHandlerInfo> object);
-
- Address callback() const { return callback_; }
-
- void Serialize(JSHeapBroker* broker);
- ObjectData* data() const { return data_; }
-
- private:
- Address const callback_;
-
- ObjectData* data_ = nullptr;
-};
-
-FunctionTemplateInfoData::FunctionTemplateInfoData(
- JSHeapBroker* broker, ObjectData** storage,
- Handle<FunctionTemplateInfo> object)
- : HeapObjectData(broker, storage, object),
- c_function_(v8::ToCData<Address>(object->GetCFunction())),
- c_signature_(v8::ToCData<CFunctionInfo*>(object->GetCSignature())),
- known_receivers_(broker->zone()) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- auto function_template_info = Handle<FunctionTemplateInfo>::cast(object);
- is_signature_undefined_ =
- function_template_info->signature().IsUndefined(broker->isolate());
- accept_any_receiver_ = function_template_info->accept_any_receiver();
-
- CallOptimization call_optimization(broker->isolate(), object);
- has_call_code_ = call_optimization.is_simple_api_call();
-}
-
-CallHandlerInfoData::CallHandlerInfoData(JSHeapBroker* broker,
- ObjectData** storage,
- Handle<CallHandlerInfo> object)
- : HeapObjectData(broker, storage, object),
- callback_(v8::ToCData<Address>(object->callback())) {
- DCHECK(!FLAG_turbo_direct_heap_access);
-}
// These definitions are here in order to please the linker, which in debug mode
// sometimes requires static constants to be defined in .cc files.
@@ -299,2243 +34,6 @@ void JSHeapBroker::IncrementTracingIndentation() { ++trace_indentation_; }
void JSHeapBroker::DecrementTracingIndentation() { --trace_indentation_; }
-PropertyCellData::PropertyCellData(JSHeapBroker* broker, ObjectData** storage,
- Handle<PropertyCell> object,
- ObjectDataKind kind)
- : HeapObjectData(broker, storage, object, kind) {}
-
-bool PropertyCellData::Serialize(JSHeapBroker* broker) {
- if (serialized()) return true;
-
- TraceScope tracer(broker, this, "PropertyCellData::Serialize");
- auto cell = Handle<PropertyCell>::cast(object());
-
- // While this code runs on a background thread, the property cell might
- // undergo state transitions via calls to PropertyCell::Transition. These
- // transitions follow a certain protocol on which we rely here to ensure that
- // we only report success when we can guarantee consistent data. A key
- // property is that after transitioning from cell type A to B (A != B), there
- // will never be a transition back to A, unless A is kConstant and the new
- // value is the hole (i.e. the property cell was invalidated, which is a final
- // state).
-
- PropertyDetails property_details = cell->property_details(kAcquireLoad);
-
- Handle<Object> value =
- broker->CanonicalPersistentHandle(cell->value(kAcquireLoad));
- if (broker->ObjectMayBeUninitialized(value)) {
- DCHECK(!broker->IsMainThread());
- return false;
- }
-
- {
- PropertyDetails property_details_again =
- cell->property_details(kAcquireLoad);
- if (property_details != property_details_again) {
- DCHECK(!broker->IsMainThread());
- return false;
- }
- }
-
- if (property_details.cell_type() == PropertyCellType::kConstant) {
- Handle<Object> value_again =
- broker->CanonicalPersistentHandle(cell->value(kAcquireLoad));
- if (*value != *value_again) {
- DCHECK(!broker->IsMainThread());
- return false;
- }
- }
-
- ObjectData* value_data = broker->TryGetOrCreateData(value, false);
- if (value_data == nullptr) {
- DCHECK(!broker->IsMainThread());
- return false;
- }
-
- PropertyCell::CheckDataIsCompatible(property_details, *value);
-
- DCHECK(!serialized());
- property_details_ = property_details;
- value_ = value_data;
- DCHECK(serialized());
- return true;
-}
-
-void FunctionTemplateInfoData::SerializeCallCode(JSHeapBroker* broker) {
- if (call_code_ != nullptr) return;
-
- TraceScope tracer(broker, this,
- "FunctionTemplateInfoData::SerializeCallCode");
- auto function_template_info = Handle<FunctionTemplateInfo>::cast(object());
- call_code_ =
- broker->GetOrCreateData(function_template_info->call_code(kAcquireLoad));
- if (call_code_->should_access_heap()) {
- // TODO(mvstanton): When ObjectRef is in the never serialized list, this
- // code can be removed.
- broker->GetOrCreateData(
- Handle<CallHandlerInfo>::cast(call_code_->object())->data());
- } else {
- call_code_->AsCallHandlerInfo()->Serialize(broker);
- }
-}
-
-void CallHandlerInfoData::Serialize(JSHeapBroker* broker) {
- if (data_ != nullptr) return;
-
- TraceScope tracer(broker, this, "CallHandlerInfoData::Serialize");
- auto call_handler_info = Handle<CallHandlerInfo>::cast(object());
- data_ = broker->GetOrCreateData(call_handler_info->data());
-}
-
-class JSReceiverData : public HeapObjectData {
- public:
- JSReceiverData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSReceiver> object)
- : HeapObjectData(broker, storage, object) {}
-};
-
-class JSObjectData : public JSReceiverData {
- public:
- JSObjectData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSObject> object);
-
- // Recursive serialization of all reachable JSObjects.
- void SerializeAsBoilerplate(JSHeapBroker* broker);
- ObjectData* GetInobjectField(int property_index) const;
-
- // Shallow serialization of {elements}.
- void SerializeElements(JSHeapBroker* broker);
- bool serialized_elements() const { return serialized_elements_; }
- ObjectData* elements() const;
-
- void SerializeObjectCreateMap(JSHeapBroker* broker);
-
- ObjectData* object_create_map(
- JSHeapBroker* broker) const { // Can be nullptr.
- if (!serialized_object_create_map_) {
- DCHECK_NULL(object_create_map_);
- TRACE_MISSING(broker, "object_create_map on " << this);
- }
- return object_create_map_;
- }
-
- ObjectData* GetOwnConstantElement(
- JSHeapBroker* broker, uint32_t index,
- SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
- ObjectData* GetOwnFastDataProperty(
- JSHeapBroker* broker, Representation representation,
- FieldIndex field_index,
- SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
- ObjectData* GetOwnDictionaryProperty(JSHeapBroker* broker,
- InternalIndex dict_index,
- SerializationPolicy policy);
-
- // This method is only used to assert our invariants.
- bool cow_or_empty_elements_tenured() const;
-
- private:
- void SerializeRecursiveAsBoilerplate(JSHeapBroker* broker, int max_depths);
-
- ObjectData* elements_ = nullptr;
- bool cow_or_empty_elements_tenured_ = false;
- // The {serialized_as_boilerplate} flag is set when all recursively
- // reachable JSObjects are serialized.
- bool serialized_as_boilerplate_ = false;
- bool serialized_elements_ = false;
-
- ZoneVector<ObjectData*> inobject_fields_;
-
- bool serialized_object_create_map_ = false;
- ObjectData* object_create_map_ = nullptr;
-
- // Elements (indexed properties) that either
- // (1) are known to exist directly on the object as non-writable and
- // non-configurable, or (2) are known not to (possibly they don't exist at
- // all). In case (2), the second pair component is nullptr.
- ZoneVector<std::pair<uint32_t, ObjectData*>> own_constant_elements_;
- // Properties that either:
- // (1) are known to exist directly on the object, or
- // (2) are known not to (possibly they don't exist at all).
- // In case (2), the second pair component is nullptr.
- // For simplicity, this may in theory overlap with inobject_fields_.
- // For fast mode objects, the keys of the map are the property_index() values
- // of the respective property FieldIndex'es. For slow mode objects, the keys
- // are the dictionary indicies.
- ZoneUnorderedMap<int, ObjectData*> own_properties_;
-};
-
-void JSObjectData::SerializeObjectCreateMap(JSHeapBroker* broker) {
- if (serialized_object_create_map_) return;
- serialized_object_create_map_ = true;
-
- TraceScope tracer(broker, this, "JSObjectData::SerializeObjectCreateMap");
- Handle<JSObject> jsobject = Handle<JSObject>::cast(object());
-
- if (jsobject->map().is_prototype_map()) {
- Handle<Object> maybe_proto_info(jsobject->map().prototype_info(),
- broker->isolate());
- if (maybe_proto_info->IsPrototypeInfo()) {
- auto proto_info = Handle<PrototypeInfo>::cast(maybe_proto_info);
- if (proto_info->HasObjectCreateMap()) {
- DCHECK_NULL(object_create_map_);
- object_create_map_ =
- broker->GetOrCreateData(proto_info->ObjectCreateMap());
- }
- }
- }
-}
-
-namespace {
-
-base::Optional<ObjectRef> GetOwnElementFromHeap(JSHeapBroker* broker,
- Handle<Object> receiver,
- uint32_t index,
- bool constant_only) {
- LookupIterator it(broker->isolate(), receiver, index, LookupIterator::OWN);
- if (it.state() == LookupIterator::DATA &&
- (!constant_only || (it.IsReadOnly() && !it.IsConfigurable()))) {
- return ObjectRef(broker,
- broker->CanonicalPersistentHandle(it.GetDataValue()));
- }
- return base::nullopt;
-}
-
-ObjectRef GetOwnFastDataPropertyFromHeap(JSHeapBroker* broker,
- Handle<JSObject> receiver,
- Representation representation,
- FieldIndex field_index) {
- Handle<Object> constant =
- JSObject::FastPropertyAt(receiver, representation, field_index);
- return ObjectRef(broker, constant);
-}
-
-ObjectRef GetOwnDictionaryPropertyFromHeap(JSHeapBroker* broker,
- Handle<JSObject> receiver,
- InternalIndex dict_index) {
- Handle<Object> constant =
- JSObject::DictionaryPropertyAt(receiver, dict_index);
- return ObjectRef(broker, constant);
-}
-
-} // namespace
-
-ObjectData* JSObjectData::GetOwnConstantElement(JSHeapBroker* broker,
- uint32_t index,
- SerializationPolicy policy) {
- for (auto const& p : own_constant_elements_) {
- if (p.first == index) return p.second;
- }
-
- if (policy == SerializationPolicy::kAssumeSerialized) {
- TRACE_MISSING(broker, "knowledge about index " << index << " on " << this);
- return nullptr;
- }
-
- base::Optional<ObjectRef> element =
- GetOwnElementFromHeap(broker, object(), index, true);
- ObjectData* result = element.has_value() ? element->data() : nullptr;
- own_constant_elements_.push_back({index, result});
- return result;
-}
-
-ObjectData* JSObjectData::GetOwnFastDataProperty(JSHeapBroker* broker,
- Representation representation,
- FieldIndex field_index,
- SerializationPolicy policy) {
- auto p = own_properties_.find(field_index.property_index());
- if (p != own_properties_.end()) return p->second;
-
- if (policy == SerializationPolicy::kAssumeSerialized) {
- TRACE_MISSING(broker, "knowledge about fast property with index "
- << field_index.property_index() << " on "
- << this);
- return nullptr;
- }
-
- ObjectRef property = GetOwnFastDataPropertyFromHeap(
- broker, Handle<JSObject>::cast(object()), representation, field_index);
- ObjectData* result(property.data());
- own_properties_.insert(std::make_pair(field_index.property_index(), result));
- return result;
-}
-
-ObjectData* JSObjectData::GetOwnDictionaryProperty(JSHeapBroker* broker,
- InternalIndex dict_index,
- SerializationPolicy policy) {
- auto p = own_properties_.find(dict_index.as_int());
- if (p != own_properties_.end()) return p->second;
-
- if (policy == SerializationPolicy::kAssumeSerialized) {
- TRACE_MISSING(broker, "knowledge about dictionary property with index "
- << dict_index.as_int() << " on " << this);
- return nullptr;
- }
-
- ObjectRef property = GetOwnDictionaryPropertyFromHeap(
- broker, Handle<JSObject>::cast(object()), dict_index);
- ObjectData* result(property.data());
- own_properties_.insert(std::make_pair(dict_index.as_int(), result));
- return result;
-}
-
-class JSTypedArrayData : public JSObjectData {
- public:
- JSTypedArrayData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSTypedArray> object)
- : JSObjectData(broker, storage, object) {}
-
- // TODO(v8:7790): Once JSObject is no longer serialized, also make
- // JSTypedArrayRef never-serialized.
- STATIC_ASSERT(IsSerializedHeapObject<JSObject>());
-
- void Serialize(JSHeapBroker* broker);
- bool serialized() const { return serialized_; }
-
- bool is_on_heap() const { return is_on_heap_; }
- size_t length() const { return length_; }
- void* data_ptr() const { return data_ptr_; }
-
- ObjectData* buffer() const { return buffer_; }
-
- private:
- bool serialized_ = false;
- bool is_on_heap_ = false;
- size_t length_ = 0;
- void* data_ptr_ = nullptr;
- ObjectData* buffer_ = nullptr;
-};
-
-void JSTypedArrayData::Serialize(JSHeapBroker* broker) {
- if (serialized_) return;
- serialized_ = true;
-
- TraceScope tracer(broker, this, "JSTypedArrayData::Serialize");
- Handle<JSTypedArray> typed_array = Handle<JSTypedArray>::cast(object());
-
- is_on_heap_ = typed_array->is_on_heap();
- length_ = typed_array->length();
- data_ptr_ = typed_array->DataPtr();
-
- if (!is_on_heap()) {
- DCHECK_NULL(buffer_);
- buffer_ = broker->GetOrCreateData(typed_array->buffer());
- }
-}
-
-class ArrayBoilerplateDescriptionData : public HeapObjectData {
- public:
- ArrayBoilerplateDescriptionData(JSHeapBroker* broker, ObjectData** storage,
- Handle<ArrayBoilerplateDescription> object)
- : HeapObjectData(broker, storage, object),
- constants_elements_length_(object->constant_elements().length()) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-
- int constants_elements_length() const { return constants_elements_length_; }
-
- private:
- int const constants_elements_length_;
-};
-
-class ObjectBoilerplateDescriptionData : public HeapObjectData {
- public:
- ObjectBoilerplateDescriptionData(JSHeapBroker* broker, ObjectData** storage,
- Handle<ObjectBoilerplateDescription> object)
- : HeapObjectData(broker, storage, object), size_(object->size()) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-
- int size() const { return size_; }
-
- private:
- int const size_;
-};
-
-class JSDataViewData : public JSObjectData {
- public:
- JSDataViewData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSDataView> object);
-
- size_t byte_length() const { return byte_length_; }
-
- private:
- size_t const byte_length_;
-};
-
-class JSBoundFunctionData : public JSObjectData {
- public:
- JSBoundFunctionData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSBoundFunction> object);
-
- bool Serialize(JSHeapBroker* broker);
- bool serialized() const { return serialized_; }
-
- ObjectData* bound_target_function() const {
- DCHECK(!FLAG_turbo_direct_heap_access);
- return bound_target_function_;
- }
- ObjectData* bound_this() const {
- DCHECK(!FLAG_turbo_direct_heap_access);
- return bound_this_;
- }
- ObjectData* bound_arguments() const {
- DCHECK(!FLAG_turbo_direct_heap_access);
- return bound_arguments_;
- }
-
- private:
- bool serialized_ = false;
-
- ObjectData* bound_target_function_ = nullptr;
- ObjectData* bound_this_ = nullptr;
- ObjectData* bound_arguments_ = nullptr;
-};
-
-class JSFunctionData : public JSObjectData {
- public:
- JSFunctionData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSFunction> object);
-
- bool has_feedback_vector() const { return has_feedback_vector_; }
- bool has_initial_map() const { return has_initial_map_; }
- bool has_prototype() const { return has_prototype_; }
- bool PrototypeRequiresRuntimeLookup() const {
- return PrototypeRequiresRuntimeLookup_;
- }
-
- void Serialize(JSHeapBroker* broker);
- bool serialized() const { return serialized_; }
-
- void SerializeCodeAndFeedback(JSHeapBroker* broker);
- bool serialized_code_and_feedback() const {
- return serialized_code_and_feedback_;
- }
-
- ObjectData* context() const { return context_; }
- ObjectData* native_context() const { return native_context_; }
- ObjectData* initial_map() const { return initial_map_; }
- ObjectData* prototype() const { return prototype_; }
- ObjectData* shared() const { return shared_; }
- ObjectData* raw_feedback_cell() const {
- DCHECK(serialized_code_and_feedback());
- return feedback_cell_;
- }
- ObjectData* feedback_vector() const {
- DCHECK(serialized_code_and_feedback());
- return feedback_vector_;
- }
- ObjectData* code() const {
- DCHECK(serialized_code_and_feedback());
- DCHECK(!FLAG_turbo_direct_heap_access);
- return code_;
- }
- int initial_map_instance_size_with_min_slack() const {
- CHECK(serialized_);
- return initial_map_instance_size_with_min_slack_;
- }
-
- private:
- bool has_feedback_vector_;
- bool has_initial_map_;
- bool has_prototype_;
- bool PrototypeRequiresRuntimeLookup_;
-
- bool serialized_ = false;
- bool serialized_code_and_feedback_ = false;
-
- ObjectData* context_ = nullptr;
- ObjectData* native_context_ = nullptr;
- ObjectData* initial_map_ = nullptr;
- ObjectData* prototype_ = nullptr;
- ObjectData* shared_ = nullptr;
- ObjectData* feedback_vector_ = nullptr;
- ObjectData* feedback_cell_ = nullptr;
- ObjectData* code_ = nullptr;
- int initial_map_instance_size_with_min_slack_;
-};
-
-class RegExpBoilerplateDescriptionData : public HeapObjectData {
- public:
- RegExpBoilerplateDescriptionData(JSHeapBroker* broker, ObjectData** storage,
- Handle<RegExpBoilerplateDescription> object)
- : HeapObjectData(broker, storage, object) {}
-
- void Serialize(JSHeapBroker* broker);
- ObjectData* data() const {
- CHECK(serialized_);
- return data_;
- }
- ObjectData* source() const {
- CHECK(serialized_);
- return source_;
- }
- int flags() const {
- CHECK(serialized_);
- return flags_;
- }
-
- private:
- bool serialized_ = false;
- ObjectData* data_ = nullptr;
- ObjectData* source_ = nullptr;
- int flags_;
-};
-
-class HeapNumberData : public HeapObjectData {
- public:
- HeapNumberData(JSHeapBroker* broker, ObjectData** storage,
- Handle<HeapNumber> object,
- ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject)
- : HeapObjectData(broker, storage, object, kind),
- value_(object->value()) {}
-
- double value() const { return value_; }
-
- private:
- double const value_;
-};
-
-class ContextData : public HeapObjectData {
- public:
- ContextData(JSHeapBroker* broker, ObjectData** storage,
- Handle<Context> object);
-
- ObjectData* previous(
- JSHeapBroker* broker,
- SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
-
- // Returns nullptr if the slot index isn't valid or wasn't serialized,
- // unless {policy} is {kSerializeIfNeeded}.
- ObjectData* GetSlot(
- JSHeapBroker* broker, int index,
- SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
-
- private:
- ZoneMap<int, ObjectData*> slots_;
- ObjectData* previous_ = nullptr;
-};
-
-ContextData::ContextData(JSHeapBroker* broker, ObjectData** storage,
- Handle<Context> object)
- : HeapObjectData(broker, storage, object), slots_(broker->zone()) {}
-
-ObjectData* ContextData::previous(JSHeapBroker* broker,
- SerializationPolicy policy) {
- if (policy == SerializationPolicy::kSerializeIfNeeded &&
- previous_ == nullptr) {
- TraceScope tracer(broker, this, "ContextData::previous");
- Handle<Context> context = Handle<Context>::cast(object());
- previous_ = broker->GetOrCreateData(context->unchecked_previous());
- }
- return previous_;
-}
-
-ObjectData* ContextData::GetSlot(JSHeapBroker* broker, int index,
- SerializationPolicy policy) {
- CHECK_GE(index, 0);
- auto search = slots_.find(index);
- if (search != slots_.end()) {
- return search->second;
- }
-
- if (policy == SerializationPolicy::kSerializeIfNeeded) {
- Handle<Context> context = Handle<Context>::cast(object());
- if (index < context->length()) {
- TraceScope tracer(broker, this, "ContextData::GetSlot");
- TRACE(broker, "Serializing context slot " << index);
- ObjectData* odata = broker->GetOrCreateData(context->get(index));
- slots_.insert(std::make_pair(index, odata));
- return odata;
- }
- }
-
- return nullptr;
-}
-
-class NativeContextData : public ContextData {
- public:
-#define DECL_ACCESSOR(type, name) \
- ObjectData* name() const { return name##_; }
- BROKER_NATIVE_CONTEXT_FIELDS(DECL_ACCESSOR)
-#undef DECL_ACCESSOR
-
- const ZoneVector<ObjectData*>& function_maps() const {
- CHECK_NE(state_, State::kUnserialized);
- return function_maps_;
- }
-
- ObjectData* scope_info() const {
- CHECK_NE(state_, State::kUnserialized);
- return scope_info_;
- }
-
- NativeContextData(JSHeapBroker* broker, ObjectData** storage,
- Handle<NativeContext> object);
- void Serialize(JSHeapBroker* broker);
- void SerializeOnBackground(JSHeapBroker* broker);
-
- private:
- // After Serialize is called the class is partially serialized and it the
- // kSerializedOnMainThread state. It then becomes kFullySerialized once
- // SerializeOnBackground is called.
- enum class State { kUnserialized, kSerializedOnMainThread, kFullySerialized };
- State state_;
-
-#define DECL_MEMBER(type, name) ObjectData* name##_ = nullptr;
- BROKER_NATIVE_CONTEXT_FIELDS(DECL_MEMBER)
-#undef DECL_MEMBER
- ZoneVector<ObjectData*> function_maps_;
- ObjectData* scope_info_ = nullptr;
-};
-
-class NameData : public HeapObjectData {
- public:
- NameData(JSHeapBroker* broker, ObjectData** storage, Handle<Name> object)
- : HeapObjectData(broker, storage, object) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-};
-
-class StringData : public NameData {
- public:
- StringData(JSHeapBroker* broker, ObjectData** storage, Handle<String> object);
-
- int length() const { return length_; }
- uint16_t first_char() const { return first_char_; }
- base::Optional<double> to_number() const { return to_number_; }
- bool is_external_string() const { return is_external_string_; }
- bool is_seq_string() const { return is_seq_string_; }
-
- ObjectData* GetCharAsStringOrUndefined(
- JSHeapBroker* broker, uint32_t index,
- SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
-
- private:
- int const length_;
- uint16_t const first_char_;
- base::Optional<double> to_number_;
- bool const is_external_string_;
- bool const is_seq_string_;
-
- // Known individual characters as strings, corresponding to the semantics of
- // element access (s[i]). The first pair component is always less than
- // {length_}. The second component is never nullptr.
- ZoneVector<std::pair<uint32_t, ObjectData*>> chars_as_strings_;
-};
-
-class SymbolData : public NameData {
- public:
- SymbolData(JSHeapBroker* broker, ObjectData** storage, Handle<Symbol> object)
- : NameData(broker, storage, object) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-};
-
-StringData::StringData(JSHeapBroker* broker, ObjectData** storage,
- Handle<String> object)
- : NameData(broker, storage, object),
- length_(object->length()),
- first_char_(length_ > 0 ? object->Get(0) : 0),
- to_number_(TryStringToDouble(broker->local_isolate(), object)),
- is_external_string_(object->IsExternalString()),
- is_seq_string_(object->IsSeqString()),
- chars_as_strings_(broker->zone()) {
- DCHECK(!FLAG_turbo_direct_heap_access);
-}
-
-class InternalizedStringData : public StringData {
- public:
- InternalizedStringData(JSHeapBroker* broker, ObjectData** storage,
- Handle<InternalizedString> object)
- : StringData(broker, storage, object) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-};
-
-ObjectData* StringData::GetCharAsStringOrUndefined(JSHeapBroker* broker,
- uint32_t index,
- SerializationPolicy policy) {
- if (index >= static_cast<uint32_t>(length())) return nullptr;
-
- for (auto const& p : chars_as_strings_) {
- if (p.first == index) return p.second;
- }
-
- if (policy == SerializationPolicy::kAssumeSerialized) {
- TRACE_MISSING(broker, "knowledge about index " << index << " on " << this);
- return nullptr;
- }
-
- base::Optional<ObjectRef> element =
- GetOwnElementFromHeap(broker, object(), index, true);
- ObjectData* result = element.has_value() ? element->data() : nullptr;
- chars_as_strings_.push_back({index, result});
- return result;
-}
-
-namespace {
-
-bool IsFastLiteralHelper(Handle<JSObject> boilerplate, int max_depth,
- int* max_properties) {
- DCHECK_GE(max_depth, 0);
- DCHECK_GE(*max_properties, 0);
-
- Isolate* const isolate = boilerplate->GetIsolate();
-
- // Make sure the boilerplate map is not deprecated.
- if (!JSObject::TryMigrateInstance(isolate, boilerplate)) return false;
-
- // Check for too deep nesting.
- if (max_depth == 0) return false;
-
- // Check the elements.
- Handle<FixedArrayBase> elements(boilerplate->elements(), isolate);
- if (elements->length() > 0 &&
- elements->map() != ReadOnlyRoots(isolate).fixed_cow_array_map()) {
- if (boilerplate->HasSmiOrObjectElements()) {
- Handle<FixedArray> fast_elements = Handle<FixedArray>::cast(elements);
- int length = elements->length();
- for (int i = 0; i < length; i++) {
- if ((*max_properties)-- == 0) return false;
- Handle<Object> value(fast_elements->get(i), isolate);
- if (value->IsJSObject()) {
- Handle<JSObject> value_object = Handle<JSObject>::cast(value);
- if (!IsFastLiteralHelper(value_object, max_depth - 1,
- max_properties)) {
- return false;
- }
- }
- }
- } else if (boilerplate->HasDoubleElements()) {
- if (elements->Size() > kMaxRegularHeapObjectSize) return false;
- } else {
- return false;
- }
- }
-
- // TODO(turbofan): Do we want to support out-of-object properties?
- if (!(boilerplate->HasFastProperties() &&
- boilerplate->property_array().length() == 0)) {
- return false;
- }
-
- // Check the in-object properties.
- Handle<DescriptorArray> descriptors(
- boilerplate->map().instance_descriptors(isolate, kRelaxedLoad), isolate);
- for (InternalIndex i : boilerplate->map().IterateOwnDescriptors()) {
- PropertyDetails details = descriptors->GetDetails(i);
- if (details.location() != kField) continue;
- DCHECK_EQ(kData, details.kind());
- if ((*max_properties)-- == 0) return false;
- FieldIndex field_index = FieldIndex::ForDescriptor(boilerplate->map(), i);
- Handle<Object> value(boilerplate->RawFastPropertyAt(field_index), isolate);
- if (value->IsJSObject()) {
- Handle<JSObject> value_object = Handle<JSObject>::cast(value);
- if (!IsFastLiteralHelper(value_object, max_depth - 1, max_properties)) {
- return false;
- }
- }
- }
- return true;
-}
-
-// Maximum depth and total number of elements and properties for literal
-// graphs to be considered for fast deep-copying. The limit is chosen to
-// match the maximum number of inobject properties, to ensure that the
-// performance of using object literals is not worse than using constructor
-// functions, see crbug.com/v8/6211 for details.
-const int kMaxFastLiteralDepth = 3;
-const int kMaxFastLiteralProperties = JSObject::kMaxInObjectProperties;
-
-// Determines whether the given array or object literal boilerplate satisfies
-// all limits to be considered for fast deep-copying and computes the total
-// size of all objects that are part of the graph.
-bool IsInlinableFastLiteral(Handle<JSObject> boilerplate) {
- int max_properties = kMaxFastLiteralProperties;
- return IsFastLiteralHelper(boilerplate, kMaxFastLiteralDepth,
- &max_properties);
-}
-
-} // namespace
-
-class AccessorInfoData : public HeapObjectData {
- public:
- AccessorInfoData(JSHeapBroker* broker, ObjectData** storage,
- Handle<AccessorInfo> object);
-};
-
-class AllocationSiteData : public HeapObjectData {
- public:
- AllocationSiteData(JSHeapBroker* broker, ObjectData** storage,
- Handle<AllocationSite> object);
- void SerializeBoilerplate(JSHeapBroker* broker);
-
- bool PointsToLiteral() const { return PointsToLiteral_; }
- AllocationType GetAllocationType() const { return GetAllocationType_; }
- ObjectData* nested_site() const { return nested_site_; }
- bool IsFastLiteral() const { return IsFastLiteral_; }
- ObjectData* boilerplate() const { return boilerplate_; }
-
- // These are only valid if PointsToLiteral is false.
- ElementsKind GetElementsKind() const { return GetElementsKind_; }
- bool CanInlineCall() const { return CanInlineCall_; }
-
- private:
- bool const PointsToLiteral_;
- AllocationType const GetAllocationType_;
- ObjectData* nested_site_ = nullptr;
- bool IsFastLiteral_ = false;
- ObjectData* boilerplate_ = nullptr;
- ElementsKind GetElementsKind_ = NO_ELEMENTS;
- bool CanInlineCall_ = false;
- bool serialized_boilerplate_ = false;
-};
-
-class BigIntData : public HeapObjectData {
- public:
- BigIntData(JSHeapBroker* broker, ObjectData** storage, Handle<BigInt> object,
- ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject)
- : HeapObjectData(broker, storage, object, kind),
- as_uint64_(object->AsUint64(nullptr)) {}
-
- uint64_t AsUint64() const { return as_uint64_; }
-
- private:
- const uint64_t as_uint64_;
-};
-
-// Only used in JSNativeContextSpecialization.
-class ScriptContextTableData : public HeapObjectData {
- public:
- ScriptContextTableData(JSHeapBroker* broker, ObjectData** storage,
- Handle<ScriptContextTable> object)
- : HeapObjectData(broker, storage, object) {}
-};
-
-struct PropertyDescriptor {
- ObjectData* key = nullptr;
- ObjectData* value = nullptr;
- PropertyDetails details = PropertyDetails::Empty();
- FieldIndex field_index;
- ObjectData* field_owner = nullptr;
- ObjectData* field_type = nullptr;
-};
-
-class MapData : public HeapObjectData {
- public:
- MapData(JSHeapBroker* broker, ObjectData** storage, Handle<Map> object,
- ObjectDataKind kind = ObjectDataKind::kSerializedHeapObject);
-
- InstanceType instance_type() const { return instance_type_; }
- int instance_size() const { return instance_size_; }
- byte bit_field() const { return bit_field_; }
- byte bit_field2() const { return bit_field2_; }
- uint32_t bit_field3() const { return bit_field3_; }
- bool can_be_deprecated() const { return can_be_deprecated_; }
- bool can_transition() const { return can_transition_; }
- int in_object_properties_start_in_words() const {
- CHECK(InstanceTypeChecker::IsJSObject(instance_type()));
- return in_object_properties_start_in_words_;
- }
- int in_object_properties() const {
- CHECK(InstanceTypeChecker::IsJSObject(instance_type()));
- return in_object_properties_;
- }
- int constructor_function_index() const { return constructor_function_index_; }
- int NextFreePropertyIndex() const { return next_free_property_index_; }
- int UnusedPropertyFields() const { return unused_property_fields_; }
- bool supports_fast_array_iteration() const {
- return supports_fast_array_iteration_;
- }
- bool supports_fast_array_resize() const {
- return supports_fast_array_resize_;
- }
- bool is_abandoned_prototype_map() const {
- return is_abandoned_prototype_map_;
- }
-
- // Extra information.
-
- void SerializeElementsKindGeneralizations(JSHeapBroker* broker);
- const ZoneVector<ObjectData*>& elements_kind_generalizations() const {
- CHECK(serialized_elements_kind_generalizations_);
- return elements_kind_generalizations_;
- }
-
- // Serialize a single (or all) own slot(s) of the descriptor array and recurse
- // on field owner(s).
- void SerializeOwnDescriptor(JSHeapBroker* broker,
- InternalIndex descriptor_index);
- void SerializeOwnDescriptors(JSHeapBroker* broker);
- ObjectData* GetStrongValue(InternalIndex descriptor_index) const;
- ObjectData* instance_descriptors() const { return instance_descriptors_; }
-
- void SerializeRootMap(JSHeapBroker* broker);
- ObjectData* FindRootMap() const;
-
- void SerializeConstructor(JSHeapBroker* broker);
- ObjectData* GetConstructor() const {
- CHECK(serialized_constructor_);
- return constructor_;
- }
-
- void SerializeBackPointer(JSHeapBroker* broker);
- ObjectData* GetBackPointer() const {
- CHECK(serialized_backpointer_);
- return backpointer_;
- }
-
- void SerializePrototype(JSHeapBroker* broker);
- bool serialized_prototype() const { return serialized_prototype_; }
- ObjectData* prototype() const {
- CHECK(serialized_prototype_);
- return prototype_;
- }
-
- void SerializeForElementLoad(JSHeapBroker* broker);
-
- void SerializeForElementStore(JSHeapBroker* broker);
-
- private:
- InstanceType const instance_type_;
- int const instance_size_;
- byte const bit_field_;
- byte const bit_field2_;
- uint32_t const bit_field3_;
- bool const can_be_deprecated_;
- bool const can_transition_;
- int const in_object_properties_start_in_words_;
- int const in_object_properties_;
- int const constructor_function_index_;
- int const next_free_property_index_;
- int const unused_property_fields_;
- bool const supports_fast_array_iteration_;
- bool const supports_fast_array_resize_;
- bool const is_abandoned_prototype_map_;
-
- bool serialized_elements_kind_generalizations_ = false;
- ZoneVector<ObjectData*> elements_kind_generalizations_;
-
- bool serialized_own_descriptors_ = false;
- ObjectData* instance_descriptors_ = nullptr;
-
- bool serialized_constructor_ = false;
- ObjectData* constructor_ = nullptr;
-
- bool serialized_backpointer_ = false;
- ObjectData* backpointer_ = nullptr;
-
- bool serialized_prototype_ = false;
- ObjectData* prototype_ = nullptr;
-
- bool serialized_root_map_ = false;
- ObjectData* root_map_ = nullptr;
-
- bool serialized_for_element_load_ = false;
-
- bool serialized_for_element_store_ = false;
-};
-
-AccessorInfoData::AccessorInfoData(JSHeapBroker* broker, ObjectData** storage,
- Handle<AccessorInfo> object)
- : HeapObjectData(broker, storage, object) {
- DCHECK(!FLAG_turbo_direct_heap_access);
-}
-
-AllocationSiteData::AllocationSiteData(JSHeapBroker* broker,
- ObjectData** storage,
- Handle<AllocationSite> object)
- : HeapObjectData(broker, storage, object),
- PointsToLiteral_(object->PointsToLiteral()),
- GetAllocationType_(object->GetAllocationType()) {
- if (PointsToLiteral_) {
- IsFastLiteral_ = IsInlinableFastLiteral(
- handle(object->boilerplate(), broker->isolate()));
- } else {
- GetElementsKind_ = object->GetElementsKind();
- CanInlineCall_ = object->CanInlineCall();
- }
-}
-
-void AllocationSiteData::SerializeBoilerplate(JSHeapBroker* broker) {
- if (serialized_boilerplate_) return;
- serialized_boilerplate_ = true;
-
- TraceScope tracer(broker, this, "AllocationSiteData::SerializeBoilerplate");
- Handle<AllocationSite> site = Handle<AllocationSite>::cast(object());
-
- CHECK(IsFastLiteral_);
- DCHECK_NULL(boilerplate_);
- boilerplate_ = broker->GetOrCreateData(site->boilerplate());
- if (!boilerplate_->should_access_heap()) {
- boilerplate_->AsJSObject()->SerializeAsBoilerplate(broker);
- }
-
- DCHECK_NULL(nested_site_);
- nested_site_ = broker->GetOrCreateData(site->nested_site());
- if (nested_site_->IsAllocationSite() && !nested_site_->should_access_heap()) {
- nested_site_->AsAllocationSite()->SerializeBoilerplate(broker);
- }
-}
-
-HeapObjectData::HeapObjectData(JSHeapBroker* broker, ObjectData** storage,
- Handle<HeapObject> object, ObjectDataKind kind)
- : ObjectData(broker, storage, object, kind),
- boolean_value_(object->BooleanValue(broker->isolate())),
- // We have to use a raw cast below instead of AsMap() because of
- // recursion. AsMap() would call IsMap(), which accesses the
- // instance_type_ member. In the case of constructing the MapData for the
- // meta map (whose map is itself), this member has not yet been
- // initialized.
- map_(broker->GetOrCreateData(object->map())) {
- CHECK_IMPLIES(kind == kSerializedHeapObject,
- broker->mode() == JSHeapBroker::kSerializing);
- CHECK_IMPLIES(broker->mode() == JSHeapBroker::kSerialized,
- kind == kBackgroundSerializedHeapObject);
-}
-
-InstanceType HeapObjectData::GetMapInstanceType() const {
- ObjectData* map_data = map();
- if (map_data->should_access_heap()) {
- return Handle<Map>::cast(map_data->object())->instance_type();
- }
- return map_data->AsMap()->instance_type();
-}
-
-namespace {
-bool IsReadOnlyLengthDescriptor(Isolate* isolate, Handle<Map> jsarray_map) {
- DCHECK(!jsarray_map->is_dictionary_map());
- Handle<Name> length_string = isolate->factory()->length_string();
- DescriptorArray descriptors =
- jsarray_map->instance_descriptors(isolate, kRelaxedLoad);
- // TODO(jkummerow): We could skip the search and hardcode number == 0.
- InternalIndex number = descriptors.Search(*length_string, *jsarray_map);
- DCHECK(number.is_found());
- return descriptors.GetDetails(number).IsReadOnly();
-}
-
-bool SupportsFastArrayIteration(Isolate* isolate, Handle<Map> map) {
- return map->instance_type() == JS_ARRAY_TYPE &&
- IsFastElementsKind(map->elements_kind()) &&
- map->prototype().IsJSArray() &&
- isolate->IsAnyInitialArrayPrototype(JSArray::cast(map->prototype())) &&
- Protectors::IsNoElementsIntact(isolate);
-}
-
-bool SupportsFastArrayResize(Isolate* isolate, Handle<Map> map) {
- return SupportsFastArrayIteration(isolate, map) && map->is_extensible() &&
- !map->is_dictionary_map() && !IsReadOnlyLengthDescriptor(isolate, map);
-}
-} // namespace
-
-MapData::MapData(JSHeapBroker* broker, ObjectData** storage, Handle<Map> object,
- ObjectDataKind kind)
- : HeapObjectData(broker, storage, object, kind),
- instance_type_(object->instance_type()),
- instance_size_(object->instance_size()),
- // We read the bit_field as relaxed since `has_non_instance_prototype` can
- // be modified in live objects, and because we serialize some maps on the
- // background. Those background-serialized maps are the native context's
- // maps for which this bit is "set" but it doesn't change value (i.e. it
- // is set to false when it was already false).
- bit_field_(object->relaxed_bit_field()),
- bit_field2_(object->bit_field2()),
- bit_field3_(object->bit_field3()),
- can_be_deprecated_(object->NumberOfOwnDescriptors() > 0
- ? object->CanBeDeprecated()
- : false),
- can_transition_(object->CanTransition()),
- in_object_properties_start_in_words_(
- object->IsJSObjectMap() ? object->GetInObjectPropertiesStartInWords()
- : 0),
- in_object_properties_(
- object->IsJSObjectMap() ? object->GetInObjectProperties() : 0),
- constructor_function_index_(object->IsPrimitiveMap()
- ? object->GetConstructorFunctionIndex()
- : Map::kNoConstructorFunctionIndex),
- next_free_property_index_(object->NextFreePropertyIndex()),
- unused_property_fields_(object->UnusedPropertyFields()),
- supports_fast_array_iteration_(
- SupportsFastArrayIteration(broker->isolate(), object)),
- supports_fast_array_resize_(
- SupportsFastArrayResize(broker->isolate(), object)),
- is_abandoned_prototype_map_(object->is_abandoned_prototype_map()),
- elements_kind_generalizations_(broker->zone()) {}
-
-JSFunctionData::JSFunctionData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSFunction> object)
- : JSObjectData(broker, storage, object),
- has_feedback_vector_(object->has_feedback_vector()),
- has_initial_map_(object->has_prototype_slot() &&
- object->has_initial_map()),
- has_prototype_(object->has_prototype_slot() && object->has_prototype()),
- PrototypeRequiresRuntimeLookup_(
- object->PrototypeRequiresRuntimeLookup()) {}
-
-void JSFunctionData::Serialize(JSHeapBroker* broker) {
- if (serialized_) return;
- serialized_ = true;
-
- TraceScope tracer(broker, this, "JSFunctionData::Serialize");
- Handle<JSFunction> function = Handle<JSFunction>::cast(object());
-
- DCHECK_NULL(context_);
- DCHECK_NULL(native_context_);
- DCHECK_NULL(initial_map_);
- DCHECK_NULL(prototype_);
- DCHECK_NULL(shared_);
-
- context_ = broker->GetOrCreateData(function->context());
- native_context_ = broker->GetOrCreateData(function->native_context());
- shared_ = broker->GetOrCreateData(function->shared());
-
- initial_map_ = has_initial_map()
- ? broker->GetOrCreateData(function->initial_map())
- : nullptr;
- prototype_ = has_prototype() ? broker->GetOrCreateData(function->prototype())
- : nullptr;
-
- if (initial_map_ != nullptr) {
- initial_map_instance_size_with_min_slack_ =
- function->ComputeInstanceSizeWithMinSlack(broker->isolate());
- }
- if (initial_map_ != nullptr && !initial_map_->should_access_heap()) {
- if (initial_map_->AsMap()->instance_type() == JS_ARRAY_TYPE) {
- initial_map_->AsMap()->SerializeElementsKindGeneralizations(broker);
- }
- initial_map_->AsMap()->SerializeConstructor(broker);
- // TODO(neis): This is currently only needed for native_context's
- // object_function, as used by GetObjectCreateMap. If no further use sites
- // show up, we should move this into NativeContextData::Serialize.
- initial_map_->AsMap()->SerializePrototype(broker);
- }
-}
-
-void JSFunctionData::SerializeCodeAndFeedback(JSHeapBroker* broker) {
- DCHECK(serialized_);
- if (serialized_code_and_feedback_) return;
- serialized_code_and_feedback_ = true;
-
- TraceScope tracer(broker, this, "JSFunctionData::SerializeCodeAndFeedback");
- Handle<JSFunction> function = Handle<JSFunction>::cast(object());
-
- DCHECK_NULL(feedback_cell_);
- DCHECK_NULL(feedback_vector_);
- DCHECK_NULL(code_);
- if (!FLAG_turbo_direct_heap_access) {
- // This is conditionalized because Code objects are never serialized now.
- // We only need to represent the code object in serialized data when
- // we're unable to perform direct heap accesses.
- code_ = broker->GetOrCreateData(function->code(kAcquireLoad));
- }
- feedback_cell_ = broker->GetOrCreateData(function->raw_feedback_cell());
- feedback_vector_ = has_feedback_vector()
- ? broker->GetOrCreateData(function->feedback_vector())
- : nullptr;
-}
-
-void MapData::SerializeElementsKindGeneralizations(JSHeapBroker* broker) {
- if (serialized_elements_kind_generalizations_) return;
- serialized_elements_kind_generalizations_ = true;
-
- TraceScope tracer(broker, this,
- "MapData::SerializeElementsKindGeneralizations");
- DCHECK_EQ(instance_type(), JS_ARRAY_TYPE);
- MapRef self(broker, this);
- ElementsKind from_kind = self.elements_kind();
- DCHECK(elements_kind_generalizations_.empty());
- for (int i = FIRST_FAST_ELEMENTS_KIND; i <= LAST_FAST_ELEMENTS_KIND; i++) {
- ElementsKind to_kind = static_cast<ElementsKind>(i);
- if (IsMoreGeneralElementsKindTransition(from_kind, to_kind)) {
- Handle<Map> target =
- Map::AsElementsKind(broker->isolate(), self.object(), to_kind);
- elements_kind_generalizations_.push_back(broker->GetOrCreateData(target));
- }
- }
-}
-
-class DescriptorArrayData : public HeapObjectData {
- public:
- DescriptorArrayData(JSHeapBroker* broker, ObjectData** storage,
- Handle<DescriptorArray> object)
- : HeapObjectData(broker, storage, object), contents_(broker->zone()) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-
- ObjectData* FindFieldOwner(InternalIndex descriptor_index) const {
- return contents_.at(descriptor_index.as_int()).field_owner;
- }
-
- PropertyDetails GetPropertyDetails(InternalIndex descriptor_index) const {
- return contents_.at(descriptor_index.as_int()).details;
- }
-
- ObjectData* GetPropertyKey(InternalIndex descriptor_index) const {
- return contents_.at(descriptor_index.as_int()).key;
- }
-
- FieldIndex GetFieldIndexFor(InternalIndex descriptor_index) const {
- return contents_.at(descriptor_index.as_int()).field_index;
- }
-
- ObjectData* GetFieldType(InternalIndex descriptor_index) const {
- return contents_.at(descriptor_index.as_int()).field_type;
- }
-
- ObjectData* GetStrongValue(InternalIndex descriptor_index) const {
- return contents_.at(descriptor_index.as_int()).value;
- }
-
- bool serialized_descriptor(InternalIndex descriptor_index) const {
- return contents_.find(descriptor_index.as_int()) != contents_.end();
- }
-
- void SerializeDescriptor(JSHeapBroker* broker, Handle<Map> map,
- InternalIndex descriptor_index);
-
- private:
- ZoneMap<int, PropertyDescriptor> contents_;
-};
-
-void DescriptorArrayData::SerializeDescriptor(JSHeapBroker* broker,
- Handle<Map> map,
- InternalIndex descriptor_index) {
- CHECK_LT(descriptor_index.as_int(), map->NumberOfOwnDescriptors());
- if (contents_.find(descriptor_index.as_int()) != contents_.end()) return;
-
- Isolate* const isolate = broker->isolate();
- auto descriptors = Handle<DescriptorArray>::cast(object());
- CHECK_EQ(*descriptors, map->instance_descriptors(isolate));
-
- PropertyDescriptor d;
- d.key = broker->GetOrCreateData(descriptors->GetKey(descriptor_index));
- MaybeObject value = descriptors->GetValue(descriptor_index);
- HeapObject obj;
- if (value.GetHeapObjectIfStrong(&obj)) {
- d.value = broker->GetOrCreateData(obj);
- }
- d.details = descriptors->GetDetails(descriptor_index);
- if (d.details.location() == kField) {
- d.field_index = FieldIndex::ForDescriptor(*map, descriptor_index);
- d.field_owner =
- broker->GetOrCreateData(map->FindFieldOwner(isolate, descriptor_index));
- d.field_type =
- broker->GetOrCreateData(descriptors->GetFieldType(descriptor_index));
- }
- contents_[descriptor_index.as_int()] = d;
-
- if (d.details.location() == kField && !d.field_owner->should_access_heap()) {
- // Recurse on the owner map.
- d.field_owner->AsMap()->SerializeOwnDescriptor(broker, descriptor_index);
- }
-
- TRACE(broker, "Copied descriptor " << descriptor_index.as_int() << " into "
- << this << " (" << contents_.size()
- << " total)");
-}
-
-class FeedbackCellData : public HeapObjectData {
- public:
- FeedbackCellData(JSHeapBroker* broker, ObjectData** storage,
- Handle<FeedbackCell> object);
-
- ObjectData* value() const { return value_; }
-
- private:
- ObjectData* const value_;
-};
-
-FeedbackCellData::FeedbackCellData(JSHeapBroker* broker, ObjectData** storage,
- Handle<FeedbackCell> object)
- : HeapObjectData(broker, storage, object),
- value_(object->value().IsFeedbackVector()
- ? broker->GetOrCreateData(object->value())
- : nullptr) {
- DCHECK(!FLAG_turbo_direct_heap_access);
-}
-
-class FeedbackVectorData : public HeapObjectData {
- public:
- FeedbackVectorData(JSHeapBroker* broker, ObjectData** storage,
- Handle<FeedbackVector> object);
-
- double invocation_count() const { return invocation_count_; }
-
- ObjectData* shared_function_info() {
- CHECK(serialized_);
- return shared_function_info_;
- }
-
- void Serialize(JSHeapBroker* broker);
- bool serialized() const { return serialized_; }
- ObjectData* GetClosureFeedbackCell(JSHeapBroker* broker, int index) const;
-
- private:
- double const invocation_count_;
-
- bool serialized_ = false;
- ObjectData* shared_function_info_;
- ZoneVector<ObjectData*> closure_feedback_cell_array_;
-};
-
-FeedbackVectorData::FeedbackVectorData(JSHeapBroker* broker,
- ObjectData** storage,
- Handle<FeedbackVector> object)
- : HeapObjectData(broker, storage, object),
- invocation_count_(object->invocation_count()),
- closure_feedback_cell_array_(broker->zone()) {
- DCHECK(!FLAG_turbo_direct_heap_access);
-}
-
-ObjectData* FeedbackVectorData::GetClosureFeedbackCell(JSHeapBroker* broker,
- int index) const {
- CHECK_GE(index, 0);
-
- size_t cell_array_size = closure_feedback_cell_array_.size();
- if (!serialized_) {
- DCHECK_EQ(cell_array_size, 0);
- TRACE_BROKER_MISSING(broker,
- " closure feedback cell array for vector " << this);
- return nullptr;
- }
- CHECK_LT(index, cell_array_size);
- return closure_feedback_cell_array_[index];
-}
-
-void FeedbackVectorData::Serialize(JSHeapBroker* broker) {
- if (serialized_) return;
- serialized_ = true;
-
- TraceScope tracer(broker, this, "FeedbackVectorData::Serialize");
- Handle<FeedbackVector> vector = Handle<FeedbackVector>::cast(object());
- Handle<SharedFunctionInfo> sfi(vector->shared_function_info(),
- broker->isolate());
- shared_function_info_ = broker->GetOrCreateData(sfi);
- DCHECK(closure_feedback_cell_array_.empty());
- int length = vector->closure_feedback_cell_array().length();
- closure_feedback_cell_array_.reserve(length);
- for (int i = 0; i < length; ++i) {
- Handle<FeedbackCell> cell = vector->GetClosureFeedbackCell(i);
- ObjectData* cell_data = broker->GetOrCreateData(cell);
- closure_feedback_cell_array_.push_back(cell_data);
- }
- TRACE(broker, "Copied " << length << " feedback cells");
-}
-
-class FixedArrayBaseData : public HeapObjectData {
- public:
- FixedArrayBaseData(JSHeapBroker* broker, ObjectData** storage,
- Handle<FixedArrayBase> object)
- : HeapObjectData(broker, storage, object), length_(object->length()) {}
-
- int length() const { return length_; }
-
- private:
- int const length_;
-};
-
-class FixedArrayData : public FixedArrayBaseData {
- public:
- FixedArrayData(JSHeapBroker* broker, ObjectData** storage,
- Handle<FixedArray> object);
-
- // Creates all elements of the fixed array.
- void SerializeContents(JSHeapBroker* broker);
-
- ObjectData* Get(int i) const;
-
- private:
- bool serialized_contents_ = false;
- ZoneVector<ObjectData*> contents_;
-};
-
-JSDataViewData::JSDataViewData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSDataView> object)
- : JSObjectData(broker, storage, object),
- byte_length_(object->byte_length()) {}
-
-JSBoundFunctionData::JSBoundFunctionData(JSHeapBroker* broker,
- ObjectData** storage,
- Handle<JSBoundFunction> object)
- : JSObjectData(broker, storage, object) {}
-
-bool JSBoundFunctionData::Serialize(JSHeapBroker* broker) {
- if (serialized_) return true;
- if (broker->StackHasOverflowed()) return false;
-
- TraceScope tracer(broker, this, "JSBoundFunctionData::Serialize");
- Handle<JSBoundFunction> function = Handle<JSBoundFunction>::cast(object());
-
- // We don't immediately set {serialized_} in order to correctly handle the
- // case where a recursive call to this method reaches the stack limit.
-
- DCHECK_NULL(bound_target_function_);
- bound_target_function_ =
- broker->GetOrCreateData(function->bound_target_function());
- bool serialized_nested = true;
- if (!bound_target_function_->should_access_heap()) {
- if (bound_target_function_->IsJSBoundFunction()) {
- serialized_nested =
- bound_target_function_->AsJSBoundFunction()->Serialize(broker);
- } else if (bound_target_function_->IsJSFunction()) {
- bound_target_function_->AsJSFunction()->Serialize(broker);
- }
- }
- if (!serialized_nested) {
- // We couldn't serialize all nested bound functions due to stack
- // overflow. Give up.
- DCHECK(!serialized_);
- bound_target_function_ = nullptr; // Reset to sync with serialized_.
- return false;
- }
-
- serialized_ = true;
-
- DCHECK_NULL(bound_arguments_);
- bound_arguments_ = broker->GetOrCreateData(function->bound_arguments());
- if (!bound_arguments_->should_access_heap()) {
- bound_arguments_->AsFixedArray()->SerializeContents(broker);
- }
-
- DCHECK_NULL(bound_this_);
- bound_this_ = broker->GetOrCreateData(function->bound_this());
-
- return true;
-}
-
-JSObjectData::JSObjectData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSObject> object)
- : JSReceiverData(broker, storage, object),
- inobject_fields_(broker->zone()),
- own_constant_elements_(broker->zone()),
- own_properties_(broker->zone()) {}
-
-FixedArrayData::FixedArrayData(JSHeapBroker* broker, ObjectData** storage,
- Handle<FixedArray> object)
- : FixedArrayBaseData(broker, storage, object), contents_(broker->zone()) {}
-
-void FixedArrayData::SerializeContents(JSHeapBroker* broker) {
- if (serialized_contents_) return;
- serialized_contents_ = true;
-
- TraceScope tracer(broker, this, "FixedArrayData::SerializeContents");
- Handle<FixedArray> array = Handle<FixedArray>::cast(object());
- CHECK_EQ(array->length(), length());
- CHECK(contents_.empty());
- contents_.reserve(static_cast<size_t>(length()));
-
- for (int i = 0; i < length(); i++) {
- Handle<Object> value(array->get(i), broker->isolate());
- contents_.push_back(broker->GetOrCreateData(value));
- }
- TRACE(broker, "Copied " << contents_.size() << " elements");
-}
-
-class FixedDoubleArrayData : public FixedArrayBaseData {
- public:
- FixedDoubleArrayData(JSHeapBroker* broker, ObjectData** storage,
- Handle<FixedDoubleArray> object);
-
- // Serializes all elements of the fixed array.
- void SerializeContents(JSHeapBroker* broker);
-
- Float64 Get(int i) const;
-
- private:
- bool serialized_contents_ = false;
- ZoneVector<Float64> contents_;
-};
-
-FixedDoubleArrayData::FixedDoubleArrayData(JSHeapBroker* broker,
- ObjectData** storage,
- Handle<FixedDoubleArray> object)
- : FixedArrayBaseData(broker, storage, object), contents_(broker->zone()) {}
-
-void FixedDoubleArrayData::SerializeContents(JSHeapBroker* broker) {
- if (serialized_contents_) return;
- serialized_contents_ = true;
-
- TraceScope tracer(broker, this, "FixedDoubleArrayData::SerializeContents");
- Handle<FixedDoubleArray> self = Handle<FixedDoubleArray>::cast(object());
- CHECK_EQ(self->length(), length());
- CHECK(contents_.empty());
- contents_.reserve(static_cast<size_t>(length()));
-
- for (int i = 0; i < length(); i++) {
- contents_.push_back(Float64::FromBits(self->get_representation(i)));
- }
- TRACE(broker, "Copied " << contents_.size() << " elements");
-}
-
-class BytecodeArrayData : public FixedArrayBaseData {
- public:
- int register_count() const { return register_count_; }
- int parameter_count() const { return parameter_count_; }
- interpreter::Register incoming_new_target_or_generator_register() const {
- return incoming_new_target_or_generator_register_;
- }
-
- BytecodeArrayData(JSHeapBroker* broker, ObjectData** storage,
- Handle<BytecodeArray> object)
- : FixedArrayBaseData(broker, storage, object),
- register_count_(object->register_count()),
- parameter_count_(object->parameter_count()),
- incoming_new_target_or_generator_register_(
- object->incoming_new_target_or_generator_register()) {}
-
- private:
- int const register_count_;
- int const parameter_count_;
- interpreter::Register const incoming_new_target_or_generator_register_;
-};
-
-class JSArrayData : public JSObjectData {
- public:
- JSArrayData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSArray> object);
-
- void Serialize(JSHeapBroker* broker);
- ObjectData* length() const {
- CHECK(serialized_);
- return length_;
- }
-
- ObjectData* GetOwnElement(
- JSHeapBroker* broker, uint32_t index,
- SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
-
- private:
- bool serialized_ = false;
- ObjectData* length_ = nullptr;
-
- // Elements (indexed properties) that either
- // (1) are known to exist directly on the object, or
- // (2) are known not to (possibly they don't exist at all).
- // In case (2), the second pair component is nullptr.
- ZoneVector<std::pair<uint32_t, ObjectData*>> own_elements_;
-};
-
-JSArrayData::JSArrayData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSArray> object)
- : JSObjectData(broker, storage, object), own_elements_(broker->zone()) {}
-
-void JSArrayData::Serialize(JSHeapBroker* broker) {
- CHECK(!FLAG_turbo_direct_heap_access);
-
- if (serialized_) return;
- serialized_ = true;
-
- TraceScope tracer(broker, this, "JSArrayData::Serialize");
- Handle<JSArray> jsarray = Handle<JSArray>::cast(object());
-
- DCHECK_NULL(length_);
- length_ = broker->GetOrCreateData(jsarray->length());
-}
-
-ObjectData* JSArrayData::GetOwnElement(JSHeapBroker* broker, uint32_t index,
- SerializationPolicy policy) {
- for (auto const& p : own_elements_) {
- if (p.first == index) return p.second;
- }
-
- if (policy == SerializationPolicy::kAssumeSerialized) {
- TRACE_MISSING(broker, "knowledge about index " << index << " on " << this);
- return nullptr;
- }
-
- base::Optional<ObjectRef> element =
- GetOwnElementFromHeap(broker, object(), index, false);
- ObjectData* result = element.has_value() ? element->data() : nullptr;
- own_elements_.push_back({index, result});
- return result;
-}
-
-class ScopeInfoData : public HeapObjectData {
- public:
- ScopeInfoData(JSHeapBroker* broker, ObjectData** storage,
- Handle<ScopeInfo> object);
-
- int ContextLength() const { return context_length_; }
- bool HasContextExtensionSlot() const { return has_context_extension_slot_; }
- bool HasOuterScopeInfo() const { return has_outer_scope_info_; }
-
- ObjectData* OuterScopeInfo() const { return outer_scope_info_; }
- void SerializeScopeInfoChain(JSHeapBroker* broker);
-
- private:
- int const context_length_;
- bool const has_context_extension_slot_;
- bool const has_outer_scope_info_;
-
- // Only serialized via SerializeScopeInfoChain.
- ObjectData* outer_scope_info_;
-};
-
-ScopeInfoData::ScopeInfoData(JSHeapBroker* broker, ObjectData** storage,
- Handle<ScopeInfo> object)
- : HeapObjectData(broker, storage, object),
- context_length_(object->ContextLength()),
- has_context_extension_slot_(object->HasContextExtensionSlot()),
- has_outer_scope_info_(object->HasOuterScopeInfo()),
- outer_scope_info_(nullptr) {
- DCHECK(!FLAG_turbo_direct_heap_access);
-}
-
-void ScopeInfoData::SerializeScopeInfoChain(JSHeapBroker* broker) {
- if (outer_scope_info_) return;
- if (!has_outer_scope_info_) return;
- outer_scope_info_ = broker->GetOrCreateData(
- Handle<ScopeInfo>::cast(object())->OuterScopeInfo());
- if (!outer_scope_info_->should_access_heap()) {
- outer_scope_info_->AsScopeInfo()->SerializeScopeInfoChain(broker);
- }
-}
-
-class SharedFunctionInfoData : public HeapObjectData {
- public:
- SharedFunctionInfoData(JSHeapBroker* broker, ObjectData** storage,
- Handle<SharedFunctionInfo> object);
-
- int builtin_id() const { return builtin_id_; }
- int context_header_size() const { return context_header_size_; }
- ObjectData* GetBytecodeArray() const { return GetBytecodeArray_; }
- SharedFunctionInfo::Inlineability GetInlineability() const {
- return inlineability_;
- }
- void SerializeFunctionTemplateInfo(JSHeapBroker* broker);
- ObjectData* scope_info() const { return scope_info_; }
- void SerializeScopeInfoChain(JSHeapBroker* broker);
- ObjectData* function_template_info() const { return function_template_info_; }
- ObjectData* GetTemplateObject(FeedbackSlot slot) const {
- auto lookup_it = template_objects_.find(slot.ToInt());
- if (lookup_it != template_objects_.cend()) {
- return lookup_it->second;
- }
- return nullptr;
- }
- void SetTemplateObject(FeedbackSlot slot, ObjectData* object) {
- CHECK(
- template_objects_.insert(std::make_pair(slot.ToInt(), object)).second);
- }
-
-#define DECL_ACCESSOR(type, name) \
- type name() const { return name##_; }
- BROKER_SFI_FIELDS(DECL_ACCESSOR)
-#undef DECL_ACCESSOR
-
- private:
- int const builtin_id_;
- int const context_header_size_;
- ObjectData* const GetBytecodeArray_;
-#define DECL_MEMBER(type, name) type const name##_;
- BROKER_SFI_FIELDS(DECL_MEMBER)
-#undef DECL_MEMBER
- SharedFunctionInfo::Inlineability const inlineability_;
- ObjectData* function_template_info_;
- ZoneMap<int, ObjectData*> template_objects_;
- ObjectData* scope_info_;
-};
-
-SharedFunctionInfoData::SharedFunctionInfoData(
- JSHeapBroker* broker, ObjectData** storage,
- Handle<SharedFunctionInfo> object)
- : HeapObjectData(broker, storage, object),
- builtin_id_(object->HasBuiltinId() ? object->builtin_id()
- : Builtins::kNoBuiltinId),
- context_header_size_(object->scope_info().ContextHeaderLength()),
- GetBytecodeArray_(object->HasBytecodeArray()
- ? broker->GetOrCreateData(
- object->GetBytecodeArray(broker->isolate()))
- : nullptr)
-#define INIT_MEMBER(type, name) , name##_(object->name())
- BROKER_SFI_FIELDS(INIT_MEMBER)
-#undef INIT_MEMBER
- ,
- inlineability_(object->GetInlineability(broker->isolate())),
- function_template_info_(nullptr),
- template_objects_(broker->zone()),
- scope_info_(nullptr) {
- DCHECK_EQ(HasBuiltinId_, builtin_id_ != Builtins::kNoBuiltinId);
- DCHECK_EQ(HasBytecodeArray_, GetBytecodeArray_ != nullptr);
-}
-
-void SharedFunctionInfoData::SerializeFunctionTemplateInfo(
- JSHeapBroker* broker) {
- if (function_template_info_) return;
- function_template_info_ = broker->GetOrCreateData(
- Handle<SharedFunctionInfo>::cast(object())->function_data(kAcquireLoad));
-}
-
-void SharedFunctionInfoData::SerializeScopeInfoChain(JSHeapBroker* broker) {
- if (scope_info_) return;
- scope_info_ = broker->GetOrCreateData(
- Handle<SharedFunctionInfo>::cast(object())->scope_info());
- if (!scope_info_->should_access_heap()) {
- scope_info_->AsScopeInfo()->SerializeScopeInfoChain(broker);
- }
-}
-
-class SourceTextModuleData : public HeapObjectData {
- public:
- SourceTextModuleData(JSHeapBroker* broker, ObjectData** storage,
- Handle<SourceTextModule> object);
- void Serialize(JSHeapBroker* broker);
-
- ObjectData* GetCell(JSHeapBroker* broker, int cell_index) const;
- ObjectData* GetImportMeta(JSHeapBroker* broker) const;
-
- private:
- bool serialized_ = false;
- ZoneVector<ObjectData*> imports_;
- ZoneVector<ObjectData*> exports_;
- ObjectData* import_meta_;
-};
-
-SourceTextModuleData::SourceTextModuleData(JSHeapBroker* broker,
- ObjectData** storage,
- Handle<SourceTextModule> object)
- : HeapObjectData(broker, storage, object),
- imports_(broker->zone()),
- exports_(broker->zone()),
- import_meta_(nullptr) {}
-
-ObjectData* SourceTextModuleData::GetCell(JSHeapBroker* broker,
- int cell_index) const {
- if (!serialized_) {
- DCHECK(imports_.empty());
- TRACE_BROKER_MISSING(broker,
- "module cell " << cell_index << " on " << this);
- return nullptr;
- }
- ObjectData* cell;
- switch (SourceTextModuleDescriptor::GetCellIndexKind(cell_index)) {
- case SourceTextModuleDescriptor::kImport:
- cell = imports_.at(SourceTextModule::ImportIndex(cell_index));
- break;
- case SourceTextModuleDescriptor::kExport:
- cell = exports_.at(SourceTextModule::ExportIndex(cell_index));
- break;
- case SourceTextModuleDescriptor::kInvalid:
- UNREACHABLE();
- }
- CHECK_NOT_NULL(cell);
- return cell;
-}
-
-ObjectData* SourceTextModuleData::GetImportMeta(JSHeapBroker* broker) const {
- CHECK(serialized_);
- return import_meta_;
-}
-
-void SourceTextModuleData::Serialize(JSHeapBroker* broker) {
- if (serialized_) return;
- serialized_ = true;
-
- TraceScope tracer(broker, this, "SourceTextModuleData::Serialize");
- Handle<SourceTextModule> module = Handle<SourceTextModule>::cast(object());
-
- // TODO(neis): We could be smarter and only serialize the cells we care about.
- // TODO(neis): Define a helper for serializing a FixedArray into a ZoneVector.
-
- DCHECK(imports_.empty());
- Handle<FixedArray> imports(module->regular_imports(), broker->isolate());
- int const imports_length = imports->length();
- imports_.reserve(imports_length);
- for (int i = 0; i < imports_length; ++i) {
- imports_.push_back(broker->GetOrCreateData(imports->get(i)));
- }
- TRACE(broker, "Copied " << imports_.size() << " imports");
-
- DCHECK(exports_.empty());
- Handle<FixedArray> exports(module->regular_exports(), broker->isolate());
- int const exports_length = exports->length();
- exports_.reserve(exports_length);
- for (int i = 0; i < exports_length; ++i) {
- exports_.push_back(broker->GetOrCreateData(exports->get(i)));
- }
- TRACE(broker, "Copied " << exports_.size() << " exports");
-
- DCHECK_NULL(import_meta_);
- import_meta_ = broker->GetOrCreateData(module->import_meta());
- TRACE(broker, "Copied import_meta");
-}
-
-class CellData : public HeapObjectData {
- public:
- CellData(JSHeapBroker* broker, ObjectData** storage, Handle<Cell> object)
- : HeapObjectData(broker, storage, object) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-};
-
-class JSGlobalObjectData : public JSObjectData {
- public:
- JSGlobalObjectData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSGlobalObject> object);
- bool IsDetached() const { return is_detached_; }
-
- ObjectData* GetPropertyCell(
- JSHeapBroker* broker, ObjectData* name,
- SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
-
- private:
- bool const is_detached_;
-
- // Properties that either
- // (1) are known to exist as property cells on the global object, or
- // (2) are known not to (possibly they don't exist at all).
- // In case (2), the second pair component is nullptr.
- ZoneVector<std::pair<ObjectData*, ObjectData*>> properties_;
-};
-
-JSGlobalObjectData::JSGlobalObjectData(JSHeapBroker* broker,
- ObjectData** storage,
- Handle<JSGlobalObject> object)
- : JSObjectData(broker, storage, object),
- is_detached_(object->IsDetached()),
- properties_(broker->zone()) {}
-
-class JSGlobalProxyData : public JSObjectData {
- public:
- JSGlobalProxyData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSGlobalProxy> object);
-};
-
-JSGlobalProxyData::JSGlobalProxyData(JSHeapBroker* broker, ObjectData** storage,
- Handle<JSGlobalProxy> object)
- : JSObjectData(broker, storage, object) {}
-
-namespace {
-base::Optional<PropertyCellRef> GetPropertyCellFromHeap(JSHeapBroker* broker,
- Handle<Name> name) {
- LookupIterator it(
- broker->isolate(),
- handle(broker->target_native_context().object()->global_object(),
- broker->isolate()),
- name, LookupIterator::OWN);
- it.TryLookupCachedProperty();
- if (it.state() == LookupIterator::DATA &&
- it.GetHolder<JSObject>()->IsJSGlobalObject()) {
- return PropertyCellRef(broker, it.GetPropertyCell());
- }
- return base::nullopt;
-}
-} // namespace
-
-ObjectData* JSGlobalObjectData::GetPropertyCell(JSHeapBroker* broker,
- ObjectData* name,
- SerializationPolicy policy) {
- CHECK_NOT_NULL(name);
- for (auto const& p : properties_) {
- if (p.first == name) return p.second;
- }
-
- if (policy == SerializationPolicy::kAssumeSerialized) {
- TRACE_MISSING(broker, "knowledge about global property " << name);
- return nullptr;
- }
-
- ObjectData* result = nullptr;
- base::Optional<PropertyCellRef> cell =
- GetPropertyCellFromHeap(broker, Handle<Name>::cast(name->object()));
- if (cell.has_value()) {
- result = cell->data();
- if (!result->should_access_heap()) {
- result->AsPropertyCell()->Serialize(broker);
- }
- }
- properties_.push_back({name, result});
- return result;
-}
-
-class TemplateObjectDescriptionData : public HeapObjectData {
- public:
- TemplateObjectDescriptionData(JSHeapBroker* broker, ObjectData** storage,
- Handle<TemplateObjectDescription> object)
- : HeapObjectData(broker, storage, object) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-};
-
-class CodeData : public HeapObjectData {
- public:
- CodeData(JSHeapBroker* broker, ObjectData** storage, Handle<Code> object)
- : HeapObjectData(broker, storage, object),
- inlined_bytecode_size_(object->inlined_bytecode_size() > 0 &&
- !object->marked_for_deoptimization()
- ? object->inlined_bytecode_size()
- : 0) {
- DCHECK(!FLAG_turbo_direct_heap_access);
- }
-
- unsigned inlined_bytecode_size() const { return inlined_bytecode_size_; }
-
- private:
- unsigned const inlined_bytecode_size_;
-};
-
-#define DEFINE_IS(Name) \
- bool ObjectData::Is##Name() const { \
- if (should_access_heap()) { \
- return object()->Is##Name(); \
- } \
- if (is_smi()) return false; \
- InstanceType instance_type = \
- static_cast<const HeapObjectData*>(this)->GetMapInstanceType(); \
- return InstanceTypeChecker::Is##Name(instance_type); \
- }
-HEAP_BROKER_SERIALIZED_OBJECT_LIST(DEFINE_IS)
-HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(DEFINE_IS)
-HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(DEFINE_IS)
-HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(DEFINE_IS)
-#undef DEFINE_IS
-
-#define DEFINE_AS(Name) \
- Name##Data* ObjectData::As##Name() { \
- CHECK(Is##Name()); \
- CHECK(kind_ == kSerializedHeapObject || \
- kind_ == kBackgroundSerializedHeapObject); \
- return static_cast<Name##Data*>(this); \
- }
-HEAP_BROKER_SERIALIZED_OBJECT_LIST(DEFINE_AS)
-HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(DEFINE_AS)
-HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(DEFINE_AS)
-#undef DEFINE_AS
-
-// TODO(solanes, v8:10866): Remove once FLAG_turbo_direct_heap_access is
-// removed.
-// This macro defines the Asxxx methods for NeverSerialized objects, which
-// should only be used with direct heap access off.
-#define DEFINE_AS(Name) \
- Name##Data* ObjectData::As##Name() { \
- DCHECK(!FLAG_turbo_direct_heap_access); \
- CHECK(Is##Name()); \
- CHECK_EQ(kind_, kSerializedHeapObject); \
- return static_cast<Name##Data*>(this); \
- }
-HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(DEFINE_AS)
-#undef DEFINE_AS
-
-ObjectData* JSObjectData::GetInobjectField(int property_index) const {
- CHECK_LT(static_cast<size_t>(property_index), inobject_fields_.size());
- return inobject_fields_[property_index];
-}
-
-bool JSObjectData::cow_or_empty_elements_tenured() const {
- return cow_or_empty_elements_tenured_;
-}
-
-ObjectData* JSObjectData::elements() const {
- CHECK(serialized_elements_);
- return elements_;
-}
-
-void JSObjectData::SerializeAsBoilerplate(JSHeapBroker* broker) {
- SerializeRecursiveAsBoilerplate(broker, kMaxFastLiteralDepth);
-}
-
-void JSObjectData::SerializeElements(JSHeapBroker* broker) {
- if (serialized_elements_) return;
- serialized_elements_ = true;
-
- TraceScope tracer(broker, this, "JSObjectData::SerializeElements");
- Handle<JSObject> boilerplate = Handle<JSObject>::cast(object());
- Handle<FixedArrayBase> elements_object(boilerplate->elements(),
- broker->isolate());
- DCHECK_NULL(elements_);
- elements_ = broker->GetOrCreateData(elements_object);
- DCHECK(elements_->IsFixedArrayBase());
-}
-
-void MapData::SerializeConstructor(JSHeapBroker* broker) {
- if (serialized_constructor_) return;
- serialized_constructor_ = true;
-
- TraceScope tracer(broker, this, "MapData::SerializeConstructor");
- Handle<Map> map = Handle<Map>::cast(object());
- DCHECK(!map->IsContextMap());
- DCHECK_NULL(constructor_);
- constructor_ = broker->GetOrCreateData(map->GetConstructor());
-}
-
-void MapData::SerializeBackPointer(JSHeapBroker* broker) {
- if (serialized_backpointer_) return;
- serialized_backpointer_ = true;
-
- TraceScope tracer(broker, this, "MapData::SerializeBackPointer");
- Handle<Map> map = Handle<Map>::cast(object());
- DCHECK_NULL(backpointer_);
- DCHECK(!map->IsContextMap());
- backpointer_ = broker->GetOrCreateData(map->GetBackPointer());
-}
-
-void MapData::SerializePrototype(JSHeapBroker* broker) {
- if (serialized_prototype_) return;
- serialized_prototype_ = true;
-
- TraceScope tracer(broker, this, "MapData::SerializePrototype");
- Handle<Map> map = Handle<Map>::cast(object());
- DCHECK_NULL(prototype_);
- prototype_ = broker->GetOrCreateData(map->prototype());
-}
-
-void MapData::SerializeOwnDescriptors(JSHeapBroker* broker) {
- if (serialized_own_descriptors_) return;
- serialized_own_descriptors_ = true;
-
- TraceScope tracer(broker, this, "MapData::SerializeOwnDescriptors");
- Handle<Map> map = Handle<Map>::cast(object());
-
- for (InternalIndex i : map->IterateOwnDescriptors()) {
- SerializeOwnDescriptor(broker, i);
- }
-}
-
-void MapData::SerializeOwnDescriptor(JSHeapBroker* broker,
- InternalIndex descriptor_index) {
- TraceScope tracer(broker, this, "MapData::SerializeOwnDescriptor");
- Handle<Map> map = Handle<Map>::cast(object());
- Isolate* isolate = broker->isolate();
-
- if (instance_descriptors_ == nullptr) {
- instance_descriptors_ =
- broker->GetOrCreateData(map->instance_descriptors(isolate));
- }
-
- if (instance_descriptors()->should_access_heap()) {
- // When accessing the fields concurrently, we still have to recurse on the
- // owner map if it is different than the current map. This is because
- // {instance_descriptors_} gets set on SerializeOwnDescriptor and otherwise
- // we risk the field owner having a null {instance_descriptors_}.
- Handle<DescriptorArray> descriptors(map->instance_descriptors(isolate),
- isolate);
- if (descriptors->GetDetails(descriptor_index).location() == kField) {
- Handle<Map> owner(map->FindFieldOwner(isolate, descriptor_index),
- isolate);
- if (!owner.equals(map)) {
- broker->GetOrCreateData(owner)->AsMap()->SerializeOwnDescriptor(
- broker, descriptor_index);
- }
- }
- } else {
- DescriptorArrayData* descriptors =
- instance_descriptors()->AsDescriptorArray();
- descriptors->SerializeDescriptor(broker, map, descriptor_index);
- }
-}
-
-void MapData::SerializeRootMap(JSHeapBroker* broker) {
- if (serialized_root_map_) return;
- serialized_root_map_ = true;
-
- TraceScope tracer(broker, this, "MapData::SerializeRootMap");
- Handle<Map> map = Handle<Map>::cast(object());
- DCHECK_NULL(root_map_);
- root_map_ = broker->GetOrCreateData(map->FindRootMap(broker->isolate()));
-}
-
-ObjectData* MapData::FindRootMap() const { return root_map_; }
-
-void JSObjectData::SerializeRecursiveAsBoilerplate(JSHeapBroker* broker,
- int depth) {
- if (serialized_as_boilerplate_) return;
- serialized_as_boilerplate_ = true;
-
- TraceScope tracer(broker, this,
- "JSObjectData::SerializeRecursiveAsBoilerplate");
- Handle<JSObject> boilerplate = Handle<JSObject>::cast(object());
-
- // We only serialize boilerplates that pass the IsInlinableFastLiteral
- // check, so we only do a check on the depth here.
- CHECK_GT(depth, 0);
- CHECK(!boilerplate->map().is_deprecated());
-
- // Serialize the elements.
- Isolate* const isolate = broker->isolate();
- Handle<FixedArrayBase> elements_object(boilerplate->elements(), isolate);
-
- // Boilerplates need special serialization - we need to make sure COW arrays
- // are tenured. Boilerplate objects should only be reachable from their
- // allocation site, so it is safe to assume that the elements have not been
- // serialized yet.
-
- bool const empty_or_cow =
- elements_object->length() == 0 ||
- elements_object->map() == ReadOnlyRoots(isolate).fixed_cow_array_map();
- if (empty_or_cow) {
- // We need to make sure copy-on-write elements are tenured.
- if (ObjectInYoungGeneration(*elements_object)) {
- elements_object = isolate->factory()->CopyAndTenureFixedCOWArray(
- Handle<FixedArray>::cast(elements_object));
- boilerplate->set_elements(*elements_object);
- }
- cow_or_empty_elements_tenured_ = true;
- }
-
- DCHECK_NULL(elements_);
- DCHECK(!serialized_elements_);
- serialized_elements_ = true;
- elements_ = broker->GetOrCreateData(elements_object);
- DCHECK(elements_->IsFixedArrayBase());
-
- if (empty_or_cow || elements_->should_access_heap()) {
- // No need to do anything here. Empty or copy-on-write elements
- // do not need to be serialized because we only need to store the elements
- // reference to the allocated object.
- } else if (boilerplate->HasSmiOrObjectElements()) {
- elements_->AsFixedArray()->SerializeContents(broker);
- Handle<FixedArray> fast_elements =
- Handle<FixedArray>::cast(elements_object);
- int length = elements_object->length();
- for (int i = 0; i < length; i++) {
- Handle<Object> value(fast_elements->get(i), isolate);
- if (value->IsJSObject()) {
- ObjectData* value_data = broker->GetOrCreateData(value);
- if (!value_data->should_access_heap()) {
- value_data->AsJSObject()->SerializeRecursiveAsBoilerplate(broker,
- depth - 1);
- }
- }
- }
- } else {
- CHECK(boilerplate->HasDoubleElements());
- CHECK_LE(elements_object->Size(), kMaxRegularHeapObjectSize);
- DCHECK_EQ(elements_->kind(), ObjectDataKind::kSerializedHeapObject);
- elements_->AsFixedDoubleArray()->SerializeContents(broker);
- }
-
- // TODO(turbofan): Do we want to support out-of-object properties?
- CHECK(boilerplate->HasFastProperties() &&
- boilerplate->property_array().length() == 0);
- CHECK_EQ(inobject_fields_.size(), 0u);
-
- // Check the in-object properties.
- Handle<DescriptorArray> descriptors(
- boilerplate->map().instance_descriptors(isolate), isolate);
- for (InternalIndex i : boilerplate->map().IterateOwnDescriptors()) {
- PropertyDetails details = descriptors->GetDetails(i);
- if (details.location() != kField) continue;
- DCHECK_EQ(kData, details.kind());
-
- FieldIndex field_index = FieldIndex::ForDescriptor(boilerplate->map(), i);
- // Make sure {field_index} agrees with {inobject_properties} on the index of
- // this field.
- DCHECK_EQ(field_index.property_index(),
- static_cast<int>(inobject_fields_.size()));
- Handle<Object> value(boilerplate->RawFastPropertyAt(field_index), isolate);
- // In case of double fields we use a sentinel NaN value to mark
- // uninitialized fields. A boilerplate value with such a field may migrate
- // from its double to a tagged representation. The sentinel value carries
- // no special meaning when it occurs in a heap number, so we would like to
- // recover the uninitialized value. We check for the sentinel here,
- // specifically, since migrations might have been triggered as part of
- // boilerplate serialization.
- if (!details.representation().IsDouble() && value->IsHeapNumber() &&
- HeapNumber::cast(*value).value_as_bits() == kHoleNanInt64) {
- value = isolate->factory()->uninitialized_value();
- }
- ObjectData* value_data = broker->GetOrCreateData(value);
- if (value_data->IsJSObject() && !value_data->should_access_heap()) {
- value_data->AsJSObject()->SerializeRecursiveAsBoilerplate(broker,
- depth - 1);
- }
- inobject_fields_.push_back(value_data);
- }
- TRACE(broker, "Copied " << inobject_fields_.size() << " in-object fields");
-
- if (!map()->should_access_heap()) {
- map()->AsMap()->SerializeOwnDescriptors(broker);
- }
-
- if (IsJSArray() && !FLAG_turbo_direct_heap_access) {
- AsJSArray()->Serialize(broker);
- }
-}
-
-void RegExpBoilerplateDescriptionData::Serialize(JSHeapBroker* broker) {
- if (serialized_) return; // Only serialize once.
- serialized_ = true;
-
- TraceScope tracer(broker, this,
- "RegExpBoilerplateDescriptionData::Serialize");
- auto boilerplate = Handle<RegExpBoilerplateDescription>::cast(object());
-
- data_ = broker->GetOrCreateData(boilerplate->data());
- source_ = broker->GetOrCreateData(boilerplate->source());
- flags_ = boilerplate->flags();
-}
-
-#ifdef DEBUG
-bool ObjectRef::IsNeverSerializedHeapObject() const {
- return data_->kind() == ObjectDataKind::kNeverSerializedHeapObject;
-}
-#endif // DEBUG
-
-bool ObjectRef::equals(const ObjectRef& other) const {
-#ifdef DEBUG
- if (broker()->mode() == JSHeapBroker::kSerialized &&
- data_->used_status == ObjectData::Usage::kUnused) {
- data_->used_status = ObjectData::Usage::kOnlyIdentityUsed;
- }
-#endif // DEBUG
- return data_ == other.data_;
-}
-
-bool ObjectRef::ShouldHaveBeenSerialized() const {
- return broker()->mode() == JSHeapBroker::kSerialized &&
- data()->kind() == kSerializedHeapObject;
-}
-
-Isolate* ObjectRef::isolate() const { return broker()->isolate(); }
-
-ContextRef ContextRef::previous(size_t* depth,
- SerializationPolicy policy) const {
- DCHECK_NOT_NULL(depth);
-
- if (data_->should_access_heap()) {
- Context current = *object();
- while (*depth != 0 && current.unchecked_previous().IsContext()) {
- current = Context::cast(current.unchecked_previous());
- (*depth)--;
- }
- return ContextRef(broker(), broker()->CanonicalPersistentHandle(current));
- }
-
- if (*depth == 0) return *this;
-
- ObjectData* previous_data = data()->AsContext()->previous(broker(), policy);
- if (previous_data == nullptr || !previous_data->IsContext()) return *this;
-
- *depth = *depth - 1;
- return ContextRef(broker(), previous_data).previous(depth, policy);
-}
-
-base::Optional<ObjectRef> ContextRef::get(int index,
- SerializationPolicy policy) const {
- if (data_->should_access_heap()) {
- Handle<Object> value(object()->get(index), broker()->isolate());
- return ObjectRef(broker(), value);
- }
- ObjectData* optional_slot =
- data()->AsContext()->GetSlot(broker(), index, policy);
- if (optional_slot != nullptr) {
- return ObjectRef(broker(), optional_slot);
- }
- return base::nullopt;
-}
-
-SourceTextModuleRef ContextRef::GetModule(SerializationPolicy policy) const {
- ContextRef current = *this;
- while (current.map().instance_type() != MODULE_CONTEXT_TYPE) {
- size_t depth = 1;
- current = current.previous(&depth, policy);
- CHECK_EQ(depth, 0);
- }
- return current.get(Context::EXTENSION_INDEX, policy)
- .value()
- .AsSourceTextModule();
-}
-
JSHeapBroker::JSHeapBroker(Isolate* isolate, Zone* broker_zone,
bool tracing_enabled, bool is_concurrent_inlining,
CodeKind code_kind)
@@ -2560,7 +58,6 @@ JSHeapBroker::JSHeapBroker(Isolate* isolate, Zone* broker_zone,
// immediately with a larger-capacity one. It doesn't seem to affect the
// performance in a noticeable way though.
TRACE(this, "Constructing heap broker");
- DCHECK_IMPLIES(is_concurrent_inlining_, FLAG_turbo_direct_heap_access);
}
JSHeapBroker::~JSHeapBroker() { DCHECK_NULL(local_isolate_); }
@@ -2602,7 +99,7 @@ void JSHeapBroker::AttachLocalIsolate(OptimizedCompilationInfo* info,
local_isolate_->heap()->AttachPersistentHandles(
info->DetachPersistentHandles());
- if (FLAG_turbo_direct_heap_access) {
+ if (is_concurrent_inlining()) {
// Ensure any serialization that happens on the background has been
// performed.
target_native_context().SerializeOnBackground();
@@ -2625,88 +122,6 @@ void JSHeapBroker::StopSerializing() {
mode_ = kSerialized;
}
-#ifdef DEBUG
-void JSHeapBroker::PrintRefsAnalysis() const {
- // Usage counts
- size_t used_total = 0, unused_total = 0, identity_used_total = 0;
- for (RefsMap::Entry* ref = refs_->Start(); ref != nullptr;
- ref = refs_->Next(ref)) {
- switch (ref->value->used_status) {
- case ObjectData::Usage::kUnused:
- ++unused_total;
- break;
- case ObjectData::Usage::kOnlyIdentityUsed:
- ++identity_used_total;
- break;
- case ObjectData::Usage::kDataUsed:
- ++used_total;
- break;
- }
- }
-
- // Ref types analysis
- TRACE_BROKER_MEMORY(
- this, "Refs: " << refs_->occupancy() << "; data used: " << used_total
- << "; only identity used: " << identity_used_total
- << "; unused: " << unused_total);
- size_t used_smis = 0, unused_smis = 0, identity_used_smis = 0;
- size_t used[LAST_TYPE + 1] = {0};
- size_t unused[LAST_TYPE + 1] = {0};
- size_t identity_used[LAST_TYPE + 1] = {0};
- for (RefsMap::Entry* ref = refs_->Start(); ref != nullptr;
- ref = refs_->Next(ref)) {
- if (ref->value->is_smi()) {
- switch (ref->value->used_status) {
- case ObjectData::Usage::kUnused:
- ++unused_smis;
- break;
- case ObjectData::Usage::kOnlyIdentityUsed:
- ++identity_used_smis;
- break;
- case ObjectData::Usage::kDataUsed:
- ++used_smis;
- break;
- }
- } else {
- InstanceType instance_type;
- if (ref->value->should_access_heap()) {
- instance_type = Handle<HeapObject>::cast(ref->value->object())
- ->map()
- .instance_type();
- } else {
- instance_type = ref->value->AsHeapObject()->GetMapInstanceType();
- }
- CHECK_LE(FIRST_TYPE, instance_type);
- CHECK_LE(instance_type, LAST_TYPE);
- switch (ref->value->used_status) {
- case ObjectData::Usage::kUnused:
- ++unused[instance_type];
- break;
- case ObjectData::Usage::kOnlyIdentityUsed:
- ++identity_used[instance_type];
- break;
- case ObjectData::Usage::kDataUsed:
- ++used[instance_type];
- break;
- }
- }
- }
-
- TRACE_BROKER_MEMORY(
- this, "Smis: " << used_smis + identity_used_smis + unused_smis
- << "; data used: " << used_smis << "; only identity used: "
- << identity_used_smis << "; unused: " << unused_smis);
- for (uint16_t i = FIRST_TYPE; i <= LAST_TYPE; ++i) {
- size_t total = used[i] + identity_used[i] + unused[i];
- if (total == 0) continue;
- TRACE_BROKER_MEMORY(
- this, InstanceType(i) << ": " << total << "; data used: " << used[i]
- << "; only identity used: " << identity_used[i]
- << "; unused: " << unused[i]);
- }
-}
-#endif // DEBUG
-
void JSHeapBroker::Retire() {
CHECK_EQ(mode_, kSerialized);
TRACE(this, "Retiring");
@@ -2719,16 +134,11 @@ void JSHeapBroker::Retire() {
void JSHeapBroker::SetTargetNativeContextRef(
Handle<NativeContext> native_context) {
- // The MapData constructor uses {target_native_context_}. This creates a
- // benign cycle that we break by setting {target_native_context_} right before
- // starting to serialize (thus creating dummy data), and then again properly
- // right after.
DCHECK((mode() == kDisabled && !target_native_context_.has_value()) ||
(mode() == kSerializing &&
- target_native_context_->object().equals(native_context) &&
- target_native_context_->data_->kind() == kUnserializedHeapObject));
- target_native_context_ =
- NativeContextRef(this, CanonicalPersistentHandle(*native_context));
+ target_native_context_->object().is_identical_to(native_context) &&
+ target_native_context_->is_unserialized_heap_object()));
+ target_native_context_ = MakeRef(this, *native_context);
}
void JSHeapBroker::CollectArrayAndObjectPrototypes() {
@@ -2755,7 +165,7 @@ StringRef JSHeapBroker::GetTypedArrayStringTag(ElementsKind kind) {
switch (kind) {
#define TYPED_ARRAY_STRING_TAG(Type, type, TYPE, ctype) \
case ElementsKind::TYPE##_ELEMENTS: \
- return StringRef(this, isolate()->factory()->Type##Array_string());
+ return MakeRef(this, isolate()->factory()->Type##Array_string());
TYPED_ARRAYS(TYPED_ARRAY_STRING_TAG)
#undef TYPED_ARRAY_STRING_TAG
default:
@@ -2798,201 +208,38 @@ bool JSHeapBroker::IsSerializedForCompilation(
}
bool JSHeapBroker::IsArrayOrObjectPrototype(const JSObjectRef& object) const {
+ return IsArrayOrObjectPrototype(object.object());
+}
+
+bool JSHeapBroker::IsArrayOrObjectPrototype(Handle<JSObject> object) const {
if (mode() == kDisabled) {
- return isolate()->IsInAnyContext(*object.object(),
+ return isolate()->IsInAnyContext(*object,
Context::INITIAL_ARRAY_PROTOTYPE_INDEX) ||
- isolate()->IsInAnyContext(*object.object(),
+ isolate()->IsInAnyContext(*object,
Context::INITIAL_OBJECT_PROTOTYPE_INDEX);
}
CHECK(!array_and_object_prototypes_.empty());
- return array_and_object_prototypes_.find(object.object()) !=
+ return array_and_object_prototypes_.find(object) !=
array_and_object_prototypes_.end();
}
-void JSHeapBroker::InitializeAndStartSerializing(
- Handle<NativeContext> native_context) {
- TraceScope tracer(this, "JSHeapBroker::InitializeAndStartSerializing");
-
- CHECK_EQ(mode_, kDisabled);
- mode_ = kSerializing;
-
- // Throw away the dummy data that we created while disabled.
- refs_->Clear();
- refs_ =
- zone()->New<RefsMap>(kInitialRefsBucketCount, AddressMatcher(), zone());
-
- SetTargetNativeContextRef(native_context);
- target_native_context().Serialize();
- if (!FLAG_turbo_direct_heap_access) {
- // Perform full native context serialization now if we can't do it later on
- // the background thread.
- target_native_context().SerializeOnBackground();
- }
-
- CollectArrayAndObjectPrototypes();
-
- Factory* const f = isolate()->factory();
- if (!FLAG_turbo_direct_heap_access) {
- ObjectData* data;
- data = GetOrCreateData(f->array_buffer_detaching_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- data = GetOrCreateData(f->array_constructor_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- data = GetOrCreateData(f->array_iterator_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- data = GetOrCreateData(f->array_species_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- data = GetOrCreateData(f->no_elements_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- data = GetOrCreateData(f->promise_hook_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- data = GetOrCreateData(f->promise_species_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- data = GetOrCreateData(f->promise_then_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- data = GetOrCreateData(f->string_length_protector());
- if (!data->should_access_heap()) data->AsPropertyCell()->Serialize(this);
- }
- GetOrCreateData(f->many_closures_cell());
- GetOrCreateData(
- CodeFactory::CEntry(isolate(), 1, kDontSaveFPRegs, kArgvOnStack, true));
-
- TRACE(this, "Finished serializing standard objects");
+ObjectData* JSHeapBroker::TryGetOrCreateData(Object object,
+ GetOrCreateDataFlags flags) {
+ return TryGetOrCreateData(CanonicalPersistentHandle(object), flags);
}
ObjectData* JSHeapBroker::GetOrCreateData(Handle<Object> object,
- ObjectRef::BackgroundSerialization background_serialization) {
- ObjectData* return_value =
- TryGetOrCreateData(object, true, background_serialization);
+ GetOrCreateDataFlags flags) {
+ ObjectData* return_value = TryGetOrCreateData(object, flags | kCrashOnError);
DCHECK_NOT_NULL(return_value);
return return_value;
}
-// clang-format off
-ObjectData* JSHeapBroker::TryGetOrCreateData(Handle<Object> object,
- bool crash_on_error,
- ObjectRef::BackgroundSerialization background_serialization) {
- RefsMap::Entry* entry = refs_->Lookup(object.address());
- if (entry != nullptr) return entry->value;
-
- if (mode() == JSHeapBroker::kDisabled) {
- entry = refs_->LookupOrInsert(object.address());
- ObjectData** storage = &(entry->value);
- if (*storage == nullptr) {
- entry->value = zone()->New<ObjectData>(
- this, storage, object,
- object->IsSmi() ? kSmi : kUnserializedHeapObject);
- }
- return *storage;
- }
-
- CHECK(mode() == JSHeapBroker::kSerializing ||
- mode() == JSHeapBroker::kSerialized);
-
- ObjectData* object_data;
- if (object->IsSmi()) {
- entry = refs_->LookupOrInsert(object.address());
- object_data = zone()->New<ObjectData>(this, &(entry->value), object, kSmi);
- } else if (IsReadOnlyHeapObject(*object)) {
- entry = refs_->LookupOrInsert(object.address());
- object_data = zone()->New<ObjectData>(this, &(entry->value), object,
- kUnserializedReadOnlyHeapObject);
-// TODO(solanes, v8:10866): Remove the if/else in this macro once we remove the
-// FLAG_turbo_direct_heap_access.
-#define CREATE_DATA_FOR_DIRECT_READ(name) \
- } else if (object->Is##name()) { \
- if (FLAG_turbo_direct_heap_access) { \
- entry = refs_->LookupOrInsert(object.address()); \
- object_data = zone()->New<ObjectData>( \
- this, &(entry->value), object, kNeverSerializedHeapObject); \
- } else if (mode() == kSerializing) { \
- entry = refs_->LookupOrInsert(object.address()); \
- object_data = zone()->New<name##Data>(this, &(entry->value), \
- Handle<name>::cast(object)); \
- } else { \
- CHECK(!crash_on_error); \
- return nullptr; \
- }
- HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(CREATE_DATA_FOR_DIRECT_READ)
-#undef CREATE_DATA_FOR_DIRECT_READ
-#define CREATE_DATA_FOR_POSSIBLE_SERIALIZATION(name) \
- } else if (object->Is##name()) { \
- if (mode() == kSerialized && \
- background_serialization != \
- ObjectRef::BackgroundSerialization::kAllowed) { \
- CHECK(!crash_on_error); \
- return nullptr; \
- } \
- entry = refs_->LookupOrInsert(object.address()); \
- ObjectDataKind kind = (background_serialization == \
- ObjectRef::BackgroundSerialization::kAllowed) \
- ? kBackgroundSerializedHeapObject \
- : kSerializedHeapObject; \
- object_data = zone()->New<name##Data>(this, &(entry->value), \
- Handle<name>::cast(object), \
- kind);
- HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(
- CREATE_DATA_FOR_POSSIBLE_SERIALIZATION)
-#undef CREATE_DATA_FOR_POSSIBLE_SERIALIZATION
-#define CREATE_DATA_FOR_BACKGROUND_SERIALIZATION(name) \
- } else if (object->Is##name()) { \
- if (FLAG_turbo_direct_heap_access) { \
- entry = refs_->LookupOrInsert(object.address()); \
- object_data = zone()->New<name##Data>( \
- this, &(entry->value), Handle<name>::cast(object), \
- kBackgroundSerializedHeapObject); \
- } else if (mode() == kSerializing) { \
- entry = refs_->LookupOrInsert(object.address()); \
- object_data = zone()->New<name##Data>(this, &(entry->value), \
- Handle<name>::cast(object)); \
- } else { \
- CHECK(!crash_on_error); \
- return nullptr; \
- }
- HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(
- CREATE_DATA_FOR_BACKGROUND_SERIALIZATION)
-#undef CREATE_DATA_FOR_SERIALIZATION
-#define CREATE_DATA_FOR_SERIALIZATION(name) \
- } else if (object->Is##name()) { \
- if (mode() == kSerializing) { \
- entry = refs_->LookupOrInsert(object.address()); \
- object_data = zone()->New<name##Data>(this, &(entry->value), \
- Handle<name>::cast(object)); \
- } else { \
- CHECK(!crash_on_error); \
- return nullptr; \
- }
- HEAP_BROKER_SERIALIZED_OBJECT_LIST(CREATE_DATA_FOR_SERIALIZATION)
-#undef CREATE_DATA_FOR_SERIALIZATION
- } else {
- UNREACHABLE();
- }
- // At this point the entry pointer is not guaranteed to be valid as
- // the refs_ hash hable could be resized by one of the constructors above.
- DCHECK_EQ(object_data, refs_->Lookup(object.address())->value);
- return object_data;
-}
-// clang-format on
-
-ObjectData* JSHeapBroker::GetOrCreateData(
- Object object,
- ObjectRef::BackgroundSerialization background_serialization) {
- return GetOrCreateData(CanonicalPersistentHandle(object),
- background_serialization);
+ObjectData* JSHeapBroker::GetOrCreateData(Object object,
+ GetOrCreateDataFlags flags) {
+ return GetOrCreateData(CanonicalPersistentHandle(object), flags);
}
-#define DEFINE_IS_AND_AS(Name) \
- bool ObjectRef::Is##Name() const { return data()->Is##Name(); } \
- Name##Ref ObjectRef::As##Name() const { \
- DCHECK(Is##Name()); \
- return Name##Ref(broker(), data()); \
- }
-HEAP_BROKER_SERIALIZED_OBJECT_LIST(DEFINE_IS_AND_AS)
-HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(DEFINE_IS_AND_AS)
-HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(DEFINE_IS_AND_AS)
-HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(DEFINE_IS_AND_AS)
-#undef DEFINE_IS_AND_AS
-
bool JSHeapBroker::StackHasOverflowed() const {
DCHECK_IMPLIES(local_isolate_ == nullptr,
ThreadId::Current() == isolate_->thread_id());
@@ -3002,1742 +249,12 @@ bool JSHeapBroker::StackHasOverflowed() const {
}
bool JSHeapBroker::ObjectMayBeUninitialized(Handle<Object> object) const {
- return !IsMainThread() && object->IsHeapObject() &&
- isolate()->heap()->IsPendingAllocation(HeapObject::cast(*object));
-}
-
-bool ObjectRef::IsSmi() const { return data()->is_smi(); }
-
-int ObjectRef::AsSmi() const {
- DCHECK(IsSmi());
- // Handle-dereference is always allowed for Handle<Smi>.
- return Handle<Smi>::cast(object())->value();
-}
-
-base::Optional<MapRef> JSObjectRef::GetObjectCreateMap() const {
- if (data_->should_access_heap()) {
- Handle<Map> instance_map;
- if (Map::TryGetObjectCreateMap(broker()->isolate(), object())
- .ToHandle(&instance_map)) {
- return MapRef(broker(), instance_map);
- } else {
- return base::Optional<MapRef>();
- }
- }
- ObjectData* map_data = data()->AsJSObject()->object_create_map(broker());
- if (map_data == nullptr) return base::Optional<MapRef>();
- if (map_data->should_access_heap()) {
- return MapRef(broker(), map_data->object());
- }
- return MapRef(broker(), map_data->AsMap());
-}
-
-#define DEF_TESTER(Type, ...) \
- bool MapRef::Is##Type##Map() const { \
- return InstanceTypeChecker::Is##Type(instance_type()); \
- }
-INSTANCE_TYPE_CHECKERS(DEF_TESTER)
-#undef DEF_TESTER
-
-base::Optional<MapRef> MapRef::AsElementsKind(ElementsKind kind) const {
- if (data_->should_access_heap()) {
- return MapRef(broker(),
- Map::AsElementsKind(broker()->isolate(), object(), kind));
- }
- if (kind == elements_kind()) return *this;
- const ZoneVector<ObjectData*>& elements_kind_generalizations =
- data()->AsMap()->elements_kind_generalizations();
- for (auto data : elements_kind_generalizations) {
- MapRef map(broker(), data);
- if (map.elements_kind() == kind) return map;
- }
- return base::Optional<MapRef>();
+ if (!object->IsHeapObject()) return false;
+ return ObjectMayBeUninitialized(HeapObject::cast(*object));
}
-void MapRef::SerializeForElementLoad() {
- if (data()->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsMap()->SerializeForElementLoad(broker());
-}
-
-void MapRef::SerializeForElementStore() {
- if (data()->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsMap()->SerializeForElementStore(broker());
-}
-
-void MapData::SerializeForElementLoad(JSHeapBroker* broker) {
- if (serialized_for_element_load_) return;
- serialized_for_element_load_ = true;
-
- TraceScope tracer(broker, this, "MapData::SerializeForElementLoad");
- SerializePrototype(broker);
-}
-
-void MapData::SerializeForElementStore(JSHeapBroker* broker) {
- if (serialized_for_element_store_) return;
- serialized_for_element_store_ = true;
-
- TraceScope tracer(broker, this, "MapData::SerializeForElementStore");
- // TODO(solanes, v8:7790): This should use MapData methods rather than
- // constructing MapRefs, but it involves non-trivial refactoring and this
- // method should go away anyway once the compiler is fully concurrent.
- MapRef map(broker, this);
- for (MapRef prototype_map = map;;) {
- prototype_map.SerializePrototype();
- prototype_map = prototype_map.prototype().map();
- if (prototype_map.oddball_type() == OddballType::kNull ||
- !map.prototype().IsJSObject() || !prototype_map.is_stable() ||
- !IsFastElementsKind(prototype_map.elements_kind())) {
- return;
- }
- }
-}
-
-bool MapRef::HasOnlyStablePrototypesWithFastElements(
- ZoneVector<MapRef>* prototype_maps) {
- DCHECK_NOT_NULL(prototype_maps);
- MapRef prototype_map = prototype().map();
- while (prototype_map.oddball_type() != OddballType::kNull) {
- if (!prototype().IsJSObject() || !prototype_map.is_stable() ||
- !IsFastElementsKind(prototype_map.elements_kind())) {
- return false;
- }
- prototype_maps->push_back(prototype_map);
- prototype_map = prototype_map.prototype().map();
- }
- return true;
-}
-
-bool MapRef::supports_fast_array_iteration() const {
- if (data_->should_access_heap()) {
- return SupportsFastArrayIteration(broker()->isolate(), object());
- }
- return data()->AsMap()->supports_fast_array_iteration();
-}
-
-bool MapRef::supports_fast_array_resize() const {
- if (data_->should_access_heap()) {
- return SupportsFastArrayResize(broker()->isolate(), object());
- }
- return data()->AsMap()->supports_fast_array_resize();
-}
-
-int JSFunctionRef::InitialMapInstanceSizeWithMinSlack() const {
- if (data_->should_access_heap()) {
- return object()->ComputeInstanceSizeWithMinSlack(broker()->isolate());
- }
- return data()->AsJSFunction()->initial_map_instance_size_with_min_slack();
-}
-
-OddballType MapRef::oddball_type() const {
- if (instance_type() != ODDBALL_TYPE) {
- return OddballType::kNone;
- }
- Factory* f = broker()->isolate()->factory();
- if (equals(MapRef(broker(), f->undefined_map()))) {
- return OddballType::kUndefined;
- }
- if (equals(MapRef(broker(), f->null_map()))) {
- return OddballType::kNull;
- }
- if (equals(MapRef(broker(), f->boolean_map()))) {
- return OddballType::kBoolean;
- }
- if (equals(MapRef(broker(), f->the_hole_map()))) {
- return OddballType::kHole;
- }
- if (equals(MapRef(broker(), f->uninitialized_map()))) {
- return OddballType::kUninitialized;
- }
- DCHECK(equals(MapRef(broker(), f->termination_exception_map())) ||
- equals(MapRef(broker(), f->arguments_marker_map())) ||
- equals(MapRef(broker(), f->optimized_out_map())) ||
- equals(MapRef(broker(), f->stale_register_map())));
- return OddballType::kOther;
-}
-
-FeedbackCellRef FeedbackVectorRef::GetClosureFeedbackCell(int index) const {
- if (data_->should_access_heap()) {
- FeedbackCell cell = object()->closure_feedback_cell(index);
- Handle<FeedbackCell> cell_handle =
- broker()->CanonicalPersistentHandle(cell);
- // These should all be available because we request the cell for each
- // CreateClosure bytecode.
- ObjectData* cell_data = broker()->GetOrCreateData(cell_handle);
- return FeedbackCellRef(broker(), cell_data);
- }
-
- return FeedbackCellRef(
- broker(),
- data()->AsFeedbackVector()->GetClosureFeedbackCell(broker(), index));
-}
-
-ObjectRef JSObjectRef::RawFastPropertyAt(FieldIndex index) const {
- CHECK(index.is_inobject());
- if (data_->should_access_heap()) {
- return ObjectRef(broker(), broker()->CanonicalPersistentHandle(
- object()->RawFastPropertyAt(index)));
- }
- JSObjectData* object_data = data()->AsJSObject();
- return ObjectRef(broker(),
- object_data->GetInobjectField(index.property_index()));
-}
-
-bool AllocationSiteRef::IsFastLiteral() const {
- if (data_->should_access_heap()) {
- CHECK_NE(data_->kind(), ObjectDataKind::kNeverSerializedHeapObject);
- return IsInlinableFastLiteral(
- handle(object()->boilerplate(), broker()->isolate()));
- }
- return data()->AsAllocationSite()->IsFastLiteral();
-}
-
-void AllocationSiteRef::SerializeBoilerplate() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsAllocationSite()->SerializeBoilerplate(broker());
-}
-
-void JSObjectRef::SerializeElements() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsJSObject()->SerializeElements(broker());
-}
-
-void JSObjectRef::EnsureElementsTenured() {
- if (data_->should_access_heap()) {
- Handle<FixedArrayBase> object_elements = elements().value().object();
- if (ObjectInYoungGeneration(*object_elements)) {
- // If we would like to pretenure a fixed cow array, we must ensure that
- // the array is already in old space, otherwise we'll create too many
- // old-to-new-space pointers (overflowing the store buffer).
- object_elements =
- broker()->isolate()->factory()->CopyAndTenureFixedCOWArray(
- Handle<FixedArray>::cast(object_elements));
- object()->set_elements(*object_elements);
- }
- return;
- }
- CHECK(data()->AsJSObject()->cow_or_empty_elements_tenured());
-}
-
-FieldIndex MapRef::GetFieldIndexFor(InternalIndex descriptor_index) const {
- CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- FieldIndex result = FieldIndex::ForDescriptor(*object(), descriptor_index);
- DCHECK(result.is_inobject());
- return result;
- }
- DescriptorArrayData* descriptors =
- data()->AsMap()->instance_descriptors()->AsDescriptorArray();
- FieldIndex result = descriptors->GetFieldIndexFor(descriptor_index);
- DCHECK(result.is_inobject());
- return result;
-}
-
-int MapRef::GetInObjectPropertyOffset(int i) const {
- if (data_->should_access_heap()) {
- return object()->GetInObjectPropertyOffset(i);
- }
- return (GetInObjectPropertiesStartInWords() + i) * kTaggedSize;
-}
-
-PropertyDetails MapRef::GetPropertyDetails(
- InternalIndex descriptor_index) const {
- CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
- return instance_descriptors().GetPropertyDetails(descriptor_index);
-}
-
-NameRef MapRef::GetPropertyKey(InternalIndex descriptor_index) const {
- CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
- return instance_descriptors().GetPropertyKey(descriptor_index);
-}
-
-bool MapRef::IsFixedCowArrayMap() const {
- Handle<Map> fixed_cow_array_map =
- ReadOnlyRoots(broker()->isolate()).fixed_cow_array_map_handle();
- return equals(MapRef(broker(), fixed_cow_array_map));
-}
-
-bool MapRef::IsPrimitiveMap() const {
- return instance_type() <= LAST_PRIMITIVE_HEAP_OBJECT_TYPE;
-}
-
-MapRef MapRef::FindFieldOwner(InternalIndex descriptor_index) const {
- CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // TODO(solanes, v8:7790): Consider caching the result of the field owner on
- // the descriptor array. It would be useful for same map as well as any
- // other map sharing that descriptor array.
- return MapRef(broker(), broker()->GetOrCreateData(object()->FindFieldOwner(
- broker()->isolate(), descriptor_index)));
- }
- DescriptorArrayData* descriptors =
- data()->AsMap()->instance_descriptors()->AsDescriptorArray();
- return MapRef(broker(), descriptors->FindFieldOwner(descriptor_index));
-}
-
-ObjectRef MapRef::GetFieldType(InternalIndex descriptor_index) const {
- CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
- return instance_descriptors().GetFieldType(descriptor_index);
-}
-
-base::Optional<ObjectRef> StringRef::GetCharAsStringOrUndefined(
- uint32_t index, SerializationPolicy policy) const {
- if (data_->should_access_heap()) {
- // TODO(solanes, neis, v8:7790, v8:11012): Re-enable this optimization for
- // concurrent inlining when we have the infrastructure to safely do so.
- if (broker()->is_concurrent_inlining()) return base::nullopt;
- CHECK_EQ(data_->kind(), ObjectDataKind::kUnserializedHeapObject);
- return GetOwnElementFromHeap(broker(), object(), index, true);
- }
- ObjectData* element =
- data()->AsString()->GetCharAsStringOrUndefined(broker(), index, policy);
- if (element == nullptr) return base::nullopt;
- return ObjectRef(broker(), element);
-}
-
-base::Optional<int> StringRef::length() const {
- if (data_->should_access_heap()) {
- if (data_->kind() == kNeverSerializedHeapObject &&
- !this->IsInternalizedString()) {
- TRACE_BROKER_MISSING(
- broker(),
- "length for kNeverSerialized non-internalized string " << *this);
- return base::nullopt;
- } else {
- return object()->synchronized_length();
- }
- }
- return data()->AsString()->length();
-}
-
-base::Optional<uint16_t> StringRef::GetFirstChar() {
- if (data_->should_access_heap()) {
- if (data_->kind() == kNeverSerializedHeapObject &&
- !this->IsInternalizedString()) {
- TRACE_BROKER_MISSING(
- broker(),
- "first char for kNeverSerialized non-internalized string " << *this);
- return base::nullopt;
- }
-
- if (!broker()->IsMainThread()) {
- return object()->Get(0, broker()->local_isolate());
- } else {
- // TODO(solanes, v8:7790): Remove this case once the inlining phase is
- // done concurrently all the time.
- return object()->Get(0);
- }
- }
- return data()->AsString()->first_char();
-}
-
-base::Optional<double> StringRef::ToNumber() {
- if (data_->should_access_heap()) {
- if (data_->kind() == kNeverSerializedHeapObject &&
- !this->IsInternalizedString()) {
- TRACE_BROKER_MISSING(
- broker(),
- "number for kNeverSerialized non-internalized string " << *this);
- return base::nullopt;
- }
-
- return TryStringToDouble(broker()->local_isolate(), object());
- }
- return data()->AsString()->to_number();
-}
-
-int ArrayBoilerplateDescriptionRef::constants_elements_length() const {
- if (data_->should_access_heap()) {
- return object()->constant_elements().length();
- }
- return data()->AsArrayBoilerplateDescription()->constants_elements_length();
-}
-
-ObjectRef FixedArrayRef::get(int i) const {
- if (data_->should_access_heap()) {
- return ObjectRef(broker(),
- broker()->CanonicalPersistentHandle(object()->get(i)));
- }
- return ObjectRef(broker(), data()->AsFixedArray()->Get(i));
-}
-
-Float64 FixedDoubleArrayRef::get(int i) const {
- if (data_->should_access_heap()) {
- return Float64::FromBits(object()->get_representation(i));
- } else {
- return data()->AsFixedDoubleArray()->Get(i);
- }
-}
-
-Handle<ByteArray> BytecodeArrayRef::SourcePositionTable() const {
- return broker()->CanonicalPersistentHandle(object()->SourcePositionTable());
-}
-
-Address BytecodeArrayRef::handler_table_address() const {
- return reinterpret_cast<Address>(
- object()->handler_table().GetDataStartAddress());
-}
-
-int BytecodeArrayRef::handler_table_size() const {
- return object()->handler_table().length();
-}
-
-#define IF_ACCESS_FROM_HEAP_C(name) \
- if (data_->should_access_heap()) { \
- return object()->name(); \
- }
-
-#define IF_ACCESS_FROM_HEAP(result, name) \
- if (data_->should_access_heap()) { \
- return result##Ref(broker(), \
- broker()->CanonicalPersistentHandle(object()->name())); \
- }
-
-// Macros for definining a const getter that, depending on the data kind,
-// either looks into the heap or into the serialized data.
-#define BIMODAL_ACCESSOR(holder, result, name) \
- result##Ref holder##Ref::name() const { \
- IF_ACCESS_FROM_HEAP(result, name); \
- return result##Ref(broker(), ObjectRef::data()->As##holder()->name()); \
- }
-
-// Like above except that the result type is not an XYZRef.
-#define BIMODAL_ACCESSOR_C(holder, result, name) \
- result holder##Ref::name() const { \
- IF_ACCESS_FROM_HEAP_C(name); \
- return ObjectRef::data()->As##holder()->name(); \
- }
-
-// Like above but for BitFields.
-#define BIMODAL_ACCESSOR_B(holder, field, name, BitField) \
- typename BitField::FieldType holder##Ref::name() const { \
- IF_ACCESS_FROM_HEAP_C(name); \
- return BitField::decode(ObjectRef::data()->As##holder()->field()); \
- }
-
-// Like IF_ACCESS_FROM_HEAP[_C] but we also allow direct heap access for
-// kSerialized only for methods that we identified to be safe.
-#define IF_ACCESS_FROM_HEAP_WITH_FLAG(result, name) \
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) { \
- return result##Ref(broker(), \
- broker()->CanonicalPersistentHandle(object()->name())); \
- }
-#define IF_ACCESS_FROM_HEAP_WITH_FLAG_C(name) \
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) { \
- return object()->name(); \
- }
-
-// Like BIMODAL_ACCESSOR[_C] except that we force a direct heap access if
-// FLAG_turbo_direct_heap_access is true (even for kSerialized). This is because
-// we identified the method to be safe to use direct heap access, but the
-// holder##Data class still needs to be serialized.
-#define BIMODAL_ACCESSOR_WITH_FLAG(holder, result, name) \
- result##Ref holder##Ref::name() const { \
- IF_ACCESS_FROM_HEAP_WITH_FLAG(result, name); \
- return result##Ref(broker(), ObjectRef::data()->As##holder()->name()); \
- }
-#define BIMODAL_ACCESSOR_WITH_FLAG_C(holder, result, name) \
- result holder##Ref::name() const { \
- IF_ACCESS_FROM_HEAP_WITH_FLAG_C(name); \
- return ObjectRef::data()->As##holder()->name(); \
- }
-#define BIMODAL_ACCESSOR_WITH_FLAG_B(holder, field, name, BitField) \
- typename BitField::FieldType holder##Ref::name() const { \
- IF_ACCESS_FROM_HEAP_WITH_FLAG_C(name); \
- return BitField::decode(ObjectRef::data()->As##holder()->field()); \
- }
-
-BIMODAL_ACCESSOR(AllocationSite, Object, nested_site)
-BIMODAL_ACCESSOR_C(AllocationSite, bool, CanInlineCall)
-BIMODAL_ACCESSOR_C(AllocationSite, bool, PointsToLiteral)
-BIMODAL_ACCESSOR_C(AllocationSite, ElementsKind, GetElementsKind)
-BIMODAL_ACCESSOR_C(AllocationSite, AllocationType, GetAllocationType)
-
-BIMODAL_ACCESSOR_C(BigInt, uint64_t, AsUint64)
-
-BIMODAL_ACCESSOR_C(BytecodeArray, int, register_count)
-BIMODAL_ACCESSOR_C(BytecodeArray, int, parameter_count)
-BIMODAL_ACCESSOR_C(BytecodeArray, interpreter::Register,
- incoming_new_target_or_generator_register)
-
-BIMODAL_ACCESSOR_C(FeedbackVector, double, invocation_count)
-
-BIMODAL_ACCESSOR(HeapObject, Map, map)
-
-BIMODAL_ACCESSOR_C(HeapNumber, double, value)
-
-// These JSBoundFunction fields are immutable after initialization. Moreover,
-// as long as JSObjects are still serialized on the main thread, all
-// JSBoundFunctionRefs are created at a time when the underlying objects are
-// guaranteed to be fully initialized.
-BIMODAL_ACCESSOR_WITH_FLAG(JSBoundFunction, JSReceiver, bound_target_function)
-BIMODAL_ACCESSOR_WITH_FLAG(JSBoundFunction, Object, bound_this)
-BIMODAL_ACCESSOR_WITH_FLAG(JSBoundFunction, FixedArray, bound_arguments)
-
-BIMODAL_ACCESSOR_C(JSDataView, size_t, byte_length)
-
-BIMODAL_ACCESSOR_C(JSFunction, bool, has_feedback_vector)
-BIMODAL_ACCESSOR_C(JSFunction, bool, has_initial_map)
-BIMODAL_ACCESSOR_C(JSFunction, bool, has_prototype)
-BIMODAL_ACCESSOR_C(JSFunction, bool, PrototypeRequiresRuntimeLookup)
-BIMODAL_ACCESSOR(JSFunction, Context, context)
-BIMODAL_ACCESSOR(JSFunction, NativeContext, native_context)
-BIMODAL_ACCESSOR(JSFunction, Map, initial_map)
-BIMODAL_ACCESSOR(JSFunction, Object, prototype)
-BIMODAL_ACCESSOR(JSFunction, SharedFunctionInfo, shared)
-BIMODAL_ACCESSOR(JSFunction, FeedbackCell, raw_feedback_cell)
-BIMODAL_ACCESSOR(JSFunction, FeedbackVector, feedback_vector)
-
-BIMODAL_ACCESSOR_C(JSGlobalObject, bool, IsDetached)
-
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field2, elements_kind,
- Map::Bits2::ElementsKindBits)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field3, is_dictionary_map,
- Map::Bits3::IsDictionaryMapBit)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field3, is_deprecated,
- Map::Bits3::IsDeprecatedBit)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field3, NumberOfOwnDescriptors,
- Map::Bits3::NumberOfOwnDescriptorsBits)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field3, is_migration_target,
- Map::Bits3::IsMigrationTargetBit)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, has_prototype_slot,
- Map::Bits1::HasPrototypeSlotBit)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, is_access_check_needed,
- Map::Bits1::IsAccessCheckNeededBit)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, is_callable,
- Map::Bits1::IsCallableBit)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, has_indexed_interceptor,
- Map::Bits1::HasIndexedInterceptorBit)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, is_constructor,
- Map::Bits1::IsConstructorBit)
-BIMODAL_ACCESSOR_WITH_FLAG_B(Map, bit_field, is_undetectable,
- Map::Bits1::IsUndetectableBit)
-BIMODAL_ACCESSOR_C(Map, int, instance_size)
-BIMODAL_ACCESSOR_C(Map, int, NextFreePropertyIndex)
-BIMODAL_ACCESSOR_C(Map, int, UnusedPropertyFields)
-BIMODAL_ACCESSOR_WITH_FLAG(Map, HeapObject, prototype)
-BIMODAL_ACCESSOR_WITH_FLAG_C(Map, InstanceType, instance_type)
-BIMODAL_ACCESSOR_WITH_FLAG(Map, Object, GetConstructor)
-BIMODAL_ACCESSOR_WITH_FLAG(Map, HeapObject, GetBackPointer)
-BIMODAL_ACCESSOR_C(Map, bool, is_abandoned_prototype_map)
-
-#define DEF_NATIVE_CONTEXT_ACCESSOR(type, name) \
- BIMODAL_ACCESSOR(NativeContext, type, name)
-BROKER_NATIVE_CONTEXT_FIELDS(DEF_NATIVE_CONTEXT_ACCESSOR)
-#undef DEF_NATIVE_CONTEXT_ACCESSOR
-
-BIMODAL_ACCESSOR_C(ObjectBoilerplateDescription, int, size)
-
-BIMODAL_ACCESSOR(PropertyCell, Object, value)
-BIMODAL_ACCESSOR_C(PropertyCell, PropertyDetails, property_details)
-
-BIMODAL_ACCESSOR(RegExpBoilerplateDescription, FixedArray, data)
-BIMODAL_ACCESSOR(RegExpBoilerplateDescription, String, source)
-BIMODAL_ACCESSOR_C(RegExpBoilerplateDescription, int, flags)
-
-base::Optional<CallHandlerInfoRef> FunctionTemplateInfoRef::call_code() const {
- if (data_->should_access_heap()) {
- HeapObject call_code = object()->call_code(kAcquireLoad);
- if (call_code.IsUndefined()) return base::nullopt;
- return CallHandlerInfoRef(broker(),
- broker()->CanonicalPersistentHandle(call_code));
- }
- ObjectData* call_code = data()->AsFunctionTemplateInfo()->call_code();
- if (!call_code) return base::nullopt;
- return CallHandlerInfoRef(broker(), call_code);
-}
-
-bool FunctionTemplateInfoRef::is_signature_undefined() const {
- if (data_->should_access_heap()) {
- return object()->signature().IsUndefined(broker()->isolate());
- }
- return data()->AsFunctionTemplateInfo()->is_signature_undefined();
-}
-
-bool FunctionTemplateInfoRef::has_call_code() const {
- if (data_->should_access_heap()) {
- HeapObject call_code = object()->call_code(kAcquireLoad);
- return !call_code.IsUndefined();
- }
- return data()->AsFunctionTemplateInfo()->has_call_code();
-}
-
-bool FunctionTemplateInfoRef ::accept_any_receiver() const {
- if (data_->should_access_heap()) {
- return object()->accept_any_receiver();
- }
- return ObjectRef ::data()->AsFunctionTemplateInfo()->accept_any_receiver();
-}
-
-HolderLookupResult FunctionTemplateInfoRef::LookupHolderOfExpectedType(
- MapRef receiver_map, SerializationPolicy policy) {
- const HolderLookupResult not_found;
-
- if (data_->should_access_heap()) {
- // There are currently two ways we can see a FunctionTemplateInfo on the
- // background thread: 1.) As part of a SharedFunctionInfo and 2.) in an
- // AccessorPair. In both cases, the FTI is fully constructed on the main
- // thread before.
- // TODO(nicohartmann@, v8:7790): Once the above no longer holds, we might
- // have to use the GC predicate to check whether objects are fully
- // initialized and safe to read.
- if (!receiver_map.IsJSReceiverMap() ||
- (receiver_map.is_access_check_needed() &&
- !object()->accept_any_receiver())) {
- return not_found;
- }
-
- if (!receiver_map.IsJSObjectMap()) return not_found;
-
- DCHECK(has_call_code());
-
- DisallowGarbageCollection no_gc;
- HeapObject signature = object()->signature();
- if (signature.IsUndefined()) {
- return HolderLookupResult(CallOptimization::kHolderIsReceiver);
- }
- auto expected_receiver_type = FunctionTemplateInfo::cast(signature);
- if (expected_receiver_type.IsTemplateFor(*receiver_map.object())) {
- return HolderLookupResult(CallOptimization::kHolderIsReceiver);
- }
-
- if (!receiver_map.IsJSGlobalProxyMap()) return not_found;
- if (policy == SerializationPolicy::kSerializeIfNeeded) {
- receiver_map.SerializePrototype();
- }
- if (!receiver_map.serialized_prototype()) return not_found;
- if (receiver_map.prototype().IsNull()) return not_found;
-
- JSObject raw_prototype = JSObject::cast(*receiver_map.prototype().object());
- if (!expected_receiver_type.IsTemplateFor(raw_prototype.map())) {
- return not_found;
- }
- Handle<JSObject> prototype =
- broker()->CanonicalPersistentHandle(raw_prototype);
- if (ObjectData* data = broker()->TryGetOrCreateData(prototype)) {
- return HolderLookupResult(CallOptimization::kHolderFound,
- JSObjectRef(broker(), data));
- }
-
- TRACE_BROKER_MISSING(broker(),
- "holder for receiver with map " << receiver_map);
- return not_found;
- }
-
- FunctionTemplateInfoData* fti_data = data()->AsFunctionTemplateInfo();
- KnownReceiversMap::iterator lookup_it =
- fti_data->known_receivers().find(receiver_map.data());
- if (lookup_it != fti_data->known_receivers().cend()) {
- return lookup_it->second;
- }
- if (policy == SerializationPolicy::kAssumeSerialized) {
- TRACE_BROKER_MISSING(broker(),
- "holder for receiver with map " << receiver_map);
- return not_found;
- }
- if (!receiver_map.IsJSReceiverMap() ||
- (receiver_map.is_access_check_needed() && !accept_any_receiver())) {
- fti_data->known_receivers().insert({receiver_map.data(), not_found});
- return not_found;
- }
-
- HolderLookupResult result;
- CallOptimization call_optimization(broker()->isolate(), object());
- Handle<JSObject> holder = call_optimization.LookupHolderOfExpectedType(
- receiver_map.object(), &result.lookup);
-
- switch (result.lookup) {
- case CallOptimization::kHolderFound: {
- result.holder = JSObjectRef(broker(), holder);
- fti_data->known_receivers().insert({receiver_map.data(), result});
- break;
- }
- default: {
- DCHECK_EQ(result.holder, base::nullopt);
- fti_data->known_receivers().insert({receiver_map.data(), result});
- }
- }
- return result;
-}
-
-BIMODAL_ACCESSOR(CallHandlerInfo, Object, data)
-
-BIMODAL_ACCESSOR_C(ScopeInfo, int, ContextLength)
-BIMODAL_ACCESSOR_C(ScopeInfo, bool, HasContextExtensionSlot)
-BIMODAL_ACCESSOR_C(ScopeInfo, bool, HasOuterScopeInfo)
-BIMODAL_ACCESSOR(ScopeInfo, ScopeInfo, OuterScopeInfo)
-
-BIMODAL_ACCESSOR_C(SharedFunctionInfo, int, builtin_id)
-BytecodeArrayRef SharedFunctionInfoRef::GetBytecodeArray() const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- BytecodeArray bytecode_array;
- if (!broker()->IsMainThread()) {
- bytecode_array = object()->GetBytecodeArray(broker()->local_isolate());
- } else {
- bytecode_array = object()->GetBytecodeArray(broker()->isolate());
- }
- return BytecodeArrayRef(
- broker(), broker()->CanonicalPersistentHandle(bytecode_array));
- }
- return BytecodeArrayRef(
- broker(), ObjectRef ::data()->AsSharedFunctionInfo()->GetBytecodeArray());
-}
-#define DEF_SFI_ACCESSOR(type, name) \
- BIMODAL_ACCESSOR_WITH_FLAG_C(SharedFunctionInfo, type, name)
-BROKER_SFI_FIELDS(DEF_SFI_ACCESSOR)
-#undef DEF_SFI_ACCESSOR
-SharedFunctionInfo::Inlineability SharedFunctionInfoRef::GetInlineability()
- const {
- if (data_->should_access_heap()) {
- if (!broker()->IsMainThread()) {
- return object()->GetInlineability(broker()->local_isolate());
- } else {
- return object()->GetInlineability(broker()->isolate());
- }
- }
- return ObjectRef ::data()->AsSharedFunctionInfo()->GetInlineability();
-}
-
-base::Optional<FeedbackVectorRef> FeedbackCellRef::value() const {
- if (data_->should_access_heap()) {
- // Note that we use the synchronized accessor.
- Object value = object()->value(kAcquireLoad);
- if (!value.IsFeedbackVector()) return base::nullopt;
- auto vector_handle = broker()->CanonicalPersistentHandle(value);
- ObjectData* vector = broker()->TryGetOrCreateData(vector_handle);
- if (vector) {
- return FeedbackVectorRef(broker(), vector);
- }
- TRACE_BROKER_MISSING(
- broker(),
- "Unable to retrieve FeedbackVector from FeedbackCellRef " << *this);
- return base::nullopt;
- }
- ObjectData* vector = ObjectRef::data()->AsFeedbackCell()->value();
- return FeedbackVectorRef(broker(), vector->AsFeedbackVector());
-}
-
-base::Optional<ObjectRef> MapRef::GetStrongValue(
- InternalIndex descriptor_index) const {
- CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
- return instance_descriptors().GetStrongValue(descriptor_index);
-}
-
-DescriptorArrayRef MapRef::instance_descriptors() const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- return DescriptorArrayRef(
- broker(),
- broker()->CanonicalPersistentHandle(
- object()->instance_descriptors(broker()->isolate(), kRelaxedLoad)));
- }
-
- return DescriptorArrayRef(broker(), data()->AsMap()->instance_descriptors());
-}
-
-void MapRef::SerializeRootMap() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsMap()->SerializeRootMap(broker());
-}
-
-// TODO(solanes, v8:7790): Remove base::Optional from the return type when
-// deleting serialization.
-base::Optional<MapRef> MapRef::FindRootMap() const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // TODO(solanes): Remove the TryGetOrCreateData part when Map is moved to
- // kNeverSerialized.
- ObjectData* root_map =
- broker()->TryGetOrCreateData(broker()->CanonicalPersistentHandle(
- object()->FindRootMap(broker()->isolate())));
- if (root_map) {
- // TODO(solanes, v8:7790): Consider caching the result of the root map.
- return MapRef(broker(), root_map);
- }
- TRACE_BROKER_MISSING(broker(), "root map for object " << *this);
- return base::nullopt;
- }
- ObjectData* map_data = data()->AsMap()->FindRootMap();
- if (map_data != nullptr) {
- return MapRef(broker(), map_data);
- }
- TRACE_BROKER_MISSING(broker(), "root map for object " << *this);
- return base::nullopt;
-}
-
-bool JSTypedArrayRef::is_on_heap() const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // Safe to read concurrently because:
- // - host object seen by serializer.
- // - underlying field written 1. during initialization or 2. with
- // release-store.
- return object()->is_on_heap(kAcquireLoad);
- }
- return data()->AsJSTypedArray()->data_ptr();
-}
-
-size_t JSTypedArrayRef::length() const {
- CHECK(!is_on_heap());
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // Safe to read concurrently because:
- // - immutable after initialization.
- // - host object seen by serializer.
- return object()->length();
- }
- return data()->AsJSTypedArray()->length();
-}
-
-HeapObjectRef JSTypedArrayRef::buffer() const {
- CHECK(!is_on_heap());
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // Safe to read concurrently because:
- // - immutable after initialization.
- // - host object seen by serializer.
- Handle<JSArrayBuffer> value =
- broker()->CanonicalPersistentHandle(object()->buffer());
- return JSObjectRef{broker(), value};
- }
- return HeapObjectRef{broker(), data()->AsJSTypedArray()->buffer()};
-}
-
-void* JSTypedArrayRef::data_ptr() const {
- CHECK(!is_on_heap());
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // Safe to read concurrently because:
- // - host object seen by serializer.
- // - underlying field written 1. during initialization or 2. protected by
- // the is_on_heap release/acquire semantics (external_pointer store
- // happens-before base_pointer store, and this external_pointer load
- // happens-after base_pointer load).
- STATIC_ASSERT(JSTypedArray::kOffHeapDataPtrEqualsExternalPointer);
- return object()->DataPtr();
- }
- return data()->AsJSTypedArray()->data_ptr();
-}
-
-bool MapRef::IsInobjectSlackTrackingInProgress() const {
- IF_ACCESS_FROM_HEAP_WITH_FLAG_C(IsInobjectSlackTrackingInProgress);
- return Map::Bits3::ConstructionCounterBits::decode(
- data()->AsMap()->bit_field3()) != Map::kNoSlackTracking;
-}
-
-int MapRef::constructor_function_index() const {
- IF_ACCESS_FROM_HEAP_C(GetConstructorFunctionIndex);
- CHECK(IsPrimitiveMap());
- return data()->AsMap()->constructor_function_index();
-}
-
-bool MapRef::is_stable() const {
- IF_ACCESS_FROM_HEAP_C(is_stable);
- return !Map::Bits3::IsUnstableBit::decode(data()->AsMap()->bit_field3());
-}
-
-bool MapRef::CanBeDeprecated() const {
- IF_ACCESS_FROM_HEAP_C(CanBeDeprecated);
- CHECK_GT(NumberOfOwnDescriptors(), 0);
- return data()->AsMap()->can_be_deprecated();
-}
-
-bool MapRef::CanTransition() const {
- IF_ACCESS_FROM_HEAP_C(CanTransition);
- return data()->AsMap()->can_transition();
-}
-
-int MapRef::GetInObjectPropertiesStartInWords() const {
- IF_ACCESS_FROM_HEAP_C(GetInObjectPropertiesStartInWords);
- return data()->AsMap()->in_object_properties_start_in_words();
-}
-
-int MapRef::GetInObjectProperties() const {
- IF_ACCESS_FROM_HEAP_C(GetInObjectProperties);
- return data()->AsMap()->in_object_properties();
-}
-
-void ScopeInfoRef::SerializeScopeInfoChain() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsScopeInfo()->SerializeScopeInfoChain(broker());
-}
-
-bool StringRef::IsExternalString() const {
- IF_ACCESS_FROM_HEAP_C(IsExternalString);
- return data()->AsString()->is_external_string();
-}
-
-Address CallHandlerInfoRef::callback() const {
- if (data_->should_access_heap()) {
- return v8::ToCData<Address>(object()->callback());
- }
- return HeapObjectRef::data()->AsCallHandlerInfo()->callback();
-}
-
-Address FunctionTemplateInfoRef::c_function() const {
- if (data_->should_access_heap()) {
- return v8::ToCData<Address>(object()->GetCFunction());
- }
- return HeapObjectRef::data()->AsFunctionTemplateInfo()->c_function();
-}
-
-const CFunctionInfo* FunctionTemplateInfoRef::c_signature() const {
- if (data_->should_access_heap()) {
- return v8::ToCData<CFunctionInfo*>(object()->GetCSignature());
- }
- return HeapObjectRef::data()->AsFunctionTemplateInfo()->c_signature();
-}
-
-bool StringRef::IsSeqString() const {
- IF_ACCESS_FROM_HEAP_C(IsSeqString);
- return data()->AsString()->is_seq_string();
-}
-
-ScopeInfoRef NativeContextRef::scope_info() const {
- if (data_->should_access_heap()) {
- return ScopeInfoRef(
- broker(), broker()->CanonicalPersistentHandle(object()->scope_info()));
- }
- return ScopeInfoRef(broker(), data()->AsNativeContext()->scope_info());
-}
-
-SharedFunctionInfoRef FeedbackVectorRef::shared_function_info() const {
- if (data_->should_access_heap()) {
- return SharedFunctionInfoRef(
- broker(),
- broker()->CanonicalPersistentHandle(object()->shared_function_info()));
- }
-
- return SharedFunctionInfoRef(
- broker(), data()->AsFeedbackVector()->shared_function_info());
-}
-
-MapRef NativeContextRef::GetFunctionMapFromIndex(int index) const {
- DCHECK_GE(index, Context::FIRST_FUNCTION_MAP_INDEX);
- DCHECK_LE(index, Context::LAST_FUNCTION_MAP_INDEX);
- if (data_->should_access_heap()) {
- return get(index).value().AsMap();
- }
- return MapRef(broker(), data()->AsNativeContext()->function_maps().at(
- index - Context::FIRST_FUNCTION_MAP_INDEX));
-}
-
-MapRef NativeContextRef::GetInitialJSArrayMap(ElementsKind kind) const {
- switch (kind) {
- case PACKED_SMI_ELEMENTS:
- return js_array_packed_smi_elements_map();
- case HOLEY_SMI_ELEMENTS:
- return js_array_holey_smi_elements_map();
- case PACKED_DOUBLE_ELEMENTS:
- return js_array_packed_double_elements_map();
- case HOLEY_DOUBLE_ELEMENTS:
- return js_array_holey_double_elements_map();
- case PACKED_ELEMENTS:
- return js_array_packed_elements_map();
- case HOLEY_ELEMENTS:
- return js_array_holey_elements_map();
- default:
- UNREACHABLE();
- }
-}
-
-base::Optional<JSFunctionRef> NativeContextRef::GetConstructorFunction(
- const MapRef& map) const {
- CHECK(map.IsPrimitiveMap());
- switch (map.constructor_function_index()) {
- case Map::kNoConstructorFunctionIndex:
- return base::nullopt;
- case Context::BIGINT_FUNCTION_INDEX:
- return bigint_function();
- case Context::BOOLEAN_FUNCTION_INDEX:
- return boolean_function();
- case Context::NUMBER_FUNCTION_INDEX:
- return number_function();
- case Context::STRING_FUNCTION_INDEX:
- return string_function();
- case Context::SYMBOL_FUNCTION_INDEX:
- return symbol_function();
- default:
- UNREACHABLE();
- }
-}
-
-bool ObjectRef::IsNull() const { return object()->IsNull(); }
-
-bool ObjectRef::IsNullOrUndefined() const {
- if (IsSmi()) return false;
- OddballType type = AsHeapObject().map().oddball_type();
- return type == OddballType::kNull || type == OddballType::kUndefined;
-}
-
-bool ObjectRef::IsTheHole() const {
- return IsHeapObject() &&
- AsHeapObject().map().oddball_type() == OddballType::kHole;
-}
-
-bool ObjectRef::BooleanValue() const {
- if (data_->should_access_heap()) {
- return object()->BooleanValue(broker()->isolate());
- }
- return IsSmi() ? (AsSmi() != 0) : data()->AsHeapObject()->boolean_value();
-}
-
-Maybe<double> ObjectRef::OddballToNumber() const {
- OddballType type = AsHeapObject().map().oddball_type();
-
- switch (type) {
- case OddballType::kBoolean: {
- ObjectRef true_ref(broker(),
- broker()->isolate()->factory()->true_value());
- return this->equals(true_ref) ? Just(1.0) : Just(0.0);
- break;
- }
- case OddballType::kUndefined: {
- return Just(std::numeric_limits<double>::quiet_NaN());
- break;
- }
- case OddballType::kNull: {
- return Just(0.0);
- break;
- }
- default: {
- return Nothing<double>();
- break;
- }
- }
-}
-
-base::Optional<ObjectRef> JSObjectRef::GetOwnConstantElement(
- uint32_t index, SerializationPolicy policy) const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // `elements` are currently still serialized as members of JSObjectRef.
- // TODO(jgruber,v8:7790): Once JSObject is no longer serialized, we must
- // guarantee consistency between `object`, `elements_kind` and `elements`
- // through other means (store/load order? locks? storing elements_kind in
- // elements.map?).
- STATIC_ASSERT(IsSerializedHeapObject<JSObject>());
-
- base::Optional<FixedArrayBaseRef> maybe_elements_ref = elements();
- if (!maybe_elements_ref.has_value()) {
- TRACE_BROKER_MISSING(broker(), "JSObject::elements" << *this);
- return {};
- }
-
- FixedArrayBaseRef elements_ref = maybe_elements_ref.value();
- ElementsKind elements_kind = GetElementsKind();
-
- DCHECK_LE(index, JSObject::kMaxElementIndex);
-
- // See also ElementsAccessorBase::GetMaxIndex.
- if (IsJSArray()) {
- // For JSArrays we additionally need to check against JSArray::length.
- // Length_unsafe is safe to use in this case since:
- // - GetOwnConstantElement only detects a constant for JSArray holders if
- // the array is frozen/sealed.
- // - Frozen/sealed arrays can't change length.
- // - We've already seen a map with frozen/sealed elements_kinds (above);
- // - The release-load of that map ensures we read the newest value
- // of `length` below.
- uint32_t array_length;
- if (!AsJSArray().length_unsafe().object()->ToArrayLength(&array_length)) {
- return {};
- }
- if (index >= array_length) return {};
- }
-
- Object maybe_element;
- auto result = ConcurrentLookupIterator::TryGetOwnConstantElement(
- &maybe_element, broker()->isolate(), broker()->local_isolate(),
- *object(), *elements_ref.object(), elements_kind, index);
-
- if (result == ConcurrentLookupIterator::kGaveUp) {
- TRACE_BROKER_MISSING(broker(), "JSObject::GetOwnConstantElement on "
- << *this << " at index " << index);
- return {};
- } else if (result == ConcurrentLookupIterator::kNotPresent) {
- return {};
- }
-
- DCHECK_EQ(result, ConcurrentLookupIterator::kPresent);
- return ObjectRef{broker(),
- broker()->CanonicalPersistentHandle(maybe_element)};
- } else {
- ObjectData* element =
- data()->AsJSObject()->GetOwnConstantElement(broker(), index, policy);
- if (element == nullptr) return base::nullopt;
- return ObjectRef(broker(), element);
- }
-}
-
-base::Optional<ObjectRef> JSObjectRef::GetOwnFastDataProperty(
- Representation field_representation, FieldIndex index,
- SerializationPolicy policy) const {
- if (data_->should_access_heap()) {
- return GetOwnFastDataPropertyFromHeap(broker(),
- Handle<JSObject>::cast(object()),
- field_representation, index);
- }
- ObjectData* property = data()->AsJSObject()->GetOwnFastDataProperty(
- broker(), field_representation, index, policy);
- if (property == nullptr) return base::nullopt;
- return ObjectRef(broker(), property);
-}
-
-ObjectRef JSObjectRef::GetOwnDictionaryProperty(
- InternalIndex index, SerializationPolicy policy) const {
- CHECK(index.is_found());
- if (data_->should_access_heap()) {
- return GetOwnDictionaryPropertyFromHeap(
- broker(), Handle<JSObject>::cast(object()), index);
- }
- ObjectData* property =
- data()->AsJSObject()->GetOwnDictionaryProperty(broker(), index, policy);
- CHECK_NE(property, nullptr);
- return ObjectRef(broker(), property);
-}
-
-ObjectRef JSArrayRef::GetBoilerplateLength() const {
- // Safe to read concurrently because:
- // - boilerplates are immutable after initialization.
- // - boilerplates are published into the feedback vector.
- return length_unsafe();
-}
-
-ObjectRef JSArrayRef::length_unsafe() const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- Object o = object()->length(broker()->isolate(), kRelaxedLoad);
- return ObjectRef{broker(), broker()->CanonicalPersistentHandle(o)};
- } else {
- return ObjectRef{broker(), data()->AsJSArray()->length()};
- }
-}
-
-base::Optional<ObjectRef> JSArrayRef::GetOwnCowElement(
- FixedArrayBaseRef elements_ref, uint32_t index,
- SerializationPolicy policy) const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // `elements` are currently still serialized as members of JSObjectRef.
- // TODO(jgruber,v8:7790): Remove the elements equality DCHECK below once
- // JSObject is no longer serialized.
- static_assert(std::is_base_of<JSObject, JSArray>::value, "");
- STATIC_ASSERT(IsSerializedHeapObject<JSObject>());
-
- // The elements_ref is passed in by callers to make explicit that it is
- // also used outside of this function, and must match the `elements` used
- // inside this function.
- DCHECK(elements_ref.equals(elements().value()));
-
- // Due to concurrency, the kind read here may not be consistent with
- // `elements_ref`. But consistency is guaranteed at runtime due to the
- // `elements` equality check in the caller.
- ElementsKind elements_kind = GetElementsKind();
-
- // We only inspect fixed COW arrays, which may only occur for fast
- // smi/objects elements kinds.
- if (!IsSmiOrObjectElementsKind(elements_kind)) return {};
- DCHECK(IsFastElementsKind(elements_kind));
- if (!elements_ref.map().IsFixedCowArrayMap()) return {};
-
- // As the name says, the `length` read here is unsafe and may not match
- // `elements`. We rely on the invariant that any `length` change will
- // also result in an `elements` change to make this safe. The `elements`
- // equality check in the caller thus also guards the value of `length`.
- ObjectRef length_ref = length_unsafe();
-
- // Likewise we only deal with smi lengths.
- if (!length_ref.IsSmi()) return {};
-
- base::Optional<Object> result =
- ConcurrentLookupIterator::TryGetOwnCowElement(
- broker()->isolate(), *elements_ref.AsFixedArray().object(),
- elements_kind, length_ref.AsSmi(), index);
-
- if (!result.has_value()) return {};
-
- return ObjectRef{broker(),
- broker()->CanonicalPersistentHandle(result.value())};
- } else {
- DCHECK(!data_->should_access_heap());
- DCHECK(!FLAG_turbo_direct_heap_access);
-
- // Just to clarify that `elements_ref` is not used on this path.
- // GetOwnElement accesses the serialized `elements` field on its own.
- USE(elements_ref);
-
- if (!elements().value().map().IsFixedCowArrayMap()) return base::nullopt;
-
- ObjectData* element =
- data()->AsJSArray()->GetOwnElement(broker(), index, policy);
- if (element == nullptr) return base::nullopt;
- return ObjectRef(broker(), element);
- }
-}
-
-base::Optional<CellRef> SourceTextModuleRef::GetCell(int cell_index) const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- return CellRef(broker(), broker()->CanonicalPersistentHandle(
- object()->GetCell(cell_index)));
- }
- ObjectData* cell =
- data()->AsSourceTextModule()->GetCell(broker(), cell_index);
- if (cell == nullptr) return base::nullopt;
- return CellRef(broker(), cell);
-}
-
-ObjectRef SourceTextModuleRef::import_meta() const {
- if (data_->should_access_heap()) {
- return ObjectRef(
- broker(), broker()->CanonicalPersistentHandle(object()->import_meta()));
- }
- return ObjectRef(broker(),
- data()->AsSourceTextModule()->GetImportMeta(broker()));
-}
-
-ObjectRef::ObjectRef(JSHeapBroker* broker, Handle<Object> object,
- BackgroundSerialization background_serialization,
- bool check_type)
- : broker_(broker) {
- CHECK_NE(broker->mode(), JSHeapBroker::kRetired);
-
- data_ = broker->GetOrCreateData(object, background_serialization);
- if (!data_) { // TODO(mslekova): Remove once we're on the background thread.
- object->Print();
- }
- CHECK_WITH_MSG(data_ != nullptr, "Object is not known to the heap broker");
-}
-
-namespace {
-OddballType GetOddballType(Isolate* isolate, Map map) {
- if (map.instance_type() != ODDBALL_TYPE) {
- return OddballType::kNone;
- }
- ReadOnlyRoots roots(isolate);
- if (map == roots.undefined_map()) {
- return OddballType::kUndefined;
- }
- if (map == roots.null_map()) {
- return OddballType::kNull;
- }
- if (map == roots.boolean_map()) {
- return OddballType::kBoolean;
- }
- if (map == roots.the_hole_map()) {
- return OddballType::kHole;
- }
- if (map == roots.uninitialized_map()) {
- return OddballType::kUninitialized;
- }
- DCHECK(map == roots.termination_exception_map() ||
- map == roots.arguments_marker_map() ||
- map == roots.optimized_out_map() || map == roots.stale_register_map());
- return OddballType::kOther;
-}
-} // namespace
-
-HeapObjectType HeapObjectRef::GetHeapObjectType() const {
- if (data_->should_access_heap()) {
- Map map = Handle<HeapObject>::cast(object())->map();
- HeapObjectType::Flags flags(0);
- if (map.is_undetectable()) flags |= HeapObjectType::kUndetectable;
- if (map.is_callable()) flags |= HeapObjectType::kCallable;
- return HeapObjectType(map.instance_type(), flags,
- GetOddballType(broker()->isolate(), map));
- }
- HeapObjectType::Flags flags(0);
- if (map().is_undetectable()) flags |= HeapObjectType::kUndetectable;
- if (map().is_callable()) flags |= HeapObjectType::kCallable;
- return HeapObjectType(map().instance_type(), flags, map().oddball_type());
-}
-base::Optional<JSObjectRef> AllocationSiteRef::boilerplate() const {
- if (data_->should_access_heap()) {
- return JSObjectRef(
- broker(), broker()->CanonicalPersistentHandle(object()->boilerplate()));
- }
- ObjectData* boilerplate = data()->AsAllocationSite()->boilerplate();
- if (boilerplate) {
- return JSObjectRef(broker(), boilerplate);
- } else {
- return base::nullopt;
- }
-}
-
-ElementsKind JSObjectRef::GetElementsKind() const {
- return map().elements_kind();
-}
-
-base::Optional<FixedArrayBaseRef> JSObjectRef::elements() const {
- if (data_->should_access_heap()) {
- return FixedArrayBaseRef(
- broker(), broker()->CanonicalPersistentHandle(object()->elements()));
- }
- const JSObjectData* d = data()->AsJSObject();
- if (!d->serialized_elements()) {
- TRACE(broker(), "'elements' on " << this);
- return base::nullopt;
- }
- return FixedArrayBaseRef(broker(), d->elements());
-}
-
-int FixedArrayBaseRef::length() const {
- IF_ACCESS_FROM_HEAP_C(length);
- return data()->AsFixedArrayBase()->length();
-}
-
-ObjectData* FixedArrayData::Get(int i) const {
- CHECK_LT(i, static_cast<int>(contents_.size()));
- CHECK_NOT_NULL(contents_[i]);
- return contents_[i];
-}
-
-Float64 FixedDoubleArrayData::Get(int i) const {
- CHECK_LT(i, static_cast<int>(contents_.size()));
- return contents_[i];
-}
-
-PropertyDetails DescriptorArrayRef::GetPropertyDetails(
- InternalIndex descriptor_index) const {
- if (data_->should_access_heap()) {
- return object()->GetDetails(descriptor_index);
- }
- return data()->AsDescriptorArray()->GetPropertyDetails(descriptor_index);
-}
-
-NameRef DescriptorArrayRef::GetPropertyKey(
- InternalIndex descriptor_index) const {
- if (data_->should_access_heap()) {
- NameRef result(broker(), broker()->CanonicalPersistentHandle(
- object()->GetKey(descriptor_index)));
- CHECK(result.IsUniqueName());
- return result;
- }
- return NameRef(broker(),
- data()->AsDescriptorArray()->GetPropertyKey(descriptor_index));
-}
-
-ObjectRef DescriptorArrayRef::GetFieldType(
- InternalIndex descriptor_index) const {
- if (data_->should_access_heap()) {
- // This method only gets called for the creation of FieldTypeDependencies.
- // These calls happen when the broker is either disabled or serializing,
- // which means that GetOrCreateData would be able to successfully create the
- // ObjectRef for the cases where we haven't seen the FieldType before.
- DCHECK(broker()->mode() == JSHeapBroker::kDisabled ||
- broker()->mode() == JSHeapBroker::kSerializing);
- return ObjectRef(broker(), broker()->CanonicalPersistentHandle(
- object()->GetFieldType(descriptor_index)));
- }
- return ObjectRef(broker(),
- data()->AsDescriptorArray()->GetFieldType(descriptor_index));
-}
-
-base::Optional<ObjectRef> DescriptorArrayRef::GetStrongValue(
- InternalIndex descriptor_index) const {
- if (data_->should_access_heap()) {
- HeapObject heap_object;
- if (object()
- ->GetValue(descriptor_index)
- .GetHeapObjectIfStrong(&heap_object)) {
- // Since the descriptors in the descriptor array can be changed in-place
- // via DescriptorArray::Replace, we might get a value that we haven't seen
- // before.
- ObjectData* data = broker()->TryGetOrCreateData(
- broker()->CanonicalPersistentHandle(heap_object));
- if (data) return ObjectRef(broker(), data);
-
- TRACE_BROKER_MISSING(broker(), "strong value for descriptor array "
- << *this << " at index "
- << descriptor_index.as_int());
- // Fall through to the base::nullopt below.
- }
- return base::nullopt;
- }
- ObjectData* value =
- data()->AsDescriptorArray()->GetStrongValue(descriptor_index);
- if (!value) return base::nullopt;
- return ObjectRef(broker(), value);
-}
-
-base::Optional<SharedFunctionInfoRef> FeedbackCellRef::shared_function_info()
- const {
- if (value()) {
- FeedbackVectorRef vector = *value();
- if (vector.serialized()) {
- return vector.shared_function_info();
- }
- }
- return base::nullopt;
-}
-
-void FeedbackVectorRef::Serialize() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsFeedbackVector()->Serialize(broker());
-}
-
-bool FeedbackVectorRef::serialized() const {
- if (data_->should_access_heap()) return true;
- return data()->AsFeedbackVector()->serialized();
-}
-
-bool NameRef::IsUniqueName() const {
- // Must match Name::IsUniqueName.
- return IsInternalizedString() || IsSymbol();
-}
-
-void RegExpBoilerplateDescriptionRef::Serialize() {
- if (data_->should_access_heap()) {
- // Even if the regexp boilerplate object itself is no longer serialized,
- // the `data` still is and thus we need to make sure to visit it.
- // TODO(jgruber,v8:7790): Remove once it is no longer a serialized type.
- STATIC_ASSERT(IsSerializedHeapObject<FixedArray>());
- FixedArrayRef data_ref{
- broker(), broker()->CanonicalPersistentHandle(object()->data())};
- } else {
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- HeapObjectRef::data()->AsRegExpBoilerplateDescription()->Serialize(
- broker());
- }
-}
-
-Handle<Object> ObjectRef::object() const {
-#ifdef DEBUG
- if (broker()->mode() == JSHeapBroker::kSerialized &&
- data_->used_status == ObjectData::Usage::kUnused) {
- data_->used_status = ObjectData::Usage::kOnlyIdentityUsed;
- }
-#endif // DEBUG
- return data_->object();
-}
-
-#ifdef DEBUG
-#define DEF_OBJECT_GETTER(T) \
- Handle<T> T##Ref::object() const { \
- if (broker()->mode() == JSHeapBroker::kSerialized && \
- data_->used_status == ObjectData::Usage::kUnused) { \
- data_->used_status = ObjectData::Usage::kOnlyIdentityUsed; \
- } \
- return Handle<T>(reinterpret_cast<Address*>(data_->object().address())); \
- }
-#else
-#define DEF_OBJECT_GETTER(T) \
- Handle<T> T##Ref::object() const { \
- return Handle<T>(reinterpret_cast<Address*>(data_->object().address())); \
- }
-#endif // DEBUG
-
-HEAP_BROKER_SERIALIZED_OBJECT_LIST(DEF_OBJECT_GETTER)
-HEAP_BROKER_POSSIBLY_BACKGROUND_SERIALIZED_OBJECT_LIST(DEF_OBJECT_GETTER)
-HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(DEF_OBJECT_GETTER)
-HEAP_BROKER_NEVER_SERIALIZED_OBJECT_LIST(DEF_OBJECT_GETTER)
-#undef DEF_OBJECT_GETTER
-
-JSHeapBroker* ObjectRef::broker() const { return broker_; }
-
-ObjectData* ObjectRef::data() const {
- switch (broker()->mode()) {
- case JSHeapBroker::kDisabled:
- CHECK_NE(data_->kind(), kSerializedHeapObject);
- return data_;
- case JSHeapBroker::kSerializing:
- CHECK_NE(data_->kind(), kUnserializedHeapObject);
- return data_;
- case JSHeapBroker::kSerialized:
-#ifdef DEBUG
- data_->used_status = ObjectData::Usage::kDataUsed;
-#endif // DEBUG
- CHECK_NE(data_->kind(), kUnserializedHeapObject);
- return data_;
- case JSHeapBroker::kRetired:
- UNREACHABLE();
- }
-}
-
-Reduction NoChangeBecauseOfMissingData(JSHeapBroker* broker,
- const char* function, int line) {
- TRACE_MISSING(broker, "data in function " << function << " at line " << line);
- return AdvancedReducer::NoChange();
-}
-
-NativeContextData::NativeContextData(JSHeapBroker* broker, ObjectData** storage,
- Handle<NativeContext> object)
- : ContextData(broker, storage, object),
- state_(State::kUnserialized),
- function_maps_(broker->zone()) {}
-
-void NativeContextData::Serialize(JSHeapBroker* broker) {
- if (state_ != State::kUnserialized) return;
- state_ = State::kSerializedOnMainThread;
-
- TraceScope tracer(broker, this, "NativeContextData::Serialize");
- Handle<NativeContext> context = Handle<NativeContext>::cast(object());
-
-#define SERIALIZE_MEMBER(type, name) \
- DCHECK_NULL(name##_); \
- name##_ = broker->GetOrCreateData(context->name()); \
- if (!name##_->should_access_heap()) { \
- if (name##_->IsMap() && \
- !InstanceTypeChecker::IsContext(name##_->AsMap()->instance_type())) { \
- name##_->AsMap()->SerializeConstructor(broker); \
- } \
- if (name##_->IsJSFunction()) { \
- name##_->AsJSFunction()->Serialize(broker); \
- } \
- }
- BROKER_COMPULSORY_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER)
- if (!broker->is_isolate_bootstrapping()) {
- BROKER_OPTIONAL_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER)
- }
-#undef SERIALIZE_MEMBER
-
- if (!bound_function_with_constructor_map_->should_access_heap()) {
- bound_function_with_constructor_map_->AsMap()->SerializePrototype(broker);
- }
- if (!bound_function_without_constructor_map_->should_access_heap()) {
- bound_function_without_constructor_map_->AsMap()->SerializePrototype(
- broker);
- }
-
- scope_info_ = broker->GetOrCreateData(context->scope_info());
-}
-
-void NativeContextData::SerializeOnBackground(JSHeapBroker* broker) {
- if (state_ == State::kFullySerialized) return;
- DCHECK_EQ(state_, State::kSerializedOnMainThread);
- state_ = State::kSerializedOnMainThread;
-
- UnparkedScopeIfNeeded unparked_scope(broker);
- TraceScope tracer(broker, this, "NativeContextData::SerializeOnBackground");
- Handle<NativeContext> context = Handle<NativeContext>::cast(object());
-
- constexpr auto kAllowed = ObjectRef::BackgroundSerialization::kAllowed;
-#define SERIALIZE_MEMBER(type, name) \
- DCHECK_NULL(name##_); \
- name##_ = broker->GetOrCreateData(context->name(), kAllowed); \
- if (!name##_->should_access_heap()) { \
- DCHECK(!name##_->IsJSFunction()); \
- }
- BROKER_COMPULSORY_BACKGROUND_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER)
- if (!broker->is_isolate_bootstrapping()) {
- BROKER_OPTIONAL_BACKGROUND_NATIVE_CONTEXT_FIELDS(SERIALIZE_MEMBER)
- }
-#undef SERIALIZE_MEMBER
-
- DCHECK(function_maps_.empty());
- int const first = Context::FIRST_FUNCTION_MAP_INDEX;
- int const last = Context::LAST_FUNCTION_MAP_INDEX;
- function_maps_.reserve(last + 1 - first);
- for (int i = first; i <= last; ++i) {
- function_maps_.push_back(
- broker->GetOrCreateData(context->get(i), kAllowed));
- }
-}
-
-void JSFunctionRef::Serialize() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsJSFunction()->Serialize(broker());
-}
-
-void JSFunctionRef::SerializeCodeAndFeedback() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsJSFunction()->SerializeCodeAndFeedback(broker());
-}
-
-bool JSBoundFunctionRef::serialized() const {
- if (data_->should_access_heap()) return true;
- return data()->AsJSBoundFunction()->serialized();
-}
-
-bool JSFunctionRef::serialized() const {
- if (data_->should_access_heap()) return true;
- return data()->AsJSFunction()->serialized();
-}
-
-bool JSFunctionRef::serialized_code_and_feedback() const {
- if (data_->should_access_heap()) return true;
- return data()->AsJSFunction()->serialized_code_and_feedback();
-}
-
-CodeRef JSFunctionRef::code() const {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- return CodeRef(broker(), broker()->CanonicalPersistentHandle(
- object()->code(kAcquireLoad)));
- }
-
- return CodeRef(broker(), ObjectRef::data()->AsJSFunction()->code());
-}
-
-void SharedFunctionInfoRef::SerializeFunctionTemplateInfo() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsSharedFunctionInfo()->SerializeFunctionTemplateInfo(broker());
-}
-
-void SharedFunctionInfoRef::SerializeScopeInfoChain() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsSharedFunctionInfo()->SerializeScopeInfoChain(broker());
-}
-
-base::Optional<FunctionTemplateInfoRef>
-SharedFunctionInfoRef::function_template_info() const {
- if (data_->should_access_heap()) {
- if (object()->IsApiFunction()) {
- ObjectData* data =
- broker()->TryGetOrCreateData(broker()->CanonicalPersistentHandle(
- object()->function_data(kAcquireLoad)));
- if (data == nullptr) return base::nullopt;
- return FunctionTemplateInfoRef(broker(), data, true);
- }
- return base::nullopt;
- }
- ObjectData* function_template_info =
- data()->AsSharedFunctionInfo()->function_template_info();
- if (!function_template_info) return base::nullopt;
- return FunctionTemplateInfoRef(broker(), function_template_info);
-}
-
-int SharedFunctionInfoRef::context_header_size() const {
- IF_ACCESS_FROM_HEAP_C(scope_info().ContextHeaderLength);
- return data()->AsSharedFunctionInfo()->context_header_size();
-}
-
-ScopeInfoRef SharedFunctionInfoRef::scope_info() const {
- if (data_->should_access_heap()) {
- return ScopeInfoRef(
- broker(), broker()->CanonicalPersistentHandle(object()->scope_info()));
- }
- return ScopeInfoRef(broker(), data()->AsSharedFunctionInfo()->scope_info());
-}
-
-void JSObjectRef::SerializeObjectCreateMap() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsJSObject()->SerializeObjectCreateMap(broker());
-}
-
-void MapRef::SerializeOwnDescriptor(InternalIndex descriptor_index) {
- CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsMap()->SerializeOwnDescriptor(broker(), descriptor_index);
-}
-
-bool MapRef::serialized_own_descriptor(InternalIndex descriptor_index) const {
- CHECK_LT(descriptor_index.as_int(), NumberOfOwnDescriptors());
- if (data_->should_access_heap()) return true;
- ObjectData* maybe_desc_array_data = data()->AsMap()->instance_descriptors();
- if (!maybe_desc_array_data) return false;
- if (maybe_desc_array_data->should_access_heap()) return true;
- DescriptorArrayData* desc_array_data =
- maybe_desc_array_data->AsDescriptorArray();
- return desc_array_data->serialized_descriptor(descriptor_index);
-}
-
-void MapRef::SerializeBackPointer() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsMap()->SerializeBackPointer(broker());
-}
-
-void MapRef::SerializePrototype() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsMap()->SerializePrototype(broker());
-}
-
-bool MapRef::serialized_prototype() const {
- if (data_->should_access_heap()) return true;
- CHECK_NE(broker()->mode(), JSHeapBroker::kDisabled);
- return data()->AsMap()->serialized_prototype();
-}
-
-void SourceTextModuleRef::Serialize() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsSourceTextModule()->Serialize(broker());
-}
-
-void NativeContextRef::Serialize() {
- if (data_->should_access_heap()) return;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsNativeContext()->Serialize(broker());
-}
-
-void NativeContextRef::SerializeOnBackground() {
- if (data_->should_access_heap()) return;
- CHECK(broker()->mode() == JSHeapBroker::kSerializing ||
- broker()->mode() == JSHeapBroker::kSerialized);
- data()->AsNativeContext()->SerializeOnBackground(broker());
-}
-
-void JSTypedArrayRef::Serialize() {
- if (data_->should_access_heap() || FLAG_turbo_direct_heap_access) {
- // Even if the typed array object itself is no longer serialized (besides
- // the JSObject parts), the `buffer` field still is and thus we need to
- // make sure to visit it.
- // TODO(jgruber,v8:7790): Remove once JSObject is no longer serialized.
- static_assert(
- std::is_base_of<JSObject, decltype(object()->buffer())>::value, "");
- STATIC_ASSERT(IsSerializedHeapObject<JSObject>());
- JSObjectRef data_ref{
- broker(), broker()->CanonicalPersistentHandle(object()->buffer())};
- } else {
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsJSTypedArray()->Serialize(broker());
- }
-}
-
-bool JSTypedArrayRef::serialized() const {
- CHECK_NE(broker()->mode(), JSHeapBroker::kDisabled);
- return data()->AsJSTypedArray()->serialized();
-}
-
-bool JSTypedArrayRef::ShouldHaveBeenSerialized() const {
- if (FLAG_turbo_direct_heap_access) return false;
- return ObjectRef::ShouldHaveBeenSerialized();
-}
-
-bool JSBoundFunctionRef::Serialize() {
- if (data_->should_access_heap()) return true;
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- return data()->AsJSBoundFunction()->Serialize(broker());
-}
-
-bool PropertyCellRef::Serialize() const {
- if (data_->should_access_heap()) return true;
- CHECK(broker()->mode() == JSHeapBroker::kSerializing ||
- broker()->mode() == JSHeapBroker::kSerialized);
- return data()->AsPropertyCell()->Serialize(broker());
-}
-
-void FunctionTemplateInfoRef::SerializeCallCode() {
- if (data_->should_access_heap()) {
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- // CallHandlerInfo::data may still hold a serialized heap object, so we
- // have to make the broker aware of it.
- // TODO(v8:7790): Remove this case once ObjectRef is never serialized.
- Handle<HeapObject> call_code(object()->call_code(kAcquireLoad),
- broker()->isolate());
- if (call_code->IsCallHandlerInfo()) {
- broker()->GetOrCreateData(
- Handle<CallHandlerInfo>::cast(call_code)->data());
- }
- return;
- }
- CHECK_EQ(broker()->mode(), JSHeapBroker::kSerializing);
- data()->AsFunctionTemplateInfo()->SerializeCallCode(broker());
-}
-
-base::Optional<PropertyCellRef> JSGlobalObjectRef::GetPropertyCell(
- NameRef const& name, SerializationPolicy policy) const {
- if (data_->should_access_heap()) {
- return GetPropertyCellFromHeap(broker(), name.object());
- }
- ObjectData* property_cell_data = data()->AsJSGlobalObject()->GetPropertyCell(
- broker(), name.data(), policy);
- if (property_cell_data == nullptr) return base::nullopt;
- return PropertyCellRef(broker(), property_cell_data);
+bool JSHeapBroker::ObjectMayBeUninitialized(HeapObject object) const {
+ return !IsMainThread() && isolate()->heap()->IsPendingAllocation(object);
}
bool CanInlineElementAccess(MapRef const& map) {
@@ -4942,7 +459,7 @@ ElementAccessFeedback::ElementAccessFeedback(Zone* zone,
bool ElementAccessFeedback::HasOnlyStringMaps(JSHeapBroker* broker) const {
for (auto const& group : transition_groups()) {
for (Handle<Map> map : group) {
- if (!MapRef(broker, map).IsStringMap()) return false;
+ if (!MakeRef(broker, map).IsStringMap()) return false;
}
}
return true;
@@ -5008,6 +525,7 @@ bool JSHeapBroker::FeedbackIsInsufficient(FeedbackSource const& source) const {
}
namespace {
+
// Remove unupdatable and abandoned prototype maps in-place.
void FilterRelevantReceiverMaps(Isolate* isolate, MapHandles* maps) {
auto in = maps->begin();
@@ -5074,6 +592,7 @@ bool HasMigrationTargets(const MapHandles& maps) {
}
return false;
}
+
} // namespace
bool JSHeapBroker::CanUseFeedback(const FeedbackNexus& nexus) const {
@@ -5166,12 +685,12 @@ ProcessedFeedback const& JSHeapBroker::ReadFeedbackForGlobalAccess(
isolate(), target_native_context().script_context_table().object(),
script_context_index);
{
- ObjectRef contents(this,
- handle(context->get(context_slot_index), isolate()));
+ ObjectRef contents =
+ MakeRef(this, handle(context->get(context_slot_index), isolate()));
CHECK(!contents.equals(
- ObjectRef(this, isolate()->factory()->the_hole_value())));
+ MakeRef<Object>(this, isolate()->factory()->the_hole_value())));
}
- ContextRef context_ref(this, context);
+ ContextRef context_ref = MakeRef(this, context);
if (immutable) {
context_ref.get(context_slot_index,
SerializationPolicy::kSerializeIfNeeded);
@@ -5183,11 +702,10 @@ ProcessedFeedback const& JSHeapBroker::ReadFeedbackForGlobalAccess(
CHECK(feedback_value->IsPropertyCell());
// The wanted name belongs (or did belong) to a property on the global
// object and the feedback is the cell holding its value.
- PropertyCellRef cell(this, Handle<PropertyCell>::cast(feedback_value));
- ObjectRef(
- this,
- CanonicalPersistentHandle(
- Handle<PropertyCell>::cast(feedback_value)->value(kAcquireLoad)));
+ PropertyCellRef cell =
+ MakeRef(this, Handle<PropertyCell>::cast(feedback_value));
+ MakeRef(this,
+ Handle<PropertyCell>::cast(feedback_value)->value(kAcquireLoad));
return *zone()->New<GlobalAccessFeedback>(cell, nexus.kind());
}
@@ -5228,7 +746,7 @@ ProcessedFeedback const& JSHeapBroker::ReadFeedbackForInstanceOf(
MaybeHandle<JSObject> maybe_constructor = nexus.GetConstructorFeedback();
Handle<JSObject> constructor;
if (maybe_constructor.ToHandle(&constructor)) {
- optional_constructor = JSObjectRef(this, constructor);
+ optional_constructor = MakeRef(this, constructor);
}
}
return *zone()->New<InstanceOfFeedback>(optional_constructor, nexus.kind());
@@ -5244,7 +762,8 @@ ProcessedFeedback const& JSHeapBroker::ReadFeedbackForArrayOrObjectLiteral(
return NewInsufficientFeedback(nexus.kind());
}
- AllocationSiteRef site(this, handle(object, isolate()));
+ AllocationSiteRef site =
+ MakeRef(this, handle(AllocationSite::cast(object), isolate()));
if (site.IsFastLiteral()) {
site.SerializeBoilerplate();
}
@@ -5262,7 +781,8 @@ ProcessedFeedback const& JSHeapBroker::ReadFeedbackForRegExpLiteral(
return NewInsufficientFeedback(nexus.kind());
}
- RegExpBoilerplateDescriptionRef boilerplate(this, handle(object, isolate()));
+ RegExpBoilerplateDescriptionRef boilerplate = MakeRef(
+ this, handle(RegExpBoilerplateDescription::cast(object), isolate()));
boilerplate.Serialize();
return *zone()->New<RegExpLiteralFeedback>(boilerplate, nexus.kind());
}
@@ -5277,7 +797,7 @@ ProcessedFeedback const& JSHeapBroker::ReadFeedbackForTemplateObject(
return NewInsufficientFeedback(nexus.kind());
}
- JSArrayRef array(this, handle(object, isolate()));
+ JSArrayRef array = MakeRef(this, handle(JSArray::cast(object), isolate()));
return *zone()->New<TemplateObjectFeedback>(array, nexus.kind());
}
@@ -5297,12 +817,14 @@ ProcessedFeedback const& JSHeapBroker::ReadFeedbackForCall(
MaybeObject maybe_target = nexus.GetFeedback();
HeapObject target_object;
if (maybe_target->GetHeapObject(&target_object)) {
- target_ref = HeapObjectRef(this, handle(target_object, isolate()));
+ target_ref = MakeRef(this, handle(target_object, isolate()));
}
}
float frequency = nexus.ComputeCallFrequency();
SpeculationMode mode = nexus.GetSpeculationMode();
- return *zone()->New<CallFeedback>(target_ref, frequency, mode, nexus.kind());
+ CallFeedbackContent content = nexus.GetCallFeedbackContent();
+ return *zone()->New<CallFeedback>(target_ref, frequency, mode, content,
+ nexus.kind());
}
BinaryOperationHint JSHeapBroker::GetFeedbackForBinaryOperation(
@@ -5468,7 +990,7 @@ ElementAccessFeedback const& JSHeapBroker::ProcessFeedbackMapsForElementAccess(
MapHandles possible_transition_targets;
possible_transition_targets.reserve(maps.size());
for (Handle<Map> map : maps) {
- MapRef map_ref(this, map);
+ MapRef map_ref = MakeRef(this, map);
map_ref.SerializeRootMap();
if (CanInlineElementAccess(map_ref) &&
@@ -5531,23 +1053,11 @@ void ElementAccessFeedback::AddGroup(TransitionGroup&& group) {
#endif
}
-std::ostream& operator<<(std::ostream& os, const ObjectRef& ref) {
- if (!FLAG_concurrent_recompilation) {
- // We cannot be in a background thread so it's safe to read the heap.
- AllowHandleDereference allow_handle_dereference;
- return os << ref.data() << " {" << ref.object() << "}";
- } else if (ref.data_->should_access_heap()) {
- return os << ref.data() << " {" << ref.object() << "}";
- } else {
- return os << ref.data();
- }
-}
-
base::Optional<NameRef> JSHeapBroker::GetNameFeedback(
FeedbackNexus const& nexus) {
Name raw_name = nexus.GetName();
if (raw_name.is_null()) return base::nullopt;
- return NameRef(this, handle(raw_name, isolate()));
+ return MakeRef(this, handle(raw_name, isolate()));
}
PropertyAccessInfo JSHeapBroker::GetPropertyAccessInfo(
@@ -5557,7 +1067,8 @@ PropertyAccessInfo JSHeapBroker::GetPropertyAccessInfo(
auto it = property_access_infos_.find(target);
if (it != property_access_infos_.end()) return it->second;
- if (policy == SerializationPolicy::kAssumeSerialized) {
+ if (policy == SerializationPolicy::kAssumeSerialized &&
+ !FLAG_turbo_concurrent_get_property_access_info) {
TRACE_BROKER_MISSING(this, "PropertyAccessInfo for "
<< access_mode << " of property " << name
<< " on map " << map);
@@ -5569,7 +1080,8 @@ PropertyAccessInfo JSHeapBroker::GetPropertyAccessInfo(
PropertyAccessInfo access_info = factory.ComputePropertyAccessInfo(
map.object(), name.object(), access_mode);
if (is_concurrent_inlining_) {
- CHECK_EQ(mode(), kSerializing);
+ CHECK_IMPLIES(!FLAG_turbo_concurrent_get_property_access_info,
+ mode() == kSerializing);
TRACE(this, "Storing PropertyAccessInfo for "
<< access_mode << " of property " << name << " on map "
<< map);
@@ -5664,27 +1176,7 @@ TemplateObjectFeedback const& ProcessedFeedback::AsTemplateObject() const {
return *static_cast<TemplateObjectFeedback const*>(this);
}
-unsigned CodeRef::GetInlinedBytecodeSize() const {
- if (data_->should_access_heap()) {
- unsigned value = object()->inlined_bytecode_size();
- if (value > 0) {
- // Don't report inlined bytecode size if the code object was already
- // deoptimized.
- value = object()->marked_for_deoptimization() ? 0 : value;
- }
- return value;
- }
-
- return ObjectRef::data()->AsCode()->inlined_bytecode_size();
-}
-
-#undef BIMODAL_ACCESSOR
-#undef BIMODAL_ACCESSOR_B
-#undef BIMODAL_ACCESSOR_C
-#undef IF_ACCESS_FROM_HEAP
-#undef IF_ACCESS_FROM_HEAP_C
#undef TRACE
-#undef TRACE_MISSING
} // namespace compiler
} // namespace internal
diff --git a/deps/v8/src/compiler/js-heap-broker.h b/deps/v8/src/compiler/js-heap-broker.h
index 32b09dddbc..cc842ca8e6 100644
--- a/deps/v8/src/compiler/js-heap-broker.h
+++ b/deps/v8/src/compiler/js-heap-broker.h
@@ -7,10 +7,12 @@
#include "src/base/compiler-specific.h"
#include "src/base/optional.h"
+#include "src/base/platform/mutex.h"
#include "src/common/globals.h"
#include "src/compiler/access-info.h"
#include "src/compiler/feedback-source.h"
#include "src/compiler/globals.h"
+#include "src/compiler/heap-refs.h"
#include "src/compiler/processed-feedback.h"
#include "src/compiler/refs-map.h"
#include "src/compiler/serializer-hints.h"
@@ -78,6 +80,18 @@ struct PropertyAccessTarget {
};
};
+enum GetOrCreateDataFlag {
+ // If set, a failure to create the data object results in a crash.
+ kCrashOnError = 1 << 0,
+ // If set, data construction assumes that the given object is protected by
+ // a memory fence (e.g. acquire-release) and thus fields required for
+ // construction (like Object::map) are safe to read. The protection can
+ // extend to some other situations as well.
+ kAssumeMemoryFence = 1 << 1,
+};
+using GetOrCreateDataFlags = base::Flags<GetOrCreateDataFlag>;
+DEFINE_OPERATORS_FOR_FLAGS(GetOrCreateDataFlags)
+
class V8_EXPORT_PRIVATE JSHeapBroker {
public:
JSHeapBroker(Isolate* isolate, Zone* broker_zone, bool tracing_enabled,
@@ -98,7 +112,7 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
}
void SetTargetNativeContextRef(Handle<NativeContext> native_context);
- void InitializeAndStartSerializing(Handle<NativeContext> native_context);
+ void InitializeAndStartSerializing();
Isolate* isolate() const { return isolate_; }
Zone* zone() const { return zone_; }
@@ -106,7 +120,8 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
bool is_concurrent_inlining() const { return is_concurrent_inlining_; }
bool is_isolate_bootstrapping() const { return is_isolate_bootstrapping_; }
bool is_native_context_independent() const {
- return code_kind_ == CodeKind::NATIVE_CONTEXT_INDEPENDENT;
+ // TODO(jgruber,v8:8888): Remove dependent code.
+ return false;
}
bool generate_full_feedback_collection() const {
// NCI code currently collects full feedback.
@@ -145,29 +160,25 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
void PrintRefsAnalysis() const;
#endif // DEBUG
- // Retruns the handle from root index table for read only heap objects.
+ // Returns the handle from root index table for read only heap objects.
Handle<Object> GetRootHandle(Object object);
// Never returns nullptr.
- ObjectData* GetOrCreateData(
- Handle<Object>,
- ObjectRef::BackgroundSerialization background_serialization =
- ObjectRef::BackgroundSerialization::kDisallowed);
- // Like the previous but wraps argument in handle first (for convenience).
- ObjectData* GetOrCreateData(
- Object, ObjectRef::BackgroundSerialization background_serialization =
- ObjectRef::BackgroundSerialization::kDisallowed);
+ ObjectData* GetOrCreateData(Handle<Object> object,
+ GetOrCreateDataFlags flags = {});
+ ObjectData* GetOrCreateData(Object object, GetOrCreateDataFlags flags = {});
// Gets data only if we have it. However, thin wrappers will be created for
// smis, read-only objects and never-serialized objects.
- ObjectData* TryGetOrCreateData(
- Handle<Object>, bool crash_on_error = false,
- ObjectRef::BackgroundSerialization background_serialization =
- ObjectRef::BackgroundSerialization::kDisallowed);
+ ObjectData* TryGetOrCreateData(Handle<Object> object,
+ GetOrCreateDataFlags flags = {});
+ ObjectData* TryGetOrCreateData(Object object,
+ GetOrCreateDataFlags flags = {});
// Check if {object} is any native context's %ArrayPrototype% or
// %ObjectPrototype%.
bool IsArrayOrObjectPrototype(const JSObjectRef& object) const;
+ bool IsArrayOrObjectPrototype(Handle<JSObject> object) const;
bool HasFeedback(FeedbackSource const& source) const;
void SetFeedback(FeedbackSource const& source,
@@ -240,6 +251,25 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
FeedbackSource const& source,
SerializationPolicy policy = SerializationPolicy::kAssumeSerialized);
+ // Used to separate the problem of a concurrent GetPropertyAccessInfo (GPAI)
+ // from serialization. GPAI is currently called both during the serialization
+ // phase, and on the background thread. While some crucial objects (like
+ // JSObject) still must be serialized, we do the following:
+ // - Run GPAI during serialization to discover and serialize required objects.
+ // - After the serialization phase, clear cached property access infos.
+ // - On the background thread, rerun GPAI in a concurrent setting. The cache
+ // has been cleared, thus the actual logic runs again.
+ // Once all required object kinds no longer require serialization, this
+ // should be removed together with all GPAI calls during serialization.
+ void ClearCachedPropertyAccessInfos() {
+ CHECK(FLAG_turbo_concurrent_get_property_access_info);
+ property_access_infos_.clear();
+ }
+
+ // As above, clear cached ObjectData that can be reconstructed, i.e. is
+ // either never-serialized or background-serialized.
+ void ClearReconstructibleData();
+
StringRef GetTypedArrayStringTag(ElementsKind kind);
bool ShouldBeSerializedForCompilation(const SharedFunctionInfoRef& shared,
@@ -257,6 +287,14 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
LocalIsolate* local_isolate() const { return local_isolate_; }
+ // TODO(jgruber): Consider always having local_isolate_ set to a real value.
+ // This seems not entirely trivial since we currently reset local_isolate_ to
+ // nullptr at some point in the JSHeapBroker lifecycle.
+ LocalIsolate* local_isolate_or_isolate() const {
+ return local_isolate() != nullptr ? local_isolate()
+ : isolate()->AsLocalIsolate();
+ }
+
// Return the corresponding canonical persistent handle for {object}. Create
// one if it does not exist.
// If we have the canonical map, we can create the canonical & persistent
@@ -291,6 +329,7 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
template <typename T>
Handle<T> CanonicalPersistentHandle(Handle<T> object) {
+ if (object.is_null()) return object; // Can't deref a null handle.
return CanonicalPersistentHandle<T>(*object);
}
@@ -313,6 +352,34 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
RootIndexMap const& root_index_map() { return root_index_map_; }
+ // Locks {mutex} through the duration of this scope iff it is the first
+ // occurrence. This is done to have a recursive shared lock on {mutex}.
+ class V8_NODISCARD MapUpdaterGuardIfNeeded final {
+ public:
+ explicit MapUpdaterGuardIfNeeded(JSHeapBroker* ptr,
+ base::SharedMutex* mutex)
+ : ptr_(ptr),
+ initial_map_updater_mutex_depth_(ptr->map_updater_mutex_depth_),
+ shared_mutex(mutex, should_lock()) {
+ ptr_->map_updater_mutex_depth_++;
+ }
+
+ ~MapUpdaterGuardIfNeeded() {
+ ptr_->map_updater_mutex_depth_--;
+ DCHECK_EQ(initial_map_updater_mutex_depth_,
+ ptr_->map_updater_mutex_depth_);
+ }
+
+ // Whether the MapUpdater mutex should be physically locked (if not, we
+ // already hold the lock).
+ bool should_lock() const { return initial_map_updater_mutex_depth_ == 0; }
+
+ private:
+ JSHeapBroker* const ptr_;
+ const int initial_map_updater_mutex_depth_;
+ base::SharedMutexGuardIf<base::kShared> shared_mutex;
+ };
+
private:
friend class HeapObjectRef;
friend class ObjectRef;
@@ -323,6 +390,7 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
// thus safe to read from a memory safety perspective. The converse does not
// necessarily hold.
bool ObjectMayBeUninitialized(Handle<Object> object) const;
+ bool ObjectMayBeUninitialized(HeapObject object) const;
bool CanUseFeedback(const FeedbackNexus& nexus) const;
const ProcessedFeedback& NewInsufficientFeedback(FeedbackSlotKind kind) const;
@@ -427,9 +495,19 @@ class V8_EXPORT_PRIVATE JSHeapBroker {
};
ZoneMultimap<SerializedFunction, HintsVector> serialized_functions_;
- static const size_t kMaxSerializedFunctionsCacheSize = 200;
- static const uint32_t kMinimalRefsBucketCount = 8; // must be power of 2
- static const uint32_t kInitialRefsBucketCount = 1024; // must be power of 2
+ // The MapUpdater mutex is used in recursive patterns; for example,
+ // ComputePropertyAccessInfo may call itself recursively. Thus we need to
+ // emulate a recursive mutex, which we do by checking if this heap broker
+ // instance already holds the mutex when a lock is requested. This field
+ // holds the locking depth, i.e. how many times the mutex has been
+ // recursively locked. Only the outermost locker actually locks underneath.
+ int map_updater_mutex_depth_ = 0;
+
+ static constexpr size_t kMaxSerializedFunctionsCacheSize = 200;
+ static constexpr uint32_t kMinimalRefsBucketCount = 8;
+ STATIC_ASSERT(base::bits::IsPowerOfTwo(kMinimalRefsBucketCount));
+ static constexpr uint32_t kInitialRefsBucketCount = 1024;
+ STATIC_ASSERT(base::bits::IsPowerOfTwo(kInitialRefsBucketCount));
};
class V8_NODISCARD TraceScope {
@@ -490,6 +568,65 @@ class V8_NODISCARD UnparkedScopeIfNeeded {
base::Optional<UnparkedScope> unparked_scope;
};
+// Usage:
+//
+// base::Optional<FooRef> ref = TryMakeRef(broker, o);
+// if (!ref.has_value()) return {}; // bailout
+//
+// or
+//
+// FooRef ref = MakeRef(broker, o);
+template <class T,
+ typename = std::enable_if_t<std::is_convertible<T*, Object*>::value>>
+base::Optional<typename ref_traits<T>::ref_type> TryMakeRef(
+ JSHeapBroker* broker, T object, GetOrCreateDataFlags flags = {}) {
+ ObjectData* data = broker->TryGetOrCreateData(object, flags);
+ if (data == nullptr) {
+ TRACE_BROKER_MISSING(broker, "ObjectData for " << Brief(object));
+ return {};
+ }
+ return {typename ref_traits<T>::ref_type(broker, data)};
+}
+
+template <class T,
+ typename = std::enable_if_t<std::is_convertible<T*, Object*>::value>>
+base::Optional<typename ref_traits<T>::ref_type> TryMakeRef(
+ JSHeapBroker* broker, Handle<T> object, GetOrCreateDataFlags flags = {}) {
+ ObjectData* data = broker->TryGetOrCreateData(object, flags);
+ if (data == nullptr) {
+ TRACE_BROKER_MISSING(broker, "ObjectData for " << Brief(*object));
+ return {};
+ }
+ return {typename ref_traits<T>::ref_type(broker, data)};
+}
+
+template <class T,
+ typename = std::enable_if_t<std::is_convertible<T*, Object*>::value>>
+typename ref_traits<T>::ref_type MakeRef(JSHeapBroker* broker, T object) {
+ return TryMakeRef(broker, object).value();
+}
+
+template <class T,
+ typename = std::enable_if_t<std::is_convertible<T*, Object*>::value>>
+typename ref_traits<T>::ref_type MakeRef(JSHeapBroker* broker,
+ Handle<T> object) {
+ return TryMakeRef(broker, object).value();
+}
+
+template <class T,
+ typename = std::enable_if_t<std::is_convertible<T*, Object*>::value>>
+typename ref_traits<T>::ref_type MakeRefAssumeMemoryFence(JSHeapBroker* broker,
+ T object) {
+ return TryMakeRef(broker, object, kAssumeMemoryFence).value();
+}
+
+template <class T,
+ typename = std::enable_if_t<std::is_convertible<T*, Object*>::value>>
+typename ref_traits<T>::ref_type MakeRefAssumeMemoryFence(JSHeapBroker* broker,
+ Handle<T> object) {
+ return TryMakeRef(broker, object, kAssumeMemoryFence).value();
+}
+
} // namespace compiler
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/compiler/js-heap-copy-reducer.cc b/deps/v8/src/compiler/js-heap-copy-reducer.cc
index 3b45b9d82b..b8f6274741 100644
--- a/deps/v8/src/compiler/js-heap-copy-reducer.cc
+++ b/deps/v8/src/compiler/js-heap-copy-reducer.cc
@@ -28,7 +28,7 @@ JSHeapBroker* JSHeapCopyReducer::broker() { return broker_; }
Reduction JSHeapCopyReducer::Reduce(Node* node) {
switch (node->opcode()) {
case IrOpcode::kCheckClosure: {
- FeedbackCellRef cell(broker(), FeedbackCellOf(node->op()));
+ FeedbackCellRef cell = MakeRef(broker(), FeedbackCellOf(node->op()));
base::Optional<FeedbackVectorRef> feedback_vector = cell.value();
if (feedback_vector.has_value()) {
feedback_vector->Serialize();
@@ -36,7 +36,7 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
break;
}
case IrOpcode::kHeapConstant: {
- ObjectRef object(broker(), HeapConstantOf(node->op()));
+ ObjectRef object = MakeRef(broker(), HeapConstantOf(node->op()));
if (object.IsJSFunction()) object.AsJSFunction().Serialize();
if (object.IsJSObject()) {
object.AsJSObject().SerializeObjectCreateMap();
@@ -49,34 +49,33 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
case IrOpcode::kJSCreateArray: {
CreateArrayParameters const& p = CreateArrayParametersOf(node->op());
Handle<AllocationSite> site;
- if (p.site().ToHandle(&site)) AllocationSiteRef(broker(), site);
+ if (p.site().ToHandle(&site)) MakeRef(broker(), site);
break;
}
case IrOpcode::kJSCreateArguments: {
Node* const frame_state = NodeProperties::GetFrameStateInput(node);
FrameStateInfo state_info = FrameStateInfoOf(frame_state->op());
- SharedFunctionInfoRef shared(broker(),
- state_info.shared_info().ToHandleChecked());
+ MakeRef(broker(), state_info.shared_info().ToHandleChecked());
break;
}
case IrOpcode::kJSCreateBlockContext: {
- ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
+ MakeRef(broker(), ScopeInfoOf(node->op()));
break;
}
case IrOpcode::kJSCreateBoundFunction: {
CreateBoundFunctionParameters const& p =
CreateBoundFunctionParametersOf(node->op());
- MapRef(broker(), p.map());
+ MakeRef(broker(), p.map());
break;
}
case IrOpcode::kJSCreateCatchContext: {
- ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
+ MakeRef(broker(), ScopeInfoOf(node->op()));
break;
}
case IrOpcode::kJSCreateClosure: {
CreateClosureParameters const& p = CreateClosureParametersOf(node->op());
- SharedFunctionInfoRef(broker(), p.shared_info());
- HeapObjectRef(broker(), p.code());
+ MakeRef(broker(), p.shared_info());
+ MakeRef(broker(), p.code());
break;
}
case IrOpcode::kJSCreateEmptyLiteralArray: {
@@ -133,7 +132,7 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
case IrOpcode::kJSCreateFunctionContext: {
CreateFunctionContextParameters const& p =
CreateFunctionContextParametersOf(node->op());
- ScopeInfoRef(broker(), p.scope_info());
+ MakeRef(broker(), p.scope_info());
break;
}
case IrOpcode::kJSCreateLiteralArray:
@@ -154,18 +153,18 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
case IrOpcode::kJSGetTemplateObject: {
GetTemplateObjectParameters const& p =
GetTemplateObjectParametersOf(node->op());
- SharedFunctionInfoRef(broker(), p.shared());
- TemplateObjectDescriptionRef(broker(), p.description());
+ MakeRef(broker(), p.shared());
+ MakeRef(broker(), p.description());
broker()->ProcessFeedbackForTemplateObject(p.feedback());
break;
}
case IrOpcode::kJSCreateWithContext: {
- ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
+ MakeRef(broker(), ScopeInfoOf(node->op()));
break;
}
case IrOpcode::kJSLoadNamed: {
NamedAccess const& p = NamedAccessOf(node->op());
- NameRef name(broker(), p.name());
+ NameRef name = MakeRef(broker(), p.name());
if (p.feedback().IsValid()) {
broker()->ProcessFeedbackForPropertyAccess(p.feedback(),
AccessMode::kLoad, name);
@@ -174,7 +173,7 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
}
case IrOpcode::kJSLoadNamedFromSuper: {
NamedAccess const& p = NamedAccessOf(node->op());
- NameRef name(broker(), p.name());
+ NameRef name = MakeRef(broker(), p.name());
if (p.feedback().IsValid()) {
broker()->ProcessFeedbackForPropertyAccess(p.feedback(),
AccessMode::kLoad, name);
@@ -183,7 +182,7 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
}
case IrOpcode::kJSStoreNamed: {
NamedAccess const& p = NamedAccessOf(node->op());
- NameRef name(broker(), p.name());
+ MakeRef(broker(), p.name());
break;
}
case IrOpcode::kStoreField:
@@ -191,32 +190,32 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
FieldAccess access = FieldAccessOf(node->op());
Handle<Map> map_handle;
if (access.map.ToHandle(&map_handle)) {
- MapRef(broker(), map_handle);
+ MakeRef(broker(), map_handle);
}
Handle<Name> name_handle;
if (access.name.ToHandle(&name_handle)) {
- NameRef(broker(), name_handle);
+ MakeRef(broker(), name_handle);
}
break;
}
case IrOpcode::kMapGuard: {
ZoneHandleSet<Map> const& maps = MapGuardMapsOf(node->op());
for (Handle<Map> map : maps) {
- MapRef(broker(), map);
+ MakeRef(broker(), map);
}
break;
}
case IrOpcode::kCheckMaps: {
ZoneHandleSet<Map> const& maps = CheckMapsParametersOf(node->op()).maps();
for (Handle<Map> map : maps) {
- MapRef(broker(), map);
+ MakeRef(broker(), map);
}
break;
}
case IrOpcode::kCompareMaps: {
ZoneHandleSet<Map> const& maps = CompareMapsParametersOf(node->op());
for (Handle<Map> map : maps) {
- MapRef(broker(), map);
+ MakeRef(broker(), map);
}
break;
}
diff --git a/deps/v8/src/compiler/js-inlining-heuristic.cc b/deps/v8/src/compiler/js-inlining-heuristic.cc
index 5777719107..8115f8e565 100644
--- a/deps/v8/src/compiler/js-inlining-heuristic.cc
+++ b/deps/v8/src/compiler/js-inlining-heuristic.cc
@@ -110,7 +110,7 @@ JSInliningHeuristic::Candidate JSInliningHeuristic::CollectFunctions(
}
if (m.IsCheckClosure()) {
DCHECK(!out.functions[0].has_value());
- FeedbackCellRef feedback_cell(broker(), FeedbackCellOf(m.op()));
+ FeedbackCellRef feedback_cell = MakeRef(broker(), FeedbackCellOf(m.op()));
SharedFunctionInfoRef shared_info = *feedback_cell.shared_function_info();
out.shared_info = shared_info;
if (CanConsiderForInlining(broker(), shared_info, *feedback_cell.value())) {
@@ -124,7 +124,7 @@ JSInliningHeuristic::Candidate JSInliningHeuristic::CollectFunctions(
JSCreateClosureNode n(callee);
CreateClosureParameters const& p = n.Parameters();
FeedbackCellRef feedback_cell = n.GetFeedbackCellRefChecked(broker());
- SharedFunctionInfoRef shared_info(broker(), p.shared_info());
+ SharedFunctionInfoRef shared_info = MakeRef(broker(), p.shared_info());
out.shared_info = shared_info;
if (feedback_cell.value().has_value() &&
CanConsiderForInlining(broker(), shared_info, *feedback_cell.value())) {
diff --git a/deps/v8/src/compiler/js-inlining.cc b/deps/v8/src/compiler/js-inlining.cc
index 6e64f2b677..e55efde5d8 100644
--- a/deps/v8/src/compiler/js-inlining.cc
+++ b/deps/v8/src/compiler/js-inlining.cc
@@ -335,7 +335,7 @@ base::Optional<SharedFunctionInfoRef> JSInliner::DetermineCallTarget(
FeedbackCellRef cell = n.GetFeedbackCellRefChecked(broker());
return cell.shared_function_info();
} else if (match.IsCheckClosure()) {
- FeedbackCellRef cell(broker(), FeedbackCellOf(match.op()));
+ FeedbackCellRef cell = MakeRef(broker(), FeedbackCellOf(match.op()));
return cell.shared_function_info();
}
@@ -373,7 +373,7 @@ FeedbackCellRef JSInliner::DetermineCallContext(Node* node,
*context_out = NodeProperties::GetContextInput(match.node());
return cell;
} else if (match.IsCheckClosure()) {
- FeedbackCellRef cell(broker(), FeedbackCellOf(match.op()));
+ FeedbackCellRef cell = MakeRef(broker(), FeedbackCellOf(match.op()));
Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node);
@@ -475,7 +475,8 @@ Reduction JSInliner::ReduceJSCall(Node* node) {
if (!shared_info.has_value()) return NoChange();
DCHECK(shared_info->IsInlineable());
- SharedFunctionInfoRef outer_shared_info(broker(), info_->shared_info());
+ SharedFunctionInfoRef outer_shared_info =
+ MakeRef(broker(), info_->shared_info());
// Constructor must be constructable.
if (node->opcode() == IrOpcode::kJSConstruct &&
diff --git a/deps/v8/src/compiler/js-intrinsic-lowering.cc b/deps/v8/src/compiler/js-intrinsic-lowering.cc
index 449136051b..803d55cc27 100644
--- a/deps/v8/src/compiler/js-intrinsic-lowering.cc
+++ b/deps/v8/src/compiler/js-intrinsic-lowering.cc
@@ -30,11 +30,15 @@ Reduction JSIntrinsicLowering::Reduce(Node* node) {
if (node->opcode() != IrOpcode::kJSCallRuntime) return NoChange();
const Runtime::Function* const f =
Runtime::FunctionForId(CallRuntimeParametersOf(node->op()).id());
- if (f->function_id == Runtime::kTurbofanStaticAssert) {
- return ReduceTurbofanStaticAssert(node);
- }
- if (f->function_id == Runtime::kIsBeingInterpreted) {
- return ReduceIsBeingInterpreted(node);
+ switch (f->function_id) {
+ case Runtime::kIsBeingInterpreted:
+ return ReduceIsBeingInterpreted(node);
+ case Runtime::kTurbofanStaticAssert:
+ return ReduceTurbofanStaticAssert(node);
+ case Runtime::kVerifyType:
+ return ReduceVerifyType(node);
+ default:
+ break;
}
if (f->intrinsic_type != Runtime::IntrinsicType::INLINE) return NoChange();
switch (f->function_id) {
@@ -80,8 +84,6 @@ Reduction JSIntrinsicLowering::Reduce(Node* node) {
return ReduceToLength(node);
case Runtime::kInlineToObject:
return ReduceToObject(node);
- case Runtime::kInlineToString:
- return ReduceToString(node);
case Runtime::kInlineCall:
return ReduceCall(node);
case Runtime::kInlineIncBlockCounter:
@@ -290,6 +292,10 @@ Reduction JSIntrinsicLowering::ReduceTurbofanStaticAssert(Node* node) {
return Changed(jsgraph_->UndefinedConstant());
}
+Reduction JSIntrinsicLowering::ReduceVerifyType(Node* node) {
+ return Change(node, simplified()->VerifyType());
+}
+
Reduction JSIntrinsicLowering::ReduceIsBeingInterpreted(Node* node) {
RelaxEffectsAndControls(node);
return Changed(jsgraph_->FalseConstant());
diff --git a/deps/v8/src/compiler/js-intrinsic-lowering.h b/deps/v8/src/compiler/js-intrinsic-lowering.h
index 3deeb5685e..f2d4dbccf2 100644
--- a/deps/v8/src/compiler/js-intrinsic-lowering.h
+++ b/deps/v8/src/compiler/js-intrinsic-lowering.h
@@ -60,6 +60,7 @@ class V8_EXPORT_PRIVATE JSIntrinsicLowering final
Reduction ReduceIsSmi(Node* node);
Reduction ReduceIsBeingInterpreted(Node* node);
Reduction ReduceTurbofanStaticAssert(Node* node);
+ Reduction ReduceVerifyType(Node* node);
Reduction ReduceToLength(Node* node);
Reduction ReduceToObject(Node* node);
Reduction ReduceToString(Node* node);
diff --git a/deps/v8/src/compiler/js-native-context-specialization.cc b/deps/v8/src/compiler/js-native-context-specialization.cc
index 3d9290a0bf..8c372d3453 100644
--- a/deps/v8/src/compiler/js-native-context-specialization.cc
+++ b/deps/v8/src/compiler/js-native-context-specialization.cc
@@ -10,6 +10,7 @@
#include "src/codegen/string-constants.h"
#include "src/compiler/access-builder.h"
#include "src/compiler/access-info.h"
+#include "src/compiler/allocation-builder-inl.h"
#include "src/compiler/allocation-builder.h"
#include "src/compiler/compilation-dependencies.h"
#include "src/compiler/js-graph.h"
@@ -20,7 +21,6 @@
#include "src/compiler/property-access-builder.h"
#include "src/compiler/type-cache.h"
#include "src/execution/isolate-inl.h"
-#include "src/numbers/dtoa.h"
#include "src/objects/feedback-vector.h"
#include "src/objects/field-index-inl.h"
#include "src/objects/heap-number.h"
@@ -36,7 +36,7 @@ namespace {
bool HasNumberMaps(JSHeapBroker* broker, ZoneVector<Handle<Map>> const& maps) {
for (auto map : maps) {
- MapRef map_ref(broker, map);
+ MapRef map_ref = MakeRef(broker, map);
if (map_ref.IsHeapNumberMap()) return true;
}
return false;
@@ -45,7 +45,7 @@ bool HasNumberMaps(JSHeapBroker* broker, ZoneVector<Handle<Map>> const& maps) {
bool HasOnlyJSArrayMaps(JSHeapBroker* broker,
ZoneVector<Handle<Map>> const& maps) {
for (auto map : maps) {
- MapRef map_ref(broker, map);
+ MapRef map_ref = MakeRef(broker, map);
if (!map_ref.IsJSArrayMap()) return false;
}
return true;
@@ -139,7 +139,7 @@ base::Optional<size_t> JSNativeContextSpecialization::GetMaxStringLength(
NumberMatcher number_matcher(node);
if (number_matcher.HasResolvedValue()) {
- return kBase10MaximalLength + 1;
+ return kMaxDoubleStringLength;
}
// We don't support objects with possibly monkey-patched prototype.toString
@@ -228,12 +228,17 @@ Reduction JSNativeContextSpecialization::ReduceJSAsyncFunctionEnter(
// Create the JSAsyncFunctionObject based on the SharedFunctionInfo
// extracted from the top-most frame in {frame_state}.
- SharedFunctionInfoRef shared(
+ SharedFunctionInfoRef shared = MakeRef(
broker(),
FrameStateInfoOf(frame_state->op()).shared_info().ToHandleChecked());
DCHECK(shared.is_compiled());
int register_count = shared.internal_formal_parameter_count() +
shared.GetBytecodeArray().register_count();
+ MapRef fixed_array_map = MakeRef(broker(), factory()->fixed_array_map());
+ AllocationBuilder ab(jsgraph(), effect, control);
+ if (!ab.CanAllocateArray(register_count, fixed_array_map)) {
+ return NoChange();
+ }
Node* value = effect =
graph()->NewNode(javascript()->CreateAsyncFunctionObject(register_count),
closure, receiver, promise, context, effect, control);
@@ -359,19 +364,15 @@ Reduction JSNativeContextSpecialization::ReduceJSGetSuperConstructor(
}
JSFunctionRef function = m.Ref(broker()).AsJSFunction();
MapRef function_map = function.map();
- if (function_map.ShouldHaveBeenSerialized() &&
- !function_map.serialized_prototype()) {
- TRACE_BROKER_MISSING(broker(), "data for map " << function_map);
- return NoChange();
- }
- HeapObjectRef function_prototype = function_map.prototype();
+ base::Optional<HeapObjectRef> function_prototype = function_map.prototype();
+ if (!function_prototype.has_value()) return NoChange();
// We can constant-fold the super constructor access if the
// {function}s map is stable, i.e. we can use a code dependency
// to guard against [[Prototype]] changes of {function}.
if (function_map.is_stable()) {
dependencies()->DependOnStableMap(function_map);
- Node* value = jsgraph()->Constant(function_prototype);
+ Node* value = jsgraph()->Constant(*function_prototype);
ReplaceWithValue(node, value);
return Replace(value);
}
@@ -407,15 +408,15 @@ Reduction JSNativeContextSpecialization::ReduceJSInstanceOf(Node* node) {
return NoChange();
}
- JSObjectRef receiver_ref(broker(), receiver);
+ JSObjectRef receiver_ref = MakeRef(broker(), receiver);
MapRef receiver_map = receiver_ref.map();
PropertyAccessInfo access_info = PropertyAccessInfo::Invalid(graph()->zone());
if (broker()->is_concurrent_inlining()) {
access_info = broker()->GetPropertyAccessInfo(
receiver_map,
- NameRef(broker(), isolate()->factory()->has_instance_symbol()),
- AccessMode::kLoad);
+ MakeRef(broker(), isolate()->factory()->has_instance_symbol()),
+ AccessMode::kLoad, dependencies());
} else {
AccessInfoFactory access_info_factory(broker(), dependencies(),
graph()->zone());
@@ -457,7 +458,7 @@ Reduction JSNativeContextSpecialization::ReduceJSInstanceOf(Node* node) {
Handle<JSObject> holder;
bool found_on_proto = access_info.holder().ToHandle(&holder);
JSObjectRef holder_ref =
- found_on_proto ? JSObjectRef(broker(), holder) : receiver_ref;
+ found_on_proto ? MakeRef(broker(), holder) : receiver_ref;
base::Optional<ObjectRef> constant = holder_ref.GetOwnFastDataProperty(
access_info.field_representation(), access_info.field_index());
if (!constant.has_value() || !constant->IsHeapObject() ||
@@ -467,7 +468,7 @@ Reduction JSNativeContextSpecialization::ReduceJSInstanceOf(Node* node) {
if (found_on_proto) {
dependencies()->DependOnStablePrototypeChains(
access_info.lookup_start_object_maps(), kStartAtPrototype,
- JSObjectRef(broker(), holder));
+ MakeRef(broker(), holder));
}
// Check that {constructor} is actually {receiver}.
@@ -535,7 +536,7 @@ JSNativeContextSpecialization::InferHasInPrototypeChain(
bool all = true;
bool none = true;
for (size_t i = 0; i < receiver_maps.size(); ++i) {
- MapRef map(broker(), receiver_maps[i]);
+ MapRef map = MakeRef(broker(), receiver_maps[i]);
if (result == NodeProperties::kUnreliableMaps && !map.is_stable()) {
return kMayBeInPrototypeChain;
}
@@ -547,15 +548,13 @@ JSNativeContextSpecialization::InferHasInPrototypeChain(
all = false;
break;
}
- if (map.ShouldHaveBeenSerialized() && !map.serialized_prototype()) {
- TRACE_BROKER_MISSING(broker(), "prototype data for map " << map);
- return kMayBeInPrototypeChain;
- }
- if (map.prototype().equals(prototype)) {
+ base::Optional<HeapObjectRef> map_prototype = map.prototype();
+ if (!map_prototype.has_value()) return kMayBeInPrototypeChain;
+ if (map_prototype->equals(prototype)) {
none = false;
break;
}
- map = map.prototype().map();
+ map = map_prototype->map();
// TODO(v8:11457) Support dictionary mode protoypes here.
if (!map.is_stable() || map.is_dictionary_map())
return kMayBeInPrototypeChain;
@@ -628,10 +627,7 @@ Reduction JSNativeContextSpecialization::ReduceJSOrdinaryHasInstance(
// OrdinaryHasInstance on bound functions turns into a recursive invocation
// of the instanceof operator again.
JSBoundFunctionRef function = m.Ref(broker()).AsJSBoundFunction();
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(), "data for JSBoundFunction " << function);
- return NoChange();
- }
+ if (!function.serialized()) return NoChange();
JSReceiverRef bound_target_function = function.bound_target_function();
@@ -651,10 +647,7 @@ Reduction JSNativeContextSpecialization::ReduceJSOrdinaryHasInstance(
// Optimize if we currently know the "prototype" property.
JSFunctionRef function = m.Ref(broker()).AsJSFunction();
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(), "data for JSFunction " << function);
- return NoChange();
- }
+ if (!function.serialized()) return NoChange();
// TODO(neis): Remove the has_prototype_slot condition once the broker is
// always enabled.
@@ -736,10 +729,10 @@ Reduction JSNativeContextSpecialization::ReduceJSResolvePromise(Node* node) {
} else {
// Obtain pre-computed access infos from the broker.
for (auto map : resolution_maps) {
- MapRef map_ref(broker(), map);
+ MapRef map_ref = MakeRef(broker(), map);
access_infos.push_back(broker()->GetPropertyAccessInfo(
- map_ref, NameRef(broker(), isolate()->factory()->then_string()),
- AccessMode::kLoad));
+ map_ref, MakeRef(broker(), isolate()->factory()->then_string()),
+ AccessMode::kLoad, dependencies()));
}
}
PropertyAccessInfo access_info =
@@ -865,7 +858,7 @@ Reduction JSNativeContextSpecialization::ReduceGlobalAccess(
simplified()->CheckMaps(
CheckMapsFlag::kNone,
ZoneHandleSet<Map>(
- HeapObjectRef(broker(), global_proxy()).map().object())),
+ MakeRef(broker(), global_proxy()).map().object())),
lookup_start_object, effect, control);
}
@@ -1035,7 +1028,7 @@ Reduction JSNativeContextSpecialization::ReduceJSLoadGlobal(Node* node) {
return Replace(value);
} else if (feedback.IsPropertyCell()) {
return ReduceGlobalAccess(node, nullptr, nullptr, nullptr,
- NameRef(broker(), p.name()), AccessMode::kLoad,
+ MakeRef(broker(), p.name()), AccessMode::kLoad,
nullptr, feedback.property_cell());
} else {
DCHECK(feedback.IsMegamorphic());
@@ -1066,7 +1059,7 @@ Reduction JSNativeContextSpecialization::ReduceJSStoreGlobal(Node* node) {
return Replace(value);
} else if (feedback.IsPropertyCell()) {
return ReduceGlobalAccess(node, nullptr, nullptr, value,
- NameRef(broker(), p.name()), AccessMode::kStore,
+ MakeRef(broker(), p.name()), AccessMode::kStore,
nullptr, feedback.property_cell());
} else {
DCHECK(feedback.IsMegamorphic());
@@ -1188,7 +1181,8 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess(
// contexts' global proxy, and turn that into a direct access to the
// corresponding global object instead.
if (lookup_start_object_maps.size() == 1) {
- MapRef lookup_start_object_map(broker(), lookup_start_object_maps[0]);
+ MapRef lookup_start_object_map =
+ MakeRef(broker(), lookup_start_object_maps[0]);
if (lookup_start_object_map.equals(
broker()->target_native_context().global_proxy_object().map()) &&
!broker()->target_native_context().global_object().IsDetached()) {
@@ -1201,7 +1195,7 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess(
{
ZoneVector<PropertyAccessInfo> access_infos_for_feedback(zone());
for (Handle<Map> map_handle : lookup_start_object_maps) {
- MapRef map(broker(), map_handle);
+ MapRef map = MakeRef(broker(), map_handle);
if (map.is_deprecated()) continue;
PropertyAccessInfo access_info = broker()->GetPropertyAccessInfo(
map, feedback.name(), access_mode, dependencies(),
@@ -1468,7 +1462,7 @@ Reduction JSNativeContextSpecialization::ReduceJSLoadNamed(Node* node) {
JSLoadNamedNode n(node);
NamedAccess const& p = n.Parameters();
Node* const receiver = n.object();
- NameRef name(broker(), p.name());
+ NameRef name = MakeRef(broker(), p.name());
// Check if we have a constant receiver.
HeapObjectMatcher m(receiver);
@@ -1478,10 +1472,7 @@ Reduction JSNativeContextSpecialization::ReduceJSLoadNamed(Node* node) {
name.equals(ObjectRef(broker(), factory()->prototype_string()))) {
// Optimize "prototype" property of functions.
JSFunctionRef function = object.AsJSFunction();
- if (function.ShouldHaveBeenSerialized() && !function.serialized()) {
- TRACE_BROKER_MISSING(broker(), "data for function " << function);
- return NoChange();
- }
+ if (!function.serialized()) return NoChange();
// TODO(neis): Remove the has_prototype_slot condition once the broker is
// always enabled.
if (!function.map().has_prototype_slot() || !function.has_prototype() ||
@@ -1511,7 +1502,7 @@ Reduction JSNativeContextSpecialization::ReduceJSLoadNamedFromSuper(
Node* node) {
JSLoadNamedFromSuperNode n(node);
NamedAccess const& p = n.Parameters();
- NameRef name(broker(), p.name());
+ NameRef name = MakeRef(broker(), p.name());
if (!p.feedback().IsValid()) return NoChange();
return ReducePropertyAccess(node, nullptr, name, jsgraph()->Dead(),
@@ -1594,7 +1585,7 @@ Reduction JSNativeContextSpecialization::ReduceJSGetIterator(Node* node) {
const Operator* call_op = javascript()->Call(
JSCallNode::ArityForArgc(0), CallFrequency(), p.callFeedback(),
ConvertReceiverMode::kNotNullOrUndefined, mode,
- CallFeedbackRelation::kRelated);
+ CallFeedbackRelation::kTarget);
Node* call_property =
graph()->NewNode(call_op, load_property, receiver, n.feedback_vector(),
context, frame_state, effect, control);
@@ -1606,7 +1597,7 @@ Reduction JSNativeContextSpecialization::ReduceJSStoreNamed(Node* node) {
JSStoreNamedNode n(node);
NamedAccess const& p = n.Parameters();
if (!p.feedback().IsValid()) return NoChange();
- return ReducePropertyAccess(node, nullptr, NameRef(broker(), p.name()),
+ return ReducePropertyAccess(node, nullptr, MakeRef(broker(), p.name()),
n.value(), FeedbackSource(p.feedback()),
AccessMode::kStore);
}
@@ -1615,7 +1606,7 @@ Reduction JSNativeContextSpecialization::ReduceJSStoreNamedOwn(Node* node) {
JSStoreNamedOwnNode n(node);
StoreNamedOwnParameters const& p = n.Parameters();
if (!p.feedback().IsValid()) return NoChange();
- return ReducePropertyAccess(node, nullptr, NameRef(broker(), p.name()),
+ return ReducePropertyAccess(node, nullptr, MakeRef(broker(), p.name()),
n.value(), FeedbackSource(p.feedback()),
AccessMode::kStoreInLiteral);
}
@@ -1669,7 +1660,7 @@ void JSNativeContextSpecialization::RemoveImpossibleMaps(
maps->erase(
std::remove_if(maps->begin(), maps->end(),
[root_map, this](Handle<Map> map) {
- MapRef map_ref(broker(), map);
+ MapRef map_ref = MakeRef(broker(), map);
return map_ref.is_abandoned_prototype_map() ||
(map_ref.FindRootMap().has_value() &&
!map_ref.FindRootMap()->equals(*root_map));
@@ -1758,7 +1749,7 @@ Reduction JSNativeContextSpecialization::ReduceElementAccess(
ZoneVector<MapRef> prototype_maps(zone());
for (ElementAccessInfo const& access_info : access_infos) {
for (Handle<Map> map : access_info.lookup_start_object_maps()) {
- MapRef receiver_map(broker(), map);
+ MapRef receiver_map = MakeRef(broker(), map);
// If the {receiver_map} has a prototype and its elements backing
// store is either holey, or we have a potentially growing store,
// then we need to check that all prototypes have stable maps with
@@ -1790,12 +1781,8 @@ Reduction JSNativeContextSpecialization::ReduceElementAccess(
if (!IsTypedArrayElementsKind(access_info.elements_kind())) continue;
base::Optional<JSTypedArrayRef> typed_array =
GetTypedArrayConstant(broker(), receiver);
- if (typed_array.has_value()) {
- if (typed_array->ShouldHaveBeenSerialized() &&
- !typed_array->serialized()) {
- TRACE_BROKER_MISSING(broker(), "data for typed array " << *typed_array);
- return NoChange();
- }
+ if (typed_array.has_value() && !typed_array->serialized()) {
+ return NoChange();
}
}
@@ -1805,11 +1792,11 @@ Reduction JSNativeContextSpecialization::ReduceElementAccess(
ElementAccessInfo access_info = access_infos.front();
// Perform possible elements kind transitions.
- MapRef transition_target(broker(),
- access_info.lookup_start_object_maps().front());
+ MapRef transition_target =
+ MakeRef(broker(), access_info.lookup_start_object_maps().front());
for (auto source : access_info.transition_sources()) {
DCHECK_EQ(access_info.lookup_start_object_maps().size(), 1);
- MapRef transition_source(broker(), source);
+ MapRef transition_source = MakeRef(broker(), source);
effect = graph()->NewNode(
simplified()->TransitionElementsKind(ElementsTransition(
IsSimpleMapChangeTransition(transition_source.elements_kind(),
@@ -1857,10 +1844,10 @@ Reduction JSNativeContextSpecialization::ReduceElementAccess(
Node* this_control = fallthrough_control;
// Perform possible elements kind transitions.
- MapRef transition_target(broker(),
- access_info.lookup_start_object_maps().front());
+ MapRef transition_target =
+ MakeRef(broker(), access_info.lookup_start_object_maps().front());
for (auto source : access_info.transition_sources()) {
- MapRef transition_source(broker(), source);
+ MapRef transition_source = MakeRef(broker(), source);
DCHECK_EQ(access_info.lookup_start_object_maps().size(), 1);
this_effect = graph()->NewNode(
simplified()->TransitionElementsKind(ElementsTransition(
@@ -2229,7 +2216,7 @@ Node* JSNativeContextSpecialization::InlinePropertyGetterCall(
// For fast mode holders we recorded dependencies in BuildPropertyLoad.
for (const Handle<Map> map : access_info.lookup_start_object_maps()) {
dependencies()->DependOnConstantInDictionaryPrototypeChain(
- MapRef{broker(), map}, NameRef{broker(), access_info.name()},
+ MakeRef(broker(), map), MakeRef(broker(), access_info.name()),
constant, PropertyKind::kAccessor);
}
}
@@ -2362,7 +2349,7 @@ JSNativeContextSpecialization::BuildPropertyLoad(
!access_info.HasDictionaryHolder()) {
dependencies()->DependOnStablePrototypeChains(
access_info.lookup_start_object_maps(), kStartAtPrototype,
- JSObjectRef(broker(), holder));
+ MakeRef(broker(), holder));
}
// Generate the actual property access.
@@ -2413,7 +2400,7 @@ JSNativeContextSpecialization::BuildPropertyTest(
if (access_info.holder().ToHandle(&holder)) {
dependencies()->DependOnStablePrototypeChains(
access_info.lookup_start_object_maps(), kStartAtPrototype,
- JSObjectRef(broker(), holder));
+ MakeRef(broker(), holder));
}
Node* value = access_info.IsNotFound() ? jsgraph()->FalseConstant()
@@ -2457,7 +2444,7 @@ JSNativeContextSpecialization::BuildPropertyStore(
DCHECK_NE(AccessMode::kStoreInLiteral, access_mode);
dependencies()->DependOnStablePrototypeChains(
access_info.lookup_start_object_maps(), kStartAtPrototype,
- JSObjectRef(broker(), holder));
+ MakeRef(broker(), holder));
}
DCHECK(!access_info.IsNotFound());
@@ -2508,7 +2495,7 @@ JSNativeContextSpecialization::BuildPropertyStore(
a.Allocate(HeapNumber::kSize, AllocationType::kYoung,
Type::OtherInternal());
a.Store(AccessBuilder::ForMap(),
- MapRef(broker(), factory()->heap_number_map()));
+ MakeRef(broker(), factory()->heap_number_map()));
FieldAccess value_field_access = AccessBuilder::ForHeapNumberValue();
value_field_access.const_field_info = field_access.const_field_info;
a.Store(value_field_access, value);
@@ -2606,6 +2593,7 @@ JSNativeContextSpecialization::BuildPropertyStore(
case MachineRepresentation::kWord64:
case MachineRepresentation::kFloat32:
case MachineRepresentation::kSimd128:
+ case MachineRepresentation::kMapWord:
UNREACHABLE();
break;
}
@@ -2614,7 +2602,7 @@ JSNativeContextSpecialization::BuildPropertyStore(
if (access_info.transition_map().ToHandle(&transition_map)) {
// Check if we need to grow the properties backing store
// with this transitioning store.
- MapRef transition_map_ref(broker(), transition_map);
+ MapRef transition_map_ref = MakeRef(broker(), transition_map);
MapRef original_map = transition_map_ref.GetBackPointer().AsMap();
if (original_map.UnusedPropertyFields() == 0) {
DCHECK(!field_index.is_inobject());
@@ -3464,8 +3452,8 @@ bool JSNativeContextSpecialization::CanTreatHoleAsUndefined(
// or Object.prototype objects as their prototype (in any of the current
// native contexts, as the global Array protector works isolate-wide).
for (Handle<Map> map : receiver_maps) {
- MapRef receiver_map(broker(), map);
- ObjectRef receiver_prototype = receiver_map.prototype();
+ MapRef receiver_map = MakeRef(broker(), map);
+ ObjectRef receiver_prototype = receiver_map.prototype().value();
if (!receiver_prototype.IsJSObject() ||
!broker()->IsArrayOrObjectPrototype(receiver_prototype.AsJSObject())) {
return false;
@@ -3490,7 +3478,7 @@ bool JSNativeContextSpecialization::InferMaps(
// For untrusted maps, we can still use the information
// if the maps are stable.
for (size_t i = 0; i < map_set.size(); ++i) {
- MapRef map(broker(), map_set[i]);
+ MapRef map = MakeRef(broker(), map_set[i]);
if (!map.is_stable()) return false;
}
for (size_t i = 0; i < map_set.size(); ++i) {
diff --git a/deps/v8/src/compiler/js-operator.cc b/deps/v8/src/compiler/js-operator.cc
index 4f491429f4..18380f4abd 100644
--- a/deps/v8/src/compiler/js-operator.cc
+++ b/deps/v8/src/compiler/js-operator.cc
@@ -8,6 +8,7 @@
#include "src/base/lazy-instance.h"
#include "src/compiler/js-graph.h"
+#include "src/compiler/js-heap-broker.h"
#include "src/compiler/node-matchers.h"
#include "src/compiler/operator.h"
#include "src/handles/handles-inl.h"
@@ -22,7 +23,7 @@ namespace {
// Returns properties for the given binary op.
constexpr Operator::Properties BinopProperties(Operator::Opcode opcode) {
- CONSTEXPR_DCHECK(JSOperator::IsBinaryWithFeedback(opcode));
+ DCHECK(JSOperator::IsBinaryWithFeedback(opcode));
return opcode == IrOpcode::kJSStrictEqual ? Operator::kPure
: Operator::kNoProperties;
}
@@ -41,7 +42,7 @@ FeedbackCellRef JSCreateClosureNode::GetFeedbackCellRefChecked(
JSHeapBroker* broker) const {
HeapObjectMatcher m(feedback_cell());
CHECK(m.HasResolvedValue());
- return FeedbackCellRef(broker, m.ResolvedValue());
+ return MakeRef(broker, Handle<FeedbackCell>::cast(m.ResolvedValue()));
}
std::ostream& operator<<(std::ostream& os, CallFrequency const& f) {
@@ -338,12 +339,13 @@ bool operator!=(LoadGlobalParameters const& lhs,
size_t hash_value(LoadGlobalParameters const& p) {
- return base::hash_combine(p.name().location(), p.typeof_mode());
+ return base::hash_combine(p.name().location(),
+ static_cast<int>(p.typeof_mode()));
}
std::ostream& operator<<(std::ostream& os, LoadGlobalParameters const& p) {
- return os << Brief(*p.name()) << ", " << p.typeof_mode();
+ return os << Brief(*p.name()) << ", " << static_cast<int>(p.typeof_mode());
}
diff --git a/deps/v8/src/compiler/js-operator.h b/deps/v8/src/compiler/js-operator.h
index 4e447149bc..8080d4caef 100644
--- a/deps/v8/src/compiler/js-operator.h
+++ b/deps/v8/src/compiler/js-operator.h
@@ -290,9 +290,9 @@ class CallParameters final {
}
using ArityField = base::BitField<size_t, 0, 27>;
- using CallFeedbackRelationField = base::BitField<CallFeedbackRelation, 27, 1>;
- using SpeculationModeField = base::BitField<SpeculationMode, 28, 1>;
- using ConvertReceiverModeField = base::BitField<ConvertReceiverMode, 29, 2>;
+ using CallFeedbackRelationField = base::BitField<CallFeedbackRelation, 27, 2>;
+ using SpeculationModeField = base::BitField<SpeculationMode, 29, 1>;
+ using ConvertReceiverModeField = base::BitField<ConvertReceiverMode, 30, 2>;
uint32_t const bit_field_;
CallFrequency const frequency_;
@@ -308,7 +308,7 @@ const CallParameters& CallParametersOf(const Operator* op);
// Defines the arity and the ID for a runtime function call. This is used as a
// parameter by JSCallRuntime operators.
-class CallRuntimeParameters final {
+class V8_EXPORT_PRIVATE CallRuntimeParameters final {
public:
CallRuntimeParameters(Runtime::FunctionId id, size_t arity)
: id_(id), arity_(arity) {}
@@ -328,8 +328,8 @@ size_t hash_value(CallRuntimeParameters const&);
std::ostream& operator<<(std::ostream&, CallRuntimeParameters const&);
-const CallRuntimeParameters& CallRuntimeParametersOf(const Operator* op);
-
+V8_EXPORT_PRIVATE const CallRuntimeParameters& CallRuntimeParametersOf(
+ const Operator* op);
// Defines the location of a context slot relative to a specific scope. This is
// used as a parameter by JSLoadContext and JSStoreContext operators and allows
@@ -951,12 +951,12 @@ class V8_EXPORT_PRIVATE JSOperatorBuilder final
CallFrequency const& frequency,
const FeedbackSource& feedback = FeedbackSource{},
SpeculationMode speculation_mode = SpeculationMode::kDisallowSpeculation,
- CallFeedbackRelation feedback_relation = CallFeedbackRelation::kRelated);
+ CallFeedbackRelation feedback_relation = CallFeedbackRelation::kTarget);
const Operator* CallWithSpread(
uint32_t arity, CallFrequency const& frequency = CallFrequency(),
FeedbackSource const& feedback = FeedbackSource(),
SpeculationMode speculation_mode = SpeculationMode::kDisallowSpeculation,
- CallFeedbackRelation feedback_relation = CallFeedbackRelation::kRelated);
+ CallFeedbackRelation feedback_relation = CallFeedbackRelation::kTarget);
const Operator* CallRuntime(Runtime::FunctionId id);
const Operator* CallRuntime(Runtime::FunctionId id, size_t arity);
const Operator* CallRuntime(const Runtime::Function* function, size_t arity);
@@ -1002,7 +1002,7 @@ class V8_EXPORT_PRIVATE JSOperatorBuilder final
const Operator* LoadGlobal(const Handle<Name>& name,
const FeedbackSource& feedback,
- TypeofMode typeof_mode = NOT_INSIDE_TYPEOF);
+ TypeofMode typeof_mode = TypeofMode::kNotInside);
const Operator* StoreGlobal(LanguageMode language_mode,
const Handle<Name>& name,
const FeedbackSource& feedback);
@@ -1112,7 +1112,7 @@ class JSNodeWrapperBase : public NodeWrapper {
class JSUnaryOpNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSUnaryOpNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(JSOperator::IsUnaryWithFeedback(node->opcode()));
+ DCHECK(JSOperator::IsUnaryWithFeedback(node->opcode()));
}
#define INPUTS(V) \
@@ -1129,7 +1129,7 @@ JS_UNOP_WITH_FEEDBACK(V)
class JSBinaryOpNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSBinaryOpNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(JSOperator::IsBinaryWithFeedback(node->opcode()));
+ DCHECK(JSOperator::IsBinaryWithFeedback(node->opcode()));
}
const FeedbackParameter& Parameters() const {
@@ -1151,7 +1151,7 @@ JS_BINOP_WITH_FEEDBACK(V)
class JSGetIteratorNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSGetIteratorNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSGetIterator);
+ DCHECK_EQ(IrOpcode::kJSGetIterator, node->opcode());
}
const GetIteratorParameters& Parameters() const {
@@ -1168,7 +1168,7 @@ class JSGetIteratorNode final : public JSNodeWrapperBase {
class JSCloneObjectNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSCloneObjectNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSCloneObject);
+ DCHECK_EQ(IrOpcode::kJSCloneObject, node->opcode());
}
const CloneObjectParameters& Parameters() const {
@@ -1186,7 +1186,7 @@ class JSGetTemplateObjectNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSGetTemplateObjectNode(Node* node)
: JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSGetTemplateObject);
+ DCHECK_EQ(IrOpcode::kJSGetTemplateObject, node->opcode());
}
const GetTemplateObjectParameters& Parameters() const {
@@ -1202,9 +1202,9 @@ class JSCreateLiteralOpNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSCreateLiteralOpNode(Node* node)
: JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSCreateLiteralArray ||
- node->opcode() == IrOpcode::kJSCreateLiteralObject ||
- node->opcode() == IrOpcode::kJSCreateLiteralRegExp);
+ DCHECK(node->opcode() == IrOpcode::kJSCreateLiteralArray ||
+ node->opcode() == IrOpcode::kJSCreateLiteralObject ||
+ node->opcode() == IrOpcode::kJSCreateLiteralRegExp);
}
const CreateLiteralParameters& Parameters() const {
@@ -1223,7 +1223,7 @@ using JSCreateLiteralRegExpNode = JSCreateLiteralOpNode;
class JSHasPropertyNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSHasPropertyNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSHasProperty);
+ DCHECK_EQ(IrOpcode::kJSHasProperty, node->opcode());
}
const PropertyAccess& Parameters() const {
@@ -1241,7 +1241,7 @@ class JSHasPropertyNode final : public JSNodeWrapperBase {
class JSLoadPropertyNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSLoadPropertyNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSLoadProperty);
+ DCHECK_EQ(IrOpcode::kJSLoadProperty, node->opcode());
}
const PropertyAccess& Parameters() const {
@@ -1259,7 +1259,7 @@ class JSLoadPropertyNode final : public JSNodeWrapperBase {
class JSStorePropertyNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSStorePropertyNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSStoreProperty);
+ DCHECK_EQ(IrOpcode::kJSStoreProperty, node->opcode());
}
const PropertyAccess& Parameters() const {
@@ -1284,14 +1284,14 @@ class JSCallOrConstructNode : public JSNodeWrapperBase {
public:
explicit constexpr JSCallOrConstructNode(Node* node)
: JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSCall ||
- node->opcode() == IrOpcode::kJSCallWithArrayLike ||
- node->opcode() == IrOpcode::kJSCallWithSpread ||
- node->opcode() == IrOpcode::kJSConstruct ||
- node->opcode() == IrOpcode::kJSConstructWithArrayLike ||
- node->opcode() == IrOpcode::kJSConstructWithSpread
+ DCHECK(node->opcode() == IrOpcode::kJSCall ||
+ node->opcode() == IrOpcode::kJSCallWithArrayLike ||
+ node->opcode() == IrOpcode::kJSCallWithSpread ||
+ node->opcode() == IrOpcode::kJSConstruct ||
+ node->opcode() == IrOpcode::kJSConstructWithArrayLike ||
+ node->opcode() == IrOpcode::kJSConstructWithSpread
#if V8_ENABLE_WEBASSEMBLY
- || node->opcode() == IrOpcode::kJSWasmCall
+ || node->opcode() == IrOpcode::kJSWasmCall
#endif // V8_ENABLE_WEBASSEMBLY
); // NOLINT(whitespace/parens)
}
@@ -1373,7 +1373,7 @@ template <int kOpcode>
class JSCallNodeBase final : public JSCallOrConstructNode {
public:
explicit constexpr JSCallNodeBase(Node* node) : JSCallOrConstructNode(node) {
- CONSTEXPR_DCHECK(node->opcode() == kOpcode);
+ DCHECK_EQ(kOpcode, node->opcode());
}
const CallParameters& Parameters() const {
@@ -1405,7 +1405,7 @@ using JSCallWithArrayLikeNode = JSCallNodeBase<IrOpcode::kJSCallWithArrayLike>;
class JSWasmCallNode final : public JSCallOrConstructNode {
public:
explicit constexpr JSWasmCallNode(Node* node) : JSCallOrConstructNode(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSWasmCall);
+ DCHECK_EQ(IrOpcode::kJSWasmCall, node->opcode());
}
const JSWasmCallParameters& Parameters() const {
@@ -1437,7 +1437,7 @@ class JSConstructNodeBase final : public JSCallOrConstructNode {
public:
explicit constexpr JSConstructNodeBase(Node* node)
: JSCallOrConstructNode(node) {
- CONSTEXPR_DCHECK(node->opcode() == kOpcode);
+ DCHECK_EQ(kOpcode, node->opcode());
}
const ConstructParameters& Parameters() const {
@@ -1470,7 +1470,7 @@ using JSConstructWithArrayLikeNode =
class JSLoadNamedNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSLoadNamedNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSLoadNamed);
+ DCHECK_EQ(IrOpcode::kJSLoadNamed, node->opcode());
}
const NamedAccess& Parameters() const { return NamedAccessOf(node()->op()); }
@@ -1486,7 +1486,7 @@ class JSLoadNamedFromSuperNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSLoadNamedFromSuperNode(Node* node)
: JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSLoadNamedFromSuper);
+ DCHECK_EQ(IrOpcode::kJSLoadNamedFromSuper, node->opcode());
}
const NamedAccess& Parameters() const { return NamedAccessOf(node()->op()); }
@@ -1502,7 +1502,7 @@ class JSLoadNamedFromSuperNode final : public JSNodeWrapperBase {
class JSStoreNamedNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSStoreNamedNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSStoreNamed);
+ DCHECK_EQ(IrOpcode::kJSStoreNamed, node->opcode());
}
const NamedAccess& Parameters() const { return NamedAccessOf(node()->op()); }
@@ -1518,7 +1518,7 @@ class JSStoreNamedNode final : public JSNodeWrapperBase {
class JSStoreNamedOwnNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSStoreNamedOwnNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSStoreNamedOwn);
+ DCHECK_EQ(IrOpcode::kJSStoreNamedOwn, node->opcode());
}
const StoreNamedOwnParameters& Parameters() const {
@@ -1536,7 +1536,7 @@ class JSStoreNamedOwnNode final : public JSNodeWrapperBase {
class JSStoreGlobalNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSStoreGlobalNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSStoreGlobal);
+ DCHECK_EQ(IrOpcode::kJSStoreGlobal, node->opcode());
}
const StoreGlobalParameters& Parameters() const {
@@ -1553,7 +1553,7 @@ class JSStoreGlobalNode final : public JSNodeWrapperBase {
class JSLoadGlobalNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSLoadGlobalNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSLoadGlobal);
+ DCHECK_EQ(IrOpcode::kJSLoadGlobal, node->opcode());
}
const LoadGlobalParameters& Parameters() const {
@@ -1569,7 +1569,7 @@ class JSCreateEmptyLiteralArrayNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSCreateEmptyLiteralArrayNode(Node* node)
: JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSCreateEmptyLiteralArray);
+ DCHECK_EQ(IrOpcode::kJSCreateEmptyLiteralArray, node->opcode());
}
const FeedbackParameter& Parameters() const {
@@ -1585,7 +1585,7 @@ class JSStoreDataPropertyInLiteralNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSStoreDataPropertyInLiteralNode(Node* node)
: JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSStoreDataPropertyInLiteral);
+ DCHECK_EQ(IrOpcode::kJSStoreDataPropertyInLiteral, node->opcode());
}
const FeedbackParameter& Parameters() const {
@@ -1606,7 +1606,7 @@ class JSStoreInArrayLiteralNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSStoreInArrayLiteralNode(Node* node)
: JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSStoreInArrayLiteral);
+ DCHECK_EQ(IrOpcode::kJSStoreInArrayLiteral, node->opcode());
}
const FeedbackParameter& Parameters() const {
@@ -1625,7 +1625,7 @@ class JSStoreInArrayLiteralNode final : public JSNodeWrapperBase {
class JSCreateClosureNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSCreateClosureNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSCreateClosure);
+ DCHECK_EQ(IrOpcode::kJSCreateClosure, node->opcode());
}
const CreateClosureParameters& Parameters() const {
@@ -1642,7 +1642,7 @@ class JSCreateClosureNode final : public JSNodeWrapperBase {
class JSForInPrepareNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSForInPrepareNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSForInPrepare);
+ DCHECK_EQ(IrOpcode::kJSForInPrepare, node->opcode());
}
const ForInParameters& Parameters() const {
@@ -1659,7 +1659,7 @@ class JSForInPrepareNode final : public JSNodeWrapperBase {
class JSForInNextNode final : public JSNodeWrapperBase {
public:
explicit constexpr JSForInNextNode(Node* node) : JSNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kJSForInNext);
+ DCHECK_EQ(IrOpcode::kJSForInNext, node->opcode());
}
const ForInParameters& Parameters() const {
diff --git a/deps/v8/src/compiler/js-typed-lowering.cc b/deps/v8/src/compiler/js-typed-lowering.cc
index 008aacdb39..ebd839acab 100644
--- a/deps/v8/src/compiler/js-typed-lowering.cc
+++ b/deps/v8/src/compiler/js-typed-lowering.cc
@@ -7,6 +7,7 @@
#include "src/ast/modules.h"
#include "src/builtins/builtins-utils.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/compiler/access-builder.h"
#include "src/compiler/allocation-builder.h"
#include "src/compiler/graph-assembler.h"
@@ -592,8 +593,8 @@ Reduction JSTypedLowering::ReduceJSAdd(Node* node) {
Node* length =
graph()->NewNode(simplified()->NumberAdd(), left_length, right_length);
- PropertyCellRef string_length_protector(
- broker(), factory()->string_length_protector());
+ PropertyCellRef string_length_protector =
+ MakeRef(broker(), factory()->string_length_protector());
string_length_protector.SerializeAsProtector();
if (string_length_protector.value().AsSmi() ==
@@ -1171,8 +1172,8 @@ Reduction JSTypedLowering::ReduceJSLoadNamed(Node* node) {
JSLoadNamedNode n(node);
Node* receiver = n.object();
Type receiver_type = NodeProperties::GetType(receiver);
- NameRef name(broker(), NamedAccessOf(node->op()).name());
- NameRef length_str(broker(), factory()->length_string());
+ NameRef name = MakeRef(broker(), NamedAccessOf(node->op()).name());
+ NameRef length_str = MakeRef(broker(), factory()->length_string());
// Optimize "length" property of strings.
if (name.equals(length_str) && receiver_type.Is(Type::String())) {
Node* value = graph()->NewNode(simplified()->StringLength(), receiver);
@@ -1541,8 +1542,8 @@ void ReduceBuiltin(JSGraph* jsgraph, Node* node, int builtin_index, int arity,
DCHECK(Builtins::IsCpp(builtin_index));
const bool has_builtin_exit_frame = true;
- Node* stub = jsgraph->CEntryStubConstant(1, kDontSaveFPRegs, kArgvOnStack,
- has_builtin_exit_frame);
+ Node* stub = jsgraph->CEntryStubConstant(
+ 1, SaveFPRegsMode::kIgnore, ArgvMode::kStack, has_builtin_exit_frame);
node->ReplaceInput(0, stub);
const int argc = arity + BuiltinArguments::kNumExtraArgsWithReceiver;
@@ -1628,10 +1629,10 @@ Reduction JSTypedLowering::ReduceJSConstruct(Node* node) {
// Patch {node} to an indirect call via the {function}s construct stub.
bool use_builtin_construct_stub = function.shared().construct_as_builtin();
- CodeRef code(broker(),
- use_builtin_construct_stub
- ? BUILTIN_CODE(isolate(), JSBuiltinsConstructStub)
- : BUILTIN_CODE(isolate(), JSConstructStubGeneric));
+ CodeRef code = MakeRef(
+ broker(), use_builtin_construct_stub
+ ? BUILTIN_CODE(isolate(), JSBuiltinsConstructStub)
+ : BUILTIN_CODE(isolate(), JSConstructStubGeneric));
STATIC_ASSERT(JSConstructNode::TargetIndex() == 0);
STATIC_ASSERT(JSConstructNode::NewTargetIndex() == 1);
node->RemoveInput(n.FeedbackVectorIndex());
@@ -1712,9 +1713,9 @@ Reduction JSTypedLowering::ReduceJSCall(Node* node) {
} else if (target->opcode() == IrOpcode::kJSCreateClosure) {
CreateClosureParameters const& ccp =
JSCreateClosureNode{target}.Parameters();
- shared = SharedFunctionInfoRef(broker(), ccp.shared_info());
+ shared = MakeRef(broker(), ccp.shared_info());
} else if (target->opcode() == IrOpcode::kCheckClosure) {
- FeedbackCellRef cell(broker(), FeedbackCellOf(target->op()));
+ FeedbackCellRef cell = MakeRef(broker(), FeedbackCellOf(target->op()));
base::Optional<FeedbackVectorRef> feedback_vector = cell.value();
if (feedback_vector.has_value()) {
shared = feedback_vector->shared_function_info();
@@ -1723,6 +1724,9 @@ Reduction JSTypedLowering::ReduceJSCall(Node* node) {
if (shared.has_value()) {
// Do not inline the call if we need to check whether to break at entry.
+ // If this state changes during background compilation, the compilation
+ // job will be aborted from the main thread (see
+ // Debug::PrepareFunctionForDebugExecution()).
if (shared->HasBreakInfo()) return NoChange();
// Class constructors are callable, but [[Call]] will raise an exception.
diff --git a/deps/v8/src/compiler/load-elimination.cc b/deps/v8/src/compiler/load-elimination.cc
index 2a0189ae12..377654e421 100644
--- a/deps/v8/src/compiler/load-elimination.cc
+++ b/deps/v8/src/compiler/load-elimination.cc
@@ -1076,6 +1076,7 @@ Reduction LoadElimination::ReduceLoadElement(Node* node) {
case MachineRepresentation::kTaggedSigned:
case MachineRepresentation::kTaggedPointer:
case MachineRepresentation::kTagged:
+ case MachineRepresentation::kMapWord:
if (Node* replacement = state->LookupElement(
object, index, access.machine_type.representation())) {
// Make sure we don't resurrect dead {replacement} nodes.
@@ -1131,6 +1132,7 @@ Reduction LoadElimination::ReduceStoreElement(Node* node) {
case MachineRepresentation::kTaggedSigned:
case MachineRepresentation::kTaggedPointer:
case MachineRepresentation::kTagged:
+ case MachineRepresentation::kMapWord:
state = state->AddElement(object, index, new_value,
access.machine_type.representation(), zone());
break;
@@ -1424,6 +1426,7 @@ LoadElimination::IndexRange LoadElimination::FieldIndexOf(
case MachineRepresentation::kTaggedSigned:
case MachineRepresentation::kTaggedPointer:
case MachineRepresentation::kTagged:
+ case MachineRepresentation::kMapWord:
case MachineRepresentation::kCompressedPointer:
case MachineRepresentation::kCompressed:
break;
diff --git a/deps/v8/src/compiler/loop-analysis.cc b/deps/v8/src/compiler/loop-analysis.cc
index 0d52e78004..ee56a665db 100644
--- a/deps/v8/src/compiler/loop-analysis.cc
+++ b/deps/v8/src/compiler/loop-analysis.cc
@@ -547,7 +547,6 @@ LoopTree* LoopFinder::BuildLoopTree(Graph* graph, TickCounter* tick_counter,
ZoneUnorderedSet<Node*>* LoopFinder::FindUnnestedLoopFromHeader(
Node* loop_header, Zone* zone, size_t max_size) {
auto* visited = zone->New<ZoneUnorderedSet<Node*>>(zone);
-
std::vector<Node*> queue;
DCHECK(loop_header->opcode() == IrOpcode::kLoop);
@@ -589,6 +588,30 @@ ZoneUnorderedSet<Node*>* LoopFinder::FindUnnestedLoopFromHeader(
}
}
+ // Check that there is no floating control other than direct nodes to start().
+ // We do this by checking that all non-start control inputs of loop nodes are
+ // also in the loop.
+ // TODO(manoskouk): This is a safety check. Consider making it DEBUG-only when
+ // we are confident there is no incompatible floating control generated in
+ // wasm.
+ for (Node* node : *visited) {
+ // The loop header is allowed to point outside the loop.
+ if (node == loop_header) continue;
+
+ for (Edge edge : node->input_edges()) {
+ Node* input = edge.to();
+ if (NodeProperties::IsControlEdge(edge) && visited->count(input) == 0 &&
+ input->opcode() != IrOpcode::kStart) {
+ FATAL(
+ "Floating control detected in wasm turbofan graph: Node #%d:%s is "
+ "inside loop headed by #%d, but its control dependency #%d:%s is "
+ "outside",
+ node->id(), node->op()->mnemonic(), loop_header->id(), input->id(),
+ input->op()->mnemonic());
+ }
+ }
+ }
+
return visited;
}
diff --git a/deps/v8/src/compiler/machine-graph-verifier.cc b/deps/v8/src/compiler/machine-graph-verifier.cc
index cabf23f4d5..3aee3a8d35 100644
--- a/deps/v8/src/compiler/machine-graph-verifier.cc
+++ b/deps/v8/src/compiler/machine-graph-verifier.cc
@@ -999,6 +999,7 @@ class MachineRepresentationChecker {
return IsAnyTagged(actual);
case MachineRepresentation::kCompressed:
return IsAnyCompressed(actual);
+ case MachineRepresentation::kMapWord:
case MachineRepresentation::kTaggedSigned:
case MachineRepresentation::kTaggedPointer:
// TODO(turbofan): At the moment, the machine graph doesn't contain
diff --git a/deps/v8/src/compiler/machine-operator.cc b/deps/v8/src/compiler/machine-operator.cc
index 1a897a3203..3d61d70b02 100644
--- a/deps/v8/src/compiler/machine-operator.cc
+++ b/deps/v8/src/compiler/machine-operator.cc
@@ -252,6 +252,7 @@ std::ostream& operator<<(std::ostream& os, TruncateKind kind) {
V(Word64Shl, Operator::kNoProperties, 2, 0, 1) \
V(Word64Shr, Operator::kNoProperties, 2, 0, 1) \
V(Word64Ror, Operator::kNoProperties, 2, 0, 1) \
+ V(Word64RorLowerable, Operator::kNoProperties, 2, 1, 1) \
V(Word64Equal, Operator::kCommutative, 2, 0, 1) \
V(Int64Add, Operator::kAssociative | Operator::kCommutative, 2, 0, 1) \
V(Int64Sub, Operator::kNoProperties, 2, 0, 1) \
@@ -272,6 +273,7 @@ std::ostream& operator<<(std::ostream& os, TruncateKind kind) {
PURE_BINARY_OP_LIST_64(V) \
V(Word32Clz, Operator::kNoProperties, 1, 0, 1) \
V(Word64Clz, Operator::kNoProperties, 1, 0, 1) \
+ V(Word64ClzLowerable, Operator::kNoProperties, 1, 1, 1) \
V(Word32ReverseBytes, Operator::kNoProperties, 1, 0, 1) \
V(Word64ReverseBytes, Operator::kNoProperties, 1, 0, 1) \
V(Simd128ReverseBytes, Operator::kNoProperties, 1, 0, 1) \
@@ -566,8 +568,10 @@ std::ostream& operator<<(std::ostream& os, TruncateKind kind) {
#define PURE_OPTIONAL_OP_LIST(V) \
V(Word32Ctz, Operator::kNoProperties, 1, 0, 1) \
V(Word64Ctz, Operator::kNoProperties, 1, 0, 1) \
+ V(Word64CtzLowerable, Operator::kNoProperties, 1, 1, 1) \
V(Word32Rol, Operator::kNoProperties, 2, 0, 1) \
V(Word64Rol, Operator::kNoProperties, 2, 0, 1) \
+ V(Word64RolLowerable, Operator::kNoProperties, 2, 1, 1) \
V(Word32ReverseBits, Operator::kNoProperties, 1, 0, 1) \
V(Word64ReverseBits, Operator::kNoProperties, 1, 0, 1) \
V(Int32AbsWithOverflow, Operator::kNoProperties, 1, 0, 2) \
@@ -583,6 +587,8 @@ std::ostream& operator<<(std::ostream& os, TruncateKind kind) {
V(Float64RoundTiesAway, Operator::kNoProperties, 1, 0, 1) \
V(Float32RoundTiesEven, Operator::kNoProperties, 1, 0, 1) \
V(Float64RoundTiesEven, Operator::kNoProperties, 1, 0, 1) \
+ V(Word32Select, Operator::kNoProperties, 3, 0, 1) \
+ V(Word64Select, Operator::kNoProperties, 3, 0, 1) \
V(Float32Select, Operator::kNoProperties, 3, 0, 1) \
V(Float64Select, Operator::kNoProperties, 3, 0, 1)
@@ -610,6 +616,7 @@ std::ostream& operator<<(std::ostream& os, TruncateKind kind) {
V(Pointer) \
V(TaggedSigned) \
V(TaggedPointer) \
+ V(MapInHeader) \
V(AnyTagged) \
V(CompressedPointer) \
V(AnyCompressed)
@@ -622,6 +629,7 @@ std::ostream& operator<<(std::ostream& os, TruncateKind kind) {
V(kWord16) \
V(kWord32) \
V(kWord64) \
+ V(kMapWord) \
V(kTaggedSigned) \
V(kTaggedPointer) \
V(kTagged) \
@@ -1332,6 +1340,7 @@ OVERFLOW_OP_LIST(OVERFLOW_OP)
#undef OVERFLOW_OP
const Operator* MachineOperatorBuilder::Load(LoadRepresentation rep) {
+ DCHECK(!rep.IsMapWord());
#define LOAD(Type) \
if (rep == MachineType::Type()) { \
return &cache_.kLoad##Type; \
@@ -1491,6 +1500,7 @@ const Operator* MachineOperatorBuilder::StackSlot(MachineRepresentation rep,
}
const Operator* MachineOperatorBuilder::Store(StoreRepresentation store_rep) {
+ DCHECK_NE(store_rep.representation(), MachineRepresentation::kMapWord);
switch (store_rep.representation()) {
#define STORE(kRep) \
case MachineRepresentation::kRep: \
diff --git a/deps/v8/src/compiler/machine-operator.h b/deps/v8/src/compiler/machine-operator.h
index 87a2eb891f..0ee3649ad0 100644
--- a/deps/v8/src/compiler/machine-operator.h
+++ b/deps/v8/src/compiler/machine-operator.h
@@ -104,7 +104,8 @@ V8_EXPORT_PRIVATE LoadLaneParameters const& LoadLaneParametersOf(
Operator const*) V8_WARN_UNUSED_RESULT;
// A Store needs a MachineType and a WriteBarrierKind in order to emit the
-// correct write barrier.
+// correct write barrier, and needs to state whether it is storing into the
+// header word, so that the value can be packed, if necessary.
class StoreRepresentation final {
public:
StoreRepresentation(MachineRepresentation representation,
@@ -248,25 +249,30 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final
kWord32ShiftIsSafe = 1u << 11,
kWord32Ctz = 1u << 12,
kWord64Ctz = 1u << 13,
- kWord32Popcnt = 1u << 14,
- kWord64Popcnt = 1u << 15,
- kWord32ReverseBits = 1u << 16,
- kWord64ReverseBits = 1u << 17,
- kFloat32Select = 1u << 18,
- kFloat64Select = 1u << 19,
- kInt32AbsWithOverflow = 1u << 20,
- kInt64AbsWithOverflow = 1u << 21,
- kWord32Rol = 1u << 22,
- kWord64Rol = 1u << 23,
- kSatConversionIsSafe = 1u << 24,
+ kWord64CtzLowerable = 1u << 14,
+ kWord32Popcnt = 1u << 15,
+ kWord64Popcnt = 1u << 16,
+ kWord32ReverseBits = 1u << 17,
+ kWord64ReverseBits = 1u << 18,
+ kFloat32Select = 1u << 19,
+ kFloat64Select = 1u << 20,
+ kInt32AbsWithOverflow = 1u << 21,
+ kInt64AbsWithOverflow = 1u << 22,
+ kWord32Rol = 1u << 23,
+ kWord64Rol = 1u << 24,
+ kWord64RolLowerable = 1u << 25,
+ kSatConversionIsSafe = 1u << 26,
+ kWord32Select = 1u << 27,
+ kWord64Select = 1u << 28,
kAllOptionalOps =
kFloat32RoundDown | kFloat64RoundDown | kFloat32RoundUp |
kFloat64RoundUp | kFloat32RoundTruncate | kFloat64RoundTruncate |
kFloat64RoundTiesAway | kFloat32RoundTiesEven | kFloat64RoundTiesEven |
- kWord32Ctz | kWord64Ctz | kWord32Popcnt | kWord64Popcnt |
- kWord32ReverseBits | kWord64ReverseBits | kInt32AbsWithOverflow |
- kInt64AbsWithOverflow | kWord32Rol | kWord64Rol | kSatConversionIsSafe |
- kFloat32Select | kFloat64Select
+ kWord32Ctz | kWord64Ctz | kWord64CtzLowerable | kWord32Popcnt |
+ kWord64Popcnt | kWord32ReverseBits | kWord64ReverseBits |
+ kInt32AbsWithOverflow | kInt64AbsWithOverflow | kWord32Rol |
+ kWord64Rol | kWord64RolLowerable | kSatConversionIsSafe |
+ kFloat32Select | kFloat64Select | kWord32Select | kWord64Select
};
using Flags = base::Flags<Flag, unsigned>;
@@ -386,10 +392,21 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final
const Operator* Word64SarShiftOutZeros() {
return Word64Sar(ShiftKind::kShiftOutZeros);
}
+
+ // 64-bit rol, ror, clz and ctz operators have two versions: the non-suffixed
+ // ones are meant to be used in 64-bit systems and have no control input. The
+ // "Lowerable"-suffixed ones are meant to be temporary operators in 32-bit
+ // systems and will be lowered to 32-bit operators. They have a control input
+ // to enable the lowering.
const OptionalOperator Word64Rol();
const Operator* Word64Ror();
const Operator* Word64Clz();
const OptionalOperator Word64Ctz();
+ const OptionalOperator Word64RolLowerable();
+ const Operator* Word64RorLowerable();
+ const Operator* Word64ClzLowerable();
+ const OptionalOperator Word64CtzLowerable();
+
const Operator* Word64Equal();
const Operator* Int32PairAdd();
@@ -562,7 +579,11 @@ class V8_EXPORT_PRIVATE MachineOperatorBuilder final
const OptionalOperator Float32RoundTiesEven();
const OptionalOperator Float64RoundTiesEven();
- // Floating point conditional selects.
+ // Conditional selects. Input 1 is the condition, Input 2 is the result value
+ // if the condition is {true}, Input 3 is the result value if the condition is
+ // false.
+ const OptionalOperator Word32Select();
+ const OptionalOperator Word64Select();
const OptionalOperator Float32Select();
const OptionalOperator Float64Select();
diff --git a/deps/v8/src/compiler/map-inference.cc b/deps/v8/src/compiler/map-inference.cc
index 1e1a59d784..b6c96163c6 100644
--- a/deps/v8/src/compiler/map-inference.cc
+++ b/deps/v8/src/compiler/map-inference.cc
@@ -68,7 +68,7 @@ bool MapInference::AllOfInstanceTypesUnsafe(
CHECK(HaveMaps());
auto instance_type = [this, f](Handle<Map> map) {
- MapRef map_ref(broker_, map);
+ MapRef map_ref = MakeRef(broker_, map);
return f(map_ref.instance_type());
};
return std::all_of(maps_.begin(), maps_.end(), instance_type);
@@ -79,7 +79,7 @@ bool MapInference::AnyOfInstanceTypesUnsafe(
CHECK(HaveMaps());
auto instance_type = [this, f](Handle<Map> map) {
- MapRef map_ref(broker_, map);
+ MapRef map_ref = MakeRef(broker_, map);
return f(map_ref.instance_type());
};
@@ -134,13 +134,13 @@ bool MapInference::RelyOnMapsHelper(CompilationDependencies* dependencies,
if (Safe()) return true;
auto is_stable = [this](Handle<Map> map) {
- MapRef map_ref(broker_, map);
+ MapRef map_ref = MakeRef(broker_, map);
return map_ref.is_stable();
};
if (dependencies != nullptr &&
std::all_of(maps_.cbegin(), maps_.cend(), is_stable)) {
for (Handle<Map> map : maps_) {
- dependencies->DependOnStableMap(MapRef(broker_, map));
+ dependencies->DependOnStableMap(MakeRef(broker_, map));
}
SetGuarded();
return true;
diff --git a/deps/v8/src/compiler/memory-lowering.cc b/deps/v8/src/compiler/memory-lowering.cc
index b8a75ee950..ac113ddd70 100644
--- a/deps/v8/src/compiler/memory-lowering.cc
+++ b/deps/v8/src/compiler/memory-lowering.cc
@@ -4,8 +4,9 @@
#include "src/compiler/memory-lowering.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/common/external-pointer.h"
+#include "src/compiler/access-builder.h"
#include "src/compiler/js-graph.h"
#include "src/compiler/linkage.h"
#include "src/compiler/node-matchers.h"
@@ -41,6 +42,15 @@ class MemoryLowering::AllocationGroup final : public ZoneObject {
AllocationType const allocation_;
Node* const size_;
+ static inline AllocationType CheckAllocationType(AllocationType allocation) {
+ // For non-generational heap, all young allocations are redirected to old
+ // space.
+ if (FLAG_single_generation && allocation == AllocationType::kYoung) {
+ return AllocationType::kOld;
+ }
+ return allocation;
+ }
+
DISALLOW_IMPLICIT_CONSTRUCTORS(AllocationGroup);
};
@@ -98,6 +108,9 @@ Reduction MemoryLowering::ReduceAllocateRaw(
DCHECK_EQ(IrOpcode::kAllocateRaw, node->opcode());
DCHECK_IMPLIES(allocation_folding_ == AllocationFolding::kDoAllocationFolding,
state_ptr != nullptr);
+ if (FLAG_single_generation && allocation_type == AllocationType::kYoung) {
+ allocation_type = AllocationType::kOld;
+ }
// Code objects may have a maximum size smaller than kMaxHeapObjectSize due to
// guard pages. If we need to support allocating code here we would need to
// call MemoryChunkLayout::MaxRegularCodeObjectSize() at runtime.
@@ -292,12 +305,20 @@ Reduction MemoryLowering::ReduceAllocateRaw(
Reduction MemoryLowering::ReduceLoadFromObject(Node* node) {
DCHECK_EQ(IrOpcode::kLoadFromObject, node->opcode());
ObjectAccess const& access = ObjectAccessOf(node->op());
- MachineRepresentation rep = access.machine_type.representation();
- const Operator* load_op = ElementSizeInBytes(rep) > kTaggedSize &&
- !machine()->UnalignedLoadSupported(
- access.machine_type.representation())
- ? machine()->UnalignedLoad(access.machine_type)
- : machine()->Load(access.machine_type);
+
+ MachineType machine_type = access.machine_type;
+
+ if (machine_type.IsMapWord()) {
+ CHECK_EQ(machine_type.semantic(), MachineSemantic::kAny);
+ return ReduceLoadMap(node);
+ }
+
+ MachineRepresentation rep = machine_type.representation();
+ const Operator* load_op =
+ ElementSizeInBytes(rep) > kTaggedSize &&
+ !machine()->UnalignedLoadSupported(machine_type.representation())
+ ? machine()->UnalignedLoad(machine_type)
+ : machine()->Load(machine_type);
NodeProperties::ChangeOp(node, load_op);
return Changed(node);
}
@@ -308,6 +329,7 @@ Reduction MemoryLowering::ReduceLoadElement(Node* node) {
Node* index = node->InputAt(1);
node->ReplaceInput(1, ComputeIndex(access, index));
MachineType type = access.machine_type;
+ DCHECK(!type.IsMapWord());
if (NeedsPoisoning(access.load_sensitivity)) {
NodeProperties::ChangeOp(node, machine()->PoisonedLoad(type));
} else {
@@ -345,8 +367,8 @@ Node* MemoryLowering::DecodeExternalPointer(
Node* decoded_ptr =
__ Load(MachineType::Pointer(), table, __ ChangeUint32ToUint64(offset));
if (external_pointer_tag != 0) {
- Node* tag = __ IntPtrConstant(external_pointer_tag);
- decoded_ptr = __ WordXor(decoded_ptr, tag);
+ Node* tag = __ IntPtrConstant(~external_pointer_tag);
+ decoded_ptr = __ WordAnd(decoded_ptr, tag);
}
return decoded_ptr;
#else
@@ -354,6 +376,22 @@ Node* MemoryLowering::DecodeExternalPointer(
#endif // V8_HEAP_SANDBOX
}
+Reduction MemoryLowering::ReduceLoadMap(Node* node) {
+#ifdef V8_MAP_PACKING
+ NodeProperties::ChangeOp(node, machine()->Load(MachineType::AnyTagged()));
+
+ Node* effect = NodeProperties::GetEffectInput(node);
+ Node* control = NodeProperties::GetControlInput(node);
+ __ InitializeEffectControl(effect, control);
+
+ node = __ AddNode(graph()->CloneNode(node));
+ return Replace(__ UnpackMapWord(node));
+#else
+ NodeProperties::ChangeOp(node, machine()->Load(MachineType::TaggedPointer()));
+ return Changed(node);
+#endif
+}
+
Reduction MemoryLowering::ReduceLoadField(Node* node) {
DCHECK_EQ(IrOpcode::kLoadField, node->opcode());
FieldAccess const& access = FieldAccessOf(node->op());
@@ -365,11 +403,19 @@ Reduction MemoryLowering::ReduceLoadField(Node* node) {
// External pointer table indices are 32bit numbers
type = MachineType::Uint32();
}
+
+ if (type.IsMapWord()) {
+ DCHECK(!NeedsPoisoning(access.load_sensitivity));
+ DCHECK(!access.type.Is(Type::SandboxedExternalPointer()));
+ return ReduceLoadMap(node);
+ }
+
if (NeedsPoisoning(access.load_sensitivity)) {
NodeProperties::ChangeOp(node, machine()->PoisonedLoad(type));
} else {
NodeProperties::ChangeOp(node, machine()->Load(type));
}
+
if (V8_HEAP_SANDBOX_BOOL &&
access.type.Is(Type::SandboxedExternalPointer())) {
#ifdef V8_HEAP_SANDBOX
@@ -391,8 +437,10 @@ Reduction MemoryLowering::ReduceStoreToObject(Node* node,
ObjectAccess const& access = ObjectAccessOf(node->op());
Node* object = node->InputAt(0);
Node* value = node->InputAt(2);
+
WriteBarrierKind write_barrier_kind = ComputeWriteBarrierKind(
node, object, value, state, access.write_barrier_kind);
+ DCHECK(!access.machine_type.IsMapWord());
MachineRepresentation rep = access.machine_type.representation();
StoreRepresentation store_rep(rep, write_barrier_kind);
const Operator* store_op = ElementSizeInBytes(rep) > kTaggedSize &&
@@ -427,15 +475,29 @@ Reduction MemoryLowering::ReduceStoreField(Node* node,
DCHECK_IMPLIES(V8_HEAP_SANDBOX_BOOL,
!access.type.Is(Type::ExternalPointer()) &&
!access.type.Is(Type::SandboxedExternalPointer()));
+ MachineType machine_type = access.machine_type;
Node* object = node->InputAt(0);
Node* value = node->InputAt(1);
+
+ Node* effect = NodeProperties::GetEffectInput(node);
+ Node* control = NodeProperties::GetControlInput(node);
+ __ InitializeEffectControl(effect, control);
+
WriteBarrierKind write_barrier_kind = ComputeWriteBarrierKind(
node, object, value, state, access.write_barrier_kind);
Node* offset = __ IntPtrConstant(access.offset - access.tag());
node->InsertInput(graph_zone(), 1, offset);
+
+ if (machine_type.IsMapWord()) {
+ machine_type = MachineType::TaggedPointer();
+#ifdef V8_MAP_PACKING
+ Node* mapword = __ PackMapWord(TNode<Map>::UncheckedCast(value));
+ node->ReplaceInput(2, mapword);
+#endif
+ }
NodeProperties::ChangeOp(
- node, machine()->Store(StoreRepresentation(
- access.machine_type.representation(), write_barrier_kind)));
+ node, machine()->Store(StoreRepresentation(machine_type.representation(),
+ write_barrier_kind)));
return Changed(node);
}
@@ -513,6 +575,9 @@ WriteBarrierKind MemoryLowering::ComputeWriteBarrierKind(
if (!ValueNeedsWriteBarrier(value, isolate())) {
write_barrier_kind = kNoWriteBarrier;
}
+ if (FLAG_disable_write_barriers) {
+ write_barrier_kind = kNoWriteBarrier;
+ }
if (write_barrier_kind == WriteBarrierKind::kAssertNoWriteBarrier) {
write_barrier_assert_failed_(node, object, function_debug_name_, zone());
}
@@ -537,14 +602,18 @@ bool MemoryLowering::NeedsPoisoning(LoadSensitivity load_sensitivity) const {
MemoryLowering::AllocationGroup::AllocationGroup(Node* node,
AllocationType allocation,
Zone* zone)
- : node_ids_(zone), allocation_(allocation), size_(nullptr) {
+ : node_ids_(zone),
+ allocation_(CheckAllocationType(allocation)),
+ size_(nullptr) {
node_ids_.insert(node->id());
}
MemoryLowering::AllocationGroup::AllocationGroup(Node* node,
AllocationType allocation,
Node* size, Zone* zone)
- : node_ids_(zone), allocation_(allocation), size_(size) {
+ : node_ids_(zone),
+ allocation_(CheckAllocationType(allocation)),
+ size_(size) {
node_ids_.insert(node->id());
}
diff --git a/deps/v8/src/compiler/memory-lowering.h b/deps/v8/src/compiler/memory-lowering.h
index 7ad02b95af..1ebbf40bc8 100644
--- a/deps/v8/src/compiler/memory-lowering.h
+++ b/deps/v8/src/compiler/memory-lowering.h
@@ -110,6 +110,7 @@ class MemoryLowering final : public Reducer {
AllocationState const* state,
WriteBarrierKind);
Node* DecodeExternalPointer(Node* encoded_pointer, ExternalPointerTag tag);
+ Reduction ReduceLoadMap(Node* encoded_pointer);
Node* ComputeIndex(ElementAccess const& access, Node* node);
bool NeedsPoisoning(LoadSensitivity load_sensitivity) const;
diff --git a/deps/v8/src/compiler/memory-optimizer.cc b/deps/v8/src/compiler/memory-optimizer.cc
index 1f36f25c29..7d6dcf880f 100644
--- a/deps/v8/src/compiler/memory-optimizer.cc
+++ b/deps/v8/src/compiler/memory-optimizer.cc
@@ -257,6 +257,15 @@ bool MemoryOptimizer::AllocationTypeNeedsUpdateToOld(Node* const node,
return false;
}
+void MemoryOptimizer::ReplaceUsesAndKillNode(Node* node, Node* replacement) {
+ // Replace all uses of node and kill the node to make sure we don't leave
+ // dangling dead uses.
+ DCHECK_NE(replacement, node);
+ NodeProperties::ReplaceUses(node, replacement, graph_assembler_.effect(),
+ graph_assembler_.control());
+ node->Kill();
+}
+
void MemoryOptimizer::VisitAllocateRaw(Node* node,
AllocationState const* state) {
DCHECK_EQ(IrOpcode::kAllocateRaw, node->opcode());
@@ -294,12 +303,7 @@ void MemoryOptimizer::VisitAllocateRaw(Node* node,
node, allocation_type, allocation.allow_large_objects(), &state);
CHECK(reduction.Changed() && reduction.replacement() != node);
- // Replace all uses of node and kill the node to make sure we don't leave
- // dangling dead uses.
- NodeProperties::ReplaceUses(node, reduction.replacement(),
- graph_assembler_.effect(),
- graph_assembler_.control());
- node->Kill();
+ ReplaceUsesAndKillNode(node, reduction.replacement());
EnqueueUses(state->effect(), state);
}
@@ -307,8 +311,11 @@ void MemoryOptimizer::VisitAllocateRaw(Node* node,
void MemoryOptimizer::VisitLoadFromObject(Node* node,
AllocationState const* state) {
DCHECK_EQ(IrOpcode::kLoadFromObject, node->opcode());
- memory_lowering()->ReduceLoadFromObject(node);
+ Reduction reduction = memory_lowering()->ReduceLoadFromObject(node);
EnqueueUses(node, state);
+ if (V8_MAP_PACKING_BOOL && reduction.replacement() != node) {
+ ReplaceUsesAndKillNode(node, reduction.replacement());
+ }
}
void MemoryOptimizer::VisitStoreToObject(Node* node,
@@ -333,16 +340,14 @@ void MemoryOptimizer::VisitLoadField(Node* node, AllocationState const* state) {
// lowering, so we can proceed iterating the graph from the node uses.
EnqueueUses(node, state);
- // Node can be replaced only when V8_HEAP_SANDBOX_BOOL is enabled and
- // when loading an external pointer value.
- DCHECK_IMPLIES(!V8_HEAP_SANDBOX_BOOL, reduction.replacement() == node);
- if (V8_HEAP_SANDBOX_BOOL && reduction.replacement() != node) {
- // Replace all uses of node and kill the node to make sure we don't leave
- // dangling dead uses.
- NodeProperties::ReplaceUses(node, reduction.replacement(),
- graph_assembler_.effect(),
- graph_assembler_.control());
- node->Kill();
+ // Node can be replaced under two cases:
+ // 1. V8_HEAP_SANDBOX_BOOL is enabled and loading an external pointer value.
+ // 2. V8_MAP_PACKING_BOOL is enabled.
+ DCHECK_IMPLIES(!V8_HEAP_SANDBOX_BOOL && !V8_MAP_PACKING_BOOL,
+ reduction.replacement() == node);
+ if ((V8_HEAP_SANDBOX_BOOL || V8_MAP_PACKING_BOOL) &&
+ reduction.replacement() != node) {
+ ReplaceUsesAndKillNode(node, reduction.replacement());
}
}
diff --git a/deps/v8/src/compiler/memory-optimizer.h b/deps/v8/src/compiler/memory-optimizer.h
index 0f85fea191..3845304fdd 100644
--- a/deps/v8/src/compiler/memory-optimizer.h
+++ b/deps/v8/src/compiler/memory-optimizer.h
@@ -68,6 +68,8 @@ class MemoryOptimizer final {
void EnqueueUses(Node*, AllocationState const*);
void EnqueueUse(Node*, int, AllocationState const*);
+ void ReplaceUsesAndKillNode(Node* node, Node* replacement);
+
// Returns true if the AllocationType of the current AllocateRaw node that we
// are visiting needs to be updated to kOld, due to propagation of tenuring
// from outer to inner allocations.
diff --git a/deps/v8/src/compiler/node-matchers.h b/deps/v8/src/compiler/node-matchers.h
index e5554d3cba..05ba661b51 100644
--- a/deps/v8/src/compiler/node-matchers.h
+++ b/deps/v8/src/compiler/node-matchers.h
@@ -238,7 +238,14 @@ struct HeapObjectMatcherImpl final
}
HeapObjectRef Ref(JSHeapBroker* broker) const {
- return HeapObjectRef(broker, this->ResolvedValue());
+ // TODO(jgruber,chromium:1209798): Using kAssumeMemoryFence works around
+ // the fact that the graph stores handles (and not refs). The assumption is
+ // that any handle inserted into the graph is safe to read; but we don't
+ // preserve the reason why it is safe to read. Thus we must over-approximate
+ // here and assume the existence of a memory fence. In the future, we should
+ // consider having the graph store ObjectRefs or ObjectData pointer instead,
+ // which would make new ref construction here unnecessary.
+ return MakeRefAssumeMemoryFence(broker, this->ResolvedValue());
}
};
diff --git a/deps/v8/src/compiler/node-observer.h b/deps/v8/src/compiler/node-observer.h
index 8978156464..a6c4619262 100644
--- a/deps/v8/src/compiler/node-observer.h
+++ b/deps/v8/src/compiler/node-observer.h
@@ -80,7 +80,7 @@ class NodeObserver : public ZoneObject {
bool has_observed_changes() const { return has_observed_changes_; }
private:
- bool has_observed_changes_ = false;
+ std::atomic<bool> has_observed_changes_{false};
};
inline NodeObserver::~NodeObserver() = default;
diff --git a/deps/v8/src/compiler/node-properties.h b/deps/v8/src/compiler/node-properties.h
index bec18b1e59..50f3a17136 100644
--- a/deps/v8/src/compiler/node-properties.h
+++ b/deps/v8/src/compiler/node-properties.h
@@ -28,7 +28,7 @@ class V8_EXPORT_PRIVATE NodeProperties {
// Inputs are always arranged in order as follows:
// 0 [ values, context, frame state, effects, control ] node->InputCount()
- static int FirstValueIndex(Node* node) { return 0; }
+ static int FirstValueIndex(const Node* node) { return 0; }
static int FirstContextIndex(Node* node) { return PastValueIndex(node); }
static int FirstFrameStateIndex(Node* node) { return PastContextIndex(node); }
static int FirstEffectIndex(Node* node) { return PastFrameStateIndex(node); }
@@ -65,6 +65,12 @@ class V8_EXPORT_PRIVATE NodeProperties {
return node->InputAt(FirstValueIndex(node) + index);
}
+ static const Node* GetValueInput(const Node* node, int index) {
+ CHECK_LE(0, index);
+ CHECK_LT(index, node->op()->ValueInputCount());
+ return node->InputAt(FirstValueIndex(node) + index);
+ }
+
static Node* GetContextInput(Node* node) {
CHECK(OperatorProperties::HasContextInput(node->op()));
return node->InputAt(FirstContextIndex(node));
@@ -249,7 +255,7 @@ class V8_EXPORT_PRIVATE NodeProperties {
// Type.
static bool IsTyped(const Node* node) { return !node->type().IsInvalid(); }
- static Type GetType(Node* node) {
+ static Type GetType(const Node* node) {
DCHECK(IsTyped(node));
return node->type();
}
diff --git a/deps/v8/src/compiler/opcodes.h b/deps/v8/src/compiler/opcodes.h
index 3e5314d857..f51c82df48 100644
--- a/deps/v8/src/compiler/opcodes.h
+++ b/deps/v8/src/compiler/opcodes.h
@@ -385,7 +385,6 @@
V(NumberSilenceNaN)
#define SIMPLIFIED_BIGINT_UNOP_LIST(V) \
- V(BigIntAsUintN) \
V(BigIntNegate) \
V(CheckBigInt)
@@ -491,13 +490,16 @@
V(TransitionAndStoreNumberElement) \
V(TransitionElementsKind) \
V(TypeOf) \
- V(UpdateInterruptBudget)
+ V(UpdateInterruptBudget) \
+ V(VerifyType)
#define SIMPLIFIED_SPECULATIVE_BIGINT_BINOP_LIST(V) \
V(SpeculativeBigIntAdd) \
V(SpeculativeBigIntSubtract)
-#define SIMPLIFIED_SPECULATIVE_BIGINT_UNOP_LIST(V) V(SpeculativeBigIntNegate)
+#define SIMPLIFIED_SPECULATIVE_BIGINT_UNOP_LIST(V) \
+ V(SpeculativeBigIntAsUintN) \
+ V(SpeculativeBigIntNegate)
#define SIMPLIFIED_OP_LIST(V) \
SIMPLIFIED_CHANGE_OP_LIST(V) \
@@ -570,6 +572,8 @@
V(Word64Sar) \
V(Word64Rol) \
V(Word64Ror) \
+ V(Word64RolLowerable) \
+ V(Word64RorLowerable) \
V(Int64Add) \
V(Int64AddWithOverflow) \
V(Int64Sub) \
@@ -688,6 +692,8 @@
V(Word64Popcnt) \
V(Word64Clz) \
V(Word64Ctz) \
+ V(Word64ClzLowerable) \
+ V(Word64CtzLowerable) \
V(Word64ReverseBits) \
V(Word64ReverseBytes) \
V(Simd128ReverseBytes) \
@@ -734,6 +740,8 @@
V(Float64ExtractHighWord32) \
V(Float64InsertLowWord32) \
V(Float64InsertHighWord32) \
+ V(Word32Select) \
+ V(Word64Select) \
V(Float32Select) \
V(Float64Select) \
V(TaggedPoisonOnSpeculation) \
diff --git a/deps/v8/src/compiler/operation-typer.cc b/deps/v8/src/compiler/operation-typer.cc
index 8b889c6948..9e5816559e 100644
--- a/deps/v8/src/compiler/operation-typer.cc
+++ b/deps/v8/src/compiler/operation-typer.cc
@@ -576,8 +576,7 @@ Type OperationTyper::NumberSilenceNaN(Type type) {
return type;
}
-Type OperationTyper::BigIntAsUintN(Type type) {
- DCHECK(type.Is(Type::BigInt()));
+Type OperationTyper::SpeculativeBigIntAsUintN(Type type) {
return Type::BigInt();
}
@@ -1263,14 +1262,12 @@ Type OperationTyper::StrictEqual(Type lhs, Type rhs) {
Type OperationTyper::CheckBounds(Type index, Type length) {
DCHECK(length.Is(cache_->kPositiveSafeInteger));
if (length.Is(cache_->kSingletonZero)) return Type::None();
- Type mask = Type::Range(0.0, length.Max() - 1, zone());
+ Type const upper_bound = Type::Range(0.0, length.Max() - 1, zone());
+ if (index.Maybe(Type::String())) return upper_bound;
if (index.Maybe(Type::MinusZero())) {
index = Type::Union(index, cache_->kSingletonZero, zone());
}
- if (index.Maybe(Type::String())) {
- index = Type::Union(index, cache_->kIntPtr, zone());
- }
- return Type::Intersect(index, mask, zone());
+ return Type::Intersect(index, upper_bound, zone());
}
Type OperationTyper::CheckFloat64Hole(Type type) {
diff --git a/deps/v8/src/compiler/operator.h b/deps/v8/src/compiler/operator.h
index e47441208f..4206e753f1 100644
--- a/deps/v8/src/compiler/operator.h
+++ b/deps/v8/src/compiler/operator.h
@@ -5,7 +5,7 @@
#ifndef V8_COMPILER_OPERATOR_H_
#define V8_COMPILER_OPERATOR_H_
-#include <ostream> // NOLINT(readability/streams)
+#include <ostream>
#include "src/base/compiler-specific.h"
#include "src/base/flags.h"
diff --git a/deps/v8/src/compiler/pipeline.cc b/deps/v8/src/compiler/pipeline.cc
index f80f3064ce..2ce65780ca 100644
--- a/deps/v8/src/compiler/pipeline.cc
+++ b/deps/v8/src/compiler/pipeline.cc
@@ -4,7 +4,7 @@
#include "src/compiler/pipeline.h"
-#include <fstream> // NOLINT(readability/streams)
+#include <fstream>
#include <iostream>
#include <memory>
#include <sstream>
@@ -67,7 +67,6 @@
#include "src/compiler/pipeline-statistics.h"
#include "src/compiler/redundancy-elimination.h"
#include "src/compiler/schedule.h"
-#include "src/compiler/scheduled-machine-lowering.h"
#include "src/compiler/scheduler.h"
#include "src/compiler/select-lowering.h"
#include "src/compiler/serializer-for-background-compilation.h"
@@ -139,8 +138,7 @@ class PipelineData {
// For main entry point.
PipelineData(ZoneStats* zone_stats, Isolate* isolate,
OptimizedCompilationInfo* info,
- PipelineStatistics* pipeline_statistics,
- bool is_concurrent_inlining)
+ PipelineStatistics* pipeline_statistics)
: isolate_(isolate),
allocator_(isolate->allocator()),
info_(info),
@@ -157,9 +155,9 @@ class PipelineData {
instruction_zone_(instruction_zone_scope_.zone()),
codegen_zone_scope_(zone_stats_, kCodegenZoneName),
codegen_zone_(codegen_zone_scope_.zone()),
- broker_(new JSHeapBroker(isolate_, info_->zone(),
- info_->trace_heap_broker(),
- is_concurrent_inlining, info->code_kind())),
+ broker_(new JSHeapBroker(
+ isolate_, info_->zone(), info_->trace_heap_broker(),
+ info_->concurrent_inlining(), info->code_kind())),
register_allocation_zone_scope_(zone_stats_,
kRegisterAllocationZoneName),
register_allocation_zone_(register_allocation_zone_scope_.zone()),
@@ -783,6 +781,7 @@ class NodeOriginsWrapper final : public Reducer {
class V8_NODISCARD PipelineRunScope {
public:
+#ifdef V8_RUNTIME_CALL_STATS
PipelineRunScope(
PipelineData* data, const char* phase_name,
RuntimeCallCounterId runtime_call_counter_id,
@@ -794,6 +793,14 @@ class V8_NODISCARD PipelineRunScope {
runtime_call_counter_id, counter_mode) {
DCHECK_NOT_NULL(phase_name);
}
+#else // V8_RUNTIME_CALL_STATS
+ PipelineRunScope(PipelineData* data, const char* phase_name)
+ : phase_scope_(data->pipeline_statistics(), phase_name),
+ zone_scope_(data->zone_stats(), phase_name),
+ origin_scope_(data->node_origins(), phase_name) {
+ DCHECK_NOT_NULL(phase_name);
+ }
+#endif // V8_RUNTIME_CALL_STATS
Zone* zone() { return zone_scope_.zone(); }
@@ -801,7 +808,9 @@ class V8_NODISCARD PipelineRunScope {
PhaseScope phase_scope_;
ZoneStats::Scope zone_scope_;
NodeOriginTable::PhaseScope origin_scope_;
+#ifdef V8_RUNTIME_CALL_STATS
RuntimeCallTimerScope runtime_call_timer_scope;
+#endif // V8_RUNTIME_CALL_STATS
};
// LocalIsolateScope encapsulates the phase where persistent handles are
@@ -902,8 +911,7 @@ void PrintCode(Isolate* isolate, Handle<Code> code,
const bool print_code =
FLAG_print_code ||
(info->IsOptimizing() && FLAG_print_opt_code &&
- info->shared_info()->PassesFilter(FLAG_print_opt_code_filter)) ||
- (info->IsNativeContextIndependent() && FLAG_print_nci_code);
+ info->shared_info()->PassesFilter(FLAG_print_opt_code_filter));
if (print_code) {
std::unique_ptr<char[]> debug_name = info->GetDebugName();
CodeTracer::StreamScope tracing_scope(isolate->GetCodeTracer());
@@ -1095,15 +1103,6 @@ class PipelineCompilationJob final : public OptimizedCompilationJob {
Linkage* linkage_;
};
-namespace {
-
-bool ShouldUseConcurrentInlining(CodeKind code_kind, bool is_osr) {
- if (is_osr) return false;
- return code_kind == CodeKind::TURBOPROP || FLAG_concurrent_inlining;
-}
-
-} // namespace
-
PipelineCompilationJob::PipelineCompilationJob(
Isolate* isolate, Handle<SharedFunctionInfo> shared_info,
Handle<JSFunction> function, BytecodeOffset osr_offset,
@@ -1116,17 +1115,14 @@ PipelineCompilationJob::PipelineCompilationJob(
kPipelineCompilationJobZoneName),
zone_stats_(function->GetIsolate()->allocator()),
compilation_info_(&zone_, function->GetIsolate(), shared_info, function,
- code_kind),
+ code_kind, osr_offset, osr_frame),
pipeline_statistics_(CreatePipelineStatistics(
handle(Script::cast(shared_info->script()), isolate),
compilation_info(), function->GetIsolate(), &zone_stats_)),
data_(&zone_stats_, function->GetIsolate(), compilation_info(),
- pipeline_statistics_.get(),
- ShouldUseConcurrentInlining(code_kind, !osr_offset.IsNone())),
+ pipeline_statistics_.get()),
pipeline_(&data_),
- linkage_(nullptr) {
- compilation_info_.SetOptimizingForOsr(osr_offset, osr_frame);
-}
+ linkage_(nullptr) {}
PipelineCompilationJob::~PipelineCompilationJob() = default;
@@ -1159,14 +1155,13 @@ PipelineCompilationJob::Status PipelineCompilationJob::PrepareJobImpl(
return AbortOptimization(BailoutReason::kFunctionTooBig);
}
- if (!FLAG_always_opt && !compilation_info()->IsNativeContextIndependent()) {
+ if (!FLAG_always_opt) {
compilation_info()->set_bailout_on_uninitialized();
}
if (FLAG_turbo_loop_peeling) {
compilation_info()->set_loop_peeling();
}
- if (FLAG_turbo_inlining && !compilation_info()->IsTurboprop() &&
- !compilation_info()->IsNativeContextIndependent()) {
+ if (FLAG_turbo_inlining && !compilation_info()->IsTurboprop()) {
compilation_info()->set_inlining();
}
@@ -1188,13 +1183,11 @@ PipelineCompilationJob::Status PipelineCompilationJob::PrepareJobImpl(
// Determine whether to specialize the code for the function's context.
// We can't do this in the case of OSR, because we want to cache the
// generated code on the native context keyed on SharedFunctionInfo.
- // We also can't do this for native context independent code (yet).
// TODO(mythria): Check if it is better to key the OSR cache on JSFunction and
// allow context specialization for OSR code.
if (compilation_info()->closure()->raw_feedback_cell().map() ==
ReadOnlyRoots(isolate).one_closure_cell_map() &&
!compilation_info()->is_osr() &&
- !compilation_info()->IsNativeContextIndependent() &&
!compilation_info()->IsTurboprop()) {
compilation_info()->set_function_context_specializing();
data_.ChooseSpecializationContext();
@@ -1222,7 +1215,7 @@ PipelineCompilationJob::Status PipelineCompilationJob::PrepareJobImpl(
}
}
- if (FLAG_turbo_direct_heap_access) {
+ if (compilation_info()->concurrent_inlining()) {
isolate->heap()->PublishPendingAllocations();
}
@@ -1262,8 +1255,7 @@ PipelineCompilationJob::Status PipelineCompilationJob::FinalizeJobImpl(
// Ensure that the RuntimeCallStats table of main thread is available for
// phases happening during PrepareJob.
PipelineJobScope scope(&data_, isolate->counters()->runtime_call_stats());
- RuntimeCallTimerScope runtimeTimer(
- isolate, RuntimeCallCounterId::kOptimizeFinalizePipelineJob);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kOptimizeFinalizePipelineJob);
MaybeHandle<Code> maybe_code = pipeline_.FinalizeCode();
Handle<Code> code;
if (!maybe_code.ToHandle(&code)) {
@@ -1309,17 +1301,26 @@ void PipelineCompilationJob::RegisterWeakObjectsInOptimizedCode(
template <typename Phase, typename... Args>
void PipelineImpl::Run(Args&&... args) {
+#ifdef V8_RUNTIME_CALL_STATS
PipelineRunScope scope(this->data_, Phase::phase_name(),
Phase::kRuntimeCallCounterId, Phase::kCounterMode);
+#else
+ PipelineRunScope scope(this->data_, Phase::phase_name());
+#endif
Phase phase;
phase.Run(this->data_, scope.zone(), std::forward<Args>(args)...);
}
+#ifdef V8_RUNTIME_CALL_STATS
#define DECL_PIPELINE_PHASE_CONSTANTS_HELPER(Name, Mode) \
static const char* phase_name() { return "V8.TF" #Name; } \
static constexpr RuntimeCallCounterId kRuntimeCallCounterId = \
RuntimeCallCounterId::kOptimize##Name; \
static constexpr RuntimeCallStats::CounterMode kCounterMode = Mode;
+#else // V8_RUNTIME_CALL_STATS
+#define DECL_PIPELINE_PHASE_CONSTANTS_HELPER(Name, Mode) \
+ static const char* phase_name() { return "V8.TF" #Name; }
+#endif // V8_RUNTIME_CALL_STATS
#define DECL_PIPELINE_PHASE_CONSTANTS(Name) \
DECL_PIPELINE_PHASE_CONSTANTS_HELPER(Name, RuntimeCallStats::kThreadSpecific)
@@ -1339,7 +1340,7 @@ struct GraphBuilderPhase {
flags |= BytecodeGraphBuilderFlag::kBailoutOnUninitialized;
}
- JSFunctionRef closure(data->broker(), data->info()->closure());
+ JSFunctionRef closure = MakeRef(data->broker(), data->info()->closure());
CallFrequency frequency(1.0f);
BuildGraphFromBytecode(
data->broker(), temp_zone, closure.shared(),
@@ -1361,7 +1362,8 @@ struct InliningPhase {
data->broker(), data->jsgraph()->Dead(),
data->observe_node_manager());
DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ data->common(), temp_zone,
+ info->concurrent_inlining());
CheckpointElimination checkpoint_elimination(&graph_reducer);
CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
data->broker(), data->common(),
@@ -1370,7 +1372,7 @@ struct InliningPhase {
if (data->info()->bailout_on_uninitialized()) {
call_reducer_flags |= JSCallReducer::kBailoutOnUninitialized;
}
- if (FLAG_turbo_inline_js_wasm_calls && data->info()->inlining()) {
+ if (data->info()->inline_js_wasm_calls() && data->info()->inlining()) {
call_reducer_flags |= JSCallReducer::kInlineJSToWasmCalls;
}
JSCallReducer call_reducer(&graph_reducer, data->jsgraph(), data->broker(),
@@ -1400,12 +1402,12 @@ struct InliningPhase {
JSIntrinsicLowering intrinsic_lowering(&graph_reducer, data->jsgraph(),
data->broker());
AddReducer(data, &graph_reducer, &dead_code_elimination);
- AddReducer(data, &graph_reducer, &checkpoint_elimination);
- AddReducer(data, &graph_reducer, &common_reducer);
- if (!data->info()->IsNativeContextIndependent()) {
- AddReducer(data, &graph_reducer, &native_context_specialization);
- AddReducer(data, &graph_reducer, &context_specialization);
+ if (!data->info()->IsTurboprop()) {
+ AddReducer(data, &graph_reducer, &checkpoint_elimination);
+ AddReducer(data, &graph_reducer, &common_reducer);
}
+ AddReducer(data, &graph_reducer, &native_context_specialization);
+ AddReducer(data, &graph_reducer, &context_specialization);
AddReducer(data, &graph_reducer, &intrinsic_lowering);
AddReducer(data, &graph_reducer, &call_reducer);
if (data->info()->inlining()) {
@@ -1431,7 +1433,8 @@ struct WasmInliningPhase {
GraphReducer graph_reducer(temp_zone, data->graph(), &info->tick_counter(),
data->broker(), data->jsgraph()->Dead());
DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ data->common(), temp_zone,
+ info->concurrent_inlining());
CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
data->broker(), data->common(),
data->machine(), temp_zone);
@@ -1503,7 +1506,7 @@ struct HeapBrokerInitializationPhase {
DECL_MAIN_THREAD_PIPELINE_PHASE_CONSTANTS(HeapBrokerInitialization)
void Run(PipelineData* data, Zone* temp_zone) {
- data->broker()->InitializeAndStartSerializing(data->native_context());
+ data->broker()->InitializeAndStartSerializing();
}
};
@@ -1547,8 +1550,16 @@ struct SerializationPhase {
data->zone_stats(), data->broker(), data->dependencies(),
data->info()->closure(), flags, data->info()->osr_offset());
if (data->specialization_context().IsJust()) {
- ContextRef(data->broker(),
- data->specialization_context().FromJust().context);
+ MakeRef(data->broker(),
+ data->specialization_context().FromJust().context);
+ }
+ if (FLAG_turbo_concurrent_get_property_access_info) {
+ data->broker()->ClearCachedPropertyAccessInfos();
+ data->dependencies()->ClearForConcurrentGetPropertyAccessInfo();
+ }
+ if (FLAG_stress_concurrent_inlining) {
+ // Force re-serialization from the background thread.
+ data->broker()->ClearReconstructibleData();
}
}
};
@@ -1560,8 +1571,9 @@ struct TypedLoweringPhase {
GraphReducer graph_reducer(
temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
data->jsgraph()->Dead(), data->observe_node_manager());
- DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ DeadCodeElimination dead_code_elimination(
+ &graph_reducer, data->graph(), data->common(), temp_zone,
+ data->info()->concurrent_inlining());
JSCreateLowering create_lowering(&graph_reducer, data->dependencies(),
data->jsgraph(), data->broker(),
temp_zone);
@@ -1579,10 +1591,10 @@ struct TypedLoweringPhase {
data->machine(), temp_zone);
AddReducer(data, &graph_reducer, &dead_code_elimination);
- if (!data->info()->IsNativeContextIndependent()) {
- AddReducer(data, &graph_reducer, &create_lowering);
+ AddReducer(data, &graph_reducer, &create_lowering);
+ if (!data->info()->IsTurboprop()) {
+ AddReducer(data, &graph_reducer, &constant_folding_reducer);
}
- AddReducer(data, &graph_reducer, &constant_folding_reducer);
AddReducer(data, &graph_reducer, &typed_lowering);
AddReducer(data, &graph_reducer, &typed_optimization);
AddReducer(data, &graph_reducer, &simple_reducer);
@@ -1747,8 +1759,9 @@ struct EarlyOptimizationPhase {
GraphReducer graph_reducer(
temp_zone, data->graph(), &data->info()->tick_counter(), data->broker(),
data->jsgraph()->Dead(), data->observe_node_manager());
- DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ DeadCodeElimination dead_code_elimination(
+ &graph_reducer, data->graph(), data->common(), temp_zone,
+ data->info()->concurrent_inlining());
SimplifiedOperatorReducer simple_reducer(&graph_reducer, data->jsgraph(),
data->broker());
RedundancyElimination redundancy_elimination(&graph_reducer, temp_zone);
@@ -1804,11 +1817,6 @@ struct EffectControlLinearizationPhase {
TraceScheduleAndVerify(data->info(), data, schedule,
"effect linearization schedule");
- MaskArrayIndexEnable mask_array_index =
- (data->info()->GetPoisoningMitigationLevel() !=
- PoisoningMitigationLevel::kDontPoison)
- ? MaskArrayIndexEnable::kMaskArrayIndex
- : MaskArrayIndexEnable::kDoNotMaskArrayIndex;
// Post-pass for wiring the control/effects
// - connect allocating representation changes into the control&effect
// chains and lower them,
@@ -1816,7 +1824,7 @@ struct EffectControlLinearizationPhase {
// - introduce effect phis and rewire effects to get SSA again.
LinearizeEffectControl(data->jsgraph(), schedule, temp_zone,
data->source_positions(), data->node_origins(),
- mask_array_index, MaintainSchedule::kDiscard,
+ data->info()->GetPoisoningMitigationLevel(),
data->broker());
}
{
@@ -1829,8 +1837,9 @@ struct EffectControlLinearizationPhase {
&data->info()->tick_counter(), data->broker(),
data->jsgraph()->Dead(),
data->observe_node_manager());
- DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ DeadCodeElimination dead_code_elimination(
+ &graph_reducer, data->graph(), data->common(), temp_zone,
+ data->info()->concurrent_inlining());
CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
data->broker(), data->common(),
data->machine(), temp_zone);
@@ -1868,8 +1877,9 @@ struct LoadEliminationPhase {
BranchElimination branch_condition_elimination(&graph_reducer,
data->jsgraph(), temp_zone,
BranchElimination::kEARLY);
- DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ DeadCodeElimination dead_code_elimination(
+ &graph_reducer, data->graph(), data->common(), temp_zone,
+ data->info()->concurrent_inlining());
RedundancyElimination redundancy_elimination(&graph_reducer, temp_zone);
LoadElimination load_elimination(&graph_reducer, data->jsgraph(),
temp_zone);
@@ -1936,8 +1946,9 @@ struct LateOptimizationPhase {
data->jsgraph()->Dead(), data->observe_node_manager());
BranchElimination branch_condition_elimination(&graph_reducer,
data->jsgraph(), temp_zone);
- DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ DeadCodeElimination dead_code_elimination(
+ &graph_reducer, data->graph(), data->common(), temp_zone,
+ data->info()->concurrent_inlining());
ValueNumberingReducer value_numbering(temp_zone, data->graph()->zone());
MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph());
CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
@@ -2000,43 +2011,22 @@ struct ScheduledEffectControlLinearizationPhase {
DECL_PIPELINE_PHASE_CONSTANTS(ScheduledEffectControlLinearization)
void Run(PipelineData* data, Zone* temp_zone) {
- MaskArrayIndexEnable mask_array_index =
- (data->info()->GetPoisoningMitigationLevel() !=
- PoisoningMitigationLevel::kDontPoison)
- ? MaskArrayIndexEnable::kMaskArrayIndex
- : MaskArrayIndexEnable::kDoNotMaskArrayIndex;
// Post-pass for wiring the control/effects
// - connect allocating representation changes into the control&effect
// chains and lower them,
// - get rid of the region markers,
- // - introduce effect phis and rewire effects to get SSA again.
- LinearizeEffectControl(data->jsgraph(), data->schedule(), temp_zone,
+ // - introduce effect phis and rewire effects to get SSA again,
+ // - lower simplified memory and select nodes to machine level nodes.
+ LowerToMachineSchedule(data->jsgraph(), data->schedule(), temp_zone,
data->source_positions(), data->node_origins(),
- mask_array_index, MaintainSchedule::kMaintain,
+ data->info()->GetPoisoningMitigationLevel(),
data->broker());
// TODO(rmcilroy) Avoid having to rebuild rpo_order on schedule each time.
Scheduler::ComputeSpecialRPO(temp_zone, data->schedule());
- if (FLAG_turbo_verify) Scheduler::GenerateDominatorTree(data->schedule());
- TraceScheduleAndVerify(data->info(), data, data->schedule(),
- "effect linearization schedule");
- }
-};
-
-struct ScheduledMachineLoweringPhase {
- DECL_PIPELINE_PHASE_CONSTANTS(ScheduledMachineLowering)
-
- void Run(PipelineData* data, Zone* temp_zone) {
- ScheduledMachineLowering machine_lowering(
- data->jsgraph(), data->schedule(), temp_zone, data->source_positions(),
- data->node_origins(), data->info()->GetPoisoningMitigationLevel());
- machine_lowering.Run();
-
- // TODO(rmcilroy) Avoid having to rebuild rpo_order on schedule each time.
- Scheduler::ComputeSpecialRPO(temp_zone, data->schedule());
Scheduler::GenerateDominatorTree(data->schedule());
TraceScheduleAndVerify(data->info(), data, data->schedule(),
- "machine lowered schedule");
+ "effect linearization schedule");
}
};
@@ -2051,8 +2041,9 @@ struct CsaEarlyOptimizationPhase {
allow_signalling_nan);
BranchElimination branch_condition_elimination(&graph_reducer,
data->jsgraph(), temp_zone);
- DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ DeadCodeElimination dead_code_elimination(
+ &graph_reducer, data->graph(), data->common(), temp_zone,
+ data->info()->concurrent_inlining());
CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
data->broker(), data->common(),
data->machine(), temp_zone);
@@ -2078,8 +2069,9 @@ struct CsaOptimizationPhase {
data->jsgraph()->Dead(), data->observe_node_manager());
BranchElimination branch_condition_elimination(&graph_reducer,
data->jsgraph(), temp_zone);
- DeadCodeElimination dead_code_elimination(&graph_reducer, data->graph(),
- data->common(), temp_zone);
+ DeadCodeElimination dead_code_elimination(
+ &graph_reducer, data->graph(), data->common(), temp_zone,
+ data->info()->concurrent_inlining());
MachineOperatorReducer machine_reducer(&graph_reducer, data->jsgraph(),
allow_signalling_nan);
CommonOperatorReducer common_reducer(&graph_reducer, data->graph(),
@@ -2653,12 +2645,15 @@ bool PipelineImpl::CreateGraph() {
RunPrintAndVerify(InliningPhase::phase_name(), true);
// Remove dead->live edges from the graph.
- Run<EarlyGraphTrimmingPhase>();
- RunPrintAndVerify(EarlyGraphTrimmingPhase::phase_name(), true);
+ if (!data->info()->IsTurboprop()) {
+ Run<EarlyGraphTrimmingPhase>();
+ RunPrintAndVerify(EarlyGraphTrimmingPhase::phase_name(), true);
+ }
// Determine the Typer operation flags.
{
- SharedFunctionInfoRef shared_info(data->broker(), info()->shared_info());
+ SharedFunctionInfoRef shared_info =
+ MakeRef(data->broker(), info()->shared_info());
if (is_sloppy(shared_info.language_mode()) &&
shared_info.IsUserJavaScript()) {
// Sloppy mode functions always have an Object for this.
@@ -2735,7 +2730,7 @@ bool PipelineImpl::OptimizeGraph(Linkage* linkage) {
#if V8_ENABLE_WEBASSEMBLY
if (data->has_js_wasm_calls()) {
- DCHECK(FLAG_turbo_inline_js_wasm_calls);
+ DCHECK(data->info()->inline_js_wasm_calls());
Run<WasmInliningPhase>();
RunPrintAndVerify(WasmInliningPhase::phase_name(), true);
}
@@ -2862,9 +2857,6 @@ bool PipelineImpl::OptimizeGraphForMidTier(Linkage* linkage) {
RunPrintAndVerify(ScheduledEffectControlLinearizationPhase::phase_name(),
true);
- Run<ScheduledMachineLoweringPhase>();
- RunPrintAndVerify(ScheduledMachineLoweringPhase::phase_name(), true);
-
data->source_positions()->RemoveDecorator();
if (data->info()->trace_turbo_json()) {
data->node_origins()->RemoveDecorator();
@@ -2966,8 +2958,7 @@ MaybeHandle<Code> Pipeline::GenerateCodeForCodeStub(
should_optimize_jumps ? &jump_opt : nullptr, options,
profile_data);
PipelineJobScope scope(&data, isolate->counters()->runtime_call_stats());
- RuntimeCallTimerScope timer_scope(isolate,
- RuntimeCallCounterId::kOptimizeCode);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kOptimizeCode);
data.set_verify_graph(FLAG_verify_csa);
std::unique_ptr<PipelineStatistics> pipeline_statistics;
if (FLAG_turbo_stats || FLAG_turbo_stats_nvp) {
@@ -3290,8 +3281,7 @@ MaybeHandle<Code> Pipeline::GenerateCodeForTesting(
CreatePipelineStatistics(Handle<Script>::null(), info, isolate,
&zone_stats));
- PipelineData data(&zone_stats, isolate, info, pipeline_statistics.get(),
- i::FLAG_concurrent_inlining);
+ PipelineData data(&zone_stats, isolate, info, pipeline_statistics.get());
PipelineImpl pipeline(&data);
Linkage linkage(Linkage::ComputeIncoming(data.instruction_zone(), info));
@@ -3422,8 +3412,10 @@ void PipelineImpl::ComputeScheduledGraph() {
// We should only schedule the graph if it is not scheduled yet.
DCHECK_NULL(data->schedule());
- Run<LateGraphTrimmingPhase>();
- RunPrintAndVerify(LateGraphTrimmingPhase::phase_name(), true);
+ if (!data->info()->IsTurboprop()) {
+ Run<LateGraphTrimmingPhase>();
+ RunPrintAndVerify(LateGraphTrimmingPhase::phase_name(), true);
+ }
Run<ComputeSchedulePhase>();
TraceScheduleAndVerify(data->info(), data, data->schedule(), "schedule");
diff --git a/deps/v8/src/compiler/processed-feedback.h b/deps/v8/src/compiler/processed-feedback.h
index 4cecd338c5..78163a23a7 100644
--- a/deps/v8/src/compiler/processed-feedback.h
+++ b/deps/v8/src/compiler/processed-feedback.h
@@ -197,20 +197,24 @@ class MinimorphicLoadPropertyAccessFeedback : public ProcessedFeedback {
class CallFeedback : public ProcessedFeedback {
public:
CallFeedback(base::Optional<HeapObjectRef> target, float frequency,
- SpeculationMode mode, FeedbackSlotKind slot_kind)
+ SpeculationMode mode, CallFeedbackContent call_feedback_content,
+ FeedbackSlotKind slot_kind)
: ProcessedFeedback(kCall, slot_kind),
target_(target),
frequency_(frequency),
- mode_(mode) {}
+ mode_(mode),
+ content_(call_feedback_content) {}
base::Optional<HeapObjectRef> target() const { return target_; }
float frequency() const { return frequency_; }
SpeculationMode speculation_mode() const { return mode_; }
+ CallFeedbackContent call_feedback_content() const { return content_; }
private:
base::Optional<HeapObjectRef> const target_;
float const frequency_;
SpeculationMode const mode_;
+ CallFeedbackContent const content_;
};
template <class T, ProcessedFeedback::Kind K>
diff --git a/deps/v8/src/compiler/property-access-builder.cc b/deps/v8/src/compiler/property-access-builder.cc
index c5a70555a7..317d21a712 100644
--- a/deps/v8/src/compiler/property-access-builder.cc
+++ b/deps/v8/src/compiler/property-access-builder.cc
@@ -35,7 +35,7 @@ SimplifiedOperatorBuilder* PropertyAccessBuilder::simplified() const {
bool HasOnlyStringMaps(JSHeapBroker* broker,
ZoneVector<Handle<Map>> const& maps) {
for (auto map : maps) {
- MapRef map_ref(broker, map);
+ MapRef map_ref = MakeRef(broker, map);
if (!map_ref.IsStringMap()) return false;
}
return true;
@@ -46,7 +46,7 @@ namespace {
bool HasOnlyNumberMaps(JSHeapBroker* broker,
ZoneVector<Handle<Map>> const& maps) {
for (auto map : maps) {
- MapRef map_ref(broker, map);
+ MapRef map_ref = MakeRef(broker, map);
if (map_ref.instance_type() != HEAP_NUMBER_TYPE) return false;
}
return true;
@@ -89,7 +89,7 @@ void PropertyAccessBuilder::BuildCheckMaps(
MapRef object_map = m.Ref(broker()).map();
if (object_map.is_stable()) {
for (Handle<Map> map : maps) {
- if (MapRef(broker(), map).equals(object_map)) {
+ if (MakeRef(broker(), map).equals(object_map)) {
dependencies()->DependOnStableMap(object_map);
return;
}
@@ -99,7 +99,7 @@ void PropertyAccessBuilder::BuildCheckMaps(
ZoneHandleSet<Map> map_set;
CheckMapsFlags flags = CheckMapsFlag::kNone;
for (Handle<Map> map : maps) {
- MapRef object_map(broker(), map);
+ MapRef object_map = MakeRef(broker(), map);
map_set.insert(object_map.object(), graph()->zone());
if (object_map.is_migration_target()) {
flags |= CheckMapsFlag::kTryMigrateInstance;
@@ -153,7 +153,8 @@ Node* PropertyAccessBuilder::FoldLoadDictPrototypeConstant(
DCHECK(V8_DICT_PROPERTY_CONST_TRACKING_BOOL);
DCHECK(access_info.IsDictionaryProtoDataConstant());
- JSObjectRef holder(broker(), access_info.holder().ToHandleChecked());
+ JSObjectRef holder =
+ MakeRef(broker(), access_info.holder().ToHandleChecked());
base::Optional<ObjectRef> value =
holder.GetOwnDictionaryProperty(access_info.dictionary_index());
@@ -163,15 +164,15 @@ Node* PropertyAccessBuilder::FoldLoadDictPrototypeConstant(
if (!map->IsJSReceiverMap()) {
// Perform the implicit ToObject for primitives here.
// Implemented according to ES6 section 7.3.2 GetV (V, P).
- Handle<JSFunction> constructor =
+ JSFunction constructor =
Map::GetConstructorFunction(
- map, broker()->target_native_context().object())
- .ToHandleChecked();
- map = handle(constructor->initial_map(), isolate());
+ *map, *broker()->target_native_context().object())
+ .value();
+ map = handle(constructor.initial_map(), isolate());
DCHECK(map->IsJSObjectMap());
}
dependencies()->DependOnConstantInDictionaryPrototypeChain(
- MapRef{broker(), map}, NameRef{broker(), access_info.name()},
+ MakeRef(broker(), map), MakeRef(broker(), access_info.name()),
value.value(), PropertyKind::kData);
}
@@ -197,7 +198,7 @@ Node* PropertyAccessBuilder::TryFoldLoadConstantDataField(
if (std::find_if(
access_info.lookup_start_object_maps().begin(),
access_info.lookup_start_object_maps().end(), [&](Handle<Map> map) {
- return MapRef(broker(), map).equals(lookup_start_object_map);
+ return MakeRef(broker(), map).equals(lookup_start_object_map);
}) == access_info.lookup_start_object_maps().end()) {
// The map of the lookup_start_object is not in the feedback, let us bail
// out.
@@ -206,7 +207,7 @@ Node* PropertyAccessBuilder::TryFoldLoadConstantDataField(
holder = m.Ref(broker()).AsJSObject().object();
}
- JSObjectRef holder_ref(broker(), holder);
+ JSObjectRef holder_ref = MakeRef(broker(), holder);
base::Optional<ObjectRef> value = holder_ref.GetOwnFastDataProperty(
access_info.field_representation(), access_info.field_index());
if (!value.has_value()) {
@@ -329,7 +330,7 @@ Node* PropertyAccessBuilder::BuildLoadDataField(
// used by the LoadElimination to eliminate map checks on the result.
Handle<Map> field_map;
if (access_info.field_map().ToHandle(&field_map)) {
- MapRef field_map_ref(broker(), field_map);
+ MapRef field_map_ref = MakeRef(broker(), field_map);
if (field_map_ref.is_stable()) {
dependencies()->DependOnStableMap(field_map_ref);
field_access.map = field_map;
diff --git a/deps/v8/src/compiler/raw-machine-assembler.cc b/deps/v8/src/compiler/raw-machine-assembler.cc
index f79776bad9..7ed217d4e3 100644
--- a/deps/v8/src/compiler/raw-machine-assembler.cc
+++ b/deps/v8/src/compiler/raw-machine-assembler.cc
@@ -747,7 +747,8 @@ Node* CallCFunctionImpl(
}
for (const auto& arg : args) builder.AddParam(arg.first);
- bool caller_saved_fp_regs = caller_saved_regs && (mode == kSaveFPRegs);
+ bool caller_saved_fp_regs =
+ caller_saved_regs && (mode == SaveFPRegsMode::kSave);
CallDescriptor::Flags flags = CallDescriptor::kNoFlags;
if (caller_saved_regs) flags |= CallDescriptor::kCallerSavedRegisters;
if (caller_saved_fp_regs) flags |= CallDescriptor::kCallerSavedFPRegisters;
@@ -772,14 +773,14 @@ Node* RawMachineAssembler::CallCFunction(
Node* function, base::Optional<MachineType> return_type,
std::initializer_list<RawMachineAssembler::CFunctionArg> args) {
return CallCFunctionImpl(this, function, return_type, args, false,
- kDontSaveFPRegs, kHasFunctionDescriptor);
+ SaveFPRegsMode::kIgnore, kHasFunctionDescriptor);
}
Node* RawMachineAssembler::CallCFunctionWithoutFunctionDescriptor(
Node* function, MachineType return_type,
std::initializer_list<RawMachineAssembler::CFunctionArg> args) {
return CallCFunctionImpl(this, function, return_type, args, false,
- kDontSaveFPRegs, kNoFunctionDescriptor);
+ SaveFPRegsMode::kIgnore, kNoFunctionDescriptor);
}
Node* RawMachineAssembler::CallCFunctionWithCallerSavedRegisters(
diff --git a/deps/v8/src/compiler/raw-machine-assembler.h b/deps/v8/src/compiler/raw-machine-assembler.h
index 1dff0a7c0c..a811fa7bf9 100644
--- a/deps/v8/src/compiler/raw-machine-assembler.h
+++ b/deps/v8/src/compiler/raw-machine-assembler.h
@@ -15,6 +15,7 @@
#include "src/compiler/graph.h"
#include "src/compiler/linkage.h"
#include "src/compiler/machine-operator.h"
+#include "src/compiler/node-matchers.h"
#include "src/compiler/node.h"
#include "src/compiler/operator.h"
#include "src/compiler/simplified-operator.h"
@@ -147,10 +148,38 @@ class V8_EXPORT_PRIVATE RawMachineAssembler {
Node* load = AddNode(op, base, index);
return load;
}
+ Node* LoadImmutable(MachineType type, Node* base) {
+ return LoadImmutable(type, base, IntPtrConstant(0));
+ }
+ Node* LoadImmutable(MachineType type, Node* base, Node* index) {
+ const Operator* op = machine()->LoadImmutable(type);
+ return AddNode(op, base, index);
+ }
+ bool IsMapOffsetConstant(Node* node) {
+ Int64Matcher m(node);
+ if (m.Is(HeapObject::kMapOffset)) return true;
+ // Test if `node` is a `Phi(Int64Constant(0))`
+ if (node->opcode() == IrOpcode::kPhi) {
+ for (Node* input : node->inputs()) {
+ if (!Int64Matcher(input).Is(HeapObject::kMapOffset)) return false;
+ }
+ return true;
+ }
+ return false;
+ }
+ bool IsMapOffsetConstantMinusTag(Node* node) {
+ Int64Matcher m(node);
+ return m.Is(HeapObject::kMapOffset - kHeapObjectTag);
+ }
+ bool IsMapOffsetConstantMinusTag(int offset) {
+ return offset == HeapObject::kMapOffset - kHeapObjectTag;
+ }
Node* LoadFromObject(
MachineType type, Node* base, Node* offset,
LoadSensitivity needs_poisoning = LoadSensitivity::kSafe) {
CHECK_EQ(needs_poisoning, LoadSensitivity::kSafe);
+ DCHECK_IMPLIES(V8_MAP_PACKING_BOOL && IsMapOffsetConstantMinusTag(offset),
+ type == MachineType::MapInHeader());
ObjectAccess access = {type, WriteBarrierKind::kNoWriteBarrier};
Node* load = AddNode(simplified()->LoadFromObject(access), base, offset);
return load;
@@ -169,18 +198,22 @@ class V8_EXPORT_PRIVATE RawMachineAssembler {
Node* value, WriteBarrierKind write_barrier) {
ObjectAccess access = {MachineType::TypeForRepresentation(rep),
write_barrier};
+ DCHECK(!IsMapOffsetConstantMinusTag(offset));
AddNode(simplified()->StoreToObject(access), object, offset, value);
}
void OptimizedStoreField(MachineRepresentation rep, Node* object, int offset,
Node* value, WriteBarrierKind write_barrier) {
+ DCHECK(!IsMapOffsetConstantMinusTag(offset));
AddNode(simplified()->StoreField(FieldAccess(
BaseTaggedness::kTaggedBase, offset, MaybeHandle<Name>(),
MaybeHandle<Map>(), Type::Any(),
MachineType::TypeForRepresentation(rep), write_barrier)),
object, value);
}
- void OptimizedStoreMap(Node* object, Node* value) {
- AddNode(simplified()->StoreField(AccessBuilder::ForMap()), object, value);
+ void OptimizedStoreMap(Node* object, Node* value,
+ WriteBarrierKind write_barrier = kMapWriteBarrier) {
+ AddNode(simplified()->StoreField(AccessBuilder::ForMap(write_barrier)),
+ object, value);
}
Node* Retain(Node* value) { return AddNode(common()->Retain(), value); }
@@ -245,6 +278,7 @@ class V8_EXPORT_PRIVATE RawMachineAssembler {
Node* AtomicStore(MachineRepresentation rep, Node* base, Node* index,
Node* value) {
+ DCHECK(!IsMapOffsetConstantMinusTag(index));
DCHECK_NE(rep, MachineRepresentation::kWord64);
return AddNode(machine()->Word32AtomicStore(rep), base, index, value);
}
@@ -547,6 +581,15 @@ class V8_EXPORT_PRIVATE RawMachineAssembler {
}
Node* Word32Ctz(Node* a) { return AddNode(machine()->Word32Ctz().op(), a); }
Node* Word64Ctz(Node* a) { return AddNode(machine()->Word64Ctz().op(), a); }
+
+ Node* Word32Select(Node* condition, Node* b, Node* c) {
+ return AddNode(machine()->Word32Select().op(), condition, b, c);
+ }
+
+ Node* Word64Select(Node* condition, Node* b, Node* c) {
+ return AddNode(machine()->Word64Select().op(), condition, b, c);
+ }
+
Node* StackPointerGreaterThan(Node* value) {
return AddNode(
machine()->StackPointerGreaterThan(StackCheckKind::kCodeStubAssembler),
diff --git a/deps/v8/src/compiler/refs-map.cc b/deps/v8/src/compiler/refs-map.cc
index 7cf465f00b..149865b093 100644
--- a/deps/v8/src/compiler/refs-map.cc
+++ b/deps/v8/src/compiler/refs-map.cc
@@ -27,6 +27,10 @@ RefsMap::Entry* RefsMap::LookupOrInsert(const Address& key) {
[]() { return nullptr; });
}
+ObjectData* RefsMap::Remove(const Address& key) {
+ return UnderlyingMap::Remove(key, RefsMap::Hash(key));
+}
+
uint32_t RefsMap::Hash(Address addr) { return static_cast<uint32_t>(addr); }
} // namespace compiler
diff --git a/deps/v8/src/compiler/refs-map.h b/deps/v8/src/compiler/refs-map.h
index 708da8359f..3b26276072 100644
--- a/deps/v8/src/compiler/refs-map.h
+++ b/deps/v8/src/compiler/refs-map.h
@@ -42,6 +42,7 @@ class RefsMap
// Wrappers around methods from UnderlyingMap
Entry* Lookup(const Address& key) const;
Entry* LookupOrInsert(const Address& key);
+ ObjectData* Remove(const Address& key);
private:
static uint32_t Hash(Address addr);
diff --git a/deps/v8/src/compiler/representation-change.cc b/deps/v8/src/compiler/representation-change.cc
index 4bfaa1ccee..750bc1fd56 100644
--- a/deps/v8/src/compiler/representation-change.cc
+++ b/deps/v8/src/compiler/representation-change.cc
@@ -237,6 +237,7 @@ Node* RepresentationChanger::GetRepresentationFor(
return node;
case MachineRepresentation::kCompressed:
case MachineRepresentation::kCompressedPointer:
+ case MachineRepresentation::kMapWord:
UNREACHABLE();
}
UNREACHABLE();
@@ -510,7 +511,8 @@ Node* RepresentationChanger::GetTaggedRepresentationFor(
break;
}
if (output_rep == MachineRepresentation::kTaggedSigned ||
- output_rep == MachineRepresentation::kTaggedPointer) {
+ output_rep == MachineRepresentation::kTaggedPointer ||
+ output_rep == MachineRepresentation::kMapWord) {
// this is a no-op.
return node;
}
@@ -795,12 +797,12 @@ Node* RepresentationChanger::MakeTruncatedInt32Constant(double value) {
return jsgraph()->Int32Constant(DoubleToInt32(value));
}
-Node* RepresentationChanger::InsertUnconditionalDeopt(Node* node,
- DeoptimizeReason reason) {
+Node* RepresentationChanger::InsertUnconditionalDeopt(
+ Node* node, DeoptimizeReason reason, const FeedbackSource& feedback) {
Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node);
effect =
- jsgraph()->graph()->NewNode(simplified()->CheckIf(reason),
+ jsgraph()->graph()->NewNode(simplified()->CheckIf(reason, feedback),
jsgraph()->Int32Constant(0), effect, control);
Node* unreachable = effect = jsgraph()->graph()->NewNode(
jsgraph()->common()->Unreachable(), effect, control);
@@ -1102,7 +1104,7 @@ Node* RepresentationChanger::GetWord64RepresentationFor(
HeapObjectMatcher m(node);
if (m.HasResolvedValue() && m.Ref(broker_).IsBigInt() &&
use_info.truncation().IsUsedAsWord64()) {
- auto bigint = m.Ref(broker_).AsBigInt();
+ BigIntRef bigint = m.Ref(broker_).AsBigInt();
return jsgraph()->Int64Constant(
static_cast<int64_t>(bigint.AsUint64()));
}
@@ -1117,8 +1119,8 @@ Node* RepresentationChanger::GetWord64RepresentationFor(
if (!CanBeTaggedPointer(output_rep) &&
output_rep != MachineRepresentation::kWord64) {
DCHECK(!output_type.Equals(Type::BigInt()));
- Node* unreachable =
- InsertUnconditionalDeopt(use_node, DeoptimizeReason::kNotABigInt);
+ Node* unreachable = InsertUnconditionalDeopt(
+ use_node, DeoptimizeReason::kNotABigInt, use_info.feedback());
return jsgraph()->graph()->NewNode(
jsgraph()->common()->DeadValue(MachineRepresentation::kWord64),
unreachable);
@@ -1157,11 +1159,11 @@ Node* RepresentationChanger::GetWord64RepresentationFor(
MachineRepresentation::kWord64);
}
} else if (output_rep == MachineRepresentation::kFloat32) {
- if (output_type.Is(cache_->kInt64)) {
+ if (output_type.Is(cache_->kDoubleRepresentableInt64)) {
// float32 -> float64 -> int64
node = InsertChangeFloat32ToFloat64(node);
op = machine()->ChangeFloat64ToInt64();
- } else if (output_type.Is(cache_->kUint64)) {
+ } else if (output_type.Is(cache_->kDoubleRepresentableUint64)) {
// float32 -> float64 -> uint64
node = InsertChangeFloat32ToFloat64(node);
op = machine()->ChangeFloat64ToUint64();
@@ -1179,9 +1181,9 @@ Node* RepresentationChanger::GetWord64RepresentationFor(
MachineRepresentation::kWord64);
}
} else if (output_rep == MachineRepresentation::kFloat64) {
- if (output_type.Is(cache_->kInt64)) {
+ if (output_type.Is(cache_->kDoubleRepresentableInt64)) {
op = machine()->ChangeFloat64ToInt64();
- } else if (output_type.Is(cache_->kUint64)) {
+ } else if (output_type.Is(cache_->kDoubleRepresentableUint64)) {
op = machine()->ChangeFloat64ToUint64();
} else if (use_info.type_check() == TypeCheckKind::kSigned64 ||
use_info.type_check() == TypeCheckKind::kArrayIndex) {
@@ -1209,7 +1211,7 @@ Node* RepresentationChanger::GetWord64RepresentationFor(
use_node, use_info);
op = simplified()->TruncateBigIntToUint64();
} else if (CanBeTaggedPointer(output_rep)) {
- if (output_type.Is(cache_->kInt64)) {
+ if (output_type.Is(cache_->kDoubleRepresentableInt64)) {
op = simplified()->ChangeTaggedToInt64();
} else if (use_info.type_check() == TypeCheckKind::kSigned64) {
op = simplified()->CheckedTaggedToInt64(
@@ -1228,8 +1230,11 @@ Node* RepresentationChanger::GetWord64RepresentationFor(
if (output_type.Is(Type::BigInt())) {
return node;
} else {
- return TypeError(node, output_rep, output_type,
- MachineRepresentation::kWord64);
+ Node* unreachable = InsertUnconditionalDeopt(
+ use_node, DeoptimizeReason::kNotABigInt, use_info.feedback());
+ return jsgraph()->graph()->NewNode(
+ jsgraph()->common()->DeadValue(MachineRepresentation::kWord64),
+ unreachable);
}
} else {
return TypeError(node, output_rep, output_type,
diff --git a/deps/v8/src/compiler/representation-change.h b/deps/v8/src/compiler/representation-change.h
index 334237ed1f..a4b05cbfe7 100644
--- a/deps/v8/src/compiler/representation-change.h
+++ b/deps/v8/src/compiler/representation-change.h
@@ -16,7 +16,7 @@ namespace compiler {
// Foward declarations.
class TypeCache;
-enum IdentifyZeros { kIdentifyZeros, kDistinguishZeros };
+enum IdentifyZeros : uint8_t { kIdentifyZeros, kDistinguishZeros };
class Truncation final {
public:
@@ -180,10 +180,10 @@ class UseInfo {
static UseInfo TruncatingWord32() {
return UseInfo(MachineRepresentation::kWord32, Truncation::Word32());
}
- static UseInfo TruncatingWord64() {
- return UseInfo(MachineRepresentation::kWord64, Truncation::Word64());
- }
static UseInfo CheckedBigIntTruncatingWord64(const FeedbackSource& feedback) {
+ // Note that Trunction::Word64() can safely use kIdentifyZero, because
+ // TypeCheckKind::kBigInt will make sure we deopt for anything other than
+ // type BigInt anyway.
return UseInfo(MachineRepresentation::kWord64, Truncation::Word64(),
TypeCheckKind::kBigInt, feedback);
}
@@ -400,7 +400,8 @@ class V8_EXPORT_PRIVATE RepresentationChanger final {
Node* use_node);
Node* InsertConversion(Node* node, const Operator* op, Node* use_node);
Node* InsertTruncateInt64ToInt32(Node* node);
- Node* InsertUnconditionalDeopt(Node* node, DeoptimizeReason reason);
+ Node* InsertUnconditionalDeopt(Node* node, DeoptimizeReason reason,
+ const FeedbackSource& feedback = {});
JSGraph* jsgraph() const { return jsgraph_; }
Isolate* isolate() const;
diff --git a/deps/v8/src/compiler/scheduled-machine-lowering.cc b/deps/v8/src/compiler/scheduled-machine-lowering.cc
deleted file mode 100644
index fde836e4e8..0000000000
--- a/deps/v8/src/compiler/scheduled-machine-lowering.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2019 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.
-
-#include "src/compiler/scheduled-machine-lowering.h"
-
-#include "src/compiler/compiler-source-position-table.h"
-#include "src/compiler/js-graph.h"
-#include "src/compiler/node-origin-table.h"
-#include "src/compiler/node-properties.h"
-#include "src/compiler/schedule.h"
-
-namespace v8 {
-namespace internal {
-namespace compiler {
-
-ScheduledMachineLowering::ScheduledMachineLowering(
- JSGraph* js_graph, Schedule* schedule, Zone* temp_zone,
- SourcePositionTable* source_positions, NodeOriginTable* node_origins,
- PoisoningMitigationLevel poison_level)
- : schedule_(schedule),
- graph_assembler_(js_graph, temp_zone, base::nullopt, schedule),
- select_lowering_(&graph_assembler_, js_graph->graph()),
- memory_lowering_(js_graph, temp_zone, &graph_assembler_, poison_level),
- reducers_({&select_lowering_, &memory_lowering_}, temp_zone),
- source_positions_(source_positions),
- node_origins_(node_origins) {}
-
-void ScheduledMachineLowering::Run() {
- // TODO(rmcilroy) We should not depend on having rpo_order on schedule, and
- // instead just do our own RPO walk here.
- for (BasicBlock* block : *(schedule()->rpo_order())) {
- BasicBlock::iterator instr = block->begin();
- BasicBlock::iterator end_instr = block->end();
- gasm()->Reset(block);
-
- for (; instr != end_instr; instr++) {
- Node* node = *instr;
- Reduction reduction;
- for (auto reducer : reducers_) {
- reduction = reducer->Reduce(node, nullptr);
- if (reduction.Changed()) break;
- }
- if (reduction.Changed()) {
- Node* replacement = reduction.replacement();
- if (replacement != node) {
- // Replace all uses of node and kill the node to make sure we don't
- // leave dangling dead uses.
- NodeProperties::ReplaceUses(node, replacement, gasm()->effect(),
- gasm()->control());
- node->Kill();
- } else {
- gasm()->AddNode(replacement);
- }
- } else {
- gasm()->AddNode(node);
- }
- }
-
- gasm()->FinalizeCurrentBlock(block);
- }
-
- schedule_->rpo_order()->clear();
-}
-
-} // namespace compiler
-} // namespace internal
-} // namespace v8
diff --git a/deps/v8/src/compiler/scheduled-machine-lowering.h b/deps/v8/src/compiler/scheduled-machine-lowering.h
deleted file mode 100644
index ca078a2a53..0000000000
--- a/deps/v8/src/compiler/scheduled-machine-lowering.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2019 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_COMPILER_SCHEDULED_MACHINE_LOWERING_H_
-#define V8_COMPILER_SCHEDULED_MACHINE_LOWERING_H_
-
-#include "src/compiler/graph-assembler.h"
-#include "src/compiler/memory-lowering.h"
-#include "src/compiler/select-lowering.h"
-
-namespace v8 {
-namespace internal {
-namespace compiler {
-
-class NodeOriginTable;
-class Schedule;
-class SourcePositionTable;
-
-// Performs machine lowering on an already scheduled graph.
-class ScheduledMachineLowering final {
- public:
- ScheduledMachineLowering(JSGraph* js_graph, Schedule* schedule,
- Zone* temp_zone,
- SourcePositionTable* source_positions,
- NodeOriginTable* node_origins,
- PoisoningMitigationLevel poison_level);
- ~ScheduledMachineLowering() = default;
-
- void Run();
-
- private:
- bool LowerNode(Node* node);
-
- JSGraphAssembler* gasm() { return &graph_assembler_; }
- Schedule* schedule() { return schedule_; }
-
- Schedule* schedule_;
- JSGraphAssembler graph_assembler_;
- SelectLowering select_lowering_;
- MemoryLowering memory_lowering_;
- ZoneVector<Reducer*> reducers_;
- SourcePositionTable* source_positions_;
- NodeOriginTable* node_origins_;
-};
-
-} // namespace compiler
-} // namespace internal
-} // namespace v8
-
-#endif // V8_COMPILER_SCHEDULED_MACHINE_LOWERING_H_
diff --git a/deps/v8/src/compiler/scheduler.cc b/deps/v8/src/compiler/scheduler.cc
index fdfa16052b..07a716bfa7 100644
--- a/deps/v8/src/compiler/scheduler.cc
+++ b/deps/v8/src/compiler/scheduler.cc
@@ -105,15 +105,8 @@ Scheduler::Placement Scheduler::InitializePlacement(Node* node) {
data->placement_ = (p == kFixed ? kFixed : kCoupled);
break;
}
-#define DEFINE_CONTROL_CASE(V) case IrOpcode::k##V:
- CONTROL_OP_LIST(DEFINE_CONTROL_CASE)
-#undef DEFINE_CONTROL_CASE
- {
- // Control nodes that were not control-reachable from end may float.
- data->placement_ = kSchedulable;
- break;
- }
default:
+ // Control nodes that were not control-reachable from end may float.
data->placement_ = kSchedulable;
break;
}
@@ -172,31 +165,32 @@ void Scheduler::UpdatePlacement(Node* node, Placement placement) {
// Reduce the use count of the node's inputs to potentially make them
// schedulable. If all the uses of a node have been scheduled, then the node
// itself can be scheduled.
+ base::Optional<int> coupled_control_edge = GetCoupledControlEdge(node);
for (Edge const edge : node->input_edges()) {
- DecrementUnscheduledUseCount(edge.to(), edge.index(), edge.from());
+ DCHECK_EQ(node, edge.from());
+ if (edge.index() != coupled_control_edge) {
+ DecrementUnscheduledUseCount(edge.to(), node);
+ }
}
data->placement_ = placement;
}
-
-bool Scheduler::IsCoupledControlEdge(Node* node, int index) {
- return GetPlacement(node) == kCoupled &&
- NodeProperties::FirstControlIndex(node) == index;
+base::Optional<int> Scheduler::GetCoupledControlEdge(Node* node) {
+ if (GetPlacement(node) == kCoupled) {
+ return NodeProperties::FirstControlIndex(node);
+ }
+ return {};
}
-
-void Scheduler::IncrementUnscheduledUseCount(Node* node, int index,
- Node* from) {
- // Make sure that control edges from coupled nodes are not counted.
- if (IsCoupledControlEdge(from, index)) return;
-
+void Scheduler::IncrementUnscheduledUseCount(Node* node, Node* from) {
// Tracking use counts for fixed nodes is useless.
if (GetPlacement(node) == kFixed) return;
// Use count for coupled nodes is summed up on their control.
if (GetPlacement(node) == kCoupled) {
- Node* control = NodeProperties::GetControlInput(node);
- return IncrementUnscheduledUseCount(control, index, from);
+ node = NodeProperties::GetControlInput(node);
+ DCHECK_NE(GetPlacement(node), Placement::kFixed);
+ DCHECK_NE(GetPlacement(node), Placement::kCoupled);
}
++(GetData(node)->unscheduled_count_);
@@ -207,19 +201,15 @@ void Scheduler::IncrementUnscheduledUseCount(Node* node, int index,
}
}
-
-void Scheduler::DecrementUnscheduledUseCount(Node* node, int index,
- Node* from) {
- // Make sure that control edges from coupled nodes are not counted.
- if (IsCoupledControlEdge(from, index)) return;
-
+void Scheduler::DecrementUnscheduledUseCount(Node* node, Node* from) {
// Tracking use counts for fixed nodes is useless.
if (GetPlacement(node) == kFixed) return;
// Use count for coupled nodes is summed up on their control.
if (GetPlacement(node) == kCoupled) {
- Node* control = NodeProperties::GetControlInput(node);
- return DecrementUnscheduledUseCount(control, index, from);
+ node = NodeProperties::GetControlInput(node);
+ DCHECK_NE(GetPlacement(node), Placement::kFixed);
+ DCHECK_NE(GetPlacement(node), Placement::kCoupled);
}
DCHECK_LT(0, GetData(node)->unscheduled_count_);
@@ -235,7 +225,6 @@ void Scheduler::DecrementUnscheduledUseCount(Node* node, int index,
}
}
-
// -----------------------------------------------------------------------------
// Phase 1: Build control-flow graph.
@@ -738,6 +727,8 @@ class SpecialRPONumberer : public ZoneObject {
return empty_;
}
+ bool HasLoopBlocks() const { return loops_.size() != 0; }
+
private:
using Backedge = std::pair<BasicBlock*, size_t>;
@@ -1221,10 +1212,26 @@ void Scheduler::GenerateDominatorTree() {
class PrepareUsesVisitor {
public:
- explicit PrepareUsesVisitor(Scheduler* scheduler)
- : scheduler_(scheduler), schedule_(scheduler->schedule_) {}
+ explicit PrepareUsesVisitor(Scheduler* scheduler, Graph* graph, Zone* zone)
+ : scheduler_(scheduler),
+ schedule_(scheduler->schedule_),
+ graph_(graph),
+ visited_(graph_->NodeCount(), false, zone),
+ stack_(zone) {}
+
+ void Run() {
+ InitializePlacement(graph_->end());
+ while (!stack_.empty()) {
+ Node* node = stack_.top();
+ stack_.pop();
+ VisitInputs(node);
+ }
+ }
- void Pre(Node* node) {
+ private:
+ void InitializePlacement(Node* node) {
+ TRACE("Pre #%d:%s\n", node->id(), node->op()->mnemonic());
+ DCHECK(!Visited(node));
if (scheduler_->InitializePlacement(node) == Scheduler::kFixed) {
// Fixed nodes are always roots for schedule late.
scheduler_->schedule_root_nodes_.push_back(node);
@@ -1241,21 +1248,37 @@ class PrepareUsesVisitor {
schedule_->AddNode(block, node);
}
}
+ stack_.push(node);
+ visited_[node->id()] = true;
}
- void PostEdge(Node* from, int index, Node* to) {
- // If the edge is from an unscheduled node, then tally it in the use count
- // for all of its inputs. The same criterion will be used in ScheduleLate
- // for decrementing use counts.
- if (!schedule_->IsScheduled(from)) {
- DCHECK_NE(Scheduler::kFixed, scheduler_->GetPlacement(from));
- scheduler_->IncrementUnscheduledUseCount(to, index, from);
+ void VisitInputs(Node* node) {
+ DCHECK_NE(scheduler_->GetPlacement(node), Scheduler::kUnknown);
+ bool is_scheduled = schedule_->IsScheduled(node);
+ base::Optional<int> coupled_control_edge =
+ scheduler_->GetCoupledControlEdge(node);
+ for (auto edge : node->input_edges()) {
+ Node* to = edge.to();
+ DCHECK_EQ(node, edge.from());
+ if (!Visited(to)) {
+ InitializePlacement(to);
+ }
+ TRACE("PostEdge #%d:%s->#%d:%s\n", node->id(), node->op()->mnemonic(),
+ to->id(), to->op()->mnemonic());
+ DCHECK_NE(scheduler_->GetPlacement(to), Scheduler::kUnknown);
+ if (!is_scheduled && edge.index() != coupled_control_edge) {
+ scheduler_->IncrementUnscheduledUseCount(to, node);
+ }
}
}
- private:
+ bool Visited(Node* node) { return visited_[node->id()]; }
+
Scheduler* scheduler_;
Schedule* schedule_;
+ Graph* graph_;
+ BoolVector visited_;
+ ZoneStack<Node*> stack_;
};
@@ -1264,28 +1287,8 @@ void Scheduler::PrepareUses() {
// Count the uses of every node, which is used to ensure that all of a
// node's uses are scheduled before the node itself.
- PrepareUsesVisitor prepare_uses(this);
-
- // TODO(turbofan): simplify the careful pre/post ordering here.
- BoolVector visited(graph_->NodeCount(), false, zone_);
- ZoneStack<Node::InputEdges::iterator> stack(zone_);
- Node* node = graph_->end();
- prepare_uses.Pre(node);
- visited[node->id()] = true;
- stack.push(node->input_edges().begin());
- while (!stack.empty()) {
- tick_counter_->TickAndMaybeEnterSafepoint();
- Edge edge = *stack.top();
- Node* node = edge.to();
- if (visited[node->id()]) {
- prepare_uses.PostEdge(edge.from(), edge.index(), edge.to());
- if (++stack.top() == edge.from()->input_edges().end()) stack.pop();
- } else {
- prepare_uses.Pre(node);
- visited[node->id()] = true;
- if (node->InputCount() > 0) stack.push(node->input_edges().begin());
- }
- }
+ PrepareUsesVisitor prepare_uses(this, graph_, zone_);
+ prepare_uses.Run();
}
@@ -1302,11 +1305,12 @@ class ScheduleEarlyNodeVisitor {
void Run(NodeVector* roots) {
for (Node* const root : *roots) {
queue_.push(root);
- while (!queue_.empty()) {
- scheduler_->tick_counter_->TickAndMaybeEnterSafepoint();
- VisitNode(queue_.front());
- queue_.pop();
- }
+ }
+
+ while (!queue_.empty()) {
+ scheduler_->tick_counter_->TickAndMaybeEnterSafepoint();
+ VisitNode(queue_.front());
+ queue_.pop();
}
}
@@ -1380,6 +1384,11 @@ class ScheduleEarlyNodeVisitor {
void Scheduler::ScheduleEarly() {
+ if (!special_rpo_->HasLoopBlocks()) {
+ TRACE("--- NO LOOPS SO SKIPPING SCHEDULE EARLY --------------------\n");
+ return;
+ }
+
TRACE("--- SCHEDULE EARLY -----------------------------------------\n");
if (FLAG_trace_turbo_scheduler) {
TRACE("roots: ");
@@ -1457,6 +1466,7 @@ class ScheduleLateNodeVisitor {
// The schedule early block dominates the schedule late block.
BasicBlock* min_block = scheduler_->GetData(node)->minimum_block_;
DCHECK_EQ(min_block, BasicBlock::GetCommonDominator(block, min_block));
+
TRACE(
"Schedule late of #%d:%s is id:%d at loop depth %d, minimum = id:%d\n",
node->id(), node->op()->mnemonic(), block->id().ToInt(),
@@ -1468,6 +1478,7 @@ class ScheduleLateNodeVisitor {
BasicBlock* hoist_block = GetHoistBlock(block);
if (hoist_block &&
hoist_block->dominator_depth() >= min_block->dominator_depth()) {
+ DCHECK(scheduler_->special_rpo_->HasLoopBlocks());
do {
TRACE(" hoisting #%d:%s to block id:%d\n", node->id(),
node->op()->mnemonic(), hoist_block->id().ToInt());
@@ -1597,6 +1608,7 @@ class ScheduleLateNodeVisitor {
}
BasicBlock* GetHoistBlock(BasicBlock* block) {
+ if (!scheduler_->special_rpo_->HasLoopBlocks()) return nullptr;
if (block->IsLoopHeader()) return block->dominator();
// We have to check to make sure that the {block} dominates all
// of the outgoing blocks. If it doesn't, then there is a path
@@ -1717,9 +1729,13 @@ class ScheduleLateNodeVisitor {
Node* CloneNode(Node* node) {
int const input_count = node->InputCount();
+ base::Optional<int> coupled_control_edge =
+ scheduler_->GetCoupledControlEdge(node);
for (int index = 0; index < input_count; ++index) {
- Node* const input = node->InputAt(index);
- scheduler_->IncrementUnscheduledUseCount(input, index, node);
+ if (index != coupled_control_edge) {
+ Node* const input = node->InputAt(index);
+ scheduler_->IncrementUnscheduledUseCount(input, node);
+ }
}
Node* const copy = scheduler_->graph_->CloneNode(node);
TRACE(("clone #%d:%s -> #%d\n"), node->id(), node->op()->mnemonic(),
diff --git a/deps/v8/src/compiler/scheduler.h b/deps/v8/src/compiler/scheduler.h
index d8934ec157..9d9fd6aed0 100644
--- a/deps/v8/src/compiler/scheduler.h
+++ b/deps/v8/src/compiler/scheduler.h
@@ -103,9 +103,10 @@ class V8_EXPORT_PRIVATE Scheduler {
void UpdatePlacement(Node* node, Placement placement);
bool IsLive(Node* node);
- inline bool IsCoupledControlEdge(Node* node, int index);
- void IncrementUnscheduledUseCount(Node* node, int index, Node* from);
- void DecrementUnscheduledUseCount(Node* node, int index, Node* from);
+ // If the node is coupled, returns the coupled control edge index.
+ inline base::Optional<int> GetCoupledControlEdge(Node* node);
+ void IncrementUnscheduledUseCount(Node* node, Node* from);
+ void DecrementUnscheduledUseCount(Node* node, Node* from);
static void PropagateImmediateDominators(BasicBlock* block);
diff --git a/deps/v8/src/compiler/select-lowering.cc b/deps/v8/src/compiler/select-lowering.cc
index 590df6ae1f..e346e9171d 100644
--- a/deps/v8/src/compiler/select-lowering.cc
+++ b/deps/v8/src/compiler/select-lowering.cc
@@ -34,7 +34,11 @@ Reduction SelectLowering::LowerSelect(Node* node) {
Node* vtrue = node->InputAt(1);
Node* vfalse = node->InputAt(2);
- gasm()->InitializeEffectControl(start(), start());
+ bool reset_gasm = false;
+ if (gasm()->control() == nullptr) {
+ gasm()->InitializeEffectControl(start(), start());
+ reset_gasm = true;
+ }
auto done = __ MakeLabel(p.representation());
@@ -42,6 +46,10 @@ Reduction SelectLowering::LowerSelect(Node* node) {
__ Goto(&done, vfalse);
__ Bind(&done);
+ if (reset_gasm) {
+ gasm()->Reset(nullptr);
+ }
+
return Changed(done.PhiAt(0));
}
diff --git a/deps/v8/src/compiler/serializer-for-background-compilation.cc b/deps/v8/src/compiler/serializer-for-background-compilation.cc
index ad6879a02d..893d12f1e9 100644
--- a/deps/v8/src/compiler/serializer-for-background-compilation.cc
+++ b/deps/v8/src/compiler/serializer-for-background-compilation.cc
@@ -21,6 +21,7 @@
#include "src/objects/js-regexp-inl.h"
#include "src/objects/literal-objects-inl.h"
#include "src/objects/shared-function-info-inl.h"
+#include "src/objects/template-objects-inl.h"
#include "src/zone/zone-containers.h"
#include "src/zone/zone.h"
@@ -1071,8 +1072,9 @@ SerializerForBackgroundCompilation::SerializerForBackgroundCompilation(
CompilationSubject(closure, broker_->isolate(), zone()))),
arguments_(zone()) {
closure_hints_.AddConstant(closure, zone(), broker_);
- JSFunctionRef(broker, closure).Serialize();
- JSFunctionRef(broker, closure).SerializeCodeAndFeedback();
+ JSFunctionRef closure_ref = MakeRef(broker, closure);
+ closure_ref.Serialize();
+ closure_ref.SerializeCodeAndFeedback();
TRACE_BROKER(broker_, "Hints for <closure>: " << closure_hints_);
TRACE_BROKER(broker_, "Initial environment:\n" << *environment_);
@@ -1099,8 +1101,9 @@ SerializerForBackgroundCompilation::SerializerForBackgroundCompilation(
Handle<JSFunction> closure;
if (function.closure().ToHandle(&closure)) {
closure_hints_.AddConstant(closure, zone(), broker);
- JSFunctionRef(broker, closure).Serialize();
- JSFunctionRef(broker, closure).SerializeCodeAndFeedback();
+ JSFunctionRef closure_ref = MakeRef(broker, closure);
+ closure_ref.Serialize();
+ closure_ref.SerializeCodeAndFeedback();
} else {
closure_hints_.AddVirtualClosure(function.virtual_closure(), zone(),
broker);
@@ -1145,8 +1148,8 @@ Hints SerializerForBackgroundCompilation::Run() {
TRACE_BROKER_MEMORY(broker(), "[serializer start] Broker zone usage: "
<< broker()->zone()->allocation_size());
- SharedFunctionInfoRef shared(broker(), function().shared());
- FeedbackVectorRef feedback_vector_ref(broker(), feedback_vector());
+ SharedFunctionInfoRef shared = MakeRef(broker(), function().shared());
+ FeedbackVectorRef feedback_vector_ref = MakeRef(broker(), feedback_vector());
if (!broker()->ShouldBeSerializedForCompilation(shared, feedback_vector_ref,
arguments_)) {
TRACE_BROKER(broker(),
@@ -1342,7 +1345,7 @@ void SerializerForBackgroundCompilation::VisitGetIterator(
FeedbackSlot call_slot = iterator->GetSlotOperand(2);
Handle<Name> name = broker()->isolate()->factory()->iterator_symbol();
- ProcessNamedPropertyAccess(receiver, NameRef(broker(), name), load_slot,
+ ProcessNamedPropertyAccess(receiver, MakeRef(broker(), name), load_slot,
AccessMode::kLoad);
if (environment()->IsDead()) return;
@@ -1360,10 +1363,10 @@ void SerializerForBackgroundCompilation::VisitGetSuperConstructor(
for (auto constant : environment()->accumulator_hints().constants()) {
// For JSNativeContextSpecialization::ReduceJSGetSuperConstructor.
if (!constant->IsJSFunction()) continue;
- MapRef map(broker(),
- handle(HeapObject::cast(*constant).map(), broker()->isolate()));
+ MapRef map = MakeRef(broker(), handle(HeapObject::cast(*constant).map(),
+ broker()->isolate()));
map.SerializePrototype();
- ObjectRef proto = map.prototype();
+ ObjectRef proto = map.prototype().value();
if (proto.IsHeapObject() && proto.AsHeapObject().map().is_constructor()) {
result_hints.AddConstant(proto.object(), zone(), broker());
}
@@ -1373,8 +1376,9 @@ void SerializerForBackgroundCompilation::VisitGetSuperConstructor(
void SerializerForBackgroundCompilation::VisitGetTemplateObject(
BytecodeArrayIterator* iterator) {
- TemplateObjectDescriptionRef description(
- broker(), iterator->GetConstantForIndexOperand(0, broker()->isolate()));
+ MakeRef(broker(),
+ Handle<TemplateObjectDescription>::cast(
+ iterator->GetConstantForIndexOperand(0, broker()->isolate())));
FeedbackSlot slot = iterator->GetSlotOperand(1);
FeedbackSource source(feedback_vector(), slot);
@@ -1511,12 +1515,12 @@ void SerializerForBackgroundCompilation::VisitInvokeIntrinsic(
case Runtime::kInlineGetImportMetaObject: {
Hints const& context_hints = environment()->current_context_hints();
for (auto x : context_hints.constants()) {
- ContextRef(broker(), x)
+ MakeRef(broker(), Handle<Context>::cast(x))
.GetModule(SerializationPolicy::kSerializeIfNeeded)
.Serialize();
}
for (auto x : context_hints.virtual_contexts()) {
- ContextRef(broker(), x.context)
+ MakeRef(broker(), Handle<Context>::cast(x.context))
.GetModule(SerializationPolicy::kSerializeIfNeeded)
.Serialize();
}
@@ -1535,7 +1539,7 @@ void SerializerForBackgroundCompilation::VisitLdaConstant(
iterator->GetConstantForIndexOperand(0, broker()->isolate());
// TODO(v8:7790): FixedArrays still need to be serialized until they are
// moved to kNeverSerialized.
- if (!FLAG_turbo_direct_heap_access || constant->IsFixedArray()) {
+ if (!broker()->is_concurrent_inlining() || constant->IsFixedArray()) {
ObjectRef(broker(), constant);
}
environment()->accumulator_hints() = Hints::SingleConstant(constant, zone());
@@ -1579,7 +1583,7 @@ void SerializerForBackgroundCompilation::ProcessContextAccess(
for (auto x : context_hints.constants()) {
if (x->IsContext()) {
// Walk this context to the given depth and serialize the slot found.
- ContextRef context_ref(broker(), x);
+ ContextRef context_ref = MakeRef(broker(), Handle<Context>::cast(x));
size_t remaining_depth = depth;
context_ref = context_ref.previous(
&remaining_depth, SerializationPolicy::kSerializeIfNeeded);
@@ -1590,7 +1594,8 @@ void SerializerForBackgroundCompilation::ProcessContextAccess(
}
for (auto x : context_hints.virtual_contexts()) {
if (x.distance <= static_cast<unsigned int>(depth)) {
- ContextRef context_ref(broker(), x.context);
+ ContextRef context_ref =
+ MakeRef(broker(), Handle<Context>::cast(x.context));
size_t remaining_depth = depth - x.distance;
context_ref = context_ref.previous(
&remaining_depth, SerializationPolicy::kSerializeIfNeeded);
@@ -1722,7 +1727,7 @@ void SerializerForBackgroundCompilation::VisitCreateRegExpLiteral(
BytecodeArrayIterator* iterator) {
Handle<String> constant_pattern = Handle<String>::cast(
iterator->GetConstantForIndexOperand(0, broker()->isolate()));
- StringRef description(broker(), constant_pattern);
+ MakeRef(broker(), constant_pattern);
FeedbackSlot slot = iterator->GetSlotOperand(1);
FeedbackSource source(feedback_vector(), slot);
broker()->ProcessFeedbackForRegExpLiteral(source);
@@ -1734,8 +1739,7 @@ void SerializerForBackgroundCompilation::VisitCreateArrayLiteral(
Handle<ArrayBoilerplateDescription> array_boilerplate_description =
Handle<ArrayBoilerplateDescription>::cast(
iterator->GetConstantForIndexOperand(0, broker()->isolate()));
- ArrayBoilerplateDescriptionRef description(broker(),
- array_boilerplate_description);
+ MakeRef(broker(), array_boilerplate_description);
FeedbackSlot slot = iterator->GetSlotOperand(1);
FeedbackSource source(feedback_vector(), slot);
broker()->ProcessFeedbackForArrayOrObjectLiteral(source);
@@ -1755,7 +1759,7 @@ void SerializerForBackgroundCompilation::VisitCreateObjectLiteral(
Handle<ObjectBoilerplateDescription> constant_properties =
Handle<ObjectBoilerplateDescription>::cast(
iterator->GetConstantForIndexOperand(0, broker()->isolate()));
- ObjectBoilerplateDescriptionRef description(broker(), constant_properties);
+ MakeRef(broker(), constant_properties);
FeedbackSlot slot = iterator->GetSlotOperand(1);
FeedbackSource source(feedback_vector(), slot);
broker()->ProcessFeedbackForArrayOrObjectLiteral(source);
@@ -1804,7 +1808,7 @@ void SerializerForBackgroundCompilation::ProcessCreateContext(
Handle<ScopeInfo> scope_info =
Handle<ScopeInfo>::cast(iterator->GetConstantForIndexOperand(
scopeinfo_operand_index, broker()->isolate()));
- ScopeInfoRef scope_info_ref(broker(), scope_info);
+ ScopeInfoRef scope_info_ref = MakeRef(broker(), scope_info);
scope_info_ref.SerializeScopeInfoChain();
Hints const& current_context_hints = environment()->current_context_hints();
@@ -1836,9 +1840,9 @@ void SerializerForBackgroundCompilation::VisitCreateClosure(
iterator->GetConstantForIndexOperand(0, broker()->isolate()));
Handle<FeedbackCell> feedback_cell =
feedback_vector()->GetClosureFeedbackCell(iterator->GetIndexOperand(1));
- FeedbackCellRef feedback_cell_ref(broker(), feedback_cell);
+ MakeRef(broker(), feedback_cell);
Handle<Object> cell_value(feedback_cell->value(), broker()->isolate());
- ObjectRef cell_value_ref(broker(), cell_value);
+ MakeRef(broker(), cell_value);
Hints result_hints;
if (cell_value->IsFeedbackVector()) {
@@ -2109,8 +2113,8 @@ void SerializerForBackgroundCompilation::ProcessCalleeForCallOrConstruct(
const HintsVector* actual_arguments = &arguments;
HintsVector expanded_arguments(zone());
if (callee->IsJSBoundFunction()) {
- JSBoundFunctionRef bound_function(broker(),
- Handle<JSBoundFunction>::cast(callee));
+ JSBoundFunctionRef bound_function =
+ MakeRef(broker(), Handle<JSBoundFunction>::cast(callee));
if (!bound_function.Serialize()) return;
callee = UnrollBoundFunction(bound_function, broker(), arguments,
&expanded_arguments, zone())
@@ -2119,7 +2123,7 @@ void SerializerForBackgroundCompilation::ProcessCalleeForCallOrConstruct(
}
if (!callee->IsJSFunction()) return;
- JSFunctionRef function(broker(), Handle<JSFunction>::cast(callee));
+ JSFunctionRef function = MakeRef(broker(), Handle<JSFunction>::cast(callee));
function.Serialize();
Callee new_callee(function.object());
ProcessCalleeForCallOrConstruct(new_callee, new_target, *actual_arguments,
@@ -2266,13 +2270,13 @@ void SerializerForBackgroundCompilation::ProcessApiCall(
Builtins::kCallFunctionTemplate_CheckAccessAndCompatibleReceiver}) {
ObjectRef(broker(), broker()->isolate()->builtins()->builtin_handle(b));
}
- FunctionTemplateInfoRef target_template_info(
- broker(),
- broker()->CanonicalPersistentHandle(target->function_data(kAcquireLoad)));
+ FunctionTemplateInfoRef target_template_info =
+ MakeRef(broker(),
+ FunctionTemplateInfo::cast(target->function_data(kAcquireLoad)));
if (!target_template_info.has_call_code()) return;
target_template_info.SerializeCallCode();
- SharedFunctionInfoRef target_ref(broker(), target);
+ SharedFunctionInfoRef target_ref = MakeRef(broker(), target);
target_ref.SerializeFunctionTemplateInfo();
if (target_template_info.accept_any_receiver() &&
@@ -2308,7 +2312,7 @@ void SerializerForBackgroundCompilation::ProcessApiCall(
void SerializerForBackgroundCompilation::ProcessReceiverMapForApiCall(
FunctionTemplateInfoRef target, Handle<Map> receiver) {
if (!receiver->is_access_check_needed()) {
- MapRef receiver_map(broker(), receiver);
+ MapRef receiver_map = MakeRef(broker(), receiver);
TRACE_BROKER(broker(), "Serializing holder for target: " << target);
target.LookupHolderOfExpectedType(receiver_map,
SerializationPolicy::kSerializeIfNeeded);
@@ -2356,10 +2360,10 @@ void SerializerForBackgroundCompilation::ProcessBuiltinCall(
if (arguments.size() >= 1) {
ProcessMapHintsForPromises(arguments[0]);
}
- SharedFunctionInfoRef(
+ MakeRef(
broker(),
broker()->isolate()->factory()->promise_catch_finally_shared_fun());
- SharedFunctionInfoRef(
+ MakeRef(
broker(),
broker()->isolate()->factory()->promise_then_finally_shared_fun());
}
@@ -2496,16 +2500,14 @@ void SerializerForBackgroundCompilation::ProcessBuiltinCall(
kMissingArgumentsAreUnknown, result_hints);
}
}
- SharedFunctionInfoRef(
- broker(), broker()
- ->isolate()
- ->factory()
- ->promise_capability_default_reject_shared_fun());
- SharedFunctionInfoRef(
- broker(), broker()
- ->isolate()
- ->factory()
- ->promise_capability_default_resolve_shared_fun());
+ MakeRef(broker(), broker()
+ ->isolate()
+ ->factory()
+ ->promise_capability_default_reject_shared_fun());
+ MakeRef(broker(), broker()
+ ->isolate()
+ ->factory()
+ ->promise_capability_default_resolve_shared_fun());
break;
case Builtins::kFunctionPrototypeCall:
@@ -2529,7 +2531,7 @@ void SerializerForBackgroundCompilation::ProcessBuiltinCall(
if (arguments.size() >= 2) {
for (auto constant : arguments[1].constants()) {
if (constant->IsJSFunction()) {
- JSFunctionRef(broker(), constant).Serialize();
+ MakeRef(broker(), Handle<JSFunction>::cast(constant)).Serialize();
}
}
}
@@ -2596,7 +2598,8 @@ void SerializerForBackgroundCompilation::ProcessHintsForOrdinaryHasInstance(
// For JSNativeContextSpecialization::ReduceJSOrdinaryHasInstance.
if (constructor->IsHeapObject()) {
ProcessConstantForOrdinaryHasInstance(
- HeapObjectRef(broker(), constructor), &walk_prototypes);
+ MakeRef(broker(), Handle<HeapObject>::cast(constructor)),
+ &walk_prototypes);
}
}
// For JSNativeContextSpecialization::ReduceJSHasInPrototypeChain.
@@ -2606,10 +2609,10 @@ void SerializerForBackgroundCompilation::ProcessHintsForOrdinaryHasInstance(
void SerializerForBackgroundCompilation::ProcessHintsForHasInPrototypeChain(
Hints const& instance_hints) {
auto processMap = [&](Handle<Map> map_handle) {
- MapRef map(broker(), map_handle);
+ MapRef map = MakeRef(broker(), map_handle);
while (map.IsJSObjectMap()) {
map.SerializePrototype();
- map = map.prototype().map();
+ map = map.prototype().value().map();
}
};
@@ -2627,8 +2630,8 @@ void SerializerForBackgroundCompilation::ProcessHintsForPromiseResolve(
Hints const& resolution_hints) {
auto processMap = [&](Handle<Map> map) {
broker()->GetPropertyAccessInfo(
- MapRef(broker(), map),
- NameRef(broker(), broker()->isolate()->factory()->then_string()),
+ MakeRef(broker(), map),
+ MakeRef(broker(), broker()->isolate()->factory()->then_string()),
AccessMode::kLoad, dependencies(),
SerializationPolicy::kSerializeIfNeeded);
};
@@ -2650,25 +2653,25 @@ void SerializerForBackgroundCompilation::ProcessMapHintsForPromises(
if (!constant->IsJSPromise()) continue;
Handle<Map> map(Handle<HeapObject>::cast(constant)->map(),
broker()->isolate());
- MapRef(broker(), map).SerializePrototype();
+ MakeRef(broker(), map).SerializePrototype();
}
for (auto map : receiver_hints.maps()) {
if (!map->IsJSPromiseMap()) continue;
- MapRef(broker(), map).SerializePrototype();
+ MakeRef(broker(), map).SerializePrototype();
}
}
PropertyAccessInfo SerializerForBackgroundCompilation::ProcessMapForRegExpTest(
MapRef map) {
PropertyAccessInfo ai_exec = broker()->GetPropertyAccessInfo(
- map, NameRef(broker(), broker()->isolate()->factory()->exec_string()),
+ map, MakeRef(broker(), broker()->isolate()->factory()->exec_string()),
AccessMode::kLoad, dependencies(),
SerializationPolicy::kSerializeIfNeeded);
Handle<JSObject> holder;
if (ai_exec.IsFastDataConstant() && ai_exec.holder().ToHandle(&holder)) {
// The property is on the prototype chain.
- JSObjectRef holder_ref(broker(), holder);
+ JSObjectRef holder_ref = MakeRef(broker(), holder);
holder_ref.GetOwnFastDataProperty(ai_exec.field_representation(),
ai_exec.field_index(),
SerializationPolicy::kSerializeIfNeeded);
@@ -2680,14 +2683,14 @@ void SerializerForBackgroundCompilation::ProcessHintsForRegExpTest(
Hints const& regexp_hints) {
for (auto hint : regexp_hints.constants()) {
if (!hint->IsJSRegExp()) continue;
- Handle<JSRegExp> regexp(Handle<JSRegExp>::cast(hint));
+ Handle<JSObject> regexp(Handle<JSObject>::cast(hint));
Handle<Map> regexp_map(regexp->map(), broker()->isolate());
PropertyAccessInfo ai_exec =
- ProcessMapForRegExpTest(MapRef(broker(), regexp_map));
+ ProcessMapForRegExpTest(MakeRef(broker(), regexp_map));
Handle<JSObject> holder;
if (ai_exec.IsFastDataConstant() && !ai_exec.holder().ToHandle(&holder)) {
// The property is on the object itself.
- JSObjectRef holder_ref(broker(), regexp);
+ JSObjectRef holder_ref = MakeRef(broker(), regexp);
holder_ref.GetOwnFastDataProperty(
ai_exec.field_representation(), ai_exec.field_index(),
SerializationPolicy::kSerializeIfNeeded);
@@ -2696,7 +2699,7 @@ void SerializerForBackgroundCompilation::ProcessHintsForRegExpTest(
for (auto map : regexp_hints.maps()) {
if (!map->IsJSRegExpMap()) continue;
- ProcessMapForRegExpTest(MapRef(broker(), map));
+ ProcessMapForRegExpTest(MakeRef(broker(), map));
}
}
@@ -2718,14 +2721,15 @@ void SerializerForBackgroundCompilation::ProcessHintsForFunctionBind(
Hints const& receiver_hints) {
for (auto constant : receiver_hints.constants()) {
if (!constant->IsJSFunction()) continue;
- JSFunctionRef function(broker(), constant);
+ JSFunctionRef function =
+ MakeRef(broker(), Handle<JSFunction>::cast(constant));
function.Serialize();
ProcessMapForFunctionBind(function.map());
}
for (auto map : receiver_hints.maps()) {
if (!map->IsJSFunctionMap()) continue;
- MapRef map_ref(broker(), map);
+ MapRef map_ref = MakeRef(broker(), map);
ProcessMapForFunctionBind(map_ref);
}
}
@@ -2734,13 +2738,13 @@ void SerializerForBackgroundCompilation::ProcessHintsForObjectGetPrototype(
Hints const& object_hints) {
for (auto constant : object_hints.constants()) {
if (!constant->IsHeapObject()) continue;
- HeapObjectRef object(broker(), constant);
+ HeapObjectRef object =
+ MakeRef(broker(), Handle<HeapObject>::cast(constant));
object.map().SerializePrototype();
}
for (auto map : object_hints.maps()) {
- MapRef map_ref(broker(), map);
- map_ref.SerializePrototype();
+ MakeRef(broker(), map).SerializePrototype();
}
}
@@ -2850,7 +2854,7 @@ void SerializerForBackgroundCompilation::ProcessGlobalAccess(FeedbackSlot slot,
void SerializerForBackgroundCompilation::VisitLdaGlobal(
BytecodeArrayIterator* iterator) {
- NameRef(broker(),
+ MakeRef(broker(),
iterator->GetConstantForIndexOperand(0, broker()->isolate()));
FeedbackSlot slot = iterator->GetSlotOperand(1);
ProcessGlobalAccess(slot, true);
@@ -2863,15 +2867,15 @@ void SerializerForBackgroundCompilation::VisitLdaGlobalInsideTypeof(
void SerializerForBackgroundCompilation::VisitLdaLookupSlot(
BytecodeArrayIterator* iterator) {
- ObjectRef(broker(),
- iterator->GetConstantForIndexOperand(0, broker()->isolate()));
+ MakeRef(broker(),
+ iterator->GetConstantForIndexOperand(0, broker()->isolate()));
environment()->accumulator_hints() = Hints();
}
void SerializerForBackgroundCompilation::VisitLdaLookupSlotInsideTypeof(
BytecodeArrayIterator* iterator) {
- ObjectRef(broker(),
- iterator->GetConstantForIndexOperand(0, broker()->isolate()));
+ MakeRef(broker(),
+ iterator->GetConstantForIndexOperand(0, broker()->isolate()));
environment()->accumulator_hints() = Hints();
}
@@ -2883,7 +2887,7 @@ void SerializerForBackgroundCompilation::ProcessCheckContextExtensions(
ProcessContextAccess(context_hints, Context::EXTENSION_INDEX, i,
kSerializeSlot);
}
- SharedFunctionInfoRef shared(broker(), function().shared());
+ SharedFunctionInfoRef shared = MakeRef(broker(), function().shared());
shared.SerializeScopeInfoChain();
}
@@ -2906,7 +2910,7 @@ void SerializerForBackgroundCompilation::VisitLdaLookupGlobalSlotInsideTypeof(
void SerializerForBackgroundCompilation::VisitStaGlobal(
BytecodeArrayIterator* iterator) {
- NameRef(broker(),
+ MakeRef(broker(),
iterator->GetConstantForIndexOperand(0, broker()->isolate()));
FeedbackSlot slot = iterator->GetSlotOperand(1);
ProcessGlobalAccess(slot, false);
@@ -2916,7 +2920,7 @@ void SerializerForBackgroundCompilation::ProcessLdaLookupContextSlot(
BytecodeArrayIterator* iterator) {
const int slot_index = iterator->GetIndexOperand(1);
const int depth = iterator->GetUnsignedImmediateOperand(2);
- NameRef(broker(),
+ MakeRef(broker(),
iterator->GetConstantForIndexOperand(0, broker()->isolate()));
ProcessCheckContextExtensions(depth);
environment()->accumulator_hints() = Hints();
@@ -3016,7 +3020,8 @@ SerializerForBackgroundCompilation::ProcessMapForNamedPropertyAccess(
access_info.IsDictionaryProtoAccessorConstant()) &&
!access_info.constant().is_null()) {
if (access_info.constant()->IsJSFunction()) {
- JSFunctionRef function(broker(), access_info.constant());
+ JSFunctionRef function =
+ MakeRef(broker(), Handle<JSFunction>::cast(access_info.constant()));
if (receiver_map.has_value()) {
// For JSCallReducer and JSInlining(Heuristic).
@@ -3033,9 +3038,8 @@ SerializerForBackgroundCompilation::ProcessMapForNamedPropertyAccess(
// For JSCallReducer::ReduceCallApiFunction.
Handle<SharedFunctionInfo> sfi = function.shared().object();
if (sfi->IsApiFunction()) {
- FunctionTemplateInfoRef fti_ref(
- broker(),
- broker()->CanonicalPersistentHandle(sfi->get_api_func_data()));
+ FunctionTemplateInfoRef fti_ref =
+ MakeRef(broker(), sfi->get_api_func_data());
if (fti_ref.has_call_code()) {
fti_ref.SerializeCallCode();
ProcessReceiverMapForApiCall(fti_ref, receiver_map->object());
@@ -3043,19 +3047,19 @@ SerializerForBackgroundCompilation::ProcessMapForNamedPropertyAccess(
}
}
} else if (access_info.constant()->IsJSBoundFunction()) {
- JSBoundFunctionRef function(broker(), access_info.constant());
-
// For JSCallReducer::ReduceJSCall.
+ JSBoundFunctionRef function = MakeRef(
+ broker(), Handle<JSBoundFunction>::cast(access_info.constant()));
function.Serialize();
} else {
- FunctionTemplateInfoRef fti(broker(), broker()->CanonicalPersistentHandle(
- access_info.constant()));
+ FunctionTemplateInfoRef fti = MakeRef(
+ broker(), FunctionTemplateInfo::cast(*access_info.constant()));
if (fti.has_call_code()) fti.SerializeCallCode();
}
} else if (access_info.IsModuleExport()) {
// For JSNativeContextSpecialization::BuildPropertyLoad
DCHECK(!access_info.constant().is_null());
- CellRef(broker(), access_info.constant());
+ MakeRef(broker(), Handle<Cell>::cast(access_info.constant()));
}
switch (access_mode) {
@@ -3067,7 +3071,7 @@ SerializerForBackgroundCompilation::ProcessMapForNamedPropertyAccess(
base::Optional<JSObjectRef> holder;
Handle<JSObject> prototype;
if (access_info.holder().ToHandle(&prototype)) {
- holder = JSObjectRef(broker(), prototype);
+ holder = MakeRef(broker(), prototype);
} else {
CHECK_IMPLIES(concrete_receiver.has_value(),
concrete_receiver->map().equals(*receiver_map));
@@ -3095,7 +3099,7 @@ SerializerForBackgroundCompilation::ProcessMapForNamedPropertyAccess(
if (access_info.IsDataField() || access_info.IsFastDataConstant()) {
Handle<Map> transition_map;
if (access_info.transition_map().ToHandle(&transition_map)) {
- MapRef map_ref(broker(), transition_map);
+ MapRef map_ref = MakeRef(broker(), transition_map);
TRACE_BROKER(broker(), "Propagating transition map "
<< map_ref << " to receiver hints.");
receiver->AddMap(transition_map, zone(), broker_, false);
@@ -3225,7 +3229,7 @@ void SerializerForBackgroundCompilation::ProcessNamedAccess(
Hints* receiver, NamedAccessFeedback const& feedback,
AccessMode access_mode, Hints* result_hints) {
for (Handle<Map> map : feedback.maps()) {
- MapRef map_ref(broker(), map);
+ MapRef map_ref = MakeRef(broker(), map);
TRACE_BROKER(broker(), "Propagating feedback map "
<< map_ref << " to receiver hints.");
receiver->AddMap(map, zone(), broker_, false);
@@ -3233,7 +3237,7 @@ void SerializerForBackgroundCompilation::ProcessNamedAccess(
for (Handle<Map> map :
GetRelevantReceiverMaps(broker()->isolate(), receiver->maps())) {
- MapRef map_ref(broker(), map);
+ MapRef map_ref = MakeRef(broker(), map);
ProcessMapForNamedPropertyAccess(receiver, map_ref, map_ref,
feedback.name(), access_mode,
base::nullopt, result_hints);
@@ -3249,7 +3253,7 @@ void SerializerForBackgroundCompilation::ProcessNamedAccess(
}
// For JSNativeContextSpecialization::ReduceJSLoadNamed.
if (access_mode == AccessMode::kLoad && object.IsJSFunction() &&
- feedback.name().equals(ObjectRef(
+ feedback.name().equals(MakeRef(
broker(), broker()->isolate()->factory()->prototype_string()))) {
JSFunctionRef function = object.AsJSFunction();
function.Serialize();
@@ -3269,9 +3273,9 @@ void SerializerForBackgroundCompilation::ProcessNamedSuperAccess(
MapHandles receiver_maps =
GetRelevantReceiverMaps(broker()->isolate(), receiver->maps());
for (Handle<Map> receiver_map : receiver_maps) {
- MapRef receiver_map_ref(broker(), receiver_map);
+ MapRef receiver_map_ref = MakeRef(broker(), receiver_map);
for (Handle<Map> feedback_map : feedback.maps()) {
- MapRef feedback_map_ref(broker(), feedback_map);
+ MapRef feedback_map_ref = MakeRef(broker(), feedback_map);
ProcessMapForNamedPropertyAccess(
receiver, receiver_map_ref, feedback_map_ref, feedback.name(),
access_mode, base::nullopt, result_hints);
@@ -3279,7 +3283,7 @@ void SerializerForBackgroundCompilation::ProcessNamedSuperAccess(
}
if (receiver_maps.empty()) {
for (Handle<Map> feedback_map : feedback.maps()) {
- MapRef feedback_map_ref(broker(), feedback_map);
+ MapRef feedback_map_ref = MakeRef(broker(), feedback_map);
ProcessMapForNamedPropertyAccess(
receiver, base::nullopt, feedback_map_ref, feedback.name(),
access_mode, base::nullopt, result_hints);
@@ -3292,7 +3296,7 @@ void SerializerForBackgroundCompilation::ProcessElementAccess(
ElementAccessFeedback const& feedback, AccessMode access_mode) {
for (auto const& group : feedback.transition_groups()) {
for (Handle<Map> map_handle : group) {
- MapRef map(broker(), map_handle);
+ MapRef map = MakeRef(broker(), map_handle);
switch (access_mode) {
case AccessMode::kHas:
case AccessMode::kLoad:
@@ -3352,7 +3356,7 @@ void SerializerForBackgroundCompilation::ProcessElementAccess(
// For JSNativeContextSpecialization::InferRootMap
for (Handle<Map> map : receiver.maps()) {
- MapRef map_ref(broker(), map);
+ MapRef map_ref = MakeRef(broker(), map);
map_ref.SerializeRootMap();
}
}
@@ -3360,8 +3364,9 @@ void SerializerForBackgroundCompilation::ProcessElementAccess(
void SerializerForBackgroundCompilation::VisitLdaNamedProperty(
BytecodeArrayIterator* iterator) {
Hints* receiver = &register_hints(iterator->GetRegisterOperand(0));
- NameRef name(broker(),
- iterator->GetConstantForIndexOperand(1, broker()->isolate()));
+ NameRef name =
+ MakeRef(broker(), Handle<Name>::cast(iterator->GetConstantForIndexOperand(
+ 1, broker()->isolate())));
FeedbackSlot slot = iterator->GetSlotOperand(2);
ProcessNamedPropertyAccess(receiver, name, slot, AccessMode::kLoad);
}
@@ -3369,8 +3374,9 @@ void SerializerForBackgroundCompilation::VisitLdaNamedProperty(
void SerializerForBackgroundCompilation::VisitLdaNamedPropertyFromSuper(
BytecodeArrayIterator* iterator) {
Hints* receiver = &register_hints(iterator->GetRegisterOperand(0));
- NameRef name(broker(),
- iterator->GetConstantForIndexOperand(1, broker()->isolate()));
+ NameRef name =
+ MakeRef(broker(), Handle<Name>::cast(iterator->GetConstantForIndexOperand(
+ 1, broker()->isolate())));
FeedbackSlot slot = iterator->GetSlotOperand(2);
ProcessNamedSuperPropertyAccess(receiver, name, slot, AccessMode::kLoad);
}
@@ -3379,30 +3385,32 @@ void SerializerForBackgroundCompilation::VisitLdaNamedPropertyFromSuper(
// bytecodes.
void SerializerForBackgroundCompilation::VisitLdaNamedPropertyNoFeedback(
BytecodeArrayIterator* iterator) {
- NameRef(broker(),
- iterator->GetConstantForIndexOperand(1, broker()->isolate()));
+ MakeRef(broker(), Handle<Name>::cast(iterator->GetConstantForIndexOperand(
+ 1, broker()->isolate())));
}
void SerializerForBackgroundCompilation::VisitStaNamedProperty(
BytecodeArrayIterator* iterator) {
Hints* receiver = &register_hints(iterator->GetRegisterOperand(0));
- NameRef name(broker(),
- iterator->GetConstantForIndexOperand(1, broker()->isolate()));
+ NameRef name =
+ MakeRef(broker(), Handle<Name>::cast(iterator->GetConstantForIndexOperand(
+ 1, broker()->isolate())));
FeedbackSlot slot = iterator->GetSlotOperand(2);
ProcessNamedPropertyAccess(receiver, name, slot, AccessMode::kStore);
}
void SerializerForBackgroundCompilation::VisitStaNamedPropertyNoFeedback(
BytecodeArrayIterator* iterator) {
- NameRef(broker(),
+ MakeRef(broker(),
iterator->GetConstantForIndexOperand(1, broker()->isolate()));
}
void SerializerForBackgroundCompilation::VisitStaNamedOwnProperty(
BytecodeArrayIterator* iterator) {
Hints* receiver = &register_hints(iterator->GetRegisterOperand(0));
- NameRef name(broker(),
- iterator->GetConstantForIndexOperand(1, broker()->isolate()));
+ NameRef name =
+ MakeRef(broker(), Handle<Name>::cast(iterator->GetConstantForIndexOperand(
+ 1, broker()->isolate())));
FeedbackSlot slot = iterator->GetSlotOperand(2);
ProcessNamedPropertyAccess(receiver, name, slot, AccessMode::kStoreInLiteral);
}
@@ -3440,7 +3448,7 @@ void SerializerForBackgroundCompilation::ProcessConstantForInstanceOf(
PropertyAccessInfo access_info = broker()->GetPropertyAccessInfo(
constructor_heap_object.map(),
- NameRef(broker(), broker()->isolate()->factory()->has_instance_symbol()),
+ MakeRef(broker(), broker()->isolate()->factory()->has_instance_symbol()),
AccessMode::kLoad, dependencies(),
SerializationPolicy::kSerializeIfNeeded);
@@ -3450,8 +3458,8 @@ void SerializerForBackgroundCompilation::ProcessConstantForInstanceOf(
} else if (access_info.IsFastDataConstant()) {
Handle<JSObject> holder;
bool found_on_proto = access_info.holder().ToHandle(&holder);
- JSObjectRef holder_ref = found_on_proto ? JSObjectRef(broker(), holder)
- : constructor.AsJSObject();
+ JSObjectRef holder_ref =
+ found_on_proto ? MakeRef(broker(), holder) : constructor.AsJSObject();
base::Optional<ObjectRef> constant = holder_ref.GetOwnFastDataProperty(
access_info.field_representation(), access_info.field_index(),
SerializationPolicy::kSerializeIfNeeded);
diff --git a/deps/v8/src/compiler/simd-scalar-lowering.cc b/deps/v8/src/compiler/simd-scalar-lowering.cc
deleted file mode 100644
index 7c96393c4c..0000000000
--- a/deps/v8/src/compiler/simd-scalar-lowering.cc
+++ /dev/null
@@ -1,2829 +0,0 @@
-// Copyright 2016 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.
-
-#include "src/compiler/simd-scalar-lowering.h"
-
-#include "src/base/platform/wrappers.h"
-#include "src/codegen/machine-type.h"
-#include "src/common/globals.h"
-#include "src/compiler/diamond.h"
-#include "src/compiler/linkage.h"
-#include "src/compiler/machine-operator.h"
-#include "src/compiler/node-matchers.h"
-#include "src/compiler/node-properties.h"
-#include "src/compiler/node.h"
-#include "src/compiler/wasm-compiler.h"
-
-namespace v8 {
-namespace internal {
-namespace compiler {
-
-namespace {
-static const int kNumLanes64 = 2;
-static const int kNumLanes32 = 4;
-static const int kNumLanes16 = 8;
-static const int kNumLanes8 = 16;
-static const int32_t kMask16 = 0xFFFF;
-static const int32_t kMask8 = 0xFF;
-static const int32_t kShift16 = 16;
-static const int32_t kShift8 = 24;
-static const int32_t kShiftMask8 = 0x7;
-static const int32_t kShiftMask16 = 0xF;
-static const int32_t kShiftMask32 = 0x1F;
-static const int32_t kShiftMask64 = 0x3F;
-
-// Shift values are taken modulo lane size. This helper calculates the mask
-// required for different shift opcodes.
-int GetMaskForShift(Node* node) {
- switch (node->opcode()) {
- case IrOpcode::kI8x16Shl:
- case IrOpcode::kI8x16ShrS:
- case IrOpcode::kI8x16ShrU:
- return kShiftMask8;
- case IrOpcode::kI16x8Shl:
- case IrOpcode::kI16x8ShrS:
- case IrOpcode::kI16x8ShrU:
- return kShiftMask16;
- case IrOpcode::kI32x4Shl:
- case IrOpcode::kI32x4ShrS:
- case IrOpcode::kI32x4ShrU:
- return kShiftMask32;
- case IrOpcode::kI64x2Shl:
- case IrOpcode::kI64x2ShrS:
- case IrOpcode::kI64x2ShrU:
- return kShiftMask64;
- default:
- UNIMPLEMENTED();
- }
-}
-} // anonymous namespace
-
-SimdScalarLowering::SimdScalarLowering(
- MachineGraph* mcgraph, SimplifiedOperatorBuilder* simplified,
- Signature<MachineRepresentation>* signature)
- : mcgraph_(mcgraph),
- simplified_(simplified),
- state_(mcgraph->graph(), 3),
- stack_(mcgraph_->zone()),
- replacements_(nullptr),
- signature_(signature),
- placeholder_(graph()->NewNode(common()->Dead())),
- parameter_count_after_lowering_(-1) {
- DCHECK_NOT_NULL(graph());
- DCHECK_NOT_NULL(graph()->end());
- replacements_ = zone()->NewArray<Replacement>(graph()->NodeCount());
- memset(static_cast<void*>(replacements_), 0,
- sizeof(Replacement) * graph()->NodeCount());
-}
-
-void SimdScalarLowering::LowerGraph() {
- stack_.push_back({graph()->end(), 0});
- state_.Set(graph()->end(), State::kOnStack);
- replacements_[graph()->end()->id()].type = SimdType::kInt32x4;
-
- while (!stack_.empty()) {
- NodeState& top = stack_.back();
- if (top.input_index == top.node->InputCount()) {
- // All inputs of top have already been lowered, now lower top.
- stack_.pop_back();
- state_.Set(top.node, State::kVisited);
- LowerNode(top.node);
- } else {
- // Push the next input onto the stack.
- Node* input = top.node->InputAt(top.input_index++);
- if (state_.Get(input) == State::kUnvisited) {
- SetLoweredType(input, top.node);
- if (input->opcode() == IrOpcode::kPhi) {
- // To break cycles with phi nodes we push phis on a separate stack so
- // that they are processed after all other nodes.
- PreparePhiReplacement(input);
- stack_.push_front({input, 0});
- } else if (input->opcode() == IrOpcode::kEffectPhi ||
- input->opcode() == IrOpcode::kLoop) {
- stack_.push_front({input, 0});
- } else {
- stack_.push_back({input, 0});
- }
- state_.Set(input, State::kOnStack);
- }
- }
- }
-}
-
-#define FOREACH_INT64X2_OPCODE(V) \
- V(I64x2Splat) \
- V(I64x2ExtractLane) \
- V(I64x2ReplaceLane) \
- V(I64x2Eq) \
- V(I64x2Ne) \
- V(I64x2Neg) \
- V(I64x2Shl) \
- V(I64x2ShrS) \
- V(I64x2ShrU) \
- V(I64x2Add) \
- V(I64x2Sub) \
- V(I64x2Mul) \
- V(I64x2ExtMulLowI32x4S) \
- V(I64x2ExtMulLowI32x4U) \
- V(I64x2ExtMulHighI32x4S) \
- V(I64x2ExtMulHighI32x4U)
-
-#define FOREACH_INT32X4_OPCODE(V) \
- V(I32x4Splat) \
- V(I32x4ExtractLane) \
- V(I32x4ReplaceLane) \
- V(I32x4SConvertF32x4) \
- V(I32x4UConvertF32x4) \
- V(I32x4SConvertI16x8Low) \
- V(I32x4SConvertI16x8High) \
- V(I32x4Neg) \
- V(I32x4Shl) \
- V(I32x4ShrS) \
- V(I32x4Add) \
- V(I32x4Sub) \
- V(I32x4Mul) \
- V(I32x4MinS) \
- V(I32x4MaxS) \
- V(I32x4ShrU) \
- V(I32x4MinU) \
- V(I32x4MaxU) \
- V(I32x4DotI16x8S) \
- V(I32x4Eq) \
- V(I32x4Ne) \
- V(I32x4LtS) \
- V(I32x4LtU) \
- V(I32x4GtS) \
- V(I32x4GtU) \
- V(I32x4LeS) \
- V(I32x4LeU) \
- V(I32x4GeS) \
- V(I32x4GeU) \
- V(I32x4UConvertI16x8Low) \
- V(I32x4UConvertI16x8High) \
- V(I32x4Abs) \
- V(S128And) \
- V(S128Or) \
- V(S128Xor) \
- V(S128Not) \
- V(S128AndNot) \
- V(S128Select) \
- V(I64x2AllTrue) \
- V(I32x4AllTrue) \
- V(I16x8AllTrue) \
- V(V128AnyTrue) \
- V(I8x16AllTrue) \
- V(I32x4BitMask) \
- V(I32x4ExtMulLowI16x8S) \
- V(I32x4ExtMulLowI16x8U) \
- V(I32x4ExtMulHighI16x8S) \
- V(I32x4ExtMulHighI16x8U)
-
-#define FOREACH_FLOAT64X2_OPCODE(V) \
- V(F64x2Splat) \
- V(F64x2ExtractLane) \
- V(F64x2ReplaceLane) \
- V(F64x2Abs) \
- V(F64x2Neg) \
- V(F64x2Sqrt) \
- V(F64x2Add) \
- V(F64x2Sub) \
- V(F64x2Mul) \
- V(F64x2Div) \
- V(F64x2Min) \
- V(F64x2Max) \
- V(F64x2Pmin) \
- V(F64x2Pmax) \
- V(F64x2Ceil) \
- V(F64x2Floor) \
- V(F64x2Trunc) \
- V(F64x2NearestInt)
-
-#define FOREACH_FLOAT32X4_OPCODE(V) \
- V(F32x4Splat) \
- V(F32x4ExtractLane) \
- V(F32x4ReplaceLane) \
- V(F32x4SConvertI32x4) \
- V(F32x4UConvertI32x4) \
- V(F32x4Abs) \
- V(F32x4Neg) \
- V(F32x4Sqrt) \
- V(F32x4RecipApprox) \
- V(F32x4RecipSqrtApprox) \
- V(F32x4Add) \
- V(F32x4Sub) \
- V(F32x4Mul) \
- V(F32x4Div) \
- V(F32x4Min) \
- V(F32x4Max) \
- V(F32x4Pmin) \
- V(F32x4Pmax) \
- V(F32x4Ceil) \
- V(F32x4Floor) \
- V(F32x4Trunc) \
- V(F32x4NearestInt)
-
-#define FOREACH_FLOAT64x2_TO_INT64x2OPCODE(V) \
- V(F64x2Eq) \
- V(F64x2Ne) \
- V(F64x2Lt) \
- V(F64x2Le)
-
-#define FOREACH_FLOAT32X4_TO_INT32X4OPCODE(V) \
- V(F32x4Eq) \
- V(F32x4Ne) \
- V(F32x4Lt) \
- V(F32x4Le) \
- V(F32x4Gt) \
- V(F32x4Ge)
-
-#define FOREACH_INT16X8_OPCODE(V) \
- V(I16x8Splat) \
- V(I16x8ExtractLaneU) \
- V(I16x8ExtractLaneS) \
- V(I16x8ReplaceLane) \
- V(I16x8SConvertI8x16Low) \
- V(I16x8SConvertI8x16High) \
- V(I16x8Neg) \
- V(I16x8Shl) \
- V(I16x8ShrS) \
- V(I16x8SConvertI32x4) \
- V(I16x8Add) \
- V(I16x8AddSatS) \
- V(I16x8Sub) \
- V(I16x8SubSatS) \
- V(I16x8Mul) \
- V(I16x8MinS) \
- V(I16x8MaxS) \
- V(I16x8UConvertI8x16Low) \
- V(I16x8UConvertI8x16High) \
- V(I16x8ShrU) \
- V(I16x8UConvertI32x4) \
- V(I16x8AddSatU) \
- V(I16x8SubSatU) \
- V(I16x8MinU) \
- V(I16x8MaxU) \
- V(I16x8Eq) \
- V(I16x8Ne) \
- V(I16x8LtS) \
- V(I16x8LtU) \
- V(I16x8GtS) \
- V(I16x8GtU) \
- V(I16x8LeS) \
- V(I16x8LeU) \
- V(I16x8GeS) \
- V(I16x8GeU) \
- V(I16x8RoundingAverageU) \
- V(I16x8Abs) \
- V(I16x8BitMask) \
- V(I16x8ExtMulLowI8x16S) \
- V(I16x8ExtMulLowI8x16U) \
- V(I16x8ExtMulHighI8x16S) \
- V(I16x8ExtMulHighI8x16U)
-
-#define FOREACH_INT8X16_OPCODE(V) \
- V(I8x16Splat) \
- V(I8x16ExtractLaneU) \
- V(I8x16ExtractLaneS) \
- V(I8x16ReplaceLane) \
- V(I8x16SConvertI16x8) \
- V(I8x16Neg) \
- V(I8x16Shl) \
- V(I8x16ShrS) \
- V(I8x16Add) \
- V(I8x16AddSatS) \
- V(I8x16Sub) \
- V(I8x16SubSatS) \
- V(I8x16MinS) \
- V(I8x16MaxS) \
- V(I8x16ShrU) \
- V(I8x16UConvertI16x8) \
- V(I8x16AddSatU) \
- V(I8x16SubSatU) \
- V(I8x16MinU) \
- V(I8x16MaxU) \
- V(I8x16Eq) \
- V(I8x16Ne) \
- V(I8x16LtS) \
- V(I8x16LtU) \
- V(I8x16GtS) \
- V(I8x16GtU) \
- V(I8x16LeS) \
- V(I8x16LeU) \
- V(I8x16GeS) \
- V(I8x16GeU) \
- V(I8x16Swizzle) \
- V(I8x16Shuffle) \
- V(I8x16RoundingAverageU) \
- V(I8x16Abs) \
- V(I8x16BitMask)
-
-MachineType SimdScalarLowering::MachineTypeFrom(SimdType simdType) {
- switch (simdType) {
- case SimdType::kFloat64x2:
- return MachineType::Float64();
- case SimdType::kFloat32x4:
- return MachineType::Float32();
- case SimdType::kInt64x2:
- return MachineType::Int64();
- case SimdType::kInt32x4:
- return MachineType::Int32();
- case SimdType::kInt16x8:
- return MachineType::Int16();
- case SimdType::kInt8x16:
- return MachineType::Int8();
- }
- return MachineType::None();
-}
-
-void SimdScalarLowering::SetLoweredType(Node* node, Node* output) {
- switch (node->opcode()) {
-#define CASE_STMT(name) case IrOpcode::k##name:
- FOREACH_FLOAT64X2_OPCODE(CASE_STMT) {
- replacements_[node->id()].type = SimdType::kFloat64x2;
- break;
- }
- FOREACH_INT64X2_OPCODE(CASE_STMT) {
- replacements_[node->id()].type = SimdType::kInt64x2;
- break;
- }
- FOREACH_INT32X4_OPCODE(CASE_STMT)
- case IrOpcode::kReturn:
- case IrOpcode::kParameter:
- case IrOpcode::kPhi:
- case IrOpcode::kCall: {
- replacements_[node->id()].type = SimdType::kInt32x4;
- break;
- }
- FOREACH_FLOAT32X4_OPCODE(CASE_STMT) {
- replacements_[node->id()].type = SimdType::kFloat32x4;
- break;
- }
- FOREACH_FLOAT32X4_TO_INT32X4OPCODE(CASE_STMT) {
- replacements_[node->id()].type = SimdType::kInt32x4;
- break;
- }
- FOREACH_FLOAT64x2_TO_INT64x2OPCODE(CASE_STMT) {
- replacements_[node->id()].type = SimdType::kInt64x2;
- break;
- }
- FOREACH_INT16X8_OPCODE(CASE_STMT) {
- replacements_[node->id()].type = SimdType::kInt16x8;
- break;
- }
- FOREACH_INT8X16_OPCODE(CASE_STMT) {
- replacements_[node->id()].type = SimdType::kInt8x16;
- break;
- }
- case IrOpcode::kLoadTransform: {
- LoadTransformParameters params = LoadTransformParametersOf(node->op());
- switch (params.transformation) {
- case LoadTransformation::kS128Load8Splat:
- replacements_[node->id()].type = SimdType::kInt8x16;
- break;
- case LoadTransformation::kS128Load16Splat:
- case LoadTransformation::kS128Load8x8S:
- case LoadTransformation::kS128Load8x8U:
- replacements_[node->id()].type = SimdType::kInt16x8;
- break;
- case LoadTransformation::kS128Load32Splat:
- case LoadTransformation::kS128Load16x4S:
- case LoadTransformation::kS128Load16x4U:
- case LoadTransformation::kS128Load32Zero:
- replacements_[node->id()].type = SimdType::kInt32x4;
- break;
- case LoadTransformation::kS128Load64Splat:
- case LoadTransformation::kS128Load32x2S:
- case LoadTransformation::kS128Load32x2U:
- case LoadTransformation::kS128Load64Zero:
- replacements_[node->id()].type = SimdType::kInt64x2;
- break;
- default:
- UNIMPLEMENTED();
- }
- break;
- }
- default: {
- switch (output->opcode()) {
- case IrOpcode::kF32x4SConvertI32x4:
- case IrOpcode::kF32x4UConvertI32x4:
- case IrOpcode::kI16x8SConvertI32x4:
- case IrOpcode::kI16x8UConvertI32x4: {
- replacements_[node->id()].type = SimdType::kInt32x4;
- break;
- }
- case IrOpcode::kI8x16SConvertI16x8:
- case IrOpcode::kI8x16UConvertI16x8:
- case IrOpcode::kI32x4SConvertI16x8Low:
- case IrOpcode::kI32x4SConvertI16x8High:
- case IrOpcode::kI32x4UConvertI16x8Low:
- case IrOpcode::kI32x4UConvertI16x8High: {
- replacements_[node->id()].type = SimdType::kInt16x8;
- break;
- }
- case IrOpcode::kI16x8SConvertI8x16Low:
- case IrOpcode::kI16x8SConvertI8x16High:
- case IrOpcode::kI16x8UConvertI8x16Low:
- case IrOpcode::kI16x8UConvertI8x16High: {
- replacements_[node->id()].type = SimdType::kInt8x16;
- break;
- }
- FOREACH_FLOAT32X4_TO_INT32X4OPCODE(CASE_STMT)
- case IrOpcode::kI32x4SConvertF32x4:
- case IrOpcode::kI32x4UConvertF32x4: {
- replacements_[node->id()].type = SimdType::kFloat32x4;
- break;
- }
- case IrOpcode::kS128Select: {
- replacements_[node->id()].type = SimdType::kInt32x4;
- break;
- }
- default: {
- replacements_[node->id()].type = replacements_[output->id()].type;
- }
- }
- }
-#undef CASE_STMT
- }
-}
-
-static int GetParameterIndexAfterLoweringSimd128(
- Signature<MachineRepresentation>* signature, int old_index) {
- // In function calls, the simd128 types are passed as 4 Int32 types. The
- // parameters are typecast to the types as needed for various operations.
- int result = old_index;
- for (int i = 0; i < old_index; ++i) {
- if (signature->GetParam(i) == MachineRepresentation::kSimd128) {
- result += 3;
- }
- }
- return result;
-}
-
-int SimdScalarLowering::GetParameterCountAfterLowering() {
- if (parameter_count_after_lowering_ == -1) {
- // GetParameterIndexAfterLoweringSimd128(parameter_count) returns the
- // parameter count after lowering.
- parameter_count_after_lowering_ = GetParameterIndexAfterLoweringSimd128(
- signature(), static_cast<int>(signature()->parameter_count()));
- }
- return parameter_count_after_lowering_;
-}
-
-static int GetReturnCountAfterLoweringSimd128(
- Signature<MachineRepresentation>* signature) {
- int result = static_cast<int>(signature->return_count());
- for (int i = 0; i < static_cast<int>(signature->return_count()); ++i) {
- if (signature->GetReturn(i) == MachineRepresentation::kSimd128) {
- result += 3;
- }
- }
- return result;
-}
-
-int GetReturnIndexAfterLowering(const CallDescriptor* call_descriptor,
- int old_index) {
- int result = old_index;
- for (int i = 0; i < old_index; ++i) {
- if (call_descriptor->GetReturnType(i).representation() ==
- MachineRepresentation::kSimd128) {
- result += kNumLanes32 - 1;
- }
- }
- return result;
-}
-
-static int GetReturnCountAfterLoweringSimd128(
- const CallDescriptor* call_descriptor) {
- return GetReturnIndexAfterLowering(
- call_descriptor, static_cast<int>(call_descriptor->ReturnCount()));
-}
-
-int SimdScalarLowering::NumLanes(SimdType type) {
- int num_lanes = 0;
- if (type == SimdType::kFloat64x2 || type == SimdType::kInt64x2) {
- num_lanes = kNumLanes64;
- } else if (type == SimdType::kFloat32x4 || type == SimdType::kInt32x4) {
- num_lanes = kNumLanes32;
- } else if (type == SimdType::kInt16x8) {
- num_lanes = kNumLanes16;
- } else if (type == SimdType::kInt8x16) {
- num_lanes = kNumLanes8;
- } else {
- UNREACHABLE();
- }
- return num_lanes;
-}
-
-constexpr int SimdScalarLowering::kLaneOffsets[];
-
-void SimdScalarLowering::GetIndexNodes(Node* index, Node** new_indices,
- SimdType type) {
- int num_lanes = NumLanes(type);
- int lane_width = kSimd128Size / num_lanes;
- int laneIndex = kLaneOffsets[0] / lane_width;
-
- Node* rep = index;
-
- if (HasReplacement(0, index)) {
- // Index nodes are lowered to scalar nodes.
- DCHECK_EQ(1, ReplacementCount(index));
- rep = GetReplacements(index)[0];
- }
-
- new_indices[laneIndex] = rep;
- for (int i = 1; i < num_lanes; ++i) {
- laneIndex = kLaneOffsets[i * lane_width] / lane_width;
- new_indices[laneIndex] = graph()->NewNode(
- machine()->Int32Add(), rep,
- graph()->NewNode(
- common()->Int32Constant(static_cast<int>(i) * lane_width)));
- }
-}
-
-void SimdScalarLowering::LowerLoadOp(Node* node, SimdType type) {
- MachineRepresentation rep =
- node->opcode() == IrOpcode::kLoadFromObject
- ? ObjectAccessOf(node->op()).machine_type.representation()
- : LoadRepresentationOf(node->op()).representation();
- const Operator* load_op;
- switch (node->opcode()) {
- case IrOpcode::kLoad:
- load_op = machine()->Load(MachineTypeFrom(type));
- break;
- case IrOpcode::kLoadImmutable:
- load_op = machine()->LoadImmutable(MachineTypeFrom(type));
- break;
- case IrOpcode::kLoadFromObject:
- load_op = simplified()->LoadFromObject(
- ObjectAccess(MachineTypeFrom(type), kNoWriteBarrier));
- break;
- case IrOpcode::kUnalignedLoad:
- load_op = machine()->UnalignedLoad(MachineTypeFrom(type));
- break;
- case IrOpcode::kProtectedLoad:
- load_op = machine()->ProtectedLoad(MachineTypeFrom(type));
- break;
- default:
- UNREACHABLE();
- }
- if (rep == MachineRepresentation::kSimd128) {
- Node* base = node->InputAt(0);
- Node* index = node->InputAt(1);
- int num_lanes = NumLanes(type);
- Node** indices = zone()->NewArray<Node*>(num_lanes);
- GetIndexNodes(index, indices, type);
- Node** rep_nodes = zone()->NewArray<Node*>(num_lanes);
- rep_nodes[0] = node;
- rep_nodes[0]->ReplaceInput(1, indices[0]);
- NodeProperties::ChangeOp(rep_nodes[0], load_op);
- if (node->InputCount() > 2) {
- DCHECK_LT(3, node->InputCount());
- Node* effect_input = node->InputAt(2);
- Node* control_input = node->InputAt(3);
- for (int i = num_lanes - 1; i > 0; --i) {
- rep_nodes[i] = graph()->NewNode(load_op, base, indices[i], effect_input,
- control_input);
- effect_input = rep_nodes[i];
- }
- rep_nodes[0]->ReplaceInput(2, rep_nodes[1]);
- } else {
- for (int i = 1; i < num_lanes; ++i) {
- rep_nodes[i] = graph()->NewNode(load_op, base, indices[i]);
- }
- }
- ReplaceNode(node, rep_nodes, num_lanes);
- } else {
- DefaultLowering(node);
- }
-}
-
-void SimdScalarLowering::LowerLoadTransformOp(Node* node, SimdType type) {
- LoadTransformParameters params = LoadTransformParametersOf(node->op());
- MachineType load_rep = MachineType::None();
- SimdType load_type = type;
-
- // Load extends have a different machine type for loading.
- switch (params.transformation) {
- case LoadTransformation::kS128Load8x8S:
- load_rep = MachineType::Int8();
- load_type = SimdType::kInt8x16;
- break;
- case LoadTransformation::kS128Load8x8U:
- load_rep = MachineType::Uint8();
- load_type = SimdType::kInt8x16;
- break;
- case LoadTransformation::kS128Load16x4S:
- load_rep = MachineType::Int16();
- load_type = SimdType::kInt16x8;
- break;
- case LoadTransformation::kS128Load16x4U:
- load_rep = MachineType::Uint16();
- load_type = SimdType::kInt16x8;
- break;
- case LoadTransformation::kS128Load32x2S:
- load_rep = MachineType::Int32();
- load_type = SimdType::kInt32x4;
- break;
- case LoadTransformation::kS128Load32x2U:
- load_rep = MachineType::Uint32();
- load_type = SimdType::kInt32x4;
- break;
- case LoadTransformation::kS128Load8Splat:
- case LoadTransformation::kS128Load16Splat:
- case LoadTransformation::kS128Load32Splat:
- case LoadTransformation::kS128Load64Splat:
- case LoadTransformation::kS128Load32Zero:
- case LoadTransformation::kS128Load64Zero:
- load_rep = MachineTypeFrom(type);
- break;
- default:
- UNREACHABLE();
- }
-
- DCHECK_NE(load_rep, MachineType::None());
-
- const Operator* load_op;
- switch (params.kind) {
- case MemoryAccessKind::kNormal:
- load_op = machine()->Load(load_rep);
- break;
- case MemoryAccessKind::kUnaligned:
- load_op = machine()->UnalignedLoad(load_rep);
- break;
- case MemoryAccessKind::kProtected:
- load_op = machine()->ProtectedLoad(load_rep);
- break;
- }
-
- Node* base = node->InputAt(0);
- Node* index = node->InputAt(1);
- int num_lanes = NumLanes(type);
- Node** reps = zone()->NewArray<Node*>(num_lanes);
- Node* effect_input = node->InputAt(2);
- Node* control_input = node->InputAt(3);
-
- // This node is also used as effect input into other nodes, so we need to
- // change this node in place.
- reps[0] = node;
- NodeProperties::ChangeOp(reps[0], load_op);
-
- if (type != load_type) {
- // We load a smaller lane size, then extend to a larger lane size. So use
- // the smaller lane size to calculte the index nodes for loads, but only
- // actually load half of those lanes.
- Node** indices = zone()->NewArray<Node*>(num_lanes * 2);
- GetIndexNodes(index, indices, load_type);
-
- reps[0]->ReplaceInput(1, indices[0]);
-
- for (int i = num_lanes - 1; i > 0; --i) {
- reps[i] = graph()->NewNode(load_op, base, indices[i], effect_input,
- control_input);
- effect_input = reps[i];
- }
- } else {
- if (params.transformation == LoadTransformation::kS128Load32Zero) {
- for (int i = num_lanes - 1; i > 0; --i) {
- reps[i] = mcgraph_->Int32Constant(0);
- }
- } else if (params.transformation == LoadTransformation::kS128Load64Zero) {
- for (int i = num_lanes - 1; i > 0; --i) {
- reps[i] = mcgraph_->Int64Constant(0);
- }
- } else {
- // Load splat, load from the same index for every lane.
- Node* rep = HasReplacement(0, index) ? GetReplacements(index)[0] : index;
-
- // Replace first node, we only called ChangeOp above.
- reps[0]->ReplaceInput(1, rep);
- for (int i = num_lanes - 1; i > 0; --i) {
- reps[i] =
- graph()->NewNode(load_op, base, rep, effect_input, control_input);
- effect_input = reps[i];
- }
- }
- }
-
- // Update the effect input, completing the effect chain, but only if there is
- // an effect output (LoadZero does not have an effect output, it is zero).
- if (reps[1]->op()->EffectOutputCount() > 0) {
- reps[0]->ReplaceInput(2, reps[1]);
- }
-
- // Special case, the load nodes need to be sign extended, and we do it here so
- // the loop above can connect all the effect edges correctly.
- if (params.transformation == LoadTransformation::kS128Load32x2S) {
- for (int i = 0; i < num_lanes; ++i) {
- reps[i] = graph()->NewNode(machine()->ChangeInt32ToInt64(), reps[i]);
- }
- } else if (params.transformation == LoadTransformation::kS128Load32x2U) {
- for (int i = 0; i < num_lanes; ++i) {
- reps[i] = graph()->NewNode(machine()->ChangeUint32ToUint64(), reps[i]);
- }
- }
-
- ReplaceNode(node, reps, num_lanes);
-}
-
-void SimdScalarLowering::LowerStoreOp(Node* node) {
- // For store operation, use replacement type of its input instead of the
- // one of its effected node.
- DCHECK_LT(2, node->InputCount());
- SimdType rep_type = ReplacementType(node->InputAt(2));
- replacements_[node->id()].type = rep_type;
- const Operator* store_op;
- MachineRepresentation rep;
- switch (node->opcode()) {
- case IrOpcode::kStore: {
- rep = StoreRepresentationOf(node->op()).representation();
- WriteBarrierKind write_barrier_kind =
- StoreRepresentationOf(node->op()).write_barrier_kind();
- store_op = machine()->Store(StoreRepresentation(
- MachineTypeFrom(rep_type).representation(), write_barrier_kind));
- break;
- }
- case IrOpcode::kStoreToObject: {
- rep = ObjectAccessOf(node->op()).machine_type.representation();
- WriteBarrierKind write_barrier_kind =
- ObjectAccessOf(node->op()).write_barrier_kind;
- store_op = simplified()->StoreToObject(
- ObjectAccess(MachineTypeFrom(rep_type), write_barrier_kind));
- break;
- }
- case IrOpcode::kUnalignedStore: {
- rep = UnalignedStoreRepresentationOf(node->op());
- store_op =
- machine()->UnalignedStore(MachineTypeFrom(rep_type).representation());
- break;
- }
- case IrOpcode::kProtectedStore: {
- rep = StoreRepresentationOf(node->op()).representation();
- store_op =
- machine()->ProtectedStore(MachineTypeFrom(rep_type).representation());
- break;
- }
- default:
- UNREACHABLE();
- }
- if (rep == MachineRepresentation::kSimd128) {
- Node* base = node->InputAt(0);
- Node* index = node->InputAt(1);
- int num_lanes = NumLanes(rep_type);
- Node** indices = zone()->NewArray<Node*>(num_lanes);
- GetIndexNodes(index, indices, rep_type);
- Node* value = node->InputAt(2);
- DCHECK(HasReplacement(1, value));
- Node** rep_nodes = zone()->NewArray<Node*>(num_lanes);
- rep_nodes[0] = node;
- Node** rep_inputs = GetReplacementsWithType(value, rep_type);
- rep_nodes[0]->ReplaceInput(2, rep_inputs[0]);
- rep_nodes[0]->ReplaceInput(1, indices[0]);
- NodeProperties::ChangeOp(node, store_op);
- if (node->InputCount() > 3) {
- DCHECK_LT(4, node->InputCount());
- Node* effect_input = node->InputAt(3);
- Node* control_input = node->InputAt(4);
- for (int i = num_lanes - 1; i > 0; --i) {
- rep_nodes[i] =
- graph()->NewNode(store_op, base, indices[i], rep_inputs[i],
- effect_input, control_input);
- effect_input = rep_nodes[i];
- }
- rep_nodes[0]->ReplaceInput(3, rep_nodes[1]);
- } else {
- for (int i = 1; i < num_lanes; ++i) {
- rep_nodes[i] =
- graph()->NewNode(store_op, base, indices[i], rep_inputs[i]);
- }
- }
- ReplaceNode(node, rep_nodes, num_lanes);
- } else {
- DefaultLowering(node);
- }
-}
-
-void SimdScalarLowering::LowerBinaryOp(Node* node, SimdType input_rep_type,
- const Operator* op,
- bool not_horizontal) {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), input_rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), input_rep_type);
- int num_lanes = NumLanes(input_rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- if (not_horizontal) {
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = graph()->NewNode(op, rep_left[i], rep_right[i]);
- }
- } else {
- for (int i = 0; i < num_lanes / 2; ++i) {
- rep_node[i] = graph()->NewNode(op, rep_left[i * 2], rep_left[i * 2 + 1]);
- rep_node[i + num_lanes / 2] =
- graph()->NewNode(op, rep_right[i * 2], rep_right[i * 2 + 1]);
- }
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-void SimdScalarLowering::LowerCompareOp(Node* node, SimdType input_rep_type,
- const Operator* op,
- bool invert_inputs) {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), input_rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), input_rep_type);
- int num_lanes = NumLanes(input_rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- Node* cmp_result = nullptr;
- if (invert_inputs) {
- cmp_result = graph()->NewNode(op, rep_right[i], rep_left[i]);
- } else {
- cmp_result = graph()->NewNode(op, rep_left[i], rep_right[i]);
- }
- Diamond d_cmp(graph(), common(), cmp_result);
- rep_node[i] = ConstructPhiForComparison(d_cmp, input_rep_type, -1, 0);
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-Node* SimdScalarLowering::FixUpperBits(Node* input, int32_t shift) {
- return graph()->NewNode(machine()->Word32Sar(),
- graph()->NewNode(machine()->Word32Shl(), input,
- mcgraph_->Int32Constant(shift)),
- mcgraph_->Int32Constant(shift));
-}
-
-void SimdScalarLowering::LowerBinaryOpForSmallInt(Node* node,
- SimdType input_rep_type,
- const Operator* op,
- bool not_horizontal) {
- DCHECK_EQ(2, node->InputCount());
- DCHECK(input_rep_type == SimdType::kInt16x8 ||
- input_rep_type == SimdType::kInt8x16);
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), input_rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), input_rep_type);
- int num_lanes = NumLanes(input_rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- int32_t shift_val =
- (input_rep_type == SimdType::kInt16x8) ? kShift16 : kShift8;
- if (not_horizontal) {
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = FixUpperBits(
- graph()->NewNode(op, rep_left[i], rep_right[i]), shift_val);
- }
- } else {
- for (int i = 0; i < num_lanes / 2; ++i) {
- rep_node[i] = FixUpperBits(
- graph()->NewNode(op, rep_left[i * 2], rep_left[i * 2 + 1]),
- shift_val);
- rep_node[i + num_lanes / 2] = FixUpperBits(
- graph()->NewNode(op, rep_right[i * 2], rep_right[i * 2 + 1]),
- shift_val);
- }
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-Node* SimdScalarLowering::Mask(Node* input, int32_t mask) {
- return graph()->NewNode(machine()->Word32And(), input,
- mcgraph_->Int32Constant(mask));
-}
-
-void SimdScalarLowering::LowerSaturateBinaryOp(Node* node,
- SimdType input_rep_type,
- const Operator* op,
- bool is_signed) {
- DCHECK_EQ(2, node->InputCount());
- DCHECK(input_rep_type == SimdType::kInt16x8 ||
- input_rep_type == SimdType::kInt8x16);
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), input_rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), input_rep_type);
- int32_t min = 0;
- int32_t max = 0;
- int32_t mask = 0;
- int32_t shift_val = 0;
- MachineRepresentation phi_rep;
- if (input_rep_type == SimdType::kInt16x8) {
- if (is_signed) {
- min = std::numeric_limits<int16_t>::min();
- max = std::numeric_limits<int16_t>::max();
- } else {
- min = std::numeric_limits<uint16_t>::min();
- max = std::numeric_limits<uint16_t>::max();
- }
- mask = kMask16;
- shift_val = kShift16;
- phi_rep = MachineRepresentation::kWord16;
- } else {
- if (is_signed) {
- min = std::numeric_limits<int8_t>::min();
- max = std::numeric_limits<int8_t>::max();
- } else {
- min = std::numeric_limits<uint8_t>::min();
- max = std::numeric_limits<uint8_t>::max();
- }
- mask = kMask8;
- shift_val = kShift8;
- phi_rep = MachineRepresentation::kWord8;
- }
- int num_lanes = NumLanes(input_rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- Node* op_result = nullptr;
- Node* left = is_signed ? rep_left[i] : Mask(rep_left[i], mask);
- Node* right = is_signed ? rep_right[i] : Mask(rep_right[i], mask);
- op_result = graph()->NewNode(op, left, right);
- Diamond d_min(graph(), common(),
- graph()->NewNode(machine()->Int32LessThan(), op_result,
- mcgraph_->Int32Constant(min)));
- rep_node[i] = d_min.Phi(phi_rep, mcgraph_->Int32Constant(min), op_result);
- Diamond d_max(graph(), common(),
- graph()->NewNode(machine()->Int32LessThan(),
- mcgraph_->Int32Constant(max), rep_node[i]));
- rep_node[i] = d_max.Phi(phi_rep, mcgraph_->Int32Constant(max), rep_node[i]);
- rep_node[i] =
- is_signed ? rep_node[i] : FixUpperBits(rep_node[i], shift_val);
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-void SimdScalarLowering::LowerUnaryOp(Node* node, SimdType input_rep_type,
- const Operator* op) {
- DCHECK_EQ(1, node->InputCount());
- Node** rep = GetReplacementsWithType(node->InputAt(0), input_rep_type);
- int num_lanes = NumLanes(input_rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = graph()->NewNode(op, rep[i]);
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-void SimdScalarLowering::LowerIntMinMax(Node* node, const Operator* op,
- bool is_max, SimdType type) {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), type);
- int num_lanes = NumLanes(type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- MachineRepresentation rep = MachineRepresentation::kNone;
- if (type == SimdType::kInt32x4) {
- rep = MachineRepresentation::kWord32;
- } else if (type == SimdType::kInt16x8) {
- rep = MachineRepresentation::kWord16;
- } else if (type == SimdType::kInt8x16) {
- rep = MachineRepresentation::kWord8;
- } else {
- UNREACHABLE();
- }
- for (int i = 0; i < num_lanes; ++i) {
- Diamond d(graph(), common(),
- graph()->NewNode(op, rep_left[i], rep_right[i]));
- if (is_max) {
- rep_node[i] = d.Phi(rep, rep_right[i], rep_left[i]);
- } else {
- rep_node[i] = d.Phi(rep, rep_left[i], rep_right[i]);
- }
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-Node* SimdScalarLowering::BuildF64Trunc(Node* input) {
- if (machine()->Float64RoundTruncate().IsSupported()) {
- return graph()->NewNode(machine()->Float64RoundTruncate().op(), input);
- } else {
- ExternalReference ref = ExternalReference::wasm_f64_trunc();
- Node* stack_slot =
- graph()->NewNode(machine()->StackSlot(MachineRepresentation::kFloat64));
- const Operator* store_op = machine()->Store(
- StoreRepresentation(MachineRepresentation::kFloat64, kNoWriteBarrier));
- Node* effect =
- graph()->NewNode(store_op, stack_slot, mcgraph_->Int32Constant(0),
- input, graph()->start(), graph()->start());
- Node* function = graph()->NewNode(common()->ExternalConstant(ref));
- Node** args = zone()->NewArray<Node*>(4);
- args[0] = function;
- args[1] = stack_slot;
- args[2] = effect;
- args[3] = graph()->start();
- Signature<MachineType>::Builder sig_builder(zone(), 0, 1);
- sig_builder.AddParam(MachineType::Pointer());
- auto call_descriptor =
- Linkage::GetSimplifiedCDescriptor(zone(), sig_builder.Build());
- Node* call = graph()->NewNode(common()->Call(call_descriptor), 4, args);
- return graph()->NewNode(machine()->Load(LoadRepresentation::Float64()),
- stack_slot, mcgraph_->Int32Constant(0), call,
- graph()->start());
- }
-}
-
-void SimdScalarLowering::LowerConvertFromFloat(Node* node, bool is_signed) {
- DCHECK_EQ(1, node->InputCount());
- Node** rep = GetReplacementsWithType(node->InputAt(0), SimdType::kFloat32x4);
- Node* rep_node[kNumLanes32];
- Node* double_zero = graph()->NewNode(common()->Float64Constant(0.0));
- Node* min = graph()->NewNode(
- common()->Float64Constant(static_cast<double>(is_signed ? kMinInt : 0)));
- Node* max = graph()->NewNode(common()->Float64Constant(
- static_cast<double>(is_signed ? kMaxInt : 0xFFFFFFFFu)));
- for (int i = 0; i < kNumLanes32; ++i) {
- Node* double_rep =
- graph()->NewNode(machine()->ChangeFloat32ToFloat64(), rep[i]);
- Diamond nan_d(
- graph(), common(),
- graph()->NewNode(machine()->Float64Equal(), double_rep, double_rep));
- Node* temp =
- nan_d.Phi(MachineRepresentation::kFloat64, double_rep, double_zero);
- Diamond min_d(graph(), common(),
- graph()->NewNode(machine()->Float64LessThan(), temp, min));
- temp = min_d.Phi(MachineRepresentation::kFloat64, min, temp);
- Diamond max_d(graph(), common(),
- graph()->NewNode(machine()->Float64LessThan(), max, temp));
- temp = max_d.Phi(MachineRepresentation::kFloat64, max, temp);
- Node* trunc = BuildF64Trunc(temp);
- if (is_signed) {
- rep_node[i] = graph()->NewNode(machine()->ChangeFloat64ToInt32(), trunc);
- } else {
- rep_node[i] =
- graph()->NewNode(machine()->TruncateFloat64ToUint32(), trunc);
- }
- }
- ReplaceNode(node, rep_node, kNumLanes32);
-}
-
-void SimdScalarLowering::LowerConvertFromInt(Node* node,
- SimdType input_rep_type,
- SimdType output_rep_type,
- bool is_signed, int start_index) {
- DCHECK_EQ(1, node->InputCount());
- Node** rep = GetReplacementsWithType(node->InputAt(0), input_rep_type);
-
- int32_t mask = 0;
- if (input_rep_type == SimdType::kInt16x8) {
- DCHECK_EQ(output_rep_type, SimdType::kInt32x4);
- mask = kMask16;
- } else {
- DCHECK_EQ(output_rep_type, SimdType::kInt16x8);
- DCHECK_EQ(input_rep_type, SimdType::kInt8x16);
- mask = kMask8;
- }
-
- int num_lanes = NumLanes(output_rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] =
- is_signed ? rep[i + start_index] : Mask(rep[i + start_index], mask);
- }
-
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-void SimdScalarLowering::LowerPack(Node* node, SimdType input_rep_type,
- SimdType output_rep_type, bool is_signed) {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), input_rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), input_rep_type);
- const Operator* less_op = machine()->Int32LessThan();
- Node* min = nullptr;
- Node* max = nullptr;
- const Operator* sign_extend;
- MachineRepresentation phi_rep;
- if (output_rep_type == SimdType::kInt16x8) {
- sign_extend = machine()->SignExtendWord16ToInt32();
- DCHECK(input_rep_type == SimdType::kInt32x4);
- if (is_signed) {
- min = mcgraph_->Int32Constant(std::numeric_limits<int16_t>::min());
- max = mcgraph_->Int32Constant(std::numeric_limits<int16_t>::max());
- } else {
- min = mcgraph_->Uint32Constant(std::numeric_limits<uint16_t>::min());
- max = mcgraph_->Uint32Constant(std::numeric_limits<uint16_t>::max());
- }
- phi_rep = MachineRepresentation::kWord16;
- } else {
- sign_extend = machine()->SignExtendWord8ToInt32();
- DCHECK(output_rep_type == SimdType::kInt8x16 &&
- input_rep_type == SimdType::kInt16x8);
- if (is_signed) {
- min = mcgraph_->Int32Constant(std::numeric_limits<int8_t>::min());
- max = mcgraph_->Int32Constant(std::numeric_limits<int8_t>::max());
- } else {
- min = mcgraph_->Uint32Constant(std::numeric_limits<uint8_t>::min());
- max = mcgraph_->Uint32Constant(std::numeric_limits<uint8_t>::max());
- }
- phi_rep = MachineRepresentation::kWord8;
- }
- int num_lanes = NumLanes(output_rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- Node* input = nullptr;
- if (i < num_lanes / 2)
- input = rep_left[i];
- else
- input = rep_right[i - num_lanes / 2];
- Diamond d_min(graph(), common(), graph()->NewNode(less_op, input, min));
- input = d_min.Phi(phi_rep, min, input);
- Diamond d_max(graph(), common(), graph()->NewNode(less_op, max, input));
- // We keep nodes in sign-extended form. E.g. for uint8_t, we need to
- // compare with 0x000000ff (saturated narrowing), but the result of
- // conversion should be 0xffffffff to work well with the rest of lowering.
- rep_node[i] = graph()->NewNode(sign_extend, d_max.Phi(phi_rep, max, input));
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-void SimdScalarLowering::LowerShiftOp(Node* node, SimdType type) {
- DCHECK_EQ(2, node->InputCount());
-
- // The shift node, if it has a replacement, should be a single scalar.
- DCHECK_GE(1, ReplacementCount(node->InputAt(1)));
- Node* val = (HasReplacement(0, node->InputAt(1)))
- ? GetReplacements(node->InputAt(1))[0]
- : node->InputAt(1);
-
- Node* shift_node = Mask(val, GetMaskForShift(node));
- Node** rep = GetReplacementsWithType(node->InputAt(0), type);
- int num_lanes = NumLanes(type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = rep[i];
- switch (node->opcode()) {
- case IrOpcode::kI8x16ShrU:
- rep_node[i] = Mask(rep_node[i], kMask8);
- rep_node[i] =
- graph()->NewNode(machine()->Word32Shr(), rep_node[i], shift_node);
- break;
- case IrOpcode::kI16x8ShrU:
- rep_node[i] = Mask(rep_node[i], kMask16);
- V8_FALLTHROUGH;
- case IrOpcode::kI32x4ShrU:
- rep_node[i] =
- graph()->NewNode(machine()->Word32Shr(), rep_node[i], shift_node);
- break;
- case IrOpcode::kI64x2ShrU:
- rep_node[i] =
- graph()->NewNode(machine()->Word64Shr(), rep_node[i], shift_node);
- break;
- case IrOpcode::kI64x2Shl:
- rep_node[i] =
- graph()->NewNode(machine()->Word64Shl(), rep_node[i], shift_node);
- break;
- case IrOpcode::kI32x4Shl:
- rep_node[i] =
- graph()->NewNode(machine()->Word32Shl(), rep_node[i], shift_node);
- break;
- case IrOpcode::kI16x8Shl:
- rep_node[i] =
- graph()->NewNode(machine()->Word32Shl(), rep_node[i], shift_node);
- rep_node[i] = FixUpperBits(rep_node[i], kShift16);
- break;
- case IrOpcode::kI8x16Shl:
- rep_node[i] =
- graph()->NewNode(machine()->Word32Shl(), rep_node[i], shift_node);
- rep_node[i] = FixUpperBits(rep_node[i], kShift8);
- break;
- case IrOpcode::kI64x2ShrS:
- rep_node[i] =
- graph()->NewNode(machine()->Word64Sar(), rep_node[i], shift_node);
- break;
- case IrOpcode::kI32x4ShrS:
- case IrOpcode::kI16x8ShrS:
- case IrOpcode::kI8x16ShrS:
- rep_node[i] =
- graph()->NewNode(machine()->Word32Sar(), rep_node[i], shift_node);
- break;
- default:
- UNREACHABLE();
- }
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-Node* SimdScalarLowering::ConstructPhiForComparison(Diamond d,
- SimdType rep_type,
- int true_value,
- int false_value) {
- // Close the given Diamond d using a Phi node, taking care of constructing the
- // right kind of constants (Int32 or Int64) based on rep_type.
- if (rep_type == SimdType::kFloat64x2 || rep_type == SimdType::kInt64x2) {
- MachineRepresentation rep = MachineRepresentation::kWord64;
- return d.Phi(rep, mcgraph_->Int64Constant(true_value),
- mcgraph_->Int64Constant(false_value));
- } else {
- MachineRepresentation rep =
- (rep_type == SimdType::kFloat32x4)
- ? MachineRepresentation::kWord32
- : MachineTypeFrom(rep_type).representation();
- return d.Phi(rep, mcgraph_->Int32Constant(true_value),
- mcgraph_->Int32Constant(false_value));
- }
-}
-
-void SimdScalarLowering::LowerNotEqual(Node* node, SimdType input_rep_type,
- const Operator* op) {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), input_rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), input_rep_type);
- int num_lanes = NumLanes(input_rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- Diamond d(graph(), common(),
- graph()->NewNode(op, rep_left[i], rep_right[i]));
- rep_node[i] = ConstructPhiForComparison(d, input_rep_type, 0, -1);
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-void SimdScalarLowering::LowerBitMaskOp(Node* node, SimdType rep_type,
- int msb_index) {
- Node** reps = GetReplacementsWithType(node->InputAt(0), rep_type);
- int num_lanes = NumLanes(rep_type);
- Node** rep_node = zone()->NewArray<Node*>(1);
- Node* result = mcgraph_->Int32Constant(0);
- uint32_t mask = 1 << msb_index;
-
- for (int i = 0; i < num_lanes; ++i) {
- // Lane i should end up at bit i in the final result.
- // +-----------------------------------------------------------------+
- // | | msb_index | (i < msb_index) | (i > msb_index) |
- // +-------+-----------+----------------------+----------------------+
- // | i8x16 | 7 | msb >> (msb_index-i) | msb << (i-msb_index) |
- // | i16x8 | 15 | msb >> (msb_index-i) | n/a |
- // | i32x4 | 31 | msb >> (msb_index-i) | n/a |
- // +-------+-----------+----------------------+----------------------+
- Node* msb = Mask(reps[i], mask);
-
- if (i < msb_index) {
- int shift = msb_index - i;
- Node* shifted = graph()->NewNode(machine()->Word32Shr(), msb,
- mcgraph_->Int32Constant(shift));
- result = graph()->NewNode(machine()->Word32Or(), shifted, result);
- } else if (i > msb_index) {
- int shift = i - msb_index;
- Node* shifted = graph()->NewNode(machine()->Word32Shl(), msb,
- mcgraph_->Int32Constant(shift));
- result = graph()->NewNode(machine()->Word32Or(), shifted, result);
- } else {
- result = graph()->NewNode(machine()->Word32Or(), msb, result);
- }
- }
-
- rep_node[0] = result;
- ReplaceNode(node, rep_node, 1);
-}
-
-void SimdScalarLowering::LowerAllTrueOp(Node* node, SimdType rep_type) {
- // AllTrue ops require the input to be of a particular SimdType, but the op
- // itself is always replaced by a Int32x4 with 1 node.
- int num_lanes = NumLanes(rep_type);
- DCHECK_EQ(1, node->InputCount());
- Node** rep = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node* zero;
- Node* tmp_result;
- MachineRepresentation result_rep = MachineRepresentation::kWord32;
- const Operator* equals;
-
- if (SimdType::kInt64x2 == rep_type) {
- zero = mcgraph_->Int64Constant(0);
- tmp_result = mcgraph_->Int64Constant(1);
- result_rep = MachineRepresentation::kWord64;
- equals = machine()->Word64Equal();
- } else {
- zero = mcgraph_->Int32Constant(0);
- tmp_result = mcgraph_->Int32Constant(1);
- equals = machine()->Word32Equal();
- }
-
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- Diamond d(graph(), common(), graph()->NewNode(equals, rep[i], zero));
- tmp_result = d.Phi(result_rep, zero, tmp_result);
- }
-
- if (SimdType::kInt64x2 == rep_type) {
- tmp_result =
- graph()->NewNode(machine()->TruncateInt64ToInt32(), tmp_result);
- }
-
- rep_node[0] = tmp_result;
- ReplaceNode(node, rep_node, 1);
-}
-
-void SimdScalarLowering::LowerFloatPseudoMinMax(Node* node, const Operator* op,
- bool is_max, SimdType type) {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), type);
- int num_lanes = NumLanes(type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- MachineRepresentation rep = MachineTypeFrom(type).representation();
- for (int i = 0; i < num_lanes; ++i) {
- Node* cmp = is_max ? graph()->NewNode(op, rep_left[i], rep_right[i])
- : graph()->NewNode(op, rep_right[i], rep_left[i]);
- Diamond d(graph(), common(), cmp);
- rep_node[i] = d.Phi(rep, rep_right[i], rep_left[i]);
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-void SimdScalarLowering::LowerNode(Node* node) {
- SimdType rep_type = ReplacementType(node);
- int num_lanes = NumLanes(rep_type);
- switch (node->opcode()) {
- case IrOpcode::kS128Const: {
- // We could use GetReplacementsWithType for all this, but it adds a lot of
- // nodes, so sign extend the immediates ourselves here.
- DCHECK_EQ(0, node->InputCount());
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- S128ImmediateParameter params = S128ImmediateParameterOf(node->op());
-
- // For all the small ints below, we have a choice of static_cast or bit
- // twiddling, clang seems to be able to optimize either
- // (https://godbolt.org/z/9c65o8) so use static_cast for clarity.
- switch (rep_type) {
- case SimdType::kInt8x16: {
- for (int i = 0; i < num_lanes; ++i) {
- Address data_address = reinterpret_cast<Address>(params.data() + i);
- rep_node[i] = mcgraph_->Int32Constant(static_cast<int32_t>(
- base::ReadLittleEndianValue<int8_t>(data_address)));
- }
- break;
- }
- case SimdType::kInt16x8: {
- int16_t val[kNumLanes16];
- base::Memcpy(val, params.data(), kSimd128Size);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = mcgraph_->Int32Constant(static_cast<int32_t>(
- base::ReadLittleEndianValue<int16_t>(&val[i])));
- }
- break;
- }
- case SimdType::kInt32x4: {
- uint32_t val[kNumLanes32];
- base::Memcpy(val, params.data(), kSimd128Size);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = mcgraph_->Int32Constant(
- base::ReadLittleEndianValue<uint32_t>(&val[i]));
- }
- break;
- }
- case SimdType::kInt64x2: {
- uint64_t val[kNumLanes64];
- base::Memcpy(val, params.data(), kSimd128Size);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = mcgraph_->Int64Constant(
- base::ReadLittleEndianValue<uint64_t>(&val[i]));
- }
- break;
- }
- case SimdType::kFloat32x4: {
- float val[kNumLanes32];
- base::Memcpy(val, params.data(), kSimd128Size);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = mcgraph_->Float32Constant(
- base::ReadLittleEndianValue<float>(&val[i]));
- }
- break;
- }
- case SimdType::kFloat64x2: {
- double val[kNumLanes64];
- base::Memcpy(val, params.data(), kSimd128Size);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = mcgraph_->Float64Constant(
- base::ReadLittleEndianValue<double>(&val[i]));
- }
- break;
- }
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kStart: {
- int parameter_count = GetParameterCountAfterLowering();
- // Only exchange the node if the parameter count actually changed.
- if (parameter_count != static_cast<int>(signature()->parameter_count())) {
- int delta =
- parameter_count - static_cast<int>(signature()->parameter_count());
- int new_output_count = node->op()->ValueOutputCount() + delta;
- NodeProperties::ChangeOp(node, common()->Start(new_output_count));
- }
- break;
- }
- case IrOpcode::kParameter: {
- DCHECK_EQ(1, node->InputCount());
- int param_count = static_cast<int>(signature()->parameter_count());
- // Only exchange the node if the parameter count actually changed. We do
- // not even have to do the default lowering because the start node,
- // the only input of a parameter node, only changes if the parameter count
- // changes.
- if (GetParameterCountAfterLowering() != param_count) {
- int old_index = ParameterIndexOf(node->op());
- // Parameter index 0 is the instance parameter, we will use old_index to
- // index into the function signature, so we need to decrease it by 1.
- --old_index;
- int new_index =
- GetParameterIndexAfterLoweringSimd128(signature(), old_index);
- // Similarly, the index into function signature needs to account for the
- // instance parameter, so increase it by 1.
- ++new_index;
- NodeProperties::ChangeOp(node, common()->Parameter(new_index));
-
- if (old_index < 0) {
- break;
- }
-
- DCHECK(old_index < param_count);
-
- if (signature()->GetParam(old_index) ==
- MachineRepresentation::kSimd128) {
- Node* new_node[kNumLanes32];
- new_node[0] = node;
- for (int i = 1; i < kNumLanes32; ++i) {
- new_node[i] = graph()->NewNode(common()->Parameter(new_index + i),
- graph()->start());
- }
- ReplaceNode(node, new_node, kNumLanes32);
- }
- }
- break;
- }
- case IrOpcode::kSimd128ReverseBytes: {
- DCHECK_EQ(1, node->InputCount());
- SimdType input_type = ReplacementType(node->InputAt(0));
- bool is_float = input_type == SimdType::kFloat32x4 ||
- input_type == SimdType::kFloat64x2;
- replacements_[node->id()].type =
- is_float ? SimdType::kFloat32x4 : SimdType::kInt32x4;
- Node** rep = GetReplacementsWithType(
- node->InputAt(0),
- is_float ? SimdType::kFloat32x4 : SimdType::kInt32x4);
- Node* rep_node[kNumLanes32];
- for (int i = 0; i < kNumLanes32; ++i) {
- Node* temp = is_float ? graph()->NewNode(
- machine()->BitcastFloat32ToInt32(), rep[i])
- : rep[i];
- temp = graph()->NewNode(machine()->Word32ReverseBytes(), temp);
- rep_node[kNumLanes32 - 1 - i] =
- is_float
- ? graph()->NewNode(machine()->BitcastInt32ToFloat32(), temp)
- : temp;
- }
- ReplaceNode(node, rep_node, kNumLanes32);
- break;
- }
- case IrOpcode::kLoad:
- case IrOpcode::kLoadFromObject:
- case IrOpcode::kUnalignedLoad:
- case IrOpcode::kProtectedLoad:
- case IrOpcode::kLoadImmutable: {
- LowerLoadOp(node, rep_type);
- break;
- }
- case IrOpcode::kLoadTransform: {
- LowerLoadTransformOp(node, rep_type);
- break;
- }
- case IrOpcode::kStore:
- case IrOpcode::kStoreToObject:
- case IrOpcode::kUnalignedStore:
- case IrOpcode::kProtectedStore: {
- LowerStoreOp(node);
- break;
- }
- case IrOpcode::kReturn: {
- int old_input_count = node->InputCount();
- int return_arity = static_cast<int>(signature()->return_count());
- for (int i = 0; i < return_arity; i++) {
- if (signature()->GetReturn(i) != MachineRepresentation::kSimd128) {
- continue;
- }
-
- // Return nodes have a hidden input at value 0.
- Node* input = node->InputAt(i + 1);
- if (!HasReplacement(0, input)) {
- continue;
- }
-
- // V128 return types are lowered to i32x4.
- Node** reps = GetReplacementsWithType(input, rep_type);
- ReplaceNode(input, reps, NumLanes(rep_type));
- }
-
- DefaultLowering(node);
- // Nothing needs to be done here since inputs did not change.
- if (old_input_count == node->InputCount()) {
- break;
- }
-
- int new_return_count = GetReturnCountAfterLoweringSimd128(signature());
- if (static_cast<int>(signature()->return_count()) != new_return_count) {
- NodeProperties::ChangeOp(node, common()->Return(new_return_count));
- }
- break;
- }
- case IrOpcode::kCall: {
- // TODO(turbofan): Make wasm code const-correct wrt. CallDescriptor.
- auto call_descriptor =
- const_cast<CallDescriptor*>(CallDescriptorOf(node->op()));
- bool returns_require_lowering =
- GetReturnCountAfterLoweringSimd128(call_descriptor) !=
- static_cast<int>(call_descriptor->ReturnCount());
-
- // All call arguments are lowered to i32x4 in the call descriptor, so the
- // arguments need to be converted to i32x4 as well.
- for (int i = NodeProperties::PastValueIndex(node) - 1; i >= 0; i--) {
- Node* input = node->InputAt(i);
- if (ReplacementCount(input) == 1) {
- // Special case for extract lanes
- Node** reps = GetReplacements(input);
- ReplaceNode(input, reps, 1);
- } else if (HasReplacement(0, input)) {
- Node** reps = GetReplacementsWithType(input, SimdType::kInt32x4);
- ReplaceNode(input, reps, NumLanes(SimdType::kInt32x4));
- }
- }
-
- if (DefaultLowering(node) || returns_require_lowering) {
- // We have to adjust the call descriptor.
- const Operator* op = common()->Call(
- GetI32WasmCallDescriptorForSimd(zone(), call_descriptor));
- NodeProperties::ChangeOp(node, op);
- }
-
- if (!returns_require_lowering) {
- break;
- }
-
- size_t return_arity = call_descriptor->ReturnCount();
-
- if (return_arity == 1) {
- // We access the additional return values through projections.
- // Special case for return_arity 1, with multi-returns, we would have
- // already built projections for each return value, and will be handled
- // by the following code.
- Node* rep_node[kNumLanes32];
- for (int i = 0; i < kNumLanes32; ++i) {
- rep_node[i] =
- graph()->NewNode(common()->Projection(i), node, graph()->start());
- }
- ReplaceNode(node, rep_node, kNumLanes32);
- break;
- }
-
- ZoneVector<Node*> projections(return_arity, zone());
- NodeProperties::CollectValueProjections(node, projections.data(),
- return_arity);
-
- for (size_t old_index = 0, new_index = 0; old_index < return_arity;
- ++old_index, ++new_index) {
- Node* use_node = projections[old_index];
- DCHECK_EQ(ProjectionIndexOf(use_node->op()), old_index);
- DCHECK_EQ(GetReturnIndexAfterLowering(call_descriptor,
- static_cast<int>(old_index)),
- static_cast<int>(new_index));
- if (new_index != old_index) {
- NodeProperties::ChangeOp(use_node, common()->Projection(new_index));
- }
- if (call_descriptor->GetReturnType(old_index).representation() ==
- MachineRepresentation::kSimd128) {
- Node* rep_node[kNumLanes32];
- for (int i = 0; i < kNumLanes32; ++i) {
- rep_node[i] = graph()->NewNode(common()->Projection(new_index + i),
- node, graph()->start());
- }
- ReplaceNode(use_node, rep_node, kNumLanes32);
- new_index += kNumLanes32 - 1;
- }
- }
- break;
- }
- case IrOpcode::kPhi: {
- MachineRepresentation rep = PhiRepresentationOf(node->op());
- if (rep == MachineRepresentation::kSimd128) {
- // The replacement nodes have already been created, we only have to
- // replace placeholder nodes.
- Node** rep_node = GetReplacements(node);
- for (int i = 0; i < node->op()->ValueInputCount(); ++i) {
- Node** rep_input =
- GetReplacementsWithType(node->InputAt(i), rep_type);
- for (int j = 0; j < num_lanes; j++) {
- rep_node[j]->ReplaceInput(i, rep_input[j]);
- }
- }
- } else {
- DefaultLowering(node);
- }
- break;
- }
- case IrOpcode::kLoopExitValue: {
- if (!HasReplacement(0, node->InputAt(0))) break;
- Node* control = node->InputAt(NodeProperties::FirstControlIndex(node));
- Node** inputs = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_nodes = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; i++) {
- auto op =
- common()->LoopExitValue(MachineTypeFrom(rep_type).representation());
- rep_nodes[i] = graph()->NewNode(op, inputs[i], control);
- }
- ReplaceNode(node, rep_nodes, num_lanes);
- break;
- }
- case IrOpcode::kI64x2Add: {
- LowerBinaryOp(node, rep_type, machine()->Int64Add());
- break;
- }
- case IrOpcode::kI64x2Sub: {
- LowerBinaryOp(node, rep_type, machine()->Int64Sub());
- break;
- }
- case IrOpcode::kI64x2Mul: {
- LowerBinaryOp(node, rep_type, machine()->Int64Mul());
- break;
- }
-#define I32X4_BINOP_CASE(opcode, instruction) \
- case IrOpcode::opcode: { \
- LowerBinaryOp(node, rep_type, machine()->instruction()); \
- break; \
- }
- I32X4_BINOP_CASE(kI32x4Add, Int32Add)
- I32X4_BINOP_CASE(kI32x4Sub, Int32Sub)
- I32X4_BINOP_CASE(kI32x4Mul, Int32Mul)
- I32X4_BINOP_CASE(kS128And, Word32And)
- I32X4_BINOP_CASE(kS128Or, Word32Or)
- I32X4_BINOP_CASE(kS128Xor, Word32Xor)
-#undef I32X4_BINOP_CASE
- case IrOpcode::kI16x8Add:
- case IrOpcode::kI8x16Add: {
- LowerBinaryOpForSmallInt(node, rep_type, machine()->Int32Add());
- break;
- }
- case IrOpcode::kI16x8Sub:
- case IrOpcode::kI8x16Sub: {
- LowerBinaryOpForSmallInt(node, rep_type, machine()->Int32Sub());
- break;
- }
- case IrOpcode::kI16x8Mul: {
- LowerBinaryOpForSmallInt(node, rep_type, machine()->Int32Mul());
- break;
- }
- case IrOpcode::kI16x8AddSatS:
- case IrOpcode::kI8x16AddSatS: {
- LowerSaturateBinaryOp(node, rep_type, machine()->Int32Add(), true);
- break;
- }
- case IrOpcode::kI16x8SubSatS:
- case IrOpcode::kI8x16SubSatS: {
- LowerSaturateBinaryOp(node, rep_type, machine()->Int32Sub(), true);
- break;
- }
- case IrOpcode::kI16x8AddSatU:
- case IrOpcode::kI8x16AddSatU: {
- LowerSaturateBinaryOp(node, rep_type, machine()->Int32Add(), false);
- break;
- }
- case IrOpcode::kI16x8SubSatU:
- case IrOpcode::kI8x16SubSatU: {
- LowerSaturateBinaryOp(node, rep_type, machine()->Int32Sub(), false);
- break;
- }
- case IrOpcode::kI32x4MaxS:
- case IrOpcode::kI16x8MaxS:
- case IrOpcode::kI8x16MaxS: {
- LowerIntMinMax(node, machine()->Int32LessThan(), true, rep_type);
- break;
- }
- case IrOpcode::kI32x4MinS:
- case IrOpcode::kI16x8MinS:
- case IrOpcode::kI8x16MinS: {
- LowerIntMinMax(node, machine()->Int32LessThan(), false, rep_type);
- break;
- }
- case IrOpcode::kI32x4MaxU:
- case IrOpcode::kI16x8MaxU:
- case IrOpcode::kI8x16MaxU: {
- LowerIntMinMax(node, machine()->Uint32LessThan(), true, rep_type);
- break;
- }
- case IrOpcode::kI32x4MinU:
- case IrOpcode::kI16x8MinU:
- case IrOpcode::kI8x16MinU: {
- LowerIntMinMax(node, machine()->Uint32LessThan(), false, rep_type);
- break;
- }
- case IrOpcode::kI32x4DotI16x8S: {
- // i32x4.dot_i16x8_s wants the inputs to be i16x8, but outputs to i32x4.
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left =
- GetReplacementsWithType(node->InputAt(0), SimdType::kInt16x8);
- Node** rep_right =
- GetReplacementsWithType(node->InputAt(1), SimdType::kInt16x8);
- int num_lanes = NumLanes(rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- Node* lo = graph()->NewNode(machine()->Int32Mul(), rep_left[i * 2],
- rep_right[i * 2]);
- Node* hi = graph()->NewNode(machine()->Int32Mul(), rep_left[i * 2 + 1],
- rep_right[i * 2 + 1]);
- rep_node[i] = graph()->NewNode(machine()->Int32Add(), lo, hi);
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kI64x2Neg: {
- DCHECK_EQ(1, node->InputCount());
- Node** rep = GetReplacementsWithType(node->InputAt(0), rep_type);
- int num_lanes = NumLanes(rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- Node* zero = graph()->NewNode(common()->Int64Constant(0));
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = graph()->NewNode(machine()->Int64Sub(), zero, rep[i]);
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kI32x4Neg:
- case IrOpcode::kI16x8Neg:
- case IrOpcode::kI8x16Neg: {
- DCHECK_EQ(1, node->InputCount());
- Node** rep = GetReplacementsWithType(node->InputAt(0), rep_type);
- int num_lanes = NumLanes(rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- Node* zero = graph()->NewNode(common()->Int32Constant(0));
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = graph()->NewNode(machine()->Int32Sub(), zero, rep[i]);
- if (node->opcode() == IrOpcode::kI16x8Neg) {
- rep_node[i] = FixUpperBits(rep_node[i], kShift16);
- } else if (node->opcode() == IrOpcode::kI8x16Neg) {
- rep_node[i] = FixUpperBits(rep_node[i], kShift8);
- }
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kI32x4Abs:
- case IrOpcode::kI16x8Abs:
- case IrOpcode::kI8x16Abs: {
- // From https://stackoverflow.com/a/14194764
- // abs(x) = (x XOR y) - y
- Node** rep = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- // It's fine to shift by 31 even for i8x16 since each node is
- // effectively expanded to 32 bits.
- Node* y = graph()->NewNode(machine()->Word32Sar(), rep[i],
- mcgraph_->Int32Constant(31));
- rep_node[i] = graph()->NewNode(
- machine()->Int32Sub(),
- graph()->NewNode(machine()->Word32Xor(), rep[i], y), y);
- if (node->opcode() == IrOpcode::kI16x8Neg) {
- rep_node[i] = FixUpperBits(rep_node[i], kShift16);
- } else if (node->opcode() == IrOpcode::kI8x16Neg) {
- rep_node[i] = FixUpperBits(rep_node[i], kShift8);
- }
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kS128Zero: {
- DCHECK_EQ(0, node->InputCount());
- Node* rep_node[kNumLanes32];
- for (int i = 0; i < kNumLanes32; ++i) {
- rep_node[i] = mcgraph_->Int32Constant(0);
- }
- ReplaceNode(node, rep_node, kNumLanes32);
- break;
- }
- case IrOpcode::kS128Not: {
- DCHECK_EQ(1, node->InputCount());
- Node** rep = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node* rep_node[kNumLanes32];
- Node* mask = graph()->NewNode(common()->Int32Constant(0xFFFFFFFF));
- for (int i = 0; i < kNumLanes32; ++i) {
- rep_node[i] = graph()->NewNode(machine()->Word32Xor(), rep[i], mask);
- }
- ReplaceNode(node, rep_node, kNumLanes32);
- break;
- }
- case IrOpcode::kS128AndNot: {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), rep_type);
- int num_lanes = NumLanes(rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- Node* mask = graph()->NewNode(common()->Int32Constant(0xFFFFFFFF));
- for (int i = 0; i < num_lanes; ++i) {
- Node* not_rep_right =
- graph()->NewNode(machine()->Word32Xor(), rep_right[i], mask);
- rep_node[i] = graph()->NewNode(machine()->Word32And(), rep_left[i],
- not_rep_right);
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kI32x4SConvertF32x4: {
- LowerConvertFromFloat(node, true);
- break;
- }
- case IrOpcode::kI32x4UConvertF32x4: {
- LowerConvertFromFloat(node, false);
- break;
- }
- case IrOpcode::kI32x4SConvertI16x8Low: {
- LowerConvertFromInt(node, SimdType::kInt16x8, SimdType::kInt32x4, true,
- 0);
- break;
- }
- case IrOpcode::kI32x4SConvertI16x8High: {
- LowerConvertFromInt(node, SimdType::kInt16x8, SimdType::kInt32x4, true,
- 4);
- break;
- }
- case IrOpcode::kI32x4UConvertI16x8Low: {
- LowerConvertFromInt(node, SimdType::kInt16x8, SimdType::kInt32x4, false,
- 0);
- break;
- }
- case IrOpcode::kI32x4UConvertI16x8High: {
- LowerConvertFromInt(node, SimdType::kInt16x8, SimdType::kInt32x4, false,
- 4);
- break;
- }
- case IrOpcode::kI16x8SConvertI8x16Low: {
- LowerConvertFromInt(node, SimdType::kInt8x16, SimdType::kInt16x8, true,
- 0);
- break;
- }
- case IrOpcode::kI16x8SConvertI8x16High: {
- LowerConvertFromInt(node, SimdType::kInt8x16, SimdType::kInt16x8, true,
- 8);
- break;
- }
- case IrOpcode::kI16x8UConvertI8x16Low: {
- LowerConvertFromInt(node, SimdType::kInt8x16, SimdType::kInt16x8, false,
- 0);
- break;
- }
- case IrOpcode::kI16x8UConvertI8x16High: {
- LowerConvertFromInt(node, SimdType::kInt8x16, SimdType::kInt16x8, false,
- 8);
- break;
- }
- case IrOpcode::kI16x8SConvertI32x4: {
- LowerPack(node, SimdType::kInt32x4, SimdType::kInt16x8, true);
- break;
- }
- case IrOpcode::kI16x8UConvertI32x4: {
- LowerPack(node, SimdType::kInt32x4, SimdType::kInt16x8, false);
- break;
- }
- case IrOpcode::kI8x16SConvertI16x8: {
- LowerPack(node, SimdType::kInt16x8, SimdType::kInt8x16, true);
- break;
- }
- case IrOpcode::kI8x16UConvertI16x8: {
- LowerPack(node, SimdType::kInt16x8, SimdType::kInt8x16, false);
- break;
- }
- case IrOpcode::kI64x2Shl:
- case IrOpcode::kI32x4Shl:
- case IrOpcode::kI16x8Shl:
- case IrOpcode::kI8x16Shl:
- case IrOpcode::kI64x2ShrS:
- case IrOpcode::kI32x4ShrS:
- case IrOpcode::kI16x8ShrS:
- case IrOpcode::kI8x16ShrS:
- case IrOpcode::kI64x2ShrU:
- case IrOpcode::kI32x4ShrU:
- case IrOpcode::kI16x8ShrU:
- case IrOpcode::kI8x16ShrU: {
- LowerShiftOp(node, rep_type);
- break;
- }
-#define F32X4_BINOP_CASE(name) \
- case IrOpcode::kF32x4##name: { \
- LowerBinaryOp(node, rep_type, machine()->Float32##name()); \
- break; \
- }
- F32X4_BINOP_CASE(Add)
- F32X4_BINOP_CASE(Sub)
- F32X4_BINOP_CASE(Mul)
- F32X4_BINOP_CASE(Div)
- F32X4_BINOP_CASE(Min)
- F32X4_BINOP_CASE(Max)
- case IrOpcode::kF32x4Pmin: {
- LowerFloatPseudoMinMax(node, machine()->Float32LessThan(), false,
- rep_type);
- break;
- }
- case IrOpcode::kF32x4Pmax: {
- LowerFloatPseudoMinMax(node, machine()->Float32LessThan(), true,
- rep_type);
- break;
- }
-#undef F32X4_BINOP_CASE
-#define F32X4_UNOP_CASE(name) \
- case IrOpcode::kF32x4##name: { \
- LowerUnaryOp(node, rep_type, machine()->Float32##name()); \
- break; \
- }
- F32X4_UNOP_CASE(Abs)
- F32X4_UNOP_CASE(Neg)
- F32X4_UNOP_CASE(Sqrt)
-#undef F32X4_UNOP_CASE
- case IrOpcode::kF32x4Ceil: {
- LowerUnaryOp(node, rep_type, machine()->Float32RoundUp().op());
- break;
- }
- case IrOpcode::kF32x4Floor: {
- LowerUnaryOp(node, rep_type, machine()->Float32RoundDown().op());
- break;
- }
- case IrOpcode::kF32x4Trunc: {
- LowerUnaryOp(node, rep_type, machine()->Float32RoundTruncate().op());
- break;
- }
- case IrOpcode::kF32x4NearestInt: {
- LowerUnaryOp(node, rep_type, machine()->Float32RoundTiesEven().op());
- break;
- }
- case IrOpcode::kF32x4RecipApprox:
- case IrOpcode::kF32x4RecipSqrtApprox: {
- DCHECK_EQ(1, node->InputCount());
- Node** rep = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- Node* float_one = graph()->NewNode(common()->Float32Constant(1.0));
- for (int i = 0; i < num_lanes; ++i) {
- Node* tmp = rep[i];
- if (node->opcode() == IrOpcode::kF32x4RecipSqrtApprox) {
- tmp = graph()->NewNode(machine()->Float32Sqrt(), rep[i]);
- }
- rep_node[i] = graph()->NewNode(machine()->Float32Div(), float_one, tmp);
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kF32x4SConvertI32x4: {
- LowerUnaryOp(node, SimdType::kInt32x4, machine()->RoundInt32ToFloat32());
- break;
- }
- case IrOpcode::kF32x4UConvertI32x4: {
- LowerUnaryOp(node, SimdType::kInt32x4, machine()->RoundUint32ToFloat32());
- break;
- }
- case IrOpcode::kF64x2Abs: {
- LowerUnaryOp(node, rep_type, machine()->Float64Abs());
- break;
- }
- case IrOpcode::kF64x2Neg: {
- LowerUnaryOp(node, rep_type, machine()->Float64Neg());
- break;
- }
- case IrOpcode::kF64x2Sqrt: {
- LowerUnaryOp(node, rep_type, machine()->Float64Sqrt());
- break;
- }
- case IrOpcode::kF64x2Add: {
- LowerBinaryOp(node, rep_type, machine()->Float64Add());
- break;
- }
- case IrOpcode::kF64x2Sub: {
- LowerBinaryOp(node, rep_type, machine()->Float64Sub());
- break;
- }
- case IrOpcode::kF64x2Mul: {
- LowerBinaryOp(node, rep_type, machine()->Float64Mul());
- break;
- }
- case IrOpcode::kF64x2Div: {
- LowerBinaryOp(node, rep_type, machine()->Float64Div());
- break;
- }
- case IrOpcode::kF64x2Min: {
- LowerBinaryOp(node, rep_type, machine()->Float64Min());
- break;
- }
- case IrOpcode::kF64x2Max: {
- LowerBinaryOp(node, rep_type, machine()->Float64Max());
- break;
- }
- case IrOpcode::kF64x2Pmin: {
- LowerFloatPseudoMinMax(node, machine()->Float64LessThan(), false,
- rep_type);
- break;
- }
- case IrOpcode::kF64x2Pmax: {
- LowerFloatPseudoMinMax(node, machine()->Float64LessThan(), true,
- rep_type);
- break;
- }
- case IrOpcode::kF64x2Ceil: {
- LowerUnaryOp(node, rep_type, machine()->Float64RoundUp().op());
- break;
- }
- case IrOpcode::kF64x2Floor: {
- LowerUnaryOp(node, rep_type, machine()->Float64RoundDown().op());
- break;
- }
- case IrOpcode::kF64x2Trunc: {
- LowerUnaryOp(node, rep_type, machine()->Float64RoundTruncate().op());
- break;
- }
- case IrOpcode::kF64x2NearestInt: {
- LowerUnaryOp(node, rep_type, machine()->Float64RoundTiesEven().op());
- break;
- }
- case IrOpcode::kF64x2Splat:
- case IrOpcode::kF32x4Splat:
- case IrOpcode::kI64x2Splat:
- case IrOpcode::kI32x4Splat:
- case IrOpcode::kI16x8Splat:
- case IrOpcode::kI8x16Splat: {
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- Node* val = (HasReplacement(0, node->InputAt(0)))
- ? GetReplacements(node->InputAt(0))[0]
- : node->InputAt(0);
-
- // I16 and I8 are placed in Word32 nodes, we need to mask them
- // accordingly, to account for overflows, then sign extend them.
- if (node->opcode() == IrOpcode::kI16x8Splat) {
- val = graph()->NewNode(machine()->SignExtendWord16ToInt32(),
- Mask(val, kMask16));
- } else if (node->opcode() == IrOpcode::kI8x16Splat) {
- val = graph()->NewNode(machine()->SignExtendWord8ToInt32(),
- Mask(val, kMask8));
- }
-
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = val;
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kF64x2ExtractLane:
- case IrOpcode::kF32x4ExtractLane:
- case IrOpcode::kI64x2ExtractLane:
- case IrOpcode::kI32x4ExtractLane:
- case IrOpcode::kI16x8ExtractLaneU:
- case IrOpcode::kI16x8ExtractLaneS:
- case IrOpcode::kI8x16ExtractLaneU:
- case IrOpcode::kI8x16ExtractLaneS: {
- int32_t lane = OpParameter<int32_t>(node->op());
- Node** rep_node = zone()->NewArray<Node*>(1);
- rep_node[0] = GetReplacementsWithType(node->InputAt(0), rep_type)[lane];
-
- // If unsigned, mask the top bits.
- if (node->opcode() == IrOpcode::kI16x8ExtractLaneU) {
- rep_node[0] = Mask(rep_node[0], kMask16);
- } else if (node->opcode() == IrOpcode::kI8x16ExtractLaneU) {
- rep_node[0] = Mask(rep_node[0], kMask8);
- }
-
- ReplaceNode(node, rep_node, 1);
- break;
- }
- case IrOpcode::kF64x2ReplaceLane:
- case IrOpcode::kF32x4ReplaceLane:
- case IrOpcode::kI64x2ReplaceLane:
- case IrOpcode::kI32x4ReplaceLane:
- case IrOpcode::kI16x8ReplaceLane:
- case IrOpcode::kI8x16ReplaceLane: {
- DCHECK_EQ(2, node->InputCount());
- Node* repNode = node->InputAt(1);
- int32_t lane = OpParameter<int32_t>(node->op());
- Node** old_rep_node = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- rep_node[i] = old_rep_node[i];
- }
- if (HasReplacement(0, repNode)) {
- rep_node[lane] = GetReplacements(repNode)[0];
- } else {
- rep_node[lane] = repNode;
- }
-
- // The replacement nodes for these opcodes are in Word32, and we always
- // store nodes in sign extended form (and mask to account for overflows.)
- if (node->opcode() == IrOpcode::kI16x8ReplaceLane) {
- rep_node[lane] = graph()->NewNode(machine()->SignExtendWord16ToInt32(),
- Mask(rep_node[lane], kMask16));
- } else if (node->opcode() == IrOpcode::kI8x16ReplaceLane) {
- rep_node[lane] = graph()->NewNode(machine()->SignExtendWord8ToInt32(),
- Mask(rep_node[lane], kMask8));
- }
-
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
-#define COMPARISON_CASE(type, simd_op, lowering_op, invert) \
- case IrOpcode::simd_op: { \
- LowerCompareOp(node, SimdType::k##type, machine()->lowering_op(), invert); \
- break; \
- }
- COMPARISON_CASE(Float64x2, kF64x2Eq, Float64Equal, false)
- COMPARISON_CASE(Float64x2, kF64x2Lt, Float64LessThan, false)
- COMPARISON_CASE(Float64x2, kF64x2Le, Float64LessThanOrEqual, false)
- COMPARISON_CASE(Float32x4, kF32x4Eq, Float32Equal, false)
- COMPARISON_CASE(Float32x4, kF32x4Lt, Float32LessThan, false)
- COMPARISON_CASE(Float32x4, kF32x4Le, Float32LessThanOrEqual, false)
- COMPARISON_CASE(Float32x4, kF32x4Gt, Float32LessThan, true)
- COMPARISON_CASE(Float32x4, kF32x4Ge, Float32LessThanOrEqual, true)
- COMPARISON_CASE(Int64x2, kI64x2Eq, Word64Equal, false)
- COMPARISON_CASE(Int32x4, kI32x4Eq, Word32Equal, false)
- COMPARISON_CASE(Int32x4, kI32x4LtS, Int32LessThan, false)
- COMPARISON_CASE(Int32x4, kI32x4LeS, Int32LessThanOrEqual, false)
- COMPARISON_CASE(Int32x4, kI32x4GtS, Int32LessThan, true)
- COMPARISON_CASE(Int32x4, kI32x4GeS, Int32LessThanOrEqual, true)
- COMPARISON_CASE(Int32x4, kI32x4LtU, Uint32LessThan, false)
- COMPARISON_CASE(Int32x4, kI32x4LeU, Uint32LessThanOrEqual, false)
- COMPARISON_CASE(Int32x4, kI32x4GtU, Uint32LessThan, true)
- COMPARISON_CASE(Int32x4, kI32x4GeU, Uint32LessThanOrEqual, true)
- COMPARISON_CASE(Int16x8, kI16x8Eq, Word32Equal, false)
- COMPARISON_CASE(Int16x8, kI16x8LtS, Int32LessThan, false)
- COMPARISON_CASE(Int16x8, kI16x8LeS, Int32LessThanOrEqual, false)
- COMPARISON_CASE(Int16x8, kI16x8GtS, Int32LessThan, true)
- COMPARISON_CASE(Int16x8, kI16x8GeS, Int32LessThanOrEqual, true)
- COMPARISON_CASE(Int16x8, kI16x8LtU, Uint32LessThan, false)
- COMPARISON_CASE(Int16x8, kI16x8LeU, Uint32LessThanOrEqual, false)
- COMPARISON_CASE(Int16x8, kI16x8GtU, Uint32LessThan, true)
- COMPARISON_CASE(Int16x8, kI16x8GeU, Uint32LessThanOrEqual, true)
- COMPARISON_CASE(Int8x16, kI8x16Eq, Word32Equal, false)
- COMPARISON_CASE(Int8x16, kI8x16LtS, Int32LessThan, false)
- COMPARISON_CASE(Int8x16, kI8x16LeS, Int32LessThanOrEqual, false)
- COMPARISON_CASE(Int8x16, kI8x16GtS, Int32LessThan, true)
- COMPARISON_CASE(Int8x16, kI8x16GeS, Int32LessThanOrEqual, true)
- COMPARISON_CASE(Int8x16, kI8x16LtU, Uint32LessThan, false)
- COMPARISON_CASE(Int8x16, kI8x16LeU, Uint32LessThanOrEqual, false)
- COMPARISON_CASE(Int8x16, kI8x16GtU, Uint32LessThan, true)
- COMPARISON_CASE(Int8x16, kI8x16GeU, Uint32LessThanOrEqual, true)
-#undef COMPARISON_CASE
- case IrOpcode::kF64x2Ne: {
- LowerNotEqual(node, SimdType::kFloat64x2, machine()->Float64Equal());
- break;
- }
- case IrOpcode::kF32x4Ne: {
- LowerNotEqual(node, SimdType::kFloat32x4, machine()->Float32Equal());
- break;
- }
- case IrOpcode::kI64x2Ne: {
- LowerNotEqual(node, SimdType::kInt64x2, machine()->Word64Equal());
- break;
- }
- case IrOpcode::kI32x4Ne: {
- LowerNotEqual(node, SimdType::kInt32x4, machine()->Word32Equal());
- break;
- }
- case IrOpcode::kI16x8Ne: {
- LowerNotEqual(node, SimdType::kInt16x8, machine()->Word32Equal());
- break;
- }
- case IrOpcode::kI8x16Ne: {
- LowerNotEqual(node, SimdType::kInt8x16, machine()->Word32Equal());
- break;
- }
- case IrOpcode::kS128Select: {
- DCHECK_EQ(3, node->InputCount());
- Node** boolean_input =
- GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_left = GetReplacementsWithType(node->InputAt(1), rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(2), rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- Node* tmp1 =
- graph()->NewNode(machine()->Word32Xor(), rep_left[i], rep_right[i]);
- Node* tmp2 =
- graph()->NewNode(machine()->Word32And(), boolean_input[i], tmp1);
- rep_node[i] =
- graph()->NewNode(machine()->Word32Xor(), rep_right[i], tmp2);
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
- case IrOpcode::kI8x16Swizzle: {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** indices = GetReplacementsWithType(node->InputAt(1), rep_type);
- Node** rep_nodes = zone()->NewArray<Node*>(num_lanes);
- Node* stack_slot = graph()->NewNode(
- machine()->StackSlot(MachineRepresentation::kSimd128));
-
- // Push all num_lanes values into stack slot.
- const Operator* store_op = machine()->Store(
- StoreRepresentation(MachineRepresentation::kWord8, kNoWriteBarrier));
- Node* effect_input = graph()->start();
- for (int i = num_lanes - 1; i >= 0; i--) {
- // We want all the stores to happen first before any of the loads
- // below, so connect them via effect edge from i-1 to i.
- Node* store =
- graph()->NewNode(store_op, stack_slot, mcgraph_->Int32Constant(i),
- rep_left[i], effect_input, graph()->start());
- effect_input = store;
- }
-
- for (int i = num_lanes - 1; i >= 0; i--) {
- // Only select lane when index is < num_lanes, otherwise write 0 to
- // lane. Use Uint32 to take care of negative indices.
- Diamond d(graph(), common(),
- graph()->NewNode(machine()->Uint32LessThan(), indices[i],
- mcgraph_->Int32Constant(num_lanes)));
-
- Node* load =
- graph()->NewNode(machine()->Load(LoadRepresentation::Uint8()),
- stack_slot, indices[i], effect_input, d.if_true);
-
- rep_nodes[i] = d.Phi(MachineRepresentation::kWord8, load,
- mcgraph_->Int32Constant(0));
- }
-
- ReplaceNode(node, rep_nodes, num_lanes);
- break;
- }
- case IrOpcode::kI8x16Shuffle: {
- DCHECK_EQ(2, node->InputCount());
- S128ImmediateParameter shuffle = S128ImmediateParameterOf(node->op());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), rep_type);
- Node** rep_node = zone()->NewArray<Node*>(16);
- for (int i = 0; i < 16; i++) {
- int lane = shuffle[i];
- rep_node[i] = lane < 16 ? rep_left[lane] : rep_right[lane - 16];
- }
- ReplaceNode(node, rep_node, 16);
- break;
- }
- case IrOpcode::kV128AnyTrue: {
- DCHECK_EQ(1, node->InputCount());
- // AnyTrue always returns a I32x4, and can work with inputs of any shape,
- // but we still need GetReplacementsWithType if input is float.
- DCHECK_EQ(ReplacementType(node), SimdType::kInt32x4);
- Node** reps = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_node = zone()->NewArray<Node*>(1);
- Node* true_node = mcgraph_->Int32Constant(1);
- Node* zero = mcgraph_->Int32Constant(0);
- Node* tmp_result = zero;
- for (int i = 0; i < num_lanes; ++i) {
- Diamond d(graph(), common(),
- graph()->NewNode(machine()->Word32Equal(), reps[i], zero));
- tmp_result =
- d.Phi(MachineRepresentation::kWord32, tmp_result, true_node);
- }
- rep_node[0] = tmp_result;
- ReplaceNode(node, rep_node, 1);
- break;
- }
- case IrOpcode::kI64x2AllTrue: {
- LowerAllTrueOp(node, SimdType::kInt64x2);
- break;
- }
- case IrOpcode::kI32x4AllTrue: {
- LowerAllTrueOp(node, SimdType::kInt32x4);
- break;
- }
- case IrOpcode::kI16x8AllTrue: {
- LowerAllTrueOp(node, SimdType::kInt16x8);
- break;
- }
- case IrOpcode::kI8x16AllTrue: {
- LowerAllTrueOp(node, SimdType::kInt8x16);
- break;
- }
- case IrOpcode::kI8x16BitMask: {
- LowerBitMaskOp(node, rep_type, 7);
- break;
- }
- case IrOpcode::kI16x8BitMask: {
- LowerBitMaskOp(node, rep_type, 15);
- break;
- }
- case IrOpcode::kI32x4BitMask: {
- LowerBitMaskOp(node, rep_type, 31);
- break;
- }
- case IrOpcode::kI8x16RoundingAverageU:
- case IrOpcode::kI16x8RoundingAverageU: {
- DCHECK_EQ(2, node->InputCount());
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), rep_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), rep_type);
- int num_lanes = NumLanes(rep_type);
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- // Nodes are stored signed, so mask away the top bits.
- // rounding_average(left, right) = (left + right + 1) >> 1
- const int bit_mask = num_lanes == 16 ? kMask8 : kMask16;
- for (int i = 0; i < num_lanes; ++i) {
- Node* mask_left = graph()->NewNode(machine()->Word32And(), rep_left[i],
- mcgraph_->Int32Constant(bit_mask));
- Node* mask_right =
- graph()->NewNode(machine()->Word32And(), rep_right[i],
- mcgraph_->Int32Constant(bit_mask));
- Node* left_plus_right_plus_one = graph()->NewNode(
- machine()->Int32Add(),
- graph()->NewNode(machine()->Int32Add(), mask_left, mask_right),
- mcgraph_->Int32Constant(1));
- rep_node[i] =
- graph()->NewNode(machine()->Word32Shr(), left_plus_right_plus_one,
- mcgraph_->Int32Constant(1));
- }
- ReplaceNode(node, rep_node, num_lanes);
- break;
- }
-#define LOWER_EXT_MUL(OP, MULTIPLY, INPUT_TYPE, LOW, SIGNED) \
- case IrOpcode::OP: { \
- LowerExtMul(node, machine()->MULTIPLY(), rep_type, SimdType::INPUT_TYPE, \
- LOW, SIGNED); \
- break; \
- }
- LOWER_EXT_MUL(kI16x8ExtMulLowI8x16S, Int32Mul, kInt8x16, true, true)
- LOWER_EXT_MUL(kI16x8ExtMulLowI8x16U, Int32Mul, kInt8x16, true, false)
- LOWER_EXT_MUL(kI16x8ExtMulHighI8x16S, Int32Mul, kInt8x16, false, true)
- LOWER_EXT_MUL(kI16x8ExtMulHighI8x16U, Int32Mul, kInt8x16, false, false)
- LOWER_EXT_MUL(kI32x4ExtMulLowI16x8S, Int32Mul, kInt16x8, true, true)
- LOWER_EXT_MUL(kI32x4ExtMulLowI16x8U, Int32Mul, kInt16x8, true, false)
- LOWER_EXT_MUL(kI32x4ExtMulHighI16x8S, Int32Mul, kInt16x8, false, true)
- LOWER_EXT_MUL(kI32x4ExtMulHighI16x8U, Int32Mul, kInt16x8, false, false)
- LOWER_EXT_MUL(kI64x2ExtMulLowI32x4S, Int64Mul, kInt32x4, true, true)
- LOWER_EXT_MUL(kI64x2ExtMulLowI32x4U, Int64Mul, kInt32x4, true, false)
- LOWER_EXT_MUL(kI64x2ExtMulHighI32x4S, Int64Mul, kInt32x4, false, true)
- LOWER_EXT_MUL(kI64x2ExtMulHighI32x4U, Int64Mul, kInt32x4, false, false)
- default: {
- DefaultLowering(node);
- }
- }
-}
-
-Node* SimdScalarLowering::ExtendNode(Node* node, SimdType rep_type,
- bool is_signed) {
- if (rep_type == SimdType::kInt8x16 && !is_signed) {
- node = Mask(node, kMask8);
- } else if (rep_type == SimdType::kInt16x8 && !is_signed) {
- node = Mask(node, kMask16);
- } else if (rep_type == SimdType::kInt32x4) {
- if (is_signed) {
- node = graph()->NewNode(machine()->SignExtendWord32ToInt64(), node);
- } else {
- node = graph()->NewNode(machine()->ChangeUint32ToUint64(), node);
- }
- }
- return node;
-}
-
-void SimdScalarLowering::LowerExtMul(Node* node, const Operator* multiply,
- SimdType output_type, SimdType input_type,
- bool low, bool is_signed) {
- DCHECK_EQ(2, node->InputCount());
- int num_lanes = NumLanes(output_type);
- Node** rep_left = GetReplacementsWithType(node->InputAt(0), input_type);
- Node** rep_right = GetReplacementsWithType(node->InputAt(1), input_type);
- int start_index = low ? 0 : num_lanes;
- Node** rep_node = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; i++) {
- Node* left = ExtendNode(rep_left[start_index + i], input_type, is_signed);
- Node* right = ExtendNode(rep_right[start_index + i], input_type, is_signed);
- rep_node[i] = graph()->NewNode(multiply, left, right);
- }
- ReplaceNode(node, rep_node, num_lanes);
-}
-
-bool SimdScalarLowering::DefaultLowering(Node* node) {
- bool something_changed = false;
- for (int i = NodeProperties::PastValueIndex(node) - 1; i >= 0; i--) {
- Node* input = node->InputAt(i);
- if (HasReplacement(0, input)) {
- something_changed = true;
- node->ReplaceInput(i, GetReplacements(input)[0]);
- }
- if (ReplacementCount(input) > 1 && HasReplacement(1, input)) {
- something_changed = true;
- for (int j = 1; j < ReplacementCount(input); ++j) {
- node->InsertInput(zone(), i + j, GetReplacements(input)[j]);
- }
- }
- }
- return something_changed;
-}
-
-void SimdScalarLowering::ReplaceNode(Node* old, Node** new_nodes, int count) {
- replacements_[old->id()].node = zone()->NewArray<Node*>(count);
- for (int i = 0; i < count; ++i) {
- replacements_[old->id()].node[i] = new_nodes[i];
- }
- replacements_[old->id()].num_replacements = count;
-}
-
-bool SimdScalarLowering::HasReplacement(size_t index, Node* node) {
- return replacements_[node->id()].node != nullptr &&
- replacements_[node->id()].node[index] != nullptr;
-}
-
-SimdScalarLowering::SimdType SimdScalarLowering::ReplacementType(Node* node) {
- return replacements_[node->id()].type;
-}
-
-Node** SimdScalarLowering::GetReplacements(Node* node) {
- Node** result = replacements_[node->id()].node;
- DCHECK(result);
- return result;
-}
-
-int SimdScalarLowering::ReplacementCount(Node* node) {
- return replacements_[node->id()].num_replacements;
-}
-
-void SimdScalarLowering::Int32ToFloat32(Node** replacements, Node** result) {
- for (int i = 0; i < kNumLanes32; ++i) {
- if (replacements[i] != nullptr) {
- result[i] =
- graph()->NewNode(machine()->BitcastInt32ToFloat32(), replacements[i]);
- } else {
- result[i] = nullptr;
- }
- }
-}
-
-void SimdScalarLowering::Int64ToFloat64(Node** replacements, Node** result) {
- for (int i = 0; i < kNumLanes64; ++i) {
- if (replacements[i] != nullptr) {
- result[i] =
- graph()->NewNode(machine()->BitcastInt64ToFloat64(), replacements[i]);
- } else {
- result[i] = nullptr;
- }
- }
-}
-
-void SimdScalarLowering::Float64ToInt64(Node** replacements, Node** result) {
- for (int i = 0; i < kNumLanes64; ++i) {
- if (replacements[i] != nullptr) {
- result[i] =
- graph()->NewNode(machine()->BitcastFloat64ToInt64(), replacements[i]);
- } else {
- result[i] = nullptr;
- }
- }
-}
-
-void SimdScalarLowering::Float32ToInt32(Node** replacements, Node** result) {
- for (int i = 0; i < kNumLanes32; ++i) {
- if (replacements[i] != nullptr) {
- result[i] =
- graph()->NewNode(machine()->BitcastFloat32ToInt32(), replacements[i]);
- } else {
- result[i] = nullptr;
- }
- }
-}
-
-void SimdScalarLowering::Int64ToInt32(Node** replacements, Node** result) {
- const int num_ints = sizeof(int64_t) / sizeof(int32_t);
- const int bit_size = sizeof(int32_t) * 8;
- const Operator* truncate = machine()->TruncateInt64ToInt32();
-
- for (int i = 0; i < kNumLanes64; i++) {
- if (replacements[i] != nullptr) {
- for (int j = 0; j < num_ints; j++) {
- result[num_ints * i + j] = graph()->NewNode(
- truncate, graph()->NewNode(machine()->Word64Sar(), replacements[i],
- mcgraph_->Int32Constant(j * bit_size)));
- }
- } else {
- for (int j = 0; j < num_ints; j++) {
- result[num_ints * i + j] = nullptr;
- }
- }
- }
-}
-
-template <typename T>
-void SimdScalarLowering::Int32ToSmallerInt(Node** replacements, Node** result) {
- const int num_ints = sizeof(int32_t) / sizeof(T);
- const int bit_size = sizeof(T) * 8;
- const Operator* sign_extend;
- switch (sizeof(T)) {
- case 1:
- sign_extend = machine()->SignExtendWord8ToInt32();
- break;
- case 2:
- sign_extend = machine()->SignExtendWord16ToInt32();
- break;
- default:
- UNREACHABLE();
- }
-
- for (int i = 0; i < kNumLanes32; i++) {
- if (replacements[i] != nullptr) {
- for (int j = 0; j < num_ints; j++) {
- result[num_ints * i + j] = graph()->NewNode(
- sign_extend,
- graph()->NewNode(machine()->Word32Shr(), replacements[i],
- mcgraph_->Int32Constant(j * bit_size)));
- }
- } else {
- for (int j = 0; j < num_ints; j++) {
- result[num_ints * i + j] = nullptr;
- }
- }
- }
-}
-
-template <typename T>
-void SimdScalarLowering::SmallerIntToInt32(Node** replacements, Node** result) {
- const int num_ints = sizeof(int32_t) / sizeof(T);
- const int bit_size = sizeof(T) * 8;
- const int bit_mask = (1 << bit_size) - 1;
-
- for (int i = 0; i < kNumLanes32; ++i) {
- result[i] = mcgraph_->Int32Constant(0);
- for (int j = 0; j < num_ints; j++) {
- if (replacements[num_ints * i + j] != nullptr) {
- Node* clean_bits = graph()->NewNode(machine()->Word32And(),
- replacements[num_ints * i + j],
- mcgraph_->Int32Constant(bit_mask));
- Node* shift = graph()->NewNode(machine()->Word32Shl(), clean_bits,
- mcgraph_->Int32Constant(j * bit_size));
- result[i] = graph()->NewNode(machine()->Word32Or(), result[i], shift);
- }
- }
- }
-}
-
-void SimdScalarLowering::Int32ToInt64(Node** replacements, Node** result) {
- const int num_ints = sizeof(int64_t) / sizeof(int32_t);
-
- for (int i = 0; i < kNumLanes64; i++) {
- Node* i64 = graph()->NewNode(machine()->ChangeUint32ToUint64(),
- replacements[num_ints * i + 1]);
- Node* high = graph()->NewNode(machine()->Word64Shl(), i64,
- mcgraph_->Int32Constant(32));
- Node* i64_low = graph()->NewNode(machine()->ChangeUint32ToUint64(),
- replacements[num_ints * i]);
- result[i] = graph()->NewNode(machine()->Word64Or(), high, i64_low);
- }
-}
-
-Node** SimdScalarLowering::GetReplacementsWithType(Node* node, SimdType type) {
- // Operations like extract lane, bitmask, any_true, all_true replaces a SIMD
- // node with a scalar. Those won't be correctly handled here. They should be
- // special cased and replaced with the appropriate scalar.
- DCHECK_LT(1, ReplacementCount(node));
-
- Node** replacements = GetReplacements(node);
- if (type == ReplacementType(node)) {
- return replacements;
- }
-
- int num_lanes = NumLanes(type);
- Node** result = zone()->NewArray<Node*>(num_lanes);
-
- switch (type) {
- case SimdType::kInt64x2: {
- switch (ReplacementType(node)) {
- case SimdType::kInt64x2: {
- UNREACHABLE();
- }
- case SimdType::kInt32x4: {
- Int32ToInt64(replacements, result);
- break;
- }
- case SimdType::kInt16x8: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- SmallerIntToInt32<int16_t>(replacements, to_int32);
- Int32ToInt64(to_int32, result);
- break;
- }
- case SimdType::kInt8x16: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- SmallerIntToInt32<int8_t>(replacements, to_int32);
- Int32ToInt64(to_int32, result);
- break;
- }
- case SimdType::kFloat64x2: {
- Float64ToInt64(replacements, result);
- break;
- }
- case SimdType::kFloat32x4: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Float32ToInt32(replacements, to_int32);
- Int32ToInt64(to_int32, result);
- break;
- }
- }
- break;
- }
- case SimdType::kInt32x4: {
- switch (ReplacementType(node)) {
- case SimdType::kInt64x2: {
- Int64ToInt32(replacements, result);
- break;
- }
- case SimdType::kInt32x4: {
- UNREACHABLE();
- }
- case SimdType::kInt16x8: {
- SmallerIntToInt32<int16_t>(replacements, result);
- break;
- }
- case SimdType::kInt8x16: {
- SmallerIntToInt32<int8_t>(replacements, result);
- break;
- }
- case SimdType::kFloat64x2: {
- Node** float64_to_int64 = zone()->NewArray<Node*>(kNumLanes64);
- Float64ToInt64(replacements, float64_to_int64);
- Int64ToInt32(float64_to_int64, result);
- break;
- }
- case SimdType::kFloat32x4: {
- Float32ToInt32(replacements, result);
- break;
- }
- }
- break;
- }
- case SimdType::kInt16x8: {
- switch (ReplacementType(node)) {
- case SimdType::kInt64x2: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Int64ToInt32(replacements, to_int32);
- Int32ToSmallerInt<int16_t>(to_int32, result);
- break;
- }
- case SimdType::kInt32x4: {
- Int32ToSmallerInt<int16_t>(replacements, result);
- break;
- }
- case SimdType::kInt16x8: {
- UNREACHABLE();
- }
- case SimdType::kInt8x16: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- SmallerIntToInt32<int8_t>(replacements, to_int32);
- Int32ToSmallerInt<int16_t>(to_int32, result);
- break;
- }
- case SimdType::kFloat64x2: {
- Node** to_int64 = zone()->NewArray<Node*>(kNumLanes64);
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Float64ToInt64(replacements, to_int64);
- Int64ToInt32(to_int64, to_int32);
- Int32ToSmallerInt<int16_t>(to_int32, result);
- break;
- }
- case SimdType::kFloat32x4: {
- Node** float32_to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Float32ToInt32(replacements, float32_to_int32);
- Int32ToSmallerInt<int16_t>(float32_to_int32, result);
- break;
- }
- }
- break;
- }
- case SimdType::kInt8x16: {
- switch (ReplacementType(node)) {
- case SimdType::kInt64x2: {
- Node** int64_to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Int64ToInt32(replacements, int64_to_int32);
- Int32ToSmallerInt<int8_t>(int64_to_int32, result);
- break;
- }
- case SimdType::kInt32x4: {
- Int32ToSmallerInt<int8_t>(replacements, result);
- break;
- }
- case SimdType::kInt16x8: {
- Node** int16_to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- SmallerIntToInt32<int16_t>(replacements, int16_to_int32);
- Int32ToSmallerInt<int8_t>(int16_to_int32, result);
- break;
- }
- case SimdType::kInt8x16: {
- UNREACHABLE();
- }
- case SimdType::kFloat64x2: {
- Node** to_int64 = zone()->NewArray<Node*>(kNumLanes64);
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Float64ToInt64(replacements, to_int64);
- Int64ToInt32(to_int64, to_int32);
- Int32ToSmallerInt<int8_t>(to_int32, result);
- break;
- }
- case SimdType::kFloat32x4: {
- Node** float32_to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Float32ToInt32(replacements, float32_to_int32);
- Int32ToSmallerInt<int8_t>(float32_to_int32, result);
- break;
- }
- }
- break;
- }
- case SimdType::kFloat64x2: {
- switch (ReplacementType(node)) {
- case SimdType::kInt64x2: {
- Int64ToFloat64(replacements, result);
- break;
- }
- case SimdType::kInt32x4: {
- Node** int32_to_int64 = zone()->NewArray<Node*>(kNumLanes64);
- Int32ToInt64(replacements, int32_to_int64);
- Int64ToFloat64(int32_to_int64, result);
- break;
- }
- case SimdType::kInt16x8: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Node** to_int64 = zone()->NewArray<Node*>(kNumLanes64);
- SmallerIntToInt32<int16_t>(replacements, to_int32);
- Int32ToInt64(to_int32, to_int64);
- Int64ToFloat64(to_int64, result);
- break;
- }
- case SimdType::kInt8x16: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Node** to_int64 = zone()->NewArray<Node*>(kNumLanes64);
- SmallerIntToInt32<int8_t>(replacements, to_int32);
- Int32ToInt64(to_int32, to_int64);
- Int64ToFloat64(to_int64, result);
- break;
- }
- case SimdType::kFloat64x2: {
- UNREACHABLE();
- }
- case SimdType::kFloat32x4: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Node** to_int64 = zone()->NewArray<Node*>(kNumLanes64);
- Float32ToInt32(replacements, to_int32);
- Int32ToInt64(to_int32, to_int64);
- Int64ToFloat64(to_int64, result);
- break;
- }
- }
- break;
- }
- case SimdType::kFloat32x4: {
- switch (ReplacementType(node)) {
- case SimdType::kInt64x2: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Int64ToInt32(replacements, to_int32);
- Int32ToFloat32(to_int32, result);
- break;
- }
- case SimdType::kInt32x4: {
- Int32ToFloat32(replacements, result);
- break;
- }
- case SimdType::kInt16x8: {
- Node** to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- SmallerIntToInt32<int16_t>(replacements, to_int32);
- Int32ToFloat32(to_int32, result);
- break;
- }
- case SimdType::kInt8x16: {
- SmallerIntToInt32<int8_t>(replacements, result);
- Int32ToFloat32(result, result);
- break;
- }
- case SimdType::kFloat64x2: {
- Node** float64_to_int64 = zone()->NewArray<Node*>(kNumLanes64);
- Node** int64_to_int32 = zone()->NewArray<Node*>(kNumLanes32);
- Float64ToInt64(replacements, float64_to_int64);
- Int64ToInt32(float64_to_int64, int64_to_int32);
- Int32ToFloat32(int64_to_int32, result);
- break;
- }
- case SimdType::kFloat32x4: {
- UNREACHABLE();
- }
- }
- break;
- }
- }
- return result;
-}
-
-void SimdScalarLowering::PreparePhiReplacement(Node* phi) {
- MachineRepresentation rep = PhiRepresentationOf(phi->op());
- if (rep == MachineRepresentation::kSimd128) {
- // We have to create the replacements for a phi node before we actually
- // lower the phi to break potential cycles in the graph. The replacements of
- // input nodes do not exist yet, so we use a placeholder node to pass the
- // graph verifier.
- int value_count = phi->op()->ValueInputCount();
- SimdType type = ReplacementType(phi);
- int num_lanes = NumLanes(type);
- Node*** inputs_rep = zone()->NewArray<Node**>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- inputs_rep[i] = zone()->NewArray<Node*>(value_count + 1);
- inputs_rep[i][value_count] = NodeProperties::GetControlInput(phi, 0);
- }
- for (int i = 0; i < value_count; ++i) {
- for (int j = 0; j < num_lanes; ++j) {
- inputs_rep[j][i] = placeholder_;
- }
- }
- Node** rep_nodes = zone()->NewArray<Node*>(num_lanes);
- for (int i = 0; i < num_lanes; ++i) {
- rep_nodes[i] = graph()->NewNode(
- common()->Phi(MachineTypeFrom(type).representation(), value_count),
- value_count + 1, inputs_rep[i], false);
- }
- ReplaceNode(phi, rep_nodes, num_lanes);
- }
-}
-} // namespace compiler
-} // namespace internal
-} // namespace v8
diff --git a/deps/v8/src/compiler/simd-scalar-lowering.h b/deps/v8/src/compiler/simd-scalar-lowering.h
deleted file mode 100644
index d67c389d16..0000000000
--- a/deps/v8/src/compiler/simd-scalar-lowering.h
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright 2016 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_COMPILER_SIMD_SCALAR_LOWERING_H_
-#define V8_COMPILER_SIMD_SCALAR_LOWERING_H_
-
-#include "src/compiler/common-operator.h"
-#include "src/compiler/diamond.h"
-#include "src/compiler/graph.h"
-#include "src/compiler/machine-graph.h"
-#include "src/compiler/machine-operator.h"
-#include "src/compiler/node-marker.h"
-#include "src/compiler/simplified-operator.h"
-#include "src/zone/zone-containers.h"
-
-namespace v8 {
-namespace internal {
-
-template <typename T>
-class Signature;
-
-namespace compiler {
-
-class SimdScalarLowering {
- public:
- SimdScalarLowering(MachineGraph* mcgraph,
- SimplifiedOperatorBuilder* simplified,
- Signature<MachineRepresentation>* signature);
-
- void LowerGraph();
-
- int GetParameterCountAfterLowering();
-
- private:
- enum class State : uint8_t { kUnvisited, kOnStack, kVisited };
-
- enum class SimdType : uint8_t {
- kFloat64x2,
- kFloat32x4,
- kInt64x2,
- kInt32x4,
- kInt16x8,
- kInt8x16
- };
-
-#if defined(V8_TARGET_BIG_ENDIAN)
- static constexpr int kLaneOffsets[16] = {15, 14, 13, 12, 11, 10, 9, 8,
- 7, 6, 5, 4, 3, 2, 1, 0};
-#else
- static constexpr int kLaneOffsets[16] = {0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15};
-#endif
- struct Replacement {
- Node** node = nullptr;
- SimdType type; // represents output type
- int num_replacements = 0;
- };
-
- struct NodeState {
- Node* node;
- int input_index;
- };
-
- Zone* zone() const { return mcgraph_->zone(); }
- Graph* graph() const { return mcgraph_->graph(); }
- MachineOperatorBuilder* machine() const { return mcgraph_->machine(); }
- CommonOperatorBuilder* common() const { return mcgraph_->common(); }
- SimplifiedOperatorBuilder* simplified() const { return simplified_; }
- Signature<MachineRepresentation>* signature() const { return signature_; }
-
- void LowerNode(Node* node);
- bool DefaultLowering(Node* node);
-
- int NumLanes(SimdType type);
- void ReplaceNode(Node* old, Node** new_nodes, int count);
- bool HasReplacement(size_t index, Node* node);
- Node** GetReplacements(Node* node);
- int ReplacementCount(Node* node);
- void Float64ToInt64(Node** replacements, Node** result);
- void Float32ToInt32(Node** replacements, Node** result);
- void Int32ToFloat32(Node** replacements, Node** result);
- void Int64ToFloat64(Node** replacements, Node** result);
- void Int64ToInt32(Node** replacements, Node** result);
- template <typename T>
- void Int32ToSmallerInt(Node** replacements, Node** result);
- template <typename T>
- void SmallerIntToInt32(Node** replacements, Node** result);
- void Int32ToInt64(Node** replacements, Node** result);
- Node** GetReplacementsWithType(Node* node, SimdType type);
- SimdType ReplacementType(Node* node);
- void PreparePhiReplacement(Node* phi);
- void SetLoweredType(Node* node, Node* output);
- void GetIndexNodes(Node* index, Node** new_indices, SimdType type);
- void LowerLoadOp(Node* node, SimdType type);
- void LowerLoadTransformOp(Node* node, SimdType type);
- void LowerStoreOp(Node* node);
- void LowerBinaryOp(Node* node, SimdType input_rep_type, const Operator* op,
- bool not_horizontal = true);
- Node* ConstructPhiForComparison(Diamond d, SimdType rep_type, int true_value,
- int false_value);
- void LowerCompareOp(Node* node, SimdType input_rep_type, const Operator* op,
- bool invert_inputs = false);
- Node* FixUpperBits(Node* input, int32_t shift);
- void LowerBinaryOpForSmallInt(Node* node, SimdType input_rep_type,
- const Operator* op, bool not_horizontal = true);
- Node* Mask(Node* input, int32_t mask);
- void LowerSaturateBinaryOp(Node* node, SimdType input_rep_type,
- const Operator* op, bool is_signed);
- void LowerUnaryOp(Node* node, SimdType input_rep_type, const Operator* op);
- void LowerIntMinMax(Node* node, const Operator* op, bool is_max,
- SimdType type);
- void LowerConvertFromFloat(Node* node, bool is_signed);
- void LowerConvertFromInt(Node* node, SimdType input_rep_type,
- SimdType output_rep_type, bool is_signed,
- int start_index);
- void LowerPack(Node* node, SimdType input_rep_type, SimdType output_rep_type,
- bool is_signed);
- void LowerShiftOp(Node* node, SimdType type);
- Node* BuildF64Trunc(Node* input);
- void LowerNotEqual(Node* node, SimdType input_rep_type, const Operator* op);
- MachineType MachineTypeFrom(SimdType simdType);
- void LowerBitMaskOp(Node* node, SimdType rep_type, int msb_index);
- void LowerAllTrueOp(Node* node, SimdType rep_type);
- void LowerFloatPseudoMinMax(Node* node, const Operator* op, bool is_max,
- SimdType type);
- void LowerExtMul(Node* node, const Operator* op, SimdType output_type,
- SimdType input_type, bool low, bool is_signed);
-
- // Extends node, which is a lowered node of type rep_type, e.g. int8, int16,
- // int32 to a 32-bit or 64-bit node. node should be a lowered node (i.e. not a
- // SIMD node). The assumption here is that small ints are stored sign
- // extended.
- Node* ExtendNode(Node* node, SimdType rep_type, bool is_signed);
-
- MachineGraph* const mcgraph_;
- SimplifiedOperatorBuilder* const simplified_;
- NodeMarker<State> state_;
- ZoneDeque<NodeState> stack_;
- Replacement* replacements_;
- Signature<MachineRepresentation>* signature_;
- Node* placeholder_;
- int parameter_count_after_lowering_;
-};
-
-} // namespace compiler
-} // namespace internal
-} // namespace v8
-
-#endif // V8_COMPILER_SIMD_SCALAR_LOWERING_H_
diff --git a/deps/v8/src/compiler/simplified-lowering.cc b/deps/v8/src/compiler/simplified-lowering.cc
index d5389df6ac..75de8ecc42 100644
--- a/deps/v8/src/compiler/simplified-lowering.cc
+++ b/deps/v8/src/compiler/simplified-lowering.cc
@@ -101,18 +101,20 @@ MachineRepresentation MachineRepresentationFromArrayType(
}
UseInfo CheckedUseInfoAsWord32FromHint(
- NumberOperationHint hint, const FeedbackSource& feedback = FeedbackSource(),
- IdentifyZeros identify_zeros = kDistinguishZeros) {
+ NumberOperationHint hint, IdentifyZeros identify_zeros = kDistinguishZeros,
+ const FeedbackSource& feedback = FeedbackSource()) {
switch (hint) {
case NumberOperationHint::kSignedSmall:
case NumberOperationHint::kSignedSmallInputs:
return UseInfo::CheckedSignedSmallAsWord32(identify_zeros, feedback);
case NumberOperationHint::kNumber:
+ DCHECK_EQ(identify_zeros, kIdentifyZeros);
return UseInfo::CheckedNumberAsWord32(feedback);
case NumberOperationHint::kNumberOrBoolean:
// Not used currently.
UNREACHABLE();
case NumberOperationHint::kNumberOrOddball:
+ DCHECK_EQ(identify_zeros, kIdentifyZeros);
return UseInfo::CheckedNumberOrOddballAsWord32(feedback);
}
UNREACHABLE();
@@ -142,6 +144,7 @@ UseInfo TruncatingUseInfoFromRepresentation(MachineRepresentation rep) {
return UseInfo::TaggedSigned();
case MachineRepresentation::kTaggedPointer:
case MachineRepresentation::kTagged:
+ case MachineRepresentation::kMapWord:
return UseInfo::AnyTagged();
case MachineRepresentation::kFloat64:
return UseInfo::TruncatingFloat64();
@@ -215,7 +218,7 @@ bool CanOverflowSigned32(const Operator* op, Type left, Type right,
}
bool IsSomePositiveOrderedNumber(Type type) {
- return type.Is(Type::OrderedNumber()) && !type.IsNone() && type.Min() > 0;
+ return type.Is(Type::OrderedNumber()) && (type.IsNone() || type.Min() > 0);
}
} // namespace
@@ -291,15 +294,17 @@ class RepresentationSelector {
Type restriction_type() const { return restriction_type_; }
private:
+ // Fields are ordered to avoid mixing byte and word size fields to minimize
+ // padding.
enum State : uint8_t { kUnvisited, kPushed, kVisited, kQueued };
State state_ = kUnvisited;
MachineRepresentation representation_ =
MachineRepresentation::kNone; // Output representation.
Truncation truncation_ = Truncation::None(); // Information about uses.
+ bool weakened_ = false;
Type restriction_type_ = Type::Any();
Type feedback_type_;
- bool weakened_ = false;
};
RepresentationSelector(JSGraph* jsgraph, JSHeapBroker* broker, Zone* zone,
@@ -717,7 +722,7 @@ class RepresentationSelector {
void EnqueueInput(Node* use_node, int index,
UseInfo use_info = UseInfo::None()) {
static_assert(retype<T>() || lower<T>(),
- "This version of ProcessRemainingInputs has to be called in "
+ "This version of EnqueueInput has to be called in "
"the Retype or Lower phase.");
}
@@ -784,9 +789,9 @@ class RepresentationSelector {
// TODO(jarin,turbofan) Find a way to unify/merge this insertion with
// InsertUnreachableIfNecessary.
Node* unreachable = effect =
- graph()->NewNode(jsgraph_->common()->Unreachable(), effect, control);
+ graph()->NewNode(common()->Unreachable(), effect, control);
const Operator* dead_value =
- jsgraph_->common()->DeadValue(GetInfo(node)->representation());
+ common()->DeadValue(GetInfo(node)->representation());
node->ReplaceInput(0, unreachable);
node->TrimInputCount(dead_value->ValueInputCount());
ReplaceEffectControlUses(node, effect, control);
@@ -833,7 +838,13 @@ class RepresentationSelector {
} else {
DCHECK_EQ(0, node->op()->ControlInputCount());
}
- node->InsertInput(jsgraph_->zone(), new_input_index, new_input);
+ if (new_input_index == 0) {
+ node->InsertInput(jsgraph_->zone(), 0, new_input);
+ } else {
+ DCHECK_EQ(new_input_index, 1);
+ DCHECK_EQ(node->InputCount(), 1);
+ node->AppendInput(jsgraph_->zone(), new_input);
+ }
ChangeOp(node, new_op);
}
@@ -924,7 +935,15 @@ class RepresentationSelector {
ProcessInput<T>(node, i, UseInfo::None());
}
ProcessRemainingInputs<T>(node, first_effect_index);
- if (lower<T>()) Kill(node);
+
+ if (lower<T>()) {
+ TRACE("disconnecting unused #%d:%s\n", node->id(),
+ node->op()->mnemonic());
+ DisconnectFromEffectAndControl(node);
+ node->NullAllInputs();
+ // We still keep the partial node connected to its uses, knowing that
+ // lowering these operators is going to eliminate the uses.
+ }
}
// Helper for no-op node.
@@ -966,7 +985,8 @@ class RepresentationSelector {
MachineRepresentation::kWord32);
}
NumberOperationHint hint = NumberOperationHintOf(node->op());
- return VisitBinop<T>(node, CheckedUseInfoAsWord32FromHint(hint),
+ return VisitBinop<T>(node,
+ CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros),
MachineRepresentation::kWord32);
}
@@ -1233,7 +1253,7 @@ class RepresentationSelector {
DeoptMachineTypeOf(GetInfo(input)->representation(), TypeOf(input));
}
SparseInputMask mask = SparseInputMaskOf(node->op());
- ChangeOp(node, jsgraph_->common()->TypedStateValues(types, mask));
+ ChangeOp(node, common()->TypedStateValues(types, mask));
}
SetOutput<T>(node, MachineRepresentation::kTagged);
}
@@ -1282,9 +1302,9 @@ class RepresentationSelector {
node->ReplaceInput(
FrameState::kFrameStateStackInput,
- jsgraph_->graph()->NewNode(jsgraph_->common()->TypedStateValues(
- types, SparseInputMask::Dense()),
- node.stack()));
+ jsgraph_->graph()->NewNode(
+ common()->TypedStateValues(types, SparseInputMask::Dense()),
+ node.stack()));
}
}
@@ -1323,8 +1343,7 @@ class RepresentationSelector {
ConvertInput(node, i, UseInfo::AnyTagged());
}
}
- ChangeOp(node, jsgraph_->common()->TypedObjectState(
- ObjectIdOf(node->op()), types));
+ ChangeOp(node, common()->TypedObjectState(ObjectIdOf(node->op()), types));
}
SetOutput<T>(node, MachineRepresentation::kTagged);
}
@@ -1484,8 +1503,8 @@ class RepresentationSelector {
}
// Try to use type feedback.
- NumberOperationHint hint = NumberOperationHintOf(node->op());
- DCHECK_EQ(hint, NumberOperationHint::kSignedSmall);
+ NumberOperationHint const hint = NumberOperationHint::kSignedSmall;
+ DCHECK_EQ(hint, NumberOperationHintOf(node->op()));
Type left_feedback_type = TypeOf(node->InputAt(0));
Type right_feedback_type = TypeOf(node->InputAt(1));
@@ -1525,14 +1544,13 @@ class RepresentationSelector {
!right_feedback_type.Maybe(Type::MinusZero())) {
left_identify_zeros = kIdentifyZeros;
}
- UseInfo left_use = CheckedUseInfoAsWord32FromHint(hint, FeedbackSource(),
- left_identify_zeros);
+ UseInfo left_use =
+ CheckedUseInfoAsWord32FromHint(hint, left_identify_zeros);
// For CheckedInt32Add and CheckedInt32Sub, we don't need to do
// a minus zero check for the right hand side, since we already
// know that the left hand side is a proper Signed32 value,
// potentially guarded by a check.
- UseInfo right_use = CheckedUseInfoAsWord32FromHint(hint, FeedbackSource(),
- kIdentifyZeros);
+ UseInfo right_use = CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros);
VisitBinop<T>(node, left_use, right_use, MachineRepresentation::kWord32,
restriction);
}
@@ -1543,7 +1561,6 @@ class RepresentationSelector {
right_feedback_type, type_cache_,
graph_zone())) {
ChangeToPureOp(node, Int32Op(node));
-
} else {
ChangeToInt32OverflowOp(node);
}
@@ -1627,10 +1644,10 @@ class RepresentationSelector {
// mode of the {truncation}; and for modulus the sign of the
// right hand side doesn't matter anyways, so in particular there's
// no observable difference between a 0 and a -0 then.
- UseInfo const lhs_use = CheckedUseInfoAsWord32FromHint(
- hint, FeedbackSource(), truncation.identify_zeros());
- UseInfo const rhs_use = CheckedUseInfoAsWord32FromHint(
- hint, FeedbackSource(), kIdentifyZeros);
+ UseInfo const lhs_use =
+ CheckedUseInfoAsWord32FromHint(hint, truncation.identify_zeros());
+ UseInfo const rhs_use =
+ CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros);
if (truncation.IsUsedAsWord32()) {
VisitBinop<T>(node, lhs_use, rhs_use, MachineRepresentation::kWord32);
if (lower<T>()) DeferReplacement(node, lowering->Int32Mod(node));
@@ -1788,6 +1805,7 @@ class RepresentationSelector {
case CTypeInfo::Type::kFloat64:
return UseInfo::CheckedNumberAsFloat64(kDistinguishZeros, feedback);
case CTypeInfo::Type::kV8Value:
+ case CTypeInfo::Type::kApiObject:
return UseInfo::AnyTagged();
}
}
@@ -1944,6 +1962,33 @@ class RepresentationSelector {
SimplifiedLowering* lowering) {
tick_counter_->TickAndMaybeEnterSafepoint();
+ if (lower<T>()) {
+ // Kill non-effectful operations that have a None-type input and are thus
+ // dead code. Otherwise we might end up lowering the operation in a way,
+ // e.g. by replacing it with a constant, that cuts the dependency on a
+ // deopting operation (the producer of the None type), possibly resulting
+ // in a nonsense schedule.
+ if (node->op()->EffectOutputCount() == 0 &&
+ node->op()->ControlOutputCount() == 0 &&
+ node->opcode() != IrOpcode::kDeadValue &&
+ node->opcode() != IrOpcode::kStateValues &&
+ node->opcode() != IrOpcode::kFrameState &&
+ node->opcode() != IrOpcode::kPhi) {
+ for (int i = 0; i < node->op()->ValueInputCount(); i++) {
+ Node* input = node->InputAt(i);
+ if (TypeOf(input).IsNone()) {
+ node->ReplaceInput(0, input);
+ node->TrimInputCount(1);
+ ChangeOp(node,
+ common()->DeadValue(GetInfo(node)->representation()));
+ return;
+ }
+ }
+ } else {
+ InsertUnreachableIfNecessary<T>(node);
+ }
+ }
+
// Unconditionally eliminate unused pure nodes (only relevant if there's
// a pure operation in between two effectful ones, where the last one
// is unused).
@@ -1957,8 +2002,6 @@ class RepresentationSelector {
return VisitUnused<T>(node);
}
- if (lower<T>()) InsertUnreachableIfNecessary<T>(node);
-
switch (node->opcode()) {
//------------------------------------------------------------------
// Common operators.
@@ -2182,10 +2225,9 @@ class RepresentationSelector {
switch (hint) {
case NumberOperationHint::kSignedSmall:
if (propagate<T>()) {
- VisitBinop<T>(node,
- CheckedUseInfoAsWord32FromHint(
- hint, FeedbackSource(), kIdentifyZeros),
- MachineRepresentation::kBit);
+ VisitBinop<T>(
+ node, CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros),
+ MachineRepresentation::kBit);
} else if (retype<T>()) {
SetOutput<T>(node, MachineRepresentation::kBit, Type::Any());
} else {
@@ -2202,10 +2244,9 @@ class RepresentationSelector {
node, changer_->TaggedSignedOperatorFor(node->opcode()));
} else {
- VisitBinop<T>(node,
- CheckedUseInfoAsWord32FromHint(
- hint, FeedbackSource(), kIdentifyZeros),
- MachineRepresentation::kBit);
+ VisitBinop<T>(
+ node, CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros),
+ MachineRepresentation::kBit);
ChangeToPureOp(node, Int32Op(node));
}
}
@@ -2497,7 +2538,8 @@ class RepresentationSelector {
}
NumberOperationHint hint = NumberOperationHintOf(node->op());
Type rhs_type = GetUpperBound(node->InputAt(1));
- VisitBinop<T>(node, CheckedUseInfoAsWord32FromHint(hint),
+ VisitBinop<T>(node,
+ CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros),
MachineRepresentation::kWord32, Type::Signed32());
if (lower<T>()) {
MaskShiftOperand(node, rhs_type);
@@ -2530,7 +2572,8 @@ class RepresentationSelector {
}
NumberOperationHint hint = NumberOperationHintOf(node->op());
Type rhs_type = GetUpperBound(node->InputAt(1));
- VisitBinop<T>(node, CheckedUseInfoAsWord32FromHint(hint),
+ VisitBinop<T>(node,
+ CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros),
MachineRepresentation::kWord32, Type::Signed32());
if (lower<T>()) {
MaskShiftOperand(node, rhs_type);
@@ -2559,7 +2602,8 @@ class RepresentationSelector {
// have seen so far were of type Unsigned31. We speculate that this
// will continue to hold. Moreover, since the RHS is 0, the result
// will just be the (converted) LHS.
- VisitBinop<T>(node, CheckedUseInfoAsWord32FromHint(hint),
+ VisitBinop<T>(node,
+ CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros),
MachineRepresentation::kWord32, Type::Unsigned31());
if (lower<T>()) {
node->RemoveInput(1);
@@ -2578,7 +2622,8 @@ class RepresentationSelector {
}
return;
}
- VisitBinop<T>(node, CheckedUseInfoAsWord32FromHint(hint),
+ VisitBinop<T>(node,
+ CheckedUseInfoAsWord32FromHint(hint, kIdentifyZeros),
MachineRepresentation::kWord32, Type::Unsigned32());
if (lower<T>()) {
MaskShiftOperand(node, rhs_type);
@@ -2785,9 +2830,25 @@ class RepresentationSelector {
}
return;
}
- case IrOpcode::kBigIntAsUintN: {
- ProcessInput<T>(node, 0, UseInfo::TruncatingWord64());
+ case IrOpcode::kSpeculativeBigIntAsUintN: {
+ const auto p = SpeculativeBigIntAsUintNParametersOf(node->op());
+ DCHECK_LE(0, p.bits());
+ DCHECK_LE(p.bits(), 64);
+
+ ProcessInput<T>(node, 0,
+ UseInfo::CheckedBigIntTruncatingWord64(p.feedback()));
SetOutput<T>(node, MachineRepresentation::kWord64, Type::BigInt());
+ if (lower<T>()) {
+ if (p.bits() == 0) {
+ DeferReplacement(node, jsgraph_->ZeroConstant());
+ } else if (p.bits() == 64) {
+ DeferReplacement(node, node->InputAt(0));
+ } else {
+ const uint64_t mask = (1ULL << p.bits()) - 1ULL;
+ ChangeUnaryToPureBinaryOp(node, lowering->machine()->Word64And(), 1,
+ jsgraph_->Int64Constant(mask));
+ }
+ }
return;
}
case IrOpcode::kNumberAcos:
@@ -3437,7 +3498,8 @@ class RepresentationSelector {
case NumberOperationHint::kSignedSmall:
case NumberOperationHint::kSignedSmallInputs:
VisitUnop<T>(node,
- CheckedUseInfoAsWord32FromHint(p.hint(), p.feedback()),
+ CheckedUseInfoAsWord32FromHint(
+ p.hint(), kDistinguishZeros, p.feedback()),
MachineRepresentation::kWord32, Type::Signed32());
break;
case NumberOperationHint::kNumber:
@@ -3876,6 +3938,21 @@ class RepresentationSelector {
case IrOpcode::kAssertType:
return VisitUnop<T>(node, UseInfo::AnyTagged(),
MachineRepresentation::kTagged);
+ case IrOpcode::kVerifyType: {
+ Type inputType = TypeOf(node->InputAt(0));
+ VisitUnop<T>(node, UseInfo::AnyTagged(), MachineRepresentation::kTagged,
+ inputType);
+ if (lower<T>()) {
+ CHECK_IMPLIES(!FLAG_fuzzing, inputType.CanBeAsserted());
+ if (inputType.CanBeAsserted()) {
+ ChangeOp(node, simplified()->AssertType(inputType));
+ } else {
+ DeferReplacement(node, node->InputAt(0));
+ }
+ }
+ return;
+ }
+
default:
FATAL(
"Representation inference: unsupported opcode %i (%s), node #%i\n.",
@@ -3885,34 +3962,8 @@ class RepresentationSelector {
UNREACHABLE();
}
- void DeferReplacement(Node* node, Node* replacement) {
- TRACE("defer replacement #%d:%s with #%d:%s\n", node->id(),
- node->op()->mnemonic(), replacement->id(),
- replacement->op()->mnemonic());
-
- // Disconnect the node from effect and control chains, if necessary.
- if (node->op()->EffectInputCount() > 0) {
- DCHECK_LT(0, node->op()->ControlInputCount());
- // Disconnect the node from effect and control chains.
- Node* control = NodeProperties::GetControlInput(node);
- Node* effect = NodeProperties::GetEffectInput(node);
- ReplaceEffectControlUses(node, effect, control);
- }
-
- replacements_.push_back(node);
- replacements_.push_back(replacement);
-
- node->NullAllInputs(); // Node is now dead.
-
- NotifyNodeReplaced(node, replacement);
- }
-
- void Kill(Node* node) {
- TRACE("killing #%d:%s\n", node->id(), node->op()->mnemonic());
-
+ void DisconnectFromEffectAndControl(Node* node) {
if (node->op()->EffectInputCount() == 1) {
- DCHECK_LT(0, node->op()->ControlInputCount());
- // Disconnect the node from effect and control chains.
Node* control = NodeProperties::GetControlInput(node);
Node* effect = NodeProperties::GetEffectInput(node);
ReplaceEffectControlUses(node, effect, control);
@@ -3921,10 +3972,20 @@ class RepresentationSelector {
DCHECK_EQ(0, node->op()->ControlOutputCount());
DCHECK_EQ(0, node->op()->EffectOutputCount());
}
+ }
+
+ void DeferReplacement(Node* node, Node* replacement) {
+ TRACE("defer replacement #%d:%s with #%d:%s\n", node->id(),
+ node->op()->mnemonic(), replacement->id(),
+ replacement->op()->mnemonic());
- node->ReplaceUses(jsgraph_->Dead());
+ DisconnectFromEffectAndControl(node);
+ node->NullAllInputs(); // Node is now dead.
- node->NullAllInputs(); // The {node} is now dead.
+ replacements_.push_back(node);
+ replacements_.push_back(replacement);
+
+ NotifyNodeReplaced(node, replacement);
}
private:
diff --git a/deps/v8/src/compiler/simplified-operator-reducer.cc b/deps/v8/src/compiler/simplified-operator-reducer.cc
index b1d3f8b2f3..6bc984008d 100644
--- a/deps/v8/src/compiler/simplified-operator-reducer.cc
+++ b/deps/v8/src/compiler/simplified-operator-reducer.cc
@@ -5,6 +5,7 @@
#include "src/compiler/simplified-operator-reducer.h"
#include "src/compiler/js-graph.h"
+#include "src/compiler/js-heap-broker.h"
#include "src/compiler/machine-operator.h"
#include "src/compiler/node-matchers.h"
#include "src/compiler/operator-properties.h"
@@ -41,7 +42,7 @@ SimplifiedOperatorReducer::~SimplifiedOperatorReducer() = default;
Reduction SimplifiedOperatorReducer::Reduce(Node* node) {
- DisallowHeapAccessIf no_heap_access(!FLAG_turbo_direct_heap_access);
+ DisallowHeapAccessIf no_heap_access(!broker()->is_concurrent_inlining());
switch (node->opcode()) {
case IrOpcode::kBooleanNot: {
HeapObjectMatcher m(node->InputAt(0));
@@ -60,7 +61,9 @@ Reduction SimplifiedOperatorReducer::Reduce(Node* node) {
case IrOpcode::kChangeTaggedToBit: {
HeapObjectMatcher m(node->InputAt(0));
if (m.HasResolvedValue()) {
- return ReplaceInt32(m.Ref(broker()).BooleanValue());
+ base::Optional<bool> maybe_result =
+ m.Ref(broker()).TryGetBooleanValue();
+ if (maybe_result.has_value()) return ReplaceInt32(*maybe_result);
}
if (m.IsChangeBitToTagged()) return Replace(m.InputAt(0));
break;
diff --git a/deps/v8/src/compiler/simplified-operator.cc b/deps/v8/src/compiler/simplified-operator.cc
index 09e3a80ec4..32cc9eea95 100644
--- a/deps/v8/src/compiler/simplified-operator.cc
+++ b/deps/v8/src/compiler/simplified-operator.cc
@@ -615,6 +615,27 @@ NumberOperationParameters const& NumberOperationParametersOf(
return OpParameter<NumberOperationParameters>(op);
}
+bool operator==(SpeculativeBigIntAsUintNParameters const& lhs,
+ SpeculativeBigIntAsUintNParameters const& rhs) {
+ return lhs.bits() == rhs.bits() && lhs.feedback() == rhs.feedback();
+}
+
+size_t hash_value(SpeculativeBigIntAsUintNParameters const& p) {
+ FeedbackSource::Hash feedback_hash;
+ return base::hash_combine(p.bits(), feedback_hash(p.feedback()));
+}
+
+std::ostream& operator<<(std::ostream& os,
+ SpeculativeBigIntAsUintNParameters const& p) {
+ return os << p.bits() << ", " << p.feedback();
+}
+
+SpeculativeBigIntAsUintNParameters const& SpeculativeBigIntAsUintNParametersOf(
+ Operator const* op) {
+ DCHECK_EQ(IrOpcode::kSpeculativeBigIntAsUintN, op->opcode());
+ return OpParameter<SpeculativeBigIntAsUintNParameters>(op);
+}
+
size_t hash_value(AllocateParameters info) {
return base::hash_combine(info.type(),
static_cast<int>(info.allocation_type()));
@@ -1296,11 +1317,14 @@ const Operator* SimplifiedOperatorBuilder::RuntimeAbort(AbortReason reason) {
static_cast<int>(reason)); // parameter
}
-const Operator* SimplifiedOperatorBuilder::BigIntAsUintN(int bits) {
+const Operator* SimplifiedOperatorBuilder::SpeculativeBigIntAsUintN(
+ int bits, const FeedbackSource& feedback) {
CHECK(0 <= bits && bits <= 64);
- return zone()->New<Operator1<int>>(IrOpcode::kBigIntAsUintN, Operator::kPure,
- "BigIntAsUintN", 1, 0, 0, 1, 0, 0, bits);
+ return zone()->New<Operator1<SpeculativeBigIntAsUintNParameters>>(
+ IrOpcode::kSpeculativeBigIntAsUintN, Operator::kNoProperties,
+ "SpeculativeBigIntAsUintN", 1, 1, 1, 1, 1, 0,
+ SpeculativeBigIntAsUintNParameters(bits, feedback));
}
const Operator* SimplifiedOperatorBuilder::UpdateInterruptBudget(int delta) {
@@ -1316,12 +1340,18 @@ const Operator* SimplifiedOperatorBuilder::TierUpCheck() {
}
const Operator* SimplifiedOperatorBuilder::AssertType(Type type) {
- DCHECK(type.IsRange());
+ DCHECK(type.CanBeAsserted());
return zone()->New<Operator1<Type>>(IrOpcode::kAssertType,
Operator::kNoThrow | Operator::kNoDeopt,
"AssertType", 1, 0, 0, 1, 0, 0, type);
}
+const Operator* SimplifiedOperatorBuilder::VerifyType() {
+ return zone()->New<Operator>(IrOpcode::kVerifyType,
+ Operator::kNoThrow | Operator::kNoDeopt,
+ "VerifyType", 1, 0, 0, 1, 0, 0);
+}
+
const Operator* SimplifiedOperatorBuilder::CheckIf(
DeoptimizeReason reason, const FeedbackSource& feedback) {
if (!feedback.IsValid()) {
diff --git a/deps/v8/src/compiler/simplified-operator.h b/deps/v8/src/compiler/simplified-operator.h
index cd66b89ea4..03ca88bc9a 100644
--- a/deps/v8/src/compiler/simplified-operator.h
+++ b/deps/v8/src/compiler/simplified-operator.h
@@ -127,6 +127,13 @@ struct FieldAccess {
#endif
{
DCHECK_GE(offset, 0);
+ DCHECK_IMPLIES(
+ machine_type.IsMapWord(),
+ offset == HeapObject::kMapOffset && base_is_tagged != kUntaggedBase);
+ DCHECK_IMPLIES(machine_type.IsMapWord(),
+ (write_barrier_kind == kMapWriteBarrier ||
+ write_barrier_kind == kNoWriteBarrier ||
+ write_barrier_kind == kAssertNoWriteBarrier));
}
int tag() const { return base_is_tagged == kTaggedBase ? kHeapObjectTag : 0; }
@@ -599,6 +606,30 @@ bool operator==(NumberOperationParameters const&,
const NumberOperationParameters& NumberOperationParametersOf(const Operator* op)
V8_WARN_UNUSED_RESULT;
+class SpeculativeBigIntAsUintNParameters {
+ public:
+ SpeculativeBigIntAsUintNParameters(int bits, const FeedbackSource& feedback)
+ : bits_(bits), feedback_(feedback) {
+ DCHECK_GE(bits_, 0);
+ DCHECK_LE(bits_, 64);
+ }
+
+ int bits() const { return bits_; }
+ const FeedbackSource& feedback() const { return feedback_; }
+
+ private:
+ int bits_;
+ FeedbackSource feedback_;
+};
+
+size_t hash_value(SpeculativeBigIntAsUintNParameters const&);
+V8_EXPORT_PRIVATE std::ostream& operator<<(
+ std::ostream&, const SpeculativeBigIntAsUintNParameters&);
+bool operator==(SpeculativeBigIntAsUintNParameters const&,
+ SpeculativeBigIntAsUintNParameters const&);
+const SpeculativeBigIntAsUintNParameters& SpeculativeBigIntAsUintNParametersOf(
+ const Operator* op) V8_WARN_UNUSED_RESULT;
+
int FormalParameterCountOf(const Operator* op) V8_WARN_UNUSED_RESULT;
class AllocateParameters {
@@ -806,7 +837,8 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final
const Operator* SpeculativeBigIntAdd(BigIntOperationHint hint);
const Operator* SpeculativeBigIntSubtract(BigIntOperationHint hint);
const Operator* SpeculativeBigIntNegate(BigIntOperationHint hint);
- const Operator* BigIntAsUintN(int bits);
+ const Operator* SpeculativeBigIntAsUintN(int bits,
+ const FeedbackSource& feedback);
const Operator* ReferenceEqual();
const Operator* SameValue();
@@ -1054,6 +1086,10 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final
// Abort if the value input does not inhabit the given type
const Operator* AssertType(Type type);
+ // Abort if the value does not match the node's computed type after
+ // SimplifiedLowering.
+ const Operator* VerifyType();
+
const Operator* DateNow();
// Represents the inputs necessary to construct a fast and a slow API call.
@@ -1112,7 +1148,7 @@ class FastApiCallNode final : public SimplifiedNodeWrapperBase {
public:
explicit constexpr FastApiCallNode(Node* node)
: SimplifiedNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kFastApiCall);
+ DCHECK_EQ(IrOpcode::kFastApiCall, node->opcode());
}
const FastApiCallParameters& Parameters() const {
@@ -1184,7 +1220,7 @@ class TierUpCheckNode final : public SimplifiedNodeWrapperBase {
public:
explicit constexpr TierUpCheckNode(Node* node)
: SimplifiedNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kTierUpCheck);
+ DCHECK_EQ(IrOpcode::kTierUpCheck, node->opcode());
}
#define INPUTS(V) \
@@ -1201,7 +1237,7 @@ class UpdateInterruptBudgetNode final : public SimplifiedNodeWrapperBase {
public:
explicit constexpr UpdateInterruptBudgetNode(Node* node)
: SimplifiedNodeWrapperBase(node) {
- CONSTEXPR_DCHECK(node->opcode() == IrOpcode::kUpdateInterruptBudget);
+ DCHECK_EQ(IrOpcode::kUpdateInterruptBudget, node->opcode());
}
int delta() const { return OpParameter<int>(node()->op()); }
diff --git a/deps/v8/src/compiler/store-store-elimination.cc b/deps/v8/src/compiler/store-store-elimination.cc
index 70dadd9441..3600ee1a41 100644
--- a/deps/v8/src/compiler/store-store-elimination.cc
+++ b/deps/v8/src/compiler/store-store-elimination.cc
@@ -331,8 +331,8 @@ UnobservablesSet RedundantStoreFinder::RecomputeSet(
bool RedundantStoreFinder::CannotObserveStoreField(Node* node) {
IrOpcode::Value opcode = node->opcode();
return opcode == IrOpcode::kLoadElement || opcode == IrOpcode::kLoad ||
- opcode == IrOpcode::kStore || opcode == IrOpcode::kEffectPhi ||
- opcode == IrOpcode::kStoreElement ||
+ opcode == IrOpcode::kLoadImmutable || opcode == IrOpcode::kStore ||
+ opcode == IrOpcode::kEffectPhi || opcode == IrOpcode::kStoreElement ||
opcode == IrOpcode::kUnsafePointerAdd || opcode == IrOpcode::kRetain;
}
diff --git a/deps/v8/src/compiler/type-cache.h b/deps/v8/src/compiler/type-cache.h
index 2ade5f68a3..6442b6f6b0 100644
--- a/deps/v8/src/compiler/type-cache.h
+++ b/deps/v8/src/compiler/type-cache.h
@@ -36,9 +36,10 @@ class V8_EXPORT_PRIVATE TypeCache final {
Type const kUnsigned31 = Type::Unsigned31();
Type const kInt32 = Type::Signed32();
Type const kUint32 = Type::Unsigned32();
- Type const kInt64 = CreateRange<int64_t>();
- Type const kUint64 = CreateRange<uint64_t>();
- Type const kIntPtr = CreateRange<intptr_t>();
+ Type const kDoubleRepresentableInt64 = CreateRange(
+ std::numeric_limits<int64_t>::min(), kMaxDoubleRepresentableInt64);
+ Type const kDoubleRepresentableUint64 = CreateRange(
+ std::numeric_limits<uint64_t>::min(), kMaxDoubleRepresentableUint64);
Type const kFloat32 = Type::Number();
Type const kFloat64 = Type::Number();
Type const kBigInt64 = Type::BigInt();
@@ -190,8 +191,11 @@ class V8_EXPORT_PRIVATE TypeCache final {
private:
template <typename T>
Type CreateRange() {
- return CreateRange(std::numeric_limits<T>::min(),
- std::numeric_limits<T>::max());
+ T min = std::numeric_limits<T>::min();
+ T max = std::numeric_limits<T>::max();
+ DCHECK_EQ(min, static_cast<T>(static_cast<double>(min)));
+ DCHECK_EQ(max, static_cast<T>(static_cast<double>(max)));
+ return CreateRange(min, max);
}
Type CreateRange(double min, double max) {
@@ -199,6 +203,10 @@ class V8_EXPORT_PRIVATE TypeCache final {
}
Zone* zone() { return &zone_; }
+
+ static constexpr double kMaxDoubleRepresentableInt64 = 9223372036854774784.0;
+ static constexpr double kMaxDoubleRepresentableUint64 =
+ 18446744073709549568.0;
};
} // namespace compiler
diff --git a/deps/v8/src/compiler/type-narrowing-reducer.cc b/deps/v8/src/compiler/type-narrowing-reducer.cc
index b24e82c53b..996b088376 100644
--- a/deps/v8/src/compiler/type-narrowing-reducer.cc
+++ b/deps/v8/src/compiler/type-narrowing-reducer.cc
@@ -5,6 +5,7 @@
#include "src/compiler/type-narrowing-reducer.h"
#include "src/compiler/js-graph.h"
+#include "src/compiler/js-heap-broker.h"
namespace v8 {
namespace internal {
@@ -12,12 +13,15 @@ namespace compiler {
TypeNarrowingReducer::TypeNarrowingReducer(Editor* editor, JSGraph* jsgraph,
JSHeapBroker* broker)
- : AdvancedReducer(editor), jsgraph_(jsgraph), op_typer_(broker, zone()) {}
+ : AdvancedReducer(editor),
+ jsgraph_(jsgraph),
+ broker_(broker),
+ op_typer_(broker, zone()) {}
TypeNarrowingReducer::~TypeNarrowingReducer() = default;
Reduction TypeNarrowingReducer::Reduce(Node* node) {
- DisallowHeapAccessIf no_heap_access(!FLAG_turbo_direct_heap_access);
+ DisallowHeapAccessIf no_heap_access(!broker_->is_concurrent_inlining());
Type new_type = Type::Any();
diff --git a/deps/v8/src/compiler/type-narrowing-reducer.h b/deps/v8/src/compiler/type-narrowing-reducer.h
index ab8c4a483c..9ec6883449 100644
--- a/deps/v8/src/compiler/type-narrowing-reducer.h
+++ b/deps/v8/src/compiler/type-narrowing-reducer.h
@@ -34,6 +34,7 @@ class V8_EXPORT_PRIVATE TypeNarrowingReducer final
Zone* zone() const;
JSGraph* const jsgraph_;
+ const JSHeapBroker* const broker_;
OperationTyper op_typer_;
};
diff --git a/deps/v8/src/compiler/typed-optimization.cc b/deps/v8/src/compiler/typed-optimization.cc
index d5bc845f7c..3c16c7317c 100644
--- a/deps/v8/src/compiler/typed-optimization.cc
+++ b/deps/v8/src/compiler/typed-optimization.cc
@@ -34,7 +34,7 @@ TypedOptimization::TypedOptimization(Editor* editor,
TypedOptimization::~TypedOptimization() = default;
Reduction TypedOptimization::Reduce(Node* node) {
- DisallowHeapAccessIf no_heap_access(!FLAG_turbo_direct_heap_access);
+ DisallowHeapAccessIf no_heap_access(!broker()->is_concurrent_inlining());
switch (node->opcode()) {
case IrOpcode::kConvertReceiver:
return ReduceConvertReceiver(node);
diff --git a/deps/v8/src/compiler/typer.cc b/deps/v8/src/compiler/typer.cc
index 0f18222236..09daaa3864 100644
--- a/deps/v8/src/compiler/typer.cc
+++ b/deps/v8/src/compiler/typer.cc
@@ -1839,8 +1839,6 @@ Type Typer::Visitor::TypeJSCallRuntime(Node* node) {
return TypeUnaryOp(node, ToNumber);
case Runtime::kInlineToObject:
return TypeUnaryOp(node, ToObject);
- case Runtime::kInlineToString:
- return TypeUnaryOp(node, ToString);
case Runtime::kHasInPrototypeChain:
return Type::Boolean();
default:
@@ -2361,6 +2359,10 @@ Type Typer::Visitor::TypeRuntimeAbort(Node* node) { UNREACHABLE(); }
Type Typer::Visitor::TypeAssertType(Node* node) { UNREACHABLE(); }
+Type Typer::Visitor::TypeVerifyType(Node* node) {
+ return TypeOrNone(node->InputAt(0));
+}
+
// Heap constants.
Type Typer::Visitor::TypeConstant(Handle<Object> value) {
diff --git a/deps/v8/src/compiler/types.cc b/deps/v8/src/compiler/types.cc
index 236cff3cc6..5c6a4f7db9 100644
--- a/deps/v8/src/compiler/types.cc
+++ b/deps/v8/src/compiler/types.cc
@@ -6,6 +6,7 @@
#include <iomanip>
+#include "src/compiler/js-heap-broker.h"
#include "src/handles/handles-inl.h"
#include "src/objects/instance-type.h"
#include "src/objects/objects-inl.h"
@@ -837,7 +838,14 @@ Type Type::Constant(double value, Zone* zone) {
}
Type Type::Constant(JSHeapBroker* broker, Handle<i::Object> value, Zone* zone) {
- ObjectRef ref(broker, value);
+ // TODO(jgruber,chromium:1209798): Using kAssumeMemoryFence works around
+ // the fact that the graph stores handles (and not refs). The assumption is
+ // that any handle inserted into the graph is safe to read; but we don't
+ // preserve the reason why it is safe to read. Thus we must over-approximate
+ // here and assume the existence of a memory fence. In the future, we should
+ // consider having the graph store ObjectRefs or ObjectData pointer instead,
+ // which would make new ref construction here unnecessary.
+ ObjectRef ref = MakeRefAssumeMemoryFence(broker, value);
if (ref.IsSmi()) {
return Constant(static_cast<double>(ref.AsSmi()), zone);
}
@@ -969,8 +977,7 @@ const char* BitsetType::Name(bitset bits) {
}
}
-void BitsetType::Print(std::ostream& os, // NOLINT
- bitset bits) {
+void BitsetType::Print(std::ostream& os, bitset bits) {
DisallowGarbageCollection no_gc;
const char* name = Name(bits);
if (name != nullptr) {
diff --git a/deps/v8/src/compiler/types.h b/deps/v8/src/compiler/types.h
index b5692298ab..a28a28c59e 100644
--- a/deps/v8/src/compiler/types.h
+++ b/deps/v8/src/compiler/types.h
@@ -267,7 +267,7 @@ class V8_EXPORT_PRIVATE BitsetType {
static bitset ExpandInternals(bitset bits);
static const char* Name(bitset);
- static void Print(std::ostream& os, bitset); // NOLINT
+ static void Print(std::ostream& os, bitset);
#ifdef DEBUG
static void Print(bitset);
#endif
@@ -413,6 +413,10 @@ class V8_EXPORT_PRIVATE Type {
(Is(Type::PlainNumber()) && Min() == Max());
}
+ bool CanBeAsserted() const {
+ return IsRange() || (Is(Type::Integral32()) && !IsNone());
+ }
+
const HeapConstantType* AsHeapConstant() const;
const OtherNumberConstantType* AsOtherNumberConstant() const;
const RangeType* AsRange() const;
diff --git a/deps/v8/src/compiler/verifier.cc b/deps/v8/src/compiler/verifier.cc
index b5b3ab5a98..8b7e22459b 100644
--- a/deps/v8/src/compiler/verifier.cc
+++ b/deps/v8/src/compiler/verifier.cc
@@ -482,8 +482,8 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
Node* control = NodeProperties::GetControlInput(node, 0);
CHECK_EQ(effect_count, control->op()->ControlInputCount());
CHECK_EQ(input_count, 1 + effect_count);
- // If the control input is a Merge, then make sure that at least one
- // of it's usages is non-phi.
+ // If the control input is a Merge, then make sure that at least one of
+ // its usages is non-phi.
if (control->opcode() == IrOpcode::kMerge) {
bool non_phi_use_found = false;
for (Node* use : control->uses()) {
@@ -954,8 +954,8 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kSpeculativeBigIntNegate:
CheckTypeIs(node, Type::BigInt());
break;
- case IrOpcode::kBigIntAsUintN:
- CheckValueInputIs(node, 0, Type::BigInt());
+ case IrOpcode::kSpeculativeBigIntAsUintN:
+ CheckValueInputIs(node, 0, Type::Any());
CheckTypeIs(node, Type::BigInt());
break;
case IrOpcode::kBigIntAdd:
@@ -1500,6 +1500,15 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kAssertType:
break;
+ case IrOpcode::kVerifyType:
+ if (NodeProperties::IsTyped(node)) {
+ Node* input = NodeProperties::GetValueInput(node, 0);
+ DCHECK(NodeProperties::IsTyped(input));
+ CHECK(NodeProperties::GetType(node).Equals(
+ NodeProperties::GetType(input)));
+ }
+ break;
+
case IrOpcode::kCheckFloat64Hole:
CheckValueInputIs(node, 0, Type::NumberOrHole());
CheckTypeIs(node, Type::NumberOrUndefined());
@@ -1658,8 +1667,12 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kWord64Rol:
case IrOpcode::kWord64Ror:
case IrOpcode::kWord64Clz:
- case IrOpcode::kWord64Popcnt:
case IrOpcode::kWord64Ctz:
+ case IrOpcode::kWord64RolLowerable:
+ case IrOpcode::kWord64RorLowerable:
+ case IrOpcode::kWord64ClzLowerable:
+ case IrOpcode::kWord64CtzLowerable:
+ case IrOpcode::kWord64Popcnt:
case IrOpcode::kWord64ReverseBits:
case IrOpcode::kWord64ReverseBytes:
case IrOpcode::kSimd128ReverseBytes:
@@ -1791,6 +1804,8 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kFloat64ExtractHighWord32:
case IrOpcode::kFloat64InsertLowWord32:
case IrOpcode::kFloat64InsertHighWord32:
+ case IrOpcode::kWord32Select:
+ case IrOpcode::kWord64Select:
case IrOpcode::kFloat32Select:
case IrOpcode::kFloat64Select:
case IrOpcode::kInt32PairAdd:
@@ -1850,7 +1865,7 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
// TODO(rossberg): Check.
break;
}
-} // NOLINT(readability/fn_size)
+}
void Verifier::Run(Graph* graph, Typing typing, CheckInputs check_inputs,
CodeType code_type) {
diff --git a/deps/v8/src/compiler/wasm-compiler.cc b/deps/v8/src/compiler/wasm-compiler.cc
index 1b858f5dfc..6e433def70 100644
--- a/deps/v8/src/compiler/wasm-compiler.cc
+++ b/deps/v8/src/compiler/wasm-compiler.cc
@@ -16,7 +16,7 @@
#include "src/codegen/assembler.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/compiler.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/machine-type.h"
#include "src/codegen/optimized-compilation-info.h"
#include "src/compiler/backend/code-generator.h"
@@ -34,7 +34,6 @@
#include "src/compiler/node-origin-table.h"
#include "src/compiler/node-properties.h"
#include "src/compiler/pipeline.h"
-#include "src/compiler/simd-scalar-lowering.h"
#include "src/compiler/zone-stats.h"
#include "src/execution/isolate-inl.h"
#include "src/heap/factory.h"
@@ -131,11 +130,7 @@ constexpr Builtins::Name WasmRuntimeStubIdToBuiltinName(
#undef DEF_CASE
#undef DEF_TRAP_CASE
default:
-#if V8_HAS_CXX14_CONSTEXPR
UNREACHABLE();
-#else
- return Builtins::kAbort;
-#endif
}
}
@@ -291,10 +286,6 @@ class WasmGraphAssembler : public GraphAssembler {
// Maps and their contents.
- Node* LoadMap(Node* heap_object) {
- return LoadFromObject(MachineType::TaggedPointer(), heap_object,
- wasm::ObjectAccess::ToTagged(HeapObject::kMapOffset));
- }
Node* LoadInstanceType(Node* map) {
return LoadFromObject(
MachineType::Uint16(), map,
@@ -710,8 +701,23 @@ void WasmGraphBuilder::PatchInStackCheckIfNeeded() {
if (effect() == dummy) return;
// Now patch all control uses of {start} to use {control} and all effect uses
- // to use {effect} instead. Then rewire the dummy node to use start instead.
+ // to use {effect} instead. We exclude Projection nodes: Projections pointing
+ // to start are floating control, and we want it to point directly to start
+ // because of restrictions later in the pipeline (specifically, loop
+ // unrolling).
+ // Then rewire the dummy node to use start instead.
NodeProperties::ReplaceUses(start, start, effect(), control());
+ {
+ // We need an intermediate vector because we are not allowed to modify a use
+ // while traversing uses().
+ std::vector<Node*> projections;
+ for (Node* use : control()->uses()) {
+ if (use->opcode() == IrOpcode::kProjection) projections.emplace_back(use);
+ }
+ for (Node* use : projections) {
+ use->ReplaceInput(NodeProperties::FirstControlIndex(use), start);
+ }
+ }
NodeProperties::ReplaceUses(dummy, nullptr, start, start);
}
@@ -874,17 +880,19 @@ Node* WasmGraphBuilder::Binop(wasm::WasmOpcode opcode, Node* left, Node* right,
std::swap(left, right);
break;
case wasm::kExprI64Ror:
- op = m->Word64Ror();
right = MaskShiftCount64(right);
- break;
+ return m->Is64() ? graph()->NewNode(m->Word64Ror(), left, right)
+ : graph()->NewNode(m->Word64RorLowerable(), left, right,
+ control());
case wasm::kExprI64Rol:
if (m->Word64Rol().IsSupported()) {
- op = m->Word64Rol().op();
- right = MaskShiftCount64(right);
- break;
+ return m->Is64() ? graph()->NewNode(m->Word64Rol().op(), left,
+ MaskShiftCount64(right))
+ : graph()->NewNode(m->Word64RolLowerable().op(), left,
+ MaskShiftCount64(right), control());
} else if (m->Word32Rol().IsSupported()) {
- op = m->Word64Rol().placeholder();
- break;
+ return graph()->NewNode(m->Word64RolLowerable().placeholder(), left,
+ right, control());
}
return BuildI64Rol(left, right);
case wasm::kExprF32CopySign:
@@ -1175,19 +1183,22 @@ Node* WasmGraphBuilder::Unop(wasm::WasmOpcode opcode, Node* input,
op = m->BitcastFloat64ToInt64();
break;
case wasm::kExprI64Clz:
- op = m->Word64Clz();
- break;
+ return m->Is64()
+ ? graph()->NewNode(m->Word64Clz(), input)
+ : graph()->NewNode(m->Word64ClzLowerable(), input, control());
case wasm::kExprI64Ctz: {
- OptionalOperator ctz64 = m->Word64Ctz();
- if (ctz64.IsSupported()) {
- op = ctz64.op();
- break;
+ if (m->Word64Ctz().IsSupported()) {
+ return m->Is64() ? graph()->NewNode(m->Word64Ctz().op(), input)
+ : graph()->NewNode(m->Word64CtzLowerable().op(), input,
+ control());
} else if (m->Is32() && m->Word32Ctz().IsSupported()) {
- op = ctz64.placeholder();
- break;
+ return graph()->NewNode(m->Word64CtzLowerable().placeholder(), input,
+ control());
} else if (m->Word64ReverseBits().IsSupported()) {
Node* reversed = graph()->NewNode(m->Word64ReverseBits().op(), input);
- Node* result = graph()->NewNode(m->Word64Clz(), reversed);
+ Node* result = m->Is64() ? graph()->NewNode(m->Word64Clz(), reversed)
+ : graph()->NewNode(m->Word64ClzLowerable(),
+ reversed, control());
return result;
} else {
return BuildI64Ctz(input);
@@ -1301,6 +1312,11 @@ Node* WasmGraphBuilder::BranchExpectFalse(Node* cond, Node** true_node,
return gasm_->Branch(cond, true_node, false_node, BranchHint::kFalse);
}
+Node* WasmGraphBuilder::BranchExpectTrue(Node* cond, Node** true_node,
+ Node** false_node) {
+ return gasm_->Branch(cond, true_node, false_node, BranchHint::kTrue);
+}
+
Node* WasmGraphBuilder::Select(Node *cond, Node* true_node,
Node* false_node, wasm::ValueType type) {
MachineOperatorBuilder* m = mcgraph()->machine();
@@ -1314,6 +1330,14 @@ Node* WasmGraphBuilder::Select(Node *cond, Node* true_node,
return mcgraph()->graph()->NewNode(m->Float64Select().op(), cond,
true_node, false_node);
}
+ if (kind == wasm::kI32 && m->Word32Select().IsSupported()) {
+ return mcgraph()->graph()->NewNode(m->Word32Select().op(), cond, true_node,
+ false_node);
+ }
+ if (kind == wasm::kI64 && m->Word64Select().IsSupported()) {
+ return mcgraph()->graph()->NewNode(m->Word64Select().op(), cond, true_node,
+ false_node);
+ }
// Default to control-flow.
Node* controls[2];
BranchNoHint(cond, &controls[0], &controls[1]);
@@ -2944,7 +2968,7 @@ Node* WasmGraphBuilder::BuildImportCall(const wasm::FunctionSig* sig,
Node* imported_function_refs =
LOAD_INSTANCE_FIELD(ImportedFunctionRefs, MachineType::TaggedPointer());
// Access fixed array at {header_size - tag + func_index * kTaggedSize}.
- Node* func_index_intptr = Uint32ToUintptr(func_index);
+ Node* func_index_intptr = BuildChangeUint32ToUintPtr(func_index);
Node* ref_node = gasm_->LoadFixedArrayElement(
imported_function_refs, func_index_intptr, MachineType::TaggedPointer());
@@ -3070,36 +3094,28 @@ Node* WasmGraphBuilder::BuildIndirectCall(uint32_t table_index,
const wasm::ValueType table_type = env_->module->tables[table_index].type;
// Check that the table entry is not null and that the type of the function is
- // a subtype of the function type declared at the call site. In the absence of
- // function subtyping, the latter can only happen if the table type is (ref
- // null? func). Also, subtyping reduces to normalized signature equality
- // checking.
- // TODO(7748): Expand this with function subtyping once we have that.
+ // **identical with** the function type declared at the call site (no
+ // subtyping of functions is allowed).
+ // Note: Since null entries are identified by having ift_sig_id (-1), we only
+ // need one comparison.
+ // TODO(9495): Change this if we should do full function subtyping instead.
const bool needs_signature_check =
+ FLAG_experimental_wasm_gc ||
table_type.is_reference_to(wasm::HeapType::kFunc) ||
table_type.is_nullable();
if (needs_signature_check) {
Node* int32_scaled_key =
- Uint32ToUintptr(gasm_->Word32Shl(key, Int32Constant(2)));
+ BuildChangeUint32ToUintPtr(gasm_->Word32Shl(key, Int32Constant(2)));
Node* loaded_sig = gasm_->LoadFromObject(MachineType::Int32(), ift_sig_ids,
int32_scaled_key);
-
- if (table_type.is_reference_to(wasm::HeapType::kFunc)) {
- int32_t expected_sig_id = env_->module->canonicalized_type_ids[sig_index];
- Node* sig_match =
- gasm_->Word32Equal(loaded_sig, Int32Constant(expected_sig_id));
- TrapIfFalse(wasm::kTrapFuncSigMismatch, sig_match, position);
- } else {
- // If the table entries are nullable, we still have to check that the
- // entry is initialized.
- Node* function_is_null =
- gasm_->Word32Equal(loaded_sig, Int32Constant(-1));
- TrapIfTrue(wasm::kTrapNullDereference, function_is_null, position);
- }
+ int32_t expected_sig_id = env_->module->canonicalized_type_ids[sig_index];
+ Node* sig_match =
+ gasm_->Word32Equal(loaded_sig, Int32Constant(expected_sig_id));
+ TrapIfFalse(wasm::kTrapFuncSigMismatch, sig_match, position);
}
- Node* key_intptr = Uint32ToUintptr(key);
+ Node* key_intptr = BuildChangeUint32ToUintPtr(key);
Node* target_instance = gasm_->LoadFixedArrayElement(
ift_instances, key_intptr, MachineType::TaggedPointer());
@@ -3124,13 +3140,28 @@ Node* WasmGraphBuilder::BuildIndirectCall(uint32_t table_index,
}
}
-Node* WasmGraphBuilder::BuildLoadJumpTableOffsetFromExportedFunctionData(
+Node* WasmGraphBuilder::BuildLoadCallTargetFromExportedFunctionData(
Node* function_data) {
- Node* jump_table_offset_smi = gasm_->LoadFromObject(
- MachineType::TaggedSigned(), function_data,
- wasm::ObjectAccess::ToTagged(
- WasmExportedFunctionData::kJumpTableOffsetOffset));
- return BuildChangeSmiToIntPtr(jump_table_offset_smi);
+ // TODO(saelo) move this code into a common LoadExternalPointer routine?
+#ifdef V8_HEAP_SANDBOX
+ Node* index = gasm_->LoadFromObject(
+ MachineType::Pointer(), function_data,
+ wasm::ObjectAccess::ToTagged(WasmFunctionData::kForeignAddressOffset));
+
+ Node* isolate_root = BuildLoadIsolateRoot();
+ Node* table =
+ gasm_->LoadFromObject(MachineType::Pointer(), isolate_root,
+ IsolateData::external_pointer_table_offset() +
+ Internals::kExternalPointerTableBufferOffset);
+ Node* offset = gasm_->Int32Mul(index, gasm_->Int32Constant(8));
+ Node* decoded_ptr = gasm_->Load(MachineType::Pointer(), table, offset);
+ Node* tag = gasm_->IntPtrConstant(~kForeignForeignAddressTag);
+ return gasm_->WordAnd(decoded_ptr, tag);
+#else
+ return gasm_->LoadFromObject(
+ MachineType::Pointer(), function_data,
+ wasm::ObjectAccess::ToTagged(WasmFunctionData::kForeignAddressOffset));
+#endif
}
// TODO(9495): Support CAPI function refs.
@@ -3148,77 +3179,33 @@ Node* WasmGraphBuilder::BuildCallRef(uint32_t sig_index, Vector<Node*> args,
Node* function_data = gasm_->LoadFunctionDataFromJSFunction(args[0]);
- Node* is_js_function =
- gasm_->HasInstanceType(function_data, WASM_JS_FUNCTION_DATA_TYPE);
-
- auto js_label = gasm_->MakeLabel();
- auto end_label = gasm_->MakeLabel(MachineRepresentation::kTaggedPointer,
- MachineRepresentation::kTaggedPointer);
+ auto load_target = gasm_->MakeLabel();
+ auto end_label = gasm_->MakeLabel(MachineType::PointerRepresentation());
- gasm_->GotoIf(is_js_function, &js_label);
+ Node* instance_node = gasm_->LoadFromObject(
+ MachineType::TaggedPointer(), function_data,
+ wasm::ObjectAccess::ToTagged(WasmFunctionData::kRefOffset));
+ Node* is_pair = gasm_->HasInstanceType(instance_node, TUPLE2_TYPE);
+ gasm_->GotoIfNot(is_pair, &load_target);
{
- // Call to a WasmExportedFunction.
- // Load instance object corresponding to module where callee is defined.
- Node* callee_instance = gasm_->LoadExportedFunctionInstance(function_data);
- Node* function_index = gasm_->LoadExportedFunctionIndexAsSmi(function_data);
-
- auto imported_label = gasm_->MakeLabel();
-
- // Check if callee is a locally defined or imported function in its module.
- Node* imported_function_refs = gasm_->LoadFromObject(
- MachineType::TaggedPointer(), callee_instance,
- wasm::ObjectAccess::ToTagged(
- WasmInstanceObject::kImportedFunctionRefsOffset));
- Node* imported_functions_num =
- gasm_->LoadFixedArrayLengthAsSmi(imported_function_refs);
- gasm_->GotoIf(gasm_->SmiLessThan(function_index, imported_functions_num),
- &imported_label);
- {
- // Function locally defined in module.
- Node* jump_table_start =
- gasm_->LoadFromObject(MachineType::Pointer(), callee_instance,
- wasm::ObjectAccess::ToTagged(
- WasmInstanceObject::kJumpTableStartOffset));
- Node* jump_table_offset =
- BuildLoadJumpTableOffsetFromExportedFunctionData(function_data);
- Node* jump_table_slot =
- gasm_->IntAdd(jump_table_start, jump_table_offset);
-
- gasm_->Goto(&end_label, jump_table_slot,
- callee_instance /* Unused, dummy value */);
- }
-
- {
- // Function imported to module.
- gasm_->Bind(&imported_label);
- Node* function_index_intptr = BuildChangeSmiToIntPtr(function_index);
-
- Node* imported_instance = gasm_->LoadFixedArrayElement(
- imported_function_refs, function_index_intptr,
- MachineType::TaggedPointer());
-
- Node* imported_function_targets = gasm_->LoadFromObject(
- MachineType::Pointer(), callee_instance,
- wasm::ObjectAccess::ToTagged(
- WasmInstanceObject::kImportedFunctionTargetsOffset));
-
- Node* target_node = gasm_->LoadFromObject(
- MachineType::Pointer(), imported_function_targets,
- gasm_->IntMul(function_index_intptr,
- gasm_->IntPtrConstant(kSystemPointerSize)));
-
- gasm_->Goto(&end_label, target_node, imported_instance);
- }
- }
-
+ // Overwrite the tuple's "instance" entry with the current instance.
+ // TODO(jkummerow): Can we avoid this, by guaranteeing that it's always
+ // pre-populated?
+ gasm_->StoreToObject(
+ ObjectAccess(MachineType::TaggedPointer(), kFullWriteBarrier),
+ instance_node, wasm::ObjectAccess::ToTagged(Tuple2::kValue1Offset),
+ GetInstance());
+ gasm_->Goto(&load_target);
+ }
+
+ gasm_->Bind(&load_target);
+ Node* target = BuildLoadCallTargetFromExportedFunctionData(function_data);
+ Node* is_null_target = gasm_->WordEqual(target, gasm_->IntPtrConstant(0));
+ gasm_->GotoIfNot(is_null_target, &end_label, target);
{
- // Call to a WasmJSFunction. The call target is
- // function_data->wasm_to_js_wrapper_code()->instruction_start().
- // The instance_node is the pair
- // (current WasmInstanceObject, function_data->callable()).
- gasm_->Bind(&js_label);
-
+ // Compute the call target from the (on-heap) wrapper code. The cached
+ // target can only be null for WasmJSFunctions.
Node* wrapper_code = gasm_->LoadFromObject(
MachineType::TaggedPointer(), function_data,
wasm::ObjectAccess::ToTagged(
@@ -3226,23 +3213,12 @@ Node* WasmGraphBuilder::BuildCallRef(uint32_t sig_index, Vector<Node*> args,
Node* call_target = gasm_->IntAdd(
wrapper_code,
gasm_->IntPtrConstant(wasm::ObjectAccess::ToTagged(Code::kHeaderSize)));
-
- Node* callable = gasm_->LoadFromObject(
- MachineType::TaggedPointer(), function_data,
- wasm::ObjectAccess::ToTagged(WasmJSFunctionData::kCallableOffset));
- // TODO(manoskouk): Find an elegant way to avoid allocating this pair for
- // every call.
- Node* function_instance_node =
- gasm_->CallBuiltin(Builtins::kWasmAllocatePair, Operator::kEliminatable,
- GetInstance(), callable);
-
- gasm_->Goto(&end_label, call_target, function_instance_node);
+ gasm_->Goto(&end_label, call_target);
}
gasm_->Bind(&end_label);
args[0] = end_label.PhiAt(0);
- Node* instance_node = end_label.PhiAt(1);
const UseRetpoline use_retpoline =
untrusted_code_mitigations_ ? kRetpoline : kNoRetpoline;
@@ -3345,6 +3321,25 @@ Node* WasmGraphBuilder::BuildChangeIntPtrToInt64(Node* value) {
: value;
}
+Node* WasmGraphBuilder::BuildChangeUint32ToUintPtr(Node* node) {
+ if (mcgraph()->machine()->Is32()) return node;
+ // Fold instances of ChangeUint32ToUint64(IntConstant) directly.
+ Uint32Matcher matcher(node);
+ if (matcher.HasResolvedValue()) {
+ uintptr_t value = matcher.ResolvedValue();
+ return mcgraph()->IntPtrConstant(bit_cast<intptr_t>(value));
+ }
+ return gasm_->ChangeUint32ToUint64(node);
+}
+
+Node* WasmGraphBuilder::BuildSmiShiftBitsConstant() {
+ return gasm_->IntPtrConstant(kSmiShiftSize + kSmiTagSize);
+}
+
+Node* WasmGraphBuilder::BuildSmiShiftBitsConstant32() {
+ return Int32Constant(kSmiShiftSize + kSmiTagSize);
+}
+
Node* WasmGraphBuilder::BuildChangeInt32ToSmi(Node* value) {
// With pointer compression, only the lower 32 bits are used.
return COMPRESS_POINTERS_BOOL
@@ -3356,31 +3351,22 @@ Node* WasmGraphBuilder::BuildChangeInt32ToSmi(Node* value) {
Node* WasmGraphBuilder::BuildChangeUint31ToSmi(Node* value) {
return COMPRESS_POINTERS_BOOL
? gasm_->Word32Shl(value, BuildSmiShiftBitsConstant32())
- : gasm_->WordShl(Uint32ToUintptr(value),
+ : gasm_->WordShl(BuildChangeUint32ToUintPtr(value),
BuildSmiShiftBitsConstant());
}
-Node* WasmGraphBuilder::BuildSmiShiftBitsConstant() {
- return gasm_->IntPtrConstant(kSmiShiftSize + kSmiTagSize);
-}
-
-Node* WasmGraphBuilder::BuildSmiShiftBitsConstant32() {
- return Int32Constant(kSmiShiftSize + kSmiTagSize);
-}
-
Node* WasmGraphBuilder::BuildChangeSmiToInt32(Node* value) {
return COMPRESS_POINTERS_BOOL
- ? gasm_->Word32Sar(gasm_->TruncateInt64ToInt32(value),
- BuildSmiShiftBitsConstant32())
- : BuildTruncateIntPtrToInt32(BuildChangeSmiToIntPtr(value));
+ ? gasm_->Word32Sar(value, BuildSmiShiftBitsConstant32())
+ : BuildTruncateIntPtrToInt32(
+ gasm_->WordSar(value, BuildSmiShiftBitsConstant()));
}
Node* WasmGraphBuilder::BuildChangeSmiToIntPtr(Node* value) {
- if (COMPRESS_POINTERS_BOOL) {
- value = BuildChangeSmiToInt32(value);
- return BuildChangeInt32ToIntPtr(value);
- }
- return gasm_->WordSar(value, BuildSmiShiftBitsConstant());
+ return COMPRESS_POINTERS_BOOL
+ ? BuildChangeInt32ToIntPtr(
+ gasm_->Word32Sar(value, BuildSmiShiftBitsConstant32()))
+ : gasm_->WordSar(value, BuildSmiShiftBitsConstant());
}
Node* WasmGraphBuilder::BuildConvertUint32ToSmiWithSaturation(Node* value,
@@ -3565,8 +3551,8 @@ void WasmGraphBuilder::GetBaseAndOffsetForImportedMutableExternRefGlobal(
// From the index, calculate the actual offset in the FixedArray. This
// is kHeaderSize + (index * kTaggedSize). kHeaderSize can be acquired with
// wasm::ObjectAccess::ElementOffsetInTaggedFixedArray(0).
- Node* index_times_tagged_size =
- gasm_->IntMul(Uint32ToUintptr(index), Int32Constant(kTaggedSize));
+ Node* index_times_tagged_size = gasm_->IntMul(
+ BuildChangeUint32ToUintPtr(index), Int32Constant(kTaggedSize));
*offset = gasm_->IntAdd(
index_times_tagged_size,
mcgraph()->IntPtrConstant(
@@ -3763,7 +3749,7 @@ Node* WasmGraphBuilder::BoundsCheckMem(uint8_t access_size, Node* index,
wasm::WasmCodePosition position,
EnforceBoundsCheck enforce_check) {
DCHECK_LE(1, access_size);
- if (!env_->module->is_memory64) index = Uint32ToUintptr(index);
+ if (!env_->module->is_memory64) index = BuildChangeUint32ToUintPtr(index);
if (!FLAG_wasm_bounds_checks) return index;
if (use_trap_handler() && enforce_check == kCanOmitBoundsCheck) {
@@ -4317,7 +4303,7 @@ Node* WasmGraphBuilder::BuildAsmjsLoadMem(MachineType type, Node* index) {
// Note that we check against the memory size ignoring the size of the
// stored value, which is conservative if misaligned. Technically, asm.js
// should never have misaligned accesses.
- index = Uint32ToUintptr(index);
+ index = BuildChangeUint32ToUintPtr(index);
Diamond bounds_check(graph(), mcgraph()->common(),
gasm_->UintLessThan(index, mem_size), BranchHint::kTrue);
bounds_check.Chain(control());
@@ -4356,17 +4342,6 @@ Node* WasmGraphBuilder::BuildAsmjsLoadMem(MachineType type, Node* index) {
return bounds_check.Phi(type.representation(), load, oob_value);
}
-Node* WasmGraphBuilder::Uint32ToUintptr(Node* node) {
- if (mcgraph()->machine()->Is32()) return node;
- // Fold instances of ChangeUint32ToUint64(IntConstant) directly.
- Uint32Matcher matcher(node);
- if (matcher.HasResolvedValue()) {
- uintptr_t value = matcher.ResolvedValue();
- return mcgraph()->IntPtrConstant(bit_cast<intptr_t>(value));
- }
- return gasm_->ChangeUint32ToUint64(node);
-}
-
Node* WasmGraphBuilder::BuildAsmjsStoreMem(MachineType type, Node* index,
Node* val) {
DCHECK_NOT_NULL(instance_cache_);
@@ -4391,7 +4366,7 @@ Node* WasmGraphBuilder::BuildAsmjsStoreMem(MachineType type, Node* index,
index = gasm_->Word32And(index, mem_mask);
}
- index = Uint32ToUintptr(index);
+ index = BuildChangeUint32ToUintPtr(index);
const Operator* store_op = mcgraph()->machine()->Store(StoreRepresentation(
type.representation(), WriteBarrierKind::kNoWriteBarrier));
Node* store = graph()->NewNode(store_op, mem_start, index, val, effect(),
@@ -5335,12 +5310,7 @@ Node* WasmGraphBuilder::AtomicOp(wasm::WasmOpcode opcode, Node* const* inputs,
case wasm::kExprI64AtomicWait:
return {kSpecial, MachineType::Int64(), OperatorByType{nullptr}};
default:
-#if V8_HAS_CXX14_CONSTEXPR
UNREACHABLE();
-#else
- // Return something for older GCC.
- return {kSpecial, MachineType::Int64(), OperatorByType{nullptr}};
-#endif
}
}
};
@@ -5572,6 +5542,16 @@ Node* WasmGraphBuilder::StructNewWithRtt(uint32_t struct_index,
for (uint32_t i = 0; i < type->field_count(); i++) {
gasm_->StoreStructField(s, type, i, fields[i]);
}
+ if (type->field_count() == 0) {
+ static_assert(Heap::kMinObjectSizeInTaggedWords == 2 &&
+ WasmStruct::kHeaderSize == kTaggedSize,
+ "empty structs need exactly one padding field");
+ wasm::ValueType fake_type = wasm::kWasmAnyRef;
+ Node* padding_offset = gasm_->IntPtrConstant(
+ wasm::ObjectAccess::ToTagged(WasmStruct::kHeaderSize));
+ gasm_->StoreToObject(ObjectAccessForGCStores(fake_type), s, padding_offset,
+ RefNull());
+ }
return s;
}
@@ -6560,7 +6540,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
Node* BuildCallAllocateJSArray(Node* array_length, Node* context) {
// Since we don't check that args will fit in an array,
// we make sure this is true based on statically known limits.
- STATIC_ASSERT(wasm::kV8MaxWasmFunctionMultiReturns <=
+ STATIC_ASSERT(wasm::kV8MaxWasmFunctionReturns <=
JSArray::kInitialMaxFastElementArray);
return gasm_->CallBuiltin(Builtins::kWasmAllocateJSArray,
Operator::kEliminatable, array_length, context);
@@ -6588,15 +6568,8 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
wasm::kNoCodePosition, function_index, kCallContinues);
} else {
// Call to a wasm function defined in this module.
- // The call target is the jump table slot for that function.
- Node* jump_table_start =
- LOAD_INSTANCE_FIELD(JumpTableStart, MachineType::Pointer());
- Node* jump_table_offset =
- BuildLoadJumpTableOffsetFromExportedFunctionData(function_data);
- Node* jump_table_slot =
- gasm_->IntAdd(jump_table_start, jump_table_offset);
- args[0] = jump_table_slot;
-
+ // The (cached) call target is the jump table slot for that function.
+ args[0] = BuildLoadCallTargetFromExportedFunctionData(function_data);
BuildWasmCall(sig_, VectorOf(args), VectorOf(rets),
wasm::kNoCodePosition, nullptr, kNoRetpoline,
frame_state);
@@ -6670,9 +6643,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
case wasm::kF64: {
auto done = gasm_->MakeLabel();
gasm_->GotoIf(IsSmi(input), &done);
- Node* map = gasm_->LoadFromObject(
- MachineType::TaggedPointer(), input,
- wasm::ObjectAccess::ToTagged(HeapObject::kMapOffset));
+ Node* map = gasm_->LoadMap(input);
Node* heap_number_map = LOAD_ROOT(HeapNumberMap, heap_number_map);
Node* is_heap_number = gasm_->WordEqual(heap_number_map, map);
gasm_->GotoIf(is_heap_number, &done);
@@ -7030,6 +7001,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
BuildModifyThreadInWasmFlag(true);
+ Node* old_effect = effect();
Node* exception_branch = graph()->NewNode(
mcgraph()->common()->Branch(BranchHint::kTrue),
gasm_->WordEqual(return_value, mcgraph()->IntPtrConstant(0)),
@@ -7046,10 +7018,9 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
gasm_->Call(call_descriptor, call_target, return_value);
TerminateThrow(effect(), control());
- SetEffectControl(
- return_value,
- graph()->NewNode(mcgraph()->common()->IfTrue(), exception_branch));
- DCHECK_LT(sig_->return_count(), wasm::kV8MaxWasmFunctionMultiReturns);
+ SetEffectControl(old_effect, graph()->NewNode(mcgraph()->common()->IfTrue(),
+ exception_branch));
+ DCHECK_LT(sig_->return_count(), wasm::kV8MaxWasmFunctionReturns);
size_t return_count = sig_->return_count();
if (return_count == 0) {
Return(Int32Constant(0));
@@ -7090,9 +7061,12 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
// Load the original callable from the closure.
Node* func_data = gasm_->LoadFunctionDataFromJSFunction(closure);
- Node* callable = gasm_->LoadFromObject(
+ Node* pair = gasm_->LoadFromObject(
MachineType::AnyTagged(), func_data,
- wasm::ObjectAccess::ToTagged(WasmJSFunctionData::kCallableOffset));
+ wasm::ObjectAccess::ToTagged(WasmJSFunctionData::kRefOffset));
+ Node* callable = gasm_->LoadFromObject(
+ MachineType::AnyTagged(), pair,
+ wasm::ObjectAccess::ToTagged(Tuple2::kValue2Offset));
// Call the underlying closure.
base::SmallVector<Node*, 16> args(wasm_count + 7);
@@ -7478,7 +7452,7 @@ wasm::WasmCompilationResult CompileWasmMathIntrinsic(
wasm::CompilationEnv env(
nullptr, wasm::UseTrapHandler::kNoTrapHandler,
wasm::RuntimeExceptionSupport::kNoRuntimeExceptionSupport,
- wasm::WasmFeatures::All(), wasm::LowerSimd::kNoLowerSimd);
+ wasm::WasmFeatures::All());
WasmGraphBuilder builder(&env, mcgraph->zone(), mcgraph, sig,
source_positions);
@@ -7644,7 +7618,7 @@ MaybeHandle<Code> CompileWasmToJSWrapper(Isolate* isolate,
MachineGraph* mcgraph = zone->New<MachineGraph>(graph, common, machine);
WasmWrapperGraphBuilder builder(zone.get(), mcgraph, sig, nullptr, nullptr,
- nullptr, StubCallMode::kCallWasmRuntimeStub,
+ nullptr, StubCallMode::kCallBuiltinPointer,
wasm::WasmFeatures::FromIsolate(isolate));
builder.BuildWasmToJSWrapper(kind, expected_arity);
@@ -7792,7 +7766,7 @@ bool BuildGraphForWasmFunction(AccountingAllocator* allocator,
source_positions);
wasm::VoidResult graph_construction_result = wasm::BuildTFGraph(
allocator, env->enabled_features, env->module, &builder, detected,
- func_body, loop_infos, node_origins);
+ func_body, loop_infos, node_origins, func_index);
if (graph_construction_result.failed()) {
if (FLAG_trace_wasm_compiler) {
StdoutStream{} << "Compilation failed: "
@@ -7802,49 +7776,8 @@ bool BuildGraphForWasmFunction(AccountingAllocator* allocator,
return false;
}
- // Lower SIMD first, i64x2 nodes will be lowered to int64 nodes, then int64
- // lowering will take care of them.
auto sig = CreateMachineSignature(mcgraph->zone(), func_body.sig,
WasmGraphBuilder::kCalledFromWasm);
- if (builder.has_simd() &&
- (!CpuFeatures::SupportsWasmSimd128() || env->lower_simd)) {
- SimplifiedOperatorBuilder simplified(mcgraph->zone());
- SimdScalarLowering(mcgraph, &simplified, sig).LowerGraph();
-
- // SimdScalarLowering changes all v128 to 4 i32, so update the machine
- // signature for the call to LowerInt64.
- size_t return_count = 0;
- size_t param_count = 0;
- for (auto ret : sig->returns()) {
- return_count += ret == MachineRepresentation::kSimd128 ? 4 : 1;
- }
- for (auto param : sig->parameters()) {
- param_count += param == MachineRepresentation::kSimd128 ? 4 : 1;
- }
-
- Signature<MachineRepresentation>::Builder sig_builder(
- mcgraph->zone(), return_count, param_count);
- for (auto ret : sig->returns()) {
- if (ret == MachineRepresentation::kSimd128) {
- for (int i = 0; i < 4; ++i) {
- sig_builder.AddReturn(MachineRepresentation::kWord32);
- }
- } else {
- sig_builder.AddReturn(ret);
- }
- }
- for (auto param : sig->parameters()) {
- if (param == MachineRepresentation::kSimd128) {
- for (int i = 0; i < 4; ++i) {
- sig_builder.AddParam(MachineRepresentation::kWord32);
- }
- } else {
- sig_builder.AddParam(param);
- }
- }
- sig = sig_builder.Build();
- }
-
builder.LowerInt64(sig);
if (func_index >= FLAG_trace_wasm_ast_start &&
@@ -7919,8 +7852,7 @@ wasm::WasmCompilationResult ExecuteTurbofanWasmCompilation(
call_descriptor = GetI32WasmCallDescriptor(&zone, call_descriptor);
}
- if (ContainsSimd(func_body.sig) &&
- (!CpuFeatures::SupportsWasmSimd128() || env->lower_simd)) {
+ if (ContainsSimd(func_body.sig) && !CpuFeatures::SupportsWasmSimd128()) {
call_descriptor = GetI32WasmCallDescriptorForSimd(&zone, call_descriptor);
}
diff --git a/deps/v8/src/compiler/wasm-compiler.h b/deps/v8/src/compiler/wasm-compiler.h
index a77e76a05d..bb8f5f5efc 100644
--- a/deps/v8/src/compiler/wasm-compiler.h
+++ b/deps/v8/src/compiler/wasm-compiler.h
@@ -281,6 +281,7 @@ class WasmGraphBuilder {
//-----------------------------------------------------------------------
Node* BranchNoHint(Node* cond, Node** true_node, Node** false_node);
Node* BranchExpectFalse(Node* cond, Node** true_node, Node** false_node);
+ Node* BranchExpectTrue(Node* cond, Node** true_node, Node** false_node);
void TrapIfTrue(wasm::TrapReason reason, Node* cond,
wasm::WasmCodePosition position);
@@ -530,7 +531,6 @@ class WasmGraphBuilder {
Node* CheckBoundsAndAlignment(int8_t access_size, Node* index,
uint64_t offset, wasm::WasmCodePosition);
- Node* Uint32ToUintptr(Node*);
const Operator* GetSafeLoadOperator(int offset, wasm::ValueType type);
const Operator* GetSafeStoreOperator(int offset, wasm::ValueType type);
Node* BuildChangeEndiannessStore(Node* node, MachineRepresentation rep,
@@ -631,6 +631,7 @@ class WasmGraphBuilder {
Node* BuildTruncateIntPtrToInt32(Node* value);
Node* BuildChangeInt32ToIntPtr(Node* value);
Node* BuildChangeIntPtrToInt64(Node* value);
+ Node* BuildChangeUint32ToUintPtr(Node*);
Node* BuildChangeInt32ToSmi(Node* value);
Node* BuildChangeUint31ToSmi(Node* value);
Node* BuildSmiShiftBitsConstant();
@@ -700,7 +701,7 @@ class WasmGraphBuilder {
Node* BuildMultiReturnFixedArrayFromIterable(const wasm::FunctionSig* sig,
Node* iterable, Node* context);
- Node* BuildLoadJumpTableOffsetFromExportedFunctionData(Node* function_data);
+ Node* BuildLoadCallTargetFromExportedFunctionData(Node* function_data);
//-----------------------------------------------------------------------
// Operations involving the CEntry, a dependency we want to remove
diff --git a/deps/v8/src/d8/async-hooks-wrapper.cc b/deps/v8/src/d8/async-hooks-wrapper.cc
index 2538e78acb..84191b9815 100644
--- a/deps/v8/src/d8/async-hooks-wrapper.cc
+++ b/deps/v8/src/d8/async-hooks-wrapper.cc
@@ -47,8 +47,7 @@ static AsyncHooksWrap* UnwrapHook(
AsyncHooks* hooks = PerIsolateData::Get(isolate)->GetAsyncHooks();
if (!hooks->async_hook_ctor.Get(isolate)->HasInstance(hook)) {
- isolate->ThrowException(String::NewFromUtf8Literal(
- isolate, "Invalid 'this' passed instead of AsyncHooks instance"));
+ isolate->ThrowError("Invalid 'this' passed instead of AsyncHooks instance");
return nullptr;
}
@@ -87,8 +86,7 @@ Local<Object> AsyncHooks::CreateHook(
Local<Context> currentContext = isolate->GetCurrentContext();
if (args.Length() != 1 || !args[0]->IsObject()) {
- isolate->ThrowException(String::NewFromUtf8Literal(
- isolate, "Invalid arguments passed to createHook"));
+ isolate->ThrowError("Invalid arguments passed to createHook");
return Local<Object>();
}
diff --git a/deps/v8/src/d8/d8-console.cc b/deps/v8/src/d8/d8-console.cc
index 7f0904e343..fc76bab7ab 100644
--- a/deps/v8/src/d8/d8-console.cc
+++ b/deps/v8/src/d8/d8-console.cc
@@ -19,7 +19,7 @@ void WriteToFile(const char* prefix, FILE* file, Isolate* isolate,
Local<Value> arg = args[i];
Local<String> str_obj;
- if (arg->IsSymbol()) arg = Local<Symbol>::Cast(arg)->Description();
+ if (arg->IsSymbol()) arg = Local<Symbol>::Cast(arg)->Description(isolate);
if (!arg->ToString(isolate->GetCurrentContext()).ToLocal(&str_obj)) return;
v8::String::Utf8Value str(isolate, str_obj);
@@ -43,8 +43,7 @@ void D8Console::Assert(const debug::ConsoleCallArguments& args,
// false-ish.
if (args.Length() > 0 && args[0]->BooleanValue(isolate_)) return;
WriteToFile("console.assert", stdout, isolate_, args);
- isolate_->ThrowException(v8::Exception::Error(
- v8::String::NewFromUtf8Literal(isolate_, "console.assert failed")));
+ isolate_->ThrowError("console.assert failed");
}
void D8Console::Log(const debug::ConsoleCallArguments& args,
diff --git a/deps/v8/src/d8/d8-posix.cc b/deps/v8/src/d8/d8-posix.cc
index 047b62ef2c..fa30b9153d 100644
--- a/deps/v8/src/d8/d8-posix.cc
+++ b/deps/v8/src/d8/d8-posix.cc
@@ -159,8 +159,8 @@ class ExecArgs {
bool Init(Isolate* isolate, Local<Value> arg0, Local<Array> command_args) {
String::Utf8Value prog(isolate, arg0);
if (*prog == nullptr) {
- isolate->ThrowException(String::NewFromUtf8Literal(
- isolate, "os.system(): String conversion of program name failed"));
+ isolate->ThrowError(
+ "os.system(): String conversion of program name failed");
return false;
}
int len = prog.length() + 3;
@@ -176,8 +176,8 @@ class ExecArgs {
String::Utf8Value utf8_arg(isolate, arg);
if (*utf8_arg == nullptr) {
exec_args_[i] = nullptr; // Consistent state for destructor.
- isolate->ThrowException(String::NewFromUtf8Literal(
- isolate, "os.system(): String conversion of argument failed."));
+ isolate->ThrowError(
+ "os.system(): String conversion of argument failed.");
return false;
}
int len = utf8_arg.length() + 1;
@@ -214,8 +214,7 @@ static bool GetTimeouts(const v8::FunctionCallbackInfo<v8::Value>& args,
->Int32Value(args.GetIsolate()->GetCurrentContext())
.FromJust();
} else {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "system: Argument 4 must be a number"));
+ args.GetIsolate()->ThrowError("system: Argument 4 must be a number");
return false;
}
}
@@ -225,14 +224,19 @@ static bool GetTimeouts(const v8::FunctionCallbackInfo<v8::Value>& args,
->Int32Value(args.GetIsolate()->GetCurrentContext())
.FromJust();
} else {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "system: Argument 3 must be a number"));
+ args.GetIsolate()->ThrowError("system: Argument 3 must be a number");
return false;
}
}
return true;
}
+namespace {
+v8::Local<v8::String> v8_strerror(v8::Isolate* isolate, int err) {
+ return v8::String::NewFromUtf8(isolate, strerror(err)).ToLocalChecked();
+}
+} // namespace
+
static const int kReadFD = 0;
static const int kWriteFD = 1;
@@ -267,8 +271,7 @@ static bool ChildLaunchedOK(Isolate* isolate, int* exec_error_fds) {
bytes_read = read(exec_error_fds[kReadFD], &err, sizeof(err));
} while (bytes_read == -1 && errno == EINTR);
if (bytes_read != 0) {
- isolate->ThrowException(
- String::NewFromUtf8(isolate, strerror(err)).ToLocalChecked());
+ isolate->ThrowError(v8_strerror(isolate, err));
return false;
}
return true;
@@ -286,8 +289,7 @@ static Local<Value> GetStdout(Isolate* isolate, int child_fd,
char buffer[kStdoutReadBufferSize];
if (fcntl(child_fd, F_SETFL, O_NONBLOCK) != 0) {
- return isolate->ThrowException(
- String::NewFromUtf8(isolate, strerror(errno)).ToLocalChecked());
+ return isolate->ThrowError(v8_strerror(isolate, errno));
}
int bytes_read;
@@ -298,8 +300,7 @@ static Local<Value> GetStdout(Isolate* isolate, int child_fd,
if (errno == EAGAIN) {
if (!WaitOnFD(child_fd, read_timeout, total_timeout, start_time) ||
(TimeIsOut(start_time, total_timeout))) {
- return isolate->ThrowException(String::NewFromUtf8Literal(
- isolate, "Timed out waiting for output"));
+ return isolate->ThrowError("Timed out waiting for output");
}
continue;
} else if (errno == EINTR) {
@@ -357,8 +358,7 @@ static bool WaitForChild(Isolate* isolate, int pid,
if (useconds < 1000000) useconds <<= 1;
if ((read_timeout != -1 && useconds / 1000 > read_timeout) ||
(TimeIsOut(start_time, total_timeout))) {
- isolate->ThrowException(String::NewFromUtf8Literal(
- isolate, "Timed out waiting for process to terminate"));
+ isolate->ThrowError("Timed out waiting for process to terminate");
kill(pid, SIGINT);
return false;
}
@@ -367,16 +367,14 @@ static bool WaitForChild(Isolate* isolate, int pid,
char message[999];
snprintf(message, sizeof(message), "Child killed by signal %d",
child_info.si_status);
- isolate->ThrowException(
- String::NewFromUtf8(isolate, message).ToLocalChecked());
+ isolate->ThrowError(message);
return false;
}
if (child_info.si_code == CLD_EXITED && child_info.si_status != 0) {
char message[999];
snprintf(message, sizeof(message), "Child exited with status %d",
child_info.si_status);
- isolate->ThrowException(
- String::NewFromUtf8(isolate, message).ToLocalChecked());
+ isolate->ThrowError(message);
return false;
}
@@ -389,8 +387,7 @@ static bool WaitForChild(Isolate* isolate, int pid,
char message[999];
snprintf(message, sizeof(message), "Child killed by signal %d",
WTERMSIG(child_status));
- isolate->ThrowException(
- String::NewFromUtf8(isolate, message).ToLocalChecked());
+ isolate->ThrowError(message);
return false;
}
if (WEXITSTATUS(child_status) != 0) {
@@ -398,8 +395,7 @@ static bool WaitForChild(Isolate* isolate, int pid,
int exit_status = WEXITSTATUS(child_status);
snprintf(message, sizeof(message), "Child exited with status %d",
exit_status);
- isolate->ThrowException(
- String::NewFromUtf8(isolate, message).ToLocalChecked());
+ isolate->ThrowError(message);
return false;
}
@@ -419,8 +415,7 @@ void Shell::System(const v8::FunctionCallbackInfo<v8::Value>& args) {
Local<Array> command_args;
if (args.Length() > 1) {
if (!args[1]->IsArray()) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "system: Argument 2 must be an array"));
+ args.GetIsolate()->ThrowError("system: Argument 2 must be an array");
return;
}
command_args = args[1].As<Array>();
@@ -428,13 +423,11 @@ void Shell::System(const v8::FunctionCallbackInfo<v8::Value>& args) {
command_args = Array::New(args.GetIsolate(), 0);
}
if (command_args->Length() > ExecArgs::kMaxArgs) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "Too many arguments to system()"));
+ args.GetIsolate()->ThrowError("Too many arguments to system()");
return;
}
if (args.Length() < 1) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "Too few arguments to system()"));
+ args.GetIsolate()->ThrowError("Too few arguments to system()");
return;
}
@@ -449,13 +442,11 @@ void Shell::System(const v8::FunctionCallbackInfo<v8::Value>& args) {
int stdout_fds[2];
if (pipe(exec_error_fds) != 0) {
- args.GetIsolate()->ThrowException(
- String::NewFromUtf8Literal(args.GetIsolate(), "pipe syscall failed."));
+ args.GetIsolate()->ThrowError("pipe syscall failed.");
return;
}
if (pipe(stdout_fds) != 0) {
- args.GetIsolate()->ThrowException(
- String::NewFromUtf8Literal(args.GetIsolate(), "pipe syscall failed."));
+ args.GetIsolate()->ThrowError("pipe syscall failed.");
return;
}
@@ -493,29 +484,24 @@ void Shell::System(const v8::FunctionCallbackInfo<v8::Value>& args) {
void Shell::ChangeDirectory(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 1) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "chdir() takes one argument"));
+ args.GetIsolate()->ThrowError("chdir() takes one argument");
return;
}
String::Utf8Value directory(args.GetIsolate(), args[0]);
if (*directory == nullptr) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(),
- "os.chdir(): String conversion of argument failed."));
+ args.GetIsolate()->ThrowError(
+ "os.chdir(): String conversion of argument failed.");
return;
}
if (chdir(*directory) != 0) {
- args.GetIsolate()->ThrowException(
- String::NewFromUtf8(args.GetIsolate(), strerror(errno))
- .ToLocalChecked());
+ args.GetIsolate()->ThrowError(v8_strerror(args.GetIsolate(), errno));
return;
}
}
void Shell::SetUMask(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 1) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "umask() takes one argument"));
+ args.GetIsolate()->ThrowError("umask() takes one argument");
return;
}
if (args[0]->IsNumber()) {
@@ -524,8 +510,7 @@ void Shell::SetUMask(const v8::FunctionCallbackInfo<v8::Value>& args) {
args.GetReturnValue().Set(previous);
return;
} else {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "umask() argument must be numeric"));
+ args.GetIsolate()->ThrowError("umask() argument must be numeric");
return;
}
}
@@ -534,13 +519,11 @@ static bool CheckItsADirectory(Isolate* isolate, char* directory) {
struct stat stat_buf;
int stat_result = stat(directory, &stat_buf);
if (stat_result != 0) {
- isolate->ThrowException(
- String::NewFromUtf8(isolate, strerror(errno)).ToLocalChecked());
+ isolate->ThrowError(v8_strerror(isolate, errno));
return false;
}
if ((stat_buf.st_mode & S_IFDIR) != 0) return true;
- isolate->ThrowException(
- String::NewFromUtf8(isolate, strerror(EEXIST)).ToLocalChecked());
+ isolate->ThrowError(v8_strerror(isolate, EEXIST));
return false;
}
@@ -554,8 +537,7 @@ static bool mkdirp(Isolate* isolate, char* directory, mode_t mask) {
} else if (errno == ENOENT) { // Intermediate path element is missing.
char* last_slash = strrchr(directory, '/');
if (last_slash == nullptr) {
- isolate->ThrowException(
- String::NewFromUtf8(isolate, strerror(errno)).ToLocalChecked());
+ isolate->ThrowError(v8_strerror(isolate, errno));
return false;
}
*last_slash = 0;
@@ -566,12 +548,10 @@ static bool mkdirp(Isolate* isolate, char* directory, mode_t mask) {
if (errno == EEXIST) {
return CheckItsADirectory(isolate, directory);
}
- isolate->ThrowException(
- String::NewFromUtf8(isolate, strerror(errno)).ToLocalChecked());
+ isolate->ThrowError(v8_strerror(isolate, errno));
return false;
} else {
- isolate->ThrowException(
- String::NewFromUtf8(isolate, strerror(errno)).ToLocalChecked());
+ isolate->ThrowError(v8_strerror(isolate, errno));
return false;
}
}
@@ -584,20 +564,17 @@ void Shell::MakeDirectory(const v8::FunctionCallbackInfo<v8::Value>& args) {
->Int32Value(args.GetIsolate()->GetCurrentContext())
.FromJust();
} else {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "mkdirp() second argument must be numeric"));
+ args.GetIsolate()->ThrowError("mkdirp() second argument must be numeric");
return;
}
} else if (args.Length() != 1) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "mkdirp() takes one or two arguments"));
+ args.GetIsolate()->ThrowError("mkdirp() takes one or two arguments");
return;
}
String::Utf8Value directory(args.GetIsolate(), args[0]);
if (*directory == nullptr) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(),
- "os.mkdirp(): String conversion of argument failed."));
+ args.GetIsolate()->ThrowError(
+ "os.mkdirp(): String conversion of argument failed.");
return;
}
mkdirp(args.GetIsolate(), *directory, mask);
@@ -605,15 +582,13 @@ void Shell::MakeDirectory(const v8::FunctionCallbackInfo<v8::Value>& args) {
void Shell::RemoveDirectory(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 1) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "rmdir() takes one or two arguments"));
+ args.GetIsolate()->ThrowError("rmdir() takes one or two arguments");
return;
}
String::Utf8Value directory(args.GetIsolate(), args[0]);
if (*directory == nullptr) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(),
- "os.rmdir(): String conversion of argument failed."));
+ args.GetIsolate()->ThrowError(
+ "os.rmdir(): String conversion of argument failed.");
return;
}
rmdir(*directory);
@@ -621,22 +596,19 @@ void Shell::RemoveDirectory(const v8::FunctionCallbackInfo<v8::Value>& args) {
void Shell::SetEnvironment(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 2) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "setenv() takes two arguments"));
+ args.GetIsolate()->ThrowError("setenv() takes two arguments");
return;
}
String::Utf8Value var(args.GetIsolate(), args[0]);
String::Utf8Value value(args.GetIsolate(), args[1]);
if (*var == nullptr) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(),
- "os.setenv(): String conversion of variable name failed."));
+ args.GetIsolate()->ThrowError(
+ "os.setenv(): String conversion of variable name failed.");
return;
}
if (*value == nullptr) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(),
- "os.setenv(): String conversion of variable contents failed."));
+ args.GetIsolate()->ThrowError(
+ "os.setenv(): String conversion of variable contents failed.");
return;
}
setenv(*var, *value, 1);
@@ -644,15 +616,13 @@ void Shell::SetEnvironment(const v8::FunctionCallbackInfo<v8::Value>& args) {
void Shell::UnsetEnvironment(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 1) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(), "unsetenv() takes one argument"));
+ args.GetIsolate()->ThrowError("unsetenv() takes one argument");
return;
}
String::Utf8Value var(args.GetIsolate(), args[0]);
if (*var == nullptr) {
- args.GetIsolate()->ThrowException(String::NewFromUtf8Literal(
- args.GetIsolate(),
- "os.setenv(): String conversion of variable name failed."));
+ args.GetIsolate()->ThrowError(
+ "os.setenv(): String conversion of variable name failed.");
return;
}
unsetenv(*var);
diff --git a/deps/v8/src/d8/d8-test.cc b/deps/v8/src/d8/d8-test.cc
index e5eb5e419b..741b838b76 100644
--- a/deps/v8/src/d8/d8-test.cc
+++ b/deps/v8/src/d8/d8-test.cc
@@ -21,16 +21,29 @@
namespace v8 {
namespace {
+
+#define CHECK_SELF_OR_FALLBACK(return_value) \
+ if (!self) { \
+ options.fallback = 1; \
+ return return_value; \
+ }
+
+#define CHECK_SELF_OR_THROW() \
+ if (!self) { \
+ args.GetIsolate()->ThrowError( \
+ "This method is not defined on objects inheriting from FastCAPI."); \
+ return; \
+ }
+
class FastCApiObject {
public:
- static double AddAllFastCallback(ApiObject receiver, bool should_fallback,
+ static double AddAllFastCallback(Local<Object> receiver, bool should_fallback,
int32_t arg_i32, uint32_t arg_u32,
int64_t arg_i64, uint64_t arg_u64,
float arg_f32, double arg_f64,
FastApiCallbackOptions& options) {
- Value* receiver_value = reinterpret_cast<Value*>(&receiver);
- CHECK(receiver_value->IsObject());
- FastCApiObject* self = UnwrapObject(Object::Cast(receiver_value));
+ FastCApiObject* self = UnwrapObject(receiver);
+ CHECK_SELF_OR_FALLBACK(0);
self->fast_call_count_++;
if (should_fallback) {
@@ -42,33 +55,42 @@ class FastCApiObject {
static_cast<double>(arg_i64) + static_cast<double>(arg_u64) +
static_cast<double>(arg_f32) + arg_f64;
}
+ static double AddAllFastCallback_5Args(Local<Object> receiver,
+ bool should_fallback, int32_t arg_i32,
+ uint32_t arg_u32, int64_t arg_i64,
+ uint64_t arg_u64, float arg_f32,
+ FastApiCallbackOptions& options) {
+ return AddAllFastCallback(receiver, should_fallback, arg_i32, arg_u32,
+ arg_i64, arg_u64, arg_f32, 0, options);
+ }
static void AddAllSlowCallback(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
- FastCApiObject* self = UnwrapObject(*args.This());
+ FastCApiObject* self = UnwrapObject(args.This());
+ CHECK_SELF_OR_THROW();
self->slow_call_count_++;
HandleScope handle_scope(isolate);
double sum = 0;
- if (args.Length() > 1) {
+ if (args.Length() > 1 && args[1]->IsNumber()) {
sum += args[1]->Int32Value(isolate->GetCurrentContext()).FromJust();
}
- if (args.Length() > 2) {
+ if (args.Length() > 2 && args[2]->IsNumber()) {
sum += args[2]->Uint32Value(isolate->GetCurrentContext()).FromJust();
}
- if (args.Length() > 3) {
+ if (args.Length() > 3 && args[3]->IsNumber()) {
sum += args[3]->IntegerValue(isolate->GetCurrentContext()).FromJust();
}
- if (args.Length() > 4) {
+ if (args.Length() > 4 && args[4]->IsNumber()) {
sum += args[4]->IntegerValue(isolate->GetCurrentContext()).FromJust();
}
- if (args.Length() > 5) {
+ if (args.Length() > 5 && args[5]->IsNumber()) {
sum += args[5]->NumberValue(isolate->GetCurrentContext()).FromJust();
} else {
sum += std::numeric_limits<double>::quiet_NaN();
}
- if (args.Length() > 6) {
+ if (args.Length() > 6 && args[6]->IsNumber()) {
sum += args[6]->NumberValue(isolate->GetCurrentContext()).FromJust();
} else {
sum += std::numeric_limits<double>::quiet_NaN();
@@ -77,12 +99,12 @@ class FastCApiObject {
args.GetReturnValue().Set(Number::New(isolate, sum));
}
- static int Add32BitIntFastCallback(ApiObject receiver, bool should_fallback,
- int32_t arg_i32, uint32_t arg_u32,
+ static int Add32BitIntFastCallback(v8::Local<v8::Object> receiver,
+ bool should_fallback, int32_t arg_i32,
+ uint32_t arg_u32,
FastApiCallbackOptions& options) {
- Value* receiver_value = reinterpret_cast<Value*>(&receiver);
- CHECK(receiver_value->IsObject());
- FastCApiObject* self = UnwrapObject(Object::Cast(receiver_value));
+ FastCApiObject* self = UnwrapObject(receiver);
+ CHECK_SELF_OR_FALLBACK(0);
self->fast_call_count_++;
if (should_fallback) {
@@ -95,40 +117,104 @@ class FastCApiObject {
static void Add32BitIntSlowCallback(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
- FastCApiObject* self = UnwrapObject(*args.This());
+ FastCApiObject* self = UnwrapObject(args.This());
+ CHECK_SELF_OR_THROW();
self->slow_call_count_++;
HandleScope handle_scope(isolate);
double sum = 0;
- if (args.Length() > 1) {
+ if (args.Length() > 1 && args[1]->IsNumber()) {
sum += args[1]->Int32Value(isolate->GetCurrentContext()).FromJust();
}
- if (args.Length() > 2) {
+ if (args.Length() > 2 && args[2]->IsNumber()) {
sum += args[2]->Uint32Value(isolate->GetCurrentContext()).FromJust();
}
args.GetReturnValue().Set(Number::New(isolate, sum));
}
+ static bool IsFastCApiObjectFastCallback(v8::Local<v8::Object> receiver,
+ bool should_fallback,
+ v8::Local<v8::Value> arg,
+ FastApiCallbackOptions& options) {
+ FastCApiObject* self = UnwrapObject(receiver);
+ CHECK_SELF_OR_FALLBACK(false);
+ self->fast_call_count_++;
+
+ if (should_fallback) {
+ options.fallback = 1;
+ return false;
+ }
+
+ if (!arg->IsObject()) {
+ return false;
+ }
+ Local<Object> object = arg.As<Object>();
+ if (!IsValidApiObject(object)) return false;
+
+ internal::Isolate* i_isolate =
+ internal::IsolateFromNeverReadOnlySpaceObject(
+ *reinterpret_cast<internal::Address*>(*object));
+ CHECK_NOT_NULL(i_isolate);
+ Isolate* isolate = reinterpret_cast<Isolate*>(i_isolate);
+ HandleScope handle_scope(isolate);
+ return PerIsolateData::Get(isolate)
+ ->GetTestApiObjectCtor()
+ ->IsLeafTemplateForApiObject(object);
+ }
+ static void IsFastCApiObjectSlowCallback(
+ const FunctionCallbackInfo<Value>& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ FastCApiObject* self = UnwrapObject(args.This());
+ CHECK_SELF_OR_THROW();
+ self->slow_call_count_++;
+
+ HandleScope handle_scope(isolate);
+
+ bool result = false;
+ if (args.Length() < 2) {
+ args.GetIsolate()->ThrowError(
+ "is_valid_api_object should be called with 2 arguments");
+ return;
+ }
+ if (args[1]->IsObject()) {
+ Local<Object> object = args[1].As<Object>();
+ if (!IsValidApiObject(object)) {
+ result = false;
+ } else {
+ result = PerIsolateData::Get(args.GetIsolate())
+ ->GetTestApiObjectCtor()
+ ->IsLeafTemplateForApiObject(object);
+ }
+ }
+
+ args.GetReturnValue().Set(Boolean::New(isolate, result));
+ }
+
static void FastCallCount(const FunctionCallbackInfo<Value>& args) {
- FastCApiObject* self = UnwrapObject(*args.This());
+ FastCApiObject* self = UnwrapObject(args.This());
+ CHECK_SELF_OR_THROW();
args.GetReturnValue().Set(
Number::New(args.GetIsolate(), self->fast_call_count()));
}
static void SlowCallCount(const FunctionCallbackInfo<Value>& args) {
- FastCApiObject* self = UnwrapObject(*args.This());
+ FastCApiObject* self = UnwrapObject(args.This());
+ CHECK_SELF_OR_THROW();
args.GetReturnValue().Set(
Number::New(args.GetIsolate(), self->slow_call_count()));
}
static void ResetCounts(const FunctionCallbackInfo<Value>& args) {
- FastCApiObject* self = UnwrapObject(*args.This());
+ FastCApiObject* self = UnwrapObject(args.This());
+ CHECK_SELF_OR_THROW();
self->reset_counts();
args.GetReturnValue().Set(Undefined(args.GetIsolate()));
}
- static void SupportsFPParams(const FunctionCallbackInfo<Value>& info) {
- FastCApiObject* self = UnwrapObject(*info.This());
- info.GetReturnValue().Set(self->supports_fp_params_);
+ static void SupportsFPParams(const FunctionCallbackInfo<Value>& args) {
+ FastCApiObject* self = UnwrapObject(args.This());
+ CHECK_SELF_OR_THROW();
+ args.GetReturnValue().Set(self->supports_fp_params_);
}
int fast_call_count() const { return fast_call_count_; }
@@ -141,12 +227,14 @@ class FastCApiObject {
static const int kV8WrapperObjectIndex = 1;
private:
- static FastCApiObject* UnwrapObject(Object* object) {
- i::Address addr = *reinterpret_cast<i::Address*>(object);
+ static bool IsValidApiObject(Local<Object> object) {
+ i::Address addr = *reinterpret_cast<i::Address*>(*object);
auto instance_type = i::Internals::GetInstanceType(addr);
- if (instance_type != i::Internals::kJSObjectType &&
- instance_type != i::Internals::kJSApiObjectType &&
- instance_type != i::Internals::kJSSpecialApiObjectType) {
+ return (instance_type == i::Internals::kJSApiObjectType ||
+ instance_type == i::Internals::kJSSpecialApiObjectType);
+ }
+ static FastCApiObject* UnwrapObject(Local<Object> object) {
+ if (!IsValidApiObject(object)) {
return nullptr;
}
FastCApiObject* wrapped = reinterpret_cast<FastCApiObject*>(
@@ -162,18 +250,18 @@ class FastCApiObject {
#endif // V8_ENABLE_FP_PARAMS_IN_C_LINKAGE
};
+#undef CHECK_SELF_OR_THROW
+#undef CHECK_SELF_OR_FALLBACK
+
// The object is statically initialized for simplicity, typically the embedder
// will take care of managing their C++ objects lifetime.
thread_local FastCApiObject kFastCApiObject;
} // namespace
-// TODO(mslekova): Rename the fast_c_api helper to FastCAPI.
-void CreateObject(const FunctionCallbackInfo<Value>& info) {
+void CreateFastCAPIObject(const FunctionCallbackInfo<Value>& info) {
if (!info.IsConstructCall()) {
- info.GetIsolate()->ThrowException(
- v8::Exception::Error(String::NewFromUtf8Literal(
- info.GetIsolate(),
- "FastCAPI helper must be constructed with new.")));
+ info.GetIsolate()->ThrowError(
+ "FastCAPI helper must be constructed with new.");
return;
}
Local<Object> api_object = info.Holder();
@@ -189,7 +277,8 @@ void CreateObject(const FunctionCallbackInfo<Value>& info) {
Local<FunctionTemplate> Shell::CreateTestFastCApiTemplate(Isolate* isolate) {
Local<FunctionTemplate> api_obj_ctor =
- FunctionTemplate::New(isolate, CreateObject);
+ FunctionTemplate::New(isolate, CreateFastCAPIObject);
+ PerIsolateData::Get(isolate)->SetTestApiObjectCtor(api_obj_ctor);
Local<Signature> signature = Signature::New(isolate, api_obj_ctor);
{
CFunction add_all_c_func =
@@ -200,6 +289,19 @@ Local<FunctionTemplate> Shell::CreateTestFastCApiTemplate(Isolate* isolate) {
Local<Value>(), signature, 1,
ConstructorBehavior::kThrow,
SideEffectType::kHasSideEffect, &add_all_c_func));
+
+ // To test function overloads.
+ CFunction add_all_5args_c_func =
+ CFunction::Make(FastCApiObject::AddAllFastCallback_5Args);
+ const CFunction c_function_overloads[] = {add_all_c_func,
+ add_all_5args_c_func};
+ api_obj_ctor->PrototypeTemplate()->Set(
+ isolate, "overloaded_add_all",
+ FunctionTemplate::NewWithCFunctionOverloads(
+ isolate, FastCApiObject::AddAllSlowCallback, Local<Value>(),
+ signature, 1, ConstructorBehavior::kThrow,
+ SideEffectType::kHasSideEffect, {c_function_overloads, 2}));
+
CFunction add_32bit_int_c_func =
CFunction::Make(FastCApiObject::Add32BitIntFastCallback);
api_obj_ctor->PrototypeTemplate()->Set(
@@ -208,6 +310,14 @@ Local<FunctionTemplate> Shell::CreateTestFastCApiTemplate(Isolate* isolate) {
isolate, FastCApiObject::Add32BitIntSlowCallback, Local<Value>(),
signature, 1, ConstructorBehavior::kThrow,
SideEffectType::kHasSideEffect, &add_32bit_int_c_func));
+ CFunction is_valid_api_object_c_func =
+ CFunction::Make(FastCApiObject::IsFastCApiObjectFastCallback);
+ api_obj_ctor->PrototypeTemplate()->Set(
+ isolate, "is_fast_c_api_object",
+ FunctionTemplate::New(
+ isolate, FastCApiObject::IsFastCApiObjectSlowCallback,
+ Local<Value>(), signature, 1, ConstructorBehavior::kThrow,
+ SideEffectType::kHasSideEffect, &is_valid_api_object_c_func));
api_obj_ctor->PrototypeTemplate()->Set(
isolate, "fast_call_count",
FunctionTemplate::New(isolate, FastCApiObject::FastCallCount,
@@ -227,4 +337,20 @@ Local<FunctionTemplate> Shell::CreateTestFastCApiTemplate(Isolate* isolate) {
return api_obj_ctor;
}
+void CreateLeafInterfaceObject(const FunctionCallbackInfo<Value>& info) {
+ if (!info.IsConstructCall()) {
+ info.GetIsolate()->ThrowError(
+ "LeafInterfaceType helper must be constructed with new.");
+ }
+}
+
+Local<FunctionTemplate> Shell::CreateLeafInterfaceTypeTemplate(
+ Isolate* isolate) {
+ Local<FunctionTemplate> leaf_object_ctor =
+ FunctionTemplate::New(isolate, CreateLeafInterfaceObject);
+ leaf_object_ctor->SetClassName(
+ String::NewFromUtf8Literal(isolate, "LeafInterfaceType"));
+ return leaf_object_ctor;
+}
+
} // namespace v8
diff --git a/deps/v8/src/d8/d8.cc b/deps/v8/src/d8/d8.cc
index d5b4600ad6..8c9a4c3ae6 100644
--- a/deps/v8/src/d8/d8.cc
+++ b/deps/v8/src/d8/d8.cc
@@ -32,6 +32,7 @@
#include "src/base/platform/platform.h"
#include "src/base/platform/time.h"
#include "src/base/platform/wrappers.h"
+#include "src/base/sanitizer/msan.h"
#include "src/base/sys-info.h"
#include "src/d8/d8-console.h"
#include "src/d8/d8-platforms.h"
@@ -53,7 +54,6 @@
#include "src/parsing/parsing.h"
#include "src/parsing/scanner-character-streams.h"
#include "src/profiler/profile-generator.h"
-#include "src/sanitizer/msan.h"
#include "src/snapshot/snapshot.h"
#include "src/tasks/cancelable-task.h"
#include "src/trap-handler/trap-handler.h"
@@ -333,11 +333,6 @@ class MultiMappedAllocator : public ArrayBufferAllocatorBase {
v8::Platform* g_default_platform;
std::unique_ptr<v8::Platform> g_platform;
-static Local<Value> Throw(Isolate* isolate, const char* message) {
- return isolate->ThrowException(v8::Exception::Error(
- String::NewFromUtf8(isolate, message).ToLocalChecked()));
-}
-
static MaybeLocal<Value> TryGetValue(v8::Isolate* isolate,
Local<Context> context,
Local<v8::Object> object,
@@ -355,13 +350,13 @@ static Local<Value> GetValue(v8::Isolate* isolate, Local<Context> context,
std::shared_ptr<Worker> GetWorkerFromInternalField(Isolate* isolate,
Local<Object> object) {
if (object->InternalFieldCount() != 1) {
- Throw(isolate, "this is not a Worker");
+ isolate->ThrowError("this is not a Worker");
return nullptr;
}
i::Handle<i::Object> handle = Utils::OpenHandle(*object->GetInternalField(0));
if (handle->IsSmi()) {
- Throw(isolate, "Worker is defunct because main thread is terminating");
+ isolate->ThrowError("Worker is defunct because main thread is terminating");
return nullptr;
}
auto managed = i::Handle<i::Managed<Worker>>::cast(handle);
@@ -696,6 +691,12 @@ bool Shell::ExecuteString(Isolate* isolate, Local<String> source,
Local<Context> context(isolate->GetCurrentContext());
ScriptOrigin origin(isolate, name);
+ for (int i = 1; i < options.repeat_compile; ++i) {
+ HandleScope handle_scope(isolate);
+ if (CompileString<Script>(isolate, context, source, origin).IsEmpty()) {
+ return false;
+ }
+ }
Local<Script> script;
if (!CompileString<Script>(isolate, context, source, origin)
.ToLocal(&script)) {
@@ -710,6 +711,9 @@ bool Shell::ExecuteString(Isolate* isolate, Local<String> source,
StoreInCodeCache(isolate, source, cached_data);
delete cached_data;
}
+ if (options.compile_only) {
+ return true;
+ }
maybe_result = script->Run(realm);
if (options.code_cache_options ==
ShellOptions::CodeCacheOptions::kProduceCacheAfterExecute) {
@@ -728,7 +732,7 @@ bool Shell::ExecuteString(Isolate* isolate, Local<String> source,
if (options.web_snapshot_config) {
std::vector<std::string> exports;
if (!ReadLines(options.web_snapshot_config, exports)) {
- Throw(isolate, "Web snapshots: unable to read config");
+ isolate->ThrowError("Web snapshots: unable to read config");
CHECK(try_catch.HasCaught());
ReportException(isolate, &try_catch);
return false;
@@ -965,7 +969,8 @@ MaybeLocal<Module> Shell::FetchModuleTree(Local<Module> referrer,
CHECK(specifier_it != d->module_to_specifier_map.end());
msg += "\n imported by " + specifier_it->second;
}
- Throw(isolate, msg.c_str());
+ isolate->ThrowError(
+ v8::String::NewFromUtf8(isolate, msg.c_str()).ToLocalChecked());
return MaybeLocal<Module>();
}
ScriptOrigin origin(
@@ -1024,7 +1029,7 @@ MaybeLocal<Module> Shell::FetchModuleTree(Local<Module> referrer,
context, import_assertions, true);
if (request_module_type == ModuleType::kInvalid) {
- Throw(isolate, "Invalid module type was asserted");
+ isolate->ThrowError("Invalid module type was asserted");
return MaybeLocal<Module>();
}
@@ -1211,7 +1216,7 @@ void Shell::DoHostImportModuleDynamically(void* import_data) {
try_catch.SetVerbose(true);
if (module_type == ModuleType::kInvalid) {
- Throw(isolate, "Invalid module type was asserted");
+ isolate->ThrowError("Invalid module type was asserted");
CHECK(try_catch.HasCaught());
resolver->Reject(realm, try_catch.Exception()).ToChecked();
return;
@@ -1358,7 +1363,7 @@ bool Shell::ExecuteWebSnapshot(Isolate* isolate, const char* file_name) {
std::unique_ptr<uint8_t[]> snapshot_data(
reinterpret_cast<uint8_t*>(ReadChars(absolute_path.c_str(), &length)));
if (length == 0) {
- Throw(isolate, "Error reading the web snapshot");
+ isolate->ThrowError("Error reading the web snapshot");
DCHECK(try_catch.HasCaught());
ReportException(isolate, &try_catch);
return false;
@@ -1468,6 +1473,14 @@ void PerIsolateData::DeleteDynamicImportData(DynamicImportData* data) {
delete data;
}
+Local<FunctionTemplate> PerIsolateData::GetTestApiObjectCtor() const {
+ return test_api_object_ctor_.Get(isolate_);
+}
+
+void PerIsolateData::SetTestApiObjectCtor(Local<FunctionTemplate> ctor) {
+ test_api_object_ctor_.Reset(isolate_, ctor);
+}
+
PerIsolateData::RealmScope::RealmScope(PerIsolateData* data) : data_(data) {
data_->realm_count_ = 1;
data_->realm_current_ = 0;
@@ -1500,14 +1513,14 @@ int PerIsolateData::RealmFind(Local<Context> context) {
int PerIsolateData::RealmIndexOrThrow(
const v8::FunctionCallbackInfo<v8::Value>& args, int arg_offset) {
if (args.Length() < arg_offset || !args[arg_offset]->IsNumber()) {
- Throw(args.GetIsolate(), "Invalid argument");
+ args.GetIsolate()->ThrowError("Invalid argument");
return -1;
}
int index = args[arg_offset]
->Int32Value(args.GetIsolate()->GetCurrentContext())
.FromMaybe(-1);
if (index < 0 || index >= realm_count_ || realms_[index].IsEmpty()) {
- Throw(args.GetIsolate(), "Invalid realm index");
+ args.GetIsolate()->ThrowError("Invalid realm index");
return -1;
}
return index;
@@ -1565,7 +1578,7 @@ void Shell::RealmOwner(const v8::FunctionCallbackInfo<v8::Value>& args) {
Isolate* isolate = args.GetIsolate();
PerIsolateData* data = PerIsolateData::Get(isolate);
if (args.Length() < 1 || !args[0]->IsObject()) {
- Throw(args.GetIsolate(), "Invalid argument");
+ args.GetIsolate()->ThrowError("Invalid argument");
return;
}
Local<Object> object =
@@ -1577,7 +1590,7 @@ void Shell::RealmOwner(const v8::FunctionCallbackInfo<v8::Value>& args) {
}
Local<Context> creation_context;
if (!object->GetCreationContext().ToLocal(&creation_context)) {
- Throw(args.GetIsolate(), "object doesn't have creation context");
+ args.GetIsolate()->ThrowError("object doesn't have creation context");
return;
}
int index = data->RealmFind(creation_context);
@@ -1661,7 +1674,7 @@ void Shell::RealmNavigate(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (index == -1) return;
if (index == 0 || index == data->realm_current_ ||
index == data->realm_switch_) {
- Throw(args.GetIsolate(), "Invalid realm index");
+ args.GetIsolate()->ThrowError("Invalid realm index");
return;
}
@@ -1690,7 +1703,7 @@ void Shell::RealmDetachGlobal(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (index == -1) return;
if (index == 0 || index == data->realm_current_ ||
index == data->realm_switch_) {
- Throw(args.GetIsolate(), "Invalid realm index");
+ args.GetIsolate()->ThrowError("Invalid realm index");
return;
}
@@ -1707,7 +1720,7 @@ void Shell::RealmDispose(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (index == -1) return;
if (index == 0 || index == data->realm_current_ ||
index == data->realm_switch_) {
- Throw(args.GetIsolate(), "Invalid realm index");
+ args.GetIsolate()->ThrowError("Invalid realm index");
return;
}
DisposeRealm(args, index);
@@ -1729,7 +1742,7 @@ void Shell::RealmEval(const v8::FunctionCallbackInfo<v8::Value>& args) {
int index = data->RealmIndexOrThrow(args, 0);
if (index == -1) return;
if (args.Length() < 2 || !args[1]->IsString()) {
- Throw(args.GetIsolate(), "Invalid argument");
+ args.GetIsolate()->ThrowError("Invalid argument");
return;
}
ScriptOrigin origin(isolate,
@@ -1780,18 +1793,18 @@ void Shell::LogGetAndStop(const v8::FunctionCallbackInfo<v8::Value>& args) {
std::string file_name = i_isolate->logger()->file_name();
if (!i::Log::IsLoggingToTemporaryFile(file_name)) {
- Throw(isolate, "Only capturing from temporary files is supported.");
+ isolate->ThrowError("Only capturing from temporary files is supported.");
return;
}
if (!i_isolate->logger()->is_logging()) {
- Throw(isolate, "Logging not enabled.");
+ isolate->ThrowError("Logging not enabled.");
return;
}
std::string raw_log;
FILE* log_file = i_isolate->logger()->TearDownAndGetLogFile();
if (!log_file) {
- Throw(isolate, "Log file does not exist.");
+ isolate->ThrowError("Log file does not exist.");
return;
}
@@ -1800,7 +1813,7 @@ void Shell::LogGetAndStop(const v8::FunctionCallbackInfo<v8::Value>& args) {
base::Fclose(log_file);
if (!exists) {
- Throw(isolate, "Unable to read log file.");
+ isolate->ThrowError("Unable to read log file.");
return;
}
Local<String> result =
@@ -1816,13 +1829,13 @@ void Shell::TestVerifySourcePositions(
Isolate* isolate = args.GetIsolate();
// Check if the argument is a valid function.
if (args.Length() != 1) {
- Throw(isolate, "Expected function as single argument.");
+ isolate->ThrowError("Expected function as single argument.");
return;
}
auto arg_handle = Utils::OpenHandle(*args[0]);
if (!arg_handle->IsHeapObject() || !i::Handle<i::HeapObject>::cast(arg_handle)
->IsJSFunctionOrBoundFunction()) {
- Throw(isolate, "Expected function as single argument.");
+ isolate->ThrowError("Expected function as single argument.");
return;
}
@@ -1839,7 +1852,7 @@ void Shell::TestVerifySourcePositions(
i::Handle<i::JSFunction> function = i::Handle<i::JSFunction>::cast(callable);
if (!function->shared().HasBytecodeArray()) {
- Throw(isolate, "Function has no BytecodeArray attached.");
+ isolate->ThrowError("Function has no BytecodeArray attached.");
return;
}
i::Handle<i::BytecodeArray> bytecodes =
@@ -1865,7 +1878,7 @@ void Shell::TestVerifySourcePositions(
if (has_baseline) {
if (offset_iterator->current_bytecode_offset() !=
bytecode_iterator.current_offset()) {
- Throw(isolate, "Baseline bytecode offset mismatch.");
+ isolate->ThrowError("Baseline bytecode offset mismatch.");
return;
}
// Check that we map every address to this bytecode correctly.
@@ -1877,7 +1890,8 @@ void Shell::TestVerifySourcePositions(
pc_lookup.AdvanceToPCOffset(pc);
if (pc_lookup.current_bytecode_offset() !=
bytecode_iterator.current_offset()) {
- Throw(isolate, "Baseline bytecode offset mismatch for PC lookup.");
+ isolate->ThrowError(
+ "Baseline bytecode offset mismatch for PC lookup.");
return;
}
}
@@ -1885,14 +1899,14 @@ void Shell::TestVerifySourcePositions(
bytecode_iterator.Advance();
if (has_baseline && !bytecode_iterator.done()) {
if (offset_iterator->done()) {
- Throw(isolate, "Missing bytecode(s) in baseline offset mapping.");
+ isolate->ThrowError("Missing bytecode(s) in baseline offset mapping.");
return;
}
offset_iterator->Advance();
}
}
if (has_baseline && !offset_iterator->done()) {
- Throw(isolate, "Excess offsets in baseline offset mapping.");
+ isolate->ThrowError("Excess offsets in baseline offset mapping.");
return;
}
}
@@ -1928,6 +1942,13 @@ void Shell::AsyncHooksTriggerAsyncId(
void Shell::SetPromiseHooks(const v8::FunctionCallbackInfo<v8::Value>& args) {
Isolate* isolate = args.GetIsolate();
+ if (i::FLAG_correctness_fuzzer_suppressions) {
+ // Make sure we have no pending promises if correctness fuzzing is active.
+ // Due to fast-paths we might have not created all intermediate promises
+ // that aren't spec visible. However, the promise hook might expose them
+ // and cause different output.
+ isolate->PerformMicrotaskCheckpoint();
+ }
Local<Context> context = isolate->GetCurrentContext();
HandleScope handle_scope(isolate);
@@ -1953,7 +1974,7 @@ void WriteToFile(FILE* file, const v8::FunctionCallbackInfo<v8::Value>& args) {
Local<String> str_obj;
if (arg->IsSymbol()) {
- arg = arg.As<Symbol>()->Description();
+ arg = arg.As<Symbol>()->Description(args.GetIsolate());
}
if (!arg->ToString(args.GetIsolate()->GetCurrentContext())
.ToLocal(&str_obj)) {
@@ -1992,7 +2013,7 @@ void Shell::Write(const v8::FunctionCallbackInfo<v8::Value>& args) {
void Shell::Read(const v8::FunctionCallbackInfo<v8::Value>& args) {
String::Utf8Value file(args.GetIsolate(), args[0]);
if (*file == nullptr) {
- Throw(args.GetIsolate(), "Error loading file");
+ args.GetIsolate()->ThrowError("Error loading file");
return;
}
if (args.Length() == 2) {
@@ -2004,7 +2025,7 @@ void Shell::Read(const v8::FunctionCallbackInfo<v8::Value>& args) {
}
Local<String> source = ReadFile(args.GetIsolate(), *file);
if (source.IsEmpty()) {
- Throw(args.GetIsolate(), "Error loading file");
+ args.GetIsolate()->ThrowError("Error loading file");
return;
}
args.GetReturnValue().Set(source);
@@ -2052,12 +2073,12 @@ void Shell::Load(const v8::FunctionCallbackInfo<v8::Value>& args) {
HandleScope handle_scope(args.GetIsolate());
String::Utf8Value file(args.GetIsolate(), args[i]);
if (*file == nullptr) {
- Throw(args.GetIsolate(), "Error loading file");
+ args.GetIsolate()->ThrowError("Error loading file");
return;
}
Local<String> source = ReadFile(args.GetIsolate(), *file);
if (source.IsEmpty()) {
- Throw(args.GetIsolate(), "Error loading file");
+ args.GetIsolate()->ThrowError("Error loading file");
return;
}
if (!ExecuteString(
@@ -2066,7 +2087,7 @@ void Shell::Load(const v8::FunctionCallbackInfo<v8::Value>& args) {
kNoPrintResult,
options.quiet_load ? kNoReportExceptions : kReportExceptions,
kNoProcessMessageQueue)) {
- Throw(args.GetIsolate(), "Error executing file");
+ args.GetIsolate()->ThrowError("Error executing file");
return;
}
}
@@ -2129,7 +2150,7 @@ bool FunctionAndArgumentsToString(Local<Function> function,
function->FunctionProtoToString(context);
Local<String> function_string;
if (!maybe_function_string.ToLocal(&function_string)) {
- Throw(isolate, "Failed to convert function to string");
+ isolate->ThrowError("Failed to convert function to string");
return false;
}
*source = String::NewFromUtf8Literal(isolate, "(");
@@ -2138,7 +2159,7 @@ bool FunctionAndArgumentsToString(Local<Function> function,
*source = String::Concat(isolate, *source, middle);
if (!arguments.IsEmpty() && !arguments->IsUndefined()) {
if (!arguments->IsArray()) {
- Throw(isolate, "'arguments' must be an array");
+ isolate->ThrowError("'arguments' must be an array");
return false;
}
Local<String> comma = String::NewFromUtf8Literal(isolate, ",");
@@ -2150,12 +2171,12 @@ bool FunctionAndArgumentsToString(Local<Function> function,
MaybeLocal<Value> maybe_argument = array->Get(context, i);
Local<Value> argument;
if (!maybe_argument.ToLocal(&argument)) {
- Throw(isolate, "Failed to get argument");
+ isolate->ThrowError("Failed to get argument");
return false;
}
Local<String> argument_string;
if (!JSON::Stringify(context, argument).ToLocal(&argument_string)) {
- Throw(isolate, "Failed to convert argument to string");
+ isolate->ThrowError("Failed to convert argument to string");
return false;
}
*source = String::Concat(isolate, *source, argument_string);
@@ -2170,7 +2191,7 @@ void Shell::WorkerNew(const v8::FunctionCallbackInfo<v8::Value>& args) {
Isolate* isolate = args.GetIsolate();
HandleScope handle_scope(isolate);
if (args.Length() < 1 || (!args[0]->IsString() && !args[0]->IsFunction())) {
- Throw(isolate, "1st argument must be a string or a function");
+ isolate->ThrowError("1st argument must be a string or a function");
return;
}
@@ -2184,7 +2205,7 @@ void Shell::WorkerNew(const v8::FunctionCallbackInfo<v8::Value>& args) {
Local<Value> arguments;
ReadWorkerTypeAndArguments(args, &worker_type, &arguments);
if (worker_type != WorkerType::kFunction) {
- Throw(isolate, "Invalid or missing worker type");
+ isolate->ThrowError("Invalid or missing worker type");
return;
}
@@ -2203,7 +2224,7 @@ void Shell::WorkerNew(const v8::FunctionCallbackInfo<v8::Value>& args) {
load_from_file = false;
} else if (worker_type != WorkerType::kNone &&
worker_type != WorkerType::kClassic) {
- Throw(isolate, "Invalid worker type");
+ isolate->ThrowError("Invalid worker type");
return;
}
@@ -2211,7 +2232,7 @@ void Shell::WorkerNew(const v8::FunctionCallbackInfo<v8::Value>& args) {
String::Utf8Value filename(isolate, args[0]);
source = ReadFile(isolate, *filename);
if (source.IsEmpty()) {
- Throw(args.GetIsolate(), "Error loading worker script");
+ args.GetIsolate()->ThrowError("Error loading worker script");
return;
}
} else {
@@ -2220,7 +2241,7 @@ void Shell::WorkerNew(const v8::FunctionCallbackInfo<v8::Value>& args) {
}
if (!args.IsConstructCall()) {
- Throw(isolate, "Worker must be constructed with new");
+ isolate->ThrowError("Worker must be constructed with new");
return;
}
@@ -2237,7 +2258,7 @@ void Shell::WorkerNew(const v8::FunctionCallbackInfo<v8::Value>& args) {
String::Utf8Value script(isolate, source);
if (!*script) {
- Throw(isolate, "Can't get worker script");
+ isolate->ThrowError("Can't get worker script");
return;
}
@@ -2251,7 +2272,7 @@ void Shell::WorkerNew(const v8::FunctionCallbackInfo<v8::Value>& args) {
i_isolate, kWorkerSizeEstimate, worker);
args.Holder()->SetInternalField(0, Utils::ToLocal(managed));
if (!Worker::StartWorkerThread(std::move(worker))) {
- Throw(isolate, "Can't start thread");
+ isolate->ThrowError("Can't start thread");
return;
}
}
@@ -2262,7 +2283,7 @@ void Shell::WorkerPostMessage(const v8::FunctionCallbackInfo<v8::Value>& args) {
HandleScope handle_scope(isolate);
if (args.Length() < 1) {
- Throw(isolate, "Invalid argument");
+ isolate->ThrowError("Invalid argument");
return;
}
@@ -2571,6 +2592,33 @@ Local<String> Shell::Stringify(Isolate* isolate, Local<Value> value) {
return result.ToLocalChecked().As<String>();
}
+void Shell::NodeTypeCallback(const v8::FunctionCallbackInfo<v8::Value>& args) {
+ v8::Isolate* isolate = args.GetIsolate();
+ args.GetReturnValue().Set(v8::Number::New(isolate, 1));
+}
+
+Local<FunctionTemplate> Shell::CreateNodeTemplates(Isolate* isolate) {
+ Local<FunctionTemplate> node = FunctionTemplate::New(isolate);
+ Local<ObjectTemplate> proto_template = node->PrototypeTemplate();
+ Local<Signature> signature = v8::Signature::New(isolate, node);
+ Local<FunctionTemplate> nodeType = FunctionTemplate::New(
+ isolate, NodeTypeCallback, Local<Value>(), signature);
+ nodeType->SetAcceptAnyReceiver(false);
+ proto_template->SetAccessorProperty(
+ String::NewFromUtf8Literal(isolate, "nodeType"), nodeType);
+
+ Local<FunctionTemplate> element = FunctionTemplate::New(isolate);
+ element->Inherit(node);
+
+ Local<FunctionTemplate> html_element = FunctionTemplate::New(isolate);
+ html_element->Inherit(element);
+
+ Local<FunctionTemplate> div_element = FunctionTemplate::New(isolate);
+ div_element->Inherit(html_element);
+
+ return div_element;
+}
+
Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
Local<ObjectTemplate> global_template = ObjectTemplate::New(isolate);
global_template->Set(Symbol::GetToStringTag(isolate),
@@ -2602,6 +2650,7 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
global_template->Set(isolate, "performance",
Shell::CreatePerformanceTemplate(isolate));
global_template->Set(isolate, "Worker", Shell::CreateWorkerTemplate(isolate));
+
// Prevent fuzzers from creating side effects.
if (!i::FLAG_fuzzing) {
global_template->Set(isolate, "os", Shell::CreateOSTemplate(isolate));
@@ -2730,19 +2779,29 @@ Local<ObjectTemplate> Shell::CreateD8Template(Isolate* isolate) {
FunctionTemplate::New(isolate, LogGetAndStop));
d8_template->Set(isolate, "log", log_template);
+
+ Local<ObjectTemplate> dom_template = ObjectTemplate::New(isolate);
+ dom_template->Set(isolate, "Div", Shell::CreateNodeTemplates(isolate));
+ d8_template->Set(isolate, "dom", dom_template);
}
{
Local<ObjectTemplate> test_template = ObjectTemplate::New(isolate);
- test_template->Set(
- isolate, "verifySourcePositions",
- FunctionTemplate::New(isolate, TestVerifySourcePositions));
+ // For different runs of correctness fuzzing the bytecode of a function
+ // might get flushed, resulting in spurious errors.
+ if (!i::FLAG_correctness_fuzzer_suppressions) {
+ test_template->Set(
+ isolate, "verifySourcePositions",
+ FunctionTemplate::New(isolate, TestVerifySourcePositions));
+ }
// Correctness fuzzing will attempt to compare results of tests with and
// without turbo_fast_api_calls, so we don't expose the fast_c_api
// constructor when --correctness_fuzzer_suppressions is on.
if (i::FLAG_turbo_fast_api_calls &&
!i::FLAG_correctness_fuzzer_suppressions) {
- test_template->Set(isolate, "fast_c_api",
+ test_template->Set(isolate, "FastCAPI",
Shell::CreateTestFastCApiTemplate(isolate));
+ test_template->Set(isolate, "LeafInterfaceType",
+ Shell::CreateLeafInterfaceTypeTemplate(isolate));
}
d8_template->Set(isolate, "test", test_template);
@@ -3209,13 +3268,13 @@ void Shell::ReadBuffer(const v8::FunctionCallbackInfo<v8::Value>& args) {
String::Utf8Value filename(isolate, args[0]);
int length;
if (*filename == nullptr) {
- Throw(isolate, "Error loading file");
+ isolate->ThrowError("Error loading file");
return;
}
uint8_t* data = reinterpret_cast<uint8_t*>(ReadChars(*filename, &length));
if (data == nullptr) {
- Throw(isolate, "Error reading file");
+ isolate->ThrowError("Error reading file");
return;
}
std::unique_ptr<v8::BackingStore> backing_store =
@@ -3882,7 +3941,7 @@ void Worker::PostMessageOut(const v8::FunctionCallbackInfo<v8::Value>& args) {
HandleScope handle_scope(isolate);
if (args.Length() < 1) {
- Throw(isolate, "Invalid argument");
+ isolate->ThrowError("Invalid argument");
return;
}
@@ -3923,25 +3982,6 @@ bool Shell::SetOptions(int argc, char* argv[]) {
strcmp(argv[i], "--no-stress-opt") == 0) {
options.stress_opt = false;
argv[i] = nullptr;
- } else if (strcmp(argv[i], "--stress-snapshot") == 0) {
- options.stress_snapshot = true;
- // Incremental marking is incompatible with the stress_snapshot mode;
- // specifically, serialization may clear bytecode arrays from shared
- // function infos which the MarkCompactCollector (running concurrently)
- // may still need. See also https://crbug.com/v8/10882.
- //
- // We thus force the implication
- //
- // --stress-snapshot ~~> --no-incremental-marking
- //
- // Note: This is not an issue in production because we don't clear SFI's
- // there (that only happens in mksnapshot and in --stress-snapshot mode).
- i::FLAG_incremental_marking = false;
- argv[i] = nullptr;
- } else if (strcmp(argv[i], "--nostress-snapshot") == 0 ||
- strcmp(argv[i], "--no-stress-snapshot") == 0) {
- options.stress_snapshot = false;
- argv[i] = nullptr;
} else if (strcmp(argv[i], "--noalways-opt") == 0 ||
strcmp(argv[i], "--no-always-opt") == 0) {
no_always_opt = true;
@@ -4080,6 +4120,12 @@ bool Shell::SetOptions(int argc, char* argv[]) {
} else if (strncmp(argv[i], "--web-snapshot-config=", 22) == 0) {
options.web_snapshot_config = argv[i] + 22;
argv[i] = nullptr;
+ } else if (strcmp(argv[i], "--compile-only") == 0) {
+ options.compile_only = true;
+ argv[i] = nullptr;
+ } else if (strncmp(argv[i], "--repeat-compile=", 17) == 0) {
+ options.repeat_compile = atoi(argv[i] + 17);
+ argv[i] = nullptr;
#ifdef V8_FUZZILLI
} else if (strcmp(argv[i], "--no-fuzzilli-enable-builtins-coverage") == 0) {
options.fuzzilli_enable_builtins_coverage = false;
@@ -4091,11 +4137,15 @@ bool Shell::SetOptions(int argc, char* argv[]) {
} else if (strcmp(argv[i], "--fuzzy-module-file-extensions") == 0) {
options.fuzzy_module_file_extensions = true;
argv[i] = nullptr;
-#if defined(V8_OS_WIN) && defined(V8_ENABLE_SYSTEM_INSTRUMENTATION)
+#if defined(V8_ENABLE_SYSTEM_INSTRUMENTATION)
} else if (strcmp(argv[i], "--enable-system-instrumentation") == 0) {
options.enable_system_instrumentation = true;
options.trace_enabled = true;
+#if defined(V8_OS_WIN)
+ // Guard this bc the flag has a lot of overhead and is not currently used
+ // by macos
i::FLAG_interpreted_frames_native_stack = true;
+#endif
argv[i] = nullptr;
#endif
}
@@ -4186,7 +4236,7 @@ int Shell::RunMain(Isolate* isolate, bool last_run) {
DisposeModuleEmbedderData(context);
}
WriteLcovData(isolate, options.lcov_file);
- if (last_run && options.stress_snapshot) {
+ if (last_run && i::FLAG_stress_snapshot) {
static constexpr bool kClearRecompilableData = true;
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
i::Handle<i::Context> i_context = Utils::OpenHandle(*context);
@@ -4448,7 +4498,8 @@ class Serializer : public ValueSerializer::Delegate {
Local<Value> element;
if (transfer_array->Get(context, i).ToLocal(&element)) {
if (!element->IsArrayBuffer()) {
- Throw(isolate_, "Transfer array elements must be an ArrayBuffer");
+ isolate_->ThrowError(
+ "Transfer array elements must be an ArrayBuffer");
return Nothing<bool>();
}
@@ -4456,8 +4507,8 @@ class Serializer : public ValueSerializer::Delegate {
if (std::find(array_buffers_.begin(), array_buffers_.end(),
array_buffer) != array_buffers_.end()) {
- Throw(isolate_,
- "ArrayBuffer occurs in the transfer array more than once");
+ isolate_->ThrowError(
+ "ArrayBuffer occurs in the transfer array more than once");
return Nothing<bool>();
}
@@ -4472,7 +4523,7 @@ class Serializer : public ValueSerializer::Delegate {
} else if (transfer->IsUndefined()) {
return Just(true);
} else {
- Throw(isolate_, "Transfer list must be an Array or undefined");
+ isolate_->ThrowError("Transfer list must be an Array or undefined");
return Nothing<bool>();
}
}
@@ -4482,7 +4533,7 @@ class Serializer : public ValueSerializer::Delegate {
Local<ArrayBuffer> array_buffer =
Local<ArrayBuffer>::New(isolate_, global_array_buffer);
if (!array_buffer->IsDetachable()) {
- Throw(isolate_, "ArrayBuffer could not be transferred");
+ isolate_->ThrowError("ArrayBuffer could not be transferred");
return Nothing<bool>();
}
diff --git a/deps/v8/src/d8/d8.h b/deps/v8/src/d8/d8.h
index f99ef17b65..75c8046115 100644
--- a/deps/v8/src/d8/d8.h
+++ b/deps/v8/src/d8/d8.h
@@ -271,6 +271,9 @@ class PerIsolateData {
void AddDynamicImportData(DynamicImportData*);
void DeleteDynamicImportData(DynamicImportData*);
+ Local<FunctionTemplate> GetTestApiObjectCtor() const;
+ void SetTestApiObjectCtor(Local<FunctionTemplate> ctor);
+
private:
friend class Shell;
friend class RealmScope;
@@ -289,6 +292,7 @@ class PerIsolateData {
#if defined(LEAK_SANITIZER)
std::unordered_set<DynamicImportData*> import_data_;
#endif
+ Global<FunctionTemplate> test_api_object_ctor_;
int RealmIndexOrThrow(const v8::FunctionCallbackInfo<v8::Value>& args,
int arg_offset);
@@ -358,7 +362,6 @@ class ShellOptions {
DisallowReassignment<bool> simulate_errors = {"simulate-errors", false};
DisallowReassignment<bool> stress_opt = {"stress-opt", false};
DisallowReassignment<int> stress_runs = {"stress-runs", 1};
- DisallowReassignment<bool> stress_snapshot = {"stress-snapshot", false};
DisallowReassignment<bool> interactive_shell = {"shell", false};
bool test_shell = false;
DisallowReassignment<bool> expected_to_throw = {"throws", false};
@@ -403,6 +406,8 @@ class ShellOptions {
"enable-system-instrumentation", false};
DisallowReassignment<const char*> web_snapshot_config = {
"web-snapshot-config", nullptr};
+ DisallowReassignment<bool> compile_only = {"compile-only", false};
+ DisallowReassignment<int> repeat_compile = {"repeat-compile", 1};
};
class Shell : public i::AllStatic {
@@ -626,6 +631,9 @@ class Shell : public i::AllStatic {
static void RunShell(Isolate* isolate);
static bool SetOptions(int argc, char* argv[]);
+ static void NodeTypeCallback(const v8::FunctionCallbackInfo<v8::Value>& args);
+
+ static Local<FunctionTemplate> CreateNodeTemplates(Isolate* isolate);
static Local<ObjectTemplate> CreateGlobalTemplate(Isolate* isolate);
static Local<ObjectTemplate> CreateOSTemplate(Isolate* isolate);
static Local<FunctionTemplate> CreateWorkerTemplate(Isolate* isolate);
@@ -635,6 +643,8 @@ class Shell : public i::AllStatic {
static Local<ObjectTemplate> CreateRealmTemplate(Isolate* isolate);
static Local<ObjectTemplate> CreateD8Template(Isolate* isolate);
static Local<FunctionTemplate> CreateTestFastCApiTemplate(Isolate* isolate);
+ static Local<FunctionTemplate> CreateLeafInterfaceTypeTemplate(
+ Isolate* isolate);
static MaybeLocal<Context> CreateRealm(
const v8::FunctionCallbackInfo<v8::Value>& args, int index,
diff --git a/deps/v8/src/debug/arm/debug-arm.cc b/deps/v8/src/debug/arm/debug-arm.cc
deleted file mode 100644
index 238bc5b85d..0000000000
--- a/deps/v8/src/debug/arm/debug-arm.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_ARM
-
-#include "src/debug/debug.h"
-
-#include "src/codegen/assembler-inl.h"
-#include "src/codegen/macro-assembler.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frames-inl.h"
-#include "src/objects/objects-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ Ret();
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by r1.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
- __ mov(fp, r1);
- __ ldr(r1, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
- __ ldr(r0, MemOperand(fp, StandardFrameConstants::kArgCOffset));
- __ LeaveFrame(StackFrame::INTERNAL);
-
- // The arguments are already in the stack (including any necessary padding),
- // we should not try to massage the arguments again.
- __ mov(r2, Operand(kDontAdaptArgumentsSentinel));
- __ InvokeFunction(r1, r2, r0, JUMP_FUNCTION);
-}
-
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-#undef __
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_ARM
diff --git a/deps/v8/src/debug/arm64/debug-arm64.cc b/deps/v8/src/debug/arm64/debug-arm64.cc
deleted file mode 100644
index b12d235983..0000000000
--- a/deps/v8/src/debug/arm64/debug-arm64.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2013 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.
-
-#if V8_TARGET_ARCH_ARM64
-
-#include "src/debug/debug.h"
-
-#include "src/codegen/arm64/macro-assembler-arm64-inl.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frame-constants.h"
-#include "src/execution/frames-inl.h"
-#include "src/objects/objects-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ Ret();
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by x1.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
- __ Mov(fp, x1);
- __ Ldr(x1, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
- __ ldr(x0, MemOperand(fp, StandardFrameConstants::kArgCOffset));
-
- __ Mov(sp, fp);
- __ Pop<TurboAssembler::kAuthLR>(fp, lr);
-
- // The arguments are already in the stack (including any necessary padding),
- // we should not try to massage the arguments again.
- __ Mov(x3, kDontAdaptArgumentsSentinel);
- __ InvokeFunctionWithNewTarget(x1, x3, x0, JUMP_FUNCTION);
-}
-
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-} // namespace internal
-} // namespace v8
-
-#undef __
-
-#endif // V8_TARGET_ARCH_ARM64
diff --git a/deps/v8/src/debug/debug-coverage.cc b/deps/v8/src/debug/debug-coverage.cc
index 56933602a6..7ff5809a18 100644
--- a/deps/v8/src/debug/debug-coverage.cc
+++ b/deps/v8/src/debug/debug-coverage.cc
@@ -61,8 +61,7 @@ bool CompareCoverageBlock(const CoverageBlock& a, const CoverageBlock& b) {
return a.start < b.start;
}
-void SortBlockData(
- std::vector<CoverageBlock>& v) { // NOLINT(runtime/references)
+void SortBlockData(std::vector<CoverageBlock>& v) {
// Sort according to the block nesting structure.
std::sort(v.begin(), v.end(), CompareCoverageBlock);
}
diff --git a/deps/v8/src/debug/debug-evaluate.cc b/deps/v8/src/debug/debug-evaluate.cc
index 4f317fcc89..54fac88f59 100644
--- a/deps/v8/src/debug/debug-evaluate.cc
+++ b/deps/v8/src/debug/debug-evaluate.cc
@@ -43,6 +43,22 @@ MaybeHandle<Object> DebugEvaluate::Global(Isolate* isolate,
Handle<String> source,
debug::EvaluateGlobalMode mode,
REPLMode repl_mode) {
+ Handle<SharedFunctionInfo> shared_info;
+ if (!GetFunctionInfo(isolate, source, repl_mode).ToHandle(&shared_info)) {
+ return MaybeHandle<Object>();
+ }
+
+ Handle<NativeContext> context = isolate->native_context();
+ Handle<JSFunction> fun =
+ Factory::JSFunctionBuilder{isolate, shared_info, context}.Build();
+
+ return Global(isolate, fun, mode, repl_mode);
+}
+
+MaybeHandle<Object> DebugEvaluate::Global(Isolate* isolate,
+ Handle<JSFunction> function,
+ debug::EvaluateGlobalMode mode,
+ REPLMode repl_mode) {
// Disable breaks in side-effect free mode.
DisableBreak disable_break_scope(
isolate->debug(),
@@ -50,19 +66,14 @@ MaybeHandle<Object> DebugEvaluate::Global(Isolate* isolate,
mode ==
debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect);
- Handle<SharedFunctionInfo> shared_info;
- if (!GetFunctionInfo(isolate, source, repl_mode).ToHandle(&shared_info)) {
- return MaybeHandle<Object>();
- }
+ Handle<NativeContext> context = isolate->native_context();
+ CHECK_EQ(function->native_context(), *context);
- Handle<Context> context = isolate->native_context();
- Handle<JSFunction> fun =
- Factory::JSFunctionBuilder{isolate, shared_info, context}.Build();
if (mode == debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) {
isolate->debug()->StartSideEffectCheckMode();
}
MaybeHandle<Object> result = Execution::Call(
- isolate, fun, Handle<JSObject>(context->global_proxy(), isolate), 0,
+ isolate, function, Handle<JSObject>(context->global_proxy(), isolate), 0,
nullptr);
if (mode == debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) {
isolate->debug()->StopSideEffectCheckMode();
@@ -1108,7 +1119,7 @@ void DebugEvaluate::VerifyTransitiveBuiltins(Isolate* isolate) {
}
CHECK(!failed);
#if defined(V8_TARGET_ARCH_PPC) || defined(V8_TARGET_ARCH_PPC64) || \
- defined(V8_TARGET_ARCH_MIPS64) || defined(V8_TARGET_ARCH_RISCV64)
+ defined(V8_TARGET_ARCH_MIPS64)
// Isolate-independent builtin calls and jumps do not emit reloc infos
// on PPC. We try to avoid using PC relative code due to performance
// issue with especially older hardwares.
diff --git a/deps/v8/src/debug/debug-evaluate.h b/deps/v8/src/debug/debug-evaluate.h
index 03836dd6da..34a6c8d4c7 100644
--- a/deps/v8/src/debug/debug-evaluate.h
+++ b/deps/v8/src/debug/debug-evaluate.h
@@ -27,6 +27,10 @@ class DebugEvaluate : public AllStatic {
debug::EvaluateGlobalMode mode,
REPLMode repl_mode = REPLMode::kNo);
+ static V8_EXPORT_PRIVATE MaybeHandle<Object> Global(
+ Isolate* isolate, Handle<JSFunction> function,
+ debug::EvaluateGlobalMode mode, REPLMode repl_mode = REPLMode::kNo);
+
// Evaluate a piece of JavaScript in the context of a stack frame for
// debugging. Things that need special attention are:
// - Parameters and stack-allocated locals need to be materialized. Altered
diff --git a/deps/v8/src/debug/debug-frames.cc b/deps/v8/src/debug/debug-frames.cc
index 2e5c9443ca..95b6801481 100644
--- a/deps/v8/src/debug/debug-frames.cc
+++ b/deps/v8/src/debug/debug-frames.cc
@@ -7,6 +7,10 @@
#include "src/builtins/accessors.h"
#include "src/execution/frames-inl.h"
+#if V8_ENABLE_WEBASSEMBLY
+#include "src/debug/debug-wasm-objects.h"
+#endif // V8_ENABLE_WEBASSEMBLY
+
namespace v8 {
namespace internal {
@@ -21,7 +25,6 @@ FrameInspector::FrameInspector(CommonFrame* frame, int inlined_frame_index,
is_constructor_ = summary.is_constructor();
source_position_ = summary.SourcePosition();
- function_name_ = summary.FunctionName();
script_ = Handle<Script>::cast(summary.script());
receiver_ = summary.receiver();
@@ -70,6 +73,18 @@ Handle<Object> FrameInspector::GetContext() {
: handle(frame_->context(), isolate_);
}
+Handle<String> FrameInspector::GetFunctionName() {
+#if V8_ENABLE_WEBASSEMBLY
+ if (IsWasm()) {
+ auto wasm_frame = WasmFrame::cast(frame_);
+ auto wasm_instance = handle(wasm_frame->wasm_instance(), isolate_);
+ return GetWasmFunctionDebugName(isolate_, wasm_instance,
+ wasm_frame->function_index());
+ }
+#endif // V8_ENABLE_WEBASSEMBLY
+ return JSFunction::GetDebugName(function_);
+}
+
#if V8_ENABLE_WEBASSEMBLY
bool FrameInspector::IsWasm() { return frame_->is_wasm(); }
#endif // V8_ENABLE_WEBASSEMBLY
diff --git a/deps/v8/src/debug/debug-frames.h b/deps/v8/src/debug/debug-frames.h
index 03f670e499..5197f86298 100644
--- a/deps/v8/src/debug/debug-frames.h
+++ b/deps/v8/src/debug/debug-frames.h
@@ -36,7 +36,7 @@ class FrameInspector {
Handle<Object> GetContext();
Handle<Object> GetReceiver() { return receiver_; }
- Handle<String> GetFunctionName() { return function_name_; }
+ Handle<String> GetFunctionName();
#if V8_ENABLE_WEBASSEMBLY
bool IsWasm();
@@ -58,7 +58,6 @@ class FrameInspector {
Handle<Script> script_;
Handle<Object> receiver_;
Handle<JSFunction> function_;
- Handle<String> function_name_;
int source_position_ = -1;
bool is_optimized_ = false;
bool is_constructor_ = false;
diff --git a/deps/v8/src/debug/debug-interface.cc b/deps/v8/src/debug/debug-interface.cc
index bf74d379b6..bc545a95d4 100644
--- a/deps/v8/src/debug/debug-interface.cc
+++ b/deps/v8/src/debug/debug-interface.cc
@@ -12,7 +12,9 @@
#include "src/debug/debug.h"
#include "src/execution/vm-state-inl.h"
#include "src/objects/js-generator-inl.h"
+#include "src/objects/stack-frame-info-inl.h"
#include "src/regexp/regexp-stack.h"
+#include "src/strings/string-builder-inl.h"
#if V8_ENABLE_WEBASSEMBLY
#include "src/debug/debug-wasm-objects-inl.h"
@@ -43,6 +45,54 @@ v8_inspector::V8Inspector* GetInspector(Isolate* isolate) {
return reinterpret_cast<i::Isolate*>(isolate)->inspector();
}
+Local<String> GetFunctionDebugName(Local<StackFrame> frame) {
+#if V8_ENABLE_WEBASSEMBLY
+ auto info = Utils::OpenHandle(*frame);
+ if (info->IsWasm()) {
+ auto isolate = info->GetIsolate();
+ auto instance = handle(info->GetWasmInstance(), isolate);
+ auto func_index = info->GetWasmFunctionIndex();
+ return Utils::ToLocal(
+ i::GetWasmFunctionDebugName(isolate, instance, func_index));
+ }
+#endif // V8_ENABLE_WEBASSEMBLY
+ return frame->GetFunctionName();
+}
+
+Local<String> GetFunctionDescription(Local<Function> function) {
+ auto receiver = Utils::OpenHandle(*function);
+ if (receiver->IsJSBoundFunction()) {
+ return Utils::ToLocal(i::JSBoundFunction::ToString(
+ i::Handle<i::JSBoundFunction>::cast(receiver)));
+ }
+ if (receiver->IsJSFunction()) {
+ auto function = i::Handle<i::JSFunction>::cast(receiver);
+#if V8_ENABLE_WEBASSEMBLY
+ if (function->shared().HasWasmExportedFunctionData()) {
+ auto isolate = function->GetIsolate();
+ auto func_index =
+ function->shared().wasm_exported_function_data().function_index();
+ auto instance = i::handle(
+ function->shared().wasm_exported_function_data().instance(), isolate);
+ if (instance->module()->origin == i::wasm::kWasmOrigin) {
+ // For asm.js functions, we can still print the source
+ // code (hopefully), so don't bother with them here.
+ auto debug_name =
+ i::GetWasmFunctionDebugName(isolate, instance, func_index);
+ i::IncrementalStringBuilder builder(isolate);
+ builder.AppendCString("function ");
+ builder.AppendString(debug_name);
+ builder.AppendCString("() { [native code] }");
+ return Utils::ToLocal(builder.Finish().ToHandleChecked());
+ }
+ }
+#endif // V8_ENABLE_WEBASSEMBLY
+ return Utils::ToLocal(i::JSFunction::ToString(function));
+ }
+ return Utils::ToLocal(
+ receiver->GetIsolate()->factory()->function_native_code_string());
+}
+
void SetBreakOnNextFunctionCall(Isolate* isolate) {
reinterpret_cast<i::Isolate*>(isolate)->debug()->SetBreakOnNextFunctionCall();
}
@@ -901,6 +951,21 @@ MaybeLocal<v8::Value> EvaluateGlobal(v8::Isolate* isolate,
RETURN_ESCAPED(result);
}
+v8::MaybeLocal<v8::Value> EvaluateGlobalForTesting(
+ v8::Isolate* isolate, v8::Local<v8::Script> function,
+ v8::debug::EvaluateGlobalMode mode, bool repl) {
+ i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ PREPARE_FOR_DEBUG_INTERFACE_EXECUTION_WITH_ISOLATE(internal_isolate, Value);
+ i::REPLMode repl_mode = repl ? i::REPLMode::kYes : i::REPLMode::kNo;
+ Local<Value> result;
+ has_pending_exception = !ToLocal<Value>(
+ i::DebugEvaluate::Global(internal_isolate, Utils::OpenHandle(*function),
+ mode, repl_mode),
+ &result);
+ RETURN_ON_FAILED_EXECUTION(Value);
+ RETURN_ESCAPED(result);
+}
+
void QueryObjects(v8::Local<v8::Context> v8_context,
QueryObjectPredicate* predicate,
PersistentValueVector<v8::Object>* objects) {
@@ -944,10 +1009,12 @@ int64_t GetNextRandomInt64(v8::Isolate* v8_isolate) {
void EnumerateRuntimeCallCounters(v8::Isolate* v8_isolate,
RuntimeCallCounterCallback callback) {
+#ifdef V8_RUNTIME_CALL_STATS
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
if (isolate->counters()) {
isolate->counters()->runtime_call_stats()->EnumerateCounters(callback);
}
+#endif // V8_RUNTIME_CALL_STATS
}
int GetDebuggingId(v8::Local<v8::Function> function) {
diff --git a/deps/v8/src/debug/debug-interface.h b/deps/v8/src/debug/debug-interface.h
index 66c7f3997e..6c7ff9cbdd 100644
--- a/deps/v8/src/debug/debug-interface.h
+++ b/deps/v8/src/debug/debug-interface.h
@@ -7,7 +7,6 @@
#include <memory>
-#include "include/v8-inspector.h"
#include "include/v8-util.h"
#include "include/v8.h"
#include "src/base/platform/time.h"
@@ -15,6 +14,10 @@
#include "src/debug/interface-types.h"
#include "src/utils/vector.h"
+namespace v8_inspector {
+class V8Inspector;
+} // namespace v8_inspector
+
namespace v8 {
namespace internal {
@@ -38,6 +41,16 @@ int GetContextId(Local<Context> context);
void SetInspector(Isolate* isolate, v8_inspector::V8Inspector*);
v8_inspector::V8Inspector* GetInspector(Isolate* isolate);
+// Returns the debug name for the function, which is supposed to be used
+// by the debugger and the developer tools. This can thus be different from
+// the name returned by the StackFrame::GetFunctionName() method. For example,
+// in case of WebAssembly, the debug name is WAT-compatible and thus always
+// preceeded by a dollar ('$').
+Local<String> GetFunctionDebugName(Local<StackFrame> frame);
+
+// Returns a debug string representation of the function.
+Local<String> GetFunctionDescription(Local<Function> function);
+
// Schedule a debugger break to happen when function is called inside given
// isolate.
V8_EXPORT_PRIVATE void SetBreakOnNextFunctionCall(Isolate* isolate);
@@ -119,11 +132,7 @@ struct LiveEditResult {
OK,
COMPILE_ERROR,
BLOCKED_BY_RUNNING_GENERATOR,
- BLOCKED_BY_FUNCTION_ABOVE_BREAK_FRAME,
- BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME,
- BLOCKED_BY_ACTIVE_FUNCTION,
- BLOCKED_BY_NEW_TARGET_IN_RESTART_FRAME,
- FRAME_RESTART_IS_NOT_SUPPORTED
+ BLOCKED_BY_ACTIVE_FUNCTION
};
Status status = OK;
bool stack_changed = false;
@@ -195,9 +204,8 @@ class WasmScript : public Script {
};
#endif // V8_ENABLE_WEBASSEMBLY
-V8_EXPORT_PRIVATE void GetLoadedScripts(
- Isolate* isolate,
- PersistentValueVector<Script>& scripts); // NOLINT(runtime/references)
+V8_EXPORT_PRIVATE void GetLoadedScripts(Isolate* isolate,
+ PersistentValueVector<Script>& scripts);
MaybeLocal<UnboundScript> CompileInspectorScript(Isolate* isolate,
Local<String> source);
@@ -480,7 +488,6 @@ class V8_EXPORT_PRIVATE StackTraceIterator {
virtual v8::Local<v8::Function> GetFunction() const = 0;
virtual std::unique_ptr<ScopeIterator> GetScopeIterator() const = 0;
- virtual bool Restart() = 0;
virtual v8::MaybeLocal<v8::Value> Evaluate(v8::Local<v8::String> source,
bool throw_on_side_effect) = 0;
};
@@ -523,6 +530,10 @@ V8_EXPORT_PRIVATE v8::MaybeLocal<v8::Value> EvaluateGlobal(
v8::Isolate* isolate, v8::Local<v8::String> source, EvaluateGlobalMode mode,
bool repl_mode = false);
+V8_EXPORT_PRIVATE v8::MaybeLocal<v8::Value> EvaluateGlobalForTesting(
+ v8::Isolate* isolate, v8::Local<v8::Script> function,
+ v8::debug::EvaluateGlobalMode mode, bool repl);
+
int GetDebuggingId(v8::Local<v8::Function> function);
bool SetFunctionBreakpoint(v8::Local<v8::Function> function,
diff --git a/deps/v8/src/debug/debug-scopes.cc b/deps/v8/src/debug/debug-scopes.cc
index 03d49fac5c..5f136d91d3 100644
--- a/deps/v8/src/debug/debug-scopes.cc
+++ b/deps/v8/src/debug/debug-scopes.cc
@@ -192,7 +192,13 @@ class ScopeChainRetriever {
// functions that have the same end position.
const bool position_fits_end =
closure_scope_ ? position_ < end : position_ <= end;
- return start < position_ && position_fits_end;
+ // While we're evaluating a class, the calling function will have a class
+ // context on the stack with a range that starts at Token::CLASS, and the
+ // source position will also point to Token::CLASS. To identify the
+ // matching scope we include start in the accepted range for class scopes.
+ const bool position_fits_start =
+ scope->is_class_scope() ? start <= position_ : start < position_;
+ return position_fits_start && position_fits_end;
}
};
diff --git a/deps/v8/src/debug/debug-stack-trace-iterator.cc b/deps/v8/src/debug/debug-stack-trace-iterator.cc
index 9904f781f9..93722d0f16 100644
--- a/deps/v8/src/debug/debug-stack-trace-iterator.cc
+++ b/deps/v8/src/debug/debug-stack-trace-iterator.cc
@@ -172,14 +172,6 @@ DebugStackTraceIterator::GetScopeIterator() const {
return std::make_unique<DebugScopeIterator>(isolate_, frame_inspector_.get());
}
-bool DebugStackTraceIterator::Restart() {
- DCHECK(!Done());
-#if V8_ENABLE_WEBASSEMBLY
- if (iterator_.is_wasm()) return false;
-#endif // V8_ENABLE_WEBASSEMBLY
- return LiveEdit::RestartFrame(iterator_.javascript_frame());
-}
-
v8::MaybeLocal<v8::Value> DebugStackTraceIterator::Evaluate(
v8::Local<v8::String> source, bool throw_on_side_effect) {
DCHECK(!Done());
diff --git a/deps/v8/src/debug/debug-stack-trace-iterator.h b/deps/v8/src/debug/debug-stack-trace-iterator.h
index 3319bc15f5..2d059e0ec5 100644
--- a/deps/v8/src/debug/debug-stack-trace-iterator.h
+++ b/deps/v8/src/debug/debug-stack-trace-iterator.h
@@ -31,7 +31,6 @@ class DebugStackTraceIterator final : public debug::StackTraceIterator {
v8::Local<v8::Function> GetFunction() const override;
std::unique_ptr<v8::debug::ScopeIterator> GetScopeIterator() const override;
- bool Restart() override;
v8::MaybeLocal<v8::Value> Evaluate(v8::Local<v8::String> source,
bool throw_on_side_effect) override;
diff --git a/deps/v8/src/debug/debug-wasm-objects.cc b/deps/v8/src/debug/debug-wasm-objects.cc
index 070221f433..39286ed027 100644
--- a/deps/v8/src/debug/debug-wasm-objects.cc
+++ b/deps/v8/src/debug/debug-wasm-objects.cc
@@ -323,15 +323,7 @@ struct FunctionsProxy : NamedDebugProxy<FunctionsProxy, kFunctionsProxy> {
static Handle<String> GetName(Isolate* isolate,
Handle<WasmInstanceObject> instance,
uint32_t index) {
- Handle<WasmModuleObject> module_object(instance->module_object(), isolate);
- MaybeHandle<String> name =
- WasmModuleObject::GetFunctionNameOrNull(isolate, module_object, index);
- if (name.is_null()) {
- name = GetNameFromImportsAndExportsOrNull(
- isolate, instance, wasm::ImportExportKindCode::kExternalFunction,
- index);
- }
- return GetNameOrDefault(isolate, name, "$func", index);
+ return GetWasmFunctionDebugName(isolate, instance, index);
}
};
@@ -1050,78 +1042,75 @@ std::unique_ptr<debug::ScopeIterator> GetWasmScopeIterator(WasmFrame* frame) {
return std::make_unique<DebugWasmScopeIterator>(frame);
}
-Handle<JSArray> GetWasmInstanceObjectInternalProperties(
- Handle<WasmInstanceObject> instance) {
- Isolate* isolate = instance->GetIsolate();
- Handle<FixedArray> result = isolate->factory()->NewFixedArray(2 * 5);
- int length = 0;
+Handle<String> GetWasmFunctionDebugName(Isolate* isolate,
+ Handle<WasmInstanceObject> instance,
+ uint32_t func_index) {
+ Handle<WasmModuleObject> module_object(instance->module_object(), isolate);
+ MaybeHandle<String> maybe_name = WasmModuleObject::GetFunctionNameOrNull(
+ isolate, module_object, func_index);
+ if (module_object->is_asm_js()) {
+ // In case of asm.js, we use the names from the function declarations.
+ return maybe_name.ToHandleChecked();
+ }
+ if (maybe_name.is_null()) {
+ maybe_name = GetNameFromImportsAndExportsOrNull(
+ isolate, instance, wasm::ImportExportKindCode::kExternalFunction,
+ func_index);
+ }
+ return GetNameOrDefault(isolate, maybe_name, "$func", func_index);
+}
- Handle<String> module_str =
- isolate->factory()->NewStringFromAsciiChecked("[[Module]]");
- Handle<Object> module_obj = handle(instance->module_object(), isolate);
- result->set(length++, *module_str);
- result->set(length++, *module_obj);
+Handle<ArrayList> AddWasmInstanceObjectInternalProperties(
+ Isolate* isolate, Handle<ArrayList> result,
+ Handle<WasmInstanceObject> instance) {
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[Module]]"),
+ handle(instance->module_object(), isolate));
if (FunctionsProxy::Count(isolate, instance) != 0) {
- Handle<String> functions_str =
- isolate->factory()->NewStringFromAsciiChecked("[[Functions]]");
- Handle<Object> functions_obj =
- GetOrCreateInstanceProxy<FunctionsProxy>(isolate, instance);
- result->set(length++, *functions_str);
- result->set(length++, *functions_obj);
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[Functions]]"),
+ GetOrCreateInstanceProxy<FunctionsProxy>(isolate, instance));
}
if (GlobalsProxy::Count(isolate, instance) != 0) {
- Handle<String> globals_str =
- isolate->factory()->NewStringFromAsciiChecked("[[Globals]]");
- Handle<Object> globals_obj =
- GetOrCreateInstanceProxy<GlobalsProxy>(isolate, instance);
- result->set(length++, *globals_str);
- result->set(length++, *globals_obj);
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[Globals]]"),
+ GetOrCreateInstanceProxy<GlobalsProxy>(isolate, instance));
}
if (MemoriesProxy::Count(isolate, instance) != 0) {
- Handle<String> memories_str =
- isolate->factory()->NewStringFromAsciiChecked("[[Memories]]");
- Handle<Object> memories_obj =
- GetOrCreateInstanceProxy<MemoriesProxy>(isolate, instance);
- result->set(length++, *memories_str);
- result->set(length++, *memories_obj);
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[Memories]]"),
+ GetOrCreateInstanceProxy<MemoriesProxy>(isolate, instance));
}
if (TablesProxy::Count(isolate, instance) != 0) {
- Handle<String> tables_str =
- isolate->factory()->NewStringFromAsciiChecked("[[Tables]]");
- Handle<Object> tables_obj =
- GetOrCreateInstanceProxy<TablesProxy>(isolate, instance);
- result->set(length++, *tables_str);
- result->set(length++, *tables_obj);
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[Tables]]"),
+ GetOrCreateInstanceProxy<TablesProxy>(isolate, instance));
}
- return isolate->factory()->NewJSArrayWithElements(result, PACKED_ELEMENTS,
- length);
+ return result;
}
-Handle<JSArray> GetWasmModuleObjectInternalProperties(
+Handle<ArrayList> AddWasmModuleObjectInternalProperties(
+ Isolate* isolate, Handle<ArrayList> result,
Handle<WasmModuleObject> module_object) {
- Isolate* isolate = module_object->GetIsolate();
- Handle<FixedArray> result = isolate->factory()->NewFixedArray(2 * 2);
- int length = 0;
-
- Handle<String> exports_str =
- isolate->factory()->NewStringFromStaticChars("[[Exports]]");
- Handle<JSArray> exports_obj = wasm::GetExports(isolate, module_object);
- result->set(length++, *exports_str);
- result->set(length++, *exports_obj);
-
- Handle<String> imports_str =
- isolate->factory()->NewStringFromStaticChars("[[Imports]]");
- Handle<JSArray> imports_obj = wasm::GetImports(isolate, module_object);
- result->set(length++, *imports_str);
- result->set(length++, *imports_obj);
-
- return isolate->factory()->NewJSArrayWithElements(result, PACKED_ELEMENTS,
- length);
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromStaticChars("[[Exports]]"),
+ wasm::GetExports(isolate, module_object));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromStaticChars("[[Imports]]"),
+ wasm::GetImports(isolate, module_object));
+ return result;
}
} // namespace internal
diff --git a/deps/v8/src/debug/debug-wasm-objects.h b/deps/v8/src/debug/debug-wasm-objects.h
index 6eb075b9b6..62e437b727 100644
--- a/deps/v8/src/debug/debug-wasm-objects.h
+++ b/deps/v8/src/debug/debug-wasm-objects.h
@@ -28,6 +28,7 @@ class WasmValue;
#include "torque-generated/src/debug/debug-wasm-objects-tq.inc"
+class ArrayList;
class WasmFrame;
class WasmInstanceObject;
class WasmModuleObject;
@@ -68,9 +69,15 @@ Handle<JSObject> GetWasmDebugProxy(WasmFrame* frame);
std::unique_ptr<debug::ScopeIterator> GetWasmScopeIterator(WasmFrame* frame);
-Handle<JSArray> GetWasmInstanceObjectInternalProperties(
+Handle<String> GetWasmFunctionDebugName(Isolate* isolate,
+ Handle<WasmInstanceObject> instance,
+ uint32_t func_index);
+
+Handle<ArrayList> AddWasmInstanceObjectInternalProperties(
+ Isolate* isolate, Handle<ArrayList> result,
Handle<WasmInstanceObject> instance);
-Handle<JSArray> GetWasmModuleObjectInternalProperties(
+Handle<ArrayList> AddWasmModuleObjectInternalProperties(
+ Isolate* isolate, Handle<ArrayList> result,
Handle<WasmModuleObject> module_object);
} // namespace internal
diff --git a/deps/v8/src/debug/debug.cc b/deps/v8/src/debug/debug.cc
index 0b873f7c8c..42b800ef75 100644
--- a/deps/v8/src/debug/debug.cc
+++ b/deps/v8/src/debug/debug.cc
@@ -352,7 +352,6 @@ void Debug::ThreadInit() {
thread_local_.return_value_ = Smi::zero();
thread_local_.last_breakpoint_id_ = 0;
clear_suspended_generator();
- thread_local_.restart_fp_ = kNullAddress;
base::Relaxed_Store(&thread_local_.current_debug_scope_,
static_cast<base::AtomicWord>(0));
thread_local_.break_on_next_function_call_ = false;
@@ -439,9 +438,6 @@ void Debug::Unload() {
}
void Debug::Break(JavaScriptFrame* frame, Handle<JSFunction> break_target) {
- // Initialize LiveEdit.
- LiveEdit::InitializeThreadLocal(this);
-
// Just continue if breaks are disabled or debugger cannot be loaded.
if (break_disabled()) return;
@@ -1245,7 +1241,7 @@ class DiscardBaselineCodeVisitor : public ThreadVisitor {
BaselineFrame* frame = BaselineFrame::cast(it.frame());
int bytecode_offset = frame->GetBytecodeOffset();
Address* pc_addr = frame->pc_address();
- Address advance = BUILTIN_CODE(isolate, InterpreterEnterBytecodeAdvance)
+ Address advance = BUILTIN_CODE(isolate, InterpreterEnterAtNextBytecode)
->InstructionStart();
PointerAuthentication::ReplacePC(pc_addr, advance, kSystemPointerSize);
InterpretedFrame::cast(it.Reframe())
@@ -1264,8 +1260,8 @@ class DiscardBaselineCodeVisitor : public ThreadVisitor {
Address* pc_addr = frame->pc_address();
Builtins::Name advance =
builtin_index == Builtins::kBaselineEnterAtBytecode
- ? Builtins::kInterpreterEnterBytecodeDispatch
- : Builtins::kInterpreterEnterBytecodeAdvance;
+ ? Builtins::kInterpreterEnterAtBytecode
+ : Builtins::kInterpreterEnterAtNextBytecode;
Address advance_pc =
isolate->builtins()->builtin(advance).InstructionStart();
PointerAuthentication::ReplacePC(pc_addr, advance_pc,
@@ -1353,7 +1349,8 @@ void Debug::PrepareFunctionForDebugExecution(
DCHECK(shared->is_compiled());
DCHECK(shared->HasDebugInfo());
Handle<DebugInfo> debug_info = GetOrCreateDebugInfo(shared);
- if (debug_info->flags() & DebugInfo::kPreparedForDebugExecution) return;
+ if (debug_info->flags(kRelaxedLoad) & DebugInfo::kPreparedForDebugExecution)
+ return;
if (shared->HasBytecodeArray()) {
SharedFunctionInfo::InstallDebugBytecode(shared, isolate_);
@@ -1372,8 +1369,9 @@ void Debug::PrepareFunctionForDebugExecution(
redirect_visitor.VisitThread(isolate_, isolate_->thread_local_top());
isolate_->thread_manager()->IterateArchivedThreads(&redirect_visitor);
}
- debug_info->set_flags(debug_info->flags() |
- DebugInfo::kPreparedForDebugExecution);
+ debug_info->set_flags(
+ debug_info->flags(kRelaxedLoad) | DebugInfo::kPreparedForDebugExecution,
+ kRelaxedStore);
}
void Debug::InstallDebugBreakTrampoline() {
@@ -1630,7 +1628,9 @@ bool Debug::FindSharedFunctionInfosIntersectingRange(
}
if (!triedTopLevelCompile && !candidateSubsumesRange &&
- script->shared_function_infos().length() > 0) {
+ script->shared_function_info_count() > 0) {
+ DCHECK_LE(script->shared_function_info_count(),
+ script->shared_function_infos().length());
MaybeObject maybeToplevel = script->shared_function_infos().Get(0);
HeapObject heap_object;
const bool topLevelInfoExists =
@@ -1751,10 +1751,10 @@ void Debug::CreateBreakInfo(Handle<SharedFunctionInfo> shared) {
Handle<FixedArray> break_points(
factory->NewFixedArray(DebugInfo::kEstimatedNofBreakPointsInFunction));
- int flags = debug_info->flags();
+ int flags = debug_info->flags(kRelaxedLoad);
flags |= DebugInfo::kHasBreakInfo;
if (CanBreakAtEntry(shared)) flags |= DebugInfo::kCanBreakAtEntry;
- debug_info->set_flags(flags);
+ debug_info->set_flags(flags, kRelaxedStore);
debug_info->set_break_points(*break_points);
SharedFunctionInfo::EnsureSourcePositionsAvailable(isolate_, shared);
@@ -1781,7 +1781,9 @@ void Debug::InstallCoverageInfo(Handle<SharedFunctionInfo> shared,
DCHECK(!debug_info->HasCoverageInfo());
- debug_info->set_flags(debug_info->flags() | DebugInfo::kHasCoverageInfo);
+ debug_info->set_flags(
+ debug_info->flags(kRelaxedLoad) | DebugInfo::kHasCoverageInfo,
+ kRelaxedStore);
debug_info->set_coverage_info(*coverage_info);
}
@@ -1871,27 +1873,6 @@ bool Debug::IsBreakAtReturn(JavaScriptFrame* frame) {
return location.IsReturn();
}
-void Debug::ScheduleFrameRestart(StackFrame* frame) {
- // Set a target FP for the FrameDropperTrampoline builtin to drop to once
- // we return from the debugger.
- DCHECK(frame->is_java_script());
- // Only reschedule to a frame further below a frame we already scheduled for.
- if (frame->fp() <= thread_local_.restart_fp_) return;
- // If the frame is optimized, trigger a deopt and jump into the
- // FrameDropperTrampoline in the deoptimizer.
- thread_local_.restart_fp_ = frame->fp();
-
- // Reset break frame ID to the frame below the restarted frame.
- StackTraceFrameIterator it(isolate_);
- thread_local_.break_frame_id_ = StackFrameId::NO_ID;
- for (StackTraceFrameIterator it(isolate_); !it.done(); it.Advance()) {
- if (it.frame()->fp() > thread_local_.restart_fp_) {
- thread_local_.break_frame_id_ = it.frame()->id();
- return;
- }
- }
-}
-
Handle<FixedArray> Debug::GetLoadedScripts() {
isolate_->heap()->CollectAllGarbage(Heap::kNoGCFlags,
GarbageCollectionReason::kDebugger);
@@ -2243,8 +2224,6 @@ void Debug::UpdateHookOnFunctionCall() {
}
void Debug::HandleDebugBreak(IgnoreBreakMode ignore_break_mode) {
- // Initialize LiveEdit.
- LiveEdit::InitializeThreadLocal(this);
// Ignore debug break during bootstrapping.
if (isolate_->bootstrapper()->IsActive()) return;
// Just continue if breaks are disabled.
@@ -2291,12 +2270,14 @@ void Debug::PrintBreakLocation() {
StackTraceFrameIterator iterator(isolate_);
if (iterator.done()) return;
CommonFrame* frame = iterator.frame();
- FrameSummary summary = FrameSummary::GetTop(frame);
- summary.EnsureSourcePositionsAvailable();
- int source_position = summary.SourcePosition();
- Handle<Object> script_obj = summary.script();
+ std::vector<FrameSummary> frames;
+ frame->Summarize(&frames);
+ int inlined_frame_index = static_cast<int>(frames.size() - 1);
+ FrameInspector inspector(frame, inlined_frame_index, isolate_);
+ int source_position = inspector.GetSourcePosition();
+ Handle<Object> script_obj = inspector.GetScript();
PrintF("[debug] break in function '");
- summary.FunctionName()->PrintOn(stdout);
+ inspector.GetFunctionName()->PrintOn(stdout);
PrintF("'.\n");
if (script_obj->IsScript()) {
Handle<Script> script = Handle<Script>::cast(script_obj);
diff --git a/deps/v8/src/debug/debug.h b/deps/v8/src/debug/debug.h
index 86c067c035..28c6942c42 100644
--- a/deps/v8/src/debug/debug.h
+++ b/deps/v8/src/debug/debug.h
@@ -311,9 +311,6 @@ class V8_EXPORT_PRIVATE Debug {
// Check whether this frame is just about to return.
bool IsBreakAtReturn(JavaScriptFrame* frame);
- // Support for LiveEdit
- void ScheduleFrameRestart(StackFrame* frame);
-
bool AllFramesOnStackAreBlackboxed();
// Set new script source, throw an exception if error occurred. When preview
@@ -380,13 +377,6 @@ class V8_EXPORT_PRIVATE Debug {
return reinterpret_cast<Address>(&thread_local_.suspended_generator_);
}
- Address restart_fp_address() {
- return reinterpret_cast<Address>(&thread_local_.restart_fp_);
- }
- bool will_restart() const {
- return thread_local_.restart_fp_ != kNullAddress;
- }
-
StepAction last_step_action() { return thread_local_.last_step_action_; }
bool break_on_next_function_call() const {
return thread_local_.break_on_next_function_call_;
@@ -548,9 +538,6 @@ class V8_EXPORT_PRIVATE Debug {
// The suspended generator object to track when stepping.
Object suspended_generator_;
- // The new frame pointer to drop to when restarting a frame.
- Address restart_fp_;
-
// Last used inspector breakpoint id.
int last_breakpoint_id_;
@@ -669,25 +656,6 @@ class SuppressDebug {
bool old_state_;
};
-// Code generator routines.
-class DebugCodegen : public AllStatic {
- public:
- enum DebugBreakCallHelperMode {
- SAVE_RESULT_REGISTER,
- IGNORE_RESULT_REGISTER
- };
-
- // Builtin to drop frames to restart function.
- static void GenerateFrameDropperTrampoline(MacroAssembler* masm);
-
- // Builtin to atomically (wrt deopts) handle debugger statement and
- // drop frames to restart function if necessary.
- static void GenerateHandleDebuggerStatement(MacroAssembler* masm);
-
- // Builtin to trigger a debug break before entering the function.
- static void GenerateDebugBreakTrampoline(MacroAssembler* masm);
-};
-
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/debug/ia32/debug-ia32.cc b/deps/v8/src/debug/ia32/debug-ia32.cc
deleted file mode 100644
index 72d4ac37df..0000000000
--- a/deps/v8/src/debug/ia32/debug-ia32.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_IA32
-
-#include "src/debug/debug.h"
-
-#include "src/codegen/macro-assembler.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frames-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ ret(0);
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by eax.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
- __ mov(ebp, eax);
- __ mov(edi, Operand(ebp, StandardFrameConstants::kFunctionOffset));
- __ mov(eax, Operand(ebp, StandardFrameConstants::kArgCOffset));
- __ leave();
-
- // The arguments are already in the stack (including any necessary padding),
- // we should not try to massage the arguments again.
- __ mov(ecx, Immediate(kDontAdaptArgumentsSentinel));
- __ mov(esi, FieldOperand(edi, JSFunction::kContextOffset));
- __ InvokeFunctionCode(edi, no_reg, ecx, eax, JUMP_FUNCTION);
-}
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-#undef __
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_IA32
diff --git a/deps/v8/src/debug/liveedit.cc b/deps/v8/src/debug/liveedit.cc
index 294f0e1f7b..a3065bb49f 100644
--- a/deps/v8/src/debug/liveedit.cc
+++ b/deps/v8/src/debug/liveedit.cc
@@ -66,31 +66,35 @@ class Differencer {
public:
explicit Differencer(Comparator::Input* input)
: input_(input), len1_(input->GetLength1()), len2_(input->GetLength2()) {
- buffer_ = NewArray<int>(len1_ * len2_);
- }
- ~Differencer() {
- DeleteArray(buffer_);
}
void Initialize() {
- int array_size = len1_ * len2_;
- for (int i = 0; i < array_size; i++) {
- buffer_[i] = kEmptyCellValue;
- }
}
// Makes sure that result for the full problem is calculated and stored
// in the table together with flags showing a path through subproblems.
void FillTable() {
- CompareUpToTail(0, 0);
+ // Determine common prefix to skip.
+ int minLen = std::min(len1_, len2_);
+ while (prefixLen_ < minLen && input_->Equals(prefixLen_, prefixLen_)) {
+ ++prefixLen_;
+ }
+
+ // Pre-fill common suffix in the table.
+ for (int pos1 = len1_, pos2 = len2_; pos1 > prefixLen_ &&
+ pos2 > prefixLen_ &&
+ input_->Equals(--pos1, --pos2);) {
+ set_value4_and_dir(pos1, pos2, 0, EQ);
+ }
+
+ CompareUpToTail(prefixLen_, prefixLen_);
}
void SaveResult(Comparator::Output* chunk_writer) {
ResultWriter writer(chunk_writer);
- int pos1 = 0;
- int pos2 = 0;
- while (true) {
+ if (prefixLen_) writer.eq(prefixLen_);
+ for (int pos1 = prefixLen_, pos2 = prefixLen_; true;) {
if (pos1 < len1_) {
if (pos2 < len2_) {
Direction dir = get_direction(pos1, pos2);
@@ -128,9 +132,10 @@ class Differencer {
private:
Comparator::Input* input_;
- int* buffer_;
+ std::map<std::pair<int, int>, int> buffer_;
int len1_;
int len2_;
+ int prefixLen_ = 0;
enum Direction {
EQ = 0,
@@ -144,51 +149,51 @@ class Differencer {
// Computes result for a subtask and optionally caches it in the buffer table.
// All results values are shifted to make space for flags in the lower bits.
int CompareUpToTail(int pos1, int pos2) {
- if (pos1 < len1_) {
- if (pos2 < len2_) {
- int cached_res = get_value4(pos1, pos2);
- if (cached_res == kEmptyCellValue) {
- Direction dir;
- int res;
- if (input_->Equals(pos1, pos2)) {
- res = CompareUpToTail(pos1 + 1, pos2 + 1);
- dir = EQ;
- } else {
- int res1 = CompareUpToTail(pos1 + 1, pos2) +
- (1 << kDirectionSizeBits);
- int res2 = CompareUpToTail(pos1, pos2 + 1) +
- (1 << kDirectionSizeBits);
- if (res1 == res2) {
- res = res1;
- dir = SKIP_ANY;
- } else if (res1 < res2) {
- res = res1;
- dir = SKIP1;
- } else {
- res = res2;
- dir = SKIP2;
- }
- }
- set_value4_and_dir(pos1, pos2, res, dir);
- cached_res = res;
- }
- return cached_res;
+ if (pos1 == len1_) {
+ return (len2_ - pos2) << kDirectionSizeBits;
+ }
+ if (pos2 == len2_) {
+ return (len1_ - pos1) << kDirectionSizeBits;
+ }
+ int res = get_value4(pos1, pos2);
+ if (res != kEmptyCellValue) {
+ return res;
+ }
+ Direction dir;
+ if (input_->Equals(pos1, pos2)) {
+ res = CompareUpToTail(pos1 + 1, pos2 + 1);
+ dir = EQ;
+ } else {
+ int res1 = CompareUpToTail(pos1 + 1, pos2) + (1 << kDirectionSizeBits);
+ int res2 = CompareUpToTail(pos1, pos2 + 1) + (1 << kDirectionSizeBits);
+ if (res1 == res2) {
+ res = res1;
+ dir = SKIP_ANY;
+ } else if (res1 < res2) {
+ res = res1;
+ dir = SKIP1;
} else {
- return (len1_ - pos1) << kDirectionSizeBits;
+ res = res2;
+ dir = SKIP2;
}
- } else {
- return (len2_ - pos2) << kDirectionSizeBits;
}
+ set_value4_and_dir(pos1, pos2, res, dir);
+ return res;
}
- inline int& get_cell(int i1, int i2) {
- return buffer_[i1 + i2 * len1_];
+ inline int get_cell(int i1, int i2) {
+ auto it = buffer_.find(std::make_pair(i1, i2));
+ return it == buffer_.end() ? kEmptyCellValue : it->second;
+ }
+
+ inline void set_cell(int i1, int i2, int value) {
+ buffer_.insert(std::make_pair(std::make_pair(i1, i2), value));
}
// Each cell keeps a value plus direction. Value is multiplied by 4.
void set_value4_and_dir(int i1, int i2, int value4, Direction dir) {
DCHECK_EQ(0, value4 & kDirectionMask);
- get_cell(i1, i2) = value4 | dir;
+ set_cell(i1, i2, value4 | dir);
}
int get_value4(int i1, int i2) {
@@ -214,10 +219,10 @@ class Differencer {
: chunk_writer_(chunk_writer), pos1_(0), pos2_(0),
pos1_begin_(-1), pos2_begin_(-1), has_open_chunk_(false) {
}
- void eq() {
+ void eq(int len = 1) {
FlushChunk();
- pos1_++;
- pos2_++;
+ pos1_ += len;
+ pos2_ += len;
}
void skip1(int len1) {
StartChunk();
@@ -782,10 +787,8 @@ bool ParseScript(Isolate* isolate, Handle<Script> script, ParseInfo* parse_info,
}
struct FunctionData {
- FunctionData(FunctionLiteral* literal, bool should_restart)
- : literal(literal),
- stack_position(NOT_ON_STACK),
- should_restart(should_restart) {}
+ explicit FunctionData(FunctionLiteral* literal)
+ : literal(literal), stack_position(NOT_ON_STACK) {}
FunctionLiteral* literal;
MaybeHandle<SharedFunctionInfo> shared;
@@ -794,23 +797,14 @@ struct FunctionData {
// In case of multiple functions with different stack position, the latest
// one (in the order below) is used, since it is the most restrictive.
// This is important only for functions to be restarted.
- enum StackPosition {
- NOT_ON_STACK,
- ABOVE_BREAK_FRAME,
- PATCHABLE,
- BELOW_NON_DROPPABLE_FRAME,
- ARCHIVED_THREAD,
- };
+ enum StackPosition { NOT_ON_STACK, ON_STACK };
StackPosition stack_position;
- bool should_restart;
};
class FunctionDataMap : public ThreadVisitor {
public:
- void AddInterestingLiteral(int script_id, FunctionLiteral* literal,
- bool should_restart) {
- map_.emplace(GetFuncId(script_id, literal),
- FunctionData{literal, should_restart});
+ void AddInterestingLiteral(int script_id, FunctionLiteral* literal) {
+ map_.emplace(GetFuncId(script_id, literal), FunctionData{literal});
}
bool Lookup(SharedFunctionInfo sfi, FunctionData** data) {
@@ -827,7 +821,7 @@ class FunctionDataMap : public ThreadVisitor {
return Lookup(GetFuncId(script->id(), literal), data);
}
- void Fill(Isolate* isolate, Address* restart_frame_fp) {
+ void Fill(Isolate* isolate) {
{
HeapObjectIterator iterator(isolate->heap(),
HeapObjectIterator::kFilterUnreachable);
@@ -854,38 +848,11 @@ class FunctionDataMap : public ThreadVisitor {
}
}
}
- FunctionData::StackPosition stack_position =
- isolate->debug()->break_frame_id() == StackFrameId::NO_ID
- ? FunctionData::PATCHABLE
- : FunctionData::ABOVE_BREAK_FRAME;
- for (StackFrameIterator it(isolate); !it.done(); it.Advance()) {
- StackFrame* frame = it.frame();
- if (stack_position == FunctionData::ABOVE_BREAK_FRAME) {
- if (frame->id() == isolate->debug()->break_frame_id()) {
- stack_position = FunctionData::PATCHABLE;
- }
- }
- if (stack_position == FunctionData::PATCHABLE &&
- (frame->is_exit() || frame->is_builtin_exit())) {
- stack_position = FunctionData::BELOW_NON_DROPPABLE_FRAME;
- continue;
- }
- if (!frame->is_java_script()) continue;
- std::vector<Handle<SharedFunctionInfo>> sfis;
- JavaScriptFrame::cast(frame)->GetFunctions(&sfis);
- for (auto& sfi : sfis) {
- if (stack_position == FunctionData::PATCHABLE &&
- IsResumableFunction(sfi->kind())) {
- stack_position = FunctionData::BELOW_NON_DROPPABLE_FRAME;
- }
- FunctionData* data = nullptr;
- if (!Lookup(*sfi, &data)) continue;
- if (!data->should_restart) continue;
- data->stack_position = stack_position;
- *restart_frame_fp = frame->fp();
- }
- }
+ // Visit the current thread stack.
+ VisitThread(isolate, isolate->thread_local_top());
+
+ // Visit the stacks of all archived threads.
isolate->thread_manager()->IterateArchivedThreads(this);
}
@@ -932,7 +899,7 @@ class FunctionDataMap : public ThreadVisitor {
for (auto& sfi : sfis) {
FunctionData* data = nullptr;
if (!Lookup(*sfi, &data)) continue;
- data->stack_position = FunctionData::ARCHIVED_THREAD;
+ data->stack_position = FunctionData::ON_STACK;
}
}
}
@@ -940,11 +907,10 @@ class FunctionDataMap : public ThreadVisitor {
std::map<FuncId, FunctionData> map_;
};
-bool CanPatchScript(
- const LiteralMap& changed, Handle<Script> script, Handle<Script> new_script,
- FunctionDataMap& function_data_map, // NOLINT(runtime/references)
- debug::LiveEditResult* result) {
- debug::LiveEditResult::Status status = debug::LiveEditResult::OK;
+bool CanPatchScript(const LiteralMap& changed, Handle<Script> script,
+ Handle<Script> new_script,
+ FunctionDataMap& function_data_map,
+ debug::LiveEditResult* result) {
for (const auto& mapping : changed) {
FunctionData* data = nullptr;
function_data_map.Lookup(script, mapping.first, &data);
@@ -953,55 +919,11 @@ bool CanPatchScript(
Handle<SharedFunctionInfo> sfi;
if (!data->shared.ToHandle(&sfi)) {
continue;
- } else if (!data->should_restart) {
- UNREACHABLE();
- } else if (data->stack_position == FunctionData::ABOVE_BREAK_FRAME) {
- status = debug::LiveEditResult::BLOCKED_BY_FUNCTION_ABOVE_BREAK_FRAME;
- } else if (data->stack_position ==
- FunctionData::BELOW_NON_DROPPABLE_FRAME) {
- status =
- debug::LiveEditResult::BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME;
- } else if (!data->running_generators.empty()) {
- status = debug::LiveEditResult::BLOCKED_BY_RUNNING_GENERATOR;
- } else if (data->stack_position == FunctionData::ARCHIVED_THREAD) {
- status = debug::LiveEditResult::BLOCKED_BY_ACTIVE_FUNCTION;
- }
- if (status != debug::LiveEditResult::OK) {
- result->status = status;
+ } else if (data->stack_position == FunctionData::ON_STACK) {
+ result->status = debug::LiveEditResult::BLOCKED_BY_ACTIVE_FUNCTION;
return false;
- }
- }
- return true;
-}
-
-bool CanRestartFrame(
- Isolate* isolate, Address fp,
- FunctionDataMap& function_data_map, // NOLINT(runtime/references)
- const LiteralMap& changed, debug::LiveEditResult* result) {
- DCHECK_GT(fp, 0);
- StackFrame* restart_frame = nullptr;
- StackFrameIterator it(isolate);
- for (; !it.done(); it.Advance()) {
- if (it.frame()->fp() == fp) {
- restart_frame = it.frame();
- break;
- }
- }
- DCHECK(restart_frame && restart_frame->is_java_script());
- if (!LiveEdit::kFrameDropperSupported) {
- result->status = debug::LiveEditResult::FRAME_RESTART_IS_NOT_SUPPORTED;
- return false;
- }
- std::vector<Handle<SharedFunctionInfo>> sfis;
- JavaScriptFrame::cast(restart_frame)->GetFunctions(&sfis);
- for (auto& sfi : sfis) {
- FunctionData* data = nullptr;
- if (!function_data_map.Lookup(*sfi, &data)) continue;
- auto new_literal_it = changed.find(data->literal);
- if (new_literal_it == changed.end()) continue;
- if (new_literal_it->second->scope()->new_target_var()) {
- result->status =
- debug::LiveEditResult::BLOCKED_BY_NEW_TARGET_IN_RESTART_FRAME;
+ } else if (!data->running_generators.empty()) {
+ result->status = debug::LiveEditResult::BLOCKED_BY_RUNNING_GENERATOR;
return false;
}
}
@@ -1092,24 +1014,17 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
FunctionDataMap function_data_map;
for (const auto& mapping : changed) {
- function_data_map.AddInterestingLiteral(script->id(), mapping.first, true);
- function_data_map.AddInterestingLiteral(new_script->id(), mapping.second,
- false);
+ function_data_map.AddInterestingLiteral(script->id(), mapping.first);
+ function_data_map.AddInterestingLiteral(new_script->id(), mapping.second);
}
for (const auto& mapping : unchanged) {
- function_data_map.AddInterestingLiteral(script->id(), mapping.first, false);
+ function_data_map.AddInterestingLiteral(script->id(), mapping.first);
}
- Address restart_frame_fp = 0;
- function_data_map.Fill(isolate, &restart_frame_fp);
+ function_data_map.Fill(isolate);
if (!CanPatchScript(changed, script, new_script, function_data_map, result)) {
return;
}
- if (restart_frame_fp &&
- !CanRestartFrame(isolate, restart_frame_fp, function_data_map, changed,
- result)) {
- return;
- }
if (preview) {
result->status = debug::LiveEditResult::OK;
@@ -1273,16 +1188,6 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
}
#endif
- if (restart_frame_fp) {
- for (StackFrameIterator it(isolate); !it.done(); it.Advance()) {
- if (it.frame()->fp() == restart_frame_fp) {
- isolate->debug()->ScheduleFrameRestart(it.frame());
- result->stack_changed = true;
- break;
- }
- }
- }
-
int script_id = script->id();
script->set_id(new_script->id());
new_script->set_id(script_id);
@@ -1290,42 +1195,6 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
result->script = ToApiHandle<v8::debug::Script>(new_script);
}
-void LiveEdit::InitializeThreadLocal(Debug* debug) {
- debug->thread_local_.restart_fp_ = 0;
-}
-
-bool LiveEdit::RestartFrame(JavaScriptFrame* frame) {
- if (!LiveEdit::kFrameDropperSupported) return false;
- Isolate* isolate = frame->isolate();
- StackFrameId break_frame_id = isolate->debug()->break_frame_id();
- bool break_frame_found = break_frame_id == StackFrameId::NO_ID;
- for (StackFrameIterator it(isolate); !it.done(); it.Advance()) {
- StackFrame* current = it.frame();
- break_frame_found = break_frame_found || break_frame_id == current->id();
- if (current->fp() == frame->fp()) {
- if (break_frame_found) {
- isolate->debug()->ScheduleFrameRestart(current);
- return true;
- } else {
- return false;
- }
- }
- if (!break_frame_found) continue;
- if (current->is_exit() || current->is_builtin_exit()) {
- return false;
- }
- if (!current->is_java_script()) continue;
- std::vector<Handle<SharedFunctionInfo>> shareds;
- JavaScriptFrame::cast(current)->GetFunctions(&shareds);
- for (auto& shared : shareds) {
- if (IsResumableFunction(shared->kind())) {
- return false;
- }
- }
- }
- return false;
-}
-
void LiveEdit::CompareStrings(Isolate* isolate, Handle<String> s1,
Handle<String> s2,
std::vector<SourceChangeRange>* diffs) {
diff --git a/deps/v8/src/debug/liveedit.h b/deps/v8/src/debug/liveedit.h
index 4291efb2d0..5e06d3f2a3 100644
--- a/deps/v8/src/debug/liveedit.h
+++ b/deps/v8/src/debug/liveedit.h
@@ -56,11 +56,6 @@ struct SourceChangeRange {
class V8_EXPORT_PRIVATE LiveEdit : AllStatic {
public:
- static void InitializeThreadLocal(Debug* debug);
-
- // Restarts the call frame and completely drops all frames above it.
- static bool RestartFrame(JavaScriptFrame* frame);
-
static void CompareStrings(Isolate* isolate, Handle<String> a,
Handle<String> b,
std::vector<SourceChangeRange>* diffs);
@@ -69,8 +64,6 @@ class V8_EXPORT_PRIVATE LiveEdit : AllStatic {
static void PatchScript(Isolate* isolate, Handle<Script> script,
Handle<String> source, bool preview,
debug::LiveEditResult* result);
- // Architecture-specific constant.
- static const bool kFrameDropperSupported;
};
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/debug/mips/debug-mips.cc b/deps/v8/src/debug/mips/debug-mips.cc
deleted file mode 100644
index d1ab6ec545..0000000000
--- a/deps/v8/src/debug/mips/debug-mips.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_MIPS
-
-#include "src/debug/debug.h"
-
-#include "src/codegen/macro-assembler.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frames-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ Ret();
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by a1.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
- __ mov(fp, a1);
- __ lw(a1, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
- __ lw(a0, MemOperand(fp, StandardFrameConstants::kArgCOffset));
-
- // Pop return address and frame.
- __ LeaveFrame(StackFrame::INTERNAL);
-
- __ li(a2, Operand(kDontAdaptArgumentsSentinel));
-
- __ InvokeFunction(a1, a2, a0, JUMP_FUNCTION);
-}
-
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-#undef __
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_MIPS
diff --git a/deps/v8/src/debug/mips64/debug-mips64.cc b/deps/v8/src/debug/mips64/debug-mips64.cc
deleted file mode 100644
index 7b8e9e9744..0000000000
--- a/deps/v8/src/debug/mips64/debug-mips64.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_MIPS64
-
-#include "src/debug/debug.h"
-
-#include "src/codegen/macro-assembler.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frames-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ Ret();
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by a1.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
- __ mov(fp, a1);
- __ Ld(a1, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
- __ Ld(a0, MemOperand(fp, StandardFrameConstants::kArgCOffset));
-
- // Pop return address and frame.
- __ LeaveFrame(StackFrame::INTERNAL);
-
- __ li(a2, Operand(kDontAdaptArgumentsSentinel));
-
- __ InvokeFunction(a1, a2, a0, JUMP_FUNCTION);
-}
-
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-#undef __
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_MIPS64
diff --git a/deps/v8/src/debug/ppc/OWNERS b/deps/v8/src/debug/ppc/OWNERS
deleted file mode 100644
index 02c2cd757c..0000000000
--- a/deps/v8/src/debug/ppc/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-junyan@redhat.com
-joransiu@ca.ibm.com
-midawson@redhat.com
-mfarazma@redhat.com
-vasili.skurydzin@ibm.com
diff --git a/deps/v8/src/debug/ppc/debug-ppc.cc b/deps/v8/src/debug/ppc/debug-ppc.cc
deleted file mode 100644
index c083708d3a..0000000000
--- a/deps/v8/src/debug/ppc/debug-ppc.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2014 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.
-
-#if V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
-
-#include "src/debug/debug.h"
-
-#include "src/codegen/macro-assembler.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frames-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ Ret();
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by r4.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
-
- __ mr(fp, r4);
- __ LoadP(r4, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
- __ LoadP(r3, MemOperand(fp, StandardFrameConstants::kArgCOffset));
- __ LeaveFrame(StackFrame::INTERNAL);
-
- // The arguments are already in the stack (including any necessary padding),
- // we should not try to massage the arguments again.
- __ mov(r5, Operand(kDontAdaptArgumentsSentinel));
- __ InvokeFunction(r4, r5, r3, JUMP_FUNCTION);
-}
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-#undef __
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
diff --git a/deps/v8/src/debug/riscv64/debug-riscv64.cc b/deps/v8/src/debug/riscv64/debug-riscv64.cc
deleted file mode 100644
index b292300150..0000000000
--- a/deps/v8/src/debug/riscv64/debug-riscv64.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2021 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.
-
-#if V8_TARGET_ARCH_RISCV64
-
-#include "src/codegen/macro-assembler.h"
-#include "src/debug/debug.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frames-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ Ret();
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by a1.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
- __ mv(fp, a1);
- __ Ld(a1, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
-
- // Pop return address and frame.
- __ LeaveFrame(StackFrame::INTERNAL);
-
- __ Ld(a0, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset));
- __ Lhu(a0,
- FieldMemOperand(a0, SharedFunctionInfo::kFormalParameterCountOffset));
- __ mv(a2, a0);
-
- __ InvokeFunction(a1, a2, a0, JUMP_FUNCTION);
-}
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-#undef __
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_RISCV64
diff --git a/deps/v8/src/debug/s390/debug-s390.cc b/deps/v8/src/debug/s390/debug-s390.cc
deleted file mode 100644
index b58e70b851..0000000000
--- a/deps/v8/src/debug/s390/debug-s390.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2015 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.
-
-#include "src/init/v8.h"
-
-#if V8_TARGET_ARCH_S390
-
-#include "src/debug/debug.h"
-
-#include "src/codegen/macro-assembler.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frames-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ Ret();
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by r3.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
-
- __ mov(fp, r3);
- __ LoadU64(r3, MemOperand(fp, StandardFrameConstants::kFunctionOffset));
- __ LoadU64(r2, MemOperand(fp, StandardFrameConstants::kArgCOffset));
- __ LeaveFrame(StackFrame::INTERNAL);
-
- // The arguments are already in the stack (including any necessary padding),
- // we should not try to massage the arguments again.
- __ mov(r4, Operand(kDontAdaptArgumentsSentinel));
- __ InvokeFunction(r3, r4, r2, JUMP_FUNCTION);
-}
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-#undef __
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_S390
diff --git a/deps/v8/src/debug/x64/debug-x64.cc b/deps/v8/src/debug/x64/debug-x64.cc
deleted file mode 100644
index 2209213831..0000000000
--- a/deps/v8/src/debug/x64/debug-x64.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2012 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.
-
-#if V8_TARGET_ARCH_X64
-
-#include "src/debug/debug.h"
-
-#include "src/codegen/assembler.h"
-#include "src/codegen/macro-assembler.h"
-#include "src/debug/liveedit.h"
-#include "src/execution/frames-inl.h"
-#include "src/objects/objects-inl.h"
-
-namespace v8 {
-namespace internal {
-
-#define __ ACCESS_MASM(masm)
-
-void DebugCodegen::GenerateHandleDebuggerStatement(MacroAssembler* masm) {
- {
- FrameScope scope(masm, StackFrame::INTERNAL);
- __ CallRuntime(Runtime::kHandleDebuggerStatement, 0);
- }
- __ MaybeDropFrames();
-
- // Return to caller.
- __ ret(0);
-}
-
-void DebugCodegen::GenerateFrameDropperTrampoline(MacroAssembler* masm) {
- // Frame is being dropped:
- // - Drop to the target frame specified by rbx.
- // - Look up current function on the frame.
- // - Leave the frame.
- // - Restart the frame by calling the function.
- __ movq(rbp, rbx);
- __ movq(rdi, Operand(rbp, StandardFrameConstants::kFunctionOffset));
- __ movq(rax, Operand(rbp, StandardFrameConstants::kArgCOffset));
- __ leave();
-
- // The arguments are already in the stack (including any necessary padding),
- // we should not try to massage the arguments again.
- __ movq(rbx, Immediate(kDontAdaptArgumentsSentinel));
- __ InvokeFunction(rdi, no_reg, rbx, rax, JUMP_FUNCTION);
-}
-
-const bool LiveEdit::kFrameDropperSupported = true;
-
-#undef __
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_TARGET_ARCH_X64
diff --git a/deps/v8/src/deoptimizer/deoptimizer-cfi-builtins.cc b/deps/v8/src/deoptimizer/deoptimizer-cfi-builtins.cc
index 0b7472dbea..bbeacc561d 100644
--- a/deps/v8/src/deoptimizer/deoptimizer-cfi-builtins.cc
+++ b/deps/v8/src/deoptimizer/deoptimizer-cfi-builtins.cc
@@ -6,8 +6,8 @@
#include "src/deoptimizer/deoptimizer.h"
extern "C" {
-void Builtins_InterpreterEnterBytecodeAdvance();
-void Builtins_InterpreterEnterBytecodeDispatch();
+void Builtins_InterpreterEnterAtBytecode();
+void Builtins_InterpreterEnterAtNextBytecode();
void Builtins_ContinueToCodeStubBuiltinWithResult();
void Builtins_ContinueToCodeStubBuiltin();
void Builtins_ContinueToJavaScriptBuiltinWithResult();
@@ -24,8 +24,8 @@ namespace internal {
// List of allowed builtin addresses that we can return to in the deoptimizer.
constexpr function_ptr builtins[] = {
- &Builtins_InterpreterEnterBytecodeAdvance,
- &Builtins_InterpreterEnterBytecodeDispatch,
+ &Builtins_InterpreterEnterAtBytecode,
+ &Builtins_InterpreterEnterAtNextBytecode,
&Builtins_ContinueToCodeStubBuiltinWithResult,
&Builtins_ContinueToCodeStubBuiltin,
&Builtins_ContinueToJavaScriptBuiltinWithResult,
diff --git a/deps/v8/src/deoptimizer/deoptimizer.cc b/deps/v8/src/deoptimizer/deoptimizer.cc
index 7c4562dbd5..eabd9ebb41 100644
--- a/deps/v8/src/deoptimizer/deoptimizer.cc
+++ b/deps/v8/src/deoptimizer/deoptimizer.cc
@@ -380,8 +380,7 @@ void Deoptimizer::DeoptimizeMarkedCodeForContext(NativeContext native_context) {
}
void Deoptimizer::DeoptimizeAll(Isolate* isolate) {
- RuntimeCallTimerScope runtimeTimer(isolate,
- RuntimeCallCounterId::kDeoptimizeCode);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kDeoptimizeCode);
TimerEventScope<TimerEventDeoptimizeCode> timer(isolate);
TRACE_EVENT0("v8", "V8.DeoptimizeCode");
TraceDeoptAll(isolate);
@@ -399,8 +398,7 @@ void Deoptimizer::DeoptimizeAll(Isolate* isolate) {
}
void Deoptimizer::DeoptimizeMarkedCode(Isolate* isolate) {
- RuntimeCallTimerScope runtimeTimer(isolate,
- RuntimeCallCounterId::kDeoptimizeCode);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kDeoptimizeCode);
TimerEventScope<TimerEventDeoptimizeCode> timer(isolate);
TRACE_EVENT0("v8", "V8.DeoptimizeCode");
TraceDeoptMarked(isolate);
@@ -427,8 +425,7 @@ void Deoptimizer::MarkAllCodeForContext(NativeContext native_context) {
void Deoptimizer::DeoptimizeFunction(JSFunction function, Code code) {
Isolate* isolate = function.GetIsolate();
- RuntimeCallTimerScope runtimeTimer(isolate,
- RuntimeCallCounterId::kDeoptimizeCode);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kDeoptimizeCode);
TimerEventScope<TimerEventDeoptimizeCode> timer(isolate);
TRACE_EVENT0("v8", "V8.DeoptimizeCode");
function.ResetIfBytecodeFlushed();
@@ -969,8 +966,8 @@ void Deoptimizer::DoComputeOutputFrames() {
topmost->GetRegisterValues()->SetRegister(kRootRegister.code(),
isolate()->isolate_root());
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
- topmost->GetRegisterValues()->SetRegister(kPointerCageBaseRegister.code(),
- isolate()->isolate_root());
+ topmost->GetRegisterValues()->SetRegister(kPtrComprCageBaseRegister.code(),
+ isolate()->cage_base());
#endif
// Print some helpful diagnostic information.
@@ -999,8 +996,8 @@ Builtins::Name DispatchBuiltinFor(bool is_baseline, bool advance_bc) {
return advance_bc ? Builtins::kBaselineEnterAtNextBytecode
: Builtins::kBaselineEnterAtBytecode;
} else {
- return advance_bc ? Builtins::kInterpreterEnterBytecodeAdvance
- : Builtins::kInterpreterEnterBytecodeDispatch;
+ return advance_bc ? Builtins::kInterpreterEnterAtNextBytecode
+ : Builtins::kInterpreterEnterAtBytecode;
}
}
diff --git a/deps/v8/src/deoptimizer/riscv64/deoptimizer-riscv64.cc b/deps/v8/src/deoptimizer/riscv64/deoptimizer-riscv64.cc
index 1cbe85ba5d..b7dceed503 100644
--- a/deps/v8/src/deoptimizer/riscv64/deoptimizer-riscv64.cc
+++ b/deps/v8/src/deoptimizer/riscv64/deoptimizer-riscv64.cc
@@ -8,9 +8,9 @@ namespace v8 {
namespace internal {
const bool Deoptimizer::kSupportsFixedDeoptExitSizes = true;
-const int Deoptimizer::kNonLazyDeoptExitSize = 5 * kInstrSize;
-const int Deoptimizer::kLazyDeoptExitSize = 5 * kInstrSize;
-const int Deoptimizer::kEagerWithResumeBeforeArgsSize = 6 * kInstrSize;
+const int Deoptimizer::kNonLazyDeoptExitSize = 4 * kInstrSize;
+const int Deoptimizer::kLazyDeoptExitSize = 4 * kInstrSize;
+const int Deoptimizer::kEagerWithResumeBeforeArgsSize = 5 * kInstrSize;
const int Deoptimizer::kEagerWithResumeDeoptExitSize =
kEagerWithResumeBeforeArgsSize + 4 * kInstrSize;
const int Deoptimizer::kEagerWithResumeImmedArgs1PcOffset = kInstrSize;
diff --git a/deps/v8/src/deoptimizer/translated-state.cc b/deps/v8/src/deoptimizer/translated-state.cc
index 02c473d22b..2ad4bf0d25 100644
--- a/deps/v8/src/deoptimizer/translated-state.cc
+++ b/deps/v8/src/deoptimizer/translated-state.cc
@@ -1883,7 +1883,7 @@ void TranslatedState::InitializeJSObjectAt(
WRITE_BARRIER(*object_storage, offset, *field_value);
}
}
- object_storage->synchronized_set_map(*map);
+ object_storage->set_map(*map, kReleaseStore);
}
void TranslatedState::InitializeObjectWithTaggedFieldsAt(
@@ -1920,7 +1920,7 @@ void TranslatedState::InitializeObjectWithTaggedFieldsAt(
WRITE_BARRIER(*object_storage, offset, *field_value);
}
- object_storage->synchronized_set_map(*map);
+ object_storage->set_map(*map, kReleaseStore);
}
TranslatedValue* TranslatedState::ResolveCapturedObject(TranslatedValue* slot) {
diff --git a/deps/v8/src/diagnostics/compilation-statistics.cc b/deps/v8/src/diagnostics/compilation-statistics.cc
index d7a67617e7..40bb239b12 100644
--- a/deps/v8/src/diagnostics/compilation-statistics.cc
+++ b/deps/v8/src/diagnostics/compilation-statistics.cc
@@ -2,11 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <ostream> // NOLINT(readability/streams)
+#include "src/diagnostics/compilation-statistics.h"
+
+#include <ostream>
#include <vector>
#include "src/base/platform/platform.h"
-#include "src/diagnostics/compilation-statistics.h"
namespace v8 {
namespace internal {
diff --git a/deps/v8/src/diagnostics/disassembler.cc b/deps/v8/src/diagnostics/disassembler.cc
index 6e6ecb3f03..91a7a72bbf 100644
--- a/deps/v8/src/diagnostics/disassembler.cc
+++ b/deps/v8/src/diagnostics/disassembler.cc
@@ -237,10 +237,11 @@ static void PrintRelocInfo(StringBuilder* out, Isolate* isolate,
out->AddFormatted(" ;; %sobject: %s",
is_compressed ? "(compressed) " : "", obj_name.get());
} else if (rmode == RelocInfo::EXTERNAL_REFERENCE) {
+ Address address = relocinfo->target_external_reference();
const char* reference_name =
- ref_encoder ? ref_encoder->NameOfAddress(
- isolate, relocinfo->target_external_reference())
- : "unknown";
+ ref_encoder
+ ? ref_encoder->NameOfAddress(isolate, address)
+ : ExternalReferenceTable::NameOfIsolateIndependentAddress(address);
out->AddFormatted(" ;; external reference (%s)", reference_name);
} else if (RelocInfo::IsCodeTargetMode(rmode)) {
out->AddFormatted(" ;; code:");
@@ -441,14 +442,16 @@ int Disassembler::Decode(Isolate* isolate, std::ostream* os, byte* begin,
"Builtins disassembly requires a readable .text section");
V8NameConverter v8NameConverter(isolate, code);
if (isolate) {
- // We have an isolate, so support external reference names.
+ // We have an isolate, so support external reference names from V8 and
+ // embedder.
SealHandleScope shs(isolate);
DisallowGarbageCollection no_alloc;
ExternalReferenceEncoder ref_encoder(isolate);
return DecodeIt(isolate, &ref_encoder, os, code, v8NameConverter, begin,
end, current_pc);
} else {
- // No isolate => isolate-independent code. No external reference names.
+ // No isolate => isolate-independent code. Only V8 External references
+ // available.
return DecodeIt(nullptr, nullptr, os, code, v8NameConverter, begin, end,
current_pc);
}
diff --git a/deps/v8/src/diagnostics/eh-frame.cc b/deps/v8/src/diagnostics/eh-frame.cc
index ccafd23cb7..0c85ae3ca4 100644
--- a/deps/v8/src/diagnostics/eh-frame.cc
+++ b/deps/v8/src/diagnostics/eh-frame.cc
@@ -55,7 +55,7 @@ STATIC_CONST_MEMBER_DEFINITION const int EhFrameConstants::kEhFrameHdrSize;
STATIC_CONST_MEMBER_DEFINITION const uint32_t EhFrameWriter::kInt32Placeholder;
// static
-void EhFrameWriter::WriteEmptyEhFrame(std::ostream& stream) { // NOLINT
+void EhFrameWriter::WriteEmptyEhFrame(std::ostream& stream) {
stream.put(EhFrameConstants::kEhFrameHdrVersion);
// .eh_frame pointer encoding specifier.
@@ -480,7 +480,7 @@ class V8_NODISCARD StreamModifiersScope final {
} // namespace
// static
-void EhFrameDisassembler::DumpDwarfDirectives(std::ostream& stream, // NOLINT
+void EhFrameDisassembler::DumpDwarfDirectives(std::ostream& stream,
const byte* start,
const byte* end) {
StreamModifiersScope modifiers_scope(&stream);
@@ -592,7 +592,7 @@ void EhFrameDisassembler::DumpDwarfDirectives(std::ostream& stream, // NOLINT
}
}
-void EhFrameDisassembler::DisassembleToStream(std::ostream& stream) { // NOLINT
+void EhFrameDisassembler::DisassembleToStream(std::ostream& stream) {
// The encoded CIE size does not include the size field itself.
const int cie_size =
base::ReadUnalignedValue<uint32_t>(reinterpret_cast<Address>(start_)) +
diff --git a/deps/v8/src/diagnostics/eh-frame.h b/deps/v8/src/diagnostics/eh-frame.h
index 9a22a97d58..0d32085b0b 100644
--- a/deps/v8/src/diagnostics/eh-frame.h
+++ b/deps/v8/src/diagnostics/eh-frame.h
@@ -80,7 +80,7 @@ class V8_EXPORT_PRIVATE EhFrameWriter {
//
// It is effectively a valid eh_frame_hdr with an empty look up table.
//
- static void WriteEmptyEhFrame(std::ostream& stream); // NOLINT
+ static void WriteEmptyEhFrame(std::ostream& stream);
// Write the CIE and FDE header. Call it before any other method.
void Initialize();
@@ -293,11 +293,11 @@ class EhFrameDisassembler final {
EhFrameDisassembler(const EhFrameDisassembler&) = delete;
EhFrameDisassembler& operator=(const EhFrameDisassembler&) = delete;
- void DisassembleToStream(std::ostream& stream); // NOLINT
+ void DisassembleToStream(std::ostream& stream);
private:
- static void DumpDwarfDirectives(std::ostream& stream, // NOLINT
- const byte* start, const byte* end);
+ static void DumpDwarfDirectives(std::ostream& stream, const byte* start,
+ const byte* end);
static const char* DwarfRegisterCodeToString(int code);
diff --git a/deps/v8/src/diagnostics/ia32/disasm-ia32.cc b/deps/v8/src/diagnostics/ia32/disasm-ia32.cc
index ae4cc02459..687a214cab 100644
--- a/deps/v8/src/diagnostics/ia32/disasm-ia32.cc
+++ b/deps/v8/src/diagnostics/ia32/disasm-ia32.cc
@@ -368,7 +368,7 @@ class DisassemblerIA32 {
Disassembler::kAbortOnUnimplementedOpcode) {
FATAL("Unimplemented instruction in disassembler");
} else {
- AppendToBuffer("'Unimplemented Instruction'");
+ AppendToBuffer("'Unimplemented instruction'");
}
}
};
@@ -2076,6 +2076,7 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
data += 3;
} else {
UnimplementedInstruction();
+ data += 1;
}
} break;
@@ -2889,7 +2890,7 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
outp += v8::internal::SNPrintF(out_buffer + outp, " %s", tmp_buffer_.begin());
return instr_len;
-} // NOLINT (function is too long)
+}
//------------------------------------------------------------------------------
diff --git a/deps/v8/src/diagnostics/objects-debug.cc b/deps/v8/src/diagnostics/objects-debug.cc
index b48df9385a..6cfd8b3ad0 100644
--- a/deps/v8/src/diagnostics/objects-debug.cc
+++ b/deps/v8/src/diagnostics/objects-debug.cc
@@ -61,6 +61,7 @@
#include "src/objects/js-weak-refs-inl.h"
#include "src/objects/literal-objects-inl.h"
#include "src/objects/maybe-object.h"
+#include "src/objects/megadom-handler-inl.h"
#include "src/objects/microtask-inl.h"
#include "src/objects/module-inl.h"
#include "src/objects/oddball-inl.h"
@@ -115,7 +116,7 @@ namespace internal {
}
void Object::ObjectVerify(Isolate* isolate) {
- RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kObjectVerify);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kObjectVerify);
if (IsSmi()) {
Smi::cast(*this).SmiVerify(isolate);
} else {
@@ -137,7 +138,7 @@ void MaybeObject::VerifyMaybeObjectPointer(Isolate* isolate, MaybeObject p) {
if (p->GetHeapObject(&heap_object)) {
HeapObject::VerifyHeapPointer(isolate, heap_object);
} else {
- CHECK(p->IsSmi() || p->IsCleared());
+ CHECK(p->IsSmi() || p->IsCleared() || MapWord::IsPacked(p->ptr()));
}
}
@@ -457,7 +458,11 @@ void Map::MapVerify(Isolate* isolate) {
(kTaggedSize <= instance_size() &&
static_cast<size_t>(instance_size()) < heap->Capacity()));
if (IsContextMap()) {
- CHECK(native_context().IsNativeContext());
+ // The map for the NativeContext is allocated before the NativeContext
+ // itself, so it may happen that during a GC the native_context() is still
+ // null.
+ CHECK(native_context_or_null().IsNull() ||
+ native_context().IsNativeContext());
} else {
if (GetBackPointer().IsUndefined(isolate)) {
// Root maps must not have descriptors in the descriptor array that do not
@@ -675,7 +680,7 @@ void SloppyArgumentsElementsVerify(Isolate* isolate,
for (int i = 0; i < nofMappedParameters; i++) {
// Verify that each context-mapped argument is either the hole or a valid
// Smi within context length range.
- Object mapped = elements.mapped_entries(i);
+ Object mapped = elements.mapped_entries(i, kRelaxedLoad);
if (mapped.IsTheHole(isolate)) {
// Slow sloppy arguments can be holey.
if (!is_fast) continue;
@@ -828,7 +833,6 @@ void JSFunction::JSFunctionVerify(Isolate* isolate) {
void SharedFunctionInfo::SharedFunctionInfoVerify(Isolate* isolate) {
// TODO(leszeks): Add a TorqueGeneratedClassVerifier for LocalIsolate.
- TorqueGeneratedClassVerifiers::SharedFunctionInfoVerify(*this, isolate);
this->SharedFunctionInfoVerify(ReadOnlyRoots(isolate));
}
@@ -1433,7 +1437,7 @@ void JSArrayBufferView::JSArrayBufferViewVerify(Isolate* isolate) {
void JSTypedArray::JSTypedArrayVerify(Isolate* isolate) {
TorqueGeneratedClassVerifiers::JSTypedArrayVerify(*this, isolate);
- CHECK_LE(length(), JSTypedArray::kMaxLength);
+ CHECK_LE(GetLength(), JSTypedArray::kMaxLength);
}
void JSDataView::JSDataViewVerify(Isolate* isolate) {
@@ -1685,7 +1689,13 @@ void AllocationSite::AllocationSiteVerify(Isolate* isolate) {
void Script::ScriptVerify(Isolate* isolate) {
TorqueGeneratedClassVerifiers::ScriptVerify(*this, isolate);
- for (int i = 0; i < shared_function_infos().length(); ++i) {
+ if V8_UNLIKELY (type() == Script::TYPE_WEB_SNAPSHOT) {
+ CHECK_LE(shared_function_info_count(), shared_function_infos().length());
+ } else {
+ // No overallocating shared_function_infos.
+ CHECK_EQ(shared_function_info_count(), shared_function_infos().length());
+ }
+ for (int i = 0; i < shared_function_info_count(); ++i) {
MaybeObject maybe_object = shared_function_infos().Get(i);
HeapObject heap_object;
CHECK(maybe_object->IsWeak() || maybe_object->IsCleared() ||
@@ -1736,6 +1746,12 @@ void StackFrameInfo::StackFrameInfoVerify(Isolate* isolate) {
#endif // V8_ENABLE_WEBASSEMBLY
}
+void FunctionTemplateRareData::FunctionTemplateRareDataVerify(
+ Isolate* isolate) {
+ CHECK(c_function_overloads().IsFixedArray() ||
+ c_function_overloads().IsUndefined(isolate));
+}
+
#endif // VERIFY_HEAP
#ifdef DEBUG
@@ -1795,6 +1811,7 @@ void JSObject::IncrementSpillStatistics(Isolate* isolate,
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
{
info->number_of_objects_with_fast_elements_++;
diff --git a/deps/v8/src/diagnostics/objects-printer.cc b/deps/v8/src/diagnostics/objects-printer.cc
index aa1713e3b3..2c416513a9 100644
--- a/deps/v8/src/diagnostics/objects-printer.cc
+++ b/deps/v8/src/diagnostics/objects-printer.cc
@@ -42,7 +42,7 @@ void Object::Print() const {
os << std::flush;
}
-void Object::Print(std::ostream& os) const { // NOLINT
+void Object::Print(std::ostream& os) const {
if (IsSmi()) {
os << "Smi: " << std::hex << "0x" << Smi::ToInt(*this);
os << std::dec << " (" << Smi::ToInt(*this) << ")\n";
@@ -54,7 +54,7 @@ void Object::Print(std::ostream& os) const { // NOLINT
namespace {
void PrintHeapObjectHeaderWithoutMap(HeapObject object, std::ostream& os,
- const char* id) { // NOLINT
+ const char* id) {
os << reinterpret_cast<void*>(object.ptr()) << ": [";
if (id != nullptr) {
os << id;
@@ -96,12 +96,12 @@ void PrintDictionaryContents(std::ostream& os, T dict) {
}
} // namespace
-void HeapObject::PrintHeader(std::ostream& os, const char* id) { // NOLINT
+void HeapObject::PrintHeader(std::ostream& os, const char* id) {
PrintHeapObjectHeaderWithoutMap(*this, os, id);
if (!IsMap()) os << "\n - map: " << Brief(map());
}
-void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT
+void HeapObject::HeapObjectPrint(std::ostream& os) {
InstanceType instance_type = map().instance_type();
if (instance_type < FIRST_NONSTRING_TYPE) {
@@ -261,24 +261,24 @@ void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT
}
}
-void ByteArray::ByteArrayPrint(std::ostream& os) { // NOLINT
+void ByteArray::ByteArrayPrint(std::ostream& os) {
PrintHeader(os, "ByteArray");
os << "\n - length: " << length()
<< "\n - data-start: " << static_cast<void*>(GetDataStartAddress())
<< "\n";
}
-void BytecodeArray::BytecodeArrayPrint(std::ostream& os) { // NOLINT
+void BytecodeArray::BytecodeArrayPrint(std::ostream& os) {
PrintHeader(os, "BytecodeArray");
os << "\n";
Disassemble(os);
}
-void FreeSpace::FreeSpacePrint(std::ostream& os) { // NOLINT
+void FreeSpace::FreeSpacePrint(std::ostream& os) {
os << "free space, size " << Size() << "\n";
}
-bool JSObject::PrintProperties(std::ostream& os) { // NOLINT
+bool JSObject::PrintProperties(std::ostream& os) {
if (HasFastProperties()) {
DescriptorArray descs = map().instance_descriptors(GetIsolate());
int nof_inobject_properties = map().GetInObjectProperties();
@@ -344,7 +344,7 @@ double GetScalarElement(T array, int index) {
}
template <class T>
-void DoPrintElements(std::ostream& os, Object object, int length) { // NOLINT
+void DoPrintElements(std::ostream& os, Object object, int length) {
const bool print_the_hole = std::is_same<T, FixedDoubleArray>::value;
T array = T::cast(object);
if (length == 0) return;
@@ -448,7 +448,7 @@ void PrintSloppyArgumentElements(std::ostream& os, ElementsKind kind,
<< "\n 1: arguments_store: " << Brief(arguments_store)
<< "\n parameter to context slot map:";
for (int i = 0; i < elements.length(); i++) {
- Object mapped_entry = elements.mapped_entries(i);
+ Object mapped_entry = elements.mapped_entries(i, kRelaxedLoad);
os << "\n " << i << ": param(" << i << "): " << Brief(mapped_entry);
if (mapped_entry.IsTheHole()) {
os << " in the arguments_store[" << i << "]";
@@ -468,20 +468,20 @@ void PrintSloppyArgumentElements(std::ostream& os, ElementsKind kind,
}
}
-void PrintEmbedderData(PtrComprCageBase cage_base, std::ostream& os,
+void PrintEmbedderData(Isolate* isolate, std::ostream& os,
EmbedderDataSlot slot) {
DisallowGarbageCollection no_gc;
Object value = slot.load_tagged();
os << Brief(value);
void* raw_pointer;
- if (slot.ToAlignedPointer(cage_base, &raw_pointer)) {
+ if (slot.ToAlignedPointer(isolate, &raw_pointer)) {
os << ", aligned pointer: " << raw_pointer;
}
}
} // namespace
-void JSObject::PrintElements(std::ostream& os) { // NOLINT
+void JSObject::PrintElements(std::ostream& os) {
// Don't call GetElementsKind, its validation code can cause the printer to
// fail when debugging.
os << " - elements: " << Brief(elements()) << " {";
@@ -508,7 +508,7 @@ void JSObject::PrintElements(std::ostream& os) { // NOLINT
#define PRINT_ELEMENTS(Type, type, TYPE, elementType) \
case TYPE##_ELEMENTS: { \
- size_t length = JSTypedArray::cast(*this).length(); \
+ size_t length = JSTypedArray::cast(*this).GetLength(); \
bool is_on_heap = JSTypedArray::cast(*this).is_on_heap(); \
const elementType* data_ptr = \
static_cast<const elementType*>(JSTypedArray::cast(*this).DataPtr()); \
@@ -516,6 +516,7 @@ void JSObject::PrintElements(std::ostream& os) { // NOLINT
break; \
}
TYPED_ARRAYS(PRINT_ELEMENTS)
+ RAB_GSAB_TYPED_ARRAYS(PRINT_ELEMENTS)
#undef PRINT_ELEMENTS
case DICTIONARY_ELEMENTS:
@@ -534,7 +535,7 @@ void JSObject::PrintElements(std::ostream& os) { // NOLINT
}
static void JSObjectPrintHeader(std::ostream& os, JSObject obj,
- const char* id) { // NOLINT
+ const char* id) {
Isolate* isolate = obj.GetIsolate();
obj.PrintHeader(os, id);
// Don't call GetElementsKind, its validation code can cause the printer to
@@ -560,8 +561,7 @@ static void JSObjectPrintHeader(std::ostream& os, JSObject obj,
}
}
-static void JSObjectPrintBody(std::ostream& os,
- JSObject obj, // NOLINT
+static void JSObjectPrintBody(std::ostream& os, JSObject obj,
bool print_elements = true) {
os << "\n - properties: ";
Object properties_or_hash = obj.raw_properties_or_hash();
@@ -573,28 +573,28 @@ static void JSObjectPrintBody(std::ostream& os,
os << "}\n";
if (print_elements) {
- size_t length = obj.IsJSTypedArray() ? JSTypedArray::cast(obj).length()
+ size_t length = obj.IsJSTypedArray() ? JSTypedArray::cast(obj).GetLength()
: obj.elements().length();
if (length > 0) obj.PrintElements(os);
}
int embedder_fields = obj.GetEmbedderFieldCount();
if (embedder_fields > 0) {
- PtrComprCageBase cage_base = GetPtrComprCageBase(obj);
+ Isolate* isolate = GetIsolateForHeapSandbox(obj);
os << " - embedder fields = {";
for (int i = 0; i < embedder_fields; i++) {
os << "\n ";
- PrintEmbedderData(cage_base, os, EmbedderDataSlot(obj, i));
+ PrintEmbedderData(isolate, os, EmbedderDataSlot(obj, i));
}
os << "\n }\n";
}
}
-void JSObject::JSObjectPrint(std::ostream& os) { // NOLINT
+void JSObject::JSObjectPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, nullptr);
JSObjectPrintBody(os, *this);
}
-void JSGeneratorObject::JSGeneratorObjectPrint(std::ostream& os) { // NOLINT
+void JSGeneratorObject::JSGeneratorObjectPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSGeneratorObject");
os << "\n - function: " << Brief(function());
os << "\n - context: " << Brief(context());
@@ -654,13 +654,13 @@ void JSGeneratorObject::JSGeneratorObjectPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSArray::JSArrayPrint(std::ostream& os) { // NOLINT
+void JSArray::JSArrayPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSArray");
os << "\n - length: " << Brief(this->length());
JSObjectPrintBody(os, *this);
}
-void JSPromise::JSPromisePrint(std::ostream& os) { // NOLINT
+void JSPromise::JSPromisePrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSPromise");
os << "\n - status: " << JSPromise::Status(status());
if (status() == Promise::kPending) {
@@ -673,15 +673,14 @@ void JSPromise::JSPromisePrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSRegExp::JSRegExpPrint(std::ostream& os) { // NOLINT
+void JSRegExp::JSRegExpPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSRegExp");
os << "\n - data: " << Brief(data());
os << "\n - source: " << Brief(source());
JSObjectPrintBody(os, *this);
}
-void JSRegExpStringIterator::JSRegExpStringIteratorPrint(
- std::ostream& os) { // NOLINT
+void JSRegExpStringIterator::JSRegExpStringIteratorPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSRegExpStringIterator");
os << "\n - regex: " << Brief(iterating_reg_exp());
os << "\n - string: " << Brief(iterated_string());
@@ -691,7 +690,7 @@ void JSRegExpStringIterator::JSRegExpStringIteratorPrint(
JSObjectPrintBody(os, *this);
}
-void Symbol::SymbolPrint(std::ostream& os) { // NOLINT
+void Symbol::SymbolPrint(std::ostream& os) {
PrintHeader(os, "Symbol");
os << "\n - hash: " << hash();
os << "\n - description: " << Brief(description());
@@ -762,14 +761,14 @@ void ObjectBoilerplateDescription::ObjectBoilerplateDescriptionPrint(
}
void EmbedderDataArray::EmbedderDataArrayPrint(std::ostream& os) {
- PtrComprCageBase cage_base = GetPtrComprCageBase(*this);
+ Isolate* isolate = GetIsolateForHeapSandbox(*this);
PrintHeader(os, "EmbedderDataArray");
os << "\n - length: " << length();
EmbedderDataSlot start(*this, 0);
EmbedderDataSlot end(*this, length());
for (EmbedderDataSlot slot = start; slot < end; ++slot) {
os << "\n ";
- PrintEmbedderData(cage_base, os, slot);
+ PrintEmbedderData(isolate, os, slot);
}
os << "\n";
}
@@ -779,6 +778,34 @@ void FixedArray::FixedArrayPrint(std::ostream& os) {
}
namespace {
+const char* SideEffectType2String(SideEffectType type) {
+ switch (type) {
+ case SideEffectType::kHasSideEffect:
+ return "kHasSideEffect";
+ case SideEffectType::kHasNoSideEffect:
+ return "kHasNoSideEffect";
+ case SideEffectType::kHasSideEffectToReceiver:
+ return "kHasSideEffectToReceiver";
+ }
+}
+} // namespace
+
+void AccessorInfo::AccessorInfoPrint(std::ostream& os) {
+ TorqueGeneratedAccessorInfo<AccessorInfo, Struct>::AccessorInfoPrint(os);
+ os << " - all_can_read: " << all_can_read();
+ os << "\n - all_can_write: " << all_can_write();
+ os << "\n - is_special_data_property: " << is_special_data_property();
+ os << "\n - is_sloppy: " << is_sloppy();
+ os << "\n - replace_on_access: " << replace_on_access();
+ os << "\n - getter_side_effect_type: "
+ << SideEffectType2String(getter_side_effect_type());
+ os << "\n - setter_side_effect_type: "
+ << SideEffectType2String(setter_side_effect_type());
+ os << "\n - initial_attributes: " << initial_property_attributes();
+ os << '\n';
+}
+
+namespace {
void PrintContextWithHeader(std::ostream& os, Context context,
const char* type) {
context.PrintHeader(os, type);
@@ -1021,7 +1048,7 @@ void SwissNameDictionary::SwissNameDictionaryPrint(std::ostream& os) {
os.flags(sav_flags);
}
-void PropertyArray::PropertyArrayPrint(std::ostream& os) { // NOLINT
+void PropertyArray::PropertyArrayPrint(std::ostream& os) {
PrintHeader(os, "PropertyArray");
os << "\n - length: " << length();
os << "\n - hash: " << Hash();
@@ -1029,7 +1056,7 @@ void PropertyArray::PropertyArrayPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void FixedDoubleArray::FixedDoubleArrayPrint(std::ostream& os) { // NOLINT
+void FixedDoubleArray::FixedDoubleArrayPrint(std::ostream& os) {
PrintHeader(os, "FixedDoubleArray");
os << "\n - length: " << length();
DoPrintElements<FixedDoubleArray>(os, *this, length());
@@ -1051,12 +1078,12 @@ void WeakArrayList::WeakArrayListPrint(std::ostream& os) {
os << "\n";
}
-void TransitionArray::TransitionArrayPrint(std::ostream& os) { // NOLINT
+void TransitionArray::TransitionArrayPrint(std::ostream& os) {
PrintHeader(os, "TransitionArray");
PrintInternal(os);
}
-void FeedbackCell::FeedbackCellPrint(std::ostream& os) { // NOLINT
+void FeedbackCell::FeedbackCellPrint(std::ostream& os) {
PrintHeader(os, "FeedbackCell");
ReadOnlyRoots roots = GetReadOnlyRoots();
if (map() == roots.no_closures_cell_map()) {
@@ -1081,7 +1108,7 @@ void FeedbackVectorSpec::Print() {
os << std::flush;
}
-void FeedbackVectorSpec::FeedbackVectorSpecPrint(std::ostream& os) { // NOLINT
+void FeedbackVectorSpec::FeedbackVectorSpecPrint(std::ostream& os) {
os << " - slot_count: " << slot_count();
if (slot_count() == 0) {
os << " (empty)\n";
@@ -1116,7 +1143,7 @@ void ClosureFeedbackCellArray::ClosureFeedbackCellArrayPrint(std::ostream& os) {
PrintFixedArrayWithHeader(os, *this, "ClosureFeedbackCellArray");
}
-void FeedbackVector::FeedbackVectorPrint(std::ostream& os) { // NOLINT
+void FeedbackVector::FeedbackVectorPrint(std::ostream& os) {
PrintHeader(os, "FeedbackVector");
os << "\n - length: " << length();
if (length() == 0) {
@@ -1157,13 +1184,12 @@ void FeedbackVector::FeedbackVectorPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void FeedbackVector::FeedbackSlotPrint(std::ostream& os,
- FeedbackSlot slot) { // NOLINT
+void FeedbackVector::FeedbackSlotPrint(std::ostream& os, FeedbackSlot slot) {
FeedbackNexus nexus(*this, slot);
nexus.Print(os);
}
-void FeedbackNexus::Print(std::ostream& os) { // NOLINT
+void FeedbackNexus::Print(std::ostream& os) {
switch (kind()) {
case FeedbackSlotKind::kCall:
case FeedbackSlotKind::kCloneObject:
@@ -1206,7 +1232,7 @@ void FeedbackNexus::Print(std::ostream& os) { // NOLINT
}
}
-void Oddball::OddballPrint(std::ostream& os) { // NOLINT
+void Oddball::OddballPrint(std::ostream& os) {
PrintHeapObjectHeaderWithoutMap(*this, os, "Oddball");
os << ": ";
String s = to_string();
@@ -1216,42 +1242,39 @@ void Oddball::OddballPrint(std::ostream& os) { // NOLINT
os << std::endl;
}
-void JSAsyncFunctionObject::JSAsyncFunctionObjectPrint(
- std::ostream& os) { // NOLINT
+void JSAsyncFunctionObject::JSAsyncFunctionObjectPrint(std::ostream& os) {
JSGeneratorObjectPrint(os);
}
-void JSAsyncGeneratorObject::JSAsyncGeneratorObjectPrint(
- std::ostream& os) { // NOLINT
+void JSAsyncGeneratorObject::JSAsyncGeneratorObjectPrint(std::ostream& os) {
JSGeneratorObjectPrint(os);
}
-void JSArgumentsObject::JSArgumentsObjectPrint(std::ostream& os) { // NOLINT
+void JSArgumentsObject::JSArgumentsObjectPrint(std::ostream& os) {
JSObjectPrint(os);
}
-void JSStringIterator::JSStringIteratorPrint(std::ostream& os) { // NOLINT
+void JSStringIterator::JSStringIteratorPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSStringIterator");
os << "\n - string: " << Brief(string());
os << "\n - index: " << index();
JSObjectPrintBody(os, *this);
}
-void JSAsyncFromSyncIterator::JSAsyncFromSyncIteratorPrint(
- std::ostream& os) { // NOLINT
+void JSAsyncFromSyncIterator::JSAsyncFromSyncIteratorPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSAsyncFromSyncIterator");
os << "\n - sync_iterator: " << Brief(sync_iterator());
os << "\n - next: " << Brief(next());
JSObjectPrintBody(os, *this);
}
-void JSPrimitiveWrapper::JSPrimitiveWrapperPrint(std::ostream& os) { // NOLINT
+void JSPrimitiveWrapper::JSPrimitiveWrapperPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSPrimitiveWrapper");
os << "\n - value: " << Brief(value());
JSObjectPrintBody(os, *this);
}
-void JSMessageObject::JSMessageObjectPrint(std::ostream& os) { // NOLINT
+void JSMessageObject::JSMessageObjectPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSMessageObject");
os << "\n - type: " << static_cast<int>(type());
os << "\n - arguments: " << Brief(argument());
@@ -1262,7 +1285,7 @@ void JSMessageObject::JSMessageObjectPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void String::StringPrint(std::ostream& os) { // NOLINT
+void String::StringPrint(std::ostream& os) {
PrintHeapObjectHeaderWithoutMap(*this, os, "String");
os << ": ";
os << PrefixForDebugPrint();
@@ -1270,7 +1293,7 @@ void String::StringPrint(std::ostream& os) { // NOLINT
os << SuffixForDebugPrint();
}
-void Name::NamePrint(std::ostream& os) { // NOLINT
+void Name::NamePrint(std::ostream& os) {
if (IsString()) {
String::cast(*this).StringPrint(os);
} else {
@@ -1281,7 +1304,7 @@ void Name::NamePrint(std::ostream& os) { // NOLINT
static const char* const weekdays[] = {"???", "Sun", "Mon", "Tue",
"Wed", "Thu", "Fri", "Sat"};
-void JSDate::JSDatePrint(std::ostream& os) { // NOLINT
+void JSDate::JSDatePrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSDate");
os << "\n - value: " << Brief(value());
if (!year().IsSmi()) {
@@ -1302,7 +1325,7 @@ void JSDate::JSDatePrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSProxy::JSProxyPrint(std::ostream& os) { // NOLINT
+void JSProxy::JSProxyPrint(std::ostream& os) {
PrintHeader(os, "JSProxy");
os << "\n - target: ";
target().ShortPrint(os);
@@ -1311,31 +1334,31 @@ void JSProxy::JSProxyPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void JSSet::JSSetPrint(std::ostream& os) { // NOLINT
+void JSSet::JSSetPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSSet");
os << " - table: " << Brief(table());
JSObjectPrintBody(os, *this);
}
-void JSMap::JSMapPrint(std::ostream& os) { // NOLINT
+void JSMap::JSMapPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSMap");
os << " - table: " << Brief(table());
JSObjectPrintBody(os, *this);
}
-void JSCollectionIterator::JSCollectionIteratorPrint(
- std::ostream& os, const char* name) { // NOLINT
+void JSCollectionIterator::JSCollectionIteratorPrint(std::ostream& os,
+ const char* name) {
JSObjectPrintHeader(os, *this, name);
os << "\n - table: " << Brief(table());
os << "\n - index: " << Brief(index());
JSObjectPrintBody(os, *this);
}
-void JSSetIterator::JSSetIteratorPrint(std::ostream& os) { // NOLINT
+void JSSetIterator::JSSetIteratorPrint(std::ostream& os) {
JSCollectionIteratorPrint(os, "JSSetIterator");
}
-void JSMapIterator::JSMapIteratorPrint(std::ostream& os) { // NOLINT
+void JSMapIterator::JSMapIteratorPrint(std::ostream& os) {
JSCollectionIteratorPrint(os, "JSMapIterator");
}
@@ -1377,19 +1400,19 @@ void JSFinalizationRegistry::JSFinalizationRegistryPrint(std::ostream& os) {
JSObjectPrintBody(os, *this);
}
-void JSWeakMap::JSWeakMapPrint(std::ostream& os) { // NOLINT
+void JSWeakMap::JSWeakMapPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSWeakMap");
os << "\n - table: " << Brief(table());
JSObjectPrintBody(os, *this);
}
-void JSWeakSet::JSWeakSetPrint(std::ostream& os) { // NOLINT
+void JSWeakSet::JSWeakSetPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSWeakSet");
os << "\n - table: " << Brief(table());
JSObjectPrintBody(os, *this);
}
-void JSArrayBuffer::JSArrayBufferPrint(std::ostream& os) { // NOLINT
+void JSArrayBuffer::JSArrayBufferPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSArrayBuffer");
os << "\n - backing_store: " << backing_store();
os << "\n - byte_length: " << byte_length();
@@ -1397,15 +1420,16 @@ void JSArrayBuffer::JSArrayBufferPrint(std::ostream& os) { // NOLINT
if (is_detachable()) os << "\n - detachable";
if (was_detached()) os << "\n - detached";
if (is_shared()) os << "\n - shared";
+ if (is_resizable()) os << "\n - resizable";
JSObjectPrintBody(os, *this, !was_detached());
}
-void JSTypedArray::JSTypedArrayPrint(std::ostream& os) { // NOLINT
+void JSTypedArray::JSTypedArrayPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSTypedArray");
os << "\n - buffer: " << Brief(buffer());
os << "\n - byte_offset: " << byte_offset();
os << "\n - byte_length: " << byte_length();
- os << "\n - length: " << length();
+ os << "\n - length: " << GetLength();
os << "\n - data_ptr: " << DataPtr();
Tagged_t base_ptr = static_cast<Tagged_t>(base_pointer().ptr());
os << "\n - base_pointer: "
@@ -1417,6 +1441,8 @@ void JSTypedArray::JSTypedArrayPrint(std::ostream& os) { // NOLINT
return;
}
if (WasDetached()) os << "\n - detached";
+ if (is_length_tracking()) os << "\n - length-tracking";
+ if (is_backed_by_rab()) os << "\n - backed-by-rab";
JSObjectPrintBody(os, *this, !WasDetached());
}
@@ -1428,7 +1454,7 @@ void JSArrayIterator::JSArrayIteratorPrint(std::ostream& os) { // NOLING
JSObjectPrintBody(os, *this);
}
-void JSDataView::JSDataViewPrint(std::ostream& os) { // NOLINT
+void JSDataView::JSDataViewPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSDataView");
os << "\n - buffer =" << Brief(buffer());
os << "\n - byte_offset: " << byte_offset();
@@ -1441,7 +1467,7 @@ void JSDataView::JSDataViewPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this, !WasDetached());
}
-void JSBoundFunction::JSBoundFunctionPrint(std::ostream& os) { // NOLINT
+void JSBoundFunction::JSBoundFunctionPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSBoundFunction");
os << "\n - bound_target_function: " << Brief(bound_target_function());
os << "\n - bound_this: " << Brief(bound_this());
@@ -1449,7 +1475,7 @@ void JSBoundFunction::JSBoundFunctionPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSFunction::JSFunctionPrint(std::ostream& os) { // NOLINT
+void JSFunction::JSFunctionPrint(std::ostream& os) {
Isolate* isolate = GetIsolate();
JSObjectPrintHeader(os, *this, "Function");
os << "\n - function prototype: ";
@@ -1525,7 +1551,7 @@ void SharedFunctionInfo::PrintSourceCode(std::ostream& os) {
}
}
-void SharedFunctionInfo::SharedFunctionInfoPrint(std::ostream& os) { // NOLINT
+void SharedFunctionInfo::SharedFunctionInfoPrint(std::ostream& os) {
PrintHeader(os, "SharedFunctionInfo");
os << "\n - name: ";
if (HasSharedName()) {
@@ -1576,7 +1602,7 @@ void SharedFunctionInfo::SharedFunctionInfoPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void JSGlobalProxy::JSGlobalProxyPrint(std::ostream& os) { // NOLINT
+void JSGlobalProxy::JSGlobalProxyPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSGlobalProxy");
if (!GetIsolate()->bootstrapper()->IsActive()) {
os << "\n - native context: " << Brief(native_context());
@@ -1584,7 +1610,7 @@ void JSGlobalProxy::JSGlobalProxyPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSGlobalObject::JSGlobalObjectPrint(std::ostream& os) { // NOLINT
+void JSGlobalObject::JSGlobalObjectPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSGlobalObject");
if (!GetIsolate()->bootstrapper()->IsActive()) {
os << "\n - native context: " << Brief(native_context());
@@ -1593,7 +1619,7 @@ void JSGlobalObject::JSGlobalObjectPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void PropertyCell::PropertyCellPrint(std::ostream& os) { // NOLINT
+void PropertyCell::PropertyCellPrint(std::ostream& os) {
PrintHeader(os, "PropertyCell");
os << "\n - name: ";
name().NamePrint(os);
@@ -1605,7 +1631,7 @@ void PropertyCell::PropertyCellPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void Code::CodePrint(std::ostream& os) { // NOLINT
+void Code::CodePrint(std::ostream& os) {
PrintHeader(os, "Code");
os << "\n";
#ifdef ENABLE_DISASSEMBLER
@@ -1613,26 +1639,26 @@ void Code::CodePrint(std::ostream& os) { // NOLINT
#endif
}
-void CodeDataContainer::CodeDataContainerPrint(std::ostream& os) { // NOLINT
+void CodeDataContainer::CodeDataContainerPrint(std::ostream& os) {
PrintHeader(os, "CodeDataContainer");
os << "\n - kind_specific_flags: " << kind_specific_flags();
os << "\n";
}
-void Foreign::ForeignPrint(std::ostream& os) { // NOLINT
+void Foreign::ForeignPrint(std::ostream& os) {
PrintHeader(os, "Foreign");
os << "\n - foreign address : " << reinterpret_cast<void*>(foreign_address());
os << "\n";
}
-void CallbackTask::CallbackTaskPrint(std::ostream& os) { // NOLINT
+void CallbackTask::CallbackTaskPrint(std::ostream& os) {
PrintHeader(os, "CallbackTask");
os << "\n - callback: " << Brief(callback());
os << "\n - data: " << Brief(data());
os << "\n";
}
-void CallableTask::CallableTaskPrint(std::ostream& os) { // NOLINT
+void CallableTask::CallableTaskPrint(std::ostream& os) {
PrintHeader(os, "CallableTask");
os << "\n - context: " << Brief(context());
os << "\n - callable: " << Brief(callable());
@@ -1640,7 +1666,7 @@ void CallableTask::CallableTaskPrint(std::ostream& os) { // NOLINT
}
void PromiseFulfillReactionJobTask::PromiseFulfillReactionJobTaskPrint(
- std::ostream& os) { // NOLINT
+ std::ostream& os) {
PrintHeader(os, "PromiseFulfillReactionJobTask");
os << "\n - argument: " << Brief(argument());
os << "\n - context: " << Brief(context());
@@ -1650,7 +1676,7 @@ void PromiseFulfillReactionJobTask::PromiseFulfillReactionJobTaskPrint(
}
void PromiseRejectReactionJobTask::PromiseRejectReactionJobTaskPrint(
- std::ostream& os) { // NOLINT
+ std::ostream& os) {
PrintHeader(os, "PromiseRejectReactionJobTask");
os << "\n - argument: " << Brief(argument());
os << "\n - context: " << Brief(context());
@@ -1660,7 +1686,7 @@ void PromiseRejectReactionJobTask::PromiseRejectReactionJobTaskPrint(
}
void PromiseResolveThenableJobTask::PromiseResolveThenableJobTaskPrint(
- std::ostream& os) { // NOLINT
+ std::ostream& os) {
PrintHeader(os, "PromiseResolveThenableJobTask");
os << "\n - context: " << Brief(context());
os << "\n - promise_to_resolve: " << Brief(promise_to_resolve());
@@ -1669,7 +1695,7 @@ void PromiseResolveThenableJobTask::PromiseResolveThenableJobTaskPrint(
os << "\n";
}
-void PromiseCapability::PromiseCapabilityPrint(std::ostream& os) { // NOLINT
+void PromiseCapability::PromiseCapabilityPrint(std::ostream& os) {
PrintHeader(os, "PromiseCapability");
os << "\n - promise: " << Brief(promise());
os << "\n - resolve: " << Brief(resolve());
@@ -1677,7 +1703,7 @@ void PromiseCapability::PromiseCapabilityPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void PromiseReaction::PromiseReactionPrint(std::ostream& os) { // NOLINT
+void PromiseReaction::PromiseReactionPrint(std::ostream& os) {
PrintHeader(os, "PromiseReaction");
os << "\n - next: " << Brief(next());
os << "\n - reject_handler: " << Brief(reject_handler());
@@ -1686,8 +1712,7 @@ void PromiseReaction::PromiseReactionPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void AsyncGeneratorRequest::AsyncGeneratorRequestPrint(
- std::ostream& os) { // NOLINT
+void AsyncGeneratorRequest::AsyncGeneratorRequestPrint(std::ostream& os) {
PrintHeader(os, "AsyncGeneratorRequest");
const char* mode = "Invalid!";
switch (resume_mode()) {
@@ -1708,7 +1733,7 @@ void AsyncGeneratorRequest::AsyncGeneratorRequestPrint(
}
void SourceTextModuleInfoEntry::SourceTextModuleInfoEntryPrint(
- std::ostream& os) { // NOLINT
+ std::ostream& os) {
PrintHeader(os, "SourceTextModuleInfoEntry");
os << "\n - export_name: " << Brief(export_name());
os << "\n - local_name: " << Brief(local_name());
@@ -1726,7 +1751,7 @@ static void PrintModuleFields(Module module, std::ostream& os) {
os << "\n - exception: " << Brief(module.exception());
}
-void Module::ModulePrint(std::ostream& os) { // NOLINT
+void Module::ModulePrint(std::ostream& os) {
if (this->IsSourceTextModule()) {
SourceTextModule::cast(*this).SourceTextModulePrint(os);
} else if (this->IsSyntheticModule()) {
@@ -1736,7 +1761,7 @@ void Module::ModulePrint(std::ostream& os) { // NOLINT
}
}
-void SourceTextModule::SourceTextModulePrint(std::ostream& os) { // NOLINT
+void SourceTextModule::SourceTextModulePrint(std::ostream& os) {
PrintHeader(os, "SourceTextModule");
PrintModuleFields(*this, os);
os << "\n - sfi/code/info: " << Brief(code());
@@ -1744,13 +1769,13 @@ void SourceTextModule::SourceTextModulePrint(std::ostream& os) { // NOLINT
os << "\n - script: " << Brief(script);
os << "\n - origin: " << Brief(script.GetNameOrSourceURL());
os << "\n - requested_modules: " << Brief(requested_modules());
- os << "\n - import_meta: " << Brief(import_meta());
+ os << "\n - import_meta: " << Brief(import_meta(kAcquireLoad));
os << "\n - cycle_root: " << Brief(cycle_root());
os << "\n - async_evaluating_ordinal: " << async_evaluating_ordinal();
os << "\n";
}
-void SyntheticModule::SyntheticModulePrint(std::ostream& os) { // NOLINT
+void SyntheticModule::SyntheticModulePrint(std::ostream& os) {
PrintHeader(os, "SyntheticModule");
PrintModuleFields(*this, os);
os << "\n - export_names: " << Brief(export_names());
@@ -1758,13 +1783,13 @@ void SyntheticModule::SyntheticModulePrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void JSModuleNamespace::JSModuleNamespacePrint(std::ostream& os) { // NOLINT
+void JSModuleNamespace::JSModuleNamespacePrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSModuleNamespace");
os << "\n - module: " << Brief(module());
JSObjectPrintBody(os, *this);
}
-void PrototypeInfo::PrototypeInfoPrint(std::ostream& os) { // NOLINT
+void PrototypeInfo::PrototypeInfoPrint(std::ostream& os) {
PrintHeader(os, "PrototypeInfo");
os << "\n - module namespace: " << Brief(module_namespace());
os << "\n - prototype users: " << Brief(prototype_users());
@@ -1774,7 +1799,7 @@ void PrototypeInfo::PrototypeInfoPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void ClassPositions::ClassPositionsPrint(std::ostream& os) { // NOLINT
+void ClassPositions::ClassPositionsPrint(std::ostream& os) {
PrintHeader(os, "ClassPositions");
os << "\n - start position: " << start();
os << "\n - end position: " << end();
@@ -1782,15 +1807,15 @@ void ClassPositions::ClassPositionsPrint(std::ostream& os) { // NOLINT
}
void ArrayBoilerplateDescription::ArrayBoilerplateDescriptionPrint(
- std::ostream& os) { // NOLINT
+ std::ostream& os) {
PrintHeader(os, "ArrayBoilerplateDescription");
- os << "\n - elements kind: " << elements_kind();
+ os << "\n - elements kind: " << ElementsKindToString(elements_kind());
os << "\n - constant elements: " << Brief(constant_elements());
os << "\n";
}
void RegExpBoilerplateDescription::RegExpBoilerplateDescriptionPrint(
- std::ostream& os) { // NOLINT
+ std::ostream& os) {
PrintHeader(os, "RegExpBoilerplateDescription");
os << "\n - data: " << Brief(data());
os << "\n - source: " << Brief(source());
@@ -1799,7 +1824,7 @@ void RegExpBoilerplateDescription::RegExpBoilerplateDescriptionPrint(
}
#if V8_ENABLE_WEBASSEMBLY
-void AsmWasmData::AsmWasmDataPrint(std::ostream& os) { // NOLINT
+void AsmWasmData::AsmWasmDataPrint(std::ostream& os) {
PrintHeader(os, "AsmWasmData");
os << "\n - native module: " << Brief(managed_native_module());
os << "\n - export_wrappers: " << Brief(export_wrappers());
@@ -1807,13 +1832,13 @@ void AsmWasmData::AsmWasmDataPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void WasmTypeInfo::WasmTypeInfoPrint(std::ostream& os) { // NOLINT
+void WasmTypeInfo::WasmTypeInfoPrint(std::ostream& os) {
PrintHeader(os, "WasmTypeInfo");
os << "\n - type address: " << reinterpret_cast<void*>(foreign_address());
os << "\n";
}
-void WasmStruct::WasmStructPrint(std::ostream& os) { // NOLINT
+void WasmStruct::WasmStructPrint(std::ostream& os) {
PrintHeader(os, "WasmStruct");
wasm::StructType* struct_type = type();
os << "\n - fields (" << struct_type->field_count() << "):";
@@ -1851,7 +1876,7 @@ void WasmStruct::WasmStructPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void WasmArray::WasmArrayPrint(std::ostream& os) { // NOLINT
+void WasmArray::WasmArrayPrint(std::ostream& os) {
PrintHeader(os, "WasmArray");
wasm::ArrayType* array_type = type();
uint32_t len = length();
@@ -1891,13 +1916,13 @@ void WasmArray::WasmArrayPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void WasmExceptionTag::WasmExceptionTagPrint(std::ostream& os) { // NOLINT
+void WasmExceptionTag::WasmExceptionTagPrint(std::ostream& os) {
PrintHeader(os, "WasmExceptionTag");
os << "\n - index: " << index();
os << "\n";
}
-void WasmInstanceObject::WasmInstanceObjectPrint(std::ostream& os) { // NOLINT
+void WasmInstanceObject::WasmInstanceObjectPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "WasmInstanceObject");
os << "\n - module_object: " << Brief(module_object());
os << "\n - exports_object: " << Brief(exports_object());
@@ -1944,24 +1969,35 @@ void WasmInstanceObject::WasmInstanceObjectPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void WasmExportedFunctionData::WasmExportedFunctionDataPrint(
- std::ostream& os) { // NOLINT
+// Never called directly, as WasmFunctionData is an "abstract" class.
+void WasmFunctionData::WasmFunctionDataPrint(std::ostream& os) {
+ os << "\n - target: " << reinterpret_cast<void*>(foreign_address());
+ os << "\n - ref: " << Brief(ref());
+}
+
+void WasmExportedFunctionData::WasmExportedFunctionDataPrint(std::ostream& os) {
PrintHeader(os, "WasmExportedFunctionData");
+ WasmFunctionDataPrint(os);
os << "\n - wrapper_code: " << Brief(wrapper_code());
os << "\n - instance: " << Brief(instance());
- os << "\n - jump_table_offset: " << jump_table_offset();
os << "\n - function_index: " << function_index();
+ os << "\n - signature: " << Brief(signature());
+ os << "\n - wrapper_budget: " << wrapper_budget();
os << "\n";
}
-void WasmJSFunctionData::WasmJSFunctionDataPrint(std::ostream& os) { // NOLINT
+void WasmJSFunctionData::WasmJSFunctionDataPrint(std::ostream& os) {
PrintHeader(os, "WasmJSFunctionData");
- os << "\n - callable: " << Brief(callable());
+ WasmFunctionDataPrint(os);
os << "\n - wrapper_code: " << Brief(wrapper_code());
+ os << "\n - wasm_to_js_wrapper_code: " << Brief(wasm_to_js_wrapper_code());
+ os << "\n - serialized_return_count: " << serialized_return_count();
+ os << "\n - serialized_parameter_count: " << serialized_parameter_count();
+ os << "\n - serialized signature: " << Brief(serialized_signature());
os << "\n";
}
-void WasmModuleObject::WasmModuleObjectPrint(std::ostream& os) { // NOLINT
+void WasmModuleObject::WasmModuleObjectPrint(std::ostream& os) {
PrintHeader(os, "WasmModuleObject");
os << "\n - module: " << module();
os << "\n - native module: " << native_module();
@@ -1970,7 +2006,7 @@ void WasmModuleObject::WasmModuleObjectPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void WasmTableObject::WasmTableObjectPrint(std::ostream& os) { // NOLINT
+void WasmTableObject::WasmTableObjectPrint(std::ostream& os) {
PrintHeader(os, "WasmTableObject");
os << "\n - elements: " << Brief(elements());
os << "\n - maximum_length: " << Brief(maximum_length());
@@ -1979,7 +2015,7 @@ void WasmTableObject::WasmTableObjectPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void WasmGlobalObject::WasmGlobalObjectPrint(std::ostream& os) { // NOLINT
+void WasmGlobalObject::WasmGlobalObjectPrint(std::ostream& os) {
PrintHeader(os, "WasmGlobalObject");
if (type().is_reference()) {
os << "\n - tagged_buffer: " << Brief(tagged_buffer());
@@ -1994,7 +2030,7 @@ void WasmGlobalObject::WasmGlobalObjectPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void WasmMemoryObject::WasmMemoryObjectPrint(std::ostream& os) { // NOLINT
+void WasmMemoryObject::WasmMemoryObjectPrint(std::ostream& os) {
PrintHeader(os, "WasmMemoryObject");
os << "\n - array_buffer: " << Brief(array_buffer());
os << "\n - maximum_pages: " << maximum_pages();
@@ -2002,8 +2038,7 @@ void WasmMemoryObject::WasmMemoryObjectPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void WasmExceptionObject::WasmExceptionObjectPrint(
- std::ostream& os) { // NOLINT
+void WasmExceptionObject::WasmExceptionObjectPrint(std::ostream& os) {
PrintHeader(os, "WasmExceptionObject");
os << "\n - serialized_signature: " << Brief(serialized_signature());
os << "\n - exception_tag: " << Brief(exception_tag());
@@ -2024,14 +2059,14 @@ void WasmIndirectFunctionTable::WasmIndirectFunctionTablePrint(
os << "\n";
}
-void WasmValueObject::WasmValueObjectPrint(std::ostream& os) { // NOLINT
+void WasmValueObject::WasmValueObjectPrint(std::ostream& os) {
PrintHeader(os, "WasmValueObject");
os << "\n - value: " << Brief(value());
os << "\n";
}
#endif // V8_ENABLE_WEBASSEMBLY
-void LoadHandler::LoadHandlerPrint(std::ostream& os) { // NOLINT
+void LoadHandler::LoadHandlerPrint(std::ostream& os) {
PrintHeader(os, "LoadHandler");
// TODO(ishell): implement printing based on handler kind
os << "\n - handler: " << Brief(smi_handler());
@@ -2049,7 +2084,7 @@ void LoadHandler::LoadHandlerPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void StoreHandler::StoreHandlerPrint(std::ostream& os) { // NOLINT
+void StoreHandler::StoreHandlerPrint(std::ostream& os) {
PrintHeader(os, "StoreHandler");
// TODO(ishell): implement printing based on handler kind
os << "\n - handler: " << Brief(smi_handler());
@@ -2067,14 +2102,14 @@ void StoreHandler::StoreHandlerPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void AccessorPair::AccessorPairPrint(std::ostream& os) { // NOLINT
+void AccessorPair::AccessorPairPrint(std::ostream& os) {
PrintHeader(os, "AccessorPair");
os << "\n - getter: " << Brief(getter());
os << "\n - setter: " << Brief(setter());
os << "\n";
}
-void CallHandlerInfo::CallHandlerInfoPrint(std::ostream& os) { // NOLINT
+void CallHandlerInfo::CallHandlerInfoPrint(std::ostream& os) {
PrintHeader(os, "CallHandlerInfo");
os << "\n - callback: " << Brief(callback());
os << "\n - js_callback: " << Brief(js_callback());
@@ -2084,8 +2119,7 @@ void CallHandlerInfo::CallHandlerInfoPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void FunctionTemplateInfo::FunctionTemplateInfoPrint(
- std::ostream& os) { // NOLINT
+void FunctionTemplateInfo::FunctionTemplateInfoPrint(std::ostream& os) {
PrintHeader(os, "FunctionTemplateInfo");
os << "\n - class name: " << Brief(class_name());
os << "\n - tag: " << tag();
@@ -2102,7 +2136,7 @@ void FunctionTemplateInfo::FunctionTemplateInfoPrint(
os << "\n";
}
-void ObjectTemplateInfo::ObjectTemplateInfoPrint(std::ostream& os) { // NOLINT
+void ObjectTemplateInfo::ObjectTemplateInfoPrint(std::ostream& os) {
PrintHeader(os, "ObjectTemplateInfo");
os << "\n - tag: " << tag();
os << "\n - serial_number: " << serial_number();
@@ -2114,7 +2148,7 @@ void ObjectTemplateInfo::ObjectTemplateInfoPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void AllocationSite::AllocationSitePrint(std::ostream& os) { // NOLINT
+void AllocationSite::AllocationSitePrint(std::ostream& os) {
PrintHeader(os, "AllocationSite");
if (this->HasWeakNext()) os << "\n - weak_next: " << Brief(weak_next());
os << "\n - dependent code: " << Brief(dependent_code());
@@ -2137,7 +2171,7 @@ void AllocationSite::AllocationSitePrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void AllocationMemento::AllocationMementoPrint(std::ostream& os) { // NOLINT
+void AllocationMemento::AllocationMementoPrint(std::ostream& os) {
PrintHeader(os, "AllocationMemento");
os << "\n - allocation site: ";
if (IsValid()) {
@@ -2147,7 +2181,7 @@ void AllocationMemento::AllocationMementoPrint(std::ostream& os) { // NOLINT
}
}
-void Script::ScriptPrint(std::ostream& os) { // NOLINT
+void Script::ScriptPrint(std::ostream& os) {
PrintHeader(os, "Script");
os << "\n - source: " << Brief(source());
os << "\n - name: " << Brief(name());
@@ -2170,9 +2204,11 @@ void Script::ScriptPrint(std::ostream& os) { // NOLINT
if (!is_wasm) {
if (has_eval_from_shared()) {
os << "\n - eval from shared: " << Brief(eval_from_shared());
- }
- if (is_wrapped()) {
+ } else if (is_wrapped()) {
os << "\n - wrapped arguments: " << Brief(wrapped_arguments());
+ } else if (type() == TYPE_WEB_SNAPSHOT) {
+ os << "\n - shared function info table: "
+ << Brief(shared_function_info_table());
}
os << "\n - eval from position: " << eval_from_position();
}
@@ -2181,7 +2217,7 @@ void Script::ScriptPrint(std::ostream& os) { // NOLINT
}
#ifdef V8_INTL_SUPPORT
-void JSV8BreakIterator::JSV8BreakIteratorPrint(std::ostream& os) { // NOLINT
+void JSV8BreakIterator::JSV8BreakIteratorPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSV8BreakIterator");
os << "\n - locale: " << Brief(locale());
os << "\n - break iterator: " << Brief(break_iterator());
@@ -2194,14 +2230,14 @@ void JSV8BreakIterator::JSV8BreakIteratorPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void JSCollator::JSCollatorPrint(std::ostream& os) { // NOLINT
+void JSCollator::JSCollatorPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSCollator");
os << "\n - icu collator: " << Brief(icu_collator());
os << "\n - bound compare: " << Brief(bound_compare());
JSObjectPrintBody(os, *this);
}
-void JSDateTimeFormat::JSDateTimeFormatPrint(std::ostream& os) { // NOLINT
+void JSDateTimeFormat::JSDateTimeFormatPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSDateTimeFormat");
os << "\n - locale: " << Brief(locale());
os << "\n - icu locale: " << Brief(icu_locale());
@@ -2212,7 +2248,7 @@ void JSDateTimeFormat::JSDateTimeFormatPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSDisplayNames::JSDisplayNamesPrint(std::ostream& os) { // NOLINT
+void JSDisplayNames::JSDisplayNamesPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSDisplayNames");
os << "\n - internal: " << Brief(internal());
os << "\n - style: " << StyleAsString();
@@ -2220,7 +2256,7 @@ void JSDisplayNames::JSDisplayNamesPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSListFormat::JSListFormatPrint(std::ostream& os) { // NOLINT
+void JSListFormat::JSListFormatPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSListFormat");
os << "\n - locale: " << Brief(locale());
os << "\n - style: " << StyleAsString();
@@ -2229,13 +2265,13 @@ void JSListFormat::JSListFormatPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSLocale::JSLocalePrint(std::ostream& os) { // NOLINT
+void JSLocale::JSLocalePrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSLocale");
os << "\n - icu locale: " << Brief(icu_locale());
JSObjectPrintBody(os, *this);
}
-void JSNumberFormat::JSNumberFormatPrint(std::ostream& os) { // NOLINT
+void JSNumberFormat::JSNumberFormatPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSNumberFormat");
os << "\n - locale: " << Brief(locale());
os << "\n - icu_number_formatter: " << Brief(icu_number_formatter());
@@ -2243,7 +2279,7 @@ void JSNumberFormat::JSNumberFormatPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSPluralRules::JSPluralRulesPrint(std::ostream& os) { // NOLINT
+void JSPluralRules::JSPluralRulesPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSPluralRules");
os << "\n - locale: " << Brief(locale());
os << "\n - type: " << TypeAsString();
@@ -2252,8 +2288,7 @@ void JSPluralRules::JSPluralRulesPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSRelativeTimeFormat::JSRelativeTimeFormatPrint(
- std::ostream& os) { // NOLINT
+void JSRelativeTimeFormat::JSRelativeTimeFormatPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSRelativeTimeFormat");
os << "\n - locale: " << Brief(locale());
os << "\n - numberingSystem: " << Brief(numberingSystem());
@@ -2262,14 +2297,14 @@ void JSRelativeTimeFormat::JSRelativeTimeFormatPrint(
os << "\n";
}
-void JSSegmentIterator::JSSegmentIteratorPrint(std::ostream& os) { // NOLINT
+void JSSegmentIterator::JSSegmentIteratorPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSSegmentIterator");
os << "\n - icu break iterator: " << Brief(icu_break_iterator());
os << "\n - granularity: " << GranularityAsString(GetIsolate());
os << "\n";
}
-void JSSegmenter::JSSegmenterPrint(std::ostream& os) { // NOLINT
+void JSSegmenter::JSSegmenterPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSSegmenter");
os << "\n - locale: " << Brief(locale());
os << "\n - granularity: " << GranularityAsString(GetIsolate());
@@ -2277,7 +2312,7 @@ void JSSegmenter::JSSegmenterPrint(std::ostream& os) { // NOLINT
JSObjectPrintBody(os, *this);
}
-void JSSegments::JSSegmentsPrint(std::ostream& os) { // NOLINT
+void JSSegments::JSSegmentsPrint(std::ostream& os) {
JSObjectPrintHeader(os, *this, "JSSegments");
os << "\n - icu break iterator: " << Brief(icu_break_iterator());
os << "\n - unicode string: " << Brief(unicode_string());
@@ -2301,7 +2336,7 @@ void PrintScopeInfoList(ScopeInfo scope_info, std::ostream& os,
}
} // namespace
-void ScopeInfo::ScopeInfoPrint(std::ostream& os) { // NOLINT
+void ScopeInfo::ScopeInfoPrint(std::ostream& os) {
PrintHeader(os, "ScopeInfo");
if (IsEmpty()) {
os << "\n - empty\n";
@@ -2357,7 +2392,7 @@ void ScopeInfo::ScopeInfoPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void StackFrameInfo::StackFrameInfoPrint(std::ostream& os) { // NOLINT
+void StackFrameInfo::StackFrameInfoPrint(std::ostream& os) {
PrintHeader(os, "StackFrameInfo");
os << "\n - receiver_or_instance: " << Brief(receiver_or_instance());
os << "\n - function: " << Brief(function());
@@ -2369,7 +2404,7 @@ void StackFrameInfo::StackFrameInfoPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void PreparseData::PreparseDataPrint(std::ostream& os) { // NOLINT
+void PreparseData::PreparseDataPrint(std::ostream& os) {
PrintHeader(os, "PreparseData");
os << "\n - data_length: " << data_length();
os << "\n - children_length: " << children_length();
@@ -2385,7 +2420,7 @@ void PreparseData::PreparseDataPrint(std::ostream& os) { // NOLINT
os << "\n";
}
-void InterpreterData::InterpreterDataPrint(std::ostream& os) { // NOLINT
+void InterpreterData::InterpreterDataPrint(std::ostream& os) {
PrintHeader(os, "InterpreterData");
os << "\n - bytecode_array: " << Brief(bytecode_array());
os << "\n - interpreter_trampoline: " << Brief(interpreter_trampoline());
@@ -2480,7 +2515,7 @@ void Map::PrintMapDetails(std::ostream& os) {
instance_descriptors().PrintDescriptors(os);
}
-void Map::MapPrint(std::ostream& os) { // NOLINT
+void Map::MapPrint(std::ostream& os) {
#ifdef OBJECT_PRINT
PrintHeader(os, "Map");
#else
@@ -2662,7 +2697,7 @@ void TransitionArray::PrintInternal(std::ostream& os) {
os << "\n" << std::flush;
}
-void TransitionsAccessor::PrintTransitions(std::ostream& os) { // NOLINT
+void TransitionsAccessor::PrintTransitions(std::ostream& os) {
switch (encoding()) {
case kPrototypeInfo:
case kUninitialized:
@@ -2730,7 +2765,7 @@ void TransitionsAccessor::PrintTransitionTree(
}
}
-void JSObject::PrintTransitions(std::ostream& os) { // NOLINT
+void JSObject::PrintTransitions(std::ostream& os) {
DisallowGarbageCollection no_gc;
TransitionsAccessor ta(GetIsolate(), map(), &no_gc);
if (ta.NumberOfTransitions() == 0) return;
@@ -2770,6 +2805,22 @@ V8_EXPORT_PRIVATE extern void _v8_internal_Print_Object(void* object) {
GetObjectFromRaw(object).Print();
}
+V8_EXPORT_PRIVATE extern void _v8_internal_Print_LoadHandler(void* object) {
+#ifdef OBJECT_PRINT
+ i::StdoutStream os;
+ i::LoadHandler::PrintHandler(GetObjectFromRaw(object), os);
+ os << std::flush;
+#endif
+}
+
+V8_EXPORT_PRIVATE extern void _v8_internal_Print_StoreHandler(void* object) {
+#ifdef OBJECT_PRINT
+ i::StdoutStream os;
+ i::StoreHandler::PrintHandler(GetObjectFromRaw(object), os);
+ os << std::flush;
+#endif
+}
+
V8_EXPORT_PRIVATE extern void _v8_internal_Print_Code(void* object) {
i::Address address = reinterpret_cast<i::Address>(object);
i::Isolate* isolate = i::Isolate::Current();
diff --git a/deps/v8/src/diagnostics/perf-jit.cc b/deps/v8/src/diagnostics/perf-jit.cc
index dea3340048..e5cc93c1f6 100644
--- a/deps/v8/src/diagnostics/perf-jit.cc
+++ b/deps/v8/src/diagnostics/perf-jit.cc
@@ -215,7 +215,6 @@ void PerfJitLogger::LogRecordedBuffer(
if (FLAG_perf_basic_prof_only_functions &&
(abstract_code->kind() != CodeKind::INTERPRETED_FUNCTION &&
abstract_code->kind() != CodeKind::TURBOFAN &&
- abstract_code->kind() != CodeKind::NATIVE_CONTEXT_INDEPENDENT &&
abstract_code->kind() != CodeKind::TURBOPROP &&
abstract_code->kind() != CodeKind::BASELINE)) {
return;
diff --git a/deps/v8/src/diagnostics/ppc/disasm-ppc.cc b/deps/v8/src/diagnostics/ppc/disasm-ppc.cc
index 9757c8901b..724e08cc45 100644
--- a/deps/v8/src/diagnostics/ppc/disasm-ppc.cc
+++ b/deps/v8/src/diagnostics/ppc/disasm-ppc.cc
@@ -408,6 +408,16 @@ void Decoder::UnknownFormat(Instruction* instr, const char* name) {
}
void Decoder::DecodeExt0(Instruction* instr) {
+ // Some encodings have integers hard coded in the middle, handle those first.
+ switch (EXT0 | (instr->BitField(20, 16)) | (instr->BitField(10, 0))) {
+#define DECODE_VX_D_FORM__INSTRUCTIONS(name, opcode_name, opcode_value) \
+ case opcode_name: { \
+ Format(instr, #name " 'Vt, 'Vb"); \
+ return; \
+ }
+ PPC_VX_OPCODE_D_FORM_LIST(DECODE_VX_D_FORM__INSTRUCTIONS)
+#undef DECODE_VX_D_FORM__INSTRUCTIONS
+ }
// Some encodings are 5-0 bits, handle those first
switch (EXT0 | (instr->BitField(5, 0))) {
#define DECODE_VA_A_FORM__INSTRUCTIONS(name, opcode_name, opcode_value) \
@@ -638,6 +648,10 @@ void Decoder::DecodeExt2(Instruction* instr) {
Format(instr, "lxvd 'Xt, 'ra, 'rb");
return;
}
+ case LXVX: {
+ Format(instr, "lxvx 'Xt, 'ra, 'rb");
+ return;
+ }
case LXSDX: {
Format(instr, "lxsdx 'Xt, 'ra, 'rb");
return;
@@ -658,6 +672,10 @@ void Decoder::DecodeExt2(Instruction* instr) {
Format(instr, "stxvd 'Xs, 'ra, 'rb");
return;
}
+ case STXVX: {
+ Format(instr, "stxvx 'Xs, 'ra, 'rb");
+ return;
+ }
case STXSDX: {
Format(instr, "stxsdx 'Xs, 'ra, 'rb");
return;
@@ -1277,12 +1295,6 @@ void Decoder::DecodeExt5(Instruction* instr) {
}
void Decoder::DecodeExt6(Instruction* instr) {
- switch (EXT6 | (instr->BitField(10, 2))) {
- case XXBRQ: {
- Format(instr, "xxbrq 'Xt, 'Xb");
- return;
- }
- }
switch (EXT6 | (instr->BitField(10, 1))) {
case XXSPLTIB: {
Format(instr, "xxspltib 'Xt, 'IMM8");
@@ -1298,6 +1310,16 @@ void Decoder::DecodeExt6(Instruction* instr) {
PPC_XX3_OPCODE_LIST(DECODE_XX3_INSTRUCTIONS)
#undef DECODE_XX3_INSTRUCTIONS
}
+ // Some encodings have integers hard coded in the middle, handle those first.
+ switch (EXT6 | (instr->BitField(20, 16)) | (instr->BitField(10, 2))) {
+#define DECODE_XX2_B_INSTRUCTIONS(name, opcode_name, opcode_value) \
+ case opcode_name: { \
+ Format(instr, #name " 'Xt, 'Xb"); \
+ return; \
+ }
+ PPC_XX2_OPCODE_B_FORM_LIST(DECODE_XX2_B_INSTRUCTIONS)
+#undef DECODE_XX2_B_INSTRUCTIONS
+ }
switch (EXT6 | (instr->BitField(10, 2))) {
#define DECODE_XX2_A_INSTRUCTIONS(name, opcode_name, opcode_value) \
case opcode_name: { \
@@ -1305,8 +1327,8 @@ void Decoder::DecodeExt6(Instruction* instr) {
return; \
}
PPC_XX2_OPCODE_A_FORM_LIST(DECODE_XX2_A_INSTRUCTIONS)
- }
#undef DECODE_XX2_A_INSTRUCTIONS
+ }
Unknown(instr); // not used by V8
}
diff --git a/deps/v8/src/diagnostics/riscv64/disasm-riscv64.cc b/deps/v8/src/diagnostics/riscv64/disasm-riscv64.cc
index a39261555d..5cbd4b4857 100644
--- a/deps/v8/src/diagnostics/riscv64/disasm-riscv64.cc
+++ b/deps/v8/src/diagnostics/riscv64/disasm-riscv64.cc
@@ -122,6 +122,8 @@ class Decoder {
// Printing of instruction name.
void PrintInstructionName(Instruction* instr);
+ void PrintTarget(Instruction* instr);
+
// Handle formatting of instructions and their options.
int FormatRegister(Instruction* instr, const char* option);
int FormatFPURegisterOrRoundMode(Instruction* instr, const char* option);
@@ -213,6 +215,21 @@ void Decoder::PrintImm12(Instruction* instr) {
out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_, "%d", imm);
}
+void Decoder::PrintTarget(Instruction* instr) {
+ if (Assembler::IsJalr(instr->InstructionBits())) {
+ if (Assembler::IsAuipc((instr - 4)->InstructionBits()) &&
+ (instr - 4)->RdValue() == instr->Rs1Value()) {
+ int32_t imm = Assembler::BrachlongOffset((instr - 4)->InstructionBits(),
+ instr->InstructionBits());
+ const char* target =
+ converter_.NameOfAddress(reinterpret_cast<byte*>(instr - 4) + imm);
+ out_buffer_pos_ +=
+ SNPrintF(out_buffer_ + out_buffer_pos_, " -> %s", target);
+ return;
+ }
+ }
+}
+
void Decoder::PrintBranchOffset(Instruction* instr) {
int32_t imm = instr->BranchOffset();
const char* target =
@@ -699,6 +716,11 @@ int Decoder::FormatOption(Instruction* instr, const char* format) {
PrintVs1(instr);
return 3;
}
+ case 't': { // 'target: target of branch instructions'
+ DCHECK(STRING_STARTS_WITH(format, "target"));
+ PrintTarget(instr);
+ return 6;
+ }
}
UNREACHABLE();
}
@@ -1280,7 +1302,7 @@ void Decoder::DecodeIType(Instruction* instr) {
else if (instr->RdValue() == ra.code() && instr->Imm12Value() == 0)
Format(instr, "jalr 'rs1");
else
- Format(instr, "jalr 'rd, 'imm12('rs1)");
+ Format(instr, "jalr 'rd, 'imm12('rs1)'target");
break;
case RO_LB:
Format(instr, "lb 'rd, 'imm12('rs1)");
@@ -1835,7 +1857,6 @@ int Disassembler::InstructionDecode(v8::internal::Vector<char> buffer,
return d.InstructionDecode(instruction);
}
-// The RISC-V assembler does not currently use constant pools.
int Disassembler::ConstantPoolSizeAt(byte* instruction) {
return v8::internal::Assembler::ConstantPoolSizeAt(
reinterpret_cast<v8::internal::Instruction*>(instruction));
diff --git a/deps/v8/src/diagnostics/system-jit-metadata-win.h b/deps/v8/src/diagnostics/system-jit-metadata-win.h
index 37678c2518..84cf184eda 100644
--- a/deps/v8/src/diagnostics/system-jit-metadata-win.h
+++ b/deps/v8/src/diagnostics/system-jit-metadata-win.h
@@ -6,6 +6,9 @@
#define V8_DIAGNOSTICS_SYSTEM_JIT_METADATA_WIN_H_
#include <Windows.h>
+#ifndef VOID
+#define VOID void
+#endif
#include <TraceLoggingProvider.h>
#include <evntprov.h>
#include <evntrace.h> // defines TRACE_LEVEL_* and EVENT_TRACE_TYPE_*
diff --git a/deps/v8/src/diagnostics/system-jit-win.cc b/deps/v8/src/diagnostics/system-jit-win.cc
index 49200219c2..a4c4237c16 100644
--- a/deps/v8/src/diagnostics/system-jit-win.cc
+++ b/deps/v8/src/diagnostics/system-jit-win.cc
@@ -9,6 +9,10 @@
#include "src/diagnostics/system-jit-metadata-win.h"
#include "src/libplatform/tracing/recorder.h"
+#if !defined(V8_ENABLE_SYSTEM_INSTRUMENTATION)
+#error "This file is only compiled if v8_enable_system_instrumentation"
+#endif
+
#if defined(__clang__)
#pragma clang diagnostic ignored "-Wc++98-compat-extra-semi"
#endif
diff --git a/deps/v8/src/diagnostics/unwinding-info-win64.cc b/deps/v8/src/diagnostics/unwinding-info-win64.cc
index 54978eeb74..6127c0a786 100644
--- a/deps/v8/src/diagnostics/unwinding-info-win64.cc
+++ b/deps/v8/src/diagnostics/unwinding-info-win64.cc
@@ -17,37 +17,6 @@
#error "Unsupported OS"
#endif // V8_OS_WIN_X64
-// Forward declaration to keep this independent of Win8
-NTSYSAPI
-DWORD
-NTAPI
-RtlAddGrowableFunctionTable(
- _Out_ PVOID* DynamicTable,
- _In_reads_(MaximumEntryCount) PRUNTIME_FUNCTION FunctionTable,
- _In_ DWORD EntryCount,
- _In_ DWORD MaximumEntryCount,
- _In_ ULONG_PTR RangeBase,
- _In_ ULONG_PTR RangeEnd
- );
-
-
-NTSYSAPI
-void
-NTAPI
-RtlGrowFunctionTable(
- _Inout_ PVOID DynamicTable,
- _In_ DWORD NewEntryCount
- );
-
-
-NTSYSAPI
-void
-NTAPI
-RtlDeleteGrowableFunctionTable(
- _In_ PVOID DynamicTable
- );
-
-
namespace v8 {
namespace internal {
namespace win64_unwindinfo {
@@ -495,24 +464,27 @@ static decltype(
&::RtlDeleteGrowableFunctionTable) delete_growable_function_table_func =
nullptr;
+void LoadNtdllUnwindingFunctionsOnce() {
+ // Load functions from the ntdll.dll module.
+ HMODULE ntdll_module =
+ LoadLibraryEx(L"ntdll.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);
+ DCHECK_NOT_NULL(ntdll_module);
+
+ // This fails on Windows 7.
+ add_growable_function_table_func =
+ reinterpret_cast<decltype(&::RtlAddGrowableFunctionTable)>(
+ ::GetProcAddress(ntdll_module, "RtlAddGrowableFunctionTable"));
+ DCHECK_IMPLIES(IsWindows8OrGreater(), add_growable_function_table_func);
+
+ delete_growable_function_table_func =
+ reinterpret_cast<decltype(&::RtlDeleteGrowableFunctionTable)>(
+ ::GetProcAddress(ntdll_module, "RtlDeleteGrowableFunctionTable"));
+ DCHECK_IMPLIES(IsWindows8OrGreater(), delete_growable_function_table_func);
+}
+
void LoadNtdllUnwindingFunctions() {
- base::CallOnce(&load_ntdll_unwinding_functions_once, []() {
- // Load functions from the ntdll.dll module.
- HMODULE ntdll_module =
- LoadLibraryEx(L"ntdll.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);
- DCHECK_NOT_NULL(ntdll_module);
-
- // This fails on Windows 7.
- add_growable_function_table_func =
- reinterpret_cast<decltype(&::RtlAddGrowableFunctionTable)>(
- ::GetProcAddress(ntdll_module, "RtlAddGrowableFunctionTable"));
- DCHECK_IMPLIES(IsWindows8OrGreater(), add_growable_function_table_func);
-
- delete_growable_function_table_func =
- reinterpret_cast<decltype(&::RtlDeleteGrowableFunctionTable)>(
- ::GetProcAddress(ntdll_module, "RtlDeleteGrowableFunctionTable"));
- DCHECK_IMPLIES(IsWindows8OrGreater(), delete_growable_function_table_func);
- });
+ base::CallOnce(&load_ntdll_unwinding_functions_once,
+ &LoadNtdllUnwindingFunctionsOnce);
}
bool AddGrowableFunctionTable(PVOID* DynamicTable,
@@ -605,6 +577,11 @@ void UnregisterNonABICompliantCodeRange(void* start) {
ExceptionHandlerRecord* record =
reinterpret_cast<ExceptionHandlerRecord*>(start);
CHECK(::RtlDeleteFunctionTable(record->runtime_function));
+
+ // Unprotect reserved page.
+ DWORD old_protect;
+ CHECK(VirtualProtect(start, sizeof(ExceptionHandlerRecord),
+ PAGE_READWRITE, &old_protect));
}
#endif // V8_OS_WIN_X64
} else {
@@ -613,6 +590,11 @@ void UnregisterNonABICompliantCodeRange(void* start) {
if (record->dynamic_table) {
DeleteGrowableFunctionTable(record->dynamic_table);
}
+
+ // Unprotect reserved page.
+ DWORD old_protect;
+ CHECK(VirtualProtect(start, sizeof(CodeRangeUnwindingRecord),
+ PAGE_READWRITE, &old_protect));
}
}
diff --git a/deps/v8/src/execution/arguments.h b/deps/v8/src/execution/arguments.h
index 39877cf4d2..22ce80bb1e 100644
--- a/deps/v8/src/execution/arguments.h
+++ b/deps/v8/src/execution/arguments.h
@@ -107,29 +107,40 @@ double ClobberDoubleRegisters(double x1, double x2, double x3, double x4);
// TODO(cbruni): add global flag to check whether any tracing events have been
// enabled.
-#define RUNTIME_FUNCTION_RETURNS_TYPE(Type, InternalType, Convert, Name) \
- static V8_INLINE InternalType __RT_impl_##Name(RuntimeArguments args, \
- Isolate* isolate); \
- \
+#ifdef V8_RUNTIME_CALL_STATS
+#define RUNTIME_ENTRY_WITH_RCS(Type, InternalType, Convert, Name) \
V8_NOINLINE static Type Stats_##Name(int args_length, Address* args_object, \
Isolate* isolate) { \
- RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::k##Name); \
+ RCS_SCOPE(isolate, RuntimeCallCounterId::k##Name); \
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.runtime"), \
"V8.Runtime_" #Name); \
RuntimeArguments args(args_length, args_object); \
return Convert(__RT_impl_##Name(args, isolate)); \
- } \
- \
- Type Name(int args_length, Address* args_object, Isolate* isolate) { \
- DCHECK(isolate->context().is_null() || isolate->context().IsContext()); \
- CLOBBER_DOUBLE_REGISTERS(); \
- if (V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled())) { \
- return Stats_##Name(args_length, args_object, isolate); \
- } \
- RuntimeArguments args(args_length, args_object); \
- return Convert(__RT_impl_##Name(args, isolate)); \
- } \
- \
+ }
+
+#define TEST_AND_CALL_RCS(Name) \
+ if (V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled())) { \
+ return Stats_##Name(args_length, args_object, isolate); \
+ }
+
+#else // V8_RUNTIME_CALL_STATS
+#define RUNTIME_ENTRY_WITH_RCS(Type, InternalType, Convert, Name)
+#define TEST_AND_CALL_RCS(Name)
+
+#endif // V8_RUNTIME_CALL_STATS
+
+#define RUNTIME_FUNCTION_RETURNS_TYPE(Type, InternalType, Convert, Name) \
+ static V8_INLINE InternalType __RT_impl_##Name(RuntimeArguments args, \
+ Isolate* isolate); \
+ RUNTIME_ENTRY_WITH_RCS(Type, InternalType, Convert, Name) \
+ Type Name(int args_length, Address* args_object, Isolate* isolate) { \
+ DCHECK(isolate->context().is_null() || isolate->context().IsContext()); \
+ CLOBBER_DOUBLE_REGISTERS(); \
+ TEST_AND_CALL_RCS(Name) \
+ RuntimeArguments args(args_length, args_object); \
+ return Convert(__RT_impl_##Name(args, isolate)); \
+ } \
+ \
static InternalType __RT_impl_##Name(RuntimeArguments args, Isolate* isolate)
#define CONVERT_OBJECT(x) (x).ptr()
diff --git a/deps/v8/src/execution/arm/simulator-arm.cc b/deps/v8/src/execution/arm/simulator-arm.cc
index ee4e9af462..ca7d709fbb 100644
--- a/deps/v8/src/execution/arm/simulator-arm.cc
+++ b/deps/v8/src/execution/arm/simulator-arm.cc
@@ -42,7 +42,7 @@ DEFINE_LAZY_LEAKY_OBJECT_GETTER(Simulator::GlobalMonitor,
// SScanF not being implemented in a platform independent way through
// ::v8::internal::OS in the same way as SNPrintF is that the
// Windows C Run-Time Library does not provide vsscanf.
-#define SScanF sscanf // NOLINT
+#define SScanF sscanf
// The ArmDebugger class is used by the simulator while debugging simulated ARM
// code.
@@ -50,6 +50,7 @@ class ArmDebugger {
public:
explicit ArmDebugger(Simulator* sim) : sim_(sim) {}
void Debug();
+ bool ExecDebugCommand(ArrayUniquePtr<char> line_ptr);
private:
static const Instr kBreakpointInstr =
@@ -191,6 +192,31 @@ void ArmDebugger::Debug() {
intptr_t last_pc = -1;
bool done = false;
+ // Unset breakpoint while running in the debugger shell, making it invisible
+ // to all commands.
+ UndoBreakpoint();
+
+ while (!done && !sim_->has_bad_pc()) {
+ if (last_pc != sim_->get_pc()) {
+ disasm::NameConverter converter;
+ disasm::Disassembler dasm(converter);
+ // use a reasonably large buffer
+ v8::internal::EmbeddedVector<char, 256> buffer;
+ dasm.InstructionDecode(buffer, reinterpret_cast<byte*>(sim_->get_pc()));
+ PrintF(" 0x%08x %s\n", sim_->get_pc(), buffer.begin());
+ last_pc = sim_->get_pc();
+ }
+ ArrayUniquePtr<char> line(ReadLine("sim> "));
+
+ done = ExecDebugCommand(std::move(line));
+ }
+
+ // Reinstall breakpoint to stop execution and enter the debugger shell when
+ // hit.
+ RedoBreakpoint();
+}
+
+bool ArmDebugger::ExecDebugCommand(ArrayUniquePtr<char> line_ptr) {
#define COMMAND_SIZE 63
#define ARG_SIZE 255
@@ -207,352 +233,357 @@ void ArmDebugger::Debug() {
arg1[ARG_SIZE] = 0;
arg2[ARG_SIZE] = 0;
- // Unset breakpoint while running in the debugger shell, making it invisible
- // to all commands.
- UndoBreakpoint();
+ if (line_ptr == nullptr) return true;
- while (!done && !sim_->has_bad_pc()) {
- if (last_pc != sim_->get_pc()) {
- disasm::NameConverter converter;
- disasm::Disassembler dasm(converter);
- // use a reasonably large buffer
- v8::internal::EmbeddedVector<char, 256> buffer;
- dasm.InstructionDecode(buffer, reinterpret_cast<byte*>(sim_->get_pc()));
- PrintF(" 0x%08x %s\n", sim_->get_pc(), buffer.begin());
- last_pc = sim_->get_pc();
- }
- char* line = ReadLine("sim> ");
- if (line == nullptr) {
- break;
- } else {
- char* last_input = sim_->last_debugger_input();
- if (strcmp(line, "\n") == 0 && last_input != nullptr) {
- line = last_input;
- } else {
- // Ownership is transferred to sim_;
- sim_->set_last_debugger_input(line);
- }
- // Use sscanf to parse the individual parts of the command line. At the
- // moment no command expects more than two parameters.
- int argc = SScanF(line,
- "%" XSTR(COMMAND_SIZE) "s "
- "%" XSTR(ARG_SIZE) "s "
- "%" XSTR(ARG_SIZE) "s",
- cmd, arg1, arg2);
- if ((strcmp(cmd, "si") == 0) || (strcmp(cmd, "stepi") == 0)) {
- sim_->InstructionDecode(reinterpret_cast<Instruction*>(sim_->get_pc()));
- } else if ((strcmp(cmd, "c") == 0) || (strcmp(cmd, "cont") == 0)) {
- // Execute the one instruction we broke at with breakpoints disabled.
- sim_->InstructionDecode(reinterpret_cast<Instruction*>(sim_->get_pc()));
- // Leave the debugger shell.
- done = true;
- } else if ((strcmp(cmd, "p") == 0) || (strcmp(cmd, "print") == 0)) {
- if (argc == 2 || (argc == 3 && strcmp(arg2, "fp") == 0)) {
- int32_t value;
- float svalue;
- double dvalue;
- if (strcmp(arg1, "all") == 0) {
- for (int i = 0; i < kNumRegisters; i++) {
- value = GetRegisterValue(i);
- PrintF("%3s: 0x%08x %10d", RegisterName(Register::from_code(i)),
- value, value);
- if ((argc == 3 && strcmp(arg2, "fp") == 0) && i < 8 &&
- (i % 2) == 0) {
- dvalue = GetRegisterPairDoubleValue(i);
- PrintF(" (%f)\n", dvalue);
- } else {
- PrintF("\n");
- }
- }
- for (int i = 0; i < DwVfpRegister::SupportedRegisterCount(); i++) {
- dvalue = GetVFPDoubleRegisterValue(i);
- uint64_t as_words = bit_cast<uint64_t>(dvalue);
- PrintF("%3s: %f 0x%08x %08x\n", VFPRegisters::Name(i, true),
- dvalue, static_cast<uint32_t>(as_words >> 32),
- static_cast<uint32_t>(as_words & 0xFFFFFFFF));
- }
+ // Repeat last command by default.
+ const char* line = line_ptr.get();
+ const char* last_input = sim_->last_debugger_input();
+ if (strcmp(line, "\n") == 0 && (last_input != nullptr)) {
+ line_ptr.reset();
+ line = last_input;
+ } else {
+ // Update the latest command ran
+ sim_->set_last_debugger_input(std::move(line_ptr));
+ }
+
+ // Use sscanf to parse the individual parts of the command line. At the
+ // moment no command expects more than two parameters.
+ int argc = SScanF(line,
+ "%" XSTR(COMMAND_SIZE) "s "
+ "%" XSTR(ARG_SIZE) "s "
+ "%" XSTR(ARG_SIZE) "s",
+ cmd, arg1, arg2);
+ if ((strcmp(cmd, "si") == 0) || (strcmp(cmd, "stepi") == 0)) {
+ sim_->InstructionDecode(reinterpret_cast<Instruction*>(sim_->get_pc()));
+ } else if ((strcmp(cmd, "c") == 0) || (strcmp(cmd, "cont") == 0)) {
+ // Execute the one instruction we broke at with breakpoints disabled.
+ sim_->InstructionDecode(reinterpret_cast<Instruction*>(sim_->get_pc()));
+ // Leave the debugger shell.
+ return true;
+ } else if ((strcmp(cmd, "p") == 0) || (strcmp(cmd, "print") == 0)) {
+ if (argc == 2 || (argc == 3 && strcmp(arg2, "fp") == 0)) {
+ int32_t value;
+ float svalue;
+ double dvalue;
+ if (strcmp(arg1, "all") == 0) {
+ for (int i = 0; i < kNumRegisters; i++) {
+ value = GetRegisterValue(i);
+ PrintF("%3s: 0x%08x %10d", RegisterName(Register::from_code(i)),
+ value, value);
+ if ((argc == 3 && strcmp(arg2, "fp") == 0) && i < 8 && (i % 2) == 0) {
+ dvalue = GetRegisterPairDoubleValue(i);
+ PrintF(" (%f)\n", dvalue);
} else {
- if (GetValue(arg1, &value)) {
- PrintF("%s: 0x%08x %d \n", arg1, value, value);
- } else if (GetVFPSingleValue(arg1, &svalue)) {
- uint32_t as_word = bit_cast<uint32_t>(svalue);
- PrintF("%s: %f 0x%08x\n", arg1, svalue, as_word);
- } else if (GetVFPDoubleValue(arg1, &dvalue)) {
- uint64_t as_words = bit_cast<uint64_t>(dvalue);
- PrintF("%s: %f 0x%08x %08x\n", arg1, dvalue,
- static_cast<uint32_t>(as_words >> 32),
- static_cast<uint32_t>(as_words & 0xFFFFFFFF));
- } else {
- PrintF("%s unrecognized\n", arg1);
- }
+ PrintF("\n");
}
+ }
+ for (int i = 0; i < DwVfpRegister::SupportedRegisterCount(); i++) {
+ dvalue = GetVFPDoubleRegisterValue(i);
+ uint64_t as_words = bit_cast<uint64_t>(dvalue);
+ PrintF("%3s: %f 0x%08x %08x\n", VFPRegisters::Name(i, true), dvalue,
+ static_cast<uint32_t>(as_words >> 32),
+ static_cast<uint32_t>(as_words & 0xFFFFFFFF));
+ }
+ } else {
+ if (GetValue(arg1, &value)) {
+ PrintF("%s: 0x%08x %d \n", arg1, value, value);
+ } else if (GetVFPSingleValue(arg1, &svalue)) {
+ uint32_t as_word = bit_cast<uint32_t>(svalue);
+ PrintF("%s: %f 0x%08x\n", arg1, svalue, as_word);
+ } else if (GetVFPDoubleValue(arg1, &dvalue)) {
+ uint64_t as_words = bit_cast<uint64_t>(dvalue);
+ PrintF("%s: %f 0x%08x %08x\n", arg1, dvalue,
+ static_cast<uint32_t>(as_words >> 32),
+ static_cast<uint32_t>(as_words & 0xFFFFFFFF));
} else {
- PrintF("print <register>\n");
+ PrintF("%s unrecognized\n", arg1);
}
- } else if ((strcmp(cmd, "po") == 0) ||
- (strcmp(cmd, "printobject") == 0)) {
- if (argc == 2) {
- int32_t value;
- StdoutStream os;
- if (GetValue(arg1, &value)) {
- Object obj(value);
- os << arg1 << ": \n";
+ }
+ } else {
+ PrintF("print <register>\n");
+ }
+ } else if ((strcmp(cmd, "po") == 0) || (strcmp(cmd, "printobject") == 0)) {
+ if (argc == 2) {
+ int32_t value;
+ StdoutStream os;
+ if (GetValue(arg1, &value)) {
+ Object obj(value);
+ os << arg1 << ": \n";
#ifdef DEBUG
- obj.Print(os);
- os << "\n";
+ obj.Print(os);
+ os << "\n";
#else
- os << Brief(obj) << "\n";
+ os << Brief(obj) << "\n";
#endif
+ } else {
+ os << arg1 << " unrecognized\n";
+ }
+ } else {
+ PrintF("printobject <value>\n");
+ }
+ } else if (strcmp(cmd, "stack") == 0 || strcmp(cmd, "mem") == 0 ||
+ strcmp(cmd, "dump") == 0) {
+ int32_t* cur = nullptr;
+ int32_t* end = nullptr;
+ int next_arg = 1;
+
+ if (strcmp(cmd, "stack") == 0) {
+ cur = reinterpret_cast<int32_t*>(sim_->get_register(Simulator::sp));
+ } else { // "mem"
+ int32_t value;
+ if (!GetValue(arg1, &value)) {
+ PrintF("%s unrecognized\n", arg1);
+ return false;
+ }
+ cur = reinterpret_cast<int32_t*>(value);
+ next_arg++;
+ }
+
+ int32_t words;
+ if (argc == next_arg) {
+ words = 10;
+ } else {
+ if (!GetValue(argv[next_arg], &words)) {
+ words = 10;
+ }
+ }
+ end = cur + words;
+
+ bool skip_obj_print = (strcmp(cmd, "dump") == 0);
+ while (cur < end) {
+ PrintF(" 0x%08" V8PRIxPTR ": 0x%08x %10d",
+ reinterpret_cast<intptr_t>(cur), *cur, *cur);
+ Object obj(*cur);
+ Heap* current_heap = sim_->isolate_->heap();
+ if (!skip_obj_print) {
+ if (obj.IsSmi() ||
+ IsValidHeapObject(current_heap, HeapObject::cast(obj))) {
+ PrintF(" (");
+ if (obj.IsSmi()) {
+ PrintF("smi %d", Smi::ToInt(obj));
} else {
- os << arg1 << " unrecognized\n";
- }
- } else {
- PrintF("printobject <value>\n");
- }
- } else if (strcmp(cmd, "stack") == 0 || strcmp(cmd, "mem") == 0 ||
- strcmp(cmd, "dump") == 0) {
- int32_t* cur = nullptr;
- int32_t* end = nullptr;
- int next_arg = 1;
-
- if (strcmp(cmd, "stack") == 0) {
- cur = reinterpret_cast<int32_t*>(sim_->get_register(Simulator::sp));
- } else { // "mem"
- int32_t value;
- if (!GetValue(arg1, &value)) {
- PrintF("%s unrecognized\n", arg1);
- continue;
+ obj.ShortPrint();
}
- cur = reinterpret_cast<int32_t*>(value);
- next_arg++;
+ PrintF(")");
}
+ }
+ PrintF("\n");
+ cur++;
+ }
+ } else if (strcmp(cmd, "disasm") == 0 || strcmp(cmd, "di") == 0) {
+ disasm::NameConverter converter;
+ disasm::Disassembler dasm(converter);
+ // use a reasonably large buffer
+ v8::internal::EmbeddedVector<char, 256> buffer;
- int32_t words;
- if (argc == next_arg) {
- words = 10;
- } else {
- if (!GetValue(argv[next_arg], &words)) {
- words = 10;
- }
+ byte* prev = nullptr;
+ byte* cur = nullptr;
+ byte* end = nullptr;
+
+ if (argc == 1) {
+ cur = reinterpret_cast<byte*>(sim_->get_pc());
+ end = cur + (10 * kInstrSize);
+ } else if (argc == 2) {
+ int regnum = Registers::Number(arg1);
+ if (regnum != kNoRegister || strncmp(arg1, "0x", 2) == 0) {
+ // The argument is an address or a register name.
+ int32_t value;
+ if (GetValue(arg1, &value)) {
+ cur = reinterpret_cast<byte*>(value);
+ // Disassemble 10 instructions at <arg1>.
+ end = cur + (10 * kInstrSize);
}
- end = cur + words;
-
- bool skip_obj_print = (strcmp(cmd, "dump") == 0);
- while (cur < end) {
- PrintF(" 0x%08" V8PRIxPTR ": 0x%08x %10d",
- reinterpret_cast<intptr_t>(cur), *cur, *cur);
- Object obj(*cur);
- Heap* current_heap = sim_->isolate_->heap();
- if (!skip_obj_print) {
- if (obj.IsSmi() ||
- IsValidHeapObject(current_heap, HeapObject::cast(obj))) {
- PrintF(" (");
- if (obj.IsSmi()) {
- PrintF("smi %d", Smi::ToInt(obj));
- } else {
- obj.ShortPrint();
- }
- PrintF(")");
- }
- }
- PrintF("\n");
- cur++;
+ } else {
+ // The argument is the number of instructions.
+ int32_t value;
+ if (GetValue(arg1, &value)) {
+ cur = reinterpret_cast<byte*>(sim_->get_pc());
+ // Disassemble <arg1> instructions.
+ end = cur + (value * kInstrSize);
}
- } else if (strcmp(cmd, "disasm") == 0 || strcmp(cmd, "di") == 0) {
- disasm::NameConverter converter;
- disasm::Disassembler dasm(converter);
- // use a reasonably large buffer
- v8::internal::EmbeddedVector<char, 256> buffer;
+ }
+ } else {
+ int32_t value1;
+ int32_t value2;
+ if (GetValue(arg1, &value1) && GetValue(arg2, &value2)) {
+ cur = reinterpret_cast<byte*>(value1);
+ end = cur + (value2 * kInstrSize);
+ }
+ }
- byte* prev = nullptr;
- byte* cur = nullptr;
- byte* end = nullptr;
+ while (cur < end) {
+ prev = cur;
+ cur += dasm.InstructionDecode(buffer, cur);
+ PrintF(" 0x%08" V8PRIxPTR " %s\n", reinterpret_cast<intptr_t>(prev),
+ buffer.begin());
+ }
+ } else if (strcmp(cmd, "gdb") == 0) {
+ PrintF("relinquishing control to gdb\n");
+ v8::base::OS::DebugBreak();
+ PrintF("regaining control from gdb\n");
+ } else if (strcmp(cmd, "break") == 0) {
+ if (argc == 2) {
+ int32_t value;
+ if (GetValue(arg1, &value)) {
+ if (!SetBreakpoint(reinterpret_cast<Instruction*>(value))) {
+ PrintF("setting breakpoint failed\n");
+ }
+ } else {
+ PrintF("%s unrecognized\n", arg1);
+ }
+ } else {
+ PrintF("break <address>\n");
+ }
+ } else if (strcmp(cmd, "backtrace") == 0 || strcmp(cmd, "bt") == 0) {
+ int32_t pc = sim_->get_pc();
+ int32_t lr = sim_->get_register(Simulator::lr);
+ int32_t sp = sim_->get_register(Simulator::sp);
+ int32_t fp = sim_->get_register(Simulator::fp);
- if (argc == 1) {
- cur = reinterpret_cast<byte*>(sim_->get_pc());
- end = cur + (10 * kInstrSize);
- } else if (argc == 2) {
- int regnum = Registers::Number(arg1);
- if (regnum != kNoRegister || strncmp(arg1, "0x", 2) == 0) {
- // The argument is an address or a register name.
- int32_t value;
- if (GetValue(arg1, &value)) {
- cur = reinterpret_cast<byte*>(value);
- // Disassemble 10 instructions at <arg1>.
- end = cur + (10 * kInstrSize);
- }
- } else {
- // The argument is the number of instructions.
- int32_t value;
- if (GetValue(arg1, &value)) {
- cur = reinterpret_cast<byte*>(sim_->get_pc());
- // Disassemble <arg1> instructions.
- end = cur + (value * kInstrSize);
- }
+ int i = 0;
+ while (true) {
+ PrintF("#%d: 0x%08x (sp=0x%08x, fp=0x%08x)\n", i, pc, sp, fp);
+ pc = lr;
+ sp = fp;
+ if (pc == Simulator::end_sim_pc) {
+ break;
+ }
+ lr = *(reinterpret_cast<int32_t*>(fp) + 1);
+ fp = *reinterpret_cast<int32_t*>(fp);
+ i++;
+ if (i > 100) {
+ PrintF("Too many frames\n");
+ break;
+ }
+ }
+ } else if (strcmp(cmd, "del") == 0) {
+ DeleteBreakpoint();
+ } else if (strcmp(cmd, "flags") == 0) {
+ PrintF("N flag: %d; ", sim_->n_flag_);
+ PrintF("Z flag: %d; ", sim_->z_flag_);
+ PrintF("C flag: %d; ", sim_->c_flag_);
+ PrintF("V flag: %d\n", sim_->v_flag_);
+ PrintF("INVALID OP flag: %d; ", sim_->inv_op_vfp_flag_);
+ PrintF("DIV BY ZERO flag: %d; ", sim_->div_zero_vfp_flag_);
+ PrintF("OVERFLOW flag: %d; ", sim_->overflow_vfp_flag_);
+ PrintF("UNDERFLOW flag: %d; ", sim_->underflow_vfp_flag_);
+ PrintF("INEXACT flag: %d;\n", sim_->inexact_vfp_flag_);
+ } else if (strcmp(cmd, "stop") == 0) {
+ int32_t value;
+ intptr_t stop_pc = sim_->get_pc() - kInstrSize;
+ Instruction* stop_instr = reinterpret_cast<Instruction*>(stop_pc);
+ if ((argc == 2) && (strcmp(arg1, "unstop") == 0)) {
+ // Remove the current stop.
+ if (stop_instr->IsStop()) {
+ SetInstructionBitsInCodeSpace(stop_instr, kNopInstr,
+ sim_->isolate_->heap());
+ } else {
+ PrintF("Not at debugger stop.\n");
+ }
+ } else if (argc == 3) {
+ // Print information about all/the specified breakpoint(s).
+ if (strcmp(arg1, "info") == 0) {
+ if (strcmp(arg2, "all") == 0) {
+ PrintF("Stop information:\n");
+ for (uint32_t i = 0; i < sim_->kNumOfWatchedStops; i++) {
+ sim_->PrintStopInfo(i);
}
+ } else if (GetValue(arg2, &value)) {
+ sim_->PrintStopInfo(value);
} else {
- int32_t value1;
- int32_t value2;
- if (GetValue(arg1, &value1) && GetValue(arg2, &value2)) {
- cur = reinterpret_cast<byte*>(value1);
- end = cur + (value2 * kInstrSize);
- }
+ PrintF("Unrecognized argument.\n");
}
-
- while (cur < end) {
- prev = cur;
- cur += dasm.InstructionDecode(buffer, cur);
- PrintF(" 0x%08" V8PRIxPTR " %s\n", reinterpret_cast<intptr_t>(prev),
- buffer.begin());
- }
- } else if (strcmp(cmd, "gdb") == 0) {
- PrintF("relinquishing control to gdb\n");
- v8::base::OS::DebugBreak();
- PrintF("regaining control from gdb\n");
- } else if (strcmp(cmd, "break") == 0) {
- if (argc == 2) {
- int32_t value;
- if (GetValue(arg1, &value)) {
- if (!SetBreakpoint(reinterpret_cast<Instruction*>(value))) {
- PrintF("setting breakpoint failed\n");
- }
- } else {
- PrintF("%s unrecognized\n", arg1);
+ } else if (strcmp(arg1, "enable") == 0) {
+ // Enable all/the specified breakpoint(s).
+ if (strcmp(arg2, "all") == 0) {
+ for (uint32_t i = 0; i < sim_->kNumOfWatchedStops; i++) {
+ sim_->EnableStop(i);
}
+ } else if (GetValue(arg2, &value)) {
+ sim_->EnableStop(value);
} else {
- PrintF("break <address>\n");
+ PrintF("Unrecognized argument.\n");
}
- } else if (strcmp(cmd, "del") == 0) {
- DeleteBreakpoint();
- } else if (strcmp(cmd, "flags") == 0) {
- PrintF("N flag: %d; ", sim_->n_flag_);
- PrintF("Z flag: %d; ", sim_->z_flag_);
- PrintF("C flag: %d; ", sim_->c_flag_);
- PrintF("V flag: %d\n", sim_->v_flag_);
- PrintF("INVALID OP flag: %d; ", sim_->inv_op_vfp_flag_);
- PrintF("DIV BY ZERO flag: %d; ", sim_->div_zero_vfp_flag_);
- PrintF("OVERFLOW flag: %d; ", sim_->overflow_vfp_flag_);
- PrintF("UNDERFLOW flag: %d; ", sim_->underflow_vfp_flag_);
- PrintF("INEXACT flag: %d;\n", sim_->inexact_vfp_flag_);
- } else if (strcmp(cmd, "stop") == 0) {
- int32_t value;
- intptr_t stop_pc = sim_->get_pc() - kInstrSize;
- Instruction* stop_instr = reinterpret_cast<Instruction*>(stop_pc);
- if ((argc == 2) && (strcmp(arg1, "unstop") == 0)) {
- // Remove the current stop.
- if (stop_instr->IsStop()) {
- SetInstructionBitsInCodeSpace(stop_instr, kNopInstr,
- sim_->isolate_->heap());
- } else {
- PrintF("Not at debugger stop.\n");
- }
- } else if (argc == 3) {
- // Print information about all/the specified breakpoint(s).
- if (strcmp(arg1, "info") == 0) {
- if (strcmp(arg2, "all") == 0) {
- PrintF("Stop information:\n");
- for (uint32_t i = 0; i < sim_->kNumOfWatchedStops; i++) {
- sim_->PrintStopInfo(i);
- }
- } else if (GetValue(arg2, &value)) {
- sim_->PrintStopInfo(value);
- } else {
- PrintF("Unrecognized argument.\n");
- }
- } else if (strcmp(arg1, "enable") == 0) {
- // Enable all/the specified breakpoint(s).
- if (strcmp(arg2, "all") == 0) {
- for (uint32_t i = 0; i < sim_->kNumOfWatchedStops; i++) {
- sim_->EnableStop(i);
- }
- } else if (GetValue(arg2, &value)) {
- sim_->EnableStop(value);
- } else {
- PrintF("Unrecognized argument.\n");
- }
- } else if (strcmp(arg1, "disable") == 0) {
- // Disable all/the specified breakpoint(s).
- if (strcmp(arg2, "all") == 0) {
- for (uint32_t i = 0; i < sim_->kNumOfWatchedStops; i++) {
- sim_->DisableStop(i);
- }
- } else if (GetValue(arg2, &value)) {
- sim_->DisableStop(value);
- } else {
- PrintF("Unrecognized argument.\n");
- }
+ } else if (strcmp(arg1, "disable") == 0) {
+ // Disable all/the specified breakpoint(s).
+ if (strcmp(arg2, "all") == 0) {
+ for (uint32_t i = 0; i < sim_->kNumOfWatchedStops; i++) {
+ sim_->DisableStop(i);
}
+ } else if (GetValue(arg2, &value)) {
+ sim_->DisableStop(value);
} else {
- PrintF("Wrong usage. Use help command for more information.\n");
+ PrintF("Unrecognized argument.\n");
}
- } else if ((strcmp(cmd, "t") == 0) || strcmp(cmd, "trace") == 0) {
- ::v8::internal::FLAG_trace_sim = !::v8::internal::FLAG_trace_sim;
- PrintF("Trace of executed instructions is %s\n",
- ::v8::internal::FLAG_trace_sim ? "on" : "off");
- } else if ((strcmp(cmd, "h") == 0) || (strcmp(cmd, "help") == 0)) {
- PrintF("cont\n");
- PrintF(" continue execution (alias 'c')\n");
- PrintF("stepi\n");
- PrintF(" step one instruction (alias 'si')\n");
- PrintF("print <register>\n");
- PrintF(" print register content (alias 'p')\n");
- PrintF(" use register name 'all' to print all registers\n");
- PrintF(" add argument 'fp' to print register pair double values\n");
- PrintF("printobject <register>\n");
- PrintF(" print an object from a register (alias 'po')\n");
- PrintF("flags\n");
- PrintF(" print flags\n");
- PrintF("stack [<words>]\n");
- PrintF(" dump stack content, default dump 10 words)\n");
- PrintF("mem <address> [<words>]\n");
- PrintF(" dump memory content, default dump 10 words)\n");
- PrintF("dump [<words>]\n");
- PrintF(
- " dump memory content without pretty printing JS objects, default "
- "dump 10 words)\n");
- PrintF("disasm [<instructions>]\n");
- PrintF("disasm [<address/register>]\n");
- PrintF("disasm [[<address/register>] <instructions>]\n");
- PrintF(" disassemble code, default is 10 instructions\n");
- PrintF(" from pc (alias 'di')\n");
- PrintF("gdb\n");
- PrintF(" enter gdb\n");
- PrintF("break <address>\n");
- PrintF(" set a break point on the address\n");
- PrintF("del\n");
- PrintF(" delete the breakpoint\n");
- PrintF("trace (alias 't')\n");
- PrintF(" toogle the tracing of all executed statements\n");
- PrintF("stop feature:\n");
- PrintF(" Description:\n");
- PrintF(" Stops are debug instructions inserted by\n");
- PrintF(" the Assembler::stop() function.\n");
- PrintF(" When hitting a stop, the Simulator will\n");
- PrintF(" stop and give control to the ArmDebugger.\n");
- PrintF(" The first %d stop codes are watched:\n",
- Simulator::kNumOfWatchedStops);
- PrintF(" - They can be enabled / disabled: the Simulator\n");
- PrintF(" will / won't stop when hitting them.\n");
- PrintF(" - The Simulator keeps track of how many times they \n");
- PrintF(" are met. (See the info command.) Going over a\n");
- PrintF(" disabled stop still increases its counter. \n");
- PrintF(" Commands:\n");
- PrintF(" stop info all/<code> : print infos about number <code>\n");
- PrintF(" or all stop(s).\n");
- PrintF(" stop enable/disable all/<code> : enables / disables\n");
- PrintF(" all or number <code> stop(s)\n");
- PrintF(" stop unstop\n");
- PrintF(" ignore the stop instruction at the current location\n");
- PrintF(" from now on\n");
- } else {
- PrintF("Unknown command: %s\n", cmd);
}
+ } else {
+ PrintF("Wrong usage. Use help command for more information.\n");
}
+ } else if ((strcmp(cmd, "t") == 0) || strcmp(cmd, "trace") == 0) {
+ ::v8::internal::FLAG_trace_sim = !::v8::internal::FLAG_trace_sim;
+ PrintF("Trace of executed instructions is %s\n",
+ ::v8::internal::FLAG_trace_sim ? "on" : "off");
+ } else if ((strcmp(cmd, "h") == 0) || (strcmp(cmd, "help") == 0)) {
+ PrintF("cont\n");
+ PrintF(" continue execution (alias 'c')\n");
+ PrintF("stepi\n");
+ PrintF(" step one instruction (alias 'si')\n");
+ PrintF("print <register>\n");
+ PrintF(" print register content (alias 'p')\n");
+ PrintF(" use register name 'all' to print all registers\n");
+ PrintF(" add argument 'fp' to print register pair double values\n");
+ PrintF("printobject <register>\n");
+ PrintF(" print an object from a register (alias 'po')\n");
+ PrintF("flags\n");
+ PrintF(" print flags\n");
+ PrintF("stack [<words>]\n");
+ PrintF(" dump stack content, default dump 10 words)\n");
+ PrintF("mem <address> [<words>]\n");
+ PrintF(" dump memory content, default dump 10 words)\n");
+ PrintF("dump [<words>]\n");
+ PrintF(
+ " dump memory content without pretty printing JS objects, default "
+ "dump 10 words)\n");
+ PrintF("disasm [<instructions>]\n");
+ PrintF("disasm [<address/register>]\n");
+ PrintF("disasm [[<address/register>] <instructions>]\n");
+ PrintF(" disassemble code, default is 10 instructions\n");
+ PrintF(" from pc (alias 'di')\n");
+ PrintF("gdb\n");
+ PrintF(" enter gdb\n");
+ PrintF("break <address>\n");
+ PrintF(" set a break point on the address\n");
+ PrintF("backtrace / bt\n");
+ PrintF(" Walk the frame pointers, dumping the pc/sp/fp for each frame.\n");
+ PrintF("del\n");
+ PrintF(" delete the breakpoint\n");
+ PrintF("trace (alias 't')\n");
+ PrintF(" toogle the tracing of all executed statements\n");
+ PrintF("stop feature:\n");
+ PrintF(" Description:\n");
+ PrintF(" Stops are debug instructions inserted by\n");
+ PrintF(" the Assembler::stop() function.\n");
+ PrintF(" When hitting a stop, the Simulator will\n");
+ PrintF(" stop and give control to the ArmDebugger.\n");
+ PrintF(" The first %d stop codes are watched:\n",
+ Simulator::kNumOfWatchedStops);
+ PrintF(" - They can be enabled / disabled: the Simulator\n");
+ PrintF(" will / won't stop when hitting them.\n");
+ PrintF(" - The Simulator keeps track of how many times they \n");
+ PrintF(" are met. (See the info command.) Going over a\n");
+ PrintF(" disabled stop still increases its counter. \n");
+ PrintF(" Commands:\n");
+ PrintF(" stop info all/<code> : print infos about number <code>\n");
+ PrintF(" or all stop(s).\n");
+ PrintF(" stop enable/disable all/<code> : enables / disables\n");
+ PrintF(" all or number <code> stop(s)\n");
+ PrintF(" stop unstop\n");
+ PrintF(" ignore the stop instruction at the current location\n");
+ PrintF(" from now on\n");
+ } else {
+ PrintF("Unknown command: %s\n", cmd);
}
-
- // Reinstall breakpoint to stop execution and enter the debugger shell when
- // hit.
- RedoBreakpoint();
+ return false;
#undef COMMAND_SIZE
#undef ARG_SIZE
@@ -577,11 +608,6 @@ static bool AllOnOnePage(uintptr_t start, int size) {
return start_page == end_page;
}
-void Simulator::set_last_debugger_input(char* input) {
- DeleteArray(last_debugger_input_);
- last_debugger_input_ = input;
-}
-
void Simulator::SetRedirectInstruction(Instruction* instruction) {
instruction->SetInstructionBits(al | (0xF * B24) | kCallRtRedirected);
}
@@ -6499,4 +6525,26 @@ void Simulator::GlobalMonitor::RemoveProcessor(Processor* processor) {
} // namespace internal
} // namespace v8
+//
+// The following functions are used by our gdb macros.
+//
+V8_EXPORT_PRIVATE extern bool _v8_internal_Simulator_ExecDebugCommand(
+ const char* command) {
+ i::Isolate* isolate = i::Isolate::Current();
+ if (!isolate) {
+ fprintf(stderr, "No V8 Isolate found\n");
+ return false;
+ }
+ i::Simulator* simulator = i::Simulator::current(isolate);
+ if (!simulator) {
+ fprintf(stderr, "No Arm simulator found\n");
+ return false;
+ }
+ // Copy the command so that the simulator can take ownership of it.
+ size_t len = strlen(command);
+ i::ArrayUniquePtr<char> command_copy(i::NewArray<char>(len + 1));
+ i::MemCopy(command_copy.get(), command, len + 1);
+ return i::ArmDebugger(simulator).ExecDebugCommand(std::move(command_copy));
+}
+
#endif // USE_SIMULATOR
diff --git a/deps/v8/src/execution/arm/simulator-arm.h b/deps/v8/src/execution/arm/simulator-arm.h
index a4570ff47d..28cf72591c 100644
--- a/deps/v8/src/execution/arm/simulator-arm.h
+++ b/deps/v8/src/execution/arm/simulator-arm.h
@@ -77,6 +77,7 @@ class Simulator : public SimulatorBase {
r14,
r15,
num_registers,
+ fp = 11,
sp = 13,
lr = 14,
pc = 15,
@@ -255,8 +256,10 @@ class Simulator : public SimulatorBase {
uintptr_t PopAddress();
// Debugger input.
- void set_last_debugger_input(char* input);
- char* last_debugger_input() { return last_debugger_input_; }
+ void set_last_debugger_input(ArrayUniquePtr<char> input) {
+ last_debugger_input_ = std::move(input);
+ }
+ const char* last_debugger_input() { return last_debugger_input_.get(); }
// Redirection support.
static void SetRedirectInstruction(Instruction* instruction);
@@ -468,7 +471,7 @@ class Simulator : public SimulatorBase {
int icount_;
// Debugger input.
- char* last_debugger_input_;
+ ArrayUniquePtr<char> last_debugger_input_;
// Registered breakpoints.
Instruction* break_pc_;
diff --git a/deps/v8/src/execution/arm64/simulator-arm64.cc b/deps/v8/src/execution/arm64/simulator-arm64.cc
index 23a03848ad..3853316a80 100644
--- a/deps/v8/src/execution/arm64/simulator-arm64.cc
+++ b/deps/v8/src/execution/arm64/simulator-arm64.cc
@@ -34,7 +34,7 @@ namespace internal {
// SScanF not being implemented in a platform independent way through
// ::v8::internal::OS in the same way as SNPrintF is that the
// Windows C Run-Time Library does not provide vsscanf.
-#define SScanF sscanf // NOLINT
+#define SScanF sscanf
// Helpers for colors.
#define COLOUR(colour_code) "\033[0;" colour_code "m"
diff --git a/deps/v8/src/execution/execution.cc b/deps/v8/src/execution/execution.cc
index 7866b406d9..b16e791aaa 100644
--- a/deps/v8/src/execution/execution.cc
+++ b/deps/v8/src/execution/execution.cc
@@ -190,8 +190,12 @@ MaybeHandle<Context> NewScriptContext(Isolate* isolate,
if (IsLexicalVariableMode(mode) || IsLexicalVariableMode(lookup.mode)) {
Handle<Context> context = ScriptContextTable::GetContext(
isolate, script_context, lookup.context_index);
- // If we are trying to re-declare a REPL-mode let as a let, allow it.
- if (!(mode == VariableMode::kLet && lookup.mode == VariableMode::kLet &&
+ // If we are trying to re-declare a REPL-mode let as a let or REPL-mode
+ // const as a const, allow it.
+ if (!(((mode == VariableMode::kLet &&
+ lookup.mode == VariableMode::kLet) ||
+ (mode == VariableMode::kConst &&
+ lookup.mode == VariableMode::kConst)) &&
scope_info->IsReplModeScope() &&
context->scope_info().IsReplModeScope())) {
// ES#sec-globaldeclarationinstantiation 5.b:
@@ -244,7 +248,7 @@ MaybeHandle<Context> NewScriptContext(Isolate* isolate,
V8_WARN_UNUSED_RESULT MaybeHandle<Object> Invoke(Isolate* isolate,
const InvokeParams& params) {
- RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kInvoke);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kInvoke);
DCHECK(!params.receiver->IsJSGlobalObject());
DCHECK_LE(params.argc, FixedArray::kMaxLength);
@@ -368,7 +372,7 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Object> Invoke(Isolate* isolate,
Address func = params.target->ptr();
Address recv = params.receiver->ptr();
Address** argv = reinterpret_cast<Address**>(params.argv);
- RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kJS_Execution);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kJS_Execution);
value = Object(stub_entry.Call(isolate->isolate_data()->isolate_root(),
orig_func, func, recv, params.argc, argv));
} else {
@@ -383,7 +387,7 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Object> Invoke(Isolate* isolate,
JSEntryFunction stub_entry =
JSEntryFunction::FromAddress(isolate, code->InstructionStart());
- RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kJS_Execution);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kJS_Execution);
value = Object(stub_entry.Call(isolate->isolate_data()->isolate_root(),
params.microtask_queue));
}
@@ -552,7 +556,7 @@ void Execution::CallWasm(Isolate* isolate, Handle<Code> wrapper_code,
trap_handler::SetThreadInWasm();
{
- RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kJS_Execution);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kJS_Execution);
STATIC_ASSERT(compiler::CWasmEntryParameters::kCodeEntry == 0);
STATIC_ASSERT(compiler::CWasmEntryParameters::kObjectRef == 1);
STATIC_ASSERT(compiler::CWasmEntryParameters::kArgumentsBuffer == 2);
diff --git a/deps/v8/src/execution/external-pointer-table.h b/deps/v8/src/execution/external-pointer-table.h
index 243682b36c..4a80fe7d4d 100644
--- a/deps/v8/src/execution/external-pointer-table.h
+++ b/deps/v8/src/execution/external-pointer-table.h
@@ -27,7 +27,7 @@ class V8_EXPORT_PRIVATE ExternalPointerTable {
buffer_[kNullExternalPointer] = kNullAddress;
}
- ~ExternalPointerTable() { ::free(buffer_); }
+ ~ExternalPointerTable() { base::Free(buffer_); }
Address get(uint32_t index) const {
CHECK_LT(index, length_);
@@ -49,13 +49,6 @@ class V8_EXPORT_PRIVATE ExternalPointerTable {
return index;
}
- void free(uint32_t index) {
- // TODO(v8:10391, saelo): implement simple free list here, i.e. set
- // buffer_[index] to freelist_head_ and set freelist_head
- // to index
- DCHECK_NE(kNullExternalPointer, index);
- }
-
// Returns true if the entry exists in the table and therefore it can be read.
bool is_valid_index(uint32_t index) const {
// TODO(v8:10391, saelo): also check here if entry is free
diff --git a/deps/v8/src/execution/frame-constants.h b/deps/v8/src/execution/frame-constants.h
index 10cdff5c0f..1148a94212 100644
--- a/deps/v8/src/execution/frame-constants.h
+++ b/deps/v8/src/execution/frame-constants.h
@@ -390,23 +390,23 @@ inline static int FrameSlotToFPOffset(int slot) {
} // namespace v8
#if V8_TARGET_ARCH_IA32
-#include "src/execution/ia32/frame-constants-ia32.h" // NOLINT
+#include "src/execution/ia32/frame-constants-ia32.h"
#elif V8_TARGET_ARCH_X64
-#include "src/execution/x64/frame-constants-x64.h" // NOLINT
+#include "src/execution/x64/frame-constants-x64.h"
#elif V8_TARGET_ARCH_ARM64
-#include "src/execution/arm64/frame-constants-arm64.h" // NOLINT
+#include "src/execution/arm64/frame-constants-arm64.h"
#elif V8_TARGET_ARCH_ARM
-#include "src/execution/arm/frame-constants-arm.h" // NOLINT
+#include "src/execution/arm/frame-constants-arm.h"
#elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
-#include "src/execution/ppc/frame-constants-ppc.h" // NOLINT
+#include "src/execution/ppc/frame-constants-ppc.h"
#elif V8_TARGET_ARCH_MIPS
-#include "src/execution/mips/frame-constants-mips.h" // NOLINT
+#include "src/execution/mips/frame-constants-mips.h"
#elif V8_TARGET_ARCH_MIPS64
-#include "src/execution/mips64/frame-constants-mips64.h" // NOLINT
+#include "src/execution/mips64/frame-constants-mips64.h"
#elif V8_TARGET_ARCH_S390
-#include "src/execution/s390/frame-constants-s390.h" // NOLINT
+#include "src/execution/s390/frame-constants-s390.h"
#elif V8_TARGET_ARCH_RISCV64
-#include "src/execution/riscv64/frame-constants-riscv64.h" // NOLINT
+#include "src/execution/riscv64/frame-constants-riscv64.h"
#else
#error Unsupported target architecture.
#endif
diff --git a/deps/v8/src/execution/frames.cc b/deps/v8/src/execution/frames.cc
index 65d34a5651..bef92948eb 100644
--- a/deps/v8/src/execution/frames.cc
+++ b/deps/v8/src/execution/frames.cc
@@ -228,8 +228,8 @@ bool IsInterpreterFramePc(Isolate* isolate, Address pc,
Builtins::Name builtin_index = InstructionStream::TryLookupCode(isolate, pc);
if (builtin_index != Builtins::kNoBuiltinId &&
(builtin_index == Builtins::kInterpreterEntryTrampoline ||
- builtin_index == Builtins::kInterpreterEnterBytecodeAdvance ||
- builtin_index == Builtins::kInterpreterEnterBytecodeDispatch ||
+ builtin_index == Builtins::kInterpreterEnterAtBytecode ||
+ builtin_index == Builtins::kInterpreterEnterAtNextBytecode ||
builtin_index == Builtins::kBaselineEnterAtBytecode ||
builtin_index == Builtins::kBaselineEnterAtNextBytecode)) {
return true;
@@ -610,7 +610,6 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
}
return BUILTIN;
case CodeKind::TURBOFAN:
- case CodeKind::NATIVE_CONTEXT_INDEPENDENT:
case CodeKind::TURBOPROP:
return OPTIMIZED;
case CodeKind::BASELINE:
@@ -1060,12 +1059,14 @@ void CommonFrame::IterateCompiledFrame(RootVisitor* v) const {
}
// Visit pointer spill slots and locals.
- uint8_t* safepoint_bits = safepoint_entry.bits();
- for (unsigned index = 0; index < stack_slots; index++) {
- int byte_index = index >> kBitsPerByteLog2;
- int bit_index = index & (kBitsPerByte - 1);
- if ((safepoint_bits[byte_index] & (1U << bit_index)) != 0) {
- FullObjectSlot spill_slot = parameters_limit + index;
+ DCHECK_GE((stack_slots + kBitsPerByte) / kBitsPerByte,
+ safepoint_entry.entry_size());
+ int slot_offset = 0;
+ for (uint8_t bits : safepoint_entry.iterate_bits()) {
+ while (bits) {
+ int bit = base::bits::CountTrailingZeros(bits);
+ bits &= ~(1 << bit);
+ FullObjectSlot spill_slot = parameters_limit + slot_offset + bit;
#ifdef V8_COMPRESS_POINTERS
// Spill slots may contain compressed values in which case the upper
// 32-bits will contain zeros. In order to simplify handling of such
@@ -1083,6 +1084,7 @@ void CommonFrame::IterateCompiledFrame(RootVisitor* v) const {
#endif
v->VisitRootPointer(Root::kStackRoots, nullptr, spill_slot);
}
+ slot_offset += kBitsPerByte;
}
// Visit tagged parameters that have been passed to the function of this
@@ -1444,10 +1446,6 @@ Handle<Object> FrameSummary::JavaScriptFrameSummary::script() const {
return handle(function_->shared().script(), isolate());
}
-Handle<String> FrameSummary::JavaScriptFrameSummary::FunctionName() const {
- return JSFunction::GetDebugName(function_);
-}
-
Handle<Context> FrameSummary::JavaScriptFrameSummary::native_context() const {
return handle(function_->context().native_context(), isolate());
}
@@ -1485,13 +1483,6 @@ Handle<Script> FrameSummary::WasmFrameSummary::script() const {
wasm_instance()->GetIsolate());
}
-Handle<String> FrameSummary::WasmFrameSummary::FunctionName() const {
- Handle<WasmModuleObject> module_object(wasm_instance()->module_object(),
- isolate());
- return WasmModuleObject::GetFunctionName(isolate(), module_object,
- function_index());
-}
-
Handle<Context> FrameSummary::WasmFrameSummary::native_context() const {
return handle(wasm_instance()->native_context(), isolate());
}
@@ -1563,7 +1554,6 @@ FRAME_SUMMARY_DISPATCH(bool, is_subject_to_debugging)
FRAME_SUMMARY_DISPATCH(Handle<Object>, script)
FRAME_SUMMARY_DISPATCH(int, SourcePosition)
FRAME_SUMMARY_DISPATCH(int, SourceStatementPosition)
-FRAME_SUMMARY_DISPATCH(Handle<String>, FunctionName)
FRAME_SUMMARY_DISPATCH(Handle<Context>, native_context)
#undef FRAME_SUMMARY_DISPATCH
@@ -1860,8 +1850,13 @@ int BuiltinFrame::ComputeParametersCount() const {
#if V8_ENABLE_WEBASSEMBLY
void WasmFrame::Print(StringStream* accumulator, PrintMode mode,
int index) const {
- wasm::WasmCodeRefScope code_ref_scope;
PrintIndex(accumulator, mode, index);
+ if (function_index() == wasm::kAnonymousFuncIndex) {
+ accumulator->Add("Anonymous wasm wrapper [pc: %p]\n",
+ reinterpret_cast<void*>(pc()));
+ return;
+ }
+ wasm::WasmCodeRefScope code_ref_scope;
accumulator->Add("WASM [");
accumulator->PrintName(script().name());
Address instruction_start = isolate()
@@ -1905,7 +1900,7 @@ WasmModuleObject WasmFrame::module_object() const {
return wasm_instance().module_object();
}
-uint32_t WasmFrame::function_index() const {
+int WasmFrame::function_index() const {
wasm::WasmCodeRefScope code_ref_scope;
return wasm_code()->index();
}
diff --git a/deps/v8/src/execution/frames.h b/deps/v8/src/execution/frames.h
index 32157b4cc1..8d9dadd76d 100644
--- a/deps/v8/src/execution/frames.h
+++ b/deps/v8/src/execution/frames.h
@@ -138,9 +138,7 @@ class StackFrame {
INNER_JSENTRY_FRAME = (0 << kSmiTagSize) | kSmiTag,
OUTERMOST_JSENTRY_FRAME = (1 << kSmiTagSize) | kSmiTag
};
- // NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((INNER_JSENTRY_FRAME & kHeapObjectTagMask) != kHeapObjectTag);
- // NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((OUTERMOST_JSENTRY_FRAME & kHeapObjectTagMask) !=
kHeapObjectTag);
@@ -389,7 +387,6 @@ class V8_EXPORT_PRIVATE FrameSummary {
int SourcePosition() const;
int SourceStatementPosition() const;
Handle<Object> script() const;
- Handle<String> FunctionName() const;
Handle<Context> native_context() const;
private:
@@ -418,7 +415,6 @@ class V8_EXPORT_PRIVATE FrameSummary {
int SourceStatementPosition() const { return SourcePosition(); }
Handle<Script> script() const;
Handle<WasmInstanceObject> wasm_instance() const { return wasm_instance_; }
- Handle<String> FunctionName() const;
Handle<Context> native_context() const;
bool at_to_number_conversion() const { return at_to_number_conversion_; }
@@ -453,7 +449,6 @@ class V8_EXPORT_PRIVATE FrameSummary {
Handle<Object> script() const;
int SourcePosition() const;
int SourceStatementPosition() const;
- Handle<String> FunctionName() const;
Handle<Context> native_context() const;
#define FRAME_SUMMARY_CAST(kind_, type, field, desc) \
@@ -964,7 +959,7 @@ class WasmFrame : public TypedFrame {
V8_EXPORT_PRIVATE WasmInstanceObject wasm_instance() const;
V8_EXPORT_PRIVATE wasm::NativeModule* native_module() const;
wasm::WasmCode* wasm_code() const;
- uint32_t function_index() const;
+ int function_index() const;
Script script() const;
// Byte position in the module, or asm.js source position.
int position() const override;
diff --git a/deps/v8/src/execution/isolate-data.h b/deps/v8/src/execution/isolate-data.h
index a6610c12f0..bc3e2b8d1a 100644
--- a/deps/v8/src/execution/isolate-data.h
+++ b/deps/v8/src/execution/isolate-data.h
@@ -29,13 +29,19 @@ class Isolate;
// register.
class IsolateData final {
public:
- explicit IsolateData(Isolate* isolate) : stack_guard_(isolate) {}
+ IsolateData(Isolate* isolate, Address cage_base)
+ : cage_base_(cage_base), stack_guard_(isolate) {}
IsolateData(const IsolateData&) = delete;
IsolateData& operator=(const IsolateData&) = delete;
static constexpr intptr_t kIsolateRootBias = kRootRegisterBias;
+ // The value of kPointerCageBaseRegister
+ Address cage_base() const {
+ return COMPRESS_POINTERS_BOOL ? cage_base_ : kNullAddress;
+ }
+
// The value of the kRootRegister.
Address isolate_root() const {
return reinterpret_cast<Address>(this) + kIsolateRootBias;
@@ -61,7 +67,7 @@ class IsolateData final {
return kBuiltinEntryTableOffset - kIsolateRootBias;
}
static constexpr int builtin_entry_slot_offset(Builtins::Name builtin_index) {
- CONSTEXPR_DCHECK(Builtins::IsBuiltinId(builtin_index));
+ DCHECK(Builtins::IsBuiltinId(builtin_index));
return builtin_entry_table_offset() + builtin_index * kSystemPointerSize;
}
@@ -70,6 +76,13 @@ class IsolateData final {
return kBuiltinsTableOffset - kIsolateRootBias;
}
+ // Root-register-relative offset of the external pointer table.
+#ifdef V8_HEAP_SANDBOX
+ static constexpr int external_pointer_table_offset() {
+ return kExternalPointerTableOffset - kIsolateRootBias;
+ }
+#endif
+
static constexpr int fast_c_call_caller_fp_offset() {
return kFastCCallCallerFPOffset - kIsolateRootBias;
}
@@ -82,6 +95,10 @@ class IsolateData final {
return kFastApiCallTargetOffset - kIsolateRootBias;
}
+ static constexpr int cage_base_offset() {
+ return kCageBaseOffset - kIsolateRootBias;
+ }
+
// Root-register-relative offset of the given builtin table entry.
// TODO(ishell): remove in favour of typified id version.
static int builtin_slot_offset(int builtin_index) {
@@ -142,6 +159,8 @@ class IsolateData final {
V(kFastCCallCallerFPOffset, kSystemPointerSize) \
V(kFastCCallCallerPCOffset, kSystemPointerSize) \
V(kFastApiCallTargetOffset, kSystemPointerSize) \
+ V(kCageBaseOffset, kSystemPointerSize) \
+ V(kLongTaskStatsCounterOffset, kSizetSize) \
V(kStackGuardOffset, StackGuard::kSizeInBytes) \
V(kRootsTableOffset, RootsTable::kEntriesCount* kSystemPointerSize) \
V(kExternalReferenceTableOffset, ExternalReferenceTable::kSizeInBytes) \
@@ -180,6 +199,12 @@ class IsolateData final {
Address fast_c_call_caller_pc_ = kNullAddress;
Address fast_api_call_target_ = kNullAddress;
+ Address cage_base_ = kNullAddress;
+
+ // Used for implementation of LongTaskStats. Counts the number of potential
+ // long tasks.
+ size_t long_task_stats_counter_ = 0;
+
// Fields related to the system and JS stack. In particular, this contains
// the stack limit used by stack checks in generated code.
StackGuard stack_guard_;
@@ -245,6 +270,9 @@ void IsolateData::AssertPredictableLayout() {
kFastCCallCallerPCOffset);
STATIC_ASSERT(offsetof(IsolateData, fast_api_call_target_) ==
kFastApiCallTargetOffset);
+ STATIC_ASSERT(offsetof(IsolateData, cage_base_) == kCageBaseOffset);
+ STATIC_ASSERT(offsetof(IsolateData, long_task_stats_counter_) ==
+ kLongTaskStatsCounterOffset);
STATIC_ASSERT(offsetof(IsolateData, stack_guard_) == kStackGuardOffset);
#ifdef V8_HEAP_SANDBOX
STATIC_ASSERT(offsetof(IsolateData, external_pointer_table_) ==
diff --git a/deps/v8/src/execution/isolate-utils-inl.h b/deps/v8/src/execution/isolate-utils-inl.h
index f199b525aa..1e91d494aa 100644
--- a/deps/v8/src/execution/isolate-utils-inl.h
+++ b/deps/v8/src/execution/isolate-utils-inl.h
@@ -51,7 +51,7 @@ V8_INLINE Heap* GetHeapFromWritableObject(HeapObject object) {
heap_internals::MemoryChunk* chunk =
heap_internals::MemoryChunk::FromHeapObject(object);
return chunk->GetHeap();
-#endif // V8_COMPRESS_POINTERS || V8_ENABLE_THIRD_PARTY_HEAP
+#endif // V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE, V8_ENABLE_THIRD_PARTY_HEAP
}
V8_INLINE Isolate* GetIsolateFromWritableObject(HeapObject object) {
@@ -64,14 +64,14 @@ V8_INLINE Isolate* GetIsolateFromWritableObject(HeapObject object) {
return isolate;
#else
return Isolate::FromHeap(GetHeapFromWritableObject(object));
-#endif // V8_COMPRESS_POINTERS, V8_ENABLE_THIRD_PARTY_HEAP
+#endif // V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE, V8_ENABLE_THIRD_PARTY_HEAP
}
V8_INLINE bool GetIsolateFromHeapObject(HeapObject object, Isolate** isolate) {
#ifdef V8_ENABLE_THIRD_PARTY_HEAP
*isolate = Heap::GetIsolateFromWritableObject(object);
return true;
-#elif defined V8_COMPRESS_POINTERS
+#elif defined V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
*isolate = GetIsolateFromWritableObject(object);
return true;
#else
@@ -83,7 +83,18 @@ V8_INLINE bool GetIsolateFromHeapObject(HeapObject object, Isolate** isolate) {
}
*isolate = Isolate::FromHeap(chunk->GetHeap());
return true;
-#endif // V8_COMPRESS_POINTERS, V8_ENABLE_THIRD_PARTY_HEAP
+#endif // V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE, V8_ENABLE_THIRD_PARTY_HEAP
+}
+
+// Use this function instead of Internals::GetIsolateForHeapSandbox for internal
+// code, as this function is fully inlinable.
+V8_INLINE static Isolate* GetIsolateForHeapSandbox(HeapObject object) {
+#ifdef V8_HEAP_SANDBOX
+ return GetIsolateFromWritableObject(object);
+#else
+ // Not used in non-sandbox mode.
+ return nullptr;
+#endif
}
} // namespace internal
diff --git a/deps/v8/src/execution/isolate.cc b/deps/v8/src/execution/isolate.cc
index 55f3fac9b3..b4070372ee 100644
--- a/deps/v8/src/execution/isolate.cc
+++ b/deps/v8/src/execution/isolate.cc
@@ -7,7 +7,7 @@
#include <stdlib.h>
#include <atomic>
-#include <fstream> // NOLINT(readability/streams)
+#include <fstream>
#include <memory>
#include <sstream>
#include <string>
@@ -19,9 +19,11 @@
#include "src/ast/scopes.h"
#include "src/base/hashmap.h"
#include "src/base/logging.h"
+#include "src/base/platform/mutex.h"
#include "src/base/platform/platform.h"
#include "src/base/sys-info.h"
#include "src/base/utils/random-number-generator.h"
+#include "src/bigint/bigint.h"
#include "src/builtins/builtins-promise.h"
#include "src/builtins/constants-table-builder.h"
#include "src/codegen/assembler-inl.h"
@@ -318,10 +320,6 @@ void Isolate::SetEmbeddedBlob(const uint8_t* code, uint32_t code_size,
}
}
#endif // DEBUG
-
- if (FLAG_experimental_flush_embedded_blob_icache) {
- FlushInstructionCache(const_cast<uint8_t*>(code), code_size);
- }
}
void Isolate::ClearEmbeddedBlob() {
@@ -1404,12 +1402,15 @@ Object Isolate::StackOverflow() {
Handle<JSFunction> fun = range_error_function();
Handle<Object> msg = factory()->NewStringFromAsciiChecked(
MessageFormatter::TemplateString(MessageTemplate::kStackOverflow));
+ Handle<Object> options = factory()->undefined_value();
Handle<Object> no_caller;
- Handle<Object> exception;
+ Handle<JSObject> exception;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
this, exception,
- ErrorUtils::Construct(this, fun, fun, msg, SKIP_NONE, no_caller,
+ ErrorUtils::Construct(this, fun, fun, msg, options, SKIP_NONE, no_caller,
ErrorUtils::StackTraceCollection::kSimple));
+ JSObject::AddProperty(this, exception, factory()->wasm_uncatchable_symbol(),
+ factory()->true_value(), NONE);
Throw(*exception);
@@ -1474,8 +1475,7 @@ void Isolate::RequestInterrupt(InterruptCallback callback, void* data) {
}
void Isolate::InvokeApiInterruptCallbacks() {
- RuntimeCallTimerScope runtimeTimer(
- this, RuntimeCallCounterId::kInvokeApiInterruptCallbacks);
+ RCS_SCOPE(this, RuntimeCallCounterId::kInvokeApiInterruptCallbacks);
// Note: callback below should be called outside of execution access lock.
while (true) {
InterruptEntry entry;
@@ -1675,10 +1675,36 @@ Object Isolate::ReThrow(Object exception) {
return ReadOnlyRoots(heap()).exception();
}
+namespace {
+// This scope will set the thread-in-wasm flag after the execution of all
+// destructors. The thread-in-wasm flag is only set when the scope gets enabled.
+class SetThreadInWasmFlagScope {
+ public:
+ SetThreadInWasmFlagScope() {
+ DCHECK_IMPLIES(trap_handler::IsTrapHandlerEnabled(),
+ !trap_handler::IsThreadInWasm());
+ }
+
+ ~SetThreadInWasmFlagScope() {
+ if (enabled_) trap_handler::SetThreadInWasm();
+ }
+
+ void Enable() { enabled_ = true; }
+
+ private:
+ bool enabled_ = false;
+};
+} // namespace
+
Object Isolate::UnwindAndFindHandler() {
+ // Create the {SetThreadInWasmFlagScope} first in this function so that its
+ // destructor gets called after all the other destructors. It is important
+ // that the destructor sets the thread-in-wasm flag after all other
+ // destructors. The other destructors may cause exceptions, e.g. ASan on
+ // Windows, which would invalidate the thread-in-wasm flag when the wasm trap
+ // handler handles such non-wasm exceptions.
+ SetThreadInWasmFlagScope set_thread_in_wasm_flag_scope;
Object exception = pending_exception();
- DCHECK_IMPLIES(trap_handler::IsTrapHandlerEnabled(),
- !trap_handler::IsThreadInWasm());
auto FoundHandler = [&](Context context, Address instruction_start,
intptr_t handler_offset,
@@ -1771,9 +1797,10 @@ Object Isolate::UnwindAndFindHandler() {
StandardFrameConstants::kFixedFrameSizeAboveFp -
wasm_code->stack_slots() * kSystemPointerSize;
- // This is going to be handled by Wasm, so we need to set the TLS flag.
- trap_handler::SetThreadInWasm();
-
+ // This is going to be handled by WebAssembly, so we need to set the TLS
+ // flag. The {SetThreadInWasmFlagScope} will set the flag after all
+ // destructors have been executed.
+ set_thread_in_wasm_flag_scope.Enable();
return FoundHandler(Context(), wasm_code->instruction_start(), offset,
wasm_code->constant_pool(), return_sp, frame->fp());
}
@@ -1886,7 +1913,7 @@ Object Isolate::UnwindAndFindHandler() {
static_cast<int>(offset));
Code code =
- builtins()->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
+ builtins()->builtin(Builtins::kInterpreterEnterAtBytecode);
return FoundHandler(context, code.InstructionStart(), 0,
code.constant_pool(), return_sp, frame->fp());
}
@@ -2550,6 +2577,29 @@ void Isolate::SetAbortOnUncaughtExceptionCallback(
abort_on_uncaught_exception_callback_ = callback;
}
+void Isolate::InstallConditionalFeatures(Handle<Context> context) {
+ Handle<JSGlobalObject> global = handle(context->global_object(), this);
+ Handle<String> sab_name = factory()->SharedArrayBuffer_string();
+ if (IsSharedArrayBufferConstructorEnabled(context)) {
+ if (!JSObject::HasRealNamedProperty(global, sab_name).FromMaybe(true)) {
+ JSObject::AddProperty(this, global, factory()->SharedArrayBuffer_string(),
+ shared_array_buffer_fun(), DONT_ENUM);
+ }
+ }
+}
+
+bool Isolate::IsSharedArrayBufferConstructorEnabled(Handle<Context> context) {
+ if (!FLAG_harmony_sharedarraybuffer) return false;
+
+ if (!FLAG_enable_sharedarraybuffer_per_context) return true;
+
+ if (sharedarraybuffer_constructor_enabled_callback()) {
+ v8::Local<v8::Context> api_context = v8::Utils::ToLocal(context);
+ return sharedarraybuffer_constructor_enabled_callback()(api_context);
+ }
+ return false;
+}
+
bool Isolate::IsWasmSimdEnabled(Handle<Context> context) {
#if V8_ENABLE_WEBASSEMBLY
if (wasm_simd_enabled_callback()) {
@@ -2667,9 +2717,10 @@ void Isolate::UnregisterManagedPtrDestructor(ManagedPtrDestructor* destructor) {
}
#if V8_ENABLE_WEBASSEMBLY
-void Isolate::SetWasmEngine(std::shared_ptr<wasm::WasmEngine> engine) {
+void Isolate::SetWasmEngine(wasm::WasmEngine* engine) {
DCHECK_NULL(wasm_engine_); // Only call once before {Init}.
- wasm_engine_ = std::move(engine);
+ DCHECK_NOT_NULL(engine);
+ wasm_engine_ = engine;
wasm_engine_->AddIsolate(this);
}
@@ -2683,7 +2734,6 @@ void Isolate::AddSharedWasmMemory(Handle<WasmMemoryObject> memory_object) {
}
#endif // V8_ENABLE_WEBASSEMBLY
-// NOLINTNEXTLINE
Isolate::PerIsolateThreadData::~PerIsolateThreadData() {
#if defined(USE_SIMULATOR)
delete simulator_;
@@ -2854,16 +2904,28 @@ std::atomic<size_t> Isolate::non_disposed_isolates_;
#endif // DEBUG
// static
-Isolate* Isolate::New() {
+Isolate* Isolate::New() { return Isolate::Allocate(false); }
+
+// static
+Isolate* Isolate::NewShared(const v8::Isolate::CreateParams& params) {
+ Isolate* isolate = Isolate::Allocate(true);
+ v8::Isolate::Initialize(reinterpret_cast<v8::Isolate*>(isolate), params);
+ return isolate;
+}
+
+// static
+Isolate* Isolate::Allocate(bool is_shared) {
// IsolateAllocator allocates the memory for the Isolate object according to
// the given allocation mode.
std::unique_ptr<IsolateAllocator> isolate_allocator =
std::make_unique<IsolateAllocator>();
// Construct Isolate object in the allocated memory.
void* isolate_ptr = isolate_allocator->isolate_memory();
- Isolate* isolate = new (isolate_ptr) Isolate(std::move(isolate_allocator));
+ Isolate* isolate =
+ new (isolate_ptr) Isolate(std::move(isolate_allocator), is_shared);
#ifdef V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
DCHECK(IsAligned(isolate->isolate_root(), kPtrComprCageBaseAlignment));
+ DCHECK_EQ(isolate->isolate_root(), isolate->cage_base());
#endif
#ifdef DEBUG
@@ -2919,12 +2981,13 @@ void Isolate::SetUpFromReadOnlyArtifacts(
heap_.SetUpFromReadOnlyHeap(read_only_heap_);
}
-v8::PageAllocator* Isolate::page_allocator() {
+v8::PageAllocator* Isolate::page_allocator() const {
return isolate_allocator_->page_allocator();
}
-Isolate::Isolate(std::unique_ptr<i::IsolateAllocator> isolate_allocator)
- : isolate_data_(this),
+Isolate::Isolate(std::unique_ptr<i::IsolateAllocator> isolate_allocator,
+ bool is_shared)
+ : isolate_data_(this, isolate_allocator->GetPtrComprCageBase()),
isolate_allocator_(std::move(isolate_allocator)),
id_(isolate_counter.fetch_add(1, std::memory_order_relaxed)),
allocator_(new TracingAccountingAllocator(this)),
@@ -2941,7 +3004,8 @@ Isolate::Isolate(std::unique_ptr<i::IsolateAllocator> isolate_allocator)
#endif
next_module_async_evaluating_ordinal_(
SourceTextModule::kFirstAsyncEvaluatingOrdinal),
- cancelable_task_manager_(new CancelableTaskManager()) {
+ cancelable_task_manager_(new CancelableTaskManager()),
+ is_shared_(is_shared) {
TRACE_ISOLATE(constructor);
CheckIsolateLayout();
@@ -2951,6 +3015,18 @@ Isolate::Isolate(std::unique_ptr<i::IsolateAllocator> isolate_allocator)
handle_scope_data_.Initialize();
+ // When pointer compression is on with a per-Isolate cage, allocation in the
+ // shared Isolate can point into the per-Isolate RO heap as the offsets are
+ // constant across Isolates.
+ //
+ // When pointer compression is on with a shared cage or when pointer
+ // compression is off, a shared RO heap is required. Otherwise a shared
+ // allocation requested by a client Isolate could point into the client
+ // Isolate's RO space (e.g. an RO map) whose pages gets unmapped when it is
+ // disposed.
+ CHECK_IMPLIES(is_shared_, COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL ||
+ V8_SHARED_RO_HEAP_BOOL);
+
#define ISOLATE_INIT_EXECUTE(type, name, initial_value) \
name##_ = (initial_value);
ISOLATE_INIT_LIST(ISOLATE_INIT_EXECUTE)
@@ -2979,6 +3055,11 @@ void Isolate::CheckIsolateLayout() {
CHECK_EQ(static_cast<int>(
OFFSET_OF(Isolate, isolate_data_.fast_c_call_caller_pc_)),
Internals::kIsolateFastCCallCallerPcOffset);
+ CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, isolate_data_.cage_base_)),
+ Internals::kIsolateCageBaseOffset);
+ CHECK_EQ(static_cast<int>(
+ OFFSET_OF(Isolate, isolate_data_.long_task_stats_counter_)),
+ Internals::kIsolateLongTaskStatsCounterOffset);
CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, isolate_data_.stack_guard_)),
Internals::kIsolateStackGuardOffset);
CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, isolate_data_.roots_)),
@@ -3020,10 +3101,10 @@ void Isolate::Deinit() {
#if defined(V8_OS_WIN64)
if (win64_unwindinfo::CanRegisterUnwindInfoForNonABICompliantCodeRange() &&
- heap()->memory_allocator() && RequiresCodeRange()) {
- const base::AddressRegion& code_range =
- heap()->memory_allocator()->code_range();
- void* start = reinterpret_cast<void*>(code_range.begin());
+ heap()->memory_allocator() && RequiresCodeRange() &&
+ heap()->code_range()->AtomicDecrementUnwindInfoUseCount() == 1) {
+ const base::AddressRegion& code_region = heap()->code_region();
+ void* start = reinterpret_cast<void*>(code_region.begin());
win64_unwindinfo::UnregisterNonABICompliantCodeRange(start);
}
#endif // V8_OS_WIN64
@@ -3044,6 +3125,9 @@ void Isolate::Deinit() {
optimizing_compile_dispatcher_ = nullptr;
}
+ // All client isolates should already be detached.
+ DCHECK_NULL(client_isolate_head_);
+
// Help sweeper threads complete sweeping to stop faster.
heap_.mark_compact_collector()->DrainSweepingWorklists();
heap_.mark_compact_collector()->sweeper()->EnsureIterabilityCompleted();
@@ -3090,6 +3174,10 @@ void Isolate::Deinit() {
main_thread_local_isolate_->heap()->FreeLinearAllocationArea();
+ if (shared_isolate_) {
+ DetachFromSharedIsolate();
+ }
+
heap_.TearDown();
main_thread_local_isolate_.reset();
@@ -3098,10 +3186,7 @@ void Isolate::Deinit() {
if (logfile != nullptr) base::Fclose(logfile);
#if V8_ENABLE_WEBASSEMBLY
- if (wasm_engine_) {
- wasm_engine_->RemoveIsolate(this);
- wasm_engine_.reset();
- }
+ wasm_engine_->RemoveIsolate(this);
#endif // V8_ENABLE_WEBASSEMBLY
TearDownEmbeddedBlob();
@@ -3182,6 +3267,8 @@ Isolate::~Isolate() {
delete thread_manager_;
thread_manager_ = nullptr;
+ bigint_processor_->Destroy();
+
delete global_handles_;
global_handles_ = nullptr;
delete eternal_handles_;
@@ -3389,8 +3476,9 @@ void Isolate::MaybeRemapEmbeddedBuiltinsIntoCodeRange() {
CHECK_NOT_NULL(embedded_blob_code_);
CHECK_NE(embedded_blob_code_size_, 0);
- embedded_blob_code_ = heap_.RemapEmbeddedBuiltinsIntoCodeRange(
- embedded_blob_code_, embedded_blob_code_size_);
+ DCHECK_NOT_NULL(heap_.code_range_);
+ embedded_blob_code_ = heap_.code_range_->RemapEmbeddedBuiltins(
+ this, embedded_blob_code_, embedded_blob_code_size_);
CHECK_NOT_NULL(embedded_blob_code_);
// The un-embedded code blob is already a part of the registered code range
// so it's not necessary to register it again.
@@ -3474,6 +3562,21 @@ using MapOfLoadsAndStoresPerFunction =
std::map<std::string /* function_name */,
std::pair<uint64_t /* loads */, uint64_t /* stores */>>;
MapOfLoadsAndStoresPerFunction* stack_access_count_map = nullptr;
+
+class BigIntPlatform : public bigint::Platform {
+ public:
+ explicit BigIntPlatform(Isolate* isolate) : isolate_(isolate) {}
+ ~BigIntPlatform() override = default;
+
+ bool InterruptRequested() override {
+ StackLimitCheck interrupt_check(isolate_);
+ return (interrupt_check.InterruptRequested() &&
+ isolate_->stack_guard()->HasTerminationRequest());
+ }
+
+ private:
+ Isolate* isolate_;
+};
} // namespace
bool Isolate::Init(SnapshotData* startup_snapshot_data,
@@ -3522,6 +3625,7 @@ bool Isolate::Init(SnapshotData* startup_snapshot_data,
heap_profiler_ = new HeapProfiler(heap());
interpreter_ = new interpreter::Interpreter(this);
string_table_.reset(new StringTable(this));
+ bigint_processor_ = bigint::Processor::New(new BigIntPlatform(this));
compiler_dispatcher_ =
new CompilerDispatcher(this, V8::GetCurrentPlatform(), FLAG_stack_size);
@@ -3531,7 +3635,7 @@ bool Isolate::Init(SnapshotData* startup_snapshot_data,
metrics_recorder_ = std::make_shared<metrics::Recorder>();
- { // NOLINT
+ {
// Ensure that the thread has a valid stack guard. The v8::Locker object
// will ensure this too, but we don't have to use lockers if we are only
// using one thread.
@@ -3546,24 +3650,32 @@ bool Isolate::Init(SnapshotData* startup_snapshot_data,
heap_.SetUpSpaces();
if (V8_SHORT_BUILTIN_CALLS_BOOL && FLAG_short_builtin_calls) {
- // Check if the system has more than 4GB of physical memory by comaring
- // the old space size with respective threshod value.
- is_short_builtin_calls_enabled_ =
- heap_.MaxOldGenerationSize() >= kShortBuiltinCallsOldSpaceSizeThreshold;
+ // Check if the system has more than 4GB of physical memory by comparing the
+ // old space size with respective threshold value.
+ //
+ // Additionally, enable if there is already a process-wide CodeRange that
+ // has re-embedded builtins.
+ is_short_builtin_calls_enabled_ = (heap_.MaxOldGenerationSize() >=
+ kShortBuiltinCallsOldSpaceSizeThreshold);
+ if (COMPRESS_POINTERS_IN_SHARED_CAGE_BOOL) {
+ std::shared_ptr<CodeRange> code_range =
+ CodeRange::GetProcessWideCodeRange();
+ if (code_range && code_range->embedded_blob_code_copy() != nullptr) {
+ is_short_builtin_calls_enabled_ = true;
+ }
+ }
}
// Create LocalIsolate/LocalHeap for the main thread and set state to Running.
main_thread_local_isolate_.reset(new LocalIsolate(this, ThreadKind::kMain));
main_thread_local_heap()->Unpark();
+ heap_.InitializeMainThreadLocalHeap(main_thread_local_heap());
+
isolate_data_.external_reference_table()->Init(this);
#if V8_ENABLE_WEBASSEMBLY
- // Setup the wasm engine.
- if (wasm_engine_ == nullptr) {
- SetWasmEngine(wasm::WasmEngine::GetWasmEngine());
- }
- DCHECK_NOT_NULL(wasm_engine_);
+ SetWasmEngine(wasm::WasmEngine::GetWasmEngine());
#endif // V8_ENABLE_WEBASSEMBLY
if (setup_delegate_ == nullptr) {
@@ -3721,11 +3833,11 @@ bool Isolate::Init(SnapshotData* startup_snapshot_data,
}
#if defined(V8_OS_WIN64)
- if (win64_unwindinfo::CanRegisterUnwindInfoForNonABICompliantCodeRange()) {
- const base::AddressRegion& code_range =
- heap()->memory_allocator()->code_range();
- void* start = reinterpret_cast<void*>(code_range.begin());
- size_t size_in_bytes = code_range.size();
+ if (win64_unwindinfo::CanRegisterUnwindInfoForNonABICompliantCodeRange() &&
+ heap()->code_range()->AtomicIncrementUnwindInfoUseCount() == 0) {
+ const base::AddressRegion& code_region = heap()->code_region();
+ void* start = reinterpret_cast<void*>(code_region.begin());
+ size_t size_in_bytes = code_region.size();
win64_unwindinfo::RegisterNonABICompliantCodeRange(start, size_in_bytes);
}
#endif // V8_OS_WIN64
@@ -3845,6 +3957,7 @@ void Isolate::DumpAndResetStats() {
wasm_engine()->DumpAndResetTurboStatistics();
}
#endif // V8_ENABLE_WEBASSEMBLY
+#if V8_RUNTIME_CALL_STATS
if (V8_UNLIKELY(TracingFlags::runtime_stats.load(std::memory_order_relaxed) ==
v8::tracing::TracingCategoryObserver::ENABLED_BY_NATIVE)) {
counters()->worker_thread_runtime_call_stats()->AddToMainTable(
@@ -3852,6 +3965,7 @@ void Isolate::DumpAndResetStats() {
counters()->runtime_call_stats()->Print();
counters()->runtime_call_stats()->Reset();
}
+#endif // V8_RUNTIME_CALL_STATS
if (BasicBlockProfiler::Get()->HasData(this)) {
StdoutStream out;
BasicBlockProfiler::Get()->Print(out, this);
@@ -4264,11 +4378,15 @@ MaybeHandle<FixedArray> Isolate::GetImportAssertionsFromArgument(
Handle<JSReceiver> import_assertions_object_receiver =
Handle<JSReceiver>::cast(import_assertions_object);
- Handle<FixedArray> assertion_keys =
- KeyAccumulator::GetKeys(import_assertions_object_receiver,
- KeyCollectionMode::kOwnOnly, ENUMERABLE_STRINGS,
- GetKeysConversion::kConvertToString)
- .ToHandleChecked();
+ Handle<FixedArray> assertion_keys;
+ if (!KeyAccumulator::GetKeys(import_assertions_object_receiver,
+ KeyCollectionMode::kOwnOnly, ENUMERABLE_STRINGS,
+ GetKeysConversion::kConvertToString)
+ .ToHandle(&assertion_keys)) {
+ // This happens if the assertions object is a Proxy whose ownKeys() or
+ // getOwnPropertyDescriptor() trap throws.
+ return MaybeHandle<FixedArray>();
+ }
// The assertions will be passed to the host in the form: [key1,
// value1, key2, value2, ...].
@@ -4315,7 +4433,7 @@ void Isolate::SetHostImportModuleDynamicallyCallback(
MaybeHandle<JSObject> Isolate::RunHostInitializeImportMetaObjectCallback(
Handle<SourceTextModule> module) {
- CHECK(module->import_meta().IsTheHole(this));
+ CHECK(module->import_meta(kAcquireLoad).IsTheHole(this));
Handle<JSObject> import_meta = factory()->NewJSObjectWithNullProto();
if (host_initialize_import_meta_object_callback_ != nullptr) {
v8::Local<v8::Context> api_context =
@@ -4894,6 +5012,18 @@ MaybeLocal<v8::Context> Isolate::GetContextFromRecorderContextId(
return result->second.Get(reinterpret_cast<v8::Isolate*>(this));
}
+void Isolate::UpdateLongTaskStats() {
+ if (last_long_task_stats_counter_ != isolate_data_.long_task_stats_counter_) {
+ last_long_task_stats_counter_ = isolate_data_.long_task_stats_counter_;
+ long_task_stats_ = v8::metrics::LongTaskStats{};
+ }
+}
+
+v8::metrics::LongTaskStats* Isolate::GetCurrentLongTaskStats() {
+ UpdateLongTaskStats();
+ return &long_task_stats_;
+}
+
void Isolate::RemoveContextIdCallback(const v8::WeakCallbackInfo<void>& data) {
Isolate* isolate = reinterpret_cast<Isolate*>(data.GetIsolate());
uintptr_t context_id = reinterpret_cast<uintptr_t>(data.GetParameter());
@@ -4970,5 +5100,54 @@ Address Isolate::store_to_stack_count_address(const char* function_name) {
return reinterpret_cast<Address>(&map[name].second);
}
+void Isolate::AttachToSharedIsolate(Isolate* shared) {
+ DCHECK(shared->is_shared());
+ DCHECK_NULL(shared_isolate_);
+ shared->AppendAsClientIsolate(this);
+ shared_isolate_ = shared;
+ heap()->InitSharedSpaces();
+}
+
+void Isolate::DetachFromSharedIsolate() {
+ DCHECK_NOT_NULL(shared_isolate_);
+ shared_isolate_->RemoveAsClientIsolate(this);
+ shared_isolate_ = nullptr;
+ heap()->DeinitSharedSpaces();
+}
+
+void Isolate::AppendAsClientIsolate(Isolate* client) {
+ base::MutexGuard guard(&client_isolate_mutex_);
+
+ DCHECK_NULL(client->prev_client_isolate_);
+ DCHECK_NULL(client->next_client_isolate_);
+ DCHECK_NE(client_isolate_head_, client);
+
+ if (client_isolate_head_) {
+ client_isolate_head_->prev_client_isolate_ = client;
+ }
+
+ client->prev_client_isolate_ = nullptr;
+ client->next_client_isolate_ = client_isolate_head_;
+
+ client_isolate_head_ = client;
+}
+
+void Isolate::RemoveAsClientIsolate(Isolate* client) {
+ base::MutexGuard guard(&client_isolate_mutex_);
+
+ if (client->next_client_isolate_) {
+ client->next_client_isolate_->prev_client_isolate_ =
+ client->prev_client_isolate_;
+ }
+
+ if (client->prev_client_isolate_) {
+ client->prev_client_isolate_->next_client_isolate_ =
+ client->next_client_isolate_;
+ } else {
+ DCHECK_EQ(client_isolate_head_, client);
+ client_isolate_head_ = client->next_client_isolate_;
+ }
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/execution/isolate.h b/deps/v8/src/execution/isolate.h
index 031ec87812..f55af20acd 100644
--- a/deps/v8/src/execution/isolate.h
+++ b/deps/v8/src/execution/isolate.h
@@ -13,7 +13,6 @@
#include <unordered_map>
#include <vector>
-#include "include/v8-inspector.h"
#include "include/v8-internal.h"
#include "include/v8-metrics.h"
#include "include/v8.h"
@@ -48,12 +47,20 @@ class UMemory;
} // namespace U_ICU_NAMESPACE
#endif // V8_INTL_SUPPORT
+namespace v8_inspector {
+class V8Inspector;
+} // namespace v8_inspector
+
namespace v8 {
namespace base {
class RandomNumberGenerator;
} // namespace base
+namespace bigint {
+class Processor;
+}
+
namespace debug {
class ConsoleDelegate;
class AsyncEventDelegate;
@@ -430,6 +437,8 @@ using DebugObjectCache = std::vector<Handle<HeapObject>>;
V(AllowWasmCodeGenerationCallback, allow_wasm_code_gen_callback, nullptr) \
V(ExtensionCallback, wasm_module_callback, &NoExtension) \
V(ExtensionCallback, wasm_instance_callback, &NoExtension) \
+ V(SharedArrayBufferConstructorEnabledCallback, \
+ sharedarraybuffer_constructor_enabled_callback, nullptr) \
V(WasmStreamingCallback, wasm_streaming_callback, nullptr) \
V(WasmLoadSourceMapCallback, wasm_load_source_map_callback, nullptr) \
V(WasmSimdEnabledCallback, wasm_simd_enabled_callback, nullptr) \
@@ -548,6 +557,9 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
// new operator.
static Isolate* New();
+ // Creates a new shared Isolate object.
+ static Isolate* NewShared(const v8::Isolate::CreateParams& params);
+
// Deletes Isolate object. Must be used instead of delete operator.
// Destroys the non-default isolates.
// Sets default isolate into "has_been_disposed" state rather then destroying,
@@ -559,7 +571,7 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
void set_read_only_heap(ReadOnlyHeap* ro_heap) { read_only_heap_ = ro_heap; }
// Page allocator that must be used for allocating V8 heap pages.
- v8::PageAllocator* page_allocator();
+ v8::PageAllocator* page_allocator() const;
// Returns the PerIsolateThreadData for the current thread (or nullptr if one
// is not currently set).
@@ -659,12 +671,12 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
base::SharedMutex* map_updater_access() { return &map_updater_access_; }
// The isolate's string table.
- StringTable* string_table() { return string_table_.get(); }
+ StringTable* string_table() const { return string_table_.get(); }
Address get_address_from_id(IsolateAddressId id);
// Access to top context (where the current function object was created).
- Context context() { return thread_local_top()->context_; }
+ Context context() const { return thread_local_top()->context_; }
inline void set_context(Context context);
Context* context_address() { return &thread_local_top()->context_; }
@@ -681,6 +693,10 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
inline void set_pending_exception(Object exception_obj);
inline void clear_pending_exception();
+ void InstallConditionalFeatures(Handle<Context> context);
+
+ bool IsSharedArrayBufferConstructorEnabled(Handle<Context> context);
+
bool IsWasmSimdEnabled(Handle<Context> context);
bool AreWasmExceptionsEnabled(Handle<Context> context);
@@ -1021,6 +1037,25 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
const IsolateData* isolate_data() const { return &isolate_data_; }
IsolateData* isolate_data() { return &isolate_data_; }
+ // When pointer compression is on, this is the base address of the pointer
+ // compression cage, and the kPtrComprCageBaseRegister is set to this
+ // value. When pointer compression is off, this is always kNullAddress.
+ Address cage_base() const {
+ DCHECK_IMPLIES(!COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL &&
+ !COMPRESS_POINTERS_IN_SHARED_CAGE_BOOL,
+ isolate_data()->cage_base() == kNullAddress);
+ return isolate_data()->cage_base();
+ }
+
+ // When pointer compression is on, the PtrComprCage used by this
+ // Isolate. Otherwise nullptr.
+ VirtualMemoryCage* GetPtrComprCage() {
+ return isolate_allocator_->GetPtrComprCage();
+ }
+ const VirtualMemoryCage* GetPtrComprCage() const {
+ return isolate_allocator_->GetPtrComprCage();
+ }
+
// Generated code can embed this address to get access to the isolate-specific
// data (for example, roots, external references, builtins, etc.).
// The kRootRegister is set to this value.
@@ -1047,7 +1082,7 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
sizeof(IsolateData));
}
- Object root(RootIndex index) { return Object(roots_table()[index]); }
+ Object root(RootIndex index) const { return Object(roots_table()[index]); }
Handle<Object> root_handle(RootIndex index) {
return Handle<Object>(&roots_table()[index]);
@@ -1063,8 +1098,8 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
bool IsBuiltinsTableHandleLocation(Address* handle_location);
- StubCache* load_stub_cache() { return load_stub_cache_; }
- StubCache* store_stub_cache() { return store_stub_cache_; }
+ StubCache* load_stub_cache() const { return load_stub_cache_; }
+ StubCache* store_stub_cache() const { return store_stub_cache_; }
Deoptimizer* GetAndClearCurrentDeoptimizer() {
Deoptimizer* result = current_deoptimizer_;
CHECK_NOT_NULL(result);
@@ -1101,32 +1136,34 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
THREAD_LOCAL_TOP_ADDRESS(Address, thread_in_wasm_flag_address)
- MaterializedObjectStore* materialized_object_store() {
+ MaterializedObjectStore* materialized_object_store() const {
return materialized_object_store_;
}
- DescriptorLookupCache* descriptor_lookup_cache() {
+ DescriptorLookupCache* descriptor_lookup_cache() const {
return descriptor_lookup_cache_;
}
HandleScopeData* handle_scope_data() { return &handle_scope_data_; }
- HandleScopeImplementer* handle_scope_implementer() {
+ HandleScopeImplementer* handle_scope_implementer() const {
DCHECK(handle_scope_implementer_);
return handle_scope_implementer_;
}
- UnicodeCache* unicode_cache() { return unicode_cache_; }
+ UnicodeCache* unicode_cache() const { return unicode_cache_; }
InnerPointerToCodeCache* inner_pointer_to_code_cache() {
return inner_pointer_to_code_cache_;
}
- GlobalHandles* global_handles() { return global_handles_; }
+ GlobalHandles* global_handles() const { return global_handles_; }
+
+ EternalHandles* eternal_handles() const { return eternal_handles_; }
- EternalHandles* eternal_handles() { return eternal_handles_; }
+ ThreadManager* thread_manager() const { return thread_manager_; }
- ThreadManager* thread_manager() { return thread_manager_; }
+ bigint::Processor* bigint_processor() { return bigint_processor_; }
#ifndef V8_INTL_SUPPORT
unibrow::Mapping<unibrow::Ecma262UnCanonicalize>* jsregexp_uncanonicalize() {
@@ -1147,14 +1184,16 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
Builtins* builtins() { return &builtins_; }
- RegExpStack* regexp_stack() { return regexp_stack_; }
+ RegExpStack* regexp_stack() const { return regexp_stack_; }
- size_t total_regexp_code_generated() { return total_regexp_code_generated_; }
+ size_t total_regexp_code_generated() const {
+ return total_regexp_code_generated_;
+ }
void IncreaseTotalRegexpCodeGenerated(Handle<HeapObject> code);
std::vector<int>* regexp_indices() { return &regexp_indices_; }
- Debug* debug() { return debug_; }
+ Debug* debug() const { return debug_; }
void* is_profiling_address() { return &is_profiling_; }
@@ -1178,8 +1217,7 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
v8::internal::Factory* factory() {
// Upcast to the privately inherited base-class using c-style casts to avoid
// undefined behavior (as static_cast cannot cast across private bases).
- // NOLINTNEXTLINE (google-readability-casting)
- return (v8::internal::Factory*)this; // NOLINT(readability/casting)
+ return (v8::internal::Factory*)this;
}
static const int kJSRegexpStaticOffsetsVectorSize = 128;
@@ -1192,7 +1230,7 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
DCHECK_LT(slot, Internals::kNumIsolateDataSlots);
isolate_data_.embedder_data_[slot] = data;
}
- void* GetData(uint32_t slot) {
+ void* GetData(uint32_t slot) const {
DCHECK_LT(slot, Internals::kNumIsolateDataSlots);
return isolate_data_.embedder_data_[slot];
}
@@ -1205,7 +1243,7 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
return snapshot_blob_ != nullptr && snapshot_blob_->raw_size != 0;
}
- bool IsDead() { return has_fatal_error_; }
+ bool IsDead() const { return has_fatal_error_; }
void SignalFatalError() { has_fatal_error_ = true; }
bool use_optimizer();
@@ -1261,11 +1299,11 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
void MaybeInitializeVectorListFromHeap();
- double time_millis_since_init() {
+ double time_millis_since_init() const {
return heap_.MonotonicallyIncreasingTimeInMs() - time_millis_at_init_;
}
- DateCache* date_cache() { return date_cache_; }
+ DateCache* date_cache() const { return date_cache_; }
void set_date_cache(DateCache* date_cache);
@@ -1319,7 +1357,7 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
std::unique_ptr<PersistentHandles> NewPersistentHandles();
- PersistentHandlesList* persistent_handles_list() {
+ PersistentHandlesList* persistent_handles_list() const {
return persistent_handles_list_.get();
}
@@ -1666,8 +1704,9 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
}
#if V8_ENABLE_WEBASSEMBLY
- wasm::WasmEngine* wasm_engine() const { return wasm_engine_.get(); }
- void SetWasmEngine(std::shared_ptr<wasm::WasmEngine> engine);
+ // TODO(wasm): Replace all uses by {WasmEngine::GetWasmEngine}?
+ wasm::WasmEngine* wasm_engine() const { return wasm_engine_; }
+ void SetWasmEngine(wasm::WasmEngine* engine);
void AddSharedWasmMemory(Handle<WasmMemoryObject> memory_object);
#endif // V8_ENABLE_WEBASSEMBLY
@@ -1701,6 +1740,9 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
MaybeLocal<v8::Context> GetContextFromRecorderContextId(
v8::metrics::Recorder::ContextId id);
+ void UpdateLongTaskStats();
+ v8::metrics::LongTaskStats* GetCurrentLongTaskStats();
+
LocalIsolate* main_thread_local_isolate() {
return main_thread_local_isolate_.get();
}
@@ -1731,8 +1773,17 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
using IsDebugActive = HasAsyncEventDelegate::Next<bool, 1>;
};
+ bool is_shared() { return is_shared_; }
+ Isolate* shared_isolate() { return shared_isolate_; }
+
+ void AttachToSharedIsolate(Isolate* shared);
+ void DetachFromSharedIsolate();
+
+ bool HasClientIsolates() const { return client_isolate_head_; }
+
private:
- explicit Isolate(std::unique_ptr<IsolateAllocator> isolate_allocator);
+ explicit Isolate(std::unique_ptr<IsolateAllocator> isolate_allocator,
+ bool is_shared);
~Isolate();
bool Init(SnapshotData* startup_snapshot_data,
@@ -1743,6 +1794,10 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
void InitializeCodeRanges();
void AddCodeMemoryRange(MemoryRange range);
+ // Common method to create an Isolate used by Isolate::New() and
+ // Isolate::NewShared().
+ static Isolate* Allocate(bool is_shared);
+
static void RemoveContextIdCallback(const v8::WeakCallbackInfo<void>& data);
class ThreadDataTable {
@@ -1843,6 +1898,10 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
// Returns the Exception sentinel.
Object ThrowInternal(Object exception, MessageLocation* location);
+ // Methods for appending and removing to/from client isolates list.
+ void AppendAsClientIsolate(Isolate* client);
+ void RemoveAsClientIsolate(Isolate* client);
+
// This class contains a collection of data accessible from both C++ runtime
// and compiled code (including assembly stubs, builtins, interpreter bytecode
// handlers and optimized code).
@@ -1888,6 +1947,7 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
GlobalHandles* global_handles_ = nullptr;
EternalHandles* eternal_handles_ = nullptr;
ThreadManager* thread_manager_ = nullptr;
+ bigint::Processor* bigint_processor_ = nullptr;
RuntimeState runtime_state_;
Builtins builtins_;
SetupIsolateDelegate* setup_delegate_ = nullptr;
@@ -2047,6 +2107,9 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context>>>
recorder_context_id_map_;
+ size_t last_long_task_stats_counter_ = 0;
+ v8::metrics::LongTaskStats long_task_stats_;
+
std::vector<Object> startup_object_cache_;
// Used during builtins compilation to build the builtins constants table,
@@ -2094,7 +2157,7 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
size_t elements_deletion_counter_ = 0;
#if V8_ENABLE_WEBASSEMBLY
- std::shared_ptr<wasm::WasmEngine> wasm_engine_;
+ wasm::WasmEngine* wasm_engine_ = nullptr;
#endif // V8_ENABLE_WEBASSEMBLY
std::unique_ptr<TracingCpuProfilerImpl> tracing_cpu_profiler_;
@@ -2113,6 +2176,23 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory {
base::Mutex thread_data_table_mutex_;
ThreadDataTable thread_data_table_;
+ // Set to true if this isolate is used as shared heap.
+ const bool is_shared_;
+
+ // Stores the shared isolate for this client isolate. nullptr for shared
+ // isolates or when no shared isolate is used.
+ Isolate* shared_isolate_ = nullptr;
+
+ // A shared isolate will use these two fields to track all its client
+ // isolates.
+ base::Mutex client_isolate_mutex_;
+ Isolate* client_isolate_head_ = nullptr;
+
+ // Used to form a linked list of all client isolates. Protected by
+ // client_isolate_mutex_.
+ Isolate* prev_client_isolate_ = nullptr;
+ Isolate* next_client_isolate_ = nullptr;
+
// A signal-safe vector of heap pages containing code. Used with the
// v8::Unwinder API.
std::atomic<std::vector<MemoryRange>*> code_pages_{nullptr};
diff --git a/deps/v8/src/execution/local-isolate-inl.h b/deps/v8/src/execution/local-isolate-inl.h
index 318cc10fa4..59a7b1f5e4 100644
--- a/deps/v8/src/execution/local-isolate-inl.h
+++ b/deps/v8/src/execution/local-isolate-inl.h
@@ -12,7 +12,7 @@
namespace v8 {
namespace internal {
-Address LocalIsolate::isolate_root() const { return isolate_->isolate_root(); }
+Address LocalIsolate::cage_base() const { return isolate_->cage_base(); }
ReadOnlyHeap* LocalIsolate::read_only_heap() const {
return isolate_->read_only_heap();
}
diff --git a/deps/v8/src/execution/local-isolate.h b/deps/v8/src/execution/local-isolate.h
index 91192d5f0f..5392534d66 100644
--- a/deps/v8/src/execution/local-isolate.h
+++ b/deps/v8/src/execution/local-isolate.h
@@ -50,7 +50,7 @@ class V8_EXPORT_PRIVATE LocalIsolate final : private HiddenLocalFactory {
LocalHeap* heap() { return &heap_; }
- inline Address isolate_root() const;
+ inline Address cage_base() const;
inline ReadOnlyHeap* read_only_heap() const;
inline Object root(RootIndex index) const;
@@ -62,8 +62,7 @@ class V8_EXPORT_PRIVATE LocalIsolate final : private HiddenLocalFactory {
v8::internal::LocalFactory* factory() {
// Upcast to the privately inherited base-class using c-style casts to avoid
// undefined behavior (as static_cast cannot cast across private bases).
- // NOLINTNEXTLINE (google-readability-casting)
- return (v8::internal::LocalFactory*)this; // NOLINT(readability/casting)
+ return (v8::internal::LocalFactory*)this;
}
bool has_pending_exception() const { return false; }
diff --git a/deps/v8/src/execution/messages.cc b/deps/v8/src/execution/messages.cc
index a8b7ad23ca..f72ff6b02c 100644
--- a/deps/v8/src/execution/messages.cc
+++ b/deps/v8/src/execution/messages.cc
@@ -186,8 +186,7 @@ void MessageHandler::ReportMessageNoExceptions(
FUNCTION_CAST<v8::MessageCallback>(callback_obj.foreign_address());
Handle<Object> callback_data(listener.get(1), isolate);
{
- RuntimeCallTimerScope timer(
- isolate, RuntimeCallCounterId::kMessageListenerCallback);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kMessageListenerCallback);
// Do not allow exceptions to propagate.
v8::TryCatch try_catch(reinterpret_cast<v8::Isolate*>(isolate));
callback(api_message_obj, callback_data->IsUndefined(isolate)
@@ -483,7 +482,8 @@ MaybeHandle<String> MessageFormatter::Format(Isolate* isolate,
MaybeHandle<JSObject> ErrorUtils::Construct(Isolate* isolate,
Handle<JSFunction> target,
Handle<Object> new_target,
- Handle<Object> message) {
+ Handle<Object> message,
+ Handle<Object> options) {
FrameSkipMode mode = SKIP_FIRST;
Handle<Object> caller;
@@ -495,15 +495,15 @@ MaybeHandle<JSObject> ErrorUtils::Construct(Isolate* isolate,
caller = new_target;
}
- return ErrorUtils::Construct(isolate, target, new_target, message, mode,
- caller,
+ return ErrorUtils::Construct(isolate, target, new_target, message, options,
+ mode, caller,
ErrorUtils::StackTraceCollection::kDetailed);
}
MaybeHandle<JSObject> ErrorUtils::Construct(
Isolate* isolate, Handle<JSFunction> target, Handle<Object> new_target,
- Handle<Object> message, FrameSkipMode mode, Handle<Object> caller,
- StackTraceCollection stack_trace_collection) {
+ Handle<Object> message, Handle<Object> options, FrameSkipMode mode,
+ Handle<Object> caller, StackTraceCollection stack_trace_collection) {
if (FLAG_correctness_fuzzer_suppressions) {
// Abort range errors in correctness fuzzing, as their causes differ
// accross correctness-fuzzing scenarios.
@@ -536,7 +536,6 @@ MaybeHandle<JSObject> ErrorUtils::Construct(
// true, [[Enumerable]]: false, [[Configurable]]: true}.
// c. Perform ! DefinePropertyOrThrow(O, "message", msgDesc).
// 4. Return O.
-
if (!message->IsUndefined(isolate)) {
Handle<String> msg_string;
ASSIGN_RETURN_ON_EXCEPTION(isolate, msg_string,
@@ -548,6 +547,31 @@ MaybeHandle<JSObject> ErrorUtils::Construct(
JSObject);
}
+ if (FLAG_harmony_error_cause && !options->IsUndefined(isolate)) {
+ // If Type(options) is Object and ? HasProperty(options, "cause") then
+ // a. Let cause be ? Get(options, "cause").
+ // b. Perform ! CreateNonEnumerableDataPropertyOrThrow(O, "cause", cause).
+ Handle<Name> cause_string = isolate->factory()->cause_string();
+ if (options->IsJSReceiver()) {
+ Handle<JSReceiver> js_options = Handle<JSReceiver>::cast(options);
+ Maybe<bool> has_cause = JSObject::HasProperty(js_options, cause_string);
+ if (has_cause.IsNothing()) {
+ DCHECK((isolate)->has_pending_exception());
+ return MaybeHandle<JSObject>();
+ }
+ if (has_cause.ToChecked()) {
+ Handle<Object> cause;
+ ASSIGN_RETURN_ON_EXCEPTION(
+ isolate, cause,
+ JSObject::GetProperty(isolate, js_options, cause_string), JSObject);
+ RETURN_ON_EXCEPTION(isolate,
+ JSObject::SetOwnPropertyIgnoreAttributes(
+ err, cause_string, cause, DONT_ENUM),
+ JSObject);
+ }
+ }
+ }
+
switch (stack_trace_collection) {
case StackTraceCollection::kDetailed:
RETURN_ON_EXCEPTION(
@@ -676,14 +700,15 @@ Handle<JSObject> ErrorUtils::MakeGenericError(
isolate->clear_pending_exception();
}
Handle<String> msg = DoFormatMessage(isolate, index, arg0, arg1, arg2);
+ Handle<Object> options = isolate->factory()->undefined_value();
DCHECK(mode != SKIP_UNTIL_SEEN);
Handle<Object> no_caller;
// The call below can't fail because constructor is a builtin.
DCHECK(constructor->shared().HasBuiltinId());
- return ErrorUtils::Construct(isolate, constructor, constructor, msg, mode,
- no_caller, StackTraceCollection::kDetailed)
+ return ErrorUtils::Construct(isolate, constructor, constructor, msg, options,
+ mode, no_caller, StackTraceCollection::kDetailed)
.ToHandleChecked();
}
diff --git a/deps/v8/src/execution/messages.h b/deps/v8/src/execution/messages.h
index 43f99d1797..ad2d76f59e 100644
--- a/deps/v8/src/execution/messages.h
+++ b/deps/v8/src/execution/messages.h
@@ -77,11 +77,12 @@ class ErrorUtils : public AllStatic {
static MaybeHandle<JSObject> Construct(Isolate* isolate,
Handle<JSFunction> target,
Handle<Object> new_target,
- Handle<Object> message);
+ Handle<Object> message,
+ Handle<Object> options);
static MaybeHandle<JSObject> Construct(
Isolate* isolate, Handle<JSFunction> target, Handle<Object> new_target,
- Handle<Object> message, FrameSkipMode mode, Handle<Object> caller,
- StackTraceCollection stack_trace_collection);
+ Handle<Object> message, Handle<Object> options, FrameSkipMode mode,
+ Handle<Object> caller, StackTraceCollection stack_trace_collection);
static MaybeHandle<String> ToString(Isolate* isolate, Handle<Object> recv);
diff --git a/deps/v8/src/execution/microtask-queue.cc b/deps/v8/src/execution/microtask-queue.cc
index 496737b03a..cae642e2c9 100644
--- a/deps/v8/src/execution/microtask-queue.cc
+++ b/deps/v8/src/execution/microtask-queue.cc
@@ -113,6 +113,16 @@ void MicrotaskQueue::EnqueueMicrotask(Microtask microtask) {
void MicrotaskQueue::PerformCheckpoint(v8::Isolate* v8_isolate) {
if (!IsRunningMicrotasks() && !GetMicrotasksScopeDepth() &&
!HasMicrotasksSuppressions()) {
+ std::unique_ptr<MicrotasksScope> microtasks_scope;
+ if (microtasks_policy_ == v8::MicrotasksPolicy::kScoped) {
+ // If we're using microtask scopes to schedule microtask execution, V8
+ // API calls will check that there's always a microtask scope on the
+ // stack. As the microtasks we're about to execute could invoke embedder
+ // callbacks which then calls back into V8, we create an artificial
+ // microtask scope here to avoid running into the CallDepthScope check.
+ microtasks_scope.reset(new v8::MicrotasksScope(
+ v8_isolate, this, v8::MicrotasksScope::kDoNotRunMicrotasks));
+ }
Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate);
RunMicrotasks(isolate);
isolate->ClearKeptObjects();
diff --git a/deps/v8/src/execution/mips/simulator-mips.cc b/deps/v8/src/execution/mips/simulator-mips.cc
index ca402dca04..3c9c252310 100644
--- a/deps/v8/src/execution/mips/simulator-mips.cc
+++ b/deps/v8/src/execution/mips/simulator-mips.cc
@@ -47,7 +47,7 @@ uint32_t get_fcsr_condition_bit(uint32_t cc) {
// SScanF not being implemented in a platform independent was through
// ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time
// Library does not provide vsscanf.
-#define SScanF sscanf // NOLINT
+#define SScanF sscanf
// The MipsDebugger class is used by the simulator while debugging simulated
// code.
diff --git a/deps/v8/src/execution/mips64/simulator-mips64.cc b/deps/v8/src/execution/mips64/simulator-mips64.cc
index 198022b3a4..2ab945f88d 100644
--- a/deps/v8/src/execution/mips64/simulator-mips64.cc
+++ b/deps/v8/src/execution/mips64/simulator-mips64.cc
@@ -64,7 +64,7 @@ static int64_t MultiplyHighSigned(int64_t u, int64_t v) {
// SScanF not being implemented in a platform independent was through
// ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time
// Library does not provide vsscanf.
-#define SScanF sscanf // NOLINT
+#define SScanF sscanf
// The MipsDebugger class is used by the simulator while debugging simulated
// code.
diff --git a/deps/v8/src/execution/ppc/simulator-ppc.cc b/deps/v8/src/execution/ppc/simulator-ppc.cc
index c812af360e..f9b9552433 100644
--- a/deps/v8/src/execution/ppc/simulator-ppc.cc
+++ b/deps/v8/src/execution/ppc/simulator-ppc.cc
@@ -39,7 +39,7 @@ DEFINE_LAZY_LEAKY_OBJECT_GETTER(Simulator::GlobalMonitor,
// SScanF not being implemented in a platform independent way through
// ::v8::internal::OS in the same way as SNPrintF is that the
// Windows C Run-Time Library does not provide vsscanf.
-#define SScanF sscanf // NOLINT
+#define SScanF sscanf
// The PPCDebugger class is used by the simulator while debugging simulated
// PowerPC code.
@@ -1138,7 +1138,7 @@ void Simulator::SoftwareInterrupt(Instruction* instr) {
SimulatorRuntimeDirectGetterCall target =
reinterpret_cast<SimulatorRuntimeDirectGetterCall>(external);
if (!ABI_PASSES_HANDLES_IN_REGS) {
- arg[0] = *(reinterpret_cast<intptr_t*>(arg[0]));
+ arg[0] = bit_cast<intptr_t>(arg[0]);
}
target(arg[0], arg[1]);
} else if (redirection->type() ==
@@ -1157,7 +1157,7 @@ void Simulator::SoftwareInterrupt(Instruction* instr) {
SimulatorRuntimeProfilingGetterCall target =
reinterpret_cast<SimulatorRuntimeProfilingGetterCall>(external);
if (!ABI_PASSES_HANDLES_IN_REGS) {
- arg[0] = *(reinterpret_cast<intptr_t*>(arg[0]));
+ arg[0] = bit_cast<intptr_t>(arg[0]);
}
target(arg[0], arg[1], Redirection::ReverseRedirection(arg[2]));
} else {
@@ -2464,6 +2464,10 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
DCHECK_EQ(instr->Bit(0), 1);
set_simd_register_by_lane<int64_t>(frt, 0,
static_cast<int64_t>(ra_val));
+ // Low 64 bits of the result is undefined,
+ // Which is simulated here by adding random bits.
+ set_simd_register_by_lane<int64_t>(
+ frt, 1, static_cast<int64_t>(0x123456789ABCD));
}
break;
}
@@ -3913,8 +3917,7 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
case STVX: {
DECODE_VX_INSTRUCTION(vrs, ra, rb, S)
GET_ADDRESS(ra, rb, ra_val, rb_val)
- __int128 vrs_val =
- *(reinterpret_cast<__int128*>(get_simd_register(vrs).int8));
+ __int128 vrs_val = bit_cast<__int128>(get_simd_register(vrs).int8);
WriteQW((ra_val + rb_val) & 0xFFFFFFFFFFFFFFF0, vrs_val);
break;
}
@@ -3926,6 +3929,14 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
xt, 1, ReadDW(ra_val + rb_val + kSystemPointerSize));
break;
}
+ case LXVX: {
+ DECODE_VX_INSTRUCTION(vrt, ra, rb, T)
+ GET_ADDRESS(ra, rb, ra_val, rb_val)
+ intptr_t addr = ra_val + rb_val;
+ simdr_t* ptr = reinterpret_cast<simdr_t*>(addr);
+ set_simd_register(vrt, *ptr);
+ break;
+ }
case STXVD: {
DECODE_VX_INSTRUCTION(xs, ra, rb, S)
GET_ADDRESS(ra, rb, ra_val, rb_val)
@@ -3934,6 +3945,14 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
get_simd_register_by_lane<int64_t>(xs, 1));
break;
}
+ case STXVX: {
+ DECODE_VX_INSTRUCTION(vrs, ra, rb, S)
+ GET_ADDRESS(ra, rb, ra_val, rb_val)
+ intptr_t addr = ra_val + rb_val;
+ __int128 vrs_val = bit_cast<__int128>(get_simd_register(vrs).int8);
+ WriteQW(addr, vrs_val);
+ break;
+ }
case LXSIBZX: {
DECODE_VX_INSTRUCTION(xt, ra, rb, T)
GET_ADDRESS(ra, rb, ra_val, rb_val)
@@ -3982,6 +4001,15 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
WriteDW(ra_val + rb_val, get_simd_register_by_lane<int64_t>(xs, 0));
break;
}
+ case XXBRQ: {
+ int t = instr->RTValue();
+ int b = instr->RBValue();
+ __int128 xb_val = bit_cast<__int128>(get_simd_register(b).int8);
+ __int128 xb_val_reversed = __builtin_bswap128(xb_val);
+ simdr_t simdr_xb = bit_cast<simdr_t>(xb_val_reversed);
+ set_simd_register(t, simdr_xb);
+ break;
+ }
#define VSPLT(type) \
uint32_t uim = instr->Bits(20, 16); \
int vrt = instr->RTValue(); \
@@ -4749,7 +4777,7 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
DECODE_VX_INSTRUCTION(t, a, b, T)
uint16_t result_bits = 0;
unsigned __int128 src_bits =
- *(reinterpret_cast<__int128*>(get_simd_register(a).int8));
+ bit_cast<__int128>(get_simd_register(a).int8);
for (int i = 0; i < kSimd128Size; i++) {
result_bits <<= 1;
uint8_t selected_bit_index = get_simd_register_by_lane<uint8_t>(b, i);
@@ -4871,6 +4899,14 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
VECTOR_UNARY_OP(float, base::RecipSqrt)
break;
}
+ case VNEGW: {
+ VECTOR_UNARY_OP(int32_t, -)
+ break;
+ }
+ case VNEGD: {
+ VECTOR_UNARY_OP(int64_t, -)
+ break;
+ }
#undef VECTOR_UNARY_OP
#define VECTOR_ROUNDING_AVERAGE(intermediate_type, result_type) \
DECODE_VX_INSTRUCTION(t, a, b, T) \
@@ -4911,7 +4947,7 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
break;
}
}
-} // NOLINT
+}
void Simulator::Trace(Instruction* instr) {
disasm::NameConverter converter;
@@ -4981,7 +5017,7 @@ void Simulator::CallInternal(Address entry) {
// Prepare to execute the code at entry
if (ABI_USES_FUNCTION_DESCRIPTORS) {
// entry is the function descriptor
- set_pc(*(reinterpret_cast<intptr_t*>(entry)));
+ set_pc(*(bit_cast<intptr_t*>(entry)));
} else {
// entry is the instruction address
set_pc(static_cast<intptr_t>(entry));
diff --git a/deps/v8/src/execution/ppc/simulator-ppc.h b/deps/v8/src/execution/ppc/simulator-ppc.h
index bacd844be0..2dea5c00ca 100644
--- a/deps/v8/src/execution/ppc/simulator-ppc.h
+++ b/deps/v8/src/execution/ppc/simulator-ppc.h
@@ -321,6 +321,18 @@ class Simulator : public SimulatorBase {
}
}
+ // Byte Reverse.
+ static inline __uint128_t __builtin_bswap128(__uint128_t v) {
+ union {
+ uint64_t u64[2];
+ __uint128_t u128;
+ } res, val;
+ val.u128 = v;
+ res.u64[0] = __builtin_bswap64(val.u64[1]);
+ res.u64[1] = __builtin_bswap64(val.u64[0]);
+ return res.u128;
+ }
+
#define RW_VAR_LIST(V) \
V(QWU, unsigned __int128) \
V(QW, __int128) \
diff --git a/deps/v8/src/execution/protectors.h b/deps/v8/src/execution/protectors.h
index c4ca49d948..aa89275c11 100644
--- a/deps/v8/src/execution/protectors.h
+++ b/deps/v8/src/execution/protectors.h
@@ -26,6 +26,8 @@ class Protectors : public AllStatic {
is_concat_spreadable_protector) \
V(NoElements, NoElementsProtector, no_elements_protector) \
\
+ V(MegaDOM, MegaDOMProtector, mega_dom_protector) \
+ \
/* The MapIterator protector protects the original iteration behaviors */ \
/* of Map.prototype.keys(), Map.prototype.values(), and */ \
/* Set.prototype.entries(). It does not protect the original iteration */ \
diff --git a/deps/v8/src/execution/riscv64/simulator-riscv64.cc b/deps/v8/src/execution/riscv64/simulator-riscv64.cc
index 1d38d8c0ca..e8f16155be 100644
--- a/deps/v8/src/execution/riscv64/simulator-riscv64.cc
+++ b/deps/v8/src/execution/riscv64/simulator-riscv64.cc
@@ -93,7 +93,7 @@ static inline int32_t get_ebreak_code(Instruction* instr) {
// SScanF not being implemented in a platform independent was through
// ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time
// Library does not provide vsscanf.
-#define SScanF sscanf // NOLINT
+#define SScanF sscanf
// The RiscvDebugger class is used by the simulator while debugging simulated
// code.
@@ -261,6 +261,10 @@ void RiscvDebugger::Debug() {
disasm::Disassembler dasm(converter);
// Use a reasonably large buffer.
v8::internal::EmbeddedVector<char, 256> buffer;
+ const char* name = sim_->builtins_.Lookup((Address)sim_->get_pc());
+ if (name != nullptr) {
+ PrintF("Call builtin: %s\n", name);
+ }
dasm.InstructionDecode(buffer, reinterpret_cast<byte*>(sim_->get_pc()));
PrintF(" 0x%016" PRIx64 " %s\n", sim_->get_pc(), buffer.begin());
last_pc = sim_->get_pc();
@@ -785,7 +789,7 @@ void Simulator::CheckICache(base::CustomMatcherHashMap* i_cache,
}
}
-Simulator::Simulator(Isolate* isolate) : isolate_(isolate) {
+Simulator::Simulator(Isolate* isolate) : isolate_(isolate), builtins_(isolate) {
// Set up simulator support first. Some of this information is needed to
// setup the architecture state.
stack_size_ = FLAG_sim_stack_size * KB;
@@ -1062,7 +1066,7 @@ T Simulator::FMaxMinHelper(T a, T b, MaxMinKind kind) {
T result = 0;
if (std::isnan(a) && std::isnan(b)) {
- result = a;
+ result = std::numeric_limits<float>::quiet_NaN();
} else if (std::isnan(a)) {
result = b;
} else if (std::isnan(b)) {
@@ -1101,7 +1105,7 @@ int64_t Simulator::get_pc() const { return registers_[pc]; }
// TODO(plind): refactor this messy debug code when we do unaligned access.
void Simulator::DieOrDebug() {
- if ((1)) { // Flag for this was removed.
+ if (FLAG_riscv_trap_to_simulator_debugger) {
RiscvDebugger dbg(this);
dbg.Debug();
} else {
@@ -2819,6 +2823,33 @@ void Simulator::DecodeRVIType() {
// Note: No need to shift 2 for JALR's imm12, but set lowest bit to 0.
int64_t next_pc = (rs1() + imm12()) & ~reg_t(1);
set_pc(next_pc);
+ if (::v8::internal::FLAG_trace_sim) {
+ if ((rs1_reg() != ra || imm12() != 0)) {
+ const char* name = builtins_.Lookup((Address)next_pc);
+ if (name != nullptr) {
+ int64_t arg0 = get_register(a0);
+ int64_t arg1 = get_register(a1);
+ int64_t arg2 = get_register(a2);
+ int64_t arg3 = get_register(a3);
+ int64_t arg4 = get_register(a4);
+ int64_t arg5 = get_register(a5);
+ int64_t arg6 = get_register(a6);
+ int64_t arg7 = get_register(a7);
+ int64_t* stack_pointer =
+ reinterpret_cast<int64_t*>(get_register(sp));
+ int64_t arg8 = stack_pointer[0];
+ int64_t arg9 = stack_pointer[1];
+ PrintF(
+ "Call to Builtin at %s "
+ "a0 %08" PRIx64 " ,a1 %08" PRIx64 " ,a2 %08" PRIx64
+ " ,a3 %08" PRIx64 " ,a4 %08" PRIx64 " ,a5 %08" PRIx64
+ " ,a6 %08" PRIx64 " ,a7 %08" PRIx64 " ,0(sp) %08" PRIx64
+ " ,8(sp) %08" PRIx64 " ,sp %08" PRIx64 ",fp %08" PRIx64 " \n",
+ name, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
+ arg9, get_register(sp), get_register(fp));
+ }
+ }
+ }
break;
}
case RO_LB: {
diff --git a/deps/v8/src/execution/riscv64/simulator-riscv64.h b/deps/v8/src/execution/riscv64/simulator-riscv64.h
index e51ec6472c..e5647b2c43 100644
--- a/deps/v8/src/execution/riscv64/simulator-riscv64.h
+++ b/deps/v8/src/execution/riscv64/simulator-riscv64.h
@@ -706,6 +706,7 @@ class Simulator : public SimulatorBase {
char* last_debugger_input_;
v8::internal::Isolate* isolate_;
+ v8::internal::Builtins builtins_;
// Stop is disabled if bit 31 is set.
static const uint32_t kStopDisabledBit = 1 << 31;
diff --git a/deps/v8/src/execution/runtime-profiler.cc b/deps/v8/src/execution/runtime-profiler.cc
index 013d7c0e9f..05e828da50 100644
--- a/deps/v8/src/execution/runtime-profiler.cc
+++ b/deps/v8/src/execution/runtime-profiler.cc
@@ -107,20 +107,8 @@ void TraceHeuristicOptimizationDisallowed(JSFunction function) {
}
}
-// TODO(jgruber): Remove this once we include this tracing with --trace-opt.
-void TraceNCIRecompile(JSFunction function, OptimizationReason reason) {
- if (FLAG_trace_turbo_nci) {
- StdoutStream os;
- os << "NCI tierup mark: " << Brief(function) << ", "
- << OptimizationReasonToString(reason) << std::endl;
- }
-}
-
void TraceRecompile(JSFunction function, OptimizationReason reason,
CodeKind code_kind, Isolate* isolate) {
- if (code_kind == CodeKind::NATIVE_CONTEXT_INDEPENDENT) {
- TraceNCIRecompile(function, reason);
- }
if (FLAG_trace_opt) {
CodeTracer::Scope scope(isolate->GetCodeTracer());
PrintF(scope.file(), "[marking ");
@@ -187,8 +175,7 @@ void RuntimeProfiler::MaybeOptimizeFrame(JSFunction function,
if (function.shared().optimization_disabled()) return;
- // Note: We currently do not trigger OSR compilation from NCI or TP code.
- // TODO(jgruber,v8:8888): But we should.
+ // Note: We currently do not trigger OSR compilation from TP code.
if (frame->is_unoptimized()) {
if (FLAG_always_osr) {
AttemptOnStackReplacement(UnoptimizedFrame::cast(frame),
diff --git a/deps/v8/src/execution/s390/simulator-s390.cc b/deps/v8/src/execution/s390/simulator-s390.cc
index 435082a3b9..93250b45f4 100644
--- a/deps/v8/src/execution/s390/simulator-s390.cc
+++ b/deps/v8/src/execution/s390/simulator-s390.cc
@@ -34,7 +34,7 @@ namespace internal {
// SScanF not being implemented in a platform independent way through
// ::v8::internal::OS in the same way as SNPrintF is that the
// Windows C Run-Time Library does not provide vsscanf.
-#define SScanF sscanf // NOLINT
+#define SScanF sscanf
const Simulator::fpr_t Simulator::fp_zero;
@@ -772,6 +772,8 @@ void Simulator::EvalTableInit() {
V(vsum, VSUM, 0xE764) /* type = VRR_C VECTOR SUM ACROSS WORD */ \
V(vsumg, VSUMG, 0xE765) /* type = VRR_C VECTOR SUM ACROSS DOUBLEWORD */ \
V(vpk, VPK, 0xE794) /* type = VRR_C VECTOR PACK */ \
+ V(vmrl, VMRL, 0xE760) /* type = VRR_C VECTOR MERGE LOW */ \
+ V(vmrh, VMRH, 0xE761) /* type = VRR_C VECTOR MERGE HIGH */ \
V(vpks, VPKS, 0xE797) /* type = VRR_B VECTOR PACK SATURATE */ \
V(vpkls, VPKLS, 0xE795) /* type = VRR_B VECTOR PACK LOGICAL SATURATE */ \
V(vupll, VUPLL, 0xE7D4) /* type = VRR_A VECTOR UNPACK LOGICAL LOW */ \
@@ -1558,7 +1560,7 @@ void Simulator::EvalTableInit() {
EvalTable[CZXT] = &Simulator::Evaluate_CZXT;
EvalTable[CDZT] = &Simulator::Evaluate_CDZT;
EvalTable[CXZT] = &Simulator::Evaluate_CXZT;
-} // NOLINT
+}
Simulator::Simulator(Isolate* isolate) : isolate_(isolate) {
static base::OnceType once = V8_ONCE_INIT;
@@ -2000,8 +2002,8 @@ void Simulator::SoftwareInterrupt(Instruction* instr) {
(redirection->type() == ExternalReference::BUILTIN_FP_INT_CALL);
// Place the return address on the stack, making the call GC safe.
- *reinterpret_cast<intptr_t*>(get_register(sp) +
- kStackFrameRASlot * kSystemPointerSize) =
+ *bit_cast<intptr_t*>(get_register(sp) +
+ kStackFrameRASlot * kSystemPointerSize) =
get_register(r14);
intptr_t external =
@@ -2141,7 +2143,7 @@ void Simulator::SoftwareInterrupt(Instruction* instr) {
SimulatorRuntimeDirectGetterCall target =
reinterpret_cast<SimulatorRuntimeDirectGetterCall>(external);
if (!ABI_PASSES_HANDLES_IN_REGS) {
- arg[0] = *(reinterpret_cast<intptr_t*>(arg[0]));
+ arg[0] = bit_cast<intptr_t>(arg[0]);
}
target(arg[0], arg[1]);
} else if (redirection->type() ==
@@ -2160,7 +2162,7 @@ void Simulator::SoftwareInterrupt(Instruction* instr) {
SimulatorRuntimeProfilingGetterCall target =
reinterpret_cast<SimulatorRuntimeProfilingGetterCall>(external);
if (!ABI_PASSES_HANDLES_IN_REGS) {
- arg[0] = *(reinterpret_cast<intptr_t*>(arg[0]));
+ arg[0] = bit_cast<intptr_t>(arg[0]);
}
target(arg[0], arg[1], Redirection::ReverseRedirection(arg[2]));
} else {
@@ -2268,7 +2270,7 @@ void Simulator::SoftwareInterrupt(Instruction* instr) {
// }
// #endif
}
- int64_t saved_lr = *reinterpret_cast<intptr_t*>(
+ int64_t saved_lr = *bit_cast<intptr_t*>(
get_register(sp) + kStackFrameRASlot * kSystemPointerSize);
#if (!V8_TARGET_ARCH_S390X && V8_HOST_ARCH_S390)
// On zLinux-31, the saved_lr might be tagged with a high bit of 1.
@@ -2485,7 +2487,7 @@ void Simulator::CallInternal(Address entry, int reg_arg_count) {
// Prepare to execute the code at entry
if (ABI_USES_FUNCTION_DESCRIPTORS) {
// entry is the function descriptor
- set_pc(*(reinterpret_cast<intptr_t*>(entry)));
+ set_pc(*(bit_cast<intptr_t*>(entry)));
} else {
// entry is the instruction address
set_pc(static_cast<intptr_t>(entry));
@@ -2607,7 +2609,7 @@ intptr_t Simulator::CallImpl(Address entry, int argument_count,
// Prepare to execute the code at entry
#if ABI_USES_FUNCTION_DESCRIPTORS
// entry is the function descriptor
- set_pc(*(reinterpret_cast<intptr_t*>(entry)));
+ set_pc(*(bit_cast<intptr_t*>(entry)));
#else
// entry is the instruction address
set_pc(static_cast<intptr_t>(entry));
@@ -3134,12 +3136,12 @@ EVALUATE(VLREP) {
DCHECK_OPCODE(VLREP);
DECODE_VRX_INSTRUCTION(r1, x2, b2, d2, m3);
intptr_t addr = GET_ADDRESS(x2, b2, d2);
-#define CASE(i, type) \
- case i: { \
- FOR_EACH_LANE(j, type) { \
- set_simd_register_by_lane<type>(r1, j, *reinterpret_cast<type*>(addr)); \
- } \
- break; \
+#define CASE(i, type) \
+ case i: { \
+ FOR_EACH_LANE(j, type) { \
+ set_simd_register_by_lane<type>(r1, j, *bit_cast<type*>(addr)); \
+ } \
+ break; \
}
switch (m3) {
CASE(0, uint8_t);
@@ -3273,8 +3275,10 @@ EVALUATE(VML) {
j = lane_size; \
} \
for (; j < kSimd128Size; i += 2, j += lane_size * 2, k++) { \
- input_type src0 = get_simd_register_by_lane<input_type>(r2, i); \
- input_type src1 = get_simd_register_by_lane<input_type>(r3, i); \
+ result_type src0 = static_cast<result_type>( \
+ get_simd_register_by_lane<input_type>(r2, i)); \
+ result_type src1 = static_cast<result_type>( \
+ get_simd_register_by_lane<input_type>(r3, i)); \
set_simd_register_by_lane<result_type>(r1, k, src0 * src1); \
}
#define VECTOR_MULTIPLY_EVEN_ODD(r1, r2, r3, is_odd, sign) \
@@ -3395,6 +3399,53 @@ EVALUATE(VSUMG) {
}
#undef CASE
+#define VECTOR_MERGE(type, is_low_side) \
+ constexpr size_t index_limit = (kSimd128Size / sizeof(type)) / 2; \
+ for (size_t i = 0, source_index = is_low_side ? i + index_limit : i; \
+ i < index_limit; i++, source_index++) { \
+ set_simd_register_by_lane<type>( \
+ r1, 2 * i, get_simd_register_by_lane<type>(r2, source_index)); \
+ set_simd_register_by_lane<type>( \
+ r1, (2 * i) + 1, get_simd_register_by_lane<type>(r3, source_index)); \
+ }
+#define CASE(i, type, is_low_side) \
+ case i: { \
+ VECTOR_MERGE(type, is_low_side) \
+ } break;
+EVALUATE(VMRL) {
+ DCHECK_OPCODE(VMRL);
+ DECODE_VRR_C_INSTRUCTION(r1, r2, r3, m6, m5, m4);
+ USE(m6);
+ USE(m5);
+ switch (m4) {
+ CASE(0, int8_t, true);
+ CASE(1, int16_t, true);
+ CASE(2, int32_t, true);
+ CASE(3, int64_t, true);
+ default:
+ UNREACHABLE();
+ }
+ return length;
+}
+
+EVALUATE(VMRH) {
+ DCHECK_OPCODE(VMRH);
+ DECODE_VRR_C_INSTRUCTION(r1, r2, r3, m6, m5, m4);
+ USE(m6);
+ USE(m5);
+ switch (m4) {
+ CASE(0, int8_t, false);
+ CASE(1, int16_t, false);
+ CASE(2, int32_t, false);
+ CASE(3, int64_t, false);
+ default:
+ UNREACHABLE();
+ }
+ return length;
+}
+#undef CASE
+#undef VECTOR_MERGE
+
template <class S, class D>
void VectorPack(Simulator* sim, int dst, int src1, int src2, bool saturate,
const D& max = 0, const D& min = 0) {
@@ -3901,8 +3952,7 @@ EVALUATE(VBPERM) {
USE(m5);
USE(m6);
uint16_t result_bits = 0;
- unsigned __int128 src_bits =
- *(reinterpret_cast<__int128*>(get_simd_register(r2).int8));
+ unsigned __int128 src_bits = bit_cast<__int128>(get_simd_register(r2).int8);
for (int i = 0; i < kSimd128Size; i++) {
result_bits <<= 1;
uint8_t selected_bit_index = get_simd_register_by_lane<uint8_t>(r3, i);
@@ -5443,7 +5493,7 @@ EVALUATE(LD) {
int64_t b2_val = (b2 == 0) ? 0 : get_register(b2);
int64_t x2_val = (x2 == 0) ? 0 : get_register(x2);
intptr_t addr = b2_val + x2_val + d2_val;
- int64_t dbl_val = *reinterpret_cast<int64_t*>(addr);
+ int64_t dbl_val = *bit_cast<int64_t*>(addr);
set_fpr(r1, dbl_val);
return length;
}
@@ -5482,7 +5532,7 @@ EVALUATE(LE) {
int64_t b2_val = (b2 == 0) ? 0 : get_register(b2);
int64_t x2_val = (x2 == 0) ? 0 : get_register(x2);
intptr_t addr = b2_val + x2_val + d2_val;
- float float_val = *reinterpret_cast<float*>(addr);
+ float float_val = *bit_cast<float*>(addr);
set_fpr(r1, float_val);
return length;
}
@@ -11157,7 +11207,7 @@ EVALUATE(LEY) {
int64_t x2_val = (x2 == 0) ? 0 : get_register(x2);
int64_t b2_val = (b2 == 0) ? 0 : get_register(b2);
intptr_t addr = x2_val + b2_val + d2;
- float float_val = *reinterpret_cast<float*>(addr);
+ float float_val = *bit_cast<float*>(addr);
set_fpr(r1, float_val);
return length;
}
@@ -11169,7 +11219,7 @@ EVALUATE(LDY) {
int64_t x2_val = (x2 == 0) ? 0 : get_register(x2);
int64_t b2_val = (b2 == 0) ? 0 : get_register(b2);
intptr_t addr = x2_val + b2_val + d2;
- uint64_t dbl_val = *reinterpret_cast<uint64_t*>(addr);
+ uint64_t dbl_val = *bit_cast<uint64_t*>(addr);
set_fpr(r1, dbl_val);
return length;
}
diff --git a/deps/v8/src/execution/shared-mutex-guard-if-off-thread.h b/deps/v8/src/execution/shared-mutex-guard-if-off-thread.h
index 972f6c0c89..8dfcd09f39 100644
--- a/deps/v8/src/execution/shared-mutex-guard-if-off-thread.h
+++ b/deps/v8/src/execution/shared-mutex-guard-if-off-thread.h
@@ -10,7 +10,7 @@
namespace v8 {
namespace internal {
-template <typename LocalIsolate, base::MutexSharedType kIsShared>
+template <typename IsolateT, base::MutexSharedType kIsShared>
class SharedMutexGuardIfOffThread;
} // namespace internal
diff --git a/deps/v8/src/execution/stack-guard.cc b/deps/v8/src/execution/stack-guard.cc
index dd32f58b98..0bbdf1444a 100644
--- a/deps/v8/src/execution/stack-guard.cc
+++ b/deps/v8/src/execution/stack-guard.cc
@@ -12,6 +12,7 @@
#include "src/logging/counters.h"
#include "src/objects/backing-store.h"
#include "src/roots/roots-inl.h"
+#include "src/tracing/trace-event.h"
#include "src/utils/memcopy.h"
#if V8_ENABLE_WEBASSEMBLY
diff --git a/deps/v8/src/extensions/cputracemark-extension.cc b/deps/v8/src/extensions/cputracemark-extension.cc
index 5fde3608de..029ad0f3cb 100644
--- a/deps/v8/src/extensions/cputracemark-extension.cc
+++ b/deps/v8/src/extensions/cputracemark-extension.cc
@@ -16,9 +16,8 @@ CpuTraceMarkExtension::GetNativeFunctionTemplate(v8::Isolate* isolate,
void CpuTraceMarkExtension::Mark(
const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() < 1 || !args[0]->IsUint32()) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(),
- "First parameter to cputracemark() must be a unsigned int32."));
+ args.GetIsolate()->ThrowError(
+ "First parameter to cputracemark() must be a unsigned int32.");
return;
}
diff --git a/deps/v8/src/extensions/externalize-string-extension.cc b/deps/v8/src/extensions/externalize-string-extension.cc
index b153ebd075..3e42b214de 100644
--- a/deps/v8/src/extensions/externalize-string-extension.cc
+++ b/deps/v8/src/extensions/externalize-string-extension.cc
@@ -59,9 +59,8 @@ ExternalizeStringExtension::GetNativeFunctionTemplate(
void ExternalizeStringExtension::Externalize(
const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() < 1 || !args[0]->IsString()) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(),
- "First parameter to externalizeString() must be a string."));
+ args.GetIsolate()->ThrowError(
+ "First parameter to externalizeString() must be a string.");
return;
}
bool force_two_byte = false;
@@ -69,17 +68,15 @@ void ExternalizeStringExtension::Externalize(
if (args[1]->IsBoolean()) {
force_two_byte = args[1]->BooleanValue(args.GetIsolate());
} else {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(),
- "Second parameter to externalizeString() must be a boolean."));
+ args.GetIsolate()->ThrowError(
+ "Second parameter to externalizeString() must be a boolean.");
return;
}
}
bool result = false;
Handle<String> string = Utils::OpenHandle(*args[0].As<v8::String>());
if (!string->SupportsExternalization()) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(), "string does not support externalization."));
+ args.GetIsolate()->ThrowError("string does not support externalization.");
return;
}
if (string->IsOneByteRepresentation() && !force_two_byte) {
@@ -98,8 +95,7 @@ void ExternalizeStringExtension::Externalize(
if (!result) delete resource;
}
if (!result) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(), "externalizeString() failed."));
+ args.GetIsolate()->ThrowError("externalizeString() failed.");
return;
}
}
@@ -108,9 +104,8 @@ void ExternalizeStringExtension::Externalize(
void ExternalizeStringExtension::IsOneByte(
const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 1 || !args[0]->IsString()) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(),
- "isOneByteString() requires a single string argument."));
+ args.GetIsolate()->ThrowError(
+ "isOneByteString() requires a single string argument.");
return;
}
bool is_one_byte =
diff --git a/deps/v8/src/extensions/vtunedomain-support-extension.cc b/deps/v8/src/extensions/vtunedomain-support-extension.cc
index 793ffec716..9a7715bb23 100644
--- a/deps/v8/src/extensions/vtunedomain-support-extension.cc
+++ b/deps/v8/src/extensions/vtunedomain-support-extension.cc
@@ -109,10 +109,9 @@ void VTuneDomainSupportExtension::Mark(
const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 3 || !args[0]->IsString() || !args[1]->IsString() ||
!args[2]->IsString()) {
- args.GetIsolate()->ThrowException(v8::String::NewFromUtf8Literal(
- args.GetIsolate(),
+ args.GetIsolate()->ThrowError(
"Parameter number should be exactly three, first domain name"
- "second task name, third start/end"));
+ "second task name, third start/end");
return;
}
@@ -130,7 +129,7 @@ void VTuneDomainSupportExtension::Mark(
int r = 0;
if ((r = libvtune::invoke(params.str().c_str())) != 0) {
- args.GetIsolate()->ThrowException(
+ args.GetIsolate()->ThrowError(
v8::String::NewFromUtf8(args.GetIsolate(), std::to_string(r).c_str())
.ToLocalChecked());
}
diff --git a/deps/v8/src/flags/flag-definitions.h b/deps/v8/src/flags/flag-definitions.h
index 1a40497555..e1f493ae7b 100644
--- a/deps/v8/src/flags/flag-definitions.h
+++ b/deps/v8/src/flags/flag-definitions.h
@@ -151,6 +151,12 @@ struct MaybeBoolFlag {
#define COMPRESS_POINTERS_BOOL false
#endif
+#ifdef V8_MAP_PACKING
+#define V8_MAP_PACKING_BOOL true
+#else
+#define V8_MAP_PACKING_BOOL false
+#endif
+
#ifdef V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
#define COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL true
#else
@@ -176,7 +182,7 @@ struct MaybeBoolFlag {
#endif
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \
- V8_TARGET_ARCH_ARM
+ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
#define ENABLE_SPARKPLUG true
#else
// TODO(v8:11421): Enable Sparkplug for other architectures
@@ -267,12 +273,13 @@ DEFINE_BOOL(harmony_shipping, true, "enable all shipped harmony features")
V(harmony_regexp_sequence, "RegExp Unicode sequence properties") \
V(harmony_weak_refs_with_cleanup_some, \
"harmony weak references with FinalizationRegistry.prototype.cleanupSome") \
- V(harmony_import_assertions, "harmony import assertions")
+ V(harmony_import_assertions, "harmony import assertions") \
+ V(harmony_rab_gsab, \
+ "harmony ResizableArrayBuffer / GrowableSharedArrayBuffer")
#ifdef V8_INTL_SUPPORT
-#define HARMONY_INPROGRESS(V) \
- HARMONY_INPROGRESS_BASE(V) \
- V(harmony_intl_best_fit_matcher, "Intl BestFitMatcher") \
+#define HARMONY_INPROGRESS(V) \
+ HARMONY_INPROGRESS_BASE(V) \
V(harmony_intl_displaynames_date_types, "Intl.DisplayNames date types")
#else
#define HARMONY_INPROGRESS(V) HARMONY_INPROGRESS_BASE(V)
@@ -280,14 +287,14 @@ DEFINE_BOOL(harmony_shipping, true, "enable all shipped harmony features")
// Features that are complete (but still behind --harmony/es-staging flag).
#define HARMONY_STAGED_BASE(V) \
- V(harmony_relative_indexing_methods, "harmony relative indexing methods") \
- V(harmony_class_static_blocks, "harmony static initializer blocks")
+ V(harmony_class_static_blocks, "harmony static initializer blocks") \
+ V(harmony_error_cause, "harmony error cause property")
#ifdef V8_INTL_SUPPORT
-#define HARMONY_STAGED(V) \
- HARMONY_STAGED_BASE(V) \
- V(harmony_intl_dateformat_day_period, \
- "Add dayPeriod option to DateTimeFormat")
+#define HARMONY_STAGED(V) \
+ HARMONY_STAGED_BASE(V) \
+ V(harmony_intl_best_fit_matcher, "Intl BestFitMatcher") \
+ V(harmony_intl_locale_info, "Intl locale info")
#else
#define HARMONY_STAGED(V) HARMONY_STAGED_BASE(V)
#endif
@@ -298,10 +305,14 @@ DEFINE_BOOL(harmony_shipping, true, "enable all shipped harmony features")
V(harmony_atomics, "harmony atomics") \
V(harmony_regexp_match_indices, "harmony regexp match indices") \
V(harmony_private_brand_checks, "harmony private brand checks") \
- V(harmony_top_level_await, "harmony top level await")
+ V(harmony_top_level_await, "harmony top level await") \
+ V(harmony_relative_indexing_methods, "harmony relative indexing methods")
#ifdef V8_INTL_SUPPORT
-#define HARMONY_SHIPPING(V) HARMONY_SHIPPING_BASE(V)
+#define HARMONY_SHIPPING(V) \
+ HARMONY_SHIPPING_BASE(V) \
+ V(harmony_intl_dateformat_day_period, \
+ "Add dayPeriod option to DateTimeFormat")
#else
#define HARMONY_SHIPPING(V) HARMONY_SHIPPING_BASE(V)
#endif
@@ -331,6 +342,13 @@ HARMONY_SHIPPING(FLAG_SHIPPING_FEATURES)
DEFINE_BOOL(builtin_subclassing, true,
"subclassing support in built-in methods")
+// If the following flag is set to `true`, the SharedArrayBuffer constructor is
+// enabled per context depending on the callback set via
+// `SetSharedArrayBufferConstructorEnabledCallback`. If no callback is set, the
+// SharedArrayBuffer constructor is disabled.
+DEFINE_BOOL(enable_sharedarraybuffer_per_context, false,
+ "enable the SharedArrayBuffer constructor per context")
+
#ifdef V8_INTL_SUPPORT
DEFINE_BOOL(icu_timezone_data, true, "get information about timezones from ICU")
#endif
@@ -359,6 +377,17 @@ DEFINE_BOOL(icu_timezone_data, true, "get information about timezones from ICU")
#define V8_SHARED_RO_HEAP_BOOL false
#endif
+DEFINE_BOOL(stress_snapshot, false,
+ "disables sharing of the read-only heap for testing")
+// Incremental marking is incompatible with the stress_snapshot mode;
+// specifically, serialization may clear bytecode arrays from shared function
+// infos which the MarkCompactCollector (running concurrently) may still need.
+// See also https://crbug.com/v8/10882.
+//
+// Note: This is not an issue in production because we don't clear SFI's
+// there (that only happens in mksnapshot and in --stress-snapshot mode).
+DEFINE_NEG_IMPLICATION(stress_snapshot, incremental_marking)
+
DEFINE_BOOL(lite_mode, V8_LITE_BOOL,
"enables trade-off of performance for memory savings")
@@ -376,6 +405,13 @@ DEFINE_IMPLICATION(lite_mode, optimize_for_size)
DEFINE_NEG_IMPLICATION(enable_third_party_heap, inline_new)
DEFINE_NEG_IMPLICATION(enable_third_party_heap, allocation_site_pretenuring)
DEFINE_NEG_IMPLICATION(enable_third_party_heap, turbo_allocation_folding)
+DEFINE_NEG_IMPLICATION(enable_third_party_heap, concurrent_recompilation)
+DEFINE_NEG_IMPLICATION(enable_third_party_heap, concurrent_inlining)
+DEFINE_NEG_IMPLICATION(enable_third_party_heap,
+ finalize_streaming_on_background)
+DEFINE_NEG_IMPLICATION(enable_third_party_heap, use_marking_progress_bar)
+DEFINE_NEG_IMPLICATION(enable_third_party_heap, move_object_start)
+DEFINE_NEG_IMPLICATION(enable_third_party_heap, concurrent_marking)
DEFINE_BOOL_READONLY(enable_third_party_heap, V8_ENABLE_THIRD_PARTY_HEAP_BOOL,
"Use third-party heap")
@@ -404,19 +440,15 @@ DEFINE_BOOL_READONLY(enable_unconditional_write_barriers,
"always use full write barriers")
#ifdef V8_ENABLE_SINGLE_GENERATION
-#define V8_GENERATION_BOOL true
+#define V8_SINGLE_GENERATION_BOOL true
#else
-#define V8_GENERATION_BOOL false
+#define V8_SINGLE_GENERATION_BOOL false
#endif
DEFINE_BOOL_READONLY(
- single_generation, V8_GENERATION_BOOL,
+ single_generation, V8_SINGLE_GENERATION_BOOL,
"allocate all objects from young generation to old generation")
-// Prevent inline allocation into new space
-DEFINE_NEG_IMPLICATION(single_generation, inline_new)
-DEFINE_NEG_IMPLICATION(single_generation, turbo_allocation_folding)
-
#ifdef V8_ENABLE_CONSERVATIVE_STACK_SCANNING
#define V8_ENABLE_CONSERVATIVE_STACK_SCANNING_BOOL true
#else
@@ -586,7 +618,6 @@ DEFINE_BOOL(trace_generalization, false, "trace map generalization")
// Flags for TurboProp.
DEFINE_BOOL(turboprop, false, "enable experimental turboprop mid-tier compiler")
-DEFINE_IMPLICATION(turboprop, turbo_direct_heap_access)
DEFINE_BOOL(turboprop_mid_tier_reg_alloc, true,
"enable mid-tier register allocator for turboprop")
DEFINE_BOOL(
@@ -616,11 +647,10 @@ DEFINE_BOOL(always_sparkplug, false, "directly tier up to Sparkplug code")
DEFINE_IMPLICATION(always_sparkplug, sparkplug)
#endif
DEFINE_STRING(sparkplug_filter, "*", "filter for Sparkplug baseline compiler")
+DEFINE_BOOL(sparkplug_needs_short_builtins, false,
+ "only enable Sparkplug baseline compiler when "
+ "--short-builtin-calls are also enabled")
DEFINE_BOOL(trace_baseline, false, "trace baseline compilation")
-#if !defined(V8_OS_MACOSX) || !defined(V8_HOST_ARCH_ARM64)
-// Don't disable --write-protect-code-memory on Apple Silicon.
-DEFINE_WEAK_VALUE_IMPLICATION(sparkplug, write_protect_code_memory, false)
-#endif
#undef FLAG
#define FLAG FLAG_FULL
@@ -649,13 +679,16 @@ DEFINE_BOOL(concurrent_inlining, false,
"run optimizing compiler's inlining phase on a separate thread")
DEFINE_BOOL(stress_concurrent_inlining, false,
"makes concurrent inlining more likely to trigger in tests")
-DEFINE_BOOL(turbo_direct_heap_access, false,
- "access kNeverSerialized objects directly from the heap")
DEFINE_IMPLICATION(stress_concurrent_inlining, concurrent_inlining)
DEFINE_NEG_IMPLICATION(stress_concurrent_inlining, lazy_feedback_allocation)
DEFINE_WEAK_VALUE_IMPLICATION(stress_concurrent_inlining, interrupt_budget,
15 * KB)
-DEFINE_IMPLICATION(concurrent_inlining, turbo_direct_heap_access)
+DEFINE_BOOL(
+ turbo_concurrent_get_property_access_info, false,
+ "concurrently call GetPropertyAccessInfo (only with --concurrent-inlining)")
+DEFINE_BOOL(turbo_concurrent_inlining_check_ispendingallocation, false,
+ "when --concurrent-inlining is enabled, check IsPendingAllocation "
+ "in Ref construction")
DEFINE_INT(max_serializer_nesting, 25,
"maximum levels for nesting child serializers")
DEFINE_WEAK_IMPLICATION(future, concurrent_inlining)
@@ -808,28 +841,20 @@ DEFINE_INT(reuse_opt_code_count, 0,
"don't discard optimized code for the specified number of deopts.")
DEFINE_BOOL(turbo_dynamic_map_checks, true,
"use dynamic map checks when generating code for property accesses "
- "if all handlers in an IC are the same for turboprop and NCI")
+ "if all handlers in an IC are the same for turboprop")
DEFINE_BOOL(turbo_compress_translation_arrays, false,
"compress translation arrays (experimental)")
DEFINE_BOOL(turbo_inline_js_wasm_calls, false, "inline JS->Wasm calls")
-
-// Native context independent (NCI) code.
-DEFINE_BOOL(turbo_nci, false,
- "enable experimental native context independent code.")
-// TODO(v8:8888): Temporary until NCI caching is implemented or
-// feedback collection is made unconditional.
-DEFINE_IMPLICATION(turbo_nci, turbo_collect_feedback_in_generic_lowering)
-DEFINE_BOOL(print_nci_code, false, "print native context independent code.")
-DEFINE_BOOL(trace_turbo_nci, false, "trace native context independent code.")
DEFINE_BOOL(turbo_collect_feedback_in_generic_lowering, true,
"enable experimental feedback collection in generic lowering.")
-// TODO(jgruber,v8:8888): Remove this flag once we've settled on an ageing
-// strategy.
DEFINE_BOOL(isolate_script_cache_ageing, true,
"enable ageing of the isolate script cache.")
-DEFINE_INT(script_run_delay, 0, "sleep [ms] on every Script::Run")
-DEFINE_INT(script_run_delay_once, 0, "sleep [ms] on the first Script::Run")
+DEFINE_FLOAT(script_delay, 0, "busy wait [ms] on every Script::Run")
+DEFINE_FLOAT(script_delay_once, 0, "busy wait [ms] on the first Script::Run")
+DEFINE_FLOAT(script_delay_fraction, 0.0,
+ "busy wait after each Script::Run by the given fraction of the "
+ "run's duration")
// Favor memory over execution speed.
DEFINE_BOOL(optimize_for_size, false,
@@ -859,7 +884,11 @@ DEFINE_VALUE_IMPLICATION(single_threaded, wasm_num_compilation_tasks, 0)
DEFINE_DEBUG_BOOL(trace_wasm_native_heap, false,
"trace wasm native heap events")
DEFINE_BOOL(wasm_write_protect_code_memory, false,
- "write protect code memory on the wasm native heap")
+ "write protect code memory on the wasm native heap with mprotect")
+DEFINE_BOOL(wasm_memory_protection_keys, false,
+ "protect wasm code memory with PKU if available, no protection "
+ "without support; fallback to mprotect by adding "
+ "--wasm-write-protect-code-memory")
DEFINE_DEBUG_BOOL(trace_wasm_serialization, false,
"trace serialization/deserialization")
DEFINE_BOOL(wasm_async_compilation, true,
@@ -1169,7 +1198,6 @@ DEFINE_GENERIC_IMPLICATION(
TracingFlags::gc_stats.store(
v8::tracing::TracingCategoryObserver::ENABLED_BY_NATIVE))
DEFINE_NEG_IMPLICATION(trace_gc_object_stats, incremental_marking)
-DEFINE_NEG_IMPLICATION(track_retaining_path, incremental_marking)
DEFINE_NEG_IMPLICATION(track_retaining_path, parallel_marking)
DEFINE_NEG_IMPLICATION(track_retaining_path, concurrent_marking)
DEFINE_BOOL(track_detached_contexts, true,
@@ -1258,11 +1286,19 @@ DEFINE_BOOL_READONLY(
"object space")
// assembler-ia32.cc / assembler-arm.cc / assembler-arm64.cc / assembler-x64.cc
+#ifdef V8_ENABLE_DEBUG_CODE
DEFINE_BOOL(debug_code, DEBUG_BOOL,
"generate extra code (assertions) for debugging")
+#else
+DEFINE_BOOL_READONLY(debug_code, false, "")
+#endif
+#ifdef V8_CODE_COMMENTS
DEFINE_BOOL(code_comments, false,
"emit comments in code disassembly; for more readable source "
"positions you should add --no-concurrent_recompilation")
+#else
+DEFINE_BOOL_READONLY(code_comments, false, "")
+#endif
DEFINE_BOOL(enable_sse3, true, "enable use of SSE3 instructions if available")
DEFINE_BOOL(enable_ssse3, true, "enable use of SSSE3 instructions if available")
DEFINE_BOOL(enable_sse4_1, true,
@@ -1290,10 +1326,18 @@ DEFINE_BOOL(partial_constant_pool, true,
DEFINE_STRING(sim_arm64_optional_features, "none",
"enable optional features on the simulator for testing: none or "
"all")
-DEFINE_BOOL(debug_riscv, false, "enable debug prints")
-// TODO(RISCV): https://github.com/v8-riscv/v8/issues/330
-DEFINE_BOOL(disable_riscv_constant_pool, true,
- "disable constant pool (RISCV only)")
+
+#if defined(V8_TARGET_ARCH_RISCV64)
+DEFINE_BOOL(riscv_trap_to_simulator_debugger, false,
+ "enable simulator trap to debugger")
+DEFINE_BOOL(riscv_debug, false, "enable debug prints")
+
+DEFINE_BOOL(riscv_constant_pool, true,
+ "enable constant pool (RISCV only)")
+
+DEFINE_BOOL(riscv_c_extension, false,
+ "enable compressed extension isa variant (RISCV only)")
+#endif
// Controlling source positions for Torque/CSA code.
DEFINE_BOOL(enable_source_at_csa_bind, false,
@@ -1469,6 +1513,8 @@ DEFINE_BOOL(native_code_counters, DEBUG_BOOL,
DEFINE_BOOL(super_ic, true, "use an IC for super property loads")
+DEFINE_BOOL(enable_mega_dom_ic, false, "use MegaDOM IC state for API objects")
+
// objects.cc
DEFINE_BOOL(thin_strings, true, "Enable ThinString support")
DEFINE_BOOL(trace_prototype_users, false,
@@ -1551,7 +1597,7 @@ DEFINE_BOOL(
"includes arguments for each function call in the error stack frames array")
DEFINE_BOOL(adjust_os_scheduling_parameters, true,
"adjust OS specific scheduling params for the isolate")
-DEFINE_BOOL(experimental_flush_embedded_blob_icache, false,
+DEFINE_BOOL(experimental_flush_embedded_blob_icache, true,
"Used in an experiment to evaluate icache flushing on certain CPUs")
// Flags for short builtin calls feature
diff --git a/deps/v8/src/flags/flags.cc b/deps/v8/src/flags/flags.cc
index 9825b5b1ea..2cd9174148 100644
--- a/deps/v8/src/flags/flags.cc
+++ b/deps/v8/src/flags/flags.cc
@@ -16,6 +16,8 @@
#include "src/base/platform/platform.h"
#include "src/codegen/cpu-features.h"
#include "src/logging/counters.h"
+#include "src/logging/tracing-flags.h"
+#include "src/tracing/tracing-category-observer.h"
#include "src/utils/allocation.h"
#include "src/utils/memcopy.h"
#include "src/utils/ostreams.h"
diff --git a/deps/v8/src/handles/global-handles.cc b/deps/v8/src/handles/global-handles.cc
index 6bc290eac7..9e4aad27fb 100644
--- a/deps/v8/src/handles/global-handles.cc
+++ b/deps/v8/src/handles/global-handles.cc
@@ -8,8 +8,10 @@
#include <cstdint>
#include <map>
+#include "include/v8.h"
#include "src/api/api-inl.h"
#include "src/base/compiler-specific.h"
+#include "src/base/sanitizer/asan.h"
#include "src/execution/vm-state-inl.h"
#include "src/heap/embedder-tracing.h"
#include "src/heap/heap-write-barrier-inl.h"
@@ -18,7 +20,6 @@
#include "src/objects/objects-inl.h"
#include "src/objects/slots.h"
#include "src/objects/visitors.h"
-#include "src/sanitizer/asan.h"
#include "src/tasks/cancelable-task.h"
#include "src/tasks/task-utils.h"
#include "src/utils/utils.h"
@@ -382,11 +383,11 @@ namespace {
void ExtractInternalFields(JSObject jsobject, void** embedder_fields, int len) {
int field_count = jsobject.GetEmbedderFieldCount();
- PtrComprCageBase cage_base = GetPtrComprCageBase(jsobject);
+ Isolate* isolate = GetIsolateForHeapSandbox(jsobject);
for (int i = 0; i < len; ++i) {
if (field_count == i) break;
void* pointer;
- if (EmbedderDataSlot(jsobject, i).ToAlignedPointer(cage_base, &pointer)) {
+ if (EmbedderDataSlot(jsobject, i).ToAlignedPointer(isolate, &pointer)) {
embedder_fields[i] = pointer;
}
}
@@ -1252,18 +1253,21 @@ void GlobalHandles::IdentifyWeakUnmodifiedObjects(
WeakSlotCallback is_unmodified) {
if (!FLAG_reclaim_unmodified_wrappers) return;
- LocalEmbedderHeapTracer* const tracer =
- isolate()->heap()->local_embedder_heap_tracer();
+ // Treat all objects as roots during incremental marking to avoid corrupting
+ // marking worklists.
+ if (isolate()->heap()->incremental_marking()->IsMarking()) return;
+
+ auto* const handler = isolate()->heap()->GetEmbedderRootsHandler();
for (TracedNode* node : traced_young_nodes_) {
if (node->IsInUse()) {
DCHECK(node->is_root());
if (is_unmodified(node->location())) {
v8::Value* value = ToApi<v8::Value>(node->handle());
if (node->has_destructor()) {
- node->set_root(tracer->IsRootForNonTracingGC(
+ node->set_root(handler->IsRoot(
*reinterpret_cast<v8::TracedGlobal<v8::Value>*>(&value)));
} else {
- node->set_root(tracer->IsRootForNonTracingGC(
+ node->set_root(handler->IsRoot(
*reinterpret_cast<v8::TracedReference<v8::Value>*>(&value)));
}
}
@@ -1337,8 +1341,7 @@ void GlobalHandles::IterateYoungWeakObjectsForPhantomHandles(
if (!FLAG_reclaim_unmodified_wrappers) return;
- LocalEmbedderHeapTracer* const tracer =
- isolate()->heap()->local_embedder_heap_tracer();
+ auto* const handler = isolate()->heap()->GetEmbedderRootsHandler();
for (TracedNode* node : traced_young_nodes_) {
if (!node->IsInUse()) continue;
@@ -1353,7 +1356,7 @@ void GlobalHandles::IterateYoungWeakObjectsForPhantomHandles(
node->ResetPhantomHandle(HandleHolder::kLive);
} else {
v8::Value* value = ToApi<v8::Value>(node->handle());
- tracer->ResetHandleInNonTracingGC(
+ handler->ResetRoot(
*reinterpret_cast<v8::TracedReference<v8::Value>*>(&value));
DCHECK(!node->IsInUse());
}
diff --git a/deps/v8/src/handles/handles-inl.h b/deps/v8/src/handles/handles-inl.h
index 360da25cf6..4c1817e80d 100644
--- a/deps/v8/src/handles/handles-inl.h
+++ b/deps/v8/src/handles/handles-inl.h
@@ -5,12 +5,12 @@
#ifndef V8_HANDLES_HANDLES_INL_H_
#define V8_HANDLES_HANDLES_INL_H_
+#include "src/base/sanitizer/msan.h"
#include "src/execution/isolate.h"
#include "src/execution/local-isolate.h"
#include "src/handles/handles.h"
#include "src/handles/local-handles-inl.h"
#include "src/objects/objects.h"
-#include "src/sanitizer/msan.h"
namespace v8 {
namespace internal {
diff --git a/deps/v8/src/handles/local-handles-inl.h b/deps/v8/src/handles/local-handles-inl.h
index c9f1588410..b862155949 100644
--- a/deps/v8/src/handles/local-handles-inl.h
+++ b/deps/v8/src/handles/local-handles-inl.h
@@ -5,10 +5,10 @@
#ifndef V8_HANDLES_LOCAL_HANDLES_INL_H_
#define V8_HANDLES_LOCAL_HANDLES_INL_H_
+#include "src/base/sanitizer/msan.h"
#include "src/execution/isolate.h"
#include "src/execution/local-isolate.h"
#include "src/handles/local-handles.h"
-#include "src/sanitizer/msan.h"
namespace v8 {
namespace internal {
diff --git a/deps/v8/src/heap/array-buffer-sweeper.cc b/deps/v8/src/heap/array-buffer-sweeper.cc
index 8af2a60e9c..108a349777 100644
--- a/deps/v8/src/heap/array-buffer-sweeper.cc
+++ b/deps/v8/src/heap/array-buffer-sweeper.cc
@@ -101,30 +101,25 @@ void ArrayBufferSweeper::EnsureFinished() {
UNREACHABLE();
}
- DecrementExternalMemoryCounters();
+ UpdateCountersForConcurrentlySweptExtensions();
sweeping_in_progress_ = false;
}
-void ArrayBufferSweeper::AdjustCountersAndMergeIfPossible() {
+void ArrayBufferSweeper::MergeBackExtensionsWhenSwept() {
if (sweeping_in_progress_) {
DCHECK(job_.has_value());
if (job_->state_ == SweepingState::kDone) {
Merge();
sweeping_in_progress_ = false;
} else {
- DecrementExternalMemoryCounters();
+ UpdateCountersForConcurrentlySweptExtensions();
}
}
}
-void ArrayBufferSweeper::DecrementExternalMemoryCounters() {
+void ArrayBufferSweeper::UpdateCountersForConcurrentlySweptExtensions() {
size_t freed_bytes = freed_bytes_.exchange(0, std::memory_order_relaxed);
-
- if (freed_bytes > 0) {
- heap_->DecrementExternalBackingStoreBytes(
- ExternalBackingStoreType::kArrayBuffer, freed_bytes);
- heap_->update_external_memory(-static_cast<int64_t>(freed_bytes));
- }
+ DecrementExternalMemoryCounters(freed_bytes);
}
void ArrayBufferSweeper::RequestSweepYoung() {
@@ -166,7 +161,7 @@ void ArrayBufferSweeper::RequestSweep(SweepingScope scope) {
Prepare(scope);
job_->Sweep();
Merge();
- DecrementExternalMemoryCounters();
+ UpdateCountersForConcurrentlySweptExtensions();
}
}
@@ -228,18 +223,52 @@ void ArrayBufferSweeper::Append(JSArrayBuffer object,
old_bytes_ += bytes;
}
- AdjustCountersAndMergeIfPossible();
- DecrementExternalMemoryCounters();
+ MergeBackExtensionsWhenSwept();
IncrementExternalMemoryCounters(bytes);
}
+void ArrayBufferSweeper::Detach(JSArrayBuffer object,
+ ArrayBufferExtension* extension) {
+ size_t bytes = extension->ClearAccountingLength();
+
+ // We cannot free the extension eagerly here, since extensions are tracked in
+ // a singly linked list. The next GC will remove it automatically.
+
+ if (!sweeping_in_progress_) {
+ // If concurrent sweeping isn't running at the moment, we can also adjust
+ // young_bytes_ or old_bytes_ right away.
+ if (Heap::InYoungGeneration(object)) {
+ DCHECK_GE(young_bytes_, bytes);
+ young_bytes_ -= bytes;
+ young_.bytes_ -= bytes;
+ } else {
+ DCHECK_GE(old_bytes_, bytes);
+ old_bytes_ -= bytes;
+ old_.bytes_ -= bytes;
+ }
+ }
+
+ MergeBackExtensionsWhenSwept();
+ DecrementExternalMemoryCounters(bytes);
+}
+
void ArrayBufferSweeper::IncrementExternalMemoryCounters(size_t bytes) {
+ if (bytes == 0) return;
heap_->IncrementExternalBackingStoreBytes(
ExternalBackingStoreType::kArrayBuffer, bytes);
reinterpret_cast<v8::Isolate*>(heap_->isolate())
->AdjustAmountOfExternalAllocatedMemory(static_cast<int64_t>(bytes));
}
+void ArrayBufferSweeper::DecrementExternalMemoryCounters(size_t bytes) {
+ if (bytes == 0) return;
+ heap_->DecrementExternalBackingStoreBytes(
+ ExternalBackingStoreType::kArrayBuffer, bytes);
+ // Unlike IncrementExternalMemoryCounters we don't use
+ // AdjustAmountOfExternalAllocatedMemory such that we never start a GC here.
+ heap_->update_external_memory(-static_cast<int64_t>(bytes));
+}
+
void ArrayBufferSweeper::IncrementFreedBytes(size_t bytes) {
if (bytes == 0) return;
freed_bytes_.fetch_add(bytes, std::memory_order_relaxed);
diff --git a/deps/v8/src/heap/array-buffer-sweeper.h b/deps/v8/src/heap/array-buffer-sweeper.h
index 0c15428b75..6dd7ed97f6 100644
--- a/deps/v8/src/heap/array-buffer-sweeper.h
+++ b/deps/v8/src/heap/array-buffer-sweeper.h
@@ -59,8 +59,12 @@ class ArrayBufferSweeper {
void RequestSweepYoung();
void RequestSweepFull();
+ // Track the given ArrayBufferExtension for the given JSArrayBuffer.
void Append(JSArrayBuffer object, ArrayBufferExtension* extension);
+ // Detaches an ArrayBufferExtension from a JSArrayBuffer.
+ void Detach(JSArrayBuffer object, ArrayBufferExtension* extension);
+
ArrayBufferList young() { return young_; }
ArrayBufferList old() { return old_; }
@@ -98,10 +102,11 @@ class ArrayBufferSweeper {
base::Optional<SweepingJob> job_;
void Merge();
- void AdjustCountersAndMergeIfPossible();
+ void MergeBackExtensionsWhenSwept();
- void DecrementExternalMemoryCounters();
+ void UpdateCountersForConcurrentlySweptExtensions();
void IncrementExternalMemoryCounters(size_t bytes);
+ void DecrementExternalMemoryCounters(size_t bytes);
void IncrementFreedBytes(size_t bytes);
void RequestSweep(SweepingScope sweeping_task);
diff --git a/deps/v8/src/heap/base/asm/riscv64/push_registers_asm.cc b/deps/v8/src/heap/base/asm/riscv64/push_registers_asm.cc
index 1de4055a28..2d90aab182 100644
--- a/deps/v8/src/heap/base/asm/riscv64/push_registers_asm.cc
+++ b/deps/v8/src/heap/base/asm/riscv64/push_registers_asm.cc
@@ -5,21 +5,26 @@
// Push all callee-saved registers to get them on the stack for conservative
// stack scanning.
//
-// See asm/x64/push_registers_clang.cc for why the function is not generated
+// See asm/x64/push_registers_asm.cc for why the function is not generated
// using clang.
//
-// Do not depend on V8_TARGET_OS_* defines as some embedders may override the
-// GN toolchain (e.g. ChromeOS) and not provide them.
+// Calling convention source:
+// https://riscv.org/wp-content/uploads/2015/01/riscv-calling.pdf Table 18.2
asm(".global PushAllRegistersAndIterateStack \n"
".type PushAllRegistersAndIterateStack, %function \n"
".hidden PushAllRegistersAndIterateStack \n"
"PushAllRegistersAndIterateStack: \n"
// Push all callee-saved registers and save return address.
- " addi sp, sp, -96 \n"
- " sd ra, 88(sp) \n"
- " sd s8, 80(sp) \n"
- " sd sp, 72(sp) \n"
- " sd gp, 64(sp) \n"
+ " addi sp, sp, -112 \n"
+ // Save return address.
+ " sd ra, 104(sp) \n"
+ // sp is callee-saved.
+ " sd sp, 96(sp) \n"
+ // s0-s11 are callee-saved.
+ " sd s11, 88(sp) \n"
+ " sd s10, 80(sp) \n"
+ " sd s9, 72(sp) \n"
+ " sd s8, 64(sp) \n"
" sd s7, 56(sp) \n"
" sd s6, 48(sp) \n"
" sd s5, 40(sp) \n"
@@ -28,18 +33,19 @@ asm(".global PushAllRegistersAndIterateStack \n"
" sd s2, 16(sp) \n"
" sd s1, 8(sp) \n"
" sd s0, 0(sp) \n"
- // Maintain frame pointer.
- " mv s8, sp \n"
+ // Maintain frame pointer(fp is s0).
+ " mv s0, sp \n"
// Pass 1st parameter (a0) unchanged (Stack*).
// Pass 2nd parameter (a1) unchanged (StackVisitor*).
- // Save 3rd parameter (a2; IterateStackCallback).
+ // Save 3rd parameter (a2; IterateStackCallback) to a3.
" mv a3, a2 \n"
+ // Pass 3rd parameter as sp (stack pointer).
" mv a2, sp \n"
// Call the callback.
" jalr a3 \n"
// Load return address.
- " ld ra, 88(sp) \n"
+ " ld ra, 104(sp) \n"
// Restore frame pointer.
- " ld s8, 80(sp) \n"
- " addi sp, sp, 96 \n"
+ " ld s0, 0(sp) \n"
+ " addi sp, sp, 112 \n"
" jr ra \n");
diff --git a/deps/v8/src/heap/base/asm/x64/push_registers_asm.cc b/deps/v8/src/heap/base/asm/x64/push_registers_asm.cc
index 68f7918c93..9780b877b8 100644
--- a/deps/v8/src/heap/base/asm/x64/push_registers_asm.cc
+++ b/deps/v8/src/heap/base/asm/x64/push_registers_asm.cc
@@ -19,7 +19,7 @@
#ifdef _WIN64
// We maintain 16-byte alignment at calls. There is an 8-byte return address
-// on the stack and we push 72 bytes which maintains 16-byte stack alignment
+// on the stack and we push 232 bytes which maintains 16-byte stack alignment
// at the call.
// Source: https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention
asm(".globl PushAllRegistersAndIterateStack \n"
@@ -36,6 +36,18 @@ asm(".globl PushAllRegistersAndIterateStack \n"
" push %r13 \n"
" push %r14 \n"
" push %r15 \n"
+ " sub $160, %rsp \n"
+ // Use aligned instrs as we are certain that the stack is properly aligned.
+ " movdqa %xmm6, 144(%rsp) \n"
+ " movdqa %xmm7, 128(%rsp) \n"
+ " movdqa %xmm8, 112(%rsp) \n"
+ " movdqa %xmm9, 96(%rsp) \n"
+ " movdqa %xmm10, 80(%rsp) \n"
+ " movdqa %xmm11, 64(%rsp) \n"
+ " movdqa %xmm12, 48(%rsp) \n"
+ " movdqa %xmm13, 32(%rsp) \n"
+ " movdqa %xmm14, 16(%rsp) \n"
+ " movdqa %xmm15, (%rsp) \n"
// Pass 1st parameter (rcx) unchanged (Stack*).
// Pass 2nd parameter (rdx) unchanged (StackVisitor*).
// Save 3rd parameter (r8; IterateStackCallback)
@@ -45,7 +57,7 @@ asm(".globl PushAllRegistersAndIterateStack \n"
// Call the callback.
" call *%r9 \n"
// Pop the callee-saved registers.
- " add $64, %rsp \n"
+ " add $224, %rsp \n"
// Restore rbp as it was used as frame pointer.
" pop %rbp \n"
" ret \n");
diff --git a/deps/v8/src/heap/base/asm/x64/push_registers_masm.S b/deps/v8/src/heap/base/asm/x64/push_registers_masm.S
index 627843830f..a32e193c2f 100644
--- a/deps/v8/src/heap/base/asm/x64/push_registers_masm.S
+++ b/deps/v8/src/heap/base/asm/x64/push_registers_masm.S
@@ -13,8 +13,8 @@ PushAllRegistersAndIterateStack:
;; stack scanning.
;;
;; We maintain 16-byte alignment at calls. There is an 8-byte return address
- ;; on the stack and we push 72 bytes which maintains 16-byte stack alignment
- ;; at the call.
+ ;; on the stack and we push 232 bytes which maintains 16-byte stack
+ ;; alignment at the call.
;; Source: https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention
;;
;; rbp is callee-saved. Maintain proper frame pointer for debugging.
@@ -28,6 +28,18 @@ PushAllRegistersAndIterateStack:
push r13
push r14
push r15
+ sub rsp, 160
+ ;; Use aligned instrs as we are certain that the stack is properly aligned.
+ movdqa xmmword ptr [rsp + 144], xmm6
+ movdqa xmmword ptr [rsp + 128], xmm7
+ movdqa xmmword ptr [rsp + 112], xmm8
+ movdqa xmmword ptr [rsp + 96], xmm9
+ movdqa xmmword ptr [rsp + 80], xmm10
+ movdqa xmmword ptr [rsp + 64], xmm11
+ movdqa xmmword ptr [rsp + 48], xmm12
+ movdqa xmmword ptr [rsp + 32], xmm13
+ movdqa xmmword ptr [rsp + 16], xmm14
+ movdqa xmmword ptr [rsp], xmm15
;; Pass 1st parameter (rcx) unchanged (Stack*).
;; Pass 2nd parameter (rdx) unchanged (StackVisitor*).
;; Save 3rd parameter (r8; IterateStackCallback)
@@ -37,7 +49,7 @@ PushAllRegistersAndIterateStack:
;; Call the callback.
call r9
;; Pop the callee-saved registers.
- add rsp, 64
+ add rsp, 224
;; Restore rbp as it was used as frame pointer.
pop rbp
ret
diff --git a/deps/v8/src/heap/base/stack.cc b/deps/v8/src/heap/base/stack.cc
index 939487ca77..f6d522f193 100644
--- a/deps/v8/src/heap/base/stack.cc
+++ b/deps/v8/src/heap/base/stack.cc
@@ -6,9 +6,11 @@
#include <limits>
+#include "src/base/macros.h"
#include "src/base/platform/platform.h"
+#include "src/base/sanitizer/asan.h"
+#include "src/base/sanitizer/msan.h"
#include "src/heap/cppgc/globals.h"
-#include "src/heap/cppgc/sanitizers.h"
namespace heap {
namespace base {
@@ -41,7 +43,7 @@ namespace {
// No ASAN support as accessing fake frames otherwise results in
// "stack-use-after-scope" warnings.
-NO_SANITIZE_ADDRESS
+DISABLE_ASAN
void IterateAsanFakeFrameIfNecessary(StackVisitor* visitor,
void* asan_fake_stack,
const void* stack_start,
@@ -77,7 +79,7 @@ void IterateSafeStackIfNecessary(StackVisitor* visitor) {
#if defined(__has_feature)
#if __has_feature(safe_stack)
// Source:
- // https://github.com/llvm/llvm-project/blob/master/compiler-rt/lib/safestack/safestack.cpp
+ // https://github.com/llvm/llvm-project/blob/main/compiler-rt/lib/safestack/safestack.cpp
constexpr size_t kSafeStackAlignmentBytes = 16;
void* stack_end = __builtin___get_unsafe_stack_ptr();
void* stack_start = __builtin___get_unsafe_stack_top();
@@ -101,7 +103,7 @@ void IterateSafeStackIfNecessary(StackVisitor* visitor) {
// any data that needs to be scanned.
V8_NOINLINE
// No ASAN support as method accesses redzones while walking the stack.
-NO_SANITIZE_ADDRESS
+DISABLE_ASAN
void IteratePointersImpl(const Stack* stack, StackVisitor* visitor,
intptr_t* stack_end) {
#ifdef V8_USE_ADDRESS_SANITIZER
@@ -116,7 +118,7 @@ void IteratePointersImpl(const Stack* stack, StackVisitor* visitor,
// MSAN: Instead of unpoisoning the whole stack, the slot's value is copied
// into a local which is unpoisoned.
void* address = *current;
- MSAN_UNPOISON(&address, sizeof(address));
+ MSAN_MEMORY_IS_INITIALIZED(&address, sizeof(address));
if (address == nullptr) continue;
visitor->VisitPointer(address);
#ifdef V8_USE_ADDRESS_SANITIZER
@@ -135,5 +137,10 @@ void Stack::IteratePointers(StackVisitor* visitor) const {
IterateSafeStackIfNecessary(visitor);
}
+void Stack::IteratePointersUnsafe(StackVisitor* visitor,
+ uintptr_t stack_end) const {
+ IteratePointersImpl(this, visitor, reinterpret_cast<intptr_t*>(stack_end));
+}
+
} // namespace base
} // namespace heap
diff --git a/deps/v8/src/heap/base/stack.h b/deps/v8/src/heap/base/stack.h
index a46e6e660e..d7267deee7 100644
--- a/deps/v8/src/heap/base/stack.h
+++ b/deps/v8/src/heap/base/stack.h
@@ -26,10 +26,20 @@ class V8_EXPORT_PRIVATE Stack final {
// Returns true if |slot| is part of the stack and false otherwise.
bool IsOnStack(void* slot) const;
- // Word-aligned iteration of the stack. Slot values are passed on to
- // |visitor|.
+ // Word-aligned iteration of the stack. Callee-saved registers are pushed to
+ // the stack before iterating pointers. Slot values are passed on to
+ // `visitor`.
void IteratePointers(StackVisitor* visitor) const;
+ // Word-aligned iteration of the stack, starting at `stack_end`. Slot values
+ // are passed on to `visitor`. This is intended to be used with verifiers that
+ // only visit a subset of the stack of IteratePointers().
+ //
+ // **Ignores:**
+ // - Callee-saved registers.
+ // - SafeStack.
+ void IteratePointersUnsafe(StackVisitor* visitor, uintptr_t stack_end) const;
+
// Returns the start of the stack.
const void* stack_start() const { return stack_start_; }
diff --git a/deps/v8/src/heap/basic-memory-chunk.h b/deps/v8/src/heap/basic-memory-chunk.h
index 1b2d7cb5da..993291dc0e 100644
--- a/deps/v8/src/heap/basic-memory-chunk.h
+++ b/deps/v8/src/heap/basic-memory-chunk.h
@@ -106,6 +106,9 @@ class BasicMemoryChunk {
// because there exists a potential pointer to somewhere in the chunk which
// can't be updated.
PINNED = 1u << 22,
+
+ // This page belongs to a shared heap.
+ IN_SHARED_HEAP = 1u << 23,
};
static const intptr_t kAlignment =
@@ -255,6 +258,8 @@ class BasicMemoryChunk {
bool InOldSpace() const;
V8_EXPORT_PRIVATE bool InLargeObjectSpace() const;
+ bool InSharedHeap() const { return IsFlagSet(IN_SHARED_HEAP); }
+
bool IsWritable() const {
// If this is a read-only space chunk but heap_ is non-null, it has not yet
// been sealed and can be written to.
@@ -294,11 +299,13 @@ class BasicMemoryChunk {
// Only works if the pointer is in the first kPageSize of the MemoryChunk.
static BasicMemoryChunk* FromAddress(Address a) {
+ DCHECK(!V8_ENABLE_THIRD_PARTY_HEAP_BOOL);
return reinterpret_cast<BasicMemoryChunk*>(BaseAddress(a));
}
// Only works if the object is in the first kPageSize of the MemoryChunk.
static BasicMemoryChunk* FromHeapObject(HeapObject o) {
+ DCHECK(!V8_ENABLE_THIRD_PARTY_HEAP_BOOL);
return reinterpret_cast<BasicMemoryChunk*>(BaseAddress(o.ptr()));
}
diff --git a/deps/v8/src/heap/code-range.cc b/deps/v8/src/heap/code-range.cc
new file mode 100644
index 0000000000..738c12710c
--- /dev/null
+++ b/deps/v8/src/heap/code-range.cc
@@ -0,0 +1,172 @@
+// Copyright 2021 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.
+
+#include "src/heap/code-range.h"
+
+#include "src/base/lazy-instance.h"
+#include "src/common/globals.h"
+#include "src/flags/flags.h"
+#include "src/heap/heap-inl.h"
+
+namespace v8 {
+namespace internal {
+
+namespace {
+
+DEFINE_LAZY_LEAKY_OBJECT_GETTER(std::shared_ptr<CodeRange>,
+ GetProcessWideCodeRangeCage)
+
+DEFINE_LAZY_LEAKY_OBJECT_GETTER(CodeRangeAddressHint, GetCodeRangeAddressHint)
+
+void FunctionInStaticBinaryForAddressHint() {}
+} // anonymous namespace
+
+Address CodeRangeAddressHint::GetAddressHint(size_t code_range_size) {
+ base::MutexGuard guard(&mutex_);
+ auto it = recently_freed_.find(code_range_size);
+ if (it == recently_freed_.end() || it->second.empty()) {
+ return FUNCTION_ADDR(&FunctionInStaticBinaryForAddressHint);
+ }
+ Address result = it->second.back();
+ it->second.pop_back();
+ return result;
+}
+
+void CodeRangeAddressHint::NotifyFreedCodeRange(Address code_range_start,
+ size_t code_range_size) {
+ base::MutexGuard guard(&mutex_);
+ recently_freed_[code_range_size].push_back(code_range_start);
+}
+
+CodeRange::~CodeRange() { Free(); }
+
+bool CodeRange::InitReservation(v8::PageAllocator* page_allocator,
+ size_t requested) {
+ DCHECK_NE(requested, 0);
+
+ if (requested <= kMinimumCodeRangeSize) {
+ requested = kMinimumCodeRangeSize;
+ }
+ const size_t reserved_area =
+ kReservedCodeRangePages * MemoryAllocator::GetCommitPageSize();
+ if (requested < (kMaximalCodeRangeSize - reserved_area)) {
+ requested += RoundUp(reserved_area, MemoryChunk::kPageSize);
+ // Fullfilling both reserved pages requirement and huge code area
+ // alignments is not supported (requires re-implementation).
+ DCHECK_LE(kMinExpectedOSPageSize, page_allocator->AllocatePageSize());
+ }
+ DCHECK_IMPLIES(kPlatformRequiresCodeRange,
+ requested <= kMaximalCodeRangeSize);
+
+ VirtualMemoryCage::ReservationParams params;
+ params.page_allocator = page_allocator;
+ params.reservation_size = requested;
+ params.base_alignment =
+ VirtualMemoryCage::ReservationParams::kAnyBaseAlignment;
+ params.base_bias_size = reserved_area;
+ params.page_size = MemoryChunk::kPageSize;
+ params.requested_start_hint =
+ GetCodeRangeAddressHint()->GetAddressHint(requested);
+
+ if (!VirtualMemoryCage::InitReservation(params)) return false;
+
+ // On some platforms, specifically Win64, we need to reserve some pages at
+ // the beginning of an executable space. See
+ // https://cs.chromium.org/chromium/src/components/crash/content/
+ // app/crashpad_win.cc?rcl=fd680447881449fba2edcf0589320e7253719212&l=204
+ // for details.
+ if (reserved_area > 0) {
+ if (!reservation()->SetPermissions(reservation()->address(), reserved_area,
+ PageAllocator::kReadWrite)) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+void CodeRange::Free() {
+ if (IsReserved()) {
+ GetCodeRangeAddressHint()->NotifyFreedCodeRange(
+ reservation()->region().begin(), reservation()->region().size());
+ VirtualMemoryCage::Free();
+ }
+}
+
+uint8_t* CodeRange::RemapEmbeddedBuiltins(Isolate* isolate,
+ const uint8_t* embedded_blob_code,
+ size_t embedded_blob_code_size) {
+ base::MutexGuard guard(&remap_embedded_builtins_mutex_);
+
+ const base::AddressRegion& code_region = reservation()->region();
+ CHECK_NE(code_region.begin(), kNullAddress);
+ CHECK(!code_region.is_empty());
+
+ uint8_t* embedded_blob_code_copy =
+ embedded_blob_code_copy_.load(std::memory_order_acquire);
+ if (embedded_blob_code_copy) {
+ DCHECK(
+ code_region.contains(reinterpret_cast<Address>(embedded_blob_code_copy),
+ embedded_blob_code_size));
+ SLOW_DCHECK(memcmp(embedded_blob_code, embedded_blob_code_copy,
+ embedded_blob_code_size) == 0);
+ return embedded_blob_code_copy;
+ }
+
+ const size_t kAllocatePageSize = page_allocator()->AllocatePageSize();
+ size_t allocate_code_size =
+ RoundUp(embedded_blob_code_size, kAllocatePageSize);
+
+ // Allocate the re-embedded code blob in the end.
+ void* hint = reinterpret_cast<void*>(code_region.end() - allocate_code_size);
+
+ embedded_blob_code_copy =
+ reinterpret_cast<uint8_t*>(page_allocator()->AllocatePages(
+ hint, allocate_code_size, kAllocatePageSize,
+ PageAllocator::kNoAccess));
+
+ if (!embedded_blob_code_copy) {
+ V8::FatalProcessOutOfMemory(
+ isolate, "Can't allocate space for re-embedded builtins");
+ }
+
+ size_t code_size =
+ RoundUp(embedded_blob_code_size, page_allocator()->CommitPageSize());
+
+ if (!page_allocator()->SetPermissions(embedded_blob_code_copy, code_size,
+ PageAllocator::kReadWrite)) {
+ V8::FatalProcessOutOfMemory(isolate,
+ "Re-embedded builtins: set permissions");
+ }
+ memcpy(embedded_blob_code_copy, embedded_blob_code, embedded_blob_code_size);
+
+ if (!page_allocator()->SetPermissions(embedded_blob_code_copy, code_size,
+ PageAllocator::kReadExecute)) {
+ V8::FatalProcessOutOfMemory(isolate,
+ "Re-embedded builtins: set permissions");
+ }
+
+ embedded_blob_code_copy_.store(embedded_blob_code_copy,
+ std::memory_order_release);
+ return embedded_blob_code_copy;
+}
+
+// static
+void CodeRange::InitializeProcessWideCodeRangeOnce(
+ v8::PageAllocator* page_allocator, size_t requested_size) {
+ *GetProcessWideCodeRangeCage() = std::make_shared<CodeRange>();
+ if (!GetProcessWideCodeRange()->InitReservation(page_allocator,
+ requested_size)) {
+ V8::FatalProcessOutOfMemory(
+ nullptr, "Failed to reserve virtual memory for CodeRange");
+ }
+}
+
+// static
+std::shared_ptr<CodeRange> CodeRange::GetProcessWideCodeRange() {
+ return *GetProcessWideCodeRangeCage();
+}
+
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/src/heap/code-range.h b/deps/v8/src/heap/code-range.h
new file mode 100644
index 0000000000..b1bc6020b5
--- /dev/null
+++ b/deps/v8/src/heap/code-range.h
@@ -0,0 +1,147 @@
+// Copyright 2021 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_HEAP_CODE_RANGE_H_
+#define V8_HEAP_CODE_RANGE_H_
+
+#include <unordered_map>
+#include <vector>
+
+#include "src/base/platform/mutex.h"
+#include "src/common/globals.h"
+#include "src/utils/allocation.h"
+
+namespace v8 {
+namespace internal {
+
+// The process-wide singleton that keeps track of code range regions with the
+// intention to reuse free code range regions as a workaround for CFG memory
+// leaks (see crbug.com/870054).
+class CodeRangeAddressHint {
+ public:
+ // Returns the most recently freed code range start address for the given
+ // size. If there is no such entry, then a random address is returned.
+ V8_EXPORT_PRIVATE Address GetAddressHint(size_t code_range_size);
+
+ V8_EXPORT_PRIVATE void NotifyFreedCodeRange(Address code_range_start,
+ size_t code_range_size);
+
+ private:
+ base::Mutex mutex_;
+ // A map from code range size to an array of recently freed code range
+ // addresses. There should be O(1) different code range sizes.
+ // The length of each array is limited by the peak number of code ranges,
+ // which should be also O(1).
+ std::unordered_map<size_t, std::vector<Address>> recently_freed_;
+};
+
+// A code range is a virtual memory cage that may contain executable code. It
+// has the following layout.
+//
+// +------------+-----+---------------- ~~~ -+
+// | RW | ... | ... |
+// +------------+-----+----------------- ~~~ -+
+// ^ ^ ^
+// start base allocatable base
+//
+// <------------> <------------------------>
+// reserved allocatable region
+// <------------------------------------------->
+// code region
+//
+// The start of the reservation may include reserved page with read-write access
+// as required by some platforms (Win64). The cage's page allocator does not
+// control the optional reserved page in the beginning of the code region.
+//
+// The following conditions hold:
+// 1) |reservation()->region()| >= |optional RW pages| +
+// |reservation()->page_allocator()|
+// 2) |reservation()| is AllocatePageSize()-aligned
+// 3) |reservation()->page_allocator()| (i.e. allocatable base) is
+// MemoryChunk::kAlignment-aligned
+// 4) |base()| is CommitPageSize()-aligned
+class CodeRange final : public VirtualMemoryCage {
+ public:
+ V8_EXPORT_PRIVATE ~CodeRange();
+
+ uint8_t* embedded_blob_code_copy() const {
+ // remap_embedded_builtins_mutex_ is designed to protect write contention to
+ // embedded_blob_code_copy_. It is safe to be read without taking the
+ // mutex. It is read to check if short builtins ought to be enabled because
+ // a shared CodeRange has already remapped builtins and to find where the
+ // instruction stream for a builtin is.
+ //
+ // For the first, this racing with an Isolate calling RemapEmbeddedBuiltins
+ // may result in disabling short builtins, which is not a correctness issue.
+ //
+ // For the second, this racing with an Isolate calling RemapEmbeddedBuiltins
+ // may result in an already running Isolate that did not have short builtins
+ // enabled (due to max old generation size) to switch over to using remapped
+ // builtins, which is also not a correctness issue as the remapped builtins
+ // are byte-equivalent.
+ //
+ // Both these scenarios should be rare. The initial Isolate is usually
+ // created by itself, i.e. without contention. Additionally, the first
+ // Isolate usually remaps builtins on machines with enough memory, not
+ // subsequent Isolates in the same process.
+ return embedded_blob_code_copy_.load(std::memory_order_acquire);
+ }
+
+#ifdef V8_OS_WIN64
+ // 64-bit Windows needs to track how many Isolates are using the CodeRange for
+ // registering and unregistering of unwind info. Note that even though
+ // CodeRanges are used with std::shared_ptr, std::shared_ptr::use_count should
+ // not be used for synchronization as it's usually implemented with a relaxed
+ // read.
+ uint32_t AtomicIncrementUnwindInfoUseCount() {
+ return unwindinfo_use_count_.fetch_add(1, std::memory_order_acq_rel);
+ }
+
+ uint32_t AtomicDecrementUnwindInfoUseCount() {
+ return unwindinfo_use_count_.fetch_sub(1, std::memory_order_acq_rel);
+ }
+#endif // V8_OS_WIN64
+
+ bool InitReservation(v8::PageAllocator* page_allocator, size_t requested);
+
+ void Free();
+
+ // Remap and copy the embedded builtins into this CodeRange. This method is
+ // idempotent and only performs the copy once. This property is so that this
+ // method can be used uniformly regardless of having a per-Isolate or a shared
+ // pointer cage. Returns the address of the copy.
+ //
+ // The builtins code region will be freed with the code range at tear down.
+ //
+ // When ENABLE_SLOW_DCHECKS is on, the contents of the embedded_blob_code are
+ // compared against the already copied version.
+ uint8_t* RemapEmbeddedBuiltins(Isolate* isolate,
+ const uint8_t* embedded_blob_code,
+ size_t embedded_blob_code_size);
+
+ static void InitializeProcessWideCodeRangeOnce(
+ v8::PageAllocator* page_allocator, size_t requested_size);
+
+ // If InitializeProcessWideCodeRangeOnce has been called, returns the
+ // initialized CodeRange. Otherwise returns an empty std::shared_ptr.
+ V8_EXPORT_PRIVATE static std::shared_ptr<CodeRange> GetProcessWideCodeRange();
+
+ private:
+ // Used when short builtin calls are enabled, where embedded builtins are
+ // copied into the CodeRange so calls can be nearer.
+ std::atomic<uint8_t*> embedded_blob_code_copy_{nullptr};
+
+ // When sharing a CodeRange among Isolates, calls to RemapEmbeddedBuiltins may
+ // race during Isolate::Init.
+ base::Mutex remap_embedded_builtins_mutex_;
+
+#ifdef V8_OS_WIN64
+ std::atomic<uint32_t> unwindinfo_use_count_{0};
+#endif
+};
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_HEAP_CODE_RANGE_H_
diff --git a/deps/v8/src/heap/collection-barrier.cc b/deps/v8/src/heap/collection-barrier.cc
index 92007690aa..feeb23d000 100644
--- a/deps/v8/src/heap/collection-barrier.cc
+++ b/deps/v8/src/heap/collection-barrier.cc
@@ -22,8 +22,7 @@ bool CollectionBarrier::CollectionRequested() {
}
LocalHeap::ThreadState CollectionBarrier::main_thread_state_relaxed() {
- LocalHeap* main_thread_local_heap =
- heap_->isolate()->main_thread_local_heap();
+ LocalHeap* main_thread_local_heap = heap_->main_thread_local_heap();
return main_thread_local_heap->state_relaxed();
}
diff --git a/deps/v8/src/heap/combined-heap.h b/deps/v8/src/heap/combined-heap.h
index 55664114d3..9c9ed9039f 100644
--- a/deps/v8/src/heap/combined-heap.h
+++ b/deps/v8/src/heap/combined-heap.h
@@ -36,7 +36,8 @@ V8_WARN_UNUSED_RESULT inline bool IsValidHeapObject(Heap* heap,
if (V8_ENABLE_THIRD_PARTY_HEAP_BOOL)
return third_party_heap::Heap::IsValidHeapObject(object);
else
- return ReadOnlyHeap::Contains(object) || heap->Contains(object);
+ return ReadOnlyHeap::Contains(object) || heap->Contains(object) ||
+ heap->SharedHeapContains(object);
}
} // namespace internal
diff --git a/deps/v8/src/heap/concurrent-allocator-inl.h b/deps/v8/src/heap/concurrent-allocator-inl.h
index c92b91ca47..07d669b17c 100644
--- a/deps/v8/src/heap/concurrent-allocator-inl.h
+++ b/deps/v8/src/heap/concurrent-allocator-inl.h
@@ -20,6 +20,7 @@ namespace internal {
AllocationResult ConcurrentAllocator::AllocateRaw(int object_size,
AllocationAlignment alignment,
AllocationOrigin origin) {
+ DCHECK(!FLAG_enable_third_party_heap);
// TODO(dinfuehr): Add support for allocation observers
#ifdef DEBUG
local_heap_->VerifyCurrent();
diff --git a/deps/v8/src/heap/concurrent-marking.cc b/deps/v8/src/heap/concurrent-marking.cc
index eb1511f71d..6f0aa89ebd 100644
--- a/deps/v8/src/heap/concurrent-marking.cc
+++ b/deps/v8/src/heap/concurrent-marking.cc
@@ -8,6 +8,7 @@
#include <unordered_map>
#include "include/v8config.h"
+#include "src/common/globals.h"
#include "src/execution/isolate.h"
#include "src/heap/gc-tracer.h"
#include "src/heap/heap-inl.h"
@@ -136,13 +137,13 @@ class ConcurrentMarkingVisitor final
int VisitSeqOneByteString(Map map, SeqOneByteString object) {
if (!ShouldVisit(object)) return 0;
VisitMapPointer(object);
- return SeqOneByteString::SizeFor(object.synchronized_length());
+ return SeqOneByteString::SizeFor(object.length(kAcquireLoad));
}
int VisitSeqTwoByteString(Map map, SeqTwoByteString object) {
if (!ShouldVisit(object)) return 0;
VisitMapPointer(object);
- return SeqTwoByteString::SizeFor(object.synchronized_length());
+ return SeqTwoByteString::SizeFor(object.length(kAcquireLoad));
}
// Implements ephemeron semantics: Marks value if key is already reachable.
@@ -232,9 +233,9 @@ class ConcurrentMarkingVisitor final
template <typename T>
int VisitLeftTrimmableArray(Map map, T object) {
- // The synchronized_length() function checks that the length is a Smi.
+ // The length() function checks that the length is a Smi.
// This is not necessarily the case if the array is being left-trimmed.
- Object length = object.unchecked_synchronized_length();
+ Object length = object.unchecked_length(kAcquireLoad);
if (!ShouldVisit(object)) return 0;
// The cached length must be the actual length as the array is not black.
// Left trimming marks the array black before over-writing the length.
@@ -460,16 +461,28 @@ void ConcurrentMarking::Run(JobDelegate* delegate,
break;
}
objects_processed++;
- // The order of the two loads is important.
- Address new_space_top = heap_->new_space()->original_top_acquire();
- Address new_space_limit = heap_->new_space()->original_limit_relaxed();
- Address new_large_object = heap_->new_lo_space()->pending_object();
+
+ Address new_space_top = kNullAddress;
+ Address new_space_limit = kNullAddress;
+ Address new_large_object = kNullAddress;
+
+ if (heap_->new_space()) {
+ // The order of the two loads is important.
+ new_space_top = heap_->new_space()->original_top_acquire();
+ new_space_limit = heap_->new_space()->original_limit_relaxed();
+ }
+
+ if (heap_->new_lo_space()) {
+ new_large_object = heap_->new_lo_space()->pending_object();
+ }
+
Address addr = object.address();
+
if ((new_space_top <= addr && addr < new_space_limit) ||
addr == new_large_object) {
local_marking_worklists.PushOnHold(object);
} else {
- Map map = object.synchronized_map(isolate);
+ Map map = object.map(isolate, kAcquireLoad);
if (is_per_context_mode) {
Address context;
if (native_context_inferrer.Infer(isolate, map, object, &context)) {
diff --git a/deps/v8/src/heap/cppgc-js/cpp-heap.cc b/deps/v8/src/heap/cppgc-js/cpp-heap.cc
index 636f666521..006c35808f 100644
--- a/deps/v8/src/heap/cppgc-js/cpp-heap.cc
+++ b/deps/v8/src/heap/cppgc-js/cpp-heap.cc
@@ -5,6 +5,8 @@
#include "src/heap/cppgc-js/cpp-heap.h"
#include <cstdint>
+#include <memory>
+#include <numeric>
#include "include/cppgc/heap-consistency.h"
#include "include/cppgc/platform.h"
@@ -29,6 +31,7 @@
#include "src/heap/cppgc/marking-visitor.h"
#include "src/heap/cppgc/object-allocator.h"
#include "src/heap/cppgc/prefinalizer-handler.h"
+#include "src/heap/cppgc/raw-heap.h"
#include "src/heap/cppgc/stats-collector.h"
#include "src/heap/cppgc/sweeper.h"
#include "src/heap/embedder-tracing.h"
@@ -65,6 +68,13 @@ cppgc::HeapStatistics CppHeap::CollectStatistics(
detail_level);
}
+void CppHeap::CollectCustomSpaceStatisticsAtLastGC(
+ std::vector<cppgc::CustomSpaceIndex> custom_spaces,
+ std::unique_ptr<CustomSpaceStatisticsReceiver> receiver) {
+ return internal::CppHeap::From(this)->CollectCustomSpaceStatisticsAtLastGC(
+ std::move(custom_spaces), std::move(receiver));
+}
+
void CppHeap::EnableDetachedGarbageCollectionsForTesting() {
return internal::CppHeap::From(this)
->EnableDetachedGarbageCollectionsForTesting();
@@ -200,7 +210,7 @@ UnifiedHeapMarker::UnifiedHeapMarker(Key key, Heap* v8_heap,
void UnifiedHeapMarker::AddObject(void* object) {
mutator_marking_state_.MarkAndPush(
- cppgc::internal::HeapObjectHeader::FromPayload(object));
+ cppgc::internal::HeapObjectHeader::FromObject(object));
}
} // namespace
@@ -318,10 +328,6 @@ void CppHeap::TracePrologue(TraceFlags flags) {
}
bool CppHeap::AdvanceTracing(double deadline_in_ms) {
- // TODO(chromium:1154636): The kAtomicMark/kIncrementalMark scope below is
- // needed for recording all cpp marking time. Note that it can lead to double
- // accounting since this scope is also accounted under an outer v8 scope.
- // Make sure to only account this scope once.
cppgc::internal::StatsCollector::EnabledScope stats_scope(
stats_collector(),
in_atomic_pause_ ? cppgc::internal::StatsCollector::kAtomicMark
@@ -342,8 +348,6 @@ bool CppHeap::IsTracingDone() { return marking_done_; }
void CppHeap::EnterFinalPause(EmbedderStackState stack_state) {
CHECK(!in_disallow_gc_scope());
- cppgc::internal::StatsCollector::EnabledScope stats_scope(
- stats_collector(), cppgc::internal::StatsCollector::kAtomicMark);
in_atomic_pause_ = true;
if (override_stack_state_) {
stack_state = *override_stack_state_;
@@ -359,8 +363,6 @@ void CppHeap::TraceEpilogue(TraceSummary* trace_summary) {
CHECK(in_atomic_pause_);
CHECK(marking_done_);
{
- cppgc::internal::StatsCollector::EnabledScope stats_scope(
- stats_collector(), cppgc::internal::StatsCollector::kAtomicMark);
cppgc::subtle::DisallowGarbageCollectionScope disallow_gc_scope(*this);
marker_->LeaveAtomicPause();
}
@@ -376,7 +378,8 @@ void CppHeap::TraceEpilogue(TraceSummary* trace_summary) {
// TODO(chromium:1056170): replace build flag with dedicated flag.
#if DEBUG
UnifiedHeapMarkingVerifier verifier(*this);
- verifier.Run(stack_state_of_prev_gc_);
+ verifier.Run(stack_state_of_prev_gc(), stack_end_of_current_gc(),
+ stats_collector()->marked_bytes());
#endif
{
@@ -422,12 +425,17 @@ void CppHeap::ReportBufferedAllocationSizeIfPossible() {
return;
}
- if (buffered_allocated_bytes_ < 0) {
- DecreaseAllocatedSize(static_cast<size_t>(-buffered_allocated_bytes_));
+ // The calls below may trigger full GCs that are synchronous and also execute
+ // epilogue callbacks. Since such callbacks may allocate, the counter must
+ // already be zeroed by that time.
+ const int64_t bytes_to_report = buffered_allocated_bytes_;
+ buffered_allocated_bytes_ = 0;
+
+ if (bytes_to_report < 0) {
+ DecreaseAllocatedSize(static_cast<size_t>(-bytes_to_report));
} else {
- IncreaseAllocatedSize(static_cast<size_t>(buffered_allocated_bytes_));
+ IncreaseAllocatedSize(static_cast<size_t>(bytes_to_report));
}
- buffered_allocated_bytes_ = 0;
}
void CppHeap::CollectGarbageForTesting(
@@ -437,6 +445,8 @@ void CppHeap::CollectGarbageForTesting(
// Finish sweeping in case it is still running.
sweeper().FinishIfRunning();
+ SetStackEndOfCurrentGC(v8::base::Stack::GetCurrentStackPosition());
+
if (isolate_) {
// Go through EmbedderHeapTracer API and perform a unified heap collection.
GarbageCollectionForTesting(stack_state);
@@ -481,5 +491,82 @@ void CppHeap::FinalizeIncrementalGarbageCollectionForTesting(
sweeper_.FinishIfRunning();
}
+namespace {
+
+void ReportCustomSpaceStatistics(
+ cppgc::internal::RawHeap& raw_heap,
+ std::vector<cppgc::CustomSpaceIndex> custom_spaces,
+ std::unique_ptr<CustomSpaceStatisticsReceiver> receiver) {
+ for (auto custom_space_index : custom_spaces) {
+ const cppgc::internal::BaseSpace* space =
+ raw_heap.CustomSpace(custom_space_index);
+ size_t allocated_bytes = std::accumulate(
+ space->begin(), space->end(), 0, [](size_t sum, auto* page) {
+ return sum + page->AllocatedBytesAtLastGC();
+ });
+ receiver->AllocatedBytes(custom_space_index, allocated_bytes);
+ }
+}
+
+class CollectCustomSpaceStatisticsAtLastGCTask final : public v8::Task {
+ public:
+ static constexpr v8::base::TimeDelta kTaskDelayMs =
+ v8::base::TimeDelta::FromMilliseconds(10);
+
+ CollectCustomSpaceStatisticsAtLastGCTask(
+ cppgc::internal::HeapBase& heap,
+ std::vector<cppgc::CustomSpaceIndex> custom_spaces,
+ std::unique_ptr<CustomSpaceStatisticsReceiver> receiver)
+ : heap_(heap),
+ custom_spaces_(std::move(custom_spaces)),
+ receiver_(std::move(receiver)) {}
+
+ void Run() final {
+ cppgc::internal::Sweeper& sweeper = heap_.sweeper();
+ if (sweeper.PerformSweepOnMutatorThread(
+ heap_.platform()->MonotonicallyIncreasingTime() +
+ kStepSizeMs.InSecondsF())) {
+ // Sweeping is done.
+ DCHECK(!sweeper.IsSweepingInProgress());
+ ReportCustomSpaceStatistics(heap_.raw_heap(), std::move(custom_spaces_),
+ std::move(receiver_));
+ } else {
+ heap_.platform()->GetForegroundTaskRunner()->PostDelayedTask(
+ std::make_unique<CollectCustomSpaceStatisticsAtLastGCTask>(
+ heap_, std::move(custom_spaces_), std::move(receiver_)),
+ kTaskDelayMs.InSecondsF());
+ }
+ }
+
+ private:
+ static constexpr v8::base::TimeDelta kStepSizeMs =
+ v8::base::TimeDelta::FromMilliseconds(5);
+
+ cppgc::internal::HeapBase& heap_;
+ std::vector<cppgc::CustomSpaceIndex> custom_spaces_;
+ std::unique_ptr<CustomSpaceStatisticsReceiver> receiver_;
+};
+
+constexpr v8::base::TimeDelta
+ CollectCustomSpaceStatisticsAtLastGCTask::kTaskDelayMs;
+constexpr v8::base::TimeDelta
+ CollectCustomSpaceStatisticsAtLastGCTask::kStepSizeMs;
+
+} // namespace
+
+void CppHeap::CollectCustomSpaceStatisticsAtLastGC(
+ std::vector<cppgc::CustomSpaceIndex> custom_spaces,
+ std::unique_ptr<CustomSpaceStatisticsReceiver> receiver) {
+ if (sweeper().IsSweepingInProgress()) {
+ platform()->GetForegroundTaskRunner()->PostDelayedTask(
+ std::make_unique<CollectCustomSpaceStatisticsAtLastGCTask>(
+ AsBase(), std::move(custom_spaces), std::move(receiver)),
+ CollectCustomSpaceStatisticsAtLastGCTask::kTaskDelayMs.InSecondsF());
+ return;
+ }
+ ReportCustomSpaceStatistics(raw_heap(), std::move(custom_spaces),
+ std::move(receiver));
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/heap/cppgc-js/cpp-heap.h b/deps/v8/src/heap/cppgc-js/cpp-heap.h
index b13fd25a32..cf99b8fe60 100644
--- a/deps/v8/src/heap/cppgc-js/cpp-heap.h
+++ b/deps/v8/src/heap/cppgc-js/cpp-heap.h
@@ -5,6 +5,11 @@
#ifndef V8_HEAP_CPPGC_JS_CPP_HEAP_H_
#define V8_HEAP_CPPGC_JS_CPP_HEAP_H_
+#if CPPGC_IS_STANDALONE
+static_assert(
+ false, "V8 targets can not be built with cppgc_is_standalone set to true.");
+#endif
+
#include "include/v8-cppgc.h"
#include "include/v8.h"
#include "src/base/macros.h"
@@ -55,6 +60,10 @@ class V8_EXPORT_PRIVATE CppHeap final
void CollectGarbageForTesting(
cppgc::internal::GarbageCollector::Config::StackState);
+ void CollectCustomSpaceStatisticsAtLastGC(
+ std::vector<cppgc::CustomSpaceIndex>,
+ std::unique_ptr<CustomSpaceStatisticsReceiver>);
+
// v8::EmbedderHeapTracer interface.
void RegisterV8References(
const std::vector<std::pair<void*, void*> >& embedder_fields) final;
diff --git a/deps/v8/src/heap/cppgc-js/cpp-snapshot.cc b/deps/v8/src/heap/cppgc-js/cpp-snapshot.cc
index 79a863e302..17929247ee 100644
--- a/deps/v8/src/heap/cppgc-js/cpp-snapshot.cc
+++ b/deps/v8/src/heap/cppgc-js/cpp-snapshot.cc
@@ -382,7 +382,7 @@ class CppGraphBuilderImpl final {
EmbedderNode* AddNode(const HeapObjectHeader& header) {
return static_cast<EmbedderNode*>(
graph_.AddNode(std::unique_ptr<v8::EmbedderGraph::Node>{
- new EmbedderNode(header.GetName().value, header.GetSize())}));
+ new EmbedderNode(header.GetName().value, header.AllocatedSize())}));
}
void AddEdge(State& parent, const HeapObjectHeader& header) {
@@ -418,7 +418,7 @@ class CppGraphBuilderImpl final {
if (HasEmbedderDataBackref(
reinterpret_cast<v8::internal::Isolate*>(cpp_heap_.isolate()),
- v8_value, parent.header()->Payload())) {
+ v8_value, parent.header()->ObjectStart())) {
parent.get_node()->SetWrapperNode(v8_node);
auto* profiler =
@@ -512,7 +512,7 @@ class VisiblityVisitor final : public JSVisitor {
void Visit(const void*, cppgc::TraceDescriptor desc) final {
graph_builder_.VisitForVisibility(
&parent_scope_.ParentAsRegularState(),
- HeapObjectHeader::FromPayload(desc.base_object_payload));
+ HeapObjectHeader::FromObject(desc.base_object_payload));
}
void VisitRoot(const void*, cppgc::TraceDescriptor,
const cppgc::SourceLocation&) final {}
@@ -556,13 +556,13 @@ class GraphBuildingVisitor final : public JSVisitor {
void Visit(const void*, cppgc::TraceDescriptor desc) final {
graph_builder_.AddEdge(
parent_scope_.ParentAsRegularState(),
- HeapObjectHeader::FromPayload(desc.base_object_payload));
+ HeapObjectHeader::FromObject(desc.base_object_payload));
}
void VisitRoot(const void*, cppgc::TraceDescriptor desc,
const cppgc::SourceLocation& loc) final {
graph_builder_.VisitRootForGraphBuilding(
parent_scope_.ParentAsRootState(),
- HeapObjectHeader::FromPayload(desc.base_object_payload), loc);
+ HeapObjectHeader::FromObject(desc.base_object_payload), loc);
}
void VisitWeakRoot(const void*, cppgc::TraceDescriptor, cppgc::WeakCallback,
const void*, const cppgc::SourceLocation&) final {}
diff --git a/deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.cc b/deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.cc
index ea14b52048..b0f8595ec7 100644
--- a/deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.cc
+++ b/deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.cc
@@ -35,7 +35,7 @@ class UnifiedHeapVerificationVisitor final : public JSVisitor {
void VisitWeakContainer(const void* object, cppgc::TraceDescriptor,
cppgc::TraceDescriptor weak_desc, cppgc::WeakCallback,
- const void*) {
+ const void*) final {
if (!object) return;
// Contents of weak containers are found themselves through page iteration
@@ -58,13 +58,8 @@ class UnifiedHeapVerificationVisitor final : public JSVisitor {
UnifiedHeapMarkingVerifier::UnifiedHeapMarkingVerifier(
cppgc::internal::HeapBase& heap_base)
: MarkingVerifierBase(
- heap_base, std::make_unique<UnifiedHeapVerificationVisitor>(state_)) {
-}
-
-void UnifiedHeapMarkingVerifier::SetCurrentParent(
- const cppgc::internal::HeapObjectHeader* parent) {
- state_.SetCurrentParent(parent);
-}
+ heap_base, state_,
+ std::make_unique<UnifiedHeapVerificationVisitor>(state_)) {}
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.h b/deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.h
index 3a54b4dd32..bb2ac09e38 100644
--- a/deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.h
+++ b/deps/v8/src/heap/cppgc-js/unified-heap-marking-verifier.h
@@ -16,8 +16,6 @@ class V8_EXPORT_PRIVATE UnifiedHeapMarkingVerifier final
explicit UnifiedHeapMarkingVerifier(cppgc::internal::HeapBase&);
~UnifiedHeapMarkingVerifier() final = default;
- void SetCurrentParent(const cppgc::internal::HeapObjectHeader*) final;
-
private:
// TODO(chromium:1056170): Use a verification state that can handle JS
// references.
diff --git a/deps/v8/src/heap/cppgc/caged-heap.cc b/deps/v8/src/heap/cppgc/caged-heap.cc
index 951fb0e853..3a8304f448 100644
--- a/deps/v8/src/heap/cppgc/caged-heap.cc
+++ b/deps/v8/src/heap/cppgc/caged-heap.cc
@@ -45,6 +45,27 @@ VirtualMemory ReserveCagedHeap(PageAllocator* platform_allocator) {
UNREACHABLE();
}
+class CppgcBoundedPageAllocator final : public v8::base::BoundedPageAllocator {
+ public:
+ CppgcBoundedPageAllocator(v8::PageAllocator* page_allocator, Address start,
+ size_t size, size_t allocate_page_size)
+ : BoundedPageAllocator(page_allocator, start, size, allocate_page_size) {}
+
+ bool FreePages(void* address, size_t size) final {
+ // BoundedPageAllocator is not guaranteed to allocate zeroed page.
+ // Specifically it is possible that BPA frees a page and then tries to
+ // reallocate the same page before the OS has had a chance to asyncroniously
+ // reclaim that page. In such cases, the contents of the page would not have
+ // been cleared by the OS and the reallocated page will keep its previous
+ // contents. To mitigate this problem, CppgcBoundedPageAllocator clears all
+ // pages before they are freed. This also includes protected guard pages, so
+ // CppgcBoundedPageAllocator needs to update permissions before clearing.
+ SetPermissions(address, size, Permission::kReadWrite);
+ memset(address, 0, size);
+ return v8::base::BoundedPageAllocator::FreePages(address, size);
+ }
+};
+
} // namespace
CagedHeap::CagedHeap(HeapBase* heap_base, PageAllocator* platform_allocator)
@@ -73,7 +94,7 @@ CagedHeap::CagedHeap(HeapBase* heap_base, PageAllocator* platform_allocator)
caged_heap_start -
reinterpret_cast<CagedAddress>(reserved_area_.address());
- bounded_allocator_ = std::make_unique<CagedHeap::AllocatorType>(
+ bounded_allocator_ = std::make_unique<CppgcBoundedPageAllocator>(
platform_allocator, caged_heap_start,
reserved_area_.size() - local_data_size_with_padding, kPageSize);
}
diff --git a/deps/v8/src/heap/cppgc/compactor.cc b/deps/v8/src/heap/cppgc/compactor.cc
index f4498e7fbc..5f68705014 100644
--- a/deps/v8/src/heap/cppgc/compactor.cc
+++ b/deps/v8/src/heap/cppgc/compactor.cc
@@ -15,6 +15,7 @@
#include "src/heap/cppgc/heap-base.h"
#include "src/heap/cppgc/heap-page.h"
#include "src/heap/cppgc/heap-space.h"
+#include "src/heap/cppgc/memory.h"
#include "src/heap/cppgc/object-poisoner.h"
#include "src/heap/cppgc/raw-heap.h"
#include "src/heap/cppgc/stats-collector.h"
@@ -129,7 +130,7 @@ void MovableReferences::AddOrFilter(MovableReference* slot) {
interior_movable_references_.find(slot));
interior_movable_references_.emplace(slot, nullptr);
#if DEBUG
- interior_slot_to_object_.emplace(slot, slot_header.Payload());
+ interior_slot_to_object_.emplace(slot, slot_header.ObjectStart());
#endif // DEBUG
}
@@ -144,8 +145,8 @@ void MovableReferences::Relocate(Address from, Address to) {
// find the corresponding slot A.x. Object A may be moved already and the
// memory may have been freed, which would result in a crash.
if (!interior_movable_references_.empty()) {
- const HeapObjectHeader& header = HeapObjectHeader::FromPayload(to);
- const size_t size = header.GetSize() - sizeof(HeapObjectHeader);
+ const HeapObjectHeader& header = HeapObjectHeader::FromObject(to);
+ const size_t size = header.ObjectSize();
RelocateInteriorReferences(from, to, size);
}
@@ -275,14 +276,14 @@ class CompactionState final {
// Return remaining available pages to the free page pool, decommitting
// them from the pagefile.
for (NormalPage* page : available_pages_) {
- SET_MEMORY_INACCESSIBLE(page->PayloadStart(), page->PayloadSize());
+ SetMemoryInaccessible(page->PayloadStart(), page->PayloadSize());
NormalPage::Destroy(page);
}
}
void FinishCompactingPage(NormalPage* page) {
-#if DEBUG || defined(LEAK_SANITIZER) || defined(ADDRESS_SANITIZER) || \
- defined(MEMORY_SANITIZER)
+#if DEBUG || defined(V8_USE_MEMORY_SANITIZER) || \
+ defined(V8_USE_ADDRESS_SANITIZER)
// Zap the unused portion, until it is either compacted into or freed.
if (current_page_ != page) {
ZapMemory(page->PayloadStart(), page->PayloadSize());
@@ -303,7 +304,7 @@ class CompactionState final {
current_page_->PayloadSize() - used_bytes_in_current_page_;
Address payload = current_page_->PayloadStart();
Address free_start = payload + used_bytes_in_current_page_;
- SET_MEMORY_INACCESSIBLE(free_start, freed_size);
+ SetMemoryInaccessible(free_start, freed_size);
space_->free_list().Add({free_start, freed_size});
current_page_->object_start_bitmap().SetBit(free_start);
}
@@ -329,7 +330,7 @@ void CompactPage(NormalPage* page, CompactionState& compaction_state) {
header_address < page->PayloadEnd();) {
HeapObjectHeader* header =
reinterpret_cast<HeapObjectHeader*>(header_address);
- size_t size = header->GetSize();
+ size_t size = header->AllocatedSize();
DCHECK_GT(size, 0u);
DCHECK_LT(size, kPageSize);
@@ -349,8 +350,8 @@ void CompactPage(NormalPage* page, CompactionState& compaction_state) {
// As compaction is under way, leave the freed memory accessible
// while compacting the rest of the page. We just zap the payload
// to catch out other finalizers trying to access it.
-#if DEBUG || defined(LEAK_SANITIZER) || defined(ADDRESS_SANITIZER) || \
- defined(MEMORY_SANITIZER)
+#if DEBUG || defined(V8_USE_MEMORY_SANITIZER) || \
+ defined(V8_USE_ADDRESS_SANITIZER)
ZapMemory(header, size);
#endif
header_address += size;
diff --git a/deps/v8/src/heap/cppgc/concurrent-marker.cc b/deps/v8/src/heap/cppgc/concurrent-marker.cc
index 34953b9ec3..6763515f28 100644
--- a/deps/v8/src/heap/cppgc/concurrent-marker.cc
+++ b/deps/v8/src/heap/cppgc/concurrent-marker.cc
@@ -125,7 +125,7 @@ void ConcurrentMarkingTask::ProcessWorklists(
BasePage::FromPayload(item.base_object_payload)
->SynchronizedLoad();
const HeapObjectHeader& header =
- HeapObjectHeader::FromPayload(item.base_object_payload);
+ HeapObjectHeader::FromObject(item.base_object_payload);
DCHECK(!header.IsInConstruction<AccessMode::kAtomic>());
DCHECK(header.IsMarked<AccessMode::kAtomic>());
concurrent_marking_state.AccountMarkedBytes(header);
diff --git a/deps/v8/src/heap/cppgc/explicit-management.cc b/deps/v8/src/heap/cppgc/explicit-management.cc
index b3ab5f5b51..6e327339aa 100644
--- a/deps/v8/src/heap/cppgc/explicit-management.cc
+++ b/deps/v8/src/heap/cppgc/explicit-management.cc
@@ -9,50 +9,46 @@
#include "src/heap/cppgc/heap-base.h"
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap-page.h"
-#include "src/heap/cppgc/sanitizers.h"
+#include "src/heap/cppgc/memory.h"
namespace cppgc {
namespace internal {
namespace {
-std::pair<bool, BasePage*> CanModifyObject(void* object) {
- // object is guaranteed to be of type GarbageCollected, so getting the
- // BasePage is okay for regular and large objects.
- auto* base_page = BasePage::FromPayload(object);
- auto* heap = base_page->heap();
+bool InGC(HeapHandle& heap_handle) {
+ const auto& heap = HeapBase::From(heap_handle);
// Whenever the GC is active, avoid modifying the object as it may mess with
// state that the GC needs.
- const bool in_gc = heap->in_atomic_pause() || heap->marker() ||
- heap->sweeper().IsSweepingInProgress();
- return {!in_gc, base_page};
+ return heap.in_atomic_pause() || heap.marker() ||
+ heap.sweeper().IsSweepingInProgress();
}
} // namespace
-void FreeUnreferencedObject(void* object) {
- bool can_free;
- BasePage* base_page;
- std::tie(can_free, base_page) = CanModifyObject(object);
- if (!can_free) {
+void FreeUnreferencedObject(HeapHandle& heap_handle, void* object) {
+ if (InGC(heap_handle)) {
return;
}
- auto& header = HeapObjectHeader::FromPayload(object);
+ auto& header = HeapObjectHeader::FromObject(object);
header.Finalize();
+ // `object` is guaranteed to be of type GarbageCollected, so getting the
+ // BasePage is okay for regular and large objects.
+ BasePage* base_page = BasePage::FromPayload(object);
if (base_page->is_large()) { // Large object.
base_page->space()->RemovePage(base_page);
base_page->heap()->stats_collector()->NotifyExplicitFree(
LargePage::From(base_page)->PayloadSize());
LargePage::Destroy(LargePage::From(base_page));
} else { // Regular object.
- const size_t header_size = header.GetSize();
+ const size_t header_size = header.AllocatedSize();
auto* normal_page = NormalPage::From(base_page);
auto& normal_space = *static_cast<NormalPageSpace*>(base_page->space());
auto& lab = normal_space.linear_allocation_buffer();
- ConstAddress payload_end = header.PayloadEnd();
- SET_MEMORY_INACCESSIBLE(&header, header_size);
+ ConstAddress payload_end = header.ObjectEnd();
+ SetMemoryInaccessible(&header, header_size);
if (payload_end == lab.start()) { // Returning to LAB.
lab.Set(reinterpret_cast<Address>(&header), lab.size() + header_size);
normal_page->object_start_bitmap().ClearBit(lab.start());
@@ -69,18 +65,18 @@ namespace {
bool Grow(HeapObjectHeader& header, BasePage& base_page, size_t new_size,
size_t size_delta) {
- DCHECK_GE(new_size, header.GetSize() + kAllocationGranularity);
+ DCHECK_GE(new_size, header.AllocatedSize() + kAllocationGranularity);
DCHECK_GE(size_delta, kAllocationGranularity);
DCHECK(!base_page.is_large());
auto& normal_space = *static_cast<NormalPageSpace*>(base_page.space());
auto& lab = normal_space.linear_allocation_buffer();
- if (lab.start() == header.PayloadEnd() && lab.size() >= size_delta) {
+ if (lab.start() == header.ObjectEnd() && lab.size() >= size_delta) {
// LABs are considered used memory which means that no allocated size
// adjustments are needed.
Address delta_start = lab.Allocate(size_delta);
- SET_MEMORY_ACCESSIBLE(delta_start, size_delta);
- header.SetSize(new_size);
+ SetMemoryAccessible(delta_start, size_delta);
+ header.SetAllocatedSize(new_size);
return true;
}
return false;
@@ -88,30 +84,30 @@ bool Grow(HeapObjectHeader& header, BasePage& base_page, size_t new_size,
bool Shrink(HeapObjectHeader& header, BasePage& base_page, size_t new_size,
size_t size_delta) {
- DCHECK_GE(header.GetSize(), new_size + kAllocationGranularity);
+ DCHECK_GE(header.AllocatedSize(), new_size + kAllocationGranularity);
DCHECK_GE(size_delta, kAllocationGranularity);
DCHECK(!base_page.is_large());
auto& normal_space = *static_cast<NormalPageSpace*>(base_page.space());
auto& lab = normal_space.linear_allocation_buffer();
- Address free_start = header.PayloadEnd() - size_delta;
- if (lab.start() == header.PayloadEnd()) {
+ Address free_start = header.ObjectEnd() - size_delta;
+ if (lab.start() == header.ObjectEnd()) {
DCHECK_EQ(free_start, lab.start() - size_delta);
// LABs are considered used memory which means that no allocated size
// adjustments are needed.
lab.Set(free_start, lab.size() + size_delta);
- SET_MEMORY_INACCESSIBLE(lab.start(), size_delta);
- header.SetSize(new_size);
+ SetMemoryInaccessible(lab.start(), size_delta);
+ header.SetAllocatedSize(new_size);
return true;
}
// Heuristic: Only return memory to the free list if the block is larger than
// the smallest size class.
if (size_delta >= ObjectAllocator::kSmallestSpaceSize) {
- SET_MEMORY_INACCESSIBLE(free_start, size_delta);
+ SetMemoryInaccessible(free_start, size_delta);
base_page.heap()->stats_collector()->NotifyExplicitFree(size_delta);
normal_space.free_list().Add({free_start, size_delta});
NormalPage::From(&base_page)->object_start_bitmap().SetBit(free_start);
- header.SetSize(new_size);
+ header.SetAllocatedSize(new_size);
}
// Return success in any case, as we want to avoid that embedders start
// copying memory because of small deltas.
@@ -121,10 +117,11 @@ bool Shrink(HeapObjectHeader& header, BasePage& base_page, size_t new_size,
} // namespace
bool Resize(void* object, size_t new_object_size) {
- bool can_resize;
- BasePage* base_page;
- std::tie(can_resize, base_page) = CanModifyObject(object);
- if (!can_resize) {
+ // `object` is guaranteed to be of type GarbageCollected, so getting the
+ // BasePage is okay for regular and large objects.
+ BasePage* base_page = BasePage::FromPayload(object);
+
+ if (InGC(*base_page->heap())) {
return false;
}
@@ -136,8 +133,8 @@ bool Resize(void* object, size_t new_object_size) {
const size_t new_size = RoundUp<kAllocationGranularity>(
sizeof(HeapObjectHeader) + new_object_size);
- auto& header = HeapObjectHeader::FromPayload(object);
- const size_t old_size = header.GetSize();
+ auto& header = HeapObjectHeader::FromObject(object);
+ const size_t old_size = header.AllocatedSize();
if (new_size > old_size) {
return Grow(header, *base_page, new_size, new_size - old_size);
diff --git a/deps/v8/src/heap/cppgc/free-list.cc b/deps/v8/src/heap/cppgc/free-list.cc
index 705d31725a..600e15312c 100644
--- a/deps/v8/src/heap/cppgc/free-list.cc
+++ b/deps/v8/src/heap/cppgc/free-list.cc
@@ -8,9 +8,9 @@
#include "include/cppgc/internal/logging.h"
#include "src/base/bits.h"
+#include "src/base/sanitizer/asan.h"
#include "src/heap/cppgc/globals.h"
#include "src/heap/cppgc/heap-object-header.h"
-#include "src/heap/cppgc/sanitizers.h"
namespace cppgc {
namespace internal {
@@ -132,7 +132,7 @@ FreeList::Block FreeList::Allocate(size_t allocation_size) {
// Final bucket candidate; check initial entry if it is able
// to service this allocation. Do not perform a linear scan,
// as it is considered too costly.
- if (!entry || entry->GetSize() < allocation_size) break;
+ if (!entry || entry->AllocatedSize() < allocation_size) break;
}
if (entry) {
if (!entry->Next()) {
@@ -141,7 +141,7 @@ FreeList::Block FreeList::Allocate(size_t allocation_size) {
}
entry->Unlink(&free_list_heads_[index]);
biggest_free_list_index_ = index;
- return {entry, entry->GetSize()};
+ return {entry, entry->AllocatedSize()};
}
}
biggest_free_list_index_ = index;
@@ -158,7 +158,7 @@ size_t FreeList::Size() const {
size_t size = 0;
for (auto* entry : free_list_heads_) {
while (entry) {
- size += entry->GetSize();
+ size += entry->AllocatedSize();
entry = entry->Next();
}
}
@@ -175,7 +175,7 @@ bool FreeList::ContainsForTesting(Block block) const {
for (Entry* entry = list; entry; entry = entry->Next()) {
if (entry <= block.address &&
(reinterpret_cast<Address>(block.address) + block.size <=
- reinterpret_cast<Address>(entry) + entry->GetSize()))
+ reinterpret_cast<Address>(entry) + entry->AllocatedSize()))
return true;
}
}
@@ -204,7 +204,7 @@ void FreeList::CollectStatistics(
size_t entry_size = 0;
for (Entry* entry = free_list_heads_[i]; entry; entry = entry->Next()) {
++entry_count;
- entry_size += entry->GetSize();
+ entry_size += entry->AllocatedSize();
}
bucket_size.push_back(static_cast<size_t>(1) << i);
free_count.push_back(entry_count);
diff --git a/deps/v8/src/heap/cppgc/gc-info-table.cc b/deps/v8/src/heap/cppgc/gc-info-table.cc
index 6b177848cb..7462ba8a21 100644
--- a/deps/v8/src/heap/cppgc/gc-info-table.cc
+++ b/deps/v8/src/heap/cppgc/gc-info-table.cc
@@ -35,8 +35,9 @@ PageAllocator* GetAllocator(PageAllocator* page_allocator) {
default_page_allocator;
page_allocator = default_page_allocator.get();
}
- // TODO(chromium:1056170): Wrap page_allocator into LsanPageAllocator when
- // running with LEAK_SANITIZER.
+ // No need to introduce LSAN support for PageAllocator, as `GCInfoTable` is
+ // already a leaky object and the table payload (`GCInfoTable::table_`) should
+ // not refer to dynamically allocated objects.
return page_allocator;
}
diff --git a/deps/v8/src/heap/cppgc/heap-base.cc b/deps/v8/src/heap/cppgc/heap-base.cc
index f89c4c9f11..c7664f09c6 100644
--- a/deps/v8/src/heap/cppgc/heap-base.cc
+++ b/deps/v8/src/heap/cppgc/heap-base.cc
@@ -5,8 +5,8 @@
#include "src/heap/cppgc/heap-base.h"
#include "include/cppgc/heap-consistency.h"
-#include "src/base/bounded-page-allocator.h"
#include "src/base/platform/platform.h"
+#include "src/base/sanitizer/lsan-page-allocator.h"
#include "src/heap/base/stack.h"
#include "src/heap/cppgc/globals.h"
#include "src/heap/cppgc/heap-object-header.h"
@@ -15,6 +15,7 @@
#include "src/heap/cppgc/heap-visitor.h"
#include "src/heap/cppgc/marker.h"
#include "src/heap/cppgc/marking-verifier.h"
+#include "src/heap/cppgc/object-view.h"
#include "src/heap/cppgc/page-memory.h"
#include "src/heap/cppgc/prefinalizer-handler.h"
#include "src/heap/cppgc/stats-collector.h"
@@ -35,13 +36,7 @@ class ObjectSizeCounter : private HeapVisitor<ObjectSizeCounter> {
private:
static size_t ObjectSize(const HeapObjectHeader* header) {
- const size_t size =
- header->IsLargeObject()
- ? static_cast<const LargePage*>(BasePage::FromPayload(header))
- ->PayloadSize()
- : header->GetSize();
- DCHECK_GE(size, sizeof(HeapObjectHeader));
- return size - sizeof(HeapObjectHeader);
+ return ObjectView(*header).Size();
}
bool VisitHeapObjectHeader(HeapObjectHeader* header) {
@@ -62,13 +57,16 @@ HeapBase::HeapBase(
std::unique_ptr<MetricRecorder> histogram_recorder)
: raw_heap_(this, custom_spaces),
platform_(std::move(platform)),
+#if defined(LEAK_SANITIZER)
+ lsan_page_allocator_(std::make_unique<v8::base::LsanPageAllocator>(
+ platform_->GetPageAllocator())),
+#endif // LEAK_SANITIZER
#if defined(CPPGC_CAGED_HEAP)
- caged_heap_(this, platform_->GetPageAllocator()),
+ caged_heap_(this, page_allocator()),
page_backend_(std::make_unique<PageBackend>(&caged_heap_.allocator())),
-#else
- page_backend_(
- std::make_unique<PageBackend>(platform_->GetPageAllocator())),
-#endif
+#else // !CPPGC_CAGED_HEAP
+ page_backend_(std::make_unique<PageBackend>(page_allocator())),
+#endif // !CPPGC_CAGED_HEAP
stats_collector_(std::make_unique<StatsCollector>(
std::move(histogram_recorder), platform_.get())),
stack_(std::make_unique<heap::base::Stack>(
@@ -85,6 +83,14 @@ HeapBase::HeapBase(
HeapBase::~HeapBase() = default;
+PageAllocator* HeapBase::page_allocator() const {
+#if defined(LEAK_SANITIZER)
+ return lsan_page_allocator_.get();
+#else // !LEAK_SANITIZER
+ return platform_->GetPageAllocator();
+#endif // !LEAK_SANITIZER
+}
+
size_t HeapBase::ObjectPayloadSize() const {
return ObjectSizeCounter().GetSize(const_cast<RawHeap*>(&raw_heap()));
}
diff --git a/deps/v8/src/heap/cppgc/heap-base.h b/deps/v8/src/heap/cppgc/heap-base.h
index f9bdb95c04..8136541718 100644
--- a/deps/v8/src/heap/cppgc/heap-base.h
+++ b/deps/v8/src/heap/cppgc/heap-base.h
@@ -19,6 +19,7 @@
#include "src/heap/cppgc/metric-recorder.h"
#include "src/heap/cppgc/object-allocator.h"
#include "src/heap/cppgc/process-heap-statistics.h"
+#include "src/heap/cppgc/process-heap.h"
#include "src/heap/cppgc/raw-heap.h"
#include "src/heap/cppgc/sweeper.h"
#include "v8config.h" // NOLINT(build/include_directory)
@@ -27,6 +28,12 @@
#include "src/heap/cppgc/caged-heap.h"
#endif
+namespace v8 {
+namespace base {
+class LsanPageAllocator;
+} // namespace base
+} // namespace v8
+
namespace heap {
namespace base {
class Stack;
@@ -152,6 +159,9 @@ class V8_EXPORT_PRIVATE HeapBase : public cppgc::HeapHandle {
size_t ObjectPayloadSize() const;
StackSupport stack_support() const { return stack_support_; }
+ const EmbedderStackState* override_stack_state() const {
+ return override_stack_state_.get();
+ }
void AdvanceIncrementalGarbageCollectionOnAllocationIfNeeded();
@@ -172,6 +182,11 @@ class V8_EXPORT_PRIVATE HeapBase : public cppgc::HeapHandle {
stack_state_of_prev_gc_ = stack_state;
}
+ uintptr_t stack_end_of_current_gc() const { return stack_end_of_current_gc_; }
+ void SetStackEndOfCurrentGC(uintptr_t stack_end) {
+ stack_end_of_current_gc_ = stack_end;
+ }
+
void SetInAtomicPauseForTesting(bool value) { in_atomic_pause_ = value; }
virtual void StartIncrementalGarbageCollectionForTesting() = 0;
@@ -189,11 +204,20 @@ class V8_EXPORT_PRIVATE HeapBase : public cppgc::HeapHandle {
void ExecutePreFinalizers();
+ PageAllocator* page_allocator() const;
+
RawHeap raw_heap_;
std::shared_ptr<cppgc::Platform> platform_;
+
+#if defined(LEAK_SANITIZER)
+ std::unique_ptr<v8::base::LsanPageAllocator> lsan_page_allocator_;
+#endif // LEAK_SANITIZER
+
+ HeapRegistry::Subscription heap_registry_subscription_{*this};
+
#if defined(CPPGC_CAGED_HEAP)
CagedHeap caged_heap_;
-#endif
+#endif // CPPGC_CAGED_HEAP
std::unique_ptr<PageBackend> page_backend_;
std::unique_ptr<StatsCollector> stats_collector_;
@@ -224,6 +248,10 @@ class V8_EXPORT_PRIVATE HeapBase : public cppgc::HeapHandle {
EmbedderStackState::kNoHeapPointers;
std::unique_ptr<EmbedderStackState> override_stack_state_;
+ // Marker that signals end of the interesting stack region in which on-heap
+ // pointers can be found.
+ uintptr_t stack_end_of_current_gc_ = 0;
+
bool in_atomic_pause_ = false;
friend class MarkerBase::IncrementalMarkingTask;
diff --git a/deps/v8/src/heap/cppgc/heap-object-header.cc b/deps/v8/src/heap/cppgc/heap-object-header.cc
index 0f5530114c..5ff0e230e7 100644
--- a/deps/v8/src/heap/cppgc/heap-object-header.cc
+++ b/deps/v8/src/heap/cppgc/heap-object-header.cc
@@ -6,9 +6,9 @@
#include "include/cppgc/internal/api-constants.h"
#include "src/base/macros.h"
+#include "src/base/sanitizer/asan.h"
#include "src/heap/cppgc/gc-info-table.h"
#include "src/heap/cppgc/heap-page.h"
-#include "src/heap/cppgc/sanitizers.h"
namespace cppgc {
namespace internal {
@@ -28,17 +28,17 @@ void HeapObjectHeader::Finalize() {
IsLargeObject()
? LargePage::From(BasePage::FromPayload(this))->ObjectSize()
: ObjectSize();
- ASAN_UNPOISON_MEMORY_REGION(Payload(), size);
+ ASAN_UNPOISON_MEMORY_REGION(ObjectStart(), size);
#endif // V8_USE_ADDRESS_SANITIZER
const GCInfo& gc_info = GlobalGCInfoTable::GCInfoFromIndex(GetGCInfoIndex());
if (gc_info.finalize) {
- gc_info.finalize(Payload());
+ gc_info.finalize(ObjectStart());
}
}
HeapObjectName HeapObjectHeader::GetName() const {
const GCInfo& gc_info = GlobalGCInfoTable::GCInfoFromIndex(GetGCInfoIndex());
- return gc_info.name(Payload());
+ return gc_info.name(ObjectStart());
}
} // namespace internal
diff --git a/deps/v8/src/heap/cppgc/heap-object-header.h b/deps/v8/src/heap/cppgc/heap-object-header.h
index 7e940ca347..a50d115e52 100644
--- a/deps/v8/src/heap/cppgc/heap-object-header.h
+++ b/deps/v8/src/heap/cppgc/heap-object-header.h
@@ -57,22 +57,22 @@ class HeapObjectHeader {
static constexpr size_t kMaxSize = (size_t{1} << kSizeLog2) - 1;
static constexpr uint16_t kLargeObjectSizeInHeader = 0;
- inline static HeapObjectHeader& FromPayload(void* address);
- inline static const HeapObjectHeader& FromPayload(const void* address);
+ inline static HeapObjectHeader& FromObject(void* address);
+ inline static const HeapObjectHeader& FromObject(const void* address);
inline HeapObjectHeader(size_t size, GCInfoIndex gc_info_index);
- // The payload starts directly after the HeapObjectHeader.
- inline Address Payload() const;
+ // The object starts directly after the HeapObjectHeader.
+ inline Address ObjectStart() const;
template <AccessMode mode = AccessMode::kNonAtomic>
- inline Address PayloadEnd() const;
+ inline Address ObjectEnd() const;
template <AccessMode mode = AccessMode::kNonAtomic>
inline GCInfoIndex GetGCInfoIndex() const;
template <AccessMode mode = AccessMode::kNonAtomic>
- inline size_t GetSize() const;
- inline void SetSize(size_t size);
+ inline size_t AllocatedSize() const;
+ inline void SetAllocatedSize(size_t size);
template <AccessMode mode = AccessMode::kNonAtomic>
inline size_t ObjectSize() const;
@@ -149,15 +149,15 @@ static_assert(kAllocationGranularity == sizeof(HeapObjectHeader),
"guarantee alignment");
// static
-HeapObjectHeader& HeapObjectHeader::FromPayload(void* payload) {
- return *reinterpret_cast<HeapObjectHeader*>(static_cast<Address>(payload) -
+HeapObjectHeader& HeapObjectHeader::FromObject(void* object) {
+ return *reinterpret_cast<HeapObjectHeader*>(static_cast<Address>(object) -
sizeof(HeapObjectHeader));
}
// static
-const HeapObjectHeader& HeapObjectHeader::FromPayload(const void* payload) {
+const HeapObjectHeader& HeapObjectHeader::FromObject(const void* object) {
return *reinterpret_cast<const HeapObjectHeader*>(
- static_cast<ConstAddress>(payload) - sizeof(HeapObjectHeader));
+ static_cast<ConstAddress>(object) - sizeof(HeapObjectHeader));
}
HeapObjectHeader::HeapObjectHeader(size_t size, GCInfoIndex gc_info_index) {
@@ -183,16 +183,16 @@ HeapObjectHeader::HeapObjectHeader(size_t size, GCInfoIndex gc_info_index) {
#endif // DEBUG
}
-Address HeapObjectHeader::Payload() const {
+Address HeapObjectHeader::ObjectStart() const {
return reinterpret_cast<Address>(const_cast<HeapObjectHeader*>(this)) +
sizeof(HeapObjectHeader);
}
template <AccessMode mode>
-Address HeapObjectHeader::PayloadEnd() const {
+Address HeapObjectHeader::ObjectEnd() const {
DCHECK(!IsLargeObject());
return reinterpret_cast<Address>(const_cast<HeapObjectHeader*>(this)) +
- GetSize<mode>();
+ AllocatedSize<mode>();
}
template <AccessMode mode>
@@ -203,7 +203,7 @@ GCInfoIndex HeapObjectHeader::GetGCInfoIndex() const {
}
template <AccessMode mode>
-size_t HeapObjectHeader::GetSize() const {
+size_t HeapObjectHeader::AllocatedSize() const {
// Size is immutable after construction while either marking or sweeping
// is running so relaxed load (if mode == kAtomic) is enough.
uint16_t encoded_low_value =
@@ -212,19 +212,21 @@ size_t HeapObjectHeader::GetSize() const {
return size;
}
-void HeapObjectHeader::SetSize(size_t size) {
+void HeapObjectHeader::SetAllocatedSize(size_t size) {
DCHECK(!IsMarked());
encoded_low_ = EncodeSize(size);
}
template <AccessMode mode>
size_t HeapObjectHeader::ObjectSize() const {
- return GetSize<mode>() - sizeof(HeapObjectHeader);
+ // The following DCHECK also fails for large objects.
+ DCHECK_GT(AllocatedSize<mode>(), sizeof(HeapObjectHeader));
+ return AllocatedSize<mode>() - sizeof(HeapObjectHeader);
}
template <AccessMode mode>
bool HeapObjectHeader::IsLargeObject() const {
- return GetSize<mode>() == kLargeObjectSizeInHeader;
+ return AllocatedSize<mode>() == kLargeObjectSizeInHeader;
}
template <AccessMode mode>
@@ -235,7 +237,8 @@ bool HeapObjectHeader::IsInConstruction() const {
}
void HeapObjectHeader::MarkAsFullyConstructed() {
- MakeGarbageCollectedTraitInternal::MarkObjectAsFullyConstructed(Payload());
+ MakeGarbageCollectedTraitInternal::MarkObjectAsFullyConstructed(
+ ObjectStart());
}
template <AccessMode mode>
@@ -282,7 +285,7 @@ template <AccessMode mode>
void HeapObjectHeader::Trace(Visitor* visitor) const {
const GCInfo& gc_info =
GlobalGCInfoTable::GCInfoFromIndex(GetGCInfoIndex<mode>());
- return gc_info.trace(visitor, Payload());
+ return gc_info.trace(visitor, ObjectStart());
}
template <AccessMode mode, HeapObjectHeader::EncodedHalf part,
diff --git a/deps/v8/src/heap/cppgc/heap-page.cc b/deps/v8/src/heap/cppgc/heap-page.cc
index d573d675ee..f65b3fed9b 100644
--- a/deps/v8/src/heap/cppgc/heap-page.cc
+++ b/deps/v8/src/heap/cppgc/heap-page.cc
@@ -69,6 +69,11 @@ ConstAddress BasePage::PayloadEnd() const {
return const_cast<BasePage*>(this)->PayloadEnd();
}
+size_t BasePage::AllocatedBytesAtLastGC() const {
+ return is_large() ? LargePage::From(this)->AllocatedBytesAtLastGC()
+ : NormalPage::From(this)->AllocatedBytesAtLastGC();
+}
+
HeapObjectHeader* BasePage::TryObjectHeaderFromInnerAddress(
void* address) const {
return const_cast<HeapObjectHeader*>(
diff --git a/deps/v8/src/heap/cppgc/heap-page.h b/deps/v8/src/heap/cppgc/heap-page.h
index 1a66b8593e..39d5e644ee 100644
--- a/deps/v8/src/heap/cppgc/heap-page.h
+++ b/deps/v8/src/heap/cppgc/heap-page.h
@@ -46,6 +46,10 @@ class V8_EXPORT_PRIVATE BasePage {
Address PayloadEnd();
ConstAddress PayloadEnd() const;
+ // Returns the size of live objects on the page at the last GC.
+ // The counter is update after sweeping.
+ size_t AllocatedBytesAtLastGC() const;
+
// |address| must refer to real object.
template <AccessMode = AccessMode::kNonAtomic>
HeapObjectHeader& ObjectHeaderFromInnerAddress(void* address) const;
@@ -107,7 +111,7 @@ class V8_EXPORT_PRIVATE NormalPage final : public BasePage {
bool operator!=(IteratorImpl other) const { return !(*this == other); }
IteratorImpl& operator++() {
- const size_t size = p_->GetSize();
+ const size_t size = p_->AllocatedSize();
DCHECK_EQ(0, (size & (sizeof(T) - 1)));
p_ += (size / sizeof(T));
if (reinterpret_cast<ConstAddress>(p_) == lab_start_) {
@@ -169,6 +173,12 @@ class V8_EXPORT_PRIVATE NormalPage final : public BasePage {
return (PayloadStart() <= address) && (address < PayloadEnd());
}
+ size_t AllocatedBytesAtLastGC() const { return allocated_bytes_at_last_gc_; }
+
+ void SetAllocatedBytesAtLastGC(size_t bytes) {
+ allocated_bytes_at_last_gc_ = bytes;
+ }
+
PlatformAwareObjectStartBitmap& object_start_bitmap() {
return object_start_bitmap_;
}
@@ -180,6 +190,7 @@ class V8_EXPORT_PRIVATE NormalPage final : public BasePage {
NormalPage(HeapBase* heap, BaseSpace* space);
~NormalPage();
+ size_t allocated_bytes_at_last_gc_ = 0;
PlatformAwareObjectStartBitmap object_start_bitmap_;
};
@@ -210,7 +221,12 @@ class V8_EXPORT_PRIVATE LargePage final : public BasePage {
ConstAddress PayloadEnd() const;
size_t PayloadSize() const { return payload_size_; }
- size_t ObjectSize() const { return payload_size_ - sizeof(HeapObjectHeader); }
+ size_t ObjectSize() const {
+ DCHECK_GT(payload_size_, sizeof(HeapObjectHeader));
+ return payload_size_ - sizeof(HeapObjectHeader);
+ }
+
+ size_t AllocatedBytesAtLastGC() const { return ObjectSize(); }
bool PayloadContains(ConstAddress address) const {
return (PayloadStart() <= address) && (address < PayloadEnd());
@@ -248,7 +264,7 @@ const HeapObjectHeader* ObjectHeaderFromInnerAddressImpl(const BasePage* page,
const HeapObjectHeader* header =
bitmap.FindHeader<mode>(static_cast<ConstAddress>(address));
DCHECK_LT(address, reinterpret_cast<ConstAddress>(header) +
- header->GetSize<AccessMode::kAtomic>());
+ header->AllocatedSize<AccessMode::kAtomic>());
return header;
}
diff --git a/deps/v8/src/heap/cppgc/heap-statistics-collector.cc b/deps/v8/src/heap/cppgc/heap-statistics-collector.cc
index 961148babd..ef283e856a 100644
--- a/deps/v8/src/heap/cppgc/heap-statistics-collector.cc
+++ b/deps/v8/src/heap/cppgc/heap-statistics-collector.cc
@@ -148,7 +148,7 @@ bool HeapStatisticsCollector::VisitHeapObjectHeader(HeapObjectHeader* header) {
DCHECK_NOT_NULL(current_space_stats_);
DCHECK_NOT_NULL(current_page_stats_);
if (header->IsFree()) return true;
- size_t object_size = header->GetSize();
+ size_t object_size = header->AllocatedSize();
RecordObjectType(current_space_stats_, header, object_size);
current_page_stats_->used_size_bytes += object_size;
return true;
diff --git a/deps/v8/src/heap/cppgc/heap.cc b/deps/v8/src/heap/cppgc/heap.cc
index c0c9cec929..dc127f8e51 100644
--- a/deps/v8/src/heap/cppgc/heap.cc
+++ b/deps/v8/src/heap/cppgc/heap.cc
@@ -176,6 +176,7 @@ void Heap::FinalizeGarbageCollection(Config::StackState stack_state) {
if (override_stack_state_) {
config_.stack_state = *override_stack_state_;
}
+ SetStackEndOfCurrentGC(v8::base::Stack::GetCurrentStackPosition());
in_atomic_pause_ = true;
{
// This guards atomic pause marking, meaning that no internal method or
@@ -188,7 +189,8 @@ void Heap::FinalizeGarbageCollection(Config::StackState stack_state) {
// TODO(chromium:1056170): replace build flag with dedicated flag.
#if DEBUG
MarkingVerifier verifier(*this);
- verifier.Run(config_.stack_state);
+ verifier.Run(config_.stack_state, stack_end_of_current_gc(),
+ stats_collector()->marked_bytes());
#endif
subtle::NoGarbageCollectionScope no_gc(*this);
diff --git a/deps/v8/src/heap/cppgc/liveness-broker.cc b/deps/v8/src/heap/cppgc/liveness-broker.cc
index 8c61268ba8..d3dd457e05 100644
--- a/deps/v8/src/heap/cppgc/liveness-broker.cc
+++ b/deps/v8/src/heap/cppgc/liveness-broker.cc
@@ -9,7 +9,7 @@
namespace cppgc {
bool LivenessBroker::IsHeapObjectAliveImpl(const void* payload) const {
- return internal::HeapObjectHeader::FromPayload(payload).IsMarked();
+ return internal::HeapObjectHeader::FromObject(payload).IsMarked();
}
namespace internal {
diff --git a/deps/v8/src/heap/cppgc/marker.cc b/deps/v8/src/heap/cppgc/marker.cc
index d30bb0a8ec..d26fd580df 100644
--- a/deps/v8/src/heap/cppgc/marker.cc
+++ b/deps/v8/src/heap/cppgc/marker.cc
@@ -191,7 +191,7 @@ MarkerBase::~MarkerBase() {
MarkingWorklists::EphemeronPairItem item;
while (mutator_marking_state_.discovered_ephemeron_pairs_worklist().Pop(
&item)) {
- DCHECK(!HeapObjectHeader::FromPayload(item.key).IsMarked());
+ DCHECK(!HeapObjectHeader::FromObject(item.key).IsMarked());
}
#else
marking_worklists_.discovered_ephemeron_pairs_worklist()->Clear();
@@ -231,6 +231,8 @@ void MarkerBase::StartMarking() {
}
void MarkerBase::EnterAtomicPause(MarkingConfig::StackState stack_state) {
+ StatsCollector::EnabledScope top_stats_scope(heap().stats_collector(),
+ StatsCollector::kAtomicMark);
StatsCollector::EnabledScope stats_scope(heap().stats_collector(),
StatsCollector::kMarkAtomicPrologue);
@@ -261,30 +263,38 @@ void MarkerBase::EnterAtomicPause(MarkingConfig::StackState stack_state) {
}
void MarkerBase::LeaveAtomicPause() {
- StatsCollector::EnabledScope stats_scope(heap().stats_collector(),
- StatsCollector::kMarkAtomicEpilogue);
- DCHECK(!incremental_marking_handle_);
- ResetRememberedSet(heap());
- heap().stats_collector()->NotifyMarkingCompleted(
- // GetOverallMarkedBytes also includes concurrently marked bytes.
- schedule_.GetOverallMarkedBytes());
- is_marking_ = false;
+ {
+ StatsCollector::EnabledScope top_stats_scope(heap().stats_collector(),
+ StatsCollector::kAtomicMark);
+ StatsCollector::EnabledScope stats_scope(
+ heap().stats_collector(), StatsCollector::kMarkAtomicEpilogue);
+ DCHECK(!incremental_marking_handle_);
+ ResetRememberedSet(heap());
+ heap().stats_collector()->NotifyMarkingCompleted(
+ // GetOverallMarkedBytes also includes concurrently marked bytes.
+ schedule_.GetOverallMarkedBytes());
+ is_marking_ = false;
+ }
{
// Weakness callbacks are forbidden from allocating objects.
cppgc::subtle::DisallowGarbageCollectionScope disallow_gc_scope(heap_);
ProcessWeakness();
}
+ // TODO(chromium:1056170): It would be better if the call to Unlock was
+ // covered by some cppgc scope.
g_process_mutex.Pointer()->Unlock();
heap().SetStackStateOfPrevGC(config_.stack_state);
}
void MarkerBase::FinishMarking(MarkingConfig::StackState stack_state) {
DCHECK(is_marking_);
- StatsCollector::EnabledScope stats_scope(heap().stats_collector(),
- StatsCollector::kAtomicMark);
EnterAtomicPause(stack_state);
- CHECK(AdvanceMarkingWithLimits(v8::base::TimeDelta::Max(), SIZE_MAX));
- mutator_marking_state_.Publish();
+ {
+ StatsCollector::EnabledScope stats_scope(heap().stats_collector(),
+ StatsCollector::kAtomicMark);
+ CHECK(AdvanceMarkingWithLimits(v8::base::TimeDelta::Max(), SIZE_MAX));
+ mutator_marking_state_.Publish();
+ }
LeaveAtomicPause();
}
@@ -367,6 +377,10 @@ bool MarkerBase::IncrementalMarkingStep(MarkingConfig::StackState stack_state) {
}
void MarkerBase::AdvanceMarkingOnAllocation() {
+ StatsCollector::EnabledScope stats_scope(heap().stats_collector(),
+ StatsCollector::kIncrementalMark);
+ StatsCollector::EnabledScope nested_scope(heap().stats_collector(),
+ StatsCollector::kMarkOnAllocation);
if (AdvanceMarkingWithLimits()) {
// Schedule another incremental task for finalizing without a stack.
ScheduleIncrementalMarkingTask();
@@ -458,7 +472,7 @@ bool MarkerBase::ProcessWorklistsWithDeadline(
mutator_marking_state_.marking_worklist(),
[this](const MarkingWorklists::MarkingItem& item) {
const HeapObjectHeader& header =
- HeapObjectHeader::FromPayload(item.base_object_payload);
+ HeapObjectHeader::FromObject(item.base_object_payload);
DCHECK(!header.IsInConstruction<AccessMode::kNonAtomic>());
DCHECK(header.IsMarked<AccessMode::kNonAtomic>());
mutator_marking_state_.AccountMarkedBytes(header);
diff --git a/deps/v8/src/heap/cppgc/marking-state.h b/deps/v8/src/heap/cppgc/marking-state.h
index 6e08fc3e10..c462746333 100644
--- a/deps/v8/src/heap/cppgc/marking-state.h
+++ b/deps/v8/src/heap/cppgc/marking-state.h
@@ -174,9 +174,9 @@ MarkingStateBase::MarkingStateBase(HeapBase& heap,
void MarkingStateBase::MarkAndPush(const void* object, TraceDescriptor desc) {
DCHECK_NOT_NULL(object);
- MarkAndPush(HeapObjectHeader::FromPayload(
- const_cast<void*>(desc.base_object_payload)),
- desc);
+ MarkAndPush(
+ HeapObjectHeader::FromObject(const_cast<void*>(desc.base_object_payload)),
+ desc);
}
void MarkingStateBase::MarkAndPush(HeapObjectHeader& header,
@@ -202,7 +202,7 @@ bool MarkingStateBase::MarkNoPush(HeapObjectHeader& header) {
void MarkingStateBase::MarkAndPush(HeapObjectHeader& header) {
MarkAndPush(
header,
- {header.Payload(),
+ {header.ObjectStart(),
GlobalGCInfoTable::GCInfoFromIndex(header.GetGCInfoIndex()).trace});
}
@@ -222,7 +222,7 @@ void MarkingStateBase::RegisterWeakReferenceIfNeeded(const void* object,
// Filter out already marked values. The write barrier for WeakMember
// ensures that any newly set value after this point is kept alive and does
// not require the callback.
- if (HeapObjectHeader::FromPayload(desc.base_object_payload)
+ if (HeapObjectHeader::FromObject(desc.base_object_payload)
.IsMarked<AccessMode::kAtomic>())
return;
RegisterWeakCallback(weak_callback, parameter);
@@ -245,7 +245,7 @@ void MarkingStateBase::ProcessWeakContainer(const void* object,
DCHECK_NOT_NULL(object);
HeapObjectHeader& header =
- HeapObjectHeader::FromPayload(const_cast<void*>(object));
+ HeapObjectHeader::FromObject(const_cast<void*>(object));
if (header.IsInConstruction<AccessMode::kAtomic>()) {
not_fully_constructed_worklist_.Push<AccessMode::kAtomic>(&header);
@@ -255,6 +255,7 @@ void MarkingStateBase::ProcessWeakContainer(const void* object,
// Only mark the container initially. Its buckets will be processed after
// marking.
if (!MarkNoPush(header)) return;
+
RegisterWeakContainer(header);
// Register final weak processing of the backing store.
@@ -264,7 +265,13 @@ void MarkingStateBase::ProcessWeakContainer(const void* object,
// the TraceDescriptor will be nullptr. For ephemerons the callback will be
// non-nullptr so that the container is traced and the ephemeron pairs are
// processed.
- if (desc.callback) PushMarked(header, desc);
+ if (desc.callback) {
+ PushMarked(header, desc);
+ } else {
+ // For weak containers, there's no trace callback and no processing loop to
+ // update the marked bytes, hence inline that here.
+ AccountMarkedBytes(header);
+ }
}
void MarkingStateBase::ProcessEphemeron(const void* key, const void* value,
@@ -273,7 +280,7 @@ void MarkingStateBase::ProcessEphemeron(const void* key, const void* value,
// Filter out already marked keys. The write barrier for WeakMember
// ensures that any newly set value after this point is kept alive and does
// not require the callback.
- if (HeapObjectHeader::FromPayload(key).IsMarked<AccessMode::kAtomic>()) {
+ if (HeapObjectHeader::FromObject(key).IsMarked<AccessMode::kAtomic>()) {
if (value_desc.base_object_payload) {
MarkAndPush(value_desc.base_object_payload, value_desc);
} else {
@@ -291,7 +298,7 @@ void MarkingStateBase::AccountMarkedBytes(const HeapObjectHeader& header) {
header.IsLargeObject<AccessMode::kAtomic>()
? reinterpret_cast<const LargePage*>(BasePage::FromPayload(&header))
->PayloadSize()
- : header.GetSize<AccessMode::kAtomic>());
+ : header.AllocatedSize<AccessMode::kAtomic>());
}
void MarkingStateBase::AccountMarkedBytes(size_t marked_bytes) {
@@ -308,7 +315,7 @@ class MutatorMarkingState : public MarkingStateBase {
return MutatorMarkingState::MarkingStateBase::MarkNoPush(header);
}
- inline void PushMarkedWeakContainer(HeapObjectHeader&);
+ inline void ReTraceMarkedWeakContainer(cppgc::Visitor&, HeapObjectHeader&);
inline void DynamicallyMarkAddress(ConstAddress);
@@ -343,13 +350,13 @@ class MutatorMarkingState : public MarkingStateBase {
} recently_retraced_weak_containers_;
};
-void MutatorMarkingState::PushMarkedWeakContainer(HeapObjectHeader& header) {
+void MutatorMarkingState::ReTraceMarkedWeakContainer(cppgc::Visitor& visitor,
+ HeapObjectHeader& header) {
DCHECK(weak_containers_worklist_.Contains(&header));
recently_retraced_weak_containers_.Insert(&header);
- PushMarked(
- header,
- {header.Payload(),
- GlobalGCInfoTable::GCInfoFromIndex(header.GetGCInfoIndex()).trace});
+ // Don't push to the marking worklist to avoid double accounting of marked
+ // bytes as the container is already accounted for.
+ header.Trace(&visitor);
}
void MutatorMarkingState::DynamicallyMarkAddress(ConstAddress address) {
@@ -359,7 +366,7 @@ void MutatorMarkingState::DynamicallyMarkAddress(ConstAddress address) {
DCHECK(!header.IsInConstruction());
if (MarkNoPush(header)) {
marking_worklist_.Push(
- {reinterpret_cast<void*>(header.Payload()),
+ {reinterpret_cast<void*>(header.ObjectStart()),
GlobalGCInfoTable::GCInfoFromIndex(header.GetGCInfoIndex()).trace});
}
}
@@ -371,7 +378,7 @@ void MutatorMarkingState::InvokeWeakRootsCallbackIfNeeded(
// the callback instead of registering it.
#if DEBUG
const HeapObjectHeader& header =
- HeapObjectHeader::FromPayload(desc.base_object_payload);
+ HeapObjectHeader::FromObject(desc.base_object_payload);
DCHECK_IMPLIES(header.IsInConstruction(), header.IsMarked());
#endif // DEBUG
weak_callback(LivenessBrokerFactory::Create(), parameter);
diff --git a/deps/v8/src/heap/cppgc/marking-verifier.cc b/deps/v8/src/heap/cppgc/marking-verifier.cc
index 42e3c4eb3e..2bbf8878e4 100644
--- a/deps/v8/src/heap/cppgc/marking-verifier.cc
+++ b/deps/v8/src/heap/cppgc/marking-verifier.cc
@@ -9,50 +9,81 @@
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap.h"
#include "src/heap/cppgc/marking-visitor.h"
+#include "src/heap/cppgc/object-view.h"
namespace cppgc {
namespace internal {
MarkingVerifierBase::MarkingVerifierBase(
- HeapBase& heap, std::unique_ptr<cppgc::Visitor> visitor)
+ HeapBase& heap, VerificationState& verification_state,
+ std::unique_ptr<cppgc::Visitor> visitor)
: ConservativeTracingVisitor(heap, *heap.page_backend(), *visitor.get()),
+ verification_state_(verification_state),
visitor_(std::move(visitor)) {}
-void MarkingVerifierBase::Run(Heap::Config::StackState stack_state) {
+void MarkingVerifierBase::Run(Heap::Config::StackState stack_state,
+ uintptr_t stack_end,
+ size_t expected_marked_bytes) {
Traverse(&heap_.raw_heap());
if (stack_state == Heap::Config::StackState::kMayContainHeapPointers) {
in_construction_objects_ = &in_construction_objects_stack_;
- heap_.stack()->IteratePointers(this);
- CHECK_EQ(in_construction_objects_stack_, in_construction_objects_heap_);
+ heap_.stack()->IteratePointersUnsafe(this, stack_end);
+ // The objects found through the unsafe iteration are only a subset of the
+ // regular iteration as they miss objects held alive only from callee-saved
+ // registers that are never pushed on the stack and SafeStack.
+ CHECK_LE(in_construction_objects_stack_.size(),
+ in_construction_objects_heap_.size());
+ for (auto* header : in_construction_objects_stack_) {
+ CHECK_NE(in_construction_objects_heap_.end(),
+ in_construction_objects_heap_.find(header));
+ }
}
+#ifdef CPPGC_VERIFY_LIVE_BYTES
+ CHECK_EQ(expected_marked_bytes, found_marked_bytes_);
+#endif // CPPGC_VERIFY_LIVE_BYTES
}
void VerificationState::VerifyMarked(const void* base_object_payload) const {
const HeapObjectHeader& child_header =
- HeapObjectHeader::FromPayload(base_object_payload);
+ HeapObjectHeader::FromObject(base_object_payload);
if (!child_header.IsMarked()) {
FATAL(
"MarkingVerifier: Encountered unmarked object.\n"
"#\n"
"# Hint:\n"
- "# %s\n"
- "# \\-> %s",
- parent_->GetName().value, child_header.GetName().value);
+ "# %s (%p)\n"
+ "# \\-> %s (%p)",
+ parent_ ? parent_->GetName().value : "Stack",
+ parent_ ? parent_->ObjectStart() : nullptr,
+ child_header.GetName().value, child_header.ObjectStart());
}
}
void MarkingVerifierBase::VisitInConstructionConservatively(
HeapObjectHeader& header, TraceConservativelyCallback callback) {
- CHECK(header.IsMarked());
if (in_construction_objects_->find(&header) !=
in_construction_objects_->end())
return;
in_construction_objects_->insert(&header);
+
+ // Stack case: Parent is stack and this is merely ensuring that the object
+ // itself is marked. If the object is marked, then it is being processed by
+ // the on-heap phase.
+ if (verification_state_.IsParentOnStack()) {
+ verification_state_.VerifyMarked(header.ObjectStart());
+ return;
+ }
+
+ // Heap case: Dispatching parent object that must be marked (pre-condition).
+ CHECK(header.IsMarked());
callback(this, header);
}
void MarkingVerifierBase::VisitPointer(const void* address) {
+ // Entry point for stack walk. The conservative visitor dispatches as follows:
+ // - Fully constructed objects: Visit()
+ // - Objects in construction: VisitInConstructionConservatively()
TraceConservativelyIfNeeded(address);
}
@@ -62,7 +93,7 @@ bool MarkingVerifierBase::VisitHeapObjectHeader(HeapObjectHeader* header) {
DCHECK(!header->IsFree());
- SetCurrentParent(header);
+ verification_state_.SetCurrentParent(header);
if (!header->IsInConstruction()) {
header->Trace(visitor_.get());
@@ -71,6 +102,10 @@ bool MarkingVerifierBase::VisitHeapObjectHeader(HeapObjectHeader* header) {
TraceConservativelyIfNeeded(*header);
}
+ found_marked_bytes_ += ObjectView(*header).Size() + sizeof(HeapObjectHeader);
+
+ verification_state_.SetCurrentParent(nullptr);
+
return true;
}
@@ -112,12 +147,8 @@ class VerificationVisitor final : public cppgc::Visitor {
} // namespace
MarkingVerifier::MarkingVerifier(HeapBase& heap_base)
- : MarkingVerifierBase(heap_base,
+ : MarkingVerifierBase(heap_base, state_,
std::make_unique<VerificationVisitor>(state_)) {}
-void MarkingVerifier::SetCurrentParent(const HeapObjectHeader* parent) {
- state_.SetCurrentParent(parent);
-}
-
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/src/heap/cppgc/marking-verifier.h b/deps/v8/src/heap/cppgc/marking-verifier.h
index eeced68449..95475f5191 100644
--- a/deps/v8/src/heap/cppgc/marking-verifier.h
+++ b/deps/v8/src/heap/cppgc/marking-verifier.h
@@ -21,6 +21,9 @@ class VerificationState {
void VerifyMarked(const void*) const;
void SetCurrentParent(const HeapObjectHeader* header) { parent_ = header; }
+ // No parent means parent was on stack.
+ bool IsParentOnStack() const { return !parent_; }
+
private:
const HeapObjectHeader* parent_ = nullptr;
};
@@ -37,12 +40,11 @@ class V8_EXPORT_PRIVATE MarkingVerifierBase
MarkingVerifierBase(const MarkingVerifierBase&) = delete;
MarkingVerifierBase& operator=(const MarkingVerifierBase&) = delete;
- void Run(Heap::Config::StackState);
+ void Run(Heap::Config::StackState, uintptr_t, size_t);
protected:
- MarkingVerifierBase(HeapBase&, std::unique_ptr<cppgc::Visitor>);
-
- virtual void SetCurrentParent(const HeapObjectHeader*) = 0;
+ MarkingVerifierBase(HeapBase&, VerificationState&,
+ std::unique_ptr<cppgc::Visitor>);
private:
void VisitInConstructionConservatively(HeapObjectHeader&,
@@ -51,12 +53,14 @@ class V8_EXPORT_PRIVATE MarkingVerifierBase
bool VisitHeapObjectHeader(HeapObjectHeader*);
+ VerificationState& verification_state_;
std::unique_ptr<cppgc::Visitor> visitor_;
std::unordered_set<const HeapObjectHeader*> in_construction_objects_heap_;
std::unordered_set<const HeapObjectHeader*> in_construction_objects_stack_;
std::unordered_set<const HeapObjectHeader*>* in_construction_objects_ =
&in_construction_objects_heap_;
+ size_t found_marked_bytes_ = 0;
};
class V8_EXPORT_PRIVATE MarkingVerifier final : public MarkingVerifierBase {
@@ -64,8 +68,6 @@ class V8_EXPORT_PRIVATE MarkingVerifier final : public MarkingVerifierBase {
explicit MarkingVerifier(HeapBase&);
~MarkingVerifier() final = default;
- void SetCurrentParent(const HeapObjectHeader*) final;
-
private:
VerificationState state_;
};
diff --git a/deps/v8/src/heap/cppgc/marking-visitor.cc b/deps/v8/src/heap/cppgc/marking-visitor.cc
index fb51ccc303..a740d33a84 100644
--- a/deps/v8/src/heap/cppgc/marking-visitor.cc
+++ b/deps/v8/src/heap/cppgc/marking-visitor.cc
@@ -56,7 +56,7 @@ void ConservativeMarkingVisitor::VisitFullyConstructedConservatively(
HeapObjectHeader& header) {
if (header.IsMarked()) {
if (marking_state_.IsMarkedWeakContainer(header))
- marking_state_.PushMarkedWeakContainer(header);
+ marking_state_.ReTraceMarkedWeakContainer(visitor_, header);
return;
}
ConservativeTracingVisitor::VisitFullyConstructedConservatively(header);
diff --git a/deps/v8/src/heap/cppgc/memory.cc b/deps/v8/src/heap/cppgc/memory.cc
new file mode 100644
index 0000000000..aa3baeaa8a
--- /dev/null
+++ b/deps/v8/src/heap/cppgc/memory.cc
@@ -0,0 +1,22 @@
+// Copyright 2021 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.
+
+#include "src/heap/cppgc/memory.h"
+
+#include <cstddef>
+
+#include "src/heap/cppgc/globals.h"
+
+namespace cppgc {
+namespace internal {
+
+void NoSanitizeMemset(void* address, char c, size_t bytes) {
+ volatile Address base = reinterpret_cast<Address>(address);
+ for (size_t i = 0; i < bytes; ++i) {
+ base[i] = c;
+ }
+}
+
+} // namespace internal
+} // namespace cppgc
diff --git a/deps/v8/src/heap/cppgc/memory.h b/deps/v8/src/heap/cppgc/memory.h
new file mode 100644
index 0000000000..d31af33ee3
--- /dev/null
+++ b/deps/v8/src/heap/cppgc/memory.h
@@ -0,0 +1,76 @@
+// Copyright 2021 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_HEAP_CPPGC_MEMORY_H_
+#define V8_HEAP_CPPGC_MEMORY_H_
+
+#include <cstddef>
+#include <cstdint>
+#include <cstring>
+
+#include "src/base/macros.h"
+#include "src/base/sanitizer/asan.h"
+#include "src/base/sanitizer/msan.h"
+
+namespace cppgc {
+namespace internal {
+
+V8_NOINLINE DISABLE_ASAN void NoSanitizeMemset(void* address, char c,
+ size_t bytes);
+
+inline void ZapMemory(void* address, size_t size) {
+ // The lowest bit of the zapped value should be 0 so that zapped object are
+ // never viewed as fully constructed objects.
+ static constexpr uint8_t kZappedValue = 0xdc;
+ memset(address, kZappedValue, size);
+}
+
+// Together `SetMemoryAccessible()` and `SetMemoryInaccessible()` form the
+// memory access model for allocation and free.
+V8_INLINE void SetMemoryAccessible(void* address, size_t size) {
+#if defined(V8_USE_MEMORY_SANITIZER)
+
+ MSAN_MEMORY_IS_INITIALIZED(address, size);
+
+#elif defined(V8_USE_ADDRESS_SANITIZER)
+
+ ASAN_UNPOISON_MEMORY_REGION(address, size);
+
+#elif DEBUG
+
+ memset(address, 0, size);
+
+#else // Release builds.
+
+ // Nothing to be done for release builds.
+
+#endif // Release builds.
+}
+
+V8_INLINE void SetMemoryInaccessible(void* address, size_t size) {
+#if defined(V8_USE_MEMORY_SANITIZER)
+
+ memset(address, 0, size);
+ MSAN_ALLOCATED_UNINITIALIZED_MEMORY(address, size);
+
+#elif defined(V8_USE_ADDRESS_SANITIZER)
+
+ NoSanitizeMemset(address, 0, size);
+ ASAN_POISON_MEMORY_REGION(address, size);
+
+#elif DEBUG
+
+ ::cppgc::internal::ZapMemory(address, size);
+
+#else // Release builds.
+
+ memset(address, 0, size);
+
+#endif // Release builds.
+}
+
+} // namespace internal
+} // namespace cppgc
+
+#endif // V8_HEAP_CPPGC_MEMORY_H_
diff --git a/deps/v8/src/heap/cppgc/metric-recorder.h b/deps/v8/src/heap/cppgc/metric-recorder.h
index 6e9d4d0787..6118627d01 100644
--- a/deps/v8/src/heap/cppgc/metric-recorder.h
+++ b/deps/v8/src/heap/cppgc/metric-recorder.h
@@ -14,7 +14,7 @@ class StatsCollector;
/**
* Base class used for reporting GC statistics histograms. Embedders interested
- * in collecting histgorams should implement the virtual AddMainThreadEvent
+ * in collecting histograms should implement the virtual AddMainThreadEvent
* methods below and pass an instance of the implementation during Heap
* creation.
*/
diff --git a/deps/v8/src/heap/cppgc/object-allocator.cc b/deps/v8/src/heap/cppgc/object-allocator.cc
index 366900b0f9..1197356c29 100644
--- a/deps/v8/src/heap/cppgc/object-allocator.cc
+++ b/deps/v8/src/heap/cppgc/object-allocator.cc
@@ -95,7 +95,7 @@ void* AllocateLargeObject(PageBackend* page_backend, LargePageSpace* space,
stats_collector->NotifyAllocation(size);
MarkRangeAsYoung(page, page->PayloadStart(), page->PayloadEnd());
- return header->Payload();
+ return header->ObjectStart();
}
} // namespace
diff --git a/deps/v8/src/heap/cppgc/object-allocator.h b/deps/v8/src/heap/cppgc/object-allocator.h
index 56faef1c83..dd99d83ba5 100644
--- a/deps/v8/src/heap/cppgc/object-allocator.h
+++ b/deps/v8/src/heap/cppgc/object-allocator.h
@@ -12,9 +12,9 @@
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap-page.h"
#include "src/heap/cppgc/heap-space.h"
+#include "src/heap/cppgc/memory.h"
#include "src/heap/cppgc/object-start-bitmap.h"
#include "src/heap/cppgc/raw-heap.h"
-#include "src/heap/cppgc/sanitizers.h"
namespace cppgc {
@@ -111,10 +111,10 @@ void* ObjectAllocator::AllocateObjectOnSpace(NormalPageSpace* space,
#if !defined(V8_USE_MEMORY_SANITIZER) && !defined(V8_USE_ADDRESS_SANITIZER) && \
DEBUG
// For debug builds, unzap only the payload.
- SET_MEMORY_ACCESSIBLE(static_cast<char*>(raw) + sizeof(HeapObjectHeader),
- size - sizeof(HeapObjectHeader));
+ SetMemoryAccessible(static_cast<char*>(raw) + sizeof(HeapObjectHeader),
+ size - sizeof(HeapObjectHeader));
#else
- SET_MEMORY_ACCESSIBLE(raw, size);
+ SetMemoryAccessible(raw, size);
#endif
auto* header = new (raw) HeapObjectHeader(size, gcinfo);
@@ -123,7 +123,7 @@ void* ObjectAllocator::AllocateObjectOnSpace(NormalPageSpace* space,
->object_start_bitmap()
.SetBit<AccessMode::kAtomic>(reinterpret_cast<ConstAddress>(header));
- return header->Payload();
+ return header->ObjectStart();
}
} // namespace internal
diff --git a/deps/v8/src/heap/cppgc/object-poisoner.h b/deps/v8/src/heap/cppgc/object-poisoner.h
index fd2462d669..632dea9b9d 100644
--- a/deps/v8/src/heap/cppgc/object-poisoner.h
+++ b/deps/v8/src/heap/cppgc/object-poisoner.h
@@ -5,10 +5,10 @@
#ifndef V8_HEAP_CPPGC_OBJECT_POISONER_H_
#define V8_HEAP_CPPGC_OBJECT_POISONER_H_
+#include "src/base/sanitizer/asan.h"
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap-page.h"
#include "src/heap/cppgc/heap-visitor.h"
-#include "src/heap/cppgc/sanitizers.h"
namespace cppgc {
namespace internal {
@@ -27,7 +27,7 @@ class UnmarkedObjectsPoisoner : public HeapVisitor<UnmarkedObjectsPoisoner> {
header->IsLargeObject()
? LargePage::From(BasePage::FromPayload(header))->ObjectSize()
: header->ObjectSize();
- ASAN_POISON_MEMORY_REGION(header->Payload(), size);
+ ASAN_POISON_MEMORY_REGION(header->ObjectStart(), size);
return true;
}
};
diff --git a/deps/v8/src/heap/cppgc/object-size-trait.cc b/deps/v8/src/heap/cppgc/object-size-trait.cc
index 11c50b3c4d..7b82239a61 100644
--- a/deps/v8/src/heap/cppgc/object-size-trait.cc
+++ b/deps/v8/src/heap/cppgc/object-size-trait.cc
@@ -6,6 +6,7 @@
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap-page.h"
+#include "src/heap/cppgc/object-view.h"
namespace cppgc {
namespace internal {
@@ -13,11 +14,7 @@ namespace internal {
// static
size_t BaseObjectSizeTrait::GetObjectSizeForGarbageCollected(
const void* object) {
- const auto& header = HeapObjectHeader::FromPayload(object);
- return header.IsLargeObject()
- ? static_cast<const LargePage*>(BasePage::FromPayload(&header))
- ->ObjectSize()
- : header.ObjectSize();
+ return ObjectView(HeapObjectHeader::FromObject(object)).Size();
}
// static
diff --git a/deps/v8/src/heap/cppgc/object-view.h b/deps/v8/src/heap/cppgc/object-view.h
new file mode 100644
index 0000000000..e83145cc31
--- /dev/null
+++ b/deps/v8/src/heap/cppgc/object-view.h
@@ -0,0 +1,54 @@
+// Copyright 2021 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_HEAP_CPPGC_OBJECT_VIEW_H_
+#define V8_HEAP_CPPGC_OBJECT_VIEW_H_
+
+#include "include/v8config.h"
+#include "src/heap/cppgc/heap-object-header.h"
+#include "src/heap/cppgc/heap-page.h"
+
+namespace cppgc {
+namespace internal {
+
+// ObjectView allows accessing a header within the bounds of the actual object.
+// It is not exposed externally and does not keep the underlying object alive.
+class ObjectView final {
+ public:
+ V8_INLINE explicit ObjectView(const HeapObjectHeader& header);
+
+ V8_INLINE Address Start() const;
+ V8_INLINE ConstAddress End() const;
+ V8_INLINE size_t Size() const;
+
+ private:
+ const HeapObjectHeader& header_;
+ const BasePage* base_page_;
+ const bool is_large_object_;
+};
+
+ObjectView::ObjectView(const HeapObjectHeader& header)
+ : header_(header),
+ base_page_(
+ BasePage::FromPayload(const_cast<HeapObjectHeader*>(&header_))),
+ is_large_object_(header_.IsLargeObject()) {
+ DCHECK_EQ(Start() + Size(), End());
+}
+
+Address ObjectView::Start() const { return header_.ObjectStart(); }
+
+ConstAddress ObjectView::End() const {
+ return is_large_object_ ? LargePage::From(base_page_)->PayloadEnd()
+ : header_.ObjectEnd();
+}
+
+size_t ObjectView::Size() const {
+ return is_large_object_ ? LargePage::From(base_page_)->ObjectSize()
+ : header_.ObjectSize();
+}
+
+} // namespace internal
+} // namespace cppgc
+
+#endif // V8_HEAP_CPPGC_OBJECT_VIEW_H_
diff --git a/deps/v8/src/heap/cppgc/page-memory.cc b/deps/v8/src/heap/cppgc/page-memory.cc
index 76b9458517..49b44aff91 100644
--- a/deps/v8/src/heap/cppgc/page-memory.cc
+++ b/deps/v8/src/heap/cppgc/page-memory.cc
@@ -5,7 +5,7 @@
#include "src/heap/cppgc/page-memory.h"
#include "src/base/macros.h"
-#include "src/heap/cppgc/sanitizers.h"
+#include "src/base/sanitizer/asan.h"
namespace cppgc {
namespace internal {
diff --git a/deps/v8/src/heap/cppgc/pointer-policies.cc b/deps/v8/src/heap/cppgc/pointer-policies.cc
index fdc435af17..23ad552c7a 100644
--- a/deps/v8/src/heap/cppgc/pointer-policies.cc
+++ b/deps/v8/src/heap/cppgc/pointer-policies.cc
@@ -4,21 +4,70 @@
#include "include/cppgc/internal/pointer-policies.h"
+#include "include/cppgc/internal/caged-heap-local-data.h"
#include "include/cppgc/internal/persistent-node.h"
+#include "src/base/logging.h"
#include "src/base/macros.h"
+#include "src/base/platform/platform.h"
+#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap-page.h"
#include "src/heap/cppgc/heap.h"
+#include "src/heap/cppgc/page-memory.h"
+#include "src/heap/cppgc/process-heap.h"
namespace cppgc {
namespace internal {
-EnabledCheckingPolicy::EnabledCheckingPolicy() {
- USE(impl_);
- // TODO(chromium:1056170): Save creating heap state.
+namespace {
+
+#if defined(DEBUG)
+bool IsOnStack(const void* address) {
+ return v8::base::Stack::GetCurrentStackPosition() <= address &&
+ address < v8::base::Stack::GetStackStart();
}
+#endif // defined(DEBUG)
+
+} // namespace
+
+void EnabledCheckingPolicy::CheckPointerImpl(const void* ptr,
+ bool points_to_payload) {
+ // `ptr` must not reside on stack.
+ DCHECK(!IsOnStack(ptr));
+ auto* base_page = BasePage::FromPayload(ptr);
+ // Large objects do not support mixins. This also means that `base_page` is
+ // valid for large objects.
+ DCHECK_IMPLIES(base_page->is_large(), points_to_payload);
+
+ // References cannot change their heap association which means that state is
+ // immutable once it is set.
+ if (!heap_) {
+ heap_ = base_page->heap();
+ if (!heap_->page_backend()->Lookup(reinterpret_cast<Address>(this))) {
+ // If `this` is not contained within the heap of `ptr`, we must deal with
+ // an on-stack or off-heap reference. For both cases there should be no
+ // heap registered.
+ CHECK(!HeapRegistry::TryFromManagedPointer(this));
+ }
+ }
+
+ // Member references should never mix heaps.
+ DCHECK_EQ(heap_, base_page->heap());
+
+ // Header checks.
+ const HeapObjectHeader* header = nullptr;
+ if (points_to_payload) {
+ header = &HeapObjectHeader::FromObject(ptr);
+ } else if (!heap_->sweeper().IsSweepingInProgress()) {
+ // Mixin case.
+ header = &base_page->ObjectHeaderFromInnerAddress(ptr);
+ DCHECK_LE(header->ObjectStart(), ptr);
+ DCHECK_GT(header->ObjectEnd(), ptr);
+ }
+ if (header) {
+ DCHECK(!header->IsFree());
+ }
-void EnabledCheckingPolicy::CheckPointer(const void* ptr) {
- // TODO(chromium:1056170): Provide implementation.
+ // TODO(v8:11749): Check mark bits when during pre-finalizer phase.
}
PersistentRegion& StrongPersistentPolicy::GetPersistentRegion(
diff --git a/deps/v8/src/heap/cppgc/process-heap-statistics.h b/deps/v8/src/heap/cppgc/process-heap-statistics.h
index 2d7bfa117f..da7683b616 100644
--- a/deps/v8/src/heap/cppgc/process-heap-statistics.h
+++ b/deps/v8/src/heap/cppgc/process-heap-statistics.h
@@ -15,7 +15,7 @@ class ProcessHeapStatisticsUpdater {
public:
// Allocation observer implementation for heaps should register to contribute
// to ProcessHeapStatistics. The heap is responsible for allocating and
- // registering the obsrever impl with its stats collector.
+ // registering the observer impl with its stats collector.
class AllocationObserverImpl final
: public StatsCollector::AllocationObserver {
public:
diff --git a/deps/v8/src/heap/cppgc/process-heap.cc b/deps/v8/src/heap/cppgc/process-heap.cc
index e084ea1264..6f8bb05c6c 100644
--- a/deps/v8/src/heap/cppgc/process-heap.cc
+++ b/deps/v8/src/heap/cppgc/process-heap.cc
@@ -4,10 +4,66 @@
#include "src/heap/cppgc/process-heap.h"
+#include <algorithm>
+#include <vector>
+
+#include "src/base/lazy-instance.h"
+#include "src/base/platform/mutex.h"
+#include "src/heap/cppgc/heap-base.h"
+#include "src/heap/cppgc/page-memory.h"
+
namespace cppgc {
namespace internal {
v8::base::LazyMutex g_process_mutex = LAZY_MUTEX_INITIALIZER;
+namespace {
+
+v8::base::LazyMutex g_heap_registry_mutex = LAZY_MUTEX_INITIALIZER;
+
+HeapRegistry::Storage& GetHeapRegistryStorage() {
+ static v8::base::LazyInstance<HeapRegistry::Storage>::type heap_registry =
+ LAZY_INSTANCE_INITIALIZER;
+ return *heap_registry.Pointer();
+}
+
+} // namespace
+
+// static
+void HeapRegistry::RegisterHeap(HeapBase& heap) {
+ v8::base::MutexGuard guard(g_heap_registry_mutex.Pointer());
+
+ auto& storage = GetHeapRegistryStorage();
+ DCHECK_EQ(storage.end(), std::find(storage.begin(), storage.end(), &heap));
+ storage.push_back(&heap);
+}
+
+// static
+void HeapRegistry::UnregisterHeap(HeapBase& heap) {
+ v8::base::MutexGuard guard(g_heap_registry_mutex.Pointer());
+
+ auto& storage = GetHeapRegistryStorage();
+ const auto pos = std::find(storage.begin(), storage.end(), &heap);
+ DCHECK_NE(storage.end(), pos);
+ storage.erase(pos);
+}
+
+// static
+HeapBase* HeapRegistry::TryFromManagedPointer(const void* needle) {
+ v8::base::MutexGuard guard(g_heap_registry_mutex.Pointer());
+
+ for (auto* heap : GetHeapRegistryStorage()) {
+ const auto address =
+ heap->page_backend()->Lookup(reinterpret_cast<ConstAddress>(needle));
+ if (address) return heap;
+ }
+ return nullptr;
+}
+
+// static
+const HeapRegistry::Storage& HeapRegistry::GetRegisteredHeapsForTesting() {
+ return GetHeapRegistryStorage();
+}
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/src/heap/cppgc/process-heap.h b/deps/v8/src/heap/cppgc/process-heap.h
index 8afc7c88eb..c581bad29c 100644
--- a/deps/v8/src/heap/cppgc/process-heap.h
+++ b/deps/v8/src/heap/cppgc/process-heap.h
@@ -5,13 +5,48 @@
#ifndef V8_HEAP_CPPGC_PROCESS_HEAP_H_
#define V8_HEAP_CPPGC_PROCESS_HEAP_H_
+#include <vector>
+
+#include "src/base/macros.h"
#include "src/base/platform/mutex.h"
namespace cppgc {
namespace internal {
+class HeapBase;
+
extern v8::base::LazyMutex g_process_mutex;
+class V8_EXPORT_PRIVATE HeapRegistry final {
+ public:
+ using Storage = std::vector<HeapBase*>;
+
+ class Subscription final {
+ public:
+ inline explicit Subscription(HeapBase&);
+ inline ~Subscription();
+
+ private:
+ HeapBase& heap_;
+ };
+
+ static HeapBase* TryFromManagedPointer(const void* needle);
+
+ static const Storage& GetRegisteredHeapsForTesting();
+
+ private:
+ static void RegisterHeap(HeapBase&);
+ static void UnregisterHeap(HeapBase&);
+};
+
+HeapRegistry::Subscription::Subscription(HeapBase& heap) : heap_(heap) {
+ HeapRegistry::RegisterHeap(heap_);
+}
+
+HeapRegistry::Subscription::~Subscription() {
+ HeapRegistry::UnregisterHeap(heap_);
+}
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/src/heap/cppgc/sanitizers.h b/deps/v8/src/heap/cppgc/sanitizers.h
deleted file mode 100644
index c3a8ff684d..0000000000
--- a/deps/v8/src/heap/cppgc/sanitizers.h
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2020 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_HEAP_CPPGC_SANITIZERS_H_
-#define V8_HEAP_CPPGC_SANITIZERS_H_
-
-#include <stdint.h>
-#include <string.h>
-
-#include "src/base/macros.h"
-
-//
-// TODO(chromium:1056170): Find a place in base for sanitizer support.
-//
-
-#ifdef V8_USE_ADDRESS_SANITIZER
-
-#include <sanitizer/asan_interface.h>
-
-#define NO_SANITIZE_ADDRESS __attribute__((no_sanitize_address))
-#if !defined(ASAN_POISON_MEMORY_REGION) || !defined(ASAN_UNPOISON_MEMORY_REGION)
-#error "ASAN_POISON_MEMORY_REGION must be defined"
-#endif
-
-#else // !V8_USE_ADDRESS_SANITIZER
-
-#define NO_SANITIZE_ADDRESS
-#define ASAN_POISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size))
-#define ASAN_UNPOISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size))
-
-#endif // V8_USE_ADDRESS_SANITIZER
-
-#ifdef V8_USE_MEMORY_SANITIZER
-
-#include <sanitizer/msan_interface.h>
-
-#define MSAN_POISON(addr, size) __msan_allocated_memory(addr, size)
-#define MSAN_UNPOISON(addr, size) __msan_unpoison(addr, size)
-
-#else // !V8_USE_MEMORY_SANITIZER
-
-#define MSAN_POISON(addr, size) ((void)(addr), (void)(size))
-#define MSAN_UNPOISON(addr, size) ((void)(addr), (void)(size))
-
-#endif // V8_USE_MEMORY_SANITIZER
-
-// API for newly allocated or reclaimed memory.
-#if defined(V8_USE_MEMORY_SANITIZER)
-#define SET_MEMORY_ACCESSIBLE(address, size) MSAN_UNPOISON(address, size);
-#define SET_MEMORY_INACCESSIBLE(address, size) \
- memset((address), 0, (size)); \
- MSAN_POISON((address), (size))
-#elif defined(V8_USE_ADDRESS_SANITIZER)
-#define SET_MEMORY_ACCESSIBLE(address, size) \
- ASAN_UNPOISON_MEMORY_REGION(address, size);
-#define SET_MEMORY_INACCESSIBLE(address, size) \
- memset((address), 0, (size)); \
- ASAN_POISON_MEMORY_REGION(address, size)
-#elif DEBUG
-#define SET_MEMORY_ACCESSIBLE(address, size) memset((address), 0, (size))
-#define SET_MEMORY_INACCESSIBLE(address, size) \
- ::cppgc::internal::ZapMemory((address), (size));
-#else
-#define SET_MEMORY_ACCESSIBLE(address, size) ((void)(address), (void)(size))
-#define SET_MEMORY_INACCESSIBLE(address, size) memset((address), 0, (size))
-#endif
-
-namespace cppgc {
-namespace internal {
-
-inline void ZapMemory(void* address, size_t size) {
- // The lowest bit of the zapped value should be 0 so that zapped object
- // are never viewed as fully constructed objects.
- static constexpr uint8_t kZappedValue = 0xdc;
- memset(address, kZappedValue, size);
-}
-
-} // namespace internal
-} // namespace cppgc
-
-#endif // V8_HEAP_CPPGC_SANITIZERS_H_
diff --git a/deps/v8/src/heap/cppgc/stats-collector.h b/deps/v8/src/heap/cppgc/stats-collector.h
index 2a8583c730..4709f22703 100644
--- a/deps/v8/src/heap/cppgc/stats-collector.h
+++ b/deps/v8/src/heap/cppgc/stats-collector.h
@@ -39,6 +39,7 @@ namespace internal {
V(MarkTransitiveClosure) \
V(MarkTransitiveClosureWithDeadline) \
V(MarkFlushEphemerons) \
+ V(MarkOnAllocation) \
V(MarkProcessBailOutObjects) \
V(MarkProcessMarkingWorklist) \
V(MarkProcessWriteBarrierWorklist) \
@@ -52,6 +53,7 @@ namespace internal {
V(MarkVisitRememberedSets) \
V(SweepInvokePreFinalizers) \
V(SweepIdleStep) \
+ V(SweepInTask) \
V(SweepOnAllocation) \
V(SweepFinalize)
@@ -256,7 +258,7 @@ class V8_EXPORT_PRIVATE StatsCollector final {
void NotifyAllocation(size_t);
void NotifyExplicitFree(size_t);
- // Safepoints should only be invoked when garabge collections are possible.
+ // Safepoints should only be invoked when garbage collections are possible.
// This is necessary as increments and decrements are reported as close to
// their actual allocation/reclamation as possible.
void NotifySafePointForConservativeCollection();
diff --git a/deps/v8/src/heap/cppgc/sweeper.cc b/deps/v8/src/heap/cppgc/sweeper.cc
index 937a52afc5..3e740f7924 100644
--- a/deps/v8/src/heap/cppgc/sweeper.cc
+++ b/deps/v8/src/heap/cppgc/sweeper.cc
@@ -18,10 +18,10 @@
#include "src/heap/cppgc/heap-page.h"
#include "src/heap/cppgc/heap-space.h"
#include "src/heap/cppgc/heap-visitor.h"
+#include "src/heap/cppgc/memory.h"
#include "src/heap/cppgc/object-poisoner.h"
#include "src/heap/cppgc/object-start-bitmap.h"
#include "src/heap/cppgc/raw-heap.h"
-#include "src/heap/cppgc/sanitizers.h"
#include "src/heap/cppgc/stats-collector.h"
#include "src/heap/cppgc/task-handle.h"
@@ -133,7 +133,7 @@ class InlinedFinalizationBuilder final {
void AddFinalizer(HeapObjectHeader* header, size_t size) {
header->Finalize();
- SET_MEMORY_INACCESSIBLE(header, size);
+ SetMemoryInaccessible(header, size);
}
void AddFreeListEntry(Address start, size_t size) {
@@ -161,10 +161,7 @@ class DeferredFinalizationBuilder final {
result_.unfinalized_objects.push_back({header});
found_finalizer_ = true;
} else {
- // Unmarked memory may have been poisoned. In the non-concurrent case this
- // is taken care of by finalizing a header.
- ASAN_UNPOISON_MEMORY_REGION(header, size);
- SET_MEMORY_INACCESSIBLE(header, size);
+ SetMemoryInaccessible(header, size);
}
}
@@ -197,15 +194,16 @@ typename FinalizationBuilder::ResultType SweepNormalPage(NormalPage* page) {
bitmap.Clear();
size_t largest_new_free_list_entry = 0;
+ size_t live_bytes = 0;
Address start_of_gap = page->PayloadStart();
for (Address begin = page->PayloadStart(), end = page->PayloadEnd();
begin != end;) {
HeapObjectHeader* header = reinterpret_cast<HeapObjectHeader*>(begin);
- const size_t size = header->GetSize();
+ const size_t size = header->AllocatedSize();
// Check if this is a free list entry.
if (header->IsFree<kAtomicAccess>()) {
- SET_MEMORY_INACCESSIBLE(header, std::min(kFreeListEntrySize, size));
+ SetMemoryInaccessible(header, std::min(kFreeListEntrySize, size));
begin += size;
continue;
}
@@ -229,6 +227,7 @@ typename FinalizationBuilder::ResultType SweepNormalPage(NormalPage* page) {
bitmap.SetBit(begin);
begin += size;
start_of_gap = begin;
+ live_bytes += size;
}
if (start_of_gap != page->PayloadStart() &&
@@ -237,6 +236,7 @@ typename FinalizationBuilder::ResultType SweepNormalPage(NormalPage* page) {
start_of_gap, static_cast<size_t>(page->PayloadEnd() - start_of_gap));
bitmap.SetBit(start_of_gap);
}
+ page->SetAllocatedBytesAtLastGC(live_bytes);
const bool is_empty = (start_of_gap == page->PayloadStart());
return builder.GetResult(is_empty, largest_new_free_list_entry);
@@ -290,9 +290,9 @@ class SweepFinalizer final {
// Call finalizers.
for (HeapObjectHeader* object : page_state->unfinalized_objects) {
- const size_t size = object->GetSize();
+ const size_t size = object->AllocatedSize();
object->Finalize();
- SET_MEMORY_INACCESSIBLE(object, size);
+ SetMemoryInaccessible(object, size);
}
// Unmap page if empty.
@@ -665,6 +665,33 @@ class Sweeper::SweeperImpl final {
bool IsSweepingInProgress() const { return is_in_progress_; }
+ bool PerformSweepOnMutatorThread(double deadline_in_seconds,
+ StatsCollector::ScopeId internal_scope_id) {
+ if (!is_in_progress_) return true;
+
+ MutatorThreadSweepingScope sweeping_in_progresss(*this);
+
+ bool sweep_complete;
+ {
+ StatsCollector::EnabledScope stats_scope(
+ stats_collector_, StatsCollector::kIncrementalSweep);
+
+ MutatorThreadSweeper sweeper(&space_states_, platform_);
+ {
+ StatsCollector::EnabledScope stats_scope(
+ stats_collector_, internal_scope_id, "deltaInSeconds",
+ deadline_in_seconds - platform_->MonotonicallyIncreasingTime());
+
+ sweep_complete = sweeper.SweepWithDeadline(deadline_in_seconds);
+ }
+ if (sweep_complete) {
+ FinalizeSweep();
+ }
+ }
+ if (sweep_complete) NotifyDone();
+ return sweep_complete;
+ }
+
private:
class MutatorThreadSweepingScope final {
public:
@@ -701,33 +728,12 @@ class Sweeper::SweeperImpl final {
private:
void Run(double deadline_in_seconds) override {
- if (handle_.IsCanceled() || !sweeper_->is_in_progress_) return;
+ if (handle_.IsCanceled()) return;
- MutatorThreadSweepingScope sweeping_in_progresss(*sweeper_);
-
- bool sweep_complete;
- {
- StatsCollector::EnabledScope stats_scope(
- sweeper_->stats_collector_, StatsCollector::kIncrementalSweep);
-
- MutatorThreadSweeper sweeper(&sweeper_->space_states_,
- sweeper_->platform_);
- {
- StatsCollector::EnabledScope stats_scope(
- sweeper_->stats_collector_, StatsCollector::kSweepIdleStep,
- "idleDeltaInSeconds",
- (deadline_in_seconds -
- sweeper_->platform_->MonotonicallyIncreasingTime()));
-
- sweep_complete = sweeper.SweepWithDeadline(deadline_in_seconds);
- }
- if (sweep_complete) {
- sweeper_->FinalizeSweep();
- } else {
- sweeper_->ScheduleIncrementalSweeping();
- }
+ if (!sweeper_->PerformSweepOnMutatorThread(
+ deadline_in_seconds, StatsCollector::kSweepIdleStep)) {
+ sweeper_->ScheduleIncrementalSweeping();
}
- if (sweep_complete) sweeper_->NotifyDone();
}
Handle GetHandle() const { return handle_; }
@@ -807,5 +813,10 @@ bool Sweeper::IsSweepingInProgress() const {
return impl_->IsSweepingInProgress();
}
+bool Sweeper::PerformSweepOnMutatorThread(double deadline_in_seconds) {
+ return impl_->PerformSweepOnMutatorThread(deadline_in_seconds,
+ StatsCollector::kSweepInTask);
+}
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/src/heap/cppgc/sweeper.h b/deps/v8/src/heap/cppgc/sweeper.h
index 4c77ec6917..a13962aa91 100644
--- a/deps/v8/src/heap/cppgc/sweeper.h
+++ b/deps/v8/src/heap/cppgc/sweeper.h
@@ -9,6 +9,7 @@
#include "include/cppgc/heap.h"
#include "src/base/macros.h"
+#include "src/base/platform/time.h"
namespace cppgc {
@@ -49,6 +50,9 @@ class V8_EXPORT_PRIVATE Sweeper final {
bool IsSweepingOnMutatorThread() const;
bool IsSweepingInProgress() const;
+ // Assist with sweeping. Returns true if sweeping is done.
+ bool PerformSweepOnMutatorThread(double deadline_in_seconds);
+
private:
void WaitForConcurrentSweepingForTesting();
diff --git a/deps/v8/src/heap/cppgc/trace-trait.cc b/deps/v8/src/heap/cppgc/trace-trait.cc
index bf3759881b..df14e3698b 100644
--- a/deps/v8/src/heap/cppgc/trace-trait.cc
+++ b/deps/v8/src/heap/cppgc/trace-trait.cc
@@ -18,9 +18,10 @@ TraceDescriptor TraceTraitFromInnerAddressImpl::GetTraceDescriptor(
page->SynchronizedLoad();
const HeapObjectHeader& header =
page->ObjectHeaderFromInnerAddress<AccessMode::kAtomic>(address);
- return {header.Payload(), GlobalGCInfoTable::GCInfoFromIndex(
- header.GetGCInfoIndex<AccessMode::kAtomic>())
- .trace};
+ return {header.ObjectStart(),
+ GlobalGCInfoTable::GCInfoFromIndex(
+ header.GetGCInfoIndex<AccessMode::kAtomic>())
+ .trace};
}
} // namespace internal
diff --git a/deps/v8/src/heap/cppgc/visitor.cc b/deps/v8/src/heap/cppgc/visitor.cc
index 33786f6fce..9d90e4ab3e 100644
--- a/deps/v8/src/heap/cppgc/visitor.cc
+++ b/deps/v8/src/heap/cppgc/visitor.cc
@@ -4,11 +4,12 @@
#include "src/heap/cppgc/visitor.h"
+#include "src/base/sanitizer/msan.h"
#include "src/heap/cppgc/gc-info-table.h"
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap-page.h"
+#include "src/heap/cppgc/object-view.h"
#include "src/heap/cppgc/page-memory.h"
-#include "src/heap/cppgc/sanitizers.h"
namespace cppgc {
@@ -29,15 +30,15 @@ namespace {
void TraceConservatively(ConservativeTracingVisitor* conservative_visitor,
const HeapObjectHeader& header) {
- Address* payload = reinterpret_cast<Address*>(header.Payload());
- const size_t payload_size = header.GetSize();
- for (size_t i = 0; i < (payload_size / sizeof(Address)); ++i) {
- Address maybe_ptr = payload[i];
+ const auto object_view = ObjectView(header);
+ Address* object = reinterpret_cast<Address*>(object_view.Start());
+ for (size_t i = 0; i < (object_view.Size() / sizeof(Address)); ++i) {
+ Address maybe_ptr = object[i];
#if defined(MEMORY_SANITIZER)
- // |payload| may be uninitialized by design or just contain padding bytes.
+ // |object| may be uninitialized by design or just contain padding bytes.
// Copy into a local variable that is not poisoned for conservative marking.
// Copy into a temporary variable to maintain the original MSAN state.
- MSAN_UNPOISON(&maybe_ptr, sizeof(maybe_ptr));
+ MSAN_MEMORY_IS_INITIALIZED(&maybe_ptr, sizeof(maybe_ptr));
#endif
if (maybe_ptr) {
conservative_visitor->TraceConservativelyIfNeeded(maybe_ptr);
@@ -49,8 +50,6 @@ void TraceConservatively(ConservativeTracingVisitor* conservative_visitor,
void ConservativeTracingVisitor::TraceConservativelyIfNeeded(
const void* address) {
- // TODO(chromium:1056170): Add page bloom filter
-
const BasePage* page = reinterpret_cast<const BasePage*>(
page_backend_.Lookup(static_cast<ConstAddress>(address)));
@@ -78,8 +77,8 @@ void ConservativeTracingVisitor::TraceConservativelyIfNeeded(
void ConservativeTracingVisitor::VisitFullyConstructedConservatively(
HeapObjectHeader& header) {
visitor_.Visit(
- header.Payload(),
- {header.Payload(),
+ header.ObjectStart(),
+ {header.ObjectStart(),
GlobalGCInfoTable::GCInfoFromIndex(header.GetGCInfoIndex()).trace});
}
diff --git a/deps/v8/src/heap/embedder-tracing.cc b/deps/v8/src/heap/embedder-tracing.cc
index 4fd747a964..72bdde571a 100644
--- a/deps/v8/src/heap/embedder-tracing.cc
+++ b/deps/v8/src/heap/embedder-tracing.cc
@@ -17,6 +17,7 @@ void LocalEmbedderHeapTracer::SetRemoteTracer(EmbedderHeapTracer* tracer) {
if (remote_tracer_) remote_tracer_->isolate_ = nullptr;
remote_tracer_ = tracer;
+ default_embedder_roots_handler_.SetTracer(tracer);
if (remote_tracer_)
remote_tracer_->isolate_ = reinterpret_cast<v8::Isolate*>(isolate_);
}
@@ -75,9 +76,8 @@ void LocalEmbedderHeapTracer::SetEmbedderStackStateForNextFinalization(
if (!InUse()) return;
embedder_stack_state_ = stack_state;
- if (EmbedderHeapTracer::EmbedderStackState::kNoHeapPointers == stack_state) {
- remote_tracer()->NotifyEmptyEmbedderStack();
- }
+ if (EmbedderHeapTracer::EmbedderStackState::kNoHeapPointers == stack_state)
+ NotifyEmptyEmbedderStack();
}
namespace {
@@ -164,5 +164,33 @@ void LocalEmbedderHeapTracer::StartIncrementalMarkingIfNeeded() {
}
}
+void LocalEmbedderHeapTracer::NotifyEmptyEmbedderStack() {
+ auto* overriden_stack_state = isolate_->heap()->overriden_stack_state();
+ if (overriden_stack_state &&
+ (*overriden_stack_state ==
+ cppgc::EmbedderStackState::kMayContainHeapPointers))
+ return;
+
+ isolate_->global_handles()->NotifyEmptyEmbedderStack();
+}
+
+bool DefaultEmbedderRootsHandler::IsRoot(
+ const v8::TracedReference<v8::Value>& handle) {
+ return !tracer_ || tracer_->IsRootForNonTracingGC(handle);
+}
+
+bool DefaultEmbedderRootsHandler::IsRoot(
+ const v8::TracedGlobal<v8::Value>& handle) {
+ return !tracer_ || tracer_->IsRootForNonTracingGC(handle);
+}
+
+void DefaultEmbedderRootsHandler::ResetRoot(
+ const v8::TracedReference<v8::Value>& handle) {
+ // Resetting is only called when IsRoot() returns false which
+ // can only happen the EmbedderHeapTracer is set on API level.
+ DCHECK(tracer_);
+ tracer_->ResetHandleInNonTracingGC(handle);
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/heap/embedder-tracing.h b/deps/v8/src/heap/embedder-tracing.h
index 8a1b14a32b..befb1a7e7a 100644
--- a/deps/v8/src/heap/embedder-tracing.h
+++ b/deps/v8/src/heap/embedder-tracing.h
@@ -16,6 +16,19 @@ namespace internal {
class Heap;
class JSObject;
+class V8_EXPORT_PRIVATE DefaultEmbedderRootsHandler final
+ : public EmbedderRootsHandler {
+ public:
+ bool IsRoot(const v8::TracedReference<v8::Value>& handle) final;
+ bool IsRoot(const v8::TracedGlobal<v8::Value>& handle) final;
+ void ResetRoot(const v8::TracedReference<v8::Value>& handle) final;
+
+ void SetTracer(EmbedderHeapTracer* tracer) { tracer_ = tracer; }
+
+ private:
+ EmbedderHeapTracer* tracer_ = nullptr;
+};
+
class V8_EXPORT_PRIVATE LocalEmbedderHeapTracer final {
public:
using WrapperInfo = std::pair<void*, void*>;
@@ -74,21 +87,6 @@ class V8_EXPORT_PRIVATE LocalEmbedderHeapTracer final {
bool Trace(double deadline);
bool IsRemoteTracingDone();
- bool IsRootForNonTracingGC(const v8::TracedGlobal<v8::Value>& handle) {
- return !InUse() || remote_tracer_->IsRootForNonTracingGC(handle);
- }
-
- bool IsRootForNonTracingGC(const v8::TracedReference<v8::Value>& handle) {
- return !InUse() || remote_tracer_->IsRootForNonTracingGC(handle);
- }
-
- void ResetHandleInNonTracingGC(const v8::TracedReference<v8::Value>& handle) {
- // Resetting is only called when IsRootForNonTracingGC returns false which
- // can only happen the EmbedderHeapTracer is set on API level.
- DCHECK(InUse());
- remote_tracer_->ResetHandleInNonTracingGC(handle);
- }
-
bool ShouldFinalizeIncrementalMarking() {
return !FLAG_incremental_marking_wrappers || !InUse() ||
(IsRemoteTracingDone() && embedder_worklist_empty_);
@@ -130,6 +128,12 @@ class V8_EXPORT_PRIVATE LocalEmbedderHeapTracer final {
void UpdateRemoteStats(size_t, double);
+ DefaultEmbedderRootsHandler& default_embedder_roots_handler() {
+ return default_embedder_roots_handler_;
+ }
+
+ void NotifyEmptyEmbedderStack();
+
private:
static constexpr size_t kEmbedderAllocatedThreshold = 128 * KB;
@@ -147,6 +151,7 @@ class V8_EXPORT_PRIVATE LocalEmbedderHeapTracer final {
Isolate* const isolate_;
EmbedderHeapTracer* remote_tracer_ = nullptr;
+ DefaultEmbedderRootsHandler default_embedder_roots_handler_;
EmbedderHeapTracer::EmbedderStackState embedder_stack_state_ =
EmbedderHeapTracer::EmbedderStackState::kMayContainHeapPointers;
@@ -183,11 +188,8 @@ class V8_EXPORT_PRIVATE V8_NODISCARD EmbedderStackStateScope final {
: local_tracer_(local_tracer),
old_stack_state_(local_tracer_->embedder_stack_state_) {
local_tracer_->embedder_stack_state_ = stack_state;
- if (EmbedderHeapTracer::EmbedderStackState::kNoHeapPointers ==
- stack_state) {
- if (local_tracer->remote_tracer())
- local_tracer->remote_tracer()->NotifyEmptyEmbedderStack();
- }
+ if (EmbedderHeapTracer::EmbedderStackState::kNoHeapPointers == stack_state)
+ local_tracer_->NotifyEmptyEmbedderStack();
}
~EmbedderStackStateScope() {
diff --git a/deps/v8/src/heap/factory-base-inl.h b/deps/v8/src/heap/factory-base-inl.h
index 6f218b8248..6c1cede212 100644
--- a/deps/v8/src/heap/factory-base-inl.h
+++ b/deps/v8/src/heap/factory-base-inl.h
@@ -6,9 +6,10 @@
#define V8_HEAP_FACTORY_BASE_INL_H_
#include "src/heap/factory-base.h"
-
#include "src/numbers/conversions.h"
#include "src/objects/heap-number.h"
+#include "src/objects/map.h"
+#include "src/objects/slots-inl.h"
#include "src/objects/smi.h"
#include "src/roots/roots.h"
@@ -93,6 +94,29 @@ Handle<HeapNumber> FactoryBase<Impl>::NewHeapNumberWithHoleNaN() {
return NewHeapNumberFromBits<allocation>(kHoleNanInt64);
}
+template <typename Impl>
+template <typename StructType>
+StructType FactoryBase<Impl>::NewStructInternal(InstanceType type,
+ AllocationType allocation) {
+ ReadOnlyRoots roots = read_only_roots();
+ Map map = Map::GetInstanceTypeMap(roots, type);
+ int size = StructType::kSize;
+ return StructType::cast(NewStructInternal(roots, map, size, allocation));
+}
+
+template <typename Impl>
+Struct FactoryBase<Impl>::NewStructInternal(ReadOnlyRoots roots, Map map,
+ int size,
+ AllocationType allocation) {
+ DCHECK_EQ(size, map.instance_size());
+ HeapObject result = AllocateRawWithImmortalMap(size, allocation, map);
+ Struct str = Struct::cast(result);
+ Object value = roots.undefined_value();
+ int length = (size >> kTaggedSizeLog2) - 1;
+ MemsetTagged(str.RawField(Struct::kHeaderSize), value, length);
+ return str;
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/heap/factory-base.cc b/deps/v8/src/heap/factory-base.cc
index 45577f7bf9..df78716a8d 100644
--- a/deps/v8/src/heap/factory-base.cc
+++ b/deps/v8/src/heap/factory-base.cc
@@ -53,36 +53,30 @@ FactoryBase<LocalFactory>::NewHeapNumber<AllocationType::kOld>();
template <typename Impl>
Handle<Struct> FactoryBase<Impl>::NewStruct(InstanceType type,
AllocationType allocation) {
- return handle(NewStructInternal(type, allocation), isolate());
-}
-
-template <typename Impl>
-Struct FactoryBase<Impl>::NewStructInternal(InstanceType type,
- AllocationType allocation) {
- Map map = Map::GetInstanceTypeMap(read_only_roots(), type);
+ ReadOnlyRoots roots = read_only_roots();
+ Map map = Map::GetInstanceTypeMap(roots, type);
int size = map.instance_size();
- HeapObject result = AllocateRawWithImmortalMap(size, allocation, map);
- Struct str = Struct::cast(result);
- str.InitializeBody(size);
- return str;
+ return handle(NewStructInternal(roots, map, size, allocation), isolate());
}
template <typename Impl>
Handle<AccessorPair> FactoryBase<Impl>::NewAccessorPair() {
- Handle<AccessorPair> accessors = Handle<AccessorPair>::cast(
- NewStruct(ACCESSOR_PAIR_TYPE, AllocationType::kOld));
- AccessorPair raw = *accessors;
+ auto accessors =
+ NewStructInternal<AccessorPair>(ACCESSOR_PAIR_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
- raw.set_getter(read_only_roots().null_value(), SKIP_WRITE_BARRIER);
- raw.set_setter(read_only_roots().null_value(), SKIP_WRITE_BARRIER);
- return accessors;
+ accessors.set_getter(read_only_roots().null_value(), SKIP_WRITE_BARRIER);
+ accessors.set_setter(read_only_roots().null_value(), SKIP_WRITE_BARRIER);
+ return handle(accessors, isolate());
}
template <typename Impl>
Handle<FixedArray> FactoryBase<Impl>::NewFixedArray(int length,
AllocationType allocation) {
- DCHECK_LE(0, length);
if (length == 0) return impl()->empty_fixed_array();
+ if (length < 0 || length > FixedArray::kMaxLength) {
+ FATAL("Fatal JavaScript invalid size error %d", length);
+ UNREACHABLE();
+ }
return NewFixedArrayWithFiller(
read_only_roots().fixed_array_map_handle(), length,
read_only_roots().undefined_value_handle(), allocation);
@@ -128,7 +122,8 @@ Handle<FixedArrayBase> FactoryBase<Impl>::NewFixedDoubleArray(
int length, AllocationType allocation) {
if (length == 0) return impl()->empty_fixed_array();
if (length < 0 || length > FixedDoubleArray::kMaxLength) {
- isolate()->FatalProcessOutOfHeapMemory("invalid array length");
+ FATAL("Fatal JavaScript invalid size error %d", length);
+ UNREACHABLE();
}
int size = FixedDoubleArray::SizeFor(length);
Map map = read_only_roots().fixed_double_array_map();
@@ -172,7 +167,8 @@ template <typename Impl>
Handle<ByteArray> FactoryBase<Impl>::NewByteArray(int length,
AllocationType allocation) {
if (length < 0 || length > ByteArray::kMaxLength) {
- isolate()->FatalProcessOutOfHeapMemory("invalid array length");
+ FATAL("Fatal JavaScript invalid size error %d", length);
+ UNREACHABLE();
}
int size = ByteArray::SizeFor(length);
HeapObject result = AllocateRawWithImmortalMap(
@@ -189,7 +185,8 @@ Handle<BytecodeArray> FactoryBase<Impl>::NewBytecodeArray(
int length, const byte* raw_bytecodes, int frame_size, int parameter_count,
Handle<FixedArray> constant_pool) {
if (length < 0 || length > BytecodeArray::kMaxLength) {
- isolate()->FatalProcessOutOfHeapMemory("invalid array length");
+ FATAL("Fatal JavaScript invalid size error %d", length);
+ UNREACHABLE();
}
// Bytecode array is AllocationType::kOld, so constant pool array should be
// too.
@@ -230,8 +227,8 @@ Handle<Script> FactoryBase<Impl>::NewScriptWithId(
DCHECK(source->IsString() || source->IsUndefined());
// Create and initialize script object.
ReadOnlyRoots roots = read_only_roots();
- Handle<Script> script =
- Handle<Script>::cast(NewStruct(SCRIPT_TYPE, AllocationType::kOld));
+ Handle<Script> script = handle(
+ NewStructInternal<Script>(SCRIPT_TYPE, AllocationType::kOld), isolate());
{
DisallowGarbageCollection no_gc;
Script raw = *script;
@@ -243,8 +240,8 @@ Handle<Script> FactoryBase<Impl>::NewScriptWithId(
raw.set_context_data(roots.undefined_value(), SKIP_WRITE_BARRIER);
raw.set_type(Script::TYPE_NORMAL);
raw.set_line_ends(roots.undefined_value(), SKIP_WRITE_BARRIER);
- raw.set_eval_from_shared_or_wrapped_arguments(roots.undefined_value(),
- SKIP_WRITE_BARRIER);
+ raw.set_eval_from_shared_or_wrapped_arguments_or_sfi_table(
+ roots.undefined_value(), SKIP_WRITE_BARRIER);
raw.set_eval_from_position(0);
raw.set_shared_function_infos(roots.empty_weak_fixed_array(),
SKIP_WRITE_BARRIER);
@@ -394,14 +391,12 @@ template <typename Impl>
Handle<ArrayBoilerplateDescription>
FactoryBase<Impl>::NewArrayBoilerplateDescription(
ElementsKind elements_kind, Handle<FixedArrayBase> constant_values) {
- Handle<ArrayBoilerplateDescription> result =
- Handle<ArrayBoilerplateDescription>::cast(
- NewStruct(ARRAY_BOILERPLATE_DESCRIPTION_TYPE, AllocationType::kOld));
+ auto result = NewStructInternal<ArrayBoilerplateDescription>(
+ ARRAY_BOILERPLATE_DESCRIPTION_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
- ArrayBoilerplateDescription raw = *result;
- raw.set_elements_kind(elements_kind);
- raw.set_constant_elements(*constant_values);
- return result;
+ result.set_elements_kind(elements_kind);
+ result.set_constant_elements(*constant_values);
+ return handle(result, isolate());
}
template <typename Impl>
@@ -409,15 +404,13 @@ Handle<RegExpBoilerplateDescription>
FactoryBase<Impl>::NewRegExpBoilerplateDescription(Handle<FixedArray> data,
Handle<String> source,
Smi flags) {
- Handle<RegExpBoilerplateDescription> result =
- Handle<RegExpBoilerplateDescription>::cast(NewStruct(
- REG_EXP_BOILERPLATE_DESCRIPTION_TYPE, AllocationType::kOld));
+ auto result = NewStructInternal<RegExpBoilerplateDescription>(
+ REG_EXP_BOILERPLATE_DESCRIPTION_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
- RegExpBoilerplateDescription raw = *result;
- raw.set_data(*data);
- raw.set_source(*source);
- raw.set_flags(flags.value());
- return result;
+ result.set_data(*data);
+ result.set_source(*source);
+ result.set_flags(flags.value());
+ return handle(result, isolate());
}
template <typename Impl>
@@ -426,14 +419,12 @@ FactoryBase<Impl>::NewTemplateObjectDescription(
Handle<FixedArray> raw_strings, Handle<FixedArray> cooked_strings) {
DCHECK_EQ(raw_strings->length(), cooked_strings->length());
DCHECK_LT(0, raw_strings->length());
- Handle<TemplateObjectDescription> result =
- Handle<TemplateObjectDescription>::cast(
- NewStruct(TEMPLATE_OBJECT_DESCRIPTION_TYPE, AllocationType::kOld));
+ auto result = NewStructInternal<TemplateObjectDescription>(
+ TEMPLATE_OBJECT_DESCRIPTION_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
- TemplateObjectDescription raw = *result;
- raw.set_raw_strings(*raw_strings);
- raw.set_cooked_strings(*cooked_strings);
- return result;
+ result.set_raw_strings(*raw_strings);
+ result.set_cooked_strings(*cooked_strings);
+ return handle(result, isolate());
}
template <typename Impl>
@@ -691,7 +682,8 @@ template <typename Impl>
Handle<FreshlyAllocatedBigInt> FactoryBase<Impl>::NewBigInt(
int length, AllocationType allocation) {
if (length < 0 || length > BigInt::kMaxLength) {
- isolate()->FatalProcessOutOfHeapMemory("invalid BigInt length");
+ FATAL("Fatal JavaScript invalid size error %d", length);
+ UNREACHABLE();
}
HeapObject result = AllocateRawWithImmortalMap(
BigInt::SizeFor(length), allocation, read_only_roots().bigint_map());
@@ -760,11 +752,11 @@ Handle<DescriptorArray> FactoryBase<Impl>::NewDescriptorArray(
template <typename Impl>
Handle<ClassPositions> FactoryBase<Impl>::NewClassPositions(int start,
int end) {
- Handle<ClassPositions> class_positions = Handle<ClassPositions>::cast(
- NewStruct(CLASS_POSITIONS_TYPE, AllocationType::kOld));
- class_positions->set_start(start);
- class_positions->set_end(end);
- return class_positions;
+ auto result = NewStructInternal<ClassPositions>(CLASS_POSITIONS_TYPE,
+ AllocationType::kOld);
+ result.set_start(start);
+ result.set_end(end);
+ return handle(result, isolate());
}
template <typename Impl>
@@ -825,7 +817,8 @@ template <typename Impl>
HeapObject FactoryBase<Impl>::AllocateRawFixedArray(int length,
AllocationType allocation) {
if (length < 0 || length > FixedArray::kMaxLength) {
- isolate()->FatalProcessOutOfHeapMemory("invalid array length");
+ FATAL("Fatal JavaScript invalid size error %d", length);
+ UNREACHABLE();
}
return AllocateRawArray(FixedArray::SizeFor(length), allocation);
}
@@ -834,7 +827,8 @@ template <typename Impl>
HeapObject FactoryBase<Impl>::AllocateRawWeakArrayList(
int capacity, AllocationType allocation) {
if (capacity < 0 || capacity > WeakArrayList::kMaxCapacity) {
- isolate()->FatalProcessOutOfHeapMemory("invalid array length");
+ FATAL("Fatal JavaScript invalid size error %d", capacity);
+ UNREACHABLE();
}
return AllocateRawArray(WeakArrayList::SizeForCapacity(capacity), allocation);
}
@@ -878,8 +872,9 @@ FactoryBase<Impl>::NewSwissNameDictionaryWithCapacity(
return read_only_roots().empty_swiss_property_dictionary_handle();
}
- if (capacity > SwissNameDictionary::MaxCapacity()) {
- isolate()->FatalProcessOutOfHeapMemory("invalid table size");
+ if (capacity < 0 || capacity > SwissNameDictionary::MaxCapacity()) {
+ FATAL("Fatal JavaScript invalid size error %d", capacity);
+ UNREACHABLE();
}
int meta_table_length = SwissNameDictionary::MetaTableSizeFor(capacity);
@@ -902,6 +897,18 @@ Handle<SwissNameDictionary> FactoryBase<Impl>::NewSwissNameDictionary(
SwissNameDictionary::CapacityFor(at_least_space_for), allocation);
}
+template <typename Impl>
+Handle<FunctionTemplateRareData>
+FactoryBase<Impl>::NewFunctionTemplateRareData() {
+ auto function_template_rare_data =
+ NewStructInternal<FunctionTemplateRareData>(
+ FUNCTION_TEMPLATE_RARE_DATA_TYPE, AllocationType::kOld);
+ DisallowGarbageCollection no_gc;
+ function_template_rare_data.set_c_function_overloads(
+ *impl()->empty_fixed_array(), SKIP_WRITE_BARRIER);
+ return handle(function_template_rare_data, isolate());
+}
+
// Instantiate FactoryBase for the two variants we want.
template class EXPORT_TEMPLATE_DEFINE(V8_EXPORT_PRIVATE) FactoryBase<Factory>;
template class EXPORT_TEMPLATE_DEFINE(V8_EXPORT_PRIVATE)
diff --git a/deps/v8/src/heap/factory-base.h b/deps/v8/src/heap/factory-base.h
index b964f6b234..4e3d5efbe4 100644
--- a/deps/v8/src/heap/factory-base.h
+++ b/deps/v8/src/heap/factory-base.h
@@ -228,14 +228,19 @@ class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE) FactoryBase
Handle<SwissNameDictionary> NewSwissNameDictionaryWithCapacity(
int capacity, AllocationType allocation);
+ Handle<FunctionTemplateRareData> NewFunctionTemplateRareData();
+
protected:
// Allocate memory for an uninitialized array (e.g., a FixedArray or similar).
HeapObject AllocateRawArray(int size, AllocationType allocation);
HeapObject AllocateRawFixedArray(int length, AllocationType allocation);
HeapObject AllocateRawWeakArrayList(int length, AllocationType allocation);
- Struct NewStructInternal(InstanceType type,
- AllocationType allocation = AllocationType::kYoung);
+ template <typename StructType>
+ inline StructType NewStructInternal(InstanceType type,
+ AllocationType allocation);
+ Struct NewStructInternal(ReadOnlyRoots roots, Map map, int size,
+ AllocationType allocation);
HeapObject AllocateRawWithImmortalMap(
int size, AllocationType allocation, Map map,
diff --git a/deps/v8/src/heap/factory.cc b/deps/v8/src/heap/factory.cc
index c26d797dc1..6f753d23b4 100644
--- a/deps/v8/src/heap/factory.cc
+++ b/deps/v8/src/heap/factory.cc
@@ -53,6 +53,7 @@
#include "src/objects/js-regexp-inl.h"
#include "src/objects/js-weak-refs-inl.h"
#include "src/objects/literal-objects-inl.h"
+#include "src/objects/megadom-handler-inl.h"
#include "src/objects/microtask-inl.h"
#include "src/objects/module-inl.h"
#include "src/objects/promise-inl.h"
@@ -153,9 +154,8 @@ MaybeHandle<Code> Factory::CodeBuilder::BuildInternal(
if (is_executable_) {
DCHECK(IsAligned(code->address(), kCodeAlignment));
DCHECK_IMPLIES(
- !V8_ENABLE_THIRD_PARTY_HEAP_BOOL &&
- !heap->memory_allocator()->code_range().is_empty(),
- heap->memory_allocator()->code_range().contains(code->address()));
+ !V8_ENABLE_THIRD_PARTY_HEAP_BOOL && !heap->code_region().is_empty(),
+ heap->code_region().contains(code->address()));
}
constexpr bool kIsNotOffHeapTrampoline = false;
@@ -314,8 +314,8 @@ Handle<HeapObject> Factory::NewFillerObject(int size, bool double_align,
}
Handle<PrototypeInfo> Factory::NewPrototypeInfo() {
- PrototypeInfo result = PrototypeInfo::cast(
- NewStructInternal(PROTOTYPE_INFO_TYPE, AllocationType::kOld));
+ auto result = NewStructInternal<PrototypeInfo>(PROTOTYPE_INFO_TYPE,
+ AllocationType::kOld);
DisallowGarbageCollection no_gc;
result.set_prototype_users(Smi::zero());
result.set_registry_slot(PrototypeInfo::UNREGISTERED);
@@ -326,8 +326,8 @@ Handle<PrototypeInfo> Factory::NewPrototypeInfo() {
Handle<EnumCache> Factory::NewEnumCache(Handle<FixedArray> keys,
Handle<FixedArray> indices) {
- EnumCache result =
- EnumCache::cast(NewStructInternal(ENUM_CACHE_TYPE, AllocationType::kOld));
+ auto result =
+ NewStructInternal<EnumCache>(ENUM_CACHE_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
result.set_keys(*keys);
result.set_indices(*indices);
@@ -336,7 +336,7 @@ Handle<EnumCache> Factory::NewEnumCache(Handle<FixedArray> keys,
Handle<Tuple2> Factory::NewTuple2(Handle<Object> value1, Handle<Object> value2,
AllocationType allocation) {
- Tuple2 result = Tuple2::cast(NewStructInternal(TUPLE2_TYPE, allocation));
+ auto result = NewStructInternal<Tuple2>(TUPLE2_TYPE, allocation);
DisallowGarbageCollection no_gc;
result.set_value1(*value1);
result.set_value2(*value2);
@@ -345,8 +345,8 @@ Handle<Tuple2> Factory::NewTuple2(Handle<Object> value1, Handle<Object> value2,
Handle<BaselineData> Factory::NewBaselineData(
Handle<Code> code, Handle<HeapObject> function_data) {
- BaselineData baseline_data = BaselineData::cast(
- NewStructInternal(BASELINE_DATA_TYPE, AllocationType::kOld));
+ auto baseline_data =
+ NewStructInternal<BaselineData>(BASELINE_DATA_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
baseline_data.set_baseline_code(*code);
baseline_data.set_data(*function_data);
@@ -410,20 +410,6 @@ MaybeHandle<FixedArray> Factory::TryNewFixedArray(
return handle(array, isolate());
}
-Handle<FixedArray> Factory::NewUninitializedFixedArray(int length) {
- if (length == 0) return empty_fixed_array();
- if (length < 0 || length > FixedArray::kMaxLength) {
- isolate()->heap()->FatalProcessOutOfMemory("invalid array length");
- }
-
- // TODO(ulan): As an experiment this temporarily returns an initialized fixed
- // array. After getting canary/performance coverage, either remove the
- // function or revert to returning uninitilized array.
- return NewFixedArrayWithFiller(read_only_roots().fixed_array_map_handle(),
- length, undefined_value(),
- AllocationType::kYoung);
-}
-
Handle<ClosureFeedbackCellArray> Factory::NewClosureFeedbackCellArray(
int length) {
if (length == 0) return empty_closure_feedback_cell_array();
@@ -557,9 +543,8 @@ Handle<NameDictionary> Factory::NewNameDictionary(int at_least_space_for) {
}
Handle<PropertyDescriptorObject> Factory::NewPropertyDescriptorObject() {
- PropertyDescriptorObject object =
- PropertyDescriptorObject::cast(NewStructInternal(
- PROPERTY_DESCRIPTOR_OBJECT_TYPE, AllocationType::kYoung));
+ auto object = NewStructInternal<PropertyDescriptorObject>(
+ PROPERTY_DESCRIPTOR_OBJECT_TYPE, AllocationType::kYoung);
DisallowGarbageCollection no_gc;
object.set_flags(0);
Oddball the_hole = read_only_roots().the_hole_value();
@@ -1095,7 +1080,7 @@ Handle<NativeContext> Factory::NewNativeContext() {
// The ExternalPointerTable is a C++ object.
context.AllocateExternalPointerEntries(isolate());
context.set_scope_info(*native_scope_info());
- context.set_previous(Context::unchecked_cast(Smi::zero()));
+ context.set_previous(Context());
context.set_extension(*undefined_value());
context.set_errors_thrown(Smi::zero());
context.set_math_random_index(Smi::zero());
@@ -1179,7 +1164,7 @@ Handle<Context> Factory::NewCatchContext(Handle<Context> previous,
isolate()->catch_context_map(), Context::SizeFor(variadic_part_length),
variadic_part_length, AllocationType::kYoung);
DisallowGarbageCollection no_gc;
- DCHECK(Heap::InYoungGeneration(context));
+ DCHECK_IMPLIES(!FLAG_single_generation, Heap::InYoungGeneration(context));
context.set_scope_info(*scope_info, SKIP_WRITE_BARRIER);
context.set_previous(*previous, SKIP_WRITE_BARRIER);
context.set(Context::THROWN_OBJECT_INDEX, *thrown_object, SKIP_WRITE_BARRIER);
@@ -1204,7 +1189,7 @@ Handle<Context> Factory::NewDebugEvaluateContext(Handle<Context> previous,
Context::SizeFor(variadic_part_length),
variadic_part_length, AllocationType::kYoung);
DisallowGarbageCollection no_gc;
- DCHECK(Heap::InYoungGeneration(context));
+ DCHECK_IMPLIES(!FLAG_single_generation, Heap::InYoungGeneration(context));
context.set_scope_info(*scope_info, SKIP_WRITE_BARRIER);
context.set_previous(*previous, SKIP_WRITE_BARRIER);
context.set_extension(*ext, SKIP_WRITE_BARRIER);
@@ -1227,7 +1212,7 @@ Handle<Context> Factory::NewWithContext(Handle<Context> previous,
isolate()->with_context_map(), Context::SizeFor(variadic_part_length),
variadic_part_length, AllocationType::kYoung);
DisallowGarbageCollection no_gc;
- DCHECK(Heap::InYoungGeneration(context));
+ DCHECK_IMPLIES(!FLAG_single_generation, Heap::InYoungGeneration(context));
context.set_scope_info(*scope_info, SKIP_WRITE_BARRIER);
context.set_previous(*previous, SKIP_WRITE_BARRIER);
context.set_extension(*extension, SKIP_WRITE_BARRIER);
@@ -1243,7 +1228,7 @@ Handle<Context> Factory::NewBlockContext(Handle<Context> previous,
isolate()->block_context_map(), Context::SizeFor(variadic_part_length),
variadic_part_length, AllocationType::kYoung);
DisallowGarbageCollection no_gc;
- DCHECK(Heap::InYoungGeneration(context));
+ DCHECK_IMPLIES(!FLAG_single_generation, Heap::InYoungGeneration(context));
context.set_scope_info(*scope_info, SKIP_WRITE_BARRIER);
context.set_previous(*previous, SKIP_WRITE_BARRIER);
return handle(context, isolate());
@@ -1256,7 +1241,7 @@ Handle<Context> Factory::NewBuiltinContext(Handle<NativeContext> native_context,
isolate()->function_context_map(), Context::SizeFor(variadic_part_length),
variadic_part_length, AllocationType::kYoung);
DisallowGarbageCollection no_gc;
- DCHECK(Heap::InYoungGeneration(context));
+ DCHECK_IMPLIES(!FLAG_single_generation, Heap::InYoungGeneration(context));
context.set_scope_info(read_only_roots().empty_scope_info(),
SKIP_WRITE_BARRIER);
context.set_previous(*native_context, SKIP_WRITE_BARRIER);
@@ -1265,15 +1250,15 @@ Handle<Context> Factory::NewBuiltinContext(Handle<NativeContext> native_context,
Handle<AliasedArgumentsEntry> Factory::NewAliasedArgumentsEntry(
int aliased_context_slot) {
- AliasedArgumentsEntry entry = AliasedArgumentsEntry::cast(
- NewStructInternal(ALIASED_ARGUMENTS_ENTRY_TYPE, AllocationType::kYoung));
+ auto entry = NewStructInternal<AliasedArgumentsEntry>(
+ ALIASED_ARGUMENTS_ENTRY_TYPE, AllocationType::kYoung);
entry.set_aliased_context_slot(aliased_context_slot);
return handle(entry, isolate());
}
Handle<AccessorInfo> Factory::NewAccessorInfo() {
- AccessorInfo info = AccessorInfo::cast(
- NewStructInternal(ACCESSOR_INFO_TYPE, AllocationType::kOld));
+ auto info =
+ NewStructInternal<AccessorInfo>(ACCESSOR_INFO_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
info.set_name(*empty_string(), SKIP_WRITE_BARRIER);
info.set_flags(0); // Must clear the flags, it was initialized as undefined.
@@ -1311,8 +1296,8 @@ Handle<Script> Factory::CloneScript(Handle<Script> script) {
new_script.set_context_data(old_script.context_data());
new_script.set_type(old_script.type());
new_script.set_line_ends(*undefined_value(), SKIP_WRITE_BARRIER);
- new_script.set_eval_from_shared_or_wrapped_arguments(
- script->eval_from_shared_or_wrapped_arguments());
+ new_script.set_eval_from_shared_or_wrapped_arguments_or_sfi_table(
+ script->eval_from_shared_or_wrapped_arguments_or_sfi_table());
new_script.set_shared_function_infos(*empty_weak_fixed_array(),
SKIP_WRITE_BARRIER);
new_script.set_eval_from_position(old_script.eval_from_position());
@@ -1330,8 +1315,8 @@ Handle<Script> Factory::CloneScript(Handle<Script> script) {
Handle<CallableTask> Factory::NewCallableTask(Handle<JSReceiver> callable,
Handle<Context> context) {
DCHECK(callable->IsCallable());
- CallableTask microtask = CallableTask::cast(
- NewStructInternal(CALLABLE_TASK_TYPE, AllocationType::kYoung));
+ auto microtask = NewStructInternal<CallableTask>(CALLABLE_TASK_TYPE,
+ AllocationType::kYoung);
DisallowGarbageCollection no_gc;
microtask.set_callable(*callable, SKIP_WRITE_BARRIER);
microtask.set_context(*context, SKIP_WRITE_BARRIER);
@@ -1340,8 +1325,8 @@ Handle<CallableTask> Factory::NewCallableTask(Handle<JSReceiver> callable,
Handle<CallbackTask> Factory::NewCallbackTask(Handle<Foreign> callback,
Handle<Foreign> data) {
- CallbackTask microtask = CallbackTask::cast(
- NewStructInternal(CALLBACK_TASK_TYPE, AllocationType::kYoung));
+ auto microtask = NewStructInternal<CallbackTask>(CALLBACK_TASK_TYPE,
+ AllocationType::kYoung);
DisallowGarbageCollection no_gc;
microtask.set_callback(*callback, SKIP_WRITE_BARRIER);
microtask.set_data(*data, SKIP_WRITE_BARRIER);
@@ -1352,9 +1337,8 @@ Handle<PromiseResolveThenableJobTask> Factory::NewPromiseResolveThenableJobTask(
Handle<JSPromise> promise_to_resolve, Handle<JSReceiver> thenable,
Handle<JSReceiver> then, Handle<Context> context) {
DCHECK(then->IsCallable());
- PromiseResolveThenableJobTask microtask =
- PromiseResolveThenableJobTask::cast(NewStructInternal(
- PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE, AllocationType::kYoung));
+ auto microtask = NewStructInternal<PromiseResolveThenableJobTask>(
+ PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE, AllocationType::kYoung);
DisallowGarbageCollection no_gc;
microtask.set_promise_to_resolve(*promise_to_resolve, SKIP_WRITE_BARRIER);
microtask.set_thenable(*thenable, SKIP_WRITE_BARRIER);
@@ -1377,24 +1361,78 @@ Handle<Foreign> Factory::NewForeign(Address addr) {
#if V8_ENABLE_WEBASSEMBLY
Handle<WasmTypeInfo> Factory::NewWasmTypeInfo(Address type_address,
- Handle<Map> opt_parent) {
+ Handle<Map> opt_parent,
+ int instance_size_bytes) {
+ // We pretenure WasmTypeInfo objects because they are refererenced by Maps,
+ // which are assumed to be long-lived. The supertypes list is constant
+ // after initialization, so we pretenure that too.
+ // The subtypes list, however, is expected to grow (and hence be replaced),
+ // so we don't pretenure it.
Handle<ArrayList> subtypes = ArrayList::New(isolate(), 0);
Handle<FixedArray> supertypes;
if (opt_parent.is_null()) {
- supertypes = NewUninitializedFixedArray(0);
+ supertypes = NewFixedArray(0);
} else {
- supertypes = CopyFixedArrayAndGrow(
- handle(opt_parent->wasm_type_info().supertypes(), isolate()), 1);
+ supertypes = CopyArrayAndGrow(
+ handle(opt_parent->wasm_type_info().supertypes(), isolate()), 1,
+ AllocationType::kOld);
supertypes->set(supertypes->length() - 1, *opt_parent);
}
Map map = *wasm_type_info_map();
WasmTypeInfo result = WasmTypeInfo::cast(AllocateRawWithImmortalMap(
- map.instance_size(), AllocationType::kYoung, map));
+ map.instance_size(), AllocationType::kOld, map));
DisallowGarbageCollection no_gc;
result.AllocateExternalPointerEntries(isolate());
result.set_foreign_address(isolate(), type_address);
result.set_supertypes(*supertypes, SKIP_WRITE_BARRIER);
- result.set_subtypes(*subtypes, SKIP_WRITE_BARRIER);
+ result.set_subtypes(*subtypes);
+ result.set_instance_size(instance_size_bytes);
+ return handle(result, isolate());
+}
+
+Handle<WasmJSFunctionData> Factory::NewWasmJSFunctionData(
+ Address opt_call_target, Handle<JSReceiver> callable, int return_count,
+ int parameter_count, Handle<PodArray<wasm::ValueType>> serialized_sig,
+ Handle<Code> wrapper_code) {
+ Handle<Tuple2> pair = NewTuple2(null_value(), callable, AllocationType::kOld);
+ Map map = *wasm_js_function_data_map();
+ WasmJSFunctionData result =
+ WasmJSFunctionData::cast(AllocateRawWithImmortalMap(
+ map.instance_size(), AllocationType::kOld, map));
+ DisallowGarbageCollection no_gc;
+ result.AllocateExternalPointerEntries(isolate());
+ result.set_foreign_address(isolate(), opt_call_target);
+ result.set_ref(*pair);
+ result.set_serialized_return_count(return_count);
+ result.set_serialized_parameter_count(parameter_count);
+ result.set_serialized_signature(*serialized_sig);
+ result.set_wrapper_code(*wrapper_code);
+ // Default value, will be overwritten by the caller.
+ result.set_wasm_to_js_wrapper_code(
+ isolate()->heap()->builtin(Builtins::kAbort));
+ return handle(result, isolate());
+}
+
+Handle<WasmExportedFunctionData> Factory::NewWasmExportedFunctionData(
+ Handle<Code> export_wrapper, Handle<WasmInstanceObject> instance,
+ Address call_target, Handle<Object> ref, int func_index,
+ Address sig_address, int wrapper_budget) {
+ Handle<Foreign> sig_foreign = NewForeign(sig_address);
+ Map map = *wasm_exported_function_data_map();
+ WasmExportedFunctionData result =
+ WasmExportedFunctionData::cast(AllocateRawWithImmortalMap(
+ map.instance_size(), AllocationType::kOld, map));
+ DisallowGarbageCollection no_gc;
+ result.AllocateExternalPointerEntries(isolate());
+ result.set_foreign_address(isolate(), call_target);
+ result.set_ref(*ref);
+ result.set_wrapper_code(*export_wrapper);
+ result.set_instance(*instance);
+ result.set_function_index(func_index);
+ result.set_signature(*sig_foreign);
+ result.set_wrapper_budget(wrapper_budget);
+ result.set_c_wrapper_code(Smi::zero(), SKIP_WRITE_BARRIER);
+ result.set_packed_args_size(0);
return handle(result, isolate());
}
@@ -1566,9 +1604,7 @@ Map Factory::InitializeMap(Map map, InstanceType type, int instance_size,
map.SetInstanceDescriptors(isolate(), *empty_descriptor_array(), 0);
// Must be called only after |instance_type| and |instance_size| are set.
map.set_visitor_id(Map::GetVisitorId(map));
- // TODO(solanes, v8:7790, v8:11353): set_relaxed_bit_field could be an atomic
- // set if TSAN could see the transitions happening in StoreIC.
- map.set_relaxed_bit_field(0);
+ map.set_bit_field(0);
map.set_bit_field2(Map::Bits2::NewTargetIsBaseBit::encode(true));
int bit_field3 =
Map::Bits3::EnumLengthBits::encode(kInvalidEnumCacheSentinel) |
@@ -1892,7 +1928,7 @@ Handle<JSObject> Factory::NewError(Handle<JSFunction> constructor,
Handle<Object> no_caller;
return ErrorUtils::Construct(isolate(), constructor, constructor, message,
- SKIP_NONE, no_caller,
+ undefined_value(), SKIP_NONE, no_caller,
ErrorUtils::StackTraceCollection::kDetailed)
.ToHandleChecked();
}
@@ -2075,9 +2111,8 @@ Handle<Code> Factory::CopyCode(Handle<Code> code) {
#endif
DCHECK(IsAligned(new_code->address(), kCodeAlignment));
DCHECK_IMPLIES(
- !V8_ENABLE_THIRD_PARTY_HEAP_BOOL &&
- !heap->memory_allocator()->code_range().is_empty(),
- heap->memory_allocator()->code_range().contains(new_code->address()));
+ !V8_ENABLE_THIRD_PARTY_HEAP_BOOL && !heap->code_region().is_empty(),
+ heap->code_region().contains(new_code->address()));
return new_code;
}
@@ -2175,7 +2210,7 @@ Handle<JSGlobalObject> Factory::NewJSGlobalObject(
// Set up the global object as a normalized object.
global->set_global_dictionary(*dictionary, kReleaseStore);
- global->synchronized_set_map(raw_map);
+ global->set_map(raw_map, kReleaseStore);
// Make sure result is a global object with properties in dictionary.
DCHECK(global->IsJSGlobalObject() && !global->HasFastProperties());
@@ -2212,13 +2247,9 @@ void Factory::InitializeJSObjectBody(JSObject obj, Map map, int start_offset) {
// In case of Array subclassing the |map| could already be transitioned
// to different elements kind from the initial map on which we track slack.
bool in_progress = map.IsInobjectSlackTrackingInProgress();
- Object filler;
- if (in_progress) {
- filler = *one_pointer_filler_map();
- } else {
- filler = *undefined_value();
- }
- obj.InitializeBody(map, start_offset, *undefined_value(), filler);
+ obj.InitializeBody(map, start_offset, in_progress,
+ ReadOnlyRoots(isolate()).one_pointer_filler_map_word(),
+ *undefined_value());
if (in_progress) {
map.FindRootMap(isolate()).InobjectSlackTrackingStep(isolate());
}
@@ -2369,7 +2400,7 @@ Handle<FixedArrayBase> Factory::NewJSArrayStorage(
} else {
DCHECK(IsSmiOrObjectElementsKind(elements_kind));
if (mode == DONT_INITIALIZE_ARRAY_ELEMENTS) {
- elms = NewUninitializedFixedArray(capacity);
+ elms = NewFixedArray(capacity);
} else {
DCHECK(mode == INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE);
elms = NewFixedArrayWithHoles(capacity);
@@ -2444,7 +2475,8 @@ Handle<SourceTextModule> Factory::NewSourceTextModule(
module.set_status(Module::kUninstantiated);
module.set_exception(roots.the_hole_value(), SKIP_WRITE_BARRIER);
module.set_top_level_capability(roots.undefined_value(), SKIP_WRITE_BARRIER);
- module.set_import_meta(roots.the_hole_value(), SKIP_WRITE_BARRIER);
+ module.set_import_meta(roots.the_hole_value(), kReleaseStore,
+ SKIP_WRITE_BARRIER);
module.set_dfs_index(-1);
module.set_dfs_ancestor_index(-1);
module.set_flags(0);
@@ -2487,7 +2519,8 @@ Handle<JSArrayBuffer> Factory::NewJSArrayBuffer(
isolate());
auto result =
Handle<JSArrayBuffer>::cast(NewJSObjectFromMap(map, allocation));
- result->Setup(SharedFlag::kNotShared, std::move(backing_store));
+ result->Setup(SharedFlag::kNotShared, ResizableFlag::kNotResizable,
+ std::move(backing_store));
return result;
}
@@ -2505,18 +2538,32 @@ MaybeHandle<JSArrayBuffer> Factory::NewJSArrayBufferAndBackingStore(
isolate());
auto array_buffer =
Handle<JSArrayBuffer>::cast(NewJSObjectFromMap(map, allocation));
- array_buffer->Setup(SharedFlag::kNotShared, std::move(backing_store));
+ array_buffer->Setup(SharedFlag::kNotShared, ResizableFlag::kNotResizable,
+ std::move(backing_store));
return array_buffer;
}
Handle<JSArrayBuffer> Factory::NewJSSharedArrayBuffer(
std::shared_ptr<BackingStore> backing_store) {
- Handle<Map> map(
- isolate()->native_context()->shared_array_buffer_fun().initial_map(),
- isolate());
+ Handle<Map> map;
+ if (backing_store->is_resizable()) {
+ DCHECK(FLAG_harmony_rab_gsab);
+ map = Handle<Map>(isolate()
+ ->native_context()
+ ->growable_shared_array_buffer_fun()
+ .initial_map(),
+ isolate());
+ } else {
+ map = Handle<Map>(
+ isolate()->native_context()->shared_array_buffer_fun().initial_map(),
+ isolate());
+ }
auto result = Handle<JSArrayBuffer>::cast(
NewJSObjectFromMap(map, AllocationType::kYoung));
- result->Setup(SharedFlag::kShared, std::move(backing_store));
+ ResizableFlag resizable = backing_store->is_resizable()
+ ? ResizableFlag::kResizable
+ : ResizableFlag::kNotResizable;
+ result->Setup(SharedFlag::kShared, resizable, std::move(backing_store));
return result;
}
@@ -2571,6 +2618,7 @@ void Factory::TypeAndSizeForElementsKind(ElementsKind kind,
*element_size = sizeof(ctype); \
break;
TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ RAB_GSAB_TYPED_ARRAYS_WITH_TYPED_ARRAY_TYPE(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
default:
@@ -2653,6 +2701,8 @@ Handle<JSTypedArray> Factory::NewJSTypedArray(ExternalArrayType type,
raw.AllocateExternalPointerEntries(isolate());
raw.set_length(length);
raw.SetOffHeapDataPtr(isolate(), buffer->backing_store(), byte_offset);
+ raw.set_is_length_tracking(false);
+ raw.set_is_backed_by_rab(!buffer->is_shared() && buffer->is_resizable());
return typed_array;
}
@@ -2791,7 +2841,7 @@ void Factory::ReinitializeJSGlobalProxy(Handle<JSGlobalProxy> object,
// Reset the map for the object.
JSGlobalProxy raw = *object;
- raw.synchronized_set_map(*map);
+ raw.set_map(*map, kReleaseStore);
// Reinitialize the object from the constructor map.
InitializeJSObjectFromMap(raw, *raw_properties_or_hash, *map);
@@ -3016,11 +3066,11 @@ Handle<String> Factory::SizeToString(size_t value, bool check_cache) {
Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) {
DCHECK(!shared->HasDebugInfo());
- DebugInfo debug_info =
- DebugInfo::cast(NewStructInternal(DEBUG_INFO_TYPE, AllocationType::kOld));
+ auto debug_info =
+ NewStructInternal<DebugInfo>(DEBUG_INFO_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
SharedFunctionInfo raw_shared = *shared;
- debug_info.set_flags(DebugInfo::kNone);
+ debug_info.set_flags(DebugInfo::kNone, kRelaxedStore);
debug_info.set_shared(raw_shared);
debug_info.set_debugger_hints(0);
DCHECK_EQ(DebugInfo::kNoDebuggingId, debug_info.debugging_id());
@@ -3039,8 +3089,8 @@ Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) {
}
Handle<BreakPointInfo> Factory::NewBreakPointInfo(int source_position) {
- BreakPointInfo new_break_point_info = BreakPointInfo::cast(
- NewStructInternal(BREAK_POINT_INFO_TYPE, AllocationType::kOld));
+ auto new_break_point_info = NewStructInternal<BreakPointInfo>(
+ BREAK_POINT_INFO_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
new_break_point_info.set_source_position(source_position);
new_break_point_info.set_break_points(*undefined_value(), SKIP_WRITE_BARRIER);
@@ -3048,8 +3098,8 @@ Handle<BreakPointInfo> Factory::NewBreakPointInfo(int source_position) {
}
Handle<BreakPoint> Factory::NewBreakPoint(int id, Handle<String> condition) {
- BreakPoint new_break_point = BreakPoint::cast(
- NewStructInternal(BREAK_POINT_TYPE, AllocationType::kOld));
+ auto new_break_point =
+ NewStructInternal<BreakPoint>(BREAK_POINT_TYPE, AllocationType::kOld);
DisallowGarbageCollection no_gc;
new_break_point.set_id(id);
new_break_point.set_condition(*condition);
@@ -3060,8 +3110,8 @@ Handle<StackFrameInfo> Factory::NewStackFrameInfo(
Handle<Object> receiver_or_instance, Handle<Object> function,
Handle<HeapObject> code_object, int code_offset_or_source_position,
int flags, Handle<FixedArray> parameters) {
- StackFrameInfo info = StackFrameInfo::cast(
- NewStructInternal(STACK_FRAME_INFO_TYPE, AllocationType::kYoung));
+ auto info = NewStructInternal<StackFrameInfo>(STACK_FRAME_INFO_TYPE,
+ AllocationType::kYoung);
DisallowGarbageCollection no_gc;
info.set_receiver_or_instance(*receiver_or_instance, SKIP_WRITE_BARRIER);
info.set_function(*function, SKIP_WRITE_BARRIER);
@@ -3136,6 +3186,16 @@ Handle<Map> Factory::ObjectLiteralMapFromCache(Handle<NativeContext> context,
return map;
}
+Handle<MegaDomHandler> Factory::NewMegaDomHandler(MaybeObjectHandle accessor,
+ MaybeObjectHandle context) {
+ Handle<Map> map = read_only_roots().mega_dom_handler_map_handle();
+ MegaDomHandler handler = MegaDomHandler::cast(New(map, AllocationType::kOld));
+ DisallowGarbageCollection no_gc;
+ handler.set_accessor(*accessor);
+ handler.set_context(*context);
+ return handle(handler, isolate());
+}
+
Handle<LoadHandler> Factory::NewLoadHandler(int data_count,
AllocationType allocation) {
Handle<Map> map;
@@ -3539,20 +3599,12 @@ Handle<JSFunction> Factory::JSFunctionBuilder::Build() {
PrepareMap();
PrepareFeedbackCell();
- // Determine the associated Code object.
- Handle<Code> code;
- const bool have_cached_code =
- sfi_->TryGetCachedCode(isolate_).ToHandle(&code);
- if (!have_cached_code) code = handle(sfi_->GetCode(), isolate_);
-
+ Handle<Code> code = handle(sfi_->GetCode(), isolate_);
Handle<JSFunction> result = BuildRaw(code);
- if (have_cached_code || code->kind() == CodeKind::BASELINE) {
+ if (code->kind() == CodeKind::BASELINE) {
IsCompiledScope is_compiled_scope(sfi_->is_compiled_scope(isolate_));
JSFunction::EnsureFeedbackVector(result, &is_compiled_scope);
- if (FLAG_trace_turbo_nci && have_cached_code) {
- CompilationCacheCode::TraceHit(sfi_, code);
- }
}
Compiler::PostInstantiation(result);
@@ -3584,7 +3636,8 @@ Handle<JSFunction> Factory::JSFunctionBuilder::BuildRaw(Handle<Code> code) {
function.set_code(*code, kReleaseStore, mode);
if (function.has_prototype_slot()) {
function.set_prototype_or_initial_map(
- ReadOnlyRoots(isolate).the_hole_value(), SKIP_WRITE_BARRIER);
+ ReadOnlyRoots(isolate).the_hole_value(), kReleaseStore,
+ SKIP_WRITE_BARRIER);
}
// Potentially body initialization.
diff --git a/deps/v8/src/heap/factory.h b/deps/v8/src/heap/factory.h
index ebec483de4..7f99c55709 100644
--- a/deps/v8/src/heap/factory.h
+++ b/deps/v8/src/heap/factory.h
@@ -131,9 +131,6 @@ class V8_EXPORT_PRIVATE Factory : public FactoryBase<Factory> {
MaybeHandle<FixedArray> TryNewFixedArray(
int length, AllocationType allocation = AllocationType::kYoung);
- // Allocates an uninitialized fixed array. It must be filled by the caller.
- Handle<FixedArray> NewUninitializedFixedArray(int length);
-
// Allocates a closure feedback cell array whose feedback cells are
// initialized with undefined values.
Handle<ClosureFeedbackCellArray> NewClosureFeedbackCellArray(int num_slots);
@@ -557,7 +554,18 @@ class V8_EXPORT_PRIVATE Factory : public FactoryBase<Factory> {
#if V8_ENABLE_WEBASSEMBLY
Handle<WasmTypeInfo> NewWasmTypeInfo(Address type_address,
- Handle<Map> opt_parent);
+ Handle<Map> opt_parent,
+ int instance_size_bytes);
+ Handle<WasmExportedFunctionData> NewWasmExportedFunctionData(
+ Handle<Code> export_wrapper, Handle<WasmInstanceObject> instance,
+ Address call_target, Handle<Object> ref, int func_index,
+ Address sig_address, int wrapper_budget);
+ // {opt_call_target} is kNullAddress for JavaScript functions, and
+ // non-null for exported Wasm functions.
+ Handle<WasmJSFunctionData> NewWasmJSFunctionData(
+ Address opt_call_target, Handle<JSReceiver> callable, int return_count,
+ int parameter_count, Handle<PodArray<wasm::ValueType>> serialized_sig,
+ Handle<Code> wrapper_code);
Handle<SharedFunctionInfo> NewSharedFunctionInfoForWasmExportedFunction(
Handle<String> name, Handle<WasmExportedFunctionData> data);
@@ -732,7 +740,8 @@ class V8_EXPORT_PRIVATE Factory : public FactoryBase<Factory> {
Handle<LoadHandler> NewLoadHandler(
int data_count, AllocationType allocation = AllocationType::kOld);
Handle<StoreHandler> NewStoreHandler(int data_count);
-
+ Handle<MegaDomHandler> NewMegaDomHandler(MaybeObjectHandle accessor,
+ MaybeObjectHandle context);
Handle<RegExpMatchInfo> NewRegExpMatchInfo();
// Creates a new FixedArray that holds the data associated with the
diff --git a/deps/v8/src/heap/finalization-registry-cleanup-task.cc b/deps/v8/src/heap/finalization-registry-cleanup-task.cc
index 2acfa31ffb..18222e783d 100644
--- a/deps/v8/src/heap/finalization-registry-cleanup-task.cc
+++ b/deps/v8/src/heap/finalization-registry-cleanup-task.cc
@@ -59,8 +59,21 @@ void FinalizationRegistryCleanupTask::RunInternal() {
Context::cast(finalization_registry->native_context()), isolate);
Handle<Object> callback(finalization_registry->cleanup(), isolate);
v8::Context::Scope context_scope(v8::Utils::ToLocal(context));
- v8::TryCatch catcher(reinterpret_cast<v8::Isolate*>(isolate));
+ v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate);
+ v8::TryCatch catcher(v8_isolate);
catcher.SetVerbose(true);
+ std::unique_ptr<MicrotasksScope> microtasks_scope;
+ MicrotaskQueue* microtask_queue =
+ finalization_registry->native_context().microtask_queue();
+ if (!microtask_queue) microtask_queue = isolate->default_microtask_queue();
+ if (microtask_queue &&
+ microtask_queue->microtasks_policy() == v8::MicrotasksPolicy::kScoped) {
+ // InvokeFinalizationRegistryCleanupFromTask will call into V8 API methods,
+ // so we need a valid microtasks scope on the stack to avoid running into
+ // the CallDepthScope check.
+ microtasks_scope.reset(new v8::MicrotasksScope(
+ v8_isolate, microtask_queue, v8::MicrotasksScope::kDoNotRunMicrotasks));
+ }
// Exceptions are reported via the message handler. This is ensured by the
// verbose TryCatch.
diff --git a/deps/v8/src/heap/free-list.cc b/deps/v8/src/heap/free-list.cc
index 80b4a4f01f..9f13247a2e 100644
--- a/deps/v8/src/heap/free-list.cc
+++ b/deps/v8/src/heap/free-list.cc
@@ -48,7 +48,7 @@ FreeSpace FreeListCategory::SearchForNodeInList(size_t minimum_size,
for (FreeSpace cur_node = top(); !cur_node.is_null();
cur_node = cur_node.next()) {
DCHECK(Page::FromHeapObject(cur_node)->CanAllocate());
- size_t size = cur_node.size();
+ size_t size = cur_node.size(kRelaxedLoad);
if (size >= minimum_size) {
DCHECK_GE(available_, size);
UpdateCountersAfterAllocation(size);
@@ -91,10 +91,10 @@ void FreeListCategory::RepairFreeList(Heap* heap) {
FreeSpace n = top();
while (!n.is_null()) {
ObjectSlot map_slot = n.map_slot();
- if (map_slot.contains_value(kNullAddress)) {
- map_slot.store(free_space_map);
+ if (map_slot.contains_map_value(kNullAddress)) {
+ map_slot.store_map(free_space_map);
} else {
- DCHECK(map_slot.contains_value(free_space_map.ptr()));
+ DCHECK(map_slot.contains_map_value(free_space_map.ptr()));
}
n = n.next();
}
@@ -504,12 +504,13 @@ size_t FreeListCategory::SumFreeList() {
while (!cur.is_null()) {
// We can't use "cur->map()" here because both cur's map and the
// root can be null during bootstrapping.
- DCHECK(cur.map_slot().contains_value(Page::FromHeapObject(cur)
- ->heap()
- ->isolate()
- ->root(RootIndex::kFreeSpaceMap)
- .ptr()));
- sum += cur.relaxed_read_size();
+ DCHECK(
+ cur.map_slot().contains_map_value(Page::FromHeapObject(cur)
+ ->heap()
+ ->isolate()
+ ->root(RootIndex::kFreeSpaceMap)
+ .ptr()));
+ sum += cur.size(kRelaxedLoad);
cur = cur.next();
}
return sum;
diff --git a/deps/v8/src/heap/gc-tracer.cc b/deps/v8/src/heap/gc-tracer.cc
index b4f86cc2a1..70f8c27627 100644
--- a/deps/v8/src/heap/gc-tracer.cc
+++ b/deps/v8/src/heap/gc-tracer.cc
@@ -13,7 +13,9 @@
#include "src/heap/heap-inl.h"
#include "src/heap/incremental-marking.h"
#include "src/heap/spaces.h"
-#include "src/logging/counters-inl.h"
+#include "src/logging/counters.h"
+#include "src/logging/tracing-flags.h"
+#include "src/tracing/tracing-category-observer.h"
namespace v8 {
namespace internal {
@@ -28,6 +30,8 @@ static size_t CountTotalHolesSize(Heap* heap) {
}
return holes_size;
}
+
+#ifdef V8_RUNTIME_CALL_STATS
WorkerThreadRuntimeCallStats* GCTracer::worker_thread_runtime_call_stats() {
return heap_->isolate()->counters()->worker_thread_runtime_call_stats();
}
@@ -38,6 +42,7 @@ RuntimeCallCounterId GCTracer::RCSCounterFromScope(Scope::ScopeId id) {
static_cast<int>(RuntimeCallCounterId::kGC_MC_INCREMENTAL) +
static_cast<int>(id));
}
+#endif // defined(V8_RUNTIME_CALL_STATS)
double GCTracer::MonotonicallyIncreasingTimeInMs() {
if (V8_UNLIKELY(FLAG_predictable)) {
@@ -61,6 +66,7 @@ GCTracer::Scope::Scope(GCTracer* tracer, ScopeId scope, ThreadKind thread_kind)
start_time_ = tracer_->MonotonicallyIncreasingTimeInMs();
if (V8_LIKELY(!TracingFlags::is_runtime_stats_enabled())) return;
+#ifdef V8_RUNTIME_CALL_STATS
if (thread_kind_ == ThreadKind::kMain) {
DCHECK_EQ(tracer_->heap_->isolate()->thread_id(), ThreadId::Current());
runtime_stats_ =
@@ -72,6 +78,7 @@ GCTracer::Scope::Scope(GCTracer* tracer, ScopeId scope, ThreadKind thread_kind)
runtime_stats_ = runtime_call_stats_scope_->Get();
runtime_stats_->Enter(&timer_, GCTracer::RCSCounterFromScope(scope));
}
+#endif // defined(V8_RUNTIME_CALL_STATS)
}
GCTracer::Scope::~Scope() {
@@ -80,12 +87,23 @@ GCTracer::Scope::~Scope() {
if (thread_kind_ == ThreadKind::kMain) {
DCHECK_EQ(tracer_->heap_->isolate()->thread_id(), ThreadId::Current());
tracer_->AddScopeSample(scope_, duration_ms);
+ if (scope_ == ScopeId::MC_INCREMENTAL ||
+ scope_ == ScopeId::MC_INCREMENTAL_START ||
+ scope_ == MC_INCREMENTAL_FINALIZE) {
+ auto* long_task_stats =
+ tracer_->heap_->isolate()->GetCurrentLongTaskStats();
+ long_task_stats->gc_full_incremental_wall_clock_duration_us +=
+ static_cast<int64_t>(duration_ms *
+ base::Time::kMicrosecondsPerMillisecond);
+ }
} else {
tracer_->AddScopeSampleBackground(scope_, duration_ms);
}
+#ifdef V8_RUNTIME_CALL_STATS
if (V8_LIKELY(runtime_stats_ == nullptr)) return;
runtime_stats_->Leave(&timer_);
+#endif // defined(V8_RUNTIME_CALL_STATS)
}
const char* GCTracer::Scope::Name(ScopeId id) {
@@ -290,8 +308,10 @@ void GCTracer::StartInSafepoint() {
current_.start_object_size = heap_->SizeOfObjects();
current_.start_memory_size = heap_->memory_allocator()->Size();
current_.start_holes_size = CountTotalHolesSize(heap_);
- current_.young_object_size =
- heap_->new_space()->Size() + heap_->new_lo_space()->SizeOfObjects();
+ size_t new_space_size = (heap_->new_space() ? heap_->new_space()->Size() : 0);
+ size_t new_lo_space_size =
+ (heap_->new_lo_space() ? heap_->new_lo_space()->SizeOfObjects() : 0);
+ current_.young_object_size = new_space_size + new_lo_space_size;
}
void GCTracer::ResetIncrementalMarkingCounters() {
@@ -333,6 +353,9 @@ void GCTracer::Stop(GarbageCollector collector) {
AddAllocation(current_.end_time);
double duration = current_.end_time - current_.start_time;
+ int64_t duration_us =
+ static_cast<int64_t>(duration * base::Time::kMicrosecondsPerMillisecond);
+ auto* long_task_stats = heap_->isolate()->GetCurrentLongTaskStats();
switch (current_.type) {
case Event::SCAVENGER:
@@ -342,6 +365,7 @@ void GCTracer::Stop(GarbageCollector collector) {
recorded_minor_gcs_survived_.Push(
MakeBytesAndDuration(current_.survived_young_object_size, duration));
FetchBackgroundMinorGCCounters();
+ long_task_stats->gc_young_wall_clock_duration_us += duration_us;
break;
case Event::INCREMENTAL_MARK_COMPACTOR:
current_.incremental_marking_bytes = incremental_marking_bytes_;
@@ -361,6 +385,7 @@ void GCTracer::Stop(GarbageCollector collector) {
ResetIncrementalMarkingCounters();
combined_mark_compact_speed_cache_ = 0.0;
FetchBackgroundMarkCompactCounters();
+ long_task_stats->gc_full_atomic_wall_clock_duration_us += duration_us;
break;
case Event::MARK_COMPACTOR:
DCHECK_EQ(0u, current_.incremental_marking_bytes);
@@ -373,6 +398,7 @@ void GCTracer::Stop(GarbageCollector collector) {
ResetIncrementalMarkingCounters();
combined_mark_compact_speed_cache_ = 0.0;
FetchBackgroundMarkCompactCounters();
+ long_task_stats->gc_full_atomic_wall_clock_duration_us += duration_us;
break;
case Event::START:
UNREACHABLE();
diff --git a/deps/v8/src/heap/gc-tracer.h b/deps/v8/src/heap/gc-tracer.h
index 011889ba66..3a665726ca 100644
--- a/deps/v8/src/heap/gc-tracer.h
+++ b/deps/v8/src/heap/gc-tracer.h
@@ -113,9 +113,11 @@ class V8_EXPORT_PRIVATE GCTracer {
ScopeId scope_;
ThreadKind thread_kind_;
double start_time_;
+#ifdef V8_RUNTIME_CALL_STATS
RuntimeCallTimer timer_;
RuntimeCallStats* runtime_stats_ = nullptr;
base::Optional<WorkerThreadRuntimeCallStatsScope> runtime_call_stats_scope_;
+#endif // defined(V8_RUNTIME_CALL_STATS)
};
class Event {
@@ -195,7 +197,9 @@ class V8_EXPORT_PRIVATE GCTracer {
static double CombineSpeedsInBytesPerMillisecond(double default_speed,
double optional_speed);
+#ifdef V8_RUNTIME_CALL_STATS
static RuntimeCallCounterId RCSCounterFromScope(Scope::ScopeId id);
+#endif // defined(V8_RUNTIME_CALL_STATS)
explicit GCTracer(Heap* heap);
@@ -335,7 +339,9 @@ class V8_EXPORT_PRIVATE GCTracer {
double AverageTimeToIncrementalMarkingTask() const;
void RecordTimeToIncrementalMarkingTask(double time_to_task);
+#ifdef V8_RUNTIME_CALL_STATS
WorkerThreadRuntimeCallStats* worker_thread_runtime_call_stats();
+#endif // defined(V8_RUNTIME_CALL_STATS)
CollectionEpoch CurrentEpoch(Scope::ScopeId id);
diff --git a/deps/v8/src/heap/heap-inl.h b/deps/v8/src/heap/heap-inl.h
index 8372dd518d..8c2649e0ef 100644
--- a/deps/v8/src/heap/heap-inl.h
+++ b/deps/v8/src/heap/heap-inl.h
@@ -8,22 +8,17 @@
#include <cmath>
// Clients of this interface shouldn't depend on lots of heap internals.
-// Do not include anything from src/heap other than src/heap/heap.h and its
-// write barrier here!
+// Avoid including anything but `heap.h` from `src/heap` where possible.
#include "src/base/atomic-utils.h"
#include "src/base/atomicops.h"
#include "src/base/platform/platform.h"
+#include "src/base/sanitizer/msan.h"
#include "src/common/assert-scope.h"
-#include "src/heap/heap-write-barrier.h"
-#include "src/heap/heap.h"
-#include "src/heap/third-party/heap-api.h"
-#include "src/objects/feedback-vector.h"
-
-// TODO(gc): There is one more include to remove in order to no longer
-// leak heap internals to users of this interface!
#include "src/execution/isolate-data.h"
#include "src/execution/isolate.h"
#include "src/heap/code-object-registry.h"
+#include "src/heap/heap-write-barrier.h"
+#include "src/heap/heap.h"
#include "src/heap/large-spaces.h"
#include "src/heap/memory-allocator.h"
#include "src/heap/memory-chunk.h"
@@ -31,11 +26,13 @@
#include "src/heap/paged-spaces-inl.h"
#include "src/heap/read-only-spaces.h"
#include "src/heap/spaces-inl.h"
+#include "src/heap/third-party/heap-api.h"
#include "src/objects/allocation-site-inl.h"
#include "src/objects/api-callbacks-inl.h"
#include "src/objects/cell-inl.h"
#include "src/objects/descriptor-array.h"
#include "src/objects/feedback-cell-inl.h"
+#include "src/objects/feedback-vector.h"
#include "src/objects/literal-objects-inl.h"
#include "src/objects/objects-inl.h"
#include "src/objects/oddball.h"
@@ -45,7 +42,6 @@
#include "src/objects/slots-inl.h"
#include "src/objects/struct-inl.h"
#include "src/profiler/heap-profiler.h"
-#include "src/sanitizer/msan.h"
#include "src/strings/string-hasher.h"
#include "src/zone/zone-list-inl.h"
@@ -162,19 +158,12 @@ Address* Heap::OldSpaceAllocationLimitAddress() {
return old_space_->allocation_limit_address();
}
-void Heap::UpdateNewSpaceAllocationCounter() {
- new_space_allocation_counter_ = NewSpaceAllocationCounter();
-}
-
-size_t Heap::NewSpaceAllocationCounter() {
- return new_space_allocation_counter_ + new_space()->AllocatedSinceLastGC();
-}
-
-inline const base::AddressRegion& Heap::code_range() {
+inline const base::AddressRegion& Heap::code_region() {
#ifdef V8_ENABLE_THIRD_PARTY_HEAP
return tp_heap_->GetCodeRange();
#else
- return memory_allocator_->code_range();
+ static constexpr base::AddressRegion kEmptyRegion;
+ return code_range_ ? code_range_->reservation()->region() : kEmptyRegion;
#endif
}
@@ -189,7 +178,8 @@ AllocationResult Heap::AllocateRaw(int size_in_bytes, AllocationType type,
#ifdef V8_ENABLE_ALLOCATION_TIMEOUT
if (FLAG_random_gc_interval > 0 || FLAG_gc_interval >= 0) {
if (!always_allocate() && Heap::allocation_timeout_-- <= 0) {
- return AllocationResult::Retry();
+ AllocationSpace space = FLAG_single_generation ? OLD_SPACE : NEW_SPACE;
+ return AllocationResult::Retry(space);
}
}
#endif
@@ -197,6 +187,10 @@ AllocationResult Heap::AllocateRaw(int size_in_bytes, AllocationType type,
IncrementObjectCounters();
#endif
+ if (CanSafepoint()) {
+ main_thread_local_heap()->Safepoint();
+ }
+
size_t large_object_threshold = MaxRegularHeapObjectSize(type);
bool large_object =
static_cast<size_t>(size_in_bytes) > large_object_threshold;
@@ -245,6 +239,12 @@ AllocationResult Heap::AllocateRaw(int size_in_bytes, AllocationType type,
DCHECK(CanAllocateInReadOnlySpace());
DCHECK_EQ(AllocationOrigin::kRuntime, origin);
allocation = read_only_space_->AllocateRaw(size_in_bytes, alignment);
+ } else if (AllocationType::kSharedOld == type) {
+ allocation =
+ shared_old_allocator_->AllocateRaw(size_in_bytes, alignment, origin);
+ } else if (AllocationType::kSharedMap == type) {
+ allocation =
+ shared_map_allocator_->AllocateRaw(size_in_bytes, alignment, origin);
} else {
UNREACHABLE();
}
@@ -285,10 +285,9 @@ HeapObject Heap::AllocateRawWith(int size, AllocationType allocation,
DCHECK(AllowHeapAllocation::IsAllowed());
DCHECK_EQ(gc_state(), NOT_IN_GC);
Heap* heap = isolate()->heap();
- if (!V8_ENABLE_THIRD_PARTY_HEAP_BOOL &&
- allocation == AllocationType::kYoung &&
+ if (allocation == AllocationType::kYoung &&
alignment == AllocationAlignment::kWordAligned &&
- size <= MaxRegularHeapObjectSize(allocation)) {
+ size <= MaxRegularHeapObjectSize(allocation) && !FLAG_single_generation) {
Address* top = heap->NewSpaceAllocationTopAddress();
Address* limit = heap->NewSpaceAllocationLimitAddress();
if ((*limit - *top >= static_cast<unsigned>(size)) &&
@@ -383,17 +382,21 @@ void Heap::RegisterExternalString(String string) {
void Heap::FinalizeExternalString(String string) {
DCHECK(string.IsExternalString());
- Page* page = Page::FromHeapObject(string);
ExternalString ext_string = ExternalString::cast(string);
- page->DecrementExternalBackingStoreBytes(
- ExternalBackingStoreType::kExternalString,
- ext_string.ExternalPayloadSize());
+ if (!FLAG_enable_third_party_heap) {
+ Page* page = Page::FromHeapObject(string);
+ page->DecrementExternalBackingStoreBytes(
+ ExternalBackingStoreType::kExternalString,
+ ext_string.ExternalPayloadSize());
+ }
ext_string.DisposeResource(isolate());
}
-Address Heap::NewSpaceTop() { return new_space_->top(); }
+Address Heap::NewSpaceTop() {
+ return new_space_ ? new_space_->top() : kNullAddress;
+}
bool Heap::InYoungGeneration(Object object) {
DCHECK(!HasWeakHeapObjectTag(object));
@@ -458,7 +461,12 @@ bool Heap::InToPage(HeapObject heap_object) {
return BasicMemoryChunk::FromHeapObject(heap_object)->IsToPage();
}
-bool Heap::InOldSpace(Object object) { return old_space_->Contains(object); }
+bool Heap::InOldSpace(Object object) {
+ if (V8_ENABLE_THIRD_PARTY_HEAP_BOOL)
+ return object.IsHeapObject() &&
+ third_party_heap::Heap::InOldSpace(object.ptr());
+ return old_space_->Contains(object);
+}
// static
Heap* Heap::FromWritableHeapObject(HeapObject obj) {
@@ -502,7 +510,7 @@ AllocationMemento Heap::FindAllocationMemento(Map map, HeapObject object) {
// below (memento_address == top) ensures that this is safe. Mark the word as
// initialized to silence MemorySanitizer warnings.
MSAN_MEMORY_IS_INITIALIZED(candidate_map_slot.address(), kTaggedSize);
- if (!candidate_map_slot.contains_value(
+ if (!candidate_map_slot.contains_map_value(
ReadOnlyRoots(this).allocation_memento_map().ptr())) {
return AllocationMemento();
}
@@ -577,18 +585,23 @@ void Heap::UpdateAllocationSite(Map map, HeapObject object,
bool Heap::IsPendingAllocation(HeapObject object) {
// TODO(ulan): Optimize this function to perform 3 loads at most.
Address addr = object.address();
- Address top = new_space_->original_top_acquire();
- Address limit = new_space_->original_limit_relaxed();
- if (top <= addr && addr < limit) return true;
+ Address top, limit;
+
+ if (new_space_) {
+ top = new_space_->original_top_acquire();
+ limit = new_space_->original_limit_relaxed();
+ if (top && top <= addr && addr < limit) return true;
+ }
+
PagedSpaceIterator spaces(this);
for (PagedSpace* space = spaces.Next(); space != nullptr;
space = spaces.Next()) {
top = space->original_top_acquire();
limit = space->original_limit_relaxed();
- if (top <= addr && addr < limit) return true;
+ if (top && top <= addr && addr < limit) return true;
}
if (addr == lo_space_->pending_object()) return true;
- if (addr == new_lo_space_->pending_object()) return true;
+ if (new_lo_space_ && addr == new_lo_space_->pending_object()) return true;
if (addr == code_lo_space_->pending_object()) return true;
return false;
}
@@ -644,8 +657,8 @@ int Heap::NextDebuggingId() {
}
int Heap::GetNextTemplateSerialNumber() {
- int next_serial_number = next_template_serial_number().value() + 1;
- set_next_template_serial_number(Smi::FromInt(next_serial_number));
+ int next_serial_number = next_template_serial_number().value();
+ set_next_template_serial_number(Smi::FromInt(next_serial_number + 1));
return next_serial_number;
}
diff --git a/deps/v8/src/heap/heap-write-barrier.cc b/deps/v8/src/heap/heap-write-barrier.cc
index 63949de243..0030615bab 100644
--- a/deps/v8/src/heap/heap-write-barrier.cc
+++ b/deps/v8/src/heap/heap-write-barrier.cc
@@ -68,7 +68,16 @@ void WriteBarrier::MarkingSlow(Heap* heap, DescriptorArray descriptor_array,
int WriteBarrier::MarkingFromCode(Address raw_host, Address raw_slot) {
HeapObject host = HeapObject::cast(Object(raw_host));
MaybeObjectSlot slot(raw_slot);
- WriteBarrier::Marking(host, slot, *slot);
+ Address value = (*slot).ptr();
+#ifdef V8_MAP_PACKING
+ if (slot.address() == host.address()) {
+ // Clear metadata bits and fix object tag.
+ value = (value & ~Internals::kMapWordMetadataMask &
+ ~Internals::kMapWordXorMask) |
+ (uint64_t)kHeapObjectTag;
+ }
+#endif
+ WriteBarrier::Marking(host, slot, MaybeObject(value));
// Called by RecordWriteCodeStubAssembler, which doesnt accept void type
return 0;
}
diff --git a/deps/v8/src/heap/heap.cc b/deps/v8/src/heap/heap.cc
index d117d6c50e..9da67b7534 100644
--- a/deps/v8/src/heap/heap.cc
+++ b/deps/v8/src/heap/heap.cc
@@ -14,6 +14,7 @@
#include "src/api/api-inl.h"
#include "src/base/bits.h"
#include "src/base/flags.h"
+#include "src/base/logging.h"
#include "src/base/once.h"
#include "src/base/platform/mutex.h"
#include "src/base/utils/random-number-generator.h"
@@ -35,6 +36,7 @@
#include "src/heap/barrier.h"
#include "src/heap/base/stack.h"
#include "src/heap/code-object-registry.h"
+#include "src/heap/code-range.h"
#include "src/heap/code-stats.h"
#include "src/heap/collection-barrier.h"
#include "src/heap/combined-heap.h"
@@ -323,7 +325,9 @@ size_t Heap::SemiSpaceSizeFromYoungGenerationSize(
size_t Heap::Capacity() {
if (!HasBeenSetUp()) return 0;
- return new_space_->Capacity() + OldGenerationCapacity();
+ if (FLAG_enable_third_party_heap) return tp_heap_->Capacity();
+
+ return NewSpaceCapacity() + OldGenerationCapacity();
}
size_t Heap::OldGenerationCapacity() {
@@ -358,7 +362,10 @@ size_t Heap::CommittedMemoryOfUnmapper() {
size_t Heap::CommittedMemory() {
if (!HasBeenSetUp()) return 0;
- return new_space_->CommittedMemory() + new_lo_space_->Size() +
+ size_t new_space_committed = new_space_ ? new_space_->CommittedMemory() : 0;
+ size_t new_lo_space_committed = new_lo_space_ ? new_lo_space_->Size() : 0;
+
+ return new_space_committed + new_lo_space_committed +
CommittedOldGenerationMemory();
}
@@ -421,14 +428,17 @@ bool Heap::CanExpandOldGenerationBackground(LocalHeap* local_heap,
}
bool Heap::CanPromoteYoungAndExpandOldGeneration(size_t size) {
+ size_t new_space_capacity = NewSpaceCapacity();
+ size_t new_lo_space_capacity = new_lo_space_ ? new_lo_space_->Size() : 0;
+
// Over-estimate the new space size using capacity to allow some slack.
- return CanExpandOldGeneration(size + new_space_->Capacity() +
- new_lo_space_->Size());
+ return CanExpandOldGeneration(size + new_space_capacity +
+ new_lo_space_capacity);
}
bool Heap::HasBeenSetUp() const {
- // We will always have a new space when the heap is set up.
- return new_space_ != nullptr;
+ // We will always have an old space when the heap is set up.
+ return old_space_ != nullptr;
}
GarbageCollector Heap::SelectGarbageCollector(AllocationSpace space,
@@ -440,7 +450,7 @@ GarbageCollector Heap::SelectGarbageCollector(AllocationSpace space,
return MARK_COMPACTOR;
}
- if (FLAG_gc_global || ShouldStressCompaction()) {
+ if (FLAG_gc_global || ShouldStressCompaction() || FLAG_single_generation) {
*reason = "GC in old space forced by flags";
return MARK_COMPACTOR;
}
@@ -485,7 +495,7 @@ void Heap::PrintShortHeapStatistics() {
"New space, used: %6zu KB"
", available: %6zu KB"
", committed: %6zu KB\n",
- new_space_->Size() / KB, new_space_->Available() / KB,
+ NewSpaceSize() / KB, new_space_->Available() / KB,
new_space_->CommittedMemory() / KB);
PrintIsolate(isolate_,
"New large object space, used: %6zu KB"
@@ -788,6 +798,58 @@ void Heap::PrintRetainingPath(HeapObject target, RetainingPathOption option) {
PrintF("-------------------------------------------------\n");
}
+void UpdateRetainersMapAfterScavenge(
+ std::unordered_map<HeapObject, HeapObject, Object::Hasher>* map) {
+ std::unordered_map<HeapObject, HeapObject, Object::Hasher> updated_map;
+
+ for (auto pair : *map) {
+ HeapObject object = pair.first;
+ HeapObject retainer = pair.second;
+
+ if (Heap::InFromPage(object)) {
+ MapWord map_word = object.map_word(kRelaxedLoad);
+ if (!map_word.IsForwardingAddress()) continue;
+ object = map_word.ToForwardingAddress();
+ }
+
+ if (Heap::InFromPage(retainer)) {
+ MapWord map_word = retainer.map_word(kRelaxedLoad);
+ if (!map_word.IsForwardingAddress()) continue;
+ retainer = map_word.ToForwardingAddress();
+ }
+
+ updated_map[object] = retainer;
+ }
+
+ *map = std::move(updated_map);
+}
+
+void Heap::UpdateRetainersAfterScavenge() {
+ if (!incremental_marking()->IsMarking()) return;
+
+ // This isn't supported for Minor MC.
+ DCHECK(!FLAG_minor_mc);
+
+ UpdateRetainersMapAfterScavenge(&retainer_);
+ UpdateRetainersMapAfterScavenge(&ephemeron_retainer_);
+
+ std::unordered_map<HeapObject, Root, Object::Hasher> updated_retaining_root;
+
+ for (auto pair : retaining_root_) {
+ HeapObject object = pair.first;
+
+ if (Heap::InFromPage(object)) {
+ MapWord map_word = object.map_word(kRelaxedLoad);
+ if (!map_word.IsForwardingAddress()) continue;
+ object = map_word.ToForwardingAddress();
+ }
+
+ updated_retaining_root[object] = pair.second;
+ }
+
+ retaining_root_ = std::move(updated_retaining_root);
+}
+
void Heap::AddRetainer(HeapObject retainer, HeapObject object) {
if (retainer_.count(object)) return;
retainer_[object] = retainer;
@@ -850,7 +912,7 @@ void Heap::GarbageCollectionPrologue() {
if (FLAG_gc_verbose) Print();
#endif // DEBUG
- if (new_space_->IsAtMaximumCapacity()) {
+ if (new_space_ && new_space_->IsAtMaximumCapacity()) {
maximum_size_scavenges_++;
} else {
maximum_size_scavenges_ = 0;
@@ -867,9 +929,20 @@ void Heap::GarbageCollectionPrologueInSafepoint() {
TRACE_GC(tracer(), GCTracer::Scope::HEAP_PROLOGUE_SAFEPOINT);
gc_count_++;
- UpdateNewSpaceAllocationCounter();
- CheckNewSpaceExpansionCriteria();
- new_space_->ResetParkedAllocationBuffers();
+ if (new_space_) {
+ UpdateNewSpaceAllocationCounter();
+ CheckNewSpaceExpansionCriteria();
+ new_space_->ResetParkedAllocationBuffers();
+ }
+}
+
+void Heap::UpdateNewSpaceAllocationCounter() {
+ new_space_allocation_counter_ = NewSpaceAllocationCounter();
+}
+
+size_t Heap::NewSpaceAllocationCounter() {
+ return new_space_allocation_counter_ +
+ (new_space_ ? new_space()->AllocatedSinceLastGC() : 0);
}
size_t Heap::SizeOfObjects() {
@@ -894,7 +967,7 @@ void Heap::MergeAllocationSitePretenuringFeedback(
AllocationSite site;
for (auto& site_and_count : local_pretenuring_feedback) {
site = site_and_count.first;
- MapWord map_word = site_and_count.first.map_word();
+ MapWord map_word = site_and_count.first.map_word(kRelaxedLoad);
if (map_word.IsForwardingAddress()) {
site = AllocationSite::cast(map_word.ToForwardingAddress());
}
@@ -944,14 +1017,15 @@ void Heap::RemoveAllocationObserversFromAllSpaces(
}
void Heap::PublishPendingAllocations() {
- new_space_->MarkLabStartInitialized();
+ if (FLAG_enable_third_party_heap) return;
+ if (new_space_) new_space_->MarkLabStartInitialized();
PagedSpaceIterator spaces(this);
for (PagedSpace* space = spaces.Next(); space != nullptr;
space = spaces.Next()) {
space->MoveOriginalTopForward();
}
lo_space_->ResetPendingObject();
- new_lo_space_->ResetPendingObject();
+ if (new_lo_space_) new_lo_space_->ResetPendingObject();
code_lo_space_->ResetPendingObject();
}
@@ -981,6 +1055,12 @@ inline bool MakePretenureDecision(
return false;
}
+// Clear feedback calculation fields until the next gc.
+inline void ResetPretenuringFeedback(AllocationSite site) {
+ site.set_memento_found_count(0);
+ site.set_memento_create_count(0);
+}
+
inline bool DigestPretenuringFeedback(Isolate* isolate, AllocationSite site,
bool maximum_size_scavenge) {
bool deopt = false;
@@ -1008,11 +1088,34 @@ inline bool DigestPretenuringFeedback(Isolate* isolate, AllocationSite site,
site.PretenureDecisionName(site.pretenure_decision()));
}
- // Clear feedback calculation fields until the next gc.
- site.set_memento_found_count(0);
- site.set_memento_create_count(0);
+ ResetPretenuringFeedback(site);
return deopt;
}
+
+bool PretenureAllocationSiteManually(Isolate* isolate, AllocationSite site) {
+ AllocationSite::PretenureDecision current_decision =
+ site.pretenure_decision();
+ bool deopt = true;
+ if (current_decision == AllocationSite::kUndecided ||
+ current_decision == AllocationSite::kMaybeTenure) {
+ site.set_deopt_dependent_code(true);
+ site.set_pretenure_decision(AllocationSite::kTenure);
+ } else {
+ deopt = false;
+ }
+ if (FLAG_trace_pretenuring_statistics) {
+ PrintIsolate(isolate,
+ "pretenuring manually requested: AllocationSite(%p): "
+ "%s => %s\n",
+ reinterpret_cast<void*>(site.ptr()),
+ site.PretenureDecisionName(current_decision),
+ site.PretenureDecisionName(site.pretenure_decision()));
+ }
+
+ ResetPretenuringFeedback(site);
+ return deopt;
+}
+
} // namespace
void Heap::RemoveAllocationSitePretenuringFeedback(AllocationSite site) {
@@ -1020,7 +1123,8 @@ void Heap::RemoveAllocationSitePretenuringFeedback(AllocationSite site) {
}
bool Heap::DeoptMaybeTenuredAllocationSites() {
- return new_space_->IsAtMaximumCapacity() && maximum_size_scavenges_ == 0;
+ return new_space_ && new_space_->IsAtMaximumCapacity() &&
+ maximum_size_scavenges_ == 0;
}
void Heap::ProcessPretenuringFeedback() {
@@ -1060,7 +1164,18 @@ void Heap::ProcessPretenuringFeedback() {
}
}
- // Step 2: Deopt maybe tenured allocation sites if necessary.
+ // Step 2: Pretenure allocation sites for manual requests.
+ if (allocation_sites_to_pretenure_) {
+ while (!allocation_sites_to_pretenure_->empty()) {
+ auto site = allocation_sites_to_pretenure_->Pop();
+ if (PretenureAllocationSiteManually(isolate_, site)) {
+ trigger_deoptimization = true;
+ }
+ }
+ allocation_sites_to_pretenure_.reset();
+ }
+
+ // Step 3: Deopt maybe tenured allocation sites if necessary.
bool deopt_maybe_tenured = DeoptMaybeTenuredAllocationSites();
if (deopt_maybe_tenured) {
ForeachAllocationSite(
@@ -1096,6 +1211,14 @@ void Heap::ProcessPretenuringFeedback() {
}
}
+void Heap::PretenureAllocationSiteOnNextCollection(AllocationSite site) {
+ if (!allocation_sites_to_pretenure_) {
+ allocation_sites_to_pretenure_.reset(
+ new GlobalHandleVector<AllocationSite>(this));
+ }
+ allocation_sites_to_pretenure_->Push(site);
+}
+
void Heap::InvalidateCodeDeoptimizationData(Code code) {
CodePageMemoryModificationScope modification_scope(code);
code.set_deoptimization_data(ReadOnlyRoots(this).empty_fixed_array());
@@ -1145,7 +1268,10 @@ void Heap::GarbageCollectionEpilogueInSafepoint(GarbageCollector collector) {
UPDATE_COUNTERS_FOR_SPACE(space) \
UPDATE_FRAGMENTATION_FOR_SPACE(space)
- UPDATE_COUNTERS_FOR_SPACE(new_space)
+ if (new_space()) {
+ UPDATE_COUNTERS_FOR_SPACE(new_space)
+ }
+
UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(old_space)
UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(code_space)
UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(map_space)
@@ -1175,16 +1301,14 @@ void Heap::GarbageCollectionEpilogueInSafepoint(GarbageCollector collector) {
ZapFromSpace();
}
- {
+ if (new_space()) {
TRACE_GC(tracer(), GCTracer::Scope::HEAP_EPILOGUE_REDUCE_NEW_SPACE);
ReduceNewSpaceSize();
}
// Set main thread state back to Running from CollectionRequested.
- LocalHeap* main_thread_local_heap = isolate()->main_thread_local_heap();
-
LocalHeap::ThreadState old_state =
- main_thread_local_heap->state_.exchange(LocalHeap::kRunning);
+ main_thread_local_heap()->state_.exchange(LocalHeap::kRunning);
CHECK(old_state == LocalHeap::kRunning ||
old_state == LocalHeap::kCollectionRequested);
@@ -1404,8 +1528,7 @@ void Heap::CollectAllAvailableGarbage(GarbageCollectionReason gc_reason) {
if (gc_reason == GarbageCollectionReason::kLastResort) {
InvokeNearHeapLimitCallback();
}
- RuntimeCallTimerScope runtime_timer(
- isolate(), RuntimeCallCounterId::kGC_Custom_AllAvailableGarbage);
+ RCS_SCOPE(isolate(), RuntimeCallCounterId::kGC_Custom_AllAvailableGarbage);
// The optimizing compiler may be unnecessarily holding on to memory.
isolate()->AbortConcurrentOptimization(BlockingBehavior::kDontBlock);
@@ -1512,6 +1635,7 @@ void Heap::EnsureFillerObjectAtTop() {
// evacuation of a non-full new space (or if we are on the last page) there
// may be uninitialized memory behind top. We fill the remainder of the page
// with a filler.
+ if (!new_space_) return;
Address to_top = new_space_->top();
Page* page = Page::FromAddress(to_top - kTaggedSize);
if (page->Contains(to_top)) {
@@ -1593,6 +1717,16 @@ bool Heap::CollectGarbage(AllocationSpace space,
if (collector == MARK_COMPACTOR) {
committed_memory_before = CommittedOldGenerationMemory();
+ if (cpp_heap()) {
+ // CppHeap needs a stack marker at the top of all entry points to allow
+ // deterministic passes over the stack. E.g., a verifier that should only
+ // find a subset of references of the marker.
+ //
+ // TODO(chromium:1056170): Consider adding a component that keeps track
+ // of relevant GC stack regions where interesting pointers can be found.
+ static_cast<v8::internal::CppHeap*>(cpp_heap())
+ ->SetStackEndOfCurrentGC(v8::base::Stack::GetCurrentStackPosition());
+ }
}
{
@@ -1800,7 +1934,7 @@ void Heap::StartIncrementalMarkingIfAllocationLimitIsReached(
} else if (reached_limit == IncrementalMarkingLimit::kHardLimit) {
StartIncrementalMarking(
gc_flags,
- OldGenerationSpaceAvailable() <= new_space_->Capacity()
+ OldGenerationSpaceAvailable() <= NewSpaceCapacity()
? GarbageCollectionReason::kAllocationLimit
: GarbageCollectionReason::kGlobalAllocationLimit,
gc_callback_flags);
@@ -1816,7 +1950,7 @@ void Heap::StartIncrementalMarkingIfAllocationLimitIsReachedBackground() {
const size_t old_generation_space_available = OldGenerationSpaceAvailable();
- if (old_generation_space_available < new_space_->Capacity()) {
+ if (old_generation_space_available < NewSpaceCapacity()) {
incremental_marking()->incremental_marking_job()->ScheduleTask(this);
}
}
@@ -1943,6 +2077,7 @@ static void VerifyStringTable(Isolate* isolate) {
#endif // VERIFY_HEAP
void Heap::EnsureFromSpaceIsCommitted() {
+ if (!new_space_) return;
if (new_space_->CommitFromSpaceIfNeeded()) return;
// Committing memory to from space failed.
@@ -2024,6 +2159,9 @@ size_t Heap::PerformGarbageCollection(
SafepointScope safepoint_scope(this);
+ // Shared isolates cannot have any clients when running GC at the moment.
+ DCHECK_IMPLIES(IsShared(), !isolate()->HasClientIsolates());
+
collection_barrier_->StopTimeToCollectionTimer();
#ifdef VERIFY_HEAP
@@ -2039,7 +2177,7 @@ size_t Heap::PerformGarbageCollection(
EnsureFromSpaceIsCommitted();
size_t start_young_generation_size =
- Heap::new_space()->Size() + new_lo_space()->SizeOfObjects();
+ NewSpaceSize() + (new_lo_space() ? new_lo_space()->SizeOfObjects() : 0);
switch (collector) {
case MARK_COMPACTOR:
@@ -2173,7 +2311,7 @@ void Heap::RecomputeLimits(GarbageCollector collector) {
}
size_t old_gen_size = OldGenerationSizeOfObjects();
- size_t new_space_capacity = new_space()->Capacity();
+ size_t new_space_capacity = NewSpaceCapacity();
HeapGrowingMode mode = CurrentHeapGrowingMode();
if (collector == MARK_COMPACTOR) {
@@ -2219,8 +2357,7 @@ void Heap::RecomputeLimits(GarbageCollector collector) {
}
void Heap::CallGCPrologueCallbacks(GCType gc_type, GCCallbackFlags flags) {
- RuntimeCallTimerScope runtime_timer(
- isolate(), RuntimeCallCounterId::kGCPrologueCallback);
+ RCS_SCOPE(isolate(), RuntimeCallCounterId::kGCPrologueCallback);
for (const GCCallbackTuple& info : gc_prologue_callbacks_) {
if (gc_type & info.gc_type) {
v8::Isolate* isolate = reinterpret_cast<v8::Isolate*>(this->isolate());
@@ -2230,8 +2367,7 @@ void Heap::CallGCPrologueCallbacks(GCType gc_type, GCCallbackFlags flags) {
}
void Heap::CallGCEpilogueCallbacks(GCType gc_type, GCCallbackFlags flags) {
- RuntimeCallTimerScope runtime_timer(
- isolate(), RuntimeCallCounterId::kGCEpilogueCallback);
+ RCS_SCOPE(isolate(), RuntimeCallCounterId::kGCEpilogueCallback);
for (const GCCallbackTuple& info : gc_epilogue_callbacks_) {
if (gc_type & info.gc_type) {
v8::Isolate* isolate = reinterpret_cast<v8::Isolate*>(this->isolate());
@@ -2280,7 +2416,7 @@ void Heap::MarkCompact() {
void Heap::MinorMarkCompact() {
#ifdef ENABLE_MINOR_MC
- DCHECK(FLAG_minor_mc);
+ DCHECK(FLAG_minor_mc && !FLAG_single_generation);
PauseAllocationObserversScope pause_observers(this);
SetGCState(MINOR_MARK_COMPACT);
@@ -2387,6 +2523,8 @@ void Heap::EvacuateYoungGeneration() {
}
void Heap::Scavenge() {
+ DCHECK(!FLAG_single_generation);
+
if (fast_promotion_mode_ && CanPromoteYoungAndExpandOldGeneration(0)) {
tracer()->NotifyYoungGenerationHandling(
YoungGenerationHandling::kFastPromotionDuringScavenge);
@@ -2435,12 +2573,15 @@ void Heap::Scavenge() {
}
void Heap::ComputeFastPromotionMode() {
+ if (!new_space_) return;
+
const size_t survived_in_new_space =
- survived_last_scavenge_ * 100 / new_space_->Capacity();
+ survived_last_scavenge_ * 100 / NewSpaceCapacity();
fast_promotion_mode_ =
!FLAG_optimize_for_size && FLAG_fast_promotion_new_space &&
!ShouldReduceMemory() && new_space_->IsAtMaximumCapacity() &&
survived_in_new_space >= kMinPromotedPercentForFastPromotionMode;
+
if (FLAG_trace_gc_verbose && !FLAG_trace_gc_ignore_scavenger) {
PrintIsolate(isolate(), "Fast promotion mode: %s survival rate: %zu%%\n",
fast_promotion_mode_ ? "true" : "false",
@@ -2488,6 +2629,8 @@ bool Heap::ExternalStringTable::Contains(String string) {
void Heap::UpdateExternalString(String string, size_t old_payload,
size_t new_payload) {
DCHECK(string.IsExternalString());
+ if (FLAG_enable_third_party_heap) return;
+
Page* page = Page::FromHeapObject(string);
if (old_payload > new_payload) {
@@ -2502,7 +2645,7 @@ void Heap::UpdateExternalString(String string, size_t old_payload,
String Heap::UpdateYoungReferenceInExternalStringTableEntry(Heap* heap,
FullObjectSlot p) {
HeapObject obj = HeapObject::cast(*p);
- MapWord first_word = obj.map_word();
+ MapWord first_word = obj.map_word(kRelaxedLoad);
String new_string;
@@ -2863,7 +3006,7 @@ HeapObject Heap::AlignWithFiller(ReadOnlyRoots roots, HeapObject object,
void* Heap::AllocateExternalBackingStore(
const std::function<void*(size_t)>& allocate, size_t byte_length) {
- if (!always_allocate()) {
+ if (!always_allocate() && new_space()) {
size_t new_space_backing_store_bytes =
new_space()->ExternalBackingStoreBytes();
if (new_space_backing_store_bytes >= 2 * kMaxSemiSpaceSize &&
@@ -2874,8 +3017,6 @@ void* Heap::AllocateExternalBackingStore(
GarbageCollectionReason::kExternalMemoryPressure);
}
}
- // TODO(ulan): Perform GCs proactively based on the byte_length and
- // the current external backing store counters.
void* result = allocate(byte_length);
if (result) return result;
if (!always_allocate()) {
@@ -2948,7 +3089,7 @@ HeapObject CreateFillerObjectAtImpl(ReadOnlyRoots roots, Address addr, int size,
DCHECK_GT(size, 2 * kTaggedSize);
filler.set_map_after_allocation(roots.unchecked_free_space_map(),
SKIP_WRITE_BARRIER);
- FreeSpace::cast(filler).relaxed_write_size(size);
+ FreeSpace::cast(filler).set_size(size, kRelaxedStore);
if (clear_memory_mode == ClearFreedMemoryMode::kClearFreedMemory) {
MemsetTagged(ObjectSlot(addr) + 2, Object(kClearedFreeMemoryValue),
(size / kTaggedSize) - 2);
@@ -2957,7 +3098,7 @@ HeapObject CreateFillerObjectAtImpl(ReadOnlyRoots roots, Address addr, int size,
// At this point, we may be deserializing the heap from a snapshot, and
// none of the maps have been created yet and are nullptr.
- DCHECK((filler.map_slot().contains_value(kNullAddress) &&
+ DCHECK((filler.map_slot().contains_map_value(kNullAddress) &&
!Heap::FromWritableHeapObject(filler)->deserialization_complete()) ||
filler.map().IsMap());
@@ -2969,8 +3110,7 @@ void VerifyNoNeedToClearSlots(Address start, Address end) {
BasicMemoryChunk* basic_chunk = BasicMemoryChunk::FromAddress(start);
if (basic_chunk->InReadOnlySpace()) return;
MemoryChunk* chunk = static_cast<MemoryChunk*>(basic_chunk);
- // TODO(ulan): Support verification of large pages.
- if (chunk->InYoungGeneration() || chunk->IsLargePage()) return;
+ if (chunk->InYoungGeneration()) return;
BaseSpace* space = chunk->owner();
space->heap()->VerifySlotRangeHasNoRecordedSlots(start, end);
}
@@ -3046,6 +3186,9 @@ bool Heap::IsImmovable(HeapObject object) {
}
bool Heap::IsLargeObject(HeapObject object) {
+ if (V8_ENABLE_THIRD_PARTY_HEAP_BOOL)
+ return third_party_heap::Heap::InLargeObjectSpace(object.address()) ||
+ third_party_heap::Heap::InSpace(object.address(), CODE_LO_SPACE);
return BasicMemoryChunk::FromHeapObject(object)->IsLargePage();
}
@@ -3109,6 +3252,9 @@ void Heap::OnMoveEvent(HeapObject target, HeapObject source,
if (target.IsSharedFunctionInfo()) {
LOG_CODE_EVENT(isolate_, SharedFunctionInfoMoveEvent(source.address(),
target.address()));
+ } else if (target.IsNativeContext()) {
+ PROFILE(isolate_,
+ NativeContextMoveEvent(source.address(), target.address()));
}
if (FLAG_verify_predictable) {
@@ -3184,7 +3330,8 @@ FixedArrayBase Heap::LeftTrimFixedArray(FixedArrayBase object,
// Initialize header of the trimmed array. Since left trimming is only
// performed on pages which are not concurrently swept creating a filler
// object does not require synchronization.
- RELAXED_WRITE_FIELD(object, bytes_to_trim, map);
+ RELAXED_WRITE_FIELD(object, bytes_to_trim,
+ Object(MapWord::FromMap(map).ptr()));
RELAXED_WRITE_FIELD(object, bytes_to_trim + kTaggedSize,
Smi::FromInt(len - elements_to_trim));
@@ -3298,7 +3445,7 @@ void Heap::CreateFillerForArray(T object, int elements_to_trim,
// Initialize header of the trimmed array. We are storing the new length
// using release store after creating a filler for the left-over space to
// avoid races with the sweeper thread.
- object.synchronized_set_length(object.length() - elements_to_trim);
+ object.set_length(object.length() - elements_to_trim, kReleaseStore);
// Notify the heap object allocation tracker of change in object layout. The
// array may not be moved during GC, and size has to be adjusted nevertheless.
@@ -3451,8 +3598,6 @@ void Heap::ActivateMemoryReducerIfNeeded() {
}
void Heap::ReduceNewSpaceSize() {
- // TODO(ulan): Unify this constant with the similar constant in
- // GCIdleTimeHandler once the change is merged to 4.5.
static const size_t kLowAllocationThroughput = 1000;
const double allocation_throughput =
tracer()->CurrentAllocationThroughputInBytesPerMillisecond();
@@ -3468,6 +3613,12 @@ void Heap::ReduceNewSpaceSize() {
}
}
+size_t Heap::NewSpaceSize() { return new_space() ? new_space()->Size() : 0; }
+
+size_t Heap::NewSpaceCapacity() {
+ return new_space() ? new_space()->Capacity() : 0;
+}
+
void Heap::FinalizeIncrementalMarkingIfComplete(
GarbageCollectionReason gc_reason) {
if (incremental_marking()->IsMarking() &&
@@ -3582,6 +3733,8 @@ class SlotCollectingVisitor final : public ObjectVisitor {
UNREACHABLE();
}
+ void VisitMapPointer(HeapObject object) override {} // do nothing by default
+
int number_of_slots() { return static_cast<int>(slots_.size()); }
MaybeObjectSlot slot(int i) { return slots_[i]; }
@@ -3613,13 +3766,13 @@ void Heap::VerifyObjectLayoutChange(HeapObject object, Map new_map) {
// Check that the set of slots before and after the transition match.
SlotCollectingVisitor old_visitor;
object.IterateFast(&old_visitor);
- MapWord old_map_word = object.map_word();
+ MapWord old_map_word = object.map_word(kRelaxedLoad);
// Temporarily set the new map to iterate new slots.
- object.set_map_word(MapWord::FromMap(new_map));
+ object.set_map_word(MapWord::FromMap(new_map), kRelaxedStore);
SlotCollectingVisitor new_visitor;
object.IterateFast(&new_visitor);
// Restore the old map.
- object.set_map_word(old_map_word);
+ object.set_map_word(old_map_word, kRelaxedStore);
DCHECK_EQ(new_visitor.number_of_slots(), old_visitor.number_of_slots());
for (int i = 0; i < new_visitor.number_of_slots(); i++) {
DCHECK_EQ(new_visitor.slot(i), old_visitor.slot(i));
@@ -3692,12 +3845,15 @@ void Heap::IdleNotificationEpilogue(GCIdleTimeAction action,
}
}
-double Heap::MonotonicallyIncreasingTimeInMs() {
+double Heap::MonotonicallyIncreasingTimeInMs() const {
return V8::GetCurrentPlatform()->MonotonicallyIncreasingTime() *
static_cast<double>(base::Time::kMillisecondsPerSecond);
}
-void Heap::VerifyNewSpaceTop() { new_space()->VerifyTop(); }
+void Heap::VerifyNewSpaceTop() {
+ if (!new_space()) return;
+ new_space()->VerifyTop();
+}
bool Heap::IdleNotification(int idle_time_in_ms) {
return IdleNotification(
@@ -3866,6 +4022,11 @@ void Heap::AppendArrayBufferExtension(JSArrayBuffer object,
array_buffer_sweeper_->Append(object, extension);
}
+void Heap::DetachArrayBufferExtension(JSArrayBuffer object,
+ ArrayBufferExtension* extension) {
+ return array_buffer_sweeper_->Detach(object, extension);
+}
+
void Heap::AutomaticallyRestoreInitialHeapLimit(double threshold_percent) {
initial_max_old_generation_size_threshold_ =
initial_max_old_generation_size_ * threshold_percent;
@@ -4009,13 +4170,23 @@ bool Heap::Contains(HeapObject value) const {
return false;
}
return HasBeenSetUp() &&
- (new_space_->ToSpaceContains(value) || old_space_->Contains(value) ||
- code_space_->Contains(value) || map_space_->Contains(value) ||
- lo_space_->Contains(value) || code_lo_space_->Contains(value) ||
- new_lo_space_->Contains(value));
+ ((new_space_ && new_space_->ToSpaceContains(value)) ||
+ old_space_->Contains(value) || code_space_->Contains(value) ||
+ map_space_->Contains(value) || lo_space_->Contains(value) ||
+ code_lo_space_->Contains(value) ||
+ (new_lo_space_ && new_lo_space_->Contains(value)));
+}
+
+bool Heap::SharedHeapContains(HeapObject value) const {
+ if (shared_old_space_)
+ return shared_old_space_->Contains(value) ||
+ shared_map_space_->Contains(value);
+ return false;
}
bool Heap::InSpace(HeapObject value, AllocationSpace space) const {
+ if (V8_ENABLE_THIRD_PARTY_HEAP_BOOL)
+ return third_party_heap::Heap::InSpace(value.address(), space);
if (memory_allocator()->IsOutsideAllocatedSpace(value.address())) {
return false;
}
@@ -4042,6 +4213,8 @@ bool Heap::InSpace(HeapObject value, AllocationSpace space) const {
UNREACHABLE();
}
+bool Heap::IsShared() { return isolate()->is_shared(); }
+
bool Heap::InSpaceSlow(Address addr, AllocationSpace space) const {
if (memory_allocator()->IsOutsideAllocatedSpace(addr)) {
return false;
@@ -4116,7 +4289,7 @@ void Heap::Verify() {
VerifySmisVisitor smis_visitor;
IterateSmiRoots(&smis_visitor);
- new_space_->Verify(isolate());
+ if (new_space_) new_space_->Verify(isolate());
old_space_->Verify(isolate(), &visitor);
map_space_->Verify(isolate(), &visitor);
@@ -4126,7 +4299,7 @@ void Heap::Verify() {
lo_space_->Verify(isolate());
code_lo_space_->Verify(isolate());
- new_lo_space_->Verify(isolate());
+ if (new_lo_space_) new_lo_space_->Verify(isolate());
VerifyStringTable(isolate());
}
@@ -4147,7 +4320,7 @@ class SlotVerifyingVisitor : public ObjectVisitor {
ObjectSlot end) override {
#ifdef DEBUG
for (ObjectSlot slot = start; slot < end; ++slot) {
- DCHECK(!HasWeakHeapObjectTag(*slot));
+ DCHECK(!MapWord::IsPacked((*slot).ptr()) || !HasWeakHeapObjectTag(*slot));
}
#endif // DEBUG
VisitPointers(host, MaybeObjectSlot(start), MaybeObjectSlot(end));
@@ -4315,7 +4488,7 @@ void Heap::VerifyCountersBeforeConcurrentSweeping() {
#endif
void Heap::ZapFromSpace() {
- if (!new_space_->IsFromSpaceCommitted()) return;
+ if (!new_space_ || !new_space_->IsFromSpaceCommitted()) return;
for (Page* page : PageRange(new_space_->from_space().first_page(), nullptr)) {
memory_allocator()->ZapBlock(page->area_start(),
page->HighWaterMark() - page->area_start(),
@@ -4397,18 +4570,20 @@ class FixStaleLeftTrimmedHandlesVisitor : public RootVisitor {
void VisitRootPointers(Root root, const char* description,
FullObjectSlot start, FullObjectSlot end) override {
- for (FullObjectSlot p = start; p < end; ++p) FixHandle(p);
+ for (FullObjectSlot p = start; p < end; ++p) {
+ FixHandle(p);
+ }
}
private:
inline void FixHandle(FullObjectSlot p) {
if (!(*p).IsHeapObject()) return;
HeapObject current = HeapObject::cast(*p);
- if (!current.map_word().IsForwardingAddress() &&
+ if (!current.map_word(kRelaxedLoad).IsForwardingAddress() &&
current.IsFreeSpaceOrFiller()) {
#ifdef DEBUG
// We need to find a FixedArrayBase map after walking the fillers.
- while (!current.map_word().IsForwardingAddress() &&
+ while (!current.map_word(kRelaxedLoad).IsForwardingAddress() &&
current.IsFreeSpaceOrFiller()) {
Address next = current.ptr();
if (current.map() == ReadOnlyRoots(heap_).one_pointer_filler_map()) {
@@ -4421,7 +4596,7 @@ class FixStaleLeftTrimmedHandlesVisitor : public RootVisitor {
}
current = HeapObject::cast(Object(next));
}
- DCHECK(current.map_word().IsForwardingAddress() ||
+ DCHECK(current.map_word(kRelaxedLoad).IsForwardingAddress() ||
current.IsFixedArrayBase());
#endif // DEBUG
p.store(Smi::zero());
@@ -4502,8 +4677,10 @@ void Heap::IterateRoots(RootVisitor* v, base::EnumSet<SkipRoot> options) {
// Iterate over local handles in handle scopes.
FixStaleLeftTrimmedHandlesVisitor left_trim_visitor(this);
#ifndef V8_ENABLE_CONSERVATIVE_STACK_SCANNING
- isolate_->handle_scope_implementer()->Iterate(&left_trim_visitor);
- isolate_->handle_scope_implementer()->Iterate(v);
+ if (!options.contains(SkipRoot::kMainThreadHandles)) {
+ isolate_->handle_scope_implementer()->Iterate(&left_trim_visitor);
+ isolate_->handle_scope_implementer()->Iterate(v);
+ }
#endif
safepoint_->Iterate(&left_trim_visitor);
@@ -4772,8 +4949,8 @@ void Heap::RecordStats(HeapStats* stats, bool take_snapshot) {
*stats->end_marker = HeapStats::kEndMarker;
*stats->ro_space_size = read_only_space_->Size();
*stats->ro_space_capacity = read_only_space_->Capacity();
- *stats->new_space_size = new_space_->Size();
- *stats->new_space_capacity = new_space_->Capacity();
+ *stats->new_space_size = NewSpaceSize();
+ *stats->new_space_capacity = NewSpaceCapacity();
*stats->old_space_size = old_space_->SizeOfObjects();
*stats->old_space_capacity = old_space_->Capacity();
*stats->code_space_size = code_space_->SizeOfObjects();
@@ -5036,9 +5213,9 @@ Heap::IncrementalMarkingLimit Heap::IncrementalMarkingLimitReached() {
const base::Optional<size_t> global_memory_available =
GlobalMemoryAvailable();
- if (old_generation_space_available > new_space_->Capacity() &&
+ if (old_generation_space_available > NewSpaceCapacity() &&
(!global_memory_available ||
- global_memory_available > new_space_->Capacity())) {
+ global_memory_available > NewSpaceCapacity())) {
return IncrementalMarkingLimit::kNoLimit;
}
if (ShouldOptimizeForMemoryUsage()) {
@@ -5065,8 +5242,10 @@ void Heap::EnableInlineAllocation() {
inline_allocation_disabled_ = false;
// Update inline allocation limit for new space.
- new_space()->AdvanceAllocationObservers();
- new_space()->UpdateInlineAllocationLimit(0);
+ if (new_space()) {
+ new_space()->AdvanceAllocationObservers();
+ new_space()->UpdateInlineAllocationLimit(0);
+ }
}
void Heap::DisableInlineAllocation() {
@@ -5074,7 +5253,9 @@ void Heap::DisableInlineAllocation() {
inline_allocation_disabled_ = true;
// Update inline allocation limit for new space.
- new_space()->UpdateInlineAllocationLimit(0);
+ if (new_space()) {
+ new_space()->UpdateInlineAllocationLimit(0);
+ }
// Update inline allocation limit for old spaces.
PagedSpaceIterator spaces(this);
@@ -5138,6 +5319,10 @@ HeapObject Heap::AllocateRawWithRetryOrFailSlowPath(
return HeapObject();
}
+namespace {
+V8_DECLARE_ONCE(initialize_shared_code_range_once);
+} // namespace
+
void Heap::SetUp() {
#ifdef V8_ENABLE_ALLOCATION_TIMEOUT
allocation_timeout_ = NextAllocationTimeout();
@@ -5159,9 +5344,45 @@ void Heap::SetUp() {
reinterpret_cast<uintptr_t>(v8::internal::GetRandomMmapAddr()) &
~kMmapRegionMask;
+ v8::PageAllocator* code_page_allocator;
+ if (isolate_->RequiresCodeRange() || code_range_size_ != 0) {
+ const size_t requested_size =
+ code_range_size_ == 0 ? kMaximalCodeRangeSize : code_range_size_;
+ // When a target requires the code range feature, we put all code objects in
+ // a contiguous range of virtual address space, so that they can call each
+ // other with near calls.
+ if (COMPRESS_POINTERS_IN_SHARED_CAGE_BOOL) {
+ // When sharing a pointer cage among Isolates, also share the
+ // CodeRange. isolate_->page_allocator() is the process-wide pointer
+ // compression cage's PageAllocator.
+ base::CallOnce(&initialize_shared_code_range_once,
+ &CodeRange::InitializeProcessWideCodeRangeOnce,
+ isolate_->page_allocator(), requested_size);
+ code_range_ = CodeRange::GetProcessWideCodeRange();
+ } else {
+ code_range_ = std::make_shared<CodeRange>();
+ if (!code_range_->InitReservation(isolate_->page_allocator(),
+ requested_size)) {
+ V8::FatalProcessOutOfMemory(
+ isolate_, "Failed to reserve virtual memory for CodeRange");
+ }
+ }
+
+ LOG(isolate_,
+ NewEvent("CodeRange",
+ reinterpret_cast<void*>(code_range_->reservation()->address()),
+ code_range_size_));
+
+ isolate_->AddCodeRange(code_range_->reservation()->region().begin(),
+ code_range_->reservation()->region().size());
+ code_page_allocator = code_range_->page_allocator();
+ } else {
+ code_page_allocator = isolate_->page_allocator();
+ }
+
// Set up memory allocator.
memory_allocator_.reset(
- new MemoryAllocator(isolate_, MaxReserved(), code_range_size_));
+ new MemoryAllocator(isolate_, code_page_allocator, MaxReserved()));
mark_compact_collector_.reset(new MarkCompactCollector(this));
@@ -5203,49 +5424,6 @@ void Heap::ReplaceReadOnlySpace(SharedReadOnlySpace* space) {
read_only_space_ = space;
}
-uint8_t* Heap::RemapEmbeddedBuiltinsIntoCodeRange(
- const uint8_t* embedded_blob_code, size_t embedded_blob_code_size) {
- const base::AddressRegion& code_range = memory_allocator()->code_range();
-
- CHECK_NE(code_range.begin(), kNullAddress);
- CHECK(!code_range.is_empty());
-
- v8::PageAllocator* code_page_allocator =
- memory_allocator()->code_page_allocator();
-
- const size_t kAllocatePageSize = code_page_allocator->AllocatePageSize();
- size_t allocate_code_size =
- RoundUp(embedded_blob_code_size, kAllocatePageSize);
-
- // Allocate the re-embedded code blob in the end.
- void* hint = reinterpret_cast<void*>(code_range.end() - allocate_code_size);
-
- void* embedded_blob_copy = code_page_allocator->AllocatePages(
- hint, allocate_code_size, kAllocatePageSize, PageAllocator::kNoAccess);
-
- if (!embedded_blob_copy) {
- V8::FatalProcessOutOfMemory(
- isolate(), "Can't allocate space for re-embedded builtins");
- }
-
- size_t code_size =
- RoundUp(embedded_blob_code_size, code_page_allocator->CommitPageSize());
-
- if (!code_page_allocator->SetPermissions(embedded_blob_copy, code_size,
- PageAllocator::kReadWrite)) {
- V8::FatalProcessOutOfMemory(isolate(),
- "Re-embedded builtins: set permissions");
- }
- memcpy(embedded_blob_copy, embedded_blob_code, embedded_blob_code_size);
-
- if (!code_page_allocator->SetPermissions(embedded_blob_copy, code_size,
- PageAllocator::kReadExecute)) {
- V8::FatalProcessOutOfMemory(isolate(),
- "Re-embedded builtins: set permissions");
- }
- return reinterpret_cast<uint8_t*>(embedded_blob_copy);
-}
-
class StressConcurrentAllocationObserver : public AllocationObserver {
public:
explicit StressConcurrentAllocationObserver(Heap* heap)
@@ -5269,15 +5447,19 @@ class StressConcurrentAllocationObserver : public AllocationObserver {
void Heap::SetUpSpaces() {
// Ensure SetUpFromReadOnlySpace has been ran.
DCHECK_NOT_NULL(read_only_space_);
- space_[NEW_SPACE] = new_space_ =
- new NewSpace(this, memory_allocator_->data_page_allocator(),
- initial_semispace_size_, max_semi_space_size_);
+ if (!FLAG_single_generation) {
+ space_[NEW_SPACE] = new_space_ =
+ new NewSpace(this, memory_allocator_->data_page_allocator(),
+ initial_semispace_size_, max_semi_space_size_);
+ }
space_[OLD_SPACE] = old_space_ = new OldSpace(this);
space_[CODE_SPACE] = code_space_ = new CodeSpace(this);
space_[MAP_SPACE] = map_space_ = new MapSpace(this);
space_[LO_SPACE] = lo_space_ = new OldLargeObjectSpace(this);
- space_[NEW_LO_SPACE] = new_lo_space_ =
- new NewLargeObjectSpace(this, new_space_->Capacity());
+ if (!FLAG_single_generation) {
+ space_[NEW_LO_SPACE] = new_lo_space_ =
+ new NewLargeObjectSpace(this, NewSpaceCapacity());
+ }
space_[CODE_LO_SPACE] = code_lo_space_ = new CodeLargeObjectSpace(this);
for (int i = 0; i < static_cast<int>(v8::Isolate::kUseCounterFeatureCount);
@@ -5300,6 +5482,8 @@ void Heap::SetUpSpaces() {
dead_object_stats_.reset(new ObjectStats(this));
}
local_embedder_heap_tracer_.reset(new LocalEmbedderHeapTracer(isolate()));
+ embedder_roots_handler_ =
+ &local_embedder_heap_tracer()->default_embedder_roots_handler();
LOG(isolate_, IntPtrTEvent("heap-capacity", Capacity()));
LOG(isolate_, IntPtrTEvent("heap-available", Available()));
@@ -5311,10 +5495,12 @@ void Heap::SetUpSpaces() {
}
#endif // ENABLE_MINOR_MC
- scavenge_job_.reset(new ScavengeJob());
- scavenge_task_observer_.reset(new ScavengeTaskObserver(
- this, ScavengeJob::YoungGenerationTaskTriggerSize(this)));
- new_space()->AddAllocationObserver(scavenge_task_observer_.get());
+ if (!FLAG_single_generation) {
+ scavenge_job_.reset(new ScavengeJob());
+ scavenge_task_observer_.reset(new ScavengeTaskObserver(
+ this, ScavengeJob::YoungGenerationTaskTriggerSize(this)));
+ new_space()->AddAllocationObserver(scavenge_task_observer_.get());
+ }
SetGetExternallyAllocatedMemoryInBytesCallback(
DefaultGetExternallyAllocatedMemoryInBytesCallback);
@@ -5325,7 +5511,7 @@ void Heap::SetUpSpaces() {
AddAllocationObserversToAllSpaces(stress_marking_observer_,
stress_marking_observer_);
}
- if (FLAG_stress_scavenge > 0) {
+ if (FLAG_stress_scavenge > 0 && new_space()) {
stress_scavenge_observer_ = new StressScavengeObserver(this);
new_space()->AddAllocationObserver(stress_scavenge_observer_);
}
@@ -5333,6 +5519,11 @@ void Heap::SetUpSpaces() {
write_protect_code_memory_ = FLAG_write_protect_code_memory;
}
+void Heap::InitializeMainThreadLocalHeap(LocalHeap* main_thread_local_heap) {
+ DCHECK_NULL(main_thread_local_heap_);
+ main_thread_local_heap_ = main_thread_local_heap;
+}
+
void Heap::InitializeHashSeed() {
DCHECK(!deserialization_complete_);
uint64_t new_hash_seed;
@@ -5438,6 +5629,14 @@ void Heap::SetEmbedderHeapTracer(EmbedderHeapTracer* tracer) {
local_embedder_heap_tracer()->SetRemoteTracer(tracer);
}
+void Heap::SetEmbedderRootsHandler(EmbedderRootsHandler* handler) {
+ embedder_roots_handler_ = handler;
+}
+
+EmbedderRootsHandler* Heap::GetEmbedderRootsHandler() const {
+ return embedder_roots_handler_;
+}
+
EmbedderHeapTracer* Heap::GetEmbedderHeapTracer() const {
return local_embedder_heap_tracer()->remote_tracer();
}
@@ -5461,6 +5660,11 @@ EmbedderHeapTracer::TraceFlags Heap::flags_for_embedder_tracer() const {
return EmbedderHeapTracer::TraceFlags::kNoFlags;
}
+const cppgc::EmbedderStackState* Heap::overriden_stack_state() const {
+ const auto* cpp_heap = CppHeap::From(cpp_heap_);
+ return cpp_heap ? cpp_heap->override_stack_state() : nullptr;
+}
+
void Heap::RegisterExternallyReferencedObject(Address* location) {
GlobalHandles::MarkTraced(location);
Object object(*location);
@@ -5524,7 +5728,10 @@ void Heap::TearDown() {
}
}
- new_space()->RemoveAllocationObserver(scavenge_task_observer_.get());
+ if (new_space()) {
+ new_space()->RemoveAllocationObserver(scavenge_task_observer_.get());
+ }
+
scavenge_task_observer_.reset();
scavenge_job_.reset();
@@ -5541,7 +5748,7 @@ void Heap::TearDown() {
delete stress_marking_observer_;
stress_marking_observer_ = nullptr;
}
- if (FLAG_stress_scavenge > 0) {
+ if (FLAG_stress_scavenge > 0 && new_space()) {
new_space()->RemoveAllocationObserver(stress_scavenge_observer_);
delete stress_scavenge_observer_;
stress_scavenge_observer_ = nullptr;
@@ -5578,6 +5785,8 @@ void Heap::TearDown() {
dead_object_stats_.reset();
local_embedder_heap_tracer_.reset();
+ embedder_roots_handler_ = nullptr;
+
if (cpp_heap_) {
CppHeap::From(cpp_heap_)->DetachIsolate();
cpp_heap_ = nullptr;
@@ -5587,6 +5796,8 @@ void Heap::TearDown() {
tracer_.reset();
+ allocation_sites_to_pretenure_.reset();
+
for (int i = FIRST_MUTABLE_SPACE; i <= LAST_MUTABLE_SPACE; i++) {
delete space_[i];
space_[i] = nullptr;
@@ -5608,6 +5819,24 @@ void Heap::TearDown() {
memory_allocator_.reset();
}
+void Heap::InitSharedSpaces() {
+ shared_old_space_ = isolate()->shared_isolate()->heap()->old_space();
+ shared_old_allocator_.reset(
+ new ConcurrentAllocator(main_thread_local_heap(), shared_old_space_));
+
+ shared_map_space_ = isolate()->shared_isolate()->heap()->map_space();
+ shared_map_allocator_.reset(
+ new ConcurrentAllocator(main_thread_local_heap(), shared_map_space_));
+}
+
+void Heap::DeinitSharedSpaces() {
+ shared_old_space_ = nullptr;
+ shared_old_allocator_.reset();
+
+ shared_map_space_ = nullptr;
+ shared_map_allocator_.reset();
+}
+
void Heap::AddGCPrologueCallback(v8::Isolate::GCCallbackWithData callback,
GCType gc_type, void* data) {
DCHECK_NOT_NULL(callback);
@@ -5685,7 +5914,7 @@ Handle<WeakArrayList> CompactWeakArrayList(Heap* heap,
} // anonymous namespace
-void Heap::CompactWeakArrayLists(AllocationType allocation) {
+void Heap::CompactWeakArrayLists() {
// Find known PrototypeUsers and compact them.
std::vector<Handle<PrototypeInfo>> prototype_infos;
{
@@ -5702,20 +5931,18 @@ void Heap::CompactWeakArrayLists(AllocationType allocation) {
for (auto& prototype_info : prototype_infos) {
Handle<WeakArrayList> array(
WeakArrayList::cast(prototype_info->prototype_users()), isolate());
- DCHECK_IMPLIES(allocation == AllocationType::kOld,
- InOldSpace(*array) ||
- *array == ReadOnlyRoots(this).empty_weak_array_list());
+ DCHECK(InOldSpace(*array) ||
+ *array == ReadOnlyRoots(this).empty_weak_array_list());
WeakArrayList new_array = PrototypeUsers::Compact(
- array, this, JSObject::PrototypeRegistryCompactionCallback, allocation);
+ array, this, JSObject::PrototypeRegistryCompactionCallback,
+ AllocationType::kOld);
prototype_info->set_prototype_users(new_array);
}
// Find known WeakArrayLists and compact them.
Handle<WeakArrayList> scripts(script_list(), isolate());
- DCHECK_IMPLIES(
- !V8_ENABLE_THIRD_PARTY_HEAP_BOOL && allocation == AllocationType::kOld,
- InOldSpace(*scripts));
- scripts = CompactWeakArrayList(this, scripts, allocation);
+ DCHECK(InOldSpace(*scripts));
+ scripts = CompactWeakArrayList(this, scripts, AllocationType::kOld);
set_script_list(*scripts);
}
@@ -5847,7 +6074,6 @@ void Heap::VerifyClearedSlot(HeapObject object, ObjectSlot slot) {
void Heap::VerifySlotRangeHasNoRecordedSlots(Address start, Address end) {
#ifndef V8_DISABLE_WRITE_BARRIERS
Page* page = Page::FromAddress(start);
- DCHECK(!page->IsLargePage());
DCHECK(!page->InYoungGeneration());
RememberedSet<OLD_TO_NEW>::CheckNoneInRange(page, start, end);
#endif
@@ -5887,18 +6113,26 @@ PagedSpace* PagedSpaceIterator::Next() {
}
SpaceIterator::SpaceIterator(Heap* heap)
- : heap_(heap), current_space_(FIRST_MUTABLE_SPACE - 1) {}
+ : heap_(heap), current_space_(FIRST_MUTABLE_SPACE) {}
SpaceIterator::~SpaceIterator() = default;
bool SpaceIterator::HasNext() {
- // Iterate until no more spaces.
- return current_space_ != LAST_SPACE;
+ while (current_space_ <= LAST_MUTABLE_SPACE) {
+ Space* space = heap_->space(current_space_);
+ if (space) return true;
+ ++current_space_;
+ }
+
+ // No more spaces left.
+ return false;
}
Space* SpaceIterator::Next() {
DCHECK(HasNext());
- return heap_->space(++current_space_);
+ Space* space = heap_->space(current_space_++);
+ DCHECK_NOT_NULL(space);
+ return space;
}
class HeapObjectsFilter {
@@ -5922,14 +6156,14 @@ class UnreachableObjectsFilter : public HeapObjectsFilter {
bool SkipObject(HeapObject object) override {
if (object.IsFreeSpaceOrFiller()) return true;
- BasicMemoryChunk* chunk = BasicMemoryChunk::FromHeapObject(object);
+ Address chunk = object.ptr() & ~kLogicalChunkAlignmentMask;
if (reachable_.count(chunk) == 0) return true;
return reachable_[chunk]->count(object) == 0;
}
private:
bool MarkAsReachable(HeapObject object) {
- BasicMemoryChunk* chunk = BasicMemoryChunk::FromHeapObject(object);
+ Address chunk = object.ptr() & ~kLogicalChunkAlignmentMask;
if (reachable_.count(chunk) == 0) {
reachable_[chunk] = new std::unordered_set<HeapObject, Object::Hasher>();
}
@@ -5938,11 +6172,20 @@ class UnreachableObjectsFilter : public HeapObjectsFilter {
return true;
}
+ static constexpr intptr_t kLogicalChunkAlignment =
+ (static_cast<uintptr_t>(1) << kPageSizeBits);
+
+ static constexpr intptr_t kLogicalChunkAlignmentMask =
+ kLogicalChunkAlignment - 1;
+
class MarkingVisitor : public ObjectVisitor, public RootVisitor {
public:
explicit MarkingVisitor(UnreachableObjectsFilter* filter)
: filter_(filter) {}
+ void VisitMapPointer(HeapObject object) override {
+ MarkHeapObject(Map::unchecked_cast(object.map()));
+ }
void VisitPointers(HeapObject host, ObjectSlot start,
ObjectSlot end) override {
MarkPointers(MaybeObjectSlot(start), MaybeObjectSlot(end));
@@ -6017,8 +6260,7 @@ class UnreachableObjectsFilter : public HeapObjectsFilter {
Heap* heap_;
DISALLOW_GARBAGE_COLLECTION(no_gc_)
- std::unordered_map<BasicMemoryChunk*,
- std::unordered_set<HeapObject, Object::Hasher>*>
+ std::unordered_map<Address, std::unordered_set<HeapObject, Object::Hasher>*>
reachable_;
};
@@ -6041,13 +6283,14 @@ HeapObjectIterator::HeapObjectIterator(
break;
}
object_iterator_ = space_iterator_->Next()->GetObjectIterator(heap_);
+ if (V8_ENABLE_THIRD_PARTY_HEAP_BOOL) heap_->tp_heap_->ResetIterator();
}
HeapObjectIterator::~HeapObjectIterator() {
#ifdef DEBUG
// Assert that in filtering mode we have iterated through all
// objects. Otherwise, heap will be left in an inconsistent state.
- if (filtering_ != kNoFiltering) {
+ if (!V8_ENABLE_THIRD_PARTY_HEAP_BOOL && filtering_ != kNoFiltering) {
DCHECK_NULL(object_iterator_);
}
#endif
@@ -6064,6 +6307,7 @@ HeapObject HeapObjectIterator::Next() {
}
HeapObject HeapObjectIterator::NextObject() {
+ if (V8_ENABLE_THIRD_PARTY_HEAP_BOOL) return heap_->tp_heap_->NextObject();
// No iterator means we are done.
if (object_iterator_.get() == nullptr) return HeapObject();
@@ -6451,7 +6695,8 @@ void VerifyPointersVisitor::VerifyPointersImpl(TSlot start, TSlot end) {
if (object.GetHeapObject(&heap_object)) {
VerifyHeapObjectImpl(heap_object);
} else {
- CHECK(object.IsSmi() || object.IsCleared());
+ CHECK(object.IsSmi() || object.IsCleared() ||
+ MapWord::IsPacked(object.ptr()));
}
}
}
@@ -6535,7 +6780,7 @@ void Heap::CreateObjectStats() {
}
Map Heap::GcSafeMapOfCodeSpaceObject(HeapObject object) {
- MapWord map_word = object.map_word();
+ MapWord map_word = object.map_word(kRelaxedLoad);
return map_word.IsForwardingAddress() ? map_word.ToForwardingAddress().map()
: map_word.ToMap();
}
@@ -6698,6 +6943,7 @@ template void Heap::WriteBarrierForRange<MaybeObjectSlot>(
template <typename TSlot>
void Heap::WriteBarrierForRange(HeapObject object, TSlot start_slot,
TSlot end_slot) {
+ if (FLAG_disable_write_barriers) return;
MemoryChunk* source_page = MemoryChunk::FromHeapObject(object);
base::Flags<RangeWriteBarrierMode> mode;
diff --git a/deps/v8/src/heap/heap.h b/deps/v8/src/heap/heap.h
index 429f8864be..4be4d8f732 100644
--- a/deps/v8/src/heap/heap.h
+++ b/deps/v8/src/heap/heap.h
@@ -66,12 +66,16 @@ class ArrayBufferCollector;
class ArrayBufferSweeper;
class BasicMemoryChunk;
class CodeLargeObjectSpace;
+class CodeRange;
class CollectionBarrier;
+class ConcurrentAllocator;
class ConcurrentMarking;
class CppHeap;
class GCIdleTimeHandler;
class GCIdleTimeHeapState;
class GCTracer;
+template <typename T>
+class GlobalHandleVector;
class GlobalSafepoint;
class HeapObjectAllocationTracker;
class HeapObjectsFilter;
@@ -176,6 +180,7 @@ enum class SkipRoot {
kGlobalHandles,
kOldGeneration,
kStack,
+ kMainThreadHandles,
kUnserializable,
kWeak
};
@@ -194,7 +199,7 @@ class StrongRootsEntry {
class AllocationResult {
public:
- static inline AllocationResult Retry(AllocationSpace space = NEW_SPACE) {
+ static inline AllocationResult Retry(AllocationSpace space) {
return AllocationResult(space);
}
@@ -513,6 +518,9 @@ class Heap {
inline Address* OldSpaceAllocationTopAddress();
inline Address* OldSpaceAllocationLimitAddress();
+ size_t NewSpaceSize();
+ size_t NewSpaceCapacity();
+
// Move len non-weak tagged elements from src_slot to dst_slot of dst_object.
// The source and destination memory ranges can overlap.
V8_EXPORT_PRIVATE void MoveRange(HeapObject dst_object, ObjectSlot dst_slot,
@@ -566,9 +574,12 @@ class Heap {
V8_EXPORT_PRIVATE int NotifyContextDisposed(bool dependant_context);
void set_native_contexts_list(Object object) {
- native_contexts_list_ = object;
+ native_contexts_list_.store(object.ptr(), std::memory_order_release);
+ }
+
+ Object native_contexts_list() const {
+ return Object(native_contexts_list_.load(std::memory_order_acquire));
}
- Object native_contexts_list() const { return native_contexts_list_; }
void set_allocation_sites_list(Object object) {
allocation_sites_list_ = object;
@@ -693,10 +704,12 @@ class Heap {
void AppendArrayBufferExtension(JSArrayBuffer object,
ArrayBufferExtension* extension);
+ void DetachArrayBufferExtension(JSArrayBuffer object,
+ ArrayBufferExtension* extension);
GlobalSafepoint* safepoint() { return safepoint_.get(); }
- V8_EXPORT_PRIVATE double MonotonicallyIncreasingTimeInMs();
+ V8_EXPORT_PRIVATE double MonotonicallyIncreasingTimeInMs() const;
void VerifyNewSpaceTop();
@@ -743,7 +756,7 @@ class Heap {
size_t backing_store_bytes() const { return backing_store_bytes_; }
- void CompactWeakArrayLists(AllocationType allocation);
+ void CompactWeakArrayLists();
V8_EXPORT_PRIVATE void AddRetainedMap(Handle<NativeContext> context,
Handle<Map> map);
@@ -760,6 +773,11 @@ class Heap {
inline bool CanAllocateInReadOnlySpace();
bool deserialization_complete() const { return deserialization_complete_; }
+ // We can only invoke Safepoint() on the main thread local heap after
+ // deserialization is complete. Before that, main_thread_local_heap_ might be
+ // null.
+ V8_INLINE bool CanSafepoint() const { return deserialization_complete(); }
+
bool HasLowAllocationRate();
bool HasHighFragmentation();
bool HasHighFragmentation(size_t used, size_t committed);
@@ -802,6 +820,9 @@ class Heap {
// Sets up the heap memory without creating any objects.
void SetUpSpaces();
+ // Prepares the heap, setting up for deserialization.
+ void InitializeMainThreadLocalHeap(LocalHeap* main_thread_local_heap);
+
// (Re-)Initialize hash seed from flag or RNG.
void InitializeHashSeed();
@@ -812,12 +833,6 @@ class Heap {
// Create ObjectStats if live_object_stats_ or dead_object_stats_ are nullptr.
void CreateObjectStats();
- // If the code range exists, allocates executable pages in the code range and
- // copies the embedded builtins code blob there. Returns address of the copy.
- // The builtins code region will be freed with the code range at tear down.
- uint8_t* RemapEmbeddedBuiltinsIntoCodeRange(const uint8_t* embedded_blob_code,
- size_t embedded_blob_code_size);
-
// Sets the TearDown state, so no new GC tasks get posted.
void StartTearDown();
@@ -827,6 +842,12 @@ class Heap {
// Returns whether SetUp has been called.
bool HasBeenSetUp() const;
+ // Initialializes shared spaces.
+ void InitSharedSpaces();
+
+ // Removes shared spaces again.
+ void DeinitSharedSpaces();
+
// ===========================================================================
// Getters for spaces. =======================================================
// ===========================================================================
@@ -857,6 +878,7 @@ class Heap {
}
inline Isolate* isolate();
+ inline const Isolate* isolate() const;
MarkCompactCollector* mark_compact_collector() {
return mark_compact_collector_.get();
@@ -870,7 +892,11 @@ class Heap {
return array_buffer_sweeper_.get();
}
- const base::AddressRegion& code_range();
+ const base::AddressRegion& code_region();
+
+ CodeRange* code_range() { return code_range_.get(); }
+
+ LocalHeap* main_thread_local_heap() { return main_thread_local_heap_; }
// ===========================================================================
// Root set access. ==========================================================
@@ -1076,17 +1102,19 @@ class Heap {
void EnsureSweepingCompleted();
- IncrementalMarking* incremental_marking() {
+ IncrementalMarking* incremental_marking() const {
return incremental_marking_.get();
}
- MarkingBarrier* marking_barrier() { return marking_barrier_.get(); }
+ MarkingBarrier* marking_barrier() const { return marking_barrier_.get(); }
// ===========================================================================
// Concurrent marking API. ===================================================
// ===========================================================================
- ConcurrentMarking* concurrent_marking() { return concurrent_marking_.get(); }
+ ConcurrentMarking* concurrent_marking() const {
+ return concurrent_marking_.get();
+ }
// The runtime uses this function to notify potentially unsafe object layout
// changes that require special synchronization with the concurrent marker.
@@ -1150,6 +1178,16 @@ class Heap {
v8::CppHeap* cpp_heap() const { return cpp_heap_; }
+ const cppgc::EmbedderStackState* overriden_stack_state() const;
+
+ // ===========================================================================
+ // Embedder roots optimizations. =============================================
+ // ===========================================================================
+
+ V8_EXPORT_PRIVATE void SetEmbedderRootsHandler(EmbedderRootsHandler* handler);
+
+ EmbedderRootsHandler* GetEmbedderRootsHandler() const;
+
// ===========================================================================
// External string table API. ================================================
// ===========================================================================
@@ -1192,10 +1230,18 @@ class Heap {
// heaps is required.
V8_EXPORT_PRIVATE bool Contains(HeapObject value) const;
+ // Checks whether an address/object is in the non-read-only heap (including
+ // auxiliary area and unused area). Use IsValidHeapObject if checking both
+ // heaps is required.
+ V8_EXPORT_PRIVATE bool SharedHeapContains(HeapObject value) const;
+
// Checks whether an address/object in a space.
// Currently used by tests, serialization and heap verification only.
V8_EXPORT_PRIVATE bool InSpace(HeapObject value, AllocationSpace space) const;
+ // Returns true when this heap is shared.
+ V8_EXPORT_PRIVATE bool IsShared();
+
// Slow methods that can be used for verification as they can also be used
// with off-heap Addresses.
V8_EXPORT_PRIVATE bool InSpaceSlow(Address addr, AllocationSpace space) const;
@@ -1335,9 +1381,9 @@ class Heap {
survived_since_last_expansion_ += survived;
}
- inline void UpdateNewSpaceAllocationCounter();
+ void UpdateNewSpaceAllocationCounter();
- inline size_t NewSpaceAllocationCounter();
+ V8_EXPORT_PRIVATE size_t NewSpaceAllocationCounter();
// This should be used only for testing.
void set_new_space_allocation_counter(size_t new_value) {
@@ -1451,6 +1497,12 @@ class Heap {
void MergeAllocationSitePretenuringFeedback(
const PretenuringFeedbackMap& local_pretenuring_feedback);
+ // Adds an allocation site to the list of sites to be pretenured during the
+ // next collection. Added allocation sites are pretenured independent of
+ // their feedback.
+ V8_EXPORT_PRIVATE void PretenureAllocationSiteOnNextCollection(
+ AllocationSite site);
+
// ===========================================================================
// Allocation tracking. ======================================================
// ===========================================================================
@@ -2020,7 +2072,7 @@ class Heap {
AllocationAlignment alignment = kWordAligned);
// Allocates a heap object based on the map.
- V8_WARN_UNUSED_RESULT AllocationResult Allocate(Map map,
+ V8_WARN_UNUSED_RESULT AllocationResult Allocate(Handle<Map> map,
AllocationType allocation);
// Allocates a partial map for bootstrapping.
@@ -2045,6 +2097,7 @@ class Heap {
// Stores the option corresponding to the object in the provided *option.
bool IsRetainingPathTarget(HeapObject object, RetainingPathOption* option);
void PrintRetainingPath(HeapObject object, RetainingPathOption option);
+ void UpdateRetainersAfterScavenge();
#ifdef DEBUG
V8_EXPORT_PRIVATE void IncrementObjectCounters();
@@ -2117,9 +2170,18 @@ class Heap {
CodeLargeObjectSpace* code_lo_space_ = nullptr;
NewLargeObjectSpace* new_lo_space_ = nullptr;
ReadOnlySpace* read_only_space_ = nullptr;
+
+ OldSpace* shared_old_space_ = nullptr;
+ MapSpace* shared_map_space_ = nullptr;
+
+ std::unique_ptr<ConcurrentAllocator> shared_old_allocator_;
+ std::unique_ptr<ConcurrentAllocator> shared_map_allocator_;
+
// Map from the space id to the space.
Space* space_[LAST_SPACE + 1];
+ LocalHeap* main_thread_local_heap_ = nullptr;
+
// List for tracking ArrayBufferExtensions
ArrayBufferExtension* old_array_buffer_extensions_ = nullptr;
ArrayBufferExtension* young_array_buffer_extensions_ = nullptr;
@@ -2189,7 +2251,9 @@ class Heap {
// Weak list heads, threaded through the objects.
// List heads are initialized lazily and contain the undefined_value at start.
- Object native_contexts_list_;
+ // {native_contexts_list_} is an Address instead of an Object to allow the use
+ // of atomic accessors.
+ std::atomic<Address> native_contexts_list_;
Object allocation_sites_list_;
Object dirty_js_finalization_registries_list_;
// Weak list tails.
@@ -2247,9 +2311,18 @@ class Heap {
std::unique_ptr<LocalEmbedderHeapTracer> local_embedder_heap_tracer_;
std::unique_ptr<MarkingBarrier> marking_barrier_;
+ // This object controls virtual space reserved for code on the V8 heap. This
+ // is only valid for 64-bit architectures where kRequiresCodeRange.
+ //
+ // Owned by the heap when !V8_COMPRESS_POINTERS_IN_SHARED_CAGE, otherwise is
+ // process-wide.
+ std::shared_ptr<CodeRange> code_range_;
+
// The embedder owns the C++ heap.
v8::CppHeap* cpp_heap_ = nullptr;
+ EmbedderRootsHandler* embedder_roots_handler_ = nullptr;
+
StrongRootsEntry* strong_roots_head_ = nullptr;
base::Mutex strong_roots_mutex_;
@@ -2278,6 +2351,9 @@ class Heap {
// forwarding pointers.
PretenuringFeedbackMap global_pretenuring_feedback_;
+ std::unique_ptr<GlobalHandleVector<AllocationSite>>
+ allocation_sites_to_pretenure_;
+
char trace_ring_buffer_[kTraceRingBufferSize];
// Used as boolean.
@@ -2335,14 +2411,15 @@ class Heap {
int allocation_timeout_ = 0;
#endif // V8_ENABLE_ALLOCATION_TIMEOUT
- std::map<HeapObject, HeapObject, Object::Comparer> retainer_;
- std::map<HeapObject, Root, Object::Comparer> retaining_root_;
+ std::unordered_map<HeapObject, HeapObject, Object::Hasher> retainer_;
+ std::unordered_map<HeapObject, Root, Object::Hasher> retaining_root_;
// If an object is retained by an ephemeron, then the retaining key of the
// ephemeron is stored in this map.
- std::map<HeapObject, HeapObject, Object::Comparer> ephemeron_retainer_;
+ std::unordered_map<HeapObject, HeapObject, Object::Hasher>
+ ephemeron_retainer_;
// For each index inthe retaining_path_targets_ array this map
// stores the option of the corresponding target.
- std::map<int, RetainingPathOption> retaining_path_target_option_;
+ std::unordered_map<int, RetainingPathOption> retaining_path_target_option_;
std::vector<HeapObjectAllocationTracker*> allocation_trackers_;
@@ -2367,6 +2444,7 @@ class Heap {
friend class IncrementalMarking;
friend class IncrementalMarkingJob;
friend class LocalHeap;
+ friend class MarkingBarrier;
friend class OldLargeObjectSpace;
template <typename ConcreteVisitor, typename MarkingState>
friend class MarkingVisitorBase;
@@ -2630,14 +2708,13 @@ class HeapObjectAllocationTracker {
template <typename T>
T ForwardingAddress(T heap_obj) {
- MapWord map_word = heap_obj.map_word();
+ MapWord map_word = heap_obj.map_word(kRelaxedLoad);
if (map_word.IsForwardingAddress()) {
return T::cast(map_word.ToForwardingAddress());
} else if (Heap::InFromPage(heap_obj)) {
return T();
} else {
- // TODO(ulan): Support minor mark-compactor here.
return heap_obj;
}
}
diff --git a/deps/v8/src/heap/incremental-marking.cc b/deps/v8/src/heap/incremental-marking.cc
index a093835981..0c405c40bf 100644
--- a/deps/v8/src/heap/incremental-marking.cc
+++ b/deps/v8/src/heap/incremental-marking.cc
@@ -39,9 +39,8 @@ void IncrementalMarking::Observer::Step(int bytes_allocated, Address addr,
size_t size) {
Heap* heap = incremental_marking_->heap();
VMState<GC> state(heap->isolate());
- RuntimeCallTimerScope runtime_timer(
- heap->isolate(),
- RuntimeCallCounterId::kGC_Custom_IncrementalMarkingObserver);
+ RCS_SCOPE(heap->isolate(),
+ RuntimeCallCounterId::kGC_Custom_IncrementalMarkingObserver);
incremental_marking_->AdvanceOnAllocation();
// AdvanceIncrementalMarkingOnAllocation can start incremental marking.
incremental_marking_->EnsureBlackAllocated(addr, size);
@@ -108,20 +107,28 @@ class IncrementalMarkingRootMarkingVisitor : public RootVisitor {
void VisitRootPointer(Root root, const char* description,
FullObjectSlot p) override {
+ DCHECK(!MapWord::IsPacked((*p).ptr()));
MarkObjectByPointer(p);
}
void VisitRootPointers(Root root, const char* description,
FullObjectSlot start, FullObjectSlot end) override {
- for (FullObjectSlot p = start; p < end; ++p) MarkObjectByPointer(p);
+ for (FullObjectSlot p = start; p < end; ++p) {
+ DCHECK(!MapWord::IsPacked((*p).ptr()));
+ MarkObjectByPointer(p);
+ }
}
private:
void MarkObjectByPointer(FullObjectSlot p) {
- Object obj = *p;
- if (!obj.IsHeapObject()) return;
-
- heap_->incremental_marking()->WhiteToGreyAndPush(HeapObject::cast(obj));
+ Object object = *p;
+ if (!object.IsHeapObject()) return;
+ DCHECK(!MapWord::IsPacked(object.ptr()));
+ HeapObject heap_object = HeapObject::cast(object);
+ BasicMemoryChunk* target_page =
+ BasicMemoryChunk::FromHeapObject(heap_object);
+ if (target_page->InSharedHeap()) return;
+ heap_->incremental_marking()->WhiteToGreyAndPush(heap_object);
}
Heap* heap_;
@@ -132,12 +139,14 @@ bool IncrementalMarking::WasActivated() { return was_activated_; }
bool IncrementalMarking::CanBeActivated() {
- // Only start incremental marking in a safe state: 1) when incremental
- // marking is turned on, 2) when we are currently not in a GC, and
- // 3) when we are currently not serializing or deserializing the heap.
+ // Only start incremental marking in a safe state:
+ // 1) when incremental marking is turned on
+ // 2) when we are currently not in a GC, and
+ // 3) when we are currently not serializing or deserializing the heap, and
+ // 4) not a shared heap.
return FLAG_incremental_marking && heap_->gc_state() == Heap::NOT_IN_GC &&
heap_->deserialization_complete() &&
- !heap_->isolate()->serializer_enabled();
+ !heap_->isolate()->serializer_enabled() && !heap_->IsShared();
}
bool IncrementalMarking::IsBelowActivationThresholds() const {
@@ -147,6 +156,7 @@ bool IncrementalMarking::IsBelowActivationThresholds() const {
void IncrementalMarking::Start(GarbageCollectionReason gc_reason) {
DCHECK(!collector_->sweeping_in_progress());
+ DCHECK(!heap_->IsShared());
if (FLAG_trace_incremental_marking) {
const size_t old_generation_size_mb =
@@ -314,7 +324,9 @@ void IncrementalMarking::MarkRoots() {
IncrementalMarkingRootMarkingVisitor visitor(this);
heap_->IterateRoots(
- &visitor, base::EnumSet<SkipRoot>{SkipRoot::kStack, SkipRoot::kWeak});
+ &visitor,
+ base::EnumSet<SkipRoot>{SkipRoot::kStack, SkipRoot::kMainThreadHandles,
+ SkipRoot::kWeak});
}
bool IncrementalMarking::ShouldRetainMap(Map map, int age) {
@@ -356,6 +368,9 @@ void IncrementalMarking::RetainMaps() {
if (!map_retaining_is_disabled && marking_state()->IsWhite(map)) {
if (ShouldRetainMap(map, age)) {
WhiteToGreyAndPush(map);
+ if (V8_UNLIKELY(FLAG_track_retaining_path)) {
+ heap_->AddRetainingRoot(Root::kRetainMaps, map);
+ }
}
Object prototype = map.prototype();
if (age > 0 && prototype.IsHeapObject() &&
@@ -432,7 +447,7 @@ void IncrementalMarking::UpdateMarkingWorklistAfterScavenge() {
DCHECK(obj.IsHeapObject());
// Only pointers to from space have to be updated.
if (Heap::InFromPage(obj)) {
- MapWord map_word = obj.map_word();
+ MapWord map_word = obj.map_word(kRelaxedLoad);
if (!map_word.IsForwardingAddress()) {
// There may be objects on the marking deque that do not exist
// anymore, e.g. left trimmed objects or objects from the root set
diff --git a/deps/v8/src/heap/large-spaces.cc b/deps/v8/src/heap/large-spaces.cc
index 5cbcc8620f..4bb989fe9a 100644
--- a/deps/v8/src/heap/large-spaces.cc
+++ b/deps/v8/src/heap/large-spaces.cc
@@ -5,6 +5,7 @@
#include "src/heap/large-spaces.h"
#include "src/base/platform/mutex.h"
+#include "src/base/sanitizer/msan.h"
#include "src/common/globals.h"
#include "src/execution/isolate.h"
#include "src/heap/combined-heap.h"
@@ -18,7 +19,6 @@
#include "src/heap/spaces-inl.h"
#include "src/logging/log.h"
#include "src/objects/objects-inl.h"
-#include "src/sanitizer/msan.h"
#include "src/utils/ostreams.h"
namespace v8 {
@@ -130,6 +130,7 @@ AllocationResult OldLargeObjectSpace::AllocateRaw(int object_size) {
AllocationResult OldLargeObjectSpace::AllocateRaw(int object_size,
Executability executable) {
+ DCHECK(!FLAG_enable_third_party_heap);
// Check if we want to force a GC before growing the old space further.
// If so, fail the allocation.
if (!heap()->CanExpandOldGeneration(object_size) ||
@@ -160,6 +161,7 @@ AllocationResult OldLargeObjectSpace::AllocateRaw(int object_size,
AllocationResult OldLargeObjectSpace::AllocateRawBackground(
LocalHeap* local_heap, int object_size) {
+ DCHECK(!FLAG_enable_third_party_heap);
// Check if we want to force a GC before growing the old space further.
// If so, fail the allocation.
if (!heap()->CanExpandOldGenerationBackground(local_heap, object_size) ||
@@ -446,6 +448,7 @@ NewLargeObjectSpace::NewLargeObjectSpace(Heap* heap, size_t capacity)
capacity_(capacity) {}
AllocationResult NewLargeObjectSpace::AllocateRaw(int object_size) {
+ DCHECK(!FLAG_enable_third_party_heap);
// Do not allocate more objects if promoting the existing object would exceed
// the old generation capacity.
if (!heap()->CanExpandOldGeneration(SizeOfObjects())) {
@@ -532,6 +535,7 @@ CodeLargeObjectSpace::CodeLargeObjectSpace(Heap* heap)
chunk_map_(kInitialChunkMapCapacity) {}
AllocationResult CodeLargeObjectSpace::AllocateRaw(int object_size) {
+ DCHECK(!FLAG_enable_third_party_heap);
return OldLargeObjectSpace::AllocateRaw(object_size, EXECUTABLE);
}
diff --git a/deps/v8/src/heap/large-spaces.h b/deps/v8/src/heap/large-spaces.h
index 8761b9949c..1e53671a9b 100644
--- a/deps/v8/src/heap/large-spaces.h
+++ b/deps/v8/src/heap/large-spaces.h
@@ -32,6 +32,7 @@ class LargePage : public MemoryChunk {
static const int kMaxCodePageSize = 512 * MB;
static LargePage* FromHeapObject(HeapObject o) {
+ DCHECK(!V8_ENABLE_THIRD_PARTY_HEAP_BOOL);
return static_cast<LargePage*>(MemoryChunk::FromHeapObject(o));
}
diff --git a/deps/v8/src/heap/local-allocator.h b/deps/v8/src/heap/local-allocator.h
index 9efbf3cf56..e64932b9fe 100644
--- a/deps/v8/src/heap/local-allocator.h
+++ b/deps/v8/src/heap/local-allocator.h
@@ -36,7 +36,7 @@ class EvacuationAllocator {
// Give back remaining LAB space if this EvacuationAllocator's new space LAB
// sits right next to new space allocation top.
const LinearAllocationArea info = new_space_lab_.CloseAndMakeIterable();
- new_space_->MaybeFreeUnusedLab(info);
+ if (new_space_) new_space_->MaybeFreeUnusedLab(info);
}
inline AllocationResult Allocate(AllocationSpace space, int object_size,
diff --git a/deps/v8/src/heap/local-heap-inl.h b/deps/v8/src/heap/local-heap-inl.h
index fd0ec5a449..e1333773dd 100644
--- a/deps/v8/src/heap/local-heap-inl.h
+++ b/deps/v8/src/heap/local-heap-inl.h
@@ -18,6 +18,7 @@ namespace internal {
AllocationResult LocalHeap::AllocateRaw(int size_in_bytes, AllocationType type,
AllocationOrigin origin,
AllocationAlignment alignment) {
+ DCHECK(!FLAG_enable_third_party_heap);
#if DEBUG
VerifyCurrent();
DCHECK(AllowHandleAllocation::IsAllowed());
@@ -45,6 +46,7 @@ AllocationResult LocalHeap::AllocateRaw(int size_in_bytes, AllocationType type,
Address LocalHeap::AllocateRawOrFail(int object_size, AllocationType type,
AllocationOrigin origin,
AllocationAlignment alignment) {
+ DCHECK(!FLAG_enable_third_party_heap);
AllocationResult result = AllocateRaw(object_size, type, origin, alignment);
if (!result.IsRetry()) return result.ToObject().address();
return PerformCollectionAndAllocateAgain(object_size, type, origin,
diff --git a/deps/v8/src/heap/local-heap.cc b/deps/v8/src/heap/local-heap.cc
index 70cdbcc0d7..2c6724ba3a 100644
--- a/deps/v8/src/heap/local-heap.cc
+++ b/deps/v8/src/heap/local-heap.cc
@@ -221,7 +221,7 @@ bool LocalHeap::TryPerformCollection() {
heap_->CollectGarbageForBackground(this);
return true;
} else {
- LocalHeap* main_thread = heap_->isolate()->main_thread_local_heap();
+ LocalHeap* main_thread = heap_->main_thread_local_heap();
ThreadState current = main_thread->state_relaxed();
while (true) {
diff --git a/deps/v8/src/heap/mark-compact-inl.h b/deps/v8/src/heap/mark-compact-inl.h
index a9db17f2aa..f28b9b5e84 100644
--- a/deps/v8/src/heap/mark-compact-inl.h
+++ b/deps/v8/src/heap/mark-compact-inl.h
@@ -205,9 +205,10 @@ void LiveObjectRange<mode>::iterator::AdvanceToNextValidObject() {
// make sure that we skip all set bits in the black area until the
// object ends.
HeapObject black_object = HeapObject::FromAddress(addr);
- Object map_object = ObjectSlot(addr).Acquire_Load();
+ Object map_object = black_object.map(kAcquireLoad);
CHECK(map_object.IsMap());
map = Map::cast(map_object);
+ DCHECK(map.IsMap());
size = black_object.SizeFromMap(map);
CHECK_LE(addr + size, chunk_->area_end());
Address end = addr + size - kTaggedSize;
@@ -235,10 +236,11 @@ void LiveObjectRange<mode>::iterator::AdvanceToNextValidObject() {
object = black_object;
}
} else if ((mode == kGreyObjects || mode == kAllLiveObjects)) {
- Object map_object = ObjectSlot(addr).Acquire_Load();
+ object = HeapObject::FromAddress(addr);
+ Object map_object = object.map(kAcquireLoad);
CHECK(map_object.IsMap());
map = Map::cast(map_object);
- object = HeapObject::FromAddress(addr);
+ DCHECK(map.IsMap());
size = object.SizeFromMap(map);
CHECK_LE(addr + size, chunk_->area_end());
}
diff --git a/deps/v8/src/heap/mark-compact.cc b/deps/v8/src/heap/mark-compact.cc
index 11c789d01b..73eab9e203 100644
--- a/deps/v8/src/heap/mark-compact.cc
+++ b/deps/v8/src/heap/mark-compact.cc
@@ -42,6 +42,7 @@
#include "src/heap/worklist.h"
#include "src/ic/stub-cache.h"
#include "src/init/v8.h"
+#include "src/logging/tracing-flags.h"
#include "src/objects/embedder-data-array-inl.h"
#include "src/objects/foreign.h"
#include "src/objects/hash-table-inl.h"
@@ -51,6 +52,7 @@
#include "src/objects/slots-inl.h"
#include "src/objects/transitions-inl.h"
#include "src/tasks/cancelable-task.h"
+#include "src/tracing/tracing-category-observer.h"
#include "src/utils/utils-inl.h"
namespace v8 {
@@ -82,6 +84,7 @@ class MarkingVerifier : public ObjectVisitor, public RootVisitor {
virtual ConcurrentBitmap<AccessMode::NON_ATOMIC>* bitmap(
const MemoryChunk* chunk) = 0;
+ virtual void VerifyMap(Map map) = 0;
virtual void VerifyPointers(ObjectSlot start, ObjectSlot end) = 0;
virtual void VerifyPointers(MaybeObjectSlot start, MaybeObjectSlot end) = 0;
virtual void VerifyRootPointers(FullObjectSlot start, FullObjectSlot end) = 0;
@@ -105,6 +108,8 @@ class MarkingVerifier : public ObjectVisitor, public RootVisitor {
VerifyRootPointers(start, end);
}
+ void VisitMapPointer(HeapObject object) override { VerifyMap(object.map()); }
+
void VerifyRoots();
void VerifyMarkingOnPage(const Page* page, Address start, Address end);
void VerifyMarking(NewSpace* new_space);
@@ -146,6 +151,7 @@ void MarkingVerifier::VerifyMarkingOnPage(const Page* page, Address start,
}
void MarkingVerifier::VerifyMarking(NewSpace* space) {
+ if (!space) return;
Address end = space->top();
// The bottom position is at the start of its page. Allows us to use
// page->area_start() as start of range on all pages.
@@ -168,6 +174,7 @@ void MarkingVerifier::VerifyMarking(PagedSpace* space) {
}
void MarkingVerifier::VerifyMarking(LargeObjectSpace* lo_space) {
+ if (!lo_space) return;
LargeObjectSpaceObjectIterator it(lo_space);
for (HeapObject obj = it.Next(); !obj.is_null(); obj = it.Next()) {
if (IsBlackOrGrey(obj)) {
@@ -208,6 +215,8 @@ class FullMarkingVerifier : public MarkingVerifier {
return marking_state_->IsBlackOrGrey(object);
}
+ void VerifyMap(Map map) override { VerifyHeapObjectImpl(map); }
+
void VerifyPointers(ObjectSlot start, ObjectSlot end) override {
VerifyPointersImpl(start, end);
}
@@ -235,6 +244,9 @@ class FullMarkingVerifier : public MarkingVerifier {
private:
V8_INLINE void VerifyHeapObjectImpl(HeapObject heap_object) {
+ if (!heap_->IsShared() &&
+ BasicMemoryChunk::FromHeapObject(heap_object)->InSharedHeap())
+ return;
CHECK(marking_state_->IsBlackOrGrey(heap_object));
}
@@ -271,11 +283,14 @@ class EvacuationVerifier : public ObjectVisitor, public RootVisitor {
VerifyRootPointers(start, end);
}
+ void VisitMapPointer(HeapObject object) override { VerifyMap(object.map()); }
+
protected:
explicit EvacuationVerifier(Heap* heap) : heap_(heap) {}
inline Heap* heap() { return heap_; }
+ virtual void VerifyMap(Map map) = 0;
virtual void VerifyPointers(ObjectSlot start, ObjectSlot end) = 0;
virtual void VerifyPointers(MaybeObjectSlot start, MaybeObjectSlot end) = 0;
virtual void VerifyRootPointers(FullObjectSlot start, FullObjectSlot end) = 0;
@@ -302,6 +317,7 @@ void EvacuationVerifier::VerifyEvacuationOnPage(Address start, Address end) {
}
void EvacuationVerifier::VerifyEvacuation(NewSpace* space) {
+ if (!space) return;
PageRange range(space->first_allocatable_address(), space->top());
for (auto it = range.begin(); it != range.end();) {
Page* page = *(it++);
@@ -354,7 +370,7 @@ class FullEvacuationVerifier : public EvacuationVerifier {
}
}
}
-
+ void VerifyMap(Map map) override { VerifyHeapObjectImpl(map); }
void VerifyPointers(ObjectSlot start, ObjectSlot end) override {
VerifyPointersImpl(start, end);
}
@@ -408,6 +424,7 @@ MarkCompactCollector::MarkCompactCollector(Heap* heap)
#ifdef DEBUG
state_(IDLE),
#endif
+ is_shared_heap_(heap->IsShared()),
was_marked_incrementally_(false),
evacuation_(false),
compacting_(false),
@@ -548,6 +565,7 @@ void MarkCompactCollector::VerifyMarkbitsAreClean(PagedSpace* space) {
}
void MarkCompactCollector::VerifyMarkbitsAreClean(NewSpace* space) {
+ if (!space) return;
for (Page* p : PageRange(space->first_allocatable_address(), space->top())) {
CHECK(non_atomic_marking_state()->bitmap(p)->IsClean());
CHECK_EQ(0, non_atomic_marking_state()->live_bytes(p));
@@ -555,6 +573,7 @@ void MarkCompactCollector::VerifyMarkbitsAreClean(NewSpace* space) {
}
void MarkCompactCollector::VerifyMarkbitsAreClean(LargeObjectSpace* space) {
+ if (!space) return;
LargeObjectSpaceObjectIterator it(space);
for (HeapObject obj = it.Next(); !obj.is_null(); obj = it.Next()) {
CHECK(non_atomic_marking_state()->IsWhite(obj));
@@ -863,9 +882,14 @@ void MarkCompactCollector::Prepare() {
[](LocalHeap* local_heap) { local_heap->FreeLinearAllocationArea(); });
// All objects are guaranteed to be initialized in atomic pause
- heap()->new_lo_space()->ResetPendingObject();
- DCHECK_EQ(heap()->new_space()->top(),
- heap()->new_space()->original_top_acquire());
+ if (heap()->new_lo_space()) {
+ heap()->new_lo_space()->ResetPendingObject();
+ }
+
+ if (heap()->new_space()) {
+ DCHECK_EQ(heap()->new_space()->top(),
+ heap()->new_space()->original_top_acquire());
+ }
}
void MarkCompactCollector::FinishConcurrentMarking() {
@@ -950,26 +974,34 @@ void MarkCompactCollector::SweepArrayBufferExtensions() {
class MarkCompactCollector::RootMarkingVisitor final : public RootVisitor {
public:
explicit RootMarkingVisitor(MarkCompactCollector* collector)
- : collector_(collector) {}
+ : collector_(collector), is_shared_heap_(collector->is_shared_heap()) {}
void VisitRootPointer(Root root, const char* description,
FullObjectSlot p) final {
+ DCHECK(!MapWord::IsPacked(p.Relaxed_Load().ptr()));
MarkObjectByPointer(root, p);
}
void VisitRootPointers(Root root, const char* description,
FullObjectSlot start, FullObjectSlot end) final {
- for (FullObjectSlot p = start; p < end; ++p) MarkObjectByPointer(root, p);
+ for (FullObjectSlot p = start; p < end; ++p) {
+ MarkObjectByPointer(root, p);
+ }
}
private:
V8_INLINE void MarkObjectByPointer(Root root, FullObjectSlot p) {
- if (!(*p).IsHeapObject()) return;
-
- collector_->MarkRootObject(root, HeapObject::cast(*p));
+ Object object = *p;
+ if (!object.IsHeapObject()) return;
+ HeapObject heap_object = HeapObject::cast(object);
+ BasicMemoryChunk* target_page =
+ BasicMemoryChunk::FromHeapObject(heap_object);
+ if (!is_shared_heap_ && target_page->InSharedHeap()) return;
+ collector_->MarkRootObject(root, heap_object);
}
MarkCompactCollector* const collector_;
+ const bool is_shared_heap_;
};
// This visitor is used to visit the body of special objects held alive by
@@ -991,8 +1023,12 @@ class MarkCompactCollector::CustomRootBodyMarkingVisitor final
MarkObject(host, *p);
}
+ void VisitMapPointer(HeapObject host) final { MarkObject(host, host.map()); }
+
void VisitPointers(HeapObject host, ObjectSlot start, ObjectSlot end) final {
for (ObjectSlot p = start; p < end; ++p) {
+ // The map slot should be handled in VisitMapPointer.
+ DCHECK_NE(host.map_slot(), p);
DCHECK(!HasWeakHeapObjectTag(*p));
MarkObject(host, *p);
}
@@ -1145,6 +1181,7 @@ class RecordMigratedSlotVisitor : public ObjectVisitor {
}
inline void VisitPointer(HeapObject host, MaybeObjectSlot p) final {
+ DCHECK(!MapWord::IsPacked(p.Relaxed_Load().ptr()));
RecordMigratedSlot(host, *p, p.address());
}
@@ -1310,7 +1347,7 @@ class EvacuateVisitorBase : public HeapObjectVisitor {
if (mode != MigrationMode::kFast)
base->ExecuteMigrationObservers(dest, src, dst, size);
}
- src.set_map_word(MapWord::FromForwardingAddress(dst));
+ src.set_map_word(MapWord::FromForwardingAddress(dst), kRelaxedStore);
}
EvacuateVisitorBase(Heap* heap, EvacuationAllocator* local_allocator,
@@ -1439,7 +1476,8 @@ class EvacuateNewSpaceVisitor final : public EvacuateVisitorBase {
if (map.visitor_id() == kVisitThinString) {
HeapObject actual = ThinString::cast(object).unchecked_actual();
if (MarkCompactCollector::IsOnEvacuationCandidate(actual)) return false;
- object.set_map_word(MapWord::FromForwardingAddress(actual));
+ object.set_map_word(MapWord::FromForwardingAddress(actual),
+ kRelaxedStore);
return true;
}
// TODO(mlippautz): Handle ConsString.
@@ -1543,7 +1581,7 @@ class EvacuateOldSpaceVisitor final : public EvacuateVisitorBase {
HeapObject target_object;
if (TryEvacuateObject(Page::FromHeapObject(object)->owner_identity(),
object, size, &target_object)) {
- DCHECK(object.map_word().IsForwardingAddress());
+ DCHECK(object.map_word(kRelaxedLoad).IsForwardingAddress());
return true;
}
return false;
@@ -2677,7 +2715,7 @@ static inline SlotCallbackResult UpdateSlot(TSlot slot,
std::is_same<TSlot, OffHeapObjectSlot>::value,
"Only [Full|OffHeap]ObjectSlot and [Full]MaybeObjectSlot are "
"expected here");
- MapWord map_word = heap_obj.map_word();
+ MapWord map_word = heap_obj.map_word(kRelaxedLoad);
if (map_word.IsForwardingAddress()) {
DCHECK_IMPLIES(!Heap::InFromPage(heap_obj),
MarkCompactCollector::IsOnEvacuationCandidate(heap_obj) ||
@@ -2759,6 +2797,7 @@ class PointersUpdatingVisitor : public ObjectVisitor, public RootVisitor {
void VisitRootPointer(Root root, const char* description,
FullObjectSlot p) override {
+ DCHECK(!MapWord::IsPacked(p.Relaxed_Load().ptr()));
UpdateRootSlotInternal(cage_base_, p);
}
@@ -2818,7 +2857,7 @@ class PointersUpdatingVisitor : public ObjectVisitor, public RootVisitor {
static String UpdateReferenceInExternalStringTableEntry(Heap* heap,
FullObjectSlot p) {
- MapWord map_word = HeapObject::cast(*p).map_word();
+ MapWord map_word = HeapObject::cast(*p).map_word(kRelaxedLoad);
if (map_word.IsForwardingAddress()) {
String new_string = String::cast(map_word.ToForwardingAddress());
@@ -2838,18 +2877,23 @@ static String UpdateReferenceInExternalStringTableEntry(Heap* heap,
void MarkCompactCollector::EvacuatePrologue() {
// New space.
NewSpace* new_space = heap()->new_space();
- // Append the list of new space pages to be processed.
- for (Page* p :
- PageRange(new_space->first_allocatable_address(), new_space->top())) {
- new_space_evacuation_pages_.push_back(p);
- }
- new_space->Flip();
- new_space->ResetLinearAllocationArea();
- DCHECK_EQ(new_space->Size(), 0);
+ if (new_space) {
+ // Append the list of new space pages to be processed.
+ for (Page* p :
+ PageRange(new_space->first_allocatable_address(), new_space->top())) {
+ new_space_evacuation_pages_.push_back(p);
+ }
+ new_space->Flip();
+ new_space->ResetLinearAllocationArea();
- heap()->new_lo_space()->Flip();
- heap()->new_lo_space()->ResetPendingObject();
+ DCHECK_EQ(new_space->Size(), 0);
+ }
+
+ if (heap()->new_lo_space()) {
+ heap()->new_lo_space()->Flip();
+ heap()->new_lo_space()->ResetPendingObject();
+ }
// Old space.
DCHECK(old_space_evacuation_pages_.empty());
@@ -2860,18 +2904,27 @@ void MarkCompactCollector::EvacuatePrologue() {
void MarkCompactCollector::EvacuateEpilogue() {
aborted_evacuation_candidates_.clear();
+
// New space.
- heap()->new_space()->set_age_mark(heap()->new_space()->top());
- DCHECK_IMPLIES(FLAG_always_promote_young_mc,
- heap()->new_space()->Size() == 0);
+ if (heap()->new_space()) {
+ heap()->new_space()->set_age_mark(heap()->new_space()->top());
+ DCHECK_IMPLIES(FLAG_always_promote_young_mc,
+ heap()->new_space()->Size() == 0);
+ }
+
// Deallocate unmarked large objects.
heap()->lo_space()->FreeUnmarkedObjects();
heap()->code_lo_space()->FreeUnmarkedObjects();
- heap()->new_lo_space()->FreeUnmarkedObjects();
+ if (heap()->new_lo_space()) {
+ heap()->new_lo_space()->FreeUnmarkedObjects();
+ }
+
// Old space. Deallocate evacuated candidate pages.
ReleaseEvacuationCandidates();
+
// Give pages that are queued to be freed back to the OS.
heap()->memory_allocator()->unmapper()->FreeQueuedChunks();
+
#ifdef DEBUG
// Old-to-old slot sets must be empty after evacuation.
for (Page* p : *heap()->old_space()) {
@@ -3271,19 +3324,21 @@ void MarkCompactCollector::EvacuatePagesInParallel() {
}
// Promote young generation large objects.
- IncrementalMarking::NonAtomicMarkingState* marking_state =
- heap()->incremental_marking()->non_atomic_marking_state();
-
- for (auto it = heap()->new_lo_space()->begin();
- it != heap()->new_lo_space()->end();) {
- LargePage* current = *it;
- it++;
- HeapObject object = current->GetObject();
- DCHECK(!marking_state->IsGrey(object));
- if (marking_state->IsBlack(object)) {
- heap_->lo_space()->PromoteNewLargeObject(current);
- current->SetFlag(Page::PAGE_NEW_OLD_PROMOTION);
- evacuation_items.emplace_back(ParallelWorkItem{}, current);
+ if (heap()->new_lo_space()) {
+ IncrementalMarking::NonAtomicMarkingState* marking_state =
+ heap()->incremental_marking()->non_atomic_marking_state();
+
+ for (auto it = heap()->new_lo_space()->begin();
+ it != heap()->new_lo_space()->end();) {
+ LargePage* current = *it;
+ it++;
+ HeapObject object = current->GetObject();
+ DCHECK(!marking_state->IsGrey(object));
+ if (marking_state->IsBlack(object)) {
+ heap_->lo_space()->PromoteNewLargeObject(current);
+ current->SetFlag(Page::PAGE_NEW_OLD_PROMOTION);
+ evacuation_items.emplace_back(ParallelWorkItem{}, current);
+ }
}
}
@@ -3311,7 +3366,7 @@ class EvacuationWeakObjectRetainer : public WeakObjectRetainer {
Object RetainAs(Object object) override {
if (object.IsHeapObject()) {
HeapObject heap_object = HeapObject::cast(object);
- MapWord map_word = heap_object.map_word();
+ MapWord map_word = heap_object.map_word(kRelaxedLoad);
if (map_word.IsForwardingAddress()) {
return map_word.ToForwardingAddress();
}
@@ -3440,7 +3495,7 @@ void MarkCompactCollector::Evacuate() {
UpdatePointersAfterEvacuation();
- {
+ if (heap()->new_space()) {
TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_EVACUATE_REBALANCE);
if (!heap()->new_space()->Rebalance()) {
heap()->FatalProcessOutOfMemory("NewSpace::Rebalance");
@@ -3642,7 +3697,7 @@ class RememberedSetUpdatingItem : public UpdatingItem {
return REMOVE_SLOT;
}
if (Heap::InFromPage(heap_object)) {
- MapWord map_word = heap_object.map_word();
+ MapWord map_word = heap_object.map_word(kRelaxedLoad);
if (map_word.IsForwardingAddress()) {
HeapObjectReference::Update(THeapObjectSlot(slot),
map_word.ToForwardingAddress());
@@ -3812,6 +3867,8 @@ MarkCompactCollector::CreateRememberedSetUpdatingItem(
int MarkCompactCollectorBase::CollectToSpaceUpdatingItems(
std::vector<std::unique_ptr<UpdatingItem>>* items) {
+ if (!heap()->new_space()) return 0;
+
// Seed to space pages.
const Address space_start = heap()->new_space()->first_allocatable_address();
const Address space_end = heap()->new_space()->top();
@@ -3874,7 +3931,7 @@ class EphemeronTableUpdatingItem : public UpdatingItem {
it != heap_->ephemeron_remembered_set_.end();) {
EphemeronHashTable table = it->first;
auto& indices = it->second;
- if (table.map_word().IsForwardingAddress()) {
+ if (table.map_word(kRelaxedLoad).IsForwardingAddress()) {
// The table has moved, and RecordMigratedSlotVisitor::VisitEphemeron
// inserts entries for the moved table into ephemeron_remembered_set_.
it = heap_->ephemeron_remembered_set_.erase(it);
@@ -3887,7 +3944,7 @@ class EphemeronTableUpdatingItem : public UpdatingItem {
HeapObjectSlot key_slot(table.RawFieldOfElementAt(
EphemeronHashTable::EntryToIndex(InternalIndex(*iti))));
HeapObject key = key_slot.ToHeapObject();
- MapWord map_word = key.map_word();
+ MapWord map_word = key.map_word(kRelaxedLoad);
if (map_word.IsForwardingAddress()) {
key = map_word.ToForwardingAddress();
key_slot.StoreHeapObject(key);
@@ -4142,6 +4199,8 @@ class YoungGenerationMarkingVerifier : public MarkingVerifier {
}
protected:
+ void VerifyMap(Map map) override { VerifyHeapObjectImpl(map); }
+
void VerifyPointers(ObjectSlot start, ObjectSlot end) override {
VerifyPointersImpl(start, end);
}
@@ -4210,7 +4269,7 @@ class YoungGenerationEvacuationVerifier : public EvacuationVerifier {
}
}
}
-
+ void VerifyMap(Map map) override { VerifyHeapObjectImpl(map); }
void VerifyPointers(ObjectSlot start, ObjectSlot end) override {
VerifyPointersImpl(start, end);
}
@@ -4479,6 +4538,7 @@ class MinorMarkCompactCollector::RootMarkingVisitor : public RootVisitor {
void VisitRootPointers(Root root, const char* description,
FullObjectSlot start, FullObjectSlot end) final {
for (FullObjectSlot p = start; p < end; ++p) {
+ DCHECK(!MapWord::IsPacked((*p).ptr()));
MarkObjectByPointer(p);
}
}
@@ -4536,7 +4596,8 @@ void MinorMarkCompactCollector::CollectGarbage() {
}
// Since we promote all surviving large objects immediatelly, all remaining
// large objects must be dead.
- // TODO(ulan): Don't free all as soon as we have an intermediate generation.
+ // TODO(v8:11685): Don't free all as soon as we have an intermediate
+ // generation.
heap()->new_lo_space()->FreeDeadObjects([](HeapObject) { return true; });
}
@@ -4569,7 +4630,7 @@ void MinorMarkCompactCollector::MakeIterable(
p->heap()->CreateFillerObjectAt(free_start, static_cast<int>(size),
ClearRecordedSlots::kNo);
}
- Map map = object.synchronized_map();
+ Map map = object.map(kAcquireLoad);
int size = object.SizeFromMap(map);
free_start = free_end + size;
}
@@ -5024,7 +5085,7 @@ void MinorMarkCompactCollector::TraceFragmentation() {
free_bytes_index++;
}
}
- Map map = object.synchronized_map();
+ Map map = object.map(kAcquireLoad);
int size = object.SizeFromMap(map);
live_bytes += size;
free_start = free_end + size;
diff --git a/deps/v8/src/heap/mark-compact.h b/deps/v8/src/heap/mark-compact.h
index 733588ae80..035fb37064 100644
--- a/deps/v8/src/heap/mark-compact.h
+++ b/deps/v8/src/heap/mark-compact.h
@@ -506,6 +506,7 @@ class MarkCompactCollector final : public MarkCompactCollectorBase {
void RecordLiveSlotsOnPage(Page* page);
bool is_compacting() const { return compacting_; }
+ bool is_shared_heap() const { return is_shared_heap_; }
// Ensures that sweeping is finished.
//
@@ -605,11 +606,11 @@ class MarkCompactCollector final : public MarkCompactCollectorBase {
void MarkLiveObjects() override;
- // Marks the object black and adds it to the marking work list.
+ // Marks the object grey and adds it to the marking work list.
// This is for non-incremental marking only.
V8_INLINE void MarkObject(HeapObject host, HeapObject obj);
- // Marks the object black and adds it to the marking work list.
+ // Marks the object grey and adds it to the marking work list.
// This is for non-incremental marking only.
V8_INLINE void MarkRootObject(Root root, HeapObject obj);
@@ -743,6 +744,8 @@ class MarkCompactCollector final : public MarkCompactCollectorBase {
CollectorState state_;
#endif
+ const bool is_shared_heap_;
+
bool was_marked_incrementally_;
bool evacuation_;
diff --git a/deps/v8/src/heap/marking-barrier-inl.h b/deps/v8/src/heap/marking-barrier-inl.h
index 56bd7efda2..d03bdcb0f7 100644
--- a/deps/v8/src/heap/marking-barrier-inl.h
+++ b/deps/v8/src/heap/marking-barrier-inl.h
@@ -28,8 +28,14 @@ bool MarkingBarrier::MarkValue(HeapObject host, HeapObject value) {
// visits the host object.
return false;
}
- if (WhiteToGreyAndPush(value) && is_main_thread_barrier_) {
- incremental_marking_->RestartIfNotMarking();
+ if (WhiteToGreyAndPush(value)) {
+ if (is_main_thread_barrier_) {
+ incremental_marking_->RestartIfNotMarking();
+ }
+
+ if (V8_UNLIKELY(FLAG_track_retaining_path)) {
+ heap_->AddRetainingRoot(Root::kWriteBarrier, value);
+ }
}
return true;
}
diff --git a/deps/v8/src/heap/marking-visitor-inl.h b/deps/v8/src/heap/marking-visitor-inl.h
index 55c37e535b..14e8a4d355 100644
--- a/deps/v8/src/heap/marking-visitor-inl.h
+++ b/deps/v8/src/heap/marking-visitor-inl.h
@@ -22,6 +22,7 @@ namespace internal {
template <typename ConcreteVisitor, typename MarkingState>
void MarkingVisitorBase<ConcreteVisitor, MarkingState>::MarkObject(
HeapObject host, HeapObject object) {
+ DCHECK(ReadOnlyHeap::Contains(object) || heap_->Contains(object));
concrete_visitor()->SynchronizePageAccess(object);
if (concrete_visitor()->marking_state()->WhiteToGrey(object)) {
local_marking_worklists_->Push(object);
@@ -38,6 +39,9 @@ template <typename ConcreteVisitor, typename MarkingState>
template <typename THeapObjectSlot>
void MarkingVisitorBase<ConcreteVisitor, MarkingState>::ProcessStrongHeapObject(
HeapObject host, THeapObjectSlot slot, HeapObject heap_object) {
+ concrete_visitor()->SynchronizePageAccess(heap_object);
+ BasicMemoryChunk* target_page = BasicMemoryChunk::FromHeapObject(heap_object);
+ if (!is_shared_heap_ && target_page->InSharedHeap()) return;
MarkObject(host, heap_object);
concrete_visitor()->RecordSlot(host, slot, heap_object);
}
@@ -355,7 +359,7 @@ int MarkingVisitorBase<ConcreteVisitor, MarkingState>::MarkDescriptorArrayBlack(
DescriptorArray descriptors) {
concrete_visitor()->marking_state()->WhiteToGrey(descriptors);
if (concrete_visitor()->marking_state()->GreyToBlack(descriptors)) {
- VisitPointer(descriptors, descriptors.map_slot());
+ VisitMapPointer(descriptors);
VisitPointers(descriptors, descriptors.GetFirstPointerSlot(),
descriptors.GetDescriptorSlot(0));
return DescriptorArray::BodyDescriptor::SizeOf(descriptors.map(),
diff --git a/deps/v8/src/heap/marking-visitor.h b/deps/v8/src/heap/marking-visitor.h
index 45dda338d0..f8795aadfd 100644
--- a/deps/v8/src/heap/marking-visitor.h
+++ b/deps/v8/src/heap/marking-visitor.h
@@ -114,7 +114,8 @@ class MarkingVisitorBase : public HeapVisitor<int, ConcreteVisitor> {
mark_compact_epoch_(mark_compact_epoch),
bytecode_flush_mode_(bytecode_flush_mode),
is_embedder_tracing_enabled_(is_embedder_tracing_enabled),
- is_forced_gc_(is_forced_gc) {}
+ is_forced_gc_(is_forced_gc),
+ is_shared_heap_(heap->IsShared()) {}
V8_INLINE int VisitBytecodeArray(Map map, BytecodeArray object);
V8_INLINE int VisitDescriptorArray(Map map, DescriptorArray object);
@@ -133,6 +134,11 @@ class MarkingVisitorBase : public HeapVisitor<int, ConcreteVisitor> {
V8_INLINE int VisitWeakCell(Map map, WeakCell object);
// ObjectVisitor overrides.
+ void VisitMapPointer(HeapObject host) final {
+ // Note that we are skipping the recording the slot because map objects
+ // can't move, so this is safe (see ProcessStrongHeapObject for comparison)
+ MarkObject(host, HeapObject::cast(host.map()));
+ }
V8_INLINE void VisitPointer(HeapObject host, ObjectSlot p) final {
VisitPointersImpl(host, p, p + 1);
}
@@ -196,6 +202,7 @@ class MarkingVisitorBase : public HeapVisitor<int, ConcreteVisitor> {
const BytecodeFlushMode bytecode_flush_mode_;
const bool is_embedder_tracing_enabled_;
const bool is_forced_gc_;
+ const bool is_shared_heap_;
};
} // namespace internal
diff --git a/deps/v8/src/heap/memory-allocator.cc b/deps/v8/src/heap/memory-allocator.cc
index b5bccb879d..5783f2d04b 100644
--- a/deps/v8/src/heap/memory-allocator.cc
+++ b/deps/v8/src/heap/memory-allocator.cc
@@ -20,118 +20,23 @@
namespace v8 {
namespace internal {
-static base::LazyInstance<CodeRangeAddressHint>::type code_range_address_hint =
- LAZY_INSTANCE_INITIALIZER;
-
-namespace {
-void FunctionInStaticBinaryForAddressHint() {}
-} // namespace
-
-Address CodeRangeAddressHint::GetAddressHint(size_t code_range_size) {
- base::MutexGuard guard(&mutex_);
- auto it = recently_freed_.find(code_range_size);
- if (it == recently_freed_.end() || it->second.empty()) {
- return FUNCTION_ADDR(&FunctionInStaticBinaryForAddressHint);
- }
- Address result = it->second.back();
- it->second.pop_back();
- return result;
-}
-
-void CodeRangeAddressHint::NotifyFreedCodeRange(Address code_range_start,
- size_t code_range_size) {
- base::MutexGuard guard(&mutex_);
- recently_freed_[code_range_size].push_back(code_range_start);
-}
-
// -----------------------------------------------------------------------------
// MemoryAllocator
//
-MemoryAllocator::MemoryAllocator(Isolate* isolate, size_t capacity,
- size_t code_range_size)
+MemoryAllocator::MemoryAllocator(Isolate* isolate,
+ v8::PageAllocator* code_page_allocator,
+ size_t capacity)
: isolate_(isolate),
data_page_allocator_(isolate->page_allocator()),
- code_page_allocator_(nullptr),
+ code_page_allocator_(code_page_allocator),
capacity_(RoundUp(capacity, Page::kPageSize)),
size_(0),
size_executable_(0),
lowest_ever_allocated_(static_cast<Address>(-1ll)),
highest_ever_allocated_(kNullAddress),
unmapper_(isolate->heap(), this) {
- InitializeCodePageAllocator(data_page_allocator_, code_range_size);
-}
-
-void MemoryAllocator::InitializeCodePageAllocator(
- v8::PageAllocator* page_allocator, size_t requested) {
- DCHECK_NULL(code_page_allocator_instance_.get());
-
- code_page_allocator_ = page_allocator;
-
- if (requested == 0) {
- if (!isolate_->RequiresCodeRange()) return;
- // When a target requires the code range feature, we put all code objects
- // in a kMaximalCodeRangeSize range of virtual address space, so that
- // they can call each other with near calls.
- requested = kMaximalCodeRangeSize;
- } else if (requested <= kMinimumCodeRangeSize) {
- requested = kMinimumCodeRangeSize;
- }
-
- const size_t reserved_area =
- kReservedCodeRangePages * MemoryAllocator::GetCommitPageSize();
- if (requested < (kMaximalCodeRangeSize - reserved_area)) {
- requested += RoundUp(reserved_area, MemoryChunk::kPageSize);
- // Fullfilling both reserved pages requirement and huge code area
- // alignments is not supported (requires re-implementation).
- DCHECK_LE(kMinExpectedOSPageSize, page_allocator->AllocatePageSize());
- }
- DCHECK(!isolate_->RequiresCodeRange() || requested <= kMaximalCodeRangeSize);
-
- Address hint =
- RoundDown(code_range_address_hint.Pointer()->GetAddressHint(requested),
- page_allocator->AllocatePageSize());
- VirtualMemory reservation(
- page_allocator, requested, reinterpret_cast<void*>(hint),
- std::max(kMinExpectedOSPageSize, page_allocator->AllocatePageSize()));
- if (!reservation.IsReserved()) {
- V8::FatalProcessOutOfMemory(isolate_,
- "CodeRange setup: allocate virtual memory");
- }
- code_range_ = reservation.region();
- isolate_->AddCodeRange(code_range_.begin(), code_range_.size());
-
- // We are sure that we have mapped a block of requested addresses.
- DCHECK_GE(reservation.size(), requested);
- Address base = reservation.address();
-
- // On some platforms, specifically Win64, we need to reserve some pages at
- // the beginning of an executable space. See
- // https://cs.chromium.org/chromium/src/components/crash/content/
- // app/crashpad_win.cc?rcl=fd680447881449fba2edcf0589320e7253719212&l=204
- // for details.
- if (reserved_area > 0) {
- if (!reservation.SetPermissions(base, reserved_area,
- PageAllocator::kReadWrite))
- V8::FatalProcessOutOfMemory(isolate_, "CodeRange setup: set permissions");
-
- base += reserved_area;
- }
- Address aligned_base = RoundUp(base, MemoryChunk::kAlignment);
- size_t size =
- RoundDown(reservation.size() - (aligned_base - base) - reserved_area,
- MemoryChunk::kPageSize);
- DCHECK(IsAligned(aligned_base, kMinExpectedOSPageSize));
-
- LOG(isolate_,
- NewEvent("CodeRange", reinterpret_cast<void*>(reservation.address()),
- requested));
-
- code_reservation_ = std::move(reservation);
- code_page_allocator_instance_ = std::make_unique<base::BoundedPageAllocator>(
- page_allocator, aligned_base, size,
- static_cast<size_t>(MemoryChunk::kAlignment));
- code_page_allocator_ = code_page_allocator_instance_.get();
+ DCHECK_NOT_NULL(code_page_allocator);
}
void MemoryAllocator::TearDown() {
@@ -147,13 +52,6 @@ void MemoryAllocator::TearDown() {
last_chunk_.Free();
}
- if (code_page_allocator_instance_.get()) {
- DCHECK(!code_range_.is_empty());
- code_range_address_hint.Pointer()->NotifyFreedCodeRange(code_range_.begin(),
- code_range_.size());
- code_range_ = base::AddressRegion();
- code_page_allocator_instance_.reset();
- }
code_page_allocator_ = nullptr;
data_page_allocator_ = nullptr;
}
diff --git a/deps/v8/src/heap/memory-allocator.h b/deps/v8/src/heap/memory-allocator.h
index 179877e753..d405aefa53 100644
--- a/deps/v8/src/heap/memory-allocator.h
+++ b/deps/v8/src/heap/memory-allocator.h
@@ -17,6 +17,7 @@
#include "src/base/macros.h"
#include "src/base/platform/mutex.h"
#include "src/base/platform/semaphore.h"
+#include "src/heap/code-range.h"
#include "src/heap/heap.h"
#include "src/heap/memory-chunk.h"
#include "src/heap/spaces.h"
@@ -30,27 +31,6 @@ class Heap;
class Isolate;
class ReadOnlyPage;
-// The process-wide singleton that keeps track of code range regions with the
-// intention to reuse free code range regions as a workaround for CFG memory
-// leaks (see crbug.com/870054).
-class CodeRangeAddressHint {
- public:
- // Returns the most recently freed code range start address for the given
- // size. If there is no such entry, then a random address is returned.
- V8_EXPORT_PRIVATE Address GetAddressHint(size_t code_range_size);
-
- V8_EXPORT_PRIVATE void NotifyFreedCodeRange(Address code_range_start,
- size_t code_range_size);
-
- private:
- base::Mutex mutex_;
- // A map from code range size to an array of recently freed code range
- // addresses. There should be O(1) different code range sizes.
- // The length of each array is limited by the peak number of code ranges,
- // which should be also O(1).
- std::unordered_map<size_t, std::vector<Address>> recently_freed_;
-};
-
// ----------------------------------------------------------------------------
// A space acquires chunks of memory from the operating system. The memory
// allocator allocates and deallocates pages for the paged heap spaces and large
@@ -172,8 +152,9 @@ class MemoryAllocator {
V8_EXPORT_PRIVATE static base::AddressRegion ComputeDiscardMemoryArea(
Address addr, size_t size);
- V8_EXPORT_PRIVATE MemoryAllocator(Isolate* isolate, size_t max_capacity,
- size_t code_range_size);
+ V8_EXPORT_PRIVATE MemoryAllocator(Isolate* isolate,
+ v8::PageAllocator* code_page_allocator,
+ size_t max_capacity);
V8_EXPORT_PRIVATE void TearDown();
@@ -283,17 +264,6 @@ class MemoryAllocator {
: data_page_allocator_;
}
- // A region of memory that may contain executable code including reserved
- // OS page with read-write access in the beginning.
- const base::AddressRegion& code_range() const {
- // |code_range_| >= |optional RW pages| + |code_page_allocator_instance_|
- DCHECK_IMPLIES(!code_range_.is_empty(), code_page_allocator_instance_);
- DCHECK_IMPLIES(!code_range_.is_empty(),
- code_range_.contains(code_page_allocator_instance_->begin(),
- code_page_allocator_instance_->size()));
- return code_range_;
- }
-
Unmapper* unmapper() { return &unmapper_; }
// Performs all necessary bookkeeping to free the memory, but does not free
@@ -306,9 +276,6 @@ class MemoryAllocator {
void RegisterReadOnlyMemory(ReadOnlyPage* page);
private:
- void InitializeCodePageAllocator(v8::PageAllocator* page_allocator,
- size_t requested);
-
// PreFreeMemory logically frees the object, i.e., it unregisters the
// memory, logs a delete event and adds the chunk to remembered unmapped
// pages.
@@ -360,10 +327,6 @@ class MemoryAllocator {
Isolate* isolate_;
- // This object controls virtual space reserved for code on the V8 heap. This
- // is only valid for 64-bit architectures where kRequiresCodeRange.
- VirtualMemory code_reservation_;
-
// Page allocator used for allocating data pages. Depending on the
// configuration it may be a page allocator instance provided by
// v8::Platform or a BoundedPageAllocator (when pointer compression is
@@ -371,29 +334,12 @@ class MemoryAllocator {
v8::PageAllocator* data_page_allocator_;
// Page allocator used for allocating code pages. Depending on the
- // configuration it may be a page allocator instance provided by
- // v8::Platform or a BoundedPageAllocator (when pointer compression is
- // enabled or on those 64-bit architectures where pc-relative 32-bit
+ // configuration it may be a page allocator instance provided by v8::Platform
+ // or a BoundedPageAllocator from Heap::code_range_ (when pointer compression
+ // is enabled or on those 64-bit architectures where pc-relative 32-bit
// displacement can be used for call and jump instructions).
v8::PageAllocator* code_page_allocator_;
- // A part of the |code_reservation_| that may contain executable code
- // including reserved page with read-write access in the beginning.
- // See details below.
- base::AddressRegion code_range_;
-
- // This unique pointer owns the instance of bounded code allocator
- // that controls executable pages allocation. It does not control the
- // optionally existing page in the beginning of the |code_range_|.
- // So, summarizing all above, the following conditions hold:
- // 1) |code_reservation_| >= |code_range_|
- // 2) |code_range_| >= |optional RW pages| +
- // |code_page_allocator_instance_|. 3) |code_reservation_| is
- // AllocatePageSize()-aligned 4) |code_page_allocator_instance_| is
- // MemoryChunk::kAlignment-aligned 5) |code_range_| is
- // CommitPageSize()-aligned
- std::unique_ptr<base::BoundedPageAllocator> code_page_allocator_instance_;
-
// Maximum space size in bytes.
size_t capacity_;
diff --git a/deps/v8/src/heap/memory-chunk.cc b/deps/v8/src/heap/memory-chunk.cc
index c2355c6b84..4d16da707f 100644
--- a/deps/v8/src/heap/memory-chunk.cc
+++ b/deps/v8/src/heap/memory-chunk.cc
@@ -161,6 +161,9 @@ MemoryChunk* MemoryChunk::Initialize(BasicMemoryChunk* basic_chunk, Heap* heap,
chunk->possibly_empty_buckets_.Initialize();
+ // All pages of a shared heap need to be marked with this flag.
+ if (heap->IsShared()) chunk->SetFlag(IN_SHARED_HEAP);
+
#ifdef V8_ENABLE_CONSERVATIVE_STACK_SCANNING
chunk->object_start_bitmap_ = ObjectStartBitmap(chunk->area_start());
#endif
diff --git a/deps/v8/src/heap/memory-measurement.cc b/deps/v8/src/heap/memory-measurement.cc
index ab491e19a6..491fe3102a 100644
--- a/deps/v8/src/heap/memory-measurement.cc
+++ b/deps/v8/src/heap/memory-measurement.cc
@@ -336,7 +336,7 @@ std::unique_ptr<v8::MeasureMemoryDelegate> MemoryMeasurement::DefaultDelegate(
bool NativeContextInferrer::InferForContext(Isolate* isolate, Context context,
Address* native_context) {
- Map context_map = context.synchronized_map();
+ Map context_map = context.map(kAcquireLoad);
Object maybe_native_context =
TaggedField<Object, Map::kConstructorOrBackPointerOrNativeContextOffset>::
Acquire_Load(isolate, context_map);
diff --git a/deps/v8/src/heap/new-spaces-inl.h b/deps/v8/src/heap/new-spaces-inl.h
index ffd5d8cfd7..98626260e1 100644
--- a/deps/v8/src/heap/new-spaces-inl.h
+++ b/deps/v8/src/heap/new-spaces-inl.h
@@ -5,12 +5,12 @@
#ifndef V8_HEAP_NEW_SPACES_INL_H_
#define V8_HEAP_NEW_SPACES_INL_H_
+#include "src/base/sanitizer/msan.h"
#include "src/common/globals.h"
#include "src/heap/heap.h"
#include "src/heap/new-spaces.h"
#include "src/heap/spaces-inl.h"
#include "src/objects/tagged-impl.h"
-#include "src/sanitizer/msan.h"
namespace v8 {
namespace internal {
@@ -87,6 +87,8 @@ HeapObject SemiSpaceObjectIterator::Next() {
AllocationResult NewSpace::AllocateRaw(int size_in_bytes,
AllocationAlignment alignment,
AllocationOrigin origin) {
+ DCHECK(!FLAG_single_generation);
+ DCHECK(!FLAG_enable_third_party_heap);
#if DEBUG
VerifyTop();
#endif
@@ -110,7 +112,7 @@ AllocationResult NewSpace::AllocateFastUnaligned(int size_in_bytes,
AllocationOrigin origin) {
Address top = allocation_info_.top();
if (allocation_info_.limit() < top + size_in_bytes) {
- return AllocationResult::Retry();
+ return AllocationResult::Retry(NEW_SPACE);
}
HeapObject obj = HeapObject::FromAddress(top);
@@ -135,7 +137,7 @@ AllocationResult NewSpace::AllocateFastAligned(
if (allocation_info_.limit() - top <
static_cast<uintptr_t>(aligned_size_in_bytes)) {
- return AllocationResult::Retry();
+ return AllocationResult::Retry(NEW_SPACE);
}
HeapObject obj = HeapObject::FromAddress(top);
diff --git a/deps/v8/src/heap/new-spaces.cc b/deps/v8/src/heap/new-spaces.cc
index 029b77beb4..8486c7bcc4 100644
--- a/deps/v8/src/heap/new-spaces.cc
+++ b/deps/v8/src/heap/new-spaces.cc
@@ -4,6 +4,7 @@
#include "src/heap/new-spaces.h"
+#include "src/common/globals.h"
#include "src/heap/array-buffer-sweeper.h"
#include "src/heap/heap-inl.h"
#include "src/heap/incremental-marking.h"
@@ -628,8 +629,9 @@ AllocationResult NewSpace::AllocateRawSlow(int size_in_bytes,
AllocationResult NewSpace::AllocateRawUnaligned(int size_in_bytes,
AllocationOrigin origin) {
+ DCHECK(!FLAG_enable_third_party_heap);
if (!EnsureAllocation(size_in_bytes, kWordAligned)) {
- return AllocationResult::Retry();
+ return AllocationResult::Retry(NEW_SPACE);
}
DCHECK_EQ(allocation_info_.start(), allocation_info_.top());
@@ -646,8 +648,9 @@ AllocationResult NewSpace::AllocateRawUnaligned(int size_in_bytes,
AllocationResult NewSpace::AllocateRawAligned(int size_in_bytes,
AllocationAlignment alignment,
AllocationOrigin origin) {
+ DCHECK(!FLAG_enable_third_party_heap);
if (!EnsureAllocation(size_in_bytes, alignment)) {
- return AllocationResult::Retry();
+ return AllocationResult::Retry(NEW_SPACE);
}
DCHECK_EQ(allocation_info_.start(), allocation_info_.top());
@@ -741,9 +744,11 @@ void NewSpace::Verify(Isolate* isolate) {
CHECK_EQ(external_space_bytes[t], ExternalBackingStoreBytes(t));
}
+ if (!FLAG_concurrent_array_buffer_sweeping) {
size_t bytes = heap()->array_buffer_sweeper()->young().BytesSlow();
CHECK_EQ(bytes,
ExternalBackingStoreBytes(ExternalBackingStoreType::kArrayBuffer));
+ }
// Check semi-spaces.
CHECK_EQ(from_space_.id(), kFromSpace);
diff --git a/deps/v8/src/heap/object-stats.cc b/deps/v8/src/heap/object-stats.cc
index 86b2e6a2c4..5e0074e47f 100644
--- a/deps/v8/src/heap/object-stats.cc
+++ b/deps/v8/src/heap/object-stats.cc
@@ -74,7 +74,7 @@ class FieldStatsCollector : public ObjectVisitor {
raw_fields_count_in_object -= kDoubleSize / kTaggedSize;
*boxed_double_fields_count_ += 1;
} else if (host.IsSeqString()) {
- int string_data = SeqString::cast(host).synchronized_length() *
+ int string_data = SeqString::cast(host).length(kAcquireLoad) *
(String::cast(host).IsOneByteRepresentation() ? 1 : 2) /
kTaggedSize;
DCHECK_LE(string_data, raw_fields_count_in_object);
diff --git a/deps/v8/src/heap/objects-visiting-inl.h b/deps/v8/src/heap/objects-visiting-inl.h
index 37ecd50c8d..8aac430ddb 100644
--- a/deps/v8/src/heap/objects-visiting-inl.h
+++ b/deps/v8/src/heap/objects-visiting-inl.h
@@ -76,8 +76,9 @@ ResultType HeapVisitor<ResultType, ConcreteVisitor>::Visit(Map map,
template <typename ResultType, typename ConcreteVisitor>
void HeapVisitor<ResultType, ConcreteVisitor>::VisitMapPointer(
HeapObject host) {
- DCHECK(!host.map_word().IsForwardingAddress());
- static_cast<ConcreteVisitor*>(this)->VisitPointer(host, host.map_slot());
+ DCHECK(!host.map_word(kRelaxedLoad).IsForwardingAddress());
+ if (!static_cast<ConcreteVisitor*>(this)->ShouldVisitMapPointer()) return;
+ static_cast<ConcreteVisitor*>(this)->VisitMapPointer(host);
}
#define VISIT(TypeName) \
@@ -167,7 +168,7 @@ ResultType HeapVisitor<ResultType, ConcreteVisitor>::VisitFreeSpace(
if (visitor->ShouldVisitMapPointer()) {
visitor->VisitMapPointer(object);
}
- return static_cast<ResultType>(object.size());
+ return static_cast<ResultType>(object.size(kRelaxedLoad));
}
template <typename ConcreteVisitor>
diff --git a/deps/v8/src/heap/objects-visiting.h b/deps/v8/src/heap/objects-visiting.h
index 9f133d6cfa..7ea322dfb9 100644
--- a/deps/v8/src/heap/objects-visiting.h
+++ b/deps/v8/src/heap/objects-visiting.h
@@ -52,8 +52,11 @@ namespace internal {
V(SyntheticModule) \
V(TransitionArray) \
IF_WASM(V, WasmArray) \
+ IF_WASM(V, WasmExportedFunctionData) \
+ IF_WASM(V, WasmFunctionData) \
IF_WASM(V, WasmIndirectFunctionTable) \
IF_WASM(V, WasmInstanceObject) \
+ IF_WASM(V, WasmJSFunctionData) \
IF_WASM(V, WasmStruct) \
IF_WASM(V, WasmTypeInfo)
@@ -78,6 +81,8 @@ class HeapVisitor : public ObjectVisitor {
public:
V8_INLINE ResultType Visit(HeapObject object);
V8_INLINE ResultType Visit(Map map, HeapObject object);
+ // A callback for visiting the map pointer in the object header.
+ V8_INLINE void VisitMapPointer(HeapObject host);
protected:
// A guard predicate for visiting the object.
@@ -86,8 +91,6 @@ class HeapVisitor : public ObjectVisitor {
V8_INLINE bool ShouldVisit(HeapObject object) { return true; }
// Guard predicate for visiting the objects map pointer separately.
V8_INLINE bool ShouldVisitMapPointer() { return true; }
- // A callback for visiting the map pointer in the object header.
- V8_INLINE void VisitMapPointer(HeapObject host);
// If this predicate returns false, then the heap visitor will fail
// in default Visit implemention for subclasses of JSObject.
V8_INLINE bool AllowDefaultJSObjectVisit() { return true; }
diff --git a/deps/v8/src/heap/paged-spaces-inl.h b/deps/v8/src/heap/paged-spaces-inl.h
index e135e30efc..8c77186583 100644
--- a/deps/v8/src/heap/paged-spaces-inl.h
+++ b/deps/v8/src/heap/paged-spaces-inl.h
@@ -131,6 +131,7 @@ AllocationResult PagedSpace::AllocateFastAligned(
AllocationResult PagedSpace::AllocateRawUnaligned(int size_in_bytes,
AllocationOrigin origin) {
+ DCHECK(!FLAG_enable_third_party_heap);
if (!EnsureLabMain(size_in_bytes, origin)) {
return AllocationResult::Retry(identity());
}
@@ -153,6 +154,7 @@ AllocationResult PagedSpace::AllocateRawUnaligned(int size_in_bytes,
AllocationResult PagedSpace::AllocateRawAligned(int size_in_bytes,
AllocationAlignment alignment,
AllocationOrigin origin) {
+ DCHECK(!FLAG_enable_third_party_heap);
DCHECK_EQ(identity(), OLD_SPACE);
int allocation_size = size_in_bytes;
// We don't know exactly how much filler we need to align until space is
@@ -182,6 +184,7 @@ AllocationResult PagedSpace::AllocateRawAligned(int size_in_bytes,
AllocationResult PagedSpace::AllocateRaw(int size_in_bytes,
AllocationAlignment alignment,
AllocationOrigin origin) {
+ DCHECK(!FLAG_enable_third_party_heap);
AllocationResult result;
if (alignment != kWordAligned) {
diff --git a/deps/v8/src/heap/paged-spaces.cc b/deps/v8/src/heap/paged-spaces.cc
index f541974a50..8543f109ed 100644
--- a/deps/v8/src/heap/paged-spaces.cc
+++ b/deps/v8/src/heap/paged-spaces.cc
@@ -731,7 +731,7 @@ void PagedSpace::Verify(Isolate* isolate, ObjectVisitor* visitor) {
}
CHECK(allocation_pointer_found_in_space);
- if (identity() == OLD_SPACE) {
+ if (identity() == OLD_SPACE && !FLAG_concurrent_array_buffer_sweeping) {
size_t bytes = heap()->array_buffer_sweeper()->old().BytesSlow();
CHECK_EQ(bytes,
ExternalBackingStoreBytes(ExternalBackingStoreType::kArrayBuffer));
@@ -832,8 +832,8 @@ void PagedSpace::PrepareForMarkCompact() {
bool PagedSpace::RefillLabMain(int size_in_bytes, AllocationOrigin origin) {
VMState<GC> state(heap()->isolate());
- RuntimeCallTimerScope runtime_timer(
- heap()->isolate(), RuntimeCallCounterId::kGC_Custom_SlowAllocateRaw);
+ RCS_SCOPE(heap()->isolate(),
+ RuntimeCallCounterId::kGC_Custom_SlowAllocateRaw);
return RawRefillLabMain(size_in_bytes, origin);
}
diff --git a/deps/v8/src/heap/read-only-heap.cc b/deps/v8/src/heap/read-only-heap.cc
index d5f7e843ef..05ca965e08 100644
--- a/deps/v8/src/heap/read-only-heap.cc
+++ b/deps/v8/src/heap/read-only-heap.cc
@@ -249,6 +249,10 @@ bool ReadOnlyHeap::read_only_object_cache_is_initialized() const {
return read_only_object_cache_.size() > 0;
}
+size_t ReadOnlyHeap::read_only_object_cache_size() const {
+ return read_only_object_cache_.size();
+}
+
ReadOnlyHeapObjectIterator::ReadOnlyHeapObjectIterator(ReadOnlyHeap* ro_heap)
: ReadOnlyHeapObjectIterator(ro_heap->read_only_space()) {}
diff --git a/deps/v8/src/heap/read-only-heap.h b/deps/v8/src/heap/read-only-heap.h
index f947832c5f..558a694c94 100644
--- a/deps/v8/src/heap/read-only-heap.h
+++ b/deps/v8/src/heap/read-only-heap.h
@@ -81,14 +81,15 @@ class ReadOnlyHeap {
// Returns a read-only cache entry at a particular index.
Object cached_read_only_object(size_t i) const;
bool read_only_object_cache_is_initialized() const;
+ size_t read_only_object_cache_size() const;
ReadOnlySpace* read_only_space() const { return read_only_space_; }
// Returns whether the ReadOnlySpace will actually be shared taking into
// account whether shared memory is available with pointer compression.
static bool IsReadOnlySpaceShared() {
- return V8_SHARED_RO_HEAP_BOOL && (!COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL ||
- IsSharedMemoryAvailable());
+ return V8_SHARED_RO_HEAP_BOOL &&
+ (!COMPRESS_POINTERS_BOOL || COMPRESS_POINTERS_IN_SHARED_CAGE_BOOL);
}
virtual void InitializeIsolateRoots(Isolate* isolate) {}
diff --git a/deps/v8/src/heap/read-only-spaces.cc b/deps/v8/src/heap/read-only-spaces.cc
index 5adac66afe..248b5c22e6 100644
--- a/deps/v8/src/heap/read-only-spaces.cc
+++ b/deps/v8/src/heap/read-only-spaces.cc
@@ -56,7 +56,18 @@ void ReadOnlyArtifacts::VerifyChecksum(SnapshotData* read_only_snapshot_data,
CHECK_WITH_MSG(snapshot_checksum,
"Attempt to create the read-only heap after already "
"creating from a snapshot.");
- CHECK_EQ(read_only_blob_checksum_, snapshot_checksum);
+ if (!FLAG_stress_snapshot) {
+ // --stress-snapshot is only intended to check how well the
+ // serializer/deserializer copes with unexpected objects, and is not
+ // intended to test whether the newly deserialized Isolate would actually
+ // work since it serializes a currently running Isolate, which is not
+ // supported. As a result, it's possible that it will create a new
+ // read-only snapshot that is not compatible with the original one (for
+ // instance due to the string table being re-ordered). Since we won't
+ // acutally use that new Isoalte, we're ok with any potential corruption.
+ // See crbug.com/1043058.
+ CHECK_EQ(read_only_blob_checksum_, snapshot_checksum);
+ }
} else {
// If there's no checksum, then that means the read-only heap objects are
// being created.
@@ -70,11 +81,10 @@ SingleCopyReadOnlyArtifacts::~SingleCopyReadOnlyArtifacts() {
// TearDown requires MemoryAllocator which itself is tied to an Isolate.
shared_read_only_space_->pages_.resize(0);
- v8::PageAllocator* page_allocator = GetPlatformPageAllocator();
for (ReadOnlyPage* chunk : pages_) {
void* chunk_address = reinterpret_cast<void*>(chunk->address());
- size_t size = RoundUp(chunk->size(), page_allocator->AllocatePageSize());
- CHECK(page_allocator->FreePages(chunk_address, size));
+ size_t size = RoundUp(chunk->size(), page_allocator_->AllocatePageSize());
+ CHECK(page_allocator_->FreePages(chunk_address, size));
}
}
@@ -86,6 +96,12 @@ ReadOnlyHeap* SingleCopyReadOnlyArtifacts::GetReadOnlyHeapForIsolate(
void SingleCopyReadOnlyArtifacts::Initialize(Isolate* isolate,
std::vector<ReadOnlyPage*>&& pages,
const AllocationStats& stats) {
+ // Do not use the platform page allocator when sharing a pointer compression
+ // cage, as the Isolate's page allocator is a BoundedPageAllocator tied to the
+ // shared cage.
+ page_allocator_ = COMPRESS_POINTERS_IN_SHARED_CAGE_BOOL
+ ? isolate->page_allocator()
+ : GetPlatformPageAllocator();
pages_ = std::move(pages);
set_accounting_stats(stats);
set_shared_read_only_space(
@@ -304,11 +320,12 @@ void ReadOnlySpace::DetachPagesAndAddToArtifacts(
DCHECK(ReadOnlyHeap::IsReadOnlySpaceShared());
Heap* heap = ReadOnlySpace::heap();
- // Without pointer compression, ReadOnlySpace pages are directly shared
- // between all heaps and so must be unregistered from their originating
- // allocator.
- Seal(COMPRESS_POINTERS_BOOL ? SealMode::kDetachFromHeap
- : SealMode::kDetachFromHeapAndUnregisterMemory);
+ // Without pointer compression in a per-Isolate cage, ReadOnlySpace pages are
+ // directly shared between all heaps and so must be unregistered from their
+ // originating allocator.
+ Seal(COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL
+ ? SealMode::kDetachFromHeap
+ : SealMode::kDetachFromHeapAndUnregisterMemory);
artifacts->Initialize(heap->isolate(), std::move(pages_), accounting_stats_);
}
@@ -635,6 +652,7 @@ HeapObject ReadOnlySpace::TryAllocateLinearlyAligned(
AllocationResult ReadOnlySpace::AllocateRawAligned(
int size_in_bytes, AllocationAlignment alignment) {
+ DCHECK(!FLAG_enable_third_party_heap);
DCHECK(!IsDetached());
int allocation_size = size_in_bytes;
@@ -789,9 +807,9 @@ SharedReadOnlySpace::SharedReadOnlySpace(Heap* heap,
SingleCopyReadOnlyArtifacts* artifacts)
: SharedReadOnlySpace(heap) {
// This constructor should only be used when RO_SPACE is shared without
- // pointer compression.
+ // pointer compression in a per-Isolate cage.
DCHECK(V8_SHARED_RO_HEAP_BOOL);
- DCHECK(!COMPRESS_POINTERS_BOOL);
+ DCHECK(!COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL);
accounting_stats_ = artifacts->accounting_stats();
pages_ = artifacts->pages();
}
diff --git a/deps/v8/src/heap/read-only-spaces.h b/deps/v8/src/heap/read-only-spaces.h
index ee4b2a8223..0ca05d8d4c 100644
--- a/deps/v8/src/heap/read-only-spaces.h
+++ b/deps/v8/src/heap/read-only-spaces.h
@@ -132,6 +132,9 @@ class SingleCopyReadOnlyArtifacts : public ReadOnlyArtifacts {
const AllocationStats& stats) override;
void ReinstallReadOnlySpace(Isolate* isolate) override;
void VerifyHeapAndSpaceRelationships(Isolate* isolate) override;
+
+ private:
+ v8::PageAllocator* page_allocator_ = nullptr;
};
// -----------------------------------------------------------------------------
diff --git a/deps/v8/src/heap/scavenger-inl.h b/deps/v8/src/heap/scavenger-inl.h
index 8560b5b62b..193565d34d 100644
--- a/deps/v8/src/heap/scavenger-inl.h
+++ b/deps/v8/src/heap/scavenger-inl.h
@@ -119,7 +119,7 @@ void Scavenger::PageMemoryFence(MaybeObject object) {
bool Scavenger::MigrateObject(Map map, HeapObject source, HeapObject target,
int size) {
// Copy the content of source to target.
- target.set_map_word(MapWord::FromMap(map));
+ target.set_map_word(MapWord::FromMap(map), kRelaxedStore);
heap()->CopyBlock(target.address() + kTaggedSize,
source.address() + kTaggedSize, size - kTaggedSize);
@@ -159,7 +159,7 @@ CopyAndForwardResult Scavenger::SemiSpaceCopyObject(
const bool self_success = MigrateObject(map, object, target, object_size);
if (!self_success) {
allocator_.FreeLast(NEW_SPACE, target, object_size);
- MapWord map_word = object.synchronized_map_word();
+ MapWord map_word = object.map_word(kAcquireLoad);
HeapObjectReference::Update(slot, map_word.ToForwardingAddress());
DCHECK(!Heap::InFromPage(*slot));
return Heap::InToPage(*slot)
@@ -184,6 +184,7 @@ CopyAndForwardResult Scavenger::PromoteObject(Map map, THeapObjectSlot slot,
static_assert(std::is_same<THeapObjectSlot, FullHeapObjectSlot>::value ||
std::is_same<THeapObjectSlot, HeapObjectSlot>::value,
"Only FullHeapObjectSlot and HeapObjectSlot are expected here");
+ DCHECK_GE(object_size, Heap::kMinObjectSizeInTaggedWords * kTaggedSize);
AllocationAlignment alignment = HeapObject::RequiredAlignment(map);
AllocationResult allocation = allocator_.Allocate(
OLD_SPACE, object_size, AllocationOrigin::kGC, alignment);
@@ -195,7 +196,7 @@ CopyAndForwardResult Scavenger::PromoteObject(Map map, THeapObjectSlot slot,
const bool self_success = MigrateObject(map, object, target, object_size);
if (!self_success) {
allocator_.FreeLast(OLD_SPACE, target, object_size);
- MapWord map_word = object.synchronized_map_word();
+ MapWord map_word = object.map_word(kAcquireLoad);
HeapObjectReference::Update(slot, map_word.ToForwardingAddress());
DCHECK(!Heap::InFromPage(*slot));
return Heap::InToPage(*slot)
@@ -326,24 +327,25 @@ SlotCallbackResult Scavenger::EvacuateShortcutCandidate(Map map,
HeapObjectReference::Update(slot, first);
if (!Heap::InYoungGeneration(first)) {
- object.synchronized_set_map_word(MapWord::FromForwardingAddress(first));
+ object.set_map_word(MapWord::FromForwardingAddress(first), kReleaseStore);
return REMOVE_SLOT;
}
- MapWord first_word = first.synchronized_map_word();
+ MapWord first_word = first.map_word(kAcquireLoad);
if (first_word.IsForwardingAddress()) {
HeapObject target = first_word.ToForwardingAddress();
HeapObjectReference::Update(slot, target);
- object.synchronized_set_map_word(MapWord::FromForwardingAddress(target));
+ object.set_map_word(MapWord::FromForwardingAddress(target),
+ kReleaseStore);
return Heap::InYoungGeneration(target) ? KEEP_SLOT : REMOVE_SLOT;
}
Map map = first_word.ToMap();
SlotCallbackResult result =
EvacuateObjectDefault(map, slot, first, first.SizeFromMap(map),
Map::ObjectFieldsFrom(map.visitor_id()));
- object.synchronized_set_map_word(
- MapWord::FromForwardingAddress(slot.ToHeapObject()));
+ object.set_map_word(MapWord::FromForwardingAddress(slot.ToHeapObject()),
+ kReleaseStore);
return result;
}
DCHECK_EQ(ObjectFields::kMaybePointers,
@@ -390,7 +392,7 @@ SlotCallbackResult Scavenger::ScavengeObject(THeapObjectSlot p,
DCHECK(Heap::InFromPage(object));
// Synchronized load that consumes the publishing CAS of MigrateObject.
- MapWord first_word = object.synchronized_map_word();
+ MapWord first_word = object.map_word(kAcquireLoad);
// If the first word is a forwarding address, the object has already been
// copied.
diff --git a/deps/v8/src/heap/scavenger.cc b/deps/v8/src/heap/scavenger.cc
index be9971e7c6..efa3ed2f61 100644
--- a/deps/v8/src/heap/scavenger.cc
+++ b/deps/v8/src/heap/scavenger.cc
@@ -130,13 +130,13 @@ namespace {
V8_INLINE bool IsUnscavengedHeapObject(Heap* heap, Object object) {
return Heap::InFromPage(object) &&
- !HeapObject::cast(object).map_word().IsForwardingAddress();
+ !HeapObject::cast(object).map_word(kRelaxedLoad).IsForwardingAddress();
}
// Same as IsUnscavengedHeapObject() above but specialized for HeapObjects.
V8_INLINE bool IsUnscavengedHeapObject(Heap* heap, HeapObject heap_object) {
return Heap::InFromPage(heap_object) &&
- !heap_object.map_word().IsForwardingAddress();
+ !heap_object.map_word(kRelaxedLoad).IsForwardingAddress();
}
bool IsUnscavengedHeapObjectSlot(Heap* heap, FullObjectSlot p) {
@@ -152,7 +152,7 @@ class ScavengeWeakObjectRetainer : public WeakObjectRetainer {
return object;
}
- MapWord map_word = HeapObject::cast(object).map_word();
+ MapWord map_word = HeapObject::cast(object).map_word(kRelaxedLoad);
if (map_word.IsForwardingAddress()) {
return map_word.ToForwardingAddress();
}
@@ -384,6 +384,10 @@ void ScavengerCollector::CollectGarbage() {
&Heap::UpdateYoungReferenceInExternalStringTableEntry);
heap_->incremental_marking()->UpdateMarkingWorklistAfterScavenge();
+
+ if (V8_UNLIKELY(FLAG_track_retaining_path)) {
+ heap_->UpdateRetainersAfterScavenge();
+ }
}
if (FLAG_concurrent_marking) {
@@ -481,7 +485,7 @@ void ScavengerCollector::HandleSurvivingNewLargeObjects() {
Map map = update_info.second;
// Order is important here. We have to re-install the map to have access
// to meta-data like size during page promotion.
- object.set_map_word(MapWord::FromMap(map));
+ object.set_map_word(MapWord::FromMap(map), kRelaxedStore);
LargePage* page = LargePage::FromHeapObject(object);
heap_->lo_space()->PromoteNewLargeObject(page);
}
@@ -734,6 +738,7 @@ void Scavenger::AddEphemeronHashTable(EphemeronHashTable table) {
void RootScavengeVisitor::VisitRootPointer(Root root, const char* description,
FullObjectSlot p) {
DCHECK(!HasWeakHeapObjectTag(*p));
+ DCHECK(!MapWord::IsPacked((*p).ptr()));
ScavengePointer(p);
}
@@ -741,12 +746,15 @@ void RootScavengeVisitor::VisitRootPointers(Root root, const char* description,
FullObjectSlot start,
FullObjectSlot end) {
// Copy all HeapObject pointers in [start, end)
- for (FullObjectSlot p = start; p < end; ++p) ScavengePointer(p);
+ for (FullObjectSlot p = start; p < end; ++p) {
+ ScavengePointer(p);
+ }
}
void RootScavengeVisitor::ScavengePointer(FullObjectSlot p) {
Object object = *p;
DCHECK(!HasWeakHeapObjectTag(object));
+ DCHECK(!MapWord::IsPacked(object.ptr()));
if (Heap::InYoungGeneration(object)) {
scavenger_->ScavengeObject(FullHeapObjectSlot(p), HeapObject::cast(object));
}
diff --git a/deps/v8/src/heap/setup-heap-internal.cc b/deps/v8/src/heap/setup-heap-internal.cc
index 8a3e1fda12..886c89aeae 100644
--- a/deps/v8/src/heap/setup-heap-internal.cc
+++ b/deps/v8/src/heap/setup-heap-internal.cc
@@ -195,9 +195,10 @@ void Heap::FinalizePartialMap(Map map) {
map.set_constructor_or_back_pointer(roots.null_value());
}
-AllocationResult Heap::Allocate(Map map, AllocationType allocation_type) {
- DCHECK(map.instance_type() != MAP_TYPE);
- int size = map.instance_size();
+AllocationResult Heap::Allocate(Handle<Map> map,
+ AllocationType allocation_type) {
+ DCHECK(map->instance_type() != MAP_TYPE);
+ int size = map->instance_size();
HeapObject result;
AllocationResult allocation = AllocateRaw(size, allocation_type);
if (!allocation.To(&result)) return allocation;
@@ -205,7 +206,7 @@ AllocationResult Heap::Allocate(Map map, AllocationType allocation_type) {
WriteBarrierMode write_barrier_mode =
allocation_type == AllocationType::kYoung ? SKIP_WRITE_BARRIER
: UPDATE_WRITE_BARRIER;
- result.set_map_after_allocation(map, write_barrier_mode);
+ result.set_map_after_allocation(*map, write_barrier_mode);
return result;
}
@@ -281,7 +282,7 @@ bool Heap::CreateInitialMaps() {
{
AllocationResult allocation =
- Allocate(roots.null_map(), AllocationType::kReadOnly);
+ Allocate(roots.null_map_handle(), AllocationType::kReadOnly);
if (!allocation.To(&obj)) return false;
}
set_null_value(Oddball::cast(obj));
@@ -289,7 +290,7 @@ bool Heap::CreateInitialMaps() {
{
AllocationResult allocation =
- Allocate(roots.undefined_map(), AllocationType::kReadOnly);
+ Allocate(roots.undefined_map_handle(), AllocationType::kReadOnly);
if (!allocation.To(&obj)) return false;
}
set_undefined_value(Oddball::cast(obj));
@@ -297,7 +298,7 @@ bool Heap::CreateInitialMaps() {
DCHECK(!InYoungGeneration(roots.undefined_value()));
{
AllocationResult allocation =
- Allocate(roots.the_hole_map(), AllocationType::kReadOnly);
+ Allocate(roots.the_hole_map_handle(), AllocationType::kReadOnly);
if (!allocation.To(&obj)) return false;
}
set_the_hole_value(Oddball::cast(obj));
@@ -317,7 +318,7 @@ bool Heap::CreateInitialMaps() {
// Allocate the empty enum cache.
{
AllocationResult allocation =
- Allocate(roots.enum_cache_map(), AllocationType::kReadOnly);
+ Allocate(roots.enum_cache_map_handle(), AllocationType::kReadOnly);
if (!allocation.To(&obj)) return false;
}
set_empty_enum_cache(EnumCache::cast(obj));
@@ -381,6 +382,7 @@ bool Heap::CreateInitialMaps() {
ALLOCATE_PRIMITIVE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol,
Context::SYMBOL_FUNCTION_INDEX)
ALLOCATE_MAP(FOREIGN_TYPE, Foreign::kSize, foreign)
+ ALLOCATE_MAP(MEGA_DOM_HANDLER_TYPE, MegaDomHandler::kSize, mega_dom_handler)
ALLOCATE_PRIMITIVE_MAP(ODDBALL_TYPE, Oddball::kSize, boolean,
Context::BOOLEAN_FUNCTION_INDEX);
@@ -500,6 +502,10 @@ bool Heap::CreateInitialMaps() {
ALLOCATE_MAP(CODE_DATA_CONTAINER_TYPE, CodeDataContainer::kSize,
code_data_container)
+ IF_WASM(ALLOCATE_MAP, WASM_EXPORTED_FUNCTION_DATA_TYPE,
+ WasmExportedFunctionData::kSize, wasm_exported_function_data)
+ IF_WASM(ALLOCATE_MAP, WASM_JS_FUNCTION_DATA_TYPE, WasmJSFunctionData::kSize,
+ wasm_js_function_data)
IF_WASM(ALLOCATE_MAP, WASM_TYPE_INFO_TYPE, WasmTypeInfo::kSize,
wasm_type_info)
@@ -550,8 +556,9 @@ bool Heap::CreateInitialMaps() {
{
// Empty array boilerplate description
- AllocationResult alloc = Allocate(roots.array_boilerplate_description_map(),
- AllocationType::kReadOnly);
+ AllocationResult alloc =
+ Allocate(roots.array_boilerplate_description_map_handle(),
+ AllocationType::kReadOnly);
if (!alloc.To(&obj)) return false;
ArrayBoilerplateDescription::cast(obj).set_constant_elements(
@@ -564,7 +571,7 @@ bool Heap::CreateInitialMaps() {
{
AllocationResult allocation =
- Allocate(roots.boolean_map(), AllocationType::kReadOnly);
+ Allocate(roots.boolean_map_handle(), AllocationType::kReadOnly);
if (!allocation.To(&obj)) return false;
}
set_true_value(Oddball::cast(obj));
@@ -572,7 +579,7 @@ bool Heap::CreateInitialMaps() {
{
AllocationResult allocation =
- Allocate(roots.boolean_map(), AllocationType::kReadOnly);
+ Allocate(roots.boolean_map_handle(), AllocationType::kReadOnly);
if (!allocation.To(&obj)) return false;
}
set_false_value(Oddball::cast(obj));
@@ -864,6 +871,7 @@ void Heap::CreateInitialObjects() {
set_is_concat_spreadable_protector(*factory->NewProtector());
set_map_iterator_protector(*factory->NewProtector());
set_no_elements_protector(*factory->NewProtector());
+ set_mega_dom_protector(*factory->NewProtector());
set_promise_hook_protector(*factory->NewProtector());
set_promise_resolve_protector(*factory->NewProtector());
set_promise_species_protector(*factory->NewProtector());
diff --git a/deps/v8/src/heap/spaces-inl.h b/deps/v8/src/heap/spaces-inl.h
index ccdf050e68..9b9a02af43 100644
--- a/deps/v8/src/heap/spaces-inl.h
+++ b/deps/v8/src/heap/spaces-inl.h
@@ -141,7 +141,8 @@ AllocationResult LocalAllocationBuffer::AllocateRawAligned(
int filler_size = Heap::GetFillToAlign(current_top, alignment);
Address new_top = current_top + filler_size + size_in_bytes;
- if (new_top > allocation_info_.limit()) return AllocationResult::Retry();
+ if (new_top > allocation_info_.limit())
+ return AllocationResult::Retry(NEW_SPACE);
allocation_info_.set_top(new_top);
if (filler_size > 0) {
diff --git a/deps/v8/src/heap/spaces.cc b/deps/v8/src/heap/spaces.cc
index b6c1e0bcc2..63346786d5 100644
--- a/deps/v8/src/heap/spaces.cc
+++ b/deps/v8/src/heap/spaces.cc
@@ -11,6 +11,7 @@
#include "src/base/bits.h"
#include "src/base/bounded-page-allocator.h"
#include "src/base/macros.h"
+#include "src/base/sanitizer/msan.h"
#include "src/common/globals.h"
#include "src/heap/combined-heap.h"
#include "src/heap/concurrent-marking.h"
@@ -31,7 +32,6 @@
#include "src/objects/heap-object.h"
#include "src/objects/js-array-buffer-inl.h"
#include "src/objects/objects-inl.h"
-#include "src/sanitizer/msan.h"
#include "src/snapshot/snapshot.h"
#include "src/utils/ostreams.h"
diff --git a/deps/v8/src/heap/spaces.h b/deps/v8/src/heap/spaces.h
index 0a0a884dc0..4afada00ce 100644
--- a/deps/v8/src/heap/spaces.h
+++ b/deps/v8/src/heap/spaces.h
@@ -221,9 +221,11 @@ class Page : public MemoryChunk {
// from [page_addr .. page_addr + kPageSize[. This only works if the object
// is in fact in a page.
static Page* FromAddress(Address addr) {
+ DCHECK(!V8_ENABLE_THIRD_PARTY_HEAP_BOOL);
return reinterpret_cast<Page*>(addr & ~kPageAlignmentMask);
}
static Page* FromHeapObject(HeapObject o) {
+ DCHECK(!V8_ENABLE_THIRD_PARTY_HEAP_BOOL);
return reinterpret_cast<Page*>(o.ptr() & ~kAlignmentMask);
}
@@ -232,6 +234,7 @@ class Page : public MemoryChunk {
// we subtract a hole word. The valid address ranges from
// [page_addr + area_start_ .. page_addr + kPageSize + kTaggedSize].
static Page* FromAllocationAreaAddress(Address address) {
+ DCHECK(!V8_ENABLE_THIRD_PARTY_HEAP_BOOL);
return Page::FromAddress(address - kTaggedSize);
}
diff --git a/deps/v8/src/heap/sweeper.cc b/deps/v8/src/heap/sweeper.cc
index c4e60be707..0e35a3cea2 100644
--- a/deps/v8/src/heap/sweeper.cc
+++ b/deps/v8/src/heap/sweeper.cc
@@ -351,9 +351,6 @@ int Sweeper::RawSweep(
size_t live_bytes = 0;
size_t max_freed_bytes = 0;
- // TODO(ulan): we don't have to clear type old-to-old slots in code space
- // because the concurrent marker doesn't mark code objects. This requires
- // the write barrier for code objects to check the color of the code object.
bool non_empty_typed_slots = p->typed_slot_set<OLD_TO_NEW>() != nullptr ||
p->typed_slot_set<OLD_TO_OLD>() != nullptr;
@@ -393,7 +390,8 @@ int Sweeper::RawSweep(
free_start, free_end, p, non_empty_typed_slots, &free_ranges_map,
&old_to_new_cleanup);
}
- Map map = object.synchronized_map();
+ Map map = object.map(kAcquireLoad);
+ DCHECK(map.IsMap());
int size = object.SizeFromMap(map);
live_bytes += size;
free_start = free_end + size;
diff --git a/deps/v8/src/heap/third-party/heap-api-stub.cc b/deps/v8/src/heap/third-party/heap-api-stub.cc
index 6d31479bec..f7ccb50810 100644
--- a/deps/v8/src/heap/third-party/heap-api-stub.cc
+++ b/deps/v8/src/heap/third-party/heap-api-stub.cc
@@ -38,6 +38,12 @@ const base::AddressRegion& Heap::GetCodeRange() {
}
// static
+bool Heap::InSpace(Address, AllocationSpace) { return false; }
+
+// static
+bool Heap::InOldSpace(Address) { return false; }
+
+// static
bool Heap::InCodeSpace(Address) { return false; }
// static
diff --git a/deps/v8/src/heap/third-party/heap-api.h b/deps/v8/src/heap/third-party/heap-api.h
index c4712b988e..16f2fde884 100644
--- a/deps/v8/src/heap/third-party/heap-api.h
+++ b/deps/v8/src/heap/third-party/heap-api.h
@@ -26,6 +26,10 @@ class Heap {
const base::AddressRegion& GetCodeRange();
+ static bool InSpace(Address address, AllocationSpace space);
+
+ static bool InOldSpace(Address address);
+
static bool InCodeSpace(Address address);
static bool InReadOnlySpace(Address address);
@@ -38,6 +42,8 @@ class Heap {
HeapObject NextObject();
bool CollectGarbage();
+
+ size_t Capacity();
};
} // namespace third_party_heap
diff --git a/deps/v8/src/ic/accessor-assembler.cc b/deps/v8/src/ic/accessor-assembler.cc
index 35d1da5cd9..0ff67d030a 100644
--- a/deps/v8/src/ic/accessor-assembler.cc
+++ b/deps/v8/src/ic/accessor-assembler.cc
@@ -8,6 +8,7 @@
#include "src/base/optional.h"
#include "src/builtins/builtins-constructor-gen.h"
#include "src/codegen/code-factory.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/ic/handler-configuration.h"
#include "src/ic/ic.h"
#include "src/ic/keyed-store-generic.h"
@@ -16,6 +17,7 @@
#include "src/objects/cell.h"
#include "src/objects/foreign.h"
#include "src/objects/heap-number.h"
+#include "src/objects/megadom-handler.h"
#include "src/objects/module.h"
#include "src/objects/objects-inl.h"
#include "src/objects/property-details.h"
@@ -134,6 +136,55 @@ void AccessorAssembler::HandlePolymorphicCase(
}
}
+void AccessorAssembler::TryMegaDOMCase(TNode<Object> lookup_start_object,
+ TNode<Map> lookup_start_object_map,
+ TVariable<MaybeObject>* var_handler,
+ TNode<Object> vector,
+ TNode<TaggedIndex> slot, Label* miss,
+ ExitPoint* exit_point) {
+ // Check if the receiver is a JS_API_OBJECT
+ GotoIfNot(IsJSApiObjectMap(lookup_start_object_map), miss);
+
+ // Check if receiver requires access check
+ GotoIf(IsSetWord32<Map::Bits1::IsAccessCheckNeededBit>(
+ LoadMapBitField(lookup_start_object_map)),
+ miss);
+
+ CSA_ASSERT(this, TaggedEqual(LoadFeedbackVectorSlot(CAST(vector), slot),
+ MegaDOMSymbolConstant()));
+
+ // In some cases, we load the
+ TNode<MegaDomHandler> handler;
+ if (var_handler->IsBound()) {
+ handler = CAST(var_handler->value());
+ } else {
+ TNode<MaybeObject> maybe_handler =
+ LoadFeedbackVectorSlot(CAST(vector), slot, kTaggedSize);
+ CSA_ASSERT(this, IsStrong(maybe_handler));
+ handler = CAST(maybe_handler);
+ }
+
+ // Check if dom protector cell is still valid
+ GotoIf(IsMegaDOMProtectorCellInvalid(), miss);
+
+ // Load the getter
+ TNode<MaybeObject> maybe_getter = LoadMegaDomHandlerAccessor(handler);
+ CSA_ASSERT(this, IsWeakOrCleared(maybe_getter));
+ TNode<FunctionTemplateInfo> getter =
+ CAST(GetHeapObjectAssumeWeak(maybe_getter, miss));
+
+ // Load the accessor context
+ TNode<MaybeObject> maybe_context = LoadMegaDomHandlerContext(handler);
+ CSA_ASSERT(this, IsWeakOrCleared(maybe_context));
+ TNode<Context> context = CAST(GetHeapObjectAssumeWeak(maybe_context, miss));
+
+ // TODO(gsathya): This builtin throws an exception on interface check fail but
+ // we should miss to the runtime.
+ exit_point->Return(
+ CallBuiltin(Builtins::kCallFunctionTemplate_CheckCompatibleReceiver,
+ context, getter, IntPtrConstant(0), lookup_start_object));
+}
+
void AccessorAssembler::HandleLoadICHandlerCase(
const LazyLoadICParameters* p, TNode<Object> handler, Label* miss,
ExitPoint* exit_point, ICMode ic_mode, OnNonExistent on_nonexistent,
@@ -543,7 +594,7 @@ void AccessorAssembler::HandleLoadICSmiHandlerLoadNamedCase(
properties, var_name_index.value(), &var_details, &var_value);
TNode<Object> value = CallGetterIfAccessor(
var_value.value(), CAST(holder), var_details.value(), p->context(),
- p->receiver(), miss);
+ p->receiver(), p->name(), miss);
exit_point->Return(value);
}
}
@@ -563,11 +614,17 @@ void AccessorAssembler::HandleLoadICSmiHandlerLoadNamedCase(
}
BIND(&native_data_property);
- HandleLoadCallbackProperty(p, CAST(holder), handler_word, exit_point);
+ {
+ GotoIf(IsSideEffectFreeDebuggingActive(), &slow);
+ HandleLoadCallbackProperty(p, CAST(holder), handler_word, exit_point);
+ }
BIND(&api_getter);
- HandleLoadAccessor(p, CAST(holder), handler_word, CAST(handler), handler_kind,
- exit_point);
+ {
+ GotoIf(IsSideEffectFreeDebuggingActive(), &slow);
+ HandleLoadAccessor(p, CAST(holder), handler_word, CAST(handler),
+ handler_kind, exit_point);
+ }
BIND(&proxy);
{
@@ -627,7 +684,8 @@ void AccessorAssembler::HandleLoadICSmiHandlerLoadNamedCase(
GotoIf(IsTheHole(value), miss);
exit_point->Return(CallGetterIfAccessor(value, CAST(holder), details,
- p->context(), p->receiver(), miss));
+ p->context(), p->receiver(),
+ p->name(), miss));
}
BIND(&interceptor);
@@ -645,8 +703,9 @@ void AccessorAssembler::HandleLoadICSmiHandlerLoadNamedCase(
p->name(), p->slot(), p->vector());
} else {
- exit_point->ReturnCallRuntime(Runtime::kGetProperty, p->context(), holder,
- p->name(), p->receiver());
+ exit_point->ReturnCallRuntime(Runtime::kGetProperty, p->context(),
+ p->lookup_start_object(), p->name(),
+ p->receiver());
}
}
@@ -912,7 +971,7 @@ void AccessorAssembler::HandleLoadICProtoHandler(
properties, name_index, &var_details, &var_value);
TNode<Object> value = CallGetterIfAccessor(
var_value.value(), CAST(var_holder->value()), var_details.value(),
- p->context(), p->receiver(), miss);
+ p->context(), p->receiver(), p->name(), miss);
exit_point->Return(value);
}
},
@@ -1507,7 +1566,6 @@ void AccessorAssembler::HandleStoreAccessor(const StoreICParameters* p,
LoadObjectField(accessor_pair, AccessorPair::kSetterOffset);
CSA_ASSERT(this, Word32BinaryNot(IsTheHole(setter)));
- Callable callable = CodeFactory::Call(isolate());
Return(Call(p->context(), setter, p->receiver(), p->value()));
}
@@ -1686,9 +1744,12 @@ void AccessorAssembler::HandleStoreICProtoHandler(
Goto(&store);
BIND(&store);
- TNode<IntPtrT> argc = IntPtrConstant(1);
- Return(CallApiCallback(context, callback, argc, data, api_holder.value(),
- p->receiver(), p->value()));
+ {
+ GotoIf(IsSideEffectFreeDebuggingActive(), &if_slow);
+ TNode<IntPtrT> argc = IntPtrConstant(1);
+ Return(CallApiCallback(context, callback, argc, data,
+ api_holder.value(), p->receiver(), p->value()));
+ }
}
BIND(&if_store_global_proxy);
@@ -2036,9 +2097,9 @@ void AccessorAssembler::EmitElementLoad(
Label* if_hole, Label* rebox_double, TVariable<Float64T>* var_double_value,
Label* unimplemented_elements_kind, Label* out_of_bounds, Label* miss,
ExitPoint* exit_point, LoadAccessMode access_mode) {
- Label if_typed_array(this), if_fast(this), if_fast_packed(this),
- if_fast_holey(this), if_fast_double(this), if_fast_holey_double(this),
- if_nonfast(this), if_dictionary(this);
+ Label if_rab_gsab_typed_array(this), if_typed_array(this), if_fast(this),
+ if_fast_packed(this), if_fast_holey(this), if_fast_double(this),
+ if_fast_holey_double(this), if_nonfast(this), if_dictionary(this);
Branch(Int32GreaterThan(elements_kind,
Int32Constant(LAST_ANY_NONEXTENSIBLE_ELEMENTS_KIND)),
&if_nonfast, &if_fast);
@@ -2119,7 +2180,16 @@ void AccessorAssembler::EmitElementLoad(
BIND(&if_nonfast);
{
- STATIC_ASSERT(LAST_ELEMENTS_KIND == LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND);
+ Label uint8_elements(this), int8_elements(this), uint16_elements(this),
+ int16_elements(this), uint32_elements(this), int32_elements(this),
+ float32_elements(this), float64_elements(this), bigint64_elements(this),
+ biguint64_elements(this);
+ STATIC_ASSERT(LAST_ELEMENTS_KIND ==
+ LAST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND);
+ GotoIf(Int32GreaterThanOrEqual(
+ elements_kind,
+ Int32Constant(FIRST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND)),
+ &if_rab_gsab_typed_array);
GotoIf(Int32GreaterThanOrEqual(
elements_kind,
Int32Constant(FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND)),
@@ -2145,88 +2215,129 @@ void AccessorAssembler::EmitElementLoad(
exit_point->Return(access_mode == LoadAccessMode::kHas ? TrueConstant()
: value);
}
-
- BIND(&if_typed_array);
{
- Comment("typed elements");
- // Check if buffer has been detached.
- TNode<JSArrayBuffer> buffer = LoadJSArrayBufferViewBuffer(CAST(object));
- GotoIf(IsDetachedBuffer(buffer), miss);
-
- // Bounds check.
- TNode<UintPtrT> length = LoadJSTypedArrayLength(CAST(object));
- GotoIfNot(UintPtrLessThan(intptr_index, length), out_of_bounds);
- if (access_mode == LoadAccessMode::kHas) {
- exit_point->Return(TrueConstant());
- } else {
- TNode<RawPtrT> data_ptr = LoadJSTypedArrayDataPtr(CAST(object));
-
- Label uint8_elements(this), int8_elements(this), uint16_elements(this),
- int16_elements(this), uint32_elements(this), int32_elements(this),
- float32_elements(this), float64_elements(this),
- bigint64_elements(this), biguint64_elements(this);
- Label* elements_kind_labels[] = {
- &uint8_elements, &uint8_elements, &int8_elements,
- &uint16_elements, &int16_elements, &uint32_elements,
- &int32_elements, &float32_elements, &float64_elements,
- &bigint64_elements, &biguint64_elements};
- int32_t elements_kinds[] = {
- UINT8_ELEMENTS, UINT8_CLAMPED_ELEMENTS, INT8_ELEMENTS,
- UINT16_ELEMENTS, INT16_ELEMENTS, UINT32_ELEMENTS,
- INT32_ELEMENTS, FLOAT32_ELEMENTS, FLOAT64_ELEMENTS,
- BIGINT64_ELEMENTS, BIGUINT64_ELEMENTS};
- const size_t kTypedElementsKindCount =
- LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND -
- FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND + 1;
- DCHECK_EQ(kTypedElementsKindCount, arraysize(elements_kinds));
- DCHECK_EQ(kTypedElementsKindCount, arraysize(elements_kind_labels));
- Switch(elements_kind, miss, elements_kinds, elements_kind_labels,
- kTypedElementsKindCount);
+ TVARIABLE(RawPtrT, data_ptr);
+ BIND(&if_rab_gsab_typed_array);
+ {
+ Comment("rab gsab typed elements");
+ Label variable_length(this), normal(this), length_check_ok(this);
+
+ TNode<JSTypedArray> array = CAST(object);
+ TNode<JSArrayBuffer> buffer = LoadJSArrayBufferViewBuffer(array);
+
+ // Bounds check (incl. detachedness check).
+ TNode<UintPtrT> length =
+ LoadVariableLengthJSTypedArrayLength(array, buffer, miss);
+ Branch(UintPtrLessThan(intptr_index, length), &length_check_ok,
+ out_of_bounds);
+ BIND(&length_check_ok);
+ {
+ if (access_mode == LoadAccessMode::kHas) {
+ exit_point->Return(TrueConstant());
+ } else {
+ data_ptr = LoadJSTypedArrayDataPtr(array);
+ Label* elements_kind_labels[] = {
+ &uint8_elements, &uint8_elements, &int8_elements,
+ &uint16_elements, &int16_elements, &uint32_elements,
+ &int32_elements, &float32_elements, &float64_elements,
+ &bigint64_elements, &biguint64_elements};
+ int32_t elements_kinds[] = {
+ RAB_GSAB_UINT8_ELEMENTS, RAB_GSAB_UINT8_CLAMPED_ELEMENTS,
+ RAB_GSAB_INT8_ELEMENTS, RAB_GSAB_UINT16_ELEMENTS,
+ RAB_GSAB_INT16_ELEMENTS, RAB_GSAB_UINT32_ELEMENTS,
+ RAB_GSAB_INT32_ELEMENTS, RAB_GSAB_FLOAT32_ELEMENTS,
+ RAB_GSAB_FLOAT64_ELEMENTS, RAB_GSAB_BIGINT64_ELEMENTS,
+ RAB_GSAB_BIGUINT64_ELEMENTS};
+ const size_t kTypedElementsKindCount =
+ LAST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND -
+ FIRST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND + 1;
+ DCHECK_EQ(kTypedElementsKindCount, arraysize(elements_kinds));
+ DCHECK_EQ(kTypedElementsKindCount, arraysize(elements_kind_labels));
+ Switch(elements_kind, miss, elements_kinds, elements_kind_labels,
+ kTypedElementsKindCount);
+ }
+ }
+ }
+ BIND(&if_typed_array);
+ {
+ Comment("typed elements");
+ // Check if buffer has been detached.
+ TNode<JSArrayBuffer> buffer = LoadJSArrayBufferViewBuffer(CAST(object));
+ GotoIf(IsDetachedBuffer(buffer), miss);
+
+ // Bounds check.
+ TNode<UintPtrT> length = LoadJSTypedArrayLength(CAST(object));
+ GotoIfNot(UintPtrLessThan(intptr_index, length), out_of_bounds);
+ if (access_mode == LoadAccessMode::kHas) {
+ exit_point->Return(TrueConstant());
+ } else {
+ data_ptr = LoadJSTypedArrayDataPtr(CAST(object));
+
+ Label* elements_kind_labels[] = {
+ &uint8_elements, &uint8_elements, &int8_elements,
+ &uint16_elements, &int16_elements, &uint32_elements,
+ &int32_elements, &float32_elements, &float64_elements,
+ &bigint64_elements, &biguint64_elements};
+ int32_t elements_kinds[] = {
+ UINT8_ELEMENTS, UINT8_CLAMPED_ELEMENTS, INT8_ELEMENTS,
+ UINT16_ELEMENTS, INT16_ELEMENTS, UINT32_ELEMENTS,
+ INT32_ELEMENTS, FLOAT32_ELEMENTS, FLOAT64_ELEMENTS,
+ BIGINT64_ELEMENTS, BIGUINT64_ELEMENTS};
+ const size_t kTypedElementsKindCount =
+ LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND -
+ FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND + 1;
+ DCHECK_EQ(kTypedElementsKindCount, arraysize(elements_kinds));
+ DCHECK_EQ(kTypedElementsKindCount, arraysize(elements_kind_labels));
+ Switch(elements_kind, miss, elements_kinds, elements_kind_labels,
+ kTypedElementsKindCount);
+ }
+ }
+ if (access_mode != LoadAccessMode::kHas) {
BIND(&uint8_elements);
{
Comment("UINT8_ELEMENTS"); // Handles UINT8_CLAMPED_ELEMENTS too.
- TNode<Int32T> element = Load<Uint8T>(data_ptr, intptr_index);
+ TNode<Int32T> element = Load<Uint8T>(data_ptr.value(), intptr_index);
exit_point->Return(SmiFromInt32(element));
}
BIND(&int8_elements);
{
Comment("INT8_ELEMENTS");
- TNode<Int32T> element = Load<Int8T>(data_ptr, intptr_index);
+ TNode<Int32T> element = Load<Int8T>(data_ptr.value(), intptr_index);
exit_point->Return(SmiFromInt32(element));
}
BIND(&uint16_elements);
{
Comment("UINT16_ELEMENTS");
TNode<IntPtrT> index = WordShl(intptr_index, IntPtrConstant(1));
- TNode<Int32T> element = Load<Uint16T>(data_ptr, index);
+ TNode<Int32T> element = Load<Uint16T>(data_ptr.value(), index);
exit_point->Return(SmiFromInt32(element));
}
BIND(&int16_elements);
{
Comment("INT16_ELEMENTS");
TNode<IntPtrT> index = WordShl(intptr_index, IntPtrConstant(1));
- TNode<Int32T> element = Load<Int16T>(data_ptr, index);
+ TNode<Int32T> element = Load<Int16T>(data_ptr.value(), index);
exit_point->Return(SmiFromInt32(element));
}
BIND(&uint32_elements);
{
Comment("UINT32_ELEMENTS");
TNode<IntPtrT> index = WordShl(intptr_index, IntPtrConstant(2));
- TNode<Uint32T> element = Load<Uint32T>(data_ptr, index);
+ TNode<Uint32T> element = Load<Uint32T>(data_ptr.value(), index);
exit_point->Return(ChangeUint32ToTagged(element));
}
BIND(&int32_elements);
{
Comment("INT32_ELEMENTS");
TNode<IntPtrT> index = WordShl(intptr_index, IntPtrConstant(2));
- TNode<Int32T> element = Load<Int32T>(data_ptr, index);
+ TNode<Int32T> element = Load<Int32T>(data_ptr.value(), index);
exit_point->Return(ChangeInt32ToTagged(element));
}
BIND(&float32_elements);
{
Comment("FLOAT32_ELEMENTS");
TNode<IntPtrT> index = WordShl(intptr_index, IntPtrConstant(2));
- TNode<Float32T> element = Load<Float32T>(data_ptr, index);
+ TNode<Float32T> element = Load<Float32T>(data_ptr.value(), index);
*var_double_value = ChangeFloat32ToFloat64(element);
Goto(rebox_double);
}
@@ -2234,7 +2345,7 @@ void AccessorAssembler::EmitElementLoad(
{
Comment("FLOAT64_ELEMENTS");
TNode<IntPtrT> index = WordShl(intptr_index, IntPtrConstant(3));
- TNode<Float64T> element = Load<Float64T>(data_ptr, index);
+ TNode<Float64T> element = Load<Float64T>(data_ptr.value(), index);
*var_double_value = element;
Goto(rebox_double);
}
@@ -2242,13 +2353,13 @@ void AccessorAssembler::EmitElementLoad(
{
Comment("BIGINT64_ELEMENTS");
exit_point->Return(LoadFixedTypedArrayElementAsTagged(
- data_ptr, Unsigned(intptr_index), BIGINT64_ELEMENTS));
+ data_ptr.value(), Unsigned(intptr_index), BIGINT64_ELEMENTS));
}
BIND(&biguint64_elements);
{
Comment("BIGUINT64_ELEMENTS");
exit_point->Return(LoadFixedTypedArrayElementAsTagged(
- data_ptr, Unsigned(intptr_index), BIGUINT64_ELEMENTS));
+ data_ptr.value(), Unsigned(intptr_index), BIGUINT64_ELEMENTS));
}
}
}
@@ -2460,7 +2571,7 @@ void AccessorAssembler::GenericPropertyLoad(
{
TNode<Object> value = CallGetterIfAccessor(
var_value.value(), lookup_start_object, var_details.value(),
- p->context(), p->receiver(), slow);
+ p->context(), p->receiver(), p->name(), slow);
IncrementCounter(isolate()->counters()->ic_keyed_load_generic_symbol(), 1);
Return(value);
}
@@ -2864,11 +2975,23 @@ void AccessorAssembler::LoadIC_Noninlined(const LoadICParameters* p,
DCHECK_EQ(MachineRepresentation::kTagged, var_handler->rep());
{
- // Check megamorphic case.
- GotoIfNot(TaggedEqual(feedback, MegamorphicSymbolConstant()), miss);
+ Label try_megamorphic(this), try_megadom(this);
+ GotoIf(TaggedEqual(feedback, MegamorphicSymbolConstant()),
+ &try_megamorphic);
+ GotoIf(TaggedEqual(feedback, MegaDOMSymbolConstant()), &try_megadom);
+ Goto(miss);
- TryProbeStubCache(isolate()->load_stub_cache(), p->lookup_start_object(),
- CAST(p->name()), if_handler, var_handler, miss);
+ BIND(&try_megamorphic);
+ {
+ TryProbeStubCache(isolate()->load_stub_cache(), p->lookup_start_object(),
+ CAST(p->name()), if_handler, var_handler, miss);
+ }
+
+ BIND(&try_megadom);
+ {
+ TryMegaDOMCase(p->lookup_start_object(), lookup_start_object_map,
+ var_handler, p->vector(), p->slot(), miss, exit_point);
+ }
}
}
@@ -2964,7 +3087,7 @@ void AccessorAssembler::LoadGlobalIC(TNode<HeapObject> maybe_feedback_vector,
BIND(&no_feedback);
{
int ic_kind =
- static_cast<int>((typeof_mode == INSIDE_TYPEOF)
+ static_cast<int>((typeof_mode == TypeofMode::kInside)
? FeedbackSlotKind::kLoadGlobalInsideTypeof
: FeedbackSlotKind::kLoadGlobalNotInsideTypeof);
exit_point->ReturnCallStub(
@@ -3023,7 +3146,7 @@ void AccessorAssembler::LoadGlobalIC_TryHandlerCase(
TNode<Object> handler = CAST(feedback_element);
GotoIf(TaggedEqual(handler, UninitializedSymbolConstant()), miss);
- OnNonExistent on_nonexistent = typeof_mode == NOT_INSIDE_TYPEOF
+ OnNonExistent on_nonexistent = typeof_mode == TypeofMode::kNotInside
? OnNonExistent::kThrowReferenceError
: OnNonExistent::kReturnUndefined;
@@ -3958,7 +4081,7 @@ void AccessorAssembler::GenerateLookupContextBaseline(TypeofMode typeof_mode) {
BIND(&slowpath);
{
auto name = Parameter<Object>(Descriptor::kName);
- Runtime::FunctionId function_id = typeof_mode == INSIDE_TYPEOF
+ Runtime::FunctionId function_id = typeof_mode == TypeofMode::kInside
? Runtime::kLoadLookupSlotInsideTypeof
: Runtime::kLoadLookupSlot;
TailCallRuntime(function_id, context, name);
@@ -3990,7 +4113,7 @@ void AccessorAssembler::GenerateLookupGlobalICBaseline(TypeofMode typeof_mode) {
// Slow path when we have to call out to the runtime
BIND(&slowpath);
- Runtime::FunctionId function_id = typeof_mode == INSIDE_TYPEOF
+ Runtime::FunctionId function_id = typeof_mode == TypeofMode::kInside
? Runtime::kLoadLookupSlotInsideTypeof
: Runtime::kLoadLookupSlot;
TailCallRuntime(function_id, context, name);
diff --git a/deps/v8/src/ic/accessor-assembler.h b/deps/v8/src/ic/accessor-assembler.h
index 79f8181af4..9aa15ae1b8 100644
--- a/deps/v8/src/ic/accessor-assembler.h
+++ b/deps/v8/src/ic/accessor-assembler.h
@@ -311,6 +311,12 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
TVariable<MaybeObject>* var_handler,
Label* if_miss);
+ void TryMegaDOMCase(TNode<Object> lookup_start_object,
+ TNode<Map> lookup_start_object_map,
+ TVariable<MaybeObject>* var_handler, TNode<Object> vector,
+ TNode<TaggedIndex> slot, Label* miss,
+ ExitPoint* exit_point);
+
// LoadIC implementation.
void HandleLoadICHandlerCase(
const LazyLoadICParameters* p, TNode<Object> handler, Label* miss,
diff --git a/deps/v8/src/ic/call-optimization.cc b/deps/v8/src/ic/call-optimization.cc
index 6521e83193..4cfd1464be 100644
--- a/deps/v8/src/ic/call-optimization.cc
+++ b/deps/v8/src/ic/call-optimization.cc
@@ -8,11 +8,8 @@
namespace v8 {
namespace internal {
-CallOptimization::CallOptimization(Isolate* isolate, Handle<Object> function) {
- constant_function_ = Handle<JSFunction>::null();
- is_simple_api_call_ = false;
- expected_receiver_type_ = Handle<FunctionTemplateInfo>::null();
- api_call_info_ = Handle<CallHandlerInfo>::null();
+template <class IsolateT>
+CallOptimization::CallOptimization(IsolateT* isolate, Handle<Object> function) {
if (function->IsJSFunction()) {
Initialize(isolate, Handle<JSFunction>::cast(function));
} else if (function->IsFunctionTemplateInfo()) {
@@ -20,6 +17,12 @@ CallOptimization::CallOptimization(Isolate* isolate, Handle<Object> function) {
}
}
+// Instantiations.
+template CallOptimization::CallOptimization(Isolate* isolate,
+ Handle<Object> function);
+template CallOptimization::CallOptimization(LocalIsolate* isolate,
+ Handle<Object> function);
+
Context CallOptimization::GetAccessorContext(Map holder_map) const {
if (is_constant_call()) {
return constant_function_->context().native_context();
@@ -35,8 +38,10 @@ bool CallOptimization::IsCrossContextLazyAccessorPair(Context native_context,
return native_context != GetAccessorContext(holder_map);
}
+template <class IsolateT>
Handle<JSObject> CallOptimization::LookupHolderOfExpectedType(
- Handle<Map> object_map, HolderLookup* holder_lookup) const {
+ IsolateT* isolate, Handle<Map> object_map,
+ HolderLookup* holder_lookup) const {
DCHECK(is_simple_api_call());
if (!object_map->IsJSObjectMap()) {
*holder_lookup = kHolderNotFound;
@@ -49,8 +54,8 @@ Handle<JSObject> CallOptimization::LookupHolderOfExpectedType(
}
if (object_map->IsJSGlobalProxyMap() && !object_map->prototype().IsNull()) {
JSObject raw_prototype = JSObject::cast(object_map->prototype());
- Handle<JSObject> prototype(raw_prototype, raw_prototype.GetIsolate());
- object_map = handle(prototype->map(), prototype->GetIsolate());
+ Handle<JSObject> prototype(raw_prototype, isolate);
+ object_map = handle(prototype->map(), isolate);
if (expected_receiver_type_->IsTemplateFor(*object_map)) {
*holder_lookup = kHolderFound;
return prototype;
@@ -60,6 +65,14 @@ Handle<JSObject> CallOptimization::LookupHolderOfExpectedType(
return Handle<JSObject>::null();
}
+// Instantiations.
+template Handle<JSObject> CallOptimization::LookupHolderOfExpectedType(
+ Isolate* isolate, Handle<Map> object_map,
+ HolderLookup* holder_lookup) const;
+template Handle<JSObject> CallOptimization::LookupHolderOfExpectedType(
+ LocalIsolate* isolate, Handle<Map> object_map,
+ HolderLookup* holder_lookup) const;
+
bool CallOptimization::IsCompatibleReceiverMap(
Handle<JSObject> api_holder, Handle<JSObject> holder,
HolderLookup holder_lookup) const {
@@ -86,8 +99,9 @@ bool CallOptimization::IsCompatibleReceiverMap(
UNREACHABLE();
}
+template <class IsolateT>
void CallOptimization::Initialize(
- Isolate* isolate, Handle<FunctionTemplateInfo> function_template_info) {
+ IsolateT* isolate, Handle<FunctionTemplateInfo> function_template_info) {
HeapObject call_code = function_template_info->call_code(kAcquireLoad);
if (call_code.IsUndefined(isolate)) return;
api_call_info_ = handle(CallHandlerInfo::cast(call_code), isolate);
@@ -98,9 +112,11 @@ void CallOptimization::Initialize(
handle(FunctionTemplateInfo::cast(signature), isolate);
}
is_simple_api_call_ = true;
+ accept_any_receiver_ = function_template_info->accept_any_receiver();
}
-void CallOptimization::Initialize(Isolate* isolate,
+template <class IsolateT>
+void CallOptimization::Initialize(IsolateT* isolate,
Handle<JSFunction> function) {
if (function.is_null() || !function->is_compiled()) return;
@@ -108,7 +124,8 @@ void CallOptimization::Initialize(Isolate* isolate,
AnalyzePossibleApiFunction(isolate, function);
}
-void CallOptimization::AnalyzePossibleApiFunction(Isolate* isolate,
+template <class IsolateT>
+void CallOptimization::AnalyzePossibleApiFunction(IsolateT* isolate,
Handle<JSFunction> function) {
if (!function->shared().IsApiFunction()) return;
Handle<FunctionTemplateInfo> info(function->shared().get_api_func_data(),
@@ -125,6 +142,7 @@ void CallOptimization::AnalyzePossibleApiFunction(Isolate* isolate,
}
is_simple_api_call_ = true;
+ accept_any_receiver_ = info->accept_any_receiver();
}
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/ic/call-optimization.h b/deps/v8/src/ic/call-optimization.h
index b6d49a1bf9..ca5c8aa7ef 100644
--- a/deps/v8/src/ic/call-optimization.h
+++ b/deps/v8/src/ic/call-optimization.h
@@ -10,16 +10,22 @@
namespace v8 {
namespace internal {
+
// Holds information about possible function call optimizations.
class CallOptimization {
public:
- CallOptimization(Isolate* isolate, Handle<Object> function);
+ template <class IsolateT>
+ CallOptimization(IsolateT* isolate, Handle<Object> function);
Context GetAccessorContext(Map holder_map) const;
bool IsCrossContextLazyAccessorPair(Context native_context,
Map holder_map) const;
bool is_constant_call() const { return !constant_function_.is_null(); }
+ bool accept_any_receiver() const { return accept_any_receiver_; }
+ bool requires_signature_check() const {
+ return !expected_receiver_type_.is_null();
+ }
Handle<JSFunction> constant_function() const {
DCHECK(is_constant_call());
@@ -39,27 +45,38 @@ class CallOptimization {
}
enum HolderLookup { kHolderNotFound, kHolderIsReceiver, kHolderFound };
+
+ template <class IsolateT>
Handle<JSObject> LookupHolderOfExpectedType(
- Handle<Map> receiver_map, HolderLookup* holder_lookup) const;
+ IsolateT* isolate, Handle<Map> receiver_map,
+ HolderLookup* holder_lookup) const;
bool IsCompatibleReceiverMap(Handle<JSObject> api_holder,
Handle<JSObject> holder, HolderLookup) const;
private:
- void Initialize(Isolate* isolate, Handle<JSFunction> function);
- void Initialize(Isolate* isolate,
+ template <class IsolateT>
+ void Initialize(IsolateT* isolate, Handle<JSFunction> function);
+ template <class IsolateT>
+ void Initialize(IsolateT* isolate,
Handle<FunctionTemplateInfo> function_template_info);
// Determines whether the given function can be called using the
// fast api call builtin.
- void AnalyzePossibleApiFunction(Isolate* isolate,
+ template <class IsolateT>
+ void AnalyzePossibleApiFunction(IsolateT* isolate,
Handle<JSFunction> function);
Handle<JSFunction> constant_function_;
- bool is_simple_api_call_;
Handle<FunctionTemplateInfo> expected_receiver_type_;
Handle<CallHandlerInfo> api_call_info_;
+
+ // TODO(gsathya): Change these to be a bitfield and do a single fast check
+ // rather than two checks.
+ bool is_simple_api_call_ = false;
+ bool accept_any_receiver_ = false;
};
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/ic/ic.cc b/deps/v8/src/ic/ic.cc
index 81e31d1c2d..09f1815c1c 100644
--- a/deps/v8/src/ic/ic.cc
+++ b/deps/v8/src/ic/ic.cc
@@ -33,6 +33,7 @@
#include "src/objects/heap-number-inl.h"
#include "src/objects/js-array-buffer-inl.h"
#include "src/objects/js-array-inl.h"
+#include "src/objects/megadom-handler.h"
#include "src/objects/module-inl.h"
#include "src/objects/prototype.h"
#include "src/objects/struct-inl.h"
@@ -59,6 +60,8 @@ char IC::TransitionMarkFromState(IC::State state) {
return 'P';
case MEGAMORPHIC:
return 'N';
+ case MEGADOM:
+ return 'D';
case GENERIC:
return 'G';
}
@@ -519,9 +522,12 @@ MaybeHandle<Object> LoadGlobalIC::Load(Handle<Name> name,
bool use_ic = (state() != NO_FEEDBACK) && FLAG_use_ic && update_feedback;
if (use_ic) {
+ // 'const' Variables are mutable if REPL mode is enabled. This disables
+ // compiler inlining for all 'const' variables declared in REPL mode.
if (nexus()->ConfigureLexicalVarMode(
lookup_result.context_index, lookup_result.slot_index,
- lookup_result.mode == VariableMode::kConst)) {
+ (lookup_result.mode == VariableMode::kConst &&
+ !lookup_result.is_repl_mode))) {
TRACE_HANDLER_STATS(isolate(), LoadGlobalIC_LoadScriptContextField);
} else {
// Given combination of indices can't be encoded, so use slow stub.
@@ -566,6 +572,55 @@ static bool AddOneReceiverMapIfMissing(
return true;
}
+bool IC::UpdateMegaDOMIC(const MaybeObjectHandle& handler, Handle<Name> name) {
+ if (!FLAG_enable_mega_dom_ic) return false;
+
+ // TODO(gsathya): Enable fuzzing once this feature is more stable.
+ if (FLAG_fuzzing) return false;
+
+ // TODO(gsathya): Support KeyedLoadIC, StoreIC and KeyedStoreIC.
+ if (!IsLoadIC()) return false;
+
+ // Check if DOM protector cell is valid.
+ if (!Protectors::IsMegaDOMIntact(isolate())) return false;
+
+ // Check if current lookup object is an API object
+ Handle<Map> map = lookup_start_object_map();
+ if (!InstanceTypeChecker::IsJSApiObject(map->instance_type())) return false;
+
+ Handle<Object> accessor_obj;
+ // TODO(gsathya): Check if there are overloads possible for this accessor and
+ // transition only if it isn't possible.
+ if (!accessor().ToHandle(&accessor_obj)) return false;
+
+ // TODO(gsathya): This is also created in IC::ComputeHandler, find a way to
+ // reuse it here.
+ CallOptimization call_optimization(isolate(), accessor_obj);
+
+ // Check if accessor is an API function
+ if (!call_optimization.is_simple_api_call()) return false;
+
+ // Check if accessor requires access checks
+ if (call_optimization.accept_any_receiver()) return false;
+
+ // Check if accessor requires signature checks
+ if (!call_optimization.requires_signature_check()) return false;
+
+ // Check if the receiver is the holder
+ CallOptimization::HolderLookup holder_lookup;
+ call_optimization.LookupHolderOfExpectedType(isolate(), map, &holder_lookup);
+ if (holder_lookup != CallOptimization::kHolderIsReceiver) return false;
+
+ Handle<Context> accessor_context(call_optimization.GetAccessorContext(*map),
+ isolate());
+
+ Handle<MegaDomHandler> new_handler = isolate()->factory()->NewMegaDomHandler(
+ MaybeObjectHandle::Weak(accessor_obj),
+ MaybeObjectHandle::Weak(accessor_context));
+ nexus()->ConfigureMegaDOM(MaybeObjectHandle(new_handler));
+ return true;
+}
+
bool IC::UpdatePolymorphicIC(Handle<Name> name,
const MaybeObjectHandle& handler) {
DCHECK(IsHandler(*handler));
@@ -703,9 +758,12 @@ void IC::SetCache(Handle<Name> name, const MaybeObjectHandle& handler) {
V8_FALLTHROUGH;
case POLYMORPHIC:
if (UpdatePolymorphicIC(name, handler)) break;
+ if (UpdateMegaDOMIC(handler, name)) break;
if (!is_keyed() || state() == RECOMPUTE_HANDLER) {
CopyICToMegamorphicCache(name);
}
+ V8_FALLTHROUGH;
+ case MEGADOM:
ConfigureVectorState(MEGAMORPHIC, name);
V8_FALLTHROUGH;
case MEGAMORPHIC:
@@ -719,23 +777,20 @@ void IC::SetCache(Handle<Name> name, const MaybeObjectHandle& handler) {
}
void LoadIC::UpdateCaches(LookupIterator* lookup) {
- Handle<Object> code;
+ Handle<Object> handler;
if (lookup->state() == LookupIterator::ACCESS_CHECK) {
- code = LoadHandler::LoadSlow(isolate());
+ handler = LoadHandler::LoadSlow(isolate());
} else if (!lookup->IsFound()) {
TRACE_HANDLER_STATS(isolate(), LoadIC_LoadNonexistentDH);
Handle<Smi> smi_handler = LoadHandler::LoadNonExistent(isolate());
- code = LoadHandler::LoadFullChain(
+ handler = LoadHandler::LoadFullChain(
isolate(), lookup_start_object_map(),
MaybeObjectHandle(isolate()->factory()->null_value()), smi_handler);
} else if (IsLoadGlobalIC() && lookup->state() == LookupIterator::JSPROXY) {
// If there is proxy just install the slow stub since we need to call the
// HasProperty trap for global loads. The ProxyGetProperty builtin doesn't
// handle this case.
- Handle<Smi> slow_handler = LoadHandler::LoadSlow(isolate());
- Handle<JSProxy> holder = lookup->GetHolder<JSProxy>();
- code = LoadHandler::LoadFromPrototype(isolate(), lookup_start_object_map(),
- holder, slow_handler);
+ handler = LoadHandler::LoadSlow(isolate());
} else {
if (IsLoadGlobalIC()) {
if (lookup->TryLookupCachedProperty()) {
@@ -750,12 +805,12 @@ void LoadIC::UpdateCaches(LookupIterator* lookup) {
return;
}
}
- code = ComputeHandler(lookup);
+ handler = ComputeHandler(lookup);
}
// Can't use {lookup->name()} because the LookupIterator might be in
// "elements" mode for keys that are strings representing integers above
// JSArray::kMaxIndex.
- SetCache(lookup->GetName(), code);
+ SetCache(lookup->GetName(), handler);
TraceIC("LoadIC", lookup->GetName());
}
@@ -877,6 +932,7 @@ Handle<Object> LoadIC::ComputeHandler(LookupIterator* lookup) {
TRACE_HANDLER_STATS(isolate(), LoadIC_SlowStub);
return LoadHandler::LoadSlow(isolate());
}
+ set_accessor(getter);
if ((getter->IsFunctionTemplateInfo() &&
FunctionTemplateInfo::cast(*getter).BreakAtEntry()) ||
@@ -893,7 +949,8 @@ Handle<Object> LoadIC::ComputeHandler(LookupIterator* lookup) {
if (call_optimization.is_simple_api_call()) {
CallOptimization::HolderLookup holder_lookup;
Handle<JSObject> api_holder =
- call_optimization.LookupHolderOfExpectedType(map, &holder_lookup);
+ call_optimization.LookupHolderOfExpectedType(isolate(), map,
+ &holder_lookup);
if (!call_optimization.IsCompatibleReceiverMap(api_holder, holder,
holder_lookup) ||
@@ -1209,7 +1266,7 @@ Handle<Object> KeyedLoadIC::LoadElementHandler(Handle<Map> receiver_map,
}
DCHECK(IsFastElementsKind(elements_kind) ||
IsAnyNonextensibleElementsKind(elements_kind) ||
- IsTypedArrayElementsKind(elements_kind));
+ IsTypedArrayOrRabGsabTypedArrayElementsKind(elements_kind));
bool convert_hole_to_undefined =
(elements_kind == HOLEY_SMI_ELEMENTS ||
elements_kind == HOLEY_ELEMENTS) &&
@@ -1325,7 +1382,7 @@ bool IsOutOfBoundsAccess(Handle<Object> receiver, size_t index) {
if (receiver->IsJSArray()) {
length = JSArray::cast(*receiver).length().Number();
} else if (receiver->IsJSTypedArray()) {
- length = JSTypedArray::cast(*receiver).length();
+ length = JSTypedArray::cast(*receiver).GetLength();
} else if (receiver->IsJSObject()) {
length = JSObject::cast(*receiver).elements().length();
} else if (receiver->IsString()) {
@@ -1756,7 +1813,7 @@ MaybeObjectHandle StoreIC::ComputeHandler(LookupIterator* lookup) {
CallOptimization::HolderLookup holder_lookup;
Handle<JSObject> api_holder =
call_optimization.LookupHolderOfExpectedType(
- lookup_start_object_map(), &holder_lookup);
+ isolate(), lookup_start_object_map(), &holder_lookup);
if (call_optimization.IsCompatibleReceiverMap(api_holder, holder,
holder_lookup)) {
Handle<Smi> smi_handler = StoreHandler::StoreApiSetter(
@@ -1975,7 +2032,7 @@ void KeyedStoreIC::UpdateStoreElement(Handle<Map> receiver_map,
"unsupported combination of arrays (potentially read-only length)");
return;
- } else if (map->has_typed_array_elements()) {
+ } else if (map->has_typed_array_or_rab_gsab_typed_array_elements()) {
DCHECK(!IsStoreInArrayLiteralICKind(kind()));
external_arrays++;
}
@@ -2029,7 +2086,9 @@ Handle<Object> KeyedStoreIC::StoreElementHandler(
receiver_map->has_typed_array_elements()) {
TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_StoreFastElementStub);
code = CodeFactory::StoreFastElementIC(isolate(), store_mode).code();
- if (receiver_map->has_typed_array_elements()) return code;
+ if (receiver_map->has_typed_array_elements()) {
+ return code;
+ }
} else if (IsStoreInArrayLiteralICKind(kind())) {
// TODO(jgruber): Update counter name.
TRACE_HANDLER_STATS(isolate(), StoreInArrayLiteralIC_SlowStub);
@@ -2038,7 +2097,9 @@ Handle<Object> KeyedStoreIC::StoreElementHandler(
// TODO(jgruber): Update counter name.
TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_StoreElementStub);
DCHECK(DICTIONARY_ELEMENTS == receiver_map->elements_kind() ||
- receiver_map->has_frozen_elements());
+ receiver_map->has_frozen_elements() ||
+ receiver_map->has_rab_gsab_typed_array_elements());
+ // TODO(v8:11111): Add fast paths for RAB / GSAB.
code = StoreHandler::StoreSlow(isolate(), store_mode);
}
@@ -2416,7 +2477,7 @@ RUNTIME_FUNCTION(Runtime_LoadGlobalIC_Miss) {
vector = Handle<FeedbackVector>::cast(maybe_vector);
}
- FeedbackSlotKind kind = (typeof_mode == TypeofMode::INSIDE_TYPEOF)
+ FeedbackSlotKind kind = (typeof_mode == TypeofMode::kInside)
? FeedbackSlotKind::kLoadGlobalInsideTypeof
: FeedbackSlotKind::kLoadGlobalNotInsideTypeof;
LoadGlobalIC ic(isolate, vector, vector_slot, kind);
diff --git a/deps/v8/src/ic/ic.h b/deps/v8/src/ic/ic.h
index 170ee609cb..ddac48e38e 100644
--- a/deps/v8/src/ic/ic.h
+++ b/deps/v8/src/ic/ic.h
@@ -67,6 +67,8 @@ class IC {
protected:
void set_slow_stub_reason(const char* reason) { slow_stub_reason_ = reason; }
+ void set_accessor(Handle<Object> accessor) { accessor_ = accessor; }
+ MaybeHandle<Object> accessor() const { return accessor_; }
Isolate* isolate() const { return isolate_; }
@@ -96,6 +98,7 @@ class IC {
MaybeHandle<Object> ReferenceError(Handle<Name> name);
void UpdateMonomorphicIC(const MaybeObjectHandle& handler, Handle<Name> name);
+ bool UpdateMegaDOMIC(const MaybeObjectHandle& handler, Handle<Name> name);
bool UpdatePolymorphicIC(Handle<Name> name, const MaybeObjectHandle& handler);
void UpdateMegamorphicCache(Handle<Map> map, Handle<Name> name,
const MaybeObjectHandle& handler);
@@ -154,7 +157,7 @@ class IC {
State state_;
FeedbackSlotKind kind_;
Handle<Map> lookup_start_object_map_;
-
+ MaybeHandle<Object> accessor_;
MapHandles target_maps_;
bool target_maps_set_;
diff --git a/deps/v8/src/ic/keyed-store-generic.cc b/deps/v8/src/ic/keyed-store-generic.cc
index b07ea64483..8218d3d521 100644
--- a/deps/v8/src/ic/keyed-store-generic.cc
+++ b/deps/v8/src/ic/keyed-store-generic.cc
@@ -568,7 +568,8 @@ void KeyedStoreGenericAssembler::EmitGenericElementStore(
// dispatch.
BIND(&if_nonfast);
{
- STATIC_ASSERT(LAST_ELEMENTS_KIND == LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND);
+ STATIC_ASSERT(LAST_ELEMENTS_KIND ==
+ LAST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND);
GotoIf(Int32GreaterThanOrEqual(
elements_kind,
Int32Constant(FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND)),
@@ -588,7 +589,8 @@ void KeyedStoreGenericAssembler::EmitGenericElementStore(
BIND(&if_typed_array);
{
Comment("Typed array");
- // TODO(jkummerow): Support typed arrays.
+ // TODO(jkummerow): Support typed arrays. Note: RAB / GSAB backed typed
+ // arrays end up here too.
Goto(slow);
}
}
diff --git a/deps/v8/src/init/bootstrapper.cc b/deps/v8/src/init/bootstrapper.cc
index 9cd514f8d9..1f00716b63 100644
--- a/deps/v8/src/init/bootstrapper.cc
+++ b/deps/v8/src/init/bootstrapper.cc
@@ -235,6 +235,8 @@ class Genesis {
enum ArrayBufferKind {
ARRAY_BUFFER,
SHARED_ARRAY_BUFFER,
+ RESIZABLE_ARRAY_BUFFER,
+ GROWABLE_SHARED_ARRAY_BUFFER
};
Handle<JSFunction> CreateArrayBuffer(Handle<String> name,
ArrayBufferKind array_buffer_kind);
@@ -244,7 +246,8 @@ class Genesis {
Handle<JSFunction> InstallTypedArray(const char* name,
ElementsKind elements_kind,
- InstanceType type);
+ InstanceType type,
+ int rab_gsab_initial_map_index);
void InitializeNormalizedMapCaches();
enum ExtensionTraversalState { UNVISITED, VISITED, INSTALLED };
@@ -364,7 +367,8 @@ void Bootstrapper::DetachGlobal(Handle<Context> env) {
ReadOnlyRoots roots(isolate_);
Handle<JSGlobalProxy> global_proxy(env->global_proxy(), isolate_);
global_proxy->set_native_context(roots.null_value());
- JSObject::ForceSetPrototype(global_proxy, isolate_->factory()->null_value());
+ JSObject::ForceSetPrototype(isolate_, global_proxy,
+ isolate_->factory()->null_value());
global_proxy->map().SetConstructor(roots.null_value());
if (FLAG_track_detached_contexts) {
isolate_->AddDetachedContext(env);
@@ -921,10 +925,11 @@ void Genesis::CreateIteratorMaps(Handle<JSFunction> empty) {
isolate()->object_function(), AllocationType::kOld);
native_context()->set_initial_generator_prototype(
*generator_object_prototype);
- JSObject::ForceSetPrototype(generator_object_prototype, iterator_prototype);
+ JSObject::ForceSetPrototype(isolate(), generator_object_prototype,
+ iterator_prototype);
Handle<JSObject> generator_function_prototype = factory()->NewJSObject(
isolate()->object_function(), AllocationType::kOld);
- JSObject::ForceSetPrototype(generator_function_prototype, empty);
+ JSObject::ForceSetPrototype(isolate(), generator_function_prototype, empty);
InstallToStringTag(isolate(), generator_function_prototype,
"GeneratorFunction");
@@ -1032,7 +1037,7 @@ void Genesis::CreateAsyncIteratorMaps(Handle<JSFunction> empty) {
InstallToStringTag(isolate(), async_from_sync_iterator_prototype,
"Async-from-Sync Iterator");
- JSObject::ForceSetPrototype(async_from_sync_iterator_prototype,
+ JSObject::ForceSetPrototype(isolate(), async_from_sync_iterator_prototype,
async_iterator_prototype);
Handle<Map> async_from_sync_iterator_map = factory()->NewMap(
@@ -1049,7 +1054,8 @@ void Genesis::CreateAsyncIteratorMaps(Handle<JSFunction> empty) {
isolate()->object_function(), AllocationType::kOld);
// %AsyncGenerator% / %AsyncGeneratorFunction%.prototype
- JSObject::ForceSetPrototype(async_generator_function_prototype, empty);
+ JSObject::ForceSetPrototype(isolate(), async_generator_function_prototype,
+ empty);
// The value of AsyncGeneratorFunction.prototype.prototype is the
// %AsyncGeneratorPrototype% intrinsic object.
@@ -1067,7 +1073,7 @@ void Genesis::CreateAsyncIteratorMaps(Handle<JSFunction> empty) {
"AsyncGeneratorFunction");
// %AsyncGeneratorPrototype%
- JSObject::ForceSetPrototype(async_generator_object_prototype,
+ JSObject::ForceSetPrototype(isolate(), async_generator_object_prototype,
async_iterator_prototype);
native_context()->set_initial_async_generator_prototype(
*async_generator_object_prototype);
@@ -1110,7 +1116,7 @@ void Genesis::CreateAsyncFunctionMaps(Handle<JSFunction> empty) {
// %AsyncFunctionPrototype% intrinsic
Handle<JSObject> async_function_prototype = factory()->NewJSObject(
isolate()->object_function(), AllocationType::kOld);
- JSObject::ForceSetPrototype(async_function_prototype, empty);
+ JSObject::ForceSetPrototype(isolate(), async_function_prototype, empty);
InstallToStringTag(isolate(), async_function_prototype, "AsyncFunction");
@@ -1367,7 +1373,7 @@ void Genesis::HookUpGlobalProxy(Handle<JSGlobalProxy> global_proxy) {
factory()->ReinitializeJSGlobalProxy(global_proxy, global_proxy_function);
Handle<JSObject> global_object(
JSObject::cast(native_context()->global_object()), isolate());
- JSObject::ForceSetPrototype(global_proxy, global_object);
+ JSObject::ForceSetPrototype(isolate(), global_proxy, global_object);
global_proxy->set_native_context(*native_context());
DCHECK(native_context()->global_proxy() == *global_proxy);
}
@@ -1394,7 +1400,8 @@ static void InstallWithIntrinsicDefaultProto(Isolate* isolate,
JSObject::AddProperty(isolate, function,
isolate->factory()->native_context_index_symbol(),
index, NONE);
- isolate->native_context()->set(context_index, *function);
+ isolate->native_context()->set(context_index, *function, UPDATE_WRITE_BARRIER,
+ kReleaseStore);
}
static void InstallError(
@@ -1404,6 +1411,11 @@ static void InstallError(
int error_function_length = 1, int in_object_properties = 2) {
Factory* factory = isolate->factory();
+ if (FLAG_harmony_error_cause) {
+ error_function_length += 1;
+ in_object_properties += 1;
+ }
+
// Most Error objects consist of a message and a stack trace.
// Reserve two in-object properties for these.
const int kErrorObjectSize =
@@ -1411,7 +1423,6 @@ static void InstallError(
Handle<JSFunction> error_fun = InstallFunction(
isolate, global, name, JS_ERROR_TYPE, kErrorObjectSize,
in_object_properties, factory->the_hole_value(), error_constructor);
- error_fun->shared().DontAdaptArguments();
error_fun->shared().set_length(error_function_length);
if (context_index == Context::ERROR_FUNCTION_INDEX) {
@@ -1431,6 +1442,11 @@ static void InstallError(
JSObject::AddProperty(isolate, prototype, factory->message_string(),
factory->empty_string(), DONT_ENUM);
+ if (FLAG_harmony_error_cause) {
+ JSObject::AddProperty(isolate, prototype, factory->cause_string(),
+ factory->undefined_value(), DONT_ENUM);
+ }
+
if (context_index == Context::ERROR_FUNCTION_INDEX) {
Handle<JSFunction> to_string_fun =
SimpleInstallFunction(isolate, prototype, "toString",
@@ -1465,7 +1481,6 @@ static void InstallError(
void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
Handle<JSFunction> empty_function) {
// --- N a t i v e C o n t e x t ---
- native_context()->set_previous(Context());
// Set extension and global object.
native_context()->set_extension(*global_object);
// Security setup: Set the security token of the native context to the global
@@ -1626,8 +1641,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
JSFunction::kSizeWithPrototype, 0, prototype,
Builtins::kFunctionConstructor);
// Function instances are sloppy by default.
- function_fun->set_prototype_or_initial_map(
- *isolate_->sloppy_function_map());
+ function_fun->set_prototype_or_initial_map(*isolate_->sloppy_function_map(),
+ kReleaseStore);
function_fun->shared().DontAdaptArguments();
function_fun->shared().set_length(1);
InstallWithIntrinsicDefaultProto(isolate_, function_fun,
@@ -1636,8 +1651,10 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
// Setup the methods on the %FunctionPrototype%.
JSObject::AddProperty(isolate_, prototype, factory->constructor_string(),
function_fun, DONT_ENUM);
- SimpleInstallFunction(isolate_, prototype, "apply",
- Builtins::kFunctionPrototypeApply, 2, false);
+ Handle<JSFunction> function_prototype_apply =
+ SimpleInstallFunction(isolate_, prototype, "apply",
+ Builtins::kFunctionPrototypeApply, 2, false);
+ native_context()->set_function_prototype_apply(*function_prototype_apply);
SimpleInstallFunction(isolate_, prototype, "bind",
Builtins::kFastFunctionPrototypeBind, 1, false);
SimpleInstallFunction(isolate_, prototype, "call",
@@ -1829,7 +1846,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
Handle<JSObject> array_iterator_prototype =
factory->NewJSObject(isolate_->object_function(), AllocationType::kOld);
- JSObject::ForceSetPrototype(array_iterator_prototype, iterator_prototype);
+ JSObject::ForceSetPrototype(isolate(), array_iterator_prototype,
+ iterator_prototype);
CHECK_NE(array_iterator_prototype->map().ptr(),
isolate_->initial_object_prototype()->map().ptr());
array_iterator_prototype->map().set_instance_type(
@@ -2145,7 +2163,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
Handle<JSObject> string_iterator_prototype =
factory->NewJSObject(isolate_->object_function(), AllocationType::kOld);
- JSObject::ForceSetPrototype(string_iterator_prototype, iterator_prototype);
+ JSObject::ForceSetPrototype(isolate(), string_iterator_prototype,
+ iterator_prototype);
CHECK_NE(string_iterator_prototype->map().ptr(),
isolate_->initial_object_prototype()->map().ptr());
string_iterator_prototype->map().set_instance_type(
@@ -2623,7 +2642,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
Handle<JSObject> regexp_string_iterator_prototype = factory->NewJSObject(
isolate()->object_function(), AllocationType::kOld);
- JSObject::ForceSetPrototype(regexp_string_iterator_prototype,
+ JSObject::ForceSetPrototype(isolate(), regexp_string_iterator_prototype,
iterator_prototype);
InstallToStringTag(isolate(), regexp_string_iterator_prototype,
@@ -3222,7 +3241,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
native_context()->initial_iterator_prototype(), isolate());
Handle<JSObject> prototype = factory->NewJSObject(
isolate()->object_function(), AllocationType::kOld);
- JSObject::ForceSetPrototype(prototype, iterator_prototype);
+ JSObject::ForceSetPrototype(isolate(), prototype, iterator_prototype);
// #sec-%segmentiteratorprototype%.@@tostringtag
//
// %SegmentIteratorPrototype% [ @@toStringTag ]
@@ -3274,6 +3293,25 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
InstallSpeciesGetter(isolate_, shared_array_buffer_fun);
}
+ { // R e s i z a b l e A r r a y B u f f e r
+ Handle<String> name = factory->ResizableArrayBuffer_string();
+ Handle<JSFunction> resizable_array_buffer_fun =
+ CreateArrayBuffer(name, RESIZABLE_ARRAY_BUFFER);
+ InstallWithIntrinsicDefaultProto(isolate_, resizable_array_buffer_fun,
+ Context::RESIZABLE_ARRAY_BUFFER_FUN_INDEX);
+ InstallSpeciesGetter(isolate_, resizable_array_buffer_fun);
+ }
+
+ { // G r o w a b l e S h a r e d A r r a y B u f f e r
+ Handle<String> name = factory->GrowableSharedArrayBuffer_string();
+ Handle<JSFunction> growable_shared_array_buffer_fun =
+ CreateArrayBuffer(name, GROWABLE_SHARED_ARRAY_BUFFER);
+ InstallWithIntrinsicDefaultProto(
+ isolate_, growable_shared_array_buffer_fun,
+ Context::GROWABLE_SHARED_ARRAY_BUFFER_FUN_INDEX);
+ InstallSpeciesGetter(isolate_, growable_shared_array_buffer_fun);
+ }
+
{ // -- A t o m i c s
Handle<JSObject> atomics_object =
factory->NewJSObject(isolate_->object_function(), AllocationType::kOld);
@@ -3403,12 +3441,13 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
}
{// -- T y p e d A r r a y s
-#define INSTALL_TYPED_ARRAY(Type, type, TYPE, ctype) \
- { \
- Handle<JSFunction> fun = InstallTypedArray( \
- #Type "Array", TYPE##_ELEMENTS, TYPE##_TYPED_ARRAY_CONSTRUCTOR_TYPE); \
- InstallWithIntrinsicDefaultProto(isolate_, fun, \
- Context::TYPE##_ARRAY_FUN_INDEX); \
+#define INSTALL_TYPED_ARRAY(Type, type, TYPE, ctype) \
+ { \
+ Handle<JSFunction> fun = InstallTypedArray( \
+ #Type "Array", TYPE##_ELEMENTS, TYPE##_TYPED_ARRAY_CONSTRUCTOR_TYPE, \
+ Context::RAB_GSAB_##TYPE##_ARRAY_MAP_INDEX); \
+ InstallWithIntrinsicDefaultProto(isolate_, fun, \
+ Context::TYPE##_ARRAY_FUN_INDEX); \
}
TYPED_ARRAYS(INSTALL_TYPED_ARRAY)
#undef INSTALL_TYPED_ARRAY
@@ -4039,7 +4078,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
Handle<JSFunction> Genesis::InstallTypedArray(const char* name,
ElementsKind elements_kind,
- InstanceType type) {
+ InstanceType type,
+ int rab_gsab_initial_map_index) {
Handle<JSObject> global =
Handle<JSObject>(native_context()->global_object(), isolate());
@@ -4076,6 +4116,16 @@ Handle<JSFunction> Genesis::InstallTypedArray(const char* name,
prototype->map().set_instance_type(JS_TYPED_ARRAY_PROTOTYPE_TYPE);
InstallConstant(isolate(), prototype, "BYTES_PER_ELEMENT", bytes_per_element);
+
+ // RAB / GSAB backed TypedArrays don't have separate constructors, but they
+ // have their own maps. Create the corresponding map here.
+ Handle<Map> rab_gsab_initial_map = factory()->NewMap(
+ JS_TYPED_ARRAY_TYPE, JSTypedArray::kSizeWithEmbedderFields,
+ GetCorrespondingRabGsabElementsKind(elements_kind), 0);
+ native_context()->set(rab_gsab_initial_map_index, *rab_gsab_initial_map,
+ UPDATE_WRITE_BARRIER, kReleaseStore);
+ Map::SetPrototype(isolate(), rab_gsab_initial_map, prototype);
+
return result;
}
@@ -4154,14 +4204,14 @@ void Genesis::InitializeIteratorFunctions() {
JSFunction::kSizeWithPrototype, 0, generator_function_prototype,
Builtins::kGeneratorFunctionConstructor);
generator_function_function->set_prototype_or_initial_map(
- native_context->generator_function_map());
+ native_context->generator_function_map(), kReleaseStore);
generator_function_function->shared().DontAdaptArguments();
generator_function_function->shared().set_length(1);
InstallWithIntrinsicDefaultProto(
isolate, generator_function_function,
Context::GENERATOR_FUNCTION_FUNCTION_INDEX);
- JSObject::ForceSetPrototype(generator_function_function,
+ JSObject::ForceSetPrototype(isolate, generator_function_function,
isolate->function_function());
JSObject::AddProperty(
isolate, generator_function_prototype, factory->constructor_string(),
@@ -4183,14 +4233,14 @@ void Genesis::InitializeIteratorFunctions() {
JSFunction::kSizeWithPrototype, 0, async_generator_function_prototype,
Builtins::kAsyncGeneratorFunctionConstructor);
async_generator_function_function->set_prototype_or_initial_map(
- native_context->async_generator_function_map());
+ native_context->async_generator_function_map(), kReleaseStore);
async_generator_function_function->shared().DontAdaptArguments();
async_generator_function_function->shared().set_length(1);
InstallWithIntrinsicDefaultProto(
isolate, async_generator_function_function,
Context::ASYNC_GENERATOR_FUNCTION_FUNCTION_INDEX);
- JSObject::ForceSetPrototype(async_generator_function_function,
+ JSObject::ForceSetPrototype(isolate, async_generator_function_function,
isolate->function_function());
JSObject::AddProperty(
@@ -4206,7 +4256,7 @@ void Genesis::InitializeIteratorFunctions() {
// Setup %SetIteratorPrototype%.
Handle<JSObject> prototype =
factory->NewJSObject(isolate->object_function(), AllocationType::kOld);
- JSObject::ForceSetPrototype(prototype, iterator_prototype);
+ JSObject::ForceSetPrototype(isolate, prototype, iterator_prototype);
InstallToStringTag(isolate, prototype, factory->SetIterator_string());
@@ -4239,7 +4289,7 @@ void Genesis::InitializeIteratorFunctions() {
// Setup %MapIteratorPrototype%.
Handle<JSObject> prototype =
factory->NewJSObject(isolate->object_function(), AllocationType::kOld);
- JSObject::ForceSetPrototype(prototype, iterator_prototype);
+ JSObject::ForceSetPrototype(isolate, prototype, iterator_prototype);
InstallToStringTag(isolate, prototype, factory->MapIterator_string());
@@ -4284,11 +4334,11 @@ void Genesis::InitializeIteratorFunctions() {
JSFunction::kSizeWithPrototype, 0, async_function_prototype,
Builtins::kAsyncFunctionConstructor);
async_function_constructor->set_prototype_or_initial_map(
- native_context->async_function_map());
+ native_context->async_function_map(), kReleaseStore);
async_function_constructor->shared().DontAdaptArguments();
async_function_constructor->shared().set_length(1);
native_context->set_async_function_constructor(*async_function_constructor);
- JSObject::ForceSetPrototype(async_function_constructor,
+ JSObject::ForceSetPrototype(isolate, async_function_constructor,
isolate->function_function());
JSObject::AddProperty(
@@ -4380,6 +4430,7 @@ EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_top_level_await)
EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_import_assertions)
EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_private_brand_checks)
EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_class_static_blocks)
+EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_error_cause)
#ifdef V8_INTL_SUPPORT
EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_intl_best_fit_matcher)
@@ -4390,7 +4441,10 @@ EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_intl_dateformat_day_period)
#undef EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE
void Genesis::InitializeGlobal_harmony_sharedarraybuffer() {
- if (!FLAG_harmony_sharedarraybuffer) return;
+ if (!FLAG_harmony_sharedarraybuffer ||
+ FLAG_enable_sharedarraybuffer_per_context) {
+ return;
+ }
Handle<JSGlobalObject> global(native_context()->global_object(), isolate());
@@ -4507,6 +4561,45 @@ void Genesis::InitializeGlobal_harmony_relative_indexing_methods() {
}
}
+#ifdef V8_INTL_SUPPORT
+
+void Genesis::InitializeGlobal_harmony_intl_locale_info() {
+ if (!FLAG_harmony_intl_locale_info) return;
+ Handle<JSObject> prototype(
+ JSObject::cast(native_context()->intl_locale_function().prototype()),
+ isolate_);
+ SimpleInstallGetter(isolate(), prototype, factory()->calendars_string(),
+ Builtins::kLocalePrototypeCalendars, true);
+ SimpleInstallGetter(isolate(), prototype, factory()->collations_string(),
+ Builtins::kLocalePrototypeCollations, true);
+ SimpleInstallGetter(isolate(), prototype, factory()->hourCycles_string(),
+ Builtins::kLocalePrototypeHourCycles, true);
+ SimpleInstallGetter(isolate(), prototype,
+ factory()->numberingSystems_string(),
+ Builtins::kLocalePrototypeNumberingSystems, true);
+ SimpleInstallGetter(isolate(), prototype, factory()->textInfo_string(),
+ Builtins::kLocalePrototypeTextInfo, true);
+ SimpleInstallGetter(isolate(), prototype, factory()->timeZones_string(),
+ Builtins::kLocalePrototypeTimeZones, true);
+ SimpleInstallGetter(isolate(), prototype, factory()->weekInfo_string(),
+ Builtins::kLocalePrototypeWeekInfo, true);
+}
+
+#endif // V8_INTL_SUPPORT
+
+void Genesis::InitializeGlobal_harmony_rab_gsab() {
+ if (!FLAG_harmony_rab_gsab) return;
+
+ Handle<JSGlobalObject> global(native_context()->global_object(), isolate());
+
+ JSObject::AddProperty(isolate_, global, "ResizableArrayBuffer",
+ isolate()->resizable_array_buffer_fun(), DONT_ENUM);
+
+ JSObject::AddProperty(isolate_, global, "GrowableSharedArrayBuffer",
+ isolate()->growable_shared_array_buffer_fun(),
+ DONT_ENUM);
+}
+
Handle<JSFunction> Genesis::CreateArrayBuffer(
Handle<String> name, ArrayBufferKind array_buffer_kind) {
// Create the %ArrayBufferPrototype%
@@ -4550,6 +4643,28 @@ Handle<JSFunction> Genesis::CreateArrayBuffer(
Builtins::kSharedArrayBufferPrototypeSlice, 2,
true);
break;
+ case RESIZABLE_ARRAY_BUFFER:
+ SimpleInstallGetter(isolate(), prototype, factory()->byte_length_string(),
+ Builtins::kResizableArrayBufferPrototypeGetByteLength,
+ false);
+ SimpleInstallGetter(
+ isolate(), prototype, factory()->max_byte_length_string(),
+ Builtins::kResizableArrayBufferPrototypeGetMaxByteLength, false);
+ SimpleInstallFunction(isolate(), prototype, "resize",
+ Builtins::kResizableArrayBufferPrototypeResize, 1,
+ true);
+ break;
+ case GROWABLE_SHARED_ARRAY_BUFFER:
+ SimpleInstallGetter(
+ isolate(), prototype, factory()->byte_length_string(),
+ Builtins::kGrowableSharedArrayBufferPrototypeGetByteLength, true);
+ SimpleInstallGetter(
+ isolate(), prototype, factory()->max_byte_length_string(),
+ Builtins::kGrowableSharedArrayBufferPrototypeGetMaxByteLength, false);
+ SimpleInstallFunction(isolate(), prototype, "grow",
+ Builtins::kGrowableSharedArrayBufferPrototypeGrow,
+ 1, true);
+ break;
}
return array_buffer_fun;
@@ -5085,7 +5200,7 @@ bool Genesis::ConfigureGlobalObjects(
}
}
- JSObject::ForceSetPrototype(global_proxy, global_object);
+ JSObject::ForceSetPrototype(isolate(), global_proxy, global_object);
native_context()->set_array_buffer_map(
native_context()->array_buffer_fun().initial_map());
@@ -5250,7 +5365,7 @@ void Genesis::TransferObject(Handle<JSObject> from, Handle<JSObject> to) {
// Transfer the prototype (new map is needed).
Handle<HeapObject> proto(from->map().prototype(), isolate());
- JSObject::ForceSetPrototype(to, proto);
+ JSObject::ForceSetPrototype(isolate(), to, proto);
}
Handle<Map> Genesis::CreateInitialMapForArraySubclass(int size,
@@ -5300,7 +5415,7 @@ Genesis::Genesis(
v8::DeserializeEmbedderFieldsCallback embedder_fields_deserializer,
v8::MicrotaskQueue* microtask_queue)
: isolate_(isolate), active_(isolate->bootstrapper()) {
- RuntimeCallTimerScope rcs_timer(isolate, RuntimeCallCounterId::kGenesis);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kGenesis);
result_ = Handle<Context>::null();
global_proxy_ = Handle<JSGlobalProxy>::null();
@@ -5483,7 +5598,7 @@ Genesis::Genesis(Isolate* isolate,
global_proxy->set_native_context(ReadOnlyRoots(heap()).null_value());
// Configure the hidden prototype chain of the global proxy.
- JSObject::ForceSetPrototype(global_proxy, global_object);
+ JSObject::ForceSetPrototype(isolate, global_proxy, global_object);
global_proxy->map().SetConstructor(*global_constructor);
global_proxy_ = global_proxy;
diff --git a/deps/v8/src/init/heap-symbols.h b/deps/v8/src/init/heap-symbols.h
index 71eb054596..4d0213e8d1 100644
--- a/deps/v8/src/init/heap-symbols.h
+++ b/deps/v8/src/init/heap-symbols.h
@@ -12,10 +12,12 @@
V(_, accounting_string, "accounting") \
V(_, breakType_string, "breakType") \
V(_, calendar_string, "calendar") \
+ V(_, calendars_string, "calendars") \
V(_, cardinal_string, "cardinal") \
V(_, caseFirst_string, "caseFirst") \
V(_, compare_string, "compare") \
V(_, collation_string, "collation") \
+ V(_, collations_string, "collations") \
V(_, compact_string, "compact") \
V(_, compactDisplay_string, "compactDisplay") \
V(_, currency_string, "currency") \
@@ -26,6 +28,7 @@
V(_, day_string, "day") \
V(_, dayPeriod_string, "dayPeriod") \
V(_, decimal_string, "decimal") \
+ V(_, direction_string, "direction") \
V(_, endRange_string, "endRange") \
V(_, engineering_string, "engineering") \
V(_, era_string, "era") \
@@ -35,6 +38,7 @@
V(_, exponentSeparator_string, "exponentSeparator") \
V(_, fallback_string, "fallback") \
V(_, first_string, "first") \
+ V(_, firstDay_string, "firstDay") \
V(_, format_string, "format") \
V(_, fraction_string, "fraction") \
V(_, fractionalSecond_string, "fractionalSecond") \
@@ -50,6 +54,7 @@
V(_, hour_string, "hour") \
V(_, hour12_string, "hour12") \
V(_, hourCycle_string, "hourCycle") \
+ V(_, hourCycles_string, "hourCycles") \
V(_, ideo_string, "ideo") \
V(_, ignorePunctuation_string, "ignorePunctuation") \
V(_, Invalid_Date_string, "Invalid Date") \
@@ -63,8 +68,10 @@
V(_, locale_string, "locale") \
V(_, loose_string, "loose") \
V(_, lower_string, "lower") \
+ V(_, ltr_string, "ltr") \
V(_, maximumFractionDigits_string, "maximumFractionDigits") \
V(_, maximumSignificantDigits_string, "maximumSignificantDigits") \
+ V(_, minimalDays_string, "minimalDays") \
V(_, minimumFractionDigits_string, "minimumFractionDigits") \
V(_, minimumIntegerDigits_string, "minimumIntegerDigits") \
V(_, minimumSignificantDigits_string, "minimumSignificantDigits") \
@@ -78,6 +85,7 @@
V(_, notation_string, "notation") \
V(_, normal_string, "normal") \
V(_, numberingSystem_string, "numberingSystem") \
+ V(_, numberingSystems_string, "numberingSystems") \
V(_, numeric_string, "numeric") \
V(_, ordinal_string, "ordinal") \
V(_, percentSign_string, "percentSign") \
@@ -85,6 +93,7 @@
V(_, quarter_string, "quarter") \
V(_, region_string, "region") \
V(_, relatedYear_string, "relatedYear") \
+ V(_, rtl_string, "rtl") \
V(_, scientific_string, "scientific") \
V(_, second_string, "second") \
V(_, segment_string, "segment") \
@@ -99,8 +108,10 @@
V(_, strict_string, "strict") \
V(_, style_string, "style") \
V(_, term_string, "term") \
+ V(_, textInfo_string, "textInfo") \
V(_, timeStyle_string, "timeStyle") \
V(_, timeZone_string, "timeZone") \
+ V(_, timeZones_string, "timeZones") \
V(_, timeZoneName_string, "timeZoneName") \
V(_, type_string, "type") \
V(_, unknown_string, "unknown") \
@@ -111,228 +122,235 @@
V(_, unit_string, "unit") \
V(_, unitDisplay_string, "unitDisplay") \
V(_, weekday_string, "weekday") \
+ V(_, weekendEnd_string, "weekendEnd") \
+ V(_, weekendStart_string, "weekendStart") \
+ V(_, weekInfo_string, "weekInfo") \
V(_, year_string, "year") \
V(_, yearName_string, "yearName")
#else // V8_INTL_SUPPORT
#define INTERNALIZED_STRING_LIST_GENERATOR_INTL(V, _)
#endif // V8_INTL_SUPPORT
-#define INTERNALIZED_STRING_LIST_GENERATOR(V, _) \
- INTERNALIZED_STRING_LIST_GENERATOR_INTL(V, _) \
- V(_, add_string, "add") \
- V(_, AggregateError_string, "AggregateError") \
- V(_, always_string, "always") \
- V(_, anonymous_function_string, "(anonymous function)") \
- V(_, anonymous_string, "anonymous") \
- V(_, apply_string, "apply") \
- V(_, Arguments_string, "Arguments") \
- V(_, arguments_string, "arguments") \
- V(_, arguments_to_string, "[object Arguments]") \
- V(_, Array_string, "Array") \
- V(_, array_to_string, "[object Array]") \
- V(_, ArrayBuffer_string, "ArrayBuffer") \
- V(_, ArrayIterator_string, "Array Iterator") \
- V(_, as_string, "as") \
- V(_, assert_string, "assert") \
- V(_, async_string, "async") \
- V(_, auto_string, "auto") \
- V(_, await_string, "await") \
- V(_, BigInt_string, "BigInt") \
- V(_, bigint_string, "bigint") \
- V(_, BigInt64Array_string, "BigInt64Array") \
- V(_, BigUint64Array_string, "BigUint64Array") \
- V(_, bind_string, "bind") \
- V(_, Boolean_string, "Boolean") \
- V(_, boolean_string, "boolean") \
- V(_, boolean_to_string, "[object Boolean]") \
- V(_, bound__string, "bound ") \
- V(_, buffer_string, "buffer") \
- V(_, byte_length_string, "byteLength") \
- V(_, byte_offset_string, "byteOffset") \
- V(_, CompileError_string, "CompileError") \
- V(_, callee_string, "callee") \
- V(_, caller_string, "caller") \
- V(_, character_string, "character") \
- V(_, closure_string, "(closure)") \
- V(_, code_string, "code") \
- V(_, column_string, "column") \
- V(_, computed_string, "<computed>") \
- V(_, configurable_string, "configurable") \
- V(_, conjunction_string, "conjunction") \
- V(_, construct_string, "construct") \
- V(_, constructor_string, "constructor") \
- V(_, current_string, "current") \
- V(_, Date_string, "Date") \
- V(_, date_to_string, "[object Date]") \
- V(_, default_string, "default") \
- V(_, defineProperty_string, "defineProperty") \
- V(_, deleteProperty_string, "deleteProperty") \
- V(_, disjunction_string, "disjunction") \
- V(_, done_string, "done") \
- V(_, dot_brand_string, ".brand") \
- V(_, dot_catch_string, ".catch") \
- V(_, dot_default_string, ".default") \
- V(_, dot_for_string, ".for") \
- V(_, dot_generator_object_string, ".generator_object") \
- V(_, dot_home_object_string, ".home_object") \
- V(_, dot_result_string, ".result") \
- V(_, dot_repl_result_string, ".repl_result") \
- V(_, dot_static_home_object_string, "._static_home_object") \
- V(_, dot_string, ".") \
- V(_, dot_switch_tag_string, ".switch_tag") \
- V(_, dotAll_string, "dotAll") \
- V(_, enumerable_string, "enumerable") \
- V(_, element_string, "element") \
- V(_, Error_string, "Error") \
- V(_, errors_string, "errors") \
- V(_, error_to_string, "[object Error]") \
- V(_, eval_string, "eval") \
- V(_, EvalError_string, "EvalError") \
- V(_, exec_string, "exec") \
- V(_, false_string, "false") \
- V(_, FinalizationRegistry_string, "FinalizationRegistry") \
- V(_, flags_string, "flags") \
- V(_, Float32Array_string, "Float32Array") \
- V(_, Float64Array_string, "Float64Array") \
- V(_, from_string, "from") \
- V(_, Function_string, "Function") \
- V(_, function_native_code_string, "function () { [native code] }") \
- V(_, function_string, "function") \
- V(_, function_to_string, "[object Function]") \
- V(_, Generator_string, "Generator") \
- V(_, get_space_string, "get ") \
- V(_, get_string, "get") \
- V(_, getOwnPropertyDescriptor_string, "getOwnPropertyDescriptor") \
- V(_, getPrototypeOf_string, "getPrototypeOf") \
- V(_, global_string, "global") \
- V(_, globalThis_string, "globalThis") \
- V(_, groups_string, "groups") \
- V(_, has_string, "has") \
- V(_, has_indices_string, "hasIndices") \
- V(_, ignoreCase_string, "ignoreCase") \
- V(_, illegal_access_string, "illegal access") \
- V(_, illegal_argument_string, "illegal argument") \
- V(_, index_string, "index") \
- V(_, indices_string, "indices") \
- V(_, Infinity_string, "Infinity") \
- V(_, infinity_string, "infinity") \
- V(_, input_string, "input") \
- V(_, Int16Array_string, "Int16Array") \
- V(_, Int32Array_string, "Int32Array") \
- V(_, Int8Array_string, "Int8Array") \
- V(_, isExtensible_string, "isExtensible") \
- V(_, jsMemoryEstimate_string, "jsMemoryEstimate") \
- V(_, jsMemoryRange_string, "jsMemoryRange") \
- V(_, keys_string, "keys") \
- V(_, lastIndex_string, "lastIndex") \
- V(_, length_string, "length") \
- V(_, let_string, "let") \
- V(_, line_string, "line") \
- V(_, linear_string, "linear") \
- V(_, LinkError_string, "LinkError") \
- V(_, long_string, "long") \
- V(_, Map_string, "Map") \
- V(_, MapIterator_string, "Map Iterator") \
- V(_, medium_string, "medium") \
- V(_, message_string, "message") \
- V(_, meta_string, "meta") \
- V(_, minus_Infinity_string, "-Infinity") \
- V(_, Module_string, "Module") \
- V(_, multiline_string, "multiline") \
- V(_, name_string, "name") \
- V(_, NaN_string, "NaN") \
- V(_, narrow_string, "narrow") \
- V(_, native_string, "native") \
- V(_, new_target_string, ".new.target") \
- V(_, next_string, "next") \
- V(_, NFC_string, "NFC") \
- V(_, NFD_string, "NFD") \
- V(_, NFKC_string, "NFKC") \
- V(_, NFKD_string, "NFKD") \
- V(_, not_equal_string, "not-equal") \
- V(_, null_string, "null") \
- V(_, null_to_string, "[object Null]") \
- V(_, Number_string, "Number") \
- V(_, number_string, "number") \
- V(_, number_to_string, "[object Number]") \
- V(_, Object_string, "Object") \
- V(_, object_string, "object") \
- V(_, object_to_string, "[object Object]") \
- V(_, of_string, "of") \
- V(_, ok_string, "ok") \
- V(_, one_string, "1") \
- V(_, other_string, "other") \
- V(_, ownKeys_string, "ownKeys") \
- V(_, percent_string, "percent") \
- V(_, position_string, "position") \
- V(_, preventExtensions_string, "preventExtensions") \
- V(_, private_constructor_string, "#constructor") \
- V(_, Promise_string, "Promise") \
- V(_, proto_string, "__proto__") \
- V(_, prototype_string, "prototype") \
- V(_, proxy_string, "proxy") \
- V(_, Proxy_string, "Proxy") \
- V(_, query_colon_string, "(?:)") \
- V(_, RangeError_string, "RangeError") \
- V(_, raw_string, "raw") \
- V(_, ReferenceError_string, "ReferenceError") \
- V(_, ReflectGet_string, "Reflect.get") \
- V(_, ReflectHas_string, "Reflect.has") \
- V(_, RegExp_string, "RegExp") \
- V(_, regexp_to_string, "[object RegExp]") \
- V(_, resolve_string, "resolve") \
- V(_, return_string, "return") \
- V(_, revoke_string, "revoke") \
- V(_, RuntimeError_string, "RuntimeError") \
- V(_, Script_string, "Script") \
- V(_, script_string, "script") \
- V(_, short_string, "short") \
- V(_, Set_string, "Set") \
- V(_, sentence_string, "sentence") \
- V(_, set_space_string, "set ") \
- V(_, set_string, "set") \
- V(_, SetIterator_string, "Set Iterator") \
- V(_, setPrototypeOf_string, "setPrototypeOf") \
- V(_, SharedArrayBuffer_string, "SharedArrayBuffer") \
- V(_, source_string, "source") \
- V(_, sourceText_string, "sourceText") \
- V(_, stack_string, "stack") \
- V(_, stackTraceLimit_string, "stackTraceLimit") \
- V(_, sticky_string, "sticky") \
- V(_, String_string, "String") \
- V(_, string_string, "string") \
- V(_, string_to_string, "[object String]") \
- V(_, symbol_species_string, "[Symbol.species]") \
- V(_, Symbol_string, "Symbol") \
- V(_, symbol_string, "symbol") \
- V(_, SyntaxError_string, "SyntaxError") \
- V(_, target_string, "target") \
- V(_, then_string, "then") \
- V(_, this_function_string, ".this_function") \
- V(_, this_string, "this") \
- V(_, throw_string, "throw") \
- V(_, timed_out_string, "timed-out") \
- V(_, toJSON_string, "toJSON") \
- V(_, toString_string, "toString") \
- V(_, true_string, "true") \
- V(_, total_string, "total") \
- V(_, TypeError_string, "TypeError") \
- V(_, Uint16Array_string, "Uint16Array") \
- V(_, Uint32Array_string, "Uint32Array") \
- V(_, Uint8Array_string, "Uint8Array") \
- V(_, Uint8ClampedArray_string, "Uint8ClampedArray") \
- V(_, undefined_string, "undefined") \
- V(_, undefined_to_string, "[object Undefined]") \
- V(_, unicode_string, "unicode") \
- V(_, URIError_string, "URIError") \
- V(_, value_string, "value") \
- V(_, valueOf_string, "valueOf") \
- V(_, WeakMap_string, "WeakMap") \
- V(_, WeakRef_string, "WeakRef") \
- V(_, WeakSet_string, "WeakSet") \
- V(_, week_string, "week") \
- V(_, word_string, "word") \
- V(_, writable_string, "writable") \
+#define INTERNALIZED_STRING_LIST_GENERATOR(V, _) \
+ INTERNALIZED_STRING_LIST_GENERATOR_INTL(V, _) \
+ V(_, add_string, "add") \
+ V(_, AggregateError_string, "AggregateError") \
+ V(_, always_string, "always") \
+ V(_, anonymous_function_string, "(anonymous function)") \
+ V(_, anonymous_string, "anonymous") \
+ V(_, apply_string, "apply") \
+ V(_, Arguments_string, "Arguments") \
+ V(_, arguments_string, "arguments") \
+ V(_, arguments_to_string, "[object Arguments]") \
+ V(_, Array_string, "Array") \
+ V(_, array_to_string, "[object Array]") \
+ V(_, ArrayBuffer_string, "ArrayBuffer") \
+ V(_, ArrayIterator_string, "Array Iterator") \
+ V(_, as_string, "as") \
+ V(_, assert_string, "assert") \
+ V(_, async_string, "async") \
+ V(_, auto_string, "auto") \
+ V(_, await_string, "await") \
+ V(_, BigInt_string, "BigInt") \
+ V(_, bigint_string, "bigint") \
+ V(_, BigInt64Array_string, "BigInt64Array") \
+ V(_, BigUint64Array_string, "BigUint64Array") \
+ V(_, bind_string, "bind") \
+ V(_, Boolean_string, "Boolean") \
+ V(_, boolean_string, "boolean") \
+ V(_, boolean_to_string, "[object Boolean]") \
+ V(_, bound__string, "bound ") \
+ V(_, buffer_string, "buffer") \
+ V(_, byte_length_string, "byteLength") \
+ V(_, byte_offset_string, "byteOffset") \
+ V(_, CompileError_string, "CompileError") \
+ V(_, callee_string, "callee") \
+ V(_, caller_string, "caller") \
+ V(_, cause_string, "cause") \
+ V(_, character_string, "character") \
+ V(_, closure_string, "(closure)") \
+ V(_, code_string, "code") \
+ V(_, column_string, "column") \
+ V(_, computed_string, "<computed>") \
+ V(_, configurable_string, "configurable") \
+ V(_, conjunction_string, "conjunction") \
+ V(_, construct_string, "construct") \
+ V(_, constructor_string, "constructor") \
+ V(_, current_string, "current") \
+ V(_, Date_string, "Date") \
+ V(_, date_to_string, "[object Date]") \
+ V(_, default_string, "default") \
+ V(_, defineProperty_string, "defineProperty") \
+ V(_, deleteProperty_string, "deleteProperty") \
+ V(_, disjunction_string, "disjunction") \
+ V(_, done_string, "done") \
+ V(_, dot_brand_string, ".brand") \
+ V(_, dot_catch_string, ".catch") \
+ V(_, dot_default_string, ".default") \
+ V(_, dot_for_string, ".for") \
+ V(_, dot_generator_object_string, ".generator_object") \
+ V(_, dot_home_object_string, ".home_object") \
+ V(_, dot_result_string, ".result") \
+ V(_, dot_repl_result_string, ".repl_result") \
+ V(_, dot_static_home_object_string, "._static_home_object") \
+ V(_, dot_string, ".") \
+ V(_, dot_switch_tag_string, ".switch_tag") \
+ V(_, dotAll_string, "dotAll") \
+ V(_, enumerable_string, "enumerable") \
+ V(_, element_string, "element") \
+ V(_, Error_string, "Error") \
+ V(_, errors_string, "errors") \
+ V(_, error_to_string, "[object Error]") \
+ V(_, eval_string, "eval") \
+ V(_, EvalError_string, "EvalError") \
+ V(_, exec_string, "exec") \
+ V(_, false_string, "false") \
+ V(_, FinalizationRegistry_string, "FinalizationRegistry") \
+ V(_, flags_string, "flags") \
+ V(_, Float32Array_string, "Float32Array") \
+ V(_, Float64Array_string, "Float64Array") \
+ V(_, from_string, "from") \
+ V(_, Function_string, "Function") \
+ V(_, function_native_code_string, "function () { [native code] }") \
+ V(_, function_string, "function") \
+ V(_, function_to_string, "[object Function]") \
+ V(_, Generator_string, "Generator") \
+ V(_, get_space_string, "get ") \
+ V(_, get_string, "get") \
+ V(_, getOwnPropertyDescriptor_string, "getOwnPropertyDescriptor") \
+ V(_, getPrototypeOf_string, "getPrototypeOf") \
+ V(_, global_string, "global") \
+ V(_, globalThis_string, "globalThis") \
+ V(_, groups_string, "groups") \
+ V(_, GrowableSharedArrayBuffer_string, "GrowableSharedArrayBuffer") \
+ V(_, has_string, "has") \
+ V(_, has_indices_string, "hasIndices") \
+ V(_, ignoreCase_string, "ignoreCase") \
+ V(_, illegal_access_string, "illegal access") \
+ V(_, illegal_argument_string, "illegal argument") \
+ V(_, index_string, "index") \
+ V(_, indices_string, "indices") \
+ V(_, Infinity_string, "Infinity") \
+ V(_, infinity_string, "infinity") \
+ V(_, input_string, "input") \
+ V(_, Int16Array_string, "Int16Array") \
+ V(_, Int32Array_string, "Int32Array") \
+ V(_, Int8Array_string, "Int8Array") \
+ V(_, isExtensible_string, "isExtensible") \
+ V(_, jsMemoryEstimate_string, "jsMemoryEstimate") \
+ V(_, jsMemoryRange_string, "jsMemoryRange") \
+ V(_, keys_string, "keys") \
+ V(_, lastIndex_string, "lastIndex") \
+ V(_, length_string, "length") \
+ V(_, let_string, "let") \
+ V(_, line_string, "line") \
+ V(_, linear_string, "linear") \
+ V(_, LinkError_string, "LinkError") \
+ V(_, long_string, "long") \
+ V(_, Map_string, "Map") \
+ V(_, MapIterator_string, "Map Iterator") \
+ V(_, max_byte_length_string, "maxByteLength") \
+ V(_, medium_string, "medium") \
+ V(_, message_string, "message") \
+ V(_, meta_string, "meta") \
+ V(_, minus_Infinity_string, "-Infinity") \
+ V(_, Module_string, "Module") \
+ V(_, multiline_string, "multiline") \
+ V(_, name_string, "name") \
+ V(_, NaN_string, "NaN") \
+ V(_, narrow_string, "narrow") \
+ V(_, native_string, "native") \
+ V(_, new_target_string, ".new.target") \
+ V(_, next_string, "next") \
+ V(_, NFC_string, "NFC") \
+ V(_, NFD_string, "NFD") \
+ V(_, NFKC_string, "NFKC") \
+ V(_, NFKD_string, "NFKD") \
+ V(_, not_equal_string, "not-equal") \
+ V(_, null_string, "null") \
+ V(_, null_to_string, "[object Null]") \
+ V(_, Number_string, "Number") \
+ V(_, number_string, "number") \
+ V(_, number_to_string, "[object Number]") \
+ V(_, Object_string, "Object") \
+ V(_, object_string, "object") \
+ V(_, object_to_string, "[object Object]") \
+ V(_, of_string, "of") \
+ V(_, ok_string, "ok") \
+ V(_, one_string, "1") \
+ V(_, other_string, "other") \
+ V(_, ownKeys_string, "ownKeys") \
+ V(_, percent_string, "percent") \
+ V(_, position_string, "position") \
+ V(_, preventExtensions_string, "preventExtensions") \
+ V(_, private_constructor_string, "#constructor") \
+ V(_, Promise_string, "Promise") \
+ V(_, proto_string, "__proto__") \
+ V(_, prototype_string, "prototype") \
+ V(_, proxy_string, "proxy") \
+ V(_, Proxy_string, "Proxy") \
+ V(_, query_colon_string, "(?:)") \
+ V(_, RangeError_string, "RangeError") \
+ V(_, raw_string, "raw") \
+ V(_, ReferenceError_string, "ReferenceError") \
+ V(_, ReflectGet_string, "Reflect.get") \
+ V(_, ReflectHas_string, "Reflect.has") \
+ V(_, RegExp_string, "RegExp") \
+ V(_, regexp_to_string, "[object RegExp]") \
+ V(_, ResizableArrayBuffer_string, "ResizableArrayBuffer") \
+ V(_, resolve_string, "resolve") \
+ V(_, return_string, "return") \
+ V(_, revoke_string, "revoke") \
+ V(_, RuntimeError_string, "RuntimeError") \
+ V(_, Script_string, "Script") \
+ V(_, script_string, "script") \
+ V(_, short_string, "short") \
+ V(_, Set_string, "Set") \
+ V(_, sentence_string, "sentence") \
+ V(_, set_space_string, "set ") \
+ V(_, set_string, "set") \
+ V(_, SetIterator_string, "Set Iterator") \
+ V(_, setPrototypeOf_string, "setPrototypeOf") \
+ V(_, SharedArrayBuffer_string, "SharedArrayBuffer") \
+ V(_, source_string, "source") \
+ V(_, sourceText_string, "sourceText") \
+ V(_, stack_string, "stack") \
+ V(_, stackTraceLimit_string, "stackTraceLimit") \
+ V(_, sticky_string, "sticky") \
+ V(_, String_string, "String") \
+ V(_, string_string, "string") \
+ V(_, string_to_string, "[object String]") \
+ V(_, symbol_species_string, "[Symbol.species]") \
+ V(_, Symbol_string, "Symbol") \
+ V(_, symbol_string, "symbol") \
+ V(_, SyntaxError_string, "SyntaxError") \
+ V(_, target_string, "target") \
+ V(_, then_string, "then") \
+ V(_, this_function_string, ".this_function") \
+ V(_, this_string, "this") \
+ V(_, throw_string, "throw") \
+ V(_, timed_out_string, "timed-out") \
+ V(_, toJSON_string, "toJSON") \
+ V(_, toString_string, "toString") \
+ V(_, true_string, "true") \
+ V(_, total_string, "total") \
+ V(_, TypeError_string, "TypeError") \
+ V(_, Uint16Array_string, "Uint16Array") \
+ V(_, Uint32Array_string, "Uint32Array") \
+ V(_, Uint8Array_string, "Uint8Array") \
+ V(_, Uint8ClampedArray_string, "Uint8ClampedArray") \
+ V(_, undefined_string, "undefined") \
+ V(_, undefined_to_string, "[object Undefined]") \
+ V(_, unicode_string, "unicode") \
+ V(_, URIError_string, "URIError") \
+ V(_, value_string, "value") \
+ V(_, valueOf_string, "valueOf") \
+ V(_, WeakMap_string, "WeakMap") \
+ V(_, WeakRef_string, "WeakRef") \
+ V(_, WeakSet_string, "WeakSet") \
+ V(_, week_string, "week") \
+ V(_, word_string, "word") \
+ V(_, writable_string, "writable") \
V(_, zero_string, "0")
#define PRIVATE_SYMBOL_LIST_GENERATOR(V, _) \
@@ -349,6 +367,7 @@
V(_, error_start_pos_symbol) \
V(_, frozen_symbol) \
V(_, interpreter_trampoline_symbol) \
+ V(_, mega_dom_symbol) \
V(_, megamorphic_symbol) \
V(_, native_context_index_symbol) \
V(_, nonextensible_symbol) \
diff --git a/deps/v8/src/init/isolate-allocator.cc b/deps/v8/src/init/isolate-allocator.cc
index 5db27d288b..a479f1ab94 100644
--- a/deps/v8/src/init/isolate-allocator.cc
+++ b/deps/v8/src/init/isolate-allocator.cc
@@ -3,39 +3,18 @@
// found in the LICENSE file.
#include "src/init/isolate-allocator.h"
+
#include "src/base/bounded-page-allocator.h"
#include "src/common/ptr-compr.h"
#include "src/execution/isolate.h"
+#include "src/heap/code-range.h"
#include "src/utils/memcopy.h"
#include "src/utils/utils.h"
namespace v8 {
namespace internal {
-IsolateAllocator::IsolateAllocator() {
#ifdef V8_COMPRESS_POINTERS
- Address heap_reservation_address = InitReservation();
- CommitPagesForIsolate(heap_reservation_address);
-#else
- // Allocate Isolate in C++ heap.
- page_allocator_ = GetPlatformPageAllocator();
- isolate_memory_ = ::operator new(sizeof(Isolate));
- DCHECK(!reservation_.IsReserved());
-#endif // V8_COMPRESS_POINTERS
-}
-
-IsolateAllocator::~IsolateAllocator() {
- if (reservation_.IsReserved()) {
- // The actual memory will be freed when the |reservation_| will die.
- return;
- }
-
- // The memory was allocated in C++ heap.
- ::operator delete(isolate_memory_);
-}
-
-#ifdef V8_COMPRESS_POINTERS
-
namespace {
// "IsolateRootBiasPage" is an optional region before the 4Gb aligned
@@ -50,109 +29,125 @@ inline size_t GetIsolateRootBiasPageSize(
} // namespace
-Address IsolateAllocator::InitReservation() {
- v8::PageAllocator* platform_page_allocator = GetPlatformPageAllocator();
+struct PtrComprCageReservationParams
+ : public VirtualMemoryCage::ReservationParams {
+ PtrComprCageReservationParams() {
+ page_allocator = GetPlatformPageAllocator();
+
+ // This is only used when there is a per-Isolate cage, in which case the
+ // Isolate is allocated within the cage, and the Isolate root is also the
+ // cage base.
+ const size_t kIsolateRootBiasPageSize =
+ COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL
+ ? GetIsolateRootBiasPageSize(page_allocator)
+ : 0;
+ reservation_size = kPtrComprCageReservationSize + kIsolateRootBiasPageSize;
+ base_alignment = kPtrComprCageBaseAlignment;
+ base_bias_size = kIsolateRootBiasPageSize;
+
+ // Simplify BoundedPageAllocator's life by configuring it to use same page
+ // size as the Heap will use (MemoryChunk::kPageSize).
+ page_size =
+ RoundUp(size_t{1} << kPageSizeBits, page_allocator->AllocatePageSize());
+ requested_start_hint =
+ reinterpret_cast<Address>(page_allocator->GetRandomMmapAddr());
+ }
+};
+#endif // V8_COMPRESS_POINTERS
- const size_t kIsolateRootBiasPageSize =
- GetIsolateRootBiasPageSize(platform_page_allocator);
-
- // Reserve a |4Gb + kIsolateRootBiasPageSize| region such as that the
- // resevation address plus |kIsolateRootBiasPageSize| is 4Gb aligned.
- const size_t reservation_size =
- kPtrComprCageReservationSize + kIsolateRootBiasPageSize;
- const size_t base_alignment = kPtrComprCageBaseAlignment;
-
- const int kMaxAttempts = 4;
- for (int attempt = 0; attempt < kMaxAttempts; ++attempt) {
- Address hint = RoundDown(reinterpret_cast<Address>(
- platform_page_allocator->GetRandomMmapAddr()),
- base_alignment) -
- kIsolateRootBiasPageSize;
-
- // Within this reservation there will be a sub-region with proper alignment.
- VirtualMemory padded_reservation(platform_page_allocator,
- reservation_size * 2,
- reinterpret_cast<void*>(hint));
- if (!padded_reservation.IsReserved()) break;
-
- // Find properly aligned sub-region inside the reservation.
- Address address =
- RoundUp(padded_reservation.address() + kIsolateRootBiasPageSize,
- base_alignment) -
- kIsolateRootBiasPageSize;
- CHECK(padded_reservation.InVM(address, reservation_size));
-
-#if defined(V8_OS_FUCHSIA)
- // Fuchsia does not respect given hints so as a workaround we will use
- // overreserved address space region instead of trying to re-reserve
- // a subregion.
- bool overreserve = true;
-#else
- // For the last attempt use the overreserved region to avoid an OOM crash.
- // This case can happen if there are many isolates being created in
- // parallel that race for reserving the regions.
- bool overreserve = (attempt == kMaxAttempts - 1);
+#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+namespace {
+DEFINE_LAZY_LEAKY_OBJECT_GETTER(VirtualMemoryCage, GetProcessWidePtrComprCage)
+} // anonymous namespace
+
+// static
+void IsolateAllocator::FreeProcessWidePtrComprCageForTesting() {
+ if (std::shared_ptr<CodeRange> code_range =
+ CodeRange::GetProcessWideCodeRange()) {
+ code_range->Free();
+ }
+ GetProcessWidePtrComprCage()->Free();
+}
+#endif // V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+
+// static
+void IsolateAllocator::InitializeOncePerProcess() {
+#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+ PtrComprCageReservationParams params;
+ if (!GetProcessWidePtrComprCage()->InitReservation(params)) {
+ V8::FatalProcessOutOfMemory(
+ nullptr,
+ "Failed to reserve virtual memory for process-wide V8 "
+ "pointer compression cage");
+ }
#endif
+}
- if (overreserve) {
- if (padded_reservation.InVM(address, reservation_size)) {
- reservation_ = std::move(padded_reservation);
- return address;
- }
- } else {
- // Now free the padded reservation and immediately try to reserve an exact
- // region at aligned address. We have to do this dancing because the
- // reservation address requirement is more complex than just a certain
- // alignment and not all operating systems support freeing parts of
- // reserved address space regions.
- padded_reservation.Free();
-
- VirtualMemory reservation(platform_page_allocator, reservation_size,
- reinterpret_cast<void*>(address));
- if (!reservation.IsReserved()) break;
-
- // The reservation could still be somewhere else but we can accept it
- // if it has the required alignment.
- Address address =
- RoundUp(reservation.address() + kIsolateRootBiasPageSize,
- base_alignment) -
- kIsolateRootBiasPageSize;
-
- if (reservation.address() == address) {
- reservation_ = std::move(reservation);
- CHECK_EQ(reservation_.size(), reservation_size);
- return address;
- }
- }
+IsolateAllocator::IsolateAllocator() {
+#if defined(V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE)
+ PtrComprCageReservationParams params;
+ if (!isolate_ptr_compr_cage_.InitReservation(params)) {
+ V8::FatalProcessOutOfMemory(
+ nullptr,
+ "Failed to reserve memory for Isolate V8 pointer compression cage");
}
- V8::FatalProcessOutOfMemory(nullptr,
- "Failed to reserve memory for new V8 Isolate");
- return kNullAddress;
+ page_allocator_ = isolate_ptr_compr_cage_.page_allocator();
+ CommitPagesForIsolate();
+#elif defined(V8_COMPRESS_POINTERS_IN_SHARED_CAGE)
+ // Allocate Isolate in C++ heap when sharing a cage.
+ CHECK(GetProcessWidePtrComprCage()->IsReserved());
+ page_allocator_ = GetProcessWidePtrComprCage()->page_allocator();
+ isolate_memory_ = ::operator new(sizeof(Isolate));
+#else
+ // Allocate Isolate in C++ heap.
+ page_allocator_ = GetPlatformPageAllocator();
+ isolate_memory_ = ::operator new(sizeof(Isolate));
+#endif // V8_COMPRESS_POINTERS
+
+ CHECK_NOT_NULL(page_allocator_);
}
-void IsolateAllocator::CommitPagesForIsolate(Address heap_reservation_address) {
- v8::PageAllocator* platform_page_allocator = GetPlatformPageAllocator();
+IsolateAllocator::~IsolateAllocator() {
+#ifdef V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
+ if (isolate_ptr_compr_cage_.reservation()->IsReserved()) {
+ // The actual memory will be freed when the |isolate_ptr_compr_cage_| will
+ // die.
+ return;
+ }
+#endif
- const size_t kIsolateRootBiasPageSize =
- GetIsolateRootBiasPageSize(platform_page_allocator);
+ // The memory was allocated in C++ heap.
+ ::operator delete(isolate_memory_);
+}
- Address isolate_root = heap_reservation_address + kIsolateRootBiasPageSize;
- CHECK(IsAligned(isolate_root, kPtrComprCageBaseAlignment));
+VirtualMemoryCage* IsolateAllocator::GetPtrComprCage() {
+#if defined V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
+ return &isolate_ptr_compr_cage_;
+#elif defined V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+ return GetProcessWidePtrComprCage();
+#else
+ return nullptr;
+#endif
+}
- CHECK(reservation_.InVM(
- heap_reservation_address,
- kPtrComprCageReservationSize + kIsolateRootBiasPageSize));
+const VirtualMemoryCage* IsolateAllocator::GetPtrComprCage() const {
+ return const_cast<IsolateAllocator*>(this)->GetPtrComprCage();
+}
- // Simplify BoundedPageAllocator's life by configuring it to use same page
- // size as the Heap will use (MemoryChunk::kPageSize).
- size_t page_size = RoundUp(size_t{1} << kPageSizeBits,
- platform_page_allocator->AllocatePageSize());
+#ifdef V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
+void IsolateAllocator::CommitPagesForIsolate() {
+ v8::PageAllocator* platform_page_allocator = GetPlatformPageAllocator();
- page_allocator_instance_ = std::make_unique<base::BoundedPageAllocator>(
- platform_page_allocator, isolate_root, kPtrComprCageReservationSize,
- page_size);
- page_allocator_ = page_allocator_instance_.get();
+ CHECK(isolate_ptr_compr_cage_.IsReserved());
+ Address isolate_root = isolate_ptr_compr_cage_.base();
+ CHECK(IsAligned(isolate_root, kPtrComprCageBaseAlignment));
+ CHECK_GE(isolate_ptr_compr_cage_.reservation()->size(),
+ kPtrComprCageReservationSize +
+ GetIsolateRootBiasPageSize(platform_page_allocator));
+ CHECK(isolate_ptr_compr_cage_.reservation()->InVM(
+ isolate_root, kPtrComprCageReservationSize));
+ size_t page_size = page_allocator_->AllocatePageSize();
Address isolate_address = isolate_root - Isolate::isolate_root_bias();
Address isolate_end = isolate_address + sizeof(Isolate);
@@ -162,7 +157,7 @@ void IsolateAllocator::CommitPagesForIsolate(Address heap_reservation_address) {
size_t reserved_region_size =
RoundUp(isolate_end, page_size) - reserved_region_address;
- CHECK(page_allocator_instance_->AllocatePagesAt(
+ CHECK(isolate_ptr_compr_cage_.page_allocator()->AllocatePagesAt(
reserved_region_address, reserved_region_size,
PageAllocator::Permission::kNoAccess));
}
@@ -175,11 +170,12 @@ void IsolateAllocator::CommitPagesForIsolate(Address heap_reservation_address) {
size_t committed_region_size =
RoundUp(isolate_end, commit_page_size) - committed_region_address;
- // We are using |reservation_| directly here because |page_allocator_| has
- // bigger commit page size than we actually need.
- CHECK(reservation_.SetPermissions(committed_region_address,
- committed_region_size,
- PageAllocator::kReadWrite));
+ // We are using |isolate_ptr_compr_cage_.reservation()| directly here
+ // because |page_allocator_| has bigger commit page size than we actually
+ // need.
+ CHECK(isolate_ptr_compr_cage_.reservation()->SetPermissions(
+ committed_region_address, committed_region_size,
+ PageAllocator::kReadWrite));
if (Heap::ShouldZapGarbage()) {
MemsetPointer(reinterpret_cast<Address*>(committed_region_address),
@@ -188,7 +184,7 @@ void IsolateAllocator::CommitPagesForIsolate(Address heap_reservation_address) {
}
isolate_memory_ = reinterpret_cast<void*>(isolate_address);
}
-#endif // V8_COMPRESS_POINTERS
+#endif // V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/init/isolate-allocator.h b/deps/v8/src/init/isolate-allocator.h
index 9f894da159..2bf739ec49 100644
--- a/deps/v8/src/init/isolate-allocator.h
+++ b/deps/v8/src/init/isolate-allocator.h
@@ -7,26 +7,24 @@
#include <memory>
-#include "src/base/bounded-page-allocator.h"
#include "src/base/page-allocator.h"
#include "src/common/globals.h"
+#include "src/flags/flags.h"
#include "src/utils/allocation.h"
namespace v8 {
-
-// Forward declarations.
-namespace base {
-class BoundedPageAllocator;
-} // namespace base
-
namespace internal {
// IsolateAllocator object is responsible for allocating memory for one (!)
// Isolate object. Depending on the whether pointer compression is enabled,
// the memory can be allocated
-// 1) in the C++ heap (when pointer compression is disabled)
+//
+// 1) in the C++ heap (when pointer compression is disabled or when multiple
+// Isolates share a pointer compression cage)
+//
// 2) in a proper part of a properly aligned region of a reserved address space
-// (when pointer compression is enabled).
+// (when pointer compression is enabled and each Isolate has its own pointer
+// compression cage).
//
// Isolate::New() first creates IsolateAllocator object which allocates the
// memory and then it constructs Isolate object in this memory. Once it's done
@@ -44,15 +42,30 @@ class V8_EXPORT_PRIVATE IsolateAllocator final {
v8::PageAllocator* page_allocator() const { return page_allocator_; }
+ Address GetPtrComprCageBase() const {
+ return COMPRESS_POINTERS_BOOL ? GetPtrComprCage()->base() : kNullAddress;
+ }
+
+ // When pointer compression is on, return the pointer compression
+ // cage. Otherwise return nullptr.
+ VirtualMemoryCage* GetPtrComprCage();
+ const VirtualMemoryCage* GetPtrComprCage() const;
+
+ static void InitializeOncePerProcess();
+
private:
- Address InitReservation();
- void CommitPagesForIsolate(Address heap_reservation_address);
+ void CommitPagesForIsolate();
+
+ friend class SequentialUnmapperTest;
+ // Only used for testing.
+ static void FreeProcessWidePtrComprCageForTesting();
// The allocated memory for Isolate instance.
void* isolate_memory_ = nullptr;
v8::PageAllocator* page_allocator_ = nullptr;
- std::unique_ptr<base::BoundedPageAllocator> page_allocator_instance_;
- VirtualMemory reservation_;
+#ifdef V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
+ VirtualMemoryCage isolate_ptr_compr_cage_;
+#endif
};
} // namespace internal
diff --git a/deps/v8/src/init/v8.cc b/deps/v8/src/init/v8.cc
index fbf120b1b6..e14d02efbd 100644
--- a/deps/v8/src/init/v8.cc
+++ b/deps/v8/src/init/v8.cc
@@ -133,6 +133,26 @@ void V8::InitializeOncePerProcessImpl() {
}
#endif
+ // When fuzzing and concurrent compilation is enabled, disable Turbofan
+ // tracing flags since reading/printing heap state is not thread-safe and
+ // leads to false positives on TSAN bots.
+ // TODO(chromium:1205289): Teach relevant fuzzers to not pass TF tracing
+ // flags instead, and remove this section.
+ if (FLAG_fuzzing && FLAG_concurrent_recompilation) {
+ FLAG_trace_turbo = false;
+ FLAG_trace_turbo_graph = false;
+ FLAG_trace_turbo_scheduled = false;
+ FLAG_trace_turbo_reduction = false;
+ FLAG_trace_turbo_trimming = false;
+ FLAG_trace_turbo_jt = false;
+ FLAG_trace_turbo_ceq = false;
+ FLAG_trace_turbo_loop = false;
+ FLAG_trace_turbo_alloc = false;
+ FLAG_trace_all_uses = false;
+ FLAG_trace_representation = false;
+ FLAG_trace_turbo_stack_accesses = false;
+ }
+
if (FLAG_regexp_interpret_all && FLAG_regexp_tier_up) {
// Turning off the tier-up strategy, because the --regexp-interpret-all and
// --regexp-tier-up flags are incompatible.
@@ -151,6 +171,7 @@ void V8::InitializeOncePerProcessImpl() {
#if defined(V8_USE_PERFETTO)
if (perfetto::Tracing::IsInitialized()) TrackEvent::Register();
#endif
+ IsolateAllocator::InitializeOncePerProcess();
Isolate::InitializeOncePerProcess();
#if defined(USE_SIMULATOR)
@@ -163,6 +184,8 @@ void V8::InitializeOncePerProcessImpl() {
#if V8_ENABLE_WEBASSEMBLY
wasm::WasmEngine::InitializeOncePerProcess();
#endif // V8_ENABLE_WEBASSEMBLY
+
+ ExternalReferenceTable::InitializeOncePerProcess();
}
void V8::InitializeOncePerProcess() {
diff --git a/deps/v8/src/inspector/injected-script.cc b/deps/v8/src/inspector/injected-script.cc
index 992ff50fe7..fc029e937a 100644
--- a/deps/v8/src/inspector/injected-script.cc
+++ b/deps/v8/src/inspector/injected-script.cc
@@ -302,7 +302,8 @@ class InjectedScript::ProtocolPromiseHandler {
exceptionDetails->setStackTrace(
stack->buildInspectorObjectImpl(m_inspector->debugger()));
if (stack && !stack->isEmpty())
- exceptionDetails->setScriptId(toString16(stack->topScriptId()));
+ exceptionDetails->setScriptId(
+ String16::fromInteger(stack->topScriptId()));
callback->sendSuccess(std::move(wrappedValue), std::move(exceptionDetails));
}
diff --git a/deps/v8/src/inspector/injected-script.h b/deps/v8/src/inspector/injected-script.h
index 01d0ff0665..9971d7da3a 100644
--- a/deps/v8/src/inspector/injected-script.h
+++ b/deps/v8/src/inspector/injected-script.h
@@ -173,7 +173,8 @@ class InjectedScript final {
int m_sessionId;
};
- class ContextScope : public Scope {
+ class ContextScope : public Scope,
+ public V8InspectorSession::CommandLineAPIScope {
public:
ContextScope(V8InspectorSessionImpl*, int executionContextId);
~ContextScope() override;
diff --git a/deps/v8/src/inspector/string-16.h b/deps/v8/src/inspector/string-16.h
index 88a7584255..b38917185e 100644
--- a/deps/v8/src/inspector/string-16.h
+++ b/deps/v8/src/inspector/string-16.h
@@ -27,8 +27,8 @@ class String16 {
String16(const String16&) V8_NOEXCEPT = default;
String16(String16&&) V8_NOEXCEPT = default;
String16(const UChar* characters, size_t size);
- V8_EXPORT String16(const UChar* characters); // NOLINT(runtime/explicit)
- V8_EXPORT String16(const char* characters); // NOLINT(runtime/explicit)
+ V8_EXPORT String16(const UChar* characters);
+ V8_EXPORT String16(const char* characters);
String16(const char* characters, size_t size);
explicit String16(const std::basic_string<UChar>& impl);
explicit String16(std::basic_string<UChar>&& impl);
diff --git a/deps/v8/src/inspector/v8-console-message.cc b/deps/v8/src/inspector/v8-console-message.cc
index 58a37073a8..1b03a02c7b 100644
--- a/deps/v8/src/inspector/v8-console-message.cc
+++ b/deps/v8/src/inspector/v8-console-message.cc
@@ -152,7 +152,7 @@ class V8ValueStringBuilder {
bool append(v8::Local<v8::Symbol> symbol) {
m_builder.append("Symbol(");
- bool result = append(symbol->Description(), IgnoreUndefined);
+ bool result = append(symbol->Description(m_isolate), IgnoreUndefined);
m_builder.append(')');
return result;
}
diff --git a/deps/v8/src/inspector/v8-console.cc b/deps/v8/src/inspector/v8-console.cc
index cc464ebe04..afe790fb62 100644
--- a/deps/v8/src/inspector/v8-console.cc
+++ b/deps/v8/src/inspector/v8-console.cc
@@ -162,14 +162,9 @@ class ConsoleHelper {
int m_groupId;
};
-void returnDataCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
- info.GetReturnValue().Set(info.Data());
-}
-
void createBoundFunctionProperty(
v8::Local<v8::Context> context, v8::Local<v8::Object> console,
v8::Local<v8::Value> data, const char* name, v8::FunctionCallback callback,
- const char* description = nullptr,
v8::SideEffectType side_effect_type = v8::SideEffectType::kHasSideEffect) {
v8::Local<v8::String> funcName =
toV8StringInternalized(context->GetIsolate(), name);
@@ -179,18 +174,6 @@ void createBoundFunctionProperty(
.ToLocal(&func))
return;
func->SetName(funcName);
- if (description) {
- v8::Local<v8::String> returnValue =
- toV8String(context->GetIsolate(), description);
- v8::Local<v8::Function> toStringFunction;
- if (v8::Function::New(context, returnDataCallback, returnValue, 0,
- v8::ConstructorBehavior::kThrow,
- v8::SideEffectType::kHasNoSideEffect)
- .ToLocal(&toStringFunction))
- createDataProperty(context, func, toV8StringInternalized(
- context->GetIsolate(), "toString"),
- toStringFunction);
- }
createDataProperty(context, console, funcName, func);
}
@@ -498,11 +481,11 @@ void V8Console::valuesCallback(const v8::FunctionCallbackInfo<v8::Value>& info,
info.GetReturnValue().Set(values);
}
-static void setFunctionBreakpoint(
- ConsoleHelper& helper, // NOLINT(runtime/references)
- int sessionId, v8::Local<v8::Function> function,
- V8DebuggerAgentImpl::BreakpointSource source,
- v8::Local<v8::String> condition, bool enable) {
+static void setFunctionBreakpoint(ConsoleHelper& helper, int sessionId,
+ v8::Local<v8::Function> function,
+ V8DebuggerAgentImpl::BreakpointSource source,
+ v8::Local<v8::String> condition,
+ bool enable) {
V8InspectorSessionImpl* session = helper.session(sessionId);
if (session == nullptr) return;
if (!session->debuggerAgent()->enabled()) return;
@@ -557,8 +540,9 @@ void V8Console::monitorFunctionCallback(
else
builder.append(functionName);
builder.append(
- " called\" + (arguments.length > 0 ? \" with arguments: \" + "
- "Array.prototype.join.call(arguments, \", \") : \"\")) && false");
+ " called\" + (typeof arguments !== \"undefined\" && arguments.length > 0 "
+ "? \" with arguments: \" + Array.prototype.join.call(arguments, \", \") "
+ ": \"\")) && false");
setFunctionBreakpoint(helper, sessionId, function,
V8DebuggerAgentImpl::MonitorCommandBreakpointSource,
toV8String(info.GetIsolate(), builder.toString()),
@@ -696,80 +680,62 @@ v8::Local<v8::Object> V8Console::createCommandLineAPI(
*static_cast<CommandLineAPIData*>(data->GetBackingStore()->Data()) =
CommandLineAPIData(this, sessionId);
createBoundFunctionProperty(context, commandLineAPI, data, "dir",
- &V8Console::call<&V8Console::Dir>,
- "function dir(value) { [Command Line API] }");
+ &V8Console::call<&V8Console::Dir>);
createBoundFunctionProperty(context, commandLineAPI, data, "dirxml",
- &V8Console::call<&V8Console::DirXml>,
- "function dirxml(value) { [Command Line API] }");
+ &V8Console::call<&V8Console::DirXml>);
createBoundFunctionProperty(context, commandLineAPI, data, "profile",
- &V8Console::call<&V8Console::Profile>,
- "function profile(title) { [Command Line API] }");
- createBoundFunctionProperty(
- context, commandLineAPI, data, "profileEnd",
- &V8Console::call<&V8Console::ProfileEnd>,
- "function profileEnd(title) { [Command Line API] }");
+ &V8Console::call<&V8Console::Profile>);
+ createBoundFunctionProperty(context, commandLineAPI, data, "profileEnd",
+ &V8Console::call<&V8Console::ProfileEnd>);
createBoundFunctionProperty(context, commandLineAPI, data, "clear",
- &V8Console::call<&V8Console::Clear>,
- "function clear() { [Command Line API] }");
- createBoundFunctionProperty(
- context, commandLineAPI, data, "table",
- &V8Console::call<&V8Console::Table>,
- "function table(data, [columns]) { [Command Line API] }");
+ &V8Console::call<&V8Console::Clear>);
+ createBoundFunctionProperty(context, commandLineAPI, data, "table",
+ &V8Console::call<&V8Console::Table>);
createBoundFunctionProperty(context, commandLineAPI, data, "keys",
&V8Console::call<&V8Console::keysCallback>,
- "function keys(object) { [Command Line API] }",
v8::SideEffectType::kHasNoSideEffect);
createBoundFunctionProperty(context, commandLineAPI, data, "values",
&V8Console::call<&V8Console::valuesCallback>,
- "function values(object) { [Command Line API] }",
v8::SideEffectType::kHasNoSideEffect);
createBoundFunctionProperty(
context, commandLineAPI, data, "debug",
- &V8Console::call<&V8Console::debugFunctionCallback>,
- "function debug(function, condition) { [Command Line API] }");
+ &V8Console::call<&V8Console::debugFunctionCallback>);
createBoundFunctionProperty(
context, commandLineAPI, data, "undebug",
- &V8Console::call<&V8Console::undebugFunctionCallback>,
- "function undebug(function) { [Command Line API] }");
+ &V8Console::call<&V8Console::undebugFunctionCallback>);
createBoundFunctionProperty(
context, commandLineAPI, data, "monitor",
- &V8Console::call<&V8Console::monitorFunctionCallback>,
- "function monitor(function) { [Command Line API] }");
+ &V8Console::call<&V8Console::monitorFunctionCallback>);
createBoundFunctionProperty(
context, commandLineAPI, data, "unmonitor",
- &V8Console::call<&V8Console::unmonitorFunctionCallback>,
- "function unmonitor(function) { [Command Line API] }");
- createBoundFunctionProperty(
- context, commandLineAPI, data, "inspect",
- &V8Console::call<&V8Console::inspectCallback>,
- "function inspect(object) { [Command Line API] }");
+ &V8Console::call<&V8Console::unmonitorFunctionCallback>);
+ createBoundFunctionProperty(context, commandLineAPI, data, "inspect",
+ &V8Console::call<&V8Console::inspectCallback>);
createBoundFunctionProperty(context, commandLineAPI, data, "copy",
- &V8Console::call<&V8Console::copyCallback>,
- "function copy(value) { [Command Line API] }");
+ &V8Console::call<&V8Console::copyCallback>);
createBoundFunctionProperty(
context, commandLineAPI, data, "queryObjects",
- &V8Console::call<&V8Console::queryObjectsCallback>,
- "function queryObjects(constructor) { [Command Line API] }");
+ &V8Console::call<&V8Console::queryObjectsCallback>);
createBoundFunctionProperty(
context, commandLineAPI, data, "$_",
- &V8Console::call<&V8Console::lastEvaluationResultCallback>, nullptr,
+ &V8Console::call<&V8Console::lastEvaluationResultCallback>,
v8::SideEffectType::kHasNoSideEffect);
createBoundFunctionProperty(context, commandLineAPI, data, "$0",
&V8Console::call<&V8Console::inspectedObject0>,
- nullptr, v8::SideEffectType::kHasNoSideEffect);
+ v8::SideEffectType::kHasNoSideEffect);
createBoundFunctionProperty(context, commandLineAPI, data, "$1",
&V8Console::call<&V8Console::inspectedObject1>,
- nullptr, v8::SideEffectType::kHasNoSideEffect);
+ v8::SideEffectType::kHasNoSideEffect);
createBoundFunctionProperty(context, commandLineAPI, data, "$2",
&V8Console::call<&V8Console::inspectedObject2>,
- nullptr, v8::SideEffectType::kHasNoSideEffect);
+ v8::SideEffectType::kHasNoSideEffect);
createBoundFunctionProperty(context, commandLineAPI, data, "$3",
&V8Console::call<&V8Console::inspectedObject3>,
- nullptr, v8::SideEffectType::kHasNoSideEffect);
+ v8::SideEffectType::kHasNoSideEffect);
createBoundFunctionProperty(context, commandLineAPI, data, "$4",
&V8Console::call<&V8Console::inspectedObject4>,
- nullptr, v8::SideEffectType::kHasNoSideEffect);
+ v8::SideEffectType::kHasNoSideEffect);
m_inspector->client()->installAdditionalCommandLineAPI(context,
commandLineAPI);
diff --git a/deps/v8/src/inspector/v8-debugger-agent-impl.cc b/deps/v8/src/inspector/v8-debugger-agent-impl.cc
index f99d57d33e..6b54e192a5 100644
--- a/deps/v8/src/inspector/v8-debugger-agent-impl.cc
+++ b/deps/v8/src/inspector/v8-debugger-agent-impl.cc
@@ -1042,23 +1042,7 @@ Response V8DebuggerAgentImpl::restartFrame(
std::unique_ptr<Array<CallFrame>>* newCallFrames,
Maybe<protocol::Runtime::StackTrace>* asyncStackTrace,
Maybe<protocol::Runtime::StackTraceId>* asyncStackTraceId) {
- if (!isPaused()) return Response::ServerError(kDebuggerNotPaused);
- InjectedScript::CallFrameScope scope(m_session, callFrameId);
- Response response = scope.initialize();
- if (!response.IsSuccess()) return response;
- int frameOrdinal = static_cast<int>(scope.frameOrdinal());
- auto it = v8::debug::StackTraceIterator::Create(m_isolate, frameOrdinal);
- if (it->Done()) {
- return Response::ServerError("Could not find call frame with given id");
- }
- if (!it->Restart()) {
- return Response::InternalError();
- }
- response = currentCallFrames(newCallFrames);
- if (!response.IsSuccess()) return response;
- *asyncStackTrace = currentAsyncStackTrace();
- *asyncStackTraceId = currentExternalStackTrace();
- return Response::Success();
+ return Response::ServerError("Frame restarting not supported");
}
Response V8DebuggerAgentImpl::getScriptSource(
diff --git a/deps/v8/src/inspector/v8-debugger.cc b/deps/v8/src/inspector/v8-debugger.cc
index 9f035b578e..6887657239 100644
--- a/deps/v8/src/inspector/v8-debugger.cc
+++ b/deps/v8/src/inspector/v8-debugger.cc
@@ -24,7 +24,7 @@ static const int kMaxAsyncTaskStacks = 128 * 1024;
static const int kNoBreakpointId = 0;
template <typename Map>
-void cleanupExpiredWeakPointers(Map& map) { // NOLINT(runtime/references)
+void cleanupExpiredWeakPointers(Map& map) {
for (auto it = map.begin(); it != map.end();) {
if (it->second.expired()) {
it = map.erase(it);
diff --git a/deps/v8/src/inspector/v8-heap-profiler-agent-impl.cc b/deps/v8/src/inspector/v8-heap-profiler-agent-impl.cc
index 6472c5ca94..b441be565c 100644
--- a/deps/v8/src/inspector/v8-heap-profiler-agent-impl.cc
+++ b/deps/v8/src/inspector/v8-heap-profiler-agent-impl.cc
@@ -232,10 +232,12 @@ Response V8HeapProfilerAgentImpl::startTrackingHeapObjects(
}
Response V8HeapProfilerAgentImpl::stopTrackingHeapObjects(
- Maybe<bool> reportProgress, Maybe<bool> treatGlobalObjectsAsRoots) {
+ Maybe<bool> reportProgress, Maybe<bool> treatGlobalObjectsAsRoots,
+ Maybe<bool> captureNumericValue) {
requestHeapStatsUpdate();
takeHeapSnapshot(std::move(reportProgress),
- std::move(treatGlobalObjectsAsRoots));
+ std::move(treatGlobalObjectsAsRoots),
+ std::move(captureNumericValue));
stopTrackingHeapObjectsInternal();
return Response::Success();
}
@@ -258,7 +260,8 @@ Response V8HeapProfilerAgentImpl::disable() {
}
Response V8HeapProfilerAgentImpl::takeHeapSnapshot(
- Maybe<bool> reportProgress, Maybe<bool> treatGlobalObjectsAsRoots) {
+ Maybe<bool> reportProgress, Maybe<bool> treatGlobalObjectsAsRoots,
+ Maybe<bool> captureNumericValue) {
v8::HeapProfiler* profiler = m_isolate->GetHeapProfiler();
if (!profiler) return Response::ServerError("Cannot access v8 heap profiler");
std::unique_ptr<HeapSnapshotProgress> progress;
@@ -267,7 +270,8 @@ Response V8HeapProfilerAgentImpl::takeHeapSnapshot(
GlobalObjectNameResolver resolver(m_session);
const v8::HeapSnapshot* snapshot = profiler->TakeHeapSnapshot(
- progress.get(), &resolver, treatGlobalObjectsAsRoots.fromMaybe(true));
+ progress.get(), &resolver, treatGlobalObjectsAsRoots.fromMaybe(true),
+ captureNumericValue.fromMaybe(false));
if (!snapshot) return Response::ServerError("Failed to take heap snapshot");
HeapSnapshotOutputStream stream(&m_frontend);
snapshot->Serialize(&stream);
@@ -375,6 +379,9 @@ Response V8HeapProfilerAgentImpl::startSampling(
const unsigned defaultSamplingInterval = 1 << 15;
double samplingIntervalValue =
samplingInterval.fromMaybe(defaultSamplingInterval);
+ if (samplingIntervalValue <= 0.0) {
+ return Response::ServerError("Invalid sampling interval");
+ }
m_state->setDouble(HeapProfilerAgentState::samplingHeapProfilerInterval,
samplingIntervalValue);
m_state->setBoolean(HeapProfilerAgentState::samplingHeapProfilerEnabled,
diff --git a/deps/v8/src/inspector/v8-heap-profiler-agent-impl.h b/deps/v8/src/inspector/v8-heap-profiler-agent-impl.h
index b9babdb989..feda75ffb7 100644
--- a/deps/v8/src/inspector/v8-heap-profiler-agent-impl.h
+++ b/deps/v8/src/inspector/v8-heap-profiler-agent-impl.h
@@ -34,14 +34,15 @@ class V8HeapProfilerAgentImpl : public protocol::HeapProfiler::Backend {
Response enable() override;
Response startTrackingHeapObjects(Maybe<bool> trackAllocations) override;
- Response stopTrackingHeapObjects(
- Maybe<bool> reportProgress,
- Maybe<bool> treatGlobalObjectsAsRoots) override;
+ Response stopTrackingHeapObjects(Maybe<bool> reportProgress,
+ Maybe<bool> treatGlobalObjectsAsRoots,
+ Maybe<bool> captureNumericValue) override;
Response disable() override;
Response takeHeapSnapshot(Maybe<bool> reportProgress,
- Maybe<bool> treatGlobalObjectsAsRoots) override;
+ Maybe<bool> treatGlobalObjectsAsRoots,
+ Maybe<bool> captureNumericValue) override;
Response getObjectByHeapObjectId(
const String16& heapSnapshotObjectId, Maybe<String16> objectGroup,
diff --git a/deps/v8/src/inspector/v8-inspector-session-impl.cc b/deps/v8/src/inspector/v8-inspector-session-impl.cc
index 02b694a1a9..b926ddfbba 100644
--- a/deps/v8/src/inspector/v8-inspector-session-impl.cc
+++ b/deps/v8/src/inspector/v8-inspector-session-impl.cc
@@ -155,6 +155,20 @@ V8InspectorSessionImpl::~V8InspectorSessionImpl() {
m_inspector->disconnect(this);
}
+std::unique_ptr<V8InspectorSession::CommandLineAPIScope>
+V8InspectorSessionImpl::initializeCommandLineAPIScope(int executionContextId) {
+ auto scope =
+ std::make_unique<InjectedScript::ContextScope>(this, executionContextId);
+ auto result = scope->initialize();
+ if (!result.IsSuccess()) {
+ return nullptr;
+ }
+
+ scope->installCommandLineAPI();
+
+ return scope;
+}
+
protocol::DictionaryValue* V8InspectorSessionImpl::agentState(
const String16& name) {
protocol::DictionaryValue* state = m_state->getObject(name);
diff --git a/deps/v8/src/inspector/v8-inspector-session-impl.h b/deps/v8/src/inspector/v8-inspector-session-impl.h
index db530385aa..115c15c5fa 100644
--- a/deps/v8/src/inspector/v8-inspector-session-impl.h
+++ b/deps/v8/src/inspector/v8-inspector-session-impl.h
@@ -50,6 +50,9 @@ class V8InspectorSessionImpl : public V8InspectorSession,
int contextGroupId() const { return m_contextGroupId; }
int sessionId() const { return m_sessionId; }
+ std::unique_ptr<V8InspectorSession::CommandLineAPIScope>
+ initializeCommandLineAPIScope(int executionContextId) override;
+
Response findInjectedScript(int contextId, InjectedScript*&);
Response findInjectedScript(RemoteObjectIdBase*, InjectedScript*&);
void reset();
diff --git a/deps/v8/src/inspector/v8-profiler-agent-impl.cc b/deps/v8/src/inspector/v8-profiler-agent-impl.cc
index 47be944879..8ebee1fd21 100644
--- a/deps/v8/src/inspector/v8-profiler-agent-impl.cc
+++ b/deps/v8/src/inspector/v8-profiler-agent-impl.cc
@@ -150,10 +150,11 @@ std::unique_ptr<protocol::Debugger::Location> currentDebugLocation(
V8InspectorImpl* inspector) {
std::unique_ptr<V8StackTraceImpl> callStack =
inspector->debugger()->captureStackTrace(false /* fullStack */);
- auto location = protocol::Debugger::Location::create()
- .setScriptId(toString16(callStack->topScriptId()))
- .setLineNumber(callStack->topLineNumber())
- .build();
+ auto location =
+ protocol::Debugger::Location::create()
+ .setScriptId(String16::fromInteger(callStack->topScriptId()))
+ .setLineNumber(callStack->topLineNumber())
+ .build();
location->setColumnNumber(callStack->topColumnNumber());
return location;
}
diff --git a/deps/v8/src/inspector/v8-runtime-agent-impl.cc b/deps/v8/src/inspector/v8-runtime-agent-impl.cc
index 6fee3b3b05..97fc07a6bf 100644
--- a/deps/v8/src/inspector/v8-runtime-agent-impl.cc
+++ b/deps/v8/src/inspector/v8-runtime-agent-impl.cc
@@ -109,8 +109,7 @@ bool wrapEvaluateResultAsync(InjectedScript* injectedScript,
}
void innerCallFunctionOn(
- V8InspectorSessionImpl* session,
- InjectedScript::Scope& scope, // NOLINT(runtime/references)
+ V8InspectorSessionImpl* session, InjectedScript::Scope& scope,
v8::Local<v8::Value> recv, const String16& expression,
Maybe<protocol::Array<protocol::Runtime::CallArgument>> optionalArguments,
bool silent, WrapMode wrapMode, bool userGesture, bool awaitPromise,
@@ -694,7 +693,6 @@ protocol::DictionaryValue* getOrCreateDictionary(
Response V8RuntimeAgentImpl::addBinding(const String16& name,
Maybe<int> executionContextId,
Maybe<String16> executionContextName) {
- if (m_activeBindings.count(name)) return Response::Success();
if (executionContextId.isJust()) {
if (executionContextName.isJust()) {
return Response::InvalidParams(
@@ -743,8 +741,8 @@ void V8RuntimeAgentImpl::bindingCallback(
const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
if (info.Length() != 1 || !info[0]->IsString()) {
- info.GetIsolate()->ThrowException(toV8String(
- isolate, "Invalid arguments: should be exactly one string."));
+ info.GetIsolate()->ThrowError(
+ "Invalid arguments: should be exactly one string.");
return;
}
V8InspectorImpl* inspector =
@@ -764,6 +762,10 @@ void V8RuntimeAgentImpl::bindingCallback(
void V8RuntimeAgentImpl::addBinding(InspectedContext* context,
const String16& name) {
+ auto it = m_activeBindings.find(name);
+ if (it != m_activeBindings.end() && it->second.count(context->contextId())) {
+ return;
+ }
v8::HandleScope handles(m_inspector->isolate());
v8::Local<v8::Context> localContext = context->context();
v8::Local<v8::Object> global = localContext->Global();
@@ -775,7 +777,12 @@ void V8RuntimeAgentImpl::addBinding(InspectedContext* context,
.ToLocal(&functionValue)) {
v8::Maybe<bool> success = global->Set(localContext, v8Name, functionValue);
USE(success);
- m_activeBindings.insert(name);
+ if (it == m_activeBindings.end()) {
+ m_activeBindings.emplace(name,
+ std::unordered_set<int>(context->contextId()));
+ } else {
+ m_activeBindings.at(name).insert(context->contextId());
+ }
}
}
diff --git a/deps/v8/src/inspector/v8-runtime-agent-impl.h b/deps/v8/src/inspector/v8-runtime-agent-impl.h
index 5ac1e462f8..4694adae27 100644
--- a/deps/v8/src/inspector/v8-runtime-agent-impl.h
+++ b/deps/v8/src/inspector/v8-runtime-agent-impl.h
@@ -148,7 +148,8 @@ class V8RuntimeAgentImpl : public protocol::Runtime::Backend {
bool m_enabled;
std::unordered_map<String16, std::unique_ptr<v8::Global<v8::Script>>>
m_compiledScripts;
- std::set<String16> m_activeBindings;
+ // Binding name -> executionContextIds mapping.
+ std::unordered_map<String16, std::unordered_set<int>> m_activeBindings;
};
} // namespace v8_inspector
diff --git a/deps/v8/src/inspector/v8-stack-trace-impl.cc b/deps/v8/src/inspector/v8-stack-trace-impl.cc
index 86bedc07ec..3506c92996 100644
--- a/deps/v8/src/inspector/v8-stack-trace-impl.cc
+++ b/deps/v8/src/inspector/v8-stack-trace-impl.cc
@@ -7,6 +7,7 @@
#include <algorithm>
#include "../../third_party/inspector_protocol/crdtp/json.h"
+#include "src/debug/debug-interface.h"
#include "src/inspector/v8-debugger.h"
#include "src/inspector/v8-inspector-impl.h"
#include "src/tracing/trace-event.h"
@@ -175,9 +176,9 @@ std::unique_ptr<StringBuffer> V8StackTraceId::ToString() {
}
StackFrame::StackFrame(v8::Isolate* isolate, v8::Local<v8::StackFrame> v8Frame)
- : m_functionName(toProtocolString(isolate, v8Frame->GetFunctionName())),
+ : m_functionName(
+ toProtocolString(isolate, v8::debug::GetFunctionDebugName(v8Frame))),
m_scriptId(v8Frame->GetScriptId()),
- m_scriptIdAsString(String16::fromInteger(v8Frame->GetScriptId())),
m_sourceURL(
toProtocolString(isolate, v8Frame->GetScriptNameOrSourceURL())),
m_lineNumber(v8Frame->GetLineNumber() - 1),
@@ -192,10 +193,6 @@ const String16& StackFrame::functionName() const { return m_functionName; }
int StackFrame::scriptId() const { return m_scriptId; }
-const String16& StackFrame::scriptIdAsString() const {
- return m_scriptIdAsString;
-}
-
const String16& StackFrame::sourceURL() const { return m_sourceURL; }
int StackFrame::lineNumber() const { return m_lineNumber; }
@@ -324,13 +321,7 @@ int V8StackTraceImpl::topColumnNumber() const {
return m_frames[0]->columnNumber() + 1;
}
-StringView V8StackTraceImpl::topScriptId() const {
- return toStringView(m_frames[0]->scriptIdAsString());
-}
-
-int V8StackTraceImpl::topScriptIdAsInteger() const {
- return m_frames[0]->scriptId();
-}
+int V8StackTraceImpl::topScriptId() const { return m_frames[0]->scriptId(); }
StringView V8StackTraceImpl::topFunctionName() const {
return toStringView(m_frames[0]->functionName());
diff --git a/deps/v8/src/inspector/v8-stack-trace-impl.h b/deps/v8/src/inspector/v8-stack-trace-impl.h
index 3896c7371c..065d5ce47c 100644
--- a/deps/v8/src/inspector/v8-stack-trace-impl.h
+++ b/deps/v8/src/inspector/v8-stack-trace-impl.h
@@ -27,7 +27,6 @@ class StackFrame {
const String16& functionName() const;
int scriptId() const;
- const String16& scriptIdAsString() const;
const String16& sourceURL() const;
int lineNumber() const; // 0-based.
int columnNumber() const; // 0-based.
@@ -38,7 +37,6 @@ class StackFrame {
private:
String16 m_functionName;
int m_scriptId;
- String16 m_scriptIdAsString;
String16 m_sourceURL;
int m_lineNumber; // 0-based.
int m_columnNumber; // 0-based.
@@ -75,8 +73,7 @@ class V8StackTraceImpl : public V8StackTrace {
StringView topSourceURL() const override;
int topLineNumber() const override; // 1-based.
int topColumnNumber() const override; // 1-based.
- StringView topScriptId() const override;
- int topScriptIdAsInteger() const override;
+ int topScriptId() const override;
StringView topFunctionName() const override;
std::unique_ptr<protocol::Runtime::API::StackTrace> buildInspectorObject()
const override;
diff --git a/deps/v8/src/inspector/v8-string-conversions.cc b/deps/v8/src/inspector/v8-string-conversions.cc
index 4ccf6351fb..0c75e66b97 100644
--- a/deps/v8/src/inspector/v8-string-conversions.cc
+++ b/deps/v8/src/inspector/v8-string-conversions.cc
@@ -228,9 +228,7 @@ static const UChar32 offsetsFromUTF8[6] = {0x00000000UL,
static_cast<UChar32>(0xFA082080UL),
static_cast<UChar32>(0x82082080UL)};
-static inline UChar32 readUTF8Sequence(
- const char*& sequence, // NOLINT(runtime/references)
- size_t length) {
+static inline UChar32 readUTF8Sequence(const char*& sequence, size_t length) {
UChar32 character = 0;
// The cases all fall through.
@@ -336,8 +334,7 @@ ConversionResult convertUTF8ToUTF16(const char** sourceStart,
// Helper to write a three-byte UTF-8 code point to the buffer, caller must
// check room is available.
-static inline void putUTF8Triple(char*& buffer, // NOLINT(runtime/references)
- UChar ch) {
+static inline void putUTF8Triple(char*& buffer, UChar ch) {
*buffer++ = static_cast<char>(((ch >> 12) & 0x0F) | 0xE0);
*buffer++ = static_cast<char>(((ch >> 6) & 0x3F) | 0x80);
*buffer++ = static_cast<char>((ch & 0x3F) | 0x80);
diff --git a/deps/v8/src/inspector/value-mirror.cc b/deps/v8/src/inspector/value-mirror.cc
index 18d870a94a..5348b76a12 100644
--- a/deps/v8/src/inspector/value-mirror.cc
+++ b/deps/v8/src/inspector/value-mirror.cc
@@ -165,10 +165,11 @@ String16 abbreviateString(const String16& value, AbbreviateMode mode) {
String16 descriptionForSymbol(v8::Local<v8::Context> context,
v8::Local<v8::Symbol> symbol) {
- return String16::concat("Symbol(",
- toProtocolStringWithTypeCheck(context->GetIsolate(),
- symbol->Description()),
- ")");
+ v8::Isolate* isolate = context->GetIsolate();
+ return String16::concat(
+ "Symbol(",
+ toProtocolStringWithTypeCheck(isolate, symbol->Description(isolate)),
+ ")");
}
String16 descriptionForBigInt(v8::Local<v8::Context> context,
@@ -194,21 +195,19 @@ String16 descriptionForPrimitiveType(v8::Local<v8::Context> context,
return String16();
}
-String16 descriptionForRegExp(v8::Isolate* isolate,
+String16 descriptionForObject(v8::Isolate* isolate,
+ v8::Local<v8::Object> object) {
+ return toProtocolString(isolate, object->GetConstructorName());
+}
+
+String16 descriptionForRegExp(v8::Local<v8::Context> context,
v8::Local<v8::RegExp> value) {
- String16Builder description;
- description.append('/');
- description.append(toProtocolString(isolate, value->GetSource()));
- description.append('/');
- v8::RegExp::Flags flags = value->GetFlags();
- if (flags & v8::RegExp::Flags::kGlobal) description.append('g');
- if (flags & v8::RegExp::Flags::kIgnoreCase) description.append('i');
- if (flags & v8::RegExp::Flags::kLinear) description.append('l');
- if (flags & v8::RegExp::Flags::kMultiline) description.append('m');
- if (flags & v8::RegExp::Flags::kDotAll) description.append('s');
- if (flags & v8::RegExp::Flags::kUnicode) description.append('u');
- if (flags & v8::RegExp::Flags::kSticky) description.append('y');
- return description.toString();
+ v8::Isolate* isolate = context->GetIsolate();
+ v8::Local<v8::String> description;
+ if (!value->ToString(context).ToLocal(&description)) {
+ return descriptionForObject(isolate, value);
+ }
+ return toProtocolString(isolate, description);
}
enum class ErrorType { kNative, kClient };
@@ -266,11 +265,6 @@ String16 descriptionForError(v8::Local<v8::Context> context,
return description + stackWithoutMessage;
}
-String16 descriptionForObject(v8::Isolate* isolate,
- v8::Local<v8::Object> object) {
- return toProtocolString(isolate, object->GetConstructorName());
-}
-
String16 descriptionForDate(v8::Local<v8::Context> context,
v8::Local<v8::Date> date) {
v8::Isolate* isolate = context->GetIsolate();
@@ -355,14 +349,9 @@ String16 descriptionForEntry(v8::Local<v8::Context> context,
return key.length() ? ("{" + key + " => " + value + "}") : value;
}
-String16 descriptionForFunction(v8::Local<v8::Context> context,
- v8::Local<v8::Function> value) {
- v8::Isolate* isolate = context->GetIsolate();
- v8::TryCatch tryCatch(isolate);
- v8::Local<v8::String> description;
- if (!value->ToString(context).ToLocal(&description)) {
- return descriptionForObject(isolate, value);
- }
+String16 descriptionForFunction(v8::Local<v8::Function> value) {
+ v8::Isolate* isolate = value->GetIsolate();
+ v8::Local<v8::String> description = v8::debug::GetFunctionDescription(value);
return toProtocolString(isolate, description);
}
@@ -652,7 +641,7 @@ class FunctionMirror final : public ValueMirror {
.setType(RemoteObject::TypeEnum::Function)
.setClassName(toProtocolStringWithTypeCheck(
context->GetIsolate(), m_value->GetConstructorName()))
- .setDescription(descriptionForFunction(context, m_value))
+ .setDescription(descriptionForFunction(m_value))
.build();
}
return Response::Success();
@@ -673,7 +662,7 @@ class FunctionMirror final : public ValueMirror {
*preview =
ObjectPreview::create()
.setType(RemoteObject::TypeEnum::Function)
- .setDescription(descriptionForFunction(context, m_value))
+ .setDescription(descriptionForFunction(m_value))
.setOverflow(false)
.setProperties(std::make_unique<protocol::Array<PropertyPreview>>())
.build();
@@ -1216,7 +1205,6 @@ bool ValueMirror::getProperties(v8::Local<v8::Context> context,
return false;
}
}
- bool shouldSkipProto = internalType == V8InternalValueType::kScopeList;
bool formatAccessorsAsProperties =
clientFor(context)->formatAccessorsAsProperties(object);
@@ -1321,7 +1309,6 @@ bool ValueMirror::getProperties(v8::Local<v8::Context> context,
}
}
if (accessorPropertiesOnly && !isAccessorProperty) continue;
- if (name == "__proto__") shouldSkipProto = true;
auto mirror = PropertyMirror{name,
writable,
configurable,
@@ -1340,16 +1327,6 @@ bool ValueMirror::getProperties(v8::Local<v8::Context> context,
return false;
}
}
- if (!shouldSkipProto && ownProperties && !object->IsProxy() &&
- !accessorPropertiesOnly) {
- v8::Local<v8::Value> prototype = object->GetPrototype();
- if (prototype->IsObject()) {
- accumulator->Add(PropertyMirror{String16("__proto__"), true, true, false,
- true, false,
- ValueMirror::create(context, prototype),
- nullptr, nullptr, nullptr, nullptr});
- }
- }
return true;
}
@@ -1615,7 +1592,7 @@ std::unique_ptr<ValueMirror> ValueMirror::create(v8::Local<v8::Context> context,
if (value->IsRegExp()) {
return std::make_unique<ObjectMirror>(
value, RemoteObject::SubtypeEnum::Regexp,
- descriptionForRegExp(isolate, value.As<v8::RegExp>()));
+ descriptionForRegExp(context, value.As<v8::RegExp>()));
}
if (value->IsProxy()) {
return std::make_unique<ObjectMirror>(
diff --git a/deps/v8/src/interpreter/bytecode-array-builder.cc b/deps/v8/src/interpreter/bytecode-array-builder.cc
index 63c07683e6..23c622b033 100644
--- a/deps/v8/src/interpreter/bytecode-array-builder.cc
+++ b/deps/v8/src/interpreter/bytecode-array-builder.cc
@@ -81,9 +81,8 @@ Register BytecodeArrayBuilder::Local(int index) const {
return Register(index);
}
-template <typename LocalIsolate>
-Handle<BytecodeArray> BytecodeArrayBuilder::ToBytecodeArray(
- LocalIsolate* isolate) {
+template <typename IsolateT>
+Handle<BytecodeArray> BytecodeArrayBuilder::ToBytecodeArray(IsolateT* isolate) {
DCHECK(RemainderOfBlockIsDead());
DCHECK(!bytecode_generated_);
bytecode_generated_ = true;
@@ -115,9 +114,9 @@ int BytecodeArrayBuilder::CheckBytecodeMatches(BytecodeArray bytecode) {
}
#endif
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<ByteArray> BytecodeArrayBuilder::ToSourcePositionTable(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
DCHECK(RemainderOfBlockIsDead());
return bytecode_array_writer_.ToSourcePositionTable(isolate);
@@ -726,11 +725,13 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadGlobal(const AstRawString* name,
DCHECK_EQ(GetTypeofModeFromSlotKind(feedback_vector_spec()->GetKind(
FeedbackVector::ToSlot(feedback_slot))),
typeof_mode);
- if (typeof_mode == INSIDE_TYPEOF) {
- OutputLdaGlobalInsideTypeof(name_index, feedback_slot);
- } else {
- DCHECK_EQ(typeof_mode, NOT_INSIDE_TYPEOF);
- OutputLdaGlobal(name_index, feedback_slot);
+ switch (typeof_mode) {
+ case TypeofMode::kInside:
+ OutputLdaGlobalInsideTypeof(name_index, feedback_slot);
+ break;
+ case TypeofMode::kNotInside:
+ OutputLdaGlobal(name_index, feedback_slot);
+ break;
}
return *this;
}
@@ -775,11 +776,13 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreContextSlot(Register context,
BytecodeArrayBuilder& BytecodeArrayBuilder::LoadLookupSlot(
const AstRawString* name, TypeofMode typeof_mode) {
size_t name_index = GetConstantPoolEntry(name);
- if (typeof_mode == INSIDE_TYPEOF) {
- OutputLdaLookupSlotInsideTypeof(name_index);
- } else {
- DCHECK_EQ(typeof_mode, NOT_INSIDE_TYPEOF);
- OutputLdaLookupSlot(name_index);
+ switch (typeof_mode) {
+ case TypeofMode::kInside:
+ OutputLdaLookupSlotInsideTypeof(name_index);
+ break;
+ case TypeofMode::kNotInside:
+ OutputLdaLookupSlot(name_index);
+ break;
}
return *this;
}
@@ -788,11 +791,13 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadLookupContextSlot(
const AstRawString* name, TypeofMode typeof_mode, int slot_index,
int depth) {
size_t name_index = GetConstantPoolEntry(name);
- if (typeof_mode == INSIDE_TYPEOF) {
- OutputLdaLookupContextSlotInsideTypeof(name_index, slot_index, depth);
- } else {
- DCHECK(typeof_mode == NOT_INSIDE_TYPEOF);
- OutputLdaLookupContextSlot(name_index, slot_index, depth);
+ switch (typeof_mode) {
+ case TypeofMode::kInside:
+ OutputLdaLookupContextSlotInsideTypeof(name_index, slot_index, depth);
+ break;
+ case TypeofMode::kNotInside:
+ OutputLdaLookupContextSlot(name_index, slot_index, depth);
+ break;
}
return *this;
}
@@ -801,11 +806,13 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::LoadLookupGlobalSlot(
const AstRawString* name, TypeofMode typeof_mode, int feedback_slot,
int depth) {
size_t name_index = GetConstantPoolEntry(name);
- if (typeof_mode == INSIDE_TYPEOF) {
- OutputLdaLookupGlobalSlotInsideTypeof(name_index, feedback_slot, depth);
- } else {
- DCHECK(typeof_mode == NOT_INSIDE_TYPEOF);
- OutputLdaLookupGlobalSlot(name_index, feedback_slot, depth);
+ switch (typeof_mode) {
+ case TypeofMode::kInside:
+ OutputLdaLookupGlobalSlotInsideTypeof(name_index, feedback_slot, depth);
+ break;
+ case TypeofMode::kNotInside:
+ OutputLdaLookupGlobalSlot(name_index, feedback_slot, depth);
+ break;
}
return *this;
}
diff --git a/deps/v8/src/interpreter/bytecode-array-builder.h b/deps/v8/src/interpreter/bytecode-array-builder.h
index 28716b401b..3d72777c5a 100644
--- a/deps/v8/src/interpreter/bytecode-array-builder.h
+++ b/deps/v8/src/interpreter/bytecode-array-builder.h
@@ -46,12 +46,12 @@ class V8_EXPORT_PRIVATE BytecodeArrayBuilder final {
BytecodeArrayBuilder(const BytecodeArrayBuilder&) = delete;
BytecodeArrayBuilder& operator=(const BytecodeArrayBuilder&) = delete;
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<BytecodeArray> ToBytecodeArray(LocalIsolate* isolate);
- template <typename LocalIsolate>
+ Handle<BytecodeArray> ToBytecodeArray(IsolateT* isolate);
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<ByteArray> ToSourcePositionTable(LocalIsolate* isolate);
+ Handle<ByteArray> ToSourcePositionTable(IsolateT* isolate);
#ifdef DEBUG
int CheckBytecodeMatches(BytecodeArray bytecode);
diff --git a/deps/v8/src/interpreter/bytecode-array-iterator.cc b/deps/v8/src/interpreter/bytecode-array-iterator.cc
index 2579f5d378..bb1fdcb95f 100644
--- a/deps/v8/src/interpreter/bytecode-array-iterator.cc
+++ b/deps/v8/src/interpreter/bytecode-array-iterator.cc
@@ -207,9 +207,9 @@ Runtime::FunctionId BytecodeArrayIterator::GetIntrinsicIdOperand(
static_cast<IntrinsicsHelper::IntrinsicId>(raw_id));
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Object> BytecodeArrayIterator::GetConstantAtIndex(
- int index, LocalIsolate* isolate) const {
+ int index, IsolateT* isolate) const {
return handle(bytecode_array()->constant_pool().get(index), isolate);
}
@@ -221,9 +221,9 @@ Smi BytecodeArrayIterator::GetConstantAtIndexAsSmi(int index) const {
return Smi::cast(bytecode_array()->constant_pool().get(index));
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Object> BytecodeArrayIterator::GetConstantForIndexOperand(
- int operand_index, LocalIsolate* isolate) const {
+ int operand_index, IsolateT* isolate) const {
return GetConstantAtIndex(GetIndexOperand(operand_index), isolate);
}
diff --git a/deps/v8/src/interpreter/bytecode-array-iterator.h b/deps/v8/src/interpreter/bytecode-array-iterator.h
index d0c676d2a3..5e93cbccb8 100644
--- a/deps/v8/src/interpreter/bytecode-array-iterator.h
+++ b/deps/v8/src/interpreter/bytecode-array-iterator.h
@@ -115,13 +115,13 @@ class V8_EXPORT_PRIVATE BytecodeArrayIterator {
Runtime::FunctionId GetRuntimeIdOperand(int operand_index) const;
Runtime::FunctionId GetIntrinsicIdOperand(int operand_index) const;
uint32_t GetNativeContextIndexOperand(int operand_index) const;
- template <typename LocalIsolate>
- Handle<Object> GetConstantAtIndex(int offset, LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ Handle<Object> GetConstantAtIndex(int offset, IsolateT* isolate) const;
bool IsConstantAtIndexSmi(int offset) const;
Smi GetConstantAtIndexAsSmi(int offset) const;
- template <typename LocalIsolate>
+ template <typename IsolateT>
Handle<Object> GetConstantForIndexOperand(int operand_index,
- LocalIsolate* isolate) const;
+ IsolateT* isolate) const;
// Returns the relative offset of the branch target at the current bytecode.
// It is an error to call this method if the bytecode is not for a jump or
diff --git a/deps/v8/src/interpreter/bytecode-array-writer.cc b/deps/v8/src/interpreter/bytecode-array-writer.cc
index 0172d3626b..2ed8e614bb 100644
--- a/deps/v8/src/interpreter/bytecode-array-writer.cc
+++ b/deps/v8/src/interpreter/bytecode-array-writer.cc
@@ -37,9 +37,9 @@ BytecodeArrayWriter::BytecodeArrayWriter(
bytecodes_.reserve(512); // Derived via experimentation.
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<BytecodeArray> BytecodeArrayWriter::ToBytecodeArray(
- LocalIsolate* isolate, int register_count, int parameter_count,
+ IsolateT* isolate, int register_count, int parameter_count,
Handle<ByteArray> handler_table) {
DCHECK_EQ(0, unbound_jumps_);
@@ -63,9 +63,9 @@ template EXPORT_TEMPLATE_DEFINE(V8_EXPORT_PRIVATE)
LocalIsolate* isolate, int register_count, int parameter_count,
Handle<ByteArray> handler_table);
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<ByteArray> BytecodeArrayWriter::ToSourcePositionTable(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
DCHECK(!source_position_table_builder_.Lazy());
Handle<ByteArray> source_position_table =
source_position_table_builder_.Omit()
diff --git a/deps/v8/src/interpreter/bytecode-array-writer.h b/deps/v8/src/interpreter/bytecode-array-writer.h
index 6517ad9f5e..9976f59c23 100644
--- a/deps/v8/src/interpreter/bytecode-array-writer.h
+++ b/deps/v8/src/interpreter/bytecode-array-writer.h
@@ -55,15 +55,15 @@ class V8_EXPORT_PRIVATE BytecodeArrayWriter final {
void SetFunctionEntrySourcePosition(int position);
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<BytecodeArray> ToBytecodeArray(LocalIsolate* isolate,
- int register_count, int parameter_count,
+ Handle<BytecodeArray> ToBytecodeArray(IsolateT* isolate, int register_count,
+ int parameter_count,
Handle<ByteArray> handler_table);
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<ByteArray> ToSourcePositionTable(LocalIsolate* isolate);
+ Handle<ByteArray> ToSourcePositionTable(IsolateT* isolate);
#ifdef DEBUG
// Returns -1 if they match or the offset of the first mismatching byte.
diff --git a/deps/v8/src/interpreter/bytecode-generator.cc b/deps/v8/src/interpreter/bytecode-generator.cc
index 76686a9d62..a08c42126b 100644
--- a/deps/v8/src/interpreter/bytecode-generator.cc
+++ b/deps/v8/src/interpreter/bytecode-generator.cc
@@ -740,11 +740,11 @@ class V8_NODISCARD BytecodeGenerator::TestResultScope final
// Used to build a list of toplevel declaration data.
class BytecodeGenerator::TopLevelDeclarationsBuilder final : public ZoneObject {
public:
- template <typename LocalIsolate>
+ template <typename IsolateT>
Handle<FixedArray> AllocateDeclarations(UnoptimizedCompilationInfo* info,
BytecodeGenerator* generator,
Handle<Script> script,
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
DCHECK(has_constant_pool_entry_);
Handle<FixedArray> data =
@@ -1187,14 +1187,14 @@ using NullContextScopeFor = typename NullContextScopeHelper<Isolate>::Type;
} // namespace
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<BytecodeArray> BytecodeGenerator::FinalizeBytecode(
- LocalIsolate* isolate, Handle<Script> script) {
+ IsolateT* isolate, Handle<Script> script) {
DCHECK_EQ(ThreadId::Current(), isolate->thread_id());
#ifdef DEBUG
// Unoptimized compilation should be context-independent. Verify that we don't
// access the native context by nulling it out during finalization.
- NullContextScopeFor<LocalIsolate> null_context_scope(isolate);
+ NullContextScopeFor<IsolateT> null_context_scope(isolate);
#endif
AllocateDeferredConstants(isolate, script);
@@ -1225,14 +1225,14 @@ template Handle<BytecodeArray> BytecodeGenerator::FinalizeBytecode(
template Handle<BytecodeArray> BytecodeGenerator::FinalizeBytecode(
LocalIsolate* isolate, Handle<Script> script);
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<ByteArray> BytecodeGenerator::FinalizeSourcePositionTable(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
DCHECK_EQ(ThreadId::Current(), isolate->thread_id());
#ifdef DEBUG
// Unoptimized compilation should be context-independent. Verify that we don't
// access the native context by nulling it out during finalization.
- NullContextScopeFor<LocalIsolate> null_context_scope(isolate);
+ NullContextScopeFor<IsolateT> null_context_scope(isolate);
#endif
Handle<ByteArray> source_position_table =
@@ -1257,8 +1257,8 @@ int BytecodeGenerator::CheckBytecodeMatches(BytecodeArray bytecode) {
}
#endif
-template <typename LocalIsolate>
-void BytecodeGenerator::AllocateDeferredConstants(LocalIsolate* isolate,
+template <typename IsolateT>
+void BytecodeGenerator::AllocateDeferredConstants(IsolateT* isolate,
Handle<Script> script) {
if (top_level_builder()->has_top_level_declaration()) {
// Build global declaration pair array.
@@ -3289,7 +3289,7 @@ void BytecodeGenerator::BuildVariableLoad(Variable* variable,
break;
}
case VariableLocation::REPL_GLOBAL: {
- DCHECK(variable->IsReplGlobalLet());
+ DCHECK(variable->IsReplGlobal());
FeedbackSlot slot = GetCachedLoadGlobalICSlot(typeof_mode, variable);
builder()->LoadGlobal(variable->raw_name(), feedback_index(slot),
typeof_mode);
@@ -3478,7 +3478,8 @@ void BytecodeGenerator::BuildVariableAssignment(
break;
}
case VariableLocation::REPL_GLOBAL: {
- // A let declaration like 'let x = 7' is effectively translated to:
+ // A let or const declaration like 'let x = 7' is effectively translated
+ // to:
// <top of the script>:
// ScriptContext.x = TheHole;
// ...
@@ -3488,19 +3489,23 @@ void BytecodeGenerator::BuildVariableAssignment(
// The ScriptContext slot for 'x' that we store to here is not
// necessarily the ScriptContext of this script, but rather the
// first ScriptContext that has a slot for name 'x'.
- DCHECK(variable->IsReplGlobalLet());
+ DCHECK(variable->IsReplGlobal());
if (op == Token::INIT) {
RegisterList store_args = register_allocator()->NewRegisterList(2);
builder()
->StoreAccumulatorInRegister(store_args[1])
.LoadLiteral(variable->raw_name())
.StoreAccumulatorInRegister(store_args[0]);
- builder()->CallRuntime(Runtime::kStoreGlobalNoHoleCheckForReplLet,
- store_args);
+ builder()->CallRuntime(
+ Runtime::kStoreGlobalNoHoleCheckForReplLetOrConst, store_args);
} else {
- FeedbackSlot slot =
- GetCachedStoreGlobalICSlot(language_mode(), variable);
- builder()->StoreGlobal(variable->raw_name(), feedback_index(slot));
+ if (mode == VariableMode::kConst) {
+ builder()->CallRuntime(Runtime::kThrowConstAssignError);
+ } else {
+ FeedbackSlot slot =
+ GetCachedStoreGlobalICSlot(language_mode(), variable);
+ builder()->StoreGlobal(variable->raw_name(), feedback_index(slot));
+ }
}
break;
}
@@ -5420,7 +5425,7 @@ void BytecodeGenerator::VisitForTypeOfValue(Expression* expr) {
// perform a non-contextual load in case the operand is a variable proxy.
VariableProxy* proxy = expr->AsVariableProxy();
BuildVariableLoadForAccumulatorValue(proxy->var(), proxy->hole_check_mode(),
- INSIDE_TYPEOF);
+ TypeofMode::kInside);
} else {
VisitForAccumulatorValue(expr);
}
@@ -6850,7 +6855,7 @@ int BytecodeGenerator::feedback_index(FeedbackSlot slot) const {
FeedbackSlot BytecodeGenerator::GetCachedLoadGlobalICSlot(
TypeofMode typeof_mode, Variable* variable) {
FeedbackSlotCache::SlotKind slot_kind =
- typeof_mode == INSIDE_TYPEOF
+ typeof_mode == TypeofMode::kInside
? FeedbackSlotCache::SlotKind::kLoadGlobalInsideTypeof
: FeedbackSlotCache::SlotKind::kLoadGlobalNotInsideTypeof;
FeedbackSlot slot(feedback_slot_cache()->Get(slot_kind, variable));
diff --git a/deps/v8/src/interpreter/bytecode-generator.h b/deps/v8/src/interpreter/bytecode-generator.h
index 69d5bf8957..f3b048d52d 100644
--- a/deps/v8/src/interpreter/bytecode-generator.h
+++ b/deps/v8/src/interpreter/bytecode-generator.h
@@ -37,11 +37,11 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
std::vector<FunctionLiteral*>* eager_inner_literals);
void GenerateBytecode(uintptr_t stack_limit);
- template <typename LocalIsolate>
- Handle<BytecodeArray> FinalizeBytecode(LocalIsolate* isolate,
+ template <typename IsolateT>
+ Handle<BytecodeArray> FinalizeBytecode(IsolateT* isolate,
Handle<Script> script);
- template <typename LocalIsolate>
- Handle<ByteArray> FinalizeSourcePositionTable(LocalIsolate* isolate);
+ template <typename IsolateT>
+ Handle<ByteArray> FinalizeSourcePositionTable(IsolateT* isolate);
#ifdef DEBUG
int CheckBytecodeMatches(BytecodeArray bytecode);
@@ -165,8 +165,8 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
};
void GenerateBytecodeBody();
- template <typename LocalIsolate>
- void AllocateDeferredConstants(LocalIsolate* isolate, Handle<Script> script);
+ template <typename IsolateT>
+ void AllocateDeferredConstants(IsolateT* isolate, Handle<Script> script);
DEFINE_AST_VISITOR_SUBCLASS_MEMBERS();
@@ -243,10 +243,10 @@ class BytecodeGenerator final : public AstVisitor<BytecodeGenerator> {
const AstRawString* name);
void BuildVariableLoad(Variable* variable, HoleCheckMode hole_check_mode,
- TypeofMode typeof_mode = NOT_INSIDE_TYPEOF);
+ TypeofMode typeof_mode = TypeofMode::kNotInside);
void BuildVariableLoadForAccumulatorValue(
Variable* variable, HoleCheckMode hole_check_mode,
- TypeofMode typeof_mode = NOT_INSIDE_TYPEOF);
+ TypeofMode typeof_mode = TypeofMode::kNotInside);
void BuildVariableAssignment(
Variable* variable, Token::Value op, HoleCheckMode hole_check_mode,
LookupHoistingMode lookup_hoisting_mode = LookupHoistingMode::kNormal);
diff --git a/deps/v8/src/interpreter/bytecode-operands.h b/deps/v8/src/interpreter/bytecode-operands.h
index c9cca226ab..4032980fe8 100644
--- a/deps/v8/src/interpreter/bytecode-operands.h
+++ b/deps/v8/src/interpreter/bytecode-operands.h
@@ -151,7 +151,6 @@ class BytecodeOperands : public AllStatic {
#undef OPERAND_SCALE_COUNT
static constexpr int OperandScaleAsIndex(OperandScale operand_scale) {
-#if V8_HAS_CXX14_CONSTEXPR
#ifdef DEBUG
int result = static_cast<int>(operand_scale) >> 1;
switch (operand_scale) {
@@ -168,7 +167,6 @@ class BytecodeOperands : public AllStatic {
UNREACHABLE();
}
#endif
-#endif
return static_cast<int>(operand_scale) >> 1;
}
diff --git a/deps/v8/src/interpreter/bytecodes.h b/deps/v8/src/interpreter/bytecodes.h
index 56d9d5af0d..e4589918b6 100644
--- a/deps/v8/src/interpreter/bytecodes.h
+++ b/deps/v8/src/interpreter/bytecodes.h
@@ -68,7 +68,9 @@ namespace interpreter {
OperandType::kRuntimeId, OperandType::kReg, OperandType::kReg, \
OperandType::kReg) \
\
- /* Loading the accumulator */ \
+ /* Side-effect-free bytecodes -- carefully ordered for efficient checks */ \
+ /* - [Loading the accumulator] */ \
+ V(Ldar, ImplicitRegisterUse::kWriteAccumulator, OperandType::kReg) \
V(LdaZero, ImplicitRegisterUse::kWriteAccumulator) \
V(LdaSmi, ImplicitRegisterUse::kWriteAccumulator, OperandType::kImm) \
V(LdaUndefined, ImplicitRegisterUse::kWriteAccumulator) \
@@ -77,6 +79,27 @@ namespace interpreter {
V(LdaTrue, ImplicitRegisterUse::kWriteAccumulator) \
V(LdaFalse, ImplicitRegisterUse::kWriteAccumulator) \
V(LdaConstant, ImplicitRegisterUse::kWriteAccumulator, OperandType::kIdx) \
+ V(LdaContextSlot, ImplicitRegisterUse::kWriteAccumulator, OperandType::kReg, \
+ OperandType::kIdx, OperandType::kUImm) \
+ V(LdaImmutableContextSlot, ImplicitRegisterUse::kWriteAccumulator, \
+ OperandType::kReg, OperandType::kIdx, OperandType::kUImm) \
+ V(LdaCurrentContextSlot, ImplicitRegisterUse::kWriteAccumulator, \
+ OperandType::kIdx) \
+ V(LdaImmutableCurrentContextSlot, ImplicitRegisterUse::kWriteAccumulator, \
+ OperandType::kIdx) \
+ /* - [Register Loads ] */ \
+ V(Star, ImplicitRegisterUse::kReadAccumulator, OperandType::kRegOut) \
+ V(Mov, ImplicitRegisterUse::kNone, OperandType::kReg, OperandType::kRegOut) \
+ V(PushContext, ImplicitRegisterUse::kReadAccumulator, OperandType::kRegOut) \
+ V(PopContext, ImplicitRegisterUse::kNone, OperandType::kReg) \
+ /* - [Test Operations ] */ \
+ V(TestReferenceEqual, ImplicitRegisterUse::kReadWriteAccumulator, \
+ OperandType::kReg) \
+ V(TestUndetectable, ImplicitRegisterUse::kReadWriteAccumulator) \
+ V(TestNull, ImplicitRegisterUse::kReadWriteAccumulator) \
+ V(TestUndefined, ImplicitRegisterUse::kReadWriteAccumulator) \
+ V(TestTypeOf, ImplicitRegisterUse::kReadWriteAccumulator, \
+ OperandType::kFlag8) \
\
/* Globals */ \
V(LdaGlobal, ImplicitRegisterUse::kWriteAccumulator, OperandType::kIdx, \
@@ -87,16 +110,6 @@ namespace interpreter {
OperandType::kIdx) \
\
/* Context operations */ \
- V(PushContext, ImplicitRegisterUse::kReadAccumulator, OperandType::kRegOut) \
- V(PopContext, ImplicitRegisterUse::kNone, OperandType::kReg) \
- V(LdaContextSlot, ImplicitRegisterUse::kWriteAccumulator, OperandType::kReg, \
- OperandType::kIdx, OperandType::kUImm) \
- V(LdaImmutableContextSlot, ImplicitRegisterUse::kWriteAccumulator, \
- OperandType::kReg, OperandType::kIdx, OperandType::kUImm) \
- V(LdaCurrentContextSlot, ImplicitRegisterUse::kWriteAccumulator, \
- OperandType::kIdx) \
- V(LdaImmutableCurrentContextSlot, ImplicitRegisterUse::kWriteAccumulator, \
- OperandType::kIdx) \
V(StaContextSlot, ImplicitRegisterUse::kReadAccumulator, OperandType::kReg, \
OperandType::kIdx, OperandType::kUImm) \
V(StaCurrentContextSlot, ImplicitRegisterUse::kReadAccumulator, \
@@ -117,13 +130,6 @@ namespace interpreter {
V(StaLookupSlot, ImplicitRegisterUse::kReadWriteAccumulator, \
OperandType::kIdx, OperandType::kFlag8) \
\
- /* Register-accumulator transfers */ \
- V(Ldar, ImplicitRegisterUse::kWriteAccumulator, OperandType::kReg) \
- V(Star, ImplicitRegisterUse::kReadAccumulator, OperandType::kRegOut) \
- \
- /* Register-register transfers */ \
- V(Mov, ImplicitRegisterUse::kNone, OperandType::kReg, OperandType::kRegOut) \
- \
/* Property loads (LoadIC) operations */ \
V(LdaNamedProperty, ImplicitRegisterUse::kWriteAccumulator, \
OperandType::kReg, OperandType::kIdx, OperandType::kIdx) \
@@ -272,7 +278,7 @@ namespace interpreter {
OperandType::kReg, OperandType::kRegList, OperandType::kRegCount, \
OperandType::kIdx) \
\
- /* Test Operators */ \
+ /* Effectful Test Operators */ \
V(TestEqual, ImplicitRegisterUse::kReadWriteAccumulator, OperandType::kReg, \
OperandType::kIdx) \
V(TestEqualStrict, ImplicitRegisterUse::kReadWriteAccumulator, \
@@ -285,17 +291,10 @@ namespace interpreter {
OperandType::kReg, OperandType::kIdx) \
V(TestGreaterThanOrEqual, ImplicitRegisterUse::kReadWriteAccumulator, \
OperandType::kReg, OperandType::kIdx) \
- V(TestReferenceEqual, ImplicitRegisterUse::kReadWriteAccumulator, \
- OperandType::kReg) \
V(TestInstanceOf, ImplicitRegisterUse::kReadWriteAccumulator, \
OperandType::kReg, OperandType::kIdx) \
V(TestIn, ImplicitRegisterUse::kReadWriteAccumulator, OperandType::kReg, \
OperandType::kIdx) \
- V(TestUndetectable, ImplicitRegisterUse::kReadWriteAccumulator) \
- V(TestNull, ImplicitRegisterUse::kReadWriteAccumulator) \
- V(TestUndefined, ImplicitRegisterUse::kReadWriteAccumulator) \
- V(TestTypeOf, ImplicitRegisterUse::kReadWriteAccumulator, \
- OperandType::kFlag8) \
\
/* Cast operators */ \
V(ToName, ImplicitRegisterUse::kReadAccumulator, OperandType::kRegOut) \
@@ -650,25 +649,17 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic {
// Return true if |bytecode| is an accumulator load without effects,
// e.g. LdaConstant, LdaTrue, Ldar.
static constexpr bool IsAccumulatorLoadWithoutEffects(Bytecode bytecode) {
- return bytecode == Bytecode::kLdar || bytecode == Bytecode::kLdaZero ||
- bytecode == Bytecode::kLdaSmi || bytecode == Bytecode::kLdaNull ||
- bytecode == Bytecode::kLdaTrue || bytecode == Bytecode::kLdaFalse ||
- bytecode == Bytecode::kLdaUndefined ||
- bytecode == Bytecode::kLdaTheHole ||
- bytecode == Bytecode::kLdaConstant ||
- bytecode == Bytecode::kLdaContextSlot ||
- bytecode == Bytecode::kLdaCurrentContextSlot ||
- bytecode == Bytecode::kLdaImmutableContextSlot ||
- bytecode == Bytecode::kLdaImmutableCurrentContextSlot;
+ STATIC_ASSERT(Bytecode::kLdar < Bytecode::kLdaImmutableCurrentContextSlot);
+ return bytecode >= Bytecode::kLdar &&
+ bytecode <= Bytecode::kLdaImmutableCurrentContextSlot;
}
// Returns true if |bytecode| is a compare operation without external effects
// (e.g., Type cooersion).
static constexpr bool IsCompareWithoutEffects(Bytecode bytecode) {
- return bytecode == Bytecode::kTestUndetectable ||
- bytecode == Bytecode::kTestNull ||
- bytecode == Bytecode::kTestUndefined ||
- bytecode == Bytecode::kTestTypeOf;
+ STATIC_ASSERT(Bytecode::kTestReferenceEqual < Bytecode::kTestTypeOf);
+ return bytecode >= Bytecode::kTestReferenceEqual &&
+ bytecode <= Bytecode::kTestTypeOf;
}
static constexpr bool IsShortStar(Bytecode bytecode) {
@@ -683,8 +674,8 @@ class V8_EXPORT_PRIVATE Bytecodes final : public AllStatic {
// Return true if |bytecode| is a register load without effects,
// e.g. Mov, Star.
static constexpr bool IsRegisterLoadWithoutEffects(Bytecode bytecode) {
- return bytecode == Bytecode::kMov || bytecode == Bytecode::kPopContext ||
- bytecode == Bytecode::kPushContext || IsAnyStar(bytecode);
+ return IsShortStar(bytecode) ||
+ (bytecode >= Bytecode::kStar && bytecode <= Bytecode::kPopContext);
}
// Returns true if the bytecode is a conditional jump taking
diff --git a/deps/v8/src/interpreter/constant-array-builder.cc b/deps/v8/src/interpreter/constant-array-builder.cc
index 4142d3a7ca..260a75448d 100644
--- a/deps/v8/src/interpreter/constant-array-builder.cc
+++ b/deps/v8/src/interpreter/constant-array-builder.cc
@@ -65,9 +65,9 @@ const ConstantArrayBuilder::Entry& ConstantArrayBuilder::ConstantArraySlice::At(
}
#if DEBUG
-template <typename LocalIsolate>
+template <typename IsolateT>
void ConstantArrayBuilder::ConstantArraySlice::CheckAllElementsAreUnique(
- LocalIsolate* isolate) const {
+ IsolateT* isolate) const {
std::set<Smi> smis;
std::set<double> heap_numbers;
std::set<const AstRawString*> strings;
@@ -164,9 +164,9 @@ ConstantArrayBuilder::ConstantArraySlice* ConstantArrayBuilder::IndexToSlice(
UNREACHABLE();
}
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<Object> ConstantArrayBuilder::At(size_t index,
- LocalIsolate* isolate) const {
+ IsolateT* isolate) const {
const ConstantArraySlice* slice = IndexToSlice(index);
DCHECK_LT(index, slice->capacity());
if (index < slice->start_index() + slice->size()) {
@@ -183,8 +183,8 @@ template EXPORT_TEMPLATE_DEFINE(V8_EXPORT_PRIVATE)
MaybeHandle<Object> ConstantArrayBuilder::At(size_t index,
LocalIsolate* isolate) const;
-template <typename LocalIsolate>
-Handle<FixedArray> ConstantArrayBuilder::ToFixedArray(LocalIsolate* isolate) {
+template <typename IsolateT>
+Handle<FixedArray> ConstantArrayBuilder::ToFixedArray(IsolateT* isolate) {
Handle<FixedArray> fixed_array = isolate->factory()->NewFixedArrayWithHoles(
static_cast<int>(size()), AllocationType::kOld);
int array_index = 0;
@@ -372,9 +372,8 @@ void ConstantArrayBuilder::DiscardReservedEntry(OperandSize operand_size) {
OperandSizeToSlice(operand_size)->Unreserve();
}
-template <typename LocalIsolate>
-Handle<Object> ConstantArrayBuilder::Entry::ToHandle(
- LocalIsolate* isolate) const {
+template <typename IsolateT>
+Handle<Object> ConstantArrayBuilder::Entry::ToHandle(IsolateT* isolate) const {
switch (tag_) {
case Tag::kDeferred:
// We shouldn't have any deferred entries by now.
diff --git a/deps/v8/src/interpreter/constant-array-builder.h b/deps/v8/src/interpreter/constant-array-builder.h
index b17995f0a1..2120142a12 100644
--- a/deps/v8/src/interpreter/constant-array-builder.h
+++ b/deps/v8/src/interpreter/constant-array-builder.h
@@ -52,16 +52,16 @@ class V8_EXPORT_PRIVATE ConstantArrayBuilder final {
explicit ConstantArrayBuilder(Zone* zone);
// Generate a fixed array of constant handles based on inserted objects.
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<FixedArray> ToFixedArray(LocalIsolate* isolate);
+ Handle<FixedArray> ToFixedArray(IsolateT* isolate);
// Returns the object, as a handle in |isolate|, that is in the constant pool
// array at index |index|. Returns null if there is no handle at this index.
// Only expected to be used in tests.
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- MaybeHandle<Object> At(size_t index, LocalIsolate* isolate) const;
+ MaybeHandle<Object> At(size_t index, IsolateT* isolate) const;
// Returns the number of elements in the array.
size_t size() const;
@@ -154,8 +154,8 @@ class V8_EXPORT_PRIVATE ConstantArrayBuilder final {
smi_ = smi;
}
- template <typename LocalIsolate>
- Handle<Object> ToHandle(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ Handle<Object> ToHandle(IsolateT* isolate) const;
private:
explicit Entry(Tag tag) : tag_(tag) {}
@@ -207,8 +207,8 @@ class V8_EXPORT_PRIVATE ConstantArrayBuilder final {
const Entry& At(size_t index) const;
#if DEBUG
- template <typename LocalIsolate>
- void CheckAllElementsAreUnique(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ void CheckAllElementsAreUnique(IsolateT* isolate) const;
#endif
inline size_t available() const { return capacity() - reserved() - size(); }
diff --git a/deps/v8/src/interpreter/handler-table-builder.cc b/deps/v8/src/interpreter/handler-table-builder.cc
index 56f5b849dc..1a88b2ab07 100644
--- a/deps/v8/src/interpreter/handler-table-builder.cc
+++ b/deps/v8/src/interpreter/handler-table-builder.cc
@@ -15,8 +15,8 @@ namespace interpreter {
HandlerTableBuilder::HandlerTableBuilder(Zone* zone) : entries_(zone) {}
-template <typename LocalIsolate>
-Handle<ByteArray> HandlerTableBuilder::ToHandlerTable(LocalIsolate* isolate) {
+template <typename IsolateT>
+Handle<ByteArray> HandlerTableBuilder::ToHandlerTable(IsolateT* isolate) {
int handler_table_size = static_cast<int>(entries_.size());
Handle<ByteArray> table_byte_array = isolate->factory()->NewByteArray(
HandlerTable::LengthForRange(handler_table_size), AllocationType::kOld);
diff --git a/deps/v8/src/interpreter/handler-table-builder.h b/deps/v8/src/interpreter/handler-table-builder.h
index f5f264d7c7..8670fc0492 100644
--- a/deps/v8/src/interpreter/handler-table-builder.h
+++ b/deps/v8/src/interpreter/handler-table-builder.h
@@ -30,8 +30,8 @@ class V8_EXPORT_PRIVATE HandlerTableBuilder final {
// Builds the actual handler table by copying the current values into a heap
// object. Any further mutations to the builder won't be reflected.
- template <typename LocalIsolate>
- Handle<ByteArray> ToHandlerTable(LocalIsolate* isolate);
+ template <typename IsolateT>
+ Handle<ByteArray> ToHandlerTable(IsolateT* isolate);
// Creates a new handler table entry and returns a {hander_id} identifying the
// entry, so that it can be referenced by below setter functions.
diff --git a/deps/v8/src/interpreter/interpreter-assembler.cc b/deps/v8/src/interpreter/interpreter-assembler.cc
index df5b525877..f6733def8e 100644
--- a/deps/v8/src/interpreter/interpreter-assembler.cc
+++ b/deps/v8/src/interpreter/interpreter-assembler.cc
@@ -8,7 +8,7 @@
#include <ostream>
#include "src/codegen/code-factory.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/machine-type.h"
#include "src/execution/frames.h"
#include "src/interpreter/bytecodes.h"
@@ -803,7 +803,9 @@ void InterpreterAssembler::CallJSWithSpreadAndDispatch(
TNode<UintPtrT> slot_id, TNode<HeapObject> maybe_feedback_vector) {
DCHECK(Bytecodes::MakesCallAlongCriticalPath(bytecode_));
DCHECK_EQ(Bytecodes::GetReceiverMode(bytecode_), ConvertReceiverMode::kAny);
- CollectCallFeedback(function, context, maybe_feedback_vector, slot_id);
+ LazyNode<Object> receiver = [=] { return LoadRegisterAtOperandIndex(1); };
+ CollectCallFeedback(function, receiver, context, maybe_feedback_vector,
+ slot_id);
Comment("call using CallWithSpread builtin");
Callable callable = CodeFactory::InterpreterPushArgsThenCall(
isolate(), ConvertReceiverMode::kAny,
@@ -1310,26 +1312,6 @@ void InterpreterAssembler::AbortIfWordNotEqual(TNode<WordT> lhs,
BIND(&ok);
}
-void InterpreterAssembler::MaybeDropFrames(TNode<Context> context) {
- TNode<ExternalReference> restart_fp_address =
- ExternalConstant(ExternalReference::debug_restart_fp_address(isolate()));
-
- TNode<IntPtrT> restart_fp = Load<IntPtrT>(restart_fp_address);
- TNode<IntPtrT> null = IntPtrConstant(0);
-
- Label ok(this), drop_frames(this);
- Branch(IntPtrEqual(restart_fp, null), &ok, &drop_frames);
-
- BIND(&drop_frames);
- // We don't expect this call to return since the frame dropper tears down
- // the stack and jumps into the function on the target frame to restart it.
- CallStub(CodeFactory::FrameDropperTrampoline(isolate()), context, restart_fp);
- Abort(AbortReason::kUnexpectedReturnFromFrameDropper);
- Goto(&ok);
-
- BIND(&ok);
-}
-
void InterpreterAssembler::OnStackReplacement(TNode<Context> context,
TNode<IntPtrT> relative_jump) {
TNode<JSFunction> function = CAST(LoadRegister(Register::function_closure()));
diff --git a/deps/v8/src/interpreter/interpreter-assembler.h b/deps/v8/src/interpreter/interpreter-assembler.h
index 019fd40f3b..bf4641200b 100644
--- a/deps/v8/src/interpreter/interpreter-assembler.h
+++ b/deps/v8/src/interpreter/interpreter-assembler.h
@@ -241,9 +241,6 @@ class V8_EXPORT_PRIVATE InterpreterAssembler : public CodeStubAssembler {
TNode<FixedArrayBase> parameters_and_registers,
TNode<IntPtrT> formal_parameter_count, TNode<UintPtrT> register_count);
- // Dispatch to frame dropper trampoline if necessary.
- void MaybeDropFrames(TNode<Context> context);
-
// Perform OnStackReplacement.
void OnStackReplacement(TNode<Context> context, TNode<IntPtrT> relative_jump);
diff --git a/deps/v8/src/interpreter/interpreter-generator.cc b/deps/v8/src/interpreter/interpreter-generator.cc
index cb01348a35..75027b96b7 100644
--- a/deps/v8/src/interpreter/interpreter-generator.cc
+++ b/deps/v8/src/interpreter/interpreter-generator.cc
@@ -209,7 +209,7 @@ IGNITION_HANDLER(LdaGlobal, InterpreterLoadGlobalAssembler) {
static const int kNameOperandIndex = 0;
static const int kSlotOperandIndex = 1;
- LdaGlobal(kSlotOperandIndex, kNameOperandIndex, NOT_INSIDE_TYPEOF);
+ LdaGlobal(kSlotOperandIndex, kNameOperandIndex, TypeofMode::kNotInside);
}
// LdaGlobalInsideTypeof <name_index> <slot>
@@ -220,7 +220,7 @@ IGNITION_HANDLER(LdaGlobalInsideTypeof, InterpreterLoadGlobalAssembler) {
static const int kNameOperandIndex = 0;
static const int kSlotOperandIndex = 1;
- LdaGlobal(kSlotOperandIndex, kNameOperandIndex, INSIDE_TYPEOF);
+ LdaGlobal(kSlotOperandIndex, kNameOperandIndex, TypeofMode::kInside);
}
// StaGlobal <name_index> <slot>
@@ -418,8 +418,8 @@ class InterpreterLookupGlobalAssembler : public InterpreterLoadGlobalAssembler {
TypeofMode typeof_mode =
function_id == Runtime::kLoadLookupSlotInsideTypeof
- ? INSIDE_TYPEOF
- : NOT_INSIDE_TYPEOF;
+ ? TypeofMode::kInside
+ : TypeofMode::kNotInside;
LdaGlobal(kSlotOperandIndex, kNameOperandIndex, typeof_mode);
}
@@ -1365,13 +1365,19 @@ class InterpreterJSCallAssembler : public InterpreterAssembler {
// Generates code to perform a JS call that collects type feedback.
void JSCall(ConvertReceiverMode receiver_mode) {
TNode<Object> function = LoadRegisterAtOperandIndex(0);
+ LazyNode<Object> receiver = [=] {
+ return receiver_mode == ConvertReceiverMode::kNullOrUndefined
+ ? UndefinedConstant()
+ : LoadRegisterAtOperandIndex(1);
+ };
RegListNodePair args = GetRegisterListAtOperandIndex(1);
TNode<UintPtrT> slot_id = BytecodeOperandIdx(3);
TNode<HeapObject> maybe_feedback_vector = LoadFeedbackVector();
TNode<Context> context = GetContext();
// Collect the {function} feedback.
- CollectCallFeedback(function, context, maybe_feedback_vector, slot_id);
+ CollectCallFeedback(function, receiver, context, maybe_feedback_vector,
+ slot_id);
// Call the function and dispatch to the next handler.
CallJSAndDispatch(function, context, args, receiver_mode);
@@ -1399,12 +1405,18 @@ class InterpreterJSCallAssembler : public InterpreterAssembler {
kFirstArgumentOperandIndex + kReceiverAndArgOperandCount;
TNode<Object> function = LoadRegisterAtOperandIndex(0);
+ LazyNode<Object> receiver = [=] {
+ return receiver_mode == ConvertReceiverMode::kNullOrUndefined
+ ? UndefinedConstant()
+ : LoadRegisterAtOperandIndex(1);
+ };
TNode<UintPtrT> slot_id = BytecodeOperandIdx(kSlotOperandIndex);
TNode<HeapObject> maybe_feedback_vector = LoadFeedbackVector();
TNode<Context> context = GetContext();
// Collect the {function} feedback.
- CollectCallFeedback(function, context, maybe_feedback_vector, slot_id);
+ CollectCallFeedback(function, receiver, context, maybe_feedback_vector,
+ slot_id);
switch (kReceiverAndArgOperandCount) {
case 0:
@@ -2776,7 +2788,7 @@ IGNITION_HANDLER(ThrowIfNotSuperConstructor, InterpreterAssembler) {
// Call runtime to handle debugger statement.
IGNITION_HANDLER(Debugger, InterpreterAssembler) {
TNode<Context> context = GetContext();
- CallStub(CodeFactory::HandleDebuggerStatement(isolate()), context);
+ CallRuntime(Runtime::kHandleDebuggerStatement, context);
Dispatch();
}
@@ -2791,7 +2803,6 @@ IGNITION_HANDLER(Debugger, InterpreterAssembler) {
Runtime::kDebugBreakOnBytecode, context, accumulator); \
TNode<Object> return_value = Projection<0>(result_pair); \
TNode<IntPtrT> original_bytecode = SmiUntag(Projection<1>(result_pair)); \
- MaybeDropFrames(context); \
SetAccumulator(return_value); \
DispatchToBytecodeWithOptionalStarLookahead(original_bytecode); \
}
diff --git a/deps/v8/src/interpreter/interpreter-intrinsics-generator.cc b/deps/v8/src/interpreter/interpreter-intrinsics-generator.cc
index b6ea44f6e7..c98f78f878 100644
--- a/deps/v8/src/interpreter/interpreter-intrinsics-generator.cc
+++ b/deps/v8/src/interpreter/interpreter-intrinsics-generator.cc
@@ -213,12 +213,6 @@ TNode<Object> IntrinsicsGenerator::HasProperty(
arg_count);
}
-TNode<Object> IntrinsicsGenerator::ToString(
- const InterpreterAssembler::RegListNodePair& args, TNode<Context> context,
- int arg_count) {
- return IntrinsicAsBuiltinCall(args, context, Builtins::kToString, arg_count);
-}
-
TNode<Object> IntrinsicsGenerator::ToLength(
const InterpreterAssembler::RegListNodePair& args, TNode<Context> context,
int arg_count) {
diff --git a/deps/v8/src/interpreter/interpreter-intrinsics.h b/deps/v8/src/interpreter/interpreter-intrinsics.h
index 07c60270c2..85c54f67f1 100644
--- a/deps/v8/src/interpreter/interpreter-intrinsics.h
+++ b/deps/v8/src/interpreter/interpreter-intrinsics.h
@@ -36,7 +36,6 @@ namespace interpreter {
V(IsArray, is_array, 1) \
V(IsJSReceiver, is_js_receiver, 1) \
V(IsSmi, is_smi, 1) \
- V(ToString, to_string, 1) \
V(ToLength, to_length, 1) \
V(ToObject, to_object, 1)
diff --git a/deps/v8/src/interpreter/interpreter.cc b/deps/v8/src/interpreter/interpreter.cc
index ddce0f0e4e..36f2c54614 100644
--- a/deps/v8/src/interpreter/interpreter.cc
+++ b/deps/v8/src/interpreter/interpreter.cc
@@ -18,7 +18,6 @@
#include "src/init/setup-isolate.h"
#include "src/interpreter/bytecode-generator.h"
#include "src/interpreter/bytecodes.h"
-#include "src/logging/counters-inl.h"
#include "src/objects/objects-inl.h"
#include "src/objects/shared-function-info.h"
#include "src/objects/slots.h"
@@ -50,14 +49,13 @@ class InterpreterCompilationJob final : public UnoptimizedCompilationJob {
private:
BytecodeGenerator* generator() { return &generator_; }
- template <typename LocalIsolate>
- void CheckAndPrintBytecodeMismatch(LocalIsolate* isolate,
- Handle<Script> script,
+ template <typename IsolateT>
+ void CheckAndPrintBytecodeMismatch(IsolateT* isolate, Handle<Script> script,
Handle<BytecodeArray> bytecode);
- template <typename LocalIsolate>
+ template <typename IsolateT>
Status DoFinalizeJobImpl(Handle<SharedFunctionInfo> shared_info,
- LocalIsolate* isolate);
+ IsolateT* isolate);
Zone zone_;
UnoptimizedCompilationInfo compilation_info_;
@@ -177,10 +175,9 @@ InterpreterCompilationJob::InterpreterCompilationJob(
eager_inner_literals) {}
InterpreterCompilationJob::Status InterpreterCompilationJob::ExecuteJobImpl() {
- RuntimeCallTimerScope runtimeTimerScope(
- parse_info()->runtime_call_stats(),
- RuntimeCallCounterId::kCompileIgnition,
- RuntimeCallStats::kThreadSpecific);
+ RCS_SCOPE(parse_info()->runtime_call_stats(),
+ RuntimeCallCounterId::kCompileIgnition,
+ RuntimeCallStats::kThreadSpecific);
// TODO(lpy): add support for background compilation RCS trace.
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileIgnition");
@@ -203,10 +200,9 @@ InterpreterCompilationJob::Status InterpreterCompilationJob::ExecuteJobImpl() {
}
#ifdef DEBUG
-template <typename LocalIsolate>
+template <typename IsolateT>
void InterpreterCompilationJob::CheckAndPrintBytecodeMismatch(
- LocalIsolate* isolate, Handle<Script> script,
- Handle<BytecodeArray> bytecode) {
+ IsolateT* isolate, Handle<Script> script, Handle<BytecodeArray> bytecode) {
int first_mismatch = generator()->CheckBytecodeMatches(*bytecode);
if (first_mismatch >= 0) {
parse_info()->ast_value_factory()->Internalize(isolate);
@@ -243,9 +239,8 @@ void InterpreterCompilationJob::CheckAndPrintBytecodeMismatch(
InterpreterCompilationJob::Status InterpreterCompilationJob::FinalizeJobImpl(
Handle<SharedFunctionInfo> shared_info, Isolate* isolate) {
- RuntimeCallTimerScope runtimeTimerScope(
- parse_info()->runtime_call_stats(),
- RuntimeCallCounterId::kCompileIgnitionFinalization);
+ RCS_SCOPE(parse_info()->runtime_call_stats(),
+ RuntimeCallCounterId::kCompileIgnitionFinalization);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompileIgnitionFinalization");
return DoFinalizeJobImpl(shared_info, isolate);
@@ -253,17 +248,16 @@ InterpreterCompilationJob::Status InterpreterCompilationJob::FinalizeJobImpl(
InterpreterCompilationJob::Status InterpreterCompilationJob::FinalizeJobImpl(
Handle<SharedFunctionInfo> shared_info, LocalIsolate* isolate) {
- RuntimeCallTimerScope runtimeTimerScope(
- parse_info()->runtime_call_stats(),
- RuntimeCallCounterId::kCompileBackgroundIgnitionFinalization);
+ RCS_SCOPE(parse_info()->runtime_call_stats(),
+ RuntimeCallCounterId::kCompileBackgroundIgnitionFinalization);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"),
"V8.CompileIgnitionFinalization");
return DoFinalizeJobImpl(shared_info, isolate);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
InterpreterCompilationJob::Status InterpreterCompilationJob::DoFinalizeJobImpl(
- Handle<SharedFunctionInfo> shared_info, LocalIsolate* isolate) {
+ Handle<SharedFunctionInfo> shared_info, IsolateT* isolate) {
Handle<BytecodeArray> bytecodes = compilation_info_.bytecode_array();
if (bytecodes.is_null()) {
bytecodes = generator()->FinalizeBytecode(
diff --git a/deps/v8/src/json/json-parser.cc b/deps/v8/src/json/json-parser.cc
index ccea49e89f..7d350d02e5 100644
--- a/deps/v8/src/json/json-parser.cc
+++ b/deps/v8/src/json/json-parser.cc
@@ -10,6 +10,7 @@
#include "src/numbers/hash-seed-inl.h"
#include "src/objects/field-type.h"
#include "src/objects/hash-table-inl.h"
+#include "src/objects/map-updater.h"
#include "src/objects/objects-inl.h"
#include "src/objects/property-descriptor.h"
#include "src/strings/char-predicates-inl.h"
@@ -509,17 +510,18 @@ Handle<Object> JsonParser<Char>::BuildJsonObject(
}
Handle<FieldType> value_type =
value->OptimalType(isolate(), representation);
- Map::GeneralizeField(isolate(), target, descriptor_index,
- details.constness(), representation, value_type);
+ MapUpdater::GeneralizeField(isolate(), target, descriptor_index,
+ details.constness(), representation,
+ value_type);
} else if (expected_representation.IsHeapObject() &&
!target->instance_descriptors(isolate())
.GetFieldType(descriptor_index)
.NowContains(value)) {
Handle<FieldType> value_type =
value->OptimalType(isolate(), expected_representation);
- Map::GeneralizeField(isolate(), target, descriptor_index,
- details.constness(), expected_representation,
- value_type);
+ MapUpdater::GeneralizeField(isolate(), target, descriptor_index,
+ details.constness(), expected_representation,
+ value_type);
} else if (expected_representation.IsDouble() && value->IsSmi()) {
new_mutable_double++;
}
@@ -601,8 +603,8 @@ Handle<Object> JsonParser<Char>::BuildJsonObject(
mutable_double_address += kMutableDoubleSize;
} else {
DCHECK(value.IsHeapNumber());
- HeapObject::cast(value).synchronized_set_map(
- *factory()->heap_number_map());
+ HeapObject::cast(value).set_map(*factory()->heap_number_map(),
+ kReleaseStore);
}
}
object->RawFastInobjectPropertyAtPut(index, value, mode);
diff --git a/deps/v8/src/libplatform/tracing/recorder-default.cc b/deps/v8/src/libplatform/tracing/recorder-default.cc
deleted file mode 100644
index 46e0cbb8e2..0000000000
--- a/deps/v8/src/libplatform/tracing/recorder-default.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2020 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_LIBPLATFORM_TRACING_RECORDER_DEFAULT_H_
-#define V8_LIBPLATFORM_TRACING_RECORDER_DEFAULT_H_
-
-#include "src/libplatform/tracing/recorder.h"
-
-namespace v8 {
-namespace platform {
-namespace tracing {
-
-Recorder::Recorder() {}
-Recorder::~Recorder() {}
-
-bool Recorder::IsEnabled() { return false; }
-bool Recorder::IsEnabled(const uint8_t level) { return false; }
-
-void Recorder::AddEvent(TraceObject* trace_event) {}
-
-} // namespace tracing
-} // namespace platform
-} // namespace v8
-
-#endif // V8_LIBPLATFORM_TRACING_RECORDER_DEFAULT_H_
diff --git a/deps/v8/src/libplatform/tracing/recorder-mac.cc b/deps/v8/src/libplatform/tracing/recorder-mac.cc
new file mode 100644
index 0000000000..6a6689f8cf
--- /dev/null
+++ b/deps/v8/src/libplatform/tracing/recorder-mac.cc
@@ -0,0 +1,43 @@
+// Copyright 2020 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_LIBPLATFORM_TRACING_RECORDER_MAC_H_
+#define V8_LIBPLATFORM_TRACING_RECORDER_MAC_H_
+
+#include "src/libplatform/tracing/recorder.h"
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunguarded-availability"
+
+namespace v8 {
+namespace platform {
+namespace tracing {
+
+Recorder::Recorder() { v8Provider = os_log_create("v8", ""); }
+Recorder::~Recorder() {}
+
+bool Recorder::IsEnabled() {
+ return os_log_type_enabled(v8Provider, OS_LOG_TYPE_DEFAULT);
+}
+bool Recorder::IsEnabled(const uint8_t level) {
+ if (level == OS_LOG_TYPE_DEFAULT || level == OS_LOG_TYPE_INFO ||
+ level == OS_LOG_TYPE_DEBUG || level == OS_LOG_TYPE_ERROR ||
+ level == OS_LOG_TYPE_FAULT) {
+ return os_log_type_enabled(v8Provider, static_cast<os_log_type_t>(level));
+ }
+ return false;
+}
+
+void Recorder::AddEvent(TraceObject* trace_event) {
+ os_signpost_event_emit(v8Provider, OS_SIGNPOST_ID_EXCLUSIVE, "",
+ "%s, cpu_duration: %d", trace_event->name(),
+ static_cast<int>(trace_event->cpu_duration()));
+}
+
+} // namespace tracing
+} // namespace platform
+} // namespace v8
+
+#pragma clang diagnostic pop
+
+#endif // V8_LIBPLATFORM_TRACING_RECORDER_MAC_H_
diff --git a/deps/v8/src/libplatform/tracing/recorder.h b/deps/v8/src/libplatform/tracing/recorder.h
index 31cc75f9bd..8b8eb0e0e9 100644
--- a/deps/v8/src/libplatform/tracing/recorder.h
+++ b/deps/v8/src/libplatform/tracing/recorder.h
@@ -9,6 +9,16 @@
#include "include/libplatform/v8-tracing.h"
+#if !defined(V8_ENABLE_SYSTEM_INSTRUMENTATION)
+#error "only include this file if V8_ENABLE_SYSTEM_INSTRUMENTATION"
+#endif
+
+#if V8_OS_MACOSX
+#include <os/signpost.h>
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunguarded-availability"
+#endif
+
#if V8_OS_WIN
#ifndef V8_ETW_GUID
#define V8_ETW_GUID \
@@ -31,14 +41,23 @@ class V8_PLATFORM_EXPORT Recorder {
Recorder();
~Recorder();
- static bool IsEnabled();
- static bool IsEnabled(const uint8_t level);
+ bool IsEnabled();
+ bool IsEnabled(const uint8_t level);
void AddEvent(TraceObject* trace_event);
+
+ private:
+#if V8_OS_MACOSX
+ os_log_t v8Provider;
+#endif
};
} // namespace tracing
} // namespace platform
} // namespace v8
+#if V8_OS_MACOSX
+#pragma clang diagnostic pop
+#endif
+
#endif // V8_LIBPLATFORM_TRACING_RECORDER_H_
diff --git a/deps/v8/src/libplatform/tracing/trace-writer.cc b/deps/v8/src/libplatform/tracing/trace-writer.cc
index 5740dabd8f..1131522eec 100644
--- a/deps/v8/src/libplatform/tracing/trace-writer.cc
+++ b/deps/v8/src/libplatform/tracing/trace-writer.cc
@@ -9,7 +9,10 @@
#include "base/trace_event/common/trace_event_common.h"
#include "include/v8-platform.h"
#include "src/base/platform/platform.h"
+
+#if defined(V8_ENABLE_SYSTEM_INSTRUMENTATION)
#include "src/libplatform/tracing/recorder.h"
+#endif
namespace v8 {
namespace platform {
@@ -191,6 +194,7 @@ TraceWriter* TraceWriter::CreateJSONTraceWriter(std::ostream& stream,
return new JSONTraceWriter(stream, tag);
}
+#if defined(V8_ENABLE_SYSTEM_INSTRUMENTATION)
SystemInstrumentationTraceWriter::SystemInstrumentationTraceWriter() {
recorder_ = std::make_unique<Recorder>();
}
@@ -211,6 +215,7 @@ void SystemInstrumentationTraceWriter::Flush() {}
TraceWriter* TraceWriter::CreateSystemInstrumentationTraceWriter() {
return new SystemInstrumentationTraceWriter();
}
+#endif
} // namespace tracing
} // namespace platform
diff --git a/deps/v8/src/libplatform/tracing/trace-writer.h b/deps/v8/src/libplatform/tracing/trace-writer.h
index 1f727b815a..2fada45108 100644
--- a/deps/v8/src/libplatform/tracing/trace-writer.h
+++ b/deps/v8/src/libplatform/tracing/trace-writer.h
@@ -29,6 +29,7 @@ class JSONTraceWriter : public TraceWriter {
bool append_comma_ = false;
};
+#if defined(V8_ENABLE_SYSTEM_INSTRUMENTATION)
class SystemInstrumentationTraceWriter : public TraceWriter {
public:
SystemInstrumentationTraceWriter();
@@ -39,6 +40,7 @@ class SystemInstrumentationTraceWriter : public TraceWriter {
private:
std::unique_ptr<Recorder> recorder_;
};
+#endif
} // namespace tracing
} // namespace platform
diff --git a/deps/v8/src/logging/code-events.h b/deps/v8/src/logging/code-events.h
index c009ba0b15..cda7c39fc7 100644
--- a/deps/v8/src/logging/code-events.h
+++ b/deps/v8/src/logging/code-events.h
@@ -98,6 +98,7 @@ class CodeEventListener {
// Not handlified as this happens during GC. No allocation allowed.
virtual void CodeMoveEvent(AbstractCode from, AbstractCode to) = 0;
virtual void SharedFunctionInfoMoveEvent(Address from, Address to) = 0;
+ virtual void NativeContextMoveEvent(Address from, Address to) = 0;
virtual void CodeMovingGCEvent() = 0;
virtual void CodeDisableOptEvent(Handle<AbstractCode> code,
Handle<SharedFunctionInfo> shared) = 0;
@@ -217,6 +218,11 @@ class CodeEventDispatcher : public CodeEventListener {
listener->SharedFunctionInfoMoveEvent(from, to);
});
}
+ void NativeContextMoveEvent(Address from, Address to) override {
+ DispatchEventToListeners([=](CodeEventListener* listener) {
+ listener->NativeContextMoveEvent(from, to);
+ });
+ }
void CodeMovingGCEvent() override {
DispatchEventToListeners(
[](CodeEventListener* listener) { listener->CodeMovingGCEvent(); });
diff --git a/deps/v8/src/logging/counters-definitions.h b/deps/v8/src/logging/counters-definitions.h
index ffa9647719..ebf6e3f430 100644
--- a/deps/v8/src/logging/counters-definitions.h
+++ b/deps/v8/src/logging/counters-definitions.h
@@ -85,6 +85,11 @@ namespace internal {
HR(wasm_modules_per_engine, V8.WasmModulesPerEngine, 1, 1024, 30) \
/* bailout reason if Liftoff failed, or {kSuccess} (per function) */ \
HR(liftoff_bailout_reasons, V8.LiftoffBailoutReasons, 0, 20, 21) \
+ /* support for PKEYs/PKU by testing result of pkey_alloc() */ \
+ /* TODO(chromium:1207318): Only values 0 and 1 are actually used, but 3 */ \
+ /* buckets needed until {BooleanHistogram} is supported in Chromium UMA. */ \
+ HR(wasm_memory_protection_keys_support, V8.WasmMemoryProtectionKeysSupport, \
+ 0, 2, 3) \
/* number of thrown exceptions per isolate */ \
HR(wasm_throw_count, V8.WasmThrowCount, 0, 100000, 30) \
/* number of rethrown exceptions per isolate */ \
diff --git a/deps/v8/src/logging/counters-inl.h b/deps/v8/src/logging/counters-inl.h
deleted file mode 100644
index 3e067c7c06..0000000000
--- a/deps/v8/src/logging/counters-inl.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2016 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_LOGGING_COUNTERS_INL_H_
-#define V8_LOGGING_COUNTERS_INL_H_
-
-#include "src/logging/counters.h"
-#include "src/logging/tracing-flags.h"
-
-namespace v8 {
-namespace internal {
-
-void RuntimeCallTimer::Start(RuntimeCallCounter* counter,
- RuntimeCallTimer* parent) {
- DCHECK(!IsStarted());
- counter_ = counter;
- parent_.SetValue(parent);
- if (TracingFlags::runtime_stats.load(std::memory_order_relaxed) ==
- v8::tracing::TracingCategoryObserver::ENABLED_BY_SAMPLING) {
- return;
- }
- base::TimeTicks now = RuntimeCallTimer::Now();
- if (parent) parent->Pause(now);
- Resume(now);
- DCHECK(IsStarted());
-}
-
-void RuntimeCallTimer::Pause(base::TimeTicks now) {
- DCHECK(IsStarted());
- elapsed_ += (now - start_ticks_);
- start_ticks_ = base::TimeTicks();
-}
-
-void RuntimeCallTimer::Resume(base::TimeTicks now) {
- DCHECK(!IsStarted());
- start_ticks_ = now;
-}
-
-RuntimeCallTimer* RuntimeCallTimer::Stop() {
- if (!IsStarted()) return parent();
- base::TimeTicks now = RuntimeCallTimer::Now();
- Pause(now);
- counter_->Increment();
- CommitTimeToCounter();
-
- RuntimeCallTimer* parent_timer = parent();
- if (parent_timer) {
- parent_timer->Resume(now);
- }
- return parent_timer;
-}
-
-void RuntimeCallTimer::CommitTimeToCounter() {
- counter_->Add(elapsed_);
- elapsed_ = base::TimeDelta();
-}
-
-bool RuntimeCallTimer::IsStarted() { return start_ticks_ != base::TimeTicks(); }
-
-} // namespace internal
-} // namespace v8
-
-#endif // V8_LOGGING_COUNTERS_INL_H_
diff --git a/deps/v8/src/logging/counters.cc b/deps/v8/src/logging/counters.cc
index c9c9aa0ebe..3ffced0832 100644
--- a/deps/v8/src/logging/counters.cc
+++ b/deps/v8/src/logging/counters.cc
@@ -4,16 +4,13 @@
#include "src/logging/counters.h"
-#include <iomanip>
-
-#include "src/base/platform/platform.h"
+#include "src/base/atomic-utils.h"
+#include "src/base/platform/elapsed-timer.h"
#include "src/base/platform/time.h"
#include "src/builtins/builtins-definitions.h"
#include "src/execution/isolate.h"
-#include "src/logging/counters-inl.h"
#include "src/logging/log-inl.h"
#include "src/logging/log.h"
-#include "src/utils/ostreams.h"
namespace v8 {
namespace internal {
@@ -121,15 +118,16 @@ void TimedHistogram::RecordAbandon(base::ElapsedTimer* timer,
}
Counters::Counters(Isolate* isolate)
- : isolate_(isolate),
- stats_table_(this),
-// clang format off
+ :
#define SC(name, caption) name##_(this, "c:" #caption),
STATS_COUNTER_TS_LIST(SC)
#undef SC
- // clang format on
- runtime_call_stats_(RuntimeCallStats::kMainIsolateThread),
- worker_thread_runtime_call_stats_() {
+#ifdef V8_RUNTIME_CALL_STATS
+ runtime_call_stats_(RuntimeCallStats::kMainIsolateThread),
+ worker_thread_runtime_call_stats_(),
+#endif
+ isolate_(isolate),
+ stats_table_(this) {
static const struct {
Histogram Counters::*member;
const char* caption;
@@ -319,355 +317,5 @@ void Counters::ResetCreateHistogramFunction(CreateHistogramCallback f) {
#undef HM
}
-base::TimeTicks (*RuntimeCallTimer::Now)() =
- &base::TimeTicks::HighResolutionNow;
-
-base::TimeTicks RuntimeCallTimer::NowCPUTime() {
- base::ThreadTicks ticks = base::ThreadTicks::Now();
- return base::TimeTicks::FromInternalValue(ticks.ToInternalValue());
-}
-
-class RuntimeCallStatEntries {
- public:
- void Print(std::ostream& os) {
- if (total_call_count == 0) return;
- std::sort(entries.rbegin(), entries.rend());
- os << std::setw(50) << "Runtime Function/C++ Builtin" << std::setw(12)
- << "Time" << std::setw(18) << "Count" << std::endl
- << std::string(88, '=') << std::endl;
- for (Entry& entry : entries) {
- entry.SetTotal(total_time, total_call_count);
- entry.Print(os);
- }
- os << std::string(88, '-') << std::endl;
- Entry("Total", total_time, total_call_count).Print(os);
- }
-
- // By default, the compiler will usually inline this, which results in a large
- // binary size increase: std::vector::push_back expands to a large amount of
- // instructions, and this function is invoked repeatedly by macros.
- V8_NOINLINE void Add(RuntimeCallCounter* counter) {
- if (counter->count() == 0) return;
- entries.push_back(
- Entry(counter->name(), counter->time(), counter->count()));
- total_time += counter->time();
- total_call_count += counter->count();
- }
-
- private:
- class Entry {
- public:
- Entry(const char* name, base::TimeDelta time, uint64_t count)
- : name_(name),
- time_(time.InMicroseconds()),
- count_(count),
- time_percent_(100),
- count_percent_(100) {}
-
- bool operator<(const Entry& other) const {
- if (time_ < other.time_) return true;
- if (time_ > other.time_) return false;
- return count_ < other.count_;
- }
-
- V8_NOINLINE void Print(std::ostream& os) {
- os.precision(2);
- os << std::fixed << std::setprecision(2);
- os << std::setw(50) << name_;
- os << std::setw(10) << static_cast<double>(time_) / 1000 << "ms ";
- os << std::setw(6) << time_percent_ << "%";
- os << std::setw(10) << count_ << " ";
- os << std::setw(6) << count_percent_ << "%";
- os << std::endl;
- }
-
- V8_NOINLINE void SetTotal(base::TimeDelta total_time,
- uint64_t total_count) {
- if (total_time.InMicroseconds() == 0) {
- time_percent_ = 0;
- } else {
- time_percent_ = 100.0 * time_ / total_time.InMicroseconds();
- }
- count_percent_ = 100.0 * count_ / total_count;
- }
-
- private:
- const char* name_;
- int64_t time_;
- uint64_t count_;
- double time_percent_;
- double count_percent_;
- };
-
- uint64_t total_call_count = 0;
- base::TimeDelta total_time;
- std::vector<Entry> entries;
-};
-
-void RuntimeCallCounter::Reset() {
- count_ = 0;
- time_ = 0;
-}
-
-void RuntimeCallCounter::Dump(v8::tracing::TracedValue* value) {
- value->BeginArray(name_);
- value->AppendDouble(count_);
- value->AppendDouble(time_);
- value->EndArray();
-}
-
-void RuntimeCallCounter::Add(RuntimeCallCounter* other) {
- count_ += other->count();
- time_ += other->time().InMicroseconds();
-}
-
-void RuntimeCallTimer::Snapshot() {
- base::TimeTicks now = Now();
- // Pause only / topmost timer in the timer stack.
- Pause(now);
- // Commit all the timer's elapsed time to the counters.
- RuntimeCallTimer* timer = this;
- while (timer != nullptr) {
- timer->CommitTimeToCounter();
- timer = timer->parent();
- }
- Resume(now);
-}
-
-RuntimeCallStats::RuntimeCallStats(ThreadType thread_type)
- : in_use_(false), thread_type_(thread_type) {
- static const char* const kNames[] = {
-#define CALL_BUILTIN_COUNTER(name) "GC_" #name,
- FOR_EACH_GC_COUNTER(CALL_BUILTIN_COUNTER) //
-#undef CALL_BUILTIN_COUNTER
-#define CALL_RUNTIME_COUNTER(name) #name,
- FOR_EACH_MANUAL_COUNTER(CALL_RUNTIME_COUNTER) //
-#undef CALL_RUNTIME_COUNTER
-#define CALL_RUNTIME_COUNTER(name, nargs, ressize) #name,
- FOR_EACH_INTRINSIC(CALL_RUNTIME_COUNTER) //
-#undef CALL_RUNTIME_COUNTER
-#define CALL_BUILTIN_COUNTER(name) #name,
- BUILTIN_LIST_C(CALL_BUILTIN_COUNTER) //
-#undef CALL_BUILTIN_COUNTER
-#define CALL_BUILTIN_COUNTER(name) "API_" #name,
- FOR_EACH_API_COUNTER(CALL_BUILTIN_COUNTER) //
-#undef CALL_BUILTIN_COUNTER
-#define CALL_BUILTIN_COUNTER(name) #name,
- FOR_EACH_HANDLER_COUNTER(CALL_BUILTIN_COUNTER) //
-#undef CALL_BUILTIN_COUNTER
-#define THREAD_SPECIFIC_COUNTER(name) #name,
- FOR_EACH_THREAD_SPECIFIC_COUNTER(THREAD_SPECIFIC_COUNTER) //
-#undef THREAD_SPECIFIC_COUNTER
- };
- for (int i = 0; i < kNumberOfCounters; i++) {
- this->counters_[i] = RuntimeCallCounter(kNames[i]);
- }
- if (FLAG_rcs_cpu_time) {
- CHECK(base::ThreadTicks::IsSupported());
- base::ThreadTicks::WaitUntilInitialized();
- RuntimeCallTimer::Now = &RuntimeCallTimer::NowCPUTime;
- }
-}
-
-namespace {
-constexpr RuntimeCallCounterId FirstCounter(RuntimeCallCounterId first, ...) {
- return first;
-}
-
-#define THREAD_SPECIFIC_COUNTER(name) k##name,
-constexpr RuntimeCallCounterId kFirstThreadVariantCounter =
- FirstCounter(FOR_EACH_THREAD_SPECIFIC_COUNTER(THREAD_SPECIFIC_COUNTER) 0);
-#undef THREAD_SPECIFIC_COUNTER
-
-#define THREAD_SPECIFIC_COUNTER(name) +1
-constexpr int kThreadVariantCounterCount =
- 0 FOR_EACH_THREAD_SPECIFIC_COUNTER(THREAD_SPECIFIC_COUNTER);
-#undef THREAD_SPECIFIC_COUNTER
-
-constexpr auto kLastThreadVariantCounter = static_cast<RuntimeCallCounterId>(
- kFirstThreadVariantCounter + kThreadVariantCounterCount - 1);
-} // namespace
-
-bool RuntimeCallStats::HasThreadSpecificCounterVariants(
- RuntimeCallCounterId id) {
- // Check that it's in the range of the thread-specific variant counters and
- // also that it's one of the background counters.
- return id >= kFirstThreadVariantCounter && id <= kLastThreadVariantCounter;
-}
-
-bool RuntimeCallStats::IsBackgroundThreadSpecificVariant(
- RuntimeCallCounterId id) {
- return HasThreadSpecificCounterVariants(id) &&
- (id - kFirstThreadVariantCounter) % 2 == 1;
-}
-
-void RuntimeCallStats::Enter(RuntimeCallTimer* timer,
- RuntimeCallCounterId counter_id) {
- DCHECK(IsCalledOnTheSameThread());
- RuntimeCallCounter* counter = GetCounter(counter_id);
- DCHECK_NOT_NULL(counter->name());
- timer->Start(counter, current_timer());
- current_timer_.SetValue(timer);
- current_counter_.SetValue(counter);
-}
-
-void RuntimeCallStats::Leave(RuntimeCallTimer* timer) {
- DCHECK(IsCalledOnTheSameThread());
- RuntimeCallTimer* stack_top = current_timer();
- if (stack_top == nullptr) return; // Missing timer is a result of Reset().
- CHECK(stack_top == timer);
- current_timer_.SetValue(timer->Stop());
- RuntimeCallTimer* cur_timer = current_timer();
- current_counter_.SetValue(cur_timer ? cur_timer->counter() : nullptr);
-}
-
-void RuntimeCallStats::Add(RuntimeCallStats* other) {
- for (int i = 0; i < kNumberOfCounters; i++) {
- GetCounter(i)->Add(other->GetCounter(i));
- }
-}
-
-// static
-void RuntimeCallStats::CorrectCurrentCounterId(RuntimeCallCounterId counter_id,
- CounterMode mode) {
- DCHECK(IsCalledOnTheSameThread());
- if (mode == RuntimeCallStats::CounterMode::kThreadSpecific) {
- counter_id = CounterIdForThread(counter_id);
- }
- DCHECK(IsCounterAppropriateForThread(counter_id));
-
- RuntimeCallTimer* timer = current_timer();
- if (timer == nullptr) return;
- RuntimeCallCounter* counter = GetCounter(counter_id);
- timer->set_counter(counter);
- current_counter_.SetValue(counter);
-}
-
-bool RuntimeCallStats::IsCalledOnTheSameThread() {
- if (thread_id_.IsValid()) return thread_id_ == ThreadId::Current();
- thread_id_ = ThreadId::Current();
- return true;
-}
-
-void RuntimeCallStats::Print() {
- StdoutStream os;
- Print(os);
-}
-
-void RuntimeCallStats::Print(std::ostream& os) {
- RuntimeCallStatEntries entries;
- if (current_timer_.Value() != nullptr) {
- current_timer_.Value()->Snapshot();
- }
- for (int i = 0; i < kNumberOfCounters; i++) {
- entries.Add(GetCounter(i));
- }
- entries.Print(os);
-}
-
-void RuntimeCallStats::EnumerateCounters(
- debug::RuntimeCallCounterCallback callback) {
- if (current_timer_.Value() != nullptr) {
- current_timer_.Value()->Snapshot();
- }
- for (int i = 0; i < kNumberOfCounters; i++) {
- RuntimeCallCounter* counter = GetCounter(i);
- callback(counter->name(), counter->count(), counter->time());
- }
-}
-
-void RuntimeCallStats::Reset() {
- if (V8_LIKELY(!TracingFlags::is_runtime_stats_enabled())) return;
-
- // In tracing, we only what to trace the time spent on top level trace events,
- // if runtime counter stack is not empty, we should clear the whole runtime
- // counter stack, and then reset counters so that we can dump counters into
- // top level trace events accurately.
- while (current_timer_.Value()) {
- current_timer_.SetValue(current_timer_.Value()->Stop());
- }
-
- for (int i = 0; i < kNumberOfCounters; i++) {
- GetCounter(i)->Reset();
- }
-
- in_use_ = true;
-}
-
-void RuntimeCallStats::Dump(v8::tracing::TracedValue* value) {
- for (int i = 0; i < kNumberOfCounters; i++) {
- if (GetCounter(i)->count() > 0) GetCounter(i)->Dump(value);
- }
- in_use_ = false;
-}
-
-WorkerThreadRuntimeCallStats::WorkerThreadRuntimeCallStats()
- : isolate_thread_id_(ThreadId::Current()) {}
-
-WorkerThreadRuntimeCallStats::~WorkerThreadRuntimeCallStats() {
- if (tls_key_) base::Thread::DeleteThreadLocalKey(*tls_key_);
-}
-
-base::Thread::LocalStorageKey WorkerThreadRuntimeCallStats::GetKey() {
- base::MutexGuard lock(&mutex_);
- DCHECK(TracingFlags::is_runtime_stats_enabled());
- if (!tls_key_) tls_key_ = base::Thread::CreateThreadLocalKey();
- return *tls_key_;
-}
-
-RuntimeCallStats* WorkerThreadRuntimeCallStats::NewTable() {
- DCHECK(TracingFlags::is_runtime_stats_enabled());
- // Never create a new worker table on the isolate's main thread.
- DCHECK_NE(ThreadId::Current(), isolate_thread_id_);
- std::unique_ptr<RuntimeCallStats> new_table =
- std::make_unique<RuntimeCallStats>(RuntimeCallStats::kWorkerThread);
- RuntimeCallStats* result = new_table.get();
-
- base::MutexGuard lock(&mutex_);
- tables_.push_back(std::move(new_table));
- return result;
-}
-
-void WorkerThreadRuntimeCallStats::AddToMainTable(
- RuntimeCallStats* main_call_stats) {
- base::MutexGuard lock(&mutex_);
- for (auto& worker_stats : tables_) {
- DCHECK_NE(main_call_stats, worker_stats.get());
- main_call_stats->Add(worker_stats.get());
- worker_stats->Reset();
- }
-}
-
-WorkerThreadRuntimeCallStatsScope::WorkerThreadRuntimeCallStatsScope(
- WorkerThreadRuntimeCallStats* worker_stats)
- : table_(nullptr) {
- if (V8_LIKELY(!TracingFlags::is_runtime_stats_enabled())) return;
-
- table_ = reinterpret_cast<RuntimeCallStats*>(
- base::Thread::GetThreadLocal(worker_stats->GetKey()));
- if (table_ == nullptr) {
- table_ = worker_stats->NewTable();
- base::Thread::SetThreadLocal(worker_stats->GetKey(), table_);
- }
-
- if ((TracingFlags::runtime_stats.load(std::memory_order_relaxed) &
- v8::tracing::TracingCategoryObserver::ENABLED_BY_TRACING)) {
- table_->Reset();
- }
-}
-
-WorkerThreadRuntimeCallStatsScope::~WorkerThreadRuntimeCallStatsScope() {
- if (V8_LIKELY(table_ == nullptr)) return;
-
- if ((TracingFlags::runtime_stats.load(std::memory_order_relaxed) &
- v8::tracing::TracingCategoryObserver::ENABLED_BY_TRACING)) {
- auto value = v8::tracing::TracedValue::Create();
- table_->Dump(value.get());
- TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats"),
- "V8.RuntimeStats", TRACE_EVENT_SCOPE_THREAD,
- "runtime-call-stats", std::move(value));
- }
-}
-
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/logging/counters.h b/deps/v8/src/logging/counters.h
index 89cda72754..0de6a8d0e6 100644
--- a/deps/v8/src/logging/counters.h
+++ b/deps/v8/src/logging/counters.h
@@ -13,16 +13,10 @@
#include "src/base/platform/elapsed-timer.h"
#include "src/base/platform/time.h"
#include "src/common/globals.h"
-#include "src/debug/debug-interface.h"
#include "src/execution/isolate.h"
-#include "src/init/heap-symbols.h"
#include "src/logging/counters-definitions.h"
-#include "src/logging/tracing-flags.h"
+#include "src/logging/runtime-call-stats.h"
#include "src/objects/objects.h"
-#include "src/runtime/runtime.h"
-#include "src/tracing/trace-event.h"
-#include "src/tracing/traced-value.h"
-#include "src/tracing/tracing-category-observer.h"
#include "src/utils/allocation.h"
namespace v8 {
@@ -648,668 +642,6 @@ double AggregatedMemoryHistogram<Histogram>::Aggregate(double current_ms,
value * ((current_ms - last_ms_) / interval_ms);
}
-class RuntimeCallCounter final {
- public:
- RuntimeCallCounter() : RuntimeCallCounter(nullptr) {}
- explicit RuntimeCallCounter(const char* name)
- : name_(name), count_(0), time_(0) {}
- V8_NOINLINE void Reset();
- V8_NOINLINE void Dump(v8::tracing::TracedValue* value);
- void Add(RuntimeCallCounter* other);
-
- const char* name() const { return name_; }
- int64_t count() const { return count_; }
- base::TimeDelta time() const {
- return base::TimeDelta::FromMicroseconds(time_);
- }
- void Increment() { count_++; }
- void Add(base::TimeDelta delta) { time_ += delta.InMicroseconds(); }
-
- private:
- friend class RuntimeCallStats;
-
- const char* name_;
- int64_t count_;
- // Stored as int64_t so that its initialization can be deferred.
- int64_t time_;
-};
-
-// RuntimeCallTimer is used to keep track of the stack of currently active
-// timers used for properly measuring the own time of a RuntimeCallCounter.
-class RuntimeCallTimer final {
- public:
- RuntimeCallCounter* counter() { return counter_; }
- void set_counter(RuntimeCallCounter* counter) { counter_ = counter; }
- RuntimeCallTimer* parent() const { return parent_.Value(); }
- void set_parent(RuntimeCallTimer* timer) { parent_.SetValue(timer); }
- const char* name() const { return counter_->name(); }
-
- inline bool IsStarted();
-
- inline void Start(RuntimeCallCounter* counter, RuntimeCallTimer* parent);
- void Snapshot();
- inline RuntimeCallTimer* Stop();
-
- // Make the time source configurable for testing purposes.
- V8_EXPORT_PRIVATE static base::TimeTicks (*Now)();
-
- // Helper to switch over to CPU time.
- static base::TimeTicks NowCPUTime();
-
- private:
- inline void Pause(base::TimeTicks now);
- inline void Resume(base::TimeTicks now);
- inline void CommitTimeToCounter();
-
- RuntimeCallCounter* counter_ = nullptr;
- base::AtomicValue<RuntimeCallTimer*> parent_;
- base::TimeTicks start_ticks_;
- base::TimeDelta elapsed_;
-};
-
-#define FOR_EACH_GC_COUNTER(V) \
- TRACER_SCOPES(V) \
- TRACER_BACKGROUND_SCOPES(V)
-
-#define FOR_EACH_API_COUNTER(V) \
- V(AccessorPair_New) \
- V(ArrayBuffer_Cast) \
- V(ArrayBuffer_Detach) \
- V(ArrayBuffer_New) \
- V(ArrayBuffer_NewBackingStore) \
- V(ArrayBuffer_BackingStore_Reallocate) \
- V(Array_CloneElementAt) \
- V(Array_New) \
- V(BigInt64Array_New) \
- V(BigInt_NewFromWords) \
- V(BigIntObject_BigIntValue) \
- V(BigIntObject_New) \
- V(BigUint64Array_New) \
- V(BooleanObject_BooleanValue) \
- V(BooleanObject_New) \
- V(Context_New) \
- V(Context_NewRemoteContext) \
- V(DataView_New) \
- V(Date_New) \
- V(Date_NumberValue) \
- V(Debug_Call) \
- V(debug_GetPrivateMembers) \
- V(Error_New) \
- V(External_New) \
- V(Float32Array_New) \
- V(Float64Array_New) \
- V(Function_Call) \
- V(Function_New) \
- V(Function_FunctionProtoToString) \
- V(Function_NewInstance) \
- V(FunctionTemplate_GetFunction) \
- V(FunctionTemplate_New) \
- V(FunctionTemplate_NewRemoteInstance) \
- V(FunctionTemplate_NewWithCache) \
- V(FunctionTemplate_NewWithFastHandler) \
- V(Int16Array_New) \
- V(Int32Array_New) \
- V(Int8Array_New) \
- V(Isolate_DateTimeConfigurationChangeNotification) \
- V(Isolate_LocaleConfigurationChangeNotification) \
- V(JSON_Parse) \
- V(JSON_Stringify) \
- V(Map_AsArray) \
- V(Map_Clear) \
- V(Map_Delete) \
- V(Map_Get) \
- V(Map_Has) \
- V(Map_New) \
- V(Map_Set) \
- V(Message_GetEndColumn) \
- V(Message_GetLineNumber) \
- V(Message_GetSourceLine) \
- V(Message_GetStartColumn) \
- V(Module_Evaluate) \
- V(Module_InstantiateModule) \
- V(Module_SetSyntheticModuleExport) \
- V(NumberObject_New) \
- V(NumberObject_NumberValue) \
- V(Object_CallAsConstructor) \
- V(Object_CallAsFunction) \
- V(Object_CreateDataProperty) \
- V(Object_DefineOwnProperty) \
- V(Object_DefineProperty) \
- V(Object_Delete) \
- V(Object_DeleteProperty) \
- V(Object_ForceSet) \
- V(Object_Get) \
- V(Object_GetOwnPropertyDescriptor) \
- V(Object_GetOwnPropertyNames) \
- V(Object_GetPropertyAttributes) \
- V(Object_GetPropertyNames) \
- V(Object_GetRealNamedProperty) \
- V(Object_GetRealNamedPropertyAttributes) \
- V(Object_GetRealNamedPropertyAttributesInPrototypeChain) \
- V(Object_GetRealNamedPropertyInPrototypeChain) \
- V(Object_Has) \
- V(Object_HasOwnProperty) \
- V(Object_HasRealIndexedProperty) \
- V(Object_HasRealNamedCallbackProperty) \
- V(Object_HasRealNamedProperty) \
- V(Object_IsCodeLike) \
- V(Object_New) \
- V(Object_ObjectProtoToString) \
- V(Object_Set) \
- V(Object_SetAccessor) \
- V(Object_SetIntegrityLevel) \
- V(Object_SetPrivate) \
- V(Object_SetPrototype) \
- V(ObjectTemplate_New) \
- V(ObjectTemplate_NewInstance) \
- V(Object_ToArrayIndex) \
- V(Object_ToBigInt) \
- V(Object_ToDetailString) \
- V(Object_ToInt32) \
- V(Object_ToInteger) \
- V(Object_ToNumber) \
- V(Object_ToObject) \
- V(Object_ToString) \
- V(Object_ToUint32) \
- V(Persistent_New) \
- V(Private_New) \
- V(Promise_Catch) \
- V(Promise_Chain) \
- V(Promise_HasRejectHandler) \
- V(Promise_Resolver_New) \
- V(Promise_Resolver_Reject) \
- V(Promise_Resolver_Resolve) \
- V(Promise_Result) \
- V(Promise_Status) \
- V(Promise_Then) \
- V(Proxy_New) \
- V(RangeError_New) \
- V(ReferenceError_New) \
- V(RegExp_Exec) \
- V(RegExp_New) \
- V(ScriptCompiler_Compile) \
- V(ScriptCompiler_CompileFunctionInContext) \
- V(ScriptCompiler_CompileUnbound) \
- V(Script_Run) \
- V(Set_Add) \
- V(Set_AsArray) \
- V(Set_Clear) \
- V(Set_Delete) \
- V(Set_Has) \
- V(Set_New) \
- V(SharedArrayBuffer_New) \
- V(SharedArrayBuffer_NewBackingStore) \
- V(String_Concat) \
- V(String_NewExternalOneByte) \
- V(String_NewExternalTwoByte) \
- V(String_NewFromOneByte) \
- V(String_NewFromTwoByte) \
- V(String_NewFromUtf8) \
- V(String_NewFromUtf8Literal) \
- V(StringObject_New) \
- V(StringObject_StringValue) \
- V(String_Write) \
- V(String_WriteUtf8) \
- V(Symbol_New) \
- V(SymbolObject_New) \
- V(SymbolObject_SymbolValue) \
- V(SyntaxError_New) \
- V(TracedGlobal_New) \
- V(TryCatch_StackTrace) \
- V(TypeError_New) \
- V(Uint16Array_New) \
- V(Uint32Array_New) \
- V(Uint8Array_New) \
- V(Uint8ClampedArray_New) \
- V(UnboundScript_GetId) \
- V(UnboundScript_GetLineNumber) \
- V(UnboundScript_GetName) \
- V(UnboundScript_GetSourceMappingURL) \
- V(UnboundScript_GetSourceURL) \
- V(ValueDeserializer_ReadHeader) \
- V(ValueDeserializer_ReadValue) \
- V(ValueSerializer_WriteValue) \
- V(Value_Equals) \
- V(Value_InstanceOf) \
- V(Value_Int32Value) \
- V(Value_IntegerValue) \
- V(Value_NumberValue) \
- V(Value_TypeOf) \
- V(Value_Uint32Value) \
- V(WasmCompileError_New) \
- V(WasmLinkError_New) \
- V(WasmRuntimeError_New) \
- V(WeakMap_Get) \
- V(WeakMap_New) \
- V(WeakMap_Set)
-
-#define ADD_THREAD_SPECIFIC_COUNTER(V, Prefix, Suffix) \
- V(Prefix##Suffix) \
- V(Prefix##Background##Suffix)
-
-#define FOR_EACH_THREAD_SPECIFIC_COUNTER(V) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Analyse) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Eval) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Function) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Ignition) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Compile, IgnitionFinalization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Compile, RewriteReturnResult) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Compile, ScopeAnalysis) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Script) \
- \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, AllocateFPRegisters) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, AllocateGeneralRegisters) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, AssembleCode) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, AssignSpillSlots) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, BuildLiveRangeBundles) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, BuildLiveRanges) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, BytecodeGraphBuilder) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, CommitAssignment) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ConnectRanges) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ControlFlowOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, CSAEarlyOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, CSAOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, DecideSpillingMode) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, DecompressionOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, EarlyOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, EarlyTrimming) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, EffectLinearization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, EscapeAnalysis) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, FinalizeCode) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, FrameElision) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, GenericLowering) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, Inlining) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, JumpThreading) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MidTierPopulateReferenceMaps) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MidTierRegisterAllocator) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MidTierRegisterOutputDefinition) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MidTierSpillSlotAllocator) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LateGraphTrimming) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LateOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LoadElimination) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LocateSpillSlots) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LoopExitElimination) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LoopPeeling) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MachineOperatorOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MeetRegisterConstraints) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MemoryOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, OptimizeMoves) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, PopulatePointerMaps) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, PrintGraph) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ResolveControlFlow) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ResolvePhis) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, \
- ScheduledEffectControlLinearization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ScheduledMachineLowering) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, Scheduling) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, SelectInstructions) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, SimplifiedLowering) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, StoreStoreElimination) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, TypeAssertions) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, TypedLowering) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, Typer) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, Untyper) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, VerifyGraph) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, WasmBaseOptimization) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, WasmInlining) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, WasmLoopUnrolling) \
- \
- ADD_THREAD_SPECIFIC_COUNTER(V, Parse, ArrowFunctionLiteral) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Parse, FunctionLiteral) \
- ADD_THREAD_SPECIFIC_COUNTER(V, Parse, Program) \
- ADD_THREAD_SPECIFIC_COUNTER(V, PreParse, ArrowFunctionLiteral) \
- ADD_THREAD_SPECIFIC_COUNTER(V, PreParse, WithVariableResolution)
-
-#define FOR_EACH_MANUAL_COUNTER(V) \
- V(AccessorGetterCallback) \
- V(AccessorSetterCallback) \
- V(ArrayLengthGetter) \
- V(ArrayLengthSetter) \
- V(BoundFunctionLengthGetter) \
- V(BoundFunctionNameGetter) \
- V(CodeGenerationFromStringsCallbacks) \
- V(CompileBackgroundCompileTask) \
- V(CompileBaseline) \
- V(CompileBaselineVisit) \
- V(CompileBaselinePreVisit) \
- V(CompileCollectSourcePositions) \
- V(CompileDeserialize) \
- V(CompileEnqueueOnDispatcher) \
- V(CompileFinalizeBackgroundCompileTask) \
- V(CompileFinishNowOnDispatcher) \
- V(CompileGetFromOptimizedCodeMap) \
- V(CompilePublishBackgroundFinalization) \
- V(CompileSerialize) \
- V(CompileWaitForDispatcher) \
- V(ConfigureInstance) \
- V(CreateApiFunction) \
- V(DeoptimizeCode) \
- V(DeserializeContext) \
- V(DeserializeIsolate) \
- V(FinalizationRegistryCleanupFromTask) \
- V(FunctionCallback) \
- V(FunctionLengthGetter) \
- V(FunctionPrototypeGetter) \
- V(FunctionPrototypeSetter) \
- V(GC_Custom_AllAvailableGarbage) \
- V(GC_Custom_IncrementalMarkingObserver) \
- V(GC_Custom_SlowAllocateRaw) \
- V(GCEpilogueCallback) \
- V(GCPrologueCallback) \
- V(Genesis) \
- V(GetCompatibleReceiver) \
- V(GetMoreDataCallback) \
- V(IndexedDefinerCallback) \
- V(IndexedDeleterCallback) \
- V(IndexedDescriptorCallback) \
- V(IndexedEnumeratorCallback) \
- V(IndexedGetterCallback) \
- V(IndexedQueryCallback) \
- V(IndexedSetterCallback) \
- V(InstantiateFunction) \
- V(InstantiateObject) \
- V(Invoke) \
- V(InvokeApiFunction) \
- V(InvokeApiInterruptCallbacks) \
- V(IsCompatibleReceiver) \
- V(IsCompatibleReceiverMap) \
- V(IsTemplateFor) \
- V(JS_Execution) \
- V(Map_SetPrototype) \
- V(Map_TransitionToAccessorProperty) \
- V(Map_TransitionToDataProperty) \
- V(MessageListenerCallback) \
- V(NamedDefinerCallback) \
- V(NamedDeleterCallback) \
- V(NamedDescriptorCallback) \
- V(NamedEnumeratorCallback) \
- V(NamedGetterCallback) \
- V(NamedQueryCallback) \
- V(NamedSetterCallback) \
- V(Object_DeleteProperty) \
- V(ObjectVerify) \
- V(OptimizeBackgroundDispatcherJob) \
- V(OptimizeCode) \
- V(OptimizeConcurrentFinalize) \
- V(OptimizeConcurrentPrepare) \
- V(OptimizeFinalizePipelineJob) \
- V(OptimizeHeapBrokerInitialization) \
- V(OptimizeNonConcurrent) \
- V(OptimizeSerialization) \
- V(OptimizeSerializeMetadata) \
- V(ParseEval) \
- V(ParseFunction) \
- V(PropertyCallback) \
- V(PrototypeMap_TransitionToAccessorProperty) \
- V(PrototypeMap_TransitionToDataProperty) \
- V(PrototypeObject_DeleteProperty) \
- V(ReconfigureToDataProperty) \
- V(UpdateProtector) \
- V(StringLengthGetter) \
- V(TestCounter1) \
- V(TestCounter2) \
- V(TestCounter3)
-
-#define FOR_EACH_HANDLER_COUNTER(V) \
- V(KeyedLoadIC_KeyedLoadSloppyArgumentsStub) \
- V(KeyedLoadIC_LoadElementDH) \
- V(KeyedLoadIC_LoadIndexedInterceptorStub) \
- V(KeyedLoadIC_LoadIndexedStringDH) \
- V(KeyedLoadIC_SlowStub) \
- V(KeyedStoreIC_ElementsTransitionAndStoreStub) \
- V(KeyedStoreIC_KeyedStoreSloppyArgumentsStub) \
- V(KeyedStoreIC_SlowStub) \
- V(KeyedStoreIC_StoreElementStub) \
- V(KeyedStoreIC_StoreFastElementStub) \
- V(LoadGlobalIC_LoadScriptContextField) \
- V(LoadGlobalIC_SlowStub) \
- V(LoadIC_FunctionPrototypeStub) \
- V(LoadIC_HandlerCacheHit_Accessor) \
- V(LoadIC_LoadAccessorDH) \
- V(LoadIC_LoadAccessorFromPrototypeDH) \
- V(LoadIC_LoadApiGetterFromPrototypeDH) \
- V(LoadIC_LoadCallback) \
- V(LoadIC_LoadConstantDH) \
- V(LoadIC_LoadConstantFromPrototypeDH) \
- V(LoadIC_LoadFieldDH) \
- V(LoadIC_LoadFieldFromPrototypeDH) \
- V(LoadIC_LoadGlobalDH) \
- V(LoadIC_LoadGlobalFromPrototypeDH) \
- V(LoadIC_LoadIntegerIndexedExoticDH) \
- V(LoadIC_LoadInterceptorDH) \
- V(LoadIC_LoadInterceptorFromPrototypeDH) \
- V(LoadIC_LoadNativeDataPropertyDH) \
- V(LoadIC_LoadNativeDataPropertyFromPrototypeDH) \
- V(LoadIC_LoadNonexistentDH) \
- V(LoadIC_LoadNonMaskingInterceptorDH) \
- V(LoadIC_LoadNormalDH) \
- V(LoadIC_LoadNormalFromPrototypeDH) \
- V(LoadIC_NonReceiver) \
- V(LoadIC_SlowStub) \
- V(LoadIC_StringLength) \
- V(LoadIC_StringWrapperLength) \
- V(StoreGlobalIC_SlowStub) \
- V(StoreGlobalIC_StoreScriptContextField) \
- V(StoreIC_HandlerCacheHit_Accessor) \
- V(StoreIC_NonReceiver) \
- V(StoreIC_SlowStub) \
- V(StoreIC_StoreAccessorDH) \
- V(StoreIC_StoreAccessorOnPrototypeDH) \
- V(StoreIC_StoreApiSetterOnPrototypeDH) \
- V(StoreIC_StoreFieldDH) \
- V(StoreIC_StoreGlobalDH) \
- V(StoreIC_StoreGlobalTransitionDH) \
- V(StoreIC_StoreInterceptorStub) \
- V(StoreIC_StoreNativeDataPropertyDH) \
- V(StoreIC_StoreNativeDataPropertyOnPrototypeDH) \
- V(StoreIC_StoreNormalDH) \
- V(StoreIC_StoreTransitionDH) \
- V(StoreInArrayLiteralIC_SlowStub)
-
-enum RuntimeCallCounterId {
-#define CALL_RUNTIME_COUNTER(name) kGC_##name,
- FOR_EACH_GC_COUNTER(CALL_RUNTIME_COUNTER) //
-#undef CALL_RUNTIME_COUNTER
-#define CALL_RUNTIME_COUNTER(name) k##name,
- FOR_EACH_MANUAL_COUNTER(CALL_RUNTIME_COUNTER) //
-#undef CALL_RUNTIME_COUNTER
-#define CALL_RUNTIME_COUNTER(name, nargs, ressize) kRuntime_##name,
- FOR_EACH_INTRINSIC(CALL_RUNTIME_COUNTER) //
-#undef CALL_RUNTIME_COUNTER
-#define CALL_BUILTIN_COUNTER(name) kBuiltin_##name,
- BUILTIN_LIST_C(CALL_BUILTIN_COUNTER) //
-#undef CALL_BUILTIN_COUNTER
-#define CALL_BUILTIN_COUNTER(name) kAPI_##name,
- FOR_EACH_API_COUNTER(CALL_BUILTIN_COUNTER) //
-#undef CALL_BUILTIN_COUNTER
-#define CALL_BUILTIN_COUNTER(name) kHandler_##name,
- FOR_EACH_HANDLER_COUNTER(CALL_BUILTIN_COUNTER) //
-#undef CALL_BUILTIN_COUNTER
-#define THREAD_SPECIFIC_COUNTER(name) k##name,
- FOR_EACH_THREAD_SPECIFIC_COUNTER(THREAD_SPECIFIC_COUNTER) //
-#undef THREAD_SPECIFIC_COUNTER
- kNumberOfCounters,
-};
-
-class RuntimeCallStats final {
- public:
- enum ThreadType { kMainIsolateThread, kWorkerThread };
-
- // If kExact is chosen the counter will be use as given. With kThreadSpecific,
- // if the RuntimeCallStats was created for a worker thread, then the
- // background specific version of the counter will be used instead.
- enum CounterMode { kExact, kThreadSpecific };
-
- explicit V8_EXPORT_PRIVATE RuntimeCallStats(ThreadType thread_type);
-
- // Starting measuring the time for a function. This will establish the
- // connection to the parent counter for properly calculating the own times.
- V8_EXPORT_PRIVATE void Enter(RuntimeCallTimer* timer,
- RuntimeCallCounterId counter_id);
-
- // Leave a scope for a measured runtime function. This will properly add
- // the time delta to the current_counter and subtract the delta from its
- // parent.
- V8_EXPORT_PRIVATE void Leave(RuntimeCallTimer* timer);
-
- // Set counter id for the innermost measurement. It can be used to refine
- // event kind when a runtime entry counter is too generic.
- V8_EXPORT_PRIVATE void CorrectCurrentCounterId(
- RuntimeCallCounterId counter_id, CounterMode mode = kExact);
-
- V8_EXPORT_PRIVATE void Reset();
- // Add all entries from another stats object.
- void Add(RuntimeCallStats* other);
- V8_EXPORT_PRIVATE void Print(std::ostream& os);
- V8_EXPORT_PRIVATE void Print();
- V8_NOINLINE void Dump(v8::tracing::TracedValue* value);
-
- V8_EXPORT_PRIVATE void EnumerateCounters(
- debug::RuntimeCallCounterCallback callback);
-
- ThreadId thread_id() const { return thread_id_; }
- RuntimeCallTimer* current_timer() { return current_timer_.Value(); }
- RuntimeCallCounter* current_counter() { return current_counter_.Value(); }
- bool InUse() { return in_use_; }
- bool IsCalledOnTheSameThread();
-
- V8_EXPORT_PRIVATE bool IsBackgroundThreadSpecificVariant(
- RuntimeCallCounterId id);
- V8_EXPORT_PRIVATE bool HasThreadSpecificCounterVariants(
- RuntimeCallCounterId id);
-
- // This should only be called for counters with a dual Background variant. If
- // on the main thread, this just returns the counter. If on a worker thread,
- // it returns Background variant of the counter.
- RuntimeCallCounterId CounterIdForThread(RuntimeCallCounterId id) {
- DCHECK(HasThreadSpecificCounterVariants(id));
- // All thread specific counters are laid out with the main thread variant
- // first followed by the background variant.
- return thread_type_ == kWorkerThread
- ? static_cast<RuntimeCallCounterId>(id + 1)
- : id;
- }
-
- bool IsCounterAppropriateForThread(RuntimeCallCounterId id) {
- // TODO(delphick): We should add background-only counters and ensure that
- // all counters (not just the thread-specific variants) are only invoked on
- // the correct thread.
- if (!HasThreadSpecificCounterVariants(id)) return true;
- return IsBackgroundThreadSpecificVariant(id) ==
- (thread_type_ == kWorkerThread);
- }
-
- static const int kNumberOfCounters =
- static_cast<int>(RuntimeCallCounterId::kNumberOfCounters);
- RuntimeCallCounter* GetCounter(RuntimeCallCounterId counter_id) {
- return &counters_[static_cast<int>(counter_id)];
- }
- RuntimeCallCounter* GetCounter(int counter_id) {
- return &counters_[counter_id];
- }
-
- private:
- // Top of a stack of active timers.
- base::AtomicValue<RuntimeCallTimer*> current_timer_;
- // Active counter object associated with current timer.
- base::AtomicValue<RuntimeCallCounter*> current_counter_;
- // Used to track nested tracing scopes.
- bool in_use_;
- ThreadType thread_type_;
- ThreadId thread_id_;
- RuntimeCallCounter counters_[kNumberOfCounters];
-};
-
-class WorkerThreadRuntimeCallStats final {
- public:
- WorkerThreadRuntimeCallStats();
- ~WorkerThreadRuntimeCallStats();
-
- // Returns the TLS key associated with this WorkerThreadRuntimeCallStats.
- base::Thread::LocalStorageKey GetKey();
-
- // Returns a new worker thread runtime call stats table managed by this
- // WorkerThreadRuntimeCallStats.
- RuntimeCallStats* NewTable();
-
- // Adds the counters from the worker thread tables to |main_call_stats|.
- void AddToMainTable(RuntimeCallStats* main_call_stats);
-
- private:
- base::Mutex mutex_;
- std::vector<std::unique_ptr<RuntimeCallStats>> tables_;
- base::Optional<base::Thread::LocalStorageKey> tls_key_;
- // Since this is for creating worker thread runtime-call stats, record the
- // main thread ID to ensure we never create a worker RCS table for the main
- // thread.
- ThreadId isolate_thread_id_;
-};
-
-// Creating a WorkerThreadRuntimeCallStatsScope will provide a thread-local
-// runtime call stats table, and will dump the table to an immediate trace event
-// when it is destroyed.
-class V8_NODISCARD WorkerThreadRuntimeCallStatsScope final {
- public:
- explicit WorkerThreadRuntimeCallStatsScope(
- WorkerThreadRuntimeCallStats* off_thread_stats);
- ~WorkerThreadRuntimeCallStatsScope();
-
- RuntimeCallStats* Get() const { return table_; }
-
- private:
- RuntimeCallStats* table_;
-};
-
-#define CHANGE_CURRENT_RUNTIME_COUNTER(runtime_call_stats, counter_id) \
- do { \
- if (V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled()) && \
- runtime_call_stats) { \
- runtime_call_stats->CorrectCurrentCounterId(counter_id); \
- } \
- } while (false)
-
-#define TRACE_HANDLER_STATS(isolate, counter_name) \
- CHANGE_CURRENT_RUNTIME_COUNTER( \
- isolate->counters()->runtime_call_stats(), \
- RuntimeCallCounterId::kHandler_##counter_name)
-
-// A RuntimeCallTimerScopes wraps around a RuntimeCallTimer to measure the
-// the time of C++ scope.
-class V8_NODISCARD RuntimeCallTimerScope {
- public:
- inline RuntimeCallTimerScope(Isolate* isolate,
- RuntimeCallCounterId counter_id);
- inline RuntimeCallTimerScope(RuntimeCallStats* stats,
- RuntimeCallCounterId counter_id,
- RuntimeCallStats::CounterMode mode =
- RuntimeCallStats::CounterMode::kExact) {
- if (V8_LIKELY(!TracingFlags::is_runtime_stats_enabled() ||
- stats == nullptr)) {
- return;
- }
- stats_ = stats;
- if (mode == RuntimeCallStats::CounterMode::kThreadSpecific) {
- counter_id = stats->CounterIdForThread(counter_id);
- }
-
- DCHECK(stats->IsCounterAppropriateForThread(counter_id));
- stats_->Enter(&timer_, counter_id);
- }
-
- inline ~RuntimeCallTimerScope() {
- if (V8_UNLIKELY(stats_ != nullptr)) {
- stats_->Leave(&timer_);
- }
- }
-
- RuntimeCallTimerScope(const RuntimeCallTimerScope&) = delete;
- RuntimeCallTimerScope& operator=(const RuntimeCallTimerScope&) = delete;
-
- private:
- RuntimeCallStats* stats_ = nullptr;
- RuntimeCallTimer timer_;
-};
-
// This file contains all the v8 counters that are in use.
class Counters : public std::enable_shared_from_this<Counters> {
public:
@@ -1410,11 +742,19 @@ class Counters : public std::enable_shared_from_this<Counters> {
};
// clang-format on
+#ifdef V8_RUNTIME_CALL_STATS
RuntimeCallStats* runtime_call_stats() { return &runtime_call_stats_; }
WorkerThreadRuntimeCallStats* worker_thread_runtime_call_stats() {
return &worker_thread_runtime_call_stats_;
}
+#else // V8_RUNTIME_CALL_STATS
+ RuntimeCallStats* runtime_call_stats() { return nullptr; }
+
+ WorkerThreadRuntimeCallStats* worker_thread_runtime_call_stats() {
+ return nullptr;
+ }
+#endif // V8_RUNTIME_CALL_STATS
private:
friend class StatsTable;
@@ -1422,9 +762,6 @@ class Counters : public std::enable_shared_from_this<Counters> {
friend class Histogram;
friend class HistogramTimer;
- Isolate* isolate_;
- StatsTable stats_table_;
-
int* FindLocation(const char* name) {
return stats_table_.FindLocation(name);
}
@@ -1491,8 +828,12 @@ class Counters : public std::enable_shared_from_this<Counters> {
FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(SC)
#undef SC
+#ifdef V8_RUNTIME_CALL_STATS
RuntimeCallStats runtime_call_stats_;
WorkerThreadRuntimeCallStats worker_thread_runtime_call_stats_;
+#endif
+ Isolate* isolate_;
+ StatsTable stats_table_;
DISALLOW_IMPLICIT_CONSTRUCTORS(Counters);
};
@@ -1505,12 +846,14 @@ void HistogramTimer::Stop() {
TimedHistogram::Stop(&timer_, counters()->isolate());
}
+#ifdef V8_RUNTIME_CALL_STATS
RuntimeCallTimerScope::RuntimeCallTimerScope(Isolate* isolate,
RuntimeCallCounterId counter_id) {
if (V8_LIKELY(!TracingFlags::is_runtime_stats_enabled())) return;
stats_ = isolate->counters()->runtime_call_stats();
stats_->Enter(&timer_, counter_id);
}
+#endif // defined(V8_RUNTIME_CALL_STATS)
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/logging/log.cc b/deps/v8/src/logging/log.cc
index 110152c56b..1e76a66a66 100644
--- a/deps/v8/src/logging/log.cc
+++ b/deps/v8/src/logging/log.cc
@@ -1728,12 +1728,14 @@ bool Logger::EnsureLogScriptSource(Script script) {
}
void Logger::RuntimeCallTimerEvent() {
+#ifdef V8_RUNTIME_CALL_STATS
RuntimeCallStats* stats = isolate_->counters()->runtime_call_stats();
RuntimeCallCounter* counter = stats->current_counter();
if (counter == nullptr) return;
MSG_BUILDER();
msg << "active-runtime-timer" << kNext << counter->name();
msg.WriteToLogFile();
+#endif // V8_RUNTIME_CALL_STATS
}
void Logger::TickEvent(TickSample* sample, bool overflow) {
@@ -2127,7 +2129,6 @@ void ExistingCodeLogger::LogCodeObject(Object object) {
case CodeKind::INTERPRETED_FUNCTION:
case CodeKind::TURBOFAN:
case CodeKind::BASELINE:
- case CodeKind::NATIVE_CONTEXT_INDEPENDENT:
case CodeKind::TURBOPROP:
return; // We log this later using LogCompiledFunctions.
case CodeKind::BYTECODE_HANDLER:
@@ -2273,9 +2274,10 @@ void ExistingCodeLogger::LogExistingFunction(
CALL_CODE_EVENT_HANDLER(CallbackEvent(fun_name, entry_point))
// Fast API function.
- Address c_function = v8::ToCData<Address>(fun_data->GetCFunction());
- if (c_function != kNullAddress) {
- CALL_CODE_EVENT_HANDLER(CallbackEvent(fun_name, c_function))
+ int c_functions_count = fun_data->GetCFunctionsCount();
+ for (int i = 0; i < c_functions_count; i++) {
+ CALL_CODE_EVENT_HANDLER(
+ CallbackEvent(fun_name, fun_data->GetCFunction(i)))
}
}
}
diff --git a/deps/v8/src/logging/log.h b/deps/v8/src/logging/log.h
index e52f9f2833..ec19032060 100644
--- a/deps/v8/src/logging/log.h
+++ b/deps/v8/src/logging/log.h
@@ -208,6 +208,7 @@ class Logger : public CodeEventListener {
Handle<String> source) override;
void CodeMoveEvent(AbstractCode from, AbstractCode to) override;
void SharedFunctionInfoMoveEvent(Address from, Address to) override;
+ void NativeContextMoveEvent(Address from, Address to) override {}
void CodeMovingGCEvent() override;
void CodeDisableOptEvent(Handle<AbstractCode> code,
Handle<SharedFunctionInfo> shared) override;
@@ -410,6 +411,7 @@ class V8_EXPORT_PRIVATE CodeEventLogger : public CodeEventListener {
void GetterCallbackEvent(Handle<Name> name, Address entry_point) override {}
void SetterCallbackEvent(Handle<Name> name, Address entry_point) override {}
void SharedFunctionInfoMoveEvent(Address from, Address to) override {}
+ void NativeContextMoveEvent(Address from, Address to) override {}
void CodeMovingGCEvent() override {}
void CodeDeoptEvent(Handle<Code> code, DeoptimizeKind kind, Address pc,
int fp_to_sp_delta, bool reuse_code) override {}
@@ -475,6 +477,7 @@ class ExternalCodeEventListener : public CodeEventListener {
void GetterCallbackEvent(Handle<Name> name, Address entry_point) override {}
void SetterCallbackEvent(Handle<Name> name, Address entry_point) override {}
void SharedFunctionInfoMoveEvent(Address from, Address to) override {}
+ void NativeContextMoveEvent(Address from, Address to) override {}
void CodeMoveEvent(AbstractCode from, AbstractCode to) override;
void CodeDisableOptEvent(Handle<AbstractCode> code,
Handle<SharedFunctionInfo> shared) override {}
diff --git a/deps/v8/src/logging/runtime-call-stats.cc b/deps/v8/src/logging/runtime-call-stats.cc
new file mode 100644
index 0000000000..86e3215f74
--- /dev/null
+++ b/deps/v8/src/logging/runtime-call-stats.cc
@@ -0,0 +1,370 @@
+// Copyright 2021 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.
+
+#ifdef V8_RUNTIME_CALL_STATS
+
+#include "src/logging/runtime-call-stats.h"
+
+#include <iomanip>
+
+#include "src/tracing/tracing-category-observer.h"
+#include "src/utils/ostreams.h"
+
+namespace v8 {
+namespace internal {
+
+base::TimeTicks (*RuntimeCallTimer::Now)() =
+ &base::TimeTicks::HighResolutionNow;
+
+base::TimeTicks RuntimeCallTimer::NowCPUTime() {
+ base::ThreadTicks ticks = base::ThreadTicks::Now();
+ return base::TimeTicks::FromInternalValue(ticks.ToInternalValue());
+}
+
+class RuntimeCallStatEntries {
+ public:
+ void Print(std::ostream& os) {
+ if (total_call_count == 0) return;
+ std::sort(entries.rbegin(), entries.rend());
+ os << std::setw(50) << "Runtime Function/C++ Builtin" << std::setw(12)
+ << "Time" << std::setw(18) << "Count" << std::endl
+ << std::string(88, '=') << std::endl;
+ for (Entry& entry : entries) {
+ entry.SetTotal(total_time, total_call_count);
+ entry.Print(os);
+ }
+ os << std::string(88, '-') << std::endl;
+ Entry("Total", total_time, total_call_count).Print(os);
+ }
+
+ // By default, the compiler will usually inline this, which results in a large
+ // binary size increase: std::vector::push_back expands to a large amount of
+ // instructions, and this function is invoked repeatedly by macros.
+ V8_NOINLINE void Add(RuntimeCallCounter* counter) {
+ if (counter->count() == 0) return;
+ entries.push_back(
+ Entry(counter->name(), counter->time(), counter->count()));
+ total_time += counter->time();
+ total_call_count += counter->count();
+ }
+
+ private:
+ class Entry {
+ public:
+ Entry(const char* name, base::TimeDelta time, uint64_t count)
+ : name_(name),
+ time_(time.InMicroseconds()),
+ count_(count),
+ time_percent_(100),
+ count_percent_(100) {}
+
+ bool operator<(const Entry& other) const {
+ if (time_ < other.time_) return true;
+ if (time_ > other.time_) return false;
+ return count_ < other.count_;
+ }
+
+ V8_NOINLINE void Print(std::ostream& os) {
+ os.precision(2);
+ os << std::fixed << std::setprecision(2);
+ os << std::setw(50) << name_;
+ os << std::setw(10) << static_cast<double>(time_) / 1000 << "ms ";
+ os << std::setw(6) << time_percent_ << "%";
+ os << std::setw(10) << count_ << " ";
+ os << std::setw(6) << count_percent_ << "%";
+ os << std::endl;
+ }
+
+ V8_NOINLINE void SetTotal(base::TimeDelta total_time,
+ uint64_t total_count) {
+ if (total_time.InMicroseconds() == 0) {
+ time_percent_ = 0;
+ } else {
+ time_percent_ = 100.0 * time_ / total_time.InMicroseconds();
+ }
+ count_percent_ = 100.0 * count_ / total_count;
+ }
+
+ private:
+ const char* name_;
+ int64_t time_;
+ uint64_t count_;
+ double time_percent_;
+ double count_percent_;
+ };
+
+ uint64_t total_call_count = 0;
+ base::TimeDelta total_time;
+ std::vector<Entry> entries;
+};
+
+void RuntimeCallCounter::Reset() {
+ count_ = 0;
+ time_ = 0;
+}
+
+void RuntimeCallCounter::Dump(v8::tracing::TracedValue* value) {
+ value->BeginArray(name_);
+ value->AppendDouble(count_);
+ value->AppendDouble(time_);
+ value->EndArray();
+}
+
+void RuntimeCallCounter::Add(RuntimeCallCounter* other) {
+ count_ += other->count();
+ time_ += other->time().InMicroseconds();
+}
+
+void RuntimeCallTimer::Snapshot() {
+ base::TimeTicks now = Now();
+ // Pause only / topmost timer in the timer stack.
+ Pause(now);
+ // Commit all the timer's elapsed time to the counters.
+ RuntimeCallTimer* timer = this;
+ while (timer != nullptr) {
+ timer->CommitTimeToCounter();
+ timer = timer->parent();
+ }
+ Resume(now);
+}
+
+RuntimeCallStats::RuntimeCallStats(ThreadType thread_type)
+ : in_use_(false), thread_type_(thread_type) {
+ static const char* const kNames[] = {
+#define CALL_BUILTIN_COUNTER(name) "GC_" #name,
+ FOR_EACH_GC_COUNTER(CALL_BUILTIN_COUNTER) //
+#undef CALL_BUILTIN_COUNTER
+#define CALL_RUNTIME_COUNTER(name) #name,
+ FOR_EACH_MANUAL_COUNTER(CALL_RUNTIME_COUNTER) //
+#undef CALL_RUNTIME_COUNTER
+#define CALL_RUNTIME_COUNTER(name, nargs, ressize) #name,
+ FOR_EACH_INTRINSIC(CALL_RUNTIME_COUNTER) //
+#undef CALL_RUNTIME_COUNTER
+#define CALL_BUILTIN_COUNTER(name) #name,
+ BUILTIN_LIST_C(CALL_BUILTIN_COUNTER) //
+#undef CALL_BUILTIN_COUNTER
+#define CALL_BUILTIN_COUNTER(name) "API_" #name,
+ FOR_EACH_API_COUNTER(CALL_BUILTIN_COUNTER) //
+#undef CALL_BUILTIN_COUNTER
+#define CALL_BUILTIN_COUNTER(name) #name,
+ FOR_EACH_HANDLER_COUNTER(CALL_BUILTIN_COUNTER) //
+#undef CALL_BUILTIN_COUNTER
+#define THREAD_SPECIFIC_COUNTER(name) #name,
+ FOR_EACH_THREAD_SPECIFIC_COUNTER(THREAD_SPECIFIC_COUNTER) //
+#undef THREAD_SPECIFIC_COUNTER
+ };
+ for (int i = 0; i < kNumberOfCounters; i++) {
+ this->counters_[i] = RuntimeCallCounter(kNames[i]);
+ }
+ if (FLAG_rcs_cpu_time) {
+ CHECK(base::ThreadTicks::IsSupported());
+ base::ThreadTicks::WaitUntilInitialized();
+ RuntimeCallTimer::Now = &RuntimeCallTimer::NowCPUTime;
+ }
+}
+
+namespace {
+constexpr RuntimeCallCounterId FirstCounter(RuntimeCallCounterId first, ...) {
+ return first;
+}
+
+#define THREAD_SPECIFIC_COUNTER(name) k##name,
+constexpr RuntimeCallCounterId kFirstThreadVariantCounter =
+ FirstCounter(FOR_EACH_THREAD_SPECIFIC_COUNTER(THREAD_SPECIFIC_COUNTER) 0);
+#undef THREAD_SPECIFIC_COUNTER
+
+#define THREAD_SPECIFIC_COUNTER(name) +1
+constexpr int kThreadVariantCounterCount =
+ 0 FOR_EACH_THREAD_SPECIFIC_COUNTER(THREAD_SPECIFIC_COUNTER);
+#undef THREAD_SPECIFIC_COUNTER
+
+constexpr auto kLastThreadVariantCounter = static_cast<RuntimeCallCounterId>(
+ kFirstThreadVariantCounter + kThreadVariantCounterCount - 1);
+} // namespace
+
+bool RuntimeCallStats::HasThreadSpecificCounterVariants(
+ RuntimeCallCounterId id) {
+ // Check that it's in the range of the thread-specific variant counters and
+ // also that it's one of the background counters.
+ return id >= kFirstThreadVariantCounter && id <= kLastThreadVariantCounter;
+}
+
+bool RuntimeCallStats::IsBackgroundThreadSpecificVariant(
+ RuntimeCallCounterId id) {
+ return HasThreadSpecificCounterVariants(id) &&
+ (id - kFirstThreadVariantCounter) % 2 == 1;
+}
+
+void RuntimeCallStats::Enter(RuntimeCallTimer* timer,
+ RuntimeCallCounterId counter_id) {
+ DCHECK(IsCalledOnTheSameThread());
+ RuntimeCallCounter* counter = GetCounter(counter_id);
+ DCHECK_NOT_NULL(counter->name());
+ timer->Start(counter, current_timer());
+ current_timer_.SetValue(timer);
+ current_counter_.SetValue(counter);
+}
+
+void RuntimeCallStats::Leave(RuntimeCallTimer* timer) {
+ DCHECK(IsCalledOnTheSameThread());
+ RuntimeCallTimer* stack_top = current_timer();
+ if (stack_top == nullptr) return; // Missing timer is a result of Reset().
+ CHECK(stack_top == timer);
+ current_timer_.SetValue(timer->Stop());
+ RuntimeCallTimer* cur_timer = current_timer();
+ current_counter_.SetValue(cur_timer ? cur_timer->counter() : nullptr);
+}
+
+void RuntimeCallStats::Add(RuntimeCallStats* other) {
+ for (int i = 0; i < kNumberOfCounters; i++) {
+ GetCounter(i)->Add(other->GetCounter(i));
+ }
+}
+
+// static
+void RuntimeCallStats::CorrectCurrentCounterId(RuntimeCallCounterId counter_id,
+ CounterMode mode) {
+ DCHECK(IsCalledOnTheSameThread());
+ if (mode == RuntimeCallStats::CounterMode::kThreadSpecific) {
+ counter_id = CounterIdForThread(counter_id);
+ }
+ DCHECK(IsCounterAppropriateForThread(counter_id));
+
+ RuntimeCallTimer* timer = current_timer();
+ if (timer == nullptr) return;
+ RuntimeCallCounter* counter = GetCounter(counter_id);
+ timer->set_counter(counter);
+ current_counter_.SetValue(counter);
+}
+
+bool RuntimeCallStats::IsCalledOnTheSameThread() {
+ if (thread_id_.IsValid()) return thread_id_ == ThreadId::Current();
+ thread_id_ = ThreadId::Current();
+ return true;
+}
+
+void RuntimeCallStats::Print() {
+ StdoutStream os;
+ Print(os);
+}
+
+void RuntimeCallStats::Print(std::ostream& os) {
+ RuntimeCallStatEntries entries;
+ if (current_timer_.Value() != nullptr) {
+ current_timer_.Value()->Snapshot();
+ }
+ for (int i = 0; i < kNumberOfCounters; i++) {
+ entries.Add(GetCounter(i));
+ }
+ entries.Print(os);
+}
+
+void RuntimeCallStats::EnumerateCounters(
+ debug::RuntimeCallCounterCallback callback) {
+ if (current_timer_.Value() != nullptr) {
+ current_timer_.Value()->Snapshot();
+ }
+ for (int i = 0; i < kNumberOfCounters; i++) {
+ RuntimeCallCounter* counter = GetCounter(i);
+ callback(counter->name(), counter->count(), counter->time());
+ }
+}
+
+void RuntimeCallStats::Reset() {
+ if (V8_LIKELY(!TracingFlags::is_runtime_stats_enabled())) return;
+
+ // In tracing, we only what to trace the time spent on top level trace events,
+ // if runtime counter stack is not empty, we should clear the whole runtime
+ // counter stack, and then reset counters so that we can dump counters into
+ // top level trace events accurately.
+ while (current_timer_.Value()) {
+ current_timer_.SetValue(current_timer_.Value()->Stop());
+ }
+
+ for (int i = 0; i < kNumberOfCounters; i++) {
+ GetCounter(i)->Reset();
+ }
+
+ in_use_ = true;
+}
+
+void RuntimeCallStats::Dump(v8::tracing::TracedValue* value) {
+ for (int i = 0; i < kNumberOfCounters; i++) {
+ if (GetCounter(i)->count() > 0) GetCounter(i)->Dump(value);
+ }
+ in_use_ = false;
+}
+
+WorkerThreadRuntimeCallStats::WorkerThreadRuntimeCallStats()
+ : isolate_thread_id_(ThreadId::Current()) {}
+
+WorkerThreadRuntimeCallStats::~WorkerThreadRuntimeCallStats() {
+ if (tls_key_) base::Thread::DeleteThreadLocalKey(*tls_key_);
+}
+
+base::Thread::LocalStorageKey WorkerThreadRuntimeCallStats::GetKey() {
+ base::MutexGuard lock(&mutex_);
+ DCHECK(TracingFlags::is_runtime_stats_enabled());
+ if (!tls_key_) tls_key_ = base::Thread::CreateThreadLocalKey();
+ return *tls_key_;
+}
+
+RuntimeCallStats* WorkerThreadRuntimeCallStats::NewTable() {
+ DCHECK(TracingFlags::is_runtime_stats_enabled());
+ // Never create a new worker table on the isolate's main thread.
+ DCHECK_NE(ThreadId::Current(), isolate_thread_id_);
+ std::unique_ptr<RuntimeCallStats> new_table =
+ std::make_unique<RuntimeCallStats>(RuntimeCallStats::kWorkerThread);
+ RuntimeCallStats* result = new_table.get();
+
+ base::MutexGuard lock(&mutex_);
+ tables_.push_back(std::move(new_table));
+ return result;
+}
+
+void WorkerThreadRuntimeCallStats::AddToMainTable(
+ RuntimeCallStats* main_call_stats) {
+ base::MutexGuard lock(&mutex_);
+ for (auto& worker_stats : tables_) {
+ DCHECK_NE(main_call_stats, worker_stats.get());
+ main_call_stats->Add(worker_stats.get());
+ worker_stats->Reset();
+ }
+}
+
+WorkerThreadRuntimeCallStatsScope::WorkerThreadRuntimeCallStatsScope(
+ WorkerThreadRuntimeCallStats* worker_stats)
+ : table_(nullptr) {
+ if (V8_LIKELY(!TracingFlags::is_runtime_stats_enabled())) return;
+
+ table_ = reinterpret_cast<RuntimeCallStats*>(
+ base::Thread::GetThreadLocal(worker_stats->GetKey()));
+ if (table_ == nullptr) {
+ table_ = worker_stats->NewTable();
+ base::Thread::SetThreadLocal(worker_stats->GetKey(), table_);
+ }
+
+ if ((TracingFlags::runtime_stats.load(std::memory_order_relaxed) &
+ v8::tracing::TracingCategoryObserver::ENABLED_BY_TRACING)) {
+ table_->Reset();
+ }
+}
+
+WorkerThreadRuntimeCallStatsScope::~WorkerThreadRuntimeCallStatsScope() {
+ if (V8_LIKELY(table_ == nullptr)) return;
+
+ if ((TracingFlags::runtime_stats.load(std::memory_order_relaxed) &
+ v8::tracing::TracingCategoryObserver::ENABLED_BY_TRACING)) {
+ auto value = v8::tracing::TracedValue::Create();
+ table_->Dump(value.get());
+ TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("v8.runtime_stats"),
+ "V8.RuntimeStats", TRACE_EVENT_SCOPE_THREAD,
+ "runtime-call-stats", std::move(value));
+ }
+}
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_RUNTIME_CALL_STATS
diff --git a/deps/v8/src/logging/runtime-call-stats.h b/deps/v8/src/logging/runtime-call-stats.h
new file mode 100644
index 0000000000..7593170d86
--- /dev/null
+++ b/deps/v8/src/logging/runtime-call-stats.h
@@ -0,0 +1,763 @@
+// Copyright 2021 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_LOGGING_RUNTIME_CALL_STATS_H_
+#define V8_LOGGING_RUNTIME_CALL_STATS_H_
+
+#include "include/v8.h"
+
+#ifdef V8_RUNTIME_CALL_STATS
+
+#include "src/base/atomic-utils.h"
+#include "src/base/optional.h"
+#include "src/base/platform/elapsed-timer.h"
+#include "src/base/platform/time.h"
+#include "src/builtins/builtins-definitions.h"
+#include "src/debug/debug-interface.h"
+#include "src/execution/thread-id.h"
+#include "src/init/heap-symbols.h"
+#include "src/logging/tracing-flags.h"
+#include "src/runtime/runtime.h"
+#include "src/tracing/traced-value.h"
+#include "src/tracing/tracing-category-observer.h"
+
+#endif // V8_RUNTIME_CALL_STATS
+
+namespace v8 {
+namespace internal {
+
+#ifdef V8_RUNTIME_CALL_STATS
+
+#define RCS_SCOPE(...) \
+ v8::internal::RuntimeCallTimerScope rcs_timer_scope(__VA_ARGS__)
+
+class RuntimeCallCounter final {
+ public:
+ RuntimeCallCounter() : RuntimeCallCounter(nullptr) {}
+ explicit RuntimeCallCounter(const char* name)
+ : name_(name), count_(0), time_(0) {}
+ V8_NOINLINE void Reset();
+ V8_NOINLINE void Dump(v8::tracing::TracedValue* value);
+ void Add(RuntimeCallCounter* other);
+
+ const char* name() const { return name_; }
+ int64_t count() const { return count_; }
+ base::TimeDelta time() const {
+ return base::TimeDelta::FromMicroseconds(time_);
+ }
+ void Increment() { count_++; }
+ void Add(base::TimeDelta delta) { time_ += delta.InMicroseconds(); }
+
+ private:
+ friend class RuntimeCallStats;
+
+ const char* name_;
+ int64_t count_;
+ // Stored as int64_t so that its initialization can be deferred.
+ int64_t time_;
+};
+
+// RuntimeCallTimer is used to keep track of the stack of currently active
+// timers used for properly measuring the own time of a RuntimeCallCounter.
+class RuntimeCallTimer final {
+ public:
+ RuntimeCallCounter* counter() { return counter_; }
+ void set_counter(RuntimeCallCounter* counter) { counter_ = counter; }
+ RuntimeCallTimer* parent() const { return parent_.Value(); }
+ void set_parent(RuntimeCallTimer* timer) { parent_.SetValue(timer); }
+ const char* name() const { return counter_->name(); }
+
+ inline bool IsStarted() const { return start_ticks_ != base::TimeTicks(); }
+
+ inline void Start(RuntimeCallCounter* counter, RuntimeCallTimer* parent) {
+ DCHECK(!IsStarted());
+ counter_ = counter;
+ parent_.SetValue(parent);
+ if (TracingFlags::runtime_stats.load(std::memory_order_relaxed) ==
+ v8::tracing::TracingCategoryObserver::ENABLED_BY_SAMPLING) {
+ return;
+ }
+ base::TimeTicks now = RuntimeCallTimer::Now();
+ if (parent) parent->Pause(now);
+ Resume(now);
+ DCHECK(IsStarted());
+ }
+
+ void Snapshot();
+
+ inline RuntimeCallTimer* Stop() {
+ if (!IsStarted()) return parent();
+ base::TimeTicks now = RuntimeCallTimer::Now();
+ Pause(now);
+ counter_->Increment();
+ CommitTimeToCounter();
+
+ RuntimeCallTimer* parent_timer = parent();
+ if (parent_timer) {
+ parent_timer->Resume(now);
+ }
+ return parent_timer;
+ }
+
+ // Make the time source configurable for testing purposes.
+ V8_EXPORT_PRIVATE static base::TimeTicks (*Now)();
+
+ // Helper to switch over to CPU time.
+ static base::TimeTicks NowCPUTime();
+
+ private:
+ inline void Pause(base::TimeTicks now) {
+ DCHECK(IsStarted());
+ elapsed_ += (now - start_ticks_);
+ start_ticks_ = base::TimeTicks();
+ }
+
+ inline void Resume(base::TimeTicks now) {
+ DCHECK(!IsStarted());
+ start_ticks_ = now;
+ }
+
+ inline void CommitTimeToCounter() {
+ counter_->Add(elapsed_);
+ elapsed_ = base::TimeDelta();
+ }
+
+ RuntimeCallCounter* counter_ = nullptr;
+ base::AtomicValue<RuntimeCallTimer*> parent_;
+ base::TimeTicks start_ticks_;
+ base::TimeDelta elapsed_;
+};
+
+#define FOR_EACH_GC_COUNTER(V) \
+ TRACER_SCOPES(V) \
+ TRACER_BACKGROUND_SCOPES(V)
+
+#define FOR_EACH_API_COUNTER(V) \
+ V(AccessorPair_New) \
+ V(ArrayBuffer_Cast) \
+ V(ArrayBuffer_Detach) \
+ V(ArrayBuffer_New) \
+ V(ArrayBuffer_NewBackingStore) \
+ V(ArrayBuffer_BackingStore_Reallocate) \
+ V(Array_CloneElementAt) \
+ V(Array_New) \
+ V(BigInt64Array_New) \
+ V(BigInt_NewFromWords) \
+ V(BigIntObject_BigIntValue) \
+ V(BigIntObject_New) \
+ V(BigUint64Array_New) \
+ V(BooleanObject_BooleanValue) \
+ V(BooleanObject_New) \
+ V(Context_New) \
+ V(Context_NewRemoteContext) \
+ V(DataView_New) \
+ V(Date_New) \
+ V(Date_NumberValue) \
+ V(Debug_Call) \
+ V(debug_GetPrivateMembers) \
+ V(Error_New) \
+ V(External_New) \
+ V(Float32Array_New) \
+ V(Float64Array_New) \
+ V(Function_Call) \
+ V(Function_New) \
+ V(Function_FunctionProtoToString) \
+ V(Function_NewInstance) \
+ V(FunctionTemplate_GetFunction) \
+ V(FunctionTemplate_New) \
+ V(FunctionTemplate_NewRemoteInstance) \
+ V(FunctionTemplate_NewWithCache) \
+ V(FunctionTemplate_NewWithFastHandler) \
+ V(Int16Array_New) \
+ V(Int32Array_New) \
+ V(Int8Array_New) \
+ V(Isolate_DateTimeConfigurationChangeNotification) \
+ V(Isolate_LocaleConfigurationChangeNotification) \
+ V(JSON_Parse) \
+ V(JSON_Stringify) \
+ V(Map_AsArray) \
+ V(Map_Clear) \
+ V(Map_Delete) \
+ V(Map_Get) \
+ V(Map_Has) \
+ V(Map_New) \
+ V(Map_Set) \
+ V(Message_GetEndColumn) \
+ V(Message_GetLineNumber) \
+ V(Message_GetSourceLine) \
+ V(Message_GetStartColumn) \
+ V(Module_Evaluate) \
+ V(Module_InstantiateModule) \
+ V(Module_SetSyntheticModuleExport) \
+ V(NumberObject_New) \
+ V(NumberObject_NumberValue) \
+ V(Object_CallAsConstructor) \
+ V(Object_CallAsFunction) \
+ V(Object_CreateDataProperty) \
+ V(Object_DefineOwnProperty) \
+ V(Object_DefineProperty) \
+ V(Object_Delete) \
+ V(Object_DeleteProperty) \
+ V(Object_ForceSet) \
+ V(Object_Get) \
+ V(Object_GetOwnPropertyDescriptor) \
+ V(Object_GetOwnPropertyNames) \
+ V(Object_GetPropertyAttributes) \
+ V(Object_GetPropertyNames) \
+ V(Object_GetRealNamedProperty) \
+ V(Object_GetRealNamedPropertyAttributes) \
+ V(Object_GetRealNamedPropertyAttributesInPrototypeChain) \
+ V(Object_GetRealNamedPropertyInPrototypeChain) \
+ V(Object_Has) \
+ V(Object_HasOwnProperty) \
+ V(Object_HasRealIndexedProperty) \
+ V(Object_HasRealNamedCallbackProperty) \
+ V(Object_HasRealNamedProperty) \
+ V(Object_IsCodeLike) \
+ V(Object_New) \
+ V(Object_ObjectProtoToString) \
+ V(Object_Set) \
+ V(Object_SetAccessor) \
+ V(Object_SetIntegrityLevel) \
+ V(Object_SetPrivate) \
+ V(Object_SetPrototype) \
+ V(ObjectTemplate_New) \
+ V(ObjectTemplate_NewInstance) \
+ V(Object_ToArrayIndex) \
+ V(Object_ToBigInt) \
+ V(Object_ToDetailString) \
+ V(Object_ToInt32) \
+ V(Object_ToInteger) \
+ V(Object_ToNumber) \
+ V(Object_ToObject) \
+ V(Object_ToString) \
+ V(Object_ToUint32) \
+ V(Persistent_New) \
+ V(Private_New) \
+ V(Promise_Catch) \
+ V(Promise_Chain) \
+ V(Promise_HasRejectHandler) \
+ V(Promise_Resolver_New) \
+ V(Promise_Resolver_Reject) \
+ V(Promise_Resolver_Resolve) \
+ V(Promise_Result) \
+ V(Promise_Status) \
+ V(Promise_Then) \
+ V(Proxy_New) \
+ V(RangeError_New) \
+ V(ReferenceError_New) \
+ V(RegExp_Exec) \
+ V(RegExp_New) \
+ V(ScriptCompiler_Compile) \
+ V(ScriptCompiler_CompileFunctionInContext) \
+ V(ScriptCompiler_CompileUnbound) \
+ V(Script_Run) \
+ V(Set_Add) \
+ V(Set_AsArray) \
+ V(Set_Clear) \
+ V(Set_Delete) \
+ V(Set_Has) \
+ V(Set_New) \
+ V(SharedArrayBuffer_New) \
+ V(SharedArrayBuffer_NewBackingStore) \
+ V(String_Concat) \
+ V(String_NewExternalOneByte) \
+ V(String_NewExternalTwoByte) \
+ V(String_NewFromOneByte) \
+ V(String_NewFromTwoByte) \
+ V(String_NewFromUtf8) \
+ V(String_NewFromUtf8Literal) \
+ V(StringObject_New) \
+ V(StringObject_StringValue) \
+ V(String_Write) \
+ V(String_WriteUtf8) \
+ V(Symbol_New) \
+ V(SymbolObject_New) \
+ V(SymbolObject_SymbolValue) \
+ V(SyntaxError_New) \
+ V(TracedGlobal_New) \
+ V(TryCatch_StackTrace) \
+ V(TypeError_New) \
+ V(Uint16Array_New) \
+ V(Uint32Array_New) \
+ V(Uint8Array_New) \
+ V(Uint8ClampedArray_New) \
+ V(UnboundScript_GetId) \
+ V(UnboundScript_GetLineNumber) \
+ V(UnboundScript_GetName) \
+ V(UnboundScript_GetSourceMappingURL) \
+ V(UnboundScript_GetSourceURL) \
+ V(ValueDeserializer_ReadHeader) \
+ V(ValueDeserializer_ReadValue) \
+ V(ValueSerializer_WriteValue) \
+ V(Value_Equals) \
+ V(Value_InstanceOf) \
+ V(Value_Int32Value) \
+ V(Value_IntegerValue) \
+ V(Value_NumberValue) \
+ V(Value_TypeOf) \
+ V(Value_Uint32Value) \
+ V(WasmCompileError_New) \
+ V(WasmLinkError_New) \
+ V(WasmRuntimeError_New) \
+ V(WeakMap_Get) \
+ V(WeakMap_New) \
+ V(WeakMap_Set)
+
+#define ADD_THREAD_SPECIFIC_COUNTER(V, Prefix, Suffix) \
+ V(Prefix##Suffix) \
+ V(Prefix##Background##Suffix)
+
+#define FOR_EACH_THREAD_SPECIFIC_COUNTER(V) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Analyse) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Eval) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Function) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Ignition) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Compile, IgnitionFinalization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Compile, RewriteReturnResult) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Compile, ScopeAnalysis) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Compile, Script) \
+ \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, AllocateFPRegisters) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, AllocateGeneralRegisters) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, AssembleCode) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, AssignSpillSlots) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, BuildLiveRangeBundles) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, BuildLiveRanges) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, BytecodeGraphBuilder) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, CommitAssignment) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ConnectRanges) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ControlFlowOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, CSAEarlyOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, CSAOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, DecideSpillingMode) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, DecompressionOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, EarlyOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, EarlyTrimming) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, EffectLinearization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, EscapeAnalysis) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, FinalizeCode) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, FrameElision) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, GenericLowering) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, Inlining) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, JumpThreading) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MidTierPopulateReferenceMaps) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MidTierRegisterAllocator) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MidTierRegisterOutputDefinition) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MidTierSpillSlotAllocator) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LateGraphTrimming) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LateOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LoadElimination) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LocateSpillSlots) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LoopExitElimination) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, LoopPeeling) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MachineOperatorOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MeetRegisterConstraints) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, MemoryOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, OptimizeMoves) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, PopulatePointerMaps) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, PrintGraph) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ResolveControlFlow) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ResolvePhis) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, \
+ ScheduledEffectControlLinearization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, ScheduledMachineLowering) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, Scheduling) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, SelectInstructions) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, SimplifiedLowering) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, StoreStoreElimination) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, TypeAssertions) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, TypedLowering) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, Typer) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, Untyper) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, VerifyGraph) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, WasmBaseOptimization) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, WasmInlining) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Optimize, WasmLoopUnrolling) \
+ \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Parse, ArrowFunctionLiteral) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Parse, FunctionLiteral) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, Parse, Program) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, PreParse, ArrowFunctionLiteral) \
+ ADD_THREAD_SPECIFIC_COUNTER(V, PreParse, WithVariableResolution)
+
+#define FOR_EACH_MANUAL_COUNTER(V) \
+ V(AccessorGetterCallback) \
+ V(AccessorSetterCallback) \
+ V(ArrayLengthGetter) \
+ V(ArrayLengthSetter) \
+ V(BoundFunctionLengthGetter) \
+ V(BoundFunctionNameGetter) \
+ V(CodeGenerationFromStringsCallbacks) \
+ V(CompileBackgroundCompileTask) \
+ V(CompileBaseline) \
+ V(CompileBaselineVisit) \
+ V(CompileBaselinePreVisit) \
+ V(CompileCollectSourcePositions) \
+ V(CompileDeserialize) \
+ V(CompileEnqueueOnDispatcher) \
+ V(CompileFinalizeBackgroundCompileTask) \
+ V(CompileFinishNowOnDispatcher) \
+ V(CompileGetFromOptimizedCodeMap) \
+ V(CompilePublishBackgroundFinalization) \
+ V(CompileSerialize) \
+ V(CompileWaitForDispatcher) \
+ V(ConfigureInstance) \
+ V(CreateApiFunction) \
+ V(DeoptimizeCode) \
+ V(DeserializeContext) \
+ V(DeserializeIsolate) \
+ V(FinalizationRegistryCleanupFromTask) \
+ V(FunctionCallback) \
+ V(FunctionLengthGetter) \
+ V(FunctionPrototypeGetter) \
+ V(FunctionPrototypeSetter) \
+ V(GC_Custom_AllAvailableGarbage) \
+ V(GC_Custom_IncrementalMarkingObserver) \
+ V(GC_Custom_SlowAllocateRaw) \
+ V(GCEpilogueCallback) \
+ V(GCPrologueCallback) \
+ V(Genesis) \
+ V(GetCompatibleReceiver) \
+ V(GetMoreDataCallback) \
+ V(IndexedDefinerCallback) \
+ V(IndexedDeleterCallback) \
+ V(IndexedDescriptorCallback) \
+ V(IndexedEnumeratorCallback) \
+ V(IndexedGetterCallback) \
+ V(IndexedQueryCallback) \
+ V(IndexedSetterCallback) \
+ V(InstantiateFunction) \
+ V(InstantiateObject) \
+ V(Invoke) \
+ V(InvokeApiFunction) \
+ V(InvokeApiInterruptCallbacks) \
+ V(IsCompatibleReceiver) \
+ V(IsCompatibleReceiverMap) \
+ V(IsTemplateFor) \
+ V(JS_Execution) \
+ V(Map_SetPrototype) \
+ V(Map_TransitionToAccessorProperty) \
+ V(Map_TransitionToDataProperty) \
+ V(MessageListenerCallback) \
+ V(NamedDefinerCallback) \
+ V(NamedDeleterCallback) \
+ V(NamedDescriptorCallback) \
+ V(NamedEnumeratorCallback) \
+ V(NamedGetterCallback) \
+ V(NamedQueryCallback) \
+ V(NamedSetterCallback) \
+ V(Object_DeleteProperty) \
+ V(ObjectVerify) \
+ V(OptimizeBackgroundDispatcherJob) \
+ V(OptimizeCode) \
+ V(OptimizeConcurrentFinalize) \
+ V(OptimizeConcurrentPrepare) \
+ V(OptimizeFinalizePipelineJob) \
+ V(OptimizeHeapBrokerInitialization) \
+ V(OptimizeNonConcurrent) \
+ V(OptimizeSerialization) \
+ V(OptimizeSerializeMetadata) \
+ V(ParseEval) \
+ V(ParseFunction) \
+ V(PropertyCallback) \
+ V(PrototypeMap_TransitionToAccessorProperty) \
+ V(PrototypeMap_TransitionToDataProperty) \
+ V(PrototypeObject_DeleteProperty) \
+ V(ReconfigureToDataProperty) \
+ V(UpdateProtector) \
+ V(StringLengthGetter) \
+ V(TestCounter1) \
+ V(TestCounter2) \
+ V(TestCounter3)
+
+#define FOR_EACH_HANDLER_COUNTER(V) \
+ V(KeyedLoadIC_KeyedLoadSloppyArgumentsStub) \
+ V(KeyedLoadIC_LoadElementDH) \
+ V(KeyedLoadIC_LoadIndexedInterceptorStub) \
+ V(KeyedLoadIC_LoadIndexedStringDH) \
+ V(KeyedLoadIC_SlowStub) \
+ V(KeyedStoreIC_ElementsTransitionAndStoreStub) \
+ V(KeyedStoreIC_KeyedStoreSloppyArgumentsStub) \
+ V(KeyedStoreIC_SlowStub) \
+ V(KeyedStoreIC_StoreElementStub) \
+ V(KeyedStoreIC_StoreFastElementStub) \
+ V(LoadGlobalIC_LoadScriptContextField) \
+ V(LoadGlobalIC_SlowStub) \
+ V(LoadIC_FunctionPrototypeStub) \
+ V(LoadIC_HandlerCacheHit_Accessor) \
+ V(LoadIC_LoadAccessorDH) \
+ V(LoadIC_LoadAccessorFromPrototypeDH) \
+ V(LoadIC_LoadApiGetterFromPrototypeDH) \
+ V(LoadIC_LoadCallback) \
+ V(LoadIC_LoadConstantDH) \
+ V(LoadIC_LoadConstantFromPrototypeDH) \
+ V(LoadIC_LoadFieldDH) \
+ V(LoadIC_LoadFieldFromPrototypeDH) \
+ V(LoadIC_LoadGlobalDH) \
+ V(LoadIC_LoadGlobalFromPrototypeDH) \
+ V(LoadIC_LoadIntegerIndexedExoticDH) \
+ V(LoadIC_LoadInterceptorDH) \
+ V(LoadIC_LoadInterceptorFromPrototypeDH) \
+ V(LoadIC_LoadNativeDataPropertyDH) \
+ V(LoadIC_LoadNativeDataPropertyFromPrototypeDH) \
+ V(LoadIC_LoadNonexistentDH) \
+ V(LoadIC_LoadNonMaskingInterceptorDH) \
+ V(LoadIC_LoadNormalDH) \
+ V(LoadIC_LoadNormalFromPrototypeDH) \
+ V(LoadIC_NonReceiver) \
+ V(LoadIC_SlowStub) \
+ V(LoadIC_StringLength) \
+ V(LoadIC_StringWrapperLength) \
+ V(StoreGlobalIC_SlowStub) \
+ V(StoreGlobalIC_StoreScriptContextField) \
+ V(StoreIC_HandlerCacheHit_Accessor) \
+ V(StoreIC_NonReceiver) \
+ V(StoreIC_SlowStub) \
+ V(StoreIC_StoreAccessorDH) \
+ V(StoreIC_StoreAccessorOnPrototypeDH) \
+ V(StoreIC_StoreApiSetterOnPrototypeDH) \
+ V(StoreIC_StoreFieldDH) \
+ V(StoreIC_StoreGlobalDH) \
+ V(StoreIC_StoreGlobalTransitionDH) \
+ V(StoreIC_StoreInterceptorStub) \
+ V(StoreIC_StoreNativeDataPropertyDH) \
+ V(StoreIC_StoreNativeDataPropertyOnPrototypeDH) \
+ V(StoreIC_StoreNormalDH) \
+ V(StoreIC_StoreTransitionDH) \
+ V(StoreInArrayLiteralIC_SlowStub)
+
+enum RuntimeCallCounterId {
+#define CALL_RUNTIME_COUNTER(name) kGC_##name,
+ FOR_EACH_GC_COUNTER(CALL_RUNTIME_COUNTER)
+#undef CALL_RUNTIME_COUNTER
+#define CALL_RUNTIME_COUNTER(name) k##name,
+ FOR_EACH_MANUAL_COUNTER(CALL_RUNTIME_COUNTER)
+#undef CALL_RUNTIME_COUNTER
+#define CALL_RUNTIME_COUNTER(name, nargs, ressize) kRuntime_##name,
+ FOR_EACH_INTRINSIC(CALL_RUNTIME_COUNTER)
+#undef CALL_RUNTIME_COUNTER
+#define CALL_BUILTIN_COUNTER(name) kBuiltin_##name,
+ BUILTIN_LIST_C(CALL_BUILTIN_COUNTER)
+#undef CALL_BUILTIN_COUNTER
+#define CALL_BUILTIN_COUNTER(name) kAPI_##name,
+ FOR_EACH_API_COUNTER(CALL_BUILTIN_COUNTER)
+#undef CALL_BUILTIN_COUNTER
+#define CALL_BUILTIN_COUNTER(name) kHandler_##name,
+ FOR_EACH_HANDLER_COUNTER(CALL_BUILTIN_COUNTER)
+#undef CALL_BUILTIN_COUNTER
+#define THREAD_SPECIFIC_COUNTER(name) k##name,
+ FOR_EACH_THREAD_SPECIFIC_COUNTER(
+ THREAD_SPECIFIC_COUNTER)
+#undef THREAD_SPECIFIC_COUNTER
+ kNumberOfCounters,
+};
+
+class RuntimeCallStats final {
+ public:
+ enum ThreadType { kMainIsolateThread, kWorkerThread };
+
+ // If kExact is chosen the counter will be use as given. With kThreadSpecific,
+ // if the RuntimeCallStats was created for a worker thread, then the
+ // background specific version of the counter will be used instead.
+ enum CounterMode { kExact, kThreadSpecific };
+
+ explicit V8_EXPORT_PRIVATE RuntimeCallStats(ThreadType thread_type);
+
+ // Starting measuring the time for a function. This will establish the
+ // connection to the parent counter for properly calculating the own times.
+ V8_EXPORT_PRIVATE void Enter(RuntimeCallTimer* timer,
+ RuntimeCallCounterId counter_id);
+
+ // Leave a scope for a measured runtime function. This will properly add
+ // the time delta to the current_counter and subtract the delta from its
+ // parent.
+ V8_EXPORT_PRIVATE void Leave(RuntimeCallTimer* timer);
+
+ // Set counter id for the innermost measurement. It can be used to refine
+ // event kind when a runtime entry counter is too generic.
+ V8_EXPORT_PRIVATE void CorrectCurrentCounterId(
+ RuntimeCallCounterId counter_id, CounterMode mode = kExact);
+
+ V8_EXPORT_PRIVATE void Reset();
+ // Add all entries from another stats object.
+ void Add(RuntimeCallStats* other);
+ V8_EXPORT_PRIVATE void Print(std::ostream& os);
+ V8_EXPORT_PRIVATE void Print();
+ V8_NOINLINE void Dump(v8::tracing::TracedValue* value);
+
+ V8_EXPORT_PRIVATE void EnumerateCounters(
+ debug::RuntimeCallCounterCallback callback);
+
+ ThreadId thread_id() const { return thread_id_; }
+ RuntimeCallTimer* current_timer() { return current_timer_.Value(); }
+ RuntimeCallCounter* current_counter() { return current_counter_.Value(); }
+ bool InUse() { return in_use_; }
+ bool IsCalledOnTheSameThread();
+
+ V8_EXPORT_PRIVATE bool IsBackgroundThreadSpecificVariant(
+ RuntimeCallCounterId id);
+ V8_EXPORT_PRIVATE bool HasThreadSpecificCounterVariants(
+ RuntimeCallCounterId id);
+
+ // This should only be called for counters with a dual Background variant. If
+ // on the main thread, this just returns the counter. If on a worker thread,
+ // it returns Background variant of the counter.
+ RuntimeCallCounterId CounterIdForThread(RuntimeCallCounterId id) {
+ DCHECK(HasThreadSpecificCounterVariants(id));
+ // All thread specific counters are laid out with the main thread variant
+ // first followed by the background variant.
+ return thread_type_ == kWorkerThread
+ ? static_cast<RuntimeCallCounterId>(id + 1)
+ : id;
+ }
+
+ bool IsCounterAppropriateForThread(RuntimeCallCounterId id) {
+ // TODO(delphick): We should add background-only counters and ensure that
+ // all counters (not just the thread-specific variants) are only invoked on
+ // the correct thread.
+ if (!HasThreadSpecificCounterVariants(id)) return true;
+ return IsBackgroundThreadSpecificVariant(id) ==
+ (thread_type_ == kWorkerThread);
+ }
+
+ static const int kNumberOfCounters =
+ static_cast<int>(RuntimeCallCounterId::kNumberOfCounters);
+ RuntimeCallCounter* GetCounter(RuntimeCallCounterId counter_id) {
+ return &counters_[static_cast<int>(counter_id)];
+ }
+ RuntimeCallCounter* GetCounter(int counter_id) {
+ return &counters_[counter_id];
+ }
+
+ private:
+ // Top of a stack of active timers.
+ base::AtomicValue<RuntimeCallTimer*> current_timer_;
+ // Active counter object associated with current timer.
+ base::AtomicValue<RuntimeCallCounter*> current_counter_;
+ // Used to track nested tracing scopes.
+ bool in_use_;
+ ThreadType thread_type_;
+ ThreadId thread_id_;
+ RuntimeCallCounter counters_[kNumberOfCounters];
+};
+
+class WorkerThreadRuntimeCallStats final {
+ public:
+ WorkerThreadRuntimeCallStats();
+ ~WorkerThreadRuntimeCallStats();
+
+ // Returns the TLS key associated with this WorkerThreadRuntimeCallStats.
+ base::Thread::LocalStorageKey GetKey();
+
+ // Returns a new worker thread runtime call stats table managed by this
+ // WorkerThreadRuntimeCallStats.
+ RuntimeCallStats* NewTable();
+
+ // Adds the counters from the worker thread tables to |main_call_stats|.
+ void AddToMainTable(RuntimeCallStats* main_call_stats);
+
+ private:
+ base::Mutex mutex_;
+ std::vector<std::unique_ptr<RuntimeCallStats>> tables_;
+ base::Optional<base::Thread::LocalStorageKey> tls_key_;
+ // Since this is for creating worker thread runtime-call stats, record the
+ // main thread ID to ensure we never create a worker RCS table for the main
+ // thread.
+ ThreadId isolate_thread_id_;
+};
+
+// Creating a WorkerThreadRuntimeCallStatsScope will provide a thread-local
+// runtime call stats table, and will dump the table to an immediate trace event
+// when it is destroyed.
+class V8_NODISCARD WorkerThreadRuntimeCallStatsScope final {
+ public:
+ explicit WorkerThreadRuntimeCallStatsScope(
+ WorkerThreadRuntimeCallStats* off_thread_stats);
+ ~WorkerThreadRuntimeCallStatsScope();
+
+ RuntimeCallStats* Get() const { return table_; }
+
+ private:
+ RuntimeCallStats* table_;
+};
+
+#define CHANGE_CURRENT_RUNTIME_COUNTER(runtime_call_stats, counter_id) \
+ do { \
+ if (V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled()) && \
+ runtime_call_stats) { \
+ runtime_call_stats->CorrectCurrentCounterId(counter_id); \
+ } \
+ } while (false)
+
+#define TRACE_HANDLER_STATS(isolate, counter_name) \
+ CHANGE_CURRENT_RUNTIME_COUNTER( \
+ isolate->counters()->runtime_call_stats(), \
+ RuntimeCallCounterId::kHandler_##counter_name)
+
+// A RuntimeCallTimerScopes wraps around a RuntimeCallTimer to measure the
+// the time of C++ scope.
+class V8_NODISCARD RuntimeCallTimerScope {
+ public:
+ inline RuntimeCallTimerScope(Isolate* isolate,
+ RuntimeCallCounterId counter_id);
+ inline RuntimeCallTimerScope(RuntimeCallStats* stats,
+ RuntimeCallCounterId counter_id,
+ RuntimeCallStats::CounterMode mode =
+ RuntimeCallStats::CounterMode::kExact) {
+ if (V8_LIKELY(!TracingFlags::is_runtime_stats_enabled() ||
+ stats == nullptr)) {
+ return;
+ }
+ stats_ = stats;
+ if (mode == RuntimeCallStats::CounterMode::kThreadSpecific) {
+ counter_id = stats->CounterIdForThread(counter_id);
+ }
+
+ DCHECK(stats->IsCounterAppropriateForThread(counter_id));
+ stats_->Enter(&timer_, counter_id);
+ }
+
+ inline ~RuntimeCallTimerScope() {
+ if (V8_UNLIKELY(stats_ != nullptr)) {
+ stats_->Leave(&timer_);
+ }
+ }
+
+ RuntimeCallTimerScope(const RuntimeCallTimerScope&) = delete;
+ RuntimeCallTimerScope& operator=(const RuntimeCallTimerScope&) = delete;
+
+ private:
+ RuntimeCallStats* stats_ = nullptr;
+ RuntimeCallTimer timer_;
+};
+
+#else // RUNTIME_CALL_STATS
+
+#define RCS_SCOPE(...)
+#define TRACE_HANDLER_STATS(...)
+#define CHANGE_CURRENT_RUNTIME_COUNTER(...)
+
+// Create dummy types to limit code changes
+class WorkerThreadRuntimeCallStats {};
+
+class RuntimeCallStats {
+ public:
+ enum ThreadType { kMainIsolateThread, kWorkerThread };
+ explicit V8_EXPORT_PRIVATE RuntimeCallStats(ThreadType thread_type) {}
+};
+
+class WorkerThreadRuntimeCallStatsScope {
+ public:
+ explicit WorkerThreadRuntimeCallStatsScope(
+ WorkerThreadRuntimeCallStats* off_thread_stats) {}
+ RuntimeCallStats* Get() const { return nullptr; }
+};
+
+#endif // RUNTIME_CALL_STATS
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_LOGGING_RUNTIME_CALL_STATS_H_
diff --git a/deps/v8/src/numbers/conversions.cc b/deps/v8/src/numbers/conversions.cc
index d7c31c2e71..4a018854dd 100644
--- a/deps/v8/src/numbers/conversions.cc
+++ b/deps/v8/src/numbers/conversions.cc
@@ -182,23 +182,23 @@ enum class Sign { kNegative, kPositive, kNone };
// ES6 18.2.5 parseInt(string, radix) (with NumberParseIntHelper subclass);
// and BigInt parsing cases from https://tc39.github.io/proposal-bigint/
// (with StringToBigIntHelper subclass).
-template <typename LocalIsolate>
+template <typename IsolateT>
class StringToIntHelper {
public:
- StringToIntHelper(LocalIsolate* isolate, Handle<String> subject, int radix)
+ StringToIntHelper(IsolateT* isolate, Handle<String> subject, int radix)
: isolate_(isolate), subject_(subject), radix_(radix) {
DCHECK(subject->IsFlat());
}
// Used for the StringToBigInt operation.
- StringToIntHelper(LocalIsolate* isolate, Handle<String> subject)
+ StringToIntHelper(IsolateT* isolate, Handle<String> subject)
: isolate_(isolate), subject_(subject) {
DCHECK(subject->IsFlat());
}
// Used for parsing BigInt literals, where the input is a Zone-allocated
// buffer of one-byte digits, along with an optional radix prefix.
- StringToIntHelper(LocalIsolate* isolate, const uint8_t* subject, int length)
+ StringToIntHelper(IsolateT* isolate, const uint8_t* subject, int length)
: isolate_(isolate), raw_one_byte_subject_(subject), length_(length) {}
virtual ~StringToIntHelper() = default;
@@ -239,7 +239,7 @@ class StringToIntHelper {
return subject_->GetFlatContent(no_gc).ToUC16Vector();
}
- LocalIsolate* isolate() { return isolate_; }
+ IsolateT* isolate() { return isolate_; }
int radix() { return radix_; }
int cursor() { return cursor_; }
int length() { return length_; }
@@ -254,7 +254,7 @@ class StringToIntHelper {
template <class Char>
bool ParseChunkInternal(Char start);
- LocalIsolate* isolate_;
+ IsolateT* isolate_;
Handle<String> subject_;
const uint8_t* raw_one_byte_subject_ = nullptr;
int radix_ = 0;
@@ -267,8 +267,8 @@ class StringToIntHelper {
State state_ = State::kRunning;
};
-template <typename LocalIsolate>
-void StringToIntHelper<LocalIsolate>::ParseInt() {
+template <typename IsolateT>
+void StringToIntHelper<IsolateT>::ParseInt() {
{
DisallowGarbageCollection no_gc;
if (IsOneByte()) {
@@ -311,10 +311,10 @@ void StringToIntHelper<LocalIsolate>::ParseInt() {
DCHECK_NE(state_, State::kRunning);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
template <class Char>
-void StringToIntHelper<LocalIsolate>::DetectRadixInternal(Char current,
- int length) {
+void StringToIntHelper<IsolateT>::DetectRadixInternal(Char current,
+ int length) {
Char start = current;
length_ = length;
Char end = start + length;
@@ -391,9 +391,9 @@ void StringToIntHelper<LocalIsolate>::DetectRadixInternal(Char current,
cursor_ = static_cast<int>(current - start);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
template <class Char>
-bool StringToIntHelper<LocalIsolate>::ParseChunkInternal(Char start) {
+bool StringToIntHelper<IsolateT>::ParseChunkInternal(Char start) {
const int kChunkSize = 10240;
Char current = start + cursor_;
Char end = start + length_;
@@ -860,14 +860,14 @@ double StringToInt(Isolate* isolate, Handle<String> string, int radix) {
return helper.GetResult();
}
-template <typename LocalIsolate>
-class StringToBigIntHelper : public StringToIntHelper<LocalIsolate> {
+template <typename IsolateT>
+class StringToBigIntHelper : public StringToIntHelper<IsolateT> {
public:
enum class Behavior { kStringToBigInt, kLiteral };
// Used for StringToBigInt operation (BigInt constructor and == operator).
- StringToBigIntHelper(LocalIsolate* isolate, Handle<String> string)
- : StringToIntHelper<LocalIsolate>(isolate, string),
+ StringToBigIntHelper(IsolateT* isolate, Handle<String> string)
+ : StringToIntHelper<IsolateT>(isolate, string),
behavior_(Behavior::kStringToBigInt) {
this->set_allow_binary_and_octal_prefixes();
this->set_disallow_trailing_junk();
@@ -875,8 +875,8 @@ class StringToBigIntHelper : public StringToIntHelper<LocalIsolate> {
// Used for parsing BigInt literals, where the input is a buffer of
// one-byte ASCII digits, along with an optional radix prefix.
- StringToBigIntHelper(LocalIsolate* isolate, const uint8_t* string, int length)
- : StringToIntHelper<LocalIsolate>(isolate, string, length),
+ StringToBigIntHelper(IsolateT* isolate, const uint8_t* string, int length)
+ : StringToIntHelper<IsolateT>(isolate, string, length),
behavior_(Behavior::kLiteral) {
this->set_allow_binary_and_octal_prefixes();
}
@@ -943,8 +943,8 @@ class StringToBigIntHelper : public StringToIntHelper<LocalIsolate> {
Behavior behavior_;
};
-template <typename LocalIsolate>
-bool StringToBigIntHelper<LocalIsolate>::CheckTermination() {
+template <typename IsolateT>
+bool StringToBigIntHelper<IsolateT>::CheckTermination() {
return false;
}
@@ -961,9 +961,9 @@ MaybeHandle<BigInt> StringToBigInt(Isolate* isolate, Handle<String> string) {
return helper.GetResult();
}
-template <typename LocalIsolate>
-MaybeHandle<BigInt> BigIntLiteral(LocalIsolate* isolate, const char* string) {
- StringToBigIntHelper<LocalIsolate> helper(
+template <typename IsolateT>
+MaybeHandle<BigInt> BigIntLiteral(IsolateT* isolate, const char* string) {
+ StringToBigIntHelper<IsolateT> helper(
isolate, reinterpret_cast<const uint8_t*>(string),
static_cast<int>(strlen(string)));
return helper.GetResult();
diff --git a/deps/v8/src/numbers/conversions.h b/deps/v8/src/numbers/conversions.h
index d4a09e1b20..935d6f57e2 100644
--- a/deps/v8/src/numbers/conversions.h
+++ b/deps/v8/src/numbers/conversions.h
@@ -101,9 +101,9 @@ MaybeHandle<BigInt> StringToBigInt(Isolate* isolate, Handle<String> string);
// 0x -> hex
// 0o -> octal
// 0b -> binary
-template <typename LocalIsolate>
+template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
-MaybeHandle<BigInt> BigIntLiteral(LocalIsolate* isolate, const char* string);
+MaybeHandle<BigInt> BigIntLiteral(IsolateT* isolate, const char* string);
const int kDoubleToCStringMinBufferSize = 100;
diff --git a/deps/v8/src/numbers/dtoa.h b/deps/v8/src/numbers/dtoa.h
index da67c180e8..cf540f1213 100644
--- a/deps/v8/src/numbers/dtoa.h
+++ b/deps/v8/src/numbers/dtoa.h
@@ -23,9 +23,14 @@ enum DtoaMode {
DTOA_PRECISION
};
-// The maximal length of digits a double can have in base 10.
-// Note that DoubleToAscii null-terminates its input. So the given buffer should
-// be at least kBase10MaximalLength + 1 characters long.
+// The maximal length of digits a double can have in base 10 as returned by
+// 'DoubleToAscii'. This does neither include sign, decimal point nor exponent.
+// For example DoubleToAscii(-3.5844466002796428e+298, ..., buffer, ...) will
+// fill buffer with the string "35844466002796428", while sign and decimal point
+// position will be provided through additional output arguments.
+// kBase10MaximalLength refers to the maximal length of this string. Note that
+// DoubleToAscii null-terminates its input. So the given buffer should be at
+// least kBase10MaximalLength + 1 characters long.
const int kBase10MaximalLength = 17;
// Converts the given double 'v' to ASCII.
diff --git a/deps/v8/src/objects/all-objects-inl.h b/deps/v8/src/objects/all-objects-inl.h
index 78c239fd77..5a78cefc8d 100644
--- a/deps/v8/src/objects/all-objects-inl.h
+++ b/deps/v8/src/objects/all-objects-inl.h
@@ -52,6 +52,7 @@
#include "src/objects/lookup-inl.h"
#include "src/objects/map-inl.h"
#include "src/objects/maybe-object-inl.h"
+#include "src/objects/megadom-handler-inl.h"
#include "src/objects/microtask-inl.h"
#include "src/objects/module-inl.h"
#include "src/objects/name-inl.h"
diff --git a/deps/v8/src/objects/allocation-site-inl.h b/deps/v8/src/objects/allocation-site-inl.h
index d9911bc826..68e91e68a5 100644
--- a/deps/v8/src/objects/allocation-site-inl.h
+++ b/deps/v8/src/objects/allocation-site-inl.h
@@ -27,6 +27,8 @@ CAST_ACCESSOR(AllocationSite)
ACCESSORS(AllocationSite, transition_info_or_boilerplate, Object,
kTransitionInfoOrBoilerplateOffset)
+RELEASE_ACQUIRE_ACCESSORS(AllocationSite, transition_info_or_boilerplate,
+ Object, kTransitionInfoOrBoilerplateOffset)
ACCESSORS(AllocationSite, nested_site, Object, kNestedSiteOffset)
INT32_ACCESSORS(AllocationSite, pretenure_data, kPretenureDataOffset)
INT32_ACCESSORS(AllocationSite, pretenure_create_count,
@@ -41,8 +43,14 @@ JSObject AllocationSite::boilerplate() const {
return JSObject::cast(transition_info_or_boilerplate());
}
-void AllocationSite::set_boilerplate(JSObject object, WriteBarrierMode mode) {
- set_transition_info_or_boilerplate(object, mode);
+JSObject AllocationSite::boilerplate(AcquireLoadTag tag) const {
+ DCHECK(PointsToLiteral());
+ return JSObject::cast(transition_info_or_boilerplate(tag));
+}
+
+void AllocationSite::set_boilerplate(JSObject value, ReleaseStoreTag tag,
+ WriteBarrierMode mode) {
+ set_transition_info_or_boilerplate(value, tag, mode);
}
int AllocationSite::transition_info() const {
diff --git a/deps/v8/src/objects/allocation-site.h b/deps/v8/src/objects/allocation-site.h
index 437876d94c..549e82a4da 100644
--- a/deps/v8/src/objects/allocation-site.h
+++ b/deps/v8/src/objects/allocation-site.h
@@ -40,7 +40,9 @@ class AllocationSite : public Struct {
// Contains either a Smi-encoded bitfield or a boilerplate. If it's a Smi the
// AllocationSite is for a constructed Array.
DECL_ACCESSORS(transition_info_or_boilerplate, Object)
- DECL_ACCESSORS(boilerplate, JSObject)
+ DECL_RELEASE_ACQUIRE_ACCESSORS(transition_info_or_boilerplate, Object)
+ DECL_GETTER(boilerplate, JSObject)
+ DECL_RELEASE_ACQUIRE_ACCESSORS(boilerplate, JSObject)
DECL_INT_ACCESSORS(transition_info)
// nested_site threads a list of sites that represent nested literals
@@ -68,9 +70,9 @@ class AllocationSite : public Struct {
bool IsNested();
// transition_info bitfields, for constructed array transition info.
- using ElementsKindBits = base::BitField<ElementsKind, 0, 5>;
- using DoNotInlineBit = base::BitField<bool, 5, 1>;
- // Unused bits 6-30.
+ using ElementsKindBits = base::BitField<ElementsKind, 0, 6>;
+ using DoNotInlineBit = base::BitField<bool, 6, 1>;
+ // Unused bits 7-30.
// Bitfields for pretenure_data
using MementoFoundCountBits = base::BitField<int, 0, 26>;
diff --git a/deps/v8/src/objects/api-callbacks.h b/deps/v8/src/objects/api-callbacks.h
index f5d81dd986..a55ca5eb62 100644
--- a/deps/v8/src/objects/api-callbacks.h
+++ b/deps/v8/src/objects/api-callbacks.h
@@ -64,6 +64,8 @@ class AccessorInfo : public TorqueGeneratedAccessorInfo<AccessorInfo, Struct> {
static int AppendUnique(Isolate* isolate, Handle<Object> descriptors,
Handle<FixedArray> array, int valid_descriptors);
+ DECL_PRINTER(AccessorInfo)
+
private:
inline bool HasExpectedReceiverType();
diff --git a/deps/v8/src/objects/arguments.tq b/deps/v8/src/objects/arguments.tq
index b65464688a..6f8e02fdbc 100644
--- a/deps/v8/src/objects/arguments.tq
+++ b/deps/v8/src/objects/arguments.tq
@@ -80,7 +80,7 @@ extern shape JSStrictArgumentsObject extends JSArgumentsObject {
class SloppyArgumentsElements extends FixedArrayBase {
context: Context;
arguments: FixedArray|NumberDictionary;
- @relaxedRead mapped_entries[length]: Smi|TheHole;
+ @cppRelaxedLoad mapped_entries[length]: Smi|TheHole;
}
macro NewSloppyArgumentsElements<Iterator: type>(
diff --git a/deps/v8/src/objects/backing-store.cc b/deps/v8/src/objects/backing-store.cc
index 08288ef62c..77eaf3a722 100644
--- a/deps/v8/src/objects/backing-store.cc
+++ b/deps/v8/src/objects/backing-store.cc
@@ -37,6 +37,14 @@ namespace {
constexpr size_t kPlatformMaxPages =
std::numeric_limits<size_t>::max() / wasm::kWasmPageSize;
+constexpr uint64_t kNegativeGuardSize = uint64_t{2} * GB;
+
+#if V8_TARGET_ARCH_64_BIT
+constexpr uint64_t kFullGuardSize = uint64_t{10} * GB;
+#endif
+
+#endif // V8_ENABLE_WEBASSEMBLY
+
#if V8_TARGET_ARCH_MIPS64
// MIPS64 has a user space of 2^40 bytes on most processors,
// address space limits needs to be smaller.
@@ -50,12 +58,6 @@ constexpr size_t kAddressSpaceLimit = 0x10100000000L; // 1 TiB + 4 GiB
constexpr size_t kAddressSpaceLimit = 0xC0000000; // 3 GiB
#endif
-constexpr uint64_t kNegativeGuardSize = uint64_t{2} * GB;
-
-#if V8_TARGET_ARCH_64_BIT
-constexpr uint64_t kFullGuardSize = uint64_t{10} * GB;
-#endif
-
std::atomic<uint64_t> reserved_address_space_{0};
// Allocation results are reported to UMA
@@ -75,7 +77,7 @@ enum class AllocationStatus {
base::AddressRegion GetReservedRegion(bool has_guard_regions,
void* buffer_start,
size_t byte_capacity) {
-#if V8_TARGET_ARCH_64_BIT
+#if V8_TARGET_ARCH_64_BIT && V8_ENABLE_WEBASSEMBLY
if (has_guard_regions) {
// Guard regions always look like this:
// |xxx(2GiB)xxx|.......(4GiB)..xxxxx|xxxxxx(4GiB)xxxxxx|
@@ -97,7 +99,7 @@ base::AddressRegion GetReservedRegion(bool has_guard_regions,
}
size_t GetReservationSize(bool has_guard_regions, size_t byte_capacity) {
-#if V8_TARGET_ARCH_64_BIT
+#if V8_TARGET_ARCH_64_BIT && V8_ENABLE_WEBASSEMBLY
if (has_guard_regions) return kFullGuardSize;
#else
DCHECK(!has_guard_regions);
@@ -110,7 +112,6 @@ void RecordStatus(Isolate* isolate, AllocationStatus status) {
isolate->counters()->wasm_memory_allocation_result()->AddSample(
static_cast<int>(status));
}
-#endif // V8_ENABLE_WEBASSEMBLY
inline void DebugCheckZero(void* start, size_t byte_length) {
#if DEBUG
@@ -160,6 +161,8 @@ BackingStore::~BackingStore() {
#if V8_ENABLE_WEBASSEMBLY
if (is_wasm_memory_) {
+ // TODO(v8:11111): RAB / GSAB - Wasm integration.
+ DCHECK(!is_resizable_);
DCHECK(free_on_destruct_);
DCHECK(!custom_deleter_);
size_t reservation_size =
@@ -189,6 +192,23 @@ BackingStore::~BackingStore() {
}
#endif // V8_ENABLE_WEBASSEMBLY
+ if (is_resizable_) {
+ DCHECK(free_on_destruct_);
+ DCHECK(!custom_deleter_);
+ size_t reservation_size =
+ GetReservationSize(has_guard_regions_, byte_capacity_);
+ auto region =
+ GetReservedRegion(has_guard_regions_, buffer_start_, byte_capacity_);
+
+ bool pages_were_freed =
+ region.size() == 0 /* no need to free any pages */ ||
+ FreePages(GetPlatformPageAllocator(),
+ reinterpret_cast<void*>(region.begin()), region.size());
+ CHECK(pages_were_freed);
+ BackingStore::ReleaseReservation(reservation_size);
+ Clear();
+ return;
+ }
if (custom_deleter_) {
DCHECK(free_on_destruct_);
TRACE_BS("BS:custom deleter bs=%p mem=%p (length=%zu, capacity=%zu)\n",
@@ -252,15 +272,16 @@ std::unique_ptr<BackingStore> BackingStore::Allocate(
}
}
- auto result = new BackingStore(buffer_start, // start
- byte_length, // length
- byte_length, // capacity
- shared, // shared
- false, // is_wasm_memory
- true, // free_on_destruct
- false, // has_guard_regions
- false, // custom_deleter
- false); // empty_deleter
+ auto result = new BackingStore(buffer_start, // start
+ byte_length, // length
+ byte_length, // capacity
+ shared, // shared
+ ResizableFlag::kNotResizable, // resizable
+ false, // is_wasm_memory
+ true, // free_on_destruct
+ false, // has_guard_regions
+ false, // custom_deleter
+ false); // empty_deleter
TRACE_BS("BS:alloc bs=%p mem=%p (length=%zu)\n", result,
result->buffer_start(), byte_length);
@@ -281,6 +302,27 @@ void BackingStore::SetAllocatorFromIsolate(Isolate* isolate) {
}
#if V8_ENABLE_WEBASSEMBLY
+// Allocate a backing store for a Wasm memory. Always use the page allocator
+// and add guard regions.
+std::unique_ptr<BackingStore> BackingStore::TryAllocateWasmMemory(
+ Isolate* isolate, size_t initial_pages, size_t maximum_pages,
+ SharedFlag shared) {
+ // Compute size of reserved memory.
+ size_t engine_max_pages = wasm::max_mem_pages();
+ maximum_pages = std::min(engine_max_pages, maximum_pages);
+
+ auto result = TryAllocateAndPartiallyCommitMemory(
+ isolate, initial_pages * wasm::kWasmPageSize, wasm::kWasmPageSize,
+ initial_pages, maximum_pages, true, shared);
+ // Shared Wasm memories need an anchor for the memory object list.
+ if (result && shared == SharedFlag::kShared) {
+ result->type_specific_data_.shared_wasm_memory_data =
+ new SharedWasmMemoryData();
+ }
+ return result;
+}
+#endif // V8_ENABLE_WEBASSEMBLY
+
bool BackingStore::ReserveAddressSpace(uint64_t num_bytes) {
uint64_t reservation_limit = kAddressSpaceLimit;
uint64_t old_count = reserved_address_space_.load(std::memory_order_relaxed);
@@ -300,17 +342,21 @@ void BackingStore::ReleaseReservation(uint64_t num_bytes) {
DCHECK_LE(num_bytes, old_reserved);
}
-// Allocate a backing store for a Wasm memory. Always use the page allocator
-// and add guard regions.
-std::unique_ptr<BackingStore> BackingStore::TryAllocateWasmMemory(
- Isolate* isolate, size_t initial_pages, size_t maximum_pages,
+std::unique_ptr<BackingStore> BackingStore::TryAllocateAndPartiallyCommitMemory(
+ Isolate* isolate, size_t byte_length, size_t page_size,
+ size_t initial_pages, size_t maximum_pages, bool is_wasm_memory,
SharedFlag shared) {
+ // Enforce engine limitation on the maximum number of pages.
+ if (maximum_pages > std::numeric_limits<size_t>::max() / page_size) {
+ return nullptr;
+ }
+
// Cannot reserve 0 pages on some OSes.
if (maximum_pages == 0) maximum_pages = 1;
TRACE_BS("BSw:try %zu pages, %zu max\n", initial_pages, maximum_pages);
- bool guards = trap_handler::IsTrapHandlerEnabled();
+ bool guards = is_wasm_memory && trap_handler::IsTrapHandlerEnabled();
// For accounting purposes, whether a GC was necessary.
bool did_retry = false;
@@ -329,16 +375,7 @@ std::unique_ptr<BackingStore> BackingStore::TryAllocateWasmMemory(
return false;
};
- // Compute size of reserved memory.
-
- size_t engine_max_pages = wasm::max_mem_pages();
- maximum_pages = std::min(engine_max_pages, maximum_pages);
- // If the platform doesn't support so many pages, attempting to allocate
- // is guaranteed to fail, so we don't even try.
- if (maximum_pages > kPlatformMaxPages) return {};
- CHECK_LE(maximum_pages,
- std::numeric_limits<size_t>::max() / wasm::kWasmPageSize);
- size_t byte_capacity = maximum_pages * wasm::kWasmPageSize;
+ size_t byte_capacity = maximum_pages * page_size;
size_t reservation_size = GetReservationSize(guards, byte_capacity);
//--------------------------------------------------------------------------
@@ -366,7 +403,7 @@ std::unique_ptr<BackingStore> BackingStore::TryAllocateWasmMemory(
auto allocate_pages = [&] {
allocation_base =
AllocatePages(GetPlatformPageAllocator(), nullptr, reservation_size,
- wasm::kWasmPageSize, PageAllocator::kNoAccess);
+ page_size, PageAllocator::kNoAccess);
return allocation_base != nullptr;
};
if (!gc_retry(allocate_pages)) {
@@ -379,23 +416,27 @@ std::unique_ptr<BackingStore> BackingStore::TryAllocateWasmMemory(
// Get a pointer to the start of the buffer, skipping negative guard region
// if necessary.
+#if V8_ENABLE_WEBASSEMBLY
byte* buffer_start = reinterpret_cast<byte*>(allocation_base) +
(guards ? kNegativeGuardSize : 0);
-
+#else
+ DCHECK(!guards);
+ byte* buffer_start = reinterpret_cast<byte*>(allocation_base);
+#endif
//--------------------------------------------------------------------------
// 3. Commit the initial pages (allow read/write).
//--------------------------------------------------------------------------
- size_t byte_length = initial_pages * wasm::kWasmPageSize;
+ size_t committed_byte_length = initial_pages * page_size;
auto commit_memory = [&] {
- return byte_length == 0 ||
- SetPermissions(GetPlatformPageAllocator(), buffer_start, byte_length,
- PageAllocator::kReadWrite);
+ return committed_byte_length == 0 ||
+ SetPermissions(GetPlatformPageAllocator(), buffer_start,
+ committed_byte_length, PageAllocator::kReadWrite);
};
if (!gc_retry(commit_memory)) {
TRACE_BS("BSw:try failed to set permissions (%p, %zu)\n", buffer_start,
- byte_length);
+ committed_byte_length);
// SetPermissions put us over the process memory limit.
- V8::FatalProcessOutOfMemory(nullptr, "BackingStore::AllocateWasmMemory()");
+ V8::FatalProcessOutOfMemory(nullptr, "BackingStore::AllocateMemory()");
}
DebugCheckZero(buffer_start, byte_length); // touch the bytes.
@@ -403,30 +444,29 @@ std::unique_ptr<BackingStore> BackingStore::TryAllocateWasmMemory(
RecordStatus(isolate, did_retry ? AllocationStatus::kSuccessAfterRetry
: AllocationStatus::kSuccess);
- auto result = new BackingStore(buffer_start, // start
- byte_length, // length
- byte_capacity, // capacity
- shared, // shared
- true, // is_wasm_memory
- true, // free_on_destruct
- guards, // has_guard_regions
- false, // custom_deleter
- false); // empty_deleter
+ ResizableFlag resizable =
+ is_wasm_memory ? ResizableFlag::kNotResizable : ResizableFlag::kResizable;
+
+ auto result = new BackingStore(buffer_start, // start
+ byte_length, // length
+ byte_capacity, // capacity
+ shared, // shared
+ resizable, // resizable
+ is_wasm_memory, // is_wasm_memory
+ true, // free_on_destruct
+ guards, // has_guard_regions
+ false, // custom_deleter
+ false); // empty_deleter
TRACE_BS(
"BSw:alloc bs=%p mem=%p (length=%zu, capacity=%zu, reservation=%zu)\n",
result, result->buffer_start(), byte_length, byte_capacity,
reservation_size);
- // Shared Wasm memories need an anchor for the memory object list.
- if (shared == SharedFlag::kShared) {
- result->type_specific_data_.shared_wasm_memory_data =
- new SharedWasmMemoryData();
- }
-
return std::unique_ptr<BackingStore>(result);
}
+#if V8_ENABLE_WEBASSEMBLY
// Allocate a backing store for a Wasm memory. Always use the page allocator
// and add guard regions.
std::unique_ptr<BackingStore> BackingStore::AllocateWasmMemory(
@@ -583,18 +623,102 @@ void BackingStore::UpdateSharedWasmMemoryObjects(Isolate* isolate) {
}
#endif // V8_ENABLE_WEBASSEMBLY
+// Commit already reserved memory (for RAB backing stores (not shared)).
+BackingStore::ResizeOrGrowResult BackingStore::ResizeInPlace(
+ Isolate* isolate, size_t new_byte_length, size_t new_committed_length) {
+ DCHECK_LE(new_byte_length, new_committed_length);
+ DCHECK(!is_shared());
+
+ if (new_byte_length < byte_length_) {
+ // TOOO(v8:11111): Figure out a strategy for shrinking - when do we
+ // un-commit the memory?
+
+ // Zero the memory so that in case the buffer is grown later, we have
+ // zeroed the contents already.
+ memset(reinterpret_cast<byte*>(buffer_start_) + new_byte_length, 0,
+ byte_length_ - new_byte_length);
+
+ // Changing the byte length wouldn't strictly speaking be needed, since
+ // the JSArrayBuffer already stores the updated length. This is to keep
+ // the BackingStore and JSArrayBuffer in sync.
+ byte_length_ = new_byte_length;
+ return kSuccess;
+ }
+ if (new_byte_length == byte_length_) {
+ // i::SetPermissions with size 0 fails on some platforms, so special
+ // handling for the case byte_length_ == new_byte_length == 0 is required.
+ return kSuccess;
+ }
+
+ // Try to adjust the permissions on the memory.
+ if (!i::SetPermissions(GetPlatformPageAllocator(), buffer_start_,
+ new_committed_length, PageAllocator::kReadWrite)) {
+ return kFailure;
+ }
+
+ // Do per-isolate accounting for non-shared backing stores.
+ DCHECK(free_on_destruct_);
+ reinterpret_cast<v8::Isolate*>(isolate)
+ ->AdjustAmountOfExternalAllocatedMemory(new_byte_length - byte_length_);
+ byte_length_ = new_byte_length;
+ return kSuccess;
+}
+
+// Commit already reserved memory (for GSAB backing stores (shared)).
+BackingStore::ResizeOrGrowResult BackingStore::GrowInPlace(
+ Isolate* isolate, size_t new_byte_length, size_t new_committed_length) {
+ DCHECK_LE(new_byte_length, new_committed_length);
+ DCHECK(is_shared());
+ // See comment in GrowWasmMemoryInPlace.
+ // GrowableSharedArrayBuffer.prototype.grow can be called from several
+ // threads. If two threads try to grow() in a racy way, the spec allows the
+ // larger grow to throw also if the smaller grow succeeds first. The
+ // implementation below doesn't throw in that case - instead, it retries and
+ // succeeds. If the larger grow finishes first though, the smaller grow must
+ // throw.
+ size_t old_byte_length = byte_length_.load(std::memory_order_seq_cst);
+ while (true) {
+ if (new_byte_length < old_byte_length) {
+ // The caller checks for the new_byte_length < old_byte_length_ case. This
+ // can only happen if another thread grew the memory after that.
+ return kRace;
+ }
+ if (new_byte_length == old_byte_length) {
+ // i::SetPermissions with size 0 fails on some platforms, so special
+ // handling for the case old_byte_length == new_byte_length == 0 is
+ // required.
+ return kSuccess;
+ }
+
+ // Try to adjust the permissions on the memory.
+ if (!i::SetPermissions(GetPlatformPageAllocator(), buffer_start_,
+ new_committed_length, PageAllocator::kReadWrite)) {
+ return kFailure;
+ }
+
+ // compare_exchange_weak updates old_byte_length.
+ if (byte_length_.compare_exchange_weak(old_byte_length, new_byte_length,
+ std::memory_order_seq_cst)) {
+ // Successfully updated both the length and permissions.
+ break;
+ }
+ }
+ return kSuccess;
+}
+
std::unique_ptr<BackingStore> BackingStore::WrapAllocation(
Isolate* isolate, void* allocation_base, size_t allocation_length,
SharedFlag shared, bool free_on_destruct) {
- auto result = new BackingStore(allocation_base, // start
- allocation_length, // length
- allocation_length, // capacity
- shared, // shared
- false, // is_wasm_memory
- free_on_destruct, // free_on_destruct
- false, // has_guard_regions
- false, // custom_deleter
- false); // empty_deleter
+ auto result = new BackingStore(allocation_base, // start
+ allocation_length, // length
+ allocation_length, // capacity
+ shared, // shared
+ ResizableFlag::kNotResizable, // resizable
+ false, // is_wasm_memory
+ free_on_destruct, // free_on_destruct
+ false, // has_guard_regions
+ false, // custom_deleter
+ false); // empty_deleter
result->SetAllocatorFromIsolate(isolate);
TRACE_BS("BS:wrap bs=%p mem=%p (length=%zu)\n", result,
result->buffer_start(), result->byte_length());
@@ -606,10 +730,11 @@ std::unique_ptr<BackingStore> BackingStore::WrapAllocation(
v8::BackingStore::DeleterCallback deleter, void* deleter_data,
SharedFlag shared) {
bool is_empty_deleter = (deleter == v8::BackingStore::EmptyDeleter);
- auto result = new BackingStore(allocation_base, // start
- allocation_length, // length
- allocation_length, // capacity
- shared, // shared
+ auto result = new BackingStore(allocation_base, // start
+ allocation_length, // length
+ allocation_length, // capacity
+ shared, // shared
+ ResizableFlag::kNotResizable, // resizable
false, // is_wasm_memory
true, // free_on_destruct
false, // has_guard_regions
@@ -623,15 +748,16 @@ std::unique_ptr<BackingStore> BackingStore::WrapAllocation(
std::unique_ptr<BackingStore> BackingStore::EmptyBackingStore(
SharedFlag shared) {
- auto result = new BackingStore(nullptr, // start
- 0, // length
- 0, // capacity
- shared, // shared
- false, // is_wasm_memory
- true, // free_on_destruct
- false, // has_guard_regions
- false, // custom_deleter
- false); // empty_deleter
+ auto result = new BackingStore(nullptr, // start
+ 0, // length
+ 0, // capacity
+ shared, // shared
+ ResizableFlag::kNotResizable, // resizable
+ false, // is_wasm_memory
+ true, // free_on_destruct
+ false, // has_guard_regions
+ false, // custom_deleter
+ false); // empty_deleter
return std::unique_ptr<BackingStore>(result);
}
diff --git a/deps/v8/src/objects/backing-store.h b/deps/v8/src/objects/backing-store.h
index eb879d5e8a..5598388d3b 100644
--- a/deps/v8/src/objects/backing-store.h
+++ b/deps/v8/src/objects/backing-store.h
@@ -21,6 +21,9 @@ class WasmMemoryObject;
// Whether the backing store is shared or not.
enum class SharedFlag : uint8_t { kNotShared, kShared };
+// Whether the backing store is resizable or not.
+enum class ResizableFlag : uint8_t { kNotResizable, kResizable };
+
// Whether the backing store memory is initialied to zero or not.
enum class InitializedFlag : uint8_t { kUninitialized, kZeroInitialized };
@@ -56,6 +59,12 @@ class V8_EXPORT_PRIVATE BackingStore : public BackingStoreBase {
SharedFlag shared);
#endif // V8_ENABLE_WEBASSEMBLY
+ // Tries to allocate `maximum_pages` of memory and commit `initial_pages`.
+ static std::unique_ptr<BackingStore> TryAllocateAndPartiallyCommitMemory(
+ Isolate* isolate, size_t byte_length, size_t page_size,
+ size_t initial_pages, size_t maximum_pages, bool is_wasm_memory,
+ SharedFlag shared);
+
// Create a backing store that wraps existing allocated memory.
// If {free_on_destruct} is {true}, the memory will be freed using the
// ArrayBufferAllocator::Free() callback when this backing store is
@@ -77,15 +86,24 @@ class V8_EXPORT_PRIVATE BackingStore : public BackingStoreBase {
// Accessors.
void* buffer_start() const { return buffer_start_; }
- size_t byte_length() const {
- return byte_length_.load(std::memory_order_relaxed);
+ size_t byte_length(
+ std::memory_order memory_order = std::memory_order_relaxed) const {
+ return byte_length_.load(memory_order);
}
size_t byte_capacity() const { return byte_capacity_; }
bool is_shared() const { return is_shared_; }
+ bool is_resizable() const { return is_resizable_; }
bool is_wasm_memory() const { return is_wasm_memory_; }
bool has_guard_regions() const { return has_guard_regions_; }
bool free_on_destruct() const { return free_on_destruct_; }
+ enum ResizeOrGrowResult { kSuccess, kFailure, kRace };
+
+ ResizeOrGrowResult ResizeInPlace(Isolate* isolate, size_t new_byte_length,
+ size_t new_committed_length);
+ ResizeOrGrowResult GrowInPlace(Isolate* isolate, size_t new_byte_length,
+ size_t new_committed_length);
+
// Wrapper around ArrayBuffer::Allocator::Reallocate.
bool Reallocate(Isolate* isolate, size_t new_byte_length);
@@ -111,12 +129,6 @@ class V8_EXPORT_PRIVATE BackingStore : public BackingStoreBase {
static void BroadcastSharedWasmMemoryGrow(Isolate* isolate,
std::shared_ptr<BackingStore>);
- // TODO(wasm): address space limitations should be enforced in page alloc.
- // These methods enforce a limit on the total amount of address space,
- // which is used for both backing stores and wasm memory.
- static bool ReserveAddressSpace(uint64_t num_bytes);
- static void ReleaseReservation(uint64_t num_bytes);
-
// Remove all memory objects in the given isolate that refer to this
// backing store.
static void RemoveSharedWasmMemoryObjects(Isolate* isolate);
@@ -125,6 +137,12 @@ class V8_EXPORT_PRIVATE BackingStore : public BackingStoreBase {
static void UpdateSharedWasmMemoryObjects(Isolate* isolate);
#endif // V8_ENABLE_WEBASSEMBLY
+ // TODO(wasm): address space limitations should be enforced in page alloc.
+ // These methods enforce a limit on the total amount of address space,
+ // which is used for both backing stores and wasm memory.
+ static bool ReserveAddressSpace(uint64_t num_bytes);
+ static void ReleaseReservation(uint64_t num_bytes);
+
// Returns the size of the external memory owned by this backing store.
// It is used for triggering GCs based on the external memory pressure.
size_t PerIsolateAccountingLength() {
@@ -148,19 +166,26 @@ class V8_EXPORT_PRIVATE BackingStore : public BackingStoreBase {
friend class GlobalBackingStoreRegistry;
BackingStore(void* buffer_start, size_t byte_length, size_t byte_capacity,
- SharedFlag shared, bool is_wasm_memory, bool free_on_destruct,
- bool has_guard_regions, bool custom_deleter, bool empty_deleter)
+ SharedFlag shared, ResizableFlag resizable, bool is_wasm_memory,
+ bool free_on_destruct, bool has_guard_regions,
+ bool custom_deleter, bool empty_deleter)
: buffer_start_(buffer_start),
byte_length_(byte_length),
byte_capacity_(byte_capacity),
is_shared_(shared == SharedFlag::kShared),
+ is_resizable_(resizable == ResizableFlag::kResizable),
is_wasm_memory_(is_wasm_memory),
holds_shared_ptr_to_allocator_(false),
free_on_destruct_(free_on_destruct),
has_guard_regions_(has_guard_regions),
globally_registered_(false),
custom_deleter_(custom_deleter),
- empty_deleter_(empty_deleter) {}
+ empty_deleter_(empty_deleter) {
+ // TODO(v8:11111): RAB / GSAB - Wasm integration.
+ DCHECK_IMPLIES(is_wasm_memory_, !is_resizable_);
+ DCHECK_IMPLIES(is_resizable_, !custom_deleter_);
+ DCHECK_IMPLIES(is_resizable_, free_on_destruct_);
+ }
BackingStore(const BackingStore&) = delete;
BackingStore& operator=(const BackingStore&) = delete;
void SetAllocatorFromIsolate(Isolate* isolate);
@@ -199,6 +224,8 @@ class V8_EXPORT_PRIVATE BackingStore : public BackingStoreBase {
} type_specific_data_;
bool is_shared_ : 1;
+ // Backing stores for (Resizable|GrowableShared)ArrayBuffer
+ bool is_resizable_ : 1;
bool is_wasm_memory_ : 1;
bool holds_shared_ptr_to_allocator_ : 1;
bool free_on_destruct_ : 1;
diff --git a/deps/v8/src/objects/bigint.cc b/deps/v8/src/objects/bigint.cc
index cffac5af8e..9614d4d146 100644
--- a/deps/v8/src/objects/bigint.cc
+++ b/deps/v8/src/objects/bigint.cc
@@ -51,21 +51,20 @@ class MutableBigInt : public FreshlyAllocatedBigInt {
static void Canonicalize(MutableBigInt result);
// Allocation helpers.
- template <typename LocalIsolate>
+ template <typename IsolateT>
static MaybeHandle<MutableBigInt> New(
- LocalIsolate* isolate, int length,
+ IsolateT* isolate, int length,
AllocationType allocation = AllocationType::kYoung);
static Handle<BigInt> NewFromInt(Isolate* isolate, int value);
static Handle<BigInt> NewFromDouble(Isolate* isolate, double value);
void InitializeDigits(int length, byte value = 0);
static Handle<MutableBigInt> Copy(Isolate* isolate,
Handle<BigIntBase> source);
- template <typename LocalIsolate>
+ template <typename IsolateT>
static Handle<BigInt> Zero(
- LocalIsolate* isolate,
- AllocationType allocation = AllocationType::kYoung) {
+ IsolateT* isolate, AllocationType allocation = AllocationType::kYoung) {
// TODO(jkummerow): Consider caching a canonical zero-BigInt.
- return MakeImmutable<LocalIsolate>(
+ return MakeImmutable<IsolateT>(
New(isolate, 0, allocation).ToHandleChecked());
}
@@ -136,10 +135,6 @@ class MutableBigInt : public FreshlyAllocatedBigInt {
Isolate* isolate, Handle<BigIntBase> x, Handle<BigIntBase> y,
MutableBigInt result_storage = MutableBigInt());
- static void MultiplyAccumulate(Handle<BigIntBase> multiplicand,
- digit_t multiplier,
- Handle<MutableBigInt> accumulator,
- int accumulator_index);
static void InternalMultiplyAdd(BigIntBase source, digit_t factor,
digit_t summand, int n, MutableBigInt result);
void InplaceMultiplyAdd(uintptr_t factor, uintptr_t summand);
@@ -211,7 +206,7 @@ class MutableBigInt : public FreshlyAllocatedBigInt {
bitfield = SignBits::update(bitfield, new_sign);
RELAXED_WRITE_INT32_FIELD(*this, kBitfieldOffset, bitfield);
}
- inline void synchronized_set_length(int new_length) {
+ inline void set_length(int new_length, ReleaseStoreTag) {
int32_t bitfield = RELAXED_READ_INT32_FIELD(*this, kBitfieldOffset);
bitfield = LengthBits::update(bitfield, new_length);
RELEASE_WRITE_INT32_FIELD(*this, kBitfieldOffset, bitfield);
@@ -243,14 +238,25 @@ NEVER_READ_ONLY_SPACE_IMPL(MutableBigInt)
#include "src/base/platform/wrappers.h"
#include "src/objects/object-macros-undef.h"
-struct GetDigits : bigint::Digits {
- explicit GetDigits(Handle<BigIntBase> bigint) : GetDigits(*bigint) {}
- explicit GetDigits(BigIntBase bigint)
- : bigint::Digits(
- reinterpret_cast<bigint::digit_t*>(
- bigint.ptr() + BigIntBase::kDigitsOffset - kHeapObjectTag),
- bigint.length()) {}
-};
+bigint::Digits GetDigits(BigIntBase bigint) {
+ return bigint::Digits(
+ reinterpret_cast<bigint::digit_t*>(
+ bigint.ptr() + BigIntBase::kDigitsOffset - kHeapObjectTag),
+ bigint.length());
+}
+bigint::Digits GetDigits(Handle<BigIntBase> bigint) {
+ return GetDigits(*bigint);
+}
+
+bigint::RWDigits GetRWDigits(MutableBigInt bigint) {
+ return bigint::RWDigits(
+ reinterpret_cast<bigint::digit_t*>(
+ bigint.ptr() + BigIntBase::kDigitsOffset - kHeapObjectTag),
+ bigint.length());
+}
+bigint::RWDigits GetRWDigits(Handle<MutableBigInt> bigint) {
+ return GetRWDigits(*bigint);
+}
template <typename T, typename Isolate>
MaybeHandle<T> ThrowBigIntTooBig(Isolate* isolate) {
@@ -266,8 +272,8 @@ MaybeHandle<T> ThrowBigIntTooBig(Isolate* isolate) {
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kBigIntTooBig), T);
}
-template <typename LocalIsolate>
-MaybeHandle<MutableBigInt> MutableBigInt::New(LocalIsolate* isolate, int length,
+template <typename IsolateT>
+MaybeHandle<MutableBigInt> MutableBigInt::New(IsolateT* isolate, int length,
AllocationType allocation) {
if (length > BigInt::kMaxLength) {
return ThrowBigIntTooBig<MutableBigInt>(isolate);
@@ -390,7 +396,7 @@ MaybeHandle<BigInt> MutableBigInt::MakeImmutable(
return MakeImmutable(result);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<BigInt> MutableBigInt::MakeImmutable(Handle<MutableBigInt> result) {
MutableBigInt::Canonicalize(*result);
return Handle<BigInt>::cast(result);
@@ -412,7 +418,7 @@ void MutableBigInt::Canonicalize(MutableBigInt result) {
// of the object changed significantly.
heap->CreateFillerObjectAt(new_end, size_delta, ClearRecordedSlots::kNo);
}
- result.synchronized_set_length(new_length);
+ result.set_length(new_length, kReleaseStore);
// Canonicalize -0n.
if (new_length == 0) {
@@ -424,8 +430,8 @@ void MutableBigInt::Canonicalize(MutableBigInt result) {
result.digit(result.length() - 1) != 0); // MSD is non-zero.
}
-template <typename LocalIsolate>
-Handle<BigInt> BigInt::Zero(LocalIsolate* isolate, AllocationType allocation) {
+template <typename IsolateT>
+Handle<BigInt> BigInt::Zero(IsolateT* isolate, AllocationType allocation) {
return MutableBigInt::Zero(isolate, allocation);
}
template Handle<BigInt> BigInt::Zero(Isolate* isolate,
@@ -531,29 +537,18 @@ MaybeHandle<BigInt> BigInt::Multiply(Isolate* isolate, Handle<BigInt> x,
Handle<BigInt> y) {
if (x->is_zero()) return x;
if (y->is_zero()) return y;
- int result_length = x->length() + y->length();
+ int result_length = bigint::MultiplyResultLength(GetDigits(x), GetDigits(y));
Handle<MutableBigInt> result;
if (!MutableBigInt::New(isolate, result_length).ToHandle(&result)) {
return MaybeHandle<BigInt>();
}
- result->InitializeDigits(result_length);
- uintptr_t work_estimate = 0;
- for (int i = 0; i < x->length(); i++) {
- MutableBigInt::MultiplyAccumulate(y, x->digit(i), result, i);
-
- // Multiplication can take a long time. Check for interrupt requests
- // every now and then (roughly every 10-20 of milliseconds -- rarely
- // enough not to create noticeable overhead, frequently enough not to
- // appear frozen).
- work_estimate += y->length();
- if (work_estimate > 5000000) {
- work_estimate = 0;
- StackLimitCheck interrupt_check(isolate);
- if (interrupt_check.InterruptRequested() &&
- isolate->stack_guard()->HandleInterrupts().IsException(isolate)) {
- return MaybeHandle<BigInt>();
- }
- }
+ DisallowGarbageCollection no_gc;
+ bigint::Status status = isolate->bigint_processor()->Multiply(
+ GetRWDigits(result), GetDigits(x), GetDigits(y));
+ if (status == bigint::Status::kInterrupted) {
+ AllowGarbageCollection terminating_anyway;
+ isolate->TerminateExecution();
+ return {};
}
result->set_sign(x->sign() != y->sign());
return MutableBigInt::MakeImmutable(result);
@@ -1449,46 +1444,6 @@ Handle<MutableBigInt> MutableBigInt::AbsoluteXor(Isolate* isolate,
[](digit_t a, digit_t b) { return a ^ b; });
}
-// Multiplies {multiplicand} with {multiplier} and adds the result to
-// {accumulator}, starting at {accumulator_index} for the least-significant
-// digit.
-// Callers must ensure that {accumulator} is big enough to hold the result.
-void MutableBigInt::MultiplyAccumulate(Handle<BigIntBase> multiplicand,
- digit_t multiplier,
- Handle<MutableBigInt> accumulator,
- int accumulator_index) {
- // This is a minimum requirement; the DCHECK in the second loop below
- // will enforce more as needed.
- DCHECK(accumulator->length() > multiplicand->length() + accumulator_index);
- if (multiplier == 0L) return;
- digit_t carry = 0;
- digit_t high = 0;
- for (int i = 0; i < multiplicand->length(); i++, accumulator_index++) {
- digit_t acc = accumulator->digit(accumulator_index);
- digit_t new_carry = 0;
- // Add last round's carryovers.
- acc = digit_add(acc, high, &new_carry);
- acc = digit_add(acc, carry, &new_carry);
- // Compute this round's multiplication.
- digit_t m_digit = multiplicand->digit(i);
- digit_t low = digit_mul(multiplier, m_digit, &high);
- acc = digit_add(acc, low, &new_carry);
- // Store result and prepare for next round.
- accumulator->set_digit(accumulator_index, acc);
- carry = new_carry;
- }
- for (; carry != 0 || high != 0; accumulator_index++) {
- DCHECK(accumulator_index < accumulator->length());
- digit_t acc = accumulator->digit(accumulator_index);
- digit_t new_carry = 0;
- acc = digit_add(acc, high, &new_carry);
- high = 0;
- acc = digit_add(acc, carry, &new_carry);
- accumulator->set_digit(accumulator_index, acc);
- carry = new_carry;
- }
-}
-
// Multiplies {source} with {factor} and adds {summand} to the result.
// {result} and {source} may be the same BigInt for inplace modification.
void MutableBigInt::InternalMultiplyAdd(BigIntBase source, digit_t factor,
@@ -1928,9 +1883,9 @@ constexpr uint8_t kMaxBitsPerChar[] = {
static const int kBitsPerCharTableShift = 5;
static const size_t kBitsPerCharTableMultiplier = 1u << kBitsPerCharTableShift;
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<FreshlyAllocatedBigInt> BigInt::AllocateFor(
- LocalIsolate* isolate, int radix, int charcount, ShouldThrow should_throw,
+ IsolateT* isolate, int radix, int charcount, ShouldThrow should_throw,
AllocationType allocation) {
DCHECK(2 <= radix && radix <= 36);
DCHECK_GE(charcount, 0);
@@ -1966,7 +1921,7 @@ template MaybeHandle<FreshlyAllocatedBigInt> BigInt::AllocateFor(
LocalIsolate* isolate, int radix, int charcount, ShouldThrow should_throw,
AllocationType allocation);
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<BigInt> BigInt::Finalize(Handle<FreshlyAllocatedBigInt> x, bool sign) {
Handle<MutableBigInt> bigint = Handle<MutableBigInt>::cast(x);
bigint->set_sign(sign);
@@ -2249,7 +2204,7 @@ MaybeHandle<String> MutableBigInt::ToStringGeneric(Isolate* isolate,
if (sign) chars[pos++] = '-';
// Trim any over-allocation (which can happen due to conservative estimates).
if (pos < static_cast<int>(chars_required)) {
- result->synchronized_set_length(pos);
+ result->set_length(pos, kReleaseStore);
int string_size =
SeqOneByteString::SizeFor(static_cast<int>(chars_required));
int needed_size = SeqOneByteString::SizeFor(pos);
diff --git a/deps/v8/src/objects/bigint.h b/deps/v8/src/objects/bigint.h
index a7494a54c5..19dfca348a 100644
--- a/deps/v8/src/objects/bigint.h
+++ b/deps/v8/src/objects/bigint.h
@@ -38,7 +38,7 @@ class BigIntBase : public PrimitiveHeapObject {
}
// For use by the GC.
- inline int synchronized_length() const {
+ inline int length(AcquireLoadTag) const {
int32_t bitfield = ACQUIRE_READ_INT32_FIELD(*this, kBitfieldOffset);
return LengthBits::decode(static_cast<uint32_t>(bitfield));
}
@@ -242,22 +242,22 @@ class BigInt : public BigIntBase {
class BodyDescriptor;
private:
- template <typename LocalIsolate>
+ template <typename IsolateT>
friend class StringToBigIntHelper;
friend class ValueDeserializer;
friend class ValueSerializer;
// Special functions for StringToBigIntHelper:
- template <typename LocalIsolate>
- static Handle<BigInt> Zero(LocalIsolate* isolate, AllocationType allocation =
- AllocationType::kYoung);
- template <typename LocalIsolate>
+ template <typename IsolateT>
+ static Handle<BigInt> Zero(
+ IsolateT* isolate, AllocationType allocation = AllocationType::kYoung);
+ template <typename IsolateT>
static MaybeHandle<FreshlyAllocatedBigInt> AllocateFor(
- LocalIsolate* isolate, int radix, int charcount, ShouldThrow should_throw,
+ IsolateT* isolate, int radix, int charcount, ShouldThrow should_throw,
AllocationType allocation);
static void InplaceMultiplyAdd(FreshlyAllocatedBigInt x, uintptr_t factor,
uintptr_t summand);
- template <typename LocalIsolate>
+ template <typename IsolateT>
static Handle<BigInt> Finalize(Handle<FreshlyAllocatedBigInt> x, bool sign);
// Special functions for ValueSerializer/ValueDeserializer:
diff --git a/deps/v8/src/objects/code-inl.h b/deps/v8/src/objects/code-inl.h
index 6fd3355a42..f53c585538 100644
--- a/deps/v8/src/objects/code-inl.h
+++ b/deps/v8/src/objects/code-inl.h
@@ -450,8 +450,8 @@ inline bool Code::is_interpreter_trampoline_builtin() const {
const int index = builtin_index();
return index != Builtins::kNoBuiltinId &&
(index == Builtins::kInterpreterEntryTrampoline ||
- index == Builtins::kInterpreterEnterBytecodeAdvance ||
- index == Builtins::kInterpreterEnterBytecodeDispatch);
+ index == Builtins::kInterpreterEnterAtBytecode ||
+ index == Builtins::kInterpreterEnterAtNextBytecode);
}
inline bool Code::is_baseline_trampoline_builtin() const {
@@ -715,7 +715,7 @@ bool Code::IsWeakObject(HeapObject object) {
}
bool Code::IsWeakObjectInOptimizedCode(HeapObject object) {
- Map map = object.synchronized_map();
+ Map map = object.map(kAcquireLoad);
InstanceType instance_type = map.instance_type();
if (InstanceTypeChecker::IsMap(instance_type)) {
return Map::cast(object).CanTransition();
diff --git a/deps/v8/src/objects/code-kind.cc b/deps/v8/src/objects/code-kind.cc
index 8d480c86db..5c4ab5d299 100644
--- a/deps/v8/src/objects/code-kind.cc
+++ b/deps/v8/src/objects/code-kind.cc
@@ -24,8 +24,6 @@ const char* CodeKindToMarker(CodeKind kind) {
return "~";
case CodeKind::BASELINE:
return "^";
- case CodeKind::NATIVE_CONTEXT_INDEPENDENT:
- return "-";
case CodeKind::TURBOPROP:
return "+";
case CodeKind::TURBOFAN:
diff --git a/deps/v8/src/objects/code-kind.h b/deps/v8/src/objects/code-kind.h
index 12f65ba18a..888e04c42b 100644
--- a/deps/v8/src/objects/code-kind.h
+++ b/deps/v8/src/objects/code-kind.h
@@ -28,7 +28,6 @@ namespace internal {
V(C_WASM_ENTRY) \
V(INTERPRETED_FUNCTION) \
V(BASELINE) \
- V(NATIVE_CONTEXT_INDEPENDENT) \
V(TURBOPROP) \
V(TURBOFAN)
@@ -38,14 +37,10 @@ enum class CodeKind {
#undef DEFINE_CODE_KIND_ENUM
};
STATIC_ASSERT(CodeKind::INTERPRETED_FUNCTION < CodeKind::TURBOPROP &&
- CodeKind::INTERPRETED_FUNCTION <
- CodeKind::NATIVE_CONTEXT_INDEPENDENT &&
CodeKind::INTERPRETED_FUNCTION < CodeKind::BASELINE);
-STATIC_ASSERT(CodeKind::BASELINE < CodeKind::TURBOPROP &&
- CodeKind::BASELINE < CodeKind::NATIVE_CONTEXT_INDEPENDENT);
+STATIC_ASSERT(CodeKind::BASELINE < CodeKind::TURBOPROP);
STATIC_ASSERT(CodeKind::BASELINE < CodeKind::TURBOFAN &&
- CodeKind::TURBOPROP < CodeKind::TURBOFAN &&
- CodeKind::NATIVE_CONTEXT_INDEPENDENT < CodeKind::TURBOFAN);
+ CodeKind::TURBOPROP < CodeKind::TURBOFAN);
#define V(...) +1
static constexpr int kCodeKindCount = CODE_KIND_LIST(V);
@@ -70,18 +65,10 @@ inline constexpr bool CodeKindIsUnoptimizedJSFunction(CodeKind kind) {
CodeKind::BASELINE);
}
-inline constexpr bool CodeKindIsNativeContextIndependentJSFunction(
- CodeKind kind) {
- return kind == CodeKind::NATIVE_CONTEXT_INDEPENDENT;
-}
-
inline constexpr bool CodeKindIsOptimizedJSFunction(CodeKind kind) {
- STATIC_ASSERT(static_cast<int>(CodeKind::NATIVE_CONTEXT_INDEPENDENT) + 1 ==
- static_cast<int>(CodeKind::TURBOPROP));
STATIC_ASSERT(static_cast<int>(CodeKind::TURBOPROP) + 1 ==
static_cast<int>(CodeKind::TURBOFAN));
- return base::IsInRange(kind, CodeKind::NATIVE_CONTEXT_INDEPENDENT,
- CodeKind::TURBOFAN);
+ return base::IsInRange(kind, CodeKind::TURBOPROP, CodeKind::TURBOFAN);
}
inline constexpr bool CodeKindIsJSFunction(CodeKind kind) {
@@ -94,9 +81,6 @@ inline constexpr bool CodeKindIsBuiltinOrJSFunction(CodeKind kind) {
}
inline constexpr bool CodeKindCanDeoptimize(CodeKind kind) {
- // Even though NCI code does not deopt by itself at the time of writing,
- // tests may trigger deopts manually and thus we cannot make a narrower
- // distinction here.
return CodeKindIsOptimizedJSFunction(kind);
}
@@ -104,9 +88,8 @@ inline constexpr bool CodeKindCanOSR(CodeKind kind) {
return kind == CodeKind::TURBOFAN || kind == CodeKind::TURBOPROP;
}
-inline constexpr bool CodeKindIsOptimizedAndCanTierUp(CodeKind kind) {
- return kind == CodeKind::NATIVE_CONTEXT_INDEPENDENT ||
- (!FLAG_turboprop_as_toptier && kind == CodeKind::TURBOPROP);
+inline bool CodeKindIsOptimizedAndCanTierUp(CodeKind kind) {
+ return !FLAG_turboprop_as_toptier && kind == CodeKind::TURBOPROP;
}
inline constexpr bool CodeKindCanTierUp(CodeKind kind) {
@@ -116,8 +99,7 @@ inline constexpr bool CodeKindCanTierUp(CodeKind kind) {
// The optimization marker field on the feedback vector has a dual purpose of
// controlling the tier-up workflow, and caching the produced code object for
-// access from multiple closures. The marker is not used for all code kinds
-// though, in particular it is not used when generating NCI code.
+// access from multiple closures.
inline constexpr bool CodeKindIsStoredInOptimizedCodeCache(CodeKind kind) {
return kind == CodeKind::TURBOFAN || kind == CodeKind::TURBOPROP;
}
@@ -128,9 +110,6 @@ inline OptimizationTier GetTierForCodeKind(CodeKind kind) {
return FLAG_turboprop_as_toptier ? OptimizationTier::kTopTier
: OptimizationTier::kMidTier;
}
- if (kind == CodeKind::NATIVE_CONTEXT_INDEPENDENT) {
- return OptimizationTier::kTopTier;
- }
return OptimizationTier::kNone;
}
@@ -169,11 +148,9 @@ DEFINE_OPERATORS_FOR_FLAGS(CodeKinds)
static constexpr CodeKinds kJSFunctionCodeKindsMask{
CodeKindFlag::INTERPRETED_FUNCTION | CodeKindFlag::TURBOFAN |
- CodeKindFlag::NATIVE_CONTEXT_INDEPENDENT | CodeKindFlag::TURBOPROP |
- CodeKindFlag::BASELINE};
+ CodeKindFlag::TURBOPROP | CodeKindFlag::BASELINE};
static constexpr CodeKinds kOptimizedJSFunctionCodeKindsMask{
- CodeKindFlag::TURBOFAN | CodeKindFlag::NATIVE_CONTEXT_INDEPENDENT |
- CodeKindFlag::TURBOPROP};
+ CodeKindFlag::TURBOFAN | CodeKindFlag::TURBOPROP};
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/objects/code.cc b/deps/v8/src/objects/code.cc
index 7268f001ce..5b4ad4406d 100644
--- a/deps/v8/src/objects/code.cc
+++ b/deps/v8/src/objects/code.cc
@@ -145,22 +145,42 @@ int Code::OffHeapInstructionSize() const {
return d.InstructionSizeOfBuiltin(builtin_index());
}
+namespace {
+
+// Helper function for getting an EmbeddedData that can handle un-embedded
+// builtins when short builtin calls are enabled.
+inline EmbeddedData EmbeddedDataWithMaybeRemappedEmbeddedBuiltins(Code code) {
+#if defined(V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE)
+ // GetIsolateFromWritableObject(*this) works for both read-only and writable
+ // objects when pointer compression is enabled with a per-Isolate cage.
+ return EmbeddedData::FromBlob(GetIsolateFromWritableObject(code));
+#elif defined(V8_COMPRESS_POINTERS_IN_SHARED_CAGE)
+ // When pointer compression is enabled with a shared cage, there is also a
+ // shared CodeRange. When short builtin calls are enabled, there is a single
+ // copy of the re-embedded builtins in the shared CodeRange, so use that if
+ // it's present.
+ if (FLAG_jitless) return EmbeddedData::FromBlob();
+ CodeRange* code_range = CodeRange::GetProcessWideCodeRange().get();
+ return (code_range && code_range->embedded_blob_code_copy() != nullptr)
+ ? EmbeddedData::FromBlob(code_range)
+ : EmbeddedData::FromBlob();
+#else
+ // Otherwise there is a single copy of the blob across all Isolates, use the
+ // global atomic variables.
+ return EmbeddedData::FromBlob();
+#endif
+}
+
+} // namespace
+
Address Code::OffHeapInstructionStart() const {
DCHECK(is_off_heap_trampoline());
if (Isolate::CurrentEmbeddedBlobCode() == nullptr) {
return raw_instruction_size();
}
- // TODO(11527): pass Isolate as an argument.
- // GetIsolateFromWritableObject(*this) works for both read-only and writable
- // objects here because short builtin calls feature requires pointer
- // compression.
- // We don't have to check the Isolate::is_short_builtin_calls_enabled() value
- // because if the short builtin calls wasn't actually enabled because of not
- // enough memory, the FromBlob(isolate) would still be the correct one to use.
- EmbeddedData d =
- FLAG_short_builtin_calls
- ? EmbeddedData::FromBlob(GetIsolateFromWritableObject(*this))
- : EmbeddedData::FromBlob();
+
+ // TODO(11527): pass Isolate as an argument for getting the EmbeddedData.
+ EmbeddedData d = EmbeddedDataWithMaybeRemappedEmbeddedBuiltins(*this);
return d.InstructionStartOfBuiltin(builtin_index());
}
@@ -169,17 +189,9 @@ Address Code::OffHeapInstructionEnd() const {
if (Isolate::CurrentEmbeddedBlobCode() == nullptr) {
return raw_instruction_size();
}
- // TODO(11527): pass Isolate as an argument.
- // GetIsolateFromWritableObject(*this) works for both read-only and writable
- // objects here because short builtin calls feature requires pointer
- // compression.
- // We don't have to check the Isolate::is_short_builtin_calls_enabled() value
- // because if the short builtin calls wasn't actually enabled because of not
- // enough memory, the FromBlob(isolate) would still be the correct one to use.
- EmbeddedData d =
- FLAG_short_builtin_calls
- ? EmbeddedData::FromBlob(GetIsolateFromWritableObject(*this))
- : EmbeddedData::FromBlob();
+
+ // TODO(11527): pass Isolate as an argument for getting the EmbeddedData.
+ EmbeddedData d = EmbeddedDataWithMaybeRemappedEmbeddedBuiltins(*this);
return d.InstructionStartOfBuiltin(builtin_index()) +
d.InstructionSizeOfBuiltin(builtin_index());
}
@@ -299,11 +311,12 @@ bool Code::IsIsolateIndependent(Isolate* isolate) {
RelocInfo::ModeMask(RelocInfo::WASM_STUB_CALL)));
#if defined(V8_TARGET_ARCH_PPC) || defined(V8_TARGET_ARCH_PPC64) || \
- defined(V8_TARGET_ARCH_MIPS64) || defined(V8_TARGET_ARCH_RISCV64)
+ defined(V8_TARGET_ARCH_MIPS64)
return RelocIterator(*this, kModeMask).done();
#elif defined(V8_TARGET_ARCH_X64) || defined(V8_TARGET_ARCH_ARM64) || \
defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) || \
- defined(V8_TARGET_ARCH_S390) || defined(V8_TARGET_ARCH_IA32)
+ defined(V8_TARGET_ARCH_S390) || defined(V8_TARGET_ARCH_IA32) || \
+ defined(V8_TARGET_ARCH_RISCV64)
for (RelocIterator it(*this, kModeMask); !it.done(); it.next()) {
// On these platforms we emit relative builtin-to-builtin
// jumps for isolate independent builtins in the snapshot. They are later
@@ -325,67 +338,6 @@ bool Code::IsIsolateIndependent(Isolate* isolate) {
return true;
}
-// Multiple native contexts live on the same heap, and V8 currently
-// draws no clear distinction between native-context-dependent and
-// independent objects. A good guideline is "objects embedded into
-// bytecode are nc-independent", since bytecode is shared between
-// native contexts. Among others, this is the case for ScopeInfo,
-// SharedFunctionInfo, String, etc.
-bool Code::IsNativeContextIndependent(Isolate* isolate) {
- static constexpr int kModeMask =
- RelocInfo::AllRealModesMask() &
- ~RelocInfo::ModeMask(RelocInfo::CONST_POOL) &
- ~RelocInfo::ModeMask(RelocInfo::EXTERNAL_REFERENCE) &
- ~RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) &
- ~RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE_ENCODED) &
- ~RelocInfo::ModeMask(RelocInfo::OFF_HEAP_TARGET) &
- ~RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY) &
- ~RelocInfo::ModeMask(RelocInfo::VENEER_POOL);
- STATIC_ASSERT(kModeMask ==
- (RelocInfo::ModeMask(RelocInfo::CODE_TARGET) |
- RelocInfo::ModeMask(RelocInfo::RELATIVE_CODE_TARGET) |
- RelocInfo::ModeMask(RelocInfo::COMPRESSED_EMBEDDED_OBJECT) |
- RelocInfo::ModeMask(RelocInfo::FULL_EMBEDDED_OBJECT) |
- RelocInfo::ModeMask(RelocInfo::DATA_EMBEDDED_OBJECT) |
- RelocInfo::ModeMask(RelocInfo::WASM_CALL) |
- RelocInfo::ModeMask(RelocInfo::WASM_STUB_CALL)));
-
- bool is_independent = true;
- for (RelocIterator it(*this, kModeMask); !it.done(); it.next()) {
- if (RelocInfo::IsEmbeddedObjectMode(it.rinfo()->rmode())) {
- HeapObject o = it.rinfo()->target_object();
- // TODO(jgruber,v8:8888): Extend this with further NCI objects,
- // and define a more systematic
- // IsNativeContextIndependent<T>() predicate.
- if (o.IsString()) continue;
- if (o.IsScopeInfo()) continue;
- if (o.IsHeapNumber()) continue;
- if (o.IsBigInt()) continue;
- if (o.IsSharedFunctionInfo()) continue;
- if (o.IsArrayBoilerplateDescription()) continue;
- if (o.IsObjectBoilerplateDescription()) continue;
- if (o.IsTemplateObjectDescription()) continue;
- if (o.IsFixedArray()) {
- // Some uses of FixedArray are valid.
- // 1. Passed as arg to %DeclareGlobals, contains only strings
- // and SFIs.
- // 2. Passed as arg to %DefineClass. No well defined contents.
- // .. ?
- // TODO(jgruber): Consider assigning dedicated instance
- // types instead of assuming fixed arrays are okay.
- continue;
- }
- // Other objects are expected to be context-dependent.
- PrintF("Found native-context-dependent object:\n");
- o.Print();
- o.map().Print();
- }
- is_independent = false;
- }
-
- return is_independent;
-}
-
bool Code::Inlines(SharedFunctionInfo sfi) {
// We can only check for inlining for optimized code.
DCHECK(is_optimized_code());
@@ -474,7 +426,7 @@ void print_pc(std::ostream& os, int pc) {
}
} // anonymous namespace
-void DeoptimizationData::DeoptimizationDataPrint(std::ostream& os) { // NOLINT
+void DeoptimizationData::DeoptimizationDataPrint(std::ostream& os) {
if (length() == 0) {
os << "Deoptimization Input Data invalidated by lazy deoptimization\n";
return;
diff --git a/deps/v8/src/objects/code.h b/deps/v8/src/objects/code.h
index d431701936..fbd52505ee 100644
--- a/deps/v8/src/objects/code.h
+++ b/deps/v8/src/objects/code.h
@@ -447,7 +447,6 @@ class Code : public HeapObject {
inline HandlerTable::CatchPrediction GetBuiltinCatchPrediction();
bool IsIsolateIndependent(Isolate* isolate);
- bool IsNativeContextIndependent(Isolate* isolate);
inline bool CanContainWeakObjects();
@@ -982,7 +981,7 @@ class DeoptimizationData : public FixedArray {
DECL_CAST(DeoptimizationData)
#ifdef ENABLE_DISASSEMBLER
- void DeoptimizationDataPrint(std::ostream& os); // NOLINT
+ void DeoptimizationDataPrint(std::ostream& os);
#endif
private:
diff --git a/deps/v8/src/objects/compilation-cache-table.cc b/deps/v8/src/objects/compilation-cache-table.cc
index 9ef1468975..b934554116 100644
--- a/deps/v8/src/objects/compilation-cache-table.cc
+++ b/deps/v8/src/objects/compilation-cache-table.cc
@@ -295,16 +295,6 @@ Handle<Object> CompilationCacheTable::LookupRegExp(Handle<String> src,
return Handle<Object>(get(EntryToIndex(entry) + 1), isolate);
}
-MaybeHandle<Code> CompilationCacheTable::LookupCode(
- Handle<SharedFunctionInfo> key) {
- Isolate* isolate = GetIsolate();
- DisallowGarbageCollection no_gc;
- CodeKey k(key);
- InternalIndex entry = FindEntry(isolate, &k);
- if (entry.is_not_found()) return {};
- return Handle<Code>(Code::cast(get(EntryToIndex(entry) + 1)), isolate);
-}
-
Handle<CompilationCacheTable> CompilationCacheTable::PutScript(
Handle<CompilationCacheTable> cache, Handle<String> src,
LanguageMode language_mode, Handle<SharedFunctionInfo> value,
@@ -373,30 +363,6 @@ Handle<CompilationCacheTable> CompilationCacheTable::PutRegExp(
return cache;
}
-Handle<CompilationCacheTable> CompilationCacheTable::PutCode(
- Isolate* isolate, Handle<CompilationCacheTable> cache,
- Handle<SharedFunctionInfo> key, Handle<Code> value) {
- CodeKey k(key);
-
- {
- InternalIndex entry = cache->FindEntry(isolate, &k);
- if (entry.is_found()) {
- // Update.
- cache->set(EntryToIndex(entry), *key);
- cache->set(EntryToIndex(entry) + 1, *value);
- return cache;
- }
- }
-
- // Insert.
- cache = EnsureCapacity(isolate, cache);
- InternalIndex entry = cache->FindInsertionEntry(isolate, k.Hash());
- cache->set(EntryToIndex(entry), *key);
- cache->set(EntryToIndex(entry) + 1, *value);
- cache->ElementAdded();
- return cache;
-}
-
void CompilationCacheTable::Age(Isolate* isolate) {
DisallowGarbageCollection no_gc;
for (InternalIndex entry : IterateEntries()) {
diff --git a/deps/v8/src/objects/compilation-cache-table.h b/deps/v8/src/objects/compilation-cache-table.h
index 2fd548bfe5..e39e013c61 100644
--- a/deps/v8/src/objects/compilation-cache-table.h
+++ b/deps/v8/src/objects/compilation-cache-table.h
@@ -123,13 +123,6 @@ class CompilationCacheTable
Isolate* isolate, Handle<CompilationCacheTable> cache, Handle<String> src,
JSRegExp::Flags flags, Handle<FixedArray> value);
- // The Code cache shares native-context-independent (NCI) code between
- // contexts.
- MaybeHandle<Code> LookupCode(Handle<SharedFunctionInfo> key);
- static Handle<CompilationCacheTable> PutCode(
- Isolate* isolate, Handle<CompilationCacheTable> cache,
- Handle<SharedFunctionInfo> key, Handle<Code> value);
-
void Remove(Object value);
void Age(Isolate* isolate);
diff --git a/deps/v8/src/objects/compressed-slots-inl.h b/deps/v8/src/objects/compressed-slots-inl.h
index 54c828d919..b550c9f851 100644
--- a/deps/v8/src/objects/compressed-slots-inl.h
+++ b/deps/v8/src/objects/compressed-slots-inl.h
@@ -28,6 +28,13 @@ bool CompressedObjectSlot::contains_value(Address raw_value) const {
static_cast<uint32_t>(static_cast<Tagged_t>(raw_value));
}
+bool CompressedObjectSlot::contains_map_value(Address raw_value) const {
+ // Simply forward to contains_value because map packing is not supported with
+ // pointer compression.
+ DCHECK(!V8_MAP_PACKING_BOOL);
+ return contains_value(raw_value);
+}
+
Object CompressedObjectSlot::operator*() const {
Tagged_t value = *location();
return Object(DecompressTaggedAny(address(), value));
@@ -42,6 +49,20 @@ void CompressedObjectSlot::store(Object value) const {
*location() = CompressTagged(value.ptr());
}
+void CompressedObjectSlot::store_map(Map map) const {
+ // Simply forward to store because map packing is not supported with pointer
+ // compression.
+ DCHECK(!V8_MAP_PACKING_BOOL);
+ store(map);
+}
+
+Map CompressedObjectSlot::load_map() const {
+ // Simply forward to Relaxed_Load because map packing is not supported with
+ // pointer compression.
+ DCHECK(!V8_MAP_PACKING_BOOL);
+ return Map::unchecked_cast(Relaxed_Load());
+}
+
Object CompressedObjectSlot::Acquire_Load() const {
AtomicTagged_t value = AsAtomicTagged::Acquire_Load(location());
return Object(DecompressTaggedAny(address(), value));
diff --git a/deps/v8/src/objects/compressed-slots.h b/deps/v8/src/objects/compressed-slots.h
index 7737e685fe..f13fc15adc 100644
--- a/deps/v8/src/objects/compressed-slots.h
+++ b/deps/v8/src/objects/compressed-slots.h
@@ -37,12 +37,16 @@ class CompressedObjectSlot : public SlotBase<CompressedObjectSlot, Tagged_t> {
// Compares memory representation of a value stored in the slot with given
// raw value without decompression.
inline bool contains_value(Address raw_value) const;
+ inline bool contains_map_value(Address raw_value) const;
// TODO(leszeks): Consider deprecating the operator* load, and always pass the
// Isolate.
inline Object operator*() const;
inline Object load(PtrComprCageBase cage_base) const;
inline void store(Object value) const;
+ inline void store_map(Map map) const;
+
+ inline Map load_map() const;
inline Object Acquire_Load() const;
inline Object Relaxed_Load() const;
diff --git a/deps/v8/src/objects/contexts-inl.h b/deps/v8/src/objects/contexts-inl.h
index 356df687de..d744ffc681 100644
--- a/deps/v8/src/objects/contexts-inl.h
+++ b/deps/v8/src/objects/contexts-inl.h
@@ -55,38 +55,54 @@ NEVER_READ_ONLY_SPACE_IMPL(Context)
CAST_ACCESSOR(NativeContext)
-V8_INLINE Object Context::get(int index) const { return elements(index); }
-V8_INLINE Object Context::get(PtrComprCageBase cage_base, int index) const {
- return elements(cage_base, index);
-}
-V8_INLINE void Context::set(int index, Object value) {
- set_elements(index, value);
+Object Context::get(int index) const {
+ PtrComprCageBase cage_base = GetPtrComprCageBase(*this);
+ return get(cage_base, index);
}
-V8_INLINE void Context::set(int index, Object value, WriteBarrierMode mode) {
- set_elements(index, value, mode);
+
+Object Context::get(PtrComprCageBase cage_base, int index) const {
+ DCHECK_LT(static_cast<unsigned int>(index),
+ static_cast<unsigned int>(length()));
+ return TaggedField<Object>::Relaxed_Load(cage_base, *this,
+ OffsetOfElementAt(index));
}
-void Context::set_scope_info(ScopeInfo scope_info, WriteBarrierMode mode) {
- set(SCOPE_INFO_INDEX, scope_info, mode);
+void Context::set(int index, Object value, WriteBarrierMode mode) {
+ DCHECK_LT(static_cast<unsigned int>(index),
+ static_cast<unsigned int>(length()));
+ const int offset = OffsetOfElementAt(index);
+ RELAXED_WRITE_FIELD(*this, offset, value);
+ CONDITIONAL_WRITE_BARRIER(*this, offset, value, mode);
}
-Object Context::synchronized_get(int index) const {
+Object Context::get(int index, AcquireLoadTag tag) const {
PtrComprCageBase cage_base = GetPtrComprCageBase(*this);
- return synchronized_get(cage_base, index);
+ return get(cage_base, index, tag);
}
-Object Context::synchronized_get(PtrComprCageBase cage_base, int index) const {
+Object Context::get(PtrComprCageBase cage_base, int index,
+ AcquireLoadTag) const {
DCHECK_LT(static_cast<unsigned int>(index),
- static_cast<unsigned int>(this->length()));
+ static_cast<unsigned int>(length()));
return ACQUIRE_READ_FIELD(*this, OffsetOfElementAt(index));
}
-void Context::synchronized_set(int index, Object value) {
+void Context::set(int index, Object value, WriteBarrierMode mode,
+ ReleaseStoreTag) {
DCHECK_LT(static_cast<unsigned int>(index),
- static_cast<unsigned int>(this->length()));
+ static_cast<unsigned int>(length()));
const int offset = OffsetOfElementAt(index);
RELEASE_WRITE_FIELD(*this, offset, value);
- WRITE_BARRIER(*this, offset, value);
+ CONDITIONAL_WRITE_BARRIER(*this, offset, value, mode);
+}
+
+void NativeContext::set(int index, Object value, WriteBarrierMode mode,
+ ReleaseStoreTag tag) {
+ Context::set(index, value, mode, tag);
+}
+
+void Context::set_scope_info(ScopeInfo scope_info, WriteBarrierMode mode) {
+ set(SCOPE_INFO_INDEX, scope_info, mode);
}
Object Context::unchecked_previous() { return get(PREVIOUS_INDEX); }
@@ -161,18 +177,22 @@ bool Context::HasSameSecurityTokenAs(Context that) const {
that.native_context().security_token();
}
-#define NATIVE_CONTEXT_FIELD_ACCESSORS(index, type, name) \
- void Context::set_##name(type value) { \
- DCHECK(IsNativeContext()); \
- set(index, value); \
- } \
- bool Context::is_##name(type value) const { \
- DCHECK(IsNativeContext()); \
- return type::cast(get(index)) == value; \
- } \
- type Context::name() const { \
- DCHECK(IsNativeContext()); \
- return type::cast(get(index)); \
+#define NATIVE_CONTEXT_FIELD_ACCESSORS(index, type, name) \
+ void Context::set_##name(type value) { \
+ DCHECK(IsNativeContext()); \
+ set(index, value, UPDATE_WRITE_BARRIER, kReleaseStore); \
+ } \
+ bool Context::is_##name(type value) const { \
+ DCHECK(IsNativeContext()); \
+ return type::cast(get(index)) == value; \
+ } \
+ type Context::name() const { \
+ DCHECK(IsNativeContext()); \
+ return type::cast(get(index)); \
+ } \
+ type Context::name(AcquireLoadTag tag) const { \
+ DCHECK(IsNativeContext()); \
+ return type::cast(get(index, tag)); \
}
NATIVE_CONTEXT_FIELDS(NATIVE_CONTEXT_FIELD_ACCESSORS)
#undef NATIVE_CONTEXT_FIELD_ACCESSORS
@@ -242,8 +262,9 @@ Map Context::GetInitialJSArrayMap(ElementsKind kind) const {
}
DEF_GETTER(NativeContext, microtask_queue, MicrotaskQueue*) {
+ Isolate* isolate = GetIsolateForHeapSandbox(*this);
return reinterpret_cast<MicrotaskQueue*>(ReadExternalPointerField(
- kMicrotaskQueueOffset, cage_base, kNativeContextMicrotaskQueueTag));
+ kMicrotaskQueueOffset, isolate, kNativeContextMicrotaskQueueTag));
}
void NativeContext::AllocateExternalPointerEntries(Isolate* isolate) {
@@ -259,11 +280,13 @@ void NativeContext::set_microtask_queue(Isolate* isolate,
void NativeContext::synchronized_set_script_context_table(
ScriptContextTable script_context_table) {
- synchronized_set(SCRIPT_CONTEXT_TABLE_INDEX, script_context_table);
+ set(SCRIPT_CONTEXT_TABLE_INDEX, script_context_table, UPDATE_WRITE_BARRIER,
+ kReleaseStore);
}
ScriptContextTable NativeContext::synchronized_script_context_table() const {
- return ScriptContextTable::cast(synchronized_get(SCRIPT_CONTEXT_TABLE_INDEX));
+ return ScriptContextTable::cast(
+ get(SCRIPT_CONTEXT_TABLE_INDEX, kAcquireLoad));
}
OSROptimizedCodeCache NativeContext::GetOSROptimizedCodeCache() {
diff --git a/deps/v8/src/objects/contexts.cc b/deps/v8/src/objects/contexts.cc
index 771fbea40b..eade27d934 100644
--- a/deps/v8/src/objects/contexts.cc
+++ b/deps/v8/src/objects/contexts.cc
@@ -55,6 +55,7 @@ bool ScriptContextTable::Lookup(Isolate* isolate, ScriptContextTable table,
for (int i = 0; i < table.synchronized_used(); i++) {
Context context = table.get_context(i);
DCHECK(context.IsScriptContext());
+ result->is_repl_mode = context.scope_info().IsReplModeScope();
int slot_index = ScopeInfo::ContextSlotIndex(
context.scope_info(), name, &result->mode, &result->init_flag,
&result->maybe_assigned_flag, &is_static_flag);
@@ -415,11 +416,11 @@ void NativeContext::AddOptimizedCode(Code code) {
DCHECK(CodeKindCanDeoptimize(code.kind()));
DCHECK(code.next_code_link().IsUndefined());
code.set_next_code_link(get(OPTIMIZED_CODE_LIST));
- set(OPTIMIZED_CODE_LIST, code, UPDATE_WEAK_WRITE_BARRIER);
+ set(OPTIMIZED_CODE_LIST, code, UPDATE_WEAK_WRITE_BARRIER, kReleaseStore);
}
void NativeContext::SetOptimizedCodeListHead(Object head) {
- set(OPTIMIZED_CODE_LIST, head, UPDATE_WEAK_WRITE_BARRIER);
+ set(OPTIMIZED_CODE_LIST, head, UPDATE_WEAK_WRITE_BARRIER, kReleaseStore);
}
Object NativeContext::OptimizedCodeListHead() {
@@ -427,7 +428,7 @@ Object NativeContext::OptimizedCodeListHead() {
}
void NativeContext::SetDeoptimizedCodeListHead(Object head) {
- set(DEOPTIMIZED_CODE_LIST, head, UPDATE_WEAK_WRITE_BARRIER);
+ set(DEOPTIMIZED_CODE_LIST, head, UPDATE_WEAK_WRITE_BARRIER, kReleaseStore);
}
Object NativeContext::DeoptimizedCodeListHead() {
diff --git a/deps/v8/src/objects/contexts.h b/deps/v8/src/objects/contexts.h
index 62adcc4369..2c8988f13e 100644
--- a/deps/v8/src/objects/contexts.h
+++ b/deps/v8/src/objects/contexts.h
@@ -50,7 +50,8 @@ enum ContextLookupFlags {
V(MATH_POW_INDEX, JSFunction, math_pow) \
V(PROMISE_INTERNAL_CONSTRUCTOR_INDEX, JSFunction, \
promise_internal_constructor) \
- V(PROMISE_THEN_INDEX, JSFunction, promise_then)
+ V(PROMISE_THEN_INDEX, JSFunction, promise_then) \
+ V(FUNCTION_PROTOTYPE_APPLY_INDEX, JSFunction, function_prototype_apply)
#define NATIVE_CONTEXT_FIELDS(V) \
V(GLOBAL_PROXY_INDEX, JSGlobalProxy, global_proxy_object) \
@@ -111,6 +112,8 @@ enum ContextLookupFlags {
V(GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, generator_object_prototype_map) \
V(ASYNC_GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, \
async_generator_object_prototype_map) \
+ V(GROWABLE_SHARED_ARRAY_BUFFER_FUN_INDEX, JSFunction, \
+ growable_shared_array_buffer_fun) \
V(INITIAL_ARRAY_ITERATOR_MAP_INDEX, Map, initial_array_iterator_map) \
V(INITIAL_ARRAY_ITERATOR_PROTOTYPE_INDEX, JSObject, \
initial_array_iterator_prototype) \
@@ -209,6 +212,18 @@ enum ContextLookupFlags {
V(PROXY_MAP_INDEX, Map, proxy_map) \
V(PROXY_REVOCABLE_RESULT_MAP_INDEX, Map, proxy_revocable_result_map) \
V(PROMISE_PROTOTYPE_INDEX, JSObject, promise_prototype) \
+ V(RAB_GSAB_UINT8_ARRAY_MAP_INDEX, Map, rab_gsab_uint8_array_map) \
+ V(RAB_GSAB_INT8_ARRAY_MAP_INDEX, Map, rab_gsab_int8_array_map) \
+ V(RAB_GSAB_UINT16_ARRAY_MAP_INDEX, Map, rab_gsab_uint16_array_map) \
+ V(RAB_GSAB_INT16_ARRAY_MAP_INDEX, Map, rab_gsab_int16_array_map) \
+ V(RAB_GSAB_UINT32_ARRAY_MAP_INDEX, Map, rab_gsab_uint32_array_map) \
+ V(RAB_GSAB_INT32_ARRAY_MAP_INDEX, Map, rab_gsab_int32_array_map) \
+ V(RAB_GSAB_FLOAT32_ARRAY_MAP_INDEX, Map, rab_gsab_float32_array_map) \
+ V(RAB_GSAB_FLOAT64_ARRAY_MAP_INDEX, Map, rab_gsab_float64_array_map) \
+ V(RAB_GSAB_UINT8_CLAMPED_ARRAY_MAP_INDEX, Map, \
+ rab_gsab_uint8_clamped_array_map) \
+ V(RAB_GSAB_BIGUINT64_ARRAY_MAP_INDEX, Map, rab_gsab_biguint64_array_map) \
+ V(RAB_GSAB_BIGINT64_ARRAY_MAP_INDEX, Map, rab_gsab_bigint64_array_map) \
V(RECORDER_CONTEXT_ID, Object, recorder_context_id) \
V(REGEXP_EXEC_FUNCTION_INDEX, JSFunction, regexp_exec_function) \
V(REGEXP_FUNCTION_INDEX, JSFunction, regexp_function) \
@@ -225,6 +240,7 @@ enum ContextLookupFlags {
V(REGEXP_SPLIT_FUNCTION_INDEX, JSFunction, regexp_split_function) \
V(INITIAL_REGEXP_STRING_ITERATOR_PROTOTYPE_MAP_INDEX, Map, \
initial_regexp_string_iterator_prototype_map) \
+ V(RESIZABLE_ARRAY_BUFFER_FUN_INDEX, JSFunction, resizable_array_buffer_fun) \
V(SCRIPT_CONTEXT_TABLE_INDEX, ScriptContextTable, script_context_table) \
V(SCRIPT_EXECUTION_CALLBACK_INDEX, Object, script_execution_callback) \
V(SECURITY_TOKEN_INDEX, Object, security_token) \
@@ -342,6 +358,9 @@ class ScriptContextTable : public FixedArray {
struct LookupResult {
int context_index;
int slot_index;
+ // repl_mode flag is needed to disable inlining of 'const' variables in REPL
+ // mode.
+ bool is_repl_mode;
VariableMode mode;
InitializationFlag init_flag;
MaybeAssignedFlag maybe_assigned_flag;
@@ -426,16 +445,18 @@ class Context : public TorqueGeneratedContext<Context, HeapObject> {
NEVER_READ_ONLY_SPACE
// Setter and getter for elements.
+ // Note the plain accessors use relaxed semantics.
+ // TODO(jgruber): Make that explicit through tags.
V8_INLINE Object get(int index) const;
V8_INLINE Object get(PtrComprCageBase cage_base, int index) const;
- V8_INLINE void set(int index, Object value);
- // Setter with explicit barrier mode.
- V8_INLINE void set(int index, Object value, WriteBarrierMode mode);
- // Setter and getter with synchronization semantics.
- V8_INLINE Object synchronized_get(int index) const;
- V8_INLINE Object synchronized_get(PtrComprCageBase cage_base,
- int index) const;
- V8_INLINE void synchronized_set(int index, Object value);
+ V8_INLINE void set(int index, Object value,
+ WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
+ // Accessors with acquire-release semantics.
+ V8_INLINE Object get(int index, AcquireLoadTag) const;
+ V8_INLINE Object get(PtrComprCageBase cage_base, int index,
+ AcquireLoadTag) const;
+ V8_INLINE void set(int index, Object value, WriteBarrierMode mode,
+ ReleaseStoreTag);
static const int kScopeInfoOffset = kElementsOffset;
static const int kPreviousOffset = kScopeInfoOffset + kTaggedSize;
@@ -452,7 +473,7 @@ class Context : public TorqueGeneratedContext<Context, HeapObject> {
V8_INLINE static constexpr int SizeFor(int length) {
// TODO(v8:9287): This is a workaround for GCMole build failures.
int result = kElementsOffset + length * kTaggedSize;
- CONSTEXPR_DCHECK(TorqueGeneratedContext::SizeFor(length) == result);
+ DCHECK_EQ(TorqueGeneratedContext::SizeFor(length), result);
return result;
}
@@ -528,8 +549,6 @@ class Context : public TorqueGeneratedContext<Context, HeapObject> {
inline Object unchecked_previous();
inline Context previous();
- inline void set_previous(Context context,
- WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
inline Object next_context_link();
@@ -587,7 +606,8 @@ class Context : public TorqueGeneratedContext<Context, HeapObject> {
#define NATIVE_CONTEXT_FIELD_ACCESSORS(index, type, name) \
inline void set_##name(type value); \
inline bool is_##name(type value) const; \
- inline type name() const;
+ inline type name() const; \
+ inline type name(AcquireLoadTag) const;
NATIVE_CONTEXT_FIELDS(NATIVE_CONTEXT_FIELD_ACCESSORS)
#undef NATIVE_CONTEXT_FIELD_ACCESSORS
@@ -643,6 +663,10 @@ class Context : public TorqueGeneratedContext<Context, HeapObject> {
static bool IsBootstrappingOrValidParentContext(Object object, Context kid);
#endif
+ friend class Factory;
+ inline void set_previous(Context context,
+ WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
+
TQ_OBJECT_CONSTRUCTORS(Context)
};
@@ -653,6 +677,15 @@ class NativeContext : public Context {
inline void AllocateExternalPointerEntries(Isolate* isolate);
+ // NativeContext fields are read concurrently from background threads; any
+ // concurrent writes of affected fields must have acquire-release semantics,
+ // thus we hide the non-atomic setter. Note this doesn't protect fully since
+ // one could still use Context::set and/or write directly using offsets (e.g.
+ // from CSA/Torque).
+ void set(int index, Object value, WriteBarrierMode mode) = delete;
+ V8_INLINE void set(int index, Object value, WriteBarrierMode mode,
+ ReleaseStoreTag);
+
// [microtask_queue]: pointer to the MicrotaskQueue object.
DECL_GETTER(microtask_queue, MicrotaskQueue*)
inline void set_microtask_queue(Isolate* isolate, MicrotaskQueue* queue);
diff --git a/deps/v8/src/objects/contexts.tq b/deps/v8/src/objects/contexts.tq
index 28ea1300ee..83c43cc7f5 100644
--- a/deps/v8/src/objects/contexts.tq
+++ b/deps/v8/src/objects/contexts.tq
@@ -13,7 +13,7 @@ class Context extends HeapObject {
return *ContextSlot(this, ContextSlot::SCOPE_INFO_INDEX);
}
const length: Smi;
- @relaxedRead @relaxedWrite elements[length]: Object;
+ elements[length]: Object;
}
extern class AwaitContext extends Context generates 'TNode<Context>';
@@ -118,6 +118,31 @@ extern enum ContextSlot extends intptr constexpr 'Context::Field' {
SLOPPY_ARGUMENTS_MAP_INDEX: Slot<NativeContext, Map>,
FAST_ALIASED_ARGUMENTS_MAP_INDEX: Slot<NativeContext, Map>,
FUNCTION_CONTEXT_MAP_INDEX: Slot<NativeContext, Map>,
+ FUNCTION_PROTOTYPE_APPLY_INDEX: Slot<NativeContext, JSFunction>,
+
+ UINT8_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ INT8_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ UINT16_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ INT16_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ UINT32_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ INT32_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ FLOAT32_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ FLOAT64_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ UINT8_CLAMPED_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ BIGUINT64_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+ BIGINT64_ARRAY_FUN_INDEX: Slot<NativeContext, JSFunction>,
+
+ RAB_GSAB_UINT8_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_INT8_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_UINT16_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_INT16_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_UINT32_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_INT32_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_FLOAT32_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_FLOAT64_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_UINT8_CLAMPED_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_BIGUINT64_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
+ RAB_GSAB_BIGINT64_ARRAY_MAP_INDEX: Slot<NativeContext, Map>,
PROMISE_FUNCTION_INDEX: Slot<NativeContext, JSFunction>,
PROMISE_THEN_INDEX: Slot<NativeContext, JSFunction>,
diff --git a/deps/v8/src/objects/debug-objects-inl.h b/deps/v8/src/objects/debug-objects-inl.h
index 8c8b013e23..e9e7c08f4c 100644
--- a/deps/v8/src/objects/debug-objects-inl.h
+++ b/deps/v8/src/objects/debug-objects-inl.h
@@ -36,12 +36,6 @@ BIT_FIELD_ACCESSORS(DebugInfo, debugger_hints, computed_debug_is_blackboxed,
BIT_FIELD_ACCESSORS(DebugInfo, debugger_hints, debugging_id,
DebugInfo::DebuggingIdBits)
-// TODO(nicohartmann@, v8:11122): Remove once Torque can generate them.
-RELEASE_ACQUIRE_ACCESSORS(DebugInfo, debug_bytecode_array, HeapObject,
- kDebugBytecodeArrayOffset)
-RELEASE_ACQUIRE_ACCESSORS(DebugInfo, original_bytecode_array, HeapObject,
- kOriginalBytecodeArrayOffset)
-
bool DebugInfo::HasInstrumentedBytecodeArray() {
return debug_bytecode_array(kAcquireLoad).IsBytecodeArray();
}
diff --git a/deps/v8/src/objects/debug-objects.cc b/deps/v8/src/objects/debug-objects.cc
index ecb24632ef..d3caa12233 100644
--- a/deps/v8/src/objects/debug-objects.cc
+++ b/deps/v8/src/objects/debug-objects.cc
@@ -14,18 +14,23 @@ namespace v8 {
namespace internal {
bool DebugInfo::IsEmpty() const {
- return flags() == kNone && debugger_hints() == 0;
+ return flags(kRelaxedLoad) == kNone && debugger_hints() == 0;
}
-bool DebugInfo::HasBreakInfo() const { return (flags() & kHasBreakInfo) != 0; }
+bool DebugInfo::HasBreakInfo() const {
+ return (flags(kRelaxedLoad) & kHasBreakInfo) != 0;
+}
DebugInfo::ExecutionMode DebugInfo::DebugExecutionMode() const {
- return (flags() & kDebugExecutionMode) != 0 ? kSideEffects : kBreakpoints;
+ return (flags(kRelaxedLoad) & kDebugExecutionMode) != 0 ? kSideEffects
+ : kBreakpoints;
}
void DebugInfo::SetDebugExecutionMode(ExecutionMode value) {
- set_flags(value == kSideEffects ? (flags() | kDebugExecutionMode)
- : (flags() & ~kDebugExecutionMode));
+ set_flags(value == kSideEffects
+ ? (flags(kRelaxedLoad) | kDebugExecutionMode)
+ : (flags(kRelaxedLoad) & ~kDebugExecutionMode),
+ kRelaxedStore);
}
void DebugInfo::ClearBreakInfo(Isolate* isolate) {
@@ -45,27 +50,29 @@ void DebugInfo::ClearBreakInfo(Isolate* isolate) {
}
set_break_points(ReadOnlyRoots(isolate).empty_fixed_array());
- int new_flags = flags();
+ int new_flags = flags(kRelaxedLoad);
new_flags &= ~kHasBreakInfo & ~kPreparedForDebugExecution;
new_flags &= ~kBreakAtEntry & ~kCanBreakAtEntry;
new_flags &= ~kDebugExecutionMode;
- set_flags(new_flags);
+ set_flags(new_flags, kRelaxedStore);
}
void DebugInfo::SetBreakAtEntry() {
DCHECK(CanBreakAtEntry());
- set_flags(flags() | kBreakAtEntry);
+ set_flags(flags(kRelaxedLoad) | kBreakAtEntry, kRelaxedStore);
}
void DebugInfo::ClearBreakAtEntry() {
DCHECK(CanBreakAtEntry());
- set_flags(flags() & ~kBreakAtEntry);
+ set_flags(flags(kRelaxedLoad) & ~kBreakAtEntry, kRelaxedStore);
}
-bool DebugInfo::BreakAtEntry() const { return (flags() & kBreakAtEntry) != 0; }
+bool DebugInfo::BreakAtEntry() const {
+ return (flags(kRelaxedLoad) & kBreakAtEntry) != 0;
+}
bool DebugInfo::CanBreakAtEntry() const {
- return (flags() & kCanBreakAtEntry) != 0;
+ return (flags(kRelaxedLoad) & kCanBreakAtEntry) != 0;
}
// Check if there is a break point at this source position.
@@ -199,15 +206,15 @@ Handle<Object> DebugInfo::FindBreakPointInfo(Isolate* isolate,
}
bool DebugInfo::HasCoverageInfo() const {
- return (flags() & kHasCoverageInfo) != 0;
+ return (flags(kRelaxedLoad) & kHasCoverageInfo) != 0;
}
void DebugInfo::ClearCoverageInfo(Isolate* isolate) {
if (HasCoverageInfo()) {
set_coverage_info(ReadOnlyRoots(isolate).undefined_value());
- int new_flags = flags() & ~kHasCoverageInfo;
- set_flags(new_flags);
+ int new_flags = flags(kRelaxedLoad) & ~kHasCoverageInfo;
+ set_flags(new_flags, kRelaxedStore);
}
}
diff --git a/deps/v8/src/objects/debug-objects.h b/deps/v8/src/objects/debug-objects.h
index e92a3026f8..77c9b80e65 100644
--- a/deps/v8/src/objects/debug-objects.h
+++ b/deps/v8/src/objects/debug-objects.h
@@ -37,7 +37,10 @@ class DebugInfo : public TorqueGeneratedDebugInfo<DebugInfo, Struct> {
// --- Debug execution ---
// -----------------------
- enum ExecutionMode { kBreakpoints = 0, kSideEffects = kDebugExecutionMode };
+ enum ExecutionMode : uint8_t {
+ kBreakpoints = 0,
+ kSideEffects = kDebugExecutionMode
+ };
// Returns current debug execution mode. Debug execution mode defines by
// applied to bytecode patching. False for breakpoints, true for side effect
@@ -45,9 +48,6 @@ class DebugInfo : public TorqueGeneratedDebugInfo<DebugInfo, Struct> {
ExecutionMode DebugExecutionMode() const;
void SetDebugExecutionMode(ExecutionMode value);
- DECL_RELEASE_ACQUIRE_ACCESSORS(debug_bytecode_array, HeapObject)
- DECL_RELEASE_ACQUIRE_ACCESSORS(original_bytecode_array, HeapObject)
-
// Specifies whether the associated function has an instrumented bytecode
// array. If so, OriginalBytecodeArray returns the non-instrumented bytecode,
// and DebugBytecodeArray returns the instrumented bytecode.
diff --git a/deps/v8/src/objects/debug-objects.tq b/deps/v8/src/objects/debug-objects.tq
index b8ca86781f..1df2e7a484 100644
--- a/deps/v8/src/objects/debug-objects.tq
+++ b/deps/v8/src/objects/debug-objects.tq
@@ -44,14 +44,18 @@ extern class DebugInfo extends Struct {
script: Undefined|Script;
// The original uninstrumented bytecode array for functions with break
// points - the instrumented bytecode is held in the shared function info.
+ @cppAcquireLoad
+ @cppReleaseStore
original_bytecode_array: Undefined|BytecodeArray;
// The debug instrumented bytecode array for functions with break points
// - also pointed to by the shared function info.
+ @cppAcquireLoad
+ @cppReleaseStore
debug_bytecode_array: Undefined|BytecodeArray;
// Fixed array holding status information for each active break point.
break_points: FixedArray;
// A bitfield that lists uses of the current instance.
- flags: SmiTagged<DebugInfoFlags>;
+ @cppRelaxedLoad @cppRelaxedStore flags: SmiTagged<DebugInfoFlags>;
coverage_info: CoverageInfo|Undefined;
}
diff --git a/deps/v8/src/objects/descriptor-array.h b/deps/v8/src/objects/descriptor-array.h
index 327931a421..1a9eb7fae1 100644
--- a/deps/v8/src/objects/descriptor-array.h
+++ b/deps/v8/src/objects/descriptor-array.h
@@ -133,9 +133,9 @@ class DescriptorArray
// Allocates a DescriptorArray, but returns the singleton
// empty descriptor array object if number_of_descriptors is 0.
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_EXPORT_PRIVATE static Handle<DescriptorArray> Allocate(
- LocalIsolate* isolate, int nof_descriptors, int slack,
+ IsolateT* isolate, int nof_descriptors, int slack,
AllocationType allocation = AllocationType::kYoung);
void Initialize(EnumCache enum_cache, HeapObject undefined_value,
diff --git a/deps/v8/src/objects/dictionary.h b/deps/v8/src/objects/dictionary.h
index be255f8162..a2db1b6289 100644
--- a/deps/v8/src/objects/dictionary.h
+++ b/deps/v8/src/objects/dictionary.h
@@ -76,9 +76,9 @@ class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE) Dictionary
// Garbage collection support.
inline ObjectSlot RawFieldOfValueAt(InternalIndex entry);
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_WARN_UNUSED_RESULT static Handle<Derived> Add(
- LocalIsolate* isolate, Handle<Derived> dictionary, Key key,
+ IsolateT* isolate, Handle<Derived> dictionary, Key key,
Handle<Object> value, PropertyDetails details,
InternalIndex* entry_out = nullptr);
@@ -142,9 +142,9 @@ class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE) BaseNameDictionary
inline int Hash() const;
// Creates a new dictionary.
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_WARN_UNUSED_RESULT static Handle<Derived> New(
- LocalIsolate* isolate, int at_least_space_for,
+ IsolateT* isolate, int at_least_space_for,
AllocationType allocation = AllocationType::kYoung,
MinimumCapacity capacity_option = USE_DEFAULT_MINIMUM_CAPACITY);
@@ -159,9 +159,9 @@ class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE) BaseNameDictionary
static Handle<FixedArray> IterationIndices(Isolate* isolate,
Handle<Derived> dictionary);
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_WARN_UNUSED_RESULT static Handle<Derived> AddNoUpdateNextEnumerationIndex(
- LocalIsolate* isolate, Handle<Derived> dictionary, Key key,
+ IsolateT* isolate, Handle<Derived> dictionary, Key key,
Handle<Object> value, PropertyDetails details,
InternalIndex* entry_out = nullptr);
diff --git a/deps/v8/src/objects/elements-kind.cc b/deps/v8/src/objects/elements-kind.cc
index 78670f25bd..6ffa34b868 100644
--- a/deps/v8/src/objects/elements-kind.cc
+++ b/deps/v8/src/objects/elements-kind.cc
@@ -17,19 +17,30 @@ int ElementsKindToShiftSize(ElementsKind elements_kind) {
case UINT8_ELEMENTS:
case INT8_ELEMENTS:
case UINT8_CLAMPED_ELEMENTS:
+ case RAB_GSAB_UINT8_ELEMENTS:
+ case RAB_GSAB_INT8_ELEMENTS:
+ case RAB_GSAB_UINT8_CLAMPED_ELEMENTS:
return 0;
case UINT16_ELEMENTS:
case INT16_ELEMENTS:
+ case RAB_GSAB_UINT16_ELEMENTS:
+ case RAB_GSAB_INT16_ELEMENTS:
return 1;
case UINT32_ELEMENTS:
case INT32_ELEMENTS:
case FLOAT32_ELEMENTS:
+ case RAB_GSAB_UINT32_ELEMENTS:
+ case RAB_GSAB_INT32_ELEMENTS:
+ case RAB_GSAB_FLOAT32_ELEMENTS:
return 2;
case PACKED_DOUBLE_ELEMENTS:
case HOLEY_DOUBLE_ELEMENTS:
case FLOAT64_ELEMENTS:
case BIGINT64_ELEMENTS:
case BIGUINT64_ELEMENTS:
+ case RAB_GSAB_FLOAT64_ELEMENTS:
+ case RAB_GSAB_BIGINT64_ELEMENTS:
+ case RAB_GSAB_BIGUINT64_ELEMENTS:
return 3;
case PACKED_SMI_ELEMENTS:
case PACKED_ELEMENTS:
@@ -109,6 +120,7 @@ const char* ElementsKindToString(ElementsKind kind) {
return #TYPE "ELEMENTS";
TYPED_ARRAYS(PRINT_NAME);
+ RAB_GSAB_TYPED_ARRAYS(PRINT_NAME);
#undef PRINT_NAME
case NO_ELEMENTS:
return "NO_ELEMENTS";
diff --git a/deps/v8/src/objects/elements-kind.h b/deps/v8/src/objects/elements-kind.h
index ec3ca3402d..b19e21136f 100644
--- a/deps/v8/src/objects/elements-kind.h
+++ b/deps/v8/src/objects/elements-kind.h
@@ -28,6 +28,36 @@ namespace internal {
V(BigUint64, biguint64, BIGUINT64, uint64_t) \
V(BigInt64, bigint64, BIGINT64, int64_t)
+#define RAB_GSAB_TYPED_ARRAYS(V) \
+ V(RabGsabUint8, rab_gsab_uint8, RAB_GSAB_UINT8, uint8_t) \
+ V(RabGsabInt8, rab_gsab_int8, RAB_GSAB_INT8, int8_t) \
+ V(RabGsabUint16, rab_gsab_uint16, RAB_GSAB_UINT16, uint16_t) \
+ V(RabGsabInt16, rab_gsab_int16, RAB_GSAB_INT16, int16_t) \
+ V(RabGsabUint32, rab_gsab_uint32, RAB_GSAB_UINT32, uint32_t) \
+ V(RabGsabInt32, rab_gsab_int32, RAB_GSAB_INT32, int32_t) \
+ V(RabGsabFloat32, rab_gsab_float32, RAB_GSAB_FLOAT32, float) \
+ V(RabGsabFloat64, rab_gsab_float64, RAB_GSAB_FLOAT64, double) \
+ V(RabGsabUint8Clamped, rab_gsab_uint8_clamped, RAB_GSAB_UINT8_CLAMPED, \
+ uint8_t) \
+ V(RabGsabBigUint64, rab_gsab_biguint64, RAB_GSAB_BIGUINT64, uint64_t) \
+ V(RabGsabBigInt64, rab_gsab_bigint64, RAB_GSAB_BIGINT64, int64_t)
+
+// The TypedArrays backed by RAB / GSAB are called Uint8Array, Uint16Array etc,
+// and not RabGsabUint8Array, RabGsabUint16Array etc. This macro is used for
+// generating code which refers to the TypedArray type.
+#define RAB_GSAB_TYPED_ARRAYS_WITH_TYPED_ARRAY_TYPE(V) \
+ V(Uint8, rab_gsab_uint8, RAB_GSAB_UINT8, uint8_t) \
+ V(Int8, rab_gsab_int8, RAB_GSAB_INT8, int8_t) \
+ V(Uint16, rab_gsab_uint16, RAB_GSAB_UINT16, uint16_t) \
+ V(Int16, rab_gsab_int16, RAB_GSAB_INT16, int16_t) \
+ V(Uint32, rab_gsab_uint32, RAB_GSAB_UINT32, uint32_t) \
+ V(Int32, rab_gsab_int32, RAB_GSAB_INT32, int32_t) \
+ V(Float32, rab_gsab_float32, RAB_GSAB_FLOAT32, float) \
+ V(Float64, rab_gsab_float64, RAB_GSAB_FLOAT64, double) \
+ V(Uint8Clamped, rab_gsab_uint8_clamped, RAB_GSAB_UINT8_CLAMPED, uint8_t) \
+ V(BigUint64, rab_gsab_biguint64, RAB_GSAB_BIGUINT64, uint64_t) \
+ V(BigInt64, rab_gsab_bigint64, RAB_GSAB_BIGINT64, int64_t)
+
enum ElementsKind : uint8_t {
// The "fast" kind for elements that only contain SMI values. Must be first
// to make it possible to efficiently check maps for this kind.
@@ -71,6 +101,7 @@ enum ElementsKind : uint8_t {
// Fixed typed arrays.
#define TYPED_ARRAY_ELEMENTS_KIND(Type, type, TYPE, ctype) TYPE##_ELEMENTS,
TYPED_ARRAYS(TYPED_ARRAY_ELEMENTS_KIND)
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_ELEMENTS_KIND)
#undef TYPED_ARRAY_ELEMENTS_KIND
// Sentinel ElementsKind for objects with no elements.
@@ -78,11 +109,13 @@ enum ElementsKind : uint8_t {
// Derived constants from ElementsKind.
FIRST_ELEMENTS_KIND = PACKED_SMI_ELEMENTS,
- LAST_ELEMENTS_KIND = BIGINT64_ELEMENTS,
+ LAST_ELEMENTS_KIND = RAB_GSAB_BIGINT64_ELEMENTS,
FIRST_FAST_ELEMENTS_KIND = PACKED_SMI_ELEMENTS,
LAST_FAST_ELEMENTS_KIND = HOLEY_DOUBLE_ELEMENTS,
FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND = UINT8_ELEMENTS,
LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND = BIGINT64_ELEMENTS,
+ FIRST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND = RAB_GSAB_UINT8_ELEMENTS,
+ LAST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND = RAB_GSAB_BIGINT64_ELEMENTS,
TERMINAL_FAST_ELEMENTS_KIND = HOLEY_ELEMENTS,
FIRST_ANY_NONEXTENSIBLE_ELEMENTS_KIND = PACKED_NONEXTENSIBLE_ELEMENTS,
LAST_ANY_NONEXTENSIBLE_ELEMENTS_KIND = HOLEY_FROZEN_ELEMENTS,
@@ -103,7 +136,7 @@ constexpr int kFastElementsKindCount =
constexpr int kFastElementsKindPackedToHoley =
HOLEY_SMI_ELEMENTS - PACKED_SMI_ELEMENTS;
-constexpr int kElementsKindBits = 5;
+constexpr int kElementsKindBits = 6;
STATIC_ASSERT((1 << kElementsKindBits) > LAST_ELEMENTS_KIND);
STATIC_ASSERT((1 << (kElementsKindBits - 1)) <= LAST_ELEMENTS_KIND);
@@ -150,8 +183,20 @@ inline bool IsTypedArrayElementsKind(ElementsKind kind) {
LAST_FIXED_TYPED_ARRAY_ELEMENTS_KIND);
}
+inline bool IsRabGsabTypedArrayElementsKind(ElementsKind kind) {
+ return base::IsInRange(kind, FIRST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND,
+ LAST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND);
+}
+
+inline bool IsTypedArrayOrRabGsabTypedArrayElementsKind(ElementsKind kind) {
+ return base::IsInRange(kind, FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND,
+ LAST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND);
+}
+
inline bool IsTerminalElementsKind(ElementsKind kind) {
- return kind == TERMINAL_FAST_ELEMENTS_KIND || IsTypedArrayElementsKind(kind);
+ return kind == TERMINAL_FAST_ELEMENTS_KIND ||
+ IsTypedArrayElementsKind(kind) ||
+ IsRabGsabTypedArrayElementsKind(kind);
}
inline bool IsFastElementsKind(ElementsKind kind) {
@@ -281,6 +326,13 @@ inline ElementsKind GetHoleyElementsKind(ElementsKind packed_kind) {
return packed_kind;
}
+inline ElementsKind GetCorrespondingRabGsabElementsKind(
+ ElementsKind typed_array_kind) {
+ DCHECK(IsTypedArrayElementsKind(typed_array_kind));
+ return ElementsKind(typed_array_kind - FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND +
+ FIRST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND);
+}
+
inline bool UnionElementsKindUptoPackedness(ElementsKind* a_out,
ElementsKind b) {
// Assert that the union of two ElementKinds can be computed via std::max.
diff --git a/deps/v8/src/objects/elements.cc b/deps/v8/src/objects/elements.cc
index 9b1c7936bb..e70ae48900 100644
--- a/deps/v8/src/objects/elements.cc
+++ b/deps/v8/src/objects/elements.cc
@@ -4,6 +4,7 @@
#include "src/objects/elements.h"
+#include "src/base/atomicops.h"
#include "src/common/message-template.h"
#include "src/execution/arguments.h"
#include "src/execution/frames.h"
@@ -59,6 +60,17 @@
// - Uint8ClampedElementsAccessor
// - BigUint64ElementsAccessor
// - BigInt64ElementsAccessor
+// - RabGsabUint8ElementsAccessor
+// - RabGsabInt8ElementsAccessor
+// - RabGsabUint16ElementsAccessor
+// - RabGsabInt16ElementsAccessor
+// - RabGsabUint32ElementsAccessor
+// - RabGsabInt32ElementsAccessor
+// - RabGsabFloat32ElementsAccessor
+// - RabGsabFloat64ElementsAccessor
+// - RabGsabUint8ClampedElementsAccessor
+// - RabGsabBigUint64ElementsAccessor
+// - RabGsabBigInt64ElementsAccessor
// - DictionaryElementsAccessor
// - SloppyArgumentsElementsAccessor
// - FastSloppyArgumentsElementsAccessor
@@ -129,7 +141,19 @@ enum Where { AT_START, AT_END };
V(Float64ElementsAccessor, FLOAT64_ELEMENTS, ByteArray) \
V(Uint8ClampedElementsAccessor, UINT8_CLAMPED_ELEMENTS, ByteArray) \
V(BigUint64ElementsAccessor, BIGUINT64_ELEMENTS, ByteArray) \
- V(BigInt64ElementsAccessor, BIGINT64_ELEMENTS, ByteArray)
+ V(BigInt64ElementsAccessor, BIGINT64_ELEMENTS, ByteArray) \
+ V(RabGsabUint8ElementsAccessor, RAB_GSAB_UINT8_ELEMENTS, ByteArray) \
+ V(RabGsabInt8ElementsAccessor, RAB_GSAB_INT8_ELEMENTS, ByteArray) \
+ V(RabGsabUint16ElementsAccessor, RAB_GSAB_UINT16_ELEMENTS, ByteArray) \
+ V(RabGsabInt16ElementsAccessor, RAB_GSAB_INT16_ELEMENTS, ByteArray) \
+ V(RabGsabUint32ElementsAccessor, RAB_GSAB_UINT32_ELEMENTS, ByteArray) \
+ V(RabGsabInt32ElementsAccessor, RAB_GSAB_INT32_ELEMENTS, ByteArray) \
+ V(RabGsabFloat32ElementsAccessor, RAB_GSAB_FLOAT32_ELEMENTS, ByteArray) \
+ V(RabGsabFloat64ElementsAccessor, RAB_GSAB_FLOAT64_ELEMENTS, ByteArray) \
+ V(RabGsabUint8ClampedElementsAccessor, RAB_GSAB_UINT8_CLAMPED_ELEMENTS, \
+ ByteArray) \
+ V(RabGsabBigUint64ElementsAccessor, RAB_GSAB_BIGUINT64_ELEMENTS, ByteArray) \
+ V(RabGsabBigInt64ElementsAccessor, RAB_GSAB_BIGINT64_ELEMENTS, ByteArray)
template <ElementsKind Kind>
class ElementsKindTraits {
@@ -639,57 +663,64 @@ class ElementsAccessorBase : public InternalElementsAccessor {
UNREACHABLE();
}
- void Add(Handle<JSObject> object, uint32_t index, Handle<Object> value,
- PropertyAttributes attributes, uint32_t new_capacity) final {
- Subclass::AddImpl(object, index, value, attributes, new_capacity);
+ Maybe<bool> Add(Handle<JSObject> object, uint32_t index, Handle<Object> value,
+ PropertyAttributes attributes, uint32_t new_capacity) final {
+ return Subclass::AddImpl(object, index, value, attributes, new_capacity);
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
UNREACHABLE();
}
- uint32_t Push(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t push_size) final {
+ Maybe<uint32_t> Push(Handle<JSArray> receiver, BuiltinArguments* args,
+ uint32_t push_size) final {
return Subclass::PushImpl(receiver, args, push_size);
}
- static uint32_t PushImpl(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t push_sized) {
+ static Maybe<uint32_t> PushImpl(Handle<JSArray> receiver,
+ BuiltinArguments* args, uint32_t push_sized) {
UNREACHABLE();
}
- uint32_t Unshift(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t unshift_size) final {
+ Maybe<uint32_t> Unshift(Handle<JSArray> receiver, BuiltinArguments* args,
+ uint32_t unshift_size) final {
return Subclass::UnshiftImpl(receiver, args, unshift_size);
}
- static uint32_t UnshiftImpl(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t unshift_size) {
+ static Maybe<uint32_t> UnshiftImpl(Handle<JSArray> receiver,
+ BuiltinArguments* args,
+ uint32_t unshift_size) {
UNREACHABLE();
}
- Handle<Object> Pop(Handle<JSArray> receiver) final {
+ MaybeHandle<Object> Pop(Handle<JSArray> receiver) final {
return Subclass::PopImpl(receiver);
}
- static Handle<Object> PopImpl(Handle<JSArray> receiver) { UNREACHABLE(); }
+ static MaybeHandle<Object> PopImpl(Handle<JSArray> receiver) {
+ UNREACHABLE();
+ }
- Handle<Object> Shift(Handle<JSArray> receiver) final {
+ MaybeHandle<Object> Shift(Handle<JSArray> receiver) final {
return Subclass::ShiftImpl(receiver);
}
- static Handle<Object> ShiftImpl(Handle<JSArray> receiver) { UNREACHABLE(); }
+ static MaybeHandle<Object> ShiftImpl(Handle<JSArray> receiver) {
+ UNREACHABLE();
+ }
- void SetLength(Handle<JSArray> array, uint32_t length) final {
- Subclass::SetLengthImpl(array->GetIsolate(), array, length,
- handle(array->elements(), array->GetIsolate()));
+ Maybe<bool> SetLength(Handle<JSArray> array, uint32_t length) final {
+ return Subclass::SetLengthImpl(
+ array->GetIsolate(), array, length,
+ handle(array->elements(), array->GetIsolate()));
}
- static void SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
- uint32_t length,
- Handle<FixedArrayBase> backing_store) {
+ static Maybe<bool> SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
+ uint32_t length,
+ Handle<FixedArrayBase> backing_store) {
DCHECK(!array->SetLengthWouldNormalize(length));
DCHECK(IsFastElementsKind(array->GetElementsKind()));
uint32_t old_length = 0;
@@ -735,11 +766,13 @@ class ElementsAccessorBase : public InternalElementsAccessor {
} else {
// Check whether the backing store should be expanded.
capacity = std::max(length, JSObject::NewElementsCapacity(capacity));
- Subclass::GrowCapacityAndConvertImpl(array, capacity);
+ MAYBE_RETURN(Subclass::GrowCapacityAndConvertImpl(array, capacity),
+ Nothing<bool>());
}
array->set_length(Smi::FromInt(length));
JSObject::ValidateElements(*array);
+ return Just(true);
}
size_t NumberOfElements(JSObject receiver) final {
@@ -765,23 +798,35 @@ class ElementsAccessorBase : public InternalElementsAccessor {
return Subclass::GetMaxIndex(receiver, elements);
}
- static Handle<FixedArrayBase> ConvertElementsWithCapacity(
+ static MaybeHandle<FixedArrayBase> ConvertElementsWithCapacity(
Handle<JSObject> object, Handle<FixedArrayBase> old_elements,
ElementsKind from_kind, uint32_t capacity) {
return ConvertElementsWithCapacity(object, old_elements, from_kind,
capacity, 0, 0);
}
- static Handle<FixedArrayBase> ConvertElementsWithCapacity(
+ static MaybeHandle<FixedArrayBase> ConvertElementsWithCapacity(
Handle<JSObject> object, Handle<FixedArrayBase> old_elements,
ElementsKind from_kind, uint32_t capacity, uint32_t src_index,
uint32_t dst_index) {
Isolate* isolate = object->GetIsolate();
Handle<FixedArrayBase> new_elements;
+ // TODO(victorgomes): Retrieve native context in optimized code
+ // and remove the check isolate->context().is_null().
if (IsDoubleElementsKind(kind())) {
+ if (!isolate->context().is_null() &&
+ !base::IsInRange(capacity, 0, FixedDoubleArray::kMaxLength)) {
+ return isolate->Throw<FixedArrayBase>(isolate->factory()->NewRangeError(
+ MessageTemplate::kInvalidArrayLength));
+ }
new_elements = isolate->factory()->NewFixedDoubleArray(capacity);
} else {
- new_elements = isolate->factory()->NewUninitializedFixedArray(capacity);
+ if (!isolate->context().is_null() &&
+ !base::IsInRange(capacity, 0, FixedArray::kMaxLength)) {
+ return isolate->Throw<FixedArrayBase>(isolate->factory()->NewRangeError(
+ MessageTemplate::kInvalidArrayLength));
+ }
+ new_elements = isolate->factory()->NewFixedArray(capacity);
}
int packed_size = kPackedSizeNotKnown;
@@ -793,11 +838,11 @@ class ElementsAccessorBase : public InternalElementsAccessor {
from_kind, dst_index, packed_size,
kCopyToEndAndInitializeToHole);
- return new_elements;
+ return MaybeHandle<FixedArrayBase>(new_elements);
}
- static void TransitionElementsKindImpl(Handle<JSObject> object,
- Handle<Map> to_map) {
+ static Maybe<bool> TransitionElementsKindImpl(Handle<JSObject> object,
+ Handle<Map> to_map) {
Isolate* isolate = object->GetIsolate();
Handle<Map> from_map = handle(object->map(), isolate);
ElementsKind from_kind = from_map->elements_kind();
@@ -822,8 +867,12 @@ class ElementsAccessorBase : public InternalElementsAccessor {
(IsSmiElementsKind(from_kind) && IsDoubleElementsKind(to_kind)) ||
(IsDoubleElementsKind(from_kind) && IsObjectElementsKind(to_kind)));
uint32_t capacity = static_cast<uint32_t>(object->elements().length());
- Handle<FixedArrayBase> elements = ConvertElementsWithCapacity(
- object, from_elements, from_kind, capacity);
+ Handle<FixedArrayBase> elements;
+ ASSIGN_RETURN_ON_EXCEPTION_VALUE(
+ object->GetIsolate(), elements,
+ ConvertElementsWithCapacity(object, from_elements, from_kind,
+ capacity),
+ Nothing<bool>());
JSObject::SetMapAndElements(object, to_map, elements);
}
if (FLAG_trace_elements_transitions) {
@@ -832,10 +881,11 @@ class ElementsAccessorBase : public InternalElementsAccessor {
handle(object->elements(), isolate));
}
}
+ return Just(true);
}
- static void GrowCapacityAndConvertImpl(Handle<JSObject> object,
- uint32_t capacity) {
+ static Maybe<bool> GrowCapacityAndConvertImpl(Handle<JSObject> object,
+ uint32_t capacity) {
ElementsKind from_kind = object->GetElementsKind();
if (IsSmiOrObjectElementsKind(from_kind)) {
// Array optimizations rely on the prototype lookups of Array objects
@@ -850,15 +900,18 @@ class ElementsAccessorBase : public InternalElementsAccessor {
DCHECK(IsDoubleElementsKind(from_kind) != IsDoubleElementsKind(kind()) ||
IsDictionaryElementsKind(from_kind) ||
static_cast<uint32_t>(old_elements->length()) < capacity);
- Subclass::BasicGrowCapacityAndConvertImpl(object, old_elements, from_kind,
- kind(), capacity);
+ return Subclass::BasicGrowCapacityAndConvertImpl(
+ object, old_elements, from_kind, kind(), capacity);
}
- static void BasicGrowCapacityAndConvertImpl(
+ static Maybe<bool> BasicGrowCapacityAndConvertImpl(
Handle<JSObject> object, Handle<FixedArrayBase> old_elements,
ElementsKind from_kind, ElementsKind to_kind, uint32_t capacity) {
- Handle<FixedArrayBase> elements =
- ConvertElementsWithCapacity(object, old_elements, from_kind, capacity);
+ Handle<FixedArrayBase> elements;
+ ASSIGN_RETURN_ON_EXCEPTION_VALUE(
+ object->GetIsolate(), elements,
+ ConvertElementsWithCapacity(object, old_elements, from_kind, capacity),
+ Nothing<bool>());
if (IsHoleyElementsKind(from_kind)) {
to_kind = GetHoleyElementsKind(to_kind);
@@ -873,40 +926,45 @@ class ElementsAccessorBase : public InternalElementsAccessor {
JSObject::PrintElementsTransition(stdout, object, from_kind, old_elements,
to_kind, elements);
}
+ return Just(true);
}
- void TransitionElementsKind(Handle<JSObject> object, Handle<Map> map) final {
- Subclass::TransitionElementsKindImpl(object, map);
+ Maybe<bool> TransitionElementsKind(Handle<JSObject> object,
+ Handle<Map> map) final {
+ return Subclass::TransitionElementsKindImpl(object, map);
}
- void GrowCapacityAndConvert(Handle<JSObject> object,
- uint32_t capacity) final {
- Subclass::GrowCapacityAndConvertImpl(object, capacity);
+ Maybe<bool> GrowCapacityAndConvert(Handle<JSObject> object,
+ uint32_t capacity) final {
+ return Subclass::GrowCapacityAndConvertImpl(object, capacity);
}
- bool GrowCapacity(Handle<JSObject> object, uint32_t index) final {
+ Maybe<bool> GrowCapacity(Handle<JSObject> object, uint32_t index) final {
// This function is intended to be called from optimized code. We don't
// want to trigger lazy deopts there, so refuse to handle cases that would.
if (object->map().is_prototype_map() ||
object->WouldConvertToSlowElements(index)) {
- return false;
+ return Just(false);
}
Handle<FixedArrayBase> old_elements(object->elements(),
object->GetIsolate());
uint32_t new_capacity = JSObject::NewElementsCapacity(index + 1);
DCHECK(static_cast<uint32_t>(old_elements->length()) < new_capacity);
- Handle<FixedArrayBase> elements =
- ConvertElementsWithCapacity(object, old_elements, kind(), new_capacity);
+ Handle<FixedArrayBase> elements;
+ ASSIGN_RETURN_ON_EXCEPTION_VALUE(
+ object->GetIsolate(), elements,
+ ConvertElementsWithCapacity(object, old_elements, kind(), new_capacity),
+ Nothing<bool>());
DCHECK_EQ(object->GetElementsKind(), kind());
// Transition through the allocation site as well if present.
if (JSObject::UpdateAllocationSite<AllocationSiteUpdateMode::kCheckOnly>(
object, kind())) {
- return false;
+ return Just(false);
}
object->set_elements(*elements);
- return true;
+ return Just(true);
}
void Delete(Handle<JSObject> obj, InternalIndex entry) final {
@@ -1220,13 +1278,14 @@ class ElementsAccessorBase : public InternalElementsAccessor {
return Subclass::GetCapacityImpl(holder, backing_store);
}
- static Object FillImpl(Handle<JSObject> receiver, Handle<Object> obj_value,
- size_t start, size_t end) {
+ static MaybeHandle<Object> FillImpl(Handle<JSObject> receiver,
+ Handle<Object> obj_value, size_t start,
+ size_t end) {
UNREACHABLE();
}
- Object Fill(Handle<JSObject> receiver, Handle<Object> obj_value, size_t start,
- size_t end) override {
+ MaybeHandle<Object> Fill(Handle<JSObject> receiver, Handle<Object> obj_value,
+ size_t start, size_t end) override {
return Subclass::FillImpl(receiver, obj_value, start, end);
}
@@ -1348,9 +1407,9 @@ class DictionaryElementsAccessor
return dict.NumberOfElements();
}
- static void SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
- uint32_t length,
- Handle<FixedArrayBase> backing_store) {
+ static Maybe<bool> SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
+ uint32_t length,
+ Handle<FixedArrayBase> backing_store) {
Handle<NumberDictionary> dict =
Handle<NumberDictionary>::cast(backing_store);
uint32_t old_length = 0;
@@ -1401,6 +1460,7 @@ class DictionaryElementsAccessor
Handle<Object> length_obj = isolate->factory()->NewNumberFromUint(length);
array->set_length(*length_obj);
+ return Just(true);
}
static void CopyElementsImpl(Isolate* isolate, FixedArrayBase from,
@@ -1466,9 +1526,10 @@ class DictionaryElementsAccessor
dictionary.DetailsAtPut(entry, details);
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
PropertyDetails details(kData, attributes, PropertyCellType::kNoCell);
Handle<NumberDictionary> dictionary =
object->HasFastElements() || object->HasFastStringWrapperElements()
@@ -1479,8 +1540,9 @@ class DictionaryElementsAccessor
object->GetIsolate(), dictionary, index, value, details);
new_dictionary->UpdateMaxNumberKey(index, object);
if (attributes != NONE) object->RequireSlowElements(*new_dictionary);
- if (dictionary.is_identical_to(new_dictionary)) return;
+ if (dictionary.is_identical_to(new_dictionary)) return Just(true);
object->set_elements(*new_dictionary);
+ return Just(true);
}
static bool HasEntryImpl(Isolate* isolate, FixedArrayBase store,
@@ -1904,12 +1966,10 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
backing_store->set_the_hole(isolate, entry);
// TODO(verwaest): Move this out of elements.cc.
- // If an old space backing store is larger than a certain size and
+ // If the backing store is larger than a certain size and
// has too few used values, normalize it.
const int kMinLengthForSparsenessCheck = 64;
if (backing_store->length() < kMinLengthForSparsenessCheck) return;
- // TODO(ulan): Check if it works with young large objects.
- if (ObjectInYoungGeneration(*backing_store)) return;
uint32_t length = 0;
if (obj->IsJSArray()) {
JSArray::cast(*obj).length().ToArrayLength(&length);
@@ -1971,9 +2031,10 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
value, attributes);
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
DCHECK_EQ(NONE, attributes);
ElementsKind from_kind = object->GetElementsKind();
ElementsKind to_kind = Subclass::kind();
@@ -1981,7 +2042,8 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
IsDoubleElementsKind(from_kind) != IsDoubleElementsKind(to_kind) ||
Subclass::GetCapacityImpl(*object, object->elements()) !=
new_capacity) {
- Subclass::GrowCapacityAndConvertImpl(object, new_capacity);
+ MAYBE_RETURN(Subclass::GrowCapacityAndConvertImpl(object, new_capacity),
+ Nothing<bool>());
} else {
if (IsFastElementsKind(from_kind) && from_kind != to_kind) {
JSObject::TransitionElementsKind(object, to_kind);
@@ -1992,6 +2054,7 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
}
}
Subclass::SetImpl(object, InternalIndex(index), *value);
+ return Just(true);
}
static void DeleteImpl(Handle<JSObject> obj, InternalIndex entry) {
@@ -2086,24 +2149,25 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
#endif
}
- static Handle<Object> PopImpl(Handle<JSArray> receiver) {
+ static MaybeHandle<Object> PopImpl(Handle<JSArray> receiver) {
return Subclass::RemoveElement(receiver, AT_END);
}
- static Handle<Object> ShiftImpl(Handle<JSArray> receiver) {
+ static MaybeHandle<Object> ShiftImpl(Handle<JSArray> receiver) {
return Subclass::RemoveElement(receiver, AT_START);
}
- static uint32_t PushImpl(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t push_size) {
+ static Maybe<uint32_t> PushImpl(Handle<JSArray> receiver,
+ BuiltinArguments* args, uint32_t push_size) {
Handle<FixedArrayBase> backing_store(receiver->elements(),
receiver->GetIsolate());
return Subclass::AddArguments(receiver, backing_store, args, push_size,
AT_END);
}
- static uint32_t UnshiftImpl(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t unshift_size) {
+ static Maybe<uint32_t> UnshiftImpl(Handle<JSArray> receiver,
+ BuiltinArguments* args,
+ uint32_t unshift_size) {
Handle<FixedArrayBase> backing_store(receiver->elements(),
receiver->GetIsolate());
return Subclass::AddArguments(receiver, backing_store, args, unshift_size,
@@ -2137,8 +2201,9 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
}
}
- static Object FillImpl(Handle<JSObject> receiver, Handle<Object> obj_value,
- size_t start, size_t end) {
+ static MaybeHandle<Object> FillImpl(Handle<JSObject> receiver,
+ Handle<Object> obj_value, size_t start,
+ size_t end) {
// Ensure indexes are within array bounds
DCHECK_LE(0, start);
DCHECK_LE(start, end);
@@ -2151,8 +2216,8 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
// Make sure we have enough space.
DCHECK_LE(end, std::numeric_limits<uint32_t>::max());
if (end > Subclass::GetCapacityImpl(*receiver, receiver->elements())) {
- Subclass::GrowCapacityAndConvertImpl(receiver,
- static_cast<uint32_t>(end));
+ MAYBE_RETURN_NULL(Subclass::GrowCapacityAndConvertImpl(
+ receiver, static_cast<uint32_t>(end)));
CHECK_EQ(Subclass::kind(), receiver->GetElementsKind());
}
DCHECK_LE(end, Subclass::GetCapacityImpl(*receiver, receiver->elements()));
@@ -2160,7 +2225,7 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
for (size_t index = start; index < end; ++index) {
Subclass::SetImpl(receiver, InternalIndex(index), *obj_value);
}
- return *receiver;
+ return MaybeHandle<Object>(receiver);
}
static Maybe<bool> IncludesValueImpl(Isolate* isolate,
@@ -2322,8 +2387,8 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
return result;
}
- static Handle<Object> RemoveElement(Handle<JSArray> receiver,
- Where remove_position) {
+ static MaybeHandle<Object> RemoveElement(Handle<JSArray> receiver,
+ Where remove_position) {
Isolate* isolate = receiver->GetIsolate();
ElementsKind kind = KindTraits::Kind;
if (IsSmiOrObjectElementsKind(kind)) {
@@ -2341,24 +2406,26 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
Subclass::MoveElements(isolate, receiver, backing_store, 0, 1, new_length,
0, 0);
}
- Subclass::SetLengthImpl(isolate, receiver, new_length, backing_store);
+ MAYBE_RETURN_NULL(
+ Subclass::SetLengthImpl(isolate, receiver, new_length, backing_store));
if (IsHoleyElementsKind(kind) && result->IsTheHole(isolate)) {
return isolate->factory()->undefined_value();
}
- return result;
+ return MaybeHandle<Object>(result);
}
- static uint32_t AddArguments(Handle<JSArray> receiver,
- Handle<FixedArrayBase> backing_store,
- BuiltinArguments* args, uint32_t add_size,
- Where add_position) {
+ static Maybe<uint32_t> AddArguments(Handle<JSArray> receiver,
+ Handle<FixedArrayBase> backing_store,
+ BuiltinArguments* args, uint32_t add_size,
+ Where add_position) {
uint32_t length = Smi::ToInt(receiver->length());
DCHECK_LT(0, add_size);
uint32_t elms_len = backing_store->length();
// Check we do not overflow the new_length.
DCHECK(add_size <= static_cast<uint32_t>(Smi::kMaxValue - length));
uint32_t new_length = length + add_size;
+ Isolate* isolate = receiver->GetIsolate();
if (new_length > elms_len) {
// New backing storage is needed.
@@ -2366,14 +2433,16 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
// If we add arguments to the start we have to shift the existing objects.
int copy_dst_index = add_position == AT_START ? add_size : 0;
// Copy over all objects to a new backing_store.
- backing_store = Subclass::ConvertElementsWithCapacity(
- receiver, backing_store, KindTraits::Kind, capacity, 0,
- copy_dst_index);
+ ASSIGN_RETURN_ON_EXCEPTION_VALUE(
+ isolate, backing_store,
+ Subclass::ConvertElementsWithCapacity(receiver, backing_store,
+ KindTraits::Kind, capacity, 0,
+ copy_dst_index),
+ Nothing<uint32_t>());
receiver->set_elements(*backing_store);
} else if (add_position == AT_START) {
// If the backing store has enough capacity and we add elements to the
// start we have to shift the existing objects.
- Isolate* isolate = receiver->GetIsolate();
Subclass::MoveElements(isolate, receiver, backing_store, add_size, 0,
length, 0, 0);
}
@@ -2383,7 +2452,7 @@ class FastElementsAccessor : public ElementsAccessorBase<Subclass, KindTraits> {
Subclass::CopyArguments(args, backing_store, add_size, 1, insertion_index);
// Set the length.
receiver->set_length(Smi::FromInt(new_length));
- return new_length;
+ return Just(new_length);
}
static void CopyArguments(BuiltinArguments* args,
@@ -2469,6 +2538,7 @@ class FastSmiOrObjectElementsAccessor
case SLOW_STRING_WRAPPER_ELEMENTS:
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
// This function is currently only used for JSArrays with non-zero
// length.
@@ -2569,28 +2639,29 @@ class FastNonextensibleObjectElementsAccessor
public:
using BackingStore = typename KindTraits::BackingStore;
- static uint32_t PushImpl(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t push_size) {
+ static Maybe<uint32_t> PushImpl(Handle<JSArray> receiver,
+ BuiltinArguments* args, uint32_t push_size) {
UNREACHABLE();
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
UNREACHABLE();
}
// TODO(duongn): refactor this due to code duplication of sealed version.
// Consider using JSObject::NormalizeElements(). Also consider follow the fast
// element logic instead of changing to dictionary mode.
- static void SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
- uint32_t length,
- Handle<FixedArrayBase> backing_store) {
+ static Maybe<bool> SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
+ uint32_t length,
+ Handle<FixedArrayBase> backing_store) {
uint32_t old_length = 0;
CHECK(array->length().ToArrayIndex(&old_length));
if (length == old_length) {
// Do nothing.
- return;
+ return Just(true);
}
// Transition to DICTIONARY_ELEMENTS.
@@ -2622,8 +2693,8 @@ class FastNonextensibleObjectElementsAccessor
// Set length.
Handle<FixedArrayBase> new_backing_store(array->elements(), isolate);
- DictionaryElementsAccessor::SetLengthImpl(isolate, array, length,
- new_backing_store);
+ return DictionaryElementsAccessor::SetLengthImpl(isolate, array, length,
+ new_backing_store);
}
};
@@ -2662,30 +2733,33 @@ class FastSealedObjectElementsAccessor
UNREACHABLE();
}
- static Handle<Object> PopImpl(Handle<JSArray> receiver) { UNREACHABLE(); }
+ static MaybeHandle<Object> PopImpl(Handle<JSArray> receiver) {
+ UNREACHABLE();
+ }
- static uint32_t PushImpl(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t push_size) {
+ static Maybe<uint32_t> PushImpl(Handle<JSArray> receiver,
+ BuiltinArguments* args, uint32_t push_size) {
UNREACHABLE();
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
UNREACHABLE();
}
// TODO(duongn): refactor this due to code duplication of nonextensible
// version. Consider using JSObject::NormalizeElements(). Also consider follow
// the fast element logic instead of changing to dictionary mode.
- static void SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
- uint32_t length,
- Handle<FixedArrayBase> backing_store) {
+ static Maybe<bool> SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
+ uint32_t length,
+ Handle<FixedArrayBase> backing_store) {
uint32_t old_length = 0;
CHECK(array->length().ToArrayIndex(&old_length));
if (length == old_length) {
// Do nothing.
- return;
+ return Just(true);
}
// Transition to DICTIONARY_ELEMENTS.
@@ -2717,8 +2791,8 @@ class FastSealedObjectElementsAccessor
// Set length
Handle<FixedArrayBase> new_backing_store(array->elements(), isolate);
- DictionaryElementsAccessor::SetLengthImpl(isolate, array, length,
- new_backing_store);
+ return DictionaryElementsAccessor::SetLengthImpl(isolate, array, length,
+ new_backing_store);
}
};
@@ -2772,22 +2846,25 @@ class FastFrozenObjectElementsAccessor
UNREACHABLE();
}
- static Handle<Object> PopImpl(Handle<JSArray> receiver) { UNREACHABLE(); }
+ static MaybeHandle<Object> PopImpl(Handle<JSArray> receiver) {
+ UNREACHABLE();
+ }
- static uint32_t PushImpl(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t push_size) {
+ static Maybe<uint32_t> PushImpl(Handle<JSArray> receiver,
+ BuiltinArguments* args, uint32_t push_size) {
UNREACHABLE();
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
UNREACHABLE();
}
- static void SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
- uint32_t length,
- Handle<FixedArrayBase> backing_store) {
+ static Maybe<bool> SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
+ uint32_t length,
+ Handle<FixedArrayBase> backing_store) {
UNREACHABLE();
}
@@ -2877,6 +2954,7 @@ class FastDoubleElementsAccessor
case NO_ELEMENTS:
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
// This function is currently only used for JSArrays with non-zero
// length.
@@ -2952,6 +3030,8 @@ class FastHoleyDoubleElementsAccessor
FastHoleyDoubleElementsAccessor,
ElementsKindTraits<HOLEY_DOUBLE_ELEMENTS>> {};
+enum IsSharedBuffer : bool { kShared = true, kUnshared = false };
+
// Super class for all external element arrays.
template <ElementsKind Kind, typename ElementType>
class TypedElementsAccessor
@@ -2998,42 +3078,70 @@ class TypedElementsAccessor
static void SetImpl(Handle<JSObject> holder, InternalIndex entry,
Object value) {
Handle<JSTypedArray> typed_array = Handle<JSTypedArray>::cast(holder);
- DCHECK_LE(entry.raw_value(), typed_array->length());
- SetImpl(static_cast<ElementType*>(typed_array->DataPtr()),
- entry.raw_value(), FromObject(value));
- }
+ DCHECK_LE(entry.raw_value(), typed_array->GetLength());
+ auto* entry_ptr =
+ static_cast<ElementType*>(typed_array->DataPtr()) + entry.raw_value();
+ auto is_shared = typed_array->buffer().is_shared() ? kShared : kUnshared;
+ SetImpl(entry_ptr, FromObject(value), is_shared);
+ }
+
+ static void SetImpl(ElementType* data_ptr, ElementType value,
+ IsSharedBuffer is_shared) {
+ // TODO(ishell, v8:8875): Independent of pointer compression, 8-byte size
+ // fields (external pointers, doubles and BigInt data) are not always 8-byte
+ // aligned. This is relying on undefined behaviour in C++, since {data_ptr}
+ // is not aligned to {alignof(ElementType)}.
+ if (!is_shared) {
+ base::WriteUnalignedValue(reinterpret_cast<Address>(data_ptr), value);
+ return;
+ }
- static void SetImpl(ElementType* data_ptr, size_t entry, ElementType value) {
// The JavaScript memory model allows for racy reads and writes to a
- // SharedArrayBuffer's backing store. ThreadSanitizer will catch these
- // racy accesses and warn about them, so we disable TSAN for these reads
- // and writes using annotations.
- //
- // We don't use relaxed atomics here, as it is not a requirement of the
- // JavaScript memory model to have tear-free reads of overlapping accesses,
- // and using relaxed atomics may introduce overhead.
- TSAN_ANNOTATE_IGNORE_WRITES_BEGIN;
- if (COMPRESS_POINTERS_BOOL && alignof(ElementType) > kTaggedSize) {
- // TODO(ishell, v8:8875): When pointer compression is enabled 8-byte size
- // fields (external pointers, doubles and BigInt data) are only
- // kTaggedSize aligned so we have to use unaligned pointer friendly way of
- // accessing them in order to avoid undefined behavior in C++ code.
- base::WriteUnalignedValue<ElementType>(
- reinterpret_cast<Address>(data_ptr + entry), value);
- } else {
- data_ptr[entry] = value;
+ // SharedArrayBuffer's backing store. Using relaxed atomics is not strictly
+ // required for JavaScript, but will avoid undefined behaviour in C++ and is
+ // unlikely to introduce noticable overhead.
+ if (IsAligned(reinterpret_cast<uintptr_t>(data_ptr),
+ alignof(std::atomic<ElementType>))) {
+ // Use a single relaxed atomic store.
+ STATIC_ASSERT(sizeof(std::atomic<ElementType>) == sizeof(ElementType));
+ reinterpret_cast<std::atomic<ElementType>*>(data_ptr)->store(
+ value, std::memory_order_relaxed);
+ return;
+ }
+
+ // Some static CHECKs (are optimized out if succeeding) to ensure that
+ // {data_ptr} is at least four byte aligned, and {std::atomic<uint32_t>}
+ // has size and alignment of four bytes, such that we can cast the
+ // {data_ptr} to it.
+ CHECK_LE(kInt32Size, alignof(ElementType));
+ CHECK_EQ(kInt32Size, alignof(std::atomic<uint32_t>));
+ CHECK_EQ(kInt32Size, sizeof(std::atomic<uint32_t>));
+ // And dynamically check that we indeed have at least four byte alignment.
+ DCHECK(IsAligned(reinterpret_cast<uintptr_t>(data_ptr), kInt32Size));
+ // Store as multiple 32-bit words. Make {kNumWords} >= 1 to avoid compiler
+ // warnings for the empty array or memcpy to an empty object.
+ constexpr size_t kNumWords =
+ std::max(size_t{1}, sizeof(ElementType) / kInt32Size);
+ uint32_t words[kNumWords];
+ CHECK_EQ(sizeof(words), sizeof(value));
+ memcpy(words, &value, sizeof(value));
+ for (size_t word = 0; word < kNumWords; ++word) {
+ STATIC_ASSERT(sizeof(std::atomic<uint32_t>) == sizeof(uint32_t));
+ reinterpret_cast<std::atomic<uint32_t>*>(data_ptr)[word].store(
+ words[word], std::memory_order_relaxed);
}
- TSAN_ANNOTATE_IGNORE_WRITES_END;
}
static Handle<Object> GetInternalImpl(Handle<JSObject> holder,
InternalIndex entry) {
Handle<JSTypedArray> typed_array = Handle<JSTypedArray>::cast(holder);
Isolate* isolate = typed_array->GetIsolate();
- DCHECK_LE(entry.raw_value(), typed_array->length());
+ DCHECK_LT(entry.raw_value(), typed_array->GetLength());
DCHECK(!typed_array->WasDetached());
- ElementType elem = GetImpl(
- static_cast<ElementType*>(typed_array->DataPtr()), entry.raw_value());
+ auto* element_ptr =
+ static_cast<ElementType*>(typed_array->DataPtr()) + entry.raw_value();
+ auto is_shared = typed_array->buffer().is_shared() ? kShared : kUnshared;
+ ElementType elem = GetImpl(element_ptr, is_shared);
return ToHandle(isolate, elem);
}
@@ -3042,28 +3150,53 @@ class TypedElementsAccessor
UNREACHABLE();
}
- static ElementType GetImpl(ElementType* data_ptr, size_t entry) {
+ static ElementType GetImpl(ElementType* data_ptr, IsSharedBuffer is_shared) {
+ // TODO(ishell, v8:8875): Independent of pointer compression, 8-byte size
+ // fields (external pointers, doubles and BigInt data) are not always
+ // 8-byte aligned.
+ if (!is_shared) {
+ return base::ReadUnalignedValue<ElementType>(
+ reinterpret_cast<Address>(data_ptr));
+ }
+
// The JavaScript memory model allows for racy reads and writes to a
- // SharedArrayBuffer's backing store. ThreadSanitizer will catch these
- // racy accesses and warn about them, so we disable TSAN for these reads
- // and writes using annotations.
- //
- // We don't use relaxed atomics here, as it is not a requirement of the
- // JavaScript memory model to have tear-free reads of overlapping accesses,
- // and using relaxed atomics may introduce overhead.
- TSAN_ANNOTATE_IGNORE_READS_BEGIN;
- ElementType result;
- if (COMPRESS_POINTERS_BOOL && alignof(ElementType) > kTaggedSize) {
- // TODO(ishell, v8:8875): When pointer compression is enabled 8-byte size
- // fields (external pointers, doubles and BigInt data) are only
- // kTaggedSize aligned so we have to use unaligned pointer friendly way of
- // accessing them in order to avoid undefined behavior in C++ code.
- result = base::ReadUnalignedValue<ElementType>(
- reinterpret_cast<Address>(data_ptr + entry));
- } else {
- result = data_ptr[entry];
+ // SharedArrayBuffer's backing store. Using relaxed atomics is not strictly
+ // required for JavaScript, but will avoid undefined behaviour in C++ and is
+ // unlikely to introduce noticable overhead.
+ if (IsAligned(reinterpret_cast<uintptr_t>(data_ptr),
+ alignof(std::atomic<ElementType>))) {
+ // Use a single relaxed atomic load.
+ STATIC_ASSERT(sizeof(std::atomic<ElementType>) == sizeof(ElementType));
+ // Note: acquire semantics are not needed here, but clang seems to merge
+ // this atomic load with the non-atomic load above if we use relaxed
+ // semantics. This will result in TSan failures.
+ return reinterpret_cast<std::atomic<ElementType>*>(data_ptr)->load(
+ std::memory_order_acquire);
+ }
+
+ // Some static CHECKs (are optimized out if succeeding) to ensure that
+ // {data_ptr} is at least four byte aligned, and {std::atomic<uint32_t>}
+ // has size and alignment of four bytes, such that we can cast the
+ // {data_ptr} to it.
+ CHECK_LE(kInt32Size, alignof(ElementType));
+ CHECK_EQ(kInt32Size, alignof(std::atomic<uint32_t>));
+ CHECK_EQ(kInt32Size, sizeof(std::atomic<uint32_t>));
+ // And dynamically check that we indeed have at least four byte alignment.
+ DCHECK(IsAligned(reinterpret_cast<uintptr_t>(data_ptr), kInt32Size));
+ // Load in multiple 32-bit words. Make {kNumWords} >= 1 to avoid compiler
+ // warnings for the empty array or memcpy to an empty object.
+ constexpr size_t kNumWords =
+ std::max(size_t{1}, sizeof(ElementType) / kInt32Size);
+ uint32_t words[kNumWords];
+ for (size_t word = 0; word < kNumWords; ++word) {
+ STATIC_ASSERT(sizeof(std::atomic<uint32_t>) == sizeof(uint32_t));
+ words[word] =
+ reinterpret_cast<std::atomic<uint32_t>*>(data_ptr)[word].load(
+ std::memory_order_relaxed);
}
- TSAN_ANNOTATE_IGNORE_READS_END;
+ ElementType result;
+ CHECK_EQ(sizeof(words), sizeof(result));
+ memcpy(&result, words, sizeof(result));
return result;
}
@@ -3086,9 +3219,9 @@ class TypedElementsAccessor
return false;
}
- static void SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
- uint32_t length,
- Handle<FixedArrayBase> backing_store) {
+ static Maybe<bool> SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
+ uint32_t length,
+ Handle<FixedArrayBase> backing_store) {
// External arrays do not support changing their length.
UNREACHABLE();
}
@@ -3111,8 +3244,7 @@ class TypedElementsAccessor
static size_t GetCapacityImpl(JSObject holder, FixedArrayBase backing_store) {
JSTypedArray typed_array = JSTypedArray::cast(holder);
- if (typed_array.WasDetached()) return 0;
- return typed_array.length();
+ return typed_array.GetLength();
}
static size_t NumberOfElementsImpl(JSObject receiver,
@@ -3155,8 +3287,9 @@ class TypedElementsAccessor
return Just(true);
}
- static Object FillImpl(Handle<JSObject> receiver, Handle<Object> value,
- size_t start, size_t end) {
+ static MaybeHandle<Object> FillImpl(Handle<JSObject> receiver,
+ Handle<Object> value, size_t start,
+ size_t end) {
Handle<JSTypedArray> typed_array = Handle<JSTypedArray>::cast(receiver);
DCHECK(!typed_array->WasDetached());
DCHECK_LE(start, end);
@@ -3171,7 +3304,7 @@ class TypedElementsAccessor
} else {
std::fill(data + start, data + end, scalar);
}
- return *typed_array;
+ return MaybeHandle<Object>(typed_array);
}
static Maybe<bool> IncludesValueImpl(Isolate* isolate,
@@ -3200,6 +3333,7 @@ class TypedElementsAccessor
ElementType typed_search_value;
ElementType* data_ptr =
reinterpret_cast<ElementType*>(typed_array.DataPtr());
+ auto is_shared = typed_array.buffer().is_shared() ? kShared : kUnshared;
if (Kind == BIGINT64_ELEMENTS || Kind == BIGUINT64_ELEMENTS) {
if (!value->IsBigInt()) return Just(false);
bool lossless;
@@ -3215,8 +3349,8 @@ class TypedElementsAccessor
}
if (std::isnan(search_value)) {
for (size_t k = start_from; k < length; ++k) {
- double elem_k =
- static_cast<double>(AccessorClass::GetImpl(data_ptr, k));
+ double elem_k = static_cast<double>(
+ AccessorClass::GetImpl(data_ptr + k, is_shared));
if (std::isnan(elem_k)) return Just(true);
}
return Just(false);
@@ -3233,7 +3367,7 @@ class TypedElementsAccessor
}
for (size_t k = start_from; k < length; ++k) {
- ElementType elem_k = AccessorClass::GetImpl(data_ptr, k);
+ ElementType elem_k = AccessorClass::GetImpl(data_ptr + k, is_shared);
if (elem_k == typed_search_value) return Just(true);
}
return Just(false);
@@ -3285,8 +3419,9 @@ class TypedElementsAccessor
length = typed_array.length();
}
+ auto is_shared = typed_array.buffer().is_shared() ? kShared : kUnshared;
for (size_t k = start_from; k < length; ++k) {
- ElementType elem_k = AccessorClass::GetImpl(data_ptr, k);
+ ElementType elem_k = AccessorClass::GetImpl(data_ptr + k, is_shared);
if (elem_k == typed_search_value) return Just<int64_t>(k);
}
return Just<int64_t>(-1);
@@ -3333,8 +3468,9 @@ class TypedElementsAccessor
DCHECK_LT(start_from, typed_array.length());
size_t k = start_from;
+ auto is_shared = typed_array.buffer().is_shared() ? kShared : kUnshared;
do {
- ElementType elem_k = AccessorClass::GetImpl(data_ptr, k);
+ ElementType elem_k = AccessorClass::GetImpl(data_ptr + k, is_shared);
if (elem_k == typed_search_value) return Just<int64_t>(k);
} while (k-- != 0);
return Just<int64_t>(-1);
@@ -3384,12 +3520,16 @@ class TypedElementsAccessor
size_t count = end - start;
DCHECK_LE(count, destination.length());
ElementType* dest_data = static_cast<ElementType*>(destination.DataPtr());
+ auto is_shared =
+ source.buffer().is_shared() || destination.buffer().is_shared()
+ ? kShared
+ : kUnshared;
switch (source.GetElementsKind()) {
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
case TYPE##_ELEMENTS: { \
ctype* source_data = reinterpret_cast<ctype*>(source.DataPtr()) + start; \
CopyBetweenBackingStores<TYPE##_ELEMENTS, ctype>(source_data, dest_data, \
- count); \
+ count, is_shared); \
break; \
}
TYPED_ARRAYS(TYPED_ARRAY_CASE)
@@ -3408,16 +3548,16 @@ class TypedElementsAccessor
template <ElementsKind SourceKind, typename SourceElementType>
static void CopyBetweenBackingStores(SourceElementType* source_data_ptr,
ElementType* dest_data_ptr,
- size_t length) {
- DisallowGarbageCollection no_gc;
- for (size_t i = 0; i < length; i++) {
+ size_t length,
+ IsSharedBuffer is_shared) {
+ for (; length > 0; --length, ++source_data_ptr, ++dest_data_ptr) {
// We use scalar accessors to avoid boxing/unboxing, so there are no
// allocations.
SourceElementType source_elem =
TypedElementsAccessor<SourceKind, SourceElementType>::GetImpl(
- source_data_ptr, i);
+ source_data_ptr, is_shared);
ElementType dest_elem = FromScalar(source_elem);
- SetImpl(dest_data_ptr, i, dest_elem);
+ SetImpl(dest_data_ptr, dest_elem, is_shared);
}
}
@@ -3448,14 +3588,24 @@ class TypedElementsAccessor
size_t source_byte_length = source.byte_length();
size_t dest_byte_length = destination.byte_length();
+ bool source_shared = source.buffer().is_shared();
+ bool destination_shared = destination.buffer().is_shared();
+
// We can simply copy the backing store if the types are the same, or if
// we are converting e.g. Uint8 <-> Int8, as the binary representation
// will be the same. This is not the case for floats or clamped Uint8,
// which have special conversion operations.
if (same_type || (same_size && both_are_simple)) {
size_t element_size = source.element_size();
- std::memmove(dest_data + offset * element_size, source_data,
- length * element_size);
+ if (source_shared || destination_shared) {
+ base::Relaxed_Memcpy(
+ reinterpret_cast<base::Atomic8*>(dest_data + offset * element_size),
+ reinterpret_cast<base::Atomic8*>(source_data),
+ length * element_size);
+ } else {
+ std::memmove(dest_data + offset * element_size, source_data,
+ length * element_size);
+ }
} else {
std::unique_ptr<uint8_t[]> cloned_source_elements;
@@ -3463,17 +3613,25 @@ class TypedElementsAccessor
if (dest_data + dest_byte_length > source_data &&
source_data + source_byte_length > dest_data) {
cloned_source_elements.reset(new uint8_t[source_byte_length]);
- std::memcpy(cloned_source_elements.get(), source_data,
- source_byte_length);
+ if (source_shared) {
+ base::Relaxed_Memcpy(
+ reinterpret_cast<base::Atomic8*>(cloned_source_elements.get()),
+ reinterpret_cast<base::Atomic8*>(source_data),
+ source_byte_length);
+ } else {
+ std::memcpy(cloned_source_elements.get(), source_data,
+ source_byte_length);
+ }
source_data = cloned_source_elements.get();
}
switch (source.GetElementsKind()) {
-#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
- case TYPE##_ELEMENTS: \
- CopyBetweenBackingStores<TYPE##_ELEMENTS, ctype>( \
- reinterpret_cast<ctype*>(source_data), \
- reinterpret_cast<ElementType*>(dest_data) + offset, length); \
+#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
+ case TYPE##_ELEMENTS: \
+ CopyBetweenBackingStores<TYPE##_ELEMENTS, ctype>( \
+ reinterpret_cast<ctype*>(source_data), \
+ reinterpret_cast<ElementType*>(dest_data) + offset, length, \
+ source_shared || destination_shared ? kShared : kUnshared); \
break;
TYPED_ARRAYS(TYPED_ARRAY_CASE)
default:
@@ -3529,6 +3687,9 @@ class TypedElementsAccessor
ElementsKind kind = source.GetElementsKind();
+ auto destination_shared =
+ destination.buffer().is_shared() ? kShared : kUnshared;
+
// When we find the hole, we normally have to look up the element on the
// prototype chain, which is not handled here and we return false instead.
// When the array has the original array prototype, and that prototype has
@@ -3546,17 +3707,19 @@ class TypedElementsAccessor
for (size_t i = 0; i < length; i++) {
Object elem = source_store.get(static_cast<int>(i));
- SetImpl(dest_data, i, FromScalar(Smi::ToInt(elem)));
+ SetImpl(dest_data + i, FromScalar(Smi::ToInt(elem)),
+ destination_shared);
}
return true;
} else if (kind == HOLEY_SMI_ELEMENTS) {
FixedArray source_store = FixedArray::cast(source.elements());
for (size_t i = 0; i < length; i++) {
if (source_store.is_the_hole(isolate, static_cast<int>(i))) {
- SetImpl(dest_data, i, FromObject(undefined));
+ SetImpl(dest_data + i, FromObject(undefined), destination_shared);
} else {
Object elem = source_store.get(static_cast<int>(i));
- SetImpl(dest_data, i, FromScalar(Smi::ToInt(elem)));
+ SetImpl(dest_data + i, FromScalar(Smi::ToInt(elem)),
+ destination_shared);
}
}
return true;
@@ -3569,17 +3732,17 @@ class TypedElementsAccessor
// Use the from_double conversion for this specific TypedArray type,
// rather than relying on C++ to convert elem.
double elem = source_store.get_scalar(static_cast<int>(i));
- SetImpl(dest_data, i, FromScalar(elem));
+ SetImpl(dest_data + i, FromScalar(elem), destination_shared);
}
return true;
} else if (kind == HOLEY_DOUBLE_ELEMENTS) {
FixedDoubleArray source_store = FixedDoubleArray::cast(source.elements());
for (size_t i = 0; i < length; i++) {
if (source_store.is_the_hole(static_cast<int>(i))) {
- SetImpl(dest_data, i, FromObject(undefined));
+ SetImpl(dest_data + i, FromObject(undefined), destination_shared);
} else {
double elem = source_store.get_scalar(static_cast<int>(i));
- SetImpl(dest_data, i, FromScalar(elem));
+ SetImpl(dest_data + i, FromScalar(elem), destination_shared);
}
}
return true;
@@ -3872,9 +4035,225 @@ Handle<Object> TypedElementsAccessor<BIGUINT64_ELEMENTS, uint64_t>::ToHandle(
return BigInt::FromUint64(isolate, value);
}
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_INT8_ELEMENTS, int8_t>::ToHandle(
+ Isolate* isolate, int8_t value) {
+ return handle(Smi::FromInt(value), isolate);
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_UINT8_ELEMENTS,
+ uint8_t>::ToHandle(Isolate* isolate,
+ uint8_t value) {
+ return handle(Smi::FromInt(value), isolate);
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_INT16_ELEMENTS,
+ int16_t>::ToHandle(Isolate* isolate,
+ int16_t value) {
+ return handle(Smi::FromInt(value), isolate);
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_UINT16_ELEMENTS,
+ uint16_t>::ToHandle(Isolate* isolate,
+ uint16_t value) {
+ return handle(Smi::FromInt(value), isolate);
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_INT32_ELEMENTS,
+ int32_t>::ToHandle(Isolate* isolate,
+ int32_t value) {
+ return isolate->factory()->NewNumberFromInt(value);
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_UINT32_ELEMENTS,
+ uint32_t>::ToHandle(Isolate* isolate,
+ uint32_t value) {
+ return isolate->factory()->NewNumberFromUint(value);
+}
+
+// static
+template <>
+float TypedElementsAccessor<RAB_GSAB_FLOAT32_ELEMENTS, float>::FromScalar(
+ double value) {
+ return DoubleToFloat32(value);
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_FLOAT32_ELEMENTS,
+ float>::ToHandle(Isolate* isolate,
+ float value) {
+ return isolate->factory()->NewNumber(value);
+}
+
+// static
+template <>
+double TypedElementsAccessor<RAB_GSAB_FLOAT64_ELEMENTS, double>::FromScalar(
+ double value) {
+ return value;
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_FLOAT64_ELEMENTS,
+ double>::ToHandle(Isolate* isolate,
+ double value) {
+ return isolate->factory()->NewNumber(value);
+}
+
+// static
+template <>
+uint8_t TypedElementsAccessor<RAB_GSAB_UINT8_CLAMPED_ELEMENTS,
+ uint8_t>::FromScalar(int value) {
+ if (value < 0x00) return 0x00;
+ if (value > 0xFF) return 0xFF;
+ return static_cast<uint8_t>(value);
+}
+
+// static
+template <>
+uint8_t TypedElementsAccessor<RAB_GSAB_UINT8_CLAMPED_ELEMENTS,
+ uint8_t>::FromScalar(uint32_t value) {
+ // We need this special case for Uint32 -> Uint8Clamped, because the highest
+ // Uint32 values will be negative as an int, clamping to 0, rather than 255.
+ if (value > 0xFF) return 0xFF;
+ return static_cast<uint8_t>(value);
+}
+
+// static
+template <>
+uint8_t TypedElementsAccessor<RAB_GSAB_UINT8_CLAMPED_ELEMENTS,
+ uint8_t>::FromScalar(double value) {
+ // Handle NaNs and less than zero values which clamp to zero.
+ if (!(value > 0)) return 0;
+ if (value > 0xFF) return 0xFF;
+ return static_cast<uint8_t>(lrint(value));
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_UINT8_CLAMPED_ELEMENTS,
+ uint8_t>::ToHandle(Isolate* isolate,
+ uint8_t value) {
+ return handle(Smi::FromInt(value), isolate);
+}
+
+// static
+template <>
+int64_t TypedElementsAccessor<RAB_GSAB_BIGINT64_ELEMENTS, int64_t>::FromScalar(
+ int value) {
+ UNREACHABLE();
+}
+
+// static
+template <>
+int64_t TypedElementsAccessor<RAB_GSAB_BIGINT64_ELEMENTS, int64_t>::FromScalar(
+ uint32_t value) {
+ UNREACHABLE();
+}
+
+// static
+template <>
+int64_t TypedElementsAccessor<RAB_GSAB_BIGINT64_ELEMENTS, int64_t>::FromScalar(
+ double value) {
+ UNREACHABLE();
+}
+
+// static
+template <>
+int64_t TypedElementsAccessor<RAB_GSAB_BIGINT64_ELEMENTS, int64_t>::FromScalar(
+ int64_t value) {
+ return value;
+}
+
+// static
+template <>
+int64_t TypedElementsAccessor<RAB_GSAB_BIGINT64_ELEMENTS, int64_t>::FromScalar(
+ uint64_t value) {
+ return static_cast<int64_t>(value);
+}
+
+// static
+template <>
+int64_t TypedElementsAccessor<RAB_GSAB_BIGINT64_ELEMENTS, int64_t>::FromObject(
+ Object value, bool* lossless) {
+ return BigInt::cast(value).AsInt64(lossless);
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_BIGINT64_ELEMENTS,
+ int64_t>::ToHandle(Isolate* isolate,
+ int64_t value) {
+ return BigInt::FromInt64(isolate, value);
+}
+
+// static
+template <>
+uint64_t TypedElementsAccessor<RAB_GSAB_BIGUINT64_ELEMENTS,
+ uint64_t>::FromScalar(int value) {
+ UNREACHABLE();
+}
+
+// static
+template <>
+uint64_t TypedElementsAccessor<RAB_GSAB_BIGUINT64_ELEMENTS,
+ uint64_t>::FromScalar(uint32_t value) {
+ UNREACHABLE();
+}
+
+// static
+template <>
+uint64_t TypedElementsAccessor<RAB_GSAB_BIGUINT64_ELEMENTS,
+ uint64_t>::FromScalar(double value) {
+ UNREACHABLE();
+}
+
+// static
+template <>
+uint64_t TypedElementsAccessor<RAB_GSAB_BIGUINT64_ELEMENTS,
+ uint64_t>::FromScalar(int64_t value) {
+ return static_cast<uint64_t>(value);
+}
+
+// static
+template <>
+uint64_t TypedElementsAccessor<RAB_GSAB_BIGUINT64_ELEMENTS,
+ uint64_t>::FromScalar(uint64_t value) {
+ return value;
+}
+
+// static
+template <>
+uint64_t TypedElementsAccessor<RAB_GSAB_BIGUINT64_ELEMENTS,
+ uint64_t>::FromObject(Object value,
+ bool* lossless) {
+ return BigInt::cast(value).AsUint64(lossless);
+}
+
+// static
+template <>
+Handle<Object> TypedElementsAccessor<RAB_GSAB_BIGUINT64_ELEMENTS,
+ uint64_t>::ToHandle(Isolate* isolate,
+ uint64_t value) {
+ return BigInt::FromUint64(isolate, value);
+}
+
#define FIXED_ELEMENTS_ACCESSOR(Type, type, TYPE, ctype) \
using Type##ElementsAccessor = TypedElementsAccessor<TYPE##_ELEMENTS, ctype>;
TYPED_ARRAYS(FIXED_ELEMENTS_ACCESSOR)
+RAB_GSAB_TYPED_ARRAYS(FIXED_ELEMENTS_ACCESSOR)
#undef FIXED_ELEMENTS_ACCESSOR
template <typename Subclass, typename ArgumentsAccessor, typename KindTraits>
@@ -3894,7 +4273,7 @@ class SloppyArgumentsElementsAccessor
if (entry.as_uint32() < length) {
// Read context mapped entry.
DisallowGarbageCollection no_gc;
- Object probe = elements->mapped_entries(entry.as_uint32());
+ Object probe = elements->mapped_entries(entry.as_uint32(), kRelaxedLoad);
DCHECK(!probe.IsTheHole(isolate));
Context context = elements->context();
int context_entry = Smi::ToInt(probe);
@@ -3908,13 +4287,13 @@ class SloppyArgumentsElementsAccessor
}
}
- static void TransitionElementsKindImpl(Handle<JSObject> object,
- Handle<Map> map) {
+ static Maybe<bool> TransitionElementsKindImpl(Handle<JSObject> object,
+ Handle<Map> map) {
UNREACHABLE();
}
- static void GrowCapacityAndConvertImpl(Handle<JSObject> object,
- uint32_t capacity) {
+ static Maybe<bool> GrowCapacityAndConvertImpl(Handle<JSObject> object,
+ uint32_t capacity) {
UNREACHABLE();
}
@@ -3930,7 +4309,7 @@ class SloppyArgumentsElementsAccessor
if (entry.as_uint32() < length) {
// Store context mapped entry.
DisallowGarbageCollection no_gc;
- Object probe = elements.mapped_entries(entry.as_uint32());
+ Object probe = elements.mapped_entries(entry.as_uint32(), kRelaxedLoad);
DCHECK(!probe.IsTheHole());
Context context = Context::cast(elements.context());
int context_entry = Smi::ToInt(probe);
@@ -3953,9 +4332,9 @@ class SloppyArgumentsElementsAccessor
}
}
- static void SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
- uint32_t length,
- Handle<FixedArrayBase> parameter_map) {
+ static Maybe<bool> SetLengthImpl(Isolate* isolate, Handle<JSArray> array,
+ uint32_t length,
+ Handle<FixedArrayBase> parameter_map) {
// Sloppy arguments objects are not arrays.
UNREACHABLE();
}
@@ -4063,7 +4442,7 @@ class SloppyArgumentsElementsAccessor
size_t index) {
uint32_t length = elements.length();
if (index >= length) return false;
- return !elements.mapped_entries(static_cast<uint32_t>(index))
+ return !elements.mapped_entries(static_cast<uint32_t>(index), kRelaxedLoad)
.IsTheHole(isolate);
}
@@ -4118,7 +4497,8 @@ class SloppyArgumentsElementsAccessor
uint32_t length = elements->length();
for (uint32_t i = 0; i < length; ++i) {
- if (elements->mapped_entries(i).IsTheHole(isolate)) continue;
+ if (elements->mapped_entries(i, kRelaxedLoad).IsTheHole(isolate))
+ continue;
if (convert == GetKeysConversion::kConvertToString) {
Handle<String> index_string = isolate->factory()->Uint32ToString(i);
list->set(insertion_index, *index_string);
@@ -4251,9 +4631,10 @@ class SlowSloppyArgumentsElementsAccessor
NumberDictionary::DeleteEntry(isolate, dict, entry.adjust_down(length));
elements->set_arguments(*dict);
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
Isolate* isolate = object->GetIsolate();
Handle<SloppyArgumentsElements> elements(
SloppyArgumentsElements::cast(object->elements()), isolate);
@@ -4270,6 +4651,7 @@ class SlowSloppyArgumentsElementsAccessor
if (*dictionary != *new_dictionary) {
elements->set_arguments(*new_dictionary);
}
+ return Just(true);
}
static void ReconfigureImpl(Handle<JSObject> object,
@@ -4281,7 +4663,7 @@ class SlowSloppyArgumentsElementsAccessor
Handle<SloppyArgumentsElements>::cast(store);
uint32_t length = elements->length();
if (entry.as_uint32() < length) {
- Object probe = elements->mapped_entries(entry.as_uint32());
+ Object probe = elements->mapped_entries(entry.as_uint32(), kRelaxedLoad);
DCHECK(!probe.IsTheHole(isolate));
Context context = elements->context();
int context_entry = Smi::ToInt(probe);
@@ -4365,9 +4747,10 @@ class FastSloppyArgumentsElementsAccessor
SlowSloppyArgumentsElementsAccessor::SloppyDeleteImpl(obj, elements, entry);
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
DCHECK_EQ(NONE, attributes);
Isolate* isolate = object->GetIsolate();
Handle<SloppyArgumentsElements> elements(
@@ -4375,7 +4758,8 @@ class FastSloppyArgumentsElementsAccessor
Handle<FixedArray> old_arguments(elements->arguments(), isolate);
if (old_arguments->IsNumberDictionary() ||
static_cast<uint32_t>(old_arguments->length()) < new_capacity) {
- GrowCapacityAndConvertImpl(object, new_capacity);
+ MAYBE_RETURN(GrowCapacityAndConvertImpl(object, new_capacity),
+ Nothing<bool>());
}
FixedArray arguments = elements->arguments();
// For fast holey objects, the entry equals the index. The code above made
@@ -4385,6 +4769,7 @@ class FastSloppyArgumentsElementsAccessor
// kMaxUInt32.
FastHoleyObjectElementsAccessor::SetImpl(arguments, InternalIndex(index),
*value);
+ return Just(true);
}
static void ReconfigureImpl(Handle<JSObject> object,
@@ -4414,8 +4799,8 @@ class FastSloppyArgumentsElementsAccessor
}
}
- static void GrowCapacityAndConvertImpl(Handle<JSObject> object,
- uint32_t capacity) {
+ static Maybe<bool> GrowCapacityAndConvertImpl(Handle<JSObject> object,
+ uint32_t capacity) {
Isolate* isolate = object->GetIsolate();
Handle<SloppyArgumentsElements> elements(
SloppyArgumentsElements::cast(object->elements()), isolate);
@@ -4426,13 +4811,17 @@ class FastSloppyArgumentsElementsAccessor
// elements.
DCHECK(from_kind == SLOW_SLOPPY_ARGUMENTS_ELEMENTS ||
static_cast<uint32_t>(old_arguments->length()) < capacity);
- Handle<FixedArrayBase> arguments =
- ConvertElementsWithCapacity(object, old_arguments, from_kind, capacity);
+ Handle<FixedArrayBase> arguments;
+ ASSIGN_RETURN_ON_EXCEPTION_VALUE(
+ isolate, arguments,
+ ConvertElementsWithCapacity(object, old_arguments, from_kind, capacity),
+ Nothing<bool>());
Handle<Map> new_map = JSObject::GetElementsTransitionMap(
object, FAST_SLOPPY_ARGUMENTS_ELEMENTS);
JSObject::MigrateToMap(isolate, object, new_map);
elements->set_arguments(FixedArray::cast(*arguments));
JSObject::ValidateElements(*object);
+ return Just(true);
}
};
@@ -4504,9 +4893,10 @@ class StringWrapperElementsAccessor
value);
}
- static void AddImpl(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) {
+ static Maybe<bool> AddImpl(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) {
DCHECK(index >= static_cast<uint32_t>(GetString(*object).length()));
// Explicitly grow fast backing stores if needed. Dictionaries know how to
// extend their capacity themselves.
@@ -4514,10 +4904,12 @@ class StringWrapperElementsAccessor
(object->GetElementsKind() == SLOW_STRING_WRAPPER_ELEMENTS ||
BackingStoreAccessor::GetCapacityImpl(*object, object->elements()) !=
new_capacity)) {
- GrowCapacityAndConvertImpl(object, new_capacity);
+ MAYBE_RETURN(GrowCapacityAndConvertImpl(object, new_capacity),
+ Nothing<bool>());
}
BackingStoreAccessor::AddImpl(object, index, value, attributes,
new_capacity);
+ return Just(true);
}
static void ReconfigureImpl(Handle<JSObject> object,
@@ -4562,8 +4954,8 @@ class StringWrapperElementsAccessor
backing_store, keys);
}
- static void GrowCapacityAndConvertImpl(Handle<JSObject> object,
- uint32_t capacity) {
+ static Maybe<bool> GrowCapacityAndConvertImpl(Handle<JSObject> object,
+ uint32_t capacity) {
Handle<FixedArrayBase> old_elements(object->elements(),
object->GetIsolate());
ElementsKind from_kind = object->GetElementsKind();
@@ -4578,9 +4970,9 @@ class StringWrapperElementsAccessor
// elements.
DCHECK(from_kind == SLOW_STRING_WRAPPER_ELEMENTS ||
static_cast<uint32_t>(old_elements->length()) < capacity);
- Subclass::BasicGrowCapacityAndConvertImpl(object, old_elements, from_kind,
- FAST_STRING_WRAPPER_ELEMENTS,
- capacity);
+ return Subclass::BasicGrowCapacityAndConvertImpl(
+ object, old_elements, from_kind, FAST_STRING_WRAPPER_ELEMENTS,
+ capacity);
}
static void CopyElementsImpl(Isolate* isolate, FixedArrayBase from,
@@ -4665,7 +5057,7 @@ MaybeHandle<Object> ArrayConstructInitializeElements(
} else {
// Take the argument as the length.
JSArray::Initialize(array, 0);
- JSArray::SetLength(array, length);
+ MAYBE_RETURN_NULL(JSArray::SetLength(array, length));
}
return array;
}
diff --git a/deps/v8/src/objects/elements.h b/deps/v8/src/objects/elements.h
index 4a34e866f2..23dbe1d34f 100644
--- a/deps/v8/src/objects/elements.h
+++ b/deps/v8/src/objects/elements.h
@@ -66,7 +66,8 @@ class ElementsAccessor {
// changing array sizes as defined in EcmaScript 5.1 15.4.5.2, i.e. array that
// have non-deletable elements can only be shrunk to the size of highest
// element that is non-deletable.
- virtual void SetLength(Handle<JSArray> holder, uint32_t new_length) = 0;
+ V8_WARN_UNUSED_RESULT virtual Maybe<bool> SetLength(Handle<JSArray> holder,
+ uint32_t new_length) = 0;
// Copy all indices that have elements from |object| into the given
// KeyAccumulator. For Dictionary-based element-kinds we filter out elements
@@ -96,13 +97,14 @@ class ElementsAccessor {
Handle<JSObject> receiver, KeyAccumulator* accumulator,
AddKeyConversion convert) = 0;
- virtual void TransitionElementsKind(Handle<JSObject> object,
- Handle<Map> map) = 0;
- virtual void GrowCapacityAndConvert(Handle<JSObject> object,
- uint32_t capacity) = 0;
+ V8_WARN_UNUSED_RESULT virtual Maybe<bool> TransitionElementsKind(
+ Handle<JSObject> object, Handle<Map> map) = 0;
+ V8_WARN_UNUSED_RESULT virtual Maybe<bool> GrowCapacityAndConvert(
+ Handle<JSObject> object, uint32_t capacity) = 0;
// Unlike GrowCapacityAndConvert do not attempt to convert the backing store
// and simply return false in this case.
- virtual bool GrowCapacity(Handle<JSObject> object, uint32_t index) = 0;
+ V8_WARN_UNUSED_RESULT virtual Maybe<bool> GrowCapacity(
+ Handle<JSObject> object, uint32_t index) = 0;
static void InitializeOncePerProcess();
static void TearDown();
@@ -110,29 +112,36 @@ class ElementsAccessor {
virtual void Set(Handle<JSObject> holder, InternalIndex entry,
Object value) = 0;
- virtual void Add(Handle<JSObject> object, uint32_t index,
- Handle<Object> value, PropertyAttributes attributes,
- uint32_t new_capacity) = 0;
+ V8_WARN_UNUSED_RESULT virtual Maybe<bool> Add(Handle<JSObject> object,
+ uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes,
+ uint32_t new_capacity) = 0;
static Handle<JSArray> Concat(Isolate* isolate, BuiltinArguments* args,
uint32_t concat_size, uint32_t result_length);
- virtual uint32_t Push(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t push_size) = 0;
+ V8_WARN_UNUSED_RESULT virtual Maybe<uint32_t> Push(Handle<JSArray> receiver,
+ BuiltinArguments* args,
+ uint32_t push_size) = 0;
- virtual uint32_t Unshift(Handle<JSArray> receiver, BuiltinArguments* args,
- uint32_t unshift_size) = 0;
+ V8_WARN_UNUSED_RESULT virtual Maybe<uint32_t> Unshift(
+ Handle<JSArray> receiver, BuiltinArguments* args,
+ uint32_t unshift_size) = 0;
- virtual Handle<Object> Pop(Handle<JSArray> receiver) = 0;
+ V8_WARN_UNUSED_RESULT virtual MaybeHandle<Object> Pop(
+ Handle<JSArray> receiver) = 0;
- virtual Handle<Object> Shift(Handle<JSArray> receiver) = 0;
+ V8_WARN_UNUSED_RESULT virtual MaybeHandle<Object> Shift(
+ Handle<JSArray> receiver) = 0;
virtual Handle<NumberDictionary> Normalize(Handle<JSObject> object) = 0;
virtual size_t GetCapacity(JSObject holder, FixedArrayBase backing_store) = 0;
- virtual Object Fill(Handle<JSObject> receiver, Handle<Object> obj_value,
- size_t start, size_t end) = 0;
+ V8_WARN_UNUSED_RESULT virtual MaybeHandle<Object> Fill(
+ Handle<JSObject> receiver, Handle<Object> obj_value, size_t start,
+ size_t end) = 0;
// Check an Object's own elements for an element (using SameValueZero
// semantics)
diff --git a/deps/v8/src/objects/embedder-data-slot-inl.h b/deps/v8/src/objects/embedder-data-slot-inl.h
index 3f8deb39f0..983a0b0ad4 100644
--- a/deps/v8/src/objects/embedder-data-slot-inl.h
+++ b/deps/v8/src/objects/embedder-data-slot-inl.h
@@ -81,7 +81,7 @@ void EmbedderDataSlot::store_tagged(JSObject object, int embedder_field_index,
#endif
}
-bool EmbedderDataSlot::ToAlignedPointer(PtrComprCageBase isolate_root,
+bool EmbedderDataSlot::ToAlignedPointer(Isolate* isolate,
void** out_pointer) const {
// We don't care about atomicity of access here because embedder slots
// are accessed this way only from the main thread via API during "mutator"
@@ -89,16 +89,9 @@ bool EmbedderDataSlot::ToAlignedPointer(PtrComprCageBase isolate_root,
// at the tagged part of the embedder slot but read-only access is ok).
Address raw_value;
#ifdef V8_HEAP_SANDBOX
-
- // TODO(syg): V8_HEAP_SANDBOX doesn't work with pointer cage
-#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
-#error "V8_HEAP_SANDBOX requires per-Isolate pointer compression cage"
-#endif
-
uint32_t index = base::Memory<uint32_t>(address() + kRawPayloadOffset);
- const Isolate* isolate = Isolate::FromRootAddress(isolate_root.address());
- raw_value = isolate->external_pointer_table().get(index) ^
- kEmbedderDataSlotPayloadTag;
+ raw_value = isolate->external_pointer_table().get(index) &
+ ~kEmbedderDataSlotPayloadTag;
#else
if (COMPRESS_POINTERS_BOOL) {
// TODO(ishell, v8:8875): When pointer compression is enabled 8-byte size
@@ -114,27 +107,20 @@ bool EmbedderDataSlot::ToAlignedPointer(PtrComprCageBase isolate_root,
return HAS_SMI_TAG(raw_value);
}
-bool EmbedderDataSlot::ToAlignedPointerSafe(PtrComprCageBase isolate_root,
+bool EmbedderDataSlot::ToAlignedPointerSafe(Isolate* isolate,
void** out_pointer) const {
#ifdef V8_HEAP_SANDBOX
-
- // TODO(syg): V8_HEAP_SANDBOX doesn't work with pointer cage
-#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
-#error "V8_HEAP_SANDBOX requires per-Isolate pointer compression cage"
-#endif
-
uint32_t index = base::Memory<uint32_t>(address() + kRawPayloadOffset);
Address raw_value;
- const Isolate* isolate = Isolate::FromRootAddress(isolate_root.address());
if (isolate->external_pointer_table().is_valid_index(index)) {
- raw_value = isolate->external_pointer_table().get(index) ^
- kEmbedderDataSlotPayloadTag;
+ raw_value = isolate->external_pointer_table().get(index) &
+ ~kEmbedderDataSlotPayloadTag;
*out_pointer = reinterpret_cast<void*>(raw_value);
return true;
}
return false;
#else
- return ToAlignedPointer(isolate_root, out_pointer);
+ return ToAlignedPointer(isolate, out_pointer);
#endif // V8_HEAP_SANDBOX
}
@@ -150,7 +136,7 @@ bool EmbedderDataSlot::store_aligned_pointer(Isolate* isolate, void* ptr) {
ObjectSlot(address() + kRawPayloadOffset).Relaxed_Load();
uint32_t index = static_cast<uint32_t>(index_as_object.ptr());
isolate->external_pointer_table().set(index,
- value ^ kEmbedderDataSlotPayloadTag);
+ value | kEmbedderDataSlotPayloadTag);
return true;
}
#endif
diff --git a/deps/v8/src/objects/embedder-data-slot.h b/deps/v8/src/objects/embedder-data-slot.h
index 65fe78403a..6213b7b333 100644
--- a/deps/v8/src/objects/embedder-data-slot.h
+++ b/deps/v8/src/objects/embedder-data-slot.h
@@ -75,8 +75,7 @@ class EmbedderDataSlot
// When V8 heap sandbox is enabled, calling this method when the raw part of
// the slot does not contain valid external pointer table index is undefined
// behaviour and most likely result in crashes.
- V8_INLINE bool ToAlignedPointer(PtrComprCageBase isolate_root,
- void** out_result) const;
+ V8_INLINE bool ToAlignedPointer(Isolate* isolate, void** out_result) const;
// Same as ToAlignedPointer() but with a workaround for V8 heap sandbox.
// When V8 heap sandbox is enabled, this method doesn't crash when the raw
@@ -87,7 +86,7 @@ class EmbedderDataSlot
//
// Call this function if you are not sure whether the slot contains valid
// external pointer or not.
- V8_INLINE bool ToAlignedPointerSafe(PtrComprCageBase isolate_root,
+ V8_INLINE bool ToAlignedPointerSafe(Isolate* isolate,
void** out_result) const;
// Returns true if the pointer was successfully stored or false it the pointer
diff --git a/deps/v8/src/objects/feedback-vector-inl.h b/deps/v8/src/objects/feedback-vector-inl.h
index 8853dabdbd..aea13c5fd6 100644
--- a/deps/v8/src/objects/feedback-vector-inl.h
+++ b/deps/v8/src/objects/feedback-vector-inl.h
@@ -182,14 +182,15 @@ bool FeedbackVector::IsOfLegacyType(MaybeObject value) {
#endif // DEBUG
MaybeObject FeedbackVector::Get(FeedbackSlot slot) const {
- MaybeObject value = raw_feedback_slots(GetIndex(slot));
+ MaybeObject value = raw_feedback_slots(GetIndex(slot), kRelaxedLoad);
DCHECK(!IsOfLegacyType(value));
return value;
}
MaybeObject FeedbackVector::Get(PtrComprCageBase cage_base,
FeedbackSlot slot) const {
- MaybeObject value = raw_feedback_slots(cage_base, GetIndex(slot));
+ MaybeObject value =
+ raw_feedback_slots(cage_base, GetIndex(slot), kRelaxedLoad);
DCHECK(!IsOfLegacyType(value));
return value;
}
@@ -335,6 +336,10 @@ Handle<Symbol> FeedbackVector::MegamorphicSentinel(Isolate* isolate) {
return isolate->factory()->megamorphic_symbol();
}
+Handle<Symbol> FeedbackVector::MegaDOMSentinel(Isolate* isolate) {
+ return isolate->factory()->mega_dom_symbol();
+}
+
Symbol FeedbackVector::RawUninitializedSentinel(Isolate* isolate) {
return ReadOnlyRoots(isolate).uninitialized_symbol();
}
@@ -377,6 +382,11 @@ MaybeObject FeedbackNexus::MegamorphicSentinel() const {
*FeedbackVector::MegamorphicSentinel(GetIsolate()));
}
+MaybeObject FeedbackNexus::MegaDOMSentinel() const {
+ return MaybeObject::FromObject(
+ *FeedbackVector::MegaDOMSentinel(GetIsolate()));
+}
+
MaybeObject FeedbackNexus::FromHandle(MaybeObjectHandle slot) const {
return slot.is_null() ? HeapObjectReference::ClearedValue(config()->isolate())
: *slot;
diff --git a/deps/v8/src/objects/feedback-vector.cc b/deps/v8/src/objects/feedback-vector.cc
index a77ea5d265..5f4cf592b0 100644
--- a/deps/v8/src/objects/feedback-vector.cc
+++ b/deps/v8/src/objects/feedback-vector.cc
@@ -54,6 +54,7 @@ static bool IsPropertyNameFeedback(MaybeObject feedback) {
Symbol symbol = Symbol::cast(heap_object);
ReadOnlyRoots roots = symbol.GetReadOnlyRoots();
return symbol != roots.uninitialized_symbol() &&
+ symbol != roots.mega_dom_symbol() &&
symbol != roots.megamorphic_symbol();
}
@@ -75,8 +76,8 @@ void FeedbackMetadata::SetKind(FeedbackSlot slot, FeedbackSlotKind kind) {
}
// static
-template <typename LocalIsolate>
-Handle<FeedbackMetadata> FeedbackMetadata::New(LocalIsolate* isolate,
+template <typename IsolateT>
+Handle<FeedbackMetadata> FeedbackMetadata::New(IsolateT* isolate,
const FeedbackVectorSpec* spec) {
auto* factory = isolate->factory();
@@ -253,8 +254,6 @@ Handle<FeedbackVector> FeedbackVector::New(
DCHECK_EQ(vector->optimization_marker(),
FLAG_log_function_events ? OptimizationMarker::kLogFirstExecution
: OptimizationMarker::kNone);
- // TODO(mythria): This might change if NCI code is installed on feedback
- // vector. Update this accordingly.
DCHECK_EQ(vector->optimization_tier(), OptimizationTier::kNone);
DCHECK_EQ(vector->invocation_count(), 0);
DCHECK_EQ(vector->profiler_ticks(), 0);
@@ -676,6 +675,13 @@ bool FeedbackNexus::ConfigureMegamorphic() {
return false;
}
+void FeedbackNexus::ConfigureMegaDOM(const MaybeObjectHandle& handler) {
+ DisallowGarbageCollection no_gc;
+ MaybeObject sentinel = MegaDOMSentinel();
+
+ SetFeedback(sentinel, SKIP_WRITE_BARRIER, *handler, UPDATE_WRITE_BARRIER);
+}
+
bool FeedbackNexus::ConfigureMegamorphic(IcCheckType property_type) {
DisallowGarbageCollection no_gc;
MaybeObject sentinel = MegamorphicSentinel();
@@ -737,6 +743,10 @@ InlineCacheState FeedbackNexus::ic_state() const {
if (feedback == MegamorphicSentinel()) {
return MEGAMORPHIC;
}
+ if (feedback == MegaDOMSentinel()) {
+ DCHECK(IsLoadICKind(kind()));
+ return MEGADOM;
+ }
if (feedback->IsWeakOrCleared()) {
// Don't check if the map is cleared.
return MONOMORPHIC;
@@ -999,6 +1009,15 @@ SpeculationMode FeedbackNexus::GetSpeculationMode() {
return SpeculationModeField::decode(value);
}
+CallFeedbackContent FeedbackNexus::GetCallFeedbackContent() {
+ DCHECK(IsCallICKind(kind()));
+
+ Object call_count = GetFeedbackExtra()->cast<Object>();
+ CHECK(call_count.IsSmi());
+ uint32_t value = static_cast<uint32_t>(Smi::ToInt(call_count));
+ return CallFeedbackContentField::decode(value);
+}
+
float FeedbackNexus::ComputeCallFrequency() {
DCHECK(IsCallICKind(kind()));
@@ -1407,52 +1426,6 @@ std::vector<Handle<String>> FeedbackNexus::GetTypesForSourcePositions(
return types_for_position;
}
-namespace {
-
-Handle<JSObject> ConvertToJSObject(Isolate* isolate,
- Handle<SimpleNumberDictionary> feedback) {
- Handle<JSObject> type_profile =
- isolate->factory()->NewJSObject(isolate->object_function());
-
- for (int index = SimpleNumberDictionary::kElementsStartIndex;
- index < feedback->length();
- index += SimpleNumberDictionary::kEntrySize) {
- int key_index = index + SimpleNumberDictionary::kEntryKeyIndex;
- Object key = feedback->get(key_index);
- if (key.IsSmi()) {
- int value_index = index + SimpleNumberDictionary::kEntryValueIndex;
-
- Handle<ArrayList> position_specific_types(
- ArrayList::cast(feedback->get(value_index)), isolate);
-
- int position = Smi::ToInt(key);
- JSObject::AddDataElement(
- type_profile, position,
- isolate->factory()->NewJSArrayWithElements(
- ArrayList::Elements(isolate, position_specific_types)),
- PropertyAttributes::NONE);
- }
- }
- return type_profile;
-}
-} // namespace
-
-JSObject FeedbackNexus::GetTypeProfile() const {
- DCHECK(IsTypeProfileKind(kind()));
- Isolate* isolate = GetIsolate();
-
- MaybeObject const feedback = GetFeedback();
-
- if (feedback == UninitializedSentinel()) {
- return *isolate->factory()->NewJSObject(isolate->object_function());
- }
-
- return *ConvertToJSObject(isolate,
- handle(SimpleNumberDictionary::cast(
- feedback->GetHeapObjectAssumeStrong()),
- isolate));
-}
-
void FeedbackNexus::ResetTypeProfile() {
DCHECK(IsTypeProfileKind(kind()));
SetFeedback(UninitializedSentinel());
diff --git a/deps/v8/src/objects/feedback-vector.h b/deps/v8/src/objects/feedback-vector.h
index cc5e867f72..07aad24430 100644
--- a/deps/v8/src/objects/feedback-vector.h
+++ b/deps/v8/src/objects/feedback-vector.h
@@ -130,8 +130,8 @@ inline bool IsCloneObjectKind(FeedbackSlotKind kind) {
inline TypeofMode GetTypeofModeFromSlotKind(FeedbackSlotKind kind) {
DCHECK(IsLoadGlobalICKind(kind));
return (kind == FeedbackSlotKind::kLoadGlobalInsideTypeof)
- ? INSIDE_TYPEOF
- : NOT_INSIDE_TYPEOF;
+ ? TypeofMode::kInside
+ : TypeofMode::kNotInside;
}
inline LanguageMode GetLanguageModeFromSlotKind(FeedbackSlotKind kind) {
@@ -311,7 +311,7 @@ class FeedbackVector
DECL_PRINTER(FeedbackVector)
- void FeedbackSlotPrint(std::ostream& os, FeedbackSlot slot); // NOLINT
+ void FeedbackSlotPrint(std::ostream& os, FeedbackSlot slot);
// Clears the vector slots. Return true if feedback has changed.
bool ClearSlots(Isolate* isolate);
@@ -322,6 +322,9 @@ class FeedbackVector
// The object that indicates a megamorphic state.
static inline Handle<Symbol> MegamorphicSentinel(Isolate* isolate);
+ // The object that indicates a MegaDOM state.
+ static inline Handle<Symbol> MegaDOMSentinel(Isolate* isolate);
+
// A raw version of the uninitialized sentinel that's safe to read during
// garbage collection (e.g., for patching the cache).
static inline Symbol RawUninitializedSentinel(Isolate* isolate);
@@ -389,7 +392,7 @@ class V8_EXPORT_PRIVATE FeedbackVectorSpec {
}
FeedbackSlot AddLoadGlobalICSlot(TypeofMode typeof_mode) {
- return AddSlot(typeof_mode == INSIDE_TYPEOF
+ return AddSlot(typeof_mode == TypeofMode::kInside
? FeedbackSlotKind::kLoadGlobalInsideTypeof
: FeedbackSlotKind::kLoadGlobalNotInsideTypeof);
}
@@ -532,9 +535,9 @@ class FeedbackMetadata : public HeapObject {
V8_EXPORT_PRIVATE FeedbackSlotKind GetKind(FeedbackSlot slot) const;
// If {spec} is null, then it is considered empty.
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_EXPORT_PRIVATE static Handle<FeedbackMetadata> New(
- LocalIsolate* isolate, const FeedbackVectorSpec* spec = nullptr);
+ IsolateT* isolate, const FeedbackVectorSpec* spec = nullptr);
DECL_PRINTER(FeedbackMetadata)
DECL_VERIFIER(FeedbackMetadata)
@@ -588,7 +591,6 @@ class FeedbackMetadata : public HeapObject {
// Verify that an empty hash field looks like a tagged object, but can't
// possibly be confused with a pointer.
-// NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((Name::kEmptyHashField & kHeapObjectTag) == kHeapObjectTag);
STATIC_ASSERT(Name::kEmptyHashField == 0x3);
// Verify that a set hash field will not look like a tagged object.
@@ -728,7 +730,7 @@ class V8_EXPORT_PRIVATE FeedbackNexus final {
bool IsMegamorphic() const { return ic_state() == MEGAMORPHIC; }
bool IsGeneric() const { return ic_state() == GENERIC; }
- void Print(std::ostream& os); // NOLINT
+ void Print(std::ostream& os);
// For map-based ICs (load, keyed-load, store, keyed-store).
Map GetFirstMap() const;
@@ -773,6 +775,8 @@ class V8_EXPORT_PRIVATE FeedbackNexus final {
void ConfigurePolymorphic(
Handle<Name> name, std::vector<MapAndHandler> const& maps_and_handlers);
+ void ConfigureMegaDOM(const MaybeObjectHandle& handler);
+
BinaryOperationHint GetBinaryOperationFeedback() const;
CompareOperationHint GetCompareOperationFeedback() const;
ForInHint GetForInFeedback() const;
@@ -791,13 +795,15 @@ class V8_EXPORT_PRIVATE FeedbackNexus final {
int GetCallCount();
void SetSpeculationMode(SpeculationMode mode);
SpeculationMode GetSpeculationMode();
+ CallFeedbackContent GetCallFeedbackContent();
// Compute the call frequency based on the call count and the invocation
// count (taken from the type feedback vector).
float ComputeCallFrequency();
using SpeculationModeField = base::BitField<SpeculationMode, 0, 1>;
- using CallCountField = base::BitField<uint32_t, 1, 31>;
+ using CallFeedbackContentField = base::BitField<CallFeedbackContent, 1, 1>;
+ using CallCountField = base::BitField<uint32_t, 2, 30>;
// For InstanceOf ICs.
MaybeHandle<JSObject> GetConstructorFeedback() const;
@@ -831,7 +837,6 @@ class V8_EXPORT_PRIVATE FeedbackNexus final {
// Add a type to the list of types for source position <position>.
void Collect(Handle<String> type, int position);
- JSObject GetTypeProfile() const;
std::vector<int> GetSourcePositions() const;
std::vector<Handle<String>> GetTypesForSourcePositions(uint32_t pos) const;
@@ -847,6 +852,7 @@ class V8_EXPORT_PRIVATE FeedbackNexus final {
inline MaybeObject UninitializedSentinel() const;
inline MaybeObject MegamorphicSentinel() const;
+ inline MaybeObject MegaDOMSentinel() const;
// Create an array. The caller must install it in a feedback vector slot.
Handle<WeakFixedArray> CreateArrayOfSize(int length);
diff --git a/deps/v8/src/objects/feedback-vector.tq b/deps/v8/src/objects/feedback-vector.tq
index a84533db67..768254f187 100644
--- a/deps/v8/src/objects/feedback-vector.tq
+++ b/deps/v8/src/objects/feedback-vector.tq
@@ -24,7 +24,7 @@ extern class FeedbackVector extends HeapObject {
shared_function_info: SharedFunctionInfo;
maybe_optimized_code: Weak<Code>;
closure_feedback_cell_array: ClosureFeedbackCellArray;
- @relaxedRead raw_feedback_slots[length]: MaybeObject;
+ @cppRelaxedLoad raw_feedback_slots[length]: MaybeObject;
}
extern class FeedbackMetadata extends HeapObject;
diff --git a/deps/v8/src/objects/fixed-array-inl.h b/deps/v8/src/objects/fixed-array-inl.h
index 520b6e7da6..43b77539e1 100644
--- a/deps/v8/src/objects/fixed-array-inl.h
+++ b/deps/v8/src/objects/fixed-array-inl.h
@@ -19,7 +19,6 @@
#include "src/objects/oddball.h"
#include "src/objects/slots.h"
#include "src/roots/roots-inl.h"
-#include "src/sanitizer/tsan.h"
// Has to be the last include (doesn't have include guards):
#include "src/objects/object-macros.h"
@@ -45,13 +44,11 @@ TQ_OBJECT_CONSTRUCTORS_IMPL(WeakArrayList)
NEVER_READ_ONLY_SPACE_IMPL(WeakArrayList)
-SYNCHRONIZED_SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset)
+RELEASE_ACQUIRE_SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset)
-SYNCHRONIZED_SMI_ACCESSORS(WeakFixedArray, length, kLengthOffset)
+RELEASE_ACQUIRE_SMI_ACCESSORS(WeakFixedArray, length, kLengthOffset)
-SYNCHRONIZED_SMI_ACCESSORS(WeakArrayList, capacity, kCapacityOffset)
-
-Object FixedArrayBase::unchecked_synchronized_length() const {
+Object FixedArrayBase::unchecked_length(AcquireLoadTag) const {
return ACQUIRE_READ_FIELD(*this, kLengthOffset);
}
@@ -88,7 +85,6 @@ bool FixedArray::is_the_hole(Isolate* isolate, int index) {
return get(isolate, index).IsTheHole(isolate);
}
-#if !defined(_WIN32) || defined(_WIN64)
void FixedArray::set(int index, Smi value) {
DCHECK_NE(map(), GetReadOnlyRoots().fixed_cow_array_map());
DCHECK_LT(static_cast<unsigned>(index), static_cast<unsigned>(length()));
@@ -96,7 +92,6 @@ void FixedArray::set(int index, Smi value) {
int offset = OffsetOfElementAt(index);
RELAXED_WRITE_FIELD(*this, offset, value);
}
-#endif
void FixedArray::set(int index, Object value) {
DCHECK_NE(GetReadOnlyRoots().fixed_cow_array_map(), map());
@@ -245,15 +240,11 @@ void FixedArray::CopyElements(Isolate* isolate, int dst_index, FixedArray src,
// Due to left- and right-trimming, concurrent visitors need to read the length
// with acquire semantics.
// TODO(ulan): Acquire should not be needed anymore.
-inline int FixedArray::AllocatedSize() {
- return SizeFor(synchronized_length());
-}
+inline int FixedArray::AllocatedSize() { return SizeFor(length(kAcquireLoad)); }
inline int WeakFixedArray::AllocatedSize() {
- return SizeFor(synchronized_length());
-}
-inline int WeakArrayList::AllocatedSize() {
- return SizeFor(synchronized_capacity());
+ return SizeFor(length(kAcquireLoad));
}
+inline int WeakArrayList::AllocatedSize() { return SizeFor(capacity()); }
// Perform a binary search in a fixed array.
template <SearchMode search_mode, typename T>
@@ -447,7 +438,7 @@ MaybeObject WeakFixedArray::Get(int index) const {
MaybeObject WeakFixedArray::Get(PtrComprCageBase cage_base, int index) const {
DCHECK_LT(static_cast<unsigned>(index), static_cast<unsigned>(length()));
- return objects(cage_base, index);
+ return objects(cage_base, index, kRelaxedLoad);
}
void WeakFixedArray::Set(int index, MaybeObject value, WriteBarrierMode mode) {
@@ -482,7 +473,7 @@ MaybeObject WeakArrayList::Get(int index) const {
MaybeObject WeakArrayList::Get(PtrComprCageBase cage_base, int index) const {
DCHECK_LT(static_cast<unsigned>(index), static_cast<unsigned>(capacity()));
- return objects(cage_base, index);
+ return objects(cage_base, index, kRelaxedLoad);
}
void WeakArrayList::Set(int index, MaybeObject value, WriteBarrierMode mode) {
diff --git a/deps/v8/src/objects/fixed-array.h b/deps/v8/src/objects/fixed-array.h
index cc9761421e..d6c5077aa0 100644
--- a/deps/v8/src/objects/fixed-array.h
+++ b/deps/v8/src/objects/fixed-array.h
@@ -71,10 +71,12 @@ enum FixedArraySubInstanceType {
class FixedArrayBase
: public TorqueGeneratedFixedArrayBase<FixedArrayBase, HeapObject> {
public:
- // Get and set the length using acquire loads and release stores.
- DECL_SYNCHRONIZED_INT_ACCESSORS(length)
+ // Forward declare the non-atomic (set_)length defined in torque.
+ using TorqueGeneratedFixedArrayBase::length;
+ using TorqueGeneratedFixedArrayBase::set_length;
+ DECL_RELEASE_ACQUIRE_INT_ACCESSORS(length)
- inline Object unchecked_synchronized_length() const;
+ inline Object unchecked_length(AcquireLoadTag) const;
static int GetMaxLengthForNewSpaceAllocation(ElementsKind kind);
@@ -132,18 +134,7 @@ class FixedArray
inline bool is_the_hole(Isolate* isolate, int index);
// Setter that doesn't need write barrier.
-#if defined(_WIN32) && !defined(_WIN64)
- inline void set(int index, Smi value) {
- DCHECK_NE(map(), GetReadOnlyRoots().fixed_cow_array_map());
- DCHECK_LT(static_cast<unsigned>(index), static_cast<unsigned>(length()));
- DCHECK(Object(value).IsSmi());
- int offset = OffsetOfElementAt(index);
- RELAXED_WRITE_FIELD(*this, offset, value);
- }
-#else
inline void set(int index, Smi value);
-#endif
-
// Setter with explicit barrier mode.
inline void set(int index, Object value, WriteBarrierMode mode);
@@ -294,8 +285,10 @@ class WeakFixedArray
int index, MaybeObject value,
WriteBarrierMode mode = WriteBarrierMode::UPDATE_WRITE_BARRIER);
- // Get and set the length using acquire loads and release stores.
- DECL_SYNCHRONIZED_INT_ACCESSORS(length)
+ // Forward declare the non-atomic (set_)length defined in torque.
+ using TorqueGeneratedWeakFixedArray::length;
+ using TorqueGeneratedWeakFixedArray::set_length;
+ DECL_RELEASE_ACQUIRE_INT_ACCESSORS(length)
// Gives access to raw memory which stores the array's data.
inline MaybeObjectSlot data_start();
@@ -387,9 +380,6 @@ class WeakArrayList
V8_EXPORT_PRIVATE bool IsFull();
- // Get and set the capacity using acquire loads and release stores.
- DECL_SYNCHRONIZED_INT_ACCESSORS(capacity)
-
int AllocatedSize();
class BodyDescriptor;
diff --git a/deps/v8/src/objects/fixed-array.tq b/deps/v8/src/objects/fixed-array.tq
index 6aed0c26b2..31198d70d4 100644
--- a/deps/v8/src/objects/fixed-array.tq
+++ b/deps/v8/src/objects/fixed-array.tq
@@ -26,7 +26,7 @@ extern class FixedDoubleArray extends FixedArrayBase {
@generateCppClass
extern class WeakFixedArray extends HeapObject {
const length: Smi;
- @relaxedRead objects[length]: MaybeObject;
+ @cppRelaxedLoad objects[length]: MaybeObject;
}
@generateCppClass
@@ -51,7 +51,7 @@ extern class TemplateList extends FixedArray {
extern class WeakArrayList extends HeapObject {
const capacity: Smi;
length: Smi;
- @relaxedRead objects[capacity]: MaybeObject;
+ @cppRelaxedLoad objects[capacity]: MaybeObject;
}
extern operator '.length_intptr' macro LoadAndUntagFixedArrayBaseLength(
diff --git a/deps/v8/src/objects/foreign-inl.h b/deps/v8/src/objects/foreign-inl.h
index 150857f49a..a278c844b9 100644
--- a/deps/v8/src/objects/foreign-inl.h
+++ b/deps/v8/src/objects/foreign-inl.h
@@ -29,7 +29,8 @@ bool Foreign::IsNormalized(Object value) {
}
DEF_GETTER(Foreign, foreign_address, Address) {
- return ReadExternalPointerField(kForeignAddressOffset, cage_base,
+ Isolate* isolate = GetIsolateForHeapSandbox(*this);
+ return ReadExternalPointerField(kForeignAddressOffset, isolate,
kForeignForeignAddressTag);
}
diff --git a/deps/v8/src/objects/free-space-inl.h b/deps/v8/src/objects/free-space-inl.h
index e8ce1d6350..443ff25caa 100644
--- a/deps/v8/src/objects/free-space-inl.h
+++ b/deps/v8/src/objects/free-space-inl.h
@@ -23,7 +23,7 @@ TQ_OBJECT_CONSTRUCTORS_IMPL(FreeSpace)
RELAXED_SMI_ACCESSORS(FreeSpace, size, kSizeOffset)
-int FreeSpace::Size() { return size(); }
+int FreeSpace::Size() { return size(kRelaxedLoad); }
FreeSpace FreeSpace::next() {
DCHECK(IsValid());
@@ -50,10 +50,10 @@ bool FreeSpace::IsValid() {
Heap* heap = GetHeapFromWritableObject(*this);
Object free_space_map =
Isolate::FromHeap(heap)->root(RootIndex::kFreeSpaceMap);
- CHECK_IMPLIES(!map_slot().contains_value(free_space_map.ptr()),
+ CHECK_IMPLIES(!map_slot().contains_map_value(free_space_map.ptr()),
!heap->deserialization_complete() &&
- map_slot().contains_value(kNullAddress));
- CHECK_LE(kNextOffset + kTaggedSize, relaxed_read_size());
+ map_slot().contains_map_value(kNullAddress));
+ CHECK_LE(kNextOffset + kTaggedSize, size(kRelaxedLoad));
return true;
}
diff --git a/deps/v8/src/objects/free-space.h b/deps/v8/src/objects/free-space.h
index 76d618cbfd..d2f569bb33 100644
--- a/deps/v8/src/objects/free-space.h
+++ b/deps/v8/src/objects/free-space.h
@@ -23,8 +23,7 @@ namespace internal {
class FreeSpace : public TorqueGeneratedFreeSpace<FreeSpace, HeapObject> {
public:
// [size]: size of the free space including the header.
- inline int relaxed_read_size() const;
- inline void relaxed_write_size(int value);
+ DECL_RELAXED_SMI_ACCESSORS(size)
inline int Size();
diff --git a/deps/v8/src/objects/function-kind.h b/deps/v8/src/objects/function-kind.h
index b863f9c72f..02b5b7636a 100644
--- a/deps/v8/src/objects/function-kind.h
+++ b/deps/v8/src/objects/function-kind.h
@@ -181,6 +181,14 @@ inline bool BindsSuper(FunctionKind kind) {
IsClassConstructor(kind);
}
+inline bool IsAwaitAsIdentifierDisallowed(FunctionKind kind) {
+ // 'await' is always disallowed as an identifier in module contexts. Callers
+ // should short-circuit the module case instead of calling this.
+ DCHECK(!IsModule(kind));
+ return IsAsyncFunction(kind) ||
+ kind == FunctionKind::kClassStaticInitializerFunction;
+}
+
inline const char* FunctionKind2String(FunctionKind kind) {
switch (kind) {
case FunctionKind::kNormalFunction:
diff --git a/deps/v8/src/objects/hash-table-inl.h b/deps/v8/src/objects/hash-table-inl.h
index 27645058b3..19382cc7ec 100644
--- a/deps/v8/src/objects/hash-table-inl.h
+++ b/deps/v8/src/objects/hash-table-inl.h
@@ -130,9 +130,8 @@ Handle<Map> EphemeronHashTable::GetMap(ReadOnlyRoots roots) {
}
template <typename Derived, typename Shape>
-template <typename LocalIsolate>
-InternalIndex HashTable<Derived, Shape>::FindEntry(LocalIsolate* isolate,
- Key key) {
+template <typename IsolateT>
+InternalIndex HashTable<Derived, Shape>::FindEntry(IsolateT* isolate, Key key) {
ReadOnlyRoots roots(isolate);
return FindEntry(isolate, roots, key, Shape::Hash(roots, key));
}
diff --git a/deps/v8/src/objects/hash-table.h b/deps/v8/src/objects/hash-table.h
index 12ac020fb7..c17a15c95f 100644
--- a/deps/v8/src/objects/hash-table.h
+++ b/deps/v8/src/objects/hash-table.h
@@ -125,9 +125,9 @@ class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE) HashTable
using Key = typename Shape::Key;
// Returns a new HashTable object.
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_WARN_UNUSED_RESULT static Handle<Derived> New(
- LocalIsolate* isolate, int at_least_space_for,
+ IsolateT* isolate, int at_least_space_for,
AllocationType allocation = AllocationType::kYoung,
MinimumCapacity capacity_option = USE_DEFAULT_MINIMUM_CAPACITY);
@@ -140,8 +140,8 @@ class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE) HashTable
// Find entry for key otherwise return kNotFound.
inline InternalIndex FindEntry(PtrComprCageBase cage_base,
ReadOnlyRoots roots, Key key, int32_t hash);
- template <typename LocalIsolate>
- inline InternalIndex FindEntry(LocalIsolate* isolate, Key key);
+ template <typename IsolateT>
+ inline InternalIndex FindEntry(IsolateT* isolate, Key key);
// Rehashes the table in-place.
void Rehash(PtrComprCageBase cage_base);
@@ -194,9 +194,9 @@ class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE) HashTable
}
// Ensure enough space for n additional elements.
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_WARN_UNUSED_RESULT static Handle<Derived> EnsureCapacity(
- LocalIsolate* isolate, Handle<Derived> table, int n = 1,
+ IsolateT* isolate, Handle<Derived> table, int n = 1,
AllocationType allocation = AllocationType::kYoung);
// Returns true if this table has sufficient capacity for adding n elements.
@@ -212,9 +212,9 @@ class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE) HashTable
protected:
friend class ObjectHashTable;
- template <typename LocalIsolate>
+ template <typename IsolateT>
V8_WARN_UNUSED_RESULT static Handle<Derived> NewInternal(
- LocalIsolate* isolate, int capacity, AllocationType allocation);
+ IsolateT* isolate, int capacity, AllocationType allocation);
// Find the entry at which to insert element with the given key that
// has the given hash value.
diff --git a/deps/v8/src/objects/heap-object.h b/deps/v8/src/objects/heap-object.h
index e0aea97537..128e17fab1 100644
--- a/deps/v8/src/objects/heap-object.h
+++ b/deps/v8/src/objects/heap-object.h
@@ -43,8 +43,8 @@ class HeapObject : public Object {
inline void set_map_no_write_barrier(Map value);
// Access the map using acquire load and release store.
- DECL_GETTER(synchronized_map, Map)
- inline void synchronized_set_map(Map value);
+ DECL_ACQUIRE_GETTER(map, Map)
+ inline void set_map(Map value, ReleaseStoreTag);
// Compare-and-swaps map word using release store, returns true if the map
// word was actually swapped.
@@ -58,12 +58,12 @@ class HeapObject : public Object {
// During garbage collection, the map word of a heap object does not
// necessarily contain a map pointer.
- DECL_GETTER(map_word, MapWord)
- inline void set_map_word(MapWord map_word);
+ DECL_RELAXED_GETTER(map_word, MapWord)
+ inline void set_map_word(MapWord map_word, RelaxedStoreTag);
// Access the map word using acquire load and release store.
- DECL_GETTER(synchronized_map_word, MapWord)
- inline void synchronized_set_map_word(MapWord map_word);
+ DECL_ACQUIRE_GETTER(map_word, MapWord)
+ inline void set_map_word(MapWord map_word, ReleaseStoreTag);
// This method exists to help remove GetIsolate/GetHeap from HeapObject, in a
// way that doesn't require passing Isolate/Heap down huge call chains or to
@@ -163,9 +163,9 @@ class HeapObject : public Object {
const DisallowGarbageCollection& promise);
// Dispatched behavior.
- void HeapObjectShortPrint(std::ostream& os); // NOLINT
+ void HeapObjectShortPrint(std::ostream& os);
#ifdef OBJECT_PRINT
- void PrintHeader(std::ostream& os, const char* id); // NOLINT
+ void PrintHeader(std::ostream& os, const char* id);
#endif
DECL_PRINTER(HeapObject)
EXPORT_DECL_VERIFIER(HeapObject)
diff --git a/deps/v8/src/objects/instance-type-inl.h b/deps/v8/src/objects/instance-type-inl.h
index 8edb73d666..32ee7a24f5 100644
--- a/deps/v8/src/objects/instance-type-inl.h
+++ b/deps/v8/src/objects/instance-type-inl.h
@@ -31,14 +31,14 @@ struct InstanceRangeChecker {
template <InstanceType upper_limit>
struct InstanceRangeChecker<FIRST_TYPE, upper_limit> {
static constexpr bool Check(InstanceType value) {
- CONSTEXPR_DCHECK(FIRST_TYPE <= value);
+ DCHECK_LE(FIRST_TYPE, value);
return value <= upper_limit;
}
};
template <InstanceType lower_limit>
struct InstanceRangeChecker<lower_limit, LAST_TYPE> {
static constexpr bool Check(InstanceType value) {
- CONSTEXPR_DCHECK(LAST_TYPE >= value);
+ DCHECK_GE(LAST_TYPE, value);
return value >= lower_limit;
}
};
diff --git a/deps/v8/src/objects/instance-type.h b/deps/v8/src/objects/instance-type.h
index 9c8c8d5d63..7a11f9cf68 100644
--- a/deps/v8/src/objects/instance-type.h
+++ b/deps/v8/src/objects/instance-type.h
@@ -33,16 +33,11 @@ enum StringRepresentationTag {
};
const uint32_t kIsIndirectStringMask = 1 << 0;
const uint32_t kIsIndirectStringTag = 1 << 0;
-// NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((kSeqStringTag & kIsIndirectStringMask) == 0);
-// NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((kExternalStringTag & kIsIndirectStringMask) == 0);
-// NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((kConsStringTag & kIsIndirectStringMask) == kIsIndirectStringTag);
-// NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((kSlicedStringTag & kIsIndirectStringMask) ==
kIsIndirectStringTag);
-// NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((kThinStringTag & kIsIndirectStringMask) == kIsIndirectStringTag);
// For strings, bit 3 indicates whether the string consists of two-byte
@@ -152,7 +147,6 @@ enum InstanceType : uint16_t {
constexpr InstanceType LAST_STRING_TYPE =
static_cast<InstanceType>(FIRST_NONSTRING_TYPE - 1);
-// NOLINTNEXTLINE(runtime/references) (false positive)
STATIC_ASSERT((FIRST_NONSTRING_TYPE & kIsNotStringMask) != kStringTag);
STATIC_ASSERT(JS_OBJECT_TYPE == Internals::kJSObjectType);
STATIC_ASSERT(JS_API_OBJECT_TYPE == Internals::kJSApiObjectType);
@@ -258,6 +252,7 @@ TYPED_ARRAYS(TYPED_ARRAY_IS_TYPE_FUNCTION_DECL)
V(_, FunctionTemplateInfoMap, function_template_info_map, \
FunctionTemplateInfo) \
V(_, HeapNumberMap, heap_number_map, HeapNumber) \
+ V(_, MegaDomHandlerMap, mega_dom_handler_map, MegaDomHandler) \
V(_, MetaMap, meta_map, Map) \
V(_, PreparseDataMap, preparse_data_map, PreparseData) \
V(_, PrototypeInfoMap, prototype_info_map, PrototypeInfo) \
diff --git a/deps/v8/src/objects/internal-index.h b/deps/v8/src/objects/internal-index.h
index a241f3c686..dec83cefe2 100644
--- a/deps/v8/src/objects/internal-index.h
+++ b/deps/v8/src/objects/internal-index.h
@@ -40,8 +40,7 @@ class InternalIndex {
return static_cast<uint32_t>(entry_);
}
constexpr int as_int() const {
- CONSTEXPR_DCHECK(entry_ <=
- static_cast<size_t>(std::numeric_limits<int>::max()));
+ DCHECK_GE(std::numeric_limits<int>::max(), entry_);
return static_cast<int>(entry_);
}
diff --git a/deps/v8/src/objects/intl-objects.cc b/deps/v8/src/objects/intl-objects.cc
index d9fca11e73..80a33db3b2 100644
--- a/deps/v8/src/objects/intl-objects.cc
+++ b/deps/v8/src/objects/intl-objects.cc
@@ -90,7 +90,7 @@ inline constexpr uint16_t ToLatin1Lower(uint16_t ch) {
// Does not work for U+00DF (sharp-s), U+00B5 (micron), U+00FF.
inline constexpr uint16_t ToLatin1Upper(uint16_t ch) {
- CONSTEXPR_DCHECK(ch != 0xDF && ch != 0xB5 && ch != 0xFF);
+ DCHECK(ch != 0xDF && ch != 0xB5 && ch != 0xFF);
return ch &
~((IsAsciiLower(ch) || (((ch & 0xE0) == 0xE0) && ch != 0xF7)) << 5);
}
@@ -479,7 +479,12 @@ Handle<JSObject> InnerAddElement(Isolate* isolate, Handle<JSArray> array,
field_type_string, NONE);
JSObject::AddProperty(isolate, element, factory->value_string(), value, NONE);
- JSObject::AddDataElement(array, index, element, NONE);
+ // TODO(victorgomes): Temporarily forcing a fatal error here in case of
+ // overflow, until Intl::AddElement can handle exceptions.
+ if (JSObject::AddDataElement(array, index, element, NONE).IsNothing()) {
+ FATAL("Fatal JavaScript invalid array size when adding element");
+ UNREACHABLE();
+ }
return element;
}
@@ -1486,7 +1491,6 @@ icu::LocaleMatcher BuildLocaleMatcher(
builder.addSupportedLocale(l);
}
}
-
return builder.build(*status);
}
@@ -1533,23 +1537,12 @@ std::string BestFitMatcher(Isolate* isolate,
const std::set<std::string>& available_locales,
const std::vector<std::string>& requested_locales) {
UErrorCode status = U_ZERO_ERROR;
- icu::LocaleMatcher matcher =
- BuildLocaleMatcher(isolate, available_locales, &status);
- DCHECK(U_SUCCESS(status));
-
Iterator iter(requested_locales.cbegin(), requested_locales.cend());
- std::string bestfit =
- matcher.getBestMatch(iter, status)->toLanguageTag<std::string>(status);
- if (U_FAILURE(status)) {
- return DefaultLocale(isolate);
- }
- // We need to return the extensions with it.
- for (auto it = requested_locales.begin(); it != requested_locales.end();
- ++it) {
- if (it->find(bestfit) == 0) {
- return *it;
- }
- }
+ std::string bestfit = BuildLocaleMatcher(isolate, available_locales, &status)
+ .getBestMatchResult(iter, status)
+ .makeResolvedLocale(status)
+ .toLanguageTag<std::string>(status);
+ DCHECK(U_SUCCESS(status));
return bestfit;
}
@@ -1561,32 +1554,29 @@ std::vector<std::string> BestFitSupportedLocales(
UErrorCode status = U_ZERO_ERROR;
icu::LocaleMatcher matcher =
BuildLocaleMatcher(isolate, available_locales, &status);
- DCHECK(U_SUCCESS(status));
-
- std::string default_locale = DefaultLocale(isolate);
std::vector<std::string> result;
- for (auto it = requested_locales.cbegin(); it != requested_locales.cend();
- it++) {
- if (*it == default_locale) {
- result.push_back(*it);
- } else {
+ if (U_SUCCESS(status)) {
+ for (auto it = requested_locales.cbegin(); it != requested_locales.cend();
+ it++) {
status = U_ZERO_ERROR;
icu::Locale desired = icu::Locale::forLanguageTag(it->c_str(), status);
- std::string bestfit = matcher.getBestMatch(desired, status)
- ->toLanguageTag<std::string>(status);
- // We need to return the extensions with it.
- if (U_SUCCESS(status) && it->find(bestfit) == 0) {
- result.push_back(*it);
- }
+ icu::LocaleMatcher::Result matched =
+ matcher.getBestMatchResult(desired, status);
+ if (U_FAILURE(status)) continue;
+ if (matched.getSupportedIndex() < 0) continue;
+ std::string bestfit =
+ matched.makeResolvedLocale(status).toLanguageTag<std::string>(status);
+ if (U_FAILURE(status)) continue;
+ result.push_back(bestfit);
}
}
return result;
}
// ecma262 #sec-createarrayfromlist
-Handle<JSArray> CreateArrayFromList(Isolate* isolate,
- std::vector<std::string> elements,
- PropertyAttributes attr) {
+MaybeHandle<JSArray> CreateArrayFromList(Isolate* isolate,
+ std::vector<std::string> elements,
+ PropertyAttributes attr) {
Factory* factory = isolate->factory();
// Let array be ! ArrayCreate(0).
Handle<JSArray> array = factory->NewJSArray(0);
@@ -1599,10 +1589,11 @@ Handle<JSArray> CreateArrayFromList(Isolate* isolate,
const std::string& part = elements[i];
Handle<String> value =
factory->NewStringFromUtf8(CStrVector(part.c_str())).ToHandleChecked();
- JSObject::AddDataElement(array, i, value, attr);
+ MAYBE_RETURN(JSObject::AddDataElement(array, i, value, attr),
+ MaybeHandle<JSArray>());
}
// 5. Return array.
- return array;
+ return MaybeHandle<JSArray>(array);
}
// ECMA 402 9.2.9 SupportedLocales(availableLocales, requestedLocales, options)
@@ -2042,23 +2033,15 @@ icu::TimeZone* ICUTimezoneCache::GetTimeZone() {
bool ICUTimezoneCache::GetOffsets(double time_ms, bool is_utc,
int32_t* raw_offset, int32_t* dst_offset) {
UErrorCode status = U_ZERO_ERROR;
- // TODO(jshin): ICU TimeZone class handles skipped time differently from
- // Ecma 262 (https://github.com/tc39/ecma262/pull/778) and icu::TimeZone
- // class does not expose the necessary API. Fixing
- // http://bugs.icu-project.org/trac/ticket/13268 would make it easy to
- // implement the proposed spec change. A proposed fix for ICU is
- // https://chromium-review.googlesource.com/851265 .
- // In the meantime, use an internal (still public) API of icu::BasicTimeZone.
- // Once it's accepted by the upstream, get rid of cast. Note that casting
- // TimeZone to BasicTimeZone is safe because we know that icu::TimeZone used
- // here is a BasicTimeZone.
if (is_utc) {
GetTimeZone()->getOffset(time_ms, false, *raw_offset, *dst_offset, status);
} else {
+ // Note that casting TimeZone to BasicTimeZone is safe because we know that
+ // icu::TimeZone used here is a BasicTimeZone.
static_cast<const icu::BasicTimeZone*>(GetTimeZone())
- ->getOffsetFromLocal(time_ms, icu::BasicTimeZone::kFormer,
- icu::BasicTimeZone::kFormer, *raw_offset,
- *dst_offset, status);
+ ->getOffsetFromLocal(time_ms, UCAL_TZ_LOCAL_FORMER,
+ UCAL_TZ_LOCAL_FORMER, *raw_offset, *dst_offset,
+ status);
}
return U_SUCCESS(status);
diff --git a/deps/v8/src/objects/intl-objects.h b/deps/v8/src/objects/intl-objects.h
index d4b4feed68..ec0eb93873 100644
--- a/deps/v8/src/objects/intl-objects.h
+++ b/deps/v8/src/objects/intl-objects.h
@@ -21,7 +21,7 @@
#include "unicode/locid.h"
#include "unicode/uversion.h"
-#define V8_MINIMUM_ICU_VERSION 68
+#define V8_MINIMUM_ICU_VERSION 69
namespace U_ICU_NAMESPACE {
class BreakIterator;
diff --git a/deps/v8/src/objects/js-array-buffer-inl.h b/deps/v8/src/objects/js-array-buffer-inl.h
index b4aa5e33b9..0fa5737ec7 100644
--- a/deps/v8/src/objects/js-array-buffer-inl.h
+++ b/deps/v8/src/objects/js-array-buffer-inl.h
@@ -43,7 +43,8 @@ void JSArrayBuffer::set_byte_length(size_t value) {
}
DEF_GETTER(JSArrayBuffer, backing_store, void*) {
- Address value = ReadExternalPointerField(kBackingStoreOffset, cage_base,
+ Isolate* isolate = GetIsolateForHeapSandbox(*this);
+ Address value = ReadExternalPointerField(kBackingStoreOffset, isolate,
kArrayBufferBackingStoreTag);
return reinterpret_cast<void*>(value);
}
@@ -167,6 +168,8 @@ BIT_FIELD_ACCESSORS(JSArrayBuffer, bit_field, is_asmjs_memory,
JSArrayBuffer::IsAsmJsMemoryBit)
BIT_FIELD_ACCESSORS(JSArrayBuffer, bit_field, is_shared,
JSArrayBuffer::IsSharedBit)
+BIT_FIELD_ACCESSORS(JSArrayBuffer, bit_field, is_resizable,
+ JSArrayBuffer::IsResizableBit)
size_t JSArrayBufferView::byte_offset() const {
return ReadField<size_t>(kByteOffsetOffset);
@@ -188,18 +191,57 @@ bool JSArrayBufferView::WasDetached() const {
return JSArrayBuffer::cast(buffer()).was_detached();
}
+BIT_FIELD_ACCESSORS(JSTypedArray, bit_field, is_length_tracking,
+ JSTypedArray::IsLengthTrackingBit)
+BIT_FIELD_ACCESSORS(JSTypedArray, bit_field, is_backed_by_rab,
+ JSTypedArray::IsBackedByRabBit)
+
+bool JSTypedArray::IsVariableLength() const {
+ return is_length_tracking() || is_backed_by_rab();
+}
+
+size_t JSTypedArray::GetLength() const {
+ if (WasDetached()) return 0;
+ if (is_length_tracking()) {
+ if (is_backed_by_rab()) {
+ return buffer().byte_length() / element_size();
+ }
+ return buffer().GetBackingStore()->byte_length(std::memory_order_seq_cst) /
+ element_size();
+ }
+ size_t array_length = LengthUnchecked();
+ if (is_backed_by_rab()) {
+ // The sum can't overflow, since we have managed to allocate the
+ // JSTypedArray.
+ if (byte_offset() + array_length * element_size() >
+ buffer().byte_length()) {
+ return 0;
+ }
+ }
+ return array_length;
+}
+
void JSTypedArray::AllocateExternalPointerEntries(Isolate* isolate) {
InitExternalPointerField(kExternalPointerOffset, isolate);
}
-size_t JSTypedArray::length() const { return ReadField<size_t>(kLengthOffset); }
+size_t JSTypedArray::length() const {
+ DCHECK(!is_length_tracking());
+ DCHECK(!is_backed_by_rab());
+ return ReadField<size_t>(kLengthOffset);
+}
+
+size_t JSTypedArray::LengthUnchecked() const {
+ return ReadField<size_t>(kLengthOffset);
+}
void JSTypedArray::set_length(size_t value) {
WriteField<size_t>(kLengthOffset, value);
}
DEF_GETTER(JSTypedArray, external_pointer, Address) {
- return ReadExternalPointerField(kExternalPointerOffset, cage_base,
+ Isolate* isolate = GetIsolateForHeapSandbox(*this);
+ return ReadExternalPointerField(kExternalPointerOffset, isolate,
kTypedArrayExternalPointerTag);
}
@@ -320,8 +362,9 @@ MaybeHandle<JSTypedArray> JSTypedArray::Validate(Isolate* isolate,
}
DEF_GETTER(JSDataView, data_pointer, void*) {
+ Isolate* isolate = GetIsolateForHeapSandbox(*this);
return reinterpret_cast<void*>(ReadExternalPointerField(
- kDataPointerOffset, cage_base, kDataViewDataPointerTag));
+ kDataPointerOffset, isolate, kDataViewDataPointerTag));
}
void JSDataView::AllocateExternalPointerEntries(Isolate* isolate) {
diff --git a/deps/v8/src/objects/js-array-buffer.cc b/deps/v8/src/objects/js-array-buffer.cc
index 074a8dc1bf..91175309f9 100644
--- a/deps/v8/src/objects/js-array-buffer.cc
+++ b/deps/v8/src/objects/js-array-buffer.cc
@@ -35,11 +35,12 @@ bool CanonicalNumericIndexString(Isolate* isolate, Handle<Object> s,
}
} // anonymous namespace
-void JSArrayBuffer::Setup(SharedFlag shared,
+void JSArrayBuffer::Setup(SharedFlag shared, ResizableFlag resizable,
std::shared_ptr<BackingStore> backing_store) {
clear_padding();
set_bit_field(0);
set_is_shared(shared == SharedFlag::kShared);
+ set_is_resizable(resizable == ResizableFlag::kResizable);
set_is_detachable(shared != SharedFlag::kShared);
for (int i = 0; i < v8::ArrayBuffer::kEmbedderFieldCount; i++) {
SetEmbedderField(i, Smi::zero());
@@ -61,10 +62,17 @@ void JSArrayBuffer::Setup(SharedFlag shared,
void JSArrayBuffer::Attach(std::shared_ptr<BackingStore> backing_store) {
DCHECK_NOT_NULL(backing_store);
DCHECK_EQ(is_shared(), backing_store->is_shared());
+ DCHECK_EQ(is_resizable(), backing_store->is_resizable());
DCHECK(!was_detached());
Isolate* isolate = GetIsolate();
set_backing_store(isolate, backing_store->buffer_start());
- set_byte_length(backing_store->byte_length());
+ if (is_shared() && is_resizable()) {
+ // GSABs need to read their byte_length from the BackingStore. Maintain the
+ // invariant that their byte_length field is always 0.
+ set_byte_length(0);
+ } else {
+ set_byte_length(backing_store->byte_length());
+ }
if (backing_store->is_wasm_memory()) set_is_detachable(false);
if (!backing_store->free_on_destruct()) set_is_external(true);
Heap* heap = isolate->heap();
@@ -86,9 +94,12 @@ void JSArrayBuffer::Detach(bool force_for_wasm_memory) {
}
Isolate* const isolate = GetIsolate();
- if (backing_store()) {
- std::shared_ptr<BackingStore> backing_store;
- backing_store = RemoveExtension();
+ ArrayBufferExtension* extension = this->extension();
+
+ if (extension) {
+ DisallowGarbageCollection disallow_gc;
+ isolate->heap()->DetachArrayBufferExtension(*this, extension);
+ std::shared_ptr<BackingStore> backing_store = RemoveExtension();
CHECK_IMPLIES(force_for_wasm_memory, backing_store->is_wasm_memory());
}
@@ -151,14 +162,14 @@ void JSArrayBuffer::YoungMarkExtensionPromoted() {
Handle<JSArrayBuffer> JSTypedArray::GetBuffer() {
Isolate* isolate = GetIsolate();
Handle<JSTypedArray> self(*this, isolate);
- DCHECK(IsTypedArrayElementsKind(self->GetElementsKind()));
-
+ DCHECK(IsTypedArrayOrRabGsabTypedArrayElementsKind(self->GetElementsKind()));
Handle<JSArrayBuffer> array_buffer(JSArrayBuffer::cast(self->buffer()),
isolate);
if (!is_on_heap()) {
// Already is off heap, so return the existing buffer.
return array_buffer;
}
+ DCHECK(!array_buffer->is_resizable());
// The existing array buffer should be empty.
DCHECK_NULL(array_buffer->backing_store());
@@ -179,7 +190,8 @@ Handle<JSArrayBuffer> JSTypedArray::GetBuffer() {
}
// Attach the backing store to the array buffer.
- array_buffer->Setup(SharedFlag::kNotShared, std::move(backing_store));
+ array_buffer->Setup(SharedFlag::kNotShared, ResizableFlag::kNotResizable,
+ std::move(backing_store));
// Clear the elements of the typed array.
self->set_elements(ReadOnlyRoots(isolate).empty_byte_array());
@@ -267,6 +279,7 @@ ExternalArrayType JSTypedArray::type() {
return kExternal##Type##Array;
TYPED_ARRAYS(ELEMENTS_KIND_TO_ARRAY_TYPE)
+ RAB_GSAB_TYPED_ARRAYS_WITH_TYPED_ARRAY_TYPE(ELEMENTS_KIND_TO_ARRAY_TYPE)
#undef ELEMENTS_KIND_TO_ARRAY_TYPE
default:
@@ -274,13 +287,14 @@ ExternalArrayType JSTypedArray::type() {
}
}
-size_t JSTypedArray::element_size() {
+size_t JSTypedArray::element_size() const {
switch (map().elements_kind()) {
#define ELEMENTS_KIND_TO_ELEMENT_SIZE(Type, type, TYPE, ctype) \
case TYPE##_ELEMENTS: \
return sizeof(ctype);
TYPED_ARRAYS(ELEMENTS_KIND_TO_ELEMENT_SIZE)
+ RAB_GSAB_TYPED_ARRAYS(ELEMENTS_KIND_TO_ELEMENT_SIZE)
#undef ELEMENTS_KIND_TO_ELEMENT_SIZE
default:
@@ -288,5 +302,24 @@ size_t JSTypedArray::element_size() {
}
}
+size_t JSTypedArray::LengthTrackingGsabBackedTypedArrayLength(
+ Isolate* isolate, Address raw_array) {
+ // TODO(v8:11111): Cache the last seen length in JSArrayBuffer and use it
+ // in bounds checks to minimize the need for calling this function.
+ DCHECK(FLAG_harmony_rab_gsab);
+ DisallowGarbageCollection no_gc;
+ DisallowJavascriptExecution no_js(isolate);
+ JSTypedArray array = JSTypedArray::cast(Object(raw_array));
+ CHECK(array.is_length_tracking());
+ JSArrayBuffer buffer = array.buffer();
+ CHECK(buffer.is_resizable());
+ CHECK(buffer.is_shared());
+ size_t backing_byte_length =
+ buffer.GetBackingStore()->byte_length(std::memory_order_seq_cst);
+ CHECK_GE(backing_byte_length, array.byte_offset());
+ auto element_byte_size = ElementsKindToByteSize(array.GetElementsKind());
+ return (backing_byte_length - array.byte_offset()) / element_byte_size;
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/objects/js-array-buffer.h b/deps/v8/src/objects/js-array-buffer.h
index 3ec5e0d517..f723380772 100644
--- a/deps/v8/src/objects/js-array-buffer.h
+++ b/deps/v8/src/objects/js-array-buffer.h
@@ -77,13 +77,18 @@ class JSArrayBuffer
// [is_asmjs_memory]: true => this buffer was once used as asm.js memory.
DECL_BOOLEAN_ACCESSORS(is_asmjs_memory)
- // [is_shared]: tells whether this is an ArrayBuffer or a SharedArrayBuffer.
+ // [is_shared]: true if this is a SharedArrayBuffer or a
+ // GrowableSharedArrayBuffer.
DECL_BOOLEAN_ACCESSORS(is_shared)
+ // [is_resizable]: true if this is a ResizableArrayBuffer or a
+ // GrowableSharedArrayBuffer.
+ DECL_BOOLEAN_ACCESSORS(is_resizable)
+
// Initializes the fields of the ArrayBuffer. The provided backing_store can
// be nullptr. If it is not nullptr, then the function registers it with
// src/heap/array-buffer-tracker.h.
- V8_EXPORT_PRIVATE void Setup(SharedFlag shared,
+ V8_EXPORT_PRIVATE void Setup(SharedFlag shared, ResizableFlag resizable,
std::shared_ptr<BackingStore> backing_store);
// Attaches the backing store to an already constructed empty ArrayBuffer.
@@ -167,7 +172,7 @@ class ArrayBufferExtension : public Malloced {
std::atomic<GcState> young_gc_state_;
std::shared_ptr<BackingStore> backing_store_;
ArrayBufferExtension* next_;
- std::size_t accounting_length_;
+ std::atomic<size_t> accounting_length_;
GcState young_gc_state() {
return young_gc_state_.load(std::memory_order_relaxed);
@@ -205,10 +210,16 @@ class ArrayBufferExtension : public Malloced {
std::shared_ptr<BackingStore> backing_store() { return backing_store_; }
BackingStore* backing_store_raw() { return backing_store_.get(); }
- size_t accounting_length() { return accounting_length_; }
+ size_t accounting_length() {
+ return accounting_length_.load(std::memory_order_relaxed);
+ }
void set_accounting_length(size_t accounting_length) {
- accounting_length_ = accounting_length;
+ accounting_length_.store(accounting_length, std::memory_order_relaxed);
+ }
+
+ size_t ClearAccountingLength() {
+ return accounting_length_.exchange(0, std::memory_order_relaxed);
}
std::shared_ptr<BackingStore> RemoveBackingStore() {
@@ -253,6 +264,9 @@ class JSTypedArray
// eventually.
static constexpr size_t kMaxLength = v8::TypedArray::kMaxLength;
+ // Bit positions for [bit_field].
+ DEFINE_TORQUE_GENERATED_JS_TYPED_ARRAY_FLAGS()
+
// [length]: length of typed array in elements.
DECL_PRIMITIVE_GETTER(length, size_t)
@@ -265,7 +279,7 @@ class JSTypedArray
PropertyDescriptor* desc, Maybe<ShouldThrow> should_throw);
ExternalArrayType type();
- V8_EXPORT_PRIVATE size_t element_size();
+ V8_EXPORT_PRIVATE size_t element_size() const;
V8_EXPORT_PRIVATE Handle<JSArrayBuffer> GetBuffer();
@@ -290,6 +304,14 @@ class JSTypedArray
inline bool is_on_heap() const;
inline bool is_on_heap(AcquireLoadTag tag) const;
+ DECL_BOOLEAN_ACCESSORS(is_length_tracking)
+ DECL_BOOLEAN_ACCESSORS(is_backed_by_rab)
+ inline bool IsVariableLength() const;
+ inline size_t GetLength() const;
+
+ static size_t LengthTrackingGsabBackedTypedArrayLength(Isolate* isolate,
+ Address raw_array);
+
// Note: this is a pointer compression specific optimization.
// Normally, on-heap typed arrays contain HeapObject value in |base_pointer|
// field and an offset in |external_pointer|.
@@ -346,6 +368,9 @@ class JSTypedArray
friend class Factory;
DECL_PRIMITIVE_SETTER(length, size_t)
+ // Reads the "length" field, doesn't assert the TypedArray is not RAB / GSAB
+ // backed.
+ inline size_t LengthUnchecked() const;
DECL_GETTER(external_pointer, Address)
DECL_GETTER(external_pointer_raw, ExternalPointer_t)
diff --git a/deps/v8/src/objects/js-array-buffer.tq b/deps/v8/src/objects/js-array-buffer.tq
index 72e74cc99b..ddd90d4c81 100644
--- a/deps/v8/src/objects/js-array-buffer.tq
+++ b/deps/v8/src/objects/js-array-buffer.tq
@@ -8,11 +8,13 @@ bitfield struct JSArrayBufferFlags extends uint32 {
was_detached: bool: 1 bit;
is_asm_js_memory: bool: 1 bit;
is_shared: bool: 1 bit;
+ is_resizable: bool: 1 bit;
}
@generateCppClass
extern class JSArrayBuffer extends JSObject {
byte_length: uintptr;
+ max_byte_length: uintptr;
backing_store: ExternalPointer;
extension: RawPtr;
bit_field: JSArrayBufferFlags;
@@ -29,10 +31,16 @@ macro IsDetachedBuffer(buffer: JSArrayBuffer): bool {
return buffer.bit_field.was_detached;
}
+@export
macro IsSharedArrayBuffer(buffer: JSArrayBuffer): bool {
return buffer.bit_field.is_shared;
}
+@export
+macro IsResizableArrayBuffer(buffer: JSArrayBuffer): bool {
+ return buffer.bit_field.is_resizable;
+}
+
@abstract
@generateCppClass
extern class JSArrayBufferView extends JSObject {
@@ -41,11 +49,35 @@ extern class JSArrayBufferView extends JSObject {
byte_length: uintptr;
}
+// We have 4 different TypedArrays:
+// 1) Normal (backed by AB / SAB) or non-length tracking backed by GSAB (can't
+// go oob once constructed) 2) Non-length tracking backed by RAB (can go oob
+// once constructed) 3) Length-tracking backed by RAB (JSArrayBuffer stores the
+// length) 4) Length-tracking backed by GSAB (BackingStore stores the length)
+bitfield struct JSTypedArrayFlags extends uint32 {
+ is_length_tracking: bool: 1 bit;
+ is_backed_by_rab: bool: 1 bit;
+}
+
@generateCppClass
extern class JSTypedArray extends JSArrayBufferView {
length: uintptr;
external_pointer: ExternalPointer;
base_pointer: ByteArray|Smi;
+ bit_field: JSTypedArrayFlags;
+ // Pads header size to be a multiple of kTaggedSize.
+ @if(TAGGED_SIZE_8_BYTES) optional_padding: uint32;
+ @ifnot(TAGGED_SIZE_8_BYTES) optional_padding: void;
+}
+
+@export
+macro IsVariableLengthTypedArray(array: JSTypedArray): bool {
+ return array.bit_field.is_length_tracking || array.bit_field.is_backed_by_rab;
+}
+
+@export
+macro IsLengthTrackingTypedArray(array: JSTypedArray): bool {
+ return array.bit_field.is_length_tracking;
}
@generateCppClass
diff --git a/deps/v8/src/objects/js-array.h b/deps/v8/src/objects/js-array.h
index a8b336d2be..776cb4446b 100644
--- a/deps/v8/src/objects/js-array.h
+++ b/deps/v8/src/objects/js-array.h
@@ -58,8 +58,8 @@ class JSArray : public JSObject {
// Initializes the array to a certain length.
inline bool AllowsSetLength();
- V8_EXPORT_PRIVATE static void SetLength(Handle<JSArray> array,
- uint32_t length);
+ V8_EXPORT_PRIVATE static Maybe<bool> SetLength(Handle<JSArray> array,
+ uint32_t length);
// Set the content of the array to the content of storage.
static inline void SetContent(Handle<JSArray> array,
diff --git a/deps/v8/src/objects/js-function-inl.h b/deps/v8/src/objects/js-function-inl.h
index 5c8cb5b644..b0a53f5875 100644
--- a/deps/v8/src/objects/js-function-inl.h
+++ b/deps/v8/src/objects/js-function-inl.h
@@ -91,7 +91,7 @@ void JSFunction::MarkForOptimization(ConcurrencyMode mode) {
mode = ConcurrencyMode::kNotConcurrent;
}
- DCHECK(!is_compiled() || ActiveTierIsIgnition() || ActiveTierIsNCI() ||
+ DCHECK(!is_compiled() || ActiveTierIsIgnition() ||
ActiveTierIsMidtierTurboprop() || ActiveTierIsBaseline());
DCHECK(!ActiveTierIsTurbofan());
DCHECK(shared().IsInterpreted());
@@ -131,8 +131,8 @@ void JSFunction::CompleteInobjectSlackTrackingIfActive() {
}
}
-template <typename LocalIsolate>
-AbstractCode JSFunction::abstract_code(LocalIsolate* isolate) {
+template <typename IsolateT>
+AbstractCode JSFunction::abstract_code(IsolateT* isolate) {
if (ActiveTierIsIgnition()) {
return AbstractCode::cast(shared().GetBytecodeArray(isolate));
} else {
@@ -206,27 +206,28 @@ void JSFunction::set_context(HeapObject value, WriteBarrierMode mode) {
CONDITIONAL_WRITE_BARRIER(*this, kContextOffset, value, mode);
}
-ACCESSORS_CHECKED(JSFunction, prototype_or_initial_map, HeapObject,
- kPrototypeOrInitialMapOffset, map().has_prototype_slot())
+RELEASE_ACQUIRE_ACCESSORS_CHECKED(JSFunction, prototype_or_initial_map,
+ HeapObject, kPrototypeOrInitialMapOffset,
+ map().has_prototype_slot())
DEF_GETTER(JSFunction, has_prototype_slot, bool) {
return map(cage_base).has_prototype_slot();
}
DEF_GETTER(JSFunction, initial_map, Map) {
- return Map::cast(prototype_or_initial_map(cage_base));
+ return Map::cast(prototype_or_initial_map(cage_base, kAcquireLoad));
}
DEF_GETTER(JSFunction, has_initial_map, bool) {
DCHECK(has_prototype_slot(cage_base));
- return prototype_or_initial_map(cage_base).IsMap(cage_base);
+ return prototype_or_initial_map(cage_base, kAcquireLoad).IsMap(cage_base);
}
DEF_GETTER(JSFunction, has_instance_prototype, bool) {
DCHECK(has_prototype_slot(cage_base));
return has_initial_map(cage_base) ||
- !prototype_or_initial_map(cage_base).IsTheHole(
- GetReadOnlyRoots(cage_base));
+ !prototype_or_initial_map(cage_base, kAcquireLoad)
+ .IsTheHole(GetReadOnlyRoots(cage_base));
}
DEF_GETTER(JSFunction, has_prototype, bool) {
@@ -251,7 +252,7 @@ DEF_GETTER(JSFunction, instance_prototype, HeapObject) {
return initial_map(cage_base).prototype(cage_base);
// When there is no initial map and the prototype is a JSReceiver, the
// initial map field is used for the prototype field.
- return HeapObject::cast(prototype_or_initial_map(cage_base));
+ return HeapObject::cast(prototype_or_initial_map(cage_base, kAcquireLoad));
}
DEF_GETTER(JSFunction, prototype, Object) {
diff --git a/deps/v8/src/objects/js-function.cc b/deps/v8/src/objects/js-function.cc
index 35010be838..b191746fae 100644
--- a/deps/v8/src/objects/js-function.cc
+++ b/deps/v8/src/objects/js-function.cc
@@ -101,9 +101,6 @@ bool HighestTierOf(CodeKinds kinds, CodeKind* highest_tier) {
} else if ((kinds & CodeKindFlag::BASELINE) != 0) {
*highest_tier = CodeKind::BASELINE;
return true;
- } else if ((kinds & CodeKindFlag::NATIVE_CONTEXT_INDEPENDENT) != 0) {
- *highest_tier = CodeKind::NATIVE_CONTEXT_INDEPENDENT;
- return true;
} else if ((kinds & CodeKindFlag::INTERPRETED_FUNCTION) != 0) {
*highest_tier = CodeKind::INTERPRETED_FUNCTION;
return true;
@@ -135,7 +132,6 @@ CodeKind JSFunction::GetActiveTier() const {
DCHECK(highest_tier == CodeKind::TURBOFAN ||
highest_tier == CodeKind::BASELINE ||
highest_tier == CodeKind::TURBOPROP ||
- highest_tier == CodeKind::NATIVE_CONTEXT_INDEPENDENT ||
highest_tier == CodeKind::INTERPRETED_FUNCTION);
return highest_tier;
}
@@ -145,11 +141,6 @@ bool JSFunction::ActiveTierIsTurbofan() const {
return GetActiveTier() == CodeKind::TURBOFAN;
}
-bool JSFunction::ActiveTierIsNCI() const {
- if (!shared().HasBytecodeArray()) return false;
- return GetActiveTier() == CodeKind::NATIVE_CONTEXT_INDEPENDENT;
-}
-
bool JSFunction::ActiveTierIsBaseline() const {
return GetActiveTier() == CodeKind::BASELINE;
}
@@ -376,7 +367,6 @@ void JSFunction::InitializeFeedbackCell(
const bool needs_feedback_vector =
!FLAG_lazy_feedback_allocation || FLAG_always_opt ||
- function->shared().may_have_cached_code() ||
// We also need a feedback vector for certain log events, collecting type
// profile and more precise code coverage.
FLAG_log_function_events || !isolate->is_best_effort_code_coverage() ||
@@ -410,7 +400,7 @@ void SetInstancePrototype(Isolate* isolate, Handle<JSFunction> function,
// Put the value in the initial map field until an initial map is needed.
// At that point, a new initial map is created and the prototype is put
// into the initial map where it belongs.
- function->set_prototype_or_initial_map(*value);
+ function->set_prototype_or_initial_map(*value, kReleaseStore);
} else {
Handle<Map> new_map =
Map::Copy(isolate, initial_map, "SetInstancePrototype");
@@ -435,7 +425,7 @@ void SetInstancePrototype(Isolate* isolate, Handle<JSFunction> function,
// Put the value in the initial map field until an initial map is
// needed. At that point, a new initial map is created and the
// prototype is put into the initial map where it belongs.
- function->set_prototype_or_initial_map(*value);
+ function->set_prototype_or_initial_map(*value, kReleaseStore);
if (value->IsJSObject()) {
// Optimize as prototype to detach it from its transition tree.
JSObject::OptimizeAsPrototype(Handle<JSObject>::cast(value));
@@ -498,7 +488,7 @@ void JSFunction::SetInitialMap(Isolate* isolate, Handle<JSFunction> function,
Map::SetPrototype(isolate, map, prototype);
}
map->SetConstructor(*constructor);
- function->set_prototype_or_initial_map(*map);
+ function->set_prototype_or_initial_map(*map, kReleaseStore);
if (FLAG_log_maps) {
LOG(isolate, MapEvent("InitialMap", Handle<Map>(), map, "",
SharedFunctionInfo::DebugName(
@@ -806,6 +796,55 @@ MaybeHandle<Map> JSFunction::GetDerivedMap(Isolate* isolate,
return map;
}
+Handle<Map> JSFunction::GetDerivedRabGsabMap(Isolate* isolate,
+ Handle<JSFunction> constructor,
+ Handle<JSReceiver> new_target) {
+ {
+ DisallowHeapAllocation no_alloc;
+ NativeContext context = isolate->context().native_context();
+ if (*new_target == context.uint8_array_fun()) {
+ return handle(context.rab_gsab_uint8_array_map(), isolate);
+ }
+ if (*new_target == context.int8_array_fun()) {
+ return handle(context.rab_gsab_int8_array_map(), isolate);
+ }
+ if (*new_target == context.uint16_array_fun()) {
+ return handle(context.rab_gsab_uint16_array_map(), isolate);
+ }
+ if (*new_target == context.int16_array_fun()) {
+ return handle(context.rab_gsab_int16_array_map(), isolate);
+ }
+ if (*new_target == context.uint32_array_fun()) {
+ return handle(context.rab_gsab_uint32_array_map(), isolate);
+ }
+ if (*new_target == context.int32_array_fun()) {
+ return handle(context.rab_gsab_int32_array_map(), isolate);
+ }
+ if (*new_target == context.float32_array_fun()) {
+ return handle(context.rab_gsab_float32_array_map(), isolate);
+ }
+ if (*new_target == context.float64_array_fun()) {
+ return handle(context.rab_gsab_float64_array_map(), isolate);
+ }
+ if (*new_target == context.biguint64_array_fun()) {
+ return handle(context.rab_gsab_biguint64_array_map(), isolate);
+ }
+ if (*new_target == context.bigint64_array_fun()) {
+ return handle(context.rab_gsab_bigint64_array_map(), isolate);
+ }
+ }
+
+ // This only happens when subclassing TypedArrays. Create a new map with the
+ // corresponding RAB / GSAB ElementsKind. Note: the map is not cached and
+ // reused -> every array gets a unique map, making ICs slow.
+ Handle<Map> map =
+ GetDerivedMap(isolate, constructor, new_target).ToHandleChecked();
+ Handle<Map> rab_gsab_map = Map::Copy(isolate, map, "RAB / GSAB");
+ rab_gsab_map->set_elements_kind(
+ GetCorrespondingRabGsabElementsKind(map->elements_kind()));
+ return rab_gsab_map;
+}
+
int JSFunction::ComputeInstanceSizeWithMinSlack(Isolate* isolate) {
CHECK(has_initial_map());
if (initial_map().IsInobjectSlackTrackingInProgress()) {
diff --git a/deps/v8/src/objects/js-function.h b/deps/v8/src/objects/js-function.h
index 76af98efe7..9d0fc533f4 100644
--- a/deps/v8/src/objects/js-function.h
+++ b/deps/v8/src/objects/js-function.h
@@ -55,7 +55,7 @@ class JSBoundFunction
class JSFunction : public JSFunctionOrBoundFunction {
public:
// [prototype_or_initial_map]:
- DECL_ACCESSORS(prototype_or_initial_map, HeapObject)
+ DECL_RELEASE_ACQUIRE_ACCESSORS(prototype_or_initial_map, HeapObject)
// [shared]: The information about the function that
// can be shared by instances.
@@ -93,8 +93,8 @@ class JSFunction : public JSFunctionOrBoundFunction {
// Get the abstract code associated with the function, which will either be
// a Code object or a BytecodeArray.
- template <typename LocalIsolate>
- inline AbstractCode abstract_code(LocalIsolate* isolate);
+ template <typename IsolateT>
+ inline AbstractCode abstract_code(IsolateT* isolate);
// The predicates for querying code kinds related to this function have
// specific terminology:
@@ -122,7 +122,6 @@ class JSFunction : public JSFunctionOrBoundFunction {
CodeKind GetActiveTier() const;
V8_EXPORT_PRIVATE bool ActiveTierIsIgnition() const;
bool ActiveTierIsTurbofan() const;
- bool ActiveTierIsNCI() const;
bool ActiveTierIsBaseline() const;
bool ActiveTierIsIgnitionOrBaseline() const;
bool ActiveTierIsMidtierTurboprop() const;
@@ -238,6 +237,11 @@ class JSFunction : public JSFunctionOrBoundFunction {
Isolate* isolate, Handle<JSFunction> constructor,
Handle<JSReceiver> new_target);
+ // Like GetDerivedMap, but returns a map with a RAB / GSAB ElementsKind.
+ static V8_WARN_UNUSED_RESULT Handle<Map> GetDerivedRabGsabMap(
+ Isolate* isolate, Handle<JSFunction> constructor,
+ Handle<JSReceiver> new_target);
+
// Get and set the prototype property on a JSFunction. If the
// function has an initial map the prototype is set on the initial
// map. Otherwise, the prototype is put in the initial map field
diff --git a/deps/v8/src/objects/js-locale.cc b/deps/v8/src/objects/js-locale.cc
index a8da4a9612..236c673ca3 100644
--- a/deps/v8/src/objects/js-locale.cc
+++ b/deps/v8/src/objects/js-locale.cc
@@ -20,10 +20,15 @@
#include "src/objects/intl-objects.h"
#include "src/objects/js-locale-inl.h"
#include "src/objects/objects-inl.h"
+#include "unicode/calendar.h"
#include "unicode/char16ptr.h"
+#include "unicode/coll.h"
+#include "unicode/dtptngen.h"
#include "unicode/localebuilder.h"
#include "unicode/locid.h"
+#include "unicode/ucal.h"
#include "unicode/uloc.h"
+#include "unicode/ulocdata.h"
#include "unicode/unistr.h"
namespace v8 {
@@ -165,6 +170,11 @@ bool IsUnicodeVariantSubtag(const std::string& value) {
bool IsExtensionSingleton(const std::string& value) {
return IsAlphanum(value, 1, 1);
}
+
+int32_t weekdayFromEDaysOfWeek(icu::Calendar::EDaysOfWeek eDaysOfWeek) {
+ return (eDaysOfWeek == icu::Calendar::SUNDAY) ? 7 : eDaysOfWeek - 1;
+}
+
} // namespace
bool JSLocale::Is38AlphaNumList(const std::string& value) {
@@ -450,6 +460,340 @@ MaybeHandle<JSLocale> JSLocale::Minimize(Isolate* isolate,
return Construct(isolate, result);
}
+template <typename T>
+MaybeHandle<JSArray> GetKeywordValuesFromLocale(
+ Isolate* isolate, const char* key, const char* unicode_key,
+ const icu::Locale& locale,
+ const std::map<std::string, std::string>& substitutions) {
+ Factory* factory = isolate->factory();
+ UErrorCode status = U_ZERO_ERROR;
+ std::string ext =
+ locale.getUnicodeKeywordValue<std::string>(unicode_key, status);
+ if (!ext.empty()) {
+ Handle<FixedArray> fixed_array = factory->NewFixedArray(1);
+ Handle<String> str = factory->NewStringFromAsciiChecked(ext.c_str());
+ fixed_array->set(0, *str);
+ return factory->NewJSArrayWithElements(fixed_array);
+ }
+ status = U_ZERO_ERROR;
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ T::getKeywordValuesForLocale(key, locale, true, status));
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSArray);
+ }
+ int32_t count = enumeration->count(status);
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSArray);
+ }
+ Handle<FixedArray> fixed_array = factory->NewFixedArray(count);
+
+ int32_t index = 0;
+ for (const char* item = enumeration->next(nullptr, status);
+ U_SUCCESS(status) && item != nullptr;
+ item = enumeration->next(nullptr, status)) {
+ auto mapped = substitutions.find(item);
+ if (mapped != substitutions.end()) {
+ item = mapped->second.c_str();
+ if (*item == '\0') {
+ continue;
+ }
+ }
+ Handle<String> str = factory->NewStringFromAsciiChecked(item);
+ fixed_array->set(index++, *str);
+ }
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSArray);
+ }
+ return factory->NewJSArrayWithElements(fixed_array);
+}
+
+MaybeHandle<JSArray> JSLocale::Calendars(Isolate* isolate,
+ Handle<JSLocale> locale) {
+ icu::Locale icu_locale(*(locale->icu_locale().raw()));
+ const std::map<std::string, std::string> substitutions(
+ {{"gregorian", "gregory"}, {"ethiopic-amete-alem", "ethioaa"}});
+ return GetKeywordValuesFromLocale<icu::Calendar>(isolate, "calendar", "ca",
+ icu_locale, substitutions);
+}
+
+MaybeHandle<JSArray> JSLocale::Collations(Isolate* isolate,
+ Handle<JSLocale> locale) {
+ icu::Locale icu_locale(*(locale->icu_locale().raw()));
+ const std::map<std::string, std::string> substitutions(
+ {{"standard", ""}, {"search", ""}});
+ return GetKeywordValuesFromLocale<icu::Collator>(isolate, "collations", "co",
+ icu_locale, substitutions);
+}
+
+MaybeHandle<JSArray> JSLocale::HourCycles(Isolate* isolate,
+ Handle<JSLocale> locale) {
+ // Let preferred be loc.[[HourCycle]].
+ // Let locale be loc.[[Locale]].
+ icu::Locale icu_locale(*(locale->icu_locale().raw()));
+ Factory* factory = isolate->factory();
+
+ // Assert: locale matches the unicode_locale_id production.
+
+ // Let list be a List of 1 or more hour cycle identifiers, which must be
+ // String values indicating either the 12-hour format ("h11", "h12") or the
+ // 24-hour format ("h23", "h24"), sorted in descending preference of those in
+ // common use in the locale for date and time formatting.
+
+ // Return CreateArrayFromListAndPreferred( list, preferred ).
+ Handle<FixedArray> fixed_array = factory->NewFixedArray(1);
+ UErrorCode status = U_ZERO_ERROR;
+ std::string ext =
+ icu_locale.getUnicodeKeywordValue<std::string>("hc", status);
+ if (!ext.empty()) {
+ Handle<String> str = factory->NewStringFromAsciiChecked(ext.c_str());
+ fixed_array->set(0, *str);
+ return factory->NewJSArrayWithElements(fixed_array);
+ }
+ status = U_ZERO_ERROR;
+ std::unique_ptr<icu::DateTimePatternGenerator> generator(
+ icu::DateTimePatternGenerator::createInstance(icu_locale, status));
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSArray);
+ }
+
+ UDateFormatHourCycle hc = generator->getDefaultHourCycle(status);
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSArray);
+ }
+ Handle<String> hour_cycle;
+
+ switch (hc) {
+ case UDAT_HOUR_CYCLE_11:
+ hour_cycle = factory->h11_string();
+ break;
+ case UDAT_HOUR_CYCLE_12:
+ hour_cycle = factory->h12_string();
+ break;
+ case UDAT_HOUR_CYCLE_23:
+ hour_cycle = factory->h23_string();
+ break;
+ case UDAT_HOUR_CYCLE_24:
+ hour_cycle = factory->h24_string();
+ break;
+ default:
+ break;
+ }
+ fixed_array->set(0, *hour_cycle);
+ return factory->NewJSArrayWithElements(fixed_array);
+}
+
+MaybeHandle<JSArray> JSLocale::NumberingSystems(Isolate* isolate,
+ Handle<JSLocale> locale) {
+ // Let preferred be loc.[[NumberingSystem]].
+
+ // Let locale be loc.[[Locale]].
+ icu::Locale icu_locale(*(locale->icu_locale().raw()));
+ Factory* factory = isolate->factory();
+
+ // Assert: locale matches the unicode_locale_id production.
+
+ // Let list be a List of 1 or more numbering system identifiers, which must be
+ // String values conforming to the type sequence from UTS 35 Unicode Locale
+ // Identifier, section 3.2, sorted in descending preference of those in common
+ // use in the locale for formatting numeric values.
+
+ // Return CreateArrayFromListAndPreferred( list, preferred ).
+ UErrorCode status = U_ZERO_ERROR;
+ Handle<FixedArray> fixed_array = factory->NewFixedArray(1);
+ std::string numbering_system =
+ icu_locale.getUnicodeKeywordValue<std::string>("nu", status);
+ if (numbering_system.empty()) {
+ numbering_system = Intl::GetNumberingSystem(icu_locale);
+ }
+ Handle<String> str =
+ factory->NewStringFromAsciiChecked(numbering_system.c_str());
+
+ fixed_array->set(0, *str);
+ return factory->NewJSArrayWithElements(fixed_array);
+}
+
+MaybeHandle<Object> JSLocale::TimeZones(Isolate* isolate,
+ Handle<JSLocale> locale) {
+ // Let loc be the this value.
+
+ // Perform ? RequireInternalSlot(loc, [[InitializedLocale]])
+
+ // Let locale be loc.[[Locale]].
+ icu::Locale icu_locale(*(locale->icu_locale().raw()));
+ Factory* factory = isolate->factory();
+
+ // If the unicode_language_id production of locale does not contain the
+ // ["-" unicode_region_subtag] sequence, return undefined.
+ const char* region = icu_locale.getCountry();
+ if (region == nullptr || strlen(region) == 0) {
+ return factory->undefined_value();
+ }
+
+ // Return TimeZonesOfLocale(loc).
+
+ // Let locale be loc.[[Locale]].
+
+ // Assert: locale matches the unicode_locale_id production.
+
+ // Let region be the substring of locale corresponding to the
+ // unicode_region_subtag production of the unicode_language_id.
+
+ // Let list be a List of 1 or more time zone identifiers, which must be String
+ // values indicating a Zone or Link name of the IANA Time Zone Database,
+ // sorted in descending preference of those in common use in region.
+ int32_t index = 0;
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::StringEnumeration> enumeration(
+ icu::TimeZone::createTimeZoneIDEnumeration(UCAL_ZONE_TYPE_CANONICAL,
+ region, nullptr, status));
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSArray);
+ }
+ int32_t count = enumeration->count(status);
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSArray);
+ }
+
+ // Return CreateArrayFromList( list ).
+ Handle<FixedArray> fixed_array = factory->NewFixedArray(count);
+ for (const char* item = enumeration->next(nullptr, status);
+ U_SUCCESS(status) && item != nullptr;
+ item = enumeration->next(nullptr, status)) {
+ Handle<String> str = isolate->factory()->NewStringFromAsciiChecked(item);
+ fixed_array->set(index++, *str);
+ }
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSArray);
+ }
+
+ return factory->NewJSArrayWithElements(fixed_array);
+}
+
+MaybeHandle<JSObject> JSLocale::TextInfo(Isolate* isolate,
+ Handle<JSLocale> locale) {
+ // Let loc be the this value.
+
+ // Perform ? RequireInternalSlot(loc, [[InitializedLocale]]).
+
+ // Let locale be loc.[[Locale]].
+
+ // Assert: locale matches the unicode_locale_id production.
+
+ Factory* factory = isolate->factory();
+ // Let info be ! ObjectCreate(%Object.prototype%).
+ Handle<JSObject> info = factory->NewJSObject(isolate->object_function());
+
+ // Let dir be "ltr".
+ Handle<String> dir = factory->ltr_string();
+
+ // If the default general ordering of characters (characterOrder) within a
+ // line in the locale is right-to-left, then
+ UErrorCode status = U_ZERO_ERROR;
+ ULayoutType orientation = uloc_getCharacterOrientation(
+ (locale->icu_locale().raw())->getName(), &status);
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSObject);
+ }
+ if (orientation == ULOC_LAYOUT_LTR) {
+ // Let dir be "rtl".
+ dir = factory->rtl_string();
+ }
+
+ // Perform ! CreateDataPropertyOrThrow(info, "direction", dir).
+ CHECK(JSReceiver::CreateDataProperty(
+ isolate, info, factory->direction_string(), dir, Just(kDontThrow))
+ .FromJust());
+
+ // Return info.
+ return info;
+}
+
+MaybeHandle<JSObject> JSLocale::WeekInfo(Isolate* isolate,
+ Handle<JSLocale> locale) {
+ // Let loc be the this value.
+
+ // Perform ? RequireInternalSlot(loc, [[InitializedLocale]]).
+
+ // Let locale be loc.[[Locale]].
+
+ // Assert: locale matches the unicode_locale_id production.
+ Factory* factory = isolate->factory();
+
+ // Let info be ! ObjectCreate(%Object.prototype%).
+ Handle<JSObject> info = factory->NewJSObject(isolate->object_function());
+ UErrorCode status = U_ZERO_ERROR;
+ std::unique_ptr<icu::Calendar> calendar(
+ icu::Calendar::createInstance(*(locale->icu_locale().raw()), status));
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSObject);
+ }
+
+ // Let fd be the weekday value indicating which day of the week is considered
+ // the 'first' day, for calendar purposes, in the locale.
+ int32_t fd = weekdayFromEDaysOfWeek(calendar->getFirstDayOfWeek());
+ bool thursday_is_weekend =
+ (UCAL_WEEKDAY != calendar->getDayOfWeekType(UCAL_THURSDAY, status));
+ bool friday_is_weekend =
+ (UCAL_WEEKDAY != calendar->getDayOfWeekType(UCAL_FRIDAY, status));
+ bool saturday_is_weekend =
+ (UCAL_WEEKDAY != calendar->getDayOfWeekType(UCAL_SATURDAY, status));
+ bool sunday_is_weekend =
+ (UCAL_WEEKDAY != calendar->getDayOfWeekType(UCAL_SUNDAY, status));
+ if (U_FAILURE(status)) {
+ THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError),
+ JSObject);
+ }
+
+ // Let ws be the weekday value indicating which day of the week is considered
+ // the starting day of the 'weekend', for calendar purposes, in the locale.
+ int32_t ws = thursday_is_weekend ? 4 : (friday_is_weekend ? 5 : 6);
+
+ // Let we be the weekday value indicating which day of the week is considered
+ // the ending day of the 'weekend', for calendar purposes, in the locale.
+ int32_t we = sunday_is_weekend ? 7 : (saturday_is_weekend ? 6 : 5);
+
+ // Let md be the minimal days required in the first week of a month or year,
+ // for calendar purposes, in the locale.
+ int32_t md = calendar->getMinimalDaysInFirstWeek();
+
+ // Perform ! CreateDataPropertyOrThrow(info, "firstDay", fd).
+ CHECK(JSReceiver::CreateDataProperty(
+ isolate, info, factory->firstDay_string(),
+ factory->NewNumberFromInt(fd), Just(kDontThrow))
+ .FromJust());
+
+ // Perform ! CreateDataPropertyOrThrow(info, "weekendStart", ws).
+ CHECK(JSReceiver::CreateDataProperty(
+ isolate, info, factory->weekendStart_string(),
+ factory->NewNumberFromInt(ws), Just(kDontThrow))
+ .FromJust());
+
+ // Perform ! CreateDataPropertyOrThrow(info, "weekendEnd", we).
+ CHECK(JSReceiver::CreateDataProperty(
+ isolate, info, factory->weekendEnd_string(),
+ factory->NewNumberFromInt(we), Just(kDontThrow))
+ .FromJust());
+
+ // Perform ! CreateDataPropertyOrThrow(info, "minimalDays", md).
+ CHECK(JSReceiver::CreateDataProperty(
+ isolate, info, factory->minimalDays_string(),
+ factory->NewNumberFromInt(md), Just(kDontThrow))
+ .FromJust());
+
+ // Return info.
+ return info;
+}
+
Handle<Object> JSLocale::Language(Isolate* isolate, Handle<JSLocale> locale) {
Factory* factory = isolate->factory();
const char* language = locale->icu_locale().raw()->getLanguage();
diff --git a/deps/v8/src/objects/js-locale.h b/deps/v8/src/objects/js-locale.h
index d864c8272f..5f57dca516 100644
--- a/deps/v8/src/objects/js-locale.h
+++ b/deps/v8/src/objects/js-locale.h
@@ -40,6 +40,21 @@ class JSLocale : public TorqueGeneratedJSLocale<JSLocale, JSObject> {
static MaybeHandle<JSLocale> Minimize(Isolate* isolate,
Handle<JSLocale> locale);
+ V8_WARN_UNUSED_RESULT static MaybeHandle<JSArray> Calendars(
+ Isolate* isolate, Handle<JSLocale> locale);
+ V8_WARN_UNUSED_RESULT static MaybeHandle<JSArray> Collations(
+ Isolate* isolate, Handle<JSLocale> locale);
+ V8_WARN_UNUSED_RESULT static MaybeHandle<JSArray> HourCycles(
+ Isolate* isolate, Handle<JSLocale> locale);
+ V8_WARN_UNUSED_RESULT static MaybeHandle<JSArray> NumberingSystems(
+ Isolate* isolate, Handle<JSLocale> locale);
+ V8_WARN_UNUSED_RESULT static MaybeHandle<JSObject> TextInfo(
+ Isolate* isolate, Handle<JSLocale> locale);
+ V8_WARN_UNUSED_RESULT static MaybeHandle<Object> TimeZones(
+ Isolate* isolate, Handle<JSLocale> locale);
+ V8_WARN_UNUSED_RESULT static MaybeHandle<JSObject> WeekInfo(
+ Isolate* isolate, Handle<JSLocale> locale);
+
static Handle<Object> Language(Isolate* isolate, Handle<JSLocale> locale);
static Handle<Object> Script(Isolate* isolate, Handle<JSLocale> locale);
static Handle<Object> Region(Isolate* isolate, Handle<JSLocale> locale);
diff --git a/deps/v8/src/objects/js-objects-inl.h b/deps/v8/src/objects/js-objects-inl.h
index cbbbc9fc9e..6d3dc9cdde 100644
--- a/deps/v8/src/objects/js-objects-inl.h
+++ b/deps/v8/src/objects/js-objects-inl.h
@@ -401,25 +401,31 @@ Object JSObject::InObjectPropertyAtPut(int index, Object value,
}
void JSObject::InitializeBody(Map map, int start_offset,
- Object pre_allocated_value, Object filler_value) {
- DCHECK_IMPLIES(filler_value.IsHeapObject(),
- !ObjectInYoungGeneration(filler_value));
- DCHECK_IMPLIES(pre_allocated_value.IsHeapObject(),
- !ObjectInYoungGeneration(pre_allocated_value));
+ bool is_slack_tracking_in_progress,
+ MapWord filler_map, Object undefined_filler) {
int size = map.instance_size();
int offset = start_offset;
- if (filler_value != pre_allocated_value) {
+ if (is_slack_tracking_in_progress) {
int end_of_pre_allocated_offset =
size - (map.UnusedPropertyFields() * kTaggedSize);
DCHECK_LE(kHeaderSize, end_of_pre_allocated_offset);
+ // fill start with references to the undefined value object
while (offset < end_of_pre_allocated_offset) {
- WRITE_FIELD(*this, offset, pre_allocated_value);
+ WRITE_FIELD(*this, offset, undefined_filler);
+ offset += kTaggedSize;
+ }
+ // fill the remainder with one word filler objects (ie just a map word)
+ while (offset < size) {
+ Object fm = Object(filler_map.ptr());
+ WRITE_FIELD(*this, offset, fm);
+ offset += kTaggedSize;
+ }
+ } else {
+ while (offset < size) {
+ // fill with references to the undefined value object
+ WRITE_FIELD(*this, offset, undefined_filler);
offset += kTaggedSize;
}
- }
- while (offset < size) {
- WRITE_FIELD(*this, offset, filler_value);
- offset += kTaggedSize;
}
}
@@ -769,7 +775,6 @@ static inline bool ShouldConvertToSlowElements(JSObject object,
if (index - capacity >= JSObject::kMaxGap) return true;
*new_capacity = JSObject::NewElementsCapacity(index + 1);
DCHECK_LT(index, *new_capacity);
- // TODO(ulan): Check if it works with young large objects.
if (*new_capacity <= JSObject::kMaxUncheckedOldFastElementsLength ||
(*new_capacity <= JSObject::kMaxUncheckedFastElementsLength &&
ObjectInYoungGeneration(object))) {
diff --git a/deps/v8/src/objects/js-objects.cc b/deps/v8/src/objects/js-objects.cc
index 01df8e1524..032296aaa4 100644
--- a/deps/v8/src/objects/js-objects.cc
+++ b/deps/v8/src/objects/js-objects.cc
@@ -2054,8 +2054,7 @@ MaybeHandle<FixedArray> GetOwnValuesOrEntries(Isolate* isolate,
MaybeHandle<FixedArray>());
if (get_entries) {
- Handle<FixedArray> entry_storage =
- isolate->factory()->NewUninitializedFixedArray(2);
+ Handle<FixedArray> entry_storage = isolate->factory()->NewFixedArray(2);
entry_storage->set(0, *key);
entry_storage->set(1, *value);
value = isolate->factory()->NewJSArrayWithElements(entry_storage,
@@ -2767,14 +2766,14 @@ void MigrateFastToFast(Isolate* isolate, Handle<JSObject> object,
// If the map does not add named properties, simply set the map.
if (old_map->NumberOfOwnDescriptors() ==
new_map->NumberOfOwnDescriptors()) {
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
return;
}
// If the map adds a new kDescriptor property, simply set the map.
PropertyDetails details = new_map->GetLastDescriptorDetails(isolate);
if (details.location() == kDescriptor) {
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
return;
}
@@ -2790,7 +2789,7 @@ void MigrateFastToFast(Isolate* isolate, Handle<JSObject> object,
auto value = isolate->factory()->NewHeapNumberWithHoleNaN();
object->FastPropertyAtPut(index, *value);
}
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
return;
}
@@ -2818,7 +2817,7 @@ void MigrateFastToFast(Isolate* isolate, Handle<JSObject> object,
// Set the new property value and do the map transition.
object->SetProperties(*new_storage);
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
return;
}
@@ -2831,7 +2830,7 @@ void MigrateFastToFast(Isolate* isolate, Handle<JSObject> object,
// converted to doubles.
if (!old_map->InstancesNeedRewriting(*new_map, number_of_fields, inobject,
unused, &old_number_of_fields)) {
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
return;
}
@@ -2946,7 +2945,7 @@ void MigrateFastToFast(Isolate* isolate, Handle<JSObject> object,
// We are storing the new map using release store after creating a filler for
// the left-over space to avoid races with the sweeper thread.
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
}
void MigrateFastToSlow(Isolate* isolate, Handle<JSObject> object,
@@ -3044,7 +3043,7 @@ void MigrateFastToSlow(Isolate* isolate, Handle<JSObject> object,
// We are storing the new map using release store after creating a filler for
// the left-over space to avoid races with the sweeper thread.
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
if (V8_ENABLE_SWISS_NAME_DICTIONARY_BOOL) {
object->SetProperties(*ord_dictionary);
@@ -3088,7 +3087,7 @@ void JSObject::MigrateToMap(Isolate* isolate, Handle<JSObject> object,
CHECK(new_map->is_dictionary_map());
// Slow-to-slow migration is trivial.
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
} else if (!new_map->is_dictionary_map()) {
MigrateFastToFast(isolate, object, new_map);
if (old_map->is_prototype_map()) {
@@ -3118,10 +3117,9 @@ void JSObject::MigrateToMap(Isolate* isolate, Handle<JSObject> object,
// When adding code here, add a DisallowGarbageCollection too.
}
-void JSObject::ForceSetPrototype(Handle<JSObject> object,
+void JSObject::ForceSetPrototype(Isolate* isolate, Handle<JSObject> object,
Handle<HeapObject> proto) {
// object.__proto__ = proto;
- Isolate* isolate = object->GetIsolate();
Handle<Map> old_map = Handle<Map>(object->map(), isolate);
Handle<Map> new_map = Map::Copy(isolate, old_map, "ForceSetPrototype");
Map::SetPrototype(isolate, new_map, proto);
@@ -3199,7 +3197,7 @@ void JSObject::AllocateStorageForMap(Handle<JSObject> object, Handle<Map> map) {
Object value = storage->get(i);
object->FastPropertyAtPut(index, value);
}
- object->synchronized_set_map(*map);
+ object->set_map(*map, kReleaseStore);
}
void JSObject::MigrateInstance(Isolate* isolate, Handle<JSObject> object) {
@@ -3489,7 +3487,7 @@ void JSObject::MigrateSlowToFast(Handle<JSObject> object,
DCHECK_LE(unused_property_fields, inobject_props);
// Transform the object.
new_map->SetInObjectUnusedPropertyFields(inobject_props);
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
object->SetProperties(ReadOnlyRoots(isolate).empty_fixed_array());
// Check that it really works.
DCHECK(object->HasFastProperties());
@@ -3608,7 +3606,7 @@ void JSObject::MigrateSlowToFast(Handle<JSObject> object,
LOG(isolate, MapEvent("SlowToFast", old_map, new_map, reason));
}
// Transform the object.
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
object->SetProperties(*fields);
DCHECK(object->IsJSObject());
@@ -4222,10 +4220,15 @@ bool JSObject::HasEnumerableElements() {
}
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
- TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ TYPED_ARRAYS(TYPED_ARRAY_CASE) {
+ size_t length = JSTypedArray::cast(object).length();
+ return length > 0;
+ }
+
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
{
- size_t length = JSTypedArray::cast(object).length();
+ size_t length = JSTypedArray::cast(object).GetLength();
return length > 0;
}
case DICTIONARY_ELEMENTS: {
@@ -4769,7 +4772,7 @@ void JSObject::SetImmutableProto(Handle<JSObject> object) {
Handle<Map> new_map =
Map::TransitionToImmutableProto(object->GetIsolate(), map);
- object->synchronized_set_map(*new_map);
+ object->set_map(*new_map, kReleaseStore);
}
void JSObject::EnsureCanContainElements(Handle<JSObject> object,
@@ -4851,9 +4854,9 @@ static ElementsKind BestFittingFastElementsKind(JSObject object) {
}
// static
-void JSObject::AddDataElement(Handle<JSObject> object, uint32_t index,
- Handle<Object> value,
- PropertyAttributes attributes) {
+Maybe<bool> JSObject::AddDataElement(Handle<JSObject> object, uint32_t index,
+ Handle<Object> value,
+ PropertyAttributes attributes) {
Isolate* isolate = object->GetIsolate();
DCHECK(object->map(isolate).is_extensible());
@@ -4896,13 +4899,15 @@ void JSObject::AddDataElement(Handle<JSObject> object, uint32_t index,
}
to = GetMoreGeneralElementsKind(kind, to);
ElementsAccessor* accessor = ElementsAccessor::ForKind(to);
- accessor->Add(object, index, value, attributes, new_capacity);
+ MAYBE_RETURN(accessor->Add(object, index, value, attributes, new_capacity),
+ Nothing<bool>());
if (object->IsJSArray(isolate) && index >= old_length) {
Handle<Object> new_length =
isolate->factory()->NewNumberFromUint(index + 1);
JSArray::cast(*object).set_length(*new_length);
}
+ return Just(true);
}
template <AllocationSiteUpdateMode update_or_check>
@@ -4969,7 +4974,15 @@ void JSObject::TransitionElementsKind(Handle<JSObject> object,
DCHECK((IsSmiElementsKind(from_kind) && IsDoubleElementsKind(to_kind)) ||
(IsDoubleElementsKind(from_kind) && IsObjectElementsKind(to_kind)));
uint32_t c = static_cast<uint32_t>(object->elements().length());
- ElementsAccessor::ForKind(to_kind)->GrowCapacityAndConvert(object, c);
+ if (ElementsAccessor::ForKind(to_kind)
+ ->GrowCapacityAndConvert(object, c)
+ .IsNothing()) {
+ // TODO(victorgomes): Temporarily forcing a fatal error here in case of
+ // overflow, until all users of TransitionElementsKind can handle
+ // exceptions.
+ FATAL("Fatal JavaScript invalid array size transitioning elements kind.");
+ UNREACHABLE();
+ }
}
}
@@ -5017,6 +5030,7 @@ int JSObject::GetFastElementsUsage() {
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
UNREACHABLE();
}
diff --git a/deps/v8/src/objects/js-objects.h b/deps/v8/src/objects/js-objects.h
index b1f22ed8f6..2e94bf17a9 100644
--- a/deps/v8/src/objects/js-objects.h
+++ b/deps/v8/src/objects/js-objects.h
@@ -440,10 +440,9 @@ class JSObject : public TorqueGeneratedJSObject<JSObject, JSReceiver> {
const char* name, Handle<Object> value,
PropertyAttributes attributes);
- V8_EXPORT_PRIVATE static void AddDataElement(Handle<JSObject> receiver,
- uint32_t index,
- Handle<Object> value,
- PropertyAttributes attributes);
+ V8_EXPORT_PRIVATE static Maybe<bool> AddDataElement(
+ Handle<JSObject> receiver, uint32_t index, Handle<Object> value,
+ PropertyAttributes attributes);
// Extend the receiver with a single fast property appeared first in the
// passed map. This also extends the property backing store if necessary.
@@ -620,7 +619,7 @@ class JSObject : public TorqueGeneratedJSObject<JSObject, JSReceiver> {
// Forces a prototype without any of the checks that the regular SetPrototype
// would do.
- static void ForceSetPrototype(Handle<JSObject> object,
+ static void ForceSetPrototype(Isolate* isolate, Handle<JSObject> object,
Handle<HeapObject> proto);
// Convert the object to use the canonical dictionary
@@ -680,11 +679,12 @@ class JSObject : public TorqueGeneratedJSObject<JSObject, JSReceiver> {
// Initializes the body starting at |start_offset|. It is responsibility of
// the caller to initialize object header. Fill the pre-allocated fields with
- // pre_allocated_value and the rest with filler_value.
+ // undefined_value and the rest with filler_map.
// Note: this call does not update write barrier, the caller is responsible
- // to ensure that |filler_value| can be collected without WB here.
+ // to ensure that |filler_map| can be collected without WB here.
inline void InitializeBody(Map map, int start_offset,
- Object pre_allocated_value, Object filler_value);
+ bool is_slack_tracking_in_progress,
+ MapWord filler_map, Object undefined_value);
// Check whether this object references another object
bool ReferencesObject(Object obj);
@@ -702,11 +702,11 @@ class JSObject : public TorqueGeneratedJSObject<JSObject, JSReceiver> {
DECL_PRINTER(JSObject)
DECL_VERIFIER(JSObject)
#ifdef OBJECT_PRINT
- bool PrintProperties(std::ostream& os); // NOLINT
- void PrintElements(std::ostream& os); // NOLINT
+ bool PrintProperties(std::ostream& os);
+ void PrintElements(std::ostream& os);
#endif
#if defined(DEBUG) || defined(OBJECT_PRINT)
- void PrintTransitions(std::ostream& os); // NOLINT
+ void PrintTransitions(std::ostream& os);
#endif
static void PrintElementsTransition(FILE* file, Handle<JSObject> object,
diff --git a/deps/v8/src/objects/js-objects.tq b/deps/v8/src/objects/js-objects.tq
index 9f5bf8554e..e21f874bbb 100644
--- a/deps/v8/src/objects/js-objects.tq
+++ b/deps/v8/src/objects/js-objects.tq
@@ -67,10 +67,15 @@ macro GetDerivedMap(implicit context: Context)(
return map;
} label SlowPath {
- return runtime::GetDerivedMap(context, target, newTarget);
+ return runtime::GetDerivedMap(context, target, newTarget, FalseConstant());
}
}
+macro GetDerivedRabGsabMap(implicit context: Context)(
+ target: JSFunction, newTarget: JSReceiver): Map {
+ return runtime::GetDerivedMap(context, target, newTarget, TrueConstant());
+}
+
macro AllocateFastOrSlowJSObjectFromMap(implicit context: Context)(map: Map):
JSObject {
let properties: EmptyFixedArray|NameDictionary|SwissNameDictionary =
diff --git a/deps/v8/src/objects/js-regexp.cc b/deps/v8/src/objects/js-regexp.cc
index b8a01418da..0ae91a5ef9 100644
--- a/deps/v8/src/objects/js-regexp.cc
+++ b/deps/v8/src/objects/js-regexp.cc
@@ -151,6 +151,27 @@ JSRegExp::Flags JSRegExp::FlagsFromString(Isolate* isolate,
}
// static
+Handle<String> JSRegExp::StringFromFlags(Isolate* isolate,
+ JSRegExp::Flags flags) {
+ // Ensure that this function is up-to-date with the supported flag options.
+ constexpr size_t kFlagCount = JSRegExp::kFlagCount;
+ STATIC_ASSERT(kFlagCount == 8);
+
+ // Translate to the lexicographically smaller string.
+ int cursor = 0;
+ char buffer[kFlagCount] = {'\0'};
+ if (flags & JSRegExp::kHasIndices) buffer[cursor++] = 'd';
+ if (flags & JSRegExp::kGlobal) buffer[cursor++] = 'g';
+ if (flags & JSRegExp::kIgnoreCase) buffer[cursor++] = 'i';
+ if (flags & JSRegExp::kLinear) buffer[cursor++] = 'l';
+ if (flags & JSRegExp::kMultiline) buffer[cursor++] = 'm';
+ if (flags & JSRegExp::kDotAll) buffer[cursor++] = 's';
+ if (flags & JSRegExp::kUnicode) buffer[cursor++] = 'u';
+ if (flags & JSRegExp::kSticky) buffer[cursor++] = 'y';
+ return isolate->factory()->NewStringFromAsciiChecked(buffer);
+}
+
+// static
MaybeHandle<JSRegExp> JSRegExp::New(Isolate* isolate, Handle<String> pattern,
Flags flags, uint32_t backtrack_limit) {
Handle<JSFunction> constructor = isolate->regexp_function();
diff --git a/deps/v8/src/objects/js-regexp.h b/deps/v8/src/objects/js-regexp.h
index c23662251a..d66912c9e8 100644
--- a/deps/v8/src/objects/js-regexp.h
+++ b/deps/v8/src/objects/js-regexp.h
@@ -90,6 +90,9 @@ class JSRegExp : public TorqueGeneratedJSRegExp<JSRegExp, JSObject> {
static Flags FlagsFromString(Isolate* isolate, Handle<String> flags,
bool* success);
+ V8_EXPORT_PRIVATE static Handle<String> StringFromFlags(Isolate* isolate,
+ Flags flags);
+
bool CanTierUp();
bool MarkedForTierUp();
void ResetLastTierUpTick();
diff --git a/deps/v8/src/objects/literal-objects.cc b/deps/v8/src/objects/literal-objects.cc
index 8dfea9f77c..e6d57de82e 100644
--- a/deps/v8/src/objects/literal-objects.cc
+++ b/deps/v8/src/objects/literal-objects.cc
@@ -37,9 +37,9 @@ inline int EncodeComputedEntry(ClassBoilerplate::ValueKind value_kind,
return flags;
}
-template <typename LocalIsolate>
+template <typename IsolateT>
void AddToDescriptorArrayTemplate(
- LocalIsolate* isolate, Handle<DescriptorArray> descriptor_array_template,
+ IsolateT* isolate, Handle<DescriptorArray> descriptor_array_template,
Handle<Name> name, ClassBoilerplate::ValueKind value_kind,
Handle<Object> value) {
InternalIndex entry = descriptor_array_template->Search(
@@ -90,18 +90,18 @@ void AddToDescriptorArrayTemplate(
}
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<NameDictionary> DictionaryAddNoUpdateNextEnumerationIndex(
- LocalIsolate* isolate, Handle<NameDictionary> dictionary, Handle<Name> name,
+ IsolateT* isolate, Handle<NameDictionary> dictionary, Handle<Name> name,
Handle<Object> value, PropertyDetails details,
InternalIndex* entry_out = nullptr) {
return NameDictionary::AddNoUpdateNextEnumerationIndex(
isolate, dictionary, name, value, details, entry_out);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SwissNameDictionary> DictionaryAddNoUpdateNextEnumerationIndex(
- LocalIsolate* isolate, Handle<SwissNameDictionary> dictionary,
+ IsolateT* isolate, Handle<SwissNameDictionary> dictionary,
Handle<Name> name, Handle<Object> value, PropertyDetails details,
InternalIndex* entry_out = nullptr) {
// SwissNameDictionary does not maintain the enumeration order in property
@@ -109,10 +109,10 @@ Handle<SwissNameDictionary> DictionaryAddNoUpdateNextEnumerationIndex(
return SwissNameDictionary::Add(isolate, dictionary, name, value, details);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<NumberDictionary> DictionaryAddNoUpdateNextEnumerationIndex(
- LocalIsolate* isolate, Handle<NumberDictionary> dictionary,
- uint32_t element, Handle<Object> value, PropertyDetails details,
+ IsolateT* isolate, Handle<NumberDictionary> dictionary, uint32_t element,
+ Handle<Object> value, PropertyDetails details,
InternalIndex* entry_out = nullptr) {
// NumberDictionary does not maintain the enumeration order, so it's
// a normal Add().
@@ -149,10 +149,9 @@ inline int GetExistingValueIndex(Object value) {
return value.IsSmi() ? Smi::ToInt(value) : kAccessorNotDefined;
}
-template <typename LocalIsolate, typename Dictionary, typename Key>
-void AddToDictionaryTemplate(LocalIsolate* isolate,
- Handle<Dictionary> dictionary, Key key,
- int key_index,
+template <typename IsolateT, typename Dictionary, typename Key>
+void AddToDictionaryTemplate(IsolateT* isolate, Handle<Dictionary> dictionary,
+ Key key, int key_index,
ClassBoilerplate::ValueKind value_kind,
Smi value) {
InternalIndex entry = dictionary->FindEntry(isolate, key);
@@ -372,7 +371,7 @@ void AddToDictionaryTemplate(LocalIsolate* isolate,
// Helper class that eases building of a properties, elements and computed
// properties templates.
-template <typename LocalIsolate>
+template <typename IsolateT>
class ObjectDescriptor {
public:
void IncComputedCount() { ++computed_count_; }
@@ -401,7 +400,7 @@ class ObjectDescriptor {
return computed_properties_;
}
- void CreateTemplates(LocalIsolate* isolate) {
+ void CreateTemplates(IsolateT* isolate) {
auto* factory = isolate->factory();
descriptor_array_template_ = factory->empty_descriptor_array();
if (V8_ENABLE_SWISS_NAME_DICTIONARY_BOOL) {
@@ -443,8 +442,8 @@ class ObjectDescriptor {
temp_handle_ = handle(Smi::zero(), isolate);
}
- void AddConstant(LocalIsolate* isolate, Handle<Name> name,
- Handle<Object> value, PropertyAttributes attribs) {
+ void AddConstant(IsolateT* isolate, Handle<Name> name, Handle<Object> value,
+ PropertyAttributes attribs) {
bool is_accessor = value->IsAccessorInfo();
DCHECK(!value->IsAccessorPair());
if (HasDictionaryProperties()) {
@@ -473,7 +472,7 @@ class ObjectDescriptor {
}
}
- void AddNamedProperty(LocalIsolate* isolate, Handle<Name> name,
+ void AddNamedProperty(IsolateT* isolate, Handle<Name> name,
ClassBoilerplate::ValueKind value_kind,
int value_index) {
Smi value = Smi::FromInt(value_index);
@@ -494,7 +493,7 @@ class ObjectDescriptor {
}
}
- void AddIndexedProperty(LocalIsolate* isolate, uint32_t element,
+ void AddIndexedProperty(IsolateT* isolate, uint32_t element,
ClassBoilerplate::ValueKind value_kind,
int value_index) {
Smi value = Smi::FromInt(value_index);
@@ -516,7 +515,7 @@ class ObjectDescriptor {
next_enumeration_index_ = current_index + 1;
}
- void Finalize(LocalIsolate* isolate) {
+ void Finalize(IsolateT* isolate) {
if (HasDictionaryProperties()) {
DCHECK_EQ(current_computed_index_, computed_properties_->length());
if (!V8_ENABLE_SWISS_NAME_DICTIONARY_BOOL) {
@@ -555,9 +554,9 @@ class ObjectDescriptor {
Handle<Object> temp_handle_;
};
-template <typename LocalIsolate, typename PropertyDict>
+template <typename IsolateT, typename PropertyDict>
void ClassBoilerplate::AddToPropertiesTemplate(
- LocalIsolate* isolate, Handle<PropertyDict> dictionary, Handle<Name> name,
+ IsolateT* isolate, Handle<PropertyDict> dictionary, Handle<Name> name,
int key_index, ClassBoilerplate::ValueKind value_kind, Smi value) {
AddToDictionaryTemplate(isolate, dictionary, name, key_index, value_kind,
value);
@@ -572,9 +571,9 @@ template void ClassBoilerplate::AddToPropertiesTemplate(
Isolate* isolate, Handle<SwissNameDictionary> dictionary, Handle<Name> name,
int key_index, ClassBoilerplate::ValueKind value_kind, Smi value);
-template <typename LocalIsolate>
+template <typename IsolateT>
void ClassBoilerplate::AddToElementsTemplate(
- LocalIsolate* isolate, Handle<NumberDictionary> dictionary, uint32_t key,
+ IsolateT* isolate, Handle<NumberDictionary> dictionary, uint32_t key,
int key_index, ClassBoilerplate::ValueKind value_kind, Smi value) {
AddToDictionaryTemplate(isolate, dictionary, key, key_index, value_kind,
value);
@@ -586,21 +585,20 @@ template void ClassBoilerplate::AddToElementsTemplate(
LocalIsolate* isolate, Handle<NumberDictionary> dictionary, uint32_t key,
int key_index, ClassBoilerplate::ValueKind value_kind, Smi value);
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<ClassBoilerplate> ClassBoilerplate::BuildClassBoilerplate(
- LocalIsolate* isolate, ClassLiteral* expr) {
+ IsolateT* isolate, ClassLiteral* expr) {
// Create a non-caching handle scope to ensure that the temporary handle used
// by ObjectDescriptor for passing Smis around does not corrupt handle cache
// in CanonicalHandleScope.
- typename LocalIsolate::HandleScopeType scope(isolate);
+ typename IsolateT::HandleScopeType scope(isolate);
auto* factory = isolate->factory();
- ObjectDescriptor<LocalIsolate> static_desc(kMinimumClassPropertiesCount);
- ObjectDescriptor<LocalIsolate> instance_desc(
- kMinimumPrototypePropertiesCount);
+ ObjectDescriptor<IsolateT> static_desc(kMinimumClassPropertiesCount);
+ ObjectDescriptor<IsolateT> instance_desc(kMinimumPrototypePropertiesCount);
for (int i = 0; i < expr->public_members()->length(); i++) {
ClassLiteral::Property* property = expr->public_members()->at(i);
- ObjectDescriptor<LocalIsolate>& desc =
+ ObjectDescriptor<IsolateT>& desc =
property->is_static() ? static_desc : instance_desc;
if (property->is_computed_name()) {
if (property->kind() != ClassLiteral::Property::FIELD) {
@@ -678,7 +676,7 @@ Handle<ClassBoilerplate> ClassBoilerplate::BuildClassBoilerplate(
continue;
}
- ObjectDescriptor<LocalIsolate>& desc =
+ ObjectDescriptor<IsolateT>& desc =
property->is_static() ? static_desc : instance_desc;
if (property->is_computed_name()) {
int computed_name_index = dynamic_argument_index;
diff --git a/deps/v8/src/objects/literal-objects.h b/deps/v8/src/objects/literal-objects.h
index 3377bcd4c2..a20347c4a7 100644
--- a/deps/v8/src/objects/literal-objects.h
+++ b/deps/v8/src/objects/literal-objects.h
@@ -122,20 +122,20 @@ class ClassBoilerplate : public FixedArray {
DECL_ACCESSORS(instance_elements_template, Object)
DECL_ACCESSORS(instance_computed_properties, FixedArray)
- template <typename LocalIsolate, typename Dictionary>
- static void AddToPropertiesTemplate(LocalIsolate* isolate,
+ template <typename IsolateT, typename Dictionary>
+ static void AddToPropertiesTemplate(IsolateT* isolate,
Handle<Dictionary> dictionary,
Handle<Name> name, int key_index,
ValueKind value_kind, Smi value);
- template <typename LocalIsolate>
- static void AddToElementsTemplate(LocalIsolate* isolate,
+ template <typename IsolateT>
+ static void AddToElementsTemplate(IsolateT* isolate,
Handle<NumberDictionary> dictionary,
uint32_t key, int key_index,
ValueKind value_kind, Smi value);
- template <typename LocalIsolate>
- static Handle<ClassBoilerplate> BuildClassBoilerplate(LocalIsolate* isolate,
+ template <typename IsolateT>
+ static Handle<ClassBoilerplate> BuildClassBoilerplate(IsolateT* isolate,
ClassLiteral* expr);
enum {
diff --git a/deps/v8/src/objects/lookup-inl.h b/deps/v8/src/objects/lookup-inl.h
index 5f2fbd4cc2..84a1627985 100644
--- a/deps/v8/src/objects/lookup-inl.h
+++ b/deps/v8/src/objects/lookup-inl.h
@@ -169,7 +169,8 @@ Handle<Name> LookupIterator::GetName() {
bool LookupIterator::IsElement(JSReceiver object) const {
return index_ <= JSObject::kMaxElementIndex ||
- (index_ != kInvalidIndex && object.map().has_typed_array_elements());
+ (index_ != kInvalidIndex &&
+ object.map().has_typed_array_or_rab_gsab_typed_array_elements());
}
bool LookupIterator::is_dictionary_holder() const {
@@ -209,7 +210,7 @@ bool LookupIterator::IsCacheableTransition() {
// static
void LookupIterator::UpdateProtector(Isolate* isolate, Handle<Object> receiver,
Handle<Name> name) {
- RuntimeCallTimerScope scope(isolate, RuntimeCallCounterId::kUpdateProtector);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kUpdateProtector);
// This list must be kept in sync with
// CodeStubAssembler::CheckForAssociatedProtector!
diff --git a/deps/v8/src/objects/lookup.cc b/deps/v8/src/objects/lookup.cc
index d81d005933..8f8c6081df 100644
--- a/deps/v8/src/objects/lookup.cc
+++ b/deps/v8/src/objects/lookup.cc
@@ -15,6 +15,7 @@
#include "src/objects/field-type.h"
#include "src/objects/hash-table-inl.h"
#include "src/objects/heap-number-inl.h"
+#include "src/objects/map-updater.h"
#include "src/objects/ordered-hash-table.h"
#include "src/objects/struct-inl.h"
@@ -471,7 +472,7 @@ void LookupIterator::ReconfigureDataProperty(Handle<Object> value,
Handle<Map> old_map(holder_obj->map(isolate_), isolate_);
// Force mutable to avoid changing constant value by reconfiguring
// kData -> kAccessor -> kData.
- Handle<Map> new_map = Map::ReconfigureExistingProperty(
+ Handle<Map> new_map = MapUpdater::ReconfigureExistingProperty(
isolate_, old_map, descriptor_number(), i::kData, attributes,
PropertyConstness::kMutable);
if (!new_map->is_dictionary_map()) {
@@ -487,11 +488,15 @@ void LookupIterator::ReconfigureDataProperty(Handle<Object> value,
if (!IsElement(*holder) && !holder_obj->HasFastProperties(isolate_)) {
if (holder_obj->map(isolate_).is_prototype_map() &&
- (property_details_.attributes() & READ_ONLY) == 0 &&
- (attributes & READ_ONLY) != 0) {
+ (((property_details_.attributes() & READ_ONLY) == 0 &&
+ (attributes & READ_ONLY) != 0) ||
+ (property_details_.attributes() & DONT_ENUM) !=
+ (attributes & DONT_ENUM))) {
// Invalidate prototype validity cell when a property is reconfigured
// from writable to read-only as this may invalidate transitioning store
// IC handlers.
+ // Invalidate prototype validity cell when a property changes
+ // enumerability to clear the prototype chain enum cache.
JSObject::InvalidatePrototypeChains(holder->map(isolate_));
}
if (holder_obj->IsJSGlobalObject(isolate_)) {
@@ -688,10 +693,10 @@ void LookupIterator::Delete() {
} else {
DCHECK(!name()->IsPrivateName(isolate_));
bool is_prototype_map = holder->map(isolate_).is_prototype_map();
- RuntimeCallTimerScope stats_scope(
- isolate_, is_prototype_map
- ? RuntimeCallCounterId::kPrototypeObject_DeleteProperty
- : RuntimeCallCounterId::kObject_DeleteProperty);
+ RCS_SCOPE(isolate_,
+ is_prototype_map
+ ? RuntimeCallCounterId::kPrototypeObject_DeleteProperty
+ : RuntimeCallCounterId::kObject_DeleteProperty);
PropertyNormalizationMode mode =
is_prototype_map ? KEEP_INOBJECT_PROPERTIES : CLEAR_INOBJECT_PROPERTIES;
@@ -1026,7 +1031,9 @@ void LookupIterator::WriteDataValue(Handle<Object> value,
GlobalDictionary dictionary =
JSGlobalObject::cast(*holder).global_dictionary(isolate_, kAcquireLoad);
PropertyCell cell = dictionary.CellAt(isolate_, dictionary_entry());
- DCHECK_EQ(cell.value(), *value);
+ DCHECK(cell.value() == *value ||
+ (cell.value().IsString() && value->IsString() &&
+ String::cast(cell.value()).Equals(String::cast(*value))));
#endif // DEBUG
} else {
DCHECK_IMPLIES(holder->IsJSProxy(isolate_), name()->IsPrivate(isolate_));
@@ -1247,13 +1254,13 @@ bool LookupIterator::LookupCachedProperty(Handle<AccessorPair> accessor_pair) {
DCHECK_EQ(state(), LookupIterator::ACCESSOR);
DCHECK(GetAccessors()->IsAccessorPair(isolate_));
- Handle<Object> getter(accessor_pair->getter(isolate_), isolate());
- MaybeHandle<Name> maybe_name =
- FunctionTemplateInfo::TryGetCachedPropertyName(isolate(), getter);
- if (maybe_name.is_null()) return false;
+ base::Optional<Name> maybe_name =
+ FunctionTemplateInfo::TryGetCachedPropertyName(
+ isolate(), accessor_pair->getter(isolate_));
+ if (!maybe_name.has_value()) return false;
// We have found a cached property! Modify the iterator accordingly.
- name_ = maybe_name.ToHandleChecked();
+ name_ = handle(maybe_name.value(), isolate_);
Restart();
CHECK_EQ(state(), LookupIterator::DATA);
return true;
@@ -1357,7 +1364,7 @@ ConcurrentLookupIterator::TryGetOwnConstantElement(
// The access guard below protects only internalized string accesses.
// TODO(jgruber): Support other string kinds.
- Map wrapped_string_map = wrapped_string.synchronized_map(isolate);
+ Map wrapped_string_map = wrapped_string.map(isolate, kAcquireLoad);
if (!InstanceTypeChecker::IsInternalizedString(
wrapped_string_map.instance_type())) {
return kGaveUp;
diff --git a/deps/v8/src/objects/map-inl.h b/deps/v8/src/objects/map-inl.h
index eb28f0b111..96626f28eb 100644
--- a/deps/v8/src/objects/map-inl.h
+++ b/deps/v8/src/objects/map-inl.h
@@ -90,19 +90,21 @@ BIT_FIELD_ACCESSORS(Map, bit_field2, is_immutable_proto,
Map::Bits2::IsImmutablePrototypeBit)
// |bit_field3| fields.
-BIT_FIELD_ACCESSORS(Map, bit_field3, owns_descriptors,
+BIT_FIELD_ACCESSORS(Map, relaxed_bit_field3, owns_descriptors,
Map::Bits3::OwnsDescriptorsBit)
-BIT_FIELD_ACCESSORS(Map, bit_field3, is_deprecated, Map::Bits3::IsDeprecatedBit)
-BIT_FIELD_ACCESSORS(Map, bit_field3, is_in_retained_map_list,
+BIT_FIELD_ACCESSORS(Map, release_acquire_bit_field3, is_deprecated,
+ Map::Bits3::IsDeprecatedBit)
+BIT_FIELD_ACCESSORS(Map, relaxed_bit_field3, is_in_retained_map_list,
Map::Bits3::IsInRetainedMapListBit)
-BIT_FIELD_ACCESSORS(Map, bit_field3, is_prototype_map,
+BIT_FIELD_ACCESSORS(Map, release_acquire_bit_field3, is_prototype_map,
Map::Bits3::IsPrototypeMapBit)
-BIT_FIELD_ACCESSORS(Map, bit_field3, is_migration_target,
+BIT_FIELD_ACCESSORS(Map, relaxed_bit_field3, is_migration_target,
Map::Bits3::IsMigrationTargetBit)
-BIT_FIELD_ACCESSORS(Map, bit_field3, is_extensible, Map::Bits3::IsExtensibleBit)
+BIT_FIELD_ACCESSORS2(Map, relaxed_bit_field3, bit_field3, is_extensible,
+ Map::Bits3::IsExtensibleBit)
BIT_FIELD_ACCESSORS(Map, bit_field3, may_have_interesting_symbols,
Map::Bits3::MayHaveInterestingSymbolsBit)
-BIT_FIELD_ACCESSORS(Map, bit_field3, construction_counter,
+BIT_FIELD_ACCESSORS(Map, relaxed_bit_field3, construction_counter,
Map::Bits3::ConstructionCounterBits)
DEF_GETTER(Map, GetNamedInterceptor, InterceptorInfo) {
@@ -117,11 +119,18 @@ DEF_GETTER(Map, GetIndexedInterceptor, InterceptorInfo) {
return InterceptorInfo::cast(info.GetIndexedPropertyHandler(cage_base));
}
+// static
bool Map::IsMostGeneralFieldType(Representation representation,
FieldType field_type) {
return !representation.IsHeapObject() || field_type.IsAny();
}
+// static
+bool Map::FieldTypeIsCleared(Representation rep, FieldType type) {
+ return type.IsNone() && rep.IsHeapObject();
+}
+
+// static
bool Map::CanHaveFastTransitionableElementsKind(InstanceType instance_type) {
return instance_type == JS_ARRAY_TYPE ||
instance_type == JS_PRIMITIVE_WRAPPER_TYPE ||
@@ -196,14 +205,15 @@ InternalIndex Map::LastAdded() const {
}
int Map::NumberOfOwnDescriptors() const {
- return Bits3::NumberOfOwnDescriptorsBits::decode(bit_field3());
+ return Bits3::NumberOfOwnDescriptorsBits::decode(
+ release_acquire_bit_field3());
}
void Map::SetNumberOfOwnDescriptors(int number) {
DCHECK_LE(number, instance_descriptors().number_of_descriptors());
CHECK_LE(static_cast<unsigned>(number),
static_cast<unsigned>(kMaxNumberOfDescriptors));
- set_bit_field3(
+ set_release_acquire_bit_field3(
Bits3::NumberOfOwnDescriptorsBits::update(bit_field3(), number));
}
@@ -221,7 +231,7 @@ void Map::SetEnumLength(int length) {
CHECK_LE(static_cast<unsigned>(length),
static_cast<unsigned>(kMaxNumberOfDescriptors));
}
- set_bit_field3(Bits3::EnumLengthBits::update(bit_field3(), length));
+ set_relaxed_bit_field3(Bits3::EnumLengthBits::update(bit_field3(), length));
}
FixedArrayBase Map::GetInitialElements() const {
@@ -229,7 +239,7 @@ FixedArrayBase Map::GetInitialElements() const {
if (has_fast_elements() || has_fast_string_wrapper_elements() ||
has_any_nonextensible_elements()) {
result = GetReadOnlyRoots().empty_fixed_array();
- } else if (has_typed_array_elements()) {
+ } else if (has_typed_array_or_rab_gsab_typed_array_elements()) {
result = GetReadOnlyRoots().empty_byte_array();
} else if (has_dictionary_elements()) {
result = GetReadOnlyRoots().empty_slow_element_dictionary();
@@ -271,16 +281,28 @@ void Map::set_instance_size(int value) {
}
int Map::inobject_properties_start_or_constructor_function_index() const {
- return RELAXED_READ_BYTE_FIELD(
- *this, kInObjectPropertiesStartOrConstructorFunctionIndexOffset);
+ if (V8_CONCURRENT_MARKING_BOOL) {
+ // TODO(solanes, v8:7790, v8:11353): Make this and the setter non-atomic
+ // when TSAN sees the map's store synchronization.
+ return RELAXED_READ_BYTE_FIELD(
+ *this, kInObjectPropertiesStartOrConstructorFunctionIndexOffset);
+ } else {
+ return ReadField<byte>(
+ kInObjectPropertiesStartOrConstructorFunctionIndexOffset);
+ }
}
void Map::set_inobject_properties_start_or_constructor_function_index(
int value) {
CHECK_LT(static_cast<unsigned>(value), 256);
- RELAXED_WRITE_BYTE_FIELD(
- *this, kInObjectPropertiesStartOrConstructorFunctionIndexOffset,
- static_cast<byte>(value));
+ if (V8_CONCURRENT_MARKING_BOOL) {
+ RELAXED_WRITE_BYTE_FIELD(
+ *this, kInObjectPropertiesStartOrConstructorFunctionIndexOffset,
+ static_cast<byte>(value));
+ } else {
+ WriteField<byte>(kInObjectPropertiesStartOrConstructorFunctionIndexOffset,
+ static_cast<byte>(value));
+ }
}
int Map::GetInObjectPropertiesStartInWords() const {
@@ -318,15 +340,23 @@ Handle<Map> Map::AddMissingTransitionsForTesting(
return AddMissingTransitions(isolate, split_map, descriptors);
}
-// TODO(solanes, v8:7790, v8:11353): Make the instance_type accessors non-atomic
-// when TSAN sees the map's store synchronization.
InstanceType Map::instance_type() const {
- return static_cast<InstanceType>(
- RELAXED_READ_UINT16_FIELD(*this, kInstanceTypeOffset));
+ if (V8_CONCURRENT_MARKING_BOOL) {
+ // TODO(solanes, v8:7790, v8:11353): Make this and the setter non-atomic
+ // when TSAN sees the map's store synchronization.
+ return static_cast<InstanceType>(
+ RELAXED_READ_UINT16_FIELD(*this, kInstanceTypeOffset));
+ } else {
+ return static_cast<InstanceType>(ReadField<uint16_t>(kInstanceTypeOffset));
+ }
}
void Map::set_instance_type(InstanceType value) {
- RELAXED_WRITE_UINT16_FIELD(*this, kInstanceTypeOffset, value);
+ if (V8_CONCURRENT_MARKING_BOOL) {
+ RELAXED_WRITE_UINT16_FIELD(*this, kInstanceTypeOffset, value);
+ } else {
+ WriteField<uint16_t>(kInstanceTypeOffset, value);
+ }
}
int Map::UnusedPropertyFields() const {
@@ -451,7 +481,13 @@ void Map::AccountAddedOutOfObjectPropertyField(int unused_in_property_array) {
byte Map::bit_field() const { return ReadField<byte>(kBitFieldOffset); }
void Map::set_bit_field(byte value) {
- WriteField<byte>(kBitFieldOffset, value);
+ if (V8_CONCURRENT_MARKING_BOOL) {
+ // TODO(solanes, v8:7790, v8:11353): Make this non-atomic when TSAN sees the
+ // map's store synchronization.
+ set_relaxed_bit_field(value);
+ } else {
+ WriteField<byte>(kBitFieldOffset, value);
+ }
}
byte Map::relaxed_bit_field() const {
@@ -468,6 +504,40 @@ void Map::set_bit_field2(byte value) {
WriteField<byte>(kBitField2Offset, value);
}
+uint32_t Map::bit_field3() const {
+ if (V8_CONCURRENT_MARKING_BOOL) {
+ // TODO(solanes, v8:7790, v8:11353): Make this and the setter non-atomic
+ // when TSAN sees the map's store synchronization.
+ return relaxed_bit_field3();
+ } else {
+ return ReadField<uint32_t>(kBitField3Offset);
+ }
+}
+
+void Map::set_bit_field3(uint32_t value) {
+ if (V8_CONCURRENT_MARKING_BOOL) {
+ set_relaxed_bit_field3(value);
+ } else {
+ WriteField<uint32_t>(kBitField3Offset, value);
+ }
+}
+
+uint32_t Map::relaxed_bit_field3() const {
+ return RELAXED_READ_UINT32_FIELD(*this, kBitField3Offset);
+}
+
+void Map::set_relaxed_bit_field3(uint32_t value) {
+ RELAXED_WRITE_UINT32_FIELD(*this, kBitField3Offset, value);
+}
+
+uint32_t Map::release_acquire_bit_field3() const {
+ return ACQUIRE_READ_UINT32_FIELD(*this, kBitField3Offset);
+}
+
+void Map::set_release_acquire_bit_field3(uint32_t value) {
+ RELEASE_WRITE_UINT32_FIELD(*this, kBitField3Offset, value);
+}
+
bool Map::is_abandoned_prototype_map() const {
return is_prototype_map() && !owns_descriptors();
}
@@ -523,6 +593,14 @@ bool Map::has_typed_array_elements() const {
return IsTypedArrayElementsKind(elements_kind());
}
+bool Map::has_rab_gsab_typed_array_elements() const {
+ return IsRabGsabTypedArrayElementsKind(elements_kind());
+}
+
+bool Map::has_typed_array_or_rab_gsab_typed_array_elements() const {
+ return IsTypedArrayOrRabGsabTypedArrayElementsKind(elements_kind());
+}
+
bool Map::has_dictionary_elements() const {
return IsDictionaryElementsKind(elements_kind());
}
@@ -551,15 +629,16 @@ void Map::set_is_dictionary_map(bool value) {
}
bool Map::is_dictionary_map() const {
- return Bits3::IsDictionaryMapBit::decode(bit_field3());
+ return Bits3::IsDictionaryMapBit::decode(relaxed_bit_field3());
}
void Map::mark_unstable() {
- set_bit_field3(Bits3::IsUnstableBit::update(bit_field3(), true));
+ set_release_acquire_bit_field3(
+ Bits3::IsUnstableBit::update(bit_field3(), true));
}
bool Map::is_stable() const {
- return !Bits3::IsUnstableBit::decode(bit_field3());
+ return !Bits3::IsUnstableBit::decode(release_acquire_bit_field3());
}
bool Map::CanBeDeprecated() const {
@@ -616,14 +695,6 @@ void Map::InitializeDescriptors(Isolate* isolate, DescriptorArray descriptors) {
descriptors.number_of_descriptors());
}
-void Map::set_bit_field3(uint32_t bits) {
- RELEASE_WRITE_UINT32_FIELD(*this, kBitField3Offset, bits);
-}
-
-uint32_t Map::bit_field3() const {
- return ACQUIRE_READ_UINT32_FIELD(*this, kBitField3Offset);
-}
-
void Map::clear_padding() {
if (FIELD_SIZE(kOptionalPaddingOffset) == 0) return;
DCHECK_EQ(4, FIELD_SIZE(kOptionalPaddingOffset));
@@ -698,6 +769,9 @@ ACCESSORS_CHECKED2(Map, constructor_or_back_pointer, Object,
ACCESSORS_CHECKED(Map, native_context, NativeContext,
kConstructorOrBackPointerOrNativeContextOffset,
IsContextMap())
+ACCESSORS_CHECKED(Map, native_context_or_null, Object,
+ kConstructorOrBackPointerOrNativeContextOffset,
+ (value.IsNull() || value.IsNativeContext()) && IsContextMap())
#if V8_ENABLE_WEBASSEMBLY
ACCESSORS_CHECKED(Map, wasm_type_info, WasmTypeInfo,
kConstructorOrBackPointerOrNativeContextOffset,
diff --git a/deps/v8/src/objects/map-updater.cc b/deps/v8/src/objects/map-updater.cc
index 8ab15451a7..feb060fa51 100644
--- a/deps/v8/src/objects/map-updater.cc
+++ b/deps/v8/src/objects/map-updater.cc
@@ -4,6 +4,10 @@
#include "src/objects/map-updater.h"
+#include <queue>
+
+#include "src/base/platform/mutex.h"
+#include "src/execution/frames.h"
#include "src/execution/isolate.h"
#include "src/handles/handles.h"
#include "src/objects/field-type.h"
@@ -23,6 +27,66 @@ inline bool EqualImmutableValues(Object obj1, Object obj2) {
return false;
}
+V8_WARN_UNUSED_RESULT Handle<FieldType> GeneralizeFieldType(
+ Representation rep1, Handle<FieldType> type1, Representation rep2,
+ Handle<FieldType> type2, Isolate* isolate) {
+ // Cleared field types need special treatment. They represent lost knowledge,
+ // so we must be conservative, so their generalization with any other type
+ // is "Any".
+ if (Map::FieldTypeIsCleared(rep1, *type1) ||
+ Map::FieldTypeIsCleared(rep2, *type2)) {
+ return FieldType::Any(isolate);
+ }
+ if (type1->NowIs(type2)) return type2;
+ if (type2->NowIs(type1)) return type1;
+ return FieldType::Any(isolate);
+}
+
+void PrintGeneralization(
+ Isolate* isolate, Handle<Map> map, FILE* file, const char* reason,
+ InternalIndex modify_index, int split, int descriptors,
+ bool descriptor_to_field, Representation old_representation,
+ Representation new_representation, PropertyConstness old_constness,
+ PropertyConstness new_constness, MaybeHandle<FieldType> old_field_type,
+ MaybeHandle<Object> old_value, MaybeHandle<FieldType> new_field_type,
+ MaybeHandle<Object> new_value) {
+ OFStream os(file);
+ os << "[generalizing]";
+ Name name = map->instance_descriptors(isolate).GetKey(modify_index);
+ if (name.IsString()) {
+ String::cast(name).PrintOn(file);
+ } else {
+ os << "{symbol " << reinterpret_cast<void*>(name.ptr()) << "}";
+ }
+ os << ":";
+ if (descriptor_to_field) {
+ os << "c";
+ } else {
+ os << old_representation.Mnemonic() << "{";
+ if (old_field_type.is_null()) {
+ os << Brief(*(old_value.ToHandleChecked()));
+ } else {
+ old_field_type.ToHandleChecked()->PrintTo(os);
+ }
+ os << ";" << old_constness << "}";
+ }
+ os << "->" << new_representation.Mnemonic() << "{";
+ if (new_field_type.is_null()) {
+ os << Brief(*(new_value.ToHandleChecked()));
+ } else {
+ new_field_type.ToHandleChecked()->PrintTo(os);
+ }
+ os << ";" << new_constness << "} (";
+ if (strlen(reason) > 0) {
+ os << reason;
+ } else {
+ os << "+" << (descriptors - split) << " maps";
+ }
+ os << ") [";
+ JavaScriptFrame::PrintTop(isolate, file, false, true);
+ os << "]\n";
+}
+
} // namespace
MapUpdater::MapUpdater(Isolate* isolate, Handle<Map> old_map)
@@ -142,8 +206,8 @@ Handle<Map> MapUpdater::ReconfigureToDataField(InternalIndex descriptor,
old_details.location(), new_representation_);
new_field_type_ =
- Map::GeneralizeFieldType(old_representation, old_field_type,
- new_representation_, field_type, isolate_);
+ GeneralizeFieldType(old_representation, old_field_type,
+ new_representation_, field_type, isolate_);
} else {
// We don't know if this is a first property kind reconfiguration
// and we don't know which value was in this property previously
@@ -222,8 +286,8 @@ void MapUpdater::GeneralizeField(Handle<Map> map, InternalIndex modify_index,
PropertyConstness new_constness,
Representation new_representation,
Handle<FieldType> new_field_type) {
- Map::GeneralizeField(isolate_, map, modify_index, new_constness,
- new_representation, new_field_type);
+ GeneralizeField(isolate_, map, modify_index, new_constness,
+ new_representation, new_field_type);
DCHECK(*old_descriptors_ == old_map_->instance_descriptors(isolate_) ||
*old_descriptors_ ==
@@ -237,6 +301,23 @@ MapUpdater::State MapUpdater::Normalize(const char* reason) {
return state_; // Done.
}
+void MapUpdater::ShrinkInstanceSize(base::SharedMutex* map_updater_access,
+ Map map, int slack) {
+ DCHECK_GE(slack, 0);
+#ifdef DEBUG
+ int old_visitor_id = Map::GetVisitorId(map);
+ int new_unused = map.UnusedPropertyFields() - slack;
+#endif
+
+ {
+ base::SharedMutexGuard<base::kExclusive> mutex_guard(map_updater_access);
+ map.set_instance_size(map.InstanceSizeFromSlack(slack));
+ }
+ map.set_construction_counter(Map::kNoSlackTracking);
+ DCHECK_EQ(old_visitor_id, Map::GetVisitorId(map));
+ DCHECK_EQ(new_unused, map.UnusedPropertyFields());
+}
+
MapUpdater::State MapUpdater::TryReconfigureToDataFieldInplace() {
// Updating deprecated maps in-place doesn't make sense.
if (old_map_->is_deprecated()) return state_;
@@ -262,9 +343,9 @@ MapUpdater::State MapUpdater::TryReconfigureToDataFieldInplace() {
DCHECK_EQ(new_attributes_, old_details.attributes());
DCHECK_EQ(kField, old_details.location());
if (FLAG_trace_generalization) {
- old_map_->PrintGeneralization(
- isolate_, stdout, "uninitialized field", modified_descriptor_, old_nof_,
- old_nof_, false, old_representation, new_representation_,
+ PrintGeneralization(
+ isolate_, old_map_, stdout, "uninitialized field", modified_descriptor_,
+ old_nof_, old_nof_, false, old_representation, new_representation_,
old_details.constness(), new_constness_,
handle(old_descriptors_->GetFieldType(modified_descriptor_), isolate_),
MaybeHandle<Object>(), new_field_type_, MaybeHandle<Object>());
@@ -615,9 +696,9 @@ Handle<DescriptorArray> MapUpdater::BuildDescriptorArray() {
GetOrComputeFieldType(target_descriptors, i,
target_details.location(), next_representation);
- Handle<FieldType> next_field_type = Map::GeneralizeFieldType(
- old_details.representation(), old_field_type, next_representation,
- target_field_type, isolate_);
+ Handle<FieldType> next_field_type =
+ GeneralizeFieldType(old_details.representation(), old_field_type,
+ next_representation, target_field_type, isolate_);
Map::GeneralizeIfCanHaveTransitionableFastElementsKind(
isolate_, instance_type, &next_representation, &next_field_type);
@@ -795,8 +876,9 @@ MapUpdater::State MapUpdater::ConstructNewMap() {
isolate_);
}
- old_map_->PrintGeneralization(
- isolate_, stdout, "", modified_descriptor_, split_nof, old_nof_,
+ PrintGeneralization(
+ isolate_, old_map_, stdout, "", modified_descriptor_, split_nof,
+ old_nof_,
old_details.location() == kDescriptor && new_location_ == kField,
old_details.representation(), new_details.representation(),
old_details.constness(), new_details.constness(), old_field_type,
@@ -840,5 +922,179 @@ MapUpdater::State MapUpdater::ConstructNewMapWithIntegrityLevelTransition() {
return state_;
}
+namespace {
+
+void PrintReconfiguration(Isolate* isolate, Handle<Map> map, FILE* file,
+ InternalIndex modify_index, PropertyKind kind,
+ PropertyAttributes attributes) {
+ OFStream os(file);
+ os << "[reconfiguring]";
+ Name name = map->instance_descriptors(isolate).GetKey(modify_index);
+ if (name.IsString()) {
+ String::cast(name).PrintOn(file);
+ } else {
+ os << "{symbol " << reinterpret_cast<void*>(name.ptr()) << "}";
+ }
+ os << ": " << (kind == kData ? "kData" : "ACCESSORS") << ", attrs: ";
+ os << attributes << " [";
+ JavaScriptFrame::PrintTop(isolate, file, false, true);
+ os << "]\n";
+}
+
+} // namespace
+
+// static
+Handle<Map> MapUpdater::ReconfigureExistingProperty(
+ Isolate* isolate, Handle<Map> map, InternalIndex descriptor,
+ PropertyKind kind, PropertyAttributes attributes,
+ PropertyConstness constness) {
+ // Dictionaries have to be reconfigured in-place.
+ DCHECK(!map->is_dictionary_map());
+ DCHECK_EQ(kData, kind); // Only kData case is supported so far.
+
+ if (!map->GetBackPointer().IsMap()) {
+ // There is no benefit from reconstructing transition tree for maps without
+ // back pointers, normalize and try to hit the map cache instead.
+ return Map::Normalize(isolate, map, CLEAR_INOBJECT_PROPERTIES,
+ "Normalize_AttributesMismatchProtoMap");
+ }
+
+ if (FLAG_trace_generalization) {
+ PrintReconfiguration(isolate, map, stdout, descriptor, kind, attributes);
+ }
+
+ return MapUpdater{isolate, map}.ReconfigureToDataField(
+ descriptor, attributes, constness, Representation::None(),
+ FieldType::None(isolate));
+}
+
+// static
+void MapUpdater::UpdateFieldType(Isolate* isolate, Handle<Map> map,
+ InternalIndex descriptor, Handle<Name> name,
+ PropertyConstness new_constness,
+ Representation new_representation,
+ const MaybeObjectHandle& new_wrapped_type) {
+ DCHECK(new_wrapped_type->IsSmi() || new_wrapped_type->IsWeak());
+ // We store raw pointers in the queue, so no allocations are allowed.
+ DisallowGarbageCollection no_gc;
+ PropertyDetails details =
+ map->instance_descriptors(isolate).GetDetails(descriptor);
+ if (details.location() != kField) return;
+ DCHECK_EQ(kData, details.kind());
+
+ if (new_constness != details.constness() && map->is_prototype_map()) {
+ JSObject::InvalidatePrototypeChains(*map);
+ }
+
+ std::queue<Map> backlog;
+ backlog.push(*map);
+
+ while (!backlog.empty()) {
+ Map current = backlog.front();
+ backlog.pop();
+
+ TransitionsAccessor transitions(isolate, current, &no_gc);
+ int num_transitions = transitions.NumberOfTransitions();
+ for (int i = 0; i < num_transitions; ++i) {
+ Map target = transitions.GetTarget(i);
+ backlog.push(target);
+ }
+ DescriptorArray descriptors = current.instance_descriptors(isolate);
+ PropertyDetails details = descriptors.GetDetails(descriptor);
+
+ // It is allowed to change representation here only from None
+ // to something or from Smi or HeapObject to Tagged.
+ DCHECK(details.representation().Equals(new_representation) ||
+ details.representation().CanBeInPlaceChangedTo(new_representation));
+
+ // Skip if already updated the shared descriptor.
+ if (new_constness != details.constness() ||
+ !new_representation.Equals(details.representation()) ||
+ descriptors.GetFieldType(descriptor) != *new_wrapped_type.object()) {
+ Descriptor d = Descriptor::DataField(
+ name, descriptors.GetFieldIndex(descriptor), details.attributes(),
+ new_constness, new_representation, new_wrapped_type);
+ descriptors.Replace(descriptor, &d);
+ }
+ }
+}
+
+// TODO(jgruber): Lock the map-updater mutex.
+// static
+void MapUpdater::GeneralizeField(Isolate* isolate, Handle<Map> map,
+ InternalIndex modify_index,
+ PropertyConstness new_constness,
+ Representation new_representation,
+ Handle<FieldType> new_field_type) {
+ DCHECK(!map->is_deprecated());
+
+ // Check if we actually need to generalize the field type at all.
+ Handle<DescriptorArray> old_descriptors(map->instance_descriptors(isolate),
+ isolate);
+ PropertyDetails old_details = old_descriptors->GetDetails(modify_index);
+ PropertyConstness old_constness = old_details.constness();
+ Representation old_representation = old_details.representation();
+ Handle<FieldType> old_field_type(old_descriptors->GetFieldType(modify_index),
+ isolate);
+
+ // Return if the current map is general enough to hold requested constness and
+ // representation/field type.
+ if (IsGeneralizableTo(new_constness, old_constness) &&
+ old_representation.Equals(new_representation) &&
+ !Map::FieldTypeIsCleared(new_representation, *new_field_type) &&
+ // Checking old_field_type for being cleared is not necessary because
+ // the NowIs check below would fail anyway in that case.
+ new_field_type->NowIs(old_field_type)) {
+ DCHECK(GeneralizeFieldType(old_representation, old_field_type,
+ new_representation, new_field_type, isolate)
+ ->NowIs(old_field_type));
+ return;
+ }
+
+ // Determine the field owner.
+ Handle<Map> field_owner(map->FindFieldOwner(isolate, modify_index), isolate);
+ Handle<DescriptorArray> descriptors(
+ field_owner->instance_descriptors(isolate), isolate);
+ DCHECK_EQ(*old_field_type, descriptors->GetFieldType(modify_index));
+
+ new_field_type =
+ GeneralizeFieldType(old_representation, old_field_type,
+ new_representation, new_field_type, isolate);
+
+ new_constness = GeneralizeConstness(old_constness, new_constness);
+
+ PropertyDetails details = descriptors->GetDetails(modify_index);
+ Handle<Name> name(descriptors->GetKey(modify_index), isolate);
+
+ MaybeObjectHandle wrapped_type(Map::WrapFieldType(isolate, new_field_type));
+ UpdateFieldType(isolate, field_owner, modify_index, name, new_constness,
+ new_representation, wrapped_type);
+
+ if (new_constness != old_constness) {
+ field_owner->dependent_code().DeoptimizeDependentCodeGroup(
+ DependentCode::kFieldConstGroup);
+ }
+
+ if (!new_field_type->Equals(*old_field_type)) {
+ field_owner->dependent_code().DeoptimizeDependentCodeGroup(
+ DependentCode::kFieldTypeGroup);
+ }
+
+ if (!new_representation.Equals(old_representation)) {
+ field_owner->dependent_code().DeoptimizeDependentCodeGroup(
+ DependentCode::kFieldRepresentationGroup);
+ }
+
+ if (FLAG_trace_generalization) {
+ PrintGeneralization(
+ isolate, map, stdout, "field type generalization", modify_index,
+ map->NumberOfOwnDescriptors(), map->NumberOfOwnDescriptors(), false,
+ details.representation(),
+ descriptors->GetDetails(modify_index).representation(), old_constness,
+ new_constness, old_field_type, MaybeHandle<Object>(), new_field_type,
+ MaybeHandle<Object>());
+ }
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/objects/map-updater.h b/deps/v8/src/objects/map-updater.h
index 427ddc90e8..c901782bf1 100644
--- a/deps/v8/src/objects/map-updater.h
+++ b/deps/v8/src/objects/map-updater.h
@@ -67,6 +67,22 @@ class V8_EXPORT_PRIVATE MapUpdater {
// version and performs the steps 1-6.
Handle<Map> Update();
+ static Handle<Map> ReconfigureExistingProperty(Isolate* isolate,
+ Handle<Map> map,
+ InternalIndex descriptor,
+ PropertyKind kind,
+ PropertyAttributes attributes,
+ PropertyConstness constness);
+
+ static void GeneralizeField(Isolate* isolate, Handle<Map> map,
+ InternalIndex modify_index,
+ PropertyConstness new_constness,
+ Representation new_representation,
+ Handle<FieldType> new_field_type);
+
+ static void ShrinkInstanceSize(base::SharedMutex* map_updater_access, Map map,
+ int slack);
+
private:
enum State {
kInitialized,
@@ -167,6 +183,16 @@ class V8_EXPORT_PRIVATE MapUpdater {
Handle<DescriptorArray> descriptors, InternalIndex descriptor,
PropertyLocation location, Representation representation);
+ // Update field type of the given descriptor to new representation and new
+ // type. The type must be prepared for storing in descriptor array:
+ // it must be either a simple type or a map wrapped in a weak cell.
+ static void UpdateFieldType(Isolate* isolate, Handle<Map> map,
+ InternalIndex descriptor_number,
+ Handle<Name> name,
+ PropertyConstness new_constness,
+ Representation new_representation,
+ const MaybeObjectHandle& new_wrapped_type);
+
void GeneralizeField(Handle<Map> map, InternalIndex modify_index,
PropertyConstness new_constness,
Representation new_representation,
diff --git a/deps/v8/src/objects/map.cc b/deps/v8/src/objects/map.cc
index 0f281519b7..0857d7beea 100644
--- a/deps/v8/src/objects/map.cc
+++ b/deps/v8/src/objects/map.cc
@@ -10,7 +10,6 @@
#include "src/handles/maybe-handles.h"
#include "src/heap/heap-write-barrier-inl.h"
#include "src/init/bootstrapper.h"
-#include "src/logging/counters-inl.h"
#include "src/logging/log.h"
#include "src/objects/arguments-inl.h"
#include "src/objects/descriptor-array.h"
@@ -46,34 +45,16 @@ Map Map::GetPrototypeChainRootMap(Isolate* isolate) const {
}
// static
-MaybeHandle<JSFunction> Map::GetConstructorFunction(
- Handle<Map> map, Handle<Context> native_context) {
- if (map->IsPrimitiveMap()) {
- int const constructor_function_index = map->GetConstructorFunctionIndex();
+base::Optional<JSFunction> Map::GetConstructorFunction(Map map,
+ Context native_context) {
+ DisallowGarbageCollection no_gc;
+ if (map.IsPrimitiveMap()) {
+ int const constructor_function_index = map.GetConstructorFunctionIndex();
if (constructor_function_index != kNoConstructorFunctionIndex) {
- return handle(
- JSFunction::cast(native_context->get(constructor_function_index)),
- native_context->GetIsolate());
+ return JSFunction::cast(native_context.get(constructor_function_index));
}
}
- return MaybeHandle<JSFunction>();
-}
-
-void Map::PrintReconfiguration(Isolate* isolate, FILE* file,
- InternalIndex modify_index, PropertyKind kind,
- PropertyAttributes attributes) {
- OFStream os(file);
- os << "[reconfiguring]";
- Name name = instance_descriptors(isolate).GetKey(modify_index);
- if (name.IsString()) {
- String::cast(name).PrintOn(file);
- } else {
- os << "{symbol " << reinterpret_cast<void*>(name.ptr()) << "}";
- }
- os << ": " << (kind == kData ? "kData" : "ACCESSORS") << ", attrs: ";
- os << attributes << " [";
- JavaScriptFrame::PrintTop(isolate, file, false, true);
- os << "]\n";
+ return {};
}
Map Map::GetInstanceTypeMap(ReadOnlyRoots roots, InstanceType type) {
@@ -373,6 +354,10 @@ VisitorId Map::GetVisitorId(Map map) {
return kVisitWasmStruct;
case WASM_TYPE_INFO_TYPE:
return kVisitWasmTypeInfo;
+ case WASM_JS_FUNCTION_DATA_TYPE:
+ return kVisitWasmJSFunctionData;
+ case WASM_EXPORTED_FUNCTION_DATA_TYPE:
+ return kVisitWasmExportedFunctionData;
#endif // V8_ENABLE_WEBASSEMBLY
#define MAKE_TQ_CASE(TYPE, Name) \
@@ -386,51 +371,6 @@ VisitorId Map::GetVisitorId(Map map) {
}
}
-void Map::PrintGeneralization(
- Isolate* isolate, FILE* file, const char* reason,
- InternalIndex modify_index, int split, int descriptors,
- bool descriptor_to_field, Representation old_representation,
- Representation new_representation, PropertyConstness old_constness,
- PropertyConstness new_constness, MaybeHandle<FieldType> old_field_type,
- MaybeHandle<Object> old_value, MaybeHandle<FieldType> new_field_type,
- MaybeHandle<Object> new_value) {
- OFStream os(file);
- os << "[generalizing]";
- Name name = instance_descriptors(isolate).GetKey(modify_index);
- if (name.IsString()) {
- String::cast(name).PrintOn(file);
- } else {
- os << "{symbol " << reinterpret_cast<void*>(name.ptr()) << "}";
- }
- os << ":";
- if (descriptor_to_field) {
- os << "c";
- } else {
- os << old_representation.Mnemonic() << "{";
- if (old_field_type.is_null()) {
- os << Brief(*(old_value.ToHandleChecked()));
- } else {
- old_field_type.ToHandleChecked()->PrintTo(os);
- }
- os << ";" << old_constness << "}";
- }
- os << "->" << new_representation.Mnemonic() << "{";
- if (new_field_type.is_null()) {
- os << Brief(*(new_value.ToHandleChecked()));
- } else {
- new_field_type.ToHandleChecked()->PrintTo(os);
- }
- os << ";" << new_constness << "} (";
- if (strlen(reason) > 0) {
- os << reason;
- } else {
- os << "+" << (descriptors - split) << " maps";
- }
- os << ") [";
- JavaScriptFrame::PrintTop(isolate, file, false, true);
- os << "]\n";
-}
-
// static
MaybeObjectHandle Map::WrapFieldType(Isolate* isolate, Handle<FieldType> type) {
if (type->IsClass()) {
@@ -661,151 +601,6 @@ Map Map::FindFieldOwner(Isolate* isolate, InternalIndex descriptor) const {
return result;
}
-void Map::UpdateFieldType(Isolate* isolate, InternalIndex descriptor,
- Handle<Name> name, PropertyConstness new_constness,
- Representation new_representation,
- const MaybeObjectHandle& new_wrapped_type) {
- DCHECK(new_wrapped_type->IsSmi() || new_wrapped_type->IsWeak());
- // We store raw pointers in the queue, so no allocations are allowed.
- DisallowGarbageCollection no_gc;
- PropertyDetails details =
- instance_descriptors(isolate).GetDetails(descriptor);
- if (details.location() != kField) return;
- DCHECK_EQ(kData, details.kind());
-
- if (new_constness != details.constness() && is_prototype_map()) {
- JSObject::InvalidatePrototypeChains(*this);
- }
-
- Zone zone(isolate->allocator(), ZONE_NAME);
- ZoneQueue<Map> backlog(&zone);
- backlog.push(*this);
-
- while (!backlog.empty()) {
- Map current = backlog.front();
- backlog.pop();
-
- TransitionsAccessor transitions(isolate, current, &no_gc);
- int num_transitions = transitions.NumberOfTransitions();
- for (int i = 0; i < num_transitions; ++i) {
- Map target = transitions.GetTarget(i);
- backlog.push(target);
- }
- DescriptorArray descriptors = current.instance_descriptors(isolate);
- PropertyDetails details = descriptors.GetDetails(descriptor);
-
- // It is allowed to change representation here only from None
- // to something or from Smi or HeapObject to Tagged.
- DCHECK(details.representation().Equals(new_representation) ||
- details.representation().CanBeInPlaceChangedTo(new_representation));
-
- // Skip if already updated the shared descriptor.
- if (new_constness != details.constness() ||
- !new_representation.Equals(details.representation()) ||
- descriptors.GetFieldType(descriptor) != *new_wrapped_type.object()) {
- Descriptor d = Descriptor::DataField(
- name, descriptors.GetFieldIndex(descriptor), details.attributes(),
- new_constness, new_representation, new_wrapped_type);
- descriptors.Replace(descriptor, &d);
- }
- }
-}
-
-bool FieldTypeIsCleared(Representation rep, FieldType type) {
- return type.IsNone() && rep.IsHeapObject();
-}
-
-// static
-Handle<FieldType> Map::GeneralizeFieldType(Representation rep1,
- Handle<FieldType> type1,
- Representation rep2,
- Handle<FieldType> type2,
- Isolate* isolate) {
- // Cleared field types need special treatment. They represent lost knowledge,
- // so we must be conservative, so their generalization with any other type
- // is "Any".
- if (FieldTypeIsCleared(rep1, *type1) || FieldTypeIsCleared(rep2, *type2)) {
- return FieldType::Any(isolate);
- }
- if (type1->NowIs(type2)) return type2;
- if (type2->NowIs(type1)) return type1;
- return FieldType::Any(isolate);
-}
-
-// static
-void Map::GeneralizeField(Isolate* isolate, Handle<Map> map,
- InternalIndex modify_index,
- PropertyConstness new_constness,
- Representation new_representation,
- Handle<FieldType> new_field_type) {
- // Check if we actually need to generalize the field type at all.
- Handle<DescriptorArray> old_descriptors(map->instance_descriptors(isolate),
- isolate);
- PropertyDetails old_details = old_descriptors->GetDetails(modify_index);
- PropertyConstness old_constness = old_details.constness();
- Representation old_representation = old_details.representation();
- Handle<FieldType> old_field_type(old_descriptors->GetFieldType(modify_index),
- isolate);
-
- // Return if the current map is general enough to hold requested constness and
- // representation/field type.
- if (IsGeneralizableTo(new_constness, old_constness) &&
- old_representation.Equals(new_representation) &&
- !FieldTypeIsCleared(new_representation, *new_field_type) &&
- // Checking old_field_type for being cleared is not necessary because
- // the NowIs check below would fail anyway in that case.
- new_field_type->NowIs(old_field_type)) {
- DCHECK(GeneralizeFieldType(old_representation, old_field_type,
- new_representation, new_field_type, isolate)
- ->NowIs(old_field_type));
- return;
- }
-
- // Determine the field owner.
- Handle<Map> field_owner(map->FindFieldOwner(isolate, modify_index), isolate);
- Handle<DescriptorArray> descriptors(
- field_owner->instance_descriptors(isolate), isolate);
- DCHECK_EQ(*old_field_type, descriptors->GetFieldType(modify_index));
-
- new_field_type =
- Map::GeneralizeFieldType(old_representation, old_field_type,
- new_representation, new_field_type, isolate);
-
- new_constness = GeneralizeConstness(old_constness, new_constness);
-
- PropertyDetails details = descriptors->GetDetails(modify_index);
- Handle<Name> name(descriptors->GetKey(modify_index), isolate);
-
- MaybeObjectHandle wrapped_type(WrapFieldType(isolate, new_field_type));
- field_owner->UpdateFieldType(isolate, modify_index, name, new_constness,
- new_representation, wrapped_type);
-
- if (new_constness != old_constness) {
- field_owner->dependent_code().DeoptimizeDependentCodeGroup(
- DependentCode::kFieldConstGroup);
- }
-
- if (!new_field_type->Equals(*old_field_type)) {
- field_owner->dependent_code().DeoptimizeDependentCodeGroup(
- DependentCode::kFieldTypeGroup);
- }
-
- if (!new_representation.Equals(old_representation)) {
- field_owner->dependent_code().DeoptimizeDependentCodeGroup(
- DependentCode::kFieldRepresentationGroup);
- }
-
- if (FLAG_trace_generalization) {
- map->PrintGeneralization(
- isolate, stdout, "field type generalization", modify_index,
- map->NumberOfOwnDescriptors(), map->NumberOfOwnDescriptors(), false,
- details.representation(),
- descriptors->GetDetails(modify_index).representation(), old_constness,
- new_constness, old_field_type, MaybeHandle<Object>(), new_field_type,
- MaybeHandle<Object>());
- }
-}
-
namespace {
Map SearchMigrationTarget(Isolate* isolate, Map old_map) {
@@ -831,7 +626,7 @@ Map SearchMigrationTarget(Isolate* isolate, Map old_map) {
PropertyDetails old_details = old_descriptors.GetDetails(i);
if (old_details.location() == kField && old_details.kind() == kData) {
FieldType old_type = old_descriptors.GetFieldType(i);
- if (FieldTypeIsCleared(old_details.representation(), old_type)) {
+ if (Map::FieldTypeIsCleared(old_details.representation(), old_type)) {
return Map();
}
}
@@ -1362,7 +1157,7 @@ int Map::NumberOfEnumerableProperties() const {
int Map::NextFreePropertyIndex() const {
int number_of_own_descriptors = NumberOfOwnDescriptors();
- DescriptorArray descs = instance_descriptors();
+ DescriptorArray descs = instance_descriptors(kRelaxedLoad);
// Search properties backwards to find the last field.
for (int i = number_of_own_descriptors - 1; i >= 0; --i) {
PropertyDetails details = descs.GetDetails(InternalIndex(i));
@@ -1418,9 +1213,7 @@ Handle<Map> Map::RawCopy(Isolate* isolate, Handle<Map> map, int instance_size,
Handle<HeapObject> prototype(map->prototype(), isolate);
Map::SetPrototype(isolate, result, prototype);
result->set_constructor_or_back_pointer(map->GetConstructor());
- // TODO(solanes, v8:7790, v8:11353): set_relaxed_bit_field could be an atomic
- // set if TSAN could see the transitions happening in StoreIC.
- result->set_relaxed_bit_field(map->bit_field());
+ result->set_bit_field(map->bit_field());
result->set_bit_field2(map->bit_field2());
int new_bit_field3 = map->bit_field3();
new_bit_field3 = Bits3::OwnsDescriptorsBit::update(new_bit_field3, true);
@@ -1432,6 +1225,7 @@ Handle<Map> Map::RawCopy(Isolate* isolate, Handle<Map> map, int instance_size,
if (!map->is_dictionary_map()) {
new_bit_field3 = Bits3::IsUnstableBit::update(new_bit_field3, false);
}
+ // Same as bit_field comment above.
result->set_bit_field3(new_bit_field3);
result->clear_padding();
return result;
@@ -2075,11 +1869,10 @@ Handle<Map> Map::TransitionToDataProperty(Isolate* isolate, Handle<Map> map,
PropertyAttributes attributes,
PropertyConstness constness,
StoreOrigin store_origin) {
- RuntimeCallTimerScope stats_scope(
- isolate,
- map->IsDetached(isolate)
- ? RuntimeCallCounterId::kPrototypeMap_TransitionToDataProperty
- : RuntimeCallCounterId::kMap_TransitionToDataProperty);
+ RCS_SCOPE(isolate,
+ map->IsDetached(isolate)
+ ? RuntimeCallCounterId::kPrototypeMap_TransitionToDataProperty
+ : RuntimeCallCounterId::kMap_TransitionToDataProperty);
DCHECK(name->IsUniqueName());
DCHECK(!map->is_dictionary_map());
@@ -2156,40 +1949,13 @@ Handle<Map> Map::TransitionToDataProperty(Isolate* isolate, Handle<Map> map,
return result;
}
-Handle<Map> Map::ReconfigureExistingProperty(Isolate* isolate, Handle<Map> map,
- InternalIndex descriptor,
- PropertyKind kind,
- PropertyAttributes attributes,
- PropertyConstness constness) {
- // Dictionaries have to be reconfigured in-place.
- DCHECK(!map->is_dictionary_map());
-
- if (!map->GetBackPointer().IsMap()) {
- // There is no benefit from reconstructing transition tree for maps without
- // back pointers, normalize and try to hit the map cache instead.
- return Map::Normalize(isolate, map, CLEAR_INOBJECT_PROPERTIES,
- "Normalize_AttributesMismatchProtoMap");
- }
-
- if (FLAG_trace_generalization) {
- map->PrintReconfiguration(isolate, stdout, descriptor, kind, attributes);
- }
-
- MapUpdater mu(isolate, map);
- DCHECK_EQ(kData, kind); // Only kData case is supported so far.
- Handle<Map> new_map = mu.ReconfigureToDataField(
- descriptor, attributes, constness, Representation::None(),
- FieldType::None(isolate));
- return new_map;
-}
-
Handle<Map> Map::TransitionToAccessorProperty(Isolate* isolate, Handle<Map> map,
Handle<Name> name,
InternalIndex descriptor,
Handle<Object> getter,
Handle<Object> setter,
PropertyAttributes attributes) {
- RuntimeCallTimerScope stats_scope(
+ RCS_SCOPE(
isolate,
map->IsDetached(isolate)
? RuntimeCallCounterId::kPrototypeMap_TransitionToAccessorProperty
@@ -2438,13 +2204,6 @@ bool Map::EquivalentToForNormalization(const Map other,
JSObject::GetEmbedderFieldCount(other);
}
-static void GetMinInobjectSlack(Map map, void* data) {
- int slack = map.UnusedPropertyFields();
- if (*reinterpret_cast<int*>(data) > slack) {
- *reinterpret_cast<int*>(data) = slack;
- }
-}
-
int Map::ComputeMinObjectSlack(Isolate* isolate) {
DisallowGarbageCollection no_gc;
// Has to be an initial map.
@@ -2452,27 +2211,13 @@ int Map::ComputeMinObjectSlack(Isolate* isolate) {
int slack = UnusedPropertyFields();
TransitionsAccessor transitions(isolate, *this, &no_gc);
- transitions.TraverseTransitionTree(&GetMinInobjectSlack, &slack);
+ TransitionsAccessor::TraverseCallback callback = [&](Map map) {
+ slack = std::min(slack, map.UnusedPropertyFields());
+ };
+ transitions.TraverseTransitionTree(callback);
return slack;
}
-static void ShrinkInstanceSize(Map map, void* data) {
- int slack = *reinterpret_cast<int*>(data);
- DCHECK_GE(slack, 0);
-#ifdef DEBUG
- int old_visitor_id = Map::GetVisitorId(map);
- int new_unused = map.UnusedPropertyFields() - slack;
-#endif
- map.set_instance_size(map.InstanceSizeFromSlack(slack));
- map.set_construction_counter(Map::kNoSlackTracking);
- DCHECK_EQ(old_visitor_id, Map::GetVisitorId(map));
- DCHECK_EQ(new_unused, map.UnusedPropertyFields());
-}
-
-static void StopSlackTracking(Map map, void* data) {
- map.set_construction_counter(Map::kNoSlackTracking);
-}
-
void Map::CompleteInobjectSlackTracking(Isolate* isolate) {
DisallowGarbageCollection no_gc;
// Has to be an initial map.
@@ -2480,12 +2225,19 @@ void Map::CompleteInobjectSlackTracking(Isolate* isolate) {
int slack = ComputeMinObjectSlack(isolate);
TransitionsAccessor transitions(isolate, *this, &no_gc);
+ TransitionsAccessor::TraverseCallback callback;
if (slack != 0) {
// Resize the initial map and all maps in its transition tree.
- transitions.TraverseTransitionTree(&ShrinkInstanceSize, &slack);
+ callback = [&](Map map) {
+ MapUpdater::ShrinkInstanceSize(isolate->map_updater_access(), map, slack);
+ };
} else {
- transitions.TraverseTransitionTree(&StopSlackTracking, nullptr);
+ callback = [](Map map) {
+ // Stop slack tracking for this map.
+ map.set_construction_counter(Map::kNoSlackTracking);
+ };
}
+ transitions.TraverseTransitionTree(callback);
}
void Map::SetInstanceDescriptors(Isolate* isolate, DescriptorArray descriptors,
@@ -2583,8 +2335,7 @@ bool Map::IsPrototypeChainInvalidated(Map map) {
void Map::SetPrototype(Isolate* isolate, Handle<Map> map,
Handle<HeapObject> prototype,
bool enable_prototype_setup_mode) {
- RuntimeCallTimerScope stats_scope(isolate,
- RuntimeCallCounterId::kMap_SetPrototype);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kMap_SetPrototype);
if (prototype->IsJSObject()) {
Handle<JSObject> prototype_jsobj = Handle<JSObject>::cast(prototype);
diff --git a/deps/v8/src/objects/map.h b/deps/v8/src/objects/map.h
index e31bb9a51f..83e5dfa365 100644
--- a/deps/v8/src/objects/map.h
+++ b/deps/v8/src/objects/map.h
@@ -68,9 +68,12 @@ enum InstanceType : uint16_t;
V(Symbol) \
V(SyntheticModule) \
V(TransitionArray) \
+ IF_WASM(V, WasmArray) \
+ IF_WASM(V, WasmExportedFunctionData) \
+ IF_WASM(V, WasmFunctionData) \
IF_WASM(V, WasmIndirectFunctionTable) \
IF_WASM(V, WasmInstanceObject) \
- IF_WASM(V, WasmArray) \
+ IF_WASM(V, WasmJSFunctionData) \
IF_WASM(V, WasmStruct) \
IF_WASM(V, WasmTypeInfo) \
V(WeakCell)
@@ -148,8 +151,7 @@ using MapHandles = std::vector<Handle<Map>>;
// | Byte | [bit_field2] |
// | | - new_target_is_base (bit 0) |
// | | - is_immutable_proto (bit 1) |
-// | | - unused bit (bit 2) |
-// | | - elements_kind (bits 3..7) |
+// | | - elements_kind (bits 2..7) |
// +----+----------+-------------------------------------------------+
// | Int | [bit_field3] |
// | | - enum_length (bit 0..9) |
@@ -211,8 +213,8 @@ class Map : public HeapObject {
static const int kNoConstructorFunctionIndex = 0;
inline int GetConstructorFunctionIndex() const;
inline void SetConstructorFunctionIndex(int value);
- static MaybeHandle<JSFunction> GetConstructorFunction(
- Handle<Map> map, Handle<Context> native_context);
+ static base::Optional<JSFunction> GetConstructorFunction(
+ Map map, Context native_context);
// Retrieve interceptors.
DECL_GETTER(GetNamedInterceptor, InterceptorInfo)
@@ -244,7 +246,12 @@ class Map : public HeapObject {
//
// Bit field.
//
+ // The setter in this pair calls the relaxed setter if concurrent marking is
+ // on, or performs the write non-atomically if it's off. The read is always
+ // non-atomically. This is done to have wider TSAN coverage on the cases where
+ // it's possible.
DECL_PRIMITIVE_ACCESSORS(bit_field, byte)
+
// Atomic accessors, used for allowlisting legitimate concurrent accesses.
DECL_PRIMITIVE_ACCESSORS(relaxed_bit_field, byte)
@@ -266,8 +273,14 @@ class Map : public HeapObject {
//
// Bit field 3.
//
+ // {bit_field3} calls the relaxed accessors if concurrent marking is on, or
+ // performs the read/write non-atomically if it's off. This is done to have
+ // wider TSAN coverage on the cases where it's possible.
DECL_PRIMITIVE_ACCESSORS(bit_field3, uint32_t)
+ DECL_PRIMITIVE_ACCESSORS(relaxed_bit_field3, uint32_t)
+ DECL_PRIMITIVE_ACCESSORS(release_acquire_bit_field3, uint32_t)
+
// Clear uninitialized padding space. This ensures that the snapshot content
// is deterministic. Depending on the V8 build mode there could be no padding.
V8_INLINE void clear_padding();
@@ -402,6 +415,8 @@ class Map : public HeapObject {
inline bool has_fast_sloppy_arguments_elements() const;
inline bool has_fast_string_wrapper_elements() const;
inline bool has_typed_array_elements() const;
+ inline bool has_rab_gsab_typed_array_elements() const;
+ inline bool has_typed_array_or_rab_gsab_typed_array_elements() const;
inline bool has_dictionary_elements() const;
inline bool has_any_nonextensible_elements() const;
inline bool has_nonextensible_elements() const;
@@ -488,18 +503,11 @@ class Map : public HeapObject {
bool InstancesNeedRewriting(Map target, int target_number_of_fields,
int target_inobject, int target_unused,
int* old_number_of_fields) const;
- V8_WARN_UNUSED_RESULT static Handle<FieldType> GeneralizeFieldType(
- Representation rep1, Handle<FieldType> type1, Representation rep2,
- Handle<FieldType> type2, Isolate* isolate);
- static void GeneralizeField(Isolate* isolate, Handle<Map> map,
- InternalIndex modify_index,
- PropertyConstness new_constness,
- Representation new_representation,
- Handle<FieldType> new_field_type);
// Returns true if the |field_type| is the most general one for
// given |representation|.
static inline bool IsMostGeneralFieldType(Representation representation,
FieldType field_type);
+ static inline bool FieldTypeIsCleared(Representation rep, FieldType type);
// Generalizes representation and field_type if objects with given
// instance type can have fast elements that can be transitioned by
@@ -554,6 +562,7 @@ class Map : public HeapObject {
// and with the Wasm type info for WebAssembly object maps.
DECL_ACCESSORS(constructor_or_back_pointer, Object)
DECL_ACCESSORS(native_context, NativeContext)
+ DECL_ACCESSORS(native_context_or_null, Object)
DECL_ACCESSORS(wasm_type_info, WasmTypeInfo)
DECL_GETTER(GetConstructor, Object)
DECL_GETTER(GetFunctionTemplateInfo, FunctionTemplateInfo)
@@ -716,10 +725,6 @@ class Map : public HeapObject {
Isolate* isolate, Handle<Map> map, Handle<Name> name,
InternalIndex descriptor, Handle<Object> getter, Handle<Object> setter,
PropertyAttributes attributes);
- V8_EXPORT_PRIVATE static Handle<Map> ReconfigureExistingProperty(
- Isolate* isolate, Handle<Map> map, InternalIndex descriptor,
- PropertyKind kind, PropertyAttributes attributes,
- PropertyConstness constness);
inline void AppendDescriptor(Isolate* isolate, Descriptor* desc);
@@ -912,28 +917,6 @@ class Map : public HeapObject {
void ReplaceDescriptors(Isolate* isolate, DescriptorArray new_descriptors);
- // Update field type of the given descriptor to new representation and new
- // type. The type must be prepared for storing in descriptor array:
- // it must be either a simple type or a map wrapped in a weak cell.
- void UpdateFieldType(Isolate* isolate, InternalIndex descriptor_number,
- Handle<Name> name, PropertyConstness new_constness,
- Representation new_representation,
- const MaybeObjectHandle& new_wrapped_type);
-
- // TODO(ishell): Move to MapUpdater.
- void PrintReconfiguration(Isolate* isolate, FILE* file,
- InternalIndex modify_index, PropertyKind kind,
- PropertyAttributes attributes);
- // TODO(ishell): Move to MapUpdater.
- void PrintGeneralization(
- Isolate* isolate, FILE* file, const char* reason,
- InternalIndex modify_index, int split, int descriptors,
- bool constant_to_field, Representation old_representation,
- Representation new_representation, PropertyConstness old_constness,
- PropertyConstness new_constness, MaybeHandle<FieldType> old_field_type,
- MaybeHandle<Object> old_value, MaybeHandle<FieldType> new_field_type,
- MaybeHandle<Object> new_value);
-
// This is the equivalent of IsMap() but avoids reading the instance type so
// it can be used concurrently without acquire load.
V8_INLINE bool ConcurrentIsMap(PtrComprCageBase cage_base,
diff --git a/deps/v8/src/objects/map.tq b/deps/v8/src/objects/map.tq
index 4cd3f2d67f..49b2e5be36 100644
--- a/deps/v8/src/objects/map.tq
+++ b/deps/v8/src/objects/map.tq
@@ -16,8 +16,7 @@ bitfield struct MapBitFields1 extends uint8 {
bitfield struct MapBitFields2 extends uint8 {
new_target_is_base: bool: 1 bit;
is_immutable_prototype: bool: 1 bit;
- unused: bool: 1 bit;
- elements_kind: ElementsKind: 5 bit;
+ elements_kind: ElementsKind: 6 bit;
}
bitfield struct MapBitFields3 extends uint32 {
diff --git a/deps/v8/src/objects/megadom-handler-inl.h b/deps/v8/src/objects/megadom-handler-inl.h
new file mode 100644
index 0000000000..87efc66f0e
--- /dev/null
+++ b/deps/v8/src/objects/megadom-handler-inl.h
@@ -0,0 +1,26 @@
+// Copyright 2021 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_MEGADOM_HANDLER_INL_H_
+#define V8_OBJECTS_MEGADOM_HANDLER_INL_H_
+
+#include "src/objects/megadom-handler.h"
+#include "src/objects/objects-inl.h" // Needed for write barriers
+
+// Has to be the last include (doesn't have include guards):
+#include "src/objects/object-macros.h"
+
+namespace v8 {
+namespace internal {
+
+#include "torque-generated/src/objects/megadom-handler-tq-inl.inc"
+
+TQ_OBJECT_CONSTRUCTORS_IMPL(MegaDomHandler)
+
+} // namespace internal
+} // namespace v8
+
+#include "src/objects/object-macros-undef.h"
+
+#endif // V8_OBJECTS_MEGADOM_HANDLER_INL_H_
diff --git a/deps/v8/src/objects/megadom-handler.h b/deps/v8/src/objects/megadom-handler.h
new file mode 100644
index 0000000000..00de29d0d5
--- /dev/null
+++ b/deps/v8/src/objects/megadom-handler.h
@@ -0,0 +1,32 @@
+// Copyright 2021 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_MEGADOM_HANDLER_H_
+#define V8_OBJECTS_MEGADOM_HANDLER_H_
+
+#include "src/objects/heap-object.h"
+
+// Has to be the last include (doesn't have include guards):
+#include "src/objects/object-macros.h"
+
+namespace v8 {
+namespace internal {
+
+#include "torque-generated/src/objects/megadom-handler-tq.inc"
+
+class MegaDomHandler
+ : public TorqueGeneratedMegaDomHandler<MegaDomHandler, HeapObject> {
+ public:
+ void BriefPrintDetails(std::ostream& os);
+ class BodyDescriptor;
+
+ TQ_OBJECT_CONSTRUCTORS(MegaDomHandler)
+};
+
+} // namespace internal
+} // namespace v8
+
+#include "src/objects/object-macros-undef.h"
+
+#endif // V8_OBJECTS_MEGADOM_HANDLER_H_
diff --git a/deps/v8/src/objects/megadom-handler.tq b/deps/v8/src/objects/megadom-handler.tq
new file mode 100644
index 0000000000..7daaa5a8d8
--- /dev/null
+++ b/deps/v8/src/objects/megadom-handler.tq
@@ -0,0 +1,11 @@
+// Copyright 2021 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.
+
+@generateCppClass
+@generatePrint
+@generateBodyDescriptor
+extern class MegaDomHandler extends HeapObject {
+ accessor: MaybeObject;
+ context: MaybeObject;
+}
diff --git a/deps/v8/src/objects/object-list-macros.h b/deps/v8/src/objects/object-list-macros.h
index fc3f956d2d..837f895f5f 100644
--- a/deps/v8/src/objects/object-list-macros.h
+++ b/deps/v8/src/objects/object-list-macros.h
@@ -166,6 +166,7 @@ class ZoneForwardList;
V(LoadHandler) \
V(Map) \
V(MapCache) \
+ V(MegaDomHandler) \
V(Module) \
V(Microtask) \
V(Name) \
@@ -217,8 +218,11 @@ class ZoneForwardList;
IF_WASM(V, WasmArray) \
IF_WASM(V, WasmExceptionObject) \
IF_WASM(V, WasmExceptionPackage) \
+ IF_WASM(V, WasmExportedFunctionData) \
+ IF_WASM(V, WasmFunctionData) \
IF_WASM(V, WasmGlobalObject) \
IF_WASM(V, WasmInstanceObject) \
+ IF_WASM(V, WasmJSFunctionData) \
IF_WASM(V, WasmMemoryObject) \
IF_WASM(V, WasmModuleObject) \
IF_WASM(V, WasmStruct) \
diff --git a/deps/v8/src/objects/object-macros-undef.h b/deps/v8/src/objects/object-macros-undef.h
index e2c5961ab2..1d240729ff 100644
--- a/deps/v8/src/objects/object-macros-undef.h
+++ b/deps/v8/src/objects/object-macros-undef.h
@@ -14,10 +14,8 @@
#undef DECL_PRIMITIVE_GETTER
#undef DECL_PRIMITIVE_SETTER
#undef DECL_PRIMITIVE_ACCESSORS
-#undef DECL_SYNCHRONIZED_PRIMITIVE_ACCESSORS
#undef DECL_BOOLEAN_ACCESSORS
#undef DECL_INT_ACCESSORS
-#undef DECL_SYNCHRONIZED_INT_ACCESSORS
#undef DECL_INT32_ACCESSORS
#undef DECL_UINT16_ACCESSORS
#undef DECL_INT16_ACCESSORS
@@ -61,7 +59,9 @@
#undef RELEASE_ACQUIRE_WEAK_ACCESSORS
#undef SMI_ACCESSORS_CHECKED
#undef SMI_ACCESSORS
-#undef SYNCHRONIZED_SMI_ACCESSORS
+#undef DECL_RELEASE_ACQUIRE_INT_ACCESSORS
+#undef RELEASE_ACQUIRE_SMI_ACCESSORS
+#undef DECL_RELAXED_SMI_ACCESSORS
#undef RELAXED_SMI_ACCESSORS
#undef BOOL_GETTER
#undef BOOL_ACCESSORS
diff --git a/deps/v8/src/objects/object-macros.h b/deps/v8/src/objects/object-macros.h
index 2a742d5d77..ed4637a406 100644
--- a/deps/v8/src/objects/object-macros.h
+++ b/deps/v8/src/objects/object-macros.h
@@ -56,17 +56,10 @@
DECL_PRIMITIVE_GETTER(name, type) \
DECL_PRIMITIVE_SETTER(name, type)
-#define DECL_SYNCHRONIZED_PRIMITIVE_ACCESSORS(name, type) \
- inline type synchronized_##name() const; \
- inline void synchronized_set_##name(type value);
-
#define DECL_BOOLEAN_ACCESSORS(name) DECL_PRIMITIVE_ACCESSORS(name, bool)
#define DECL_INT_ACCESSORS(name) DECL_PRIMITIVE_ACCESSORS(name, int)
-#define DECL_SYNCHRONIZED_INT_ACCESSORS(name) \
- DECL_SYNCHRONIZED_PRIMITIVE_ACCESSORS(name, int)
-
#define DECL_INT32_ACCESSORS(name) DECL_PRIMITIVE_ACCESSORS(name, int32_t)
#define DECL_UINT16_ACCESSORS(name) \
@@ -324,21 +317,29 @@
#define SMI_ACCESSORS(holder, name, offset) \
SMI_ACCESSORS_CHECKED(holder, name, offset, true)
-#define SYNCHRONIZED_SMI_ACCESSORS(holder, name, offset) \
- int holder::synchronized_##name() const { \
+#define DECL_RELEASE_ACQUIRE_INT_ACCESSORS(name) \
+ inline int name(AcquireLoadTag) const; \
+ inline void set_##name(int value, ReleaseStoreTag);
+
+#define RELEASE_ACQUIRE_SMI_ACCESSORS(holder, name, offset) \
+ int holder::name(AcquireLoadTag) const { \
Smi value = TaggedField<Smi, offset>::Acquire_Load(*this); \
return value.value(); \
} \
- void holder::synchronized_set_##name(int value) { \
+ void holder::set_##name(int value, ReleaseStoreTag) { \
TaggedField<Smi, offset>::Release_Store(*this, Smi::FromInt(value)); \
}
+#define DECL_RELAXED_SMI_ACCESSORS(name) \
+ inline int name(RelaxedLoadTag) const; \
+ inline void set_##name(int value, RelaxedStoreTag);
+
#define RELAXED_SMI_ACCESSORS(holder, name, offset) \
- int holder::relaxed_read_##name() const { \
+ int holder::name(RelaxedLoadTag) const { \
Smi value = TaggedField<Smi, offset>::Relaxed_Load(*this); \
return value.value(); \
} \
- void holder::relaxed_write_##name(int value) { \
+ void holder::set_##name(int value, RelaxedStoreTag) { \
TaggedField<Smi, offset>::Relaxed_Store(*this, Smi::FromInt(value)); \
}
@@ -604,7 +605,7 @@ static_assert(sizeof(unsigned) == sizeof(uint32_t),
static_cast<base::Atomic8>(value));
#ifdef OBJECT_PRINT
-#define DECL_PRINTER(Name) void Name##Print(std::ostream& os); // NOLINT
+#define DECL_PRINTER(Name) void Name##Print(std::ostream& os);
#else
#define DECL_PRINTER(Name)
#endif
diff --git a/deps/v8/src/objects/objects-body-descriptors-inl.h b/deps/v8/src/objects/objects-body-descriptors-inl.h
index 2ffe2a4414..18dceb527d 100644
--- a/deps/v8/src/objects/objects-body-descriptors-inl.h
+++ b/deps/v8/src/objects/objects-body-descriptors-inl.h
@@ -15,6 +15,7 @@
#include "src/objects/hash-table.h"
#include "src/objects/js-collection.h"
#include "src/objects/js-weak-refs.h"
+#include "src/objects/megadom-handler-inl.h"
#include "src/objects/objects-body-descriptors.h"
#include "src/objects/oddball.h"
#include "src/objects/ordered-hash-table-inl.h"
@@ -103,12 +104,17 @@ DISABLE_CFI_PERF void BodyDescriptorBase::IteratePointers(HeapObject obj,
int start_offset,
int end_offset,
ObjectVisitor* v) {
+ if (start_offset == HeapObject::kMapOffset) {
+ v->VisitMapPointer(obj);
+ start_offset += kTaggedSize;
+ }
v->VisitPointers(obj, obj.RawField(start_offset), obj.RawField(end_offset));
}
template <typename ObjectVisitor>
void BodyDescriptorBase::IteratePointer(HeapObject obj, int offset,
ObjectVisitor* v) {
+ DCHECK_NE(offset, HeapObject::kMapOffset);
v->VisitPointer(obj, obj.RawField(offset));
}
@@ -122,6 +128,7 @@ DISABLE_CFI_PERF void BodyDescriptorBase::IterateMaybeWeakPointers(
template <typename ObjectVisitor>
void BodyDescriptorBase::IterateMaybeWeakPointer(HeapObject obj, int offset,
ObjectVisitor* v) {
+ DCHECK_NE(offset, HeapObject::kMapOffset);
v->VisitPointer(obj, obj.RawMaybeWeakField(offset));
}
@@ -423,7 +430,7 @@ class ByteArray::BodyDescriptor final : public BodyDescriptorBase {
ObjectVisitor* v) {}
static inline int SizeOf(Map map, HeapObject obj) {
- return ByteArray::SizeFor(ByteArray::cast(obj).synchronized_length());
+ return ByteArray::SizeFor(ByteArray::cast(obj).length(kAcquireLoad));
}
};
@@ -444,7 +451,7 @@ class BytecodeArray::BodyDescriptor final : public BodyDescriptorBase {
static inline int SizeOf(Map map, HeapObject obj) {
return BytecodeArray::SizeFor(
- BytecodeArray::cast(obj).synchronized_length());
+ BytecodeArray::cast(obj).length(kAcquireLoad));
}
};
@@ -457,7 +464,7 @@ class BigInt::BodyDescriptor final : public BodyDescriptorBase {
ObjectVisitor* v) {}
static inline int SizeOf(Map map, HeapObject obj) {
- return BigInt::SizeFor(BigInt::cast(obj).synchronized_length());
+ return BigInt::SizeFor(BigInt::cast(obj).length(kAcquireLoad));
}
};
@@ -471,7 +478,7 @@ class FixedDoubleArray::BodyDescriptor final : public BodyDescriptorBase {
static inline int SizeOf(Map map, HeapObject obj) {
return FixedDoubleArray::SizeFor(
- FixedDoubleArray::cast(obj).synchronized_length());
+ FixedDoubleArray::cast(obj).length(kAcquireLoad));
}
};
@@ -582,6 +589,43 @@ class WasmTypeInfo::BodyDescriptor final : public BodyDescriptorBase {
static inline int SizeOf(Map map, HeapObject object) { return kSize; }
};
+class WasmJSFunctionData::BodyDescriptor final : public BodyDescriptorBase {
+ public:
+ static bool IsValidSlot(Map map, HeapObject obj, int offset) {
+ UNREACHABLE();
+ }
+
+ template <typename ObjectVisitor>
+ static inline void IterateBody(Map map, HeapObject obj, int object_size,
+ ObjectVisitor* v) {
+ Foreign::BodyDescriptor::IterateBody<ObjectVisitor>(map, obj, object_size,
+ v);
+ IteratePointers(obj, WasmFunctionData::kStartOfStrongFieldsOffset,
+ kEndOfStrongFieldsOffset, v);
+ }
+
+ static inline int SizeOf(Map map, HeapObject object) { return kSize; }
+};
+
+class WasmExportedFunctionData::BodyDescriptor final
+ : public BodyDescriptorBase {
+ public:
+ static bool IsValidSlot(Map map, HeapObject obj, int offset) {
+ UNREACHABLE();
+ }
+
+ template <typename ObjectVisitor>
+ static inline void IterateBody(Map map, HeapObject obj, int object_size,
+ ObjectVisitor* v) {
+ Foreign::BodyDescriptor::IterateBody<ObjectVisitor>(map, obj, object_size,
+ v);
+ IteratePointers(obj, WasmFunctionData::kStartOfStrongFieldsOffset,
+ kEndOfStrongFieldsOffset, v);
+ }
+
+ static inline int SizeOf(Map map, HeapObject object) { return kSize; }
+};
+
class WasmInstanceObject::BodyDescriptor final : public BodyDescriptorBase {
public:
static bool IsValidSlot(Map map, HeapObject obj, int offset) {
@@ -655,7 +699,7 @@ class WasmStruct::BodyDescriptor final : public BodyDescriptorBase {
}
static inline int SizeOf(Map map, HeapObject object) {
- return map.instance_size();
+ return WasmStruct::GcSafeSize(map);
}
};
@@ -944,6 +988,12 @@ ReturnType BodyDescriptorApply(InstanceType type, T1 p1, T2 p2, T3 p3, T4 p4) {
#if V8_ENABLE_WEBASSEMBLY
case WASM_ARRAY_TYPE:
return Op::template apply<WasmArray::BodyDescriptor>(p1, p2, p3, p4);
+ case WASM_EXPORTED_FUNCTION_DATA_TYPE:
+ return Op::template apply<WasmExportedFunctionData::BodyDescriptor>(
+ p1, p2, p3, p4);
+ case WASM_JS_FUNCTION_DATA_TYPE:
+ return Op::template apply<WasmJSFunctionData::BodyDescriptor>(p1, p2, p3,
+ p4);
case WASM_STRUCT_TYPE:
return Op::template apply<WasmStruct::BodyDescriptor>(p1, p2, p3, p4);
case WASM_TYPE_INFO_TYPE:
@@ -1134,7 +1184,7 @@ ReturnType BodyDescriptorApply(InstanceType type, T1 p1, T2 p2, T3 p3, T4 p4) {
template <typename ObjectVisitor>
void HeapObject::IterateFast(ObjectVisitor* v) {
- BodyDescriptorBase::IteratePointer(*this, kMapOffset, v);
+ v->VisitMapPointer(*this);
IterateBodyFast(v);
}
diff --git a/deps/v8/src/objects/objects-definitions.h b/deps/v8/src/objects/objects-definitions.h
index 43560caab8..20ce96aae5 100644
--- a/deps/v8/src/objects/objects-definitions.h
+++ b/deps/v8/src/objects/objects-definitions.h
@@ -152,12 +152,8 @@ namespace internal {
template_object_description) \
V(_, TUPLE2_TYPE, Tuple2, tuple2) \
IF_WASM(V, _, WASM_EXCEPTION_TAG_TYPE, WasmExceptionTag, wasm_exception_tag) \
- IF_WASM(V, _, WASM_EXPORTED_FUNCTION_DATA_TYPE, WasmExportedFunctionData, \
- wasm_exported_function_data) \
IF_WASM(V, _, WASM_INDIRECT_FUNCTION_TABLE_TYPE, WasmIndirectFunctionTable, \
- wasm_indirect_function_table) \
- IF_WASM(V, _, WASM_JS_FUNCTION_DATA_TYPE, WasmJSFunctionData, \
- wasm_js_function_data)
+ wasm_indirect_function_table)
// Adapts one STRUCT_LIST_GENERATOR entry to the STRUCT_LIST entry
#define STRUCT_LIST_ADAPTER(V, NAME, Name, name) V(NAME, Name, name)
diff --git a/deps/v8/src/objects/objects-inl.h b/deps/v8/src/objects/objects-inl.h
index c94feca250..1a0ff834b2 100644
--- a/deps/v8/src/objects/objects-inl.h
+++ b/deps/v8/src/objects/objects-inl.h
@@ -16,6 +16,7 @@
#include "src/base/memory.h"
#include "src/builtins/builtins.h"
#include "src/common/external-pointer-inl.h"
+#include "src/common/globals.h"
#include "src/handles/handles-inl.h"
#include "src/heap/factory.h"
#include "src/heap/heap-write-barrier-inl.h"
@@ -42,7 +43,6 @@
#include "src/objects/tagged-impl-inl.h"
#include "src/objects/tagged-index.h"
#include "src/objects/templates.h"
-#include "src/sanitizer/tsan.h"
// Has to be the last include (doesn't have include guards):
#include "src/objects/object-macros.h"
@@ -631,10 +631,9 @@ void Object::InitExternalPointerField(size_t offset, Isolate* isolate,
i::InitExternalPointerField(field_address(offset), isolate, value, tag);
}
-Address Object::ReadExternalPointerField(size_t offset,
- PtrComprCageBase isolate_root,
+Address Object::ReadExternalPointerField(size_t offset, Isolate* isolate,
ExternalPointerTag tag) const {
- return i::ReadExternalPointerField(field_address(offset), isolate_root, tag);
+ return i::ReadExternalPointerField(field_address(offset), isolate, tag);
}
void Object::WriteExternalPointerField(size_t offset, Isolate* isolate,
@@ -650,11 +649,26 @@ MaybeObjectSlot HeapObject::RawMaybeWeakField(int byte_offset) const {
return MaybeObjectSlot(field_address(byte_offset));
}
-MapWord MapWord::FromMap(const Map map) { return MapWord(map.ptr()); }
+MapWord MapWord::FromMap(const Map map) {
+ DCHECK(map.is_null() || !MapWord::IsPacked(map.ptr()));
+#ifdef V8_MAP_PACKING
+ return MapWord(Pack(map.ptr()));
+#else
+ return MapWord(map.ptr());
+#endif
+}
-Map MapWord::ToMap() const { return Map::unchecked_cast(Object(value_)); }
+Map MapWord::ToMap() const {
+#ifdef V8_MAP_PACKING
+ return Map::unchecked_cast(Object(Unpack(value_)));
+#else
+ return Map::unchecked_cast(Object(value_));
+#endif
+}
-bool MapWord::IsForwardingAddress() const { return HAS_SMI_TAG(value_); }
+bool MapWord::IsForwardingAddress() const {
+ return (value_ & kForwardingTagMask) == kForwardingTag;
+}
MapWord MapWord::FromForwardingAddress(HeapObject object) {
return MapWord(object.ptr() - kHeapObjectTag);
@@ -697,7 +711,9 @@ ReadOnlyRoots HeapObject::GetReadOnlyRoots(PtrComprCageBase cage_base) const {
#endif
}
-DEF_GETTER(HeapObject, map, Map) { return map_word(cage_base).ToMap(); }
+DEF_GETTER(HeapObject, map, Map) {
+ return map_word(cage_base, kRelaxedLoad).ToMap();
+}
void HeapObject::set_map(Map value) {
#ifdef VERIFY_HEAP
@@ -705,7 +721,7 @@ void HeapObject::set_map(Map value) {
GetHeapFromWritableObject(*this)->VerifyObjectLayoutChange(*this, value);
}
#endif
- set_map_word(MapWord::FromMap(value));
+ set_map_word(MapWord::FromMap(value), kRelaxedStore);
#ifndef V8_DISABLE_WRITE_BARRIERS
if (!value.is_null()) {
// TODO(1600) We are passing kNullAddress as a slot because maps can never
@@ -715,17 +731,21 @@ void HeapObject::set_map(Map value) {
#endif
}
-DEF_GETTER(HeapObject, synchronized_map, Map) {
- return synchronized_map_word(cage_base).ToMap();
+Map HeapObject::map(AcquireLoadTag tag) const {
+ PtrComprCageBase cage_base = GetPtrComprCageBase(*this);
+ return HeapObject::map(cage_base, tag);
+}
+Map HeapObject::map(PtrComprCageBase cage_base, AcquireLoadTag tag) const {
+ return map_word(cage_base, tag).ToMap();
}
-void HeapObject::synchronized_set_map(Map value) {
+void HeapObject::set_map(Map value, ReleaseStoreTag tag) {
#ifdef VERIFY_HEAP
if (FLAG_verify_heap && !value.is_null()) {
GetHeapFromWritableObject(*this)->VerifyObjectLayoutChange(*this, value);
}
#endif
- synchronized_set_map_word(MapWord::FromMap(value));
+ set_map_word(MapWord::FromMap(value), tag);
#ifndef V8_DISABLE_WRITE_BARRIERS
if (!value.is_null()) {
// TODO(1600) We are passing kNullAddress as a slot because maps can never
@@ -742,11 +762,12 @@ void HeapObject::set_map_no_write_barrier(Map value) {
GetHeapFromWritableObject(*this)->VerifyObjectLayoutChange(*this, value);
}
#endif
- set_map_word(MapWord::FromMap(value));
+ set_map_word(MapWord::FromMap(value), kRelaxedStore);
}
void HeapObject::set_map_after_allocation(Map value, WriteBarrierMode mode) {
- set_map_word(MapWord::FromMap(value));
+ MapWord mapword = MapWord::FromMap(value);
+ set_map_word(mapword, kRelaxedStore);
#ifndef V8_DISABLE_WRITE_BARRIERS
if (mode != SKIP_WRITE_BARRIER) {
DCHECK(!value.is_null());
@@ -761,20 +782,28 @@ ObjectSlot HeapObject::map_slot() const {
return ObjectSlot(MapField::address(*this));
}
-DEF_GETTER(HeapObject, map_word, MapWord) {
- return MapField::Relaxed_Load(cage_base, *this);
+MapWord HeapObject::map_word(RelaxedLoadTag tag) const {
+ PtrComprCageBase cage_base = GetPtrComprCageBase(*this);
+ return HeapObject::map_word(cage_base, tag);
+}
+MapWord HeapObject::map_word(PtrComprCageBase cage_base, RelaxedLoadTag) const {
+ return MapField::Relaxed_Load_Map_Word(cage_base, *this);
}
-void HeapObject::set_map_word(MapWord map_word) {
- MapField::Relaxed_Store(*this, map_word);
+void HeapObject::set_map_word(MapWord map_word, RelaxedStoreTag) {
+ MapField::Relaxed_Store_Map_Word(*this, map_word);
}
-DEF_GETTER(HeapObject, synchronized_map_word, MapWord) {
- return MapField::Acquire_Load(cage_base, *this);
+MapWord HeapObject::map_word(AcquireLoadTag tag) const {
+ PtrComprCageBase cage_base = GetPtrComprCageBase(*this);
+ return HeapObject::map_word(cage_base, tag);
+}
+MapWord HeapObject::map_word(PtrComprCageBase cage_base, AcquireLoadTag) const {
+ return MapField::Acquire_Load_No_Unpack(cage_base, *this);
}
-void HeapObject::synchronized_set_map_word(MapWord map_word) {
- MapField::Release_Store(*this, map_word);
+void HeapObject::set_map_word(MapWord map_word, ReleaseStoreTag) {
+ MapField::Release_Store_Map_Word(*this, map_word);
}
bool HeapObject::release_compare_and_swap_map_word(MapWord old_map_word,
@@ -1081,8 +1110,7 @@ static inline uint32_t ObjectAddressForHashing(Address object) {
static inline Handle<Object> MakeEntryPair(Isolate* isolate, size_t index,
Handle<Object> value) {
Handle<Object> key = isolate->factory()->SizeToString(index);
- Handle<FixedArray> entry_storage =
- isolate->factory()->NewUninitializedFixedArray(2);
+ Handle<FixedArray> entry_storage = isolate->factory()->NewFixedArray(2);
{
entry_storage->set(0, *key, SKIP_WRITE_BARRIER);
entry_storage->set(1, *value, SKIP_WRITE_BARRIER);
@@ -1093,8 +1121,7 @@ static inline Handle<Object> MakeEntryPair(Isolate* isolate, size_t index,
static inline Handle<Object> MakeEntryPair(Isolate* isolate, Handle<Object> key,
Handle<Object> value) {
- Handle<FixedArray> entry_storage =
- isolate->factory()->NewUninitializedFixedArray(2);
+ Handle<FixedArray> entry_storage = isolate->factory()->NewFixedArray(2);
{
entry_storage->set(0, *key, SKIP_WRITE_BARRIER);
entry_storage->set(1, *value, SKIP_WRITE_BARRIER);
diff --git a/deps/v8/src/objects/objects.cc b/deps/v8/src/objects/objects.cc
index a57d762fd4..74b970b545 100644
--- a/deps/v8/src/objects/objects.cc
+++ b/deps/v8/src/objects/objects.cc
@@ -41,7 +41,6 @@
#include "src/heap/read-only-heap.h"
#include "src/ic/ic.h"
#include "src/init/bootstrapper.h"
-#include "src/logging/counters-inl.h"
#include "src/logging/counters.h"
#include "src/logging/log.h"
#include "src/objects/allocation-site-inl.h"
@@ -102,6 +101,7 @@
#include "src/objects/literal-objects-inl.h"
#include "src/objects/map-inl.h"
#include "src/objects/map.h"
+#include "src/objects/megadom-handler-inl.h"
#include "src/objects/microtask-inl.h"
#include "src/objects/module-inl.h"
#include "src/objects/promise-inl.h"
@@ -1320,8 +1320,8 @@ Handle<SharedFunctionInfo> FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(
return result;
}
-bool FunctionTemplateInfo::IsTemplateFor(Map map) {
- RuntimeCallTimerScope timer(
+bool FunctionTemplateInfo::IsTemplateFor(Map map) const {
+ RCS_SCOPE(
LocalHeap::Current() == nullptr
? GetIsolate()->counters()->runtime_call_stats()
: LocalIsolate::FromHeap(LocalHeap::Current())->runtime_call_stats(),
@@ -1350,16 +1350,32 @@ bool FunctionTemplateInfo::IsTemplateFor(Map map) {
return false;
}
+bool FunctionTemplateInfo::IsLeafTemplateForApiObject(Object object) const {
+ i::DisallowGarbageCollection no_gc;
+
+ if (!object.IsJSApiObject()) {
+ return false;
+ }
+
+ bool result = false;
+ Map map = HeapObject::cast(object).map();
+ Object constructor_obj = map.GetConstructor();
+ if (constructor_obj.IsJSFunction()) {
+ JSFunction fun = JSFunction::cast(constructor_obj);
+ result = (*this == fun.shared().function_data(kAcquireLoad));
+ } else if (constructor_obj.IsFunctionTemplateInfo()) {
+ result = (*this == constructor_obj);
+ }
+ DCHECK_IMPLIES(result, IsTemplateFor(map));
+ return result;
+}
+
// static
FunctionTemplateRareData FunctionTemplateInfo::AllocateFunctionTemplateRareData(
Isolate* isolate, Handle<FunctionTemplateInfo> function_template_info) {
DCHECK(function_template_info->rare_data(kAcquireLoad).IsUndefined(isolate));
- Handle<Struct> struct_obj = isolate->factory()->NewStruct(
- FUNCTION_TEMPLATE_RARE_DATA_TYPE, AllocationType::kOld);
Handle<FunctionTemplateRareData> rare_data =
- i::Handle<FunctionTemplateRareData>::cast(struct_obj);
- rare_data->set_c_function(Smi(0));
- rare_data->set_c_signature(Smi(0));
+ isolate->factory()->NewFunctionTemplateRareData();
function_template_info->set_rare_data(*rare_data, kReleaseStore);
return *rare_data;
}
@@ -1887,11 +1903,9 @@ std::ostream& operator<<(std::ostream& os, const Brief& v) {
return os;
}
-void Smi::SmiPrint(std::ostream& os) const { // NOLINT
- os << value();
-}
+void Smi::SmiPrint(std::ostream& os) const { os << value(); }
-void HeapObject::HeapObjectShortPrint(std::ostream& os) { // NOLINT
+void HeapObject::HeapObjectShortPrint(std::ostream& os) {
os << AsHex::Address(this->ptr()) << " ";
if (IsString()) {
@@ -2043,7 +2057,7 @@ void HeapObject::HeapObjectShortPrint(std::ostream& os) { // NOLINT
os << "<FeedbackVector[" << FeedbackVector::cast(*this).length() << "]>";
break;
case FREE_SPACE_TYPE:
- os << "<FreeSpace[" << FreeSpace::cast(*this).size() << "]>";
+ os << "<FreeSpace[" << FreeSpace::cast(*this).size(kRelaxedLoad) << "]>";
break;
case PREPARSE_DATA_TYPE: {
@@ -2200,6 +2214,10 @@ void Tuple2::BriefPrintDetails(std::ostream& os) {
os << " " << Brief(value1()) << ", " << Brief(value2());
}
+void MegaDomHandler::BriefPrintDetails(std::ostream& os) {
+ os << " " << Brief(accessor()) << ", " << Brief(context());
+}
+
void ClassPositions::BriefPrintDetails(std::ostream& os) {
os << " " << start() << ", " << end();
}
@@ -2240,7 +2258,7 @@ int HeapObject::SizeFromMap(Map map) const {
if (base::IsInRange(instance_type, FIRST_FIXED_ARRAY_TYPE,
LAST_FIXED_ARRAY_TYPE)) {
return FixedArray::SizeFor(
- FixedArray::unchecked_cast(*this).synchronized_length());
+ FixedArray::unchecked_cast(*this).length(kAcquireLoad));
}
if (base::IsInRange(instance_type, FIRST_CONTEXT_TYPE, LAST_CONTEXT_TYPE)) {
if (instance_type == NATIVE_CONTEXT_TYPE) return NativeContext::kSize;
@@ -2251,29 +2269,29 @@ int HeapObject::SizeFromMap(Map map) const {
// Strings may get concurrently truncated, hence we have to access its
// length synchronized.
return SeqOneByteString::SizeFor(
- SeqOneByteString::unchecked_cast(*this).synchronized_length());
+ SeqOneByteString::unchecked_cast(*this).length(kAcquireLoad));
}
if (instance_type == BYTE_ARRAY_TYPE) {
return ByteArray::SizeFor(
- ByteArray::unchecked_cast(*this).synchronized_length());
+ ByteArray::unchecked_cast(*this).length(kAcquireLoad));
}
if (instance_type == BYTECODE_ARRAY_TYPE) {
return BytecodeArray::SizeFor(
- BytecodeArray::unchecked_cast(*this).synchronized_length());
+ BytecodeArray::unchecked_cast(*this).length(kAcquireLoad));
}
if (instance_type == FREE_SPACE_TYPE) {
- return FreeSpace::unchecked_cast(*this).relaxed_read_size();
+ return FreeSpace::unchecked_cast(*this).size(kRelaxedLoad);
}
if (instance_type == STRING_TYPE ||
instance_type == INTERNALIZED_STRING_TYPE) {
// Strings may get concurrently truncated, hence we have to access its
// length synchronized.
return SeqTwoByteString::SizeFor(
- SeqTwoByteString::unchecked_cast(*this).synchronized_length());
+ SeqTwoByteString::unchecked_cast(*this).length(kAcquireLoad));
}
if (instance_type == FIXED_DOUBLE_ARRAY_TYPE) {
return FixedDoubleArray::SizeFor(
- FixedDoubleArray::unchecked_cast(*this).synchronized_length());
+ FixedDoubleArray::unchecked_cast(*this).length(kAcquireLoad));
}
if (instance_type == FEEDBACK_METADATA_TYPE) {
return FeedbackMetadata::SizeFor(
@@ -2287,11 +2305,11 @@ int HeapObject::SizeFromMap(Map map) const {
if (base::IsInRange(instance_type, FIRST_WEAK_FIXED_ARRAY_TYPE,
LAST_WEAK_FIXED_ARRAY_TYPE)) {
return WeakFixedArray::SizeFor(
- WeakFixedArray::unchecked_cast(*this).synchronized_length());
+ WeakFixedArray::unchecked_cast(*this).length(kAcquireLoad));
}
if (instance_type == WEAK_ARRAY_LIST_TYPE) {
return WeakArrayList::SizeForCapacity(
- WeakArrayList::unchecked_cast(*this).synchronized_capacity());
+ WeakArrayList::unchecked_cast(*this).capacity());
}
if (instance_type == SMALL_ORDERED_HASH_SET_TYPE) {
return SmallOrderedHashSet::SizeFor(
@@ -2311,7 +2329,7 @@ int HeapObject::SizeFromMap(Map map) const {
}
if (instance_type == PROPERTY_ARRAY_TYPE) {
return PropertyArray::SizeFor(
- PropertyArray::cast(*this).synchronized_length());
+ PropertyArray::cast(*this).length(kAcquireLoad));
}
if (instance_type == FEEDBACK_VECTOR_TYPE) {
return FeedbackVector::SizeFor(
@@ -2339,6 +2357,9 @@ int HeapObject::SizeFromMap(Map map) const {
CoverageInfo::unchecked_cast(*this).slot_count());
}
#if V8_ENABLE_WEBASSEMBLY
+ if (instance_type == WASM_STRUCT_TYPE) {
+ return WasmStruct::GcSafeSize(map);
+ }
if (instance_type == WASM_ARRAY_TYPE) {
return WasmArray::GcSafeSizeFor(map, WasmArray::cast(*this).length());
}
@@ -2822,6 +2843,7 @@ Maybe<bool> Object::SetDataProperty(LookupIterator* it, Handle<Object> value) {
Handle<Object> to_assign = value;
// Convert the incoming value to a number for storing into typed arrays.
+ // TODO(v8:11111): Support RAB / GSAB.
if (it->IsElement() && receiver->IsJSObject() &&
JSObject::cast(*receiver).HasTypedArrayElements()) {
ElementsKind elements_kind = JSObject::cast(*receiver).GetElementsKind();
@@ -2912,8 +2934,9 @@ Maybe<bool> Object::AddDataProperty(LookupIterator* it, Handle<Object> value,
}
Handle<JSObject> receiver_obj = Handle<JSObject>::cast(receiver);
- JSObject::AddDataElement(receiver_obj, it->array_index(), value,
- attributes);
+ MAYBE_RETURN(JSObject::AddDataElement(receiver_obj, it->array_index(),
+ value, attributes),
+ Nothing<bool>());
JSObject::ValidateElements(*receiver_obj);
return Just(true);
} else {
@@ -3406,10 +3429,13 @@ Maybe<bool> JSArray::ArraySetLength(Isolate* isolate, Handle<JSArray> a,
}
// 13. If oldLenDesc.[[Writable]] is false, return false.
if (!old_len_desc.writable() ||
- // Also handle the {configurable: true} case since we later use
- // JSArray::SetLength instead of OrdinaryDefineOwnProperty to change
- // the length, and it doesn't have access to the descriptor anymore.
- new_len_desc->configurable()) {
+ // Also handle the {configurable: true} and enumerable changes
+ // since we later use JSArray::SetLength instead of
+ // OrdinaryDefineOwnProperty to change the length,
+ // and it doesn't have access to the descriptor anymore.
+ new_len_desc->configurable() ||
+ (new_len_desc->has_enumerable() &&
+ (old_len_desc.enumerable() != new_len_desc->enumerable()))) {
RETURN_FAILURE(isolate, GetShouldThrow(isolate, should_throw),
NewTypeError(MessageTemplate::kRedefineDisallowed,
isolate->factory()->length_string()));
@@ -3428,7 +3454,7 @@ Maybe<bool> JSArray::ArraySetLength(Isolate* isolate, Handle<JSArray> a,
// (Not needed.)
}
// Most of steps 16 through 19 is implemented by JSArray::SetLength.
- JSArray::SetLength(a, new_len);
+ MAYBE_RETURN(JSArray::SetLength(a, new_len), Nothing<bool>());
// Steps 19d-ii, 20.
if (!new_writable) {
PropertyDescriptor readonly;
@@ -3966,8 +3992,7 @@ Handle<FixedArray> FixedArray::SetAndGrow(Isolate* isolate,
do {
capacity = JSObject::NewElementsCapacity(capacity);
} while (capacity <= index);
- Handle<FixedArray> new_array =
- isolate->factory()->NewUninitializedFixedArray(capacity);
+ Handle<FixedArray> new_array = isolate->factory()->NewFixedArray(capacity);
array->CopyTo(0, *new_array, 0, array->length());
new_array->FillWithHoles(array->length(), new_array->length());
new_array->set(index, *value);
@@ -4336,8 +4361,8 @@ Handle<RegExpMatchInfo> RegExpMatchInfo::ReserveCaptures(
return result;
}
-template <typename LocalIsolate>
-Handle<DescriptorArray> DescriptorArray::Allocate(LocalIsolate* isolate,
+template <typename IsolateT>
+Handle<DescriptorArray> DescriptorArray::Allocate(IsolateT* isolate,
int nof_descriptors,
int slack,
AllocationType allocation) {
@@ -4551,9 +4576,7 @@ void Relocatable::PostGarbageCollectionProcessing(Isolate* isolate) {
}
// Reserve space for statics needing saving and restoring.
-int Relocatable::ArchiveSpacePerThread() {
- return sizeof(Relocatable*); // NOLINT
-}
+int Relocatable::ArchiveSpacePerThread() { return sizeof(Relocatable*); }
// Archive statics that are thread-local.
char* Relocatable::ArchiveState(Isolate* isolate, char* to) {
@@ -4720,7 +4743,8 @@ Handle<Object> CacheInitialJSArrayMaps(Isolate* isolate,
Handle<Map> current_map = initial_map;
ElementsKind kind = current_map->elements_kind();
DCHECK_EQ(GetInitialFastElementsKind(), kind);
- native_context->set(Context::ArrayMapIndex(kind), *current_map);
+ native_context->set(Context::ArrayMapIndex(kind), *current_map,
+ UPDATE_WRITE_BARRIER, kReleaseStore);
for (int i = GetSequenceIndexFromFastElementsKind(kind) + 1;
i < kFastElementsKindCount; ++i) {
Handle<Map> new_map;
@@ -4733,7 +4757,8 @@ Handle<Object> CacheInitialJSArrayMaps(Isolate* isolate,
INSERT_TRANSITION);
}
DCHECK_EQ(next_kind, new_map->elements_kind());
- native_context->set(Context::ArrayMapIndex(next_kind), *new_map);
+ native_context->set(Context::ArrayMapIndex(next_kind), *new_map,
+ UPDATE_WRITE_BARRIER, kReleaseStore);
current_map = new_map;
}
return initial_map;
@@ -4783,9 +4808,9 @@ int Script::GetEvalPosition(Isolate* isolate, Handle<Script> script) {
return position;
}
-template <typename LocalIsolate>
+template <typename IsolateT>
// static
-void Script::InitLineEnds(LocalIsolate* isolate, Handle<Script> script) {
+void Script::InitLineEnds(IsolateT* isolate, Handle<Script> script) {
if (!script->line_ends().IsUndefined(isolate)) return;
#if V8_ENABLE_WEBASSEMBLY
DCHECK(script->type() != Script::TYPE_WASM ||
@@ -4996,16 +5021,23 @@ Object Script::GetNameOrSourceURL() {
return name();
}
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<SharedFunctionInfo> Script::FindSharedFunctionInfo(
- LocalIsolate* isolate, int function_literal_id) {
+ Handle<Script> script, IsolateT* isolate,
+ FunctionLiteral* function_literal) {
+ int function_literal_id = function_literal->function_literal_id();
+ if V8_UNLIKELY (script->type() == Script::TYPE_WEB_SNAPSHOT &&
+ function_literal_id >= script->shared_function_info_count()) {
+ return FindWebSnapshotSharedFunctionInfo(script, isolate, function_literal);
+ }
+
CHECK_NE(function_literal_id, kFunctionLiteralIdInvalid);
// If this check fails, the problem is most probably the function id
// renumbering done by AstFunctionLiteralIdReindexer; in particular, that
// AstTraversalVisitor doesn't recurse properly in the construct which
// triggers the mismatch.
- CHECK_LT(function_literal_id, shared_function_infos().length());
- MaybeObject shared = shared_function_infos().Get(function_literal_id);
+ CHECK_LT(function_literal_id, script->shared_function_info_count());
+ MaybeObject shared = script->shared_function_infos().Get(function_literal_id);
HeapObject heap_object;
if (!shared->GetHeapObject(&heap_object) ||
heap_object.IsUndefined(isolate)) {
@@ -5014,9 +5046,81 @@ MaybeHandle<SharedFunctionInfo> Script::FindSharedFunctionInfo(
return handle(SharedFunctionInfo::cast(heap_object), isolate);
}
template MaybeHandle<SharedFunctionInfo> Script::FindSharedFunctionInfo(
- Isolate* isolate, int function_literal_id);
+ Handle<Script> script, Isolate* isolate, FunctionLiteral* function_literal);
template MaybeHandle<SharedFunctionInfo> Script::FindSharedFunctionInfo(
- LocalIsolate* isolate, int function_literal_id);
+ Handle<Script> script, LocalIsolate* isolate,
+ FunctionLiteral* function_literal);
+
+MaybeHandle<SharedFunctionInfo> Script::FindWebSnapshotSharedFunctionInfo(
+ Handle<Script> script, Isolate* isolate,
+ FunctionLiteral* function_literal) {
+ // We might be able to de-dupe the SFI against a SFI that was
+ // created when deserializing the snapshot (or when calling a function which
+ // was included in the snapshot). In that case, we can find it based on the
+ // start position in shared_function_info_table.
+ Handle<ObjectHashTable> shared_function_info_table = handle(
+ ObjectHashTable::cast(script->shared_function_info_table()), isolate);
+ {
+ DisallowHeapAllocation no_gc;
+ Object index_object = shared_function_info_table->Lookup(
+ handle(Smi::FromInt(function_literal->start_position()), isolate));
+ if (!index_object.IsTheHole()) {
+ int index = Smi::cast(index_object).value();
+ DCHECK_LT(index, script->shared_function_info_count());
+ MaybeObject maybe_shared = script->shared_function_infos().Get(index);
+ HeapObject heap_object;
+ if (!maybe_shared->GetHeapObject(&heap_object)) {
+ // We found the correct location but it's not filled in (e.g., the weak
+ // pointer to the SharedFunctionInfo has been cleared). Record the
+ // location in the FunctionLiteral, so that it will be refilled later.
+ // SharedFunctionInfo::SetScript will write the SharedFunctionInfo in
+ // the shared_function_infos.
+ function_literal->set_function_literal_id(index);
+ return MaybeHandle<SharedFunctionInfo>();
+ }
+ SharedFunctionInfo shared = SharedFunctionInfo::cast(heap_object);
+ DCHECK_EQ(shared.StartPosition(), function_literal->start_position());
+ DCHECK_EQ(shared.EndPosition(), function_literal->end_position());
+ return handle(shared, isolate);
+ }
+ }
+
+ // It's possible that FunctionLiterals which were processed before this one
+ // were deduplicated against existing ones. Decrease function_literal_id to
+ // avoid holes in shared_function_infos.
+ int old_length = script->shared_function_info_count();
+ int function_literal_id = old_length;
+ function_literal->set_function_literal_id(function_literal_id);
+
+ // Also add to shared_function_info_table.
+ shared_function_info_table = ObjectHashTable::Put(
+ shared_function_info_table,
+ handle(Smi::FromInt(function_literal->start_position()), isolate),
+ handle(Smi::FromInt(function_literal_id), isolate));
+ script->set_shared_function_info_table(*shared_function_info_table);
+
+ // Grow shared_function_infos if needed (we don't know the correct amount of
+ // space needed upfront).
+ int new_length = old_length + 1;
+ Handle<WeakFixedArray> old_infos =
+ handle(script->shared_function_infos(), isolate);
+ if (new_length > old_infos->length()) {
+ int capacity = WeakArrayList::CapacityForLength(new_length);
+ Handle<WeakFixedArray> new_infos(
+ isolate->factory()->NewWeakFixedArray(capacity, AllocationType::kOld));
+ new_infos->CopyElements(isolate, 0, *old_infos, 0, old_length,
+ WriteBarrierMode::UPDATE_WRITE_BARRIER);
+ script->set_shared_function_infos(*new_infos);
+ }
+ return MaybeHandle<SharedFunctionInfo>();
+}
+
+MaybeHandle<SharedFunctionInfo> Script::FindWebSnapshotSharedFunctionInfo(
+ Handle<Script> script, LocalIsolate* isolate,
+ FunctionLiteral* function_literal) {
+ // Off-thread serialization of web snapshots is not implemented.
+ UNREACHABLE();
+}
Script::Iterator::Iterator(Isolate* isolate)
: iterator_(isolate->heap()->script_list()) {}
@@ -5036,13 +5140,13 @@ void JSArray::Initialize(Handle<JSArray> array, int capacity, int length) {
array, length, capacity, INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE);
}
-void JSArray::SetLength(Handle<JSArray> array, uint32_t new_length) {
+Maybe<bool> JSArray::SetLength(Handle<JSArray> array, uint32_t new_length) {
// We should never end in here with a pixel or external array.
DCHECK(array->AllowsSetLength());
if (array->SetLengthWouldNormalize(new_length)) {
JSObject::NormalizeElements(array);
}
- array->GetElementsAccessor()->SetLength(array, new_length);
+ return array->GetElementsAccessor()->SetLength(array, new_length);
}
// ES6: 9.5.2 [[SetPrototypeOf]] (V)
@@ -5508,8 +5612,9 @@ Handle<Object> JSPromise::TriggerPromiseReactions(Isolate* isolate,
static_cast<int>(
PromiseReactionJobTask::kSizeOfAllPromiseReactionJobTasks));
if (type == PromiseReaction::kFulfill) {
- task->synchronized_set_map(
- ReadOnlyRoots(isolate).promise_fulfill_reaction_job_task_map());
+ task->set_map(
+ ReadOnlyRoots(isolate).promise_fulfill_reaction_job_task_map(),
+ kReleaseStore);
Handle<PromiseFulfillReactionJobTask>::cast(task)->set_argument(
*argument);
Handle<PromiseFulfillReactionJobTask>::cast(task)->set_context(
@@ -5528,8 +5633,9 @@ Handle<Object> JSPromise::TriggerPromiseReactions(Isolate* isolate,
kContinuationPreservedEmbedderDataOffset));
} else {
DisallowGarbageCollection no_gc;
- task->synchronized_set_map(
- ReadOnlyRoots(isolate).promise_reject_reaction_job_task_map());
+ task->set_map(
+ ReadOnlyRoots(isolate).promise_reject_reaction_job_task_map(),
+ kReleaseStore);
Handle<PromiseRejectReactionJobTask>::cast(task)->set_argument(*argument);
Handle<PromiseRejectReactionJobTask>::cast(task)->set_context(
*handler_context);
@@ -5568,9 +5674,9 @@ void HashTable<Derived, Shape>::IterateElements(ObjectVisitor* v) {
}
template <typename Derived, typename Shape>
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Derived> HashTable<Derived, Shape>::New(
- LocalIsolate* isolate, int at_least_space_for, AllocationType allocation,
+ IsolateT* isolate, int at_least_space_for, AllocationType allocation,
MinimumCapacity capacity_option) {
DCHECK_LE(0, at_least_space_for);
DCHECK_IMPLIES(capacity_option == USE_CUSTOM_MINIMUM_CAPACITY,
@@ -5586,9 +5692,9 @@ Handle<Derived> HashTable<Derived, Shape>::New(
}
template <typename Derived, typename Shape>
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Derived> HashTable<Derived, Shape>::NewInternal(
- LocalIsolate* isolate, int capacity, AllocationType allocation) {
+ IsolateT* isolate, int capacity, AllocationType allocation) {
auto* factory = isolate->factory();
int length = EntryToIndex(InternalIndex(capacity));
Handle<FixedArray> array = factory->NewFixedArrayWithMap(
@@ -5718,9 +5824,9 @@ void HashTable<Derived, Shape>::Rehash(PtrComprCageBase cage_base) {
}
template <typename Derived, typename Shape>
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Derived> HashTable<Derived, Shape>::EnsureCapacity(
- LocalIsolate* isolate, Handle<Derived> table, int n,
+ IsolateT* isolate, Handle<Derived> table, int n,
AllocationType allocation) {
if (table->HasSufficientCapacityToAdd(n)) return table;
@@ -5851,9 +5957,9 @@ Handle<ObjectHashSet> ObjectHashSet::Add(Isolate* isolate,
}
template <typename Derived, typename Shape>
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Derived> BaseNameDictionary<Derived, Shape>::New(
- LocalIsolate* isolate, int at_least_space_for, AllocationType allocation,
+ IsolateT* isolate, int at_least_space_for, AllocationType allocation,
MinimumCapacity capacity_option) {
DCHECK_LE(0, at_least_space_for);
Handle<Derived> dict = Dictionary<Derived, Shape>::New(
@@ -5925,10 +6031,10 @@ Handle<Derived> Dictionary<Derived, Shape>::AtPut(Isolate* isolate,
}
template <typename Derived, typename Shape>
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Derived>
BaseNameDictionary<Derived, Shape>::AddNoUpdateNextEnumerationIndex(
- LocalIsolate* isolate, Handle<Derived> dictionary, Key key,
+ IsolateT* isolate, Handle<Derived> dictionary, Key key,
Handle<Object> value, PropertyDetails details, InternalIndex* entry_out) {
// Insert element at empty or deleted entry.
return Dictionary<Derived, Shape>::Add(isolate, dictionary, key, value,
@@ -5954,8 +6060,8 @@ Handle<Derived> BaseNameDictionary<Derived, Shape>::Add(
}
template <typename Derived, typename Shape>
-template <typename LocalIsolate>
-Handle<Derived> Dictionary<Derived, Shape>::Add(LocalIsolate* isolate,
+template <typename IsolateT>
+Handle<Derived> Dictionary<Derived, Shape>::Add(IsolateT* isolate,
Handle<Derived> dictionary,
Key key, Handle<Object> value,
PropertyDetails details,
@@ -6576,17 +6682,33 @@ AccessCheckInfo AccessCheckInfo::Get(Isolate* isolate,
return AccessCheckInfo::cast(data_obj);
}
-MaybeHandle<Name> FunctionTemplateInfo::TryGetCachedPropertyName(
- Isolate* isolate, Handle<Object> getter) {
- if (getter->IsFunctionTemplateInfo()) {
- Handle<FunctionTemplateInfo> fti =
- Handle<FunctionTemplateInfo>::cast(getter);
- // Check if the accessor uses a cached property.
- if (!fti->cached_property_name().IsTheHole(isolate)) {
- return handle(Name::cast(fti->cached_property_name()), isolate);
- }
- }
- return MaybeHandle<Name>();
+base::Optional<Name> FunctionTemplateInfo::TryGetCachedPropertyName(
+ Isolate* isolate, Object getter) {
+ DisallowGarbageCollection no_gc;
+ if (!getter.IsFunctionTemplateInfo()) return {};
+ // Check if the accessor uses a cached property.
+ Object maybe_name = FunctionTemplateInfo::cast(getter).cached_property_name();
+ if (maybe_name.IsTheHole(isolate)) return {};
+ return Name::cast(maybe_name);
+}
+
+int FunctionTemplateInfo::GetCFunctionsCount() const {
+ i::DisallowHeapAllocation no_gc;
+ return FixedArray::cast(GetCFunctionOverloads()).length() /
+ kFunctionOverloadEntrySize;
+}
+
+Address FunctionTemplateInfo::GetCFunction(int index) const {
+ i::DisallowHeapAllocation no_gc;
+ return v8::ToCData<Address>(FixedArray::cast(GetCFunctionOverloads())
+ .get(index * kFunctionOverloadEntrySize));
+}
+
+const CFunctionInfo* FunctionTemplateInfo::GetCSignature(int index) const {
+ i::DisallowHeapAllocation no_gc;
+ return v8::ToCData<CFunctionInfo*>(
+ FixedArray::cast(GetCFunctionOverloads())
+ .get(index * kFunctionOverloadEntrySize + 1));
}
Address Smi::LexicographicCompare(Isolate* isolate, Smi x, Smi y) {
diff --git a/deps/v8/src/objects/objects.h b/deps/v8/src/objects/objects.h
index e4532bb0e5..e80098dfe8 100644
--- a/deps/v8/src/objects/objects.h
+++ b/deps/v8/src/objects/objects.h
@@ -602,7 +602,7 @@ class Object : public TaggedImpl<HeapObjectReferenceType::STRONG, Address> {
// Prints this object without details to a message accumulator.
V8_EXPORT_PRIVATE void ShortPrint(StringStream* accumulator) const;
- V8_EXPORT_PRIVATE void ShortPrint(std::ostream& os) const; // NOLINT
+ V8_EXPORT_PRIVATE void ShortPrint(std::ostream& os) const;
inline static Object cast(Object object) { return object; }
inline static Object unchecked_cast(Object object) { return object; }
@@ -615,10 +615,10 @@ class Object : public TaggedImpl<HeapObjectReferenceType::STRONG, Address> {
V8_EXPORT_PRIVATE void Print() const;
// Prints this object with details.
- V8_EXPORT_PRIVATE void Print(std::ostream& os) const; // NOLINT
+ V8_EXPORT_PRIVATE void Print(std::ostream& os) const;
#else
void Print() const { ShortPrint(); }
- void Print(std::ostream& os) const { ShortPrint(os); } // NOLINT
+ void Print(std::ostream& os) const { ShortPrint(os); }
#endif
// For use with std::unordered_set.
@@ -673,8 +673,7 @@ class Object : public TaggedImpl<HeapObjectReferenceType::STRONG, Address> {
inline void InitExternalPointerField(size_t offset, Isolate* isolate);
inline void InitExternalPointerField(size_t offset, Isolate* isolate,
Address value, ExternalPointerTag tag);
- inline Address ReadExternalPointerField(size_t offset,
- PtrComprCageBase isolate_root,
+ inline Address ReadExternalPointerField(size_t offset, Isolate* isolate,
ExternalPointerTag tag) const;
inline void WriteExternalPointerField(size_t offset, Isolate* isolate,
Address value, ExternalPointerTag tag);
@@ -778,6 +777,23 @@ class MapWord {
inline Address ptr() { return value_; }
+#ifdef V8_MAP_PACKING
+ static constexpr Address Pack(Address map) {
+ return map ^ Internals::kMapWordXorMask;
+ }
+ static constexpr Address Unpack(Address mapword) {
+ // TODO(wenyuzhao): Clear header metadata.
+ return mapword ^ Internals::kMapWordXorMask;
+ }
+ static constexpr bool IsPacked(Address mapword) {
+ return (static_cast<intptr_t>(mapword) & Internals::kMapWordXorMask) ==
+ Internals::kMapWordSignature &&
+ (0xffffffff00000000 & static_cast<intptr_t>(mapword)) != 0;
+ }
+#else
+ static constexpr bool IsPacked(Address) { return false; }
+#endif
+
private:
// HeapObject calls the private constructor and directly reads the value.
friend class HeapObject;
diff --git a/deps/v8/src/objects/ordered-hash-table.cc b/deps/v8/src/objects/ordered-hash-table.cc
index a19217878d..c6754db937 100644
--- a/deps/v8/src/objects/ordered-hash-table.cc
+++ b/deps/v8/src/objects/ordered-hash-table.cc
@@ -16,9 +16,9 @@ namespace v8 {
namespace internal {
template <class Derived, int entrysize>
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<Derived> OrderedHashTable<Derived, entrysize>::Allocate(
- LocalIsolate* isolate, int capacity, AllocationType allocation) {
+ IsolateT* isolate, int capacity, AllocationType allocation) {
// Capacity must be a power of two, since we depend on being able
// to divide and multiple by 2 (kLoadFactor) to derive capacity
// from number of buckets. If we decide to change kLoadFactor
@@ -63,9 +63,9 @@ MaybeHandle<Derived> OrderedHashTable<Derived, entrysize>::AllocateEmpty(
}
template <class Derived, int entrysize>
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<Derived> OrderedHashTable<Derived, entrysize>::EnsureGrowable(
- LocalIsolate* isolate, Handle<Derived> table) {
+ IsolateT* isolate, Handle<Derived> table) {
DCHECK(!table->IsObsolete());
int nof = table->NumberOfElements();
@@ -238,17 +238,17 @@ HeapObject OrderedHashMap::GetEmpty(ReadOnlyRoots ro_roots) {
}
template <class Derived, int entrysize>
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<Derived> OrderedHashTable<Derived, entrysize>::Rehash(
- LocalIsolate* isolate, Handle<Derived> table) {
+ IsolateT* isolate, Handle<Derived> table) {
return OrderedHashTable<Derived, entrysize>::Rehash(isolate, table,
table->Capacity());
}
template <class Derived, int entrysize>
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<Derived> OrderedHashTable<Derived, entrysize>::Rehash(
- LocalIsolate* isolate, Handle<Derived> table, int new_capacity) {
+ IsolateT* isolate, Handle<Derived> table, int new_capacity) {
DCHECK(!table->IsObsolete());
MaybeHandle<Derived> new_table_candidate =
@@ -320,10 +320,9 @@ MaybeHandle<OrderedHashMap> OrderedHashMap::Rehash(Isolate* isolate,
return Base::Rehash(isolate, table, new_capacity);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<OrderedNameDictionary> OrderedNameDictionary::Rehash(
- LocalIsolate* isolate, Handle<OrderedNameDictionary> table,
- int new_capacity) {
+ IsolateT* isolate, Handle<OrderedNameDictionary> table, int new_capacity) {
MaybeHandle<OrderedNameDictionary> new_table_candidate =
Base::Rehash(isolate, table, new_capacity);
Handle<OrderedNameDictionary> new_table;
@@ -407,9 +406,8 @@ MaybeHandle<OrderedHashMap> OrderedHashMap::Add(Isolate* isolate,
return table;
}
-template <typename LocalIsolate>
-InternalIndex OrderedNameDictionary::FindEntry(LocalIsolate* isolate,
- Object key) {
+template <typename IsolateT>
+InternalIndex OrderedNameDictionary::FindEntry(IsolateT* isolate, Object key) {
DisallowGarbageCollection no_gc;
DCHECK(key.IsUniqueName());
@@ -438,10 +436,10 @@ InternalIndex OrderedNameDictionary::FindEntry(LocalIsolate* isolate,
return InternalIndex::NotFound();
}
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<OrderedNameDictionary> OrderedNameDictionary::Add(
- LocalIsolate* isolate, Handle<OrderedNameDictionary> table,
- Handle<Name> key, Handle<Object> value, PropertyDetails details) {
+ IsolateT* isolate, Handle<OrderedNameDictionary> table, Handle<Name> key,
+ Handle<Object> value, PropertyDetails details) {
DCHECK(key->IsUniqueName());
DCHECK(table->FindEntry(isolate, *key).is_not_found());
@@ -505,21 +503,21 @@ Handle<OrderedNameDictionary> OrderedNameDictionary::DeleteEntry(
return Shrink(isolate, table);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<OrderedHashSet> OrderedHashSet::Allocate(
- LocalIsolate* isolate, int capacity, AllocationType allocation) {
+ IsolateT* isolate, int capacity, AllocationType allocation) {
return Base::Allocate(isolate, capacity, allocation);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<OrderedHashMap> OrderedHashMap::Allocate(
- LocalIsolate* isolate, int capacity, AllocationType allocation) {
+ IsolateT* isolate, int capacity, AllocationType allocation) {
return Base::Allocate(isolate, capacity, allocation);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
MaybeHandle<OrderedNameDictionary> OrderedNameDictionary::Allocate(
- LocalIsolate* isolate, int capacity, AllocationType allocation) {
+ IsolateT* isolate, int capacity, AllocationType allocation) {
MaybeHandle<OrderedNameDictionary> table_candidate =
Base::Allocate(isolate, capacity, allocation);
Handle<OrderedNameDictionary> table;
diff --git a/deps/v8/src/objects/ordered-hash-table.h b/deps/v8/src/objects/ordered-hash-table.h
index 1746e2dc89..1110352e46 100644
--- a/deps/v8/src/objects/ordered-hash-table.h
+++ b/deps/v8/src/objects/ordered-hash-table.h
@@ -67,8 +67,8 @@ class OrderedHashTable : public FixedArray {
public:
// Returns an OrderedHashTable (possibly |table|) with enough space
// to add at least one new element.
- template <typename LocalIsolate>
- static MaybeHandle<Derived> EnsureGrowable(LocalIsolate* isolate,
+ template <typename IsolateT>
+ static MaybeHandle<Derived> EnsureGrowable(IsolateT* isolate,
Handle<Derived> table);
// Returns an OrderedHashTable (possibly |table|) that's shrunken
@@ -200,21 +200,20 @@ class OrderedHashTable : public FixedArray {
protected:
// Returns an OrderedHashTable with a capacity of at least |capacity|.
- template <typename LocalIsolate>
+ template <typename IsolateT>
static MaybeHandle<Derived> Allocate(
- LocalIsolate* isolate, int capacity,
+ IsolateT* isolate, int capacity,
AllocationType allocation = AllocationType::kYoung);
static MaybeHandle<Derived> AllocateEmpty(Isolate* isolate,
AllocationType allocation,
RootIndex root_ndex);
- template <typename LocalIsolate>
- static MaybeHandle<Derived> Rehash(LocalIsolate* isolate,
- Handle<Derived> table);
- template <typename LocalIsolate>
- static MaybeHandle<Derived> Rehash(LocalIsolate* isolate,
- Handle<Derived> table, int new_capacity);
+ template <typename IsolateT>
+ static MaybeHandle<Derived> Rehash(IsolateT* isolate, Handle<Derived> table);
+ template <typename IsolateT>
+ static MaybeHandle<Derived> Rehash(IsolateT* isolate, Handle<Derived> table,
+ int new_capacity);
int HashToEntryRaw(int hash) {
int bucket = HashToBucket(hash);
@@ -287,9 +286,9 @@ class V8_EXPORT_PRIVATE OrderedHashSet
int new_capacity);
static MaybeHandle<OrderedHashSet> Rehash(Isolate* isolate,
Handle<OrderedHashSet> table);
- template <typename LocalIsolate>
+ template <typename IsolateT>
static MaybeHandle<OrderedHashSet> Allocate(
- LocalIsolate* isolate, int capacity,
+ IsolateT* isolate, int capacity,
AllocationType allocation = AllocationType::kYoung);
static MaybeHandle<OrderedHashSet> AllocateEmpty(
@@ -318,9 +317,9 @@ class V8_EXPORT_PRIVATE OrderedHashMap
Handle<Object> key,
Handle<Object> value);
- template <typename LocalIsolate>
+ template <typename IsolateT>
static MaybeHandle<OrderedHashMap> Allocate(
- LocalIsolate* isolate, int capacity,
+ IsolateT* isolate, int capacity,
AllocationType allocation = AllocationType::kYoung);
static MaybeHandle<OrderedHashMap> AllocateEmpty(
@@ -761,24 +760,24 @@ class V8_EXPORT_PRIVATE OrderedNameDictionary
DECL_CAST(OrderedNameDictionary)
DECL_PRINTER(OrderedNameDictionary)
- template <typename LocalIsolate>
+ template <typename IsolateT>
static MaybeHandle<OrderedNameDictionary> Add(
- LocalIsolate* isolate, Handle<OrderedNameDictionary> table,
- Handle<Name> key, Handle<Object> value, PropertyDetails details);
+ IsolateT* isolate, Handle<OrderedNameDictionary> table, Handle<Name> key,
+ Handle<Object> value, PropertyDetails details);
void SetEntry(InternalIndex entry, Object key, Object value,
PropertyDetails details);
- template <typename LocalIsolate>
- InternalIndex FindEntry(LocalIsolate* isolate, Object key);
+ template <typename IsolateT>
+ InternalIndex FindEntry(IsolateT* isolate, Object key);
// This is to make the interfaces of NameDictionary::FindEntry and
// OrderedNameDictionary::FindEntry compatible.
// TODO(emrich) clean this up: NameDictionary uses Handle<Object>
// for FindEntry keys due to its Key typedef, but that's also used
// for adding, where we do need handles.
- template <typename LocalIsolate>
- InternalIndex FindEntry(LocalIsolate* isolate, Handle<Object> key) {
+ template <typename IsolateT>
+ InternalIndex FindEntry(IsolateT* isolate, Handle<Object> key) {
return FindEntry(isolate, *key);
}
@@ -786,18 +785,17 @@ class V8_EXPORT_PRIVATE OrderedNameDictionary
Isolate* isolate, Handle<OrderedNameDictionary> table,
InternalIndex entry);
- template <typename LocalIsolate>
+ template <typename IsolateT>
static MaybeHandle<OrderedNameDictionary> Allocate(
- LocalIsolate* isolate, int capacity,
+ IsolateT* isolate, int capacity,
AllocationType allocation = AllocationType::kYoung);
static MaybeHandle<OrderedNameDictionary> AllocateEmpty(
Isolate* isolate, AllocationType allocation = AllocationType::kReadOnly);
- template <typename LocalIsolate>
+ template <typename IsolateT>
static MaybeHandle<OrderedNameDictionary> Rehash(
- LocalIsolate* isolate, Handle<OrderedNameDictionary> table,
- int new_capacity);
+ IsolateT* isolate, Handle<OrderedNameDictionary> table, int new_capacity);
// Returns the value for entry.
inline Object ValueAt(InternalIndex entry);
diff --git a/deps/v8/src/objects/property-array-inl.h b/deps/v8/src/objects/property-array-inl.h
index fe884b043f..b51b0d5f2d 100644
--- a/deps/v8/src/objects/property-array-inl.h
+++ b/deps/v8/src/objects/property-array-inl.h
@@ -22,7 +22,8 @@ OBJECT_CONSTRUCTORS_IMPL(PropertyArray, HeapObject)
CAST_ACCESSOR(PropertyArray)
SMI_ACCESSORS(PropertyArray, length_and_hash, kLengthAndHashOffset)
-SYNCHRONIZED_SMI_ACCESSORS(PropertyArray, length_and_hash, kLengthAndHashOffset)
+RELEASE_ACQUIRE_SMI_ACCESSORS(PropertyArray, length_and_hash,
+ kLengthAndHashOffset)
Object PropertyArray::get(int index) const {
PtrComprCageBase cage_base = GetPtrComprCageBase(*this);
@@ -64,8 +65,8 @@ void PropertyArray::initialize_length(int len) {
set_length_and_hash(len);
}
-int PropertyArray::synchronized_length() const {
- return LengthField::decode(synchronized_length_and_hash());
+int PropertyArray::length(AcquireLoadTag) const {
+ return LengthField::decode(length_and_hash(kAcquireLoad));
}
int PropertyArray::Hash() const { return HashField::decode(length_and_hash()); }
diff --git a/deps/v8/src/objects/property-array.h b/deps/v8/src/objects/property-array.h
index f4cc5c9fb1..8ee51982c0 100644
--- a/deps/v8/src/objects/property-array.h
+++ b/deps/v8/src/objects/property-array.h
@@ -18,9 +18,7 @@ class PropertyArray : public HeapObject {
public:
// [length]: length of the array.
inline int length() const;
-
- // Get the length using acquire loads.
- inline int synchronized_length() const;
+ inline int length(AcquireLoadTag) const;
// This is only used on a newly allocated PropertyArray which
// doesn't have an existing hash.
@@ -70,7 +68,7 @@ class PropertyArray : public HeapObject {
private:
DECL_INT_ACCESSORS(length_and_hash)
- DECL_SYNCHRONIZED_INT_ACCESSORS(length_and_hash)
+ DECL_RELEASE_ACQUIRE_INT_ACCESSORS(length_and_hash)
OBJECT_CONSTRUCTORS(PropertyArray, HeapObject);
};
diff --git a/deps/v8/src/objects/scope-info.cc b/deps/v8/src/objects/scope-info.cc
index 308b57a309..67a64e873a 100644
--- a/deps/v8/src/objects/scope-info.cc
+++ b/deps/v8/src/objects/scope-info.cc
@@ -57,9 +57,8 @@ bool ScopeInfo::Equals(ScopeInfo other) const {
#endif
// static
-template <typename LocalIsolate>
-Handle<ScopeInfo> ScopeInfo::Create(LocalIsolate* isolate, Zone* zone,
- Scope* scope,
+template <typename IsolateT>
+Handle<ScopeInfo> ScopeInfo::Create(IsolateT* isolate, Zone* zone, Scope* scope,
MaybeHandle<ScopeInfo> outer_scope) {
// Collect variables.
int context_local_count = 0;
@@ -1078,8 +1077,8 @@ std::ostream& operator<<(std::ostream& os, VariableAllocationInfo var_info) {
return os;
}
-template <typename LocalIsolate>
-Handle<ModuleRequest> ModuleRequest::New(LocalIsolate* isolate,
+template <typename IsolateT>
+Handle<ModuleRequest> ModuleRequest::New(IsolateT* isolate,
Handle<String> specifier,
Handle<FixedArray> import_assertions,
int position) {
@@ -1098,9 +1097,9 @@ template Handle<ModuleRequest> ModuleRequest::New(
LocalIsolate* isolate, Handle<String> specifier,
Handle<FixedArray> import_assertions, int position);
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SourceTextModuleInfoEntry> SourceTextModuleInfoEntry::New(
- LocalIsolate* isolate, Handle<PrimitiveHeapObject> export_name,
+ IsolateT* isolate, Handle<PrimitiveHeapObject> export_name,
Handle<PrimitiveHeapObject> local_name,
Handle<PrimitiveHeapObject> import_name, int module_request, int cell_index,
int beg_pos, int end_pos) {
@@ -1128,9 +1127,9 @@ template Handle<SourceTextModuleInfoEntry> SourceTextModuleInfoEntry::New(
Handle<PrimitiveHeapObject> import_name, int module_request, int cell_index,
int beg_pos, int end_pos);
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SourceTextModuleInfo> SourceTextModuleInfo::New(
- LocalIsolate* isolate, Zone* zone, SourceTextModuleDescriptor* descr) {
+ IsolateT* isolate, Zone* zone, SourceTextModuleDescriptor* descr) {
// Serialize module requests.
int size = static_cast<int>(descr->module_requests().size());
Handle<FixedArray> module_requests = isolate->factory()->NewFixedArray(size);
diff --git a/deps/v8/src/objects/scope-info.h b/deps/v8/src/objects/scope-info.h
index 57e5d2e308..c90f6bfed9 100644
--- a/deps/v8/src/objects/scope-info.h
+++ b/deps/v8/src/objects/scope-info.h
@@ -213,19 +213,18 @@ class ScopeInfo : public TorqueGeneratedScopeInfo<ScopeInfo, HeapObject> {
// closest outer class when resolving private names.
bool PrivateNameLookupSkipsOuterClass() const;
- // REPL mode scopes allow re-declaraction of let variables. They come from
- // debug evaluate but are different to IsDebugEvaluateScope().
+ // REPL mode scopes allow re-declaraction of let and const variables. They
+ // come from debug evaluate but are different to IsDebugEvaluateScope().
bool IsReplModeScope() const;
#ifdef DEBUG
bool Equals(ScopeInfo other) const;
#endif
- template <typename LocalIsolate>
- static Handle<ScopeInfo> Create(LocalIsolate* isolate, Zone* zone,
- Scope* scope,
+ template <typename IsolateT>
+ static Handle<ScopeInfo> Create(IsolateT* isolate, Zone* zone, Scope* scope,
MaybeHandle<ScopeInfo> outer_scope);
- static Handle<ScopeInfo> CreateForWithScope(
+ V8_EXPORT_PRIVATE static Handle<ScopeInfo> CreateForWithScope(
Isolate* isolate, MaybeHandle<ScopeInfo> outer_scope);
V8_EXPORT_PRIVATE static Handle<ScopeInfo> CreateForEmptyFunction(
Isolate* isolate);
@@ -314,7 +313,7 @@ class ScopeInfo : public TorqueGeneratedScopeInfo<ScopeInfo, HeapObject> {
}
static constexpr int ConvertOffsetToIndex(int offset) {
int index = (offset - HeapObject::kHeaderSize) / kTaggedSize;
- CONSTEXPR_DCHECK(OffsetOfElementAt(index) == offset);
+ DCHECK_EQ(OffsetOfElementAt(index), offset);
return index;
}
diff --git a/deps/v8/src/objects/script-inl.h b/deps/v8/src/objects/script-inl.h
index b1e226a046..4dd8bed382 100644
--- a/deps/v8/src/objects/script-inl.h
+++ b/deps/v8/src/objects/script-inl.h
@@ -25,7 +25,7 @@ NEVER_READ_ONLY_SPACE_IMPL(Script)
#if V8_ENABLE_WEBASSEMBLY
ACCESSORS_CHECKED(Script, wasm_breakpoint_infos, FixedArray,
- kEvalFromSharedOrWrappedArgumentsOffset,
+ kEvalFromSharedOrWrappedArgumentsOrSfiTableOffset,
this->type() == TYPE_WASM)
ACCESSORS_CHECKED(Script, wasm_managed_native_module, Object,
kEvalFromPositionOffset, this->type() == TYPE_WASM)
@@ -37,40 +37,59 @@ ACCESSORS_CHECKED(Script, wasm_weak_instance_list, WeakArrayList,
#endif // V8_ENABLE_WEBASSEMBLY
SMI_ACCESSORS(Script, type, kScriptTypeOffset)
-ACCESSORS_CHECKED(Script, eval_from_shared_or_wrapped_arguments, Object,
- kEvalFromSharedOrWrappedArgumentsOffset,
+ACCESSORS_CHECKED(Script, eval_from_shared_or_wrapped_arguments_or_sfi_table,
+ Object, kEvalFromSharedOrWrappedArgumentsOrSfiTableOffset,
CHECK_SCRIPT_NOT_WASM)
SMI_ACCESSORS_CHECKED(Script, eval_from_position, kEvalFromPositionOffset,
CHECK_SCRIPT_NOT_WASM)
#undef CHECK_SCRIPT_NOT_WASM
bool Script::is_wrapped() const {
- return eval_from_shared_or_wrapped_arguments().IsFixedArray();
+ return eval_from_shared_or_wrapped_arguments_or_sfi_table().IsFixedArray() &&
+ type() != TYPE_WEB_SNAPSHOT;
}
bool Script::has_eval_from_shared() const {
- return eval_from_shared_or_wrapped_arguments().IsSharedFunctionInfo();
+ return eval_from_shared_or_wrapped_arguments_or_sfi_table()
+ .IsSharedFunctionInfo();
}
void Script::set_eval_from_shared(SharedFunctionInfo shared,
WriteBarrierMode mode) {
DCHECK(!is_wrapped());
- set_eval_from_shared_or_wrapped_arguments(shared, mode);
+ DCHECK_NE(type(), TYPE_WEB_SNAPSHOT);
+ set_eval_from_shared_or_wrapped_arguments_or_sfi_table(shared, mode);
}
SharedFunctionInfo Script::eval_from_shared() const {
DCHECK(has_eval_from_shared());
- return SharedFunctionInfo::cast(eval_from_shared_or_wrapped_arguments());
+ return SharedFunctionInfo::cast(
+ eval_from_shared_or_wrapped_arguments_or_sfi_table());
}
void Script::set_wrapped_arguments(FixedArray value, WriteBarrierMode mode) {
DCHECK(!has_eval_from_shared());
- set_eval_from_shared_or_wrapped_arguments(value, mode);
+ DCHECK_NE(type(), TYPE_WEB_SNAPSHOT);
+ set_eval_from_shared_or_wrapped_arguments_or_sfi_table(value, mode);
}
FixedArray Script::wrapped_arguments() const {
DCHECK(is_wrapped());
- return FixedArray::cast(eval_from_shared_or_wrapped_arguments());
+ return FixedArray::cast(eval_from_shared_or_wrapped_arguments_or_sfi_table());
+}
+
+void Script::set_shared_function_info_table(ObjectHashTable value,
+ WriteBarrierMode mode) {
+ DCHECK(!has_eval_from_shared());
+ DCHECK(!is_wrapped());
+ DCHECK_EQ(type(), TYPE_WEB_SNAPSHOT);
+ set_eval_from_shared_or_wrapped_arguments_or_sfi_table(value, mode);
+}
+
+ObjectHashTable Script::shared_function_info_table() const {
+ DCHECK_EQ(type(), TYPE_WEB_SNAPSHOT);
+ return ObjectHashTable::cast(
+ eval_from_shared_or_wrapped_arguments_or_sfi_table());
}
DEF_GETTER(Script, shared_function_infos, WeakFixedArray) {
@@ -91,6 +110,15 @@ void Script::set_shared_function_infos(WeakFixedArray value,
CONDITIONAL_WRITE_BARRIER(*this, kSharedFunctionInfosOffset, value, mode);
}
+int Script::shared_function_info_count() const {
+ if V8_UNLIKELY (type() == TYPE_WEB_SNAPSHOT) {
+ // +1 because the 0th element in shared_function_infos is reserved for the
+ // top-level SharedFunctionInfo which doesn't exist.
+ return shared_function_info_table().NumberOfElements() + 1;
+ }
+ return shared_function_infos().length();
+}
+
#if V8_ENABLE_WEBASSEMBLY
bool Script::has_wasm_breakpoint_infos() const {
return type() == TYPE_WASM && wasm_breakpoint_infos().length() > 0;
diff --git a/deps/v8/src/objects/script.h b/deps/v8/src/objects/script.h
index e487da7649..3d2ff73b99 100644
--- a/deps/v8/src/objects/script.h
+++ b/deps/v8/src/objects/script.h
@@ -20,6 +20,8 @@ namespace v8 {
namespace internal {
+class FunctionLiteral;
+
#include "torque-generated/src/objects/script-tq.inc"
// Script describes a script which has been added to the VM.
@@ -38,7 +40,8 @@ class Script : public TorqueGeneratedScript<Script, Struct> {
#if V8_ENABLE_WEBASSEMBLY
TYPE_WASM = 3,
#endif // V8_ENABLE_WEBASSEMBLY
- TYPE_INSPECTOR = 4
+ TYPE_INSPECTOR = 4,
+ TYPE_WEB_SNAPSHOT = 5
};
// Script compilation types.
@@ -53,7 +56,7 @@ class Script : public TorqueGeneratedScript<Script, Struct> {
// [type]: the script type.
DECL_INT_ACCESSORS(type)
- DECL_ACCESSORS(eval_from_shared_or_wrapped_arguments, Object)
+ DECL_ACCESSORS(eval_from_shared_or_wrapped_arguments_or_sfi_table, Object)
// [eval_from_shared]: for eval scripts the shared function info for the
// function from which eval was called.
@@ -62,6 +65,12 @@ class Script : public TorqueGeneratedScript<Script, Struct> {
// [wrapped_arguments]: for the list of arguments in a wrapped script.
DECL_ACCESSORS(wrapped_arguments, FixedArray)
+ // For web snapshots: a hash table mapping function positions to indices in
+ // shared_function_infos.
+ // TODO(v8:11525): Replace with a more efficient data structure mapping
+ // function positions to weak pointers to SharedFunctionInfos directly.
+ DECL_ACCESSORS(shared_function_info_table, ObjectHashTable)
+
// Whether the script is implicitly wrapped in a function.
inline bool is_wrapped() const;
@@ -78,6 +87,8 @@ class Script : public TorqueGeneratedScript<Script, Struct> {
// function infos created from this script.
DECL_ACCESSORS(shared_function_infos, WeakFixedArray)
+ inline int shared_function_info_count() const;
+
#if V8_ENABLE_WEBASSEMBLY
// [wasm_breakpoint_infos]: the list of {BreakPointInfo} objects describing
// all WebAssembly breakpoints for modules/instances managed via this script.
@@ -137,9 +148,9 @@ class Script : public TorqueGeneratedScript<Script, Struct> {
static int GetEvalPosition(Isolate* isolate, Handle<Script> script);
// Init line_ends array with source code positions of line ends.
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- static void InitLineEnds(LocalIsolate* isolate, Handle<Script> script);
+ static void InitLineEnds(IsolateT* isolate, Handle<Script> script);
// Carries information about a source position.
struct PositionInfo {
@@ -176,10 +187,19 @@ class Script : public TorqueGeneratedScript<Script, Struct> {
int GetLineNumber(int code_pos) const;
// Look through the list of existing shared function infos to find one
- // that matches the function literal. Return empty handle if not found.
- template <typename LocalIsolate>
- MaybeHandle<SharedFunctionInfo> FindSharedFunctionInfo(
- LocalIsolate* isolate, int function_literal_id);
+ // that matches the function literal. Return empty handle if not found.
+ template <typename IsolateT>
+ static MaybeHandle<SharedFunctionInfo> FindSharedFunctionInfo(
+ Handle<Script> script, IsolateT* isolate,
+ FunctionLiteral* function_literal);
+
+ static MaybeHandle<SharedFunctionInfo> FindWebSnapshotSharedFunctionInfo(
+ Handle<Script> script, Isolate* isolate,
+ FunctionLiteral* function_literal);
+
+ static MaybeHandle<SharedFunctionInfo> FindWebSnapshotSharedFunctionInfo(
+ Handle<Script> script, LocalIsolate* isolate,
+ FunctionLiteral* function_literal);
// Iterate over all script objects on the heap.
class V8_EXPORT_PRIVATE Iterator {
diff --git a/deps/v8/src/objects/script.tq b/deps/v8/src/objects/script.tq
index dac25360cb..36a70dede5 100644
--- a/deps/v8/src/objects/script.tq
+++ b/deps/v8/src/objects/script.tq
@@ -40,8 +40,12 @@ extern class Script extends Struct {
// [id]: the script id.
id: Smi;
- eval_from_shared_or_wrapped_arguments: SharedFunctionInfo|FixedArray|
- Undefined;
+ // For scripts originating from eval: the SharedFunctionInfo contains the SFI
+ // for the script. For scripts wrapped as functions: the FixedArray contains
+ // the arguments. For web snapshots: the ObjectHashTable maps function start
+ // position to SFI index in shared_function_infos.
+ eval_from_shared_or_wrapped_arguments_or_sfi_table: SharedFunctionInfo|
+ FixedArray|ObjectHashTable|Undefined;
eval_from_position: Smi|Foreign; // Smi or Managed<wasm::NativeModule>
shared_function_infos: WeakFixedArray|WeakArrayList;
diff --git a/deps/v8/src/objects/shared-function-info-inl.h b/deps/v8/src/objects/shared-function-info-inl.h
index c125b01a3d..3bc0f70572 100644
--- a/deps/v8/src/objects/shared-function-info-inl.h
+++ b/deps/v8/src/objects/shared-function-info-inl.h
@@ -166,8 +166,8 @@ bool SharedFunctionInfo::needs_script_context() const {
return is_script() && scope_info().ContextLocalCount() > 0;
}
-template <typename LocalIsolate>
-AbstractCode SharedFunctionInfo::abstract_code(LocalIsolate* isolate) {
+template <typename IsolateT>
+AbstractCode SharedFunctionInfo::abstract_code(IsolateT* isolate) {
// TODO(v8:11429): Decide if this return bytecode or baseline code, when the
// latter is present.
if (HasBytecodeArray()) {
@@ -186,9 +186,8 @@ int SharedFunctionInfo::function_token_position() const {
}
}
-template <typename LocalIsolate>
-bool SharedFunctionInfo::AreSourcePositionsAvailable(
- LocalIsolate* isolate) const {
+template <typename IsolateT>
+bool SharedFunctionInfo::AreSourcePositionsAvailable(IsolateT* isolate) const {
if (FLAG_enable_lazy_source_positions) {
return !HasBytecodeArray() ||
GetBytecodeArray(isolate).HasSourcePositionTable();
@@ -196,9 +195,9 @@ bool SharedFunctionInfo::AreSourcePositionsAvailable(
return true;
}
-template <typename LocalIsolate>
+template <typename IsolateT>
SharedFunctionInfo::Inlineability SharedFunctionInfo::GetInlineability(
- LocalIsolate* isolate) const {
+ IsolateT* isolate) const {
if (!script().IsScript()) return kHasNoScript;
if (GetIsolate()->is_precise_binary_code_coverage() &&
@@ -235,9 +234,6 @@ BIT_FIELD_ACCESSORS(SharedFunctionInfo, flags2,
has_static_private_methods_or_accessors,
SharedFunctionInfo::HasStaticPrivateMethodsOrAccessorsBit)
-BIT_FIELD_ACCESSORS(SharedFunctionInfo, flags2, may_have_cached_code,
- SharedFunctionInfo::MayHaveCachedCodeBit)
-
BIT_FIELD_ACCESSORS(SharedFunctionInfo, flags, syntax_kind,
SharedFunctionInfo::FunctionSyntaxKindBits)
@@ -453,9 +449,8 @@ bool SharedFunctionInfo::is_compiled() const {
!data.IsUncompiledData();
}
-template <typename LocalIsolate>
-IsCompiledScope SharedFunctionInfo::is_compiled_scope(
- LocalIsolate* isolate) const {
+template <typename IsolateT>
+IsCompiledScope SharedFunctionInfo::is_compiled_scope(IsolateT* isolate) const {
return IsCompiledScope(*this, isolate);
}
@@ -497,10 +492,9 @@ bool SharedFunctionInfo::HasBytecodeArray() const {
data.IsBaselineData();
}
-template <typename LocalIsolate>
-BytecodeArray SharedFunctionInfo::GetBytecodeArray(
- LocalIsolate* isolate) const {
- SharedMutexGuardIfOffThread<LocalIsolate, base::kShared> mutex_guard(
+template <typename IsolateT>
+BytecodeArray SharedFunctionInfo::GetBytecodeArray(IsolateT* isolate) const {
+ SharedMutexGuardIfOffThread<IsolateT, base::kShared> mutex_guard(
GetIsolate()->shared_function_info_access(), isolate);
DCHECK(HasBytecodeArray());
@@ -739,8 +733,8 @@ void SharedFunctionInfo::ClearPreparseData() {
UncompiledDataWithPreparseData::kSize);
STATIC_ASSERT(UncompiledDataWithoutPreparseData::kSize ==
UncompiledData::kHeaderSize);
- data.synchronized_set_map(
- GetReadOnlyRoots().uncompiled_data_without_preparse_data_map());
+ data.set_map(GetReadOnlyRoots().uncompiled_data_without_preparse_data_map(),
+ kReleaseStore);
// Fill the remaining space with filler.
heap->CreateFillerObjectAt(
diff --git a/deps/v8/src/objects/shared-function-info.cc b/deps/v8/src/objects/shared-function-info.cc
index 5f5917d64a..054a314f45 100644
--- a/deps/v8/src/objects/shared-function-info.cc
+++ b/deps/v8/src/objects/shared-function-info.cc
@@ -431,12 +431,6 @@ std::ostream& operator<<(std::ostream& os, const SourceCodeOf& v) {
}
}
-MaybeHandle<Code> SharedFunctionInfo::TryGetCachedCode(Isolate* isolate) {
- if (!may_have_cached_code()) return {};
- Handle<SharedFunctionInfo> zis(*this, isolate);
- return isolate->compilation_cache()->LookupCode(zis);
-}
-
void SharedFunctionInfo::DisableOptimization(BailoutReason reason) {
DCHECK_NE(reason, BailoutReason::kNoReason);
@@ -456,9 +450,9 @@ void SharedFunctionInfo::DisableOptimization(BailoutReason reason) {
}
// static
-template <typename LocalIsolate>
+template <typename IsolateT>
void SharedFunctionInfo::InitFromFunctionLiteral(
- LocalIsolate* isolate, Handle<SharedFunctionInfo> shared_info,
+ IsolateT* isolate, Handle<SharedFunctionInfo> shared_info,
FunctionLiteral* lit, bool is_toplevel) {
DCHECK(!shared_info->name_or_scope_info(kAcquireLoad).IsScopeInfo());
diff --git a/deps/v8/src/objects/shared-function-info.h b/deps/v8/src/objects/shared-function-info.h
index f9db1acbcf..3ca8a5758d 100644
--- a/deps/v8/src/objects/shared-function-info.h
+++ b/deps/v8/src/objects/shared-function-info.h
@@ -191,8 +191,8 @@ class SharedFunctionInfo
// Get the abstract code associated with the function, which will either be
// a Code object or a BytecodeArray.
- template <typename LocalIsolate>
- inline AbstractCode abstract_code(LocalIsolate* isolate);
+ template <typename IsolateT>
+ inline AbstractCode abstract_code(IsolateT* isolate);
// Tells whether or not this shared function info has an attached
// BytecodeArray.
@@ -264,9 +264,8 @@ class SharedFunctionInfo
// Returns an IsCompiledScope which reports whether the function is compiled,
// and if compiled, will avoid the function becoming uncompiled while it is
// held.
- template <typename LocalIsolate>
- inline IsCompiledScope is_compiled_scope(LocalIsolate* isolate) const;
-
+ template <typename IsolateT>
+ inline IsCompiledScope is_compiled_scope(IsolateT* isolate) const;
// [internal formal parameter count]: The declared number of parameters.
// For subclass constructors, also includes new.target.
@@ -301,8 +300,8 @@ class SharedFunctionInfo
inline FunctionTemplateInfo get_api_func_data() const;
inline void set_api_func_data(FunctionTemplateInfo data);
inline bool HasBytecodeArray() const;
- template <typename LocalIsolate>
- inline BytecodeArray GetBytecodeArray(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ inline BytecodeArray GetBytecodeArray(IsolateT* isolate) const;
inline void set_bytecode_array(BytecodeArray bytecode);
inline Code InterpreterTrampoline() const;
@@ -417,15 +416,6 @@ class SharedFunctionInfo
DECL_BOOLEAN_ACCESSORS(class_scope_has_private_brand)
DECL_BOOLEAN_ACCESSORS(has_static_private_methods_or_accessors)
- // True if a Code object associated with this SFI has been inserted into the
- // compilation cache. Note that the cache entry may be removed by aging,
- // hence the 'may'.
- DECL_BOOLEAN_ACCESSORS(may_have_cached_code)
-
- // Returns the cached Code object for this SFI if it exists, an empty handle
- // otherwise.
- MaybeHandle<Code> TryGetCachedCode(Isolate* isolate);
-
// Is this function a top-level function (scripts, evals).
DECL_BOOLEAN_ACCESSORS(is_toplevel)
@@ -557,8 +547,8 @@ class SharedFunctionInfo
kExceedsBytecodeLimit,
kMayContainBreakPoints,
};
- template <typename LocalIsolate>
- Inlineability GetInlineability(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ Inlineability GetInlineability(IsolateT* isolate) const;
// Source size of this function.
int SourceSize();
@@ -569,8 +559,8 @@ class SharedFunctionInfo
inline bool has_simple_parameters();
// Initialize a SharedFunctionInfo from a parsed function literal.
- template <typename LocalIsolate>
- static void InitFromFunctionLiteral(LocalIsolate* isolate,
+ template <typename IsolateT>
+ static void InitFromFunctionLiteral(IsolateT* isolate,
Handle<SharedFunctionInfo> shared_info,
FunctionLiteral* lit, bool is_toplevel);
@@ -587,8 +577,8 @@ class SharedFunctionInfo
static void EnsureSourcePositionsAvailable(
Isolate* isolate, Handle<SharedFunctionInfo> shared_info);
- template <typename LocalIsolate>
- bool AreSourcePositionsAvailable(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ bool AreSourcePositionsAvailable(IsolateT* isolate) const;
// Hash based on function literal id and script id.
V8_EXPORT_PRIVATE uint32_t Hash();
diff --git a/deps/v8/src/objects/shared-function-info.tq b/deps/v8/src/objects/shared-function-info.tq
index b38598efbb..3c793efe9b 100644
--- a/deps/v8/src/objects/shared-function-info.tq
+++ b/deps/v8/src/objects/shared-function-info.tq
@@ -49,7 +49,6 @@ bitfield struct SharedFunctionInfoFlags extends uint32 {
bitfield struct SharedFunctionInfoFlags2 extends uint8 {
class_scope_has_private_brand: bool: 1 bit;
has_static_private_methods_or_accessors: bool: 1 bit;
- may_have_cached_code: bool: 1 bit;
}
@export
diff --git a/deps/v8/src/objects/slots-inl.h b/deps/v8/src/objects/slots-inl.h
index c0d35c525f..3672df0635 100644
--- a/deps/v8/src/objects/slots-inl.h
+++ b/deps/v8/src/objects/slots-inl.h
@@ -10,6 +10,7 @@
#include "src/common/ptr-compr-inl.h"
#include "src/objects/compressed-slots.h"
#include "src/objects/heap-object.h"
+#include "src/objects/map.h"
#include "src/objects/maybe-object.h"
#include "src/objects/objects.h"
#include "src/objects/slots.h"
@@ -29,12 +30,32 @@ bool FullObjectSlot::contains_value(Address raw_value) const {
return base::AsAtomicPointer::Relaxed_Load(location()) == raw_value;
}
+bool FullObjectSlot::contains_map_value(Address raw_value) const {
+ return load_map().ptr() == raw_value;
+}
+
Object FullObjectSlot::operator*() const { return Object(*location()); }
Object FullObjectSlot::load(PtrComprCageBase cage_base) const { return **this; }
void FullObjectSlot::store(Object value) const { *location() = value.ptr(); }
+void FullObjectSlot::store_map(Map map) const {
+#ifdef V8_MAP_PACKING
+ *location() = MapWord::Pack(map.ptr());
+#else
+ store(map);
+#endif
+}
+
+Map FullObjectSlot::load_map() const {
+#ifdef V8_MAP_PACKING
+ return Map::unchecked_cast(Object(MapWord::Unpack(*location())));
+#else
+ return Map::unchecked_cast(Object(*location()));
+#endif
+}
+
Object FullObjectSlot::Acquire_Load() const {
return Object(base::AsAtomicPointer::Acquire_Load(location()));
}
diff --git a/deps/v8/src/objects/slots.h b/deps/v8/src/objects/slots.h
index 69c6a8a80b..59b44d49b0 100644
--- a/deps/v8/src/objects/slots.h
+++ b/deps/v8/src/objects/slots.h
@@ -108,10 +108,14 @@ class FullObjectSlot : public SlotBase<FullObjectSlot, Address> {
// Compares memory representation of a value stored in the slot with given
// raw value.
inline bool contains_value(Address raw_value) const;
+ inline bool contains_map_value(Address raw_value) const;
inline Object operator*() const;
inline Object load(PtrComprCageBase cage_base) const;
inline void store(Object value) const;
+ inline void store_map(Map map) const;
+
+ inline Map load_map() const;
inline Object Acquire_Load() const;
inline Object Acquire_Load(PtrComprCageBase cage_base) const;
diff --git a/deps/v8/src/objects/smi.h b/deps/v8/src/objects/smi.h
index 44cd5f7446..cc99d8f7d0 100644
--- a/deps/v8/src/objects/smi.h
+++ b/deps/v8/src/objects/smi.h
@@ -26,7 +26,7 @@ class Smi : public Object {
// in that we want them to be constexprs.
constexpr Smi() : Object() {}
explicit constexpr Smi(Address ptr) : Object(ptr) {
- CONSTEXPR_DCHECK(HAS_SMI_TAG(ptr));
+ DCHECK(HAS_SMI_TAG(ptr));
}
// Returns the integer value.
@@ -43,7 +43,7 @@ class Smi : public Object {
// Convert a value to a Smi object.
static inline constexpr Smi FromInt(int value) {
- CONSTEXPR_DCHECK(Smi::IsValid(value));
+ DCHECK(Smi::IsValid(value));
return Smi(Internals::IntToSmi(value));
}
@@ -69,8 +69,8 @@ class Smi : public Object {
// Returns whether value can be represented in a Smi.
static inline bool constexpr IsValid(intptr_t value) {
- CONSTEXPR_DCHECK(Internals::IsValidSmi(value) ==
- (value >= kMinValue && value <= kMaxValue));
+ DCHECK_EQ(Internals::IsValidSmi(value),
+ value >= kMinValue && value <= kMaxValue);
return Internals::IsValidSmi(value);
}
@@ -87,7 +87,7 @@ class Smi : public Object {
DECL_CAST(Smi)
// Dispatched behavior.
- V8_EXPORT_PRIVATE void SmiPrint(std::ostream& os) const; // NOLINT
+ V8_EXPORT_PRIVATE void SmiPrint(std::ostream& os) const;
DECL_VERIFIER(Smi)
// Since this is a constexpr, "calling" it is just as efficient
diff --git a/deps/v8/src/objects/source-text-module.cc b/deps/v8/src/objects/source-text-module.cc
index a905444da5..755f826a87 100644
--- a/deps/v8/src/objects/source-text-module.cc
+++ b/deps/v8/src/objects/source-text-module.cc
@@ -672,13 +672,13 @@ Handle<JSModuleNamespace> SourceTextModule::GetModuleNamespace(
MaybeHandle<JSObject> SourceTextModule::GetImportMeta(
Isolate* isolate, Handle<SourceTextModule> module) {
- Handle<HeapObject> import_meta(module->import_meta(), isolate);
+ Handle<HeapObject> import_meta(module->import_meta(kAcquireLoad), isolate);
if (import_meta->IsTheHole(isolate)) {
if (!isolate->RunHostInitializeImportMetaObjectCallback(module).ToHandle(
&import_meta)) {
return {};
}
- module->set_import_meta(*import_meta);
+ module->set_import_meta(*import_meta, kReleaseStore);
}
return Handle<JSObject>::cast(import_meta);
}
@@ -1181,7 +1181,7 @@ void SourceTextModule::Reset(Isolate* isolate,
Handle<SourceTextModule> module) {
Factory* factory = isolate->factory();
- DCHECK(module->import_meta().IsTheHole(isolate));
+ DCHECK(module->import_meta(kAcquireLoad).IsTheHole(isolate));
Handle<FixedArray> regular_exports =
factory->NewFixedArray(module->regular_exports().length());
diff --git a/deps/v8/src/objects/source-text-module.h b/deps/v8/src/objects/source-text-module.h
index 873a0cd729..6f2a3cd0f7 100644
--- a/deps/v8/src/objects/source-text-module.h
+++ b/deps/v8/src/objects/source-text-module.h
@@ -219,8 +219,8 @@ class SourceTextModuleInfo : public FixedArray {
public:
DECL_CAST(SourceTextModuleInfo)
- template <typename LocalIsolate>
- static Handle<SourceTextModuleInfo> New(LocalIsolate* isolate, Zone* zone,
+ template <typename IsolateT>
+ static Handle<SourceTextModuleInfo> New(IsolateT* isolate, Zone* zone,
SourceTextModuleDescriptor* descr);
inline FixedArray module_requests() const;
@@ -267,9 +267,8 @@ class ModuleRequest
NEVER_READ_ONLY_SPACE
DECL_VERIFIER(ModuleRequest)
- template <typename LocalIsolate>
- static Handle<ModuleRequest> New(LocalIsolate* isolate,
- Handle<String> specifier,
+ template <typename IsolateT>
+ static Handle<ModuleRequest> New(IsolateT* isolate, Handle<String> specifier,
Handle<FixedArray> import_assertions,
int position);
@@ -287,9 +286,9 @@ class SourceTextModuleInfoEntry
DECL_PRINTER(SourceTextModuleInfoEntry)
DECL_VERIFIER(SourceTextModuleInfoEntry)
- template <typename LocalIsolate>
+ template <typename IsolateT>
static Handle<SourceTextModuleInfoEntry> New(
- LocalIsolate* isolate, Handle<PrimitiveHeapObject> export_name,
+ IsolateT* isolate, Handle<PrimitiveHeapObject> export_name,
Handle<PrimitiveHeapObject> local_name,
Handle<PrimitiveHeapObject> import_name, int module_request,
int cell_index, int beg_pos, int end_pos);
diff --git a/deps/v8/src/objects/source-text-module.tq b/deps/v8/src/objects/source-text-module.tq
index 5a21807cc5..a3d565c908 100644
--- a/deps/v8/src/objects/source-text-module.tq
+++ b/deps/v8/src/objects/source-text-module.tq
@@ -29,7 +29,7 @@ extern class SourceTextModule extends Module {
// The value of import.meta inside of this module.
// Lazily initialized on first access. It's the hole before first access and
// a JSObject afterwards.
- import_meta: TheHole|JSObject;
+ @cppAcquireLoad @cppReleaseStore import_meta: TheHole|JSObject;
// The first visited module of a cycle. For modules not in a cycle, this is
// the module itself. It's the hole before the module state transitions to
diff --git a/deps/v8/src/objects/string-inl.h b/deps/v8/src/objects/string-inl.h
index 912109b2e0..8b71536d8f 100644
--- a/deps/v8/src/objects/string-inl.h
+++ b/deps/v8/src/objects/string-inl.h
@@ -92,12 +92,12 @@ class V8_NODISCARD SharedStringAccessGuardIfNeeded {
base::Optional<base::SharedMutexGuard<base::kShared>> mutex_guard;
};
-int String::synchronized_length() const {
+int String::length(AcquireLoadTag) const {
return base::AsAtomic32::Acquire_Load(
reinterpret_cast<const int32_t*>(field_address(kLengthOffset)));
}
-void String::synchronized_set_length(int value) {
+void String::set_length(int value, ReleaseStoreTag) {
base::AsAtomic32::Release_Store(
reinterpret_cast<int32_t*>(field_address(kLengthOffset)), value);
}
@@ -119,7 +119,7 @@ CAST_ACCESSOR(ExternalString)
CAST_ACCESSOR(ExternalTwoByteString)
StringShape::StringShape(const String str)
- : type_(str.synchronized_map().instance_type()) {
+ : type_(str.map(kAcquireLoad).instance_type()) {
set_valid();
DCHECK_EQ(type_ & kIsNotStringMask, kStringTag);
}
@@ -335,8 +335,8 @@ class SequentialStringKey final : public StringTableKey {
chars_(chars),
convert_(convert) {}
- template <typename LocalIsolate>
- bool IsMatch(LocalIsolate* isolate, String s) {
+ template <typename IsolateT>
+ bool IsMatch(IsolateT* isolate, String s) {
return s.IsEqualTo<String::EqualityType::kNoLengthCheck>(chars_, isolate);
}
@@ -827,10 +827,10 @@ void SeqTwoByteString::SeqTwoByteStringSet(int index, uint16_t value) {
// Due to ThinString rewriting, concurrent visitors need to read the length with
// acquire semantics.
inline int SeqOneByteString::AllocatedSize() {
- return SizeFor(synchronized_length());
+ return SizeFor(length(kAcquireLoad));
}
inline int SeqTwoByteString::AllocatedSize() {
- return SizeFor(synchronized_length());
+ return SizeFor(length(kAcquireLoad));
}
void SlicedString::set_parent(String parent, WriteBarrierMode mode) {
@@ -862,7 +862,8 @@ void ExternalString::AllocateExternalPointerEntries(Isolate* isolate) {
}
DEF_GETTER(ExternalString, resource_as_address, Address) {
- return ReadExternalPointerField(kResourceOffset, cage_base,
+ Isolate* isolate = GetIsolateForHeapSandbox(*this);
+ return ReadExternalPointerField(kResourceOffset, isolate,
kExternalStringResourceTag);
}
diff --git a/deps/v8/src/objects/string-table.cc b/deps/v8/src/objects/string-table.cc
index a549376116..cd554e0220 100644
--- a/deps/v8/src/objects/string-table.cc
+++ b/deps/v8/src/objects/string-table.cc
@@ -69,8 +69,8 @@ int ComputeStringTableCapacityWithShrink(int current_capacity,
return new_capacity;
}
-template <typename LocalIsolate, typename StringTableKey>
-bool KeyIsMatch(LocalIsolate* isolate, StringTableKey* key, String string) {
+template <typename IsolateT, typename StringTableKey>
+bool KeyIsMatch(IsolateT* isolate, StringTableKey* key, String string) {
if (string.hash() != key->hash()) return false;
if (string.length() != key->length()) return false;
return key->IsMatch(isolate, string);
@@ -135,15 +135,15 @@ class StringTable::Data {
int number_of_elements() const { return number_of_elements_; }
int number_of_deleted_elements() const { return number_of_deleted_elements_; }
- template <typename LocalIsolate, typename StringTableKey>
- InternalIndex FindEntry(LocalIsolate* isolate, StringTableKey* key,
+ template <typename IsolateT, typename StringTableKey>
+ InternalIndex FindEntry(IsolateT* isolate, StringTableKey* key,
uint32_t hash) const;
InternalIndex FindInsertionEntry(PtrComprCageBase cage_base,
uint32_t hash) const;
- template <typename LocalIsolate, typename StringTableKey>
- InternalIndex FindEntryOrInsertionEntry(LocalIsolate* isolate,
+ template <typename IsolateT, typename StringTableKey>
+ InternalIndex FindEntryOrInsertionEntry(IsolateT* isolate,
StringTableKey* key,
uint32_t hash) const;
@@ -249,8 +249,8 @@ std::unique_ptr<StringTable::Data> StringTable::Data::Resize(
return new_data;
}
-template <typename LocalIsolate, typename StringTableKey>
-InternalIndex StringTable::Data::FindEntry(LocalIsolate* isolate,
+template <typename IsolateT, typename StringTableKey>
+InternalIndex StringTable::Data::FindEntry(IsolateT* isolate,
StringTableKey* key,
uint32_t hash) const {
uint32_t count = 1;
@@ -281,9 +281,9 @@ InternalIndex StringTable::Data::FindInsertionEntry(PtrComprCageBase cage_base,
}
}
-template <typename LocalIsolate, typename StringTableKey>
+template <typename IsolateT, typename StringTableKey>
InternalIndex StringTable::Data::FindEntryOrInsertionEntry(
- LocalIsolate* isolate, StringTableKey* key, uint32_t hash) const {
+ IsolateT* isolate, StringTableKey* key, uint32_t hash) const {
InternalIndex insertion_entry = InternalIndex::NotFound();
uint32_t count = 1;
// EnsureCapacity will guarantee the hash table is never full.
@@ -428,9 +428,8 @@ Handle<String> StringTable::LookupString(Isolate* isolate,
return result;
}
-template <typename StringTableKey, typename LocalIsolate>
-Handle<String> StringTable::LookupKey(LocalIsolate* isolate,
- StringTableKey* key) {
+template <typename StringTableKey, typename IsolateT>
+Handle<String> StringTable::LookupKey(IsolateT* isolate, StringTableKey* key) {
// String table lookups are allowed to be concurrent, assuming that:
//
// - The Heap access is allowed to be concurrent (using LocalHeap or
diff --git a/deps/v8/src/objects/string-table.h b/deps/v8/src/objects/string-table.h
index fe87ce15f2..fc630f156c 100644
--- a/deps/v8/src/objects/string-table.h
+++ b/deps/v8/src/objects/string-table.h
@@ -63,8 +63,8 @@ class V8_EXPORT_PRIVATE StringTable {
// Find string in the string table, using the given key. If the string is not
// there yet, it is created (by the key) and added. The return value is the
// string found.
- template <typename StringTableKey, typename LocalIsolate>
- Handle<String> LookupKey(LocalIsolate* isolate, StringTableKey* key);
+ template <typename StringTableKey, typename IsolateT>
+ Handle<String> LookupKey(IsolateT* isolate, StringTableKey* key);
// {raw_string} must be a tagged String pointer.
// Returns a tagged pointer: either a Smi if the string is an array index, an
diff --git a/deps/v8/src/objects/string.cc b/deps/v8/src/objects/string.cc
index ffa1be3aa3..52bb9679a5 100644
--- a/deps/v8/src/objects/string.cc
+++ b/deps/v8/src/objects/string.cc
@@ -127,7 +127,7 @@ void String::MakeThin(Isolate* isolate, String internalized) {
ThinString thin = ThinString::unchecked_cast(*this);
thin.set_actual(internalized);
DCHECK_GE(old_size, ThinString::kSize);
- this->synchronized_set_map(*map);
+ this->set_map(*map, kReleaseStore);
Address thin_end = thin.address() + ThinString::kSize;
int size_delta = old_size - ThinString::kSize;
if (size_delta != 0) {
@@ -200,7 +200,7 @@ bool String::MakeExternal(v8::String::ExternalStringResource* resource) {
// We are storing the new map using release store after creating a filler for
// the left-over space to avoid races with the sweeper thread.
- this->synchronized_set_map(new_map);
+ this->set_map(new_map, kReleaseStore);
ExternalTwoByteString self = ExternalTwoByteString::cast(*this);
self.AllocateExternalPointerEntries(isolate);
@@ -277,7 +277,7 @@ bool String::MakeExternal(v8::String::ExternalOneByteStringResource* resource) {
// We are storing the new map using release store after creating a filler for
// the left-over space to avoid races with the sweeper thread.
- this->synchronized_set_map(new_map);
+ this->set_map(new_map, kReleaseStore);
ExternalOneByteString self = ExternalOneByteString::cast(*this);
self.AllocateExternalPointerEntries(isolate);
@@ -374,7 +374,7 @@ void String::StringShortPrint(StringStream* accumulator) {
accumulator->Put('>');
}
-void String::PrintUC16(std::ostream& os, int start, int end) { // NOLINT
+void String::PrintUC16(std::ostream& os, int start, int end) {
if (end < 0) end = length();
StringCharacterStream stream(*this, start);
for (int i = start; i < end && stream.HasMore(); i++) {
@@ -735,8 +735,8 @@ static void CalculateLineEndsImpl(std::vector<int>* line_ends,
}
}
-template <typename LocalIsolate>
-Handle<FixedArray> String::CalculateLineEnds(LocalIsolate* isolate,
+template <typename IsolateT>
+Handle<FixedArray> String::CalculateLineEnds(IsolateT* isolate,
Handle<String> src,
bool include_ending_line) {
src = Flatten(isolate, src);
@@ -1425,7 +1425,7 @@ Handle<String> SeqString::Truncate(Handle<SeqString> string, int new_length) {
ClearRecordedSlots::kNo);
// We are storing the new length using release store after creating a filler
// for the left-over space to avoid races with the sweeper thread.
- string->synchronized_set_length(new_length);
+ string->set_length(new_length, kReleaseStore);
return string;
}
diff --git a/deps/v8/src/objects/string.h b/deps/v8/src/objects/string.h
index b8d47b5551..b873a069ad 100644
--- a/deps/v8/src/objects/string.h
+++ b/deps/v8/src/objects/string.h
@@ -194,9 +194,10 @@ class String : public TorqueGeneratedString<String, Name> {
const byte* AddressOfCharacterAt(int start_index,
const DisallowGarbageCollection& no_gc);
- // Get and set the length of the string using acquire loads and release
- // stores.
- DECL_SYNCHRONIZED_INT_ACCESSORS(length)
+ // Forward declare the non-atomic (set_)length defined in torque.
+ using TorqueGeneratedString::length;
+ using TorqueGeneratedString::set_length;
+ DECL_RELEASE_ACQUIRE_INT_ACCESSORS(length)
// Returns whether this string has only one-byte chars, i.e. all of them can
// be one-byte encoded. This might be the case even if the string is
@@ -409,7 +410,7 @@ class String : public TorqueGeneratedString<String, Name> {
const char* PrefixForDebugPrint() const;
const char* SuffixForDebugPrint() const;
void StringShortPrint(StringStream* accumulator);
- void PrintUC16(std::ostream& os, int start = 0, int end = -1); // NOLINT
+ void PrintUC16(std::ostream& os, int start = 0, int end = -1);
void PrintUC16(StringStream* accumulator, int start, int end);
// Dispatched behavior.
@@ -530,8 +531,8 @@ class String : public TorqueGeneratedString<String, Name> {
Visitor* visitor, String string, int offset,
const SharedStringAccessGuardIfNeeded& access_guard);
- template <typename LocalIsolate>
- static Handle<FixedArray> CalculateLineEnds(LocalIsolate* isolate,
+ template <typename IsolateT>
+ static Handle<FixedArray> CalculateLineEnds(IsolateT* isolate,
Handle<String> string,
bool include_ending_line);
diff --git a/deps/v8/src/objects/struct-inl.h b/deps/v8/src/objects/struct-inl.h
index b313bc43f8..b062660fd1 100644
--- a/deps/v8/src/objects/struct-inl.h
+++ b/deps/v8/src/objects/struct-inl.h
@@ -28,13 +28,6 @@ NEVER_READ_ONLY_SPACE_IMPL(AccessorPair)
TQ_OBJECT_CONSTRUCTORS_IMPL(ClassPositions)
-void Struct::InitializeBody(int object_size) {
- Object value = GetReadOnlyRoots().undefined_value();
- for (int offset = kHeaderSize; offset < object_size; offset += kTaggedSize) {
- WRITE_FIELD(*this, offset, value);
- }
-}
-
Object AccessorPair::get(AccessorComponent component) {
return component == ACCESSOR_GETTER ? getter() : setter();
}
diff --git a/deps/v8/src/objects/struct.h b/deps/v8/src/objects/struct.h
index fa4fe42b62..ca0dcf4ac1 100644
--- a/deps/v8/src/objects/struct.h
+++ b/deps/v8/src/objects/struct.h
@@ -21,7 +21,6 @@ namespace internal {
// identified in the type system.
class Struct : public TorqueGeneratedStruct<Struct, HeapObject> {
public:
- inline void InitializeBody(int object_size);
void BriefPrintDetails(std::ostream& os);
STATIC_ASSERT(kHeaderSize == HeapObject::kHeaderSize);
diff --git a/deps/v8/src/objects/swiss-name-dictionary-inl.h b/deps/v8/src/objects/swiss-name-dictionary-inl.h
index 343abfc8cc..770c32b59f 100644
--- a/deps/v8/src/objects/swiss-name-dictionary-inl.h
+++ b/deps/v8/src/objects/swiss-name-dictionary-inl.h
@@ -89,7 +89,7 @@ constexpr int SwissNameDictionary::CtrlTableSize(int capacity) {
// static
constexpr int SwissNameDictionary::SizeFor(int capacity) {
- CONSTEXPR_DCHECK(IsValidCapacity(capacity));
+ DCHECK(IsValidCapacity(capacity));
return PropertyDetailsTableStartOffset(capacity) + capacity;
}
@@ -98,7 +98,7 @@ constexpr int SwissNameDictionary::SizeFor(int capacity) {
// Similar to Abseil's CapacityToGrowth.
// static
constexpr int SwissNameDictionary::MaxUsableCapacity(int capacity) {
- CONSTEXPR_DCHECK(IsValidCapacity(capacity));
+ DCHECK(IsValidCapacity(capacity));
if (Group::kWidth == 8 && capacity == 4) {
// If the group size is 16 we can fully utilize capacity 4: There will be
@@ -146,9 +146,8 @@ void SwissNameDictionary::SetEntryForEnumerationIndex(int enumeration_index,
entry);
}
-template <typename LocalIsolate>
-InternalIndex SwissNameDictionary::FindEntry(LocalIsolate* isolate,
- Object key) {
+template <typename IsolateT>
+InternalIndex SwissNameDictionary::FindEntry(IsolateT* isolate, Object key) {
Name name = Name::cast(key);
DCHECK(name.IsUniqueName());
uint32_t hash = name.hash();
@@ -212,8 +211,8 @@ InternalIndex SwissNameDictionary::FindEntry(LocalIsolate* isolate,
}
}
-template <typename LocalIsolate>
-InternalIndex SwissNameDictionary::FindEntry(LocalIsolate* isolate,
+template <typename IsolateT>
+InternalIndex SwissNameDictionary::FindEntry(IsolateT* isolate,
Handle<Object> key) {
return FindEntry(isolate, *key);
}
@@ -318,9 +317,9 @@ PropertyDetails SwissNameDictionary::DetailsAt(InternalIndex entry) {
}
// static
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SwissNameDictionary> SwissNameDictionary::EnsureGrowable(
- LocalIsolate* isolate, Handle<SwissNameDictionary> table) {
+ IsolateT* isolate, Handle<SwissNameDictionary> table) {
int capacity = table->Capacity();
if (table->UsedCapacity() < MaxUsableCapacity(capacity)) {
@@ -444,7 +443,7 @@ int SwissNameDictionary::GetMetaTableField(ByteArray meta_table,
}
constexpr int SwissNameDictionary::MetaTableSizePerEntryFor(int capacity) {
- CONSTEXPR_DCHECK(IsValidCapacity(capacity));
+ DCHECK(IsValidCapacity(capacity));
// See the STATIC_ASSERTs on |kMax1ByteMetaTableCapacity| and
// |kMax2ByteMetaTableCapacity| in the .cc file for an explanation of these
@@ -459,7 +458,7 @@ constexpr int SwissNameDictionary::MetaTableSizePerEntryFor(int capacity) {
}
constexpr int SwissNameDictionary::MetaTableSizeFor(int capacity) {
- CONSTEXPR_DCHECK(IsValidCapacity(capacity));
+ DCHECK(IsValidCapacity(capacity));
int per_entry_size = MetaTableSizePerEntryFor(capacity);
@@ -488,9 +487,9 @@ bool SwissNameDictionary::ToKey(ReadOnlyRoots roots, InternalIndex entry,
}
// static
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SwissNameDictionary> SwissNameDictionary::Add(
- LocalIsolate* isolate, Handle<SwissNameDictionary> original_table,
+ IsolateT* isolate, Handle<SwissNameDictionary> original_table,
Handle<Name> key, Handle<Object> value, PropertyDetails details,
InternalIndex* entry_out) {
DCHECK(original_table->FindEntry(isolate, *key).is_not_found());
@@ -538,9 +537,9 @@ int SwissNameDictionary::AddInternal(Name key, Object value,
return target;
}
-template <typename LocalIsolate>
-void SwissNameDictionary::Initialize(LocalIsolate* isolate,
- ByteArray meta_table, int capacity) {
+template <typename IsolateT>
+void SwissNameDictionary::Initialize(IsolateT* isolate, ByteArray meta_table,
+ int capacity) {
DCHECK(IsValidCapacity(capacity));
DisallowHeapAllocation no_gc;
ReadOnlyRoots roots(isolate);
@@ -564,7 +563,7 @@ void SwissNameDictionary::Initialize(LocalIsolate* isolate,
SwissNameDictionary::IndexIterator::IndexIterator(
Handle<SwissNameDictionary> dict, int start)
: enum_index_{start}, dict_{dict} {
- if (!COMPRESS_POINTERS_BOOL && dict.is_null()) {
+ if (!COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL && dict.is_null()) {
used_capacity_ = 0;
} else {
used_capacity_ = dict->UsedCapacity();
@@ -609,7 +608,7 @@ SwissNameDictionary::IndexIterator SwissNameDictionary::IndexIterable::begin() {
}
SwissNameDictionary::IndexIterator SwissNameDictionary::IndexIterable::end() {
- if (!COMPRESS_POINTERS_BOOL && dict_.is_null()) {
+ if (!COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL && dict_.is_null()) {
return IndexIterator(dict_, 0);
} else {
DCHECK(!dict_.is_null());
@@ -620,12 +619,12 @@ SwissNameDictionary::IndexIterator SwissNameDictionary::IndexIterable::end() {
SwissNameDictionary::IndexIterable
SwissNameDictionary::IterateEntriesOrdered() {
// If we are supposed to iterate the empty dictionary (which is non-writable)
- // and pointer compression is disabled, we have no simple way to get the
- // isolate, which we would need to create a handle.
+ // and pointer compression with a per-Isolate cage is disabled, we have no
+ // simple way to get the isolate, which we would need to create a handle.
// TODO(emrich): Consider always using roots.empty_swiss_dictionary_handle()
// in the condition once this function gets Isolate as a parameter in order to
// avoid empty dict checks.
- if (!COMPRESS_POINTERS_BOOL && Capacity() == 0)
+ if (!COMPRESS_POINTERS_IN_ISOLATE_CAGE_BOOL && Capacity() == 0)
return IndexIterable(Handle<SwissNameDictionary>::null());
Isolate* isolate;
@@ -661,7 +660,7 @@ constexpr int SwissNameDictionary::MaxCapacity() {
sizeof(uint32_t);
int result = (FixedArray::kMaxSize - const_size) / per_entry_size;
- CONSTEXPR_DCHECK(result <= Smi::kMaxValue);
+ DCHECK_GE(Smi::kMaxValue, result);
return result;
}
diff --git a/deps/v8/src/objects/swiss-name-dictionary.cc b/deps/v8/src/objects/swiss-name-dictionary.cc
index 5b567aeaee..57038ca41d 100644
--- a/deps/v8/src/objects/swiss-name-dictionary.cc
+++ b/deps/v8/src/objects/swiss-name-dictionary.cc
@@ -37,10 +37,9 @@ Handle<SwissNameDictionary> SwissNameDictionary::DeleteEntry(
}
// static
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<SwissNameDictionary> SwissNameDictionary::Rehash(
- LocalIsolate* isolate, Handle<SwissNameDictionary> table,
- int new_capacity) {
+ IsolateT* isolate, Handle<SwissNameDictionary> table, int new_capacity) {
DCHECK(IsValidCapacity(new_capacity));
DCHECK_LE(table->NumberOfElements(), MaxUsableCapacity(new_capacity));
ReadOnlyRoots roots(isolate);
diff --git a/deps/v8/src/objects/swiss-name-dictionary.h b/deps/v8/src/objects/swiss-name-dictionary.h
index 9ab225dd34..afafb83dd2 100644
--- a/deps/v8/src/objects/swiss-name-dictionary.h
+++ b/deps/v8/src/objects/swiss-name-dictionary.h
@@ -72,10 +72,10 @@ class V8_EXPORT_PRIVATE SwissNameDictionary : public HeapObject {
public:
using Group = swiss_table::Group;
- template <typename LocalIsolate>
+ template <typename IsolateT>
inline static Handle<SwissNameDictionary> Add(
- LocalIsolate* isolate, Handle<SwissNameDictionary> table,
- Handle<Name> key, Handle<Object> value, PropertyDetails details,
+ IsolateT* isolate, Handle<SwissNameDictionary> table, Handle<Name> key,
+ Handle<Object> value, PropertyDetails details,
InternalIndex* entry_out = nullptr);
static Handle<SwissNameDictionary> Shrink(Isolate* isolate,
@@ -84,16 +84,16 @@ class V8_EXPORT_PRIVATE SwissNameDictionary : public HeapObject {
static Handle<SwissNameDictionary> DeleteEntry(
Isolate* isolate, Handle<SwissNameDictionary> table, InternalIndex entry);
- template <typename LocalIsolate>
- inline InternalIndex FindEntry(LocalIsolate* isolate, Object key);
+ template <typename IsolateT>
+ inline InternalIndex FindEntry(IsolateT* isolate, Object key);
// This is to make the interfaces of NameDictionary::FindEntry and
// OrderedNameDictionary::FindEntry compatible.
// TODO(emrich) clean this up: NameDictionary uses Handle<Object>
// for FindEntry keys due to its Key typedef, but that's also used
// for adding, where we do need handles.
- template <typename LocalIsolate>
- inline InternalIndex FindEntry(LocalIsolate* isolate, Handle<Object> key);
+ template <typename IsolateT>
+ inline InternalIndex FindEntry(IsolateT* isolate, Handle<Object> key);
static inline bool IsKey(ReadOnlyRoots roots, Object key_candidate);
inline bool ToKey(ReadOnlyRoots roots, InternalIndex entry, Object* out_key);
@@ -123,11 +123,11 @@ class V8_EXPORT_PRIVATE SwissNameDictionary : public HeapObject {
// deleted entries (which reside in initialized memory, but are not compared).
bool EqualsForTesting(SwissNameDictionary other);
- template <typename LocalIsolate>
- void Initialize(LocalIsolate* isolate, ByteArray meta_table, int capacity);
+ template <typename IsolateT>
+ void Initialize(IsolateT* isolate, ByteArray meta_table, int capacity);
- template <typename LocalIsolate>
- static Handle<SwissNameDictionary> Rehash(LocalIsolate* isolate,
+ template <typename IsolateT>
+ static Handle<SwissNameDictionary> Rehash(IsolateT* isolate,
Handle<SwissNameDictionary> table,
int new_capacity);
void Rehash(Isolate* isolate);
@@ -262,9 +262,9 @@ class V8_EXPORT_PRIVATE SwissNameDictionary : public HeapObject {
using ctrl_t = swiss_table::ctrl_t;
using Ctrl = swiss_table::Ctrl;
- template <typename LocalIsolate>
+ template <typename IsolateT>
inline static Handle<SwissNameDictionary> EnsureGrowable(
- LocalIsolate* isolate, Handle<SwissNameDictionary> table);
+ IsolateT* isolate, Handle<SwissNameDictionary> table);
// Returns table of byte-encoded PropertyDetails (without enumeration index
// stored in PropertyDetails).
diff --git a/deps/v8/src/objects/tagged-field-inl.h b/deps/v8/src/objects/tagged-field-inl.h
index 513f6a02d9..5c3a18982e 100644
--- a/deps/v8/src/objects/tagged-field-inl.h
+++ b/deps/v8/src/objects/tagged-field-inl.h
@@ -56,6 +56,7 @@ Tagged_t TaggedField<T, kFieldOffset>::full_to_tagged(Address value) {
template <typename T, int kFieldOffset>
T TaggedField<T, kFieldOffset>::load(HeapObject host, int offset) {
Tagged_t value = *location(host, offset);
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
return T(tagged_to_full(host.ptr(), value));
}
@@ -64,6 +65,7 @@ template <typename T, int kFieldOffset>
T TaggedField<T, kFieldOffset>::load(PtrComprCageBase cage_base,
HeapObject host, int offset) {
Tagged_t value = *location(host, offset);
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
return T(tagged_to_full(cage_base, value));
}
@@ -73,7 +75,9 @@ void TaggedField<T, kFieldOffset>::store(HeapObject host, T value) {
#ifdef V8_ATOMIC_OBJECT_FIELD_WRITES
Relaxed_Store(host, value);
#else
- *location(host) = full_to_tagged(value.ptr());
+ Address ptr = value.ptr();
+ DCHECK_NE(kFieldOffset, HeapObject::kMapOffset);
+ *location(host) = full_to_tagged(ptr);
#endif
}
@@ -83,7 +87,9 @@ void TaggedField<T, kFieldOffset>::store(HeapObject host, int offset, T value) {
#ifdef V8_ATOMIC_OBJECT_FIELD_WRITES
Relaxed_Store(host, offset, value);
#else
- *location(host, offset) = full_to_tagged(value.ptr());
+ Address ptr = value.ptr();
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
+ *location(host, offset) = full_to_tagged(ptr);
#endif
}
@@ -91,6 +97,7 @@ void TaggedField<T, kFieldOffset>::store(HeapObject host, int offset, T value) {
template <typename T, int kFieldOffset>
T TaggedField<T, kFieldOffset>::Relaxed_Load(HeapObject host, int offset) {
AtomicTagged_t value = AsAtomicTagged::Relaxed_Load(location(host, offset));
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
return T(tagged_to_full(host.ptr(), value));
}
@@ -99,50 +106,89 @@ template <typename T, int kFieldOffset>
T TaggedField<T, kFieldOffset>::Relaxed_Load(PtrComprCageBase cage_base,
HeapObject host, int offset) {
AtomicTagged_t value = AsAtomicTagged::Relaxed_Load(location(host, offset));
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
return T(tagged_to_full(cage_base, value));
}
// static
template <typename T, int kFieldOffset>
-void TaggedField<T, kFieldOffset>::Relaxed_Store(HeapObject host, T value) {
+T TaggedField<T, kFieldOffset>::Relaxed_Load_Map_Word(
+ PtrComprCageBase cage_base, HeapObject host) {
+ AtomicTagged_t value = AsAtomicTagged::Relaxed_Load(location(host, 0));
+ return T(tagged_to_full(cage_base, value));
+}
+
+// static
+template <typename T, int kFieldOffset>
+void TaggedField<T, kFieldOffset>::Relaxed_Store_Map_Word(HeapObject host,
+ T value) {
AsAtomicTagged::Relaxed_Store(location(host), full_to_tagged(value.ptr()));
}
// static
template <typename T, int kFieldOffset>
+void TaggedField<T, kFieldOffset>::Relaxed_Store(HeapObject host, T value) {
+ Address ptr = value.ptr();
+ DCHECK_NE(kFieldOffset, HeapObject::kMapOffset);
+ AsAtomicTagged::Relaxed_Store(location(host), full_to_tagged(ptr));
+}
+
+// static
+template <typename T, int kFieldOffset>
void TaggedField<T, kFieldOffset>::Relaxed_Store(HeapObject host, int offset,
T value) {
- AsAtomicTagged::Relaxed_Store(location(host, offset),
- full_to_tagged(value.ptr()));
+ Address ptr = value.ptr();
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
+ AsAtomicTagged::Relaxed_Store(location(host, offset), full_to_tagged(ptr));
}
// static
template <typename T, int kFieldOffset>
T TaggedField<T, kFieldOffset>::Acquire_Load(HeapObject host, int offset) {
AtomicTagged_t value = AsAtomicTagged::Acquire_Load(location(host, offset));
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
return T(tagged_to_full(host.ptr(), value));
}
// static
template <typename T, int kFieldOffset>
+T TaggedField<T, kFieldOffset>::Acquire_Load_No_Unpack(
+ PtrComprCageBase cage_base, HeapObject host, int offset) {
+ AtomicTagged_t value = AsAtomicTagged::Acquire_Load(location(host, offset));
+ return T(tagged_to_full(cage_base, value));
+}
+
+template <typename T, int kFieldOffset>
T TaggedField<T, kFieldOffset>::Acquire_Load(PtrComprCageBase cage_base,
HeapObject host, int offset) {
AtomicTagged_t value = AsAtomicTagged::Acquire_Load(location(host, offset));
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
return T(tagged_to_full(cage_base, value));
}
// static
template <typename T, int kFieldOffset>
void TaggedField<T, kFieldOffset>::Release_Store(HeapObject host, T value) {
- AsAtomicTagged::Release_Store(location(host), full_to_tagged(value.ptr()));
+ Address ptr = value.ptr();
+ DCHECK_NE(kFieldOffset, HeapObject::kMapOffset);
+ AsAtomicTagged::Release_Store(location(host), full_to_tagged(ptr));
+}
+
+// static
+template <typename T, int kFieldOffset>
+void TaggedField<T, kFieldOffset>::Release_Store_Map_Word(HeapObject host,
+ T value) {
+ Address ptr = value.ptr();
+ AsAtomicTagged::Release_Store(location(host), full_to_tagged(ptr));
}
// static
template <typename T, int kFieldOffset>
void TaggedField<T, kFieldOffset>::Release_Store(HeapObject host, int offset,
T value) {
- AsAtomicTagged::Release_Store(location(host, offset),
- full_to_tagged(value.ptr()));
+ Address ptr = value.ptr();
+ DCHECK_NE(kFieldOffset + offset, HeapObject::kMapOffset);
+ AsAtomicTagged::Release_Store(location(host, offset), full_to_tagged(ptr));
}
// static
diff --git a/deps/v8/src/objects/tagged-field.h b/deps/v8/src/objects/tagged-field.h
index 68ee5bcc6a..d9fc0bb102 100644
--- a/deps/v8/src/objects/tagged-field.h
+++ b/deps/v8/src/objects/tagged-field.h
@@ -49,9 +49,11 @@ class TaggedField : public AllStatic {
int offset = 0);
static inline void Relaxed_Store(HeapObject host, T value);
- static void Relaxed_Store(HeapObject host, int offset, T value);
+ static inline void Relaxed_Store(HeapObject host, int offset, T value);
static inline T Acquire_Load(HeapObject host, int offset = 0);
+ static inline T Acquire_Load_No_Unpack(PtrComprCageBase cage_base,
+ HeapObject host, int offset = 0);
static inline T Acquire_Load(PtrComprCageBase cage_base, HeapObject host,
int offset = 0);
@@ -61,6 +63,13 @@ class TaggedField : public AllStatic {
static inline Tagged_t Release_CompareAndSwap(HeapObject host, T old,
T value);
+ // Note: Use these *_Map_Word methods only when loading a MapWord from a
+ // MapField.
+ static inline T Relaxed_Load_Map_Word(PtrComprCageBase cage_base,
+ HeapObject host);
+ static inline void Relaxed_Store_Map_Word(HeapObject host, T value);
+ static inline void Release_Store_Map_Word(HeapObject host, T value);
+
private:
static inline Tagged_t* location(HeapObject host, int offset = 0);
diff --git a/deps/v8/src/objects/tagged-impl.h b/deps/v8/src/objects/tagged-impl.h
index 9ef8b58d99..e7278a1245 100644
--- a/deps/v8/src/objects/tagged-impl.h
+++ b/deps/v8/src/objects/tagged-impl.h
@@ -88,8 +88,7 @@ class TaggedImpl {
// Returns true if this tagged value is a strong pointer to a HeapObject.
constexpr inline bool IsStrong() const {
- CONSTEXPR_DCHECK(kCanBeWeak ||
- (!IsSmi() == HAS_STRONG_HEAP_OBJECT_TAG(ptr_)));
+ DCHECK(kCanBeWeak || (!IsSmi() == HAS_STRONG_HEAP_OBJECT_TAG(ptr_)));
return kCanBeWeak ? HAS_STRONG_HEAP_OBJECT_TAG(ptr_) : !IsSmi();
}
diff --git a/deps/v8/src/objects/tagged-index.h b/deps/v8/src/objects/tagged-index.h
index e8cfbc7608..19812877cb 100644
--- a/deps/v8/src/objects/tagged-index.h
+++ b/deps/v8/src/objects/tagged-index.h
@@ -38,7 +38,7 @@ class TaggedIndex : public Object {
// special in that we want them to be constexprs.
constexpr TaggedIndex() : Object() {}
explicit constexpr TaggedIndex(Address ptr) : Object(ptr) {
- CONSTEXPR_DCHECK(HAS_SMI_TAG(ptr));
+ DCHECK(HAS_SMI_TAG(ptr));
}
// Returns the integer value.
@@ -49,7 +49,7 @@ class TaggedIndex : public Object {
// Convert a value to a TaggedIndex object.
static inline TaggedIndex FromIntptr(intptr_t value) {
- CONSTEXPR_DCHECK(TaggedIndex::IsValid(value));
+ DCHECK(TaggedIndex::IsValid(value));
return TaggedIndex((static_cast<Address>(value) << kSmiTagSize) | kSmiTag);
}
diff --git a/deps/v8/src/objects/templates-inl.h b/deps/v8/src/objects/templates-inl.h
index d5a08fd88e..d2d5076246 100644
--- a/deps/v8/src/objects/templates-inl.h
+++ b/deps/v8/src/objects/templates-inl.h
@@ -34,34 +34,10 @@ BOOL_ACCESSORS(FunctionTemplateInfo, flag, read_only_prototype,
ReadOnlyPrototypeBit::kShift)
BOOL_ACCESSORS(FunctionTemplateInfo, flag, remove_prototype,
RemovePrototypeBit::kShift)
-BOOL_ACCESSORS(FunctionTemplateInfo, flag, do_not_cache, DoNotCacheBit::kShift)
BOOL_ACCESSORS(FunctionTemplateInfo, flag, accept_any_receiver,
AcceptAnyReceiverBit::kShift)
BOOL_ACCESSORS(FunctionTemplateInfo, flag, published, PublishedBit::kShift)
-// TODO(nicohartmann@, v8:11122): Let Torque generate this accessor.
-RELEASE_ACQUIRE_ACCESSORS(FunctionTemplateInfo, call_code, HeapObject,
- kCallCodeOffset)
-
-// TODO(nicohartmann@, v8:11122): Let Torque generate this accessor.
-HeapObject FunctionTemplateInfo::rare_data(AcquireLoadTag) const {
- PtrComprCageBase cage_base = GetPtrComprCageBase(*this);
- return rare_data(cage_base, kAcquireLoad);
-}
-HeapObject FunctionTemplateInfo::rare_data(PtrComprCageBase cage_base,
- AcquireLoadTag) const {
- HeapObject value =
- TaggedField<HeapObject>::Acquire_Load(cage_base, *this, kRareDataOffset);
- DCHECK(value.IsUndefined() || value.IsFunctionTemplateRareData());
- return value;
-}
-void FunctionTemplateInfo::set_rare_data(HeapObject value, ReleaseStoreTag,
- WriteBarrierMode mode) {
- DCHECK(value.IsUndefined() || value.IsFunctionTemplateRareData());
- RELEASE_WRITE_FIELD(*this, kRareDataOffset, value);
- CONDITIONAL_WRITE_BARRIER(*this, kRareDataOffset, value, mode);
-}
-
// static
FunctionTemplateRareData FunctionTemplateInfo::EnsureFunctionTemplateRareData(
Isolate* isolate, Handle<FunctionTemplateInfo> function_template_info) {
@@ -100,10 +76,15 @@ RARE_ACCESSORS(instance_template, InstanceTemplate, HeapObject, undefined)
RARE_ACCESSORS(instance_call_handler, InstanceCallHandler, HeapObject,
undefined)
RARE_ACCESSORS(access_check_info, AccessCheckInfo, HeapObject, undefined)
-RARE_ACCESSORS(c_function, CFunction, Object, Smi(0))
-RARE_ACCESSORS(c_signature, CSignature, Object, Smi(0))
+RARE_ACCESSORS(c_function_overloads, CFunctionOverloads, FixedArray,
+ GetReadOnlyRoots(cage_base).empty_fixed_array())
#undef RARE_ACCESSORS
+bool TemplateInfo::should_cache() const {
+ return serial_number() != kDoNotCache;
+}
+bool TemplateInfo::is_cached() const { return serial_number() > kUncached; }
+
bool FunctionTemplateInfo::instantiated() {
return shared_function_info().IsSharedFunctionInfo();
}
diff --git a/deps/v8/src/objects/templates.h b/deps/v8/src/objects/templates.h
index 966b81167c..b240173432 100644
--- a/deps/v8/src/objects/templates.h
+++ b/deps/v8/src/objects/templates.h
@@ -12,6 +12,9 @@
#include "src/objects/object-macros.h"
namespace v8 {
+
+class CFunctionInfo;
+
namespace internal {
#include "torque-generated/src/objects/templates-tq.inc"
@@ -27,6 +30,16 @@ class TemplateInfo : public TorqueGeneratedTemplateInfo<TemplateInfo, Struct> {
// instead of caching them.
static const int kSlowTemplateInstantiationsCacheSize = 1 * MB;
+ // If the serial number is set to kDoNotCache, then we should never cache this
+ // TemplateInfo.
+ static const int kDoNotCache = -1;
+ // If the serial number is set to kUncached, it means that this TemplateInfo
+ // has not been cached yet but it can be.
+ static const int kUncached = -2;
+
+ inline bool should_cache() const;
+ inline bool is_cached() const;
+
TQ_OBJECT_CONSTRUCTORS(TemplateInfo)
};
@@ -35,6 +48,7 @@ class FunctionTemplateRareData
: public TorqueGeneratedFunctionTemplateRareData<FunctionTemplateRareData,
Struct> {
public:
+ DECL_VERIFIER(FunctionTemplateRareData)
TQ_OBJECT_CONSTRUCTORS(FunctionTemplateRareData)
};
@@ -83,20 +97,9 @@ class FunctionTemplateInfo
DECL_RARE_ACCESSORS(access_check_info, AccessCheckInfo, HeapObject)
- DECL_RARE_ACCESSORS(c_function, CFunction, Object)
- DECL_RARE_ACCESSORS(c_signature, CSignature, Object)
+ DECL_RARE_ACCESSORS(c_function_overloads, CFunctionOverloads, FixedArray)
#undef DECL_RARE_ACCESSORS
- // TODO(nicohartmann@, v8:11122): Let Torque generate the following accessor.
- DECL_RELEASE_ACQUIRE_ACCESSORS(call_code, HeapObject)
-
- // TODO(nicohartmann@, v8:11122): Let Torque generate the following accessor.
- inline HeapObject rare_data(AcquireLoadTag) const;
- inline HeapObject rare_data(PtrComprCageBase cage_base, AcquireLoadTag) const;
- inline void set_rare_data(
- HeapObject value, ReleaseStoreTag,
- WriteBarrierMode mode = WriteBarrierMode::UPDATE_WRITE_BARRIER);
-
// Begin flag bits ---------------------
DECL_BOOLEAN_ACCESSORS(undetectable)
@@ -111,10 +114,6 @@ class FunctionTemplateInfo
// prototype_provoider_template are instantiated.
DECL_BOOLEAN_ACCESSORS(remove_prototype)
- // If set, do not attach a serial number to this FunctionTemplate and thus do
- // not keep an instance boilerplate around.
- DECL_BOOLEAN_ACCESSORS(do_not_cache)
-
// If not set an access may be performed on calling the associated JSFunction.
DECL_BOOLEAN_ACCESSORS(accept_any_receiver)
@@ -128,8 +127,6 @@ class FunctionTemplateInfo
// Dispatched behavior.
DECL_PRINTER(FunctionTemplateInfo)
- static const int kInvalidSerialNumber = 0;
-
static Handle<SharedFunctionInfo> GetOrCreateSharedFunctionInfo(
Isolate* isolate, Handle<FunctionTemplateInfo> info,
MaybeHandle<Name> maybe_name);
@@ -146,14 +143,26 @@ class FunctionTemplateInfo
inline FunctionTemplateInfo GetParent(Isolate* isolate);
// Returns true if |object| is an instance of this function template.
inline bool IsTemplateFor(JSObject object);
- bool IsTemplateFor(Map map);
+ bool IsTemplateFor(Map map) const;
+ // Returns true if |object| is an API object and is constructed by this
+ // particular function template (skips walking up the chain of inheriting
+ // functions that is done by IsTemplateFor).
+ bool IsLeafTemplateForApiObject(Object object) const;
inline bool instantiated();
inline bool BreakAtEntry();
// Helper function for cached accessors.
- static MaybeHandle<Name> TryGetCachedPropertyName(Isolate* isolate,
- Handle<Object> getter);
+ static base::Optional<Name> TryGetCachedPropertyName(Isolate* isolate,
+ Object getter);
+ // Fast API overloads.
+ int GetCFunctionsCount() const;
+ Address GetCFunction(int index) const;
+ const CFunctionInfo* GetCSignature(int index) const;
+
+ // CFunction data for a set of overloads is stored into a FixedArray, as
+ // [address_0, signature_0, ... address_n-1, signature_n-1].
+ static const int kFunctionOverloadEntrySize = 2;
// Bit position in the flag, from least significant bit position.
DEFINE_TORQUE_GENERATED_FUNCTION_TEMPLATE_INFO_FLAGS()
diff --git a/deps/v8/src/objects/templates.tq b/deps/v8/src/objects/templates.tq
index e952747ecf..1dec706d49 100644
--- a/deps/v8/src/objects/templates.tq
+++ b/deps/v8/src/objects/templates.tq
@@ -24,8 +24,7 @@ extern class FunctionTemplateRareData extends Struct {
instance_template: ObjectTemplateInfo|Undefined;
instance_call_handler: CallHandlerInfo|Undefined;
access_check_info: AccessCheckInfo|Undefined;
- c_function: Foreign|Zero;
- c_signature: Foreign|Zero;
+ c_function_overloads: FixedArray;
}
bitfield struct FunctionTemplateInfoFlags extends uint31 {
@@ -33,7 +32,6 @@ bitfield struct FunctionTemplateInfoFlags extends uint31 {
needs_access_check: bool: 1 bit;
read_only_prototype: bool: 1 bit;
remove_prototype: bool: 1 bit;
- do_not_cache: bool: 1 bit;
accept_any_receiver: bool: 1 bit;
published: bool: 1 bit;
}
@@ -42,7 +40,7 @@ bitfield struct FunctionTemplateInfoFlags extends uint31 {
extern class FunctionTemplateInfo extends TemplateInfo {
// Handler invoked when calling an instance of this FunctionTemplateInfo.
// Either CallHandlerInfo or Undefined.
- call_code: CallHandlerInfo|Undefined;
+ @cppAcquireLoad @cppReleaseStore call_code: CallHandlerInfo|Undefined;
class_name: String|Undefined;
// If the signature is a FunctionTemplateInfo it is used to check whether the
// receiver calling the associated JSFunction is a compatible receiver, i.e.
@@ -52,6 +50,8 @@ extern class FunctionTemplateInfo extends TemplateInfo {
// If any of the setters declared by DECL_RARE_ACCESSORS are used then a
// FunctionTemplateRareData will be stored here. Until then this contains
// undefined.
+ @cppAcquireLoad
+ @cppReleaseStore
rare_data: FunctionTemplateRareData|Undefined;
shared_function_info: SharedFunctionInfo|Undefined;
// Internal field to store a flag bitfield.
diff --git a/deps/v8/src/objects/torque-defined-classes.h b/deps/v8/src/objects/torque-defined-classes.h
index aeea4e1c53..4273d34711 100644
--- a/deps/v8/src/objects/torque-defined-classes.h
+++ b/deps/v8/src/objects/torque-defined-classes.h
@@ -7,6 +7,7 @@
#include "src/objects/descriptor-array.h"
#include "src/objects/fixed-array.h"
#include "src/objects/heap-object.h"
+#include "src/objects/megadom-handler.h"
#include "src/objects/objects.h"
// Has to be the last include (doesn't have include guards):
diff --git a/deps/v8/src/objects/transitions.cc b/deps/v8/src/objects/transitions.cc
index ac908030a2..a8bf5bbde0 100644
--- a/deps/v8/src/objects/transitions.cc
+++ b/deps/v8/src/objects/transitions.cc
@@ -510,7 +510,7 @@ void TransitionsAccessor::EnsureHasFullTransitionArray() {
}
void TransitionsAccessor::TraverseTransitionTreeInternal(
- TraverseCallback callback, void* data, DisallowGarbageCollection* no_gc) {
+ TraverseCallback callback, DisallowGarbageCollection* no_gc) {
switch (encoding()) {
case kPrototypeInfo:
case kUninitialized:
@@ -520,7 +520,7 @@ void TransitionsAccessor::TraverseTransitionTreeInternal(
Map simple_target =
Map::cast(raw_transitions_->GetHeapObjectAssumeWeak());
TransitionsAccessor(isolate_, simple_target, no_gc)
- .TraverseTransitionTreeInternal(callback, data, no_gc);
+ .TraverseTransitionTreeInternal(callback, no_gc);
break;
}
case kFullTransitionArray: {
@@ -533,7 +533,7 @@ void TransitionsAccessor::TraverseTransitionTreeInternal(
HeapObject heap_object;
if (target->GetHeapObjectIfWeak(&heap_object)) {
TransitionsAccessor(isolate_, Map::cast(heap_object), no_gc)
- .TraverseTransitionTreeInternal(callback, data, no_gc);
+ .TraverseTransitionTreeInternal(callback, no_gc);
} else {
DCHECK(target->IsCleared());
}
@@ -541,12 +541,12 @@ void TransitionsAccessor::TraverseTransitionTreeInternal(
}
for (int i = 0; i < transitions().number_of_transitions(); ++i) {
TransitionsAccessor(isolate_, transitions().GetTarget(i), no_gc)
- .TraverseTransitionTreeInternal(callback, data, no_gc);
+ .TraverseTransitionTreeInternal(callback, no_gc);
}
break;
}
}
- callback(map_, data);
+ callback(map_);
}
#ifdef DEBUG
diff --git a/deps/v8/src/objects/transitions.h b/deps/v8/src/objects/transitions.h
index 237cfcd0ef..473827fd40 100644
--- a/deps/v8/src/objects/transitions.h
+++ b/deps/v8/src/objects/transitions.h
@@ -100,13 +100,13 @@ class V8_EXPORT_PRIVATE TransitionsAccessor {
PropertyAttributes* out_integrity_level = nullptr);
// ===== ITERATION =====
- using TraverseCallback = void (*)(Map map, void* data);
+ using TraverseCallback = std::function<void(Map)>;
// Traverse the transition tree in postorder.
- void TraverseTransitionTree(TraverseCallback callback, void* data) {
+ void TraverseTransitionTree(TraverseCallback callback) {
// Make sure that we do not allocate in the callback.
DisallowGarbageCollection no_gc;
- TraverseTransitionTreeInternal(callback, data, &no_gc);
+ TraverseTransitionTreeInternal(callback, &no_gc);
}
// ===== PROTOTYPE TRANSITIONS =====
@@ -192,7 +192,7 @@ class V8_EXPORT_PRIVATE TransitionsAccessor {
void SetPrototypeTransitions(Handle<WeakFixedArray> proto_transitions);
WeakFixedArray GetPrototypeTransitions();
- void TraverseTransitionTreeInternal(TraverseCallback callback, void* data,
+ void TraverseTransitionTreeInternal(TraverseCallback callback,
DisallowGarbageCollection* no_gc);
Isolate* isolate_;
diff --git a/deps/v8/src/objects/value-serializer.cc b/deps/v8/src/objects/value-serializer.cc
index 43d946943b..9984f097a4 100644
--- a/deps/v8/src/objects/value-serializer.cc
+++ b/deps/v8/src/objects/value-serializer.cc
@@ -22,6 +22,7 @@
#include "src/objects/js-array-inl.h"
#include "src/objects/js-collection-inl.h"
#include "src/objects/js-regexp-inl.h"
+#include "src/objects/map-updater.h"
#include "src/objects/objects-inl.h"
#include "src/objects/objects.h"
#include "src/objects/oddball-inl.h"
@@ -226,6 +227,8 @@ enum class ErrorTag : uint8_t {
kUriErrorPrototype = 'U',
// Followed by message: string.
kMessage = 'm',
+ // Followed by a JS object: cause.
+ kCause = 'c',
// Followed by stack: string.
kStack = 's',
// The end of this error information.
@@ -299,6 +302,9 @@ void ValueSerializer::WriteZigZag(T value) {
(value >> (8 * sizeof(T) - 1)));
}
+template EXPORT_TEMPLATE_DEFINE(
+ V8_EXPORT_PRIVATE) void ValueSerializer::WriteZigZag(int32_t value);
+
void ValueSerializer::WriteDouble(double value) {
// Warning: this uses host endianness.
WriteRawBytes(&value, sizeof(value));
@@ -934,6 +940,9 @@ Maybe<bool> ValueSerializer::WriteJSError(Handle<JSObject> error) {
Maybe<bool> message_found = JSReceiver::GetOwnPropertyDescriptor(
isolate_, error, isolate_->factory()->message_string(), &message_desc);
MAYBE_RETURN(message_found, Nothing<bool>());
+ PropertyDescriptor cause_desc;
+ Maybe<bool> cause_found = JSReceiver::GetOwnPropertyDescriptor(
+ isolate_, error, isolate_->factory()->cause_string(), &cause_desc);
WriteTag(SerializationTag::kError);
@@ -973,6 +982,15 @@ Maybe<bool> ValueSerializer::WriteJSError(Handle<JSObject> error) {
WriteString(message);
}
+ if (cause_found.FromJust() &&
+ PropertyDescriptor::IsDataDescriptor(&cause_desc)) {
+ Handle<Object> cause = cause_desc.value();
+ WriteVarint(static_cast<uint8_t>(ErrorTag::kCause));
+ if (!WriteObject(cause).FromMaybe(false)) {
+ return Nothing<bool>();
+ }
+ }
+
if (!Object::GetProperty(isolate_, error, isolate_->factory()->stack_string())
.ToHandle(&stack)) {
return Nothing<bool>();
@@ -1200,6 +1218,9 @@ Maybe<T> ValueDeserializer::ReadZigZag() {
-static_cast<T>(unsigned_value & 1)));
}
+template EXPORT_TEMPLATE_DEFINE(
+ V8_EXPORT_PRIVATE) Maybe<int32_t> ValueDeserializer::ReadZigZag();
+
Maybe<double> ValueDeserializer::ReadDouble() {
// Warning: this uses host endianness.
if (sizeof(double) > static_cast<unsigned>(end_ - position_))
@@ -1527,7 +1548,7 @@ MaybeHandle<JSArray> ValueDeserializer::ReadSparseJSArray() {
HandleScope scope(isolate_);
Handle<JSArray> array =
isolate_->factory()->NewJSArray(0, TERMINAL_FAST_ELEMENTS_KIND);
- JSArray::SetLength(array, length);
+ MAYBE_RETURN(JSArray::SetLength(array, length), MaybeHandle<JSArray>());
AddObjectWithID(id, array);
uint32_t num_properties;
@@ -1874,6 +1895,7 @@ MaybeHandle<JSArrayBufferView> ValueDeserializer::ReadJSArrayBufferView(
MaybeHandle<Object> ValueDeserializer::ReadJSError() {
Handle<Object> message = isolate_->factory()->undefined_value();
+ Handle<Object> options = isolate_->factory()->undefined_value();
Handle<Object> stack = isolate_->factory()->undefined_value();
Handle<Object> no_caller;
auto constructor = isolate_->error_function();
@@ -1911,6 +1933,20 @@ MaybeHandle<Object> ValueDeserializer::ReadJSError() {
message = message_string;
break;
}
+ case ErrorTag::kCause: {
+ Handle<Object> cause;
+ if (!ReadObject().ToHandle(&cause)) {
+ return MaybeHandle<JSObject>();
+ }
+ options = isolate_->factory()->NewJSObject(isolate_->object_function());
+ if (JSObject::DefinePropertyOrElementIgnoreAttributes(
+ Handle<JSObject>::cast(options),
+ isolate_->factory()->cause_string(), cause, DONT_ENUM)
+ .is_null()) {
+ return MaybeHandle<JSObject>();
+ }
+ break;
+ }
case ErrorTag::kStack: {
Handle<String> stack_string;
if (!ReadString().ToHandle(&stack_string)) {
@@ -1929,7 +1965,7 @@ MaybeHandle<Object> ValueDeserializer::ReadJSError() {
Handle<Object> error;
if (!ErrorUtils::Construct(isolate_, constructor, constructor, message,
- SKIP_NONE, no_caller,
+ options, SKIP_NONE, no_caller,
ErrorUtils::StackTraceCollection::kNone)
.ToHandle(&error)) {
return MaybeHandle<Object>();
@@ -2101,9 +2137,9 @@ Maybe<uint32_t> ValueDeserializer::ReadJSObjectProperties(
.NowContains(value)) {
Handle<FieldType> value_type =
value->OptimalType(isolate_, expected_representation);
- Map::GeneralizeField(isolate_, target, descriptor,
- details.constness(), expected_representation,
- value_type);
+ MapUpdater::GeneralizeField(isolate_, target, descriptor,
+ details.constness(),
+ expected_representation, value_type);
}
DCHECK(target->instance_descriptors(isolate_)
.GetFieldType(descriptor)
@@ -2285,7 +2321,7 @@ ValueDeserializer::ReadObjectUsingEntireBufferForLegacyFormat() {
Handle<JSArray> js_array =
isolate_->factory()->NewJSArray(0, TERMINAL_FAST_ELEMENTS_KIND);
- JSArray::SetLength(js_array, length);
+ MAYBE_RETURN_NULL(JSArray::SetLength(js_array, length));
size_t begin_properties =
stack.size() - 2 * static_cast<size_t>(num_properties);
if (num_properties &&
diff --git a/deps/v8/src/objects/visitors.h b/deps/v8/src/objects/visitors.h
index 1111bf2512..947db3fa51 100644
--- a/deps/v8/src/objects/visitors.h
+++ b/deps/v8/src/objects/visitors.h
@@ -39,6 +39,8 @@ class CodeDataContainer;
V(kReadOnlyObjectCache, "(Read-only object cache)") \
V(kWeakCollections, "(Weak collections)") \
V(kWrapperTracing, "(Wrapper tracing)") \
+ V(kWriteBarrier, "(Write barrier)") \
+ V(kRetainMaps, "(Retain maps)") \
V(kUnknown, "(Unknown)")
class VisitorSynchronization : public AllStatic {
@@ -162,6 +164,9 @@ class ObjectVisitor {
// Visits the relocation info using the given iterator.
virtual void VisitRelocInfo(RelocIterator* it);
+
+ // Visits the object's map pointer, decoding as necessary
+ virtual void VisitMapPointer(HeapObject host) { UNREACHABLE(); }
};
} // namespace internal
diff --git a/deps/v8/src/parsing/literal-buffer.cc b/deps/v8/src/parsing/literal-buffer.cc
index 42a41cb15d..a3e665a5c3 100644
--- a/deps/v8/src/parsing/literal-buffer.cc
+++ b/deps/v8/src/parsing/literal-buffer.cc
@@ -12,8 +12,8 @@
namespace v8 {
namespace internal {
-template <typename LocalIsolate>
-Handle<String> LiteralBuffer::Internalize(LocalIsolate* isolate) const {
+template <typename IsolateT>
+Handle<String> LiteralBuffer::Internalize(IsolateT* isolate) const {
if (is_one_byte()) {
return isolate->factory()->InternalizeString(one_byte_literal());
}
diff --git a/deps/v8/src/parsing/literal-buffer.h b/deps/v8/src/parsing/literal-buffer.h
index 60c70a5b46..3a3457082c 100644
--- a/deps/v8/src/parsing/literal-buffer.h
+++ b/deps/v8/src/parsing/literal-buffer.h
@@ -66,8 +66,8 @@ class LiteralBuffer final {
is_one_byte_ = true;
}
- template <typename LocalIsolate>
- Handle<String> Internalize(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ Handle<String> Internalize(IsolateT* isolate) const;
private:
static const int kInitialCapacity = 16;
diff --git a/deps/v8/src/parsing/parse-info.cc b/deps/v8/src/parsing/parse-info.cc
index 69d18ef2b2..6f469383a3 100644
--- a/deps/v8/src/parsing/parse-info.cc
+++ b/deps/v8/src/parsing/parse-info.cc
@@ -234,9 +234,9 @@ ParseInfo::~ParseInfo() = default;
DeclarationScope* ParseInfo::scope() const { return literal()->scope(); }
-template <typename LocalIsolate>
+template <typename IsolateT>
Handle<Script> ParseInfo::CreateScript(
- LocalIsolate* isolate, Handle<String> source,
+ IsolateT* isolate, Handle<String> source,
MaybeHandle<FixedArray> maybe_wrapped_arguments,
ScriptOriginOptions origin_options, NativesFlag natives) {
// Create a script object describing the script to be compiled.
diff --git a/deps/v8/src/parsing/parse-info.h b/deps/v8/src/parsing/parse-info.h
index 2068847efb..d203ebed85 100644
--- a/deps/v8/src/parsing/parse-info.h
+++ b/deps/v8/src/parsing/parse-info.h
@@ -212,9 +212,9 @@ class V8_EXPORT_PRIVATE ParseInfo {
~ParseInfo();
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- Handle<Script> CreateScript(LocalIsolate* isolate, Handle<String> source,
+ Handle<Script> CreateScript(IsolateT* isolate, Handle<String> source,
MaybeHandle<FixedArray> maybe_wrapped_arguments,
ScriptOriginOptions origin_options,
NativesFlag natives = NOT_NATIVES_CODE);
diff --git a/deps/v8/src/parsing/parser-base.h b/deps/v8/src/parsing/parser-base.h
index db0966803b..d30c3f1b1f 100644
--- a/deps/v8/src/parsing/parser-base.h
+++ b/deps/v8/src/parsing/parser-base.h
@@ -1060,14 +1060,14 @@ class ParserBase {
bool is_resumable() const {
return IsResumableFunction(function_state_->kind());
}
- bool is_class_static_block() const {
- return function_state_->kind() ==
- FunctionKind::kClassStaticInitializerFunction;
- }
bool is_await_allowed() const {
return is_async_function() || (flags().allow_harmony_top_level_await() &&
IsModule(function_state_->kind()));
}
+ bool is_await_as_identifier_disallowed() {
+ return flags().is_module() ||
+ IsAwaitAsIdentifierDisallowed(function_state_->kind());
+ }
const PendingCompilationErrorHandler* pending_error_handler() const {
return pending_error_handler_;
}
@@ -1652,8 +1652,7 @@ ParserBase<Impl>::ParseAndClassifyIdentifier(Token::Value next) {
}
if (!Token::IsValidIdentifier(next, language_mode(), is_generator(),
- flags().is_module() || is_async_function() ||
- is_class_static_block())) {
+ is_await_as_identifier_disallowed())) {
ReportUnexpectedToken(next);
return impl()->EmptyIdentifierString();
}
@@ -1677,7 +1676,8 @@ typename ParserBase<Impl>::IdentifierT ParserBase<Impl>::ParseIdentifier(
if (!Token::IsValidIdentifier(
next, language_mode(), IsGeneratorFunction(function_kind),
- flags().is_module() || IsAsyncFunction(function_kind))) {
+ flags().is_module() ||
+ IsAwaitAsIdentifierDisallowed(function_kind))) {
ReportUnexpectedToken(next);
return impl()->EmptyIdentifierString();
}
@@ -2570,9 +2570,8 @@ ParserBase<Impl>::ParseObjectPropertyDefinition(ParsePropertyInfo* prop_info,
// IdentifierReference Initializer?
DCHECK_EQ(function_flags, ParseFunctionFlag::kIsNormal);
- if (!Token::IsValidIdentifier(
- name_token, language_mode(), is_generator(),
- flags().is_module() || is_async_function())) {
+ if (!Token::IsValidIdentifier(name_token, language_mode(), is_generator(),
+ is_await_as_identifier_disallowed())) {
ReportUnexpectedToken(Next());
return impl()->NullLiteralProperty();
}
@@ -4427,6 +4426,12 @@ bool ParserBase<Impl>::IsNextLetKeyword() {
case Token::ASYNC:
return true;
case Token::FUTURE_STRICT_RESERVED_WORD:
+ case Token::ESCAPED_STRICT_RESERVED_WORD:
+ // The early error rule for future reserved keywords
+ // (ES#sec-identifiers-static-semantics-early-errors) uses the static
+ // semantics StringValue of IdentifierName, which normalizes escape
+ // sequences. So, both escaped and unescaped future reserved keywords are
+ // allowed as identifiers in sloppy mode.
return is_sloppy(language_mode());
default:
return false;
@@ -4437,12 +4442,11 @@ template <typename Impl>
typename ParserBase<Impl>::ExpressionT
ParserBase<Impl>::ParseArrowFunctionLiteral(
const FormalParametersT& formal_parameters) {
- const RuntimeCallCounterId counters[2] = {
- RuntimeCallCounterId::kParseArrowFunctionLiteral,
- RuntimeCallCounterId::kPreParseArrowFunctionLiteral};
- RuntimeCallTimerScope runtime_timer(runtime_call_stats_,
- counters[Impl::IsPreParser()],
- RuntimeCallStats::kThreadSpecific);
+ RCS_SCOPE(runtime_call_stats_,
+ Impl::IsPreParser()
+ ? RuntimeCallCounterId::kPreParseArrowFunctionLiteral
+ : RuntimeCallCounterId::kParseArrowFunctionLiteral,
+ RuntimeCallStats::kThreadSpecific);
base::ElapsedTimer timer;
if (V8_UNLIKELY(FLAG_log_function_events)) timer.Start();
@@ -4631,7 +4635,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseClassLiteral(
ClassInfo class_info(this);
class_info.is_anonymous = is_anonymous;
- scope()->set_start_position(end_position());
+ scope()->set_start_position(class_token_pos);
if (Check(Token::EXTENDS)) {
ClassScope::HeritageParsingScope heritage(class_scope);
FuncNameInferrerState fni_state(&fni_);
@@ -5553,6 +5557,14 @@ typename ParserBase<Impl>::StatementT ParserBase<Impl>::ParseReturnStatement() {
case MODULE_SCOPE:
impl()->ReportMessageAt(loc, MessageTemplate::kIllegalReturn);
return impl()->NullStatement();
+ case BLOCK_SCOPE:
+ // Class static blocks disallow return. They are their own var scopes and
+ // have a varblock scope.
+ if (function_state_->kind() == kClassStaticInitializerFunction) {
+ impl()->ReportMessageAt(loc, MessageTemplate::kIllegalReturn);
+ return impl()->NullStatement();
+ }
+ break;
default:
break;
}
@@ -5987,7 +5999,8 @@ typename ParserBase<Impl>::StatementT ParserBase<Impl>::ParseForStatement(
expression = ParseExpressionCoverGrammar();
// `for (async of` is disallowed but `for (async.x of` is allowed, so
// check if the token is ASYNC after parsing the expression.
- bool expression_is_async = scanner()->current_token() == Token::ASYNC;
+ bool expression_is_async = scanner()->current_token() == Token::ASYNC &&
+ !scanner()->literal_contains_escapes();
// Initializer is reference followed by in/of.
lhs_end_pos = end_position();
is_for_each = CheckInOrOf(&for_info.mode);
diff --git a/deps/v8/src/parsing/parser.cc b/deps/v8/src/parsing/parser.cc
index 92e11f6b9c..0671fc5f6b 100644
--- a/deps/v8/src/parsing/parser.cc
+++ b/deps/v8/src/parsing/parser.cc
@@ -522,10 +522,9 @@ void Parser::ParseProgram(Isolate* isolate, Handle<Script> script,
// It's OK to use the Isolate & counters here, since this function is only
// called in the main thread.
DCHECK(parsing_on_main_thread_);
- RuntimeCallTimerScope runtime_timer(
- runtime_call_stats_, flags().is_eval()
- ? RuntimeCallCounterId::kParseEval
- : RuntimeCallCounterId::kParseProgram);
+ RCS_SCOPE(runtime_call_stats_, flags().is_eval()
+ ? RuntimeCallCounterId::kParseEval
+ : RuntimeCallCounterId::kParseProgram);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.ParseProgram");
base::ElapsedTimer timer;
if (V8_UNLIKELY(FLAG_log_function_events)) timer.Start();
@@ -704,9 +703,8 @@ void Parser::PostProcessParseResult(Isolate* isolate, ParseInfo* info,
if (isolate) info->ast_value_factory()->Internalize(isolate);
{
- RuntimeCallTimerScope runtimeTimer(info->runtime_call_stats(),
- RuntimeCallCounterId::kCompileAnalyse,
- RuntimeCallStats::kThreadSpecific);
+ RCS_SCOPE(info->runtime_call_stats(), RuntimeCallCounterId::kCompileAnalyse,
+ RuntimeCallStats::kThreadSpecific);
if (!Rewriter::Rewrite(info) || !DeclarationScope::Analyze(info)) {
// Null out the literal to indicate that something failed.
info->set_literal(nullptr);
@@ -819,8 +817,7 @@ void Parser::ParseFunction(Isolate* isolate, ParseInfo* info,
// It's OK to use the Isolate & counters here, since this function is only
// called in the main thread.
DCHECK(parsing_on_main_thread_);
- RuntimeCallTimerScope runtime_timer(runtime_call_stats_,
- RuntimeCallCounterId::kParseFunction);
+ RCS_SCOPE(runtime_call_stats_, RuntimeCallCounterId::kParseFunction);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.ParseFunction");
base::ElapsedTimer timer;
if (V8_UNLIKELY(FLAG_log_function_events)) timer.Start();
@@ -833,14 +830,23 @@ void Parser::ParseFunction(Isolate* isolate, ParseInfo* info,
Scope::DeserializationMode::kIncludingVariables);
DCHECK_EQ(factory()->zone(), info->zone());
+ Handle<Script> script = handle(Script::cast(shared_info->script()), isolate);
if (shared_info->is_wrapped()) {
- maybe_wrapped_arguments_ = handle(
- Script::cast(shared_info->script()).wrapped_arguments(), isolate);
+ maybe_wrapped_arguments_ = handle(script->wrapped_arguments(), isolate);
}
int start_position = shared_info->StartPosition();
int end_position = shared_info->EndPosition();
int function_literal_id = shared_info->function_literal_id();
+ if V8_UNLIKELY (script->type() == Script::TYPE_WEB_SNAPSHOT) {
+ // Function literal IDs for inner functions haven't been allocated when
+ // deserializing. Put the inner function SFIs to the end of the list;
+ // they'll be deduplicated later (if the corresponding SFIs exist already)
+ // in Script::FindSharedFunctionInfo. (-1 here because function_literal_id
+ // is the parent's id. The inner function will get ids starting from
+ // function_literal_id + 1.)
+ function_literal_id = script->shared_function_info_count() - 1;
+ }
// Initialize parser state.
Handle<String> name(shared_info->Name(), isolate);
@@ -865,9 +871,10 @@ void Parser::ParseFunction(Isolate* isolate, ParseInfo* info,
if (result != nullptr) {
Handle<String> inferred_name(shared_info->inferred_name(), isolate);
result->set_inferred_name(inferred_name);
+ // Fix the function_literal_id in case we changed it earlier.
+ result->set_function_literal_id(shared_info->function_literal_id());
}
PostProcessParseResult(isolate, info, result);
-
if (V8_UNLIKELY(FLAG_log_function_events) && result != nullptr) {
double ms = timer.Elapsed().InMillisecondsF();
// We should already be internalized by now, so the debug name will be
@@ -971,6 +978,10 @@ FunctionLiteral* Parser::DoParseFunction(Isolate* isolate, ParseInfo* info,
if (p->initializer() != nullptr) {
reindexer.Reindex(p->initializer());
}
+ if (reindexer.HasStackOverflow()) {
+ set_stack_overflow();
+ return nullptr;
+ }
}
ResetFunctionLiteralId();
SkipFunctionLiterals(function_literal_id - 1);
@@ -2559,9 +2570,8 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
const bool is_lazy_top_level_function = is_lazy && is_top_level;
const bool is_lazy_inner_function = is_lazy && !is_top_level;
- RuntimeCallTimerScope runtime_timer(
- runtime_call_stats_, RuntimeCallCounterId::kParseFunctionLiteral,
- RuntimeCallStats::kThreadSpecific);
+ RCS_SCOPE(runtime_call_stats_, RuntimeCallCounterId::kParseFunctionLiteral,
+ RuntimeCallStats::kThreadSpecific);
base::ElapsedTimer timer;
if (V8_UNLIKELY(FLAG_log_function_events)) timer.Start();
@@ -2652,14 +2662,14 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
reinterpret_cast<const char*>(function_name->raw_data()),
function_name->byte_length(), function_name->is_one_byte());
}
- if (V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled()) &&
- did_preparse_successfully) {
- if (runtime_call_stats_) {
- runtime_call_stats_->CorrectCurrentCounterId(
- RuntimeCallCounterId::kPreParseWithVariableResolution,
- RuntimeCallStats::kThreadSpecific);
- }
+#ifdef V8_RUNTIME_CALL_STATS
+ if (did_preparse_successfully && runtime_call_stats_ &&
+ V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled())) {
+ runtime_call_stats_->CorrectCurrentCounterId(
+ RuntimeCallCounterId::kPreParseWithVariableResolution,
+ RuntimeCallStats::kThreadSpecific);
}
+#endif // V8_RUNTIME_CALL_STATS
// Validate function name. We can do this only after parsing the function,
// since the function can declare itself strict.
@@ -3224,9 +3234,8 @@ void Parser::InsertSloppyBlockFunctionVarBindings(DeclarationScope* scope) {
// ----------------------------------------------------------------------------
// Parser support
-template <typename LocalIsolate>
-void Parser::HandleSourceURLComments(LocalIsolate* isolate,
- Handle<Script> script) {
+template <typename IsolateT>
+void Parser::HandleSourceURLComments(IsolateT* isolate, Handle<Script> script) {
Handle<String> source_url = scanner_.SourceUrl(isolate);
if (!source_url.is_null()) {
script->set_source_url(*source_url);
@@ -3264,8 +3273,7 @@ void Parser::UpdateStatistics(Isolate* isolate, Handle<Script> script) {
void Parser::ParseOnBackground(ParseInfo* info, int start_position,
int end_position, int function_literal_id) {
- RuntimeCallTimerScope runtimeTimer(
- runtime_call_stats_, RuntimeCallCounterId::kParseBackgroundProgram);
+ RCS_SCOPE(runtime_call_stats_, RuntimeCallCounterId::kParseBackgroundProgram);
parsing_on_main_thread_ = false;
DCHECK_NULL(info->literal());
diff --git a/deps/v8/src/parsing/parser.h b/deps/v8/src/parsing/parser.h
index 4ede303503..07efef277e 100644
--- a/deps/v8/src/parsing/parser.h
+++ b/deps/v8/src/parsing/parser.h
@@ -161,8 +161,8 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) {
// Move statistics to Isolate
void UpdateStatistics(Isolate* isolate, Handle<Script> script);
- template <typename LocalIsolate>
- void HandleSourceURLComments(LocalIsolate* isolate, Handle<Script> script);
+ template <typename IsolateT>
+ void HandleSourceURLComments(IsolateT* isolate, Handle<Script> script);
private:
friend class ParserBase<Parser>;
@@ -654,15 +654,6 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) {
}
}
- // A shortcut for performing a ToString operation
- V8_INLINE Expression* ToString(Expression* expr) {
- if (expr->IsStringLiteral()) return expr;
- ScopedPtrList<Expression> args(pointer_buffer());
- args.Add(expr);
- return factory()->NewCallRuntime(Runtime::kInlineToString, args,
- expr->position());
- }
-
// Returns true if we have a binary expression between two numeric
// literals. In that case, *x will be changed to an expression which is the
// computed value.
diff --git a/deps/v8/src/parsing/pending-compilation-error-handler.cc b/deps/v8/src/parsing/pending-compilation-error-handler.cc
index dccd6dba77..2ab5b3eb1a 100644
--- a/deps/v8/src/parsing/pending-compilation-error-handler.cc
+++ b/deps/v8/src/parsing/pending-compilation-error-handler.cc
@@ -31,9 +31,9 @@ void PendingCompilationErrorHandler::MessageDetails::SetString(
arg_handle_ = isolate->heap()->NewPersistentHandle(string);
}
-template <typename LocalIsolate>
+template <typename IsolateT>
void PendingCompilationErrorHandler::MessageDetails::Prepare(
- LocalIsolate* isolate) {
+ IsolateT* isolate) {
switch (type_) {
case kAstRawString:
return SetString(arg_->string(), isolate);
@@ -101,8 +101,8 @@ void PendingCompilationErrorHandler::ReportWarningAt(int start_position,
MessageDetails(start_position, end_position, message, arg));
}
-template <typename LocalIsolate>
-void PendingCompilationErrorHandler::PrepareWarnings(LocalIsolate* isolate) {
+template <typename IsolateT>
+void PendingCompilationErrorHandler::PrepareWarnings(IsolateT* isolate) {
DCHECK(!has_pending_error());
for (MessageDetails& warning : warning_messages_) {
@@ -128,9 +128,9 @@ void PendingCompilationErrorHandler::ReportWarnings(
}
}
-template <typename LocalIsolate>
+template <typename IsolateT>
void PendingCompilationErrorHandler::PrepareErrors(
- LocalIsolate* isolate, AstValueFactory* ast_value_factory) {
+ IsolateT* isolate, AstValueFactory* ast_value_factory) {
if (stack_overflow()) return;
DCHECK(has_pending_error());
diff --git a/deps/v8/src/parsing/pending-compilation-error-handler.h b/deps/v8/src/parsing/pending-compilation-error-handler.h
index 5efb5a43a4..31e765d514 100644
--- a/deps/v8/src/parsing/pending-compilation-error-handler.h
+++ b/deps/v8/src/parsing/pending-compilation-error-handler.h
@@ -53,15 +53,15 @@ class PendingCompilationErrorHandler {
bool has_pending_warnings() const { return !warning_messages_.empty(); }
// Handle errors detected during parsing.
- template <typename LocalIsolate>
+ template <typename IsolateT>
EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
- void PrepareErrors(LocalIsolate* isolate, AstValueFactory* ast_value_factory);
+ void PrepareErrors(IsolateT* isolate, AstValueFactory* ast_value_factory);
V8_EXPORT_PRIVATE void ReportErrors(Isolate* isolate,
Handle<Script> script) const;
// Handle warnings detected during compilation.
- template <typename LocalIsolate>
- void PrepareWarnings(LocalIsolate* isolate);
+ template <typename IsolateT>
+ void PrepareWarnings(IsolateT* isolate);
void ReportWarnings(Isolate* isolate, Handle<Script> script) const;
V8_EXPORT_PRIVATE Handle<String> FormatErrorMessageForTest(Isolate* isolate);
@@ -106,8 +106,8 @@ class PendingCompilationErrorHandler {
MessageLocation GetLocation(Handle<Script> script) const;
MessageTemplate message() const { return message_; }
- template <typename LocalIsolate>
- void Prepare(LocalIsolate* isolate);
+ template <typename IsolateT>
+ void Prepare(IsolateT* isolate);
private:
enum Type { kNone, kAstRawString, kConstCharString, kMainThreadHandle };
diff --git a/deps/v8/src/parsing/preparser.cc b/deps/v8/src/parsing/preparser.cc
index 2764e00a8b..4547e602ee 100644
--- a/deps/v8/src/parsing/preparser.cc
+++ b/deps/v8/src/parsing/preparser.cc
@@ -272,10 +272,9 @@ PreParser::Expression PreParser::ParseFunctionLiteral(
DCHECK_NE(FunctionSyntaxKind::kWrapped, function_syntax_kind);
// Function ::
// '(' FormalParameterList? ')' '{' FunctionBody '}'
- RuntimeCallTimerScope runtime_timer(
- runtime_call_stats_,
- RuntimeCallCounterId::kPreParseWithVariableResolution,
- RuntimeCallStats::kThreadSpecific);
+ RCS_SCOPE(runtime_call_stats_,
+ RuntimeCallCounterId::kPreParseWithVariableResolution,
+ RuntimeCallStats::kThreadSpecific);
base::ElapsedTimer timer;
if (V8_UNLIKELY(FLAG_log_function_events)) timer.Start();
diff --git a/deps/v8/src/parsing/rewriter.cc b/deps/v8/src/parsing/rewriter.cc
index dee0763280..35f82e25ab 100644
--- a/deps/v8/src/parsing/rewriter.cc
+++ b/deps/v8/src/parsing/rewriter.cc
@@ -382,10 +382,9 @@ DECLARATION_NODE_LIST(DEF_VISIT)
// Assumes code has been parsed. Mutates the AST, so the AST should not
// continue to be used in the case of failure.
bool Rewriter::Rewrite(ParseInfo* info) {
- RuntimeCallTimerScope runtimeTimer(
- info->runtime_call_stats(),
- RuntimeCallCounterId::kCompileRewriteReturnResult,
- RuntimeCallStats::kThreadSpecific);
+ RCS_SCOPE(info->runtime_call_stats(),
+ RuntimeCallCounterId::kCompileRewriteReturnResult,
+ RuntimeCallStats::kThreadSpecific);
FunctionLiteral* function = info->literal();
DCHECK_NOT_NULL(function);
diff --git a/deps/v8/src/parsing/scanner-character-streams.cc b/deps/v8/src/parsing/scanner-character-streams.cc
index 434b83676c..a5fec69e84 100644
--- a/deps/v8/src/parsing/scanner-character-streams.cc
+++ b/deps/v8/src/parsing/scanner-character-streams.cc
@@ -215,8 +215,7 @@ class ChunkedStream {
const uint8_t* data = nullptr;
size_t length;
{
- RuntimeCallTimerScope scope(stats,
- RuntimeCallCounterId::kGetMoreDataCallback);
+ RCS_SCOPE(stats, RuntimeCallCounterId::kGetMoreDataCallback);
length = source_->GetMoreData(&data);
}
ProcessChunk(data, position, length);
@@ -721,8 +720,7 @@ void Utf8ExternalStreamingStream::FillBufferFromCurrentChunk() {
}
bool Utf8ExternalStreamingStream::FetchChunk() {
- RuntimeCallTimerScope scope(runtime_call_stats(),
- RuntimeCallCounterId::kGetMoreDataCallback);
+ RCS_SCOPE(runtime_call_stats(), RuntimeCallCounterId::kGetMoreDataCallback);
DCHECK_EQ(current_.chunk_no, chunks_.size());
DCHECK(chunks_.empty() || chunks_.back().length != 0);
diff --git a/deps/v8/src/parsing/scanner.cc b/deps/v8/src/parsing/scanner.cc
index c596078762..8ee64a1696 100644
--- a/deps/v8/src/parsing/scanner.cc
+++ b/deps/v8/src/parsing/scanner.cc
@@ -586,8 +586,8 @@ Token::Value Scanner::ScanTemplateSpan() {
return result;
}
-template <typename LocalIsolate>
-Handle<String> Scanner::SourceUrl(LocalIsolate* isolate) const {
+template <typename IsolateT>
+Handle<String> Scanner::SourceUrl(IsolateT* isolate) const {
Handle<String> tmp;
if (source_url_.length() > 0) {
tmp = source_url_.Internalize(isolate);
@@ -598,8 +598,8 @@ Handle<String> Scanner::SourceUrl(LocalIsolate* isolate) const {
template Handle<String> Scanner::SourceUrl(Isolate* isolate) const;
template Handle<String> Scanner::SourceUrl(LocalIsolate* isolate) const;
-template <typename LocalIsolate>
-Handle<String> Scanner::SourceMappingUrl(LocalIsolate* isolate) const {
+template <typename IsolateT>
+Handle<String> Scanner::SourceMappingUrl(IsolateT* isolate) const {
Handle<String> tmp;
if (source_mapping_url_.length() > 0) {
tmp = source_mapping_url_.Internalize(isolate);
diff --git a/deps/v8/src/parsing/scanner.h b/deps/v8/src/parsing/scanner.h
index 3df234ce54..d93f581366 100644
--- a/deps/v8/src/parsing/scanner.h
+++ b/deps/v8/src/parsing/scanner.h
@@ -407,10 +407,10 @@ class V8_EXPORT_PRIVATE Scanner {
return ScanTemplateSpan();
}
- template <typename LocalIsolate>
- Handle<String> SourceUrl(LocalIsolate* isolate) const;
- template <typename LocalIsolate>
- Handle<String> SourceMappingUrl(LocalIsolate* isolate) const;
+ template <typename IsolateT>
+ Handle<String> SourceUrl(IsolateT* isolate) const;
+ template <typename IsolateT>
+ Handle<String> SourceMappingUrl(IsolateT* isolate) const;
bool FoundHtmlComment() const { return found_html_comment_; }
diff --git a/deps/v8/src/profiler/cpu-profiler.cc b/deps/v8/src/profiler/cpu-profiler.cc
index eba513b39d..ba9022be1b 100644
--- a/deps/v8/src/profiler/cpu-profiler.cc
+++ b/deps/v8/src/profiler/cpu-profiler.cc
@@ -104,10 +104,11 @@ ProfilingScope::~ProfilingScope() {
ProfilerEventsProcessor::ProfilerEventsProcessor(
Isolate* isolate, Symbolizer* symbolizer,
- ProfilerCodeObserver* code_observer)
+ ProfilerCodeObserver* code_observer, CpuProfilesCollection* profiles)
: Thread(Thread::Options("v8:ProfEvntProc", kProfilerStackSize)),
symbolizer_(symbolizer),
code_observer_(code_observer),
+ profiles_(profiles),
last_code_event_id_(0),
last_processed_code_event_id_(0),
isolate_(isolate) {
@@ -119,9 +120,8 @@ SamplingEventsProcessor::SamplingEventsProcessor(
Isolate* isolate, Symbolizer* symbolizer,
ProfilerCodeObserver* code_observer, CpuProfilesCollection* profiles,
base::TimeDelta period, bool use_precise_sampling)
- : ProfilerEventsProcessor(isolate, symbolizer, code_observer),
+ : ProfilerEventsProcessor(isolate, symbolizer, code_observer, profiles),
sampler_(new CpuSampler(isolate, this)),
- profiles_(profiles),
period_(period),
use_precise_sampling_(use_precise_sampling) {
sampler_->Start();
@@ -188,7 +188,14 @@ void ProfilerEventsProcessor::StopSynchronously() {
bool ProfilerEventsProcessor::ProcessCodeEvent() {
CodeEventsContainer record;
if (events_buffer_.Dequeue(&record)) {
- code_observer_->CodeEventHandlerInternal(record);
+ if (record.generic.type == CodeEventRecord::NATIVE_CONTEXT_MOVE) {
+ NativeContextMoveEventRecord& nc_record =
+ record.NativeContextMoveEventRecord_;
+ profiles_->UpdateNativeContextAddressForCurrentProfiles(
+ nc_record.from_address, nc_record.to_address);
+ } else {
+ code_observer_->CodeEventHandlerInternal(record);
+ }
last_processed_code_event_id_ = record.generic.order;
return true;
}
@@ -202,6 +209,7 @@ void ProfilerEventsProcessor::CodeEventHandler(
case CodeEventRecord::CODE_MOVE:
case CodeEventRecord::CODE_DISABLE_OPT:
case CodeEventRecord::CODE_DELETE:
+ case CodeEventRecord::NATIVE_CONTEXT_MOVE:
Enqueue(evt_rec);
break;
case CodeEventRecord::CODE_DEOPT: {
@@ -224,7 +232,8 @@ void SamplingEventsProcessor::SymbolizeAndAddToProfiles(
symbolizer_->SymbolizeTickSample(record->sample);
profiles_->AddPathToCurrentProfiles(
record->sample.timestamp, symbolized.stack_trace, symbolized.src_line,
- record->sample.update_stats, record->sample.sampling_interval);
+ record->sample.update_stats, record->sample.sampling_interval,
+ reinterpret_cast<Address>(record->sample.context));
}
ProfilerEventsProcessor::SampleProcessingResult
@@ -371,6 +380,7 @@ void ProfilerCodeObserver::CodeEventHandlerInternal(
}
void ProfilerCodeObserver::CreateEntriesForRuntimeCallStats() {
+#ifdef V8_RUNTIME_CALL_STATS
RuntimeCallStats* rcs = isolate_->counters()->runtime_call_stats();
for (int i = 0; i < RuntimeCallStats::kNumberOfCounters; ++i) {
RuntimeCallCounter* counter = rcs->GetCounter(i);
@@ -379,6 +389,7 @@ void ProfilerCodeObserver::CreateEntriesForRuntimeCallStats() {
"native V8Runtime");
code_map_.AddCode(reinterpret_cast<Address>(counter), entry, 1);
}
+#endif // V8_RUNTIME_CALL_STATS
}
void ProfilerCodeObserver::LogBuiltins() {
diff --git a/deps/v8/src/profiler/cpu-profiler.h b/deps/v8/src/profiler/cpu-profiler.h
index d605a8c3d3..ced37e4ade 100644
--- a/deps/v8/src/profiler/cpu-profiler.h
+++ b/deps/v8/src/profiler/cpu-profiler.h
@@ -37,10 +37,14 @@ class Symbolizer;
V(REPORT_BUILTIN, ReportBuiltinEventRecord) \
V(CODE_DELETE, CodeDeleteEventRecord)
+#define VM_EVENTS_TYPE_LIST(V) \
+ CODE_EVENTS_TYPE_LIST(V) \
+ V(NATIVE_CONTEXT_MOVE, NativeContextMoveEventRecord)
+
class CodeEventRecord {
public:
#define DECLARE_TYPE(type, ignore) type,
- enum Type { NONE = 0, CODE_EVENTS_TYPE_LIST(DECLARE_TYPE) };
+ enum Type { NONE = 0, VM_EVENTS_TYPE_LIST(DECLARE_TYPE) };
#undef DECLARE_TYPE
Type type;
@@ -99,6 +103,13 @@ class ReportBuiltinEventRecord : public CodeEventRecord {
V8_INLINE void UpdateCodeMap(CodeMap* code_map);
};
+// Signals that a native context's address has changed.
+class NativeContextMoveEventRecord : public CodeEventRecord {
+ public:
+ Address from_address;
+ Address to_address;
+};
+
// A record type for sending samples from the main thread/signal handler to the
// profiling thread.
class TickSampleEventRecord {
@@ -130,7 +141,7 @@ class CodeEventsContainer {
union {
CodeEventRecord generic;
#define DECLARE_CLASS(ignore, type) type type##_;
- CODE_EVENTS_TYPE_LIST(DECLARE_CLASS)
+ VM_EVENTS_TYPE_LIST(DECLARE_CLASS)
#undef DECLARE_CLASS
};
};
@@ -174,7 +185,8 @@ class V8_EXPORT_PRIVATE ProfilerEventsProcessor : public base::Thread,
protected:
ProfilerEventsProcessor(Isolate* isolate, Symbolizer* symbolizer,
- ProfilerCodeObserver* code_observer);
+ ProfilerCodeObserver* code_observer,
+ CpuProfilesCollection* profiles);
// Called from events processing thread (Run() method.)
bool ProcessCodeEvent();
@@ -188,6 +200,7 @@ class V8_EXPORT_PRIVATE ProfilerEventsProcessor : public base::Thread,
Symbolizer* symbolizer_;
ProfilerCodeObserver* code_observer_;
+ CpuProfilesCollection* profiles_;
std::atomic_bool running_{true};
base::ConditionVariable running_cond_;
base::Mutex running_mutex_;
@@ -238,7 +251,6 @@ class V8_EXPORT_PRIVATE SamplingEventsProcessor
SamplingCircularQueue<TickSampleEventRecord,
kTickSampleQueueLength> ticks_buffer_;
std::unique_ptr<sampler::Sampler> sampler_;
- CpuProfilesCollection* profiles_;
base::TimeDelta period_; // Samples & code events processing period.
const bool use_precise_sampling_; // Whether or not busy-waiting is used for
// low sampling intervals on Windows.
diff --git a/deps/v8/src/profiler/heap-profiler.cc b/deps/v8/src/profiler/heap-profiler.cc
index 8a7ed34d46..dbe48876d2 100644
--- a/deps/v8/src/profiler/heap-profiler.cc
+++ b/deps/v8/src/profiler/heap-profiler.cc
@@ -81,9 +81,10 @@ v8::EmbedderGraph::Node::Detachedness HeapProfiler::GetDetachedness(
HeapSnapshot* HeapProfiler::TakeSnapshot(
v8::ActivityControl* control,
v8::HeapProfiler::ObjectNameResolver* resolver,
- bool treat_global_objects_as_roots) {
+ bool treat_global_objects_as_roots, bool capture_numeric_value) {
is_taking_snapshot_ = true;
- HeapSnapshot* result = new HeapSnapshot(this, treat_global_objects_as_roots);
+ HeapSnapshot* result = new HeapSnapshot(this, treat_global_objects_as_roots,
+ capture_numeric_value);
{
HeapSnapshotGenerator generator(result, control, resolver, heap());
if (!generator.GenerateSnapshot()) {
diff --git a/deps/v8/src/profiler/heap-profiler.h b/deps/v8/src/profiler/heap-profiler.h
index ebf737523c..fc867e6632 100644
--- a/deps/v8/src/profiler/heap-profiler.h
+++ b/deps/v8/src/profiler/heap-profiler.h
@@ -33,7 +33,8 @@ class HeapProfiler : public HeapObjectAllocationTracker {
HeapSnapshot* TakeSnapshot(v8::ActivityControl* control,
v8::HeapProfiler::ObjectNameResolver* resolver,
- bool treat_global_objects_as_roots);
+ bool treat_global_objects_as_roots,
+ bool capture_numeric_value);
bool StartSamplingHeapProfiler(uint64_t sample_interval, int stack_depth,
v8::HeapProfiler::SamplingFlags);
diff --git a/deps/v8/src/profiler/heap-snapshot-generator.cc b/deps/v8/src/profiler/heap-snapshot-generator.cc
index 9cc26fa3e2..da4e57fad9 100644
--- a/deps/v8/src/profiler/heap-snapshot-generator.cc
+++ b/deps/v8/src/profiler/heap-snapshot-generator.cc
@@ -183,9 +183,11 @@ const char* HeapEntry::TypeAsString() const {
}
}
-HeapSnapshot::HeapSnapshot(HeapProfiler* profiler, bool global_objects_as_roots)
+HeapSnapshot::HeapSnapshot(HeapProfiler* profiler, bool global_objects_as_roots,
+ bool capture_numeric_value)
: profiler_(profiler),
- treat_global_objects_as_roots_(global_objects_as_roots) {
+ treat_global_objects_as_roots_(global_objects_as_roots),
+ capture_numeric_value_(capture_numeric_value) {
// It is very important to keep objects that form a heap snapshot
// as small as possible. Check assumptions about data structure sizes.
STATIC_ASSERT(kSystemPointerSize != 4 || sizeof(HeapGraphEdge) == 12);
@@ -387,8 +389,7 @@ SnapshotObjectId HeapObjectsMap::FindOrAddEntry(Address addr,
return entry_info.id;
}
entry->value = reinterpret_cast<void*>(entries_.size());
- SnapshotObjectId id = next_id_;
- next_id_ += kObjectIdStep;
+ SnapshotObjectId id = get_next_id();
entries_.push_back(EntryInfo(id, addr, size, accessed));
DCHECK(static_cast<uint32_t>(entries_.size()) > entries_map_.occupancy());
return id;
@@ -553,6 +554,16 @@ HeapEntry* V8HeapExplorer::AllocateEntry(HeapThing ptr) {
return AddEntry(HeapObject::cast(Object(reinterpret_cast<Address>(ptr))));
}
+HeapEntry* V8HeapExplorer::AllocateEntry(Smi smi) {
+ SnapshotObjectId id = heap_object_map_->get_next_id();
+ HeapEntry* entry =
+ snapshot_->AddEntry(HeapEntry::kHeapNumber, "smi number", id, 0, 0);
+ // XXX: Smis do not appear in CombinedHeapObjectIterator, so we need to
+ // extract the references here
+ ExtractNumberReference(entry, smi);
+ return entry;
+}
+
void V8HeapExplorer::ExtractLocation(HeapEntry* entry, HeapObject object) {
if (object.IsJSFunction()) {
JSFunction func = JSFunction::cast(object);
@@ -638,7 +649,7 @@ HeapEntry* V8HeapExplorer::AddEntry(HeapObject object) {
object.IsByteArray()) {
return AddEntry(object, HeapEntry::kArray, "");
} else if (object.IsHeapNumber()) {
- return AddEntry(object, HeapEntry::kHeapNumber, "number");
+ return AddEntry(object, HeapEntry::kHeapNumber, "heap number");
}
return AddEntry(object, HeapEntry::kHidden, GetSystemEntryName(object));
}
@@ -721,6 +732,13 @@ class IndexedReferencesExtractor : public ObjectVisitor {
ObjectSlot end) override {
VisitPointers(host, MaybeObjectSlot(start), MaybeObjectSlot(end));
}
+ void VisitMapPointer(HeapObject object) override {
+ if (generator_->visited_fields_[0]) {
+ generator_->visited_fields_[0] = false;
+ } else {
+ VisitHeapObjectImpl(object.map(), 0);
+ }
+ }
void VisitPointers(HeapObject host, MaybeObjectSlot start,
MaybeObjectSlot end) override {
// [start,end) must be a sub-region of [parent_start_, parent_end), i.e.
@@ -830,6 +848,10 @@ void V8HeapExplorer::ExtractReferences(HeapEntry* entry, HeapObject obj) {
ExtractEphemeronHashTableReferences(entry, EphemeronHashTable::cast(obj));
} else if (obj.IsFixedArray()) {
ExtractFixedArrayReferences(entry, FixedArray::cast(obj));
+ } else if (obj.IsHeapNumber()) {
+ if (snapshot_->capture_numeric_value()) {
+ ExtractNumberReference(entry, obj);
+ }
}
}
@@ -867,7 +889,7 @@ void V8HeapExplorer::ExtractJSObjectReferences(HeapEntry* entry,
} else if (obj.IsJSFunction()) {
JSFunction js_fun = JSFunction::cast(js_obj);
if (js_fun.has_prototype_slot()) {
- Object proto_or_map = js_fun.prototype_or_initial_map();
+ Object proto_or_map = js_fun.prototype_or_initial_map(kAcquireLoad);
if (!proto_or_map.IsTheHole(isolate)) {
if (!proto_or_map.IsMap()) {
SetPropertyReference(entry, roots.prototype_string(), proto_or_map,
@@ -1246,6 +1268,11 @@ class JSArrayBufferDataEntryAllocator : public HeapEntriesAllocator {
HeapEntry::kNative, "system / JSArrayBufferData",
size_);
}
+ HeapEntry* AllocateEntry(Smi smi) override {
+ DCHECK(false);
+ return nullptr;
+ }
+
private:
size_t size_;
V8HeapExplorer* explorer_;
@@ -1291,6 +1318,30 @@ void V8HeapExplorer::ExtractFixedArrayReferences(HeapEntry* entry,
}
}
+void V8HeapExplorer::ExtractNumberReference(HeapEntry* entry, Object number) {
+ DCHECK(number.IsNumber());
+
+ // Must be large enough to fit any double, int, or size_t.
+ char arr[32];
+ Vector<char> buffer(arr, arraysize(arr));
+
+ const char* string;
+ if (number.IsSmi()) {
+ int int_value = Smi::ToInt(number);
+ string = IntToCString(int_value, buffer);
+ } else {
+ double double_value = HeapNumber::cast(number).value();
+ string = DoubleToCString(double_value, buffer);
+ }
+
+ const char* name = names_->GetCopy(string);
+
+ SnapshotObjectId id = heap_object_map_->get_next_id();
+ HeapEntry* child_entry =
+ snapshot_->AddEntry(HeapEntry::kString, name, id, 0, 0);
+ entry->SetNamedReference(HeapGraphEdge::kInternal, "value", child_entry);
+}
+
void V8HeapExplorer::ExtractFeedbackVectorReferences(
HeapEntry* entry, FeedbackVector feedback_vector) {
MaybeObject code = feedback_vector.maybe_optimized_code();
@@ -1345,8 +1396,10 @@ void V8HeapExplorer::ExtractPropertyReferences(JSObject js_obj,
PropertyDetails details = descs.GetDetails(i);
switch (details.location()) {
case kField: {
- Representation r = details.representation();
- if (r.IsSmi() || r.IsDouble()) break;
+ if (!snapshot_->capture_numeric_value()) {
+ Representation r = details.representation();
+ if (r.IsSmi() || r.IsDouble()) break;
+ }
Name k = descs.GetKey(i);
FieldIndex field_index = FieldIndex::ForDescriptor(js_obj.map(), i);
@@ -1476,9 +1529,15 @@ String V8HeapExplorer::GetConstructorName(JSObject object) {
}
HeapEntry* V8HeapExplorer::GetEntry(Object obj) {
- return obj.IsHeapObject() ? generator_->FindOrAddEntry(
- reinterpret_cast<void*>(obj.ptr()), this)
- : nullptr;
+ if (obj.IsHeapObject()) {
+ return generator_->FindOrAddEntry(reinterpret_cast<void*>(obj.ptr()), this);
+ }
+
+ DCHECK(obj.IsSmi());
+ if (!snapshot_->capture_numeric_value()) {
+ return nullptr;
+ }
+ return generator_->FindOrAddEntry(Smi::cast(obj), this);
}
class RootsReferencesExtractor : public RootVisitor {
@@ -1500,6 +1559,7 @@ class RootsReferencesExtractor : public RootVisitor {
void VisitRootPointers(Root root, const char* description,
FullObjectSlot start, FullObjectSlot end) override {
for (FullObjectSlot p = start; p < end; ++p) {
+ DCHECK(!MapWord::IsPacked(p.Relaxed_Load().ptr()));
VisitRootPointer(root, description, p);
}
}
@@ -1649,23 +1709,25 @@ void V8HeapExplorer::SetElementReference(HeapEntry* parent_entry, int index,
void V8HeapExplorer::SetInternalReference(HeapEntry* parent_entry,
const char* reference_name,
Object child_obj, int field_offset) {
- HeapEntry* child_entry = GetEntry(child_obj);
- if (child_entry == nullptr) return;
- if (IsEssentialObject(child_obj)) {
- parent_entry->SetNamedReference(HeapGraphEdge::kInternal, reference_name,
- child_entry);
+ if (!IsEssentialObject(child_obj)) {
+ return;
}
+ HeapEntry* child_entry = GetEntry(child_obj);
+ DCHECK_NOT_NULL(child_entry);
+ parent_entry->SetNamedReference(HeapGraphEdge::kInternal, reference_name,
+ child_entry);
MarkVisitedField(field_offset);
}
void V8HeapExplorer::SetInternalReference(HeapEntry* parent_entry, int index,
Object child_obj, int field_offset) {
- HeapEntry* child_entry = GetEntry(child_obj);
- if (child_entry == nullptr) return;
- if (IsEssentialObject(child_obj)) {
- parent_entry->SetNamedReference(HeapGraphEdge::kInternal,
- names_->GetName(index), child_entry);
+ if (!IsEssentialObject(child_obj)) {
+ return;
}
+ HeapEntry* child_entry = GetEntry(child_obj);
+ DCHECK_NOT_NULL(child_entry);
+ parent_entry->SetNamedReference(HeapGraphEdge::kInternal,
+ names_->GetName(index), child_entry);
MarkVisitedField(field_offset);
}
@@ -1673,9 +1735,13 @@ void V8HeapExplorer::SetHiddenReference(HeapObject parent_obj,
HeapEntry* parent_entry, int index,
Object child_obj, int field_offset) {
DCHECK_EQ(parent_entry, GetEntry(parent_obj));
+ DCHECK(!MapWord::IsPacked(child_obj.ptr()));
+ if (!IsEssentialObject(child_obj)) {
+ return;
+ }
HeapEntry* child_entry = GetEntry(child_obj);
- if (child_entry != nullptr && IsEssentialObject(child_obj) &&
- IsEssentialHiddenReference(parent_obj, field_offset)) {
+ DCHECK_NOT_NULL(child_entry);
+ if (IsEssentialHiddenReference(parent_obj, field_offset)) {
parent_entry->SetIndexedReference(HeapGraphEdge::kHidden, index,
child_entry);
}
@@ -1684,23 +1750,25 @@ void V8HeapExplorer::SetHiddenReference(HeapObject parent_obj,
void V8HeapExplorer::SetWeakReference(HeapEntry* parent_entry,
const char* reference_name,
Object child_obj, int field_offset) {
- HeapEntry* child_entry = GetEntry(child_obj);
- if (child_entry == nullptr) return;
- if (IsEssentialObject(child_obj)) {
- parent_entry->SetNamedReference(HeapGraphEdge::kWeak, reference_name,
- child_entry);
+ if (!IsEssentialObject(child_obj)) {
+ return;
}
+ HeapEntry* child_entry = GetEntry(child_obj);
+ DCHECK_NOT_NULL(child_entry);
+ parent_entry->SetNamedReference(HeapGraphEdge::kWeak, reference_name,
+ child_entry);
MarkVisitedField(field_offset);
}
void V8HeapExplorer::SetWeakReference(HeapEntry* parent_entry, int index,
Object child_obj, int field_offset) {
- HeapEntry* child_entry = GetEntry(child_obj);
- if (child_entry == nullptr) return;
- if (IsEssentialObject(child_obj)) {
- parent_entry->SetNamedReference(
- HeapGraphEdge::kWeak, names_->GetFormatted("%d", index), child_entry);
+ if (!IsEssentialObject(child_obj)) {
+ return;
}
+ HeapEntry* child_entry = GetEntry(child_obj);
+ DCHECK_NOT_NULL(child_entry);
+ parent_entry->SetNamedReference(
+ HeapGraphEdge::kWeak, names_->GetFormatted("%d", index), child_entry);
MarkVisitedField(field_offset);
}
@@ -1758,6 +1826,13 @@ void V8HeapExplorer::SetGcRootsReference(Root root) {
void V8HeapExplorer::SetGcSubrootReference(Root root, const char* description,
bool is_weak, Object child_obj) {
+ if (child_obj.IsSmi()) {
+ // TODO(arenevier): if we handle smis here, the snapshot gets 2 to 3 times
+ // slower on large heaps. According to perf, The bulk of the extra works
+ // happens in TemplateHashMapImpl::Probe method, when tyring to get
+ // names->GetFormatted("%d / %s", index, description)
+ return;
+ }
HeapEntry* child_entry = GetEntry(child_obj);
if (child_entry == nullptr) return;
const char* name = GetStrongGcSubrootName(child_obj);
@@ -1834,6 +1909,7 @@ class GlobalObjectsEnumerator : public RootVisitor {
void VisitRootPointersImpl(Root root, const char* description, TSlot start,
TSlot end) {
for (TSlot p = start; p < end; ++p) {
+ DCHECK(!MapWord::IsPacked(p.Relaxed_Load(isolate_).ptr()));
Object o = p.load(isolate_);
if (!o.IsNativeContext(isolate_)) continue;
JSObject proxy = Context::cast(o).global_proxy();
@@ -1934,6 +2010,7 @@ class EmbedderGraphEntriesAllocator : public HeapEntriesAllocator {
names_(snapshot_->profiler()->names()),
heap_object_map_(snapshot_->profiler()->heap_object_map()) {}
HeapEntry* AllocateEntry(HeapThing ptr) override;
+ HeapEntry* AllocateEntry(Smi smi) override;
private:
HeapSnapshot* snapshot_;
@@ -1984,6 +2061,11 @@ HeapEntry* EmbedderGraphEntriesAllocator::AllocateEntry(HeapThing ptr) {
return heap_entry;
}
+HeapEntry* EmbedderGraphEntriesAllocator::AllocateEntry(Smi smi) {
+ DCHECK(false);
+ return nullptr;
+}
+
NativeObjectsExplorer::NativeObjectsExplorer(
HeapSnapshot* snapshot, SnapshottingProgressReportingInterface* progress)
: isolate_(
diff --git a/deps/v8/src/profiler/heap-snapshot-generator.h b/deps/v8/src/profiler/heap-snapshot-generator.h
index 12fd9450a9..2ab13a99bf 100644
--- a/deps/v8/src/profiler/heap-snapshot-generator.h
+++ b/deps/v8/src/profiler/heap-snapshot-generator.h
@@ -188,7 +188,8 @@ class HeapEntry {
// HeapSnapshotGenerator fills in a HeapSnapshot.
class HeapSnapshot {
public:
- explicit HeapSnapshot(HeapProfiler* profiler, bool global_objects_as_roots);
+ explicit HeapSnapshot(HeapProfiler* profiler, bool global_objects_as_roots,
+ bool capture_numeric_value);
HeapSnapshot(const HeapSnapshot&) = delete;
HeapSnapshot& operator=(const HeapSnapshot&) = delete;
void Delete();
@@ -213,6 +214,7 @@ class HeapSnapshot {
bool treat_global_objects_as_roots() const {
return treat_global_objects_as_roots_;
}
+ bool capture_numeric_value() const { return capture_numeric_value_; }
void AddLocation(HeapEntry* entry, int scriptId, int line, int col);
HeapEntry* AddEntry(HeapEntry::Type type,
@@ -245,6 +247,7 @@ class HeapSnapshot {
std::vector<SourceLocation> locations_;
SnapshotObjectId max_snapshot_js_object_id_ = -1;
bool treat_global_objects_as_roots_;
+ bool capture_numeric_value_;
};
@@ -277,6 +280,10 @@ class HeapObjectsMap {
SnapshotObjectId last_assigned_id() const {
return next_id_ - kObjectIdStep;
}
+ SnapshotObjectId get_next_id() {
+ next_id_ += kObjectIdStep;
+ return next_id_ - kObjectIdStep;
+ }
void StopHeapObjectsTracking();
SnapshotObjectId PushHeapObjectsStats(OutputStream* stream,
@@ -322,6 +329,7 @@ class HeapEntriesAllocator {
public:
virtual ~HeapEntriesAllocator() = default;
virtual HeapEntry* AllocateEntry(HeapThing ptr) = 0;
+ virtual HeapEntry* AllocateEntry(Smi smi) = 0;
};
class SnapshottingProgressReportingInterface {
@@ -342,6 +350,7 @@ class V8_EXPORT_PRIVATE V8HeapExplorer : public HeapEntriesAllocator {
V8HeapExplorer& operator=(const V8HeapExplorer&) = delete;
HeapEntry* AllocateEntry(HeapThing ptr) override;
+ HeapEntry* AllocateEntry(Smi smi) override;
int EstimateObjectsCount();
bool IterateAndExtractReferences(HeapSnapshotGenerator* generator);
void CollectGlobalObjectsTags();
@@ -397,6 +406,7 @@ class V8_EXPORT_PRIVATE V8HeapExplorer : public HeapEntriesAllocator {
void ExtractJSGeneratorObjectReferences(HeapEntry* entry,
JSGeneratorObject generator);
void ExtractFixedArrayReferences(HeapEntry* entry, FixedArray array);
+ void ExtractNumberReference(HeapEntry* entry, Object number);
void ExtractFeedbackVectorReferences(HeapEntry* entry,
FeedbackVector feedback_vector);
void ExtractDescriptorArrayReferences(HeapEntry* entry,
@@ -501,6 +511,9 @@ class HeapSnapshotGenerator : public SnapshottingProgressReportingInterface {
// The HeapEntriesMap instance is used to track a mapping between
// real heap objects and their representations in heap snapshots.
using HeapEntriesMap = std::unordered_map<HeapThing, HeapEntry*>;
+ // The SmiEntriesMap instance is used to track a mapping between smi and
+ // their representations in heap snapshots.
+ using SmiEntriesMap = std::unordered_map<int, HeapEntry*>;
HeapSnapshotGenerator(HeapSnapshot* snapshot,
v8::ActivityControl* control,
@@ -515,16 +528,31 @@ class HeapSnapshotGenerator : public SnapshottingProgressReportingInterface {
return it != entries_map_.end() ? it->second : nullptr;
}
+ HeapEntry* FindEntry(Smi smi) {
+ auto it = smis_map_.find(smi.value());
+ return it != smis_map_.end() ? it->second : nullptr;
+ }
+
HeapEntry* AddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) {
return entries_map_.emplace(ptr, allocator->AllocateEntry(ptr))
.first->second;
}
+ HeapEntry* AddEntry(Smi smi, HeapEntriesAllocator* allocator) {
+ return smis_map_.emplace(smi.value(), allocator->AllocateEntry(smi))
+ .first->second;
+ }
+
HeapEntry* FindOrAddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) {
HeapEntry* entry = FindEntry(ptr);
return entry != nullptr ? entry : AddEntry(ptr, allocator);
}
+ HeapEntry* FindOrAddEntry(Smi smi, HeapEntriesAllocator* allocator) {
+ HeapEntry* entry = FindEntry(smi);
+ return entry != nullptr ? entry : AddEntry(smi, allocator);
+ }
+
private:
bool FillReferences();
void ProgressStep() override;
@@ -537,6 +565,7 @@ class HeapSnapshotGenerator : public SnapshottingProgressReportingInterface {
NativeObjectsExplorer dom_explorer_;
// Mapping from HeapThing pointers to HeapEntry indices.
HeapEntriesMap entries_map_;
+ SmiEntriesMap smis_map_;
// Used during snapshot generation.
int progress_counter_;
int progress_total_;
diff --git a/deps/v8/src/profiler/profile-generator.cc b/deps/v8/src/profiler/profile-generator.cc
index 375079de3e..93075d4f7c 100644
--- a/deps/v8/src/profiler/profile-generator.cc
+++ b/deps/v8/src/profiler/profile-generator.cc
@@ -533,6 +533,12 @@ void ProfileTree::TraverseDepthFirst(Callback* callback) {
}
}
+void ContextFilter::OnMoveEvent(Address from_address, Address to_address) {
+ if (native_context_address() != from_address) return;
+
+ set_native_context_address(to_address);
+}
+
using v8::tracing::TracedValue;
std::atomic<uint32_t> CpuProfile::last_id_;
@@ -557,6 +563,13 @@ CpuProfile::CpuProfile(CpuProfiler* profiler, const char* title,
value->SetDouble("startTime", start_time_.since_origin().InMicroseconds());
TRACE_EVENT_SAMPLE_WITH_ID1(TRACE_DISABLED_BY_DEFAULT("v8.cpu_profiler"),
"Profile", id_, "data", std::move(value));
+
+ DisallowHeapAllocation no_gc;
+ if (options_.has_filter_context()) {
+ i::Address raw_filter_context =
+ reinterpret_cast<i::Address>(options_.raw_filter_context());
+ context_filter_.set_native_context_address(raw_filter_context);
+ }
}
bool CpuProfile::CheckSubsample(base::TimeDelta source_sampling_interval) {
@@ -706,6 +719,8 @@ void CpuProfile::StreamPendingTraceEvents() {
void CpuProfile::FinishProfile() {
end_time_ = base::TimeTicks::HighResolutionNow();
+ // Stop tracking context movements after profiling stops.
+ context_filter_.set_native_context_address(kNullAddress);
StreamPendingTraceEvents();
auto value = TracedValue::Create();
// The endTime timestamp is not converted to Perfetto's clock domain and will
@@ -942,14 +957,26 @@ base::TimeDelta CpuProfilesCollection::GetCommonSamplingInterval() const {
void CpuProfilesCollection::AddPathToCurrentProfiles(
base::TimeTicks timestamp, const ProfileStackTrace& path, int src_line,
- bool update_stats, base::TimeDelta sampling_interval) {
+ bool update_stats, base::TimeDelta sampling_interval,
+ Address native_context_address) {
// As starting / stopping profiles is rare relatively to this
// method, we don't bother minimizing the duration of lock holding,
// e.g. copying contents of the list to a local vector.
current_profiles_semaphore_.Wait();
for (const std::unique_ptr<CpuProfile>& profile : current_profiles_) {
- profile->AddPath(timestamp, path, src_line, update_stats,
- sampling_interval);
+ if (profile->context_filter().Accept(native_context_address)) {
+ profile->AddPath(timestamp, path, src_line, update_stats,
+ sampling_interval);
+ }
+ }
+ current_profiles_semaphore_.Signal();
+}
+
+void CpuProfilesCollection::UpdateNativeContextAddressForCurrentProfiles(
+ Address from, Address to) {
+ current_profiles_semaphore_.Wait();
+ for (const std::unique_ptr<CpuProfile>& profile : current_profiles_) {
+ profile->context_filter().OnMoveEvent(from, to);
}
current_profiles_semaphore_.Signal();
}
diff --git a/deps/v8/src/profiler/profile-generator.h b/deps/v8/src/profiler/profile-generator.h
index 551dfdf591..c4bffa945a 100644
--- a/deps/v8/src/profiler/profile-generator.h
+++ b/deps/v8/src/profiler/profile-generator.h
@@ -237,6 +237,31 @@ struct CodeEntryAndLineNumber {
using ProfileStackTrace = std::vector<CodeEntryAndLineNumber>;
+// Filters stack frames from sources other than a target native context.
+class ContextFilter {
+ public:
+ explicit ContextFilter(Address native_context_address = kNullAddress)
+ : native_context_address_(native_context_address) {}
+
+ // Invoked when a native context has changed address.
+ void OnMoveEvent(Address from_address, Address to_address);
+
+ bool Accept(Address native_context_address) const {
+ if (native_context_address_ == kNullAddress) return true;
+ return (native_context_address & ~kHeapObjectTag) ==
+ native_context_address_;
+ }
+
+ // Update the context's tracked address based on VM-thread events.
+ void set_native_context_address(Address address) {
+ native_context_address_ = address;
+ }
+ Address native_context_address() const { return native_context_address_; }
+
+ private:
+ Address native_context_address_;
+};
+
class ProfileTree;
class V8_EXPORT_PRIVATE ProfileNode {
@@ -386,6 +411,7 @@ class CpuProfile {
base::TimeTicks start_time() const { return start_time_; }
base::TimeTicks end_time() const { return end_time_; }
CpuProfiler* cpu_profiler() const { return profiler_; }
+ ContextFilter& context_filter() { return context_filter_; }
void UpdateTicksScale();
@@ -397,6 +423,7 @@ class CpuProfile {
const char* title_;
const CpuProfilingOptions options_;
std::unique_ptr<DiscardedSamplesDelegate> delegate_;
+ ContextFilter context_filter_;
base::TimeTicks start_time_;
base::TimeTicks end_time_;
std::deque<SampleInfo> samples_;
@@ -486,7 +513,11 @@ class V8_EXPORT_PRIVATE CpuProfilesCollection {
void AddPathToCurrentProfiles(base::TimeTicks timestamp,
const ProfileStackTrace& path, int src_line,
bool update_stats,
- base::TimeDelta sampling_interval);
+ base::TimeDelta sampling_interval,
+ Address native_context_address = kNullAddress);
+
+ // Called from profile generator thread.
+ void UpdateNativeContextAddressForCurrentProfiles(Address from, Address to);
// Limits the number of profiles that can be simultaneously collected.
static const int kMaxSimultaneousProfiles = 100;
diff --git a/deps/v8/src/profiler/profiler-listener.cc b/deps/v8/src/profiler/profiler-listener.cc
index 8b253fb472..a2cfb8b07b 100644
--- a/deps/v8/src/profiler/profiler-listener.cc
+++ b/deps/v8/src/profiler/profiler-listener.cc
@@ -302,6 +302,13 @@ void ProfilerListener::CodeMoveEvent(AbstractCode from, AbstractCode to) {
DispatchCodeEvent(evt_rec);
}
+void ProfilerListener::NativeContextMoveEvent(Address from, Address to) {
+ CodeEventsContainer evt_rec(CodeEventRecord::NATIVE_CONTEXT_MOVE);
+ evt_rec.NativeContextMoveEventRecord_.from_address = from;
+ evt_rec.NativeContextMoveEventRecord_.to_address = to;
+ DispatchCodeEvent(evt_rec);
+}
+
void ProfilerListener::CodeDisableOptEvent(Handle<AbstractCode> code,
Handle<SharedFunctionInfo> shared) {
CodeEventsContainer evt_rec(CodeEventRecord::CODE_DISABLE_OPT);
diff --git a/deps/v8/src/profiler/profiler-listener.h b/deps/v8/src/profiler/profiler-listener.h
index 49e7db32ba..50a9b81893 100644
--- a/deps/v8/src/profiler/profiler-listener.h
+++ b/deps/v8/src/profiler/profiler-listener.h
@@ -59,6 +59,7 @@ class V8_EXPORT_PRIVATE ProfilerListener : public CodeEventListener,
Handle<String> source) override;
void CodeMoveEvent(AbstractCode from, AbstractCode to) override;
void SharedFunctionInfoMoveEvent(Address from, Address to) override {}
+ void NativeContextMoveEvent(Address from, Address to) override;
void CodeMovingGCEvent() override {}
void CodeDisableOptEvent(Handle<AbstractCode> code,
Handle<SharedFunctionInfo> shared) override;
diff --git a/deps/v8/src/profiler/sampling-heap-profiler.cc b/deps/v8/src/profiler/sampling-heap-profiler.cc
index aef0170bb4..4bef9793ab 100644
--- a/deps/v8/src/profiler/sampling-heap-profiler.cc
+++ b/deps/v8/src/profiler/sampling-heap-profiler.cc
@@ -75,7 +75,7 @@ void SamplingHeapProfiler::SampleObject(Address soon_object, size_t size) {
DisallowGarbageCollection no_gc;
// Check if the area is iterable by confirming that it starts with a map.
- DCHECK((*ObjectSlot(soon_object)).IsMap());
+ DCHECK(HeapObject::FromAddress(soon_object).map().IsMap());
HandleScope scope(isolate_);
HeapObject heap_object = HeapObject::FromAddress(soon_object);
diff --git a/deps/v8/src/profiler/tick-sample.cc b/deps/v8/src/profiler/tick-sample.cc
index 638aa5545a..253b80d19e 100644
--- a/deps/v8/src/profiler/tick-sample.cc
+++ b/deps/v8/src/profiler/tick-sample.cc
@@ -7,14 +7,14 @@
#include <cinttypes>
#include "include/v8-profiler.h"
+#include "src/base/sanitizer/asan.h"
+#include "src/base/sanitizer/msan.h"
#include "src/execution/frames-inl.h"
#include "src/execution/simulator.h"
#include "src/execution/vm-state-inl.h"
#include "src/heap/heap-inl.h" // For Heap::code_range.
#include "src/logging/counters.h"
#include "src/profiler/profiler-stats.h"
-#include "src/sanitizer/asan.h"
-#include "src/sanitizer/msan.h"
namespace v8 {
namespace internal {
@@ -177,6 +177,7 @@ DISABLE_ASAN void TickSample::Init(Isolate* v8_isolate,
pc = regs.pc;
frames_count = static_cast<unsigned>(info.frames_count);
has_external_callback = info.external_callback_entry != nullptr;
+ context = info.context;
if (has_external_callback) {
external_callback_entry = info.external_callback_entry;
} else if (frames_count) {
@@ -209,6 +210,7 @@ bool TickSample::GetStackSample(Isolate* v8_isolate, RegisterState* regs,
sample_info->frames_count = 0;
sample_info->vm_state = isolate->current_vm_state();
sample_info->external_callback_entry = nullptr;
+ sample_info->context = nullptr;
if (sample_info->vm_state == GC) return true;
i::Address js_entry_sp = isolate->js_entry_sp();
@@ -232,7 +234,7 @@ bool TickSample::GetStackSample(Isolate* v8_isolate, RegisterState* regs,
// TODO(petermarshall): Code range is always null on ia32 so this check for
// IsNoFrameRegion will never actually run there.
if (regs->pc &&
- isolate->heap()->memory_allocator()->code_range().contains(
+ isolate->heap()->code_region().contains(
reinterpret_cast<i::Address>(regs->pc)) &&
IsNoFrameRegion(reinterpret_cast<i::Address>(regs->pc))) {
// The frame is not setup, so it'd be hard to iterate the stack. Bailout.
@@ -278,6 +280,13 @@ bool TickSample::GetStackSample(Isolate* v8_isolate, RegisterState* regs,
reinterpret_cast<i::Address>(regs->lr),
js_entry_sp);
+ Context top_context = isolate->context();
+ if (top_context.ptr() != i::Context::kNoContext &&
+ top_context.ptr() != i::Context::kInvalidContext) {
+ NativeContext top_native_context = top_context.native_context();
+ sample_info->context = reinterpret_cast<void*>(top_native_context.ptr());
+ }
+
if (it.done()) return true;
size_t i = 0;
@@ -287,15 +296,18 @@ bool TickSample::GetStackSample(Isolate* v8_isolate, RegisterState* regs,
frames[i] = reinterpret_cast<void*>(isolate->c_function());
i++;
}
-
+#ifdef V8_RUNTIME_CALL_STATS
i::RuntimeCallTimer* timer =
isolate->counters()->runtime_call_stats()->current_timer();
+#endif // V8_RUNTIME_CALL_STATS
for (; !it.done() && i < frames_limit; it.Advance()) {
+#ifdef V8_RUNTIME_CALL_STATS
while (timer && reinterpret_cast<i::Address>(timer) < it.frame()->fp() &&
i < frames_limit) {
frames[i++] = reinterpret_cast<void*>(timer->counter());
timer = timer->parent();
}
+#endif // V8_RUNTIME_CALL_STATS
if (i == frames_limit) break;
if (it.frame()->is_interpreted()) {
diff --git a/deps/v8/src/profiler/tick-sample.h b/deps/v8/src/profiler/tick-sample.h
index 777c3d192d..1bfcb7d097 100644
--- a/deps/v8/src/profiler/tick-sample.h
+++ b/deps/v8/src/profiler/tick-sample.h
@@ -90,6 +90,7 @@ struct V8_EXPORT TickSample {
static const unsigned kMaxFramesCountLog2 = 8;
static const unsigned kMaxFramesCount = (1 << kMaxFramesCountLog2) - 1;
void* stack[kMaxFramesCount]; // Call stack.
+ void* context = nullptr; // Address of the incumbent native context.
unsigned frames_count : kMaxFramesCountLog2; // Number of captured frames.
bool has_external_callback : 1;
bool update_stats : 1; // Whether the sample should update aggregated stats.
diff --git a/deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc
index 0441fe2976..5e24500a26 100644
--- a/deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc
+++ b/deps/v8/src/regexp/arm64/regexp-macro-assembler-arm64.cc
@@ -395,7 +395,7 @@ void RegExpMacroAssemblerARM64::CheckNotBackReferenceIgnoreCase(
__ Sub(current_input_offset().X(), current_input_offset().X(),
Operand(capture_length, SXTW));
}
- if (masm_->emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Cmp(current_input_offset().X(), Operand(current_input_offset(), SXTW));
__ Ccmp(current_input_offset(), 0, NoFlag, eq);
// The current input offset should be <= 0, and fit in a W register.
@@ -528,7 +528,7 @@ void RegExpMacroAssemblerARM64::CheckNotBackReference(int start_reg,
Operand(capture_length, SXTW));
}
- if (masm_->emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Cmp(current_input_offset().X(), Operand(current_input_offset(), SXTW));
__ Ccmp(current_input_offset(), 0, NoFlag, eq);
// The current input offset should be <= 0, and fit in a W register.
@@ -817,7 +817,7 @@ Handle<HeapObject> RegExpMacroAssemblerARM64::GetCode(Handle<String> source) {
// Find negative length (offset of start relative to end).
__ Sub(x10, input_start(), input_end());
- if (masm_->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Check that the size of the input string chars is in range.
__ Neg(x11, x10);
__ Cmp(x11, SeqTwoByteString::kMaxCharsSize);
@@ -882,7 +882,7 @@ Handle<HeapObject> RegExpMacroAssemblerARM64::GetCode(Handle<String> source) {
// Get string length.
__ Sub(x10, input_end(), input_start());
- if (masm_->emit_debug_code()) {
+ if (FLAG_debug_code) {
// Check that the size of the input string chars is in range.
__ Cmp(x10, SeqTwoByteString::kMaxCharsSize);
__ Check(ls, AbortReason::kInputStringTooLong);
@@ -1167,7 +1167,7 @@ void RegExpMacroAssemblerARM64::PushBacktrack(Label* label) {
} else {
__ Adr(x10, label, MacroAssembler::kAdrFar);
__ Sub(x10, x10, code_pointer());
- if (masm_->emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Cmp(x10, kWRegMask);
// The code offset has to fit in a W register.
__ Check(ls, AbortReason::kOffsetOutOfRange);
@@ -1322,7 +1322,7 @@ void RegExpMacroAssemblerARM64::ClearRegisters(int reg_from, int reg_to) {
void RegExpMacroAssemblerARM64::WriteStackPointerToRegister(int reg) {
__ Ldr(x10, MemOperand(frame_pointer(), kStackBase));
__ Sub(x10, backtrack_stackpointer(), x10);
- if (masm_->emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Cmp(x10, Operand(w10, SXTW));
// The stack offset needs to fit in a W register.
__ Check(eq, AbortReason::kOffsetOutOfRange);
@@ -1629,7 +1629,7 @@ void RegExpMacroAssemblerARM64::LoadCurrentCharacterUnchecked(int cp_offset,
}
if (cp_offset != 0) {
- if (masm_->emit_debug_code()) {
+ if (FLAG_debug_code) {
__ Mov(x10, cp_offset * char_size());
__ Add(x10, x10, Operand(current_input_offset(), SXTW));
__ Cmp(x10, Operand(w10, SXTW));
diff --git a/deps/v8/src/regexp/ppc/OWNERS b/deps/v8/src/regexp/ppc/OWNERS
deleted file mode 100644
index 02c2cd757c..0000000000
--- a/deps/v8/src/regexp/ppc/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-junyan@redhat.com
-joransiu@ca.ibm.com
-midawson@redhat.com
-mfarazma@redhat.com
-vasili.skurydzin@ibm.com
diff --git a/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc b/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc
index c0d69297f9..77a0952637 100644
--- a/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc
+++ b/deps/v8/src/regexp/ppc/regexp-macro-assembler-ppc.cc
@@ -162,7 +162,7 @@ void RegExpMacroAssemblerPPC::AdvanceRegister(int reg, int by) {
DCHECK_LE(0, reg);
DCHECK_GT(num_registers_, reg);
if (by != 0) {
- __ LoadP(r3, register_location(reg), r0);
+ __ LoadU64(r3, register_location(reg), r0);
__ mov(r0, Operand(by));
__ add(r3, r3, r0);
__ StoreP(r3, register_location(reg), r0);
@@ -174,7 +174,7 @@ void RegExpMacroAssemblerPPC::Backtrack() {
CheckPreemption();
if (has_backtrack_limit()) {
Label next;
- __ LoadP(r3, MemOperand(frame_pointer(), kBacktrackCount), r0);
+ __ LoadU64(r3, MemOperand(frame_pointer(), kBacktrackCount), r0);
__ addi(r3, r3, Operand(1));
__ StoreP(r3, MemOperand(frame_pointer(), kBacktrackCount), r0);
__ mov(r0, Operand(backtrack_limit()));
@@ -213,7 +213,7 @@ void RegExpMacroAssemblerPPC::CheckCharacterGT(uc16 limit, Label* on_greater) {
}
void RegExpMacroAssemblerPPC::CheckAtStart(int cp_offset, Label* on_at_start) {
- __ LoadP(r4, MemOperand(frame_pointer(), kStringStartMinusOne));
+ __ LoadU64(r4, MemOperand(frame_pointer(), kStringStartMinusOne));
__ addi(r3, current_input_offset(),
Operand(-char_size() + cp_offset * char_size()));
__ cmp(r3, r4);
@@ -222,7 +222,7 @@ void RegExpMacroAssemblerPPC::CheckAtStart(int cp_offset, Label* on_at_start) {
void RegExpMacroAssemblerPPC::CheckNotAtStart(int cp_offset,
Label* on_not_at_start) {
- __ LoadP(r4, MemOperand(frame_pointer(), kStringStartMinusOne));
+ __ LoadU64(r4, MemOperand(frame_pointer(), kStringStartMinusOne));
__ addi(r3, current_input_offset(),
Operand(-char_size() + cp_offset * char_size()));
__ cmp(r3, r4);
@@ -238,7 +238,7 @@ void RegExpMacroAssemblerPPC::CheckCharacterLT(uc16 limit, Label* on_less) {
void RegExpMacroAssemblerPPC::CheckGreedyLoop(Label* on_equal) {
Label backtrack_non_equal;
- __ LoadP(r3, MemOperand(backtrack_stackpointer(), 0));
+ __ LoadU64(r3, MemOperand(backtrack_stackpointer(), 0));
__ cmp(current_input_offset(), r3);
__ bne(&backtrack_non_equal);
__ addi(backtrack_stackpointer(), backtrack_stackpointer(),
@@ -251,8 +251,9 @@ void RegExpMacroAssemblerPPC::CheckGreedyLoop(Label* on_equal) {
void RegExpMacroAssemblerPPC::CheckNotBackReferenceIgnoreCase(
int start_reg, bool read_backward, bool unicode, Label* on_no_match) {
Label fallthrough;
- __ LoadP(r3, register_location(start_reg), r0); // Index of start of capture
- __ LoadP(r4, register_location(start_reg + 1), r0); // Index of end
+ __ LoadU64(r3, register_location(start_reg),
+ r0); // Index of start of capture
+ __ LoadU64(r4, register_location(start_reg + 1), r0); // Index of end
__ sub(r4, r4, r3, LeaveOE, SetRC); // Length of capture.
// At this point, the capture registers are either both set or both cleared.
@@ -262,7 +263,7 @@ void RegExpMacroAssemblerPPC::CheckNotBackReferenceIgnoreCase(
// Check that there are enough characters left in the input.
if (read_backward) {
- __ LoadP(r6, MemOperand(frame_pointer(), kStringStartMinusOne));
+ __ LoadU64(r6, MemOperand(frame_pointer(), kStringStartMinusOne));
__ add(r6, r6, r4);
__ cmp(current_input_offset(), r6);
BranchOrBacktrack(le, on_no_match);
@@ -325,9 +326,10 @@ void RegExpMacroAssemblerPPC::CheckNotBackReferenceIgnoreCase(
// Compute new value of character position after the matched part.
__ sub(current_input_offset(), r5, end_of_input_address());
if (read_backward) {
- __ LoadP(r3, register_location(start_reg)); // Index of start of capture
- __ LoadP(r4,
- register_location(start_reg + 1)); // Index of end of capture
+ __ LoadU64(r3,
+ register_location(start_reg)); // Index of start of capture
+ __ LoadU64(r4,
+ register_location(start_reg + 1)); // Index of end of capture
__ add(current_input_offset(), current_input_offset(), r3);
__ sub(current_input_offset(), current_input_offset(), r4);
}
@@ -391,8 +393,8 @@ void RegExpMacroAssemblerPPC::CheckNotBackReference(int start_reg,
Label fallthrough;
// Find length of back-referenced capture.
- __ LoadP(r3, register_location(start_reg), r0);
- __ LoadP(r4, register_location(start_reg + 1), r0);
+ __ LoadU64(r3, register_location(start_reg), r0);
+ __ LoadU64(r4, register_location(start_reg + 1), r0);
__ sub(r4, r4, r3, LeaveOE, SetRC); // Length to check.
// At this point, the capture registers are either both set or both cleared.
@@ -402,7 +404,7 @@ void RegExpMacroAssemblerPPC::CheckNotBackReference(int start_reg,
// Check that there are enough characters left in the input.
if (read_backward) {
- __ LoadP(r6, MemOperand(frame_pointer(), kStringStartMinusOne));
+ __ LoadU64(r6, MemOperand(frame_pointer(), kStringStartMinusOne));
__ add(r6, r6, r4);
__ cmp(current_input_offset(), r6);
BranchOrBacktrack(le, on_no_match);
@@ -442,8 +444,9 @@ void RegExpMacroAssemblerPPC::CheckNotBackReference(int start_reg,
// Move current character position to position after match.
__ sub(current_input_offset(), r5, end_of_input_address());
if (read_backward) {
- __ LoadP(r3, register_location(start_reg)); // Index of start of capture
- __ LoadP(r4, register_location(start_reg + 1)); // Index of end of capture
+ __ LoadU64(r3, register_location(start_reg)); // Index of start of capture
+ __ LoadU64(r4,
+ register_location(start_reg + 1)); // Index of end of capture
__ add(current_input_offset(), current_input_offset(), r3);
__ sub(current_input_offset(), current_input_offset(), r4);
}
@@ -715,7 +718,7 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
ExternalReference stack_limit =
ExternalReference::address_of_jslimit(isolate());
__ mov(r3, Operand(stack_limit));
- __ LoadP(r3, MemOperand(r3));
+ __ LoadU64(r3, MemOperand(r3));
__ sub(r3, sp, r3, LeaveOE, SetRC);
// Handle it if the stack pointer is already below the stack limit.
__ ble(&stack_limit_hit, cr0);
@@ -739,14 +742,14 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
// Allocate space on stack for registers.
__ Add(sp, sp, -num_registers_ * kSystemPointerSize, r0);
// Load string end.
- __ LoadP(end_of_input_address(), MemOperand(frame_pointer(), kInputEnd));
+ __ LoadU64(end_of_input_address(), MemOperand(frame_pointer(), kInputEnd));
// Load input start.
- __ LoadP(r3, MemOperand(frame_pointer(), kInputStart));
+ __ LoadU64(r3, MemOperand(frame_pointer(), kInputStart));
// Find negative length (offset of start relative to end).
__ sub(current_input_offset(), r3, end_of_input_address());
// Set r3 to address of char before start of the input string
// (effectively string position -1).
- __ LoadP(r4, MemOperand(frame_pointer(), kStartIndex));
+ __ LoadU64(r4, MemOperand(frame_pointer(), kStartIndex));
__ subi(r3, current_input_offset(), Operand(char_size()));
if (mode_ == UC16) {
__ ShiftLeftImm(r0, r4, Operand(1));
@@ -795,8 +798,8 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
}
// Initialize backtrack stack pointer.
- __ LoadP(backtrack_stackpointer(),
- MemOperand(frame_pointer(), kStackHighEnd));
+ __ LoadU64(backtrack_stackpointer(),
+ MemOperand(frame_pointer(), kStackHighEnd));
__ b(&start_label_);
@@ -806,9 +809,9 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
__ bind(&success_label_);
if (num_saved_registers_ > 0) {
// copy captures to output
- __ LoadP(r4, MemOperand(frame_pointer(), kInputStart));
- __ LoadP(r3, MemOperand(frame_pointer(), kRegisterOutput));
- __ LoadP(r5, MemOperand(frame_pointer(), kStartIndex));
+ __ LoadU64(r4, MemOperand(frame_pointer(), kInputStart));
+ __ LoadU64(r3, MemOperand(frame_pointer(), kRegisterOutput));
+ __ LoadU64(r5, MemOperand(frame_pointer(), kStartIndex));
__ sub(r4, end_of_input_address(), r4);
// r4 is length of input in bytes.
if (mode_ == UC16) {
@@ -823,8 +826,8 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
// unroll the loop once to add an operation between a load of a register
// and the following use of that register.
for (int i = 0; i < num_saved_registers_; i += 2) {
- __ LoadP(r5, register_location(i), r0);
- __ LoadP(r6, register_location(i + 1), r0);
+ __ LoadU64(r5, register_location(i), r0);
+ __ LoadU64(r6, register_location(i + 1), r0);
if (i == 0 && global_with_zero_length_check()) {
// Keep capture start in r25 for the zero-length check later.
__ mr(r25, r5);
@@ -847,9 +850,9 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
if (global()) {
// Restart matching if the regular expression is flagged as global.
- __ LoadP(r3, MemOperand(frame_pointer(), kSuccessfulCaptures));
- __ LoadP(r4, MemOperand(frame_pointer(), kNumOutputRegisters));
- __ LoadP(r5, MemOperand(frame_pointer(), kRegisterOutput));
+ __ LoadU64(r3, MemOperand(frame_pointer(), kSuccessfulCaptures));
+ __ LoadU64(r4, MemOperand(frame_pointer(), kNumOutputRegisters));
+ __ LoadU64(r5, MemOperand(frame_pointer(), kRegisterOutput));
// Increment success counter.
__ addi(r3, r3, Operand(1));
__ StoreP(r3, MemOperand(frame_pointer(), kSuccessfulCaptures));
@@ -866,7 +869,7 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
__ StoreP(r5, MemOperand(frame_pointer(), kRegisterOutput));
// Prepare r3 to initialize registers with its value in the next run.
- __ LoadP(r3, MemOperand(frame_pointer(), kStringStartMinusOne));
+ __ LoadU64(r3, MemOperand(frame_pointer(), kStringStartMinusOne));
if (global_with_zero_length_check()) {
// Special case for zero-length matches.
@@ -894,7 +897,7 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
// Exit and return r3
__ bind(&exit_label_);
if (global()) {
- __ LoadP(r3, MemOperand(frame_pointer(), kSuccessfulCaptures));
+ __ LoadU64(r3, MemOperand(frame_pointer(), kSuccessfulCaptures));
}
__ bind(&return_r3);
@@ -925,7 +928,8 @@ Handle<HeapObject> RegExpMacroAssemblerPPC::GetCode(Handle<String> source) {
__ bne(&return_r3);
// String might have moved: Reload end of string from frame.
- __ LoadP(end_of_input_address(), MemOperand(frame_pointer(), kInputEnd));
+ __ LoadU64(end_of_input_address(),
+ MemOperand(frame_pointer(), kInputEnd));
SafeReturn();
}
@@ -984,7 +988,7 @@ void RegExpMacroAssemblerPPC::GoTo(Label* to) { BranchOrBacktrack(al, to); }
void RegExpMacroAssemblerPPC::IfRegisterGE(int reg, int comparand,
Label* if_ge) {
- __ LoadP(r3, register_location(reg), r0);
+ __ LoadU64(r3, register_location(reg), r0);
__ Cmpi(r3, Operand(comparand), r0);
BranchOrBacktrack(ge, if_ge);
}
@@ -992,14 +996,14 @@ void RegExpMacroAssemblerPPC::IfRegisterGE(int reg, int comparand,
void RegExpMacroAssemblerPPC::IfRegisterLT(int reg, int comparand,
Label* if_lt) {
- __ LoadP(r3, register_location(reg), r0);
+ __ LoadU64(r3, register_location(reg), r0);
__ Cmpi(r3, Operand(comparand), r0);
BranchOrBacktrack(lt, if_lt);
}
void RegExpMacroAssemblerPPC::IfRegisterEqPos(int reg, Label* if_eq) {
- __ LoadP(r3, register_location(reg), r0);
+ __ LoadU64(r3, register_location(reg), r0);
__ cmp(r3, current_input_offset());
BranchOrBacktrack(eq, if_eq);
}
@@ -1036,20 +1040,20 @@ void RegExpMacroAssemblerPPC::PushCurrentPosition() {
void RegExpMacroAssemblerPPC::PushRegister(int register_index,
StackCheckFlag check_stack_limit) {
- __ LoadP(r3, register_location(register_index), r0);
+ __ LoadU64(r3, register_location(register_index), r0);
Push(r3);
if (check_stack_limit) CheckStackLimit();
}
void RegExpMacroAssemblerPPC::ReadCurrentPositionFromRegister(int reg) {
- __ LoadP(current_input_offset(), register_location(reg), r0);
+ __ LoadU64(current_input_offset(), register_location(reg), r0);
}
void RegExpMacroAssemblerPPC::ReadStackPointerFromRegister(int reg) {
- __ LoadP(backtrack_stackpointer(), register_location(reg), r0);
- __ LoadP(r3, MemOperand(frame_pointer(), kStackHighEnd));
+ __ LoadU64(backtrack_stackpointer(), register_location(reg), r0);
+ __ LoadU64(r3, MemOperand(frame_pointer(), kStackHighEnd));
__ add(backtrack_stackpointer(), backtrack_stackpointer(), r3);
}
@@ -1094,7 +1098,7 @@ void RegExpMacroAssemblerPPC::WriteCurrentPositionToRegister(int reg,
void RegExpMacroAssemblerPPC::ClearRegisters(int reg_from, int reg_to) {
DCHECK(reg_from <= reg_to);
- __ LoadP(r3, MemOperand(frame_pointer(), kStringStartMinusOne));
+ __ LoadU64(r3, MemOperand(frame_pointer(), kStringStartMinusOne));
for (int reg = reg_from; reg <= reg_to; reg++) {
__ StoreP(r3, register_location(reg), r0);
}
@@ -1102,7 +1106,7 @@ void RegExpMacroAssemblerPPC::ClearRegisters(int reg_from, int reg_to) {
void RegExpMacroAssemblerPPC::WriteStackPointerToRegister(int reg) {
- __ LoadP(r4, MemOperand(frame_pointer(), kStackHighEnd));
+ __ LoadU64(r4, MemOperand(frame_pointer(), kStackHighEnd));
__ sub(r3, backtrack_stackpointer(), r4);
__ StoreP(r3, register_location(reg), r0);
}
@@ -1160,7 +1164,7 @@ void RegExpMacroAssemblerPPC::CallCheckStackGuardState(Register scratch) {
// Restore the stack pointer
stack_space = kNumRequiredStackFrameSlots + stack_passed_arguments;
if (frame_alignment > kSystemPointerSize) {
- __ LoadP(sp, MemOperand(sp, stack_space * kSystemPointerSize));
+ __ LoadU64(sp, MemOperand(sp, stack_space * kSystemPointerSize));
} else {
__ addi(sp, sp, Operand(stack_space * kSystemPointerSize));
}
@@ -1213,7 +1217,7 @@ void RegExpMacroAssemblerPPC::CheckPosition(int cp_offset,
__ Cmpi(current_input_offset(), Operand(-cp_offset * char_size()), r0);
BranchOrBacktrack(ge, on_outside_input);
} else {
- __ LoadP(r4, MemOperand(frame_pointer(), kStringStartMinusOne));
+ __ LoadU64(r4, MemOperand(frame_pointer(), kStringStartMinusOne));
__ addi(r3, current_input_offset(), Operand(cp_offset * char_size()));
__ cmp(r3, r4);
BranchOrBacktrack(le, on_outside_input);
@@ -1271,7 +1275,7 @@ void RegExpMacroAssemblerPPC::Push(Register source) {
void RegExpMacroAssemblerPPC::Pop(Register target) {
DCHECK(target != backtrack_stackpointer());
- __ LoadP(target, MemOperand(backtrack_stackpointer()));
+ __ LoadU64(target, MemOperand(backtrack_stackpointer()));
__ addi(backtrack_stackpointer(), backtrack_stackpointer(),
Operand(kSystemPointerSize));
}
@@ -1282,7 +1286,7 @@ void RegExpMacroAssemblerPPC::CheckPreemption() {
ExternalReference stack_limit =
ExternalReference::address_of_jslimit(isolate());
__ mov(r3, Operand(stack_limit));
- __ LoadP(r3, MemOperand(r3));
+ __ LoadU64(r3, MemOperand(r3));
__ cmpl(sp, r3);
SafeCall(&check_preempt_label_, le);
}
@@ -1292,7 +1296,7 @@ void RegExpMacroAssemblerPPC::CheckStackLimit() {
ExternalReference stack_limit =
ExternalReference::address_of_regexp_stack_limit_address(isolate());
__ mov(r3, Operand(stack_limit));
- __ LoadP(r3, MemOperand(r3));
+ __ LoadU64(r3, MemOperand(r3));
__ cmpl(backtrack_stackpointer(), r3);
SafeCall(&stack_overflow_label_, le);
}
diff --git a/deps/v8/src/regexp/regexp-ast.cc b/deps/v8/src/regexp/regexp-ast.cc
index dd9e719c94..aaca95b64c 100644
--- a/deps/v8/src/regexp/regexp-ast.cc
+++ b/deps/v8/src/regexp/regexp-ast.cc
@@ -293,14 +293,12 @@ void* RegExpUnparser::VisitEmpty(RegExpEmpty* that, void* data) {
return nullptr;
}
-
-std::ostream& RegExpTree::Print(std::ostream& os, Zone* zone) { // NOLINT
+std::ostream& RegExpTree::Print(std::ostream& os, Zone* zone) {
RegExpUnparser unparser(os, zone);
Accept(&unparser, nullptr);
return os;
}
-
RegExpDisjunction::RegExpDisjunction(ZoneList<RegExpTree*>* alternatives)
: alternatives_(alternatives) {
DCHECK_LT(1, alternatives->length());
diff --git a/deps/v8/src/regexp/regexp-ast.h b/deps/v8/src/regexp/regexp-ast.h
index c038c640f4..89f523bf2e 100644
--- a/deps/v8/src/regexp/regexp-ast.h
+++ b/deps/v8/src/regexp/regexp-ast.h
@@ -214,8 +214,7 @@ class RegExpTree : public ZoneObject {
// expression.
virtual Interval CaptureRegisters() { return Interval::Empty(); }
virtual void AppendToText(RegExpText* text, Zone* zone);
- V8_EXPORT_PRIVATE std::ostream& Print(std::ostream& os,
- Zone* zone); // NOLINT
+ V8_EXPORT_PRIVATE std::ostream& Print(std::ostream& os, Zone* zone);
#define MAKE_ASTYPE(Name) \
virtual RegExp##Name* As##Name(); \
virtual bool Is##Name();
diff --git a/deps/v8/src/regexp/regexp-bytecodes.h b/deps/v8/src/regexp/regexp-bytecodes.h
index e3248d7b83..088fd93b23 100644
--- a/deps/v8/src/regexp/regexp-bytecodes.h
+++ b/deps/v8/src/regexp/regexp-bytecodes.h
@@ -231,7 +231,7 @@ static constexpr int kRegExpBytecodeLengths[] = {
};
inline constexpr int RegExpBytecodeLength(int bytecode) {
- CONSTEXPR_DCHECK(base::IsInRange(bytecode, 0, kRegExpBytecodeCount - 1));
+ DCHECK(base::IsInRange(bytecode, 0, kRegExpBytecodeCount - 1));
return kRegExpBytecodeLengths[bytecode];
}
@@ -242,7 +242,7 @@ static constexpr const char* const kRegExpBytecodeNames[] = {
};
inline constexpr const char* RegExpBytecodeName(int bytecode) {
- CONSTEXPR_DCHECK(base::IsInRange(bytecode, 0, kRegExpBytecodeCount - 1));
+ DCHECK(base::IsInRange(bytecode, 0, kRegExpBytecodeCount - 1));
return kRegExpBytecodeNames[bytecode];
}
diff --git a/deps/v8/src/regexp/regexp-compiler.cc b/deps/v8/src/regexp/regexp-compiler.cc
index c743ee2563..36661f45f2 100644
--- a/deps/v8/src/regexp/regexp-compiler.cc
+++ b/deps/v8/src/regexp/regexp-compiler.cc
@@ -1435,9 +1435,11 @@ EatsAtLeastInfo LoopChoiceNode::EatsAtLeastFromLoopEntry() {
DCHECK_EQ(alternatives_->length(), 2); // There's just loop and continue.
if (read_backward()) {
- // Can't do anything special for a backward loop, so return the basic values
- // that we got during analysis.
- return *eats_at_least_info();
+ // The eats_at_least value is not used if reading backward. The
+ // EatsAtLeastPropagator should've zeroed it as well.
+ DCHECK_EQ(eats_at_least_info()->eats_at_least_from_possibly_start, 0);
+ DCHECK_EQ(eats_at_least_info()->eats_at_least_from_not_start, 0);
+ return {};
}
// Figure out how much the loop body itself eats, not including anything in
@@ -3531,14 +3533,23 @@ class EatsAtLeastPropagator : public AllStatic {
}
static void VisitAction(ActionNode* that) {
- // POSITIVE_SUBMATCH_SUCCESS rewinds input, so we must not consider
- // successor nodes for eats_at_least. SET_REGISTER_FOR_LOOP indicates a loop
- // entry point, which means the loop body will run at least the minimum
- // number of times before the continuation case can run. Otherwise the
- // current node eats at least as much as its successor.
+ // - BEGIN_SUBMATCH and POSITIVE_SUBMATCH_SUCCESS wrap lookarounds.
+ // Lookarounds rewind input, so their eats_at_least value must not
+ // propagate to surroundings.
+ // TODO(jgruber): Instead of resetting EAL to 0 at lookaround boundaries,
+ // analysis should instead skip over the lookaround and look at whatever
+ // follows the lookaround. A simple solution would be to store a pointer to
+ // the associated POSITIVE_SUBMATCH_SUCCESS node in the BEGIN_SUBMATCH
+ // node, and use that during analysis.
+ // - SET_REGISTER_FOR_LOOP indicates a loop entry point, which means the
+ // loop body will run at least the minimum number of times before the
+ // continuation case can run. Otherwise the current node eats at least as
+ // much as its successor.
switch (that->action_type()) {
+ case ActionNode::BEGIN_SUBMATCH:
case ActionNode::POSITIVE_SUBMATCH_SUCCESS:
- break; // Was already initialized to zero.
+ DCHECK(that->eats_at_least_info()->IsZero());
+ break;
case ActionNode::SET_REGISTER_FOR_LOOP:
that->set_eats_at_least_info(
that->on_success()->EatsAtLeastFromLoopEntry());
@@ -3560,7 +3571,10 @@ class EatsAtLeastPropagator : public AllStatic {
}
static void VisitLoopChoiceContinueNode(LoopChoiceNode* that) {
- that->set_eats_at_least_info(*that->continue_node()->eats_at_least_info());
+ if (!that->read_backward()) {
+ that->set_eats_at_least_info(
+ *that->continue_node()->eats_at_least_info());
+ }
}
static void VisitLoopChoiceLoopNode(LoopChoiceNode* that) {}
diff --git a/deps/v8/src/regexp/regexp-dotprinter.cc b/deps/v8/src/regexp/regexp-dotprinter.cc
index 4412960b3d..b708e8d735 100644
--- a/deps/v8/src/regexp/regexp-dotprinter.cc
+++ b/deps/v8/src/regexp/regexp-dotprinter.cc
@@ -60,8 +60,7 @@ void DotPrinterImpl::PrintOnFailure(RegExpNode* from, RegExpNode* on_failure) {
class AttributePrinter {
public:
- explicit AttributePrinter(std::ostream& os) // NOLINT
- : os_(os), first_(true) {}
+ explicit AttributePrinter(std::ostream& os) : os_(os), first_(true) {}
void PrintSeparator() {
if (first_) {
first_ = false;
diff --git a/deps/v8/src/regexp/regexp-macro-assembler.cc b/deps/v8/src/regexp/regexp-macro-assembler.cc
index db45e21ca0..36ef75bc42 100644
--- a/deps/v8/src/regexp/regexp-macro-assembler.cc
+++ b/deps/v8/src/regexp/regexp-macro-assembler.cc
@@ -309,10 +309,9 @@ int NativeRegExpMacroAssembler::Execute(
RegExp::CallOrigin call_origin = RegExp::CallOrigin::kFromRuntime;
using RegexpMatcherSig = int(
- Address input_string, int start_offset, // NOLINT(readability/casting)
- const byte* input_start, const byte* input_end, int* output,
- int output_size, Address stack_base, int call_origin, Isolate* isolate,
- Address regexp);
+ Address input_string, int start_offset, const byte* input_start,
+ const byte* input_end, int* output, int output_size, Address stack_base,
+ int call_origin, Isolate* isolate, Address regexp);
auto fn = GeneratedCode<RegexpMatcherSig>::FromCode(code);
int result =
diff --git a/deps/v8/src/regexp/regexp-nodes.h b/deps/v8/src/regexp/regexp-nodes.h
index 9b863ef239..5a7df3df6b 100644
--- a/deps/v8/src/regexp/regexp-nodes.h
+++ b/deps/v8/src/regexp/regexp-nodes.h
@@ -109,6 +109,11 @@ struct EatsAtLeastInfo final {
}
}
+ bool IsZero() const {
+ return eats_at_least_from_possibly_start == 0 &&
+ eats_at_least_from_not_start == 0;
+ }
+
// Any successful match starting from the current node will consume at least
// this many characters. This does not necessarily mean that there is a
// possible match with exactly this many characters, but we generally try to
diff --git a/deps/v8/src/regexp/x64/regexp-macro-assembler-x64.cc b/deps/v8/src/regexp/x64/regexp-macro-assembler-x64.cc
index 79574ca993..a02cccb96a 100644
--- a/deps/v8/src/regexp/x64/regexp-macro-assembler-x64.cc
+++ b/deps/v8/src/regexp/x64/regexp-macro-assembler-x64.cc
@@ -356,8 +356,7 @@ void RegExpMacroAssemblerX64::CheckNotBackReferenceIgnoreCase(
// Isolate.
__ LoadAddress(arg_reg_4, ExternalReference::isolate_address(isolate()));
- { // NOLINT: Can't find a way to open this scope without confusing the
- // linter.
+ {
AllowExternalCallThatCantCauseGC scope(&masm_);
ExternalReference compare =
unicode ? ExternalReference::re_case_insensitive_compare_unicode(
@@ -672,7 +671,7 @@ bool RegExpMacroAssemblerX64::CheckSpecialCharacterClass(uc16 type,
void RegExpMacroAssemblerX64::Fail() {
STATIC_ASSERT(FAILURE == 0); // Return value for failure is zero.
if (!global()) {
- __ Set(rax, FAILURE);
+ __ Move(rax, FAILURE);
}
__ jmp(&exit_label_);
}
@@ -750,7 +749,7 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
__ j(above_equal, &stack_ok);
// Exit with OutOfMemory exception. There is not enough space on the stack
// for our working registers.
- __ Set(rax, EXCEPTION);
+ __ Move(rax, EXCEPTION);
__ jmp(&return_rax);
__ bind(&stack_limit_hit);
@@ -790,7 +789,7 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
// Load newline if index is at start, previous character otherwise.
__ cmpl(Operand(rbp, kStartIndex), Immediate(0));
__ j(not_equal, &load_char_start_regexp, Label::kNear);
- __ Set(current_character(), '\n');
+ __ Move(current_character(), '\n');
__ jmp(&start_regexp, Label::kNear);
// Global regexp restarts matching here.
@@ -805,7 +804,7 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
// Fill in stack push order, to avoid accessing across an unwritten
// page (a problem on Windows).
if (num_saved_registers_ > 8) {
- __ Set(rcx, kRegisterZero);
+ __ Move(rcx, kRegisterZero);
Label init_loop;
__ bind(&init_loop);
__ movq(Operand(rbp, rcx, times_1, 0), rax);
@@ -1002,13 +1001,13 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) {
// If any of the code above needed to exit with an exception.
__ bind(&exit_with_exception);
// Exit with Result EXCEPTION(-1) to signal thrown exception.
- __ Set(rax, EXCEPTION);
+ __ Move(rax, EXCEPTION);
__ jmp(&return_rax);
}
if (fallback_label_.is_linked()) {
__ bind(&fallback_label_);
- __ Set(rax, FALLBACK_TO_EXPERIMENTAL);
+ __ Move(rax, FALLBACK_TO_EXPERIMENTAL);
__ jmp(&return_rax);
}
diff --git a/deps/v8/src/roots/roots.cc b/deps/v8/src/roots/roots.cc
index 3fdecfe0bf..e79fdb3109 100644
--- a/deps/v8/src/roots/roots.cc
+++ b/deps/v8/src/roots/roots.cc
@@ -17,6 +17,10 @@ const char* RootsTable::root_names_[RootsTable::kEntriesCount] = {
#undef ROOT_NAME
};
+MapWord ReadOnlyRoots::one_pointer_filler_map_word() {
+ return MapWord::FromMap(one_pointer_filler_map());
+}
+
void ReadOnlyRoots::Iterate(RootVisitor* visitor) {
visitor->VisitRootPointers(Root::kReadOnlyRootList, nullptr,
FullObjectSlot(read_only_roots_),
diff --git a/deps/v8/src/roots/roots.h b/deps/v8/src/roots/roots.h
index 64758f5efa..cfa0f89757 100644
--- a/deps/v8/src/roots/roots.h
+++ b/deps/v8/src/roots/roots.h
@@ -88,6 +88,7 @@ class Symbol;
V(Map, fixed_double_array_map, FixedDoubleArrayMap) \
V(Map, global_dictionary_map, GlobalDictionaryMap) \
V(Map, many_closures_cell_map, ManyClosuresCellMap) \
+ V(Map, mega_dom_handler_map, MegaDomHandlerMap) \
V(Map, module_info_map, ModuleInfoMap) \
V(Map, name_dictionary_map, NameDictionaryMap) \
V(Map, no_closures_cell_map, NoClosuresCellMap) \
@@ -110,6 +111,9 @@ class Symbol;
V(Map, source_text_module_map, SourceTextModuleMap) \
V(Map, swiss_name_dictionary_map, SwissNameDictionaryMap) \
V(Map, synthetic_module_map, SyntheticModuleMap) \
+ IF_WASM(V, Map, wasm_exported_function_data_map, \
+ WasmExportedFunctionDataMap) \
+ IF_WASM(V, Map, wasm_js_function_data_map, WasmJSFunctionDataMap) \
IF_WASM(V, Map, wasm_type_info_map, WasmTypeInfoMap) \
V(Map, weak_fixed_array_map, WeakFixedArrayMap) \
V(Map, weak_array_list_map, WeakArrayListMap) \
@@ -210,6 +214,7 @@ class Symbol;
/* Protectors */ \
V(PropertyCell, array_constructor_protector, ArrayConstructorProtector) \
V(PropertyCell, no_elements_protector, NoElementsProtector) \
+ V(PropertyCell, mega_dom_protector, MegaDOMProtector) \
V(PropertyCell, is_concat_spreadable_protector, IsConcatSpreadableProtector) \
V(PropertyCell, array_species_protector, ArraySpeciesProtector) \
V(PropertyCell, typed_array_species_protector, TypedArraySpeciesProtector) \
@@ -536,6 +541,10 @@ class ReadOnlyRoots {
V8_INLINE explicit ReadOnlyRoots(Isolate* isolate);
V8_INLINE explicit ReadOnlyRoots(LocalIsolate* isolate);
+ // For `v8_enable_map_packing=true`, this will return a packed (also untagged)
+ // map-word instead of a tagged heap pointer.
+ MapWord one_pointer_filler_map_word();
+
#define ROOT_ACCESSOR(Type, name, CamelName) \
V8_INLINE class Type name() const; \
V8_INLINE class Type unchecked_##name() const; \
diff --git a/deps/v8/src/runtime/runtime-array.cc b/deps/v8/src/runtime/runtime-array.cc
index 623064fd8a..bdfb666ab7 100644
--- a/deps/v8/src/runtime/runtime-array.cc
+++ b/deps/v8/src/runtime/runtime-array.cc
@@ -28,7 +28,14 @@ RUNTIME_FUNCTION(Runtime_TransitionElementsKind) {
CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0);
CONVERT_ARG_HANDLE_CHECKED(Map, to_map, 1);
ElementsKind to_kind = to_map->elements_kind();
- ElementsAccessor::ForKind(to_kind)->TransitionElementsKind(object, to_map);
+ if (ElementsAccessor::ForKind(to_kind)
+ ->TransitionElementsKind(object, to_map)
+ .IsNothing()) {
+ // TODO(victorgomes): EffectControlLinearizer::LowerTransitionElementsKind
+ // does not handle exceptions.
+ FATAL("Fatal JavaScript invalid array size");
+ UNREACHABLE();
+ }
return *object;
}
@@ -180,7 +187,11 @@ RUNTIME_FUNCTION(Runtime_GrowArrayElements) {
uint32_t capacity = static_cast<uint32_t>(object->elements().length());
if (index >= capacity) {
- if (!object->GetElementsAccessor()->GrowCapacity(object, index)) {
+ bool has_grown;
+ MAYBE_ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, has_grown,
+ object->GetElementsAccessor()->GrowCapacity(object, index));
+ if (!has_grown) {
return Smi::zero();
}
}
diff --git a/deps/v8/src/runtime/runtime-classes.cc b/deps/v8/src/runtime/runtime-classes.cc
index 120f2441a7..8fb37cec32 100644
--- a/deps/v8/src/runtime/runtime-classes.cc
+++ b/deps/v8/src/runtime/runtime-classes.cc
@@ -188,7 +188,6 @@ Object GetMethodWithSharedName(
template <typename Dictionary>
Handle<Dictionary> ShallowCopyDictionaryTemplate(
Isolate* isolate, Handle<Dictionary> dictionary_template) {
- Handle<Map> dictionary_map(dictionary_template->map(), isolate);
Handle<Dictionary> dictionary =
Dictionary::ShallowCopy(isolate, dictionary_template);
// Clone all AccessorPairs in the dictionary.
@@ -375,7 +374,7 @@ bool AddDescriptorsByTemplate(
}
// Atomically commit the changes.
- receiver->synchronized_set_map(*map);
+ receiver->set_map(*map, kReleaseStore);
if (elements_dictionary->NumberOfElements() > 0) {
receiver->set_elements(*elements_dictionary);
}
@@ -469,7 +468,7 @@ bool AddDescriptorsByTemplate(
}
// Atomically commit the changes.
- receiver->synchronized_set_map(*map);
+ receiver->set_map(*map, kReleaseStore);
receiver->set_raw_properties_or_hash(*properties_dictionary);
if (elements_dictionary->NumberOfElements() > 0) {
receiver->set_elements(*elements_dictionary);
@@ -498,7 +497,7 @@ bool InitClassPrototype(Isolate* isolate,
map = Map::CopyDropDescriptors(isolate, map);
map->set_is_prototype_map(true);
Map::SetPrototype(isolate, map, prototype_parent);
- constructor->set_prototype_or_initial_map(*prototype);
+ constructor->set_prototype_or_initial_map(*prototype, kReleaseStore);
map->SetConstructor(*constructor);
Handle<FixedArray> computed_properties(
class_boilerplate->instance_computed_properties(), isolate);
diff --git a/deps/v8/src/runtime/runtime-compiler.cc b/deps/v8/src/runtime/runtime-compiler.cc
index 090a9261c4..1586e35e25 100644
--- a/deps/v8/src/runtime/runtime-compiler.cc
+++ b/deps/v8/src/runtime/runtime-compiler.cc
@@ -29,14 +29,6 @@ namespace internal {
namespace {
-// Returns false iff an exception was thrown.
-bool MaybeSpawnNativeContextIndependentCompilationJob(
- Isolate* isolate, Handle<JSFunction> function, ConcurrencyMode mode) {
- if (!FLAG_turbo_nci) return true; // Nothing to do.
- return Compiler::CompileOptimized(isolate, function, mode,
- CodeKind::NATIVE_CONTEXT_INDEPENDENT);
-}
-
Object CompileOptimized(Isolate* isolate, Handle<JSFunction> function,
ConcurrencyMode mode) {
StackLimitCheck check(isolate);
@@ -50,34 +42,12 @@ Object CompileOptimized(Isolate* isolate, Handle<JSFunction> function,
return ReadOnlyRoots(isolate).exception();
}
- // Possibly compile for NCI caching.
- if (!MaybeSpawnNativeContextIndependentCompilationJob(isolate, function,
- mode)) {
- return ReadOnlyRoots(isolate).exception();
- }
-
// As a post-condition of CompileOptimized, the function *must* be compiled,
// i.e. the installed Code object must not be the CompileLazy builtin.
DCHECK(function->is_compiled());
return function->code();
}
-void TryInstallNCICode(Isolate* isolate, Handle<JSFunction> function,
- Handle<SharedFunctionInfo> sfi,
- IsCompiledScope* is_compiled_scope) {
- // This function should only be called if there's a possibility that cached
- // code exists.
- DCHECK(sfi->may_have_cached_code());
- DCHECK_EQ(function->shared(), *sfi);
-
- Handle<Code> code;
- if (sfi->TryGetCachedCode(isolate).ToHandle(&code)) {
- function->set_code(*code, kReleaseStore);
- JSFunction::EnsureFeedbackVector(function, is_compiled_scope);
- if (FLAG_trace_turbo_nci) CompilationCacheCode::TraceHit(sfi, code);
- }
-}
-
} // namespace
RUNTIME_FUNCTION(Runtime_CompileLazy) {
@@ -104,9 +74,6 @@ RUNTIME_FUNCTION(Runtime_CompileLazy) {
&is_compiled_scope)) {
return ReadOnlyRoots(isolate).exception();
}
- if (sfi->may_have_cached_code()) {
- TryInstallNCICode(isolate, function, sfi, &is_compiled_scope);
- }
DCHECK(function->is_compiled());
return function->code();
}
@@ -127,18 +94,6 @@ RUNTIME_FUNCTION(Runtime_InstallBaselineCode) {
return baseline_code;
}
-RUNTIME_FUNCTION(Runtime_TryInstallNCICode) {
- HandleScope scope(isolate);
- DCHECK_EQ(1, args.length());
- CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 0);
- DCHECK(function->is_compiled());
- Handle<SharedFunctionInfo> sfi(function->shared(), isolate);
- IsCompiledScope is_compiled_scope(*sfi, isolate);
- TryInstallNCICode(isolate, function, sfi, &is_compiled_scope);
- DCHECK(function->is_compiled());
- return function->code();
-}
-
RUNTIME_FUNCTION(Runtime_CompileOptimized_Concurrent) {
HandleScope scope(isolate);
DCHECK_EQ(1, args.length());
@@ -276,6 +231,14 @@ RUNTIME_FUNCTION(Runtime_ObserveNode) {
return *obj;
}
+RUNTIME_FUNCTION(Runtime_VerifyType) {
+ // %VerifyType has no effect in the interpreter.
+ HandleScope scope(isolate);
+ DCHECK_EQ(1, args.length());
+ CONVERT_ARG_HANDLE_CHECKED(Object, obj, 0);
+ return *obj;
+}
+
static bool IsSuitableForOnStackReplacement(Isolate* isolate,
Handle<JSFunction> function) {
// Keep track of whether we've succeeded in optimizing.
@@ -356,16 +319,7 @@ RUNTIME_FUNCTION(Runtime_CompileForOnStackReplacement) {
PrintF(scope.file(), " at OSR bytecode offset %d]\n", osr_offset.ToInt());
}
maybe_result =
- Compiler::GetOptimizedCodeForOSR(function, osr_offset, frame);
-
- // Possibly compile for NCI caching.
- if (!MaybeSpawnNativeContextIndependentCompilationJob(
- isolate, function,
- isolate->concurrent_recompilation_enabled()
- ? ConcurrencyMode::kConcurrent
- : ConcurrencyMode::kNotConcurrent)) {
- return Object();
- }
+ Compiler::GetOptimizedCodeForOSR(isolate, function, osr_offset, frame);
}
// Check whether we ended up with usable optimized code.
diff --git a/deps/v8/src/runtime/runtime-debug.cc b/deps/v8/src/runtime/runtime-debug.cc
index 4ffcaf2397..4b43cad389 100644
--- a/deps/v8/src/runtime/runtime-debug.cc
+++ b/deps/v8/src/runtime/runtime-debug.cc
@@ -61,13 +61,6 @@ RUNTIME_FUNCTION_RETURN_PAIR(Runtime_DebugBreakOnBytecode) {
handle(it.frame()->function(), isolate));
}
- // If we are dropping frames, there is no need to get a return value or
- // bytecode, since we will be restarting execution at a different frame.
- if (isolate->debug()->will_restart()) {
- return MakePair(ReadOnlyRoots(isolate).undefined_value(),
- Smi::FromInt(static_cast<uint8_t>(Bytecode::kIllegal)));
- }
-
// Return the handler from the original bytecode array.
DCHECK(it.frame()->is_interpreted());
InterpretedFrame* interpreted_frame =
@@ -157,11 +150,11 @@ RUNTIME_FUNCTION(Runtime_ScheduleBreak) {
return ReadOnlyRoots(isolate).undefined_value();
}
+namespace {
+
template <class IteratorType>
-static MaybeHandle<JSArray> GetIteratorInternalProperties(
- Isolate* isolate, Handle<IteratorType> object) {
- Factory* factory = isolate->factory();
- Handle<IteratorType> iterator = Handle<IteratorType>::cast(object);
+static Handle<ArrayList> AddIteratorInternalProperties(
+ Isolate* isolate, Handle<ArrayList> result, Handle<IteratorType> iterator) {
const char* kind = nullptr;
switch (iterator->map().instance_type()) {
case JS_MAP_KEY_ITERATOR_TYPE:
@@ -179,62 +172,60 @@ static MaybeHandle<JSArray> GetIteratorInternalProperties(
UNREACHABLE();
}
- Handle<FixedArray> result = factory->NewFixedArray(2 * 3);
- Handle<String> has_more =
- factory->NewStringFromAsciiChecked("[[IteratorHasMore]]");
- result->set(0, *has_more);
- result->set(1, isolate->heap()->ToBoolean(iterator->HasMore()));
-
- Handle<String> index =
- factory->NewStringFromAsciiChecked("[[IteratorIndex]]");
- result->set(2, *index);
- result->set(3, iterator->index());
-
- Handle<String> iterator_kind =
- factory->NewStringFromAsciiChecked("[[IteratorKind]]");
- result->set(4, *iterator_kind);
- Handle<String> kind_str = factory->NewStringFromAsciiChecked(kind);
- result->set(5, *kind_str);
- return factory->NewJSArrayWithElements(result);
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[IteratorHasMore]]"),
+ isolate->factory()->ToBoolean(iterator->HasMore()));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[IteratorIndex]]"),
+ handle(iterator->index(), isolate));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[IteratorKind]]"),
+ isolate->factory()->NewStringFromAsciiChecked(kind));
+ return result;
}
+} // namespace
MaybeHandle<JSArray> Runtime::GetInternalProperties(Isolate* isolate,
Handle<Object> object) {
- Factory* factory = isolate->factory();
+ auto result = ArrayList::New(isolate, 8 * 2);
+ if (object->IsJSObject()) {
+ PrototypeIterator iter(isolate, Handle<JSObject>::cast(object));
+ Handle<Object> prototype = PrototypeIterator::GetCurrent(iter);
+ if (!prototype->IsNull(isolate)) {
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromStaticChars("[[Prototype]]"),
+ prototype);
+ }
+ }
if (object->IsJSBoundFunction()) {
Handle<JSBoundFunction> function = Handle<JSBoundFunction>::cast(object);
- Handle<FixedArray> result = factory->NewFixedArray(2 * 3);
- Handle<String> target =
- factory->NewStringFromAsciiChecked("[[TargetFunction]]");
- result->set(0, *target);
- result->set(1, function->bound_target_function());
-
- Handle<String> bound_this =
- factory->NewStringFromAsciiChecked("[[BoundThis]]");
- result->set(2, *bound_this);
- result->set(3, function->bound_this());
-
- Handle<String> bound_args =
- factory->NewStringFromAsciiChecked("[[BoundArgs]]");
- result->set(4, *bound_args);
- Handle<FixedArray> bound_arguments =
- factory->CopyFixedArray(handle(function->bound_arguments(), isolate));
- Handle<JSArray> arguments_array =
- factory->NewJSArrayWithElements(bound_arguments);
- result->set(5, *arguments_array);
- return factory->NewJSArrayWithElements(result);
- }
- if (object->IsJSMapIterator()) {
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[TargetFunction]]"),
+ handle(function->bound_target_function(), isolate));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[BoundThis]]"),
+ handle(function->bound_this(), isolate));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[BoundArgs]]"),
+ isolate->factory()->NewJSArrayWithElements(
+ isolate->factory()->CopyFixedArray(
+ handle(function->bound_arguments(), isolate))));
+ } else if (object->IsJSMapIterator()) {
Handle<JSMapIterator> iterator = Handle<JSMapIterator>::cast(object);
- return GetIteratorInternalProperties(isolate, iterator);
- }
- if (object->IsJSSetIterator()) {
+ result = AddIteratorInternalProperties(isolate, result, iterator);
+ } else if (object->IsJSSetIterator()) {
Handle<JSSetIterator> iterator = Handle<JSSetIterator>::cast(object);
- return GetIteratorInternalProperties(isolate, iterator);
- }
- if (object->IsJSGeneratorObject()) {
+ result = AddIteratorInternalProperties(isolate, result, iterator);
+ } else if (object->IsJSGeneratorObject()) {
Handle<JSGeneratorObject> generator =
Handle<JSGeneratorObject>::cast(object);
@@ -247,163 +238,131 @@ MaybeHandle<JSArray> Runtime::GetInternalProperties(Isolate* isolate,
DCHECK(generator->is_suspended());
}
- Handle<FixedArray> result = factory->NewFixedArray(2 * 3);
- Handle<String> generator_status =
- factory->NewStringFromAsciiChecked("[[GeneratorState]]");
- result->set(0, *generator_status);
- Handle<String> status_str = factory->NewStringFromAsciiChecked(status);
- result->set(1, *status_str);
-
- Handle<String> function =
- factory->NewStringFromAsciiChecked("[[GeneratorFunction]]");
- result->set(2, *function);
- result->set(3, generator->function());
-
- Handle<String> receiver =
- factory->NewStringFromAsciiChecked("[[GeneratorReceiver]]");
- result->set(4, *receiver);
- result->set(5, generator->receiver());
- return factory->NewJSArrayWithElements(result);
- }
- if (object->IsJSPromise()) {
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[GeneratorState]]"),
+ isolate->factory()->NewStringFromAsciiChecked(status));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[GeneratorFunction]]"),
+ handle(generator->function(), isolate));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[GeneratorReceiver]]"),
+ handle(generator->receiver(), isolate));
+ } else if (object->IsJSPromise()) {
Handle<JSPromise> promise = Handle<JSPromise>::cast(object);
- const char* status = JSPromise::Status(promise->status());
- Handle<FixedArray> result = factory->NewFixedArray(2 * 2);
- Handle<String> promise_status =
- factory->NewStringFromAsciiChecked("[[PromiseState]]");
- result->set(0, *promise_status);
- Handle<String> status_str = factory->NewStringFromAsciiChecked(status);
- result->set(1, *status_str);
-
- Handle<Object> value_obj(promise->status() == Promise::kPending
- ? ReadOnlyRoots(isolate).undefined_value()
- : promise->result(),
- isolate);
- Handle<String> promise_value =
- factory->NewStringFromAsciiChecked("[[PromiseResult]]");
- result->set(2, *promise_value);
- result->set(3, *value_obj);
- return factory->NewJSArrayWithElements(result);
- }
- if (object->IsJSProxy()) {
- Handle<JSProxy> js_proxy = Handle<JSProxy>::cast(object);
- Handle<FixedArray> result = factory->NewFixedArray(3 * 2);
- Handle<String> handler_str =
- factory->NewStringFromAsciiChecked("[[Handler]]");
- result->set(0, *handler_str);
- result->set(1, js_proxy->handler());
-
- Handle<String> target_str =
- factory->NewStringFromAsciiChecked("[[Target]]");
- result->set(2, *target_str);
- result->set(3, js_proxy->target());
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[PromiseState]]"),
+ isolate->factory()->NewStringFromAsciiChecked(
+ JSPromise::Status(promise->status())));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[PromiseResult]]"),
+ promise->status() == Promise::kPending
+ ? isolate->factory()->undefined_value()
+ : handle(promise->result(), isolate));
+ } else if (object->IsJSProxy()) {
+ Handle<JSProxy> js_proxy = Handle<JSProxy>::cast(object);
- Handle<String> is_revoked_str =
- factory->NewStringFromAsciiChecked("[[IsRevoked]]");
- result->set(4, *is_revoked_str);
- result->set(5, isolate->heap()->ToBoolean(js_proxy->IsRevoked()));
- return factory->NewJSArrayWithElements(result);
- }
- if (object->IsJSPrimitiveWrapper()) {
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[Handler]]"),
+ handle(js_proxy->handler(), isolate));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[Target]]"),
+ handle(js_proxy->target(), isolate));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[IsRevoked]]"),
+ isolate->factory()->ToBoolean(js_proxy->IsRevoked()));
+ } else if (object->IsJSPrimitiveWrapper()) {
Handle<JSPrimitiveWrapper> js_value =
Handle<JSPrimitiveWrapper>::cast(object);
- Handle<FixedArray> result = factory->NewFixedArray(2);
- Handle<String> primitive_value =
- factory->NewStringFromAsciiChecked("[[PrimitiveValue]]");
- result->set(0, *primitive_value);
- result->set(1, js_value->value());
- return factory->NewJSArrayWithElements(result);
- }
- if (object->IsJSArrayBuffer()) {
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[PrimitiveValue]]"),
+ handle(js_value->value(), isolate));
+ } else if (object->IsJSArrayBuffer()) {
Handle<JSArrayBuffer> js_array_buffer = Handle<JSArrayBuffer>::cast(object);
if (js_array_buffer->was_detached()) {
// Mark a detached JSArrayBuffer and such and don't even try to
// create views for it, since the TypedArray constructors will
// throw a TypeError when the underlying buffer is detached.
- Handle<FixedArray> result = factory->NewFixedArray(1 * 2);
- Handle<String> is_detached_str =
- factory->NewStringFromAsciiChecked("[[IsDetached]]");
- result->set(0, *is_detached_str);
- result->set(1, isolate->heap()->ToBoolean(true));
- return factory->NewJSArrayWithElements(result, PACKED_ELEMENTS);
- }
- const size_t byte_length = js_array_buffer->byte_length();
- static const ExternalArrayType kTypes[] = {
- kExternalInt8Array,
- kExternalUint8Array,
- kExternalInt16Array,
- kExternalInt32Array,
- };
- Handle<FixedArray> result =
- factory->NewFixedArray((3 + arraysize(kTypes)) * 2);
- int index = 0;
- for (auto type : kTypes) {
- switch (type) {
-#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
- case kExternal##Type##Array: { \
- if ((byte_length % sizeof(ctype)) != 0) continue; \
- Handle<String> typed_array_str = \
- factory->NewStringFromStaticChars("[[" #Type "Array]]"); \
- Handle<JSTypedArray> js_typed_array = \
- factory->NewJSTypedArray(kExternal##Type##Array, js_array_buffer, 0, \
- byte_length / sizeof(ctype)); \
- result->set(index++, *typed_array_str); \
- result->set(index++, *js_typed_array); \
- break; \
- }
- TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[IsDetached]]"),
+ isolate->factory()->true_value());
+ } else {
+ const size_t byte_length = js_array_buffer->byte_length();
+ static const ExternalArrayType kTypes[] = {
+ kExternalInt8Array,
+ kExternalUint8Array,
+ kExternalInt16Array,
+ kExternalInt32Array,
+ };
+ for (auto type : kTypes) {
+ switch (type) {
+#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) \
+ case kExternal##Type##Array: { \
+ if ((byte_length % sizeof(ctype)) != 0) continue; \
+ result = ArrayList::Add( \
+ isolate, result, \
+ isolate->factory()->NewStringFromStaticChars("[[" #Type "Array]]"), \
+ isolate->factory()->NewJSTypedArray(kExternal##Type##Array, \
+ js_array_buffer, 0, \
+ byte_length / sizeof(ctype))); \
+ break; \
+ }
+ TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
default:
UNREACHABLE();
+ }
+ }
+ result =
+ ArrayList::Add(isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked(
+ "[[ArrayBufferByteLength]]"),
+ isolate->factory()->NewNumberFromSize(byte_length));
+
+ // Use the backing store pointer as a unique ID
+ EmbeddedVector<char, 32> buffer_data_vec;
+ int len =
+ SNPrintF(buffer_data_vec, V8PRIxPTR_FMT,
+ reinterpret_cast<Address>(js_array_buffer->backing_store()));
+ result = ArrayList::Add(
+ isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked("[[ArrayBufferData]]"),
+ isolate->factory()->InternalizeUtf8String(
+ buffer_data_vec.SubVector(0, len)));
+
+ Handle<Symbol> memory_symbol =
+ isolate->factory()->array_buffer_wasm_memory_symbol();
+ Handle<Object> memory_object =
+ JSObject::GetDataProperty(js_array_buffer, memory_symbol);
+ if (!memory_object->IsUndefined(isolate)) {
+ result = ArrayList::Add(isolate, result,
+ isolate->factory()->NewStringFromAsciiChecked(
+ "[[WebAssemblyMemory]]"),
+ memory_object);
}
}
- Handle<String> byte_length_str =
- factory->NewStringFromAsciiChecked("[[ArrayBufferByteLength]]");
- Handle<Object> byte_length_obj = factory->NewNumberFromSize(byte_length);
- result->set(index++, *byte_length_str);
- result->set(index++, *byte_length_obj);
-
- Handle<String> buffer_data_str =
- factory->NewStringFromAsciiChecked("[[ArrayBufferData]]");
- // Use the backing store pointer as a unique ID
- EmbeddedVector<char, 32> buffer_data_vec;
- int len =
- SNPrintF(buffer_data_vec, V8PRIxPTR_FMT,
- reinterpret_cast<Address>(js_array_buffer->backing_store()));
- Handle<String> buffer_data_obj =
- factory->InternalizeUtf8String(buffer_data_vec.SubVector(0, len));
- result->set(index++, *buffer_data_str);
- result->set(index++, *buffer_data_obj);
-
#if V8_ENABLE_WEBASSEMBLY
- Handle<Symbol> memory_symbol = factory->array_buffer_wasm_memory_symbol();
- Handle<Object> memory_object =
- JSObject::GetDataProperty(js_array_buffer, memory_symbol);
- if (!memory_object->IsUndefined(isolate)) {
- Handle<String> buffer_memory_str =
- factory->NewStringFromAsciiChecked("[[WebAssemblyMemory]]");
- Handle<WasmMemoryObject> buffer_memory_obj =
- Handle<WasmMemoryObject>::cast(memory_object);
- result->set(index++, *buffer_memory_str);
- result->set(index++, *buffer_memory_obj);
- }
+ } else if (object->IsWasmInstanceObject()) {
+ result = AddWasmInstanceObjectInternalProperties(
+ isolate, result, Handle<WasmInstanceObject>::cast(object));
+ } else if (object->IsWasmModuleObject()) {
+ result = AddWasmModuleObjectInternalProperties(
+ isolate, result, Handle<WasmModuleObject>::cast(object));
#endif // V8_ENABLE_WEBASSEMBLY
-
- return factory->NewJSArrayWithElements(result, PACKED_ELEMENTS, index);
}
-#if V8_ENABLE_WEBASSEMBLY
- if (object->IsWasmInstanceObject()) {
- return GetWasmInstanceObjectInternalProperties(
- Handle<WasmInstanceObject>::cast(object));
- }
- if (object->IsWasmModuleObject()) {
- return GetWasmModuleObjectInternalProperties(
- Handle<WasmModuleObject>::cast(object));
- }
-#endif // V8_ENABLE_WEBASSEMBLY
- return factory->NewJSArray(0);
+ return isolate->factory()->NewJSArrayWithElements(
+ ArrayList::Elements(isolate, result), PACKED_ELEMENTS);
}
RUNTIME_FUNCTION(Runtime_GetGeneratorScopeCount) {
@@ -902,22 +861,9 @@ RUNTIME_FUNCTION(Runtime_LiveEditPatchScript) {
case v8::debug::LiveEditResult::BLOCKED_BY_RUNNING_GENERATOR:
return isolate->Throw(*isolate->factory()->NewStringFromAsciiChecked(
"LiveEdit failed: BLOCKED_BY_RUNNING_GENERATOR"));
- case v8::debug::LiveEditResult::BLOCKED_BY_FUNCTION_ABOVE_BREAK_FRAME:
- return isolate->Throw(*isolate->factory()->NewStringFromAsciiChecked(
- "LiveEdit failed: BLOCKED_BY_FUNCTION_ABOVE_BREAK_FRAME"));
- case v8::debug::LiveEditResult::
- BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME:
- return isolate->Throw(*isolate->factory()->NewStringFromAsciiChecked(
- "LiveEdit failed: BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME"));
case v8::debug::LiveEditResult::BLOCKED_BY_ACTIVE_FUNCTION:
return isolate->Throw(*isolate->factory()->NewStringFromAsciiChecked(
"LiveEdit failed: BLOCKED_BY_ACTIVE_FUNCTION"));
- case v8::debug::LiveEditResult::BLOCKED_BY_NEW_TARGET_IN_RESTART_FRAME:
- return isolate->Throw(*isolate->factory()->NewStringFromAsciiChecked(
- "LiveEdit failed: BLOCKED_BY_NEW_TARGET_IN_RESTART_FRAME"));
- case v8::debug::LiveEditResult::FRAME_RESTART_IS_NOT_SUPPORTED:
- return isolate->Throw(*isolate->factory()->NewStringFromAsciiChecked(
- "LiveEdit failed: FRAME_RESTART_IS_NOT_SUPPORTED"));
case v8::debug::LiveEditResult::OK:
return ReadOnlyRoots(isolate).undefined_value();
}
@@ -931,7 +877,7 @@ RUNTIME_FUNCTION(Runtime_ProfileCreateSnapshotDataBlob) {
// Used only by the test/memory/Memory.json benchmark. This creates a snapshot
// blob and outputs various statistics around it.
- DCHECK(FLAG_profile_deserialization);
+ DCHECK(FLAG_profile_deserialization && FLAG_serialization_statistics);
DisableEmbeddedBlobRefcounting();
diff --git a/deps/v8/src/runtime/runtime-internal.cc b/deps/v8/src/runtime/runtime-internal.cc
index 245d1fd77e..6d569c2be2 100644
--- a/deps/v8/src/runtime/runtime-internal.cc
+++ b/deps/v8/src/runtime/runtime-internal.cc
@@ -7,6 +7,7 @@
#include "src/api/api.h"
#include "src/ast/ast-traversal-visitor.h"
#include "src/ast/prettyprinter.h"
+#include "src/baseline/baseline-osr-inl.h"
#include "src/baseline/baseline.h"
#include "src/builtins/builtins.h"
#include "src/common/message-template.h"
@@ -139,6 +140,7 @@ const char* ElementsKindToType(ElementsKind fixed_elements_kind) {
return #Type "Array";
TYPED_ARRAYS(ELEMENTS_KIND_CASE)
+ RAB_GSAB_TYPED_ARRAYS_WITH_TYPED_ARRAY_TYPE(ELEMENTS_KIND_CASE)
#undef ELEMENTS_KIND_CASE
default:
@@ -342,23 +344,13 @@ RUNTIME_FUNCTION(Runtime_BytecodeBudgetInterruptFromBytecode) {
// a non zero invocation count so we can inline functions.
function->feedback_vector().set_invocation_count(1);
if (FLAG_sparkplug) {
- if (Compiler::CompileBaseline(isolate, function,
- Compiler::CLEAR_EXCEPTION,
- &is_compiled_scope)) {
- if (FLAG_use_osr) {
- JavaScriptFrameIterator it(isolate);
- DCHECK(it.frame()->is_unoptimized());
- UnoptimizedFrame* frame = UnoptimizedFrame::cast(it.frame());
- if (FLAG_trace_osr) {
- CodeTracer::Scope scope(isolate->GetCodeTracer());
- PrintF(
- scope.file(),
- "[OSR - Entry at OSR bytecode offset %d into baseline code]\n",
- frame->GetBytecodeOffset());
- }
- frame->GetBytecodeArray().set_osr_loop_nesting_level(
- AbstractCode::kMaxLoopNestingMarker);
- }
+ if (V8_LIKELY(FLAG_use_osr)) {
+ JavaScriptFrameIterator it(isolate);
+ DCHECK(it.frame()->is_unoptimized());
+ UnoptimizedFrame* frame = UnoptimizedFrame::cast(it.frame());
+ OSRInterpreterFrameToBaseline(isolate, function, frame);
+ } else {
+ OSRInterpreterFrameToBaseline(isolate, function, nullptr);
}
}
return ReadOnlyRoots(isolate).undefined_value();
@@ -528,6 +520,7 @@ RUNTIME_FUNCTION(Runtime_IncrementUseCounter) {
RUNTIME_FUNCTION(Runtime_GetAndResetRuntimeCallStats) {
HandleScope scope(isolate);
DCHECK_LE(args.length(), 2);
+#ifdef V8_RUNTIME_CALL_STATS
// Append any worker thread runtime call stats to the main table before
// printing.
isolate->counters()->worker_thread_runtime_call_stats()->AddToMainTable(
@@ -570,6 +563,7 @@ RUNTIME_FUNCTION(Runtime_GetAndResetRuntimeCallStats) {
} else {
std::fflush(f);
}
+#endif // V8_RUNTIME_CALL_STATS
return ReadOnlyRoots(isolate).undefined_value();
}
diff --git a/deps/v8/src/runtime/runtime-literals.cc b/deps/v8/src/runtime/runtime-literals.cc
index 5ee7bcd4c5..c4285f2403 100644
--- a/deps/v8/src/runtime/runtime-literals.cc
+++ b/deps/v8/src/runtime/runtime-literals.cc
@@ -218,6 +218,7 @@ MaybeHandle<JSObject> JSObjectWalkVisitor<ContextObject>::StructureWalk(
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype) case TYPE##_ELEMENTS:
TYPED_ARRAYS(TYPED_ARRAY_CASE)
+ RAB_GSAB_TYPED_ARRAYS(TYPED_ARRAY_CASE)
#undef TYPED_ARRAY_CASE
// Typed elements cannot be created using an object literal.
UNREACHABLE();
@@ -291,7 +292,7 @@ class AllocationSiteCreationContext : public AllocationSiteContext {
}
void ExitScope(Handle<AllocationSite> scope_site, Handle<JSObject> object) {
if (object.is_null()) return;
- scope_site->set_boilerplate(*object);
+ scope_site->set_boilerplate(*object, kReleaseStore);
if (FLAG_trace_creation_allocation_sites) {
bool top_level =
!scope_site.is_null() && top().is_identical_to(scope_site);
diff --git a/deps/v8/src/runtime/runtime-object.cc b/deps/v8/src/runtime/runtime-object.cc
index a98ad2e6dc..13493125da 100644
--- a/deps/v8/src/runtime/runtime-object.cc
+++ b/deps/v8/src/runtime/runtime-object.cc
@@ -16,8 +16,10 @@
#include "src/logging/counters.h"
#include "src/objects/hash-table-inl.h"
#include "src/objects/js-array-inl.h"
+#include "src/objects/map-updater.h"
#include "src/objects/property-descriptor-object.h"
#include "src/objects/property-descriptor.h"
+#include "src/objects/property-details.h"
#include "src/objects/swiss-name-dictionary-inl.h"
#include "src/runtime/runtime-utils.h"
#include "src/runtime/runtime.h"
@@ -25,23 +27,22 @@
namespace v8 {
namespace internal {
-MaybeHandle<Object> Runtime::GetObjectProperty(Isolate* isolate,
- Handle<Object> holder,
- Handle<Object> key,
- Handle<Object> receiver,
- bool* is_found) {
+MaybeHandle<Object> Runtime::GetObjectProperty(
+ Isolate* isolate, Handle<Object> lookup_start_object, Handle<Object> key,
+ Handle<Object> receiver, bool* is_found) {
if (receiver.is_null()) {
- receiver = holder;
+ receiver = lookup_start_object;
}
- if (holder->IsNullOrUndefined(isolate)) {
- ErrorUtils::ThrowLoadFromNullOrUndefined(isolate, holder, key);
+ if (lookup_start_object->IsNullOrUndefined(isolate)) {
+ ErrorUtils::ThrowLoadFromNullOrUndefined(isolate, lookup_start_object, key);
return MaybeHandle<Object>();
}
bool success = false;
LookupIterator::Key lookup_key(isolate, key, &success);
if (!success) return MaybeHandle<Object>();
- LookupIterator it = LookupIterator(isolate, receiver, lookup_key, holder);
+ LookupIterator it =
+ LookupIterator(isolate, receiver, lookup_key, lookup_start_object);
MaybeHandle<Object> result = Object::GetProperty(&it);
if (is_found) *is_found = it.IsFound();
@@ -58,12 +59,12 @@ MaybeHandle<Object> Runtime::GetObjectProperty(Isolate* isolate,
: name_string;
THROW_NEW_ERROR(isolate,
NewTypeError(MessageTemplate::kInvalidPrivateBrand,
- class_name, holder),
+ class_name, lookup_start_object),
Object);
}
THROW_NEW_ERROR(isolate,
NewTypeError(MessageTemplate::kInvalidPrivateMemberRead,
- name_string, holder),
+ name_string, lookup_start_object),
Object);
}
return result;
@@ -95,6 +96,28 @@ MaybeHandle<Object> Runtime::HasProperty(Isolate* isolate,
namespace {
+// This function sets the sentinel value in a deleted field. Thes sentinel has
+// to look like a proper standalone object because the slack tracking may
+// complete at any time. For this reason we use the filler map word.
+// If V8_MAP_PACKING is enabled, then the filler map word is a packed filler
+// map. Otherwise, the filler map word is the same as the filler map.
+inline void ClearField(Isolate* isolate, JSObject object, FieldIndex index) {
+ if (index.is_inobject()) {
+ MapWord filler_map_word =
+ ReadOnlyRoots(isolate).one_pointer_filler_map_word();
+#ifndef V8_MAP_PACKING
+ DCHECK_EQ(filler_map_word.ToMap(),
+ ReadOnlyRoots(isolate).one_pointer_filler_map());
+#endif
+ int offset = index.offset();
+ TaggedField<MapWord>::Release_Store(object, offset, filler_map_word);
+ } else {
+ object.property_array().set(
+ index.outobject_array_index(),
+ ReadOnlyRoots(isolate).one_pointer_filler_map());
+ }
+}
+
void GeneralizeAllTransitionsToFieldAsMutable(Isolate* isolate, Handle<Map> map,
Handle<Name> name) {
InternalIndex descriptor(map->NumberOfOwnDescriptors());
@@ -131,9 +154,9 @@ void GeneralizeAllTransitionsToFieldAsMutable(Isolate* isolate, Handle<Map> map,
Handle<FieldType> field_type(
target->instance_descriptors(isolate).GetFieldType(descriptor),
isolate);
- Map::GeneralizeField(isolate, target, descriptor,
- PropertyConstness::kMutable, details.representation(),
- field_type);
+ MapUpdater::GeneralizeField(isolate, target, descriptor,
+ PropertyConstness::kMutable,
+ details.representation(), field_type);
DCHECK_EQ(PropertyConstness::kMutable, target->instance_descriptors(isolate)
.GetDetails(descriptor)
.constness());
@@ -191,8 +214,7 @@ bool DeleteObjectPropertyFast(Isolate* isolate, Handle<JSReceiver> receiver,
// Clear out the properties backing store.
receiver->SetProperties(ReadOnlyRoots(isolate).empty_fixed_array());
} else {
- Object filler = ReadOnlyRoots(isolate).one_pointer_filler_map();
- JSObject::cast(*receiver).FastPropertyAtPut(index, filler);
+ ClearField(isolate, JSObject::cast(*receiver), index);
// We must clear any recorded slot for the deleted property, because
// subsequent object modifications might put a raw double there.
// Slot clearing is the reason why this entire function cannot currently
@@ -203,8 +225,10 @@ bool DeleteObjectPropertyFast(Isolate* isolate, Handle<JSReceiver> receiver,
// have recorded slots in free space.
isolate->heap()->ClearRecordedSlot(*receiver,
receiver->RawField(index.offset()));
- MemoryChunk* chunk = MemoryChunk::FromHeapObject(*receiver);
- chunk->InvalidateRecordedSlots(*receiver);
+ if (!FLAG_enable_third_party_heap) {
+ MemoryChunk* chunk = MemoryChunk::FromHeapObject(*receiver);
+ chunk->InvalidateRecordedSlots(*receiver);
+ }
}
}
}
@@ -214,7 +238,7 @@ bool DeleteObjectPropertyFast(Isolate* isolate, Handle<JSReceiver> receiver,
// the "deoptimize dependent code" mechanism.
receiver_map->NotifyLeafMapLayoutChange(isolate);
// Finally, perform the map rollback.
- receiver->synchronized_set_map(*parent_map);
+ receiver->set_map(*parent_map, kReleaseStore);
#if VERIFY_HEAP
receiver->HeapObjectVerify(isolate);
receiver->property_array().PropertyArrayVerify(isolate);
@@ -682,15 +706,15 @@ RUNTIME_FUNCTION(Runtime_JSReceiverSetPrototypeOfDontThrow) {
RUNTIME_FUNCTION(Runtime_GetProperty) {
HandleScope scope(isolate);
DCHECK(args.length() == 3 || args.length() == 2);
- CONVERT_ARG_HANDLE_CHECKED(Object, holder_obj, 0);
+ CONVERT_ARG_HANDLE_CHECKED(Object, lookup_start_obj, 0);
CONVERT_ARG_HANDLE_CHECKED(Object, key_obj, 1);
- Handle<Object> receiver_obj = holder_obj;
+ Handle<Object> receiver_obj = lookup_start_obj;
if (args.length() == 3) {
CHECK(args[2].IsObject());
receiver_obj = args.at<Object>(2);
}
- // Fast cases for getting named properties of the holder JSObject
+ // Fast cases for getting named properties of the lookup_start_obj JSObject
// itself.
//
// The global proxy objects has to be excluded since LookupOwn on
@@ -708,18 +732,19 @@ RUNTIME_FUNCTION(Runtime_GetProperty) {
if (key_obj->IsString() && String::cast(*key_obj).AsArrayIndex(&index)) {
key_obj = isolate->factory()->NewNumberFromUint(index);
}
- if (holder_obj->IsJSObject()) {
- if (!holder_obj->IsJSGlobalProxy() && !holder_obj->IsAccessCheckNeeded() &&
- key_obj->IsName()) {
- Handle<JSObject> holder = Handle<JSObject>::cast(holder_obj);
+ if (lookup_start_obj->IsJSObject()) {
+ Handle<JSObject> lookup_start_object =
+ Handle<JSObject>::cast(lookup_start_obj);
+ if (!lookup_start_object->IsJSGlobalProxy() &&
+ !lookup_start_object->IsAccessCheckNeeded() && key_obj->IsName()) {
Handle<Name> key = Handle<Name>::cast(key_obj);
key_obj = key = isolate->factory()->InternalizeName(key);
DisallowGarbageCollection no_gc;
- if (holder->IsJSGlobalObject()) {
+ if (lookup_start_object->IsJSGlobalObject()) {
// Attempt dictionary lookup.
- GlobalDictionary dictionary =
- JSGlobalObject::cast(*holder).global_dictionary(kAcquireLoad);
+ GlobalDictionary dictionary = JSGlobalObject::cast(*lookup_start_object)
+ .global_dictionary(kAcquireLoad);
InternalIndex entry = dictionary.FindEntry(isolate, key);
if (entry.is_found()) {
PropertyCell cell = dictionary.CellAt(entry);
@@ -729,17 +754,19 @@ RUNTIME_FUNCTION(Runtime_GetProperty) {
// If value is the hole (meaning, absent) do the general lookup.
}
}
- } else if (!holder->HasFastProperties()) {
+ } else if (!lookup_start_object->HasFastProperties()) {
// Attempt dictionary lookup.
if (V8_ENABLE_SWISS_NAME_DICTIONARY_BOOL) {
- SwissNameDictionary dictionary = holder->property_dictionary_swiss();
+ SwissNameDictionary dictionary =
+ lookup_start_object->property_dictionary_swiss();
InternalIndex entry = dictionary.FindEntry(isolate, *key);
if (entry.is_found() &&
(dictionary.DetailsAt(entry).kind() == kData)) {
return dictionary.ValueAt(entry);
}
} else {
- NameDictionary dictionary = holder->property_dictionary();
+ NameDictionary dictionary =
+ lookup_start_object->property_dictionary();
InternalIndex entry = dictionary.FindEntry(isolate, key);
if ((entry.is_found()) &&
(dictionary.DetailsAt(entry).kind() == kData)) {
@@ -754,22 +781,21 @@ RUNTIME_FUNCTION(Runtime_GetProperty) {
// transition elements to FAST_*_ELEMENTS to avoid excessive boxing of
// doubles for those future calls in the case that the elements would
// become PACKED_DOUBLE_ELEMENTS.
- Handle<JSObject> js_object = Handle<JSObject>::cast(holder_obj);
- ElementsKind elements_kind = js_object->GetElementsKind();
+ ElementsKind elements_kind = lookup_start_object->GetElementsKind();
if (IsDoubleElementsKind(elements_kind)) {
- if (Smi::ToInt(*key_obj) >= js_object->elements().length()) {
+ if (Smi::ToInt(*key_obj) >= lookup_start_object->elements().length()) {
elements_kind = IsHoleyElementsKind(elements_kind) ? HOLEY_ELEMENTS
: PACKED_ELEMENTS;
- JSObject::TransitionElementsKind(js_object, elements_kind);
+ JSObject::TransitionElementsKind(lookup_start_object, elements_kind);
}
} else {
DCHECK(IsSmiOrObjectElementsKind(elements_kind) ||
!IsFastElementsKind(elements_kind));
}
}
- } else if (holder_obj->IsString() && key_obj->IsSmi()) {
+ } else if (lookup_start_obj->IsString() && key_obj->IsSmi()) {
// Fast case for string indexing using [] with a smi index.
- Handle<String> str = Handle<String>::cast(holder_obj);
+ Handle<String> str = Handle<String>::cast(lookup_start_obj);
int index = Handle<Smi>::cast(key_obj)->value();
if (index >= 0 && index < str->length()) {
Factory* factory = isolate->factory();
@@ -780,8 +806,8 @@ RUNTIME_FUNCTION(Runtime_GetProperty) {
// Fall back to GetObjectProperty.
RETURN_RESULT_OR_FAILURE(
- isolate,
- Runtime::GetObjectProperty(isolate, holder_obj, key_obj, receiver_obj));
+ isolate, Runtime::GetObjectProperty(isolate, lookup_start_obj, key_obj,
+ receiver_obj));
}
RUNTIME_FUNCTION(Runtime_SetKeyedProperty) {
@@ -947,11 +973,16 @@ RUNTIME_FUNCTION(Runtime_NewObject) {
RUNTIME_FUNCTION(Runtime_GetDerivedMap) {
HandleScope scope(isolate);
- DCHECK_EQ(2, args.length());
+ DCHECK_EQ(3, args.length());
CONVERT_ARG_HANDLE_CHECKED(JSFunction, target, 0);
CONVERT_ARG_HANDLE_CHECKED(JSReceiver, new_target, 1);
- RETURN_RESULT_OR_FAILURE(
- isolate, JSFunction::GetDerivedMap(isolate, target, new_target));
+ CONVERT_ARG_HANDLE_CHECKED(Object, rab_gsab, 2);
+ if (rab_gsab->IsTrue()) {
+ return *JSFunction::GetDerivedRabGsabMap(isolate, target, new_target);
+ } else {
+ RETURN_RESULT_OR_FAILURE(
+ isolate, JSFunction::GetDerivedMap(isolate, target, new_target));
+ }
}
RUNTIME_FUNCTION(Runtime_CompleteInobjectSlackTrackingForMap) {
diff --git a/deps/v8/src/runtime/runtime-promise.cc b/deps/v8/src/runtime/runtime-promise.cc
index 54adc4c920..0ade310cfb 100644
--- a/deps/v8/src/runtime/runtime-promise.cc
+++ b/deps/v8/src/runtime/runtime-promise.cc
@@ -260,17 +260,18 @@ RUNTIME_FUNCTION(Runtime_ResolvePromise) {
// takes care of the Error-related construction, e.g., stack traces.
RUNTIME_FUNCTION(Runtime_ConstructAggregateErrorHelper) {
HandleScope scope(isolate);
- DCHECK_EQ(3, args.length());
+ DCHECK_EQ(4, args.length());
CONVERT_ARG_HANDLE_CHECKED(JSFunction, target, 0);
CONVERT_ARG_HANDLE_CHECKED(Object, new_target, 1);
CONVERT_ARG_HANDLE_CHECKED(Object, message, 2);
+ CONVERT_ARG_HANDLE_CHECKED(Object, options, 3);
DCHECK_EQ(*target, *isolate->aggregate_error_function());
Handle<Object> result;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, result,
- ErrorUtils::Construct(isolate, target, new_target, message));
+ ErrorUtils::Construct(isolate, target, new_target, message, options));
return *result;
}
@@ -299,6 +300,14 @@ RUNTIME_FUNCTION(Runtime_ConstructInternalAggregateErrorHelper) {
arg2 = args.at<Object>(3);
}
+ Handle<Object> options;
+ if (args.length() >= 5) {
+ CHECK(args[4].IsObject());
+ options = args.at<Object>(4);
+ } else {
+ options = isolate->factory()->undefined_value();
+ }
+
Handle<Object> message_string = MessageFormatter::Format(
isolate, MessageTemplate(message->value()), arg0, arg1, arg2);
@@ -306,8 +315,8 @@ RUNTIME_FUNCTION(Runtime_ConstructInternalAggregateErrorHelper) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, result,
ErrorUtils::Construct(isolate, isolate->aggregate_error_function(),
- isolate->aggregate_error_function(),
- message_string));
+ isolate->aggregate_error_function(), message_string,
+ options));
return *result;
}
diff --git a/deps/v8/src/runtime/runtime-regexp.cc b/deps/v8/src/runtime/runtime-regexp.cc
index d18602f58f..f80316e34d 100644
--- a/deps/v8/src/runtime/runtime-regexp.cc
+++ b/deps/v8/src/runtime/runtime-regexp.cc
@@ -1696,7 +1696,7 @@ RUNTIME_FUNCTION(Runtime_RegExpSplit) {
if (!result->IsNull(isolate)) return *factory->NewJSArray(0);
- Handle<FixedArray> elems = factory->NewUninitializedFixedArray(1);
+ Handle<FixedArray> elems = factory->NewFixedArray(1);
elems->set(0, *string);
return *factory->NewJSArrayWithElements(elems);
}
@@ -2004,5 +2004,13 @@ RUNTIME_FUNCTION(Runtime_IsRegExp) {
return isolate->heap()->ToBoolean(obj.IsJSRegExp());
}
+RUNTIME_FUNCTION(Runtime_RegExpStringFromFlags) {
+ HandleScope scope(isolate);
+ DCHECK_EQ(1, args.length());
+ CONVERT_ARG_CHECKED(JSRegExp, regexp, 0);
+ Handle<String> flags = JSRegExp::StringFromFlags(isolate, regexp.GetFlags());
+ return *flags;
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/runtime/runtime-scopes.cc b/deps/v8/src/runtime/runtime-scopes.cc
index 457f372955..e925e1f7f9 100644
--- a/deps/v8/src/runtime/runtime-scopes.cc
+++ b/deps/v8/src/runtime/runtime-scopes.cc
@@ -510,7 +510,7 @@ RUNTIME_FUNCTION(Runtime_NewStrictArguments) {
isolate->factory()->NewArgumentsObject(callee, argument_count);
if (argument_count) {
Handle<FixedArray> array =
- isolate->factory()->NewUninitializedFixedArray(argument_count);
+ isolate->factory()->NewFixedArray(argument_count);
DisallowGarbageCollection no_gc;
WriteBarrierMode mode = array->GetWriteBarrierMode(no_gc);
for (int i = 0; i < argument_count; i++) {
@@ -859,7 +859,7 @@ RUNTIME_FUNCTION(Runtime_StoreLookupSlot_SloppyHoisting) {
LanguageMode::kSloppy, lookup_flags));
}
-RUNTIME_FUNCTION(Runtime_StoreGlobalNoHoleCheckForReplLet) {
+RUNTIME_FUNCTION(Runtime_StoreGlobalNoHoleCheckForReplLetOrConst) {
HandleScope scope(isolate);
DCHECK_EQ(2, args.length());
CONVERT_ARG_HANDLE_CHECKED(String, name, 0);
diff --git a/deps/v8/src/runtime/runtime-strings.cc b/deps/v8/src/runtime/runtime-strings.cc
index 0acf6334d4..bd651c646c 100644
--- a/deps/v8/src/runtime/runtime-strings.cc
+++ b/deps/v8/src/runtime/runtime-strings.cc
@@ -315,7 +315,7 @@ RUNTIME_FUNCTION(Runtime_StringToArray) {
int position = 0;
if (s->IsFlat() && s->IsOneByteRepresentation()) {
// Try using cached chars where possible.
- elements = isolate->factory()->NewUninitializedFixedArray(length);
+ elements = isolate->factory()->NewFixedArray(length);
DisallowGarbageCollection no_gc;
String::FlatContent content = s->GetFlatContent(no_gc);
diff --git a/deps/v8/src/runtime/runtime-test-wasm.cc b/deps/v8/src/runtime/runtime-test-wasm.cc
index 9c07441de5..54976dcc05 100644
--- a/deps/v8/src/runtime/runtime-test-wasm.cc
+++ b/deps/v8/src/runtime/runtime-test-wasm.cc
@@ -158,8 +158,7 @@ RUNTIME_FUNCTION(Runtime_WasmTraceEnter) {
wasm::ModuleWireBytes wire_bytes =
wasm::ModuleWireBytes(frame->native_module()->wire_bytes());
wasm::WireBytesRef name_ref =
- module->lazily_generated_names.LookupFunctionName(
- wire_bytes, func_index, VectorOf(module->export_table));
+ module->lazily_generated_names.LookupFunctionName(wire_bytes, func_index);
wasm::WasmName name = wire_bytes.GetNameOrNull(name_ref);
wasm::WasmCode* code = frame->wasm_code();
@@ -423,14 +422,10 @@ RUNTIME_FUNCTION(Runtime_WasmTraceMemory) {
frame->wasm_instance().memory_object().array_buffer().backing_store());
int func_index = frame->function_index();
int pos = frame->position();
- // TODO(titzer): eliminate dependency on WasmModule definition here.
- int func_start =
- frame->wasm_instance().module()->functions[func_index].code.offset();
wasm::ExecutionTier tier = frame->wasm_code()->is_liftoff()
? wasm::ExecutionTier::kLiftoff
: wasm::ExecutionTier::kTurbofan;
- wasm::TraceMemoryOperation(tier, info, func_index, pos - func_start,
- mem_start);
+ wasm::TraceMemoryOperation(tier, info, func_index, pos, mem_start);
return ReadOnlyRoots(isolate).undefined_value();
}
diff --git a/deps/v8/src/runtime/runtime-test.cc b/deps/v8/src/runtime/runtime-test.cc
index 0dd7368e39..00a4124dce 100644
--- a/deps/v8/src/runtime/runtime-test.cc
+++ b/deps/v8/src/runtime/runtime-test.cc
@@ -4,6 +4,7 @@
#include "src/api/api-inl.h"
#include "src/base/platform/mutex.h"
+#include "src/baseline/baseline-osr-inl.h"
#include "src/codegen/assembler-inl.h"
#include "src/codegen/compiler.h"
#include "src/codegen/pending-optimization-table.h"
@@ -41,6 +42,11 @@ V8_WARN_UNUSED_RESULT Object CrashUnlessFuzzing(Isolate* isolate) {
return ReadOnlyRoots(isolate).undefined_value();
}
+// Returns |value| unless fuzzing is enabled, otherwise returns undefined_value.
+V8_WARN_UNUSED_RESULT Object ReturnFuzzSafe(Object value, Isolate* isolate) {
+ return FLAG_fuzzing ? ReadOnlyRoots(isolate).undefined_value() : value;
+}
+
// Assert that the given argument is a number within the Int32 range
// and convert it to int32_t. If the argument is not an Int32 we crash if not
// in fuzzing mode.
@@ -470,6 +476,37 @@ RUNTIME_FUNCTION(Runtime_OptimizeOsr) {
return ReadOnlyRoots(isolate).undefined_value();
}
+RUNTIME_FUNCTION(Runtime_BaselineOsr) {
+ HandleScope scope(isolate);
+ DCHECK(args.length() == 0 || args.length() == 1);
+
+ Handle<JSFunction> function;
+
+ // The optional parameter determines the frame being targeted.
+ int stack_depth = 0;
+ if (args.length() == 1) {
+ if (!args[0].IsSmi()) return CrashUnlessFuzzing(isolate);
+ stack_depth = args.smi_at(0);
+ }
+
+ // Find the JavaScript function on the top of the stack.
+ JavaScriptFrameIterator it(isolate);
+ while (!it.done() && stack_depth--) it.Advance();
+ if (!it.done()) function = handle(it.frame()->function(), isolate);
+ if (function.is_null()) return CrashUnlessFuzzing(isolate);
+ if (!FLAG_sparkplug || !FLAG_use_osr) {
+ return ReadOnlyRoots(isolate).undefined_value();
+ }
+ if (!it.frame()->is_unoptimized()) {
+ return ReadOnlyRoots(isolate).undefined_value();
+ }
+
+ UnoptimizedFrame* frame = UnoptimizedFrame::cast(it.frame());
+ OSRInterpreterFrameToBaseline(isolate, function, frame);
+
+ return ReadOnlyRoots(isolate).undefined_value();
+}
+
RUNTIME_FUNCTION(Runtime_NeverOptimizeFunction) {
HandleScope scope(isolate);
DCHECK_EQ(1, args.length());
@@ -576,6 +613,11 @@ RUNTIME_FUNCTION(Runtime_GetOptimizationStatus) {
if (frame->is_optimized()) {
status |=
static_cast<int>(OptimizationStatus::kTopmostFrameIsTurboFanned);
+ } else if (frame->is_interpreted()) {
+ status |=
+ static_cast<int>(OptimizationStatus::kTopmostFrameIsInterpreted);
+ } else if (frame->is_baseline()) {
+ status |= static_cast<int>(OptimizationStatus::kTopmostFrameIsBaseline);
}
}
@@ -678,6 +720,7 @@ int FixedArrayLenFromSize(int size) {
}
void FillUpOneNewSpacePage(Isolate* isolate, Heap* heap) {
+ DCHECK(!FLAG_single_generation);
PauseAllocationObserversScope pause_observers(heap);
NewSpace* space = heap->new_space();
// We cannot rely on `space->limit()` to point to the end of the current page
@@ -990,6 +1033,25 @@ RUNTIME_FUNCTION(Runtime_InYoungGeneration) {
return isolate->heap()->ToBoolean(ObjectInYoungGeneration(obj));
}
+// Force pretenuring for the allocation site the passed object belongs to.
+RUNTIME_FUNCTION(Runtime_PretenureAllocationSite) {
+ DisallowGarbageCollection no_gc;
+
+ if (args.length() != 1) return CrashUnlessFuzzing(isolate);
+ CONVERT_ARG_CHECKED(Object, arg, 0);
+ if (!arg.IsJSObject()) return CrashUnlessFuzzing(isolate);
+ JSObject object = JSObject::cast(arg);
+
+ Heap* heap = object.GetHeap();
+ AllocationMemento memento =
+ heap->FindAllocationMemento<Heap::kForRuntime>(object.map(), object);
+ if (memento.is_null())
+ return ReturnFuzzSafe(ReadOnlyRoots(isolate).false_value(), isolate);
+ AllocationSite site = memento.GetAllocationSite();
+ heap->PretenureAllocationSiteOnNextCollection(site);
+ return ReturnFuzzSafe(ReadOnlyRoots(isolate).true_value(), isolate);
+}
+
namespace {
v8::ModifyCodeGenerationFromStringsResult DisallowCodegenFromStringsCallback(
@@ -1257,6 +1319,7 @@ RUNTIME_FUNCTION(Runtime_EnableCodeLoggingForTesting) {
Handle<String> source) final {}
void CodeMoveEvent(AbstractCode from, AbstractCode to) final {}
void SharedFunctionInfoMoveEvent(Address from, Address to) final {}
+ void NativeContextMoveEvent(Address from, Address to) final {}
void CodeMovingGCEvent() final {}
void CodeDisableOptEvent(Handle<AbstractCode> code,
Handle<SharedFunctionInfo> shared) final {}
@@ -1294,5 +1357,11 @@ RUNTIME_FUNCTION(Runtime_NewRegExpWithBacktrackLimit) {
isolate, JSRegExp::New(isolate, pattern, flags, backtrack_limit));
}
+RUNTIME_FUNCTION(Runtime_Is64Bit) {
+ SealHandleScope shs(isolate);
+ DCHECK_EQ(0, args.length());
+ return isolate->heap()->ToBoolean(kSystemPointerSize == 8);
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/runtime/runtime-typedarray.cc b/deps/v8/src/runtime/runtime-typedarray.cc
index b73cfc9769..5d0fc35944 100644
--- a/deps/v8/src/runtime/runtime-typedarray.cc
+++ b/deps/v8/src/runtime/runtime-typedarray.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "src/base/atomicops.h"
#include "src/common/message-template.h"
#include "src/execution/arguments-inl.h"
#include "src/heap/factory.h"
@@ -52,6 +53,15 @@ RUNTIME_FUNCTION(Runtime_TypedArrayGetBuffer) {
return *holder->GetBuffer();
}
+RUNTIME_FUNCTION(Runtime_GrowableSharedArrayBufferByteLength) {
+ HandleScope scope(isolate);
+ DCHECK_EQ(1, args.length());
+ CONVERT_ARG_HANDLE_CHECKED(JSArrayBuffer, array_buffer, 0);
+
+ CHECK_EQ(0, array_buffer->byte_length());
+ size_t byte_length = array_buffer->GetBackingStore()->byte_length();
+ return *isolate->factory()->NewNumberFromSize(byte_length);
+}
namespace {
@@ -84,6 +94,14 @@ RUNTIME_FUNCTION(Runtime_TypedArraySortFast) {
CONVERT_ARG_HANDLE_CHECKED(JSTypedArray, array, 0);
DCHECK(!array->WasDetached());
+#if V8_OS_LINUX
+ if (FLAG_multi_mapped_mock_allocator) {
+ // Sorting is meaningless with the mock allocator, and std::sort
+ // might crash (because aliasing elements violate its assumptions).
+ return *array;
+ }
+#endif
+
size_t length = array->length();
DCHECK_LT(1, length);
@@ -108,7 +126,8 @@ RUNTIME_FUNCTION(Runtime_TypedArraySortFast) {
offheap_copy.resize(bytes);
data_copy_ptr = &offheap_copy[0];
}
- std::memcpy(data_copy_ptr, static_cast<void*>(array->DataPtr()), bytes);
+ base::Relaxed_Memcpy(static_cast<base::Atomic8*>(data_copy_ptr),
+ static_cast<base::Atomic8*>(array->DataPtr()), bytes);
}
DisallowGarbageCollection no_gc;
@@ -147,7 +166,8 @@ RUNTIME_FUNCTION(Runtime_TypedArraySortFast) {
DCHECK_NOT_NULL(data_copy_ptr);
DCHECK_NE(array_copy.is_null(), offheap_copy.empty());
const size_t bytes = array->byte_length();
- std::memcpy(static_cast<void*>(array->DataPtr()), data_copy_ptr, bytes);
+ base::Relaxed_Memcpy(static_cast<base::Atomic8*>(array->DataPtr()),
+ static_cast<base::Atomic8*>(data_copy_ptr), bytes);
}
return *array;
diff --git a/deps/v8/src/runtime/runtime.cc b/deps/v8/src/runtime/runtime.cc
index c1b287cae3..9e553b12af 100644
--- a/deps/v8/src/runtime/runtime.cc
+++ b/deps/v8/src/runtime/runtime.cc
@@ -209,6 +209,7 @@ bool Runtime::IsAllowListedForFuzzing(FunctionId id) {
case Runtime::kOptimizeFunctionOnNextCall:
case Runtime::kOptimizeOsr:
case Runtime::kPrepareFunctionForOptimization:
+ case Runtime::kPretenureAllocationSite:
case Runtime::kSetAllocationTimeout:
case Runtime::kSimulateNewspaceFull:
return true;
@@ -218,8 +219,10 @@ bool Runtime::IsAllowListedForFuzzing(FunctionId id) {
case Runtime::kGetOptimizationStatus:
case Runtime::kHeapObjectVerify:
case Runtime::kIsBeingInterpreted:
+ case Runtime::kVerifyType:
return !FLAG_allow_natives_for_differential_fuzzing;
case Runtime::kCompileBaseline:
+ case Runtime::kBaselineOsr:
return FLAG_sparkplug;
default:
return false;
diff --git a/deps/v8/src/runtime/runtime.h b/deps/v8/src/runtime/runtime.h
index 578156f094..eea742f2c9 100644
--- a/deps/v8/src/runtime/runtime.h
+++ b/deps/v8/src/runtime/runtime.h
@@ -115,7 +115,7 @@ namespace internal {
F(NotifyDeoptimized, 0, 1) \
F(ObserveNode, 1, 1) \
F(ResolvePossiblyDirectEval, 6, 1) \
- F(TryInstallNCICode, 1, 1)
+ F(VerifyType, 1, 1)
#define FOR_EACH_INTRINSIC_DATE(F, I) F(DateCurrentTime, 0, 1)
@@ -343,7 +343,7 @@ namespace internal {
I(ToNumber, 1, 1) \
F(ToNumeric, 1, 1) \
I(ToObject, 1, 1) \
- I(ToString, 1, 1) \
+ F(ToString, 1, 1) \
F(TryMigrateInstance, 1, 1) \
F(SwissTableAdd, 4, 1) \
F(SwissTableAllocate, 1, 1) \
@@ -383,8 +383,8 @@ namespace internal {
F(ResolvePromise, 2, 1) \
F(PromiseRejectAfterResolved, 2, 1) \
F(PromiseResolveAfterResolved, 2, 1) \
- F(ConstructAggregateErrorHelper, 3, 1) \
- F(ConstructInternalAggregateErrorHelper, -1 /* <= 4*/, 1)
+ F(ConstructAggregateErrorHelper, 4, 1) \
+ F(ConstructInternalAggregateErrorHelper, -1 /* <= 5*/, 1)
#define FOR_EACH_INTRINSIC_PROXY(F, I) \
F(CheckProxyGetSetTrapResult, 2, 1) \
@@ -407,31 +407,32 @@ namespace internal {
F(RegExpInitializeAndCompile, 3, 1) \
F(RegExpReplaceRT, 3, 1) \
F(RegExpSplit, 3, 1) \
+ F(RegExpStringFromFlags, 1, 1) \
F(StringReplaceNonGlobalRegExpWithFunction, 3, 1) \
F(StringSplit, 3, 1)
-#define FOR_EACH_INTRINSIC_SCOPES(F, I) \
- F(DeclareEvalFunction, 2, 1) \
- F(DeclareEvalVar, 1, 1) \
- F(DeclareGlobals, 2, 1) \
- F(DeclareModuleExports, 2, 1) \
- F(DeleteLookupSlot, 1, 1) \
- F(LoadLookupSlot, 1, 1) \
- F(LoadLookupSlotInsideTypeof, 1, 1) \
- \
- F(NewClosure, 2, 1) \
- F(NewClosure_Tenured, 2, 1) \
- F(NewFunctionContext, 1, 1) \
- F(NewRestParameter, 1, 1) \
- F(NewSloppyArguments, 1, 1) \
- F(NewStrictArguments, 1, 1) \
- F(PushBlockContext, 1, 1) \
- F(PushCatchContext, 2, 1) \
- F(PushWithContext, 2, 1) \
- F(StoreGlobalNoHoleCheckForReplLet, 2, 1) \
- F(StoreLookupSlot_Sloppy, 2, 1) \
- F(StoreLookupSlot_SloppyHoisting, 2, 1) \
- F(StoreLookupSlot_Strict, 2, 1) \
+#define FOR_EACH_INTRINSIC_SCOPES(F, I) \
+ F(DeclareEvalFunction, 2, 1) \
+ F(DeclareEvalVar, 1, 1) \
+ F(DeclareGlobals, 2, 1) \
+ F(DeclareModuleExports, 2, 1) \
+ F(DeleteLookupSlot, 1, 1) \
+ F(LoadLookupSlot, 1, 1) \
+ F(LoadLookupSlotInsideTypeof, 1, 1) \
+ \
+ F(NewClosure, 2, 1) \
+ F(NewClosure_Tenured, 2, 1) \
+ F(NewFunctionContext, 1, 1) \
+ F(NewRestParameter, 1, 1) \
+ F(NewSloppyArguments, 1, 1) \
+ F(NewStrictArguments, 1, 1) \
+ F(PushBlockContext, 1, 1) \
+ F(PushCatchContext, 2, 1) \
+ F(PushWithContext, 2, 1) \
+ F(StoreGlobalNoHoleCheckForReplLetOrConst, 2, 1) \
+ F(StoreLookupSlot_Sloppy, 2, 1) \
+ F(StoreLookupSlot_SloppyHoisting, 2, 1) \
+ F(StoreLookupSlot_Strict, 2, 1) \
F(ThrowConstAssignError, 0, 1)
#define FOR_EACH_INTRINSIC_STRINGS(F, I) \
@@ -460,104 +461,108 @@ namespace internal {
F(SymbolDescriptiveString, 1, 1) \
F(SymbolIsPrivate, 1, 1)
-#define FOR_EACH_INTRINSIC_TEST(F, I) \
- F(Abort, 1, 1) \
- F(AbortJS, 1, 1) \
- F(AbortCSAAssert, 1, 1) \
- F(ArraySpeciesProtector, 0, 1) \
- F(ClearFunctionFeedback, 1, 1) \
- F(ClearMegamorphicStubCache, 0, 1) \
- F(CompleteInobjectSlackTracking, 1, 1) \
- F(ConstructConsString, 2, 1) \
- F(ConstructDouble, 2, 1) \
- F(ConstructSlicedString, 2, 1) \
- F(DebugPrint, 1, 1) \
- F(DebugPrintPtr, 1, 1) \
- F(DebugTrace, 0, 1) \
- F(DebugTrackRetainingPath, -1, 1) \
- F(DeoptimizeFunction, 1, 1) \
- F(DisallowCodegenFromStrings, 1, 1) \
- F(DisassembleFunction, 1, 1) \
- F(DynamicCheckMapsEnabled, 0, 1) \
- F(IsTopTierTurboprop, 0, 1) \
- F(IsMidTierTurboprop, 0, 1) \
- F(EnableCodeLoggingForTesting, 0, 1) \
- F(EnsureFeedbackVectorForFunction, 1, 1) \
- F(GetCallable, 0, 1) \
- F(GetInitializerFunction, 1, 1) \
- F(GetOptimizationStatus, -1, 1) \
- F(GetUndetectable, 0, 1) \
- F(GlobalPrint, 1, 1) \
- F(HasDictionaryElements, 1, 1) \
- F(HasDoubleElements, 1, 1) \
- F(HasElementsInALargeObjectSpace, 1, 1) \
- F(HasFastElements, 1, 1) \
- F(HasFastProperties, 1, 1) \
- F(HasOwnConstDataProperty, 2, 1) \
- F(HasFixedBigInt64Elements, 1, 1) \
- F(HasFixedBigUint64Elements, 1, 1) \
- F(HasFixedFloat32Elements, 1, 1) \
- F(HasFixedFloat64Elements, 1, 1) \
- F(HasFixedInt16Elements, 1, 1) \
- F(HasFixedInt32Elements, 1, 1) \
- F(HasFixedInt8Elements, 1, 1) \
- F(HasFixedUint16Elements, 1, 1) \
- F(HasFixedUint32Elements, 1, 1) \
- F(HasFixedUint8ClampedElements, 1, 1) \
- F(HasFixedUint8Elements, 1, 1) \
- F(HasHoleyElements, 1, 1) \
- F(HasObjectElements, 1, 1) \
- F(HasPackedElements, 1, 1) \
- F(HasSloppyArgumentsElements, 1, 1) \
- F(HasSmiElements, 1, 1) \
- F(HasSmiOrObjectElements, 1, 1) \
- F(HaveSameMap, 2, 1) \
- F(HeapObjectVerify, 1, 1) \
- F(ICsAreEnabled, 0, 1) \
- F(InLargeObjectSpace, 1, 1) \
- F(InYoungGeneration, 1, 1) \
- F(IsBeingInterpreted, 0, 1) \
- F(IsConcurrentRecompilationSupported, 0, 1) \
- F(IsDictPropertyConstTrackingEnabled, 0, 1) \
- F(RegexpHasBytecode, 2, 1) \
- F(RegexpHasNativeCode, 2, 1) \
- F(RegexpTypeTag, 1, 1) \
- F(RegexpIsUnmodified, 1, 1) \
- F(MapIteratorProtector, 0, 1) \
- F(ArrayIteratorProtector, 0, 1) \
- F(NeverOptimizeFunction, 1, 1) \
- F(NotifyContextDisposed, 0, 1) \
- F(OptimizeFunctionOnNextCall, -1, 1) \
- F(TierupFunctionOnNextCall, -1, 1) \
- F(OptimizeOsr, -1, 1) \
- F(NewRegExpWithBacktrackLimit, 3, 1) \
- F(PrepareFunctionForOptimization, -1, 1) \
- F(PrintWithNameForAssert, 2, 1) \
- F(RunningInSimulator, 0, 1) \
- F(RuntimeEvaluateREPL, 1, 1) \
- F(SerializeDeserializeNow, 0, 1) \
- F(SetAllocationTimeout, -1 /* 2 || 3 */, 1) \
- F(SetForceSlowPath, 1, 1) \
- F(SetIteratorProtector, 0, 1) \
- F(SimulateNewspaceFull, 0, 1) \
- F(ScheduleGCInStackCheck, 0, 1) \
- F(StringIteratorProtector, 0, 1) \
- F(SystemBreak, 0, 1) \
- F(TraceEnter, 0, 1) \
- F(TraceExit, 1, 1) \
- F(TurbofanStaticAssert, 1, 1) \
- F(TypedArraySpeciesProtector, 0, 1) \
- F(UnblockConcurrentRecompilation, 0, 1) \
- I(DeoptimizeNow, 0, 1) \
- F(PromiseSpeciesProtector, 0, 1) \
- F(IsConcatSpreadableProtector, 0, 1) \
- F(RegExpSpeciesProtector, 0, 1)
-
-#define FOR_EACH_INTRINSIC_TYPEDARRAY(F, I) \
- F(ArrayBufferDetach, 1, 1) \
- F(TypedArrayCopyElements, 3, 1) \
- F(TypedArrayGetBuffer, 1, 1) \
- F(TypedArraySet, 2, 1) \
+#define FOR_EACH_INTRINSIC_TEST(F, I) \
+ F(Abort, 1, 1) \
+ F(AbortJS, 1, 1) \
+ F(AbortCSAAssert, 1, 1) \
+ F(ArraySpeciesProtector, 0, 1) \
+ F(BaselineOsr, -1, 1) \
+ F(ClearFunctionFeedback, 1, 1) \
+ F(ClearMegamorphicStubCache, 0, 1) \
+ F(CompleteInobjectSlackTracking, 1, 1) \
+ F(ConstructConsString, 2, 1) \
+ F(ConstructDouble, 2, 1) \
+ F(ConstructSlicedString, 2, 1) \
+ F(DebugPrint, 1, 1) \
+ F(DebugPrintPtr, 1, 1) \
+ F(DebugTrace, 0, 1) \
+ F(DebugTrackRetainingPath, -1, 1) \
+ F(DeoptimizeFunction, 1, 1) \
+ F(DisallowCodegenFromStrings, 1, 1) \
+ F(DisassembleFunction, 1, 1) \
+ F(DynamicCheckMapsEnabled, 0, 1) \
+ F(IsTopTierTurboprop, 0, 1) \
+ F(IsMidTierTurboprop, 0, 1) \
+ F(EnableCodeLoggingForTesting, 0, 1) \
+ F(EnsureFeedbackVectorForFunction, 1, 1) \
+ F(GetCallable, 0, 1) \
+ F(GetInitializerFunction, 1, 1) \
+ F(GetOptimizationStatus, -1, 1) \
+ F(GetUndetectable, 0, 1) \
+ F(GlobalPrint, 1, 1) \
+ F(HasDictionaryElements, 1, 1) \
+ F(HasDoubleElements, 1, 1) \
+ F(HasElementsInALargeObjectSpace, 1, 1) \
+ F(HasFastElements, 1, 1) \
+ F(HasFastProperties, 1, 1) \
+ F(HasOwnConstDataProperty, 2, 1) \
+ F(HasFixedBigInt64Elements, 1, 1) \
+ F(HasFixedBigUint64Elements, 1, 1) \
+ F(HasFixedFloat32Elements, 1, 1) \
+ F(HasFixedFloat64Elements, 1, 1) \
+ F(HasFixedInt16Elements, 1, 1) \
+ F(HasFixedInt32Elements, 1, 1) \
+ F(HasFixedInt8Elements, 1, 1) \
+ F(HasFixedUint16Elements, 1, 1) \
+ F(HasFixedUint32Elements, 1, 1) \
+ F(HasFixedUint8ClampedElements, 1, 1) \
+ F(HasFixedUint8Elements, 1, 1) \
+ F(HasHoleyElements, 1, 1) \
+ F(HasObjectElements, 1, 1) \
+ F(HasPackedElements, 1, 1) \
+ F(HasSloppyArgumentsElements, 1, 1) \
+ F(HasSmiElements, 1, 1) \
+ F(HasSmiOrObjectElements, 1, 1) \
+ F(HaveSameMap, 2, 1) \
+ F(HeapObjectVerify, 1, 1) \
+ F(ICsAreEnabled, 0, 1) \
+ F(InLargeObjectSpace, 1, 1) \
+ F(InYoungGeneration, 1, 1) \
+ F(IsBeingInterpreted, 0, 1) \
+ F(IsConcurrentRecompilationSupported, 0, 1) \
+ F(IsDictPropertyConstTrackingEnabled, 0, 1) \
+ F(RegexpHasBytecode, 2, 1) \
+ F(RegexpHasNativeCode, 2, 1) \
+ F(RegexpTypeTag, 1, 1) \
+ F(RegexpIsUnmodified, 1, 1) \
+ F(MapIteratorProtector, 0, 1) \
+ F(ArrayIteratorProtector, 0, 1) \
+ F(NeverOptimizeFunction, 1, 1) \
+ F(NotifyContextDisposed, 0, 1) \
+ F(OptimizeFunctionOnNextCall, -1, 1) \
+ F(TierupFunctionOnNextCall, -1, 1) \
+ F(OptimizeOsr, -1, 1) \
+ F(NewRegExpWithBacktrackLimit, 3, 1) \
+ F(PrepareFunctionForOptimization, -1, 1) \
+ F(PretenureAllocationSite, 1, 1) \
+ F(PrintWithNameForAssert, 2, 1) \
+ F(RunningInSimulator, 0, 1) \
+ F(RuntimeEvaluateREPL, 1, 1) \
+ F(SerializeDeserializeNow, 0, 1) \
+ F(SetAllocationTimeout, -1 /* 2 || 3 */, 1) \
+ F(SetForceSlowPath, 1, 1) \
+ F(SetIteratorProtector, 0, 1) \
+ F(SimulateNewspaceFull, 0, 1) \
+ F(ScheduleGCInStackCheck, 0, 1) \
+ F(StringIteratorProtector, 0, 1) \
+ F(SystemBreak, 0, 1) \
+ F(TraceEnter, 0, 1) \
+ F(TraceExit, 1, 1) \
+ F(TurbofanStaticAssert, 1, 1) \
+ F(TypedArraySpeciesProtector, 0, 1) \
+ F(UnblockConcurrentRecompilation, 0, 1) \
+ I(DeoptimizeNow, 0, 1) \
+ F(PromiseSpeciesProtector, 0, 1) \
+ F(IsConcatSpreadableProtector, 0, 1) \
+ F(RegExpSpeciesProtector, 0, 1) \
+ F(Is64Bit, 0, 1)
+
+#define FOR_EACH_INTRINSIC_TYPEDARRAY(F, I) \
+ F(ArrayBufferDetach, 1, 1) \
+ F(GrowableSharedArrayBufferByteLength, 1, 1) \
+ F(TypedArrayCopyElements, 3, 1) \
+ F(TypedArrayGetBuffer, 1, 1) \
+ F(TypedArraySet, 2, 1) \
F(TypedArraySortFast, 1, 1)
#define FOR_EACH_INTRINSIC_WASM(F, I) \
@@ -784,9 +789,10 @@ class Runtime : public AllStatic {
Handle<Object> value, StoreOrigin store_origin,
Maybe<ShouldThrow> should_throw = Nothing<ShouldThrow>());
- // When "receiver" is not passed, it defaults to "holder".
+ // When "receiver" is not passed, it defaults to "lookup_start_object".
V8_EXPORT_PRIVATE V8_WARN_UNUSED_RESULT static MaybeHandle<Object>
- GetObjectProperty(Isolate* isolate, Handle<Object> holder, Handle<Object> key,
+ GetObjectProperty(Isolate* isolate, Handle<Object> lookup_start_object,
+ Handle<Object> key,
Handle<Object> receiver = Handle<Object>(),
bool* is_found = nullptr);
@@ -862,6 +868,8 @@ enum class OptimizationStatus {
kLiteMode = 1 << 12,
kMarkedForDeoptimization = 1 << 13,
kBaseline = 1 << 14,
+ kTopmostFrameIsInterpreted = 1 << 15,
+ kTopmostFrameIsBaseline = 1 << 16,
};
} // namespace internal
diff --git a/deps/v8/src/sanitizer/asan.h b/deps/v8/src/sanitizer/asan.h
deleted file mode 100644
index 0381e5a4c4..0000000000
--- a/deps/v8/src/sanitizer/asan.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-// AddressSanitizer support.
-
-#ifndef V8_SANITIZER_ASAN_H_
-#define V8_SANITIZER_ASAN_H_
-
-#include "src/base/macros.h"
-#include "src/common/globals.h"
-
-#ifdef V8_USE_ADDRESS_SANITIZER
-
-#include <sanitizer/asan_interface.h>
-
-#else // !V8_USE_ADDRESS_SANITIZER
-
-#define ASAN_POISON_MEMORY_REGION(start, size) \
- static_assert(std::is_pointer<decltype(start)>::value && \
- std::is_convertible<decltype(size), size_t>::value, \
- "static type violation")
-#define ASAN_UNPOISON_MEMORY_REGION(start, size) \
- ASAN_POISON_MEMORY_REGION(start, size)
-
-#endif // V8_USE_ADDRESS_SANITIZER
-
-#endif // V8_SANITIZER_ASAN_H_
diff --git a/deps/v8/src/sanitizer/msan.h b/deps/v8/src/sanitizer/msan.h
deleted file mode 100644
index 01e774e7e4..0000000000
--- a/deps/v8/src/sanitizer/msan.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2013 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.
-
-// MemorySanitizer support.
-
-#ifndef V8_SANITIZER_MSAN_H_
-#define V8_SANITIZER_MSAN_H_
-
-#include "src/base/macros.h"
-#include "src/common/globals.h"
-
-#ifdef V8_USE_MEMORY_SANITIZER
-
-#include <sanitizer/msan_interface.h>
-
-// Marks a memory range as uninitialized, as if it was allocated here.
-#define MSAN_ALLOCATED_UNINITIALIZED_MEMORY(p, s) \
- __msan_allocated_memory(reinterpret_cast<const void*>(p), (s))
-// Marks a memory range as initialized.
-#define MSAN_MEMORY_IS_INITIALIZED(p, s) \
- __msan_unpoison(reinterpret_cast<const void*>(p), (s))
-
-#else // !V8_USE_MEMORY_SANITIZER
-
-#define MSAN_ALLOCATED_UNINITIALIZED_MEMORY(p, s) \
- static_assert((std::is_pointer<decltype(p)>::value || \
- std::is_same<v8::internal::Address, decltype(p)>::value) && \
- std::is_convertible<decltype(s), size_t>::value, \
- "static type violation")
-#define MSAN_MEMORY_IS_INITIALIZED(p, s) \
- MSAN_ALLOCATED_UNINITIALIZED_MEMORY(p, s)
-
-#endif // V8_USE_MEMORY_SANITIZER
-
-#endif // V8_SANITIZER_MSAN_H_
diff --git a/deps/v8/src/sanitizer/tsan.h b/deps/v8/src/sanitizer/tsan.h
deleted file mode 100644
index 0013b91bfc..0000000000
--- a/deps/v8/src/sanitizer/tsan.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2017 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_SANITIZER_TSAN_H_
-#define V8_SANITIZER_TSAN_H_
-
-namespace v8 {
-namespace base {
-
-// This file contains annotations for ThreadSanitizer (TSan), a race detector.
-// See
-// https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interface_ann.cc
-
-#if THREAD_SANITIZER
-
-#define TSAN_ANNOTATE_IGNORE_READS_BEGIN \
- v8::base::AnnotateIgnoreReadsBegin(__FILE__, __LINE__)
-#define TSAN_ANNOTATE_IGNORE_READS_END \
- v8::base::AnnotateIgnoreReadsEnd(__FILE__, __LINE__)
-#define TSAN_ANNOTATE_IGNORE_WRITES_BEGIN \
- v8::base::AnnotateIgnoreWritesBegin(__FILE__, __LINE__)
-#define TSAN_ANNOTATE_IGNORE_WRITES_END \
- v8::base::AnnotateIgnoreWritesEnd(__FILE__, __LINE__)
-
-extern "C" {
-
-void AnnotateIgnoreReadsBegin(const char* file, int line);
-void AnnotateIgnoreReadsEnd(const char* file, int line);
-void AnnotateIgnoreWritesBegin(const char* file, int line);
-void AnnotateIgnoreWritesEnd(const char* file, int line);
-
-} // extern "C"
-
-#else
-
-#define TSAN_ANNOTATE_IGNORE_READS_BEGIN ((void)0)
-#define TSAN_ANNOTATE_IGNORE_READS_END ((void)0)
-#define TSAN_ANNOTATE_IGNORE_WRITES_BEGIN ((void)0)
-#define TSAN_ANNOTATE_IGNORE_WRITES_END ((void)0)
-
-#endif
-
-} // namespace base
-} // namespace v8
-
-#endif // V8_SANITIZER_TSAN_H_
diff --git a/deps/v8/src/snapshot/code-serializer.cc b/deps/v8/src/snapshot/code-serializer.cc
index a4641baabf..3725b267f5 100644
--- a/deps/v8/src/snapshot/code-serializer.cc
+++ b/deps/v8/src/snapshot/code-serializer.cc
@@ -44,8 +44,7 @@ ScriptCompiler::CachedData* CodeSerializer::Serialize(
Isolate* isolate = info->GetIsolate();
TRACE_EVENT_CALL_STATS_SCOPED(isolate, "v8", "V8.Execute");
HistogramTimerScope histogram_timer(isolate->counters()->compile_serialize());
- RuntimeCallTimerScope runtimeTimer(isolate,
- RuntimeCallCounterId::kCompileSerialize);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kCompileSerialize);
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.CompileSerialize");
base::ElapsedTimer timer;
diff --git a/deps/v8/src/snapshot/context-deserializer.cc b/deps/v8/src/snapshot/context-deserializer.cc
index 04756b5ffe..ad109bacca 100644
--- a/deps/v8/src/snapshot/context-deserializer.cc
+++ b/deps/v8/src/snapshot/context-deserializer.cc
@@ -62,9 +62,11 @@ void ContextDeserializer::SetupOffHeapArrayBufferBackingStores() {
uint32_t store_index = buffer->GetBackingStoreRefForDeserialization();
auto bs = backing_store(store_index);
buffer->AllocateExternalPointerEntries(isolate());
+ // TODO(v8:11111): Support RAB / GSAB.
+ CHECK(!buffer->is_resizable());
SharedFlag shared =
bs && bs->is_shared() ? SharedFlag::kShared : SharedFlag::kNotShared;
- buffer->Setup(shared, bs);
+ buffer->Setup(shared, ResizableFlag::kNotResizable, bs);
}
}
diff --git a/deps/v8/src/snapshot/deserializer.cc b/deps/v8/src/snapshot/deserializer.cc
index ecfa889f1e..7756580c83 100644
--- a/deps/v8/src/snapshot/deserializer.cc
+++ b/deps/v8/src/snapshot/deserializer.cc
@@ -464,6 +464,9 @@ void Deserializer::PostProcessNewObject(Handle<Map> map, Handle<HeapObject> obj,
DCHECK(InstanceTypeChecker::IsStrongDescriptorArray(instance_type));
Handle<DescriptorArray> descriptors = Handle<DescriptorArray>::cast(obj);
new_descriptor_arrays_.push_back(descriptors);
+ } else if (InstanceTypeChecker::IsNativeContext(instance_type)) {
+ Handle<NativeContext> context = Handle<NativeContext>::cast(obj);
+ context->AllocateExternalPointerEntries(isolate());
}
// Check alignment.
diff --git a/deps/v8/src/snapshot/embedded/embedded-data.cc b/deps/v8/src/snapshot/embedded/embedded-data.cc
index 2a0549cfbb..fb3883a410 100644
--- a/deps/v8/src/snapshot/embedded/embedded-data.cc
+++ b/deps/v8/src/snapshot/embedded/embedded-data.cc
@@ -6,6 +6,7 @@
#include "src/codegen/assembler-inl.h"
#include "src/codegen/callable.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/objects/objects-inl.h"
#include "src/snapshot/snapshot-utils.h"
#include "src/snapshot/snapshot.h"
@@ -137,6 +138,9 @@ void InstructionStream::CreateOffHeapInstructionStream(Isolate* isolate,
// in the binary) and what we are currently setting up here (where the blob is
// on the native heap).
std::memcpy(allocated_code_bytes, d.code(), d.code_size());
+ if (FLAG_experimental_flush_embedded_blob_icache) {
+ FlushInstructionCache(allocated_code_bytes, d.code_size());
+ }
CHECK(SetPermissions(page_allocator, allocated_code_bytes,
allocation_code_size, PageAllocator::kReadExecute));
@@ -184,14 +188,15 @@ bool BuiltinAliasesOffHeapTrampolineRegister(Isolate* isolate, Code code) {
return false;
}
+ if (CallInterfaceDescriptor::ContextRegister() ==
+ kOffHeapTrampolineRegister) {
+ return true;
+ }
+
Callable callable = Builtins::CallableFor(
isolate, static_cast<Builtins::Name>(code.builtin_index()));
CallInterfaceDescriptor descriptor = callable.descriptor();
- if (descriptor.ContextRegister() == kOffHeapTrampolineRegister) {
- return true;
- }
-
for (int i = 0; i < descriptor.GetRegisterParameterCount(); i++) {
Register reg = descriptor.GetRegisterParameter(i);
if (reg == kOffHeapTrampolineRegister) return true;
@@ -213,7 +218,8 @@ void FinalizeEmbeddedCodeTargets(Isolate* isolate, EmbeddedData* blob) {
#if defined(V8_TARGET_ARCH_X64) || defined(V8_TARGET_ARCH_ARM64) || \
defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) || \
- defined(V8_TARGET_ARCH_IA32) || defined(V8_TARGET_ARCH_S390)
+ defined(V8_TARGET_ARCH_IA32) || defined(V8_TARGET_ARCH_S390) || \
+ defined(V8_TARGET_ARCH_RISCV64)
// On these platforms we emit relative builtin-to-builtin
// jumps for isolate independent builtins in the snapshot. This fixes up the
// relative jumps to the right offsets in the snapshot.
@@ -453,10 +459,9 @@ void EmbeddedData::PrintStatistics() const {
const int k99th = kCount * 0.99;
PrintF("EmbeddedData:\n");
- PrintF(" Total size: %d\n",
+ PrintF(" Total size: %d\n",
static_cast<int>(code_size() + data_size()));
- PrintF(" Data size: %d\n",
- static_cast<int>(data_size()));
+ PrintF(" Data size: %d\n", static_cast<int>(data_size()));
PrintF(" Code size: %d\n", static_cast<int>(code_size()));
PrintF(" Instruction size (50th percentile): %d\n", sizes[k50th]);
PrintF(" Instruction size (75th percentile): %d\n", sizes[k75th]);
diff --git a/deps/v8/src/snapshot/embedded/embedded-data.h b/deps/v8/src/snapshot/embedded/embedded-data.h
index 6518c38d02..12f524d154 100644
--- a/deps/v8/src/snapshot/embedded/embedded-data.h
+++ b/deps/v8/src/snapshot/embedded/embedded-data.h
@@ -9,6 +9,7 @@
#include "src/builtins/builtins.h"
#include "src/common/globals.h"
#include "src/execution/isolate.h"
+#include "src/heap/code-range.h"
namespace v8 {
namespace internal {
@@ -62,6 +63,13 @@ class EmbeddedData final {
isolate->embedded_blob_data(), isolate->embedded_blob_data_size());
}
+ static EmbeddedData FromBlob(CodeRange* code_range) {
+ return EmbeddedData(code_range->embedded_blob_code_copy(),
+ Isolate::CurrentEmbeddedBlobCodeSize(),
+ Isolate::CurrentEmbeddedBlobData(),
+ Isolate::CurrentEmbeddedBlobDataSize());
+ }
+
const uint8_t* code() const { return code_; }
uint32_t code_size() const { return code_size_; }
const uint8_t* data() const { return data_; }
diff --git a/deps/v8/src/snapshot/mksnapshot.cc b/deps/v8/src/snapshot/mksnapshot.cc
index 4cccc8d173..9a1e988bf8 100644
--- a/deps/v8/src/snapshot/mksnapshot.cc
+++ b/deps/v8/src/snapshot/mksnapshot.cc
@@ -11,10 +11,10 @@
#include "include/libplatform/libplatform.h"
#include "src/base/platform/platform.h"
#include "src/base/platform/wrappers.h"
+#include "src/base/sanitizer/msan.h"
#include "src/codegen/assembler-arch.h"
#include "src/codegen/source-position-table.h"
#include "src/flags/flags.h"
-#include "src/sanitizer/msan.h"
#include "src/snapshot/context-serializer.h"
#include "src/snapshot/embedded/embedded-file-writer.h"
#include "src/snapshot/snapshot.h"
@@ -155,7 +155,7 @@ v8::StartupData CreateSnapshotDataBlob(v8::Isolate* isolate,
isolate);
if (i::FLAG_profile_deserialization) {
- i::PrintF("Creating snapshot took %0.3f ms\n",
+ i::PrintF("[Creating snapshot took %0.3f ms]\n",
timer.Elapsed().InMillisecondsF());
}
diff --git a/deps/v8/src/snapshot/object-deserializer.cc b/deps/v8/src/snapshot/object-deserializer.cc
index 929996ee10..d5ce8cc6e9 100644
--- a/deps/v8/src/snapshot/object-deserializer.cc
+++ b/deps/v8/src/snapshot/object-deserializer.cc
@@ -66,7 +66,9 @@ void ObjectDeserializer::CommitPostProcessedObjects() {
auto bs = backing_store(store_index);
SharedFlag shared =
bs && bs->is_shared() ? SharedFlag::kShared : SharedFlag::kNotShared;
- buffer->Setup(shared, bs);
+ // TODO(v8:11111): Support RAB / GSAB.
+ CHECK(!bs || !bs->is_resizable());
+ buffer->Setup(shared, ResizableFlag::kNotResizable, bs);
}
for (Handle<Script> script : new_scripts()) {
diff --git a/deps/v8/src/snapshot/read-only-serializer.cc b/deps/v8/src/snapshot/read-only-serializer.cc
index 06c5094782..3dc5af0b0d 100644
--- a/deps/v8/src/snapshot/read-only-serializer.cc
+++ b/deps/v8/src/snapshot/read-only-serializer.cc
@@ -74,6 +74,10 @@ void ReadOnlySerializer::SerializeReadOnlyRoots() {
isolate()->handle_scope_implementer()->blocks()->empty());
ReadOnlyRoots(isolate()).Iterate(this);
+
+ if (reconstruct_read_only_object_cache_for_testing()) {
+ ReconstructReadOnlyObjectCacheForTesting();
+ }
}
void ReadOnlySerializer::FinalizeSerialization() {
@@ -129,5 +133,18 @@ bool ReadOnlySerializer::SerializeUsingReadOnlyObjectCache(
return true;
}
+void ReadOnlySerializer::ReconstructReadOnlyObjectCacheForTesting() {
+ ReadOnlyHeap* ro_heap = isolate()->read_only_heap();
+ DCHECK(ro_heap->read_only_object_cache_is_initialized());
+ for (size_t i = 0, size = ro_heap->read_only_object_cache_size(); i < size;
+ i++) {
+ Handle<HeapObject> obj(
+ HeapObject::cast(ro_heap->cached_read_only_object(i)), isolate());
+ int cache_index = SerializeInObjectCache(obj);
+ USE(cache_index);
+ DCHECK_EQ(cache_index, i);
+ }
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/snapshot/read-only-serializer.h b/deps/v8/src/snapshot/read-only-serializer.h
index fd88b9f7b6..7f9482f3b9 100644
--- a/deps/v8/src/snapshot/read-only-serializer.h
+++ b/deps/v8/src/snapshot/read-only-serializer.h
@@ -37,6 +37,8 @@ class V8_EXPORT_PRIVATE ReadOnlySerializer : public RootsSerializer {
Handle<HeapObject> obj);
private:
+ void ReconstructReadOnlyObjectCacheForTesting();
+
void SerializeObjectImpl(Handle<HeapObject> o) override;
bool MustBeDeferred(HeapObject object) override;
diff --git a/deps/v8/src/snapshot/serializer-deserializer.h b/deps/v8/src/snapshot/serializer-deserializer.h
index 0e156f75a0..82f3400106 100644
--- a/deps/v8/src/snapshot/serializer-deserializer.h
+++ b/deps/v8/src/snapshot/serializer-deserializer.h
@@ -187,14 +187,13 @@ class SerializerDeserializer : public RootVisitor {
}
static constexpr byte Encode(TValue value) {
- CONSTEXPR_DCHECK(IsEncodable(value));
+ DCHECK(IsEncodable(value));
return static_cast<byte>(kBytecode + static_cast<int>(value) - kMinValue);
}
static constexpr TValue Decode(byte bytecode) {
- CONSTEXPR_DCHECK(base::IsInRange(bytecode,
- Encode(static_cast<TValue>(kMinValue)),
- Encode(static_cast<TValue>(kMaxValue))));
+ DCHECK(base::IsInRange(bytecode, Encode(static_cast<TValue>(kMinValue)),
+ Encode(static_cast<TValue>(kMaxValue))));
return static_cast<TValue>(bytecode - kBytecode + kMinValue);
}
};
@@ -241,7 +240,7 @@ class SerializerDeserializer : public RootVisitor {
}
static constexpr int Encode(int repeat_count) {
- CONSTEXPR_DCHECK(IsEncodable(repeat_count));
+ DCHECK(IsEncodable(repeat_count));
return repeat_count - kFirstEncodableVariableRepeatCount;
}
diff --git a/deps/v8/src/snapshot/serializer.cc b/deps/v8/src/snapshot/serializer.cc
index 89c5485d62..7f7551316c 100644
--- a/deps/v8/src/snapshot/serializer.cc
+++ b/deps/v8/src/snapshot/serializer.cc
@@ -98,9 +98,9 @@ void Serializer::OutputStatistics(const char* name) {
}
INSTANCE_TYPE_LIST(PRINT_INSTANCE_TYPE)
#undef PRINT_INSTANCE_TYPE
+#endif // OBJECT_PRINT
PrintF("\n");
-#endif // OBJECT_PRINT
}
void Serializer::SerializeDeferredObjects() {
diff --git a/deps/v8/src/snapshot/serializer.h b/deps/v8/src/snapshot/serializer.h
index 3743fa02c9..a1b17e4fd5 100644
--- a/deps/v8/src/snapshot/serializer.h
+++ b/deps/v8/src/snapshot/serializer.h
@@ -298,6 +298,10 @@ class Serializer : public SerializerDeserializer {
return (flags_ & Snapshot::kAllowActiveIsolateForTesting) != 0;
}
+ bool reconstruct_read_only_object_cache_for_testing() const {
+ return (flags_ & Snapshot::kReconstructReadOnlyObjectCacheForTesting) != 0;
+ }
+
private:
// A circular queue of hot objects. This is added to in the same order as in
// Deserializer::HotObjectsList, but this stores the objects as an array of
diff --git a/deps/v8/src/snapshot/snapshot-utils.cc b/deps/v8/src/snapshot/snapshot-utils.cc
index eb2372372c..df53dfe751 100644
--- a/deps/v8/src/snapshot/snapshot-utils.cc
+++ b/deps/v8/src/snapshot/snapshot-utils.cc
@@ -4,7 +4,7 @@
#include "src/snapshot/snapshot-utils.h"
-#include "src/sanitizer/msan.h"
+#include "src/base/sanitizer/msan.h"
#include "third_party/zlib/zlib.h"
namespace v8 {
diff --git a/deps/v8/src/snapshot/snapshot.cc b/deps/v8/src/snapshot/snapshot.cc
index b78e6a70d6..3b4db28447 100644
--- a/deps/v8/src/snapshot/snapshot.cc
+++ b/deps/v8/src/snapshot/snapshot.cc
@@ -144,8 +144,7 @@ bool Snapshot::VersionIsValid(const v8::StartupData* data) {
bool Snapshot::Initialize(Isolate* isolate) {
if (!isolate->snapshot_available()) return false;
- RuntimeCallTimerScope rcs_timer(isolate,
- RuntimeCallCounterId::kDeserializeIsolate);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kDeserializeIsolate);
base::ElapsedTimer timer;
if (FLAG_profile_deserialization) timer.Start();
@@ -173,8 +172,7 @@ MaybeHandle<Context> Snapshot::NewContextFromSnapshot(
Isolate* isolate, Handle<JSGlobalProxy> global_proxy, size_t context_index,
v8::DeserializeEmbedderFieldsCallback embedder_fields_deserializer) {
if (!isolate->snapshot_available()) return Handle<Context>();
- RuntimeCallTimerScope rcs_timer(isolate,
- RuntimeCallCounterId::kDeserializeContext);
+ RCS_SCOPE(isolate, RuntimeCallCounterId::kDeserializeContext);
base::ElapsedTimer timer;
if (FLAG_profile_deserialization) timer.Start();
@@ -288,7 +286,10 @@ void Snapshot::SerializeDeserializeAndVerifyForTesting(
Snapshot::SerializerFlags flags(
Snapshot::kAllowUnknownExternalReferencesForTesting |
- Snapshot::kAllowActiveIsolateForTesting);
+ Snapshot::kAllowActiveIsolateForTesting |
+ (ReadOnlyHeap::IsReadOnlySpaceShared()
+ ? Snapshot::kReconstructReadOnlyObjectCacheForTesting
+ : 0));
serialized_data = Snapshot::Create(isolate, *default_context, no_gc, flags);
auto_delete_serialized_data.reset(serialized_data.data);
}
@@ -360,7 +361,7 @@ v8::StartupData Snapshot::Create(
context_serializer.Serialize(&contexts->at(i), no_gc);
can_be_rehashed = can_be_rehashed && context_serializer.can_be_rehashed();
context_snapshots.push_back(new SnapshotData(&context_serializer));
- if (FLAG_profile_deserialization) {
+ if (FLAG_serialization_statistics) {
context_allocation_sizes.push_back(
context_serializer.TotalAllocationSize());
}
@@ -374,15 +375,19 @@ v8::StartupData Snapshot::Create(
read_only_serializer.FinalizeSerialization();
can_be_rehashed = can_be_rehashed && read_only_serializer.can_be_rehashed();
- if (FLAG_profile_deserialization) {
+ if (FLAG_serialization_statistics) {
// These prints should match the regexp in test/memory/Memory.json
+ DCHECK_NE(read_only_serializer.TotalAllocationSize(), 0);
+ DCHECK_NE(startup_serializer.TotalAllocationSize(), 0);
PrintF("Deserialization will allocate:\n");
PrintF("%10d bytes per isolate\n",
read_only_serializer.TotalAllocationSize() +
startup_serializer.TotalAllocationSize());
for (int i = 0; i < num_contexts; i++) {
+ DCHECK_NE(context_allocation_sizes[i], 0);
PrintF("%10d bytes per context #%d\n", context_allocation_sizes[i], i);
}
+ PrintF("\n");
}
SnapshotData read_only_snapshot(&read_only_serializer);
@@ -471,7 +476,7 @@ v8::StartupData SnapshotImpl::CreateSnapshotBlob(
CopyBytes(data + payload_offset,
reinterpret_cast<const char*>(startup_snapshot->RawData().begin()),
payload_length);
- if (FLAG_profile_deserialization) {
+ if (FLAG_serialization_statistics) {
PrintF("Snapshot blob consists of:\n%10d bytes for startup\n",
payload_length);
}
@@ -485,7 +490,7 @@ v8::StartupData SnapshotImpl::CreateSnapshotBlob(
data + payload_offset,
reinterpret_cast<const char*>(read_only_snapshot->RawData().begin()),
payload_length);
- if (FLAG_profile_deserialization) {
+ if (FLAG_serialization_statistics) {
PrintF("%10d bytes for read-only\n", payload_length);
}
payload_offset += payload_length;
@@ -500,11 +505,12 @@ v8::StartupData SnapshotImpl::CreateSnapshotBlob(
data + payload_offset,
reinterpret_cast<const char*>(context_snapshot->RawData().begin()),
payload_length);
- if (FLAG_profile_deserialization) {
+ if (FLAG_serialization_statistics) {
PrintF("%10d bytes for context #%d\n", payload_length, i);
}
payload_offset += payload_length;
}
+ if (FLAG_serialization_statistics) PrintF("\n");
DCHECK_EQ(total_length, payload_offset);
v8::StartupData result = {data, static_cast<int>(total_length)};
diff --git a/deps/v8/src/snapshot/snapshot.h b/deps/v8/src/snapshot/snapshot.h
index 0e510f0096..2f16eee6d5 100644
--- a/deps/v8/src/snapshot/snapshot.h
+++ b/deps/v8/src/snapshot/snapshot.h
@@ -36,6 +36,15 @@ class Snapshot : public AllStatic {
// after deserialization.
// If unset, we assert that these previously mentioned areas are empty.
kAllowActiveIsolateForTesting = 1 << 1,
+ // If set, the ReadOnlySerializer reconstructs the read-only object cache
+ // from the existing ReadOnlyHeap's read-only object cache so the same
+ // mapping is used. This mode is used for testing deserialization of a
+ // snapshot from a live isolate that's using a shared
+ // ReadOnlyHeap. Otherwise during deserialization the indices will mismatch,
+ // causing deserialization crashes when e.g. types mismatch.
+ // If unset, the read-only object cache is populated as read-only objects
+ // are serialized.
+ kReconstructReadOnlyObjectCacheForTesting = 1 << 2,
};
using SerializerFlags = base::Flags<SerializerFlag>;
V8_EXPORT_PRIVATE static constexpr SerializerFlags kDefaultSerializerFlags =
diff --git a/deps/v8/src/strings/unicode.cc b/deps/v8/src/strings/unicode.cc
index 21faccd0b4..a74e700ebd 100644
--- a/deps/v8/src/strings/unicode.cc
+++ b/deps/v8/src/strings/unicode.cc
@@ -238,160 +238,112 @@ bool Uppercase::Is(uchar c) { return static_cast<bool>(u_isupper(c)); }
#else
static const uint16_t kUppercaseTable0Size = 455;
static const int32_t kUppercaseTable0[455] = {
- 1073741889, 90, 1073742016, 214,
- 1073742040, 222, 256, 258, // NOLINT
- 260, 262, 264, 266,
- 268, 270, 272, 274, // NOLINT
- 276, 278, 280, 282,
- 284, 286, 288, 290, // NOLINT
- 292, 294, 296, 298,
- 300, 302, 304, 306, // NOLINT
- 308, 310, 313, 315,
- 317, 319, 321, 323, // NOLINT
- 325, 327, 330, 332,
- 334, 336, 338, 340, // NOLINT
- 342, 344, 346, 348,
- 350, 352, 354, 356, // NOLINT
- 358, 360, 362, 364,
- 366, 368, 370, 372, // NOLINT
- 374, 1073742200, 377, 379,
- 381, 1073742209, 386, 388, // NOLINT
- 1073742214, 391, 1073742217, 395,
- 1073742222, 401, 1073742227, 404, // NOLINT
- 1073742230, 408, 1073742236, 413,
- 1073742239, 416, 418, 420, // NOLINT
- 1073742246, 423, 425, 428,
- 1073742254, 431, 1073742257, 435, // NOLINT
- 437, 1073742263, 440, 444,
- 452, 455, 458, 461, // NOLINT
- 463, 465, 467, 469,
- 471, 473, 475, 478, // NOLINT
- 480, 482, 484, 486,
- 488, 490, 492, 494, // NOLINT
- 497, 500, 1073742326, 504,
- 506, 508, 510, 512, // NOLINT
- 514, 516, 518, 520,
- 522, 524, 526, 528, // NOLINT
- 530, 532, 534, 536,
- 538, 540, 542, 544, // NOLINT
- 546, 548, 550, 552,
- 554, 556, 558, 560, // NOLINT
- 562, 1073742394, 571, 1073742397,
- 574, 577, 1073742403, 582, // NOLINT
- 584, 586, 588, 590,
- 880, 882, 886, 895, // NOLINT
- 902, 1073742728, 906, 908,
- 1073742734, 911, 1073742737, 929, // NOLINT
- 1073742755, 939, 975, 1073742802,
- 980, 984, 986, 988, // NOLINT
- 990, 992, 994, 996,
- 998, 1000, 1002, 1004, // NOLINT
- 1006, 1012, 1015, 1073742841,
- 1018, 1073742845, 1071, 1120, // NOLINT
- 1122, 1124, 1126, 1128,
- 1130, 1132, 1134, 1136, // NOLINT
- 1138, 1140, 1142, 1144,
- 1146, 1148, 1150, 1152, // NOLINT
- 1162, 1164, 1166, 1168,
- 1170, 1172, 1174, 1176, // NOLINT
- 1178, 1180, 1182, 1184,
- 1186, 1188, 1190, 1192, // NOLINT
- 1194, 1196, 1198, 1200,
- 1202, 1204, 1206, 1208, // NOLINT
- 1210, 1212, 1214, 1073743040,
- 1217, 1219, 1221, 1223, // NOLINT
- 1225, 1227, 1229, 1232,
- 1234, 1236, 1238, 1240, // NOLINT
- 1242, 1244, 1246, 1248,
- 1250, 1252, 1254, 1256, // NOLINT
- 1258, 1260, 1262, 1264,
- 1266, 1268, 1270, 1272, // NOLINT
- 1274, 1276, 1278, 1280,
- 1282, 1284, 1286, 1288, // NOLINT
- 1290, 1292, 1294, 1296,
- 1298, 1300, 1302, 1304, // NOLINT
- 1306, 1308, 1310, 1312,
- 1314, 1316, 1318, 1320, // NOLINT
- 1322, 1324, 1326, 1073743153,
- 1366, 1073746080, 4293, 4295, // NOLINT
- 4301, 7680, 7682, 7684,
- 7686, 7688, 7690, 7692, // NOLINT
- 7694, 7696, 7698, 7700,
- 7702, 7704, 7706, 7708, // NOLINT
- 7710, 7712, 7714, 7716,
- 7718, 7720, 7722, 7724, // NOLINT
- 7726, 7728, 7730, 7732,
- 7734, 7736, 7738, 7740, // NOLINT
- 7742, 7744, 7746, 7748,
- 7750, 7752, 7754, 7756, // NOLINT
- 7758, 7760, 7762, 7764,
- 7766, 7768, 7770, 7772, // NOLINT
- 7774, 7776, 7778, 7780,
- 7782, 7784, 7786, 7788, // NOLINT
- 7790, 7792, 7794, 7796,
- 7798, 7800, 7802, 7804, // NOLINT
- 7806, 7808, 7810, 7812,
- 7814, 7816, 7818, 7820, // NOLINT
- 7822, 7824, 7826, 7828,
- 7838, 7840, 7842, 7844, // NOLINT
- 7846, 7848, 7850, 7852,
- 7854, 7856, 7858, 7860, // NOLINT
- 7862, 7864, 7866, 7868,
- 7870, 7872, 7874, 7876, // NOLINT
- 7878, 7880, 7882, 7884,
- 7886, 7888, 7890, 7892, // NOLINT
- 7894, 7896, 7898, 7900,
- 7902, 7904, 7906, 7908, // NOLINT
- 7910, 7912, 7914, 7916,
- 7918, 7920, 7922, 7924, // NOLINT
- 7926, 7928, 7930, 7932,
- 7934, 1073749768, 7951, 1073749784, // NOLINT
- 7965, 1073749800, 7983, 1073749816,
- 7999, 1073749832, 8013, 8025, // NOLINT
- 8027, 8029, 8031, 1073749864,
- 8047, 1073749944, 8123, 1073749960, // NOLINT
- 8139, 1073749976, 8155, 1073749992,
- 8172, 1073750008, 8187}; // NOLINT
+ 1073741889, 90, 1073742016, 214, 1073742040, 222,
+ 256, 258, 260, 262, 264, 266,
+ 268, 270, 272, 274, 276, 278,
+ 280, 282, 284, 286, 288, 290,
+ 292, 294, 296, 298, 300, 302,
+ 304, 306, 308, 310, 313, 315,
+ 317, 319, 321, 323, 325, 327,
+ 330, 332, 334, 336, 338, 340,
+ 342, 344, 346, 348, 350, 352,
+ 354, 356, 358, 360, 362, 364,
+ 366, 368, 370, 372, 374, 1073742200,
+ 377, 379, 381, 1073742209, 386, 388,
+ 1073742214, 391, 1073742217, 395, 1073742222, 401,
+ 1073742227, 404, 1073742230, 408, 1073742236, 413,
+ 1073742239, 416, 418, 420, 1073742246, 423,
+ 425, 428, 1073742254, 431, 1073742257, 435,
+ 437, 1073742263, 440, 444, 452, 455,
+ 458, 461, 463, 465, 467, 469,
+ 471, 473, 475, 478, 480, 482,
+ 484, 486, 488, 490, 492, 494,
+ 497, 500, 1073742326, 504, 506, 508,
+ 510, 512, 514, 516, 518, 520,
+ 522, 524, 526, 528, 530, 532,
+ 534, 536, 538, 540, 542, 544,
+ 546, 548, 550, 552, 554, 556,
+ 558, 560, 562, 1073742394, 571, 1073742397,
+ 574, 577, 1073742403, 582, 584, 586,
+ 588, 590, 880, 882, 886, 895,
+ 902, 1073742728, 906, 908, 1073742734, 911,
+ 1073742737, 929, 1073742755, 939, 975, 1073742802,
+ 980, 984, 986, 988, 990, 992,
+ 994, 996, 998, 1000, 1002, 1004,
+ 1006, 1012, 1015, 1073742841, 1018, 1073742845,
+ 1071, 1120, 1122, 1124, 1126, 1128,
+ 1130, 1132, 1134, 1136, 1138, 1140,
+ 1142, 1144, 1146, 1148, 1150, 1152,
+ 1162, 1164, 1166, 1168, 1170, 1172,
+ 1174, 1176, 1178, 1180, 1182, 1184,
+ 1186, 1188, 1190, 1192, 1194, 1196,
+ 1198, 1200, 1202, 1204, 1206, 1208,
+ 1210, 1212, 1214, 1073743040, 1217, 1219,
+ 1221, 1223, 1225, 1227, 1229, 1232,
+ 1234, 1236, 1238, 1240, 1242, 1244,
+ 1246, 1248, 1250, 1252, 1254, 1256,
+ 1258, 1260, 1262, 1264, 1266, 1268,
+ 1270, 1272, 1274, 1276, 1278, 1280,
+ 1282, 1284, 1286, 1288, 1290, 1292,
+ 1294, 1296, 1298, 1300, 1302, 1304,
+ 1306, 1308, 1310, 1312, 1314, 1316,
+ 1318, 1320, 1322, 1324, 1326, 1073743153,
+ 1366, 1073746080, 4293, 4295, 4301, 7680,
+ 7682, 7684, 7686, 7688, 7690, 7692,
+ 7694, 7696, 7698, 7700, 7702, 7704,
+ 7706, 7708, 7710, 7712, 7714, 7716,
+ 7718, 7720, 7722, 7724, 7726, 7728,
+ 7730, 7732, 7734, 7736, 7738, 7740,
+ 7742, 7744, 7746, 7748, 7750, 7752,
+ 7754, 7756, 7758, 7760, 7762, 7764,
+ 7766, 7768, 7770, 7772, 7774, 7776,
+ 7778, 7780, 7782, 7784, 7786, 7788,
+ 7790, 7792, 7794, 7796, 7798, 7800,
+ 7802, 7804, 7806, 7808, 7810, 7812,
+ 7814, 7816, 7818, 7820, 7822, 7824,
+ 7826, 7828, 7838, 7840, 7842, 7844,
+ 7846, 7848, 7850, 7852, 7854, 7856,
+ 7858, 7860, 7862, 7864, 7866, 7868,
+ 7870, 7872, 7874, 7876, 7878, 7880,
+ 7882, 7884, 7886, 7888, 7890, 7892,
+ 7894, 7896, 7898, 7900, 7902, 7904,
+ 7906, 7908, 7910, 7912, 7914, 7916,
+ 7918, 7920, 7922, 7924, 7926, 7928,
+ 7930, 7932, 7934, 1073749768, 7951, 1073749784,
+ 7965, 1073749800, 7983, 1073749816, 7999, 1073749832,
+ 8013, 8025, 8027, 8029, 8031, 1073749864,
+ 8047, 1073749944, 8123, 1073749960, 8139, 1073749976,
+ 8155, 1073749992, 8172, 1073750008, 8187};
static const uint16_t kUppercaseTable1Size = 86;
static const int32_t kUppercaseTable1[86] = {
- 258, 263, 1073742091, 269, 1073742096, 274,
- 277, 1073742105, // NOLINT
- 285, 292, 294, 296, 1073742122, 301,
- 1073742128, 307, // NOLINT
- 1073742142, 319, 325, 387, 1073744896, 3118,
- 3168, 1073744994, // NOLINT
- 3172, 3175, 3177, 3179, 1073745005, 3184,
- 3186, 3189, // NOLINT
- 1073745022, 3200, 3202, 3204, 3206, 3208,
- 3210, 3212, // NOLINT
- 3214, 3216, 3218, 3220, 3222, 3224,
- 3226, 3228, // NOLINT
- 3230, 3232, 3234, 3236, 3238, 3240,
- 3242, 3244, // NOLINT
- 3246, 3248, 3250, 3252, 3254, 3256,
- 3258, 3260, // NOLINT
- 3262, 3264, 3266, 3268, 3270, 3272,
- 3274, 3276, // NOLINT
- 3278, 3280, 3282, 3284, 3286, 3288,
- 3290, 3292, // NOLINT
- 3294, 3296, 3298, 3307, 3309, 3314}; // NOLINT
+ 258, 263, 1073742091, 269, 1073742096, 274, 277,
+ 1073742105, 285, 292, 294, 296, 1073742122, 301,
+ 1073742128, 307, 1073742142, 319, 325, 387, 1073744896,
+ 3118, 3168, 1073744994, 3172, 3175, 3177, 3179,
+ 1073745005, 3184, 3186, 3189, 1073745022, 3200, 3202,
+ 3204, 3206, 3208, 3210, 3212, 3214, 3216,
+ 3218, 3220, 3222, 3224, 3226, 3228, 3230,
+ 3232, 3234, 3236, 3238, 3240, 3242, 3244,
+ 3246, 3248, 3250, 3252, 3254, 3256, 3258,
+ 3260, 3262, 3264, 3266, 3268, 3270, 3272,
+ 3274, 3276, 3278, 3280, 3282, 3284, 3286,
+ 3288, 3290, 3292, 3294, 3296, 3298, 3307,
+ 3309, 3314};
static const uint16_t kUppercaseTable5Size = 101;
static const int32_t kUppercaseTable5[101] = {
- 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, // NOLINT
- 1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630, // NOLINT
- 1632, 1634, 1636, 1638, 1640, 1642, 1644, 1664, // NOLINT
- 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, // NOLINT
- 1682, 1684, 1686, 1688, 1690, 1826, 1828, 1830, // NOLINT
- 1832, 1834, 1836, 1838, 1842, 1844, 1846, 1848, // NOLINT
- 1850, 1852, 1854, 1856, 1858, 1860, 1862, 1864, // NOLINT
- 1866, 1868, 1870, 1872, 1874, 1876, 1878, 1880, // NOLINT
- 1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896, // NOLINT
- 1898, 1900, 1902, 1913, 1915, 1073743741, 1918, 1920, // NOLINT
- 1922, 1924, 1926, 1931, 1933, 1936, 1938, 1942, // NOLINT
- 1944, 1946, 1948, 1950, 1952, 1954, 1956, 1958, // NOLINT
- 1960, 1073743786, 1965, 1073743792, 1969}; // NOLINT
+ 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, 1616, 1618,
+ 1620, 1622, 1624, 1626, 1628, 1630, 1632, 1634, 1636, 1638,
+ 1640, 1642, 1644, 1664, 1666, 1668, 1670, 1672, 1674, 1676,
+ 1678, 1680, 1682, 1684, 1686, 1688, 1690, 1826, 1828, 1830,
+ 1832, 1834, 1836, 1838, 1842, 1844, 1846, 1848, 1850, 1852,
+ 1854, 1856, 1858, 1860, 1862, 1864, 1866, 1868, 1870, 1872,
+ 1874, 1876, 1878, 1880, 1882, 1884, 1886, 1888, 1890, 1892,
+ 1894, 1896, 1898, 1900, 1902, 1913, 1915, 1073743741, 1918, 1920,
+ 1922, 1924, 1926, 1931, 1933, 1936, 1938, 1942, 1944, 1946,
+ 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1073743786, 1965, 1073743792,
+ 1969};
static const uint16_t kUppercaseTable7Size = 2;
-static const int32_t kUppercaseTable7[2] = {1073749793, 7994}; // NOLINT
+static const int32_t kUppercaseTable7[2] = {1073749793, 7994};
bool Uppercase::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
@@ -415,189 +367,133 @@ bool Letter::Is(uchar c) { return static_cast<bool>(u_isalpha(c)); }
#else
static const uint16_t kLetterTable0Size = 431;
static const int32_t kLetterTable0[431] = {
- 1073741889, 90, 1073741921, 122,
- 170, 181, 186, 1073742016, // NOLINT
- 214, 1073742040, 246, 1073742072,
- 705, 1073742534, 721, 1073742560, // NOLINT
- 740, 748, 750, 1073742704,
- 884, 1073742710, 887, 1073742714, // NOLINT
- 893, 895, 902, 1073742728,
- 906, 908, 1073742734, 929, // NOLINT
- 1073742755, 1013, 1073742839, 1153,
- 1073742986, 1327, 1073743153, 1366, // NOLINT
- 1369, 1073743201, 1415, 1073743312,
- 1514, 1073743344, 1522, 1073743392, // NOLINT
- 1610, 1073743470, 1647, 1073743473,
- 1747, 1749, 1073743589, 1766, // NOLINT
- 1073743598, 1775, 1073743610, 1788,
- 1791, 1808, 1073743634, 1839, // NOLINT
- 1073743693, 1957, 1969, 1073743818,
- 2026, 1073743860, 2037, 2042, // NOLINT
- 1073743872, 2069, 2074, 2084,
- 2088, 1073743936, 2136, 1073744032, // NOLINT
- 2226, 1073744132, 2361, 2365,
- 2384, 1073744216, 2401, 1073744241, // NOLINT
- 2432, 1073744261, 2444, 1073744271,
- 2448, 1073744275, 2472, 1073744298, // NOLINT
- 2480, 2482, 1073744310, 2489,
- 2493, 2510, 1073744348, 2525, // NOLINT
- 1073744351, 2529, 1073744368, 2545,
- 1073744389, 2570, 1073744399, 2576, // NOLINT
- 1073744403, 2600, 1073744426, 2608,
- 1073744434, 2611, 1073744437, 2614, // NOLINT
- 1073744440, 2617, 1073744473, 2652,
- 2654, 1073744498, 2676, 1073744517, // NOLINT
- 2701, 1073744527, 2705, 1073744531,
- 2728, 1073744554, 2736, 1073744562, // NOLINT
- 2739, 1073744565, 2745, 2749,
- 2768, 1073744608, 2785, 1073744645, // NOLINT
- 2828, 1073744655, 2832, 1073744659,
- 2856, 1073744682, 2864, 1073744690, // NOLINT
- 2867, 1073744693, 2873, 2877,
- 1073744732, 2909, 1073744735, 2913, // NOLINT
- 2929, 2947, 1073744773, 2954,
- 1073744782, 2960, 1073744786, 2965, // NOLINT
- 1073744793, 2970, 2972, 1073744798,
- 2975, 1073744803, 2980, 1073744808, // NOLINT
- 2986, 1073744814, 3001, 3024,
- 1073744901, 3084, 1073744910, 3088, // NOLINT
- 1073744914, 3112, 1073744938, 3129,
- 3133, 1073744984, 3161, 1073744992, // NOLINT
- 3169, 1073745029, 3212, 1073745038,
- 3216, 1073745042, 3240, 1073745066, // NOLINT
- 3251, 1073745077, 3257, 3261,
- 3294, 1073745120, 3297, 1073745137, // NOLINT
- 3314, 1073745157, 3340, 1073745166,
- 3344, 1073745170, 3386, 3389, // NOLINT
- 3406, 1073745248, 3425, 1073745274,
- 3455, 1073745285, 3478, 1073745306, // NOLINT
- 3505, 1073745331, 3515, 3517,
- 1073745344, 3526, 1073745409, 3632, // NOLINT
- 1073745458, 3635, 1073745472, 3654,
- 1073745537, 3714, 3716, 1073745543, // NOLINT
- 3720, 3722, 3725, 1073745556,
- 3735, 1073745561, 3743, 1073745569, // NOLINT
- 3747, 3749, 3751, 1073745578,
- 3755, 1073745581, 3760, 1073745586, // NOLINT
- 3763, 3773, 1073745600, 3780,
- 3782, 1073745628, 3807, 3840, // NOLINT
- 1073745728, 3911, 1073745737, 3948,
- 1073745800, 3980, 1073745920, 4138, // NOLINT
- 4159, 1073746000, 4181, 1073746010,
- 4189, 4193, 1073746021, 4198, // NOLINT
- 1073746030, 4208, 1073746037, 4225,
- 4238, 1073746080, 4293, 4295, // NOLINT
- 4301, 1073746128, 4346, 1073746172,
- 4680, 1073746506, 4685, 1073746512, // NOLINT
- 4694, 4696, 1073746522, 4701,
- 1073746528, 4744, 1073746570, 4749, // NOLINT
- 1073746576, 4784, 1073746610, 4789,
- 1073746616, 4798, 4800, 1073746626, // NOLINT
- 4805, 1073746632, 4822, 1073746648,
- 4880, 1073746706, 4885, 1073746712, // NOLINT
- 4954, 1073746816, 5007, 1073746848,
- 5108, 1073746945, 5740, 1073747567, // NOLINT
- 5759, 1073747585, 5786, 1073747616,
- 5866, 1073747694, 5880, 1073747712, // NOLINT
- 5900, 1073747726, 5905, 1073747744,
- 5937, 1073747776, 5969, 1073747808, // NOLINT
- 5996, 1073747822, 6000, 1073747840,
- 6067, 6103, 6108, 1073748000, // NOLINT
- 6263, 1073748096, 6312, 6314,
- 1073748144, 6389, 1073748224, 6430, // NOLINT
- 1073748304, 6509, 1073748336, 6516,
- 1073748352, 6571, 1073748417, 6599, // NOLINT
- 1073748480, 6678, 1073748512, 6740,
- 6823, 1073748741, 6963, 1073748805, // NOLINT
- 6987, 1073748867, 7072, 1073748910,
- 7087, 1073748922, 7141, 1073748992, // NOLINT
- 7203, 1073749069, 7247, 1073749082,
- 7293, 1073749225, 7404, 1073749230, // NOLINT
- 7409, 1073749237, 7414, 1073749248,
- 7615, 1073749504, 7957, 1073749784, // NOLINT
- 7965, 1073749792, 8005, 1073749832,
- 8013, 1073749840, 8023, 8025, // NOLINT
- 8027, 8029, 1073749855, 8061,
- 1073749888, 8116, 1073749942, 8124, // NOLINT
- 8126, 1073749954, 8132, 1073749958,
- 8140, 1073749968, 8147, 1073749974, // NOLINT
- 8155, 1073749984, 8172, 1073750002,
- 8180, 1073750006, 8188}; // NOLINT
+ 1073741889, 90, 1073741921, 122, 170, 181,
+ 186, 1073742016, 214, 1073742040, 246, 1073742072,
+ 705, 1073742534, 721, 1073742560, 740, 748,
+ 750, 1073742704, 884, 1073742710, 887, 1073742714,
+ 893, 895, 902, 1073742728, 906, 908,
+ 1073742734, 929, 1073742755, 1013, 1073742839, 1153,
+ 1073742986, 1327, 1073743153, 1366, 1369, 1073743201,
+ 1415, 1073743312, 1514, 1073743344, 1522, 1073743392,
+ 1610, 1073743470, 1647, 1073743473, 1747, 1749,
+ 1073743589, 1766, 1073743598, 1775, 1073743610, 1788,
+ 1791, 1808, 1073743634, 1839, 1073743693, 1957,
+ 1969, 1073743818, 2026, 1073743860, 2037, 2042,
+ 1073743872, 2069, 2074, 2084, 2088, 1073743936,
+ 2136, 1073744032, 2226, 1073744132, 2361, 2365,
+ 2384, 1073744216, 2401, 1073744241, 2432, 1073744261,
+ 2444, 1073744271, 2448, 1073744275, 2472, 1073744298,
+ 2480, 2482, 1073744310, 2489, 2493, 2510,
+ 1073744348, 2525, 1073744351, 2529, 1073744368, 2545,
+ 1073744389, 2570, 1073744399, 2576, 1073744403, 2600,
+ 1073744426, 2608, 1073744434, 2611, 1073744437, 2614,
+ 1073744440, 2617, 1073744473, 2652, 2654, 1073744498,
+ 2676, 1073744517, 2701, 1073744527, 2705, 1073744531,
+ 2728, 1073744554, 2736, 1073744562, 2739, 1073744565,
+ 2745, 2749, 2768, 1073744608, 2785, 1073744645,
+ 2828, 1073744655, 2832, 1073744659, 2856, 1073744682,
+ 2864, 1073744690, 2867, 1073744693, 2873, 2877,
+ 1073744732, 2909, 1073744735, 2913, 2929, 2947,
+ 1073744773, 2954, 1073744782, 2960, 1073744786, 2965,
+ 1073744793, 2970, 2972, 1073744798, 2975, 1073744803,
+ 2980, 1073744808, 2986, 1073744814, 3001, 3024,
+ 1073744901, 3084, 1073744910, 3088, 1073744914, 3112,
+ 1073744938, 3129, 3133, 1073744984, 3161, 1073744992,
+ 3169, 1073745029, 3212, 1073745038, 3216, 1073745042,
+ 3240, 1073745066, 3251, 1073745077, 3257, 3261,
+ 3294, 1073745120, 3297, 1073745137, 3314, 1073745157,
+ 3340, 1073745166, 3344, 1073745170, 3386, 3389,
+ 3406, 1073745248, 3425, 1073745274, 3455, 1073745285,
+ 3478, 1073745306, 3505, 1073745331, 3515, 3517,
+ 1073745344, 3526, 1073745409, 3632, 1073745458, 3635,
+ 1073745472, 3654, 1073745537, 3714, 3716, 1073745543,
+ 3720, 3722, 3725, 1073745556, 3735, 1073745561,
+ 3743, 1073745569, 3747, 3749, 3751, 1073745578,
+ 3755, 1073745581, 3760, 1073745586, 3763, 3773,
+ 1073745600, 3780, 3782, 1073745628, 3807, 3840,
+ 1073745728, 3911, 1073745737, 3948, 1073745800, 3980,
+ 1073745920, 4138, 4159, 1073746000, 4181, 1073746010,
+ 4189, 4193, 1073746021, 4198, 1073746030, 4208,
+ 1073746037, 4225, 4238, 1073746080, 4293, 4295,
+ 4301, 1073746128, 4346, 1073746172, 4680, 1073746506,
+ 4685, 1073746512, 4694, 4696, 1073746522, 4701,
+ 1073746528, 4744, 1073746570, 4749, 1073746576, 4784,
+ 1073746610, 4789, 1073746616, 4798, 4800, 1073746626,
+ 4805, 1073746632, 4822, 1073746648, 4880, 1073746706,
+ 4885, 1073746712, 4954, 1073746816, 5007, 1073746848,
+ 5108, 1073746945, 5740, 1073747567, 5759, 1073747585,
+ 5786, 1073747616, 5866, 1073747694, 5880, 1073747712,
+ 5900, 1073747726, 5905, 1073747744, 5937, 1073747776,
+ 5969, 1073747808, 5996, 1073747822, 6000, 1073747840,
+ 6067, 6103, 6108, 1073748000, 6263, 1073748096,
+ 6312, 6314, 1073748144, 6389, 1073748224, 6430,
+ 1073748304, 6509, 1073748336, 6516, 1073748352, 6571,
+ 1073748417, 6599, 1073748480, 6678, 1073748512, 6740,
+ 6823, 1073748741, 6963, 1073748805, 6987, 1073748867,
+ 7072, 1073748910, 7087, 1073748922, 7141, 1073748992,
+ 7203, 1073749069, 7247, 1073749082, 7293, 1073749225,
+ 7404, 1073749230, 7409, 1073749237, 7414, 1073749248,
+ 7615, 1073749504, 7957, 1073749784, 7965, 1073749792,
+ 8005, 1073749832, 8013, 1073749840, 8023, 8025,
+ 8027, 8029, 1073749855, 8061, 1073749888, 8116,
+ 1073749942, 8124, 8126, 1073749954, 8132, 1073749958,
+ 8140, 1073749968, 8147, 1073749974, 8155, 1073749984,
+ 8172, 1073750002, 8180, 1073750006, 8188};
static const uint16_t kLetterTable1Size = 87;
static const int32_t kLetterTable1[87] = {
- 113, 127, 1073741968, 156,
- 258, 263, 1073742090, 275, // NOLINT
- 277, 1073742105, 285, 292,
- 294, 296, 1073742122, 301, // NOLINT
- 1073742127, 313, 1073742140, 319,
- 1073742149, 329, 334, 1073742176, // NOLINT
- 392, 1073744896, 3118, 1073744944,
- 3166, 1073744992, 3300, 1073745131, // NOLINT
- 3310, 1073745138, 3315, 1073745152,
- 3365, 3367, 3373, 1073745200, // NOLINT
- 3431, 3439, 1073745280, 3478,
- 1073745312, 3494, 1073745320, 3502, // NOLINT
- 1073745328, 3510, 1073745336, 3518,
- 1073745344, 3526, 1073745352, 3534, // NOLINT
- 1073745360, 3542, 1073745368, 3550,
- 3631, 1073745925, 4103, 1073745953, // NOLINT
- 4137, 1073745969, 4149, 1073745976,
- 4156, 1073745985, 4246, 1073746077, // NOLINT
- 4255, 1073746081, 4346, 1073746172,
- 4351, 1073746181, 4397, 1073746225, // NOLINT
- 4494, 1073746336, 4538, 1073746416,
- 4607, 1073746944, 8191}; // NOLINT
+ 113, 127, 1073741968, 156, 258, 263,
+ 1073742090, 275, 277, 1073742105, 285, 292,
+ 294, 296, 1073742122, 301, 1073742127, 313,
+ 1073742140, 319, 1073742149, 329, 334, 1073742176,
+ 392, 1073744896, 3118, 1073744944, 3166, 1073744992,
+ 3300, 1073745131, 3310, 1073745138, 3315, 1073745152,
+ 3365, 3367, 3373, 1073745200, 3431, 3439,
+ 1073745280, 3478, 1073745312, 3494, 1073745320, 3502,
+ 1073745328, 3510, 1073745336, 3518, 1073745344, 3526,
+ 1073745352, 3534, 1073745360, 3542, 1073745368, 3550,
+ 3631, 1073745925, 4103, 1073745953, 4137, 1073745969,
+ 4149, 1073745976, 4156, 1073745985, 4246, 1073746077,
+ 4255, 1073746081, 4346, 1073746172, 4351, 1073746181,
+ 4397, 1073746225, 4494, 1073746336, 4538, 1073746416,
+ 4607, 1073746944, 8191};
static const uint16_t kLetterTable2Size = 4;
-static const int32_t kLetterTable2[4] = {1073741824, 3509, 1073745408,
- 8191}; // NOLINT
+static const int32_t kLetterTable2[4] = {1073741824, 3509, 1073745408, 8191};
static const uint16_t kLetterTable3Size = 2;
-static const int32_t kLetterTable3[2] = {1073741824, 8191}; // NOLINT
+static const int32_t kLetterTable3[2] = {1073741824, 8191};
static const uint16_t kLetterTable4Size = 2;
-static const int32_t kLetterTable4[2] = {1073741824, 8140}; // NOLINT
+static const int32_t kLetterTable4[2] = {1073741824, 8140};
static const uint16_t kLetterTable5Size = 100;
static const int32_t kLetterTable5[100] = {
- 1073741824, 1164, 1073743056, 1277,
- 1073743104, 1548, 1073743376, 1567, // NOLINT
- 1073743402, 1579, 1073743424, 1646,
- 1073743487, 1693, 1073743520, 1775, // NOLINT
- 1073743639, 1823, 1073743650, 1928,
- 1073743755, 1934, 1073743760, 1965, // NOLINT
- 1073743792, 1969, 1073743863, 2049,
- 1073743875, 2053, 1073743879, 2058, // NOLINT
- 1073743884, 2082, 1073743936, 2163,
- 1073744002, 2227, 1073744114, 2295, // NOLINT
- 2299, 1073744138, 2341, 1073744176,
- 2374, 1073744224, 2428, 1073744260, // NOLINT
- 2482, 2511, 1073744352, 2532,
- 1073744358, 2543, 1073744378, 2558, // NOLINT
- 1073744384, 2600, 1073744448, 2626,
- 1073744452, 2635, 1073744480, 2678, // NOLINT
- 2682, 1073744510, 2735, 2737,
- 1073744565, 2742, 1073744569, 2749, // NOLINT
- 2752, 2754, 1073744603, 2781,
- 1073744608, 2794, 1073744626, 2804, // NOLINT
- 1073744641, 2822, 1073744649, 2830,
- 1073744657, 2838, 1073744672, 2854, // NOLINT
- 1073744680, 2862, 1073744688, 2906,
- 1073744732, 2911, 1073744740, 2917, // NOLINT
- 1073744832, 3042, 1073744896, 8191}; // NOLINT
+ 1073741824, 1164, 1073743056, 1277, 1073743104, 1548,
+ 1073743376, 1567, 1073743402, 1579, 1073743424, 1646,
+ 1073743487, 1693, 1073743520, 1775, 1073743639, 1823,
+ 1073743650, 1928, 1073743755, 1934, 1073743760, 1965,
+ 1073743792, 1969, 1073743863, 2049, 1073743875, 2053,
+ 1073743879, 2058, 1073743884, 2082, 1073743936, 2163,
+ 1073744002, 2227, 1073744114, 2295, 2299, 1073744138,
+ 2341, 1073744176, 2374, 1073744224, 2428, 1073744260,
+ 2482, 2511, 1073744352, 2532, 1073744358, 2543,
+ 1073744378, 2558, 1073744384, 2600, 1073744448, 2626,
+ 1073744452, 2635, 1073744480, 2678, 2682, 1073744510,
+ 2735, 2737, 1073744565, 2742, 1073744569, 2749,
+ 2752, 2754, 1073744603, 2781, 1073744608, 2794,
+ 1073744626, 2804, 1073744641, 2822, 1073744649, 2830,
+ 1073744657, 2838, 1073744672, 2854, 1073744680, 2862,
+ 1073744688, 2906, 1073744732, 2911, 1073744740, 2917,
+ 1073744832, 3042, 1073744896, 8191};
static const uint16_t kLetterTable6Size = 6;
-static const int32_t kLetterTable6[6] = {1073741824, 6051, 1073747888, 6086,
- 1073747915, 6139}; // NOLINT
+static const int32_t kLetterTable6[6] = {1073741824, 6051, 1073747888,
+ 6086, 1073747915, 6139};
static const uint16_t kLetterTable7Size = 48;
static const int32_t kLetterTable7[48] = {
- 1073748224, 6765, 1073748592, 6873,
- 1073748736, 6918, 1073748755, 6935, // NOLINT
- 6941, 1073748767, 6952, 1073748778,
- 6966, 1073748792, 6972, 6974, // NOLINT
- 1073748800, 6977, 1073748803, 6980,
- 1073748806, 7089, 1073748947, 7485, // NOLINT
- 1073749328, 7567, 1073749394, 7623,
- 1073749488, 7675, 1073749616, 7796, // NOLINT
- 1073749622, 7932, 1073749793, 7994,
- 1073749825, 8026, 1073749862, 8126, // NOLINT
- 1073749954, 8135, 1073749962, 8143,
- 1073749970, 8151, 1073749978, 8156}; // NOLINT
+ 1073748224, 6765, 1073748592, 6873, 1073748736, 6918,
+ 1073748755, 6935, 6941, 1073748767, 6952, 1073748778,
+ 6966, 1073748792, 6972, 6974, 1073748800, 6977,
+ 1073748803, 6980, 1073748806, 7089, 1073748947, 7485,
+ 1073749328, 7567, 1073749394, 7623, 1073749488, 7675,
+ 1073749616, 7796, 1073749622, 7932, 1073749793, 7994,
+ 1073749825, 8026, 1073749862, 8126, 1073749954, 8135,
+ 1073749962, 8143, 1073749970, 8151, 1073749978, 8156};
bool Letter::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
@@ -631,189 +527,133 @@ bool Letter::Is(uchar c) {
static const uint16_t kID_StartTable0Size = 434;
static const int32_t kID_StartTable0[434] = {
- 36, 1073741889, 90, 92,
- 95, 1073741921, 122, 170, // NOLINT
- 181, 186, 1073742016, 214,
- 1073742040, 246, 1073742072, 705, // NOLINT
- 1073742534, 721, 1073742560, 740,
- 748, 750, 1073742704, 884, // NOLINT
- 1073742710, 887, 1073742714, 893,
- 895, 902, 1073742728, 906, // NOLINT
- 908, 1073742734, 929, 1073742755,
- 1013, 1073742839, 1153, 1073742986, // NOLINT
- 1327, 1073743153, 1366, 1369,
- 1073743201, 1415, 1073743312, 1514, // NOLINT
- 1073743344, 1522, 1073743392, 1610,
- 1073743470, 1647, 1073743473, 1747, // NOLINT
- 1749, 1073743589, 1766, 1073743598,
- 1775, 1073743610, 1788, 1791, // NOLINT
- 1808, 1073743634, 1839, 1073743693,
- 1957, 1969, 1073743818, 2026, // NOLINT
- 1073743860, 2037, 2042, 1073743872,
- 2069, 2074, 2084, 2088, // NOLINT
- 1073743936, 2136, 1073744032, 2226,
- 1073744132, 2361, 2365, 2384, // NOLINT
- 1073744216, 2401, 1073744241, 2432,
- 1073744261, 2444, 1073744271, 2448, // NOLINT
- 1073744275, 2472, 1073744298, 2480,
- 2482, 1073744310, 2489, 2493, // NOLINT
- 2510, 1073744348, 2525, 1073744351,
- 2529, 1073744368, 2545, 1073744389, // NOLINT
- 2570, 1073744399, 2576, 1073744403,
- 2600, 1073744426, 2608, 1073744434, // NOLINT
- 2611, 1073744437, 2614, 1073744440,
- 2617, 1073744473, 2652, 2654, // NOLINT
- 1073744498, 2676, 1073744517, 2701,
- 1073744527, 2705, 1073744531, 2728, // NOLINT
- 1073744554, 2736, 1073744562, 2739,
- 1073744565, 2745, 2749, 2768, // NOLINT
- 1073744608, 2785, 1073744645, 2828,
- 1073744655, 2832, 1073744659, 2856, // NOLINT
- 1073744682, 2864, 1073744690, 2867,
- 1073744693, 2873, 2877, 1073744732, // NOLINT
- 2909, 1073744735, 2913, 2929,
- 2947, 1073744773, 2954, 1073744782, // NOLINT
- 2960, 1073744786, 2965, 1073744793,
- 2970, 2972, 1073744798, 2975, // NOLINT
- 1073744803, 2980, 1073744808, 2986,
- 1073744814, 3001, 3024, 1073744901, // NOLINT
- 3084, 1073744910, 3088, 1073744914,
- 3112, 1073744938, 3129, 3133, // NOLINT
- 1073744984, 3161, 1073744992, 3169,
- 1073745029, 3212, 1073745038, 3216, // NOLINT
- 1073745042, 3240, 1073745066, 3251,
- 1073745077, 3257, 3261, 3294, // NOLINT
- 1073745120, 3297, 1073745137, 3314,
- 1073745157, 3340, 1073745166, 3344, // NOLINT
- 1073745170, 3386, 3389, 3406,
- 1073745248, 3425, 1073745274, 3455, // NOLINT
- 1073745285, 3478, 1073745306, 3505,
- 1073745331, 3515, 3517, 1073745344, // NOLINT
- 3526, 1073745409, 3632, 1073745458,
- 3635, 1073745472, 3654, 1073745537, // NOLINT
- 3714, 3716, 1073745543, 3720,
- 3722, 3725, 1073745556, 3735, // NOLINT
- 1073745561, 3743, 1073745569, 3747,
- 3749, 3751, 1073745578, 3755, // NOLINT
- 1073745581, 3760, 1073745586, 3763,
- 3773, 1073745600, 3780, 3782, // NOLINT
- 1073745628, 3807, 3840, 1073745728,
- 3911, 1073745737, 3948, 1073745800, // NOLINT
- 3980, 1073745920, 4138, 4159,
- 1073746000, 4181, 1073746010, 4189, // NOLINT
- 4193, 1073746021, 4198, 1073746030,
- 4208, 1073746037, 4225, 4238, // NOLINT
- 1073746080, 4293, 4295, 4301,
- 1073746128, 4346, 1073746172, 4680, // NOLINT
- 1073746506, 4685, 1073746512, 4694,
- 4696, 1073746522, 4701, 1073746528, // NOLINT
- 4744, 1073746570, 4749, 1073746576,
- 4784, 1073746610, 4789, 1073746616, // NOLINT
- 4798, 4800, 1073746626, 4805,
- 1073746632, 4822, 1073746648, 4880, // NOLINT
- 1073746706, 4885, 1073746712, 4954,
- 1073746816, 5007, 1073746848, 5108, // NOLINT
- 1073746945, 5740, 1073747567, 5759,
- 1073747585, 5786, 1073747616, 5866, // NOLINT
- 1073747694, 5880, 1073747712, 5900,
- 1073747726, 5905, 1073747744, 5937, // NOLINT
- 1073747776, 5969, 1073747808, 5996,
- 1073747822, 6000, 1073747840, 6067, // NOLINT
- 6103, 6108, 1073748000, 6263,
- 1073748096, 6312, 6314, 1073748144, // NOLINT
- 6389, 1073748224, 6430, 1073748304,
- 6509, 1073748336, 6516, 1073748352, // NOLINT
- 6571, 1073748417, 6599, 1073748480,
- 6678, 1073748512, 6740, 6823, // NOLINT
- 1073748741, 6963, 1073748805, 6987,
- 1073748867, 7072, 1073748910, 7087, // NOLINT
- 1073748922, 7141, 1073748992, 7203,
- 1073749069, 7247, 1073749082, 7293, // NOLINT
- 1073749225, 7404, 1073749230, 7409,
- 1073749237, 7414, 1073749248, 7615, // NOLINT
- 1073749504, 7957, 1073749784, 7965,
- 1073749792, 8005, 1073749832, 8013, // NOLINT
- 1073749840, 8023, 8025, 8027,
- 8029, 1073749855, 8061, 1073749888, // NOLINT
- 8116, 1073749942, 8124, 8126,
- 1073749954, 8132, 1073749958, 8140, // NOLINT
- 1073749968, 8147, 1073749974, 8155,
- 1073749984, 8172, 1073750002, 8180, // NOLINT
- 1073750006, 8188}; // NOLINT
+ 36, 1073741889, 90, 92, 95, 1073741921,
+ 122, 170, 181, 186, 1073742016, 214,
+ 1073742040, 246, 1073742072, 705, 1073742534, 721,
+ 1073742560, 740, 748, 750, 1073742704, 884,
+ 1073742710, 887, 1073742714, 893, 895, 902,
+ 1073742728, 906, 908, 1073742734, 929, 1073742755,
+ 1013, 1073742839, 1153, 1073742986, 1327, 1073743153,
+ 1366, 1369, 1073743201, 1415, 1073743312, 1514,
+ 1073743344, 1522, 1073743392, 1610, 1073743470, 1647,
+ 1073743473, 1747, 1749, 1073743589, 1766, 1073743598,
+ 1775, 1073743610, 1788, 1791, 1808, 1073743634,
+ 1839, 1073743693, 1957, 1969, 1073743818, 2026,
+ 1073743860, 2037, 2042, 1073743872, 2069, 2074,
+ 2084, 2088, 1073743936, 2136, 1073744032, 2226,
+ 1073744132, 2361, 2365, 2384, 1073744216, 2401,
+ 1073744241, 2432, 1073744261, 2444, 1073744271, 2448,
+ 1073744275, 2472, 1073744298, 2480, 2482, 1073744310,
+ 2489, 2493, 2510, 1073744348, 2525, 1073744351,
+ 2529, 1073744368, 2545, 1073744389, 2570, 1073744399,
+ 2576, 1073744403, 2600, 1073744426, 2608, 1073744434,
+ 2611, 1073744437, 2614, 1073744440, 2617, 1073744473,
+ 2652, 2654, 1073744498, 2676, 1073744517, 2701,
+ 1073744527, 2705, 1073744531, 2728, 1073744554, 2736,
+ 1073744562, 2739, 1073744565, 2745, 2749, 2768,
+ 1073744608, 2785, 1073744645, 2828, 1073744655, 2832,
+ 1073744659, 2856, 1073744682, 2864, 1073744690, 2867,
+ 1073744693, 2873, 2877, 1073744732, 2909, 1073744735,
+ 2913, 2929, 2947, 1073744773, 2954, 1073744782,
+ 2960, 1073744786, 2965, 1073744793, 2970, 2972,
+ 1073744798, 2975, 1073744803, 2980, 1073744808, 2986,
+ 1073744814, 3001, 3024, 1073744901, 3084, 1073744910,
+ 3088, 1073744914, 3112, 1073744938, 3129, 3133,
+ 1073744984, 3161, 1073744992, 3169, 1073745029, 3212,
+ 1073745038, 3216, 1073745042, 3240, 1073745066, 3251,
+ 1073745077, 3257, 3261, 3294, 1073745120, 3297,
+ 1073745137, 3314, 1073745157, 3340, 1073745166, 3344,
+ 1073745170, 3386, 3389, 3406, 1073745248, 3425,
+ 1073745274, 3455, 1073745285, 3478, 1073745306, 3505,
+ 1073745331, 3515, 3517, 1073745344, 3526, 1073745409,
+ 3632, 1073745458, 3635, 1073745472, 3654, 1073745537,
+ 3714, 3716, 1073745543, 3720, 3722, 3725,
+ 1073745556, 3735, 1073745561, 3743, 1073745569, 3747,
+ 3749, 3751, 1073745578, 3755, 1073745581, 3760,
+ 1073745586, 3763, 3773, 1073745600, 3780, 3782,
+ 1073745628, 3807, 3840, 1073745728, 3911, 1073745737,
+ 3948, 1073745800, 3980, 1073745920, 4138, 4159,
+ 1073746000, 4181, 1073746010, 4189, 4193, 1073746021,
+ 4198, 1073746030, 4208, 1073746037, 4225, 4238,
+ 1073746080, 4293, 4295, 4301, 1073746128, 4346,
+ 1073746172, 4680, 1073746506, 4685, 1073746512, 4694,
+ 4696, 1073746522, 4701, 1073746528, 4744, 1073746570,
+ 4749, 1073746576, 4784, 1073746610, 4789, 1073746616,
+ 4798, 4800, 1073746626, 4805, 1073746632, 4822,
+ 1073746648, 4880, 1073746706, 4885, 1073746712, 4954,
+ 1073746816, 5007, 1073746848, 5108, 1073746945, 5740,
+ 1073747567, 5759, 1073747585, 5786, 1073747616, 5866,
+ 1073747694, 5880, 1073747712, 5900, 1073747726, 5905,
+ 1073747744, 5937, 1073747776, 5969, 1073747808, 5996,
+ 1073747822, 6000, 1073747840, 6067, 6103, 6108,
+ 1073748000, 6263, 1073748096, 6312, 6314, 1073748144,
+ 6389, 1073748224, 6430, 1073748304, 6509, 1073748336,
+ 6516, 1073748352, 6571, 1073748417, 6599, 1073748480,
+ 6678, 1073748512, 6740, 6823, 1073748741, 6963,
+ 1073748805, 6987, 1073748867, 7072, 1073748910, 7087,
+ 1073748922, 7141, 1073748992, 7203, 1073749069, 7247,
+ 1073749082, 7293, 1073749225, 7404, 1073749230, 7409,
+ 1073749237, 7414, 1073749248, 7615, 1073749504, 7957,
+ 1073749784, 7965, 1073749792, 8005, 1073749832, 8013,
+ 1073749840, 8023, 8025, 8027, 8029, 1073749855,
+ 8061, 1073749888, 8116, 1073749942, 8124, 8126,
+ 1073749954, 8132, 1073749958, 8140, 1073749968, 8147,
+ 1073749974, 8155, 1073749984, 8172, 1073750002, 8180,
+ 1073750006, 8188};
static const uint16_t kID_StartTable1Size = 84;
static const int32_t kID_StartTable1[84] = {
- 113, 127, 1073741968, 156,
- 258, 263, 1073742090, 275, // NOLINT
- 277, 1073742104, 285, 292,
- 294, 296, 1073742122, 313, // NOLINT
- 1073742140, 319, 1073742149, 329,
- 334, 1073742176, 392, 1073744896, // NOLINT
- 3118, 1073744944, 3166, 1073744992,
- 3300, 1073745131, 3310, 1073745138, // NOLINT
- 3315, 1073745152, 3365, 3367,
- 3373, 1073745200, 3431, 3439, // NOLINT
- 1073745280, 3478, 1073745312, 3494,
- 1073745320, 3502, 1073745328, 3510, // NOLINT
- 1073745336, 3518, 1073745344, 3526,
- 1073745352, 3534, 1073745360, 3542, // NOLINT
- 1073745368, 3550, 1073745925, 4103,
- 1073745953, 4137, 1073745969, 4149, // NOLINT
- 1073745976, 4156, 1073745985, 4246,
- 1073746075, 4255, 1073746081, 4346, // NOLINT
- 1073746172, 4351, 1073746181, 4397,
- 1073746225, 4494, 1073746336, 4538, // NOLINT
- 1073746416, 4607, 1073746944, 8191}; // NOLINT
+ 113, 127, 1073741968, 156, 258, 263,
+ 1073742090, 275, 277, 1073742104, 285, 292,
+ 294, 296, 1073742122, 313, 1073742140, 319,
+ 1073742149, 329, 334, 1073742176, 392, 1073744896,
+ 3118, 1073744944, 3166, 1073744992, 3300, 1073745131,
+ 3310, 1073745138, 3315, 1073745152, 3365, 3367,
+ 3373, 1073745200, 3431, 3439, 1073745280, 3478,
+ 1073745312, 3494, 1073745320, 3502, 1073745328, 3510,
+ 1073745336, 3518, 1073745344, 3526, 1073745352, 3534,
+ 1073745360, 3542, 1073745368, 3550, 1073745925, 4103,
+ 1073745953, 4137, 1073745969, 4149, 1073745976, 4156,
+ 1073745985, 4246, 1073746075, 4255, 1073746081, 4346,
+ 1073746172, 4351, 1073746181, 4397, 1073746225, 4494,
+ 1073746336, 4538, 1073746416, 4607, 1073746944, 8191};
static const uint16_t kID_StartTable2Size = 4;
-static const int32_t kID_StartTable2[4] = {1073741824, 3509, 1073745408,
- 8191}; // NOLINT
+static const int32_t kID_StartTable2[4] = {1073741824, 3509, 1073745408, 8191};
static const uint16_t kID_StartTable3Size = 2;
-static const int32_t kID_StartTable3[2] = {1073741824, 8191}; // NOLINT
+static const int32_t kID_StartTable3[2] = {1073741824, 8191};
static const uint16_t kID_StartTable4Size = 2;
-static const int32_t kID_StartTable4[2] = {1073741824, 8140}; // NOLINT
+static const int32_t kID_StartTable4[2] = {1073741824, 8140};
static const uint16_t kID_StartTable5Size = 100;
static const int32_t kID_StartTable5[100] = {
- 1073741824, 1164, 1073743056, 1277,
- 1073743104, 1548, 1073743376, 1567, // NOLINT
- 1073743402, 1579, 1073743424, 1646,
- 1073743487, 1693, 1073743520, 1775, // NOLINT
- 1073743639, 1823, 1073743650, 1928,
- 1073743755, 1934, 1073743760, 1965, // NOLINT
- 1073743792, 1969, 1073743863, 2049,
- 1073743875, 2053, 1073743879, 2058, // NOLINT
- 1073743884, 2082, 1073743936, 2163,
- 1073744002, 2227, 1073744114, 2295, // NOLINT
- 2299, 1073744138, 2341, 1073744176,
- 2374, 1073744224, 2428, 1073744260, // NOLINT
- 2482, 2511, 1073744352, 2532,
- 1073744358, 2543, 1073744378, 2558, // NOLINT
- 1073744384, 2600, 1073744448, 2626,
- 1073744452, 2635, 1073744480, 2678, // NOLINT
- 2682, 1073744510, 2735, 2737,
- 1073744565, 2742, 1073744569, 2749, // NOLINT
- 2752, 2754, 1073744603, 2781,
- 1073744608, 2794, 1073744626, 2804, // NOLINT
- 1073744641, 2822, 1073744649, 2830,
- 1073744657, 2838, 1073744672, 2854, // NOLINT
- 1073744680, 2862, 1073744688, 2906,
- 1073744732, 2911, 1073744740, 2917, // NOLINT
- 1073744832, 3042, 1073744896, 8191}; // NOLINT
+ 1073741824, 1164, 1073743056, 1277, 1073743104, 1548,
+ 1073743376, 1567, 1073743402, 1579, 1073743424, 1646,
+ 1073743487, 1693, 1073743520, 1775, 1073743639, 1823,
+ 1073743650, 1928, 1073743755, 1934, 1073743760, 1965,
+ 1073743792, 1969, 1073743863, 2049, 1073743875, 2053,
+ 1073743879, 2058, 1073743884, 2082, 1073743936, 2163,
+ 1073744002, 2227, 1073744114, 2295, 2299, 1073744138,
+ 2341, 1073744176, 2374, 1073744224, 2428, 1073744260,
+ 2482, 2511, 1073744352, 2532, 1073744358, 2543,
+ 1073744378, 2558, 1073744384, 2600, 1073744448, 2626,
+ 1073744452, 2635, 1073744480, 2678, 2682, 1073744510,
+ 2735, 2737, 1073744565, 2742, 1073744569, 2749,
+ 2752, 2754, 1073744603, 2781, 1073744608, 2794,
+ 1073744626, 2804, 1073744641, 2822, 1073744649, 2830,
+ 1073744657, 2838, 1073744672, 2854, 1073744680, 2862,
+ 1073744688, 2906, 1073744732, 2911, 1073744740, 2917,
+ 1073744832, 3042, 1073744896, 8191};
static const uint16_t kID_StartTable6Size = 6;
-static const int32_t kID_StartTable6[6] = {1073741824, 6051, 1073747888, 6086,
- 1073747915, 6139}; // NOLINT
+static const int32_t kID_StartTable6[6] = {1073741824, 6051, 1073747888,
+ 6086, 1073747915, 6139};
static const uint16_t kID_StartTable7Size = 48;
static const int32_t kID_StartTable7[48] = {
- 1073748224, 6765, 1073748592, 6873,
- 1073748736, 6918, 1073748755, 6935, // NOLINT
- 6941, 1073748767, 6952, 1073748778,
- 6966, 1073748792, 6972, 6974, // NOLINT
- 1073748800, 6977, 1073748803, 6980,
- 1073748806, 7089, 1073748947, 7485, // NOLINT
- 1073749328, 7567, 1073749394, 7623,
- 1073749488, 7675, 1073749616, 7796, // NOLINT
- 1073749622, 7932, 1073749793, 7994,
- 1073749825, 8026, 1073749862, 8126, // NOLINT
- 1073749954, 8135, 1073749962, 8143,
- 1073749970, 8151, 1073749978, 8156}; // NOLINT
+ 1073748224, 6765, 1073748592, 6873, 1073748736, 6918,
+ 1073748755, 6935, 6941, 1073748767, 6952, 1073748778,
+ 6966, 1073748792, 6972, 6974, 1073748800, 6977,
+ 1073748803, 6980, 1073748806, 7089, 1073748947, 7485,
+ 1073749328, 7567, 1073749394, 7623, 1073749488, 7675,
+ 1073749616, 7796, 1073749622, 7932, 1073749793, 7994,
+ 1073749825, 8026, 1073749862, 8126, 1073749954, 8135,
+ 1073749962, 8143, 1073749970, 8151, 1073749978, 8156};
bool ID_Start::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
@@ -844,115 +684,82 @@ bool ID_Start::Is(uchar c) {
static const uint16_t kID_ContinueTable0Size = 315;
static const int32_t kID_ContinueTable0[315] = {
- 1073741872, 57, 95, 183,
- 1073742592, 879, 903, 1073742979, // NOLINT
- 1159, 1073743249, 1469, 1471,
- 1073743297, 1474, 1073743300, 1477, // NOLINT
- 1479, 1073743376, 1562, 1073743435,
- 1641, 1648, 1073743574, 1756, // NOLINT
- 1073743583, 1764, 1073743591, 1768,
- 1073743594, 1773, 1073743600, 1785, // NOLINT
- 1809, 1073743664, 1866, 1073743782,
- 1968, 1073743808, 1993, 1073743851, // NOLINT
- 2035, 1073743894, 2073, 1073743899,
- 2083, 1073743909, 2087, 1073743913, // NOLINT
- 2093, 1073743961, 2139, 1073744100,
- 2307, 1073744186, 2364, 1073744190, // NOLINT
- 2383, 1073744209, 2391, 1073744226,
- 2403, 1073744230, 2415, 1073744257, // NOLINT
- 2435, 2492, 1073744318, 2500,
- 1073744327, 2504, 1073744331, 2509, // NOLINT
- 2519, 1073744354, 2531, 1073744358,
- 2543, 1073744385, 2563, 2620, // NOLINT
- 1073744446, 2626, 1073744455, 2632,
- 1073744459, 2637, 2641, 1073744486, // NOLINT
- 2673, 2677, 1073744513, 2691,
- 2748, 1073744574, 2757, 1073744583, // NOLINT
- 2761, 1073744587, 2765, 1073744610,
- 2787, 1073744614, 2799, 1073744641, // NOLINT
- 2819, 2876, 1073744702, 2884,
- 1073744711, 2888, 1073744715, 2893, // NOLINT
- 1073744726, 2903, 1073744738, 2915,
- 1073744742, 2927, 2946, 1073744830, // NOLINT
- 3010, 1073744838, 3016, 1073744842,
- 3021, 3031, 1073744870, 3055, // NOLINT
- 1073744896, 3075, 1073744958, 3140,
- 1073744966, 3144, 1073744970, 3149, // NOLINT
- 1073744981, 3158, 1073744994, 3171,
- 1073744998, 3183, 1073745025, 3203, // NOLINT
- 3260, 1073745086, 3268, 1073745094,
- 3272, 1073745098, 3277, 1073745109, // NOLINT
- 3286, 1073745122, 3299, 1073745126,
- 3311, 1073745153, 3331, 1073745214, // NOLINT
- 3396, 1073745222, 3400, 1073745226,
- 3405, 3415, 1073745250, 3427, // NOLINT
- 1073745254, 3439, 1073745282, 3459,
- 3530, 1073745359, 3540, 3542, // NOLINT
- 1073745368, 3551, 1073745382, 3567,
- 1073745394, 3571, 3633, 1073745460, // NOLINT
- 3642, 1073745479, 3662, 1073745488,
- 3673, 3761, 1073745588, 3769, // NOLINT
- 1073745595, 3772, 1073745608, 3789,
- 1073745616, 3801, 1073745688, 3865, // NOLINT
- 1073745696, 3881, 3893, 3895,
- 3897, 1073745726, 3903, 1073745777, // NOLINT
- 3972, 1073745798, 3975, 1073745805,
- 3991, 1073745817, 4028, 4038, // NOLINT
- 1073745963, 4158, 1073745984, 4169,
- 1073746006, 4185, 1073746014, 4192, // NOLINT
- 1073746018, 4196, 1073746023, 4205,
- 1073746033, 4212, 1073746050, 4237, // NOLINT
- 1073746063, 4253, 1073746781, 4959,
- 1073746793, 4977, 1073747730, 5908, // NOLINT
- 1073747762, 5940, 1073747794, 5971,
- 1073747826, 6003, 1073747892, 6099, // NOLINT
- 6109, 1073747936, 6121, 1073747979,
- 6157, 1073747984, 6169, 6313, // NOLINT
- 1073748256, 6443, 1073748272, 6459,
- 1073748294, 6479, 1073748400, 6592, // NOLINT
- 1073748424, 6601, 1073748432, 6618,
- 1073748503, 6683, 1073748565, 6750, // NOLINT
- 1073748576, 6780, 1073748607, 6793,
- 1073748624, 6809, 1073748656, 6845, // NOLINT
- 1073748736, 6916, 1073748788, 6980,
- 1073748816, 7001, 1073748843, 7027, // NOLINT
- 1073748864, 7042, 1073748897, 7085,
- 1073748912, 7097, 1073748966, 7155, // NOLINT
- 1073749028, 7223, 1073749056, 7241,
- 1073749072, 7257, 1073749200, 7378, // NOLINT
- 1073749204, 7400, 7405, 1073749234,
- 7412, 1073749240, 7417, 1073749440, // NOLINT
- 7669, 1073749500, 7679}; // NOLINT
+ 1073741872, 57, 95, 183, 1073742592, 879,
+ 903, 1073742979, 1159, 1073743249, 1469, 1471,
+ 1073743297, 1474, 1073743300, 1477, 1479, 1073743376,
+ 1562, 1073743435, 1641, 1648, 1073743574, 1756,
+ 1073743583, 1764, 1073743591, 1768, 1073743594, 1773,
+ 1073743600, 1785, 1809, 1073743664, 1866, 1073743782,
+ 1968, 1073743808, 1993, 1073743851, 2035, 1073743894,
+ 2073, 1073743899, 2083, 1073743909, 2087, 1073743913,
+ 2093, 1073743961, 2139, 1073744100, 2307, 1073744186,
+ 2364, 1073744190, 2383, 1073744209, 2391, 1073744226,
+ 2403, 1073744230, 2415, 1073744257, 2435, 2492,
+ 1073744318, 2500, 1073744327, 2504, 1073744331, 2509,
+ 2519, 1073744354, 2531, 1073744358, 2543, 1073744385,
+ 2563, 2620, 1073744446, 2626, 1073744455, 2632,
+ 1073744459, 2637, 2641, 1073744486, 2673, 2677,
+ 1073744513, 2691, 2748, 1073744574, 2757, 1073744583,
+ 2761, 1073744587, 2765, 1073744610, 2787, 1073744614,
+ 2799, 1073744641, 2819, 2876, 1073744702, 2884,
+ 1073744711, 2888, 1073744715, 2893, 1073744726, 2903,
+ 1073744738, 2915, 1073744742, 2927, 2946, 1073744830,
+ 3010, 1073744838, 3016, 1073744842, 3021, 3031,
+ 1073744870, 3055, 1073744896, 3075, 1073744958, 3140,
+ 1073744966, 3144, 1073744970, 3149, 1073744981, 3158,
+ 1073744994, 3171, 1073744998, 3183, 1073745025, 3203,
+ 3260, 1073745086, 3268, 1073745094, 3272, 1073745098,
+ 3277, 1073745109, 3286, 1073745122, 3299, 1073745126,
+ 3311, 1073745153, 3331, 1073745214, 3396, 1073745222,
+ 3400, 1073745226, 3405, 3415, 1073745250, 3427,
+ 1073745254, 3439, 1073745282, 3459, 3530, 1073745359,
+ 3540, 3542, 1073745368, 3551, 1073745382, 3567,
+ 1073745394, 3571, 3633, 1073745460, 3642, 1073745479,
+ 3662, 1073745488, 3673, 3761, 1073745588, 3769,
+ 1073745595, 3772, 1073745608, 3789, 1073745616, 3801,
+ 1073745688, 3865, 1073745696, 3881, 3893, 3895,
+ 3897, 1073745726, 3903, 1073745777, 3972, 1073745798,
+ 3975, 1073745805, 3991, 1073745817, 4028, 4038,
+ 1073745963, 4158, 1073745984, 4169, 1073746006, 4185,
+ 1073746014, 4192, 1073746018, 4196, 1073746023, 4205,
+ 1073746033, 4212, 1073746050, 4237, 1073746063, 4253,
+ 1073746781, 4959, 1073746793, 4977, 1073747730, 5908,
+ 1073747762, 5940, 1073747794, 5971, 1073747826, 6003,
+ 1073747892, 6099, 6109, 1073747936, 6121, 1073747979,
+ 6157, 1073747984, 6169, 6313, 1073748256, 6443,
+ 1073748272, 6459, 1073748294, 6479, 1073748400, 6592,
+ 1073748424, 6601, 1073748432, 6618, 1073748503, 6683,
+ 1073748565, 6750, 1073748576, 6780, 1073748607, 6793,
+ 1073748624, 6809, 1073748656, 6845, 1073748736, 6916,
+ 1073748788, 6980, 1073748816, 7001, 1073748843, 7027,
+ 1073748864, 7042, 1073748897, 7085, 1073748912, 7097,
+ 1073748966, 7155, 1073749028, 7223, 1073749056, 7241,
+ 1073749072, 7257, 1073749200, 7378, 1073749204, 7400,
+ 7405, 1073749234, 7412, 1073749240, 7417, 1073749440,
+ 7669, 1073749500, 7679};
static const uint16_t kID_ContinueTable1Size = 19;
static const int32_t kID_ContinueTable1[19] = {
- 1073741836, 13, 1073741887, 64,
- 84, 1073742032, 220, 225, // NOLINT
- 1073742053, 240, 1073745135, 3313,
- 3455, 1073745376, 3583, 1073745962, // NOLINT
- 4143, 1073746073, 4250}; // NOLINT
+ 1073741836, 13, 1073741887, 64, 84,
+ 1073742032, 220, 225, 1073742053, 240,
+ 1073745135, 3313, 3455, 1073745376, 3583,
+ 1073745962, 4143, 1073746073, 4250};
static const uint16_t kID_ContinueTable5Size = 63;
static const int32_t kID_ContinueTable5[63] = {
- 1073743392, 1577, 1647, 1073743476,
- 1661, 1695, 1073743600, 1777, // NOLINT
- 2050, 2054, 2059, 1073743907,
- 2087, 1073744000, 2177, 1073744052, // NOLINT
- 2244, 1073744080, 2265, 1073744096,
- 2289, 1073744128, 2313, 1073744166, // NOLINT
- 2349, 1073744199, 2387, 1073744256,
- 2435, 1073744307, 2496, 1073744336, // NOLINT
- 2521, 2533, 1073744368, 2553,
- 1073744425, 2614, 2627, 1073744460, // NOLINT
- 2637, 1073744464, 2649, 1073744507,
- 2685, 2736, 1073744562, 2740, // NOLINT
- 1073744567, 2744, 1073744574, 2751,
- 2753, 1073744619, 2799, 1073744629, // NOLINT
- 2806, 1073744867, 3050, 1073744876,
- 3053, 1073744880, 3065}; // NOLINT
+ 1073743392, 1577, 1647, 1073743476, 1661, 1695,
+ 1073743600, 1777, 2050, 2054, 2059, 1073743907,
+ 2087, 1073744000, 2177, 1073744052, 2244, 1073744080,
+ 2265, 1073744096, 2289, 1073744128, 2313, 1073744166,
+ 2349, 1073744199, 2387, 1073744256, 2435, 1073744307,
+ 2496, 1073744336, 2521, 2533, 1073744368, 2553,
+ 1073744425, 2614, 2627, 1073744460, 2637, 1073744464,
+ 2649, 1073744507, 2685, 2736, 1073744562, 2740,
+ 1073744567, 2744, 1073744574, 2751, 2753, 1073744619,
+ 2799, 1073744629, 2806, 1073744867, 3050, 1073744876,
+ 3053, 1073744880, 3065};
static const uint16_t kID_ContinueTable7Size = 12;
static const int32_t kID_ContinueTable7[12] = {
- 6942, 1073749504, 7695, 1073749536,
- 7725, 1073749555, 7732, 1073749581, // NOLINT
- 7759, 1073749776, 7961, 7999}; // NOLINT
+ 6942, 1073749504, 7695, 1073749536, 7725, 1073749555,
+ 7732, 1073749581, 7759, 1073749776, 7961, 7999};
bool ID_Continue::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
@@ -973,13 +780,11 @@ bool ID_Continue::Is(uchar c) {
// point.properties)
static const uint16_t kWhiteSpaceTable0Size = 6;
-static const int32_t kWhiteSpaceTable0[6] = {9, 1073741835, 12,
- 32, 160, 5760}; // NOLINT
+static const int32_t kWhiteSpaceTable0[6] = {9, 1073741835, 12, 32, 160, 5760};
static const uint16_t kWhiteSpaceTable1Size = 5;
-static const int32_t kWhiteSpaceTable1[5] = {1073741824, 10, 47, 95,
- 4096}; // NOLINT
+static const int32_t kWhiteSpaceTable1[5] = {1073741824, 10, 47, 95, 4096};
static const uint16_t kWhiteSpaceTable7Size = 1;
-static const int32_t kWhiteSpaceTable7[1] = {7935}; // NOLINT
+static const int32_t kWhiteSpaceTable7[1] = {7935};
bool WhiteSpace::Is(uchar c) {
int chunk_index = c >> 13;
switch (chunk_index) {
@@ -996,270 +801,189 @@ bool WhiteSpace::Is(uchar c) {
#endif // !V8_INTL_SUPPORT
#ifndef V8_INTL_SUPPORT
-static const MultiCharacterSpecialCase<2> kToLowercaseMultiStrings0[2] =
- { // NOLINT
- {{105, 775}},
- {{kSentinel}}}; // NOLINT
-static const uint16_t kToLowercaseTable0Size = 488; // NOLINT
+static const MultiCharacterSpecialCase<2> kToLowercaseMultiStrings0[2] = {
+ {{105, 775}}, {{kSentinel}}};
+static const uint16_t kToLowercaseTable0Size = 488;
static const int32_t kToLowercaseTable0[976] = {
- 1073741889, 128, 90, 128, 1073742016, 128,
- 214, 128, 1073742040, 128, 222, 128,
- 256, 4, 258, 4, // NOLINT
- 260, 4, 262, 4, 264, 4,
- 266, 4, 268, 4, 270, 4,
- 272, 4, 274, 4, // NOLINT
- 276, 4, 278, 4, 280, 4,
- 282, 4, 284, 4, 286, 4,
- 288, 4, 290, 4, // NOLINT
- 292, 4, 294, 4, 296, 4,
- 298, 4, 300, 4, 302, 4,
- 304, 1, 306, 4, // NOLINT
- 308, 4, 310, 4, 313, 4,
- 315, 4, 317, 4, 319, 4,
- 321, 4, 323, 4, // NOLINT
- 325, 4, 327, 4, 330, 4,
- 332, 4, 334, 4, 336, 4,
- 338, 4, 340, 4, // NOLINT
- 342, 4, 344, 4, 346, 4,
- 348, 4, 350, 4, 352, 4,
- 354, 4, 356, 4, // NOLINT
- 358, 4, 360, 4, 362, 4,
- 364, 4, 366, 4, 368, 4,
- 370, 4, 372, 4, // NOLINT
- 374, 4, 376, -484, 377, 4,
- 379, 4, 381, 4, 385, 840,
- 386, 4, 388, 4, // NOLINT
- 390, 824, 391, 4, 1073742217, 820,
- 394, 820, 395, 4, 398, 316,
- 399, 808, 400, 812, // NOLINT
- 401, 4, 403, 820, 404, 828,
- 406, 844, 407, 836, 408, 4,
- 412, 844, 413, 852, // NOLINT
- 415, 856, 416, 4, 418, 4,
- 420, 4, 422, 872, 423, 4,
- 425, 872, 428, 4, // NOLINT
- 430, 872, 431, 4, 1073742257, 868,
- 434, 868, 435, 4, 437, 4,
- 439, 876, 440, 4, // NOLINT
- 444, 4, 452, 8, 453, 4,
- 455, 8, 456, 4, 458, 8,
- 459, 4, 461, 4, // NOLINT
- 463, 4, 465, 4, 467, 4,
- 469, 4, 471, 4, 473, 4,
- 475, 4, 478, 4, // NOLINT
- 480, 4, 482, 4, 484, 4,
- 486, 4, 488, 4, 490, 4,
- 492, 4, 494, 4, // NOLINT
- 497, 8, 498, 4, 500, 4,
- 502, -388, 503, -224, 504, 4,
- 506, 4, 508, 4, // NOLINT
- 510, 4, 512, 4, 514, 4,
- 516, 4, 518, 4, 520, 4,
- 522, 4, 524, 4, // NOLINT
- 526, 4, 528, 4, 530, 4,
- 532, 4, 534, 4, 536, 4,
- 538, 4, 540, 4, // NOLINT
- 542, 4, 544, -520, 546, 4,
- 548, 4, 550, 4, 552, 4,
- 554, 4, 556, 4, // NOLINT
- 558, 4, 560, 4, 562, 4,
- 570, 43180, 571, 4, 573, -652,
- 574, 43168, 577, 4, // NOLINT
- 579, -780, 580, 276, 581, 284,
- 582, 4, 584, 4, 586, 4,
- 588, 4, 590, 4, // NOLINT
- 880, 4, 882, 4, 886, 4,
- 895, 464, 902, 152, 1073742728, 148,
- 906, 148, 908, 256, // NOLINT
- 1073742734, 252, 911, 252, 1073742737, 128,
- 929, 128, 931, 6, 1073742756, 128,
- 939, 128, 975, 32, // NOLINT
- 984, 4, 986, 4, 988, 4,
- 990, 4, 992, 4, 994, 4,
- 996, 4, 998, 4, // NOLINT
- 1000, 4, 1002, 4, 1004, 4,
- 1006, 4, 1012, -240, 1015, 4,
- 1017, -28, 1018, 4, // NOLINT
- 1073742845, -520, 1023, -520, 1073742848, 320,
- 1039, 320, 1073742864, 128, 1071, 128,
- 1120, 4, 1122, 4, // NOLINT
- 1124, 4, 1126, 4, 1128, 4,
- 1130, 4, 1132, 4, 1134, 4,
- 1136, 4, 1138, 4, // NOLINT
- 1140, 4, 1142, 4, 1144, 4,
- 1146, 4, 1148, 4, 1150, 4,
- 1152, 4, 1162, 4, // NOLINT
- 1164, 4, 1166, 4, 1168, 4,
- 1170, 4, 1172, 4, 1174, 4,
- 1176, 4, 1178, 4, // NOLINT
- 1180, 4, 1182, 4, 1184, 4,
- 1186, 4, 1188, 4, 1190, 4,
- 1192, 4, 1194, 4, // NOLINT
- 1196, 4, 1198, 4, 1200, 4,
- 1202, 4, 1204, 4, 1206, 4,
- 1208, 4, 1210, 4, // NOLINT
- 1212, 4, 1214, 4, 1216, 60,
- 1217, 4, 1219, 4, 1221, 4,
- 1223, 4, 1225, 4, // NOLINT
- 1227, 4, 1229, 4, 1232, 4,
- 1234, 4, 1236, 4, 1238, 4,
- 1240, 4, 1242, 4, // NOLINT
- 1244, 4, 1246, 4, 1248, 4,
- 1250, 4, 1252, 4, 1254, 4,
- 1256, 4, 1258, 4, // NOLINT
- 1260, 4, 1262, 4, 1264, 4,
- 1266, 4, 1268, 4, 1270, 4,
- 1272, 4, 1274, 4, // NOLINT
- 1276, 4, 1278, 4, 1280, 4,
- 1282, 4, 1284, 4, 1286, 4,
- 1288, 4, 1290, 4, // NOLINT
- 1292, 4, 1294, 4, 1296, 4,
- 1298, 4, 1300, 4, 1302, 4,
- 1304, 4, 1306, 4, // NOLINT
- 1308, 4, 1310, 4, 1312, 4,
- 1314, 4, 1316, 4, 1318, 4,
- 1320, 4, 1322, 4, // NOLINT
- 1324, 4, 1326, 4, 1073743153, 192,
- 1366, 192, 1073746080, 29056, 4293, 29056,
- 4295, 29056, 4301, 29056, // NOLINT
- 7680, 4, 7682, 4, 7684, 4,
- 7686, 4, 7688, 4, 7690, 4,
- 7692, 4, 7694, 4, // NOLINT
- 7696, 4, 7698, 4, 7700, 4,
- 7702, 4, 7704, 4, 7706, 4,
- 7708, 4, 7710, 4, // NOLINT
- 7712, 4, 7714, 4, 7716, 4,
- 7718, 4, 7720, 4, 7722, 4,
- 7724, 4, 7726, 4, // NOLINT
- 7728, 4, 7730, 4, 7732, 4,
- 7734, 4, 7736, 4, 7738, 4,
- 7740, 4, 7742, 4, // NOLINT
- 7744, 4, 7746, 4, 7748, 4,
- 7750, 4, 7752, 4, 7754, 4,
- 7756, 4, 7758, 4, // NOLINT
- 7760, 4, 7762, 4, 7764, 4,
- 7766, 4, 7768, 4, 7770, 4,
- 7772, 4, 7774, 4, // NOLINT
- 7776, 4, 7778, 4, 7780, 4,
- 7782, 4, 7784, 4, 7786, 4,
- 7788, 4, 7790, 4, // NOLINT
- 7792, 4, 7794, 4, 7796, 4,
- 7798, 4, 7800, 4, 7802, 4,
- 7804, 4, 7806, 4, // NOLINT
- 7808, 4, 7810, 4, 7812, 4,
- 7814, 4, 7816, 4, 7818, 4,
- 7820, 4, 7822, 4, // NOLINT
- 7824, 4, 7826, 4, 7828, 4,
- 7838, -30460, 7840, 4, 7842, 4,
- 7844, 4, 7846, 4, // NOLINT
- 7848, 4, 7850, 4, 7852, 4,
- 7854, 4, 7856, 4, 7858, 4,
- 7860, 4, 7862, 4, // NOLINT
- 7864, 4, 7866, 4, 7868, 4,
- 7870, 4, 7872, 4, 7874, 4,
- 7876, 4, 7878, 4, // NOLINT
- 7880, 4, 7882, 4, 7884, 4,
- 7886, 4, 7888, 4, 7890, 4,
- 7892, 4, 7894, 4, // NOLINT
- 7896, 4, 7898, 4, 7900, 4,
- 7902, 4, 7904, 4, 7906, 4,
- 7908, 4, 7910, 4, // NOLINT
- 7912, 4, 7914, 4, 7916, 4,
- 7918, 4, 7920, 4, 7922, 4,
- 7924, 4, 7926, 4, // NOLINT
- 7928, 4, 7930, 4, 7932, 4,
- 7934, 4, 1073749768, -32, 7951, -32,
- 1073749784, -32, 7965, -32, // NOLINT
- 1073749800, -32, 7983, -32, 1073749816, -32,
- 7999, -32, 1073749832, -32, 8013, -32,
- 8025, -32, 8027, -32, // NOLINT
- 8029, -32, 8031, -32, 1073749864, -32,
- 8047, -32, 1073749896, -32, 8079, -32,
- 1073749912, -32, 8095, -32, // NOLINT
- 1073749928, -32, 8111, -32, 1073749944, -32,
- 8121, -32, 1073749946, -296, 8123, -296,
- 8124, -36, 1073749960, -344, // NOLINT
- 8139, -344, 8140, -36, 1073749976, -32,
- 8153, -32, 1073749978, -400, 8155, -400,
- 1073749992, -32, 8169, -32, // NOLINT
- 1073749994, -448, 8171, -448, 8172, -28,
- 1073750008, -512, 8185, -512, 1073750010, -504,
- 8187, -504, 8188, -36}; // NOLINT
-static const uint16_t kToLowercaseMultiStrings0Size = 2; // NOLINT
-static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings1[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kToLowercaseTable1Size = 79; // NOLINT
+ 1073741889, 128, 90, 128, 1073742016, 128, 214, 128,
+ 1073742040, 128, 222, 128, 256, 4, 258, 4,
+ 260, 4, 262, 4, 264, 4, 266, 4,
+ 268, 4, 270, 4, 272, 4, 274, 4,
+ 276, 4, 278, 4, 280, 4, 282, 4,
+ 284, 4, 286, 4, 288, 4, 290, 4,
+ 292, 4, 294, 4, 296, 4, 298, 4,
+ 300, 4, 302, 4, 304, 1, 306, 4,
+ 308, 4, 310, 4, 313, 4, 315, 4,
+ 317, 4, 319, 4, 321, 4, 323, 4,
+ 325, 4, 327, 4, 330, 4, 332, 4,
+ 334, 4, 336, 4, 338, 4, 340, 4,
+ 342, 4, 344, 4, 346, 4, 348, 4,
+ 350, 4, 352, 4, 354, 4, 356, 4,
+ 358, 4, 360, 4, 362, 4, 364, 4,
+ 366, 4, 368, 4, 370, 4, 372, 4,
+ 374, 4, 376, -484, 377, 4, 379, 4,
+ 381, 4, 385, 840, 386, 4, 388, 4,
+ 390, 824, 391, 4, 1073742217, 820, 394, 820,
+ 395, 4, 398, 316, 399, 808, 400, 812,
+ 401, 4, 403, 820, 404, 828, 406, 844,
+ 407, 836, 408, 4, 412, 844, 413, 852,
+ 415, 856, 416, 4, 418, 4, 420, 4,
+ 422, 872, 423, 4, 425, 872, 428, 4,
+ 430, 872, 431, 4, 1073742257, 868, 434, 868,
+ 435, 4, 437, 4, 439, 876, 440, 4,
+ 444, 4, 452, 8, 453, 4, 455, 8,
+ 456, 4, 458, 8, 459, 4, 461, 4,
+ 463, 4, 465, 4, 467, 4, 469, 4,
+ 471, 4, 473, 4, 475, 4, 478, 4,
+ 480, 4, 482, 4, 484, 4, 486, 4,
+ 488, 4, 490, 4, 492, 4, 494, 4,
+ 497, 8, 498, 4, 500, 4, 502, -388,
+ 503, -224, 504, 4, 506, 4, 508, 4,
+ 510, 4, 512, 4, 514, 4, 516, 4,
+ 518, 4, 520, 4, 522, 4, 524, 4,
+ 526, 4, 528, 4, 530, 4, 532, 4,
+ 534, 4, 536, 4, 538, 4, 540, 4,
+ 542, 4, 544, -520, 546, 4, 548, 4,
+ 550, 4, 552, 4, 554, 4, 556, 4,
+ 558, 4, 560, 4, 562, 4, 570, 43180,
+ 571, 4, 573, -652, 574, 43168, 577, 4,
+ 579, -780, 580, 276, 581, 284, 582, 4,
+ 584, 4, 586, 4, 588, 4, 590, 4,
+ 880, 4, 882, 4, 886, 4, 895, 464,
+ 902, 152, 1073742728, 148, 906, 148, 908, 256,
+ 1073742734, 252, 911, 252, 1073742737, 128, 929, 128,
+ 931, 6, 1073742756, 128, 939, 128, 975, 32,
+ 984, 4, 986, 4, 988, 4, 990, 4,
+ 992, 4, 994, 4, 996, 4, 998, 4,
+ 1000, 4, 1002, 4, 1004, 4, 1006, 4,
+ 1012, -240, 1015, 4, 1017, -28, 1018, 4,
+ 1073742845, -520, 1023, -520, 1073742848, 320, 1039, 320,
+ 1073742864, 128, 1071, 128, 1120, 4, 1122, 4,
+ 1124, 4, 1126, 4, 1128, 4, 1130, 4,
+ 1132, 4, 1134, 4, 1136, 4, 1138, 4,
+ 1140, 4, 1142, 4, 1144, 4, 1146, 4,
+ 1148, 4, 1150, 4, 1152, 4, 1162, 4,
+ 1164, 4, 1166, 4, 1168, 4, 1170, 4,
+ 1172, 4, 1174, 4, 1176, 4, 1178, 4,
+ 1180, 4, 1182, 4, 1184, 4, 1186, 4,
+ 1188, 4, 1190, 4, 1192, 4, 1194, 4,
+ 1196, 4, 1198, 4, 1200, 4, 1202, 4,
+ 1204, 4, 1206, 4, 1208, 4, 1210, 4,
+ 1212, 4, 1214, 4, 1216, 60, 1217, 4,
+ 1219, 4, 1221, 4, 1223, 4, 1225, 4,
+ 1227, 4, 1229, 4, 1232, 4, 1234, 4,
+ 1236, 4, 1238, 4, 1240, 4, 1242, 4,
+ 1244, 4, 1246, 4, 1248, 4, 1250, 4,
+ 1252, 4, 1254, 4, 1256, 4, 1258, 4,
+ 1260, 4, 1262, 4, 1264, 4, 1266, 4,
+ 1268, 4, 1270, 4, 1272, 4, 1274, 4,
+ 1276, 4, 1278, 4, 1280, 4, 1282, 4,
+ 1284, 4, 1286, 4, 1288, 4, 1290, 4,
+ 1292, 4, 1294, 4, 1296, 4, 1298, 4,
+ 1300, 4, 1302, 4, 1304, 4, 1306, 4,
+ 1308, 4, 1310, 4, 1312, 4, 1314, 4,
+ 1316, 4, 1318, 4, 1320, 4, 1322, 4,
+ 1324, 4, 1326, 4, 1073743153, 192, 1366, 192,
+ 1073746080, 29056, 4293, 29056, 4295, 29056, 4301, 29056,
+ 7680, 4, 7682, 4, 7684, 4, 7686, 4,
+ 7688, 4, 7690, 4, 7692, 4, 7694, 4,
+ 7696, 4, 7698, 4, 7700, 4, 7702, 4,
+ 7704, 4, 7706, 4, 7708, 4, 7710, 4,
+ 7712, 4, 7714, 4, 7716, 4, 7718, 4,
+ 7720, 4, 7722, 4, 7724, 4, 7726, 4,
+ 7728, 4, 7730, 4, 7732, 4, 7734, 4,
+ 7736, 4, 7738, 4, 7740, 4, 7742, 4,
+ 7744, 4, 7746, 4, 7748, 4, 7750, 4,
+ 7752, 4, 7754, 4, 7756, 4, 7758, 4,
+ 7760, 4, 7762, 4, 7764, 4, 7766, 4,
+ 7768, 4, 7770, 4, 7772, 4, 7774, 4,
+ 7776, 4, 7778, 4, 7780, 4, 7782, 4,
+ 7784, 4, 7786, 4, 7788, 4, 7790, 4,
+ 7792, 4, 7794, 4, 7796, 4, 7798, 4,
+ 7800, 4, 7802, 4, 7804, 4, 7806, 4,
+ 7808, 4, 7810, 4, 7812, 4, 7814, 4,
+ 7816, 4, 7818, 4, 7820, 4, 7822, 4,
+ 7824, 4, 7826, 4, 7828, 4, 7838, -30460,
+ 7840, 4, 7842, 4, 7844, 4, 7846, 4,
+ 7848, 4, 7850, 4, 7852, 4, 7854, 4,
+ 7856, 4, 7858, 4, 7860, 4, 7862, 4,
+ 7864, 4, 7866, 4, 7868, 4, 7870, 4,
+ 7872, 4, 7874, 4, 7876, 4, 7878, 4,
+ 7880, 4, 7882, 4, 7884, 4, 7886, 4,
+ 7888, 4, 7890, 4, 7892, 4, 7894, 4,
+ 7896, 4, 7898, 4, 7900, 4, 7902, 4,
+ 7904, 4, 7906, 4, 7908, 4, 7910, 4,
+ 7912, 4, 7914, 4, 7916, 4, 7918, 4,
+ 7920, 4, 7922, 4, 7924, 4, 7926, 4,
+ 7928, 4, 7930, 4, 7932, 4, 7934, 4,
+ 1073749768, -32, 7951, -32, 1073749784, -32, 7965, -32,
+ 1073749800, -32, 7983, -32, 1073749816, -32, 7999, -32,
+ 1073749832, -32, 8013, -32, 8025, -32, 8027, -32,
+ 8029, -32, 8031, -32, 1073749864, -32, 8047, -32,
+ 1073749896, -32, 8079, -32, 1073749912, -32, 8095, -32,
+ 1073749928, -32, 8111, -32, 1073749944, -32, 8121, -32,
+ 1073749946, -296, 8123, -296, 8124, -36, 1073749960, -344,
+ 8139, -344, 8140, -36, 1073749976, -32, 8153, -32,
+ 1073749978, -400, 8155, -400, 1073749992, -32, 8169, -32,
+ 1073749994, -448, 8171, -448, 8172, -28, 1073750008, -512,
+ 8185, -512, 1073750010, -504, 8187, -504, 8188, -36};
+static const uint16_t kToLowercaseMultiStrings0Size = 2;
+static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings1[1] = {
+ {{kSentinel}}};
+static const uint16_t kToLowercaseTable1Size = 79;
static const int32_t kToLowercaseTable1[158] = {
- 294, -30068, 298, -33532, 299, -33048, 306,
- 112, 1073742176, 64, 367, 64, 387, 4,
- 1073743030, 104, // NOLINT
- 1231, 104, 1073744896, 192, 3118, 192, 3168,
- 4, 3170, -42972, 3171, -15256, 3172, -42908,
- 3175, 4, // NOLINT
- 3177, 4, 3179, 4, 3181, -43120, 3182,
- -42996, 3183, -43132, 3184, -43128, 3186, 4,
- 3189, 4, // NOLINT
- 1073745022, -43260, 3199, -43260, 3200, 4, 3202,
- 4, 3204, 4, 3206, 4, 3208, 4,
- 3210, 4, // NOLINT
- 3212, 4, 3214, 4, 3216, 4, 3218,
- 4, 3220, 4, 3222, 4, 3224, 4,
- 3226, 4, // NOLINT
- 3228, 4, 3230, 4, 3232, 4, 3234,
- 4, 3236, 4, 3238, 4, 3240, 4,
- 3242, 4, // NOLINT
- 3244, 4, 3246, 4, 3248, 4, 3250,
- 4, 3252, 4, 3254, 4, 3256, 4,
- 3258, 4, // NOLINT
- 3260, 4, 3262, 4, 3264, 4, 3266,
- 4, 3268, 4, 3270, 4, 3272, 4,
- 3274, 4, // NOLINT
- 3276, 4, 3278, 4, 3280, 4, 3282,
- 4, 3284, 4, 3286, 4, 3288, 4,
- 3290, 4, // NOLINT
- 3292, 4, 3294, 4, 3296, 4, 3298,
- 4, 3307, 4, 3309, 4, 3314, 4}; // NOLINT
-static const uint16_t kToLowercaseMultiStrings1Size = 1; // NOLINT
-static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings5[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kToLowercaseTable5Size = 103; // NOLINT
+ 294, -30068, 298, -33532, 299, -33048, 306, 112,
+ 1073742176, 64, 367, 64, 387, 4, 1073743030, 104,
+ 1231, 104, 1073744896, 192, 3118, 192, 3168, 4,
+ 3170, -42972, 3171, -15256, 3172, -42908, 3175, 4,
+ 3177, 4, 3179, 4, 3181, -43120, 3182, -42996,
+ 3183, -43132, 3184, -43128, 3186, 4, 3189, 4,
+ 1073745022, -43260, 3199, -43260, 3200, 4, 3202, 4,
+ 3204, 4, 3206, 4, 3208, 4, 3210, 4,
+ 3212, 4, 3214, 4, 3216, 4, 3218, 4,
+ 3220, 4, 3222, 4, 3224, 4, 3226, 4,
+ 3228, 4, 3230, 4, 3232, 4, 3234, 4,
+ 3236, 4, 3238, 4, 3240, 4, 3242, 4,
+ 3244, 4, 3246, 4, 3248, 4, 3250, 4,
+ 3252, 4, 3254, 4, 3256, 4, 3258, 4,
+ 3260, 4, 3262, 4, 3264, 4, 3266, 4,
+ 3268, 4, 3270, 4, 3272, 4, 3274, 4,
+ 3276, 4, 3278, 4, 3280, 4, 3282, 4,
+ 3284, 4, 3286, 4, 3288, 4, 3290, 4,
+ 3292, 4, 3294, 4, 3296, 4, 3298, 4,
+ 3307, 4, 3309, 4, 3314, 4};
+static const uint16_t kToLowercaseMultiStrings1Size = 1;
+static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings5[1] = {
+ {{kSentinel}}};
+static const uint16_t kToLowercaseTable5Size = 103;
static const int32_t kToLowercaseTable5[206] = {
- 1600, 4, 1602, 4, 1604, 4, 1606, 4,
- 1608, 4, 1610, 4, 1612, 4, 1614, 4, // NOLINT
- 1616, 4, 1618, 4, 1620, 4, 1622, 4,
- 1624, 4, 1626, 4, 1628, 4, 1630, 4, // NOLINT
- 1632, 4, 1634, 4, 1636, 4, 1638, 4,
- 1640, 4, 1642, 4, 1644, 4, 1664, 4, // NOLINT
- 1666, 4, 1668, 4, 1670, 4, 1672, 4,
- 1674, 4, 1676, 4, 1678, 4, 1680, 4, // NOLINT
- 1682, 4, 1684, 4, 1686, 4, 1688, 4,
- 1690, 4, 1826, 4, 1828, 4, 1830, 4, // NOLINT
- 1832, 4, 1834, 4, 1836, 4, 1838, 4,
- 1842, 4, 1844, 4, 1846, 4, 1848, 4, // NOLINT
- 1850, 4, 1852, 4, 1854, 4, 1856, 4,
- 1858, 4, 1860, 4, 1862, 4, 1864, 4, // NOLINT
- 1866, 4, 1868, 4, 1870, 4, 1872, 4,
- 1874, 4, 1876, 4, 1878, 4, 1880, 4, // NOLINT
- 1882, 4, 1884, 4, 1886, 4, 1888, 4,
- 1890, 4, 1892, 4, 1894, 4, 1896, 4, // NOLINT
- 1898, 4, 1900, 4, 1902, 4, 1913, 4,
- 1915, 4, 1917, -141328, 1918, 4, 1920, 4, // NOLINT
- 1922, 4, 1924, 4, 1926, 4, 1931, 4,
- 1933, -169120, 1936, 4, 1938, 4, 1942, 4, // NOLINT
- 1944, 4, 1946, 4, 1948, 4, 1950, 4,
- 1952, 4, 1954, 4, 1956, 4, 1958, 4, // NOLINT
- 1960, 4, 1962, -169232, 1963, -169276, 1964, -169260,
- 1965, -169220, 1968, -169032, 1969, -169128}; // NOLINT
-static const uint16_t kToLowercaseMultiStrings5Size = 1; // NOLINT
-static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings7[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kToLowercaseTable7Size = 2; // NOLINT
-static const int32_t kToLowercaseTable7[4] = {1073749793, 128, 7994,
- 128}; // NOLINT
-static const uint16_t kToLowercaseMultiStrings7Size = 1; // NOLINT
+ 1600, 4, 1602, 4, 1604, 4, 1606, 4, 1608, 4,
+ 1610, 4, 1612, 4, 1614, 4, 1616, 4, 1618, 4,
+ 1620, 4, 1622, 4, 1624, 4, 1626, 4, 1628, 4,
+ 1630, 4, 1632, 4, 1634, 4, 1636, 4, 1638, 4,
+ 1640, 4, 1642, 4, 1644, 4, 1664, 4, 1666, 4,
+ 1668, 4, 1670, 4, 1672, 4, 1674, 4, 1676, 4,
+ 1678, 4, 1680, 4, 1682, 4, 1684, 4, 1686, 4,
+ 1688, 4, 1690, 4, 1826, 4, 1828, 4, 1830, 4,
+ 1832, 4, 1834, 4, 1836, 4, 1838, 4, 1842, 4,
+ 1844, 4, 1846, 4, 1848, 4, 1850, 4, 1852, 4,
+ 1854, 4, 1856, 4, 1858, 4, 1860, 4, 1862, 4,
+ 1864, 4, 1866, 4, 1868, 4, 1870, 4, 1872, 4,
+ 1874, 4, 1876, 4, 1878, 4, 1880, 4, 1882, 4,
+ 1884, 4, 1886, 4, 1888, 4, 1890, 4, 1892, 4,
+ 1894, 4, 1896, 4, 1898, 4, 1900, 4, 1902, 4,
+ 1913, 4, 1915, 4, 1917, -141328, 1918, 4, 1920, 4,
+ 1922, 4, 1924, 4, 1926, 4, 1931, 4, 1933, -169120,
+ 1936, 4, 1938, 4, 1942, 4, 1944, 4, 1946, 4,
+ 1948, 4, 1950, 4, 1952, 4, 1954, 4, 1956, 4,
+ 1958, 4, 1960, 4, 1962, -169232, 1963, -169276, 1964, -169260,
+ 1965, -169220, 1968, -169032, 1969, -169128};
+static const uint16_t kToLowercaseMultiStrings5Size = 1;
+static const MultiCharacterSpecialCase<1> kToLowercaseMultiStrings7[1] = {
+ {{kSentinel}}};
+static const uint16_t kToLowercaseTable7Size = 2;
+static const int32_t kToLowercaseTable7[4] = {1073749793, 128, 7994, 128};
+static const uint16_t kToLowercaseMultiStrings7Size = 1;
int ToLowercase::Convert(uchar c, uchar n, uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
@@ -1285,348 +1009,296 @@ int ToLowercase::Convert(uchar c, uchar n, uchar* result,
}
}
-static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings0[62] =
- { // NOLINT
- {{83, 83, kSentinel}}, {{700, 78, kSentinel}},
- {{74, 780, kSentinel}}, {{921, 776, 769}}, // NOLINT
- {{933, 776, 769}}, {{1333, 1362, kSentinel}},
- {{72, 817, kSentinel}}, {{84, 776, kSentinel}}, // NOLINT
- {{87, 778, kSentinel}}, {{89, 778, kSentinel}},
- {{65, 702, kSentinel}}, {{933, 787, kSentinel}}, // NOLINT
- {{933, 787, 768}}, {{933, 787, 769}},
- {{933, 787, 834}}, {{7944, 921, kSentinel}}, // NOLINT
- {{7945, 921, kSentinel}}, {{7946, 921, kSentinel}},
- {{7947, 921, kSentinel}}, {{7948, 921, kSentinel}}, // NOLINT
- {{7949, 921, kSentinel}}, {{7950, 921, kSentinel}},
- {{7951, 921, kSentinel}}, {{7976, 921, kSentinel}}, // NOLINT
- {{7977, 921, kSentinel}}, {{7978, 921, kSentinel}},
- {{7979, 921, kSentinel}}, {{7980, 921, kSentinel}}, // NOLINT
- {{7981, 921, kSentinel}}, {{7982, 921, kSentinel}},
- {{7983, 921, kSentinel}}, {{8040, 921, kSentinel}}, // NOLINT
- {{8041, 921, kSentinel}}, {{8042, 921, kSentinel}},
- {{8043, 921, kSentinel}}, {{8044, 921, kSentinel}}, // NOLINT
- {{8045, 921, kSentinel}}, {{8046, 921, kSentinel}},
- {{8047, 921, kSentinel}}, {{8122, 921, kSentinel}}, // NOLINT
- {{913, 921, kSentinel}}, {{902, 921, kSentinel}},
- {{913, 834, kSentinel}}, {{913, 834, 921}}, // NOLINT
- {{8138, 921, kSentinel}}, {{919, 921, kSentinel}},
- {{905, 921, kSentinel}}, {{919, 834, kSentinel}}, // NOLINT
- {{919, 834, 921}}, {{921, 776, 768}},
- {{921, 834, kSentinel}}, {{921, 776, 834}}, // NOLINT
- {{933, 776, 768}}, {{929, 787, kSentinel}},
- {{933, 834, kSentinel}}, {{933, 776, 834}}, // NOLINT
- {{8186, 921, kSentinel}}, {{937, 921, kSentinel}},
- {{911, 921, kSentinel}}, {{937, 834, kSentinel}}, // NOLINT
- {{937, 834, 921}}, {{kSentinel}}}; // NOLINT
-static const uint16_t kToUppercaseTable0Size = 590; // NOLINT
+static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings0[62] = {
+ {{83, 83, kSentinel}}, {{700, 78, kSentinel}},
+ {{74, 780, kSentinel}}, {{921, 776, 769}},
+ {{933, 776, 769}}, {{1333, 1362, kSentinel}},
+ {{72, 817, kSentinel}}, {{84, 776, kSentinel}},
+ {{87, 778, kSentinel}}, {{89, 778, kSentinel}},
+ {{65, 702, kSentinel}}, {{933, 787, kSentinel}},
+ {{933, 787, 768}}, {{933, 787, 769}},
+ {{933, 787, 834}}, {{7944, 921, kSentinel}},
+ {{7945, 921, kSentinel}}, {{7946, 921, kSentinel}},
+ {{7947, 921, kSentinel}}, {{7948, 921, kSentinel}},
+ {{7949, 921, kSentinel}}, {{7950, 921, kSentinel}},
+ {{7951, 921, kSentinel}}, {{7976, 921, kSentinel}},
+ {{7977, 921, kSentinel}}, {{7978, 921, kSentinel}},
+ {{7979, 921, kSentinel}}, {{7980, 921, kSentinel}},
+ {{7981, 921, kSentinel}}, {{7982, 921, kSentinel}},
+ {{7983, 921, kSentinel}}, {{8040, 921, kSentinel}},
+ {{8041, 921, kSentinel}}, {{8042, 921, kSentinel}},
+ {{8043, 921, kSentinel}}, {{8044, 921, kSentinel}},
+ {{8045, 921, kSentinel}}, {{8046, 921, kSentinel}},
+ {{8047, 921, kSentinel}}, {{8122, 921, kSentinel}},
+ {{913, 921, kSentinel}}, {{902, 921, kSentinel}},
+ {{913, 834, kSentinel}}, {{913, 834, 921}},
+ {{8138, 921, kSentinel}}, {{919, 921, kSentinel}},
+ {{905, 921, kSentinel}}, {{919, 834, kSentinel}},
+ {{919, 834, 921}}, {{921, 776, 768}},
+ {{921, 834, kSentinel}}, {{921, 776, 834}},
+ {{933, 776, 768}}, {{929, 787, kSentinel}},
+ {{933, 834, kSentinel}}, {{933, 776, 834}},
+ {{8186, 921, kSentinel}}, {{937, 921, kSentinel}},
+ {{911, 921, kSentinel}}, {{937, 834, kSentinel}},
+ {{937, 834, 921}}, {{kSentinel}}};
+static const uint16_t kToUppercaseTable0Size = 590;
static const int32_t kToUppercaseTable0[1180] = {
1073741921, -128, 122, -128, 181, 2972,
223, 1, 1073742048, -128, 246, -128,
- 1073742072, -128, 254, -128, // NOLINT
- 255, 484, 257, -4, 259, -4,
- 261, -4, 263, -4, 265, -4,
- 267, -4, 269, -4, // NOLINT
- 271, -4, 273, -4, 275, -4,
- 277, -4, 279, -4, 281, -4,
- 283, -4, 285, -4, // NOLINT
+ 1073742072, -128, 254, -128, 255, 484,
+ 257, -4, 259, -4, 261, -4,
+ 263, -4, 265, -4, 267, -4,
+ 269, -4, 271, -4, 273, -4,
+ 275, -4, 277, -4, 279, -4,
+ 281, -4, 283, -4, 285, -4,
287, -4, 289, -4, 291, -4,
293, -4, 295, -4, 297, -4,
- 299, -4, 301, -4, // NOLINT
- 303, -4, 305, -928, 307, -4,
- 309, -4, 311, -4, 314, -4,
- 316, -4, 318, -4, // NOLINT
- 320, -4, 322, -4, 324, -4,
- 326, -4, 328, -4, 329, 5,
- 331, -4, 333, -4, // NOLINT
+ 299, -4, 301, -4, 303, -4,
+ 305, -928, 307, -4, 309, -4,
+ 311, -4, 314, -4, 316, -4,
+ 318, -4, 320, -4, 322, -4,
+ 324, -4, 326, -4, 328, -4,
+ 329, 5, 331, -4, 333, -4,
335, -4, 337, -4, 339, -4,
341, -4, 343, -4, 345, -4,
- 347, -4, 349, -4, // NOLINT
- 351, -4, 353, -4, 355, -4,
- 357, -4, 359, -4, 361, -4,
- 363, -4, 365, -4, // NOLINT
- 367, -4, 369, -4, 371, -4,
- 373, -4, 375, -4, 378, -4,
- 380, -4, 382, -4, // NOLINT
+ 347, -4, 349, -4, 351, -4,
+ 353, -4, 355, -4, 357, -4,
+ 359, -4, 361, -4, 363, -4,
+ 365, -4, 367, -4, 369, -4,
+ 371, -4, 373, -4, 375, -4,
+ 378, -4, 380, -4, 382, -4,
383, -1200, 384, 780, 387, -4,
389, -4, 392, -4, 396, -4,
- 402, -4, 405, 388, // NOLINT
- 409, -4, 410, 652, 414, 520,
- 417, -4, 419, -4, 421, -4,
- 424, -4, 429, -4, // NOLINT
- 432, -4, 436, -4, 438, -4,
- 441, -4, 445, -4, 447, 224,
- 453, -4, 454, -8, // NOLINT
+ 402, -4, 405, 388, 409, -4,
+ 410, 652, 414, 520, 417, -4,
+ 419, -4, 421, -4, 424, -4,
+ 429, -4, 432, -4, 436, -4,
+ 438, -4, 441, -4, 445, -4,
+ 447, 224, 453, -4, 454, -8,
456, -4, 457, -8, 459, -4,
460, -8, 462, -4, 464, -4,
- 466, -4, 468, -4, // NOLINT
- 470, -4, 472, -4, 474, -4,
- 476, -4, 477, -316, 479, -4,
- 481, -4, 483, -4, // NOLINT
- 485, -4, 487, -4, 489, -4,
- 491, -4, 493, -4, 495, -4,
- 496, 9, 498, -4, // NOLINT
+ 466, -4, 468, -4, 470, -4,
+ 472, -4, 474, -4, 476, -4,
+ 477, -316, 479, -4, 481, -4,
+ 483, -4, 485, -4, 487, -4,
+ 489, -4, 491, -4, 493, -4,
+ 495, -4, 496, 9, 498, -4,
499, -8, 501, -4, 505, -4,
507, -4, 509, -4, 511, -4,
- 513, -4, 515, -4, // NOLINT
- 517, -4, 519, -4, 521, -4,
- 523, -4, 525, -4, 527, -4,
- 529, -4, 531, -4, // NOLINT
- 533, -4, 535, -4, 537, -4,
- 539, -4, 541, -4, 543, -4,
- 547, -4, 549, -4, // NOLINT
+ 513, -4, 515, -4, 517, -4,
+ 519, -4, 521, -4, 523, -4,
+ 525, -4, 527, -4, 529, -4,
+ 531, -4, 533, -4, 535, -4,
+ 537, -4, 539, -4, 541, -4,
+ 543, -4, 547, -4, 549, -4,
551, -4, 553, -4, 555, -4,
557, -4, 559, -4, 561, -4,
- 563, -4, 572, -4, // NOLINT
- 1073742399, 43260, 576, 43260, 578, -4,
- 583, -4, 585, -4, 587, -4,
- 589, -4, 591, -4, // NOLINT
- 592, 43132, 593, 43120, 594, 43128,
- 595, -840, 596, -824, 1073742422, -820,
- 599, -820, 601, -808, // NOLINT
+ 563, -4, 572, -4, 1073742399, 43260,
+ 576, 43260, 578, -4, 583, -4,
+ 585, -4, 587, -4, 589, -4,
+ 591, -4, 592, 43132, 593, 43120,
+ 594, 43128, 595, -840, 596, -824,
+ 1073742422, -820, 599, -820, 601, -808,
603, -812, 604, 169276, 608, -820,
609, 169260, 611, -828, 613, 169120,
- 614, 169232, 616, -836, // NOLINT
- 617, -844, 619, 42972, 620, 169220,
- 623, -844, 625, 42996, 626, -852,
- 629, -856, 637, 42908, // NOLINT
- 640, -872, 643, -872, 647, 169128,
- 648, -872, 649, -276, 1073742474, -868,
- 651, -868, 652, -284, // NOLINT
+ 614, 169232, 616, -836, 617, -844,
+ 619, 42972, 620, 169220, 623, -844,
+ 625, 42996, 626, -852, 629, -856,
+ 637, 42908, 640, -872, 643, -872,
+ 647, 169128, 648, -872, 649, -276,
+ 1073742474, -868, 651, -868, 652, -284,
658, -876, 670, 169032, 837, 336,
881, -4, 883, -4, 887, -4,
- 1073742715, 520, 893, 520, // NOLINT
- 912, 13, 940, -152, 1073742765, -148,
- 943, -148, 944, 17, 1073742769, -128,
- 961, -128, 962, -124, // NOLINT
- 1073742787, -128, 971, -128, 972, -256,
- 1073742797, -252, 974, -252, 976, -248,
- 977, -228, 981, -188, // NOLINT
+ 1073742715, 520, 893, 520, 912, 13,
+ 940, -152, 1073742765, -148, 943, -148,
+ 944, 17, 1073742769, -128, 961, -128,
+ 962, -124, 1073742787, -128, 971, -128,
+ 972, -256, 1073742797, -252, 974, -252,
+ 976, -248, 977, -228, 981, -188,
982, -216, 983, -32, 985, -4,
987, -4, 989, -4, 991, -4,
- 993, -4, 995, -4, // NOLINT
- 997, -4, 999, -4, 1001, -4,
- 1003, -4, 1005, -4, 1007, -4,
- 1008, -344, 1009, -320, // NOLINT
- 1010, 28, 1011, -464, 1013, -384,
- 1016, -4, 1019, -4, 1073742896, -128,
- 1103, -128, 1073742928, -320, // NOLINT
+ 993, -4, 995, -4, 997, -4,
+ 999, -4, 1001, -4, 1003, -4,
+ 1005, -4, 1007, -4, 1008, -344,
+ 1009, -320, 1010, 28, 1011, -464,
+ 1013, -384, 1016, -4, 1019, -4,
+ 1073742896, -128, 1103, -128, 1073742928, -320,
1119, -320, 1121, -4, 1123, -4,
1125, -4, 1127, -4, 1129, -4,
- 1131, -4, 1133, -4, // NOLINT
- 1135, -4, 1137, -4, 1139, -4,
- 1141, -4, 1143, -4, 1145, -4,
- 1147, -4, 1149, -4, // NOLINT
- 1151, -4, 1153, -4, 1163, -4,
- 1165, -4, 1167, -4, 1169, -4,
- 1171, -4, 1173, -4, // NOLINT
+ 1131, -4, 1133, -4, 1135, -4,
+ 1137, -4, 1139, -4, 1141, -4,
+ 1143, -4, 1145, -4, 1147, -4,
+ 1149, -4, 1151, -4, 1153, -4,
+ 1163, -4, 1165, -4, 1167, -4,
+ 1169, -4, 1171, -4, 1173, -4,
1175, -4, 1177, -4, 1179, -4,
1181, -4, 1183, -4, 1185, -4,
- 1187, -4, 1189, -4, // NOLINT
- 1191, -4, 1193, -4, 1195, -4,
- 1197, -4, 1199, -4, 1201, -4,
- 1203, -4, 1205, -4, // NOLINT
- 1207, -4, 1209, -4, 1211, -4,
- 1213, -4, 1215, -4, 1218, -4,
- 1220, -4, 1222, -4, // NOLINT
+ 1187, -4, 1189, -4, 1191, -4,
+ 1193, -4, 1195, -4, 1197, -4,
+ 1199, -4, 1201, -4, 1203, -4,
+ 1205, -4, 1207, -4, 1209, -4,
+ 1211, -4, 1213, -4, 1215, -4,
+ 1218, -4, 1220, -4, 1222, -4,
1224, -4, 1226, -4, 1228, -4,
1230, -4, 1231, -60, 1233, -4,
- 1235, -4, 1237, -4, // NOLINT
- 1239, -4, 1241, -4, 1243, -4,
- 1245, -4, 1247, -4, 1249, -4,
- 1251, -4, 1253, -4, // NOLINT
- 1255, -4, 1257, -4, 1259, -4,
- 1261, -4, 1263, -4, 1265, -4,
- 1267, -4, 1269, -4, // NOLINT
+ 1235, -4, 1237, -4, 1239, -4,
+ 1241, -4, 1243, -4, 1245, -4,
+ 1247, -4, 1249, -4, 1251, -4,
+ 1253, -4, 1255, -4, 1257, -4,
+ 1259, -4, 1261, -4, 1263, -4,
+ 1265, -4, 1267, -4, 1269, -4,
1271, -4, 1273, -4, 1275, -4,
1277, -4, 1279, -4, 1281, -4,
- 1283, -4, 1285, -4, // NOLINT
- 1287, -4, 1289, -4, 1291, -4,
- 1293, -4, 1295, -4, 1297, -4,
- 1299, -4, 1301, -4, // NOLINT
- 1303, -4, 1305, -4, 1307, -4,
- 1309, -4, 1311, -4, 1313, -4,
- 1315, -4, 1317, -4, // NOLINT
+ 1283, -4, 1285, -4, 1287, -4,
+ 1289, -4, 1291, -4, 1293, -4,
+ 1295, -4, 1297, -4, 1299, -4,
+ 1301, -4, 1303, -4, 1305, -4,
+ 1307, -4, 1309, -4, 1311, -4,
+ 1313, -4, 1315, -4, 1317, -4,
1319, -4, 1321, -4, 1323, -4,
1325, -4, 1327, -4, 1073743201, -192,
- 1414, -192, 1415, 21, // NOLINT
- 7545, 141328, 7549, 15256, 7681, -4,
- 7683, -4, 7685, -4, 7687, -4,
- 7689, -4, 7691, -4, // NOLINT
- 7693, -4, 7695, -4, 7697, -4,
- 7699, -4, 7701, -4, 7703, -4,
- 7705, -4, 7707, -4, // NOLINT
+ 1414, -192, 1415, 21, 7545, 141328,
+ 7549, 15256, 7681, -4, 7683, -4,
+ 7685, -4, 7687, -4, 7689, -4,
+ 7691, -4, 7693, -4, 7695, -4,
+ 7697, -4, 7699, -4, 7701, -4,
+ 7703, -4, 7705, -4, 7707, -4,
7709, -4, 7711, -4, 7713, -4,
7715, -4, 7717, -4, 7719, -4,
- 7721, -4, 7723, -4, // NOLINT
- 7725, -4, 7727, -4, 7729, -4,
- 7731, -4, 7733, -4, 7735, -4,
- 7737, -4, 7739, -4, // NOLINT
- 7741, -4, 7743, -4, 7745, -4,
- 7747, -4, 7749, -4, 7751, -4,
- 7753, -4, 7755, -4, // NOLINT
+ 7721, -4, 7723, -4, 7725, -4,
+ 7727, -4, 7729, -4, 7731, -4,
+ 7733, -4, 7735, -4, 7737, -4,
+ 7739, -4, 7741, -4, 7743, -4,
+ 7745, -4, 7747, -4, 7749, -4,
+ 7751, -4, 7753, -4, 7755, -4,
7757, -4, 7759, -4, 7761, -4,
7763, -4, 7765, -4, 7767, -4,
- 7769, -4, 7771, -4, // NOLINT
- 7773, -4, 7775, -4, 7777, -4,
- 7779, -4, 7781, -4, 7783, -4,
- 7785, -4, 7787, -4, // NOLINT
- 7789, -4, 7791, -4, 7793, -4,
- 7795, -4, 7797, -4, 7799, -4,
- 7801, -4, 7803, -4, // NOLINT
+ 7769, -4, 7771, -4, 7773, -4,
+ 7775, -4, 7777, -4, 7779, -4,
+ 7781, -4, 7783, -4, 7785, -4,
+ 7787, -4, 7789, -4, 7791, -4,
+ 7793, -4, 7795, -4, 7797, -4,
+ 7799, -4, 7801, -4, 7803, -4,
7805, -4, 7807, -4, 7809, -4,
7811, -4, 7813, -4, 7815, -4,
- 7817, -4, 7819, -4, // NOLINT
- 7821, -4, 7823, -4, 7825, -4,
- 7827, -4, 7829, -4, 7830, 25,
- 7831, 29, 7832, 33, // NOLINT
- 7833, 37, 7834, 41, 7835, -236,
- 7841, -4, 7843, -4, 7845, -4,
- 7847, -4, 7849, -4, // NOLINT
+ 7817, -4, 7819, -4, 7821, -4,
+ 7823, -4, 7825, -4, 7827, -4,
+ 7829, -4, 7830, 25, 7831, 29,
+ 7832, 33, 7833, 37, 7834, 41,
+ 7835, -236, 7841, -4, 7843, -4,
+ 7845, -4, 7847, -4, 7849, -4,
7851, -4, 7853, -4, 7855, -4,
7857, -4, 7859, -4, 7861, -4,
- 7863, -4, 7865, -4, // NOLINT
- 7867, -4, 7869, -4, 7871, -4,
- 7873, -4, 7875, -4, 7877, -4,
- 7879, -4, 7881, -4, // NOLINT
- 7883, -4, 7885, -4, 7887, -4,
- 7889, -4, 7891, -4, 7893, -4,
- 7895, -4, 7897, -4, // NOLINT
+ 7863, -4, 7865, -4, 7867, -4,
+ 7869, -4, 7871, -4, 7873, -4,
+ 7875, -4, 7877, -4, 7879, -4,
+ 7881, -4, 7883, -4, 7885, -4,
+ 7887, -4, 7889, -4, 7891, -4,
+ 7893, -4, 7895, -4, 7897, -4,
7899, -4, 7901, -4, 7903, -4,
7905, -4, 7907, -4, 7909, -4,
- 7911, -4, 7913, -4, // NOLINT
- 7915, -4, 7917, -4, 7919, -4,
- 7921, -4, 7923, -4, 7925, -4,
- 7927, -4, 7929, -4, // NOLINT
- 7931, -4, 7933, -4, 7935, -4,
- 1073749760, 32, 7943, 32, 1073749776, 32,
- 7957, 32, 1073749792, 32, // NOLINT
+ 7911, -4, 7913, -4, 7915, -4,
+ 7917, -4, 7919, -4, 7921, -4,
+ 7923, -4, 7925, -4, 7927, -4,
+ 7929, -4, 7931, -4, 7933, -4,
+ 7935, -4, 1073749760, 32, 7943, 32,
+ 1073749776, 32, 7957, 32, 1073749792, 32,
7975, 32, 1073749808, 32, 7991, 32,
1073749824, 32, 8005, 32, 8016, 45,
- 8017, 32, 8018, 49, // NOLINT
- 8019, 32, 8020, 53, 8021, 32,
- 8022, 57, 8023, 32, 1073749856, 32,
- 8039, 32, 1073749872, 296, // NOLINT
- 8049, 296, 1073749874, 344, 8053, 344,
- 1073749878, 400, 8055, 400, 1073749880, 512,
- 8057, 512, 1073749882, 448, // NOLINT
+ 8017, 32, 8018, 49, 8019, 32,
+ 8020, 53, 8021, 32, 8022, 57,
+ 8023, 32, 1073749856, 32, 8039, 32,
+ 1073749872, 296, 8049, 296, 1073749874, 344,
+ 8053, 344, 1073749878, 400, 8055, 400,
+ 1073749880, 512, 8057, 512, 1073749882, 448,
8059, 448, 1073749884, 504, 8061, 504,
8064, 61, 8065, 65, 8066, 69,
- 8067, 73, 8068, 77, // NOLINT
- 8069, 81, 8070, 85, 8071, 89,
- 8072, 61, 8073, 65, 8074, 69,
- 8075, 73, 8076, 77, // NOLINT
- 8077, 81, 8078, 85, 8079, 89,
- 8080, 93, 8081, 97, 8082, 101,
- 8083, 105, 8084, 109, // NOLINT
+ 8067, 73, 8068, 77, 8069, 81,
+ 8070, 85, 8071, 89, 8072, 61,
+ 8073, 65, 8074, 69, 8075, 73,
+ 8076, 77, 8077, 81, 8078, 85,
+ 8079, 89, 8080, 93, 8081, 97,
+ 8082, 101, 8083, 105, 8084, 109,
8085, 113, 8086, 117, 8087, 121,
8088, 93, 8089, 97, 8090, 101,
- 8091, 105, 8092, 109, // NOLINT
- 8093, 113, 8094, 117, 8095, 121,
- 8096, 125, 8097, 129, 8098, 133,
- 8099, 137, 8100, 141, // NOLINT
- 8101, 145, 8102, 149, 8103, 153,
- 8104, 125, 8105, 129, 8106, 133,
- 8107, 137, 8108, 141, // NOLINT
+ 8091, 105, 8092, 109, 8093, 113,
+ 8094, 117, 8095, 121, 8096, 125,
+ 8097, 129, 8098, 133, 8099, 137,
+ 8100, 141, 8101, 145, 8102, 149,
+ 8103, 153, 8104, 125, 8105, 129,
+ 8106, 133, 8107, 137, 8108, 141,
8109, 145, 8110, 149, 8111, 153,
1073749936, 32, 8113, 32, 8114, 157,
- 8115, 161, 8116, 165, // NOLINT
- 8118, 169, 8119, 173, 8124, 161,
- 8126, -28820, 8130, 177, 8131, 181,
- 8132, 185, 8134, 189, // NOLINT
- 8135, 193, 8140, 181, 1073749968, 32,
- 8145, 32, 8146, 197, 8147, 13,
- 8150, 201, 8151, 205, // NOLINT
+ 8115, 161, 8116, 165, 8118, 169,
+ 8119, 173, 8124, 161, 8126, -28820,
+ 8130, 177, 8131, 181, 8132, 185,
+ 8134, 189, 8135, 193, 8140, 181,
+ 1073749968, 32, 8145, 32, 8146, 197,
+ 8147, 13, 8150, 201, 8151, 205,
1073749984, 32, 8161, 32, 8162, 209,
8163, 17, 8164, 213, 8165, 28,
- 8166, 217, 8167, 221, // NOLINT
- 8178, 225, 8179, 229, 8180, 233,
- 8182, 237, 8183, 241, 8188, 229}; // NOLINT
-static const uint16_t kToUppercaseMultiStrings0Size = 62; // NOLINT
-static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings1[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kToUppercaseTable1Size = 73; // NOLINT
+ 8166, 217, 8167, 221, 8178, 225,
+ 8179, 229, 8180, 233, 8182, 237,
+ 8183, 241, 8188, 229};
+static const uint16_t kToUppercaseMultiStrings0Size = 62;
+static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings1[1] = {
+ {{kSentinel}}};
+static const uint16_t kToUppercaseTable1Size = 73;
static const int32_t kToUppercaseTable1[146] = {
- 334, -112, 1073742192, -64, 383, -64,
- 388, -4, 1073743056, -104, 1257, -104,
- 1073744944, -192, 3166, -192, // NOLINT
- 3169, -4, 3173, -43180, 3174, -43168,
- 3176, -4, 3178, -4, 3180, -4,
- 3187, -4, 3190, -4, // NOLINT
- 3201, -4, 3203, -4, 3205, -4,
- 3207, -4, 3209, -4, 3211, -4,
- 3213, -4, 3215, -4, // NOLINT
- 3217, -4, 3219, -4, 3221, -4,
- 3223, -4, 3225, -4, 3227, -4,
- 3229, -4, 3231, -4, // NOLINT
- 3233, -4, 3235, -4, 3237, -4,
- 3239, -4, 3241, -4, 3243, -4,
- 3245, -4, 3247, -4, // NOLINT
- 3249, -4, 3251, -4, 3253, -4,
- 3255, -4, 3257, -4, 3259, -4,
- 3261, -4, 3263, -4, // NOLINT
- 3265, -4, 3267, -4, 3269, -4,
- 3271, -4, 3273, -4, 3275, -4,
- 3277, -4, 3279, -4, // NOLINT
- 3281, -4, 3283, -4, 3285, -4,
- 3287, -4, 3289, -4, 3291, -4,
- 3293, -4, 3295, -4, // NOLINT
- 3297, -4, 3299, -4, 3308, -4,
- 3310, -4, 3315, -4, 1073745152, -29056,
- 3365, -29056, 3367, -29056, // NOLINT
- 3373, -29056}; // NOLINT
-static const uint16_t kToUppercaseMultiStrings1Size = 1; // NOLINT
-static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings5[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kToUppercaseTable5Size = 95; // NOLINT
-static const int32_t
- kToUppercaseTable5[190] = {1601, -4, 1603, -4, 1605, -4, 1607, -4, 1609, -4,
- 1611, -4, 1613, -4, 1615, -4, // NOLINT
- 1617, -4, 1619, -4, 1621, -4, 1623, -4, 1625, -4,
- 1627, -4, 1629, -4, 1631, -4, // NOLINT
- 1633, -4, 1635, -4, 1637, -4, 1639, -4, 1641, -4,
- 1643, -4, 1645, -4, 1665, -4, // NOLINT
- 1667, -4, 1669, -4, 1671, -4, 1673, -4, 1675, -4,
- 1677, -4, 1679, -4, 1681, -4, // NOLINT
- 1683, -4, 1685, -4, 1687, -4, 1689, -4, 1691, -4,
- 1827, -4, 1829, -4, 1831, -4, // NOLINT
- 1833, -4, 1835, -4, 1837, -4, 1839, -4, 1843, -4,
- 1845, -4, 1847, -4, 1849, -4, // NOLINT
- 1851, -4, 1853, -4, 1855, -4, 1857, -4, 1859, -4,
- 1861, -4, 1863, -4, 1865, -4, // NOLINT
- 1867, -4, 1869, -4, 1871, -4, 1873, -4, 1875, -4,
- 1877, -4, 1879, -4, 1881, -4, // NOLINT
- 1883, -4, 1885, -4, 1887, -4, 1889, -4, 1891, -4,
- 1893, -4, 1895, -4, 1897, -4, // NOLINT
- 1899, -4, 1901, -4, 1903, -4, 1914, -4, 1916, -4,
- 1919, -4, 1921, -4, 1923, -4, // NOLINT
- 1925, -4, 1927, -4, 1932, -4, 1937, -4, 1939, -4,
- 1943, -4, 1945, -4, 1947, -4, // NOLINT
- 1949, -4, 1951, -4, 1953, -4, 1955, -4, 1957, -4,
- 1959, -4, 1961, -4}; // NOLINT
-static const uint16_t kToUppercaseMultiStrings5Size = 1; // NOLINT
-static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings7[12] =
- { // NOLINT
- {{70, 70, kSentinel}},
- {{70, 73, kSentinel}},
- {{70, 76, kSentinel}},
- {{70, 70, 73}}, // NOLINT
- {{70, 70, 76}},
- {{83, 84, kSentinel}},
- {{1348, 1350, kSentinel}},
- {{1348, 1333, kSentinel}}, // NOLINT
- {{1348, 1339, kSentinel}},
- {{1358, 1350, kSentinel}},
- {{1348, 1341, kSentinel}},
- {{kSentinel}}}; // NOLINT
-static const uint16_t kToUppercaseTable7Size = 14; // NOLINT
-static const int32_t kToUppercaseTable7[28] =
- {6912, 1, 6913, 5, 6914, 9, 6915, 13,
- 6916, 17, 6917, 21, 6918, 21, 6931, 25, // NOLINT
- 6932, 29, 6933, 33, 6934, 37, 6935, 41,
- 1073749825, -128, 8026, -128}; // NOLINT
-static const uint16_t kToUppercaseMultiStrings7Size = 12; // NOLINT
+ 334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104,
+ 1257, -104, 1073744944, -192, 3166, -192, 3169, -4, 3173, -43180,
+ 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4,
+ 3190, -4, 3201, -4, 3203, -4, 3205, -4, 3207, -4,
+ 3209, -4, 3211, -4, 3213, -4, 3215, -4, 3217, -4,
+ 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4,
+ 3229, -4, 3231, -4, 3233, -4, 3235, -4, 3237, -4,
+ 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4,
+ 3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4,
+ 3259, -4, 3261, -4, 3263, -4, 3265, -4, 3267, -4,
+ 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4,
+ 3279, -4, 3281, -4, 3283, -4, 3285, -4, 3287, -4,
+ 3289, -4, 3291, -4, 3293, -4, 3295, -4, 3297, -4,
+ 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056,
+ 3365, -29056, 3367, -29056, 3373, -29056};
+static const uint16_t kToUppercaseMultiStrings1Size = 1;
+static const MultiCharacterSpecialCase<1> kToUppercaseMultiStrings5[1] = {
+ {{kSentinel}}};
+static const uint16_t kToUppercaseTable5Size = 95;
+static const int32_t kToUppercaseTable5[190] = {
+ 1601, -4, 1603, -4, 1605, -4, 1607, -4, 1609, -4, 1611, -4, 1613, -4,
+ 1615, -4, 1617, -4, 1619, -4, 1621, -4, 1623, -4, 1625, -4, 1627, -4,
+ 1629, -4, 1631, -4, 1633, -4, 1635, -4, 1637, -4, 1639, -4, 1641, -4,
+ 1643, -4, 1645, -4, 1665, -4, 1667, -4, 1669, -4, 1671, -4, 1673, -4,
+ 1675, -4, 1677, -4, 1679, -4, 1681, -4, 1683, -4, 1685, -4, 1687, -4,
+ 1689, -4, 1691, -4, 1827, -4, 1829, -4, 1831, -4, 1833, -4, 1835, -4,
+ 1837, -4, 1839, -4, 1843, -4, 1845, -4, 1847, -4, 1849, -4, 1851, -4,
+ 1853, -4, 1855, -4, 1857, -4, 1859, -4, 1861, -4, 1863, -4, 1865, -4,
+ 1867, -4, 1869, -4, 1871, -4, 1873, -4, 1875, -4, 1877, -4, 1879, -4,
+ 1881, -4, 1883, -4, 1885, -4, 1887, -4, 1889, -4, 1891, -4, 1893, -4,
+ 1895, -4, 1897, -4, 1899, -4, 1901, -4, 1903, -4, 1914, -4, 1916, -4,
+ 1919, -4, 1921, -4, 1923, -4, 1925, -4, 1927, -4, 1932, -4, 1937, -4,
+ 1939, -4, 1943, -4, 1945, -4, 1947, -4, 1949, -4, 1951, -4, 1953, -4,
+ 1955, -4, 1957, -4, 1959, -4, 1961, -4};
+static const uint16_t kToUppercaseMultiStrings5Size = 1;
+static const MultiCharacterSpecialCase<3> kToUppercaseMultiStrings7[12] = {
+ {{70, 70, kSentinel}},
+ {{70, 73, kSentinel}},
+ {{70, 76, kSentinel}},
+ {{70, 70, 73}},
+ {{70, 70, 76}},
+ {{83, 84, kSentinel}},
+ {{1348, 1350, kSentinel}},
+ {{1348, 1333, kSentinel}},
+ {{1348, 1339, kSentinel}},
+ {{1358, 1350, kSentinel}},
+ {{1348, 1341, kSentinel}},
+ {{kSentinel}}};
+static const uint16_t kToUppercaseTable7Size = 14;
+static const int32_t kToUppercaseTable7[28] = {
+ 6912, 1, 6913, 5, 6914, 9, 6915, 13, 6916, 17,
+ 6917, 21, 6918, 21, 6931, 25, 6932, 29, 6933, 33,
+ 6934, 37, 6935, 41, 1073749825, -128, 8026, -128};
+static const uint16_t kToUppercaseMultiStrings7Size = 12;
int ToUppercase::Convert(uchar c, uchar n, uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
@@ -1653,269 +1325,221 @@ int ToUppercase::Convert(uchar c, uchar n, uchar* result,
}
static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings0[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kEcma262CanonicalizeTable0Size = 498; // NOLINT
+ {{{kSentinel}}};
+static const uint16_t kEcma262CanonicalizeTable0Size = 498;
static const int32_t kEcma262CanonicalizeTable0[996] = {
1073741921, -128, 122, -128, 181, 2972,
1073742048, -128, 246, -128, 1073742072, -128,
- 254, -128, 255, 484, // NOLINT
- 257, -4, 259, -4, 261, -4,
- 263, -4, 265, -4, 267, -4,
- 269, -4, 271, -4, // NOLINT
- 273, -4, 275, -4, 277, -4,
- 279, -4, 281, -4, 283, -4,
- 285, -4, 287, -4, // NOLINT
+ 254, -128, 255, 484, 257, -4,
+ 259, -4, 261, -4, 263, -4,
+ 265, -4, 267, -4, 269, -4,
+ 271, -4, 273, -4, 275, -4,
+ 277, -4, 279, -4, 281, -4,
+ 283, -4, 285, -4, 287, -4,
289, -4, 291, -4, 293, -4,
295, -4, 297, -4, 299, -4,
- 301, -4, 303, -4, // NOLINT
- 307, -4, 309, -4, 311, -4,
- 314, -4, 316, -4, 318, -4,
- 320, -4, 322, -4, // NOLINT
- 324, -4, 326, -4, 328, -4,
- 331, -4, 333, -4, 335, -4,
- 337, -4, 339, -4, // NOLINT
+ 301, -4, 303, -4, 307, -4,
+ 309, -4, 311, -4, 314, -4,
+ 316, -4, 318, -4, 320, -4,
+ 322, -4, 324, -4, 326, -4,
+ 328, -4, 331, -4, 333, -4,
+ 335, -4, 337, -4, 339, -4,
341, -4, 343, -4, 345, -4,
347, -4, 349, -4, 351, -4,
- 353, -4, 355, -4, // NOLINT
- 357, -4, 359, -4, 361, -4,
- 363, -4, 365, -4, 367, -4,
- 369, -4, 371, -4, // NOLINT
- 373, -4, 375, -4, 378, -4,
- 380, -4, 382, -4, 384, 780,
- 387, -4, 389, -4, // NOLINT
+ 353, -4, 355, -4, 357, -4,
+ 359, -4, 361, -4, 363, -4,
+ 365, -4, 367, -4, 369, -4,
+ 371, -4, 373, -4, 375, -4,
+ 378, -4, 380, -4, 382, -4,
+ 384, 780, 387, -4, 389, -4,
392, -4, 396, -4, 402, -4,
405, 388, 409, -4, 410, 652,
- 414, 520, 417, -4, // NOLINT
- 419, -4, 421, -4, 424, -4,
- 429, -4, 432, -4, 436, -4,
- 438, -4, 441, -4, // NOLINT
- 445, -4, 447, 224, 453, -4,
- 454, -8, 456, -4, 457, -8,
- 459, -4, 460, -8, // NOLINT
+ 414, 520, 417, -4, 419, -4,
+ 421, -4, 424, -4, 429, -4,
+ 432, -4, 436, -4, 438, -4,
+ 441, -4, 445, -4, 447, 224,
+ 453, -4, 454, -8, 456, -4,
+ 457, -8, 459, -4, 460, -8,
462, -4, 464, -4, 466, -4,
468, -4, 470, -4, 472, -4,
- 474, -4, 476, -4, // NOLINT
- 477, -316, 479, -4, 481, -4,
- 483, -4, 485, -4, 487, -4,
- 489, -4, 491, -4, // NOLINT
- 493, -4, 495, -4, 498, -4,
- 499, -8, 501, -4, 505, -4,
- 507, -4, 509, -4, // NOLINT
+ 474, -4, 476, -4, 477, -316,
+ 479, -4, 481, -4, 483, -4,
+ 485, -4, 487, -4, 489, -4,
+ 491, -4, 493, -4, 495, -4,
+ 498, -4, 499, -8, 501, -4,
+ 505, -4, 507, -4, 509, -4,
511, -4, 513, -4, 515, -4,
517, -4, 519, -4, 521, -4,
- 523, -4, 525, -4, // NOLINT
- 527, -4, 529, -4, 531, -4,
- 533, -4, 535, -4, 537, -4,
- 539, -4, 541, -4, // NOLINT
- 543, -4, 547, -4, 549, -4,
- 551, -4, 553, -4, 555, -4,
- 557, -4, 559, -4, // NOLINT
+ 523, -4, 525, -4, 527, -4,
+ 529, -4, 531, -4, 533, -4,
+ 535, -4, 537, -4, 539, -4,
+ 541, -4, 543, -4, 547, -4,
+ 549, -4, 551, -4, 553, -4,
+ 555, -4, 557, -4, 559, -4,
561, -4, 563, -4, 572, -4,
1073742399, 43260, 576, 43260, 578, -4,
- 583, -4, 585, -4, // NOLINT
- 587, -4, 589, -4, 591, -4,
- 592, 43132, 593, 43120, 594, 43128,
- 595, -840, 596, -824, // NOLINT
- 1073742422, -820, 599, -820, 601, -808,
- 603, -812, 604, 169276, 608, -820,
- 609, 169260, 611, -828, // NOLINT
+ 583, -4, 585, -4, 587, -4,
+ 589, -4, 591, -4, 592, 43132,
+ 593, 43120, 594, 43128, 595, -840,
+ 596, -824, 1073742422, -820, 599, -820,
+ 601, -808, 603, -812, 604, 169276,
+ 608, -820, 609, 169260, 611, -828,
613, 169120, 614, 169232, 616, -836,
617, -844, 619, 42972, 620, 169220,
- 623, -844, 625, 42996, // NOLINT
- 626, -852, 629, -856, 637, 42908,
- 640, -872, 643, -872, 647, 169128,
- 648, -872, 649, -276, // NOLINT
- 1073742474, -868, 651, -868, 652, -284,
- 658, -876, 670, 169032, 837, 336,
- 881, -4, 883, -4, // NOLINT
+ 623, -844, 625, 42996, 626, -852,
+ 629, -856, 637, 42908, 640, -872,
+ 643, -872, 647, 169128, 648, -872,
+ 649, -276, 1073742474, -868, 651, -868,
+ 652, -284, 658, -876, 670, 169032,
+ 837, 336, 881, -4, 883, -4,
887, -4, 1073742715, 520, 893, 520,
940, -152, 1073742765, -148, 943, -148,
- 1073742769, -128, 961, -128, // NOLINT
- 962, -124, 1073742787, -128, 971, -128,
- 972, -256, 1073742797, -252, 974, -252,
- 976, -248, 977, -228, // NOLINT
- 981, -188, 982, -216, 983, -32,
- 985, -4, 987, -4, 989, -4,
- 991, -4, 993, -4, // NOLINT
+ 1073742769, -128, 961, -128, 962, -124,
+ 1073742787, -128, 971, -128, 972, -256,
+ 1073742797, -252, 974, -252, 976, -248,
+ 977, -228, 981, -188, 982, -216,
+ 983, -32, 985, -4, 987, -4,
+ 989, -4, 991, -4, 993, -4,
995, -4, 997, -4, 999, -4,
1001, -4, 1003, -4, 1005, -4,
- 1007, -4, 1008, -344, // NOLINT
- 1009, -320, 1010, 28, 1011, -464,
- 1013, -384, 1016, -4, 1019, -4,
- 1073742896, -128, 1103, -128, // NOLINT
- 1073742928, -320, 1119, -320, 1121, -4,
- 1123, -4, 1125, -4, 1127, -4,
- 1129, -4, 1131, -4, // NOLINT
+ 1007, -4, 1008, -344, 1009, -320,
+ 1010, 28, 1011, -464, 1013, -384,
+ 1016, -4, 1019, -4, 1073742896, -128,
+ 1103, -128, 1073742928, -320, 1119, -320,
+ 1121, -4, 1123, -4, 1125, -4,
+ 1127, -4, 1129, -4, 1131, -4,
1133, -4, 1135, -4, 1137, -4,
1139, -4, 1141, -4, 1143, -4,
- 1145, -4, 1147, -4, // NOLINT
- 1149, -4, 1151, -4, 1153, -4,
- 1163, -4, 1165, -4, 1167, -4,
- 1169, -4, 1171, -4, // NOLINT
- 1173, -4, 1175, -4, 1177, -4,
- 1179, -4, 1181, -4, 1183, -4,
- 1185, -4, 1187, -4, // NOLINT
+ 1145, -4, 1147, -4, 1149, -4,
+ 1151, -4, 1153, -4, 1163, -4,
+ 1165, -4, 1167, -4, 1169, -4,
+ 1171, -4, 1173, -4, 1175, -4,
+ 1177, -4, 1179, -4, 1181, -4,
+ 1183, -4, 1185, -4, 1187, -4,
1189, -4, 1191, -4, 1193, -4,
1195, -4, 1197, -4, 1199, -4,
- 1201, -4, 1203, -4, // NOLINT
- 1205, -4, 1207, -4, 1209, -4,
- 1211, -4, 1213, -4, 1215, -4,
- 1218, -4, 1220, -4, // NOLINT
- 1222, -4, 1224, -4, 1226, -4,
- 1228, -4, 1230, -4, 1231, -60,
- 1233, -4, 1235, -4, // NOLINT
+ 1201, -4, 1203, -4, 1205, -4,
+ 1207, -4, 1209, -4, 1211, -4,
+ 1213, -4, 1215, -4, 1218, -4,
+ 1220, -4, 1222, -4, 1224, -4,
+ 1226, -4, 1228, -4, 1230, -4,
+ 1231, -60, 1233, -4, 1235, -4,
1237, -4, 1239, -4, 1241, -4,
1243, -4, 1245, -4, 1247, -4,
- 1249, -4, 1251, -4, // NOLINT
- 1253, -4, 1255, -4, 1257, -4,
- 1259, -4, 1261, -4, 1263, -4,
- 1265, -4, 1267, -4, // NOLINT
- 1269, -4, 1271, -4, 1273, -4,
- 1275, -4, 1277, -4, 1279, -4,
- 1281, -4, 1283, -4, // NOLINT
+ 1249, -4, 1251, -4, 1253, -4,
+ 1255, -4, 1257, -4, 1259, -4,
+ 1261, -4, 1263, -4, 1265, -4,
+ 1267, -4, 1269, -4, 1271, -4,
+ 1273, -4, 1275, -4, 1277, -4,
+ 1279, -4, 1281, -4, 1283, -4,
1285, -4, 1287, -4, 1289, -4,
1291, -4, 1293, -4, 1295, -4,
- 1297, -4, 1299, -4, // NOLINT
- 1301, -4, 1303, -4, 1305, -4,
- 1307, -4, 1309, -4, 1311, -4,
- 1313, -4, 1315, -4, // NOLINT
- 1317, -4, 1319, -4, 1321, -4,
- 1323, -4, 1325, -4, 1327, -4,
- 1073743201, -192, 1414, -192, // NOLINT
+ 1297, -4, 1299, -4, 1301, -4,
+ 1303, -4, 1305, -4, 1307, -4,
+ 1309, -4, 1311, -4, 1313, -4,
+ 1315, -4, 1317, -4, 1319, -4,
+ 1321, -4, 1323, -4, 1325, -4,
+ 1327, -4, 1073743201, -192, 1414, -192,
7545, 141328, 7549, 15256, 7681, -4,
7683, -4, 7685, -4, 7687, -4,
- 7689, -4, 7691, -4, // NOLINT
- 7693, -4, 7695, -4, 7697, -4,
- 7699, -4, 7701, -4, 7703, -4,
- 7705, -4, 7707, -4, // NOLINT
- 7709, -4, 7711, -4, 7713, -4,
- 7715, -4, 7717, -4, 7719, -4,
- 7721, -4, 7723, -4, // NOLINT
+ 7689, -4, 7691, -4, 7693, -4,
+ 7695, -4, 7697, -4, 7699, -4,
+ 7701, -4, 7703, -4, 7705, -4,
+ 7707, -4, 7709, -4, 7711, -4,
+ 7713, -4, 7715, -4, 7717, -4,
+ 7719, -4, 7721, -4, 7723, -4,
7725, -4, 7727, -4, 7729, -4,
7731, -4, 7733, -4, 7735, -4,
- 7737, -4, 7739, -4, // NOLINT
- 7741, -4, 7743, -4, 7745, -4,
- 7747, -4, 7749, -4, 7751, -4,
- 7753, -4, 7755, -4, // NOLINT
- 7757, -4, 7759, -4, 7761, -4,
- 7763, -4, 7765, -4, 7767, -4,
- 7769, -4, 7771, -4, // NOLINT
+ 7737, -4, 7739, -4, 7741, -4,
+ 7743, -4, 7745, -4, 7747, -4,
+ 7749, -4, 7751, -4, 7753, -4,
+ 7755, -4, 7757, -4, 7759, -4,
+ 7761, -4, 7763, -4, 7765, -4,
+ 7767, -4, 7769, -4, 7771, -4,
7773, -4, 7775, -4, 7777, -4,
7779, -4, 7781, -4, 7783, -4,
- 7785, -4, 7787, -4, // NOLINT
- 7789, -4, 7791, -4, 7793, -4,
- 7795, -4, 7797, -4, 7799, -4,
- 7801, -4, 7803, -4, // NOLINT
- 7805, -4, 7807, -4, 7809, -4,
- 7811, -4, 7813, -4, 7815, -4,
- 7817, -4, 7819, -4, // NOLINT
+ 7785, -4, 7787, -4, 7789, -4,
+ 7791, -4, 7793, -4, 7795, -4,
+ 7797, -4, 7799, -4, 7801, -4,
+ 7803, -4, 7805, -4, 7807, -4,
+ 7809, -4, 7811, -4, 7813, -4,
+ 7815, -4, 7817, -4, 7819, -4,
7821, -4, 7823, -4, 7825, -4,
7827, -4, 7829, -4, 7835, -236,
- 7841, -4, 7843, -4, // NOLINT
- 7845, -4, 7847, -4, 7849, -4,
- 7851, -4, 7853, -4, 7855, -4,
- 7857, -4, 7859, -4, // NOLINT
- 7861, -4, 7863, -4, 7865, -4,
- 7867, -4, 7869, -4, 7871, -4,
- 7873, -4, 7875, -4, // NOLINT
+ 7841, -4, 7843, -4, 7845, -4,
+ 7847, -4, 7849, -4, 7851, -4,
+ 7853, -4, 7855, -4, 7857, -4,
+ 7859, -4, 7861, -4, 7863, -4,
+ 7865, -4, 7867, -4, 7869, -4,
+ 7871, -4, 7873, -4, 7875, -4,
7877, -4, 7879, -4, 7881, -4,
7883, -4, 7885, -4, 7887, -4,
- 7889, -4, 7891, -4, // NOLINT
- 7893, -4, 7895, -4, 7897, -4,
- 7899, -4, 7901, -4, 7903, -4,
- 7905, -4, 7907, -4, // NOLINT
- 7909, -4, 7911, -4, 7913, -4,
- 7915, -4, 7917, -4, 7919, -4,
- 7921, -4, 7923, -4, // NOLINT
+ 7889, -4, 7891, -4, 7893, -4,
+ 7895, -4, 7897, -4, 7899, -4,
+ 7901, -4, 7903, -4, 7905, -4,
+ 7907, -4, 7909, -4, 7911, -4,
+ 7913, -4, 7915, -4, 7917, -4,
+ 7919, -4, 7921, -4, 7923, -4,
7925, -4, 7927, -4, 7929, -4,
7931, -4, 7933, -4, 7935, -4,
- 1073749760, 32, 7943, 32, // NOLINT
- 1073749776, 32, 7957, 32, 1073749792, 32,
- 7975, 32, 1073749808, 32, 7991, 32,
- 1073749824, 32, 8005, 32, // NOLINT
- 8017, 32, 8019, 32, 8021, 32,
- 8023, 32, 1073749856, 32, 8039, 32,
- 1073749872, 296, 8049, 296, // NOLINT
+ 1073749760, 32, 7943, 32, 1073749776, 32,
+ 7957, 32, 1073749792, 32, 7975, 32,
+ 1073749808, 32, 7991, 32, 1073749824, 32,
+ 8005, 32, 8017, 32, 8019, 32,
+ 8021, 32, 8023, 32, 1073749856, 32,
+ 8039, 32, 1073749872, 296, 8049, 296,
1073749874, 344, 8053, 344, 1073749878, 400,
8055, 400, 1073749880, 512, 8057, 512,
- 1073749882, 448, 8059, 448, // NOLINT
- 1073749884, 504, 8061, 504, 1073749936, 32,
- 8113, 32, 8126, -28820, 1073749968, 32,
- 8145, 32, 1073749984, 32, // NOLINT
- 8161, 32, 8165, 28}; // NOLINT
-static const uint16_t kEcma262CanonicalizeMultiStrings0Size = 1; // NOLINT
+ 1073749882, 448, 8059, 448, 1073749884, 504,
+ 8061, 504, 1073749936, 32, 8113, 32,
+ 8126, -28820, 1073749968, 32, 8145, 32,
+ 1073749984, 32, 8161, 32, 8165, 28};
+static const uint16_t kEcma262CanonicalizeMultiStrings0Size = 1;
static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings1[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kEcma262CanonicalizeTable1Size = 73; // NOLINT
+ {{{kSentinel}}};
+static const uint16_t kEcma262CanonicalizeTable1Size = 73;
static const int32_t kEcma262CanonicalizeTable1[146] = {
- 334, -112, 1073742192, -64, 383, -64,
- 388, -4, 1073743056, -104, 1257, -104,
- 1073744944, -192, 3166, -192, // NOLINT
- 3169, -4, 3173, -43180, 3174, -43168,
- 3176, -4, 3178, -4, 3180, -4,
- 3187, -4, 3190, -4, // NOLINT
- 3201, -4, 3203, -4, 3205, -4,
- 3207, -4, 3209, -4, 3211, -4,
- 3213, -4, 3215, -4, // NOLINT
- 3217, -4, 3219, -4, 3221, -4,
- 3223, -4, 3225, -4, 3227, -4,
- 3229, -4, 3231, -4, // NOLINT
- 3233, -4, 3235, -4, 3237, -4,
- 3239, -4, 3241, -4, 3243, -4,
- 3245, -4, 3247, -4, // NOLINT
- 3249, -4, 3251, -4, 3253, -4,
- 3255, -4, 3257, -4, 3259, -4,
- 3261, -4, 3263, -4, // NOLINT
- 3265, -4, 3267, -4, 3269, -4,
- 3271, -4, 3273, -4, 3275, -4,
- 3277, -4, 3279, -4, // NOLINT
- 3281, -4, 3283, -4, 3285, -4,
- 3287, -4, 3289, -4, 3291, -4,
- 3293, -4, 3295, -4, // NOLINT
- 3297, -4, 3299, -4, 3308, -4,
- 3310, -4, 3315, -4, 1073745152, -29056,
- 3365, -29056, 3367, -29056, // NOLINT
- 3373, -29056}; // NOLINT
-static const uint16_t kEcma262CanonicalizeMultiStrings1Size = 1; // NOLINT
+ 334, -112, 1073742192, -64, 383, -64, 388, -4, 1073743056, -104,
+ 1257, -104, 1073744944, -192, 3166, -192, 3169, -4, 3173, -43180,
+ 3174, -43168, 3176, -4, 3178, -4, 3180, -4, 3187, -4,
+ 3190, -4, 3201, -4, 3203, -4, 3205, -4, 3207, -4,
+ 3209, -4, 3211, -4, 3213, -4, 3215, -4, 3217, -4,
+ 3219, -4, 3221, -4, 3223, -4, 3225, -4, 3227, -4,
+ 3229, -4, 3231, -4, 3233, -4, 3235, -4, 3237, -4,
+ 3239, -4, 3241, -4, 3243, -4, 3245, -4, 3247, -4,
+ 3249, -4, 3251, -4, 3253, -4, 3255, -4, 3257, -4,
+ 3259, -4, 3261, -4, 3263, -4, 3265, -4, 3267, -4,
+ 3269, -4, 3271, -4, 3273, -4, 3275, -4, 3277, -4,
+ 3279, -4, 3281, -4, 3283, -4, 3285, -4, 3287, -4,
+ 3289, -4, 3291, -4, 3293, -4, 3295, -4, 3297, -4,
+ 3299, -4, 3308, -4, 3310, -4, 3315, -4, 1073745152, -29056,
+ 3365, -29056, 3367, -29056, 3373, -29056};
+static const uint16_t kEcma262CanonicalizeMultiStrings1Size = 1;
static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings5[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kEcma262CanonicalizeTable5Size = 95; // NOLINT
+ {{{kSentinel}}};
+static const uint16_t kEcma262CanonicalizeTable5Size = 95;
static const int32_t kEcma262CanonicalizeTable5[190] = {
- 1601, -4, 1603, -4, 1605, -4, 1607, -4,
- 1609, -4, 1611, -4, 1613, -4, 1615, -4, // NOLINT
- 1617, -4, 1619, -4, 1621, -4, 1623, -4,
- 1625, -4, 1627, -4, 1629, -4, 1631, -4, // NOLINT
- 1633, -4, 1635, -4, 1637, -4, 1639, -4,
- 1641, -4, 1643, -4, 1645, -4, 1665, -4, // NOLINT
- 1667, -4, 1669, -4, 1671, -4, 1673, -4,
- 1675, -4, 1677, -4, 1679, -4, 1681, -4, // NOLINT
- 1683, -4, 1685, -4, 1687, -4, 1689, -4,
- 1691, -4, 1827, -4, 1829, -4, 1831, -4, // NOLINT
- 1833, -4, 1835, -4, 1837, -4, 1839, -4,
- 1843, -4, 1845, -4, 1847, -4, 1849, -4, // NOLINT
- 1851, -4, 1853, -4, 1855, -4, 1857, -4,
- 1859, -4, 1861, -4, 1863, -4, 1865, -4, // NOLINT
- 1867, -4, 1869, -4, 1871, -4, 1873, -4,
- 1875, -4, 1877, -4, 1879, -4, 1881, -4, // NOLINT
- 1883, -4, 1885, -4, 1887, -4, 1889, -4,
- 1891, -4, 1893, -4, 1895, -4, 1897, -4, // NOLINT
- 1899, -4, 1901, -4, 1903, -4, 1914, -4,
- 1916, -4, 1919, -4, 1921, -4, 1923, -4, // NOLINT
- 1925, -4, 1927, -4, 1932, -4, 1937, -4,
- 1939, -4, 1943, -4, 1945, -4, 1947, -4, // NOLINT
- 1949, -4, 1951, -4, 1953, -4, 1955, -4,
- 1957, -4, 1959, -4, 1961, -4}; // NOLINT
-static const uint16_t kEcma262CanonicalizeMultiStrings5Size = 1; // NOLINT
+ 1601, -4, 1603, -4, 1605, -4, 1607, -4, 1609, -4, 1611, -4, 1613, -4,
+ 1615, -4, 1617, -4, 1619, -4, 1621, -4, 1623, -4, 1625, -4, 1627, -4,
+ 1629, -4, 1631, -4, 1633, -4, 1635, -4, 1637, -4, 1639, -4, 1641, -4,
+ 1643, -4, 1645, -4, 1665, -4, 1667, -4, 1669, -4, 1671, -4, 1673, -4,
+ 1675, -4, 1677, -4, 1679, -4, 1681, -4, 1683, -4, 1685, -4, 1687, -4,
+ 1689, -4, 1691, -4, 1827, -4, 1829, -4, 1831, -4, 1833, -4, 1835, -4,
+ 1837, -4, 1839, -4, 1843, -4, 1845, -4, 1847, -4, 1849, -4, 1851, -4,
+ 1853, -4, 1855, -4, 1857, -4, 1859, -4, 1861, -4, 1863, -4, 1865, -4,
+ 1867, -4, 1869, -4, 1871, -4, 1873, -4, 1875, -4, 1877, -4, 1879, -4,
+ 1881, -4, 1883, -4, 1885, -4, 1887, -4, 1889, -4, 1891, -4, 1893, -4,
+ 1895, -4, 1897, -4, 1899, -4, 1901, -4, 1903, -4, 1914, -4, 1916, -4,
+ 1919, -4, 1921, -4, 1923, -4, 1925, -4, 1927, -4, 1932, -4, 1937, -4,
+ 1939, -4, 1943, -4, 1945, -4, 1947, -4, 1949, -4, 1951, -4, 1953, -4,
+ 1955, -4, 1957, -4, 1959, -4, 1961, -4};
+static const uint16_t kEcma262CanonicalizeMultiStrings5Size = 1;
static const MultiCharacterSpecialCase<1> kEcma262CanonicalizeMultiStrings7[1] =
- { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kEcma262CanonicalizeTable7Size = 2; // NOLINT
+ {{{kSentinel}}};
+static const uint16_t kEcma262CanonicalizeTable7Size = 2;
static const int32_t kEcma262CanonicalizeTable7[4] = {1073749825, -128, 8026,
- -128}; // NOLINT
-static const uint16_t kEcma262CanonicalizeMultiStrings7Size = 1; // NOLINT
+ -128};
+static const uint16_t kEcma262CanonicalizeMultiStrings7Size = 1;
int Ecma262Canonicalize::Convert(uchar c, uchar n, uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
@@ -1942,1095 +1566,899 @@ int Ecma262Canonicalize::Convert(uchar c, uchar n, uchar* result,
}
static const MultiCharacterSpecialCase<4>
- kEcma262UnCanonicalizeMultiStrings0[507] = { // NOLINT
- {{65, 97, kSentinel}},
- {{90, 122, kSentinel}},
- {{181, 924, 956, kSentinel}},
- {{192, 224, kSentinel}}, // NOLINT
- {{214, 246, kSentinel}},
- {{216, 248, kSentinel}},
- {{222, 254, kSentinel}},
- {{255, 376, kSentinel}}, // NOLINT
- {{256, 257, kSentinel}},
- {{258, 259, kSentinel}},
- {{260, 261, kSentinel}},
- {{262, 263, kSentinel}}, // NOLINT
- {{264, 265, kSentinel}},
- {{266, 267, kSentinel}},
- {{268, 269, kSentinel}},
- {{270, 271, kSentinel}}, // NOLINT
- {{272, 273, kSentinel}},
- {{274, 275, kSentinel}},
- {{276, 277, kSentinel}},
- {{278, 279, kSentinel}}, // NOLINT
- {{280, 281, kSentinel}},
- {{282, 283, kSentinel}},
- {{284, 285, kSentinel}},
- {{286, 287, kSentinel}}, // NOLINT
- {{288, 289, kSentinel}},
- {{290, 291, kSentinel}},
- {{292, 293, kSentinel}},
- {{294, 295, kSentinel}}, // NOLINT
- {{296, 297, kSentinel}},
- {{298, 299, kSentinel}},
- {{300, 301, kSentinel}},
- {{302, 303, kSentinel}}, // NOLINT
- {{306, 307, kSentinel}},
- {{308, 309, kSentinel}},
- {{310, 311, kSentinel}},
- {{313, 314, kSentinel}}, // NOLINT
- {{315, 316, kSentinel}},
- {{317, 318, kSentinel}},
- {{319, 320, kSentinel}},
- {{321, 322, kSentinel}}, // NOLINT
- {{323, 324, kSentinel}},
- {{325, 326, kSentinel}},
- {{327, 328, kSentinel}},
- {{330, 331, kSentinel}}, // NOLINT
- {{332, 333, kSentinel}},
- {{334, 335, kSentinel}},
- {{336, 337, kSentinel}},
- {{338, 339, kSentinel}}, // NOLINT
- {{340, 341, kSentinel}},
- {{342, 343, kSentinel}},
- {{344, 345, kSentinel}},
- {{346, 347, kSentinel}}, // NOLINT
- {{348, 349, kSentinel}},
- {{350, 351, kSentinel}},
- {{352, 353, kSentinel}},
- {{354, 355, kSentinel}}, // NOLINT
- {{356, 357, kSentinel}},
- {{358, 359, kSentinel}},
- {{360, 361, kSentinel}},
- {{362, 363, kSentinel}}, // NOLINT
- {{364, 365, kSentinel}},
- {{366, 367, kSentinel}},
- {{368, 369, kSentinel}},
- {{370, 371, kSentinel}}, // NOLINT
- {{372, 373, kSentinel}},
- {{374, 375, kSentinel}},
- {{377, 378, kSentinel}},
- {{379, 380, kSentinel}}, // NOLINT
- {{381, 382, kSentinel}},
- {{384, 579, kSentinel}},
- {{385, 595, kSentinel}},
- {{386, 387, kSentinel}}, // NOLINT
- {{388, 389, kSentinel}},
- {{390, 596, kSentinel}},
- {{391, 392, kSentinel}},
- {{393, 598, kSentinel}}, // NOLINT
- {{394, 599, kSentinel}},
- {{395, 396, kSentinel}},
- {{398, 477, kSentinel}},
- {{399, 601, kSentinel}}, // NOLINT
- {{400, 603, kSentinel}},
- {{401, 402, kSentinel}},
- {{403, 608, kSentinel}},
- {{404, 611, kSentinel}}, // NOLINT
- {{405, 502, kSentinel}},
- {{406, 617, kSentinel}},
- {{407, 616, kSentinel}},
- {{408, 409, kSentinel}}, // NOLINT
- {{410, 573, kSentinel}},
- {{412, 623, kSentinel}},
- {{413, 626, kSentinel}},
- {{414, 544, kSentinel}}, // NOLINT
- {{415, 629, kSentinel}},
- {{416, 417, kSentinel}},
- {{418, 419, kSentinel}},
- {{420, 421, kSentinel}}, // NOLINT
- {{422, 640, kSentinel}},
- {{423, 424, kSentinel}},
- {{425, 643, kSentinel}},
- {{428, 429, kSentinel}}, // NOLINT
- {{430, 648, kSentinel}},
- {{431, 432, kSentinel}},
- {{433, 650, kSentinel}},
- {{434, 651, kSentinel}}, // NOLINT
- {{435, 436, kSentinel}},
- {{437, 438, kSentinel}},
- {{439, 658, kSentinel}},
- {{440, 441, kSentinel}}, // NOLINT
- {{444, 445, kSentinel}},
- {{447, 503, kSentinel}},
- {{452, 453, 454, kSentinel}},
- {{455, 456, 457, kSentinel}}, // NOLINT
- {{458, 459, 460, kSentinel}},
- {{461, 462, kSentinel}},
- {{463, 464, kSentinel}},
- {{465, 466, kSentinel}}, // NOLINT
- {{467, 468, kSentinel}},
- {{469, 470, kSentinel}},
- {{471, 472, kSentinel}},
- {{473, 474, kSentinel}}, // NOLINT
- {{475, 476, kSentinel}},
- {{478, 479, kSentinel}},
- {{480, 481, kSentinel}},
- {{482, 483, kSentinel}}, // NOLINT
- {{484, 485, kSentinel}},
- {{486, 487, kSentinel}},
- {{488, 489, kSentinel}},
- {{490, 491, kSentinel}}, // NOLINT
- {{492, 493, kSentinel}},
- {{494, 495, kSentinel}},
- {{497, 498, 499, kSentinel}},
- {{500, 501, kSentinel}}, // NOLINT
- {{504, 505, kSentinel}},
- {{506, 507, kSentinel}},
- {{508, 509, kSentinel}},
- {{510, 511, kSentinel}}, // NOLINT
- {{512, 513, kSentinel}},
- {{514, 515, kSentinel}},
- {{516, 517, kSentinel}},
- {{518, 519, kSentinel}}, // NOLINT
- {{520, 521, kSentinel}},
- {{522, 523, kSentinel}},
- {{524, 525, kSentinel}},
- {{526, 527, kSentinel}}, // NOLINT
- {{528, 529, kSentinel}},
- {{530, 531, kSentinel}},
- {{532, 533, kSentinel}},
- {{534, 535, kSentinel}}, // NOLINT
- {{536, 537, kSentinel}},
- {{538, 539, kSentinel}},
- {{540, 541, kSentinel}},
- {{542, 543, kSentinel}}, // NOLINT
- {{546, 547, kSentinel}},
- {{548, 549, kSentinel}},
- {{550, 551, kSentinel}},
- {{552, 553, kSentinel}}, // NOLINT
- {{554, 555, kSentinel}},
- {{556, 557, kSentinel}},
- {{558, 559, kSentinel}},
- {{560, 561, kSentinel}}, // NOLINT
- {{562, 563, kSentinel}},
- {{570, 11365, kSentinel}},
- {{571, 572, kSentinel}},
- {{574, 11366, kSentinel}}, // NOLINT
- {{575, 11390, kSentinel}},
- {{576, 11391, kSentinel}},
- {{577, 578, kSentinel}},
- {{580, 649, kSentinel}}, // NOLINT
- {{581, 652, kSentinel}},
- {{582, 583, kSentinel}},
- {{584, 585, kSentinel}},
- {{586, 587, kSentinel}}, // NOLINT
- {{588, 589, kSentinel}},
- {{590, 591, kSentinel}},
- {{592, 11375, kSentinel}},
- {{593, 11373, kSentinel}}, // NOLINT
- {{594, 11376, kSentinel}},
- {{604, 42923, kSentinel}},
- {{609, 42924, kSentinel}},
- {{613, 42893, kSentinel}}, // NOLINT
- {{614, 42922, kSentinel}},
- {{619, 11362, kSentinel}},
- {{620, 42925, kSentinel}},
- {{625, 11374, kSentinel}}, // NOLINT
- {{637, 11364, kSentinel}},
- {{647, 42929, kSentinel}},
- {{670, 42928, kSentinel}},
- {{837, 921, 953, 8126}}, // NOLINT
- {{880, 881, kSentinel}},
- {{882, 883, kSentinel}},
- {{886, 887, kSentinel}},
- {{891, 1021, kSentinel}}, // NOLINT
- {{893, 1023, kSentinel}},
- {{895, 1011, kSentinel}},
- {{902, 940, kSentinel}},
- {{904, 941, kSentinel}}, // NOLINT
- {{906, 943, kSentinel}},
- {{908, 972, kSentinel}},
- {{910, 973, kSentinel}},
- {{911, 974, kSentinel}}, // NOLINT
- {{913, 945, kSentinel}},
- {{914, 946, 976, kSentinel}},
- {{915, 947, kSentinel}},
- {{916, 948, kSentinel}}, // NOLINT
- {{917, 949, 1013, kSentinel}},
- {{918, 950, kSentinel}},
- {{919, 951, kSentinel}},
- {{920, 952, 977, kSentinel}}, // NOLINT
- {{922, 954, 1008, kSentinel}},
- {{923, 955, kSentinel}},
- {{925, 957, kSentinel}},
- {{927, 959, kSentinel}}, // NOLINT
- {{928, 960, 982, kSentinel}},
- {{929, 961, 1009, kSentinel}},
- {{931, 962, 963, kSentinel}},
- {{932, 964, kSentinel}}, // NOLINT
- {{933, 965, kSentinel}},
- {{934, 966, 981, kSentinel}},
- {{935, 967, kSentinel}},
- {{939, 971, kSentinel}}, // NOLINT
- {{975, 983, kSentinel}},
- {{984, 985, kSentinel}},
- {{986, 987, kSentinel}},
- {{988, 989, kSentinel}}, // NOLINT
- {{990, 991, kSentinel}},
- {{992, 993, kSentinel}},
- {{994, 995, kSentinel}},
- {{996, 997, kSentinel}}, // NOLINT
- {{998, 999, kSentinel}},
- {{1000, 1001, kSentinel}},
- {{1002, 1003, kSentinel}},
- {{1004, 1005, kSentinel}}, // NOLINT
- {{1006, 1007, kSentinel}},
- {{1010, 1017, kSentinel}},
- {{1015, 1016, kSentinel}},
- {{1018, 1019, kSentinel}}, // NOLINT
- {{1024, 1104, kSentinel}},
- {{1039, 1119, kSentinel}},
- {{1040, 1072, kSentinel}},
- {{1071, 1103, kSentinel}}, // NOLINT
- {{1120, 1121, kSentinel}},
- {{1122, 1123, kSentinel}},
- {{1124, 1125, kSentinel}},
- {{1126, 1127, kSentinel}}, // NOLINT
- {{1128, 1129, kSentinel}},
- {{1130, 1131, kSentinel}},
- {{1132, 1133, kSentinel}},
- {{1134, 1135, kSentinel}}, // NOLINT
- {{1136, 1137, kSentinel}},
- {{1138, 1139, kSentinel}},
- {{1140, 1141, kSentinel}},
- {{1142, 1143, kSentinel}}, // NOLINT
- {{1144, 1145, kSentinel}},
- {{1146, 1147, kSentinel}},
- {{1148, 1149, kSentinel}},
- {{1150, 1151, kSentinel}}, // NOLINT
- {{1152, 1153, kSentinel}},
- {{1162, 1163, kSentinel}},
- {{1164, 1165, kSentinel}},
- {{1166, 1167, kSentinel}}, // NOLINT
- {{1168, 1169, kSentinel}},
- {{1170, 1171, kSentinel}},
- {{1172, 1173, kSentinel}},
- {{1174, 1175, kSentinel}}, // NOLINT
- {{1176, 1177, kSentinel}},
- {{1178, 1179, kSentinel}},
- {{1180, 1181, kSentinel}},
- {{1182, 1183, kSentinel}}, // NOLINT
- {{1184, 1185, kSentinel}},
- {{1186, 1187, kSentinel}},
- {{1188, 1189, kSentinel}},
- {{1190, 1191, kSentinel}}, // NOLINT
- {{1192, 1193, kSentinel}},
- {{1194, 1195, kSentinel}},
- {{1196, 1197, kSentinel}},
- {{1198, 1199, kSentinel}}, // NOLINT
- {{1200, 1201, kSentinel}},
- {{1202, 1203, kSentinel}},
- {{1204, 1205, kSentinel}},
- {{1206, 1207, kSentinel}}, // NOLINT
- {{1208, 1209, kSentinel}},
- {{1210, 1211, kSentinel}},
- {{1212, 1213, kSentinel}},
- {{1214, 1215, kSentinel}}, // NOLINT
- {{1216, 1231, kSentinel}},
- {{1217, 1218, kSentinel}},
- {{1219, 1220, kSentinel}},
- {{1221, 1222, kSentinel}}, // NOLINT
- {{1223, 1224, kSentinel}},
- {{1225, 1226, kSentinel}},
- {{1227, 1228, kSentinel}},
- {{1229, 1230, kSentinel}}, // NOLINT
- {{1232, 1233, kSentinel}},
- {{1234, 1235, kSentinel}},
- {{1236, 1237, kSentinel}},
- {{1238, 1239, kSentinel}}, // NOLINT
- {{1240, 1241, kSentinel}},
- {{1242, 1243, kSentinel}},
- {{1244, 1245, kSentinel}},
- {{1246, 1247, kSentinel}}, // NOLINT
- {{1248, 1249, kSentinel}},
- {{1250, 1251, kSentinel}},
- {{1252, 1253, kSentinel}},
- {{1254, 1255, kSentinel}}, // NOLINT
- {{1256, 1257, kSentinel}},
- {{1258, 1259, kSentinel}},
- {{1260, 1261, kSentinel}},
- {{1262, 1263, kSentinel}}, // NOLINT
- {{1264, 1265, kSentinel}},
- {{1266, 1267, kSentinel}},
- {{1268, 1269, kSentinel}},
- {{1270, 1271, kSentinel}}, // NOLINT
- {{1272, 1273, kSentinel}},
- {{1274, 1275, kSentinel}},
- {{1276, 1277, kSentinel}},
- {{1278, 1279, kSentinel}}, // NOLINT
- {{1280, 1281, kSentinel}},
- {{1282, 1283, kSentinel}},
- {{1284, 1285, kSentinel}},
- {{1286, 1287, kSentinel}}, // NOLINT
- {{1288, 1289, kSentinel}},
- {{1290, 1291, kSentinel}},
- {{1292, 1293, kSentinel}},
- {{1294, 1295, kSentinel}}, // NOLINT
- {{1296, 1297, kSentinel}},
- {{1298, 1299, kSentinel}},
- {{1300, 1301, kSentinel}},
- {{1302, 1303, kSentinel}}, // NOLINT
- {{1304, 1305, kSentinel}},
- {{1306, 1307, kSentinel}},
- {{1308, 1309, kSentinel}},
- {{1310, 1311, kSentinel}}, // NOLINT
- {{1312, 1313, kSentinel}},
- {{1314, 1315, kSentinel}},
- {{1316, 1317, kSentinel}},
- {{1318, 1319, kSentinel}}, // NOLINT
- {{1320, 1321, kSentinel}},
- {{1322, 1323, kSentinel}},
- {{1324, 1325, kSentinel}},
- {{1326, 1327, kSentinel}}, // NOLINT
- {{1329, 1377, kSentinel}},
- {{1366, 1414, kSentinel}},
- {{4256, 11520, kSentinel}},
- {{4293, 11557, kSentinel}}, // NOLINT
- {{4295, 11559, kSentinel}},
- {{4301, 11565, kSentinel}},
- {{7545, 42877, kSentinel}},
- {{7549, 11363, kSentinel}}, // NOLINT
- {{7680, 7681, kSentinel}},
- {{7682, 7683, kSentinel}},
- {{7684, 7685, kSentinel}},
- {{7686, 7687, kSentinel}}, // NOLINT
- {{7688, 7689, kSentinel}},
- {{7690, 7691, kSentinel}},
- {{7692, 7693, kSentinel}},
- {{7694, 7695, kSentinel}}, // NOLINT
- {{7696, 7697, kSentinel}},
- {{7698, 7699, kSentinel}},
- {{7700, 7701, kSentinel}},
- {{7702, 7703, kSentinel}}, // NOLINT
- {{7704, 7705, kSentinel}},
- {{7706, 7707, kSentinel}},
- {{7708, 7709, kSentinel}},
- {{7710, 7711, kSentinel}}, // NOLINT
- {{7712, 7713, kSentinel}},
- {{7714, 7715, kSentinel}},
- {{7716, 7717, kSentinel}},
- {{7718, 7719, kSentinel}}, // NOLINT
- {{7720, 7721, kSentinel}},
- {{7722, 7723, kSentinel}},
- {{7724, 7725, kSentinel}},
- {{7726, 7727, kSentinel}}, // NOLINT
- {{7728, 7729, kSentinel}},
- {{7730, 7731, kSentinel}},
- {{7732, 7733, kSentinel}},
- {{7734, 7735, kSentinel}}, // NOLINT
- {{7736, 7737, kSentinel}},
- {{7738, 7739, kSentinel}},
- {{7740, 7741, kSentinel}},
- {{7742, 7743, kSentinel}}, // NOLINT
- {{7744, 7745, kSentinel}},
- {{7746, 7747, kSentinel}},
- {{7748, 7749, kSentinel}},
- {{7750, 7751, kSentinel}}, // NOLINT
- {{7752, 7753, kSentinel}},
- {{7754, 7755, kSentinel}},
- {{7756, 7757, kSentinel}},
- {{7758, 7759, kSentinel}}, // NOLINT
- {{7760, 7761, kSentinel}},
- {{7762, 7763, kSentinel}},
- {{7764, 7765, kSentinel}},
- {{7766, 7767, kSentinel}}, // NOLINT
- {{7768, 7769, kSentinel}},
- {{7770, 7771, kSentinel}},
- {{7772, 7773, kSentinel}},
- {{7774, 7775, kSentinel}}, // NOLINT
- {{7776, 7777, 7835, kSentinel}},
- {{7778, 7779, kSentinel}},
- {{7780, 7781, kSentinel}},
- {{7782, 7783, kSentinel}}, // NOLINT
- {{7784, 7785, kSentinel}},
- {{7786, 7787, kSentinel}},
- {{7788, 7789, kSentinel}},
- {{7790, 7791, kSentinel}}, // NOLINT
- {{7792, 7793, kSentinel}},
- {{7794, 7795, kSentinel}},
- {{7796, 7797, kSentinel}},
- {{7798, 7799, kSentinel}}, // NOLINT
- {{7800, 7801, kSentinel}},
- {{7802, 7803, kSentinel}},
- {{7804, 7805, kSentinel}},
- {{7806, 7807, kSentinel}}, // NOLINT
- {{7808, 7809, kSentinel}},
- {{7810, 7811, kSentinel}},
- {{7812, 7813, kSentinel}},
- {{7814, 7815, kSentinel}}, // NOLINT
- {{7816, 7817, kSentinel}},
- {{7818, 7819, kSentinel}},
- {{7820, 7821, kSentinel}},
- {{7822, 7823, kSentinel}}, // NOLINT
- {{7824, 7825, kSentinel}},
- {{7826, 7827, kSentinel}},
- {{7828, 7829, kSentinel}},
- {{7840, 7841, kSentinel}}, // NOLINT
- {{7842, 7843, kSentinel}},
- {{7844, 7845, kSentinel}},
- {{7846, 7847, kSentinel}},
- {{7848, 7849, kSentinel}}, // NOLINT
- {{7850, 7851, kSentinel}},
- {{7852, 7853, kSentinel}},
- {{7854, 7855, kSentinel}},
- {{7856, 7857, kSentinel}}, // NOLINT
- {{7858, 7859, kSentinel}},
- {{7860, 7861, kSentinel}},
- {{7862, 7863, kSentinel}},
- {{7864, 7865, kSentinel}}, // NOLINT
- {{7866, 7867, kSentinel}},
- {{7868, 7869, kSentinel}},
- {{7870, 7871, kSentinel}},
- {{7872, 7873, kSentinel}}, // NOLINT
- {{7874, 7875, kSentinel}},
- {{7876, 7877, kSentinel}},
- {{7878, 7879, kSentinel}},
- {{7880, 7881, kSentinel}}, // NOLINT
- {{7882, 7883, kSentinel}},
- {{7884, 7885, kSentinel}},
- {{7886, 7887, kSentinel}},
- {{7888, 7889, kSentinel}}, // NOLINT
- {{7890, 7891, kSentinel}},
- {{7892, 7893, kSentinel}},
- {{7894, 7895, kSentinel}},
- {{7896, 7897, kSentinel}}, // NOLINT
- {{7898, 7899, kSentinel}},
- {{7900, 7901, kSentinel}},
- {{7902, 7903, kSentinel}},
- {{7904, 7905, kSentinel}}, // NOLINT
- {{7906, 7907, kSentinel}},
- {{7908, 7909, kSentinel}},
- {{7910, 7911, kSentinel}},
- {{7912, 7913, kSentinel}}, // NOLINT
- {{7914, 7915, kSentinel}},
- {{7916, 7917, kSentinel}},
- {{7918, 7919, kSentinel}},
- {{7920, 7921, kSentinel}}, // NOLINT
- {{7922, 7923, kSentinel}},
- {{7924, 7925, kSentinel}},
- {{7926, 7927, kSentinel}},
- {{7928, 7929, kSentinel}}, // NOLINT
- {{7930, 7931, kSentinel}},
- {{7932, 7933, kSentinel}},
- {{7934, 7935, kSentinel}},
- {{7936, 7944, kSentinel}}, // NOLINT
- {{7943, 7951, kSentinel}},
- {{7952, 7960, kSentinel}},
- {{7957, 7965, kSentinel}},
- {{7968, 7976, kSentinel}}, // NOLINT
- {{7975, 7983, kSentinel}},
- {{7984, 7992, kSentinel}},
- {{7991, 7999, kSentinel}},
- {{8000, 8008, kSentinel}}, // NOLINT
- {{8005, 8013, kSentinel}},
- {{8017, 8025, kSentinel}},
- {{8019, 8027, kSentinel}},
- {{8021, 8029, kSentinel}}, // NOLINT
- {{8023, 8031, kSentinel}},
- {{8032, 8040, kSentinel}},
- {{8039, 8047, kSentinel}},
- {{8048, 8122, kSentinel}}, // NOLINT
- {{8049, 8123, kSentinel}},
- {{8050, 8136, kSentinel}},
- {{8053, 8139, kSentinel}},
- {{8054, 8154, kSentinel}}, // NOLINT
- {{8055, 8155, kSentinel}},
- {{8056, 8184, kSentinel}},
- {{8057, 8185, kSentinel}},
- {{8058, 8170, kSentinel}}, // NOLINT
- {{8059, 8171, kSentinel}},
- {{8060, 8186, kSentinel}},
- {{8061, 8187, kSentinel}},
- {{8112, 8120, kSentinel}}, // NOLINT
- {{8113, 8121, kSentinel}},
- {{8144, 8152, kSentinel}},
- {{8145, 8153, kSentinel}},
- {{8160, 8168, kSentinel}}, // NOLINT
- {{8161, 8169, kSentinel}},
- {{8165, 8172, kSentinel}},
- {{kSentinel}}}; // NOLINT
-static const uint16_t kEcma262UnCanonicalizeTable0Size = 1005; // NOLINT
+ kEcma262UnCanonicalizeMultiStrings0[507] = {{{65, 97, kSentinel}},
+ {{90, 122, kSentinel}},
+ {{181, 924, 956, kSentinel}},
+ {{192, 224, kSentinel}},
+ {{214, 246, kSentinel}},
+ {{216, 248, kSentinel}},
+ {{222, 254, kSentinel}},
+ {{255, 376, kSentinel}},
+ {{256, 257, kSentinel}},
+ {{258, 259, kSentinel}},
+ {{260, 261, kSentinel}},
+ {{262, 263, kSentinel}},
+ {{264, 265, kSentinel}},
+ {{266, 267, kSentinel}},
+ {{268, 269, kSentinel}},
+ {{270, 271, kSentinel}},
+ {{272, 273, kSentinel}},
+ {{274, 275, kSentinel}},
+ {{276, 277, kSentinel}},
+ {{278, 279, kSentinel}},
+ {{280, 281, kSentinel}},
+ {{282, 283, kSentinel}},
+ {{284, 285, kSentinel}},
+ {{286, 287, kSentinel}},
+ {{288, 289, kSentinel}},
+ {{290, 291, kSentinel}},
+ {{292, 293, kSentinel}},
+ {{294, 295, kSentinel}},
+ {{296, 297, kSentinel}},
+ {{298, 299, kSentinel}},
+ {{300, 301, kSentinel}},
+ {{302, 303, kSentinel}},
+ {{306, 307, kSentinel}},
+ {{308, 309, kSentinel}},
+ {{310, 311, kSentinel}},
+ {{313, 314, kSentinel}},
+ {{315, 316, kSentinel}},
+ {{317, 318, kSentinel}},
+ {{319, 320, kSentinel}},
+ {{321, 322, kSentinel}},
+ {{323, 324, kSentinel}},
+ {{325, 326, kSentinel}},
+ {{327, 328, kSentinel}},
+ {{330, 331, kSentinel}},
+ {{332, 333, kSentinel}},
+ {{334, 335, kSentinel}},
+ {{336, 337, kSentinel}},
+ {{338, 339, kSentinel}},
+ {{340, 341, kSentinel}},
+ {{342, 343, kSentinel}},
+ {{344, 345, kSentinel}},
+ {{346, 347, kSentinel}},
+ {{348, 349, kSentinel}},
+ {{350, 351, kSentinel}},
+ {{352, 353, kSentinel}},
+ {{354, 355, kSentinel}},
+ {{356, 357, kSentinel}},
+ {{358, 359, kSentinel}},
+ {{360, 361, kSentinel}},
+ {{362, 363, kSentinel}},
+ {{364, 365, kSentinel}},
+ {{366, 367, kSentinel}},
+ {{368, 369, kSentinel}},
+ {{370, 371, kSentinel}},
+ {{372, 373, kSentinel}},
+ {{374, 375, kSentinel}},
+ {{377, 378, kSentinel}},
+ {{379, 380, kSentinel}},
+ {{381, 382, kSentinel}},
+ {{384, 579, kSentinel}},
+ {{385, 595, kSentinel}},
+ {{386, 387, kSentinel}},
+ {{388, 389, kSentinel}},
+ {{390, 596, kSentinel}},
+ {{391, 392, kSentinel}},
+ {{393, 598, kSentinel}},
+ {{394, 599, kSentinel}},
+ {{395, 396, kSentinel}},
+ {{398, 477, kSentinel}},
+ {{399, 601, kSentinel}},
+ {{400, 603, kSentinel}},
+ {{401, 402, kSentinel}},
+ {{403, 608, kSentinel}},
+ {{404, 611, kSentinel}},
+ {{405, 502, kSentinel}},
+ {{406, 617, kSentinel}},
+ {{407, 616, kSentinel}},
+ {{408, 409, kSentinel}},
+ {{410, 573, kSentinel}},
+ {{412, 623, kSentinel}},
+ {{413, 626, kSentinel}},
+ {{414, 544, kSentinel}},
+ {{415, 629, kSentinel}},
+ {{416, 417, kSentinel}},
+ {{418, 419, kSentinel}},
+ {{420, 421, kSentinel}},
+ {{422, 640, kSentinel}},
+ {{423, 424, kSentinel}},
+ {{425, 643, kSentinel}},
+ {{428, 429, kSentinel}},
+ {{430, 648, kSentinel}},
+ {{431, 432, kSentinel}},
+ {{433, 650, kSentinel}},
+ {{434, 651, kSentinel}},
+ {{435, 436, kSentinel}},
+ {{437, 438, kSentinel}},
+ {{439, 658, kSentinel}},
+ {{440, 441, kSentinel}},
+ {{444, 445, kSentinel}},
+ {{447, 503, kSentinel}},
+ {{452, 453, 454, kSentinel}},
+ {{455, 456, 457, kSentinel}},
+ {{458, 459, 460, kSentinel}},
+ {{461, 462, kSentinel}},
+ {{463, 464, kSentinel}},
+ {{465, 466, kSentinel}},
+ {{467, 468, kSentinel}},
+ {{469, 470, kSentinel}},
+ {{471, 472, kSentinel}},
+ {{473, 474, kSentinel}},
+ {{475, 476, kSentinel}},
+ {{478, 479, kSentinel}},
+ {{480, 481, kSentinel}},
+ {{482, 483, kSentinel}},
+ {{484, 485, kSentinel}},
+ {{486, 487, kSentinel}},
+ {{488, 489, kSentinel}},
+ {{490, 491, kSentinel}},
+ {{492, 493, kSentinel}},
+ {{494, 495, kSentinel}},
+ {{497, 498, 499, kSentinel}},
+ {{500, 501, kSentinel}},
+ {{504, 505, kSentinel}},
+ {{506, 507, kSentinel}},
+ {{508, 509, kSentinel}},
+ {{510, 511, kSentinel}},
+ {{512, 513, kSentinel}},
+ {{514, 515, kSentinel}},
+ {{516, 517, kSentinel}},
+ {{518, 519, kSentinel}},
+ {{520, 521, kSentinel}},
+ {{522, 523, kSentinel}},
+ {{524, 525, kSentinel}},
+ {{526, 527, kSentinel}},
+ {{528, 529, kSentinel}},
+ {{530, 531, kSentinel}},
+ {{532, 533, kSentinel}},
+ {{534, 535, kSentinel}},
+ {{536, 537, kSentinel}},
+ {{538, 539, kSentinel}},
+ {{540, 541, kSentinel}},
+ {{542, 543, kSentinel}},
+ {{546, 547, kSentinel}},
+ {{548, 549, kSentinel}},
+ {{550, 551, kSentinel}},
+ {{552, 553, kSentinel}},
+ {{554, 555, kSentinel}},
+ {{556, 557, kSentinel}},
+ {{558, 559, kSentinel}},
+ {{560, 561, kSentinel}},
+ {{562, 563, kSentinel}},
+ {{570, 11365, kSentinel}},
+ {{571, 572, kSentinel}},
+ {{574, 11366, kSentinel}},
+ {{575, 11390, kSentinel}},
+ {{576, 11391, kSentinel}},
+ {{577, 578, kSentinel}},
+ {{580, 649, kSentinel}},
+ {{581, 652, kSentinel}},
+ {{582, 583, kSentinel}},
+ {{584, 585, kSentinel}},
+ {{586, 587, kSentinel}},
+ {{588, 589, kSentinel}},
+ {{590, 591, kSentinel}},
+ {{592, 11375, kSentinel}},
+ {{593, 11373, kSentinel}},
+ {{594, 11376, kSentinel}},
+ {{604, 42923, kSentinel}},
+ {{609, 42924, kSentinel}},
+ {{613, 42893, kSentinel}},
+ {{614, 42922, kSentinel}},
+ {{619, 11362, kSentinel}},
+ {{620, 42925, kSentinel}},
+ {{625, 11374, kSentinel}},
+ {{637, 11364, kSentinel}},
+ {{647, 42929, kSentinel}},
+ {{670, 42928, kSentinel}},
+ {{837, 921, 953, 8126}},
+ {{880, 881, kSentinel}},
+ {{882, 883, kSentinel}},
+ {{886, 887, kSentinel}},
+ {{891, 1021, kSentinel}},
+ {{893, 1023, kSentinel}},
+ {{895, 1011, kSentinel}},
+ {{902, 940, kSentinel}},
+ {{904, 941, kSentinel}},
+ {{906, 943, kSentinel}},
+ {{908, 972, kSentinel}},
+ {{910, 973, kSentinel}},
+ {{911, 974, kSentinel}},
+ {{913, 945, kSentinel}},
+ {{914, 946, 976, kSentinel}},
+ {{915, 947, kSentinel}},
+ {{916, 948, kSentinel}},
+ {{917, 949, 1013, kSentinel}},
+ {{918, 950, kSentinel}},
+ {{919, 951, kSentinel}},
+ {{920, 952, 977, kSentinel}},
+ {{922, 954, 1008, kSentinel}},
+ {{923, 955, kSentinel}},
+ {{925, 957, kSentinel}},
+ {{927, 959, kSentinel}},
+ {{928, 960, 982, kSentinel}},
+ {{929, 961, 1009, kSentinel}},
+ {{931, 962, 963, kSentinel}},
+ {{932, 964, kSentinel}},
+ {{933, 965, kSentinel}},
+ {{934, 966, 981, kSentinel}},
+ {{935, 967, kSentinel}},
+ {{939, 971, kSentinel}},
+ {{975, 983, kSentinel}},
+ {{984, 985, kSentinel}},
+ {{986, 987, kSentinel}},
+ {{988, 989, kSentinel}},
+ {{990, 991, kSentinel}},
+ {{992, 993, kSentinel}},
+ {{994, 995, kSentinel}},
+ {{996, 997, kSentinel}},
+ {{998, 999, kSentinel}},
+ {{1000, 1001, kSentinel}},
+ {{1002, 1003, kSentinel}},
+ {{1004, 1005, kSentinel}},
+ {{1006, 1007, kSentinel}},
+ {{1010, 1017, kSentinel}},
+ {{1015, 1016, kSentinel}},
+ {{1018, 1019, kSentinel}},
+ {{1024, 1104, kSentinel}},
+ {{1039, 1119, kSentinel}},
+ {{1040, 1072, kSentinel}},
+ {{1071, 1103, kSentinel}},
+ {{1120, 1121, kSentinel}},
+ {{1122, 1123, kSentinel}},
+ {{1124, 1125, kSentinel}},
+ {{1126, 1127, kSentinel}},
+ {{1128, 1129, kSentinel}},
+ {{1130, 1131, kSentinel}},
+ {{1132, 1133, kSentinel}},
+ {{1134, 1135, kSentinel}},
+ {{1136, 1137, kSentinel}},
+ {{1138, 1139, kSentinel}},
+ {{1140, 1141, kSentinel}},
+ {{1142, 1143, kSentinel}},
+ {{1144, 1145, kSentinel}},
+ {{1146, 1147, kSentinel}},
+ {{1148, 1149, kSentinel}},
+ {{1150, 1151, kSentinel}},
+ {{1152, 1153, kSentinel}},
+ {{1162, 1163, kSentinel}},
+ {{1164, 1165, kSentinel}},
+ {{1166, 1167, kSentinel}},
+ {{1168, 1169, kSentinel}},
+ {{1170, 1171, kSentinel}},
+ {{1172, 1173, kSentinel}},
+ {{1174, 1175, kSentinel}},
+ {{1176, 1177, kSentinel}},
+ {{1178, 1179, kSentinel}},
+ {{1180, 1181, kSentinel}},
+ {{1182, 1183, kSentinel}},
+ {{1184, 1185, kSentinel}},
+ {{1186, 1187, kSentinel}},
+ {{1188, 1189, kSentinel}},
+ {{1190, 1191, kSentinel}},
+ {{1192, 1193, kSentinel}},
+ {{1194, 1195, kSentinel}},
+ {{1196, 1197, kSentinel}},
+ {{1198, 1199, kSentinel}},
+ {{1200, 1201, kSentinel}},
+ {{1202, 1203, kSentinel}},
+ {{1204, 1205, kSentinel}},
+ {{1206, 1207, kSentinel}},
+ {{1208, 1209, kSentinel}},
+ {{1210, 1211, kSentinel}},
+ {{1212, 1213, kSentinel}},
+ {{1214, 1215, kSentinel}},
+ {{1216, 1231, kSentinel}},
+ {{1217, 1218, kSentinel}},
+ {{1219, 1220, kSentinel}},
+ {{1221, 1222, kSentinel}},
+ {{1223, 1224, kSentinel}},
+ {{1225, 1226, kSentinel}},
+ {{1227, 1228, kSentinel}},
+ {{1229, 1230, kSentinel}},
+ {{1232, 1233, kSentinel}},
+ {{1234, 1235, kSentinel}},
+ {{1236, 1237, kSentinel}},
+ {{1238, 1239, kSentinel}},
+ {{1240, 1241, kSentinel}},
+ {{1242, 1243, kSentinel}},
+ {{1244, 1245, kSentinel}},
+ {{1246, 1247, kSentinel}},
+ {{1248, 1249, kSentinel}},
+ {{1250, 1251, kSentinel}},
+ {{1252, 1253, kSentinel}},
+ {{1254, 1255, kSentinel}},
+ {{1256, 1257, kSentinel}},
+ {{1258, 1259, kSentinel}},
+ {{1260, 1261, kSentinel}},
+ {{1262, 1263, kSentinel}},
+ {{1264, 1265, kSentinel}},
+ {{1266, 1267, kSentinel}},
+ {{1268, 1269, kSentinel}},
+ {{1270, 1271, kSentinel}},
+ {{1272, 1273, kSentinel}},
+ {{1274, 1275, kSentinel}},
+ {{1276, 1277, kSentinel}},
+ {{1278, 1279, kSentinel}},
+ {{1280, 1281, kSentinel}},
+ {{1282, 1283, kSentinel}},
+ {{1284, 1285, kSentinel}},
+ {{1286, 1287, kSentinel}},
+ {{1288, 1289, kSentinel}},
+ {{1290, 1291, kSentinel}},
+ {{1292, 1293, kSentinel}},
+ {{1294, 1295, kSentinel}},
+ {{1296, 1297, kSentinel}},
+ {{1298, 1299, kSentinel}},
+ {{1300, 1301, kSentinel}},
+ {{1302, 1303, kSentinel}},
+ {{1304, 1305, kSentinel}},
+ {{1306, 1307, kSentinel}},
+ {{1308, 1309, kSentinel}},
+ {{1310, 1311, kSentinel}},
+ {{1312, 1313, kSentinel}},
+ {{1314, 1315, kSentinel}},
+ {{1316, 1317, kSentinel}},
+ {{1318, 1319, kSentinel}},
+ {{1320, 1321, kSentinel}},
+ {{1322, 1323, kSentinel}},
+ {{1324, 1325, kSentinel}},
+ {{1326, 1327, kSentinel}},
+ {{1329, 1377, kSentinel}},
+ {{1366, 1414, kSentinel}},
+ {{4256, 11520, kSentinel}},
+ {{4293, 11557, kSentinel}},
+ {{4295, 11559, kSentinel}},
+ {{4301, 11565, kSentinel}},
+ {{7545, 42877, kSentinel}},
+ {{7549, 11363, kSentinel}},
+ {{7680, 7681, kSentinel}},
+ {{7682, 7683, kSentinel}},
+ {{7684, 7685, kSentinel}},
+ {{7686, 7687, kSentinel}},
+ {{7688, 7689, kSentinel}},
+ {{7690, 7691, kSentinel}},
+ {{7692, 7693, kSentinel}},
+ {{7694, 7695, kSentinel}},
+ {{7696, 7697, kSentinel}},
+ {{7698, 7699, kSentinel}},
+ {{7700, 7701, kSentinel}},
+ {{7702, 7703, kSentinel}},
+ {{7704, 7705, kSentinel}},
+ {{7706, 7707, kSentinel}},
+ {{7708, 7709, kSentinel}},
+ {{7710, 7711, kSentinel}},
+ {{7712, 7713, kSentinel}},
+ {{7714, 7715, kSentinel}},
+ {{7716, 7717, kSentinel}},
+ {{7718, 7719, kSentinel}},
+ {{7720, 7721, kSentinel}},
+ {{7722, 7723, kSentinel}},
+ {{7724, 7725, kSentinel}},
+ {{7726, 7727, kSentinel}},
+ {{7728, 7729, kSentinel}},
+ {{7730, 7731, kSentinel}},
+ {{7732, 7733, kSentinel}},
+ {{7734, 7735, kSentinel}},
+ {{7736, 7737, kSentinel}},
+ {{7738, 7739, kSentinel}},
+ {{7740, 7741, kSentinel}},
+ {{7742, 7743, kSentinel}},
+ {{7744, 7745, kSentinel}},
+ {{7746, 7747, kSentinel}},
+ {{7748, 7749, kSentinel}},
+ {{7750, 7751, kSentinel}},
+ {{7752, 7753, kSentinel}},
+ {{7754, 7755, kSentinel}},
+ {{7756, 7757, kSentinel}},
+ {{7758, 7759, kSentinel}},
+ {{7760, 7761, kSentinel}},
+ {{7762, 7763, kSentinel}},
+ {{7764, 7765, kSentinel}},
+ {{7766, 7767, kSentinel}},
+ {{7768, 7769, kSentinel}},
+ {{7770, 7771, kSentinel}},
+ {{7772, 7773, kSentinel}},
+ {{7774, 7775, kSentinel}},
+ {{7776, 7777, 7835, kSentinel}},
+ {{7778, 7779, kSentinel}},
+ {{7780, 7781, kSentinel}},
+ {{7782, 7783, kSentinel}},
+ {{7784, 7785, kSentinel}},
+ {{7786, 7787, kSentinel}},
+ {{7788, 7789, kSentinel}},
+ {{7790, 7791, kSentinel}},
+ {{7792, 7793, kSentinel}},
+ {{7794, 7795, kSentinel}},
+ {{7796, 7797, kSentinel}},
+ {{7798, 7799, kSentinel}},
+ {{7800, 7801, kSentinel}},
+ {{7802, 7803, kSentinel}},
+ {{7804, 7805, kSentinel}},
+ {{7806, 7807, kSentinel}},
+ {{7808, 7809, kSentinel}},
+ {{7810, 7811, kSentinel}},
+ {{7812, 7813, kSentinel}},
+ {{7814, 7815, kSentinel}},
+ {{7816, 7817, kSentinel}},
+ {{7818, 7819, kSentinel}},
+ {{7820, 7821, kSentinel}},
+ {{7822, 7823, kSentinel}},
+ {{7824, 7825, kSentinel}},
+ {{7826, 7827, kSentinel}},
+ {{7828, 7829, kSentinel}},
+ {{7840, 7841, kSentinel}},
+ {{7842, 7843, kSentinel}},
+ {{7844, 7845, kSentinel}},
+ {{7846, 7847, kSentinel}},
+ {{7848, 7849, kSentinel}},
+ {{7850, 7851, kSentinel}},
+ {{7852, 7853, kSentinel}},
+ {{7854, 7855, kSentinel}},
+ {{7856, 7857, kSentinel}},
+ {{7858, 7859, kSentinel}},
+ {{7860, 7861, kSentinel}},
+ {{7862, 7863, kSentinel}},
+ {{7864, 7865, kSentinel}},
+ {{7866, 7867, kSentinel}},
+ {{7868, 7869, kSentinel}},
+ {{7870, 7871, kSentinel}},
+ {{7872, 7873, kSentinel}},
+ {{7874, 7875, kSentinel}},
+ {{7876, 7877, kSentinel}},
+ {{7878, 7879, kSentinel}},
+ {{7880, 7881, kSentinel}},
+ {{7882, 7883, kSentinel}},
+ {{7884, 7885, kSentinel}},
+ {{7886, 7887, kSentinel}},
+ {{7888, 7889, kSentinel}},
+ {{7890, 7891, kSentinel}},
+ {{7892, 7893, kSentinel}},
+ {{7894, 7895, kSentinel}},
+ {{7896, 7897, kSentinel}},
+ {{7898, 7899, kSentinel}},
+ {{7900, 7901, kSentinel}},
+ {{7902, 7903, kSentinel}},
+ {{7904, 7905, kSentinel}},
+ {{7906, 7907, kSentinel}},
+ {{7908, 7909, kSentinel}},
+ {{7910, 7911, kSentinel}},
+ {{7912, 7913, kSentinel}},
+ {{7914, 7915, kSentinel}},
+ {{7916, 7917, kSentinel}},
+ {{7918, 7919, kSentinel}},
+ {{7920, 7921, kSentinel}},
+ {{7922, 7923, kSentinel}},
+ {{7924, 7925, kSentinel}},
+ {{7926, 7927, kSentinel}},
+ {{7928, 7929, kSentinel}},
+ {{7930, 7931, kSentinel}},
+ {{7932, 7933, kSentinel}},
+ {{7934, 7935, kSentinel}},
+ {{7936, 7944, kSentinel}},
+ {{7943, 7951, kSentinel}},
+ {{7952, 7960, kSentinel}},
+ {{7957, 7965, kSentinel}},
+ {{7968, 7976, kSentinel}},
+ {{7975, 7983, kSentinel}},
+ {{7984, 7992, kSentinel}},
+ {{7991, 7999, kSentinel}},
+ {{8000, 8008, kSentinel}},
+ {{8005, 8013, kSentinel}},
+ {{8017, 8025, kSentinel}},
+ {{8019, 8027, kSentinel}},
+ {{8021, 8029, kSentinel}},
+ {{8023, 8031, kSentinel}},
+ {{8032, 8040, kSentinel}},
+ {{8039, 8047, kSentinel}},
+ {{8048, 8122, kSentinel}},
+ {{8049, 8123, kSentinel}},
+ {{8050, 8136, kSentinel}},
+ {{8053, 8139, kSentinel}},
+ {{8054, 8154, kSentinel}},
+ {{8055, 8155, kSentinel}},
+ {{8056, 8184, kSentinel}},
+ {{8057, 8185, kSentinel}},
+ {{8058, 8170, kSentinel}},
+ {{8059, 8171, kSentinel}},
+ {{8060, 8186, kSentinel}},
+ {{8061, 8187, kSentinel}},
+ {{8112, 8120, kSentinel}},
+ {{8113, 8121, kSentinel}},
+ {{8144, 8152, kSentinel}},
+ {{8145, 8153, kSentinel}},
+ {{8160, 8168, kSentinel}},
+ {{8161, 8169, kSentinel}},
+ {{8165, 8172, kSentinel}},
+ {{kSentinel}}};
+static const uint16_t kEcma262UnCanonicalizeTable0Size = 1005;
static const int32_t kEcma262UnCanonicalizeTable0[2010] = {
- 1073741889, 1, 90, 5, 1073741921, 1,
- 122, 5, 181, 9, 1073742016, 13,
- 214, 17, 1073742040, 21, // NOLINT
- 222, 25, 1073742048, 13, 246, 17,
- 1073742072, 21, 254, 25, 255, 29,
- 256, 33, 257, 33, // NOLINT
- 258, 37, 259, 37, 260, 41,
- 261, 41, 262, 45, 263, 45,
- 264, 49, 265, 49, // NOLINT
- 266, 53, 267, 53, 268, 57,
- 269, 57, 270, 61, 271, 61,
- 272, 65, 273, 65, // NOLINT
- 274, 69, 275, 69, 276, 73,
- 277, 73, 278, 77, 279, 77,
- 280, 81, 281, 81, // NOLINT
- 282, 85, 283, 85, 284, 89,
- 285, 89, 286, 93, 287, 93,
- 288, 97, 289, 97, // NOLINT
- 290, 101, 291, 101, 292, 105,
- 293, 105, 294, 109, 295, 109,
- 296, 113, 297, 113, // NOLINT
- 298, 117, 299, 117, 300, 121,
- 301, 121, 302, 125, 303, 125,
- 306, 129, 307, 129, // NOLINT
- 308, 133, 309, 133, 310, 137,
- 311, 137, 313, 141, 314, 141,
- 315, 145, 316, 145, // NOLINT
- 317, 149, 318, 149, 319, 153,
- 320, 153, 321, 157, 322, 157,
- 323, 161, 324, 161, // NOLINT
- 325, 165, 326, 165, 327, 169,
- 328, 169, 330, 173, 331, 173,
- 332, 177, 333, 177, // NOLINT
- 334, 181, 335, 181, 336, 185,
- 337, 185, 338, 189, 339, 189,
- 340, 193, 341, 193, // NOLINT
- 342, 197, 343, 197, 344, 201,
- 345, 201, 346, 205, 347, 205,
- 348, 209, 349, 209, // NOLINT
- 350, 213, 351, 213, 352, 217,
- 353, 217, 354, 221, 355, 221,
- 356, 225, 357, 225, // NOLINT
- 358, 229, 359, 229, 360, 233,
- 361, 233, 362, 237, 363, 237,
- 364, 241, 365, 241, // NOLINT
- 366, 245, 367, 245, 368, 249,
- 369, 249, 370, 253, 371, 253,
- 372, 257, 373, 257, // NOLINT
- 374, 261, 375, 261, 376, 29,
- 377, 265, 378, 265, 379, 269,
- 380, 269, 381, 273, // NOLINT
- 382, 273, 384, 277, 385, 281,
- 386, 285, 387, 285, 388, 289,
- 389, 289, 390, 293, // NOLINT
- 391, 297, 392, 297, 1073742217, 301,
- 394, 305, 395, 309, 396, 309,
- 398, 313, 399, 317, // NOLINT
- 400, 321, 401, 325, 402, 325,
- 403, 329, 404, 333, 405, 337,
- 406, 341, 407, 345, // NOLINT
- 408, 349, 409, 349, 410, 353,
- 412, 357, 413, 361, 414, 365,
- 415, 369, 416, 373, // NOLINT
- 417, 373, 418, 377, 419, 377,
- 420, 381, 421, 381, 422, 385,
- 423, 389, 424, 389, // NOLINT
- 425, 393, 428, 397, 429, 397,
- 430, 401, 431, 405, 432, 405,
- 1073742257, 409, 434, 413, // NOLINT
- 435, 417, 436, 417, 437, 421,
- 438, 421, 439, 425, 440, 429,
- 441, 429, 444, 433, // NOLINT
- 445, 433, 447, 437, 452, 441,
- 453, 441, 454, 441, 455, 445,
- 456, 445, 457, 445, // NOLINT
- 458, 449, 459, 449, 460, 449,
- 461, 453, 462, 453, 463, 457,
- 464, 457, 465, 461, // NOLINT
- 466, 461, 467, 465, 468, 465,
- 469, 469, 470, 469, 471, 473,
- 472, 473, 473, 477, // NOLINT
- 474, 477, 475, 481, 476, 481,
- 477, 313, 478, 485, 479, 485,
- 480, 489, 481, 489, // NOLINT
- 482, 493, 483, 493, 484, 497,
- 485, 497, 486, 501, 487, 501,
- 488, 505, 489, 505, // NOLINT
- 490, 509, 491, 509, 492, 513,
- 493, 513, 494, 517, 495, 517,
- 497, 521, 498, 521, // NOLINT
- 499, 521, 500, 525, 501, 525,
- 502, 337, 503, 437, 504, 529,
- 505, 529, 506, 533, // NOLINT
- 507, 533, 508, 537, 509, 537,
- 510, 541, 511, 541, 512, 545,
- 513, 545, 514, 549, // NOLINT
- 515, 549, 516, 553, 517, 553,
- 518, 557, 519, 557, 520, 561,
- 521, 561, 522, 565, // NOLINT
- 523, 565, 524, 569, 525, 569,
- 526, 573, 527, 573, 528, 577,
- 529, 577, 530, 581, // NOLINT
- 531, 581, 532, 585, 533, 585,
- 534, 589, 535, 589, 536, 593,
- 537, 593, 538, 597, // NOLINT
- 539, 597, 540, 601, 541, 601,
- 542, 605, 543, 605, 544, 365,
- 546, 609, 547, 609, // NOLINT
- 548, 613, 549, 613, 550, 617,
- 551, 617, 552, 621, 553, 621,
- 554, 625, 555, 625, // NOLINT
- 556, 629, 557, 629, 558, 633,
- 559, 633, 560, 637, 561, 637,
- 562, 641, 563, 641, // NOLINT
- 570, 645, 571, 649, 572, 649,
- 573, 353, 574, 653, 1073742399, 657,
- 576, 661, 577, 665, // NOLINT
- 578, 665, 579, 277, 580, 669,
- 581, 673, 582, 677, 583, 677,
- 584, 681, 585, 681, // NOLINT
- 586, 685, 587, 685, 588, 689,
- 589, 689, 590, 693, 591, 693,
- 592, 697, 593, 701, // NOLINT
- 594, 705, 595, 281, 596, 293,
- 1073742422, 301, 599, 305, 601, 317,
- 603, 321, 604, 709, // NOLINT
- 608, 329, 609, 713, 611, 333,
- 613, 717, 614, 721, 616, 345,
- 617, 341, 619, 725, // NOLINT
- 620, 729, 623, 357, 625, 733,
- 626, 361, 629, 369, 637, 737,
- 640, 385, 643, 393, // NOLINT
- 647, 741, 648, 401, 649, 669,
- 1073742474, 409, 651, 413, 652, 673,
- 658, 425, 670, 745, // NOLINT
- 837, 749, 880, 753, 881, 753,
- 882, 757, 883, 757, 886, 761,
- 887, 761, 1073742715, 765, // NOLINT
- 893, 769, 895, 773, 902, 777,
- 1073742728, 781, 906, 785, 908, 789,
- 1073742734, 793, 911, 797, // NOLINT
- 913, 801, 914, 805, 1073742739, 809,
- 916, 813, 917, 817, 1073742742, 821,
- 919, 825, 920, 829, // NOLINT
- 921, 749, 922, 833, 923, 837,
- 924, 9, 1073742749, 841, 927, 845,
- 928, 849, 929, 853, // NOLINT
- 931, 857, 1073742756, 861, 933, 865,
- 934, 869, 1073742759, 873, 939, 877,
- 940, 777, 1073742765, 781, // NOLINT
- 943, 785, 945, 801, 946, 805,
- 1073742771, 809, 948, 813, 949, 817,
- 1073742774, 821, 951, 825, // NOLINT
- 952, 829, 953, 749, 954, 833,
- 955, 837, 956, 9, 1073742781, 841,
- 959, 845, 960, 849, // NOLINT
- 961, 853, 962, 857, 963, 857,
- 1073742788, 861, 965, 865, 966, 869,
- 1073742791, 873, 971, 877, // NOLINT
- 972, 789, 1073742797, 793, 974, 797,
- 975, 881, 976, 805, 977, 829,
- 981, 869, 982, 849, // NOLINT
- 983, 881, 984, 885, 985, 885,
- 986, 889, 987, 889, 988, 893,
- 989, 893, 990, 897, // NOLINT
- 991, 897, 992, 901, 993, 901,
- 994, 905, 995, 905, 996, 909,
- 997, 909, 998, 913, // NOLINT
- 999, 913, 1000, 917, 1001, 917,
- 1002, 921, 1003, 921, 1004, 925,
- 1005, 925, 1006, 929, // NOLINT
- 1007, 929, 1008, 833, 1009, 853,
- 1010, 933, 1011, 773, 1013, 817,
- 1015, 937, 1016, 937, // NOLINT
- 1017, 933, 1018, 941, 1019, 941,
- 1073742845, 765, 1023, 769, 1073742848, 945,
- 1039, 949, 1073742864, 953, // NOLINT
- 1071, 957, 1073742896, 953, 1103, 957,
- 1073742928, 945, 1119, 949, 1120, 961,
- 1121, 961, 1122, 965, // NOLINT
- 1123, 965, 1124, 969, 1125, 969,
- 1126, 973, 1127, 973, 1128, 977,
- 1129, 977, 1130, 981, // NOLINT
- 1131, 981, 1132, 985, 1133, 985,
- 1134, 989, 1135, 989, 1136, 993,
- 1137, 993, 1138, 997, // NOLINT
- 1139, 997, 1140, 1001, 1141, 1001,
- 1142, 1005, 1143, 1005, 1144, 1009,
- 1145, 1009, 1146, 1013, // NOLINT
- 1147, 1013, 1148, 1017, 1149, 1017,
- 1150, 1021, 1151, 1021, 1152, 1025,
- 1153, 1025, 1162, 1029, // NOLINT
- 1163, 1029, 1164, 1033, 1165, 1033,
- 1166, 1037, 1167, 1037, 1168, 1041,
- 1169, 1041, 1170, 1045, // NOLINT
- 1171, 1045, 1172, 1049, 1173, 1049,
- 1174, 1053, 1175, 1053, 1176, 1057,
- 1177, 1057, 1178, 1061, // NOLINT
- 1179, 1061, 1180, 1065, 1181, 1065,
- 1182, 1069, 1183, 1069, 1184, 1073,
- 1185, 1073, 1186, 1077, // NOLINT
- 1187, 1077, 1188, 1081, 1189, 1081,
- 1190, 1085, 1191, 1085, 1192, 1089,
- 1193, 1089, 1194, 1093, // NOLINT
- 1195, 1093, 1196, 1097, 1197, 1097,
- 1198, 1101, 1199, 1101, 1200, 1105,
- 1201, 1105, 1202, 1109, // NOLINT
- 1203, 1109, 1204, 1113, 1205, 1113,
- 1206, 1117, 1207, 1117, 1208, 1121,
- 1209, 1121, 1210, 1125, // NOLINT
- 1211, 1125, 1212, 1129, 1213, 1129,
- 1214, 1133, 1215, 1133, 1216, 1137,
- 1217, 1141, 1218, 1141, // NOLINT
- 1219, 1145, 1220, 1145, 1221, 1149,
- 1222, 1149, 1223, 1153, 1224, 1153,
- 1225, 1157, 1226, 1157, // NOLINT
- 1227, 1161, 1228, 1161, 1229, 1165,
- 1230, 1165, 1231, 1137, 1232, 1169,
- 1233, 1169, 1234, 1173, // NOLINT
- 1235, 1173, 1236, 1177, 1237, 1177,
- 1238, 1181, 1239, 1181, 1240, 1185,
- 1241, 1185, 1242, 1189, // NOLINT
- 1243, 1189, 1244, 1193, 1245, 1193,
- 1246, 1197, 1247, 1197, 1248, 1201,
- 1249, 1201, 1250, 1205, // NOLINT
- 1251, 1205, 1252, 1209, 1253, 1209,
- 1254, 1213, 1255, 1213, 1256, 1217,
- 1257, 1217, 1258, 1221, // NOLINT
- 1259, 1221, 1260, 1225, 1261, 1225,
- 1262, 1229, 1263, 1229, 1264, 1233,
- 1265, 1233, 1266, 1237, // NOLINT
- 1267, 1237, 1268, 1241, 1269, 1241,
- 1270, 1245, 1271, 1245, 1272, 1249,
- 1273, 1249, 1274, 1253, // NOLINT
- 1275, 1253, 1276, 1257, 1277, 1257,
- 1278, 1261, 1279, 1261, 1280, 1265,
- 1281, 1265, 1282, 1269, // NOLINT
- 1283, 1269, 1284, 1273, 1285, 1273,
- 1286, 1277, 1287, 1277, 1288, 1281,
- 1289, 1281, 1290, 1285, // NOLINT
- 1291, 1285, 1292, 1289, 1293, 1289,
- 1294, 1293, 1295, 1293, 1296, 1297,
- 1297, 1297, 1298, 1301, // NOLINT
- 1299, 1301, 1300, 1305, 1301, 1305,
- 1302, 1309, 1303, 1309, 1304, 1313,
- 1305, 1313, 1306, 1317, // NOLINT
- 1307, 1317, 1308, 1321, 1309, 1321,
- 1310, 1325, 1311, 1325, 1312, 1329,
- 1313, 1329, 1314, 1333, // NOLINT
- 1315, 1333, 1316, 1337, 1317, 1337,
- 1318, 1341, 1319, 1341, 1320, 1345,
- 1321, 1345, 1322, 1349, // NOLINT
- 1323, 1349, 1324, 1353, 1325, 1353,
- 1326, 1357, 1327, 1357, 1073743153, 1361,
- 1366, 1365, 1073743201, 1361, // NOLINT
- 1414, 1365, 1073746080, 1369, 4293, 1373,
- 4295, 1377, 4301, 1381, 7545, 1385,
- 7549, 1389, 7680, 1393, // NOLINT
- 7681, 1393, 7682, 1397, 7683, 1397,
- 7684, 1401, 7685, 1401, 7686, 1405,
- 7687, 1405, 7688, 1409, // NOLINT
- 7689, 1409, 7690, 1413, 7691, 1413,
- 7692, 1417, 7693, 1417, 7694, 1421,
- 7695, 1421, 7696, 1425, // NOLINT
- 7697, 1425, 7698, 1429, 7699, 1429,
- 7700, 1433, 7701, 1433, 7702, 1437,
- 7703, 1437, 7704, 1441, // NOLINT
- 7705, 1441, 7706, 1445, 7707, 1445,
- 7708, 1449, 7709, 1449, 7710, 1453,
- 7711, 1453, 7712, 1457, // NOLINT
- 7713, 1457, 7714, 1461, 7715, 1461,
- 7716, 1465, 7717, 1465, 7718, 1469,
- 7719, 1469, 7720, 1473, // NOLINT
- 7721, 1473, 7722, 1477, 7723, 1477,
- 7724, 1481, 7725, 1481, 7726, 1485,
- 7727, 1485, 7728, 1489, // NOLINT
- 7729, 1489, 7730, 1493, 7731, 1493,
- 7732, 1497, 7733, 1497, 7734, 1501,
- 7735, 1501, 7736, 1505, // NOLINT
- 7737, 1505, 7738, 1509, 7739, 1509,
- 7740, 1513, 7741, 1513, 7742, 1517,
- 7743, 1517, 7744, 1521, // NOLINT
- 7745, 1521, 7746, 1525, 7747, 1525,
- 7748, 1529, 7749, 1529, 7750, 1533,
- 7751, 1533, 7752, 1537, // NOLINT
- 7753, 1537, 7754, 1541, 7755, 1541,
- 7756, 1545, 7757, 1545, 7758, 1549,
- 7759, 1549, 7760, 1553, // NOLINT
- 7761, 1553, 7762, 1557, 7763, 1557,
- 7764, 1561, 7765, 1561, 7766, 1565,
- 7767, 1565, 7768, 1569, // NOLINT
- 7769, 1569, 7770, 1573, 7771, 1573,
- 7772, 1577, 7773, 1577, 7774, 1581,
- 7775, 1581, 7776, 1585, // NOLINT
- 7777, 1585, 7778, 1589, 7779, 1589,
- 7780, 1593, 7781, 1593, 7782, 1597,
- 7783, 1597, 7784, 1601, // NOLINT
- 7785, 1601, 7786, 1605, 7787, 1605,
- 7788, 1609, 7789, 1609, 7790, 1613,
- 7791, 1613, 7792, 1617, // NOLINT
- 7793, 1617, 7794, 1621, 7795, 1621,
- 7796, 1625, 7797, 1625, 7798, 1629,
- 7799, 1629, 7800, 1633, // NOLINT
- 7801, 1633, 7802, 1637, 7803, 1637,
- 7804, 1641, 7805, 1641, 7806, 1645,
- 7807, 1645, 7808, 1649, // NOLINT
- 7809, 1649, 7810, 1653, 7811, 1653,
- 7812, 1657, 7813, 1657, 7814, 1661,
- 7815, 1661, 7816, 1665, // NOLINT
- 7817, 1665, 7818, 1669, 7819, 1669,
- 7820, 1673, 7821, 1673, 7822, 1677,
- 7823, 1677, 7824, 1681, // NOLINT
- 7825, 1681, 7826, 1685, 7827, 1685,
- 7828, 1689, 7829, 1689, 7835, 1585,
- 7840, 1693, 7841, 1693, // NOLINT
- 7842, 1697, 7843, 1697, 7844, 1701,
- 7845, 1701, 7846, 1705, 7847, 1705,
- 7848, 1709, 7849, 1709, // NOLINT
- 7850, 1713, 7851, 1713, 7852, 1717,
- 7853, 1717, 7854, 1721, 7855, 1721,
- 7856, 1725, 7857, 1725, // NOLINT
- 7858, 1729, 7859, 1729, 7860, 1733,
- 7861, 1733, 7862, 1737, 7863, 1737,
- 7864, 1741, 7865, 1741, // NOLINT
- 7866, 1745, 7867, 1745, 7868, 1749,
- 7869, 1749, 7870, 1753, 7871, 1753,
- 7872, 1757, 7873, 1757, // NOLINT
- 7874, 1761, 7875, 1761, 7876, 1765,
- 7877, 1765, 7878, 1769, 7879, 1769,
- 7880, 1773, 7881, 1773, // NOLINT
- 7882, 1777, 7883, 1777, 7884, 1781,
- 7885, 1781, 7886, 1785, 7887, 1785,
- 7888, 1789, 7889, 1789, // NOLINT
- 7890, 1793, 7891, 1793, 7892, 1797,
- 7893, 1797, 7894, 1801, 7895, 1801,
- 7896, 1805, 7897, 1805, // NOLINT
- 7898, 1809, 7899, 1809, 7900, 1813,
- 7901, 1813, 7902, 1817, 7903, 1817,
- 7904, 1821, 7905, 1821, // NOLINT
- 7906, 1825, 7907, 1825, 7908, 1829,
- 7909, 1829, 7910, 1833, 7911, 1833,
- 7912, 1837, 7913, 1837, // NOLINT
- 7914, 1841, 7915, 1841, 7916, 1845,
- 7917, 1845, 7918, 1849, 7919, 1849,
- 7920, 1853, 7921, 1853, // NOLINT
- 7922, 1857, 7923, 1857, 7924, 1861,
- 7925, 1861, 7926, 1865, 7927, 1865,
- 7928, 1869, 7929, 1869, // NOLINT
- 7930, 1873, 7931, 1873, 7932, 1877,
- 7933, 1877, 7934, 1881, 7935, 1881,
- 1073749760, 1885, 7943, 1889, // NOLINT
- 1073749768, 1885, 7951, 1889, 1073749776, 1893,
- 7957, 1897, 1073749784, 1893, 7965, 1897,
- 1073749792, 1901, 7975, 1905, // NOLINT
- 1073749800, 1901, 7983, 1905, 1073749808, 1909,
- 7991, 1913, 1073749816, 1909, 7999, 1913,
- 1073749824, 1917, 8005, 1921, // NOLINT
- 1073749832, 1917, 8013, 1921, 8017, 1925,
- 8019, 1929, 8021, 1933, 8023, 1937,
- 8025, 1925, 8027, 1929, // NOLINT
- 8029, 1933, 8031, 1937, 1073749856, 1941,
- 8039, 1945, 1073749864, 1941, 8047, 1945,
- 1073749872, 1949, 8049, 1953, // NOLINT
- 1073749874, 1957, 8053, 1961, 1073749878, 1965,
- 8055, 1969, 1073749880, 1973, 8057, 1977,
- 1073749882, 1981, 8059, 1985, // NOLINT
- 1073749884, 1989, 8061, 1993, 1073749936, 1997,
- 8113, 2001, 1073749944, 1997, 8121, 2001,
- 1073749946, 1949, 8123, 1953, // NOLINT
- 8126, 749, 1073749960, 1957, 8139, 1961,
- 1073749968, 2005, 8145, 2009, 1073749976, 2005,
- 8153, 2009, 1073749978, 1965, // NOLINT
- 8155, 1969, 1073749984, 2013, 8161, 2017,
- 8165, 2021, 1073749992, 2013, 8169, 2017,
- 1073749994, 1981, 8171, 1985, // NOLINT
- 8172, 2021, 1073750008, 1973, 8185, 1977,
- 1073750010, 1989, 8187, 1993}; // NOLINT
-static const uint16_t kEcma262UnCanonicalizeMultiStrings0Size = 507; // NOLINT
+ 1073741889, 1, 90, 5, 1073741921, 1, 122, 5,
+ 181, 9, 1073742016, 13, 214, 17, 1073742040, 21,
+ 222, 25, 1073742048, 13, 246, 17, 1073742072, 21,
+ 254, 25, 255, 29, 256, 33, 257, 33,
+ 258, 37, 259, 37, 260, 41, 261, 41,
+ 262, 45, 263, 45, 264, 49, 265, 49,
+ 266, 53, 267, 53, 268, 57, 269, 57,
+ 270, 61, 271, 61, 272, 65, 273, 65,
+ 274, 69, 275, 69, 276, 73, 277, 73,
+ 278, 77, 279, 77, 280, 81, 281, 81,
+ 282, 85, 283, 85, 284, 89, 285, 89,
+ 286, 93, 287, 93, 288, 97, 289, 97,
+ 290, 101, 291, 101, 292, 105, 293, 105,
+ 294, 109, 295, 109, 296, 113, 297, 113,
+ 298, 117, 299, 117, 300, 121, 301, 121,
+ 302, 125, 303, 125, 306, 129, 307, 129,
+ 308, 133, 309, 133, 310, 137, 311, 137,
+ 313, 141, 314, 141, 315, 145, 316, 145,
+ 317, 149, 318, 149, 319, 153, 320, 153,
+ 321, 157, 322, 157, 323, 161, 324, 161,
+ 325, 165, 326, 165, 327, 169, 328, 169,
+ 330, 173, 331, 173, 332, 177, 333, 177,
+ 334, 181, 335, 181, 336, 185, 337, 185,
+ 338, 189, 339, 189, 340, 193, 341, 193,
+ 342, 197, 343, 197, 344, 201, 345, 201,
+ 346, 205, 347, 205, 348, 209, 349, 209,
+ 350, 213, 351, 213, 352, 217, 353, 217,
+ 354, 221, 355, 221, 356, 225, 357, 225,
+ 358, 229, 359, 229, 360, 233, 361, 233,
+ 362, 237, 363, 237, 364, 241, 365, 241,
+ 366, 245, 367, 245, 368, 249, 369, 249,
+ 370, 253, 371, 253, 372, 257, 373, 257,
+ 374, 261, 375, 261, 376, 29, 377, 265,
+ 378, 265, 379, 269, 380, 269, 381, 273,
+ 382, 273, 384, 277, 385, 281, 386, 285,
+ 387, 285, 388, 289, 389, 289, 390, 293,
+ 391, 297, 392, 297, 1073742217, 301, 394, 305,
+ 395, 309, 396, 309, 398, 313, 399, 317,
+ 400, 321, 401, 325, 402, 325, 403, 329,
+ 404, 333, 405, 337, 406, 341, 407, 345,
+ 408, 349, 409, 349, 410, 353, 412, 357,
+ 413, 361, 414, 365, 415, 369, 416, 373,
+ 417, 373, 418, 377, 419, 377, 420, 381,
+ 421, 381, 422, 385, 423, 389, 424, 389,
+ 425, 393, 428, 397, 429, 397, 430, 401,
+ 431, 405, 432, 405, 1073742257, 409, 434, 413,
+ 435, 417, 436, 417, 437, 421, 438, 421,
+ 439, 425, 440, 429, 441, 429, 444, 433,
+ 445, 433, 447, 437, 452, 441, 453, 441,
+ 454, 441, 455, 445, 456, 445, 457, 445,
+ 458, 449, 459, 449, 460, 449, 461, 453,
+ 462, 453, 463, 457, 464, 457, 465, 461,
+ 466, 461, 467, 465, 468, 465, 469, 469,
+ 470, 469, 471, 473, 472, 473, 473, 477,
+ 474, 477, 475, 481, 476, 481, 477, 313,
+ 478, 485, 479, 485, 480, 489, 481, 489,
+ 482, 493, 483, 493, 484, 497, 485, 497,
+ 486, 501, 487, 501, 488, 505, 489, 505,
+ 490, 509, 491, 509, 492, 513, 493, 513,
+ 494, 517, 495, 517, 497, 521, 498, 521,
+ 499, 521, 500, 525, 501, 525, 502, 337,
+ 503, 437, 504, 529, 505, 529, 506, 533,
+ 507, 533, 508, 537, 509, 537, 510, 541,
+ 511, 541, 512, 545, 513, 545, 514, 549,
+ 515, 549, 516, 553, 517, 553, 518, 557,
+ 519, 557, 520, 561, 521, 561, 522, 565,
+ 523, 565, 524, 569, 525, 569, 526, 573,
+ 527, 573, 528, 577, 529, 577, 530, 581,
+ 531, 581, 532, 585, 533, 585, 534, 589,
+ 535, 589, 536, 593, 537, 593, 538, 597,
+ 539, 597, 540, 601, 541, 601, 542, 605,
+ 543, 605, 544, 365, 546, 609, 547, 609,
+ 548, 613, 549, 613, 550, 617, 551, 617,
+ 552, 621, 553, 621, 554, 625, 555, 625,
+ 556, 629, 557, 629, 558, 633, 559, 633,
+ 560, 637, 561, 637, 562, 641, 563, 641,
+ 570, 645, 571, 649, 572, 649, 573, 353,
+ 574, 653, 1073742399, 657, 576, 661, 577, 665,
+ 578, 665, 579, 277, 580, 669, 581, 673,
+ 582, 677, 583, 677, 584, 681, 585, 681,
+ 586, 685, 587, 685, 588, 689, 589, 689,
+ 590, 693, 591, 693, 592, 697, 593, 701,
+ 594, 705, 595, 281, 596, 293, 1073742422, 301,
+ 599, 305, 601, 317, 603, 321, 604, 709,
+ 608, 329, 609, 713, 611, 333, 613, 717,
+ 614, 721, 616, 345, 617, 341, 619, 725,
+ 620, 729, 623, 357, 625, 733, 626, 361,
+ 629, 369, 637, 737, 640, 385, 643, 393,
+ 647, 741, 648, 401, 649, 669, 1073742474, 409,
+ 651, 413, 652, 673, 658, 425, 670, 745,
+ 837, 749, 880, 753, 881, 753, 882, 757,
+ 883, 757, 886, 761, 887, 761, 1073742715, 765,
+ 893, 769, 895, 773, 902, 777, 1073742728, 781,
+ 906, 785, 908, 789, 1073742734, 793, 911, 797,
+ 913, 801, 914, 805, 1073742739, 809, 916, 813,
+ 917, 817, 1073742742, 821, 919, 825, 920, 829,
+ 921, 749, 922, 833, 923, 837, 924, 9,
+ 1073742749, 841, 927, 845, 928, 849, 929, 853,
+ 931, 857, 1073742756, 861, 933, 865, 934, 869,
+ 1073742759, 873, 939, 877, 940, 777, 1073742765, 781,
+ 943, 785, 945, 801, 946, 805, 1073742771, 809,
+ 948, 813, 949, 817, 1073742774, 821, 951, 825,
+ 952, 829, 953, 749, 954, 833, 955, 837,
+ 956, 9, 1073742781, 841, 959, 845, 960, 849,
+ 961, 853, 962, 857, 963, 857, 1073742788, 861,
+ 965, 865, 966, 869, 1073742791, 873, 971, 877,
+ 972, 789, 1073742797, 793, 974, 797, 975, 881,
+ 976, 805, 977, 829, 981, 869, 982, 849,
+ 983, 881, 984, 885, 985, 885, 986, 889,
+ 987, 889, 988, 893, 989, 893, 990, 897,
+ 991, 897, 992, 901, 993, 901, 994, 905,
+ 995, 905, 996, 909, 997, 909, 998, 913,
+ 999, 913, 1000, 917, 1001, 917, 1002, 921,
+ 1003, 921, 1004, 925, 1005, 925, 1006, 929,
+ 1007, 929, 1008, 833, 1009, 853, 1010, 933,
+ 1011, 773, 1013, 817, 1015, 937, 1016, 937,
+ 1017, 933, 1018, 941, 1019, 941, 1073742845, 765,
+ 1023, 769, 1073742848, 945, 1039, 949, 1073742864, 953,
+ 1071, 957, 1073742896, 953, 1103, 957, 1073742928, 945,
+ 1119, 949, 1120, 961, 1121, 961, 1122, 965,
+ 1123, 965, 1124, 969, 1125, 969, 1126, 973,
+ 1127, 973, 1128, 977, 1129, 977, 1130, 981,
+ 1131, 981, 1132, 985, 1133, 985, 1134, 989,
+ 1135, 989, 1136, 993, 1137, 993, 1138, 997,
+ 1139, 997, 1140, 1001, 1141, 1001, 1142, 1005,
+ 1143, 1005, 1144, 1009, 1145, 1009, 1146, 1013,
+ 1147, 1013, 1148, 1017, 1149, 1017, 1150, 1021,
+ 1151, 1021, 1152, 1025, 1153, 1025, 1162, 1029,
+ 1163, 1029, 1164, 1033, 1165, 1033, 1166, 1037,
+ 1167, 1037, 1168, 1041, 1169, 1041, 1170, 1045,
+ 1171, 1045, 1172, 1049, 1173, 1049, 1174, 1053,
+ 1175, 1053, 1176, 1057, 1177, 1057, 1178, 1061,
+ 1179, 1061, 1180, 1065, 1181, 1065, 1182, 1069,
+ 1183, 1069, 1184, 1073, 1185, 1073, 1186, 1077,
+ 1187, 1077, 1188, 1081, 1189, 1081, 1190, 1085,
+ 1191, 1085, 1192, 1089, 1193, 1089, 1194, 1093,
+ 1195, 1093, 1196, 1097, 1197, 1097, 1198, 1101,
+ 1199, 1101, 1200, 1105, 1201, 1105, 1202, 1109,
+ 1203, 1109, 1204, 1113, 1205, 1113, 1206, 1117,
+ 1207, 1117, 1208, 1121, 1209, 1121, 1210, 1125,
+ 1211, 1125, 1212, 1129, 1213, 1129, 1214, 1133,
+ 1215, 1133, 1216, 1137, 1217, 1141, 1218, 1141,
+ 1219, 1145, 1220, 1145, 1221, 1149, 1222, 1149,
+ 1223, 1153, 1224, 1153, 1225, 1157, 1226, 1157,
+ 1227, 1161, 1228, 1161, 1229, 1165, 1230, 1165,
+ 1231, 1137, 1232, 1169, 1233, 1169, 1234, 1173,
+ 1235, 1173, 1236, 1177, 1237, 1177, 1238, 1181,
+ 1239, 1181, 1240, 1185, 1241, 1185, 1242, 1189,
+ 1243, 1189, 1244, 1193, 1245, 1193, 1246, 1197,
+ 1247, 1197, 1248, 1201, 1249, 1201, 1250, 1205,
+ 1251, 1205, 1252, 1209, 1253, 1209, 1254, 1213,
+ 1255, 1213, 1256, 1217, 1257, 1217, 1258, 1221,
+ 1259, 1221, 1260, 1225, 1261, 1225, 1262, 1229,
+ 1263, 1229, 1264, 1233, 1265, 1233, 1266, 1237,
+ 1267, 1237, 1268, 1241, 1269, 1241, 1270, 1245,
+ 1271, 1245, 1272, 1249, 1273, 1249, 1274, 1253,
+ 1275, 1253, 1276, 1257, 1277, 1257, 1278, 1261,
+ 1279, 1261, 1280, 1265, 1281, 1265, 1282, 1269,
+ 1283, 1269, 1284, 1273, 1285, 1273, 1286, 1277,
+ 1287, 1277, 1288, 1281, 1289, 1281, 1290, 1285,
+ 1291, 1285, 1292, 1289, 1293, 1289, 1294, 1293,
+ 1295, 1293, 1296, 1297, 1297, 1297, 1298, 1301,
+ 1299, 1301, 1300, 1305, 1301, 1305, 1302, 1309,
+ 1303, 1309, 1304, 1313, 1305, 1313, 1306, 1317,
+ 1307, 1317, 1308, 1321, 1309, 1321, 1310, 1325,
+ 1311, 1325, 1312, 1329, 1313, 1329, 1314, 1333,
+ 1315, 1333, 1316, 1337, 1317, 1337, 1318, 1341,
+ 1319, 1341, 1320, 1345, 1321, 1345, 1322, 1349,
+ 1323, 1349, 1324, 1353, 1325, 1353, 1326, 1357,
+ 1327, 1357, 1073743153, 1361, 1366, 1365, 1073743201, 1361,
+ 1414, 1365, 1073746080, 1369, 4293, 1373, 4295, 1377,
+ 4301, 1381, 7545, 1385, 7549, 1389, 7680, 1393,
+ 7681, 1393, 7682, 1397, 7683, 1397, 7684, 1401,
+ 7685, 1401, 7686, 1405, 7687, 1405, 7688, 1409,
+ 7689, 1409, 7690, 1413, 7691, 1413, 7692, 1417,
+ 7693, 1417, 7694, 1421, 7695, 1421, 7696, 1425,
+ 7697, 1425, 7698, 1429, 7699, 1429, 7700, 1433,
+ 7701, 1433, 7702, 1437, 7703, 1437, 7704, 1441,
+ 7705, 1441, 7706, 1445, 7707, 1445, 7708, 1449,
+ 7709, 1449, 7710, 1453, 7711, 1453, 7712, 1457,
+ 7713, 1457, 7714, 1461, 7715, 1461, 7716, 1465,
+ 7717, 1465, 7718, 1469, 7719, 1469, 7720, 1473,
+ 7721, 1473, 7722, 1477, 7723, 1477, 7724, 1481,
+ 7725, 1481, 7726, 1485, 7727, 1485, 7728, 1489,
+ 7729, 1489, 7730, 1493, 7731, 1493, 7732, 1497,
+ 7733, 1497, 7734, 1501, 7735, 1501, 7736, 1505,
+ 7737, 1505, 7738, 1509, 7739, 1509, 7740, 1513,
+ 7741, 1513, 7742, 1517, 7743, 1517, 7744, 1521,
+ 7745, 1521, 7746, 1525, 7747, 1525, 7748, 1529,
+ 7749, 1529, 7750, 1533, 7751, 1533, 7752, 1537,
+ 7753, 1537, 7754, 1541, 7755, 1541, 7756, 1545,
+ 7757, 1545, 7758, 1549, 7759, 1549, 7760, 1553,
+ 7761, 1553, 7762, 1557, 7763, 1557, 7764, 1561,
+ 7765, 1561, 7766, 1565, 7767, 1565, 7768, 1569,
+ 7769, 1569, 7770, 1573, 7771, 1573, 7772, 1577,
+ 7773, 1577, 7774, 1581, 7775, 1581, 7776, 1585,
+ 7777, 1585, 7778, 1589, 7779, 1589, 7780, 1593,
+ 7781, 1593, 7782, 1597, 7783, 1597, 7784, 1601,
+ 7785, 1601, 7786, 1605, 7787, 1605, 7788, 1609,
+ 7789, 1609, 7790, 1613, 7791, 1613, 7792, 1617,
+ 7793, 1617, 7794, 1621, 7795, 1621, 7796, 1625,
+ 7797, 1625, 7798, 1629, 7799, 1629, 7800, 1633,
+ 7801, 1633, 7802, 1637, 7803, 1637, 7804, 1641,
+ 7805, 1641, 7806, 1645, 7807, 1645, 7808, 1649,
+ 7809, 1649, 7810, 1653, 7811, 1653, 7812, 1657,
+ 7813, 1657, 7814, 1661, 7815, 1661, 7816, 1665,
+ 7817, 1665, 7818, 1669, 7819, 1669, 7820, 1673,
+ 7821, 1673, 7822, 1677, 7823, 1677, 7824, 1681,
+ 7825, 1681, 7826, 1685, 7827, 1685, 7828, 1689,
+ 7829, 1689, 7835, 1585, 7840, 1693, 7841, 1693,
+ 7842, 1697, 7843, 1697, 7844, 1701, 7845, 1701,
+ 7846, 1705, 7847, 1705, 7848, 1709, 7849, 1709,
+ 7850, 1713, 7851, 1713, 7852, 1717, 7853, 1717,
+ 7854, 1721, 7855, 1721, 7856, 1725, 7857, 1725,
+ 7858, 1729, 7859, 1729, 7860, 1733, 7861, 1733,
+ 7862, 1737, 7863, 1737, 7864, 1741, 7865, 1741,
+ 7866, 1745, 7867, 1745, 7868, 1749, 7869, 1749,
+ 7870, 1753, 7871, 1753, 7872, 1757, 7873, 1757,
+ 7874, 1761, 7875, 1761, 7876, 1765, 7877, 1765,
+ 7878, 1769, 7879, 1769, 7880, 1773, 7881, 1773,
+ 7882, 1777, 7883, 1777, 7884, 1781, 7885, 1781,
+ 7886, 1785, 7887, 1785, 7888, 1789, 7889, 1789,
+ 7890, 1793, 7891, 1793, 7892, 1797, 7893, 1797,
+ 7894, 1801, 7895, 1801, 7896, 1805, 7897, 1805,
+ 7898, 1809, 7899, 1809, 7900, 1813, 7901, 1813,
+ 7902, 1817, 7903, 1817, 7904, 1821, 7905, 1821,
+ 7906, 1825, 7907, 1825, 7908, 1829, 7909, 1829,
+ 7910, 1833, 7911, 1833, 7912, 1837, 7913, 1837,
+ 7914, 1841, 7915, 1841, 7916, 1845, 7917, 1845,
+ 7918, 1849, 7919, 1849, 7920, 1853, 7921, 1853,
+ 7922, 1857, 7923, 1857, 7924, 1861, 7925, 1861,
+ 7926, 1865, 7927, 1865, 7928, 1869, 7929, 1869,
+ 7930, 1873, 7931, 1873, 7932, 1877, 7933, 1877,
+ 7934, 1881, 7935, 1881, 1073749760, 1885, 7943, 1889,
+ 1073749768, 1885, 7951, 1889, 1073749776, 1893, 7957, 1897,
+ 1073749784, 1893, 7965, 1897, 1073749792, 1901, 7975, 1905,
+ 1073749800, 1901, 7983, 1905, 1073749808, 1909, 7991, 1913,
+ 1073749816, 1909, 7999, 1913, 1073749824, 1917, 8005, 1921,
+ 1073749832, 1917, 8013, 1921, 8017, 1925, 8019, 1929,
+ 8021, 1933, 8023, 1937, 8025, 1925, 8027, 1929,
+ 8029, 1933, 8031, 1937, 1073749856, 1941, 8039, 1945,
+ 1073749864, 1941, 8047, 1945, 1073749872, 1949, 8049, 1953,
+ 1073749874, 1957, 8053, 1961, 1073749878, 1965, 8055, 1969,
+ 1073749880, 1973, 8057, 1977, 1073749882, 1981, 8059, 1985,
+ 1073749884, 1989, 8061, 1993, 1073749936, 1997, 8113, 2001,
+ 1073749944, 1997, 8121, 2001, 1073749946, 1949, 8123, 1953,
+ 8126, 749, 1073749960, 1957, 8139, 1961, 1073749968, 2005,
+ 8145, 2009, 1073749976, 2005, 8153, 2009, 1073749978, 1965,
+ 8155, 1969, 1073749984, 2013, 8161, 2017, 8165, 2021,
+ 1073749992, 2013, 8169, 2017, 1073749994, 1981, 8171, 1985,
+ 8172, 2021, 1073750008, 1973, 8185, 1977, 1073750010, 1989,
+ 8187, 1993};
+static const uint16_t kEcma262UnCanonicalizeMultiStrings0Size = 507;
static const MultiCharacterSpecialCase<2>
- kEcma262UnCanonicalizeMultiStrings1[83] = { // NOLINT
- {{8498, 8526}}, {{8544, 8560}}, {{8559, 8575}},
- {{8579, 8580}}, // NOLINT
- {{9398, 9424}}, {{9423, 9449}}, {{11264, 11312}},
- {{11310, 11358}}, // NOLINT
- {{11360, 11361}}, {{619, 11362}}, {{7549, 11363}},
- {{637, 11364}}, // NOLINT
- {{570, 11365}}, {{574, 11366}}, {{11367, 11368}},
- {{11369, 11370}}, // NOLINT
- {{11371, 11372}}, {{593, 11373}}, {{625, 11374}},
- {{592, 11375}}, // NOLINT
- {{594, 11376}}, {{11378, 11379}}, {{11381, 11382}},
- {{575, 11390}}, // NOLINT
- {{576, 11391}}, {{11392, 11393}}, {{11394, 11395}},
- {{11396, 11397}}, // NOLINT
- {{11398, 11399}}, {{11400, 11401}}, {{11402, 11403}},
- {{11404, 11405}}, // NOLINT
- {{11406, 11407}}, {{11408, 11409}}, {{11410, 11411}},
- {{11412, 11413}}, // NOLINT
- {{11414, 11415}}, {{11416, 11417}}, {{11418, 11419}},
- {{11420, 11421}}, // NOLINT
- {{11422, 11423}}, {{11424, 11425}}, {{11426, 11427}},
- {{11428, 11429}}, // NOLINT
- {{11430, 11431}}, {{11432, 11433}}, {{11434, 11435}},
- {{11436, 11437}}, // NOLINT
- {{11438, 11439}}, {{11440, 11441}}, {{11442, 11443}},
- {{11444, 11445}}, // NOLINT
- {{11446, 11447}}, {{11448, 11449}}, {{11450, 11451}},
- {{11452, 11453}}, // NOLINT
- {{11454, 11455}}, {{11456, 11457}}, {{11458, 11459}},
- {{11460, 11461}}, // NOLINT
- {{11462, 11463}}, {{11464, 11465}}, {{11466, 11467}},
- {{11468, 11469}}, // NOLINT
- {{11470, 11471}}, {{11472, 11473}}, {{11474, 11475}},
- {{11476, 11477}}, // NOLINT
- {{11478, 11479}}, {{11480, 11481}}, {{11482, 11483}},
- {{11484, 11485}}, // NOLINT
- {{11486, 11487}}, {{11488, 11489}}, {{11490, 11491}},
- {{11499, 11500}}, // NOLINT
- {{11501, 11502}}, {{11506, 11507}}, {{4256, 11520}},
- {{4293, 11557}}, // NOLINT
- {{4295, 11559}}, {{4301, 11565}}, {{kSentinel}}}; // NOLINT
-static const uint16_t kEcma262UnCanonicalizeTable1Size = 149; // NOLINT
+ kEcma262UnCanonicalizeMultiStrings1[83] = {
+ {{8498, 8526}}, {{8544, 8560}}, {{8559, 8575}}, {{8579, 8580}},
+ {{9398, 9424}}, {{9423, 9449}}, {{11264, 11312}}, {{11310, 11358}},
+ {{11360, 11361}}, {{619, 11362}}, {{7549, 11363}}, {{637, 11364}},
+ {{570, 11365}}, {{574, 11366}}, {{11367, 11368}}, {{11369, 11370}},
+ {{11371, 11372}}, {{593, 11373}}, {{625, 11374}}, {{592, 11375}},
+ {{594, 11376}}, {{11378, 11379}}, {{11381, 11382}}, {{575, 11390}},
+ {{576, 11391}}, {{11392, 11393}}, {{11394, 11395}}, {{11396, 11397}},
+ {{11398, 11399}}, {{11400, 11401}}, {{11402, 11403}}, {{11404, 11405}},
+ {{11406, 11407}}, {{11408, 11409}}, {{11410, 11411}}, {{11412, 11413}},
+ {{11414, 11415}}, {{11416, 11417}}, {{11418, 11419}}, {{11420, 11421}},
+ {{11422, 11423}}, {{11424, 11425}}, {{11426, 11427}}, {{11428, 11429}},
+ {{11430, 11431}}, {{11432, 11433}}, {{11434, 11435}}, {{11436, 11437}},
+ {{11438, 11439}}, {{11440, 11441}}, {{11442, 11443}}, {{11444, 11445}},
+ {{11446, 11447}}, {{11448, 11449}}, {{11450, 11451}}, {{11452, 11453}},
+ {{11454, 11455}}, {{11456, 11457}}, {{11458, 11459}}, {{11460, 11461}},
+ {{11462, 11463}}, {{11464, 11465}}, {{11466, 11467}}, {{11468, 11469}},
+ {{11470, 11471}}, {{11472, 11473}}, {{11474, 11475}}, {{11476, 11477}},
+ {{11478, 11479}}, {{11480, 11481}}, {{11482, 11483}}, {{11484, 11485}},
+ {{11486, 11487}}, {{11488, 11489}}, {{11490, 11491}}, {{11499, 11500}},
+ {{11501, 11502}}, {{11506, 11507}}, {{4256, 11520}}, {{4293, 11557}},
+ {{4295, 11559}}, {{4301, 11565}}, {{kSentinel}}};
+static const uint16_t kEcma262UnCanonicalizeTable1Size = 149;
static const int32_t kEcma262UnCanonicalizeTable1[298] = {
306, 1, 334, 1, 1073742176, 5, 367, 9,
- 1073742192, 5, 383, 9, 387, 13, 388, 13, // NOLINT
+ 1073742192, 5, 383, 9, 387, 13, 388, 13,
1073743030, 17, 1231, 21, 1073743056, 17, 1257, 21,
- 1073744896, 25, 3118, 29, 1073744944, 25, 3166, 29, // NOLINT
+ 1073744896, 25, 3118, 29, 1073744944, 25, 3166, 29,
3168, 33, 3169, 33, 3170, 37, 3171, 41,
- 3172, 45, 3173, 49, 3174, 53, 3175, 57, // NOLINT
+ 3172, 45, 3173, 49, 3174, 53, 3175, 57,
3176, 57, 3177, 61, 3178, 61, 3179, 65,
- 3180, 65, 3181, 69, 3182, 73, 3183, 77, // NOLINT
+ 3180, 65, 3181, 69, 3182, 73, 3183, 77,
3184, 81, 3186, 85, 3187, 85, 3189, 89,
- 3190, 89, 1073745022, 93, 3199, 97, 3200, 101, // NOLINT
+ 3190, 89, 1073745022, 93, 3199, 97, 3200, 101,
3201, 101, 3202, 105, 3203, 105, 3204, 109,
- 3205, 109, 3206, 113, 3207, 113, 3208, 117, // NOLINT
+ 3205, 109, 3206, 113, 3207, 113, 3208, 117,
3209, 117, 3210, 121, 3211, 121, 3212, 125,
- 3213, 125, 3214, 129, 3215, 129, 3216, 133, // NOLINT
+ 3213, 125, 3214, 129, 3215, 129, 3216, 133,
3217, 133, 3218, 137, 3219, 137, 3220, 141,
- 3221, 141, 3222, 145, 3223, 145, 3224, 149, // NOLINT
+ 3221, 141, 3222, 145, 3223, 145, 3224, 149,
3225, 149, 3226, 153, 3227, 153, 3228, 157,
- 3229, 157, 3230, 161, 3231, 161, 3232, 165, // NOLINT
+ 3229, 157, 3230, 161, 3231, 161, 3232, 165,
3233, 165, 3234, 169, 3235, 169, 3236, 173,
- 3237, 173, 3238, 177, 3239, 177, 3240, 181, // NOLINT
+ 3237, 173, 3238, 177, 3239, 177, 3240, 181,
3241, 181, 3242, 185, 3243, 185, 3244, 189,
- 3245, 189, 3246, 193, 3247, 193, 3248, 197, // NOLINT
+ 3245, 189, 3246, 193, 3247, 193, 3248, 197,
3249, 197, 3250, 201, 3251, 201, 3252, 205,
- 3253, 205, 3254, 209, 3255, 209, 3256, 213, // NOLINT
+ 3253, 205, 3254, 209, 3255, 209, 3256, 213,
3257, 213, 3258, 217, 3259, 217, 3260, 221,
- 3261, 221, 3262, 225, 3263, 225, 3264, 229, // NOLINT
+ 3261, 221, 3262, 225, 3263, 225, 3264, 229,
3265, 229, 3266, 233, 3267, 233, 3268, 237,
- 3269, 237, 3270, 241, 3271, 241, 3272, 245, // NOLINT
+ 3269, 237, 3270, 241, 3271, 241, 3272, 245,
3273, 245, 3274, 249, 3275, 249, 3276, 253,
- 3277, 253, 3278, 257, 3279, 257, 3280, 261, // NOLINT
+ 3277, 253, 3278, 257, 3279, 257, 3280, 261,
3281, 261, 3282, 265, 3283, 265, 3284, 269,
- 3285, 269, 3286, 273, 3287, 273, 3288, 277, // NOLINT
+ 3285, 269, 3286, 273, 3287, 273, 3288, 277,
3289, 277, 3290, 281, 3291, 281, 3292, 285,
- 3293, 285, 3294, 289, 3295, 289, 3296, 293, // NOLINT
+ 3293, 285, 3294, 289, 3295, 289, 3296, 293,
3297, 293, 3298, 297, 3299, 297, 3307, 301,
- 3308, 301, 3309, 305, 3310, 305, 3314, 309, // NOLINT
+ 3308, 301, 3309, 305, 3310, 305, 3314, 309,
3315, 309, 1073745152, 313, 3365, 317, 3367, 321,
- 3373, 325}; // NOLINT
-static const uint16_t kEcma262UnCanonicalizeMultiStrings1Size = 83; // NOLINT
+ 3373, 325};
+static const uint16_t kEcma262UnCanonicalizeMultiStrings1Size = 83;
static const MultiCharacterSpecialCase<2>
- kEcma262UnCanonicalizeMultiStrings5[104] = { // NOLINT
- {{42560, 42561}}, {{42562, 42563}},
- {{42564, 42565}}, {{42566, 42567}}, // NOLINT
- {{42568, 42569}}, {{42570, 42571}},
- {{42572, 42573}}, {{42574, 42575}}, // NOLINT
- {{42576, 42577}}, {{42578, 42579}},
- {{42580, 42581}}, {{42582, 42583}}, // NOLINT
- {{42584, 42585}}, {{42586, 42587}},
- {{42588, 42589}}, {{42590, 42591}}, // NOLINT
- {{42592, 42593}}, {{42594, 42595}},
- {{42596, 42597}}, {{42598, 42599}}, // NOLINT
- {{42600, 42601}}, {{42602, 42603}},
- {{42604, 42605}}, {{42624, 42625}}, // NOLINT
- {{42626, 42627}}, {{42628, 42629}},
- {{42630, 42631}}, {{42632, 42633}}, // NOLINT
- {{42634, 42635}}, {{42636, 42637}},
- {{42638, 42639}}, {{42640, 42641}}, // NOLINT
- {{42642, 42643}}, {{42644, 42645}},
- {{42646, 42647}}, {{42648, 42649}}, // NOLINT
- {{42650, 42651}}, {{42786, 42787}},
- {{42788, 42789}}, {{42790, 42791}}, // NOLINT
- {{42792, 42793}}, {{42794, 42795}},
- {{42796, 42797}}, {{42798, 42799}}, // NOLINT
- {{42802, 42803}}, {{42804, 42805}},
- {{42806, 42807}}, {{42808, 42809}}, // NOLINT
- {{42810, 42811}}, {{42812, 42813}},
- {{42814, 42815}}, {{42816, 42817}}, // NOLINT
- {{42818, 42819}}, {{42820, 42821}},
- {{42822, 42823}}, {{42824, 42825}}, // NOLINT
- {{42826, 42827}}, {{42828, 42829}},
- {{42830, 42831}}, {{42832, 42833}}, // NOLINT
- {{42834, 42835}}, {{42836, 42837}},
- {{42838, 42839}}, {{42840, 42841}}, // NOLINT
- {{42842, 42843}}, {{42844, 42845}},
- {{42846, 42847}}, {{42848, 42849}}, // NOLINT
- {{42850, 42851}}, {{42852, 42853}},
- {{42854, 42855}}, {{42856, 42857}}, // NOLINT
- {{42858, 42859}}, {{42860, 42861}},
- {{42862, 42863}}, {{42873, 42874}}, // NOLINT
- {{42875, 42876}}, {{7545, 42877}},
- {{42878, 42879}}, {{42880, 42881}}, // NOLINT
- {{42882, 42883}}, {{42884, 42885}},
- {{42886, 42887}}, {{42891, 42892}}, // NOLINT
- {{613, 42893}}, {{42896, 42897}},
- {{42898, 42899}}, {{42902, 42903}}, // NOLINT
- {{42904, 42905}}, {{42906, 42907}},
- {{42908, 42909}}, {{42910, 42911}}, // NOLINT
- {{42912, 42913}}, {{42914, 42915}},
- {{42916, 42917}}, {{42918, 42919}}, // NOLINT
- {{42920, 42921}}, {{614, 42922}},
- {{604, 42923}}, {{609, 42924}}, // NOLINT
- {{620, 42925}}, {{670, 42928}},
- {{647, 42929}}, {{kSentinel}}}; // NOLINT
-static const uint16_t kEcma262UnCanonicalizeTable5Size = 198; // NOLINT
-static const int32_t
- kEcma262UnCanonicalizeTable5[396] =
- {1600, 1, 1601, 1, 1602, 5, 1603, 5,
- 1604, 9, 1605, 9, 1606, 13, 1607, 13, // NOLINT
- 1608, 17, 1609, 17, 1610, 21, 1611, 21,
- 1612, 25, 1613, 25, 1614, 29, 1615, 29, // NOLINT
- 1616, 33, 1617, 33, 1618, 37, 1619, 37,
- 1620, 41, 1621, 41, 1622, 45, 1623, 45, // NOLINT
- 1624, 49, 1625, 49, 1626, 53, 1627, 53,
- 1628, 57, 1629, 57, 1630, 61, 1631, 61, // NOLINT
- 1632, 65, 1633, 65, 1634, 69, 1635, 69,
- 1636, 73, 1637, 73, 1638, 77, 1639, 77, // NOLINT
- 1640, 81, 1641, 81, 1642, 85, 1643, 85,
- 1644, 89, 1645, 89, 1664, 93, 1665, 93, // NOLINT
- 1666, 97, 1667, 97, 1668, 101, 1669, 101,
- 1670, 105, 1671, 105, 1672, 109, 1673, 109, // NOLINT
- 1674, 113, 1675, 113, 1676, 117, 1677, 117,
- 1678, 121, 1679, 121, 1680, 125, 1681, 125, // NOLINT
- 1682, 129, 1683, 129, 1684, 133, 1685, 133,
- 1686, 137, 1687, 137, 1688, 141, 1689, 141, // NOLINT
- 1690, 145, 1691, 145, 1826, 149, 1827, 149,
- 1828, 153, 1829, 153, 1830, 157, 1831, 157, // NOLINT
- 1832, 161, 1833, 161, 1834, 165, 1835, 165,
- 1836, 169, 1837, 169, 1838, 173, 1839, 173, // NOLINT
- 1842, 177, 1843, 177, 1844, 181, 1845, 181,
- 1846, 185, 1847, 185, 1848, 189, 1849, 189, // NOLINT
- 1850, 193, 1851, 193, 1852, 197, 1853, 197,
- 1854, 201, 1855, 201, 1856, 205, 1857, 205, // NOLINT
- 1858, 209, 1859, 209, 1860, 213, 1861, 213,
- 1862, 217, 1863, 217, 1864, 221, 1865, 221, // NOLINT
- 1866, 225, 1867, 225, 1868, 229, 1869, 229,
- 1870, 233, 1871, 233, 1872, 237, 1873, 237, // NOLINT
- 1874, 241, 1875, 241, 1876, 245, 1877, 245,
- 1878, 249, 1879, 249, 1880, 253, 1881, 253, // NOLINT
- 1882, 257, 1883, 257, 1884, 261, 1885, 261,
- 1886, 265, 1887, 265, 1888, 269, 1889, 269, // NOLINT
- 1890, 273, 1891, 273, 1892, 277, 1893, 277,
- 1894, 281, 1895, 281, 1896, 285, 1897, 285, // NOLINT
- 1898, 289, 1899, 289, 1900, 293, 1901, 293,
- 1902, 297, 1903, 297, 1913, 301, 1914, 301, // NOLINT
- 1915, 305, 1916, 305, 1917, 309, 1918, 313,
- 1919, 313, 1920, 317, 1921, 317, 1922, 321, // NOLINT
- 1923, 321, 1924, 325, 1925, 325, 1926, 329,
- 1927, 329, 1931, 333, 1932, 333, 1933, 337, // NOLINT
- 1936, 341, 1937, 341, 1938, 345, 1939, 345,
- 1942, 349, 1943, 349, 1944, 353, 1945, 353, // NOLINT
- 1946, 357, 1947, 357, 1948, 361, 1949, 361,
- 1950, 365, 1951, 365, 1952, 369, 1953, 369, // NOLINT
- 1954, 373, 1955, 373, 1956, 377, 1957, 377,
- 1958, 381, 1959, 381, 1960, 385, 1961, 385, // NOLINT
- 1962, 389, 1963, 393, 1964, 397, 1965, 401,
- 1968, 405, 1969, 409}; // NOLINT
-static const uint16_t kEcma262UnCanonicalizeMultiStrings5Size = 104; // NOLINT
+ kEcma262UnCanonicalizeMultiStrings5[104] = {
+ {{42560, 42561}}, {{42562, 42563}}, {{42564, 42565}}, {{42566, 42567}},
+ {{42568, 42569}}, {{42570, 42571}}, {{42572, 42573}}, {{42574, 42575}},
+ {{42576, 42577}}, {{42578, 42579}}, {{42580, 42581}}, {{42582, 42583}},
+ {{42584, 42585}}, {{42586, 42587}}, {{42588, 42589}}, {{42590, 42591}},
+ {{42592, 42593}}, {{42594, 42595}}, {{42596, 42597}}, {{42598, 42599}},
+ {{42600, 42601}}, {{42602, 42603}}, {{42604, 42605}}, {{42624, 42625}},
+ {{42626, 42627}}, {{42628, 42629}}, {{42630, 42631}}, {{42632, 42633}},
+ {{42634, 42635}}, {{42636, 42637}}, {{42638, 42639}}, {{42640, 42641}},
+ {{42642, 42643}}, {{42644, 42645}}, {{42646, 42647}}, {{42648, 42649}},
+ {{42650, 42651}}, {{42786, 42787}}, {{42788, 42789}}, {{42790, 42791}},
+ {{42792, 42793}}, {{42794, 42795}}, {{42796, 42797}}, {{42798, 42799}},
+ {{42802, 42803}}, {{42804, 42805}}, {{42806, 42807}}, {{42808, 42809}},
+ {{42810, 42811}}, {{42812, 42813}}, {{42814, 42815}}, {{42816, 42817}},
+ {{42818, 42819}}, {{42820, 42821}}, {{42822, 42823}}, {{42824, 42825}},
+ {{42826, 42827}}, {{42828, 42829}}, {{42830, 42831}}, {{42832, 42833}},
+ {{42834, 42835}}, {{42836, 42837}}, {{42838, 42839}}, {{42840, 42841}},
+ {{42842, 42843}}, {{42844, 42845}}, {{42846, 42847}}, {{42848, 42849}},
+ {{42850, 42851}}, {{42852, 42853}}, {{42854, 42855}}, {{42856, 42857}},
+ {{42858, 42859}}, {{42860, 42861}}, {{42862, 42863}}, {{42873, 42874}},
+ {{42875, 42876}}, {{7545, 42877}}, {{42878, 42879}}, {{42880, 42881}},
+ {{42882, 42883}}, {{42884, 42885}}, {{42886, 42887}}, {{42891, 42892}},
+ {{613, 42893}}, {{42896, 42897}}, {{42898, 42899}}, {{42902, 42903}},
+ {{42904, 42905}}, {{42906, 42907}}, {{42908, 42909}}, {{42910, 42911}},
+ {{42912, 42913}}, {{42914, 42915}}, {{42916, 42917}}, {{42918, 42919}},
+ {{42920, 42921}}, {{614, 42922}}, {{604, 42923}}, {{609, 42924}},
+ {{620, 42925}}, {{670, 42928}}, {{647, 42929}}, {{kSentinel}}};
+static const uint16_t kEcma262UnCanonicalizeTable5Size = 198;
+static const int32_t kEcma262UnCanonicalizeTable5[396] = {
+ 1600, 1, 1601, 1, 1602, 5, 1603, 5, 1604, 9, 1605, 9, 1606, 13,
+ 1607, 13, 1608, 17, 1609, 17, 1610, 21, 1611, 21, 1612, 25, 1613, 25,
+ 1614, 29, 1615, 29, 1616, 33, 1617, 33, 1618, 37, 1619, 37, 1620, 41,
+ 1621, 41, 1622, 45, 1623, 45, 1624, 49, 1625, 49, 1626, 53, 1627, 53,
+ 1628, 57, 1629, 57, 1630, 61, 1631, 61, 1632, 65, 1633, 65, 1634, 69,
+ 1635, 69, 1636, 73, 1637, 73, 1638, 77, 1639, 77, 1640, 81, 1641, 81,
+ 1642, 85, 1643, 85, 1644, 89, 1645, 89, 1664, 93, 1665, 93, 1666, 97,
+ 1667, 97, 1668, 101, 1669, 101, 1670, 105, 1671, 105, 1672, 109, 1673, 109,
+ 1674, 113, 1675, 113, 1676, 117, 1677, 117, 1678, 121, 1679, 121, 1680, 125,
+ 1681, 125, 1682, 129, 1683, 129, 1684, 133, 1685, 133, 1686, 137, 1687, 137,
+ 1688, 141, 1689, 141, 1690, 145, 1691, 145, 1826, 149, 1827, 149, 1828, 153,
+ 1829, 153, 1830, 157, 1831, 157, 1832, 161, 1833, 161, 1834, 165, 1835, 165,
+ 1836, 169, 1837, 169, 1838, 173, 1839, 173, 1842, 177, 1843, 177, 1844, 181,
+ 1845, 181, 1846, 185, 1847, 185, 1848, 189, 1849, 189, 1850, 193, 1851, 193,
+ 1852, 197, 1853, 197, 1854, 201, 1855, 201, 1856, 205, 1857, 205, 1858, 209,
+ 1859, 209, 1860, 213, 1861, 213, 1862, 217, 1863, 217, 1864, 221, 1865, 221,
+ 1866, 225, 1867, 225, 1868, 229, 1869, 229, 1870, 233, 1871, 233, 1872, 237,
+ 1873, 237, 1874, 241, 1875, 241, 1876, 245, 1877, 245, 1878, 249, 1879, 249,
+ 1880, 253, 1881, 253, 1882, 257, 1883, 257, 1884, 261, 1885, 261, 1886, 265,
+ 1887, 265, 1888, 269, 1889, 269, 1890, 273, 1891, 273, 1892, 277, 1893, 277,
+ 1894, 281, 1895, 281, 1896, 285, 1897, 285, 1898, 289, 1899, 289, 1900, 293,
+ 1901, 293, 1902, 297, 1903, 297, 1913, 301, 1914, 301, 1915, 305, 1916, 305,
+ 1917, 309, 1918, 313, 1919, 313, 1920, 317, 1921, 317, 1922, 321, 1923, 321,
+ 1924, 325, 1925, 325, 1926, 329, 1927, 329, 1931, 333, 1932, 333, 1933, 337,
+ 1936, 341, 1937, 341, 1938, 345, 1939, 345, 1942, 349, 1943, 349, 1944, 353,
+ 1945, 353, 1946, 357, 1947, 357, 1948, 361, 1949, 361, 1950, 365, 1951, 365,
+ 1952, 369, 1953, 369, 1954, 373, 1955, 373, 1956, 377, 1957, 377, 1958, 381,
+ 1959, 381, 1960, 385, 1961, 385, 1962, 389, 1963, 393, 1964, 397, 1965, 401,
+ 1968, 405, 1969, 409};
+static const uint16_t kEcma262UnCanonicalizeMultiStrings5Size = 104;
static const MultiCharacterSpecialCase<2>
- kEcma262UnCanonicalizeMultiStrings7[3] = { // NOLINT
- {{65313, 65345}},
- {{65338, 65370}},
- {{kSentinel}}}; // NOLINT
-static const uint16_t kEcma262UnCanonicalizeTable7Size = 4; // NOLINT
-static const int32_t kEcma262UnCanonicalizeTable7[8] = {
- 1073749793, 1, 7994, 5, 1073749825, 1, 8026, 5}; // NOLINT
-static const uint16_t kEcma262UnCanonicalizeMultiStrings7Size = 3; // NOLINT
+ kEcma262UnCanonicalizeMultiStrings7[3] = {
+ {{65313, 65345}}, {{65338, 65370}}, {{kSentinel}}};
+static const uint16_t kEcma262UnCanonicalizeTable7Size = 4;
+static const int32_t kEcma262UnCanonicalizeTable7[8] = {1073749793, 1, 7994, 5,
+ 1073749825, 1, 8026, 5};
+static const uint16_t kEcma262UnCanonicalizeMultiStrings7Size = 3;
int Ecma262UnCanonicalize::Convert(uchar c, uchar n, uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
@@ -3057,46 +2485,43 @@ int Ecma262UnCanonicalize::Convert(uchar c, uchar n, uchar* result,
}
static const MultiCharacterSpecialCase<1>
- kCanonicalizationRangeMultiStrings0[1] = { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kCanonicalizationRangeTable0Size = 70; // NOLINT
+ kCanonicalizationRangeMultiStrings0[1] = {{{kSentinel}}};
+static const uint16_t kCanonicalizationRangeTable0Size = 70;
static const int32_t kCanonicalizationRangeTable0[140] = {
1073741889, 100, 90, 0, 1073741921, 100, 122, 0,
- 1073742016, 88, 214, 0, 1073742040, 24, 222, 0, // NOLINT
+ 1073742016, 88, 214, 0, 1073742040, 24, 222, 0,
1073742048, 88, 246, 0, 1073742072, 24, 254, 0,
- 1073742715, 8, 893, 0, 1073742728, 8, 906, 0, // NOLINT
+ 1073742715, 8, 893, 0, 1073742728, 8, 906, 0,
1073742749, 8, 927, 0, 1073742759, 16, 939, 0,
- 1073742765, 8, 943, 0, 1073742781, 8, 959, 0, // NOLINT
+ 1073742765, 8, 943, 0, 1073742781, 8, 959, 0,
1073742791, 16, 971, 0, 1073742845, 8, 1023, 0,
- 1073742848, 60, 1039, 0, 1073742864, 124, 1071, 0, // NOLINT
+ 1073742848, 60, 1039, 0, 1073742864, 124, 1071, 0,
1073742896, 124, 1103, 0, 1073742928, 60, 1119, 0,
- 1073743153, 148, 1366, 0, 1073743201, 148, 1414, 0, // NOLINT
+ 1073743153, 148, 1366, 0, 1073743201, 148, 1414, 0,
1073746080, 148, 4293, 0, 1073749760, 28, 7943, 0,
- 1073749768, 28, 7951, 0, 1073749776, 20, 7957, 0, // NOLINT
+ 1073749768, 28, 7951, 0, 1073749776, 20, 7957, 0,
1073749784, 20, 7965, 0, 1073749792, 28, 7975, 0,
- 1073749800, 28, 7983, 0, 1073749808, 28, 7991, 0, // NOLINT
+ 1073749800, 28, 7983, 0, 1073749808, 28, 7991, 0,
1073749816, 28, 7999, 0, 1073749824, 20, 8005, 0,
- 1073749832, 20, 8013, 0, 1073749856, 28, 8039, 0, // NOLINT
+ 1073749832, 20, 8013, 0, 1073749856, 28, 8039, 0,
1073749864, 28, 8047, 0, 1073749874, 12, 8053, 0,
- 1073749960, 12, 8139, 0}; // NOLINT
-static const uint16_t kCanonicalizationRangeMultiStrings0Size = 1; // NOLINT
+ 1073749960, 12, 8139, 0};
+static const uint16_t kCanonicalizationRangeMultiStrings0Size = 1;
static const MultiCharacterSpecialCase<1>
- kCanonicalizationRangeMultiStrings1[1] = { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kCanonicalizationRangeTable1Size = 14; // NOLINT
+ kCanonicalizationRangeMultiStrings1[1] = {{{kSentinel}}};
+static const uint16_t kCanonicalizationRangeTable1Size = 14;
static const int32_t kCanonicalizationRangeTable1[28] = {
1073742176, 60, 367, 0, 1073742192, 60, 383, 0,
- 1073743030, 100, 1231, 0, 1073743056, 100, 1257, 0, // NOLINT
+ 1073743030, 100, 1231, 0, 1073743056, 100, 1257, 0,
1073744896, 184, 3118, 0, 1073744944, 184, 3166, 0,
- 1073745152, 148, 3365, 0}; // NOLINT
-static const uint16_t kCanonicalizationRangeMultiStrings1Size = 1; // NOLINT
+ 1073745152, 148, 3365, 0};
+static const uint16_t kCanonicalizationRangeMultiStrings1Size = 1;
static const MultiCharacterSpecialCase<1>
- kCanonicalizationRangeMultiStrings7[1] = { // NOLINT
- {{kSentinel}}}; // NOLINT
-static const uint16_t kCanonicalizationRangeTable7Size = 4; // NOLINT
+ kCanonicalizationRangeMultiStrings7[1] = {{{kSentinel}}};
+static const uint16_t kCanonicalizationRangeTable7Size = 4;
static const int32_t kCanonicalizationRangeTable7[8] = {
- 1073749793, 100, 7994, 0, 1073749825, 100, 8026, 0}; // NOLINT
-static const uint16_t kCanonicalizationRangeMultiStrings7Size = 1; // NOLINT
+ 1073749793, 100, 7994, 0, 1073749825, 100, 8026, 0};
+static const uint16_t kCanonicalizationRangeMultiStrings7Size = 1;
int CanonicalizationRange::Convert(uchar c, uchar n, uchar* result,
bool* allow_caching_ptr) {
int chunk_index = c >> 13;
@@ -3121,71 +2546,63 @@ int CanonicalizationRange::Convert(uchar c, uchar n, uchar* result,
const uchar UnicodeData::kMaxCodePoint = 0xFFFD;
int UnicodeData::GetByteCount() {
- return kUppercaseTable0Size * sizeof(int32_t) // NOLINT
- + kUppercaseTable1Size * sizeof(int32_t) // NOLINT
- + kUppercaseTable5Size * sizeof(int32_t) // NOLINT
- + kUppercaseTable7Size * sizeof(int32_t) // NOLINT
- + kLetterTable0Size * sizeof(int32_t) // NOLINT
- + kLetterTable1Size * sizeof(int32_t) // NOLINT
- + kLetterTable2Size * sizeof(int32_t) // NOLINT
- + kLetterTable3Size * sizeof(int32_t) // NOLINT
- + kLetterTable4Size * sizeof(int32_t) // NOLINT
- + kLetterTable5Size * sizeof(int32_t) // NOLINT
- + kLetterTable6Size * sizeof(int32_t) // NOLINT
- + kLetterTable7Size * sizeof(int32_t) // NOLINT
- + kID_StartTable0Size * sizeof(int32_t) // NOLINT
- + kID_StartTable1Size * sizeof(int32_t) // NOLINT
- + kID_StartTable2Size * sizeof(int32_t) // NOLINT
- + kID_StartTable3Size * sizeof(int32_t) // NOLINT
- + kID_StartTable4Size * sizeof(int32_t) // NOLINT
- + kID_StartTable5Size * sizeof(int32_t) // NOLINT
- + kID_StartTable6Size * sizeof(int32_t) // NOLINT
- + kID_StartTable7Size * sizeof(int32_t) // NOLINT
- + kID_ContinueTable0Size * sizeof(int32_t) // NOLINT
- + kID_ContinueTable1Size * sizeof(int32_t) // NOLINT
- + kID_ContinueTable5Size * sizeof(int32_t) // NOLINT
- + kID_ContinueTable7Size * sizeof(int32_t) // NOLINT
- + kWhiteSpaceTable0Size * sizeof(int32_t) // NOLINT
- + kWhiteSpaceTable1Size * sizeof(int32_t) // NOLINT
- + kWhiteSpaceTable7Size * sizeof(int32_t) // NOLINT
- + kToLowercaseMultiStrings0Size *
- sizeof(MultiCharacterSpecialCase<2>) // NOLINT
- + kToLowercaseMultiStrings1Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kToLowercaseMultiStrings5Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kToLowercaseMultiStrings7Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kToUppercaseMultiStrings0Size *
- sizeof(MultiCharacterSpecialCase<3>) // NOLINT
- + kToUppercaseMultiStrings1Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kToUppercaseMultiStrings5Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kToUppercaseMultiStrings7Size *
- sizeof(MultiCharacterSpecialCase<3>) // NOLINT
- + kEcma262CanonicalizeMultiStrings0Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kEcma262CanonicalizeMultiStrings1Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kEcma262CanonicalizeMultiStrings5Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kEcma262CanonicalizeMultiStrings7Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kEcma262UnCanonicalizeMultiStrings0Size *
- sizeof(MultiCharacterSpecialCase<4>) // NOLINT
- + kEcma262UnCanonicalizeMultiStrings1Size *
- sizeof(MultiCharacterSpecialCase<2>) // NOLINT
- + kEcma262UnCanonicalizeMultiStrings5Size *
- sizeof(MultiCharacterSpecialCase<2>) // NOLINT
- + kEcma262UnCanonicalizeMultiStrings7Size *
- sizeof(MultiCharacterSpecialCase<2>) // NOLINT
- + kCanonicalizationRangeMultiStrings0Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kCanonicalizationRangeMultiStrings1Size *
- sizeof(MultiCharacterSpecialCase<1>) // NOLINT
- + kCanonicalizationRangeMultiStrings7Size *
- sizeof(MultiCharacterSpecialCase<1>); // NOLINT
+ return kUppercaseTable0Size * sizeof(int32_t) +
+ kUppercaseTable1Size * sizeof(int32_t) +
+ kUppercaseTable5Size * sizeof(int32_t) +
+ kUppercaseTable7Size * sizeof(int32_t) +
+ kLetterTable0Size * sizeof(int32_t) +
+ kLetterTable1Size * sizeof(int32_t) +
+ kLetterTable2Size * sizeof(int32_t) +
+ kLetterTable3Size * sizeof(int32_t) +
+ kLetterTable4Size * sizeof(int32_t) +
+ kLetterTable5Size * sizeof(int32_t) +
+ kLetterTable6Size * sizeof(int32_t) +
+ kLetterTable7Size * sizeof(int32_t) +
+ kID_StartTable0Size * sizeof(int32_t) +
+ kID_StartTable1Size * sizeof(int32_t) +
+ kID_StartTable2Size * sizeof(int32_t) +
+ kID_StartTable3Size * sizeof(int32_t) +
+ kID_StartTable4Size * sizeof(int32_t) +
+ kID_StartTable5Size * sizeof(int32_t) +
+ kID_StartTable6Size * sizeof(int32_t) +
+ kID_StartTable7Size * sizeof(int32_t) +
+ kID_ContinueTable0Size * sizeof(int32_t) +
+ kID_ContinueTable1Size * sizeof(int32_t) +
+ kID_ContinueTable5Size * sizeof(int32_t) +
+ kID_ContinueTable7Size * sizeof(int32_t) +
+ kWhiteSpaceTable0Size * sizeof(int32_t) +
+ kWhiteSpaceTable1Size * sizeof(int32_t) +
+ kWhiteSpaceTable7Size * sizeof(int32_t) +
+ kToLowercaseMultiStrings0Size * sizeof(MultiCharacterSpecialCase<2>) +
+ kToLowercaseMultiStrings1Size * sizeof(MultiCharacterSpecialCase<1>) +
+ kToLowercaseMultiStrings5Size * sizeof(MultiCharacterSpecialCase<1>) +
+ kToLowercaseMultiStrings7Size * sizeof(MultiCharacterSpecialCase<1>) +
+ kToUppercaseMultiStrings0Size * sizeof(MultiCharacterSpecialCase<3>) +
+ kToUppercaseMultiStrings1Size * sizeof(MultiCharacterSpecialCase<1>) +
+ kToUppercaseMultiStrings5Size * sizeof(MultiCharacterSpecialCase<1>) +
+ kToUppercaseMultiStrings7Size * sizeof(MultiCharacterSpecialCase<3>) +
+ kEcma262CanonicalizeMultiStrings0Size *
+ sizeof(MultiCharacterSpecialCase<1>) +
+ kEcma262CanonicalizeMultiStrings1Size *
+ sizeof(MultiCharacterSpecialCase<1>) +
+ kEcma262CanonicalizeMultiStrings5Size *
+ sizeof(MultiCharacterSpecialCase<1>) +
+ kEcma262CanonicalizeMultiStrings7Size *
+ sizeof(MultiCharacterSpecialCase<1>) +
+ kEcma262UnCanonicalizeMultiStrings0Size *
+ sizeof(MultiCharacterSpecialCase<4>) +
+ kEcma262UnCanonicalizeMultiStrings1Size *
+ sizeof(MultiCharacterSpecialCase<2>) +
+ kEcma262UnCanonicalizeMultiStrings5Size *
+ sizeof(MultiCharacterSpecialCase<2>) +
+ kEcma262UnCanonicalizeMultiStrings7Size *
+ sizeof(MultiCharacterSpecialCase<2>) +
+ kCanonicalizationRangeMultiStrings0Size *
+ sizeof(MultiCharacterSpecialCase<1>) +
+ kCanonicalizationRangeMultiStrings1Size *
+ sizeof(MultiCharacterSpecialCase<1>) +
+ kCanonicalizationRangeMultiStrings7Size *
+ sizeof(MultiCharacterSpecialCase<1>);
}
#endif // !V8_INTL_SUPPORT
diff --git a/deps/v8/src/third_party/vtune/BUILD.gn b/deps/v8/src/third_party/vtune/BUILD.gn
index f699ab147e..e8582dbb79 100644
--- a/deps/v8/src/third_party/vtune/BUILD.gn
+++ b/deps/v8/src/third_party/vtune/BUILD.gn
@@ -22,9 +22,7 @@ static_library("v8_vtune") {
"vtune-jit.h",
]
configs += [ ":vtune_ittapi" ]
- deps = [
- "../../..:v8",
- ]
+ deps = [ "../../..:v8" ]
}
static_library("v8_vtune_trace_mark") {
@@ -33,16 +31,13 @@ static_library("v8_vtune_trace_mark") {
"vtuneapi.cc",
"vtuneapi.h",
]
- deps = [
- ":ittnotify",
- ]
+ deps = [ ":ittnotify" ]
}
static_library("ittnotify") {
sources = [
"//third_party/ittapi/include/ittnotify.h",
"//third_party/ittapi/include/legacy/ittnotify.h",
- "//third_party/ittapi/src/ittnotify/disable-warnings.h",
"//third_party/ittapi/src/ittnotify/ittnotify_config.h",
"//third_party/ittapi/src/ittnotify/ittnotify_static.c",
"//third_party/ittapi/src/ittnotify/ittnotify_static.h",
diff --git a/deps/v8/src/torque/class-debug-reader-generator.cc b/deps/v8/src/torque/class-debug-reader-generator.cc
index 19ac671bd7..5f45ea3ade 100644
--- a/deps/v8/src/torque/class-debug-reader-generator.cc
+++ b/deps/v8/src/torque/class-debug-reader-generator.cc
@@ -285,6 +285,11 @@ void GenerateFieldValueAccessor(const Field& field,
cc_contents << " d::MemoryAccessResult validity = accessor("
<< address_getter << "()" << index_offset
<< ", reinterpret_cast<uint8_t*>(&value), sizeof(value));\n";
+#ifdef V8_MAP_PACKING
+ if (field_getter == "GetMapValue") {
+ cc_contents << " value = i::MapWord::Unpack(value);\n";
+ }
+#endif
cc_contents << " return {validity, "
<< (debug_field_type.IsTagged()
? "EnsureDecompressed(value, address_)"
diff --git a/deps/v8/src/torque/constants.h b/deps/v8/src/torque/constants.h
index 2a4e6fcb5b..bb0ae2b69e 100644
--- a/deps/v8/src/torque/constants.h
+++ b/deps/v8/src/torque/constants.h
@@ -107,15 +107,15 @@ static const char* const ANNOTATION_EXPORT = "@export";
static const char* const ANNOTATION_DO_NOT_GENERATE_CAST = "@doNotGenerateCast";
static const char* const ANNOTATION_USE_PARENT_TYPE_CHECKER =
"@useParentTypeChecker";
-// Generate C++ accessors with relaxed write semantics.
-// Weak<T> and MaybeObject fields always use relaxed write.
-static const char* const ANNOTATION_RELAXED_WRITE = "@relaxedWrite";
-// Generate C++ accessors with relaxed read semantics.
-static const char* const ANNOTATION_RELAXED_READ = "@relaxedRead";
-// Generate C++ accessors with release write semantics.
-static const char* const ANNOTATION_RELEASE_WRITE = "@releaseWrite";
-// Generate C++ accessors with acquire read semantics.
-static const char* const ANNOTATION_ACQUIRE_READ = "@acquireRead";
+// Generate C++ accessors with relaxed store semantics.
+// Weak<T> and MaybeObject fields always use relaxed store.
+static const char* const ANNOTATION_CPP_RELAXED_STORE = "@cppRelaxedStore";
+// Generate C++ accessors with relaxed load semantics.
+static const char* const ANNOTATION_CPP_RELAXED_LOAD = "@cppRelaxedLoad";
+// Generate C++ accessors with release store semantics.
+static const char* const ANNOTATION_CPP_RELEASE_STORE = "@cppReleaseStore";
+// Generate C++ accessors with acquire load semantics.
+static const char* const ANNOTATION_CPP_ACQUIRE_LOAD = "@cppAcquireLoad";
inline bool IsConstexprName(const std::string& name) {
return name.substr(0, std::strlen(CONSTEXPR_TYPE_PREFIX)) ==
diff --git a/deps/v8/src/torque/global-context.h b/deps/v8/src/torque/global-context.h
index 403502b67b..754d16e4a0 100644
--- a/deps/v8/src/torque/global-context.h
+++ b/deps/v8/src/torque/global-context.h
@@ -79,6 +79,8 @@ class GlobalContext : public ContextualClass<GlobalContext> {
std::stringstream class_definition_inline_headerfile;
std::stringstream class_definition_ccfile;
+
+ std::set<SourceId> required_builtin_includes;
};
static PerFileStreams& GeneratedPerFile(SourceId file) {
PerFileStreams& result = Get().generated_per_file_[file];
diff --git a/deps/v8/src/torque/implementation-visitor.cc b/deps/v8/src/torque/implementation-visitor.cc
index a2cf0fee86..b35a45d7b6 100644
--- a/deps/v8/src/torque/implementation-visitor.cc
+++ b/deps/v8/src/torque/implementation-visitor.cc
@@ -11,12 +11,14 @@
#include "src/base/optional.h"
#include "src/common/globals.h"
#include "src/torque/cc-generator.h"
+#include "src/torque/cfg.h"
#include "src/torque/constants.h"
#include "src/torque/csa-generator.h"
#include "src/torque/declaration-visitor.h"
#include "src/torque/global-context.h"
#include "src/torque/parameter-difference.h"
#include "src/torque/server-data.h"
+#include "src/torque/source-positions.h"
#include "src/torque/type-inference.h"
#include "src/torque/type-visitor.h"
#include "src/torque/types.h"
@@ -26,6 +28,10 @@ namespace v8 {
namespace internal {
namespace torque {
+namespace {
+const char* BuiltinIncludesMarker = "// __BUILTIN_INCLUDES_MARKER__\n";
+} // namespace
+
VisitResult ImplementationVisitor::Visit(Expression* expr) {
CurrentSourcePosition::Scope scope(expr->pos);
switch (expr->kind) {
@@ -76,11 +82,17 @@ void ImplementationVisitor::BeginGeneratedFiles() {
out << "#include " << StringLiteralQuote(include_path) << "\n";
}
- for (SourceId file : SourceFileMap::AllSources()) {
- out << "#include \"torque-generated/" +
- SourceFileMap::PathFromV8RootWithoutExtension(file) +
- "-tq-csa.h\"\n";
- }
+ out << "// Required Builtins:\n";
+ out << "#include \"torque-generated/" +
+ SourceFileMap::PathFromV8RootWithoutExtension(file) +
+ "-tq-csa.h\"\n";
+ // Now that required include files are collected while generting the file,
+ // we only know the full set at the end. Insert a marker here that is
+ // replaced with the list of includes at the very end.
+ // TODO(nicohartmann@): This is not the most beautiful way to do this,
+ // replace once the cpp file builder is available, where this can be
+ // handled easily.
+ out << BuiltinIncludesMarker;
out << "\n";
out << "namespace v8 {\n"
@@ -658,8 +670,8 @@ void ImplementationVisitor::Visit(Builtin* builtin) {
} else {
DCHECK(builtin->IsStub());
- bool has_context_parameter = signature.HasContextParameter();
for (size_t i = 0; i < signature.parameter_names.size(); ++i) {
+ const std::string& parameter_name = signature.parameter_names[i]->value;
const Type* type = signature.types()[i];
const bool mark_as_used = signature.implicit_count > i;
std::string var = AddParameter(i, builtin, &parameters, &parameter_types,
@@ -667,14 +679,8 @@ void ImplementationVisitor::Visit(Builtin* builtin) {
csa_ccfile() << " " << type->GetGeneratedTypeName() << " " << var
<< " = "
<< "UncheckedParameter<" << type->GetGeneratedTNodeTypeName()
- << ">(";
- if (i == 0 && has_context_parameter) {
- csa_ccfile() << "Descriptor::kContext";
- } else {
- csa_ccfile() << "Descriptor::ParameterIndex<"
- << (has_context_parameter ? i - 1 : i) << ">()";
- }
- csa_ccfile() << ");\n";
+ << ">(Descriptor::k" << CamelifyString(parameter_name)
+ << ");\n";
csa_ccfile() << " USE(" << var << ");\n";
}
}
@@ -1743,7 +1749,23 @@ void ImplementationVisitor::GenerateImplementation(const std::string& dir) {
GlobalContext::PerFileStreams& streams =
GlobalContext::GeneratedPerFile(file);
- WriteFile(base_filename + "-tq-csa.cc", streams.csa_ccfile.str());
+ std::string csa_cc = streams.csa_ccfile.str();
+ // Insert missing builtin includes where the marker is.
+ {
+ auto pos = csa_cc.find(BuiltinIncludesMarker);
+ CHECK_NE(pos, std::string::npos);
+ std::string includes;
+ for (const SourceId& include : streams.required_builtin_includes) {
+ std::string include_file =
+ SourceFileMap::PathFromV8RootWithoutExtension(include);
+ includes += "#include \"torque-generated/";
+ includes += include_file;
+ includes += "-tq-csa.h\"\n";
+ }
+ csa_cc.replace(pos, strlen(BuiltinIncludesMarker), std::move(includes));
+ }
+
+ WriteFile(base_filename + "-tq-csa.cc", std::move(csa_cc));
WriteFile(base_filename + "-tq-csa.h", streams.csa_headerfile.str());
WriteFile(base_filename + "-tq.inc",
streams.class_definition_headerfile.str());
@@ -2368,6 +2390,10 @@ LocationReference ImplementationVisitor::GetLocationReference(
}
}
Value* value = Declarations::LookupValue(name);
+ CHECK(value->Position().source.IsValid());
+ if (auto stream = CurrentFileStreams::Get()) {
+ stream->required_builtin_includes.insert(value->Position().source);
+ }
if (GlobalContext::collect_language_server_data()) {
LanguageServerData::AddDefinition(expr->name->pos, value->name()->pos);
}
@@ -2623,6 +2649,11 @@ VisitResult ImplementationVisitor::GenerateCall(
Callable* callable, base::Optional<LocationReference> this_reference,
Arguments arguments, const TypeVector& specialization_types,
bool is_tailcall) {
+ CHECK(callable->Position().source.IsValid());
+ if (auto stream = CurrentFileStreams::Get()) {
+ stream->required_builtin_includes.insert(callable->Position().source);
+ }
+
const Type* return_type = callable->signature().return_type;
if (is_tailcall) {
@@ -3128,8 +3159,7 @@ VisitResult ImplementationVisitor::Visit(CallMethodExpression* expr) {
TypeVector argument_types = arguments.parameters.ComputeTypeVector();
DCHECK_EQ(expr->method->namespace_qualification.size(), 0);
QualifiedName qualified_name = QualifiedName(method_name);
- Callable* callable = nullptr;
- callable = LookupMethod(method_name, target_type, arguments, {});
+ Callable* callable = LookupMethod(method_name, target_type, arguments, {});
if (GlobalContext::collect_language_server_data()) {
LanguageServerData::AddDefinition(expr->method->name->pos,
callable->IdentifierPosition());
@@ -3437,40 +3467,40 @@ void ImplementationVisitor::GenerateBuiltinDefinitionsAndInterfaceDescriptors(
std::string descriptor_name = builtin->ExternalName() + "Descriptor";
bool has_context_parameter = builtin->signature().HasContextParameter();
size_t kFirstNonContextParameter = has_context_parameter ? 1 : 0;
- size_t parameter_count =
- builtin->parameter_names().size() - kFirstNonContextParameter;
TypeVector return_types = LowerType(builtin->signature().return_type);
- interface_descriptors
- << "class " << descriptor_name
- << " : public TorqueInterfaceDescriptor<" << return_types.size()
- << ", " << parameter_count << ", "
- << (has_context_parameter ? "true" : "false") << "> {\n";
- interface_descriptors << " DECLARE_DESCRIPTOR_WITH_BASE("
- << descriptor_name
- << ", TorqueInterfaceDescriptor)\n";
-
- interface_descriptors
- << " std::vector<MachineType> ReturnType() override {\n";
- interface_descriptors << " return {{";
+ interface_descriptors << "class " << descriptor_name
+ << " : public StaticCallInterfaceDescriptor<"
+ << descriptor_name << "> {\n";
+
+ interface_descriptors << " public:\n";
+
+ if (has_context_parameter) {
+ interface_descriptors << " DEFINE_RESULT_AND_PARAMETERS(";
+ } else {
+ interface_descriptors << " DEFINE_RESULT_AND_PARAMETERS_NO_CONTEXT(";
+ }
+ interface_descriptors << return_types.size();
+ for (size_t i = kFirstNonContextParameter;
+ i < builtin->parameter_names().size(); ++i) {
+ Identifier* parameter = builtin->parameter_names()[i];
+ interface_descriptors << ", k" << CamelifyString(parameter->value);
+ }
+ interface_descriptors << ")\n";
+
+ interface_descriptors << " DEFINE_RESULT_AND_PARAMETER_TYPES(";
PrintCommaSeparatedList(interface_descriptors, return_types,
MachineTypeString);
- interface_descriptors << "}};\n";
- interface_descriptors << " }\n";
-
- interface_descriptors << " std::array<MachineType, " << parameter_count
- << "> ParameterTypes() override {\n";
- interface_descriptors << " return {";
for (size_t i = kFirstNonContextParameter;
i < builtin->parameter_names().size(); ++i) {
- bool last = i + 1 == builtin->parameter_names().size();
const Type* type = builtin->signature().parameter_types.types[i];
- interface_descriptors << MachineTypeString(type)
- << (last ? "" : ", ");
+ interface_descriptors << ", " << MachineTypeString(type);
}
- interface_descriptors << "};\n";
+ interface_descriptors << ")\n";
+
+ interface_descriptors << " DECLARE_DEFAULT_DESCRIPTOR("
+ << descriptor_name << ")\n";
- interface_descriptors << " }\n";
interface_descriptors << "};\n\n";
} else {
builtin_definitions << "TFJ(" << builtin->ExternalName();
@@ -4221,15 +4251,47 @@ void CppClassGenerator::GenerateFieldAccessors(
}
hdr_ << " inline " << type_name << " " << name << "("
- << (indexed ? "int i" : "") << ") const;\n";
+ << (indexed ? "int i" : "");
+ switch (class_field.read_synchronization) {
+ case FieldSynchronization::kNone:
+ break;
+ case FieldSynchronization::kRelaxed:
+ hdr_ << (indexed ? ", RelaxedLoadTag" : "RelaxedLoadTag");
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ hdr_ << (indexed ? ", AcquireLoadTag" : "AcquireLoadTag");
+ break;
+ }
+ hdr_ << ") const;\n";
if (can_contain_heap_objects) {
hdr_ << " inline " << type_name << " " << name
- << "(PtrComprCageBase cage_base" << (indexed ? ", int i" : "")
- << ") const;\n";
+ << "(PtrComprCageBase cage_base" << (indexed ? ", int i" : "");
+ switch (class_field.read_synchronization) {
+ case FieldSynchronization::kNone:
+ break;
+ case FieldSynchronization::kRelaxed:
+ hdr_ << ", RelaxedLoadTag";
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ hdr_ << ", AcquireLoadTag";
+ break;
+ }
+
+ hdr_ << ") const;\n";
}
hdr_ << " inline void set_" << name << "(" << (indexed ? "int i, " : "")
- << type_name << " value"
- << (can_contain_heap_objects
+ << type_name << " value";
+ switch (class_field.write_synchronization) {
+ case FieldSynchronization::kNone:
+ break;
+ case FieldSynchronization::kRelaxed:
+ hdr_ << ", RelaxedStoreTag";
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ hdr_ << ", ReleaseStoreTag";
+ break;
+ }
+ hdr_ << (can_contain_heap_objects
? ", WriteBarrierMode mode = UPDATE_WRITE_BARRIER"
: "")
<< ");\n\n";
@@ -4239,10 +4301,32 @@ void CppClassGenerator::GenerateFieldAccessors(
if (can_contain_heap_objects) {
inl_ << "template <class D, class P>\n";
inl_ << type_name << " " << gen_name_ << "<D, P>::" << name << "("
- << (indexed ? "int i" : "") << ") const {\n";
+ << (indexed ? "int i" : "");
+ switch (class_field.read_synchronization) {
+ case FieldSynchronization::kNone:
+ break;
+ case FieldSynchronization::kRelaxed:
+ inl_ << (indexed ? ", RelaxedLoadTag" : "RelaxedLoadTag");
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ inl_ << (indexed ? ", AcquireLoadTag" : "AcquireLoadTag");
+ break;
+ }
+ inl_ << ") const {\n";
inl_ << " PtrComprCageBase cage_base = GetPtrComprCageBase(*this);\n";
inl_ << " return " << gen_name_ << "::" << name << "(cage_base"
- << (indexed ? ", i" : "") << ");\n";
+ << (indexed ? ", i" : "");
+ switch (class_field.read_synchronization) {
+ case FieldSynchronization::kNone:
+ break;
+ case FieldSynchronization::kRelaxed:
+ inl_ << ", kRelaxedLoad";
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ inl_ << ", kAcquireLoad";
+ break;
+ }
+ inl_ << ");\n";
inl_ << "}\n";
}
@@ -4252,6 +4336,18 @@ void CppClassGenerator::GenerateFieldAccessors(
if (can_contain_heap_objects) inl_ << "PtrComprCageBase cage_base";
if (can_contain_heap_objects && indexed) inl_ << ", ";
if (indexed) inl_ << "int i";
+ switch (class_field.read_synchronization) {
+ case FieldSynchronization::kNone:
+ break;
+ case FieldSynchronization::kRelaxed:
+ inl_ << ((can_contain_heap_objects || indexed) ? ", RelaxedLoadTag"
+ : "RelaxedLoadTag");
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ inl_ << ((can_contain_heap_objects || indexed) ? ", AcquireLoadTag"
+ : "AcquireLoadTag");
+ break;
+ }
inl_ << ") const {\n";
inl_ << " " << type_name << " value;\n";
@@ -4266,6 +4362,16 @@ void CppClassGenerator::GenerateFieldAccessors(
inl_ << "int i, ";
}
inl_ << type_name << " value";
+ switch (class_field.write_synchronization) {
+ case FieldSynchronization::kNone:
+ break;
+ case FieldSynchronization::kRelaxed:
+ inl_ << ", RelaxedStoreTag";
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ inl_ << ", ReleaseStoreTag";
+ break;
+ }
if (can_contain_heap_objects) {
inl_ << ", WriteBarrierMode mode";
}
@@ -4339,10 +4445,10 @@ void CppClassGenerator::EmitLoadFieldStatement(
if (!field_type->IsSubtypeOf(TypeOracle::GetTaggedType())) {
if (class_field.read_synchronization ==
FieldSynchronization::kAcquireRelease) {
- ReportError("Torque doesn't support @acquireRead on untagged data");
+ ReportError("Torque doesn't support @cppAcquireRead on untagged data");
} else if (class_field.read_synchronization ==
FieldSynchronization::kRelaxed) {
- ReportError("Torque doesn't support @relaxedRead on untagged data");
+ ReportError("Torque doesn't support @cppRelaxedRead on untagged data");
}
inl_ << "this->template ReadField<" << type_name << ">(" << offset
<< ");\n";
@@ -4636,11 +4742,33 @@ void GeneratePrintDefinitionsForClass(std::ostream& impl, const ClassType* type,
// TODO(turbofan): Print struct fields too.
impl << "\" <struct field printing still unimplemented>\";\n";
} else {
- impl << "this->" << f.name_and_type.name << "();\n";
+ impl << "this->" << f.name_and_type.name;
+ switch (f.read_synchronization) {
+ case FieldSynchronization::kNone:
+ impl << "();\n";
+ break;
+ case FieldSynchronization::kRelaxed:
+ impl << "(kRelaxedLoad);\n";
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ impl << "(kAcquireLoad);\n";
+ break;
+ }
}
} else {
impl << " os << \"\\n - " << f.name_and_type.name << ": \" << "
- << "Brief(this->" << f.name_and_type.name << "());\n";
+ << "Brief(this->" << f.name_and_type.name;
+ switch (f.read_synchronization) {
+ case FieldSynchronization::kNone:
+ impl << "());\n";
+ break;
+ case FieldSynchronization::kRelaxed:
+ impl << "(kRelaxedLoad));\n";
+ break;
+ case FieldSynchronization::kAcquireRelease:
+ impl << "(kAcquireLoad));\n";
+ break;
+ }
}
}
}
@@ -4864,7 +4992,7 @@ namespace {
void GenerateFieldValueVerifier(const std::string& class_name, bool indexed,
std::string offset, const Field& leaf_field,
std::string indexed_field_size,
- std::ostream& cc_contents) {
+ std::ostream& cc_contents, bool is_map) {
const Type* field_type = leaf_field.name_and_type.type;
bool maybe_object =
@@ -4879,8 +5007,12 @@ void GenerateFieldValueVerifier(const std::string& class_name, bool indexed,
const std::string value = leaf_field.name_and_type.name + "__value";
// Read the field.
- cc_contents << " " << object_type << " " << value << " = TaggedField<"
- << object_type << ">::load(o, " << offset << ");\n";
+ if (is_map) {
+ cc_contents << " " << object_type << " " << value << " = o.map();\n";
+ } else {
+ cc_contents << " " << object_type << " " << value << " = TaggedField<"
+ << object_type << ">::load(o, " << offset << ");\n";
+ }
// Call VerifyPointer or VerifyMaybeObjectPointer on it.
cc_contents << " " << object_type << "::" << verify_fn << "(isolate, "
@@ -4947,13 +5079,13 @@ void GenerateClassFieldVerifier(const std::string& class_name,
class_name, f.index.has_value(),
field_start_offset + " + " + std::to_string(*struct_field.offset),
struct_field, std::to_string((*struct_type)->PackedSize()),
- cc_contents);
+ cc_contents, f.name_and_type.name == "map");
}
}
} else {
GenerateFieldValueVerifier(class_name, f.index.has_value(),
field_start_offset, f, "kTaggedSize",
- cc_contents);
+ cc_contents, f.name_and_type.name == "map");
}
cc_contents << " }\n";
diff --git a/deps/v8/src/torque/torque-parser.cc b/deps/v8/src/torque/torque-parser.cc
index cab0182677..c74ef02497 100644
--- a/deps/v8/src/torque/torque-parser.cc
+++ b/deps/v8/src/torque/torque-parser.cc
@@ -1954,22 +1954,23 @@ base::Optional<ParseResult> MakeAnnotation(ParseResultIterator* child_results) {
}
base::Optional<ParseResult> MakeClassField(ParseResultIterator* child_results) {
- AnnotationSet annotations(child_results,
- {ANNOTATION_NO_VERIFIER, ANNOTATION_RELAXED_WRITE,
- ANNOTATION_RELAXED_READ, ANNOTATION_RELEASE_WRITE,
- ANNOTATION_ACQUIRE_READ},
- {ANNOTATION_IF, ANNOTATION_IFNOT});
+ AnnotationSet annotations(
+ child_results,
+ {ANNOTATION_NO_VERIFIER, ANNOTATION_CPP_RELAXED_STORE,
+ ANNOTATION_CPP_RELAXED_LOAD, ANNOTATION_CPP_RELEASE_STORE,
+ ANNOTATION_CPP_ACQUIRE_LOAD},
+ {ANNOTATION_IF, ANNOTATION_IFNOT});
bool generate_verify = !annotations.Contains(ANNOTATION_NO_VERIFIER);
FieldSynchronization write_synchronization = FieldSynchronization::kNone;
- if (annotations.Contains(ANNOTATION_RELEASE_WRITE)) {
+ if (annotations.Contains(ANNOTATION_CPP_RELEASE_STORE)) {
write_synchronization = FieldSynchronization::kAcquireRelease;
- } else if (annotations.Contains(ANNOTATION_RELAXED_WRITE)) {
+ } else if (annotations.Contains(ANNOTATION_CPP_RELAXED_STORE)) {
write_synchronization = FieldSynchronization::kRelaxed;
}
FieldSynchronization read_synchronization = FieldSynchronization::kNone;
- if (annotations.Contains(ANNOTATION_ACQUIRE_READ)) {
+ if (annotations.Contains(ANNOTATION_CPP_ACQUIRE_LOAD)) {
read_synchronization = FieldSynchronization::kAcquireRelease;
- } else if (annotations.Contains(ANNOTATION_RELAXED_READ)) {
+ } else if (annotations.Contains(ANNOTATION_CPP_RELAXED_LOAD)) {
read_synchronization = FieldSynchronization::kRelaxed;
}
std::vector<ConditionalAnnotation> conditions;
diff --git a/deps/v8/src/torque/torque.cc b/deps/v8/src/torque/torque.cc
index 4e71c43014..ca16ce4ca6 100644
--- a/deps/v8/src/torque/torque.cc
+++ b/deps/v8/src/torque/torque.cc
@@ -33,7 +33,12 @@ int WrappedMain(int argc, const char** argv) {
} else if (argument == "-v8-root") {
options.v8_root = std::string(argv[++i]);
} else if (argument == "-m32") {
+#ifdef V8_COMPRESS_POINTERS
+ std::cerr << "Pointer compression is incompatible with -m32.\n";
+ base::OS::Abort();
+#else
options.force_32bit_output = true;
+#endif
} else if (argument == "-annotate-ir") {
options.annotate_ir = true;
} else {
diff --git a/deps/v8/src/tracing/trace-event.cc b/deps/v8/src/tracing/trace-event.cc
index 8e69fe5520..7f1f96adc7 100644
--- a/deps/v8/src/tracing/trace-event.cc
+++ b/deps/v8/src/tracing/trace-event.cc
@@ -20,6 +20,8 @@ v8::TracingController* TraceEventHelper::GetTracingController() {
return v8::internal::V8::GetCurrentPlatform()->GetTracingController();
}
+#ifdef V8_RUNTIME_CALL_STATS
+
void CallStatsScopedTracer::AddEndTraceEvent() {
if (!has_parent_scope_ && p_data_->isolate) {
auto value = v8::tracing::TracedValue::Create();
@@ -52,6 +54,8 @@ void CallStatsScopedTracer::Initialize(v8::internal::Isolate* isolate,
v8::internal::tracing::kGlobalScope, v8::internal::tracing::kNoId,
TRACE_EVENT_FLAG_NONE, v8::internal::tracing::kNoId);
}
+
+#endif // defined(V8_RUNTIME_CALL_STATS)
#endif // !defined(V8_USE_PERFETTO)
} // namespace tracing
diff --git a/deps/v8/src/tracing/trace-event.h b/deps/v8/src/tracing/trace-event.h
index b5a16c8590..36c9cdcadf 100644
--- a/deps/v8/src/tracing/trace-event.h
+++ b/deps/v8/src/tracing/trace-event.h
@@ -279,6 +279,7 @@ enum CategoryGroupEnabledFlags {
#define TRACE_EVENT_CALL_STATS_SCOPED(isolate, category_group, name) \
INTERNAL_TRACE_EVENT_CALL_STATS_SCOPED(isolate, category_group, name)
+#ifdef V8_RUNTIME_CALL_STATS
#define INTERNAL_TRACE_EVENT_CALL_STATS_SCOPED(isolate, category_group, name) \
INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \
v8::internal::tracing::CallStatsScopedTracer INTERNAL_TRACE_EVENT_UID( \
@@ -288,6 +289,9 @@ enum CategoryGroupEnabledFlags {
.Initialize(isolate, INTERNAL_TRACE_EVENT_UID(category_group_enabled), \
name); \
}
+#else // V8_RUNTIME_CALL_STATS
+#define INTERNAL_TRACE_EVENT_CALL_STATS_SCOPED(isolate, category_group, name)
+#endif // V8_RUNTIME_CALL_STATS
namespace v8 {
namespace internal {
@@ -588,6 +592,7 @@ class ScopedTracer {
Data data_;
};
+#ifdef V8_RUNTIME_CALL_STATS
// Do not use directly.
class CallStatsScopedTracer {
public:
@@ -612,6 +617,7 @@ class CallStatsScopedTracer {
Data* p_data_;
Data data_;
};
+#endif // defined(V8_RUNTIME_CALL_STATS)
} // namespace tracing
} // namespace internal
@@ -619,6 +625,8 @@ class CallStatsScopedTracer {
#else // defined(V8_USE_PERFETTO)
+#ifdef V8_RUNTIME_CALL_STATS
+
#define TRACE_EVENT_CALL_STATS_SCOPED(isolate, category, name) \
struct PERFETTO_UID(ScopedEvent) { \
struct ScopedStats { \
@@ -650,6 +658,7 @@ class CallStatsScopedTracer {
{ isolate, 0 } \
}
+#endif // defined(V8_RUNTIME_CALL_STATS)
#endif // defined(V8_USE_PERFETTO)
#endif // V8_TRACING_TRACE_EVENT_H_
diff --git a/deps/v8/src/trap-handler/DEPS b/deps/v8/src/trap-handler/DEPS
index 061634d51b..dc6d27e155 100644
--- a/deps/v8/src/trap-handler/DEPS
+++ b/deps/v8/src/trap-handler/DEPS
@@ -6,19 +6,8 @@ include_rules = [
"-src",
"-include",
"+src/trap-handler",
+ # Use the IMMEDIATE_CRASH() macro for crashing non-recoverably on check failure.
+ "+src/base/immediate-crash.h",
+ # Allow include/v8config.h for V8_OS_* macros.
+ "+include/v8config.h",
]
-
-specific_include_rules = {
- "trap-handler.h": [
- "+src/base/build_config.h",
- "+src/common/globals.h",
- "+src/flags/flags.h",
- ],
- "handler-inside-posix.h": [
- # To access V8_OS_LINUX. This file is already included in build_config.h.
- "+include/v8config.h",
- ],
- "handler-inside-win.h": [
- "+src/base/macros.h",
- ]
-}
diff --git a/deps/v8/src/trap-handler/handler-inside-posix.h b/deps/v8/src/trap-handler/handler-inside-posix.h
index 49fe23a712..27e46773bb 100644
--- a/deps/v8/src/trap-handler/handler-inside-posix.h
+++ b/deps/v8/src/trap-handler/handler-inside-posix.h
@@ -6,6 +6,7 @@
#define V8_TRAP_HANDLER_HANDLER_INSIDE_POSIX_H_
#include <signal.h>
+
#include "include/v8config.h"
namespace v8 {
diff --git a/deps/v8/src/trap-handler/handler-inside-win.h b/deps/v8/src/trap-handler/handler-inside-win.h
index 6db28149e7..9b9b060517 100644
--- a/deps/v8/src/trap-handler/handler-inside-win.h
+++ b/deps/v8/src/trap-handler/handler-inside-win.h
@@ -7,7 +7,7 @@
#include <windows.h>
-#include "src/base/macros.h"
+#include "src/trap-handler/trap-handler.h" // For TH_DISABLE_ASAN.
namespace v8 {
namespace internal {
@@ -18,7 +18,7 @@ LONG WINAPI HandleWasmTrap(EXCEPTION_POINTERS* exception);
// On Windows, asan installs its own exception handler which maps shadow
// memory. Since our exception handler may be executed before the asan exception
// handler, we have to make sure that asan shadow memory is not accessed here.
-DISABLE_ASAN bool TryHandleWasmTrap(EXCEPTION_POINTERS* exception);
+TH_DISABLE_ASAN bool TryHandleWasmTrap(EXCEPTION_POINTERS* exception);
} // namespace trap_handler
} // namespace internal
diff --git a/deps/v8/src/trap-handler/handler-inside.cc b/deps/v8/src/trap-handler/handler-inside.cc
index 81e37c205a..31d7f24491 100644
--- a/deps/v8/src/trap-handler/handler-inside.cc
+++ b/deps/v8/src/trap-handler/handler-inside.cc
@@ -50,11 +50,14 @@ bool TryFindLandingPad(uintptr_t fault_addr, uintptr_t* landing_pad) {
if (data == nullptr) {
continue;
}
- const Address base = data->base;
+ const uintptr_t base = data->base;
if (fault_addr >= base && fault_addr < base + data->size) {
// Hurray, we found the code object. Check for protected addresses.
- const ptrdiff_t offset = fault_addr - base;
+ const uint32_t offset = static_cast<uint32_t>(fault_addr - base);
+ // The offset must fit in 32 bit, see comment on
+ // ProtectedInstructionData::instr_offset.
+ TH_DCHECK(base + offset == fault_addr);
for (unsigned i = 0; i < data->num_protected_instructions; ++i) {
if (data->instructions[i].instr_offset == offset) {
diff --git a/deps/v8/src/trap-handler/handler-outside-posix.cc b/deps/v8/src/trap-handler/handler-outside-posix.cc
index 55bcc0075b..004783b64f 100644
--- a/deps/v8/src/trap-handler/handler-outside-posix.cc
+++ b/deps/v8/src/trap-handler/handler-outside-posix.cc
@@ -21,6 +21,8 @@
#include <signal.h>
+#include <cstdio>
+
#include "src/trap-handler/handler-inside-posix.h"
#include "src/trap-handler/trap-handler-internal.h"
@@ -39,7 +41,7 @@ bool g_is_default_signal_handler_registered;
} // namespace
bool RegisterDefaultTrapHandler() {
- CHECK(!g_is_default_signal_handler_registered);
+ TH_CHECK(!g_is_default_signal_handler_registered);
struct sigaction action;
action.sa_sigaction = HandleSignal;
@@ -61,7 +63,7 @@ bool RegisterDefaultTrapHandler() {
defined(THREAD_SANITIZER) || defined(LEAK_SANITIZER) || \
defined(UNDEFINED_SANITIZER)
struct sigaction installed_handler;
- CHECK_EQ(sigaction(kOobSignal, NULL, &installed_handler), 0);
+ TH_CHECK(sigaction(kOobSignal, NULL, &installed_handler) == 0);
// If the installed handler does not point to HandleSignal, then
// allow_user_segv_handler is 0.
if (installed_handler.sa_sigaction != HandleSignal) {
diff --git a/deps/v8/src/trap-handler/handler-outside-win.cc b/deps/v8/src/trap-handler/handler-outside-win.cc
index 09673c8ccc..307f919d78 100644
--- a/deps/v8/src/trap-handler/handler-outside-win.cc
+++ b/deps/v8/src/trap-handler/handler-outside-win.cc
@@ -40,7 +40,7 @@ void* g_registered_handler = nullptr;
bool RegisterDefaultTrapHandler() {
constexpr ULONG first = TRUE;
- CHECK_NULL(g_registered_handler);
+ TH_CHECK(g_registered_handler == nullptr);
g_registered_handler = AddVectoredExceptionHandler(first, HandleWasmTrap);
return nullptr != g_registered_handler;
diff --git a/deps/v8/src/trap-handler/handler-outside.cc b/deps/v8/src/trap-handler/handler-outside.cc
index 62355a5b60..2eabcca0f7 100644
--- a/deps/v8/src/trap-handler/handler-outside.cc
+++ b/deps/v8/src/trap-handler/handler-outside.cc
@@ -66,7 +66,7 @@ bool IsDisjoint(const CodeProtectionInfo* a, const CodeProtectionInfo* b) {
// registered.
void VerifyCodeRangeIsDisjoint(const CodeProtectionInfo* code_info) {
for (size_t i = 0; i < gNumCodeObjects; ++i) {
- DCHECK(IsDisjoint(code_info, gCodeObjects[i].code_info));
+ TH_DCHECK(IsDisjoint(code_info, gCodeObjects[i].code_info));
}
}
@@ -79,11 +79,11 @@ void ValidateCodeObjects() {
// Do some sanity checks on the protected instruction data
for (unsigned i = 0; i < data->num_protected_instructions; ++i) {
- DCHECK_GE(data->instructions[i].instr_offset, 0);
- DCHECK_LT(data->instructions[i].instr_offset, data->size);
- DCHECK_GE(data->instructions[i].landing_offset, 0);
- DCHECK_LT(data->instructions[i].landing_offset, data->size);
- DCHECK_GT(data->instructions[i].landing_offset,
+ TH_DCHECK(data->instructions[i].instr_offset >= 0);
+ TH_DCHECK(data->instructions[i].instr_offset < data->size);
+ TH_DCHECK(data->instructions[i].landing_offset >= 0);
+ TH_DCHECK(data->instructions[i].landing_offset < data->size);
+ TH_DCHECK(data->instructions[i].landing_offset >
data->instructions[i].instr_offset);
}
}
@@ -92,10 +92,10 @@ void ValidateCodeObjects() {
size_t free_count = 0;
for (size_t i = gNextCodeObject; i != gNumCodeObjects;
i = gCodeObjects[i].next_free) {
- DCHECK_LT(i, gNumCodeObjects);
+ TH_DCHECK(i < gNumCodeObjects);
++free_count;
// This check will fail if we encounter a cycle.
- DCHECK_LE(free_count, gNumCodeObjects);
+ TH_DCHECK(free_count <= gNumCodeObjects);
}
// Check that all free entries are reachable via the free list.
@@ -105,12 +105,12 @@ void ValidateCodeObjects() {
++free_count2;
}
}
- DCHECK_EQ(free_count, free_count2);
+ TH_DCHECK(free_count == free_count2);
}
} // namespace
CodeProtectionInfo* CreateHandlerData(
- Address base, size_t size, size_t num_protected_instructions,
+ uintptr_t base, size_t size, size_t num_protected_instructions,
const ProtectedInstructionData* protected_instructions) {
const size_t alloc_size = HandlerDataSize(num_protected_instructions);
CodeProtectionInfo* data =
@@ -131,9 +131,8 @@ CodeProtectionInfo* CreateHandlerData(
}
int RegisterHandlerData(
- Address base, size_t size, size_t num_protected_instructions,
+ uintptr_t base, size_t size, size_t num_protected_instructions,
const ProtectedInstructionData* protected_instructions) {
-
CodeProtectionInfo* data = CreateHandlerData(
base, size, num_protected_instructions, protected_instructions);
@@ -188,7 +187,7 @@ int RegisterHandlerData(
gNumCodeObjects = new_size;
}
- DCHECK(gCodeObjects[i].code_info == nullptr);
+ TH_DCHECK(gCodeObjects[i].code_info == nullptr);
// Find out where the next entry should go.
gNextCodeObject = gCodeObjects[i].next_free;
@@ -211,7 +210,7 @@ void ReleaseHandlerData(int index) {
if (index == kInvalidIndex) {
return;
}
- DCHECK_GE(index, 0);
+ TH_DCHECK(index >= 0);
// Remove the data from the global list if it's there.
CodeProtectionInfo* data = nullptr;
@@ -230,7 +229,7 @@ void ReleaseHandlerData(int index) {
}
// TODO(eholk): on debug builds, ensure there are no more copies in
// the list.
- DCHECK_NOT_NULL(data); // make sure we're releasing legitimate handler data.
+ TH_DCHECK(data); // make sure we're releasing legitimate handler data.
free(data);
}
@@ -259,9 +258,9 @@ bool EnableTrapHandler(bool use_v8_handler) {
// trap handlers are disabled.
bool can_enable =
g_can_enable_trap_handler.exchange(false, std::memory_order_relaxed);
- if (!can_enable) {
- FATAL("EnableTrapHandler called twice, or after IsTrapHandlerEnabled");
- }
+ // EnableTrapHandler called twice, or after IsTrapHandlerEnabled.
+ TH_CHECK(can_enable);
+
if (!V8_TRAP_HANDLER_SUPPORTED) {
return false;
}
diff --git a/deps/v8/src/trap-handler/handler-shared.cc b/deps/v8/src/trap-handler/handler-shared.cc
index 0607d2ed54..977d28daee 100644
--- a/deps/v8/src/trap-handler/handler-shared.cc
+++ b/deps/v8/src/trap-handler/handler-shared.cc
@@ -26,7 +26,7 @@ namespace trap_handler {
// We declare this as int rather than bool as a workaround for a glibc bug, in
// which the dynamic loader cannot handle executables whose TLS area is only
// 1 byte in size; see https://sourceware.org/bugzilla/show_bug.cgi?id=14898.
-THREAD_LOCAL int g_thread_in_wasm_code;
+thread_local int g_thread_in_wasm_code;
static_assert(sizeof(g_thread_in_wasm_code) > 1,
"sizeof(thread_local_var) must be > 1, see "
diff --git a/deps/v8/src/trap-handler/trap-handler-internal.h b/deps/v8/src/trap-handler/trap-handler-internal.h
index 843cd34b70..71588ab895 100644
--- a/deps/v8/src/trap-handler/trap-handler-internal.h
+++ b/deps/v8/src/trap-handler/trap-handler-internal.h
@@ -22,7 +22,7 @@ namespace trap_handler {
// protected memory access instructions and an offset to a landing pad to handle
// faults on that instruction.
struct CodeProtectionInfo {
- Address base;
+ uintptr_t base;
size_t size;
size_t num_protected_instructions;
ProtectedInstructionData instructions[1];
diff --git a/deps/v8/src/trap-handler/trap-handler.h b/deps/v8/src/trap-handler/trap-handler.h
index fcdc256a38..a27ea236e7 100644
--- a/deps/v8/src/trap-handler/trap-handler.h
+++ b/deps/v8/src/trap-handler/trap-handler.h
@@ -10,15 +10,13 @@
#include <atomic>
-#include "src/base/build_config.h"
-#include "src/common/globals.h"
-#include "src/flags/flags.h"
+#include "include/v8config.h"
+#include "src/base/immediate-crash.h"
namespace v8 {
namespace internal {
namespace trap_handler {
-// TODO(eholk): Support trap handlers on other platforms.
#if V8_TARGET_ARCH_X64 && V8_OS_LINUX && !V8_OS_ANDROID
#define V8_TRAP_HANDLER_SUPPORTED true
#elif V8_TARGET_ARCH_X64 && V8_OS_WIN
@@ -33,6 +31,35 @@ namespace trap_handler {
#define V8_TRAP_HANDLER_SUPPORTED false
#endif
+// Setup for shared library export.
+#if defined(BUILDING_V8_SHARED) && defined(V8_OS_WIN)
+#define TH_EXPORT_PRIVATE __declspec(dllexport)
+#elif defined(BUILDING_V8_SHARED)
+#define TH_EXPORT_PRIVATE __attribute__((visibility("default")))
+#elif defined(USING_V8_SHARED) && defined(V8_OS_WIN)
+#define TH_EXPORT_PRIVATE __declspec(dllimport)
+#else
+#define TH_EXPORT_PRIVATE
+#endif
+
+#define TH_CHECK(condition) \
+ if (!(condition)) IMMEDIATE_CRASH();
+#ifdef DEBUG
+#define TH_DCHECK(condition) TH_CHECK(condition)
+#else
+#define TH_DCHECK(condition) void(0)
+#endif
+
+#if defined(__has_feature)
+#if __has_feature(address_sanitizer)
+#define TH_DISABLE_ASAN __attribute__((no_sanitize_address))
+#else
+#define TH_DISABLE_ASAN
+#endif
+#else
+#define TH_DISABLE_ASAN
+#endif
+
struct ProtectedInstructionData {
// The offset of this instruction from the start of its code object.
// Wasm code never grows larger than 2GB, so uint32_t is sufficient.
@@ -50,23 +77,14 @@ const int kInvalidIndex = -1;
///
/// This returns a number that can be used to identify the handler data to
/// ReleaseHandlerData, or -1 on failure.
-int V8_EXPORT_PRIVATE RegisterHandlerData(
- Address base, size_t size, size_t num_protected_instructions,
+int TH_EXPORT_PRIVATE RegisterHandlerData(
+ uintptr_t base, size_t size, size_t num_protected_instructions,
const ProtectedInstructionData* protected_instructions);
/// Removes the data from the master list and frees any memory, if necessary.
/// TODO(mtrofin): We can switch to using size_t for index and not need
/// kInvalidIndex.
-void V8_EXPORT_PRIVATE ReleaseHandlerData(int index);
-
-#if V8_OS_WIN
-#define THREAD_LOCAL __declspec(thread)
-#elif V8_OS_ANDROID
-// TODO(eholk): fix this before enabling for trap handlers for Android.
-#define THREAD_LOCAL
-#else
-#define THREAD_LOCAL __thread
-#endif
+void TH_EXPORT_PRIVATE ReleaseHandlerData(int index);
// Initially false, set to true if when trap handlers are enabled. Never goes
// back to false then.
@@ -83,10 +101,10 @@ extern std::atomic<bool> g_can_enable_trap_handler;
//
// use_v8_handler indicates that V8 should install its own handler
// rather than relying on the embedder to do it.
-V8_EXPORT_PRIVATE bool EnableTrapHandler(bool use_v8_handler);
+TH_EXPORT_PRIVATE bool EnableTrapHandler(bool use_v8_handler);
inline bool IsTrapHandlerEnabled() {
- DCHECK_IMPLIES(g_is_trap_handler_enabled, V8_TRAP_HANDLER_SUPPORTED);
+ TH_DCHECK(!g_is_trap_handler_enabled || V8_TRAP_HANDLER_SUPPORTED);
// Disallow enabling the trap handler after retrieving the current value.
// Re-enabling them late can produce issues because code or objects might have
// been generated under the assumption that trap handlers are disabled.
@@ -97,34 +115,40 @@ inline bool IsTrapHandlerEnabled() {
return g_is_trap_handler_enabled;
}
-extern THREAD_LOCAL int g_thread_in_wasm_code;
+#if defined(V8_OS_AIX)
+// `thread_local` does not link on AIX:
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100641
+extern __thread int g_thread_in_wasm_code;
+#else
+extern thread_local int g_thread_in_wasm_code;
+#endif
// Return the address of the thread-local {g_thread_in_wasm_code} variable. This
// pointer can be accessed and modified as long as the thread calling this
// function exists. Only use if from the same thread do avoid race conditions.
-V8_NOINLINE V8_EXPORT_PRIVATE int* GetThreadInWasmThreadLocalAddress();
+V8_NOINLINE TH_EXPORT_PRIVATE int* GetThreadInWasmThreadLocalAddress();
// On Windows, asan installs its own exception handler which maps shadow
// memory. Since our exception handler may be executed before the asan exception
// handler, we have to make sure that asan shadow memory is not accessed here.
-DISABLE_ASAN inline bool IsThreadInWasm() { return g_thread_in_wasm_code; }
+TH_DISABLE_ASAN inline bool IsThreadInWasm() { return g_thread_in_wasm_code; }
inline void SetThreadInWasm() {
if (IsTrapHandlerEnabled()) {
- DCHECK(!IsThreadInWasm());
+ TH_DCHECK(!IsThreadInWasm());
g_thread_in_wasm_code = true;
}
}
inline void ClearThreadInWasm() {
if (IsTrapHandlerEnabled()) {
- DCHECK(IsThreadInWasm());
+ TH_DCHECK(IsThreadInWasm());
g_thread_in_wasm_code = false;
}
}
bool RegisterDefaultTrapHandler();
-V8_EXPORT_PRIVATE void RemoveTrapHandler();
+TH_EXPORT_PRIVATE void RemoveTrapHandler();
size_t GetRecoveredTrapCount();
diff --git a/deps/v8/src/utils/allocation.cc b/deps/v8/src/utils/allocation.cc
index db4d3ac13b..0c7c468d82 100644
--- a/deps/v8/src/utils/allocation.cc
+++ b/deps/v8/src/utils/allocation.cc
@@ -5,19 +5,21 @@
#include "src/utils/allocation.h"
#include <stdlib.h> // For free, malloc.
+
#include "src/base/bits.h"
+#include "src/base/bounded-page-allocator.h"
#include "src/base/lazy-instance.h"
#include "src/base/logging.h"
#include "src/base/page-allocator.h"
#include "src/base/platform/platform.h"
+#include "src/base/sanitizer/lsan-page-allocator.h"
#include "src/flags/flags.h"
#include "src/init/v8.h"
-#include "src/sanitizer/lsan-page-allocator.h"
#include "src/utils/memcopy.h"
#include "src/utils/vector.h"
#if V8_LIBC_BIONIC
-#include <malloc.h> // NOLINT
+#include <malloc.h>
#include "src/base/platform/wrappers.h"
#endif
@@ -293,5 +295,137 @@ void VirtualMemory::FreeReadOnly() {
RoundUp(region.size(), page_allocator->AllocatePageSize())));
}
+VirtualMemoryCage::VirtualMemoryCage() = default;
+
+VirtualMemoryCage::~VirtualMemoryCage() { Free(); }
+
+VirtualMemoryCage::VirtualMemoryCage(VirtualMemoryCage&& other) V8_NOEXCEPT {
+ *this = std::move(other);
+}
+
+VirtualMemoryCage& VirtualMemoryCage::operator=(VirtualMemoryCage&& other)
+ V8_NOEXCEPT {
+ page_allocator_ = std::move(other.page_allocator_);
+ reservation_ = std::move(other.reservation_);
+ return *this;
+}
+
+namespace {
+inline Address VirtualMemoryCageStart(
+ Address reservation_start,
+ const VirtualMemoryCage::ReservationParams& params) {
+ return RoundUp(reservation_start + params.base_bias_size,
+ params.base_alignment) -
+ params.base_bias_size;
+}
+} // namespace
+
+bool VirtualMemoryCage::InitReservation(const ReservationParams& params) {
+ DCHECK(!reservation_.IsReserved());
+
+ const size_t allocate_page_size = params.page_allocator->AllocatePageSize();
+ CHECK(IsAligned(params.reservation_size, allocate_page_size));
+ CHECK(params.base_alignment == ReservationParams::kAnyBaseAlignment ||
+ (IsAligned(params.base_alignment, allocate_page_size) &&
+ IsAligned(params.base_bias_size, allocate_page_size)));
+ CHECK_LE(params.base_bias_size, params.reservation_size);
+
+ Address hint = RoundDown(params.requested_start_hint,
+ RoundUp(params.base_alignment, allocate_page_size)) -
+ RoundUp(params.base_bias_size, allocate_page_size);
+
+ if (params.base_alignment == ReservationParams::kAnyBaseAlignment) {
+ // When the base doesn't need to be aligned, the virtual memory reservation
+ // fails only due to OOM.
+ VirtualMemory reservation(params.page_allocator, params.reservation_size,
+ reinterpret_cast<void*>(hint));
+ if (!reservation.IsReserved()) return false;
+
+ reservation_ = std::move(reservation);
+ base_ = reservation_.address() + params.base_bias_size;
+ CHECK_EQ(reservation_.size(), params.reservation_size);
+ } else {
+ // Otherwise, we need to try harder by first overreserving
+ // in hopes of finding a correctly aligned address within the larger
+ // reservation.
+ const int kMaxAttempts = 4;
+ for (int attempt = 0; attempt < kMaxAttempts; ++attempt) {
+ // Reserve a region of twice the size so that there is an aligned address
+ // within it that's usable as the cage base.
+ VirtualMemory padded_reservation(params.page_allocator,
+ params.reservation_size * 2,
+ reinterpret_cast<void*>(hint));
+ if (!padded_reservation.IsReserved()) return false;
+
+ // Find properly aligned sub-region inside the reservation.
+ Address address =
+ VirtualMemoryCageStart(padded_reservation.address(), params);
+ CHECK(padded_reservation.InVM(address, params.reservation_size));
+
+#if defined(V8_OS_FUCHSIA)
+ // Fuchsia does not respect given hints so as a workaround we will use
+ // overreserved address space region instead of trying to re-reserve
+ // a subregion.
+ bool overreserve = true;
+#else
+ // For the last attempt use the overreserved region to avoid an OOM crash.
+ // This case can happen if there are many isolates being created in
+ // parallel that race for reserving the regions.
+ bool overreserve = (attempt == kMaxAttempts - 1);
+#endif
+
+ if (overreserve) {
+ if (padded_reservation.InVM(address, params.reservation_size)) {
+ reservation_ = std::move(padded_reservation);
+ base_ = address + params.base_bias_size;
+ break;
+ }
+ } else {
+ // Now free the padded reservation and immediately try to reserve an
+ // exact region at aligned address. We have to do this dancing because
+ // the reservation address requirement is more complex than just a
+ // certain alignment and not all operating systems support freeing parts
+ // of reserved address space regions.
+ padded_reservation.Free();
+
+ VirtualMemory reservation(params.page_allocator,
+ params.reservation_size,
+ reinterpret_cast<void*>(address));
+ if (!reservation.IsReserved()) return false;
+
+ // The reservation could still be somewhere else but we can accept it
+ // if it has the required alignment.
+ Address address = VirtualMemoryCageStart(reservation.address(), params);
+ if (reservation.address() == address) {
+ reservation_ = std::move(reservation);
+ base_ = address + params.base_bias_size;
+ CHECK_EQ(reservation_.size(), params.reservation_size);
+ break;
+ }
+ }
+ }
+ }
+ CHECK_NE(base_, kNullAddress);
+ CHECK(IsAligned(base_, params.base_alignment));
+
+ const Address allocatable_base = RoundUp(base_, params.page_size);
+ const size_t allocatable_size =
+ RoundDown(params.reservation_size - (allocatable_base - base_) -
+ params.base_bias_size,
+ params.page_size);
+ page_allocator_ = std::make_unique<base::BoundedPageAllocator>(
+ params.page_allocator, allocatable_base, allocatable_size,
+ params.page_size);
+ return true;
+}
+
+void VirtualMemoryCage::Free() {
+ if (IsReserved()) {
+ base_ = kNullAddress;
+ page_allocator_.reset();
+ reservation_.Free();
+ }
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/utils/allocation.h b/deps/v8/src/utils/allocation.h
index 6adefccf8d..1d161b7e24 100644
--- a/deps/v8/src/utils/allocation.h
+++ b/deps/v8/src/utils/allocation.h
@@ -13,6 +13,11 @@
#include "src/init/v8.h"
namespace v8 {
+
+namespace base {
+class BoundedPageAllocator;
+} // namespace base
+
namespace internal {
class Isolate;
@@ -213,7 +218,7 @@ class VirtualMemory final {
v8::PageAllocator* page_allocator() { return page_allocator_; }
- base::AddressRegion region() const { return region_; }
+ const base::AddressRegion& region() const { return region_; }
// Returns the start address of the reserved memory.
// If the memory was reserved with an alignment, this address is not
@@ -250,7 +255,7 @@ class VirtualMemory final {
// can be called on a VirtualMemory that is itself not writable.
V8_EXPORT_PRIVATE void FreeReadOnly();
- bool InVM(Address address, size_t size) {
+ bool InVM(Address address, size_t size) const {
return region_.contains(address, size);
}
@@ -260,6 +265,102 @@ class VirtualMemory final {
base::AddressRegion region_;
};
+// Represents a VirtualMemory reservation along with a BoundedPageAllocator that
+// can be used to allocate within the reservation.
+//
+// Virtual memory cages are used for both the pointer compression cage and code
+// ranges (on platforms that require code ranges) and are configurable via
+// ReservationParams.
+//
+// +------------+-----------+----------- ~~~ -+
+// | ... | ... | ... |
+// +------------+-----------+------------ ~~~ -+
+// ^ ^ ^
+// start cage base allocatable base
+//
+// <------------> <------------------->
+// base bias size allocatable size
+// <-------------------------------------------->
+// reservation size
+//
+// - The reservation is made using ReservationParams::page_allocator.
+// - start is the start of the virtual memory reservation.
+// - cage base is the base address of the cage.
+// - allocatable base is the cage base rounded up to the nearest
+// ReservationParams::page_size, and is the start of the allocatable area for
+// the BoundedPageAllocator.
+//
+// - The base bias is configured by ReservationParams::base_bias_size.
+// - The reservation size is configured by ReservationParams::reservation_size.
+//
+// Additionally,
+// - The alignment of the cage base is configured by
+// ReservationParams::base_alignment.
+// - The page size of the BoundedPageAllocator is configured by
+// ReservationParams::page_size.
+// - A hint for the value of start can be passed by
+// ReservationParams::requested_start_hint.
+//
+// The configuration is subject to the following alignment requirements.
+// Below, AllocatePageSize is short for
+// ReservationParams::page_allocator->AllocatePageSize().
+//
+// - The reservation size must be AllocatePageSize-aligned.
+// - If the base alignment is not kAnyBaseAlignment, both the base alignment
+// and the base bias size must be AllocatePageSize-aligned.
+// - The base alignment may be kAnyBaseAlignment to denote any alignment is
+// acceptable. In this case the base bias size does not need to be aligned.
+class VirtualMemoryCage {
+ public:
+ VirtualMemoryCage();
+ virtual ~VirtualMemoryCage();
+
+ VirtualMemoryCage(const VirtualMemoryCage&) = delete;
+ VirtualMemoryCage& operator=(VirtualMemoryCage&) = delete;
+
+ VirtualMemoryCage(VirtualMemoryCage&& other) V8_NOEXCEPT;
+ VirtualMemoryCage& operator=(VirtualMemoryCage&& other) V8_NOEXCEPT;
+
+ Address base() const { return base_; }
+
+ base::BoundedPageAllocator* page_allocator() const {
+ return page_allocator_.get();
+ }
+
+ VirtualMemory* reservation() { return &reservation_; }
+ const VirtualMemory* reservation() const { return &reservation_; }
+
+ bool IsReserved() const {
+ DCHECK_EQ(base_ != kNullAddress, reservation_.IsReserved());
+ return reservation_.IsReserved();
+ }
+
+ struct ReservationParams {
+ // The allocator to use to reserve the virtual memory.
+ v8::PageAllocator* page_allocator;
+ // See diagram above.
+ size_t reservation_size;
+ size_t base_alignment;
+ size_t base_bias_size;
+ size_t page_size;
+ Address requested_start_hint;
+
+ static constexpr size_t kAnyBaseAlignment = 1;
+ };
+
+ // A number of attempts is made to try to reserve a region that satisfies the
+ // constraints in params, but this may fail. The base address may be different
+ // than the one requested.
+ bool InitReservation(const ReservationParams& params);
+
+ void Free();
+
+ protected:
+ Address base_ = kNullAddress;
+ std::unique_ptr<base::BoundedPageAllocator> page_allocator_;
+ VirtualMemory reservation_;
+};
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/utils/ostreams.cc b/deps/v8/src/utils/ostreams.cc
index b58f51159b..a2a6f8574f 100644
--- a/deps/v8/src/utils/ostreams.cc
+++ b/deps/v8/src/utils/ostreams.cc
@@ -19,7 +19,7 @@
#if defined(ANDROID) && !defined(V8_ANDROID_LOG_STDOUT)
#define LOG_TAG "v8"
-#include <android/log.h> // NOLINT
+#include <android/log.h>
#endif
namespace v8 {
diff --git a/deps/v8/src/utils/ostreams.h b/deps/v8/src/utils/ostreams.h
index 899c85fd94..2dfedb5fd9 100644
--- a/deps/v8/src/utils/ostreams.h
+++ b/deps/v8/src/utils/ostreams.h
@@ -8,7 +8,7 @@
#include <cstddef>
#include <cstdio>
#include <cstring>
-#include <ostream> // NOLINT
+#include <ostream>
#include <streambuf>
#include "include/v8config.h"
@@ -158,10 +158,10 @@ struct PrintIteratorRange {
// Print any collection which can be iterated via std::begin and std::end.
// {Iterator} is the common type of {std::begin} and {std::end} called on a
// {const T&}. This function is only instantiable if that type exists.
-template <typename T, typename Iterator = typename std::common_type<
- decltype(std::begin(std::declval<const T&>())),
- decltype(std::end(std::declval<const T&>()))>::type>
-PrintIteratorRange<Iterator> PrintCollection(const T& collection) {
+template <typename T>
+auto PrintCollection(const T& collection) -> PrintIteratorRange<
+ typename std::common_type<decltype(std::begin(collection)),
+ decltype(std::end(collection))>::type> {
return {std::begin(collection), std::end(collection)};
}
diff --git a/deps/v8/src/utils/v8dll-main.cc b/deps/v8/src/utils/v8dll-main.cc
index 255f0d8dbf..6d7f390c8f 100644
--- a/deps/v8/src/utils/v8dll-main.cc
+++ b/deps/v8/src/utils/v8dll-main.cc
@@ -4,7 +4,7 @@
// The GYP based build ends up defining USING_V8_SHARED when compiling this
// file.
-#undef USING_V8_SHARED // NOLINT
+#undef USING_V8_SHARED
#include "include/v8.h"
#if V8_OS_WIN
diff --git a/deps/v8/src/utils/vector.h b/deps/v8/src/utils/vector.h
index dad7abf027..d085f14ab0 100644
--- a/deps/v8/src/utils/vector.h
+++ b/deps/v8/src/utils/vector.h
@@ -28,7 +28,7 @@ class Vector {
constexpr Vector() : start_(nullptr), length_(0) {}
constexpr Vector(T* data, size_t length) : start_(data), length_(length) {
- CONSTEXPR_DCHECK(length == 0 || data != nullptr);
+ DCHECK(length == 0 || data != nullptr);
}
static Vector<T> New(size_t length) {
diff --git a/deps/v8/src/wasm/OWNERS b/deps/v8/src/wasm/OWNERS
index d0de7de935..516dd84d6e 100644
--- a/deps/v8/src/wasm/OWNERS
+++ b/deps/v8/src/wasm/OWNERS
@@ -3,5 +3,6 @@ bbudge@chromium.org
clemensb@chromium.org
gdeepti@chromium.org
jkummerow@chromium.org
+manoskouk@chromium.org
thibaudm@chromium.org
zhin@chromium.org
diff --git a/deps/v8/src/wasm/baseline/arm/liftoff-assembler-arm.h b/deps/v8/src/wasm/baseline/arm/liftoff-assembler-arm.h
index 7acdf635c9..acc7f08fa0 100644
--- a/deps/v8/src/wasm/baseline/arm/liftoff-assembler-arm.h
+++ b/deps/v8/src/wasm/baseline/arm/liftoff-assembler-arm.h
@@ -605,6 +605,8 @@ void LiftoffAssembler::SpillInstance(Register instance) {
str(instance, liftoff::GetInstanceOperand());
}
+void LiftoffAssembler::ResetOSRTarget() {}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
ldr(dst, liftoff::GetInstanceOperand());
}
@@ -743,7 +745,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
: MemOperand(dst_addr, actual_offset_reg);
str(src.gp(), dst_op);
- if (skip_write_barrier) return;
+ if (skip_write_barrier || FLAG_disable_write_barriers) return;
// The write barrier.
Label write_barrier;
@@ -758,7 +760,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
CallRecordWriteStub(dst_addr,
actual_offset_reg == no_reg ? Operand(offset_imm)
: Operand(actual_offset_reg),
- EMIT_REMEMBERED_SET, kSaveFPRegs,
+ RememberedSetAction::kEmit, SaveFPRegsMode::kSave,
wasm::WasmCode::kRecordWrite);
bind(&exit);
}
@@ -766,8 +768,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uint32_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
+ uint32_t* protected_load_pc, bool is_load_mem) {
// Offsets >=2GB are statically OOB on 32-bit systems.
DCHECK_LE(offset_imm, std::numeric_limits<int32_t>::max());
liftoff::LoadInternal(this, dst, src_addr, offset_reg,
@@ -4228,6 +4229,8 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
add(sp, sp, Operand(size));
}
+void LiftoffAssembler::MaybeOSR() {}
+
void LiftoffStackSlots::Construct(int param_slots) {
DCHECK_LT(0, slots_.size());
SortInPushOrder();
diff --git a/deps/v8/src/wasm/baseline/arm64/liftoff-assembler-arm64.h b/deps/v8/src/wasm/baseline/arm64/liftoff-assembler-arm64.h
index bea5100ef3..38d424d8e0 100644
--- a/deps/v8/src/wasm/baseline/arm64/liftoff-assembler-arm64.h
+++ b/deps/v8/src/wasm/baseline/arm64/liftoff-assembler-arm64.h
@@ -126,23 +126,13 @@ inline CPURegister AcquireByType(UseScratchRegisterScope* temps,
template <typename T>
inline MemOperand GetMemOp(LiftoffAssembler* assm,
UseScratchRegisterScope* temps, Register addr,
- Register offset, T offset_imm,
- bool i64_offset = false) {
+ Register offset, T offset_imm) {
if (offset.is_valid()) {
- if (offset_imm == 0) {
- return i64_offset ? MemOperand(addr.X(), offset.X())
- : MemOperand(addr.X(), offset.W(), UXTW);
- }
+ if (offset_imm == 0) return MemOperand(addr.X(), offset.X());
+ Register tmp = temps->AcquireX();
DCHECK_GE(kMaxUInt32, offset_imm);
- if (i64_offset) {
- Register tmp = temps->AcquireX();
- assm->Add(tmp, offset.X(), offset_imm);
- return MemOperand(addr.X(), tmp);
- } else {
- Register tmp = temps->AcquireW();
- assm->Add(tmp, offset.W(), offset_imm);
- return MemOperand(addr.X(), tmp, UXTW);
- }
+ assm->Add(tmp, offset.X(), offset_imm);
+ return MemOperand(addr.X(), tmp);
}
return MemOperand(addr.X(), offset_imm);
}
@@ -440,6 +430,8 @@ void LiftoffAssembler::SpillInstance(Register instance) {
Str(instance, liftoff::GetInstanceOperand());
}
+void LiftoffAssembler::ResetOSRTarget() {}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
Ldr(dst, liftoff::GetInstanceOperand());
}
@@ -474,7 +466,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
liftoff::GetMemOp(this, &temps, dst_addr, offset_reg, offset_imm);
StoreTaggedField(src.gp(), dst_op);
- if (skip_write_barrier) return;
+ if (skip_write_barrier || FLAG_disable_write_barriers) return;
// The write barrier.
Label write_barrier;
@@ -489,22 +481,22 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
}
CheckPageFlag(src.gp(), MemoryChunk::kPointersToHereAreInterestingMask, ne,
&exit);
- CallRecordWriteStub(
- dst_addr,
- dst_op.IsRegisterOffset() ? Operand(dst_op.regoffset().X())
- : Operand(dst_op.offset()),
- EMIT_REMEMBERED_SET, kSaveFPRegs, wasm::WasmCode::kRecordWrite);
+ CallRecordWriteStub(dst_addr,
+ dst_op.IsRegisterOffset()
+ ? Operand(dst_op.regoffset().X())
+ : Operand(dst_op.offset()),
+ RememberedSetAction::kEmit, SaveFPRegsMode::kSave,
+ wasm::WasmCode::kRecordWrite);
bind(&exit);
}
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uintptr_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
+ uint32_t* protected_load_pc, bool is_load_mem) {
UseScratchRegisterScope temps(this);
- MemOperand src_op = liftoff::GetMemOp(this, &temps, src_addr, offset_reg,
- offset_imm, i64_offset);
+ MemOperand src_op =
+ liftoff::GetMemOp(this, &temps, src_addr, offset_reg, offset_imm);
if (protected_load_pc) *protected_load_pc = pc_offset();
switch (type.value()) {
case LoadType::kI32Load8U:
@@ -3232,6 +3224,8 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
Drop(size, 1);
}
+void LiftoffAssembler::MaybeOSR() {}
+
void LiftoffStackSlots::Construct(int param_slots) {
DCHECK_LT(0, slots_.size());
// The stack pointer is required to be quadword aligned.
diff --git a/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h b/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h
index e597467c73..9f35b5efc3 100644
--- a/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h
+++ b/deps/v8/src/wasm/baseline/ia32/liftoff-assembler-ia32.h
@@ -332,6 +332,8 @@ void LiftoffAssembler::SpillInstance(Register instance) {
mov(liftoff::GetInstanceOperand(), instance);
}
+void LiftoffAssembler::ResetOSRTarget() {}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
mov(dst, liftoff::GetInstanceOperand());
}
@@ -365,7 +367,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
: Operand(dst_addr, offset_reg, times_1, offset_imm);
mov(dst_op, src.gp());
- if (skip_write_barrier) return;
+ if (skip_write_barrier || FLAG_disable_write_barriers) return;
Register scratch = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp();
Label write_barrier;
@@ -380,16 +382,15 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
MemoryChunk::kPointersToHereAreInterestingMask, zero, &exit,
Label::kNear);
lea(scratch, dst_op);
- CallRecordWriteStub(dst_addr, scratch, EMIT_REMEMBERED_SET, kSaveFPRegs,
- wasm::WasmCode::kRecordWrite);
+ CallRecordWriteStub(dst_addr, scratch, RememberedSetAction::kEmit,
+ SaveFPRegsMode::kSave, wasm::WasmCode::kRecordWrite);
bind(&exit);
}
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uint32_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
+ uint32_t* protected_load_pc, bool is_load_mem) {
// Offsets >=2GB are statically OOB on 32-bit systems.
DCHECK_LE(offset_imm, std::numeric_limits<int32_t>::max());
DCHECK_EQ(type.value_type() == kWasmI64, dst.is_gp_pair());
@@ -2933,15 +2934,7 @@ void LiftoffAssembler::emit_i64x2_splat(LiftoffRegister dst,
void LiftoffAssembler::emit_f32x4_splat(LiftoffRegister dst,
LiftoffRegister src) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vshufps(dst.fp(), src.fp(), src.fp(), 0);
- } else {
- if (dst.fp() != src.fp()) {
- movss(dst.fp(), src.fp());
- }
- shufps(dst.fp(), src.fp(), 0);
- }
+ F32x4Splat(dst.fp(), src.fp());
}
void LiftoffAssembler::emit_f64x2_splat(LiftoffRegister dst,
@@ -3263,13 +3256,7 @@ void LiftoffAssembler::emit_s128_const(LiftoffRegister dst,
}
void LiftoffAssembler::emit_s128_not(LiftoffRegister dst, LiftoffRegister src) {
- if (dst.fp() != src.fp()) {
- Pcmpeqd(dst.fp(), dst.fp());
- Pxor(dst.fp(), src.fp());
- } else {
- Pcmpeqd(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg);
- Pxor(dst.fp(), liftoff::kScratchDoubleReg);
- }
+ S128Not(dst.fp(), src.fp(), liftoff::kScratchDoubleReg);
}
void LiftoffAssembler::emit_s128_and(LiftoffRegister dst, LiftoffRegister lhs,
@@ -3850,16 +3837,7 @@ void LiftoffAssembler::emit_i32x4_extmul_high_i16x8_u(LiftoffRegister dst,
void LiftoffAssembler::emit_i64x2_neg(LiftoffRegister dst,
LiftoffRegister src) {
- DoubleRegister reg =
- dst.fp() == src.fp() ? liftoff::kScratchDoubleReg : dst.fp();
- Pxor(reg, reg);
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vpsubq(dst.fp(), reg, src.fp());
- } else {
- psubq(reg, src.fp());
- if (dst.fp() != reg) movaps(dst.fp(), reg);
- }
+ I64x2Neg(dst.fp(), src.fp(), liftoff::kScratchDoubleReg);
}
void LiftoffAssembler::emit_i64x2_alltrue(LiftoffRegister dst,
@@ -3893,7 +3871,7 @@ void LiftoffAssembler::emit_i64x2_shr_s(LiftoffRegister dst,
// Set up a mask [0x80000000,0,0x80000000,0].
Pcmpeqb(tmp, tmp);
- Psllq(tmp, tmp, 63);
+ Psllq(tmp, tmp, byte{63});
Psrlq(tmp, tmp, shift);
if (CpuFeatures::IsSupported(AVX)) {
@@ -3912,11 +3890,11 @@ void LiftoffAssembler::emit_i64x2_shr_s(LiftoffRegister dst,
void LiftoffAssembler::emit_i64x2_shri_s(LiftoffRegister dst,
LiftoffRegister lhs, int32_t rhs) {
XMMRegister tmp = liftoff::kScratchDoubleReg;
- int32_t shift = rhs & 63;
+ byte shift = rhs & 63;
// Set up a mask [0x80000000,0,0x80000000,0].
Pcmpeqb(tmp, tmp);
- Psllq(tmp, tmp, 63);
+ Psllq(tmp, tmp, byte{63});
Psrlq(tmp, tmp, shift);
liftoff::EmitSimdShiftOpImm<&Assembler::vpsrlq, &Assembler::psrlq, 6>(
@@ -3960,13 +3938,13 @@ void LiftoffAssembler::emit_i64x2_mul(LiftoffRegister dst, LiftoffRegister lhs,
Movaps(tmp1.fp(), lhs.fp());
Movaps(tmp2.fp(), rhs.fp());
// Multiply high dword of each qword of left with right.
- Psrlq(tmp1.fp(), 32);
+ Psrlq(tmp1.fp(), byte{32});
Pmuludq(tmp1.fp(), tmp1.fp(), rhs.fp());
// Multiply high dword of each qword of right with left.
- Psrlq(tmp2.fp(), 32);
+ Psrlq(tmp2.fp(), byte{32});
Pmuludq(tmp2.fp(), tmp2.fp(), lhs.fp());
Paddq(tmp2.fp(), tmp2.fp(), tmp1.fp());
- Psllq(tmp2.fp(), tmp2.fp(), 32);
+ Psllq(tmp2.fp(), tmp2.fp(), byte{32});
liftoff::EmitSimdCommutativeBinOp<&Assembler::vpmuludq, &Assembler::pmuludq>(
this, dst, lhs, rhs);
Paddq(dst.fp(), dst.fp(), tmp2.fp());
@@ -4029,11 +4007,11 @@ void LiftoffAssembler::emit_f32x4_abs(LiftoffRegister dst,
LiftoffRegister src) {
if (dst.fp() == src.fp()) {
Pcmpeqd(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg);
- Psrld(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, 1);
+ Psrld(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, byte{1});
Andps(dst.fp(), liftoff::kScratchDoubleReg);
} else {
Pcmpeqd(dst.fp(), dst.fp());
- Psrld(dst.fp(), dst.fp(), 1);
+ Psrld(dst.fp(), dst.fp(), byte{1});
Andps(dst.fp(), src.fp());
}
}
@@ -4042,11 +4020,11 @@ void LiftoffAssembler::emit_f32x4_neg(LiftoffRegister dst,
LiftoffRegister src) {
if (dst.fp() == src.fp()) {
Pcmpeqd(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg);
- Pslld(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, 31);
+ Pslld(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, byte{31});
Xorps(dst.fp(), liftoff::kScratchDoubleReg);
} else {
Pcmpeqd(dst.fp(), dst.fp());
- Pslld(dst.fp(), dst.fp(), 31);
+ Pslld(dst.fp(), dst.fp(), byte{31});
Xorps(dst.fp(), src.fp());
}
}
@@ -4185,11 +4163,11 @@ void LiftoffAssembler::emit_f64x2_abs(LiftoffRegister dst,
LiftoffRegister src) {
if (dst.fp() == src.fp()) {
Pcmpeqd(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg);
- Psrlq(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, 1);
+ Psrlq(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, byte{1});
Andpd(dst.fp(), liftoff::kScratchDoubleReg);
} else {
Pcmpeqd(dst.fp(), dst.fp());
- Psrlq(dst.fp(), dst.fp(), 1);
+ Psrlq(dst.fp(), dst.fp(), byte{1});
Andpd(dst.fp(), src.fp());
}
}
@@ -4198,11 +4176,11 @@ void LiftoffAssembler::emit_f64x2_neg(LiftoffRegister dst,
LiftoffRegister src) {
if (dst.fp() == src.fp()) {
Pcmpeqd(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg);
- Psllq(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, 63);
+ Psllq(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, byte{63});
Xorpd(dst.fp(), liftoff::kScratchDoubleReg);
} else {
Pcmpeqd(dst.fp(), dst.fp());
- Psllq(dst.fp(), dst.fp(), 63);
+ Psllq(dst.fp(), dst.fp(), byte{63});
Xorpd(dst.fp(), src.fp());
}
}
@@ -4266,61 +4244,12 @@ void LiftoffAssembler::emit_f64x2_div(LiftoffRegister dst, LiftoffRegister lhs,
void LiftoffAssembler::emit_f64x2_min(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
- // The minpd instruction doesn't propagate NaNs and +0's in its first
- // operand. Perform minpd in both orders, merge the results, and adjust.
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vminpd(liftoff::kScratchDoubleReg, lhs.fp(), rhs.fp());
- vminpd(dst.fp(), rhs.fp(), lhs.fp());
- } else if (dst.fp() == lhs.fp() || dst.fp() == rhs.fp()) {
- XMMRegister src = dst.fp() == lhs.fp() ? rhs.fp() : lhs.fp();
- movaps(liftoff::kScratchDoubleReg, src);
- minpd(liftoff::kScratchDoubleReg, dst.fp());
- minpd(dst.fp(), src);
- } else {
- movaps(liftoff::kScratchDoubleReg, lhs.fp());
- minpd(liftoff::kScratchDoubleReg, rhs.fp());
- movaps(dst.fp(), rhs.fp());
- minpd(dst.fp(), lhs.fp());
- }
- // propagate -0's and NaNs, which may be non-canonical.
- Orpd(liftoff::kScratchDoubleReg, dst.fp());
- // Canonicalize NaNs by quieting and clearing the payload.
- Cmpunordpd(dst.fp(), dst.fp(), liftoff::kScratchDoubleReg);
- Orpd(liftoff::kScratchDoubleReg, dst.fp());
- Psrlq(dst.fp(), 13);
- Andnpd(dst.fp(), liftoff::kScratchDoubleReg);
+ F64x2Min(dst.fp(), lhs.fp(), rhs.fp(), liftoff::kScratchDoubleReg);
}
void LiftoffAssembler::emit_f64x2_max(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
- // The maxpd instruction doesn't propagate NaNs and +0's in its first
- // operand. Perform maxpd in both orders, merge the results, and adjust.
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vmaxpd(liftoff::kScratchDoubleReg, lhs.fp(), rhs.fp());
- vmaxpd(dst.fp(), rhs.fp(), lhs.fp());
- } else if (dst.fp() == lhs.fp() || dst.fp() == rhs.fp()) {
- XMMRegister src = dst.fp() == lhs.fp() ? rhs.fp() : lhs.fp();
- movaps(liftoff::kScratchDoubleReg, src);
- maxpd(liftoff::kScratchDoubleReg, dst.fp());
- maxpd(dst.fp(), src);
- } else {
- movaps(liftoff::kScratchDoubleReg, lhs.fp());
- maxpd(liftoff::kScratchDoubleReg, rhs.fp());
- movaps(dst.fp(), rhs.fp());
- maxpd(dst.fp(), lhs.fp());
- }
- // Find discrepancies.
- Xorpd(dst.fp(), liftoff::kScratchDoubleReg);
- // Propagate NaNs, which may be non-canonical.
- Orpd(liftoff::kScratchDoubleReg, dst.fp());
- // Propagate sign discrepancy and (subtle) quiet NaNs.
- Subpd(liftoff::kScratchDoubleReg, liftoff::kScratchDoubleReg, dst.fp());
- // Canonicalize NaNs by clearing the payload. Sign is non-deterministic.
- Cmpunordpd(dst.fp(), dst.fp(), liftoff::kScratchDoubleReg);
- Psrlq(dst.fp(), 13);
- Andnpd(dst.fp(), liftoff::kScratchDoubleReg);
+ F64x2Max(dst.fp(), lhs.fp(), rhs.fp(), liftoff::kScratchDoubleReg);
}
void LiftoffAssembler::emit_f64x2_pmin(LiftoffRegister dst, LiftoffRegister lhs,
@@ -4617,25 +4546,13 @@ void LiftoffAssembler::emit_i64x2_extract_lane(LiftoffRegister dst,
void LiftoffAssembler::emit_f32x4_extract_lane(LiftoffRegister dst,
LiftoffRegister lhs,
uint8_t imm_lane_idx) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vshufps(dst.fp(), lhs.fp(), lhs.fp(), imm_lane_idx);
- } else {
- if (dst.fp() != lhs.fp()) movaps(dst.fp(), lhs.fp());
- if (imm_lane_idx != 0) shufps(dst.fp(), dst.fp(), imm_lane_idx);
- }
+ F32x4ExtractLane(dst.fp(), lhs.fp(), imm_lane_idx);
}
void LiftoffAssembler::emit_f64x2_extract_lane(LiftoffRegister dst,
LiftoffRegister lhs,
uint8_t imm_lane_idx) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vshufpd(dst.fp(), lhs.fp(), lhs.fp(), imm_lane_idx);
- } else {
- if (dst.fp() != lhs.fp()) movaps(dst.fp(), lhs.fp());
- if (imm_lane_idx != 0) shufpd(dst.fp(), dst.fp(), imm_lane_idx);
- }
+ F64x2ExtractLane(dst.fp(), lhs.fp(), imm_lane_idx);
}
void LiftoffAssembler::emit_i8x16_replace_lane(LiftoffRegister dst,
@@ -4713,27 +4630,7 @@ void LiftoffAssembler::emit_f64x2_replace_lane(LiftoffRegister dst,
LiftoffRegister src1,
LiftoffRegister src2,
uint8_t imm_lane_idx) {
- // TODO(fanchenk): Use movlhps and blendpd
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- if (imm_lane_idx == 0) {
- vinsertps(dst.fp(), src1.fp(), src2.fp(), 0b00000000);
- vinsertps(dst.fp(), dst.fp(), src2.fp(), 0b01010000);
- } else {
- vinsertps(dst.fp(), src1.fp(), src2.fp(), 0b00100000);
- vinsertps(dst.fp(), dst.fp(), src2.fp(), 0b01110000);
- }
- } else {
- CpuFeatureScope scope(this, SSE4_1);
- if (dst.fp() != src1.fp()) movaps(dst.fp(), src1.fp());
- if (imm_lane_idx == 0) {
- insertps(dst.fp(), src2.fp(), 0b00000000);
- insertps(dst.fp(), src2.fp(), 0b01010000);
- } else {
- insertps(dst.fp(), src2.fp(), 0b00100000);
- insertps(dst.fp(), src2.fp(), 0b01110000);
- }
- }
+ F64x2ReplaceLane(dst.fp(), src1.fp(), src2.fp(), imm_lane_idx);
}
void LiftoffAssembler::StackCheck(Label* ool_code, Register limit_address) {
@@ -4907,6 +4804,8 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
add(esp, Immediate(size));
}
+void LiftoffAssembler::MaybeOSR() {}
+
void LiftoffStackSlots::Construct(int param_slots) {
DCHECK_LT(0, slots_.size());
SortInPushOrder();
diff --git a/deps/v8/src/wasm/baseline/liftoff-assembler.cc b/deps/v8/src/wasm/baseline/liftoff-assembler.cc
index a544460ab9..f8b01ac960 100644
--- a/deps/v8/src/wasm/baseline/liftoff-assembler.cc
+++ b/deps/v8/src/wasm/baseline/liftoff-assembler.cc
@@ -738,22 +738,36 @@ void LiftoffAssembler::MergeStackWith(CacheState& target, uint32_t arity,
cache_state_.stack_state[stack_base + i]);
}
+ // Check whether the cached instance needs to be moved to another register.
+ // Register moves are executed as part of the {StackTransferRecipe}. Remember
+ // whether the register content has to be reloaded after executing the stack
+ // transfers.
+ bool reload_instance = false;
+ // If the registers match, or the destination has no cache register, nothing
+ // needs to be done.
if (cache_state_.cached_instance != target.cached_instance &&
target.cached_instance != no_reg) {
+ // On forward jumps, just reset the cached register in the target state.
if (jump_direction == kForwardJump) {
- // On forward jumps, just reset the cached instance in the target state.
target.ClearCachedInstanceRegister();
+ } else if (cache_state_.cached_instance != no_reg) {
+ // If the source has the content but in the wrong register, execute a
+ // register move as part of the stack transfer.
+ transfers.MoveRegister(LiftoffRegister{target.cached_instance},
+ LiftoffRegister{cache_state_.cached_instance},
+ kPointerKind);
} else {
- // On backward jumps, we already generated code assuming that the instance
- // is available in that register. Thus move it there.
- if (cache_state_.cached_instance == no_reg) {
- LoadInstanceFromFrame(target.cached_instance);
- } else {
- Move(target.cached_instance, cache_state_.cached_instance,
- kPointerKind);
- }
+ // Otherwise (the source state has no cached content), we reload later.
+ reload_instance = true;
}
}
+
+ // Now execute stack transfers and register moves/loads.
+ transfers.Execute();
+
+ if (reload_instance) {
+ LoadInstanceFromFrame(target.cached_instance);
+ }
}
void LiftoffAssembler::Spill(VarState* slot) {
diff --git a/deps/v8/src/wasm/baseline/liftoff-assembler.h b/deps/v8/src/wasm/baseline/liftoff-assembler.h
index dbff396f82..b0439dc4e1 100644
--- a/deps/v8/src/wasm/baseline/liftoff-assembler.h
+++ b/deps/v8/src/wasm/baseline/liftoff-assembler.h
@@ -341,6 +341,11 @@ class LiftoffAssembler : public TurboAssembler {
}
void clear_used(LiftoffRegister reg) {
+ if (reg.is_pair()) {
+ clear_used(reg.low());
+ clear_used(reg.high());
+ return;
+ }
register_use_count[reg.liftoff_code()] = 0;
used_registers.clear(reg);
}
@@ -633,6 +638,7 @@ class LiftoffAssembler : public TurboAssembler {
inline void LoadTaggedPointerFromInstance(Register dst, Register instance,
int offset);
inline void SpillInstance(Register instance);
+ inline void ResetOSRTarget();
inline void FillInstanceInto(Register dst);
inline void LoadTaggedPointer(Register dst, Register src_addr,
Register offset_reg, int32_t offset_imm,
@@ -669,7 +675,7 @@ class LiftoffAssembler : public TurboAssembler {
inline void Load(LiftoffRegister dst, Register src_addr, Register offset_reg,
uintptr_t offset_imm, LoadType type, LiftoffRegList pinned,
uint32_t* protected_load_pc = nullptr,
- bool is_load_mem = false, bool i64_offset = false);
+ bool is_load_mem = false);
inline void Store(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister src, StoreType type,
LiftoffRegList pinned,
@@ -1416,6 +1422,9 @@ class LiftoffAssembler : public TurboAssembler {
inline void AllocateStackSlot(Register addr, uint32_t size);
inline void DeallocateStackSlot(uint32_t size);
+ // Instrumentation for shadow-stack-compatible OSR on x64.
+ inline void MaybeOSR();
+
////////////////////////////////////
// End of platform-specific part. //
////////////////////////////////////
diff --git a/deps/v8/src/wasm/baseline/liftoff-compiler.cc b/deps/v8/src/wasm/baseline/liftoff-compiler.cc
index 84d217b2e4..926a4ae11e 100644
--- a/deps/v8/src/wasm/baseline/liftoff-compiler.cc
+++ b/deps/v8/src/wasm/baseline/liftoff-compiler.cc
@@ -10,7 +10,7 @@
#include "src/codegen/assembler-inl.h"
// TODO(clemensb): Remove dependences on compiler stuff.
#include "src/codegen/external-reference.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/machine-type.h"
#include "src/codegen/macro-assembler-inl.h"
#include "src/compiler/linkage.h"
@@ -75,7 +75,7 @@ struct assert_field_size {
__ LoadTaggedPointerFromInstance(dst, LoadInstanceIntoRegister(pinned, dst), \
WASM_INSTANCE_OBJECT_FIELD_OFFSET(name));
-#ifdef DEBUG
+#ifdef V8_CODE_COMMENTS
#define DEBUG_CODE_COMMENT(str) \
do { \
__ RecordComment(str); \
@@ -151,12 +151,7 @@ constexpr LiftoffCondition GetCompareCondition(WasmOpcode opcode) {
case kExprI32GeU:
return kUnsignedGreaterEqual;
default:
-#if V8_HAS_CXX14_CONSTEXPR
UNREACHABLE();
-#else
- // We need to return something for old compilers here.
- return kEqual;
-#endif
}
}
@@ -362,7 +357,6 @@ class LiftoffCompiler {
Label catch_label;
bool catch_reached = false;
bool in_handler = false;
- int32_t previous_catch = -1;
};
struct Control : public ControlBase<Value, validate> {
@@ -594,8 +588,7 @@ class LiftoffCompiler {
}
}
- // TODO(ahaas): Make this function constexpr once GCC allows it.
- LiftoffRegList RegsUnusedByParams() {
+ constexpr static LiftoffRegList RegsUnusedByParams() {
LiftoffRegList regs = kGpCacheRegList;
for (auto reg : kGpParamRegisters) {
regs.clear(reg);
@@ -620,8 +613,9 @@ class LiftoffCompiler {
// For reference type parameters we have to use registers that were not
// used for parameters because some reference type stack parameters may
// get processed before some value type register parameters.
+ static constexpr auto kRegsUnusedByParams = RegsUnusedByParams();
LiftoffRegister reg = is_reference(reg_kind)
- ? __ GetUnusedRegister(RegsUnusedByParams())
+ ? __ GetUnusedRegister(kRegsUnusedByParams)
: __ GetUnusedRegister(rc, pinned);
__ LoadCallerFrameSlot(reg, -location.AsCallerFrameSlot(), reg_kind);
return reg;
@@ -742,6 +736,7 @@ class LiftoffCompiler {
// Store the instance parameter to a special stack slot.
__ SpillInstance(kWasmInstanceRegister);
__ cache_state()->SetInstanceCacheRegister(kWasmInstanceRegister);
+ if (for_debugging_) __ ResetOSRTarget();
// Process parameters.
if (num_params) DEBUG_CODE_COMMENT("process parameters");
@@ -909,6 +904,9 @@ class LiftoffCompiler {
ool->debug_sidetable_entry_builder->set_pc_offset(__ pc_offset());
}
DCHECK_EQ(ool->continuation.get()->is_bound(), is_stack_check);
+ if (is_stack_check) {
+ MaybeOSR();
+ }
if (!ool->regs_to_save.is_empty()) __ PopRegisters(ool->regs_to_save);
if (is_stack_check) {
if (V8_UNLIKELY(ool->spilled_registers != nullptr)) {
@@ -1046,6 +1044,7 @@ class LiftoffCompiler {
DefineSafepointWithCalleeSavedRegisters();
RegisterDebugSideTableEntry(decoder,
DebugSideTableBuilder::kAllowRegisters);
+ MaybeOSR();
}
void PushControl(Control* block) {
@@ -1072,16 +1071,14 @@ class LiftoffCompiler {
// Save the current cache state for the merge when jumping to this loop.
loop->label_state.Split(*__ cache_state());
+ PushControl(loop);
+
// Execute a stack check in the loop header.
StackCheck(decoder, decoder->position());
-
- PushControl(loop);
}
void Try(FullDecoder* decoder, Control* block) {
block->try_info = std::make_unique<TryInfo>();
- block->try_info->previous_catch = current_catch_;
- current_catch_ = static_cast<int32_t>(decoder->control_depth() - 1);
PushControl(block);
}
@@ -1114,7 +1111,6 @@ class LiftoffCompiler {
const ExceptionIndexImmediate<validate>& imm,
Control* block, Vector<Value> values) {
DCHECK(block->is_try_catch());
- current_catch_ = block->try_info->previous_catch; // Pop try scope.
__ emit_jump(block->label.get());
// The catch block is unreachable if no possible throws in the try block
@@ -1181,6 +1177,7 @@ class LiftoffCompiler {
if (depth == decoder->control_depth() - 1) {
// Delegate to the caller, do not emit a landing pad.
Rethrow(decoder, __ cache_state()->stack_state.back());
+ MaybeOSR();
} else {
DCHECK(target->is_incomplete_try());
if (!target->try_info->catch_reached) {
@@ -1194,14 +1191,15 @@ class LiftoffCompiler {
__ emit_jump(&target->try_info->catch_label);
}
}
- current_catch_ = block->try_info->previous_catch;
}
void Rethrow(FullDecoder* decoder, Control* try_block) {
int index = try_block->try_info->catch_state.stack_height() - 1;
auto& exception = __ cache_state()->stack_state[index];
Rethrow(decoder, exception);
- EmitLandingPad(decoder);
+ int pc_offset = __ pc_offset();
+ MaybeOSR();
+ EmitLandingPad(decoder, pc_offset);
}
void CatchAll(FullDecoder* decoder, Control* block) {
@@ -1209,8 +1207,6 @@ class LiftoffCompiler {
block->is_try_unwind());
DCHECK_EQ(decoder->control_at(0), block);
- current_catch_ = block->try_info->previous_catch; // Pop try scope.
-
// The catch block is unreachable if no possible throws in the try block
// exist. We only build a landing pad if some node in the try block can
// (possibly) throw. Otherwise the catch environments remain empty.
@@ -1340,8 +1336,6 @@ class LiftoffCompiler {
if (!c->label.get()->is_bound()) __ bind(c->label.get());
}
- void EndControl(FullDecoder* decoder, Control* c) {}
-
void GenerateCCall(const LiftoffRegister* result_regs,
const ValueKindSig* sig, ValueKind out_argument_kind,
const LiftoffRegister* arg_regs,
@@ -2767,75 +2761,33 @@ class LiftoffCompiler {
return index;
}
- bool IndexStaticallyInBounds(const LiftoffAssembler::VarState& index_slot,
- int access_size, uintptr_t* offset) {
- if (!index_slot.is_const()) return false;
-
- // Potentially zero extend index (which is a 32-bit constant).
- const uintptr_t index = static_cast<uint32_t>(index_slot.i32_const());
- const uintptr_t effective_offset = index + *offset;
-
- if (effective_offset < index // overflow
- || !base::IsInBounds<uintptr_t>(effective_offset, access_size,
- env_->min_memory_size)) {
- return false;
- }
-
- *offset = effective_offset;
- return true;
- }
-
void LoadMem(FullDecoder* decoder, LoadType type,
const MemoryAccessImmediate<validate>& imm,
const Value& index_val, Value* result) {
ValueKind kind = type.value_type().kind();
- RegClass rc = reg_class_for(kind);
if (!CheckSupportedType(decoder, kind, "load")) return;
+ LiftoffRegister full_index = __ PopToRegister();
+ Register index = BoundsCheckMem(decoder, type.size(), imm.offset,
+ full_index, {}, kDontForceCheck);
+ if (index == no_reg) return;
uintptr_t offset = imm.offset;
- Register index = no_reg;
-
- // Only look at the slot, do not pop it yet (will happen in PopToRegister
- // below, if this is not a statically-in-bounds index).
- auto& index_slot = __ cache_state()->stack_state.back();
- bool i64_offset = index_val.type == kWasmI64;
- if (IndexStaticallyInBounds(index_slot, type.size(), &offset)) {
- __ cache_state()->stack_state.pop_back();
- DEBUG_CODE_COMMENT("load from memory (constant offset)");
- LiftoffRegList pinned;
- Register mem = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp();
- LOAD_INSTANCE_FIELD(mem, MemoryStart, kSystemPointerSize, pinned);
- LiftoffRegister value = pinned.set(__ GetUnusedRegister(rc, pinned));
- __ Load(value, mem, no_reg, offset, type, pinned, nullptr, true,
- i64_offset);
- __ PushRegister(kind, value);
- } else {
- LiftoffRegister full_index = __ PopToRegister();
- index = BoundsCheckMem(decoder, type.size(), offset, full_index, {},
- kDontForceCheck);
- if (index == no_reg) return;
-
- DEBUG_CODE_COMMENT("load from memory");
- LiftoffRegList pinned = LiftoffRegList::ForRegs(index);
- index = AddMemoryMasking(index, &offset, &pinned);
-
- // Load the memory start address only now to reduce register pressure
- // (important on ia32).
- Register mem = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp();
- LOAD_INSTANCE_FIELD(mem, MemoryStart, kSystemPointerSize, pinned);
- LiftoffRegister value = pinned.set(__ GetUnusedRegister(rc, pinned));
-
- uint32_t protected_load_pc = 0;
- __ Load(value, mem, index, offset, type, pinned, &protected_load_pc, true,
- i64_offset);
- if (env_->use_trap_handler) {
- AddOutOfLineTrap(decoder, WasmCode::kThrowWasmTrapMemOutOfBounds,
- protected_load_pc);
- }
- __ PushRegister(kind, value);
+ LiftoffRegList pinned = LiftoffRegList::ForRegs(index);
+ index = AddMemoryMasking(index, &offset, &pinned);
+ DEBUG_CODE_COMMENT("load from memory");
+ Register addr = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp();
+ LOAD_INSTANCE_FIELD(addr, MemoryStart, kSystemPointerSize, pinned);
+ RegClass rc = reg_class_for(kind);
+ LiftoffRegister value = pinned.set(__ GetUnusedRegister(rc, pinned));
+ uint32_t protected_load_pc = 0;
+ __ Load(value, addr, index, offset, type, pinned, &protected_load_pc, true);
+ if (env_->use_trap_handler) {
+ AddOutOfLineTrap(decoder, WasmCode::kThrowWasmTrapMemOutOfBounds,
+ protected_load_pc);
}
+ __ PushRegister(kind, value);
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) {
+ if (FLAG_trace_wasm_memory) {
TraceMemoryOperation(false, type.mem_type().representation(), index,
offset, decoder->position());
}
@@ -2878,7 +2830,7 @@ class LiftoffCompiler {
}
__ PushRegister(kS128, value);
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) {
+ if (FLAG_trace_wasm_memory) {
// Again load extend is different.
MachineRepresentation mem_rep =
transform == LoadTransformationKind::kExtend
@@ -2920,7 +2872,7 @@ class LiftoffCompiler {
__ PushRegister(kS128, result);
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) {
+ if (FLAG_trace_wasm_memory) {
TraceMemoryOperation(false, type.mem_type().representation(), index,
offset, decoder->position());
}
@@ -2931,45 +2883,29 @@ class LiftoffCompiler {
const Value& index_val, const Value& value_val) {
ValueKind kind = type.value_type().kind();
if (!CheckSupportedType(decoder, kind, "store")) return;
-
LiftoffRegList pinned;
LiftoffRegister value = pinned.set(__ PopToRegister());
+ LiftoffRegister full_index = __ PopToRegister(pinned);
+ Register index = BoundsCheckMem(decoder, type.size(), imm.offset,
+ full_index, pinned, kDontForceCheck);
+ if (index == no_reg) return;
uintptr_t offset = imm.offset;
- Register index = no_reg;
-
- auto& index_slot = __ cache_state()->stack_state.back();
- if (IndexStaticallyInBounds(index_slot, type.size(), &offset)) {
- __ cache_state()->stack_state.pop_back();
- DEBUG_CODE_COMMENT("store to memory (constant offset)");
- Register mem = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp();
- LOAD_INSTANCE_FIELD(mem, MemoryStart, kSystemPointerSize, pinned);
- __ Store(mem, no_reg, offset, value, type, pinned, nullptr, true);
- } else {
- LiftoffRegister full_index = __ PopToRegister(pinned);
- index = BoundsCheckMem(decoder, type.size(), imm.offset, full_index,
- pinned, kDontForceCheck);
- if (index == no_reg) return;
-
- pinned.set(index);
- index = AddMemoryMasking(index, &offset, &pinned);
- DEBUG_CODE_COMMENT("store to memory");
- uint32_t protected_store_pc = 0;
- // Load the memory start address only now to reduce register pressure
- // (important on ia32).
- Register mem = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp();
- LOAD_INSTANCE_FIELD(mem, MemoryStart, kSystemPointerSize, pinned);
- LiftoffRegList outer_pinned;
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) outer_pinned.set(index);
- __ Store(mem, index, offset, value, type, outer_pinned,
- &protected_store_pc, true);
- if (env_->use_trap_handler) {
- AddOutOfLineTrap(decoder, WasmCode::kThrowWasmTrapMemOutOfBounds,
- protected_store_pc);
- }
+ pinned.set(index);
+ index = AddMemoryMasking(index, &offset, &pinned);
+ DEBUG_CODE_COMMENT("store to memory");
+ Register addr = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp();
+ LOAD_INSTANCE_FIELD(addr, MemoryStart, kSystemPointerSize, pinned);
+ uint32_t protected_store_pc = 0;
+ LiftoffRegList outer_pinned;
+ if (FLAG_trace_wasm_memory) outer_pinned.set(index);
+ __ Store(addr, index, offset, value, type, outer_pinned,
+ &protected_store_pc, true);
+ if (env_->use_trap_handler) {
+ AddOutOfLineTrap(decoder, WasmCode::kThrowWasmTrapMemOutOfBounds,
+ protected_store_pc);
}
-
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) {
+ if (FLAG_trace_wasm_memory) {
TraceMemoryOperation(true, type.mem_rep(), index, offset,
decoder->position());
}
@@ -2998,7 +2934,7 @@ class LiftoffCompiler {
AddOutOfLineTrap(decoder, WasmCode::kThrowWasmTrapMemOutOfBounds,
protected_store_pc);
}
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) {
+ if (FLAG_trace_wasm_memory) {
TraceMemoryOperation(true, type.mem_rep(), index, offset,
decoder->position());
}
@@ -3210,6 +3146,32 @@ class LiftoffCompiler {
__ PushRegister(kRef, ref);
}
+ void BrOnNonNull(FullDecoder* decoder, const Value& ref_object,
+ uint32_t depth) {
+ // Before branching, materialize all constants. This avoids repeatedly
+ // materializing them for each conditional branch.
+ if (depth != decoder->control_depth() - 1) {
+ __ MaterializeMergedConstants(
+ decoder->control_at(depth)->br_merge()->arity);
+ }
+
+ Label cont_false;
+ LiftoffRegList pinned;
+ LiftoffRegister ref = pinned.set(__ PopToRegister(pinned));
+ // Put the reference back onto the stack for the branch.
+ __ PushRegister(kRef, ref);
+
+ Register null = __ GetUnusedRegister(kGpReg, pinned).gp();
+ LoadNullValue(null, pinned);
+ __ emit_cond_jump(kEqual, &cont_false, ref_object.type.kind(), ref.gp(),
+ null);
+
+ BrOrRet(decoder, depth, 0);
+ // Drop the reference if we are not branching.
+ __ DropValues(1);
+ __ bind(&cont_false);
+ }
+
template <ValueKind src_kind, ValueKind result_kind, typename EmitFn>
void EmitTerOp(EmitFn fn) {
static constexpr RegClass src_rc = reg_class_for(src_kind);
@@ -4112,22 +4074,22 @@ class LiftoffCompiler {
DCHECK_EQ(index, WasmExceptionPackage::GetEncodedSize(exception));
}
- void EmitLandingPad(FullDecoder* decoder) {
- if (current_catch_ == -1) return;
+ void EmitLandingPad(FullDecoder* decoder, int handler_offset) {
+ if (decoder->current_catch() == -1) return;
MovableLabel handler;
- int handler_offset = __ pc_offset();
// If we return from the throwing code normally, just skip over the handler.
Label skip_handler;
__ emit_jump(&skip_handler);
// Handler: merge into the catch state, and jump to the catch body.
+ DEBUG_CODE_COMMENT("-- landing pad --");
__ bind(handler.get());
__ ExceptionHandler();
__ PushException();
handlers_.push_back({std::move(handler), handler_offset});
Control* current_try =
- decoder->control_at(decoder->control_depth() - 1 - current_catch_);
+ decoder->control_at(decoder->control_depth_of_current_catch());
DCHECK_NOT_NULL(current_try->try_info);
if (!current_try->try_info->catch_reached) {
current_try->try_info->catch_state.InitMerge(
@@ -4160,6 +4122,7 @@ class LiftoffCompiler {
{LiftoffAssembler::VarState{
kSmiKind, LiftoffRegister{encoded_size_reg}, 0}},
decoder->position());
+ MaybeOSR();
// The FixedArray for the exception values is now in the first gp return
// register.
@@ -4194,7 +4157,9 @@ class LiftoffCompiler {
LiftoffAssembler::VarState{kPointerKind, values_array, 0}},
decoder->position());
- EmitLandingPad(decoder);
+ int pc_offset = __ pc_offset();
+ MaybeOSR();
+ EmitLandingPad(decoder, pc_offset);
}
void AtomicStoreMem(FullDecoder* decoder, StoreType type,
@@ -4214,9 +4179,9 @@ class LiftoffCompiler {
Register addr = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp();
LOAD_INSTANCE_FIELD(addr, MemoryStart, kSystemPointerSize, pinned);
LiftoffRegList outer_pinned;
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) outer_pinned.set(index);
+ if (FLAG_trace_wasm_memory) outer_pinned.set(index);
__ AtomicStore(addr, index, offset, value, type, outer_pinned);
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) {
+ if (FLAG_trace_wasm_memory) {
TraceMemoryOperation(true, type.mem_rep(), index, offset,
decoder->position());
}
@@ -4242,7 +4207,7 @@ class LiftoffCompiler {
__ AtomicLoad(value, addr, index, offset, type, pinned);
__ PushRegister(kind, value);
- if (V8_UNLIKELY(FLAG_trace_wasm_memory)) {
+ if (FLAG_trace_wasm_memory) {
TraceMemoryOperation(false, type.mem_type().representation(), index,
offset, decoder->position());
}
@@ -4318,6 +4283,7 @@ class LiftoffCompiler {
__ DropValues(1);
LiftoffRegister result = expected;
+ if (__ cache_state()->is_used(result)) __ SpillRegister(result);
// We already added the index to addr, so we can just pass no_reg to the
// assembler now.
@@ -4354,7 +4320,6 @@ class LiftoffCompiler {
std::initializer_list<LiftoffAssembler::VarState> params,
int position) {
DEBUG_CODE_COMMENT(
- // NOLINTNEXTLINE(whitespace/braces)
(std::string{"call builtin: "} + GetRuntimeStubName(stub_id)).c_str());
auto interface_descriptor = Builtins::CallInterfaceDescriptorFor(
RuntimeStubIdToBuiltinName(stub_id));
@@ -4868,6 +4833,18 @@ class LiftoffCompiler {
StoreObjectField(obj.gp(), no_reg, offset, value, pinned, field_kind);
pinned.clear(value);
}
+ if (imm.struct_type->field_count() == 0) {
+ static_assert(Heap::kMinObjectSizeInTaggedWords == 2 &&
+ WasmStruct::kHeaderSize == kTaggedSize,
+ "empty structs need exactly one padding field");
+ ValueKind field_kind = ValueKind::kRef;
+ LiftoffRegister value = pinned.set(__ GetUnusedRegister(kGpReg, pinned));
+ LoadNullValue(value.gp(), pinned);
+ StoreObjectField(obj.gp(), no_reg,
+ wasm::ObjectAccess::ToTagged(WasmStruct::kHeaderSize),
+ value, pinned, field_kind);
+ pinned.clear(value);
+ }
__ PushRegister(kRef, obj);
}
@@ -5232,7 +5209,7 @@ class LiftoffCompiler {
}
void BrOnCast(FullDecoder* decoder, const Value& obj, const Value& rtt,
- Value* result_on_branch, uint32_t depth) {
+ Value* /* result_on_branch */, uint32_t depth) {
// Before branching, materialize all constants. This avoids repeatedly
// materializing them for each conditional branch.
if (depth != decoder->control_depth() - 1) {
@@ -5253,6 +5230,27 @@ class LiftoffCompiler {
__ PushRegister(obj.type.kind(), obj_reg);
}
+ void BrOnCastFail(FullDecoder* decoder, const Value& obj, const Value& rtt,
+ Value* /* result_on_fallthrough */, uint32_t depth) {
+ // Before branching, materialize all constants. This avoids repeatedly
+ // materializing them for each conditional branch.
+ if (depth != decoder->control_depth() - 1) {
+ __ MaterializeMergedConstants(
+ decoder->control_at(depth)->br_merge()->arity);
+ }
+
+ Label cont_branch, fallthrough;
+ LiftoffRegister obj_reg =
+ SubtypeCheck(decoder, obj, rtt, &cont_branch, kNullFails);
+ __ PushRegister(obj.type.kind(), obj_reg);
+ __ emit_jump(&fallthrough);
+
+ __ bind(&cont_branch);
+ BrOrRet(decoder, depth, 0);
+
+ __ bind(&fallthrough);
+ }
+
// Abstract type checkers. They all return the object register and fall
// through to match.
LiftoffRegister DataCheck(const Value& obj, Label* no_match,
@@ -5484,6 +5482,7 @@ class LiftoffCompiler {
source_position_table_builder_.AddPosition(
__ pc_offset(), SourcePosition(decoder->position()), true);
__ CallIndirect(sig, call_descriptor, target);
+ FinishCall(decoder, sig, call_descriptor);
}
} else {
// A direct call within this module just gets the current instance.
@@ -5501,15 +5500,9 @@ class LiftoffCompiler {
source_position_table_builder_.AddPosition(
__ pc_offset(), SourcePosition(decoder->position()), true);
__ CallNativeWasmCode(addr);
+ FinishCall(decoder, sig, call_descriptor);
}
}
-
- if (!tail_call) {
- DefineSafepoint();
- RegisterDebugSideTableEntry(decoder, DebugSideTableBuilder::kDidSpill);
- EmitLandingPad(decoder);
- __ FinishCall(sig, call_descriptor);
- }
}
void CallIndirect(FullDecoder* decoder, const Value& index_val,
@@ -5604,7 +5597,6 @@ class LiftoffCompiler {
__ Load(LiftoffRegister(scratch), table, index, 0, LoadType::kI32Load,
pinned);
- // TODO(9495): Do not always compare signatures, same as wasm-compiler.cc.
// Compare against expected signature.
__ LoadConstant(LiftoffRegister(tmp_const), WasmValue(canonical_sig_num));
@@ -5675,10 +5667,7 @@ class LiftoffCompiler {
__ pc_offset(), SourcePosition(decoder->position()), true);
__ CallIndirect(sig, call_descriptor, target);
- DefineSafepoint();
- RegisterDebugSideTableEntry(decoder, DebugSideTableBuilder::kDidSpill);
- EmitLandingPad(decoder);
- __ FinishCall(sig, call_descriptor);
+ FinishCall(decoder, sig, call_descriptor);
}
}
@@ -5693,9 +5682,9 @@ class LiftoffCompiler {
call_descriptor =
GetLoweredCallDescriptor(compilation_zone_, call_descriptor);
- // Since this is a call instruction, we'll have to spill everything later
- // anyway; do it right away so that the register state tracking doesn't
- // get confused by the conditional builtin call below.
+ // Executing a write barrier needs temp registers; doing this on a
+ // conditional branch confuses the LiftoffAssembler's register management.
+ // Spill everything up front to work around that.
__ SpillAllRegisters();
// We limit ourselves to four registers:
@@ -5710,6 +5699,7 @@ class LiftoffCompiler {
LiftoffRegister target = pinned.set(__ GetUnusedRegister(kGpReg, pinned));
LiftoffRegister temp = pinned.set(__ GetUnusedRegister(kGpReg, pinned));
+ // Load the WasmFunctionData.
LiftoffRegister func_data = func_ref;
__ LoadTaggedPointer(
func_data.gp(), func_ref.gp(), no_reg,
@@ -5720,144 +5710,65 @@ class LiftoffCompiler {
wasm::ObjectAccess::ToTagged(SharedFunctionInfo::kFunctionDataOffset),
pinned);
- LiftoffRegister data_type = instance;
- __ LoadMap(data_type.gp(), func_data.gp());
- __ Load(data_type, data_type.gp(), no_reg,
- wasm::ObjectAccess::ToTagged(Map::kInstanceTypeOffset),
- LoadType::kI32Load16U, pinned);
+ // Load "ref" (instance or <instance, callable> pair) and target.
+ __ LoadTaggedPointer(
+ instance.gp(), func_data.gp(), no_reg,
+ wasm::ObjectAccess::ToTagged(WasmFunctionData::kRefOffset), pinned);
- Label is_js_function, perform_call;
- __ emit_i32_cond_jumpi(kEqual, &is_js_function, data_type.gp(),
- WASM_JS_FUNCTION_DATA_TYPE);
- // End of {data_type}'s live range.
+ Label load_target, perform_call;
+ // Check if "ref" is a Tuple2.
{
- // Call to a WasmExportedFunction.
-
- LiftoffRegister callee_instance = instance;
- __ LoadTaggedPointer(callee_instance.gp(), func_data.gp(), no_reg,
- wasm::ObjectAccess::ToTagged(
- WasmExportedFunctionData::kInstanceOffset),
- pinned);
- LiftoffRegister func_index = target;
- __ LoadSmiAsInt32(func_index, func_data.gp(),
- wasm::ObjectAccess::ToTagged(
- WasmExportedFunctionData::kFunctionIndexOffset),
- pinned);
- LiftoffRegister imported_function_refs = temp;
- __ LoadTaggedPointer(imported_function_refs.gp(), callee_instance.gp(),
- no_reg,
- wasm::ObjectAccess::ToTagged(
- WasmInstanceObject::kImportedFunctionRefsOffset),
- pinned);
- // We overwrite {imported_function_refs} here, at the cost of having
- // to reload it later, because we don't have more registers on ia32.
- LiftoffRegister imported_functions_num = imported_function_refs;
- __ LoadFixedArrayLengthAsInt32(imported_functions_num,
- imported_function_refs.gp(), pinned);
-
- Label imported;
- __ emit_cond_jump(kSignedLessThan, &imported, kI32, func_index.gp(),
- imported_functions_num.gp());
-
- {
- // Function locally defined in module.
-
- // {func_index} is invalid from here on.
- LiftoffRegister jump_table_start = target;
- __ Load(jump_table_start, callee_instance.gp(), no_reg,
- wasm::ObjectAccess::ToTagged(
- WasmInstanceObject::kJumpTableStartOffset),
- kPointerLoadType, pinned);
- LiftoffRegister jump_table_offset = temp;
- __ LoadSmiAsInt32(jump_table_offset, func_data.gp(),
- wasm::ObjectAccess::ToTagged(
- WasmExportedFunctionData::kJumpTableOffsetOffset),
+ LiftoffRegister pair_map = temp;
+ LiftoffRegister ref_map = target;
+ __ LoadMap(ref_map.gp(), instance.gp());
+ LOAD_INSTANCE_FIELD(pair_map.gp(), IsolateRoot, kSystemPointerSize,
pinned);
- __ emit_ptrsize_add(target.gp(), jump_table_start.gp(),
- jump_table_offset.gp());
- __ emit_jump(&perform_call);
- }
-
- {
- // Function imported to module.
- __ bind(&imported);
-
- LiftoffRegister imported_function_targets = temp;
- __ Load(imported_function_targets, callee_instance.gp(), no_reg,
- wasm::ObjectAccess::ToTagged(
- WasmInstanceObject::kImportedFunctionTargetsOffset),
- kPointerLoadType, pinned);
- // {callee_instance} is invalid from here on.
- LiftoffRegister imported_instance = instance;
- // Scale {func_index} to kTaggedSize.
- __ emit_i32_shli(func_index.gp(), func_index.gp(), kTaggedSizeLog2);
- // {func_data} is invalid from here on.
- imported_function_refs = func_data;
- __ LoadTaggedPointer(
- imported_function_refs.gp(), callee_instance.gp(), no_reg,
- wasm::ObjectAccess::ToTagged(
- WasmInstanceObject::kImportedFunctionRefsOffset),
- pinned);
- __ LoadTaggedPointer(
- imported_instance.gp(), imported_function_refs.gp(),
- func_index.gp(),
- wasm::ObjectAccess::ElementOffsetInTaggedFixedArray(0), pinned);
- // Scale {func_index} to kSystemPointerSize.
- if (kSystemPointerSize == kTaggedSize * 2) {
- __ emit_i32_add(func_index.gp(), func_index.gp(), func_index.gp());
- } else {
- DCHECK_EQ(kSystemPointerSize, kTaggedSize);
- }
- // This overwrites the contents of {func_index}, which we don't need
- // any more.
- __ Load(target, imported_function_targets.gp(), func_index.gp(), 0,
- kPointerLoadType, pinned);
- __ emit_jump(&perform_call);
- }
- }
-
- {
- // Call to a WasmJSFunction. The call target is
- // function_data->wasm_to_js_wrapper_code()->instruction_start().
- // The instance_node is the pair
- // (current WasmInstanceObject, function_data->callable()).
- __ bind(&is_js_function);
-
- LiftoffRegister callable = temp;
- __ LoadTaggedPointer(
- callable.gp(), func_data.gp(), no_reg,
- wasm::ObjectAccess::ToTagged(WasmJSFunctionData::kCallableOffset),
- pinned);
-
- // Preserve {func_data} across the call.
- LiftoffRegList saved_regs = LiftoffRegList::ForRegs(func_data);
- __ PushRegisters(saved_regs);
+ __ LoadTaggedPointer(pair_map.gp(), pair_map.gp(), no_reg,
+ IsolateData::root_slot_offset(RootIndex::kTuple2Map),
+ pinned);
+ __ emit_cond_jump(kUnequal, &load_target, kRef, ref_map.gp(),
+ pair_map.gp());
- LiftoffRegister current_instance = instance;
+ // Overwrite the tuple's "instance" entry with the current instance.
+ // TODO(jkummerow): Can we figure out a way to guarantee that the
+ // instance field is always precomputed?
+ LiftoffRegister current_instance = temp;
__ FillInstanceInto(current_instance.gp());
- LiftoffAssembler::VarState instance_var(kOptRef, current_instance, 0);
- LiftoffAssembler::VarState callable_var(kOptRef, callable, 0);
-
- CallRuntimeStub(WasmCode::kWasmAllocatePair,
- MakeSig::Returns(kOptRef).Params(kOptRef, kOptRef),
- {instance_var, callable_var}, decoder->position());
- if (instance.gp() != kReturnRegister0) {
- __ Move(instance.gp(), kReturnRegister0, kPointerKind);
- }
-
- // Restore {func_data}, which we saved across the call.
- __ PopRegisters(saved_regs);
+ __ StoreTaggedPointer(instance.gp(), no_reg,
+ wasm::ObjectAccess::ToTagged(Tuple2::kValue1Offset),
+ current_instance, pinned);
+ // Fall through to {load_target}.
+ }
+ // Load the call target.
+ __ bind(&load_target);
+
+#ifdef V8_HEAP_SANDBOX
+ LOAD_INSTANCE_FIELD(temp.gp(), IsolateRoot, kSystemPointerSize, pinned);
+ __ LoadExternalPointerField(
+ target.gp(),
+ FieldOperand(func_data.gp(), WasmFunctionData::kForeignAddressOffset),
+ kForeignForeignAddressTag, temp.gp(),
+ TurboAssembler::IsolateRootLocation::kInScratchRegister);
+#else
+ __ Load(
+ target, func_data.gp(), no_reg,
+ wasm::ObjectAccess::ToTagged(WasmFunctionData::kForeignAddressOffset),
+ kPointerLoadType, pinned);
+#endif
- LiftoffRegister wrapper_code = target;
- __ LoadTaggedPointer(wrapper_code.gp(), func_data.gp(), no_reg,
- wasm::ObjectAccess::ToTagged(
- WasmJSFunctionData::kWasmToJsWrapperCodeOffset),
- pinned);
- __ emit_ptrsize_addi(target.gp(), wrapper_code.gp(),
- wasm::ObjectAccess::ToTagged(Code::kHeaderSize));
- // Fall through to {perform_call}.
- }
+ LiftoffRegister null_address = temp;
+ __ LoadConstant(null_address, WasmValue::ForUintPtr(0));
+ __ emit_cond_jump(kUnequal, &perform_call, kRef, target.gp(),
+ null_address.gp());
+ // The cached target can only be null for WasmJSFunctions.
+ __ LoadTaggedPointer(target.gp(), func_data.gp(), no_reg,
+ wasm::ObjectAccess::ToTagged(
+ WasmJSFunctionData::kWasmToJsWrapperCodeOffset),
+ pinned);
+ __ emit_ptrsize_addi(target.gp(), target.gp(),
+ wasm::ObjectAccess::ToTagged(Code::kHeaderSize));
+ // Fall through to {perform_call}.
__ bind(&perform_call);
// Now the call target is in {target}, and the right instance object
@@ -5876,18 +5787,14 @@ class LiftoffCompiler {
__ pc_offset(), SourcePosition(decoder->position()), true);
__ CallIndirect(sig, call_descriptor, target_reg);
- DefineSafepoint();
- RegisterDebugSideTableEntry(decoder, DebugSideTableBuilder::kDidSpill);
- EmitLandingPad(decoder);
- __ FinishCall(sig, call_descriptor);
+ FinishCall(decoder, sig, call_descriptor);
}
}
void LoadNullValue(Register null, LiftoffRegList pinned) {
LOAD_INSTANCE_FIELD(null, IsolateRoot, kSystemPointerSize, pinned);
- __ LoadTaggedPointer(null, null, no_reg,
- IsolateData::root_slot_offset(RootIndex::kNullValue),
- pinned);
+ __ LoadFullPointer(null, null,
+ IsolateData::root_slot_offset(RootIndex::kNullValue));
}
void LoadExceptionSymbol(Register dst, LiftoffRegList pinned,
@@ -6004,6 +5911,22 @@ class LiftoffCompiler {
WASM_STRUCT_TYPE - WASM_ARRAY_TYPE);
}
+ void MaybeOSR() {
+ if (V8_UNLIKELY(for_debugging_)) {
+ __ MaybeOSR();
+ }
+ }
+
+ void FinishCall(FullDecoder* decoder, ValueKindSig* sig,
+ compiler::CallDescriptor* call_descriptor) {
+ DefineSafepoint();
+ RegisterDebugSideTableEntry(decoder, DebugSideTableBuilder::kDidSpill);
+ int pc_offset = __ pc_offset();
+ MaybeOSR();
+ EmitLandingPad(decoder, pc_offset);
+ __ FinishCall(sig, call_descriptor);
+ }
+
static constexpr WasmOpcode kNoOutstandingOp = kExprUnreachable;
static constexpr base::EnumSet<ValueKind> kUnconditionallySupported{
kI32, kI64, kF32, kF64};
@@ -6051,9 +5974,6 @@ class LiftoffCompiler {
// at the first breakable opcode in the function (if compiling for debugging).
bool did_function_entry_break_checks_ = false;
- // Depth of the current try block.
- int32_t current_catch_ = -1;
-
struct HandlerInfo {
MovableLabel handler;
int pc_offset;
diff --git a/deps/v8/src/wasm/baseline/liftoff-register.h b/deps/v8/src/wasm/baseline/liftoff-register.h
index bb27b99dc2..63ac2acf8b 100644
--- a/deps/v8/src/wasm/baseline/liftoff-register.h
+++ b/deps/v8/src/wasm/baseline/liftoff-register.h
@@ -152,11 +152,12 @@ class LiftoffRegister {
"chosen type is small enough");
public:
- explicit LiftoffRegister(Register reg) : LiftoffRegister(reg.code()) {
+ constexpr explicit LiftoffRegister(Register reg)
+ : LiftoffRegister(reg.code()) {
DCHECK_NE(0, kLiftoffAssemblerGpCacheRegs & reg.bit());
DCHECK_EQ(reg, gp());
}
- explicit LiftoffRegister(DoubleRegister reg)
+ constexpr explicit LiftoffRegister(DoubleRegister reg)
: LiftoffRegister(kAfterMaxLiftoffGpRegCode + reg.code()) {
DCHECK_NE(0, kLiftoffAssemblerFpCacheRegs & reg.bit());
DCHECK_EQ(reg, fp());
@@ -275,22 +276,22 @@ class LiftoffRegister {
return DoubleRegister::from_code((code_ & kCodeMask) + 1);
}
- Register gp() const {
+ constexpr Register gp() const {
DCHECK(is_gp());
return Register::from_code(code_);
}
- DoubleRegister fp() const {
+ constexpr DoubleRegister fp() const {
DCHECK(is_fp());
return DoubleRegister::from_code(code_ - kAfterMaxLiftoffGpRegCode);
}
- int liftoff_code() const {
+ constexpr int liftoff_code() const {
STATIC_ASSERT(sizeof(int) >= sizeof(storage_t));
return static_cast<int>(code_);
}
- RegClass reg_class() const {
+ constexpr RegClass reg_class() const {
return is_fp_pair() ? kFpRegPair
: is_gp_pair() ? kGpRegPair : is_gp() ? kGpReg : kFpReg;
}
@@ -364,7 +365,7 @@ class LiftoffRegList {
return reg;
}
- LiftoffRegister clear(LiftoffRegister reg) {
+ constexpr LiftoffRegister clear(LiftoffRegister reg) {
if (reg.is_pair()) {
regs_ &= ~(storage_t{1} << reg.low().liftoff_code());
regs_ &= ~(storage_t{1} << reg.high().liftoff_code());
@@ -373,8 +374,10 @@ class LiftoffRegList {
}
return reg;
}
- Register clear(Register reg) { return clear(LiftoffRegister{reg}).gp(); }
- DoubleRegister clear(DoubleRegister reg) {
+ constexpr Register clear(Register reg) {
+ return clear(LiftoffRegister{reg}).gp();
+ }
+ constexpr DoubleRegister clear(DoubleRegister reg) {
return clear(LiftoffRegister{reg}).fp();
}
diff --git a/deps/v8/src/wasm/baseline/mips/liftoff-assembler-mips.h b/deps/v8/src/wasm/baseline/mips/liftoff-assembler-mips.h
index d078fd5e42..58d2d8545c 100644
--- a/deps/v8/src/wasm/baseline/mips/liftoff-assembler-mips.h
+++ b/deps/v8/src/wasm/baseline/mips/liftoff-assembler-mips.h
@@ -433,6 +433,8 @@ void LiftoffAssembler::SpillInstance(Register instance) {
sw(instance, liftoff::GetInstanceOperand());
}
+void LiftoffAssembler::ResetOSRTarget() {}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
lw(dst, liftoff::GetInstanceOperand());
}
@@ -468,7 +470,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
: MemOperand(dst_addr, offset_imm);
Sw(src.gp(), dst_op);
- if (skip_write_barrier) return;
+ if (skip_write_barrier || FLAG_disable_write_barriers) return;
// The write barrier.
Label write_barrier;
@@ -483,16 +485,15 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
CheckPageFlag(src.gp(), scratch,
MemoryChunk::kPointersToHereAreInterestingMask, eq, &exit);
Addu(scratch, dst_op.rm(), dst_op.offset());
- CallRecordWriteStub(dst_addr, scratch, EMIT_REMEMBERED_SET, kSaveFPRegs,
- wasm::WasmCode::kRecordWrite);
+ CallRecordWriteStub(dst_addr, scratch, RememberedSetAction::kEmit,
+ SaveFPRegsMode::kSave, wasm::WasmCode::kRecordWrite);
bind(&exit);
}
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uint32_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
+ uint32_t* protected_load_pc, bool is_load_mem) {
Register src = no_reg;
if (offset_reg != no_reg) {
src = GetUnusedRegister(kGpReg, pinned).gp();
@@ -2836,7 +2837,7 @@ void LiftoffAssembler::CallTrapCallbackForTesting() {
}
void LiftoffAssembler::AssertUnreachable(AbortReason reason) {
- if (emit_debug_code()) Abort(reason);
+ if (FLAG_debug_code) Abort(reason);
}
void LiftoffAssembler::PushRegisters(LiftoffRegList regs) {
@@ -2999,6 +3000,8 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
addiu(sp, sp, size);
}
+void LiftoffAssembler::MaybeOSR() {}
+
void LiftoffStackSlots::Construct(int param_slots) {
DCHECK_LT(0, slots_.size());
SortInPushOrder();
diff --git a/deps/v8/src/wasm/baseline/mips64/liftoff-assembler-mips64.h b/deps/v8/src/wasm/baseline/mips64/liftoff-assembler-mips64.h
index dfbd8d6a75..15b3b4f7c4 100644
--- a/deps/v8/src/wasm/baseline/mips64/liftoff-assembler-mips64.h
+++ b/deps/v8/src/wasm/baseline/mips64/liftoff-assembler-mips64.h
@@ -418,6 +418,8 @@ void LiftoffAssembler::SpillInstance(Register instance) {
Sd(instance, liftoff::GetInstanceOperand());
}
+void LiftoffAssembler::ResetOSRTarget() {}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
Ld(dst, liftoff::GetInstanceOperand());
}
@@ -448,7 +450,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
MemOperand dst_op = liftoff::GetMemOp(this, dst_addr, offset_reg, offset_imm);
Sd(src.gp(), dst_op);
- if (skip_write_barrier) return;
+ if (skip_write_barrier || FLAG_disable_write_barriers) return;
Label write_barrier;
Label exit;
@@ -462,16 +464,15 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
MemoryChunk::kPointersToHereAreInterestingMask, eq,
&exit);
Daddu(scratch, dst_op.rm(), dst_op.offset());
- CallRecordWriteStub(dst_addr, scratch, EMIT_REMEMBERED_SET, kSaveFPRegs,
- wasm::WasmCode::kRecordWrite);
+ CallRecordWriteStub(dst_addr, scratch, RememberedSetAction::kEmit,
+ SaveFPRegsMode::kSave, wasm::WasmCode::kRecordWrite);
bind(&exit);
}
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uintptr_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
+ uint32_t* protected_load_pc, bool is_load_mem) {
MemOperand src_op = liftoff::GetMemOp(this, src_addr, offset_reg, offset_imm);
if (protected_load_pc) *protected_load_pc = pc_offset();
@@ -2995,7 +2996,7 @@ void LiftoffAssembler::CallTrapCallbackForTesting() {
}
void LiftoffAssembler::AssertUnreachable(AbortReason reason) {
- if (emit_debug_code()) Abort(reason);
+ if (FLAG_debug_code) Abort(reason);
}
void LiftoffAssembler::PushRegisters(LiftoffRegList regs) {
@@ -3167,6 +3168,8 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
Daddu(sp, sp, size);
}
+void LiftoffAssembler::MaybeOSR() {}
+
void LiftoffStackSlots::Construct(int param_slots) {
DCHECK_LT(0, slots_.size());
SortInPushOrder();
diff --git a/deps/v8/src/wasm/baseline/ppc/OWNERS b/deps/v8/src/wasm/baseline/ppc/OWNERS
deleted file mode 100644
index 02c2cd757c..0000000000
--- a/deps/v8/src/wasm/baseline/ppc/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-junyan@redhat.com
-joransiu@ca.ibm.com
-midawson@redhat.com
-mfarazma@redhat.com
-vasili.skurydzin@ibm.com
diff --git a/deps/v8/src/wasm/baseline/ppc/liftoff-assembler-ppc.h b/deps/v8/src/wasm/baseline/ppc/liftoff-assembler-ppc.h
index bedee1a939..10d574301e 100644
--- a/deps/v8/src/wasm/baseline/ppc/liftoff-assembler-ppc.h
+++ b/deps/v8/src/wasm/baseline/ppc/liftoff-assembler-ppc.h
@@ -45,6 +45,47 @@ inline MemOperand GetHalfStackSlot(int offset, RegPairHalf half) {
return MemOperand(fp, -kInstanceOffset - offset + half_offset);
}
+inline constexpr Condition ToCondition(LiftoffCondition liftoff_cond) {
+ switch (liftoff_cond) {
+ case kEqual:
+ return eq;
+ case kUnequal:
+ return ne;
+ case kSignedLessThan:
+ case kUnsignedLessThan:
+ return lt;
+ case kSignedLessEqual:
+ case kUnsignedLessEqual:
+ return le;
+ case kSignedGreaterEqual:
+ case kUnsignedGreaterEqual:
+ return ge;
+ case kSignedGreaterThan:
+ case kUnsignedGreaterThan:
+ return gt;
+ }
+}
+
+inline constexpr bool UseSignedOp(LiftoffCondition liftoff_cond) {
+ switch (liftoff_cond) {
+ case kEqual:
+ case kUnequal:
+ case kSignedLessThan:
+ case kSignedLessEqual:
+ case kSignedGreaterThan:
+ case kSignedGreaterEqual:
+ return true;
+ case kUnsignedLessThan:
+ case kUnsignedLessEqual:
+ case kUnsignedGreaterThan:
+ case kUnsignedGreaterEqual:
+ return false;
+ default:
+ UNREACHABLE();
+ }
+ return false;
+}
+
} // namespace liftoff
int LiftoffAssembler::PrepareStackFrame() {
@@ -87,7 +128,30 @@ bool LiftoffAssembler::NeedsAlignment(ValueKind kind) {
void LiftoffAssembler::LoadConstant(LiftoffRegister reg, WasmValue value,
RelocInfo::Mode rmode) {
- bailout(kUnsupportedArchitecture, "LoadConstant");
+ switch (value.type().kind()) {
+ case kI32:
+ mov(reg.gp(), Operand(value.to_i32(), rmode));
+ break;
+ case kI64:
+ mov(reg.gp(), Operand(value.to_i64(), rmode));
+ break;
+ case kF32: {
+ UseScratchRegisterScope temps(this);
+ Register scratch = temps.Acquire();
+ mov(scratch, Operand(value.to_f32_boxed().get_scalar()));
+ MovIntToFloat(reg.fp(), scratch);
+ break;
+ }
+ case kF64: {
+ UseScratchRegisterScope temps(this);
+ Register scratch = temps.Acquire();
+ mov(scratch, Operand(value.to_f32_boxed().get_scalar()));
+ MovInt64ToDouble(reg.fp(), scratch);
+ break;
+ }
+ default:
+ UNREACHABLE();
+ }
}
void LiftoffAssembler::LoadInstanceFromFrame(Register dst) {
@@ -109,6 +173,8 @@ void LiftoffAssembler::SpillInstance(Register instance) {
bailout(kUnsupportedArchitecture, "SpillInstance");
}
+void LiftoffAssembler::ResetOSRTarget() {}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
bailout(kUnsupportedArchitecture, "FillInstanceInto");
}
@@ -137,8 +203,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uintptr_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
+ uint32_t* protected_load_pc, bool is_load_mem) {
bailout(kUnsupportedArchitecture, "Load");
}
@@ -525,56 +590,123 @@ void LiftoffAssembler::emit_i64_signextend_i32(LiftoffRegister dst,
bailout(kUnsupportedArchitecture, "emit_i64_signextend_i32");
}
-void LiftoffAssembler::emit_jump(Label* label) {
- bailout(kUnsupportedArchitecture, "emit_jump");
-}
+void LiftoffAssembler::emit_jump(Label* label) { b(al, label); }
-void LiftoffAssembler::emit_jump(Register target) {
- bailout(kUnsupportedArchitecture, "emit_jump");
-}
+void LiftoffAssembler::emit_jump(Register target) { Jump(target); }
void LiftoffAssembler::emit_cond_jump(LiftoffCondition liftoff_cond,
Label* label, ValueKind kind,
Register lhs, Register rhs) {
- bailout(kUnsupportedArchitecture, "emit_cond_jump");
+ Condition cond = liftoff::ToCondition(liftoff_cond);
+ bool use_signed = liftoff::UseSignedOp(liftoff_cond);
+
+ if (rhs != no_reg) {
+ switch (kind) {
+ case kI32:
+ if (use_signed) {
+ cmpw(lhs, rhs);
+ } else {
+ cmplw(lhs, rhs);
+ }
+ break;
+ case kRef:
+ case kOptRef:
+ case kRtt:
+ case kRttWithDepth:
+ DCHECK(liftoff_cond == kEqual || liftoff_cond == kUnequal);
+ V8_FALLTHROUGH;
+ case kI64:
+ if (use_signed) {
+ cmp(lhs, rhs);
+ } else {
+ cmpl(lhs, rhs);
+ }
+ break;
+ default:
+ UNREACHABLE();
+ }
+ } else {
+ DCHECK_EQ(kind, kI32);
+ CHECK(use_signed);
+ cmpwi(lhs, Operand::Zero());
+ }
+
+ b(cond, label);
}
void LiftoffAssembler::emit_i32_cond_jumpi(LiftoffCondition liftoff_cond,
Label* label, Register lhs,
int32_t imm) {
- bailout(kUnsupportedArchitecture, "emit_i32_cond_jumpi");
+ Condition cond = liftoff::ToCondition(liftoff_cond);
+ Cmpwi(lhs, Operand(imm), r0);
+ b(cond, label);
}
void LiftoffAssembler::emit_i32_eqz(Register dst, Register src) {
- bailout(kUnsupportedArchitecture, "emit_i32_eqz");
+ Label done;
+ cmpwi(src, Operand(0));
+ mov(dst, Operand(1));
+ beq(&done);
+ mov(dst, Operand::Zero());
+ bind(&done);
}
void LiftoffAssembler::emit_i32_set_cond(LiftoffCondition liftoff_cond,
Register dst, Register lhs,
Register rhs) {
- bailout(kUnsupportedArchitecture, "emit_i32_set_cond");
+ bool use_signed = liftoff::UseSignedOp(liftoff_cond);
+ if (use_signed) {
+ cmpw(lhs, rhs);
+ } else {
+ cmplw(lhs, rhs);
+ }
+ Label done;
+ mov(dst, Operand(1));
+ b(liftoff::ToCondition(liftoff_cond), &done);
+ mov(dst, Operand::Zero());
+ bind(&done);
}
void LiftoffAssembler::emit_i64_eqz(Register dst, LiftoffRegister src) {
- bailout(kUnsupportedArchitecture, "emit_i64_eqz");
+ Label done;
+ cmpi(src.gp(), Operand(0));
+ mov(dst, Operand(1));
+ beq(&done);
+ mov(dst, Operand::Zero());
+ bind(&done);
}
void LiftoffAssembler::emit_i64_set_cond(LiftoffCondition liftoff_cond,
Register dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
- bailout(kUnsupportedArchitecture, "emit_i64_set_cond");
+ bool use_signed = liftoff::UseSignedOp(liftoff_cond);
+ if (use_signed) {
+ cmp(lhs.gp(), rhs.gp());
+ } else {
+ cmpl(lhs.gp(), rhs.gp());
+ }
+ Label done;
+ mov(dst, Operand(1));
+ b(liftoff::ToCondition(liftoff_cond), &done);
+ mov(dst, Operand::Zero());
+ bind(&done);
}
void LiftoffAssembler::emit_f32_set_cond(LiftoffCondition liftoff_cond,
Register dst, DoubleRegister lhs,
DoubleRegister rhs) {
- bailout(kUnsupportedArchitecture, "emit_f32_set_cond");
+ fcmpu(lhs, rhs);
+ Label done;
+ mov(dst, Operand(1));
+ b(liftoff::ToCondition(liftoff_cond), &done);
+ mov(dst, Operand::Zero());
+ bind(&done);
}
void LiftoffAssembler::emit_f64_set_cond(LiftoffCondition liftoff_cond,
Register dst, DoubleRegister lhs,
DoubleRegister rhs) {
- bailout(kUnsupportedArchitecture, "emit_f64_set_cond");
+ emit_f32_set_cond(liftoff_cond, dst, lhs, rhs);
}
bool LiftoffAssembler::emit_select(LiftoffRegister dst, Register condition,
@@ -1802,6 +1934,8 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
bailout(kUnsupportedArchitecture, "DeallocateStackSlot");
}
+void LiftoffAssembler::MaybeOSR() {}
+
void LiftoffStackSlots::Construct(int param_slots) {
asm_->bailout(kUnsupportedArchitecture, "LiftoffStackSlots::Construct");
}
diff --git a/deps/v8/src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h b/deps/v8/src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h
index bb6c3bcad8..3f549a3df6 100644
--- a/deps/v8/src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h
+++ b/deps/v8/src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h
@@ -325,9 +325,9 @@ void LiftoffAssembler::PatchPrepareStackFrame(int offset) {
patching_assembler.Add64(sp, sp, Operand(-frame_size));
}
-void LiftoffAssembler::FinishCode() {}
+void LiftoffAssembler::FinishCode() { ForceConstantPoolEmissionWithoutJump(); }
-void LiftoffAssembler::AbortCompilation() {}
+void LiftoffAssembler::AbortCompilation() { AbortedCodeGeneration(); }
// static
constexpr int LiftoffAssembler::StaticStackFrameSize() {
@@ -382,12 +382,19 @@ void LiftoffAssembler::LoadInstanceFromFrame(Register dst) {
void LiftoffAssembler::LoadFromInstance(Register dst, Register instance,
int offset, int size) {
DCHECK_LE(0, offset);
- DCHECK(size == 4 || size == 8);
MemOperand src{instance, offset};
- if (size == 4) {
- Lw(dst, src);
- } else {
- Ld(dst, src);
+ switch (size) {
+ case 1:
+ Lb(dst, MemOperand(src));
+ break;
+ case 4:
+ Lw(dst, MemOperand(src));
+ break;
+ case 8:
+ Ld(dst, MemOperand(src));
+ break;
+ default:
+ UNIMPLEMENTED();
}
}
@@ -401,6 +408,8 @@ void LiftoffAssembler::SpillInstance(Register instance) {
Sd(instance, liftoff::GetInstanceOperand());
}
+void LiftoffAssembler::ResetOSRTarget() {}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
Ld(dst, liftoff::GetInstanceOperand());
}
@@ -414,6 +423,12 @@ void LiftoffAssembler::LoadTaggedPointer(Register dst, Register src_addr,
Ld(dst, src_op);
}
+void LiftoffAssembler::LoadFullPointer(Register dst, Register src_addr,
+ int32_t offset_imm) {
+ MemOperand src_op = liftoff::GetMemOp(this, src_addr, no_reg, offset_imm);
+ Ld(dst, src_op);
+}
+
void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
Register offset_reg,
int32_t offset_imm,
@@ -425,7 +440,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
MemOperand dst_op = liftoff::GetMemOp(this, dst_addr, offset_reg, offset_imm);
Sd(src.gp(), dst_op);
- if (skip_write_barrier) return;
+ if (skip_write_barrier || FLAG_disable_write_barriers) return;
Label write_barrier;
Label exit;
@@ -437,17 +452,16 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
JumpIfSmi(src.gp(), &exit);
CheckPageFlag(src.gp(), scratch,
MemoryChunk::kPointersToHereAreInterestingMask, eq, &exit);
- Add64(scratch, dst_addr, offset_imm);
- CallRecordWriteStub(dst_addr, scratch, EMIT_REMEMBERED_SET, kSaveFPRegs,
- wasm::WasmCode::kRecordWrite);
+ Add64(scratch, dst_op.rm(), dst_op.offset());
+ CallRecordWriteStub(dst_addr, scratch, RememberedSetAction::kEmit,
+ SaveFPRegsMode::kSave, wasm::WasmCode::kRecordWrite);
bind(&exit);
}
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uintptr_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
+ uint32_t* protected_load_pc, bool is_load_mem) {
MemOperand src_op = liftoff::GetMemOp(this, src_addr, offset_reg, offset_imm);
if (protected_load_pc) *protected_load_pc = pc_offset();
@@ -544,60 +558,297 @@ void LiftoffAssembler::Store(Register dst_addr, Register offset_reg,
}
}
+namespace liftoff {
+#define __ lasm->
+
+inline Register CalculateActualAddress(LiftoffAssembler* lasm,
+ Register addr_reg, Register offset_reg,
+ uintptr_t offset_imm,
+ Register result_reg) {
+ DCHECK_NE(offset_reg, no_reg);
+ DCHECK_NE(addr_reg, no_reg);
+ __ Add64(result_reg, addr_reg, Operand(offset_reg));
+ if (offset_imm != 0) {
+ __ Add64(result_reg, result_reg, Operand(offset_imm));
+ }
+ return result_reg;
+}
+
+enum class Binop { kAdd, kSub, kAnd, kOr, kXor, kExchange };
+
+inline void AtomicBinop(LiftoffAssembler* lasm, Register dst_addr,
+ Register offset_reg, uintptr_t offset_imm,
+ LiftoffRegister value, LiftoffRegister result,
+ StoreType type, Binop op) {
+ LiftoffRegList pinned =
+ LiftoffRegList::ForRegs(dst_addr, offset_reg, value, result);
+ Register store_result = pinned.set(__ GetUnusedRegister(kGpReg, pinned)).gp();
+
+ // Make sure that {result} is unique.
+ Register result_reg = result.gp();
+ if (result_reg == value.gp() || result_reg == dst_addr ||
+ result_reg == offset_reg) {
+ result_reg = __ GetUnusedRegister(kGpReg, pinned).gp();
+ }
+
+ UseScratchRegisterScope temps(lasm);
+ Register actual_addr = liftoff::CalculateActualAddress(
+ lasm, dst_addr, offset_reg, offset_imm, temps.Acquire());
+
+ // Allocate an additional {temp} register to hold the result that should be
+ // stored to memory. Note that {temp} and {store_result} are not allowed to be
+ // the same register.
+ Register temp = temps.Acquire();
+
+ Label retry;
+ __ bind(&retry);
+ switch (type.value()) {
+ case StoreType::kI64Store8:
+ case StoreType::kI32Store8:
+ __ lbu(result_reg, actual_addr, 0);
+ __ sync();
+ break;
+ case StoreType::kI64Store16:
+ case StoreType::kI32Store16:
+ __ lhu(result_reg, actual_addr, 0);
+ __ sync();
+ break;
+ case StoreType::kI64Store32:
+ case StoreType::kI32Store:
+ __ lr_w(true, false, result_reg, actual_addr);
+ break;
+ case StoreType::kI64Store:
+ __ lr_d(true, false, result_reg, actual_addr);
+ break;
+ default:
+ UNREACHABLE();
+ }
+
+ switch (op) {
+ case Binop::kAdd:
+ __ add(temp, result_reg, value.gp());
+ break;
+ case Binop::kSub:
+ __ sub(temp, result_reg, value.gp());
+ break;
+ case Binop::kAnd:
+ __ and_(temp, result_reg, value.gp());
+ break;
+ case Binop::kOr:
+ __ or_(temp, result_reg, value.gp());
+ break;
+ case Binop::kXor:
+ __ xor_(temp, result_reg, value.gp());
+ break;
+ case Binop::kExchange:
+ __ mv(temp, value.gp());
+ break;
+ }
+ switch (type.value()) {
+ case StoreType::kI64Store8:
+ case StoreType::kI32Store8:
+ __ sync();
+ __ sb(temp, actual_addr, 0);
+ __ sync();
+ __ mv(store_result, zero_reg);
+ break;
+ case StoreType::kI64Store16:
+ case StoreType::kI32Store16:
+ __ sync();
+ __ sh(temp, actual_addr, 0);
+ __ sync();
+ __ mv(store_result, zero_reg);
+ break;
+ case StoreType::kI64Store32:
+ case StoreType::kI32Store:
+ __ sc_w(false, true, store_result, actual_addr, temp);
+ break;
+ case StoreType::kI64Store:
+ __ sc_w(false, true, store_result, actual_addr, temp);
+ break;
+ default:
+ UNREACHABLE();
+ }
+
+ __ bnez(store_result, &retry);
+ if (result_reg != result.gp()) {
+ __ mv(result.gp(), result_reg);
+ }
+}
+
+#undef __
+} // namespace liftoff
+
void LiftoffAssembler::AtomicLoad(LiftoffRegister dst, Register src_addr,
Register offset_reg, uintptr_t offset_imm,
LoadType type, LiftoffRegList pinned) {
- bailout(kAtomics, "AtomicLoad");
+ UseScratchRegisterScope temps(this);
+ Register src_reg = liftoff::CalculateActualAddress(
+ this, src_addr, offset_reg, offset_imm, temps.Acquire());
+ switch (type.value()) {
+ case LoadType::kI32Load8U:
+ case LoadType::kI64Load8U:
+ lbu(dst.gp(), src_reg, 0);
+ sync();
+ return;
+ case LoadType::kI32Load16U:
+ case LoadType::kI64Load16U:
+ lhu(dst.gp(), src_reg, 0);
+ sync();
+ return;
+ case LoadType::kI32Load:
+ lr_w(true, true, dst.gp(), src_reg);
+ return;
+ case LoadType::kI64Load32U:
+ lr_w(true, true, dst.gp(), src_reg);
+ slli(dst.gp(), dst.gp(), 32);
+ srli(dst.gp(), dst.gp(), 32);
+ return;
+ case LoadType::kI64Load:
+ lr_d(true, true, dst.gp(), src_reg);
+ return;
+ default:
+ UNREACHABLE();
+ }
}
void LiftoffAssembler::AtomicStore(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister src,
StoreType type, LiftoffRegList pinned) {
- bailout(kAtomics, "AtomicStore");
+ UseScratchRegisterScope temps(this);
+ Register dst_reg = liftoff::CalculateActualAddress(
+ this, dst_addr, offset_reg, offset_imm, temps.Acquire());
+ switch (type.value()) {
+ case StoreType::kI64Store8:
+ case StoreType::kI32Store8:
+ sync();
+ sb(src.gp(), dst_reg, 0);
+ sync();
+ return;
+ case StoreType::kI64Store16:
+ case StoreType::kI32Store16:
+ sync();
+ sh(src.gp(), dst_reg, 0);
+ sync();
+ return;
+ case StoreType::kI64Store32:
+ case StoreType::kI32Store:
+ sc_w(true, true, zero_reg, dst_reg, src.gp());
+ return;
+ case StoreType::kI64Store:
+ sc_d(true, true, zero_reg, dst_reg, src.gp());
+ return;
+ default:
+ UNREACHABLE();
+ }
}
void LiftoffAssembler::AtomicAdd(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicAdd");
+ liftoff::AtomicBinop(this, dst_addr, offset_reg, offset_imm, value, result,
+ type, liftoff::Binop::kAdd);
}
void LiftoffAssembler::AtomicSub(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicSub");
+ liftoff::AtomicBinop(this, dst_addr, offset_reg, offset_imm, value, result,
+ type, liftoff::Binop::kSub);
}
void LiftoffAssembler::AtomicAnd(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicAnd");
+ liftoff::AtomicBinop(this, dst_addr, offset_reg, offset_imm, value, result,
+ type, liftoff::Binop::kAnd);
}
void LiftoffAssembler::AtomicOr(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicOr");
+ liftoff::AtomicBinop(this, dst_addr, offset_reg, offset_imm, value, result,
+ type, liftoff::Binop::kOr);
}
void LiftoffAssembler::AtomicXor(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicXor");
+ liftoff::AtomicBinop(this, dst_addr, offset_reg, offset_imm, value, result,
+ type, liftoff::Binop::kXor);
}
void LiftoffAssembler::AtomicExchange(Register dst_addr, Register offset_reg,
uintptr_t offset_imm,
LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicExchange");
+ liftoff::AtomicBinop(this, dst_addr, offset_reg, offset_imm, value, result,
+ type, liftoff::Binop::kExchange);
}
void LiftoffAssembler::AtomicCompareExchange(
Register dst_addr, Register offset_reg, uintptr_t offset_imm,
LiftoffRegister expected, LiftoffRegister new_value, LiftoffRegister result,
StoreType type) {
- bailout(kAtomics, "AtomicCompareExchange");
+ LiftoffRegList pinned =
+ LiftoffRegList::ForRegs(dst_addr, offset_reg, expected, new_value);
+
+ Register result_reg = result.gp();
+ if (pinned.has(result)) {
+ result_reg = GetUnusedRegister(kGpReg, pinned).gp();
+ }
+
+ UseScratchRegisterScope temps(this);
+
+ Register actual_addr = liftoff::CalculateActualAddress(
+ this, dst_addr, offset_reg, offset_imm, temps.Acquire());
+
+ Register store_result = temps.Acquire();
+
+ Label retry;
+ Label done;
+ bind(&retry);
+ switch (type.value()) {
+ case StoreType::kI64Store8:
+ case StoreType::kI32Store8:
+ lbu(result_reg, actual_addr, 0);
+ sync();
+ Branch(&done, ne, result.gp(), Operand(expected.gp()));
+ sync();
+ sb(new_value.gp(), actual_addr, 0);
+ sync();
+ mv(store_result, zero_reg);
+ break;
+ case StoreType::kI64Store16:
+ case StoreType::kI32Store16:
+ lhu(result_reg, actual_addr, 0);
+ sync();
+ Branch(&done, ne, result.gp(), Operand(expected.gp()));
+ sync();
+ sh(new_value.gp(), actual_addr, 0);
+ sync();
+ mv(store_result, zero_reg);
+ break;
+ case StoreType::kI64Store32:
+ case StoreType::kI32Store:
+ lr_w(true, true, result_reg, actual_addr);
+ Branch(&done, ne, result.gp(), Operand(expected.gp()));
+ sc_w(true, true, store_result, new_value.gp(), actual_addr);
+ break;
+ case StoreType::kI64Store:
+ lr_d(true, true, result_reg, actual_addr);
+ Branch(&done, ne, result.gp(), Operand(expected.gp()));
+ sc_d(true, true, store_result, new_value.gp(), actual_addr);
+ break;
+ default:
+ UNREACHABLE();
+ }
+ bnez(store_result, &retry);
+ bind(&done);
+
+ if (result_reg != result.gp()) {
+ mv(result.gp(), result_reg);
+ }
}
void LiftoffAssembler::AtomicFence() { sync(); }
@@ -2413,7 +2664,7 @@ void LiftoffAssembler::CallTrapCallbackForTesting() {
}
void LiftoffAssembler::AssertUnreachable(AbortReason reason) {
- if (emit_debug_code()) Abort(reason);
+ if (FLAG_debug_code) Abort(reason);
}
void LiftoffAssembler::PushRegisters(LiftoffRegList regs) {
@@ -2543,8 +2794,8 @@ void LiftoffAssembler::CallIndirect(const ValueKindSig* sig,
compiler::CallDescriptor* call_descriptor,
Register target) {
if (target == no_reg) {
- pop(kScratchReg);
- Call(kScratchReg);
+ pop(t6);
+ Call(t6);
} else {
Call(target);
}
@@ -2552,8 +2803,8 @@ void LiftoffAssembler::CallIndirect(const ValueKindSig* sig,
void LiftoffAssembler::TailCallIndirect(Register target) {
if (target == no_reg) {
- Pop(kScratchReg);
- Jump(kScratchReg);
+ Pop(t6);
+ Jump(t6);
} else {
Jump(target);
}
@@ -2574,6 +2825,7 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
Add64(sp, sp, Operand(size));
}
+void LiftoffAssembler::MaybeOSR() {}
void LiftoffStackSlots::Construct(int param_slots) {
DCHECK_LT(0, slots_.size());
diff --git a/deps/v8/src/wasm/baseline/s390/liftoff-assembler-s390.h b/deps/v8/src/wasm/baseline/s390/liftoff-assembler-s390.h
index 04f30939fd..4c230ed305 100644
--- a/deps/v8/src/wasm/baseline/s390/liftoff-assembler-s390.h
+++ b/deps/v8/src/wasm/baseline/s390/liftoff-assembler-s390.h
@@ -224,6 +224,8 @@ void LiftoffAssembler::SpillInstance(Register instance) {
StoreU64(instance, liftoff::GetInstanceOperand());
}
+void LiftoffAssembler::ResetOSRTarget() {}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
LoadU64(dst, liftoff::GetInstanceOperand());
}
@@ -254,7 +256,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
MemOperand(dst_addr, offset_reg == no_reg ? r0 : offset_reg, offset_imm);
StoreTaggedField(src.gp(), dst_op);
- if (skip_write_barrier) return;
+ if (skip_write_barrier || FLAG_disable_write_barriers) return;
Label write_barrier;
Label exit;
@@ -269,25 +271,19 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
CheckPageFlag(src.gp(), r1, MemoryChunk::kPointersToHereAreInterestingMask,
eq, &exit);
lay(r1, dst_op);
- CallRecordWriteStub(dst_addr, r1, EMIT_REMEMBERED_SET, kSaveFPRegs,
- wasm::WasmCode::kRecordWrite);
+ CallRecordWriteStub(dst_addr, r1, RememberedSetAction::kEmit,
+ SaveFPRegsMode::kSave, wasm::WasmCode::kRecordWrite);
bind(&exit);
}
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uintptr_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
+ uint32_t* protected_load_pc, bool is_load_mem) {
UseScratchRegisterScope temps(this);
if (!is_int20(offset_imm)) {
mov(ip, Operand(offset_imm));
if (offset_reg != no_reg) {
- if (!i64_offset) {
- // Clear the upper 32 bits of the 64 bit offset register.
- llgfr(r0, offset_reg);
- offset_reg = r0;
- }
AddS64(ip, offset_reg);
}
offset_reg = ip;
@@ -671,19 +667,253 @@ void LiftoffAssembler::AtomicSub(Register dst_addr, Register offset_reg,
void LiftoffAssembler::AtomicAnd(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicAnd");
+ Register tmp1 =
+ GetUnusedRegister(
+ kGpReg, LiftoffRegList::ForRegs(dst_addr, offset_reg, value, result))
+ .gp();
+ Register tmp2 =
+ GetUnusedRegister(kGpReg, LiftoffRegList::ForRegs(dst_addr, offset_reg,
+ value, result, tmp1))
+ .gp();
+
+ lay(ip,
+ MemOperand(dst_addr, offset_reg == no_reg ? r0 : offset_reg, offset_imm));
+
+ switch (type.value()) {
+ case StoreType::kI32Store8:
+ case StoreType::kI64Store8: {
+ Label do_again;
+ bind(&do_again);
+ LoadU8(tmp1, MemOperand(ip));
+ AndP(tmp2, tmp1, value.gp());
+ AtomicCmpExchangeU8(ip, result.gp(), tmp1, tmp2, r0, r1);
+ b(Condition(4), &do_again);
+ LoadU8(result.gp(), result.gp());
+ break;
+ }
+ case StoreType::kI32Store16:
+ case StoreType::kI64Store16: {
+ Label do_again;
+ bind(&do_again);
+ LoadU16(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvr(tmp2, tmp1);
+ ShiftRightU32(tmp2, tmp2, Operand(16));
+ AndP(tmp2, tmp2, value.gp());
+ lrvr(tmp2, tmp2);
+ ShiftRightU32(tmp2, tmp2, Operand(16));
+#else
+ AndP(tmp2, tmp1, value.gp());
+#endif
+ AtomicCmpExchangeU16(ip, result.gp(), tmp1, tmp2, r0, r1);
+ b(Condition(4), &do_again);
+ LoadU16(result.gp(), result.gp());
+ break;
+ }
+ case StoreType::kI32Store:
+ case StoreType::kI64Store32: {
+ Label do_again;
+ bind(&do_again);
+ LoadU32(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvr(tmp2, tmp1);
+ AndP(tmp2, tmp2, value.gp());
+ lrvr(tmp2, tmp2);
+#else
+ AndP(tmp2, tmp1, value.gp());
+#endif
+ CmpAndSwap(tmp1, tmp2, MemOperand(ip));
+ b(Condition(4), &do_again);
+ LoadU32(result.gp(), tmp1);
+ break;
+ }
+ case StoreType::kI64Store: {
+ Label do_again;
+ bind(&do_again);
+ LoadU64(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvgr(tmp2, tmp1);
+ AndP(tmp2, tmp2, value.gp());
+ lrvgr(tmp2, tmp2);
+#else
+ AndP(tmp2, tmp1, value.gp());
+#endif
+ CmpAndSwap64(tmp1, tmp2, MemOperand(ip));
+ b(Condition(4), &do_again);
+ mov(result.gp(), tmp1);
+ break;
+ }
+ default:
+ UNREACHABLE();
+ }
}
void LiftoffAssembler::AtomicOr(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicOr");
+ Register tmp1 =
+ GetUnusedRegister(
+ kGpReg, LiftoffRegList::ForRegs(dst_addr, offset_reg, value, result))
+ .gp();
+ Register tmp2 =
+ GetUnusedRegister(kGpReg, LiftoffRegList::ForRegs(dst_addr, offset_reg,
+ value, result, tmp1))
+ .gp();
+
+ lay(ip,
+ MemOperand(dst_addr, offset_reg == no_reg ? r0 : offset_reg, offset_imm));
+
+ switch (type.value()) {
+ case StoreType::kI32Store8:
+ case StoreType::kI64Store8: {
+ Label do_again;
+ bind(&do_again);
+ LoadU8(tmp1, MemOperand(ip));
+ OrP(tmp2, tmp1, value.gp());
+ AtomicCmpExchangeU8(ip, result.gp(), tmp1, tmp2, r0, r1);
+ b(Condition(4), &do_again);
+ LoadU8(result.gp(), result.gp());
+ break;
+ }
+ case StoreType::kI32Store16:
+ case StoreType::kI64Store16: {
+ Label do_again;
+ bind(&do_again);
+ LoadU16(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvr(tmp2, tmp1);
+ ShiftRightU32(tmp2, tmp2, Operand(16));
+ OrP(tmp2, tmp2, value.gp());
+ lrvr(tmp2, tmp2);
+ ShiftRightU32(tmp2, tmp2, Operand(16));
+#else
+ OrP(tmp2, tmp1, value.gp());
+#endif
+ AtomicCmpExchangeU16(ip, result.gp(), tmp1, tmp2, r0, r1);
+ b(Condition(4), &do_again);
+ LoadU16(result.gp(), result.gp());
+ break;
+ }
+ case StoreType::kI32Store:
+ case StoreType::kI64Store32: {
+ Label do_again;
+ bind(&do_again);
+ LoadU32(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvr(tmp2, tmp1);
+ OrP(tmp2, tmp2, value.gp());
+ lrvr(tmp2, tmp2);
+#else
+ OrP(tmp2, tmp1, value.gp());
+#endif
+ CmpAndSwap(tmp1, tmp2, MemOperand(ip));
+ b(Condition(4), &do_again);
+ LoadU32(result.gp(), tmp1);
+ break;
+ }
+ case StoreType::kI64Store: {
+ Label do_again;
+ bind(&do_again);
+ LoadU64(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvgr(tmp2, tmp1);
+ OrP(tmp2, tmp2, value.gp());
+ lrvgr(tmp2, tmp2);
+#else
+ OrP(tmp2, tmp1, value.gp());
+#endif
+ CmpAndSwap64(tmp1, tmp2, MemOperand(ip));
+ b(Condition(4), &do_again);
+ mov(result.gp(), tmp1);
+ break;
+ }
+ default:
+ UNREACHABLE();
+ }
}
void LiftoffAssembler::AtomicXor(Register dst_addr, Register offset_reg,
uintptr_t offset_imm, LiftoffRegister value,
LiftoffRegister result, StoreType type) {
- bailout(kAtomics, "AtomicXor");
+ Register tmp1 =
+ GetUnusedRegister(
+ kGpReg, LiftoffRegList::ForRegs(dst_addr, offset_reg, value, result))
+ .gp();
+ Register tmp2 =
+ GetUnusedRegister(kGpReg, LiftoffRegList::ForRegs(dst_addr, offset_reg,
+ value, result, tmp1))
+ .gp();
+
+ lay(ip,
+ MemOperand(dst_addr, offset_reg == no_reg ? r0 : offset_reg, offset_imm));
+
+ switch (type.value()) {
+ case StoreType::kI32Store8:
+ case StoreType::kI64Store8: {
+ Label do_again;
+ bind(&do_again);
+ LoadU8(tmp1, MemOperand(ip));
+ XorP(tmp2, tmp1, value.gp());
+ AtomicCmpExchangeU8(ip, result.gp(), tmp1, tmp2, r0, r1);
+ b(Condition(4), &do_again);
+ LoadU8(result.gp(), result.gp());
+ break;
+ }
+ case StoreType::kI32Store16:
+ case StoreType::kI64Store16: {
+ Label do_again;
+ bind(&do_again);
+ LoadU16(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvr(tmp2, tmp1);
+ ShiftRightU32(tmp2, tmp2, Operand(16));
+ XorP(tmp2, tmp2, value.gp());
+ lrvr(tmp2, tmp2);
+ ShiftRightU32(tmp2, tmp2, Operand(16));
+#else
+ XorP(tmp2, tmp1, value.gp());
+#endif
+ AtomicCmpExchangeU16(ip, result.gp(), tmp1, tmp2, r0, r1);
+ b(Condition(4), &do_again);
+ LoadU16(result.gp(), result.gp());
+ break;
+ }
+ case StoreType::kI32Store:
+ case StoreType::kI64Store32: {
+ Label do_again;
+ bind(&do_again);
+ LoadU32(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvr(tmp2, tmp1);
+ XorP(tmp2, tmp2, value.gp());
+ lrvr(tmp2, tmp2);
+#else
+ XorP(tmp2, tmp1, value.gp());
+#endif
+ CmpAndSwap(tmp1, tmp2, MemOperand(ip));
+ b(Condition(4), &do_again);
+ LoadU32(result.gp(), tmp1);
+ break;
+ }
+ case StoreType::kI64Store: {
+ Label do_again;
+ bind(&do_again);
+ LoadU64(tmp1, MemOperand(ip));
+#ifdef V8_TARGET_BIG_ENDIAN
+ lrvgr(tmp2, tmp1);
+ XorP(tmp2, tmp2, value.gp());
+ lrvgr(tmp2, tmp2);
+#else
+ XorP(tmp2, tmp1, value.gp());
+#endif
+ CmpAndSwap64(tmp1, tmp2, MemOperand(ip));
+ b(Condition(4), &do_again);
+ mov(result.gp(), tmp1);
+ break;
+ }
+ default:
+ UNREACHABLE();
+ }
}
void LiftoffAssembler::AtomicExchange(Register dst_addr, Register offset_reg,
@@ -1168,9 +1398,19 @@ void LiftoffAssembler::FillStackSlotsWithZero(int start, int size) {
LFR_TO_REG, LFR_TO_REG, USE, , void) \
V(i64_ctz, CountTrailingZerosU64, LiftoffRegister, LiftoffRegister, \
LFR_TO_REG, LFR_TO_REG, USE, , void) \
+ V(f32_ceil, CeilF32, DoubleRegister, DoubleRegister, , , USE, true, bool) \
+ V(f32_floor, FloorF32, DoubleRegister, DoubleRegister, , , USE, true, bool) \
+ V(f32_trunc, TruncF32, DoubleRegister, DoubleRegister, , , USE, true, bool) \
+ V(f32_nearest_int, NearestIntF32, DoubleRegister, DoubleRegister, , , USE, \
+ true, bool) \
V(f32_abs, lpebr, DoubleRegister, DoubleRegister, , , USE, , void) \
V(f32_neg, lcebr, DoubleRegister, DoubleRegister, , , USE, , void) \
V(f32_sqrt, sqebr, DoubleRegister, DoubleRegister, , , USE, , void) \
+ V(f64_ceil, CeilF64, DoubleRegister, DoubleRegister, , , USE, true, bool) \
+ V(f64_floor, FloorF64, DoubleRegister, DoubleRegister, , , USE, true, bool) \
+ V(f64_trunc, TruncF64, DoubleRegister, DoubleRegister, , , USE, true, bool) \
+ V(f64_nearest_int, NearestIntF64, DoubleRegister, DoubleRegister, , , USE, \
+ true, bool) \
V(f64_abs, lpdbr, DoubleRegister, DoubleRegister, , , USE, , void) \
V(f64_neg, lcdbr, DoubleRegister, DoubleRegister, , , USE, , void) \
V(f64_sqrt, sqdbr, DoubleRegister, DoubleRegister, , , USE, , void)
@@ -1191,6 +1431,14 @@ UNOP_LIST(EMIT_UNOP_FUNCTION)
// V(name, instr, dtype, stype1, stype2, dcast, scast1, scast2, rcast,
// return_val, return_type)
#define BINOP_LIST(V) \
+ V(f32_min, FloatMin, DoubleRegister, DoubleRegister, DoubleRegister, , , , \
+ USE, , void) \
+ V(f32_max, FloatMax, DoubleRegister, DoubleRegister, DoubleRegister, , , , \
+ USE, , void) \
+ V(f64_min, DoubleMin, DoubleRegister, DoubleRegister, DoubleRegister, , , , \
+ USE, , void) \
+ V(f64_max, DoubleMax, DoubleRegister, DoubleRegister, DoubleRegister, , , , \
+ USE, , void) \
V(f64_add, AddF64, DoubleRegister, DoubleRegister, DoubleRegister, , , , \
USE, , void) \
V(f64_sub, SubF64, DoubleRegister, DoubleRegister, DoubleRegister, , , , \
@@ -1285,84 +1533,6 @@ BINOP_LIST(EMIT_BINOP_FUNCTION)
#undef REGISTER_AND_WITH_1F
#undef LFR_TO_REG
-bool LiftoffAssembler::emit_f32_ceil(DoubleRegister dst, DoubleRegister src) {
- fiebra(ROUND_TOWARD_POS_INF, dst, src);
- return true;
-}
-
-bool LiftoffAssembler::emit_f32_floor(DoubleRegister dst, DoubleRegister src) {
- fiebra(ROUND_TOWARD_NEG_INF, dst, src);
- return true;
-}
-
-bool LiftoffAssembler::emit_f32_trunc(DoubleRegister dst, DoubleRegister src) {
- fiebra(ROUND_TOWARD_0, dst, src);
- return true;
-}
-
-bool LiftoffAssembler::emit_f32_nearest_int(DoubleRegister dst,
- DoubleRegister src) {
- fiebra(ROUND_TO_NEAREST_TO_EVEN, dst, src);
- return true;
-}
-
-void LiftoffAssembler::emit_f64_min(DoubleRegister dst, DoubleRegister lhs,
- DoubleRegister rhs) {
- if (CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1)) {
- vfmin(dst, lhs, rhs, Condition(1), Condition(8), Condition(3));
- return;
- }
- DoubleMin(dst, lhs, rhs);
-}
-
-void LiftoffAssembler::emit_f32_min(DoubleRegister dst, DoubleRegister lhs,
- DoubleRegister rhs) {
- if (CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1)) {
- vfmin(dst, lhs, rhs, Condition(1), Condition(8), Condition(2));
- return;
- }
- FloatMin(dst, lhs, rhs);
-}
-
-bool LiftoffAssembler::emit_f64_ceil(DoubleRegister dst, DoubleRegister src) {
- fidbra(ROUND_TOWARD_POS_INF, dst, src);
- return true;
-}
-
-bool LiftoffAssembler::emit_f64_floor(DoubleRegister dst, DoubleRegister src) {
- fidbra(ROUND_TOWARD_NEG_INF, dst, src);
- return true;
-}
-
-bool LiftoffAssembler::emit_f64_trunc(DoubleRegister dst, DoubleRegister src) {
- fidbra(ROUND_TOWARD_0, dst, src);
- return true;
-}
-
-bool LiftoffAssembler::emit_f64_nearest_int(DoubleRegister dst,
- DoubleRegister src) {
- fidbra(ROUND_TO_NEAREST_TO_EVEN, dst, src);
- return true;
-}
-
-void LiftoffAssembler::emit_f64_max(DoubleRegister dst, DoubleRegister lhs,
- DoubleRegister rhs) {
- if (CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1)) {
- vfmax(dst, lhs, rhs, Condition(1), Condition(8), Condition(3));
- return;
- }
- DoubleMax(dst, lhs, rhs);
-}
-
-void LiftoffAssembler::emit_f32_max(DoubleRegister dst, DoubleRegister lhs,
- DoubleRegister rhs) {
- if (CpuFeatures::IsSupported(VECTOR_ENHANCE_FACILITY_1)) {
- vfmax(dst, lhs, rhs, Condition(1), Condition(8), Condition(2));
- return;
- }
- FloatMax(dst, lhs, rhs);
-}
-
void LiftoffAssembler::emit_i32_divs(Register dst, Register lhs, Register rhs,
Label* trap_div_by_zero,
Label* trap_div_unrepresentable) {
@@ -1896,7 +2066,9 @@ bool LiftoffAssembler::emit_select(LiftoffRegister dst, Register condition,
void LiftoffAssembler::emit_smi_check(Register obj, Label* target,
SmiCheckMode mode) {
- bailout(kUnsupportedArchitecture, "emit_smi_check");
+ TestIfSmi(obj);
+ Condition condition = mode == kJumpOnSmi ? eq : ne;
+ b(condition, target); // branch if SMI
}
void LiftoffAssembler::LoadTransform(LiftoffRegister dst, Register src_addr,
@@ -3213,6 +3385,8 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
lay(sp, MemOperand(sp, size));
}
+void LiftoffAssembler::MaybeOSR() {}
+
void LiftoffStackSlots::Construct(int param_slots) {
DCHECK_LT(0, slots_.size());
SortInPushOrder();
diff --git a/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h b/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h
index 68619a9f1b..3da9656b42 100644
--- a/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h
+++ b/deps/v8/src/wasm/baseline/x64/liftoff-assembler-x64.h
@@ -70,6 +70,8 @@ inline Operand GetStackSlot(int offset) { return Operand(rbp, -offset); }
// TODO(clemensb): Make this a constexpr variable once Operand is constexpr.
inline Operand GetInstanceOperand() { return GetStackSlot(kInstanceOffset); }
+inline Operand GetOSRTargetSlot() { return GetStackSlot(kOSRTargetOffset); }
+
inline Operand GetMemOp(LiftoffAssembler* assm, Register addr, Register offset,
uintptr_t offset_imm) {
if (is_uint31(offset_imm)) {
@@ -79,7 +81,7 @@ inline Operand GetMemOp(LiftoffAssembler* assm, Register addr, Register offset,
}
// Offset immediate does not fit in 31 bits.
Register scratch = kScratchRegister;
- assm->Set(scratch, offset_imm);
+ assm->TurboAssembler::Move(scratch, offset_imm);
if (offset != no_reg) assm->addq(scratch, offset);
return Operand(addr, scratch, times_1, 0);
}
@@ -249,7 +251,7 @@ void LiftoffAssembler::AbortCompilation() {}
// static
constexpr int LiftoffAssembler::StaticStackFrameSize() {
- return liftoff::kInstanceOffset;
+ return kOSRTargetOffset;
}
int LiftoffAssembler::SlotSizeForType(ValueKind kind) {
@@ -272,7 +274,7 @@ void LiftoffAssembler::LoadConstant(LiftoffRegister reg, WasmValue value,
break;
case kI64:
if (RelocInfo::IsNone(rmode)) {
- TurboAssembler::Set(reg.gp(), value.to_i64());
+ TurboAssembler::Move(reg.gp(), value.to_i64());
} else {
movq(reg.gp(), Immediate64(value.to_i64(), rmode));
}
@@ -322,6 +324,10 @@ void LiftoffAssembler::SpillInstance(Register instance) {
movq(liftoff::GetInstanceOperand(), instance);
}
+void LiftoffAssembler::ResetOSRTarget() {
+ movq(liftoff::GetOSRTargetSlot(), Immediate(0));
+}
+
void LiftoffAssembler::FillInstanceInto(Register dst) {
movq(dst, liftoff::GetInstanceOperand());
}
@@ -331,7 +337,7 @@ void LiftoffAssembler::LoadTaggedPointer(Register dst, Register src_addr,
int32_t offset_imm,
LiftoffRegList pinned) {
DCHECK_GE(offset_imm, 0);
- if (emit_debug_code() && offset_reg != no_reg) {
+ if (FLAG_debug_code && offset_reg != no_reg) {
AssertZeroExtended(offset_reg);
}
Operand src_op = liftoff::GetMemOp(this, src_addr, offset_reg,
@@ -357,7 +363,7 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
static_cast<uint32_t>(offset_imm));
StoreTaggedField(dst_op, src.gp());
- if (skip_write_barrier) return;
+ if (skip_write_barrier || FLAG_disable_write_barriers) return;
Register scratch = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp();
Label write_barrier;
@@ -375,8 +381,8 @@ void LiftoffAssembler::StoreTaggedPointer(Register dst_addr,
MemoryChunk::kPointersToHereAreInterestingMask, zero, &exit,
Label::kNear);
leaq(scratch, dst_op);
- CallRecordWriteStub(dst_addr, scratch, EMIT_REMEMBERED_SET, kSaveFPRegs,
- wasm::WasmCode::kRecordWrite);
+ CallRecordWriteStub(dst_addr, scratch, RememberedSetAction::kEmit,
+ SaveFPRegsMode::kSave, wasm::WasmCode::kRecordWrite);
bind(&exit);
}
@@ -389,11 +395,7 @@ void LiftoffAssembler::AtomicLoad(LiftoffRegister dst, Register src_addr,
void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr,
Register offset_reg, uintptr_t offset_imm,
LoadType type, LiftoffRegList pinned,
- uint32_t* protected_load_pc, bool is_load_mem,
- bool i64_offset) {
- if (offset_reg != no_reg && !i64_offset) {
- AssertZeroExtended(offset_reg);
- }
+ uint32_t* protected_load_pc, bool is_load_mem) {
Operand src_op = liftoff::GetMemOp(this, src_addr, offset_reg, offset_imm);
if (protected_load_pc) *protected_load_pc = pc_offset();
switch (type.value()) {
@@ -1257,7 +1259,7 @@ void LiftoffAssembler::emit_i64_add(LiftoffRegister dst, LiftoffRegister lhs,
void LiftoffAssembler::emit_i64_addi(LiftoffRegister dst, LiftoffRegister lhs,
int64_t imm) {
if (!is_int32(imm)) {
- TurboAssembler::Set(kScratchRegister, imm);
+ TurboAssembler::Move(kScratchRegister, imm);
if (lhs.gp() == dst.gp()) {
addq(dst.gp(), kScratchRegister);
} else {
@@ -2538,7 +2540,7 @@ void LiftoffAssembler::emit_i64x2_splat(LiftoffRegister dst,
void LiftoffAssembler::emit_f32x4_splat(LiftoffRegister dst,
LiftoffRegister src) {
- Shufps(dst.fp(), src.fp(), src.fp(), 0);
+ F32x4Splat(dst.fp(), src.fp());
}
void LiftoffAssembler::emit_f64x2_splat(LiftoffRegister dst,
@@ -2850,13 +2852,7 @@ void LiftoffAssembler::emit_s128_const(LiftoffRegister dst,
}
void LiftoffAssembler::emit_s128_not(LiftoffRegister dst, LiftoffRegister src) {
- if (dst.fp() != src.fp()) {
- Pcmpeqd(dst.fp(), dst.fp());
- Pxor(dst.fp(), src.fp());
- } else {
- Pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
- Pxor(dst.fp(), kScratchDoubleReg);
- }
+ S128Not(dst.fp(), src.fp(), kScratchDoubleReg);
}
void LiftoffAssembler::emit_s128_and(LiftoffRegister dst, LiftoffRegister lhs,
@@ -3433,15 +3429,7 @@ void LiftoffAssembler::emit_i32x4_extmul_high_i16x8_u(LiftoffRegister dst,
void LiftoffAssembler::emit_i64x2_neg(LiftoffRegister dst,
LiftoffRegister src) {
- DoubleRegister reg = dst.fp() == src.fp() ? kScratchDoubleReg : dst.fp();
- Pxor(reg, reg);
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vpsubq(dst.fp(), reg, src.fp());
- } else {
- psubq(reg, src.fp());
- if (dst.fp() != reg) movaps(dst.fp(), reg);
- }
+ I64x2Neg(dst.fp(), src.fp(), kScratchDoubleReg);
}
void LiftoffAssembler::emit_i64x2_alltrue(LiftoffRegister dst,
@@ -3508,13 +3496,13 @@ void LiftoffAssembler::emit_i64x2_mul(LiftoffRegister dst, LiftoffRegister lhs,
Movaps(tmp1.fp(), lhs.fp());
Movaps(tmp2.fp(), rhs.fp());
// Multiply high dword of each qword of left with right.
- Psrlq(tmp1.fp(), 32);
+ Psrlq(tmp1.fp(), byte{32});
Pmuludq(tmp1.fp(), rhs.fp());
// Multiply high dword of each qword of right with left.
- Psrlq(tmp2.fp(), 32);
+ Psrlq(tmp2.fp(), byte{32});
Pmuludq(tmp2.fp(), lhs.fp());
Paddq(tmp2.fp(), tmp1.fp());
- Psllq(tmp2.fp(), 32);
+ Psllq(tmp2.fp(), byte{32});
liftoff::EmitSimdCommutativeBinOp<&Assembler::vpmuludq, &Assembler::pmuludq>(
this, dst, lhs, rhs);
Paddq(dst.fp(), tmp2.fp());
@@ -3590,11 +3578,11 @@ void LiftoffAssembler::emit_f32x4_neg(LiftoffRegister dst,
LiftoffRegister src) {
if (dst.fp() == src.fp()) {
Pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
- Pslld(kScratchDoubleReg, static_cast<byte>(31));
+ Pslld(kScratchDoubleReg, byte{31});
Xorps(dst.fp(), kScratchDoubleReg);
} else {
Pcmpeqd(dst.fp(), dst.fp());
- Pslld(dst.fp(), static_cast<byte>(31));
+ Pslld(dst.fp(), byte{31});
Xorps(dst.fp(), src.fp());
}
}
@@ -3678,7 +3666,7 @@ void LiftoffAssembler::emit_f32x4_min(LiftoffRegister dst, LiftoffRegister lhs,
// propagate -0's and NaNs, which may be non-canonical.
Orps(kScratchDoubleReg, dst.fp());
// Canonicalize NaNs by quieting and clearing the payload.
- Cmpps(dst.fp(), kScratchDoubleReg, int8_t{3});
+ Cmpunordps(dst.fp(), kScratchDoubleReg);
Orps(kScratchDoubleReg, dst.fp());
Psrld(dst.fp(), byte{10});
Andnps(dst.fp(), kScratchDoubleReg);
@@ -3710,7 +3698,7 @@ void LiftoffAssembler::emit_f32x4_max(LiftoffRegister dst, LiftoffRegister lhs,
// Propagate sign discrepancy and (subtle) quiet NaNs.
Subps(kScratchDoubleReg, dst.fp());
// Canonicalize NaNs by clearing the payload. Sign is non-deterministic.
- Cmpps(dst.fp(), kScratchDoubleReg, int8_t{3});
+ Cmpunordps(dst.fp(), kScratchDoubleReg);
Psrld(dst.fp(), byte{10});
Andnps(dst.fp(), kScratchDoubleReg);
}
@@ -3733,11 +3721,11 @@ void LiftoffAssembler::emit_f64x2_abs(LiftoffRegister dst,
LiftoffRegister src) {
if (dst.fp() == src.fp()) {
Pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
- Psrlq(kScratchDoubleReg, static_cast<byte>(1));
+ Psrlq(kScratchDoubleReg, byte{1});
Andpd(dst.fp(), kScratchDoubleReg);
} else {
Pcmpeqd(dst.fp(), dst.fp());
- Psrlq(dst.fp(), static_cast<byte>(1));
+ Psrlq(dst.fp(), byte{1});
Andpd(dst.fp(), src.fp());
}
}
@@ -3814,61 +3802,12 @@ void LiftoffAssembler::emit_f64x2_div(LiftoffRegister dst, LiftoffRegister lhs,
void LiftoffAssembler::emit_f64x2_min(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
- // The minpd instruction doesn't propagate NaNs and +0's in its first
- // operand. Perform minpd in both orders, merge the results, and adjust.
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vminpd(kScratchDoubleReg, lhs.fp(), rhs.fp());
- vminpd(dst.fp(), rhs.fp(), lhs.fp());
- } else if (dst.fp() == lhs.fp() || dst.fp() == rhs.fp()) {
- XMMRegister src = dst.fp() == lhs.fp() ? rhs.fp() : lhs.fp();
- movaps(kScratchDoubleReg, src);
- minpd(kScratchDoubleReg, dst.fp());
- minpd(dst.fp(), src);
- } else {
- movaps(kScratchDoubleReg, lhs.fp());
- minpd(kScratchDoubleReg, rhs.fp());
- movaps(dst.fp(), rhs.fp());
- minpd(dst.fp(), lhs.fp());
- }
- // propagate -0's and NaNs, which may be non-canonical.
- Orpd(kScratchDoubleReg, dst.fp());
- // Canonicalize NaNs by quieting and clearing the payload.
- Cmppd(dst.fp(), kScratchDoubleReg, int8_t{3});
- Orpd(kScratchDoubleReg, dst.fp());
- Psrlq(dst.fp(), 13);
- Andnpd(dst.fp(), kScratchDoubleReg);
+ F64x2Min(dst.fp(), lhs.fp(), rhs.fp(), kScratchDoubleReg);
}
void LiftoffAssembler::emit_f64x2_max(LiftoffRegister dst, LiftoffRegister lhs,
LiftoffRegister rhs) {
- // The maxpd instruction doesn't propagate NaNs and +0's in its first
- // operand. Perform maxpd in both orders, merge the results, and adjust.
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vmaxpd(kScratchDoubleReg, lhs.fp(), rhs.fp());
- vmaxpd(dst.fp(), rhs.fp(), lhs.fp());
- } else if (dst.fp() == lhs.fp() || dst.fp() == rhs.fp()) {
- XMMRegister src = dst.fp() == lhs.fp() ? rhs.fp() : lhs.fp();
- movaps(kScratchDoubleReg, src);
- maxpd(kScratchDoubleReg, dst.fp());
- maxpd(dst.fp(), src);
- } else {
- movaps(kScratchDoubleReg, lhs.fp());
- maxpd(kScratchDoubleReg, rhs.fp());
- movaps(dst.fp(), rhs.fp());
- maxpd(dst.fp(), lhs.fp());
- }
- // Find discrepancies.
- Xorpd(dst.fp(), kScratchDoubleReg);
- // Propagate NaNs, which may be non-canonical.
- Orpd(kScratchDoubleReg, dst.fp());
- // Propagate sign discrepancy and (subtle) quiet NaNs.
- Subpd(kScratchDoubleReg, dst.fp());
- // Canonicalize NaNs by clearing the payload. Sign is non-deterministic.
- Cmppd(dst.fp(), kScratchDoubleReg, int8_t{3});
- Psrlq(dst.fp(), 13);
- Andnpd(dst.fp(), kScratchDoubleReg);
+ F64x2Max(dst.fp(), lhs.fp(), rhs.fp(), kScratchDoubleReg);
}
void LiftoffAssembler::emit_f64x2_pmin(LiftoffRegister dst, LiftoffRegister lhs,
@@ -4152,20 +4091,13 @@ void LiftoffAssembler::emit_i64x2_extract_lane(LiftoffRegister dst,
void LiftoffAssembler::emit_f32x4_extract_lane(LiftoffRegister dst,
LiftoffRegister lhs,
uint8_t imm_lane_idx) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- vshufps(dst.fp(), lhs.fp(), lhs.fp(), imm_lane_idx);
- } else {
- if (dst.fp() != lhs.fp()) movaps(dst.fp(), lhs.fp());
- if (imm_lane_idx != 0) shufps(dst.fp(), dst.fp(), imm_lane_idx);
- }
+ F32x4ExtractLane(dst.fp(), lhs.fp(), imm_lane_idx);
}
void LiftoffAssembler::emit_f64x2_extract_lane(LiftoffRegister dst,
LiftoffRegister lhs,
uint8_t imm_lane_idx) {
- Pextrq(kScratchRegister, lhs.fp(), static_cast<int8_t>(imm_lane_idx));
- Movq(dst.fp(), kScratchRegister);
+ F64x2ExtractLane(dst.fp(), lhs.fp(), imm_lane_idx);
}
void LiftoffAssembler::emit_i8x16_replace_lane(LiftoffRegister dst,
@@ -4241,22 +4173,7 @@ void LiftoffAssembler::emit_f64x2_replace_lane(LiftoffRegister dst,
LiftoffRegister src1,
LiftoffRegister src2,
uint8_t imm_lane_idx) {
- if (CpuFeatures::IsSupported(AVX)) {
- CpuFeatureScope scope(this, AVX);
- if (imm_lane_idx == 0) {
- vpblendw(dst.fp(), src1.fp(), src2.fp(), 0b00001111);
- } else {
- vmovlhps(dst.fp(), src1.fp(), src2.fp());
- }
- } else {
- CpuFeatureScope scope(this, SSE4_1);
- if (dst.fp() != src1.fp()) movaps(dst.fp(), src1.fp());
- if (imm_lane_idx == 0) {
- pblendw(dst.fp(), src2.fp(), 0b00001111);
- } else {
- movlhps(dst.fp(), src2.fp());
- }
- }
+ F64x2ReplaceLane(dst.fp(), src1.fp(), src2.fp(), imm_lane_idx);
}
void LiftoffAssembler::StackCheck(Label* ool_code, Register limit_address) {
@@ -4428,6 +4345,12 @@ void LiftoffAssembler::DeallocateStackSlot(uint32_t size) {
addq(rsp, Immediate(size));
}
+void LiftoffAssembler::MaybeOSR() {
+ cmpq(liftoff::GetOSRTargetSlot(), Immediate(0));
+ j(not_equal, static_cast<Address>(WasmCode::kWasmOnStackReplace),
+ RelocInfo::WASM_STUB_CALL);
+}
+
void LiftoffStackSlots::Construct(int param_slots) {
DCHECK_LT(0, slots_.size());
SortInPushOrder();
diff --git a/deps/v8/src/wasm/branch-hint-map.h b/deps/v8/src/wasm/branch-hint-map.h
new file mode 100644
index 0000000000..242bbecbce
--- /dev/null
+++ b/deps/v8/src/wasm/branch-hint-map.h
@@ -0,0 +1,46 @@
+// Copyright 2021 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_WASM_BRANCH_HINT_MAP_H_
+#define V8_WASM_BRANCH_HINT_MAP_H_
+
+#include <unordered_map>
+
+#include "src/base/macros.h"
+
+namespace v8 {
+namespace internal {
+
+namespace wasm {
+
+enum class WasmBranchHint : uint8_t {
+ kNoHint = 0,
+ kUnlikely = 1,
+ kLikely = 2,
+};
+
+class V8_EXPORT_PRIVATE BranchHintMap {
+ public:
+ void insert(uint32_t offset, WasmBranchHint hint) {
+ map_.emplace(offset, hint);
+ }
+ WasmBranchHint GetHintFor(uint32_t offset) const {
+ auto it = map_.find(offset);
+ if (it == map_.end()) {
+ return WasmBranchHint::kNoHint;
+ }
+ return it->second;
+ }
+
+ private:
+ std::unordered_map<uint32_t, WasmBranchHint> map_;
+};
+
+using BranchHintInfo = std::unordered_map<uint32_t, BranchHintMap>;
+
+} // namespace wasm
+} // namespace internal
+} // namespace v8
+
+#endif // V8_WASM_BRANCH_HINT_MAP_H_
diff --git a/deps/v8/src/wasm/c-api.cc b/deps/v8/src/wasm/c-api.cc
index 3af5afaee3..72d2e07305 100644
--- a/deps/v8/src/wasm/c-api.cc
+++ b/deps/v8/src/wasm/c-api.cc
@@ -257,7 +257,6 @@ void Engine::operator delete(void* p) { ::operator delete(p); }
auto Engine::make(own<Config>&& config) -> own<Engine> {
i::FLAG_expose_gc = true;
i::FLAG_experimental_wasm_reftypes = true;
- i::FLAG_experimental_wasm_mv = true;
auto engine = new (std::nothrow) EngineImpl;
if (!engine) return own<Engine>();
engine->platform = v8::platform::NewDefaultPlatform();
@@ -456,8 +455,7 @@ struct FuncTypeImpl : ExternTypeImpl {
ownvec<ValType> params;
ownvec<ValType> results;
- FuncTypeImpl(ownvec<ValType>& params, // NOLINT(runtime/references)
- ownvec<ValType>& results) // NOLINT(runtime/references)
+ FuncTypeImpl(ownvec<ValType>& params, ownvec<ValType>& results)
: ExternTypeImpl(EXTERN_FUNC),
params(std::move(params)),
results(std::move(results)) {}
@@ -508,8 +506,7 @@ struct GlobalTypeImpl : ExternTypeImpl {
own<ValType> content;
Mutability mutability;
- GlobalTypeImpl(own<ValType>& content, // NOLINT(runtime/references)
- Mutability mutability)
+ GlobalTypeImpl(own<ValType>& content, Mutability mutability)
: ExternTypeImpl(EXTERN_GLOBAL),
content(std::move(content)),
mutability(mutability) {}
@@ -561,8 +558,7 @@ struct TableTypeImpl : ExternTypeImpl {
own<ValType> element;
Limits limits;
- TableTypeImpl(own<ValType>& element, // NOLINT(runtime/references)
- Limits limits)
+ TableTypeImpl(own<ValType>& element, Limits limits)
: ExternTypeImpl(EXTERN_TABLE),
element(std::move(element)),
limits(limits) {}
@@ -653,9 +649,7 @@ struct ImportTypeImpl {
Name name;
own<ExternType> type;
- ImportTypeImpl(Name& module, // NOLINT(runtime/references)
- Name& name, // NOLINT(runtime/references)
- own<ExternType>& type) // NOLINT(runtime/references)
+ ImportTypeImpl(Name& module, Name& name, own<ExternType>& type)
: module(std::move(module)),
name(std::move(name)),
type(std::move(type)) {}
@@ -696,8 +690,7 @@ struct ExportTypeImpl {
Name name;
own<ExternType> type;
- ExportTypeImpl(Name& name, // NOLINT(runtime/references)
- own<ExternType>& type) // NOLINT(runtime/references)
+ ExportTypeImpl(Name& name, own<ExternType>& type)
: name(std::move(name)), type(std::move(type)) {}
};
@@ -1357,26 +1350,6 @@ i::Handle<i::Object> WasmRefToV8(i::Isolate* isolate, const Ref* ref) {
return impl(ref)->v8_object();
}
-i::Handle<i::Object> CallTargetForCaching(i::Isolate* isolate,
- i::Address real_call_target) {
- if (i::kTaggedSize == i::kInt32Size) {
- return isolate->factory()->NewForeign(real_call_target);
- } else {
- // 64-bit uncompressed platform.
- return i::handle(i::Smi((real_call_target << i::kSmiTagSize) | i::kSmiTag),
- isolate);
- }
-}
-
-i::Address CallTargetFromCache(i::Object cached_call_target) {
- if (i::kTaggedSize == i::kInt32Size) {
- return i::Foreign::cast(cached_call_target).foreign_address();
- } else {
- // 64-bit uncompressed platform.
- return cached_call_target.ptr() >> i::kSmiTagSize;
- }
-}
-
void PrepareFunctionData(i::Isolate* isolate,
i::Handle<i::WasmExportedFunctionData> function_data,
const i::wasm::FunctionSig* sig,
@@ -1390,12 +1363,6 @@ void PrepareFunctionData(i::Isolate* isolate,
// Compute packed args size.
function_data->set_packed_args_size(
i::wasm::CWasmArgumentsPacker::TotalSize(sig));
- // Get call target (function table offset), and wrap it as a cacheable object
- // (pseudo-Smi or Foreign, depending on platform).
- i::Handle<i::Object> call_target = CallTargetForCaching(
- isolate,
- function_data->instance().GetCallTarget(function_data->function_index()));
- function_data->set_wasm_call_target(*call_target);
}
void PushArgs(const i::wasm::FunctionSig* sig, const Val args[],
@@ -1532,8 +1499,7 @@ auto Func::call(const Val args[], Val results[]) const -> own<Trap> {
PrepareFunctionData(isolate, function_data, sig, instance->module());
i::Handle<i::Code> wrapper_code = i::Handle<i::Code>(
i::Code::cast(function_data->c_wrapper_code()), isolate);
- i::Address call_target =
- CallTargetFromCache(function_data->wasm_call_target());
+ i::Address call_target = function_data->foreign_address();
i::wasm::CWasmArgumentsPacker packer(function_data->packed_args_size());
PushArgs(sig, args, &packer, store);
diff --git a/deps/v8/src/wasm/compilation-environment.h b/deps/v8/src/wasm/compilation-environment.h
index 987180c83f..a10190f70b 100644
--- a/deps/v8/src/wasm/compilation-environment.h
+++ b/deps/v8/src/wasm/compilation-environment.h
@@ -38,8 +38,6 @@ enum RuntimeExceptionSupport : bool {
enum UseTrapHandler : bool { kUseTrapHandler = true, kNoTrapHandler = false };
-enum LowerSimd : bool { kLowerSimd = true, kNoLowerSimd = false };
-
// The {CompilationEnv} encapsulates the module data that is used during
// compilation. CompilationEnvs are shareable across multiple compilations.
struct CompilationEnv {
@@ -66,8 +64,6 @@ struct CompilationEnv {
// Features enabled for this compilation.
const WasmFeatures enabled_features;
- const LowerSimd lower_simd;
-
// We assume that memories of size >= half of the virtual address space
// cannot be allocated (see https://crbug.com/1201340).
static constexpr uint32_t kMaxMemoryPagesAtRuntime = std::min(
@@ -77,8 +73,7 @@ struct CompilationEnv {
constexpr CompilationEnv(const WasmModule* module,
UseTrapHandler use_trap_handler,
RuntimeExceptionSupport runtime_exception_support,
- const WasmFeatures& enabled_features,
- LowerSimd lower_simd = kNoLowerSimd)
+ const WasmFeatures& enabled_features)
: module(module),
use_trap_handler(use_trap_handler),
runtime_exception_support(runtime_exception_support),
@@ -92,8 +87,7 @@ struct CompilationEnv {
module && module->has_maximum_pages ? module->maximum_pages
: max_mem_pages()) *
uint64_t{kWasmPageSize})),
- enabled_features(enabled_features),
- lower_simd(lower_simd) {}
+ enabled_features(enabled_features) {}
};
// The wire bytes are either owned by the StreamingDecoder, or (after streaming)
@@ -127,6 +121,8 @@ class V8_EXPORT_PRIVATE CompilationState {
void CancelCompilation();
+ void CancelInitialCompilation();
+
void SetError();
void SetWireBytesStorage(std::shared_ptr<WireBytesStorage>);
diff --git a/deps/v8/src/wasm/function-body-decoder-impl.h b/deps/v8/src/wasm/function-body-decoder-impl.h
index d37f718681..7927e58d84 100644
--- a/deps/v8/src/wasm/function-body-decoder-impl.h
+++ b/deps/v8/src/wasm/function-body-decoder-impl.h
@@ -539,13 +539,6 @@ struct BlockTypeImmediate {
type = value_type_reader::read_value_type<validate>(decoder, pc, &length,
module, enabled);
} else {
- if (!VALIDATE(enabled.has_mv())) {
- DecodeError<validate>(decoder, pc,
- "invalid block type %" PRId64
- ", enable with --experimental-wasm-mv",
- block_type);
- return;
- }
type = kWasmBottom;
sig_index = static_cast<uint32_t>(block_type);
}
@@ -582,18 +575,6 @@ struct BranchDepthImmediate {
};
template <Decoder::ValidateFlag validate>
-struct BranchOnExceptionImmediate {
- BranchDepthImmediate<validate> depth;
- ExceptionIndexImmediate<validate> index;
- uint32_t length = 0;
- inline BranchOnExceptionImmediate(Decoder* decoder, const byte* pc)
- : depth(BranchDepthImmediate<validate>(decoder, pc)),
- index(ExceptionIndexImmediate<validate>(decoder, pc + depth.length)) {
- length = depth.length + index.length;
- }
-};
-
-template <Decoder::ValidateFlag validate>
struct FunctionIndexImmediate {
uint32_t index = 0;
uint32_t length = 1;
@@ -965,8 +946,10 @@ enum Reachability : uint8_t {
template <typename Value, Decoder::ValidateFlag validate>
struct ControlBase : public PcForErrors<validate> {
ControlKind kind = kControlBlock;
- uint32_t locals_count = 0;
- uint32_t stack_depth = 0; // stack height at the beginning of the construct.
+ uint32_t locals_count = 0; // Additional locals introduced in this 'let'.
+ uint32_t stack_depth = 0; // Stack height at the beginning of the construct.
+ int32_t previous_catch = -1; // Depth of the innermost catch containing this
+ // 'try'.
Reachability reachability = kReachable;
// Values merged into the start or end of this control construct.
@@ -1037,7 +1020,6 @@ struct ControlBase : public PcForErrors<validate> {
F(If, const Value& cond, Control* if_block) \
F(FallThruTo, Control* c) \
F(PopControl, Control* block) \
- F(EndControl, Control* block) \
/* Instructions: */ \
F(UnOp, WasmOpcode opcode, const Value& value, Value* result) \
F(BinOp, WasmOpcode opcode, const Value& lhs, const Value& rhs, \
@@ -1099,6 +1081,7 @@ struct ControlBase : public PcForErrors<validate> {
F(ReturnCallIndirect, const Value& index, \
const CallIndirectImmediate<validate>& imm, const Value args[]) \
F(BrOnNull, const Value& ref_object, uint32_t depth) \
+ F(BrOnNonNull, const Value& ref_object, uint32_t depth) \
F(SimdOp, WasmOpcode opcode, Vector<Value> args, Value* result) \
F(SimdLaneOp, WasmOpcode opcode, const SimdLaneImmediate<validate>& imm, \
const Vector<Value> inputs, Value* result) \
@@ -1160,6 +1143,8 @@ struct ControlBase : public PcForErrors<validate> {
F(AssertNull, const Value& obj, Value* result) \
F(BrOnCast, const Value& obj, const Value& rtt, Value* result_on_branch, \
uint32_t depth) \
+ F(BrOnCastFail, const Value& obj, const Value& rtt, \
+ Value* result_on_fallthrough, uint32_t depth) \
F(RefIsData, const Value& object, Value* result) \
F(RefAsData, const Value& object, Value* result) \
F(BrOnData, const Value& object, Value* value_on_branch, uint32_t br_depth) \
@@ -1184,9 +1169,7 @@ class WasmDecoder : public Decoder {
module_(module),
enabled_(enabled),
detected_(detected),
- sig_(sig) {
- if (sig_ && sig_->return_count() > 1) detected_->Add(kFeature_mv);
- }
+ sig_(sig) {}
Zone* zone() const { return local_types_.get_allocator().zone(); }
@@ -1433,9 +1416,6 @@ class WasmDecoder : public Decoder {
inline bool Complete(CallFunctionImmediate<validate>& imm) {
if (!VALIDATE(imm.index < module_->functions.size())) return false;
imm.sig = module_->functions[imm.index].sig;
- if (imm.sig->return_count() > 1) {
- this->detected_->Add(kFeature_mv);
- }
return true;
}
@@ -1450,13 +1430,11 @@ class WasmDecoder : public Decoder {
inline bool Complete(CallIndirectImmediate<validate>& imm) {
if (!VALIDATE(module_->has_signature(imm.sig_index))) return false;
imm.sig = module_->signature(imm.sig_index);
- if (imm.sig->return_count() > 1) {
- this->detected_->Add(kFeature_mv);
- }
return true;
}
inline bool Validate(const byte* pc, CallIndirectImmediate<validate>& imm) {
+ // Validate immediate table index.
if (!VALIDATE(imm.table_index < module_->tables.size())) {
DecodeError(pc, "call_indirect: table index immediate out of bounds");
return false;
@@ -1468,10 +1446,13 @@ class WasmDecoder : public Decoder {
imm.table_index);
return false;
}
+
+ // Validate immediate signature index.
if (!Complete(imm)) {
DecodeError(pc, "invalid signature index: #%u", imm.sig_index);
return false;
}
+
// Check that the dynamic signature for this call is a subtype of the static
// type of the table the function is defined in.
ValueType immediate_type = ValueType::Ref(imm.sig_index, kNonNullable);
@@ -1480,6 +1461,7 @@ class WasmDecoder : public Decoder {
"call_indirect: Immediate signature #%u is not a subtype of "
"immediate table #%u",
imm.sig_index, imm.table_index);
+ return false;
}
return true;
}
@@ -1503,13 +1485,6 @@ class WasmDecoder : public Decoder {
return checkAvailable(imm.table_count);
}
- inline bool Validate(const byte* pc,
- BranchOnExceptionImmediate<validate>& imm,
- size_t control_size) {
- return Validate(pc, imm.depth, control_size) &&
- Validate(pc + imm.depth.length, imm.index);
- }
-
inline bool Validate(const byte* pc, WasmOpcode opcode,
SimdLaneImmediate<validate>& imm) {
uint8_t num_lanes = 0;
@@ -1573,9 +1548,6 @@ class WasmDecoder : public Decoder {
if (imm.type != kWasmBottom) return true;
if (!VALIDATE(module_->has_signature(imm.sig_index))) return false;
imm.sig = module_->signature(imm.sig_index);
- if (imm.sig->return_count() > 1) {
- this->detected_->Add(kFeature_mv);
- }
return true;
}
@@ -1709,6 +1681,7 @@ class WasmDecoder : public Decoder {
case kExprBr:
case kExprBrIf:
case kExprBrOnNull:
+ case kExprBrOnNonNull:
case kExprDelegate: {
BranchDepthImmediate<validate> imm(decoder, pc + 1);
return 1 + imm.length;
@@ -1957,6 +1930,7 @@ class WasmDecoder : public Decoder {
return length + imm.length;
}
case kExprBrOnCast:
+ case kExprBrOnCastFail:
case kExprBrOnData:
case kExprBrOnFunc:
case kExprBrOnI31: {
@@ -2043,6 +2017,7 @@ class WasmDecoder : public Decoder {
case kExprBrIf:
case kExprBrTable:
case kExprIf:
+ case kExprBrOnNonNull:
return {1, 0};
case kExprLocalGet:
case kExprGlobalGet:
@@ -2137,6 +2112,7 @@ class WasmDecoder : public Decoder {
case kExprRefTest:
case kExprRefCast:
case kExprBrOnCast:
+ case kExprBrOnCastFail:
return {2, 1};
case kExprArraySet:
return {3, 0};
@@ -2183,12 +2159,22 @@ MemoryAccessImmediate<validate>::MemoryAccessImmediate(
: MemoryAccessImmediate(decoder, pc, max_alignment,
decoder->module_->is_memory64) {}
+// Only call this in contexts where {current_code_reachable_and_ok_} is known to
+// hold.
+#define CALL_INTERFACE(name, ...) \
+ do { \
+ DCHECK(!control_.empty()); \
+ DCHECK(current_code_reachable_and_ok_); \
+ DCHECK_EQ(current_code_reachable_and_ok_, \
+ this->ok() && control_.back().reachable()); \
+ interface_.name(this, ##__VA_ARGS__); \
+ } while (false)
#define CALL_INTERFACE_IF_OK_AND_REACHABLE(name, ...) \
do { \
DCHECK(!control_.empty()); \
DCHECK_EQ(current_code_reachable_and_ok_, \
this->ok() && control_.back().reachable()); \
- if (current_code_reachable_and_ok_) { \
+ if (V8_LIKELY(current_code_reachable_and_ok_)) { \
interface_.name(this, ##__VA_ARGS__); \
} \
} while (false)
@@ -2289,33 +2275,39 @@ class WasmFullDecoder : public WasmDecoder<validate> {
return WasmOpcodes::OpcodeName(opcode);
}
- inline WasmCodePosition position() {
+ WasmCodePosition position() const {
int offset = static_cast<int>(this->pc_ - this->start_);
DCHECK_EQ(this->pc_ - this->start_, offset); // overflows cannot happen
return offset;
}
- inline uint32_t control_depth() const {
+ uint32_t control_depth() const {
return static_cast<uint32_t>(control_.size());
}
- inline Control* control_at(uint32_t depth) {
+ Control* control_at(uint32_t depth) {
DCHECK_GT(control_.size(), depth);
return &control_.back() - depth;
}
- inline uint32_t stack_size() const {
+ uint32_t stack_size() const {
DCHECK_GE(stack_end_, stack_);
DCHECK_GE(kMaxUInt32, stack_end_ - stack_);
return static_cast<uint32_t>(stack_end_ - stack_);
}
- inline Value* stack_value(uint32_t depth) {
+ Value* stack_value(uint32_t depth) const {
DCHECK_LT(0, depth);
DCHECK_GE(stack_size(), depth);
return stack_end_ - depth;
}
+ int32_t current_catch() const { return current_catch_; }
+
+ uint32_t control_depth_of_current_catch() const {
+ return control_depth() - 1 - current_catch();
+ }
+
void SetSucceedingCodeDynamicallyUnreachable() {
Control* current = &control_.back();
if (current->reachable()) {
@@ -2324,7 +2316,12 @@ class WasmFullDecoder : public WasmDecoder<validate> {
}
}
+ inline uint32_t pc_relative_offset() const {
+ return this->pc_offset() - first_instruction_offset;
+ }
+
private:
+ uint32_t first_instruction_offset = 0;
Interface interface_;
// The value stack, stored as individual pointers for maximum performance.
@@ -2340,6 +2337,9 @@ class WasmFullDecoder : public WasmDecoder<validate> {
// a cache for {ok() && control_.back().reachable()}).
bool current_code_reachable_and_ok_ = true;
+ // Depth of the current try block.
+ int32_t current_catch_ = -1;
+
static Value UnreachableValue(const uint8_t* pc) {
return Value{pc, kWasmBottom};
}
@@ -2519,6 +2519,8 @@ class WasmFullDecoder : public WasmDecoder<validate> {
ArgVector args = PeekArgs(imm.sig);
Control* try_block = PushControl(kControlTry, 0, args.length());
SetBlockType(try_block, imm, args.begin());
+ try_block->previous_catch = current_catch_;
+ current_catch_ = static_cast<int>(control_depth() - 1);
CALL_INTERFACE_IF_OK_AND_REACHABLE(Try, try_block);
DropArgs(imm.sig);
PushMergeValues(try_block, &try_block->start_merge);
@@ -2543,7 +2545,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
this->DecodeError("catch after unwind for try");
return 0;
}
- FallThruTo(c);
+ FallThrough();
c->kind = kControlTryCatch;
// TODO(jkummerow): Consider moving the stack manipulation after the
// INTERFACE call for consistency.
@@ -2556,6 +2558,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
Push(CreateValue(sig->GetParam(i)));
}
Vector<Value> values(stack_ + c->stack_depth, sig->parameter_count());
+ current_catch_ = c->previous_catch; // Pop try scope.
CALL_INTERFACE_IF_OK_AND_PARENT_REACHABLE(CatchException, imm, c, values);
current_code_reachable_and_ok_ = this->ok() && c->reachable();
return 1 + imm.length;
@@ -2584,11 +2587,11 @@ class WasmFullDecoder : public WasmDecoder<validate> {
"cannot delegate inside the catch handler of the target");
return 0;
}
- FallThruTo(c);
+ FallThrough();
CALL_INTERFACE_IF_OK_AND_PARENT_REACHABLE(Delegate, imm.depth + 1, c);
- current_code_reachable_and_ok_ = this->ok() && control_.back().reachable();
+ current_catch_ = c->previous_catch;
EndControl();
- PopControl(c);
+ PopControl();
return 1 + imm.length;
}
@@ -2608,9 +2611,10 @@ class WasmFullDecoder : public WasmDecoder<validate> {
this->error("cannot have catch-all after unwind");
return 0;
}
- FallThruTo(c);
+ FallThrough();
c->kind = kControlTryCatchAll;
c->reachability = control_at(1)->innerReachability();
+ current_catch_ = c->previous_catch; // Pop try scope.
CALL_INTERFACE_IF_OK_AND_PARENT_REACHABLE(CatchAll, c);
stack_end_ = stack_ + c->stack_depth;
current_code_reachable_and_ok_ = this->ok() && c->reachable();
@@ -2630,9 +2634,10 @@ class WasmFullDecoder : public WasmDecoder<validate> {
this->error("catch, catch-all or unwind already present for try");
return 0;
}
- FallThruTo(c);
+ FallThrough();
c->kind = kControlTryUnwind;
c->reachability = control_at(1)->innerReachability();
+ current_catch_ = c->previous_catch; // Pop try scope.
CALL_INTERFACE_IF_OK_AND_PARENT_REACHABLE(CatchAll, c);
stack_end_ = stack_ + c->stack_depth;
current_code_reachable_and_ok_ = this->ok() && c->reachable();
@@ -2645,33 +2650,69 @@ class WasmFullDecoder : public WasmDecoder<validate> {
if (!this->Validate(this->pc_ + 1, imm, control_.size())) return 0;
Value ref_object = Peek(0, 0);
Control* c = control_at(imm.depth);
- TypeCheckBranchResult check_result = TypeCheckBranch(c, true, 1);
+ if (!VALIDATE(TypeCheckBranch<true>(c, 1))) return 0;
switch (ref_object.type.kind()) {
case kBottom:
// We are in a polymorphic stack. Leave the stack as it is.
- DCHECK(check_result != kReachableBranch);
+ DCHECK(!current_code_reachable_and_ok_);
break;
case kRef:
// For a non-nullable value, we won't take the branch, and can leave
// the stack as it is.
break;
case kOptRef: {
- if (V8_LIKELY(check_result == kReachableBranch)) {
- CALL_INTERFACE_IF_OK_AND_REACHABLE(BrOnNull, ref_object, imm.depth);
Value result = CreateValue(
ValueType::Ref(ref_object.type.heap_type(), kNonNullable));
// The result of br_on_null has the same value as the argument (but a
// non-nullable type).
- CALL_INTERFACE_IF_OK_AND_REACHABLE(Forward, ref_object, &result);
- c->br_merge()->reached = true;
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ CALL_INTERFACE(BrOnNull, ref_object, imm.depth);
+ CALL_INTERFACE(Forward, ref_object, &result);
+ c->br_merge()->reached = true;
+ }
+ // In unreachable code, we still have to push a value of the correct
+ // type onto the stack.
Drop(ref_object);
Push(result);
- } else {
- // Even in non-reachable code, we need to push a value of the correct
- // type to the stack.
- Drop(ref_object);
- Push(CreateValue(
- ValueType::Ref(ref_object.type.heap_type(), kNonNullable)));
+ break;
+ }
+ default:
+ PopTypeError(0, ref_object, "object reference");
+ return 0;
+ }
+ return 1 + imm.length;
+ }
+
+ DECODE(BrOnNonNull) {
+ CHECK_PROTOTYPE_OPCODE(gc);
+ BranchDepthImmediate<validate> imm(this, this->pc_ + 1);
+ if (!this->Validate(this->pc_ + 1, imm, control_.size())) return 0;
+ Value ref_object = Peek(0, 0, kWasmAnyRef);
+ Drop(ref_object);
+ // Typechecking the branch and creating the branch merges requires the
+ // non-null value on the stack, so we push it temporarily.
+ Value result = CreateValue(ref_object.type.AsNonNull());
+ Push(result);
+ Control* c = control_at(imm.depth);
+ if (!VALIDATE(TypeCheckBranch<true>(c, 0))) return 0;
+ switch (ref_object.type.kind()) {
+ case kBottom:
+ // We are in unreachable code. Do nothing.
+ DCHECK(!current_code_reachable_and_ok_);
+ break;
+ case kRef:
+ // For a non-nullable value, we always take the branch.
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ CALL_INTERFACE(Forward, ref_object, stack_value(1));
+ CALL_INTERFACE(BrOrRet, imm.depth, 0);
+ c->br_merge()->reached = true;
+ }
+ break;
+ case kOptRef: {
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ CALL_INTERFACE(Forward, ref_object, stack_value(1));
+ CALL_INTERFACE(BrOnNonNull, ref_object, imm.depth);
+ c->br_merge()->reached = true;
}
break;
}
@@ -2679,6 +2720,8 @@ class WasmFullDecoder : public WasmDecoder<validate> {
PopTypeError(0, ref_object, "object reference");
return 0;
}
+ // If we stay in the branch, {ref_object} is null. Drop it from the stack.
+ Drop(result);
return 1 + imm.length;
}
@@ -2751,7 +2794,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
this->DecodeError("else already present for if");
return 0;
}
- if (!TypeCheckFallThru()) return 0;
+ if (!VALIDATE(TypeCheckFallThru())) return 0;
c->kind = kControlIfElse;
CALL_INTERFACE_IF_OK_AND_PARENT_REACHABLE(Else, c);
if (c->reachable()) c->end_merge.reached = true;
@@ -2764,27 +2807,24 @@ class WasmFullDecoder : public WasmDecoder<validate> {
DECODE(End) {
DCHECK(!control_.empty());
Control* c = &control_.back();
- if (!VALIDATE(!c->is_incomplete_try())) {
- this->DecodeError("missing catch or catch-all in try");
- return 0;
- }
- if (c->is_onearmed_if()) {
- if (!VALIDATE(c->end_merge.arity == c->start_merge.arity)) {
- this->DecodeError(
- c->pc(), "start-arity and end-arity of one-armed if must match");
- return 0;
- }
- if (!TypeCheckOneArmedIf(c)) return 0;
- }
if (c->is_try_catch()) {
// Emulate catch-all + re-throw.
- FallThruTo(c);
+ FallThrough();
c->reachability = control_at(1)->innerReachability();
CALL_INTERFACE_IF_OK_AND_PARENT_REACHABLE(CatchAll, c);
current_code_reachable_and_ok_ =
this->ok() && control_.back().reachable();
CALL_INTERFACE_IF_OK_AND_REACHABLE(Rethrow, c);
EndControl();
+ PopControl();
+ return 1;
+ }
+ if (!VALIDATE(!c->is_incomplete_try())) {
+ this->DecodeError("missing catch or catch-all in try");
+ return 0;
+ }
+ if (c->is_onearmed_if()) {
+ if (!VALIDATE(TypeCheckOneArmedIf(c))) return 0;
}
if (c->is_try_unwind()) {
// Unwind implicitly rethrows at the end.
@@ -2798,7 +2838,6 @@ class WasmFullDecoder : public WasmDecoder<validate> {
this->local_types_.begin() + c->locals_count);
this->num_locals_ -= c->locals_count;
}
- if (!TypeCheckFallThru()) return 0;
if (control_.size() == 1) {
// If at the last (implicit) control, check we are at end.
@@ -2809,11 +2848,13 @@ class WasmFullDecoder : public WasmDecoder<validate> {
// The result of the block is the return value.
trace_msg->Append("\n" TRACE_INST_FORMAT, startrel(this->pc_),
"(implicit) return");
- DoReturn();
+ DoReturn<kStrictCounting, kFallthroughMerge>();
control_.clear();
return 1;
}
- PopControl(c);
+
+ if (!VALIDATE(TypeCheckFallThru())) return 0;
+ PopControl();
return 1;
}
@@ -2853,9 +2894,9 @@ class WasmFullDecoder : public WasmDecoder<validate> {
BranchDepthImmediate<validate> imm(this, this->pc_ + 1);
if (!this->Validate(this->pc_ + 1, imm, control_.size())) return 0;
Control* c = control_at(imm.depth);
- TypeCheckBranchResult check_result = TypeCheckBranch(c, false, 0);
- if (V8_LIKELY(check_result == kReachableBranch)) {
- CALL_INTERFACE_IF_OK_AND_REACHABLE(BrOrRet, imm.depth, 0);
+ if (!VALIDATE(TypeCheckBranch<false>(c, 0))) return 0;
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ CALL_INTERFACE(BrOrRet, imm.depth, 0);
c->br_merge()->reached = true;
}
EndControl();
@@ -2867,9 +2908,9 @@ class WasmFullDecoder : public WasmDecoder<validate> {
if (!this->Validate(this->pc_ + 1, imm, control_.size())) return 0;
Value cond = Peek(0, 0, kWasmI32);
Control* c = control_at(imm.depth);
- TypeCheckBranchResult check_result = TypeCheckBranch(c, true, 1);
- if (V8_LIKELY(check_result == kReachableBranch)) {
- CALL_INTERFACE_IF_OK_AND_REACHABLE(BrIf, cond, imm.depth);
+ if (!VALIDATE(TypeCheckBranch<true>(c, 1))) return 0;
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ CALL_INTERFACE(BrIf, cond, imm.depth);
c->br_merge()->reached = true;
}
Drop(cond);
@@ -2887,40 +2928,38 @@ class WasmFullDecoder : public WasmDecoder<validate> {
// all branch targets as reachable after the {CALL_INTERFACE} call.
std::vector<bool> br_targets(control_.size());
- // The result types of the br_table instruction. We have to check the
- // stack against these types. Only needed during validation.
- std::vector<ValueType> result_types;
+ uint32_t arity = 0;
while (iterator.has_next()) {
const uint32_t index = iterator.cur_index();
const byte* pos = iterator.pc();
- uint32_t target = iterator.next();
- if (!VALIDATE(ValidateBrTableTarget(target, pos, index))) return 0;
+ const uint32_t target = iterator.next();
+ if (!VALIDATE(target < control_depth())) {
+ this->DecodeError(pos, "invalid branch depth: %u", target);
+ return 0;
+ }
// Avoid redundant branch target checks.
if (br_targets[target]) continue;
br_targets[target] = true;
if (validate) {
if (index == 0) {
- // With the first branch target, initialize the result types.
- result_types = InitializeBrTableResultTypes(target);
- } else if (!UpdateBrTableResultTypes(&result_types, target, pos,
- index)) {
+ arity = control_at(target)->br_merge()->arity;
+ } else if (!VALIDATE(control_at(target)->br_merge()->arity == arity)) {
+ this->DecodeError(
+ pos, "br_table: label arity inconsistent with previous arity %d",
+ arity);
return 0;
}
+ if (!VALIDATE(TypeCheckBranch<false>(control_at(target), 1))) return 0;
}
}
- if (!VALIDATE(TypeCheckBrTable(result_types, 1))) return 0;
-
- DCHECK(this->ok());
-
- if (current_code_reachable_and_ok_) {
- CALL_INTERFACE_IF_OK_AND_REACHABLE(BrTable, imm, key);
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ CALL_INTERFACE(BrTable, imm, key);
- for (int i = 0, e = control_depth(); i < e; ++i) {
- if (!br_targets[i]) continue;
- control_at(i)->br_merge()->reached = true;
+ for (uint32_t i = 0; i < control_depth(); ++i) {
+ control_at(i)->br_merge()->reached |= br_targets[i];
}
}
Drop(key);
@@ -2929,22 +2968,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
}
DECODE(Return) {
- if (V8_LIKELY(current_code_reachable_and_ok_)) {
- if (!VALIDATE(TypeCheckReturn())) return 0;
- DoReturn();
- } else {
- // We inspect all return values from the stack to check their type.
- // Since we deal with unreachable code, we do not have to keep the
- // values.
- int num_returns = static_cast<int>(this->sig_->return_count());
- for (int i = num_returns - 1, depth = 0; i >= 0; --i, ++depth) {
- Peek(depth, i, this->sig_->GetReturn(i));
- }
- Drop(num_returns);
- }
-
- EndControl();
- return 1;
+ return DoReturn<kNonStrictCounting, kReturnMerge>() ? 1 : 0;
}
DECODE(Unreachable) {
@@ -3409,6 +3433,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
DECODE_IMPL(CatchAll);
DECODE_IMPL(Unwind);
DECODE_IMPL(BrOnNull);
+ DECODE_IMPL(BrOnNonNull);
DECODE_IMPL(Let);
DECODE_IMPL(Loop);
DECODE_IMPL(If);
@@ -3490,6 +3515,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
CALL_INTERFACE_IF_OK_AND_REACHABLE(StartFunctionBody, c);
}
+ first_instruction_offset = this->pc_offset();
// Decode the function body.
while (this->pc_ < this->end_) {
// Most operations only grow the stack by at least one element (unary and
@@ -3526,7 +3552,6 @@ class WasmFullDecoder : public WasmDecoder<validate> {
Control* current = &control_.back();
DCHECK_LE(stack_ + current->stack_depth, stack_end_);
stack_end_ = stack_ + current->stack_depth;
- CALL_INTERFACE_IF_OK_AND_REACHABLE(EndControl, current);
current->reachability = kUnreachable;
current_code_reachable_and_ok_ = false;
}
@@ -3642,11 +3667,12 @@ class WasmFullDecoder : public WasmDecoder<validate> {
return &control_.back();
}
- void PopControl(Control* c) {
+ void PopControl() {
// This cannot be the outermost control block.
DCHECK_LT(1, control_.size());
+ Control* c = &control_.back();
+ DCHECK_LE(stack_ + c->stack_depth, stack_end_);
- DCHECK_EQ(c, &control_.back());
CALL_INTERFACE_IF_OK_AND_PARENT_REACHABLE(PopControl, c);
// A loop just leaves the values on the stack.
@@ -3658,7 +3684,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
// If the parent block was reachable before, but the popped control does not
// return to here, this block becomes "spec only reachable".
if (!parent_reached) SetSucceedingCodeDynamicallyUnreachable();
- current_code_reachable_and_ok_ = control_.back().reachable();
+ current_code_reachable_and_ok_ = this->ok() && control_.back().reachable();
}
int DecodeLoadMem(LoadType type, int prefix_len = 1) {
@@ -3739,92 +3765,6 @@ class WasmFullDecoder : public WasmDecoder<validate> {
return prefix_len + imm.length;
}
- bool ValidateBrTableTarget(uint32_t target, const byte* pos, int index) {
- if (!VALIDATE(target < this->control_.size())) {
- this->DecodeError(pos, "improper branch in br_table target %u (depth %u)",
- index, target);
- return false;
- }
- return true;
- }
-
- std::vector<ValueType> InitializeBrTableResultTypes(uint32_t target) {
- Merge<Value>* merge = control_at(target)->br_merge();
- int br_arity = merge->arity;
- std::vector<ValueType> result(br_arity);
- for (int i = 0; i < br_arity; ++i) {
- result[i] = (*merge)[i].type;
- }
- return result;
- }
-
- bool UpdateBrTableResultTypes(std::vector<ValueType>* result_types,
- uint32_t target, const byte* pos, int index) {
- Merge<Value>* merge = control_at(target)->br_merge();
- int br_arity = merge->arity;
- // First we check if the arities match.
- if (!VALIDATE(br_arity == static_cast<int>(result_types->size()))) {
- this->DecodeError(pos,
- "inconsistent arity in br_table target %u (previous "
- "was %zu, this one is %u)",
- index, result_types->size(), br_arity);
- return false;
- }
-
- for (int i = 0; i < br_arity; ++i) {
- if (this->enabled_.has_reftypes()) {
- // The expected type is the biggest common sub type of all targets.
- (*result_types)[i] =
- CommonSubtype((*result_types)[i], (*merge)[i].type, this->module_);
- } else {
- // All target must have the same signature.
- if (!VALIDATE((*result_types)[i] == (*merge)[i].type)) {
- this->DecodeError(pos,
- "inconsistent type in br_table target %u (previous "
- "was %s, this one is %s)",
- index, (*result_types)[i].name().c_str(),
- (*merge)[i].type.name().c_str());
- return false;
- }
- }
- }
- return true;
- }
-
- bool TypeCheckBrTable(const std::vector<ValueType>& result_types,
- uint32_t drop_values) {
- int br_arity = static_cast<int>(result_types.size());
- if (V8_LIKELY(!control_.back().unreachable())) {
- int available =
- static_cast<int>(stack_size()) - control_.back().stack_depth;
- available -= std::min(available, static_cast<int>(drop_values));
- // There have to be enough values on the stack.
- if (!VALIDATE(available >= br_arity)) {
- this->DecodeError(
- "expected %u elements on the stack for branch to @%d, found %u",
- br_arity, startrel(control_.back().pc()), available);
- return false;
- }
- Value* stack_values = stack_end_ - br_arity - drop_values;
- // Type-check the topmost br_arity values on the stack.
- for (int i = 0; i < br_arity; ++i) {
- Value& val = stack_values[i];
- if (!VALIDATE(IsSubtypeOf(val.type, result_types[i], this->module_))) {
- this->DecodeError("type error in merge[%u] (expected %s, got %s)", i,
- result_types[i].name().c_str(),
- val.type.name().c_str());
- return false;
- }
- }
- } else { // !control_.back().reachable()
- // Type-check the values on the stack.
- for (int i = 0; i < br_arity; ++i) {
- Peek(i + drop_values, i + 1, result_types[i]);
- }
- }
- return this->ok();
- }
-
uint32_t SimdConstOp(uint32_t opcode_length) {
Simd128Immediate<validate> imm(this, this->pc_ + opcode_length);
Value result = CreateValue(kWasmS128);
@@ -4377,7 +4317,6 @@ class WasmFullDecoder : public WasmDecoder<validate> {
CALL_INTERFACE_IF_OK_AND_REACHABLE(Drop);
CALL_INTERFACE_IF_OK_AND_REACHABLE(AssertNull, obj, &value);
} else {
- // TODO(manoskouk): Change the trap label.
CALL_INTERFACE_IF_OK_AND_REACHABLE(Trap,
TrapReason::kTrapIllegalCast);
EndControl();
@@ -4420,33 +4359,92 @@ class WasmFullDecoder : public WasmDecoder<validate> {
// significantly more convenient to pass around the values that
// will be on the stack when the branch is taken.
// TODO(jkummerow): Reconsider this choice.
- Drop(2); // {obj} and {ret}.
+ Drop(2); // {obj} and {rtt}.
Value result_on_branch = CreateValue(
rtt.type.is_bottom()
? kWasmBottom
: ValueType::Ref(rtt.type.ref_index(), kNonNullable));
Push(result_on_branch);
- TypeCheckBranchResult check_result = TypeCheckBranch(c, true, 0);
- if (V8_LIKELY(check_result == kReachableBranch)) {
- // This logic ensures that code generation can assume that functions
- // can only be cast to function types, and data objects to data types.
- if (V8_LIKELY(ObjectRelatedWithRtt(obj, rtt))) {
- // The {value_on_branch} parameter we pass to the interface must
- // be pointer-identical to the object on the stack, so we can't
- // reuse {result_on_branch} which was passed-by-value to {Push}.
- Value* value_on_branch = stack_value(1);
- CALL_INTERFACE_IF_OK_AND_REACHABLE(
- BrOnCast, obj, rtt, value_on_branch, branch_depth.depth);
+ if (!VALIDATE(TypeCheckBranch<true>(c, 0))) return 0;
+ // This logic ensures that code generation can assume that functions
+ // can only be cast to function types, and data objects to data types.
+ if (V8_LIKELY(ObjectRelatedWithRtt(obj, rtt))) {
+ // The {value_on_branch} parameter we pass to the interface must
+ // be pointer-identical to the object on the stack, so we can't
+ // reuse {result_on_branch} which was passed-by-value to {Push}.
+ Value* value_on_branch = stack_value(1);
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ CALL_INTERFACE(BrOnCast, obj, rtt, value_on_branch,
+ branch_depth.depth);
c->br_merge()->reached = true;
}
- // Otherwise the types are unrelated. Do not branch.
- } else if (check_result == kInvalidStack) {
- return 0;
}
+ // Otherwise the types are unrelated. Do not branch.
Drop(result_on_branch);
Push(obj); // Restore stack state on fallthrough.
return opcode_length + branch_depth.length;
}
+ case kExprBrOnCastFail: {
+ BranchDepthImmediate<validate> branch_depth(this,
+ this->pc_ + opcode_length);
+ if (!this->Validate(this->pc_ + opcode_length, branch_depth,
+ control_.size())) {
+ return 0;
+ }
+ Value rtt = Peek(0, 1);
+ if (!VALIDATE(rtt.type.is_rtt() || rtt.type.is_bottom())) {
+ PopTypeError(1, rtt, "rtt");
+ return 0;
+ }
+ Value obj = Peek(1, 0);
+ if (!VALIDATE(IsSubtypeOf(obj.type, kWasmFuncRef, this->module_) ||
+ IsSubtypeOf(obj.type,
+ ValueType::Ref(HeapType::kData, kNullable),
+ this->module_) ||
+ obj.type.is_bottom())) {
+ PopTypeError(0, obj, "subtype of (ref null func) or (ref null data)");
+ return 0;
+ }
+ Control* c = control_at(branch_depth.depth);
+ if (c->br_merge()->arity == 0) {
+ this->DecodeError(
+ "br_on_cast_fail must target a branch of arity at least 1");
+ return 0;
+ }
+ // Attention: contrary to most other instructions, we modify the stack
+ // before calling the interface function. This makes it significantly
+ // more convenient to pass around the values that will be on the stack
+ // when the branch is taken. In this case, we leave {obj} on the stack
+ // to type check the branch.
+ // TODO(jkummerow): Reconsider this choice.
+ Drop(rtt);
+ if (!VALIDATE(TypeCheckBranch<true>(c, 0))) return 0;
+ Value result_on_fallthrough = CreateValue(
+ rtt.type.is_bottom()
+ ? kWasmBottom
+ : ValueType::Ref(rtt.type.ref_index(), kNonNullable));
+ // This logic ensures that code generation can assume that functions
+ // can only be cast to function types, and data objects to data types.
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ if (V8_LIKELY(ObjectRelatedWithRtt(obj, rtt))) {
+ CALL_INTERFACE(BrOnCastFail, obj, rtt, &result_on_fallthrough,
+ branch_depth.depth);
+ } else {
+ // Drop {rtt} in the interface.
+ CALL_INTERFACE(Drop);
+ // Otherwise the types are unrelated. Always branch.
+ CALL_INTERFACE(BrOrRet, branch_depth.depth, 0);
+ // We know that the following code is not reachable, but according
+ // to the spec it technically is. Set it to spec-only reachable.
+ SetSucceedingCodeDynamicallyUnreachable();
+ }
+ c->br_merge()->reached = true;
+ }
+ // Make sure the correct value is on the stack state on fallthrough.
+ Drop(obj);
+ Push(result_on_fallthrough);
+ return opcode_length + branch_depth.length;
+ }
#define ABSTRACT_TYPE_CHECK(heap_type) \
case kExprRefIs##heap_type: { \
Value arg = Peek(0, 0, kWasmAnyRef); \
@@ -4510,25 +4508,20 @@ class WasmFullDecoder : public WasmDecoder<validate> {
Value result_on_branch =
CreateValue(ValueType::Ref(heap_type, kNonNullable));
Push(result_on_branch);
- TypeCheckBranchResult check_result = TypeCheckBranch(c, true, 0);
- if (V8_LIKELY(check_result == kReachableBranch)) {
- // The {value_on_branch} parameter we pass to the interface must be
- // pointer-identical to the object on the stack, so we can't reuse
- // {result_on_branch} which was passed-by-value to {Push}.
- Value* value_on_branch = stack_value(1);
+ if (!VALIDATE(TypeCheckBranch<true>(c, 0))) return 0;
+ // The {value_on_branch} parameter we pass to the interface must be
+ // pointer-identical to the object on the stack, so we can't reuse
+ // {result_on_branch} which was passed-by-value to {Push}.
+ Value* value_on_branch = stack_value(1);
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
if (opcode == kExprBrOnFunc) {
- CALL_INTERFACE_IF_OK_AND_REACHABLE(BrOnFunc, obj, value_on_branch,
- branch_depth.depth);
+ CALL_INTERFACE(BrOnFunc, obj, value_on_branch, branch_depth.depth);
} else if (opcode == kExprBrOnData) {
- CALL_INTERFACE_IF_OK_AND_REACHABLE(BrOnData, obj, value_on_branch,
- branch_depth.depth);
+ CALL_INTERFACE(BrOnData, obj, value_on_branch, branch_depth.depth);
} else {
- CALL_INTERFACE_IF_OK_AND_REACHABLE(BrOnI31, obj, value_on_branch,
- branch_depth.depth);
+ CALL_INTERFACE(BrOnI31, obj, value_on_branch, branch_depth.depth);
}
c->br_merge()->reached = true;
- } else if (check_result == kInvalidStack) {
- return 0;
}
Drop(result_on_branch);
Push(obj); // Restore stack state on fallthrough.
@@ -4714,11 +4707,6 @@ class WasmFullDecoder : public WasmDecoder<validate> {
}
}
- void DoReturn() {
- DCHECK_GE(stack_size(), this->sig_->return_count());
- CALL_INTERFACE_IF_OK_AND_REACHABLE(DoReturn, 0);
- }
-
V8_INLINE void EnsureStackSpace(int slots_needed) {
if (V8_LIKELY(stack_capacity_end_ - stack_end_ >= slots_needed)) return;
GrowStackSpace(slots_needed);
@@ -4842,7 +4830,7 @@ class WasmFullDecoder : public WasmDecoder<validate> {
// TODO(wasm): This check is often redundant.
if (V8_UNLIKELY(stack_size() < limit + count)) {
// Popping past the current control start in reachable code.
- if (!VALIDATE(!control_.back().reachable())) {
+ if (!VALIDATE(!current_code_reachable_and_ok_)) {
NotEnoughArgumentsError(0);
}
// Pop what we can.
@@ -4854,188 +4842,152 @@ class WasmFullDecoder : public WasmDecoder<validate> {
// For more descriptive call sites:
V8_INLINE void Drop(const Value& /* unused */) { Drop(1); }
- // Pops values from the stack, as defined by {merge}. Thereby we type-check
- // unreachable merges. Afterwards the values are pushed again on the stack
- // according to the signature in {merge}. This is done so follow-up validation
- // is possible.
- bool TypeCheckUnreachableMerge(Merge<Value>& merge, bool conditional_branch,
- uint32_t drop_values = 0) {
- int arity = merge.arity;
- // For conditional branches, stack value '0' is the condition of the branch,
- // and the result values start at index '1'.
- int index_offset = conditional_branch ? 1 : 0;
+ enum StackElementsCountMode : bool {
+ kNonStrictCounting = false,
+ kStrictCounting = true
+ };
+
+ enum MergeType { kBranchMerge, kReturnMerge, kFallthroughMerge };
+
+ // - If the current code is reachable, check if the current stack values are
+ // compatible with {merge} based on their number and types. Disregard the
+ // first {drop_values} on the stack. If {strict_count}, check that
+ // #(stack elements) == {merge->arity}, otherwise
+ // #(stack elements) >= {merge->arity}.
+ // - If the current code is unreachable, check if any values that may exist on
+ // top of the stack are compatible with {merge}. If {push_branch_values},
+ // push back to the stack values based on the type of {merge} (this is
+ // needed for conditional branches due to their typing rules, and
+ // fallthroughs so that the outer control finds the expected values on the
+ // stack). TODO(manoskouk): We expect the unreachable-code behavior to
+ // change, either due to relaxation of dead code verification, or the
+ // introduction of subtyping.
+ template <StackElementsCountMode strict_count, bool push_branch_values,
+ MergeType merge_type>
+ bool TypeCheckStackAgainstMerge(uint32_t drop_values, Merge<Value>* merge) {
+ static_assert(validate, "Call this function only within VALIDATE");
+ constexpr const char* merge_description =
+ merge_type == kBranchMerge
+ ? "branch"
+ : merge_type == kReturnMerge ? "return" : "fallthru";
+ uint32_t arity = merge->arity;
+ uint32_t actual = stack_size() - control_.back().stack_depth;
+ if (V8_LIKELY(current_code_reachable_and_ok_)) {
+ if (V8_UNLIKELY(strict_count ? actual != drop_values + arity
+ : actual < drop_values + arity)) {
+ this->DecodeError("expected %u elements on the stack for %s, found %u",
+ arity, merge_description,
+ actual >= drop_values ? actual - drop_values : 0);
+ return false;
+ }
+ // Typecheck the topmost {merge->arity} values on the stack.
+ Value* stack_values = stack_end_ - (arity + drop_values);
+ for (uint32_t i = 0; i < arity; ++i) {
+ Value& val = stack_values[i];
+ Value& old = (*merge)[i];
+ if (!IsSubtypeOf(val.type, old.type, this->module_)) {
+ this->DecodeError("type error in %s[%u] (expected %s, got %s)",
+ merge_description, i, old.type.name().c_str(),
+ val.type.name().c_str());
+ return false;
+ }
+ }
+ return true;
+ }
+ // Unreachable code validation starts here.
+ if (V8_UNLIKELY(strict_count && actual > drop_values + arity)) {
+ this->DecodeError("expected %u elements on the stack for %s, found %u",
+ arity, merge_description,
+ actual >= drop_values ? actual - drop_values : 0);
+ return false;
+ }
+ // TODO(manoskouk): Use similar code as above if we keep unreachable checks.
for (int i = arity - 1, depth = drop_values; i >= 0; --i, ++depth) {
- Peek(depth, index_offset + i, merge[i].type);
- }
- // Push values of the correct type onto the stack.
- Drop(drop_values);
- Drop(arity);
- // {Drop} is adaptive for polymorphic stacks: it might drop fewer values
- // than requested. So ensuring stack space here is not redundant.
- EnsureStackSpace(arity + drop_values);
- for (int i = 0; i < arity; i++) Push(CreateValue(merge[i].type));
- // {drop_values} are about to be dropped anyway, so we can forget their
- // previous types, but we do have to maintain the correct stack height.
- for (uint32_t i = 0; i < drop_values; i++) {
- Push(UnreachableValue(this->pc_));
+ Peek(depth, i, (*merge)[i].type);
+ }
+ if (push_branch_values) {
+ Drop(drop_values);
+ Drop(arity);
+ // {Drop} is adaptive for polymorphic stacks: it might drop fewer values
+ // than requested. So ensuring stack space here is not redundant.
+ EnsureStackSpace(drop_values + arity);
+ // Push values of the correct type onto the stack.
+ for (int i = 0; i < static_cast<int>(arity); i++) {
+ Push(CreateValue((*merge)[i].type));
+ }
+ // {drop_values} are about to be dropped anyway, so we can forget their
+ // previous types, but we do have to maintain the correct stack height.
+ for (uint32_t i = 0; i < drop_values; i++) {
+ Push(UnreachableValue(this->pc_));
+ }
}
return this->ok();
}
+ template <StackElementsCountMode strict_count, MergeType merge_type>
+ bool DoReturn() {
+ if (!VALIDATE((TypeCheckStackAgainstMerge<strict_count, false, merge_type>(
+ 0, &control_.front().end_merge)))) {
+ return false;
+ }
+ DCHECK_IMPLIES(current_code_reachable_and_ok_,
+ stack_size() >= this->sig_->return_count());
+ CALL_INTERFACE_IF_OK_AND_REACHABLE(DoReturn, 0);
+ EndControl();
+ return true;
+ }
+
int startrel(const byte* ptr) { return static_cast<int>(ptr - this->start_); }
- void FallThruTo(Control* c) {
- DCHECK_EQ(c, &control_.back());
+ void FallThrough() {
+ Control* c = &control_.back();
DCHECK_NE(c->kind, kControlLoop);
- if (!TypeCheckFallThru()) return;
+ if (!VALIDATE(TypeCheckFallThru())) return;
CALL_INTERFACE_IF_OK_AND_REACHABLE(FallThruTo, c);
if (c->reachable()) c->end_merge.reached = true;
}
- bool TypeCheckMergeValues(Control* c, uint32_t drop_values,
- Merge<Value>* merge) {
- static_assert(validate, "Call this function only within VALIDATE");
- DCHECK(merge == &c->start_merge || merge == &c->end_merge);
- DCHECK_GE(stack_size() - drop_values, c->stack_depth + merge->arity);
- Value* stack_values = stack_value(merge->arity + drop_values);
- // Typecheck the topmost {merge->arity} values on the stack.
- for (uint32_t i = 0; i < merge->arity; ++i) {
- Value& val = stack_values[i];
- Value& old = (*merge)[i];
- if (!VALIDATE(IsSubtypeOf(val.type, old.type, this->module_))) {
- this->DecodeError("type error in merge[%u] (expected %s, got %s)", i,
- old.type.name().c_str(), val.type.name().c_str());
- return false;
- }
- }
-
- return true;
- }
-
bool TypeCheckOneArmedIf(Control* c) {
static_assert(validate, "Call this function only within VALIDATE");
DCHECK(c->is_onearmed_if());
- DCHECK_EQ(c->start_merge.arity, c->end_merge.arity);
+ if (c->end_merge.arity != c->start_merge.arity) {
+ this->DecodeError(c->pc(),
+ "start-arity and end-arity of one-armed if must match");
+ return false;
+ }
for (uint32_t i = 0; i < c->start_merge.arity; ++i) {
Value& start = c->start_merge[i];
Value& end = c->end_merge[i];
- if (!VALIDATE(IsSubtypeOf(start.type, end.type, this->module_))) {
+ if (!IsSubtypeOf(start.type, end.type, this->module_)) {
this->DecodeError("type error in merge[%u] (expected %s, got %s)", i,
end.type.name().c_str(), start.type.name().c_str());
return false;
}
}
-
return true;
}
bool TypeCheckFallThru() {
static_assert(validate, "Call this function only within VALIDATE");
- Control& c = control_.back();
- if (V8_LIKELY(c.reachable())) {
- uint32_t expected = c.end_merge.arity;
- DCHECK_GE(stack_size(), c.stack_depth);
- uint32_t actual = stack_size() - c.stack_depth;
- // Fallthrus must match the arity of the control exactly.
- if (!VALIDATE(actual == expected)) {
- this->DecodeError(
- "expected %u elements on the stack for fallthru to @%d, found %u",
- expected, startrel(c.pc()), actual);
- return false;
- }
- if (expected == 0) return true; // Fast path.
-
- return TypeCheckMergeValues(&c, 0, &c.end_merge);
- }
-
- // Type-check an unreachable fallthru. First we do an arity check, then a
- // type check. Note that type-checking may require an adjustment of the
- // stack, if some stack values are missing to match the block signature.
- Merge<Value>& merge = c.end_merge;
- int arity = static_cast<int>(merge.arity);
- int available = static_cast<int>(stack_size()) - c.stack_depth;
- // For fallthrus, not more than the needed values should be available.
- if (!VALIDATE(available <= arity)) {
- this->DecodeError(
- "expected %u elements on the stack for fallthru to @%d, found %u",
- arity, startrel(c.pc()), available);
- return false;
- }
- // Pop all values from the stack for type checking of existing stack
- // values.
- return TypeCheckUnreachableMerge(merge, false);
+ return TypeCheckStackAgainstMerge<kStrictCounting, true, kFallthroughMerge>(
+ 0, &control_.back().end_merge);
}
- enum TypeCheckBranchResult {
- kReachableBranch,
- kUnreachableBranch,
- kInvalidStack,
- };
-
- // If the type code is reachable, check if the current stack values are
+ // If the current code is reachable, check if the current stack values are
// compatible with a jump to {c}, based on their number and types.
// Otherwise, we have a polymorphic stack: check if any values that may exist
- // on top of the stack are compatible with {c}, and push back to the stack
- // values based on the type of {c}.
- TypeCheckBranchResult TypeCheckBranch(Control* c, bool conditional_branch,
- uint32_t drop_values) {
- if (V8_LIKELY(control_.back().reachable())) {
- // We only do type-checking here. This is only needed during validation.
- if (!validate) return kReachableBranch;
-
- // Branches must have at least the number of values expected; can have
- // more.
- uint32_t expected = c->br_merge()->arity;
- if (expected == 0) return kReachableBranch; // Fast path.
- uint32_t limit = control_.back().stack_depth;
- if (!VALIDATE(stack_size() >= limit + drop_values + expected)) {
- uint32_t actual = stack_size() - limit;
- actual -= std::min(actual, drop_values);
- this->DecodeError(
- "expected %u elements on the stack for br to @%d, found %u",
- expected, startrel(c->pc()), actual);
- return kInvalidStack;
- }
- return TypeCheckMergeValues(c, drop_values, c->br_merge())
- ? kReachableBranch
- : kInvalidStack;
- }
-
- return TypeCheckUnreachableMerge(*c->br_merge(), conditional_branch,
- drop_values)
- ? kUnreachableBranch
- : kInvalidStack;
- }
-
- bool TypeCheckReturn() {
- int num_returns = static_cast<int>(this->sig_->return_count());
- // No type checking is needed if there are no returns.
- if (num_returns == 0) return true;
-
- // Returns must have at least the number of values expected; can have more.
- int num_available =
- static_cast<int>(stack_size()) - control_.back().stack_depth;
- if (!VALIDATE(num_available >= num_returns)) {
- this->DecodeError(
- "expected %u elements on the stack for return, found %u", num_returns,
- num_available);
- return false;
- }
-
- // Typecheck the topmost {num_returns} values on the stack.
- // This line requires num_returns > 0.
- Value* stack_values = stack_end_ - num_returns;
- for (int i = 0; i < num_returns; ++i) {
- Value& val = stack_values[i];
- ValueType expected_type = this->sig_->GetReturn(i);
- if (!VALIDATE(IsSubtypeOf(val.type, expected_type, this->module_))) {
- this->DecodeError("type error in return[%u] (expected %s, got %s)", i,
- expected_type.name().c_str(),
- val.type.name().c_str());
- return false;
- }
- }
- return true;
+ // on top of the stack are compatible with {c}. If {push_branch_values},
+ // push back to the stack values based on the type of {c} (this is needed for
+ // conditional branches due to their typing rules, and fallthroughs so that
+ // the outer control finds enough values on the stack).
+ // {drop_values} is the number of stack values that will be dropped before the
+ // branch is taken. This is currently 1 for for br (condition), br_table
+ // (index) and br_on_null (reference), and 0 for all other branches.
+ template <bool push_branch_values>
+ bool TypeCheckBranch(Control* c, uint32_t drop_values) {
+ static_assert(validate, "Call this function only within VALIDATE");
+ return TypeCheckStackAgainstMerge<kNonStrictCounting, push_branch_values,
+ kBranchMerge>(drop_values, c->br_merge());
}
void onFirstError() override {
diff --git a/deps/v8/src/wasm/function-compiler.cc b/deps/v8/src/wasm/function-compiler.cc
index 4303344f13..4a2db3d496 100644
--- a/deps/v8/src/wasm/function-compiler.cc
+++ b/deps/v8/src/wasm/function-compiler.cc
@@ -306,7 +306,8 @@ JSToWasmWrapperCompilationUnit::JSToWasmWrapperCompilationUnit(
Isolate* isolate, WasmEngine* wasm_engine, const FunctionSig* sig,
const WasmModule* module, bool is_import,
const WasmFeatures& enabled_features, AllowGeneric allow_generic)
- : is_import_(is_import),
+ : isolate_(isolate),
+ is_import_(is_import),
sig_(sig),
use_generic_wrapper_(allow_generic && UseGenericWrapper(sig) &&
!is_import),
@@ -326,19 +327,19 @@ void JSToWasmWrapperCompilationUnit::Execute() {
}
}
-Handle<Code> JSToWasmWrapperCompilationUnit::Finalize(Isolate* isolate) {
+Handle<Code> JSToWasmWrapperCompilationUnit::Finalize() {
Handle<Code> code;
if (use_generic_wrapper_) {
code =
- isolate->builtins()->builtin_handle(Builtins::kGenericJSToWasmWrapper);
+ isolate_->builtins()->builtin_handle(Builtins::kGenericJSToWasmWrapper);
} else {
- CompilationJob::Status status = job_->FinalizeJob(isolate);
+ CompilationJob::Status status = job_->FinalizeJob(isolate_);
CHECK_EQ(status, CompilationJob::SUCCEEDED);
code = job_->compilation_info()->code();
}
- if (!use_generic_wrapper_ && must_record_function_compilation(isolate)) {
+ if (!use_generic_wrapper_ && must_record_function_compilation(isolate_)) {
RecordWasmHeapStubCompilation(
- isolate, code, "%s", job_->compilation_info()->GetDebugName().get());
+ isolate_, code, "%s", job_->compilation_info()->GetDebugName().get());
}
return code;
}
@@ -353,7 +354,7 @@ Handle<Code> JSToWasmWrapperCompilationUnit::CompileJSToWasmWrapper(
module, is_import, enabled_features,
kAllowGeneric);
unit.Execute();
- return unit.Finalize(isolate);
+ return unit.Finalize();
}
// static
@@ -366,7 +367,7 @@ Handle<Code> JSToWasmWrapperCompilationUnit::CompileSpecificJSToWasmWrapper(
module, is_import, enabled_features,
kDontAllowGeneric);
unit.Execute();
- return unit.Finalize(isolate);
+ return unit.Finalize();
}
} // namespace wasm
diff --git a/deps/v8/src/wasm/function-compiler.h b/deps/v8/src/wasm/function-compiler.h
index f8d1f00a4e..80cd1a7b67 100644
--- a/deps/v8/src/wasm/function-compiler.h
+++ b/deps/v8/src/wasm/function-compiler.h
@@ -127,8 +127,10 @@ class V8_EXPORT_PRIVATE JSToWasmWrapperCompilationUnit final {
AllowGeneric allow_generic);
~JSToWasmWrapperCompilationUnit();
+ Isolate* isolate() const { return isolate_; }
+
void Execute();
- Handle<Code> Finalize(Isolate* isolate);
+ Handle<Code> Finalize();
bool is_import() const { return is_import_; }
const FunctionSig* sig() const { return sig_; }
@@ -146,6 +148,11 @@ class V8_EXPORT_PRIVATE JSToWasmWrapperCompilationUnit final {
const WasmModule* module);
private:
+ // Wrapper compilation is bound to an isolate. Concurrent accesses to the
+ // isolate (during the "Execute" phase) must be audited carefully, i.e. we
+ // should only access immutable information (like the root table). The isolate
+ // is guaranteed to be alive when this unit executes.
+ Isolate* isolate_;
bool is_import_;
const FunctionSig* sig_;
bool use_generic_wrapper_;
diff --git a/deps/v8/src/wasm/graph-builder-interface.cc b/deps/v8/src/wasm/graph-builder-interface.cc
index c856f4d949..a81457faa7 100644
--- a/deps/v8/src/wasm/graph-builder-interface.cc
+++ b/deps/v8/src/wasm/graph-builder-interface.cc
@@ -9,6 +9,7 @@
#include "src/handles/handles.h"
#include "src/objects/objects-inl.h"
#include "src/utils/ostreams.h"
+#include "src/wasm/branch-hint-map.h"
#include "src/wasm/decoder.h"
#include "src/wasm/function-body-decoder-impl.h"
#include "src/wasm/function-body-decoder.h"
@@ -29,7 +30,7 @@ namespace {
// It maintains a control state that tracks whether the environment
// is reachable, has reached a control end, or has been merged.
struct SsaEnv : public ZoneObject {
- enum State { kControlEnd, kUnreachable, kReached, kMerged };
+ enum State { kUnreachable, kReached, kMerged };
State state;
TFNode* control;
@@ -50,11 +51,11 @@ struct SsaEnv : public ZoneObject {
effect(other.effect),
instance_cache(other.instance_cache),
locals(std::move(other.locals)) {
- other.Kill(kUnreachable);
+ other.Kill();
}
- void Kill(State new_state = kControlEnd) {
- state = new_state;
+ void Kill() {
+ state = kUnreachable;
for (TFNode*& local : locals) {
local = nullptr;
}
@@ -67,8 +68,6 @@ struct SsaEnv : public ZoneObject {
}
};
-constexpr uint32_t kNullCatch = static_cast<uint32_t>(-1);
-
class WasmGraphBuildingInterface {
public:
static constexpr Decoder::ValidateFlag validate = Decoder::kFullValidation;
@@ -97,7 +96,7 @@ class WasmGraphBuildingInterface {
};
struct Control : public ControlBase<Value, validate> {
- SsaEnv* end_env = nullptr; // end environment for the construct.
+ SsaEnv* merge_env = nullptr; // merge environment for the construct.
SsaEnv* false_env = nullptr; // false environment (only for if).
TryInfo* try_info = nullptr; // information about try statements.
int32_t previous_catch = -1; // previous Control with a catch.
@@ -110,10 +109,18 @@ class WasmGraphBuildingInterface {
: ControlBase(std::forward<Args>(args)...) {}
};
- explicit WasmGraphBuildingInterface(compiler::WasmGraphBuilder* builder)
- : builder_(builder) {}
+ explicit WasmGraphBuildingInterface(compiler::WasmGraphBuilder* builder,
+ int func_index)
+ : builder_(builder), func_index_(func_index) {}
void StartFunction(FullDecoder* decoder) {
+ // Get the branch hints map for this function (if available)
+ if (decoder->module_) {
+ auto branch_hints_it = decoder->module_->branch_hints.find(func_index_);
+ if (branch_hints_it != decoder->module_->branch_hints.end()) {
+ branch_hints_ = &branch_hints_it->second;
+ }
+ }
// The first '+ 1' is needed by TF Start node, the second '+ 1' is for the
// instance parameter.
builder_->Start(static_cast<int>(decoder->sig_->parameter_count() + 1 + 1));
@@ -156,15 +163,15 @@ class WasmGraphBuildingInterface {
void Block(FullDecoder* decoder, Control* block) {
// The branch environment is the outer environment.
- block->end_env = ssa_env_;
+ block->merge_env = ssa_env_;
SetEnv(Steal(decoder->zone(), ssa_env_));
}
void Loop(FullDecoder* decoder, Control* block) {
- SsaEnv* finish_try_env = Steal(decoder->zone(), ssa_env_);
- block->end_env = finish_try_env;
- SetEnv(finish_try_env);
- // The continue environment is the inner environment.
+ // This is the merge environment at the beginning of the loop.
+ SsaEnv* merge_env = Steal(decoder->zone(), ssa_env_);
+ block->merge_env = merge_env;
+ SetEnv(merge_env);
ssa_env_->state = SsaEnv::kMerged;
@@ -216,15 +223,15 @@ class WasmGraphBuildingInterface {
control());
}
+ // Now we setup a new environment for the inside of the loop.
SetEnv(Split(decoder->zone(), ssa_env_));
builder_->StackCheck(decoder->position());
-
ssa_env_->SetNotMerged();
- if (!decoder->ok()) return;
+
// Wrap input merge into phis.
for (uint32_t i = 0; i < block->start_merge.arity; ++i) {
Value& val = block->start_merge[i];
- TFNode* inputs[] = {val.node, block->end_env->control};
+ TFNode* inputs[] = {val.node, block->merge_env->control};
val.node = builder_->Phi(val.type, 1, inputs);
}
}
@@ -238,22 +245,34 @@ class WasmGraphBuildingInterface {
SsaEnv* try_env = Steal(decoder->zone(), outer_env);
SetEnv(try_env);
TryInfo* try_info = decoder->zone()->New<TryInfo>(catch_env);
- block->end_env = outer_env;
+ block->merge_env = outer_env;
block->try_info = try_info;
- block->previous_catch = current_catch_;
- current_catch_ = static_cast<int32_t>(decoder->control_depth() - 1);
}
void If(FullDecoder* decoder, const Value& cond, Control* if_block) {
TFNode* if_true = nullptr;
TFNode* if_false = nullptr;
- builder_->BranchNoHint(cond.node, &if_true, &if_false);
- SsaEnv* end_env = ssa_env_;
+ WasmBranchHint hint = WasmBranchHint::kNoHint;
+ if (branch_hints_) {
+ hint = branch_hints_->GetHintFor(decoder->pc_relative_offset());
+ }
+ switch (hint) {
+ case WasmBranchHint::kNoHint:
+ builder_->BranchNoHint(cond.node, &if_true, &if_false);
+ break;
+ case WasmBranchHint::kUnlikely:
+ builder_->BranchExpectFalse(cond.node, &if_true, &if_false);
+ break;
+ case WasmBranchHint::kLikely:
+ builder_->BranchExpectTrue(cond.node, &if_true, &if_false);
+ break;
+ }
+ SsaEnv* merge_env = ssa_env_;
SsaEnv* false_env = Split(decoder->zone(), ssa_env_);
false_env->control = if_false;
SsaEnv* true_env = Steal(decoder->zone(), ssa_env_);
true_env->control = if_true;
- if_block->end_env = end_env;
+ if_block->merge_env = merge_env;
if_block->false_env = false_env;
SetEnv(true_env);
}
@@ -294,11 +313,9 @@ class WasmGraphBuildingInterface {
MergeValuesInto(decoder, block, &block->end_merge, values);
}
// Now continue with the merged environment.
- SetEnv(block->end_env);
+ SetEnv(block->merge_env);
}
- void EndControl(FullDecoder* decoder, Control* block) { ssa_env_->Kill(); }
-
void UnOp(FullDecoder* decoder, WasmOpcode opcode, const Value& value,
Value* result) {
result->node = builder_->Unop(opcode, value.node, decoder->position());
@@ -482,7 +499,21 @@ class WasmGraphBuildingInterface {
SsaEnv* fenv = ssa_env_;
SsaEnv* tenv = Split(decoder->zone(), fenv);
fenv->SetNotMerged();
- builder_->BranchNoHint(cond.node, &tenv->control, &fenv->control);
+ WasmBranchHint hint = WasmBranchHint::kNoHint;
+ if (branch_hints_) {
+ hint = branch_hints_->GetHintFor(decoder->pc_relative_offset());
+ }
+ switch (hint) {
+ case WasmBranchHint::kNoHint:
+ builder_->BranchNoHint(cond.node, &tenv->control, &fenv->control);
+ break;
+ case WasmBranchHint::kUnlikely:
+ builder_->BranchExpectFalse(cond.node, &tenv->control, &fenv->control);
+ break;
+ case WasmBranchHint::kLikely:
+ builder_->BranchExpectTrue(cond.node, &tenv->control, &fenv->control);
+ break;
+ }
builder_->SetControl(fenv->control);
SetEnv(tenv);
BrOrRet(decoder, depth, 1);
@@ -639,6 +670,19 @@ class WasmGraphBuildingInterface {
SetEnv(false_env);
}
+ void BrOnNonNull(FullDecoder* decoder, const Value& ref_object,
+ uint32_t depth) {
+ SsaEnv* false_env = ssa_env_;
+ SsaEnv* true_env = Split(decoder->zone(), false_env);
+ false_env->SetNotMerged();
+ builder_->BrOnNull(ref_object.node, &false_env->control,
+ &true_env->control);
+ builder_->SetControl(false_env->control);
+ SetEnv(true_env);
+ BrOrRet(decoder, depth, 0);
+ SetEnv(false_env);
+ }
+
void SimdOp(FullDecoder* decoder, WasmOpcode opcode, Vector<Value> args,
Value* result) {
NodeVector inputs(args.size());
@@ -689,9 +733,6 @@ class WasmGraphBuildingInterface {
const ExceptionIndexImmediate<validate>& imm,
Control* block, Vector<Value> values) {
DCHECK(block->is_try_catch());
-
- current_catch_ = block->previous_catch; // Pop try scope.
-
// The catch block is unreachable if no possible throws in the try block
// exist. We only build a landing pad if some node in the try block can
// (possibly) throw. Otherwise the catch environments remain empty.
@@ -743,7 +784,6 @@ class WasmGraphBuildingInterface {
// and IfFailure nodes.
builder_->Rethrow(block->try_info->exception);
TerminateThrow(decoder);
- current_catch_ = block->previous_catch;
return;
}
DCHECK(decoder->control_at(depth)->is_try());
@@ -765,7 +805,6 @@ class WasmGraphBuildingInterface {
target_try->exception, block->try_info->exception);
}
}
- current_catch_ = block->previous_catch;
}
void CatchAll(FullDecoder* decoder, Control* block) {
@@ -773,8 +812,6 @@ class WasmGraphBuildingInterface {
block->is_try_unwind());
DCHECK_EQ(decoder->control_at(0), block);
- current_catch_ = block->previous_catch; // Pop try scope.
-
// The catch block is unreachable if no possible throws in the try block
// exist. We only build a landing pad if some node in the try block can
// (possibly) throw. Otherwise the catch environments remain empty.
@@ -1000,28 +1037,37 @@ class WasmGraphBuildingInterface {
TFNode*, TFNode*, StaticKnowledge, TFNode**, TFNode**, TFNode**,
TFNode**)>
void BrOnCastAbs(FullDecoder* decoder, const Value& object, const Value& rtt,
- Value* value_on_branch, uint32_t br_depth) {
+ Value* forwarding_value, uint32_t br_depth,
+ bool branch_on_match) {
StaticKnowledge config =
ComputeStaticKnowledge(object.type, rtt.type, decoder->module_);
- SsaEnv* match_env = Split(decoder->zone(), ssa_env_);
- SsaEnv* no_match_env = Steal(decoder->zone(), ssa_env_);
- no_match_env->SetNotMerged();
+ SsaEnv* branch_env = Split(decoder->zone(), ssa_env_);
+ SsaEnv* no_branch_env = Steal(decoder->zone(), ssa_env_);
+ no_branch_env->SetNotMerged();
+ SsaEnv* match_env = branch_on_match ? branch_env : no_branch_env;
+ SsaEnv* no_match_env = branch_on_match ? no_branch_env : branch_env;
(builder_->*branch_function)(object.node, rtt.node, config,
&match_env->control, &match_env->effect,
&no_match_env->control, &no_match_env->effect);
- builder_->SetControl(no_match_env->control);
- SetEnv(match_env);
- value_on_branch->node = object.node;
+ builder_->SetControl(no_branch_env->control);
+ SetEnv(branch_env);
+ forwarding_value->node = object.node;
// Currently, br_on_* instructions modify the value stack before calling
// the interface function, so we don't need to drop any values here.
BrOrRet(decoder, br_depth, 0);
- SetEnv(no_match_env);
+ SetEnv(no_branch_env);
}
void BrOnCast(FullDecoder* decoder, const Value& object, const Value& rtt,
Value* value_on_branch, uint32_t br_depth) {
BrOnCastAbs<&compiler::WasmGraphBuilder::BrOnCast>(
- decoder, object, rtt, value_on_branch, br_depth);
+ decoder, object, rtt, value_on_branch, br_depth, true);
+ }
+
+ void BrOnCastFail(FullDecoder* decoder, const Value& object, const Value& rtt,
+ Value* value_on_fallthrough, uint32_t br_depth) {
+ BrOnCastAbs<&compiler::WasmGraphBuilder::BrOnCast>(
+ decoder, object, rtt, value_on_fallthrough, br_depth, false);
}
void RefIsData(FullDecoder* decoder, const Value& object, Value* result) {
@@ -1036,8 +1082,8 @@ class WasmGraphBuildingInterface {
void BrOnData(FullDecoder* decoder, const Value& object,
Value* value_on_branch, uint32_t br_depth) {
BrOnCastAbs<&compiler::WasmGraphBuilder::BrOnData>(
- decoder, object, Value{nullptr, kWasmBottom}, value_on_branch,
- br_depth);
+ decoder, object, Value{nullptr, kWasmBottom}, value_on_branch, br_depth,
+ true);
}
void RefIsFunc(FullDecoder* decoder, const Value& object, Value* result) {
@@ -1052,8 +1098,8 @@ class WasmGraphBuildingInterface {
void BrOnFunc(FullDecoder* decoder, const Value& object,
Value* value_on_branch, uint32_t br_depth) {
BrOnCastAbs<&compiler::WasmGraphBuilder::BrOnFunc>(
- decoder, object, Value{nullptr, kWasmBottom}, value_on_branch,
- br_depth);
+ decoder, object, Value{nullptr, kWasmBottom}, value_on_branch, br_depth,
+ true);
}
void RefIsI31(FullDecoder* decoder, const Value& object, Value* result) {
@@ -1067,8 +1113,8 @@ class WasmGraphBuildingInterface {
void BrOnI31(FullDecoder* decoder, const Value& object,
Value* value_on_branch, uint32_t br_depth) {
BrOnCastAbs<&compiler::WasmGraphBuilder::BrOnI31>(
- decoder, object, Value{nullptr, kWasmBottom}, value_on_branch,
- br_depth);
+ decoder, object, Value{nullptr, kWasmBottom}, value_on_branch, br_depth,
+ true);
}
void Forward(FullDecoder* decoder, const Value& from, Value* to) {
@@ -1080,7 +1126,8 @@ class WasmGraphBuildingInterface {
private:
SsaEnv* ssa_env_ = nullptr;
compiler::WasmGraphBuilder* builder_;
- uint32_t current_catch_ = kNullCatch;
+ int func_index_;
+ const BranchHintMap* branch_hints_ = nullptr;
// Tracks loop data for loop unrolling.
std::vector<compiler::WasmLoopInfo> loop_infos_;
@@ -1088,13 +1135,9 @@ class WasmGraphBuildingInterface {
TFNode* control() { return builder_->control(); }
- uint32_t control_depth_of_current_catch(FullDecoder* decoder) {
- return decoder->control_depth() - 1 - current_catch_;
- }
-
TryInfo* current_try_info(FullDecoder* decoder) {
- DCHECK_LT(current_catch_, decoder->control_depth());
- return decoder->control_at(control_depth_of_current_catch(decoder))
+ DCHECK_LT(decoder->current_catch(), decoder->control_depth());
+ return decoder->control_at(decoder->control_depth_of_current_catch())
->try_info;
}
@@ -1122,9 +1165,6 @@ class WasmGraphBuildingInterface {
case SsaEnv::kMerged:
state = 'M';
break;
- case SsaEnv::kControlEnd:
- state = 'E';
- break;
}
}
PrintF("{set_env = %p, state = %c", env, state);
@@ -1146,7 +1186,7 @@ class WasmGraphBuildingInterface {
V8_INLINE TFNode* CheckForException(FullDecoder* decoder, TFNode* node) {
if (node == nullptr) return nullptr;
- const bool inside_try_scope = current_catch_ != kNullCatch;
+ const bool inside_try_scope = decoder->current_catch() != -1;
if (!inside_try_scope) return node;
return CheckForExceptionImpl(decoder, node);
@@ -1170,7 +1210,7 @@ class WasmGraphBuildingInterface {
TryInfo* try_info = current_try_info(decoder);
if (FLAG_wasm_loop_unrolling) {
ValueVector values;
- BuildNestedLoopExits(decoder, control_depth_of_current_catch(decoder),
+ BuildNestedLoopExits(decoder, decoder->control_depth_of_current_catch(),
true, values, &if_exception);
}
Goto(decoder, try_info->catch_env);
@@ -1218,8 +1258,10 @@ class WasmGraphBuildingInterface {
Value* values) {
DCHECK(merge == &c->start_merge || merge == &c->end_merge);
- SsaEnv* target = c->end_env;
+ SsaEnv* target = c->merge_env;
+ // This has to be computed before calling Goto().
const bool first = target->state == SsaEnv::kUnreachable;
+
Goto(decoder, target);
if (merge->arity == 0) return;
@@ -1327,7 +1369,6 @@ class WasmGraphBuildingInterface {
default:
UNREACHABLE();
}
- return ssa_env_->Kill();
}
// Create a complete copy of {from}.
@@ -1357,11 +1398,6 @@ class WasmGraphBuildingInterface {
return result;
}
- // Create an unreachable environment.
- SsaEnv* UnreachableEnv(Zone* zone) {
- return zone->New<SsaEnv>(zone, SsaEnv::kUnreachable, nullptr, nullptr, 0);
- }
-
void DoCall(FullDecoder* decoder, CallMode call_mode, uint32_t table_index,
CheckForNull null_check, TFNode* caller_node,
const FunctionSig* sig, uint32_t sig_index, const Value args[],
@@ -1523,10 +1559,11 @@ DecodeResult BuildTFGraph(AccountingAllocator* allocator,
compiler::WasmGraphBuilder* builder,
WasmFeatures* detected, const FunctionBody& body,
std::vector<compiler::WasmLoopInfo>* loop_infos,
- compiler::NodeOriginTable* node_origins) {
+ compiler::NodeOriginTable* node_origins,
+ int func_index) {
Zone zone(allocator, ZONE_NAME);
WasmFullDecoder<Decoder::kFullValidation, WasmGraphBuildingInterface> decoder(
- &zone, module, enabled, detected, body, builder);
+ &zone, module, enabled, detected, body, builder, func_index);
if (node_origins) {
builder->AddBytecodePositionDecorator(node_origins, &decoder);
}
diff --git a/deps/v8/src/wasm/graph-builder-interface.h b/deps/v8/src/wasm/graph-builder-interface.h
index ce125313e4..6c668e2b0a 100644
--- a/deps/v8/src/wasm/graph-builder-interface.h
+++ b/deps/v8/src/wasm/graph-builder-interface.h
@@ -10,7 +10,6 @@
#define V8_WASM_GRAPH_BUILDER_INTERFACE_H_
#include "src/wasm/decoder.h"
-#include "src/wasm/wasm-opcodes.h"
#include "src/wasm/wasm-result.h"
namespace v8 {
@@ -33,7 +32,7 @@ BuildTFGraph(AccountingAllocator* allocator, const WasmFeatures& enabled,
const WasmModule* module, compiler::WasmGraphBuilder* builder,
WasmFeatures* detected, const FunctionBody& body,
std::vector<compiler::WasmLoopInfo>* loop_infos,
- compiler::NodeOriginTable* node_origins);
+ compiler::NodeOriginTable* node_origins, int func_index);
} // namespace wasm
} // namespace internal
diff --git a/deps/v8/src/wasm/memory-protection-key.cc b/deps/v8/src/wasm/memory-protection-key.cc
new file mode 100644
index 0000000000..e8252cd9ce
--- /dev/null
+++ b/deps/v8/src/wasm/memory-protection-key.cc
@@ -0,0 +1,189 @@
+// Copyright 2021 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.
+
+#include "src/wasm/memory-protection-key.h"
+
+#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64)
+#include <sys/mman.h> // For {mprotect()} protection macros.
+#undef MAP_TYPE // Conflicts with MAP_TYPE in Torque-generated instance-types.h
+#endif
+
+#include "src/base/build_config.h"
+#include "src/base/logging.h"
+#include "src/base/macros.h"
+#include "src/base/platform/platform.h"
+
+// Runtime-detection of PKU support with {dlsym()}.
+//
+// For now, we support memory protection keys/PKEYs/PKU only for Linux on x64
+// based on glibc functions {pkey_alloc()}, {pkey_free()}, etc.
+// Those functions are only available since glibc version 2.27:
+// https://man7.org/linux/man-pages/man2/pkey_alloc.2.html
+// However, if we check the glibc verison with V8_GLIBC_PREPREQ here at compile
+// time, this causes two problems due to dynamic linking of glibc:
+// 1) If the compiling system _has_ a new enough glibc, the binary will include
+// calls to {pkey_alloc()} etc., and then the runtime system must supply a
+// new enough glibc version as well. That is, this potentially breaks runtime
+// compatability on older systems (e.g., Ubuntu 16.04 with glibc 2.23).
+// 2) If the compiling system _does not_ have a new enough glibc, PKU support
+// will not be compiled in, even though the runtime system potentially _does_
+// have support for it due to a new enough Linux kernel and glibc version.
+// That is, this results in non-optimal security (PKU available, but not used).
+// Hence, we do _not_ check the glibc version during compilation, and instead
+// only at runtime try to load {pkey_alloc()} etc. with {dlsym()}.
+// TODO(dlehmann): Move this import and freestanding functions below to
+// base/platform/platform.h {OS} (lower-level functions) and
+// {base::PageAllocator} (exported API).
+#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64)
+#include <dlfcn.h>
+#endif
+
+namespace v8 {
+namespace internal {
+namespace wasm {
+
+// TODO(dlehmann) Security: Are there alternatives to disabling CFI altogether
+// for the functions below? Since they are essentially an arbitrary indirect
+// call gadget, disabling CFI should be only a last resort. In Chromium, there
+// was {base::ProtectedMemory} to protect the function pointer from being
+// overwritten, but t seems it was removed to not begin used and AFAICT no such
+// thing exists in V8 to begin with. See
+// https://www.chromium.org/developers/testing/control-flow-integrity and
+// https://crrev.com/c/1884819.
+// What is the general solution for CFI + {dlsym()}?
+// An alternative would be to not rely on glibc and instead implement PKEY
+// directly on top of Linux syscalls + inline asm, but that is quite some low-
+// level code (probably in the order of 100 lines).
+DISABLE_CFI_ICALL
+int AllocateMemoryProtectionKey() {
+// See comment on the import on feature testing for PKEY support.
+#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64)
+ // Try to to find {pkey_alloc()} support in glibc.
+ typedef int (*pkey_alloc_t)(unsigned int, unsigned int);
+ // Cache the {dlsym()} lookup in a {static} variable.
+ static auto* pkey_alloc =
+ bit_cast<pkey_alloc_t>(dlsym(RTLD_DEFAULT, "pkey_alloc"));
+ if (pkey_alloc != nullptr) {
+ // If there is support in glibc, try to allocate a new key.
+ // This might still return -1, e.g., because the kernel does not support
+ // PKU or because there is no more key available.
+ // Different reasons for why {pkey_alloc()} failed could be checked with
+ // errno, e.g., EINVAL vs ENOSPC vs ENOSYS. See manpages and glibc manual
+ // (the latter is the authorative source):
+ // https://www.gnu.org/software/libc/manual/html_mono/libc.html#Memory-Protection-Keys
+ return pkey_alloc(/* flags, unused */ 0, kDisableAccess);
+ }
+#endif
+ return kNoMemoryProtectionKey;
+}
+
+DISABLE_CFI_ICALL
+void FreeMemoryProtectionKey(int key) {
+ // Only free the key if one was allocated.
+ if (key == kNoMemoryProtectionKey) return;
+
+#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64)
+ typedef int (*pkey_free_t)(int);
+ static auto* pkey_free =
+ bit_cast<pkey_free_t>(dlsym(RTLD_DEFAULT, "pkey_free"));
+ // If a valid key was allocated, {pkey_free()} must also be available.
+ DCHECK_NOT_NULL(pkey_free);
+
+ int ret = pkey_free(key);
+ CHECK_EQ(/* success */ 0, ret);
+#else
+ // On platforms without PKU support, we should have already returned because
+ // the key must be {kNoMemoryProtectionKey}.
+ UNREACHABLE();
+#endif
+}
+
+#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64)
+// TODO(dlehmann): Copied from base/platform/platform-posix.cc. Should be
+// removed once this code is integrated in base/platform/platform-linux.cc.
+int GetProtectionFromMemoryPermission(base::OS::MemoryPermission access) {
+ switch (access) {
+ case base::OS::MemoryPermission::kNoAccess:
+ case base::OS::MemoryPermission::kNoAccessWillJitLater:
+ return PROT_NONE;
+ case base::OS::MemoryPermission::kRead:
+ return PROT_READ;
+ case base::OS::MemoryPermission::kReadWrite:
+ return PROT_READ | PROT_WRITE;
+ case base::OS::MemoryPermission::kReadWriteExecute:
+ return PROT_READ | PROT_WRITE | PROT_EXEC;
+ case base::OS::MemoryPermission::kReadExecute:
+ return PROT_READ | PROT_EXEC;
+ }
+ UNREACHABLE();
+}
+#endif
+
+DISABLE_CFI_ICALL
+bool SetPermissionsAndMemoryProtectionKey(
+ PageAllocator* page_allocator, base::AddressRegion region,
+ PageAllocator::Permission page_permissions, int key) {
+ DCHECK_NOT_NULL(page_allocator);
+
+ void* address = reinterpret_cast<void*>(region.begin());
+ size_t size = region.size();
+
+#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64)
+ typedef int (*pkey_mprotect_t)(void*, size_t, int, int);
+ static auto* pkey_mprotect =
+ bit_cast<pkey_mprotect_t>(dlsym(RTLD_DEFAULT, "pkey_mprotect"));
+
+ if (pkey_mprotect == nullptr) {
+ // If there is no runtime support for {pkey_mprotect()}, no key should have
+ // been allocated in the first place.
+ DCHECK_EQ(kNoMemoryProtectionKey, key);
+
+ // Without PKU support, fallback to regular {mprotect()}.
+ return page_allocator->SetPermissions(address, size, page_permissions);
+ }
+
+ // Copied with slight modifications from base/platform/platform-posix.cc
+ // {OS::SetPermissions()}.
+ // TODO(dlehmann): Move this block into its own function at the right
+ // abstraction boundary (likely some static method in platform.h {OS})
+ // once the whole PKU code is moved into base/platform/.
+ DCHECK_EQ(0, region.begin() % page_allocator->CommitPageSize());
+ DCHECK_EQ(0, size % page_allocator->CommitPageSize());
+
+ int protection = GetProtectionFromMemoryPermission(
+ static_cast<base::OS::MemoryPermission>(page_permissions));
+
+ int ret = pkey_mprotect(address, size, protection, key);
+
+ return ret == /* success */ 0;
+#else
+ // Without PKU support, fallback to regular {mprotect()}.
+ return page_allocator->SetPermissions(address, size, page_permissions);
+#endif
+}
+
+DISABLE_CFI_ICALL
+bool SetPermissionsForMemoryProtectionKey(
+ int key, MemoryProtectionKeyPermission permissions) {
+ if (key == kNoMemoryProtectionKey) return false;
+
+#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64)
+ typedef int (*pkey_set_t)(int, unsigned int);
+ static auto* pkey_set = bit_cast<pkey_set_t>(dlsym(RTLD_DEFAULT, "pkey_set"));
+ // If a valid key was allocated, {pkey_set()} must also be available.
+ DCHECK_NOT_NULL(pkey_set);
+
+ int ret = pkey_set(key, permissions);
+
+ return ret == /* success */ 0;
+#else
+ // On platforms without PKU support, we should have already returned because
+ // the key must be {kNoMemoryProtectionKey}.
+ UNREACHABLE();
+#endif
+}
+
+} // namespace wasm
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/src/wasm/memory-protection-key.h b/deps/v8/src/wasm/memory-protection-key.h
new file mode 100644
index 0000000000..9f9a200cdf
--- /dev/null
+++ b/deps/v8/src/wasm/memory-protection-key.h
@@ -0,0 +1,90 @@
+// Copyright 2021 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.
+
+#if !V8_ENABLE_WEBASSEMBLY
+#error This header should only be included if WebAssembly is enabled.
+#endif // !V8_ENABLE_WEBASSEMBLY
+
+#ifndef V8_WASM_MEMORY_PROTECTION_KEY_H_
+#define V8_WASM_MEMORY_PROTECTION_KEY_H_
+
+#if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64)
+#include <sys/mman.h> // For STATIC_ASSERT of permission values.
+#undef MAP_TYPE // Conflicts with MAP_TYPE in Torque-generated instance-types.h
+#endif
+
+#include "include/v8-platform.h"
+#include "src/base/address-region.h"
+
+namespace v8 {
+namespace internal {
+namespace wasm {
+
+// TODO(dlehmann): Move this to base/platform/platform.h {OS} (lower-level API)
+// and {base::PageAllocator} (higher-level, exported API) once the API is more
+// stable and we have converged on a better design (e.g., typed class wrapper
+// around int memory protection key).
+
+// Sentinel value if there is no PKU support or allocation of a key failed.
+// This is also the return value on an error of pkey_alloc() and has the
+// benefit that calling pkey_mprotect() with -1 behaves the same as regular
+// mprotect().
+constexpr int kNoMemoryProtectionKey = -1;
+
+// Permissions for memory protection keys on top of the page's permissions.
+// NOTE: Since there is no executable bit, the executable permission cannot be
+// withdrawn by memory protection keys.
+enum MemoryProtectionKeyPermission {
+ kNoRestrictions = 0,
+ kDisableAccess = 1,
+ kDisableWrite = 2,
+};
+
+// If sys/mman.h has PKEY support (on newer Linux distributions), ensure that
+// our definitions of the permissions is consistent with the ones in glibc.
+#if defined(PKEY_DISABLE_ACCESS)
+STATIC_ASSERT(kDisableAccess == PKEY_DISABLE_ACCESS);
+STATIC_ASSERT(kDisableWrite == PKEY_DISABLE_WRITE);
+#endif
+
+// Allocates a memory protection key on platforms with PKU support, returns
+// {kNoMemoryProtectionKey} on platforms without support or when allocation
+// failed at runtime.
+int AllocateMemoryProtectionKey();
+
+// Frees the given memory protection key, to make it available again for the
+// next call to {AllocateMemoryProtectionKey()}. Note that this does NOT
+// invalidate access rights to pages that are still tied to that key. That is,
+// if the key is reused and pages with that key are still accessable, this might
+// be a security issue. See
+// https://www.gnu.org/software/libc/manual/html_mono/libc.html#Memory-Protection-Keys
+void FreeMemoryProtectionKey(int key);
+
+// Associates a memory protection {key} with the given {region}.
+// If {key} is {kNoMemoryProtectionKey} this behaves like "plain"
+// {SetPermissions()} and associates the default key to the region. That is,
+// explicitly calling with {kNoMemoryProtectionKey} can be used to disassociate
+// any protection key from a region. This also means "plain" {SetPermissions()}
+// disassociates the key from a region, making the key's access restrictions
+// irrelevant/inactive for that region.
+// Returns true if changing permissions and key was successful. (Returns a bool
+// to be consistent with {SetPermissions()}).
+// The {page_permissions} are the permissions of the page, not the key. For
+// changing the permissions of the key, use
+// {SetPermissionsForMemoryProtectionKey()} instead.
+bool SetPermissionsAndMemoryProtectionKey(
+ PageAllocator* page_allocator, base::AddressRegion region,
+ PageAllocator::Permission page_permissions, int key);
+
+// Set the key's permissions and return whether this was successful.
+// Returns false on platforms without PKU support or when the operation failed,
+// e.g., because the key was invalid.
+bool SetPermissionsForMemoryProtectionKey(
+ int key, MemoryProtectionKeyPermission permissions);
+
+} // namespace wasm
+} // namespace internal
+} // namespace v8
+
+#endif // V8_WASM_MEMORY_PROTECTION_KEY_H_
diff --git a/deps/v8/src/wasm/memory-tracing.cc b/deps/v8/src/wasm/memory-tracing.cc
index 0d88c4b461..68310a03f3 100644
--- a/deps/v8/src/wasm/memory-tracing.cc
+++ b/deps/v8/src/wasm/memory-tracing.cc
@@ -50,7 +50,7 @@ void TraceMemoryOperation(base::Optional<ExecutionTier> tier,
}
const char* eng =
tier.has_value() ? ExecutionTierToString(tier.value()) : "?";
- printf("%-11s func:%6d+0x%-6x%s %016" PRIuPTR " val: %s\n", eng, func_index,
+ printf("%-11s func:%6d:0x%-6x%s %016" PRIuPTR " val: %s\n", eng, func_index,
position, info->is_store ? " store to" : "load from", info->offset,
value.begin());
}
diff --git a/deps/v8/src/wasm/module-compiler.cc b/deps/v8/src/wasm/module-compiler.cc
index 3b1d8750ba..4742a85070 100644
--- a/deps/v8/src/wasm/module-compiler.cc
+++ b/deps/v8/src/wasm/module-compiler.cc
@@ -32,7 +32,6 @@
#include "src/wasm/wasm-js.h"
#include "src/wasm/wasm-limits.h"
#include "src/wasm/wasm-objects-inl.h"
-#include "src/wasm/wasm-opcodes.h"
#include "src/wasm/wasm-result.h"
#include "src/wasm/wasm-serialization.h"
@@ -531,17 +530,19 @@ class CompilationStateImpl {
CompilationStateImpl(const std::shared_ptr<NativeModule>& native_module,
std::shared_ptr<Counters> async_counters);
~CompilationStateImpl() {
- DCHECK(compile_job_->IsValid());
- compile_job_->CancelAndDetach();
+ if (compile_job_->IsValid()) compile_job_->CancelAndDetach();
}
// Call right after the constructor, after the {compilation_state_} field in
// the {NativeModule} has been initialized.
void InitCompileJob(WasmEngine*);
- // Cancel all background compilation, without waiting for compile tasks to
- // finish.
- void CancelCompilation();
+ // {kCancelUnconditionally}: Cancel all compilation.
+ // {kCancelInitialCompilation}: Cancel all compilation if initial (baseline)
+ // compilation is not finished yet.
+ enum CancellationPolicy { kCancelUnconditionally, kCancelInitialCompilation };
+ void CancelCompilation(CancellationPolicy);
+
bool cancelled() const;
// Initialize compilation progress. Set compilation tiers to expect for
@@ -767,7 +768,6 @@ void UpdateFeatureUseCounts(Isolate* isolate, const WasmFeatures& detected) {
using Feature = v8::Isolate::UseCounterFeature;
constexpr static std::pair<WasmFeature, Feature> kUseCounters[] = {
{kFeature_reftypes, Feature::kWasmRefTypes},
- {kFeature_mv, Feature::kWasmMultiValue},
{kFeature_simd, Feature::kWasmSimdOpcodes},
{kFeature_threads, Feature::kWasmThreadOpcodes},
{kFeature_eh, Feature::kWasmExceptionHandling}};
@@ -791,7 +791,14 @@ void CompilationState::InitCompileJob(WasmEngine* engine) {
Impl(this)->InitCompileJob(engine);
}
-void CompilationState::CancelCompilation() { Impl(this)->CancelCompilation(); }
+void CompilationState::CancelCompilation() {
+ Impl(this)->CancelCompilation(CompilationStateImpl::kCancelUnconditionally);
+}
+
+void CompilationState::CancelInitialCompilation() {
+ Impl(this)->CancelCompilation(
+ CompilationStateImpl::kCancelInitialCompilation);
+}
void CompilationState::SetError() { Impl(this)->SetError(); }
@@ -1202,16 +1209,25 @@ CompilationExecutionResult ExecuteJSToWasmWrapperCompilationUnits(
std::shared_ptr<JSToWasmWrapperCompilationUnit> wrapper_unit = nullptr;
int num_processed_wrappers = 0;
+ OperationsBarrier::Token wrapper_compilation_token;
+ Isolate* isolate;
+
{
BackgroundCompileScope compile_scope(native_module);
if (compile_scope.cancelled()) return kYield;
wrapper_unit = compile_scope.compilation_state()
->GetNextJSToWasmWrapperCompilationUnit();
if (!wrapper_unit) return kNoMoreUnits;
+ isolate = wrapper_unit->isolate();
+ wrapper_compilation_token =
+ compile_scope.native_module()->engine()->StartWrapperCompilation(
+ isolate);
+ if (!wrapper_compilation_token) return kNoMoreUnits;
}
TRACE_EVENT0("v8.wasm", "wasm.JSToWasmWrapperCompilation");
while (true) {
+ DCHECK_EQ(isolate, wrapper_unit->isolate());
wrapper_unit->Execute();
++num_processed_wrappers;
bool yield = delegate && delegate->ShouldYield();
@@ -1829,10 +1845,10 @@ std::shared_ptr<StreamingDecoder> AsyncCompileJob::CreateStreamingDecoder() {
AsyncCompileJob::~AsyncCompileJob() {
// Note: This destructor always runs on the foreground thread of the isolate.
background_task_manager_.CancelAndWait();
- // If the runtime objects were not created yet, then initial compilation did
- // not finish yet. In this case we can abort compilation.
- if (native_module_ && module_object_.is_null()) {
- Impl(native_module_->compilation_state())->CancelCompilation();
+ // If initial compilation did not finish yet we can abort it.
+ if (native_module_) {
+ Impl(native_module_->compilation_state())
+ ->CancelCompilation(CompilationStateImpl::kCancelInitialCompilation);
}
// Tell the streaming decoder that the AsyncCompileJob is not available
// anymore.
@@ -2459,7 +2475,8 @@ void AsyncStreamingProcessor::FinishAsyncCompileJobWithError(
// Check if there is already a CompiledModule, in which case we have to clean
// up the CompilationStateImpl as well.
if (job_->native_module_) {
- Impl(job_->native_module_->compilation_state())->CancelCompilation();
+ Impl(job_->native_module_->compilation_state())
+ ->CancelCompilation(CompilationStateImpl::kCancelUnconditionally);
job_->DoSync<AsyncCompileJob::DecodeFail,
AsyncCompileJob::kUseExistingForegroundTask>(error);
@@ -2783,13 +2800,22 @@ void CompilationStateImpl::InitCompileJob(WasmEngine* engine) {
async_counters_));
}
-void CompilationStateImpl::CancelCompilation() {
+void CompilationStateImpl::CancelCompilation(
+ CompilationStateImpl::CancellationPolicy cancellation_policy) {
+ base::MutexGuard callbacks_guard(&callbacks_mutex_);
+
+ if (cancellation_policy == kCancelInitialCompilation &&
+ finished_events_.contains(
+ CompilationEvent::kFinishedBaselineCompilation)) {
+ // Initial compilation already finished; cannot be cancelled.
+ return;
+ }
+
// std::memory_order_relaxed is sufficient because no other state is
// synchronized with |compile_cancelled_|.
compile_cancelled_.store(true, std::memory_order_relaxed);
// No more callbacks after abort.
- base::MutexGuard callbacks_guard(&callbacks_mutex_);
callbacks_.clear();
}
@@ -3040,7 +3066,8 @@ void CompilationStateImpl::FinalizeJSToWasmWrappers(
js_to_wasm_wrapper_units_.size());
CodeSpaceMemoryModificationScope modification_scope(isolate->heap());
for (auto& unit : js_to_wasm_wrapper_units_) {
- Handle<Code> code = unit->Finalize(isolate);
+ DCHECK_EQ(isolate, unit->isolate());
+ Handle<Code> code = unit->Finalize();
int wrapper_index =
GetExportWrapperIndex(module, unit->sig(), unit->is_import());
(*export_wrappers_out)->set(wrapper_index, *code);
@@ -3090,7 +3117,8 @@ void CompilationStateImpl::OnFinishedUnits(Vector<WasmCode*> code_vector) {
DCHECK_NOT_NULL(code);
DCHECK_LT(code->index(), native_module_->num_functions());
- if (code->index() < native_module_->num_imported_functions()) {
+ if (code->index() <
+ static_cast<int>(native_module_->num_imported_functions())) {
// Import wrapper.
DCHECK_EQ(code->tier(), ExecutionTier::kTurbofan);
outstanding_baseline_units_--;
@@ -3449,7 +3477,8 @@ void CompileJsToWasmWrappers(Isolate* isolate, const WasmModule* module,
for (auto& pair : compilation_units) {
JSToWasmWrapperKey key = pair.first;
JSToWasmWrapperCompilationUnit* unit = pair.second.get();
- Handle<Code> code = unit->Finalize(isolate);
+ DCHECK_EQ(isolate, unit->isolate());
+ Handle<Code> code = unit->Finalize();
int wrapper_index = GetExportWrapperIndex(module, &key.second, key.first);
(*export_wrappers_out)->set(wrapper_index, *code);
RecordStats(*code, isolate->counters());
diff --git a/deps/v8/src/wasm/module-decoder.cc b/deps/v8/src/wasm/module-decoder.cc
index f2c77efb23..be4d8ef833 100644
--- a/deps/v8/src/wasm/module-decoder.cc
+++ b/deps/v8/src/wasm/module-decoder.cc
@@ -34,6 +34,7 @@ namespace {
constexpr char kNameString[] = "name";
constexpr char kSourceMappingURLString[] = "sourceMappingURL";
constexpr char kCompilationHintsString[] = "compilationHints";
+constexpr char kBranchHintsString[] = "branchHints";
constexpr char kDebugInfoString[] = ".debug_info";
constexpr char kExternalDebugInfoString[] = "external_debug_info";
@@ -95,6 +96,8 @@ const char* SectionName(SectionCode code) {
return kExternalDebugInfoString;
case kCompilationHintsSectionCode:
return kCompilationHintsString;
+ case kBranchHintsSectionCode:
+ return kBranchHintsString;
default:
return "<unknown>";
}
@@ -144,6 +147,7 @@ SectionCode IdentifyUnknownSectionInternal(Decoder* decoder) {
{StaticCharVector(kNameString), kNameSectionCode},
{StaticCharVector(kSourceMappingURLString), kSourceMappingURLSectionCode},
{StaticCharVector(kCompilationHintsString), kCompilationHintsSectionCode},
+ {StaticCharVector(kBranchHintsString), kBranchHintsSectionCode},
{StaticCharVector(kDebugInfoString), kDebugInfoSectionCode},
{StaticCharVector(kExternalDebugInfoString),
kExternalDebugInfoSectionCode}};
@@ -432,6 +436,13 @@ class ModuleDecoderImpl : public Decoder {
// first occurrence after function section and before code section are
// ignored.
break;
+ case kBranchHintsSectionCode:
+ // TODO(yuri): report out of place branch hints section as a
+ // warning.
+ // Be lenient with placement of compilation hints section. All except
+ // first occurrence after function section and before code section are
+ // ignored.
+ break;
default:
next_ordered_section_ = section_code + 1;
break;
@@ -498,6 +509,15 @@ class ModuleDecoderImpl : public Decoder {
consume_bytes(static_cast<uint32_t>(end_ - start_), nullptr);
}
break;
+ case kBranchHintsSectionCode:
+ if (enabled_features_.has_branch_hinting()) {
+ DecodeBranchHintsSection();
+ } else {
+ // Ignore this section when feature was disabled. It is an optional
+ // custom section anyways.
+ consume_bytes(static_cast<uint32_t>(end_ - start_), nullptr);
+ }
+ break;
case kDataCountSectionCode:
DecodeDataCountSection();
break;
@@ -884,50 +904,25 @@ class ModuleDecoderImpl : public Decoder {
uint32_t element_count =
consume_count("element count", FLAG_wasm_max_table_size);
- for (uint32_t i = 0; ok() && i < element_count; ++i) {
- const byte* pos = pc();
-
- WasmElemSegment::Status status;
- bool functions_as_elements;
- uint32_t table_index;
- WasmInitExpr offset;
- ValueType type = kWasmBottom;
- consume_element_segment_header(&status, &functions_as_elements, &type,
- &table_index, &offset);
+ for (uint32_t i = 0; i < element_count; ++i) {
+ bool expressions_as_elements;
+ WasmElemSegment segment =
+ consume_element_segment_header(&expressions_as_elements);
if (failed()) return;
- DCHECK_NE(type, kWasmBottom);
-
- if (status == WasmElemSegment::kStatusActive) {
- if (table_index >= module_->tables.size()) {
- errorf(pos, "out of bounds table index %u", table_index);
- break;
- }
- if (!IsSubtypeOf(type, module_->tables[table_index].type,
- this->module_.get())) {
- errorf(pos,
- "Invalid element segment. Table %u is not a super-type of %s",
- table_index, type.name().c_str());
- break;
- }
- }
+ DCHECK_NE(segment.type, kWasmBottom);
uint32_t num_elem =
consume_count("number of elements", max_table_init_entries());
- if (status == WasmElemSegment::kStatusActive) {
- module_->elem_segments.emplace_back(table_index, std::move(offset));
- } else {
- module_->elem_segments.emplace_back(
- status == WasmElemSegment::kStatusDeclarative);
- }
- WasmElemSegment* init = &module_->elem_segments.back();
- init->type = type;
for (uint32_t j = 0; j < num_elem; j++) {
- uint32_t index = functions_as_elements ? consume_element_expr()
- : consume_element_func_index();
- if (failed()) break;
- init->entries.push_back(index);
+ WasmInitExpr init =
+ expressions_as_elements
+ ? consume_element_expr()
+ : WasmInitExpr::RefFuncConst(consume_element_func_index());
+ if (failed()) return;
+ segment.entries.push_back(std::move(init));
}
+ module_->elem_segments.push_back(std::move(segment));
}
}
@@ -1174,6 +1169,82 @@ class ModuleDecoderImpl : public Decoder {
// consume_bytes(static_cast<uint32_t>(end_ - start_), nullptr);
}
+ void DecodeBranchHintsSection() {
+ TRACE("DecodeBranchHints module+%d\n", static_cast<int>(pc_ - start_));
+ if (!has_seen_unordered_section(kBranchHintsSectionCode)) {
+ set_seen_unordered_section(kBranchHintsSectionCode);
+ // Use an inner decoder so that errors don't fail the outer decoder.
+ Decoder inner(start_, pc_, end_, buffer_offset_);
+ BranchHintInfo branch_hints;
+
+ uint32_t func_count = inner.consume_u32v("number of functions");
+ // Keep track of the previous function index to validate the ordering
+ int64_t last_func_idx = -1;
+ for (uint32_t i = 0; i < func_count; i++) {
+ uint32_t func_idx = inner.consume_u32v("function index");
+ if (int64_t(func_idx) <= last_func_idx) {
+ inner.errorf("Invalid function index: %d", func_idx);
+ break;
+ }
+ last_func_idx = func_idx;
+ uint8_t reserved = inner.consume_u8("reserved byte");
+ if (reserved != 0x0) {
+ inner.errorf("Invalid reserved byte: %#x", reserved);
+ break;
+ }
+ uint32_t num_hints = inner.consume_u32v("number of hints");
+ BranchHintMap func_branch_hints;
+ TRACE("DecodeBranchHints[%d] module+%d\n", func_idx,
+ static_cast<int>(inner.pc() - inner.start()));
+ // Keep track of the previous branch offset to validate the ordering
+ int64_t last_br_off = -1;
+ for (uint32_t j = 0; j < num_hints; ++j) {
+ uint32_t br_dir = inner.consume_u32v("branch direction");
+ uint32_t br_off = inner.consume_u32v("branch instruction offset");
+ if (int64_t(br_off) <= last_br_off) {
+ inner.errorf("Invalid branch offset: %d", br_off);
+ break;
+ }
+ last_br_off = br_off;
+ TRACE("DecodeBranchHints[%d][%d] module+%d\n", func_idx, br_off,
+ static_cast<int>(inner.pc() - inner.start()));
+ WasmBranchHint hint;
+ switch (br_dir) {
+ case 0:
+ hint = WasmBranchHint::kUnlikely;
+ break;
+ case 1:
+ hint = WasmBranchHint::kLikely;
+ break;
+ default:
+ hint = WasmBranchHint::kNoHint;
+ inner.errorf(inner.pc(), "Invalid branch hint %#x", br_dir);
+ break;
+ }
+ if (!inner.ok()) {
+ break;
+ }
+ func_branch_hints.insert(br_off, hint);
+ }
+ if (!inner.ok()) {
+ break;
+ }
+ branch_hints.emplace(func_idx, std::move(func_branch_hints));
+ }
+ // Extra unexpected bytes are an error.
+ if (inner.more()) {
+ inner.errorf("Unexpected extra bytes: %d\n",
+ static_cast<int>(inner.pc() - inner.start()));
+ }
+ // If everything went well, accept the hints for the module.
+ if (inner.ok()) {
+ module_->branch_hints = std::move(branch_hints);
+ }
+ }
+ // Skip the whole branch hints section in the outer decoder.
+ consume_bytes(static_cast<uint32_t>(end_ - start_), nullptr);
+ }
+
void DecodeDataCountSection() {
module_->num_declared_data_segments =
consume_count("data segments count", kV8MaxWasmDataSegments);
@@ -1911,10 +1982,8 @@ class ModuleDecoderImpl : public Decoder {
std::vector<ValueType> returns;
// Parse return types.
- const size_t max_return_count = enabled_features_.has_mv()
- ? kV8MaxWasmFunctionMultiReturns
- : kV8MaxWasmFunctionReturns;
- uint32_t return_count = consume_count("return count", max_return_count);
+ uint32_t return_count =
+ consume_count("return count", kV8MaxWasmFunctionReturns);
if (failed()) return nullptr;
for (uint32_t i = 0; ok() && i < return_count; ++i) {
returns.push_back(consume_value_type());
@@ -1967,86 +2036,114 @@ class ModuleDecoderImpl : public Decoder {
return attribute;
}
- void consume_element_segment_header(WasmElemSegment::Status* status,
- bool* functions_as_elements,
- ValueType* type, uint32_t* table_index,
- WasmInitExpr* offset) {
+ WasmElemSegment consume_element_segment_header(
+ bool* expressions_as_elements) {
const byte* pos = pc();
- uint32_t flag = consume_u32v("flag");
// The mask for the bit in the flag which indicates if the segment is
- // active or not.
- constexpr uint8_t kIsPassiveMask = 0x01;
- // The mask for the bit in the flag which indicates if the segment has an
- // explicit table index field.
- constexpr uint8_t kHasTableIndexMask = 0x02;
+ // active or not (0 is active).
+ constexpr uint8_t kNonActiveMask = 1 << 0;
+ // The mask for the bit in the flag which indicates:
+ // - for active tables, if the segment has an explicit table index field.
+ // - for non-active tables, whether the table is declarative (vs. passive).
+ constexpr uint8_t kHasTableIndexOrIsDeclarativeMask = 1 << 1;
// The mask for the bit in the flag which indicates if the functions of this
- // segment are defined as function indices (=0) or elements(=1).
- constexpr uint8_t kFunctionsAsElementsMask = 0x04;
- constexpr uint8_t kFullMask =
- kIsPassiveMask | kHasTableIndexMask | kFunctionsAsElementsMask;
-
- bool is_passive = flag & kIsPassiveMask;
- if (!is_passive) {
- *status = WasmElemSegment::kStatusActive;
- if (module_->tables.size() == 0) {
- error(pc_, "Active element sections require a table");
- }
- } else if ((flag & kHasTableIndexMask)) { // Special bit combination for
- // declarative segments.
- *status = WasmElemSegment::kStatusDeclarative;
- } else {
- *status = WasmElemSegment::kStatusPassive;
+ // segment are defined as function indices (0) or init. expressions (1).
+ constexpr uint8_t kExpressionsAsElementsMask = 1 << 2;
+ constexpr uint8_t kFullMask = kNonActiveMask |
+ kHasTableIndexOrIsDeclarativeMask |
+ kExpressionsAsElementsMask;
+
+ uint32_t flag = consume_u32v("flag");
+ if ((flag & kFullMask) != flag) {
+ errorf(pos, "illegal flag value %u. Must be between 0 and 7", flag);
+ return {};
}
- *functions_as_elements = flag & kFunctionsAsElementsMask;
- bool has_table_index = (flag & kHasTableIndexMask) &&
- *status == WasmElemSegment::kStatusActive;
- if (*status == WasmElemSegment::kStatusDeclarative &&
+ const WasmElemSegment::Status status =
+ (flag & kNonActiveMask) ? (flag & kHasTableIndexOrIsDeclarativeMask)
+ ? WasmElemSegment::kStatusDeclarative
+ : WasmElemSegment::kStatusPassive
+ : WasmElemSegment::kStatusActive;
+ if (status == WasmElemSegment::kStatusDeclarative &&
!enabled_features_.has_reftypes()) {
error(
"Declarative element segments require --experimental-wasm-reftypes");
- return;
- }
- if ((flag & kFullMask) != flag) {
- errorf(pos, "illegal flag value %u. Must be between 0 and 7", flag);
+ return {};
}
+ const bool is_active = status == WasmElemSegment::kStatusActive;
- if (has_table_index) {
- *table_index = consume_u32v("table index");
- } else {
- *table_index = 0;
- }
+ *expressions_as_elements = flag & kExpressionsAsElementsMask;
- if (*status == WasmElemSegment::kStatusActive) {
- *offset = consume_init_expr(module_.get(), kWasmI32,
- module_.get()->globals.size());
- if (offset->kind() == WasmInitExpr::kNone) {
- // Failed to parse offset initializer, return early.
- return;
- }
+ const bool has_table_index =
+ is_active && (flag & kHasTableIndexOrIsDeclarativeMask);
+ uint32_t table_index = has_table_index ? consume_u32v("table index") : 0;
+ if (is_active && table_index >= module_->tables.size()) {
+ errorf(pos, "out of bounds%s table index %u",
+ has_table_index ? " implicit" : "", table_index);
+ return {};
}
-
- if (*status == WasmElemSegment::kStatusActive && !has_table_index) {
- // Active segments without table indices are a special case for backwards
- // compatibility. These cases have an implicit element kind or element
- // type, so we are done already with the segment header.
- *type = kWasmFuncRef;
- return;
+ ValueType table_type =
+ is_active ? module_->tables[table_index].type : kWasmBottom;
+
+ WasmInitExpr offset;
+ if (is_active) {
+ offset = consume_init_expr(module_.get(), kWasmI32,
+ module_.get()->globals.size());
+ // Failed to parse offset initializer, return early.
+ if (failed()) return {};
+ }
+
+ // Denotes an active segment without table index, type, or element kind.
+ const bool backwards_compatible_mode =
+ is_active && !(flag & kHasTableIndexOrIsDeclarativeMask);
+ ValueType type;
+ if (*expressions_as_elements) {
+ type =
+ backwards_compatible_mode ? kWasmFuncRef : consume_reference_type();
+ if (is_active && !IsSubtypeOf(type, table_type, this->module_.get())) {
+ errorf(pos,
+ "Element segment of type %s is not a subtype of referenced "
+ "table %u (of type %s)",
+ type.name().c_str(), table_index, table_type.name().c_str());
+ return {};
+ }
+ } else {
+ if (!backwards_compatible_mode) {
+ // We have to check that there is an element kind of type Function. All
+ // other element kinds are not valid yet.
+ uint8_t val = consume_u8("element kind");
+ if (static_cast<ImportExportKindCode>(val) != kExternalFunction) {
+ errorf(pos, "illegal element kind 0x%x. Must be 0x%x", val,
+ kExternalFunction);
+ return {};
+ }
+ }
+ if (!is_active) {
+ // Declarative and passive segments without explicit type are funcref.
+ type = kWasmFuncRef;
+ } else {
+ type = table_type;
+ // Active segments with function indices must reference a function
+ // table. TODO(7748): Add support for anyref tables when we have them.
+ if (!IsSubtypeOf(table_type, kWasmFuncRef, this->module_.get())) {
+ errorf(pos,
+ "An active element segment with function indices as elements "
+ "must reference a table of %s. Instead, table %u of type %s "
+ "is referenced.",
+ enabled_features_.has_typed_funcref()
+ ? "a subtype of type funcref"
+ : "type funcref",
+ table_index, table_type.name().c_str());
+ return {};
+ }
+ }
}
- if (*functions_as_elements) {
- *type = consume_reference_type();
+ if (is_active) {
+ return {type, table_index, std::move(offset)};
} else {
- // We have to check that there is an element kind of type Function. All
- // other element kinds are not valid yet.
- uint8_t val = consume_u8("element kind");
- ImportExportKindCode kind = static_cast<ImportExportKindCode>(val);
- if (kind != kExternalFunction) {
- errorf(pos, "illegal element kind %x. Must be 0x00", val);
- return;
- }
- *type = kWasmFuncRef;
+ return {type, status == WasmElemSegment::kStatusDeclarative};
}
}
@@ -2091,32 +2188,49 @@ class ModuleDecoderImpl : public Decoder {
func->declared = true;
DCHECK_NE(func, nullptr);
DCHECK_EQ(index, func->func_index);
- DCHECK_NE(index, WasmElemSegment::kNullIndex);
return index;
}
- uint32_t consume_element_expr() {
- uint32_t index = WasmElemSegment::kNullIndex;
+ // TODO(manoskouk): When reftypes lands, remove this and use
+ // consume_init_expr() instead.
+ WasmInitExpr consume_element_expr() {
uint8_t opcode = consume_u8("element opcode");
- if (failed()) return index;
+ if (failed()) return {};
switch (opcode) {
case kExprRefNull: {
HeapTypeImmediate<kFullValidation> imm(WasmFeatures::All(), this,
this->pc(), module_.get());
consume_bytes(imm.length, "ref.null immediate");
- index = WasmElemSegment::kNullIndex;
- break;
+ expect_u8("end opcode", kExprEnd);
+ return WasmInitExpr::RefNullConst(imm.type.representation());
+ }
+ case kExprRefFunc: {
+ uint32_t index = consume_element_func_index();
+ if (failed()) return {};
+ expect_u8("end opcode", kExprEnd);
+ return WasmInitExpr::RefFuncConst(index);
+ }
+ case kExprGlobalGet: {
+ if (!enabled_features_.has_reftypes()) {
+ errorf(
+ "Unexpected opcode 0x%x in element. Enable with "
+ "--experimental-wasm-reftypes",
+ kExprGlobalGet);
+ return {};
+ }
+ uint32_t index = this->consume_u32v("global index");
+ if (failed()) return {};
+ if (index >= module_->globals.size()) {
+ errorf("Out-of-bounds global index %d", index);
+ return {};
+ }
+ expect_u8("end opcode", kExprEnd);
+ return WasmInitExpr::GlobalGet(index);
}
- case kExprRefFunc:
- index = consume_element_func_index();
- if (failed()) return index;
- break;
default:
error("invalid opcode in element");
- break;
+ return {};
}
- expect_u8("end opcode", kExprEnd);
- return index;
}
};
@@ -2374,8 +2488,7 @@ bool FindNameSection(Decoder* decoder) {
} // namespace
void DecodeFunctionNames(const byte* module_start, const byte* module_end,
- std::unordered_map<uint32_t, WireBytesRef>* names,
- const Vector<const WasmExport> export_table) {
+ std::unordered_map<uint32_t, WireBytesRef>* names) {
DCHECK_NOT_NULL(names);
DCHECK(names->empty());
@@ -2407,13 +2520,6 @@ void DecodeFunctionNames(const byte* module_start, const byte* module_end,
}
}
}
-
- // Extract from export table.
- for (const WasmExport& exp : export_table) {
- if (exp.kind == kExternalFunction && names->count(exp.index) == 0) {
- names->insert(std::make_pair(exp.index, exp.name));
- }
- }
}
NameMap DecodeNameMap(Vector<const uint8_t> module_bytes,
diff --git a/deps/v8/src/wasm/module-decoder.h b/deps/v8/src/wasm/module-decoder.h
index 2d33f51f31..2af2760ab4 100644
--- a/deps/v8/src/wasm/module-decoder.h
+++ b/deps/v8/src/wasm/module-decoder.h
@@ -187,13 +187,11 @@ V8_EXPORT_PRIVATE std::vector<CustomSectionOffset> DecodeCustomSections(
// function.
AsmJsOffsetsResult DecodeAsmJsOffsets(Vector<const uint8_t> encoded_offsets);
-// Decode the function names from the name section and also look at export
-// table. Returns the result as an unordered map. Only names with valid utf8
-// encoding are stored and conflicts are resolved by choosing the last name
-// read.
+// Decode the function names from the name section. Returns the result as an
+// unordered map. Only names with valid utf8 encoding are stored and conflicts
+// are resolved by choosing the last name read.
void DecodeFunctionNames(const byte* module_start, const byte* module_end,
- std::unordered_map<uint32_t, WireBytesRef>* names,
- const Vector<const WasmExport> export_table);
+ std::unordered_map<uint32_t, WireBytesRef>* names);
// Decode the requested subsection of the name section.
// The result will be empty if no name section is present. On encountering an
diff --git a/deps/v8/src/wasm/module-instantiate.cc b/deps/v8/src/wasm/module-instantiate.cc
index f64a657eb8..7945e79849 100644
--- a/deps/v8/src/wasm/module-instantiate.cc
+++ b/deps/v8/src/wasm/module-instantiate.cc
@@ -20,6 +20,7 @@
#include "src/wasm/wasm-module.h"
#include "src/wasm/wasm-objects-inl.h"
#include "src/wasm/wasm-subtyping.h"
+#include "src/wasm/wasm-value.h"
#define TRACE(...) \
do { \
@@ -122,16 +123,17 @@ Handle<Map> CreateStructMap(Isolate* isolate, const WasmModule* module,
int struct_index, Handle<Map> opt_rtt_parent) {
const wasm::StructType* type = module->struct_type(struct_index);
const int inobject_properties = 0;
- DCHECK_LE(type->total_fields_size(), kMaxInt - WasmStruct::kHeaderSize);
- const int instance_size =
- WasmStruct::kHeaderSize + static_cast<int>(type->total_fields_size());
+ // We have to use the variable size sentinel because the instance size
+ // stored directly in a Map is capped at 255 pointer sizes.
+ const int map_instance_size = kVariableSizeSentinel;
+ const int real_instance_size = WasmStruct::Size(type);
const InstanceType instance_type = WASM_STRUCT_TYPE;
// TODO(jkummerow): If NO_ELEMENTS were supported, we could use that here.
const ElementsKind elements_kind = TERMINAL_FAST_ELEMENTS_KIND;
Handle<WasmTypeInfo> type_info = isolate->factory()->NewWasmTypeInfo(
- reinterpret_cast<Address>(type), opt_rtt_parent);
+ reinterpret_cast<Address>(type), opt_rtt_parent, real_instance_size);
Handle<Map> map = isolate->factory()->NewMap(
- instance_type, instance_size, elements_kind, inobject_properties);
+ instance_type, map_instance_size, elements_kind, inobject_properties);
map->set_wasm_type_info(*type_info);
return map;
}
@@ -141,10 +143,12 @@ Handle<Map> CreateArrayMap(Isolate* isolate, const WasmModule* module,
const wasm::ArrayType* type = module->array_type(array_index);
const int inobject_properties = 0;
const int instance_size = kVariableSizeSentinel;
+ // Wasm Arrays don't have a static instance size.
+ const int cached_instance_size = 0;
const InstanceType instance_type = WASM_ARRAY_TYPE;
const ElementsKind elements_kind = TERMINAL_FAST_ELEMENTS_KIND;
Handle<WasmTypeInfo> type_info = isolate->factory()->NewWasmTypeInfo(
- reinterpret_cast<Address>(type), opt_rtt_parent);
+ reinterpret_cast<Address>(type), opt_rtt_parent, cached_instance_size);
Handle<Map> map = isolate->factory()->NewMap(
instance_type, instance_size, elements_kind, inobject_properties);
map->set_wasm_type_info(*type_info);
@@ -615,7 +619,7 @@ MaybeHandle<WasmInstanceObject> InstanceBuilder::Build() {
// list.
//--------------------------------------------------------------------------
if (enabled_.has_gc()) {
- Handle<FixedArray> maps = isolate_->factory()->NewUninitializedFixedArray(
+ Handle<FixedArray> maps = isolate_->factory()->NewFixedArray(
static_cast<int>(module_->type_kinds.size()));
for (int map_index = 0;
map_index < static_cast<int>(module_->type_kinds.size());
@@ -1325,11 +1329,15 @@ bool InstanceBuilder::ProcessImportedGlobal(Handle<WasmInstanceObject> instance,
// TODO(wasm): Still observable if Function.prototype.valueOf or friends
// are patched, we might need to check for that as well.
if (value->IsJSFunction()) value = isolate_->factory()->nan_value();
- if (value->IsPrimitive() && !value->IsSymbol()) {
- if (global.type == kWasmI32) {
- value = Object::ToInt32(isolate_, value).ToHandleChecked();
- } else {
- value = Object::ToNumber(isolate_, value).ToHandleChecked();
+ if (value->IsPrimitive()) {
+ MaybeHandle<Object> converted = global.type == kWasmI32
+ ? Object::ToInt32(isolate_, value)
+ : Object::ToNumber(isolate_, value);
+ if (!converted.ToHandle(&value)) {
+ // Conversion is known to fail for Symbols and BigInts.
+ ReportLinkError("global import must be a number", import_index,
+ module_name, import_name);
+ return false;
}
}
}
@@ -1903,10 +1911,10 @@ bool LoadElemSegmentImpl(Isolate* isolate, Handle<WasmInstanceObject> instance,
const WasmModule* module = instance->module();
for (size_t i = 0; i < count; ++i) {
- uint32_t func_index = elem_segment.entries[src + i];
+ const WasmInitExpr* init = &elem_segment.entries[src + i];
int entry_index = static_cast<int>(dst + i);
- if (func_index == WasmElemSegment::kNullIndex) {
+ if (init->kind() == WasmInitExpr::kRefNullConst) {
if (IsSubtypeOf(table_object->type(), kWasmFuncRef, module)) {
IndirectFunctionTableEntry(instance, table_index, entry_index).clear();
}
@@ -1915,6 +1923,18 @@ bool LoadElemSegmentImpl(Isolate* isolate, Handle<WasmInstanceObject> instance,
continue;
}
+ if (init->kind() == WasmInitExpr::kGlobalGet) {
+ WasmTableObject::Set(
+ isolate, table_object, entry_index,
+ WasmInstanceObject::GetGlobalValue(
+ instance, module->globals[init->immediate().index])
+ .to_ref());
+ continue;
+ }
+
+ DCHECK_EQ(init->kind(), WasmInitExpr::kRefFuncConst);
+
+ const uint32_t func_index = init->immediate().index;
const WasmFunction* function = &module->functions[func_index];
// Update the local dispatch table first if necessary.
diff --git a/deps/v8/src/wasm/value-type.h b/deps/v8/src/wasm/value-type.h
index 983e2090b6..7895a731f6 100644
--- a/deps/v8/src/wasm/value-type.h
+++ b/deps/v8/src/wasm/value-type.h
@@ -94,7 +94,7 @@ class HeapType {
}
explicit constexpr HeapType(Representation repr) : representation_(repr) {
- CONSTEXPR_DCHECK(is_bottom() || is_valid());
+ DCHECK(is_bottom() || is_valid());
}
explicit constexpr HeapType(uint32_t repr)
: HeapType(static_cast<Representation>(repr)) {}
@@ -116,7 +116,7 @@ class HeapType {
constexpr Representation representation() const { return representation_; }
constexpr uint32_t ref_index() const {
- CONSTEXPR_DCHECK(is_index());
+ DCHECK(is_index());
return representation_;
}
@@ -201,7 +201,7 @@ constexpr int element_size_log2(ValueKind kind) {
};
int size_log_2 = kElementSizeLog2[kind];
- CONSTEXPR_DCHECK(size_log_2 >= 0);
+ DCHECK_LE(0, size_log_2);
return size_log_2;
}
@@ -214,7 +214,7 @@ constexpr int element_size_bytes(ValueKind kind) {
};
int size = kElementSize[kind];
- CONSTEXPR_DCHECK(size > 0);
+ DCHECK_LT(0, size);
return size;
}
@@ -240,7 +240,7 @@ constexpr const char* name(ValueKind kind) {
}
constexpr MachineType machine_type(ValueKind kind) {
- CONSTEXPR_DCHECK(kBottom != kind);
+ DCHECK_NE(kBottom, kind);
constexpr MachineType kMachineType[] = {
#define MACH_TYPE(kind, log2Size, code, machineType, ...) \
@@ -262,7 +262,7 @@ constexpr bool is_rtt(ValueKind kind) {
}
constexpr bool is_defaultable(ValueKind kind) {
- CONSTEXPR_DCHECK(kind != kBottom && kind != kVoid);
+ DCHECK(kind != kBottom && kind != kVoid);
return kind != kRef && !is_rtt(kind);
}
@@ -277,11 +277,11 @@ class ValueType {
/******************************* Constructors *******************************/
constexpr ValueType() : bit_field_(KindField::encode(kVoid)) {}
static constexpr ValueType Primitive(ValueKind kind) {
- CONSTEXPR_DCHECK(kind == kBottom || kind <= kI16);
+ DCHECK(kind == kBottom || kind <= kI16);
return ValueType(KindField::encode(kind));
}
static constexpr ValueType Ref(uint32_t heap_type, Nullability nullability) {
- CONSTEXPR_DCHECK(HeapType(heap_type).is_valid());
+ DCHECK(HeapType(heap_type).is_valid());
return ValueType(
KindField::encode(nullability == kNullable ? kOptRef : kRef) |
HeapTypeField::encode(heap_type));
@@ -291,14 +291,14 @@ class ValueType {
}
static constexpr ValueType Rtt(uint32_t type_index) {
- CONSTEXPR_DCHECK(HeapType(type_index).is_index());
+ DCHECK(HeapType(type_index).is_index());
return ValueType(KindField::encode(kRtt) |
HeapTypeField::encode(type_index));
}
static constexpr ValueType Rtt(uint32_t type_index,
uint8_t inheritance_depth) {
- CONSTEXPR_DCHECK(HeapType(type_index).is_index());
+ DCHECK(HeapType(type_index).is_index());
return ValueType(KindField::encode(kRttWithDepth) |
HeapTypeField::encode(type_index) |
DepthField::encode(inheritance_depth));
@@ -340,27 +340,34 @@ class ValueType {
return is_packed() ? Primitive(kI32) : *this;
}
+ // Returns the version of this type that does not allow null values. Handles
+ // bottom.
+ constexpr ValueType AsNonNull() const {
+ DCHECK(is_object_reference() || is_bottom());
+ return is_nullable() ? Ref(heap_type(), kNonNullable) : *this;
+ }
+
/***************************** Field Accessors ******************************/
constexpr ValueKind kind() const { return KindField::decode(bit_field_); }
constexpr HeapType::Representation heap_representation() const {
- CONSTEXPR_DCHECK(is_object_reference());
+ DCHECK(is_object_reference());
return static_cast<HeapType::Representation>(
HeapTypeField::decode(bit_field_));
}
constexpr HeapType heap_type() const {
- CONSTEXPR_DCHECK(is_object_reference());
+ DCHECK(is_object_reference());
return HeapType(heap_representation());
}
constexpr uint8_t depth() const {
- CONSTEXPR_DCHECK(has_depth());
+ DCHECK(has_depth());
return DepthField::decode(bit_field_);
}
constexpr uint32_t ref_index() const {
- CONSTEXPR_DCHECK(has_index());
+ DCHECK(has_index());
return HeapTypeField::decode(bit_field_);
}
constexpr Nullability nullability() const {
- CONSTEXPR_DCHECK(is_object_reference());
+ DCHECK(is_object_reference());
return kind() == kOptRef ? kNullable : kNonNullable;
}
@@ -426,7 +433,7 @@ class ValueType {
// (e.g., Ref(HeapType::kFunc, kNullable).value_type_code will return
// kFuncrefCode and not kOptRefCode).
constexpr ValueTypeCode value_type_code() const {
- CONSTEXPR_DCHECK(kind() != kBottom);
+ DCHECK_NE(kBottom, kind());
switch (kind()) {
case kOptRef:
switch (heap_representation()) {
diff --git a/deps/v8/src/wasm/wasm-code-manager.cc b/deps/v8/src/wasm/wasm-code-manager.cc
index d9225103bb..8907cbab31 100644
--- a/deps/v8/src/wasm/wasm-code-manager.cc
+++ b/deps/v8/src/wasm/wasm-code-manager.cc
@@ -26,6 +26,7 @@
#include "src/wasm/compilation-environment.h"
#include "src/wasm/function-compiler.h"
#include "src/wasm/jump-table-assembler.h"
+#include "src/wasm/memory-protection-key.h"
#include "src/wasm/module-compiler.h"
#include "src/wasm/wasm-debug.h"
#include "src/wasm/wasm-engine.h"
@@ -225,8 +226,8 @@ void WasmCode::LogCode(Isolate* isolate, const char* source_url,
ModuleWireBytes wire_bytes(native_module_->wire_bytes());
const WasmModule* module = native_module_->module();
- WireBytesRef name_ref = module->lazily_generated_names.LookupFunctionName(
- wire_bytes, index(), VectorOf(module->export_table));
+ WireBytesRef name_ref =
+ module->lazily_generated_names.LookupFunctionName(wire_bytes, index());
WasmName name = wire_bytes.GetNameOrNull(name_ref);
const WasmDebugSymbols& debug_symbols = module->debug_symbols;
@@ -502,28 +503,14 @@ int WasmCode::GetSourcePositionBefore(int offset) {
return position;
}
-WasmCodeAllocator::OptionalLock::~OptionalLock() {
- if (allocator_) allocator_->mutex_.Unlock();
-}
-
-void WasmCodeAllocator::OptionalLock::Lock(WasmCodeAllocator* allocator) {
- DCHECK(!is_locked());
- allocator_ = allocator;
- allocator->mutex_.Lock();
-}
-
// static
constexpr size_t WasmCodeAllocator::kMaxCodeSpaceSize;
WasmCodeAllocator::WasmCodeAllocator(WasmCodeManager* code_manager,
- VirtualMemory code_space,
std::shared_ptr<Counters> async_counters)
: code_manager_(code_manager),
- free_code_space_(code_space.region()),
async_counters_(std::move(async_counters)) {
owned_code_space_.reserve(4);
- owned_code_space_.emplace_back(std::move(code_space));
- async_counters_->wasm_module_num_code_spaces()->AddSample(1);
}
WasmCodeAllocator::~WasmCodeAllocator() {
@@ -531,9 +518,12 @@ WasmCodeAllocator::~WasmCodeAllocator() {
committed_code_space());
}
-void WasmCodeAllocator::Init(NativeModule* native_module) {
- DCHECK_EQ(1, owned_code_space_.size());
- native_module->AddCodeSpace(owned_code_space_[0].region(), {});
+void WasmCodeAllocator::Init(VirtualMemory code_space) {
+ DCHECK(owned_code_space_.empty());
+ DCHECK(free_code_space_.IsEmpty());
+ free_code_space_.Merge(code_space.region());
+ owned_code_space_.emplace_back(std::move(code_space));
+ async_counters_->wasm_module_num_code_spaces()->AddSample(1);
}
namespace {
@@ -625,18 +615,11 @@ size_t ReservationSize(size_t code_size_estimate, int num_declared_functions,
Vector<byte> WasmCodeAllocator::AllocateForCode(NativeModule* native_module,
size_t size) {
- return AllocateForCodeInRegion(native_module, size, kUnrestrictedRegion,
- WasmCodeAllocator::OptionalLock{});
+ return AllocateForCodeInRegion(native_module, size, kUnrestrictedRegion);
}
Vector<byte> WasmCodeAllocator::AllocateForCodeInRegion(
- NativeModule* native_module, size_t size, base::AddressRegion region,
- const WasmCodeAllocator::OptionalLock& optional_lock) {
- OptionalLock new_lock;
- if (!optional_lock.is_locked()) new_lock.Lock(this);
- const auto& locked_lock =
- optional_lock.is_locked() ? optional_lock : new_lock;
- DCHECK(locked_lock.is_locked());
+ NativeModule* native_module, size_t size, base::AddressRegion region) {
DCHECK_EQ(code_manager_, native_module->engine()->code_manager());
DCHECK_LT(0, size);
v8::PageAllocator* page_allocator = GetPlatformPageAllocator();
@@ -667,7 +650,7 @@ Vector<byte> WasmCodeAllocator::AllocateForCodeInRegion(
code_manager_->AssignRange(new_region, native_module);
free_code_space_.Merge(new_region);
owned_code_space_.emplace_back(std::move(new_mem));
- native_module->AddCodeSpace(new_region, locked_lock);
+ native_module->AddCodeSpaceLocked(new_region);
code_space = free_code_space_.Allocate(size);
DCHECK(!code_space.is_empty());
@@ -703,16 +686,40 @@ Vector<byte> WasmCodeAllocator::AllocateForCodeInRegion(
return {reinterpret_cast<byte*>(code_space.begin()), code_space.size()};
}
-bool WasmCodeAllocator::SetExecutable(bool executable) {
- base::MutexGuard lock(&mutex_);
- if (is_executable_ == executable) return true;
- TRACE_HEAP("Setting module %p as executable: %d.\n", this, executable);
-
- v8::PageAllocator* page_allocator = GetPlatformPageAllocator();
+// TODO(dlehmann): Do not return the success as a bool, but instead fail hard.
+// That is, pull the CHECK from {NativeModuleModificationScope} in here and
+// return void.
+// TODO(dlehmann): Ensure {SetWritable(true)} is always paired up with a
+// {SetWritable(false)}, such that eventually the code space is write protected.
+// One solution is to make the API foolproof by hiding {SetWritable()} and
+// allowing change of permissions only through {NativeModuleModificationScope}.
+// TODO(dlehmann): Add tests that ensure the code space is eventually write-
+// protected.
+bool WasmCodeAllocator::SetWritable(bool writable) {
+ // Invariant: `this.writers_count_ > 0` iff `code space has W permission`.
+ // TODO(dlehmann): This is currently not fulfilled before the first call
+ // to SetWritable(false), because initial permissions are RWX.
+ // Fix by setting initial permissions to RX and adding writable permission
+ // where appropriate. See also {WasmCodeManager::Commit()}.
+ if (writable) {
+ if (++writers_count_ > 1) return true;
+ } else {
+ DCHECK_GT(writers_count_, 0);
+ if (--writers_count_ > 0) return true;
+ }
+ writable = writers_count_ > 0;
+ TRACE_HEAP("Setting module %p as writable: %d.\n", this, writable);
if (FLAG_wasm_write_protect_code_memory) {
+ v8::PageAllocator* page_allocator = GetPlatformPageAllocator();
+
+ // Due to concurrent compilation and execution, we always need the execute
+ // permission, however during codegen we additionally need to write.
+ // Hence this does not actually achieve write-xor-execute, but merely
+ // "always-execute" with "no-write-eventually".
PageAllocator::Permission permission =
- executable ? PageAllocator::kReadExecute : PageAllocator::kReadWrite;
+ writable ? PageAllocator::kReadWriteExecute
+ : PageAllocator::kReadExecute;
#if V8_OS_WIN
// On windows, we need to switch permissions per separate virtual memory
// reservation.
@@ -725,8 +732,8 @@ bool WasmCodeAllocator::SetExecutable(bool executable) {
permission)) {
return false;
}
- TRACE_HEAP("Set %p:%p to executable:%d\n", vmem.address(), vmem.end(),
- executable);
+ TRACE_HEAP("Set %p:%p to writable:%d\n", vmem.address(), vmem.end(),
+ writable);
}
#else // V8_OS_WIN
size_t commit_page_size = page_allocator->CommitPageSize();
@@ -738,21 +745,46 @@ bool WasmCodeAllocator::SetExecutable(bool executable) {
permission)) {
return false;
}
- TRACE_HEAP("Set 0x%" PRIxPTR ":0x%" PRIxPTR " to executable:%d\n",
- region.begin(), region.end(), executable);
+ TRACE_HEAP("Set 0x%" PRIxPTR ":0x%" PRIxPTR " to writable:%d\n",
+ region.begin(), region.end(), writable);
}
#endif // V8_OS_WIN
}
- is_executable_ = executable;
return true;
}
+bool WasmCodeAllocator::SetThreadWritable(bool writable) {
+ static thread_local int writable_nesting_level = 0;
+ if (writable) {
+ if (++writable_nesting_level > 1) return true;
+ } else {
+ DCHECK_GT(writable_nesting_level, 0);
+ if (--writable_nesting_level > 0) return true;
+ }
+ writable = writable_nesting_level > 0;
+
+ int key = code_manager_->memory_protection_key_;
+
+ MemoryProtectionKeyPermission permissions =
+ writable ? kNoRestrictions : kDisableWrite;
+
+ TRACE_HEAP("Setting memory protection key %d to writable: %d.\n", key,
+ writable);
+ return SetPermissionsForMemoryProtectionKey(key, permissions);
+}
+
void WasmCodeAllocator::FreeCode(Vector<WasmCode* const> codes) {
// Zap code area and collect freed code regions.
DisjointAllocationPool freed_regions;
size_t code_size = 0;
CODE_SPACE_WRITE_SCOPE
for (WasmCode* code : codes) {
+ // TODO(dlehmann): Pull the {NativeModuleModificationScope} out of the loop.
+ // However, its constructor requires a {NativeModule}.
+ // Can be fixed if {NativeModuleModificationScope()} is changed to take
+ // only a {WasmCodeAllocator} in its constructor.
+ NativeModuleModificationScope native_module_modification_scope(
+ code->native_module());
ZapCode(code->instruction_start(), code->instructions().size());
FlushInstructionCache(code->instruction_start(),
code->instructions().size());
@@ -768,19 +800,16 @@ void WasmCodeAllocator::FreeCode(Vector<WasmCode* const> codes) {
DisjointAllocationPool regions_to_decommit;
PageAllocator* allocator = GetPlatformPageAllocator();
size_t commit_page_size = allocator->CommitPageSize();
- {
- base::MutexGuard guard(&mutex_);
- for (auto region : freed_regions.regions()) {
- auto merged_region = freed_code_space_.Merge(region);
- Address discard_start =
- std::max(RoundUp(merged_region.begin(), commit_page_size),
- RoundDown(region.begin(), commit_page_size));
- Address discard_end =
- std::min(RoundDown(merged_region.end(), commit_page_size),
- RoundUp(region.end(), commit_page_size));
- if (discard_start >= discard_end) continue;
- regions_to_decommit.Merge({discard_start, discard_end - discard_start});
- }
+ for (auto region : freed_regions.regions()) {
+ auto merged_region = freed_code_space_.Merge(region);
+ Address discard_start =
+ std::max(RoundUp(merged_region.begin(), commit_page_size),
+ RoundDown(region.begin(), commit_page_size));
+ Address discard_end =
+ std::min(RoundDown(merged_region.end(), commit_page_size),
+ RoundUp(region.end(), commit_page_size));
+ if (discard_start >= discard_end) continue;
+ regions_to_decommit.Merge({discard_start, discard_end - discard_start});
}
for (auto region : regions_to_decommit.regions()) {
@@ -795,7 +824,6 @@ void WasmCodeAllocator::FreeCode(Vector<WasmCode* const> codes) {
}
size_t WasmCodeAllocator::GetNumCodeSpaces() const {
- base::MutexGuard lock(&mutex_);
return owned_code_space_.size();
}
@@ -809,8 +837,7 @@ NativeModule::NativeModule(WasmEngine* engine, const WasmFeatures& enabled,
std::shared_ptr<NativeModule>* shared_this)
: engine_(engine),
engine_scope_(engine->GetBarrierForBackgroundCompile()->TryLock()),
- code_allocator_(engine->code_manager(), std::move(code_space),
- async_counters),
+ code_allocator_(engine->code_manager(), async_counters),
enabled_features_(enabled),
module_(std::move(module)),
import_wrapper_cache_(std::unique_ptr<WasmImportWrapperCache>(
@@ -838,7 +865,14 @@ NativeModule::NativeModule(WasmEngine* engine, const WasmFeatures& enabled,
std::fill_n(num_liftoff_function_calls_.get(),
module_->num_declared_functions, kCounterStart);
}
- code_allocator_.Init(this);
+ // Even though there cannot be another thread using this object (since we are
+ // just constructing it), we need to hold the mutex to fulfill the
+ // precondition of {WasmCodeAllocator::Init}, which calls
+ // {NativeModule::AddCodeSpaceLocked}.
+ base::RecursiveMutexGuard guard{&allocation_mutex_};
+ auto initial_region = code_space.region();
+ code_allocator_.Init(std::move(code_space));
+ AddCodeSpaceLocked(initial_region);
}
void NativeModule::ReserveCodeTableForTesting(uint32_t max_functions) {
@@ -852,16 +886,13 @@ void NativeModule::ReserveCodeTableForTesting(uint32_t max_functions) {
code_table_ = std::move(new_table);
base::AddressRegion single_code_space_region;
- {
- base::MutexGuard guard(&allocation_mutex_);
- CHECK_EQ(1, code_space_data_.size());
- single_code_space_region = code_space_data_[0].region;
- }
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
+ CHECK_EQ(1, code_space_data_.size());
+ single_code_space_region = code_space_data_[0].region;
// Re-allocate jump table.
- main_jump_table_ = CreateEmptyJumpTableInRegion(
+ main_jump_table_ = CreateEmptyJumpTableInRegionLocked(
JumpTableAssembler::SizeForNumberOfSlots(max_functions),
- single_code_space_region, WasmCodeAllocator::OptionalLock{});
- base::MutexGuard guard(&allocation_mutex_);
+ single_code_space_region);
code_space_data_[0].jump_table = main_jump_table_;
}
@@ -879,7 +910,7 @@ void NativeModule::LogWasmCodes(Isolate* isolate, Script script) {
// Log all owned code, not just the current entries in the code table. This
// will also include import wrappers.
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
for (auto& owned_entry : owned_code_) {
owned_entry.second->LogCode(isolate, source_url.get(), script.id());
}
@@ -890,11 +921,12 @@ void NativeModule::LogWasmCodes(Isolate* isolate, Script script) {
CompilationEnv NativeModule::CreateCompilationEnv() const {
return {module(), use_trap_handler_, kRuntimeExceptionSupport,
- enabled_features_, kNoLowerSimd};
+ enabled_features_};
}
WasmCode* NativeModule::AddCodeForTesting(Handle<Code> code) {
CODE_SPACE_WRITE_SCOPE
+ NativeModuleModificationScope native_module_modification_scope(this);
const size_t relocation_size = code->relocation_size();
OwnedVector<byte> reloc_info;
if (relocation_size > 0) {
@@ -929,6 +961,7 @@ WasmCode* NativeModule::AddCodeForTesting(Handle<Code> code) {
const int constant_pool_offset = base_offset + code->constant_pool_offset();
const int code_comments_offset = base_offset + code->code_comments_offset();
+ base::RecursiveMutexGuard guard{&allocation_mutex_};
Vector<uint8_t> dst_code_bytes =
code_allocator_.AllocateForCode(this, instructions.size());
base::Memcpy(dst_code_bytes.begin(), instructions.begin(),
@@ -940,7 +973,7 @@ WasmCode* NativeModule::AddCodeForTesting(Handle<Code> code) {
int mode_mask =
RelocInfo::kApplyMask | RelocInfo::ModeMask(RelocInfo::WASM_STUB_CALL);
auto jump_tables_ref =
- FindJumpTablesForRegion(base::AddressRegionOf(dst_code_bytes));
+ FindJumpTablesForRegionLocked(base::AddressRegionOf(dst_code_bytes));
Address dst_code_addr = reinterpret_cast<Address>(dst_code_bytes.begin());
Address constant_pool_start = dst_code_addr + constant_pool_offset;
RelocIterator orig_it(*code, mode_mask);
@@ -982,7 +1015,7 @@ WasmCode* NativeModule::AddCodeForTesting(Handle<Code> code) {
new_code->MaybePrint();
new_code->Validate();
- return PublishCode(std::move(new_code));
+ return PublishCodeLocked(std::move(new_code));
}
void NativeModule::UseLazyStub(uint32_t func_index) {
@@ -990,25 +1023,24 @@ void NativeModule::UseLazyStub(uint32_t func_index) {
DCHECK_LT(func_index,
module_->num_imported_functions + module_->num_declared_functions);
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
if (!lazy_compile_table_) {
uint32_t num_slots = module_->num_declared_functions;
WasmCodeRefScope code_ref_scope;
CODE_SPACE_WRITE_SCOPE
- base::AddressRegion single_code_space_region;
- {
- base::MutexGuard guard(&allocation_mutex_);
- DCHECK_EQ(1, code_space_data_.size());
- single_code_space_region = code_space_data_[0].region;
- }
- lazy_compile_table_ = CreateEmptyJumpTableInRegion(
+ NativeModuleModificationScope native_module_modification_scope(this);
+ DCHECK_EQ(1, code_space_data_.size());
+ base::AddressRegion single_code_space_region = code_space_data_[0].region;
+ lazy_compile_table_ = CreateEmptyJumpTableInRegionLocked(
JumpTableAssembler::SizeForNumberOfLazyFunctions(num_slots),
- single_code_space_region, WasmCodeAllocator::OptionalLock{});
+ single_code_space_region);
JumpTableAssembler::GenerateLazyCompileTable(
lazy_compile_table_->instruction_start(), num_slots,
module_->num_imported_functions,
- GetNearRuntimeStubEntry(WasmCode::kWasmCompileLazy,
- FindJumpTablesForRegion(base::AddressRegionOf(
- lazy_compile_table_->instructions()))));
+ GetNearRuntimeStubEntry(
+ WasmCode::kWasmCompileLazy,
+ FindJumpTablesForRegionLocked(
+ base::AddressRegionOf(lazy_compile_table_->instructions()))));
}
// Add jump table entry for jump to the lazy compile stub.
@@ -1017,7 +1049,6 @@ void NativeModule::UseLazyStub(uint32_t func_index) {
Address lazy_compile_target =
lazy_compile_table_->instruction_start() +
JumpTableAssembler::LazyCompileSlotIndexToOffset(slot_index);
- base::MutexGuard guard(&allocation_mutex_);
PatchJumpTablesLocked(slot_index, lazy_compile_target);
}
@@ -1026,10 +1057,14 @@ std::unique_ptr<WasmCode> NativeModule::AddCode(
int tagged_parameter_slots, Vector<const byte> protected_instructions_data,
Vector<const byte> source_position_table, WasmCode::Kind kind,
ExecutionTier tier, ForDebugging for_debugging) {
- Vector<byte> code_space =
- code_allocator_.AllocateForCode(this, desc.instr_size);
- auto jump_table_ref =
- FindJumpTablesForRegion(base::AddressRegionOf(code_space));
+ Vector<byte> code_space;
+ NativeModule::JumpTablesRef jump_table_ref;
+ {
+ base::RecursiveMutexGuard guard{&allocation_mutex_};
+ code_space = code_allocator_.AllocateForCode(this, desc.instr_size);
+ jump_table_ref =
+ FindJumpTablesForRegionLocked(base::AddressRegionOf(code_space));
+ }
return AddCodeWithCodeSpace(index, desc, stack_slots, tagged_parameter_slots,
protected_instructions_data,
source_position_table, kind, tier, for_debugging,
@@ -1057,6 +1092,7 @@ std::unique_ptr<WasmCode> NativeModule::AddCodeWithCodeSpace(
const int instr_size = desc.instr_size;
CODE_SPACE_WRITE_SCOPE
+ NativeModuleModificationScope native_module_modification_scope(this);
base::Memcpy(dst_code_bytes.begin(), desc.buffer,
static_cast<size_t>(desc.instr_size));
@@ -1107,7 +1143,7 @@ std::unique_ptr<WasmCode> NativeModule::AddCodeWithCodeSpace(
WasmCode* NativeModule::PublishCode(std::unique_ptr<WasmCode> code) {
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.wasm.detailed"),
"wasm.PublishCode");
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
return PublishCodeLocked(std::move(code));
}
@@ -1117,7 +1153,7 @@ std::vector<WasmCode*> NativeModule::PublishCode(
"wasm.PublishCode", "number", codes.size());
std::vector<WasmCode*> published_code;
published_code.reserve(codes.size());
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
// The published code is put into the top-most surrounding {WasmCodeRefScope}.
for (auto& code : codes) {
published_code.push_back(PublishCodeLocked(std::move(code)));
@@ -1138,8 +1174,7 @@ WasmCode::Kind GetCodeKind(const WasmCompilationResult& result) {
WasmCode* NativeModule::PublishCodeLocked(
std::unique_ptr<WasmCode> owned_code) {
- // The caller must hold the {allocation_mutex_}, thus we fail to lock it here.
- DCHECK(!allocation_mutex_.TryLock());
+ allocation_mutex_.AssertHeld();
WasmCode* code = owned_code.get();
new_owned_code_.emplace_back(std::move(owned_code));
@@ -1148,7 +1183,7 @@ WasmCode* NativeModule::PublishCodeLocked(
// guaranteed to be valid.
WasmCodeRefScope::AddRef(code);
- if (code->IsAnonymous() || code->index() < module_->num_imported_functions) {
+ if (code->index() < static_cast<int>(module_->num_imported_functions)) {
return code;
}
@@ -1208,7 +1243,7 @@ WasmCode* NativeModule::PublishCodeLocked(
}
void NativeModule::ReinstallDebugCode(WasmCode* code) {
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
DCHECK_EQ(this, code->native_module());
DCHECK_EQ(kWithBreakpoints, code->for_debugging());
@@ -1230,9 +1265,14 @@ void NativeModule::ReinstallDebugCode(WasmCode* code) {
PatchJumpTablesLocked(slot_idx, code->instruction_start());
}
-Vector<uint8_t> NativeModule::AllocateForDeserializedCode(
- size_t total_code_size) {
- return code_allocator_.AllocateForCode(this, total_code_size);
+std::pair<Vector<uint8_t>, NativeModule::JumpTablesRef>
+NativeModule::AllocateForDeserializedCode(size_t total_code_size) {
+ base::RecursiveMutexGuard guard{&allocation_mutex_};
+ Vector<uint8_t> code_space =
+ code_allocator_.AllocateForCode(this, total_code_size);
+ auto jump_tables =
+ FindJumpTablesForRegionLocked(base::AddressRegionOf(code_space));
+ return {code_space, jump_tables};
}
std::unique_ptr<WasmCode> NativeModule::AddDeserializedCode(
@@ -1253,7 +1293,7 @@ std::unique_ptr<WasmCode> NativeModule::AddDeserializedCode(
}
std::vector<WasmCode*> NativeModule::SnapshotCodeTable() const {
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
WasmCode** start = code_table_.get();
WasmCode** end = start + module_->num_declared_functions;
for (WasmCode* code : VectorOf(start, end - start)) {
@@ -1263,19 +1303,19 @@ std::vector<WasmCode*> NativeModule::SnapshotCodeTable() const {
}
WasmCode* NativeModule::GetCode(uint32_t index) const {
- base::MutexGuard guard(&allocation_mutex_);
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
WasmCode* code = code_table_[declared_function_index(module(), index)];
if (code) WasmCodeRefScope::AddRef(code);
return code;
}
bool NativeModule::HasCode(uint32_t index) const {
- base::MutexGuard guard(&allocation_mutex_);
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
return code_table_[declared_function_index(module(), index)] != nullptr;
}
bool NativeModule::HasCodeWithTier(uint32_t index, ExecutionTier tier) const {
- base::MutexGuard guard(&allocation_mutex_);
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
return code_table_[declared_function_index(module(), index)] != nullptr &&
code_table_[declared_function_index(module(), index)]->tier() == tier;
}
@@ -1289,16 +1329,17 @@ WasmModuleSourceMap* NativeModule::GetWasmSourceMap() const {
return source_map_.get();
}
-WasmCode* NativeModule::CreateEmptyJumpTableInRegion(
- int jump_table_size, base::AddressRegion region,
- const WasmCodeAllocator::OptionalLock& allocator_lock) {
+WasmCode* NativeModule::CreateEmptyJumpTableInRegionLocked(
+ int jump_table_size, base::AddressRegion region) {
+ allocation_mutex_.AssertHeld();
// Only call this if we really need a jump table.
DCHECK_LT(0, jump_table_size);
- Vector<uint8_t> code_space = code_allocator_.AllocateForCodeInRegion(
- this, jump_table_size, region, allocator_lock);
+ Vector<uint8_t> code_space =
+ code_allocator_.AllocateForCodeInRegion(this, jump_table_size, region);
DCHECK(!code_space.empty());
UpdateCodeSize(jump_table_size, ExecutionTier::kNone, kNoDebugging);
CODE_SPACE_WRITE_SCOPE
+ NativeModuleModificationScope native_module_modification_scope(this);
ZapCode(reinterpret_cast<Address>(code_space.begin()), code_space.size());
std::unique_ptr<WasmCode> code{
new WasmCode{this, // native_module
@@ -1317,7 +1358,7 @@ WasmCode* NativeModule::CreateEmptyJumpTableInRegion(
WasmCode::kJumpTable, // kind
ExecutionTier::kNone, // tier
kNoDebugging}}; // for_debugging
- return PublishCode(std::move(code));
+ return PublishCodeLocked(std::move(code));
}
void NativeModule::UpdateCodeSize(size_t size, ExecutionTier tier,
@@ -1330,10 +1371,10 @@ void NativeModule::UpdateCodeSize(size_t size, ExecutionTier tier,
}
void NativeModule::PatchJumpTablesLocked(uint32_t slot_index, Address target) {
- // The caller must hold the {allocation_mutex_}, thus we fail to lock it here.
- DCHECK(!allocation_mutex_.TryLock());
+ allocation_mutex_.AssertHeld();
CODE_SPACE_WRITE_SCOPE
+ NativeModuleModificationScope native_module_modification_scope(this);
for (auto& code_space_data : code_space_data_) {
DCHECK_IMPLIES(code_space_data.jump_table, code_space_data.far_jump_table);
if (!code_space_data.jump_table) continue;
@@ -1343,8 +1384,7 @@ void NativeModule::PatchJumpTablesLocked(uint32_t slot_index, Address target) {
void NativeModule::PatchJumpTableLocked(const CodeSpaceData& code_space_data,
uint32_t slot_index, Address target) {
- // The caller must hold the {allocation_mutex_}, thus we fail to lock it here.
- DCHECK(!allocation_mutex_.TryLock());
+ allocation_mutex_.AssertHeld();
DCHECK_NOT_NULL(code_space_data.jump_table);
DCHECK_NOT_NULL(code_space_data.far_jump_table);
@@ -1369,9 +1409,9 @@ void NativeModule::PatchJumpTableLocked(const CodeSpaceData& code_space_data,
target);
}
-void NativeModule::AddCodeSpace(
- base::AddressRegion region,
- const WasmCodeAllocator::OptionalLock& allocator_lock) {
+void NativeModule::AddCodeSpaceLocked(base::AddressRegion region) {
+ allocation_mutex_.AssertHeld();
+
// Each code space must be at least twice as large as the overhead per code
// space. Otherwise, we are wasting too much memory.
DCHECK_GE(region.size(),
@@ -1387,8 +1427,8 @@ void NativeModule::AddCodeSpace(
->CanRegisterUnwindInfoForNonABICompliantCodeRange()) {
size_t size = Heap::GetCodeRangeReservedAreaSize();
DCHECK_LT(0, size);
- Vector<byte> padding = code_allocator_.AllocateForCodeInRegion(
- this, size, region, allocator_lock);
+ Vector<byte> padding =
+ code_allocator_.AllocateForCodeInRegion(this, size, region);
CHECK_EQ(reinterpret_cast<Address>(padding.begin()), region.begin());
win64_unwindinfo::RegisterNonABICompliantCodeRange(
reinterpret_cast<void*>(region.begin()), region.size());
@@ -1397,28 +1437,29 @@ void NativeModule::AddCodeSpace(
WasmCodeRefScope code_ref_scope;
CODE_SPACE_WRITE_SCOPE
+ NativeModuleModificationScope native_module_modification_scope(this);
WasmCode* jump_table = nullptr;
WasmCode* far_jump_table = nullptr;
const uint32_t num_wasm_functions = module_->num_declared_functions;
const bool is_first_code_space = code_space_data_.empty();
// We always need a far jump table, because it contains the runtime stubs.
- const bool needs_far_jump_table = !FindJumpTablesForRegion(region).is_valid();
+ const bool needs_far_jump_table =
+ !FindJumpTablesForRegionLocked(region).is_valid();
const bool needs_jump_table = num_wasm_functions > 0 && needs_far_jump_table;
if (needs_jump_table) {
- jump_table = CreateEmptyJumpTableInRegion(
- JumpTableAssembler::SizeForNumberOfSlots(num_wasm_functions), region,
- allocator_lock);
+ jump_table = CreateEmptyJumpTableInRegionLocked(
+ JumpTableAssembler::SizeForNumberOfSlots(num_wasm_functions), region);
CHECK(region.contains(jump_table->instruction_start()));
}
if (needs_far_jump_table) {
int num_function_slots = NumWasmFunctionsInFarJumpTable(num_wasm_functions);
- far_jump_table = CreateEmptyJumpTableInRegion(
+ far_jump_table = CreateEmptyJumpTableInRegionLocked(
JumpTableAssembler::SizeForNumberOfFarJumpSlots(
WasmCode::kRuntimeStubCount,
NumWasmFunctionsInFarJumpTable(num_function_slots)),
- region, allocator_lock);
+ region);
CHECK(region.contains(far_jump_table->instruction_start()));
EmbeddedData embedded_data = EmbeddedData::FromBlob();
#define RUNTIME_STUB(Name) Builtins::k##Name,
@@ -1446,7 +1487,6 @@ void NativeModule::AddCodeSpace(
main_far_jump_table_ = far_jump_table;
}
- base::MutexGuard guard(&allocation_mutex_);
code_space_data_.push_back(CodeSpaceData{region, jump_table, far_jump_table});
if (jump_table && !is_first_code_space) {
@@ -1499,8 +1539,7 @@ void NativeModule::SetWireBytes(OwnedVector<const uint8_t> wire_bytes) {
}
void NativeModule::TransferNewOwnedCodeLocked() const {
- // The caller holds the allocation mutex.
- DCHECK(!allocation_mutex_.TryLock());
+ allocation_mutex_.AssertHeld();
DCHECK(!new_owned_code_.empty());
// Sort the {new_owned_code_} vector reversed, such that the position of the
// previously inserted element can be used as a hint for the next element. If
@@ -1524,8 +1563,7 @@ void NativeModule::TransferNewOwnedCodeLocked() const {
}
void NativeModule::InsertToCodeCache(WasmCode* code) {
- // The caller holds {allocation_mutex_}.
- DCHECK(!allocation_mutex_.TryLock());
+ allocation_mutex_.AssertHeld();
DCHECK_NOT_NULL(cached_code_);
if (code->IsAnonymous()) return;
// Only cache Liftoff debugging code or TurboFan code (no breakpoints or
@@ -1541,7 +1579,7 @@ void NativeModule::InsertToCodeCache(WasmCode* code) {
}
WasmCode* NativeModule::Lookup(Address pc) const {
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
if (!new_owned_code_.empty()) TransferNewOwnedCodeLocked();
auto iter = owned_code_.upper_bound(pc);
if (iter == owned_code_.begin()) return nullptr;
@@ -1566,8 +1604,9 @@ Address NativeModule::GetCallTargetForFunction(uint32_t func_index) const {
return main_jump_table_->instruction_start() + slot_offset;
}
-NativeModule::JumpTablesRef NativeModule::FindJumpTablesForRegion(
+NativeModule::JumpTablesRef NativeModule::FindJumpTablesForRegionLocked(
base::AddressRegion code_region) const {
+ allocation_mutex_.AssertHeld();
auto jump_table_usable = [code_region](const WasmCode* jump_table) {
Address table_start = jump_table->instruction_start();
Address table_end = table_start + jump_table->instructions().size();
@@ -1583,18 +1622,6 @@ NativeModule::JumpTablesRef NativeModule::FindJumpTablesForRegion(
return max_distance <= WasmCodeAllocator::kMaxCodeSpaceSize;
};
- // Fast path: Try to use {main_jump_table_} and {main_far_jump_table_}.
- // Access to these fields is possible without locking, since these fields are
- // initialized on construction of the {NativeModule}.
- if (main_far_jump_table_ && jump_table_usable(main_far_jump_table_) &&
- (main_jump_table_ == nullptr || jump_table_usable(main_jump_table_))) {
- return {
- main_jump_table_ ? main_jump_table_->instruction_start() : kNullAddress,
- main_far_jump_table_->instruction_start()};
- }
-
- // Otherwise, take the mutex and look for another suitable jump table.
- base::MutexGuard guard(&allocation_mutex_);
for (auto& code_space_data : code_space_data_) {
DCHECK_IMPLIES(code_space_data.jump_table, code_space_data.far_jump_table);
if (!code_space_data.far_jump_table) continue;
@@ -1645,7 +1672,7 @@ uint32_t NativeModule::GetFunctionIndexFromJumpTableSlot(
}
WasmCode::RuntimeStubId NativeModule::GetRuntimeStubId(Address target) const {
- base::MutexGuard guard(&allocation_mutex_);
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
for (auto& code_space_data : code_space_data_) {
if (code_space_data.far_jump_table != nullptr &&
@@ -1679,10 +1706,22 @@ NativeModule::~NativeModule() {
WasmCodeManager::WasmCodeManager(size_t max_committed)
: max_committed_code_space_(max_committed),
- critical_committed_code_space_(max_committed / 2) {
+ critical_committed_code_space_(max_committed / 2),
+ memory_protection_key_(FLAG_wasm_memory_protection_keys
+ ? AllocateMemoryProtectionKey()
+ : kNoMemoryProtectionKey) {
DCHECK_LE(max_committed, FLAG_wasm_max_code_space * MB);
}
+WasmCodeManager::~WasmCodeManager() {
+ // No more committed code space.
+ DCHECK_EQ(0, total_committed_code_space_.load());
+
+ if (FLAG_wasm_memory_protection_keys) {
+ FreeMemoryProtectionKey(memory_protection_key_);
+ }
+}
+
#if defined(V8_OS_WIN64)
bool WasmCodeManager::CanRegisterUnwindInfoForNonABICompliantCodeRange() const {
return win64_unwindinfo::CanRegisterUnwindInfoForNonABICompliantCodeRange() &&
@@ -1711,16 +1750,38 @@ void WasmCodeManager::Commit(base::AddressRegion region) {
break;
}
}
- PageAllocator::Permission permission = FLAG_wasm_write_protect_code_memory
- ? PageAllocator::kReadWrite
- : PageAllocator::kReadWriteExecute;
-
- TRACE_HEAP("Setting rw permissions for 0x%" PRIxPTR ":0x%" PRIxPTR "\n",
- region.begin(), region.end());
+ // Even when we employ W^X with FLAG_wasm_write_protect_code_memory == true,
+ // code pages need to be initially allocated with RWX permission because of
+ // concurrent compilation/execution. For this reason there is no distinction
+ // here based on FLAG_wasm_write_protect_code_memory.
+ // TODO(dlehmann): This allocates initially as writable and executable, and
+ // as such is not safe-by-default. In particular, if
+ // {WasmCodeAllocator::SetWritable(false)} is never called afterwards (e.g.,
+ // because no {NativeModuleModificationScope} is created), the writable
+ // permission is never withdrawn.
+ // One potential fix is to allocate initially with kReadExecute only, which
+ // forces all compilation threads to add the missing
+ // {NativeModuleModificationScope}s before modification; and/or adding
+ // DCHECKs that {NativeModuleModificationScope} is open when calling this
+ // method.
+ PageAllocator::Permission permission = PageAllocator::kReadWriteExecute;
+
+ bool success;
+ if (FLAG_wasm_memory_protection_keys) {
+ TRACE_HEAP(
+ "Setting rwx permissions and memory protection key %d for 0x%" PRIxPTR
+ ":0x%" PRIxPTR "\n",
+ memory_protection_key_, region.begin(), region.end());
+ success = SetPermissionsAndMemoryProtectionKey(
+ GetPlatformPageAllocator(), region, permission, memory_protection_key_);
+ } else {
+ TRACE_HEAP("Setting rwx permissions for 0x%" PRIxPTR ":0x%" PRIxPTR "\n",
+ region.begin(), region.end());
+ success = SetPermissions(GetPlatformPageAllocator(), region.begin(),
+ region.size(), permission);
+ }
- if (!SetPermissions(GetPlatformPageAllocator(), region.begin(), region.size(),
- permission)) {
- // Highly unlikely.
+ if (V8_UNLIKELY(!success)) {
V8::FatalProcessOutOfMemory(
nullptr,
"WasmCodeManager::Commit: Cannot make pre-reserved region writable");
@@ -1739,8 +1800,13 @@ void WasmCodeManager::Decommit(base::AddressRegion region) {
USE(old_committed);
TRACE_HEAP("Discarding system pages 0x%" PRIxPTR ":0x%" PRIxPTR "\n",
region.begin(), region.end());
- CHECK(allocator->SetPermissions(reinterpret_cast<void*>(region.begin()),
- region.size(), PageAllocator::kNoAccess));
+ if (FLAG_wasm_memory_protection_keys) {
+ CHECK(SetPermissionsAndMemoryProtectionKey(
+ allocator, region, PageAllocator::kNoAccess, kNoMemoryProtectionKey));
+ } else {
+ CHECK(SetPermissions(allocator, region.begin(), region.size(),
+ PageAllocator::kNoAccess));
+ }
}
void WasmCodeManager::AssignRange(base::AddressRegion region,
@@ -2002,10 +2068,15 @@ std::vector<std::unique_ptr<WasmCode>> NativeModule::AddCompiledCode(
DCHECK(result.succeeded());
total_code_space += RoundUp<kCodeAlignment>(result.code_desc.instr_size);
}
- Vector<byte> code_space =
- code_allocator_.AllocateForCode(this, total_code_space);
- // Lookup the jump tables to use once, then use for all code objects.
- auto jump_tables = FindJumpTablesForRegion(base::AddressRegionOf(code_space));
+ Vector<byte> code_space;
+ NativeModule::JumpTablesRef jump_tables;
+ {
+ base::RecursiveMutexGuard guard{&allocation_mutex_};
+ code_space = code_allocator_.AllocateForCode(this, total_code_space);
+ // Lookup the jump tables to use once, then use for all code objects.
+ jump_tables =
+ FindJumpTablesForRegionLocked(base::AddressRegionOf(code_space));
+ }
// If we happen to have a {total_code_space} which is bigger than
// {kMaxCodeSpaceSize}, we would not find valid jump tables for the whole
// region. If this ever happens, we need to handle this case (by splitting the
@@ -2017,6 +2088,7 @@ std::vector<std::unique_ptr<WasmCode>> NativeModule::AddCompiledCode(
// Now copy the generated code into the code space and relocate it.
CODE_SPACE_WRITE_SCOPE
+ NativeModuleModificationScope native_module_modification_scope(this);
for (auto& result : results) {
DCHECK_EQ(result.code_desc.buffer, result.instr_buffer.get());
size_t code_size = RoundUp<kCodeAlignment>(result.code_desc.instr_size);
@@ -2039,12 +2111,12 @@ void NativeModule::SetTieringState(TieringState new_tiering_state) {
// Do not tier down asm.js (just never change the tiering state).
if (module()->origin != kWasmOrigin) return;
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
tiering_state_ = new_tiering_state;
}
bool NativeModule::IsTieredDown() {
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
return tiering_state_ == kTieredDown;
}
@@ -2054,7 +2126,7 @@ void NativeModule::RecompileForTiering() {
// compilation units finish, code installation will handle that correctly.
TieringState current_state;
{
- base::MutexGuard lock(&allocation_mutex_);
+ base::RecursiveMutexGuard lock(&allocation_mutex_);
current_state = tiering_state_;
// Initialize {cached_code_} to signal that this cache should get filled
@@ -2074,7 +2146,7 @@ void NativeModule::RecompileForTiering() {
std::vector<int> NativeModule::FindFunctionsToRecompile(
TieringState new_tiering_state) {
WasmCodeRefScope code_ref_scope;
- base::MutexGuard guard(&allocation_mutex_);
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
std::vector<int> function_indexes;
int imported = module()->num_imported_functions;
int declared = module()->num_declared_functions;
@@ -2110,19 +2182,16 @@ std::vector<int> NativeModule::FindFunctionsToRecompile(
}
void NativeModule::FreeCode(Vector<WasmCode* const> codes) {
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
// Free the code space.
code_allocator_.FreeCode(codes);
- DebugInfo* debug_info = nullptr;
- {
- base::MutexGuard guard(&allocation_mutex_);
- if (!new_owned_code_.empty()) TransferNewOwnedCodeLocked();
- debug_info = debug_info_.get();
- // Free the {WasmCode} objects. This will also unregister trap handler data.
- for (WasmCode* code : codes) {
- DCHECK_EQ(1, owned_code_.count(code->instruction_start()));
- owned_code_.erase(code->instruction_start());
- }
+ if (!new_owned_code_.empty()) TransferNewOwnedCodeLocked();
+ DebugInfo* debug_info = debug_info_.get();
+ // Free the {WasmCode} objects. This will also unregister trap handler data.
+ for (WasmCode* code : codes) {
+ DCHECK_EQ(1, owned_code_.count(code->instruction_start()));
+ owned_code_.erase(code->instruction_start());
}
// Remove debug side tables for all removed code objects, after releasing our
// lock. This is to avoid lock order inversion.
@@ -2130,16 +2199,17 @@ void NativeModule::FreeCode(Vector<WasmCode* const> codes) {
}
size_t NativeModule::GetNumberOfCodeSpacesForTesting() const {
+ base::RecursiveMutexGuard guard{&allocation_mutex_};
return code_allocator_.GetNumCodeSpaces();
}
bool NativeModule::HasDebugInfo() const {
- base::MutexGuard guard(&allocation_mutex_);
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
return debug_info_ != nullptr;
}
DebugInfo* NativeModule::GetDebugInfo() {
- base::MutexGuard guard(&allocation_mutex_);
+ base::RecursiveMutexGuard guard(&allocation_mutex_);
if (!debug_info_) debug_info_ = std::make_unique<DebugInfo>(this);
return debug_info_.get();
}
@@ -2200,17 +2270,30 @@ WasmCode* WasmCodeManager::LookupCode(Address pc) const {
NativeModuleModificationScope::NativeModuleModificationScope(
NativeModule* native_module)
: native_module_(native_module) {
- if (FLAG_wasm_write_protect_code_memory && native_module_ &&
- (native_module_->modification_scope_depth_++) == 0) {
- bool success = native_module_->SetExecutable(false);
+ DCHECK_NOT_NULL(native_module_);
+ if (FLAG_wasm_memory_protection_keys) {
+ bool success = native_module_->SetThreadWritable(true);
+ if (!success && FLAG_wasm_write_protect_code_memory) {
+ // Fallback to mprotect-based write protection (much slower).
+ success = native_module_->SetWritable(true);
+ CHECK(success);
+ }
+ } else if (FLAG_wasm_write_protect_code_memory) {
+ bool success = native_module_->SetWritable(true);
CHECK(success);
}
}
NativeModuleModificationScope::~NativeModuleModificationScope() {
- if (FLAG_wasm_write_protect_code_memory && native_module_ &&
- (native_module_->modification_scope_depth_--) == 1) {
- bool success = native_module_->SetExecutable(true);
+ if (FLAG_wasm_memory_protection_keys) {
+ bool success = native_module_->SetThreadWritable(false);
+ if (!success && FLAG_wasm_write_protect_code_memory) {
+ // Fallback to mprotect-based write protection (much slower).
+ success = native_module_->SetWritable(false);
+ CHECK(success);
+ }
+ } else if (FLAG_wasm_write_protect_code_memory) {
+ bool success = native_module_->SetWritable(false);
CHECK(success);
}
}
diff --git a/deps/v8/src/wasm/wasm-code-manager.h b/deps/v8/src/wasm/wasm-code-manager.h
index 2996a6e2c6..312f5346b4 100644
--- a/deps/v8/src/wasm/wasm-code-manager.h
+++ b/deps/v8/src/wasm/wasm-code-manager.h
@@ -26,6 +26,7 @@
#include "src/trap-handler/trap-handler.h"
#include "src/utils/vector.h"
#include "src/wasm/compilation-environment.h"
+#include "src/wasm/memory-protection-key.h"
#include "src/wasm/wasm-features.h"
#include "src/wasm/wasm-limits.h"
#include "src/wasm/wasm-module-sourcemap.h"
@@ -94,7 +95,8 @@ struct WasmModule;
V(WasmAllocateArrayWithRtt) \
V(WasmAllocateRtt) \
V(WasmAllocateStructWithRtt) \
- V(WasmSubtypeCheck)
+ V(WasmSubtypeCheck) \
+ V(WasmOnStackReplace)
// Sorted, disjoint and non-overlapping memory regions. A region is of the
// form [start, end). So there's no [start, end), [end, other_end),
@@ -160,11 +162,7 @@ class V8_EXPORT_PRIVATE WasmCode final {
return {reloc_info().end(), static_cast<size_t>(source_positions_size_)};
}
- // TODO(clemensb): Make this return int.
- uint32_t index() const {
- DCHECK_LE(0, index_);
- return index_;
- }
+ int index() const { return index_; }
// Anonymous functions are functions that don't carry an index.
bool IsAnonymous() const { return index_ == kAnonymousFuncIndex; }
Kind kind() const { return KindField::decode(flags_); }
@@ -397,31 +395,11 @@ class WasmCodeAllocator {
static constexpr size_t kMaxCodeSpaceSize = 1024 * MB;
#endif
- // {OptionalLock} is passed between {WasmCodeAllocator} and {NativeModule} to
- // indicate that the lock on the {WasmCodeAllocator} is already taken. It's
- // optional to allow to also call methods without holding the lock.
- class OptionalLock {
- public:
- // External users can only instantiate a non-locked {OptionalLock}.
- OptionalLock() = default;
- ~OptionalLock();
- bool is_locked() const { return allocator_ != nullptr; }
-
- private:
- friend class WasmCodeAllocator;
- // {Lock} is called from the {WasmCodeAllocator} if no locked {OptionalLock}
- // is passed.
- void Lock(WasmCodeAllocator*);
-
- WasmCodeAllocator* allocator_ = nullptr;
- };
-
- WasmCodeAllocator(WasmCodeManager*, VirtualMemory code_space,
- std::shared_ptr<Counters> async_counters);
+ WasmCodeAllocator(WasmCodeManager*, std::shared_ptr<Counters> async_counters);
~WasmCodeAllocator();
// Call before use, after the {NativeModule} is set up completely.
- void Init(NativeModule*);
+ void Init(VirtualMemory code_space);
size_t committed_code_space() const {
return committed_code_space_.load(std::memory_order_acquire);
@@ -434,22 +412,32 @@ class WasmCodeAllocator {
}
// Allocate code space. Returns a valid buffer or fails with OOM (crash).
+ // Hold the {NativeModule}'s {allocation_mutex_} when calling this method.
Vector<byte> AllocateForCode(NativeModule*, size_t size);
// Allocate code space within a specific region. Returns a valid buffer or
// fails with OOM (crash).
+ // Hold the {NativeModule}'s {allocation_mutex_} when calling this method.
Vector<byte> AllocateForCodeInRegion(NativeModule*, size_t size,
- base::AddressRegion,
- const WasmCodeAllocator::OptionalLock&);
+ base::AddressRegion);
+
+ // Sets permissions of all owned code space to read-write or read-only (if
+ // {writable} is false). Returns true on success.
+ // Hold the {NativeModule}'s {allocation_mutex_} when calling this method.
+ V8_EXPORT_PRIVATE bool SetWritable(bool writable);
- // Sets permissions of all owned code space to executable, or read-write (if
- // {executable} is false). Returns true on success.
- V8_EXPORT_PRIVATE bool SetExecutable(bool executable);
+ // Set this thread's permission of all owned code space to read-write or
+ // read-only (if {writable} is false). Uses memory protection keys.
+ // Returns true on success. Since the permission is thread-local, there is no
+ // requirement to hold any lock when calling this method.
+ bool SetThreadWritable(bool writable);
// Free memory pages of all given code objects. Used for wasm code GC.
+ // Hold the {NativeModule}'s {allocation_mutex_} when calling this method.
void FreeCode(Vector<WasmCode* const>);
// Retrieve the number of separately reserved code spaces.
+ // Hold the {NativeModule}'s {allocation_mutex_} when calling this method.
size_t GetNumCodeSpaces() const;
private:
@@ -461,10 +449,8 @@ class WasmCodeAllocator {
// The engine-wide wasm code manager.
WasmCodeManager* const code_manager_;
- mutable base::Mutex mutex_;
-
//////////////////////////////////////////////////////////////////////////////
- // Protected by {mutex_}:
+ // These fields are protected by the mutex in {NativeModule}.
// Code space that was reserved and is available for allocations (subset of
// {owned_code_space_}).
@@ -476,6 +462,8 @@ class WasmCodeAllocator {
DisjointAllocationPool freed_code_space_;
std::vector<VirtualMemory> owned_code_space_;
+ int writers_count_{0};
+
// End of fields protected by {mutex_}.
//////////////////////////////////////////////////////////////////////////////
@@ -483,8 +471,6 @@ class WasmCodeAllocator {
std::atomic<size_t> generated_code_size_{0};
std::atomic<size_t> freed_code_size_{0};
- bool is_executable_ = false;
-
std::shared_ptr<Counters> async_counters_;
};
@@ -523,7 +509,15 @@ class V8_EXPORT_PRIVATE NativeModule final {
// table and jump table via another {PublishCode}.
void ReinstallDebugCode(WasmCode*);
- Vector<uint8_t> AllocateForDeserializedCode(size_t total_code_size);
+ struct JumpTablesRef {
+ Address jump_table_start = kNullAddress;
+ Address far_jump_table_start = kNullAddress;
+
+ bool is_valid() const { return far_jump_table_start != kNullAddress; }
+ };
+
+ std::pair<Vector<uint8_t>, JumpTablesRef> AllocateForDeserializedCode(
+ size_t total_code_size);
std::unique_ptr<WasmCode> AddDeserializedCode(
int index, Vector<byte> instructions, int stack_slots,
@@ -564,26 +558,19 @@ class V8_EXPORT_PRIVATE NativeModule final {
// the first jump table).
Address GetCallTargetForFunction(uint32_t func_index) const;
- struct JumpTablesRef {
- Address jump_table_start = kNullAddress;
- Address far_jump_table_start = kNullAddress;
-
- bool is_valid() const { return far_jump_table_start != kNullAddress; }
- };
-
// Finds the jump tables that should be used for given code region. This
// information is then passed to {GetNearCallTargetForFunction} and
// {GetNearRuntimeStubEntry} to avoid the overhead of looking this information
// up there. Return an empty struct if no suitable jump tables exist.
- JumpTablesRef FindJumpTablesForRegion(base::AddressRegion) const;
+ JumpTablesRef FindJumpTablesForRegionLocked(base::AddressRegion) const;
// Similarly to {GetCallTargetForFunction}, but uses the jump table previously
- // looked up via {FindJumpTablesForRegion}.
+ // looked up via {FindJumpTablesForRegionLocked}.
Address GetNearCallTargetForFunction(uint32_t func_index,
const JumpTablesRef&) const;
// Get a runtime stub entry (which is a far jump table slot) in the jump table
- // previously looked up via {FindJumpTablesForRegion}.
+ // previously looked up via {FindJumpTablesForRegionLocked}.
Address GetNearRuntimeStubEntry(WasmCode::RuntimeStubId index,
const JumpTablesRef&) const;
@@ -591,8 +578,13 @@ class V8_EXPORT_PRIVATE NativeModule final {
// to a function index.
uint32_t GetFunctionIndexFromJumpTableSlot(Address slot_address) const;
- bool SetExecutable(bool executable) {
- return code_allocator_.SetExecutable(executable);
+ bool SetWritable(bool writable) {
+ base::RecursiveMutexGuard guard{&allocation_mutex_};
+ return code_allocator_.SetWritable(writable);
+ }
+
+ bool SetThreadWritable(bool writable) {
+ return code_allocator_.SetThreadWritable(writable);
}
// For cctests, where we build both WasmModule and the runtime objects
@@ -726,9 +718,8 @@ class V8_EXPORT_PRIVATE NativeModule final {
ExecutionTier tier, ForDebugging for_debugging,
Vector<uint8_t> code_space, const JumpTablesRef& jump_tables_ref);
- WasmCode* CreateEmptyJumpTableInRegion(
- int jump_table_size, base::AddressRegion,
- const WasmCodeAllocator::OptionalLock&);
+ WasmCode* CreateEmptyJumpTableInRegionLocked(int jump_table_size,
+ base::AddressRegion);
void UpdateCodeSize(size_t, ExecutionTier, ForDebugging);
@@ -740,8 +731,7 @@ class V8_EXPORT_PRIVATE NativeModule final {
Address target);
// Called by the {WasmCodeAllocator} to register a new code space.
- void AddCodeSpace(base::AddressRegion,
- const WasmCodeAllocator::OptionalLock&);
+ void AddCodeSpaceLocked(base::AddressRegion);
// Hold the {allocation_mutex_} when calling {PublishCodeLocked}.
WasmCode* PublishCodeLocked(std::unique_ptr<WasmCode>);
@@ -806,7 +796,12 @@ class V8_EXPORT_PRIVATE NativeModule final {
std::unique_ptr<uint32_t[]> num_liftoff_function_calls_;
// This mutex protects concurrent calls to {AddCode} and friends.
- mutable base::Mutex allocation_mutex_;
+ // TODO(dlehmann): Revert this to a regular {Mutex} again.
+ // This needs to be a {RecursiveMutex} only because of
+ // {NativeModuleModificationScope} usages, which are (1) either at places
+ // that already hold the {allocation_mutex_} or (2) because of multiple open
+ // {NativeModuleModificationScope}s in the call hierarchy. Both are fixable.
+ mutable base::RecursiveMutex allocation_mutex_;
//////////////////////////////////////////////////////////////////////////////
// Protected by {allocation_mutex_}:
@@ -847,7 +842,6 @@ class V8_EXPORT_PRIVATE NativeModule final {
// End of fields protected by {allocation_mutex_}.
//////////////////////////////////////////////////////////////////////////////
- int modification_scope_depth_ = 0;
UseTrapHandler use_trap_handler_ = kNoTrapHandler;
bool lazy_compile_frozen_ = false;
std::atomic<size_t> liftoff_bailout_count_{0};
@@ -861,12 +855,7 @@ class V8_EXPORT_PRIVATE WasmCodeManager final {
WasmCodeManager(const WasmCodeManager&) = delete;
WasmCodeManager& operator=(const WasmCodeManager&) = delete;
-#ifdef DEBUG
- ~WasmCodeManager() {
- // No more committed code space.
- DCHECK_EQ(0, total_committed_code_space_.load());
- }
-#endif
+ ~WasmCodeManager();
#if defined(V8_OS_WIN64)
bool CanRegisterUnwindInfoForNonABICompliantCodeRange() const;
@@ -922,6 +911,8 @@ class V8_EXPORT_PRIVATE WasmCodeManager final {
// and updated after each GC.
std::atomic<size_t> critical_committed_code_space_;
+ const int memory_protection_key_;
+
mutable base::Mutex native_modules_mutex_;
//////////////////////////////////////////////////////////////////////////////
diff --git a/deps/v8/src/wasm/wasm-constants.h b/deps/v8/src/wasm/wasm-constants.h
index a02ea78e85..f960e7c201 100644
--- a/deps/v8/src/wasm/wasm-constants.h
+++ b/deps/v8/src/wasm/wasm-constants.h
@@ -101,10 +101,11 @@ enum SectionCode : int8_t {
kDebugInfoSectionCode, // DWARF section .debug_info
kExternalDebugInfoSectionCode, // Section encoding the external symbol path
kCompilationHintsSectionCode, // Compilation hints section
+ kBranchHintsSectionCode, // Branch hints section
// Helper values
kFirstSectionInModule = kTypeSectionCode,
- kLastKnownModuleSection = kCompilationHintsSectionCode,
+ kLastKnownModuleSection = kBranchHintsSectionCode,
kFirstUnorderedSection = kDataCountSectionCode,
};
@@ -156,6 +157,10 @@ constexpr int kAnonymousFuncIndex = -1;
// often enough.
constexpr uint32_t kGenericWrapperBudget = 1000;
+#if V8_TARGET_ARCH_X64
+constexpr int32_t kOSRTargetOffset = 3 * kSystemPointerSize;
+#endif
+
} // namespace wasm
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/wasm/wasm-debug.cc b/deps/v8/src/wasm/wasm-debug.cc
index 22872f5d88..ad4e7853aa 100644
--- a/deps/v8/src/wasm/wasm-debug.cc
+++ b/deps/v8/src/wasm/wasm-debug.cc
@@ -697,13 +697,19 @@ class DebugInfoImpl {
DCHECK_EQ(frame->function_index(), new_code->index());
DCHECK_EQ(frame->native_module(), new_code->native_module());
DCHECK(frame->wasm_code()->is_liftoff());
+ Address new_pc =
+ FindNewPC(frame, new_code, frame->byte_offset(), return_location);
#ifdef DEBUG
int old_position = frame->position();
#endif
- Address new_pc =
- FindNewPC(frame, new_code, frame->byte_offset(), return_location);
+#if V8_TARGET_ARCH_X64
+ if (frame->wasm_code()->for_debugging()) {
+ base::Memory<Address>(frame->fp() - kOSRTargetOffset) = new_pc;
+ }
+#else
PointerAuthentication::ReplacePC(frame->pc_address(), new_pc,
kSystemPointerSize);
+#endif
// The frame position should still be the same after OSR.
DCHECK_EQ(old_position, frame->position());
}
diff --git a/deps/v8/src/wasm/wasm-engine.cc b/deps/v8/src/wasm/wasm-engine.cc
index ed19f89a5e..c38236dc78 100644
--- a/deps/v8/src/wasm/wasm-engine.cc
+++ b/deps/v8/src/wasm/wasm-engine.cc
@@ -18,6 +18,7 @@
#include "src/strings/string-hasher-inl.h"
#include "src/utils/ostreams.h"
#include "src/wasm/function-compiler.h"
+#include "src/wasm/memory-protection-key.h"
#include "src/wasm/module-compiler.h"
#include "src/wasm/module-decoder.h"
#include "src/wasm/module-instantiate.h"
@@ -347,7 +348,8 @@ struct WasmEngine::CurrentGCInfo {
struct WasmEngine::IsolateInfo {
explicit IsolateInfo(Isolate* isolate)
: log_codes(WasmCode::ShouldBeLogged(isolate)),
- async_counters(isolate->async_counters()) {
+ async_counters(isolate->async_counters()),
+ wrapper_compilation_barrier_(std::make_shared<OperationsBarrier>()) {
v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate);
v8::Platform* platform = V8::GetCurrentPlatform();
foreground_task_runner = platform->GetForegroundTaskRunner(v8_isolate);
@@ -398,6 +400,12 @@ struct WasmEngine::IsolateInfo {
int throw_count = 0;
int rethrow_count = 0;
int catch_count = 0;
+
+ // Operations barrier to synchronize on wrapper compilation on isolate
+ // shutdown.
+ // TODO(wasm): Remove this once we can use the generic js-to-wasm wrapper
+ // everywhere.
+ std::shared_ptr<OperationsBarrier> wrapper_compilation_barrier_;
};
struct WasmEngine::NativeModuleInfo {
@@ -934,9 +942,10 @@ void WasmEngine::DeleteCompileJobsOnIsolate(Isolate* isolate) {
// Under the mutex get all jobs to delete. Then delete them without holding
// the mutex, such that deletion can reenter the WasmEngine.
std::vector<std::unique_ptr<AsyncCompileJob>> jobs_to_delete;
+ std::vector<std::weak_ptr<NativeModule>> modules_in_isolate;
+ std::shared_ptr<OperationsBarrier> wrapper_compilation_barrier;
{
base::MutexGuard guard(&mutex_);
- DCHECK_EQ(1, isolates_.count(isolate));
for (auto it = async_compile_jobs_.begin();
it != async_compile_jobs_.end();) {
if (it->first->isolate() != isolate) {
@@ -946,7 +955,34 @@ void WasmEngine::DeleteCompileJobsOnIsolate(Isolate* isolate) {
jobs_to_delete.push_back(std::move(it->second));
it = async_compile_jobs_.erase(it);
}
+ DCHECK_EQ(1, isolates_.count(isolate));
+ auto* isolate_info = isolates_[isolate].get();
+ wrapper_compilation_barrier = isolate_info->wrapper_compilation_barrier_;
+ for (auto* native_module : isolate_info->native_modules) {
+ DCHECK_EQ(1, native_modules_.count(native_module));
+ modules_in_isolate.emplace_back(native_modules_[native_module]->weak_ptr);
+ }
}
+
+ // All modules that have not finished initial compilation yet cannot be
+ // shared with other isolates. Hence we cancel their compilation. In
+ // particular, this will cancel wrapper compilation which is bound to this
+ // isolate (this would be a UAF otherwise).
+ for (auto& weak_module : modules_in_isolate) {
+ if (auto shared_module = weak_module.lock()) {
+ shared_module->compilation_state()->CancelInitialCompilation();
+ }
+ }
+
+ // After cancelling, wait for all current wrapper compilation to actually
+ // finish.
+ wrapper_compilation_barrier->CancelAndWait();
+}
+
+OperationsBarrier::Token WasmEngine::StartWrapperCompilation(Isolate* isolate) {
+ base::MutexGuard guard(&mutex_);
+ DCHECK_EQ(1, isolates_.count(isolate));
+ return isolates_[isolate]->wrapper_compilation_barrier_->TryLock();
}
void WasmEngine::AddIsolate(Isolate* isolate) {
@@ -954,6 +990,15 @@ void WasmEngine::AddIsolate(Isolate* isolate) {
DCHECK_EQ(0, isolates_.count(isolate));
isolates_.emplace(isolate, std::make_unique<IsolateInfo>(isolate));
+ // Record memory protection key support.
+ if (FLAG_wasm_memory_protection_keys) {
+ auto* histogram =
+ isolate->counters()->wasm_memory_protection_keys_support();
+ bool has_mpk =
+ code_manager()->memory_protection_key_ != kNoMemoryProtectionKey;
+ histogram->AddSample(has_mpk ? 1 : 0);
+ }
+
// Install sampling GC callback.
// TODO(v8:7424): For now we sample module sizes in a GC callback. This will
// bias samples towards apps with high memory pressure. We should switch to
@@ -1281,6 +1326,18 @@ void WasmEngine::ReportLiveCodeFromStackForGC(Isolate* isolate) {
StackFrame* const frame = it.frame();
if (frame->type() != StackFrame::WASM) continue;
live_wasm_code.insert(WasmFrame::cast(frame)->wasm_code());
+#if V8_TARGET_ARCH_X64
+ if (WasmFrame::cast(frame)->wasm_code()->for_debugging()) {
+ Address osr_target = base::Memory<Address>(WasmFrame::cast(frame)->fp() -
+ kOSRTargetOffset);
+ if (osr_target) {
+ WasmCode* osr_code =
+ isolate->wasm_engine()->code_manager()->LookupCode(osr_target);
+ DCHECK_NOT_NULL(osr_code);
+ live_wasm_code.insert(osr_code);
+ }
+ }
+#endif
}
CheckNoArchivedThreads(isolate);
@@ -1514,24 +1571,29 @@ void WasmEngine::PotentiallyFinishCurrentGC() {
namespace {
-DEFINE_LAZY_LEAKY_OBJECT_GETTER(std::shared_ptr<WasmEngine>,
- GetSharedWasmEngine)
+WasmEngine* global_wasm_engine = nullptr;
} // namespace
// static
void WasmEngine::InitializeOncePerProcess() {
- *GetSharedWasmEngine() = std::make_shared<WasmEngine>();
+ DCHECK_NULL(global_wasm_engine);
+ global_wasm_engine = new WasmEngine();
}
// static
void WasmEngine::GlobalTearDown() {
- GetSharedWasmEngine()->reset();
+ // Note: This can be called multiple times in a row (see
+ // test-api/InitializeAndDisposeMultiple). This is fine, as
+ // {global_wasm_engine} will be nullptr then.
+ delete global_wasm_engine;
+ global_wasm_engine = nullptr;
}
// static
-std::shared_ptr<WasmEngine> WasmEngine::GetWasmEngine() {
- return *GetSharedWasmEngine();
+WasmEngine* WasmEngine::GetWasmEngine() {
+ DCHECK_NOT_NULL(global_wasm_engine);
+ return global_wasm_engine;
}
// {max_mem_pages} is declared in wasm-limits.h.
diff --git a/deps/v8/src/wasm/wasm-engine.h b/deps/v8/src/wasm/wasm-engine.h
index 5a26bd4457..d4736036cb 100644
--- a/deps/v8/src/wasm/wasm-engine.h
+++ b/deps/v8/src/wasm/wasm-engine.h
@@ -246,6 +246,12 @@ class V8_EXPORT_PRIVATE WasmEngine {
// for tearing down an isolate, or to clean it up to be reused.
void DeleteCompileJobsOnIsolate(Isolate* isolate);
+ // Get a token for compiling wrappers for an Isolate. The token is used to
+ // synchronize background tasks on isolate shutdown. The caller should only
+ // hold the token while compiling export wrappers. If the isolate is already
+ // shutting down, this method will return an invalid token.
+ OperationsBarrier::Token StartWrapperCompilation(Isolate*);
+
// Manage the set of Isolates that use this WasmEngine.
void AddIsolate(Isolate* isolate);
void RemoveIsolate(Isolate* isolate);
@@ -351,10 +357,8 @@ class V8_EXPORT_PRIVATE WasmEngine {
static void InitializeOncePerProcess();
static void GlobalTearDown();
- // Returns a reference to the WasmEngine shared by the entire process. Try to
- // use {Isolate::wasm_engine} instead if it is available, which encapsulates
- // engine lifetime decisions during Isolate bootstrapping.
- static std::shared_ptr<WasmEngine> GetWasmEngine();
+ // Returns a reference to the WasmEngine shared by the entire process.
+ static WasmEngine* GetWasmEngine();
private:
struct CurrentGCInfo;
diff --git a/deps/v8/src/wasm/wasm-feature-flags.h b/deps/v8/src/wasm/wasm-feature-flags.h
index 9c790d7c67..9adf3d662f 100644
--- a/deps/v8/src/wasm/wasm-feature-flags.h
+++ b/deps/v8/src/wasm/wasm-feature-flags.h
@@ -37,7 +37,12 @@
/* Relaxed SIMD proposal. */ \
/* https://github.com/WebAssembly/relaxed-simd */ \
/* V8 side owner: zhin */ \
- V(relaxed_simd, "relaxed simd", false)
+ V(relaxed_simd, "relaxed simd", false) \
+ \
+ /* Branch Hinting proposal. */ \
+ /* https://github.com/WebAssembly/branch-hinting */ \
+ /* V8 side owner: jkummerow */ \
+ V(branch_hinting, "branch hinting", false)
// #############################################################################
// Staged features (disabled by default, but enabled via --wasm-staging (also
@@ -76,13 +81,6 @@
// Shipped features (enabled by default). Remove the feature flag once they hit
// stable and are expected to stay enabled.
#define FOREACH_WASM_SHIPPED_FEATURE_FLAG(V) /* (force 80 columns) */ \
- /* Multi-value proposal. */ \
- /* https://github.com/WebAssembly/multi-value */ \
- /* V8 side owner: thibaudm */ \
- /* Shipped in v8.6. */ \
- /* ITS: https://groups.google.com/g/v8-users/c/pv2E4yFWeF0 */ \
- V(mv, "multi-value support", true) \
- \
/* Fixed-width SIMD operations. */ \
/* https://github.com/webassembly/simd */ \
/* V8 side owner: gdeepti, zhin */ \
diff --git a/deps/v8/src/wasm/wasm-init-expr.cc b/deps/v8/src/wasm/wasm-init-expr.cc
new file mode 100644
index 0000000000..6348c58193
--- /dev/null
+++ b/deps/v8/src/wasm/wasm-init-expr.cc
@@ -0,0 +1,57 @@
+// Copyright 2021 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.
+
+#include "src/wasm/wasm-init-expr.h"
+
+namespace v8 {
+namespace internal {
+namespace wasm {
+
+std::ostream& operator<<(std::ostream& os, const WasmInitExpr& expr) {
+ os << "(";
+ switch (expr.kind()) {
+ case WasmInitExpr::kNone:
+ UNREACHABLE();
+ case WasmInitExpr::kGlobalGet:
+ os << "global.get " << expr.immediate().index;
+ break;
+ case WasmInitExpr::kI32Const:
+ os << "i32.const " << expr.immediate().i32_const;
+ break;
+ case WasmInitExpr::kI64Const:
+ os << "i64.const " << expr.immediate().i64_const;
+ break;
+ case WasmInitExpr::kF32Const:
+ os << "f32.const " << expr.immediate().f32_const;
+ break;
+ case WasmInitExpr::kF64Const:
+ os << "f64.const " << expr.immediate().f64_const;
+ break;
+ case WasmInitExpr::kS128Const:
+ os << "s128.const 0x" << std::hex;
+ for (uint8_t b : expr.immediate().s128_const) {
+ os << b;
+ }
+ os << std::dec;
+ break;
+ case WasmInitExpr::kRefNullConst:
+ os << "ref.null " << expr.immediate().heap_type;
+ break;
+ case WasmInitExpr::kRefFuncConst:
+ os << "ref.func " << expr.immediate().index;
+ break;
+ case WasmInitExpr::kRttCanon:
+ os << "rtt.canon " << expr.immediate().heap_type;
+ break;
+ case WasmInitExpr::kRttSub:
+ os << "rtt.sub " << *expr.operand();
+ break;
+ }
+ os << ")";
+ return os;
+}
+
+} // namespace wasm
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/src/wasm/wasm-init-expr.h b/deps/v8/src/wasm/wasm-init-expr.h
new file mode 100644
index 0000000000..39fc1a7ee6
--- /dev/null
+++ b/deps/v8/src/wasm/wasm-init-expr.h
@@ -0,0 +1,150 @@
+// Copyright 2021 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.
+
+#if !V8_ENABLE_WEBASSEMBLY
+#error This header should only be included if WebAssembly is enabled.
+#endif // !V8_ENABLE_WEBASSEMBLY
+
+#ifndef V8_WASM_WASM_INIT_EXPR_H_
+#define V8_WASM_WASM_INIT_EXPR_H_
+
+#include <memory>
+
+#include "src/wasm/value-type.h"
+
+namespace v8 {
+namespace internal {
+namespace wasm {
+
+// Representation of an initializer expression.
+class WasmInitExpr {
+ public:
+ enum Operator {
+ kNone,
+ kGlobalGet,
+ kI32Const,
+ kI64Const,
+ kF32Const,
+ kF64Const,
+ kS128Const,
+ kRefNullConst,
+ kRefFuncConst,
+ kRttCanon,
+ kRttSub
+ };
+
+ union Immediate {
+ int32_t i32_const;
+ int64_t i64_const;
+ float f32_const;
+ double f64_const;
+ std::array<uint8_t, kSimd128Size> s128_const;
+ uint32_t index;
+ HeapType::Representation heap_type;
+ };
+
+ WasmInitExpr() : kind_(kNone) { immediate_.i32_const = 0; }
+ explicit WasmInitExpr(int32_t v) : kind_(kI32Const) {
+ immediate_.i32_const = v;
+ }
+ explicit WasmInitExpr(int64_t v) : kind_(kI64Const) {
+ immediate_.i64_const = v;
+ }
+ explicit WasmInitExpr(float v) : kind_(kF32Const) {
+ immediate_.f32_const = v;
+ }
+ explicit WasmInitExpr(double v) : kind_(kF64Const) {
+ immediate_.f64_const = v;
+ }
+ explicit WasmInitExpr(uint8_t v[kSimd128Size]) : kind_(kS128Const) {
+ base::Memcpy(immediate_.s128_const.data(), v, kSimd128Size);
+ }
+
+ MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(WasmInitExpr);
+
+ static WasmInitExpr GlobalGet(uint32_t index) {
+ WasmInitExpr expr;
+ expr.kind_ = kGlobalGet;
+ expr.immediate_.index = index;
+ return expr;
+ }
+
+ static WasmInitExpr RefFuncConst(uint32_t index) {
+ WasmInitExpr expr;
+ expr.kind_ = kRefFuncConst;
+ expr.immediate_.index = index;
+ return expr;
+ }
+
+ static WasmInitExpr RefNullConst(HeapType::Representation heap_type) {
+ WasmInitExpr expr;
+ expr.kind_ = kRefNullConst;
+ expr.immediate_.heap_type = heap_type;
+ return expr;
+ }
+
+ static WasmInitExpr RttCanon(uint32_t index) {
+ WasmInitExpr expr;
+ expr.kind_ = kRttCanon;
+ expr.immediate_.index = index;
+ return expr;
+ }
+
+ static WasmInitExpr RttSub(uint32_t index, WasmInitExpr supertype) {
+ WasmInitExpr expr;
+ expr.kind_ = kRttSub;
+ expr.immediate_.index = index;
+ expr.operand_ = std::make_unique<WasmInitExpr>(std::move(supertype));
+ return expr;
+ }
+
+ Immediate immediate() const { return immediate_; }
+ Operator kind() const { return kind_; }
+ WasmInitExpr* operand() const { return operand_.get(); }
+
+ bool operator==(const WasmInitExpr& other) const {
+ if (kind() != other.kind()) return false;
+ switch (kind()) {
+ case kNone:
+ return true;
+ case kGlobalGet:
+ case kRefFuncConst:
+ case kRttCanon:
+ return immediate().index == other.immediate().index;
+ case kI32Const:
+ return immediate().i32_const == other.immediate().i32_const;
+ case kI64Const:
+ return immediate().i64_const == other.immediate().i64_const;
+ case kF32Const:
+ return immediate().f32_const == other.immediate().f32_const;
+ case kF64Const:
+ return immediate().f64_const == other.immediate().f64_const;
+ case kS128Const:
+ return immediate().s128_const == other.immediate().s128_const;
+ case kRefNullConst:
+ return immediate().heap_type == other.immediate().heap_type;
+ case kRttSub:
+ return immediate().index == other.immediate().index &&
+ *operand() == *other.operand();
+ }
+ }
+
+ V8_INLINE bool operator!=(const WasmInitExpr& other) {
+ return !(*this == other);
+ }
+
+ private:
+ Immediate immediate_;
+ Operator kind_;
+ std::unique_ptr<WasmInitExpr> operand_ = nullptr;
+};
+
+V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
+ const WasmInitExpr& expr);
+
+} // namespace wasm
+} // namespace internal
+} // namespace v8
+
+#endif // V8_WASM_WASM_INIT_EXPR_H_
diff --git a/deps/v8/src/wasm/wasm-js.cc b/deps/v8/src/wasm/wasm-js.cc
index 7f1d8e261f..70492135de 100644
--- a/deps/v8/src/wasm/wasm-js.cc
+++ b/deps/v8/src/wasm/wasm-js.cc
@@ -1475,9 +1475,7 @@ void WebAssemblyFunction(const v8::FunctionCallbackInfo<v8::Value>& args) {
thrower.TypeError("Argument 0 contains results without 'length'");
return;
}
- if (results_len > (enabled_features.has_mv()
- ? i::wasm::kV8MaxWasmFunctionMultiReturns
- : i::wasm::kV8MaxWasmFunctionReturns)) {
+ if (results_len > i::wasm::kV8MaxWasmFunctionReturns) {
thrower.TypeError("Argument 0 contains too many results");
return;
}
@@ -2034,7 +2032,8 @@ Handle<JSFunction> InstallConstructorFunc(Isolate* isolate,
Handle<JSObject> object,
const char* str,
FunctionCallback func) {
- return InstallFunc(isolate, object, str, func, 1, true, DONT_ENUM);
+ return InstallFunc(isolate, object, str, func, 1, true, DONT_ENUM,
+ SideEffectType::kHasNoSideEffect);
}
Handle<String> GetterName(Isolate* isolate, Handle<String> name) {
@@ -2064,7 +2063,8 @@ void InstallGetterSetter(Isolate* isolate, Handle<JSObject> object,
FunctionCallback setter) {
Handle<String> name = v8_str(isolate, str);
Handle<JSFunction> getter_func =
- CreateFunc(isolate, GetterName(isolate, name), getter, false);
+ CreateFunc(isolate, GetterName(isolate, name), getter, false,
+ SideEffectType::kHasNoSideEffect);
Handle<JSFunction> setter_func =
CreateFunc(isolate, SetterName(isolate, name), setter, false);
setter_func->shared().set_length(1);
@@ -2148,11 +2148,12 @@ void WasmJs::Install(Isolate* isolate, bool exposed_on_global_object) {
JSFunction::SetInitialMap(isolate, module_constructor, module_map,
module_proto);
InstallFunc(isolate, module_constructor, "imports", WebAssemblyModuleImports,
- 1);
+ 1, false, NONE, SideEffectType::kHasNoSideEffect);
InstallFunc(isolate, module_constructor, "exports", WebAssemblyModuleExports,
- 1);
+ 1, false, NONE, SideEffectType::kHasNoSideEffect);
InstallFunc(isolate, module_constructor, "customSections",
- WebAssemblyModuleCustomSections, 2);
+ WebAssemblyModuleCustomSections, 2, false, NONE,
+ SideEffectType::kHasNoSideEffect);
JSObject::AddProperty(isolate, module_proto, factory->to_string_tag_symbol(),
v8_str(isolate, "WebAssembly.Module"), ro_attributes);
@@ -2192,7 +2193,8 @@ void WasmJs::Install(Isolate* isolate, bool exposed_on_global_object) {
JSFunction::SetInitialMap(isolate, table_constructor, table_map, table_proto);
InstallGetter(isolate, table_proto, "length", WebAssemblyTableGetLength);
InstallFunc(isolate, table_proto, "grow", WebAssemblyTableGrow, 1);
- InstallFunc(isolate, table_proto, "get", WebAssemblyTableGet, 1);
+ InstallFunc(isolate, table_proto, "get", WebAssemblyTableGet, 1, false, NONE,
+ SideEffectType::kHasNoSideEffect);
InstallFunc(isolate, table_proto, "set", WebAssemblyTableSet, 2);
if (enabled_features.has_type_reflection()) {
InstallFunc(isolate, table_constructor, "type", WebAssemblyTableType, 1);
@@ -2232,7 +2234,8 @@ void WasmJs::Install(Isolate* isolate, bool exposed_on_global_object) {
i::WASM_GLOBAL_OBJECT_TYPE, WasmGlobalObject::kHeaderSize);
JSFunction::SetInitialMap(isolate, global_constructor, global_map,
global_proto);
- InstallFunc(isolate, global_proto, "valueOf", WebAssemblyGlobalValueOf, 0);
+ InstallFunc(isolate, global_proto, "valueOf", WebAssemblyGlobalValueOf, 0,
+ false, NONE, SideEffectType::kHasNoSideEffect);
InstallGetterSetter(isolate, global_proto, "value", WebAssemblyGlobalGetValue,
WebAssemblyGlobalSetValue);
if (enabled_features.has_type_reflection()) {
@@ -2243,15 +2246,8 @@ void WasmJs::Install(Isolate* isolate, bool exposed_on_global_object) {
// Setup Exception
if (enabled_features.has_eh()) {
- Handle<String> exception_name = v8_str(isolate, "Exception");
- Handle<JSFunction> exception_constructor =
- CreateFunc(isolate, exception_name, WebAssemblyException, true,
- SideEffectType::kHasSideEffect);
- exception_constructor->shared().set_length(1);
- JSObject::AddProperty(isolate, webassembly, exception_name,
- exception_constructor, DONT_ENUM);
- // Install the constructor on the context unconditionally so that it is also
- // available when the feature is enabled via the origin trial.
+ Handle<JSFunction> exception_constructor = InstallConstructorFunc(
+ isolate, webassembly, "Exception", WebAssemblyException);
context->set_wasm_exception_constructor(*exception_constructor);
SetDummyInstanceTemplate(isolate, exception_constructor);
JSFunction::EnsureHasInitialMap(exception_constructor);
@@ -2332,7 +2328,6 @@ void WasmJs::InstallConditionalFeatures(Isolate* isolate,
Handle<JSObject> webassembly = Handle<JSObject>::cast(webassembly_obj);
// Setup Exception
Handle<String> exception_name = v8_str(isolate, "Exception");
-
if (JSObject::HasOwnProperty(webassembly, exception_name).FromMaybe(true)) {
// The {Exception} constructor already exists, there is nothing more to
// do.
diff --git a/deps/v8/src/wasm/wasm-limits.h b/deps/v8/src/wasm/wasm-limits.h
index 78a8f0afd4..9e565db0e8 100644
--- a/deps/v8/src/wasm/wasm-limits.h
+++ b/deps/v8/src/wasm/wasm-limits.h
@@ -43,8 +43,7 @@ constexpr size_t kV8MaxWasmModuleSize = 1024 * 1024 * 1024; // = 1 GiB
constexpr size_t kV8MaxWasmFunctionSize = 7654321;
constexpr size_t kV8MaxWasmFunctionLocals = 50000;
constexpr size_t kV8MaxWasmFunctionParams = 1000;
-constexpr size_t kV8MaxWasmFunctionMultiReturns = 1000;
-constexpr size_t kV8MaxWasmFunctionReturns = 1;
+constexpr size_t kV8MaxWasmFunctionReturns = 1000;
constexpr size_t kV8MaxWasmFunctionBrTableSize = 65520;
// Don't use this limit directly, but use the value of FLAG_wasm_max_table_size.
constexpr size_t kV8MaxWasmTableSize = 10000000;
@@ -57,7 +56,7 @@ constexpr size_t kV8MaxWasmStructFields = 999;
constexpr uint32_t kV8MaxRttSubtypingDepth = 31;
// Maximum supported by implementation: ((1<<27)-3).
// Reason: total object size in bytes must fit into a Smi, for filler objects.
-constexpr size_t kV8MaxWasmArrayLength = 1u << 24;
+constexpr size_t kV8MaxWasmArrayLength = 1u << 26;
static_assert(kV8MaxWasmTableSize <= 4294967295, // 2^32 - 1
"v8 should not exceed WebAssembly's non-web embedding limits");
diff --git a/deps/v8/src/wasm/wasm-module-builder.cc b/deps/v8/src/wasm/wasm-module-builder.cc
index 67f826f2fd..41fa4f6b6b 100644
--- a/deps/v8/src/wasm/wasm-module-builder.cc
+++ b/deps/v8/src/wasm/wasm-module-builder.cc
@@ -13,7 +13,6 @@
#include "src/wasm/leb-helper.h"
#include "src/wasm/wasm-constants.h"
#include "src/wasm/wasm-module.h"
-#include "src/wasm/wasm-opcodes.h"
#include "src/zone/zone-containers.h"
namespace v8 {
@@ -301,6 +300,11 @@ uint32_t WasmModuleBuilder::AddArrayType(ArrayType* type) {
return index;
}
+// static
+const uint32_t WasmModuleBuilder::kNullIndex =
+ std::numeric_limits<uint32_t>::max();
+
+// TODO(9495): Add support for typed function tables and more init. expressions.
uint32_t WasmModuleBuilder::AllocateIndirectFunctions(uint32_t count) {
DCHECK(allocating_indirect_functions_allowed_);
uint32_t index = static_cast<uint32_t>(indirect_functions_.size());
@@ -310,7 +314,7 @@ uint32_t WasmModuleBuilder::AllocateIndirectFunctions(uint32_t count) {
}
uint32_t new_size = static_cast<uint32_t>(indirect_functions_.size()) + count;
DCHECK(max_table_size_ == 0 || new_size <= max_table_size_);
- indirect_functions_.resize(new_size, WasmElemSegment::kNullIndex);
+ indirect_functions_.resize(new_size, kNullIndex);
uint32_t max = max_table_size_ > 0 ? max_table_size_ : new_size;
if (tables_.empty()) {
// This cannot use {AddTable} because that would flip the
@@ -710,13 +714,13 @@ void WasmModuleBuilder::WriteTo(ZoneBuffer* buffer) const {
buffer->write_u8(0); // table index
uint32_t first_element = 0;
while (first_element < indirect_functions_.size() &&
- indirect_functions_[first_element] == WasmElemSegment::kNullIndex) {
+ indirect_functions_[first_element] == kNullIndex) {
first_element++;
}
uint32_t last_element =
static_cast<uint32_t>(indirect_functions_.size() - 1);
while (last_element >= first_element &&
- indirect_functions_[last_element] == WasmElemSegment::kNullIndex) {
+ indirect_functions_[last_element] == kNullIndex) {
last_element--;
}
buffer->write_u8(kExprI32Const); // offset
diff --git a/deps/v8/src/wasm/wasm-module-builder.h b/deps/v8/src/wasm/wasm-module-builder.h
index f7b5ff1b76..c1d15a834e 100644
--- a/deps/v8/src/wasm/wasm-module-builder.h
+++ b/deps/v8/src/wasm/wasm-module-builder.h
@@ -297,6 +297,8 @@ class V8_EXPORT_PRIVATE WasmModuleBuilder : public ZoneObject {
return types_[exceptions_[index]].sig;
}
+ static const uint32_t kNullIndex;
+
private:
struct Type {
enum Kind { kFunctionSig, kStructType, kArrayType };
diff --git a/deps/v8/src/wasm/wasm-module.cc b/deps/v8/src/wasm/wasm-module.cc
index c336dc5f7d..acebe8d0e5 100644
--- a/deps/v8/src/wasm/wasm-module.cc
+++ b/deps/v8/src/wasm/wasm-module.cc
@@ -21,25 +21,23 @@
#include "src/snapshot/snapshot.h"
#include "src/wasm/module-decoder.h"
#include "src/wasm/wasm-code-manager.h"
+#include "src/wasm/wasm-init-expr.h"
#include "src/wasm/wasm-js.h"
#include "src/wasm/wasm-objects-inl.h"
#include "src/wasm/wasm-result.h"
+#include "src/wasm/wasm-subtyping.h"
namespace v8 {
namespace internal {
namespace wasm {
-// static
-const uint32_t WasmElemSegment::kNullIndex;
-
WireBytesRef LazilyGeneratedNames::LookupFunctionName(
- const ModuleWireBytes& wire_bytes, uint32_t function_index,
- Vector<const WasmExport> export_table) const {
+ const ModuleWireBytes& wire_bytes, uint32_t function_index) const {
base::MutexGuard lock(&mutex_);
if (!function_names_) {
function_names_.reset(new std::unordered_map<uint32_t, WireBytesRef>());
DecodeFunctionNames(wire_bytes.start(), wire_bytes.end(),
- function_names_.get(), export_table);
+ function_names_.get());
}
auto it = function_names_->find(function_index);
if (it == function_names_->end()) return WireBytesRef();
@@ -180,7 +178,7 @@ WasmName ModuleWireBytes::GetNameOrNull(WireBytesRef ref) const {
WasmName ModuleWireBytes::GetNameOrNull(const WasmFunction* function,
const WasmModule* module) const {
return GetNameOrNull(module->lazily_generated_names.LookupFunctionName(
- *this, function->func_index, VectorOf(module->export_table)));
+ *this, function->func_index));
}
std::ostream& operator<<(std::ostream& os, const WasmFunctionName& name) {
@@ -199,6 +197,8 @@ std::ostream& operator<<(std::ostream& os, const WasmFunctionName& name) {
WasmModule::WasmModule(std::unique_ptr<Zone> signature_zone)
: signature_zone(std::move(signature_zone)) {}
+WasmModule::~WasmModule() { DeleteCachedTypeJudgementsForModule(this); }
+
bool IsWasmCodegenAllowed(Isolate* isolate, Handle<Context> context) {
// TODO(wasm): Once wasm has its own CSP policy, we should introduce a
// separate callback that includes information about the module about to be
diff --git a/deps/v8/src/wasm/wasm-module.h b/deps/v8/src/wasm/wasm-module.h
index bbfcf9623b..d185e67341 100644
--- a/deps/v8/src/wasm/wasm-module.h
+++ b/deps/v8/src/wasm/wasm-module.h
@@ -16,10 +16,11 @@
#include "src/common/globals.h"
#include "src/handles/handles.h"
#include "src/utils/vector.h"
+#include "src/wasm/branch-hint-map.h"
#include "src/wasm/signature-map.h"
#include "src/wasm/struct-types.h"
#include "src/wasm/wasm-constants.h"
-#include "src/wasm/wasm-opcodes.h"
+#include "src/wasm/wasm-init-expr.h"
namespace v8 {
@@ -107,30 +108,34 @@ struct WasmDataSegment {
// Static representation of wasm element segment (table initializer).
struct WasmElemSegment {
- MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(WasmElemSegment);
-
// Construct an active segment.
- WasmElemSegment(uint32_t table_index, WasmInitExpr offset)
- : type(kWasmFuncRef),
+ WasmElemSegment(ValueType type, uint32_t table_index, WasmInitExpr offset)
+ : type(type),
table_index(table_index),
offset(std::move(offset)),
status(kStatusActive) {}
// Construct a passive or declarative segment, which has no table index or
// offset.
- explicit WasmElemSegment(bool declarative)
- : type(kWasmFuncRef),
+ WasmElemSegment(ValueType type, bool declarative)
+ : type(type),
table_index(0),
status(declarative ? kStatusDeclarative : kStatusPassive) {}
- // Used in the {entries} vector to represent a `ref.null` entry in a passive
- // segment.
- V8_EXPORT_PRIVATE static const uint32_t kNullIndex = ~0u;
+ // Construct a passive or declarative segment, which has no table index or
+ // offset.
+ WasmElemSegment()
+ : type(kWasmBottom), table_index(0), status(kStatusActive) {}
+
+ WasmElemSegment(const WasmElemSegment&) = delete;
+ WasmElemSegment(WasmElemSegment&&) V8_NOEXCEPT = default;
+ WasmElemSegment& operator=(const WasmElemSegment&) = delete;
+ WasmElemSegment& operator=(WasmElemSegment&&) V8_NOEXCEPT = default;
ValueType type;
uint32_t table_index;
WasmInitExpr offset;
- std::vector<uint32_t> entries;
+ std::vector<WasmInitExpr> entries;
enum Status {
kStatusActive, // copied automatically during instantiation.
kStatusPassive, // copied explicitly after instantiation.
@@ -188,8 +193,7 @@ struct ModuleWireBytes;
class V8_EXPORT_PRIVATE LazilyGeneratedNames {
public:
WireBytesRef LookupFunctionName(const ModuleWireBytes& wire_bytes,
- uint32_t function_index,
- Vector<const WasmExport> export_table) const;
+ uint32_t function_index) const;
void AddForTesting(int function_index, WireBytesRef name);
@@ -335,6 +339,7 @@ struct V8_EXPORT_PRIVATE WasmModule {
std::vector<WasmException> exceptions;
std::vector<WasmElemSegment> elem_segments;
std::vector<WasmCompilationHint> compilation_hints;
+ BranchHintInfo branch_hints;
SignatureMap signature_map; // canonicalizing map for signature indexes.
ModuleOrigin origin = kWasmOrigin; // origin of the module
@@ -347,6 +352,7 @@ struct V8_EXPORT_PRIVATE WasmModule {
explicit WasmModule(std::unique_ptr<Zone> signature_zone = nullptr);
WasmModule(const WasmModule&) = delete;
+ ~WasmModule();
WasmModule& operator=(const WasmModule&) = delete;
};
diff --git a/deps/v8/src/wasm/wasm-objects-inl.h b/deps/v8/src/wasm/wasm-objects-inl.h
index 3da7e1650a..e102fbd97f 100644
--- a/deps/v8/src/wasm/wasm-objects-inl.h
+++ b/deps/v8/src/wasm/wasm-objects-inl.h
@@ -36,13 +36,14 @@ namespace internal {
OBJECT_CONSTRUCTORS_IMPL(WasmExceptionObject, JSObject)
TQ_OBJECT_CONSTRUCTORS_IMPL(WasmExceptionTag)
-OBJECT_CONSTRUCTORS_IMPL(WasmExportedFunctionData, Struct)
+OBJECT_CONSTRUCTORS_IMPL(WasmExportedFunctionData, WasmFunctionData)
OBJECT_CONSTRUCTORS_IMPL(WasmGlobalObject, JSObject)
OBJECT_CONSTRUCTORS_IMPL(WasmInstanceObject, JSObject)
OBJECT_CONSTRUCTORS_IMPL(WasmMemoryObject, JSObject)
OBJECT_CONSTRUCTORS_IMPL(WasmModuleObject, JSObject)
OBJECT_CONSTRUCTORS_IMPL(WasmTableObject, JSObject)
OBJECT_CONSTRUCTORS_IMPL(AsmWasmData, Struct)
+TQ_OBJECT_CONSTRUCTORS_IMPL(WasmFunctionData)
TQ_OBJECT_CONSTRUCTORS_IMPL(WasmTypeInfo)
TQ_OBJECT_CONSTRUCTORS_IMPL(WasmStruct)
TQ_OBJECT_CONSTRUCTORS_IMPL(WasmArray)
@@ -55,6 +56,7 @@ CAST_ACCESSOR(WasmMemoryObject)
CAST_ACCESSOR(WasmModuleObject)
CAST_ACCESSOR(WasmTableObject)
CAST_ACCESSOR(AsmWasmData)
+CAST_ACCESSOR(WasmFunctionData)
CAST_ACCESSOR(WasmTypeInfo)
CAST_ACCESSOR(WasmStruct)
CAST_ACCESSOR(WasmArray)
@@ -329,18 +331,17 @@ WasmExportedFunction::WasmExportedFunction(Address ptr) : JSFunction(ptr) {
}
CAST_ACCESSOR(WasmExportedFunction)
+// WasmFunctionData
+ACCESSORS(WasmFunctionData, ref, Object, kRefOffset)
+
// WasmExportedFunctionData
ACCESSORS(WasmExportedFunctionData, wrapper_code, Code, kWrapperCodeOffset)
ACCESSORS(WasmExportedFunctionData, instance, WasmInstanceObject,
kInstanceOffset)
-SMI_ACCESSORS(WasmExportedFunctionData, jump_table_offset,
- kJumpTableOffsetOffset)
SMI_ACCESSORS(WasmExportedFunctionData, function_index, kFunctionIndexOffset)
ACCESSORS(WasmExportedFunctionData, signature, Foreign, kSignatureOffset)
SMI_ACCESSORS(WasmExportedFunctionData, wrapper_budget, kWrapperBudgetOffset)
ACCESSORS(WasmExportedFunctionData, c_wrapper_code, Object, kCWrapperCodeOffset)
-ACCESSORS(WasmExportedFunctionData, wasm_call_target, Object,
- kWasmCallTargetOffset)
SMI_ACCESSORS(WasmExportedFunctionData, packed_args_size, kPackedArgsSizeOffset)
wasm::FunctionSig* WasmExportedFunctionData::sig() const {
@@ -354,7 +355,7 @@ WasmJSFunction::WasmJSFunction(Address ptr) : JSFunction(ptr) {
CAST_ACCESSOR(WasmJSFunction)
// WasmJSFunctionData
-OBJECT_CONSTRUCTORS_IMPL(WasmJSFunctionData, Struct)
+OBJECT_CONSTRUCTORS_IMPL(WasmJSFunctionData, WasmFunctionData)
CAST_ACCESSOR(WasmJSFunctionData)
SMI_ACCESSORS(WasmJSFunctionData, serialized_return_count,
kSerializedReturnCountOffset)
@@ -362,7 +363,6 @@ SMI_ACCESSORS(WasmJSFunctionData, serialized_parameter_count,
kSerializedParameterCountOffset)
ACCESSORS(WasmJSFunctionData, serialized_signature, PodArray<wasm::ValueType>,
kSerializedSignatureOffset)
-ACCESSORS(WasmJSFunctionData, callable, JSReceiver, kCallableOffset)
ACCESSORS(WasmJSFunctionData, wrapper_code, Code, kWrapperCodeOffset)
ACCESSORS(WasmJSFunctionData, wasm_to_js_wrapper_code, Code,
kWasmToJsWrapperCodeOffset)
@@ -416,13 +416,27 @@ wasm::StructType* WasmStruct::type(Map map) {
wasm::StructType* WasmStruct::GcSafeType(Map map) {
DCHECK_EQ(WASM_STRUCT_TYPE, map.instance_type());
HeapObject raw = HeapObject::cast(map.constructor_or_back_pointer());
- MapWord map_word = raw.map_word();
+ MapWord map_word = raw.map_word(kRelaxedLoad);
HeapObject forwarded =
map_word.IsForwardingAddress() ? map_word.ToForwardingAddress() : raw;
Foreign foreign = Foreign::cast(forwarded);
return reinterpret_cast<wasm::StructType*>(foreign.foreign_address());
}
+int WasmStruct::Size(const wasm::StructType* type) {
+ // Object size must fit into a Smi (because of filler objects), and its
+ // computation must not overflow.
+ STATIC_ASSERT(Smi::kMaxValue <= kMaxInt);
+ DCHECK_LE(type->total_fields_size(), Smi::kMaxValue - kHeaderSize);
+ return std::max(kHeaderSize + static_cast<int>(type->total_fields_size()),
+ Heap::kMinObjectSizeInTaggedWords * kTaggedSize);
+}
+
+int WasmStruct::GcSafeSize(Map map) {
+ wasm::StructType* type = GcSafeType(map);
+ return Size(type);
+}
+
wasm::StructType* WasmStruct::type() const { return type(map()); }
ObjectSlot WasmStruct::RawField(int raw_offset) {
@@ -439,7 +453,7 @@ wasm::ArrayType* WasmArray::type(Map map) {
wasm::ArrayType* WasmArray::GcSafeType(Map map) {
DCHECK_EQ(WASM_ARRAY_TYPE, map.instance_type());
HeapObject raw = HeapObject::cast(map.constructor_or_back_pointer());
- MapWord map_word = raw.map_word();
+ MapWord map_word = raw.map_word(kRelaxedLoad);
HeapObject forwarded =
map_word.IsForwardingAddress() ? map_word.ToForwardingAddress() : raw;
Foreign foreign = Foreign::cast(forwarded);
@@ -460,12 +474,6 @@ int WasmArray::GcSafeSizeFor(Map map, int length) {
void WasmTypeInfo::clear_foreign_address(Isolate* isolate) {
#ifdef V8_HEAP_SANDBOX
-
- // TODO(syg): V8_HEAP_SANDBOX doesn't work with pointer cage
-#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
-#error "V8_HEAP_SANDBOX requires per-Isolate pointer compression cage"
-#endif
-
// Due to the type-specific pointer tags for external pointers, we need to
// allocate an entry in the table here even though it will just store nullptr.
AllocateExternalPointerEntries(isolate);
diff --git a/deps/v8/src/wasm/wasm-objects.cc b/deps/v8/src/wasm/wasm-objects.cc
index d4e7cb65a1..718124debf 100644
--- a/deps/v8/src/wasm/wasm-objects.cc
+++ b/deps/v8/src/wasm/wasm-objects.cc
@@ -226,33 +226,21 @@ MaybeHandle<String> WasmModuleObject::GetFunctionNameOrNull(
wasm::WireBytesRef name =
module_object->module()->lazily_generated_names.LookupFunctionName(
wasm::ModuleWireBytes(module_object->native_module()->wire_bytes()),
- func_index, VectorOf(module_object->module()->export_table));
+ func_index);
if (!name.is_set()) return {};
return ExtractUtf8StringFromModuleBytes(isolate, module_object, name,
kNoInternalize);
}
-Handle<String> WasmModuleObject::GetFunctionName(
- Isolate* isolate, Handle<WasmModuleObject> module_object,
- uint32_t func_index) {
- MaybeHandle<String> name =
- GetFunctionNameOrNull(isolate, module_object, func_index);
- if (!name.is_null()) return name.ToHandleChecked();
- EmbeddedVector<char, 32> buffer;
- DCHECK_GE(func_index, module_object->module()->num_imported_functions);
- int length = SNPrintF(buffer, "func%u", func_index);
- return isolate->factory()
- ->NewStringFromOneByte(Vector<uint8_t>::cast(buffer.SubVector(0, length)))
- .ToHandleChecked();
-}
-
-Vector<const uint8_t> WasmModuleObject::GetRawFunctionName(
- uint32_t func_index) {
+Vector<const uint8_t> WasmModuleObject::GetRawFunctionName(int func_index) {
+ if (func_index == wasm::kAnonymousFuncIndex) {
+ return Vector<const uint8_t>({nullptr, 0});
+ }
DCHECK_GT(module()->functions.size(), func_index);
wasm::ModuleWireBytes wire_bytes(native_module()->wire_bytes());
wasm::WireBytesRef name_ref =
- module()->lazily_generated_names.LookupFunctionName(
- wire_bytes, func_index, VectorOf(module()->export_table));
+ module()->lazily_generated_names.LookupFunctionName(wire_bytes,
+ func_index);
wasm::WasmName name = wire_bytes.GetNameOrNull(name_ref);
return Vector<const uint8_t>::cast(name);
}
@@ -454,21 +442,18 @@ void WasmTableObject::Set(Isolate* isolate, Handle<WasmTableObject> table,
case wasm::HeapType::kEq:
case wasm::HeapType::kData:
case wasm::HeapType::kI31:
- // TODO(7748): Implement once we have a story for struct/arrays/i31ref in
- // JS.
- UNIMPLEMENTED();
+ // TODO(7748): Implement once we have struct/arrays/i31ref tables.
+ UNREACHABLE();
case wasm::HeapType::kBottom:
UNREACHABLE();
default:
DCHECK(!table->instance().IsUndefined());
- if (WasmInstanceObject::cast(table->instance())
- .module()
- ->has_signature(entry_index)) {
- SetFunctionTableEntry(isolate, table, entries, entry_index, entry);
- return;
- }
- // TODO(7748): Implement once we have a story for struct/arrays in JS.
- UNIMPLEMENTED();
+ // TODO(7748): Relax this once we have struct/array/i31ref tables.
+ DCHECK(WasmInstanceObject::cast(table->instance())
+ .module()
+ ->has_signature(table->type().ref_index()));
+ SetFunctionTableEntry(isolate, table, entries, entry_index, entry);
+ return;
}
}
@@ -509,18 +494,16 @@ Handle<Object> WasmTableObject::Get(Isolate* isolate,
UNREACHABLE();
default:
DCHECK(!table->instance().IsUndefined());
- if (WasmInstanceObject::cast(table->instance())
- .module()
- ->has_signature(entry_index)) {
- if (WasmExportedFunction::IsWasmExportedFunction(*entry) ||
- WasmJSFunction::IsWasmJSFunction(*entry) ||
- WasmCapiFunction::IsWasmCapiFunction(*entry)) {
- return entry;
- }
- break;
+ // TODO(7748): Relax this once we have struct/array/i31ref tables.
+ DCHECK(WasmInstanceObject::cast(table->instance())
+ .module()
+ ->has_signature(table->type().ref_index()));
+ if (WasmExportedFunction::IsWasmExportedFunction(*entry) ||
+ WasmJSFunction::IsWasmJSFunction(*entry) ||
+ WasmCapiFunction::IsWasmCapiFunction(*entry)) {
+ return entry;
}
- // TODO(7748): Implement once we have a story for struct/arrays in JS.
- UNIMPLEMENTED();
+ break;
}
// {entry} is not a valid entry in the table. It has to be a placeholder
@@ -1898,30 +1881,18 @@ Handle<WasmExportedFunction> WasmExportedFunction::New(
(export_wrapper->is_builtin() &&
export_wrapper->builtin_index() == Builtins::kGenericJSToWasmWrapper));
int num_imported_functions = instance->module()->num_imported_functions;
- int jump_table_offset = -1;
- if (func_index >= num_imported_functions) {
- uint32_t jump_table_diff =
- instance->module_object().native_module()->GetJumpTableOffset(
- func_index);
- DCHECK_GE(kMaxInt, jump_table_diff);
- jump_table_offset = static_cast<int>(jump_table_diff);
- }
+ Handle<Object> ref =
+ func_index >= num_imported_functions
+ ? instance
+ : handle(instance->imported_function_refs().get(func_index), isolate);
+
Factory* factory = isolate->factory();
const wasm::FunctionSig* sig = instance->module()->functions[func_index].sig;
- Handle<Foreign> sig_foreign =
- factory->NewForeign(reinterpret_cast<Address>(sig));
+ Address call_target = instance->GetCallTarget(func_index);
Handle<WasmExportedFunctionData> function_data =
- Handle<WasmExportedFunctionData>::cast(factory->NewStruct(
- WASM_EXPORTED_FUNCTION_DATA_TYPE, AllocationType::kOld));
- function_data->set_wrapper_code(*export_wrapper);
- function_data->set_instance(*instance);
- function_data->set_jump_table_offset(jump_table_offset);
- function_data->set_function_index(func_index);
- function_data->set_signature(*sig_foreign);
- function_data->set_wrapper_budget(wasm::kGenericWrapperBudget);
- function_data->set_c_wrapper_code(Smi::zero(), SKIP_WRITE_BARRIER);
- function_data->set_wasm_call_target(Smi::zero(), SKIP_WRITE_BARRIER);
- function_data->set_packed_args_size(0);
+ factory->NewWasmExportedFunctionData(
+ export_wrapper, instance, call_target, ref, func_index,
+ reinterpret_cast<Address>(sig), wasm::kGenericWrapperBudget);
MaybeHandle<String> maybe_name;
bool is_asm_js_module = instance->module_object().is_asm_js();
@@ -2042,18 +2013,18 @@ Handle<WasmJSFunction> WasmJSFunction::New(Isolate* isolate,
Handle<Code> wrapper_code =
compiler::CompileJSToJSWrapper(isolate, sig, nullptr).ToHandleChecked();
+ // WasmJSFunctions use on-heap Code objects as call targets, so we can't
+ // cache the target address, unless the WasmJSFunction wraps a
+ // WasmExportedFunction.
+ Address call_target = kNullAddress;
+ if (WasmExportedFunction::IsWasmExportedFunction(*callable)) {
+ call_target = WasmExportedFunction::cast(*callable).GetWasmCallTarget();
+ }
+
Factory* factory = isolate->factory();
- Handle<WasmJSFunctionData> function_data = Handle<WasmJSFunctionData>::cast(
- factory->NewStruct(WASM_JS_FUNCTION_DATA_TYPE, AllocationType::kOld));
- function_data->set_serialized_return_count(return_count);
- function_data->set_serialized_parameter_count(parameter_count);
- function_data->set_serialized_signature(*serialized_sig);
- function_data->set_callable(*callable);
- function_data->set_wrapper_code(*wrapper_code);
- // Use Abort() as a default value (it will never be called if not overwritten
- // below).
- function_data->set_wasm_to_js_wrapper_code(
- isolate->heap()->builtin(Builtins::kAbort));
+ Handle<WasmJSFunctionData> function_data = factory->NewWasmJSFunctionData(
+ call_target, callable, return_count, parameter_count, serialized_sig,
+ wrapper_code);
if (wasm::WasmFeatures::FromIsolate(isolate).has_typed_funcref()) {
using CK = compiler::WasmImportCallKind;
@@ -2094,7 +2065,8 @@ Handle<WasmJSFunction> WasmJSFunction::New(Isolate* isolate,
}
JSReceiver WasmJSFunction::GetCallable() const {
- return shared().wasm_js_function_data().callable();
+ return JSReceiver::cast(
+ Tuple2::cast(shared().wasm_js_function_data().ref()).value2());
}
const wasm::FunctionSig* WasmJSFunction::GetSignature(Zone* zone) {
@@ -2256,7 +2228,8 @@ bool TypecheckJSObject(Isolate* isolate, const WasmModule* module,
if (WasmJSFunction::IsWasmJSFunction(*value)) {
// Since a WasmJSFunction cannot refer to indexed types (definable
- // only in a module), we do not need to use EquivalentTypes().
+ // only in a module), we do not need full function subtyping.
+ // TODO(manoskouk): Change this if wasm types can be exported.
if (!WasmJSFunction::cast(*value).MatchesSignature(
module->signature(expected.ref_index()))) {
*error_message =
@@ -2268,11 +2241,12 @@ bool TypecheckJSObject(Isolate* isolate, const WasmModule* module,
}
if (WasmCapiFunction::IsWasmCapiFunction(*value)) {
+ // Since a WasmCapiFunction cannot refer to indexed types
+ // (definable only in a module), we do not need full function
+ // subtyping.
+ // TODO(manoskouk): Change this if wasm types can be exported.
if (!WasmCapiFunction::cast(*value).MatchesSignature(
module->signature(expected.ref_index()))) {
- // Since a WasmCapiFunction cannot refer to indexed types
- // (definable in a module), we don't need to invoke
- // IsEquivalentType();
*error_message =
"assigned WasmCapiFunction has to be a subtype of the "
"expected type";
diff --git a/deps/v8/src/wasm/wasm-objects.h b/deps/v8/src/wasm/wasm-objects.h
index 47bef60ac7..473c4725cc 100644
--- a/deps/v8/src/wasm/wasm-objects.h
+++ b/deps/v8/src/wasm/wasm-objects.h
@@ -166,17 +166,11 @@ class WasmModuleObject : public JSObject {
Handle<WasmModuleObject>,
uint32_t func_index);
- // Get the function name of the function identified by the given index.
- // Returns "func[func_index]" if the function is unnamed or the
- // name is not a valid UTF-8 string.
- static Handle<String> GetFunctionName(Isolate*, Handle<WasmModuleObject>,
- uint32_t func_index);
-
// Get the raw bytes of the function name of the function identified by the
// given index.
// Meant to be used for debugging or frame printing.
// Does not allocate, hence gc-safe.
- Vector<const uint8_t> GetRawFunctionName(uint32_t func_index);
+ Vector<const uint8_t> GetRawFunctionName(int func_index);
// Extract a portion of the wire bytes as UTF-8 string, optionally
// internalized. (Prefer to internalize early if the string will be used for a
@@ -747,19 +741,31 @@ class WasmIndirectFunctionTable : public Struct {
OBJECT_CONSTRUCTORS(WasmIndirectFunctionTable, Struct);
};
+class WasmFunctionData
+ : public TorqueGeneratedWasmFunctionData<WasmFunctionData, Foreign> {
+ public:
+ DECL_ACCESSORS(ref, Object)
+
+ DECL_CAST(WasmFunctionData)
+ DECL_PRINTER(WasmFunctionData)
+
+ TQ_OBJECT_CONSTRUCTORS(WasmFunctionData)
+};
+
// Information for a WasmExportedFunction which is referenced as the function
// data of the SharedFunctionInfo underlying the function. For details please
// see the {SharedFunctionInfo::HasWasmExportedFunctionData} predicate.
-class WasmExportedFunctionData : public Struct {
+class WasmExportedFunctionData : public WasmFunctionData {
public:
DECL_ACCESSORS(wrapper_code, Code)
+ // This is the instance that exported the function (which in case of
+ // imported and re-exported functions is different from the instance
+ // where the function is defined -- for the latter see WasmFunctionData::ref).
DECL_ACCESSORS(instance, WasmInstanceObject)
- DECL_INT_ACCESSORS(jump_table_offset)
DECL_INT_ACCESSORS(function_index)
DECL_ACCESSORS(signature, Foreign)
DECL_INT_ACCESSORS(wrapper_budget)
DECL_ACCESSORS(c_wrapper_code, Object)
- DECL_ACCESSORS(wasm_call_target, Object)
DECL_INT_ACCESSORS(packed_args_size)
inline wasm::FunctionSig* sig() const;
@@ -772,21 +778,22 @@ class WasmExportedFunctionData : public Struct {
// Layout description.
DEFINE_FIELD_OFFSET_CONSTANTS(
- HeapObject::kHeaderSize,
+ WasmFunctionData::kSize,
TORQUE_GENERATED_WASM_EXPORTED_FUNCTION_DATA_FIELDS)
- OBJECT_CONSTRUCTORS(WasmExportedFunctionData, Struct);
+ class BodyDescriptor;
+
+ OBJECT_CONSTRUCTORS(WasmExportedFunctionData, WasmFunctionData);
};
// Information for a WasmJSFunction which is referenced as the function data of
// the SharedFunctionInfo underlying the function. For details please see the
// {SharedFunctionInfo::HasWasmJSFunctionData} predicate.
-class WasmJSFunctionData : public Struct {
+class WasmJSFunctionData : public WasmFunctionData {
public:
DECL_INT_ACCESSORS(serialized_return_count)
DECL_INT_ACCESSORS(serialized_parameter_count)
DECL_ACCESSORS(serialized_signature, PodArray<wasm::ValueType>)
- DECL_ACCESSORS(callable, JSReceiver)
DECL_ACCESSORS(wrapper_code, Code)
DECL_ACCESSORS(wasm_to_js_wrapper_code, Code)
@@ -797,10 +804,12 @@ class WasmJSFunctionData : public Struct {
DECL_VERIFIER(WasmJSFunctionData)
// Layout description.
- DEFINE_FIELD_OFFSET_CONSTANTS(HeapObject::kHeaderSize,
+ DEFINE_FIELD_OFFSET_CONSTANTS(WasmFunctionData::kSize,
TORQUE_GENERATED_WASM_JS_FUNCTION_DATA_FIELDS)
- OBJECT_CONSTRUCTORS(WasmJSFunctionData, Struct);
+ class BodyDescriptor;
+
+ OBJECT_CONSTRUCTORS(WasmJSFunctionData, WasmFunctionData);
};
class WasmScript : public AllStatic {
@@ -915,6 +924,8 @@ class WasmStruct : public TorqueGeneratedWasmStruct<WasmStruct, HeapObject> {
static inline wasm::StructType* type(Map map);
inline wasm::StructType* type() const;
static inline wasm::StructType* GcSafeType(Map map);
+ static inline int Size(const wasm::StructType* type);
+ static inline int GcSafeSize(Map map);
inline ObjectSlot RawField(int raw_offset);
diff --git a/deps/v8/src/wasm/wasm-objects.tq b/deps/v8/src/wasm/wasm-objects.tq
index adcf63ba87..13911e590d 100644
--- a/deps/v8/src/wasm/wasm-objects.tq
+++ b/deps/v8/src/wasm/wasm-objects.tq
@@ -11,22 +11,31 @@ type ManagedWasmNativeModule extends Foreign
extern class WasmInstanceObject extends JSObject;
-extern class WasmExportedFunctionData extends Struct {
+@generateCppClass
+extern class WasmFunctionData extends Foreign {
+ // This is the "reference" value that must be passed along in the "instance"
+ // register when calling the given function. It is either the target instance,
+ // or a pair holding the target instance and the callable; currently the
+ // latter is the case when the function being called is defined in JavaScript
+ // or via the C-API.
+ // For imported functions, this value equals the respective entry in
+ // the module's imported_function_refs array.
+ ref: WasmInstanceObject|Tuple2;
+}
+
+extern class WasmExportedFunctionData extends WasmFunctionData {
wrapper_code: Code;
instance: WasmInstanceObject;
- jump_table_offset: Smi;
function_index: Smi;
signature: Foreign;
wrapper_budget: Smi;
// The remaining fields are for fast calling from C++. The contract is
// that they are lazily populated, and either all will be present or none.
c_wrapper_code: Object;
- wasm_call_target: Smi|Foreign;
packed_args_size: Smi;
}
-extern class WasmJSFunctionData extends Struct {
- callable: JSReceiver;
+extern class WasmJSFunctionData extends WasmFunctionData {
wrapper_code: Code;
wasm_to_js_wrapper_code: Code;
serialized_return_count: Smi;
@@ -34,6 +43,7 @@ extern class WasmJSFunctionData extends Struct {
serialized_signature: PodArrayOfWasmValueType;
}
+// TODO(jkummerow): Derive from WasmFunctionData.
@export
class WasmCapiFunctionData extends HeapObject {
call_target: RawPtr;
@@ -107,6 +117,8 @@ extern class AsmWasmData extends Struct {
extern class WasmTypeInfo extends Foreign {
supertypes: FixedArray;
subtypes: ArrayList;
+ // In bytes, used for struct allocation.
+ instance_size: Smi;
}
@generateCppClass
diff --git a/deps/v8/src/wasm/wasm-opcodes-inl.h b/deps/v8/src/wasm/wasm-opcodes-inl.h
index 6b124b2dbc..bc14a4adef 100644
--- a/deps/v8/src/wasm/wasm-opcodes-inl.h
+++ b/deps/v8/src/wasm/wasm-opcodes-inl.h
@@ -162,6 +162,7 @@ constexpr const char* WasmOpcodes::OpcodeName(WasmOpcode opcode) {
CASE_OP(CallRef, "call_ref")
CASE_OP(ReturnCallRef, "return_call_ref")
CASE_OP(BrOnNull, "br_on_null")
+ CASE_OP(BrOnNonNull, "br_on_non_null")
CASE_OP(Drop, "drop")
CASE_OP(Select, "select")
CASE_OP(SelectWithType, "select")
@@ -400,6 +401,7 @@ constexpr const char* WasmOpcodes::OpcodeName(WasmOpcode opcode) {
CASE_OP(RefTest, "ref.test")
CASE_OP(RefCast, "ref.cast")
CASE_OP(BrOnCast, "br_on_cast")
+ CASE_OP(BrOnCastFail, "br_on_cast_fail")
CASE_OP(RefIsFunc, "ref.is_func")
CASE_OP(RefIsData, "ref.is_data")
CASE_OP(RefIsI31, "ref.is_i31")
@@ -629,16 +631,12 @@ constexpr const FunctionSig* WasmOpcodes::Signature(WasmOpcode opcode) {
case kNumericPrefix:
return impl::kCachedSigs[impl::kNumericExprSigTable[opcode & 0xFF]];
default:
-#if V8_HAS_CXX14_CONSTEXPR
UNREACHABLE(); // invalid prefix.
-#else
- return nullptr;
-#endif
}
}
constexpr const FunctionSig* WasmOpcodes::AsmjsSignature(WasmOpcode opcode) {
- CONSTEXPR_DCHECK(opcode < impl::kSimpleAsmjsExprSigTable.size());
+ DCHECK_GT(impl::kSimpleAsmjsExprSigTable.size(), opcode);
return impl::kCachedSigs[impl::kSimpleAsmjsExprSigTable[opcode]];
}
diff --git a/deps/v8/src/wasm/wasm-opcodes.cc b/deps/v8/src/wasm/wasm-opcodes.cc
index 9461807751..e4c0d19a05 100644
--- a/deps/v8/src/wasm/wasm-opcodes.cc
+++ b/deps/v8/src/wasm/wasm-opcodes.cc
@@ -35,9 +35,6 @@ std::ostream& operator<<(std::ostream& os, const FunctionSig& sig) {
// https://chromium-review.googlesource.com/c/v8/v8/+/2413251).
bool IsJSCompatibleSignature(const FunctionSig* sig, const WasmModule* module,
const WasmFeatures& enabled_features) {
- if (!enabled_features.has_mv() && sig->return_count() > 1) {
- return false;
- }
for (auto type : sig->all()) {
// TODO(7748): Allow structs, arrays, and rtts when their JS-interaction is
// decided on.
diff --git a/deps/v8/src/wasm/wasm-opcodes.h b/deps/v8/src/wasm/wasm-opcodes.h
index 909cacadd2..5de6892124 100644
--- a/deps/v8/src/wasm/wasm-opcodes.h
+++ b/deps/v8/src/wasm/wasm-opcodes.h
@@ -52,6 +52,7 @@ bool V8_EXPORT_PRIVATE IsJSCompatibleSignature(const FunctionSig* sig,
V(Delegate, 0x18, _ /* eh_prototype */) \
V(CatchAll, 0x19, _ /* eh_prototype */) \
V(BrOnNull, 0xd4, _ /* gc prototype */) \
+ V(BrOnNonNull, 0xd6, _ /* gc prototype */) \
V(NopForTestingUnsupportedInLiftoff, 0x16, _)
// Constants, locals, globals, and calls.
@@ -252,37 +253,37 @@ bool V8_EXPORT_PRIVATE IsJSCompatibleSignature(const FunctionSig* sig,
// These opcodes are not spec'ed (or visible) externally; the idea is
// to use unused ranges for internal purposes.
#define FOREACH_ASMJS_COMPAT_OPCODE(V) \
- V(F64Acos, 0xc5, d_d) \
- V(F64Asin, 0xc6, d_d) \
- V(F64Atan, 0xc7, d_d) \
- V(F64Cos, 0xc8, d_d) \
- V(F64Sin, 0xc9, d_d) \
- V(F64Tan, 0xca, d_d) \
- V(F64Exp, 0xcb, d_d) \
- V(F64Log, 0xcc, d_d) \
- V(F64Atan2, 0xcd, d_dd) \
- V(F64Pow, 0xce, d_dd) \
- V(F64Mod, 0xcf, d_dd) \
+ V(F64Acos, 0xdc, d_d) \
+ V(F64Asin, 0xdd, d_d) \
+ V(F64Atan, 0xde, d_d) \
+ V(F64Cos, 0xdf, d_d) \
+ V(F64Sin, 0xe0, d_d) \
+ V(F64Tan, 0xe1, d_d) \
+ V(F64Exp, 0xe2, d_d) \
+ V(F64Log, 0xe3, d_d) \
+ V(F64Atan2, 0xe4, d_dd) \
+ V(F64Pow, 0xe5, d_dd) \
+ V(F64Mod, 0xe6, d_dd) \
V(I32AsmjsDivS, 0xe7, i_ii) \
V(I32AsmjsDivU, 0xe8, i_ii) \
V(I32AsmjsRemS, 0xe9, i_ii) \
- V(I32AsmjsRemU, 0xd6, i_ii) \
- V(I32AsmjsLoadMem8S, 0xd7, i_i) \
- V(I32AsmjsLoadMem8U, 0xd8, i_i) \
- V(I32AsmjsLoadMem16S, 0xd9, i_i) \
- V(I32AsmjsLoadMem16U, 0xda, i_i) \
- V(I32AsmjsLoadMem, 0xdb, i_i) \
- V(F32AsmjsLoadMem, 0xdc, f_i) \
- V(F64AsmjsLoadMem, 0xdd, d_i) \
- V(I32AsmjsStoreMem8, 0xde, i_ii) \
- V(I32AsmjsStoreMem16, 0xdf, i_ii) \
- V(I32AsmjsStoreMem, 0xe0, i_ii) \
- V(F32AsmjsStoreMem, 0xe1, f_if) \
- V(F64AsmjsStoreMem, 0xe2, d_id) \
- V(I32AsmjsSConvertF32, 0xe3, i_f) \
- V(I32AsmjsUConvertF32, 0xe4, i_f) \
- V(I32AsmjsSConvertF64, 0xe5, i_d) \
- V(I32AsmjsUConvertF64, 0xe6, i_d)
+ V(I32AsmjsRemU, 0xea, i_ii) \
+ V(I32AsmjsLoadMem8S, 0xeb, i_i) \
+ V(I32AsmjsLoadMem8U, 0xec, i_i) \
+ V(I32AsmjsLoadMem16S, 0xed, i_i) \
+ V(I32AsmjsLoadMem16U, 0xee, i_i) \
+ V(I32AsmjsLoadMem, 0xef, i_i) \
+ V(F32AsmjsLoadMem, 0xf0, f_i) \
+ V(F64AsmjsLoadMem, 0xf1, d_i) \
+ V(I32AsmjsStoreMem8, 0xf2, i_ii) \
+ V(I32AsmjsStoreMem16, 0xf3, i_ii) \
+ V(I32AsmjsStoreMem, 0xf4, i_ii) \
+ V(F32AsmjsStoreMem, 0xf5, f_if) \
+ V(F64AsmjsStoreMem, 0xf6, d_id) \
+ V(I32AsmjsSConvertF32, 0xf7, i_f) \
+ V(I32AsmjsUConvertF32, 0xf8, i_f) \
+ V(I32AsmjsSConvertF64, 0xf9, i_d) \
+ V(I32AsmjsUConvertF64, 0xfa, i_d)
#define FOREACH_SIMD_MEM_OPCODE(V) \
V(S128LoadMem, 0xfd00, s_i) \
@@ -670,6 +671,7 @@ bool V8_EXPORT_PRIVATE IsJSCompatibleSignature(const FunctionSig* sig,
V(RefTest, 0xfb40, _) \
V(RefCast, 0xfb41, _) \
V(BrOnCast, 0xfb42, _) \
+ V(BrOnCastFail, 0xfb43, _) \
V(RefIsFunc, 0xfb50, _) \
V(RefIsData, 0xfb51, _) \
V(RefIsI31, 0xfb52, _) \
@@ -759,10 +761,10 @@ bool V8_EXPORT_PRIVATE IsJSCompatibleSignature(const FunctionSig* sig,
V(s_is, kWasmS128, kWasmI32, kWasmS128)
#define FOREACH_PREFIX(V) \
+ V(GC, 0xfb) \
V(Numeric, 0xfc) \
V(Simd, 0xfd) \
- V(Atomic, 0xfe) \
- V(GC, 0xfb)
+ V(Atomic, 0xfe)
enum WasmOpcode {
// Declare expression opcodes.
@@ -801,129 +803,6 @@ class V8_EXPORT_PRIVATE WasmOpcodes {
static inline const char* TrapReasonMessage(TrapReason);
};
-// Representation of an initializer expression.
-class WasmInitExpr {
- public:
- enum Operator {
- kNone,
- kGlobalGet,
- kI32Const,
- kI64Const,
- kF32Const,
- kF64Const,
- kS128Const,
- kRefNullConst,
- kRefFuncConst,
- kRttCanon,
- kRttSub
- };
-
- union Immediate {
- int32_t i32_const;
- int64_t i64_const;
- float f32_const;
- double f64_const;
- std::array<uint8_t, kSimd128Size> s128_const;
- uint32_t index;
- HeapType::Representation heap_type;
- };
-
- WasmInitExpr() : kind_(kNone) { immediate_.i32_const = 0; }
- explicit WasmInitExpr(int32_t v) : kind_(kI32Const) {
- immediate_.i32_const = v;
- }
- explicit WasmInitExpr(int64_t v) : kind_(kI64Const) {
- immediate_.i64_const = v;
- }
- explicit WasmInitExpr(float v) : kind_(kF32Const) {
- immediate_.f32_const = v;
- }
- explicit WasmInitExpr(double v) : kind_(kF64Const) {
- immediate_.f64_const = v;
- }
- explicit WasmInitExpr(uint8_t v[kSimd128Size]) : kind_(kS128Const) {
- base::Memcpy(immediate_.s128_const.data(), v, kSimd128Size);
- }
-
- MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(WasmInitExpr);
-
- static WasmInitExpr GlobalGet(uint32_t index) {
- WasmInitExpr expr;
- expr.kind_ = kGlobalGet;
- expr.immediate_.index = index;
- return expr;
- }
-
- static WasmInitExpr RefFuncConst(uint32_t index) {
- WasmInitExpr expr;
- expr.kind_ = kRefFuncConst;
- expr.immediate_.index = index;
- return expr;
- }
-
- static WasmInitExpr RefNullConst(HeapType::Representation heap_type) {
- WasmInitExpr expr;
- expr.kind_ = kRefNullConst;
- expr.immediate_.heap_type = heap_type;
- return expr;
- }
-
- static WasmInitExpr RttCanon(uint32_t index) {
- WasmInitExpr expr;
- expr.kind_ = kRttCanon;
- expr.immediate_.index = index;
- return expr;
- }
-
- static WasmInitExpr RttSub(uint32_t index, WasmInitExpr supertype) {
- WasmInitExpr expr;
- expr.kind_ = kRttSub;
- expr.immediate_.index = index;
- expr.operand_ = std::make_unique<WasmInitExpr>(std::move(supertype));
- return expr;
- }
-
- Immediate immediate() const { return immediate_; }
- Operator kind() const { return kind_; }
- WasmInitExpr* operand() const { return operand_.get(); }
-
- bool operator==(const WasmInitExpr& other) const {
- if (kind() != other.kind()) return false;
- switch (kind()) {
- case kNone:
- return true;
- case kGlobalGet:
- case kRefFuncConst:
- case kRttCanon:
- return immediate().index == other.immediate().index;
- case kI32Const:
- return immediate().i32_const == other.immediate().i32_const;
- case kI64Const:
- return immediate().i64_const == other.immediate().i64_const;
- case kF32Const:
- return immediate().f32_const == other.immediate().f32_const;
- case kF64Const:
- return immediate().f64_const == other.immediate().f64_const;
- case kS128Const:
- return immediate().s128_const == other.immediate().s128_const;
- case kRefNullConst:
- return immediate().heap_type == other.immediate().heap_type;
- case kRttSub:
- return immediate().index == other.immediate().index &&
- *operand() == *other.operand();
- }
- }
-
- V8_INLINE bool operator!=(const WasmInitExpr& other) {
- return !(*this == other);
- }
-
- private:
- Immediate immediate_;
- Operator kind_;
- std::unique_ptr<WasmInitExpr> operand_ = nullptr;
-};
-
} // namespace wasm
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/wasm/wasm-serialization.cc b/deps/v8/src/wasm/wasm-serialization.cc
index b2e6f0c4d8..a47e420cb1 100644
--- a/deps/v8/src/wasm/wasm-serialization.cc
+++ b/deps/v8/src/wasm/wasm-serialization.cc
@@ -567,6 +567,8 @@ class CopyAndRelocTask : public JobTask {
void Run(JobDelegate* delegate) override {
CODE_SPACE_WRITE_SCOPE
+ NativeModuleModificationScope native_module_modification_scope(
+ deserializer_->native_module_);
do {
auto batch = from_queue_->Pop();
if (batch.empty()) break;
@@ -712,11 +714,9 @@ DeserializationUnit NativeModuleDeserializer::ReadCode(int fn_index,
constexpr size_t kMaxReservation =
RoundUp<kCodeAlignment>(WasmCodeAllocator::kMaxCodeSpaceSize * 9 / 10);
size_t code_space_size = std::min(kMaxReservation, remaining_code_size_);
- current_code_space_ =
+ std::tie(current_code_space_, current_jump_tables_) =
native_module_->AllocateForDeserializedCode(code_space_size);
DCHECK_EQ(current_code_space_.size(), code_space_size);
- current_jump_tables_ = native_module_->FindJumpTablesForRegion(
- base::AddressRegionOf(current_code_space_));
DCHECK(current_jump_tables_.is_valid());
}
diff --git a/deps/v8/src/wasm/wasm-subtyping.cc b/deps/v8/src/wasm/wasm-subtyping.cc
index b0e8105a60..d2b7e9fe31 100644
--- a/deps/v8/src/wasm/wasm-subtyping.cc
+++ b/deps/v8/src/wasm/wasm-subtyping.cc
@@ -91,6 +91,26 @@ class TypeJudgementCache {
type_equivalence_cache_.erase(
std::make_tuple(type1, type2, module1, module2));
}
+ void delete_module(const WasmModule* module) {
+ for (auto iterator = type_equivalence_cache_.begin();
+ iterator != type_equivalence_cache_.end();) {
+ if (std::get<2>(*iterator) == module ||
+ std::get<3>(*iterator) == module) {
+ iterator = type_equivalence_cache_.erase(iterator);
+ } else {
+ iterator++;
+ }
+ }
+ for (auto iterator = subtyping_cache_.begin();
+ iterator != subtyping_cache_.end();) {
+ if (std::get<2>(*iterator) == module ||
+ std::get<3>(*iterator) == module) {
+ iterator = subtyping_cache_.erase(iterator);
+ } else {
+ iterator++;
+ }
+ }
+ }
private:
Zone zone_;
@@ -258,14 +278,46 @@ bool ArrayIsSubtypeOf(uint32_t subtype_index, uint32_t supertype_index,
}
}
-// TODO(7748): Expand this with function subtyping when it is introduced.
bool FunctionIsSubtypeOf(uint32_t subtype_index, uint32_t supertype_index,
const WasmModule* sub_module,
const WasmModule* super_module) {
- return FunctionEquivalentIndices(subtype_index, supertype_index, sub_module,
- super_module);
-}
+ if (!FLAG_experimental_wasm_gc) {
+ return FunctionEquivalentIndices(subtype_index, supertype_index, sub_module,
+ super_module);
+ }
+ const FunctionSig* sub_func = sub_module->types[subtype_index].function_sig;
+ const FunctionSig* super_func =
+ super_module->types[supertype_index].function_sig;
+
+ if (sub_func->parameter_count() != super_func->parameter_count() ||
+ sub_func->return_count() != super_func->return_count()) {
+ return false;
+ }
+
+ TypeJudgementCache::instance()->cache_subtype(subtype_index, supertype_index,
+ sub_module, super_module);
+
+ for (uint32_t i = 0; i < sub_func->parameter_count(); i++) {
+ // Contravariance for params.
+ if (!IsSubtypeOf(super_func->parameters()[i], sub_func->parameters()[i],
+ super_module, sub_module)) {
+ TypeJudgementCache::instance()->uncache_subtype(
+ subtype_index, supertype_index, sub_module, super_module);
+ return false;
+ }
+ }
+ for (uint32_t i = 0; i < sub_func->return_count(); i++) {
+ // Covariance for returns.
+ if (!IsSubtypeOf(sub_func->returns()[i], super_func->returns()[i],
+ sub_module, super_module)) {
+ TypeJudgementCache::instance()->uncache_subtype(
+ subtype_index, supertype_index, sub_module, super_module);
+ return false;
+ }
+ }
+ return true;
+}
} // namespace
V8_NOINLINE V8_EXPORT_PRIVATE bool IsSubtypeOfImpl(
@@ -403,11 +455,12 @@ V8_NOINLINE bool EquivalentTypes(ValueType type1, ValueType type2,
module2);
}
-ValueType CommonSubtype(ValueType a, ValueType b, const WasmModule* module) {
- if (a == b) return a;
- if (IsSubtypeOf(a, b, module)) return a;
- if (IsSubtypeOf(b, a, module)) return b;
- return kWasmBottom;
+void DeleteCachedTypeJudgementsForModule(const WasmModule* module) {
+ // Accessing the caches for subtyping and equivalence from multiple background
+ // threads is protected by a lock.
+ base::RecursiveMutexGuard type_cache_access(
+ TypeJudgementCache::instance()->type_cache_mutex());
+ TypeJudgementCache::instance()->delete_module(module);
}
} // namespace wasm
diff --git a/deps/v8/src/wasm/wasm-subtyping.h b/deps/v8/src/wasm/wasm-subtyping.h
index 0c35f7c470..59e7935d1f 100644
--- a/deps/v8/src/wasm/wasm-subtyping.h
+++ b/deps/v8/src/wasm/wasm-subtyping.h
@@ -60,8 +60,10 @@ V8_NOINLINE bool EquivalentTypes(ValueType type1, ValueType type2,
// - Struct subtyping: Subtype must have at least as many fields as supertype,
// covariance for immutable fields, equivalence for mutable fields.
// - Array subtyping (mutable only) is the equivalence relation.
-// - Function subtyping is the equivalence relation (note: this rule might
-// change in the future to include type variance).
+// - Function subtyping depends on the enabled wasm features: if
+// --experimental-wasm-gc is enabled, then subtyping is computed
+// contravariantly for parameter types and covariantly for return types.
+// Otherwise, the subtyping relation is the equivalence relation.
V8_INLINE bool IsSubtypeOf(ValueType subtype, ValueType supertype,
const WasmModule* sub_module,
const WasmModule* super_module) {
@@ -91,11 +93,9 @@ V8_INLINE bool IsHeapSubtypeOf(uint32_t subtype_index, uint32_t supertype_index,
ValueType::Ref(supertype_index, kNonNullable), module);
}
-// Returns the weakest type that is a subtype of both a and b
-// (which is currently always one of a, b, or kWasmBottom).
-// TODO(manoskouk): Update this once we have settled on a type system for
-// reference types.
-ValueType CommonSubtype(ValueType a, ValueType b, const WasmModule* module);
+// Call this function in {module}'s destructor to avoid spurious cache hits in
+// case another WasmModule gets allocated in the same address later.
+void DeleteCachedTypeJudgementsForModule(const WasmModule* module);
} // namespace wasm
} // namespace internal
diff --git a/deps/v8/src/wasm/wasm-value.h b/deps/v8/src/wasm/wasm-value.h
index 0a1d2b69e2..faaad18076 100644
--- a/deps/v8/src/wasm/wasm-value.h
+++ b/deps/v8/src/wasm/wasm-value.h
@@ -12,7 +12,7 @@
#include "src/base/memory.h"
#include "src/handles/handles.h"
#include "src/utils/boxed-float.h"
-#include "src/wasm/wasm-opcodes.h"
+#include "src/wasm/value-type.h"
#include "src/zone/zone-containers.h"
namespace v8 {
diff --git a/deps/v8/src/web-snapshot/web-snapshot.cc b/deps/v8/src/web-snapshot/web-snapshot.cc
index 16bbc9af3e..f36698a351 100644
--- a/deps/v8/src/web-snapshot/web-snapshot.cc
+++ b/deps/v8/src/web-snapshot/web-snapshot.cc
@@ -11,6 +11,7 @@
#include "src/base/platform/wrappers.h"
#include "src/handles/handles.h"
#include "src/objects/contexts.h"
+#include "src/objects/js-regexp-inl.h"
#include "src/objects/script.h"
namespace v8 {
@@ -34,8 +35,8 @@ void WebSnapshotSerializerDeserializer::Throw(const char* message) {
error_message_ = message;
if (!isolate_->has_pending_exception()) {
v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate_);
- v8_isolate->ThrowException(v8::Exception::Error(
- v8::String::NewFromUtf8(v8_isolate, message).ToLocalChecked()));
+ v8_isolate->ThrowError(
+ v8::String::NewFromUtf8(v8_isolate, message).ToLocalChecked());
}
}
@@ -238,7 +239,10 @@ void WebSnapshotSerializer::SerializeMap(Handle<Map> map, uint32_t& id) {
// Format (serialized function):
// - 0 if there's no context, 1 + context id otherwise
-// - String id (source string)
+// - String id (source snippet)
+// - Start position in the source snippet
+// - Length in the source snippet
+// TODO(v8:11525): Investigate whether the length is really needed.
void WebSnapshotSerializer::SerializeFunction(Handle<JSFunction> function,
uint32_t& id) {
if (InsertIntoIndexMap(function_ids_, function, id)) {
@@ -251,7 +255,7 @@ void WebSnapshotSerializer::SerializeFunction(Handle<JSFunction> function,
}
Handle<Context> context(function->context(), isolate_);
- if (context->IsNativeContext()) {
+ if (context->IsNativeContext() || context->IsScriptContext()) {
function_serializer_.WriteUint32(0);
} else {
DCHECK(context->IsFunctionContext());
@@ -260,20 +264,19 @@ void WebSnapshotSerializer::SerializeFunction(Handle<JSFunction> function,
function_serializer_.WriteUint32(context_id + 1);
}
- // TODO(v8:11525): For inner functions which occur inside a serialized
- // function, create a "substring" type, so that we don't need to serialize the
- // same content twice.
+ // TODO(v8:11525): Don't write the full source but instead, a set of minimal
+ // snippets which cover the serialized functions.
Handle<String> full_source(
String::cast(Script::cast(function->shared().script()).source()),
isolate_);
- int start = function->shared().StartPosition();
- int end = function->shared().EndPosition();
- Handle<String> source =
- isolate_->factory()->NewSubString(full_source, start, end);
uint32_t source_id = 0;
- SerializeString(source, source_id);
+ SerializeString(full_source, source_id);
function_serializer_.WriteUint32(source_id);
+ int start = function->shared().StartPosition();
+ function_serializer_.WriteUint32(start);
+ int end = function->shared().EndPosition();
+ function_serializer_.WriteUint32(end - start);
// TODO(v8:11525): Serialize .prototype.
// TODO(v8:11525): Support properties in functions.
}
@@ -297,7 +300,8 @@ void WebSnapshotSerializer::SerializeContext(Handle<Context> context,
}
uint32_t parent_context_id = 0;
- if (!context->previous().IsNativeContext()) {
+ if (!context->previous().IsNativeContext() &&
+ !context->previous().IsScriptContext()) {
SerializeContext(handle(context->previous(), isolate_), parent_context_id);
++parent_context_id;
}
@@ -387,18 +391,35 @@ void WebSnapshotSerializer::WriteValue(Handle<Object> object,
ValueSerializer& serializer) {
uint32_t id = 0;
if (object->IsSmi()) {
- // TODO(v8:11525): Implement.
- UNREACHABLE();
+ serializer.WriteUint32(ValueType::INTEGER);
+ serializer.WriteZigZag<int32_t>(Smi::cast(*object).value());
+ return;
}
DCHECK(object->IsHeapObject());
switch (HeapObject::cast(*object).map().instance_type()) {
case ODDBALL_TYPE:
- // TODO(v8:11525): Implement.
- UNREACHABLE();
+ switch (Oddball::cast(*object).kind()) {
+ case Oddball::kFalse:
+ serializer.WriteUint32(ValueType::FALSE_CONSTANT);
+ return;
+ case Oddball::kTrue:
+ serializer.WriteUint32(ValueType::TRUE_CONSTANT);
+ return;
+ case Oddball::kNull:
+ serializer.WriteUint32(ValueType::NULL_CONSTANT);
+ return;
+ case Oddball::kUndefined:
+ serializer.WriteUint32(ValueType::UNDEFINED_CONSTANT);
+ return;
+ default:
+ UNREACHABLE();
+ }
case HEAP_NUMBER_TYPE:
- // TODO(v8:11525): Implement.
- UNREACHABLE();
+ // TODO(v8:11525): Handle possible endianness mismatch.
+ serializer.WriteUint32(ValueType::DOUBLE);
+ serializer.WriteDouble(HeapNumber::cast(*object).value());
+ break;
case JS_FUNCTION_TYPE:
SerializeFunction(Handle<JSFunction>::cast(object), id);
serializer.WriteUint32(ValueType::FUNCTION_ID);
@@ -409,6 +430,23 @@ void WebSnapshotSerializer::WriteValue(Handle<Object> object,
serializer.WriteUint32(ValueType::OBJECT_ID);
serializer.WriteUint32(id);
break;
+ case JS_REG_EXP_TYPE: {
+ Handle<JSRegExp> regexp = Handle<JSRegExp>::cast(object);
+ if (regexp->map() != isolate_->regexp_function()->initial_map()) {
+ Throw("Web snapshot: Unsupported RegExp map");
+ return;
+ }
+ uint32_t pattern_id, flags_id;
+ Handle<String> pattern = handle(regexp->Pattern(), isolate_);
+ Handle<String> flags_string =
+ JSRegExp::StringFromFlags(isolate_, regexp->GetFlags());
+ SerializeString(pattern, pattern_id);
+ SerializeString(flags_string, flags_id);
+ serializer.WriteUint32(ValueType::REGEXP);
+ serializer.WriteUint32(pattern_id);
+ serializer.WriteUint32(flags_id);
+ break;
+ }
default:
if (object->IsString()) {
SerializeString(Handle<String>::cast(object), id);
@@ -669,8 +707,21 @@ void WebSnapshotDeserializer::DeserializeFunctions() {
Throw("Web snapshot: Malformed function table");
return;
}
- STATIC_ASSERT(kMaxItemCount <= FixedArray::kMaxLength);
+ STATIC_ASSERT(kMaxItemCount + 1 <= FixedArray::kMaxLength);
functions_ = isolate_->factory()->NewFixedArray(function_count_);
+
+ Handle<Script> script =
+ isolate_->factory()->NewScript(isolate_->factory()->empty_string());
+ script->set_type(Script::TYPE_WEB_SNAPSHOT);
+ // Overallocate the array for SharedFunctionInfos; functions which we
+ // deserialize soon will create more SharedFunctionInfos when called.
+ Handle<WeakFixedArray> infos(isolate_->factory()->NewWeakFixedArray(
+ WeakArrayList::CapacityForLength(function_count_ + 1),
+ AllocationType::kOld));
+ script->set_shared_function_infos(*infos);
+ Handle<ObjectHashTable> shared_function_info_table =
+ ObjectHashTable::New(isolate_, function_count_);
+
for (uint32_t i = 0; i < function_count_; ++i) {
uint32_t context_id;
// Note: > (not >= on purpose, we will subtract 1).
@@ -681,10 +732,24 @@ void WebSnapshotDeserializer::DeserializeFunctions() {
}
Handle<String> source = ReadString(false);
+ if (i == 0) {
+ script->set_source(*source);
+ } else {
+ // TODO(v8:11525): Support multiple source snippets.
+ DCHECK_EQ(script->source(), *source);
+ }
+
+ uint32_t start_position;
+ uint32_t length;
+ if (!deserializer_->ReadUint32(&start_position) ||
+ !deserializer_->ReadUint32(&length)) {
+ Throw("Web snapshot: Malformed function");
+ return;
+ }
// TODO(v8:11525): Support other function kinds.
// TODO(v8:11525): Support (exported) top level functions.
- Handle<Script> script = isolate_->factory()->NewScript(source);
+
// TODO(v8:11525): Deduplicate the SFIs for inner functions the user creates
// post-deserialization (by calling the outer function, if it's also in the
// snapshot) against the ones we create here.
@@ -692,18 +757,24 @@ void WebSnapshotDeserializer::DeserializeFunctions() {
isolate_->factory()->NewSharedFunctionInfo(
isolate_->factory()->empty_string(), MaybeHandle<Code>(),
Builtins::kCompileLazy, FunctionKind::kNormalFunction);
- shared->set_function_literal_id(1);
+ shared->set_script(*script);
+ // Index 0 is reserved for top-level shared function info (which web
+ // snapshot scripts don't have).
+ const int shared_function_info_index = i + 1;
+ shared->set_function_literal_id(shared_function_info_index);
// TODO(v8:11525): Decide how to handle language modes.
shared->set_language_mode(LanguageMode::kStrict);
shared->set_uncompiled_data(
*isolate_->factory()->NewUncompiledDataWithoutPreparseData(
- ReadOnlyRoots(isolate_).empty_string_handle(), 0,
- source->length()));
- shared->set_script(*script);
- Handle<WeakFixedArray> infos(
- isolate_->factory()->NewWeakFixedArray(3, AllocationType::kOld));
- infos->Set(1, HeapObjectReference::Weak(*shared));
- script->set_shared_function_infos(*infos);
+ ReadOnlyRoots(isolate_).empty_string_handle(), start_position,
+ start_position + length));
+ shared->set_allows_lazy_compilation(true);
+ infos->Set(shared_function_info_index, HeapObjectReference::Weak(*shared));
+
+ shared_function_info_table = ObjectHashTable::Put(
+ shared_function_info_table,
+ handle(Smi::FromInt(start_position), isolate_),
+ handle(Smi::FromInt(shared_function_info_index), isolate_));
Handle<JSFunction> function =
Factory::JSFunctionBuilder(isolate_, shared, isolate_->native_context())
@@ -718,6 +789,7 @@ void WebSnapshotDeserializer::DeserializeFunctions() {
}
functions_->set(i, *function);
}
+ script->set_shared_function_info_table(*shared_function_info_table);
}
void WebSnapshotDeserializer::DeserializeObjects() {
@@ -806,6 +878,46 @@ void WebSnapshotDeserializer::ReadValue(Handle<Object>& value,
return;
}
switch (value_type) {
+ case ValueType::FALSE_CONSTANT: {
+ value = handle(ReadOnlyRoots(isolate_).false_value(), isolate_);
+ representation = Representation::Tagged();
+ break;
+ }
+ case ValueType::TRUE_CONSTANT: {
+ value = handle(ReadOnlyRoots(isolate_).true_value(), isolate_);
+ representation = Representation::Tagged();
+ break;
+ }
+ case ValueType::NULL_CONSTANT: {
+ value = handle(ReadOnlyRoots(isolate_).null_value(), isolate_);
+ representation = Representation::Tagged();
+ break;
+ }
+ case ValueType::UNDEFINED_CONSTANT: {
+ value = handle(ReadOnlyRoots(isolate_).undefined_value(), isolate_);
+ representation = Representation::Tagged();
+ break;
+ }
+ case ValueType::INTEGER: {
+ Maybe<int32_t> number = deserializer_->ReadZigZag<int32_t>();
+ if (number.IsNothing()) {
+ Throw("Web snapshot: Malformed integer");
+ return;
+ }
+ value = isolate_->factory()->NewNumberFromInt(number.FromJust());
+ representation = Representation::Tagged();
+ break;
+ }
+ case ValueType::DOUBLE: {
+ double number;
+ if (!deserializer_->ReadDouble(&number)) {
+ Throw("Web snapshot: Malformed double");
+ return;
+ }
+ value = isolate_->factory()->NewNumber(number);
+ representation = Representation::Tagged();
+ break;
+ }
case ValueType::STRING_ID: {
value = ReadString(false);
representation = Representation::Tagged();
@@ -834,6 +946,25 @@ void WebSnapshotDeserializer::ReadValue(Handle<Object>& value,
value = handle(functions_->get(function_id), isolate_);
representation = Representation::Tagged();
break;
+ case ValueType::REGEXP: {
+ Handle<String> pattern = ReadString(false);
+ Handle<String> flags_string = ReadString(false);
+ bool success = false;
+ JSRegExp::Flags flags =
+ JSRegExp::FlagsFromString(isolate_, flags_string, &success);
+ if (!success) {
+ Throw("Web snapshot: Malformed flags in regular expression");
+ return;
+ }
+ MaybeHandle<JSRegExp> maybe_regexp =
+ JSRegExp::New(isolate_, pattern, flags);
+ if (!maybe_regexp.ToHandle(&value)) {
+ Throw("Web snapshot: Malformed RegExp");
+ return;
+ }
+ representation = Representation::Tagged();
+ break;
+ }
default:
// TODO(v8:11525): Handle other value types.
Throw("Web snapshot: Unsupported value type");
diff --git a/deps/v8/src/web-snapshot/web-snapshot.h b/deps/v8/src/web-snapshot/web-snapshot.h
index 31461c8dbc..8127fa7aa8 100644
--- a/deps/v8/src/web-snapshot/web-snapshot.h
+++ b/deps/v8/src/web-snapshot/web-snapshot.h
@@ -38,11 +38,22 @@ class WebSnapshotSerializerDeserializer {
inline bool has_error() const { return error_message_ != nullptr; }
const char* error_message() const { return error_message_; }
- enum ValueType : uint8_t { STRING_ID, OBJECT_ID, FUNCTION_ID };
+ enum ValueType : uint8_t {
+ FALSE_CONSTANT,
+ TRUE_CONSTANT,
+ NULL_CONSTANT,
+ UNDEFINED_CONSTANT,
+ INTEGER,
+ DOUBLE,
+ STRING_ID,
+ OBJECT_ID,
+ FUNCTION_ID,
+ REGEXP
+ };
// The maximum count of items for each value type (strings, objects etc.)
static constexpr uint32_t kMaxItemCount =
- static_cast<uint32_t>(FixedArray::kMaxLength);
+ static_cast<uint32_t>(FixedArray::kMaxLength - 1);
// This ensures indices and lengths can be converted between uint32_t and int
// without problems:
STATIC_ASSERT(kMaxItemCount < std::numeric_limits<int32_t>::max());
diff --git a/deps/v8/src/zone/zone-segment.cc b/deps/v8/src/zone/zone-segment.cc
index 49cedb851b..6b682624dc 100644
--- a/deps/v8/src/zone/zone-segment.cc
+++ b/deps/v8/src/zone/zone-segment.cc
@@ -4,7 +4,7 @@
#include "src/zone/zone-segment.h"
-#include "src/sanitizer/msan.h"
+#include "src/base/sanitizer/msan.h"
namespace v8 {
namespace internal {
diff --git a/deps/v8/src/zone/zone.cc b/deps/v8/src/zone/zone.cc
index e40b92be68..40cf1ab2df 100644
--- a/deps/v8/src/zone/zone.cc
+++ b/deps/v8/src/zone/zone.cc
@@ -7,8 +7,8 @@
#include <cstring>
#include <memory>
+#include "src/base/sanitizer/asan.h"
#include "src/init/v8.h"
-#include "src/sanitizer/asan.h"
#include "src/utils/utils.h"
#include "src/zone/type-stats.h"
diff --git a/deps/v8/test/benchmarks/cpp/BUILD.gn b/deps/v8/test/benchmarks/cpp/BUILD.gn
index 6c57952841..07eeb94f15 100644
--- a/deps/v8/test/benchmarks/cpp/BUILD.gn
+++ b/deps/v8/test/benchmarks/cpp/BUILD.gn
@@ -25,6 +25,9 @@ if (v8_enable_google_benchmark) {
sources = [ "empty.cc" ]
- deps = [ "//third_party/google_benchmark:benchmark_main" ]
+ deps = [
+ "//:v8_libbase",
+ "//third_party/google_benchmark:benchmark_main",
+ ]
}
}
diff --git a/deps/v8/test/benchmarks/cpp/DEPS b/deps/v8/test/benchmarks/cpp/DEPS
index fdb90962fa..05d243bc85 100644
--- a/deps/v8/test/benchmarks/cpp/DEPS
+++ b/deps/v8/test/benchmarks/cpp/DEPS
@@ -1,3 +1,4 @@
include_rules = [
+ "+src/base",
"+third_party/google_benchmark/src/include/benchmark/benchmark.h",
]
diff --git a/deps/v8/test/benchmarks/cpp/cppgc/DEPS b/deps/v8/test/benchmarks/cpp/cppgc/DEPS
index d31d529ebe..e3cbedf197 100644
--- a/deps/v8/test/benchmarks/cpp/cppgc/DEPS
+++ b/deps/v8/test/benchmarks/cpp/cppgc/DEPS
@@ -1,5 +1,6 @@
include_rules = [
"+include/cppgc",
+ "+src/base",
"+src/heap/cppgc",
"+test/unittests/heap/cppgc",
"+third_party/google_benchmark/src/include/benchmark/benchmark.h",
diff --git a/deps/v8/test/benchmarks/cpp/cppgc/allocation_perf.cc b/deps/v8/test/benchmarks/cpp/cppgc/allocation_perf.cc
index 513aaa2e8e..804e11770a 100644
--- a/deps/v8/test/benchmarks/cpp/cppgc/allocation_perf.cc
+++ b/deps/v8/test/benchmarks/cpp/cppgc/allocation_perf.cc
@@ -5,6 +5,7 @@
#include "include/cppgc/allocation.h"
#include "include/cppgc/garbage-collected.h"
#include "include/cppgc/heap-consistency.h"
+#include "src/base/macros.h"
#include "src/heap/cppgc/globals.h"
#include "src/heap/cppgc/heap.h"
#include "test/benchmarks/cpp/cppgc/utils.h"
@@ -24,6 +25,7 @@ class TinyObject final : public cppgc::GarbageCollected<TinyObject> {
BENCHMARK_F(Allocate, Tiny)(benchmark::State& st) {
subtle::NoGarbageCollectionScope no_gc(*Heap::From(&heap()));
for (auto _ : st) {
+ USE(_);
benchmark::DoNotOptimize(
cppgc::MakeGarbageCollected<TinyObject>(heap().GetAllocationHandle()));
}
@@ -39,6 +41,7 @@ class LargeObject final : public GarbageCollected<LargeObject> {
BENCHMARK_F(Allocate, Large)(benchmark::State& st) {
subtle::NoGarbageCollectionScope no_gc(*Heap::From(&heap()));
for (auto _ : st) {
+ USE(_);
benchmark::DoNotOptimize(
cppgc::MakeGarbageCollected<LargeObject>(heap().GetAllocationHandle()));
}
diff --git a/deps/v8/test/benchmarks/cpp/cppgc/trace_perf.cc b/deps/v8/test/benchmarks/cpp/cppgc/trace_perf.cc
index 9ae26b8d0e..6038c0a371 100644
--- a/deps/v8/test/benchmarks/cpp/cppgc/trace_perf.cc
+++ b/deps/v8/test/benchmarks/cpp/cppgc/trace_perf.cc
@@ -5,6 +5,7 @@
#include "include/cppgc/allocation.h"
#include "include/cppgc/garbage-collected.h"
#include "include/cppgc/persistent.h"
+#include "src/base/macros.h"
#include "src/heap/cppgc/globals.h"
#include "src/heap/cppgc/heap.h"
#include "test/benchmarks/cpp/cppgc/utils.h"
@@ -40,7 +41,7 @@ class GCedWithMixin final : public GCed, public OtherPayload, public Mixin {
}
};
-class Holder : public cppgc::GarbageCollected<GCed> {
+class Holder : public cppgc::GarbageCollected<Holder> {
public:
explicit Holder(GCedWithMixin* object)
: base_ref(object), mixin_ref(object) {}
@@ -65,6 +66,7 @@ BENCHMARK_F(Trace, Static)(benchmark::State& st) {
heap().GetAllocationHandle())));
VisitorBase visitor;
for (auto _ : st) {
+ USE(_);
DispatchTrace(&visitor, holder->base_ref);
}
}
@@ -75,6 +77,7 @@ BENCHMARK_F(Trace, Dynamic)(benchmark::State& st) {
heap().GetAllocationHandle())));
VisitorBase visitor;
for (auto _ : st) {
+ USE(_);
DispatchTrace(&visitor, holder->mixin_ref);
}
}
diff --git a/deps/v8/test/benchmarks/cpp/empty.cc b/deps/v8/test/benchmarks/cpp/empty.cc
index 26c73604a4..f15f04fcd7 100644
--- a/deps/v8/test/benchmarks/cpp/empty.cc
+++ b/deps/v8/test/benchmarks/cpp/empty.cc
@@ -2,11 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "src/base/macros.h"
#include "third_party/google_benchmark/src/include/benchmark/benchmark.h"
static void BM_Empty(benchmark::State& state) {
for (auto _ : state) {
+ USE(_);
}
}
-// Register the function as a benchmark
+
+// Register the function as a benchmark. The empty benchmark ensures that the
+// framework compiles and links as expected.
BENCHMARK(BM_Empty);
diff --git a/deps/v8/test/cctest/BUILD.gn b/deps/v8/test/cctest/BUILD.gn
index ffa4e3a136..8f6e5610b8 100644
--- a/deps/v8/test/cctest/BUILD.gn
+++ b/deps/v8/test/cctest/BUILD.gn
@@ -127,6 +127,7 @@ v8_source_set("cctest_sources") {
"compiler/test-run-unwinding-info.cc",
"compiler/test-run-variables.cc",
"compiler/test-sloppy-equality.cc",
+ "compiler/test-verify-type.cc",
"compiler/value-helper.cc",
"compiler/value-helper.h",
"disasm-regex-helper.cc",
@@ -156,6 +157,7 @@ v8_source_set("cctest_sources") {
"heap/test-mark-compact.cc",
"heap/test-memory-measurement.cc",
"heap/test-page-promotion.cc",
+ "heap/test-shared-heap.cc",
"heap/test-spaces.cc",
"heap/test-unmapper.cc",
"heap/test-weak-references.cc",
@@ -260,6 +262,7 @@ v8_source_set("cctest_sources") {
"test-platform.cc",
"test-profile-generator.cc",
"test-property-details.cc",
+ "test-ptr-compr-cage.cc",
"test-random-number-generator.cc",
"test-regexp.cc",
"test-representation.cc",
@@ -438,7 +441,6 @@ v8_source_set("cctest_sources") {
"wasm/test-run-wasm-relaxed-simd.cc",
"wasm/test-run-wasm-sign-extension.cc",
"wasm/test-run-wasm-simd-liftoff.cc",
- "wasm/test-run-wasm-simd-scalar-lowering.cc",
"wasm/test-run-wasm-simd.cc",
"wasm/test-run-wasm-wrappers.cc",
"wasm/test-run-wasm.cc",
diff --git a/deps/v8/test/cctest/cctest.cc b/deps/v8/test/cctest/cctest.cc
index 7d5115697a..3e5b87e863 100644
--- a/deps/v8/test/cctest/cctest.cc
+++ b/deps/v8/test/cctest/cctest.cc
@@ -46,7 +46,7 @@
#endif // V8_USE_PERFETTO
#if V8_OS_WIN
-#include <windows.h> // NOLINT
+#include <windows.h>
#if V8_CC_MSVC
#include <crtdbg.h>
#endif
@@ -245,8 +245,8 @@ class V8_NODISCARD InitializedHandleScopeImpl {
i::HandleScope handle_scope_;
};
-InitializedHandleScope::InitializedHandleScope()
- : main_isolate_(CcTest::InitIsolateOnce()),
+InitializedHandleScope::InitializedHandleScope(i::Isolate* isolate)
+ : main_isolate_(isolate ? isolate : CcTest::InitIsolateOnce()),
initialized_handle_scope_impl_(
new InitializedHandleScopeImpl(main_isolate_)) {}
diff --git a/deps/v8/test/cctest/cctest.h b/deps/v8/test/cctest/cctest.h
index 862f347aa4..20cc74666c 100644
--- a/deps/v8/test/cctest/cctest.h
+++ b/deps/v8/test/cctest/cctest.h
@@ -619,7 +619,7 @@ class InitializedHandleScopeImpl;
class V8_NODISCARD InitializedHandleScope {
public:
- InitializedHandleScope();
+ explicit InitializedHandleScope(i::Isolate* isolate = nullptr);
~InitializedHandleScope();
// Prefixing the below with main_ reduces a lot of naming clashes.
@@ -842,11 +842,11 @@ DEFINE_OPERATORS_FOR_FLAGS(ApiCheckerResultFlags)
bool IsValidUnwrapObject(v8::Object* object);
-template <typename T, int offset>
+template <typename T>
T* GetInternalField(v8::Object* wrapper) {
- assert(offset < wrapper->InternalFieldCount());
+ assert(kV8WrapperObjectIndex < wrapper->InternalFieldCount());
return reinterpret_cast<T*>(
- wrapper->GetAlignedPointerFromInternalField(offset));
+ wrapper->GetAlignedPointerFromInternalField(kV8WrapperObjectIndex));
}
#endif // ifndef CCTEST_H_
diff --git a/deps/v8/test/cctest/cctest.status b/deps/v8/test/cctest/cctest.status
index 7b1bf8caa5..54dc4fa3fc 100644
--- a/deps/v8/test/cctest/cctest.status
+++ b/deps/v8/test/cctest/cctest.status
@@ -198,6 +198,7 @@
# %ObserveNode tests relies on TurboFan.
'test-sloppy-equality/*' : [SKIP],
'test-js-to-wasm/*': [SKIP],
+ 'test-verify-type/*': [SKIP],
}], # variant == nooptimization
##############################################################################
@@ -352,6 +353,13 @@
'test-run-wasm-simd-liftoff/*': [SKIP],
}], # '(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simd_mips'
+['(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simd_mips', {
+ 'test-gc/RunWasmLiftoff_RefTrivialCasts': [SKIP],
+ 'test-gc/RunWasmTurbofan_RefTrivialCasts': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_Select_s128_parameters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_Select_s128_parameters': [SKIP],
+}], # '(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simd_mips'
+
##############################################################################
['arch == mips or arch == mips64', {
# TODO(mips-team): Implement I64Atomic operations on MIPS
@@ -384,15 +392,18 @@
# SIMD not fully implemented yet
'test-run-wasm-simd-liftoff/*': [SKIP],
- 'test-run-wasm-simd-scalar-lowering/*':[SKIP],
'test-run-wasm-simd/*':[SKIP],
+ 'test-gc/RunWasmLiftoff_RefTrivialCasts': [SKIP],
+ 'test-gc/RunWasmTurbofan_RefTrivialCasts': [SKIP],
# Some wasm functionality is not implemented yet
'test-run-wasm-atomics64/*': [SKIP],
'test-run-wasm-atomics/*': [SKIP],
'test-run-wasm-64/*': [SKIP],
'test-run-wasm/*': [SKIP],
-}],
+
+
+}], # 'arch == riscv64'
##############################################################################
['arch == riscv64 and simulator_run', {
@@ -447,21 +458,22 @@
# TODO(ppc/s390): support concurrent patching of jump table
'test-jump-table-assembler/*': [SKIP],
- # Liftoff is not currently supported on ppc and s390
- 'test-liftoff-*': [SKIP],
'test-wasm-breakpoints/*' : [SKIP],
- 'test-run-wasm-module/Run_WasmModule_CompilationHintsNoTiering': [SKIP],
- 'test-wasm-serialization/TierDownAfterDeserialization': [SKIP],
- 'test-gc/RunWasmLiftoff*': [SKIP],
# SIMD not fully implemented yet
'test-run-wasm-simd-liftoff/*': [SKIP],
+ 'test-gc/RunWasmLiftoff_RefTrivialCasts': [SKIP]
}], # 'arch == ppc or arch == ppc64 or arch == s390 or arch == s390x'
['arch == ppc64', {
# https://crbug.com/v8/8766
'test-bytecode-generator/WideRegisters': [SKIP],
+ # Liftoff is not currently supported on ppc
+ 'test-liftoff-*': [SKIP],
+ 'test-gc/RunWasmLiftoff*': [SKIP],
+ 'test-run-wasm-module/Run_WasmModule_CompilationHintsNoTiering': [SKIP],
+ 'test-wasm-serialization/TierDownAfterDeserialization': [SKIP],
}],
##############################################################################
@@ -600,6 +612,7 @@
'test-swiss-name-dictionary-csa/*': [SKIP],
'test-torque/*': [SKIP],
'test-unwinder-code-pages/PCIsInV8_LargeCodeObject_CodePagesAPI': [SKIP],
+ 'test-verify-type/*': [SKIP],
# Field representation tracking is disabled in jitless mode.
'test-field-type-tracking/*': [SKIP],
@@ -654,6 +667,7 @@
'test-run-wasm-exceptions/RunWasmTurbofan_TryCatchCallIndirect': [SKIP],
'test-run-wasm-exceptions/RunWasmTurbofan_TryCatchThrow': [SKIP],
'test-run-wasm-exceptions/RunWasmTurbofan_TryCatchTrapTypeError': [SKIP],
+ 'test-verify-type/*': [SKIP],
# --interpreted-frames-native-stack tests
'test-log/ExternalCodeEventListenerWithInterpretedFramesNativeStack': [SKIP],
@@ -696,16 +710,480 @@
}],
##############################################################################
-['no_simd_sse == True', {
+['no_simd_hardware == True', {
'test-run-wasm-simd/*': [SKIP],
'test-run-wasm-simd-liftoff/*': [SKIP],
- 'test-run-wasm-simd-scalar-lowering/*': [SKIP],
-}], # no_simd_sse == True
+}], # no_simd_hardware == True
################################################################################
['variant == stress_concurrent_inlining', {
+ # crbug.com/v8/11649: Improper access to BreakInfo and friends.
+ 'test-debug/BreakPointInlinedBuiltin': [PASS, FAIL],
+ 'test-debug/BreakPointInlining': [PASS, FAIL],
# BUG(11524): Crashing flakily.
'test-cpu-profiler/TracingCpuProfiler': [PASS, FAIL],
+ # crbug.com/v8/11513: Flakily failing due to the additional compile task.
+ 'test-heap/CellsInOptimizedCodeAreWeak': [PASS, FAIL],
+ 'test-heap/EnsureAllocationSiteDependentCodesProcessed': [PASS, FAIL],
+ 'test-heap/LeakNativeContextVia*': [PASS, FAIL],
+ 'test-heap/NewSpaceObjectsInOptimizedCode': [PASS, FAIL],
+ 'test-heap/ObjectsInEagerlyDeoptimizedCodeAreWeak': [PASS, FAIL],
+ 'test-heap/ObjectsInOptimizedCodeAreWeak': [PASS, FAIL],
}], # variant == stress_concurrent_inlining
+################################################################################
+['third_party_heap', {
+ # v8::Unwinder::PCIsInV8 is not supported
+ 'test-unwinder-code-pages/PCIsInV8_LargeCodeObject_CodePagesAPI': [SKIP],
+ 'test-unwinder-code-pages/Unwind_CodeObjectPCInMiddle_Success_CodePagesAPI': [SKIP],
+ # Calls Space::FirstPageAddress
+ 'test-debug-helper/GetObjectProperties': [SKIP],
+ # Calls Heap::SizeOfObjects
+ 'test-heap/TestSizeOfObjectsVsHeapObjectIteratorPrecision': [SKIP],
+ # Test on heap profiler
+ 'test-heap-profiler/SamplingHeapProfilerApiSamples': [SKIP],
+ 'test-heap-profiler/SamplingHeapProfiler': [SKIP],
+ 'test-heap-profiler/SamplingHeapProfilerRateAgnosticEstimates': [SKIP],
+ 'test-heap-profiler/SamplingHeapProfilerApiAllocation': [SKIP],
+ 'test-heap-profiler/SamplingHeapProfilerLargeInterval': [SKIP],
+ # Test old/new space backing store allocation
+ 'test-external-string-tracker/ExternalString_ExternalBackingStoreSizeIncreases': [SKIP],
+ # Read data from read_only_space->pages()
+ 'test-serialize/CodeSerializerExternalScriptName': [SKIP],
+ 'test-serialize/CodeSerializerThreeBigStrings': [SKIP],
+ # Access chunk metadata
+ 'test-roots/TestHeapRootsNotReadOnly': [SKIP],
+ 'test-roots/TestReadOnlyRoots': [SKIP],
+ # Requires heap::SimulateFullSpace
+ 'test-invalidated-slots/InvalidatedSlotsAfterTrimming': [SKIP],
+ 'test-invalidated-slots/InvalidatedSlotsAllInvalidatedRanges': [SKIP],
+ 'test-invalidated-slots/InvalidatedSlotsCleanupEachObject': [SKIP],
+ 'test-invalidated-slots/InvalidatedSlotsCleanupFull': [SKIP],
+ 'test-invalidated-slots/InvalidatedSlotsCleanupRightTrim': [SKIP],
+ 'test-invalidated-slots/InvalidatedSlotsEvacuationCandidate': [SKIP],
+ 'test-invalidated-slots/InvalidatedSlotsNoInvalidatedRanges': [SKIP],
+ 'test-invalidated-slots/InvalidatedSlotsResetObjectRegression': [SKIP],
+ 'test-invalidated-slots/InvalidatedSlotsSomeInvalidatedRanges': [SKIP],
+ # Requires --concurrent_inlining / --finalize_streaming_on_background:
+ 'serializer-tester/ArrowFunctionInlined': [SKIP],
+ 'serializer-tester/BoundFunctionArguments': [SKIP],
+ 'serializer-tester/BoundFunctionResult': [SKIP],
+ 'serializer-tester/BoundFunctionTarget': [SKIP],
+ 'serializer-tester/MergeJumpTargetEnvironment': [SKIP],
+ 'serializer-tester/MultipleFunctionCalls': [SKIP],
+ 'serializer-tester/SerializeCallAnyReceiver': [SKIP],
+ 'serializer-tester/SerializeCallArguments': [SKIP],
+ 'serializer-tester/SerializeCallProperty': [SKIP],
+ 'serializer-tester/SerializeCallProperty2': [SKIP],
+ 'serializer-tester/SerializeCallUndefinedReceiver': [SKIP],
+ 'serializer-tester/SerializeCallUndefinedReceiver2': [SKIP],
+ 'serializer-tester/SerializeCallWithSpread': [SKIP],
+ 'serializer-tester/SerializeConditionalJump': [SKIP],
+ 'serializer-tester/SerializeConstruct': [SKIP],
+ 'serializer-tester/SerializeConstructSuper': [SKIP],
+ 'serializer-tester/SerializeConstructWithSpread': [SKIP],
+ 'serializer-tester/SerializeEmptyFunction': [SKIP],
+ 'serializer-tester/SerializeInlinedClosure': [SKIP],
+ 'serializer-tester/SerializeInlinedFunction': [SKIP],
+ 'serializer-tester/SerializeUnconditionalJump': [SKIP],
+ 'test-concurrent-allocation/ConcurrentAllocationWhileMainThreadIsParked': [SKIP],
+ 'test-concurrent-allocation/ConcurrentAllocationWhileMainThreadParksAndUnparks': [SKIP],
+ 'test-concurrent-allocation/ConcurrentAllocationWhileMainThreadRunsWithSafepoints': [SKIP],
+ # Tests on V8 stock GC
+ 'test-spaces/*': [SKIP],
+ 'test-compaction/*': [SKIP],
+ 'test-mark-compact/*': [SKIP],
+ 'test-lab/*': [SKIP],
+ 'test-heap/TestAlignedOverAllocation': [SKIP],
+ 'test-heap/RememberedSetRemoveRange': [SKIP],
+ 'test-heap/CodeObjectRegistry': [SKIP],
+ 'test-heap/DeepEagerCompilationPeakMemory': [SKIP],
+ 'test-api/GetHeapStatistics': [SKIP],
+ 'test-api/GetHeapSpaceStatistics': [SKIP],
+ # Requires --concurrent_recompilation
+ 'test-debug/BreakPointBuiltinConcurrentOpt': [SKIP],
+ # Requires a second isolate
+ 'test-api-array-buffer/BackingStore_HoldAllocatorAlive_AfterIsolateShutdown': [SKIP],
+ 'test-api-array-buffer/BackingStore_HoldAllocatorAlive_UntilIsolateShutdown': [SKIP],
+ 'test-api-array-buffer/BackingStore_ReleaseAllocator_NullptrBackingStore': [SKIP],
+ 'test-api/CodeCache': [SKIP],
+ 'test-api/CodeCacheModuleScriptMismatch': [SKIP],
+ 'test-api/CodeCacheScriptModuleMismatch': [SKIP],
+ 'test-api/ExternalInternalizedStringCollectedAtTearDown': [SKIP],
+ 'test-api/ExternalStringCollectedAtTearDown': [SKIP],
+ 'test-api/InitializeDefaultIsolateOnSecondaryThread_AddHistogramSampleFunction': [SKIP],
+ 'test-api/InitializeDefaultIsolateOnSecondaryThread_CounterFunction': [SKIP],
+ 'test-api/InitializeDefaultIsolateOnSecondaryThread_CreateHistogramFunction': [SKIP],
+ 'test-api/InitializeDefaultIsolateOnSecondaryThread_FatalHandler': [SKIP],
+ 'test-api/IsolateDifferentContexts': [SKIP],
+ 'test-api/IsolateNewDispose': [SKIP],
+ 'test-api/ModuleCodeCache': [SKIP],
+ 'test-api/MultipleIsolatesOnIndividualThreads': [SKIP],
+ 'test-api/NestedIsolates': [SKIP],
+ 'test-api/RunTwoIsolatesOnSingleThread': [SKIP],
+ 'test-api/VerifyArrayPrototypeGuarantees': [SKIP],
+ 'test-compiler/DecideToPretenureDuringCompilation': [SKIP],
+ 'test-cpu-profiler/MultipleIsolates': [SKIP],
+ 'test-heap/Regress538257': [SKIP],
+ 'test-heap/ReinitializeStringHashSeed': [SKIP],
+ 'test-lockers/*': [SKIP],
+ 'test-log/ExternalCodeEventListenerInnerFunctions': [SKIP],
+ 'test-log/LogInterpretedFramesNativeStackWithSerialization': [SKIP],
+ 'test-managed/*': [SKIP],
+ 'test-mark-compact/RegressJoinThreadsOnIsolateDeinit': [SKIP],
+ 'test-memory-measurement/RandomizedTimeout': [SKIP],
+ 'test-random-number-generator/*': [SKIP],
+ 'test-serialize/CodeSerializerAfterExecute': [SKIP],
+ 'test-serialize/CodeSerializerBitFlip': [SKIP],
+ 'test-serialize/CodeSerializerFlagChange': [SKIP],
+ 'test-serialize/CodeSerializerIsolates': [SKIP],
+ 'test-serialize/CodeSerializerIsolatesEager': [SKIP],
+ 'test-serialize/CodeSerializerWithHarmonyScoping': [SKIP],
+ 'test-serialize/ContextSerializerContext': [SKIP],
+ 'test-serialize/ContextSerializerCustomContext': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlob1': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlob2': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobArrayBufferWithOffset': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobDataView': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobDetachedArrayBuffer': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobOnOrOffHeapTypedArray': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobOutdatedContextWithOverflow': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobOverwriteGlobal': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobSharedArrayBuffer': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobStringNotInternalized': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobTypedArrayNoEmbedderFieldCallback': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobWithIrregexpCodeClearCode': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobWithIrregexpCodeKeepCode': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobWithKeep': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobWithLocker': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobWithOffHeapTypedArray': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobWithWarmup': [SKIP],
+ 'test-serialize/ReinitializeHashSeedJSCollectionRehashable': [SKIP],
+ 'test-serialize/ReinitializeHashSeedRehashable': [SKIP],
+ 'test-serialize/SnapshotCreatorAddData': [SKIP],
+ 'test-serialize/SnapshotCreatorArrayJoinWithKeep': [SKIP],
+ 'test-serialize/SnapshotCreatorDuplicateFunctions': [SKIP],
+ 'test-serialize/SnapshotCreatorExternalReferences': [SKIP],
+ 'test-serialize/SnapshotCreatorIncludeGlobalProxy': [SKIP],
+ 'test-serialize/SnapshotCreatorMultipleContexts': [SKIP],
+ 'test-serialize/SnapshotCreatorNoExternalReferencesDefault': [SKIP],
+ 'test-serialize/SnapshotCreatorPreparseDataAndNoOuterScope': [SKIP],
+ 'test-serialize/SnapshotCreatorShortExternalReferences': [SKIP],
+ 'test-serialize/SnapshotCreatorTemplates': [SKIP],
+ 'test-serialize/SnapshotDataBlobWithWarmup': [SKIP],
+ 'test-serialize/StartupSerializerOnce': [SKIP],
+ 'test-serialize/StartupSerializerOnceRunScript': [SKIP],
+ 'test-serialize/StartupSerializerTwice': [SKIP],
+ 'test-serialize/StartupSerializerTwiceRunScript': [SKIP],
+ 'test-serialize/WeakArraySerializationInSnapshot': [SKIP],
+ 'test-typedarrays/SpeciesConstructor': [SKIP],
+ 'test-typedarrays/SpeciesConstructorAccessor': [SKIP],
+ 'test-typedarrays/SpeciesModified': [SKIP],
+ 'test-typedarrays/SpeciesParentConstructor': [SKIP],
+ 'test-typedarrays/SpeciesProto': [SKIP],
+ 'test-wasm-serialization/*': [SKIP],
+ 'test-wasm-shared-engine/*': [SKIP],
+ 'test-shared-heap/*': [SKIP],
+ # Performs GC or expects OOM
+ 'test-alloc/StressHandles': [SKIP],
+ 'test-alloc/StressJS': [SKIP],
+ 'test-api-wasm/WasmStreamingCallback': [SKIP],
+ 'test-api/DontLeakGlobalObjects': [SKIP],
+ 'test-api/ExternalInternalizedStringCollectedAtGC': [SKIP],
+ 'test-api/ExternalStringWithDisposeHandling': [SKIP],
+ 'test-api/ExternalizeOldSpaceOneByteCons': [SKIP],
+ 'test-api/ExternalizeOldSpaceTwoByteCons': [SKIP],
+ 'test-api/GCFromWeakCallbacks': [SKIP],
+ 'test-api/GlobalValueMap': [SKIP],
+ 'test-api/IndependentWeakHandle': [SKIP],
+ 'test-api/InternalFieldCallback': [SKIP],
+ 'test-api/MemoryPressure': [SKIP],
+ 'test-api/NumberOfDetachedContexts': [SKIP],
+ 'test-api/NumberOfNativeContexts': [SKIP],
+ 'test-api/Recorder_GetContext': [SKIP],
+ 'test-api/Regress1516': [SKIP],
+ 'test-api/Regress528': [SKIP],
+ 'test-api/ResetWeakHandle': [SKIP],
+ 'test-api/ScavengeExternalOneByteString': [SKIP],
+ 'test-api/ScavengeExternalString': [SKIP],
+ 'test-api/ScriptMakingExternalOneByteString': [SKIP],
+ 'test-api/ScriptMakingExternalString': [SKIP],
+ 'test-api/ScriptUsingOneByteStringResource': [SKIP],
+ 'test-api/ScriptUsingStringResource': [SKIP],
+ 'test-api/SetJitCodeEventHandler': [SKIP],
+ 'test-api/Threading1': [SKIP],
+ 'test-api/Threading3': [SKIP],
+ 'test-api/Threading5': [SKIP],
+ 'test-api/TriggerDelayedMainThreadMetricsEvent': [SKIP],
+ 'test-api/TriggerMainThreadMetricsEvent': [SKIP],
+ 'test-api/TwoPassPhantomCallbacks': [SKIP],
+ 'test-api/TwoPassPhantomCallbacksNestedGc': [SKIP],
+ 'test-api/TwoPassPhantomCallbacksTriggeredByStringAlloc': [SKIP],
+ 'test-api/WeakCallbackApi': [SKIP],
+ 'test-array-buffer-tracker/ArrayBuffer_Compaction': [SKIP],
+ 'test-array-buffer-tracker/ArrayBuffer_ExternalBackingStoreSizeIncreasesMarkCompact': [SKIP],
+ 'test-array-buffer-tracker/ArrayBuffer_OnlyMC': [SKIP],
+ 'test-concurrent-allocation/ConcurrentAllocationInLargeSpace': [SKIP],
+ 'test-concurrent-allocation/ConcurrentAllocationInOldSpace': [SKIP],
+ 'test-concurrent-allocation/ConcurrentAllocationInOldSpaceFromMainThread': [SKIP],
+ 'test-cpu-profiler/BytecodeFlushEventsEagerLogging': [SKIP],
+ 'test-cpu-profiler/ClearUnusedWithEagerLogging': [SKIP],
+ 'test-debug/AfterCompileEventWhenEventListenerIsReset': [SKIP],
+ 'test-debug/BreakEventWhenEventListenerIsReset': [SKIP],
+ 'test-debug/BreakPointApiAccessor': [SKIP],
+ 'test-debug/BreakPointApiConstructor': [SKIP],
+ 'test-debug/BreakPointApiFunction': [SKIP],
+ 'test-debug/BreakPointApiGetter': [SKIP],
+ 'test-debug/BreakPointApiIntrinsics': [SKIP],
+ 'test-debug/BreakPointApiSetter': [SKIP],
+ 'test-debug/BreakPointBoundBuiltin': [SKIP],
+ 'test-debug/BreakPointBuiltin': [SKIP],
+ 'test-debug/BreakPointBuiltinNewContext': [SKIP],
+ 'test-debug/BreakPointBuiltinTFOperator': [SKIP],
+ 'test-debug/BreakPointCondition': [SKIP],
+ 'test-debug/BreakPointConditionBuiltin': [SKIP],
+ 'test-debug/BreakPointConstructCallWithGC': [SKIP],
+ 'test-debug/BreakPointConstructorBuiltin': [SKIP],
+ 'test-debug/BreakPointICCall': [SKIP],
+ 'test-debug/BreakPointICCallWithGC': [SKIP],
+ 'test-debug/BreakPointICLoad': [SKIP],
+ 'test-debug/BreakPointICStore': [SKIP],
+ 'test-debug/BreakPointInlineApiFunction': [SKIP],
+ 'test-debug/BreakPointInlineBoundBuiltin': [SKIP],
+ 'test-debug/BreakPointInlinedBuiltin': [SKIP],
+ 'test-debug/BreakPointInlinedConstructorBuiltin': [SKIP],
+ 'test-debug/BreakPointInlining': [SKIP],
+ 'test-debug/BreakPointJSBuiltin': [SKIP],
+ 'test-debug/BreakPointSurviveGC': [SKIP],
+ 'test-debug/ConditionalBreakpointWithCodeGenerationDisallowed': [SKIP],
+ 'test-debug/ContextData': [SKIP],
+ 'test-debug/DebugBreak': [SKIP],
+ 'test-debug/DebugBreakInDoWhileCondition1': [SKIP],
+ 'test-debug/DebugBreakInDoWhileCondition2': [SKIP],
+ 'test-debug/DebugBreakInDoWhileTrue1': [SKIP],
+ 'test-debug/DebugBreakInDoWhileTrue2': [SKIP],
+ 'test-debug/DebugBreakInFor1': [SKIP],
+ 'test-debug/DebugBreakInFor2': [SKIP],
+ 'test-debug/DebugBreakInForCondition1': [SKIP],
+ 'test-debug/DebugBreakInForCondition2': [SKIP],
+ 'test-debug/DebugBreakInWhileCondition1': [SKIP],
+ 'test-debug/DebugBreakInWhileCondition2': [SKIP],
+ 'test-debug/DebugBreakInWhileTrue1': [SKIP],
+ 'test-debug/DebugBreakInWhileTrue2': [SKIP],
+ 'test-debug/DebugBreakInWrappedScript': [SKIP],
+ 'test-debug/DebugBreakWithoutJS': [SKIP],
+ 'test-debug/DebugConditional': [SKIP],
+ 'test-debug/DebugSetOutOfMemoryListener': [SKIP],
+ 'test-debug/DebugStepDeclarations': [SKIP],
+ 'test-debug/DebugStepDoWhile': [SKIP],
+ 'test-debug/DebugStepFor': [SKIP],
+ 'test-debug/DebugStepForBreak': [SKIP],
+ 'test-debug/DebugStepForContinue': [SKIP],
+ 'test-debug/DebugStepForIn': [SKIP],
+ 'test-debug/DebugStepFunctionApply': [SKIP],
+ 'test-debug/DebugStepFunctionCall': [SKIP],
+ 'test-debug/DebugStepFunctionCallApply': [SKIP],
+ 'test-debug/DebugStepIf': [SKIP],
+ 'test-debug/DebugStepKeyedLoadLoop': [SKIP],
+ 'test-debug/DebugStepKeyedStoreLoop': [SKIP],
+ 'test-debug/DebugStepLinear': [SKIP],
+ 'test-debug/DebugStepLinearMixedICs': [SKIP],
+ 'test-debug/DebugStepLocals': [SKIP],
+ 'test-debug/DebugStepNamedLoadLoop': [SKIP],
+ 'test-debug/DebugStepNamedStoreLoop': [SKIP],
+ 'test-debug/DebugStepNatives': [SKIP],
+ 'test-debug/DebugStepSwitch': [SKIP],
+ 'test-debug/DebugStepWhile': [SKIP],
+ 'test-debug/DebugStepWith': [SKIP],
+ 'test-debug/DebuggerStatement': [SKIP],
+ 'test-debug/DebuggerStatementBreakpoint': [SKIP],
+ 'test-debug/DebuggerUnload': [SKIP],
+ 'test-debug/DisableBreak': [SKIP],
+ 'test-debug/EvalContextData': [SKIP],
+ 'test-debug/GCDuringBreakPointProcessing': [SKIP],
+ 'test-debug/NoBreakWhenBootstrapping': [SKIP],
+ 'test-debug/NoDebugBreakInAfterCompileEventListener': [SKIP],
+ 'test-debug/PauseInScript': [SKIP],
+ 'test-debug/Regress1163547': [SKIP],
+ 'test-debug/RepeatDebugBreak': [SKIP],
+ 'test-debug/TerminateOnResumeAtBreakOnEntry': [SKIP],
+ 'test-debug/TerminateOnResumeAtBreakOnEntryUserDefinedFunction': [SKIP],
+ 'test-debug/TerminateOnResumeAtBreakpoint': [SKIP],
+ 'test-debug/TerminateOnResumeAtException': [SKIP],
+ 'test-debug/TerminateOnResumeAtInterruptFromOtherThread': [SKIP],
+ 'test-debug/TerminateOnResumeAtUnhandledRejection': [SKIP],
+ 'test-debug/TerminateOnResumeAtUnhandledRejectionCppImpl': [SKIP],
+ 'test-debug/TerminateOnResumeFromMicrotask': [SKIP],
+ 'test-debug/TerminateOnResumeFromOtherThread': [SKIP],
+ 'test-debug/TerminateOnResumeRunJavaScriptAtBreakpoint': [SKIP],
+ 'test-debug/TerminateOnResumeRunMicrotaskAtBreakpoint': [SKIP],
+ 'test-embedder-tracing/GarbageCollectionForTesting': [SKIP],
+ 'test-embedder-tracing/NotifyEmptyStack': [SKIP],
+ 'test-embedder-tracing/TracedGlobalCopy': [SKIP],
+ 'test-embedder-tracing/TracedGlobalCopyNoDestructor': [SKIP],
+ 'test-embedder-tracing/TracedGlobalCopyWithDestructor': [SKIP],
+ 'test-embedder-tracing/TracedGlobalDestructor': [SKIP],
+ 'test-embedder-tracing/TracedGlobalInStdUnorderedMap': [SKIP],
+ 'test-embedder-tracing/TracedGlobalInStdVector': [SKIP],
+ 'test-embedder-tracing/TracedGlobalMove': [SKIP],
+ 'test-embedder-tracing/TracedGlobalNoDestructor': [SKIP],
+ 'test-embedder-tracing/TracedGlobalSetFinalizationCallbackMarkSweep': [SKIP],
+ 'test-embedder-tracing/TracedGlobalToUnmodifiedJSObjectDiesOnMarkSweep': [SKIP],
+ 'test-embedder-tracing/TracedReferenceCopy': [SKIP],
+ 'test-embedder-tracing/TracedReferenceHandlesDoNotLeak': [SKIP],
+ 'test-embedder-tracing/TracedReferenceHandlesMarking': [SKIP],
+ 'test-embedder-tracing/TracedReferenceMove': [SKIP],
+ 'test-embedder-tracing/TracingInEphemerons': [SKIP],
+ 'test-embedder-tracing/TracingInRevivedSubgraph': [SKIP],
+ 'test-embedder-tracing/V8RegisteringEmbedderReference': [SKIP],
+ 'test-external-string-tracker/ExternalString_ExternalBackingStoreSizeIncreasesAfterExternalization': [SKIP],
+ 'test-external-string-tracker/ExternalString_ExternalBackingStoreSizeIncreasesMarkCompact': [SKIP],
+ 'test-factory/Factory_CodeBuilder_BuildOOM': [SKIP],
+ 'test-factory/Factory_CodeBuilder_TryBuildOOM': [SKIP],
+ 'test-global-handles/FinalizerDiesAndKeepsPhantomAliveOnMarkCompact': [SKIP],
+ 'test-global-handles/FinalizerWeakness': [SKIP],
+ 'test-global-handles/GCFromWeakCallbacks': [SKIP],
+ 'test-global-handles/PhatomHandlesWithoutCallbacks': [SKIP],
+ 'test-global-handles/SecondPassPhantomCallbacks': [SKIP],
+ 'test-global-handles/WeakHandleToUnmodifiedJSApiObjectDiesOnMarkCompact': [SKIP],
+ 'test-global-handles/WeakHandleToUnmodifiedJSObjectDiesOnMarkCompact': [SKIP],
+ 'test-heap-profiler/HeapSnapshotDeleteDuringTakeSnapshot': [SKIP],
+ 'test-heap-profiler/HeapSnapshotObjectsStats': [SKIP],
+ 'test-heap-profiler/SamplingHeapProfilerPretenuredInlineAllocations': [SKIP],
+ 'test-heap-profiler/TrackBumpPointerAllocations': [SKIP],
+ 'test-heap/AllocateExternalBackingStore': [SKIP],
+ 'test-heap/BytecodeArray': [SKIP],
+ 'test-heap/CellsInOptimizedCodeAreWeak': [SKIP],
+ 'test-heap/CompilationCacheCachingBehavior': [SKIP],
+ 'test-heap/DeleteWeakGlobalHandle': [SKIP],
+ 'test-heap/EnsureAllocationSiteDependentCodesProcessed': [SKIP],
+ 'test-heap/LeakNativeContextViaFunction': [SKIP],
+ 'test-heap/LeakNativeContextViaMap': [SKIP],
+ 'test-heap/LeakNativeContextViaMapKeyed': [SKIP],
+ 'test-heap/LeakNativeContextViaMapProto': [SKIP],
+ 'test-heap/LiveBytes': [SKIP],
+ 'test-heap/MonomorphicStaysMonomorphicAfterGC': [SKIP],
+ 'test-heap/NextCodeLinkInCodeDataContainerIsCleared': [SKIP],
+ 'test-heap/NextCodeLinkIsWeak': [SKIP],
+ 'test-heap/NextCodeLinkIsWeak2': [SKIP],
+ 'test-heap/ObjectsInEagerlyDeoptimizedCodeAreWeak': [SKIP],
+ 'test-heap/ObjectsInOptimizedCodeAreWeak': [SKIP],
+ 'test-heap/OldSpaceAllocationCounter': [SKIP],
+ 'test-heap/OutOfMemoryIneffectiveGCRunningJS': [SKIP],
+ 'test-heap/Regress10843': [SKIP],
+ 'test-heap/Regress3877': [SKIP],
+ 'test-heap/Regress609761': [SKIP],
+ 'test-heap/ReleaseOverReservedPages': [SKIP],
+ 'test-heap/ReleaseStackTraceData': [SKIP],
+ 'test-heap/RememberedSet_OldToOld': [SKIP],
+ 'test-heap/TestBytecodeFlushing': [SKIP],
+ 'test-heap/TestInternalWeakLists': [SKIP],
+ 'test-heap/TestSizeOfObjects': [SKIP],
+ 'test-heap/TransitionArrayShrinksDuringAllocToOne': [SKIP],
+ 'test-heap/TransitionArrayShrinksDuringAllocToOnePropertyFound': [SKIP],
+ 'test-heap/TransitionArrayShrinksDuringAllocToZero': [SKIP],
+ 'test-heap/UncommitUnusedLargeObjectMemory': [SKIP],
+ 'test-heap/WeakFunctionInConstructor': [SKIP],
+ 'test-heap/WeakGlobalHandlesMark': [SKIP],
+ 'test-heap/WeakGlobalUnmodifiedApiHandlesScavenge': [SKIP],
+ 'test-heap/WeakMapInMonomorphicCompareNilIC': [SKIP],
+ 'test-heap/WeakMapInMonomorphicKeyedLoadIC': [SKIP],
+ 'test-heap/WeakMapInMonomorphicKeyedStoreIC': [SKIP],
+ 'test-heap/WeakMapInMonomorphicLoadIC': [SKIP],
+ 'test-heap/WeakMapInMonomorphicStoreIC': [SKIP],
+ 'test-heap/WeakMapInPolymorphicKeyedLoadIC': [SKIP],
+ 'test-heap/WeakMapInPolymorphicKeyedStoreIC': [SKIP],
+ 'test-heap/WeakMapInPolymorphicLoadIC': [SKIP],
+ 'test-heap/WeakMapInPolymorphicStoreIC': [SKIP],
+ 'test-js-weak-refs/TestJSWeakRef': [SKIP],
+ 'test-js-weak-refs/TestJSWeakRefKeepDuringJob': [SKIP],
+ 'test-managed/GCCausesDestruction': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32AddOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32DivSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32DivUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32MulOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32RemSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32RemUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32ShlOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32ShrSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32ShrUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I32SubOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64AddOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64DivSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64DivUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64MulOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64RemSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64RemUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64ShlOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64ShrSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64ShrUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_I64SubOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmInterpreter_LoadMemI32_const_oob_misaligned': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32AddOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32DivSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32DivUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32MulOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32RemSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32RemUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32ShlOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32ShrSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32ShrUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I32SubOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64AddOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64DivSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64DivUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64MulOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64RemSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64RemUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64ShlOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64ShrSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64ShrUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_I64SubOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmLiftoff_LoadMemI32_const_oob_misaligned': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32AddOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32DivSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32DivUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32MulOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32RemSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32RemUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32ShlOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32ShrSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32ShrUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I32SubOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64AddOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64DivSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64DivUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64MulOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64RemSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64RemUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64ShlOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64ShrSOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64ShrUOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_I64SubOnDifferentRegisters': [SKIP],
+ 'test-run-wasm/RunWasmTurbofan_LoadMemI32_const_oob_misaligned': [SKIP],
+ 'test-serialize/CustomSnapshotDataBlobStackOverflow': [SKIP],
+ 'test-serialize/CustomSnapshotManyArrayBuffers': [SKIP],
+ 'test-weak-references/PrototypeUsersCompacted': [SKIP],
+ 'test-weak-references/WeakArrayListBasic': [SKIP],
+ 'test-weak-references/WeakArraysBasic': [SKIP],
+ 'test-weak-references/WeakReferencesBasic': [SKIP],
+ 'test-weakmaps/WeakMapsWithChainedEntries': [SKIP],
+ 'test-weakmaps/Weakness': [SKIP],
+ 'test-weaksets/WeakSet_Weakness': [SKIP],
+ 'test-web-snapshots/SFIDeduplicationAfterBytecodeFlushing': [SKIP],
+ # CodeRange tests
+ 'test-code-pages/LargeCodeObjectWithSignalHandler': [SKIP],
+ 'test-code-pages/LargeCodeObject': [SKIP],
+ 'test-code-pages/OptimizedCodeWithCodeRange': [SKIP],
+ 'test-code-pages/Sorted': [SKIP],
+ 'test-code-pages/CodeRangeCorrectContents': [SKIP],
+}], # third_party_heap
+
+################################################################################
+['variant == always_sparkplug', {
+ # SFI deduplication tests check compilation state, which always_sparkplug
+ # can break.
+ 'test-web-snapshots/SFIDeduplication*': [SKIP],
+}],
+
]
diff --git a/deps/v8/test/cctest/compiler/serializer-tester.cc b/deps/v8/test/cctest/compiler/serializer-tester.cc
index 88e0becf23..9c41955fd7 100644
--- a/deps/v8/test/cctest/compiler/serializer-tester.cc
+++ b/deps/v8/test/cctest/compiler/serializer-tester.cc
@@ -49,7 +49,7 @@ SerializerTester::SerializerTester(const char* source)
// Update handle to the corresponding serialized Handle in the broker.
function =
broker_->FindCanonicalPersistentHandleForTesting<JSFunction>(*function);
- function_ = JSFunctionRef(broker(), function);
+ function_ = MakeRef(broker(), function);
}
TEST(SerializeEmptyFunction) {
@@ -86,11 +86,11 @@ void CheckForSerializedInlinee(const char* source, int argc = 0,
tester.broker()
->FindCanonicalPersistentHandleForTesting<SharedFunctionInfo>(
g_func->shared()));
- SharedFunctionInfoRef g_sfi(tester.broker(), sfi);
+ SharedFunctionInfoRef g_sfi = MakeRef(tester.broker(), sfi);
Handle<FeedbackVector> fv(
tester.broker()->FindCanonicalPersistentHandleForTesting<FeedbackVector>(
g_func->feedback_vector()));
- FeedbackVectorRef g_fv(tester.broker(), fv);
+ FeedbackVectorRef g_fv = MakeRef(tester.broker(), fv);
CHECK(tester.broker()->IsSerializedForCompilation(g_sfi, g_fv));
}
diff --git a/deps/v8/test/cctest/compiler/test-code-assembler.cc b/deps/v8/test/cctest/compiler/test-code-assembler.cc
index 34fd24f865..445cc44ca7 100644
--- a/deps/v8/test/cctest/compiler/test-code-assembler.cc
+++ b/deps/v8/test/cctest/compiler/test-code-assembler.cc
@@ -467,6 +467,7 @@ TEST(ExceptionHandler) {
}
TEST(TestCodeAssemblerCodeComment) {
+#ifdef V8_CODE_COMMENTS
i::FLAG_code_comments = true;
Isolate* isolate(CcTest::InitIsolateOnce());
const int kNumParams = 0;
@@ -486,6 +487,7 @@ TEST(TestCodeAssemblerCodeComment) {
it.Next();
}
CHECK(found_comment);
+#endif // V8_CODE_COMMENTS
}
TEST(StaticAssert) {
diff --git a/deps/v8/test/cctest/compiler/test-concurrent-shared-function-info.cc b/deps/v8/test/cctest/compiler/test-concurrent-shared-function-info.cc
index 163477d6fc..c286c1705c 100644
--- a/deps/v8/test/cctest/compiler/test-concurrent-shared-function-info.cc
+++ b/deps/v8/test/cctest/compiler/test-concurrent-shared-function-info.cc
@@ -88,8 +88,6 @@ class BackgroundCompilationThread final : public v8::base::Thread {
TEST(TestConcurrentSharedFunctionInfo) {
FlagScope<bool> allow_natives_syntax(&i::FLAG_allow_natives_syntax, true);
FlagScope<bool> concurrent_inlining(&i::FLAG_concurrent_inlining, true);
- FlagScope<bool> turbo_direct_heap_access(&i::FLAG_turbo_direct_heap_access,
- true);
HandleAndZoneScope scope;
Isolate* isolate = scope.main_isolate();
diff --git a/deps/v8/test/cctest/compiler/test-js-context-specialization.cc b/deps/v8/test/cctest/compiler/test-js-context-specialization.cc
index 8006ca43f2..aa26d48c2e 100644
--- a/deps/v8/test/cctest/compiler/test-js-context-specialization.cc
+++ b/deps/v8/test/cctest/compiler/test-js-context-specialization.cc
@@ -39,6 +39,7 @@ class ContextSpecializationTester : public HandleAndZoneScope {
MaybeHandle<JSFunction>()) {}
JSContextSpecialization* spec() { return &spec_; }
+ Isolate* isolate() { return main_isolate(); }
Factory* factory() { return main_isolate()->factory(); }
CommonOperatorBuilder* common() { return &common_; }
JSOperatorBuilder* javascript() { return &javascript_; }
@@ -111,7 +112,16 @@ void ContextSpecializationTester::CheckContextInputAndDepthChanges(
CHECK_EQ(new_access.immutable(), access.immutable());
}
-static const int slot_index = Context::PREVIOUS_INDEX;
+namespace {
+Handle<Context> NewContextForTesting(Isolate* isolate,
+ Handle<Context> previous) {
+ Handle<ScopeInfo> scope_info = ScopeInfo::CreateForWithScope(isolate, {});
+ Handle<JSObject> extension = isolate->factory()->NewJSObjectWithNullProto();
+ return isolate->factory()->NewWithContext(previous, scope_info, extension);
+}
+} // namespace
+
+static const int slot_index = 5;
TEST(ReduceJSLoadContext0) {
ContextSpecializationTester t(Nothing<OuterContext>());
@@ -121,12 +131,10 @@ TEST(ReduceJSLoadContext0) {
// Make a context and initialize it a bit for this test.
Handle<Context> native = t.factory()->NewNativeContext();
- Handle<Context> subcontext1 = t.factory()->NewNativeContext();
- Handle<Context> subcontext2 = t.factory()->NewNativeContext();
- subcontext2->set_previous(*subcontext1);
- subcontext1->set_previous(*native);
+ Handle<Context> subcontext1 = NewContextForTesting(t.isolate(), native);
+ Handle<Context> subcontext2 = NewContextForTesting(t.isolate(), subcontext1);
Handle<Object> expected = t.factory()->InternalizeUtf8String("gboy!");
- const int slot = Context::PREVIOUS_INDEX;
+ const int slot = 5;
native->set(slot, *expected);
Node* const_context = t.jsgraph()->Constant(ObjectRef(t.broker(), native));
@@ -271,8 +279,8 @@ TEST(ReduceJSLoadContext2) {
Handle<HeapObject> slot_value1 = t.factory()->InternalizeUtf8String("1");
Handle<Context> context_object0 = t.factory()->NewNativeContext();
- Handle<Context> context_object1 = t.factory()->NewNativeContext();
- context_object1->set_previous(*context_object0);
+ Handle<Context> context_object1 =
+ NewContextForTesting(t.isolate(), context_object0);
context_object0->set(Context::EXTENSION_INDEX, *slot_value0);
context_object1->set(Context::EXTENSION_INDEX, *slot_value1);
@@ -342,14 +350,15 @@ TEST(ReduceJSLoadContext3) {
// expectations are the same as in ReduceJSLoadContext2.
HandleAndZoneScope handle_zone_scope;
- auto factory = handle_zone_scope.main_isolate()->factory();
+ auto isolate = handle_zone_scope.main_isolate();
+ auto factory = isolate->factory();
Handle<HeapObject> slot_value0 = factory->InternalizeUtf8String("0");
Handle<HeapObject> slot_value1 = factory->InternalizeUtf8String("1");
Handle<Context> context_object0 = factory->NewNativeContext();
- Handle<Context> context_object1 = factory->NewNativeContext();
- context_object1->set_previous(*context_object0);
+ Handle<Context> context_object1 =
+ NewContextForTesting(isolate, context_object0);
context_object0->set(Context::EXTENSION_INDEX, *slot_value0);
context_object1->set(Context::EXTENSION_INDEX, *slot_value1);
@@ -427,12 +436,10 @@ TEST(ReduceJSStoreContext0) {
// Make a context and initialize it a bit for this test.
Handle<Context> native = t.factory()->NewNativeContext();
- Handle<Context> subcontext1 = t.factory()->NewNativeContext();
- Handle<Context> subcontext2 = t.factory()->NewNativeContext();
- subcontext2->set_previous(*subcontext1);
- subcontext1->set_previous(*native);
+ Handle<Context> subcontext1 = NewContextForTesting(t.isolate(), native);
+ Handle<Context> subcontext2 = NewContextForTesting(t.isolate(), subcontext1);
Handle<Object> expected = t.factory()->InternalizeUtf8String("gboy!");
- const int slot = Context::PREVIOUS_INDEX;
+ const int slot = 5;
native->set(slot, *expected);
Node* const_context = t.jsgraph()->Constant(ObjectRef(t.broker(), native));
@@ -542,8 +549,8 @@ TEST(ReduceJSStoreContext2) {
Handle<HeapObject> slot_value1 = t.factory()->InternalizeUtf8String("1");
Handle<Context> context_object0 = t.factory()->NewNativeContext();
- Handle<Context> context_object1 = t.factory()->NewNativeContext();
- context_object1->set_previous(*context_object0);
+ Handle<Context> context_object1 =
+ NewContextForTesting(t.isolate(), context_object0);
context_object0->set(Context::EXTENSION_INDEX, *slot_value0);
context_object1->set(Context::EXTENSION_INDEX, *slot_value1);
@@ -585,14 +592,15 @@ TEST(ReduceJSStoreContext2) {
TEST(ReduceJSStoreContext3) {
HandleAndZoneScope handle_zone_scope;
- auto factory = handle_zone_scope.main_isolate()->factory();
+ auto isolate = handle_zone_scope.main_isolate();
+ auto factory = isolate->factory();
Handle<HeapObject> slot_value0 = factory->InternalizeUtf8String("0");
Handle<HeapObject> slot_value1 = factory->InternalizeUtf8String("1");
Handle<Context> context_object0 = factory->NewNativeContext();
- Handle<Context> context_object1 = factory->NewNativeContext();
- context_object1->set_previous(*context_object0);
+ Handle<Context> context_object1 =
+ NewContextForTesting(isolate, context_object0);
context_object0->set(Context::EXTENSION_INDEX, *slot_value0);
context_object1->set(Context::EXTENSION_INDEX, *slot_value1);
diff --git a/deps/v8/test/cctest/compiler/test-representation-change.cc b/deps/v8/test/cctest/compiler/test-representation-change.cc
index 4f1ebb7f7d..f4488bf09a 100644
--- a/deps/v8/test/cctest/compiler/test-representation-change.cc
+++ b/deps/v8/test/cctest/compiler/test-representation-change.cc
@@ -413,9 +413,11 @@ TEST(Word64) {
CheckChange(IrOpcode::kChangeFloat64ToInt64, MachineRepresentation::kFloat64,
TypeCache::Get()->kSafeInteger, MachineRepresentation::kWord64);
CheckChange(IrOpcode::kChangeFloat64ToInt64, MachineRepresentation::kFloat64,
- TypeCache::Get()->kInt64, MachineRepresentation::kWord64);
+ TypeCache::Get()->kDoubleRepresentableInt64,
+ MachineRepresentation::kWord64);
CheckChange(IrOpcode::kChangeFloat64ToUint64, MachineRepresentation::kFloat64,
- TypeCache::Get()->kUint64, MachineRepresentation::kWord64);
+ TypeCache::Get()->kDoubleRepresentableUint64,
+ MachineRepresentation::kWord64);
CheckChange(
IrOpcode::kCheckedFloat64ToInt64, MachineRepresentation::kFloat64,
Type::Number(), MachineRepresentation::kWord64,
@@ -438,11 +440,13 @@ TEST(Word64) {
MachineRepresentation::kWord64);
CheckTwoChanges(IrOpcode::kChangeFloat32ToFloat64,
IrOpcode::kChangeFloat64ToInt64,
- MachineRepresentation::kFloat32, TypeCache::Get()->kInt64,
+ MachineRepresentation::kFloat32,
+ TypeCache::Get()->kDoubleRepresentableInt64,
MachineRepresentation::kWord64);
CheckTwoChanges(IrOpcode::kChangeFloat32ToFloat64,
IrOpcode::kChangeFloat64ToUint64,
- MachineRepresentation::kFloat32, TypeCache::Get()->kUint64,
+ MachineRepresentation::kFloat32,
+ TypeCache::Get()->kDoubleRepresentableUint64,
MachineRepresentation::kWord64);
CheckTwoChanges(
IrOpcode::kChangeFloat32ToFloat64, IrOpcode::kCheckedFloat64ToInt64,
@@ -462,7 +466,8 @@ TEST(Word64) {
CheckChange(IrOpcode::kChangeTaggedToInt64, MachineRepresentation::kTagged,
TypeCache::Get()->kSafeInteger, MachineRepresentation::kWord64);
CheckChange(IrOpcode::kChangeTaggedToInt64, MachineRepresentation::kTagged,
- TypeCache::Get()->kInt64, MachineRepresentation::kWord64);
+ TypeCache::Get()->kDoubleRepresentableInt64,
+ MachineRepresentation::kWord64);
CheckChange(IrOpcode::kChangeTaggedSignedToInt64,
MachineRepresentation::kTaggedSigned, Type::SignedSmall(),
MachineRepresentation::kWord64);
diff --git a/deps/v8/test/cctest/compiler/test-run-machops.cc b/deps/v8/test/cctest/compiler/test-run-machops.cc
index 3160848b68..308b00cb8a 100644
--- a/deps/v8/test/cctest/compiler/test-run-machops.cc
+++ b/deps/v8/test/cctest/compiler/test-run-machops.cc
@@ -400,6 +400,132 @@ TEST(RunWord64Popcnt) {
#endif // V8_TARGET_ARCH_64_BIT
+TEST(RunWord32Select) {
+ BufferedRawMachineAssemblerTester<int32_t> m(
+ MachineType::Int32(), MachineType::Int32(), MachineType::Int32());
+ if (!m.machine()->Word32Select().IsSupported()) {
+ return;
+ }
+
+ Node* cmp = m.Word32Equal(m.Parameter(2), m.Int32Constant(0));
+ m.Return(m.Word32Select(cmp, m.Parameter(0), m.Parameter(1)));
+ constexpr int input1 = 16;
+ constexpr int input2 = 3443;
+
+ for (int i = 0; i < 2; ++i) {
+ int expected = i == 0 ? input1 : input2;
+ CHECK_EQ(expected, m.Call(input1, input2, i));
+ }
+}
+
+TEST(RunWord64Select) {
+ BufferedRawMachineAssemblerTester<int64_t> m(
+ MachineType::Int64(), MachineType::Int64(), MachineType::Int32());
+ if (!m.machine()->Word64Select().IsSupported()) {
+ return;
+ }
+
+ Node* cmp = m.Word32Equal(m.Parameter(2), m.Int32Constant(0));
+ m.Return(m.Word64Select(cmp, m.Parameter(0), m.Parameter(1)));
+ constexpr int64_t input1 = 16;
+ constexpr int64_t input2 = 0x123456789abc;
+
+ for (int i = 0; i < 2; ++i) {
+ int64_t expected = i == 0 ? input1 : input2;
+ CHECK_EQ(expected, m.Call(input1, input2, i));
+ }
+}
+
+TEST(RunSelectUnorderedEqual) {
+ BufferedRawMachineAssemblerTester<int64_t> m(
+ MachineType::Int64(), MachineType::Int64(), MachineType::Float32());
+ if (!m.machine()->Word64Select().IsSupported()) {
+ return;
+ }
+
+ Node* cmp = m.Float32Equal(m.Parameter(2), m.Float32Constant(0));
+ m.Return(m.Word64Select(cmp, m.Parameter(0), m.Parameter(1)));
+ constexpr int64_t input1 = 16;
+ constexpr int64_t input2 = 0x123456789abc;
+
+ CHECK_EQ(input1, m.Call(input1, input2, float{0}));
+ CHECK_EQ(input2, m.Call(input1, input2, float{1}));
+ CHECK_EQ(input2, m.Call(input1, input2, std::nanf("")));
+}
+
+TEST(RunSelectUnorderedNotEqual) {
+ BufferedRawMachineAssemblerTester<int64_t> m(
+ MachineType::Int64(), MachineType::Int64(), MachineType::Float32());
+ if (!m.machine()->Word64Select().IsSupported()) {
+ return;
+ }
+
+ Node* cmp = m.Float32NotEqual(m.Parameter(2), m.Float32Constant(0));
+ m.Return(m.Word64Select(cmp, m.Parameter(0), m.Parameter(1)));
+ constexpr int64_t input1 = 16;
+ constexpr int64_t input2 = 0x123456789abc;
+
+ CHECK_EQ(input2, m.Call(input1, input2, float{0}));
+ CHECK_EQ(input1, m.Call(input1, input2, float{1}));
+ CHECK_EQ(input1, m.Call(input1, input2, std::nanf("")));
+}
+
+namespace {
+void FooForSelect() {}
+} // namespace
+
+TEST(RunWord32SelectWithMemoryInput) {
+ BufferedRawMachineAssemblerTester<int32_t> m(MachineType::Int32(),
+ MachineType::Int32());
+ if (!m.machine()->Word32Select().IsSupported()) {
+ return;
+ }
+
+ // Test that the generated code also works with values spilled on the stack.
+
+ auto* foo_ptr = &FooForSelect;
+ constexpr int input1 = 16;
+ int input2 = 3443;
+ // Load {value2} before the function call so that it gets spilled.
+ Node* value2 = m.LoadFromPointer(&input2, MachineType::Int32());
+ Node* function = m.LoadFromPointer(&foo_ptr, MachineType::Pointer());
+ // Call a function so that {value2} gets spilled on the stack.
+ m.CallCFunction(function, MachineType::Int32());
+ Node* cmp = m.Word32Equal(m.Parameter(1), m.Int32Constant(0));
+ m.Return(m.Word32Select(cmp, m.Parameter(0), value2));
+
+ for (int i = 0; i < 2; ++i) {
+ int32_t expected = i == 0 ? input1 : input2;
+ CHECK_EQ(expected, m.Call(input1, i));
+ }
+}
+
+TEST(RunWord64SelectWithMemoryInput) {
+ BufferedRawMachineAssemblerTester<int64_t> m(MachineType::Int64(),
+ MachineType::Int32());
+ if (!m.machine()->Word64Select().IsSupported()) {
+ return;
+ }
+
+ // Test that the generated code also works with values spilled on the stack.
+
+ auto* foo_ptr = &FooForSelect;
+ constexpr int64_t input1 = 16;
+ int64_t input2 = 0x12345678ABCD;
+ // Load {value2} before the function call so that it gets spilled.
+ Node* value2 = m.LoadFromPointer(&input2, MachineType::Int64());
+ Node* function = m.LoadFromPointer(&foo_ptr, MachineType::Pointer());
+ // Call a function so that {value2} gets spilled on the stack.
+ m.CallCFunction(function, MachineType::Int32());
+ Node* cmp = m.Word32Equal(m.Parameter(1), m.Int32Constant(0));
+ m.Return(m.Word64Select(cmp, m.Parameter(0), value2));
+
+ for (int i = 0; i < 2; ++i) {
+ int64_t expected = i == 0 ? input1 : input2;
+ CHECK_EQ(expected, m.Call(input1, i));
+ }
+}
+
TEST(RunFloat32SelectRegFloatCompare) {
BufferedRawMachineAssemblerTester<float> m(MachineType::Float32(),
MachineType::Float32());
diff --git a/deps/v8/test/cctest/compiler/test-verify-type.cc b/deps/v8/test/cctest/compiler/test-verify-type.cc
new file mode 100644
index 0000000000..b9b584dddc
--- /dev/null
+++ b/deps/v8/test/cctest/compiler/test-verify-type.cc
@@ -0,0 +1,70 @@
+// Copyright 2021 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.
+
+#include "src/compiler/js-operator.h"
+#include "test/cctest/compiler/node-observer-tester.h"
+#include "test/common/flag-utils.h"
+
+namespace v8 {
+namespace internal {
+namespace compiler {
+
+TEST(TestVerifyType) {
+ FlagScope<bool> allow_natives_syntax(&i::FLAG_allow_natives_syntax, true);
+ HandleAndZoneScope handle_scope;
+ Isolate* isolate = handle_scope.main_isolate();
+ Zone* zone = handle_scope.main_zone();
+
+ const char* source =
+ "function test(b) {\n"
+ " let x = -8;\n"
+ " if(b) x = 42;\n"
+ " return %ObserveNode(%VerifyType(x));\n"
+ "}\n"
+ "\n"
+ "%PrepareFunctionForOptimization(test);\n"
+ "test(false); test(true);\n"
+ "%OptimizeFunctionOnNextCall(test);\n"
+ "test(false);\n";
+
+ bool js_intrinsic_lowering_happened = false;
+ bool simplified_lowering_happened = false;
+
+ ModificationObserver observer(
+ [](const Node* node) {
+ CHECK_EQ(node->opcode(), IrOpcode::kJSCallRuntime);
+ CHECK_EQ(CallRuntimeParametersOf(node->op()).id(),
+ Runtime::kVerifyType);
+ },
+ [&](const Node* node, const ObservableNodeState& old_state) {
+ if (old_state.opcode() == IrOpcode::kJSCallRuntime &&
+ node->opcode() == IrOpcode::kVerifyType) {
+ // CallRuntime is lowered to VerifyType in JSIntrinsicLowering.
+ js_intrinsic_lowering_happened = true;
+ return NodeObserver::Observation::kContinue;
+ } else if (old_state.opcode() == IrOpcode::kVerifyType &&
+ node->opcode() == IrOpcode::kAssertType) {
+ // VerifyType is lowered to AssertType in SimplifiedLowering.
+ // AssertType asserts for the type of its value input.
+ Type asserted_type = OpParameter<Type>(node->op());
+ CHECK(asserted_type.Equals(Type::Range(-8, 42, zone)));
+ simplified_lowering_happened = true;
+ return NodeObserver::Observation::kStop;
+ } else {
+ // Every other lowering would be wrong, so fail the test.
+ UNREACHABLE();
+ }
+ return NodeObserver::Observation::kContinue;
+ });
+
+ compiler::ObserveNodeScope scope(isolate, &observer);
+ CompileRun(source);
+
+ CHECK(js_intrinsic_lowering_happened);
+ CHECK(simplified_lowering_happened);
+}
+
+} // namespace compiler
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/test/cctest/heap/heap-utils.cc b/deps/v8/test/cctest/heap/heap-utils.cc
index 24f04e9eed..f94bc1fa5e 100644
--- a/deps/v8/test/cctest/heap/heap-utils.cc
+++ b/deps/v8/test/cctest/heap/heap-utils.cc
@@ -122,7 +122,8 @@ std::vector<Handle<FixedArray>> CreatePadding(Heap* heap, int padding_size,
CHECK((allocation == AllocationType::kYoung &&
heap->new_space()->Contains(*handles.back())) ||
(allocation == AllocationType::kOld &&
- heap->InOldSpace(*handles.back())));
+ heap->InOldSpace(*handles.back())) ||
+ FLAG_single_generation);
free_memory -= handles.back()->Size();
}
return handles;
diff --git a/deps/v8/test/cctest/heap/test-array-buffer-tracker.cc b/deps/v8/test/cctest/heap/test-array-buffer-tracker.cc
index d3eb8c84ec..6465c74870 100644
--- a/deps/v8/test/cctest/heap/test-array-buffer-tracker.cc
+++ b/deps/v8/test/cctest/heap/test-array-buffer-tracker.cc
@@ -269,6 +269,10 @@ TEST(ArrayBuffer_LivePromotion) {
Handle<JSArrayBuffer> buf = v8::Utils::OpenHandle(*ab);
root->set(0, *buf); // Buffer that should be promoted as live.
}
+ // Store array in Global such that it is part of the root set when
+ // starting incremental marking.
+ v8::Global<Value> global_root(CcTest::isolate(),
+ Utils::ToLocal(Handle<Object>::cast(root)));
heap::SimulateIncrementalMarking(heap, true);
CHECK(IsTracked(heap, JSArrayBuffer::cast(root->get(0))));
heap::GcAndSweep(heap, NEW_SPACE);
@@ -388,26 +392,29 @@ UNINITIALIZED_TEST(ArrayBuffer_SemiSpaceCopyMultipleTasks) {
}
TEST(ArrayBuffer_ExternalBackingStoreSizeIncreases) {
+ if (FLAG_single_generation) return;
CcTest::InitializeVM();
LocalContext env;
v8::Isolate* isolate = env->GetIsolate();
Heap* heap = reinterpret_cast<Isolate*>(isolate)->heap();
ExternalBackingStoreType type = ExternalBackingStoreType::kArrayBuffer;
- const size_t backing_store_before =
- heap->new_space()->ExternalBackingStoreBytes(type);
+ const Space* space = FLAG_incremental_marking
+ ? static_cast<Space*>(heap->new_space())
+ : static_cast<Space*>(heap->old_space());
+ const size_t backing_store_before = space->ExternalBackingStoreBytes(type);
{
const size_t kArraybufferSize = 117;
v8::HandleScope handle_scope(isolate);
Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(isolate, kArraybufferSize);
USE(ab);
- const size_t backing_store_after =
- heap->new_space()->ExternalBackingStoreBytes(type);
+ const size_t backing_store_after = space->ExternalBackingStoreBytes(type);
CHECK_EQ(kArraybufferSize, backing_store_after - backing_store_before);
}
}
TEST(ArrayBuffer_ExternalBackingStoreSizeDecreases) {
+ if (FLAG_single_generation) return;
FLAG_concurrent_array_buffer_sweeping = false;
CcTest::InitializeVM();
LocalContext env;
diff --git a/deps/v8/test/cctest/heap/test-concurrent-allocation.cc b/deps/v8/test/cctest/heap/test-concurrent-allocation.cc
index 1a664b9562..f819383815 100644
--- a/deps/v8/test/cctest/heap/test-concurrent-allocation.cc
+++ b/deps/v8/test/cctest/heap/test-concurrent-allocation.cc
@@ -340,6 +340,7 @@ class ConcurrentBlackAllocationThread final : public v8::base::Thread {
};
UNINITIALIZED_TEST(ConcurrentBlackAllocation) {
+ if (!FLAG_incremental_marking) return;
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
v8::Isolate* isolate = v8::Isolate::New(create_params);
@@ -399,6 +400,7 @@ class ConcurrentWriteBarrierThread final : public v8::base::Thread {
};
UNINITIALIZED_TEST(ConcurrentWriteBarrier) {
+ if (!FLAG_incremental_marking) return;
if (!FLAG_concurrent_marking) {
// The test requires concurrent marking barrier.
return;
@@ -463,6 +465,7 @@ class ConcurrentRecordRelocSlotThread final : public v8::base::Thread {
};
UNINITIALIZED_TEST(ConcurrentRecordRelocSlot) {
+ if (!FLAG_incremental_marking) return;
if (!FLAG_concurrent_marking) {
// The test requires concurrent marking barrier.
return;
diff --git a/deps/v8/test/cctest/heap/test-concurrent-marking.cc b/deps/v8/test/cctest/heap/test-concurrent-marking.cc
index 71d46e0827..c5bb234c70 100644
--- a/deps/v8/test/cctest/heap/test-concurrent-marking.cc
+++ b/deps/v8/test/cctest/heap/test-concurrent-marking.cc
@@ -104,6 +104,7 @@ TEST(ConcurrentMarkingPreemptAndReschedule) {
}
TEST(ConcurrentMarkingMarkedBytes) {
+ if (!FLAG_incremental_marking) return;
if (!i::FLAG_concurrent_marking) return;
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
@@ -112,12 +113,19 @@ TEST(ConcurrentMarkingMarkedBytes) {
Handle<FixedArray> root = isolate->factory()->NewFixedArray(1000000);
CcTest::CollectAllGarbage();
if (!heap->incremental_marking()->IsStopped()) return;
+
+ // Store array in Global such that it is part of the root set when
+ // starting incremental marking.
+ v8::Global<Value> global_root(CcTest::isolate(),
+ Utils::ToLocal(Handle<Object>::cast(root)));
+
heap::SimulateIncrementalMarking(heap, false);
heap->concurrent_marking()->Join();
CHECK_GE(heap->concurrent_marking()->TotalMarkedBytes(), root->Size());
}
UNINITIALIZED_TEST(ConcurrentMarkingStoppedOnTeardown) {
+ if (!FLAG_incremental_marking) return;
if (!i::FLAG_concurrent_marking) return;
v8::Isolate::CreateParams create_params;
diff --git a/deps/v8/test/cctest/heap/test-embedder-tracing.cc b/deps/v8/test/cctest/heap/test-embedder-tracing.cc
index 6b5ebb4bc8..77d1a2dd00 100644
--- a/deps/v8/test/cctest/heap/test-embedder-tracing.cc
+++ b/deps/v8/test/cctest/heap/test-embedder-tracing.cc
@@ -7,7 +7,9 @@
#include "include/v8.h"
#include "src/api/api-inl.h"
+#include "src/heap/embedder-tracing.h"
#include "src/heap/heap-inl.h"
+#include "src/heap/heap.h"
#include "src/heap/safepoint.h"
#include "src/objects/module.h"
#include "src/objects/objects-inl.h"
@@ -251,6 +253,7 @@ TEST(FinalizeTracingIsNoopWhenNotMarking) {
}
TEST(FinalizeTracingWhenMarking) {
+ if (!FLAG_incremental_marking) return;
ManualGCScope manual_gc;
CcTest::InitializeVM();
v8::Isolate* isolate = CcTest::isolate();
@@ -709,6 +712,7 @@ TEST(TracedGlobalSetFinalizationCallbackMarkSweep) {
TEST(TracePrologueCallingIntoV8WriteBarrier) {
// Regression test: https://crbug.com/940003
+ if (!FLAG_incremental_marking) return;
ManualGCScope manual_gc;
CcTest::InitializeVM();
v8::Isolate* isolate = CcTest::isolate();
@@ -959,7 +963,10 @@ V8_NOINLINE void TracedReferenceNotifyEmptyStackTest(
v8::Global<v8::Object> observer;
CreateTracedReferenceInDeepStack(isolate, &observer);
CHECK(!observer.IsEmpty());
- tracer->NotifyEmptyEmbedderStack();
+ reinterpret_cast<i::Isolate*>(isolate)
+ ->heap()
+ ->local_embedder_heap_tracer()
+ ->NotifyEmptyEmbedderStack();
heap::InvokeMarkSweep();
CHECK(observer.IsEmpty());
}
diff --git a/deps/v8/test/cctest/heap/test-external-string-tracker.cc b/deps/v8/test/cctest/heap/test-external-string-tracker.cc
index 001ae25c20..14575756df 100644
--- a/deps/v8/test/cctest/heap/test-external-string-tracker.cc
+++ b/deps/v8/test/cctest/heap/test-external-string-tracker.cc
@@ -130,6 +130,7 @@ TEST(ExternalString_ExternalBackingStoreSizeIncreasesMarkCompact) {
}
TEST(ExternalString_ExternalBackingStoreSizeIncreasesAfterExternalization) {
+ if (FLAG_single_generation) return;
ManualGCScope manual_gc_scope;
CcTest::InitializeVM();
LocalContext env;
diff --git a/deps/v8/test/cctest/heap/test-heap.cc b/deps/v8/test/cctest/heap/test-heap.cc
index d8ad6e6554..b9d6a24a46 100644
--- a/deps/v8/test/cctest/heap/test-heap.cc
+++ b/deps/v8/test/cctest/heap/test-heap.cc
@@ -64,6 +64,7 @@
#include "src/objects/transitions.h"
#include "src/regexp/regexp.h"
#include "src/snapshot/snapshot.h"
+#include "src/tracing/tracing-category-observer.h"
#include "src/utils/ostreams.h"
#include "test/cctest/cctest.h"
#include "test/cctest/heap/heap-tester.h"
@@ -364,6 +365,8 @@ TEST(Tagging) {
TEST(GarbageCollection) {
+ if (FLAG_single_generation) return;
+
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
Factory* factory = isolate->factory();
@@ -1264,10 +1267,10 @@ UNINITIALIZED_TEST(Regress10843) {
// Tests that spill slots from optimized code don't have weak pointers.
TEST(Regress10774) {
+ if (FLAG_single_generation) return;
i::FLAG_allow_natives_syntax = true;
i::FLAG_turboprop = true;
i::FLAG_turbo_dynamic_map_checks = true;
- i::FLAG_turbo_direct_heap_access = true;
#ifdef VERIFY_HEAP
i::FLAG_verify_heap = true;
#endif
@@ -1324,6 +1327,7 @@ TEST(Regress10774) {
#ifndef V8_LITE_MODE
TEST(TestOptimizeAfterBytecodeFlushingCandidate) {
+ if (FLAG_single_generation) return;
FLAG_opt = true;
FLAG_always_opt = false;
#if ENABLE_SPARKPLUG
@@ -1555,7 +1559,7 @@ TEST(TestInternalWeakLists) {
// Some flags turn Scavenge collections into Mark-sweep collections
// and hence are incompatible with this test case.
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking)
+ FLAG_stress_incremental_marking || FLAG_single_generation)
return;
FLAG_retain_maps_for_n_gc = 0;
@@ -1802,6 +1806,7 @@ static Address AlignNewSpace(AllocationAlignment alignment, int offset) {
TEST(TestAlignedAllocation) {
+ if (FLAG_single_generation) return;
// Double misalignment is 4 on 32-bit platforms or when pointer compression
// is enabled, 0 on 64-bit ones when pointer compression is disabled.
const intptr_t double_misalignment = kDoubleSize - kTaggedSize;
@@ -1924,6 +1929,7 @@ TEST(TestAlignedOverAllocation) {
}
TEST(HeapNumberAlignment) {
+ if (!FLAG_allocation_site_pretenuring) return;
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
Factory* factory = isolate->factory();
@@ -2303,6 +2309,11 @@ TEST(InstanceOfStubWriteBarrier) {
v8::HandleScope outer_scope(CcTest::isolate());
v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext();
+ // Store native context in global as well to make it part of the root set when
+ // starting incremental marking. This will ensure that function will be part
+ // of the transitive closure during incremental marking.
+ v8::Global<v8::Context> global_ctx(CcTest::isolate(), ctx);
+
{
v8::HandleScope scope(CcTest::isolate());
CompileRun(
@@ -2492,7 +2503,7 @@ TEST(OptimizedPretenuringAllocationFolding) {
CcTest::InitializeVM();
if (!CcTest::i_isolate()->use_optimizer() || FLAG_always_opt) return;
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking)
+ FLAG_stress_incremental_marking || FLAG_single_generation)
return;
v8::HandleScope scope(CcTest::isolate());
v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext();
@@ -2542,7 +2553,7 @@ TEST(OptimizedPretenuringObjectArrayLiterals) {
CcTest::InitializeVM();
if (!CcTest::i_isolate()->use_optimizer() || FLAG_always_opt) return;
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking) {
+ FLAG_stress_incremental_marking || FLAG_single_generation) {
return;
}
v8::HandleScope scope(CcTest::isolate());
@@ -2623,7 +2634,7 @@ TEST(OptimizedPretenuringMixedInObjectProperties) {
CcTest::InitializeVM();
if (!CcTest::i_isolate()->use_optimizer() || FLAG_always_opt) return;
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking)
+ FLAG_stress_incremental_marking || FLAG_single_generation)
return;
v8::HandleScope scope(CcTest::isolate());
@@ -2670,7 +2681,7 @@ TEST(OptimizedPretenuringDoubleArrayProperties) {
CcTest::InitializeVM();
if (!CcTest::i_isolate()->use_optimizer() || FLAG_always_opt) return;
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking)
+ FLAG_stress_incremental_marking || FLAG_single_generation)
return;
v8::HandleScope scope(CcTest::isolate());
@@ -2709,7 +2720,7 @@ TEST(OptimizedPretenuringDoubleArrayLiterals) {
CcTest::InitializeVM();
if (!CcTest::i_isolate()->use_optimizer() || FLAG_always_opt) return;
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking)
+ FLAG_stress_incremental_marking || FLAG_single_generation)
return;
v8::HandleScope scope(CcTest::isolate());
@@ -2747,7 +2758,7 @@ TEST(OptimizedPretenuringNestedMixedArrayLiterals) {
CcTest::InitializeVM();
if (!CcTest::i_isolate()->use_optimizer() || FLAG_always_opt) return;
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking)
+ FLAG_stress_incremental_marking || FLAG_single_generation)
return;
v8::HandleScope scope(CcTest::isolate());
v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext();
@@ -2797,7 +2808,7 @@ TEST(OptimizedPretenuringNestedObjectLiterals) {
CcTest::InitializeVM();
if (!CcTest::i_isolate()->use_optimizer() || FLAG_always_opt) return;
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking)
+ FLAG_stress_incremental_marking || FLAG_single_generation)
return;
v8::HandleScope scope(CcTest::isolate());
v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext();
@@ -2847,7 +2858,7 @@ TEST(OptimizedPretenuringNestedDoubleLiterals) {
CcTest::InitializeVM();
if (!CcTest::i_isolate()->use_optimizer() || FLAG_always_opt) return;
if (FLAG_gc_global || FLAG_stress_compaction ||
- FLAG_stress_incremental_marking)
+ FLAG_stress_incremental_marking || FLAG_single_generation)
return;
v8::HandleScope scope(CcTest::isolate());
v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext();
@@ -3839,10 +3850,12 @@ static void TestFillersFromPersistentHandles(bool promote) {
// GC should retain the trimmed array but drop all of the three fillers.
CcTest::CollectGarbage(NEW_SPACE);
- if (promote) {
- CHECK(heap->InOldSpace(*tail));
- } else {
- CHECK(Heap::InYoungGeneration(*tail));
+ if (!FLAG_single_generation) {
+ if (promote) {
+ CHECK(heap->InOldSpace(*tail));
+ } else {
+ CHECK(Heap::InYoungGeneration(*tail));
+ }
}
CHECK_EQ(n - 6, (*tail).length());
CHECK(!filler_1->IsHeapObject());
@@ -3851,12 +3864,12 @@ static void TestFillersFromPersistentHandles(bool promote) {
}
TEST(DoNotEvacuateFillersFromPersistentHandles) {
- if (FLAG_single_generation) return;
+ if (FLAG_single_generation || FLAG_move_object_start) return;
TestFillersFromPersistentHandles(false /*promote*/);
}
TEST(DoNotPromoteFillersFromPersistentHandles) {
- if (FLAG_single_generation) return;
+ if (FLAG_single_generation || FLAG_move_object_start) return;
TestFillersFromPersistentHandles(true /*promote*/);
}
@@ -4427,7 +4440,6 @@ static int GetCodeChainLength(Code code) {
TEST(NextCodeLinkIsWeak) {
FLAG_always_opt = false;
FLAG_allow_natives_syntax = true;
- FLAG_turbo_nci = false; // Additional compile tasks muck with test logic.
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
v8::internal::Heap* heap = CcTest::heap();
@@ -4458,7 +4470,6 @@ TEST(NextCodeLinkIsWeak) {
TEST(NextCodeLinkInCodeDataContainerIsCleared) {
FLAG_always_opt = false;
FLAG_allow_natives_syntax = true;
- FLAG_turbo_nci = false; // Additional compile tasks muck with test logic.
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
v8::internal::Heap* heap = CcTest::heap();
@@ -5219,6 +5230,10 @@ void CheckMapRetainingFor(int n) {
Handle<Context> context = Utils::OpenHandle(*ctx);
CHECK(context->IsNativeContext());
Handle<NativeContext> native_context = Handle<NativeContext>::cast(context);
+ // This global is used to visit the object's constructor alive when starting
+ // incremental marking. The native context keeps the constructor alive. The
+ // constructor needs to be alive to retain the map.
+ v8::Global<v8::Context> global_ctxt(CcTest::isolate(), ctx);
ctx->Enter();
Handle<WeakFixedArray> array_with_map =
@@ -5703,11 +5718,17 @@ TEST(Regress598319) {
get().set(i, *tmp);
}
}
+ global_root.Reset(CcTest::isolate(),
+ Utils::ToLocal(Handle<Object>::cast(root)));
}
FixedArray get() { return FixedArray::cast(root->get(0)); }
Handle<FixedArray> root;
+
+ // Store array in global as well to make it part of the root set when
+ // starting incremental marking.
+ v8::Global<Value> global_root;
} arr(isolate, kNumberOfObjects);
CHECK_EQ(arr.get().length(), kNumberOfObjects);
@@ -5760,7 +5781,7 @@ TEST(Regress598319) {
v8::HandleScope scope(CcTest::isolate());
Handle<JSArray> js_array = isolate->factory()->NewJSArrayWithElements(
Handle<FixedArray>(arr.get(), isolate));
- js_array->GetElementsAccessor()->Shift(js_array);
+ js_array->GetElementsAccessor()->Shift(js_array).Check();
}
break;
}
@@ -6231,7 +6252,8 @@ TEST(UncommitUnusedLargeObjectMemory) {
Handle<FixedArray> array =
isolate->factory()->NewFixedArray(200000, AllocationType::kOld);
MemoryChunk* chunk = MemoryChunk::FromHeapObject(*array);
- CHECK(chunk->owner_identity() == LO_SPACE);
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ chunk->owner_identity() == LO_SPACE);
intptr_t size_before = array->Size();
size_t committed_memory_before = chunk->CommittedPhysicalMemory();
@@ -6422,6 +6444,7 @@ TEST(RememberedSet_OldToOld) {
}
TEST(RememberedSetRemoveRange) {
+ if (FLAG_single_generation) return;
CcTest::InitializeVM();
v8::HandleScope scope(CcTest::isolate());
Heap* heap = CcTest::heap();
@@ -6430,7 +6453,8 @@ TEST(RememberedSetRemoveRange) {
Handle<FixedArray> array = isolate->factory()->NewFixedArray(
Page::kPageSize / kTaggedSize, AllocationType::kOld);
MemoryChunk* chunk = MemoryChunk::FromHeapObject(*array);
- CHECK(chunk->owner_identity() == LO_SPACE);
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ chunk->owner_identity() == LO_SPACE);
Address start = array->address();
// Maps slot to boolean indicator of whether the slot should be in the set.
std::map<Address, bool> slots;
@@ -6569,6 +6593,7 @@ HEAP_TEST(RegressMissingWriteBarrierInAllocate) {
}
HEAP_TEST(MarkCompactEpochCounter) {
+ if (!FLAG_incremental_marking) return;
ManualGCScope manual_gc_scope;
CcTest::InitializeVM();
v8::HandleScope scope(CcTest::isolate());
@@ -6612,7 +6637,7 @@ Isolate* oom_isolate = nullptr;
void OOMCallback(const char* location, bool is_heap_oom) {
Heap* heap = oom_isolate->heap();
- size_t kSlack = heap->new_space()->Capacity();
+ size_t kSlack = heap->new_space() ? heap->new_space()->Capacity() : 0;
CHECK_LE(heap->OldGenerationCapacity(), kHeapLimit + kSlack);
CHECK_LE(heap->memory_allocator()->Size(), heap->MaxReserved() + kSlack);
base::OS::ExitProcess(0);
@@ -6775,8 +6800,10 @@ size_t NearHeapLimitCallback(void* raw_state, size_t current_heap_limit,
state->oom_triggered = true;
state->old_generation_capacity_at_oom = heap->OldGenerationCapacity();
state->memory_allocator_size_at_oom = heap->memory_allocator()->Size();
- state->new_space_capacity_at_oom = heap->new_space()->Capacity();
- state->new_lo_space_size_at_oom = heap->new_lo_space()->Size();
+ state->new_space_capacity_at_oom =
+ heap->new_space() ? heap->new_space()->Capacity() : 0;
+ state->new_lo_space_size_at_oom =
+ heap->new_lo_space() ? heap->new_lo_space()->Size() : 0;
state->current_heap_limit = current_heap_limit;
state->initial_heap_limit = initial_heap_limit;
return initial_heap_limit + 100 * MB;
@@ -6935,6 +6962,7 @@ TEST(Regress8014) {
}
TEST(Regress8617) {
+ if (!FLAG_incremental_marking) return;
ManualGCScope manual_gc_scope;
FLAG_manual_evacuation_candidates_selection = true;
LocalContext env;
@@ -6977,6 +7005,7 @@ TEST(Regress8617) {
}
HEAP_TEST(MemoryReducerActivationForSmallHeaps) {
+ if (FLAG_single_generation) return;
ManualGCScope manual_gc_scope;
LocalContext env;
Isolate* isolate = CcTest::i_isolate();
@@ -7092,8 +7121,7 @@ UNINITIALIZED_TEST(HeapLimit) {
TEST(NoCodeRangeInJitlessMode) {
if (!FLAG_jitless) return;
CcTest::InitializeVM();
- CHECK(
- CcTest::i_isolate()->heap()->memory_allocator()->code_range().is_empty());
+ CHECK(CcTest::i_isolate()->heap()->code_region().is_empty());
}
TEST(Regress978156) {
@@ -7146,6 +7174,7 @@ TEST(GarbageCollectionWithLocalHeap) {
}
TEST(Regress10698) {
+ if (!FLAG_incremental_marking) return;
CcTest::InitializeVM();
Heap* heap = CcTest::i_isolate()->heap();
Factory* factory = CcTest::i_isolate()->factory();
@@ -7187,7 +7216,7 @@ class TestAllocationTracker : public HeapObjectAllocationTracker {
HEAP_TEST(CodeLargeObjectSpace) {
Heap* heap = CcTest::heap();
int size_in_bytes =
- MemoryChunkLayout::MaxRegularCodeObjectSize() + kTaggedSize;
+ Heap::MaxRegularHeapObjectSize(AllocationType::kCode) + kTaggedSize;
TestAllocationTracker allocation_tracker{size_in_bytes};
heap->AddHeapObjectAllocationTracker(&allocation_tracker);
@@ -7221,7 +7250,7 @@ UNINITIALIZED_HEAP_TEST(CodeLargeObjectSpace64k) {
// Allocate a regular code object.
{
int size_in_bytes =
- MemoryChunkLayout::MaxRegularCodeObjectSize() - kTaggedSize;
+ Heap::MaxRegularHeapObjectSize(AllocationType::kCode) - kTaggedSize;
TestAllocationTracker allocation_tracker{size_in_bytes};
heap->AddHeapObjectAllocationTracker(&allocation_tracker);
@@ -7243,7 +7272,7 @@ UNINITIALIZED_HEAP_TEST(CodeLargeObjectSpace64k) {
// Allocate a large code object.
{
int size_in_bytes =
- MemoryChunkLayout::MaxRegularCodeObjectSize() + kTaggedSize;
+ Heap::MaxRegularHeapObjectSize(AllocationType::kCode) + kTaggedSize;
TestAllocationTracker allocation_tracker{size_in_bytes};
heap->AddHeapObjectAllocationTracker(&allocation_tracker);
@@ -7272,7 +7301,8 @@ TEST(IsPendingAllocationNewSpace) {
Factory* factory = isolate->factory();
HandleScope handle_scope(isolate);
Handle<FixedArray> object = factory->NewFixedArray(5, AllocationType::kYoung);
- CHECK(heap->IsPendingAllocation(*object));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ heap->IsPendingAllocation(*object));
heap->PublishPendingAllocations();
CHECK(!heap->IsPendingAllocation(*object));
}
@@ -7285,7 +7315,8 @@ TEST(IsPendingAllocationNewLOSpace) {
HandleScope handle_scope(isolate);
Handle<FixedArray> object = factory->NewFixedArray(
FixedArray::kMaxRegularLength + 1, AllocationType::kYoung);
- CHECK(heap->IsPendingAllocation(*object));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ heap->IsPendingAllocation(*object));
heap->PublishPendingAllocations();
CHECK(!heap->IsPendingAllocation(*object));
}
@@ -7297,7 +7328,8 @@ TEST(IsPendingAllocationOldSpace) {
Factory* factory = isolate->factory();
HandleScope handle_scope(isolate);
Handle<FixedArray> object = factory->NewFixedArray(5, AllocationType::kOld);
- CHECK(heap->IsPendingAllocation(*object));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ heap->IsPendingAllocation(*object));
heap->PublishPendingAllocations();
CHECK(!heap->IsPendingAllocation(*object));
}
@@ -7310,7 +7342,8 @@ TEST(IsPendingAllocationLOSpace) {
HandleScope handle_scope(isolate);
Handle<FixedArray> object = factory->NewFixedArray(
FixedArray::kMaxRegularLength + 1, AllocationType::kOld);
- CHECK(heap->IsPendingAllocation(*object));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ heap->IsPendingAllocation(*object));
heap->PublishPendingAllocations();
CHECK(!heap->IsPendingAllocation(*object));
}
@@ -7350,6 +7383,18 @@ TEST(Regress10900) {
CcTest::CollectAllAvailableGarbage();
}
+namespace {
+void GenerateGarbage() {
+ const char* source =
+ "let roots = [];"
+ "for (let i = 0; i < 100; i++) roots.push(new Array(1000).fill(0));"
+ "roots.push(new Array(1000000).fill(0));"
+ "roots;";
+ CompileRun(source);
+}
+
+} // anonymous namespace
+
TEST(Regress11181) {
FLAG_always_compact = true;
CcTest::InitializeVM();
@@ -7357,16 +7402,71 @@ TEST(Regress11181) {
v8::tracing::TracingCategoryObserver::ENABLED_BY_NATIVE,
std::memory_order_relaxed);
v8::HandleScope scope(CcTest::isolate());
- const char* source =
- "let roots = [];"
- "for (let i = 0; i < 100; i++) roots.push(new Array(1000).fill(0));"
- "roots.push(new Array(1000000).fill(0));"
- "roots;";
- CompileRun(source);
+ GenerateGarbage();
CcTest::CollectAllAvailableGarbage();
TracingFlags::runtime_stats.store(0, std::memory_order_relaxed);
}
+TEST(LongTaskStatsFullAtomic) {
+ CcTest::InitializeVM();
+ v8::Isolate* isolate = CcTest::isolate();
+ v8::HandleScope scope(CcTest::isolate());
+ GenerateGarbage();
+ v8::metrics::LongTaskStats::Reset(isolate);
+ CHECK_EQ(0u, v8::metrics::LongTaskStats::Get(isolate)
+ .gc_full_atomic_wall_clock_duration_us);
+ for (int i = 0; i < 10; ++i) {
+ CcTest::CollectAllAvailableGarbage();
+ }
+ CHECK_LT(0u, v8::metrics::LongTaskStats::Get(isolate)
+ .gc_full_atomic_wall_clock_duration_us);
+ v8::metrics::LongTaskStats::Reset(isolate);
+ CHECK_EQ(0u, v8::metrics::LongTaskStats::Get(isolate)
+ .gc_full_atomic_wall_clock_duration_us);
+}
+
+TEST(LongTaskStatsFullIncremental) {
+ if (!FLAG_incremental_marking) return;
+ CcTest::InitializeVM();
+ v8::Isolate* isolate = CcTest::isolate();
+ v8::HandleScope scope(CcTest::isolate());
+ GenerateGarbage();
+ v8::metrics::LongTaskStats::Reset(isolate);
+ CHECK_EQ(0u, v8::metrics::LongTaskStats::Get(isolate)
+ .gc_full_incremental_wall_clock_duration_us);
+ for (int i = 0; i < 10; ++i) {
+ heap::SimulateIncrementalMarking(CcTest::heap());
+ CcTest::CollectAllAvailableGarbage();
+ }
+ CHECK_LT(0u, v8::metrics::LongTaskStats::Get(isolate)
+ .gc_full_incremental_wall_clock_duration_us);
+ v8::metrics::LongTaskStats::Reset(isolate);
+ CHECK_EQ(0u, v8::metrics::LongTaskStats::Get(isolate)
+ .gc_full_incremental_wall_clock_duration_us);
+}
+
+TEST(LongTaskStatsYoung) {
+ if (FLAG_single_generation) return;
+ CcTest::InitializeVM();
+ v8::Isolate* isolate = CcTest::isolate();
+ v8::HandleScope scope(CcTest::isolate());
+ GenerateGarbage();
+ v8::metrics::LongTaskStats::Reset(isolate);
+ CHECK_EQ(
+ 0u,
+ v8::metrics::LongTaskStats::Get(isolate).gc_young_wall_clock_duration_us);
+ for (int i = 0; i < 10; ++i) {
+ CcTest::CollectGarbage(NEW_SPACE);
+ }
+ CHECK_LT(
+ 0u,
+ v8::metrics::LongTaskStats::Get(isolate).gc_young_wall_clock_duration_us);
+ v8::metrics::LongTaskStats::Reset(isolate);
+ CHECK_EQ(
+ 0u,
+ v8::metrics::LongTaskStats::Get(isolate).gc_young_wall_clock_duration_us);
+}
+
} // namespace heap
} // namespace internal
} // namespace v8
diff --git a/deps/v8/test/cctest/heap/test-invalidated-slots.cc b/deps/v8/test/cctest/heap/test-invalidated-slots.cc
index af4ddfddfd..c212e37589 100644
--- a/deps/v8/test/cctest/heap/test-invalidated-slots.cc
+++ b/deps/v8/test/cctest/heap/test-invalidated-slots.cc
@@ -199,6 +199,7 @@ Handle<FixedArray> AllocateArrayOnEvacuationCandidate(Isolate* isolate,
}
HEAP_TEST(InvalidatedSlotsRightTrimFixedArray) {
+ if (!FLAG_incremental_marking) return;
FLAG_manual_evacuation_candidates_selection = true;
FLAG_parallel_compaction = false;
ManualGCScope manual_gc_scope;
@@ -230,6 +231,7 @@ HEAP_TEST(InvalidatedSlotsRightTrimFixedArray) {
}
HEAP_TEST(InvalidatedSlotsRightTrimLargeFixedArray) {
+ if (!FLAG_incremental_marking) return;
FLAG_manual_evacuation_candidates_selection = true;
FLAG_parallel_compaction = false;
ManualGCScope manual_gc_scope;
@@ -267,6 +269,7 @@ HEAP_TEST(InvalidatedSlotsRightTrimLargeFixedArray) {
}
HEAP_TEST(InvalidatedSlotsLeftTrimFixedArray) {
+ if (!FLAG_incremental_marking) return;
FLAG_manual_evacuation_candidates_selection = true;
FLAG_parallel_compaction = false;
ManualGCScope manual_gc_scope;
@@ -298,6 +301,7 @@ HEAP_TEST(InvalidatedSlotsLeftTrimFixedArray) {
}
HEAP_TEST(InvalidatedSlotsFastToSlow) {
+ if (!FLAG_incremental_marking) return;
FLAG_manual_evacuation_candidates_selection = true;
FLAG_parallel_compaction = false;
ManualGCScope manual_gc_scope;
diff --git a/deps/v8/test/cctest/heap/test-iterators.cc b/deps/v8/test/cctest/heap/test-iterators.cc
index 2e3f9aebbf..853cf705bd 100644
--- a/deps/v8/test/cctest/heap/test-iterators.cc
+++ b/deps/v8/test/cctest/heap/test-iterators.cc
@@ -75,7 +75,7 @@ TEST(HeapObjectIterator) {
for (HeapObject obj = iterator.Next(); !obj.is_null();
obj = iterator.Next()) {
- CHECK(!ReadOnlyHeap::Contains(obj));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap, !ReadOnlyHeap::Contains(obj));
CHECK(CcTest::heap()->Contains(obj));
if (sample_object == obj) seen_sample_object = true;
}
diff --git a/deps/v8/test/cctest/heap/test-mark-compact.cc b/deps/v8/test/cctest/heap/test-mark-compact.cc
index dc1771ce75..6183ae3218 100644
--- a/deps/v8/test/cctest/heap/test-mark-compact.cc
+++ b/deps/v8/test/cctest/heap/test-mark-compact.cc
@@ -427,6 +427,7 @@ UNINITIALIZED_TEST(RegressJoinThreadsOnIsolateDeinit) {
}
TEST(Regress5829) {
+ if (!FLAG_incremental_marking) return;
FLAG_stress_concurrent_allocation = false; // For SealCurrentObjects.
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
diff --git a/deps/v8/test/cctest/heap/test-memory-measurement.cc b/deps/v8/test/cctest/heap/test-memory-measurement.cc
index d5b03bbfa2..e4e8a60e5b 100644
--- a/deps/v8/test/cctest/heap/test-memory-measurement.cc
+++ b/deps/v8/test/cctest/heap/test-memory-measurement.cc
@@ -57,8 +57,6 @@ TEST(NativeContextInferrerJSObject) {
Handle<HeapObject> function = Handle<HeapObject>::cast(object);
NativeContextInferrer inferrer;
Address inferred_context = 0;
- // TODO(ulan): Enable this test once we have more precise native
- // context inference.
CHECK(inferrer.Infer(isolate, function->map(), *function, &inferred_context));
CHECK_EQ(native_context->ptr(), inferred_context);
}
diff --git a/deps/v8/test/cctest/heap/test-shared-heap.cc b/deps/v8/test/cctest/heap/test-shared-heap.cc
new file mode 100644
index 0000000000..95d2e0b957
--- /dev/null
+++ b/deps/v8/test/cctest/heap/test-shared-heap.cc
@@ -0,0 +1,91 @@
+// Copyright 2021 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.
+
+#include "include/v8.h"
+#include "src/common/globals.h"
+#include "src/handles/handles-inl.h"
+#include "src/heap/heap.h"
+#include "src/objects/heap-object.h"
+#include "test/cctest/cctest.h"
+
+namespace v8 {
+namespace internal {
+
+namespace {
+const int kNumIterations = 2000;
+
+class SharedSpaceAllocationThread final : public v8::base::Thread {
+ public:
+ explicit SharedSpaceAllocationThread(Isolate* shared)
+ : v8::base::Thread(base::Thread::Options("SharedSpaceAllocationThread")),
+ shared_(shared) {}
+
+ void Run() override {
+ v8::Isolate::CreateParams create_params;
+ allocator_.reset(v8::ArrayBuffer::Allocator::NewDefaultAllocator());
+ create_params.array_buffer_allocator = allocator_.get();
+ v8::Isolate* client_isolate = v8::Isolate::New(create_params);
+ Isolate* i_client_isolate = reinterpret_cast<Isolate*>(client_isolate);
+ i_client_isolate->AttachToSharedIsolate(shared_);
+
+ {
+ HandleScope scope(i_client_isolate);
+
+ for (int i = 0; i < kNumIterations; i++) {
+ i_client_isolate->factory()->NewFixedArray(10,
+ AllocationType::kSharedOld);
+ }
+
+ CcTest::CollectGarbage(OLD_SPACE, i_client_isolate);
+
+ v8::platform::PumpMessageLoop(i::V8::GetCurrentPlatform(),
+ client_isolate);
+ }
+
+ client_isolate->Dispose();
+ }
+
+ Isolate* shared_;
+ std::unique_ptr<v8::ArrayBuffer::Allocator> allocator_;
+};
+} // namespace
+
+UNINITIALIZED_TEST(ConcurrentAllocationInSharedOldSpace) {
+ std::unique_ptr<v8::ArrayBuffer::Allocator> allocator(
+ v8::ArrayBuffer::Allocator::NewDefaultAllocator());
+
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = allocator.get();
+ Isolate* shared_isolate = Isolate::NewShared(create_params);
+
+ std::vector<std::unique_ptr<SharedSpaceAllocationThread>> threads;
+ const int kThreads = 4;
+
+ for (int i = 0; i < kThreads; i++) {
+ auto thread = std::make_unique<SharedSpaceAllocationThread>(shared_isolate);
+ CHECK(thread->Start());
+ threads.push_back(std::move(thread));
+ }
+
+ for (auto& thread : threads) {
+ thread->Join();
+ }
+
+ Isolate::Delete(shared_isolate);
+}
+
+UNINITIALIZED_TEST(SharedCollection) {
+ std::unique_ptr<v8::ArrayBuffer::Allocator> allocator(
+ v8::ArrayBuffer::Allocator::NewDefaultAllocator());
+
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = allocator.get();
+ Isolate* shared_isolate = Isolate::NewShared(create_params);
+
+ CcTest::CollectGarbage(OLD_SPACE, shared_isolate);
+ Isolate::Delete(shared_isolate);
+}
+
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/test/cctest/heap/test-spaces.cc b/deps/v8/test/cctest/heap/test-spaces.cc
index 5326c53644..613835d222 100644
--- a/deps/v8/test/cctest/heap/test-spaces.cc
+++ b/deps/v8/test/cctest/heap/test-spaces.cc
@@ -53,15 +53,16 @@ namespace heap {
class V8_NODISCARD TestMemoryAllocatorScope {
public:
TestMemoryAllocatorScope(Isolate* isolate, size_t max_capacity,
- size_t code_range_size,
PageAllocator* page_allocator = nullptr)
: isolate_(isolate),
old_allocator_(std::move(isolate->heap()->memory_allocator_)) {
// Save the code pages for restoring them later on because the constructor
// of MemoryAllocator will change them.
isolate->GetCodePages()->swap(code_pages_);
- isolate->heap()->memory_allocator_.reset(
- new MemoryAllocator(isolate, max_capacity, code_range_size));
+ isolate->heap()->memory_allocator_.reset(new MemoryAllocator(
+ isolate,
+ page_allocator != nullptr ? page_allocator : isolate->page_allocator(),
+ max_capacity));
if (page_allocator != nullptr) {
isolate->heap()->memory_allocator_->data_page_allocator_ = page_allocator;
}
@@ -113,8 +114,7 @@ static void VerifyMemoryChunk(Isolate* isolate, Heap* heap,
v8::PageAllocator* code_page_allocator,
size_t reserve_area_size, size_t commit_area_size,
Executability executable, Space* space) {
- TestMemoryAllocatorScope test_allocator_scope(isolate, heap->MaxReserved(),
- 0);
+ TestMemoryAllocatorScope test_allocator_scope(isolate, heap->MaxReserved());
MemoryAllocator* memory_allocator = test_allocator_scope.allocator();
TestCodePageAllocatorScope test_code_page_allocator_scope(
isolate, code_page_allocator);
@@ -190,8 +190,7 @@ TEST(MemoryAllocator) {
Isolate* isolate = CcTest::i_isolate();
Heap* heap = isolate->heap();
- TestMemoryAllocatorScope test_allocator_scope(isolate, heap->MaxReserved(),
- 0);
+ TestMemoryAllocatorScope test_allocator_scope(isolate, heap->MaxReserved());
MemoryAllocator* memory_allocator = test_allocator_scope.allocator();
int total_pages = 0;
@@ -269,10 +268,10 @@ TEST(ComputeDiscardMemoryAreas) {
}
TEST(NewSpace) {
+ if (FLAG_single_generation) return;
Isolate* isolate = CcTest::i_isolate();
Heap* heap = isolate->heap();
- TestMemoryAllocatorScope test_allocator_scope(isolate, heap->MaxReserved(),
- 0);
+ TestMemoryAllocatorScope test_allocator_scope(isolate, heap->MaxReserved());
MemoryAllocator* memory_allocator = test_allocator_scope.allocator();
NewSpace new_space(heap, memory_allocator->data_page_allocator(),
@@ -295,8 +294,7 @@ TEST(NewSpace) {
TEST(OldSpace) {
Isolate* isolate = CcTest::i_isolate();
Heap* heap = isolate->heap();
- TestMemoryAllocatorScope test_allocator_scope(isolate, heap->MaxReserved(),
- 0);
+ TestMemoryAllocatorScope test_allocator_scope(isolate, heap->MaxReserved());
OldSpace* s = new OldSpace(heap);
CHECK_NOT_NULL(s);
@@ -516,6 +514,7 @@ void testAllocationObserver(Isolate* i_isolate, T* space) {
}
UNINITIALIZED_TEST(AllocationObserver) {
+ if (FLAG_single_generation) return;
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
v8::Isolate* isolate = v8::Isolate::New(create_params);
@@ -538,6 +537,7 @@ UNINITIALIZED_TEST(AllocationObserver) {
}
UNINITIALIZED_TEST(InlineAllocationObserverCadence) {
+ if (FLAG_single_generation) return;
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
v8::Isolate* isolate = v8::Isolate::New(create_params);
@@ -617,6 +617,7 @@ HEAP_TEST(Regress777177) {
}
HEAP_TEST(Regress791582) {
+ if (FLAG_single_generation) return;
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
Heap* heap = isolate->heap();
@@ -793,8 +794,7 @@ TEST(NoMemoryForNewPage) {
// Memory allocator that will fail to allocate any pages.
FailingPageAllocator failing_allocator;
- TestMemoryAllocatorScope test_allocator_scope(isolate, 0, 0,
- &failing_allocator);
+ TestMemoryAllocatorScope test_allocator_scope(isolate, 0, &failing_allocator);
MemoryAllocator* memory_allocator = test_allocator_scope.allocator();
OldSpace faked_space(heap);
Page* page = memory_allocator->AllocatePage(
diff --git a/deps/v8/test/cctest/heap/test-weak-references.cc b/deps/v8/test/cctest/heap/test-weak-references.cc
index b7f6d680dc..ab59c8fd40 100644
--- a/deps/v8/test/cctest/heap/test-weak-references.cc
+++ b/deps/v8/test/cctest/heap/test-weak-references.cc
@@ -70,6 +70,7 @@ TEST(WeakReferencesBasic) {
}
TEST(WeakReferencesOldToOld) {
+ if (FLAG_enable_third_party_heap) return;
// Like WeakReferencesBasic, but the updated weak slot is in the old space,
// and referring to an old space object.
ManualGCScope manual_gc_scope;
@@ -313,6 +314,8 @@ TEST(WeakReferenceWriteBarrier) {
Handle<LoadHandler> lh = CreateLoadHandlerForTest(factory);
CHECK(InCorrectGeneration(*lh));
+ v8::Global<Value> global_lh(CcTest::isolate(), Utils::ToLocal(lh));
+
{
HandleScope inner_scope(isolate);
@@ -348,6 +351,8 @@ TEST(EmptyWeakArray) {
}
TEST(WeakArraysBasic) {
+ if (FLAG_single_generation) return;
+
ManualGCScope manual_gc_scope;
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
@@ -361,7 +366,7 @@ TEST(WeakArraysBasic) {
CHECK(!array->IsFixedArray());
CHECK_EQ(array->length(), length);
- if (!FLAG_single_generation) CHECK(Heap::InYoungGeneration(*array));
+ CHECK(Heap::InYoungGeneration(*array));
for (int i = 0; i < length; ++i) {
HeapObject heap_object;
@@ -417,6 +422,8 @@ TEST(WeakArraysBasic) {
}
TEST(WeakArrayListBasic) {
+ if (FLAG_single_generation) return;
+
ManualGCScope manual_gc_scope;
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
diff --git a/deps/v8/test/cctest/heap/test-write-barrier.cc b/deps/v8/test/cctest/heap/test-write-barrier.cc
index 9ed3eb668e..3027fe860d 100644
--- a/deps/v8/test/cctest/heap/test-write-barrier.cc
+++ b/deps/v8/test/cctest/heap/test-write-barrier.cc
@@ -16,6 +16,7 @@ namespace internal {
namespace heap {
HEAP_TEST(WriteBarrier_Marking) {
+ if (!FLAG_incremental_marking) return;
ManualGCScope manual_gc_scope;
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
@@ -23,6 +24,7 @@ HEAP_TEST(WriteBarrier_Marking) {
MarkCompactCollector* collector = isolate->heap()->mark_compact_collector();
HandleScope outer(isolate);
Handle<FixedArray> objects = factory->NewFixedArray(3);
+ v8::Global<Value> global_objects(CcTest::isolate(), Utils::ToLocal(objects));
{
// Make sure that these objects are not immediately reachable from
// the roots to prevent them being marked grey at the start of marking.
@@ -55,6 +57,7 @@ HEAP_TEST(WriteBarrier_Marking) {
}
HEAP_TEST(WriteBarrier_MarkingExtension) {
+ if (!FLAG_incremental_marking) return;
ManualGCScope manual_gc_scope;
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
@@ -75,7 +78,11 @@ HEAP_TEST(WriteBarrier_MarkingExtension) {
CHECK(collector->marking_state()->IsWhite(host));
CHECK(!extension->IsMarked());
WriteBarrier::Marking(host, extension);
+ // Concurrent marking barrier should mark this object.
CHECK_EQ(V8_CONCURRENT_MARKING_BOOL, extension->IsMarked());
+ // Keep object alive using the global handle.
+ v8::Global<ArrayBuffer> global_host(CcTest::isolate(),
+ Utils::ToLocal(handle(host, isolate)));
heap::SimulateIncrementalMarking(CcTest::heap(), true);
CHECK(collector->marking_state()->IsBlack(host));
CHECK(extension->IsMarked());
diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden
index e3dacbb196..dac17a4252 100644
--- a/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden
+++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateAccessorAccess.golden
@@ -83,7 +83,7 @@ bytecodes: [
B(Mov), R(this), R(0),
B(Mov), R(context), R(2),
/* 48 E> */ B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(3),
- /* 53 S> */ B(Wide), B(LdaSmi), I16(276),
+ /* 53 S> */ B(Wide), B(LdaSmi), I16(279),
B(Star3),
B(LdaConstant), U8(0),
B(Star4),
@@ -114,7 +114,7 @@ bytecodes: [
B(Mov), R(this), R(0),
B(Mov), R(context), R(2),
/* 41 E> */ B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(3),
- /* 46 S> */ B(Wide), B(LdaSmi), I16(275),
+ /* 46 S> */ B(Wide), B(LdaSmi), I16(278),
B(Star3),
B(LdaConstant), U8(0),
B(Star4),
@@ -145,7 +145,7 @@ bytecodes: [
B(Mov), R(this), R(0),
B(Mov), R(context), R(2),
/* 48 E> */ B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(3),
- /* 53 S> */ B(Wide), B(LdaSmi), I16(276),
+ /* 53 S> */ B(Wide), B(LdaSmi), I16(279),
B(Star3),
B(LdaConstant), U8(0),
B(Star4),
@@ -176,7 +176,7 @@ bytecodes: [
B(Mov), R(this), R(0),
B(Mov), R(context), R(2),
/* 41 E> */ B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(3),
- /* 46 S> */ B(Wide), B(LdaSmi), I16(275),
+ /* 46 S> */ B(Wide), B(LdaSmi), I16(278),
B(Star4),
B(LdaConstant), U8(0),
B(Star5),
diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden
index 2270e27b02..424bc6c8e4 100644
--- a/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden
+++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/PrivateMethodAccess.golden
@@ -56,7 +56,7 @@ bytecodes: [
B(Mov), R(this), R(0),
B(Mov), R(context), R(2),
/* 44 E> */ B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(3),
- /* 49 S> */ B(Wide), B(LdaSmi), I16(274),
+ /* 49 S> */ B(Wide), B(LdaSmi), I16(277),
B(Star3),
B(LdaConstant), U8(0),
B(Star4),
@@ -88,7 +88,7 @@ bytecodes: [
B(Mov), R(this), R(0),
B(Mov), R(context), R(2),
/* 44 E> */ B(CallRuntime), U16(Runtime::kAddPrivateBrand), R(0), U8(3),
- /* 49 S> */ B(Wide), B(LdaSmi), I16(274),
+ /* 49 S> */ B(Wide), B(LdaSmi), I16(277),
B(Star3),
B(LdaConstant), U8(0),
B(Star4),
diff --git a/deps/v8/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden b/deps/v8/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden
index 45209d642c..72a5e3d9f6 100644
--- a/deps/v8/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden
+++ b/deps/v8/test/cctest/interpreter/bytecode_expectations/StaticPrivateMethodAccess.golden
@@ -24,7 +24,7 @@ bytecodes: [
B(TestReferenceEqual), R(this),
B(Mov), R(this), R(1),
B(JumpIfTrue), U8(16),
- B(Wide), B(LdaSmi), I16(272),
+ B(Wide), B(LdaSmi), I16(275),
B(Star2),
B(LdaConstant), U8(0),
B(Star3),
@@ -55,7 +55,7 @@ frame size: 2
parameter count: 1
bytecode array length: 14
bytecodes: [
- /* 56 S> */ B(Wide), B(LdaSmi), I16(274),
+ /* 56 S> */ B(Wide), B(LdaSmi), I16(277),
B(Star0),
B(LdaConstant), U8(0),
B(Star1),
@@ -82,7 +82,7 @@ frame size: 2
parameter count: 1
bytecode array length: 14
bytecodes: [
- /* 56 S> */ B(Wide), B(LdaSmi), I16(274),
+ /* 56 S> */ B(Wide), B(LdaSmi), I16(277),
B(Star0),
B(LdaConstant), U8(0),
B(Star1),
@@ -118,14 +118,14 @@ bytecodes: [
/* 90 S> */ B(LdaImmutableCurrentContextSlot), U8(2),
B(Star1),
B(LdaCurrentContextSlot), U8(3),
- /* 94 E> */ B(TestReferenceEqual), R(this),
+ B(TestReferenceEqual), R(this),
B(Mov), R(this), R(0),
B(JumpIfTrue), U8(16),
- B(Wide), B(LdaSmi), I16(272),
+ B(Wide), B(LdaSmi), I16(275),
B(Star2),
B(LdaConstant), U8(0),
B(Star3),
- B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2),
+ /* 94 E> */ B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2),
B(Throw),
B(CallRuntime), U16(Runtime::kLoadPrivateGetter), R(1), U8(1),
B(Star2),
@@ -140,14 +140,14 @@ bytecodes: [
B(LdaImmutableCurrentContextSlot), U8(2),
B(Star2),
B(LdaCurrentContextSlot), U8(3),
- /* 109 E> */ B(TestReferenceEqual), R(this),
+ B(TestReferenceEqual), R(this),
B(Mov), R(this), R(1),
B(JumpIfTrue), U8(16),
- B(Wide), B(LdaSmi), I16(273),
+ B(Wide), B(LdaSmi), I16(276),
B(Star3),
B(LdaConstant), U8(0),
B(Star4),
- B(CallRuntime), U16(Runtime::kNewTypeError), R(3), U8(2),
+ /* 109 E> */ B(CallRuntime), U16(Runtime::kNewTypeError), R(3), U8(2),
B(Throw),
B(CallRuntime), U16(Runtime::kLoadPrivateSetter), R(2), U8(1),
B(Star3),
@@ -155,14 +155,14 @@ bytecodes: [
/* 122 S> */ B(LdaImmutableCurrentContextSlot), U8(2),
B(Star1),
B(LdaCurrentContextSlot), U8(3),
- /* 133 E> */ B(TestReferenceEqual), R(this),
+ B(TestReferenceEqual), R(this),
B(Mov), R(this), R(0),
B(JumpIfTrue), U8(16),
- B(Wide), B(LdaSmi), I16(272),
+ B(Wide), B(LdaSmi), I16(275),
B(Star2),
B(LdaConstant), U8(0),
B(Star3),
- B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2),
+ /* 133 E> */ B(CallRuntime), U16(Runtime::kNewTypeError), R(2), U8(2),
B(Throw),
B(CallRuntime), U16(Runtime::kLoadPrivateGetter), R(1), U8(1),
B(Star2),
@@ -188,7 +188,7 @@ frame size: 2
parameter count: 1
bytecode array length: 14
bytecodes: [
- /* 60 S> */ B(Wide), B(LdaSmi), I16(276),
+ /* 60 S> */ B(Wide), B(LdaSmi), I16(279),
B(Star0),
B(LdaConstant), U8(0),
B(Star1),
@@ -214,7 +214,7 @@ frame size: 2
parameter count: 1
bytecode array length: 14
bytecodes: [
- /* 53 S> */ B(Wide), B(LdaSmi), I16(275),
+ /* 53 S> */ B(Wide), B(LdaSmi), I16(278),
B(Star0),
B(LdaConstant), U8(0),
B(Star1),
@@ -240,7 +240,7 @@ frame size: 2
parameter count: 1
bytecode array length: 14
bytecodes: [
- /* 60 S> */ B(Wide), B(LdaSmi), I16(276),
+ /* 60 S> */ B(Wide), B(LdaSmi), I16(279),
B(Star0),
B(LdaConstant), U8(0),
B(Star1),
@@ -266,7 +266,7 @@ frame size: 3
parameter count: 1
bytecode array length: 14
bytecodes: [
- /* 46 S> */ B(Wide), B(LdaSmi), I16(275),
+ /* 46 S> */ B(Wide), B(LdaSmi), I16(278),
B(Star1),
B(LdaConstant), U8(0),
B(Star2),
diff --git a/deps/v8/test/cctest/test-allocation.cc b/deps/v8/test/cctest/test-allocation.cc
index d8086b2c7a..2078aeb02a 100644
--- a/deps/v8/test/cctest/test-allocation.cc
+++ b/deps/v8/test/cctest/test-allocation.cc
@@ -7,7 +7,7 @@
#if V8_OS_POSIX
#include <setjmp.h>
#include <signal.h>
-#include <unistd.h> // NOLINT
+#include <unistd.h>
#endif
#include "src/init/v8.h"
diff --git a/deps/v8/test/cctest/test-api-accessors.cc b/deps/v8/test/cctest/test-api-accessors.cc
index 0c65902ced..353a9a5618 100644
--- a/deps/v8/test/cctest/test-api-accessors.cc
+++ b/deps/v8/test/cctest/test-api-accessors.cc
@@ -2,11 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "test/cctest/cctest.h"
-
#include "include/v8.h"
-#include "src/api/api.h"
+#include "src/api/api-inl.h"
+#include "src/debug/debug.h"
+#include "src/execution/isolate.h"
#include "src/objects/objects-inl.h"
+#include "test/cctest/cctest.h"
namespace i = v8::internal;
@@ -250,6 +251,8 @@ static void Setter(v8::Local<v8::Name> name, v8::Local<v8::Value> value,
const v8::PropertyCallbackInfo<void>& info) {
set_accessor_call_count++;
}
+
+static void EmptyCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {}
} // namespace
// Re-declaration of non-configurable accessors should throw.
@@ -276,6 +279,175 @@ TEST(RedeclareAccessor) {
CHECK(try_catch.HasCaught());
}
+class NoopDelegate : public v8::debug::DebugDelegate {};
+
+static void CheckSideEffectFreeAccesses(v8::Isolate* isolate,
+ v8::Local<v8::String> call_getter,
+ v8::Local<v8::String> call_setter) {
+ const int kIterationsCountForICProgression = 20;
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+ v8::Local<v8::Script> func = v8_compile(call_getter);
+ // Check getter. Run enough number of times to ensure IC creates data handler.
+ for (int i = 0; i < kIterationsCountForICProgression; i++) {
+ v8::TryCatch try_catch(isolate);
+ CHECK(EvaluateGlobalForTesting(
+ isolate, func,
+ v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect,
+ true)
+ .IsEmpty());
+
+ CHECK(try_catch.HasCaught());
+
+ // Ensure that IC state progresses.
+ CHECK(!func->Run(context).IsEmpty());
+ }
+
+ func = v8_compile(call_setter);
+ // Check setter. Run enough number of times to ensure IC creates data handler.
+ for (int i = 0; i < kIterationsCountForICProgression; i++) {
+ v8::TryCatch try_catch(isolate);
+ CHECK(EvaluateGlobalForTesting(
+ isolate, func,
+ v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect,
+ true)
+ .IsEmpty());
+
+ CHECK(try_catch.HasCaught());
+
+ // Ensure that IC state progresses.
+ CHECK(!func->Run(context).IsEmpty());
+ }
+}
+
+TEST(AccessorsWithSideEffects) {
+ LocalContext env;
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
+ v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
+ v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked();
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
+
+ v8::Local<v8::FunctionTemplate> templ_with_sideffect =
+ v8::FunctionTemplate::New(isolate, EmptyCallback, v8::Local<v8::Value>(),
+ v8::Local<v8::Signature>(), 0,
+ v8::ConstructorBehavior::kAllow,
+ v8::SideEffectType::kHasSideEffect);
+ v8::Local<v8::FunctionTemplate> templ_no_sideffect =
+ v8::FunctionTemplate::New(isolate, EmptyCallback, v8::Local<v8::Value>(),
+ v8::Local<v8::Signature>(), 0,
+ v8::ConstructorBehavior::kAllow,
+ v8::SideEffectType::kHasNoSideEffect);
+
+ // Install non-native properties with side effects
+ obj->SetAccessorProperty(
+ v8_str("get"),
+ templ_with_sideffect->GetFunction(context).ToLocalChecked(), {},
+ v8::PropertyAttribute::None, v8::AccessControl::DEFAULT);
+
+ obj->SetAccessorProperty(
+ v8_str("set"), templ_no_sideffect->GetFunction(context).ToLocalChecked(),
+ templ_with_sideffect->GetFunction(context).ToLocalChecked(),
+ v8::PropertyAttribute::None, v8::AccessControl::DEFAULT);
+
+ CheckSideEffectFreeAccesses(isolate, v8_str("obj.get"),
+ v8_str("obj.set = 123;"));
+}
+
+TEST(TemplateAccessorsWithSideEffects) {
+ LocalContext env;
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
+
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
+ v8::Local<v8::FunctionTemplate> templ_with_sideffect =
+ v8::FunctionTemplate::New(isolate, EmptyCallback, v8::Local<v8::Value>(),
+ v8::Local<v8::Signature>(), 0,
+ v8::ConstructorBehavior::kAllow,
+ v8::SideEffectType::kHasSideEffect);
+ v8::Local<v8::FunctionTemplate> templ_no_sideffect =
+ v8::FunctionTemplate::New(isolate, EmptyCallback, v8::Local<v8::Value>(),
+ v8::Local<v8::Signature>(), 0,
+ v8::ConstructorBehavior::kAllow,
+ v8::SideEffectType::kHasNoSideEffect);
+
+ v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
+ templ->SetAccessorProperty(v8_str("get"), templ_with_sideffect);
+ templ->SetAccessorProperty(v8_str("set"), templ_no_sideffect,
+ templ_with_sideffect);
+ v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked();
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
+
+ CheckSideEffectFreeAccesses(isolate, v8_str("obj.get"),
+ v8_str("obj.set = 123;"));
+}
+
+TEST(NativeTemplateAccessorWithSideEffects) {
+ LocalContext env;
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
+
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
+ v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
+ templ->SetAccessor(v8_str("get"), Getter, nullptr, v8::Local<v8::Value>(),
+ v8::AccessControl::DEFAULT, v8::PropertyAttribute::None,
+ v8::Local<v8::AccessorSignature>(),
+ v8::SideEffectType::kHasSideEffect);
+ templ->SetAccessor(v8_str("set"), Getter, Setter, v8::Local<v8::Value>(),
+ v8::AccessControl::DEFAULT, v8::PropertyAttribute::None,
+ v8::Local<v8::AccessorSignature>(),
+ v8::SideEffectType::kHasNoSideEffect,
+ v8::SideEffectType::kHasSideEffect);
+
+ v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked();
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
+
+ CheckSideEffectFreeAccesses(isolate, v8_str("obj.get"),
+ v8_str("obj.set = 123;"));
+}
+
+TEST(NativeAccessorsWithSideEffects) {
+ LocalContext env;
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+
+ v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
+ v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked();
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
+
+ // Install native data property with side effects.
+ obj->SetAccessor(context, v8_str("get"), Getter, nullptr,
+ v8::MaybeLocal<v8::Value>(), v8::AccessControl::DEFAULT,
+ v8::PropertyAttribute::None,
+ v8::SideEffectType::kHasSideEffect)
+ .ToChecked();
+ obj->SetAccessor(context, v8_str("set"), Getter, Setter,
+ v8::MaybeLocal<v8::Value>(), v8::AccessControl::DEFAULT,
+ v8::PropertyAttribute::None,
+ v8::SideEffectType::kHasNoSideEffect,
+ v8::SideEffectType::kHasSideEffect)
+ .ToChecked();
+
+ CheckSideEffectFreeAccesses(isolate, v8_str("obj.get"),
+ v8_str("obj.set = 123;"));
+}
+
// Accessors can be allowlisted as side-effect-free via SetAccessor.
TEST(AccessorSetHasNoSideEffect) {
LocalContext env;
@@ -283,6 +455,10 @@ TEST(AccessorSetHasNoSideEffect) {
v8::HandleScope scope(isolate);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked();
CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
@@ -323,6 +499,10 @@ TEST(SetAccessorSetSideEffectReceiverCheck1) {
v8::Isolate* isolate = env->GetIsolate();
v8::HandleScope scope(isolate);
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked();
CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
@@ -356,6 +536,10 @@ TEST(SetAccessorSetSideEffectReceiverCheck2) {
v8::HandleScope scope(isolate);
i::FLAG_enable_one_shot_optimization = false;
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
v8::Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(
isolate, ConstructCallback, v8::Local<v8::Value>(),
v8::Local<v8::Signature>(), 0, v8::ConstructorBehavior::kAllow,
@@ -390,6 +574,10 @@ TEST(AccessorSetNativeDataPropertyHasNoSideEffect) {
v8::HandleScope scope(isolate);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked();
CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
@@ -429,6 +617,10 @@ TEST(AccessorSetLazyDataPropertyHasNoSideEffect) {
v8::HandleScope scope(isolate);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked();
CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust());
@@ -466,6 +658,10 @@ TEST(ObjectTemplateSetAccessorHasNoSideEffect) {
v8::Isolate* isolate = env->GetIsolate();
v8::HandleScope scope(isolate);
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
templ->SetAccessor(v8_str("foo"), StringGetter);
templ->SetAccessor(
@@ -503,6 +699,10 @@ TEST(ObjectTemplateSetNativePropertyHasNoSideEffect) {
v8::Isolate* isolate = env->GetIsolate();
v8::HandleScope scope(isolate);
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
templ->SetNativeDataProperty(v8_str("foo"), Getter);
templ->SetNativeDataProperty(
@@ -540,6 +740,10 @@ TEST(ObjectTemplateSetLazyPropertyHasNoSideEffect) {
v8::Isolate* isolate = env->GetIsolate();
v8::HandleScope scope(isolate);
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ NoopDelegate delegate;
+ i_isolate->debug()->SetDebugDelegate(&delegate);
+
v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
templ->SetLazyDataProperty(v8_str("foo"), Getter);
templ->SetLazyDataProperty(v8_str("foo2"), Getter, v8::Local<v8::Value>(),
diff --git a/deps/v8/test/cctest/test-api-icu.cc b/deps/v8/test/cctest/test-api-icu.cc
index 8527ee72d3..c5e617fdd2 100644
--- a/deps/v8/test/cctest/test-api-icu.cc
+++ b/deps/v8/test/cctest/test-api-icu.cc
@@ -47,7 +47,7 @@ TEST(LocaleConfigurationChangeNotification) {
SetIcuLocale("zh_CN");
isolate->LocaleConfigurationChangeNotification();
- CheckLocaleSpecificValues("zh-CN", "2020/2/14下午1:45:00", "10,000.3");
+ CheckLocaleSpecificValues("zh-CN", "2020/2/14 下午1:45:00", "10,000.3");
UErrorCode error_code = U_ZERO_ERROR;
icu::Locale::setDefault(default_locale, error_code);
diff --git a/deps/v8/test/cctest/test-api-interceptors.cc b/deps/v8/test/cctest/test-api-interceptors.cc
index 305840f29b..768d7f34fc 100644
--- a/deps/v8/test/cctest/test-api-interceptors.cc
+++ b/deps/v8/test/cctest/test-api-interceptors.cc
@@ -81,17 +81,19 @@ void SimpleAccessorSetter(Local<String> name, Local<Value> value,
void SymbolAccessorGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) {
CHECK(name->IsSymbol());
+ v8::Isolate* isolate = info.GetIsolate();
Local<Symbol> sym = name.As<Symbol>();
- if (sym->Description()->IsUndefined()) return;
- SimpleAccessorGetter(sym->Description().As<String>(), info);
+ if (sym->Description(isolate)->IsUndefined()) return;
+ SimpleAccessorGetter(sym->Description(isolate).As<String>(), info);
}
void SymbolAccessorSetter(Local<Name> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) {
CHECK(name->IsSymbol());
+ v8::Isolate* isolate = info.GetIsolate();
Local<Symbol> sym = name.As<Symbol>();
- if (sym->Description()->IsUndefined()) return;
- SimpleAccessorSetter(sym->Description().As<String>(), value, info);
+ if (sym->Description(isolate)->IsUndefined()) return;
+ SimpleAccessorSetter(sym->Description(isolate).As<String>(), value, info);
}
void InterceptorGetter(Local<Name> generic_name,
@@ -139,9 +141,10 @@ void InterceptorSetter(Local<Name> generic_name, Local<Value> value,
void GenericInterceptorGetter(Local<Name> generic_name,
const v8::PropertyCallbackInfo<v8::Value>& info) {
+ v8::Isolate* isolate = info.GetIsolate();
Local<String> str;
if (generic_name->IsSymbol()) {
- Local<Value> name = generic_name.As<Symbol>()->Description();
+ Local<Value> name = generic_name.As<Symbol>()->Description(isolate);
if (name->IsUndefined()) return;
str = String::Concat(info.GetIsolate(), v8_str("_sym_"), name.As<String>());
} else {
@@ -159,9 +162,10 @@ void GenericInterceptorGetter(Local<Name> generic_name,
void GenericInterceptorSetter(Local<Name> generic_name, Local<Value> value,
const v8::PropertyCallbackInfo<v8::Value>& info) {
+ v8::Isolate* isolate = info.GetIsolate();
Local<String> str;
if (generic_name->IsSymbol()) {
- Local<Value> name = generic_name.As<Symbol>()->Description();
+ Local<Value> name = generic_name.As<Symbol>()->Description(isolate);
if (name->IsUndefined()) return;
str = String::Concat(info.GetIsolate(), v8_str("_sym_"), name.As<String>());
} else {
diff --git a/deps/v8/test/cctest/test-api-stack-traces.cc b/deps/v8/test/cctest/test-api-stack-traces.cc
index 4a55b47e2b..6230081404 100644
--- a/deps/v8/test/cctest/test-api-stack-traces.cc
+++ b/deps/v8/test/cctest/test-api-stack-traces.cc
@@ -867,14 +867,22 @@ TEST(DynamicWithSourceURLInStackTraceString) {
CHECK_NOT_NULL(strstr(*stack, "at foo (source_url:3:5)"));
}
-TEST(CaptureStackTraceForStackOverflow) {
+UNINITIALIZED_TEST(CaptureStackTraceForStackOverflow) {
+ // We must set FLAG_stack_size before initializing the isolate.
v8::internal::FLAG_stack_size = 150;
- LocalContext current;
- v8::Isolate* isolate = current->GetIsolate();
- v8::HandleScope scope(isolate);
- isolate->SetCaptureStackTraceForUncaughtExceptions(true, 10,
- v8::StackTrace::kDetailed);
- v8::TryCatch try_catch(isolate);
- CompileRun("(function f(x) { f(x+1); })(0)");
- CHECK(try_catch.HasCaught());
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
+ isolate->Enter();
+ {
+ LocalContext current(isolate);
+ v8::HandleScope scope(isolate);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(
+ true, 10, v8::StackTrace::kDetailed);
+ v8::TryCatch try_catch(isolate);
+ CompileRun("(function f(x) { f(x+1); })(0)");
+ CHECK(try_catch.HasCaught());
+ }
+ isolate->Exit();
+ isolate->Dispose();
}
diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc
index 5eafa420bc..13a9704279 100644
--- a/deps/v8/test/cctest/test-api.cc
+++ b/deps/v8/test/cctest/test-api.cc
@@ -34,7 +34,7 @@
#include <string>
#if V8_OS_POSIX
-#include <unistd.h> // NOLINT
+#include <unistd.h>
#endif
#include "include/v8-fast-api-calls.h"
@@ -1453,6 +1453,9 @@ static void TestExternalPointerWrapping() {
v8::Isolate* isolate = env->GetIsolate();
v8::HandleScope scope(isolate);
+ int* ptr = new int;
+ expected_ptr = ptr;
+
v8::Local<v8::Value> data = v8::External::New(isolate, expected_ptr);
v8::Local<v8::Object> obj = v8::Object::New(isolate);
@@ -1468,6 +1471,8 @@ static void TestExternalPointerWrapping() {
"}\n"
"foo(), true")
->BooleanValue(isolate));
+
+ delete ptr;
}
@@ -2672,24 +2677,28 @@ void SimpleAccessorSetter(Local<String> name, Local<Value> value,
void SymbolAccessorGetter(Local<Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) {
CHECK(name->IsSymbol());
+ v8::Isolate* isolate = info.GetIsolate();
Local<Symbol> sym = name.As<Symbol>();
- if (sym->Description()->IsUndefined()) return;
- SimpleAccessorGetter(Local<String>::Cast(sym->Description()), info);
+ if (sym->Description(isolate)->IsUndefined()) return;
+ SimpleAccessorGetter(Local<String>::Cast(sym->Description(isolate)), info);
}
void SymbolAccessorSetter(Local<Name> name, Local<Value> value,
const v8::PropertyCallbackInfo<void>& info) {
CHECK(name->IsSymbol());
+ v8::Isolate* isolate = info.GetIsolate();
Local<Symbol> sym = name.As<Symbol>();
- if (sym->Description()->IsUndefined()) return;
- SimpleAccessorSetter(Local<String>::Cast(sym->Description()), value, info);
+ if (sym->Description(isolate)->IsUndefined()) return;
+ SimpleAccessorSetter(Local<String>::Cast(sym->Description(isolate)), value,
+ info);
}
void SymbolAccessorGetterReturnsDefault(
Local<Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) {
CHECK(name->IsSymbol());
+ v8::Isolate* isolate = info.GetIsolate();
Local<Symbol> sym = name.As<Symbol>();
- if (sym->Description()->IsUndefined()) return;
+ if (sym->Description(isolate)->IsUndefined()) return;
info.GetReturnValue().Set(info.Data());
}
@@ -3045,7 +3054,9 @@ THREADED_TEST(InternalFieldsAlignedPointers) {
int stack_allocated[100];
CheckAlignedPointerInInternalField(obj, stack_allocated);
- void* huge = reinterpret_cast<void*>(~static_cast<uintptr_t>(1));
+ // The aligned pointer must have the top bits be zero on 64-bit machines (at
+ // least if the heap sandbox is enabled).
+ void* huge = reinterpret_cast<void*>(0x0000fffffffffffe);
CheckAlignedPointerInInternalField(obj, huge);
v8::Global<v8::Object> persistent(isolate, obj);
@@ -3121,7 +3132,9 @@ THREADED_TEST(EmbedderDataAlignedPointers) {
CheckAlignedPointerInEmbedderData(&env, 2, stack_allocated);
CHECK_EQ(3, (*env)->GetNumberOfEmbedderDataFields());
- void* huge = reinterpret_cast<void*>(~static_cast<uintptr_t>(1));
+ // The aligned pointer must have the top bits be zero on 64-bit machines (at
+ // least if the heap sandbox is enabled).
+ void* huge = reinterpret_cast<void*>(0x0000fffffffffffe);
CheckAlignedPointerInEmbedderData(&env, 3, huge);
CHECK_EQ(4, (*env)->GetNumberOfEmbedderDataFields());
@@ -3319,8 +3332,9 @@ THREADED_TEST(SymbolProperties) {
CHECK(!sym1->StrictEquals(sym2));
CHECK(!sym2->StrictEquals(sym1));
- CHECK(
- sym2->Description()->Equals(env.local(), v8_str("my-symbol")).FromJust());
+ CHECK(sym2->Description(isolate)
+ ->Equals(env.local(), v8_str("my-symbol"))
+ .FromJust());
v8::Local<v8::Value> sym_val = sym2;
CHECK(sym_val->IsSymbol());
@@ -8529,12 +8543,8 @@ THREADED_TEST(StringWrite) {
CHECK_EQ(0, str->Write(isolate, nullptr, 0, 0, String::NO_NULL_TERMINATION));
}
-
-static void Utf16Helper(
- LocalContext& context, // NOLINT
- const char* name,
- const char* lengths_name,
- int len) {
+static void Utf16Helper(LocalContext& context, const char* name,
+ const char* lengths_name, int len) {
Local<v8::Array> a = Local<v8::Array>::Cast(
context->Global()->Get(context.local(), v8_str(name)).ToLocalChecked());
Local<v8::Array> alens =
@@ -14191,8 +14201,8 @@ void CheckIsSymbolAt(v8::Isolate* isolate, v8::Local<v8::Array> properties,
properties->Get(context, v8::Integer::New(isolate, index))
.ToLocalChecked();
CHECK(value->IsSymbol());
- v8::String::Utf8Value symbol_name(isolate,
- Local<Symbol>::Cast(value)->Description());
+ v8::String::Utf8Value symbol_name(
+ isolate, Local<Symbol>::Cast(value)->Description(isolate));
if (strcmp(name, *symbol_name) != 0) {
FATAL("properties[%u] was Symbol('%s') instead of Symbol('%s').", index,
name, *symbol_name);
@@ -16753,7 +16763,10 @@ THREADED_TEST(GetHeapStatistics) {
CHECK_EQ(0u, heap_statistics.used_heap_size());
c1->GetIsolate()->GetHeapStatistics(&heap_statistics);
CHECK_NE(static_cast<int>(heap_statistics.total_heap_size()), 0);
- CHECK_NE(static_cast<int>(heap_statistics.used_heap_size()), 0);
+ if (!v8::internal::FLAG_enable_third_party_heap) {
+ // TODO(wenyuzhao): Get used size from third_party_heap interface
+ CHECK_NE(static_cast<int>(heap_statistics.used_heap_size()), 0);
+ }
}
TEST(GetHeapSpaceStatistics) {
@@ -20784,6 +20797,50 @@ THREADED_TEST(InstanceCheckOnPrototypeAccessor) {
CheckInstanceCheckedAccessors(true);
}
+THREADED_TEST(CheckIsLeafTemplateForApiObject) {
+ LocalContext context;
+ v8::HandleScope scope(context->GetIsolate());
+
+ Local<FunctionTemplate> templ = FunctionTemplate::New(context->GetIsolate());
+ CHECK(context->Global()
+ ->Set(context.local(), v8_str("f"),
+ templ->GetFunction(context.local()).ToLocalChecked())
+ .FromJust());
+
+ printf("Testing positive ...\n");
+ CompileRun("var obj = new f();");
+ CHECK(templ->IsLeafTemplateForApiObject(
+ context->Global()->Get(context.local(), v8_str("obj")).ToLocalChecked()));
+
+ printf("Testing negative ...\n");
+ CompileRun(
+ "var obj = {};"
+ "obj.__proto__ = new f();");
+ CHECK(!templ->IsLeafTemplateForApiObject(
+ context->Global()->Get(context.local(), v8_str("obj")).ToLocalChecked()));
+
+ printf("Testing positive with modified prototype chain ...\n");
+ CompileRun(
+ "var obj = new f();"
+ "var pro = {};"
+ "pro.__proto__ = obj.__proto__;"
+ "obj.__proto__ = pro;");
+ CHECK(templ->IsLeafTemplateForApiObject(
+ context->Global()->Get(context.local(), v8_str("obj")).ToLocalChecked()));
+
+ Local<FunctionTemplate> child_templ =
+ FunctionTemplate::New(context->GetIsolate());
+ child_templ->Inherit(templ);
+ Local<Object> instance = child_templ->GetFunction(context.local())
+ .ToLocalChecked()
+ ->NewInstance(context.local())
+ .ToLocalChecked();
+
+ printf("Testing positive for child ...\n");
+ CHECK(child_templ->IsLeafTemplateForApiObject(instance));
+ printf("Testing negative for parent ...\n");
+ CHECK(!templ->IsLeafTemplateForApiObject(instance));
+}
TEST(TryFinallyMessage) {
LocalContext context;
@@ -21974,7 +22031,7 @@ THREADED_TEST(FunctionNew) {
->shared()
.get_api_func_data()
.serial_number();
- CHECK_EQ(i::FunctionTemplateInfo::kInvalidSerialNumber, serial_number);
+ CHECK_EQ(i::TemplateInfo::kDoNotCache, serial_number);
// Verify that each Function::New creates a new function instance
Local<Object> data2 = v8::Object::New(isolate);
@@ -26169,8 +26226,9 @@ TEST(DynamicImport) {
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
i::Handle<i::Script> referrer = i_isolate->factory()->NewScript(source);
referrer->set_name(*url);
- referrer->set_host_defined_options(*i_isolate->factory()->NewFixedArray(
- kCustomHostDefinedOptionsLengthForTesting));
+ i::Handle<i::FixedArray> options = i_isolate->factory()->NewFixedArray(
+ kCustomHostDefinedOptionsLengthForTesting);
+ referrer->set_host_defined_options(*options);
i::MaybeHandle<i::JSPromise> maybe_promise =
i_isolate->RunHostImportModuleDynamicallyCallback(
referrer, specifier, i::MaybeHandle<i::Object>());
@@ -26255,8 +26313,9 @@ TEST(DynamicImportWithAssertions) {
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
i::Handle<i::Script> referrer = i_isolate->factory()->NewScript(source);
referrer->set_name(*url);
- referrer->set_host_defined_options(*i_isolate->factory()->NewFixedArray(
- kCustomHostDefinedOptionsLengthForTesting));
+ i::Handle<i::FixedArray> options = i_isolate->factory()->NewFixedArray(
+ kCustomHostDefinedOptionsLengthForTesting);
+ referrer->set_host_defined_options(*options);
i::MaybeHandle<i::JSPromise> maybe_promise =
i_isolate->RunHostImportModuleDynamicallyCallback(referrer, specifier,
i_import_assertions);
@@ -27621,14 +27680,16 @@ namespace {
template <typename Value, typename Impl, typename Ret>
struct BasicApiChecker {
- static Ret FastCallback(v8::ApiObject receiver, Value argument,
+ static Ret FastCallback(v8::Local<v8::Object> receiver, Value argument,
v8::FastApiCallbackOptions& options) {
- const v8::Value* data = reinterpret_cast<const v8::Value*>(&options.data);
+ // TODO(mslekova): Refactor the data checking.
+ v8::Value* data = &(options.data);
CHECK(data->IsNumber());
- CHECK_EQ(reinterpret_cast<const v8::Number*>(data)->Value(), 42.0);
+ CHECK_EQ(v8::Number::Cast(data)->Value(), 42.0);
return Impl::FastCallback(receiver, argument, options);
}
- static Ret FastCallbackNoFallback(v8::ApiObject receiver, Value argument) {
+ static Ret FastCallbackNoFallback(v8::Local<v8::Object> receiver,
+ Value argument) {
v8::FastApiCallbackOptions options = {false, {0}};
return Impl::FastCallback(receiver, argument, options);
}
@@ -27639,6 +27700,12 @@ struct BasicApiChecker {
bool DidCallFast() const { return (result_ & ApiCheckerResult::kFastCalled); }
bool DidCallSlow() const { return (result_ & ApiCheckerResult::kSlowCalled); }
+ void SetCallFast() { result_ |= ApiCheckerResult::kFastCalled; }
+ void SetCallSlow() { result_ |= ApiCheckerResult::kSlowCalled; }
+
+ void Reset() { result_ = ApiCheckerResult::kNotCalled; }
+
+ private:
ApiCheckerResultFlags result_ = ApiCheckerResult::kNotCalled;
};
@@ -27663,17 +27730,16 @@ struct ApiNumberChecker : BasicApiChecker<T, ApiNumberChecker<T>, void> {
write_to_fallback_(write_to_fallback),
args_count_(args_count) {}
- static void FastCallback(v8::ApiObject receiver, T argument,
+ static void FastCallback(v8::Local<v8::Object> receiver, T argument,
v8::FastApiCallbackOptions& options) {
- v8::Object* receiver_obj = reinterpret_cast<v8::Object*>(&receiver);
+ v8::Object* receiver_obj = *receiver;
if (!IsValidUnwrapObject(receiver_obj)) {
options.fallback = 1;
return;
}
ApiNumberChecker<T>* receiver_ptr =
- GetInternalField<ApiNumberChecker<T>, kV8WrapperObjectIndex>(
- receiver_obj);
- receiver_ptr->result_ |= ApiCheckerResult::kFastCalled;
+ GetInternalField<ApiNumberChecker<T>>(receiver_obj);
+ receiver_ptr->SetCallFast();
receiver_ptr->fast_value_ = argument;
if (receiver_ptr->write_to_fallback_ == FallbackPolicy::kRequestFallback) {
// Anything != 0 has the same effect here, but we're writing 1 to match
@@ -27692,10 +27758,10 @@ struct ApiNumberChecker : BasicApiChecker<T, ApiNumberChecker<T>, void> {
return;
}
ApiNumberChecker<T>* checker =
- GetInternalField<ApiNumberChecker<T>, kV8WrapperObjectIndex>(receiver);
+ GetInternalField<ApiNumberChecker<T>>(receiver);
CHECK_EQ(info.Length(), checker->args_count_);
- checker->result_ |= ApiCheckerResult::kSlowCalled;
+ checker->SetCallSlow();
LocalContext env;
checker->slow_value_ = ConvertJSValue<T>::Get(info[0], env.local());
@@ -27714,17 +27780,15 @@ struct ApiNumberChecker : BasicApiChecker<T, ApiNumberChecker<T>, void> {
};
struct UnexpectedObjectChecker
- : BasicApiChecker<v8::ApiObject, UnexpectedObjectChecker, void> {
- static void FastCallback(v8::ApiObject receiver, v8::ApiObject argument,
+ : BasicApiChecker<v8::Local<v8::Value>, UnexpectedObjectChecker, void> {
+ static void FastCallback(v8::Local<v8::Object> receiver,
+ v8::Local<v8::Value> argument,
v8::FastApiCallbackOptions& options) {
- v8::Object* receiver_obj = reinterpret_cast<v8::Object*>(&receiver);
UnexpectedObjectChecker* receiver_ptr =
- GetInternalField<UnexpectedObjectChecker, kV8WrapperObjectIndex>(
- receiver_obj);
- receiver_ptr->result_ |= ApiCheckerResult::kFastCalled;
- v8::Value* argument_value = reinterpret_cast<v8::Value*>(&argument);
- if (argument_value->IsObject()) {
- v8::Object* argument_obj = reinterpret_cast<v8::Object*>(&argument);
+ GetInternalField<UnexpectedObjectChecker>(*receiver);
+ receiver_ptr->SetCallFast();
+ if (argument->IsObject()) {
+ v8::Object* argument_obj = v8::Object::Cast(*argument);
CHECK(!IsValidUnwrapObject(argument_obj));
}
}
@@ -27732,9 +27796,8 @@ struct UnexpectedObjectChecker
static void SlowCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Object* receiver_obj = v8::Object::Cast(*info.Holder());
UnexpectedObjectChecker* receiver_ptr =
- GetInternalField<UnexpectedObjectChecker, kV8WrapperObjectIndex>(
- receiver_obj);
- receiver_ptr->result_ |= ApiCheckerResult::kSlowCalled;
+ GetInternalField<UnexpectedObjectChecker>(receiver_obj);
+ receiver_ptr->SetCallSlow();
if (info[0]->IsObject()) {
v8::Object* argument_obj = v8::Object::Cast(*info[0]);
CHECK(!IsValidUnwrapObject(argument_obj));
@@ -27742,6 +27805,44 @@ struct UnexpectedObjectChecker
}
};
+struct EmbedderType {
+ int data;
+};
+
+struct ApiObjectChecker
+ : BasicApiChecker<v8::Local<v8::Value>, ApiObjectChecker, void> {
+ ApiObjectChecker(v8::FunctionTemplate* ctor, int data)
+ : ctor_(ctor), initial_data_(data) {}
+
+ static void FastCallback(v8::Local<v8::Object> receiver,
+ v8::Local<v8::Value> argument,
+ v8::FastApiCallbackOptions& options) {
+ ApiObjectChecker* receiver_ptr =
+ GetInternalField<ApiObjectChecker>(*receiver);
+ receiver_ptr->SetCallFast();
+
+ v8::Object* argument_obj = v8::Object::Cast(*argument);
+ EmbedderType* argument_ptr = GetInternalField<EmbedderType>(argument_obj);
+ CHECK(receiver_ptr->ctor_->IsLeafTemplateForApiObject(argument));
+
+ argument_ptr->data = receiver_ptr->initial_data_;
+ }
+ static void SlowCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
+ v8::Object* receiver_obj = v8::Object::Cast(*info.Holder());
+ ApiObjectChecker* receiver_ptr =
+ GetInternalField<ApiObjectChecker>(receiver_obj);
+ receiver_ptr->SetCallSlow();
+
+ CHECK(info[0]->IsObject());
+ v8::Local<v8::Object> argument_obj = info[0].As<v8::Object>();
+ CHECK(receiver_ptr->ctor_->IsLeafTemplateForApiObject(argument_obj));
+ }
+
+ v8::FunctionTemplate* ctor_;
+ int fast_value_ = 0;
+ int initial_data_;
+};
+
template <typename Value, typename Impl, typename Ret>
bool SetupTest(v8::Local<v8::Value> initial_value, LocalContext* env,
BasicApiChecker<Value, Impl, Ret>* checker,
@@ -27833,7 +27934,7 @@ void CallAndCheck(
"function func(arg) { return receiver.api_func(arg); }"
"%PrepareFunctionForOptimization(func);"
"func(value);");
- checker.result_ = ApiCheckerResult::kNotCalled;
+ checker.Reset();
v8::Isolate* isolate = CcTest::isolate();
v8::TryCatch try_catch(isolate);
@@ -27862,24 +27963,57 @@ void CallAndCheck(
}
}
+void CheckApiObjectArg() {
+ LocalContext env;
+ v8::Isolate* isolate = CcTest::isolate();
+ Local<v8::FunctionTemplate> api_obj_ctor = v8::FunctionTemplate::New(isolate);
+ v8::Local<v8::ObjectTemplate> api_obj_template =
+ api_obj_ctor->InstanceTemplate();
+ api_obj_template->SetInternalFieldCount(kV8WrapperObjectIndex + 1);
+
+ EmbedderType embedder_obj;
+ v8::Local<v8::Object> api_obj =
+ api_obj_template->NewInstance(env.local()).ToLocalChecked();
+ api_obj->SetAlignedPointerInInternalField(
+ kV8WrapperObjectIndex, reinterpret_cast<void*>(&embedder_obj));
+ CHECK(env->Global()
+ ->Set(env.local(), v8_str("api_object"), api_obj)
+ .FromJust());
+
+ const int data = 42;
+ ApiObjectChecker checker(*api_obj_ctor, data);
+ bool has_caught =
+ SetupTest(v8_num(data), &env, &checker,
+ "function func() { return receiver.api_func(api_object); }"
+ "%PrepareFunctionForOptimization(func);"
+ "func();");
+ checker.Reset();
+ CHECK(!has_caught);
+
+ CompileRun(
+ "%OptimizeFunctionOnNextCall(func);"
+ "func();");
+
+ CHECK(checker.DidCallFast());
+ CHECK_EQ(embedder_obj.data, data);
+ CHECK(!checker.DidCallSlow());
+}
+
template <typename T>
struct ReturnValueChecker : BasicApiChecker<T, ReturnValueChecker<T>, T> {
- static T FastCallback(v8::ApiObject receiver, T arg,
+ static T FastCallback(v8::Local<v8::Object> receiver, T arg,
v8::FastApiCallbackOptions& options) {
- v8::Object* receiver_obj = reinterpret_cast<v8::Object*>(&receiver);
ReturnValueChecker<T>* receiver_ptr =
- GetInternalField<ReturnValueChecker<T>, kV8WrapperObjectIndex>(
- receiver_obj);
- receiver_ptr->result_ |= ApiCheckerResult::kFastCalled;
+ GetInternalField<ReturnValueChecker<T>>(*receiver);
+ receiver_ptr->SetCallFast();
return arg;
}
static void SlowCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Object* receiver_obj = v8::Object::Cast(*info.Holder());
ReturnValueChecker<T>* receiver_ptr =
- GetInternalField<ReturnValueChecker<T>, kV8WrapperObjectIndex>(
- receiver_obj);
- receiver_ptr->result_ |= ApiCheckerResult::kSlowCalled;
+ GetInternalField<ReturnValueChecker<T>>(receiver_obj);
+ receiver_ptr->SetCallSlow();
info.GetReturnValue().Set(info[0]);
}
};
@@ -27896,7 +28030,7 @@ void CheckFastReturnValue(v8::Local<v8::Value> expected_value,
"%PrepareFunctionForOptimization(func);"
"func(value);");
CHECK(!has_caught);
- checker.result_ = ApiCheckerResult::kNotCalled;
+ checker.Reset();
v8::Isolate* isolate = CcTest::isolate();
v8::TryCatch try_catch(isolate);
@@ -28064,12 +28198,12 @@ TEST(FastApiStackSlot) {
#ifndef V8_LITE_MODE
if (i::FLAG_jitless) return;
- FLAG_SCOPE_EXTERNAL(opt);
- FLAG_SCOPE_EXTERNAL(turbo_fast_api_calls);
- FLAG_SCOPE_EXTERNAL(allow_natives_syntax);
+ v8::internal::FLAG_opt = true;
+ v8::internal::FLAG_turbo_fast_api_calls = true;
+ v8::internal::FLAG_allow_natives_syntax = true;
// Disable --always_opt, otherwise we haven't generated the necessary
// feedback to go down the "best optimization" path for the fast call.
- UNFLAG_SCOPE_EXTERNAL(always_opt);
+ v8::internal::FLAG_always_opt = false;
v8::Isolate* isolate = CcTest::isolate();
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
@@ -28095,7 +28229,7 @@ TEST(FastApiStackSlot) {
" };"
" return foo;"
"};");
- checker.result_ = ApiCheckerResult::kNotCalled;
+ checker.Reset();
v8::TryCatch try_catch(isolate);
v8::Local<v8::Value> foo =
@@ -28115,12 +28249,12 @@ TEST(FastApiCalls) {
#ifndef V8_LITE_MODE
if (i::FLAG_jitless) return;
- FLAG_SCOPE_EXTERNAL(opt);
- FLAG_SCOPE_EXTERNAL(turbo_fast_api_calls);
- FLAG_SCOPE_EXTERNAL(allow_natives_syntax);
+ v8::internal::FLAG_opt = true;
+ v8::internal::FLAG_turbo_fast_api_calls = true;
+ v8::internal::FLAG_allow_natives_syntax = true;
// Disable --always_opt, otherwise we haven't generated the necessary
// feedback to go down the "best optimization" path for the fast call.
- UNFLAG_SCOPE_EXTERNAL(always_opt);
+ v8::internal::FLAG_always_opt = false;
v8::Isolate* isolate = CcTest::isolate();
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
@@ -28571,8 +28705,8 @@ TEST(FastApiCalls) {
CallWithUnexpectedObjectType(v8_str("str"));
CallWithUnexpectedObjectType(CompileRun("new Proxy({}, {});"));
- // TODO(mslekova): Add corner cases for 64-bit values.
- // TODO(mslekova): Add main cases for float and double.
+ CheckApiObjectArg();
+
// TODO(mslekova): Restructure the tests so that the fast optimized calls
// are compared against the slow optimized calls.
// TODO(mslekova): Add tests for FTI that requires access check.
@@ -28943,3 +29077,52 @@ THREADED_TEST(MicrotaskQueueOfContext) {
microtask_queue.get());
CHECK_EQ(context->GetMicrotaskQueue(), microtask_queue.get());
}
+
+namespace {
+
+bool sab_constructor_enabled_value = false;
+
+bool MockSabConstructorEnabledCallback(v8::Local<v8::Context>) {
+ return sab_constructor_enabled_value;
+}
+
+} // namespace
+
+TEST(TestSetSabConstructorEnabledCallback) {
+ LocalContext env;
+ v8::Isolate* isolate = env->GetIsolate();
+ i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
+ v8::HandleScope scope(isolate);
+ v8::Local<v8::Context> context = v8::Context::New(CcTest::isolate());
+ i::Handle<i::Context> i_context = v8::Utils::OpenHandle(*context);
+
+ // {Isolate::IsSharedArrayBufferConstructorEnabled} calls the callback set by
+ // the embedder if such a callback exists. Otherwise it returns
+ // {FLAG_harmony_sharedarraybuffer}. First we test that the flag is returned
+ // correctly if no callback is set. Then we test that the flag is ignored if
+ // the callback is set.
+
+ i::FLAG_harmony_sharedarraybuffer = false;
+ i::FLAG_enable_sharedarraybuffer_per_context = false;
+ CHECK(!i_isolate->IsSharedArrayBufferConstructorEnabled(i_context));
+
+ i::FLAG_harmony_sharedarraybuffer = false;
+ i::FLAG_enable_sharedarraybuffer_per_context = false;
+ CHECK(!i_isolate->IsSharedArrayBufferConstructorEnabled(i_context));
+
+ i::FLAG_harmony_sharedarraybuffer = true;
+ i::FLAG_enable_sharedarraybuffer_per_context = false;
+ CHECK(i_isolate->IsSharedArrayBufferConstructorEnabled(i_context));
+
+ i::FLAG_harmony_sharedarraybuffer = true;
+ i::FLAG_enable_sharedarraybuffer_per_context = true;
+ CHECK(!i_isolate->IsSharedArrayBufferConstructorEnabled(i_context));
+
+ isolate->SetSharedArrayBufferConstructorEnabledCallback(
+ MockSabConstructorEnabledCallback);
+ sab_constructor_enabled_value = false;
+ CHECK(!i_isolate->IsSharedArrayBufferConstructorEnabled(i_context));
+
+ sab_constructor_enabled_value = true;
+ CHECK(i_isolate->IsSharedArrayBufferConstructorEnabled(i_context));
+}
diff --git a/deps/v8/test/cctest/test-assembler-arm.cc b/deps/v8/test/cctest/test-assembler-arm.cc
index 1dd4ecfbcb..475fe71e92 100644
--- a/deps/v8/test/cctest/test-assembler-arm.cc
+++ b/deps/v8/test/cctest/test-assembler-arm.cc
@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include <iostream> // NOLINT(readability/streams)
+#include <iostream>
#include "src/base/utils/random-number-generator.h"
#include "src/codegen/assembler-inl.h"
diff --git a/deps/v8/test/cctest/test-assembler-ia32.cc b/deps/v8/test/cctest/test-assembler-ia32.cc
index 3285be46cc..b95fe619d1 100644
--- a/deps/v8/test/cctest/test-assembler-ia32.cc
+++ b/deps/v8/test/cctest/test-assembler-ia32.cc
@@ -1550,6 +1550,35 @@ TEST(DeoptExitSizeIsFixed) {
}
}
+TEST(CpuFeatures_ProbeImpl) {
+ // Support for a newer extension implies support for the older extensions.
+ CHECK_IMPLIES(CpuFeatures::IsSupported(FMA3), CpuFeatures::IsSupported(AVX));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(AVX2), CpuFeatures::IsSupported(AVX));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(AVX),
+ CpuFeatures::IsSupported(SSE4_2));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(SSE4_2),
+ CpuFeatures::IsSupported(SSE4_1));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(SSE4_1),
+ CpuFeatures::IsSupported(SSSE3));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(SSSE3),
+ CpuFeatures::IsSupported(SSE3));
+
+ // Check the reverse, if an older extension is not supported, a newer
+ // extension cannot be supported.
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(SSE3),
+ !CpuFeatures::IsSupported(SSSE3));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(SSSE3),
+ !CpuFeatures::IsSupported(SSE4_1));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(SSE4_1),
+ !CpuFeatures::IsSupported(SSE4_2));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(SSE4_2),
+ !CpuFeatures::IsSupported(AVX));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(AVX),
+ !CpuFeatures::IsSupported(AVX2));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(AVX),
+ !CpuFeatures::IsSupported(FMA3));
+}
+
#undef __
} // namespace internal
diff --git a/deps/v8/test/cctest/test-assembler-mips.cc b/deps/v8/test/cctest/test-assembler-mips.cc
index bb6590d0a5..50428d815f 100644
--- a/deps/v8/test/cctest/test-assembler-mips.cc
+++ b/deps/v8/test/cctest/test-assembler-mips.cc
@@ -25,9 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include <iostream> // NOLINT(readability/streams)
-
-#include "src/init/v8.h"
+#include <iostream>
#include "src/base/utils/random-number-generator.h"
#include "src/codegen/assembler-inl.h"
@@ -35,7 +33,7 @@
#include "src/diagnostics/disassembler.h"
#include "src/execution/simulator.h"
#include "src/heap/factory.h"
-
+#include "src/init/v8.h"
#include "test/cctest/cctest.h"
namespace v8 {
diff --git a/deps/v8/test/cctest/test-assembler-mips64.cc b/deps/v8/test/cctest/test-assembler-mips64.cc
index 9cf7404e18..7ae265e687 100644
--- a/deps/v8/test/cctest/test-assembler-mips64.cc
+++ b/deps/v8/test/cctest/test-assembler-mips64.cc
@@ -25,9 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include <iostream> // NOLINT(readability/streams)
-
-#include "src/init/v8.h"
+#include <iostream>
#include "src/base/utils/random-number-generator.h"
#include "src/codegen/assembler-inl.h"
@@ -35,7 +33,7 @@
#include "src/diagnostics/disassembler.h"
#include "src/execution/simulator.h"
#include "src/heap/factory.h"
-
+#include "src/init/v8.h"
#include "test/cctest/cctest.h"
namespace v8 {
diff --git a/deps/v8/test/cctest/test-assembler-riscv64.cc b/deps/v8/test/cctest/test-assembler-riscv64.cc
index c9429f2bc1..ef275f53c8 100644
--- a/deps/v8/test/cctest/test-assembler-riscv64.cc
+++ b/deps/v8/test/cctest/test-assembler-riscv64.cc
@@ -27,7 +27,7 @@
#include <math.h>
-#include <iostream> // NOLINT(readability/streams)
+#include <iostream>
#include "src/base/utils/random-number-generator.h"
#include "src/codegen/assembler-inl.h"
@@ -76,6 +76,16 @@ using F5 = void*(void* p0, void* p1, int p2, int p3, int p4);
CHECK_EQ(expected_res, res); \
}
+#define UTEST_R1_FORM_WITH_RES_C(instr_name, in_type, out_type, rs1_val, \
+ expected_res) \
+ TEST(RISCV_UTEST_##instr_name) { \
+ i::FLAG_riscv_c_extension = true; \
+ CcTest::InitializeVM(); \
+ auto fn = [](MacroAssembler& assm) { __ instr_name(a0, a0); }; \
+ auto res = GenAndRunTest<out_type, in_type>(rs1_val, fn); \
+ CHECK_EQ(expected_res, res); \
+ }
+
#define UTEST_I_FORM_WITH_RES(instr_name, type, rs1_val, imm12, expected_res) \
TEST(RISCV_UTEST_##instr_name) { \
CcTest::InitializeVM(); \
@@ -554,8 +564,8 @@ UTEST_CONV_F_FROM_I(fcvt_d_lu, uint64_t, double,
(double)(std::numeric_limits<uint64_t>::max()))
// -- RV64C Standard Extension --
-UTEST_R1_FORM_WITH_RES(c_mv, int64_t, int64_t, 0x0f5600ab123400,
- 0x0f5600ab123400)
+UTEST_R1_FORM_WITH_RES_C(c_mv, int64_t, int64_t, 0x0f5600ab123400,
+ 0x0f5600ab123400)
// -- Assembler Pseudo Instructions --
UTEST_R1_FORM_WITH_RES(mv, int64_t, int64_t, 0x0f5600ab123400, 0x0f5600ab123400)
@@ -1201,6 +1211,7 @@ TEST(NAN_BOX) {
TEST(RVC_CI) {
// Test RV64C extension CI type instructions.
+ i::FLAG_riscv_c_extension = true;
CcTest::InitializeVM();
// Test c.addi
@@ -1253,6 +1264,7 @@ TEST(RVC_CI) {
}
TEST(RVC_CIW) {
+ i::FLAG_riscv_c_extension = true;
CcTest::InitializeVM();
// Test c.addi4spn
@@ -1270,6 +1282,7 @@ TEST(RVC_CIW) {
TEST(RVC_CR) {
// Test RV64C extension CR type instructions.
+ i::FLAG_riscv_c_extension = true;
CcTest::InitializeVM();
// Test c.add
@@ -1285,6 +1298,7 @@ TEST(RVC_CR) {
TEST(RVC_CA) {
// Test RV64C extension CA type instructions.
+ i::FLAG_riscv_c_extension = true;
CcTest::InitializeVM();
// Test c.sub
@@ -1350,6 +1364,7 @@ TEST(RVC_CA) {
TEST(RVC_LOAD_STORE_SP) {
// Test RV64C extension fldsp/fsdsp, lwsp/swsp, ldsp/sdsp.
+ i::FLAG_riscv_c_extension = true;
CcTest::InitializeVM();
{
@@ -1382,6 +1397,8 @@ TEST(RVC_LOAD_STORE_SP) {
TEST(RVC_LOAD_STORE_COMPRESSED) {
// Test RV64C extension fld, lw, ld.
+ i::FLAG_riscv_c_extension = true;
+
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
HandleScope scope(isolate);
@@ -1462,6 +1479,7 @@ TEST(RVC_LOAD_STORE_COMPRESSED) {
}
TEST(RVC_JUMP) {
+ i::FLAG_riscv_c_extension = true;
CcTest::InitializeVM();
Label L, C;
diff --git a/deps/v8/test/cctest/test-assembler-x64.cc b/deps/v8/test/cctest/test-assembler-x64.cc
index 572ef353c8..2ee56bc95e 100644
--- a/deps/v8/test/cctest/test-assembler-x64.cc
+++ b/deps/v8/test/cctest/test-assembler-x64.cc
@@ -2521,6 +2521,35 @@ TEST(AssemblerX64vmovups) {
CHECK_EQ(-1.5, f.Call(1.5, -1.5));
}
+TEST(CpuFeatures_ProbeImpl) {
+ // Support for a newer extension implies support for the older extensions.
+ CHECK_IMPLIES(CpuFeatures::IsSupported(FMA3), CpuFeatures::IsSupported(AVX));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(AVX2), CpuFeatures::IsSupported(AVX));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(AVX),
+ CpuFeatures::IsSupported(SSE4_2));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(SSE4_2),
+ CpuFeatures::IsSupported(SSE4_1));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(SSE4_1),
+ CpuFeatures::IsSupported(SSSE3));
+ CHECK_IMPLIES(CpuFeatures::IsSupported(SSSE3),
+ CpuFeatures::IsSupported(SSE3));
+
+ // Check the reverse, if an older extension is not supported, a newer
+ // extension cannot be supported.
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(SSE3),
+ !CpuFeatures::IsSupported(SSSE3));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(SSSE3),
+ !CpuFeatures::IsSupported(SSE4_1));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(SSE4_1),
+ !CpuFeatures::IsSupported(SSE4_2));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(SSE4_2),
+ !CpuFeatures::IsSupported(AVX));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(AVX),
+ !CpuFeatures::IsSupported(AVX2));
+ CHECK_IMPLIES(!CpuFeatures::IsSupported(AVX),
+ !CpuFeatures::IsSupported(FMA3));
+}
+
#undef __
} // namespace internal
diff --git a/deps/v8/test/cctest/test-code-pages.cc b/deps/v8/test/cctest/test-code-pages.cc
index 7d335f2174..fec21c275e 100644
--- a/deps/v8/test/cctest/test-code-pages.cc
+++ b/deps/v8/test/cctest/test-code-pages.cc
@@ -97,17 +97,16 @@ TEST(CodeRangeCorrectContents) {
std::vector<MemoryRange>* pages = i_isolate->GetCodePages();
- const base::AddressRegion& code_range =
- i_isolate->heap()->memory_allocator()->code_range();
- CHECK(!code_range.is_empty());
+ const base::AddressRegion& code_region = i_isolate->heap()->code_region();
+ CHECK(!code_region.is_empty());
// We should only have the code range and the embedded code range.
CHECK_EQ(2, pages->size());
- CHECK(PagesHasExactPage(pages, code_range.begin(), code_range.size()));
+ CHECK(PagesHasExactPage(pages, code_region.begin(), code_region.size()));
CHECK(PagesHasExactPage(
pages, reinterpret_cast<Address>(i_isolate->CurrentEmbeddedBlobCode()),
i_isolate->CurrentEmbeddedBlobCodeSize()));
if (i_isolate->is_short_builtin_calls_enabled()) {
- // In this case embedded blob code must be included via code_range.
+ // In this case embedded blob code must be included via code_region.
CHECK(PagesContainsRange(
pages, reinterpret_cast<Address>(i_isolate->embedded_blob_code()),
i_isolate->embedded_blob_code_size()));
@@ -129,9 +128,8 @@ TEST(CodePagesCorrectContents) {
// There might be other pages already.
CHECK_GE(pages->size(), 1);
- const base::AddressRegion& code_range =
- i_isolate->heap()->memory_allocator()->code_range();
- CHECK(code_range.is_empty());
+ const base::AddressRegion& code_region = i_isolate->heap()->code_region();
+ CHECK(code_region.is_empty());
// We should have the embedded code range even when there is no regular code
// range.
@@ -202,6 +200,13 @@ TEST(OptimizedCodeWithCodePages) {
Handle<JSFunction> foo =
Handle<JSFunction>::cast(v8::Utils::OpenHandle(*local_foo));
+ // If there is baseline code, check that it's only due to
+ // --always-sparkplug (if this check fails, we'll have to re-think this
+ // test).
+ if (foo->shared().HasBaselineData()) {
+ CHECK(FLAG_always_sparkplug);
+ return;
+ }
AbstractCode abstract_code = foo->abstract_code(i_isolate);
// We don't produce optimized code when run with --no-opt.
if (!abstract_code.IsCode() && FLAG_opt == false) return;
diff --git a/deps/v8/test/cctest/test-code-stub-assembler.cc b/deps/v8/test/cctest/test-code-stub-assembler.cc
index 67961c9476..dcff92bcfc 100644
--- a/deps/v8/test/cctest/test-code-stub-assembler.cc
+++ b/deps/v8/test/cctest/test-code-stub-assembler.cc
@@ -11,6 +11,7 @@
#include "src/builtins/builtins-string-gen.h"
#include "src/codegen/code-factory.h"
#include "src/codegen/code-stub-assembler.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/compiler/node.h"
#include "src/debug/debug.h"
#include "src/execution/isolate.h"
@@ -101,7 +102,7 @@ TEST(CallCFunctionWithCallerSavedRegisters) {
TNode<IntPtrT> const result =
m.UncheckedCast<IntPtrT>(m.CallCFunctionWithCallerSavedRegisters(
- fun_constant, type_intptr, kSaveFPRegs,
+ fun_constant, type_intptr, SaveFPRegsMode::kSave,
std::make_pair(type_intptr, m.IntPtrConstant(0)),
std::make_pair(type_intptr, m.IntPtrConstant(1)),
std::make_pair(type_intptr, m.IntPtrConstant(2))));
@@ -2024,7 +2025,7 @@ TEST(PopAndReturnFromTFCBuiltinWithStackParameters) {
// least one argument passed on stack.
using Descriptor = FlatMapIntoArrayDescriptor;
Descriptor descriptor;
- CHECK_LT(0, descriptor.GetStackParameterCount());
+ CHECK_LT(0, Descriptor::GetStackParameterCount());
CodeAssemblerTester asm_tester(isolate, Descriptor());
{
@@ -3069,7 +3070,8 @@ TEST(NewPromiseCapability) {
CHECK(result->promise().IsJSObject());
Handle<JSObject> promise(JSObject::cast(result->promise()), isolate);
- CHECK_EQ(constructor_fn->prototype_or_initial_map(), promise->map());
+ CHECK_EQ(constructor_fn->prototype_or_initial_map(kAcquireLoad),
+ promise->map());
CHECK(result->resolve().IsJSFunction());
CHECK(result->reject().IsJSFunction());
@@ -3956,7 +3958,7 @@ TEST(InstructionSchedulingCallerSavedRegisters) {
m.CallCFunctionWithCallerSavedRegisters(
m.ExternalConstant(
ExternalReference::smi_lexicographic_compare_function()),
- MachineType::Int32(), kSaveFPRegs,
+ MachineType::Int32(), SaveFPRegsMode::kSave,
std::make_pair(MachineType::Pointer(), isolate_ptr),
std::make_pair(MachineType::TaggedSigned(), m.SmiConstant(0)),
std::make_pair(MachineType::TaggedSigned(), m.SmiConstant(0)));
diff --git a/deps/v8/test/cctest/test-compiler.cc b/deps/v8/test/cctest/test-compiler.cc
index 3b895d7420..d044c7c405 100644
--- a/deps/v8/test/cctest/test-compiler.cc
+++ b/deps/v8/test/cctest/test-compiler.cc
@@ -693,7 +693,7 @@ void TestCompileFunctionInContextToStringImpl() {
} \
} while (false)
- { // NOLINT
+ {
CcTest::InitializeVM();
v8::Isolate* isolate = CcTest::isolate();
v8::HandleScope scope(isolate);
@@ -929,120 +929,6 @@ TEST(DeepEagerCompilationPeakMemory) {
CHECK_LE(peak_mem_4 - peak_mem_3, peak_mem_3);
}
-// TODO(mslekova): Remove the duplication with test-heap.cc
-static int AllocationSitesCount(Heap* heap) {
- int count = 0;
- for (Object site = heap->allocation_sites_list(); site.IsAllocationSite();) {
- AllocationSite cur = AllocationSite::cast(site);
- CHECK(cur.HasWeakNext());
- site = cur.weak_next();
- count++;
- }
- return count;
-}
-
-// This test simulates a specific race-condition if GC is triggered just
-// before CompilationDependencies::Commit is finished, and this changes
-// the pretenuring decision, thus causing a deoptimization.
-TEST(DecideToPretenureDuringCompilation) {
- // The test makes use of optimization and relies on deterministic
- // compilation.
- if (!i::FLAG_opt || i::FLAG_always_opt || i::FLAG_always_sparkplug ||
- i::FLAG_minor_mc || i::FLAG_stress_incremental_marking ||
- i::FLAG_optimize_for_size || i::FLAG_turbo_nci ||
- i::FLAG_stress_concurrent_allocation) {
- return;
- }
-
- FLAG_stress_gc_during_compilation = true;
- FLAG_allow_natives_syntax = true;
- FLAG_allocation_site_pretenuring = true;
- FLAG_flush_bytecode = false;
- // Turn on lazy feedback allocation, so we create exactly one allocation site.
- // Without lazy feedback allocation, we create two allocation sites.
- FLAG_lazy_feedback_allocation = true;
-
- // We want to trigger exactly 1 optimization.
- FLAG_use_osr = false;
-
- // We'll do manual initialization.
- ManualGCScope manual_gc_scope;
- v8::Isolate::CreateParams create_params;
-
- // This setting ensures Heap::MaximumSizeScavenge will return `true`.
- // We need to initialize the heap with at least 1 page, while keeping the
- // limit low, to ensure the new space fills even on 32-bit architectures.
- create_params.constraints.set_max_young_generation_size_in_bytes(
- 3 * Page::kPageSize);
- create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
- v8::Isolate* isolate = v8::Isolate::New(create_params);
-
- isolate->Enter();
- {
- i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
- Heap* heap = i_isolate->heap();
- GlobalHandles* global_handles = i_isolate->global_handles();
- HandleScope handle_scope(i_isolate);
-
- // The allocation site at the head of the list is ours.
- Handle<AllocationSite> site;
- {
- LocalContext context(isolate);
- v8::HandleScope scope(context->GetIsolate());
-
- int count = AllocationSitesCount(heap);
- CompileRun(
- "let arr = [];"
- "function foo(shouldKeep) {"
- " let local_array = new Array();"
- " if (shouldKeep) arr.push(local_array);"
- "}"
- "function bar(shouldKeep) {"
- " for (let i = 0; i < 10000; i++) {"
- " foo(shouldKeep);"
- " }"
- "}"
- "%PrepareFunctionForOptimization(bar);"
- "bar();");
-
- // This number should be >= kPretenureRatio * 10000,
- // where 10000 is the number of iterations in `bar`,
- // in order to make the ratio in DigestPretenuringFeedback close to 1.
- const int memento_found_bump = 8500;
-
- // One allocation site should have been created.
- int new_count = AllocationSitesCount(heap);
- CHECK_EQ(new_count, (count + 1));
- site = Handle<AllocationSite>::cast(global_handles->Create(
- AllocationSite::cast(heap->allocation_sites_list())));
- site->set_memento_found_count(memento_found_bump);
-
- CompileRun("%OptimizeFunctionOnNextCall(bar);");
- CompileRun("bar(true);");
-
- // The last call should have caused `foo` to bail out of compilation
- // due to dependency change (the pretenuring decision in this case).
- // This will cause recompilation.
-
- // Check `bar` can get optimized again, meaning the compiler state is
- // recoverable from this point.
- CompileRun(
- "%PrepareFunctionForOptimization(bar);"
- "%OptimizeFunctionOnNextCall(bar);");
- CompileRun("bar();");
-
- Handle<Object> foo_obj =
- JSReceiver::GetProperty(i_isolate, i_isolate->global_object(), "bar")
- .ToHandleChecked();
- Handle<JSFunction> bar = Handle<JSFunction>::cast(foo_obj);
-
- CHECK(bar->HasAttachedOptimizedCode());
- }
- }
- isolate->Exit();
- isolate->Dispose();
-}
-
namespace {
// Dummy external source stream which returns the whole source in one go.
diff --git a/deps/v8/test/cctest/test-concurrent-prototype.cc b/deps/v8/test/cctest/test-concurrent-prototype.cc
index 88e902d13d..44f6e02c75 100644
--- a/deps/v8/test/cctest/test-concurrent-prototype.cc
+++ b/deps/v8/test/cctest/test-concurrent-prototype.cc
@@ -45,9 +45,9 @@ class ConcurrentSearchThread final : public v8::base::Thread {
for (Handle<JSObject> js_obj : handles_) {
// Walk up the prototype chain all the way to the top.
- Handle<Map> map(js_obj->synchronized_map(), &local_heap);
+ Handle<Map> map(js_obj->map(kAcquireLoad), &local_heap);
while (!map->prototype().IsNull()) {
- Handle<Map> map_prototype_map(map->prototype().synchronized_map(),
+ Handle<Map> map_prototype_map(map->prototype().map(kAcquireLoad),
&local_heap);
if (!map_prototype_map->IsJSObjectMap()) {
break;
diff --git a/deps/v8/test/cctest/test-concurrent-string.cc b/deps/v8/test/cctest/test-concurrent-string.cc
index e6d9be60f5..081495aa55 100644
--- a/deps/v8/test/cctest/test-concurrent-string.cc
+++ b/deps/v8/test/cctest/test-concurrent-string.cc
@@ -82,7 +82,7 @@ class ConcurrentStringThread final : public v8::base::Thread {
sema_started_->Signal();
// Check the three operations we do from the StringRef concurrently: get the
// string, the nth character, and convert into a double.
- CHECK_EQ(str_->synchronized_length(), length_);
+ CHECK_EQ(str_->length(kAcquireLoad), length_);
for (unsigned int i = 0; i < length_; ++i) {
CHECK_EQ(str_->Get(i, &local_isolate), chars_[i]);
}
diff --git a/deps/v8/test/cctest/test-cpu-profiler.cc b/deps/v8/test/cctest/test-cpu-profiler.cc
index cd1fa753ba..2373fd2f3a 100644
--- a/deps/v8/test/cctest/test-cpu-profiler.cc
+++ b/deps/v8/test/cctest/test-cpu-profiler.cc
@@ -546,7 +546,8 @@ class ProfilerHelper {
v8::Local<v8::Function> function, v8::Local<v8::Value> argv[], int argc,
unsigned min_js_samples = 0, unsigned min_external_samples = 0,
ProfilingMode mode = ProfilingMode::kLeafNodeLineNumbers,
- unsigned max_samples = v8::CpuProfilingOptions::kNoSampleLimit);
+ unsigned max_samples = v8::CpuProfilingOptions::kNoSampleLimit,
+ v8::Local<v8::Context> context = v8::Local<v8::Context>());
v8::CpuProfiler* profiler() { return profiler_; }
@@ -559,11 +560,12 @@ v8::CpuProfile* ProfilerHelper::Run(v8::Local<v8::Function> function,
v8::Local<v8::Value> argv[], int argc,
unsigned min_js_samples,
unsigned min_external_samples,
- ProfilingMode mode, unsigned max_samples) {
+ ProfilingMode mode, unsigned max_samples,
+ v8::Local<v8::Context> context) {
v8::Local<v8::String> profile_name = v8_str("my_profile");
profiler_->SetSamplingInterval(50);
- profiler_->StartProfiling(profile_name, {mode, max_samples, 0});
+ profiler_->StartProfiling(profile_name, {mode, max_samples, 0, context});
v8::internal::CpuProfiler* iprofiler =
reinterpret_cast<v8::internal::CpuProfiler*>(profiler_);
@@ -3803,6 +3805,141 @@ TEST(Bug9151StaleCodeEntries) {
CHECK(callback);
}
+// Tests that functions from other contexts aren't recorded when filtering for
+// another context.
+TEST(ContextIsolation) {
+ i::FLAG_allow_natives_syntax = true;
+ LocalContext execution_env;
+ i::HandleScope scope(CcTest::i_isolate());
+
+ // Install CollectSample callback for more deterministic sampling.
+ v8::Local<v8::FunctionTemplate> func_template = v8::FunctionTemplate::New(
+ execution_env.local()->GetIsolate(), CallCollectSample);
+ v8::Local<v8::Function> func =
+ func_template->GetFunction(execution_env.local()).ToLocalChecked();
+ func->SetName(v8_str("CallCollectSample"));
+ execution_env->Global()
+ ->Set(execution_env.local(), v8_str("CallCollectSample"), func)
+ .FromJust();
+
+ ProfilerHelper helper(execution_env.local());
+ CompileRun(R"(
+ function optimized() {
+ CallCollectSample();
+ }
+
+ function unoptimized() {
+ CallCollectSample();
+ }
+
+ function start() {
+ // Test optimized functions
+ %PrepareFunctionForOptimization(optimized);
+ optimized();
+ optimized();
+ %OptimizeFunctionOnNextCall(optimized);
+ optimized();
+
+ // Test unoptimized functions
+ %NeverOptimizeFunction(unoptimized);
+ unoptimized();
+
+ // Test callback
+ CallCollectSample();
+ }
+ )");
+ v8::Local<v8::Function> function =
+ GetFunction(execution_env.local(), "start");
+
+ v8::CpuProfile* same_context_profile = helper.Run(
+ function, nullptr, 0, 0, 0, v8::CpuProfilingMode::kLeafNodeLineNumbers,
+ v8::CpuProfilingOptions::kNoSampleLimit, execution_env.local());
+ const v8::CpuProfileNode* root = same_context_profile->GetTopDownRoot();
+ const v8::CpuProfileNode* start_node = FindChild(root, "start");
+ CHECK(start_node);
+ const v8::CpuProfileNode* optimized_node = FindChild(start_node, "optimized");
+ CHECK(optimized_node);
+ const v8::CpuProfileNode* unoptimized_node =
+ FindChild(start_node, "unoptimized");
+ CHECK(unoptimized_node);
+ const v8::CpuProfileNode* callback_node =
+ FindChild(start_node, "CallCollectSample");
+ CHECK(callback_node);
+
+ {
+ LocalContext filter_env;
+ v8::CpuProfile* diff_context_profile = helper.Run(
+ function, nullptr, 0, 0, 0, v8::CpuProfilingMode::kLeafNodeLineNumbers,
+ v8::CpuProfilingOptions::kNoSampleLimit, filter_env.local());
+ const v8::CpuProfileNode* diff_root =
+ diff_context_profile->GetTopDownRoot();
+ // Ensure that no children were recorded (including callbacks, builtins).
+ CHECK(!FindChild(diff_root, "start"));
+ }
+}
+
+// Tests that when a native context that's being filtered is moved, we continue
+// to track its execution.
+TEST(ContextFilterMovedNativeContext) {
+ if (i::FLAG_enable_third_party_heap) return;
+ i::FLAG_allow_natives_syntax = true;
+ i::FLAG_manual_evacuation_candidates_selection = true;
+ LocalContext env;
+ i::HandleScope scope(CcTest::i_isolate());
+
+ {
+ // Install CollectSample callback for more deterministic sampling.
+ v8::Local<v8::FunctionTemplate> sample_func_template =
+ v8::FunctionTemplate::New(env.local()->GetIsolate(), CallCollectSample);
+ v8::Local<v8::Function> sample_func =
+ sample_func_template->GetFunction(env.local()).ToLocalChecked();
+ sample_func->SetName(v8_str("CallCollectSample"));
+ env->Global()
+ ->Set(env.local(), v8_str("CallCollectSample"), sample_func)
+ .FromJust();
+
+ // Install a function that triggers the native context to be moved.
+ v8::Local<v8::FunctionTemplate> move_func_template =
+ v8::FunctionTemplate::New(
+ env.local()->GetIsolate(),
+ [](const v8::FunctionCallbackInfo<v8::Value>& info) {
+ i::Isolate* isolate =
+ reinterpret_cast<i::Isolate*>(info.GetIsolate());
+ i::heap::ForceEvacuationCandidate(
+ i::Page::FromHeapObject(isolate->raw_native_context()));
+ CcTest::CollectAllGarbage();
+ });
+ v8::Local<v8::Function> move_func =
+ move_func_template->GetFunction(env.local()).ToLocalChecked();
+ move_func->SetName(v8_str("ForceNativeContextMove"));
+ env->Global()
+ ->Set(env.local(), v8_str("ForceNativeContextMove"), move_func)
+ .FromJust();
+
+ ProfilerHelper helper(env.local());
+ CompileRun(R"(
+ function start() {
+ ForceNativeContextMove();
+ CallCollectSample();
+ }
+ )");
+ v8::Local<v8::Function> function = GetFunction(env.local(), "start");
+
+ v8::CpuProfile* profile = helper.Run(
+ function, nullptr, 0, 0, 0, v8::CpuProfilingMode::kLeafNodeLineNumbers,
+ v8::CpuProfilingOptions::kNoSampleLimit, env.local());
+ const v8::CpuProfileNode* root = profile->GetTopDownRoot();
+ const v8::CpuProfileNode* start_node = FindChild(root, "start");
+ CHECK(start_node);
+
+ // Verify that after moving the native context, CallCollectSample is still
+ // recorded.
+ const v8::CpuProfileNode* callback_node =
+ FindChild(start_node, "CallCollectSample");
+ CHECK(callback_node);
+ }
+}
+
enum class EntryCountMode { kAll, kOnlyInlined };
// Count the number of unique source positions.
@@ -3934,17 +4071,16 @@ UNINITIALIZED_TEST(DetailedSourcePositionAPI_Inlining) {
namespace {
struct FastApiReceiver {
- static void FastCallback(v8::ApiObject receiver, int argument,
+ static void FastCallback(v8::Local<v8::Object> receiver, int argument,
v8::FastApiCallbackOptions& options) {
// TODO(mslekova): The fallback is not used by the test. Replace this
// with a CHECK.
- v8::Object* receiver_obj = reinterpret_cast<v8::Object*>(&receiver);
- if (!IsValidUnwrapObject(receiver_obj)) {
+ if (!IsValidUnwrapObject(*receiver)) {
options.fallback = 1;
return;
}
FastApiReceiver* receiver_ptr =
- GetInternalField<FastApiReceiver, kV8WrapperObjectIndex>(receiver_obj);
+ GetInternalField<FastApiReceiver>(*receiver);
receiver_ptr->result_ |= ApiCheckerResult::kFastCalled;
@@ -3957,11 +4093,10 @@ struct FastApiReceiver {
static void SlowCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
v8::Object* receiver_obj = v8::Object::Cast(*info.Holder());
if (!IsValidUnwrapObject(receiver_obj)) {
- info.GetIsolate()->ThrowException(v8_str("Called with a non-object."));
+ info.GetIsolate()->ThrowError("Called with a non-object.");
return;
}
- FastApiReceiver* receiver =
- GetInternalField<FastApiReceiver, kV8WrapperObjectIndex>(receiver_obj);
+ FastApiReceiver* receiver = GetInternalField<FastApiReceiver>(receiver_obj);
receiver->result_ |= ApiCheckerResult::kSlowCalled;
}
diff --git a/deps/v8/test/cctest/test-debug-helper.cc b/deps/v8/test/cctest/test-debug-helper.cc
index 6e3033d993..5601bce42f 100644
--- a/deps/v8/test/cctest/test-debug-helper.cc
+++ b/deps/v8/test/cctest/test-debug-helper.cc
@@ -229,10 +229,13 @@ TEST(GetObjectProperties) {
d::ObjectPropertiesResultPtr props2;
{
heap_addresses.read_only_space_first_page = 0;
+ uintptr_t map_ptr = props->properties[0]->address;
+ uintptr_t map_map_ptr = *reinterpret_cast<i::Tagged_t*>(map_ptr);
+#if V8_MAP_PACKING
+ map_map_ptr = reinterpret_cast<i::MapWord*>(&map_map_ptr)->ToMap().ptr();
+#endif
uintptr_t map_address =
- d::GetObjectProperties(
- *reinterpret_cast<i::Tagged_t*>(props->properties[0]->address),
- &ReadMemory, heap_addresses)
+ d::GetObjectProperties(map_map_ptr, &ReadMemory, heap_addresses)
->properties[0]
->address;
MemoryFailureRegion failure(map_address, map_address + i::Map::kSize);
@@ -338,8 +341,11 @@ TEST(GetObjectProperties) {
// Verify the result for a heap object field which is itself a struct: the
// "descriptors" field on a DescriptorArray.
// Start by getting the object's map and the map's descriptor array.
- props = d::GetObjectProperties(ReadProp<i::Tagged_t>(*props, "map"),
- &ReadMemory, heap_addresses);
+ uintptr_t map_ptr = ReadProp<i::Tagged_t>(*props, "map");
+#if V8_MAP_PACKING
+ map_ptr = reinterpret_cast<i::MapWord*>(&map_ptr)->ToMap().ptr();
+#endif
+ props = d::GetObjectProperties(map_ptr, &ReadMemory, heap_addresses);
props = d::GetObjectProperties(
ReadProp<i::Tagged_t>(*props, "instance_descriptors"), &ReadMemory,
heap_addresses);
diff --git a/deps/v8/test/cctest/test-debug.cc b/deps/v8/test/cctest/test-debug.cc
index 2723f5fa14..2566c2f17c 100644
--- a/deps/v8/test/cctest/test-debug.cc
+++ b/deps/v8/test/cctest/test-debug.cc
@@ -108,13 +108,14 @@ static void ClearBreakPoint(i::Handle<i::BreakPoint> break_point) {
// Change break on exception.
-static void ChangeBreakOnException(bool caught, bool uncaught) {
- v8::internal::Debug* debug = CcTest::i_isolate()->debug();
+static void ChangeBreakOnException(v8::Isolate* isolate, bool caught,
+ bool uncaught) {
+ v8::internal::Debug* debug =
+ reinterpret_cast<v8::internal::Isolate*>(isolate)->debug();
debug->ChangeBreakOnException(v8::internal::BreakException, caught);
debug->ChangeBreakOnException(v8::internal::BreakUncaughtException, uncaught);
}
-
// Prepare to step to next break location.
static void PrepareStep(i::StepAction step_action) {
v8::internal::Debug* debug = CcTest::i_isolate()->debug();
@@ -3028,7 +3029,7 @@ TEST(DebugBreakInWrappedScript) {
static const char* expect = "TypeError: o[0] is not a function";
// For this test, we want to break on uncaught exceptions:
- ChangeBreakOnException(true, true);
+ ChangeBreakOnException(isolate, true, true);
{
v8::ScriptCompiler::Source script_source(v8_str(source));
@@ -3492,7 +3493,7 @@ TEST(SyntaxErrorEventOnSyntaxException) {
v8::HandleScope scope(env->GetIsolate());
// For this test, we want to break on uncaught exceptions:
- ChangeBreakOnException(false, true);
+ ChangeBreakOnException(env->GetIsolate(), false, true);
ScriptCompiledDelegate delegate;
v8::debug::SetDebugDelegate(env->GetIsolate(), &delegate);
@@ -3539,22 +3540,31 @@ class ExceptionEventCounter : public v8::debug::DebugDelegate {
int exception_event_count = 0;
};
-TEST(NoBreakOnStackOverflow) {
+UNINITIALIZED_TEST(NoBreakOnStackOverflow) {
+ // We must set FLAG_stack_size before initializing the isolate.
i::FLAG_stack_size = 100;
- LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
+ isolate->Enter();
+ {
+ LocalContext env(isolate);
+ v8::HandleScope scope(isolate);
- ChangeBreakOnException(true, true);
+ ChangeBreakOnException(isolate, true, true);
- ExceptionEventCounter delegate;
- v8::debug::SetDebugDelegate(env->GetIsolate(), &delegate);
- CHECK_EQ(0, delegate.exception_event_count);
+ ExceptionEventCounter delegate;
+ v8::debug::SetDebugDelegate(isolate, &delegate);
+ CHECK_EQ(0, delegate.exception_event_count);
- CompileRun(
- "function f() { return f(); }"
- "try { f() } catch {}");
+ CompileRun(
+ "function f() { return f(); }"
+ "try { f() } catch {}");
- CHECK_EQ(0, delegate.exception_event_count);
+ CHECK_EQ(0, delegate.exception_event_count);
+ }
+ isolate->Exit();
+ isolate->Dispose();
}
// Tests that break event is sent when event listener is reset.
@@ -4165,7 +4175,7 @@ TEST(DebugPromiseInterceptedByTryCatch) {
DebugEventExpectNoException delegate;
v8::debug::SetDebugDelegate(isolate, &delegate);
v8::Local<v8::Context> context = env.local();
- ChangeBreakOnException(false, true);
+ ChangeBreakOnException(isolate, false, true);
v8::Local<v8::FunctionTemplate> fun =
v8::FunctionTemplate::New(isolate, TryCatchWrappedThrowCallback);
@@ -5347,7 +5357,7 @@ TEST(TerminateOnResumeRunJavaScriptAtBreakpoint) {
TEST(TerminateOnResumeAtException) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
- ChangeBreakOnException(true, true);
+ ChangeBreakOnException(env->GetIsolate(), true, true);
SetTerminateOnResumeDelegate delegate;
v8::debug::SetDebugDelegate(env->GetIsolate(), &delegate);
v8::Local<v8::Context> context = env.local();
@@ -5429,7 +5439,7 @@ TEST(TerminateOnResumeAtBreakOnEntryUserDefinedFunction) {
TEST(TerminateOnResumeAtUnhandledRejection) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
- ChangeBreakOnException(true, true);
+ ChangeBreakOnException(env->GetIsolate(), true, true);
SetTerminateOnResumeDelegate delegate;
v8::debug::SetDebugDelegate(env->GetIsolate(), &delegate);
v8::Local<v8::Context> context = env.local();
@@ -5477,7 +5487,7 @@ TEST(TerminateOnResumeAtUnhandledRejectionCppImpl) {
LocalContext env;
v8::Isolate* isolate = env->GetIsolate();
v8::HandleScope scope(env->GetIsolate());
- ChangeBreakOnException(true, true);
+ ChangeBreakOnException(isolate, true, true);
SetTerminateOnResumeDelegate delegate;
auto data = std::make_pair(isolate, &env);
v8::debug::SetDebugDelegate(env->GetIsolate(), &delegate);
@@ -5513,7 +5523,7 @@ TEST(TerminateOnResumeFromMicrotask) {
v8::HandleScope scope(env->GetIsolate());
SetTerminateOnResumeDelegate delegate(
SetTerminateOnResumeDelegate::kPerformMicrotaskCheckpointAtBreakpoint);
- ChangeBreakOnException(true, true);
+ ChangeBreakOnException(env->GetIsolate(), true, true);
v8::debug::SetDebugDelegate(env->GetIsolate(), &delegate);
{
v8::TryCatch try_catch(env->GetIsolate());
@@ -5588,7 +5598,7 @@ class SemaphoreTriggerOnBreak : public v8::debug::DebugDelegate {
TEST(TerminateOnResumeFromOtherThread) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
- ChangeBreakOnException(true, true);
+ ChangeBreakOnException(env->GetIsolate(), true, true);
SemaphoreTriggerOnBreak delegate;
v8::debug::SetDebugDelegate(env->GetIsolate(), &delegate);
@@ -5645,7 +5655,7 @@ class InterruptionBreakRightNow : public v8::base::Thread {
TEST(TerminateOnResumeAtInterruptFromOtherThread) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
- ChangeBreakOnException(true, true);
+ ChangeBreakOnException(env->GetIsolate(), true, true);
SetTerminateOnResumeDelegate delegate;
v8::debug::SetDebugDelegate(env->GetIsolate(), &delegate);
diff --git a/deps/v8/test/cctest/test-disasm-riscv64.cc b/deps/v8/test/cctest/test-disasm-riscv64.cc
index c5c7a2eb41..7c665a5cbb 100644
--- a/deps/v8/test/cctest/test-disasm-riscv64.cc
+++ b/deps/v8/test/cctest/test-disasm-riscv64.cc
@@ -465,6 +465,7 @@ TEST(PSEUDO) {
}
TEST(RV64C) {
+ i::FLAG_riscv_c_extension = true;
SET_UP();
COMPARE(c_nop(), "00000001 nop");
diff --git a/deps/v8/test/cctest/test-disasm-x64.cc b/deps/v8/test/cctest/test-disasm-x64.cc
index e86eb33c9c..3e0d8b14f1 100644
--- a/deps/v8/test/cctest/test-disasm-x64.cc
+++ b/deps/v8/test/cctest/test-disasm-x64.cc
@@ -559,6 +559,8 @@ TEST(DisasmX64) {
__ cmpltps(xmm5, Operand(rbx, rcx, times_4, 10000));
__ cmpleps(xmm5, xmm1);
__ cmpleps(xmm5, Operand(rbx, rcx, times_4, 10000));
+ __ cmpunordps(xmm5, xmm1);
+ __ cmpunordps(xmm5, Operand(rbx, rcx, times_4, 10000));
__ cmpneqps(xmm5, xmm1);
__ cmpneqps(xmm5, Operand(rbx, rcx, times_4, 10000));
__ cmpnltps(xmm5, xmm1);
@@ -573,6 +575,8 @@ TEST(DisasmX64) {
__ cmpltpd(xmm5, Operand(rbx, rcx, times_4, 10000));
__ cmplepd(xmm5, xmm1);
__ cmplepd(xmm5, Operand(rbx, rcx, times_4, 10000));
+ __ cmpunordpd(xmm5, xmm1);
+ __ cmpunordpd(xmm5, Operand(rbx, rcx, times_4, 10000));
__ cmpneqpd(xmm5, xmm1);
__ cmpneqpd(xmm5, Operand(rbx, rcx, times_4, 10000));
__ cmpnltpd(xmm5, xmm1);
@@ -727,6 +731,8 @@ TEST(DisasmX64) {
__ vcmpltps(xmm5, xmm4, Operand(rbx, rcx, times_4, 10000));
__ vcmpleps(xmm5, xmm4, xmm1);
__ vcmpleps(xmm5, xmm4, Operand(rbx, rcx, times_4, 10000));
+ __ vcmpunordps(xmm5, xmm4, xmm1);
+ __ vcmpunordps(xmm5, xmm4, Operand(rbx, rcx, times_4, 10000));
__ vcmpneqps(xmm5, xmm4, xmm1);
__ vcmpneqps(xmm5, xmm4, Operand(rbx, rcx, times_4, 10000));
__ vcmpnltps(xmm5, xmm4, xmm1);
@@ -741,6 +747,8 @@ TEST(DisasmX64) {
__ vcmpltpd(xmm5, xmm4, Operand(rbx, rcx, times_4, 10000));
__ vcmplepd(xmm5, xmm4, xmm1);
__ vcmplepd(xmm5, xmm4, Operand(rbx, rcx, times_4, 10000));
+ __ vcmpunordpd(xmm5, xmm4, xmm1);
+ __ vcmpunordpd(xmm5, xmm4, Operand(rbx, rcx, times_4, 10000));
__ vcmpneqpd(xmm5, xmm4, xmm1);
__ vcmpneqpd(xmm5, xmm4, Operand(rbx, rcx, times_4, 10000));
__ vcmpnltpd(xmm5, xmm4, xmm1);
diff --git a/deps/v8/test/cctest/test-double.cc b/deps/v8/test/cctest/test-double.cc
index e2f2ddcbfb..8e78b63af5 100644
--- a/deps/v8/test/cctest/test-double.cc
+++ b/deps/v8/test/cctest/test-double.cc
@@ -156,7 +156,7 @@ TEST(NormalizedBoundaries) {
// 1.5 does not have a significand of the form 2^p (for some p).
// Therefore its boundaries are at the same distance.
CHECK(diy_fp.f() - boundary_minus.f() == boundary_plus.f() - diy_fp.f());
- CHECK((1 << 10) == diy_fp.f() - boundary_minus.f()); // NOLINT
+ CHECK((1 << 10) == diy_fp.f() - boundary_minus.f());
diy_fp = Double(1.0).AsNormalizedDiyFp();
Double(1.0).NormalizedBoundaries(&boundary_minus, &boundary_plus);
@@ -165,8 +165,8 @@ TEST(NormalizedBoundaries) {
// 1.0 does have a significand of the form 2^p (for some p).
// Therefore its lower boundary is twice as close as the upper boundary.
CHECK_GT(boundary_plus.f() - diy_fp.f(), diy_fp.f() - boundary_minus.f());
- CHECK((1 << 9) == diy_fp.f() - boundary_minus.f()); // NOLINT
- CHECK((1 << 10) == boundary_plus.f() - diy_fp.f()); // NOLINT
+ CHECK((1 << 9) == diy_fp.f() - boundary_minus.f());
+ CHECK((1 << 10) == boundary_plus.f() - diy_fp.f());
uint64_t min_double64 = 0x0000'0000'0000'0001;
diy_fp = Double(min_double64).AsNormalizedDiyFp();
@@ -177,8 +177,7 @@ TEST(NormalizedBoundaries) {
// Therefore its boundaries are at the same distance.
CHECK(diy_fp.f() - boundary_minus.f() == boundary_plus.f() - diy_fp.f());
// Denormals have their boundaries much closer.
- CHECK((static_cast<uint64_t>(1) << 62) ==
- diy_fp.f() - boundary_minus.f()); // NOLINT
+ CHECK((static_cast<uint64_t>(1) << 62) == diy_fp.f() - boundary_minus.f());
uint64_t smallest_normal64 = 0x0010'0000'0000'0000;
diy_fp = Double(smallest_normal64).AsNormalizedDiyFp();
@@ -189,7 +188,7 @@ TEST(NormalizedBoundaries) {
// Even though the significand is of the form 2^p (for some p), its boundaries
// are at the same distance. (This is the only exception).
CHECK(diy_fp.f() - boundary_minus.f() == boundary_plus.f() - diy_fp.f());
- CHECK((1 << 10) == diy_fp.f() - boundary_minus.f()); // NOLINT
+ CHECK((1 << 10) == diy_fp.f() - boundary_minus.f());
uint64_t largest_denormal64 = 0x000F'FFFF'FFFF'FFFF;
diy_fp = Double(largest_denormal64).AsNormalizedDiyFp();
@@ -198,7 +197,7 @@ TEST(NormalizedBoundaries) {
CHECK_EQ(diy_fp.e(), boundary_minus.e());
CHECK_EQ(diy_fp.e(), boundary_plus.e());
CHECK(diy_fp.f() - boundary_minus.f() == boundary_plus.f() - diy_fp.f());
- CHECK((1 << 11) == diy_fp.f() - boundary_minus.f()); // NOLINT
+ CHECK((1 << 11) == diy_fp.f() - boundary_minus.f());
uint64_t max_double64 = 0x7FEF'FFFF'FFFF'FFFF;
diy_fp = Double(max_double64).AsNormalizedDiyFp();
@@ -208,7 +207,7 @@ TEST(NormalizedBoundaries) {
// max-value does not have a significand of the form 2^p (for some p).
// Therefore its boundaries are at the same distance.
CHECK(diy_fp.f() - boundary_minus.f() == boundary_plus.f() - diy_fp.f());
- CHECK((1 << 10) == diy_fp.f() - boundary_minus.f()); // NOLINT
+ CHECK((1 << 10) == diy_fp.f() - boundary_minus.f());
}
diff --git a/deps/v8/test/cctest/test-factory.cc b/deps/v8/test/cctest/test-factory.cc
index 8f261ced4b..a15853ecf0 100644
--- a/deps/v8/test/cctest/test-factory.cc
+++ b/deps/v8/test/cctest/test-factory.cc
@@ -61,7 +61,7 @@ TEST(Factory_CodeBuilder) {
// Create a big function that ends up in CODE_LO_SPACE.
const int instruction_size =
- MemoryChunkLayout::MaxRegularCodeObjectSize() + 1;
+ Heap::MaxRegularHeapObjectSize(AllocationType::kCode) + 1;
std::unique_ptr<byte[]> instructions(new byte[instruction_size]);
CodeDesc desc;
diff --git a/deps/v8/test/cctest/test-feedback-vector.cc b/deps/v8/test/cctest/test-feedback-vector.cc
index a454d96dd1..868191ddc1 100644
--- a/deps/v8/test/cctest/test-feedback-vector.cc
+++ b/deps/v8/test/cctest/test-feedback-vector.cc
@@ -184,6 +184,49 @@ TEST(VectorCallICStates) {
CHECK_EQ(GENERIC, nexus.ic_state());
}
+// Test the Call IC states transfer with Function.prototype.apply
+TEST(VectorCallICStateApply) {
+ if (!i::FLAG_use_ic) return;
+ if (i::FLAG_always_opt) return;
+ FLAG_allow_natives_syntax = true;
+
+ CcTest::InitializeVM();
+ LocalContext context;
+ v8::HandleScope scope(context->GetIsolate());
+ Isolate* isolate = CcTest::i_isolate();
+ // Make sure function f has a call that uses a type feedback slot.
+ CompileRun(
+ "var F;"
+ "%EnsureFeedbackVectorForFunction(foo);"
+ "function foo() { return F.apply(null, arguments); }"
+ "F = Math.min;"
+ "foo();");
+ Handle<JSFunction> foo = GetFunction("foo");
+ Handle<JSFunction> F = GetFunction("F");
+ Handle<FeedbackVector> feedback_vector =
+ Handle<FeedbackVector>(foo->feedback_vector(), isolate);
+ FeedbackSlot slot(4);
+ FeedbackNexus nexus(feedback_vector, slot);
+ CHECK_EQ(MONOMORPHIC, nexus.ic_state());
+ CHECK_EQ(CallFeedbackContent::kReceiver, nexus.GetCallFeedbackContent());
+ HeapObject heap_object;
+ CHECK(nexus.GetFeedback()->GetHeapObjectIfWeak(&heap_object));
+ CHECK_EQ(*F, heap_object);
+
+ CompileRun(
+ "F = Math.max;"
+ "foo();");
+ CHECK_EQ(MONOMORPHIC, nexus.ic_state());
+ CHECK_EQ(CallFeedbackContent::kTarget, nexus.GetCallFeedbackContent());
+ CHECK(nexus.GetFeedback()->GetHeapObjectIfWeak(&heap_object));
+ CHECK_EQ(*isolate->function_prototype_apply(), heap_object);
+
+ CompileRun(
+ "F.apply = (function () { return; });"
+ "foo();");
+ CHECK_EQ(GENERIC, nexus.ic_state());
+}
+
TEST(VectorCallFeedback) {
if (!i::FLAG_use_ic) return;
if (i::FLAG_always_opt) return;
diff --git a/deps/v8/test/cctest/test-field-type-tracking.cc b/deps/v8/test/cctest/test-field-type-tracking.cc
index f387fd2953..8ae7be6233 100644
--- a/deps/v8/test/cctest/test-field-type-tracking.cc
+++ b/deps/v8/test/cctest/test-field-type-tracking.cc
@@ -1115,9 +1115,9 @@ void TestReconfigureDataFieldAttribute_GeneralizeField(
// Reconfigure attributes of property |kSplitProp| of |map2| to NONE, which
// should generalize representations in |map1|.
- Handle<Map> new_map =
- Map::ReconfigureExistingProperty(isolate, map2, InternalIndex(kSplitProp),
- kData, NONE, PropertyConstness::kConst);
+ Handle<Map> new_map = MapUpdater::ReconfigureExistingProperty(
+ isolate, map2, InternalIndex(kSplitProp), kData, NONE,
+ PropertyConstness::kConst);
// |map2| should be mosly left unchanged but marked unstable and if the
// source property was constant it should also be transitioned to kMutable.
@@ -1503,9 +1503,9 @@ static void TestReconfigureProperty_CustomPropertyAfterTargetMap(
// Reconfigure attributes of property |kSplitProp| of |map2| to NONE, which
// should generalize representations in |map1|.
- Handle<Map> new_map =
- Map::ReconfigureExistingProperty(isolate, map2, InternalIndex(kSplitProp),
- kData, NONE, PropertyConstness::kConst);
+ Handle<Map> new_map = MapUpdater::ReconfigureExistingProperty(
+ isolate, map2, InternalIndex(kSplitProp), kData, NONE,
+ PropertyConstness::kConst);
// |map2| should be left unchanged but marked unstable.
CHECK(!map2->is_stable());
@@ -2551,9 +2551,9 @@ struct ReconfigureAsDataPropertyOperator {
expectations->SetDataField(descriptor_.as_int(),
PropertyConstness::kMutable, representation_,
heap_type_);
- return Map::ReconfigureExistingProperty(isolate, map, descriptor_, kData,
- attributes_,
- PropertyConstness::kConst);
+ return MapUpdater::ReconfigureExistingProperty(isolate, map, descriptor_,
+ kData, attributes_,
+ PropertyConstness::kConst);
}
};
@@ -2569,9 +2569,9 @@ struct ReconfigureAsAccessorPropertyOperator {
Handle<Map> DoTransition(Isolate* isolate, Expectations* expectations,
Handle<Map> map) {
expectations->SetAccessorField(descriptor_.as_int());
- return Map::ReconfigureExistingProperty(isolate, map, descriptor_,
- kAccessor, attributes_,
- PropertyConstness::kConst);
+ return MapUpdater::ReconfigureExistingProperty(isolate, map, descriptor_,
+ kAccessor, attributes_,
+ PropertyConstness::kConst);
}
};
diff --git a/deps/v8/test/cctest/test-global-handles.cc b/deps/v8/test/cctest/test-global-handles.cc
index acb5de444f..0ff266621b 100644
--- a/deps/v8/test/cctest/test-global-handles.cc
+++ b/deps/v8/test/cctest/test-global-handles.cc
@@ -388,6 +388,8 @@ TEST(TracedGlobalToUnmodifiedJSApiObjectDiesOnScavenge) {
}
TEST(TracedGlobalToJSApiObjectWithIdentityHashSurvivesScavenge) {
+ if (FLAG_single_generation) return;
+
ManualGCScope manual_gc;
CcTest::InitializeVM();
Isolate* i_isolate = CcTest::i_isolate();
@@ -441,6 +443,7 @@ TEST(WeakHandleToUnmodifiedJSApiObjectSurvivesMarkCompactWhenInHandle) {
}
TEST(TracedGlobalToJSApiObjectWithModifiedMapSurvivesScavenge) {
+ if (FLAG_single_generation) return;
CcTest::InitializeVM();
v8::Isolate* isolate = CcTest::isolate();
LocalContext context;
@@ -462,6 +465,7 @@ TEST(TracedGlobalToJSApiObjectWithModifiedMapSurvivesScavenge) {
}
TEST(TracedGlobalTOJsApiObjectWithElementsSurvivesScavenge) {
+ if (FLAG_single_generation) return;
CcTest::InitializeVM();
v8::Isolate* isolate = CcTest::isolate();
LocalContext context;
diff --git a/deps/v8/test/cctest/test-heap-profiler.cc b/deps/v8/test/cctest/test-heap-profiler.cc
index d84e817051..9f80891a58 100644
--- a/deps/v8/test/cctest/test-heap-profiler.cc
+++ b/deps/v8/test/cctest/test-heap-profiler.cc
@@ -508,6 +508,34 @@ TEST(HeapSnapshotHeapNumbers) {
CHECK_EQ(v8::HeapGraphNode::kHeapNumber, b->GetType());
}
+TEST(HeapSnapshotHeapNumbersCaptureNumericValue) {
+ LocalContext env;
+ v8::HandleScope scope(env->GetIsolate());
+ v8::HeapProfiler* heap_profiler = env->GetIsolate()->GetHeapProfiler();
+ CompileRun(
+ "a = 1; // a is Smi\n"
+ "b = 2.5; // b is HeapNumber");
+ const v8::HeapSnapshot* snapshot =
+ heap_profiler->TakeHeapSnapshot(nullptr, nullptr, true, true);
+ CHECK(ValidateSnapshot(snapshot));
+ const v8::HeapGraphNode* global = GetGlobalObject(snapshot);
+ const v8::HeapGraphNode* a =
+ GetProperty(env->GetIsolate(), global, v8::HeapGraphEdge::kProperty, "a");
+ CHECK(a);
+ CHECK_EQ(1, a->GetChildrenCount());
+ v8::String::Utf8Value value_a(CcTest::isolate(),
+ a->GetChild(0)->GetToNode()->GetName());
+ CHECK_EQ(0, strcmp("1", *value_a));
+
+ const v8::HeapGraphNode* b =
+ GetProperty(env->GetIsolate(), global, v8::HeapGraphEdge::kProperty, "b");
+ CHECK(b);
+ CHECK_EQ(2, b->GetChildrenCount());
+ v8::String::Utf8Value value_b(CcTest::isolate(),
+ b->GetChild(0)->GetToNode()->GetName());
+ CHECK_EQ(0, strcmp("2.5", *value_b));
+}
+
TEST(HeapSnapshotHeapBigInts) {
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -1809,6 +1837,7 @@ TEST(NativeSnapshotObjectId) {
}
TEST(NativeSnapshotObjectIdMoving) {
+ if (i::FLAG_enable_third_party_heap) return;
// Required to allow moving specific objects.
i::FLAG_manual_evacuation_candidates_selection = true;
@@ -3891,7 +3920,7 @@ TEST(SamplingHeapProfilerPretenuredInlineAllocations) {
if (!CcTest::i_isolate()->use_optimizer() || i::FLAG_always_opt) return;
if (i::FLAG_gc_global || i::FLAG_stress_compaction ||
i::FLAG_stress_incremental_marking ||
- i::FLAG_stress_concurrent_allocation) {
+ i::FLAG_stress_concurrent_allocation || i::FLAG_single_generation) {
return;
}
diff --git a/deps/v8/test/cctest/test-inobject-slack-tracking.cc b/deps/v8/test/cctest/test-inobject-slack-tracking.cc
index 0a88302cd9..9f7f91130f 100644
--- a/deps/v8/test/cctest/test-inobject-slack-tracking.cc
+++ b/deps/v8/test/cctest/test-inobject-slack-tracking.cc
@@ -101,8 +101,9 @@ bool IsObjectShrinkable(JSObject obj) {
int unused = obj.map().UnusedPropertyFields();
if (unused == 0) return false;
+ Address packed_filler = MapWord::FromMap(*filler_map).ptr();
for (int i = inobject_properties - unused; i < inobject_properties; i++) {
- if (*filler_map != GetFieldValue(obj, i)) {
+ if (packed_filler != GetFieldValue(obj, i).ptr()) {
return false;
}
}
@@ -838,6 +839,8 @@ TEST(ObjectLiteralPropertyBackingStoreSize) {
}
TEST(SlowModeSubclass) {
+ if (FLAG_stress_concurrent_allocation) return;
+
// Avoid eventual completion of in-object slack tracking.
FLAG_always_opt = false;
CcTest::InitializeVM();
diff --git a/deps/v8/test/cctest/test-js-to-wasm.cc b/deps/v8/test/cctest/test-js-to-wasm.cc
index d0f5122a32..21cfa77b21 100644
--- a/deps/v8/test/cctest/test-js-to-wasm.cc
+++ b/deps/v8/test/cctest/test-js-to-wasm.cc
@@ -262,12 +262,13 @@ enum TestMode { kJSToWasmInliningDisabled, kJSToWasmInliningEnabled };
class FastJSWasmCallTester {
public:
FastJSWasmCallTester()
- : allow_natives_syntax_(&i::FLAG_allow_natives_syntax, true),
- inline_js_wasm_calls_(&i::FLAG_turbo_inline_js_wasm_calls, true),
- stress_background_compile_(&i::FLAG_stress_background_compile, false),
- allocator_(),
+ : allocator_(),
zone_(&allocator_, ZONE_NAME),
- builder_(zone_.New<WasmModuleBuilder>(&zone_)) {}
+ builder_(zone_.New<WasmModuleBuilder>(&zone_)) {
+ i::FLAG_allow_natives_syntax = true;
+ i::FLAG_turbo_inline_js_wasm_calls = true;
+ i::FLAG_stress_background_compile = false;
+ }
void DeclareCallback(const char* name, FunctionSig* signature,
const char* module) {
@@ -591,23 +592,25 @@ class FastJSWasmCallTester {
v8::Local<v8::Value> CompileRunWithJSWasmCallNodeObserver(
const std::string& js_code) {
+ // Note: Make sure to not capture stack locations (e.g. `this`) here since
+ // these lambdas are executed on another thread.
+ const auto test_mode = test_mode_;
compiler::ModificationObserver js_wasm_call_observer(
[](const compiler::Node* node) {
CHECK_EQ(compiler::IrOpcode::kJSCall, node->opcode());
},
- [this](const compiler::Node* node,
- const compiler::ObservableNodeState& old_state)
+ [test_mode](const compiler::Node* node,
+ const compiler::ObservableNodeState& old_state)
-> compiler::NodeObserver::Observation {
if (old_state.opcode() != node->opcode()) {
CHECK_EQ(compiler::IrOpcode::kJSCall, old_state.opcode());
// JS-to-Wasm inlining is disabled when targeting 32 bits if the
// Wasm function signature contains an I64.
- if (test_mode_ == kJSToWasmInliningEnabled) {
- CHECK_EQ(compiler::IrOpcode::kJSWasmCall, node->opcode());
- } else {
- CHECK_EQ(compiler::IrOpcode::kCall, node->opcode());
- }
+ CHECK_EQ(test_mode == kJSToWasmInliningEnabled
+ ? compiler::IrOpcode::kJSWasmCall
+ : compiler::IrOpcode::kCall,
+ node->opcode());
return compiler::NodeObserver::Observation::kStop;
}
@@ -740,9 +743,6 @@ class FastJSWasmCallTester {
return string_stream.str();
}
- i::FlagScope<bool> allow_natives_syntax_;
- i::FlagScope<bool> inline_js_wasm_calls_;
- i::FlagScope<bool> stress_background_compile_;
AccountingAllocator allocator_;
Zone zone_;
WasmModuleBuilder* builder_;
diff --git a/deps/v8/test/cctest/test-js-weak-refs.cc b/deps/v8/test/cctest/test-js-weak-refs.cc
index 7838e8ae25..411bfa0858 100644
--- a/deps/v8/test/cctest/test-js-weak-refs.cc
+++ b/deps/v8/test/cctest/test-js-weak-refs.cc
@@ -892,6 +892,11 @@ TEST(JSWeakRefScavengedInWorklist) {
weak_ref = inner_scope.CloseAndEscape(inner_weak_ref);
}
+ // Store weak_ref in Global such that it is part of the root set when
+ // starting incremental marking.
+ v8::Global<Value> global_weak_ref(
+ CcTest::isolate(), Utils::ToLocal(Handle<Object>::cast(weak_ref)));
+
// Do marking. This puts the WeakRef above into the js_weak_refs worklist
// since its target isn't marked.
CHECK(
@@ -934,6 +939,10 @@ TEST(JSWeakRefTenuredInWorklist) {
weak_ref = inner_scope.CloseAndEscape(inner_weak_ref);
}
+ // Store weak_ref such that it is part of the root set when starting
+ // incremental marking.
+ v8::Global<Value> global_weak_ref(
+ CcTest::isolate(), Utils::ToLocal(Handle<Object>::cast(weak_ref)));
JSWeakRef old_weak_ref_location = *weak_ref;
// Do marking. This puts the WeakRef above into the js_weak_refs worklist
diff --git a/deps/v8/test/cctest/test-log-stack-tracer.cc b/deps/v8/test/cctest/test-log-stack-tracer.cc
index 0f7b9a0fcc..61e9a2b965 100644
--- a/deps/v8/test/cctest/test-log-stack-tracer.cc
+++ b/deps/v8/test/cctest/test-log-stack-tracer.cc
@@ -245,7 +245,7 @@ static void CFuncDoTrace(byte dummy_param) {
#elif V8_CC_MSVC
// Approximate a frame pointer address. We compile without base pointers,
// so we can't trust ebp/rbp.
- fp = reinterpret_cast<Address>(&dummy_param) - 2 * sizeof(void*); // NOLINT
+ fp = reinterpret_cast<Address>(&dummy_param) - 2 * sizeof(void*);
#else
#error Unexpected platform.
#endif
diff --git a/deps/v8/test/cctest/test-macro-assembler-mips.cc b/deps/v8/test/cctest/test-macro-assembler-mips.cc
index a149c0cca9..03d778ef24 100644
--- a/deps/v8/test/cctest/test-macro-assembler-mips.cc
+++ b/deps/v8/test/cctest/test-macro-assembler-mips.cc
@@ -26,7 +26,8 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <stdlib.h>
-#include <iostream> // NOLINT(readability/streams)
+
+#include <iostream>
#include "src/api/api-inl.h"
#include "src/base/utils/random-number-generator.h"
diff --git a/deps/v8/test/cctest/test-macro-assembler-mips64.cc b/deps/v8/test/cctest/test-macro-assembler-mips64.cc
index 4b91b5b0e9..69cfa0cfda 100644
--- a/deps/v8/test/cctest/test-macro-assembler-mips64.cc
+++ b/deps/v8/test/cctest/test-macro-assembler-mips64.cc
@@ -26,7 +26,8 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <stdlib.h>
-#include <iostream> // NOLINT(readability/streams)
+
+#include <iostream>
#include "src/codegen/assembler-inl.h"
#include "src/codegen/macro-assembler.h"
diff --git a/deps/v8/test/cctest/test-macro-assembler-riscv64.cc b/deps/v8/test/cctest/test-macro-assembler-riscv64.cc
index a5bb94166c..3817026a24 100644
--- a/deps/v8/test/cctest/test-macro-assembler-riscv64.cc
+++ b/deps/v8/test/cctest/test-macro-assembler-riscv64.cc
@@ -27,7 +27,7 @@
#include <stdlib.h>
-#include <iostream> // NOLINT(readability/streams)
+#include <iostream>
#include "src/base/utils/random-number-generator.h"
#include "src/codegen/assembler-inl.h"
@@ -1550,6 +1550,21 @@ TEST(DeoptExitSizeIsFixed) {
}
}
+TEST(AddWithImm) {
+ CcTest::InitializeVM();
+#define Test(Op, Input, Expected) \
+ { \
+ auto fn = [](MacroAssembler& masm) { __ Op(a0, zero_reg, Input); }; \
+ CHECK_EQ(static_cast<int64_t>(Expected), GenAndRunTest(fn)); \
+ }
+
+ Test(Add64, 4095, 4095);
+ Test(Add32, 4095, 4095);
+ Test(Sub64, 4095, -4095);
+ Test(Sub32, 4095, -4095);
+#undef Test
+}
+
#undef __
} // namespace internal
diff --git a/deps/v8/test/cctest/test-macro-assembler-x64.cc b/deps/v8/test/cctest/test-macro-assembler-x64.cc
index b0df384376..00ef735fc2 100644
--- a/deps/v8/test/cctest/test-macro-assembler-x64.cc
+++ b/deps/v8/test/cctest/test-macro-assembler-x64.cc
@@ -61,14 +61,14 @@ static void EntryCode(MacroAssembler* masm) {
// Smi constant register is callee save.
__ pushq(kRootRegister);
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
- __ pushq(kPointerCageBaseRegister);
+ __ pushq(kPtrComprCageBaseRegister);
#endif
__ InitializeRootRegister();
}
static void ExitCode(MacroAssembler* masm) {
#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
- __ popq(kPointerCageBaseRegister);
+ __ popq(kPtrComprCageBaseRegister);
#endif
__ popq(kRootRegister);
}
@@ -101,7 +101,7 @@ TEST(Smi) {
static void TestMoveSmi(MacroAssembler* masm, Label* exit, int id, Smi value) {
__ movl(rax, Immediate(id));
__ Move(rcx, value);
- __ Set(rdx, static_cast<intptr_t>(value.ptr()));
+ __ Move(rdx, static_cast<intptr_t>(value.ptr()));
__ cmpq(rcx, rdx);
__ j(not_equal, exit);
}
@@ -258,35 +258,35 @@ TEST(SmiTag) {
__ movq(rax, Immediate(1)); // Test number.
__ movq(rcx, Immediate(0));
__ SmiTag(rcx);
- __ Set(rdx, Smi::zero().ptr());
+ __ Move(rdx, Smi::zero().ptr());
__ cmp_tagged(rcx, rdx);
__ j(not_equal, &exit);
__ movq(rax, Immediate(2)); // Test number.
__ movq(rcx, Immediate(1024));
__ SmiTag(rcx);
- __ Set(rdx, Smi::FromInt(1024).ptr());
+ __ Move(rdx, Smi::FromInt(1024).ptr());
__ cmp_tagged(rcx, rdx);
__ j(not_equal, &exit);
__ movq(rax, Immediate(3)); // Test number.
__ movq(rcx, Immediate(-1));
__ SmiTag(rcx);
- __ Set(rdx, Smi::FromInt(-1).ptr());
+ __ Move(rdx, Smi::FromInt(-1).ptr());
__ cmp_tagged(rcx, rdx);
__ j(not_equal, &exit);
__ movq(rax, Immediate(4)); // Test number.
__ movq(rcx, Immediate(Smi::kMaxValue));
__ SmiTag(rcx);
- __ Set(rdx, Smi::FromInt(Smi::kMaxValue).ptr());
+ __ Move(rdx, Smi::FromInt(Smi::kMaxValue).ptr());
__ cmp_tagged(rcx, rdx);
__ j(not_equal, &exit);
__ movq(rax, Immediate(5)); // Test number.
__ movq(rcx, Immediate(Smi::kMinValue));
__ SmiTag(rcx);
- __ Set(rdx, Smi::FromInt(Smi::kMinValue).ptr());
+ __ Move(rdx, Smi::FromInt(Smi::kMinValue).ptr());
__ cmp_tagged(rcx, rdx);
__ j(not_equal, &exit);
@@ -295,35 +295,35 @@ TEST(SmiTag) {
__ movq(rax, Immediate(6)); // Test number.
__ movq(rcx, Immediate(0));
__ SmiTag(r8, rcx);
- __ Set(rdx, Smi::zero().ptr());
+ __ Move(rdx, Smi::zero().ptr());
__ cmp_tagged(r8, rdx);
__ j(not_equal, &exit);
__ movq(rax, Immediate(7)); // Test number.
__ movq(rcx, Immediate(1024));
__ SmiTag(r8, rcx);
- __ Set(rdx, Smi::FromInt(1024).ptr());
+ __ Move(rdx, Smi::FromInt(1024).ptr());
__ cmp_tagged(r8, rdx);
__ j(not_equal, &exit);
__ movq(rax, Immediate(8)); // Test number.
__ movq(rcx, Immediate(-1));
__ SmiTag(r8, rcx);
- __ Set(rdx, Smi::FromInt(-1).ptr());
+ __ Move(rdx, Smi::FromInt(-1).ptr());
__ cmp_tagged(r8, rdx);
__ j(not_equal, &exit);
__ movq(rax, Immediate(9)); // Test number.
__ movq(rcx, Immediate(Smi::kMaxValue));
__ SmiTag(r8, rcx);
- __ Set(rdx, Smi::FromInt(Smi::kMaxValue).ptr());
+ __ Move(rdx, Smi::FromInt(Smi::kMaxValue).ptr());
__ cmp_tagged(r8, rdx);
__ j(not_equal, &exit);
__ movq(rax, Immediate(10)); // Test number.
__ movq(rcx, Immediate(Smi::kMinValue));
__ SmiTag(r8, rcx);
- __ Set(rdx, Smi::FromInt(Smi::kMinValue).ptr());
+ __ Move(rdx, Smi::FromInt(Smi::kMinValue).ptr());
__ cmp_tagged(r8, rdx);
__ j(not_equal, &exit);
@@ -425,7 +425,7 @@ void TestSmiIndex(MacroAssembler* masm, Label* exit, int id, int x) {
SmiIndex index = masm->SmiToIndex(rdx, rcx, i);
CHECK(index.reg == rcx || index.reg == rdx);
__ shlq(index.reg, Immediate(index.scale));
- __ Set(r8, static_cast<intptr_t>(x) << i);
+ __ Move(r8, static_cast<intptr_t>(x) << i);
__ cmpq(index.reg, r8);
__ j(not_equal, exit);
__ incq(rax);
@@ -433,7 +433,7 @@ void TestSmiIndex(MacroAssembler* masm, Label* exit, int id, int x) {
index = masm->SmiToIndex(rcx, rcx, i);
CHECK(index.reg == rcx);
__ shlq(rcx, Immediate(index.scale));
- __ Set(r8, static_cast<intptr_t>(x) << i);
+ __ Move(r8, static_cast<intptr_t>(x) << i);
__ cmpq(rcx, r8);
__ j(not_equal, exit);
__ incq(rax);
diff --git a/deps/v8/test/cctest/test-mementos.cc b/deps/v8/test/cctest/test-mementos.cc
index 2e21b7f6b5..678065eca2 100644
--- a/deps/v8/test/cctest/test-mementos.cc
+++ b/deps/v8/test/cctest/test-mementos.cc
@@ -61,7 +61,7 @@ static void SetUpNewSpaceWithPoisonedMementoAtTop() {
TEST(Regress340063) {
CcTest::InitializeVM();
- if (!i::FLAG_allocation_site_pretenuring) return;
+ if (!i::FLAG_allocation_site_pretenuring || FLAG_single_generation) return;
v8::HandleScope scope(CcTest::isolate());
SetUpNewSpaceWithPoisonedMementoAtTop();
@@ -74,7 +74,7 @@ TEST(Regress340063) {
TEST(Regress470390) {
CcTest::InitializeVM();
- if (!i::FLAG_allocation_site_pretenuring) return;
+ if (!i::FLAG_allocation_site_pretenuring || FLAG_single_generation) return;
v8::HandleScope scope(CcTest::isolate());
SetUpNewSpaceWithPoisonedMementoAtTop();
@@ -91,7 +91,7 @@ TEST(Regress470390) {
TEST(BadMementoAfterTopForceScavenge) {
CcTest::InitializeVM();
- if (!i::FLAG_allocation_site_pretenuring) return;
+ if (!i::FLAG_allocation_site_pretenuring || FLAG_single_generation) return;
v8::HandleScope scope(CcTest::isolate());
SetUpNewSpaceWithPoisonedMementoAtTop();
diff --git a/deps/v8/test/cctest/test-parsing.cc b/deps/v8/test/cctest/test-parsing.cc
index 1c55995efa..2d56b72a8f 100644
--- a/deps/v8/test/cctest/test-parsing.cc
+++ b/deps/v8/test/cctest/test-parsing.cc
@@ -7157,6 +7157,16 @@ TEST(ForOfExpressionError) {
RunParserSyncTest(context_data, data, kError);
}
+TEST(ForOfAsync) {
+ const char* context_data[][2] = {{"", ""},
+ {"'use strict';", ""},
+ {"function foo(){ 'use strict';", "}"},
+ {nullptr, nullptr}};
+
+ const char* data[] = {"for(\\u0061sync of []) {}", nullptr};
+
+ RunParserSyncTest(context_data, data, kSuccess);
+}
TEST(InvalidUnicodeEscapes) {
const char* context_data[][2] = {
diff --git a/deps/v8/test/cctest/test-poison-disasm-arm64.cc b/deps/v8/test/cctest/test-poison-disasm-arm64.cc
index 48b72a004f..cec69b6e9d 100644
--- a/deps/v8/test/cctest/test-poison-disasm-arm64.cc
+++ b/deps/v8/test/cctest/test-poison-disasm-arm64.cc
@@ -29,7 +29,11 @@ TEST(DisasmPoisonMonomorphicLoad) {
i::FLAG_allow_natives_syntax = true;
i::FLAG_untrusted_code_mitigations = true;
+#ifdef V8_ENABLE_DEBUG_CODE
i::FLAG_debug_code = false;
+#else
+ STATIC_ASSERT(i::FLAG_debug_code == false);
+#endif
CcTest::InitializeVM();
v8::HandleScope scope(CcTest::isolate());
@@ -79,7 +83,11 @@ TEST(DisasmPoisonPolymorphicLoad) {
i::FLAG_allow_natives_syntax = true;
i::FLAG_untrusted_code_mitigations = true;
+#ifdef V8_ENABLE_DEBUG_CODE
i::FLAG_debug_code = false;
+#else
+ STATIC_ASSERT(i::FLAG_debug_code == false);
+#endif
CcTest::InitializeVM();
v8::HandleScope scope(CcTest::isolate());
diff --git a/deps/v8/test/cctest/test-ptr-compr-cage.cc b/deps/v8/test/cctest/test-ptr-compr-cage.cc
new file mode 100644
index 0000000000..e5be7fb29c
--- /dev/null
+++ b/deps/v8/test/cctest/test-ptr-compr-cage.cc
@@ -0,0 +1,175 @@
+// Copyright 2021 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.
+
+#include "src/common/globals.h"
+#include "src/execution/isolate-inl.h"
+#include "src/heap/heap-inl.h"
+#include "test/cctest/cctest.h"
+
+#ifdef V8_COMPRESS_POINTERS
+
+namespace v8 {
+namespace internal {
+
+UNINITIALIZED_TEST(PtrComprCageAndIsolateRoot) {
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+
+ v8::Isolate* isolate1 = v8::Isolate::New(create_params);
+ Isolate* i_isolate1 = reinterpret_cast<Isolate*>(isolate1);
+ v8::Isolate* isolate2 = v8::Isolate::New(create_params);
+ Isolate* i_isolate2 = reinterpret_cast<Isolate*>(isolate2);
+
+#ifdef V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
+ CHECK_EQ(i_isolate1->isolate_root(), i_isolate1->cage_base());
+ CHECK_EQ(i_isolate2->isolate_root(), i_isolate2->cage_base());
+ CHECK_NE(i_isolate1->cage_base(), i_isolate2->cage_base());
+#endif
+
+#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+ CHECK_NE(i_isolate1->isolate_root(), i_isolate1->cage_base());
+ CHECK_NE(i_isolate2->isolate_root(), i_isolate2->cage_base());
+ CHECK_NE(i_isolate1->isolate_root(), i_isolate2->isolate_root());
+ CHECK_EQ(i_isolate1->cage_base(), i_isolate2->cage_base());
+#endif
+
+ isolate1->Dispose();
+ isolate2->Dispose();
+}
+
+UNINITIALIZED_TEST(PtrComprCageCodeRange) {
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
+ Isolate* i_isolate = reinterpret_cast<Isolate*>(isolate);
+
+ VirtualMemoryCage* cage = i_isolate->GetPtrComprCage();
+ if (i_isolate->RequiresCodeRange()) {
+ CHECK(!i_isolate->heap()->code_region().is_empty());
+ CHECK(cage->reservation()->InVM(i_isolate->heap()->code_region().begin(),
+ i_isolate->heap()->code_region().size()));
+ }
+
+ isolate->Dispose();
+}
+
+#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+UNINITIALIZED_TEST(SharedPtrComprCage) {
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+
+ v8::Isolate* isolate1 = v8::Isolate::New(create_params);
+ Isolate* i_isolate1 = reinterpret_cast<Isolate*>(isolate1);
+ v8::Isolate* isolate2 = v8::Isolate::New(create_params);
+ Isolate* i_isolate2 = reinterpret_cast<Isolate*>(isolate2);
+
+ Factory* factory1 = i_isolate1->factory();
+ Factory* factory2 = i_isolate2->factory();
+
+ {
+ HandleScope scope1(i_isolate1);
+ HandleScope scope2(i_isolate2);
+
+ Handle<FixedArray> isolate1_object = factory1->NewFixedArray(100);
+ Handle<FixedArray> isolate2_object = factory2->NewFixedArray(100);
+
+ CHECK_EQ(GetPtrComprCageBase(*isolate1_object),
+ GetPtrComprCageBase(*isolate2_object));
+ }
+
+ isolate1->Dispose();
+ isolate2->Dispose();
+}
+
+UNINITIALIZED_TEST(SharedPtrComprCageCodeRange) {
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+
+ v8::Isolate* isolate1 = v8::Isolate::New(create_params);
+ Isolate* i_isolate1 = reinterpret_cast<Isolate*>(isolate1);
+ v8::Isolate* isolate2 = v8::Isolate::New(create_params);
+ Isolate* i_isolate2 = reinterpret_cast<Isolate*>(isolate2);
+
+ if (i_isolate1->RequiresCodeRange() || i_isolate2->RequiresCodeRange()) {
+ CHECK_EQ(i_isolate1->heap()->code_region(),
+ i_isolate2->heap()->code_region());
+ }
+
+ isolate1->Dispose();
+ isolate2->Dispose();
+}
+
+namespace {
+constexpr int kIsolatesToAllocate = 25;
+
+class IsolateAllocatingThread final : public v8::base::Thread {
+ public:
+ IsolateAllocatingThread()
+ : v8::base::Thread(base::Thread::Options("IsolateAllocatingThread")) {}
+
+ void Run() override {
+ std::vector<v8::Isolate*> isolates;
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+
+ for (int i = 0; i < kIsolatesToAllocate; i++) {
+ isolates.push_back(v8::Isolate::New(create_params));
+ }
+
+ for (auto* isolate : isolates) {
+ isolate->Dispose();
+ }
+ }
+};
+} // namespace
+
+UNINITIALIZED_TEST(SharedPtrComprCageRace) {
+ // Make a bunch of Isolates concurrently as a smoke test against races during
+ // initialization and de-initialization.
+
+ std::vector<std::unique_ptr<IsolateAllocatingThread>> threads;
+ constexpr int kThreads = 10;
+
+ for (int i = 0; i < kThreads; i++) {
+ auto thread = std::make_unique<IsolateAllocatingThread>();
+ CHECK(thread->Start());
+ threads.push_back(std::move(thread));
+ }
+
+ for (auto& thread : threads) {
+ thread->Join();
+ }
+}
+
+#ifdef V8_SHARED_RO_HEAP
+UNINITIALIZED_TEST(SharedPtrComprCageImpliesSharedReadOnlyHeap) {
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+
+ v8::Isolate* isolate1 = v8::Isolate::New(create_params);
+ Isolate* i_isolate1 = reinterpret_cast<Isolate*>(isolate1);
+ v8::Isolate* isolate2 = v8::Isolate::New(create_params);
+ Isolate* i_isolate2 = reinterpret_cast<Isolate*>(isolate2);
+
+ CHECK_EQ(i_isolate1->read_only_heap(), i_isolate2->read_only_heap());
+
+ // Spot check that some read-only roots are the same.
+ CHECK_EQ(ReadOnlyRoots(i_isolate1).the_hole_value(),
+ ReadOnlyRoots(i_isolate2).the_hole_value());
+ CHECK_EQ(ReadOnlyRoots(i_isolate1).code_map(),
+ ReadOnlyRoots(i_isolate2).code_map());
+ CHECK_EQ(ReadOnlyRoots(i_isolate1).exception(),
+ ReadOnlyRoots(i_isolate2).exception());
+
+ isolate1->Dispose();
+ isolate2->Dispose();
+}
+#endif // V8_SHARED_RO_HEAP
+#endif // V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_COMPRESS_POINTERS
diff --git a/deps/v8/test/cctest/test-serialize.cc b/deps/v8/test/cctest/test-serialize.cc
index 2884dfd136..5fbc9600e1 100644
--- a/deps/v8/test/cctest/test-serialize.cc
+++ b/deps/v8/test/cctest/test-serialize.cc
@@ -1849,6 +1849,7 @@ TEST(CodeSerializerLargeCodeObject) {
}
TEST(CodeSerializerLargeCodeObjectWithIncrementalMarking) {
+ if (!FLAG_incremental_marking) return;
if (FLAG_never_compact) return;
ManualGCScope manual_gc_scope;
FLAG_always_opt = false;
diff --git a/deps/v8/test/cctest/test-simple-riscv64.cc b/deps/v8/test/cctest/test-simple-riscv64.cc
index 991c6c09da..c5feda47df 100644
--- a/deps/v8/test/cctest/test-simple-riscv64.cc
+++ b/deps/v8/test/cctest/test-simple-riscv64.cc
@@ -25,7 +25,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include <iostream> // NOLINT(readability/streams)
+#include <iostream>
#include "src/base/utils/random-number-generator.h"
#include "src/codegen/assembler-inl.h"
diff --git a/deps/v8/test/cctest/test-strings.cc b/deps/v8/test/cctest/test-strings.cc
index 735040a4c5..7c3016eeb8 100644
--- a/deps/v8/test/cctest/test-strings.cc
+++ b/deps/v8/test/cctest/test-strings.cc
@@ -1087,7 +1087,7 @@ TEST(ExternalShortStringAdd) {
" var non_one_byte_chars = "
"'\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1"
"234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\u1234\\"
- "u1234';" // NOLINT
+ "u1234';"
" if (one_byte_chars.length != max_length) return 1;"
" if (non_one_byte_chars.length != max_length) return 2;"
" var one_byte = Array(max_length + 1);"
diff --git a/deps/v8/test/cctest/test-weakmaps.cc b/deps/v8/test/cctest/test-weakmaps.cc
index fe7a2d0c0f..cba563242f 100644
--- a/deps/v8/test/cctest/test-weakmaps.cc
+++ b/deps/v8/test/cctest/test-weakmaps.cc
@@ -230,6 +230,7 @@ TEST(WeakMapScavenge) {
// by other paths are correctly recorded in the slots buffer.
TEST(Regress2060a) {
if (i::FLAG_never_compact) return;
+ if (i::FLAG_enable_third_party_heap) return;
FLAG_always_compact = true;
FLAG_stress_concurrent_allocation = false; // For SimulateFullSpace.
LocalContext context;
@@ -253,7 +254,8 @@ TEST(Regress2060a) {
Handle<JSObject> object =
factory->NewJSObject(function, AllocationType::kOld);
CHECK(!Heap::InYoungGeneration(*object));
- CHECK(!first_page->Contains(object->address()));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ !first_page->Contains(object->address()));
int32_t hash = key->GetOrCreateHash(isolate).value();
JSWeakCollection::Set(weakmap, key, object, hash);
}
@@ -292,7 +294,8 @@ TEST(Regress2060b) {
for (int i = 0; i < 32; i++) {
keys[i] = factory->NewJSObject(function, AllocationType::kOld);
CHECK(!Heap::InYoungGeneration(*keys[i]));
- CHECK(!first_page->Contains(keys[i]->address()));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ !first_page->Contains(keys[i]->address()));
}
Handle<JSWeakMap> weakmap = isolate->factory()->NewJSWeakMap();
for (int i = 0; i < 32; i++) {
diff --git a/deps/v8/test/cctest/test-weaksets.cc b/deps/v8/test/cctest/test-weaksets.cc
index f9a3a0614d..fedcd65ad7 100644
--- a/deps/v8/test/cctest/test-weaksets.cc
+++ b/deps/v8/test/cctest/test-weaksets.cc
@@ -164,6 +164,7 @@ TEST(WeakSet_Shrinking) {
// by other paths are correctly recorded in the slots buffer.
TEST(WeakSet_Regress2060a) {
if (i::FLAG_never_compact) return;
+ if (i::FLAG_enable_third_party_heap) return;
FLAG_always_compact = true;
FLAG_stress_concurrent_allocation = false; // For SimulateFullSpace.
LocalContext context;
@@ -187,7 +188,8 @@ TEST(WeakSet_Regress2060a) {
Handle<JSObject> object =
factory->NewJSObject(function, AllocationType::kOld);
CHECK(!Heap::InYoungGeneration(*object));
- CHECK(!first_page->Contains(object->address()));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ !first_page->Contains(object->address()));
int32_t hash = key->GetOrCreateHash(isolate).value();
JSWeakCollection::Set(weakset, key, object, hash);
}
@@ -203,6 +205,7 @@ TEST(WeakSet_Regress2060a) {
// other strong paths are correctly recorded in the slots buffer.
TEST(WeakSet_Regress2060b) {
if (i::FLAG_never_compact) return;
+ if (i::FLAG_enable_third_party_heap) return;
FLAG_always_compact = true;
#ifdef VERIFY_HEAP
FLAG_verify_heap = true;
@@ -226,7 +229,8 @@ TEST(WeakSet_Regress2060b) {
for (int i = 0; i < 32; i++) {
keys[i] = factory->NewJSObject(function, AllocationType::kOld);
CHECK(!Heap::InYoungGeneration(*keys[i]));
- CHECK(!first_page->Contains(keys[i]->address()));
+ CHECK_IMPLIES(!FLAG_enable_third_party_heap,
+ !first_page->Contains(keys[i]->address()));
}
Handle<JSWeakSet> weakset = AllocateJSWeakSet(isolate);
for (int i = 0; i < 32; i++) {
diff --git a/deps/v8/test/cctest/test-web-snapshots.cc b/deps/v8/test/cctest/test-web-snapshots.cc
index b7f314318a..5b61da52ee 100644
--- a/deps/v8/test/cctest/test-web-snapshots.cc
+++ b/deps/v8/test/cctest/test-web-snapshots.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "src/api/api-inl.h"
#include "src/web-snapshot/web-snapshot.h"
#include "test/cctest/cctest-utils.h"
#include "test/cctest/cctest.h"
@@ -11,22 +12,25 @@ namespace internal {
namespace {
-void TestWebSnapshot(const char* snapshot_source, const char* test_source,
- const char* expected_result, uint32_t string_count,
- uint32_t map_count, uint32_t context_count,
- uint32_t function_count, uint32_t object_count) {
+void TestWebSnapshotExtensive(
+ const char* snapshot_source, const char* test_source,
+ std::function<void(v8::Isolate*, v8::Local<v8::Context>)> tester,
+ uint32_t string_count, uint32_t map_count, uint32_t context_count,
+ uint32_t function_count, uint32_t object_count) {
CcTest::InitializeVM();
v8::Isolate* isolate = CcTest::isolate();
- v8::HandleScope scope(isolate);
- v8::Local<v8::Context> context = isolate->GetCurrentContext();
- CompileRun(snapshot_source);
WebSnapshotData snapshot_data;
{
+ v8::HandleScope scope(isolate);
+ v8::Local<v8::Context> new_context = CcTest::NewContext();
+ v8::Context::Scope context_scope(new_context);
+
+ CompileRun(snapshot_source);
std::vector<std::string> exports;
exports.push_back("foo");
WebSnapshotSerializer serializer(isolate);
- CHECK(serializer.TakeSnapshot(context, exports, snapshot_data));
+ CHECK(serializer.TakeSnapshot(new_context, exports, snapshot_data));
CHECK(!serializer.has_error());
CHECK_NOT_NULL(snapshot_data.buffer);
CHECK_EQ(string_count, serializer.string_count());
@@ -37,14 +41,14 @@ void TestWebSnapshot(const char* snapshot_source, const char* test_source,
}
{
+ v8::HandleScope scope(isolate);
v8::Local<v8::Context> new_context = CcTest::NewContext();
v8::Context::Scope context_scope(new_context);
WebSnapshotDeserializer deserializer(isolate);
CHECK(deserializer.UseWebSnapshot(snapshot_data.buffer,
snapshot_data.buffer_size));
CHECK(!deserializer.has_error());
- v8::Local<v8::String> result = CompileRun(test_source).As<v8::String>();
- CHECK(result->Equals(new_context, v8_str(expected_result)).FromJust());
+ tester(isolate, new_context);
CHECK_EQ(string_count, deserializer.string_count());
CHECK_EQ(map_count, deserializer.map_count());
CHECK_EQ(context_count, deserializer.context_count());
@@ -53,6 +57,20 @@ void TestWebSnapshot(const char* snapshot_source, const char* test_source,
}
}
+void TestWebSnapshot(const char* snapshot_source, const char* test_source,
+ const char* expected_result, uint32_t string_count,
+ uint32_t map_count, uint32_t context_count,
+ uint32_t function_count, uint32_t object_count) {
+ TestWebSnapshotExtensive(
+ snapshot_source, test_source,
+ [test_source, expected_result](v8::Isolate* isolate,
+ v8::Local<v8::Context> new_context) {
+ v8::Local<v8::String> result = CompileRun(test_source).As<v8::String>();
+ CHECK(result->Equals(new_context, v8_str(expected_result)).FromJust());
+ },
+ string_count, map_count, context_count, function_count, object_count);
+}
+
} // namespace
TEST(Minimal) {
@@ -68,6 +86,90 @@ TEST(Minimal) {
kMapCount, kContextCount, kFunctionCount, kObjectCount);
}
+TEST(Numbers) {
+ const char* snapshot_source =
+ "var foo = {'a': 6,\n"
+ " 'b': -11,\n"
+ " 'c': 11.6,\n"
+ " 'd': NaN,\n"
+ " 'e': Number.POSITIVE_INFINITY,\n"
+ " 'f': Number.NEGATIVE_INFINITY,\n"
+ "}";
+ const char* test_source = "foo";
+ uint32_t kStringCount = 7; // 'foo', 'a', ..., 'f'
+ uint32_t kMapCount = 1;
+ uint32_t kContextCount = 0;
+ uint32_t kFunctionCount = 0;
+ uint32_t kObjectCount = 1;
+ std::function<void(v8::Isolate*, v8::Local<v8::Context>)> tester =
+ [test_source](v8::Isolate* isolate, v8::Local<v8::Context> new_context) {
+ v8::Local<v8::Object> result = CompileRun(test_source).As<v8::Object>();
+ int32_t a = result->Get(new_context, v8_str("a"))
+ .ToLocalChecked()
+ .As<v8::Number>()
+ ->Value();
+ CHECK_EQ(a, 6);
+ int32_t b = result->Get(new_context, v8_str("b"))
+ .ToLocalChecked()
+ .As<v8::Number>()
+ ->Value();
+ CHECK_EQ(b, -11);
+ double c = result->Get(new_context, v8_str("c"))
+ .ToLocalChecked()
+ .As<v8::Number>()
+ ->Value();
+ CHECK_EQ(c, 11.6);
+ double d = result->Get(new_context, v8_str("d"))
+ .ToLocalChecked()
+ .As<v8::Number>()
+ ->Value();
+ CHECK(std::isnan(d));
+ double e = result->Get(new_context, v8_str("e"))
+ .ToLocalChecked()
+ .As<v8::Number>()
+ ->Value();
+ CHECK_EQ(e, std::numeric_limits<double>::infinity());
+ double f = result->Get(new_context, v8_str("f"))
+ .ToLocalChecked()
+ .As<v8::Number>()
+ ->Value();
+ CHECK_EQ(f, -std::numeric_limits<double>::infinity());
+ };
+ TestWebSnapshotExtensive(snapshot_source, test_source, tester, kStringCount,
+ kMapCount, kContextCount, kFunctionCount,
+ kObjectCount);
+}
+
+TEST(Oddballs) {
+ const char* snapshot_source =
+ "var foo = {'a': false,\n"
+ " 'b': true,\n"
+ " 'c': null,\n"
+ " 'd': undefined,\n"
+ "}";
+ const char* test_source = "foo";
+ uint32_t kStringCount = 5; // 'foo', 'a', ..., 'd'
+ uint32_t kMapCount = 1;
+ uint32_t kContextCount = 0;
+ uint32_t kFunctionCount = 0;
+ uint32_t kObjectCount = 1;
+ std::function<void(v8::Isolate*, v8::Local<v8::Context>)> tester =
+ [test_source](v8::Isolate* isolate, v8::Local<v8::Context> new_context) {
+ v8::Local<v8::Object> result = CompileRun(test_source).As<v8::Object>();
+ Local<Value> a = result->Get(new_context, v8_str("a")).ToLocalChecked();
+ CHECK(a->IsFalse());
+ Local<Value> b = result->Get(new_context, v8_str("b")).ToLocalChecked();
+ CHECK(b->IsTrue());
+ Local<Value> c = result->Get(new_context, v8_str("c")).ToLocalChecked();
+ CHECK(c->IsNull());
+ Local<Value> d = result->Get(new_context, v8_str("d")).ToLocalChecked();
+ CHECK(d->IsUndefined());
+ };
+ TestWebSnapshotExtensive(snapshot_source, test_source, tester, kStringCount,
+ kMapCount, kContextCount, kFunctionCount,
+ kObjectCount);
+}
+
TEST(Function) {
const char* snapshot_source =
"var foo = {'key': function() { return '11525'; }};";
@@ -127,5 +229,252 @@ TEST(InnerFunctionWithContextAndParentContext) {
kMapCount, kContextCount, kFunctionCount, kObjectCount);
}
+TEST(RegExp) {
+ const char* snapshot_source = "var foo = {'re': /ab+c/gi}";
+ const char* test_source = "foo";
+ uint32_t kStringCount = 4; // 'foo', 're', RegExp pattern, RegExp flags
+ uint32_t kMapCount = 1;
+ uint32_t kContextCount = 0;
+ uint32_t kFunctionCount = 0;
+ uint32_t kObjectCount = 1;
+ std::function<void(v8::Isolate*, v8::Local<v8::Context>)> tester =
+ [test_source](v8::Isolate* isolate, v8::Local<v8::Context> new_context) {
+ v8::Local<v8::Object> result = CompileRun(test_source).As<v8::Object>();
+ Local<v8::RegExp> re = result->Get(new_context, v8_str("re"))
+ .ToLocalChecked()
+ .As<v8::RegExp>();
+ CHECK(re->IsRegExp());
+ CHECK(re->GetSource()->Equals(new_context, v8_str("ab+c")).FromJust());
+ CHECK_EQ(v8::RegExp::kGlobal | v8::RegExp::kIgnoreCase, re->GetFlags());
+ v8::Local<v8::Object> match =
+ re->Exec(new_context, v8_str("aBc")).ToLocalChecked();
+ CHECK(match->IsArray());
+ v8::Local<v8::Object> no_match =
+ re->Exec(new_context, v8_str("ac")).ToLocalChecked();
+ CHECK(no_match->IsNull());
+ };
+ TestWebSnapshotExtensive(snapshot_source, test_source, tester, kStringCount,
+ kMapCount, kContextCount, kFunctionCount,
+ kObjectCount);
+}
+
+TEST(RegExpNoFlags) {
+ const char* snapshot_source = "var foo = {'re': /ab+c/}";
+ const char* test_source = "foo";
+ uint32_t kStringCount = 4; // 'foo', 're', RegExp pattern, RegExp flags
+ uint32_t kMapCount = 1;
+ uint32_t kContextCount = 0;
+ uint32_t kFunctionCount = 0;
+ uint32_t kObjectCount = 1;
+ std::function<void(v8::Isolate*, v8::Local<v8::Context>)> tester =
+ [test_source](v8::Isolate* isolate, v8::Local<v8::Context> new_context) {
+ v8::Local<v8::Object> result = CompileRun(test_source).As<v8::Object>();
+ Local<v8::RegExp> re = result->Get(new_context, v8_str("re"))
+ .ToLocalChecked()
+ .As<v8::RegExp>();
+ CHECK(re->IsRegExp());
+ CHECK(re->GetSource()->Equals(new_context, v8_str("ab+c")).FromJust());
+ CHECK_EQ(v8::RegExp::kNone, re->GetFlags());
+ v8::Local<v8::Object> match =
+ re->Exec(new_context, v8_str("abc")).ToLocalChecked();
+ CHECK(match->IsArray());
+ v8::Local<v8::Object> no_match =
+ re->Exec(new_context, v8_str("ac")).ToLocalChecked();
+ CHECK(no_match->IsNull());
+ };
+ TestWebSnapshotExtensive(snapshot_source, test_source, tester, kStringCount,
+ kMapCount, kContextCount, kFunctionCount,
+ kObjectCount);
+}
+
+TEST(SFIDeduplication) {
+ CcTest::InitializeVM();
+ v8::Isolate* isolate = CcTest::isolate();
+ v8::HandleScope scope(isolate);
+
+ WebSnapshotData snapshot_data;
+ {
+ v8::Local<v8::Context> new_context = CcTest::NewContext();
+ v8::Context::Scope context_scope(new_context);
+ const char* snapshot_source =
+ "let foo = {};\n"
+ "foo.outer = function(a) {\n"
+ " return function() {\n"
+ " return a;\n"
+ " }\n"
+ "}\n"
+ "foo.inner = foo.outer('hi');";
+
+ CompileRun(snapshot_source);
+ std::vector<std::string> exports;
+ exports.push_back("foo");
+ WebSnapshotSerializer serializer(isolate);
+ CHECK(serializer.TakeSnapshot(new_context, exports, snapshot_data));
+ CHECK(!serializer.has_error());
+ CHECK_NOT_NULL(snapshot_data.buffer);
+ }
+
+ {
+ v8::Local<v8::Context> new_context = CcTest::NewContext();
+ v8::Context::Scope context_scope(new_context);
+ WebSnapshotDeserializer deserializer(isolate);
+ CHECK(deserializer.UseWebSnapshot(snapshot_data.buffer,
+ snapshot_data.buffer_size));
+ CHECK(!deserializer.has_error());
+
+ const char* get_inner = "foo.inner";
+ const char* create_new_inner = "foo.outer()";
+
+ // Verify that foo.inner and the JSFunction which is the result of calling
+ // foo.outer() after deserialization share the SFI.
+ v8::Local<v8::Function> v8_inner1 =
+ CompileRun(get_inner).As<v8::Function>();
+ v8::Local<v8::Function> v8_inner2 =
+ CompileRun(create_new_inner).As<v8::Function>();
+
+ Handle<JSFunction> inner1 =
+ Handle<JSFunction>::cast(Utils::OpenHandle(*v8_inner1));
+ Handle<JSFunction> inner2 =
+ Handle<JSFunction>::cast(Utils::OpenHandle(*v8_inner2));
+
+ CHECK_EQ(inner1->shared(), inner2->shared());
+ }
+}
+
+TEST(SFIDeduplicationAfterBytecodeFlushing) {
+ FLAG_stress_flush_bytecode = true;
+ CcTest::InitializeVM();
+ v8::Isolate* isolate = CcTest::isolate();
+
+ WebSnapshotData snapshot_data;
+ {
+ v8::HandleScope scope(isolate);
+ v8::Local<v8::Context> new_context = CcTest::NewContext();
+ v8::Context::Scope context_scope(new_context);
+
+ const char* snapshot_source =
+ "let foo = {};\n"
+ "foo.outer = function() {\n"
+ " let a = 'hello';\n"
+ " return function() {\n"
+ " return a;\n"
+ " }\n"
+ "}\n"
+ "foo.inner = foo.outer();";
+
+ CompileRun(snapshot_source);
+
+ std::vector<std::string> exports;
+ exports.push_back("foo");
+ WebSnapshotSerializer serializer(isolate);
+ CHECK(serializer.TakeSnapshot(new_context, exports, snapshot_data));
+ CHECK(!serializer.has_error());
+ CHECK_NOT_NULL(snapshot_data.buffer);
+ }
+
+ CcTest::CollectAllGarbage();
+ CcTest::CollectAllGarbage();
+
+ {
+ v8::HandleScope scope(isolate);
+ v8::Local<v8::Context> new_context = CcTest::NewContext();
+ v8::Context::Scope context_scope(new_context);
+ WebSnapshotDeserializer deserializer(isolate);
+ CHECK(deserializer.UseWebSnapshot(snapshot_data.buffer,
+ snapshot_data.buffer_size));
+ CHECK(!deserializer.has_error());
+
+ const char* get_outer = "foo.outer";
+ const char* get_inner = "foo.inner";
+ const char* create_new_inner = "foo.outer()";
+
+ v8::Local<v8::Function> v8_outer = CompileRun(get_outer).As<v8::Function>();
+ Handle<JSFunction> outer =
+ Handle<JSFunction>::cast(Utils::OpenHandle(*v8_outer));
+ CHECK(!outer->shared().is_compiled());
+
+ v8::Local<v8::Function> v8_inner1 =
+ CompileRun(get_inner).As<v8::Function>();
+ v8::Local<v8::Function> v8_inner2 =
+ CompileRun(create_new_inner).As<v8::Function>();
+
+ Handle<JSFunction> inner1 =
+ Handle<JSFunction>::cast(Utils::OpenHandle(*v8_inner1));
+ Handle<JSFunction> inner2 =
+ Handle<JSFunction>::cast(Utils::OpenHandle(*v8_inner2));
+
+ CHECK(outer->shared().is_compiled());
+ CHECK_EQ(inner1->shared(), inner2->shared());
+
+ // Force bytecode flushing of "foo.outer".
+ CcTest::CollectAllGarbage();
+ CcTest::CollectAllGarbage();
+
+ CHECK(!outer->shared().is_compiled());
+
+ // Create another inner function.
+ v8::Local<v8::Function> v8_inner3 =
+ CompileRun(create_new_inner).As<v8::Function>();
+ Handle<JSFunction> inner3 =
+ Handle<JSFunction>::cast(Utils::OpenHandle(*v8_inner3));
+
+ // Check that it shares the SFI with the original inner function which is in
+ // the snapshot.
+ CHECK_EQ(inner1->shared(), inner3->shared());
+ }
+}
+
+TEST(SFIDeduplicationOfFunctionsNotInSnapshot) {
+ CcTest::InitializeVM();
+ v8::Isolate* isolate = CcTest::isolate();
+ v8::HandleScope scope(isolate);
+
+ WebSnapshotData snapshot_data;
+ {
+ v8::Local<v8::Context> new_context = CcTest::NewContext();
+ v8::Context::Scope context_scope(new_context);
+ const char* snapshot_source =
+ "let foo = {};\n"
+ "foo.outer = function(a) {\n"
+ " return function() {\n"
+ " return a;\n"
+ " }\n"
+ "}\n";
+
+ CompileRun(snapshot_source);
+ std::vector<std::string> exports;
+ exports.push_back("foo");
+ WebSnapshotSerializer serializer(isolate);
+ CHECK(serializer.TakeSnapshot(new_context, exports, snapshot_data));
+ CHECK(!serializer.has_error());
+ CHECK_NOT_NULL(snapshot_data.buffer);
+ }
+
+ {
+ v8::Local<v8::Context> new_context = CcTest::NewContext();
+ v8::Context::Scope context_scope(new_context);
+ WebSnapshotDeserializer deserializer(isolate);
+ CHECK(deserializer.UseWebSnapshot(snapshot_data.buffer,
+ snapshot_data.buffer_size));
+ CHECK(!deserializer.has_error());
+
+ const char* create_new_inner = "foo.outer()";
+
+ // Verify that repeated invocations of foo.outer() return functions which
+ // share the SFI.
+ v8::Local<v8::Function> v8_inner1 =
+ CompileRun(create_new_inner).As<v8::Function>();
+ v8::Local<v8::Function> v8_inner2 =
+ CompileRun(create_new_inner).As<v8::Function>();
+
+ Handle<JSFunction> inner1 =
+ Handle<JSFunction>::cast(Utils::OpenHandle(*v8_inner1));
+ Handle<JSFunction> inner2 =
+ Handle<JSFunction>::cast(Utils::OpenHandle(*v8_inner2));
+
+ CHECK_EQ(inner1->shared(), inner2->shared());
+ }
+}
+
} // namespace internal
} // namespace v8
diff --git a/deps/v8/test/cctest/wasm/test-c-wasm-entry.cc b/deps/v8/test/cctest/wasm/test-c-wasm-entry.cc
index 0c59f9e779..472eb80a68 100644
--- a/deps/v8/test/cctest/wasm/test-c-wasm-entry.cc
+++ b/deps/v8/test/cctest/wasm/test-c-wasm-entry.cc
@@ -60,7 +60,6 @@ class CWasmEntryArgTester {
WriteToBuffer(&packer, args...);
Address wasm_call_target = wasm_code_->instruction_start();
Handle<Object> object_ref = runner_.builder().instance_object();
- wasm_code_->native_module()->SetExecutable(true);
Execution::CallWasm(isolate_, c_wasm_entry_, wasm_call_target, object_ref,
packer.argv());
CHECK(!isolate_->has_pending_exception());
diff --git a/deps/v8/test/cctest/wasm/test-gc.cc b/deps/v8/test/cctest/wasm/test-gc.cc
index 07084b2265..13dd461fed 100644
--- a/deps/v8/test/cctest/wasm/test-gc.cc
+++ b/deps/v8/test/cctest/wasm/test-gc.cc
@@ -43,8 +43,8 @@ class WasmGCTester {
&v8::internal::FLAG_liftoff_only,
execution_tier == TestExecutionTier::kLiftoff ? true : false),
flag_tierup(&v8::internal::FLAG_wasm_tier_up, false),
- zone(&allocator, ZONE_NAME),
- builder_(&zone),
+ zone_(&allocator, ZONE_NAME),
+ builder_(&zone_),
isolate_(CcTest::InitIsolateOnce()),
scope(isolate_),
thrower(isolate_, "Test wasm GC") {
@@ -82,7 +82,7 @@ class WasmGCTester {
}
byte DefineStruct(std::initializer_list<F> fields) {
- StructType::Builder type_builder(&zone,
+ StructType::Builder type_builder(&zone_,
static_cast<uint32_t>(fields.size()));
for (F field : fields) {
type_builder.AddField(field.first, field.second);
@@ -91,7 +91,8 @@ class WasmGCTester {
}
byte DefineArray(ValueType element_type, bool mutability) {
- return builder_.AddArrayType(zone.New<ArrayType>(element_type, mutability));
+ return builder_.AddArrayType(
+ zone_.New<ArrayType>(element_type, mutability));
}
byte DefineSignature(FunctionSig* sig) { return builder_.AddSignature(sig); }
@@ -101,7 +102,7 @@ class WasmGCTester {
}
void CompileModule() {
- ZoneBuffer buffer(&zone);
+ ZoneBuffer buffer(&zone_);
builder_.WriteTo(&buffer);
MaybeHandle<WasmInstanceObject> maybe_instance =
testing::CompileAndInstantiateForTesting(
@@ -174,6 +175,7 @@ class WasmGCTester {
Handle<WasmInstanceObject> instance() { return instance_; }
Isolate* isolate() { return isolate_; }
WasmModuleBuilder* builder() { return &builder_; }
+ Zone* zone() { return &zone_; }
TestSignatures sigs;
@@ -186,7 +188,7 @@ class WasmGCTester {
const FlagScope<bool> flag_tierup;
v8::internal::AccountingAllocator allocator;
- Zone zone;
+ Zone zone_;
WasmModuleBuilder builder_;
Isolate* const isolate_;
@@ -311,23 +313,23 @@ WASM_COMPILED_EXEC_TEST(WasmBrOnNull) {
ValueType kRefTypes[] = {ref(type_index)};
ValueType kOptRefType = optref(type_index);
FunctionSig sig_q_v(1, 0, kRefTypes);
- const byte l_local_index = 0;
+ const byte local_index = 0;
const byte kTaken = tester.DefineFunction(
tester.sigs.i_v(), {kOptRefType},
{WASM_BLOCK_I(WASM_I32V(42),
// Branch will be taken.
// 42 left on stack outside the block (not 52).
- WASM_BR_ON_NULL(0, WASM_LOCAL_GET(l_local_index)),
+ WASM_BR_ON_NULL(0, WASM_LOCAL_GET(local_index)),
WASM_I32V(52), WASM_BR(0)),
kExprEnd});
- const byte m_field_index = 0;
+ const byte field_index = 0;
const byte kNotTaken = tester.DefineFunction(
tester.sigs.i_v(), {},
{WASM_BLOCK_I(
WASM_I32V(42),
WASM_STRUCT_GET(
- type_index, m_field_index,
+ type_index, field_index,
// Branch will not be taken.
// 52 left on stack outside the block (not 42).
WASM_BR_ON_NULL(0, WASM_STRUCT_NEW_WITH_RTT(
@@ -341,6 +343,49 @@ WASM_COMPILED_EXEC_TEST(WasmBrOnNull) {
tester.CheckResult(kNotTaken, 52);
}
+WASM_COMPILED_EXEC_TEST(WasmBrOnNonNull) {
+ WasmGCTester tester(execution_tier);
+ const byte type_index =
+ tester.DefineStruct({F(kWasmI32, true), F(kWasmI32, true)});
+ ValueType kRefType = ref(type_index);
+ ValueType kOptRefType = optref(type_index);
+ FunctionSig sig_q_v(1, 0, &kRefType);
+ const byte field_index = 0;
+
+ const byte kTaken = tester.DefineFunction(
+ tester.sigs.i_v(), {kOptRefType, kOptRefType},
+ {WASM_LOCAL_SET(
+ 0, WASM_STRUCT_NEW_WITH_RTT(type_index, WASM_I32V(52), WASM_I32V(62),
+ WASM_RTT_CANON(type_index))),
+ WASM_LOCAL_SET(
+ 1, WASM_STRUCT_NEW_WITH_RTT(type_index, WASM_I32V(11), WASM_I32V(22),
+ WASM_RTT_CANON(type_index))),
+ WASM_STRUCT_GET(type_index, field_index,
+ WASM_BLOCK_R(ref(type_index),
+ // Branch will be taken, and the block will
+ // return struct(52, 62).
+ WASM_BR_ON_NON_NULL(0, WASM_LOCAL_GET(0)),
+ WASM_REF_AS_NON_NULL(WASM_LOCAL_GET(1)))),
+ kExprEnd});
+
+ const byte kNotTaken = tester.DefineFunction(
+ tester.sigs.i_v(), {kOptRefType, kOptRefType},
+ {WASM_LOCAL_SET(0, WASM_REF_NULL(type_index)),
+ WASM_LOCAL_SET(
+ 1, WASM_STRUCT_NEW_WITH_RTT(type_index, WASM_I32V(11), WASM_I32V(22),
+ WASM_RTT_CANON(type_index))),
+ WASM_STRUCT_GET(type_index, field_index,
+ WASM_BLOCK_R(ref(type_index),
+ // Branch will not be taken, and the block
+ // will return struct(11, 22).
+ WASM_BR_ON_NON_NULL(0, WASM_LOCAL_GET(0)),
+ WASM_REF_AS_NON_NULL(WASM_LOCAL_GET(1)))),
+ kExprEnd});
+ tester.CompileModule();
+ tester.CheckResult(kTaken, 52);
+ tester.CheckResult(kNotTaken, 11);
+}
+
WASM_COMPILED_EXEC_TEST(BrOnCast) {
WasmGCTester tester(execution_tier);
ValueType kDataRefNull = ValueType::Ref(HeapType::kData, kNullable);
@@ -412,6 +457,61 @@ WASM_COMPILED_EXEC_TEST(BrOnCast) {
tester.CheckResult(kTypedAfterBranch, 42);
}
+WASM_COMPILED_EXEC_TEST(BrOnCastFail) {
+ WasmGCTester tester(execution_tier);
+ ValueType kDataRefNull = ValueType::Ref(HeapType::kData, kNullable);
+ const byte type0 = tester.DefineStruct({F(kWasmI32, true)});
+ const byte type1 =
+ tester.DefineStruct({F(kWasmI64, true), F(kWasmI32, true)});
+
+ const byte field0 = 5;
+ const byte field1 = 25;
+ const byte null_value = 45;
+
+ // local_0 = value;
+ // if (!(local_0 instanceof type0)) goto block1;
+ // return static_cast<type0>(local_0).field_0;
+ // block1:
+ // if (local_0 == nullptr) goto block2;
+ // return static_cast<type1>(local_0).field_1;
+ // block2:
+ // return null_value;
+#define FUNCTION_BODY(value) \
+ WASM_LOCAL_SET(0, WASM_SEQ(value)), \
+ WASM_BLOCK( \
+ WASM_BLOCK_R(kDataRefNull, WASM_LOCAL_GET(0), \
+ WASM_BR_ON_CAST_FAIL(0, WASM_RTT_CANON(type0)), \
+ WASM_GC_OP(kExprStructGet), type0, 0, kExprReturn), \
+ kExprBrOnNull, 0, WASM_RTT_CANON(type1), WASM_GC_OP(kExprRefCast), \
+ WASM_GC_OP(kExprStructGet), type1, 1, kExprReturn), \
+ WASM_I32V(null_value), kExprEnd
+
+ const byte kBranchTaken = tester.DefineFunction(
+ tester.sigs.i_v(), {kDataRefNull},
+ {FUNCTION_BODY(WASM_STRUCT_NEW_WITH_RTT(
+ type1, WASM_I64V(10), WASM_I32V(field1), WASM_RTT_CANON(type1)))});
+
+ const byte kBranchNotTaken = tester.DefineFunction(
+ tester.sigs.i_v(), {kDataRefNull},
+ {FUNCTION_BODY(WASM_STRUCT_NEW_WITH_RTT(type0, WASM_I32V(field0),
+ WASM_RTT_CANON(type0)))});
+
+ const byte kNull = tester.DefineFunction(
+ tester.sigs.i_v(), {kDataRefNull}, {FUNCTION_BODY(WASM_REF_NULL(type0))});
+
+ const byte kUnrelatedTypes = tester.DefineFunction(
+ tester.sigs.i_v(), {ValueType::Ref(type1, kNullable)},
+ {FUNCTION_BODY(WASM_STRUCT_NEW_WITH_RTT(
+ type1, WASM_I64V(10), WASM_I32V(field1), WASM_RTT_CANON(type1)))});
+#undef FUNCTION_BODY
+
+ tester.CompileModule();
+ tester.CheckResult(kBranchTaken, field1);
+ tester.CheckResult(kBranchNotTaken, field0);
+ tester.CheckResult(kNull, null_value);
+ tester.CheckResult(kUnrelatedTypes, field1);
+}
+
WASM_COMPILED_EXEC_TEST(WasmRefEq) {
WasmGCTester tester(execution_tier);
byte type_index = tester.DefineStruct({F(kWasmI32, true), F(kWasmI32, true)});
@@ -1484,19 +1584,101 @@ WASM_COMPILED_EXEC_TEST(GlobalInitReferencingGlobal) {
tester.CheckResult(func, 42);
}
-WASM_COMPILED_EXEC_TEST(IndirectNullSetManually) {
+WASM_COMPILED_EXEC_TEST(GCTables) {
WasmGCTester tester(execution_tier);
- byte sig_index = tester.DefineSignature(tester.sigs.i_i());
- tester.DefineTable(ValueType::Ref(sig_index, kNullable), 1, 1);
- byte func_index = tester.DefineFunction(
- tester.sigs.i_i(), {},
- {WASM_TABLE_SET(0, WASM_I32V(0), WASM_REF_NULL(sig_index)),
- WASM_CALL_INDIRECT(sig_index, WASM_I32V(0), WASM_LOCAL_GET(0)),
- kExprEnd});
+
+ byte super_struct = tester.DefineStruct({F(kWasmI32, false)});
+ byte sub_struct =
+ tester.DefineStruct({F(kWasmI32, false), F(kWasmI32, true)});
+ FunctionSig* super_sig =
+ FunctionSig::Build(tester.zone(), {kWasmI32}, {optref(sub_struct)});
+ byte super_sig_index = tester.DefineSignature(super_sig);
+ FunctionSig* sub_sig =
+ FunctionSig::Build(tester.zone(), {kWasmI32}, {optref(super_struct)});
+ byte sub_sig_index = tester.DefineSignature(sub_sig);
+
+ tester.DefineTable(optref(super_sig_index), 10, 10);
+
+ byte super_func = tester.DefineFunction(
+ super_sig, {},
+ {WASM_I32_ADD(WASM_STRUCT_GET(sub_struct, 0, WASM_LOCAL_GET(0)),
+ WASM_STRUCT_GET(sub_struct, 1, WASM_LOCAL_GET(0))),
+ WASM_END});
+
+ byte sub_func = tester.DefineFunction(
+ sub_sig, {},
+ {WASM_STRUCT_GET(super_struct, 0, WASM_LOCAL_GET(0)), WASM_END});
+
+ byte setup_func = tester.DefineFunction(
+ tester.sigs.i_v(), {},
+ {WASM_TABLE_SET(0, WASM_I32V(0), WASM_REF_NULL(super_sig_index)),
+ WASM_TABLE_SET(0, WASM_I32V(1), WASM_REF_FUNC(super_func)),
+ WASM_TABLE_SET(0, WASM_I32V(2), WASM_REF_FUNC(sub_func)), WASM_I32V(0),
+ WASM_END});
+
+ byte super_struct_producer = tester.DefineFunction(
+ FunctionSig::Build(tester.zone(), {ref(super_struct)}, {}), {},
+ {WASM_STRUCT_NEW_WITH_RTT(super_struct, WASM_I32V(-5),
+ WASM_RTT_CANON(super_struct)),
+ WASM_END});
+ byte sub_struct_producer = tester.DefineFunction(
+ FunctionSig::Build(tester.zone(), {ref(sub_struct)}, {}), {},
+ {WASM_STRUCT_NEW_WITH_RTT(sub_struct, WASM_I32V(7), WASM_I32V(11),
+ WASM_RTT_CANON(sub_struct)),
+ WASM_END});
+
+ // Calling a null entry should trap.
+ byte call_null = tester.DefineFunction(
+ tester.sigs.i_v(), {},
+ {WASM_CALL_INDIRECT(super_sig_index,
+ WASM_CALL_FUNCTION0(sub_struct_producer),
+ WASM_I32V(0)),
+ WASM_END});
+ // Calling with a signature identical to the type of the table should work,
+ // provided the entry has the same signature.
+ byte call_same_type = tester.DefineFunction(
+ tester.sigs.i_v(), {},
+ {WASM_CALL_INDIRECT(super_sig_index,
+ WASM_CALL_FUNCTION0(sub_struct_producer),
+ WASM_I32V(1)),
+ WASM_END});
+ // Calling with a signature that is a subtype of the type of the table should
+ // work, provided the entry has the same signature.
+ byte call_subtype = tester.DefineFunction(
+ tester.sigs.i_v(), {},
+ {WASM_CALL_INDIRECT(sub_sig_index,
+ WASM_CALL_FUNCTION0(super_struct_producer),
+ WASM_I32V(2)),
+ WASM_END});
+ // Calling with a signature that is mismatched to that of the entry should
+ // trap.
+ byte call_type_mismatch = tester.DefineFunction(
+ tester.sigs.i_v(), {},
+ {WASM_CALL_INDIRECT(super_sig_index,
+ WASM_CALL_FUNCTION0(sub_struct_producer),
+ WASM_I32V(2)),
+ WASM_END});
+ // Getting a table element and then calling it with call_ref should work.
+ byte table_get_and_call_ref = tester.DefineFunction(
+ tester.sigs.i_v(), {},
+ {WASM_CALL_REF(WASM_TABLE_GET(0, WASM_I32V(2)),
+ WASM_CALL_FUNCTION0(sub_struct_producer)),
+ WASM_END});
+
+ // Only here so these functions count as "declared".
+ tester.AddGlobal(optref(super_sig_index), false,
+ WasmInitExpr::RefFuncConst(super_func));
+ tester.AddGlobal(optref(sub_sig_index), false,
+ WasmInitExpr::RefFuncConst(sub_func));
tester.CompileModule();
- tester.CheckHasThrown(func_index, 42);
+ tester.CheckResult(setup_func, 0);
+ tester.CheckHasThrown(call_null);
+ tester.CheckResult(call_same_type, 18);
+ tester.CheckResult(call_subtype, -5);
+ tester.CheckHasThrown(call_type_mismatch);
+ tester.CheckResult(table_get_and_call_ref, 7);
}
WASM_COMPILED_EXEC_TEST(JsAccess) {
diff --git a/deps/v8/test/cctest/wasm/test-jump-table-assembler.cc b/deps/v8/test/cctest/wasm/test-jump-table-assembler.cc
index bfe88180d1..59fea9b262 100644
--- a/deps/v8/test/cctest/wasm/test-jump-table-assembler.cc
+++ b/deps/v8/test/cctest/wasm/test-jump-table-assembler.cc
@@ -122,14 +122,14 @@ void CompileJumpTableThunk(Address thunk, Address jump_target) {
__ Br(scratch);
#elif V8_TARGET_ARCH_PPC64
__ mov(scratch, Operand(stop_bit_address, RelocInfo::NONE));
- __ LoadP(scratch, MemOperand(scratch));
+ __ LoadU64(scratch, MemOperand(scratch));
__ cmpi(scratch, Operand::Zero());
__ bne(&exit);
__ mov(scratch, Operand(jump_target, RelocInfo::NONE));
__ Jump(scratch);
#elif V8_TARGET_ARCH_S390X
__ mov(scratch, Operand(stop_bit_address, RelocInfo::NONE));
- __ LoadP(scratch, MemOperand(scratch));
+ __ LoadU64(scratch, MemOperand(scratch));
__ CmpP(scratch, Operand(0));
__ bne(&exit);
__ mov(scratch, Operand(jump_target, RelocInfo::NONE));
@@ -156,8 +156,14 @@ void CompileJumpTableThunk(Address thunk, Address jump_target) {
__ Ret();
FlushInstructionCache(thunk, kThunkBufferSize);
+#if defined(V8_OS_MACOSX) && defined(V8_HOST_ARCH_ARM64)
+ // MacOS on arm64 refuses {mprotect} calls to toggle permissions of RWX
+ // memory. Simply do nothing here, and rely on
+ // {SwitchMemoryPermissionsToExecutable} in the JumpTableRunner.
+#else
CHECK(SetPermissions(GetPlatformPageAllocator(), thunk, kThunkBufferSize,
v8::PageAllocator::kReadExecute));
+#endif
}
class JumpTableRunner : public v8::base::Thread {
diff --git a/deps/v8/test/cctest/wasm/test-liftoff-inspection.cc b/deps/v8/test/cctest/wasm/test-liftoff-inspection.cc
index 551d8f214b..96df9d5252 100644
--- a/deps/v8/test/cctest/wasm/test-liftoff-inspection.cc
+++ b/deps/v8/test/cctest/wasm/test-liftoff-inspection.cc
@@ -22,7 +22,7 @@ class LiftoffCompileEnvironment {
handle_scope_(isolate_),
zone_(isolate_->allocator(), ZONE_NAME),
wasm_runner_(nullptr, TestExecutionTier::kLiftoff, 0,
- kRuntimeExceptionSupport, kNoLowerSimd) {
+ kRuntimeExceptionSupport) {
// Add a table of length 1, for indirect calls.
wasm_runner_.builder().AddIndirectFunctionTable(nullptr, 1);
// Set tiered down such that we generate debugging code.
@@ -453,6 +453,29 @@ TEST(Liftoff_debug_side_table_catch_all) {
debug_side_table.get());
}
+TEST(Regress1199526) {
+ EXPERIMENTAL_FLAG_SCOPE(eh);
+ LiftoffCompileEnvironment env;
+ ValueType exception_type = ValueType::Ref(HeapType::kExtern, kNonNullable);
+ auto debug_side_table = env.GenerateDebugSideTable(
+ {}, {},
+ {kExprTry, kVoidCode, kExprCallFunction, 0, kExprCatchAll, kExprLoop,
+ kVoidCode, kExprEnd, kExprEnd},
+ {});
+ CheckDebugSideTable(
+ {
+ // function entry.
+ {0, {}},
+ // break on entry.
+ {0, {}},
+ // function call.
+ {0, {}},
+ // loop stack check.
+ {1, {Stack(0, exception_type)}},
+ },
+ debug_side_table.get());
+}
+
} // namespace wasm
} // namespace internal
} // namespace v8
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc b/deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc
index b00f0714c2..1f5a32e5a1 100644
--- a/deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc
+++ b/deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "src/wasm/wasm-module-builder.h"
#include "test/cctest/cctest.h"
#include "test/cctest/wasm/wasm-run-utils.h"
#include "test/common/wasm/test-signatures.h"
@@ -413,7 +414,7 @@ void TestTableInitElems(TestExecutionTier execution_tier, int table_index) {
}
// Passive element segment has [f0, f1, f2, f3, f4, null].
- function_indexes.push_back(WasmElemSegment::kNullIndex);
+ function_indexes.push_back(WasmModuleBuilder::kNullIndex);
// Add 10 function tables, even though we only test one table.
for (int i = 0; i < 10; ++i) {
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm-exceptions.cc b/deps/v8/test/cctest/wasm/test-run-wasm-exceptions.cc
index bb61f93ac3..284f27ec44 100644
--- a/deps/v8/test/cctest/wasm/test-run-wasm-exceptions.cc
+++ b/deps/v8/test/cctest/wasm/test-run-wasm-exceptions.cc
@@ -574,6 +574,64 @@ WASM_EXEC_TEST(TryCatchTrapRemByZero) {
TestTrapNotCaught(code, arraysize(code), execution_tier);
}
+namespace {
+// TODO(cleanup): Define in cctest.h and re-use where appropriate.
+class IsolateScope {
+ public:
+ IsolateScope() {
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ isolate_ = v8::Isolate::New(create_params);
+ isolate_->Enter();
+ }
+
+ ~IsolateScope() {
+ isolate_->Exit();
+ isolate_->Dispose();
+ }
+
+ v8::Isolate* isolate() { return isolate_; }
+ Isolate* i_isolate() { return reinterpret_cast<Isolate*>(isolate_); }
+
+ private:
+ v8::Isolate* isolate_;
+};
+} // namespace
+
+UNINITIALIZED_WASM_EXEC_TEST(TestStackOverflowNotCaught) {
+ TestSignatures sigs;
+ EXPERIMENTAL_FLAG_SCOPE(eh);
+ // FLAG_stack_size must be set before isolate initialization.
+ FlagScope<int32_t> stack_size(&v8::internal::FLAG_stack_size, 8);
+
+ IsolateScope isolate_scope;
+ LocalContext context(isolate_scope.isolate());
+
+ WasmRunner<uint32_t> r(execution_tier, nullptr, "main",
+ kRuntimeExceptionSupport, isolate_scope.i_isolate());
+
+ // Build a function that calls itself until stack overflow.
+ WasmFunctionCompiler& stack_overflow = r.NewFunction(sigs.v_v());
+ byte stack_overflow_code[] = {kExprCallFunction,
+ stack_overflow.function_index()};
+ stack_overflow.Build(stack_overflow_code,
+ stack_overflow_code + arraysize(stack_overflow_code));
+
+ // Build the main test function.
+ BUILD(r, WASM_TRY_CATCH_ALL_T(kWasmI32,
+ WASM_STMTS(WASM_I32V(1), kExprCallFunction,
+ stack_overflow.function_index()),
+ WASM_STMTS(WASM_I32V(1))));
+
+ if (execution_tier != TestExecutionTier::kInterpreter) {
+ // Need to call through JS to allow for creation of stack traces.
+ r.CheckCallViaJSTraps();
+ } else {
+ constexpr int stopped = 0;
+ CHECK_EQ(stopped, r.CallInterpreter());
+ }
+}
+
TEST(Regress1180457) {
TestSignatures sigs;
EXPERIMENTAL_FLAG_SCOPE(eh);
@@ -629,6 +687,18 @@ TEST(Regress1186795) {
CHECK_EQ(0, r.CallInterpreter());
}
+TEST(Regress1197408) {
+ TestSignatures sigs;
+ EXPERIMENTAL_FLAG_SCOPE(eh);
+ WasmRunner<int32_t, int32_t, int32_t, int32_t> r(
+ TestExecutionTier::kInterpreter);
+ int sig_id = r.builder().AddSignature(sigs.i_iii());
+ BUILD(r, WASM_STMTS(WASM_I32V(0), WASM_I32V(0), WASM_I32V(0), kExprTry,
+ sig_id, kExprTry, sig_id, kExprCallFunction, 0,
+ kExprDelegate, 0, kExprDelegate, 0));
+ CHECK_EQ(0, r.CallInterpreter(0, 0, 0));
+}
+
} // namespace test_run_wasm_exceptions
} // namespace wasm
} // namespace internal
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm-relaxed-simd.cc b/deps/v8/test/cctest/wasm/test-run-wasm-relaxed-simd.cc
index 50f5bb44b7..45a84be6fe 100644
--- a/deps/v8/test/cctest/wasm/test-run-wasm-relaxed-simd.cc
+++ b/deps/v8/test/cctest/wasm/test-run-wasm-relaxed-simd.cc
@@ -16,20 +16,18 @@ namespace wasm {
namespace test_run_wasm_relaxed_simd {
// Use this for experimental relaxed-simd opcodes.
-#define WASM_RELAXED_SIMD_TEST(name) \
- void RunWasm_##name##_Impl(LowerSimd lower_simd, \
- TestExecutionTier execution_tier); \
- TEST(RunWasm_##name##_turbofan) { \
- if (!CpuFeatures::SupportsWasmSimd128()) return; \
- EXPERIMENTAL_FLAG_SCOPE(relaxed_simd); \
- RunWasm_##name##_Impl(kNoLowerSimd, TestExecutionTier::kTurbofan); \
- } \
- TEST(RunWasm_##name##_interpreter) { \
- EXPERIMENTAL_FLAG_SCOPE(relaxed_simd); \
- RunWasm_##name##_Impl(kNoLowerSimd, TestExecutionTier::kInterpreter); \
- } \
- void RunWasm_##name##_Impl(LowerSimd lower_simd, \
- TestExecutionTier execution_tier)
+#define WASM_RELAXED_SIMD_TEST(name) \
+ void RunWasm_##name##_Impl(TestExecutionTier execution_tier); \
+ TEST(RunWasm_##name##_turbofan) { \
+ if (!CpuFeatures::SupportsWasmSimd128()) return; \
+ EXPERIMENTAL_FLAG_SCOPE(relaxed_simd); \
+ RunWasm_##name##_Impl(TestExecutionTier::kTurbofan); \
+ } \
+ TEST(RunWasm_##name##_interpreter) { \
+ EXPERIMENTAL_FLAG_SCOPE(relaxed_simd); \
+ RunWasm_##name##_Impl(TestExecutionTier::kInterpreter); \
+ } \
+ void RunWasm_##name##_Impl(TestExecutionTier execution_tier)
#if V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_S390X || \
V8_TARGET_ARCH_PPC64
@@ -125,7 +123,7 @@ bool ExpectFused(TestExecutionTier tier) {
#if V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_S390X || \
V8_TARGET_ARCH_PPC64
WASM_RELAXED_SIMD_TEST(F32x4Qfma) {
- WasmRunner<int32_t, float, float, float> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, float, float, float> r(execution_tier);
// Set up global to hold mask output.
float* g = r.builder().AddGlobal<float>(kWasmS128);
// Build fn to splat test values, perform compare op, and write the result.
@@ -149,7 +147,7 @@ WASM_RELAXED_SIMD_TEST(F32x4Qfma) {
}
WASM_RELAXED_SIMD_TEST(F32x4Qfms) {
- WasmRunner<int32_t, float, float, float> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, float, float, float> r(execution_tier);
// Set up global to hold mask output.
float* g = r.builder().AddGlobal<float>(kWasmS128);
// Build fn to splat test values, perform compare op, and write the result.
@@ -173,7 +171,7 @@ WASM_RELAXED_SIMD_TEST(F32x4Qfms) {
}
WASM_RELAXED_SIMD_TEST(F64x2Qfma) {
- WasmRunner<int32_t, double, double, double> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, double, double, double> r(execution_tier);
// Set up global to hold mask output.
double* g = r.builder().AddGlobal<double>(kWasmS128);
// Build fn to splat test values, perform compare op, and write the result.
@@ -197,7 +195,7 @@ WASM_RELAXED_SIMD_TEST(F64x2Qfma) {
}
WASM_RELAXED_SIMD_TEST(F64x2Qfms) {
- WasmRunner<int32_t, double, double, double> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, double, double, double> r(execution_tier);
// Set up global to hold mask output.
double* g = r.builder().AddGlobal<double>(kWasmS128);
// Build fn to splat test values, perform compare op, and write the result.
@@ -223,13 +221,13 @@ WASM_RELAXED_SIMD_TEST(F64x2Qfms) {
// V8_TARGET_ARCH_PPC64
WASM_RELAXED_SIMD_TEST(F32x4RecipApprox) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4RecipApprox,
- base::Recip, false /* !exact */);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4RecipApprox, base::Recip,
+ false /* !exact */);
}
WASM_RELAXED_SIMD_TEST(F32x4RecipSqrtApprox) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4RecipSqrtApprox,
- base::RecipSqrt, false /* !exact */);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4RecipSqrtApprox, base::RecipSqrt,
+ false /* !exact */);
}
#undef WASM_RELAXED_SIMD_TEST
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm-simd-liftoff.cc b/deps/v8/test/cctest/wasm/test-run-wasm-simd-liftoff.cc
index 90fd3ac1bc..677ec5648c 100644
--- a/deps/v8/test/cctest/wasm/test-run-wasm-simd-liftoff.cc
+++ b/deps/v8/test/cctest/wasm/test-run-wasm-simd-liftoff.cc
@@ -30,14 +30,14 @@ namespace test_run_wasm_simd_liftoff {
void RunWasm_##name##_Impl()
WASM_SIMD_LIFTOFF_TEST(S128Local) {
- WasmRunner<int32_t> r(TestExecutionTier::kLiftoff, kNoLowerSimd);
+ WasmRunner<int32_t> r(TestExecutionTier::kLiftoff);
byte temp1 = r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(temp1, WASM_LOCAL_GET(temp1)), WASM_ONE);
CHECK_EQ(1, r.Call());
}
WASM_SIMD_LIFTOFF_TEST(S128Global) {
- WasmRunner<int32_t> r(TestExecutionTier::kLiftoff, kNoLowerSimd);
+ WasmRunner<int32_t> r(TestExecutionTier::kLiftoff);
int32_t* g0 = r.builder().AddGlobal<int32_t>(kWasmS128);
int32_t* g1 = r.builder().AddGlobal<int32_t>(kWasmS128);
@@ -58,7 +58,7 @@ WASM_SIMD_LIFTOFF_TEST(S128Param) {
// Test how SIMD parameters in functions are processed. There is no easy way
// to specify a SIMD value when initializing a WasmRunner, so we manually
// add a new function with the right signature, and call it from main.
- WasmRunner<int32_t> r(TestExecutionTier::kLiftoff, kNoLowerSimd);
+ WasmRunner<int32_t> r(TestExecutionTier::kLiftoff);
TestSignatures sigs;
// We use a temp local to materialize a SIMD value, since at this point
// Liftoff does not support any SIMD operations.
@@ -74,7 +74,7 @@ WASM_SIMD_LIFTOFF_TEST(S128Param) {
WASM_SIMD_LIFTOFF_TEST(S128Return) {
// Test how functions returning SIMD values are processed.
- WasmRunner<int32_t> r(TestExecutionTier::kLiftoff, kNoLowerSimd);
+ WasmRunner<int32_t> r(TestExecutionTier::kLiftoff);
TestSignatures sigs;
WasmFunctionCompiler& simd_func = r.NewFunction(sigs.s_i());
byte temp1 = simd_func.AllocateLocal(kWasmS128);
@@ -93,7 +93,7 @@ WASM_SIMD_LIFTOFF_TEST(REGRESS_1088273) {
// explicitly skip them.
if (!CpuFeatures::SupportsWasmSimd128()) return;
- WasmRunner<int32_t> r(TestExecutionTier::kLiftoff, kNoLowerSimd);
+ WasmRunner<int32_t> r(TestExecutionTier::kLiftoff);
TestSignatures sigs;
WasmFunctionCompiler& simd_func = r.NewFunction(sigs.s_i());
byte temp1 = simd_func.AllocateLocal(kWasmS128);
@@ -109,7 +109,7 @@ WASM_SIMD_LIFTOFF_TEST(REGRESS_1088273) {
// implementation in Liftoff is a bit more tricky due to shuffle requiring
// adjacent registers in ARM/ARM64.
WASM_SIMD_LIFTOFF_TEST(I8x16Shuffle) {
- WasmRunner<int32_t> r(TestExecutionTier::kLiftoff, kNoLowerSimd);
+ WasmRunner<int32_t> r(TestExecutionTier::kLiftoff);
// Temps to use up registers and force non-adjacent registers for shuffle.
byte local0 = r.AllocateLocal(kWasmS128);
byte local1 = r.AllocateLocal(kWasmS128);
@@ -154,7 +154,7 @@ WASM_SIMD_LIFTOFF_TEST(I8x16Shuffle) {
// Exercise logic in Liftoff's implementation of shuffle when inputs to the
// shuffle are the same register.
WASM_SIMD_LIFTOFF_TEST(I8x16Shuffle_SingleOperand) {
- WasmRunner<int32_t> r(TestExecutionTier::kLiftoff, kNoLowerSimd);
+ WasmRunner<int32_t> r(TestExecutionTier::kLiftoff);
byte local0 = r.AllocateLocal(kWasmS128);
byte* g0 = r.builder().AddGlobal<byte>(kWasmS128);
@@ -190,7 +190,7 @@ WASM_SIMD_LIFTOFF_TEST(I8x16Shuffle_SingleOperand) {
// incorrect instruction for storing zeroes into the slot when the slot offset
// was too large to fit in the instruction as an immediate.
WASM_SIMD_LIFTOFF_TEST(FillStackSlotsWithZero_CheckStartOffset) {
- WasmRunner<int64_t> r(TestExecutionTier::kLiftoff, kNoLowerSimd);
+ WasmRunner<int64_t> r(TestExecutionTier::kLiftoff);
// Function that takes in 32 i64 arguments, returns i64. This gets us a large
// enough starting offset from which we spill locals.
// start = 32 * 8 + 16 (instance) = 272 (cannot fit in signed int9).
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm-simd-scalar-lowering.cc b/deps/v8/test/cctest/wasm/test-run-wasm-simd-scalar-lowering.cc
deleted file mode 100644
index c0cc3c7dac..0000000000
--- a/deps/v8/test/cctest/wasm/test-run-wasm-simd-scalar-lowering.cc
+++ /dev/null
@@ -1,332 +0,0 @@
-// Copyright 2020 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.
-
-#include "src/wasm/compilation-environment.h"
-#include "src/wasm/wasm-tier.h"
-#include "test/cctest/cctest.h"
-#include "test/cctest/wasm/wasm-run-utils.h"
-#include "test/common/wasm/flag-utils.h"
-#include "test/common/wasm/test-signatures.h"
-#include "test/common/wasm/wasm-macro-gen.h"
-
-namespace v8 {
-namespace internal {
-namespace wasm {
-namespace test_run_wasm_simd {
-
-#define WASM_SIMD_TEST(name) \
- void RunWasm_##name##_Impl(LowerSimd lower_simd, \
- TestExecutionTier execution_tier); \
- TEST(RunWasm_##name##_simd_lowered) { \
- EXPERIMENTAL_FLAG_SCOPE(simd); \
- RunWasm_##name##_Impl(kLowerSimd, TestExecutionTier::kTurbofan); \
- } \
- void RunWasm_##name##_Impl(LowerSimd lower_simd, \
- TestExecutionTier execution_tier)
-
-WASM_SIMD_TEST(I8x16ToF32x4) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
- float* g = r.builder().AddGlobal<float>(kWasmS128);
- byte param1 = 0;
- BUILD(r,
- WASM_GLOBAL_SET(
- 0, WASM_SIMD_UNOP(kExprF32x4Sqrt,
- WASM_SIMD_I8x16_SPLAT(WASM_LOCAL_GET(param1)))),
- WASM_ONE);
-
- // Arbitrary pattern that doesn't end up creating a NaN.
- r.Call(0x5b);
- float f = bit_cast<float>(0x5b5b5b5b);
- float actual = ReadLittleEndianValue<float>(&g[0]);
- float expected = std::sqrt(f);
- CHECK_EQ(expected, actual);
-}
-
-WASM_SIMD_TEST(F64x2_Call_Return) {
- // Check that calling a function with i16x8 arguments, and returns i16x8, is
- // correctly lowered. The signature of the functions are always lowered to 4
- // Word32, so each i16x8 needs to be correctly converted.
- TestSignatures sigs;
- WasmRunner<double, double, double> r(execution_tier, lower_simd);
-
- WasmFunctionCompiler& fn = r.NewFunction(sigs.s_ss());
- BUILD(fn,
- WASM_SIMD_BINOP(kExprF64x2Min, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1)));
-
- byte c1[16] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- byte c2[16] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x7f};
-
- BUILD(r,
- WASM_SIMD_F64x2_EXTRACT_LANE(
- 0, WASM_CALL_FUNCTION(fn.function_index(), WASM_SIMD_CONSTANT(c1),
- WASM_SIMD_CONSTANT(c2))));
- CHECK_EQ(0, r.Call(double{0}, bit_cast<double>(0x7fefffffffffffff)));
-}
-
-WASM_SIMD_TEST(F32x4_Call_Return) {
- // Check that functions that return F32x4 are correctly lowered into 4 int32
- // nodes. The signature of such functions are always lowered to 4 Word32, and
- // if the last operation before the return was a f32x4, it will need to be
- // bitcasted from float to int.
- TestSignatures sigs;
- WasmRunner<float, float> r(execution_tier, lower_simd);
-
- // A simple function that just calls f32x4.neg on the param.
- WasmFunctionCompiler& fn = r.NewFunction(sigs.s_s());
- BUILD(fn, WASM_SIMD_UNOP(kExprF32x4Neg, WASM_LOCAL_GET(0)));
-
- // TODO(v8:10507)
- // Use i32x4 splat since scalar lowering has a problem with f32x4 as a param
- // to a function call, the lowering is not correct yet.
- BUILD(r,
- WASM_SIMD_F32x4_EXTRACT_LANE(
- 0, WASM_CALL_FUNCTION(fn.function_index(),
- WASM_SIMD_F32x4_SPLAT(WASM_LOCAL_GET(0)))));
- CHECK_EQ(-1.0, r.Call(1));
-}
-
-WASM_SIMD_TEST(I8x16_Call_Return) {
- // Check that calling a function with i8x16 arguments, and returns i8x16, is
- // correctly lowered. The signature of the functions are always lowered to 4
- // Word32, so each i8x16 needs to be correctly converted.
- TestSignatures sigs;
- WasmRunner<uint32_t, uint32_t> r(execution_tier, lower_simd);
-
- WasmFunctionCompiler& fn = r.NewFunction(sigs.s_ss());
- BUILD(fn,
- WASM_SIMD_BINOP(kExprI8x16Add, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1)));
-
- BUILD(r,
- WASM_SIMD_I8x16_EXTRACT_LANE(
- 0, WASM_CALL_FUNCTION(fn.function_index(),
- WASM_SIMD_I8x16_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_I8x16_SPLAT(WASM_LOCAL_GET(0)))));
- CHECK_EQ(2, r.Call(1));
-}
-
-WASM_SIMD_TEST(I16x8_Call_Return) {
- // Check that calling a function with i16x8 arguments, and returns i16x8, is
- // correctly lowered. The signature of the functions are always lowered to 4
- // Word32, so each i16x8 needs to be correctly converted.
- TestSignatures sigs;
- WasmRunner<uint32_t, uint32_t> r(execution_tier, lower_simd);
-
- WasmFunctionCompiler& fn = r.NewFunction(sigs.s_ss());
- BUILD(fn,
- WASM_SIMD_BINOP(kExprI16x8Add, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1)));
-
- BUILD(r,
- WASM_SIMD_I16x8_EXTRACT_LANE(
- 0, WASM_CALL_FUNCTION(fn.function_index(),
- WASM_SIMD_I16x8_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_I16x8_SPLAT(WASM_LOCAL_GET(0)))));
- CHECK_EQ(2, r.Call(1));
-}
-
-WASM_SIMD_TEST(I64x2_Call_Return) {
- // Check that calling a function with i64x2 arguments, and returns i64x2, is
- // correctly lowered. The signature of the functions are always lowered to 4
- // Word32, so each i64x2 needs to be correctly converted.
- TestSignatures sigs;
- WasmRunner<uint64_t, uint64_t> r(execution_tier, lower_simd);
-
- WasmFunctionCompiler& fn = r.NewFunction(sigs.s_ss());
- BUILD(fn,
- WASM_SIMD_BINOP(kExprI64x2Add, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1)));
-
- BUILD(r,
- WASM_SIMD_I64x2_EXTRACT_LANE(
- 0, WASM_CALL_FUNCTION(fn.function_index(),
- WASM_SIMD_I64x2_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_I64x2_SPLAT(WASM_LOCAL_GET(0)))));
- CHECK_EQ(2, r.Call(1));
-}
-
-WASM_SIMD_TEST(I8x16Eq_ToTest_S128Const) {
- // Test implementation of S128Const in scalar lowering, this test case was
- // causing a crash.
- TestSignatures sigs;
- WasmRunner<uint32_t> r(execution_tier, lower_simd);
-
- byte c1[16] = {0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x40};
- byte c2[16] = {0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02};
- byte c3[16] = {0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
- BUILD(r,
- WASM_SIMD_BINOP(kExprI8x16Eq, WASM_SIMD_CONSTANT(c1),
- WASM_SIMD_CONSTANT(c2)),
- WASM_SIMD_CONSTANT(c3), WASM_SIMD_OP(kExprI8x16Eq),
- WASM_SIMD_OP(kExprI8x16ExtractLaneS), TO_BYTE(4));
- CHECK_EQ(0xffffffff, r.Call());
-}
-
-WASM_SIMD_TEST(F32x4_S128Const) {
- // Test that S128Const lowering is done correctly when it is used as an input
- // into a f32x4 operation. This was triggering a CHECK failure in the
- // register-allocator-verifier.
- TestSignatures sigs;
- WasmRunner<float> r(execution_tier, lower_simd);
-
- // f32x4(1.0, 2.0, 3.0, 4.0)
- byte c1[16] = {0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x80, 0x40};
- // f32x4(5.0, 6.0, 7.0, 8.0)
- byte c2[16] = {0x00, 0x00, 0xa0, 0x40, 0x00, 0x00, 0xc0, 0x40,
- 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x41};
-
- BUILD(r,
- WASM_SIMD_BINOP(kExprF32x4Min, WASM_SIMD_CONSTANT(c1),
- WASM_SIMD_CONSTANT(c2)),
- WASM_SIMD_OP(kExprF32x4ExtractLane), TO_BYTE(0));
- CHECK_EQ(1.0, r.Call());
-}
-
-WASM_SIMD_TEST(AllTrue_DifferentShapes) {
- // Test all_true lowring with splats of different shapes.
- {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
-
- BUILD(r, WASM_SIMD_I32x4_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_OP(kExprI8x16AllTrue));
-
- CHECK_EQ(0, r.Call(0x00FF00FF));
- }
-
- {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
-
- BUILD(r, WASM_SIMD_I32x4_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_OP(kExprI16x8AllTrue));
-
- CHECK_EQ(0, r.Call(0x000000FF));
- }
-
- // Check float input to all_true.
- {
- WasmRunner<int32_t, float> r(execution_tier, lower_simd);
-
- BUILD(r, WASM_SIMD_F32x4_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_OP(kExprI16x8AllTrue));
-
- CHECK_EQ(1, r.Call(0x000F000F));
- }
-}
-
-WASM_SIMD_TEST(AnyTrue_DifferentShapes) {
- // Test any_true lowring with splats of different shapes.
- {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
-
- BUILD(r, WASM_SIMD_I32x4_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_OP(kExprV128AnyTrue));
-
- CHECK_EQ(0, r.Call(0x00000000));
- }
-
- {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
-
- BUILD(r, WASM_SIMD_I32x4_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_OP(kExprV128AnyTrue));
-
- CHECK_EQ(1, r.Call(0x000000FF));
- }
-
- // Check float input to any_true.
- {
- WasmRunner<int32_t, float> r(execution_tier, lower_simd);
-
- BUILD(r, WASM_SIMD_F32x4_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_OP(kExprV128AnyTrue));
-
- CHECK_EQ(0, r.Call(0x00000000));
- }
-}
-
-WASM_SIMD_TEST(V128_I64_PARAMS) {
- // This test exercises interaction between simd and int64 lowering. The
- // parameter indices were not correctly lowered because simd lowered a v128 in
- // the function signature into 4 word32, and int64 was still treating it as 1
- // parameter.
- WasmRunner<uint64_t, uint64_t> r(execution_tier, lower_simd);
-
- FunctionSig::Builder builder(r.zone(), 1, 2);
- builder.AddParam(kWasmS128);
- builder.AddParam(kWasmI64);
- builder.AddReturn(kWasmS128);
- FunctionSig* sig = builder.Build();
- WasmFunctionCompiler& fn = r.NewFunction(sig);
-
- // Build a function that has both V128 and I64 arguments.
- BUILD(fn,
- WASM_SIMD_I64x2_REPLACE_LANE(0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1)));
-
- BUILD(r, WASM_SIMD_I64x2_EXTRACT_LANE(
- 0, WASM_SIMD_I64x2_SPLAT(WASM_LOCAL_GET(0))));
-
- CHECK_EQ(0, r.Call(0));
-}
-
-WASM_SIMD_TEST(I8x16WidenS_I16x8NarrowU) {
- // Test any_true lowring with splats of different shapes.
- {
- WasmRunner<int32_t, int16_t> r(execution_tier, lower_simd);
-
- BUILD(r, WASM_SIMD_I16x8_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_I16x8_SPLAT(WASM_LOCAL_GET(0)),
- WASM_SIMD_OP(kExprI8x16UConvertI16x8),
- WASM_SIMD_OP(kExprI16x8SConvertI8x16Low),
- WASM_SIMD_OP(kExprI32x4ExtractLane), TO_BYTE(0));
-
- CHECK_EQ(bit_cast<int32_t>(0xffffffff), r.Call(0x7fff));
- }
-}
-
-WASM_SIMD_TEST(S128SelectWithF32x4) {
- WasmRunner<float, int32_t, float, int32_t> r(execution_tier, lower_simd);
- BUILD(r, WASM_LOCAL_GET(0), WASM_SIMD_OP(kExprI32x4Splat), WASM_LOCAL_GET(1),
- WASM_SIMD_OP(kExprF32x4Splat), WASM_LOCAL_GET(2),
- WASM_SIMD_OP(kExprI32x4Splat), WASM_SIMD_OP(kExprS128Select),
- WASM_SIMD_OP(kExprF32x4ExtractLane), 0);
- // Selection mask is all 0, so always select 2.0.
- CHECK_EQ(2.0, r.Call(1, 2.0, 0));
-}
-
-WASM_SIMD_TEST(S128AndNotWithF32x4) {
- WasmRunner<float, int32_t, float> r(execution_tier, lower_simd);
- BUILD(r, WASM_LOCAL_GET(0), WASM_SIMD_OP(kExprI32x4Splat), WASM_LOCAL_GET(1),
- WASM_SIMD_OP(kExprF32x4Splat), WASM_SIMD_OP(kExprS128AndNot),
- WASM_SIMD_OP(kExprF32x4ExtractLane), 0);
- // 0x00700000 & !0x40800000 = 0x00700000
- CHECK_EQ(bit_cast<float>(0x700000),
- r.Call(0x00700000, bit_cast<float>(0x40800000)));
-}
-
-WASM_SIMD_TEST(FunctionCallWithExtractLaneOutputAsArgument) {
- // This uses the result of an extract lane as an argument to a function call
- // to exercise lowering for kCall and make sure the the extract lane is
- // correctly replaced with a scalar.
- TestSignatures sigs;
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
- WasmFunctionCompiler& fn = r.NewFunction(sigs.f_f());
-
- BUILD(fn, WASM_LOCAL_GET(0), WASM_LOCAL_GET(0), kExprF32Add);
-
- BUILD(r, WASM_LOCAL_GET(0), WASM_SIMD_OP(kExprI32x4Splat),
- WASM_SIMD_OP(kExprF32x4ExtractLane), 0, kExprCallFunction,
- fn.function_index(), WASM_SIMD_OP(kExprF32x4Splat), WASM_LOCAL_GET(0),
- WASM_SIMD_OP(kExprI32x4Splat), WASM_SIMD_OP(kExprI32x4Add),
- WASM_SIMD_OP(kExprI32x4ExtractLane), 0);
- CHECK_EQ(15, r.Call(5));
-}
-
-} // namespace test_run_wasm_simd
-} // namespace wasm
-} // namespace internal
-} // namespace v8
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm-simd.cc b/deps/v8/test/cctest/wasm/test-run-wasm-simd.cc
index 4dd925a20a..4697a6a798 100644
--- a/deps/v8/test/cctest/wasm/test-run-wasm-simd.cc
+++ b/deps/v8/test/cctest/wasm/test-run-wasm-simd.cc
@@ -48,23 +48,21 @@ namespace {
using Shuffle = std::array<int8_t, kSimd128Size>;
-#define WASM_SIMD_TEST(name) \
- void RunWasm_##name##_Impl(LowerSimd lower_simd, \
- TestExecutionTier execution_tier); \
- TEST(RunWasm_##name##_turbofan) { \
- EXPERIMENTAL_FLAG_SCOPE(simd); \
- RunWasm_##name##_Impl(kNoLowerSimd, TestExecutionTier::kTurbofan); \
- } \
- TEST(RunWasm_##name##_liftoff) { \
- EXPERIMENTAL_FLAG_SCOPE(simd); \
- RunWasm_##name##_Impl(kNoLowerSimd, TestExecutionTier::kLiftoff); \
- } \
- TEST(RunWasm_##name##_interpreter) { \
- EXPERIMENTAL_FLAG_SCOPE(simd); \
- RunWasm_##name##_Impl(kNoLowerSimd, TestExecutionTier::kInterpreter); \
- } \
- void RunWasm_##name##_Impl(LowerSimd lower_simd, \
- TestExecutionTier execution_tier)
+#define WASM_SIMD_TEST(name) \
+ void RunWasm_##name##_Impl(TestExecutionTier execution_tier); \
+ TEST(RunWasm_##name##_turbofan) { \
+ EXPERIMENTAL_FLAG_SCOPE(simd); \
+ RunWasm_##name##_Impl(TestExecutionTier::kTurbofan); \
+ } \
+ TEST(RunWasm_##name##_liftoff) { \
+ EXPERIMENTAL_FLAG_SCOPE(simd); \
+ RunWasm_##name##_Impl(TestExecutionTier::kLiftoff); \
+ } \
+ TEST(RunWasm_##name##_interpreter) { \
+ EXPERIMENTAL_FLAG_SCOPE(simd); \
+ RunWasm_##name##_Impl(TestExecutionTier::kInterpreter); \
+ } \
+ void RunWasm_##name##_Impl(TestExecutionTier execution_tier)
// For signed integral types, use base::AddWithWraparound.
template <typename T, typename = typename std::enable_if<
@@ -262,7 +260,7 @@ T Abs(T a) {
WASM_RETURN1(WASM_ZERO))
WASM_SIMD_TEST(S128Globals) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up a global to hold input and output vectors.
int32_t* g0 = r.builder().AddGlobal<int32_t>(kWasmS128);
int32_t* g1 = r.builder().AddGlobal<int32_t>(kWasmS128);
@@ -282,7 +280,7 @@ WASM_SIMD_TEST(S128Globals) {
}
WASM_SIMD_TEST(F32x4Splat) {
- WasmRunner<int32_t, float> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, float> r(execution_tier);
// Set up a global to hold output vector.
float* g = r.builder().AddGlobal<float>(kWasmS128);
byte param1 = 0;
@@ -304,7 +302,7 @@ WASM_SIMD_TEST(F32x4Splat) {
}
WASM_SIMD_TEST(F32x4ReplaceLane) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up a global to hold input/output vector.
float* g = r.builder().AddGlobal<float>(kWasmS128);
// Build function to replace each lane with its (FP) index.
@@ -328,7 +326,7 @@ WASM_SIMD_TEST(F32x4ReplaceLane) {
// Tests both signed and unsigned conversion.
WASM_SIMD_TEST(F32x4ConvertI32x4) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Create two output vectors to hold signed and unsigned results.
float* g0 = r.builder().AddGlobal<float>(kWasmS128);
float* g1 = r.builder().AddGlobal<float>(kWasmS128);
@@ -354,87 +352,86 @@ WASM_SIMD_TEST(F32x4ConvertI32x4) {
}
WASM_SIMD_TEST(F32x4Abs) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4Abs, std::abs);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4Abs, std::abs);
}
WASM_SIMD_TEST(F32x4Neg) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4Neg, Negate);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4Neg, Negate);
}
WASM_SIMD_TEST(F32x4Sqrt) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4Sqrt, std::sqrt);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4Sqrt, std::sqrt);
}
WASM_SIMD_TEST(F32x4Ceil) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4Ceil, ceilf, true);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4Ceil, ceilf, true);
}
WASM_SIMD_TEST(F32x4Floor) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4Floor, floorf, true);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4Floor, floorf, true);
}
WASM_SIMD_TEST(F32x4Trunc) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4Trunc, truncf, true);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4Trunc, truncf, true);
}
WASM_SIMD_TEST(F32x4NearestInt) {
- RunF32x4UnOpTest(execution_tier, lower_simd, kExprF32x4NearestInt, nearbyintf,
- true);
+ RunF32x4UnOpTest(execution_tier, kExprF32x4NearestInt, nearbyintf, true);
}
WASM_SIMD_TEST(F32x4Add) {
- RunF32x4BinOpTest(execution_tier, lower_simd, kExprF32x4Add, Add);
+ RunF32x4BinOpTest(execution_tier, kExprF32x4Add, Add);
}
WASM_SIMD_TEST(F32x4Sub) {
- RunF32x4BinOpTest(execution_tier, lower_simd, kExprF32x4Sub, Sub);
+ RunF32x4BinOpTest(execution_tier, kExprF32x4Sub, Sub);
}
WASM_SIMD_TEST(F32x4Mul) {
- RunF32x4BinOpTest(execution_tier, lower_simd, kExprF32x4Mul, Mul);
+ RunF32x4BinOpTest(execution_tier, kExprF32x4Mul, Mul);
}
WASM_SIMD_TEST(F32x4Div) {
- RunF32x4BinOpTest(execution_tier, lower_simd, kExprF32x4Div, base::Divide);
+ RunF32x4BinOpTest(execution_tier, kExprF32x4Div, base::Divide);
}
WASM_SIMD_TEST(F32x4Min) {
- RunF32x4BinOpTest(execution_tier, lower_simd, kExprF32x4Min, JSMin);
+ RunF32x4BinOpTest(execution_tier, kExprF32x4Min, JSMin);
}
WASM_SIMD_TEST(F32x4Max) {
- RunF32x4BinOpTest(execution_tier, lower_simd, kExprF32x4Max, JSMax);
+ RunF32x4BinOpTest(execution_tier, kExprF32x4Max, JSMax);
}
WASM_SIMD_TEST(F32x4Pmin) {
- RunF32x4BinOpTest(execution_tier, lower_simd, kExprF32x4Pmin, Minimum);
+ RunF32x4BinOpTest(execution_tier, kExprF32x4Pmin, Minimum);
}
WASM_SIMD_TEST(F32x4Pmax) {
- RunF32x4BinOpTest(execution_tier, lower_simd, kExprF32x4Pmax, Maximum);
+ RunF32x4BinOpTest(execution_tier, kExprF32x4Pmax, Maximum);
}
WASM_SIMD_TEST(F32x4Eq) {
- RunF32x4CompareOpTest(execution_tier, lower_simd, kExprF32x4Eq, Equal);
+ RunF32x4CompareOpTest(execution_tier, kExprF32x4Eq, Equal);
}
WASM_SIMD_TEST(F32x4Ne) {
- RunF32x4CompareOpTest(execution_tier, lower_simd, kExprF32x4Ne, NotEqual);
+ RunF32x4CompareOpTest(execution_tier, kExprF32x4Ne, NotEqual);
}
WASM_SIMD_TEST(F32x4Gt) {
- RunF32x4CompareOpTest(execution_tier, lower_simd, kExprF32x4Gt, Greater);
+ RunF32x4CompareOpTest(execution_tier, kExprF32x4Gt, Greater);
}
WASM_SIMD_TEST(F32x4Ge) {
- RunF32x4CompareOpTest(execution_tier, lower_simd, kExprF32x4Ge, GreaterEqual);
+ RunF32x4CompareOpTest(execution_tier, kExprF32x4Ge, GreaterEqual);
}
WASM_SIMD_TEST(F32x4Lt) {
- RunF32x4CompareOpTest(execution_tier, lower_simd, kExprF32x4Lt, Less);
+ RunF32x4CompareOpTest(execution_tier, kExprF32x4Lt, Less);
}
WASM_SIMD_TEST(F32x4Le) {
- RunF32x4CompareOpTest(execution_tier, lower_simd, kExprF32x4Le, LessEqual);
+ RunF32x4CompareOpTest(execution_tier, kExprF32x4Le, LessEqual);
}
WASM_SIMD_TEST(I64x2Splat) {
- WasmRunner<int32_t, int64_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int64_t> r(execution_tier);
// Set up a global to hold output vector.
int64_t* g = r.builder().AddGlobal<int64_t>(kWasmS128);
byte param1 = 0;
@@ -452,7 +449,7 @@ WASM_SIMD_TEST(I64x2Splat) {
}
WASM_SIMD_TEST(I64x2ExtractLane) {
- WasmRunner<int64_t> r(execution_tier, lower_simd);
+ WasmRunner<int64_t> r(execution_tier);
r.AllocateLocal(kWasmI64);
r.AllocateLocal(kWasmS128);
BUILD(
@@ -465,7 +462,7 @@ WASM_SIMD_TEST(I64x2ExtractLane) {
}
WASM_SIMD_TEST(I64x2ReplaceLane) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up a global to hold input/output vector.
int64_t* g = r.builder().AddGlobal<int64_t>(kWasmS128);
// Build function to replace each lane with its index.
@@ -484,65 +481,59 @@ WASM_SIMD_TEST(I64x2ReplaceLane) {
}
WASM_SIMD_TEST(I64x2Neg) {
- RunI64x2UnOpTest(execution_tier, lower_simd, kExprI64x2Neg,
- base::NegateWithWraparound);
+ RunI64x2UnOpTest(execution_tier, kExprI64x2Neg, base::NegateWithWraparound);
}
WASM_SIMD_TEST(I64x2Abs) {
- RunI64x2UnOpTest(execution_tier, lower_simd, kExprI64x2Abs, std::abs);
+ RunI64x2UnOpTest(execution_tier, kExprI64x2Abs, std::abs);
}
WASM_SIMD_TEST(I64x2Shl) {
- RunI64x2ShiftOpTest(execution_tier, lower_simd, kExprI64x2Shl,
- LogicalShiftLeft);
+ RunI64x2ShiftOpTest(execution_tier, kExprI64x2Shl, LogicalShiftLeft);
}
WASM_SIMD_TEST(I64x2ShrS) {
- RunI64x2ShiftOpTest(execution_tier, lower_simd, kExprI64x2ShrS,
- ArithmeticShiftRight);
+ RunI64x2ShiftOpTest(execution_tier, kExprI64x2ShrS, ArithmeticShiftRight);
}
WASM_SIMD_TEST(I64x2ShrU) {
- RunI64x2ShiftOpTest(execution_tier, lower_simd, kExprI64x2ShrU,
- LogicalShiftRight);
+ RunI64x2ShiftOpTest(execution_tier, kExprI64x2ShrU, LogicalShiftRight);
}
WASM_SIMD_TEST(I64x2Add) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2Add,
- base::AddWithWraparound);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2Add, base::AddWithWraparound);
}
WASM_SIMD_TEST(I64x2Sub) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2Sub,
- base::SubWithWraparound);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2Sub, base::SubWithWraparound);
}
WASM_SIMD_TEST(I64x2Eq) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2Eq, Equal);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2Eq, Equal);
}
WASM_SIMD_TEST(I64x2Ne) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2Ne, NotEqual);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2Ne, NotEqual);
}
WASM_SIMD_TEST(I64x2LtS) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2LtS, Less);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2LtS, Less);
}
WASM_SIMD_TEST(I64x2LeS) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2LeS, LessEqual);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2LeS, LessEqual);
}
WASM_SIMD_TEST(I64x2GtS) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2GtS, Greater);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2GtS, Greater);
}
WASM_SIMD_TEST(I64x2GeS) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2GeS, GreaterEqual);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2GeS, GreaterEqual);
}
WASM_SIMD_TEST(F64x2Splat) {
- WasmRunner<int32_t, double> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, double> r(execution_tier);
// Set up a global to hold output vector.
double* g = r.builder().AddGlobal<double>(kWasmS128);
byte param1 = 0;
@@ -564,7 +555,7 @@ WASM_SIMD_TEST(F64x2Splat) {
}
WASM_SIMD_TEST(F64x2ExtractLane) {
- WasmRunner<double, double> r(execution_tier, lower_simd);
+ WasmRunner<double, double> r(execution_tier);
byte param1 = 0;
byte temp1 = r.AllocateLocal(kWasmF64);
byte temp2 = r.AllocateLocal(kWasmS128);
@@ -586,7 +577,7 @@ WASM_SIMD_TEST(F64x2ExtractLane) {
}
WASM_SIMD_TEST(F64x2ReplaceLane) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up globals to hold input/output vector.
double* g0 = r.builder().AddGlobal<double>(kWasmS128);
double* g1 = r.builder().AddGlobal<double>(kWasmS128);
@@ -609,7 +600,7 @@ WASM_SIMD_TEST(F64x2ReplaceLane) {
}
WASM_SIMD_TEST(F64x2ExtractLaneWithI64x2) {
- WasmRunner<int64_t> r(execution_tier, lower_simd);
+ WasmRunner<int64_t> r(execution_tier);
BUILD(r, WASM_IF_ELSE_L(
WASM_F64_EQ(WASM_SIMD_F64x2_EXTRACT_LANE(
0, WASM_SIMD_I64x2_SPLAT(WASM_I64V(1e15))),
@@ -619,7 +610,7 @@ WASM_SIMD_TEST(F64x2ExtractLaneWithI64x2) {
}
WASM_SIMD_TEST(I64x2ExtractWithF64x2) {
- WasmRunner<int64_t> r(execution_tier, lower_simd);
+ WasmRunner<int64_t> r(execution_tier);
BUILD(r, WASM_IF_ELSE_L(
WASM_I64_EQ(WASM_SIMD_I64x2_EXTRACT_LANE(
0, WASM_SIMD_F64x2_SPLAT(WASM_F64(1e15))),
@@ -629,38 +620,37 @@ WASM_SIMD_TEST(I64x2ExtractWithF64x2) {
}
WASM_SIMD_TEST(F64x2Abs) {
- RunF64x2UnOpTest(execution_tier, lower_simd, kExprF64x2Abs, std::abs);
+ RunF64x2UnOpTest(execution_tier, kExprF64x2Abs, std::abs);
}
WASM_SIMD_TEST(F64x2Neg) {
- RunF64x2UnOpTest(execution_tier, lower_simd, kExprF64x2Neg, Negate);
+ RunF64x2UnOpTest(execution_tier, kExprF64x2Neg, Negate);
}
WASM_SIMD_TEST(F64x2Sqrt) {
- RunF64x2UnOpTest(execution_tier, lower_simd, kExprF64x2Sqrt, std::sqrt);
+ RunF64x2UnOpTest(execution_tier, kExprF64x2Sqrt, std::sqrt);
}
WASM_SIMD_TEST(F64x2Ceil) {
- RunF64x2UnOpTest(execution_tier, lower_simd, kExprF64x2Ceil, ceil, true);
+ RunF64x2UnOpTest(execution_tier, kExprF64x2Ceil, ceil, true);
}
WASM_SIMD_TEST(F64x2Floor) {
- RunF64x2UnOpTest(execution_tier, lower_simd, kExprF64x2Floor, floor, true);
+ RunF64x2UnOpTest(execution_tier, kExprF64x2Floor, floor, true);
}
WASM_SIMD_TEST(F64x2Trunc) {
- RunF64x2UnOpTest(execution_tier, lower_simd, kExprF64x2Trunc, trunc, true);
+ RunF64x2UnOpTest(execution_tier, kExprF64x2Trunc, trunc, true);
}
WASM_SIMD_TEST(F64x2NearestInt) {
- RunF64x2UnOpTest(execution_tier, lower_simd, kExprF64x2NearestInt, nearbyint,
- true);
+ RunF64x2UnOpTest(execution_tier, kExprF64x2NearestInt, nearbyint, true);
}
template <typename SrcType>
void RunF64x2ConvertLowI32x4Test(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode) {
- WasmRunner<int32_t, SrcType> r(execution_tier, lower_simd);
+ WasmOpcode opcode) {
+ WasmRunner<int32_t, SrcType> r(execution_tier);
double* g = r.builder().template AddGlobal<double>(kWasmS128);
BUILD(r,
WASM_GLOBAL_SET(
@@ -683,19 +673,19 @@ void RunF64x2ConvertLowI32x4Test(TestExecutionTier execution_tier,
}
WASM_SIMD_TEST(F64x2ConvertLowI32x4S) {
- RunF64x2ConvertLowI32x4Test<int32_t>(execution_tier, lower_simd,
+ RunF64x2ConvertLowI32x4Test<int32_t>(execution_tier,
kExprF64x2ConvertLowI32x4S);
}
WASM_SIMD_TEST(F64x2ConvertLowI32x4U) {
- RunF64x2ConvertLowI32x4Test<uint32_t>(execution_tier, lower_simd,
+ RunF64x2ConvertLowI32x4Test<uint32_t>(execution_tier,
kExprF64x2ConvertLowI32x4U);
}
template <typename SrcType>
void RunI32x4TruncSatF64x2Test(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode) {
- WasmRunner<int32_t, double> r(execution_tier, lower_simd);
+ WasmOpcode opcode) {
+ WasmRunner<int32_t, double> r(execution_tier);
SrcType* g = r.builder().AddGlobal<SrcType>(kWasmS128);
BUILD(
r,
@@ -718,17 +708,17 @@ void RunI32x4TruncSatF64x2Test(TestExecutionTier execution_tier,
}
WASM_SIMD_TEST(I32x4TruncSatF64x2SZero) {
- RunI32x4TruncSatF64x2Test<int32_t>(execution_tier, lower_simd,
+ RunI32x4TruncSatF64x2Test<int32_t>(execution_tier,
kExprI32x4TruncSatF64x2SZero);
}
WASM_SIMD_TEST(I32x4TruncSatF64x2UZero) {
- RunI32x4TruncSatF64x2Test<uint32_t>(execution_tier, lower_simd,
+ RunI32x4TruncSatF64x2Test<uint32_t>(execution_tier,
kExprI32x4TruncSatF64x2UZero);
}
WASM_SIMD_TEST(F32x4DemoteF64x2Zero) {
- WasmRunner<int32_t, double> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, double> r(execution_tier);
float* g = r.builder().AddGlobal<float>(kWasmS128);
BUILD(r,
WASM_GLOBAL_SET(
@@ -751,7 +741,7 @@ WASM_SIMD_TEST(F32x4DemoteF64x2Zero) {
}
WASM_SIMD_TEST(F64x2PromoteLowF32x4) {
- WasmRunner<int32_t, float> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, float> r(execution_tier);
double* g = r.builder().AddGlobal<double>(kWasmS128);
BUILD(r,
WASM_GLOBAL_SET(
@@ -770,68 +760,67 @@ WASM_SIMD_TEST(F64x2PromoteLowF32x4) {
}
WASM_SIMD_TEST(F64x2Add) {
- RunF64x2BinOpTest(execution_tier, lower_simd, kExprF64x2Add, Add);
+ RunF64x2BinOpTest(execution_tier, kExprF64x2Add, Add);
}
WASM_SIMD_TEST(F64x2Sub) {
- RunF64x2BinOpTest(execution_tier, lower_simd, kExprF64x2Sub, Sub);
+ RunF64x2BinOpTest(execution_tier, kExprF64x2Sub, Sub);
}
WASM_SIMD_TEST(F64x2Mul) {
- RunF64x2BinOpTest(execution_tier, lower_simd, kExprF64x2Mul, Mul);
+ RunF64x2BinOpTest(execution_tier, kExprF64x2Mul, Mul);
}
WASM_SIMD_TEST(F64x2Div) {
- RunF64x2BinOpTest(execution_tier, lower_simd, kExprF64x2Div, base::Divide);
+ RunF64x2BinOpTest(execution_tier, kExprF64x2Div, base::Divide);
}
WASM_SIMD_TEST(F64x2Pmin) {
- RunF64x2BinOpTest(execution_tier, lower_simd, kExprF64x2Pmin, Minimum);
+ RunF64x2BinOpTest(execution_tier, kExprF64x2Pmin, Minimum);
}
WASM_SIMD_TEST(F64x2Pmax) {
- RunF64x2BinOpTest(execution_tier, lower_simd, kExprF64x2Pmax, Maximum);
+ RunF64x2BinOpTest(execution_tier, kExprF64x2Pmax, Maximum);
}
WASM_SIMD_TEST(F64x2Eq) {
- RunF64x2CompareOpTest(execution_tier, lower_simd, kExprF64x2Eq, Equal);
+ RunF64x2CompareOpTest(execution_tier, kExprF64x2Eq, Equal);
}
WASM_SIMD_TEST(F64x2Ne) {
- RunF64x2CompareOpTest(execution_tier, lower_simd, kExprF64x2Ne, NotEqual);
+ RunF64x2CompareOpTest(execution_tier, kExprF64x2Ne, NotEqual);
}
WASM_SIMD_TEST(F64x2Gt) {
- RunF64x2CompareOpTest(execution_tier, lower_simd, kExprF64x2Gt, Greater);
+ RunF64x2CompareOpTest(execution_tier, kExprF64x2Gt, Greater);
}
WASM_SIMD_TEST(F64x2Ge) {
- RunF64x2CompareOpTest(execution_tier, lower_simd, kExprF64x2Ge, GreaterEqual);
+ RunF64x2CompareOpTest(execution_tier, kExprF64x2Ge, GreaterEqual);
}
WASM_SIMD_TEST(F64x2Lt) {
- RunF64x2CompareOpTest(execution_tier, lower_simd, kExprF64x2Lt, Less);
+ RunF64x2CompareOpTest(execution_tier, kExprF64x2Lt, Less);
}
WASM_SIMD_TEST(F64x2Le) {
- RunF64x2CompareOpTest(execution_tier, lower_simd, kExprF64x2Le, LessEqual);
+ RunF64x2CompareOpTest(execution_tier, kExprF64x2Le, LessEqual);
}
WASM_SIMD_TEST(F64x2Min) {
- RunF64x2BinOpTest(execution_tier, lower_simd, kExprF64x2Min, JSMin);
+ RunF64x2BinOpTest(execution_tier, kExprF64x2Min, JSMin);
}
WASM_SIMD_TEST(F64x2Max) {
- RunF64x2BinOpTest(execution_tier, lower_simd, kExprF64x2Max, JSMax);
+ RunF64x2BinOpTest(execution_tier, kExprF64x2Max, JSMax);
}
WASM_SIMD_TEST(I64x2Mul) {
- RunI64x2BinOpTest(execution_tier, lower_simd, kExprI64x2Mul,
- base::MulWithWraparound);
+ RunI64x2BinOpTest(execution_tier, kExprI64x2Mul, base::MulWithWraparound);
}
WASM_SIMD_TEST(I32x4Splat) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Set up a global to hold output vector.
int32_t* g = r.builder().AddGlobal<int32_t>(kWasmS128);
byte param1 = 0;
@@ -849,7 +838,7 @@ WASM_SIMD_TEST(I32x4Splat) {
}
WASM_SIMD_TEST(I32x4ReplaceLane) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up a global to hold input/output vector.
int32_t* g = r.builder().AddGlobal<int32_t>(kWasmS128);
// Build function to replace each lane with its index.
@@ -872,7 +861,7 @@ WASM_SIMD_TEST(I32x4ReplaceLane) {
}
WASM_SIMD_TEST(I16x8Splat) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Set up a global to hold output vector.
int16_t* g = r.builder().AddGlobal<int16_t>(kWasmS128);
byte param1 = 0;
@@ -900,7 +889,7 @@ WASM_SIMD_TEST(I16x8Splat) {
}
WASM_SIMD_TEST(I16x8ReplaceLane) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up a global to hold input/output vector.
int16_t* g = r.builder().AddGlobal<int16_t>(kWasmS128);
// Build function to replace each lane with its index.
@@ -931,7 +920,7 @@ WASM_SIMD_TEST(I16x8ReplaceLane) {
}
WASM_SIMD_TEST(I8x16BitMask) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
byte value1 = r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(value1, WASM_SIMD_I8x16_SPLAT(WASM_LOCAL_GET(0))),
@@ -950,7 +939,7 @@ WASM_SIMD_TEST(I8x16BitMask) {
}
WASM_SIMD_TEST(I16x8BitMask) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
byte value1 = r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(value1, WASM_SIMD_I16x8_SPLAT(WASM_LOCAL_GET(0))),
@@ -969,7 +958,7 @@ WASM_SIMD_TEST(I16x8BitMask) {
}
WASM_SIMD_TEST(I32x4BitMask) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
byte value1 = r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(value1, WASM_SIMD_I32x4_SPLAT(WASM_LOCAL_GET(0))),
@@ -988,7 +977,7 @@ WASM_SIMD_TEST(I32x4BitMask) {
}
WASM_SIMD_TEST(I64x2BitMask) {
- WasmRunner<int32_t, int64_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int64_t> r(execution_tier);
byte value1 = r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(value1, WASM_SIMD_I64x2_SPLAT(WASM_LOCAL_GET(0))),
@@ -1005,7 +994,7 @@ WASM_SIMD_TEST(I64x2BitMask) {
}
WASM_SIMD_TEST(I8x16Splat) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Set up a global to hold output vector.
int8_t* g = r.builder().AddGlobal<int8_t>(kWasmS128);
byte param1 = 0;
@@ -1033,7 +1022,7 @@ WASM_SIMD_TEST(I8x16Splat) {
}
WASM_SIMD_TEST(I8x16ReplaceLane) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up a global to hold input/output vector.
int8_t* g = r.builder().AddGlobal<int8_t>(kWasmS128);
// Build function to replace each lane with its index.
@@ -1095,7 +1084,7 @@ int32_t ConvertToInt(double val, bool unsigned_integer) {
// Tests both signed and unsigned conversion.
WASM_SIMD_TEST(I32x4ConvertF32x4) {
- WasmRunner<int32_t, float> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, float> r(execution_tier);
// Create two output vectors to hold signed and unsigned results.
int32_t* g0 = r.builder().AddGlobal<int32_t>(kWasmS128);
int32_t* g1 = r.builder().AddGlobal<int32_t>(kWasmS128);
@@ -1123,7 +1112,7 @@ WASM_SIMD_TEST(I32x4ConvertF32x4) {
// Tests both signed and unsigned conversion from I16x8 (unpacking).
WASM_SIMD_TEST(I32x4ConvertI16x8) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Create four output vectors to hold signed and unsigned results.
int32_t* g0 = r.builder().AddGlobal<int32_t>(kWasmS128);
int32_t* g1 = r.builder().AddGlobal<int32_t>(kWasmS128);
@@ -1158,7 +1147,7 @@ WASM_SIMD_TEST(I32x4ConvertI16x8) {
// Tests both signed and unsigned conversion from I32x4 (unpacking).
WASM_SIMD_TEST(I64x2ConvertI32x4) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Create four output vectors to hold signed and unsigned results.
int64_t* g0 = r.builder().AddGlobal<int64_t>(kWasmS128);
int64_t* g1 = r.builder().AddGlobal<int64_t>(kWasmS128);
@@ -1193,25 +1182,23 @@ WASM_SIMD_TEST(I64x2ConvertI32x4) {
}
WASM_SIMD_TEST(I32x4Neg) {
- RunI32x4UnOpTest(execution_tier, lower_simd, kExprI32x4Neg,
- base::NegateWithWraparound);
+ RunI32x4UnOpTest(execution_tier, kExprI32x4Neg, base::NegateWithWraparound);
}
WASM_SIMD_TEST(I32x4Abs) {
- RunI32x4UnOpTest(execution_tier, lower_simd, kExprI32x4Abs, std::abs);
+ RunI32x4UnOpTest(execution_tier, kExprI32x4Abs, std::abs);
}
WASM_SIMD_TEST(S128Not) {
- RunI32x4UnOpTest(execution_tier, lower_simd, kExprS128Not,
- [](int32_t x) { return ~x; });
+ RunI32x4UnOpTest(execution_tier, kExprS128Not, [](int32_t x) { return ~x; });
}
template <typename Narrow, typename Wide>
void RunExtAddPairwiseTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode ext_add_pairwise,
- WasmOpcode splat, Shuffle interleaving_shuffle) {
+ WasmOpcode ext_add_pairwise, WasmOpcode splat,
+ Shuffle interleaving_shuffle) {
constexpr int num_lanes = kSimd128Size / sizeof(Wide);
- WasmRunner<int32_t, Narrow, Narrow> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, Narrow, Narrow> r(execution_tier);
Wide* g = r.builder().template AddGlobal<Wide>(kWasmS128);
BUILD(r,
@@ -1239,142 +1226,133 @@ constexpr Shuffle interleave_8x16_shuffle = {0, 17, 2, 19, 4, 21, 6, 23,
WASM_SIMD_TEST(I32x4ExtAddPairwiseI16x8S) {
RunExtAddPairwiseTest<int16_t, int32_t>(
- execution_tier, lower_simd, kExprI32x4ExtAddPairwiseI16x8S,
- kExprI16x8Splat, interleave_16x8_shuffle);
+ execution_tier, kExprI32x4ExtAddPairwiseI16x8S, kExprI16x8Splat,
+ interleave_16x8_shuffle);
}
WASM_SIMD_TEST(I32x4ExtAddPairwiseI16x8U) {
RunExtAddPairwiseTest<uint16_t, uint32_t>(
- execution_tier, lower_simd, kExprI32x4ExtAddPairwiseI16x8U,
- kExprI16x8Splat, interleave_16x8_shuffle);
+ execution_tier, kExprI32x4ExtAddPairwiseI16x8U, kExprI16x8Splat,
+ interleave_16x8_shuffle);
}
WASM_SIMD_TEST(I16x8ExtAddPairwiseI8x16S) {
RunExtAddPairwiseTest<int8_t, int16_t>(
- execution_tier, lower_simd, kExprI16x8ExtAddPairwiseI8x16S,
- kExprI8x16Splat, interleave_8x16_shuffle);
+ execution_tier, kExprI16x8ExtAddPairwiseI8x16S, kExprI8x16Splat,
+ interleave_8x16_shuffle);
}
WASM_SIMD_TEST(I16x8ExtAddPairwiseI8x16U) {
RunExtAddPairwiseTest<uint8_t, uint16_t>(
- execution_tier, lower_simd, kExprI16x8ExtAddPairwiseI8x16U,
- kExprI8x16Splat, interleave_8x16_shuffle);
+ execution_tier, kExprI16x8ExtAddPairwiseI8x16U, kExprI8x16Splat,
+ interleave_8x16_shuffle);
}
WASM_SIMD_TEST(I32x4Add) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4Add,
- base::AddWithWraparound);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4Add, base::AddWithWraparound);
}
WASM_SIMD_TEST(I32x4Sub) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4Sub,
- base::SubWithWraparound);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4Sub, base::SubWithWraparound);
}
WASM_SIMD_TEST(I32x4Mul) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4Mul,
- base::MulWithWraparound);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4Mul, base::MulWithWraparound);
}
WASM_SIMD_TEST(I32x4MinS) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4MinS, Minimum);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4MinS, Minimum);
}
WASM_SIMD_TEST(I32x4MaxS) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4MaxS, Maximum);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4MaxS, Maximum);
}
WASM_SIMD_TEST(I32x4MinU) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4MinU,
- UnsignedMinimum);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4MinU, UnsignedMinimum);
}
WASM_SIMD_TEST(I32x4MaxU) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4MaxU,
+ RunI32x4BinOpTest(execution_tier, kExprI32x4MaxU,
UnsignedMaximum);
}
WASM_SIMD_TEST(S128And) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprS128And,
+ RunI32x4BinOpTest(execution_tier, kExprS128And,
[](int32_t x, int32_t y) { return x & y; });
}
WASM_SIMD_TEST(S128Or) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprS128Or,
+ RunI32x4BinOpTest(execution_tier, kExprS128Or,
[](int32_t x, int32_t y) { return x | y; });
}
WASM_SIMD_TEST(S128Xor) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprS128Xor,
+ RunI32x4BinOpTest(execution_tier, kExprS128Xor,
[](int32_t x, int32_t y) { return x ^ y; });
}
// Bitwise operation, doesn't really matter what simd type we test it with.
WASM_SIMD_TEST(S128AndNot) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprS128AndNot,
+ RunI32x4BinOpTest(execution_tier, kExprS128AndNot,
[](int32_t x, int32_t y) { return x & ~y; });
}
WASM_SIMD_TEST(I32x4Eq) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4Eq, Equal);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4Eq, Equal);
}
WASM_SIMD_TEST(I32x4Ne) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4Ne, NotEqual);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4Ne, NotEqual);
}
WASM_SIMD_TEST(I32x4LtS) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4LtS, Less);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4LtS, Less);
}
WASM_SIMD_TEST(I32x4LeS) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4LeS, LessEqual);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4LeS, LessEqual);
}
WASM_SIMD_TEST(I32x4GtS) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4GtS, Greater);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4GtS, Greater);
}
WASM_SIMD_TEST(I32x4GeS) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4GeS, GreaterEqual);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4GeS, GreaterEqual);
}
WASM_SIMD_TEST(I32x4LtU) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4LtU, UnsignedLess);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4LtU, UnsignedLess);
}
WASM_SIMD_TEST(I32x4LeU) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4LeU,
- UnsignedLessEqual);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4LeU, UnsignedLessEqual);
}
WASM_SIMD_TEST(I32x4GtU) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4GtU, UnsignedGreater);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4GtU, UnsignedGreater);
}
WASM_SIMD_TEST(I32x4GeU) {
- RunI32x4BinOpTest(execution_tier, lower_simd, kExprI32x4GeU,
- UnsignedGreaterEqual);
+ RunI32x4BinOpTest(execution_tier, kExprI32x4GeU, UnsignedGreaterEqual);
}
WASM_SIMD_TEST(I32x4Shl) {
- RunI32x4ShiftOpTest(execution_tier, lower_simd, kExprI32x4Shl,
- LogicalShiftLeft);
+ RunI32x4ShiftOpTest(execution_tier, kExprI32x4Shl, LogicalShiftLeft);
}
WASM_SIMD_TEST(I32x4ShrS) {
- RunI32x4ShiftOpTest(execution_tier, lower_simd, kExprI32x4ShrS,
- ArithmeticShiftRight);
+ RunI32x4ShiftOpTest(execution_tier, kExprI32x4ShrS, ArithmeticShiftRight);
}
WASM_SIMD_TEST(I32x4ShrU) {
- RunI32x4ShiftOpTest(execution_tier, lower_simd, kExprI32x4ShrU,
- LogicalShiftRight);
+ RunI32x4ShiftOpTest(execution_tier, kExprI32x4ShrU, LogicalShiftRight);
}
// Tests both signed and unsigned conversion from I8x16 (unpacking).
WASM_SIMD_TEST(I16x8ConvertI8x16) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Create four output vectors to hold signed and unsigned results.
int16_t* g0 = r.builder().AddGlobal<int16_t>(kWasmS128);
int16_t* g1 = r.builder().AddGlobal<int16_t>(kWasmS128);
@@ -1409,7 +1387,7 @@ WASM_SIMD_TEST(I16x8ConvertI8x16) {
// Tests both signed and unsigned conversion from I32x4 (packing).
WASM_SIMD_TEST(I16x8ConvertI32x4) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Create output vectors to hold signed and unsigned results.
int16_t* g0 = r.builder().AddGlobal<int16_t>(kWasmS128);
int16_t* g1 = r.builder().AddGlobal<int16_t>(kWasmS128);
@@ -1437,117 +1415,106 @@ WASM_SIMD_TEST(I16x8ConvertI32x4) {
}
WASM_SIMD_TEST(I16x8Neg) {
- RunI16x8UnOpTest(execution_tier, lower_simd, kExprI16x8Neg,
- base::NegateWithWraparound);
+ RunI16x8UnOpTest(execution_tier, kExprI16x8Neg, base::NegateWithWraparound);
}
WASM_SIMD_TEST(I16x8Abs) {
- RunI16x8UnOpTest(execution_tier, lower_simd, kExprI16x8Abs, Abs);
+ RunI16x8UnOpTest(execution_tier, kExprI16x8Abs, Abs);
}
WASM_SIMD_TEST(I16x8Add) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8Add,
- base::AddWithWraparound);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8Add, base::AddWithWraparound);
}
WASM_SIMD_TEST(I16x8AddSatS) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8AddSatS,
- SaturateAdd<int16_t>);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8AddSatS, SaturateAdd<int16_t>);
}
WASM_SIMD_TEST(I16x8Sub) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8Sub,
- base::SubWithWraparound);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8Sub, base::SubWithWraparound);
}
WASM_SIMD_TEST(I16x8SubSatS) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8SubSatS,
- SaturateSub<int16_t>);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8SubSatS, SaturateSub<int16_t>);
}
WASM_SIMD_TEST(I16x8Mul) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8Mul,
- base::MulWithWraparound);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8Mul, base::MulWithWraparound);
}
WASM_SIMD_TEST(I16x8MinS) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8MinS, Minimum);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8MinS, Minimum);
}
WASM_SIMD_TEST(I16x8MaxS) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8MaxS, Maximum);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8MaxS, Maximum);
}
WASM_SIMD_TEST(I16x8AddSatU) {
- RunI16x8BinOpTest<uint16_t>(execution_tier, lower_simd, kExprI16x8AddSatU,
+ RunI16x8BinOpTest<uint16_t>(execution_tier, kExprI16x8AddSatU,
SaturateAdd<uint16_t>);
}
WASM_SIMD_TEST(I16x8SubSatU) {
- RunI16x8BinOpTest<uint16_t>(execution_tier, lower_simd, kExprI16x8SubSatU,
+ RunI16x8BinOpTest<uint16_t>(execution_tier, kExprI16x8SubSatU,
SaturateSub<uint16_t>);
}
WASM_SIMD_TEST(I16x8MinU) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8MinU,
- UnsignedMinimum);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8MinU, UnsignedMinimum);
}
WASM_SIMD_TEST(I16x8MaxU) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8MaxU,
- UnsignedMaximum);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8MaxU, UnsignedMaximum);
}
WASM_SIMD_TEST(I16x8Eq) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8Eq, Equal);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8Eq, Equal);
}
WASM_SIMD_TEST(I16x8Ne) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8Ne, NotEqual);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8Ne, NotEqual);
}
WASM_SIMD_TEST(I16x8LtS) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8LtS, Less);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8LtS, Less);
}
WASM_SIMD_TEST(I16x8LeS) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8LeS, LessEqual);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8LeS, LessEqual);
}
WASM_SIMD_TEST(I16x8GtS) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8GtS, Greater);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8GtS, Greater);
}
WASM_SIMD_TEST(I16x8GeS) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8GeS, GreaterEqual);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8GeS, GreaterEqual);
}
WASM_SIMD_TEST(I16x8GtU) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8GtU, UnsignedGreater);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8GtU, UnsignedGreater);
}
WASM_SIMD_TEST(I16x8GeU) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8GeU,
- UnsignedGreaterEqual);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8GeU, UnsignedGreaterEqual);
}
WASM_SIMD_TEST(I16x8LtU) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8LtU, UnsignedLess);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8LtU, UnsignedLess);
}
WASM_SIMD_TEST(I16x8LeU) {
- RunI16x8BinOpTest(execution_tier, lower_simd, kExprI16x8LeU,
- UnsignedLessEqual);
+ RunI16x8BinOpTest(execution_tier, kExprI16x8LeU, UnsignedLessEqual);
}
WASM_SIMD_TEST(I16x8RoundingAverageU) {
- RunI16x8BinOpTest<uint16_t>(execution_tier, lower_simd,
- kExprI16x8RoundingAverageU,
+ RunI16x8BinOpTest<uint16_t>(execution_tier, kExprI16x8RoundingAverageU,
RoundingAverageUnsigned);
}
WASM_SIMD_TEST(I16x8Q15MulRSatS) {
- RunI16x8BinOpTest<int16_t>(execution_tier, lower_simd, kExprI16x8Q15MulRSatS,
+ RunI16x8BinOpTest<int16_t>(execution_tier, kExprI16x8Q15MulRSatS,
SaturateRoundingQMul<int16_t>);
}
@@ -1559,10 +1526,9 @@ enum class MulHalf { kLow, kHigh };
// It will zero the top or bottom half of one of the operands, this will catch
// mistakes if we are multiply the incorrect halves.
template <typename S, typename T, typename OpType = T (*)(S, S)>
-void RunExtMulTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, OpType expected_op, WasmOpcode splat,
- MulHalf half) {
- WasmRunner<int32_t, S, S> r(execution_tier, lower_simd);
+void RunExtMulTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ OpType expected_op, WasmOpcode splat, MulHalf half) {
+ WasmRunner<int32_t, S, S> r(execution_tier);
int lane_to_zero = half == MulHalf::kLow ? 1 : 0;
T* g = r.builder().template AddGlobal<T>(kWasmS128);
@@ -1590,79 +1556,75 @@ void RunExtMulTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
} // namespace
WASM_SIMD_TEST(I16x8ExtMulLowI8x16S) {
- RunExtMulTest<int8_t, int16_t>(execution_tier, lower_simd,
- kExprI16x8ExtMulLowI8x16S, MultiplyLong,
- kExprI8x16Splat, MulHalf::kLow);
+ RunExtMulTest<int8_t, int16_t>(execution_tier, kExprI16x8ExtMulLowI8x16S,
+ MultiplyLong, kExprI8x16Splat, MulHalf::kLow);
}
WASM_SIMD_TEST(I16x8ExtMulHighI8x16S) {
- RunExtMulTest<int8_t, int16_t>(execution_tier, lower_simd,
- kExprI16x8ExtMulHighI8x16S, MultiplyLong,
- kExprI8x16Splat, MulHalf::kHigh);
+ RunExtMulTest<int8_t, int16_t>(execution_tier, kExprI16x8ExtMulHighI8x16S,
+ MultiplyLong, kExprI8x16Splat, MulHalf::kHigh);
}
WASM_SIMD_TEST(I16x8ExtMulLowI8x16U) {
- RunExtMulTest<uint8_t, uint16_t>(execution_tier, lower_simd,
- kExprI16x8ExtMulLowI8x16U, MultiplyLong,
- kExprI8x16Splat, MulHalf::kLow);
+ RunExtMulTest<uint8_t, uint16_t>(execution_tier, kExprI16x8ExtMulLowI8x16U,
+ MultiplyLong, kExprI8x16Splat,
+ MulHalf::kLow);
}
WASM_SIMD_TEST(I16x8ExtMulHighI8x16U) {
- RunExtMulTest<uint8_t, uint16_t>(execution_tier, lower_simd,
- kExprI16x8ExtMulHighI8x16U, MultiplyLong,
- kExprI8x16Splat, MulHalf::kHigh);
+ RunExtMulTest<uint8_t, uint16_t>(execution_tier, kExprI16x8ExtMulHighI8x16U,
+ MultiplyLong, kExprI8x16Splat,
+ MulHalf::kHigh);
}
WASM_SIMD_TEST(I32x4ExtMulLowI16x8S) {
- RunExtMulTest<int16_t, int32_t>(execution_tier, lower_simd,
- kExprI32x4ExtMulLowI16x8S, MultiplyLong,
- kExprI16x8Splat, MulHalf::kLow);
+ RunExtMulTest<int16_t, int32_t>(execution_tier, kExprI32x4ExtMulLowI16x8S,
+ MultiplyLong, kExprI16x8Splat, MulHalf::kLow);
}
WASM_SIMD_TEST(I32x4ExtMulHighI16x8S) {
- RunExtMulTest<int16_t, int32_t>(execution_tier, lower_simd,
- kExprI32x4ExtMulHighI16x8S, MultiplyLong,
- kExprI16x8Splat, MulHalf::kHigh);
+ RunExtMulTest<int16_t, int32_t>(execution_tier, kExprI32x4ExtMulHighI16x8S,
+ MultiplyLong, kExprI16x8Splat,
+ MulHalf::kHigh);
}
WASM_SIMD_TEST(I32x4ExtMulLowI16x8U) {
- RunExtMulTest<uint16_t, uint32_t>(execution_tier, lower_simd,
- kExprI32x4ExtMulLowI16x8U, MultiplyLong,
- kExprI16x8Splat, MulHalf::kLow);
+ RunExtMulTest<uint16_t, uint32_t>(execution_tier, kExprI32x4ExtMulLowI16x8U,
+ MultiplyLong, kExprI16x8Splat,
+ MulHalf::kLow);
}
WASM_SIMD_TEST(I32x4ExtMulHighI16x8U) {
- RunExtMulTest<uint16_t, uint32_t>(execution_tier, lower_simd,
- kExprI32x4ExtMulHighI16x8U, MultiplyLong,
- kExprI16x8Splat, MulHalf::kHigh);
+ RunExtMulTest<uint16_t, uint32_t>(execution_tier, kExprI32x4ExtMulHighI16x8U,
+ MultiplyLong, kExprI16x8Splat,
+ MulHalf::kHigh);
}
WASM_SIMD_TEST(I64x2ExtMulLowI32x4S) {
- RunExtMulTest<int32_t, int64_t>(execution_tier, lower_simd,
- kExprI64x2ExtMulLowI32x4S, MultiplyLong,
- kExprI32x4Splat, MulHalf::kLow);
+ RunExtMulTest<int32_t, int64_t>(execution_tier, kExprI64x2ExtMulLowI32x4S,
+ MultiplyLong, kExprI32x4Splat, MulHalf::kLow);
}
WASM_SIMD_TEST(I64x2ExtMulHighI32x4S) {
- RunExtMulTest<int32_t, int64_t>(execution_tier, lower_simd,
- kExprI64x2ExtMulHighI32x4S, MultiplyLong,
- kExprI32x4Splat, MulHalf::kHigh);
+ RunExtMulTest<int32_t, int64_t>(execution_tier, kExprI64x2ExtMulHighI32x4S,
+ MultiplyLong, kExprI32x4Splat,
+ MulHalf::kHigh);
}
WASM_SIMD_TEST(I64x2ExtMulLowI32x4U) {
- RunExtMulTest<uint32_t, uint64_t>(execution_tier, lower_simd,
- kExprI64x2ExtMulLowI32x4U, MultiplyLong,
- kExprI32x4Splat, MulHalf::kLow);
+ RunExtMulTest<uint32_t, uint64_t>(execution_tier, kExprI64x2ExtMulLowI32x4U,
+ MultiplyLong, kExprI32x4Splat,
+ MulHalf::kLow);
}
WASM_SIMD_TEST(I64x2ExtMulHighI32x4U) {
- RunExtMulTest<uint32_t, uint64_t>(execution_tier, lower_simd,
- kExprI64x2ExtMulHighI32x4U, MultiplyLong,
- kExprI32x4Splat, MulHalf::kHigh);
+ RunExtMulTest<uint32_t, uint64_t>(execution_tier, kExprI64x2ExtMulHighI32x4U,
+ MultiplyLong, kExprI32x4Splat,
+ MulHalf::kHigh);
}
WASM_SIMD_TEST(I32x4DotI16x8S) {
- WasmRunner<int32_t, int16_t, int16_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int16_t, int16_t> r(execution_tier);
int32_t* g = r.builder().template AddGlobal<int32_t>(kWasmS128);
byte value1 = 0, value2 = 1;
byte temp1 = r.AllocateLocal(kWasmS128);
@@ -1687,31 +1649,27 @@ WASM_SIMD_TEST(I32x4DotI16x8S) {
}
WASM_SIMD_TEST(I16x8Shl) {
- RunI16x8ShiftOpTest(execution_tier, lower_simd, kExprI16x8Shl,
- LogicalShiftLeft);
+ RunI16x8ShiftOpTest(execution_tier, kExprI16x8Shl, LogicalShiftLeft);
}
WASM_SIMD_TEST(I16x8ShrS) {
- RunI16x8ShiftOpTest(execution_tier, lower_simd, kExprI16x8ShrS,
- ArithmeticShiftRight);
+ RunI16x8ShiftOpTest(execution_tier, kExprI16x8ShrS, ArithmeticShiftRight);
}
WASM_SIMD_TEST(I16x8ShrU) {
- RunI16x8ShiftOpTest(execution_tier, lower_simd, kExprI16x8ShrU,
- LogicalShiftRight);
+ RunI16x8ShiftOpTest(execution_tier, kExprI16x8ShrU, LogicalShiftRight);
}
WASM_SIMD_TEST(I8x16Neg) {
- RunI8x16UnOpTest(execution_tier, lower_simd, kExprI8x16Neg,
- base::NegateWithWraparound);
+ RunI8x16UnOpTest(execution_tier, kExprI8x16Neg, base::NegateWithWraparound);
}
WASM_SIMD_TEST(I8x16Abs) {
- RunI8x16UnOpTest(execution_tier, lower_simd, kExprI8x16Abs, Abs);
+ RunI8x16UnOpTest(execution_tier, kExprI8x16Abs, Abs);
}
WASM_SIMD_TEST(I8x16Popcnt) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Global to hold output.
int8_t* g = r.builder().AddGlobal<int8_t>(kWasmS128);
// Build fn to splat test value, perform unop, and write the result.
@@ -1733,7 +1691,7 @@ WASM_SIMD_TEST(I8x16Popcnt) {
// Tests both signed and unsigned conversion from I16x8 (packing).
WASM_SIMD_TEST(I8x16ConvertI16x8) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Create output vectors to hold signed and unsigned results.
int8_t* g_s = r.builder().AddGlobal<int8_t>(kWasmS128);
uint8_t* g_u = r.builder().AddGlobal<uint8_t>(kWasmS128);
@@ -1761,114 +1719,102 @@ WASM_SIMD_TEST(I8x16ConvertI16x8) {
}
WASM_SIMD_TEST(I8x16Add) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16Add,
- base::AddWithWraparound);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16Add, base::AddWithWraparound);
}
WASM_SIMD_TEST(I8x16AddSatS) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16AddSatS,
- SaturateAdd<int8_t>);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16AddSatS, SaturateAdd<int8_t>);
}
WASM_SIMD_TEST(I8x16Sub) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16Sub,
- base::SubWithWraparound);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16Sub, base::SubWithWraparound);
}
WASM_SIMD_TEST(I8x16SubSatS) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16SubSatS,
- SaturateSub<int8_t>);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16SubSatS, SaturateSub<int8_t>);
}
WASM_SIMD_TEST(I8x16MinS) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16MinS, Minimum);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16MinS, Minimum);
}
WASM_SIMD_TEST(I8x16MaxS) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16MaxS, Maximum);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16MaxS, Maximum);
}
WASM_SIMD_TEST(I8x16AddSatU) {
- RunI8x16BinOpTest<uint8_t>(execution_tier, lower_simd, kExprI8x16AddSatU,
+ RunI8x16BinOpTest<uint8_t>(execution_tier, kExprI8x16AddSatU,
SaturateAdd<uint8_t>);
}
WASM_SIMD_TEST(I8x16SubSatU) {
- RunI8x16BinOpTest<uint8_t>(execution_tier, lower_simd, kExprI8x16SubSatU,
+ RunI8x16BinOpTest<uint8_t>(execution_tier, kExprI8x16SubSatU,
SaturateSub<uint8_t>);
}
WASM_SIMD_TEST(I8x16MinU) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16MinU,
- UnsignedMinimum);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16MinU, UnsignedMinimum);
}
WASM_SIMD_TEST(I8x16MaxU) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16MaxU,
- UnsignedMaximum);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16MaxU, UnsignedMaximum);
}
WASM_SIMD_TEST(I8x16Eq) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16Eq, Equal);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16Eq, Equal);
}
WASM_SIMD_TEST(I8x16Ne) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16Ne, NotEqual);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16Ne, NotEqual);
}
WASM_SIMD_TEST(I8x16GtS) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16GtS, Greater);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16GtS, Greater);
}
WASM_SIMD_TEST(I8x16GeS) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16GeS, GreaterEqual);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16GeS, GreaterEqual);
}
WASM_SIMD_TEST(I8x16LtS) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16LtS, Less);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16LtS, Less);
}
WASM_SIMD_TEST(I8x16LeS) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16LeS, LessEqual);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16LeS, LessEqual);
}
WASM_SIMD_TEST(I8x16GtU) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16GtU, UnsignedGreater);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16GtU, UnsignedGreater);
}
WASM_SIMD_TEST(I8x16GeU) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16GeU,
- UnsignedGreaterEqual);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16GeU, UnsignedGreaterEqual);
}
WASM_SIMD_TEST(I8x16LtU) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16LtU, UnsignedLess);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16LtU, UnsignedLess);
}
WASM_SIMD_TEST(I8x16LeU) {
- RunI8x16BinOpTest(execution_tier, lower_simd, kExprI8x16LeU,
- UnsignedLessEqual);
+ RunI8x16BinOpTest(execution_tier, kExprI8x16LeU, UnsignedLessEqual);
}
WASM_SIMD_TEST(I8x16RoundingAverageU) {
- RunI8x16BinOpTest<uint8_t>(execution_tier, lower_simd,
- kExprI8x16RoundingAverageU,
+ RunI8x16BinOpTest<uint8_t>(execution_tier, kExprI8x16RoundingAverageU,
RoundingAverageUnsigned);
}
WASM_SIMD_TEST(I8x16Shl) {
- RunI8x16ShiftOpTest(execution_tier, lower_simd, kExprI8x16Shl,
- LogicalShiftLeft);
+ RunI8x16ShiftOpTest(execution_tier, kExprI8x16Shl, LogicalShiftLeft);
}
WASM_SIMD_TEST(I8x16ShrS) {
- RunI8x16ShiftOpTest(execution_tier, lower_simd, kExprI8x16ShrS,
- ArithmeticShiftRight);
+ RunI8x16ShiftOpTest(execution_tier, kExprI8x16ShrS, ArithmeticShiftRight);
}
WASM_SIMD_TEST(I8x16ShrU) {
- RunI8x16ShiftOpTest(execution_tier, lower_simd, kExprI8x16ShrU,
- LogicalShiftRight);
+ RunI8x16ShiftOpTest(execution_tier, kExprI8x16ShrU, LogicalShiftRight);
}
// Test Select by making a mask where the 0th and 3rd lanes are true and the
@@ -1876,7 +1822,7 @@ WASM_SIMD_TEST(I8x16ShrU) {
// vector.
#define WASM_SIMD_SELECT_TEST(format) \
WASM_SIMD_TEST(S##format##Select) { \
- WasmRunner<int32_t, int32_t, int32_t> r(execution_tier, lower_simd); \
+ WasmRunner<int32_t, int32_t, int32_t> r(execution_tier); \
byte val1 = 0; \
byte val2 = 1; \
byte src1 = r.AllocateLocal(kWasmS128); \
@@ -1915,8 +1861,7 @@ WASM_SIMD_SELECT_TEST(8x16)
// rest 0. The mask is not the result of a comparison op.
#define WASM_SIMD_NON_CANONICAL_SELECT_TEST(format) \
WASM_SIMD_TEST(S##format##NonCanonicalSelect) { \
- WasmRunner<int32_t, int32_t, int32_t, int32_t> r(execution_tier, \
- lower_simd); \
+ WasmRunner<int32_t, int32_t, int32_t, int32_t> r(execution_tier); \
byte val1 = 0; \
byte val2 = 1; \
byte combined = 2; \
@@ -1952,9 +1897,9 @@ WASM_SIMD_NON_CANONICAL_SELECT_TEST(8x16)
// Test binary ops with two lane test patterns, all lanes distinct.
template <typename T>
void RunBinaryLaneOpTest(
- TestExecutionTier execution_tier, LowerSimd lower_simd, WasmOpcode simd_op,
+ TestExecutionTier execution_tier, WasmOpcode simd_op,
const std::array<T, kSimd128Size / sizeof(T)>& expected) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up two test patterns as globals, e.g. [0, 1, 2, 3] and [4, 5, 6, 7].
T* src0 = r.builder().AddGlobal<T>(kWasmS128);
T* src1 = r.builder().AddGlobal<T>(kWasmS128);
@@ -1983,28 +1928,25 @@ void RunBinaryLaneOpTest(
}
// Test shuffle ops.
-void RunShuffleOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode simd_op,
+void RunShuffleOpTest(TestExecutionTier execution_tier, WasmOpcode simd_op,
const std::array<int8_t, kSimd128Size>& shuffle) {
// Test the original shuffle.
- RunBinaryLaneOpTest<int8_t>(execution_tier, lower_simd, simd_op, shuffle);
+ RunBinaryLaneOpTest<int8_t>(execution_tier, simd_op, shuffle);
// Test a non-canonical (inputs reversed) version of the shuffle.
std::array<int8_t, kSimd128Size> other_shuffle(shuffle);
for (size_t i = 0; i < shuffle.size(); ++i) other_shuffle[i] ^= kSimd128Size;
- RunBinaryLaneOpTest<int8_t>(execution_tier, lower_simd, simd_op,
- other_shuffle);
+ RunBinaryLaneOpTest<int8_t>(execution_tier, simd_op, other_shuffle);
// Test the swizzle (one-operand) version of the shuffle.
std::array<int8_t, kSimd128Size> swizzle(shuffle);
for (size_t i = 0; i < shuffle.size(); ++i) swizzle[i] &= (kSimd128Size - 1);
- RunBinaryLaneOpTest<int8_t>(execution_tier, lower_simd, simd_op, swizzle);
+ RunBinaryLaneOpTest<int8_t>(execution_tier, simd_op, swizzle);
// Test the non-canonical swizzle (one-operand) version of the shuffle.
std::array<int8_t, kSimd128Size> other_swizzle(shuffle);
for (size_t i = 0; i < shuffle.size(); ++i) other_swizzle[i] |= kSimd128Size;
- RunBinaryLaneOpTest<int8_t>(execution_tier, lower_simd, simd_op,
- other_swizzle);
+ RunBinaryLaneOpTest<int8_t>(execution_tier, simd_op, other_swizzle);
}
#define SHUFFLE_LIST(V) \
@@ -2113,12 +2055,11 @@ ShuffleMap test_shuffles = {
{{0, 16, 0, 16, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}}},
};
-#define SHUFFLE_TEST(Name) \
- WASM_SIMD_TEST(Name) { \
- ShuffleMap::const_iterator it = test_shuffles.find(k##Name); \
- DCHECK_NE(it, test_shuffles.end()); \
- RunShuffleOpTest(execution_tier, lower_simd, kExprI8x16Shuffle, \
- it->second); \
+#define SHUFFLE_TEST(Name) \
+ WASM_SIMD_TEST(Name) { \
+ ShuffleMap::const_iterator it = test_shuffles.find(k##Name); \
+ DCHECK_NE(it, test_shuffles.end()); \
+ RunShuffleOpTest(execution_tier, kExprI8x16Shuffle, it->second); \
}
SHUFFLE_LIST(SHUFFLE_TEST)
#undef SHUFFLE_TEST
@@ -2130,7 +2071,7 @@ WASM_SIMD_TEST(S8x16Blend) {
for (int bias = 1; bias < kSimd128Size; bias++) {
for (int i = 0; i < bias; i++) expected[i] = i;
for (int i = bias; i < kSimd128Size; i++) expected[i] = i + kSimd128Size;
- RunShuffleOpTest(execution_tier, lower_simd, kExprI8x16Shuffle, expected);
+ RunShuffleOpTest(execution_tier, kExprI8x16Shuffle, expected);
}
}
@@ -2148,7 +2089,7 @@ WASM_SIMD_TEST(S8x16Concat) {
for (int j = 0; j < n; ++j) {
expected[i++] = j + kSimd128Size;
}
- RunShuffleOpTest(execution_tier, lower_simd, kExprI8x16Shuffle, expected);
+ RunShuffleOpTest(execution_tier, kExprI8x16Shuffle, expected);
}
}
@@ -2170,7 +2111,7 @@ WASM_SIMD_TEST(ShuffleShufps) {
expected[8 + i] = index2 + i;
expected[12 + i] = index3 + i;
}
- RunShuffleOpTest(execution_tier, lower_simd, kExprI8x16Shuffle, expected);
+ RunShuffleOpTest(execution_tier, kExprI8x16Shuffle, expected);
}
}
@@ -2203,7 +2144,7 @@ WASM_SIMD_TEST(I8x16Swizzle) {
// [0-15] and [16-31]. Using [0-15] as the indices will not sufficiently test
// swizzle since the expected result is a no-op, using [16-31] will result in
// all 0s.
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
static const int kElems = kSimd128Size / sizeof(uint8_t);
uint8_t* dst = r.builder().AddGlobal<uint8_t>(kWasmS128);
uint8_t* src0 = r.builder().AddGlobal<uint8_t>(kWasmS128);
@@ -2230,7 +2171,7 @@ WASM_SIMD_TEST(I8x16Swizzle) {
{
// We have an optimization for constant indices, test this case.
for (SwizzleTestArgs si : swizzle_test_vector) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
uint8_t* dst = r.builder().AddGlobal<uint8_t>(kWasmS128);
uint8_t* src0 = r.builder().AddGlobal<uint8_t>(kWasmS128);
BUILD(r,
@@ -2275,7 +2216,7 @@ WASM_SIMD_TEST(I8x16ShuffleFuzz) {
for (int i = 0; i < kTests; ++i) {
auto shuffle = Combine(GetRandomTestShuffle(rng), GetRandomTestShuffle(rng),
GetRandomTestShuffle(rng));
- RunShuffleOpTest(execution_tier, lower_simd, kExprI8x16Shuffle, shuffle);
+ RunShuffleOpTest(execution_tier, kExprI8x16Shuffle, shuffle);
}
}
@@ -2306,10 +2247,10 @@ void BuildShuffle(const std::vector<Shuffle>& shuffles,
for (size_t j = 0; j < arraysize(epilog); ++j) buffer->push_back(epilog[j]);
}
-void RunWasmCode(TestExecutionTier execution_tier, LowerSimd lower_simd,
+void RunWasmCode(TestExecutionTier execution_tier,
const std::vector<byte>& code,
std::array<int8_t, kSimd128Size>* result) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
// Set up two test patterns as globals, e.g. [0, 1, 2, 3] and [4, 5, 6, 7].
int8_t* src0 = r.builder().AddGlobal<int8_t>(kWasmS128);
int8_t* src1 = r.builder().AddGlobal<int8_t>(kWasmS128);
@@ -2348,11 +2289,10 @@ WASM_SIMD_TEST(S8x16MultiShuffleFuzz) {
// Run the code using the interpreter to get the expected result.
std::array<int8_t, kSimd128Size> expected;
- RunWasmCode(TestExecutionTier::kInterpreter, kNoLowerSimd, buffer,
- &expected);
+ RunWasmCode(TestExecutionTier::kInterpreter, buffer, &expected);
// Run the SIMD or scalar lowered compiled code and compare results.
std::array<int8_t, kSimd128Size> result;
- RunWasmCode(execution_tier, lower_simd, buffer, &result);
+ RunWasmCode(execution_tier, buffer, &result);
for (size_t i = 0; i < kSimd128Size; ++i) {
CHECK_EQ(result[i], expected[i]);
}
@@ -2364,8 +2304,8 @@ WASM_SIMD_TEST(S8x16MultiShuffleFuzz) {
// test inputs. Test inputs with all true, all false, one true, and one false.
#define WASM_SIMD_BOOL_REDUCTION_TEST(format, lanes, int_type) \
WASM_SIMD_TEST(ReductionTest##lanes) { \
- WasmRunner<int32_t> r(execution_tier, lower_simd); \
- if (lanes == 2 && lower_simd == kLowerSimd) return; \
+ WasmRunner<int32_t> r(execution_tier); \
+ if (lanes == 2) return; \
byte zero = r.AllocateLocal(kWasmS128); \
byte one_one = r.AllocateLocal(kWasmS128); \
byte reduced = r.AllocateLocal(kWasmI32); \
@@ -2439,7 +2379,7 @@ WASM_SIMD_BOOL_REDUCTION_TEST(16x8, 8, WASM_I32V)
WASM_SIMD_BOOL_REDUCTION_TEST(8x16, 16, WASM_I32V)
WASM_SIMD_TEST(SimdI32x4ExtractWithF32x4) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
BUILD(r, WASM_IF_ELSE_I(
WASM_I32_EQ(WASM_SIMD_I32x4_EXTRACT_LANE(
0, WASM_SIMD_F32x4_SPLAT(WASM_F32(30.5))),
@@ -2449,7 +2389,7 @@ WASM_SIMD_TEST(SimdI32x4ExtractWithF32x4) {
}
WASM_SIMD_TEST(SimdF32x4ExtractWithI32x4) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
BUILD(r,
WASM_IF_ELSE_I(WASM_F32_EQ(WASM_SIMD_F32x4_EXTRACT_LANE(
0, WASM_SIMD_I32x4_SPLAT(WASM_I32V(15))),
@@ -2459,7 +2399,7 @@ WASM_SIMD_TEST(SimdF32x4ExtractWithI32x4) {
}
WASM_SIMD_TEST(SimdF32x4ExtractLane) {
- WasmRunner<float> r(execution_tier, lower_simd);
+ WasmRunner<float> r(execution_tier);
r.AllocateLocal(kWasmF32);
r.AllocateLocal(kWasmS128);
BUILD(r,
@@ -2475,7 +2415,7 @@ WASM_SIMD_TEST(SimdF32x4AddWithI32x4) {
// representable as a float.
const int kOne = 0x3F800000;
const int kTwo = 0x40000000;
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
BUILD(r,
WASM_IF_ELSE_I(
WASM_F32_EQ(
@@ -2490,7 +2430,7 @@ WASM_SIMD_TEST(SimdF32x4AddWithI32x4) {
}
WASM_SIMD_TEST(SimdI32x4AddWithF32x4) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
BUILD(r,
WASM_IF_ELSE_I(
WASM_I32_EQ(
@@ -2505,7 +2445,7 @@ WASM_SIMD_TEST(SimdI32x4AddWithF32x4) {
}
WASM_SIMD_TEST(SimdI32x4Local) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(0, WASM_SIMD_I32x4_SPLAT(WASM_I32V(31))),
@@ -2514,7 +2454,7 @@ WASM_SIMD_TEST(SimdI32x4Local) {
}
WASM_SIMD_TEST(SimdI32x4SplatFromExtract) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
r.AllocateLocal(kWasmI32);
r.AllocateLocal(kWasmS128);
BUILD(r,
@@ -2526,7 +2466,7 @@ WASM_SIMD_TEST(SimdI32x4SplatFromExtract) {
}
WASM_SIMD_TEST(SimdI32x4For) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
r.AllocateLocal(kWasmI32);
r.AllocateLocal(kWasmS128);
BUILD(r,
@@ -2560,7 +2500,7 @@ WASM_SIMD_TEST(SimdI32x4For) {
}
WASM_SIMD_TEST(SimdF32x4For) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
r.AllocateLocal(kWasmI32);
r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(1, WASM_SIMD_F32x4_SPLAT(WASM_F32(21.25))),
@@ -2600,7 +2540,7 @@ const T GetScalar(T* v, int lane) {
}
WASM_SIMD_TEST(SimdI32x4GetGlobal) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Pad the globals with a few unused slots to get a non-zero offset.
r.builder().AddGlobal<int32_t>(kWasmI32); // purposefully unused
r.builder().AddGlobal<int32_t>(kWasmI32); // purposefully unused
@@ -2628,7 +2568,7 @@ WASM_SIMD_TEST(SimdI32x4GetGlobal) {
}
WASM_SIMD_TEST(SimdI32x4SetGlobal) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Pad the globals with a few unused slots to get a non-zero offset.
r.builder().AddGlobal<int32_t>(kWasmI32); // purposefully unused
r.builder().AddGlobal<int32_t>(kWasmI32); // purposefully unused
@@ -2651,7 +2591,7 @@ WASM_SIMD_TEST(SimdI32x4SetGlobal) {
}
WASM_SIMD_TEST(SimdF32x4GetGlobal) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
float* global = r.builder().AddGlobal<float>(kWasmS128);
SetVectorByLanes<float>(global, {{0.0, 1.5, 2.25, 3.5}});
r.AllocateLocal(kWasmI32);
@@ -2674,7 +2614,7 @@ WASM_SIMD_TEST(SimdF32x4GetGlobal) {
}
WASM_SIMD_TEST(SimdF32x4SetGlobal) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
float* global = r.builder().AddGlobal<float>(kWasmS128);
BUILD(r, WASM_GLOBAL_SET(0, WASM_SIMD_F32x4_SPLAT(WASM_F32(13.5))),
WASM_GLOBAL_SET(0, WASM_SIMD_F32x4_REPLACE_LANE(1, WASM_GLOBAL_GET(0),
@@ -2692,7 +2632,7 @@ WASM_SIMD_TEST(SimdF32x4SetGlobal) {
}
WASM_SIMD_TEST(SimdLoadStoreLoad) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
int32_t* memory =
r.builder().AddMemoryElems<int32_t>(kWasmPageSize / sizeof(int32_t));
// Load memory, store it, then reload it and extract the first lane. Use a
@@ -2708,7 +2648,7 @@ WASM_SIMD_TEST(SimdLoadStoreLoad) {
{
// OOB tests for loads.
- WasmRunner<int32_t, uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, uint32_t> r(execution_tier);
r.builder().AddMemoryElems<int32_t>(kWasmPageSize / sizeof(int32_t));
BUILD(r, WASM_SIMD_I32x4_EXTRACT_LANE(
0, WASM_SIMD_LOAD_MEM(WASM_LOCAL_GET(0))));
@@ -2721,7 +2661,7 @@ WASM_SIMD_TEST(SimdLoadStoreLoad) {
{
// OOB tests for stores.
- WasmRunner<int32_t, uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, uint32_t> r(execution_tier);
r.builder().AddMemoryElems<int32_t>(kWasmPageSize / sizeof(int32_t));
BUILD(r,
WASM_SIMD_STORE_MEM(WASM_LOCAL_GET(0), WASM_SIMD_LOAD_MEM(WASM_ZERO)),
@@ -2735,7 +2675,7 @@ WASM_SIMD_TEST(SimdLoadStoreLoad) {
}
WASM_SIMD_TEST(SimdLoadStoreLoadMemargOffset) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
int32_t* memory =
r.builder().AddMemoryElems<int32_t>(kWasmPageSize / sizeof(int32_t));
constexpr byte offset_1 = 4;
@@ -2760,7 +2700,7 @@ WASM_SIMD_TEST(SimdLoadStoreLoadMemargOffset) {
// OOB tests for loads with offsets.
for (uint32_t offset = kWasmPageSize - (kSimd128Size - 1);
offset < kWasmPageSize; ++offset) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
r.builder().AddMemoryElems<int32_t>(kWasmPageSize / sizeof(int32_t));
BUILD(r, WASM_SIMD_I32x4_EXTRACT_LANE(
0, WASM_SIMD_LOAD_MEM_OFFSET(U32V_3(offset), WASM_ZERO)));
@@ -2772,7 +2712,7 @@ WASM_SIMD_TEST(SimdLoadStoreLoadMemargOffset) {
// OOB tests for stores with offsets
for (uint32_t offset = kWasmPageSize - (kSimd128Size - 1);
offset < kWasmPageSize; ++offset) {
- WasmRunner<int32_t, uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, uint32_t> r(execution_tier);
r.builder().AddMemoryElems<int32_t>(kWasmPageSize / sizeof(int32_t));
BUILD(r,
WASM_SIMD_STORE_MEM_OFFSET(U32V_3(offset), WASM_ZERO,
@@ -2788,7 +2728,7 @@ WASM_SIMD_TEST(SimdLoadStoreLoadMemargOffset) {
WASM_SIMD_TEST(S128Load8SplatOffset) {
// This offset is [82, 22] when encoded, which contains valid opcodes.
constexpr int offset = 4354;
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
int8_t* memory = r.builder().AddMemoryElems<int8_t>(kWasmPageSize);
int8_t* global = r.builder().AddGlobal<int8_t>(kWasmS128);
BUILD(r,
@@ -2807,11 +2747,10 @@ WASM_SIMD_TEST(S128Load8SplatOffset) {
}
template <typename T>
-void RunLoadSplatTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode op) {
+void RunLoadSplatTest(TestExecutionTier execution_tier, WasmOpcode op) {
constexpr int lanes = 16 / sizeof(T);
constexpr int mem_index = 16; // Load from mem index 16 (bytes).
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
T* memory = r.builder().AddMemoryElems<T>(kWasmPageSize / sizeof(T));
T* global = r.builder().AddGlobal<T>(kWasmS128);
BUILD(r, WASM_GLOBAL_SET(0, WASM_SIMD_LOAD_OP(op, WASM_I32V(mem_index))),
@@ -2828,7 +2767,7 @@ void RunLoadSplatTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// Test for OOB.
{
- WasmRunner<int32_t, uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, uint32_t> r(execution_tier);
r.builder().AddMemoryElems<T>(kWasmPageSize / sizeof(T));
r.builder().AddGlobal<T>(kWasmS128);
@@ -2844,24 +2783,23 @@ void RunLoadSplatTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
WASM_SIMD_TEST(S128Load8Splat) {
- RunLoadSplatTest<int8_t>(execution_tier, lower_simd, kExprS128Load8Splat);
+ RunLoadSplatTest<int8_t>(execution_tier, kExprS128Load8Splat);
}
WASM_SIMD_TEST(S128Load16Splat) {
- RunLoadSplatTest<int16_t>(execution_tier, lower_simd, kExprS128Load16Splat);
+ RunLoadSplatTest<int16_t>(execution_tier, kExprS128Load16Splat);
}
WASM_SIMD_TEST(S128Load32Splat) {
- RunLoadSplatTest<int32_t>(execution_tier, lower_simd, kExprS128Load32Splat);
+ RunLoadSplatTest<int32_t>(execution_tier, kExprS128Load32Splat);
}
WASM_SIMD_TEST(S128Load64Splat) {
- RunLoadSplatTest<int64_t>(execution_tier, lower_simd, kExprS128Load64Splat);
+ RunLoadSplatTest<int64_t>(execution_tier, kExprS128Load64Splat);
}
template <typename S, typename T>
-void RunLoadExtendTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode op) {
+void RunLoadExtendTest(TestExecutionTier execution_tier, WasmOpcode op) {
static_assert(sizeof(S) < sizeof(T),
"load extend should go from smaller to larger type");
constexpr int lanes_s = 16 / sizeof(S);
@@ -2869,7 +2807,7 @@ void RunLoadExtendTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
constexpr int mem_index = 16; // Load from mem index 16 (bytes).
// Load extends always load 64 bits, so alignment values can be from 0 to 3.
for (byte alignment = 0; alignment <= 3; alignment++) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
S* memory = r.builder().AddMemoryElems<S>(kWasmPageSize / sizeof(S));
T* global = r.builder().AddGlobal<T>(kWasmS128);
BUILD(r,
@@ -2891,7 +2829,7 @@ void RunLoadExtendTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// Test for offset.
{
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
S* memory = r.builder().AddMemoryElems<S>(kWasmPageSize / sizeof(S));
T* global = r.builder().AddGlobal<T>(kWasmS128);
constexpr byte offset = sizeof(S);
@@ -2919,7 +2857,7 @@ void RunLoadExtendTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// Test for OOB.
{
- WasmRunner<int32_t, uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, uint32_t> r(execution_tier);
r.builder().AddMemoryElems<S>(kWasmPageSize / sizeof(S));
r.builder().AddGlobal<T>(kWasmS128);
@@ -2935,37 +2873,30 @@ void RunLoadExtendTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
WASM_SIMD_TEST(S128Load8x8U) {
- RunLoadExtendTest<uint8_t, uint16_t>(execution_tier, lower_simd,
- kExprS128Load8x8U);
+ RunLoadExtendTest<uint8_t, uint16_t>(execution_tier, kExprS128Load8x8U);
}
WASM_SIMD_TEST(S128Load8x8S) {
- RunLoadExtendTest<int8_t, int16_t>(execution_tier, lower_simd,
- kExprS128Load8x8S);
+ RunLoadExtendTest<int8_t, int16_t>(execution_tier, kExprS128Load8x8S);
}
WASM_SIMD_TEST(S128Load16x4U) {
- RunLoadExtendTest<uint16_t, uint32_t>(execution_tier, lower_simd,
- kExprS128Load16x4U);
+ RunLoadExtendTest<uint16_t, uint32_t>(execution_tier, kExprS128Load16x4U);
}
WASM_SIMD_TEST(S128Load16x4S) {
- RunLoadExtendTest<int16_t, int32_t>(execution_tier, lower_simd,
- kExprS128Load16x4S);
+ RunLoadExtendTest<int16_t, int32_t>(execution_tier, kExprS128Load16x4S);
}
WASM_SIMD_TEST(S128Load32x2U) {
- RunLoadExtendTest<uint32_t, uint64_t>(execution_tier, lower_simd,
- kExprS128Load32x2U);
+ RunLoadExtendTest<uint32_t, uint64_t>(execution_tier, kExprS128Load32x2U);
}
WASM_SIMD_TEST(S128Load32x2S) {
- RunLoadExtendTest<int32_t, int64_t>(execution_tier, lower_simd,
- kExprS128Load32x2S);
+ RunLoadExtendTest<int32_t, int64_t>(execution_tier, kExprS128Load32x2S);
}
template <typename S>
-void RunLoadZeroTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode op) {
+void RunLoadZeroTest(TestExecutionTier execution_tier, WasmOpcode op) {
constexpr int lanes_s = kSimd128Size / sizeof(S);
constexpr int mem_index = 16; // Load from mem index 16 (bytes).
constexpr S sentinel = S{-1};
@@ -2983,7 +2914,7 @@ void RunLoadZeroTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// Check all supported alignments.
constexpr int max_alignment = base::bits::CountTrailingZeros(sizeof(S));
for (byte alignment = 0; alignment <= max_alignment; alignment++) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
std::tie(memory, global) = initialize_builder(&r);
BUILD(r, WASM_GLOBAL_SET(0, WASM_SIMD_LOAD_OP(op, WASM_I32V(mem_index))),
@@ -3000,7 +2931,7 @@ void RunLoadZeroTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
{
// Use memarg to specific offset.
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
std::tie(memory, global) = initialize_builder(&r);
BUILD(
@@ -3019,7 +2950,7 @@ void RunLoadZeroTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// Test for OOB.
{
- WasmRunner<int32_t, uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, uint32_t> r(execution_tier);
r.builder().AddMemoryElems<S>(kWasmPageSize / sizeof(S));
r.builder().AddGlobal<S>(kWasmS128);
@@ -3035,16 +2966,16 @@ void RunLoadZeroTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
WASM_SIMD_TEST(S128Load32Zero) {
- RunLoadZeroTest<int32_t>(execution_tier, lower_simd, kExprS128Load32Zero);
+ RunLoadZeroTest<int32_t>(execution_tier, kExprS128Load32Zero);
}
WASM_SIMD_TEST(S128Load64Zero) {
- RunLoadZeroTest<int64_t>(execution_tier, lower_simd, kExprS128Load64Zero);
+ RunLoadZeroTest<int64_t>(execution_tier, kExprS128Load64Zero);
}
template <typename T>
-void RunLoadLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode load_op, WasmOpcode splat_op) {
+void RunLoadLaneTest(TestExecutionTier execution_tier, WasmOpcode load_op,
+ WasmOpcode splat_op) {
WasmOpcode const_op =
splat_op == kExprI64x2Splat ? kExprI64Const : kExprI32Const;
@@ -3077,7 +3008,7 @@ void RunLoadLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
};
for (int lane_index = 0; lane_index < lanes_s; ++lane_index) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
build_fn(r, mem_index, lane_index, /*alignment=*/0, /*offset=*/0);
r.Call();
check_results(global, lane_index);
@@ -3086,7 +3017,7 @@ void RunLoadLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// Check all possible alignments.
constexpr int max_alignment = base::bits::CountTrailingZeros(sizeof(T));
for (byte alignment = 0; alignment <= max_alignment; ++alignment) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
build_fn(r, mem_index, /*lane=*/0, alignment, /*offset=*/0);
r.Call();
check_results(global);
@@ -3095,7 +3026,7 @@ void RunLoadLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
{
// Use memarg to specify offset.
int lane_index = 0;
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
build_fn(r, /*mem_index=*/0, /*lane=*/0, /*alignment=*/0,
/*offset=*/mem_index);
r.Call();
@@ -3104,7 +3035,7 @@ void RunLoadLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// Test for OOB.
{
- WasmRunner<int32_t, uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, uint32_t> r(execution_tier);
r.builder().AddMemoryElems<T>(kWasmPageSize / sizeof(T));
r.builder().AddGlobal<T>(kWasmS128);
@@ -3121,28 +3052,27 @@ void RunLoadLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
WASM_SIMD_TEST(S128Load8Lane) {
- RunLoadLaneTest<int8_t>(execution_tier, lower_simd, kExprS128Load8Lane,
- kExprI8x16Splat);
+ RunLoadLaneTest<int8_t>(execution_tier, kExprS128Load8Lane, kExprI8x16Splat);
}
WASM_SIMD_TEST(S128Load16Lane) {
- RunLoadLaneTest<int16_t>(execution_tier, lower_simd, kExprS128Load16Lane,
+ RunLoadLaneTest<int16_t>(execution_tier, kExprS128Load16Lane,
kExprI16x8Splat);
}
WASM_SIMD_TEST(S128Load32Lane) {
- RunLoadLaneTest<int32_t>(execution_tier, lower_simd, kExprS128Load32Lane,
+ RunLoadLaneTest<int32_t>(execution_tier, kExprS128Load32Lane,
kExprI32x4Splat);
}
WASM_SIMD_TEST(S128Load64Lane) {
- RunLoadLaneTest<int64_t>(execution_tier, lower_simd, kExprS128Load64Lane,
+ RunLoadLaneTest<int64_t>(execution_tier, kExprS128Load64Lane,
kExprI64x2Splat);
}
template <typename T>
-void RunStoreLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode store_op, WasmOpcode splat_op) {
+void RunStoreLaneTest(TestExecutionTier execution_tier, WasmOpcode store_op,
+ WasmOpcode splat_op) {
constexpr int lanes = kSimd128Size / sizeof(T);
constexpr int mem_index = 16; // Store to mem index 16 (bytes).
constexpr int splat_value = 33;
@@ -3174,7 +3104,7 @@ void RunStoreLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
};
for (int lane_index = 0; lane_index < lanes; lane_index++) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
build_fn(r, mem_index, lane_index, ZERO_ALIGNMENT, ZERO_OFFSET);
r.Call();
check_results(r, memory);
@@ -3183,7 +3113,7 @@ void RunStoreLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// Check all possible alignments.
constexpr int max_alignment = base::bits::CountTrailingZeros(sizeof(T));
for (byte alignment = 0; alignment <= max_alignment; ++alignment) {
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
build_fn(r, mem_index, /*lane_index=*/0, alignment, ZERO_OFFSET);
r.Call();
check_results(r, memory);
@@ -3191,7 +3121,7 @@ void RunStoreLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
{
// Use memarg for offset.
- WasmRunner<int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t> r(execution_tier);
build_fn(r, /*mem_index=*/0, /*lane_index=*/0, ZERO_ALIGNMENT, mem_index);
r.Call();
check_results(r, memory);
@@ -3199,7 +3129,7 @@ void RunStoreLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
// OOB stores
{
- WasmRunner<int32_t, uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, uint32_t> r(execution_tier);
r.builder().AddMemoryElems<T>(kWasmPageSize / sizeof(T));
BUILD(r, WASM_LOCAL_GET(0), const_op, splat_value, WASM_SIMD_OP(splat_op),
@@ -3214,29 +3144,29 @@ void RunStoreLaneTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
WASM_SIMD_TEST(S128Store8Lane) {
- RunStoreLaneTest<int8_t>(execution_tier, lower_simd, kExprS128Store8Lane,
+ RunStoreLaneTest<int8_t>(execution_tier, kExprS128Store8Lane,
kExprI8x16Splat);
}
WASM_SIMD_TEST(S128Store16Lane) {
- RunStoreLaneTest<int16_t>(execution_tier, lower_simd, kExprS128Store16Lane,
+ RunStoreLaneTest<int16_t>(execution_tier, kExprS128Store16Lane,
kExprI16x8Splat);
}
WASM_SIMD_TEST(S128Store32Lane) {
- RunStoreLaneTest<int32_t>(execution_tier, lower_simd, kExprS128Store32Lane,
+ RunStoreLaneTest<int32_t>(execution_tier, kExprS128Store32Lane,
kExprI32x4Splat);
}
WASM_SIMD_TEST(S128Store64Lane) {
- RunStoreLaneTest<int64_t>(execution_tier, lower_simd, kExprS128Store64Lane,
+ RunStoreLaneTest<int64_t>(execution_tier, kExprS128Store64Lane,
kExprI64x2Splat);
}
#define WASM_SIMD_ANYTRUE_TEST(format, lanes, max, param_type) \
WASM_SIMD_TEST(S##format##AnyTrue) { \
- WasmRunner<int32_t, param_type> r(execution_tier, lower_simd); \
- if (lanes == 2 && lower_simd == kLowerSimd) return; \
+ WasmRunner<int32_t, param_type> r(execution_tier); \
+ if (lanes == 2) return; \
byte simd = r.AllocateLocal(kWasmS128); \
BUILD( \
r, \
@@ -3254,7 +3184,7 @@ WASM_SIMD_ANYTRUE_TEST(8x16, 16, 0xff, int32_t)
// This is specifically to ensure that our implementation correct handles that
// 0.0 and -0.0 will be different in an anytrue (IEEE753 says they are equals).
WASM_SIMD_TEST(V128AnytrueWithNegativeZero) {
- WasmRunner<int32_t, int64_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int64_t> r(execution_tier);
byte simd = r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(simd, WASM_SIMD_I64x2_SPLAT(WASM_LOCAL_GET(0))),
WASM_SIMD_UNOP(kExprV128AnyTrue, WASM_LOCAL_GET(simd)));
@@ -3264,8 +3194,8 @@ WASM_SIMD_TEST(V128AnytrueWithNegativeZero) {
#define WASM_SIMD_ALLTRUE_TEST(format, lanes, max, param_type) \
WASM_SIMD_TEST(I##format##AllTrue) { \
- WasmRunner<int32_t, param_type> r(execution_tier, lower_simd); \
- if (lanes == 2 && lower_simd == kLowerSimd) return; \
+ WasmRunner<int32_t, param_type> r(execution_tier); \
+ if (lanes == 2) return; \
byte simd = r.AllocateLocal(kWasmS128); \
BUILD( \
r, \
@@ -3281,7 +3211,7 @@ WASM_SIMD_ALLTRUE_TEST(16x8, 8, 0xffff, int32_t)
WASM_SIMD_ALLTRUE_TEST(8x16, 16, 0xff, int32_t)
WASM_SIMD_TEST(BitSelect) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
byte simd = r.AllocateLocal(kWasmS128);
BUILD(r,
WASM_LOCAL_SET(
@@ -3293,9 +3223,9 @@ WASM_SIMD_TEST(BitSelect) {
CHECK_EQ(0x01020304, r.Call(0xFFFFFFFF));
}
-void RunSimdConstTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
+void RunSimdConstTest(TestExecutionTier execution_tier,
const std::array<uint8_t, kSimd128Size>& expected) {
- WasmRunner<uint32_t> r(execution_tier, lower_simd);
+ WasmRunner<uint32_t> r(execution_tier);
byte temp1 = r.AllocateLocal(kWasmS128);
uint8_t* src0 = r.builder().AddGlobal<uint8_t>(kWasmS128);
BUILD(r, WASM_GLOBAL_SET(temp1, WASM_SIMD_CONSTANT(expected)), WASM_ONE);
@@ -3311,7 +3241,7 @@ WASM_SIMD_TEST(S128Const) {
for (int i = 0; i < kSimd128Size; i++) {
expected[i] = i;
}
- RunSimdConstTest(execution_tier, lower_simd, expected);
+ RunSimdConstTest(execution_tier, expected);
// Keep the first 4 lanes as 0, set the remaining ones.
for (int i = 0; i < 4; i++) {
@@ -3320,18 +3250,18 @@ WASM_SIMD_TEST(S128Const) {
for (int i = 4; i < kSimd128Size; i++) {
expected[i] = i;
}
- RunSimdConstTest(execution_tier, lower_simd, expected);
+ RunSimdConstTest(execution_tier, expected);
// Check sign extension logic used to pack int32s into int64.
expected = {0};
// Set the top bit of lane 3 (top bit of first int32), the rest can be 0.
expected[3] = 0x80;
- RunSimdConstTest(execution_tier, lower_simd, expected);
+ RunSimdConstTest(execution_tier, expected);
}
WASM_SIMD_TEST(S128ConstAllZero) {
std::array<uint8_t, kSimd128Size> expected = {0};
- RunSimdConstTest(execution_tier, lower_simd, expected);
+ RunSimdConstTest(execution_tier, expected);
}
WASM_SIMD_TEST(S128ConstAllOnes) {
@@ -3340,46 +3270,42 @@ WASM_SIMD_TEST(S128ConstAllOnes) {
for (int i = 0; i < kSimd128Size; i++) {
expected[i] = 0xff;
}
- RunSimdConstTest(execution_tier, lower_simd, expected);
+ RunSimdConstTest(execution_tier, expected);
}
WASM_SIMD_TEST(I8x16LeUMixed) {
- RunI8x16MixedRelationalOpTest(execution_tier, lower_simd, kExprI8x16LeU,
+ RunI8x16MixedRelationalOpTest(execution_tier, kExprI8x16LeU,
UnsignedLessEqual);
}
WASM_SIMD_TEST(I8x16LtUMixed) {
- RunI8x16MixedRelationalOpTest(execution_tier, lower_simd, kExprI8x16LtU,
- UnsignedLess);
+ RunI8x16MixedRelationalOpTest(execution_tier, kExprI8x16LtU, UnsignedLess);
}
WASM_SIMD_TEST(I8x16GeUMixed) {
- RunI8x16MixedRelationalOpTest(execution_tier, lower_simd, kExprI8x16GeU,
+ RunI8x16MixedRelationalOpTest(execution_tier, kExprI8x16GeU,
UnsignedGreaterEqual);
}
WASM_SIMD_TEST(I8x16GtUMixed) {
- RunI8x16MixedRelationalOpTest(execution_tier, lower_simd, kExprI8x16GtU,
- UnsignedGreater);
+ RunI8x16MixedRelationalOpTest(execution_tier, kExprI8x16GtU, UnsignedGreater);
}
WASM_SIMD_TEST(I16x8LeUMixed) {
- RunI16x8MixedRelationalOpTest(execution_tier, lower_simd, kExprI16x8LeU,
+ RunI16x8MixedRelationalOpTest(execution_tier, kExprI16x8LeU,
UnsignedLessEqual);
}
WASM_SIMD_TEST(I16x8LtUMixed) {
- RunI16x8MixedRelationalOpTest(execution_tier, lower_simd, kExprI16x8LtU,
- UnsignedLess);
+ RunI16x8MixedRelationalOpTest(execution_tier, kExprI16x8LtU, UnsignedLess);
}
WASM_SIMD_TEST(I16x8GeUMixed) {
- RunI16x8MixedRelationalOpTest(execution_tier, lower_simd, kExprI16x8GeU,
+ RunI16x8MixedRelationalOpTest(execution_tier, kExprI16x8GeU,
UnsignedGreaterEqual);
}
WASM_SIMD_TEST(I16x8GtUMixed) {
- RunI16x8MixedRelationalOpTest(execution_tier, lower_simd, kExprI16x8GtU,
- UnsignedGreater);
+ RunI16x8MixedRelationalOpTest(execution_tier, kExprI16x8GtU, UnsignedGreater);
}
WASM_SIMD_TEST(I16x8ExtractLaneU_I8x16Splat) {
// Test that we are correctly signed/unsigned extending when extracting.
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
byte simd_val = r.AllocateLocal(kWasmS128);
BUILD(r, WASM_LOCAL_SET(simd_val, WASM_SIMD_I8x16_SPLAT(WASM_LOCAL_GET(0))),
WASM_SIMD_I16x8_EXTRACT_LANE_U(0, WASM_LOCAL_GET(simd_val)));
@@ -3388,7 +3314,7 @@ WASM_SIMD_TEST(I16x8ExtractLaneU_I8x16Splat) {
#define WASM_EXTRACT_I16x8_TEST(Sign, Type) \
WASM_SIMD_TEST(I16X8ExtractLane##Sign) { \
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd); \
+ WasmRunner<int32_t, int32_t> r(execution_tier); \
byte int_val = r.AllocateLocal(kWasmI32); \
byte simd_val = r.AllocateLocal(kWasmS128); \
BUILD(r, \
@@ -3405,7 +3331,7 @@ WASM_EXTRACT_I16x8_TEST(S, UINT16) WASM_EXTRACT_I16x8_TEST(I, INT16)
#define WASM_EXTRACT_I8x16_TEST(Sign, Type) \
WASM_SIMD_TEST(I8x16ExtractLane##Sign) { \
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd); \
+ WasmRunner<int32_t, int32_t> r(execution_tier); \
byte int_val = r.AllocateLocal(kWasmI32); \
byte simd_val = r.AllocateLocal(kWasmS128); \
BUILD(r, \
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm.cc b/deps/v8/test/cctest/wasm/test-run-wasm.cc
index 250820ed19..09a6985b49 100644
--- a/deps/v8/test/cctest/wasm/test-run-wasm.cc
+++ b/deps/v8/test/cctest/wasm/test-run-wasm.cc
@@ -114,21 +114,18 @@ static void RunInt32AddTest(TestExecutionTier execution_tier, const byte* code,
}
WASM_EXEC_TEST(Int32Add_P2) {
- EXPERIMENTAL_FLAG_SCOPE(mv);
static const byte code[] = {
WASM_I32_ADD(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1))};
RunInt32AddTest(execution_tier, code, sizeof(code));
}
WASM_EXEC_TEST(Int32Add_block1) {
- EXPERIMENTAL_FLAG_SCOPE(mv);
static const byte code[] = {
WASM_BLOCK_X(1, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1)), kExprI32Add};
RunInt32AddTest(execution_tier, code, sizeof(code));
}
WASM_EXEC_TEST(Int32Add_block2) {
- EXPERIMENTAL_FLAG_SCOPE(mv);
static const byte code[] = {
WASM_BLOCK_X(1, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), kExprBr, DEPTH_0),
kExprI32Add};
@@ -136,7 +133,6 @@ WASM_EXEC_TEST(Int32Add_block2) {
}
WASM_EXEC_TEST(Int32Add_multi_if) {
- EXPERIMENTAL_FLAG_SCOPE(mv);
static const byte code[] = {
WASM_IF_ELSE_X(1, WASM_LOCAL_GET(0),
WASM_SEQ(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1)),
@@ -2425,18 +2421,47 @@ WASM_EXEC_TEST(Regular_Factorial) {
}
}
+namespace {
+// TODO(cleanup): Define in cctest.h and re-use where appropriate.
+class IsolateScope {
+ public:
+ IsolateScope() {
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ isolate_ = v8::Isolate::New(create_params);
+ isolate_->Enter();
+ }
+
+ ~IsolateScope() {
+ isolate_->Exit();
+ isolate_->Dispose();
+ }
+
+ v8::Isolate* isolate() { return isolate_; }
+ Isolate* i_isolate() { return reinterpret_cast<Isolate*>(isolate_); }
+
+ private:
+ v8::Isolate* isolate_;
+};
+} // namespace
+
// Tail-recursive variation on factorial:
// fact(N) => f(N,1).
//
// f(N,X) where N=<1 => X
// f(N,X) => f(N-1,X*N).
-WASM_EXEC_TEST(ReturnCall_Factorial) {
+UNINITIALIZED_WASM_EXEC_TEST(ReturnCall_Factorial) {
EXPERIMENTAL_FLAG_SCOPE(return_call);
// Run in bounded amount of stack - 8kb.
FlagScope<int32_t> stack_size(&v8::internal::FLAG_stack_size, 8);
- WasmRunner<uint32_t, uint32_t> r(execution_tier);
+ IsolateScope isolate_scope;
+ LocalContext current(isolate_scope.isolate());
+
+ WasmRunner<uint32_t, uint32_t> r(execution_tier, nullptr, "main",
+ kRuntimeExceptionSupport,
+ isolate_scope.i_isolate());
WasmFunctionCompiler& fact_aux_fn =
r.NewFunction<uint32_t, uint32_t, uint32_t>("fact_aux");
@@ -2464,12 +2489,17 @@ WASM_EXEC_TEST(ReturnCall_Factorial) {
// g(X,0) => X.
// g(X,N) => f(N-1,X*N).
-WASM_EXEC_TEST(ReturnCall_MutualFactorial) {
+UNINITIALIZED_WASM_EXEC_TEST(ReturnCall_MutualFactorial) {
EXPERIMENTAL_FLAG_SCOPE(return_call);
// Run in bounded amount of stack - 8kb.
FlagScope<int32_t> stack_size(&v8::internal::FLAG_stack_size, 8);
- WasmRunner<uint32_t, uint32_t> r(execution_tier);
+ IsolateScope isolate_scope;
+ LocalContext current(isolate_scope.isolate());
+
+ WasmRunner<uint32_t, uint32_t> r(execution_tier, nullptr, "main",
+ kRuntimeExceptionSupport,
+ isolate_scope.i_isolate());
WasmFunctionCompiler& f_fn = r.NewFunction<uint32_t, uint32_t, uint32_t>("f");
WasmFunctionCompiler& g_fn = r.NewFunction<uint32_t, uint32_t, uint32_t>("g");
@@ -2506,12 +2536,17 @@ WASM_EXEC_TEST(ReturnCall_MutualFactorial) {
// f(N,X,_) where N=<1 => X
// f(N,X,F) => F(N-1,X*N,F).
-WASM_EXEC_TEST(ReturnCall_IndirectFactorial) {
+UNINITIALIZED_WASM_EXEC_TEST(ReturnCall_IndirectFactorial) {
EXPERIMENTAL_FLAG_SCOPE(return_call);
// Run in bounded amount of stack - 8kb.
FlagScope<int32_t> stack_size(&v8::internal::FLAG_stack_size, 8);
- WasmRunner<uint32_t, uint32_t> r(execution_tier);
+ IsolateScope isolate_scope;
+ LocalContext current(isolate_scope.isolate());
+
+ WasmRunner<uint32_t, uint32_t> r(execution_tier, nullptr, "main",
+ kRuntimeExceptionSupport,
+ isolate_scope.i_isolate());
TestSignatures sigs;
@@ -2550,12 +2585,17 @@ WASM_EXEC_TEST(ReturnCall_IndirectFactorial) {
// sum(N,k) where N<1 =>k.
// sum(N,k) => sum(N-1,k+N).
-WASM_EXEC_TEST(ReturnCall_Sum) {
+UNINITIALIZED_WASM_EXEC_TEST(ReturnCall_Sum) {
EXPERIMENTAL_FLAG_SCOPE(return_call);
// Run in bounded amount of stack - 8kb.
FlagScope<int32_t> stack_size(&v8::internal::FLAG_stack_size, 8);
- WasmRunner<int32_t, int32_t> r(execution_tier);
+ IsolateScope isolate_scope;
+ LocalContext current(isolate_scope.isolate());
+
+ WasmRunner<int32_t, int32_t> r(execution_tier, nullptr, "main",
+ kRuntimeExceptionSupport,
+ isolate_scope.i_isolate());
TestSignatures sigs;
WasmFunctionCompiler& sum_aux_fn = r.NewFunction(sigs.i_ii(), "sum_aux");
@@ -2587,12 +2627,17 @@ WASM_EXEC_TEST(ReturnCall_Sum) {
// b3(N,_,_,k) where N<1 =>k.
// b3(N,_,_,k) => b1(N-1,k+N).
-WASM_EXEC_TEST(ReturnCall_Bounce_Sum) {
+UNINITIALIZED_WASM_EXEC_TEST(ReturnCall_Bounce_Sum) {
EXPERIMENTAL_FLAG_SCOPE(return_call);
// Run in bounded amount of stack - 8kb.
FlagScope<int32_t> stack_size(&v8::internal::FLAG_stack_size, 8);
- WasmRunner<int32_t, int32_t> r(execution_tier);
+ IsolateScope isolate_scope;
+ LocalContext current(isolate_scope.isolate());
+
+ WasmRunner<int32_t, int32_t> r(execution_tier, nullptr, "main",
+ kRuntimeExceptionSupport,
+ isolate_scope.i_isolate());
TestSignatures sigs;
WasmFunctionCompiler& b1_fn = r.NewFunction(sigs.i_ii(), "b1");
@@ -2741,7 +2786,6 @@ WASM_EXEC_TEST(AddCall) {
}
WASM_EXEC_TEST(MultiReturnSub) {
- EXPERIMENTAL_FLAG_SCOPE(mv);
WasmRunner<int32_t, int32_t, int32_t> r(execution_tier);
ValueType storage[] = {kWasmI32, kWasmI32, kWasmI32, kWasmI32};
@@ -2763,7 +2807,6 @@ WASM_EXEC_TEST(MultiReturnSub) {
template <typename T>
void RunMultiReturnSelect(TestExecutionTier execution_tier, const T* inputs) {
- EXPERIMENTAL_FLAG_SCOPE(mv);
ValueType type = ValueType::For(MachineTypeForC<T>());
ValueType storage[] = {type, type, type, type, type, type};
const size_t kNumReturns = 2;
@@ -3117,7 +3160,6 @@ WASM_EXEC_TEST(Regress_EnsureArguments) {
}
WASM_EXEC_TEST(Regress_PushControl) {
- EXPERIMENTAL_FLAG_SCOPE(mv);
WasmRunner<int32_t> r(execution_tier);
BUILD(r, WASM_I32V(42),
WASM_IF(WASM_I32V(0), WASM_UNREACHABLE, kExprIf, kVoidCode, kExprEnd));
@@ -3854,7 +3896,6 @@ TEST(Liftoff_tier_up) {
}
TEST(Regression_1085507) {
- EXPERIMENTAL_FLAG_SCOPE(mv);
WasmRunner<int32_t> r(TestExecutionTier::kInterpreter);
TestSignatures sigs;
uint32_t sig_v_i = r.builder().AddSignature(sigs.v_i());
diff --git a/deps/v8/test/cctest/wasm/test-wasm-breakpoints.cc b/deps/v8/test/cctest/wasm/test-wasm-breakpoints.cc
index 9c2edfe75f..256b2ce296 100644
--- a/deps/v8/test/cctest/wasm/test-wasm-breakpoints.cc
+++ b/deps/v8/test/cctest/wasm/test-wasm-breakpoints.cc
@@ -546,7 +546,6 @@ WASM_COMPILED_EXEC_TEST(WasmBreakInPostMVP) {
// being used. There was a bug where we were trying to update the "detected"
// features set, but we were passing a nullptr when compiling with
// breakpoints.
- EXPERIMENTAL_FLAG_SCOPE(mv);
WasmRunner<int> runner(execution_tier);
Isolate* isolate = runner.main_isolate();
diff --git a/deps/v8/test/cctest/wasm/test-wasm-serialization.cc b/deps/v8/test/cctest/wasm/test-wasm-serialization.cc
index 79ba524ffb..2f8f92b803 100644
--- a/deps/v8/test/cctest/wasm/test-wasm-serialization.cc
+++ b/deps/v8/test/cctest/wasm/test-wasm-serialization.cc
@@ -257,7 +257,6 @@ TEST(BlockWasmCodeGenAtDeserialization) {
}
UNINITIALIZED_TEST(CompiledWasmModulesTransfer) {
- i::wasm::WasmEngine::InitializeOncePerProcess();
v8::internal::AccountingAllocator allocator;
Zone zone(&allocator, ZONE_NAME);
diff --git a/deps/v8/test/cctest/wasm/test-wasm-shared-engine.cc b/deps/v8/test/cctest/wasm/test-wasm-shared-engine.cc
index b7f3a8d83e..d6d9e40a04 100644
--- a/deps/v8/test/cctest/wasm/test-wasm-shared-engine.cc
+++ b/deps/v8/test/cctest/wasm/test-wasm-shared-engine.cc
@@ -22,40 +22,15 @@ namespace internal {
namespace wasm {
namespace test_wasm_shared_engine {
-// Helper class representing a WebAssembly engine that is capable of being
-// shared between multiple Isolates, sharing the underlying generated code.
-class SharedEngine {
- public:
- ~SharedEngine() {
- // Ensure no remaining uses exist.
- CHECK(wasm_engine_.unique());
- }
-
- WasmEngine* engine() const { return wasm_engine_.get(); }
- WasmCodeManager* code_manager() const { return engine()->code_manager(); }
-
- int NumberOfExportedEngineUses() const {
- // This class holds one implicit use itself, which we discount.
- return static_cast<int>(wasm_engine_.use_count()) - 1;
- }
-
- std::shared_ptr<WasmEngine> ExportEngineForSharing() { return wasm_engine_; }
-
- private:
- std::shared_ptr<WasmEngine> wasm_engine_ = std::make_unique<WasmEngine>();
-};
-
// Helper type definition representing a WebAssembly module shared between
// multiple Isolates with implicit reference counting.
using SharedModule = std::shared_ptr<NativeModule>;
-// Helper class representing an Isolate based on a given shared WebAssembly
-// engine available at construction time.
+// Helper class representing an Isolate that uses the process-wide (shared) wasm
+// engine.
class SharedEngineIsolate {
public:
- explicit SharedEngineIsolate(SharedEngine* engine)
- : isolate_(v8::Isolate::Allocate()) {
- isolate()->SetWasmEngine(engine->ExportEngineForSharing());
+ SharedEngineIsolate() : isolate_(v8::Isolate::Allocate()) {
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
v8::Isolate::Initialize(isolate_, create_params);
@@ -111,19 +86,16 @@ class SharedEngineIsolate {
// with a shared WebAssembly engine available at construction time.
class SharedEngineThread : public v8::base::Thread {
public:
- SharedEngineThread(SharedEngine* engine,
- std::function<void(SharedEngineIsolate*)> callback)
- : Thread(Options("SharedEngineThread")),
- engine_(engine),
- callback_(callback) {}
+ explicit SharedEngineThread(
+ std::function<void(SharedEngineIsolate*)> callback)
+ : Thread(Options("SharedEngineThread")), callback_(callback) {}
void Run() override {
- SharedEngineIsolate isolate(engine_);
+ SharedEngineIsolate isolate;
callback_(&isolate);
}
private:
- SharedEngine* engine_;
std::function<void(SharedEngineIsolate*)> callback_;
};
@@ -201,34 +173,16 @@ Handle<WasmInstanceObject> CompileAndInstantiateAsync(
} // namespace
-TEST(SharedEngineUseCount) {
- SharedEngine engine;
- CHECK_EQ(0, engine.NumberOfExportedEngineUses());
- {
- SharedEngineIsolate isolate(&engine);
- CHECK_EQ(1, engine.NumberOfExportedEngineUses());
- }
- CHECK_EQ(0, engine.NumberOfExportedEngineUses());
- {
- SharedEngineIsolate isolate1(&engine);
- CHECK_EQ(1, engine.NumberOfExportedEngineUses());
- SharedEngineIsolate isolate2(&engine);
- CHECK_EQ(2, engine.NumberOfExportedEngineUses());
- }
- CHECK_EQ(0, engine.NumberOfExportedEngineUses());
-}
-
TEST(SharedEngineRunSeparated) {
- SharedEngine engine;
{
- SharedEngineIsolate isolate(&engine);
+ SharedEngineIsolate isolate;
HandleScope scope(isolate.isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate.zone(), 23);
Handle<WasmInstanceObject> instance = isolate.CompileAndInstantiate(buffer);
CHECK_EQ(23, isolate.Run(instance));
}
{
- SharedEngineIsolate isolate(&engine);
+ SharedEngineIsolate isolate;
HandleScope scope(isolate.isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate.zone(), 42);
Handle<WasmInstanceObject> instance = isolate.CompileAndInstantiate(buffer);
@@ -237,10 +191,9 @@ TEST(SharedEngineRunSeparated) {
}
TEST(SharedEngineRunImported) {
- SharedEngine engine;
SharedModule module;
{
- SharedEngineIsolate isolate(&engine);
+ SharedEngineIsolate isolate;
HandleScope scope(isolate.isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate.zone(), 23);
Handle<WasmInstanceObject> instance = isolate.CompileAndInstantiate(buffer);
@@ -248,7 +201,7 @@ TEST(SharedEngineRunImported) {
CHECK_EQ(23, isolate.Run(instance));
}
{
- SharedEngineIsolate isolate(&engine);
+ SharedEngineIsolate isolate;
HandleScope scope(isolate.isolate());
Handle<WasmInstanceObject> instance = isolate.ImportInstance(module);
CHECK_EQ(23, isolate.Run(instance));
@@ -256,15 +209,14 @@ TEST(SharedEngineRunImported) {
}
TEST(SharedEngineRunThreadedBuildingSync) {
- SharedEngine engine;
- SharedEngineThread thread1(&engine, [](SharedEngineIsolate* isolate) {
+ SharedEngineThread thread1([](SharedEngineIsolate* isolate) {
HandleScope scope(isolate->isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate->zone(), 23);
Handle<WasmInstanceObject> instance =
isolate->CompileAndInstantiate(buffer);
CHECK_EQ(23, isolate->Run(instance));
});
- SharedEngineThread thread2(&engine, [](SharedEngineIsolate* isolate) {
+ SharedEngineThread thread2([](SharedEngineIsolate* isolate) {
HandleScope scope(isolate->isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate->zone(), 42);
Handle<WasmInstanceObject> instance =
@@ -278,15 +230,14 @@ TEST(SharedEngineRunThreadedBuildingSync) {
}
TEST(SharedEngineRunThreadedBuildingAsync) {
- SharedEngine engine;
- SharedEngineThread thread1(&engine, [](SharedEngineIsolate* isolate) {
+ SharedEngineThread thread1([](SharedEngineIsolate* isolate) {
HandleScope scope(isolate->isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate->zone(), 23);
Handle<WasmInstanceObject> instance =
CompileAndInstantiateAsync(isolate, buffer);
CHECK_EQ(23, isolate->Run(instance));
});
- SharedEngineThread thread2(&engine, [](SharedEngineIsolate* isolate) {
+ SharedEngineThread thread2([](SharedEngineIsolate* isolate) {
HandleScope scope(isolate->isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate->zone(), 42);
Handle<WasmInstanceObject> instance =
@@ -300,21 +251,20 @@ TEST(SharedEngineRunThreadedBuildingAsync) {
}
TEST(SharedEngineRunThreadedExecution) {
- SharedEngine engine;
SharedModule module;
{
- SharedEngineIsolate isolate(&engine);
+ SharedEngineIsolate isolate;
HandleScope scope(isolate.isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate.zone(), 23);
Handle<WasmInstanceObject> instance = isolate.CompileAndInstantiate(buffer);
module = isolate.ExportInstance(instance);
}
- SharedEngineThread thread1(&engine, [module](SharedEngineIsolate* isolate) {
+ SharedEngineThread thread1([module](SharedEngineIsolate* isolate) {
HandleScope scope(isolate->isolate());
Handle<WasmInstanceObject> instance = isolate->ImportInstance(module);
CHECK_EQ(23, isolate->Run(instance));
});
- SharedEngineThread thread2(&engine, [module](SharedEngineIsolate* isolate) {
+ SharedEngineThread thread2([module](SharedEngineIsolate* isolate) {
HandleScope scope(isolate->isolate());
Handle<WasmInstanceObject> instance = isolate->ImportInstance(module);
CHECK_EQ(23, isolate->Run(instance));
@@ -326,10 +276,9 @@ TEST(SharedEngineRunThreadedExecution) {
}
TEST(SharedEngineRunThreadedTierUp) {
- SharedEngine engine;
SharedModule module;
{
- SharedEngineIsolate isolate(&engine);
+ SharedEngineIsolate isolate;
HandleScope scope(isolate.isolate());
ZoneBuffer* buffer = BuildReturnConstantModule(isolate.zone(), 23);
Handle<WasmInstanceObject> instance = isolate.CompileAndInstantiate(buffer);
@@ -338,7 +287,7 @@ TEST(SharedEngineRunThreadedTierUp) {
constexpr int kNumberOfThreads = 5;
std::list<SharedEngineThread> threads;
for (int i = 0; i < kNumberOfThreads; ++i) {
- threads.emplace_back(&engine, [module](SharedEngineIsolate* isolate) {
+ threads.emplace_back([module](SharedEngineIsolate* isolate) {
constexpr int kNumberOfIterations = 100;
HandleScope scope(isolate->isolate());
Handle<WasmInstanceObject> instance = isolate->ImportInstance(module);
@@ -347,7 +296,7 @@ TEST(SharedEngineRunThreadedTierUp) {
}
});
}
- threads.emplace_back(&engine, [module](SharedEngineIsolate* isolate) {
+ threads.emplace_back([module](SharedEngineIsolate* isolate) {
HandleScope scope(isolate->isolate());
Handle<WasmInstanceObject> instance = isolate->ImportInstance(module);
WasmFeatures detected = WasmFeatures::None();
diff --git a/deps/v8/test/cctest/wasm/wasm-run-utils.cc b/deps/v8/test/cctest/wasm/wasm-run-utils.cc
index 163e7b8799..de7139fa3c 100644
--- a/deps/v8/test/cctest/wasm/wasm-run-utils.cc
+++ b/deps/v8/test/cctest/wasm/wasm-run-utils.cc
@@ -22,13 +22,12 @@ namespace wasm {
TestingModuleBuilder::TestingModuleBuilder(
Zone* zone, ManuallyImportedJSFunction* maybe_import,
TestExecutionTier tier, RuntimeExceptionSupport exception_support,
- LowerSimd lower_simd)
+ Isolate* isolate)
: test_module_(std::make_shared<WasmModule>()),
- isolate_(CcTest::InitIsolateOnce()),
+ isolate_(isolate ? isolate : CcTest::InitIsolateOnce()),
enabled_features_(WasmFeatures::FromIsolate(isolate_)),
execution_tier_(tier),
- runtime_exception_support_(exception_support),
- lower_simd_(lower_simd) {
+ runtime_exception_support_(exception_support) {
WasmJs::Install(isolate_, true);
test_module_->untagged_globals_buffer_size = kMaxGlobalsSize;
memset(globals_data_, 0, sizeof(globals_data_));
@@ -164,7 +163,6 @@ void TestingModuleBuilder::FreezeSignatureMapAndInitializeWrapperCache() {
Handle<JSFunction> TestingModuleBuilder::WrapCode(uint32_t index) {
CHECK(!interpreter_);
FreezeSignatureMapAndInitializeWrapperCache();
- SetExecutable();
return WasmInstanceObject::GetOrCreateWasmExternalFunction(
isolate_, instance_object(), index);
}
@@ -297,9 +295,11 @@ uint32_t TestingModuleBuilder::AddPassiveElementSegment(
uint32_t index = static_cast<uint32_t>(test_module_->elem_segments.size());
DCHECK_EQ(index, dropped_elem_segments_.size());
- test_module_->elem_segments.emplace_back(false);
+ test_module_->elem_segments.emplace_back(kWasmFuncRef, false);
auto& elem_segment = test_module_->elem_segments.back();
- elem_segment.entries = entries;
+ for (uint32_t entry : entries) {
+ elem_segment.entries.push_back(WasmInitExpr::RefFuncConst(entry));
+ }
// The vector pointers may have moved, so update the instance object.
dropped_elem_segments_.push_back(0);
@@ -314,7 +314,7 @@ CompilationEnv TestingModuleBuilder::CreateCompilationEnv() {
V8_TRAP_HANDLER_SUPPORTED && i::FLAG_wasm_trap_handler;
return {test_module_.get(),
is_trap_handler_enabled ? kUseTrapHandler : kNoTrapHandler,
- runtime_exception_support_, enabled_features_, lower_simd()};
+ runtime_exception_support_, enabled_features_};
}
const WasmGlobal* TestingModuleBuilder::AddGlobal(ValueType type) {
@@ -363,7 +363,7 @@ void TestBuildingGraphWithBuilder(compiler::WasmGraphBuilder* builder,
std::vector<compiler::WasmLoopInfo> loops;
DecodeResult result =
BuildTFGraph(zone->allocator(), WasmFeatures::All(), nullptr, builder,
- &unused_detected_features, body, &loops, nullptr);
+ &unused_detected_features, body, &loops, nullptr, 0);
if (result.failed()) {
#ifdef DEBUG
if (!FLAG_trace_wasm_decoder) {
@@ -371,7 +371,7 @@ void TestBuildingGraphWithBuilder(compiler::WasmGraphBuilder* builder,
FLAG_trace_wasm_decoder = true;
result =
BuildTFGraph(zone->allocator(), WasmFeatures::All(), nullptr, builder,
- &unused_detected_features, body, &loops, nullptr);
+ &unused_detected_features, body, &loops, nullptr, 0);
}
#endif
@@ -463,11 +463,9 @@ void WasmFunctionWrapper::Init(CallDescriptor* call_descriptor,
graph()->SetEnd(graph()->NewNode(common()->End(1), r));
}
-Handle<Code> WasmFunctionWrapper::GetWrapperCode() {
+Handle<Code> WasmFunctionWrapper::GetWrapperCode(Isolate* isolate) {
Handle<Code> code;
if (!code_.ToHandle(&code)) {
- Isolate* isolate = CcTest::InitIsolateOnce();
-
auto call_descriptor = compiler::Linkage::GetSimplifiedCDescriptor(
zone(), signature_, CallDescriptor::kInitializeRootRegister);
diff --git a/deps/v8/test/cctest/wasm/wasm-run-utils.h b/deps/v8/test/cctest/wasm/wasm-run-utils.h
index e4b0868e47..05ada59bda 100644
--- a/deps/v8/test/cctest/wasm/wasm-run-utils.h
+++ b/deps/v8/test/cctest/wasm/wasm-run-utils.h
@@ -98,7 +98,7 @@ struct ManuallyImportedJSFunction {
class TestingModuleBuilder {
public:
TestingModuleBuilder(Zone*, ManuallyImportedJSFunction*, TestExecutionTier,
- RuntimeExceptionSupport, LowerSimd);
+ RuntimeExceptionSupport, Isolate* isolate = nullptr);
~TestingModuleBuilder();
void ChangeOriginToAsmjs() { test_module_->origin = kAsmJsSloppyOrigin; }
@@ -219,7 +219,6 @@ class TestingModuleBuilder {
WasmInterpreter* interpreter() const { return interpreter_.get(); }
bool interpret() const { return interpreter_ != nullptr; }
- LowerSimd lower_simd() const { return lower_simd_; }
Isolate* isolate() const { return isolate_; }
Handle<WasmInstanceObject> instance_object() const {
return instance_object_;
@@ -231,8 +230,6 @@ class TestingModuleBuilder {
return reinterpret_cast<Address>(globals_data_);
}
- void SetExecutable() { native_module_->SetExecutable(true); }
-
void SetTieredDown() {
native_module_->SetTieringState(kTieredDown);
execution_tier_ = TestExecutionTier::kLiftoff;
@@ -275,7 +272,6 @@ class TestingModuleBuilder {
Handle<WasmInstanceObject> instance_object_;
NativeModule* native_module_ = nullptr;
RuntimeExceptionSupport runtime_exception_support_;
- LowerSimd lower_simd_;
// Data segment arrays that are normally allocated on the instance.
std::vector<byte> data_segment_data_;
@@ -327,7 +323,7 @@ class WasmFunctionWrapper : private compiler::GraphAndBuilders {
common()->HeapConstant(instance));
}
- Handle<Code> GetWrapperCode();
+ Handle<Code> GetWrapperCode(Isolate* isolate = nullptr);
Signature<MachineType>* signature() const { return signature_; }
@@ -389,10 +385,11 @@ class WasmRunnerBase : public InitializedHandleScope {
WasmRunnerBase(ManuallyImportedJSFunction* maybe_import,
TestExecutionTier execution_tier, int num_params,
RuntimeExceptionSupport runtime_exception_support,
- LowerSimd lower_simd)
- : zone_(&allocator_, ZONE_NAME, kCompressGraphZone),
+ Isolate* isolate = nullptr)
+ : InitializedHandleScope(isolate),
+ zone_(&allocator_, ZONE_NAME, kCompressGraphZone),
builder_(&zone_, maybe_import, execution_tier,
- runtime_exception_support, lower_simd),
+ runtime_exception_support, isolate),
wrapper_(&zone_, num_params) {}
static void SetUpTrapCallback() {
@@ -496,7 +493,9 @@ class WasmRunnerBase : public InitializedHandleScope {
}
}
- Handle<Code> GetWrapperCode() { return wrapper_.GetWrapperCode(); }
+ Handle<Code> GetWrapperCode() {
+ return wrapper_.GetWrapperCode(main_isolate());
+ }
private:
static FunctionSig* CreateSig(Zone* zone, MachineType return_type,
@@ -552,9 +551,9 @@ class WasmRunner : public WasmRunnerBase {
const char* main_fn_name = "main",
RuntimeExceptionSupport runtime_exception_support =
kNoRuntimeExceptionSupport,
- LowerSimd lower_simd = kNoLowerSimd)
+ Isolate* isolate = nullptr)
: WasmRunnerBase(maybe_import, execution_tier, sizeof...(ParamTypes),
- runtime_exception_support, lower_simd) {
+ runtime_exception_support, isolate) {
WasmFunctionCompiler& main_fn =
NewFunction<ReturnType, ParamTypes...>(main_fn_name);
// Non-zero if there is an import.
@@ -565,15 +564,10 @@ class WasmRunner : public WasmRunnerBase {
}
}
- WasmRunner(TestExecutionTier execution_tier, LowerSimd lower_simd)
- : WasmRunner(execution_tier, nullptr, "main", kNoRuntimeExceptionSupport,
- lower_simd) {}
-
ReturnType Call(ParamTypes... p) {
- Isolate* isolate = CcTest::InitIsolateOnce();
// Save the original context, because CEntry (for runtime calls) will
// reset / invalidate it when returning.
- SaveContext save_context(isolate);
+ SaveContext save_context(main_isolate());
DCHECK(compiled_);
if (interpret()) return CallInterpreter(p...);
@@ -583,10 +577,9 @@ class WasmRunner : public WasmRunnerBase {
wrapper_.SetInnerCode(builder_.GetFunctionCode(main_fn_index_));
wrapper_.SetInstance(builder_.instance_object());
- builder_.SetExecutable();
- Handle<Code> wrapper_code = wrapper_.GetWrapperCode();
- compiler::CodeRunner<int32_t> runner(CcTest::InitIsolateOnce(),
- wrapper_code, wrapper_.signature());
+ Handle<Code> wrapper_code = GetWrapperCode();
+ compiler::CodeRunner<int32_t> runner(main_isolate(), wrapper_code,
+ wrapper_.signature());
int32_t result;
{
SetThreadInWasmFlag();
@@ -647,6 +640,19 @@ class WasmRunner : public WasmRunnerBase {
} \
void RunWasm_##name(TestExecutionTier execution_tier)
+#define UNINITIALIZED_WASM_EXEC_TEST(name) \
+ void RunWasm_##name(TestExecutionTier execution_tier); \
+ UNINITIALIZED_TEST(RunWasmTurbofan_##name) { \
+ RunWasm_##name(TestExecutionTier::kTurbofan); \
+ } \
+ UNINITIALIZED_TEST(RunWasmLiftoff_##name) { \
+ RunWasm_##name(TestExecutionTier::kLiftoff); \
+ } \
+ UNINITIALIZED_TEST(RunWasmInterpreter_##name) { \
+ RunWasm_##name(TestExecutionTier::kInterpreter); \
+ } \
+ void RunWasm_##name(TestExecutionTier execution_tier)
+
#define WASM_COMPILED_EXEC_TEST(name) \
void RunWasm_##name(TestExecutionTier execution_tier); \
TEST(RunWasmTurbofan_##name) { \
diff --git a/deps/v8/test/cctest/wasm/wasm-simd-utils.cc b/deps/v8/test/cctest/wasm/wasm-simd-utils.cc
index 64a3e63aaa..1777ee095c 100644
--- a/deps/v8/test/cctest/wasm/wasm-simd-utils.cc
+++ b/deps/v8/test/cctest/wasm/wasm-simd-utils.cc
@@ -20,9 +20,9 @@
namespace v8 {
namespace internal {
namespace wasm {
-void RunI8x16UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int8UnOp expected_op) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+void RunI8x16UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int8UnOp expected_op) {
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Global to hold output.
int8_t* g = r.builder().AddGlobal<int8_t>(kWasmS128);
// Build fn to splat test value, perform unop, and write the result.
@@ -42,9 +42,9 @@ void RunI8x16UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
template <typename T, typename OpType>
-void RunI8x16BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, OpType expected_op) {
- WasmRunner<int32_t, T, T> r(execution_tier, lower_simd);
+void RunI8x16BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ OpType expected_op) {
+ WasmRunner<int32_t, T, T> r(execution_tier);
// Global to hold output.
T* g = r.builder().template AddGlobal<T>(kWasmS128);
// Build fn to splat test values, perform binop, and write the result.
@@ -69,17 +69,17 @@ void RunI8x16BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
// Explicit instantiations of uses.
-template void RunI8x16BinOpTest<int8_t>(TestExecutionTier, LowerSimd,
- WasmOpcode, Int8BinOp);
+template void RunI8x16BinOpTest<int8_t>(TestExecutionTier, WasmOpcode,
+ Int8BinOp);
-template void RunI8x16BinOpTest<uint8_t>(TestExecutionTier, LowerSimd,
- WasmOpcode, Uint8BinOp);
+template void RunI8x16BinOpTest<uint8_t>(TestExecutionTier, WasmOpcode,
+ Uint8BinOp);
-void RunI8x16ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int8ShiftOp expected_op) {
+void RunI8x16ShiftOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int8ShiftOp expected_op) {
// Intentionally shift by 8, should be no-op.
for (int shift = 1; shift <= 8; shift++) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
int32_t* memory = r.builder().AddMemoryElems<int32_t>(1);
int8_t* g_imm = r.builder().AddGlobal<int8_t>(kWasmS128);
int8_t* g_mem = r.builder().AddGlobal<int8_t>(kWasmS128);
@@ -108,9 +108,8 @@ void RunI8x16ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
void RunI8x16MixedRelationalOpTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode,
- Int8BinOp expected_op) {
- WasmRunner<int32_t, int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmOpcode opcode, Int8BinOp expected_op) {
+ WasmRunner<int32_t, int32_t, int32_t> r(execution_tier);
byte value1 = 0, value2 = 1;
byte temp1 = r.AllocateLocal(kWasmS128);
byte temp2 = r.AllocateLocal(kWasmS128);
@@ -129,9 +128,9 @@ void RunI8x16MixedRelationalOpTest(TestExecutionTier execution_tier,
r.Call(0xff, 0x7ffe));
}
-void RunI16x8UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int16UnOp expected_op) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+void RunI16x8UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int16UnOp expected_op) {
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Global to hold output.
int16_t* g = r.builder().AddGlobal<int16_t>(kWasmS128);
// Build fn to splat test value, perform unop, and write the result.
@@ -151,9 +150,9 @@ void RunI16x8UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
template <typename T, typename OpType>
-void RunI16x8BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, OpType expected_op) {
- WasmRunner<int32_t, T, T> r(execution_tier, lower_simd);
+void RunI16x8BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ OpType expected_op) {
+ WasmRunner<int32_t, T, T> r(execution_tier);
// Global to hold output.
T* g = r.builder().template AddGlobal<T>(kWasmS128);
// Build fn to splat test values, perform binop, and write the result.
@@ -178,16 +177,16 @@ void RunI16x8BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
// Explicit instantiations of uses.
-template void RunI16x8BinOpTest<int16_t>(TestExecutionTier, LowerSimd,
- WasmOpcode, Int16BinOp);
-template void RunI16x8BinOpTest<uint16_t>(TestExecutionTier, LowerSimd,
- WasmOpcode, Uint16BinOp);
+template void RunI16x8BinOpTest<int16_t>(TestExecutionTier, WasmOpcode,
+ Int16BinOp);
+template void RunI16x8BinOpTest<uint16_t>(TestExecutionTier, WasmOpcode,
+ Uint16BinOp);
-void RunI16x8ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int16ShiftOp expected_op) {
+void RunI16x8ShiftOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int16ShiftOp expected_op) {
// Intentionally shift by 16, should be no-op.
for (int shift = 1; shift <= 16; shift++) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
int32_t* memory = r.builder().AddMemoryElems<int32_t>(1);
int16_t* g_imm = r.builder().AddGlobal<int16_t>(kWasmS128);
int16_t* g_mem = r.builder().AddGlobal<int16_t>(kWasmS128);
@@ -216,9 +215,8 @@ void RunI16x8ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
void RunI16x8MixedRelationalOpTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode,
- Int16BinOp expected_op) {
- WasmRunner<int32_t, int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmOpcode opcode, Int16BinOp expected_op) {
+ WasmRunner<int32_t, int32_t, int32_t> r(execution_tier);
byte value1 = 0, value2 = 1;
byte temp1 = r.AllocateLocal(kWasmS128);
byte temp2 = r.AllocateLocal(kWasmS128);
@@ -237,9 +235,9 @@ void RunI16x8MixedRelationalOpTest(TestExecutionTier execution_tier,
r.Call(0xffff, 0x7ffffeff));
}
-void RunI32x4UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int32UnOp expected_op) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+void RunI32x4UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int32UnOp expected_op) {
+ WasmRunner<int32_t, int32_t> r(execution_tier);
// Global to hold output.
int32_t* g = r.builder().AddGlobal<int32_t>(kWasmS128);
// Build fn to splat test value, perform unop, and write the result.
@@ -258,9 +256,9 @@ void RunI32x4UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunI32x4BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int32BinOp expected_op) {
- WasmRunner<int32_t, int32_t, int32_t> r(execution_tier, lower_simd);
+void RunI32x4BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int32BinOp expected_op) {
+ WasmRunner<int32_t, int32_t, int32_t> r(execution_tier);
// Global to hold output.
int32_t* g = r.builder().AddGlobal<int32_t>(kWasmS128);
// Build fn to splat test values, perform binop, and write the result.
@@ -284,11 +282,11 @@ void RunI32x4BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunI32x4ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int32ShiftOp expected_op) {
+void RunI32x4ShiftOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int32ShiftOp expected_op) {
// Intentionally shift by 32, should be no-op.
for (int shift = 1; shift <= 32; shift++) {
- WasmRunner<int32_t, int32_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int32_t> r(execution_tier);
int32_t* memory = r.builder().AddMemoryElems<int32_t>(1);
int32_t* g_imm = r.builder().AddGlobal<int32_t>(kWasmS128);
int32_t* g_mem = r.builder().AddGlobal<int32_t>(kWasmS128);
@@ -316,9 +314,9 @@ void RunI32x4ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunI64x2UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int64UnOp expected_op) {
- WasmRunner<int32_t, int64_t> r(execution_tier, lower_simd);
+void RunI64x2UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int64UnOp expected_op) {
+ WasmRunner<int32_t, int64_t> r(execution_tier);
// Global to hold output.
int64_t* g = r.builder().AddGlobal<int64_t>(kWasmS128);
// Build fn to splat test value, perform unop, and write the result.
@@ -337,9 +335,9 @@ void RunI64x2UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunI64x2BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int64BinOp expected_op) {
- WasmRunner<int32_t, int64_t, int64_t> r(execution_tier, lower_simd);
+void RunI64x2BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int64BinOp expected_op) {
+ WasmRunner<int32_t, int64_t, int64_t> r(execution_tier);
// Global to hold output.
int64_t* g = r.builder().AddGlobal<int64_t>(kWasmS128);
// Build fn to splat test values, perform binop, and write the result.
@@ -363,11 +361,11 @@ void RunI64x2BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunI64x2ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int64ShiftOp expected_op) {
+void RunI64x2ShiftOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int64ShiftOp expected_op) {
// Intentionally shift by 64, should be no-op.
for (int shift = 1; shift <= 64; shift++) {
- WasmRunner<int32_t, int64_t> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, int64_t> r(execution_tier);
int32_t* memory = r.builder().AddMemoryElems<int32_t>(1);
int64_t* g_imm = r.builder().AddGlobal<int64_t>(kWasmS128);
int64_t* g_mem = r.builder().AddGlobal<int64_t>(kWasmS128);
@@ -448,9 +446,9 @@ void CheckFloatResult(float x, float y, float expected, float actual,
}
}
-void RunF32x4UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, FloatUnOp expected_op, bool exact) {
- WasmRunner<int32_t, float> r(execution_tier, lower_simd);
+void RunF32x4UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ FloatUnOp expected_op, bool exact) {
+ WasmRunner<int32_t, float> r(execution_tier);
// Global to hold output.
float* g = r.builder().AddGlobal<float>(kWasmS128);
// Build fn to splat test value, perform unop, and write the result.
@@ -492,9 +490,9 @@ void RunF32x4UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunF32x4BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, FloatBinOp expected_op) {
- WasmRunner<int32_t, float, float> r(execution_tier, lower_simd);
+void RunF32x4BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ FloatBinOp expected_op) {
+ WasmRunner<int32_t, float, float> r(execution_tier);
// Global to hold output.
float* g = r.builder().AddGlobal<float>(kWasmS128);
// Build fn to splat test values, perform binop, and write the result.
@@ -538,10 +536,9 @@ void RunF32x4BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunF32x4CompareOpTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode,
+void RunF32x4CompareOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
FloatCompareOp expected_op) {
- WasmRunner<int32_t, float, float> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, float, float> r(execution_tier);
// Set up global to hold mask output.
int32_t* g = r.builder().AddGlobal<int32_t>(kWasmS128);
// Build fn to splat test values, perform compare op, and write the result.
@@ -622,9 +619,9 @@ void CheckDoubleResult(double x, double y, double expected, double actual,
}
}
-void RunF64x2UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, DoubleUnOp expected_op, bool exact) {
- WasmRunner<int32_t, double> r(execution_tier, lower_simd);
+void RunF64x2UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ DoubleUnOp expected_op, bool exact) {
+ WasmRunner<int32_t, double> r(execution_tier);
// Global to hold output.
double* g = r.builder().AddGlobal<double>(kWasmS128);
// Build fn to splat test value, perform unop, and write the result.
@@ -666,9 +663,9 @@ void RunF64x2UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunF64x2BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, DoubleBinOp expected_op) {
- WasmRunner<int32_t, double, double> r(execution_tier, lower_simd);
+void RunF64x2BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ DoubleBinOp expected_op) {
+ WasmRunner<int32_t, double, double> r(execution_tier);
// Global to hold output.
double* g = r.builder().AddGlobal<double>(kWasmS128);
// Build fn to splat test value, perform binop, and write the result.
@@ -711,10 +708,9 @@ void RunF64x2BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
}
}
-void RunF64x2CompareOpTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode,
+void RunF64x2CompareOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
DoubleCompareOp expected_op) {
- WasmRunner<int32_t, double, double> r(execution_tier, lower_simd);
+ WasmRunner<int32_t, double, double> r(execution_tier);
// Set up global to hold mask output.
int64_t* g = r.builder().AddGlobal<int64_t>(kWasmS128);
// Build fn to splat test values, perform compare op, and write the result.
diff --git a/deps/v8/test/cctest/wasm/wasm-simd-utils.h b/deps/v8/test/cctest/wasm/wasm-simd-utils.h
index 157731df27..140acda05c 100644
--- a/deps/v8/test/cctest/wasm/wasm-simd-utils.h
+++ b/deps/v8/test/cctest/wasm/wasm-simd-utils.h
@@ -38,43 +38,41 @@ using DoubleUnOp = double (*)(double);
using DoubleBinOp = double (*)(double, double);
using DoubleCompareOp = int64_t (*)(double, double);
-void RunI8x16UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int8UnOp expected_op);
+void RunI8x16UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int8UnOp expected_op);
template <typename T = int8_t, typename OpType = T (*)(T, T)>
-void RunI8x16BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, OpType expected_op);
+void RunI8x16BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ OpType expected_op);
-void RunI8x16ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int8ShiftOp expected_op);
+void RunI8x16ShiftOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int8ShiftOp expected_op);
void RunI8x16MixedRelationalOpTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode,
- Int8BinOp expected_op);
+ WasmOpcode opcode, Int8BinOp expected_op);
-void RunI16x8UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int16UnOp expected_op);
+void RunI16x8UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int16UnOp expected_op);
template <typename T = int16_t, typename OpType = T (*)(T, T)>
-void RunI16x8BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, OpType expected_op);
-void RunI16x8ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int16ShiftOp expected_op);
+void RunI16x8BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ OpType expected_op);
+void RunI16x8ShiftOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int16ShiftOp expected_op);
void RunI16x8MixedRelationalOpTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode,
- Int16BinOp expected_op);
-
-void RunI32x4UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int32UnOp expected_op);
-void RunI32x4BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int32BinOp expected_op);
-void RunI32x4ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int32ShiftOp expected_op);
-
-void RunI64x2UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int64UnOp expected_op);
-void RunI64x2BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int64BinOp expected_op);
-void RunI64x2ShiftOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, Int64ShiftOp expected_op);
+ WasmOpcode opcode, Int16BinOp expected_op);
+
+void RunI32x4UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int32UnOp expected_op);
+void RunI32x4BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int32BinOp expected_op);
+void RunI32x4ShiftOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int32ShiftOp expected_op);
+
+void RunI64x2UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int64UnOp expected_op);
+void RunI64x2BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int64BinOp expected_op);
+void RunI64x2ShiftOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ Int64ShiftOp expected_op);
// Generic expected value functions.
template <typename T, typename = typename std::enable_if<
@@ -152,24 +150,20 @@ bool IsCanonical(double actual);
void CheckDoubleResult(double x, double y, double expected, double actual,
bool exact = true);
-void RunF32x4UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, FloatUnOp expected_op,
- bool exact = true);
+void RunF32x4UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ FloatUnOp expected_op, bool exact = true);
-void RunF32x4BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, FloatBinOp expected_op);
+void RunF32x4BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ FloatBinOp expected_op);
-void RunF32x4CompareOpTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode,
+void RunF32x4CompareOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
FloatCompareOp expected_op);
-void RunF64x2UnOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, DoubleUnOp expected_op,
- bool exact = true);
-void RunF64x2BinOpTest(TestExecutionTier execution_tier, LowerSimd lower_simd,
- WasmOpcode opcode, DoubleBinOp expected_op);
-void RunF64x2CompareOpTest(TestExecutionTier execution_tier,
- LowerSimd lower_simd, WasmOpcode opcode,
+void RunF64x2UnOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ DoubleUnOp expected_op, bool exact = true);
+void RunF64x2BinOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
+ DoubleBinOp expected_op);
+void RunF64x2CompareOpTest(TestExecutionTier execution_tier, WasmOpcode opcode,
DoubleCompareOp expected_op);
} // namespace wasm
diff --git a/deps/v8/test/common/wasm/wasm-interpreter.cc b/deps/v8/test/common/wasm/wasm-interpreter.cc
index 9f7217699b..cbf3e16ee4 100644
--- a/deps/v8/test/common/wasm/wasm-interpreter.cc
+++ b/deps/v8/test/common/wasm/wasm-interpreter.cc
@@ -903,7 +903,7 @@ class SideTable : public ZoneObject {
CLabel* end_label = CLabel::New(&control_transfer_zone,
target_stack_height, imm.out_arity());
CLabel* catch_label =
- CLabel::New(&control_transfer_zone, stack_height, 0);
+ CLabel::New(&control_transfer_zone, target_stack_height, 0);
control_stack.emplace_back(i.pc(), end_label, catch_label,
imm.out_arity());
exception_stack.push_back(control_stack.size() - 1);
@@ -3106,9 +3106,6 @@ class WasmInterpreterInternals {
// it to 0 here such that we report the same position as in compiled code.
frames_.back().pc = 0;
isolate_->StackOverflow();
- if (FLAG_experimental_wasm_eh) {
- possible_nondeterminism_ = true;
- }
if (HandleException(isolate_) == WasmInterpreter::HANDLED) {
ReloadFromFrameOnException(decoder, target, pc, limit);
return true;
diff --git a/deps/v8/test/common/wasm/wasm-macro-gen.h b/deps/v8/test/common/wasm/wasm-macro-gen.h
index ee51d6a0dd..87b60e40c6 100644
--- a/deps/v8/test/common/wasm/wasm-macro-gen.h
+++ b/deps/v8/test/common/wasm/wasm-macro-gen.h
@@ -519,6 +519,8 @@ inline WasmOpcode LoadStoreOpcodeOf(MachineType type, bool store) {
// conditional branches.
#define WASM_BR_ON_CAST(depth, rtt) \
rtt, WASM_GC_OP(kExprBrOnCast), static_cast<byte>(depth)
+#define WASM_BR_ON_CAST_FAIL(depth, rtt) \
+ rtt, WASM_GC_OP(kExprBrOnCastFail), static_cast<byte>(depth)
#define WASM_REF_IS_DATA(ref) ref, WASM_GC_OP(kExprRefIsData)
#define WASM_REF_AS_DATA(ref) ref, WASM_GC_OP(kExprRefAsData)
@@ -564,6 +566,9 @@ inline WasmOpcode LoadStoreOpcodeOf(MachineType type, bool store) {
#define WASM_BR_ON_NULL(depth, ref_object) \
ref_object, kExprBrOnNull, static_cast<byte>(depth)
+#define WASM_BR_ON_NON_NULL(depth, ref_object) \
+ ref_object, kExprBrOnNonNull, static_cast<byte>(depth)
+
// Pass: sig_index, ...args, func_index
#define WASM_CALL_INDIRECT(sig_index, ...) \
__VA_ARGS__, kExprCallIndirect, static_cast<byte>(sig_index), TABLE_ZERO
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-repl-mode-optimized.js b/deps/v8/test/debugger/debug/debug-evaluate-repl-mode-optimized.js
index cb06854dcf..469b54844f 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-repl-mode-optimized.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-repl-mode-optimized.js
@@ -30,3 +30,36 @@ assertEquals(21, foo());
// script context.
evaluate('x; let x;');
assertEquals(undefined, foo());
+
+// Test that a const declared variable 'y' bound by an optimized function is
+// updated properly.
+evaluate('const y = 42;');
+
+evaluate('function foo1() { return y; }');
+
+%PrepareFunctionForOptimization(foo1);
+foo1();
+foo1();
+%OptimizeFunctionOnNextCall(foo1);
+assertEquals(42, foo1());
+assertOptimized(foo1);
+
+evaluate('const y = 21');
+assertEquals(21, foo1());
+
+// Test that a const declared variable 'z' bound by an optimized function is
+// updated properly.
+evaluate('const z = {a:0};');
+
+evaluate('function foo2() { z.a = 42; }');
+
+%PrepareFunctionForOptimization(foo2);
+foo2();
+foo2();
+%OptimizeFunctionOnNextCall(foo2);
+foo2();
+assertOptimized(foo2);
+
+evaluate('const z = {a:21}');
+foo2();
+assertEquals(42, z.a);
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-repl-mode.js b/deps/v8/test/debugger/debug/debug-evaluate-repl-mode.js
index 4001033ca6..d225818c9d 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-repl-mode.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-repl-mode.js
@@ -103,42 +103,85 @@ assertDoesNotThrow(() => result = evaluate("class K {};"));
// result = evaluate("toString;");
-// Re-declare let as const
-evaluate("let z = 10;");
-assertThrows(() => result = evaluate("const z = 9;"),
- SyntaxError, "Identifier 'z' has already been declared");
-result = await evaluate("z;");
-assertEquals(10, result);
+// Declare const and get value
+result = await evaluate("const c = 7;");
+result = await evaluate("c;");
+assertEquals(7, result);
+
+// Re-declare in the same script after declaration in another script.
+assertThrows(() => evaluate("let c = 8; let c = 9;"));
+result = await evaluate("c;");
+assertEquals(7, result);
// Re-declare const as const
+result = await evaluate("const c = 8;");
+result = await evaluate("c;");
+assertEquals(8, result);
+
+// Assign to const
+assertThrowsAsync(evaluate("c = 11;"),
+ TypeError, "Assignment to constant variable.");
+result = await evaluate("c;");
+assertEquals(8, result);
+
+await evaluate("const c = 8;");
+
+// Close over const. Inner function is only pre-parsed.
+result = await evaluate("function getter() { return c; }");
+assertEquals(undefined, result);
+result = await evaluate("getter();");
+assertEquals(8, result);
+// Modifies the original c; does not create a new one/shadow.
result = await evaluate("const c = 10;");
-assertThrows(() => result = evaluate("const c = 11;"),
- SyntaxError, "Identifier 'c' has already been declared");
+assertEquals(undefined, result);
+result = await evaluate("c;");
+assertEquals(10, result);
+result = await evaluate("getter();");
+assertEquals(10, result);
+
+await evaluate("const c = 10");
+
+// Check store from an inner scope throws error.
+assertThrowsAsync(evaluate("{ let z; c = 11; };"),
+ TypeError, "Assignment to constant variable.");
result = await evaluate("c;");
assertEquals(10, result);
+// Check re-declare from an inner scope does nothing.
+result = await evaluate("{ let z; const c = 12; } c;");
+assertEquals(10, result);
+
+assertThrowsAsync(evaluate("{ const qq = 10; } qq;"),
+ ReferenceError, "qq is not defined");
+
// Const vs. const in same script.
assertThrows(() => result = evaluate("const d = 9; const d = 10;"),
SyntaxError, "Identifier 'd' has already been declared");
-// Close over const
-result = await evaluate("const e = 10; function closure() { return e; }");
-result = await evaluate("e;");
-assertEquals(10, result);
+// Check TDZ; const use before initialization.
+assertThrowsAsync(evaluate("e; const e = 7;"), ReferenceError);
+assertThrowsAsync(evaluate("e;"), ReferenceError);
-// Assign to const
-assertThrowsAsync(evaluate("e = 11;"),
- TypeError, "Assignment to constant variable.");
-result = await evaluate("e;");
-assertEquals(10, result);
-result = await evaluate("closure();");
-assertEquals(10, result);
+result = await evaluate("const e = 8;");
+assertEquals(undefined, result);
+result = await evaluate("e;")
+assertEquals(8, result);
-// Assign to const in TDZ
-assertThrowsAsync(evaluate("f; const f = 11;"),
- ReferenceError, "Cannot access 'f' before initialization");
-assertThrowsAsync(evaluate("f = 12;"),
- TypeError, "Assignment to constant variable.");
+// f is marked as constant in TDZ
+assertThrowsAsync(evaluate("f = 10; const f = 7;"),
+ TypeError, ("Assignment to constant variable."));
+result = await evaluate("const f = 11;");
+assertEquals(undefined, result);
+// We fixed 'f'!
+result = await evaluate("f;");
+assertEquals(11, result);
+
+// Re-declare let as const
+evaluate("let z = 10;");
+assertThrows(() => result = evaluate("const z = 9;"),
+ SyntaxError, "Identifier 'z' has already been declared");
+result = await evaluate("z;");
+assertEquals(10, result)
// Re-declare const as let
result = await evaluate("const g = 12;");
@@ -246,6 +289,53 @@ assertEquals(2, result);
result = await evaluate("typeof k11");
assertEquals("undefined", result);
+// Non-configurable properties of the global object (also created by plain old
+// top-level var declarations) cannot be re-declared as const.
+result = await evaluate(`Object.defineProperty(globalThis, 'k12', {
+ value: 1,
+ configurable: false
+});`);
+result = await evaluate("k12;");
+assertEquals(1, result);
+assertThrows(() => result = evaluate("const k12 = 2;"),
+ SyntaxError, "Identifier 'k12' has already been declared");
+result = await evaluate("k12;");
+assertEquals(1, result);
+
+// ... Except if you do it in the same script.
+result = await evaluate(`Object.defineProperty(globalThis, 'k13', {
+ value: 1,
+ configurable: false
+});
+const k13 = 2;`);
+result = await evaluate("k13;");
+assertEquals(2, result);
+result = await evaluate("globalThis.k13;");
+assertEquals(1, result);
+
+// But if the property is configurable then both versions are allowed.
+result = await evaluate(`Object.defineProperty(globalThis, 'k14', {
+ value: 1,
+ configurable: true
+});`);
+result = await evaluate("k14;");
+assertEquals(1, result);
+result = await evaluate("const k14 = 2;");
+result = await evaluate("k14;");
+assertEquals(2, result);
+result = await evaluate("globalThis.k14;");
+assertEquals(1, result);
+
+result = await evaluate(`Object.defineProperty(globalThis, 'k15', {
+ value: 1,
+ configurable: true
+});
+const k15 = 2;`);
+result = await evaluate("k15;");
+assertEquals(2, result);
+result = await evaluate("globalThis.k15;");
+assertEquals(1, result);
+
// Test lets with names on the object prototype e.g. toString to make sure
// it only works for own properties.
// result = evaluate("let valueOf;");
@@ -307,6 +397,18 @@ evaluate("let l10 = 42; function fn2() { return l10; }");
evaluate("let l10 = 'foo';");
assertEquals("foo", fn2());
+// Check that binding and re-declaring a function via const works.
+result = evaluate("const fn3 = function() { return 21; }");
+assertEquals(21, fn3());
+result = evaluate("const fn3 = function() { return 42; }");
+assertEquals(42, fn3());
+
+// Check that lazily parsed functions that bind a REPL-const variable work.
+evaluate("const l11 = 21;");
+evaluate("const l11 = 42; function fn4() { return l11; }");
+evaluate("const l11 = 'foo1';");
+assertEquals("foo1", fn4());
+
})().catch(e => {
print(e);
print(e.stack);
diff --git a/deps/v8/test/debugger/debug/debug-liveedit-check-stack.js b/deps/v8/test/debugger/debug/debug-liveedit-check-stack.js
index e2e9c6412d..2b2e8c9050 100644
--- a/deps/v8/test/debugger/debug/debug-liveedit-check-stack.js
+++ b/deps/v8/test/debugger/debug/debug-liveedit-check-stack.js
@@ -136,13 +136,6 @@ test = new TestBase("Test without function on stack");
test.ScriptChanger();
assertEquals("Capybara", test.ChooseAnimal(Noop));
-test = new TestBase("Test with function on stack");
-assertEquals("Capybara", test.ChooseAnimal(WrapInDebuggerCall(WrapInRestartProof(test.ScriptChanger))));
-
-
-test = new TestBase("Test with function on stack and with constructor frame");
-assertEquals("Capybara", test.ChooseAnimal(WrapInConstructor(WrapInDebuggerCall(WrapInRestartProof(test.ScriptChanger)))));
-
test = new TestBase("Test with C++ frame above ChooseAnimal frame");
exception_holder = {};
assertEquals("Cat", test.ChooseAnimal(WrapInNativeCall(WrapInDebuggerCall(WrapInCatcher(test.ScriptChanger, exception_holder)))));
diff --git a/deps/v8/test/debugger/debug/debug-liveedit-double-call.js b/deps/v8/test/debugger/debug/debug-liveedit-double-call.js
deleted file mode 100644
index 1de6bd3171..0000000000
--- a/deps/v8/test/debugger/debug/debug-liveedit-double-call.js
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --noalways-opt
-
-Debug = debug.Debug
-
-function TestCase(test_scenario, expected_output) {
- // Global variable, accessed from eval'd script.
- test_output = "";
-
- var script_text_generator = (function() {
- var variables = { a: 1, b: 1, c: 1, d: 1, e: 1, f: 1 };
-
- return {
- get: function() {
- return "(function() {\n " +
- " function A() {\n " +
- " test_output += 'a' + " + variables.a + ";\n " +
- " test_output += '=';\n " +
- " debugger;\n " +
- " return 'Capybara';\n " +
- " }\n " +
- " function B(p1, p2) {\n " +
- " test_output += 'b' + " + variables.b + ";\n " +
- " return A();\n " +
- " }\n " +
- " function C() {\n " +
- " test_output += 'c' + " + variables.c + ";\n " +
- " // Function call with argument adaptor is intentional.\n " +
- " return B();\n " +
- " }\n " +
- " function D() {\n " +
- " test_output += 'd' + " + variables.d + ";\n " +
- " // Function call with argument adaptor is intentional.\n " +
- " return C(1, 2);\n " +
- " }\n " +
- " function E() {\n " +
- " test_output += 'e' + " + variables.e + ";\n " +
- " return D();\n " +
- " }\n " +
- " function F() {\n " +
- " test_output += 'f' + " + variables.f + ";\n " +
- " return E();\n " +
- " }\n " +
- " return F();\n " +
- "})\n";
- },
- change: function(var_name) {
- variables[var_name]++;
- }
- };
- })();
-
- var test_fun = eval(script_text_generator.get());
-
- var scenario_pos = 0;
-
- function DebuggerStatementHandler() {
- while (true) {
- assertTrue(scenario_pos < test_scenario.length);
- var change_var = test_scenario[scenario_pos++];
- if (change_var == '=') {
- // Continue.
- return;
- }
- script_text_generator.change(change_var);
- try {
- %LiveEditPatchScript(test_fun, script_text_generator.get())
- } catch (e) {
- print("LiveEdit exception: " + e);
- throw e;
- }
- }
- }
-
- var saved_exception = null;
-
- function listener(event, exec_state, event_data, data) {
- if (event == Debug.DebugEvent.Break) {
- try {
- DebuggerStatementHandler();
- } catch (e) {
- saved_exception = e;
- }
- } else {
- print("Other: " + event);
- }
- }
-
- Debug.setListener(listener);
- assertEquals("Capybara", test_fun());
- Debug.setListener(null);
-
- if (saved_exception) {
- print("Exception: " + saved_exception);
- assertUnreachable();
- }
-
- print(test_output);
-
- assertEquals(expected_output, test_output);
-}
-
-TestCase(['='], "f1e1d1c1b1a1=");
-
-TestCase(['c', '=', '='], "f1e1d1c1b1a1=c2b1a1=");
-
-TestCase(['b', 'c', 'd', 'e', '=', '='], "f1e1d1c1b1a1=e2d2c2b2a1=");
-
-TestCase(['b', 'c', '=', 'b', 'c', 'd', 'e', '=', '='], "f1e1d1c1b1a1=c2b2a1=e2d2c3b3a1=");
-
-TestCase(['e', 'f', '=', '='], "f1e1d1c1b1a1=f2e2d1c1b1a1=");
diff --git a/deps/v8/test/debugger/debug/debug-liveedit-exceptions.js b/deps/v8/test/debugger/debug/debug-liveedit-exceptions.js
deleted file mode 100644
index 091f1af0dd..0000000000
--- a/deps/v8/test/debugger/debug/debug-liveedit-exceptions.js
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2016 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.
-
-// Flags: --allow-natives-syntax
-
-Debug = debug.Debug
-function BestEditor() {
- throw 'Emacs';
-}
-
-var exception = null;
-var results = [];
-var log = []
-
-function listener(event, exec_state, event_data, data) {
- if (event != Debug.DebugEvent.Exception) return;
- try {
- var source_line = event_data.sourceLineText();
- print(source_line);
- log.push(source_line);
- switch (results.length) {
- case 0:
- Replace(BestEditor, "Emacs", "Eclipse");
- break;
- case 1:
- Replace(BestEditor, "Eclipse", "Vim");
- break;
- case 2:
- break;
- default:
- assertUnreachable();
- }
- } catch (e) {
- exception = e;
- }
-};
-
-function Replace(fun, original, patch) {
- if (fun.toString().indexOf(original) < 0) return;
- %LiveEditPatchScript(fun, Debug.scriptSource(fun).replace(original, patch));
-}
-
-Debug.setListener(listener);
-Debug.setBreakOnException();
-
-for (var i = 0; i < 3; i++) {
- try {
- BestEditor();
- } catch (e) {
- results.push(e);
- }
-}
-Debug.setListener(null);
-
-assertNull(exception);
-assertEquals(["Emacs", "Eclipse", "Vim"], results);
-print(JSON.stringify(log, 1));
-assertEquals([
- " throw 'Emacs';",
- " throw 'Eclipse';",
- " throw 'Vim';",
-], log);
diff --git a/deps/v8/test/debugger/debug/debug-liveedit-recursion.js b/deps/v8/test/debugger/debug/debug-liveedit-recursion.js
index 6328a9b6de..7b12332f96 100644
--- a/deps/v8/test/debugger/debug/debug-liveedit-recursion.js
+++ b/deps/v8/test/debugger/debug/debug-liveedit-recursion.js
@@ -21,11 +21,13 @@ let patch = null, exception = null;
Debug.setListener(listener);
patch = ['return 5', 'return 3'];
-assertEquals(3, test(2)); // no running generator
+assertEquals(5, test(2)); // generator on stack
+assertEquals(exception,
+ 'LiveEdit failed: BLOCKED_BY_ACTIVE_FUNCTION');
patch = ['return 3', 'return -1'];
-assertEquals(3, test(3)); // there is running generator
+assertEquals(5, test(5)); // there is running generator
assertEquals(exception,
- 'LiveEdit failed: BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME');
+ 'LiveEdit failed: BLOCKED_BY_ACTIVE_FUNCTION');
Debug.setListener(null);
function listener(event) {
diff --git a/deps/v8/test/debugger/debug/debug-liveedit-replace-code.js b/deps/v8/test/debugger/debug/debug-liveedit-replace-code.js
deleted file mode 100644
index c517c67a43..0000000000
--- a/deps/v8/test/debugger/debug/debug-liveedit-replace-code.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2017 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.
-
-// Flags: --allow-natives-syntax
-
-Debug = debug.Debug
-var counter = 0;
-var exception = null;
-function f() {
- if (++counter > 5) return;
- debugger;
- return counter;
-};
-
-function listener(event, exec_state, event_data, data) {
- if (event != Debug.DebugEvent.Break) return;
- try {
- var original = 'debugger;';
- var patch = 'debugger;\n';
- %LiveEditPatchScript(f, Debug.scriptSource(f).replace(original, patch));
- } catch (e) {
- exception = e;
- }
-}
-
-Debug.setListener(listener);
-f();
-Debug.setListener(null);
-assertNull(exception);
-assertEquals(6, counter);
diff --git a/deps/v8/test/debugger/debug/debug-liveedit-restart-frame.js b/deps/v8/test/debugger/debug/debug-liveedit-restart-frame.js
deleted file mode 100644
index 659e3c74e6..0000000000
--- a/deps/v8/test/debugger/debug/debug-liveedit-restart-frame.js
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Flags: --noanalyze-environment-liveness
-
-
-Debug = debug.Debug
-
-function FindCallFrame(exec_state, frame_code) {
- var number = Number(frame_code);
- if (number >= 0) {
- return exec_state.frame(number);
- } else {
- for (var i = 0; i < exec_state.frameCount(); i++) {
- var frame = exec_state.frame(i);
- var func_mirror = frame.func();
- if (frame_code == func_mirror.name()) {
- return frame;
- }
- }
- }
- throw new Error("Failed to find function name " + function_name);
-}
-
-function TestCase(test_scenario, expected_output) {
- // Global variable, accessed from eval'd script.
- test_output = "";
-
- function TestCode() {
- function A() {
- // Extra stack variable. To make function not slim.
- // Restarter doesn't work on slim function when stopped on 'debugger'
- // statement. (There is no padding for 'debugger' statement).
- var o = {};
- test_output += 'A';
- test_output += '=';
- debugger;
- return 'Capybara';
- }
- function B(p1, p2) {
- test_output += 'B';
- return A();
- }
- function C() {
- test_output += 'C';
- // Function call with argument adaptor is intentional.
- return B();
- }
- function D() {
- test_output += 'D';
- // Function call with argument adaptor is intentional.
- return C(1, 2);
- }
- function E() {
- test_output += 'E';
- return D();
- }
- function F() {
- test_output += 'F';
- return E();
- }
- return F();
- }
-
- var scenario_pos = 0;
-
- function DebuggerStatementHandler(exec_state) {
- while (true) {
- assertTrue(scenario_pos < test_scenario.length);
- var change_code = test_scenario[scenario_pos++];
- if (change_code == '=') {
- // Continue.
- return;
- }
- var frame = FindCallFrame(exec_state, change_code);
- var error = frame.restart();
- if (typeof error === 'string')
- throw new Error(error);
- }
- }
-
- var saved_exception = null;
-
- function listener(event, exec_state, event_data, data) {
- if (saved_exception != null) {
- return;
- }
- if (event == Debug.DebugEvent.Break) {
- try {
- DebuggerStatementHandler(exec_state);
- } catch (e) {
- saved_exception = e;
- }
- } else {
- print("Other: " + event);
- }
- }
-
- Debug.setListener(listener);
- assertEquals("Capybara", TestCode());
- Debug.setListener(null);
-
- if (saved_exception) {
- print("Exception: " + saved_exception);
- print("Stack: " + saved_exception.stack);
- assertUnreachable();
- }
-
- print(test_output);
-
- assertEquals(expected_output, test_output);
-}
-
-TestCase('0==', "FEDCBA=A=");
-TestCase('1==', "FEDCBA=BA=");
-TestCase('2==', "FEDCBA=CBA=");
-TestCase('3==', "FEDCBA=DCBA=");
-TestCase('4==', "FEDCBA=EDCBA=");
-TestCase('5==', "FEDCBA=FEDCBA=");
-
-TestCase('=', "FEDCBA=");
-
-TestCase('C==', "FEDCBA=CBA=");
-
-TestCase('B=C=A=D==', "FEDCBA=BA=CBA=A=DCBA=");
-
-// Successive restarts don't work now and require additional fix.
-//TestCase('BCDE==', "FEDCBA=EDCBA=");
-//TestCase('BC=BCDE==', "FEDCBA=CBA=EDCBA=");
-//TestCase('EF==', "FEDCBA=FEDCBA=");
diff --git a/deps/v8/test/debugger/debug/debug-liveedit-stepin.js b/deps/v8/test/debugger/debug/debug-liveedit-stepin.js
deleted file mode 100644
index 10264ddd5b..0000000000
--- a/deps/v8/test/debugger/debug/debug-liveedit-stepin.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2015 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.
-
-// Flags: --allow-natives-syntax
-
-Debug = debug.Debug
-function BestEditor() {
- return 'Emacs';
-}
-
-var exception = null;
-var results = [];
-var log = []
-
-function listener(event, exec_state, event_data, data) {
- if (event != Debug.DebugEvent.Break) return;
- try {
- var source_line = event_data.sourceLineText();
- log.push(source_line);
- if (source_line.indexOf("return") >= 0) {
- switch (results.length) {
- case 0:
- break;
- case 1:
- Replace(BestEditor, "Emacs", "Eclipse");
- break;
- case 2:
- Replace(BestEditor, "Eclipse", "Vim");
- break;
- default:
- assertUnreachable();
- }
- }
- exec_state.prepareStep(Debug.StepAction.StepIn);
- } catch (e) {
- exception = e;
- }
-};
-
-function Replace(fun, original, patch) {
- if (fun.toString().indexOf(original) < 0) return;
- %LiveEditPatchScript(fun, Debug.scriptSource(fun).replace(original, patch));
-}
-
-Debug.setListener(listener);
-
-debugger;
-results.push(BestEditor());
-results.push(BestEditor());
-results.push(BestEditor());
-Debug.setListener(null);
-
-assertNull(exception);
-assertEquals(["Emacs", "Eclipse", "Vim"], results);
-assertEquals([
- "debugger;",
- "results.push(BestEditor());",
- " return 'Emacs';",
- " return 'Emacs';",
- "results.push(BestEditor());",
- "results.push(BestEditor());",
- " return 'Emacs';",
- " return 'Eclipse';",
- " return 'Eclipse';",
- "results.push(BestEditor());",
- "results.push(BestEditor());",
- " return 'Eclipse';",
- " return 'Vim';",
- " return 'Vim';",
- "results.push(BestEditor());",
- "Debug.setListener(null);"
-], log);
diff --git a/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-1.js b/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-1.js
index ea8765c0da..65b81e273d 100644
--- a/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-1.js
+++ b/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-1.js
@@ -46,7 +46,7 @@ function Replace(fun, original, patch) {
try {
%LiveEditPatchScript(fun, Debug.scriptSource(fun).replace(original, patch));
} catch (e) {
- assertEquals(e, 'LiveEdit failed: BLOCKED_BY_NEW_TARGET_IN_RESTART_FRAME');
+ assertEquals(e, 'LiveEdit failed: BLOCKED_BY_ACTIVE_FUNCTION');
exceptions++;
}
});
diff --git a/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-2.js b/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-2.js
index 63b5fac976..76311ae706 100644
--- a/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-2.js
+++ b/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-2.js
@@ -43,7 +43,7 @@ function Replace(fun, original, patch) {
try {
%LiveEditPatchScript(fun, Debug.scriptSource(fun).replace(original, patch));
} catch (e) {
- assertEquals(e, 'LiveEdit failed: BLOCKED_BY_NEW_TARGET_IN_RESTART_FRAME');
+ assertEquals(e, 'LiveEdit failed: BLOCKED_BY_ACTIVE_FUNCTION');
exceptions++;
}
});
diff --git a/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-3.js b/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-3.js
index c60729016a..3e5c991fa7 100644
--- a/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-3.js
+++ b/deps/v8/test/debugger/debug/es6/debug-liveedit-new-target-3.js
@@ -83,6 +83,6 @@ assertEquals([LogNewTarget, LogNewTarget], results);
replace_again = true;
Wrapper();
assertEquals(3, construct_calls);
-assertEquals(4, wrapper_calls); // Restarts
-assertEquals(0, exceptions); // Replace succeeds
+assertEquals(3, wrapper_calls);
+assertEquals(1, exceptions); // Replace failed
assertEquals([LogNewTarget, LogNewTarget, LogNewTarget], results);
diff --git a/deps/v8/test/debugger/debug/es6/generators-debug-liveedit.js b/deps/v8/test/debugger/debug/es6/generators-debug-liveedit.js
deleted file mode 100644
index 2627c8d740..0000000000
--- a/deps/v8/test/debugger/debug/es6/generators-debug-liveedit.js
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2014 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.
-
-// Flags: --allow-natives-syntax
-var Debug = debug.Debug;
-
-unique_id = 0;
-
-var Generator = (function*(){}).constructor;
-
-function assertIteratorResult(value, done, result) {
- assertEquals({value: value, done: done}, result);
-}
-
-function MakeGenerator() {
- // Prevents eval script caching.
- unique_id++;
- return Generator('callback',
- "/* " + unique_id + "*/\n" +
- "yield callback();\n" +
- "return 'Cat';\n");
-}
-
-function MakeFunction() {
- // Prevents eval script caching.
- unique_id++;
- return Function('callback',
- "/* " + unique_id + "*/\n" +
- "callback();\n" +
- "return 'Cat';\n");
-}
-
-// First, try MakeGenerator with no perturbations.
-(function(){
- var generator = MakeGenerator();
- function callback() {};
- var iter = generator(callback);
- assertIteratorResult(undefined, false, iter.next());
- assertIteratorResult("Cat", true, iter.next());
-})();
-
-function ExecuteInDebugContext(f) {
- var result;
- var exception = null;
- Debug.setListener(function(event) {
- if (event == Debug.DebugEvent.Break) {
- try {
- result = f();
- } catch (e) {
- // Rethrow this exception later.
- exception = e;
- }
- }
- });
- debugger;
- Debug.setListener(null);
- if (exception !== null) throw exception;
- return result;
-}
-
-function patch(fun, from, to) {
- function debug() {
- %LiveEditPatchScript(fun, Debug.scriptSource(fun).replace(from, to));
- }
- ExecuteInDebugContext(debug);
-}
-
-// Try to edit a MakeGenerator while it's running, then again while it's
-// stopped.
-(function(){
- var generator = MakeGenerator();
-
- var gen_patch_attempted = false;
- function attempt_gen_patch() {
- assertFalse(gen_patch_attempted);
- gen_patch_attempted = true;
- assertThrowsEquals(function() {
- patch(generator, '\'Cat\'', '\'Capybara\'')
- }, 'LiveEdit failed: BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME');
- };
- var iter = generator(attempt_gen_patch);
- assertIteratorResult(undefined, false, iter.next());
- // Patch should not succeed because there is a live generator activation on
- // the stack.
- assertIteratorResult("Cat", true, iter.next());
- assertTrue(gen_patch_attempted);
-
- // At this point one iterator is live, but closed, so the patch will succeed.
- patch(generator, "'Cat'", "'Capybara'");
- iter = generator(function(){});
- assertIteratorResult(undefined, false, iter.next());
- // Patch successful.
- assertIteratorResult("Capybara", true, iter.next());
-
- // Patching will fail however when a live iterator is suspended.
- iter = generator(function(){});
- assertIteratorResult(undefined, false, iter.next());
- assertThrowsEquals(function() {
- patch(generator, '\'Capybara\'', '\'Tapir\'')
- }, 'LiveEdit failed: BLOCKED_BY_RUNNING_GENERATOR');
- assertIteratorResult("Capybara", true, iter.next());
-
- // Try to patch functions with activations inside and outside generator
- // function activations. We should succeed in the former case, but not in the
- // latter.
- var fun_outside = MakeFunction();
- var fun_inside = MakeFunction();
- var fun_patch_attempted = false;
- var fun_patch_restarted = false;
- function attempt_fun_patches() {
- if (fun_patch_attempted) {
- assertFalse(fun_patch_restarted);
- fun_patch_restarted = true;
- return;
- }
- fun_patch_attempted = true;
- // Patching outside a generator activation must fail.
- assertThrowsEquals(function() {
- patch(fun_outside, '\'Cat\'', '\'Cobra\'')
- }, 'LiveEdit failed: BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME');
- // Patching inside a generator activation may succeed.
- patch(fun_inside, "'Cat'", "'Koala'");
- }
- iter = generator(function() { return fun_inside(attempt_fun_patches) });
- assertEquals('Cat',
- fun_outside(function () {
- assertIteratorResult('Koala', false, iter.next());
- assertTrue(fun_patch_restarted);
- }));
-})();
diff --git a/deps/v8/test/debugger/debug/es8/debug-async-liveedit.js b/deps/v8/test/debugger/debug/es8/debug-async-liveedit.js
deleted file mode 100644
index e85cbe3896..0000000000
--- a/deps/v8/test/debugger/debug/es8/debug-async-liveedit.js
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2016 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.
-
-// Flags: --allow-natives-syntax
-
-var Debug = debug.Debug;
-
-unique_id = 0;
-
-var AsyncFunction = (async function(){}).constructor;
-
-function assertPromiseValue(value, promise) {
- promise.then(resolve => {
- went = true;
- if (resolve !== value) {
- print(`expected ${value} found ${resolve}`);
- quit(1);
- }
- }, reject => {
- print(`rejected ${reject}`);
- quit(1);
- });
-}
-
-function MakeAsyncFunction() {
- // Prevents eval script caching.
- unique_id++;
- return AsyncFunction('callback',
- "/* " + unique_id + "*/\n" +
- "await callback();\n" +
- "return 'Cat';\n");
-}
-
-function MakeFunction() {
- // Prevents eval script caching.
- unique_id++;
- return Function('callback',
- "/* " + unique_id + "*/\n" +
- "callback();\n" +
- "return 'Cat';\n");
-}
-
-// First, try MakeGenerator with no perturbations.
-(function(){
- var asyncfn = MakeAsyncFunction();
- function callback() {};
- var promise = asyncfn(callback);
- assertPromiseValue('Cat', promise);
-})();
-
-function ExecuteInDebugContext(f) {
- var result;
- var exception = null;
- Debug.setListener(function(event) {
- if (event == Debug.DebugEvent.Break) {
- try {
- result = f();
- } catch (e) {
- // Rethrow this exception later.
- exception = e;
- }
- }
- });
- debugger;
- Debug.setListener(null);
- if (exception !== null) throw exception;
- return result;
-}
-
-function patch(fun, from, to) {
- function debug() {
- %LiveEditPatchScript(fun, Debug.scriptSource(fun).replace(from, to));
- }
- ExecuteInDebugContext(debug);
-}
-
-// Try to edit a MakeAsyncFunction while it's running, then again while it's
-// stopped.
-(function(){
- var asyncfn = MakeAsyncFunction();
-
- var patch_attempted = false;
- function attempt_patch() {
- assertFalse(patch_attempted);
- patch_attempted = true;
- assertThrowsEquals(function() {
- patch(asyncfn, '\'Cat\'', '\'Capybara\'')
- }, 'LiveEdit failed: BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME');
- };
- var promise = asyncfn(attempt_patch);
- // Patch should not succeed because there is a live async function activation
- // on the stack.
- assertPromiseValue("Cat", promise);
- assertTrue(patch_attempted);
-
- %PerformMicrotaskCheckpoint();
-
- // At this point one iterator is live, but closed, so the patch will succeed.
- patch(asyncfn, "'Cat'", "'Capybara'");
- promise = asyncfn(function(){});
- // Patch successful.
- assertPromiseValue("Capybara", promise);
-
- // Patching will fail however when an async function is suspended.
- var resolve;
- promise = asyncfn(function(){return new Promise(function(r){resolve = r})});
- assertThrowsEquals(function() {
- patch(asyncfn, '\'Capybara\'', '\'Tapir\'')
- }, 'LiveEdit failed: BLOCKED_BY_RUNNING_GENERATOR');
- resolve();
- assertPromiseValue("Capybara", promise);
-
- // Try to patch functions with activations inside and outside async
- // function activations. We should succeed in the former case, but not in the
- // latter.
- var fun_outside = eval('((callback) => { callback(); return \'Cat\';})');
- var fun_inside = MakeFunction();
- var fun_patch_attempted = false;
- var fun_patch_restarted = false;
- function attempt_fun_patches() {
- if (fun_patch_attempted) {
- assertFalse(fun_patch_restarted);
- fun_patch_restarted = true;
- return;
- }
- fun_patch_attempted = true;
- // Patching outside an async function activation must fail.
- assertThrowsEquals(function() {
- patch(fun_outside, '\'Cat\'', '\'Cobra\'')
- }, 'LiveEdit failed: BLOCKED_BY_FUNCTION_BELOW_NON_DROPPABLE_FRAME');
- // Patching inside an async function activation may succeed.
- patch(fun_inside, "'Cat'", "'Koala'");
- }
- result = fun_outside(() => asyncfn(function() {
- return fun_inside(attempt_fun_patches);
- }));
- assertEquals('Cat',
- fun_outside(function () {
- assertEquals(result, 'Cat');
- assertTrue(fun_patch_restarted);
- assertTrue(fun_inside.toString().includes("'Koala'"));
- }));
-})();
-
-%PerformMicrotaskCheckpoint();
diff --git a/deps/v8/test/debugger/debug/wasm/breakpoints.js b/deps/v8/test/debugger/debug/wasm/breakpoints.js
index 80d474fb87..58d1ab365b 100644
--- a/deps/v8/test/debugger/debug/wasm/breakpoints.js
+++ b/deps/v8/test/debugger/debug/wasm/breakpoints.js
@@ -34,10 +34,10 @@ const a_add_offset = body_a.indexOf(kExprI32Add);
const b_sub_offset = body_b.indexOf(kExprI32Sub);
const expected_breaks = [
- `a:1:${fun_a.body_offset + a_add_offset}`, // break in a at i32.add
- `b:1:${fun_b.body_offset + b_sub_offset}`, // break in b at i32.sub
- `a:1:${fun_a.body_offset + a_localget_offset}`, // break in a at local.get i0
- `a:1:${fun_a.body_offset + a_const_offset}` // break in a at i32.const 1
+ `$a:1:${fun_a.body_offset + a_add_offset}`, // break in a at i32.add
+ `$b:1:${fun_b.body_offset + b_sub_offset}`, // break in b at i32.sub
+ `$a:1:${fun_a.body_offset + a_localget_offset}`, // break in a at local.get i0
+ `$a:1:${fun_a.body_offset + a_const_offset}` // break in a at i32.const 1
];
let error;
function onBreak(event, exec_state, data) {
@@ -53,13 +53,13 @@ function onBreak(event, exec_state, data) {
assertEquals(expected_pos, pos);
// When we stop in b, we add another breakpoint in a at offset 0 and remove
// the existing breakpoint.
- if (data.functionName() == 'b') {
+ if (data.functionName() === '$b') {
Debug.setBreakPoint(instance.exports.a, 0, a_localget_offset);
Debug.clearBreakPoint(breakpoint_a);
}
// When we stop at a at local.get, we set another breakpoint *in the same
// function*, one instruction later (at i32.const).
- if (data.functionName() == 'a' &&
+ if (data.functionName() === '$a' &&
data.sourceColumn() == fun_a.body_offset) {
Debug.setBreakPoint(instance.exports.a, 0, a_const_offset);
}
diff --git a/deps/v8/test/debugger/debug/wasm/debug-step-into-wasm.js b/deps/v8/test/debugger/debug/wasm/debug-step-into-wasm.js
index 8454c24668..8234db26c0 100644
--- a/deps/v8/test/debugger/debug/wasm/debug-step-into-wasm.js
+++ b/deps/v8/test/debugger/debug/wasm/debug-step-into-wasm.js
@@ -36,7 +36,7 @@ function listener(event, exec_state, event_data, data) {
event_data.sourceLineText().indexOf(`Line ${js_break_line}.`) > 0);
js_break_line++;
} else {
- assertTrue(event_data.functionName() == 'sub');
+ assertTrue(event_data.functionName() == '$sub');
wasm_break_count++;
}
exec_state.prepareStep(Debug.StepAction.StepIn);
diff --git a/deps/v8/test/debugger/debug/wasm/frame-inspection.js b/deps/v8/test/debugger/debug/wasm/frame-inspection.js
index 68aeeb5eac..53aaaff006 100644
--- a/deps/v8/test/debugger/debug/wasm/frame-inspection.js
+++ b/deps/v8/test/debugger/debug/wasm/frame-inspection.js
@@ -14,8 +14,8 @@ var break_count = 0;
const expected_frames = [
// func-name; wasm?; pos; line; col
['call_debugger', false], // --
- ['wasm_2', true, 56, 1, 60], // --
- ['wasm_1', true, 52, 1, 55], // --
+ ['$wasm_2', true, 56, 1, 60], // --
+ ['$wasm_1', true, 52, 1, 55], // --
['testFrameInspection', false], // --
['', false]
];
diff --git a/deps/v8/test/debugger/debug/wasm/stepping-from-js.js b/deps/v8/test/debugger/debug/wasm/stepping-from-js.js
index 4b9edabadb..85b8d8caa1 100644
--- a/deps/v8/test/debugger/debug/wasm/stepping-from-js.js
+++ b/deps/v8/test/debugger/debug/wasm/stepping-from-js.js
@@ -36,13 +36,13 @@ const expected_breaks = [
`imported:${import_line_nr + 1}:2`, // debugger;
`imported:${import_line_nr + 2}:2`, // return 7;
`imported:${import_line_nr + 2}:11`, // return 7;
- 'main:1:68', // i32.const 3
- 'main:1:70', // call 'sub'
- 'sub:1:58', // local.get i0
- 'sub:1:60', // local.get i1
- 'sub:1:62', // i32.sub
- 'sub:1:63', // end
- 'main:1:72' // end
+ '$main:1:68', // i32.const 3
+ '$main:1:70', // call 'sub'
+ '$sub:1:58', // local.get i0
+ '$sub:1:60', // local.get i1
+ '$sub:1:62', // i32.sub
+ '$sub:1:63', // end
+ '$main:1:72' // end
];
let error;
function onBreak(event, exec_state, data) {
diff --git a/deps/v8/test/debugger/debugger.status b/deps/v8/test/debugger/debugger.status
index b862b3cad2..53c49238f2 100644
--- a/deps/v8/test/debugger/debugger.status
+++ b/deps/v8/test/debugger/debugger.status
@@ -70,7 +70,6 @@
# https://crbug.com/v8/8141
'debug/debug-liveedit-1': [SKIP],
- 'debug/debug-liveedit-double-call': [SKIP],
'debug/es6/debug-liveedit-new-target-3': [SKIP],
'debug/side-effect/debug-evaluate-no-side-effect-control': [SKIP],
}], # 'gc_stress == True'
@@ -126,8 +125,6 @@
# Stack manipulations in LiveEdit is not implemented for this arch.
'debug/debug-liveedit-check-stack': [SKIP],
- 'debug/debug-liveedit-double-call': [SKIP],
- 'debug/debug-liveedit-restart-frame': [SKIP],
}], # 'arch == s390 or arch == s390x'
##############################################################################
@@ -164,4 +161,16 @@
'*': [SKIP], # only relevant for mjsunit tests.
}],
+################################################################################
+['third_party_heap', {
+ # Requires --concurrent_recompilation
+ 'debug/regress/regress-opt-after-debug-deopt': [SKIP],
+ 'debug/regress/regress-prepare-break-while-recompile': [SKIP],
+ 'regress/regress-7421': [SKIP],
+ # Requires a second isolate
+ 'debug/debug-step': [SKIP],
+ 'debug/deserialize-script-id': [SKIP],
+ 'regress/regress-crbug-507070': [SKIP],
+}], # third_party_heap
+
]
diff --git a/deps/v8/test/debugger/regress/regress-crbug-1156498.js b/deps/v8/test/debugger/regress/regress-crbug-1156498.js
new file mode 100644
index 0000000000..89c193f09d
--- /dev/null
+++ b/deps/v8/test/debugger/regress/regress-crbug-1156498.js
@@ -0,0 +1,20 @@
+// Copyright 2021 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.
+
+const Debug = debug.Debug;
+Debug.setListener(function (event, exec_state, event_data, data) {
+});
+Debug.setBreakOnException();
+
+function f(){
+ (() => {
+ var out = 42;
+ var needsOut = () => {return out}
+ var simp_class = class {
+ static var1 = unreferenced;
+ }
+ })();
+}
+
+assertThrows(f, ReferenceError);
diff --git a/deps/v8/test/debugger/test-api.js b/deps/v8/test/debugger/test-api.js
index 1b978eb157..53c80ec99a 100644
--- a/deps/v8/test/debugger/test-api.js
+++ b/deps/v8/test/debugger/test-api.js
@@ -463,7 +463,12 @@ class DebugWrapper {
"Runtime.getProperties", { objectId : objectId, ownProperties: true });
this.sendMessage(msg);
const reply = this.takeReplyChecked(msgid);
- return Object(reply.result.internalProperties[0].value.value);
+ for (const internalProperty of reply.result.internalProperties) {
+ if (internalProperty.name === '[[PrimitiveValue]]') {
+ return Object(internalProperty.value.value);
+ }
+ }
+ throw new Error('Remote object is not a value wrapper');
}
reconstructRemoteObject(obj) {
diff --git a/deps/v8/test/fuzzer/fuzzer.status b/deps/v8/test/fuzzer/fuzzer.status
index 4a8bc4d286..6e6d44f124 100644
--- a/deps/v8/test/fuzzer/fuzzer.status
+++ b/deps/v8/test/fuzzer/fuzzer.status
@@ -19,4 +19,13 @@
'*': [SKIP], # only relevant for mjsunit tests.
}],
+################################################################################
+['third_party_heap', {
+ # Requires a second isolate
+ 'inspector/empty': [SKIP],
+ 'inspector/endless-loop': [SKIP],
+ 'inspector/invalid': [SKIP],
+ 'inspector/regress-1166549': [SKIP],
+}], # third_party_heap
+
]
diff --git a/deps/v8/test/fuzzer/inspector-fuzzer.cc b/deps/v8/test/fuzzer/inspector-fuzzer.cc
index 77e2402fa8..60d074418e 100644
--- a/deps/v8/test/fuzzer/inspector-fuzzer.cc
+++ b/deps/v8/test/fuzzer/inspector-fuzzer.cc
@@ -3,8 +3,8 @@
// found in the LICENSE file.
#if !defined(_WIN32) && !defined(_WIN64)
-#include <unistd.h> // NOLINT
-#endif // !defined(_WIN32) && !defined(_WIN64)
+#include <unistd.h>
+#endif // !defined(_WIN32) && !defined(_WIN64)
#include <locale.h>
@@ -439,14 +439,14 @@ class InspectorExtension : public IsolateData::SetupGlobalTask {
static void AccessorGetter(v8::Local<v8::String> property,
const v8::PropertyCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
- isolate->ThrowException(ToV8String(isolate, "Getter is called"));
+ isolate->ThrowError("Getter is called");
}
static void AccessorSetter(v8::Local<v8::String> property,
v8::Local<v8::Value> value,
const v8::PropertyCallbackInfo<void>& info) {
v8::Isolate* isolate = info.GetIsolate();
- isolate->ThrowException(ToV8String(isolate, "Setter is called"));
+ isolate->ThrowError("Setter is called");
}
static void StoreCurrentStackTrace(
diff --git a/deps/v8/test/fuzzer/multi-return.cc b/deps/v8/test/fuzzer/multi-return.cc
index e09a7227a5..58b4510160 100644
--- a/deps/v8/test/fuzzer/multi-return.cc
+++ b/deps/v8/test/fuzzer/multi-return.cc
@@ -165,7 +165,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (param_count > Code::kMaxArguments) return 0;
size_t return_count = input.NumNonZeroBytes(param_count + 1, kNumTypes);
- if (return_count > wasm::kV8MaxWasmFunctionMultiReturns) return 0;
+ if (return_count > wasm::kV8MaxWasmFunctionReturns) return 0;
CallDescriptor* desc =
CreateRandomCallDescriptor(&zone, return_count, param_count, &input);
diff --git a/deps/v8/test/inspector/debugger/access-obsolete-frame-expected.txt b/deps/v8/test/inspector/debugger/access-obsolete-frame-expected.txt
deleted file mode 100644
index 7093d76c2e..0000000000
--- a/deps/v8/test/inspector/debugger/access-obsolete-frame-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Tests that accessing no longer valid call frames returns an error
-Paused on 'debugger;'
-resume
-restartFrame
-PASS, error message as expected
-evaluateOnFrame
-PASS, error message as expected
-setVariableValue
-PASS, error message as expected
diff --git a/deps/v8/test/inspector/debugger/access-obsolete-frame.js b/deps/v8/test/inspector/debugger/access-obsolete-frame.js
deleted file mode 100644
index 9d498e041d..0000000000
--- a/deps/v8/test/inspector/debugger/access-obsolete-frame.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2016 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.
-
-let {session, contextGroup, Protocol} = InspectorTest.start('Tests that accessing no longer valid call frames returns an error');
-
-contextGroup.addScript(`
-function testFunction()
-{
- debugger;
-}
-//# sourceURL=foo.js`);
-
-Protocol.Debugger.enable();
-
-Protocol.Debugger.oncePaused().then(handleDebuggerPausedOne);
-
-Protocol.Runtime.evaluate({ "expression": "setTimeout(testFunction, 0)" });
-
-var obsoleteTopFrameId;
-
-function handleDebuggerPausedOne(messageObject)
-{
- InspectorTest.log("Paused on 'debugger;'");
-
- var topFrame = messageObject.params.callFrames[0];
- obsoleteTopFrameId = topFrame.callFrameId;
-
- Protocol.Debugger.resume().then(callbackResume);
-}
-
-function callbackResume(response)
-{
- InspectorTest.log("resume");
- InspectorTest.log("restartFrame");
- Protocol.Debugger.restartFrame({ callFrameId: obsoleteTopFrameId }).then(callbackRestartFrame);
-}
-
-function callbackRestartFrame(response)
-{
- logErrorResponse(response);
- InspectorTest.log("evaluateOnFrame");
- Protocol.Debugger.evaluateOnCallFrame({ callFrameId: obsoleteTopFrameId, expression: "0"}).then(callbackEvaluate);
-}
-
-function callbackEvaluate(response)
-{
- logErrorResponse(response);
- InspectorTest.log("setVariableValue");
- Protocol.Debugger.setVariableValue({ callFrameId: obsoleteTopFrameId, scopeNumber: 0, variableName: "a", newValue: { value: 0 } }).then(callbackSetVariableValue);
-}
-
-function callbackSetVariableValue(response)
-{
- logErrorResponse(response);
- InspectorTest.completeTest();
-}
-
-function logErrorResponse(response)
-{
- if (response.error) {
- if (response.error.message.indexOf("Can only perform operation while paused.") !== -1) {
- InspectorTest.log("PASS, error message as expected");
- return;
- }
- }
- InspectorTest.log("FAIL, unexpected error message");
- InspectorTest.log(JSON.stringify(response));
-}
diff --git a/deps/v8/test/inspector/debugger/command-line-api-with-arrow-function-expected.txt b/deps/v8/test/inspector/debugger/command-line-api-with-arrow-function-expected.txt
new file mode 100644
index 0000000000..f81c82499d
--- /dev/null
+++ b/deps/v8/test/inspector/debugger/command-line-api-with-arrow-function-expected.txt
@@ -0,0 +1,23 @@
+Check that debug and monitor methods from Command Line API works with bound function.
+> debug foo and bar
+> call foo and bar
+paused in foo
+paused in bar
+> undebug foo and bar
+> call foo and bar
+> monitor foo and bar
+> call foo and bar
+function foo called
+function bar called
+> unmonitor foo and bar
+> call foo and bar
+> monitor and debug bar
+> call bar
+function bar called
+paused in bar
+> undebug bar
+> call bar
+function bar called
+> debug and unmonitor bar
+> call bar
+paused in bar
diff --git a/deps/v8/test/inspector/debugger/command-line-api-with-arrow-function.js b/deps/v8/test/inspector/debugger/command-line-api-with-arrow-function.js
new file mode 100644
index 0000000000..86e42f4c95
--- /dev/null
+++ b/deps/v8/test/inspector/debugger/command-line-api-with-arrow-function.js
@@ -0,0 +1,67 @@
+// Copyright 2016 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.
+
+let {session, contextGroup, Protocol} = InspectorTest.start(
+ 'Check that debug and monitor methods from Command Line API works with bound function.');
+
+contextGroup.addScript(`
+function foo() {}
+function boo() {}
+var bar = () => boo();
+
+function testFunction() {
+ console.log("> debug foo and bar");
+ debug(foo);
+ debug(bar);
+ console.log("> call foo and bar");
+ foo();
+ bar();
+ console.log("> undebug foo and bar");
+ undebug(foo);
+ undebug(bar);
+ console.log("> call foo and bar");
+ foo();
+ bar();
+
+ console.log("> monitor foo and bar");
+ monitor(foo);
+ monitor(bar);
+ console.log("> call foo and bar");
+ foo();
+ bar();
+ console.log("> unmonitor foo and bar");
+ unmonitor(foo);
+ unmonitor(bar);
+ console.log("> call foo and bar");
+ foo();
+ bar();
+
+ console.log("> monitor and debug bar");
+ monitor(bar);
+ debug(bar);
+ console.log("> call bar");
+ bar();
+ console.log("> undebug bar");
+ undebug(bar);
+ console.log("> call bar");
+ bar();
+ console.log("> debug and unmonitor bar");
+ debug(bar);
+ unmonitor(bar);
+ console.log("> call bar");
+ bar();
+}`);
+
+Protocol.Runtime.enable();
+Protocol.Debugger.enable();
+Protocol.Debugger.onPaused(message => {
+ var functionName = message.params.callFrames[0].functionName;
+ InspectorTest.log(`paused in ${functionName}`);
+ Protocol.Debugger.resume();
+});
+Protocol.Runtime.onConsoleAPICalled(
+ message => InspectorTest.log(message.params.args[0].value));
+Protocol.Runtime
+ .evaluate({expression: 'testFunction()', includeCommandLineAPI: true})
+ .then(InspectorTest.completeTest);
diff --git a/deps/v8/test/inspector/debugger/get-properties-paused-expected.txt b/deps/v8/test/inspector/debugger/get-properties-paused-expected.txt
index a993c829f1..1fea7a5549 100644
--- a/deps/v8/test/inspector/debugger/get-properties-paused-expected.txt
+++ b/deps/v8/test/inspector/debugger/get-properties-paused-expected.txt
@@ -1,10 +1,10 @@
Checks Runtime.getProperties method while debugger is paused.
Running test: testObject5
- __proto__ own object undefined
foo own string cat
Internal properties
[[PrimitiveValue]] number 5
+ [[Prototype]] object undefined
Running test: testNotOwn
__defineGetter__ inherited function undefined
@@ -23,6 +23,8 @@ Running test: testNotOwn
toLocaleString inherited function undefined
toString inherited function undefined
valueOf inherited function undefined
+Internal properties
+ [[Prototype]] object undefined
Running test: testAccessorsOnly
b own no value, getter, setter
@@ -32,31 +34,34 @@ Running test: testArray
0 own string red
1 own string green
2 own string blue
- __proto__ own object undefined
length own number 3
+Internal properties
+ [[Prototype]] object undefined
Running test: testBound
- __proto__ own function undefined
length own number 0
name own string bound Number
Internal properties
[[BoundArgs]] object undefined
[[BoundThis]] object undefined
+ [[Prototype]] function undefined
[[TargetFunction]] function undefined
Running test: testObjectThrowsLength
- __proto__ own object undefined
length own no value, getter
+Internal properties
+ [[Prototype]] object undefined
Running test: testTypedArrayWithoutLength
- __proto__ own object undefined
+Internal properties
+ [[Prototype]] object undefined
Running test: testArrayBuffer
Running test: testArrayBufferWithBrokenUintCtor
- __proto__ own object undefined
Internal properties
[[ArrayBufferByteLength]] number 7
[[ArrayBufferData]] string 0x...
[[Int8Array]] object undefined
+ [[Prototype]] object undefined
[[Uint8Array]] object undefined
diff --git a/deps/v8/test/inspector/debugger/get-properties-paused.js b/deps/v8/test/inspector/debugger/get-properties-paused.js
index c750df0f13..d76429db7f 100644
--- a/deps/v8/test/inspector/debugger/get-properties-paused.js
+++ b/deps/v8/test/inspector/debugger/get-properties-paused.js
@@ -42,8 +42,6 @@ let { Protocol } = InspectorTest.start('Checks Runtime.getProperties method whil
let objectId = await evaluateToObjectId('new Uint8Array([1, 1, 1, 1, 1, 1, 1, 1]).buffer');
let props = await Protocol.Runtime.getProperties({ objectId, ownProperties: true });
for (let prop of props.result.result) {
- if (prop.name === '__proto__')
- continue;
InspectorTest.log(prop.name);
await logGetPropertiesResult(prop.value.objectId);
}
diff --git a/deps/v8/test/inspector/debugger/restart-frame-expected.txt b/deps/v8/test/inspector/debugger/restart-frame-expected.txt
index 3f6efb8e62..1a894a70ad 100644
--- a/deps/v8/test/inspector/debugger/restart-frame-expected.txt
+++ b/deps/v8/test/inspector/debugger/restart-frame-expected.txt
@@ -1,10 +1,12 @@
-Checks that Debugger.restartFrame works
+Checks that Debugger.restartFrame returns an error
Paused at debugger:
function foo() { #debugger; }; foo();
-Call restart and dump location of restart:
-function foo() { debugger; }; #foo();
-
-Location after restart:
-function foo() { #debugger; }; foo();
-
+restartFrame result:
+{
+ error : {
+ code : -32000
+ message : Frame restarting not supported
+ }
+ id : <messageId>
+}
diff --git a/deps/v8/test/inspector/debugger/restart-frame.js b/deps/v8/test/inspector/debugger/restart-frame.js
index 480ab492fc..ecb6761577 100644
--- a/deps/v8/test/inspector/debugger/restart-frame.js
+++ b/deps/v8/test/inspector/debugger/restart-frame.js
@@ -3,7 +3,7 @@
// found in the LICENSE file.
const {session, Protocol} =
- InspectorTest.start('Checks that Debugger.restartFrame works');
+ InspectorTest.start('Checks that Debugger.restartFrame returns an error');
session.setupScriptMap();
@@ -16,18 +16,9 @@ session.setupScriptMap();
const { params: { callFrames: before } } =
await Protocol.Debugger.oncePaused();
await session.logSourceLocation(before[0].location);
- InspectorTest.log('Call restart and dump location of restart:');
- const { result: { callFrames: restart }} =
- await Protocol.Debugger.restartFrame({
- callFrameId: before[0].callFrameId
- });
- await session.logSourceLocation(restart[0].location);
- InspectorTest.log('Location after restart:');
- Protocol.Debugger.resume();
- const { params: { callFrames: after } } =
- await Protocol.Debugger.oncePaused();
- await session.logSourceLocation(after[0].location);
- Protocol.Debugger.resume();
- await evalPromise;
+ const result = await Protocol.Debugger.restartFrame({ callFrameId: before[0].callFrameId });
+ InspectorTest.log('restartFrame result:');
+ InspectorTest.logMessage(result);
+ await Promise.all([Protocol.Debugger.resume(), evalPromise]);
InspectorTest.completeTest();
})()
diff --git a/deps/v8/test/inspector/debugger/set-script-source-2-expected.txt b/deps/v8/test/inspector/debugger/set-script-source-2-expected.txt
deleted file mode 100644
index 26d450d020..0000000000
--- a/deps/v8/test/inspector/debugger/set-script-source-2-expected.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Tests Debugger.setScriptSource
-
-Running test: addLineAfter
-var x = a;
-#debugger;
-return x + b;
-
----
-Break location after LiveEdit:
-var x = a;
-#debugger;
-var x = 3;
-
-stackChanged: true
-Protocol.Debugger.stepInto
-function foo(a,b,c) {
-var x = #a;
-debugger;
-
-
-Running test: addLineBefore
-var x = a;
-#debugger;
-return x + b;
-
----
-Break location after LiveEdit:
-var x = a;
-#var x = 3;
-debugger;
-
-stackChanged: true
-Protocol.Debugger.stepInto
-function foo(a,b,c) {
-var x = #a;
-var x = 3;
-
-
-Running test: breakAtFirstLineAddLineAfter
-function boo() {
-#debugger;
-var x = 1;
-
----
-Break location after LiveEdit:
-function boo() {
-#debugger;
-var x = 3;
-
-stackChanged: true
-Protocol.Debugger.stepInto
-function boo() {
-#debugger;
-var x = 3;
-
-
-Running test: breakAtFirstLineAddLineBefore
-function boo() {
-#debugger;
-var x = 1;
-
----
-Break location after LiveEdit:
-function boo() {
-#var x = 3;
-debugger;
-
-stackChanged: true
-Protocol.Debugger.stepInto
-function boo() {
-var x = #3;
-debugger;
-
diff --git a/deps/v8/test/inspector/debugger/set-script-source-2.js b/deps/v8/test/inspector/debugger/set-script-source-2.js
deleted file mode 100644
index 335bc47644..0000000000
--- a/deps/v8/test/inspector/debugger/set-script-source-2.js
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2017 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.
-
-// Flags: --no-always-opt
-
-let {session, contextGroup, Protocol} =
- InspectorTest.start('Tests Debugger.setScriptSource');
-
-session.setupScriptMap();
-
-function foo(a,b,c) {
-var x = a;
-debugger;
-return x + b;
-}
-
-function boo() {
-debugger;
-var x = 1;
-return x + 2;
-}
-
-InspectorTest.runAsyncTestSuite([
- async function addLineAfter() {
- await Protocol.Debugger.enable();
- Protocol.Runtime.evaluate({expression: foo.toString()});
- let {params:{scriptId}} = await Protocol.Debugger.onceScriptParsed();
- Protocol.Runtime.evaluate({
- expression: 'setTimeout(() => foo(1,2,3), 0)//# sourceURL=test.js'});
- let {params:{callFrames}} = await Protocol.Debugger.oncePaused();
- await session.logSourceLocation(callFrames[0].location);
- await replaceInSource(scriptId, 'debugger;', 'debugger;\nvar x = 3;');
-
- Protocol.Debugger.resume();
- await Protocol.Debugger.oncePaused();
- await Protocol.Debugger.disable();
- },
-
- async function addLineBefore() {
- await Protocol.Debugger.enable();
- Protocol.Runtime.evaluate({expression: foo.toString()});
- let {params:{scriptId}} = await Protocol.Debugger.onceScriptParsed();
- Protocol.Runtime.evaluate({
- expression: 'setTimeout(foo, 0)//# sourceURL=test.js'});
- let {params:{callFrames}} = await Protocol.Debugger.oncePaused();
- await session.logSourceLocation(callFrames[0].location);
- await replaceInSource(scriptId, 'debugger;', 'var x = 3;\ndebugger;');
-
- Protocol.Debugger.resume();
- await Protocol.Debugger.oncePaused();
- await Protocol.Debugger.disable();
- },
-
- async function breakAtFirstLineAddLineAfter() {
- await Protocol.Debugger.enable();
- Protocol.Runtime.evaluate({expression: boo.toString()});
- let {params:{scriptId}} = await Protocol.Debugger.onceScriptParsed();
- Protocol.Runtime.evaluate({
- expression: 'setTimeout(boo, 0)//# sourceURL=test.js'});
- let {params:{callFrames}} = await Protocol.Debugger.oncePaused();
- await session.logSourceLocation(callFrames[0].location);
- await replaceInSource(scriptId, 'debugger;', 'debugger;\nvar x = 3;');
-
- await Protocol.Debugger.disable();
- },
-
- async function breakAtFirstLineAddLineBefore() {
- await Protocol.Debugger.enable();
- Protocol.Runtime.evaluate({expression: boo.toString()});
- let {params:{scriptId}} = await Protocol.Debugger.onceScriptParsed();
- Protocol.Runtime.evaluate({
- expression: 'setTimeout(boo, 0)//# sourceURL=test.js'});
- let {params:{callFrames}} = await Protocol.Debugger.oncePaused();
- await session.logSourceLocation(callFrames[0].location);
- await replaceInSource(scriptId, 'debugger;', 'var x = 3;\ndebugger;');
-
- await Protocol.Debugger.disable();
- }
-]);
-
-async function replaceInSource(scriptId, oldString, newString) {
- InspectorTest.log('---');
- let {result:{scriptSource}} =
- await Protocol.Debugger.getScriptSource({scriptId});
- let {result} = await Protocol.Debugger.setScriptSource({
- scriptId,
- scriptSource: scriptSource.replace(oldString, newString)
- });
- InspectorTest.log('Break location after LiveEdit:');
- await session.logSourceLocation(result.callFrames[0].location, true);
- InspectorTest.log('stackChanged: ' + result.stackChanged);
- if (result.stackChanged) {
- InspectorTest.log('Protocol.Debugger.stepInto');
- Protocol.Debugger.stepInto();
- var {params:{callFrames}} = await Protocol.Debugger.oncePaused();
- await session.logSourceLocation(callFrames[0].location);
- }
-}
diff --git a/deps/v8/test/inspector/debugger/set-script-source-stack-padding-expected.txt b/deps/v8/test/inspector/debugger/set-script-source-stack-padding-expected.txt
deleted file mode 100644
index c0ecafb94d..0000000000
--- a/deps/v8/test/inspector/debugger/set-script-source-stack-padding-expected.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Change return string constant at breakpoint
-Set breakpoint inside f() and call function..
-Paused at:
-(function f() {
- #return 'Cat';
-})
-
-Change Cat to Capybara..
-Paused at:
-(function f() {
- #return 'Capybara';
-})
-
-Resume and check return value..
-SlimFunction() = Capybara
diff --git a/deps/v8/test/inspector/debugger/set-script-source-stack-padding.js b/deps/v8/test/inspector/debugger/set-script-source-stack-padding.js
deleted file mode 100644
index 0a11e8977e..0000000000
--- a/deps/v8/test/inspector/debugger/set-script-source-stack-padding.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// 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.
-
-let {session, contextGroup, Protocol} =
- InspectorTest.start('Change return string constant at breakpoint');
-
-contextGroup.addScript(
-`SlimFunction = eval(
- '(function f() {\\n ' +
- ' return \\'Cat\\';\\n' +
- '})\\n' +
- '//# sourceURL=eval.js\\n');`);
-
-(async function test() {
- session.setupScriptMap();
- let scriptPromise = new Promise(resolve => {
- Protocol.Debugger.onScriptParsed(({params}) => {
- if (params.url === 'eval.js') {
- resolve(params);
- Protocol.Debugger.onScriptParsed(null);
- }
- });
- });
- Protocol.Debugger.enable();
- const script = await scriptPromise;
-
- InspectorTest.log('Set breakpoint inside f() and call function..');
- const {result:{actualLocation}} = await Protocol.Debugger.setBreakpoint({
- location: { scriptId: script.scriptId, lineNumber: 1, columnNumber: 0}});
- const evalPromise = Protocol.Runtime.evaluate({expression: 'SlimFunction()'});
- const {params:{callFrames}} = await Protocol.Debugger.oncePaused();
- InspectorTest.log('Paused at:');
- await session.logSourceLocation(callFrames[0].location);
-
- InspectorTest.log('Change Cat to Capybara..');
- const {result:{scriptSource}} = await Protocol.Debugger.getScriptSource({
- scriptId: script.scriptId
- });
- const {result:{callFrames:[topFrame],stackChanged}} =
- await Protocol.Debugger.setScriptSource({
- scriptId: script.scriptId,
- scriptSource: scriptSource.replace(`'Cat'`, `'Capybara'`)
- });
-
- InspectorTest.log('Paused at:');
- await session.logSourceLocation(topFrame.location, true);
-
- InspectorTest.log('Resume and check return value..');
- Protocol.Debugger.resume();
- InspectorTest.log(
- `SlimFunction() = ${(await evalPromise).result.result.value}`);
- InspectorTest.completeTest();
-})();
diff --git a/deps/v8/test/inspector/debugger/set-variable-value-expected.txt b/deps/v8/test/inspector/debugger/set-variable-value-expected.txt
index b50adf7a58..5d3c3a9398 100644
--- a/deps/v8/test/inspector/debugger/set-variable-value-expected.txt
+++ b/deps/v8/test/inspector/debugger/set-variable-value-expected.txt
@@ -54,6 +54,17 @@ Running test: testSetVariableValueMain
{
id : <messageId>
result : {
+ internalProperties : [
+ [0] : {
+ name : [[Prototype]]
+ value : {
+ className : Object
+ description : Object
+ objectId : <objectId>
+ type : object
+ }
+ }
+ ]
result : [
[0] : {
configurable : true
@@ -67,19 +78,6 @@ Running test: testSetVariableValueMain
}
writable : true
}
- [1] : {
- configurable : true
- enumerable : false
- isOwn : true
- name : __proto__
- value : {
- className : Object
- description : Object
- objectId : <objectId>
- type : object
- }
- writable : true
- }
]
}
}
@@ -98,6 +96,18 @@ Running test: testSetVariableValueMain
{
id : <messageId>
result : {
+ internalProperties : [
+ [0] : {
+ name : [[Prototype]]
+ value : {
+ className : Array
+ description : Array(0)
+ objectId : <objectId>
+ subtype : array
+ type : object
+ }
+ }
+ ]
result : [
[0] : {
configurable : true
@@ -144,20 +154,6 @@ Running test: testSetVariableValueMain
}
writable : true
}
- [4] : {
- configurable : true
- enumerable : false
- isOwn : true
- name : __proto__
- value : {
- className : Array
- description : Array(0)
- objectId : <objectId>
- subtype : array
- type : object
- }
- writable : true
- }
]
}
}
@@ -175,6 +171,17 @@ Running test: testSetVariableValueMain
{
id : <messageId>
result : {
+ internalProperties : [
+ [0] : {
+ name : [[Prototype]]
+ value : {
+ className : Object
+ description : Object
+ objectId : <objectId>
+ type : object
+ }
+ }
+ ]
result : [
[0] : {
configurable : true
@@ -188,19 +195,6 @@ Running test: testSetVariableValueMain
}
writable : true
}
- [1] : {
- configurable : true
- enumerable : false
- isOwn : true
- name : __proto__
- value : {
- className : Object
- description : Object
- objectId : <objectId>
- type : object
- }
- writable : true
- }
]
}
}
diff --git a/deps/v8/test/inspector/debugger/wasm-breakpoint-reset-on-debugger-restart.js b/deps/v8/test/inspector/debugger/wasm-breakpoint-reset-on-debugger-restart.js
index 273a9be450..1697a3f676 100644
--- a/deps/v8/test/inspector/debugger/wasm-breakpoint-reset-on-debugger-restart.js
+++ b/deps/v8/test/inspector/debugger/wasm-breakpoint-reset-on-debugger-restart.js
@@ -20,6 +20,7 @@ Protocol.Debugger.onPaused(async msg => {
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Instantiating.');
// Spawn asynchronously:
diff --git a/deps/v8/test/inspector/debugger/wasm-conditional-breakpoints.js b/deps/v8/test/inspector/debugger/wasm-conditional-breakpoints.js
index 6099a8a70f..0b000198ea 100644
--- a/deps/v8/test/inspector/debugger/wasm-conditional-breakpoints.js
+++ b/deps/v8/test/inspector/debugger/wasm-conditional-breakpoints.js
@@ -50,6 +50,7 @@ Protocol.Debugger.onPaused(async msg => {
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Instantiating.');
// Spawn asynchronously:
diff --git a/deps/v8/test/inspector/debugger/wasm-debug-command.js b/deps/v8/test/inspector/debugger/wasm-debug-command.js
index 8bea6d5e53..372b12e4f9 100644
--- a/deps/v8/test/inspector/debugger/wasm-debug-command.js
+++ b/deps/v8/test/inspector/debugger/wasm-debug-command.js
@@ -47,6 +47,7 @@ InspectorTest.runAsyncTestSuite([
async function test() {
breakCount = 0;
breakpointId = 0;
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
WasmInspectorTest.instantiate(module_bytes);
await waitForWasmScript();
diff --git a/deps/v8/test/inspector/debugger/wasm-evaluate-on-call-frame-expected.txt b/deps/v8/test/inspector/debugger/wasm-evaluate-on-call-frame-expected.txt
index 04bc977dda..2605342e0c 100644
--- a/deps/v8/test/inspector/debugger/wasm-evaluate-on-call-frame-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-evaluate-on-call-frame-expected.txt
@@ -5,7 +5,7 @@ Compile module.
Set breakpoint in main.
Instantiate module.
Call main.
-Debugger paused in main.
+Debugger paused in $main.
> instance = Instance
> module = Module
@@ -14,7 +14,7 @@ Compile module.
Set breakpoint in main.
Instantiate module.
Call main.
-Debugger paused in main.
+Debugger paused in $main.
> globals = Globals
> typeof globals = "object"
> Object.keys(globals) = Array(2)
@@ -27,7 +27,7 @@ Debugger paused in main.
> globals["$global3"] = i64 {2n}
> $global3 = i64 {2n}
Stepping twice in main.
-Debugger paused in main.
+Debugger paused in $main.
> globals[0] = i32 {0}
> globals[1] = i32 {1}
> globals[2] = i64 {2n}
@@ -51,29 +51,29 @@ Compile module.
Set breakpoint in main.
Instantiate module.
Call main.
-Debugger paused in main.
+Debugger paused in $main.
> functions = Functions
> typeof functions = "object"
> Object.keys(functions) = Array(4)
-> functions[0] = function 0() { [native code] }
-> functions[1] = function 1() { [native code] }
-> functions[2] = function 2() { [native code] }
-> functions[3] = function 3() { [native code] }
-> functions[4] = function 4() { [native code] }
-> functions["$foo.bar"] = function 0() { [native code] }
-> functions["$main"] = function 1() { [native code] }
-> $main = function 1() { [native code] }
-> functions["$func2"] = function 2() { [native code] }
-> $func2 = function 2() { [native code] }
-> functions["$func4"] = function 4() { [native code] }
-> $func4 = function 4() { [native code] }
+> functions[0] = function $foo.bar() { [native code] }
+> functions[1] = function $main() { [native code] }
+> functions[2] = function $func2() { [native code] }
+> functions[3] = function $func2() { [native code] }
+> functions[4] = function $func4() { [native code] }
+> functions["$foo.bar"] = function $foo.bar() { [native code] }
+> functions["$main"] = function $main() { [native code] }
+> $main = function $main() { [native code] }
+> functions["$func2"] = function $func2() { [native code] }
+> $func2 = function $func2() { [native code] }
+> functions["$func4"] = function $func4() { [native code] }
+> $func4 = function $func4() { [native code] }
Running test: testLocals
Compile module.
Set breakpoint in main.
Instantiate module.
Call main.
-Debugger paused in main.
+Debugger paused in $main.
> locals = Locals
> typeof locals = "object"
> Object.keys(locals) = Array(2)
@@ -85,7 +85,7 @@ Debugger paused in main.
> locals["$var2"] = i32 {0}
> $var2 = i32 {0}
Stepping twice in main.
-Debugger paused in main.
+Debugger paused in $main.
> locals[0] = i32 {3}
> locals[1] = i32 {6}
> locals[2] = i32 {42}
@@ -99,7 +99,7 @@ Compile module.
Set breakpoint in main.
Instantiate module.
Call main.
-Debugger paused in main.
+Debugger paused in $main.
> memories = Memories
> typeof memories = "object"
> Object.keys(memories) = Array(1)
@@ -112,7 +112,7 @@ Compile module.
Set breakpoint in main.
Instantiate module.
Call main.
-Debugger paused in main.
+Debugger paused in $main.
> tables = Tables
> typeof tables = "object"
> Object.keys(tables) = Array(1)
@@ -125,12 +125,12 @@ Compile module.
Set breakpoint in main.
Instantiate module.
Call main.
-Debugger paused in main.
+Debugger paused in $main.
> stack = Stack
> typeof stack = "object"
> Object.keys(stack) = Array(0)
Stepping twice in main.
-Debugger paused in main.
+Debugger paused in $main.
> stack = Stack
> Object.keys(stack) = Array(2)
> stack[0] = i32 {5}
diff --git a/deps/v8/test/inspector/debugger/wasm-gc-breakpoints-expected.txt b/deps/v8/test/inspector/debugger/wasm-gc-breakpoints-expected.txt
index 037057b13b..68f2801b6e 100644
--- a/deps/v8/test/inspector/debugger/wasm-gc-breakpoints-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-gc-breakpoints-expected.txt
@@ -8,7 +8,7 @@ Calling main()
Paused:
Script wasm://wasm/22e4830a byte offset 107: Wasm opcode 0x21 (kExprLocalSet)
Scope:
-at main (0:107):
+at $main (0:107):
- scope (wasm-expression-stack):
0: Array ((ref $ArrC))
object details:
@@ -25,7 +25,7 @@ at main (0:107):
instance: exports: "main" (Function)
module: Module
functions: "$main": (Function)
- globals: "$global0": function 0() { [native code] } ((ref null $type3))
+ globals: "$global0": function $main() { [native code] } ((ref null $type3))
at (anonymous) (0:17):
-- skipped
exports.main returned!
diff --git a/deps/v8/test/inspector/debugger/wasm-gc-breakpoints.js b/deps/v8/test/inspector/debugger/wasm-gc-breakpoints.js
index 2c4c774411..1a50a09204 100644
--- a/deps/v8/test/inspector/debugger/wasm-gc-breakpoints.js
+++ b/deps/v8/test/inspector/debugger/wasm-gc-breakpoints.js
@@ -196,6 +196,7 @@ Protocol.Debugger.onPaused(async msg => {
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Instantiating.');
// Spawn asynchronously:
diff --git a/deps/v8/test/inspector/debugger/wasm-gc-in-debug-break-expected.txt b/deps/v8/test/inspector/debugger/wasm-gc-in-debug-break-expected.txt
index a9e1c76813..2d1669e3f6 100644
--- a/deps/v8/test/inspector/debugger/wasm-gc-in-debug-break-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-gc-in-debug-break-expected.txt
@@ -6,5 +6,7 @@ GC triggered
Debugger.resume
Hello World (v8://test/instantiate:11:36)
at bar (v8://test/instantiate:11:36)
+ at $wasm_A (wasm://wasm/38e28046:1:54)
+ at test (test.js:4:20)
+ at (anonymous function) (:1:1)
exports.main returned!
-
diff --git a/deps/v8/test/inspector/debugger/wasm-gc-in-debug-break.js b/deps/v8/test/inspector/debugger/wasm-gc-in-debug-break.js
index f6ad6b6bfa..90680a7b4a 100644
--- a/deps/v8/test/inspector/debugger/wasm-gc-in-debug-break.js
+++ b/deps/v8/test/inspector/debugger/wasm-gc-in-debug-break.js
@@ -36,11 +36,11 @@ contextGroup.addScript(`
function test() {
debug(instance.exports.main);
instance.exports.main({val: "Hello World"});
-}
-//# sourceURL=test.js`);
+}`, 0, 0, 'test.js');
InspectorTest.runAsyncTestSuite([async function test() {
utils.setLogConsoleApiMessageCalls(true);
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
await WasmInspectorTest.instantiate(
module_bytes, 'instance', '{foo: {bar: (x) => console.log(x.val)}}');
diff --git a/deps/v8/test/inspector/debugger/wasm-get-breakable-locations-byte-offsets.js b/deps/v8/test/inspector/debugger/wasm-get-breakable-locations-byte-offsets.js
index beb6ca9fa9..f6ae1da4b2 100644
--- a/deps/v8/test/inspector/debugger/wasm-get-breakable-locations-byte-offsets.js
+++ b/deps/v8/test/inspector/debugger/wasm-get-breakable-locations-byte-offsets.js
@@ -32,6 +32,7 @@ builder.addFunction('main', kSig_v_i)
var module_bytes = builder.toArray();
+Protocol.Runtime.enable();
Protocol.Debugger.enable();
Protocol.Debugger.onScriptParsed(handleScriptParsed);
diff --git a/deps/v8/test/inspector/debugger/wasm-imports.js b/deps/v8/test/inspector/debugger/wasm-imports.js
index 822064921f..b1b51eeca0 100644
--- a/deps/v8/test/inspector/debugger/wasm-imports.js
+++ b/deps/v8/test/inspector/debugger/wasm-imports.js
@@ -39,7 +39,8 @@ function instantiate(bytes, imp) {
session.setupScriptMap();
// Main promise chain:
-Protocol.Debugger.enable()
+Protocol.Runtime.enable()
+ .then(() => Protocol.Debugger.enable())
.then(() => InspectorTest.log('Installing code and global variable.'))
.then(
() => WasmInspectorTest.evalWithUrl(
diff --git a/deps/v8/test/inspector/debugger/wasm-inspect-many-registers.js b/deps/v8/test/inspector/debugger/wasm-inspect-many-registers.js
index d300b8bb9a..51c09aa193 100644
--- a/deps/v8/test/inspector/debugger/wasm-inspect-many-registers.js
+++ b/deps/v8/test/inspector/debugger/wasm-inspect-many-registers.js
@@ -98,6 +98,7 @@ async function testConfig(config) {
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
for (let config in configs) {
await testConfig(config);
diff --git a/deps/v8/test/inspector/debugger/wasm-instrumentation-breakpoint.js b/deps/v8/test/inspector/debugger/wasm-instrumentation-breakpoint.js
index 9f1d897daa..903613e1f0 100644
--- a/deps/v8/test/inspector/debugger/wasm-instrumentation-breakpoint.js
+++ b/deps/v8/test/inspector/debugger/wasm-instrumentation-breakpoint.js
@@ -24,6 +24,7 @@ InspectorTest.runAsyncTestSuite([
const start_fn = builder.addFunction('start', kSig_v_v).addBody([kExprNop]);
builder.addStart(start_fn.index);
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Setting instrumentation breakpoint');
InspectorTest.logMessage(
@@ -40,6 +41,7 @@ InspectorTest.runAsyncTestSuite([
'new WebAssembly.Instance(module)', 'instantiate2');
InspectorTest.log('Done.');
await Protocol.Debugger.disable();
+ await Protocol.Runtime.disable();
},
// If we compile twice, we get two instrumentation breakpoints (which might or
@@ -49,6 +51,7 @@ InspectorTest.runAsyncTestSuite([
const start_fn = builder.addFunction('start', kSig_v_v).addBody([kExprNop]);
builder.addStart(start_fn.index);
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Setting instrumentation breakpoint');
InspectorTest.logMessage(
@@ -61,6 +64,7 @@ InspectorTest.runAsyncTestSuite([
await WasmInspectorTest.instantiate(builder.toArray());
InspectorTest.log('Done.');
await Protocol.Debugger.disable();
+ await Protocol.Runtime.disable();
},
async function testBreakInExportedFunction() {
@@ -68,6 +72,7 @@ InspectorTest.runAsyncTestSuite([
const func =
builder.addFunction('func', kSig_v_v).addBody([kExprNop]).exportFunc();
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Setting instrumentation breakpoint');
InspectorTest.logMessage(
@@ -84,6 +89,7 @@ InspectorTest.runAsyncTestSuite([
await WasmInspectorTest.evalWithUrl('instance.exports.func()', 'call_func');
InspectorTest.log('Done.');
await Protocol.Debugger.disable();
+ await Protocol.Runtime.disable();
},
async function testBreakOnlyWithSourceMap() {
@@ -94,6 +100,7 @@ InspectorTest.runAsyncTestSuite([
builder.addCustomSection('sourceMappingURL', [3, 97, 98, 99]);
const bytes_with_source_map = builder.toArray();
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log(
'Setting instrumentation breakpoint for source maps only');
@@ -114,6 +121,7 @@ InspectorTest.runAsyncTestSuite([
await WasmInspectorTest.evalWithUrl('instance.exports.func()', 'call_func');
InspectorTest.log('Done.');
await Protocol.Debugger.disable();
+ await Protocol.Runtime.disable();
},
]);
diff --git a/deps/v8/test/inspector/debugger/wasm-remove-breakpoint.js b/deps/v8/test/inspector/debugger/wasm-remove-breakpoint.js
index b17f03c835..41eb80e6c4 100644
--- a/deps/v8/test/inspector/debugger/wasm-remove-breakpoint.js
+++ b/deps/v8/test/inspector/debugger/wasm-remove-breakpoint.js
@@ -43,11 +43,11 @@ contextGroup.addScript(`
function test() {
instance.exports.main(1);
instance.exports.main(1);
-}
-//# sourceURL=test.js`);
+}`, 0, 0, 'test.js');
InspectorTest.runAsyncTestSuite([
async function Test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Calling instantiate function.');
WasmInspectorTest.instantiate(module_bytes);
diff --git a/deps/v8/test/inspector/debugger/wasm-scope-info-expected.txt b/deps/v8/test/inspector/debugger/wasm-scope-info-expected.txt
index 7778b57f41..b55d88d0f7 100644
--- a/deps/v8/test/inspector/debugger/wasm-scope-info-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-scope-info-expected.txt
@@ -13,7 +13,7 @@ Setting breakpoint on line 2 (first instruction) of third function
Paused:
Script wasm://wasm/e33badc2 byte offset 169: Wasm opcode 0x20 (kExprLocalGet)
Scope:
-at C (interpreted) (0:169):
+at $C (interpreted) (0:169):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -27,7 +27,7 @@ at C (interpreted) (0:169):
globals: "$exported_global": 0 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at B (liftoff) (0:158):
+at $B (liftoff) (0:158):
- scope (wasm-expression-stack):
stack: "0": 42 (i32), "1": 3 (i32)
- scope (local):
@@ -44,7 +44,7 @@ at B (liftoff) (0:158):
globals: "$exported_global": 0 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at A (liftoff) (0:128):
+at $A (liftoff) (0:128):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -63,7 +63,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/e33badc2 byte offset 171: Wasm opcode 0x24 (kExprGlobalSet)
Scope:
-at C (interpreted) (0:171):
+at $C (interpreted) (0:171):
- scope (wasm-expression-stack):
stack: "0": 42 (i32)
- scope (local):
@@ -77,7 +77,7 @@ at C (interpreted) (0:171):
globals: "$exported_global": 0 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at B (liftoff) (0:158):
+at $B (liftoff) (0:158):
- scope (wasm-expression-stack):
stack: "0": 42 (i32), "1": 3 (i32)
- scope (local):
@@ -94,7 +94,7 @@ at B (liftoff) (0:158):
globals: "$exported_global": 0 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at A (liftoff) (0:128):
+at $A (liftoff) (0:128):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -113,7 +113,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/e33badc2 byte offset 173: Wasm opcode 0x41 (kExprI32Const)
Scope:
-at C (interpreted) (0:173):
+at $C (interpreted) (0:173):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -127,7 +127,7 @@ at C (interpreted) (0:173):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at B (liftoff) (0:158):
+at $B (liftoff) (0:158):
- scope (wasm-expression-stack):
stack: "0": 42 (i32), "1": 3 (i32)
- scope (local):
@@ -144,7 +144,7 @@ at B (liftoff) (0:158):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at A (liftoff) (0:128):
+at $A (liftoff) (0:128):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -163,7 +163,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/e33badc2 byte offset 175: Wasm opcode 0x21 (kExprLocalSet)
Scope:
-at C (interpreted) (0:175):
+at $C (interpreted) (0:175):
- scope (wasm-expression-stack):
stack: "0": 47 (i32)
- scope (local):
@@ -177,7 +177,7 @@ at C (interpreted) (0:175):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at B (liftoff) (0:158):
+at $B (liftoff) (0:158):
- scope (wasm-expression-stack):
stack: "0": 42 (i32), "1": 3 (i32)
- scope (local):
@@ -194,7 +194,7 @@ at B (liftoff) (0:158):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at A (liftoff) (0:128):
+at $A (liftoff) (0:128):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -213,7 +213,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/e33badc2 byte offset 177: Wasm opcode 0x0b (kExprEnd)
Scope:
-at C (interpreted) (0:177):
+at $C (interpreted) (0:177):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -227,7 +227,7 @@ at C (interpreted) (0:177):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at B (liftoff) (0:158):
+at $B (liftoff) (0:158):
- scope (wasm-expression-stack):
stack: "0": 42 (i32), "1": 3 (i32)
- scope (local):
@@ -244,7 +244,7 @@ at B (liftoff) (0:158):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at A (liftoff) (0:128):
+at $A (liftoff) (0:128):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -263,7 +263,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/e33badc2 byte offset 160: Wasm opcode 0x1a (kExprDrop)
Scope:
-at B (liftoff) (0:160):
+at $B (liftoff) (0:160):
- scope (wasm-expression-stack):
stack: "0": 42 (i32), "1": 3 (i32)
- scope (local):
@@ -280,7 +280,7 @@ at B (liftoff) (0:160):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at A (liftoff) (0:128):
+at $A (liftoff) (0:128):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -299,7 +299,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/e33badc2 byte offset 161: Wasm opcode 0x1a (kExprDrop)
Scope:
-at B (liftoff) (0:161):
+at $B (liftoff) (0:161):
- scope (wasm-expression-stack):
stack: "0": 42 (i32)
- scope (local):
@@ -316,7 +316,7 @@ at B (liftoff) (0:161):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at A (liftoff) (0:128):
+at $A (liftoff) (0:128):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -335,7 +335,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/e33badc2 byte offset 162: Wasm opcode 0x0b (kExprEnd)
Scope:
-at B (liftoff) (0:162):
+at $B (liftoff) (0:162):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -352,7 +352,7 @@ at B (liftoff) (0:162):
globals: "$exported_global": 42 (i32)
memories: "$exported_memory": (Memory)
tables: "$exported_table": (Table)
-at A (liftoff) (0:128):
+at $A (liftoff) (0:128):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -371,7 +371,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/e33badc2 byte offset 130: Wasm opcode 0x0b (kExprEnd)
Scope:
-at A (liftoff) (0:130):
+at $A (liftoff) (0:130):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -388,10 +388,10 @@ at (anonymous) (0:17):
-- skipped globals
Paused:
-instance.exports.main(42)
+instance.exports.main(42)#
Scope:
-at (anonymous) (1:31):
+at (anonymous) (0:25):
- scope (global):
-- skipped globals
diff --git a/deps/v8/test/inspector/debugger/wasm-scope-info.js b/deps/v8/test/inspector/debugger/wasm-scope-info.js
index 04481a33b8..4b920d2b89 100644
--- a/deps/v8/test/inspector/debugger/wasm-scope-info.js
+++ b/deps/v8/test/inspector/debugger/wasm-scope-info.js
@@ -2,15 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --experimental-wasm-type-reflection --experimental-wasm-simd
-// SIMD in Liftoff only works with these cpu features, force them on.
-// Flags: --enable-sse3 --enable-ssse3 --enable-sse4-1
+// Flags: --experimental-wasm-type-reflection
utils.load('test/inspector/wasm-inspector-test.js');
let {session, contextGroup, Protocol} = InspectorTest.start(
'Test retrieving scope information from compiled Liftoff frames');
session.setupScriptMap();
+Protocol.Runtime.enable();
Protocol.Debugger.enable();
Protocol.Debugger.onPaused(printPauseLocationsAndContinue);
diff --git a/deps/v8/test/inspector/debugger/wasm-set-breakpoint-breaks-on-first-breakable-location.js b/deps/v8/test/inspector/debugger/wasm-set-breakpoint-breaks-on-first-breakable-location.js
index ae59334b93..88cc3afb08 100644
--- a/deps/v8/test/inspector/debugger/wasm-set-breakpoint-breaks-on-first-breakable-location.js
+++ b/deps/v8/test/inspector/debugger/wasm-set-breakpoint-breaks-on-first-breakable-location.js
@@ -30,6 +30,7 @@ builder.addFunction('main', kSig_v_i)
// clang-format on
var module_bytes = builder.toArray();
+Protocol.Runtime.enable();
Protocol.Debugger.enable();
InspectorTest.runAsyncTestSuite([
diff --git a/deps/v8/test/inspector/debugger/wasm-set-breakpoint-expected.txt b/deps/v8/test/inspector/debugger/wasm-set-breakpoint-expected.txt
index 49836f93ab..98a0c07b17 100644
--- a/deps/v8/test/inspector/debugger/wasm-set-breakpoint-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-set-breakpoint-expected.txt
@@ -8,7 +8,7 @@ Calling main(4)
Paused:
Script wasm://wasm/0c10a5fe byte offset 38: Wasm opcode 0x01 (kExprNop)
Scope:
-at wasm_A (0:38):
+at $wasm_A (0:38):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -16,7 +16,7 @@ at wasm_A (0:38):
instance: exports: "main" (Function)
module: Module
functions: "$wasm_A": (Function), "$wasm_B": (Function)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -39,7 +39,7 @@ Setting breakpoint at offset 47 on script v8://test/runWasm
Paused:
Script wasm://wasm/0c10a5fe byte offset 39: Wasm opcode 0x01 (kExprNop)
Scope:
-at wasm_A (0:39):
+at $wasm_A (0:39):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -47,7 +47,7 @@ at wasm_A (0:39):
instance: exports: "main" (Function)
module: Module
functions: "$wasm_A": (Function), "$wasm_B": (Function)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -61,7 +61,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Scope:
-at wasm_B (0:45):
+at $wasm_B (0:45):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -75,7 +75,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
-at wasm_B (0:47):
+at $wasm_B (0:47):
- scope (wasm-expression-stack):
stack: "0": 3 (i32)
- scope (local):
@@ -89,7 +89,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Scope:
-at wasm_B (0:49):
+at $wasm_B (0:49):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -103,7 +103,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
-at wasm_B (0:51):
+at $wasm_B (0:51):
- scope (wasm-expression-stack):
stack: "0": 3 (i32)
- scope (local):
@@ -117,7 +117,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
-at wasm_B (0:53):
+at $wasm_B (0:53):
- scope (wasm-expression-stack):
stack: "0": 3 (i32), "1": 1 (i32)
- scope (local):
@@ -131,7 +131,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
-at wasm_B (0:54):
+at $wasm_B (0:54):
- scope (wasm-expression-stack):
stack: "0": 2 (i32)
- scope (local):
@@ -145,7 +145,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 38: Wasm opcode 0x01 (kExprNop)
Scope:
-at wasm_A (0:38):
+at $wasm_A (0:38):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -153,7 +153,7 @@ at wasm_A (0:38):
instance: exports: "main" (Function)
module: Module
functions: "$wasm_A": (Function), "$wasm_B": (Function)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -167,7 +167,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 39: Wasm opcode 0x01 (kExprNop)
Scope:
-at wasm_A (0:39):
+at $wasm_A (0:39):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -175,7 +175,7 @@ at wasm_A (0:39):
instance: exports: "main" (Function)
module: Module
functions: "$wasm_A": (Function), "$wasm_B": (Function)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -189,7 +189,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Scope:
-at wasm_B (0:45):
+at $wasm_B (0:45):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -203,7 +203,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
-at wasm_B (0:47):
+at $wasm_B (0:47):
- scope (wasm-expression-stack):
stack: "0": 2 (i32)
- scope (local):
@@ -217,7 +217,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Scope:
-at wasm_B (0:49):
+at $wasm_B (0:49):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -231,7 +231,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
-at wasm_B (0:51):
+at $wasm_B (0:51):
- scope (wasm-expression-stack):
stack: "0": 2 (i32)
- scope (local):
@@ -245,7 +245,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
-at wasm_B (0:53):
+at $wasm_B (0:53):
- scope (wasm-expression-stack):
stack: "0": 2 (i32), "1": 1 (i32)
- scope (local):
@@ -259,7 +259,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
-at wasm_B (0:54):
+at $wasm_B (0:54):
- scope (wasm-expression-stack):
stack: "0": 1 (i32)
- scope (local):
@@ -273,7 +273,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 38: Wasm opcode 0x01 (kExprNop)
Scope:
-at wasm_A (0:38):
+at $wasm_A (0:38):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -281,7 +281,7 @@ at wasm_A (0:38):
instance: exports: "main" (Function)
module: Module
functions: "$wasm_A": (Function), "$wasm_B": (Function)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -295,7 +295,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 39: Wasm opcode 0x01 (kExprNop)
Scope:
-at wasm_A (0:39):
+at $wasm_A (0:39):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -303,7 +303,7 @@ at wasm_A (0:39):
instance: exports: "main" (Function)
module: Module
functions: "$wasm_A": (Function), "$wasm_B": (Function)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -317,7 +317,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Scope:
-at wasm_B (0:45):
+at $wasm_B (0:45):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -331,7 +331,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
-at wasm_B (0:47):
+at $wasm_B (0:47):
- scope (wasm-expression-stack):
stack: "0": 1 (i32)
- scope (local):
@@ -345,7 +345,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
Scope:
-at wasm_B (0:49):
+at $wasm_B (0:49):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -359,7 +359,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 51: Wasm opcode 0x41 (kExprI32Const)
Scope:
-at wasm_B (0:51):
+at $wasm_B (0:51):
- scope (wasm-expression-stack):
stack: "0": 1 (i32)
- scope (local):
@@ -373,7 +373,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
Scope:
-at wasm_B (0:53):
+at $wasm_B (0:53):
- scope (wasm-expression-stack):
stack: "0": 1 (i32), "1": 1 (i32)
- scope (local):
@@ -387,7 +387,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
Scope:
-at wasm_B (0:54):
+at $wasm_B (0:54):
- scope (wasm-expression-stack):
stack: "0": 0 (i32)
- scope (local):
@@ -401,7 +401,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 38: Wasm opcode 0x01 (kExprNop)
Scope:
-at wasm_A (0:38):
+at $wasm_A (0:38):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -409,7 +409,7 @@ at wasm_A (0:38):
instance: exports: "main" (Function)
module: Module
functions: "$wasm_A": (Function), "$wasm_B": (Function)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -423,7 +423,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 39: Wasm opcode 0x01 (kExprNop)
Scope:
-at wasm_A (0:39):
+at $wasm_A (0:39):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -431,7 +431,7 @@ at wasm_A (0:39):
instance: exports: "main" (Function)
module: Module
functions: "$wasm_A": (Function), "$wasm_B": (Function)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -445,7 +445,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
Scope:
-at wasm_B (0:45):
+at $wasm_B (0:45):
- scope (wasm-expression-stack):
stack:
- scope (local):
@@ -459,7 +459,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 47: Wasm opcode 0x04 (kExprIf)
Scope:
-at wasm_B (0:47):
+at $wasm_B (0:47):
- scope (wasm-expression-stack):
stack: "0": 0 (i32)
- scope (local):
@@ -473,7 +473,7 @@ at (anonymous) (0:17):
Paused:
Script wasm://wasm/0c10a5fe byte offset 61: Wasm opcode 0x0b (kExprEnd)
Scope:
-at wasm_B (0:61):
+at $wasm_B (0:61):
- scope (wasm-expression-stack):
stack:
- scope (local):
diff --git a/deps/v8/test/inspector/debugger/wasm-set-breakpoint.js b/deps/v8/test/inspector/debugger/wasm-set-breakpoint.js
index 1b28959f7a..a5bc8b333e 100644
--- a/deps/v8/test/inspector/debugger/wasm-set-breakpoint.js
+++ b/deps/v8/test/inspector/debugger/wasm-set-breakpoint.js
@@ -86,6 +86,7 @@ Protocol.Debugger.onPaused(async msg => {
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Instantiating.');
// Spawn asynchronously:
diff --git a/deps/v8/test/inspector/debugger/wasm-side-effect-free-debug-evaluate-expected.txt b/deps/v8/test/inspector/debugger/wasm-side-effect-free-debug-evaluate-expected.txt
new file mode 100644
index 0000000000..e538b7584b
--- /dev/null
+++ b/deps/v8/test/inspector/debugger/wasm-side-effect-free-debug-evaluate-expected.txt
@@ -0,0 +1,33 @@
+Test side-effect-free evaluation of WebAssembly APIs
+
+Running test: testWebAssemblyGlobal
+someGlobalGlobal.value: ok
+someGlobalGlobal.valueOf(): ok
+new WebAssembly.Global({value: "f32", mutable: true}, 3.14): ok
+new WebAssembly.Global({value: "f32", mutable: false}, 3.14): ok
+new WebAssembly.Global({value: "f32", mutable: true}, 3.14).value: ok
+new WebAssembly.Global({value: "f32", mutable: true}, 3.14).valueOf(): ok
+
+Running test: testWebAssemblyInstance
+someGlobalInstance.exports: ok
+new WebAssembly.Instance(someGlobalModule): ok
+new WebAssembly.Instance(someGlobalModule).exports: ok
+
+Running test: testWebAssemblyMemory
+someGlobalMemory.buffer: ok
+new WebAssembly.Memory({initial: 1}): ok
+new WebAssembly.Memory({initial: 1}).buffer: ok
+
+Running test: testWebAssemblyModule
+WebAssembly.Module.customSections(someGlobalModule, ".debug_info"): ok
+WebAssembly.Module.exports(someGlobalModule): ok
+WebAssembly.Module.imports(someGlobalModule): ok
+new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES): ok
+WebAssembly.Module.customSections(new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES), ".debug_info"): ok
+WebAssembly.Module.exports(new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES)): ok
+WebAssembly.Module.imports(new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES)): ok
+
+Running test: testWebAssemblyTable
+someGlobalTable.get(0): ok
+new WebAssembly.Table({element: "anyfunc", initial: 1}): ok
+new WebAssembly.Table({element: "anyfunc", initial: 1}).get(0): ok
diff --git a/deps/v8/test/inspector/debugger/wasm-side-effect-free-debug-evaluate.js b/deps/v8/test/inspector/debugger/wasm-side-effect-free-debug-evaluate.js
new file mode 100644
index 0000000000..37aca4701c
--- /dev/null
+++ b/deps/v8/test/inspector/debugger/wasm-side-effect-free-debug-evaluate.js
@@ -0,0 +1,72 @@
+// Copyright 2021 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.
+
+utils.load('test/inspector/wasm-inspector-test.js');
+
+let {session, contextGroup, Protocol} =
+ InspectorTest.start('Test side-effect-free evaluation of WebAssembly APIs');
+
+contextGroup.addScript(`
+var EMPTY_WASM_MODULE_BYTES = new Uint8Array([0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00]);
+var someGlobalGlobal = new WebAssembly.Global({value: "i64"}, 42n);
+var someGlobalMemory = new WebAssembly.Memory({initial: 1});
+var someGlobalModule = new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES);
+var someGlobalInstance = new WebAssembly.Instance(someGlobalModule);
+var someGlobalTable = new WebAssembly.Table({element: 'anyfunc', initial: 1});
+someGlobalTable.set(0, x => x);
+`, 0, 0, 'foo.js');
+
+async function check(expression) {
+ const {result:{exceptionDetails}} = await Protocol.Runtime.evaluate({expression, throwOnSideEffect: true});
+ InspectorTest.log(`${expression}: ${exceptionDetails ? 'throws' : 'ok'}`);
+}
+
+InspectorTest.runAsyncTestSuite([
+ async function testWebAssemblyGlobal() {
+ await Protocol.Runtime.enable();
+ await check('someGlobalGlobal.value');
+ await check('someGlobalGlobal.valueOf()');
+ await check('new WebAssembly.Global({value: "f32", mutable: true}, 3.14)');
+ await check('new WebAssembly.Global({value: "f32", mutable: false}, 3.14)');
+ await check('new WebAssembly.Global({value: "f32", mutable: true}, 3.14).value');
+ await check('new WebAssembly.Global({value: "f32", mutable: true}, 3.14).valueOf()');
+ await Protocol.Runtime.disable();
+ },
+
+ async function testWebAssemblyInstance() {
+ await Protocol.Runtime.enable();
+ await check('someGlobalInstance.exports');
+ await check('new WebAssembly.Instance(someGlobalModule)');
+ await check('new WebAssembly.Instance(someGlobalModule).exports');
+ await Protocol.Runtime.disable();
+ },
+
+ async function testWebAssemblyMemory() {
+ await Protocol.Runtime.enable();
+ await check('someGlobalMemory.buffer');
+ await check('new WebAssembly.Memory({initial: 1})');
+ await check('new WebAssembly.Memory({initial: 1}).buffer');
+ await Protocol.Runtime.disable();
+ },
+
+ async function testWebAssemblyModule() {
+ await Protocol.Runtime.enable();
+ await check('WebAssembly.Module.customSections(someGlobalModule, ".debug_info")');
+ await check('WebAssembly.Module.exports(someGlobalModule)');
+ await check('WebAssembly.Module.imports(someGlobalModule)');
+ await check('new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES)');
+ await check('WebAssembly.Module.customSections(new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES), ".debug_info")');
+ await check('WebAssembly.Module.exports(new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES))');
+ await check('WebAssembly.Module.imports(new WebAssembly.Module(EMPTY_WASM_MODULE_BYTES))');
+ await Protocol.Runtime.disable();
+ },
+
+ async function testWebAssemblyTable() {
+ await Protocol.Runtime.enable();
+ await check('someGlobalTable.get(0)');
+ await check('new WebAssembly.Table({element: "anyfunc", initial: 1})');
+ await check('new WebAssembly.Table({element: "anyfunc", initial: 1}).get(0)');
+ await Protocol.Runtime.disable();
+ }
+]);
diff --git a/deps/v8/test/inspector/debugger/wasm-stack-check.js b/deps/v8/test/inspector/debugger/wasm-stack-check.js
index cd2384acec..08ee162f8e 100644
--- a/deps/v8/test/inspector/debugger/wasm-stack-check.js
+++ b/deps/v8/test/inspector/debugger/wasm-stack-check.js
@@ -37,6 +37,7 @@ function instantiate(bytes, imports) {
InspectorTest.runAsyncTestSuite([
async function testPauseAndStep() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Instantiate');
const instantiate_code = `var instance = (${instantiate})(${JSON.stringify(module_bytes)}, {'imports': {'pause': () => { %ScheduleBreak() } }});`;
diff --git a/deps/v8/test/inspector/debugger/wasm-stack-expected.txt b/deps/v8/test/inspector/debugger/wasm-stack-expected.txt
index 1ff78f3543..ff2955caee 100644
--- a/deps/v8/test/inspector/debugger/wasm-stack-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-stack-expected.txt
@@ -3,8 +3,8 @@ Running testFunction with generated wasm bytes...
Paused on 'debugger;'
Number of frames: 5
- [0] {"functionName":"call_debugger","function_lineNumber":1,"function_columnNumber":24,"lineNumber":2,"columnNumber":4}
- - [1] {"functionName":"call_func","lineNumber":0,"columnNumber":55}
- - [2] {"functionName":"main","lineNumber":0,"columnNumber":62}
+ - [1] {"functionName":"$call_func","lineNumber":0,"columnNumber":55}
+ - [2] {"functionName":"$main","lineNumber":0,"columnNumber":62}
- [3] {"functionName":"testFunction","function_lineNumber":0,"function_columnNumber":21,"lineNumber":14,"columnNumber":19}
- [4] {"functionName":"","function_lineNumber":0,"function_columnNumber":0,"lineNumber":0,"columnNumber":0}
Getting v8-generated stack trace...
diff --git a/deps/v8/test/inspector/debugger/wasm-step-a-lot.js b/deps/v8/test/inspector/debugger/wasm-step-a-lot.js
index df0e983d53..e6e57830e0 100644
--- a/deps/v8/test/inspector/debugger/wasm-step-a-lot.js
+++ b/deps/v8/test/inspector/debugger/wasm-step-a-lot.js
@@ -33,6 +33,7 @@ Protocol.Debugger.onPaused(msg => {
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Setting up global instance variable.');
WasmInspectorTest.instantiate(module_bytes);
diff --git a/deps/v8/test/inspector/debugger/wasm-step-after-trap-expected.txt b/deps/v8/test/inspector/debugger/wasm-step-after-trap-expected.txt
index 45d0d74e8d..2f54b5225e 100644
--- a/deps/v8/test/inspector/debugger/wasm-step-after-trap-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-step-after-trap-expected.txt
@@ -6,7 +6,7 @@ Calling div function.
Paused at:
--- 0 ---
Script wasm://wasm/a9a86c5e byte offset 46: Wasm opcode 0x6d (kExprI32DivS)
-scope at div (0:46):
+scope at $div (0:46):
$a: 1 (i32)
$b: 0 (i32)
$unused: 4711 (i32)
@@ -36,7 +36,7 @@ Paused at:
Paused at:
--- 0 ---
Script wasm://wasm/a9a86c5e byte offset 46: Wasm opcode 0x6d (kExprI32DivS)
-scope at div (0:46):
+scope at $div (0:46):
$a: -2147483648 (i32)
$b: -1 (i32)
$unused: 4711 (i32)
diff --git a/deps/v8/test/inspector/debugger/wasm-step-after-trap.js b/deps/v8/test/inspector/debugger/wasm-step-after-trap.js
index fec9555ce8..182b2a16b9 100644
--- a/deps/v8/test/inspector/debugger/wasm-step-after-trap.js
+++ b/deps/v8/test/inspector/debugger/wasm-step-after-trap.js
@@ -64,6 +64,7 @@ contextGroup.addScript(call_div.toString());
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
await Protocol.Debugger.setPauseOnExceptions({state: 'all'});
InspectorTest.log('Instantiating.');
diff --git a/deps/v8/test/inspector/debugger/wasm-step-from-non-breakable-position.js b/deps/v8/test/inspector/debugger/wasm-step-from-non-breakable-position.js
index aa4b92b59b..cbb7c5b39f 100644
--- a/deps/v8/test/inspector/debugger/wasm-step-from-non-breakable-position.js
+++ b/deps/v8/test/inspector/debugger/wasm-step-from-non-breakable-position.js
@@ -26,6 +26,7 @@ InspectorTest.runAsyncTestSuite([
InspectorTest.logProtocolCommandCalls('Debugger.stepInto');
InspectorTest.logProtocolCommandCalls('Debugger.resume');
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Setting up global instance variable.');
WasmInspectorTest.instantiate(module_bytes);
diff --git a/deps/v8/test/inspector/debugger/wasm-stepping-in-from-js.js b/deps/v8/test/inspector/debugger/wasm-stepping-in-from-js.js
index e445b436e9..7de5aa9c8f 100644
--- a/deps/v8/test/inspector/debugger/wasm-stepping-in-from-js.js
+++ b/deps/v8/test/inspector/debugger/wasm-stepping-in-from-js.js
@@ -41,11 +41,11 @@ contextGroup.addScript(`
function test() {
debugger;
instance.exports.main(1);
-}
-//# sourceURL=test.js`);
+}`, 0, 0, 'test.js');
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Calling instantiate function.');
WasmInspectorTest.instantiate(module_bytes);
diff --git a/deps/v8/test/inspector/debugger/wasm-stepping-no-opcode-merging.js b/deps/v8/test/inspector/debugger/wasm-stepping-no-opcode-merging.js
index a89db04cdb..02e04e0fb2 100644
--- a/deps/v8/test/inspector/debugger/wasm-stepping-no-opcode-merging.js
+++ b/deps/v8/test/inspector/debugger/wasm-stepping-no-opcode-merging.js
@@ -23,6 +23,7 @@ Protocol.Debugger.onPaused(printPauseLocationAndStep);
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
WasmInspectorTest.instantiate(module_bytes);
[, {params: {scriptId: wasm_script_id}}] = await Protocol.Debugger.onceScriptParsed(2);
diff --git a/deps/v8/test/inspector/debugger/wasm-stepping-out-from-js.js b/deps/v8/test/inspector/debugger/wasm-stepping-out-from-js.js
index a3c837d311..858072e89b 100644
--- a/deps/v8/test/inspector/debugger/wasm-stepping-out-from-js.js
+++ b/deps/v8/test/inspector/debugger/wasm-stepping-out-from-js.js
@@ -34,6 +34,7 @@ function pauseAlternating() {
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Instantiating.');
const instantiate_code =
diff --git a/deps/v8/test/inspector/debugger/wasm-stepping-to-js.js b/deps/v8/test/inspector/debugger/wasm-stepping-to-js.js
index 2debb024ee..df38437a9c 100644
--- a/deps/v8/test/inspector/debugger/wasm-stepping-to-js.js
+++ b/deps/v8/test/inspector/debugger/wasm-stepping-to-js.js
@@ -58,11 +58,11 @@ function test() {
instance.exports.main();
var x = 1;
x++;
-}
-//# sourceURL=test.js`);
+}`, 0, 0, 'test.js');
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Calling instantiate function.');
WasmInspectorTest.instantiate(module_bytes);
diff --git a/deps/v8/test/inspector/debugger/wasm-stepping-with-skiplist.js b/deps/v8/test/inspector/debugger/wasm-stepping-with-skiplist.js
index 32301dc7bd..30c7f77daf 100644
--- a/deps/v8/test/inspector/debugger/wasm-stepping-with-skiplist.js
+++ b/deps/v8/test/inspector/debugger/wasm-stepping-with-skiplist.js
@@ -46,6 +46,7 @@ const func_a_end_offset = func_a_start_offset + 2;
InspectorTest.runAsyncTestSuite([
async function test() {
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Setting up global instance variable');
WasmInspectorTest.instantiate(module_bytes);
diff --git a/deps/v8/test/inspector/debugger/wasm-stepping-with-source-map-expected.txt b/deps/v8/test/inspector/debugger/wasm-stepping-with-source-map-expected.txt
index f9890d5a3a..ee855d2bf7 100644
--- a/deps/v8/test/inspector/debugger/wasm-stepping-with-source-map-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-stepping-with-source-map-expected.txt
@@ -12,7 +12,7 @@ Setting breakpoint on offset 54 (on the setlocal before the call), url wasm://wa
scriptId : <scriptId>
}
Script wasm://wasm/9b4bf87e byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
-at wasm_B (0:54):
+at $wasm_B (0:54):
- scope (wasm-expression-stack):
0: 3 (i32)
- scope (local):
@@ -24,7 +24,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 3 (i32)
@@ -35,12 +35,12 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 38: Wasm opcode 0x01 (kExprNop)
-at wasm_A (0:38):
+at $wasm_A (0:38):
- scope (wasm-expression-stack):
- scope (local):
- scope (module):
-- skipped
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 3 (i32)
@@ -51,12 +51,12 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepOver called
Script wasm://wasm/9b4bf87e byte offset 39: Wasm opcode 0x01 (kExprNop)
-at wasm_A (0:39):
+at $wasm_A (0:39):
- scope (wasm-expression-stack):
- scope (local):
- scope (module):
-- skipped
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 3 (i32)
@@ -67,7 +67,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepOut called
Script wasm://wasm/9b4bf87e byte offset 58: Wasm opcode 0x0c (kExprBr)
-at wasm_B (0:58):
+at $wasm_B (0:58):
- scope (wasm-expression-stack):
- scope (local):
$var0: 3 (i32)
@@ -78,7 +78,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepOut called
Script wasm://wasm/9b4bf87e byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
-at wasm_B (0:54):
+at $wasm_B (0:54):
- scope (wasm-expression-stack):
0: 2 (i32)
- scope (local):
@@ -90,7 +90,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepOver called
Script wasm://wasm/9b4bf87e byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 2 (i32)
@@ -101,7 +101,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepOver called
Script wasm://wasm/9b4bf87e byte offset 58: Wasm opcode 0x0c (kExprBr)
-at wasm_B (0:58):
+at $wasm_B (0:58):
- scope (wasm-expression-stack):
- scope (local):
$var0: 2 (i32)
@@ -112,7 +112,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.resume called
Script wasm://wasm/9b4bf87e byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
-at wasm_B (0:54):
+at $wasm_B (0:54):
- scope (wasm-expression-stack):
0: 1 (i32)
- scope (local):
@@ -124,7 +124,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 1 (i32)
@@ -135,12 +135,12 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 38: Wasm opcode 0x01 (kExprNop)
-at wasm_A (0:38):
+at $wasm_A (0:38):
- scope (wasm-expression-stack):
- scope (local):
- scope (module):
-- skipped
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 1 (i32)
@@ -151,7 +151,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepOut called
Script wasm://wasm/9b4bf87e byte offset 58: Wasm opcode 0x0c (kExprBr)
-at wasm_B (0:58):
+at $wasm_B (0:58):
- scope (wasm-expression-stack):
- scope (local):
$var0: 1 (i32)
@@ -162,7 +162,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 45: Wasm opcode 0x20 (kExprLocalGet)
-at wasm_B (0:45):
+at $wasm_B (0:45):
- scope (wasm-expression-stack):
- scope (local):
$var0: 1 (i32)
@@ -173,7 +173,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 47: Wasm opcode 0x04 (kExprIf)
-at wasm_B (0:47):
+at $wasm_B (0:47):
- scope (wasm-expression-stack):
0: 1 (i32)
- scope (local):
@@ -185,7 +185,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 49: Wasm opcode 0x20 (kExprLocalGet)
-at wasm_B (0:49):
+at $wasm_B (0:49):
- scope (wasm-expression-stack):
- scope (local):
$var0: 1 (i32)
@@ -196,7 +196,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 51: Wasm opcode 0x41 (kExprI32Const)
-at wasm_B (0:51):
+at $wasm_B (0:51):
- scope (wasm-expression-stack):
0: 1 (i32)
- scope (local):
@@ -208,7 +208,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 53: Wasm opcode 0x6b (kExprI32Sub)
-at wasm_B (0:53):
+at $wasm_B (0:53):
- scope (wasm-expression-stack):
0: 1 (i32)
1: 1 (i32)
@@ -221,7 +221,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 54: Wasm opcode 0x21 (kExprLocalSet)
-at wasm_B (0:54):
+at $wasm_B (0:54):
- scope (wasm-expression-stack):
0: 0 (i32)
- scope (local):
@@ -233,7 +233,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 56: Wasm opcode 0x10 (kExprCallFunction)
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 0 (i32)
@@ -244,12 +244,12 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 38: Wasm opcode 0x01 (kExprNop)
-at wasm_A (0:38):
+at $wasm_A (0:38):
- scope (wasm-expression-stack):
- scope (local):
- scope (module):
-- skipped
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 0 (i32)
@@ -260,12 +260,12 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 39: Wasm opcode 0x01 (kExprNop)
-at wasm_A (0:39):
+at $wasm_A (0:39):
- scope (wasm-expression-stack):
- scope (local):
- scope (module):
-- skipped
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 0 (i32)
@@ -276,12 +276,12 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 40: Wasm opcode 0x0b (kExprEnd)
-at wasm_A (0:40):
+at $wasm_A (0:40):
- scope (wasm-expression-stack):
- scope (local):
- scope (module):
-- skipped
-at wasm_B (0:56):
+at $wasm_B (0:56):
- scope (wasm-expression-stack):
- scope (local):
$var0: 0 (i32)
@@ -292,7 +292,7 @@ at (anonymous) (0:17):
-- skipped
Debugger.stepInto called
Script wasm://wasm/9b4bf87e byte offset 58: Wasm opcode 0x0c (kExprBr)
-at wasm_B (0:58):
+at $wasm_B (0:58):
- scope (wasm-expression-stack):
- scope (local):
$var0: 0 (i32)
diff --git a/deps/v8/test/inspector/debugger/wasm-stepping-with-source-map.js b/deps/v8/test/inspector/debugger/wasm-stepping-with-source-map.js
index 7d80628131..ce31be6747 100644
--- a/deps/v8/test/inspector/debugger/wasm-stepping-with-source-map.js
+++ b/deps/v8/test/inspector/debugger/wasm-stepping-with-source-map.js
@@ -41,6 +41,7 @@ InspectorTest.runAsyncTestSuite([
for (const action of ['stepInto', 'stepOver', 'stepOut', 'resume'])
InspectorTest.logProtocolCommandCalls('Debugger.' + action);
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
WasmInspectorTest.instantiate(module_bytes);
const [, {params: wasmScript}] = await Protocol.Debugger.onceScriptParsed(2);
diff --git a/deps/v8/test/inspector/debugger/wasm-stepping.js b/deps/v8/test/inspector/debugger/wasm-stepping.js
index 30deadaaef..e1721f3ffb 100644
--- a/deps/v8/test/inspector/debugger/wasm-stepping.js
+++ b/deps/v8/test/inspector/debugger/wasm-stepping.js
@@ -59,6 +59,7 @@ InspectorTest.runAsyncTestSuite([
for (const action of ['stepInto', 'stepOver', 'stepOut', 'resume'])
InspectorTest.logProtocolCommandCalls('Debugger.' + action);
+ await Protocol.Runtime.enable();
await Protocol.Debugger.enable();
InspectorTest.log('Setting up global instance variable.');
WasmInspectorTest.instantiate(module_bytes);
diff --git a/deps/v8/test/inspector/debugger/wasm-unnamed-function-names-expected.txt b/deps/v8/test/inspector/debugger/wasm-unnamed-function-names-expected.txt
index e0146285cf..b7c820b855 100644
--- a/deps/v8/test/inspector/debugger/wasm-unnamed-function-names-expected.txt
+++ b/deps/v8/test/inspector/debugger/wasm-unnamed-function-names-expected.txt
@@ -5,7 +5,7 @@ Running testFunction with generated wasm bytes...
Paused on 'debugger;'
Number of frames: 5
- [0] call_debugger
- - [1] func1
- - [2] main
+ - [1] $func1
+ - [2] $main
- [3] testFunction
- [4]
diff --git a/deps/v8/test/inspector/inspector-test.cc b/deps/v8/test/inspector/inspector-test.cc
index bc785e919d..ce3caf7661 100644
--- a/deps/v8/test/inspector/inspector-test.cc
+++ b/deps/v8/test/inspector/inspector-test.cc
@@ -3,8 +3,8 @@
// found in the LICENSE file.
#if !defined(_WIN32) && !defined(_WIN64)
-#include <unistd.h> // NOLINT
-#endif // !defined(_WIN32) && !defined(_WIN64)
+#include <unistd.h>
+#endif // !defined(_WIN32) && !defined(_WIN64)
#include <locale.h>
@@ -128,7 +128,7 @@ class UtilsExtension : public IsolateData::SetupGlobalTask {
v8::Local<v8::String> str_obj;
if (arg->IsSymbol()) {
- arg = v8::Local<v8::Symbol>::Cast(arg)->Description();
+ arg = v8::Local<v8::Symbol>::Cast(arg)->Description(args.GetIsolate());
}
if (!arg->ToString(args.GetIsolate()->GetCurrentContext())
.ToLocal(&str_obj)) {
@@ -171,7 +171,7 @@ class UtilsExtension : public IsolateData::SetupGlobalTask {
std::string filename(*str, str.length());
*chars = v8::internal::ReadFile(filename.c_str(), &exists);
if (!exists) {
- isolate->ThrowException(ToV8String(isolate, "Error reading file"));
+ isolate->ThrowError("Error reading file");
return false;
}
return true;
@@ -632,14 +632,14 @@ class InspectorExtension : public IsolateData::SetupGlobalTask {
static void AccessorGetter(v8::Local<v8::String> property,
const v8::PropertyCallbackInfo<v8::Value>& info) {
v8::Isolate* isolate = info.GetIsolate();
- isolate->ThrowException(ToV8String(isolate, "Getter is called"));
+ isolate->ThrowError("Getter is called");
}
static void AccessorSetter(v8::Local<v8::String> property,
v8::Local<v8::Value> value,
const v8::PropertyCallbackInfo<void>& info) {
v8::Isolate* isolate = info.GetIsolate();
- isolate->ThrowException(ToV8String(isolate, "Setter is called"));
+ isolate->ThrowError("Setter is called");
}
static void StoreCurrentStackTrace(
diff --git a/deps/v8/test/inspector/inspector.status b/deps/v8/test/inspector/inspector.status
index 5e13f52dfd..9803a2954e 100644
--- a/deps/v8/test/inspector/inspector.status
+++ b/deps/v8/test/inspector/inspector.status
@@ -26,7 +26,7 @@
'regress/regress-crbug-1080638': [SKIP],
# https://crbug.com/v8/11338
- 'runtime-call-stats/enable-disable': [PASS, ['verify_csa', SKIP]],
+ 'runtime-call-stats/enable-disable': [SKIP],
}], # ALWAYS
##############################################################################
@@ -44,6 +44,12 @@
}], # 'system == android'
##############################################################################
+['system == macos', {
+ # Bug(v8:11399): Deadlock on Mac.
+ 'cpu-profiler/console-profile-wasm': [SKIP],
+}],
+
+##############################################################################
['variant != default', {
# Issue 6167.
'debugger/eval-scopes': [PASS, FAIL],
@@ -108,23 +114,26 @@
##############################################################################
['arch == s390 or arch == s390x', {
- # Stack manipulations in LiveEdit is not implemented for this arch.
- 'debugger/set-script-source-stack-padding': [SKIP],
# Liftoff needs to be enabled before running these tests.
'debugger/wasm-*': [SKIP],
}], # 'arch == s390 or arch == s390x'
##############################################################################
-['(arch == mipsel or arch == mips64el) and not simd_mips', {
- # Skip tests that fail on MIPS architectures that don't support SIMD.
- 'debugger/wasm-scope-info*': [SKIP],
-}], # '(arch == mipsel or arch == mips64el) and not simd_mips'
+['no_simd_hardware', {
+ # Test contains SIMD value.
+ 'debugger/wasm-scope-info': [SKIP],
+}], # no_simd_hardware
##############################################################################
['arch == riscv64', {
# SIMD support is still in progress.
'debugger/wasm-scope-info*': [SKIP],
'debugger/wasm-step-after-trap': [SKIP],
+
+}], # 'arch == riscv64'
+
+['arch == riscv64 and variant == stress_incremental_marking', {
+ 'debugger/wasm-gc-breakpoints': [SKIP]
}], # 'arch == riscv64'
################################################################################
@@ -202,4 +211,317 @@
'runtime/evaluate-async': [SKIP],
}], # asan == True
+################################################################################
+['third_party_heap', {
+ # Requires a second isolate
+ 'regress/regress-crbug-1207867': [SKIP],
+ 'regress/regress-crbug-1197392': [SKIP],
+ 'debugger/command-line-api-with-arrow-function': [SKIP],
+ 'regress/regress-crbug-1199919': [SKIP],
+ 'console/destroy-context-during-log': [SKIP],
+ 'console/scoped-variables': [SKIP],
+ 'counters/collection': [SKIP],
+ 'counters/enable-disable': [SKIP],
+ 'cpu-profiler/console-profile': [SKIP],
+ 'cpu-profiler/console-profile-asm-js': [SKIP],
+ 'cpu-profiler/console-profile-end-parameterless-crash': [SKIP],
+ 'cpu-profiler/console-profile-wasm': [SKIP],
+ 'cpu-profiler/coverage': [SKIP],
+ 'cpu-profiler/coverage-block': [SKIP],
+ 'cpu-profiler/enable-disable': [SKIP],
+ 'cpu-profiler/record-cpu-profile': [SKIP],
+ 'cpu-profiler/stop-without-preceeding-start': [SKIP],
+ 'debugger/asm-js-breakpoint-before-exec': [SKIP],
+ 'debugger/asm-js-breakpoint-during-exec': [SKIP],
+ 'debugger/asm-js-stack': [SKIP],
+ 'debugger/async-chains': [SKIP],
+ 'debugger/async-console-count-doesnt-crash': [SKIP],
+ 'debugger/async-for-await-of-promise-stack': [SKIP],
+ 'debugger/async-function-step-out': [SKIP],
+ 'debugger/async-instrumentation': [SKIP],
+ 'debugger/async-promise-late-then': [SKIP],
+ 'debugger/async-set-timeout': [SKIP],
+ 'debugger/async-stack-await': [SKIP],
+ 'debugger/async-stack-created-frame': [SKIP],
+ 'debugger/async-stack-for-promise': [SKIP],
+ 'debugger/async-stack-load-more': [SKIP],
+ 'debugger/break-location-function-calls': [SKIP],
+ 'debugger/break-locations-await': [SKIP],
+ 'debugger/break-locations-var-init': [SKIP],
+ 'debugger/break-on-exception': [SKIP],
+ 'debugger/break-on-exception-and-step': [SKIP],
+ 'debugger/break-on-exception-compiler-errors': [SKIP],
+ 'debugger/breakpoints': [SKIP],
+ 'debugger/breakpoints-and-side-effects': [SKIP],
+ 'debugger/call-frame-function-location': [SKIP],
+ 'debugger/call-frame-url': [SKIP],
+ 'debugger/caught-exception-from-framework-inside-async': [SKIP],
+ 'debugger/caught-uncaught-exceptions': [SKIP],
+ 'debugger/change-return-value': [SKIP],
+ 'debugger/class-fields-scopes': [SKIP],
+ 'debugger/class-private-fields-scopes': [SKIP],
+ 'debugger/class-private-methods': [SKIP],
+ 'debugger/class-private-methods-empty-inner': [SKIP],
+ 'debugger/class-private-methods-preview': [SKIP],
+ 'debugger/class-private-methods-static': [SKIP],
+ 'debugger/class-private-methods-static-nested': [SKIP],
+ 'debugger/class-private-methods-static-preview': [SKIP],
+ 'debugger/class-private-methods-unused': [SKIP],
+ 'debugger/clear-breakpoints-on-disable': [SKIP],
+ 'debugger/collect-obsolete-async-tasks': [SKIP],
+ 'debugger/collect-old-async-call-chains': [SKIP],
+ 'debugger/command-line-api-with-bound-function': [SKIP],
+ 'debugger/continue-to-location': [SKIP],
+ 'debugger/continue-to-location-target-call-frames': [SKIP],
+ 'debugger/destroy-in-break-program': [SKIP],
+ 'debugger/destroy-in-break-program2': [SKIP],
+ 'debugger/destructuring': [SKIP],
+ 'debugger/disable-agent-on-pause': [SKIP],
+ 'debugger/doesnt-step-into-injected-script': [SKIP],
+ 'debugger/es6-module-liveedit': [SKIP],
+ 'debugger/es6-module-script-parsed': [SKIP],
+ 'debugger/eval-scopes': [SKIP],
+ 'debugger/eval-without-codegen': [SKIP],
+ 'debugger/evaluate-at-first-module-line': [SKIP],
+ 'debugger/evaluate-on-call-frame': [SKIP],
+ 'debugger/evaluate-on-call-frame-in-module': [SKIP],
+ 'debugger/evaluate-on-call-frame-return-values': [SKIP],
+ 'debugger/evaluate-on-call-frame-timeout': [SKIP],
+ 'debugger/external-stack-trace': [SKIP],
+ 'debugger/for-of-loops': [SKIP],
+ 'debugger/framework-break': [SKIP],
+ 'debugger/framework-nested-scheduled-break': [SKIP],
+ 'debugger/framework-precise-ranges': [SKIP],
+ 'debugger/framework-stepping': [SKIP],
+ 'debugger/get-possible-breakpoints': [SKIP],
+ 'debugger/get-possible-breakpoints-after-gc': [SKIP],
+ 'debugger/get-possible-breakpoints-array-literal': [SKIP],
+ 'debugger/get-possible-breakpoints-class-fields': [SKIP],
+ 'debugger/get-possible-breakpoints-lazy-error': [SKIP],
+ 'debugger/get-possible-breakpoints-master': [SKIP],
+ 'debugger/get-possible-breakpoints-restrict-to-function': [SKIP],
+ 'debugger/get-properties-paused': [SKIP],
+ 'debugger/inspector-break-api': [SKIP],
+ 'debugger/limit-size-of-collected-scripts': [SKIP],
+ 'debugger/max-async-call-chain-depth': [SKIP],
+ 'debugger/max-async-call-stack-depth-changed': [SKIP],
+ 'debugger/not-hold-promises': [SKIP],
+ 'debugger/object-preview-internal-properties': [SKIP],
+ 'debugger/pause': [SKIP],
+ 'debugger/pause-at-negative-offset': [SKIP],
+ 'debugger/pause-inside-blackboxed-optimized': [SKIP],
+ 'debugger/pause-on-async-call': [SKIP],
+ 'debugger/pause-on-async-call-set-timeout': [SKIP],
+ 'debugger/pause-on-oom': [SKIP],
+ 'debugger/pause-on-oom-extrawide': [SKIP],
+ 'debugger/pause-on-oom-wide': [SKIP],
+ 'debugger/pause-on-promise-rejections': [SKIP],
+ 'debugger/promise-chain-when-limit-hit': [SKIP],
+ 'debugger/protocol-string-to-double-locale': [SKIP],
+ 'debugger/provisional-breakpoint-for-anonymous-script': [SKIP],
+ 'debugger/regress-1125934': [SKIP],
+ 'debugger/regress-1190290': [SKIP],
+ 'debugger/regress-crbug-481896': [SKIP],
+ 'debugger/regression-1185540': [SKIP],
+ 'debugger/regression-1853': [SKIP],
+ 'debugger/regression-419663': [SKIP],
+ 'debugger/regression-424142': [SKIP],
+ 'debugger/remove-breakpoint-at-breakpoint': [SKIP],
+ 'debugger/resource-name-to-url': [SKIP],
+ 'debugger/restart-frame': [SKIP],
+ 'debugger/restore-breakpoint': [SKIP],
+ 'debugger/return-break-locations': [SKIP],
+ 'debugger/scope-skip-variables-with-empty-name': [SKIP],
+ 'debugger/script-end-location': [SKIP],
+ 'debugger/script-on-after-compile': [SKIP],
+ 'debugger/script-origin-stack': [SKIP],
+ 'debugger/script-parsed-for-runtime-evaluate': [SKIP],
+ 'debugger/script-parsed-hash': [SKIP],
+ 'debugger/script-unique-hash': [SKIP],
+ 'debugger/set-async-call-stack-depth': [SKIP],
+ 'debugger/set-blackbox-patterns': [SKIP],
+ 'debugger/set-breakpoint': [SKIP],
+ 'debugger/set-breakpoint-after-gc': [SKIP],
+ 'debugger/set-breakpoint-after-liveedit': [SKIP],
+ 'debugger/set-breakpoint-at-last-line': [SKIP],
+ 'debugger/set-breakpoint-before-enabling': [SKIP],
+ 'debugger/set-breakpoint-breaks-on-first-breakable-location': [SKIP],
+ 'debugger/set-breakpoint-ignore-hint-when-no-location': [SKIP],
+ 'debugger/set-breakpoint-in-class-initializer': [SKIP],
+ 'debugger/set-breakpoint-inline-function': [SKIP],
+ 'debugger/set-breakpoint-on-function-call': [SKIP],
+ 'debugger/set-breakpoint-url-regex': [SKIP],
+ 'debugger/set-instrumentation-breakpoint': [SKIP],
+ 'debugger/set-script-source': [SKIP],
+ 'debugger/set-script-source-exception': [SKIP],
+ 'debugger/set-script-source-unchanged': [SKIP],
+ 'debugger/set-skip-all-pauses': [SKIP],
+ 'debugger/set-variable-value': [SKIP],
+ 'debugger/side-effect-free-coverage-enabled': [SKIP],
+ 'debugger/side-effect-free-debug-evaluate': [SKIP],
+ 'debugger/step-into': [SKIP],
+ 'debugger/step-into-break-on-async-call': [SKIP],
+ 'debugger/step-into-external-async-task': [SKIP],
+ 'debugger/step-into-external-async-task-same-context': [SKIP],
+ 'debugger/step-into-nested-arrow': [SKIP],
+ 'debugger/step-into-next-script': [SKIP],
+ 'debugger/step-into-optimized-blackbox': [SKIP],
+ 'debugger/step-into-out': [SKIP],
+ 'debugger/step-out-async-await': [SKIP],
+ 'debugger/step-over-another-context-group': [SKIP],
+ 'debugger/step-over-caught-exception': [SKIP],
+ 'debugger/step-snapshot': [SKIP],
+ 'debugger/stepping-after-get-possible-breakpoints': [SKIP],
+ 'debugger/stepping-and-break-program-api': [SKIP],
+ 'debugger/stepping-tail-call': [SKIP],
+ 'debugger/stepping-with-blackboxed-ranges': [SKIP],
+ 'debugger/stepping-with-natives-and-frameworks': [SKIP],
+ 'debugger/stepping-with-skiplist': [SKIP],
+ 'debugger/suspended-generator-scopes': [SKIP],
+ 'debugger/tdz-modules-scopes': [SKIP],
+ 'debugger/tdz-scopes': [SKIP],
+ 'debugger/terminate-execution-on-pause': [SKIP],
+ 'debugger/this-in-arrow-function': [SKIP],
+ 'debugger/update-call-frame-scopes': [SKIP],
+ 'debugger/wasm-breakpoint-reset-on-debugger-restart': [SKIP],
+ 'debugger/wasm-conditional-breakpoints': [SKIP],
+ 'debugger/wasm-debug-command': [SKIP],
+ 'debugger/wasm-evaluate-on-call-frame': [SKIP],
+ 'debugger/wasm-gc-breakpoints': [SKIP],
+ 'debugger/wasm-gc-in-debug-break': [SKIP],
+ 'debugger/wasm-get-breakable-locations-byte-offsets': [SKIP],
+ 'debugger/wasm-global-names': [SKIP],
+ 'debugger/wasm-imports': [SKIP],
+ 'debugger/wasm-inspect-many-registers': [SKIP],
+ 'debugger/wasm-instrumentation-breakpoint': [SKIP],
+ 'debugger/wasm-memory-names': [SKIP],
+ 'debugger/wasm-regress-10957': [SKIP],
+ 'debugger/wasm-remove-breakpoint': [SKIP],
+ 'debugger/wasm-reset-context-group': [SKIP],
+ 'debugger/wasm-scope-info': [SKIP],
+ 'debugger/wasm-script-code-offset': [SKIP],
+ 'debugger/wasm-script-code-offset-streaming': [SKIP],
+ 'debugger/wasm-scripts': [SKIP],
+ 'debugger/wasm-scripts-with-name': [SKIP],
+ 'debugger/wasm-set-breakpoint': [SKIP],
+ 'debugger/wasm-set-breakpoint-breaks-on-first-breakable-location': [SKIP],
+ 'debugger/wasm-source': [SKIP],
+ 'debugger/wasm-stack': [SKIP],
+ 'debugger/wasm-stack-check': [SKIP],
+ 'debugger/wasm-step-a-lot': [SKIP],
+ 'debugger/wasm-step-after-trap': [SKIP],
+ 'debugger/wasm-step-from-non-breakable-position': [SKIP],
+ 'debugger/wasm-stepping': [SKIP],
+ 'debugger/wasm-stepping-in-from-js': [SKIP],
+ 'debugger/wasm-stepping-no-opcode-merging': [SKIP],
+ 'debugger/wasm-stepping-out-from-js': [SKIP],
+ 'debugger/wasm-stepping-to-js': [SKIP],
+ 'debugger/wasm-stepping-with-skiplist': [SKIP],
+ 'debugger/wasm-stepping-with-source-map': [SKIP],
+ 'debugger/wasm-unnamed-function-names': [SKIP],
+ 'heap-profiler/collect-garbage': [SKIP],
+ 'heap-profiler/console-retaining-path': [SKIP],
+ 'heap-profiler/sampling-heap-profiler': [SKIP],
+ 'heap-profiler/take-heap-snapshot-on-pause': [SKIP],
+ 'json-parse': [SKIP],
+ 'print-method-not-found': [SKIP],
+ 'regress/regress-crbug-1147552': [SKIP],
+ 'regress/regress-crbug-1183664': [SKIP],
+ 'runtime-call-stats/collection': [SKIP],
+ 'runtime-call-stats/enable-disable': [SKIP],
+ 'runtime/add-binding': [SKIP],
+ 'runtime/await-promise': [SKIP],
+ 'runtime/call-function-on-async': [SKIP],
+ 'runtime/clear-of-command-line-api': [SKIP],
+ 'runtime/client-console-api-message': [SKIP],
+ 'runtime/command-line-api': [SKIP],
+ 'runtime/compile-script': [SKIP],
+ 'runtime/console-api-repeated-in-console': [SKIP],
+ 'runtime/console-assert': [SKIP],
+ 'runtime/console-context': [SKIP],
+ 'runtime/console-line-and-column': [SKIP],
+ 'runtime/console-log-doesnt-run-microtasks': [SKIP],
+ 'runtime/console-memory': [SKIP],
+ 'runtime/console-message-omit-data-urls': [SKIP],
+ 'runtime/console-messages-limits': [SKIP],
+ 'runtime/console-methods': [SKIP],
+ 'runtime/console-spec': [SKIP],
+ 'runtime/console-table': [SKIP],
+ 'runtime/console-time-end-format': [SKIP],
+ 'runtime/console-time-log': [SKIP],
+ 'runtime/console-time-repeat': [SKIP],
+ 'runtime/console-timestamp': [SKIP],
+ 'runtime/context-destroyed-on-context-collected': [SKIP],
+ 'runtime/create-context': [SKIP],
+ 'runtime/custom-preview': [SKIP],
+ 'runtime/enable-async-stack': [SKIP],
+ 'runtime/error-preview': [SKIP],
+ 'runtime/es6-module': [SKIP],
+ 'runtime/evaluate-async': [SKIP],
+ 'runtime/evaluate-async-with-wrap-error': [SKIP],
+ 'runtime/evaluate-empty-stack': [SKIP],
+ 'runtime/evaluate-new-function-error': [SKIP],
+ 'runtime/evaluate-repl-await': [SKIP],
+ 'runtime/evaluate-repl-mode': [SKIP],
+ 'runtime/evaluate-repl-mode-code-cache': [SKIP],
+ 'runtime/evaluate-repl-mode-side-effecting': [SKIP],
+ 'runtime/evaluate-run-microtasks': [SKIP],
+ 'runtime/evaluate-timeout': [SKIP],
+ 'runtime/evaluate-unique-context-id': [SKIP],
+ 'runtime/evaluate-unserializable': [SKIP],
+ 'runtime/evaluate-with-context-id-equal-zero': [SKIP],
+ 'runtime/evaluate-with-disable-breaks': [SKIP],
+ 'runtime/evaluate-with-generate-preview': [SKIP],
+ 'runtime/evaluate-without-side-effects': [SKIP],
+ 'runtime/exception-thrown': [SKIP],
+ 'runtime/exceptionthrown-on-connect': [SKIP],
+ 'runtime/function-location': [SKIP],
+ 'runtime/function-scopes': [SKIP],
+ 'runtime/get-heap-usage': [SKIP],
+ 'runtime/get-isolate-id': [SKIP],
+ 'runtime/get-properties': [SKIP],
+ 'runtime/get-properties-on-proxy': [SKIP],
+ 'runtime/get-properties-preview': [SKIP],
+ 'runtime/internal-properties': [SKIP],
+ 'runtime/internal-properties-entries': [SKIP],
+ 'runtime/length-or-size-description': [SKIP],
+ 'runtime/property-on-console-proto': [SKIP],
+ 'runtime/protocol-works-with-different-locale': [SKIP],
+ 'runtime/query-objects': [SKIP],
+ 'runtime/regress-1075763': [SKIP],
+ 'runtime/regress-1078205': [SKIP],
+ 'runtime/regress-986051': [SKIP],
+ 'runtime/regression-1052721': [SKIP],
+ 'runtime/regression-1140845': [SKIP],
+ 'runtime/regression-732717': [SKIP],
+ 'runtime/regression-736302': [SKIP],
+ 'runtime/release-object': [SKIP],
+ 'runtime/remote-object': [SKIP],
+ 'runtime/remote-object-get-properties': [SKIP],
+ 'runtime/run-script-async': [SKIP],
+ 'runtime/runtime-disable-preserve-injected-script': [SKIP],
+ 'runtime/runtime-evaluate-null-property': [SKIP],
+ 'runtime/runtime-evaluate-with-dirty-context': [SKIP],
+ 'runtime/runtime-get-properties-and-accessor': [SKIP],
+ 'runtime/runtime-global-lexical-scope-names': [SKIP],
+ 'runtime/runtime-restore': [SKIP],
+ 'runtime/set-max-call-stack-size': [SKIP],
+ 'runtime/set-or-map-entries': [SKIP],
+ 'runtime/terminate-execution': [SKIP],
+ 'sessions/create-session': [SKIP],
+ 'sessions/debugger-stepping-and-breakpoints': [SKIP],
+ 'sessions/pause-on-console-assert': [SKIP],
+ 'sessions/runtime-command-line-api': [SKIP],
+ 'sessions/runtime-console-api-called': [SKIP],
+ 'sessions/runtime-evaluate': [SKIP],
+ 'sessions/runtime-evaluate-exception': [SKIP],
+ 'sessions/runtime-remote-object': [SKIP],
+ 'type-profiler/type-profile': [SKIP],
+ 'type-profiler/type-profile-disable': [SKIP],
+ 'type-profiler/type-profile-start-stop': [SKIP],
+ 'type-profiler/type-profile-with-classes': [SKIP],
+ 'type-profiler/type-profile-with-to-string-tag': [SKIP],
+ 'regress/regress-crbug-1195927': [SKIP],
+}], # third_party_heap
+
]
diff --git a/deps/v8/test/inspector/isolate-data.cc b/deps/v8/test/inspector/isolate-data.cc
index 35f51c1fcd..b45e795fe4 100644
--- a/deps/v8/test/inspector/isolate-data.cc
+++ b/deps/v8/test/inspector/isolate-data.cc
@@ -139,8 +139,14 @@ v8::MaybeLocal<v8::Module> IsolateData::ModuleResolveCallback(
// TODO(v8:11189) Consider JSON modules support in the InspectorClient
IsolateData* data = IsolateData::FromContext(context);
std::string str = *v8::String::Utf8Value(data->isolate(), specifier);
- return data->modules_[ToVector(data->isolate(), specifier)].Get(
- data->isolate());
+ v8::MaybeLocal<v8::Module> maybe_module =
+ data->modules_[ToVector(data->isolate(), specifier)].Get(data->isolate());
+ if (maybe_module.IsEmpty()) {
+ data->isolate()->ThrowError(v8::String::Concat(
+ data->isolate(),
+ ToV8String(data->isolate(), "Failed to resolve module: "), specifier));
+ }
+ return maybe_module;
}
int IsolateData::ConnectSession(int context_group_id,
diff --git a/deps/v8/test/inspector/regress/regress-crbug-1195927-expected.txt b/deps/v8/test/inspector/regress/regress-crbug-1195927-expected.txt
new file mode 100644
index 0000000000..b5c92408da
--- /dev/null
+++ b/deps/v8/test/inspector/regress/regress-crbug-1195927-expected.txt
@@ -0,0 +1,32 @@
+Regression test for crbug.com/1195927
+
+Running test: test
+Debugger.setBreakpoint result:
+{
+ actualLocation : {
+ columnNumber : 2
+ lineNumber : 2
+ scriptId : <scriptId>
+ }
+ breakpointId : <breakpointId>
+}
+Debugger.paused call frames:
+foo (foo.js:2:2)
+(anonymous) (:0:0)
+Debugger.setScriptSource result:
+{
+ exceptionDetails : {
+ columnNumber : 0
+ exceptionId : <exceptionId>
+ lineNumber : 0
+ text :
+ }
+}
+foo(42) result:
+{
+ result : {
+ description : 43
+ type : number
+ value : 43
+ }
+}
diff --git a/deps/v8/test/inspector/regress/regress-crbug-1195927.js b/deps/v8/test/inspector/regress/regress-crbug-1195927.js
new file mode 100644
index 0000000000..2a2306f609
--- /dev/null
+++ b/deps/v8/test/inspector/regress/regress-crbug-1195927.js
@@ -0,0 +1,54 @@
+// Copyright 2021 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.
+
+const {session, contextGroup, Protocol} =
+ InspectorTest.start('Regression test for crbug.com/1195927');
+
+const source = `
+function foo(x) {
+ x = x + 1;
+ return x;
+}
+`;
+
+const newSource = `
+function foo(x) {
+ x = x + 2;
+ return x;
+}
+`;
+
+InspectorTest.runAsyncTestSuite([
+ async function test() {
+ session.setupScriptMap();
+ await Protocol.Runtime.enable();
+ await Protocol.Debugger.enable();
+ contextGroup.addScript(source, 0, 0, 'foo.js');
+ const { params: { scriptId } } = await Protocol.Debugger.onceScriptParsed();
+
+ let {result} = await Protocol.Debugger.setBreakpoint({location: {
+ scriptId,
+ lineNumber: 2,
+ }});
+ InspectorTest.log('Debugger.setBreakpoint result:');
+ InspectorTest.logMessage(result);
+
+ const callPromise = Protocol.Runtime.evaluate({expression: 'foo(42)'});
+
+ let {params: {callFrames}} = await Protocol.Debugger.oncePaused();
+ InspectorTest.log('Debugger.paused call frames:');
+ session.logCallFrames(callFrames);
+
+ ({result} = await Protocol.Debugger.setScriptSource({
+ scriptId,
+ scriptSource: newSource
+ }));
+ InspectorTest.log('Debugger.setScriptSource result:');
+ InspectorTest.logMessage(result);
+
+ ([, {result}] = await Promise.all([Protocol.Debugger.resume(), callPromise]));
+ InspectorTest.log('foo(42) result:');
+ InspectorTest.logMessage(result);
+ }
+]);
diff --git a/deps/v8/test/inspector/regress/regress-crbug-1197392-expected.txt b/deps/v8/test/inspector/regress/regress-crbug-1197392-expected.txt
new file mode 100644
index 0000000000..e6e27f9094
--- /dev/null
+++ b/deps/v8/test/inspector/regress/regress-crbug-1197392-expected.txt
@@ -0,0 +1,10 @@
+Regression test for crbug.com/1197392
+
+Running test: testInvalidSamplingInterval
+{
+ error : {
+ code : -32000
+ message : Invalid sampling interval
+ }
+ id : <messageId>
+}
diff --git a/deps/v8/test/inspector/regress/regress-crbug-1197392.js b/deps/v8/test/inspector/regress/regress-crbug-1197392.js
new file mode 100644
index 0000000000..572d35885a
--- /dev/null
+++ b/deps/v8/test/inspector/regress/regress-crbug-1197392.js
@@ -0,0 +1,16 @@
+// Copyright 2021 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.
+
+// Flags: --sampling-heap-profiler-suppress-randomness
+
+let {contextGroup, Protocol} = InspectorTest.start('Regression test for crbug.com/1197392');
+
+InspectorTest.runAsyncTestSuite([
+ async function testInvalidSamplingInterval() {
+ await Protocol.HeapProfiler.enable();
+ const message = await Protocol.HeapProfiler.startSampling({samplingInterval: 0});
+ InspectorTest.logMessage(message);
+ await Protocol.HeapProfiler.disable();
+ }
+]);
diff --git a/deps/v8/test/inspector/regress/regress-crbug-1207867-expected.txt b/deps/v8/test/inspector/regress/regress-crbug-1207867-expected.txt
new file mode 100644
index 0000000000..edd478cab2
--- /dev/null
+++ b/deps/v8/test/inspector/regress/regress-crbug-1207867-expected.txt
@@ -0,0 +1,41 @@
+Regression test for crbug/1207867
+
+Running test: testFunctionDescription
+{
+ className : Function
+ description : function fun(x) { return x; }
+ objectId : <objectId>
+ type : function
+}
+
+Running test: testArrowFunctionDescription
+{
+ className : Function
+ description : x => x
+ objectId : <objectId>
+ type : function
+}
+
+Running test: testBoundFunctionDescription
+{
+ className : Function
+ description : function () { [native code] }
+ objectId : <objectId>
+ type : function
+}
+
+Running test: testAsyncFunctionDescription
+{
+ className : AsyncFunction
+ description : async function afun(x) { await x; }
+ objectId : <objectId>
+ type : function
+}
+
+Running test: testNativeFunctionDescription
+{
+ className : Function
+ description : function map() { [native code] }
+ objectId : <objectId>
+ type : function
+}
diff --git a/deps/v8/test/inspector/regress/regress-crbug-1207867.js b/deps/v8/test/inspector/regress/regress-crbug-1207867.js
new file mode 100644
index 0000000000..0e05aac0c1
--- /dev/null
+++ b/deps/v8/test/inspector/regress/regress-crbug-1207867.js
@@ -0,0 +1,59 @@
+// Copyright 2021 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.
+
+let {session, contextGroup, Protocol} = InspectorTest.start('Regression test for crbug/1207867');
+
+contextGroup.addScript(`
+function fun(x) { return x; }
+fun.toString = fn => 'bar';
+
+const arrow = x => x;
+arrow.toString = fn => 'baz';
+
+const bound = fun.bind(this);
+bound.toString = fn => 'foo';
+
+async function afun(x) { await x; }
+afun.toString = fn => 'blah';
+
+const native = Array.prototype.map;
+native.toString = fn => 'meh';
+`);
+
+InspectorTest.runAsyncTestSuite([
+ async function testFunctionDescription() {
+ await Protocol.Runtime.enable();
+ const {result: {result}} = await Protocol.Runtime.evaluate({expression: 'fun'});
+ InspectorTest.logMessage(result);
+ await Protocol.Runtime.disable();
+ },
+
+ async function testArrowFunctionDescription() {
+ await Protocol.Runtime.enable();
+ const {result: {result}} = await Protocol.Runtime.evaluate({expression: 'arrow'});
+ InspectorTest.logMessage(result);
+ await Protocol.Runtime.disable();
+ },
+
+ async function testBoundFunctionDescription() {
+ await Protocol.Runtime.enable();
+ const {result: {result}} = await Protocol.Runtime.evaluate({expression: 'bound'});
+ InspectorTest.logMessage(result);
+ await Protocol.Runtime.disable();
+ },
+
+ async function testAsyncFunctionDescription() {
+ await Protocol.Runtime.enable();
+ const {result: {result}} = await Protocol.Runtime.evaluate({expression: 'afun'});
+ InspectorTest.logMessage(result);
+ await Protocol.Runtime.disable();
+ },
+
+ async function testNativeFunctionDescription() {
+ await Protocol.Runtime.enable();
+ const {result: {result}} = await Protocol.Runtime.evaluate({expression: 'native'});
+ InspectorTest.logMessage(result);
+ await Protocol.Runtime.disable();
+ }
+]);
diff --git a/deps/v8/test/inspector/runtime/add-binding-expected.txt b/deps/v8/test/inspector/runtime/add-binding-expected.txt
index 38ecb05825..ff876782ab 100644
--- a/deps/v8/test/inspector/runtime/add-binding-expected.txt
+++ b/deps/v8/test/inspector/runtime/add-binding-expected.txt
@@ -157,6 +157,50 @@ binding called in session1
}
Call binding in newly created context (binding should NOT be exposed)
+Running test: testAddBindingToMultipleContextsById
+Call binding in default context (binding should be exposed)
+binding called in session1
+{
+ method : Runtime.bindingCalled
+ params : {
+ executionContextId : <executionContextId>
+ name : frobnicate
+ payload : message
+ }
+}
+Call binding in target context (binding should be exposed)
+binding called in session1
+{
+ method : Runtime.bindingCalled
+ params : {
+ executionContextId : <executionContextId>
+ name : frobnicate
+ payload : message
+ }
+}
+
+Running test: testAddBindingToMultipleContextsInDifferentContextGroups
+Call binding in default context (binding should be exposed)
+binding called in group1/session1
+{
+ method : Runtime.bindingCalled
+ params : {
+ executionContextId : <executionContextId>
+ name : frobnicate
+ payload : message
+ }
+}
+Call binding in target context (binding should be exposed)
+binding called in group2/session1
+{
+ method : Runtime.bindingCalled
+ params : {
+ executionContextId : <executionContextId>
+ name : frobnicate
+ payload : message
+ }
+}
+
Running test: testAddBindingToContextByName
Call binding in default context (binding should NOT be exposed)
Call binding in Foo (binding should be exposed)
diff --git a/deps/v8/test/inspector/runtime/add-binding.js b/deps/v8/test/inspector/runtime/add-binding.js
index 95f4549d4f..a44a9bcf35 100644
--- a/deps/v8/test/inspector/runtime/add-binding.js
+++ b/deps/v8/test/inspector/runtime/add-binding.js
@@ -87,6 +87,44 @@ InspectorTest.runAsyncTestSuite([
await session.Protocol.Runtime.evaluate({expression, contextId: contextId3});
},
+ async function testAddBindingToMultipleContextsById() {
+ const {contextGroup, sessions: [session]} = setupSessions(1);
+ const contextId1 = (await session.Protocol.Runtime.onceExecutionContextCreated()).params.context.id;
+
+ contextGroup.createContext();
+ const contextId2 = (await session.Protocol.Runtime.onceExecutionContextCreated()).params.context.id;
+
+ await session.Protocol.Runtime.addBinding({name: 'frobnicate', executionContextId: contextId1});
+ await session.Protocol.Runtime.addBinding({name: 'frobnicate', executionContextId: contextId2});
+ const expression = `frobnicate('message')`;
+
+ InspectorTest.log('Call binding in default context (binding should be exposed)');
+ await session.Protocol.Runtime.evaluate({expression});
+
+ InspectorTest.log('Call binding in target context (binding should be exposed)');
+ await session.Protocol.Runtime.evaluate({expression, contextId: contextId2});
+ },
+
+ async function testAddBindingToMultipleContextsInDifferentContextGroups() {
+ const sessions1 = setupSessions(1, 'group1/');
+ const session1 = sessions1.sessions[0];
+ const contextId1 = (await session1.Protocol.Runtime.onceExecutionContextCreated()).params.context.id;
+
+ const sessions2 = setupSessions(1, 'group2/');
+ const session2 = sessions2.sessions[0];
+ const contextId2 = (await session2.Protocol.Runtime.onceExecutionContextCreated()).params.context.id;
+
+ await session1.Protocol.Runtime.addBinding({name: 'frobnicate', executionContextId: contextId1});
+ await session2.Protocol.Runtime.addBinding({name: 'frobnicate', executionContextId: contextId2});
+ const expression = `frobnicate('message')`;
+
+ InspectorTest.log('Call binding in default context (binding should be exposed)');
+ await session1.Protocol.Runtime.evaluate({expression, contextId: contextId1});
+
+ InspectorTest.log('Call binding in target context (binding should be exposed)');
+ await session2.Protocol.Runtime.evaluate({expression, contextId: contextId2});
+ },
+
async function testAddBindingToContextByName() {
const {contextGroup, sessions: [session]} = setupSessions(1);
const defaultContext = (await session.Protocol.Runtime.onceExecutionContextCreated()).params.context.id;
@@ -134,7 +172,7 @@ InspectorTest.runAsyncTestSuite([
]);
-function setupSessions(num) {
+function setupSessions(num, prefix = '') {
const contextGroup = new InspectorTest.ContextGroup();
const sessions = [];
for (let i = 0; i < num; ++i) {
@@ -142,7 +180,7 @@ function setupSessions(num) {
sessions.push(session);
session.Protocol.Runtime.enable();
session.Protocol.Runtime.onBindingCalled(msg => {
- InspectorTest.log(`binding called in session${i + 1}`);
+ InspectorTest.log(`binding called in ${prefix}session${i + 1}`);
InspectorTest.logMessage(msg);
});
}
diff --git a/deps/v8/test/inspector/runtime/clear-of-command-line-api.js b/deps/v8/test/inspector/runtime/clear-of-command-line-api.js
index d67a1c5447..13a8d19154 100644
--- a/deps/v8/test/inspector/runtime/clear-of-command-line-api.js
+++ b/deps/v8/test/inspector/runtime/clear-of-command-line-api.js
@@ -13,7 +13,7 @@ function presentedAPIMethods()
var methodCount = 0;
for (var method of methods) {
try {
- if (eval("window." + method + "&&" + method + ".toString ? " + method + ".toString().indexOf(\\"[Command Line API]\\") !== -1 : false"))
+ if (eval("window." + method + "&&" + method + ".toString ? " + method + ".toString().indexOf(\\"[native code]\\") !== -1 : false"))
++methodCount;
} catch (e) {
}
diff --git a/deps/v8/test/inspector/runtime/command-line-api-expected.txt b/deps/v8/test/inspector/runtime/command-line-api-expected.txt
index 38d53b7eb4..ba5f08d885 100644
--- a/deps/v8/test/inspector/runtime/command-line-api-expected.txt
+++ b/deps/v8/test/inspector/runtime/command-line-api-expected.txt
@@ -6,7 +6,7 @@ Running test: testKeys
result : {
result : {
className : Function
- description : function keys(object) { [Command Line API] }
+ description : function keys() { [native code] }
objectId : <objectId>
type : function
}
@@ -114,7 +114,7 @@ Running test: testQueryObjects
result : {
result : {
className : Function
- description : function queryObjects(constructor) { [Command Line API] }
+ description : function queryObjects() { [native code] }
objectId : <objectId>
type : function
}
@@ -235,7 +235,7 @@ Running test: testDebug
result : {
result : {
className : Function
- description : function debug(function, condition) { [Command Line API] }
+ description : function debug() { [native code] }
objectId : <objectId>
type : function
}
@@ -246,7 +246,7 @@ Running test: testDebug
result : {
result : {
className : Function
- description : function undebug(function) { [Command Line API] }
+ description : function undebug() { [native code] }
objectId : <objectId>
type : function
}
@@ -295,7 +295,7 @@ Running test: testMonitor
result : {
result : {
className : Function
- description : function monitor(function) { [Command Line API] }
+ description : function monitor() { [native code] }
objectId : <objectId>
type : function
}
@@ -306,7 +306,7 @@ Running test: testMonitor
result : {
result : {
className : Function
- description : function unmonitor(function) { [Command Line API] }
+ description : function unmonitor() { [native code] }
objectId : <objectId>
type : function
}
@@ -325,7 +325,7 @@ Running test: testProfile
result : {
result : {
className : Function
- description : function profile(title) { [Command Line API] }
+ description : function profile() { [native code] }
objectId : <objectId>
type : function
}
@@ -336,7 +336,7 @@ Running test: testProfile
result : {
result : {
className : Function
- description : function profileEnd(title) { [Command Line API] }
+ description : function profileEnd() { [native code] }
objectId : <objectId>
type : function
}
@@ -399,7 +399,7 @@ Running test: testDir
result : {
result : {
className : Function
- description : function dir(value) { [Command Line API] }
+ description : function dir() { [native code] }
objectId : <objectId>
type : function
}
@@ -506,7 +506,7 @@ Running test: testDirXML
result : {
result : {
className : Function
- description : function dirxml(value) { [Command Line API] }
+ description : function dirxml() { [native code] }
objectId : <objectId>
type : function
}
@@ -579,7 +579,7 @@ Running test: testTable
result : {
result : {
className : Function
- description : function table(data, [columns]) { [Command Line API] }
+ description : function table() { [native code] }
objectId : <objectId>
type : function
}
@@ -652,7 +652,7 @@ Running test: testClear
result : {
result : {
className : Function
- description : function clear() { [Command Line API] }
+ description : function clear() { [native code] }
objectId : <objectId>
type : function
}
diff --git a/deps/v8/test/inspector/runtime/get-properties-expected.txt b/deps/v8/test/inspector/runtime/get-properties-expected.txt
index ca23ac8b10..b67f470971 100644
--- a/deps/v8/test/inspector/runtime/get-properties-expected.txt
+++ b/deps/v8/test/inspector/runtime/get-properties-expected.txt
@@ -1,10 +1,10 @@
Checks Runtime.getProperties method
Running test: testObject5
- __proto__ own object undefined
foo own string cat
Internal properties
[[PrimitiveValue]] number 5
+ [[Prototype]] object undefined
Running test: testNotOwn
__defineGetter__ inherited function undefined
@@ -23,6 +23,8 @@ Running test: testNotOwn
toLocaleString inherited function undefined
toString inherited function undefined
valueOf inherited function undefined
+Internal properties
+ [[Prototype]] object undefined
Running test: testAccessorsOnly
b own no value, getter, setter
@@ -32,33 +34,38 @@ Running test: testArray
0 own string red
1 own string green
2 own string blue
- __proto__ own object undefined
length own number 3
+Internal properties
+ [[Prototype]] object undefined
Running test: testBound
- __proto__ own function undefined
length own number 0
name own string bound Number
Internal properties
[[BoundArgs]] object undefined
[[BoundThis]] object undefined
+ [[Prototype]] function undefined
[[TargetFunction]] function undefined
Running test: testObjectThrowsLength
- __proto__ own object undefined
length own no value, getter
+Internal properties
+ [[Prototype]] object undefined
Running test: testTypedArrayWithoutLength
- __proto__ own object undefined
+Internal properties
+ [[Prototype]] object undefined
Running test: testClassWithPrivateFields
- __proto__ own object undefined
baz own number 4
+Internal properties
+ [[Prototype]] object undefined
Private properties
#bar number 3
#foo number 2
- __proto__ own object undefined
baz own number 4
+Internal properties
+ [[Prototype]] object undefined
Private properties
#bar number 3
#baz number 1
@@ -72,6 +79,13 @@ Private properties
#foo number 2
Running test: testArrayBuffer
+[[Prototype]]
+ Symbol(Symbol.toStringTag) own string ArrayBuffer
+ byteLength own no value, getter
+ constructor own function undefined
+ slice own function undefined
+Internal properties
+ [[Prototype]] object undefined
[[Int8Array]]
0 own number 1
1 own number 1
@@ -81,7 +95,8 @@ Running test: testArrayBuffer
5 own number 1
6 own number 1
7 own number 1
- __proto__ own object undefined
+Internal properties
+ [[Prototype]] object undefined
[[Uint8Array]]
0 own number 1
1 own number 1
@@ -91,21 +106,31 @@ Running test: testArrayBuffer
5 own number 1
6 own number 1
7 own number 1
- __proto__ own object undefined
+Internal properties
+ [[Prototype]] object undefined
[[Int16Array]]
0 own number 257
1 own number 257
2 own number 257
3 own number 257
- __proto__ own object undefined
+Internal properties
+ [[Prototype]] object undefined
[[Int32Array]]
0 own number 16843009
1 own number 16843009
- __proto__ own object undefined
+Internal properties
+ [[Prototype]] object undefined
[[ArrayBufferByteLength]]
[[ArrayBufferData]]
Running test: testArrayBufferFromWebAssemblyMemory
+[[Prototype]]
+ Symbol(Symbol.toStringTag) own string ArrayBuffer
+ byteLength own no value, getter
+ constructor own function undefined
+ slice own function undefined
+Internal properties
+ [[Prototype]] object undefined
[[Int8Array]]
[[Uint8Array]]
[[Int16Array]]
@@ -113,18 +138,22 @@ Running test: testArrayBufferFromWebAssemblyMemory
[[ArrayBufferByteLength]]
[[ArrayBufferData]]
[[WebAssemblyMemory]]
- __proto__ own object undefined
+Internal properties
+ [[Prototype]] object undefined
Running test: testDetachedArrayBuffer
+[[Prototype]] undefined
[[IsDetached]] true
Running test: testArrayBufferWithBrokenUintCtor
- __proto__ own object undefined
Internal properties
[[ArrayBufferByteLength]] number 7
[[ArrayBufferData]] string 0x...
[[Int8Array]] object undefined
+ [[Prototype]] object undefined
[[Uint8Array]] object undefined
Running test: testObjectWithProtoProperty
__proto__ own object undefined
+Internal properties
+ [[Prototype]] object undefined
diff --git a/deps/v8/test/inspector/runtime/get-properties.js b/deps/v8/test/inspector/runtime/get-properties.js
index 1a8aa9e99a..69305e241d 100644
--- a/deps/v8/test/inspector/runtime/get-properties.js
+++ b/deps/v8/test/inspector/runtime/get-properties.js
@@ -45,8 +45,6 @@ InspectorTest.runAsyncTestSuite([
let objectId = await evaluateToObjectId('new Uint8Array([1, 1, 1, 1, 1, 1, 1, 1]).buffer');
let props = await Protocol.Runtime.getProperties({ objectId, ownProperties: true });
for (let prop of props.result.result) {
- if (prop.name === '__proto__')
- continue;
InspectorTest.log(prop.name);
await logGetPropertiesResult(prop.value.objectId);
}
@@ -61,8 +59,6 @@ InspectorTest.runAsyncTestSuite([
let objectId = await evaluateToObjectId('new WebAssembly.Memory({initial: 1}).buffer');
let props = await Protocol.Runtime.getProperties({ objectId, ownProperties: true });
for (let prop of props.result.result) {
- if (prop.name === '__proto__')
- continue;
InspectorTest.log(prop.name);
await logGetPropertiesResult(prop.value.objectId);
}
@@ -84,8 +80,6 @@ InspectorTest.runAsyncTestSuite([
await Protocol.Runtime.evaluate({ expression: 'b', generatePreview: true })
let props = await Protocol.Runtime.getProperties({ objectId, ownProperties: true });
for (let prop of props.result.result) {
- if (prop.name === '__proto__')
- continue;
InspectorTest.log(prop.name);
await logGetPropertiesResult(prop.value.objectId);
}
diff --git a/deps/v8/test/inspector/runtime/internal-properties-expected.txt b/deps/v8/test/inspector/runtime/internal-properties-expected.txt
index fc4de5bca3..0a35506f4d 100644
--- a/deps/v8/test/inspector/runtime/internal-properties-expected.txt
+++ b/deps/v8/test/inspector/runtime/internal-properties-expected.txt
@@ -27,6 +27,15 @@ expression: (function* foo() { yield 1 })
}
}
[2] : {
+ name : [[Prototype]]
+ value : {
+ className : GeneratorFunction
+ description : GeneratorFunction
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [3] : {
name : [[Scopes]]
value : {
className : Array
@@ -60,6 +69,15 @@ expression: (function foo() {})
}
}
[1] : {
+ name : [[Prototype]]
+ value : {
+ className : Function
+ description : function () { [native code] }
+ objectId : <objectId>
+ type : function
+ }
+ }
+ [2] : {
name : [[Scopes]]
value : {
className : Array
@@ -80,6 +98,15 @@ expression: new Number(239)
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : Number
+ description : Number
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[PrimitiveValue]]
value : {
description : 239
@@ -96,6 +123,15 @@ expression: new Boolean(false)
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : Boolean
+ description : Boolean
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[PrimitiveValue]]
value : {
type : boolean
@@ -111,6 +147,15 @@ expression: new String('abc')
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : String
+ description : String
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[PrimitiveValue]]
value : {
type : string
@@ -126,6 +171,15 @@ expression: Object(Symbol(42))
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : Symbol
+ description : Symbol
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[PrimitiveValue]]
value : {
description : Symbol(42)
@@ -142,6 +196,15 @@ expression: Object(BigInt(2))
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : BigInt
+ description : BigInt
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[PrimitiveValue]]
value : {
description : 2n
@@ -160,13 +223,22 @@ expression: Promise.resolve(42)
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : Promise
+ description : Promise
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[PromiseState]]
value : {
type : string
value : fulfilled
}
}
- [1] : {
+ [2] : {
name : [[PromiseResult]]
value : {
description : 42
@@ -183,13 +255,22 @@ expression: new Promise(() => undefined)
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : Promise
+ description : Promise
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[PromiseState]]
value : {
type : string
value : pending
}
}
- [1] : {
+ [2] : {
name : [[PromiseResult]]
value : {
type : undefined
@@ -219,13 +300,22 @@ expression: gen1
}
}
[1] : {
+ name : [[Prototype]]
+ value : {
+ className : Generator
+ description : Generator
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [2] : {
name : [[GeneratorState]]
value : {
type : string
value : suspended
}
}
- [2] : {
+ [3] : {
name : [[GeneratorFunction]]
value : {
className : GeneratorFunction
@@ -234,7 +324,7 @@ expression: gen1
type : function
}
}
- [3] : {
+ [4] : {
name : [[GeneratorReceiver]]
value : {
className : global
@@ -243,7 +333,7 @@ expression: gen1
type : object
}
}
- [4] : {
+ [5] : {
name : [[Scopes]]
value : {
className : Array
@@ -275,13 +365,22 @@ expression: gen1.next();gen1
}
}
[1] : {
+ name : [[Prototype]]
+ value : {
+ className : Generator
+ description : Generator
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [2] : {
name : [[GeneratorState]]
value : {
type : string
value : suspended
}
}
- [2] : {
+ [3] : {
name : [[GeneratorFunction]]
value : {
className : GeneratorFunction
@@ -290,7 +389,7 @@ expression: gen1.next();gen1
type : function
}
}
- [3] : {
+ [4] : {
name : [[GeneratorReceiver]]
value : {
className : global
@@ -299,7 +398,7 @@ expression: gen1.next();gen1
type : object
}
}
- [4] : {
+ [5] : {
name : [[Scopes]]
value : {
className : Array
@@ -331,13 +430,22 @@ expression: gen1.next();gen1
}
}
[1] : {
+ name : [[Prototype]]
+ value : {
+ className : Generator
+ description : Generator
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [2] : {
name : [[GeneratorState]]
value : {
type : string
value : closed
}
}
- [2] : {
+ [3] : {
name : [[GeneratorFunction]]
value : {
className : GeneratorFunction
@@ -346,7 +454,7 @@ expression: gen1.next();gen1
type : function
}
}
- [3] : {
+ [4] : {
name : [[GeneratorReceiver]]
value : {
className : global
@@ -379,13 +487,22 @@ expression: gen2
}
}
[1] : {
+ name : [[Prototype]]
+ value : {
+ className : Generator
+ description : Generator
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [2] : {
name : [[GeneratorState]]
value : {
type : string
value : suspended
}
}
- [2] : {
+ [3] : {
name : [[GeneratorFunction]]
value : {
className : GeneratorFunction
@@ -394,7 +511,7 @@ expression: gen2
type : function
}
}
- [3] : {
+ [4] : {
name : [[GeneratorReceiver]]
value : {
className : global
@@ -403,7 +520,7 @@ expression: gen2
type : object
}
}
- [4] : {
+ [5] : {
name : [[Scopes]]
value : {
className : Array
@@ -435,13 +552,22 @@ expression: gen2.next();gen2
}
}
[1] : {
+ name : [[Prototype]]
+ value : {
+ className : Generator
+ description : Generator
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [2] : {
name : [[GeneratorState]]
value : {
type : string
value : suspended
}
}
- [2] : {
+ [3] : {
name : [[GeneratorFunction]]
value : {
className : GeneratorFunction
@@ -450,7 +576,7 @@ expression: gen2.next();gen2
type : function
}
}
- [3] : {
+ [4] : {
name : [[GeneratorReceiver]]
value : {
className : global
@@ -459,7 +585,7 @@ expression: gen2.next();gen2
type : object
}
}
- [4] : {
+ [5] : {
name : [[Scopes]]
value : {
className : Array
@@ -491,13 +617,22 @@ expression: gen2.next();gen2
}
}
[1] : {
+ name : [[Prototype]]
+ value : {
+ className : Generator
+ description : Generator
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [2] : {
name : [[GeneratorState]]
value : {
type : string
value : closed
}
}
- [2] : {
+ [3] : {
name : [[GeneratorFunction]]
value : {
className : GeneratorFunction
@@ -506,7 +641,7 @@ expression: gen2.next();gen2
type : function
}
}
- [3] : {
+ [4] : {
name : [[GeneratorReceiver]]
value : {
className : global
@@ -526,13 +661,22 @@ expression: (new Map([[1,2]])).entries()
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : Map Iterator
+ description : Map Iterator
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[IteratorHasMore]]
value : {
type : boolean
value : true
}
}
- [1] : {
+ [2] : {
name : [[IteratorIndex]]
value : {
description : 0
@@ -540,14 +684,14 @@ expression: (new Map([[1,2]])).entries()
value : 0
}
}
- [2] : {
+ [3] : {
name : [[IteratorKind]]
value : {
type : string
value : entries
}
}
- [3] : {
+ [4] : {
name : [[Entries]]
value : {
className : Array
@@ -566,13 +710,22 @@ expression: (new Set([[1,2]])).entries()
result : {
internalProperties : [
[0] : {
+ name : [[Prototype]]
+ value : {
+ className : Set Iterator
+ description : Set Iterator
+ objectId : <objectId>
+ type : object
+ }
+ }
+ [1] : {
name : [[IteratorHasMore]]
value : {
type : boolean
value : true
}
}
- [1] : {
+ [2] : {
name : [[IteratorIndex]]
value : {
description : 0
@@ -580,14 +733,14 @@ expression: (new Set([[1,2]])).entries()
value : 0
}
}
- [2] : {
+ [3] : {
name : [[IteratorKind]]
value : {
type : string
value : entries
}
}
- [3] : {
+ [4] : {
name : [[Entries]]
value : {
className : Array
diff --git a/deps/v8/test/inspector/runtime/remote-object-expected.txt b/deps/v8/test/inspector/runtime/remote-object-expected.txt
index f4d98a9cca..82e6ed8bf8 100644
--- a/deps/v8/test/inspector/runtime/remote-object-expected.txt
+++ b/deps/v8/test/inspector/runtime/remote-object-expected.txt
@@ -397,6 +397,16 @@ Running test: testBigInt
}
Running test: testRegExp
+'/w+/d', returnByValue: false, generatePreview: false
+{
+ result : {
+ className : RegExp
+ description : /w+/d
+ objectId : <objectId>
+ subtype : regexp
+ type : object
+ }
+}
'/w+/g', returnByValue: false, generatePreview: false
{
result : {
@@ -457,11 +467,11 @@ Running test: testRegExp
type : object
}
}
-'/w+/gimsuy', returnByValue: false, generatePreview: false
+'/w+/dgimsuy', returnByValue: false, generatePreview: false
{
result : {
className : RegExp
- description : /w+/gimsuy
+ description : /w+/dgimsuy
objectId : <objectId>
subtype : regexp
type : object
@@ -477,6 +487,16 @@ Running test: testRegExp
type : object
}
}
+'new RegExp('foo/bar')', returnByValue: false, generatePreview: false
+{
+ result : {
+ className : RegExp
+ description : /foo\/bar/
+ objectId : <objectId>
+ subtype : regexp
+ type : object
+ }
+}
'var re = new RegExp('\w+', 'g');
re.prop = 32;
re', returnByValue: false, generatePreview: true
diff --git a/deps/v8/test/inspector/runtime/remote-object-get-properties-expected.txt b/deps/v8/test/inspector/runtime/remote-object-get-properties-expected.txt
index 216639355e..31080efbc5 100644
--- a/deps/v8/test/inspector/runtime/remote-object-get-properties-expected.txt
+++ b/deps/v8/test/inspector/runtime/remote-object-get-properties-expected.txt
@@ -4,6 +4,17 @@ Running test: testObject
{
id : <messageId>
result : {
+ internalProperties : [
+ [0] : {
+ name : [[Prototype]]
+ value : {
+ className : Object
+ description : Object
+ objectId : <objectId>
+ type : object
+ }
+ }
+ ]
result : [
[0] : {
configurable : true
@@ -17,25 +28,23 @@ Running test: testObject
}
writable : true
}
- [1] : {
- configurable : true
- enumerable : false
- isOwn : true
- name : __proto__
+ ]
+ }
+}
+{
+ id : <messageId>
+ result : {
+ internalProperties : [
+ [0] : {
+ name : [[Prototype]]
value : {
className : Object
description : Object
objectId : <objectId>
type : object
}
- writable : true
}
]
- }
-}
-{
- id : <messageId>
- result : {
result : [
[0] : {
configurable : false
@@ -120,19 +129,6 @@ Running test: testObject
}
writable : false
}
- [6] : {
- configurable : true
- enumerable : false
- isOwn : true
- name : __proto__
- value : {
- className : Object
- description : Object
- objectId : <objectId>
- type : object
- }
- writable : true
- }
]
}
}
diff --git a/deps/v8/test/inspector/runtime/remote-object.js b/deps/v8/test/inspector/runtime/remote-object.js
index 78926479ae..49099d704e 100644
--- a/deps/v8/test/inspector/runtime/remote-object.js
+++ b/deps/v8/test/inspector/runtime/remote-object.js
@@ -201,6 +201,9 @@ InspectorTest.runAsyncTestSuite([
},
async function testRegExp() {
InspectorTest.logMessage((await evaluate({
+ expression: '/\w+/d'
+ })).result);
+ InspectorTest.logMessage((await evaluate({
expression: '/\w+/g'
})).result);
InspectorTest.logMessage((await evaluate({
@@ -219,12 +222,15 @@ InspectorTest.runAsyncTestSuite([
expression: '/\w+/y'
})).result);
InspectorTest.logMessage((await evaluate({
- expression: '/\w+/gimsuy'
+ expression: '/\w+/dgimsuy'
})).result);
InspectorTest.logMessage((await evaluate({
expression: `new RegExp('\\w+', 'g')`,
})).result);
InspectorTest.logMessage((await evaluate({
+ expression: `new RegExp('foo/bar')`
+ })).result);
+ InspectorTest.logMessage((await evaluate({
expression: `var re = new RegExp('\\w+', 'g');
re.prop = 32;
re`,
diff --git a/deps/v8/test/inspector/sessions/runtime-remote-object-expected.txt b/deps/v8/test/inspector/sessions/runtime-remote-object-expected.txt
index a8d0ec0c20..04a0e0ce94 100644
--- a/deps/v8/test/inspector/sessions/runtime-remote-object-expected.txt
+++ b/deps/v8/test/inspector/sessions/runtime-remote-object-expected.txt
@@ -5,6 +5,17 @@ Retrieving properties in 2
{
id : <messageId>
result : {
+ internalProperties : [
+ [0] : {
+ name : [[Prototype]]
+ value : {
+ className : Object
+ description : Object
+ objectId : <objectId>
+ type : object
+ }
+ }
+ ]
result : [
[0] : {
configurable : true
@@ -18,26 +29,24 @@ Retrieving properties in 2
}
writable : true
}
- [1] : {
- configurable : true
- enumerable : false
- isOwn : true
- name : __proto__
+ ]
+ }
+}
+Retrieving properties in 1
+{
+ id : <messageId>
+ result : {
+ internalProperties : [
+ [0] : {
+ name : [[Prototype]]
value : {
className : Object
description : Object
objectId : <objectId>
type : object
}
- writable : true
}
]
- }
-}
-Retrieving properties in 1
-{
- id : <messageId>
- result : {
result : [
[0] : {
configurable : true
@@ -51,19 +60,6 @@ Retrieving properties in 1
}
writable : true
}
- [1] : {
- configurable : true
- enumerable : false
- isOwn : true
- name : __proto__
- value : {
- className : Object
- description : Object
- objectId : <objectId>
- type : object
- }
- writable : true
- }
]
}
}
@@ -72,6 +68,17 @@ Retrieving properties in 1
{
id : <messageId>
result : {
+ internalProperties : [
+ [0] : {
+ name : [[Prototype]]
+ value : {
+ className : Object
+ description : Object
+ objectId : <objectId>
+ type : object
+ }
+ }
+ ]
result : [
[0] : {
configurable : true
@@ -85,19 +92,6 @@ Retrieving properties in 1
}
writable : true
}
- [1] : {
- configurable : true
- enumerable : false
- isOwn : true
- name : __proto__
- value : {
- className : Object
- description : Object
- objectId : <objectId>
- type : object
- }
- writable : true
- }
]
}
}
diff --git a/deps/v8/test/inspector/task-runner.cc b/deps/v8/test/inspector/task-runner.cc
index ebd0b6378c..f4270348de 100644
--- a/deps/v8/test/inspector/task-runner.cc
+++ b/deps/v8/test/inspector/task-runner.cc
@@ -8,8 +8,8 @@
#include "src/flags/flags.h"
#if !defined(_WIN32) && !defined(_WIN64)
-#include <unistd.h> // NOLINT
-#endif // !defined(_WIN32) && !defined(_WIN64)
+#include <unistd.h>
+#endif // !defined(_WIN32) && !defined(_WIN64)
namespace v8 {
namespace internal {
diff --git a/deps/v8/test/inspector/wasm-inspector-test.js b/deps/v8/test/inspector/wasm-inspector-test.js
index 9fe13e9d7d..939316ed02 100644
--- a/deps/v8/test/inspector/wasm-inspector-test.js
+++ b/deps/v8/test/inspector/wasm-inspector-test.js
@@ -7,9 +7,12 @@ utils.load('test/mjsunit/wasm/wasm-module-builder.js');
WasmInspectorTest = {}
InspectorTest.getWasmOpcodeName = getOpcodeName;
-WasmInspectorTest.evalWithUrl = async function(code, url) {
+WasmInspectorTest.evalWithUrl = async function(expression, url) {
+ const sourceURL = `v8://test/${url}`;
+ const {result: {scriptId}} = await Protocol.Runtime.compileScript({
+ expression, sourceURL, persistScript: true}).then(printIfFailure);
return await Protocol.Runtime
- .evaluate({'expression': code + '\n//# sourceURL=v8://test/' + url})
+ .runScript({scriptId})
.then(printIfFailure);
};
diff --git a/deps/v8/test/intl/general/getCanonicalLocales.js b/deps/v8/test/intl/general/getCanonicalLocales.js
index a6a344ff9c..48f2fee897 100644
--- a/deps/v8/test/intl/general/getCanonicalLocales.js
+++ b/deps/v8/test/intl/general/getCanonicalLocales.js
@@ -24,5 +24,5 @@ assertEquals("ro", Intl.getCanonicalLocales("mo")[0]);
assertEquals("sr", Intl.getCanonicalLocales("scc")[0]);
assertEquals("sr-Latn", Intl.getCanonicalLocales("sh")[0]);
assertEquals("sr-ME", Intl.getCanonicalLocales("cnr")[0]);
-assertEquals("nb", Intl.getCanonicalLocales("no")[0]);
+assertEquals("no", Intl.getCanonicalLocales("no")[0]);
assertEquals("fil", Intl.getCanonicalLocales("tl")[0]);
diff --git a/deps/v8/test/intl/locale/locale-info-check-property.js b/deps/v8/test/intl/locale/locale-info-check-property.js
new file mode 100644
index 0000000000..77c676e6ec
--- /dev/null
+++ b/deps/v8/test/intl/locale/locale-info-check-property.js
@@ -0,0 +1,23 @@
+// Copyright 2021 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.
+
+// Flags: --harmony_intl_locale_info
+
+// Check getter properties against the spec.
+function checkProperties(property) {
+ let desc = Object.getOwnPropertyDescriptor(Intl.Locale.prototype, property);
+ assertEquals(`get ${property}`, desc.get.name);
+ assertEquals('function', typeof desc.get)
+ assertEquals(undefined, desc.set);
+ assertFalse(desc.enumerable);
+ assertTrue(desc.configurable);
+}
+
+checkProperties('calendars');
+checkProperties('collations');
+checkProperties('hourCycles');
+checkProperties('numberingSystems');
+checkProperties('textInfo');
+checkProperties('timeZones');
+checkProperties('weekInfo');
diff --git a/deps/v8/test/intl/locale/locale-info-check-return-types.js b/deps/v8/test/intl/locale/locale-info-check-return-types.js
new file mode 100644
index 0000000000..051b8596ae
--- /dev/null
+++ b/deps/v8/test/intl/locale/locale-info-check-return-types.js
@@ -0,0 +1,46 @@
+// Copyright 2021 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.
+
+// Flags: --harmony_intl_locale_info
+
+function checkLocale(locale) {
+ let l = new Intl.Locale(locale);
+ assertTrue(Array.isArray(l.calendars));
+ assertTrue(Array.isArray(l.collations));
+ assertTrue(Array.isArray(l.hourCycles));
+ assertTrue(Array.isArray(l.numberingSystems));
+
+ if (l.region == undefined) {
+ assertEquals(undefined, l.timeZones);
+ } else {
+ assertTrue(Array.isArray(l.timeZones));
+ }
+
+ assertEquals("object", typeof(l.textInfo));
+ assertEquals(1, Object.keys(l.textInfo).length);
+ assertEquals("string", typeof(l.textInfo.direction));
+
+ assertEquals("object", typeof(l.weekInfo));
+ assertEquals(4, Object.keys(l.weekInfo).length);
+ assertEquals("number", typeof(l.weekInfo.firstDay));
+ assertTrue(l.weekInfo.firstDay >= 1);
+ assertTrue(l.weekInfo.firstDay <= 7);
+
+ assertEquals("number", typeof(l.weekInfo.weekendStart));
+ assertTrue(l.weekInfo.weekendStart >= 1);
+ assertTrue(l.weekInfo.weekendStart <= 7);
+
+ assertEquals("number", typeof(l.weekInfo.weekendEnd));
+ assertTrue(l.weekInfo.weekendEnd >= 1);
+ assertTrue(l.weekInfo.weekendEnd <= 7);
+
+ assertEquals("number", typeof(l.weekInfo.minimalDays));
+ assertTrue(l.weekInfo.minimalDays >= 1);
+ assertTrue(l.weekInfo.minimalDays <= 7);
+}
+
+checkLocale("ar");
+checkLocale("en");
+checkLocale("fr");
+checkLocale("en-GB");
diff --git a/deps/v8/test/intl/locale/locale-info-ext.js b/deps/v8/test/intl/locale/locale-info-ext.js
new file mode 100644
index 0000000000..647e6c8a4e
--- /dev/null
+++ b/deps/v8/test/intl/locale/locale-info-ext.js
@@ -0,0 +1,26 @@
+// Copyright 2021 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.
+
+// Flags: --harmony_intl_locale_info
+
+// Test Unicode extension.
+function testExt(base, ukey, uvalue, property) {
+ let baseLocale = new Intl.Locale(base);
+ let extLocale = new Intl.Locale(base + "-u-" + ukey + "-" + uvalue);
+
+ let baseActual = baseLocale[property];
+ assertTrue(Array.isArray(baseActual));
+ assertTrue(baseActual.length > 0);
+ assertFalse(uvalue == baseActual[0]);
+
+ let extActual = extLocale[property];
+ assertTrue(Array.isArray(extActual));
+ assertEquals(1, extActual.length);
+ assertEquals(uvalue, extActual[0]);
+}
+
+testExt("ar", "ca", "roc", "calendars");
+testExt("fr", "nu", "thai", "numberingSystems");
+testExt("th", "co", "pinyin", "collations");
+testExt("ko", "hc", "h11", "hourCycles");
diff --git a/deps/v8/test/intl/locale/locale.js b/deps/v8/test/intl/locale/locale.js
index 15b5870f3a..4c70e0d1c4 100644
--- a/deps/v8/test/intl/locale/locale.js
+++ b/deps/v8/test/intl/locale/locale.js
@@ -12,7 +12,7 @@ assertEquals("hr", (new Intl.Locale("scr")).toString());
assertEquals("sr-Latn", (new Intl.Locale("sh")).toString());
assertEquals("sr-ME", (new Intl.Locale("cnr")).toString());
-assertEquals("nb", (new Intl.Locale("no")).toString());
+assertEquals("no", (new Intl.Locale("no")).toString());
assertEquals("fil", (new Intl.Locale("tl")).toString());
assertEquals("hy-AM", (new Intl.Locale("hy-SU")).toString());
diff --git a/deps/v8/test/memory/Memory.json b/deps/v8/test/memory/Memory.json
index f2b362768b..77be23c1a0 100644
--- a/deps/v8/test/memory/Memory.json
+++ b/deps/v8/test/memory/Memory.json
@@ -6,7 +6,8 @@
"resources": ["run.js"],
"main": "run.js",
"path": ["."],
- "flags": ["--allow-natives-syntax", "--profile-deserialization"],
+ "flags": ["--allow-natives-syntax", "--profile-deserialization",
+ "--serialization-statistics"],
"tests": [
{
"name": "ReservedMemoryIsolate",
diff --git a/deps/v8/test/message/fail/wasm-async-compile-fail.out b/deps/v8/test/message/fail/wasm-async-compile-fail.out
index 0ecf9b1968..322b872976 100644
--- a/deps/v8/test/message/fail/wasm-async-compile-fail.out
+++ b/deps/v8/test/message/fail/wasm-async-compile-fail.out
@@ -1,5 +1,5 @@
-*%(basename)s:9: CompileError: WebAssembly.compile(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+*%(basename)s:9: CompileError: WebAssembly.compile(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
let rethrow = e => setTimeout(_ => {throw e}, 0);
^
-CompileError: WebAssembly.compile(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+CompileError: WebAssembly.compile(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
diff --git a/deps/v8/test/message/fail/wasm-async-instantiate-fail.out b/deps/v8/test/message/fail/wasm-async-instantiate-fail.out
index ebe2760dd2..fd5193de2c 100644
--- a/deps/v8/test/message/fail/wasm-async-instantiate-fail.out
+++ b/deps/v8/test/message/fail/wasm-async-instantiate-fail.out
@@ -1,5 +1,5 @@
-*%(basename)s:9: CompileError: WebAssembly.instantiate(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+*%(basename)s:9: CompileError: WebAssembly.instantiate(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
let rethrow = e => setTimeout(_ => {throw e}, 0);
^
-CompileError: WebAssembly.instantiate(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+CompileError: WebAssembly.instantiate(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
diff --git a/deps/v8/test/message/fail/wasm-module-name.js b/deps/v8/test/message/fail/wasm-module-name.js
index c872c32cb8..9fa60789b1 100644
--- a/deps/v8/test/message/fail/wasm-module-name.js
+++ b/deps/v8/test/message/fail/wasm-module-name.js
@@ -8,7 +8,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
var builder = new WasmModuleBuilder();
builder.setName('test-module');
-builder.addFunction(undefined, kSig_i_v)
+builder.addFunction('main', kSig_i_v)
.addBody([kExprUnreachable])
.exportAs('main');
builder.instantiate().exports.main();
diff --git a/deps/v8/test/message/fail/wasm-no-name.out b/deps/v8/test/message/fail/wasm-no-name.out
index 182b15dc87..c39dff6310 100644
--- a/deps/v8/test/message/fail/wasm-no-name.out
+++ b/deps/v8/test/message/fail/wasm-no-name.out
@@ -1,4 +1,4 @@
wasm-function[0]:0x22: RuntimeError: unreachable
RuntimeError: unreachable
- at main (<anonymous>:wasm-function[0]:0x22)
+ at <anonymous>:wasm-function[0]:0x22
at *%(basename)s:{NUMBER}:31
diff --git a/deps/v8/test/message/fail/wasm-streaming-compile-fail.out b/deps/v8/test/message/fail/wasm-streaming-compile-fail.out
index d11d5ebf84..94719c6695 100644
--- a/deps/v8/test/message/fail/wasm-streaming-compile-fail.out
+++ b/deps/v8/test/message/fail/wasm-streaming-compile-fail.out
@@ -1,5 +1,5 @@
-*%(basename)s:11: CompileError: WebAssembly.compileStreaming(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+*%(basename)s:11: CompileError: WebAssembly.compileStreaming(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
let rethrow = e => setTimeout(_ => {throw e}, 0);
^
-CompileError: WebAssembly.compileStreaming(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+CompileError: WebAssembly.compileStreaming(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
diff --git a/deps/v8/test/message/fail/wasm-streaming-instantiate-fail.out b/deps/v8/test/message/fail/wasm-streaming-instantiate-fail.out
index d8cd334de0..b9eda93704 100644
--- a/deps/v8/test/message/fail/wasm-streaming-instantiate-fail.out
+++ b/deps/v8/test/message/fail/wasm-streaming-instantiate-fail.out
@@ -1,5 +1,5 @@
-*%(basename)s:11: CompileError: WebAssembly.instantiateStreaming(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+*%(basename)s:11: CompileError: WebAssembly.instantiateStreaming(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
let rethrow = e => setTimeout(_ => {throw e}, 0);
^
-CompileError: WebAssembly.instantiateStreaming(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+CompileError: WebAssembly.instantiateStreaming(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
diff --git a/deps/v8/test/message/fail/wasm-sync-compile-fail.out b/deps/v8/test/message/fail/wasm-sync-compile-fail.out
index 849fc202ee..c22bb032a0 100644
--- a/deps/v8/test/message/fail/wasm-sync-compile-fail.out
+++ b/deps/v8/test/message/fail/wasm-sync-compile-fail.out
@@ -1,6 +1,6 @@
-*%(basename)s:9: CompileError: WebAssembly.Module(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+*%(basename)s:9: CompileError: WebAssembly.Module(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
new WebAssembly.Module(builder.toBuffer());
^
-CompileError: WebAssembly.Module(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru to @1, found 0 @+24
+CompileError: WebAssembly.Module(): Compiling function #0:"f" failed: expected 1 elements on the stack for fallthru, found 0 @+24
at *%(basename)s:9:1
diff --git a/deps/v8/test/message/message.status b/deps/v8/test/message/message.status
index 4301867fdf..4a6e1176bc 100644
--- a/deps/v8/test/message/message.status
+++ b/deps/v8/test/message/message.status
@@ -70,11 +70,6 @@
}],
################################################################################
-['arch == ppc64', {
- # Tests that require Simd enabled.
- 'wasm-trace-memory': [SKIP],
-}],
-
['arch == mips64el or arch == mipsel', {
# Tests that require Simd enabled.
'wasm-trace-memory': [SKIP],
@@ -84,4 +79,17 @@
# Tests that require Simd enabled.
'wasm-trace-memory': [SKIP],
}],
+
+##############################################################################
+['no_simd_hardware == True', {
+ 'wasm-trace-memory': [SKIP],
+ 'wasm-trace-memory-liftoff': [SKIP],
+}], # no_simd_hardware == True
+
+################################################################################
+['third_party_heap', {
+ # Performs GC
+ 'weakref-finalizationregistry-error': [SKIP],
+}], # third_party_heap
+
]
diff --git a/deps/v8/test/message/testcfg.py b/deps/v8/test/message/testcfg.py
index f99c377661..7bc5ddf52f 100644
--- a/deps/v8/test/message/testcfg.py
+++ b/deps/v8/test/message/testcfg.py
@@ -49,6 +49,8 @@ class TestCase(testcase.D8TestCase):
def __init__(self, *args, **kwargs):
super(TestCase, self).__init__(*args, **kwargs)
+ # get_source() relies on this being set.
+ self._base_path = os.path.join(self.suite.root, self.path)
source = self.get_source()
self._source_files = self._parse_source_files(source)
self._source_flags = self._parse_source_flags(source)
@@ -78,13 +80,12 @@ class TestCase(testcase.D8TestCase):
return self._source_flags
def _get_source_path(self):
- base_path = os.path.join(self.suite.root, self.path)
# Try .js first, and fall back to .mjs.
# TODO(v8:9406): clean this up by never separating the path from
# the extension in the first place.
- if os.path.exists(base_path + self._get_suffix()):
- return base_path + self._get_suffix()
- return base_path + '.mjs'
+ if os.path.exists(self._base_path + self._get_suffix()):
+ return self._base_path + self._get_suffix()
+ return self._base_path + '.mjs'
def skip_predictable(self):
# Message tests expected to fail don't print allocation output for
@@ -94,8 +95,10 @@ class TestCase(testcase.D8TestCase):
@property
def output_proc(self):
return message.OutProc(self.expected_outcomes,
- os.path.join(self.suite.root, self.path),
- self._expected_fail())
+ self._base_path,
+ self._expected_fail(),
+ self._base_path + '.out',
+ self.suite.test_config.regenerate_expected_files)
def GetSuite(*args, **kwargs):
diff --git a/deps/v8/test/message/wasm-module-name-async.js b/deps/v8/test/message/wasm-module-name-async.js
index a0d501fc25..48a7183ede 100644
--- a/deps/v8/test/message/wasm-module-name-async.js
+++ b/deps/v8/test/message/wasm-module-name-async.js
@@ -9,7 +9,7 @@ load('test/mjsunit/wasm/wasm-module-builder.js');
var builder = new WasmModuleBuilder();
builder.setName('test-module');
-builder.addFunction(undefined, kSig_i_v)
+builder.addFunction('main', kSig_i_v)
.addBody([kExprUnreachable])
.exportAs('main');
let buffer = builder.toBuffer();
diff --git a/deps/v8/test/message/wasm-no-name-async.out b/deps/v8/test/message/wasm-no-name-async.out
index ad003ef227..b35991d7fa 100644
--- a/deps/v8/test/message/wasm-no-name-async.out
+++ b/deps/v8/test/message/wasm-no-name-async.out
@@ -1,4 +1,4 @@
RuntimeError: unreachable
- at main (<anonymous>:wasm-function[0]:0x22)
+ at <anonymous>:wasm-function[0]:0x22
at *%(basename)s:{NUMBER}:27
at test/mjsunit/mjsunit.js:*
diff --git a/deps/v8/test/message/wasm-no-name-streaming.out b/deps/v8/test/message/wasm-no-name-streaming.out
index 987952db8b..182d3c552b 100644
--- a/deps/v8/test/message/wasm-no-name-streaming.out
+++ b/deps/v8/test/message/wasm-no-name-streaming.out
@@ -1,4 +1,4 @@
RuntimeError: unreachable
- at main (<anonymous>:wasm-function[0]:0x22)
+ at <anonymous>:wasm-function[0]:0x22
at test/message/wasm-no-name-async.js:{NUMBER}:27
at test/mjsunit/mjsunit.js:*
diff --git a/deps/v8/test/message/wasm-trace-memory-liftoff.js b/deps/v8/test/message/wasm-trace-memory-liftoff.js
index ad1b9e4042..1050123c59 100644
--- a/deps/v8/test/message/wasm-trace-memory-liftoff.js
+++ b/deps/v8/test/message/wasm-trace-memory-liftoff.js
@@ -4,7 +4,6 @@
// Flags: --no-stress-opt --trace-wasm-memory --liftoff
// Flags: --no-wasm-tier-up --experimental-wasm-simd
-// Flags: --enable-sse3 --enable-sse4-1
// Force enable sse3 and sse4-1, since that will determine which execution tier
// we use, and thus the expected output message will differ.
diff --git a/deps/v8/test/message/wasm-trace-memory-liftoff.out b/deps/v8/test/message/wasm-trace-memory-liftoff.out
index 7228cb4607..43de995348 100644
--- a/deps/v8/test/message/wasm-trace-memory-liftoff.out
+++ b/deps/v8/test/message/wasm-trace-memory-liftoff.out
@@ -1,14 +1,14 @@
-liftoff func: 0+0x3 load from 0000000000000004 val: i32:0 / 00000000
-liftoff func: 1+0x3 load from 0000000000000001 val: i8:0 / 00
-liftoff func: 3+0x5 store to 0000000000000004 val: i32:305419896 / 12345678
-liftoff func: 0+0x3 load from 0000000000000002 val: i32:1450704896 / 56780000
-liftoff func: 1+0x3 load from 0000000000000006 val: i8:52 / 34
-liftoff func: 2+0x3 load from 0000000000000002 val: f32:68169720922112.000000 / 56780000
-liftoff func: 4+0x5 store to 0000000000000004 val: i8:171 / ab
-liftoff func: 0+0x3 load from 0000000000000002 val: i32:1454047232 / 56ab0000
-liftoff func: 2+0x3 load from 0000000000000002 val: f32:94008244174848.000000 / 56ab0000
-liftoff func: 6+0x7 store to 0000000000000004 val: s128:48879 48879 48879 48879 / 0000beef 0000beef 0000beef 0000beef
-liftoff func: 5+0x3 load from 0000000000000002 val: s128:-1091633152 -1091633152 -1091633152 -1091633152 / beef0000 beef0000 beef0000 beef0000
-liftoff func: 7+0x3 load from 0000000000000004 val: i16:48879 / beef
-liftoff func: 8+0x3 load from 0000000000000002 val: i64:-4688528683866062848 / beef0000beef0000
-liftoff func: 9+0x3 load from 0000000000000002 val: f64:-0.000015 / beef0000beef0000
+liftoff func: 0:0xab load from 0000000000000004 val: i32:0 / 00000000
+liftoff func: 1:0xb4 load from 0000000000000001 val: i8:0 / 00
+liftoff func: 3:0xc8 store to 0000000000000004 val: i32:305419896 / 12345678
+liftoff func: 0:0xab load from 0000000000000002 val: i32:1450704896 / 56780000
+liftoff func: 1:0xb4 load from 0000000000000006 val: i8:52 / 34
+liftoff func: 2:0xbd load from 0000000000000002 val: f32:68169720922112.000000 / 56780000
+liftoff func: 4:0xd2 store to 0000000000000004 val: i8:171 / ab
+liftoff func: 0:0xab load from 0000000000000002 val: i32:1454047232 / 56ab0000
+liftoff func: 2:0xbd load from 0000000000000002 val: f32:94008244174848.000000 / 56ab0000
+liftoff func: 6:0xe8 store to 0000000000000004 val: s128:48879 48879 48879 48879 / 0000beef 0000beef 0000beef 0000beef
+liftoff func: 5:0xda load from 0000000000000002 val: s128:-1091633152 -1091633152 -1091633152 -1091633152 / beef0000 beef0000 beef0000 beef0000
+liftoff func: 7:0xf1 load from 0000000000000004 val: i16:48879 / beef
+liftoff func: 8:0xfa load from 0000000000000002 val: i64:-4688528683866062848 / beef0000beef0000
+liftoff func: 9:0x103 load from 0000000000000002 val: f64:-0.000015 / beef0000beef0000
diff --git a/deps/v8/test/message/wasm-trace-memory.js b/deps/v8/test/message/wasm-trace-memory.js
index e1091ad4c7..b31dbb8e1f 100644
--- a/deps/v8/test/message/wasm-trace-memory.js
+++ b/deps/v8/test/message/wasm-trace-memory.js
@@ -4,7 +4,6 @@
// Flags: --no-stress-opt --trace-wasm-memory --no-liftoff
// Flags: --experimental-wasm-simd
-// Flags: --enable-sse3 --enable-sse4-1
load("test/mjsunit/wasm/wasm-module-builder.js");
diff --git a/deps/v8/test/message/wasm-trace-memory.out b/deps/v8/test/message/wasm-trace-memory.out
index 373ff8f78b..e3491fdb1c 100644
--- a/deps/v8/test/message/wasm-trace-memory.out
+++ b/deps/v8/test/message/wasm-trace-memory.out
@@ -1,14 +1,14 @@
-turbofan func: 0+0x3 load from 0000000000000004 val: i32:0 / 00000000
-turbofan func: 1+0x3 load from 0000000000000001 val: i8:0 / 00
-turbofan func: 3+0x5 store to 0000000000000004 val: i32:305419896 / 12345678
-turbofan func: 0+0x3 load from 0000000000000002 val: i32:1450704896 / 56780000
-turbofan func: 1+0x3 load from 0000000000000006 val: i8:52 / 34
-turbofan func: 2+0x3 load from 0000000000000002 val: f32:68169720922112.000000 / 56780000
-turbofan func: 4+0x5 store to 0000000000000004 val: i8:171 / ab
-turbofan func: 0+0x3 load from 0000000000000002 val: i32:1454047232 / 56ab0000
-turbofan func: 2+0x3 load from 0000000000000002 val: f32:94008244174848.000000 / 56ab0000
-turbofan func: 6+0x7 store to 0000000000000004 val: s128:48879 48879 48879 48879 / 0000beef 0000beef 0000beef 0000beef
-turbofan func: 5+0x3 load from 0000000000000002 val: s128:-1091633152 -1091633152 -1091633152 -1091633152 / beef0000 beef0000 beef0000 beef0000
-turbofan func: 7+0x3 load from 0000000000000004 val: i16:48879 / beef
-turbofan func: 8+0x3 load from 0000000000000002 val: i64:-4688528683866062848 / beef0000beef0000
-turbofan func: 9+0x3 load from 0000000000000002 val: f64:-0.000015 / beef0000beef0000
+turbofan func: 0:0xab load from 0000000000000004 val: i32:0 / 00000000
+turbofan func: 1:0xb4 load from 0000000000000001 val: i8:0 / 00
+turbofan func: 3:0xc8 store to 0000000000000004 val: i32:305419896 / 12345678
+turbofan func: 0:0xab load from 0000000000000002 val: i32:1450704896 / 56780000
+turbofan func: 1:0xb4 load from 0000000000000006 val: i8:52 / 34
+turbofan func: 2:0xbd load from 0000000000000002 val: f32:68169720922112.000000 / 56780000
+turbofan func: 4:0xd2 store to 0000000000000004 val: i8:171 / ab
+turbofan func: 0:0xab load from 0000000000000002 val: i32:1454047232 / 56ab0000
+turbofan func: 2:0xbd load from 0000000000000002 val: f32:94008244174848.000000 / 56ab0000
+turbofan func: 6:0xe8 store to 0000000000000004 val: s128:48879 48879 48879 48879 / 0000beef 0000beef 0000beef 0000beef
+turbofan func: 5:0xda load from 0000000000000002 val: s128:-1091633152 -1091633152 -1091633152 -1091633152 / beef0000 beef0000 beef0000 beef0000
+turbofan func: 7:0xf1 load from 0000000000000004 val: i16:48879 / beef
+turbofan func: 8:0xfa load from 0000000000000002 val: i64:-4688528683866062848 / beef0000beef0000
+turbofan func: 9:0x103 load from 0000000000000002 val: f64:-0.000015 / beef0000beef0000
diff --git a/deps/v8/test/mjsunit/BUILD.gn b/deps/v8/test/mjsunit/BUILD.gn
index 1acef4ef64..2bdfd797d5 100644
--- a/deps/v8/test/mjsunit/BUILD.gn
+++ b/deps/v8/test/mjsunit/BUILD.gn
@@ -24,14 +24,10 @@ group("v8_mjsunit") {
"../../tools/profile.mjs",
"../../tools/profile_view.mjs",
"../../tools/splaytree.mjs",
- "../../tools/system-analyzer/helper.mjs",
- "../../tools/system-analyzer/log/api.mjs",
- "../../tools/system-analyzer/log/code.mjs",
- "../../tools/system-analyzer/log/ic.mjs",
- "../../tools/system-analyzer/log/log.mjs",
- "../../tools/system-analyzer/log/map.mjs",
+ "../../tools/system-analyzer/log/",
"../../tools/system-analyzer/processor.mjs",
"../../tools/system-analyzer/timeline.mjs",
+ "../../tools/system-analyzer/helper.mjs",
"../../tools/tickprocessor.mjs",
]
}
diff --git a/deps/v8/test/mjsunit/baseline/test-osr.js b/deps/v8/test/mjsunit/baseline/test-osr.js
new file mode 100644
index 0000000000..8add12ddb2
--- /dev/null
+++ b/deps/v8/test/mjsunit/baseline/test-osr.js
@@ -0,0 +1,51 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --sparkplug --no-always-sparkplug --use-osr
+// Flags: --opt --no-always-opt --deopt-every-n-times=0
+
+function isExecutingBaseline(func) {
+ let opt_status = %GetOptimizationStatus(func);
+ return (opt_status & V8OptimizationStatus.kTopmostFrameIsBaseline) !== 0;
+}
+
+function f() {
+ for (var i = 0; i <= 20; i++) {
+ if (i == 5) {
+ %BaselineOsr();
+ }
+ if (i > 5) {
+ assertTrue(isBaseline(f));
+ assertTrue(isExecutingBaseline(f));
+ }
+ }
+}
+
+%NeverOptimizeFunction(f);
+f();
+
+var expectedStatus = V8OptimizationStatus.kTopmostFrameIsInterpreted;
+
+function checkTopmostFrame(func) {
+ let opt_status = %GetOptimizationStatus(func);
+ assertTrue ((opt_status & expectedStatus) !== 0, "Expected flag " +
+ expectedStatus + " to be set in optimization status");
+}
+
+function g() {
+ for (var i = 0; i <= 20; i++) {
+ checkTopmostFrame(g)
+ if (i == 2) {
+ %BaselineOsr();
+ expectedStatus = V8OptimizationStatus.kTopmostFrameIsBaseline;
+ }
+ if (i == 5) {
+ %OptimizeOsr();
+ expectedStatus = V8OptimizationStatus.kTopmostFrameIsTurboFanned;
+ }
+ }
+}
+
+%PrepareFunctionForOptimization(g);
+g();
diff --git a/deps/v8/test/mjsunit/compiler/bigint-asuintn.js b/deps/v8/test/mjsunit/compiler/bigint-asuintn.js
new file mode 100644
index 0000000000..fb127bad9d
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/bigint-asuintn.js
@@ -0,0 +1,37 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --opt --no-always-opt
+
+
+function f(x) {
+ return BigInt.asUintN(3, x);
+}
+
+%PrepareFunctionForOptimization(f);
+assertEquals(7n, f(7n));
+assertEquals(1n, f(9n));
+%OptimizeFunctionOnNextCall(f);
+assertEquals(7n, f(7n));
+assertEquals(1n, f(9n));
+assertOptimized(f);
+
+// BigInt.asUintN throws TypeError for non-BigInt arguments.
+assertThrows(() => f(2), TypeError);
+if(%Is64Bit()) {
+ // On 64 bit architectures TurboFan optimizes BigInt.asUintN to native code
+ // that deoptimizes on non-BigInt arguments.
+ assertUnoptimized(f);
+
+ // The next time the function is optimized, speculation should be disabled
+ // so the builtin call is kept, which won't deoptimize again.
+ %PrepareFunctionForOptimization(f);
+ %OptimizeFunctionOnNextCall(f);
+}
+assertEquals(7n, f(7n));
+assertOptimized(f);
+
+// Re-optimized still throws but does not deopt-loop.
+assertThrows(() => f(2), TypeError);
+assertOptimized(f);
diff --git a/deps/v8/test/mjsunit/compiler/concurrent-invalidate-transition-map.js b/deps/v8/test/mjsunit/compiler/concurrent-invalidate-transition-map.js
index ac0e9ef59e..e005331221 100644
--- a/deps/v8/test/mjsunit/compiler/concurrent-invalidate-transition-map.js
+++ b/deps/v8/test/mjsunit/compiler/concurrent-invalidate-transition-map.js
@@ -27,7 +27,7 @@
// Flags: --track-fields --track-double-fields --allow-natives-syntax
// Flags: --concurrent-recompilation --block-concurrent-recompilation
-// Flags: --no-always-opt
+// Flags: --no-always-opt --no-turbo-concurrent-get-property-access-info
if (!%IsConcurrentRecompilationSupported()) {
print("Concurrent recompilation is disabled. Skipping this test.");
diff --git a/deps/v8/test/mjsunit/compiler/concurrent-proto-change.js b/deps/v8/test/mjsunit/compiler/concurrent-proto-change.js
index df8d629f32..6ee45ef342 100644
--- a/deps/v8/test/mjsunit/compiler/concurrent-proto-change.js
+++ b/deps/v8/test/mjsunit/compiler/concurrent-proto-change.js
@@ -27,7 +27,7 @@
// Flags: --allow-natives-syntax --no-always-opt
// Flags: --concurrent-recompilation --block-concurrent-recompilation
-// Flags: --no-always-opt
+// Flags: --no-always-opt --no-turbo-concurrent-get-property-access-info
if (!%IsConcurrentRecompilationSupported()) {
print("Concurrent recompilation is disabled. Skipping this test.");
diff --git a/deps/v8/test/mjsunit/compiler/deopt-pretenure.js b/deps/v8/test/mjsunit/compiler/deopt-pretenure.js
new file mode 100644
index 0000000000..7823dc94fa
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/deopt-pretenure.js
@@ -0,0 +1,72 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --opt --no-always-opt
+// Flags: --allocation-site-pretenuring --stress-gc-during-compilation
+// Flags: --stress-scavenge=0
+// Flags: --max-optimized-bytecode-size=132000
+
+function CheckOptimizationStatus(func, expectedOptimizationStatus) {
+ let opt_status = %GetOptimizationStatus(func);
+ assertTrue ((opt_status & expectedOptimizationStatus) !== 0,
+ "Expected flag " + expectedOptimizationStatus +
+ " to be set in optimization status");
+}
+
+// Trigger pretenuring decision change at entry, deopting at bytecode offset -1.
+let arr = [];
+var empty;
+function DeoptEntry(expectedStatus) {
+ CheckOptimizationStatus(DeoptEntry, expectedStatus);
+ empty = [];
+ arr.push(empty);
+}
+
+%PrepareFunctionForOptimization(DeoptEntry);
+DeoptEntry(V8OptimizationStatus.kTopmostFrameIsInterpreted
+ | V8OptimizationStatus.kTopmostFrameIsBaseline);
+
+%OptimizeFunctionOnNextCall(DeoptEntry);
+// Force the allocation site to be pretenured.
+assertTrue(%PretenureAllocationSite(empty));
+// This call should deopt at entry because of the pretenuring decision change.
+DeoptEntry(V8OptimizationStatus.kTopmostFrameIsInterpreted
+ | V8OptimizationStatus.kTopmostFrameIsBaseline);
+
+%PrepareFunctionForOptimization(DeoptEntry);
+%OptimizeFunctionOnNextCall(DeoptEntry);
+// Function should be compiled now.
+DeoptEntry(V8OptimizationStatus.kTopmostFrameIsTurboFanned);
+
+// Trigger pretenuring decision change during OSR.
+function createSource(name, fillCnt) {
+ var src =
+ `function ${name}() {
+ let arr = [];
+ for (var i = 0; i < 10; i++) {
+ let local_arr = [];
+ arr[i] = local_arr;`
+ // Useless bytecodes to force a wider jump.
+ for (var i = 0; i < fillCnt; i++) {
+ src += ' try {} catch (e) {}\n';
+ }
+ src +=
+ ` if (i == 5) {
+ %OptimizeOsr();
+ %PretenureAllocationSite(local_arr);
+ }
+ }
+ }
+ %PrepareFunctionForOptimization(${name});
+ ${name}();`
+ return src;
+}
+
+// Deopt at JumpLoop.
+eval(createSource('Loop',0));
+// Deopt at JumpLoop.Wide.
+eval(createSource('LoopWide',0xFF));
+// Deopt at JumpLoop.ExtraWide.
+// --max-optimized-bytecode-size has to be large enough to compile this.
+eval(createSource('LoopExtraWide',0xFFF));
diff --git a/deps/v8/test/mjsunit/compiler/fast-api-calls.js b/deps/v8/test/mjsunit/compiler/fast-api-calls.js
index c61a7a62a0..b673fc714e 100644
--- a/deps/v8/test/mjsunit/compiler/fast-api-calls.js
+++ b/deps/v8/test/mjsunit/compiler/fast-api-calls.js
@@ -9,9 +9,12 @@
// --always-opt is disabled because we rely on particular feedback for
// optimizing to the fastest path.
// Flags: --no-always-opt
+// The test relies on optimizing/deoptimizing at predictable moments, so
+// it's not suitable for deoptimization fuzzing.
+// Flags: --deopt-every-n-times=0
-assertThrows(() => d8.test.fast_c_api());
-const fast_c_api = new d8.test.fast_c_api();
+assertThrows(() => d8.test.FastCAPI());
+const fast_c_api = new d8.test.FastCAPI();
// ----------- add_all -----------
// `add_all` has the following signature:
@@ -36,24 +39,28 @@ if (fast_c_api.supports_fp_params) {
// Test that regular call hits the fast path.
fast_c_api.reset_counts();
assertEquals(add_all_result, add_all());
+ assertOptimized(add_all);
assertEquals(1, fast_c_api.fast_call_count());
assertEquals(0, fast_c_api.slow_call_count());
// Test fallback to slow path.
fast_c_api.reset_counts();
assertEquals(add_all_result, add_all(true));
+ assertOptimized(add_all);
assertEquals(1, fast_c_api.fast_call_count());
assertEquals(1, fast_c_api.slow_call_count());
// Test that no fallback hits the fast path again.
fast_c_api.reset_counts();
assertEquals(add_all_result, add_all());
+ assertOptimized(add_all);
assertEquals(1, fast_c_api.fast_call_count());
assertEquals(0, fast_c_api.slow_call_count());
} else {
// Test that calling with unsupported types hits the slow path.
fast_c_api.reset_counts();
assertEquals(add_all_result, add_all());
+ assertOptimized(add_all);
assertEquals(0, fast_c_api.fast_call_count());
assertEquals(1, fast_c_api.slow_call_count());
}
@@ -71,15 +78,17 @@ const add_all_mismatch_result = add_all_mismatch();
fast_c_api.reset_counts();
assertEquals(add_all_mismatch_result, add_all_mismatch());
-assertEquals(1, fast_c_api.slow_call_count());
-assertEquals(0, fast_c_api.fast_call_count());
// If the function was ever optimized to the fast path, it should
// have been deoptimized due to the argument types mismatch. If it
// wasn't optimized due to lack of support for FP params, it will
// stay optimized.
if (fast_c_api.supports_fp_params) {
assertUnoptimized(add_all_mismatch);
+} else {
+ assertOptimized(add_all_mismatch);
}
+assertEquals(0, fast_c_api.fast_call_count());
+assertEquals(1, fast_c_api.slow_call_count());
// ----------- add_32bit_int -----------
// `add_32bit_int` has the following signature:
@@ -98,18 +107,21 @@ assertEquals(add_32bit_int_result, add_32bit_int());
// Test that regular call hits the fast path.
fast_c_api.reset_counts();
assertEquals(add_32bit_int_result, add_32bit_int());
+assertOptimized(add_32bit_int);
assertEquals(1, fast_c_api.fast_call_count());
assertEquals(0, fast_c_api.slow_call_count());
// Test fallback to slow path.
fast_c_api.reset_counts();
assertEquals(add_32bit_int_result, add_32bit_int(true));
+assertOptimized(add_32bit_int);
assertEquals(1, fast_c_api.fast_call_count());
assertEquals(1, fast_c_api.slow_call_count());
// Test that no fallback hits the fast path again.
fast_c_api.reset_counts();
assertEquals(add_32bit_int_result, add_32bit_int());
+assertOptimized(add_32bit_int);
assertEquals(1, fast_c_api.fast_call_count());
assertEquals(0, fast_c_api.slow_call_count());
@@ -125,24 +137,56 @@ assertEquals(add_32bit_int_result, add_32bit_int_mismatch(false, -42, 45));
// Test that passing extra argument stays on the fast path.
fast_c_api.reset_counts();
assertEquals(add_32bit_int_result, add_32bit_int_mismatch(false, -42, 45, -42));
+assertOptimized(add_32bit_int_mismatch);
assertEquals(1, fast_c_api.fast_call_count());
+assertEquals(0, fast_c_api.slow_call_count());
+%PrepareFunctionForOptimization(add_32bit_int_mismatch);
// Test that passing wrong argument types stays on the fast path.
fast_c_api.reset_counts();
-assertEquals(Math.round(-42 + 3.14), add_32bit_int_mismatch(false, -42, 3.14));
+let mismatch_result = add_32bit_int_mismatch(false, -42, 3.14);
+assertOptimized(add_32bit_int_mismatch);
+assertEquals(Math.round(-42 + 3.14), mismatch_result);
assertEquals(1, fast_c_api.fast_call_count());
+assertEquals(0, fast_c_api.slow_call_count());
+
+// Test that passing arguments non-convertible to number falls down the slow path.
+fast_c_api.reset_counts();
+assertEquals(0, add_32bit_int_mismatch(false, -4294967296, Symbol()));
+assertUnoptimized(add_32bit_int_mismatch);
+assertEquals(0, fast_c_api.fast_call_count());
+assertEquals(1, fast_c_api.slow_call_count());
+
+// Optimize again.
+%OptimizeFunctionOnNextCall(add_32bit_int_mismatch);
+assertEquals(add_32bit_int_result, add_32bit_int_mismatch(false, -42, 45));
+assertOptimized(add_32bit_int_mismatch);
// Test that passing too few argument falls down the slow path,
// because it's an argument type mismatch (undefined vs. int).
fast_c_api.reset_counts();
assertEquals(-42, add_32bit_int_mismatch(false, -42));
-assertEquals(1, fast_c_api.slow_call_count());
-assertEquals(0, fast_c_api.fast_call_count());
assertUnoptimized(add_32bit_int_mismatch);
+assertEquals(0, fast_c_api.fast_call_count());
+assertEquals(1, fast_c_api.slow_call_count());
// Test that the function can be optimized again.
%PrepareFunctionForOptimization(add_32bit_int_mismatch);
%OptimizeFunctionOnNextCall(add_32bit_int_mismatch);
fast_c_api.reset_counts();
assertEquals(add_32bit_int_result, add_32bit_int_mismatch(false, -42, 45));
+assertOptimized(add_32bit_int_mismatch);
assertEquals(1, fast_c_api.fast_call_count());
+assertEquals(0, fast_c_api.slow_call_count());
+
+// Test function overloads
+function overloaded_add_all(should_fallback = false) {
+ return fast_c_api.overloaded_add_all(should_fallback,
+ -42, 45, Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER,
+ max_safe_float * 0.5, Math.PI);
+}
+
+%PrepareFunctionForOptimization(overloaded_add_all);
+assertEquals(add_all_result, overloaded_add_all());
+%OptimizeFunctionOnNextCall(overloaded_add_all);
+assertEquals(add_all_result, overloaded_add_all());
diff --git a/deps/v8/test/mjsunit/compiler/fast-api-interface-types.js b/deps/v8/test/mjsunit/compiler/fast-api-interface-types.js
new file mode 100644
index 0000000000..33a17ebe04
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/fast-api-interface-types.js
@@ -0,0 +1,61 @@
+// Copyright 2021 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.
+
+// This file interface types used with fast API calls.
+
+// Flags: --turbo-fast-api-calls --allow-natives-syntax --opt
+// Flags: --no-always-opt
+// Flags: --deopt-every-n-times=0
+
+const fast_c_api = new d8.test.FastCAPI();
+// We create another API object to avoid migrating the map of fast_c_api
+// when using it as a prototype.
+const another_fast_c_api = new d8.test.FastCAPI();
+
+function is_fast_c_api_object(obj, should_fallback = false) {
+ return fast_c_api.is_fast_c_api_object(should_fallback, obj);
+}
+
+%PrepareFunctionForOptimization(is_fast_c_api_object);
+assertTrue(is_fast_c_api_object(another_fast_c_api));
+%OptimizeFunctionOnNextCall(is_fast_c_api_object);
+
+// Test that fast_c_api is an API object wrapping a C++ one.
+fast_c_api.reset_counts();
+assertTrue(is_fast_c_api_object(another_fast_c_api));
+assertOptimized(is_fast_c_api_object);
+assertEquals(1, fast_c_api.fast_call_count());
+assertEquals(0, fast_c_api.slow_call_count());
+
+// Same test but taking the fallback to the slow path.
+fast_c_api.reset_counts();
+assertTrue(is_fast_c_api_object(another_fast_c_api, true));
+assertOptimized(is_fast_c_api_object);
+assertEquals(1, fast_c_api.fast_call_count());
+assertEquals(1, fast_c_api.slow_call_count());
+
+// Test that a regular JS object returns false.
+fast_c_api.reset_counts();
+assertFalse(is_fast_c_api_object({}));
+assertOptimized(is_fast_c_api_object);
+assertEquals(1, fast_c_api.fast_call_count());
+assertEquals(0, fast_c_api.slow_call_count());
+
+// Test that a subclassed object returns false.
+const child = Object.create(another_fast_c_api);
+fast_c_api.reset_counts();
+assertFalse(is_fast_c_api_object(child));
+assertOptimized(is_fast_c_api_object);
+assertEquals(1, fast_c_api.fast_call_count());
+assertEquals(0, fast_c_api.slow_call_count());
+
+// Test that passing an API object of an unrelated (leaf) type
+// causes the function to return false, because an object of
+// FastCAPI type is expected as an argument.
+const leaf_interface_obj = new d8.test.LeafInterfaceType();
+fast_c_api.reset_counts();
+assertFalse(is_fast_c_api_object(leaf_interface_obj));
+assertOptimized(is_fast_c_api_object);
+assertEquals(1, fast_c_api.fast_call_count());
+assertEquals(0, fast_c_api.slow_call_count());
diff --git a/deps/v8/test/mjsunit/compiler/load-elimination-const-field.js b/deps/v8/test/mjsunit/compiler/load-elimination-const-field.js
index fb227dd93d..0f215c2d80 100644
--- a/deps/v8/test/mjsunit/compiler/load-elimination-const-field.js
+++ b/deps/v8/test/mjsunit/compiler/load-elimination-const-field.js
@@ -134,7 +134,8 @@
}
}
- %EnsureFeedbackVectorForFunction(B);
+ %PrepareFunctionForOptimization(B);
+
%PrepareFunctionForOptimization(inst_param);
inst_param(1); inst_param(2);
%OptimizeFunctionOnNextCall(inst_param); inst_param(3);
@@ -165,7 +166,6 @@
}
}
- %EnsureFeedbackVectorForFunction(B);
%PrepareFunctionForOptimization(inst_computed);
inst_computed(1); inst_computed(2);
%OptimizeFunctionOnNextCall(inst_computed); inst_computed(3);
diff --git a/deps/v8/test/mjsunit/compiler/opt-higher-order-functions.js b/deps/v8/test/mjsunit/compiler/opt-higher-order-functions.js
index 3fdcabe504..380a6ceac2 100644
--- a/deps/v8/test/mjsunit/compiler/opt-higher-order-functions.js
+++ b/deps/v8/test/mjsunit/compiler/opt-higher-order-functions.js
@@ -28,6 +28,51 @@ assertOptimized(TestFunctionPrototypeApply);
TestFunctionPrototypeApply("abc");
assertUnoptimized(TestFunctionPrototypeApply);
+// Testing: FunctionPrototypeApply with non-HeapConstant Receiver
+var MathMin = (function() { return Math.min.apply(null, arguments); })
+
+function TestFunctionPrototypeApplyReceiver(func, x, y) {
+ return func(x, y);
+}
+
+%PrepareFunctionForOptimization(MathMin);
+%PrepareFunctionForOptimization(TestFunctionPrototypeApplyReceiver);
+assertEquals(-13, TestFunctionPrototypeApplyReceiver(MathMin, -13, 42));
+assertEquals(-4, TestFunctionPrototypeApplyReceiver(MathMin, 3, -4));
+%OptimizeFunctionOnNextCall(TestFunctionPrototypeApplyReceiver);
+assertEquals(7, TestFunctionPrototypeApplyReceiver(MathMin, 7, 9));
+assertOptimized(TestFunctionPrototypeApplyReceiver);
+TestFunctionPrototypeApplyReceiver(MathMin, "abc");
+assertUnoptimized(TestFunctionPrototypeApplyReceiver);
+
+// Testing: FunctionPrototypeApply with non-HeapConstant Receiver won't cause
+// deopt loop
+(function() {
+
+ var F;
+ function foo() {
+ return F.apply(null, arguments);
+ }
+ function test(x, y) {
+ return foo(x, y);
+ }
+ F = Math.min;
+ %PrepareFunctionForOptimization(foo);
+ %PrepareFunctionForOptimization(test);
+ assertEquals(-13, test(-13, 42));
+ %OptimizeFunctionOnNextCall(test);
+ assertEquals(-13, test(-13, 42));
+ assertOptimized(test);
+ %PrepareFunctionForOptimization(test);
+ F = Math.max;
+ assertEquals(42, test(-13, 42));
+ assertUnoptimized(test);
+ %OptimizeFunctionOnNextCall(test);
+ assertEquals(42, test(-13, 42));
+ F = Math.min;
+ assertEquals(-13, test(-13, 42));
+ assertOptimized(test);
+})();
// Testing: FunctionPrototypeCall
function TestFunctionPrototypeCall(x) {
diff --git a/deps/v8/test/mjsunit/compiler/regress-1195650.js b/deps/v8/test/mjsunit/compiler/regress-1195650.js
new file mode 100644
index 0000000000..b82cc013eb
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-1195650.js
@@ -0,0 +1,31 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax
+
+(function() {
+ var gaga = "gaga";
+ function foo(a) {
+ let y = Math.min(Infinity ? gaga : Infinity, -0) / 0;
+ if (a) y = -0;
+ return y ? 1 : 0;
+ }
+ %PrepareFunctionForOptimization(foo);
+ foo(false);
+ %OptimizeFunctionOnNextCall(foo);
+ assertEquals(0, foo(false));
+})();
+
+(function() {
+ var gaga = "gaga";
+ function foo(a) {
+ let y = Math.min(Infinity ? gaga : Infinity, -0) % 0;
+ if (a) y = 1.3;
+ return y ? 1 : 0;
+ }
+ %PrepareFunctionForOptimization(foo);
+ foo(false);
+ %OptimizeFunctionOnNextCall(foo);
+ assertEquals(0, foo(false));
+})();
diff --git a/deps/v8/test/mjsunit/compiler/regress-1196185.js b/deps/v8/test/mjsunit/compiler/regress-1196185.js
new file mode 100644
index 0000000000..be5b219fb4
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-1196185.js
@@ -0,0 +1,46 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --disable-in-process-stack-traces
+// Flags: --gc-interval=500 --stress-compaction
+
+class X {}
+function rando() {}
+
+let named;
+function foo(input) {
+ var b;
+ rando(), {
+ blah: function () { b = b(); },
+ };
+
+ for (var i = 0; i < 10; i++) {
+ var r = rando();
+ var broom;
+
+ try {
+ input[r];
+ named();
+ } catch (e) {}
+
+ try {
+ broom = __v_859.exports.main;
+ } catch (e) {}
+
+ try {
+ for (var j = 0; j < 10; j++) {
+ broom();
+ }
+ } catch (e) {}
+ }
+}
+
+function testfunc() {
+ for (var i = 0; i < 10; i++) {
+ %PrepareFunctionForOptimization(foo);
+ %OptimizeFunctionOnNextCall(foo);
+ foo();
+ }
+}
+testfunc();
diff --git a/deps/v8/test/mjsunit/compiler/regress-1196683.js b/deps/v8/test/mjsunit/compiler/regress-1196683.js
index abd7d6b2f8..7fc7957cc6 100644
--- a/deps/v8/test/mjsunit/compiler/regress-1196683.js
+++ b/deps/v8/test/mjsunit/compiler/regress-1196683.js
@@ -14,7 +14,7 @@
assertEquals(-(2**31) + 1, foo());
%OptimizeFunctionOnNextCall(foo);
assertEquals(-(2**31) + 1, foo());
-});
+})();
// The remaining tests already passed without the bugfix.
diff --git a/deps/v8/test/mjsunit/compiler/regress-1202312.js b/deps/v8/test/mjsunit/compiler/regress-1202312.js
new file mode 100644
index 0000000000..ad2cfa4228
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-1202312.js
@@ -0,0 +1,24 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax
+
+function foo() {
+ var __v_0 = { x: 1 };
+ var __v_1 = { };
+ var __v_2 = 0;
+ for (var i = 0; i < 1; i = {}) {
+ __v_0 += __v_0.x + 0.5;
+ __v_2 += __v_2.x % 0.5;
+ __v_2 += __v_2.x % 0.5;
+ __v_2 += __v_0.x < 6;
+ __v_2 += __v_0.x === 7;
+ __v_2 = __v_1;
+ }
+}
+
+%PrepareFunctionForOptimization(foo);
+foo();
+%OptimizeFunctionOnNextCall(foo);
+foo();
diff --git a/deps/v8/test/mjsunit/compiler/regress-1202625.js b/deps/v8/test/mjsunit/compiler/regress-1202625.js
new file mode 100644
index 0000000000..ad85683ec8
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-1202625.js
@@ -0,0 +1,21 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax
+
+function foo() {
+ var __v_10 = { x: 1 };
+ var __v_11 = { y: 1 };
+ for (var i = 0; i < 1; i = {}) {
+ i += Math.abs(__v_10.x);
+ i += Math.abs(__v_10.x);
+ __v_10 = __v_11;
+ }
+}
+
+%PrepareFunctionForOptimization(foo);
+foo();
+foo();
+%OptimizeFunctionOnNextCall(foo);
+foo();
diff --git a/deps/v8/test/mjsunit/compiler/regress-1202924.js b/deps/v8/test/mjsunit/compiler/regress-1202924.js
new file mode 100644
index 0000000000..a8b8970ee2
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-1202924.js
@@ -0,0 +1,18 @@
+// Copyright 2021 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.
+
+// Flags: --no-lazy-feedback-allocation --interrupt-budget=1000
+// Flags: --no-analyze-environment-liveness
+
+function foo() {
+ for (var i = 1; i < 10; i++) {
+ var n = 1;
+ for (var j = 1; j < 10; j++) {
+ if (n == j) j = 0;
+ foo = j % - n;
+ n++;
+ }
+ }
+}
+foo();
diff --git a/deps/v8/test/mjsunit/compiler/regress-1203116.js b/deps/v8/test/mjsunit/compiler/regress-1203116.js
new file mode 100644
index 0000000000..62a53cb412
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-1203116.js
@@ -0,0 +1,30 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax
+
+function bar(x) {
+ x.f = 13.37;
+}
+
+function foo() {
+ const v2 = {};
+ const v3 = {a:42};
+ const v4 = {a:42};
+ v3.d = 42;
+ v4.b = v2;
+ v4.b = 42;
+ v4.b;
+ v3.f = v2;
+ bar(v4);
+ const v10 = {a:42};
+ for (let i = 0; i < 10; i++) {
+ bar(v10);
+ }
+}
+
+%PrepareFunctionForOptimization(foo);
+foo();
+%OptimizeFunctionOnNextCall(foo);
+foo();
diff --git a/deps/v8/test/mjsunit/compiler/regress-crbug-11564.js b/deps/v8/test/mjsunit/compiler/regress-crbug-11564.js
new file mode 100644
index 0000000000..4ad964d019
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-crbug-11564.js
@@ -0,0 +1,32 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --max-optimized-bytecode-size=300000
+
+const args = new Array(35000).fill('arg');
+
+// Regression test for ReduceJSCreateAsyncFunctionObject.
+function outer_async() {
+ async function g(replace_me) {}
+ %PrepareFunctionForOptimization(g);
+ %OptimizeFunctionOnNextCall(g);
+ new Promise(g);
+}
+
+const outer_async_many_args = outer_async.toLocaleString().replace('replace_me', args);
+eval(outer_async_many_args);
+outer_async();
+
+// Regression test for ReduceJSCreateBoundFunction.
+function outer_bind(arg) {
+ function b() { return 42; };
+ return b.bind(null, replace_me);
+}
+
+const outer_bind_many_args = outer_bind.toLocaleString().replace('replace_me', args);
+eval(outer_bind_many_args);
+%PrepareFunctionForOptimization(outer_bind);
+outer_bind();
+%OptimizeFunctionOnNextCall(outer_bind);
+outer_bind();
diff --git a/deps/v8/test/mjsunit/compiler/regress-crbug-1201011.js b/deps/v8/test/mjsunit/compiler/regress-crbug-1201011.js
new file mode 100644
index 0000000000..f521a60b85
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-crbug-1201011.js
@@ -0,0 +1,11 @@
+// Copyright 2021 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.
+
+// Flags: --turbo-fast-api-calls
+
+const fast_c_api = new d8.test.FastCAPI();
+function foo(obj) {
+ return fast_c_api.is_fast_c_api_object(false, obj);
+}
+foo();
diff --git a/deps/v8/test/mjsunit/compiler/regress-crbug-1201057.js b/deps/v8/test/mjsunit/compiler/regress-crbug-1201057.js
new file mode 100644
index 0000000000..7afaaa6e38
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-crbug-1201057.js
@@ -0,0 +1,9 @@
+// Copyright 2021 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.
+
+// Flags: --turbo-fast-api-calls
+
+const fast_c_api = new d8.test.FastCAPI();
+const fast_obj = Object.create(fast_c_api);
+assertThrows(() => fast_obj.supports_fp_params);
diff --git a/deps/v8/test/mjsunit/compiler/regress-crbug-1201082.js b/deps/v8/test/mjsunit/compiler/regress-crbug-1201082.js
new file mode 100644
index 0000000000..2ec25b3a15
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/regress-crbug-1201082.js
@@ -0,0 +1,11 @@
+// Copyright 2021 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.
+
+// Flags: --turbo-fast-api-calls
+
+const fast_c_api = new d8.test.FastCAPI();
+function foo(obj) {
+ return fast_c_api.is_fast_c_api_object(false, obj);
+}
+foo(1);
diff --git a/deps/v8/test/mjsunit/compiler/test-literal-map-migration.js b/deps/v8/test/mjsunit/compiler/test-literal-map-migration.js
new file mode 100644
index 0000000000..2c1e631e7b
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/test-literal-map-migration.js
@@ -0,0 +1,30 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --opt --no-always-opt
+
+function f() {
+ let r = [];
+ let o1 = { x: 5 };
+ let o2 = { y: 5, inner: { n: 5 } };
+ r.push(o1);
+ r.push(o2);
+ return r;
+}
+
+%PrepareFunctionForOptimization(f);
+{
+ let r = f();
+ f();
+
+ // Deprecate all the maps.
+ r[0].x = 5.5;
+ r[1].y = 5.5;
+ r[1].inner.n = 5.5;
+}
+// We will optimize despite deprecated maps in the boilerplates.
+// until code finalization.
+%OptimizeFunctionOnNextCall(f);
+f();
+assertOptimized(f);
diff --git a/deps/v8/test/mjsunit/concurrent-initial-prototype-change-1.js b/deps/v8/test/mjsunit/concurrent-initial-prototype-change-1.js
index 3234c61c96..c2135bfaf7 100644
--- a/deps/v8/test/mjsunit/concurrent-initial-prototype-change-1.js
+++ b/deps/v8/test/mjsunit/concurrent-initial-prototype-change-1.js
@@ -28,7 +28,9 @@
// Flags: --allow-natives-syntax
// Flags: --concurrent-recompilation --block-concurrent-recompilation
// Flags: --nostress-opt --no-always-opt
-// Flags: --no-turbo-direct-heap-access
+// Flags: --no-turboprop
+// Flags: --no-concurrent-inlining
+// Flags: --no-turbo-concurrent-get-property-access-info
// --nostress-opt is in place because this particular optimization
// (guaranteeing that the Array prototype chain has no elements) is
diff --git a/deps/v8/test/mjsunit/const-dict-tracking.js b/deps/v8/test/mjsunit/const-dict-tracking.js
index 051239fb5f..c737cbda2a 100644
--- a/deps/v8/test/mjsunit/const-dict-tracking.js
+++ b/deps/v8/test/mjsunit/const-dict-tracking.js
@@ -5,6 +5,7 @@
// Flags: --allow-natives-syntax --opt --no-always-opt
// Flags: --no-stress-flush-bytecode
// Flags: --block-concurrent-recompilation
+// Flags: --no-turbo-concurrent-get-property-access-info
//
// Tests tracking of constness of properties stored in dictionary
// mode prototypes.
diff --git a/deps/v8/test/mjsunit/harmony/class-static-blocks.js b/deps/v8/test/mjsunit/harmony/class-static-blocks.js
index b4bb710e68..0bfcd8804c 100644
--- a/deps/v8/test/mjsunit/harmony/class-static-blocks.js
+++ b/deps/v8/test/mjsunit/harmony/class-static-blocks.js
@@ -113,6 +113,19 @@
assertArrayEquals([undefined], log);
}
+{
+ // 'await' is allowed as an identifier name in named function expressions.
+ class C1 { static { (function await() {}); } }
+ // 'return' is allowed across function boundaries inside static blocks.
+ class C2 { static {
+ function f1() { return; }
+ function f2() { return 0; }
+ let f3 = (x => { return x; })
+ let f4 = (x => { return; })
+ }
+ }
+}
+
function assertDoesntParse(expr, context_start, context_end) {
assertThrows(() => {
eval(`${context_start} class C { static { ${expr} } } ${context_end}`);
@@ -131,4 +144,14 @@ for (let [s, e] of [['', ''],
// 'await' is disallowed as an identifier.
assertDoesntParse('let await;', s, e);
assertDoesntParse('await;', s, e);
+ assertDoesntParse('function await() {}', s, e);
+ assertDoesntParse('class await() {}', s, e);
+ assertDoesntParse('try {} catch (await) {}', s, e);
+ assertDoesntParse('try {} catch ({await}) {}', s, e);
+ assertDoesntParse('var {await} = 0;', s, e);
+ assertDoesntParse('({await} = 0);', s, e);
+ assertDoesntParse('return;', s, e);
+ assertDoesntParse('return 0;', s, e);
+ assertDoesntParse('{ return; }', s, e);
+ assertDoesntParse('{ return 0; }', s, e);
}
diff --git a/deps/v8/test/mjsunit/harmony/error-cause.js b/deps/v8/test/mjsunit/harmony/error-cause.js
new file mode 100644
index 0000000000..eeb1976803
--- /dev/null
+++ b/deps/v8/test/mjsunit/harmony/error-cause.js
@@ -0,0 +1,221 @@
+// Copyright 2021 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.
+
+// Flags: --harmony-error-cause
+
+// Basic error
+(function () {
+ const err = Error('message', { cause: 'a cause' });
+ assertEquals('a cause', err.cause);
+ const descriptor = Object.getOwnPropertyDescriptor(err, 'cause');
+ assertEquals('a cause', descriptor.value);
+ assertFalse(descriptor.enumerable);
+ assertTrue(descriptor.writable);
+ assertTrue(descriptor.configurable);
+})();
+
+// No cause
+(function () {
+ const err = Error('message');
+ assertEquals(undefined, err.cause);
+})();
+
+// Chained errors
+(function () {
+ async function fail() { throw new Error('caused by fail') }
+
+ async function doJob() {
+ await fail()
+ .catch(err => {
+ throw new Error('Found an error', { cause: err });
+ });
+ }
+
+ async function main() {
+ try {
+ await doJob();
+ } catch (e) {
+ assertEquals('Found an error', e.message);
+ assertEquals('caused by fail', e.cause.message);
+ }
+ }
+
+ main();
+})();
+
+// AggregateError with cause
+(function() {
+ const err = AggregateError([1, 2, 3], 'aggregate errors', { cause: 'a cause' });
+ assertEquals('a cause', err.cause);
+ const descriptor = Object.getOwnPropertyDescriptor(err, 'cause');
+ assertEquals('a cause', descriptor.value);
+ assertFalse(descriptor.enumerable);
+ assertTrue(descriptor.writable);
+ assertTrue(descriptor.configurable);
+})();
+
+// Options is not an object
+(function () {
+ const err1 = Error('message', 42);
+ assertEquals(undefined, err1.cause);
+ const err2 = Error('message', null);
+ assertEquals(undefined, err2.cause);
+ const err3 = Error('message', [42]);
+ assertEquals(undefined, err3.cause);
+})();
+
+// Options object does not contain 'cause'
+(function () {
+ const err = Error('message', { syy: 'A finnish cause' });
+ assertEquals(undefined, err.cause);
+ assertEquals(undefined, err.syy);
+})();
+
+// Options is a proxy
+(function () {
+ const options = { cause: 'a cause' };
+ const proxy = new Proxy(options, { get: () => 'proxied cause'});
+ const err = Error('message', proxy);
+ assertEquals('proxied cause', err.cause);
+})();
+
+// Options is a proxy, but does not expose 'cause'
+(function () {
+ const options = { cause: 'a cause' };
+ const proxy = new Proxy(options, {
+ has: (_, key) => key != 'cause',
+ get: () => 'proxied cause'
+ })
+ const err = Error('message', proxy);
+ assertEquals(undefined, err.cause);
+})();
+
+// Options is a proxy, throw in 'get'
+(function () {
+ const options = { cause: 'a cause' };
+ const proxy = new Proxy(options, {
+ get: () => { throw Error('proxy get', { cause: 'no reason' }) },
+ });
+ try {
+ Error('message', proxy);
+ assertUnreachable();
+ } catch(e) {
+ assertEquals('proxy get', e.message);
+ assertEquals('no reason', e.cause);
+ }
+})();
+
+// Options is a proxy, throw in 'has'
+(function () {
+ const options = { cause: 'a cause' };
+ const proxy = new Proxy(options, {
+ has: () => { throw Error('proxy has', { cause: 'no reason' }) },
+ });
+ try {
+ Error('message', proxy);
+ assertUnreachable();
+ } catch(e) {
+ assertEquals('proxy has', e.message);
+ assertEquals('no reason', e.cause);
+ }
+})();
+
+// Cause in the options prototype chain
+(function () {
+ function Options() {};
+ Options.prototype.cause = 'cause in the prototype';
+ const options = new Options();
+ const err = Error('message', options);
+ assertEquals('cause in the prototype', err.cause);
+})();
+
+// Cause in the options prototype chain proxy
+(function () {
+ function Options() {};
+ Options.prototype = new Proxy({ cause: 42 }, {
+ get: (_ ,name) => {
+ assertEquals('cause', name);
+ return 'cause in the prototype'
+ }});
+ const options = new Options();
+ const err = Error('message', options);
+ assertEquals('cause in the prototype', err.cause);
+})();
+
+// Cause in the options prototype chain proxy and throw
+(function () {
+ function Options() {};
+ Options.prototype = new Proxy({ cause: 42 }, { get: () => { throw Error('cause in the prototype')} });
+ const options = new Options();
+ try {
+ Error('message', options);
+ assertUnreachable();
+ } catch(e) {
+ assertEquals('cause in the prototype', e.message);
+ }
+})();
+
+// Change Error.cause in the prototype
+(function () {
+ Error.prototype.cause = 'main cause';
+ const err1 = new Error('err1');
+ assertEquals('main cause', err1.cause);
+ const desc1 = Object.getOwnPropertyDescriptor(err1, 'cause');
+ assertEquals(undefined, desc1);
+
+ const err2 = new Error('err2', { cause: 'another cause' });
+ assertEquals(err2.cause, 'another cause');
+ const desc2 = Object.getOwnPropertyDescriptor(err2, 'cause');
+ assertFalse(desc2.enumerable);
+ assertTrue(desc2.writable);
+ assertTrue(desc2.configurable);
+
+ const err3 = new Error('err3');
+ err3.cause = 'after err3';
+ assertEquals('after err3', err3.cause);
+ const desc3 = Object.getOwnPropertyDescriptor(err3, 'cause');
+ assertTrue(desc3.enumerable);
+ assertTrue(desc3.writable);
+ assertTrue(desc3.configurable);
+})();
+
+// Change prototype to throw in setter
+(function() {
+ const my_proto = {};
+ Object.defineProperty(my_proto, 'cause', {set: function(x) { throw 'foo' } });
+ Error.prototype.__proto__ = my_proto
+ const err = Error('message', { cause: 'a cause' });
+ assertEquals('a cause', err.cause);
+})();
+
+// Use defineProperty to change Error cause and throw
+(function () {
+ Object.defineProperty(Error.prototype, 'cause', {
+ get: () => { throw Error('from get', { cause: 'inside get' }) },
+ });
+ const err1 = new Error('err1');
+ try {
+ err1.cause;
+ assertUnreachable();
+ } catch(e) {
+ assertEquals('from get', e.message);
+ assertEquals('inside get', e.cause);
+ }
+ const err2 = new Error('err2', { cause: 'another cause' });
+ assertEquals('another cause', err2.cause);
+})();
+
+// Serialize and deserialize error object
+(function () {
+ const err = Error('message', { cause: 'a cause' });
+ const worker = new Worker('onmessage = (msg) => postMessage(msg)', { type: 'string' });
+ worker.postMessage(err);
+ const serialized_err = worker.getMessage();
+ assertEquals(err, serialized_err);
+ const descriptor = Object.getOwnPropertyDescriptor(serialized_err, 'cause');
+ assertEquals(descriptor.value, 'a cause');
+ assertFalse(descriptor.enumerable);
+ assertTrue(descriptor.writable);
+ assertTrue(descriptor.configurable);
+})();
diff --git a/deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-12.mjs b/deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-12.mjs
new file mode 100644
index 0000000000..0cbb5f25de
--- /dev/null
+++ b/deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-12.mjs
@@ -0,0 +1,26 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --harmony-import-assertions
+
+let result1;
+let result2;
+
+let badAssertProxy1 = new Proxy({}, { ownKeys() { throw "bad ownKeys!"; } });
+import('./modules-skip-1.mjs', { assert: badAssertProxy1 }).then(
+ () => assertUnreachable('Should have failed due to throwing ownKeys'),
+ error => result1 = error);
+
+let badAssertProxy2 = new Proxy(
+ {foo: "bar"},
+ { getOwnPropertyDescriptor() { throw "bad getOwnPropertyDescriptor!"; } });
+import('./modules-skip-1.mjs', { assert: badAssertProxy2 }).then(
+ () => assertUnreachable(
+ 'Should have failed due to throwing getOwnPropertyDescriptor'),
+ error => result2 = error);
+
+%PerformMicrotaskCheckpoint();
+
+assertEquals('bad ownKeys!', result1);
+assertEquals('bad getOwnPropertyDescriptor!', result2); \ No newline at end of file
diff --git a/deps/v8/test/mjsunit/harmony/to-string.js b/deps/v8/test/mjsunit/harmony/to-string.js
index dfe36c2dd9..87b5fe4415 100644
--- a/deps/v8/test/mjsunit/harmony/to-string.js
+++ b/deps/v8/test/mjsunit/harmony/to-string.js
@@ -5,50 +5,37 @@
// Flags: --allow-natives-syntax
assertEquals("1", %ToString(1));
-assertEquals("1", %_ToString(1));
assertEquals("0.5", %ToString(.5));
-assertEquals("0.5", %_ToString(.5));
assertEquals("null", %ToString(null));
-assertEquals("null", %_ToString(null));
assertEquals("true", %ToString(true));
-assertEquals("true", %_ToString(true));
assertEquals("false", %ToString(false));
-assertEquals("false", %_ToString(false));
assertEquals("undefined", %ToString(undefined));
-assertEquals("undefined", %_ToString(undefined));
assertEquals("random text", %ToString("random text"));
-assertEquals("random text", %_ToString("random text"));
assertThrows(function() { %ToString(Symbol.toPrimitive) }, TypeError);
-assertThrows(function() { %_ToString(Symbol.toPrimitive) }, TypeError);
var a = { toString: function() { return "xyz" }};
assertEquals("xyz", %ToString(a));
-assertEquals("xyz", %_ToString(a));
var b = { valueOf: function() { return 42 }};
assertEquals("[object Object]", %ToString(b));
-assertEquals("[object Object]", %_ToString(b));
var c = {
toString: function() { return "x"},
valueOf: function() { return 123 }
};
assertEquals("x", %ToString(c));
-assertEquals("x", %_ToString(c));
var d = {
[Symbol.toPrimitive]: function(hint) { return hint }
};
assertEquals("string", %ToString(d));
-assertEquals("string", %_ToString(d));
var e = new Date(0);
assertEquals(e.toString(), %ToString(e));
-assertEquals(e.toString(), %_ToString(e));
diff --git a/deps/v8/test/mjsunit/harmony/weakrefs/finalizationregistry-independent-lifetime.js b/deps/v8/test/mjsunit/harmony/weakrefs/finalizationregistry-independent-lifetime.js
index 4e0ab2af8e..7d7ec6f991 100644
--- a/deps/v8/test/mjsunit/harmony/weakrefs/finalizationregistry-independent-lifetime.js
+++ b/deps/v8/test/mjsunit/harmony/weakrefs/finalizationregistry-independent-lifetime.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --expose-gc --noincremental-marking
+// Flags: --expose-gc --noincremental-marking --no-concurrent-inlining
let cleanup_called = false;
function cleanup(holdings) {
diff --git a/deps/v8/test/mjsunit/ic-megadom-2.js b/deps/v8/test/mjsunit/ic-megadom-2.js
new file mode 100644
index 0000000000..325aa2bdad
--- /dev/null
+++ b/deps/v8/test/mjsunit/ic-megadom-2.js
@@ -0,0 +1,52 @@
+// Copyright 2021 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.
+//
+// Flags: --enable-mega-dom-ic --allow-natives-syntax
+
+function load(obj) {
+ return obj.nodeType;
+}
+
+%PrepareFunctionForOptimization(load);
+
+var a = new d8.dom.Div();
+var b = new d8.dom.Div();
+b.b = 1;
+
+var c = new d8.dom.Div();
+c.c = 1;
+
+var d = new d8.dom.Div();
+d.d = 1;
+
+var e = new d8.dom.Div();
+e.e = 1;
+
+var f = new d8.dom.Div();
+f.f = 1;
+
+const objs = [
+ a, b, c, d, e, f
+];
+
+
+function test() {
+ let result = 0;
+ for (let i = 0; i < objs.length; i++) {
+ result += load(objs[i]);
+ }
+
+ return result;
+}
+%PrepareFunctionForOptimization(test);
+let result = test();
+assertEquals(6, result);
+assertEquals(load({}), undefined);
+assertEquals(load({ nodeType: 'foo' }), 'foo');
+
+%OptimizeFunctionOnNextCall(test);
+result = test();
+assertEquals(6, result);
+assertEquals(load({}), undefined)
+assertEquals(load({nodeType: 'foo'}), 'foo')
diff --git a/deps/v8/test/mjsunit/ic-megadom.js b/deps/v8/test/mjsunit/ic-megadom.js
new file mode 100644
index 0000000000..67f73b24ee
--- /dev/null
+++ b/deps/v8/test/mjsunit/ic-megadom.js
@@ -0,0 +1,48 @@
+// Copyright 2021 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.
+//
+// Flags: --enable-mega-dom-ic --allow-natives-syntax
+
+function load(obj) {
+ return obj.nodeType;
+}
+%PrepareFunctionForOptimization(load);
+
+var a = new d8.dom.Div();
+var b = new d8.dom.Div();
+b.b = 1;
+
+var c = new d8.dom.Div();
+c.c = 1;
+
+var d = new d8.dom.Div();
+d.d = 1;
+
+var e = new d8.dom.Div();
+e.e = 1;
+
+var f = new d8.dom.Div();
+f.f = 1;
+
+const objs = [
+ a, b, c, d, e, f
+];
+
+
+
+function test() {
+ let result = 0;
+ for (let i = 0; i < objs.length; i++) {
+ result += load(objs[i]);
+ }
+
+ return result;
+}
+%PrepareFunctionForOptimization(test);
+let result = test();
+assertEquals(6, result);
+
+%OptimizeFunctionOnNextCall(test);
+result = test();
+assertEquals(6, result);
diff --git a/deps/v8/test/mjsunit/mjsunit.js b/deps/v8/test/mjsunit/mjsunit.js
index eb27e5ba6e..061fc291ab 100644
--- a/deps/v8/test/mjsunit/mjsunit.js
+++ b/deps/v8/test/mjsunit/mjsunit.js
@@ -176,6 +176,8 @@ var V8OptimizationStatus = {
kLiteMode: 1 << 12,
kMarkedForDeoptimization: 1 << 13,
kBaseline: 1 << 14,
+ kTopmostFrameIsInterpreted: 1 << 15,
+ kTopmostFrameIsBaseline: 1 << 16,
};
// Returns true if --lite-mode is on and we can't ever turn on optimization.
diff --git a/deps/v8/test/mjsunit/mjsunit.status b/deps/v8/test/mjsunit/mjsunit.status
index b6dd59ec69..4dd5927dfe 100644
--- a/deps/v8/test/mjsunit/mjsunit.status
+++ b/deps/v8/test/mjsunit/mjsunit.status
@@ -150,6 +150,7 @@
'wasm/atomics64-stress': [PASS, SLOW, NO_VARIANTS, ['mode != release or dcheck_always_on', SKIP], ['tsan', SKIP]],
'wasm/compare-exchange-stress': [PASS, SLOW, NO_VARIANTS],
'wasm/compare-exchange64-stress': [PASS, SLOW, NO_VARIANTS],
+ 'tools/tickprocessor-test-large': [PASS, SLOW, NO_VARIANTS, ['mode != release or arch != x64', SKIP]],
# Very slow on ARM and MIPS, contains no architecture dependent code.
'unicode-case-overoptimization0': [PASS, NO_VARIANTS, ['arch in (arm, arm64, mipsel, mips64el, mips64, mips, riscv64)', SKIP]],
@@ -351,8 +352,12 @@
'regexp-tier-up-multiple': [SKIP],
'regress/regress-996234': [SKIP],
- # This test relies on TurboFan being enabled.
+ # These tests rely on TurboFan being enabled.
'compiler/fast-api-calls': [SKIP],
+ 'compiler/fast-api-interface-types': [SKIP],
+ 'compiler/regress-crbug-1201011': [SKIP],
+ 'compiler/regress-crbug-1201057': [SKIP],
+ 'compiler/regress-crbug-1201082': [SKIP],
# These tests check that we can trace the compiler.
'tools/compiler-trace-flags': [SKIP],
@@ -593,10 +598,13 @@
# Slow tests.
'compiler/regress-1125145': [SKIP],
+ 'compiler/regress-crbug-11564': [PASS, SLOW],
+ 'd8/d8-worker-shutdown*': [PASS, SLOW],
'es6/block-conflicts-sloppy': [PASS, SLOW],
'math-floor-part1': [PASS, SLOW],
'regress/regress-430201': [SKIP],
'regress/regress-500980': [PASS, SLOW],
+ 'regress/regress-crbug-941743': [PASS, SLOW],
'wasm/shared-memory-worker-stress': [PASS, SLOW],
# BUG(v8:9506): times out.
@@ -604,6 +612,12 @@
# https://crbug.com/v8/9337 - OOMs on TSAN
'compiler/regress-9017': [SKIP],
+
+ # BUG(v8:11702): Times out on TSAN.
+ 'harmony/sharedarraybuffer-worker-gc-stress': [SKIP],
+
+ # BUG(v8:11752): Flakes on TSAN.
+ 'd8/d8-worker-shutdown-spawn': [SKIP],
}], # 'tsan == True'
##############################################################################
@@ -800,29 +814,13 @@
# This often fails in debug mode because it is too slow
'd8/d8-performance-now': [PASS, ['mode == debug', SKIP]],
- # Some atomic functions are not yet implemented
- 'wasm/compare-exchange64-stress': [SKIP],
- 'wasm/compare-exchange-stress': [SKIP],
- 'regress/wasm/regress-1045225': [SKIP],
- 'regress/wasm/regress-1045737': [SKIP],
- 'regress/wasm/regress-1048241': [SKIP],
- 'regress/wasm/regress-1074586-b': [SKIP],
- 'regress/wasm/regress-1075953': [SKIP],
- 'regress/wasm/regress-1074586': [SKIP],
- 'regress/wasm/regress-1079449': [SKIP],
- 'regress/wasm/regress-1080902': [SKIP],
- 'regress/wasm/regress-1140549': [SKIP],
- 'regress/wasm/regress-1153442': [SKIP],
- 'regress/wasm/regress-1168116': [SKIP],
- 'wasm/atomics': [SKIP],
- 'wasm/atomics-non-shared': [SKIP],
- 'wasm/grow-shared-memory': [SKIP],
- 'wasm/shared-memory': [SKIP],
-
# https://github.com/v8-riscv/v8/issues/418
'regress/regress-1138075': [SKIP],
'regress/regress-1138611': [SKIP],
+ # Some atomic functions are not yet implemented
+ 'regress/wasm/regress-1196837': [SKIP],
+
# SIMD not be implemented
'regress/wasm/regress-1054466': [SKIP],
'regress/wasm/regress-1065599': [SKIP],
@@ -839,21 +837,16 @@
'regress/wasm/regress-1161555': [SKIP],
'regress/wasm/regress-1161954': [SKIP],
'regress/wasm/regress-1187831': [SKIP],
+ 'regress/wasm/regress-1199662': [SKIP],
'regress/regress-1172797': [SKIP],
'regress/wasm/regress-1179025': [SKIP],
- 'wasm/simd-errors': [SKIP],
- 'wasm/simd-globals': [SKIP],
'wasm/multi-value-simd': [SKIP],
- 'wasm/simd-call': [SKIP],
'wasm/liftoff-simd-params': [SKIP],
'wasm/exceptions-simd': [SKIP],
+ 'wasm/simd-*': [SKIP],
}], # 'arch == riscv64'
-['arch == riscv64 and variant == stress_incremental_marking', {
- # https://github.com/v8-riscv/v8/issues/414
- 'wasm/externref-globals-liftoff': [SKIP],
-}], #'arch == riscv64 and variant == stress-incremental-marking'
##############################################################################
['system == macos', {
@@ -955,7 +948,6 @@
'deopt-recursive-lazy-once': [SKIP],
'deopt-recursive-soft-once': [SKIP],
'code-coverage-block-opt': [SKIP],
- 'compiler/fast-api-calls': [SKIP],
'compiler/serializer-apply': [SKIP],
'compiler/serializer-call': [SKIP],
'compiler/serializer-dead-after-jump': [SKIP],
@@ -1322,9 +1314,13 @@
##############################################################################
['variant == stress_snapshot', {
- # This test initializes an embedder object that never needs to be serialized
+ # These tests initialize an embedder object that never needs to be serialized
# to the snapshot, so we don't have a SerializeInternalFieldsCallback for it.
'compiler/fast-api-calls': [SKIP],
+ 'compiler/fast-api-interface-types': [SKIP],
+ 'compiler/regress-crbug-1201011': [SKIP],
+ 'compiler/regress-crbug-1201057': [SKIP],
+ 'compiler/regress-crbug-1201082': [SKIP],
}], # variant == stress_snapshot
##############################################################################
@@ -1427,7 +1423,15 @@
}], # variant == stress_incremental_marking
##############################################################################
-['no_simd_sse == True', {
+['variant == stress_concurrent_allocation', {
+ # This test manually forces pretenuring of allocation sites.
+ # stress-concurrent-allocation reverts the pretenuring decision due to low
+ # survival rate in old generation.
+ 'compiler/deopt-pretenure': [SKIP],
+}], # variant == stress_concurrent_allocation
+
+##############################################################################
+['no_simd_hardware == True', {
'wasm/exceptions-simd': [SKIP],
'wasm/liftoff-simd-params': [SKIP],
'wasm/multi-value-simd': [SKIP],
@@ -1447,7 +1451,8 @@
'regress/wasm/regress-1161954': [SKIP],
'regress/wasm/regress-1165966': [SKIP],
'regress/wasm/regress-1187831': [SKIP],
-}], # no_simd_sse == True
+ 'regress/wasm/regress-1199662': [SKIP],
+}], # no_simd_hardware == True
##############################################################################
# TODO(v8:11421): Port baseline compiler to other architectures.
@@ -1456,6 +1461,12 @@
}],
##############################################################################
+# Skip baseline for no-lazy-feedback-allocation
+['variant == no_lfa', {
+ 'baseline/*': [SKIP],
+}], # variant == no_lfa
+
+##############################################################################
['variant == experimental_regexp', {
'regress/regress-779407': [SKIP],
}], # variant == experimental_regexp
@@ -1465,4 +1476,145 @@
'concurrent-initial-prototype-change-1': [SKIP],
}], # variant == concurrent_inlining
+################################################################################
+['single_generation', {
+ # These tests rely on allocation site tracking which only works in the young generation.
+ 'array-constructor-feedback': [SKIP],
+ 'wasm/generic-wrapper': [SKIP],
+ 'regress/regress-trap-allocation-memento': [SKIP],
+ 'regress/regress-crbug-1151890': [SKIP],
+ 'regress/regress-crbug-1163184': [SKIP],
+ 'regress/regress-11519': [SKIP],
+ 'regress/regress-4121': [SKIP],
+ 'packed-elements': [SKIP],
+ 'const-dict-tracking': [SKIP],
+ 'compiler/native-context-specialization-hole-check': [SKIP],
+ 'compiler/test-literal-map-migration': [SKIP],
+}], # single_generation
+
+################################################################################
+['third_party_heap', {
+ # Requires --concurrent_inlining / --finalize_streaming_on_background:
+ 'regress-1146106': [SKIP],
+ 'compiler/bound-functions-serialize': [SKIP],
+ 'regress/regress-1003730': [SKIP],
+ 'regress/regress-1168435': [SKIP],
+ # Asserts %InLargeObjectSpace
+ 'regress/regress-542823': [SKIP],
+ # Requires --allocation_site_pretenuring
+ 'compiler/deopt-pretenure': [SKIP],
+ # Requires --concurrent_recompilation
+ 'compiler/concurrent-invalidate-transition-map': [SKIP],
+ 'compiler/concurrent-proto-change': [SKIP],
+ 'compiler/manual-concurrent-recompile': [SKIP],
+ 'compiler/regress-905555': [SKIP],
+ 'compiler/regress-905555-2': [SKIP],
+ 'compiler/regress-9945-1': [SKIP],
+ 'concurrent-initial-prototype-change-1': [SKIP],
+ 'concurrent-initial-prototype-change-2': [SKIP],
+ 'regress/regress-356053': [SKIP],
+ 'regress/regress-embedded-cons-string': [SKIP],
+ # Requires a second isolate
+ 'resizablearraybuffer-growablesharedarraybuffer': [SKIP],
+ 'regress/regress-1205290': [SKIP],
+ 'compiler/regress-725743': [SKIP],
+ 'd8/d8-fuzzable-worker': [SKIP],
+ 'd8/d8-worker': [SKIP],
+ 'd8/d8-worker-script': [SKIP],
+ 'd8/d8-worker-sharedarraybuffer': [SKIP],
+ 'd8/d8-worker-shutdown': [SKIP],
+ 'd8/d8-worker-shutdown-empty': [SKIP],
+ 'd8/d8-worker-shutdown-gc': [SKIP],
+ 'd8/d8-worker-shutdown-spawn': [SKIP],
+ 'd8/d8-worker-spawn-worker': [SKIP],
+ 'deserialize-optimize-inner': [SKIP],
+ 'deserialize-reference': [SKIP],
+ 'harmony/atomics-value-check': [SKIP],
+ 'harmony/atomics-waitasync-1thread-2timeout': [SKIP],
+ 'harmony/atomics-waitasync-1thread-buffer-out-of-scope-timeout': [SKIP],
+ 'harmony/atomics-waitasync-1thread-timeout': [SKIP],
+ 'harmony/atomics-waitasync-1thread-timeouts-and-no-timeouts': [SKIP],
+ 'harmony/atomics-waitasync-worker-shutdown-before-wait-finished-2-waits': [SKIP],
+ 'harmony/atomics-waitasync-worker-shutdown-before-wait-finished-2-workers': [SKIP],
+ 'harmony/atomics-waitasync-worker-shutdown-before-wait-finished-no-timeout': [SKIP],
+ 'harmony/atomics-waitasync-worker-shutdown-before-wait-finished-timeout': [SKIP],
+ 'harmony/error-cause': [SKIP],
+ 'harmony/futex': [SKIP],
+ 'harmony/sharedarraybuffer-worker-gc-stress': [SKIP],
+ 'regress/regress-1006629': [SKIP],
+ 'regress/regress-4271': [SKIP],
+ 'regress/regress-821368': [SKIP],
+ 'regress/regress-9383': [SKIP],
+ 'regress/regress-chromium-1194026': [SKIP],
+ 'regress/regress-crbug-1162473': [SKIP],
+ 'regress/regress-crbug-465564': [SKIP],
+ 'regress/regress-crbug-503578': [SKIP],
+ 'regress/regress-crbug-503698': [SKIP],
+ 'regress/regress-crbug-503968': [SKIP],
+ 'regress/regress-crbug-503991': [SKIP],
+ 'regress/regress-crbug-504136': [SKIP],
+ 'regress/regress-crbug-504727': [SKIP],
+ 'regress/regress-crbug-505778': [SKIP],
+ 'regress/regress-crbug-506549': [SKIP],
+ 'regress/regress-crbug-511880': [SKIP],
+ 'regress/regress-crbug-514081': [SKIP],
+ 'regress/regress-crbug-518747': [SKIP],
+ 'regress/regress-crbug-522496': [SKIP],
+ 'regress/regress-crbug-523919': [SKIP],
+ 'regress/regress-crbug-722871': [SKIP],
+ 'regress/wasm/regress-1010272': [SKIP],
+ 'regress/wasm/regress-1067621': [SKIP],
+ 'regress/wasm/regress-643595': [SKIP],
+ 'regress/wasm/regress-674447': [SKIP],
+ 'regress/wasm/regress-801850': [SKIP],
+ 'regress/wasm/regress-803427': [SKIP],
+ 'regress/wasm/regress-8059': [SKIP],
+ 'regress/wasm/regress-808012': [SKIP],
+ 'regress/wasm/regress-808848': [SKIP],
+ 'regress/wasm/regress-8533': [SKIP],
+ 'serialize-after-execute': [SKIP],
+ 'serialize-ic': [SKIP],
+ 'wasm/compare-exchange-stress': [SKIP],
+ 'wasm/compare-exchange64-stress': [SKIP],
+ 'wasm/futex': [SKIP],
+ 'wasm/grow-shared-memory': [SKIP],
+ 'wasm/shared-arraybuffer-worker-simple-gc': [SKIP],
+ 'wasm/shared-memory-worker-simple-gc': [SKIP],
+ 'wasm/shared-memory-worker-stress': [SKIP],
+ 'wasm/worker-memory': [SKIP],
+ 'wasm/worker-module': [SKIP],
+ # Performs GC
+ 'code-coverage-precise': [SKIP],
+ 'compiler/monomorphic-named-load-with-no-map': [SKIP],
+ 'harmony/weakrefs/cleanup': [SKIP],
+ 'harmony/weakrefs/cleanup-from-different-realm': [SKIP],
+ 'harmony/weakrefs/cleanup-is-not-a-microtask': [SKIP],
+ 'harmony/weakrefs/cleanup-on-detached-realm': [SKIP],
+ 'harmony/weakrefs/cleanup-proxy-from-different-realm': [SKIP],
+ 'harmony/weakrefs/cleanupsome': [SKIP],
+ 'harmony/weakrefs/cleanupsome-2': [SKIP],
+ 'harmony/weakrefs/finalizationregistry-and-weakref': [SKIP],
+ 'harmony/weakrefs/finalizationregistry-keeps-holdings-alive': [SKIP],
+ 'harmony/weakrefs/finalizationregistry-scheduled-for-cleanup-multiple-times': [SKIP],
+ 'harmony/weakrefs/multiple-dirty-finalization-groups': [SKIP],
+ 'harmony/weakrefs/reentrant-gc-from-cleanup': [SKIP],
+ 'harmony/weakrefs/two-weakrefs': [SKIP],
+ 'harmony/weakrefs/undefined-holdings': [SKIP],
+ 'harmony/weakrefs/unregister-after-cleanup': [SKIP],
+ 'harmony/weakrefs/unregister-inside-cleanup': [SKIP],
+ 'harmony/weakrefs/unregister-inside-cleanup2': [SKIP],
+ 'harmony/weakrefs/unregister-inside-cleanup3': [SKIP],
+ 'harmony/weakrefs/unregister-many': [SKIP],
+ 'harmony/weakrefs/weak-cell-basics': [SKIP],
+ 'harmony/weakrefs/weak-unregistertoken': [SKIP],
+ 'harmony/weakrefs/weakref-creation-keeps-alive': [SKIP],
+ 'harmony/weakrefs/weakref-deref-keeps-alive': [SKIP],
+ 'measure-memory': [SKIP],
+ 'measure-memory-multiple-realms': [SKIP],
+ 'regress/regress-936077': [SKIP],
+ 'regress/wasm/regress-827806': [SKIP],
+ 'wasm/compiled-module-management': [SKIP],
+ 'wasm/shared-memory-gc-stress': [SKIP],
+}], # third_party_heap
+
]
diff --git a/deps/v8/test/mjsunit/regress-10782.js b/deps/v8/test/mjsunit/regress-10782.js
new file mode 100644
index 0000000000..55c3217878
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress-10782.js
@@ -0,0 +1,10 @@
+// Copyright 2021 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.
+
+function f() {
+ let x = [0,0,0,0,0];
+ Object.defineProperty(x, 'length', {value : 4, enumerable : true});
+}
+
+assertThrows(f, TypeError);
diff --git a/deps/v8/test/mjsunit/regress/regress-1189077.js b/deps/v8/test/mjsunit/regress/regress-1189077.js
new file mode 100644
index 0000000000..8372726b18
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-1189077.js
@@ -0,0 +1,56 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax
+
+const string_max_length = %StringMaxLength();
+const longest_double = -2.2250738585105353E-308;
+const s18 = "A".repeat(string_max_length - 18);
+const s23 = "A".repeat(string_max_length - 23);
+const s24 = "A".repeat(string_max_length - 24);
+const s25 = "A".repeat(string_max_length - 25);
+
+(function() {
+ function f() {
+ return s18 + longest_double;
+ }
+
+ %PrepareFunctionForOptimization(f);
+ assertThrows(f, RangeError);
+ %OptimizeFunctionOnNextCall(f);
+ assertThrows(f, RangeError);
+})();
+
+(function() {
+ function f() {
+ return s23 + longest_double;
+ }
+
+ %PrepareFunctionForOptimization(f);
+ assertThrows(f, RangeError);
+ %OptimizeFunctionOnNextCall(f);
+ assertThrows(f, RangeError);
+})();
+
+(function() {
+ function f() {
+ return s24 + longest_double;
+ }
+
+ %PrepareFunctionForOptimization(f);
+ assertEquals(string_max_length, f().length);
+ %OptimizeFunctionOnNextCall(f);
+ assertEquals(string_max_length, f().length);
+})();
+
+(function() {
+ function f() {
+ return s25 + longest_double;
+ }
+
+ %PrepareFunctionForOptimization(f);
+ assertEquals(string_max_length - 1, f().length);
+ %OptimizeFunctionOnNextCall(f);
+ assertEquals(string_max_length - 1, f().length);
+})();
diff --git a/deps/v8/test/mjsunit/regress/regress-1201114.js b/deps/v8/test/mjsunit/regress/regress-1201114.js
new file mode 100644
index 0000000000..7f81d63c95
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-1201114.js
@@ -0,0 +1,19 @@
+// Copyright 2021 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.
+
+// Flags: --turboprop --allow-natives-syntax --print-code
+
+var a = {b: 1};
+function nop() { return false; }
+function __f_4(a) { return a; }
+function __f_5(__v_2) {
+ __f_4(__v_2.a);
+ nop(__f_5)&a.b;
+}
+%PrepareFunctionForOptimization(__f_5);
+__f_5(true);
+%OptimizeFunctionOnNextCall(__f_5);
+try {
+ __f_5();
+} catch {}
diff --git a/deps/v8/test/mjsunit/regress/regress-1204748.js b/deps/v8/test/mjsunit/regress/regress-1204748.js
new file mode 100644
index 0000000000..7c487b7dc8
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-1204748.js
@@ -0,0 +1,24 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --assert-types
+
+function __f_2(__v_4, __v_5) {
+ let __v_6 = __v_4 >= __v_5;
+ while (__v_6 != 0) {
+ __v_4 = __v_4 | __v_5 - __v_4;
+ let __v_7 = __v_4 >= __v_5;
+ new Int32Array(__v_4);
+ __v_6 = __v_4 < __v_5;
+ }
+}
+function __f_3() {
+ __f_2(Infinity, 1);
+ __f_2();
+}
+ %PrepareFunctionForOptimization(__f_3);
+ %PrepareFunctionForOptimization(__f_2);
+ __f_3();
+ %OptimizeFunctionOnNextCall(__f_3);
+ __f_3();
diff --git a/deps/v8/test/mjsunit/regress/regress-1205290.js b/deps/v8/test/mjsunit/regress/regress-1205290.js
new file mode 100644
index 0000000000..50eac5f960
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-1205290.js
@@ -0,0 +1,24 @@
+// Copyright 2021 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.
+
+const sync_arr = new Int32Array(new SharedArrayBuffer(4));
+function waitForWorker() {
+ while (Atomics.load(sync_arr) == 0) {}
+}
+function onmessage([sab, lock]) {
+ const i32a = new Int32Array(sab);
+ Atomics.store(lock, 0, 1);
+ for (let j = 1; j < 1000; ++j) {
+ for (let i = 0; i < i32a.length; ++i) {
+ i32a[i] = j;
+ }
+ }
+}
+const worker = new Worker(`onmessage = ${onmessage}`, {type: 'string'});
+const arr =
+ new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * 100));
+worker.postMessage([arr.buffer, sync_arr]);
+
+waitForWorker();
+arr.sort();
diff --git a/deps/v8/test/mjsunit/regress/regress-1207679.js b/deps/v8/test/mjsunit/regress/regress-1207679.js
new file mode 100644
index 0000000000..ebe9f11d03
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-1207679.js
@@ -0,0 +1,24 @@
+// Copyright 2021 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.
+//
+// Flags: --expose-gc --interrupt-budget=1000 --no-lazy-feedback-allocation
+
+var __v_5;
+function __v_1() {
+ var PI = {
+ get() {}
+ };
+ function __v_5() {
+ Object.defineProperty(PI, 'func', {
+ });
+ '𝌆'.match();
+ }
+ __v_5(...[__v_5]);
+ try {
+ __v_1();
+ } catch (PI) {}
+}
+__v_1();
+gc();
+__v_1();
diff --git a/deps/v8/test/mjsunit/regress/regress-1208782.js b/deps/v8/test/mjsunit/regress/regress-1208782.js
new file mode 100644
index 0000000000..b9e8708d5f
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-1208782.js
@@ -0,0 +1,6 @@
+// Copyright 2021 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.
+
+var arr = new Int8Array(new SharedArrayBuffer(16), 13);
+new Uint8Array(arr);
diff --git a/deps/v8/test/mjsunit/regress/regress-1212583.js b/deps/v8/test/mjsunit/regress/regress-1212583.js
new file mode 100644
index 0000000000..b83cdd2060
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-1212583.js
@@ -0,0 +1,25 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --opt --no-always-opt
+
+async function f(a, b) {
+ let x = 0xfffffffff;
+ if (b == 5) {
+ x = 0xffffffff1;
+ }
+ let y = Math.max(0xffffffff2, x);
+ return BigInt.asUintN(1, y);
+};
+
+%PrepareFunctionForOptimization(f);
+assertThrowsAsync(f(1, 2), TypeError);
+%OptimizeFunctionOnNextCall(f);
+assertThrowsAsync(f(1, 2), TypeError);
+if (%Is64Bit()) assertUnoptimized(f);
+%PrepareFunctionForOptimization(f);
+assertThrowsAsync(f(1, 2), TypeError);
+%OptimizeFunctionOnNextCall(f);
+assertThrowsAsync(f(1, 2), TypeError);
+assertOptimized(f);
diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-1163499.js b/deps/v8/test/mjsunit/regress/regress-crbug-1163499.js
new file mode 100644
index 0000000000..7457ef077c
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-crbug-1163499.js
@@ -0,0 +1,15 @@
+// Copyright 2021 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.
+
+const o1 = {k:1};
+const o2 = Object.create(o1);
+for (let i = 0; i < 1100; i++) {
+ Object.defineProperty(o1, "k" + i, {value: 0, enumerable: false});
+}
+Object.defineProperty(o1, "enum", {value: 1, enumerable: false, configurable: true});
+for (let k in o2) {}
+Object.defineProperty(o1, "enum", {value: 1, enumerable: true, configurable: true});
+let last;
+for (let k in o2) { last = k }
+assertEquals("enum", last);
diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-1209152.js b/deps/v8/test/mjsunit/regress/regress-crbug-1209152.js
new file mode 100644
index 0000000000..62cc3cdff9
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-crbug-1209152.js
@@ -0,0 +1,13 @@
+// Copyright 2021 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.
+
+// Flags: --multi-mapped-mock-allocator
+
+let size = 8 * 1024 * 1024;
+let initialized = 2 * 1024 * 1008;
+let array = new Uint8Array(size);
+for (let i = 0; i < initialized; i++) {
+ array[i] = 42;
+}
+array.sort();
diff --git a/deps/v8/test/mjsunit/regress/regress-v8-11290.js b/deps/v8/test/mjsunit/regress/regress-v8-11290.js
new file mode 100644
index 0000000000..2f6f79e417
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-v8-11290.js
@@ -0,0 +1,5 @@
+// Copyright 2021 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.
+
+assertEquals("zzz".match(/(z(?=.)){2}/), ["zz", "z"]);
diff --git a/deps/v8/test/mjsunit/regress/regress-v8-11616.js b/deps/v8/test/mjsunit/regress/regress-v8-11616.js
new file mode 100644
index 0000000000..dfe1893a7a
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-v8-11616.js
@@ -0,0 +1,8 @@
+// Copyright 2021 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.
+
+assertEquals("x".repeat(3).match(/x(?<=^x{3})/), ["x"]);
+assertEquals("x".repeat(4).match(/x(?<=^x{4})/), ["x"]);
+assertEquals("x".repeat(7).match(/x(?<=^x{7})/), ["x"]);
+assertEquals("x".repeat(17).match(/x(?<=^x{17})/), ["x"]);
diff --git a/deps/v8/test/mjsunit/regress/regress-v8-11851.js b/deps/v8/test/mjsunit/regress/regress-v8-11851.js
new file mode 100644
index 0000000000..4f2d217b52
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-v8-11851.js
@@ -0,0 +1,22 @@
+// Copyright 2021 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.
+
+// Flags: --allow-natives-syntax --expose-gc
+
+function v0(v1) {
+ v1.apply();
+}
+
+function v2() {
+ function v3() {
+ }
+ %PrepareFunctionForOptimization(v0);
+ v0(v3);
+ %OptimizeFunctionOnNextCall(v0);
+ v0(v3);
+}
+
+v2();
+gc();
+assertThrows(function () { v0(2); }, TypeError);
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1046472.js b/deps/v8/test/mjsunit/regress/wasm/regress-1046472.js
index 20ffb0f204..5e5b9fee55 100644
--- a/deps/v8/test/mjsunit/regress/wasm/regress-1046472.js
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1046472.js
@@ -11,7 +11,7 @@ load('test/mjsunit/wasm/wasm-module-builder.js');
builder.addMemory(16, 32, false);
builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]));
// Generate function 1 (out of 1).
- builder.addFunction(undefined, 0 /* sig */)
+ builder.addFunction('main', 0 /* sig */)
.addBodyWithEnd([
// signature: i_iii
// body:
@@ -29,5 +29,5 @@ kExprEnd, // @21
assertThrows(
() => {builder.toModule()}, WebAssembly.CompileError,
'WebAssembly.Module(): Compiling function #0:\"main\" failed: ' +
- 'type error in merge[0] (expected <bot>, got i32) @+57');
+ 'type error in branch[0] (expected f32, got i32) @+57');
})();
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-10702.js b/deps/v8/test/mjsunit/regress/wasm/regress-10702.js
index d1ec94989b..ff6931a804 100644
--- a/deps/v8/test/mjsunit/regress/wasm/regress-10702.js
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-10702.js
@@ -5,7 +5,7 @@
load('test/mjsunit/wasm/wasm-module-builder.js');
const builder = new WasmModuleBuilder();
-builder.addGlobal(kWasmI32, 1).init = 35;
+builder.addGlobal(kWasmI32, true, WasmInitExpr.I32Const(35));
builder.addType(makeSig([], [kWasmI32]));
builder.addType(makeSig([kWasmI32, kWasmI32], [kWasmI32]));
// Generate function 1 (out of 3).
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-11809.js b/deps/v8/test/mjsunit/regress/wasm/regress-11809.js
deleted file mode 100644
index eef8c291f6..0000000000
--- a/deps/v8/test/mjsunit/regress/wasm/regress-11809.js
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2021 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.
-//
-// Flags: --enable-testing-opcode-in-wasm --nowasm-tier-up
-// Flags: --wasm-tier-mask-for-testing=2
-
-load("test/mjsunit/wasm/wasm-module-builder.js");
-
-function InstanceMaker(offset) {
- var builder = new WasmModuleBuilder();
- builder.addMemory(1, 1, false /* exported */);
-
- var sig_index = builder.addType(makeSig(
- [kWasmI32, kWasmI32, kWasmI32, kWasmI32, kWasmI32, kWasmI32, kWasmI32,
- kWasmI32],
- [kWasmI32]));
- var sig_three = builder.addType(makeSig(
- [kWasmI64, kWasmI64, kWasmI64, kWasmI64, kWasmI64, kWasmI64, kWasmI64,
- kWasmI64],
- []));
-
- var zero = builder.addFunction("zero", kSig_i_i);
- var one = builder.addFunction("one", sig_index);
- var two = builder.addFunction("two", kSig_v_i);
- var three = builder.addFunction("three", sig_three).addBody([]);
-
- zero.addBody([kExprLocalGet, 0, kExprI32LoadMem, 0, offset]);
-
- one.addBody([
- kExprLocalGet, 7,
- kExprCallFunction, zero.index]);
-
- two.addBody([
- kExprI64Const, 0x81, 0x80, 0x80, 0x80, 0x10,
- kExprI64Const, 0x81, 0x80, 0x80, 0x80, 0x10,
- kExprI64Const, 0x81, 0x80, 0x80, 0x80, 0x10,
- kExprI64Const, 0x81, 0x80, 0x80, 0x80, 0x10,
- kExprI64Const, 0x81, 0x80, 0x80, 0x80, 0x10,
- kExprI64Const, 0x81, 0x80, 0x80, 0x80, 0x10,
- kExprI64Const, 0x81, 0x80, 0x80, 0x80, 0x10,
- kExprI64Const, 0x81, 0x80, 0x80, 0x80, 0x10,
- kExprCallFunction, three.index,
- kExprI32Const, 0,
- kExprI32Const, 0,
- kExprI32Const, 0,
- kExprI32Const, 0,
- kExprI32Const, 0,
- kExprI32Const, 0,
- kExprI32Const, 0,
- kExprI32Const, 0,
- kExprCallFunction, one.index,
- kExprDrop,
- ]).exportFunc();
-
- return builder.instantiate({});
-}
-
-var instance = InstanceMaker(0);
-instance.exports.two();
-
-// Regression test for crbug.com/1224882.
-var instance_with_offset = InstanceMaker(4);
-instance_with_offset.exports.two();
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1187831.js b/deps/v8/test/mjsunit/regress/wasm/regress-1187831.js
index 84e7ed5429..c9fa9e9228 100644
--- a/deps/v8/test/mjsunit/regress/wasm/regress-1187831.js
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1187831.js
@@ -11,7 +11,7 @@ builder.addMemory(16, 32, false, true);
builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]));
builder.addType(makeSig([], []));
builder.setTableBounds(1, 1);
-builder.addElementSegment(0, 0, false, [0]);
+builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0]);
// Generate function 1 (out of 1).
builder.addFunction(undefined, 0 /* sig */)
.addBodyWithEnd([
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1196837.js b/deps/v8/test/mjsunit/regress/wasm/regress-1196837.js
new file mode 100644
index 0000000000..5c4a354ad6
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1196837.js
@@ -0,0 +1,39 @@
+// Copyright 2021 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.
+
+// Flags: --wasm-staging
+
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+const builder = new WasmModuleBuilder();
+builder.addMemory(16, 32, false);
+builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]));
+builder.addFunction(undefined, 0 /* sig */)
+ .addBodyWithEnd([
+// signature: i_iii
+// body:
+kExprLocalGet, 0x01,
+kExprLocalGet, 0x01,
+kExprLocalGet, 0x01,
+kExprLocalGet, 0x01,
+kAtomicPrefix, kExprI32AtomicCompareExchange16U, 0x00, 0x7a,
+kExprLocalGet, 0x01,
+kExprLocalGet, 0x01,
+kExprLocalGet, 0x01,
+kExprLocalGet, 0x00,
+kExprMemoryGrow, 0x00,
+kAtomicPrefix, kExprI32AtomicCompareExchange16U, 0x00, 0x7a,
+kExprLocalGet, 0x01,
+kExprLocalGet, 0x00,
+kAtomicPrefix, kExprI32AtomicCompareExchange16U, 0x00, 0x7a,
+kExprLocalGet, 0x01,
+kExprLocalGet, 0x00,
+kAtomicPrefix, kExprI32AtomicCompareExchange16U, 0x00, 0x7a,
+kExprLocalGet, 0x01,
+kExprReturnCall, 0x00,
+kExprEnd,
+]);
+builder.addExport('main', 0);
+const instance = builder.instantiate();
+assertTraps(kTrapUnalignedAccess, () => instance.exports.main(0, 0, 0));
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1199662.js b/deps/v8/test/mjsunit/regress/wasm/regress-1199662.js
new file mode 100644
index 0000000000..ef5a60e8b3
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1199662.js
@@ -0,0 +1,38 @@
+// Copyright 2021 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.
+
+// Flags: --wasm-staging
+
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+// This is a regression test that is minimized and manually trimmed down. It
+// exercises a bug in our attempt to canonicalize shuffle in platform
+// independent code, see
+// https://bugs.chromium.org/p/v8/issues/detail?id=11542#c6.
+const builder = new WasmModuleBuilder();
+builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]));
+// Generate function 1 (out of 1).
+builder.addFunction(undefined, 0 /* sig */).addBodyWithEnd([
+ // signature: i_iii
+ // body:
+ kExprI32Const, 0x00, // i32.const
+ kSimdPrefix, kExprI8x16Splat, // i8x16.splat
+ kExprI32Const, 0x00, // i32.const
+ kSimdPrefix, kExprI8x16Splat, // i8x16.splat
+ kSimdPrefix, kExprI8x16Shuffle,
+ 0x00, 0x15,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00, // i8x16.shuffle
+ kSimdPrefix, kExprI64x2BitMask,
+ 0x01, // i64x2.bitmask
+ kExprEnd, // end @30
+]);
+builder.addExport('main', 0);
+const instance = builder.instantiate();
+assertEquals(0, instance.exports.main(1, 2, 3));
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1200231.js b/deps/v8/test/mjsunit/regress/wasm/regress-1200231.js
new file mode 100644
index 0000000000..c71031470e
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1200231.js
@@ -0,0 +1,19 @@
+// Copyright 2021 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.
+
+// Flags: --experimental-wasm-reftypes --trace-turbo-graph
+
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+const builder = new WasmModuleBuilder();
+
+builder.addFunction(`get`, makeSig([], [kWasmExternRef]))
+ .addBody([kExprTableGet])
+ .exportFunc();
+builder.addFunction(`fill`, makeSig([kWasmI32, kWasmAnyFunc, kWasmI32], []))
+ .addBody([])
+ .exportFunc();
+try {
+ builder.toModule();
+} catch {}
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1202736.js b/deps/v8/test/mjsunit/regress/wasm/regress-1202736.js
new file mode 100644
index 0000000000..6d9f88f725
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1202736.js
@@ -0,0 +1,34 @@
+// Copyright 2021 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.
+
+// Flags: --wasm-staging
+
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+const builder = new WasmModuleBuilder();
+builder.addMemory(1, 1, false, true);
+builder.addType(
+ makeSig([kWasmF64, kWasmI32, kWasmI32, kWasmF64, kWasmF32], [kWasmI64]));
+builder.addFunction(undefined, 0 /* sig */)
+ .addLocals(kWasmI64, 1)
+ .addBodyWithEnd([
+// signature: l_diidf
+// body:
+kExprLoop, 0x7e, // loop @3 i64
+ kExprI64Const, 0x01, // i64.const
+ kExprEnd, // end @7
+kExprBlock, 0x7f, // block @8 i32
+ kExprLocalGet, 0x05, // local.get
+ kExprLocalSet, 0x05, // local.set
+ kExprI32Const, 0x00, // i32.const
+ kExprEnd, // end @16
+kExprLocalGet, 0x05, // local.get
+kExprLocalGet, 0x05, // local.get
+kAtomicPrefix, kExprI64AtomicCompareExchange, 0x00, 0x04,
+kExprI64GtS, // i64.gt_s
+kExprDrop, // drop
+kExprI64Const, 0x01, // i64.const
+kExprEnd, // end @29
+]);
+const instance = builder.instantiate();
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1217064.js b/deps/v8/test/mjsunit/regress/wasm/regress-1217064.js
new file mode 100644
index 0000000000..93a8494547
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1217064.js
@@ -0,0 +1,32 @@
+// Copyright 2021 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.
+
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+const builder = new WasmModuleBuilder();
+builder.addMemory(16, 32, false);
+builder.addType(makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]));
+builder.addFunction(undefined, 0 /* sig */).addBody([
+ kExprI64Const, 0x7a, // i64.const
+ kExprI64Const, 0x42, // i64.const
+ kExprI64Const, 0xb4, 0xbd, 0xeb, 0xb5, 0x72, // i64.const
+ kExprI32Const, 0x37, // i32.const
+ kExprI32Const, 0x67, // i32.const
+ kExprI32Const, 0x45, // i32.const
+ kExprLoop, 0, // loop
+ kExprLocalGet, 0, // local.get
+ kExprBrIf, 1, // br_if depth=1
+ kExprLocalGet, 1, // local.get
+ kExprLocalGet, 0, // local.get
+ kExprMemorySize, 0, // memory.size
+ kExprLocalTee, 0, // local.tee
+ kExprLocalGet, 0, // local.get
+ kExprBrIf, 0, // br_if depth=0
+ kExprUnreachable, // unreachable
+ kExprEnd, // end
+ kExprUnreachable, // unreachable
+]);
+builder.addExport('main', 0);
+const instance = builder.instantiate();
+assertEquals(16, instance.exports.main(0, 0, 0));
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1227351.js b/deps/v8/test/mjsunit/regress/wasm/regress-1227351.js
new file mode 100644
index 0000000000..38157f66f1
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1227351.js
@@ -0,0 +1,13 @@
+// Copyright 2021 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.
+
+// Flags: --wasm-staging
+
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+const builder = new WasmModuleBuilder();
+builder.addFunction(undefined, kSig_d_v)
+ .addLocals(kWasmExternRef, 16000)
+ .addBody([kExprCallFunction, 0]);
+builder.toModule();
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-1228720.js b/deps/v8/test/mjsunit/regress/wasm/regress-1228720.js
new file mode 100644
index 0000000000..410c55168f
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-1228720.js
@@ -0,0 +1,13 @@
+// Copyright 2021 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.
+
+// Flags: --wasm-staging
+
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+const builder = new WasmModuleBuilder();
+builder.addFunction(undefined, kSig_v_v)
+ .addLocals(kWasmExternRef, 16268)
+ .addBody([kExprLoop, kWasmVoid, kExprEnd]);
+builder.toModule();
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-739768.js b/deps/v8/test/mjsunit/regress/wasm/regress-739768.js
index 0bd73223c9..f34420d3ae 100644
--- a/deps/v8/test/mjsunit/regress/wasm/regress-739768.js
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-739768.js
@@ -24,7 +24,7 @@ let builder1 = new WasmModuleBuilder();
builder1.setName('module_1');
builder1.addFunction('main', kSig_i_v).addBody([kExprUnreachable]);
builder1.addImportedTable('z', 'table');
-builder1.addElementSegment(0, 0, false, [0], true);
+builder1.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0]);
let module1 = new WebAssembly.Module(builder1.toBuffer());
let instance1 =
new WebAssembly.Instance(module1, {z: {table: instance0.exports.table}});
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-803788.js b/deps/v8/test/mjsunit/regress/wasm/regress-803788.js
index 5c894ae25a..21f32538e5 100644
--- a/deps/v8/test/mjsunit/regress/wasm/regress-803788.js
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-803788.js
@@ -11,7 +11,7 @@ let q_table = builder.addImportedTable("q", "table")
let q_base = builder.addImportedGlobal("q", "base", kWasmI32);
let q_fun = builder.addImport("q", "fun", kSig_v_v);
builder.addType(kSig_i_ii);
-builder.addElementSegment(0, q_base, true, [ q_fun ])
+builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(q_base), [q_fun]);
let module = new WebAssembly.Module(builder.toBuffer());
let table = new WebAssembly.Table({
element: "anyfunc",
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-817380.js b/deps/v8/test/mjsunit/regress/wasm/regress-817380.js
index 23ab2a5c91..caa577ed37 100644
--- a/deps/v8/test/mjsunit/regress/wasm/regress-817380.js
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-817380.js
@@ -19,6 +19,7 @@ const builder2 = new WasmModuleBuilder();
const mul_import = builder2.addImport('q', 'wasm_mul', kSig_i_ii);
builder2.addImportedTable('q', 'table');
const glob_import = builder2.addImportedGlobal('q', 'glob', kWasmI32);
-builder2.addElementSegment(0, glob_import, true, [mul_import]);
+builder2.addActiveElementSegment(0, WasmInitExpr.GlobalGet(glob_import),
+ [mul_import]);
builder2.instantiate(
{q: {glob: 0, js_div: i => i, wasm_mul: mul, table: table}});
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-834619.js b/deps/v8/test/mjsunit/regress/wasm/regress-834619.js
index af7043904e..22ffadb341 100644
--- a/deps/v8/test/mjsunit/regress/wasm/regress-834619.js
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-834619.js
@@ -33,7 +33,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
kExprCallIndirect, 0, kTableZero
])
.exportFunc();
- builder.addElementSegment(0, 0, false, [0, 1, 1, 0]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0, 1, 1, 0]);
return builder.instantiate({q: {f2: i1.exports.f2, f1: i1.exports.f1}});
})();
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-crbug-1203692.js b/deps/v8/test/mjsunit/regress/wasm/regress-crbug-1203692.js
new file mode 100644
index 0000000000..024786d2e4
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-crbug-1203692.js
@@ -0,0 +1,12 @@
+// Copyright 2021 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.
+
+function asm(stdlib, foreign) {
+ "use asm";
+ var unused = foreign.a | 0;
+ function fun() { }
+ return fun;
+}
+
+assertThrows(() => asm(null, { a: 1n }).fun(), TypeError);
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-v8-9106.js b/deps/v8/test/mjsunit/regress/wasm/regress-v8-9106.js
index f51c2e9498..75f72d8048 100644
--- a/deps/v8/test/mjsunit/regress/wasm/regress-v8-9106.js
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-v8-9106.js
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --experimental-wasm-bulk-memory
-
// Make sure DCHECK doesn't fire when passive data segment is at the end of the
// module.
let bytes = new Uint8Array([
diff --git a/deps/v8/test/mjsunit/resizablearraybuffer-growablesharedarraybuffer.js b/deps/v8/test/mjsunit/resizablearraybuffer-growablesharedarraybuffer.js
new file mode 100644
index 0000000000..add184cd42
--- /dev/null
+++ b/deps/v8/test/mjsunit/resizablearraybuffer-growablesharedarraybuffer.js
@@ -0,0 +1,430 @@
+// Copyright 2021 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.
+
+// Flags: --harmony-rab-gsab --allow-natives-syntax
+
+"use strict";
+
+function resizeHelper(ab, value) {
+ const return_value = ab.resize(value);
+ assertEquals(undefined, return_value);
+ assertEquals(value, ab.byteLength);
+}
+
+function growHelper(ab, value) {
+ const return_value = ab.grow(value);
+ assertEquals(undefined, return_value);
+ assertEquals(value, ab.byteLength);
+}
+
+(function TestRABBasics() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ assertTrue(rab instanceof ResizableArrayBuffer);
+ assertFalse(rab instanceof GrowableSharedArrayBuffer);
+ assertFalse(rab instanceof ArrayBuffer);
+ assertFalse(rab instanceof SharedArrayBuffer);
+ assertEquals(10, rab.byteLength);
+ assertEquals(20, rab.maxByteLength);
+})();
+
+(function TestRABCtorByteLengthEqualsMax() {
+ const rab = new ResizableArrayBuffer(10, 10);
+ assertEquals(10, rab.byteLength);
+ assertEquals(10, rab.maxByteLength);
+})();
+
+(function TestRABCtorByteLengthZero() {
+ const rab = new ResizableArrayBuffer(0, 10);
+ assertEquals(0, rab.byteLength);
+ assertEquals(10, rab.maxByteLength);
+})();
+
+(function TestRABCtorByteLengthAndMaxZero() {
+ const rab = new ResizableArrayBuffer(0, 0);
+ assertEquals(0, rab.byteLength);
+ assertEquals(0, rab.maxByteLength);
+})();
+
+(function TestRABCtorNoMaxByteLength() {
+ assertThrows(() => { new ResizableArrayBuffer(10); }, RangeError);
+ // But this is fine; undefined is converted to 0.
+ const rab = new ResizableArrayBuffer(0);
+ assertEquals(0, rab.byteLength);
+ assertEquals(0, rab.maxByteLength);
+})();
+
+(function TestAllocatingOutrageouslyMuchThrows() {
+ assertThrows(() => { new ResizableArrayBuffer(0, 2 ** 100);}, RangeError);
+})();
+
+(function TestRABCtorOperationOrder() {
+ let log = '';
+ const mock_length = {valueOf: function() {
+ log += 'valueof length, '; return 10; }};
+ const mock_max_length = {valueOf: function() {
+ log += 'valueof max_length, '; return 10; }};
+ new ResizableArrayBuffer(mock_length, mock_max_length);
+
+ assertEquals('valueof length, valueof max_length, ', log);
+})();
+
+(function TestGSABCtorOperationOrder() {
+ let log = '';
+ const mock_length = {valueOf: function() {
+ log += 'valueof length, '; return 10; }};
+ const mock_max_length = {valueOf: function() {
+ log += 'valueof max_length, '; return 10; }};
+ new ResizableArrayBuffer(mock_length, mock_max_length);
+
+ assertEquals('valueof length, valueof max_length, ', log);
+})();
+
+(function TestByteLengthGetterReceiverChecks() {
+ const name = 'byteLength';
+ const ab_getter = Object.getOwnPropertyDescriptor(
+ ArrayBuffer.prototype, name).get;
+ const sab_getter = Object.getOwnPropertyDescriptor(
+ SharedArrayBuffer.prototype, name).get;
+ const rab_getter = Object.getOwnPropertyDescriptor(
+ ResizableArrayBuffer.prototype, name).get;
+ const gsab_getter = Object.getOwnPropertyDescriptor(
+ GrowableSharedArrayBuffer.prototype, name).get;
+
+ const ab = new ArrayBuffer(40);
+ const sab = new SharedArrayBuffer(40);
+ const rab = new ResizableArrayBuffer(40, 40);
+ const gsab = new GrowableSharedArrayBuffer(40, 40);
+
+ assertEquals(40, ab_getter.call(ab));
+ assertEquals(40, sab_getter.call(sab));
+ assertEquals(40, rab_getter.call(rab));
+ assertEquals(40, gsab_getter.call(gsab));
+
+ assertThrows(() => { ab_getter.call(sab);});
+ assertThrows(() => { ab_getter.call(rab);});
+ assertThrows(() => { ab_getter.call(gsab);});
+
+ assertThrows(() => { sab_getter.call(ab);});
+ assertThrows(() => { sab_getter.call(rab);});
+ assertThrows(() => { sab_getter.call(gsab);});
+
+ assertThrows(() => { rab_getter.call(ab);});
+ assertThrows(() => { rab_getter.call(sab);});
+ assertThrows(() => { rab_getter.call(gsab);});
+
+ assertThrows(() => { gsab_getter.call(ab);});
+ assertThrows(() => { gsab_getter.call(sab);});
+ assertThrows(() => { gsab_getter.call(rab);});
+})();
+
+(function TestMaxByteLengthGetterReceiverChecks() {
+ const name = 'maxByteLength';
+ const rab_getter = Object.getOwnPropertyDescriptor(
+ ResizableArrayBuffer.prototype, name).get;
+ const gsab_getter = Object.getOwnPropertyDescriptor(
+ GrowableSharedArrayBuffer.prototype, name).get;
+
+ const ab = new ArrayBuffer(40);
+ const sab = new SharedArrayBuffer(40);
+ const rab = new ResizableArrayBuffer(20, 40);
+ const gsab = new GrowableSharedArrayBuffer(20, 40);
+
+ assertEquals(40, rab_getter.call(rab));
+ assertEquals(40, gsab_getter.call(gsab));
+
+ assertThrows(() => { rab_getter.call(ab);});
+ assertThrows(() => { rab_getter.call(sab);});
+ assertThrows(() => { rab_getter.call(gsab);});
+
+ assertThrows(() => { gsab_getter.call(ab);});
+ assertThrows(() => { gsab_getter.call(sab);});
+ assertThrows(() => { gsab_getter.call(rab);});
+})();
+
+(function TestResizeAndGrowReceiverChecks() {
+ const rab_resize = ResizableArrayBuffer.prototype.resize;
+ const gsab_grow = GrowableSharedArrayBuffer.prototype.grow;
+
+ const ab = new ArrayBuffer(40);
+ const sab = new SharedArrayBuffer(40);
+ const rab = new ResizableArrayBuffer(10, 40);
+ const gsab = new GrowableSharedArrayBuffer(10, 40);
+
+ rab_resize.call(rab, 20);
+ gsab_grow.call(gsab, 20);
+ assertThrows(() => { rab_resize.call(ab, 30);});
+ assertThrows(() => { rab_resize.call(sab, 30);});
+ assertThrows(() => { rab_resize.call(gsab, 30);});
+
+ assertThrows(() => { gsab_grow.call(ab, 30);});
+ assertThrows(() => { gsab_grow.call(sab, 30);});
+ assertThrows(() => { gsab_grow.call(rab, 30);});
+})();
+
+(function TestRABResizeToMax() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ resizeHelper(rab, 20);
+})();
+
+(function TestRABResizeToSameSize() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ resizeHelper(rab, 10);
+})();
+
+(function TestRABResizeToSmaller() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ resizeHelper(rab, 5);
+})();
+
+(function TestRABResizeToZero() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ resizeHelper(rab, 0);
+})();
+
+(function TestRABResizeZeroToZero() {
+ const rab = new ResizableArrayBuffer(0, 20);
+ resizeHelper(rab, 0);
+})();
+
+(function TestRABGrowBeyondMaxThrows() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ assertEquals(10, rab.byteLength);
+ assertThrows(() => {rab.grow(21)});
+ assertEquals(10, rab.byteLength);
+})();
+
+(function TestRABResizeMultipleTimes() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ const sizes = [15, 7, 7, 0, 8, 20, 20, 10];
+ for (let s of sizes) {
+ resizeHelper(rab, s);
+ }
+})();
+
+(function TestRABResizeParameters() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ rab.resize('15');
+ assertEquals(15, rab.byteLength);
+ rab.resize({valueOf: function() { return 16; }});
+ assertEquals(16, rab.byteLength);
+ rab.resize(17.9);
+ assertEquals(17, rab.byteLength);
+})();
+
+(function TestRABResizeInvalidParameters() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ assertThrows(() => { rab.resize(-1) }, RangeError);
+ assertThrows(() => { rab.resize({valueOf: function() {
+ throw new Error('length param'); }})});
+ assertEquals(10, rab.byteLength);
+
+ // Various non-numbers are converted to NaN which is treated as 0.
+ rab.resize('string');
+ assertEquals(0, rab.byteLength);
+ rab.resize();
+ assertEquals(0, rab.byteLength);
+})();
+
+(function TestRABResizeDetached() {
+ const rab = new ResizableArrayBuffer(10, 20);
+ %ArrayBufferDetach(rab);
+ assertThrows(() => { rab.resize(15) }, TypeError);
+})();
+
+(function DetachInsideResizeParameterConversion() {
+ const rab = new ResizableArrayBuffer(40, 80);
+
+ const evil = {
+ valueOf: () => { %ArrayBufferDetach(rab); return 20; }
+ };
+
+ assertThrows(() => { rab.resize(evil); });
+})();
+
+(function ResizeInsideResizeParameterConversion() {
+ const rab = new ResizableArrayBuffer(40, 80);
+
+ const evil = {
+ valueOf: () => { rab.resize(10); return 20; }
+ };
+
+ rab.resize(evil);
+ assertEquals(20, rab.byteLength);
+})();
+
+
+(function TestRABNewMemoryAfterResizeInitializedToZero() {
+ const maybe_page_size = 4096;
+ const rab = new ResizableArrayBuffer(maybe_page_size, 2 * maybe_page_size);
+ const i8a = new Int8Array(rab);
+ rab.resize(2 * maybe_page_size);
+ for (let i = 0; i < 2 * maybe_page_size; ++i) {
+ assertEquals(0, i8a[i]);
+ }
+})();
+
+(function TestRABMemoryInitializedToZeroAfterShrinkAndGrow() {
+ const maybe_page_size = 4096;
+ const rab = new ResizableArrayBuffer(maybe_page_size, 2 * maybe_page_size);
+ const i8a = new Int8Array(rab);
+ for (let i = 0; i < maybe_page_size; ++i) {
+ i8a[i] = 1;
+ }
+ rab.resize(maybe_page_size / 2);
+ rab.resize(maybe_page_size);
+ for (let i = maybe_page_size / 2; i < maybe_page_size; ++i) {
+ assertEquals(0, i8a[i]);
+ }
+})();
+
+(function TestGSABBasics() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ assertFalse(gsab instanceof ResizableArrayBuffer);
+ assertTrue(gsab instanceof GrowableSharedArrayBuffer);
+ assertFalse(gsab instanceof ArrayBuffer);
+ assertFalse(gsab instanceof SharedArrayBuffer);
+ assertEquals(10, gsab.byteLength);
+ assertEquals(20, gsab.maxByteLength);
+})();
+
+(function TestGSABCtorByteLengthEqualsMax() {
+ const gsab = new GrowableSharedArrayBuffer(10, 10);
+ assertEquals(10, gsab.byteLength);
+ assertEquals(10, gsab.maxByteLength);
+})();
+
+(function TestGSABCtorByteLengthZero() {
+ const gsab = new GrowableSharedArrayBuffer(0, 10);
+ assertEquals(0, gsab.byteLength);
+ assertEquals(10, gsab.maxByteLength);
+})();
+
+(function TestGSABCtorByteLengthAndMaxZero() {
+ const gsab = new GrowableSharedArrayBuffer(0, 0);
+ assertEquals(0, gsab.byteLength);
+ assertEquals(0, gsab.maxByteLength);
+})();
+
+(function TestGSABCtorNoMaxByteLength() {
+ assertThrows(() => { new GrowableSharedArrayBuffer(10); }, RangeError);
+ // But this is fine; undefined is converted to 0.
+ const gsab = new GrowableSharedArrayBuffer(0);
+ assertEquals(0, gsab.byteLength);
+ assertEquals(0, gsab.maxByteLength);
+})();
+
+(function TestAllocatingOutrageouslyMuchThrows() {
+ assertThrows(() => { new GrowableSharedArrayBuffer(0, 2 ** 100);},
+ RangeError);
+})();
+
+(function TestGSABGrowToMax() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ assertEquals(10, gsab.byteLength);
+ growHelper(gsab, 20);
+})();
+
+(function TestGSABGrowToSameSize() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ assertEquals(10, gsab.byteLength);
+ growHelper(gsab, 10);
+})();
+
+(function TestGSABGrowToSmallerThrows() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ assertEquals(10, gsab.byteLength);
+ assertThrows(() => {gsab.grow(5)});
+ assertEquals(10, gsab.byteLength);
+})();
+
+(function TestGSABGrowToZeroThrows() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ assertEquals(10, gsab.byteLength);
+ assertThrows(() => {gsab.grow(0)});
+ assertEquals(10, gsab.byteLength);
+})();
+
+(function TestGSABGrowBeyondMaxThrows() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ assertEquals(10, gsab.byteLength);
+ assertThrows(() => {gsab.grow(21)});
+ assertEquals(10, gsab.byteLength);
+})();
+
+(function TestGSABGrowMultipleTimes() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ assertEquals(10, gsab.byteLength);
+ const sizes = [15, 7, 7, 0, 8, 20, 20, 10];
+ for (let s of sizes) {
+ const current_size = gsab.byteLength;
+ if (s < gsab.byteLength) {
+ assertThrows(() => {gsab.grow(s)});
+ assertEquals(current_size, gsab.byteLength);
+ } else {
+ growHelper(gsab, s);
+ }
+ }
+})();
+
+(function TestGSABGrowParameters() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ gsab.grow('15');
+ assertEquals(15, gsab.byteLength);
+ gsab.grow({valueOf: function() { return 16; }});
+ assertEquals(16, gsab.byteLength);
+ gsab.grow(17.9);
+ assertEquals(17, gsab.byteLength);
+})();
+
+(function TestGSABGrowInvalidParameters() {
+ const gsab = new GrowableSharedArrayBuffer(0, 20);
+ assertThrows(() => { gsab.grow(-1) }, RangeError);
+ assertThrows(() => { gsab.grow({valueOf: function() {
+ throw new Error('length param'); }})});
+ assertEquals(0, gsab.byteLength);
+
+ // Various non-numbers are converted to NaN which is treated as 0.
+ gsab.grow('string');
+ assertEquals(0, gsab.byteLength);
+ gsab.grow();
+ assertEquals(0, gsab.byteLength);
+})();
+
+(function TestGSABMemoryInitializedToZeroAfterGrow() {
+ const maybe_page_size = 4096;
+ const gsab = new GrowableSharedArrayBuffer(maybe_page_size,
+ 2 * maybe_page_size);
+ const i8a = new Int8Array(gsab);
+ gsab.grow(2 * maybe_page_size);
+ assertEquals(2 * maybe_page_size, i8a.length);
+ for (let i = 0; i < 2 * maybe_page_size; ++i) {
+ assertEquals(0, i8a[i]);
+ }
+})();
+
+(function GrowGSABOnADifferentThread() {
+ const gsab = new GrowableSharedArrayBuffer(10, 20);
+ assertEquals(10, gsab.byteLength);
+ function workerCode() {
+ function assert(thing) {
+ if (!thing) {
+ postMessage('error');
+ }
+ }
+ onmessage = function(params) {
+ const gsab = params.gsab;
+ assert(!(gsab instanceof ResizableArrayBuffer));
+ assert(gsab instanceof GrowableSharedArrayBuffer);
+ assert(!(gsab instanceof ArrayBuffer));
+ assert(!(gsab instanceof SharedArrayBuffer));
+ assert(10 == gsab.byteLength);
+ gsab.grow(15);
+ postMessage('ok');
+ }
+ }
+ const w = new Worker(workerCode, {type: 'function'});
+ w.postMessage({gsab: gsab});
+ assertEquals('ok', w.getMessage());
+ assertEquals(15, gsab.byteLength);
+})();
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor-test-func-info.log.symbols.json b/deps/v8/test/mjsunit/tools/tickprocessor-test-func-info.log.symbols.json
new file mode 100644
index 0000000000..eccc52c346
--- /dev/null
+++ b/deps/v8/test/mjsunit/tools/tickprocessor-test-func-info.log.symbols.json
@@ -0,0 +1,7 @@
+[
+ ["exp",4158389888,4158390051],
+ ["fegetexcept",4158374368,4158374389],
+ ["v8::internal::Runtime_Math_exp(v8::internal::Arguments)",135412512,135412608],
+ ["v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)",135235584,135237008],
+ ["v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)",135234064,135235584]
+] \ No newline at end of file
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor-test-large.default b/deps/v8/test/mjsunit/tools/tickprocessor-test-large.default
new file mode 100644
index 0000000000..407cd2ead6
--- /dev/null
+++ b/deps/v8/test/mjsunit/tools/tickprocessor-test-large.default
@@ -0,0 +1,85 @@
+Statistical profiling result from v8.log, (303 ticks, 0 unaccounted, 0 excluded).
+
+ [Shared libraries]:
+ ticks total nonlib name
+ 9 3.0% /usr/local/google/home/cbruni/Documents/v8/v8/out/x64.release/d8
+ 6 2.0% /usr/lib/x86_64-linux-gnu/libc-2.31.so
+
+ [JavaScript]:
+ ticks total nonlib name
+ 102 33.7% 35.4% LazyCompile: *<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+ 25 8.3% 8.7% LazyCompile: *ics test/mjsunit/tools/tickprocessor-test.js:47:13
+ 21 6.9% 7.3% LazyCompile: *loop test/mjsunit/tools/tickprocessor-test.js:10:14
+
+ [C++]:
+ ticks total nonlib name
+ 99 32.7% 34.4% v8_Default_embedded_blob_code_data_
+ 12 4.0% 4.2% __write
+ 3 1.0% 1.0% fwrite
+ 2 0.7% 0.7% v8::internal::RootScavengeVisitor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)
+ 2 0.7% 0.7% __pthread_mutex_unlock_usercnt
+ 2 0.7% 0.7% __libc_malloc
+ 2 0.7% 0.7% _IO_file_xsputn
+ 1 0.3% 0.3% v8::internal::compiler::TopLevelLiveRange::AddUseInterval(v8::internal::compiler::LifetimePosition, v8::internal::compiler::LifetimePosition, v8::internal::Zone*, bool)
+ 1 0.3% 0.3% v8::internal::compiler::Scheduler::PrepareUses()
+ 1 0.3% 0.3% v8::internal::compiler::CommonOperatorBuilder::CommonOperatorBuilder(v8::internal::Zone*)
+ 1 0.3% 0.3% v8::internal::SpaceWithLinearArea::AdvanceAllocationObservers()
+ 1 0.3% 0.3% v8::internal::SerializerDeserializer::Iterate(v8::internal::Isolate*, v8::internal::RootVisitor*)
+ 1 0.3% 0.3% v8::internal::Log::MessageBuilder::AppendString(char const*, unsigned long, bool)
+ 1 0.3% 0.3% v8::internal::LargeObjectSpace::SizeOfObjects()
+ 1 0.3% 0.3% v8::internal::Heap::Scavenge()
+ 1 0.3% 0.3% v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment)
+ 1 0.3% 0.3% v8::internal::Heap::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment)
+ 1 0.3% 0.3% v8::OutputStream::GetChunkSize()
+ 1 0.3% 0.3% std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char)
+ 1 0.3% 0.3% std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, long) const
+ 1 0.3% 0.3% std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned long)
+ 1 0.3% 0.3% int v8::internal::Deserializer::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject)
+ 1 0.3% 0.3% __pthread_cond_wait
+ 1 0.3% 0.3% __pthread_cond_signal
+ 1 0.3% 0.3% Cr_z_inflate_fast_chunk_
+
+ [Summary]:
+ ticks total nonlib name
+ 148 48.8% 51.4% JavaScript
+ 140 46.2% 48.6% C++
+ 20 6.6% 6.9% GC
+ 15 5.0% Shared libraries
+
+ [C++ entry points]:
+ ticks cpp total name
+ 93 93.9% 30.7% v8_Default_embedded_blob_code_data_
+ 4 4.0% 1.3% v8::internal::Runtime_CompileForOnStackReplacement(int, unsigned long*, v8::internal::Isolate*)
+ 2 2.0% 0.7% v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*)
+
+ [Bottom up (heavy) profile]:
+ Note: percentage shows a share of a particular caller in the total
+ amount of its parent calls.
+ Callers occupying less than 1.0% are not shown.
+
+ ticks parent name
+ 102 33.7% LazyCompile: *<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+
+ 99 32.7% v8_Default_embedded_blob_code_data_
+ 76 76.8% LazyCompile: *<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+ 16 16.2% LazyCompile: *ics test/mjsunit/tools/tickprocessor-test.js:47:13
+ 16 100.0% Script: ~<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+ 1 1.0% Script: ~<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+
+ 25 8.3% LazyCompile: *ics test/mjsunit/tools/tickprocessor-test.js:47:13
+ 25 100.0% Script: ~<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+
+ 21 6.9% LazyCompile: *loop test/mjsunit/tools/tickprocessor-test.js:10:14
+ 21 100.0% Script: ~<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+
+ 12 4.0% __write
+
+ 9 3.0% /usr/local/google/home/cbruni/Documents/v8/v8/out/x64.release/d8
+ 4 44.4% LazyCompile: ~ics test/mjsunit/tools/tickprocessor-test.js:47:13
+ 4 100.0% Script: ~<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+ 2 22.2% Script: ~<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+ 2 22.2% LazyCompile: ~read_megamorphic test/mjsunit/tools/tickprocessor-test.js:35:26
+ 2 100.0% LazyCompile: ~ics test/mjsunit/tools/tickprocessor-test.js:47:13
+ 2 100.0% Script: ~<anonymous> test/mjsunit/tools/tickprocessor-test.js:1:1
+
+ 6 2.0% /usr/lib/x86_64-linux-gnu/libc-2.31.so
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor-test-large.js b/deps/v8/test/mjsunit/tools/tickprocessor-test-large.js
new file mode 100644
index 0000000000..0ca4b86450
--- /dev/null
+++ b/deps/v8/test/mjsunit/tools/tickprocessor-test-large.js
@@ -0,0 +1,58 @@
+// Copyright 2020 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.
+
+// Sample file for creating tickprocessor-test.log
+"use strict"
+
+let result;
+
+function loop() {
+ let result = 0;
+ for (let i = 0; i < 10_000_000; i++) {
+ result = add(result, 1);
+ }
+ return result;
+}
+
+function add(a, b) {
+ return a + b;
+}
+
+
+result = loop();
+result = loop();
+
+// Cause some IC misses
+function read_monomorphic(o) {
+ return o.value
+}
+
+function read_polymorphic(o) {
+ return o.value
+}
+
+function read_megamorphic(o) {
+ return o.value
+}
+
+const objects = [];
+for (let i = 0; i < 100; i++) {
+ const object = {};
+ object['key' + i ];
+ object['value'] = 1 + i/100;
+ objects.push(object)
+}
+
+function ics() {
+ result = 0;
+ for (let i = 0; i < objects.length; i++) {
+ result += read_monomorphic(objects[0]);
+ result += read_polymorphic(objects[i % 3])
+ result += read_megamorphic(objects[i]);
+ }
+}
+
+for (let i = 0; i < 100_000; i++) {
+ ics();
+}
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor-test-large.log b/deps/v8/test/mjsunit/tools/tickprocessor-test-large.log
new file mode 100644
index 0000000000..6aa49159f9
--- /dev/null
+++ b/deps/v8/test/mjsunit/tools/tickprocessor-test-large.log
@@ -0,0 +1,2759 @@
+v8-version,9,1,0,0,1
+shared-library,/usr/local/google/home/cbruni/Documents/v8/v8/out/x64.release/d8,0x55742561f000,0x557426612000,0
+shared-library,/usr/lib/x86_64-linux-gnu/libc-2.31.so,0x7f3662d7a000,0x7f3662eea000,0
+shared-library,/usr/lib/x86_64-linux-gnu/libgcc_s.so.1,0x7f3662f3f000,0x7f3662f53000,0
+shared-library,/usr/lib/x86_64-linux-gnu/libm-2.31.so,0x7f3662f59000,0x7f3663002000,0
+shared-library,/usr/lib/x86_64-linux-gnu/libpthread-2.31.so,0x7f366309d000,0x7f36630b4000,0
+shared-library,/usr/lib/x86_64-linux-gnu/ld-2.31.so,0x7f36630f2000,0x7f3663113000,0
+shared-library,[vdso],0x7ffd02d39000,0x7ffd02d3b000,0
+profiler,begin,1000
+new,CodeRange,0x2ae700040000,134217728
+tick,0x7f3662e68f6f,1156,0,0x0,6
+new,MemoryChunk,0x2ae708040000,262144
+tick,0x557425b28b7c,2152,0,0x0,6
+new,MemoryChunk,0x2ae708080000,262144
+new,MemoryChunk,0x2ae7080c0000,262144
+new,MemoryChunk,0x2ae708100000,262144
+new,MemoryChunk,0x2ae708140000,262144
+heap-capacity,1014688
+heap-available,4295550784
+new,MemoryChunk,0x2ae708180000,262144
+new,MemoryChunk,0x2ae7081c0000,262144
+new,MemoryChunk,0x2ae700040000,262144
+tick,0x557425e809e0,3216,0,0x0,6
+code-creation,Builtin,2,4006,0x55742631e640,1616,RecordWrite
+code-creation,Builtin,2,4022,0x55742631eca0,416,EphemeronKeyBarrier
+code-creation,Builtin,2,4031,0x55742631ee60,64,AdaptorWithBuiltinExitFrame
+code-creation,Builtin,2,4041,0x55742631eec0,352,CallFunction_ReceiverIsNullOrUndefined
+code-creation,Builtin,2,4051,0x55742631f040,404,CallFunction_ReceiverIsNotNullOrUndefined
+code-creation,Builtin,2,4061,0x55742631f1e0,444,CallFunction_ReceiverIsAny
+code-creation,Builtin,2,4070,0x55742631f3a0,120,CallBoundFunction
+code-creation,Builtin,2,4079,0x55742631f420,128,Call_ReceiverIsNullOrUndefined
+code-creation,Builtin,2,4088,0x55742631f4c0,128,Call_ReceiverIsNotNullOrUndefined
+code-creation,Builtin,2,4098,0x55742631f560,128,Call_ReceiverIsAny
+code-creation,Builtin,2,4107,0x55742631f600,576,Call_ReceiverIsNullOrUndefined_Baseline
+code-creation,Builtin,2,4117,0x55742631f860,576,Call_ReceiverIsNotNullOrUndefined_Baseline
+code-creation,Builtin,2,4127,0x55742631fac0,576,Call_ReceiverIsAny_Baseline
+code-creation,Builtin,2,4137,0x55742631fd20,556,Call_ReceiverIsNullOrUndefined_WithFeedback
+code-creation,Builtin,2,4148,0x55742631ff60,556,Call_ReceiverIsNotNullOrUndefined_WithFeedback
+code-creation,Builtin,2,4159,0x5574263201a0,556,Call_ReceiverIsAny_WithFeedback
+code-creation,Builtin,2,4168,0x5574263203e0,752,CallProxy
+code-creation,Builtin,2,4176,0x5574263206e0,128,CallVarargs
+code-creation,Builtin,2,4185,0x557426320780,988,CallWithSpread
+code-creation,Builtin,2,4193,0x557426320b60,1556,CallWithSpread_Baseline
+code-creation,Builtin,2,4202,0x557426321180,1588,CallWithSpread_WithFeedback
+code-creation,Builtin,2,4211,0x5574263217c0,892,CallWithArrayLike
+code-creation,Builtin,2,4220,0x557426321b40,1468,CallWithArrayLike_WithFeedback
+code-creation,Builtin,2,4229,0x557426322100,128,CallForwardVarargs
+code-creation,Builtin,2,4238,0x5574263221a0,128,CallFunctionForwardVarargs
+code-creation,Builtin,2,4247,0x557426322240,152,CallFunctionTemplate_CheckAccess
+code-creation,Builtin,2,4257,0x5574263222e0,260,CallFunctionTemplate_CheckCompatibleReceiver
+code-creation,Builtin,2,4281,0x557426322400,360,CallFunctionTemplate_CheckAccessAndCompatibleReceiver
+code-creation,Builtin,2,4296,0x557426322580,32,ConstructFunction
+code-creation,Builtin,2,4308,0x5574263225c0,120,ConstructBoundFunction
+code-creation,Builtin,2,4320,0x557426322640,28,ConstructedNonConstructable
+code-creation,Builtin,2,4333,0x557426322660,108,Construct
+code-creation,Builtin,2,4345,0x5574263226e0,128,ConstructVarargs
+code-creation,Builtin,2,4357,0x557426322780,1004,ConstructWithSpread
+code-creation,Builtin,2,4369,0x557426322b80,1820,ConstructWithSpread_Baseline
+code-creation,Builtin,2,4382,0x5574263232a0,1860,ConstructWithSpread_WithFeedback
+code-creation,Builtin,2,4395,0x557426323a00,956,ConstructWithArrayLike
+code-creation,Builtin,2,4408,0x557426323dc0,1828,ConstructWithArrayLike_WithFeedback
+code-creation,Builtin,2,4421,0x557426324500,168,ConstructForwardVarargs
+code-creation,Builtin,2,4434,0x5574263245c0,168,ConstructFunctionForwardVarargs
+code-creation,Builtin,2,4456,0x557426324680,876,Construct_Baseline
+code-creation,Builtin,2,4469,0x557426324a00,904,Construct_WithFeedback
+code-creation,Builtin,2,4482,0x557426324da0,472,JSConstructStubGeneric
+code-creation,Builtin,2,4494,0x557426324f80,360,JSBuiltinsConstructStub
+code-creation,Builtin,2,4507,0x557426325100,708,FastNewObject
+code-creation,Builtin,2,4519,0x5574263253e0,300,FastNewClosure
+code-creation,Builtin,2,4532,0x557426325520,748,ConstructProxy
+code-creation,Builtin,2,4544,0x557426325820,192,JSEntry
+code-creation,Builtin,2,4555,0x557426325900,192,JSConstructEntry
+code-creation,Builtin,2,4568,0x5574263259e0,192,JSRunMicrotasksEntry
+code-creation,Builtin,2,4580,0x557426325ac0,96,JSEntryTrampoline
+code-creation,Builtin,2,4592,0x557426325b40,96,JSConstructEntryTrampoline
+code-creation,Builtin,2,4605,0x557426325bc0,332,ResumeGeneratorTrampoline
+code-creation,Builtin,2,4618,0x557426325d20,1108,StringCodePointAt
+code-creation,Builtin,2,4630,0x557426326180,1572,StringFromCodePointAt
+code-creation,Builtin,2,4642,0x5574263267c0,568,StringEqual
+code-creation,Builtin,2,4654,0x557426326a00,300,StringGreaterThan
+code-creation,Builtin,2,4666,0x557426326b40,300,StringGreaterThanOrEqual
+code-creation,Builtin,2,4679,0x557426326c80,300,StringLessThan
+code-creation,Builtin,2,4691,0x557426326dc0,300,StringLessThanOrEqual
+code-creation,Builtin,2,4700,0x557426326f00,2560,StringSubstring
+code-creation,Builtin,2,4712,0x557426327920,80,OrderedHashTableHealIndex
+code-creation,Builtin,2,4725,0x557426327980,1240,InterpreterEntryTrampoline
+code-creation,Builtin,2,4738,0x557426327e60,80,InterpreterPushArgsThenCall
+code-creation,Builtin,2,4751,0x557426327ec0,92,InterpreterPushUndefinedAndArgsThenCall
+code-creation,Builtin,2,4764,0x557426327f20,88,InterpreterPushArgsThenCallWithFinalSpread
+code-creation,Builtin,2,4778,0x557426327f80,80,InterpreterPushArgsThenConstruct
+code-creation,Builtin,2,4791,0x557426327fe0,80,InterpreterPushArgsThenConstructArrayFunction
+code-creation,Builtin,2,4805,0x557426328040,88,InterpreterPushArgsThenConstructWithFinalSpread
+code-creation,Builtin,2,4819,0x5574263280a0,224,InterpreterEnterBytecodeAdvance
+code-creation,Builtin,2,4832,0x5574263281a0,92,InterpreterEnterBytecodeDispatch
+code-creation,Builtin,2,4845,0x557426328200,56,InterpreterOnStackReplacement
+code-creation,Builtin,2,4858,0x557426328240,612,BaselineOutOfLinePrologue
+code-creation,Builtin,2,4871,0x5574263284c0,56,BaselineOnStackReplacement
+code-creation,Builtin,2,4883,0x557426328500,84,BaselineLeaveFrame
+code-creation,Builtin,2,4896,0x557426328560,1164,CompileLazy
+code-creation,Builtin,2,4908,0x557426328a00,88,CompileLazyDeoptimizedCode
+code-creation,Builtin,2,4920,0x557426328a60,264,InstantiateAsmJs
+code-creation,Builtin,2,4933,0x557426328b80,32,NotifyDeoptimized
+code-creation,Builtin,2,4945,0x557426328bc0,788,DeoptimizationEntry_Eager
+code-creation,Builtin,2,4958,0x557426328ee0,792,DeoptimizationEntry_Soft
+code-creation,Builtin,2,4970,0x557426329200,792,DeoptimizationEntry_Bailout
+code-creation,Builtin,2,4983,0x557426329520,792,DeoptimizationEntry_Lazy
+code-creation,Builtin,2,4996,0x557426329840,48,ContinueToCodeStubBuiltin
+code-creation,Builtin,2,5009,0x557426329880,56,ContinueToCodeStubBuiltinWithResult
+code-creation,Builtin,2,5022,0x5574263298c0,52,ContinueToJavaScriptBuiltin
+code-creation,Builtin,2,5035,0x557426329900,60,ContinueToJavaScriptBuiltinWithResult
+code-creation,Builtin,2,5048,0x557426329940,292,CallApiCallback
+code-creation,Builtin,2,5061,0x557426329a80,288,CallApiGetter
+code-creation,Builtin,2,5073,0x557426329bc0,12,HandleApiCall
+code-creation,Builtin,2,5085,0x557426329be0,12,HandleApiCallAsFunction
+code-creation,Builtin,2,5097,0x557426329c00,12,HandleApiCallAsConstructor
+code-creation,Builtin,2,5110,0x557426329c20,56,AllocateInYoungGeneration
+code-creation,Builtin,2,5122,0x557426329c60,52,AllocateRegularInYoungGeneration
+code-creation,Builtin,2,5136,0x557426329ca0,56,AllocateInOldGeneration
+code-creation,Builtin,2,5148,0x557426329ce0,52,AllocateRegularInOldGeneration
+code-creation,Builtin,2,5166,0x557426329d20,456,CopyFastSmiOrObjectElements
+code-creation,Builtin,2,5179,0x557426329f00,516,GrowFastDoubleElements
+code-creation,Builtin,2,5191,0x55742632a120,416,GrowFastSmiOrObjectElements
+code-creation,Builtin,2,5204,0x55742632a2e0,440,DebugBreakTrampoline
+code-creation,Builtin,2,5216,0x55742632a4a0,288,FrameDropperTrampoline
+code-creation,Builtin,2,5229,0x55742632a5e0,48,HandleDebuggerStatement
+code-creation,Builtin,2,5241,0x55742632a620,184,ToNumber
+code-creation,Builtin,2,5253,0x55742632a6e0,288,ToNumber_Baseline
+code-creation,Builtin,2,5265,0x55742632a820,348,ToNumeric_Baseline
+code-creation,Builtin,2,5277,0x55742632a980,104,PlainPrimitiveToNumber
+code-creation,Builtin,2,5290,0x55742632aa00,216,ToNumberConvertBigInt
+code-creation,Builtin,2,5302,0x55742632aae0,136,Typeof
+code-creation,Builtin,2,5313,0x55742632ab80,104,BigIntToI64
+code-creation,Builtin,2,5323,0x55742632ac00,4,BigIntToI32Pair
+code-creation,Builtin,2,5342,0x55742632ac20,212,I64ToBigInt
+code-creation,Builtin,2,5375,0x55742632ad00,4,I32PairToBigInt
+code-creation,Builtin,2,5387,0x55742632ad20,116,ToBooleanLazyDeoptContinuation
+code-creation,Builtin,2,5400,0x55742632ada0,212,TailCallOptimizedCodeSlot
+code-creation,Builtin,2,5413,0x55742632ae80,3788,KeyedLoadIC_PolymorphicName
+code-creation,Builtin,2,5426,0x55742632bd60,16864,KeyedStoreIC_Megamorphic
+code-creation,Builtin,2,5438,0x55742632ff60,324,LoadGlobalIC_NoFeedback
+code-creation,Builtin,2,5451,0x5574263300c0,68,LoadIC_FunctionPrototype
+code-creation,Builtin,2,5464,0x557426330120,8,LoadIC_StringLength
+code-creation,Builtin,2,5476,0x557426330140,16,LoadIC_StringWrapperLength
+code-creation,Builtin,2,5489,0x557426330160,3316,LoadIC_NoFeedback
+code-creation,Builtin,2,5501,0x557426330e60,32,StoreGlobalIC_Slow
+code-creation,Builtin,2,5513,0x557426330ea0,7912,StoreIC_NoFeedback
+code-creation,Builtin,2,5525,0x557426332da0,196,KeyedLoadIC_SloppyArguments
+code-creation,Builtin,2,5538,0x557426332e80,68,LoadIndexedInterceptorIC
+code-creation,Builtin,2,5551,0x557426332ee0,272,KeyedStoreIC_SloppyArguments_Standard
+code-creation,Builtin,2,5565,0x557426333000,272,KeyedStoreIC_SloppyArguments_GrowNoTransitionHandleCOW
+code-creation,Builtin,2,5579,0x557426333120,272,KeyedStoreIC_SloppyArguments_NoTransitionIgnoreOOB
+code-creation,Builtin,2,5594,0x557426333240,272,KeyedStoreIC_SloppyArguments_NoTransitionHandleCOW
+code-creation,Builtin,2,5620,0x557426333360,6836,StoreFastElementIC_Standard
+code-creation,Builtin,2,5633,0x557426334e20,10144,StoreFastElementIC_GrowNoTransitionHandleCOW
+code-creation,Builtin,2,5647,0x5574263375e0,6832,StoreFastElementIC_NoTransitionIgnoreOOB
+code-creation,Builtin,2,5661,0x5574263390a0,5820,StoreFastElementIC_NoTransitionHandleCOW
+code-creation,Builtin,2,5675,0x55742633a760,9076,ElementsTransitionAndStore_Standard
+code-creation,Builtin,2,5689,0x55742633cae0,20632,ElementsTransitionAndStore_GrowNoTransitionHandleCOW
+code-creation,Builtin,2,5703,0x557426341b80,9076,ElementsTransitionAndStore_NoTransitionIgnoreOOB
+code-creation,Builtin,2,5717,0x557426343f00,11936,ElementsTransitionAndStore_NoTransitionHandleCOW
+code-creation,Builtin,2,5732,0x557426346dc0,872,KeyedHasIC_PolymorphicName
+code-creation,Builtin,2,5744,0x557426347140,172,KeyedHasIC_SloppyArguments
+code-creation,Builtin,2,5757,0x557426347200,68,HasIndexedInterceptorIC
+code-creation,Builtin,2,5770,0x557426347260,88,DynamicCheckMapsTrampoline
+code-creation,Builtin,2,5782,0x5574263472c0,272,DynamicCheckMaps
+code-creation,Builtin,2,5798,0x5574263473e0,164,EnqueueMicrotask
+code-creation,Builtin,2,5810,0x5574263474a0,8,RunMicrotasksTrampoline
+code-creation,Builtin,2,5823,0x5574263474c0,2404,RunMicrotasks
+code-creation,Builtin,2,5835,0x557426347e40,2316,HasProperty
+code-creation,Builtin,2,5847,0x557426348760,1112,DeleteProperty
+code-creation,Builtin,2,5859,0x557426348bc0,1972,CopyDataProperties
+code-creation,Builtin,2,5871,0x557426349380,10024,SetDataProperties
+code-creation,Builtin,2,5883,0x55742634bac0,28,Abort
+code-creation,Builtin,2,5895,0x55742634bae0,28,AbortCSAAssert
+code-creation,Builtin,2,5907,0x55742634bb00,12,EmptyFunction
+code-creation,Builtin,2,5922,0x55742634bb20,12,Illegal
+code-creation,Builtin,2,5934,0x55742634bb40,12,StrictPoisonPillThrower
+code-creation,Builtin,2,5947,0x55742634bb60,12,UnsupportedThrower
+code-creation,Builtin,2,5959,0x55742634bb80,64,ReturnReceiver
+code-creation,Builtin,2,5971,0x55742634bbe0,36,ArrayConstructor
+code-creation,Builtin,2,5983,0x55742634bc20,400,ArrayConstructorImpl
+code-creation,Builtin,2,5996,0x55742634bdc0,204,ArrayNoArgumentConstructor_PackedSmi_DontOverride
+code-creation,Builtin,2,6010,0x55742634bea0,204,ArrayNoArgumentConstructor_HoleySmi_DontOverride
+code-creation,Builtin,2,6024,0x55742634bf80,168,ArrayNoArgumentConstructor_PackedSmi_DisableAllocationSites
+code-creation,Builtin,2,6039,0x55742634c040,168,ArrayNoArgumentConstructor_HoleySmi_DisableAllocationSites
+code-creation,Builtin,2,6054,0x55742634c100,168,ArrayNoArgumentConstructor_Packed_DisableAllocationSites
+code-creation,Builtin,2,6069,0x55742634c1c0,168,ArrayNoArgumentConstructor_Holey_DisableAllocationSites
+code-creation,Builtin,2,6083,0x55742634c280,180,ArrayNoArgumentConstructor_PackedDouble_DisableAllocationSites
+code-creation,Builtin,2,6098,0x55742634c340,180,ArrayNoArgumentConstructor_HoleyDouble_DisableAllocationSites
+code-creation,Builtin,2,6113,0x55742634c400,548,ArraySingleArgumentConstructor_PackedSmi_DontOverride
+code-creation,Builtin,2,6128,0x55742634c640,508,ArraySingleArgumentConstructor_HoleySmi_DontOverride
+code-creation,Builtin,2,6142,0x55742634c840,476,ArraySingleArgumentConstructor_PackedSmi_DisableAllocationSites
+code-creation,Builtin,2,6157,0x55742634ca20,436,ArraySingleArgumentConstructor_HoleySmi_DisableAllocationSites
+code-creation,Builtin,2,6172,0x55742634cbe0,476,ArraySingleArgumentConstructor_Packed_DisableAllocationSites
+code-creation,Builtin,2,6187,0x55742634cdc0,436,ArraySingleArgumentConstructor_Holey_DisableAllocationSites
+code-creation,Builtin,2,6202,0x55742634cf80,480,ArraySingleArgumentConstructor_PackedDouble_DisableAllocationSites
+code-creation,Builtin,2,6217,0x55742634d180,444,ArraySingleArgumentConstructor_HoleyDouble_DisableAllocationSites
+code-creation,Builtin,2,6235,0x55742634d340,64,ArrayNArgumentsConstructor
+code-creation,Builtin,2,6248,0x55742634d3a0,12,ArrayConcat
+code-creation,Builtin,2,6260,0x55742634d3c0,12,ArrayPrototypeFill
+code-creation,Builtin,2,6272,0x55742634d3e0,956,ArrayIncludesSmiOrObject
+code-creation,Builtin,2,6285,0x55742634d7a0,152,ArrayIncludesPackedDoubles
+code-creation,Builtin,2,6297,0x55742634d840,228,ArrayIncludesHoleyDoubles
+code-creation,Builtin,2,6310,0x55742634d940,556,ArrayIncludes
+code-creation,Builtin,2,6322,0x55742634db80,868,ArrayIndexOfSmiOrObject
+code-creation,Builtin,2,6335,0x55742634df00,108,ArrayIndexOfPackedDoubles
+code-creation,Builtin,2,6347,0x55742634df80,108,ArrayIndexOfHoleyDoubles
+code-creation,Builtin,2,6360,0x55742634e000,556,ArrayIndexOf
+code-creation,Builtin,2,6372,0x55742634e240,12,ArrayPop
+code-creation,Builtin,2,6383,0x55742634e260,656,ArrayPrototypePop
+code-creation,Builtin,2,6396,0x55742634e500,12,ArrayPush
+code-creation,Builtin,2,6413,0x55742634e520,2588,ArrayPrototypePush
+code-creation,Builtin,2,6425,0x55742634ef40,12,ArrayShift
+code-creation,Builtin,2,6437,0x55742634ef60,12,ArrayUnshift
+code-creation,Builtin,2,6449,0x55742634ef80,992,CloneFastJSArray
+code-creation,Builtin,2,6461,0x55742634f380,2368,CloneFastJSArrayFillingHoles
+code-creation,Builtin,2,6474,0x55742634fce0,988,ExtractFastJSArray
+code-creation,Builtin,2,6486,0x5574263500c0,248,ArrayPrototypeEntries
+code-creation,Builtin,2,6499,0x5574263501c0,244,ArrayPrototypeKeys
+code-creation,Builtin,2,6511,0x5574263502c0,248,ArrayPrototypeValues
+code-creation,Builtin,2,6523,0x5574263503c0,4264,ArrayIteratorPrototypeNext
+code-creation,Builtin,2,6536,0x557426351480,3828,FlattenIntoArray
+code-creation,Builtin,2,6548,0x557426352380,3804,FlatMapIntoArray
+code-creation,Builtin,2,6560,0x557426353260,380,ArrayPrototypeFlat
+code-creation,Builtin,2,6573,0x5574263533e0,432,ArrayPrototypeFlatMap
+code-creation,Builtin,2,6585,0x5574263535a0,12,ArrayBufferConstructor
+code-creation,Builtin,2,6601,0x5574263535c0,12,ArrayBufferConstructor_DoNotInitialize
+code-creation,Builtin,2,6615,0x5574263535e0,12,ArrayBufferPrototypeSlice
+code-creation,Builtin,2,6628,0x557426353600,608,AsyncFunctionEnter
+code-creation,Builtin,2,6642,0x557426353880,140,AsyncFunctionReject
+code-creation,Builtin,2,6655,0x557426353920,128,AsyncFunctionResolve
+code-creation,Builtin,2,6667,0x5574263539c0,12,AsyncFunctionLazyDeoptContinuation
+code-creation,Builtin,2,6681,0x5574263539e0,1320,AsyncFunctionAwaitCaught
+code-creation,Builtin,2,6693,0x557426353f20,1320,AsyncFunctionAwaitUncaught
+code-creation,Builtin,2,6706,0x557426354460,172,AsyncFunctionAwaitRejectClosure
+code-creation,Builtin,2,6719,0x557426354520,168,AsyncFunctionAwaitResolveClosure
+code-creation,Builtin,2,6732,0x5574263545e0,12,BigIntConstructor
+code-creation,Builtin,2,6745,0x557426354600,12,BigIntAsUintN
+code-creation,Builtin,2,6757,0x557426354620,12,BigIntAsIntN
+code-creation,Builtin,2,6769,0x557426354640,12,BigIntPrototypeToLocaleString
+code-creation,Builtin,2,6782,0x557426354660,12,BigIntPrototypeToString
+code-creation,Builtin,2,6794,0x557426354680,12,BigIntPrototypeValueOf
+code-creation,Builtin,2,6807,0x5574263546a0,12,CallSitePrototypeGetColumnNumber
+code-creation,Builtin,2,6820,0x5574263546c0,12,CallSitePrototypeGetEnclosingColumnNumber
+code-creation,Builtin,2,6834,0x5574263546e0,12,CallSitePrototypeGetEnclosingLineNumber
+code-creation,Builtin,2,6847,0x557426354700,12,CallSitePrototypeGetEvalOrigin
+code-creation,Builtin,2,6860,0x557426354720,12,CallSitePrototypeGetFileName
+code-creation,Builtin,2,6873,0x557426354740,12,CallSitePrototypeGetFunction
+code-creation,Builtin,2,6886,0x557426354760,12,CallSitePrototypeGetFunctionName
+code-creation,Builtin,2,6899,0x557426354780,12,CallSitePrototypeGetLineNumber
+code-creation,Builtin,2,6912,0x5574263547a0,12,CallSitePrototypeGetMethodName
+code-creation,Builtin,2,6925,0x5574263547c0,12,CallSitePrototypeGetPosition
+code-creation,Builtin,2,6938,0x5574263547e0,12,CallSitePrototypeGetPromiseIndex
+code-creation,Builtin,2,6951,0x557426354800,12,CallSitePrototypeGetScriptNameOrSourceURL
+code-creation,Builtin,2,6965,0x557426354820,12,CallSitePrototypeGetThis
+code-creation,Builtin,2,6978,0x557426354840,12,CallSitePrototypeGetTypeName
+code-creation,Builtin,2,6990,0x557426354860,12,CallSitePrototypeIsAsync
+code-creation,Builtin,2,7003,0x557426354880,12,CallSitePrototypeIsConstructor
+code-creation,Builtin,2,7016,0x5574263548a0,12,CallSitePrototypeIsEval
+code-creation,Builtin,2,7029,0x5574263548c0,12,CallSitePrototypeIsNative
+code-creation,Builtin,2,7041,0x5574263548e0,12,CallSitePrototypeIsPromiseAll
+code-creation,Builtin,2,7057,0x557426354900,12,CallSitePrototypeIsToplevel
+code-creation,Builtin,2,7070,0x557426354920,12,CallSitePrototypeToString
+code-creation,Builtin,2,7083,0x557426354940,12,ConsoleDebug
+code-creation,Builtin,2,7095,0x557426354960,12,ConsoleError
+code-creation,Builtin,2,7107,0x557426354980,12,ConsoleInfo
+code-creation,Builtin,2,7119,0x5574263549a0,12,ConsoleLog
+code-creation,Builtin,2,7130,0x5574263549c0,12,ConsoleWarn
+code-creation,Builtin,2,7142,0x5574263549e0,12,ConsoleDir
+code-creation,Builtin,2,7154,0x557426354a00,12,ConsoleDirXml
+code-creation,Builtin,2,7166,0x557426354a20,12,ConsoleTable
+code-creation,Builtin,2,7178,0x557426354a40,12,ConsoleTrace
+code-creation,Builtin,2,7190,0x557426354a60,12,ConsoleGroup
+code-creation,Builtin,2,7202,0x557426354a80,12,ConsoleGroupCollapsed
+code-creation,Builtin,2,7214,0x557426354aa0,12,ConsoleGroupEnd
+code-creation,Builtin,2,7226,0x557426354ac0,12,ConsoleClear
+code-creation,Builtin,2,7238,0x557426354ae0,12,ConsoleCount
+code-creation,Builtin,2,7250,0x557426354b00,12,ConsoleCountReset
+code-creation,Builtin,2,7262,0x557426354b20,12,ConsoleAssert
+code-creation,Builtin,2,7274,0x557426354b40,12,ConsoleProfile
+code-creation,Builtin,2,7286,0x557426354b60,12,ConsoleProfileEnd
+code-creation,Builtin,2,7299,0x557426354b80,12,ConsoleTime
+code-creation,Builtin,2,7310,0x557426354ba0,12,ConsoleTimeLog
+code-creation,Builtin,2,7322,0x557426354bc0,12,ConsoleTimeEnd
+code-creation,Builtin,2,7334,0x557426354be0,12,ConsoleTimeStamp
+code-creation,Builtin,2,7350,0x557426354c00,12,ConsoleContext
+code-creation,Builtin,2,7363,0x557426354c20,12,DataViewConstructor
+code-creation,Builtin,2,7375,0x557426354c40,12,DateConstructor
+code-creation,Builtin,2,7387,0x557426354c60,212,DatePrototypeGetDate
+code-creation,Builtin,2,7400,0x557426354d40,212,DatePrototypeGetDay
+code-creation,Builtin,2,7412,0x557426354e20,212,DatePrototypeGetFullYear
+code-creation,Builtin,2,7425,0x557426354f00,212,DatePrototypeGetHours
+code-creation,Builtin,2,7437,0x557426354fe0,188,DatePrototypeGetMilliseconds
+code-creation,Builtin,2,7452,0x5574263550a0,212,DatePrototypeGetMinutes
+code-creation,Builtin,2,7469,0x557426355180,212,DatePrototypeGetMonth
+code-creation,Builtin,2,7481,0x557426355260,212,DatePrototypeGetSeconds
+code-creation,Builtin,2,7494,0x557426355340,124,DatePrototypeGetTime
+code-creation,Builtin,2,7506,0x5574263553c0,188,DatePrototypeGetTimezoneOffset
+code-creation,Builtin,2,7519,0x557426355480,188,DatePrototypeGetUTCDate
+code-creation,Builtin,2,7532,0x557426355540,188,DatePrototypeGetUTCDay
+code-creation,Builtin,2,7544,0x557426355600,188,DatePrototypeGetUTCFullYear
+code-creation,Builtin,2,7557,0x5574263556c0,188,DatePrototypeGetUTCHours
+code-creation,Builtin,2,7570,0x557426355780,188,DatePrototypeGetUTCMilliseconds
+code-creation,Builtin,2,7583,0x557426355840,188,DatePrototypeGetUTCMinutes
+code-creation,Builtin,2,7596,0x557426355900,188,DatePrototypeGetUTCMonth
+code-creation,Builtin,2,7608,0x5574263559c0,188,DatePrototypeGetUTCSeconds
+code-creation,Builtin,2,7621,0x557426355a80,124,DatePrototypeValueOf
+code-creation,Builtin,2,7633,0x557426355b00,364,DatePrototypeToPrimitive
+code-creation,Builtin,2,7646,0x557426355c80,12,DatePrototypeGetYear
+code-creation,Builtin,2,7658,0x557426355ca0,12,DatePrototypeSetYear
+code-creation,Builtin,2,7671,0x557426355cc0,12,DateNow
+code-creation,Builtin,2,7683,0x557426355ce0,12,DateParse
+code-creation,Builtin,2,7694,0x557426355d00,12,DatePrototypeSetDate
+code-creation,Builtin,2,7707,0x557426355d20,12,DatePrototypeSetFullYear
+code-creation,Builtin,2,7719,0x557426355d40,12,DatePrototypeSetHours
+code-creation,Builtin,2,7732,0x557426355d60,12,DatePrototypeSetMilliseconds
+code-creation,Builtin,2,7745,0x557426355d80,12,DatePrototypeSetMinutes
+code-creation,Builtin,2,7757,0x557426355da0,12,DatePrototypeSetMonth
+code-creation,Builtin,2,7770,0x557426355dc0,12,DatePrototypeSetSeconds
+code-creation,Builtin,2,7782,0x557426355de0,12,DatePrototypeSetTime
+code-creation,Builtin,2,7794,0x557426355e00,12,DatePrototypeSetUTCDate
+code-creation,Builtin,2,7807,0x557426355e20,12,DatePrototypeSetUTCFullYear
+code-creation,Builtin,2,7820,0x557426355e40,12,DatePrototypeSetUTCHours
+code-creation,Builtin,2,7832,0x557426355e60,12,DatePrototypeSetUTCMilliseconds
+code-creation,Builtin,2,7846,0x557426355e80,12,DatePrototypeSetUTCMinutes
+code-creation,Builtin,2,7860,0x557426355ea0,12,DatePrototypeSetUTCMonth
+code-creation,Builtin,2,7873,0x557426355ec0,12,DatePrototypeSetUTCSeconds
+code-creation,Builtin,2,7885,0x557426355ee0,12,DatePrototypeToDateString
+code-creation,Builtin,2,7899,0x557426355f00,12,DatePrototypeToISOString
+code-creation,Builtin,2,7911,0x557426355f20,12,DatePrototypeToUTCString
+code-creation,Builtin,2,7924,0x557426355f40,12,DatePrototypeToString
+code-creation,Builtin,2,7937,0x557426355f60,12,DatePrototypeToTimeString
+code-creation,Builtin,2,7949,0x557426355f80,12,DatePrototypeToJson
+code-creation,Builtin,2,7962,0x557426355fa0,12,DateUTC
+code-creation,Builtin,2,7973,0x557426355fc0,12,ErrorConstructor
+code-creation,Builtin,2,7985,0x557426355fe0,12,ErrorCaptureStackTrace
+code-creation,Builtin,2,7998,0x557426356000,12,ErrorPrototypeToString
+code-creation,Builtin,2,8010,0x557426356020,12,FunctionConstructor
+code-creation,Builtin,2,8023,0x557426356040,76,FunctionPrototypeApply
+code-creation,Builtin,2,8035,0x5574263560a0,12,FunctionPrototypeBind
+code-creation,Builtin,2,8048,0x5574263560c0,32,FunctionPrototypeCall
+code-creation,Builtin,2,8060,0x557426356100,12,FunctionPrototypeToString
+code-creation,Builtin,2,8073,0x557426356120,196,CreateIterResultObject
+code-creation,Builtin,2,8090,0x557426356200,808,CreateGeneratorObject
+code-creation,Builtin,2,8102,0x557426356540,12,GeneratorFunctionConstructor
+code-creation,Builtin,2,8115,0x557426356560,400,GeneratorPrototypeNext
+code-creation,Builtin,2,8128,0x557426356700,396,GeneratorPrototypeReturn
+code-creation,Builtin,2,8140,0x5574263568a0,400,GeneratorPrototypeThrow
+code-creation,Builtin,2,8153,0x557426356a40,12,AsyncFunctionConstructor
+code-creation,Builtin,2,8165,0x557426356a60,36,GetIteratorWithFeedbackLazyDeoptContinuation
+code-creation,Builtin,2,8179,0x557426356aa0,12,GlobalDecodeURI
+code-creation,Builtin,2,8191,0x557426356ac0,12,GlobalDecodeURIComponent
+code-creation,Builtin,2,8204,0x557426356ae0,12,GlobalEncodeURI
+code-creation,Builtin,2,8216,0x557426356b00,12,GlobalEncodeURIComponent
+code-creation,Builtin,2,8229,0x557426356b20,12,GlobalEscape
+code-creation,Builtin,2,8241,0x557426356b40,12,GlobalUnescape
+code-creation,Builtin,2,8253,0x557426356b60,12,GlobalEval
+code-creation,Builtin,2,8267,0x557426356b80,136,GlobalIsFinite
+code-creation,Builtin,2,8280,0x557426356c20,132,GlobalIsNaN
+code-creation,Builtin,2,8291,0x557426356cc0,12,JsonParse
+code-creation,Builtin,2,8303,0x557426356ce0,12,JsonStringify
+code-creation,Builtin,2,8315,0x557426356d00,4004,LoadIC
+code-creation,Builtin,2,8326,0x557426357cc0,3816,LoadIC_Megamorphic
+code-creation,Builtin,2,8339,0x557426358bc0,3848,LoadIC_Noninlined
+code-creation,Builtin,2,8351,0x557426359ae0,48,LoadICTrampoline
+code-creation,Builtin,2,8363,0x557426359b20,24,LoadICBaseline
+code-creation,Builtin,2,8375,0x557426359b40,48,LoadICTrampoline_Megamorphic
+code-creation,Builtin,2,8388,0x557426359b80,6856,LoadSuperIC
+code-creation,Builtin,2,8400,0x55742635b660,24,LoadSuperICBaseline
+code-creation,Builtin,2,8412,0x55742635b680,7232,KeyedLoadIC
+code-creation,Builtin,2,8424,0x55742635d2e0,12344,KeyedLoadIC_Megamorphic
+code-creation,Builtin,2,8436,0x557426360320,48,KeyedLoadICTrampoline
+code-creation,Builtin,2,8448,0x557426360360,24,KeyedLoadICBaseline
+code-creation,Builtin,2,8461,0x557426360380,48,KeyedLoadICTrampoline_Megamorphic
+code-creation,Builtin,2,8474,0x5574263603c0,5600,StoreGlobalIC
+code-creation,Builtin,2,8486,0x5574263619c0,48,StoreGlobalICTrampoline
+code-creation,Builtin,2,8498,0x557426361a00,24,StoreGlobalICBaseline
+code-creation,Builtin,2,8510,0x557426361a20,5924,StoreIC
+code-creation,Builtin,2,8522,0x557426363160,52,StoreICTrampoline
+code-creation,Builtin,2,8539,0x5574263631a0,24,StoreICBaseline
+code-creation,Builtin,2,8551,0x5574263631c0,6400,KeyedStoreIC
+code-creation,Builtin,2,8563,0x557426364ae0,52,KeyedStoreICTrampoline
+code-creation,Builtin,2,8575,0x557426364b20,24,KeyedStoreICBaseline
+code-creation,Builtin,2,8588,0x557426364b40,500,StoreInArrayLiteralIC
+code-creation,Builtin,2,8600,0x557426364d40,24,StoreInArrayLiteralICBaseline
+code-creation,Builtin,2,8613,0x557426364d60,152,LookupContextBaseline
+code-creation,Builtin,2,8626,0x557426364e00,152,LookupContextInsideTypeofBaseline
+code-creation,Builtin,2,8639,0x557426364ea0,2768,LoadGlobalIC
+code-creation,Builtin,2,8651,0x557426365980,2748,LoadGlobalICInsideTypeof
+code-creation,Builtin,2,8665,0x557426366440,48,LoadGlobalICTrampoline
+code-creation,Builtin,2,8678,0x557426366480,24,LoadGlobalICBaseline
+code-creation,Builtin,2,8690,0x5574263664a0,48,LoadGlobalICInsideTypeofTrampoline
+code-creation,Builtin,2,8703,0x5574263664e0,24,LoadGlobalICInsideTypeofBaseline
+code-creation,Builtin,2,8716,0x557426366500,156,LookupGlobalICBaseline
+code-creation,Builtin,2,8729,0x5574263665a0,156,LookupGlobalICInsideTypeofBaseline
+code-creation,Builtin,2,8742,0x557426366640,2148,CloneObjectIC
+code-creation,Builtin,2,8754,0x557426366ec0,24,CloneObjectICBaseline
+code-creation,Builtin,2,8766,0x557426366ee0,2128,CloneObjectIC_Slow
+code-creation,Builtin,2,8778,0x557426367740,2552,KeyedHasIC
+code-creation,Builtin,2,8790,0x557426368140,24,KeyedHasICBaseline
+code-creation,Builtin,2,8802,0x557426368160,2320,KeyedHasIC_Megamorphic
+code-creation,Builtin,2,8815,0x557426368a80,1464,IterableToList
+code-creation,Builtin,2,8827,0x557426369040,1276,IterableToFixedArray
+code-creation,Builtin,2,8843,0x557426369540,780,IterableToListWithSymbolLookup
+code-creation,Builtin,2,8856,0x557426369860,56,IterableToFixedArrayWithSymbolLookupSlow
+code-creation,Builtin,2,8870,0x5574263698a0,128,IterableToListMayPreserveHoles
+code-creation,Builtin,2,8883,0x557426369940,1012,IterableToFixedArrayForWasm
+code-creation,Builtin,2,8895,0x557426369d40,1660,StringListFromIterable
+code-creation,Builtin,2,8908,0x55742636a3c0,1284,FindOrderedHashMapEntry
+code-creation,Builtin,2,8921,0x55742636a8e0,4360,MapConstructor
+code-creation,Builtin,2,8933,0x55742636ba00,2100,MapPrototypeSet
+code-creation,Builtin,2,8945,0x55742636c240,1616,MapPrototypeDelete
+code-creation,Builtin,2,8957,0x55742636c8a0,220,MapPrototypeGet
+code-creation,Builtin,2,8969,0x55742636c980,168,MapPrototypeHas
+code-creation,Builtin,2,8981,0x55742636ca40,12,MapPrototypeClear
+code-creation,Builtin,2,8993,0x55742636ca60,284,MapPrototypeEntries
+code-creation,Builtin,2,9006,0x55742636cb80,144,MapPrototypeGetSize
+code-creation,Builtin,2,9018,0x55742636cc20,520,MapPrototypeForEach
+code-creation,Builtin,2,9030,0x55742636ce40,284,MapPrototypeKeys
+code-creation,Builtin,2,9042,0x55742636cf60,284,MapPrototypeValues
+code-creation,Builtin,2,9054,0x55742636d080,972,MapIteratorPrototypeNext
+code-creation,Builtin,2,9069,0x55742636d460,1264,MapIteratorToList
+code-creation,Builtin,2,9081,0x55742636d960,12,NumberPrototypeToExponential
+code-creation,Builtin,2,9094,0x55742636d980,12,NumberPrototypeToFixed
+code-creation,Builtin,2,9106,0x55742636d9a0,12,NumberPrototypeToLocaleString
+code-creation,Builtin,2,9119,0x55742636d9c0,12,NumberPrototypeToPrecision
+code-creation,Builtin,2,9132,0x55742636d9e0,336,SameValue
+code-creation,Builtin,2,9144,0x55742636db40,200,SameValueNumbersOnly
+code-creation,Builtin,2,9156,0x55742636dc20,772,Add_Baseline
+code-creation,Builtin,2,9168,0x55742636df40,816,Subtract_Baseline
+code-creation,Builtin,2,9180,0x55742636e280,912,Multiply_Baseline
+code-creation,Builtin,2,9192,0x55742636e620,792,Divide_Baseline
+code-creation,Builtin,2,9204,0x55742636e940,840,Modulus_Baseline
+code-creation,Builtin,2,9216,0x55742636eca0,76,Exponentiate_Baseline
+code-creation,Builtin,2,9228,0x55742636ed00,816,BitwiseAnd_Baseline
+code-creation,Builtin,2,9241,0x55742636f040,820,BitwiseOr_Baseline
+code-creation,Builtin,2,9253,0x55742636f380,816,BitwiseXor_Baseline
+code-creation,Builtin,2,9265,0x55742636f6c0,836,ShiftLeft_Baseline
+code-creation,Builtin,2,9277,0x55742636fa20,836,ShiftRight_Baseline
+code-creation,Builtin,2,9290,0x55742636fd80,840,ShiftRightLogical_Baseline
+code-creation,Builtin,2,9302,0x5574263700e0,696,Add_WithFeedback
+code-creation,Builtin,2,9314,0x5574263703a0,764,Subtract_WithFeedback
+code-creation,Builtin,2,9327,0x5574263706a0,880,Multiply_WithFeedback
+code-creation,Builtin,2,9339,0x557426370a20,784,Divide_WithFeedback
+code-creation,Builtin,2,9351,0x557426370d40,824,Modulus_WithFeedback
+code-creation,Builtin,2,9364,0x557426371080,52,Exponentiate_WithFeedback
+code-creation,Builtin,2,9376,0x5574263710c0,788,BitwiseAnd_WithFeedback
+code-creation,Builtin,2,9389,0x5574263713e0,780,BitwiseOr_WithFeedback
+code-creation,Builtin,2,9401,0x557426371700,788,BitwiseXor_WithFeedback
+code-creation,Builtin,2,9413,0x557426371a20,800,ShiftLeft_WithFeedback
+code-creation,Builtin,2,9426,0x557426371d60,800,ShiftRight_WithFeedback
+code-creation,Builtin,2,9438,0x5574263720a0,808,ShiftRightLogical_WithFeedback
+code-creation,Builtin,2,9451,0x5574263723e0,1588,Equal_Baseline
+code-creation,Builtin,2,9465,0x557426372a20,848,StrictEqual_Baseline
+code-creation,Builtin,2,9477,0x557426372d80,1220,LessThan_Baseline
+code-creation,Builtin,2,9489,0x557426373260,1220,GreaterThan_Baseline
+code-creation,Builtin,2,9502,0x557426373740,1220,LessThanOrEqual_Baseline
+code-creation,Builtin,2,9514,0x557426373c20,1220,GreaterThanOrEqual_Baseline
+code-creation,Builtin,2,9527,0x557426374100,1560,Equal_WithFeedback
+code-creation,Builtin,2,9539,0x557426374720,884,StrictEqual_WithFeedback
+code-creation,Builtin,2,9552,0x557426374aa0,1204,LessThan_WithFeedback
+code-creation,Builtin,2,9564,0x557426374f60,1204,GreaterThan_WithFeedback
+code-creation,Builtin,2,9580,0x557426375420,1204,LessThanOrEqual_WithFeedback
+tick,0x557425c38bd0,9617,0,0x0,6
+tick,0x7f36630a9f09,9659,0,0x0,6
+tick,0x5574264606de,9675,0,0x0,6
+tick,0x7f3662e68f6f,9690,0,0x0,6
+tick,0x7f3662dfac6d,9705,0,0x0,6
+tick,0x5574259875be,9719,0,0x0,6
+code-creation,Builtin,2,9734,0x5574263758e0,1204,GreaterThanOrEqual_WithFeedback
+code-creation,Builtin,2,9748,0x557426375da0,448,BitwiseNot_Baseline
+code-creation,Builtin,2,9757,0x557426375f80,448,Decrement_Baseline
+code-creation,Builtin,2,9766,0x557426376160,448,Increment_Baseline
+code-creation,Builtin,2,9774,0x557426376340,472,Negate_Baseline
+code-creation,Builtin,2,9783,0x557426376520,424,BitwiseNot_WithFeedback
+code-creation,Builtin,2,9792,0x5574263766e0,420,Decrement_WithFeedback
+code-creation,Builtin,2,9801,0x5574263768a0,420,Increment_WithFeedback
+code-creation,Builtin,2,9810,0x557426376a60,444,Negate_WithFeedback
+code-creation,Builtin,2,9818,0x557426376c20,256,ObjectAssign
+code-creation,Builtin,2,9827,0x557426376d40,924,ObjectCreate
+code-creation,Builtin,2,9835,0x5574263770e0,12,ObjectDefineGetter
+code-creation,Builtin,2,9844,0x557426377100,12,ObjectDefineProperties
+code-creation,Builtin,2,9853,0x557426377120,12,ObjectDefineProperty
+code-creation,Builtin,2,9862,0x557426377140,12,ObjectDefineSetter
+code-creation,Builtin,2,9870,0x557426377160,1592,ObjectEntries
+code-creation,Builtin,2,9879,0x5574263777a0,12,ObjectFreeze
+code-creation,Builtin,2,9887,0x5574263777c0,6300,ObjectGetOwnPropertyDescriptor
+code-creation,Builtin,2,9897,0x557426379060,12,ObjectGetOwnPropertyDescriptors
+code-creation,Builtin,2,9906,0x557426379080,612,ObjectGetOwnPropertyNames
+code-creation,Builtin,2,9915,0x557426379300,12,ObjectGetOwnPropertySymbols
+code-creation,Builtin,2,9925,0x557426379320,396,ObjectIs
+code-creation,Builtin,2,9935,0x5574263794c0,12,ObjectIsFrozen
+code-creation,Builtin,2,9943,0x5574263794e0,12,ObjectIsSealed
+code-creation,Builtin,2,9952,0x557426379500,552,ObjectKeys
+code-creation,Builtin,2,9960,0x557426379740,12,ObjectLookupGetter
+code-creation,Builtin,2,9969,0x557426379760,12,ObjectLookupSetter
+code-creation,Builtin,2,9978,0x557426379780,1896,ObjectPrototypeHasOwnProperty
+code-creation,Builtin,2,9987,0x557426379f00,244,ObjectPrototypeIsPrototypeOf
+code-creation,Builtin,2,9997,0x55742637a000,12,ObjectPrototypePropertyIsEnumerable
+code-creation,Builtin,2,10006,0x55742637a020,12,ObjectPrototypeGetProto
+code-creation,Builtin,2,10016,0x55742637a040,12,ObjectPrototypeSetProto
+code-creation,Builtin,2,10025,0x55742637a060,12,ObjectSeal
+code-creation,Builtin,2,10033,0x55742637a080,1180,ObjectToString
+code-creation,Builtin,2,10041,0x55742637a520,1328,ObjectValues
+code-creation,Builtin,2,10050,0x55742637aa60,312,OrdinaryHasInstance
+code-creation,Builtin,2,10059,0x55742637aba0,364,InstanceOf
+code-creation,Builtin,2,10067,0x55742637ad20,684,InstanceOf_WithFeedback
+code-creation,Builtin,2,10076,0x55742637afe0,708,InstanceOf_Baseline
+code-creation,Builtin,2,10084,0x55742637b2c0,280,ForInEnumerate
+code-creation,Builtin,2,10093,0x55742637b3e0,144,ForInPrepare
+code-creation,Builtin,2,10101,0x55742637b480,2264,ForInFilter
+code-creation,Builtin,2,10110,0x55742637bd60,56,ReflectApply
+code-creation,Builtin,2,10118,0x55742637bda0,64,ReflectConstruct
+code-creation,Builtin,2,10126,0x55742637be00,12,ReflectDefineProperty
+code-creation,Builtin,2,10135,0x55742637be20,12,ReflectGetOwnPropertyDescriptor
+code-creation,Builtin,2,10145,0x55742637be40,12,ReflectOwnKeys
+code-creation,Builtin,2,10153,0x55742637be60,12,ReflectSet
+code-creation,Builtin,2,10161,0x55742637be80,12,RegExpCapture1Getter
+code-creation,Builtin,2,10170,0x55742637bea0,12,RegExpCapture2Getter
+code-creation,Builtin,2,10179,0x55742637bec0,12,RegExpCapture3Getter
+code-creation,Builtin,2,10188,0x55742637bee0,12,RegExpCapture4Getter
+code-creation,Builtin,2,10197,0x55742637bf00,12,RegExpCapture5Getter
+code-creation,Builtin,2,10206,0x55742637bf20,12,RegExpCapture6Getter
+code-creation,Builtin,2,10216,0x55742637bf40,12,RegExpCapture7Getter
+code-creation,Builtin,2,10225,0x55742637bf60,12,RegExpCapture8Getter
+code-creation,Builtin,2,10238,0x55742637bf80,12,RegExpCapture9Getter
+code-creation,Builtin,2,10247,0x55742637bfa0,2312,RegExpConstructor
+code-creation,Builtin,2,10256,0x55742637c8c0,12,RegExpInputGetter
+code-creation,Builtin,2,10264,0x55742637c8e0,12,RegExpInputSetter
+code-creation,Builtin,2,10273,0x55742637c900,12,RegExpLastMatchGetter
+code-creation,Builtin,2,10282,0x55742637c920,12,RegExpLastParenGetter
+code-creation,Builtin,2,10291,0x55742637c940,12,RegExpLeftContextGetter
+code-creation,Builtin,2,10300,0x55742637c960,940,RegExpPrototypeCompile
+code-creation,Builtin,2,10309,0x55742637cd20,12,RegExpPrototypeToString
+code-creation,Builtin,2,10318,0x55742637cd40,12,RegExpRightContextGetter
+code-creation,Builtin,2,10327,0x55742637cd60,280,RegExpExecAtom
+code-creation,Builtin,2,10335,0x55742637ce80,1052,RegExpExecInternal
+code-creation,Builtin,2,10344,0x55742637d2a0,8,RegExpInterpreterTrampoline
+code-creation,Builtin,2,10353,0x55742637d2c0,8,RegExpExperimentalTrampoline
+code-creation,Builtin,2,10362,0x55742637d2e0,2792,SetConstructor
+code-creation,Builtin,2,10371,0x55742637dde0,1360,SetPrototypeHas
+code-creation,Builtin,2,10379,0x55742637e340,1800,SetPrototypeAdd
+code-creation,Builtin,2,10388,0x55742637ea60,1564,SetPrototypeDelete
+code-creation,Builtin,2,10397,0x55742637f080,12,SetPrototypeClear
+code-creation,Builtin,2,10405,0x55742637f0a0,284,SetPrototypeEntries
+code-creation,Builtin,2,10414,0x55742637f1c0,144,SetPrototypeGetSize
+code-creation,Builtin,2,10423,0x55742637f260,480,SetPrototypeForEach
+code-creation,Builtin,2,10431,0x55742637f460,284,SetPrototypeValues
+code-creation,Builtin,2,10440,0x55742637f580,908,SetIteratorPrototypeNext
+code-creation,Builtin,2,10449,0x55742637f920,1200,SetOrSetIteratorToList
+code-creation,Builtin,2,10458,0x55742637fde0,12,SharedArrayBufferPrototypeSlice
+code-creation,Builtin,2,10467,0x55742637fe00,1316,AtomicsLoad
+code-creation,Builtin,2,10476,0x557426380340,1008,AtomicsStore
+code-creation,Builtin,2,10484,0x557426380740,1736,AtomicsExchange
+code-creation,Builtin,2,10493,0x557426380e20,2152,AtomicsCompareExchange
+code-creation,Builtin,2,10504,0x5574263816a0,1860,AtomicsAdd
+code-creation,Builtin,2,10512,0x557426381e00,1860,AtomicsSub
+code-creation,Builtin,2,10520,0x557426382560,1860,AtomicsAnd
+code-creation,Builtin,2,10529,0x557426382cc0,1860,AtomicsOr
+code-creation,Builtin,2,10537,0x557426383420,1860,AtomicsXor
+code-creation,Builtin,2,10545,0x557426383b80,12,AtomicsNotify
+code-creation,Builtin,2,10553,0x557426383ba0,12,AtomicsIsLockFree
+code-creation,Builtin,2,10562,0x557426383bc0,12,AtomicsWait
+code-creation,Builtin,2,10570,0x557426383be0,12,AtomicsWaitAsync
+code-creation,Builtin,2,10579,0x557426383c00,12,StringFromCodePoint
+code-creation,Builtin,2,10588,0x557426383c20,1476,StringFromCharCode
+code-creation,Builtin,2,10596,0x557426384200,12,StringPrototypeLastIndexOf
+code-creation,Builtin,2,10606,0x557426384220,4660,StringPrototypeMatchAll
+code-creation,Builtin,2,10615,0x557426385460,12,StringPrototypeLocaleCompare
+code-creation,Builtin,2,10624,0x557426385480,1300,StringPrototypeReplace
+code-creation,Builtin,2,10633,0x5574263859a0,3060,StringPrototypeSplit
+code-creation,Builtin,2,10642,0x5574263865a0,12,StringRaw
+code-creation,Builtin,2,10660,0x5574263865c0,12,SymbolConstructor
+code-creation,Builtin,2,10672,0x5574263865e0,12,SymbolFor
+code-creation,Builtin,2,10684,0x557426386600,12,SymbolKeyFor
+code-creation,Builtin,2,10696,0x557426386620,84,TypedArrayBaseConstructor
+code-creation,Builtin,2,10709,0x557426386680,260,TypedArrayConstructor
+code-creation,Builtin,2,10721,0x5574263867a0,12,TypedArrayPrototypeBuffer
+code-creation,Builtin,2,10734,0x5574263867c0,292,TypedArrayPrototypeByteLength
+code-creation,Builtin,2,10747,0x557426386900,292,TypedArrayPrototypeByteOffset
+code-creation,Builtin,2,10760,0x557426386a40,292,TypedArrayPrototypeLength
+code-creation,Builtin,2,10773,0x557426386b80,12,TypedArrayPrototypeCopyWithin
+code-creation,Builtin,2,10785,0x557426386ba0,12,TypedArrayPrototypeFill
+code-creation,Builtin,2,10798,0x557426386bc0,12,TypedArrayPrototypeIncludes
+code-creation,Builtin,2,10815,0x557426386be0,12,TypedArrayPrototypeIndexOf
+code-creation,Builtin,2,10828,0x557426386c00,12,TypedArrayPrototypeLastIndexOf
+code-creation,Builtin,2,10841,0x557426386c20,12,TypedArrayPrototypeReverse
+code-creation,Builtin,2,10855,0x557426386c40,320,TypedArrayPrototypeToStringTag
+code-creation,Builtin,2,10869,0x557426386da0,10692,TypedArrayPrototypeMap
+code-creation,Builtin,2,10881,0x557426389780,836,GenericJSToWasmWrapper
+code-creation,Builtin,2,10894,0x557426389ae0,148,WasmCompileLazy
+code-creation,Builtin,2,10906,0x557426389b80,168,WasmDebugBreak
+code-creation,Builtin,2,10918,0x557426389c40,140,WasmFloat32ToNumber
+code-creation,Builtin,2,10930,0x557426389ce0,164,WasmFloat64ToNumber
+code-creation,Builtin,2,10943,0x557426389da0,4,WasmI32AtomicWait32
+code-creation,Builtin,2,10955,0x557426389dc0,4,WasmI64AtomicWait32
+code-creation,Builtin,2,10967,0x557426389de0,24,JSToWasmLazyDeoptContinuation
+code-creation,Builtin,2,10980,0x557426389e00,4596,WeakMapConstructor
+code-creation,Builtin,2,10993,0x55742638b000,212,WeakMapLookupHashIndex
+code-creation,Builtin,2,11005,0x55742638b0e0,204,WeakMapGet
+code-creation,Builtin,2,11017,0x55742638b1c0,176,WeakMapPrototypeHas
+code-creation,Builtin,2,11029,0x55742638b280,200,WeakMapPrototypeSet
+code-creation,Builtin,2,11042,0x55742638b360,144,WeakMapPrototypeDelete
+code-creation,Builtin,2,11054,0x55742638b400,3044,WeakSetConstructor
+code-creation,Builtin,2,11066,0x55742638c000,176,WeakSetPrototypeHas
+code-creation,Builtin,2,11079,0x55742638c0c0,200,WeakSetPrototypeAdd
+code-creation,Builtin,2,11091,0x55742638c1a0,144,WeakSetPrototypeDelete
+code-creation,Builtin,2,11103,0x55742638c240,424,WeakCollectionDelete
+code-creation,Builtin,2,11116,0x55742638c400,864,WeakCollectionSet
+code-creation,Builtin,2,11128,0x55742638c780,332,AsyncGeneratorResolve
+code-creation,Builtin,2,11140,0x55742638c8e0,120,AsyncGeneratorReject
+code-creation,Builtin,2,11153,0x55742638c960,1260,AsyncGeneratorYield
+code-creation,Builtin,2,11165,0x55742638ce60,1332,AsyncGeneratorReturn
+code-creation,Builtin,2,11178,0x55742638d3a0,308,AsyncGeneratorResumeNext
+code-creation,Builtin,2,11190,0x55742638d4e0,12,AsyncGeneratorFunctionConstructor
+code-creation,Builtin,2,11203,0x55742638d500,892,AsyncGeneratorPrototypeNext
+code-creation,Builtin,2,11216,0x55742638d880,892,AsyncGeneratorPrototypeReturn
+code-creation,Builtin,2,11229,0x55742638dc00,892,AsyncGeneratorPrototypeThrow
+code-creation,Builtin,2,11242,0x55742638df80,1252,AsyncGeneratorAwaitCaught
+code-creation,Builtin,2,11256,0x55742638e480,1252,AsyncGeneratorAwaitUncaught
+code-creation,Builtin,2,11269,0x55742638e980,120,AsyncGeneratorAwaitResolveClosure
+code-creation,Builtin,2,11282,0x55742638ea00,124,AsyncGeneratorAwaitRejectClosure
+code-creation,Builtin,2,11295,0x55742638ea80,124,AsyncGeneratorYieldResolveClosure
+code-creation,Builtin,2,11309,0x55742638eb00,124,AsyncGeneratorReturnClosedResolveClosure
+code-creation,Builtin,2,11322,0x55742638eb80,116,AsyncGeneratorReturnClosedRejectClosure
+code-creation,Builtin,2,11336,0x55742638ec00,124,AsyncGeneratorReturnResolveClosure
+code-creation,Builtin,2,11349,0x55742638ec80,1444,AsyncFromSyncIteratorPrototypeNext
+code-creation,Builtin,2,11362,0x55742638f240,1552,AsyncFromSyncIteratorPrototypeThrow
+code-creation,Builtin,2,11376,0x55742638f860,1572,AsyncFromSyncIteratorPrototypeReturn
+code-creation,Builtin,2,11389,0x55742638fea0,100,AsyncIteratorValueUnwrap
+code-creation,Builtin,2,11402,0x55742638ff20,228,CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit
+code-creation,Builtin,2,11416,0x557426390020,228,CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit
+code-creation,Builtin,2,11431,0x557426390120,212,CEntry_Return1_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit
+code-creation,Builtin,2,11446,0x557426390200,404,CEntry_Return1_SaveFPRegs_ArgvOnStack_NoBuiltinExit
+code-creation,Builtin,2,11460,0x5574263903a0,404,CEntry_Return1_SaveFPRegs_ArgvOnStack_BuiltinExit
+code-creation,Builtin,2,11475,0x557426390540,228,CEntry_Return2_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit
+code-creation,Builtin,2,11489,0x557426390640,228,CEntry_Return2_DontSaveFPRegs_ArgvOnStack_BuiltinExit
+code-creation,Builtin,2,11508,0x557426390740,212,CEntry_Return2_DontSaveFPRegs_ArgvInRegister_NoBuiltinExit
+code-creation,Builtin,2,11523,0x557426390820,404,CEntry_Return2_SaveFPRegs_ArgvOnStack_NoBuiltinExit
+code-creation,Builtin,2,11537,0x5574263909c0,404,CEntry_Return2_SaveFPRegs_ArgvOnStack_BuiltinExit
+code-creation,Builtin,2,11551,0x557426390b60,4,DirectCEntry
+code-creation,Builtin,2,11563,0x557426390b80,1136,StringAdd_CheckNone
+code-creation,Builtin,2,11575,0x557426391000,2600,SubString
+code-creation,Builtin,2,11587,0x557426391a40,16,StackCheck
+code-creation,Builtin,2,11599,0x557426391a60,84,DoubleToI
+code-creation,Builtin,2,11611,0x557426391ac0,2364,GetProperty
+code-creation,Builtin,2,11623,0x557426392400,2468,GetPropertyWithReceiver
+code-creation,Builtin,2,11636,0x557426392dc0,16988,SetProperty
+code-creation,Builtin,2,11647,0x557426397020,14512,SetPropertyInLiteral
+code-creation,Builtin,2,11660,0x55742639a8e0,8,MemCopyUint8Uint8
+code-creation,Builtin,2,11673,0x55742639a900,8,MemMove
+code-creation,Builtin,2,11687,0x55742639a920,12,IsTraceCategoryEnabled
+code-creation,Builtin,2,11701,0x55742639a940,12,Trace
+tick,0x7f3662e68f6f,11718,0,0x0,6
+tick,0x7f36630a9f09,11736,0,0x0,6
+code-creation,Builtin,2,11751,0x55742639a960,12,FinalizationRegistryUnregister
+code-creation,Builtin,2,11764,0x55742639a980,400,AsyncModuleEvaluate
+code-creation,Builtin,2,11773,0x55742639ab20,12,CallAsyncModuleFulfilled
+code-creation,Builtin,2,11783,0x55742639ab40,12,CallAsyncModuleRejected
+code-creation,Builtin,2,11792,0x55742639ab60,236,AggregateErrorConstructor
+code-creation,Builtin,2,11802,0x55742639ac60,880,ArrayPrototypeAt
+code-creation,Builtin,2,11810,0x55742639afe0,5892,ArrayPrototypeCopyWithin
+code-creation,Builtin,2,11820,0x55742639c700,224,ArrayEveryLoopEagerDeoptContinuation
+code-creation,Builtin,2,11830,0x55742639c800,628,ArrayEveryLoopLazyDeoptContinuation
+code-creation,Builtin,2,11840,0x55742639ca80,2916,ArrayEveryLoopContinuation
+code-creation,Builtin,2,11849,0x55742639d600,1532,ArrayEvery
+code-creation,Builtin,2,11858,0x55742639dc00,292,ArrayFilterLoopEagerDeoptContinuation
+code-creation,Builtin,2,11868,0x55742639dd40,1000,ArrayFilterLoopLazyDeoptContinuation
+code-creation,Builtin,2,11878,0x55742639e140,3240,ArrayFilterLoopContinuation
+code-creation,Builtin,2,11888,0x55742639ee00,4504,ArrayFilter
+code-creation,Builtin,2,11896,0x55742639ffa0,208,ArrayFindLoopEagerDeoptContinuation
+code-creation,Builtin,2,11907,0x5574263a0080,32,ArrayFindLoopLazyDeoptContinuation
+code-creation,Builtin,2,11917,0x5574263a00c0,332,ArrayFindLoopAfterCallbackLazyDeoptContinuation
+code-creation,Builtin,2,11927,0x5574263a0220,540,ArrayFindLoopContinuation
+code-creation,Builtin,2,11937,0x5574263a0440,1520,ArrayPrototypeFind
+code-creation,Builtin,2,11946,0x5574263a0a40,208,ArrayFindIndexLoopEagerDeoptContinuation
+code-creation,Builtin,2,11956,0x5574263a0b20,32,ArrayFindIndexLoopLazyDeoptContinuation
+code-creation,Builtin,2,11966,0x5574263a0b60,332,ArrayFindIndexLoopAfterCallbackLazyDeoptContinuation
+code-creation,Builtin,2,11977,0x5574263a0cc0,532,ArrayFindIndexLoopContinuation
+code-creation,Builtin,2,11986,0x5574263a0ee0,1516,ArrayPrototypeFindIndex
+code-creation,Builtin,2,11995,0x5574263a14e0,224,ArrayForEachLoopEagerDeoptContinuation
+code-creation,Builtin,2,12005,0x5574263a15e0,224,ArrayForEachLoopLazyDeoptContinuation
+code-creation,Builtin,2,12015,0x5574263a16e0,2808,ArrayForEachLoopContinuation
+code-creation,Builtin,2,12024,0x5574263a21e0,1364,ArrayForEach
+code-creation,Builtin,2,12033,0x5574263a2740,3780,ArrayFrom
+code-creation,Builtin,2,12043,0x5574263a3620,164,ArrayIsArray
+code-creation,Builtin,2,12051,0x5574263a36e0,432,LoadJoinElement_DictionaryElements_0
+code-creation,Builtin,2,12061,0x5574263a38a0,48,LoadJoinElement_FastSmiOrObjectElements_0
+code-creation,Builtin,2,12072,0x5574263a38e0,144,LoadJoinElement_FastDoubleElements_0
+code-creation,Builtin,2,12081,0x5574263a3980,332,ConvertToLocaleString
+code-creation,Builtin,2,12090,0x5574263a3ae0,812,JoinStackPush
+code-creation,Builtin,2,12099,0x5574263a3e20,280,JoinStackPop
+code-creation,Builtin,2,12111,0x5574263a3f40,6944,ArrayPrototypeJoin
+code-creation,Builtin,2,12120,0x5574263a5a80,5580,ArrayPrototypeToLocaleString
+code-creation,Builtin,2,12129,0x5574263a7060,244,ArrayPrototypeToString
+code-creation,Builtin,2,12138,0x5574263a7160,6220,TypedArrayPrototypeJoin
+code-creation,Builtin,2,12147,0x5574263a89c0,4840,TypedArrayPrototypeToLocaleString
+code-creation,Builtin,2,12157,0x5574263a9cc0,3888,ArrayPrototypeLastIndexOf
+code-creation,Builtin,2,12166,0x5574263aac00,264,ArrayMapPreLoopLazyDeoptContinuation
+code-creation,Builtin,2,12175,0x5574263aad20,264,ArrayMapLoopEagerDeoptContinuation
+code-creation,Builtin,2,12185,0x5574263aae40,552,ArrayMapLoopLazyDeoptContinuation
+code-creation,Builtin,2,12195,0x5574263ab080,2848,ArrayMapLoopContinuation
+code-creation,Builtin,2,12204,0x5574263abbc0,3956,ArrayMap
+code-creation,Builtin,2,12212,0x5574263acb40,1016,ArrayOf
+code-creation,Builtin,2,12220,0x5574263acf40,452,ArrayReduceRightPreLoopEagerDeoptContinuation
+code-creation,Builtin,2,12230,0x5574263ad120,208,ArrayReduceRightLoopEagerDeoptContinuation
+code-creation,Builtin,2,12240,0x5574263ad200,208,ArrayReduceRightLoopLazyDeoptContinuation
+code-creation,Builtin,2,12250,0x5574263ad2e0,2820,ArrayReduceRightLoopContinuation
+code-creation,Builtin,2,12260,0x5574263ade00,2076,ArrayReduceRight
+code-creation,Builtin,2,12268,0x5574263ae620,188,ArrayReducePreLoopEagerDeoptContinuation
+code-creation,Builtin,2,12278,0x5574263ae6e0,208,ArrayReduceLoopEagerDeoptContinuation
+code-creation,Builtin,2,12288,0x5574263ae7c0,208,ArrayReduceLoopLazyDeoptContinuation
+code-creation,Builtin,2,12298,0x5574263ae8a0,2884,ArrayReduceLoopContinuation
+code-creation,Builtin,2,12307,0x5574263af400,1652,ArrayReduce
+code-creation,Builtin,2,12315,0x5574263afa80,3420,ArrayPrototypeReverse
+code-creation,Builtin,2,12324,0x5574263b07e0,3724,ArrayPrototypeShift
+code-creation,Builtin,2,12333,0x5574263b1680,5360,ArrayPrototypeSlice
+code-creation,Builtin,2,12343,0x5574263b2b80,224,ArraySomeLoopEagerDeoptContinuation
+code-creation,Builtin,2,12353,0x5574263b2c80,596,ArraySomeLoopLazyDeoptContinuation
+code-creation,Builtin,2,12363,0x5574263b2ee0,2900,ArraySomeLoopContinuation
+code-creation,Builtin,2,12372,0x5574263b3a40,1516,ArraySome
+code-creation,Builtin,2,12380,0x5574263b4040,15124,ArrayPrototypeSplice
+code-creation,Builtin,2,12389,0x5574263b7b60,3440,ArrayPrototypeUnshift
+code-creation,Builtin,2,12398,0x5574263b88e0,324,ArrayBufferPrototypeGetByteLength
+code-creation,Builtin,2,12407,0x5574263b8a40,324,SharedArrayBufferPrototypeGetByteLength
+code-creation,Builtin,2,12417,0x5574263b8ba0,104,ArrayBufferIsView
+code-creation,Builtin,2,12426,0x5574263b8c20,396,ToInteger
+code-creation,Builtin,2,12434,0x5574263b8dc0,3364,FastCreateDataProperty
+code-creation,Builtin,2,12443,0x5574263b9b00,672,CheckNumberInRange
+code-creation,Builtin,2,12452,0x5574263b9dc0,648,CheckSameObject
+code-creation,Builtin,2,12460,0x5574263ba060,952,BooleanConstructor
+code-creation,Builtin,2,12469,0x5574263ba420,164,BooleanPrototypeToString
+code-creation,Builtin,2,12478,0x5574263ba4e0,160,BooleanPrototypeValueOf
+code-creation,Builtin,2,12487,0x5574263ba5a0,1148,BigIntAddNoThrow
+code-creation,Builtin,2,12496,0x5574263baa20,1240,BigIntAdd
+code-creation,Builtin,2,12504,0x5574263baf00,1148,BigIntSubtractNoThrow
+code-creation,Builtin,2,12512,0x5574263bb380,1240,BigIntSubtract
+code-creation,Builtin,2,12521,0x5574263bb860,272,BigIntUnaryMinus
+code-creation,Builtin,2,12530,0x5574263bb980,1444,ToString
+code-creation,Builtin,2,12538,0x5574263bbf40,160,StringPrototypeToString
+code-creation,Builtin,2,12547,0x5574263bc000,160,StringPrototypeValueOf
+code-creation,Builtin,2,12555,0x5574263bc0c0,2604,StringToList
+code-creation,Builtin,2,12564,0x5574263bcb00,1056,StringPrototypeCharAt
+code-creation,Builtin,2,12573,0x5574263bcf40,724,StringPrototypeCharCodeAt
+code-creation,Builtin,2,12582,0x5574263bd220,1292,StringPrototypeCodePointAt
+code-creation,Builtin,2,12591,0x5574263bd740,412,StringPrototypeConcat
+code-creation,Builtin,2,12600,0x5574263bd8e0,1044,StringConstructor
+code-creation,Builtin,2,12612,0x5574263bdd00,1524,StringAddConvertLeft
+code-creation,Builtin,2,12621,0x5574263be300,1556,StringAddConvertRight
+code-creation,Builtin,2,12639,0x5574263be920,836,StringCharAt
+code-creation,Builtin,2,12648,0x5574263bec80,196,FastNewFunctionContextEval
+code-creation,Builtin,2,12657,0x5574263bed60,196,FastNewFunctionContextFunction
+code-creation,Builtin,2,12666,0x5574263bee40,260,CreateRegExpLiteral
+code-creation,Builtin,2,12675,0x5574263bef60,1136,CreateShallowArrayLiteral
+code-creation,Builtin,2,12684,0x5574263bf3e0,528,CreateEmptyArrayLiteral
+code-creation,Builtin,2,12693,0x5574263bf600,1816,CreateShallowObjectLiteral
+code-creation,Builtin,2,12702,0x5574263bfd20,412,ObjectConstructor
+code-creation,Builtin,2,12711,0x5574263bfec0,180,CreateEmptyLiteralObject
+code-creation,Builtin,2,12720,0x5574263bff80,568,NumberConstructor
+code-creation,Builtin,2,12729,0x5574263c01c0,64,GenericLazyDeoptContinuation
+code-creation,Builtin,2,12738,0x5574263c0220,60,StringToNumber
+code-creation,Builtin,2,12746,0x5574263c0260,188,NonNumberToNumber
+code-creation,Builtin,2,12755,0x5574263c0320,244,NonNumberToNumeric
+code-creation,Builtin,2,12764,0x5574263c0420,36,ToNumeric
+code-creation,Builtin,2,12772,0x5574263c0460,1252,NumberToString
+code-creation,Builtin,2,12789,0x5574263c0960,104,ToBoolean
+code-creation,Builtin,2,12801,0x5574263c09e0,740,ToLength
+code-creation,Builtin,2,12812,0x5574263c0ce0,1388,ToName
+code-creation,Builtin,2,12824,0x5574263c1260,792,ToObject
+code-creation,Builtin,2,12835,0x5574263c1580,232,NonPrimitiveToPrimitive_Default
+code-creation,Builtin,2,12848,0x5574263c1680,232,NonPrimitiveToPrimitive_Number
+code-creation,Builtin,2,12862,0x5574263c1780,232,NonPrimitiveToPrimitive_String
+code-creation,Builtin,2,12875,0x5574263c1880,336,OrdinaryToPrimitive_Number
+code-creation,Builtin,2,12887,0x5574263c19e0,336,OrdinaryToPrimitive_String
+code-creation,Builtin,2,12900,0x5574263c1b40,240,FastConsoleAssert
+code-creation,Builtin,2,12912,0x5574263c1c40,160,DataViewPrototypeGetBuffer
+code-creation,Builtin,2,12925,0x5574263c1d00,332,DataViewPrototypeGetByteLength
+code-creation,Builtin,2,12938,0x5574263c1e60,332,DataViewPrototypeGetByteOffset
+code-creation,Builtin,2,12951,0x5574263c1fc0,592,DataViewPrototypeGetUint8
+code-creation,Builtin,2,12964,0x5574263c2220,592,DataViewPrototypeGetInt8
+code-creation,Builtin,2,12977,0x5574263c2480,656,DataViewPrototypeGetUint16
+code-creation,Builtin,2,12992,0x5574263c2720,652,DataViewPrototypeGetInt16
+code-creation,Builtin,2,13005,0x5574263c29c0,816,DataViewPrototypeGetUint32
+code-creation,Builtin,2,13018,0x5574263c2d00,812,DataViewPrototypeGetInt32
+code-creation,Builtin,2,13031,0x5574263c3040,868,DataViewPrototypeGetFloat32
+code-creation,Builtin,2,13044,0x5574263c33c0,932,DataViewPrototypeGetFloat64
+code-creation,Builtin,2,13057,0x5574263c3780,984,DataViewPrototypeGetBigUint64
+code-creation,Builtin,2,13070,0x5574263c3b60,1008,DataViewPrototypeGetBigInt64
+code-creation,Builtin,2,13083,0x5574263c3f60,956,DataViewPrototypeSetUint8
+code-creation,Builtin,2,13095,0x5574263c4320,956,DataViewPrototypeSetInt8
+code-creation,Builtin,2,13108,0x5574263c46e0,1060,DataViewPrototypeSetUint16
+code-creation,Builtin,2,13121,0x5574263c4b20,1060,DataViewPrototypeSetInt16
+code-creation,Builtin,2,13133,0x5574263c4f60,1100,DataViewPrototypeSetUint32
+code-creation,Builtin,2,13146,0x5574263c53c0,1100,DataViewPrototypeSetInt32
+code-creation,Builtin,2,13159,0x5574263c5820,1064,DataViewPrototypeSetFloat32
+code-creation,Builtin,2,13172,0x5574263c5c60,1128,DataViewPrototypeSetFloat64
+code-creation,Builtin,2,13185,0x5574263c60e0,960,DataViewPrototypeSetBigUint64
+code-creation,Builtin,2,13198,0x5574263c64c0,960,DataViewPrototypeSetBigInt64
+code-creation,Builtin,2,13210,0x5574263c68a0,848,FinalizationRegistryConstructor
+code-creation,Builtin,2,13223,0x5574263c6c00,1292,FinalizationRegistryRegister
+code-creation,Builtin,2,13236,0x5574263c7120,700,FinalizationRegistryPrototypeCleanupSome
+code-creation,Builtin,2,13250,0x5574263c73e0,356,FunctionPrototypeHasInstance
+code-creation,Builtin,2,13263,0x5574263c7560,964,FastFunctionPrototypeBind
+code-creation,Builtin,2,13279,0x5574263c7940,88,IncBlockCounter
+code-creation,Builtin,2,13291,0x5574263c79a0,248,GetTemplateObject
+code-creation,Builtin,2,13304,0x5574263c7aa0,28,BytecodeBudgetInterruptFromCode
+code-creation,Builtin,2,13317,0x5574263c7ac0,88,ForInNext
+code-creation,Builtin,2,13328,0x5574263c7b20,144,GetImportMetaObjectBaseline
+code-creation,Builtin,2,13341,0x5574263c7bc0,112,GetIteratorWithFeedback
+code-creation,Builtin,2,13354,0x5574263c7c40,88,GetIteratorBaseline
+code-creation,Builtin,2,13366,0x5574263c7ca0,272,CreateAsyncFromSyncIteratorBaseline
+code-creation,Builtin,2,13380,0x5574263c7dc0,656,CallIteratorWithFeedback
+code-creation,Builtin,2,13392,0x5574263c8060,292,MathAbs
+code-creation,Builtin,2,13405,0x5574263c81a0,428,MathCeil
+code-creation,Builtin,2,13417,0x5574263c8360,432,MathFloor
+code-creation,Builtin,2,13429,0x5574263c8520,488,MathRound
+code-creation,Builtin,2,13441,0x5574263c8720,432,MathTrunc
+code-creation,Builtin,2,13453,0x5574263c88e0,360,MathPow
+code-creation,Builtin,2,13464,0x5574263c8a60,404,MathMax
+code-creation,Builtin,2,13476,0x5574263c8c00,412,MathMin
+code-creation,Builtin,2,13487,0x5574263c8da0,316,MathAcos
+code-creation,Builtin,2,13499,0x5574263c8ee0,316,MathAcosh
+code-creation,Builtin,2,13511,0x5574263c9020,316,MathAsin
+code-creation,Builtin,2,13525,0x5574263c9160,316,MathAsinh
+code-creation,Builtin,2,13538,0x5574263c92a0,316,MathAtan
+code-creation,Builtin,2,13552,0x5574263c93e0,408,MathAtan2
+code-creation,Builtin,2,13568,0x5574263c9580,316,MathAtanh
+code-creation,Builtin,2,13580,0x5574263c96c0,316,MathCbrt
+code-creation,Builtin,2,13592,0x5574263c9800,260,MathClz32
+code-creation,Builtin,2,13610,0x5574263c9920,316,MathCos
+code-creation,Builtin,2,13622,0x5574263c9a60,316,MathCosh
+code-creation,Builtin,2,13633,0x5574263c9ba0,316,MathExp
+code-creation,Builtin,2,13645,0x5574263c9ce0,316,MathExpm1
+code-creation,Builtin,2,13657,0x5574263c9e20,272,MathFround
+code-creation,Builtin,2,13669,0x5574263c9f40,392,MathImul
+code-creation,Builtin,2,13680,0x5574263ca0e0,316,MathLog
+code-creation,Builtin,2,13692,0x5574263ca220,316,MathLog1p
+code-creation,Builtin,2,13704,0x5574263ca360,316,MathLog10
+code-creation,Builtin,2,13717,0x5574263ca4a0,316,MathLog2
+code-creation,Builtin,2,13729,0x5574263ca5e0,316,MathSin
+code-creation,Builtin,2,13740,0x5574263ca720,152,MathSign
+code-creation,Builtin,2,13752,0x5574263ca7c0,316,MathSinh
+code-creation,Builtin,2,13763,0x5574263ca900,268,MathSqrt
+code-creation,Builtin,2,13775,0x5574263caa20,316,MathTan
+code-creation,Builtin,2,13787,0x5574263cab60,316,MathTanh
+code-creation,Builtin,2,13800,0x5574263caca0,1052,MathHypot
+code-creation,Builtin,2,13823,0x5574263cb0c0,312,MathRandom
+code-creation,Builtin,2,13832,0x5574263cb200,3008,NumberPrototypeToString
+code-creation,Builtin,2,13841,0x5574263cbde0,156,NumberIsFinite
+code-creation,Builtin,2,13853,0x5574263cbe80,348,NumberIsInteger
+code-creation,Builtin,2,13862,0x5574263cbfe0,128,NumberIsNaN
+code-creation,Builtin,2,13870,0x5574263cc080,376,NumberIsSafeInteger
+code-creation,Builtin,2,13879,0x5574263cc200,160,NumberPrototypeValueOf
+code-creation,Builtin,2,13888,0x5574263cc2c0,196,NumberParseFloat
+code-creation,Builtin,2,13897,0x5574263cc3a0,336,ParseInt
+code-creation,Builtin,2,13906,0x5574263cc500,84,NumberParseInt
+code-creation,Builtin,2,13914,0x5574263cc560,864,Add
+code-creation,Builtin,2,13922,0x5574263cc8e0,420,Subtract
+code-creation,Builtin,2,13931,0x5574263ccaa0,688,Multiply
+code-creation,Builtin,2,13939,0x5574263ccd60,516,Divide
+code-creation,Builtin,2,13947,0x5574263ccf80,640,Modulus
+code-creation,Builtin,2,13956,0x5574263cd220,524,Exponentiate
+code-creation,Builtin,2,13964,0x5574263cd440,428,Negate
+code-creation,Builtin,2,13972,0x5574263cd600,104,BitwiseNot
+code-creation,Builtin,2,13981,0x5574263cd680,104,Decrement
+code-creation,Builtin,2,13989,0x5574263cd700,104,Increment
+code-creation,Builtin,2,13998,0x5574263cd780,500,ShiftLeft
+code-creation,Builtin,2,14006,0x5574263cd980,500,ShiftRight
+code-creation,Builtin,2,14014,0x5574263cdb80,508,ShiftRightLogical
+code-creation,Builtin,2,14023,0x5574263cdd80,472,BitwiseAnd
+code-creation,Builtin,2,14036,0x5574263cdf60,472,BitwiseOr
+code-creation,Builtin,2,14045,0x5574263ce140,472,BitwiseXor
+code-creation,Builtin,2,14053,0x5574263ce320,784,LessThan
+code-creation,Builtin,2,14062,0x5574263ce640,784,LessThanOrEqual
+code-creation,Builtin,2,14071,0x5574263ce960,784,GreaterThan
+code-creation,Builtin,2,14079,0x5574263cec80,784,GreaterThanOrEqual
+code-creation,Builtin,2,14088,0x5574263cefa0,872,Equal
+code-creation,Builtin,2,14097,0x5574263cf320,352,StrictEqual
+code-creation,Builtin,2,14106,0x5574263cf4a0,3244,ObjectFromEntries
+code-creation,Builtin,2,14114,0x5574263d0160,808,CreateObjectWithoutProperties
+code-creation,Builtin,2,14124,0x5574263d04a0,148,ObjectIsExtensible
+code-creation,Builtin,2,14132,0x5574263d0540,156,ObjectPreventExtensions
+code-creation,Builtin,2,14141,0x5574263d05e0,148,ObjectGetPrototypeOf
+code-creation,Builtin,2,14150,0x5574263d0680,308,ObjectSetPrototypeOf
+code-creation,Builtin,2,14159,0x5574263d07c0,80,ObjectPrototypeToString
+code-creation,Builtin,2,14168,0x5574263d0820,100,ObjectPrototypeValueOf
+code-creation,Builtin,2,14177,0x5574263d08a0,172,ObjectPrototypeToLocaleString
+code-creation,Builtin,2,14186,0x5574263d0960,784,FulfillPromise
+code-creation,Builtin,2,14196,0x5574263d0c80,924,RejectPromise
+code-creation,Builtin,2,14204,0x5574263d1020,2360,NewPromiseCapability
+code-creation,Builtin,2,14213,0x5574263d1960,172,PromiseCapabilityDefaultReject
+code-creation,Builtin,2,14223,0x5574263d1a20,156,PromiseCapabilityDefaultResolve
+code-creation,Builtin,2,14232,0x5574263d1ac0,1544,PerformPromiseThen
+code-creation,Builtin,2,14241,0x5574263d20e0,492,PromiseReject
+code-creation,Builtin,2,14249,0x5574263d22e0,336,PromiseGetCapabilitiesExecutor
+code-creation,Builtin,2,14258,0x5574263d2440,112,PromiseConstructorLazyDeoptContinuation
+code-creation,Builtin,2,14268,0x5574263d24c0,4828,PromiseAll
+code-creation,Builtin,2,14277,0x5574263d37a0,5136,PromiseAllSettled
+code-creation,Builtin,2,14286,0x5574263d4bc0,1228,PromiseAllResolveElementClosure
+code-creation,Builtin,2,14295,0x5574263d50a0,1552,PromiseAllSettledResolveElementClosure
+code-creation,Builtin,2,14304,0x5574263d56c0,1560,PromiseAllSettledRejectElementClosure
+code-creation,Builtin,2,14314,0x5574263d5ce0,1276,PromiseAnyRejectElementClosure
+code-creation,Builtin,2,14323,0x5574263d61e0,2480,PromiseAny
+code-creation,Builtin,2,14332,0x5574263d6ba0,2660,PromiseConstructor
+code-creation,Builtin,2,14341,0x5574263d7620,312,PromisePrototypeCatch
+code-creation,Builtin,2,14350,0x5574263d7760,92,PromiseValueThunkFinally
+code-creation,Builtin,2,14359,0x5574263d77c0,84,PromiseThrowerFinally
+code-creation,Builtin,2,14367,0x5574263d7820,956,PromiseCatchFinally
+code-creation,Builtin,2,14376,0x5574263d7be0,956,PromiseThenFinally
+code-creation,Builtin,2,14385,0x5574263d7fa0,1764,PromisePrototypeFinally
+code-creation,Builtin,2,14394,0x5574263d86a0,1420,PromiseRace
+code-creation,Builtin,2,14403,0x5574263d8c40,324,PromiseFulfillReactionJob
+code-creation,Builtin,2,14412,0x5574263d8da0,440,PromiseRejectReactionJob
+code-creation,Builtin,2,14421,0x5574263d8f60,156,PromiseResolveTrampoline
+code-creation,Builtin,2,14430,0x5574263d9000,508,PromiseResolve
+code-creation,Builtin,2,14439,0x5574263d9200,752,ResolvePromise
+code-creation,Builtin,2,14448,0x5574263d9500,2272,PromisePrototypeThen
+code-creation,Builtin,2,14456,0x5574263d9e00,1192,PromiseResolveThenableJob
+code-creation,Builtin,2,14466,0x5574263da2c0,448,ProxyConstructor
+code-creation,Builtin,2,14475,0x5574263da4a0,1932,ProxyDeleteProperty
+code-creation,Builtin,2,14484,0x5574263dac40,2284,ProxyGetProperty
+code-creation,Builtin,2,14492,0x5574263db540,1088,ProxyGetPrototypeOf
+code-creation,Builtin,2,14501,0x5574263db9a0,1796,ProxyHasProperty
+code-creation,Builtin,2,14510,0x5574263dc0c0,804,ProxyIsExtensible
+code-creation,Builtin,2,14518,0x5574263dc400,836,ProxyPreventExtensions
+code-creation,Builtin,2,14527,0x5574263dc760,1168,ProxyRevocable
+code-creation,Builtin,2,14536,0x5574263dcc00,132,ProxyRevoke
+code-creation,Builtin,2,14544,0x5574263dcca0,2356,ProxySetProperty
+code-creation,Builtin,2,14556,0x5574263dd5e0,1368,ProxySetPrototypeOf
+code-creation,Builtin,2,14565,0x5574263ddb40,208,ReflectIsExtensible
+code-creation,Builtin,2,14574,0x5574263ddc20,220,ReflectPreventExtensions
+code-creation,Builtin,2,14583,0x5574263ddd00,188,ReflectGetPrototypeOf
+code-creation,Builtin,2,14591,0x5574263dddc0,296,ReflectSetPrototypeOf
+code-creation,Builtin,2,14600,0x5574263ddf00,288,ReflectGet
+code-creation,Builtin,2,14609,0x5574263de040,156,ReflectDeleteProperty
+code-creation,Builtin,2,14618,0x5574263de0e0,144,ReflectHas
+code-creation,Builtin,2,14626,0x5574263de180,5576,RegExpPrototypeExecSlow
+code-creation,Builtin,2,14635,0x5574263df760,5640,RegExpPrototypeExec
+code-creation,Builtin,2,14644,0x5574263e0d80,2524,RegExpPrototypeMatchAll
+code-creation,Builtin,2,14653,0x5574263e1760,10172,RegExpStringIteratorPrototypeNext
+code-creation,Builtin,2,14662,0x5574263e3f20,9704,RegExpMatchFast
+code-creation,Builtin,2,14671,0x5574263e6520,3708,RegExpPrototypeMatch
+code-creation,Builtin,2,14680,0x5574263e73a0,6628,RegExpReplace
+code-creation,Builtin,2,14689,0x5574263e8da0,544,RegExpPrototypeReplace
+code-creation,Builtin,2,14698,0x5574263e8fe0,1748,RegExpSearchFast
+code-creation,Builtin,2,14706,0x5574263e96c0,1692,RegExpPrototypeSearch
+code-creation,Builtin,2,14715,0x5574263e9d60,208,RegExpPrototypeSourceGetter
+code-creation,Builtin,2,14724,0x5574263e9e40,5888,RegExpSplit
+code-creation,Builtin,2,14733,0x5574263eb560,500,RegExpPrototypeSplit
+code-creation,Builtin,2,14742,0x5574263eb760,2468,RegExpPrototypeTest
+code-creation,Builtin,2,14751,0x5574263ec120,1488,RegExpPrototypeTestFast
+code-creation,Builtin,2,14760,0x5574263ec700,240,RegExpPrototypeGlobalGetter
+code-creation,Builtin,2,14769,0x5574263ec800,240,RegExpPrototypeIgnoreCaseGetter
+code-creation,Builtin,2,14778,0x5574263ec900,244,RegExpPrototypeMultilineGetter
+code-creation,Builtin,2,14787,0x5574263eca00,244,RegExpPrototypeHasIndicesGetter
+code-creation,Builtin,2,14797,0x5574263ecb00,244,RegExpPrototypeLinearGetter
+code-creation,Builtin,2,14806,0x5574263ecc00,244,RegExpPrototypeDotAllGetter
+code-creation,Builtin,2,14815,0x5574263ecd00,264,RegExpPrototypeStickyGetter
+code-creation,Builtin,2,14824,0x5574263ece20,264,RegExpPrototypeUnicodeGetter
+code-creation,Builtin,2,14834,0x5574263ecf40,2396,RegExpPrototypeFlagsGetter
+code-creation,Builtin,2,14843,0x5574263ed8a0,1580,StringPrototypeAt
+code-creation,Builtin,2,14851,0x5574263edee0,3108,StringPrototypeEndsWith
+code-creation,Builtin,2,14860,0x5574263eeb20,504,CreateHTML
+code-creation,Builtin,2,14869,0x5574263eed20,168,StringPrototypeAnchor
+code-creation,Builtin,2,14878,0x5574263eede0,136,StringPrototypeBig
+code-creation,Builtin,2,14887,0x5574263eee80,136,StringPrototypeBlink
+code-creation,Builtin,2,14896,0x5574263eef20,136,StringPrototypeBold
+code-creation,Builtin,2,14904,0x5574263eefc0,184,StringPrototypeFontcolor
+code-creation,Builtin,2,14917,0x5574263ef080,184,StringPrototypeFontsize
+code-creation,Builtin,2,14927,0x5574263ef140,136,StringPrototypeFixed
+code-creation,Builtin,2,14935,0x5574263ef1e0,136,StringPrototypeItalics
+code-creation,Builtin,2,14944,0x5574263ef280,184,StringPrototypeLink
+code-creation,Builtin,2,14953,0x5574263ef340,136,StringPrototypeSmall
+code-creation,Builtin,2,14960,0x5574263ef3e0,136,StringPrototypeStrike
+code-creation,Builtin,2,14969,0x5574263ef480,136,StringPrototypeSub
+code-creation,Builtin,2,14977,0x5574263ef520,136,StringPrototypeSup
+code-creation,Builtin,2,14986,0x5574263ef5c0,1052,StringPrototypeIncludes
+code-creation,Builtin,2,14995,0x5574263ef9e0,640,StringPrototypeIndexOf
+code-creation,Builtin,2,15004,0x5574263efc80,348,StringPrototypeIterator
+code-creation,Builtin,2,15013,0x5574263efde0,2056,StringIteratorPrototypeNext
+code-creation,Builtin,2,15023,0x5574263f0600,1388,StringPrototypeMatch
+code-creation,Builtin,2,15032,0x5574263f0b80,1388,StringPrototypeSearch
+code-creation,Builtin,2,15040,0x5574263f1100,844,StringPrototypePadStart
+code-creation,Builtin,2,15050,0x5574263f1460,848,StringPrototypePadEnd
+code-creation,Builtin,2,15059,0x5574263f17c0,124,StringRepeat
+code-creation,Builtin,2,15067,0x5574263f1840,392,StringPrototypeRepeat
+code-creation,Builtin,2,15079,0x5574263f19e0,11516,StringPrototypeReplaceAll
+code-creation,Builtin,2,15088,0x5574263f46e0,3480,StringPrototypeSlice
+code-creation,Builtin,2,15097,0x5574263f5480,3124,StringPrototypeStartsWith
+code-creation,Builtin,2,15106,0x5574263f60c0,3420,StringPrototypeSubstr
+code-creation,Builtin,2,15115,0x5574263f6e20,3348,StringPrototypeSubstring
+code-creation,Builtin,2,15124,0x5574263f7b40,6964,StringPrototypeTrim
+code-creation,Builtin,2,15133,0x5574263f9680,6376,StringPrototypeTrimStart
+code-creation,Builtin,2,15142,0x5574263faf80,5920,StringPrototypeTrimEnd
+code-creation,Builtin,2,15151,0x5574263fc6c0,164,SymbolPrototypeDescriptionGetter
+code-creation,Builtin,2,15160,0x5574263fc780,160,SymbolPrototypeToPrimitive
+code-creation,Builtin,2,15170,0x5574263fc840,176,SymbolPrototypeToString
+code-creation,Builtin,2,15178,0x5574263fc900,160,SymbolPrototypeValueOf
+code-creation,Builtin,2,15187,0x5574263fc9c0,828,TypedArrayPrototypeAt
+code-creation,Builtin,2,15196,0x5574263fcd00,7960,CreateTypedArray
+code-creation,Builtin,2,15205,0x5574263fec20,1008,TypedArrayPrototypeEvery
+code-creation,Builtin,2,15214,0x5574263ff020,360,TypedArrayPrototypeEntries
+code-creation,Builtin,2,15223,0x5574263ff1a0,3384,TypedArrayPrototypeFilter
+code-creation,Builtin,2,15232,0x5574263ffee0,1000,TypedArrayPrototypeFind
+code-creation,Builtin,2,15241,0x5574264002e0,1004,TypedArrayPrototypeFindIndex
+code-creation,Builtin,2,15251,0x5574264006e0,860,TypedArrayPrototypeForEach
+code-creation,Builtin,2,15260,0x557426400a40,2356,TypedArrayFrom
+code-creation,Builtin,2,15268,0x557426401380,356,TypedArrayPrototypeKeys
+code-creation,Builtin,2,15277,0x557426401500,988,TypedArrayOf
+code-creation,Builtin,2,15286,0x5574264018e0,952,TypedArrayPrototypeReduce
+code-creation,Builtin,2,15295,0x557426401ca0,944,TypedArrayPrototypeReduceRight
+code-creation,Builtin,2,15304,0x557426402060,2208,TypedArrayPrototypeSet
+code-creation,Builtin,2,15313,0x557426402920,2548,TypedArrayPrototypeSlice
+code-creation,Builtin,2,15322,0x557426403320,1000,TypedArrayPrototypeSome
+code-creation,Builtin,2,15331,0x557426403720,1184,TypedArrayMergeSort
+code-creation,Builtin,2,15340,0x557426403be0,1604,TypedArrayPrototypeSort
+code-creation,Builtin,2,15349,0x557426404240,2344,TypedArrayPrototypeSubArray
+code-creation,Builtin,2,15358,0x557426404b80,360,TypedArrayPrototypeValues
+code-creation,Builtin,2,15367,0x557426404d00,1004,WeakRefConstructor
+code-creation,Builtin,2,15376,0x557426405100,188,WeakRefDeref
+code-creation,Builtin,2,15385,0x5574264051c0,716,NewSloppyArgumentsElements
+code-creation,Builtin,2,15394,0x5574264054a0,324,NewStrictArgumentsElements
+code-creation,Builtin,2,15403,0x557426405600,340,NewRestArgumentsElements
+code-creation,Builtin,2,15412,0x557426405760,1400,FastNewSloppyArguments
+code-creation,Builtin,2,15421,0x557426405ce0,544,FastNewStrictArguments
+code-creation,Builtin,2,15430,0x557426405f20,580,FastNewRestArguments
+code-creation,Builtin,2,15439,0x557426406180,720,StringSlowFlatten
+code-creation,Builtin,2,15448,0x557426406460,2012,StringIndexOf
+code-creation,Builtin,2,15456,0x557426406c40,4,GenericBuiltinTest_JSAny_0
+code-creation,Builtin,2,15466,0x557426406c60,8,TestHelperPlus1
+code-creation,Builtin,2,15474,0x557426406c80,8,TestHelperPlus2
+code-creation,Builtin,2,15483,0x557426406ca0,96,NewSmiBox
+code-creation,Builtin,2,15491,0x557426406d20,16,ReturnTwoValues
+code-creation,Builtin,2,15500,0x557426406d40,32,Load_FastSmiElements_0
+code-creation,Builtin,2,15509,0x557426406d80,32,Load_FastObjectElements_0
+code-creation,Builtin,2,15518,0x557426406dc0,148,Load_FastDoubleElements_0
+code-creation,Builtin,2,15528,0x557426406e60,32,Store_FastSmiElements_0
+code-creation,Builtin,2,15537,0x557426406ea0,112,Store_FastObjectElements_0
+code-creation,Builtin,2,15546,0x557426406f20,48,Store_FastDoubleElements_0
+code-creation,Builtin,2,15556,0x557426406f60,40,Delete_FastSmiElements_0
+code-creation,Builtin,2,15565,0x557426406fa0,40,Delete_FastObjectElements_0
+code-creation,Builtin,2,15574,0x557426406fe0,44,Delete_FastDoubleElements_0
+code-creation,Builtin,2,15586,0x557426407020,312,SortCompareDefault
+code-creation,Builtin,2,15595,0x557426407160,96,SortCompareUserFn
+code-creation,Builtin,2,15604,0x5574264071e0,12,CanUseSameAccessor_GenericElementsAccessor_0
+code-creation,Builtin,2,15614,0x557426407200,328,Copy
+code-creation,Builtin,2,15622,0x557426407360,6072,MergeAt
+code-creation,Builtin,2,15631,0x557426408b20,824,GallopLeft
+code-creation,Builtin,2,15639,0x557426408e60,828,GallopRight
+code-creation,Builtin,2,15648,0x5574264091a0,3880,ArrayTimSort
+code-creation,Builtin,2,15656,0x55742640a0e0,2128,ArrayPrototypeSort
+code-creation,Builtin,2,15665,0x55742640a940,100,WasmInt32ToHeapNumber
+code-creation,Builtin,2,15674,0x55742640a9c0,120,WasmTaggedNonSmiToInt32
+code-creation,Builtin,2,15684,0x55742640aa40,72,WasmTaggedToFloat64
+code-creation,Builtin,2,15693,0x55742640aaa0,68,WasmMemoryGrow
+code-creation,Builtin,2,15702,0x55742640ab00,96,WasmTableInit
+code-creation,Builtin,2,15710,0x55742640ab80,96,WasmTableCopy
+code-creation,Builtin,2,15719,0x55742640ac00,80,WasmTableFill
+code-creation,Builtin,2,15728,0x55742640ac60,64,WasmTableGrow
+code-creation,Builtin,2,15736,0x55742640acc0,168,WasmTableGet
+code-creation,Builtin,2,15745,0x55742640ad80,268,WasmTableSet
+code-creation,Builtin,2,15753,0x55742640aea0,104,WasmRefFunc
+code-creation,Builtin,2,15762,0x55742640af20,144,WasmAllocateFixedArray
+code-creation,Builtin,2,15771,0x55742640afc0,44,WasmThrow
+code-creation,Builtin,2,15779,0x55742640b000,56,WasmRethrow
+code-creation,Builtin,2,15788,0x55742640b040,44,WasmTriggerTierUp
+code-creation,Builtin,2,15798,0x55742640b080,28,WasmStackGuard
+code-creation,Builtin,2,15807,0x55742640b0a0,28,WasmStackOverflow
+code-creation,Builtin,2,15816,0x55742640b0c0,40,WasmTraceMemory
+code-creation,Builtin,2,15824,0x55742640b100,28,WasmTraceEnter
+code-creation,Builtin,2,15833,0x55742640b120,40,WasmTraceExit
+code-creation,Builtin,2,15842,0x55742640b160,368,WasmAllocateJSArray
+code-creation,Builtin,2,15850,0x55742640b2e0,100,WasmAllocatePair
+code-creation,Builtin,2,15859,0x55742640b360,44,WasmAllocateRtt
+code-creation,Builtin,2,15868,0x55742640b3a0,108,WasmAllocateStructWithRtt
+code-creation,Builtin,2,15877,0x55742640b420,128,WasmAllocateArrayWithRtt
+code-creation,Builtin,2,15886,0x55742640b4c0,248,WasmAllocateObjectWrapper
+code-creation,Builtin,2,15895,0x55742640b5c0,52,WasmSubtypeCheck
+code-creation,Builtin,2,15903,0x55742640b600,112,WasmInt32ToNumber
+code-creation,Builtin,2,15912,0x55742640b680,116,WasmUint32ToNumber
+code-creation,Builtin,2,15921,0x55742640b700,140,UintPtr53ToNumber
+code-creation,Builtin,2,15929,0x55742640b7a0,92,WasmAtomicNotify
+code-creation,Builtin,2,15938,0x55742640b800,112,WasmI32AtomicWait64
+code-creation,Builtin,2,15947,0x55742640b880,112,WasmI64AtomicWait64
+code-creation,Builtin,2,15955,0x55742640b900,616,WasmGetOwnProperty
+code-creation,Builtin,2,15964,0x55742640bb80,40,WasmTrap
+code-creation,Builtin,2,15973,0x55742640bbc0,12,ThrowWasmTrapUnreachable
+code-creation,Builtin,2,15986,0x55742640bbe0,12,ThrowWasmTrapMemOutOfBounds
+code-creation,Builtin,2,15995,0x55742640bc00,12,ThrowWasmTrapUnalignedAccess
+code-creation,Builtin,2,16004,0x55742640bc20,12,ThrowWasmTrapDivByZero
+code-creation,Builtin,2,16013,0x55742640bc40,12,ThrowWasmTrapDivUnrepresentable
+code-creation,Builtin,2,16023,0x55742640bc60,12,ThrowWasmTrapRemByZero
+code-creation,Builtin,2,16032,0x55742640bc80,12,ThrowWasmTrapFloatUnrepresentable
+code-creation,Builtin,2,16041,0x55742640bca0,12,ThrowWasmTrapFuncSigMismatch
+code-creation,Builtin,2,16051,0x55742640bcc0,12,ThrowWasmTrapDataSegmentDropped
+code-creation,Builtin,2,16060,0x55742640bce0,12,ThrowWasmTrapElemSegmentDropped
+code-creation,Builtin,2,16069,0x55742640bd00,12,ThrowWasmTrapTableOutOfBounds
+code-creation,Builtin,2,16079,0x55742640bd20,12,ThrowWasmTrapRethrowNull
+code-creation,Builtin,2,16089,0x55742640bd40,12,ThrowWasmTrapNullDereference
+code-creation,Builtin,2,16099,0x55742640bd60,12,ThrowWasmTrapIllegalCast
+code-creation,Builtin,2,16108,0x55742640bd80,12,ThrowWasmTrapArrayOutOfBounds
+code-creation,Builtin,2,16117,0x55742640bda0,168,LoadJoinElement_GenericElementsAccessor_0
+code-creation,Builtin,2,16129,0x55742640be60,120,LoadJoinTypedElement_Int32Elements_0
+code-creation,Builtin,2,16140,0x55742640bee0,112,LoadJoinTypedElement_Float32Elements_0
+code-creation,Builtin,2,16149,0x55742640bf60,108,LoadJoinTypedElement_Float64Elements_0
+code-creation,Builtin,2,16159,0x55742640bfe0,20,LoadJoinTypedElement_Uint8ClampedElements_0
+code-creation,Builtin,2,16169,0x55742640c000,200,LoadJoinTypedElement_BigUint64Elements_0
+code-creation,Builtin,2,16179,0x55742640c0e0,228,LoadJoinTypedElement_BigInt64Elements_0
+code-creation,Builtin,2,16188,0x55742640c1e0,20,LoadJoinTypedElement_Uint8Elements_0
+code-creation,Builtin,2,16198,0x55742640c200,20,LoadJoinTypedElement_Int8Elements_0
+code-creation,Builtin,2,16208,0x55742640c220,20,LoadJoinTypedElement_Uint16Elements_0
+code-creation,Builtin,2,16217,0x55742640c240,20,LoadJoinTypedElement_Int16Elements_0
+code-creation,Builtin,2,16227,0x55742640c260,124,LoadJoinTypedElement_Uint32Elements_0
+code-creation,Builtin,2,16236,0x55742640c2e0,12,GenericBuiltinTest_Smi_0
+code-creation,Builtin,2,16245,0x55742640c300,40,CanUseSameAccessor_FastDoubleElements_0
+code-creation,Builtin,2,16255,0x55742640c340,40,CanUseSameAccessor_FastSmiElements_0
+code-creation,Builtin,2,16265,0x55742640c380,40,CanUseSameAccessor_FastObjectElements_0
+code-creation,Builtin,2,16274,0x55742640c3c0,2380,Load_GenericElementsAccessor_0
+code-creation,Builtin,2,16283,0x55742640cd20,28,Store_GenericElementsAccessor_0
+code-creation,Builtin,2,16293,0x55742640cd40,32,Delete_GenericElementsAccessor_0
+code-creation,Builtin,2,16302,0x55742640cd80,120,LoadTypedElement_Int32Elements_0
+code-creation,Builtin,2,16312,0x55742640ce00,164,StoreTypedElementNumeric_Int32Elements_0
+code-creation,Builtin,2,16321,0x55742640cec0,176,StoreTypedElementJSAny_Int32Elements_0
+code-creation,Builtin,2,16331,0x55742640cf80,112,LoadTypedElement_Float32Elements_0
+code-creation,Builtin,2,16340,0x55742640d000,28,StoreTypedElementNumeric_Float32Elements_0
+code-creation,Builtin,2,16350,0x55742640d020,152,StoreTypedElementJSAny_Float32Elements_0
+code-creation,Builtin,2,16360,0x55742640d0c0,108,LoadTypedElement_Float64Elements_0
+code-creation,Builtin,2,16369,0x55742640d140,24,StoreTypedElementNumeric_Float64Elements_0
+code-creation,Builtin,2,16379,0x55742640d160,148,StoreTypedElementJSAny_Float64Elements_0
+code-creation,Builtin,2,16389,0x55742640d200,20,LoadTypedElement_Uint8ClampedElements_0
+code-creation,Builtin,2,16400,0x55742640d220,20,StoreTypedElementNumeric_Uint8ClampedElements_0
+code-creation,Builtin,2,16410,0x55742640d240,600,StoreTypedElementJSAny_Uint8ClampedElements_0
+code-creation,Builtin,2,16420,0x55742640d4a0,200,LoadTypedElement_BigUint64Elements_0
+code-creation,Builtin,2,16429,0x55742640d580,56,StoreTypedElementNumeric_BigUint64Elements_0
+code-creation,Builtin,2,16439,0x55742640d5c0,192,StoreTypedElementJSAny_BigUint64Elements_0
+code-creation,Builtin,2,16449,0x55742640d6a0,228,LoadTypedElement_BigInt64Elements_0
+code-creation,Builtin,2,16458,0x55742640d7a0,56,StoreTypedElementNumeric_BigInt64Elements_0
+code-creation,Builtin,2,16468,0x55742640d7e0,192,StoreTypedElementJSAny_BigInt64Elements_0
+code-creation,Builtin,2,16477,0x55742640d8c0,20,LoadTypedElement_Uint8Elements_0
+code-creation,Builtin,2,16487,0x55742640d8e0,20,StoreTypedElementNumeric_Uint8Elements_0
+code-creation,Builtin,2,16496,0x55742640d900,176,StoreTypedElementJSAny_Uint8Elements_0
+code-creation,Builtin,2,16506,0x55742640d9c0,20,LoadTypedElement_Int8Elements_0
+code-creation,Builtin,2,16515,0x55742640d9e0,20,StoreTypedElementNumeric_Int8Elements_0
+code-creation,Builtin,2,16525,0x55742640da00,176,StoreTypedElementJSAny_Int8Elements_0
+code-creation,Builtin,2,16534,0x55742640dac0,20,LoadTypedElement_Uint16Elements_0
+code-creation,Builtin,2,16544,0x55742640dae0,20,StoreTypedElementNumeric_Uint16Elements_0
+code-creation,Builtin,2,16554,0x55742640db00,176,StoreTypedElementJSAny_Uint16Elements_0
+code-creation,Builtin,2,16563,0x55742640dbc0,20,LoadTypedElement_Int16Elements_0
+code-creation,Builtin,2,16572,0x55742640dbe0,20,StoreTypedElementNumeric_Int16Elements_0
+code-creation,Builtin,2,16585,0x55742640dc00,176,StoreTypedElementJSAny_Int16Elements_0
+code-creation,Builtin,2,16594,0x55742640dcc0,124,LoadTypedElement_Uint32Elements_0
+code-creation,Builtin,2,16604,0x55742640dd40,164,StoreTypedElementNumeric_Uint32Elements_0
+code-creation,Builtin,2,16614,0x55742640de00,176,StoreTypedElementJSAny_Uint32Elements_0
+code-creation,Builtin,2,16623,0x55742640dec0,12,CollatorConstructor
+code-creation,Builtin,2,16632,0x55742640dee0,12,CollatorInternalCompare
+code-creation,Builtin,2,16641,0x55742640df00,12,CollatorPrototypeCompare
+code-creation,Builtin,2,16650,0x55742640df20,12,CollatorSupportedLocalesOf
+code-creation,Builtin,2,16660,0x55742640df40,12,CollatorPrototypeResolvedOptions
+code-creation,Builtin,2,16669,0x55742640df60,12,DatePrototypeToLocaleDateString
+code-creation,Builtin,2,16678,0x55742640df80,12,DatePrototypeToLocaleString
+code-creation,Builtin,2,16688,0x55742640dfa0,12,DatePrototypeToLocaleTimeString
+code-creation,Builtin,2,16697,0x55742640dfc0,12,DateTimeFormatConstructor
+code-creation,Builtin,2,16707,0x55742640dfe0,12,DateTimeFormatInternalFormat
+code-creation,Builtin,2,16717,0x55742640e000,12,DateTimeFormatPrototypeFormat
+code-creation,Builtin,2,16726,0x55742640e020,12,DateTimeFormatPrototypeFormatRange
+code-creation,Builtin,2,16735,0x55742640e040,12,DateTimeFormatPrototypeFormatRangeToParts
+code-creation,Builtin,2,16745,0x55742640e060,12,DateTimeFormatPrototypeFormatToParts
+code-creation,Builtin,2,16755,0x55742640e080,12,DateTimeFormatPrototypeResolvedOptions
+code-creation,Builtin,2,16764,0x55742640e0a0,12,DateTimeFormatSupportedLocalesOf
+code-creation,Builtin,2,16774,0x55742640e0c0,12,DisplayNamesConstructor
+code-creation,Builtin,2,16783,0x55742640e0e0,12,DisplayNamesPrototypeOf
+code-creation,Builtin,2,16792,0x55742640e100,12,DisplayNamesPrototypeResolvedOptions
+code-creation,Builtin,2,16802,0x55742640e120,12,DisplayNamesSupportedLocalesOf
+code-creation,Builtin,2,16811,0x55742640e140,12,IntlGetCanonicalLocales
+code-creation,Builtin,2,16820,0x55742640e160,12,ListFormatConstructor
+code-creation,Builtin,2,16829,0x55742640e180,224,ListFormatPrototypeFormat
+code-creation,Builtin,2,16838,0x55742640e280,224,ListFormatPrototypeFormatToParts
+code-creation,Builtin,2,16848,0x55742640e380,12,ListFormatPrototypeResolvedOptions
+code-creation,Builtin,2,16857,0x55742640e3a0,12,ListFormatSupportedLocalesOf
+code-creation,Builtin,2,16866,0x55742640e3c0,12,LocaleConstructor
+code-creation,Builtin,2,16875,0x55742640e3e0,12,LocalePrototypeBaseName
+code-creation,Builtin,2,16884,0x55742640e400,12,LocalePrototypeCalendar
+code-creation,Builtin,2,16893,0x55742640e420,12,LocalePrototypeCaseFirst
+code-creation,Builtin,2,16902,0x55742640e440,12,LocalePrototypeCollation
+code-creation,Builtin,2,16911,0x55742640e460,12,LocalePrototypeHourCycle
+code-creation,Builtin,2,16920,0x55742640e480,12,LocalePrototypeLanguage
+code-creation,Builtin,2,16929,0x55742640e4a0,12,LocalePrototypeMaximize
+code-creation,Builtin,2,16938,0x55742640e4c0,12,LocalePrototypeMinimize
+code-creation,Builtin,2,16947,0x55742640e4e0,12,LocalePrototypeNumeric
+code-creation,Builtin,2,16956,0x55742640e500,12,LocalePrototypeNumberingSystem
+code-creation,Builtin,2,16965,0x55742640e520,12,LocalePrototypeRegion
+code-creation,Builtin,2,16974,0x55742640e540,12,LocalePrototypeScript
+code-creation,Builtin,2,16983,0x55742640e560,12,LocalePrototypeToString
+code-creation,Builtin,2,16992,0x55742640e580,12,NumberFormatConstructor
+code-creation,Builtin,2,17003,0x55742640e5a0,12,NumberFormatInternalFormatNumber
+code-creation,Builtin,2,17012,0x55742640e5c0,12,NumberFormatPrototypeFormatNumber
+code-creation,Builtin,2,17022,0x55742640e5e0,12,NumberFormatPrototypeFormatToParts
+code-creation,Builtin,2,17031,0x55742640e600,12,NumberFormatPrototypeResolvedOptions
+code-creation,Builtin,2,17041,0x55742640e620,12,NumberFormatSupportedLocalesOf
+code-creation,Builtin,2,17054,0x55742640e640,12,PluralRulesConstructor
+code-creation,Builtin,2,17063,0x55742640e660,12,PluralRulesPrototypeResolvedOptions
+code-creation,Builtin,2,17072,0x55742640e680,12,PluralRulesPrototypeSelect
+code-creation,Builtin,2,17084,0x55742640e6a0,12,PluralRulesSupportedLocalesOf
+code-creation,Builtin,2,17094,0x55742640e6c0,12,RelativeTimeFormatConstructor
+code-creation,Builtin,2,17103,0x55742640e6e0,12,RelativeTimeFormatPrototypeFormat
+code-creation,Builtin,2,17112,0x55742640e700,12,RelativeTimeFormatPrototypeFormatToParts
+code-creation,Builtin,2,17122,0x55742640e720,12,RelativeTimeFormatPrototypeResolvedOptions
+code-creation,Builtin,2,17132,0x55742640e740,12,RelativeTimeFormatSupportedLocalesOf
+code-creation,Builtin,2,17141,0x55742640e760,12,SegmenterConstructor
+code-creation,Builtin,2,17150,0x55742640e780,12,SegmenterPrototypeResolvedOptions
+code-creation,Builtin,2,17160,0x55742640e7a0,12,SegmenterPrototypeSegment
+code-creation,Builtin,2,17169,0x55742640e7c0,12,SegmenterSupportedLocalesOf
+code-creation,Builtin,2,17178,0x55742640e7e0,12,SegmentIteratorPrototypeNext
+code-creation,Builtin,2,17187,0x55742640e800,12,SegmentsPrototypeContaining
+code-creation,Builtin,2,17197,0x55742640e820,12,SegmentsPrototypeIterator
+code-creation,Builtin,2,17206,0x55742640e840,12,StringPrototypeNormalizeIntl
+code-creation,Builtin,2,17215,0x55742640e860,12,StringPrototypeToLocaleLowerCase
+code-creation,Builtin,2,17224,0x55742640e880,12,StringPrototypeToLocaleUpperCase
+code-creation,Builtin,2,17234,0x55742640e8a0,208,StringPrototypeToLowerCaseIntl
+code-creation,Builtin,2,17243,0x55742640e980,12,StringPrototypeToUpperCaseIntl
+code-creation,Builtin,2,17253,0x55742640e9a0,672,StringToLowerCaseIntl
+code-creation,Builtin,2,17261,0x55742640ec60,12,V8BreakIteratorConstructor
+code-creation,Builtin,2,17271,0x55742640ec80,12,V8BreakIteratorInternalAdoptText
+code-creation,Builtin,2,17280,0x55742640eca0,12,V8BreakIteratorInternalBreakType
+code-creation,Builtin,2,17289,0x55742640ecc0,12,V8BreakIteratorInternalCurrent
+code-creation,Builtin,2,17299,0x55742640ece0,12,V8BreakIteratorInternalFirst
+code-creation,Builtin,2,17309,0x55742640ed00,12,V8BreakIteratorInternalNext
+code-creation,Builtin,2,17318,0x55742640ed20,12,V8BreakIteratorPrototypeAdoptText
+code-creation,Builtin,2,17328,0x55742640ed40,12,V8BreakIteratorPrototypeBreakType
+code-creation,Builtin,2,17337,0x55742640ed60,12,V8BreakIteratorPrototypeCurrent
+code-creation,Builtin,2,17347,0x55742640ed80,12,V8BreakIteratorPrototypeFirst
+code-creation,Builtin,2,17356,0x55742640eda0,12,V8BreakIteratorPrototypeNext
+code-creation,Builtin,2,17365,0x55742640edc0,12,V8BreakIteratorPrototypeResolvedOptions
+code-creation,Builtin,2,17375,0x55742640ede0,12,V8BreakIteratorSupportedLocalesOf
+code-creation,BytecodeHandler,0,17385,0x55742640ee00,24,Wide
+code-creation,BytecodeHandler,0,17394,0x55742640ee20,24,ExtraWide
+code-creation,BytecodeHandler,0,17403,0x55742640ee40,204,DebugBreakWide
+code-creation,BytecodeHandler,0,17412,0x55742640ef20,204,DebugBreakExtraWide
+code-creation,BytecodeHandler,0,17421,0x55742640f000,276,DebugBreak0
+code-creation,BytecodeHandler,0,17430,0x55742640f120,204,DebugBreak1
+code-creation,BytecodeHandler,0,17438,0x55742640f200,204,DebugBreak2
+code-creation,BytecodeHandler,0,17447,0x55742640f2e0,204,DebugBreak3
+code-creation,BytecodeHandler,0,17456,0x55742640f3c0,204,DebugBreak4
+code-creation,BytecodeHandler,0,17466,0x55742640f4a0,204,DebugBreak5
+code-creation,BytecodeHandler,0,17474,0x55742640f580,204,DebugBreak6
+code-creation,BytecodeHandler,0,17483,0x55742640f660,68,LdaZero
+code-creation,BytecodeHandler,0,17492,0x55742640f6c0,68,LdaSmi
+code-creation,BytecodeHandler,0,17501,0x55742640f720,72,LdaUndefined
+code-creation,BytecodeHandler,0,17510,0x55742640f780,72,LdaNull
+code-creation,BytecodeHandler,0,17519,0x55742640f7e0,72,LdaTheHole
+code-creation,BytecodeHandler,0,17528,0x55742640f840,24,LdaTrue
+code-creation,BytecodeHandler,0,17537,0x55742640f860,24,LdaFalse
+code-creation,BytecodeHandler,0,17545,0x55742640f880,80,LdaConstant
+code-creation,BytecodeHandler,0,17554,0x55742640f8e0,4968,LdaGlobal
+code-creation,BytecodeHandler,0,17563,0x557426410c60,3760,LdaGlobalInsideTypeof
+code-creation,BytecodeHandler,0,17572,0x557426411b20,180,StaGlobal
+code-creation,BytecodeHandler,0,17581,0x557426411be0,40,PushContext
+code-creation,BytecodeHandler,0,17593,0x557426411c20,36,PopContext
+code-creation,BytecodeHandler,0,17611,0x557426411c60,140,LdaContextSlot
+code-creation,BytecodeHandler,0,17621,0x557426411d00,140,LdaImmutableContextSlot
+code-creation,BytecodeHandler,0,17630,0x557426411da0,92,LdaCurrentContextSlot
+code-creation,BytecodeHandler,0,17639,0x557426411e00,92,LdaImmutableCurrentContextSlot
+code-creation,BytecodeHandler,0,17649,0x557426411e60,176,StaContextSlot
+code-creation,BytecodeHandler,0,17669,0x557426411f20,128,StaCurrentContextSlot
+code-creation,BytecodeHandler,0,17678,0x557426411fc0,124,LdaLookupSlot
+code-creation,BytecodeHandler,0,17687,0x557426412040,260,LdaLookupContextSlot
+code-creation,BytecodeHandler,0,17697,0x557426412160,3960,LdaLookupGlobalSlot
+code-creation,BytecodeHandler,0,17706,0x5574264130e0,124,LdaLookupSlotInsideTypeof
+code-creation,BytecodeHandler,0,17716,0x557426413160,260,LdaLookupContextSlotInsideTypeof
+code-creation,BytecodeHandler,0,17726,0x557426413280,3928,LdaLookupGlobalSlotInsideTypeof
+code-creation,BytecodeHandler,0,17736,0x5574264141e0,204,StaLookupSlot
+code-creation,BytecodeHandler,0,17745,0x5574264142c0,32,Ldar
+code-creation,BytecodeHandler,0,17753,0x557426414300,32,Star
+code-creation,BytecodeHandler,0,17762,0x557426414340,40,Mov
+code-creation,BytecodeHandler,0,17771,0x557426414380,4524,LdaNamedProperty
+code-creation,BytecodeHandler,0,17780,0x557426415540,124,LdaNamedPropertyNoFeedback
+code-creation,BytecodeHandler,0,17790,0x5574264155c0,196,LdaNamedPropertyFromSuper
+code-creation,BytecodeHandler,0,17800,0x5574264156a0,216,LdaKeyedProperty
+code-creation,BytecodeHandler,0,17809,0x557426415780,188,LdaModuleVariable
+code-creation,BytecodeHandler,0,17818,0x557426415840,320,StaModuleVariable
+code-creation,BytecodeHandler,0,17827,0x5574264159a0,180,StaNamedProperty
+code-creation,BytecodeHandler,0,17836,0x557426415a60,140,StaNamedPropertyNoFeedback
+code-creation,BytecodeHandler,0,17846,0x557426415b00,180,StaNamedOwnProperty
+code-creation,BytecodeHandler,0,17855,0x557426415bc0,168,StaKeyedProperty
+code-creation,BytecodeHandler,0,17864,0x557426415c80,168,StaInArrayLiteral
+code-creation,BytecodeHandler,0,17874,0x557426415d40,196,StaDataPropertyInLiteral
+code-creation,BytecodeHandler,0,17884,0x557426415e20,164,CollectTypeProfile
+code-creation,BytecodeHandler,0,17893,0x557426415ee0,1000,Add
+code-creation,BytecodeHandler,0,17901,0x5574264162e0,1060,Sub
+code-creation,BytecodeHandler,0,17910,0x557426416720,1152,Mul
+code-creation,BytecodeHandler,0,17921,0x557426416bc0,948,Div
+code-creation,BytecodeHandler,0,17929,0x557426416f80,1012,Mod
+code-creation,BytecodeHandler,0,17938,0x557426417380,188,Exp
+code-creation,BytecodeHandler,0,17947,0x557426417440,992,BitwiseOr
+code-creation,BytecodeHandler,0,17956,0x557426417840,988,BitwiseXor
+code-creation,BytecodeHandler,0,17965,0x557426417c20,988,BitwiseAnd
+code-creation,BytecodeHandler,0,17974,0x557426418000,988,ShiftLeft
+code-creation,BytecodeHandler,0,17982,0x5574264183e0,988,ShiftRight
+code-creation,BytecodeHandler,0,17991,0x5574264187c0,992,ShiftRightLogical
+code-creation,BytecodeHandler,0,18000,0x557426418bc0,924,AddSmi
+code-creation,BytecodeHandler,0,18009,0x557426418f60,992,SubSmi
+code-creation,BytecodeHandler,0,18018,0x557426419360,1048,MulSmi
+code-creation,BytecodeHandler,0,18027,0x557426419780,936,DivSmi
+code-creation,BytecodeHandler,0,18035,0x557426419b40,932,ModSmi
+code-creation,BytecodeHandler,0,18044,0x557426419f00,180,ExpSmi
+code-creation,BytecodeHandler,0,18053,0x557426419fc0,600,BitwiseOrSmi
+code-creation,BytecodeHandler,0,18062,0x55742641a220,600,BitwiseXorSmi
+code-creation,BytecodeHandler,0,18071,0x55742641a480,600,BitwiseAndSmi
+code-creation,BytecodeHandler,0,18080,0x55742641a6e0,600,ShiftLeftSmi
+code-creation,BytecodeHandler,0,18089,0x55742641a940,600,ShiftRightSmi
+code-creation,BytecodeHandler,0,18098,0x55742641aba0,604,ShiftRightLogicalSmi
+code-creation,BytecodeHandler,0,18107,0x55742641ae00,628,Inc
+code-creation,BytecodeHandler,0,18120,0x55742641b080,632,Dec
+code-creation,BytecodeHandler,0,18129,0x55742641b300,608,Negate
+code-creation,BytecodeHandler,0,18141,0x55742641b580,596,BitwiseNot
+code-creation,BytecodeHandler,0,18149,0x55742641b7e0,124,ToBooleanLogicalNot
+code-creation,BytecodeHandler,0,18159,0x55742641b860,44,LogicalNot
+code-creation,BytecodeHandler,0,18168,0x55742641b8a0,212,TypeOf
+code-creation,BytecodeHandler,0,18176,0x55742641b980,112,DeletePropertyStrict
+code-creation,BytecodeHandler,0,18186,0x55742641ba00,108,DeletePropertySloppy
+code-creation,BytecodeHandler,0,18195,0x55742641ba80,44,GetSuperConstructor
+code-creation,BytecodeHandler,0,18205,0x55742641bac0,596,CallAnyReceiver
+code-creation,BytecodeHandler,0,18215,0x55742641bd20,596,CallProperty
+code-creation,BytecodeHandler,0,18224,0x55742641bf80,596,CallProperty0
+code-creation,BytecodeHandler,0,18234,0x55742641c1e0,616,CallProperty1
+code-creation,BytecodeHandler,0,18242,0x55742641c460,628,CallProperty2
+code-creation,BytecodeHandler,0,18252,0x55742641c6e0,604,CallUndefinedReceiver
+code-creation,BytecodeHandler,0,18261,0x55742641c940,644,CallUndefinedReceiver0
+code-creation,BytecodeHandler,0,18270,0x55742641cbe0,620,CallUndefinedReceiver1
+code-creation,BytecodeHandler,0,18279,0x55742641ce60,636,CallUndefinedReceiver2
+code-creation,BytecodeHandler,0,18289,0x55742641d0e0,60,CallNoFeedback
+code-creation,BytecodeHandler,0,18298,0x55742641d120,596,CallWithSpread
+code-creation,BytecodeHandler,0,18307,0x55742641d380,128,CallRuntime
+code-creation,BytecodeHandler,0,18316,0x55742641d420,160,CallRuntimeForPair
+code-creation,BytecodeHandler,0,18326,0x55742641d4e0,92,CallJSRuntime
+code-creation,BytecodeHandler,0,18335,0x55742641d540,1628,InvokeIntrinsic
+code-creation,BytecodeHandler,0,18344,0x55742641dba0,1124,Construct
+code-creation,BytecodeHandler,0,18353,0x55742641e020,576,ConstructWithSpread
+code-creation,BytecodeHandler,0,18362,0x55742641e280,1848,TestEqual
+code-creation,BytecodeHandler,0,18371,0x55742641e9c0,1036,TestEqualStrict
+code-creation,BytecodeHandler,0,18380,0x55742641ede0,1364,TestLessThan
+code-creation,BytecodeHandler,0,18389,0x55742641f340,1364,TestGreaterThan
+code-creation,BytecodeHandler,0,18398,0x55742641f8a0,1364,TestLessThanOrEqual
+code-creation,BytecodeHandler,0,18408,0x55742641fe00,1364,TestGreaterThanOrEqual
+code-creation,BytecodeHandler,0,18417,0x557426420360,52,TestReferenceEqual
+code-creation,BytecodeHandler,0,18426,0x5574264203a0,880,TestInstanceOf
+code-creation,BytecodeHandler,0,18435,0x557426420720,164,TestIn
+code-creation,BytecodeHandler,0,18444,0x5574264207e0,60,TestUndetectable
+code-creation,BytecodeHandler,0,18453,0x557426420820,44,TestNull
+code-creation,BytecodeHandler,0,18462,0x557426420860,44,TestUndefined
+code-creation,BytecodeHandler,0,18471,0x5574264208a0,376,TestTypeOf
+code-creation,BytecodeHandler,0,18480,0x557426420a20,108,ToName
+code-creation,BytecodeHandler,0,18489,0x557426420aa0,208,ToNumber
+code-creation,BytecodeHandler,0,18498,0x557426420b80,224,ToNumeric
+code-creation,BytecodeHandler,0,18509,0x557426420c80,108,ToObject
+code-creation,BytecodeHandler,0,18518,0x557426420d00,116,ToString
+code-creation,BytecodeHandler,0,18526,0x557426420d80,424,CreateRegExpLiteral
+code-creation,BytecodeHandler,0,18536,0x557426420f40,1472,CreateArrayLiteral
+code-creation,BytecodeHandler,0,18545,0x557426421520,92,CreateArrayFromIterable
+code-creation,BytecodeHandler,0,18555,0x557426421580,836,CreateEmptyArrayLiteral
+code-creation,BytecodeHandler,0,18564,0x5574264218e0,2224,CreateObjectLiteral
+code-creation,BytecodeHandler,0,18573,0x5574264221a0,224,CreateEmptyObjectLiteral
+code-creation,BytecodeHandler,0,18583,0x5574264222a0,176,CloneObject
+code-creation,BytecodeHandler,0,18592,0x557426422360,224,GetTemplateObject
+code-creation,BytecodeHandler,0,18601,0x557426422460,332,CreateClosure
+code-creation,BytecodeHandler,0,18610,0x5574264225c0,128,CreateBlockContext
+code-creation,BytecodeHandler,0,18619,0x557426422660,140,CreateCatchContext
+code-creation,BytecodeHandler,0,18629,0x557426422700,276,CreateFunctionContext
+code-creation,BytecodeHandler,0,18638,0x557426422820,276,CreateEvalContext
+code-creation,BytecodeHandler,0,18647,0x557426422940,140,CreateWithContext
+code-creation,BytecodeHandler,0,18659,0x5574264229e0,1576,CreateMappedArguments
+code-creation,BytecodeHandler,0,18669,0x557426423020,572,CreateUnmappedArguments
+code-creation,BytecodeHandler,0,18678,0x557426423260,604,CreateRestParameter
+code-creation,BytecodeHandler,0,18687,0x5574264234c0,456,JumpLoop
+code-creation,BytecodeHandler,0,18696,0x5574264236a0,44,Jump
+code-creation,BytecodeHandler,0,18705,0x5574264236e0,64,JumpConstant
+code-creation,BytecodeHandler,0,18714,0x557426423740,88,JumpIfNullConstant
+code-creation,BytecodeHandler,0,18723,0x5574264237a0,88,JumpIfNotNullConstant
+code-creation,BytecodeHandler,0,18733,0x557426423800,88,JumpIfUndefinedConstant
+code-creation,BytecodeHandler,0,18742,0x557426423860,88,JumpIfNotUndefinedConstant
+code-creation,BytecodeHandler,0,18752,0x5574264238c0,96,JumpIfUndefinedOrNullConstant
+code-creation,BytecodeHandler,0,18762,0x557426423940,88,JumpIfTrueConstant
+code-creation,BytecodeHandler,0,18771,0x5574264239a0,88,JumpIfFalseConstant
+code-creation,BytecodeHandler,0,18780,0x557426423a00,96,JumpIfJSReceiverConstant
+code-creation,BytecodeHandler,0,18790,0x557426423a80,164,JumpIfToBooleanTrueConstant
+code-creation,BytecodeHandler,0,18799,0x557426423b40,164,JumpIfToBooleanFalseConstant
+code-creation,BytecodeHandler,0,18810,0x557426423c00,148,JumpIfToBooleanTrue
+code-creation,BytecodeHandler,0,18820,0x557426423ca0,148,JumpIfToBooleanFalse
+code-creation,BytecodeHandler,0,18829,0x557426423d40,68,JumpIfTrue
+code-creation,BytecodeHandler,0,18838,0x557426423da0,68,JumpIfFalse
+code-creation,BytecodeHandler,0,18847,0x557426423e00,68,JumpIfNull
+code-creation,BytecodeHandler,0,18856,0x557426423e60,68,JumpIfNotNull
+code-creation,BytecodeHandler,0,18865,0x557426423ec0,68,JumpIfUndefined
+code-creation,BytecodeHandler,0,18874,0x557426423f20,68,JumpIfNotUndefined
+code-creation,BytecodeHandler,0,18883,0x557426423f80,80,JumpIfUndefinedOrNull
+code-creation,BytecodeHandler,0,18893,0x557426423fe0,80,JumpIfJSReceiver
+code-creation,BytecodeHandler,0,18902,0x557426424040,112,SwitchOnSmiNoFeedback
+code-creation,BytecodeHandler,0,18911,0x5574264240c0,484,ForInEnumerate
+code-creation,BytecodeHandler,0,18920,0x5574264242c0,296,ForInPrepare
+code-creation,BytecodeHandler,0,18929,0x557426424400,64,ForInContinue
+code-creation,BytecodeHandler,0,18938,0x557426424460,260,ForInNext
+code-creation,BytecodeHandler,0,18947,0x557426424580,36,ForInStep
+code-creation,BytecodeHandler,0,18956,0x5574264245c0,36,SetPendingMessage
+code-creation,BytecodeHandler,0,18965,0x557426424600,100,Throw
+code-creation,BytecodeHandler,0,18974,0x557426424680,100,ReThrow
+code-creation,BytecodeHandler,0,18983,0x557426424700,108,Return
+code-creation,BytecodeHandler,0,18991,0x557426424780,188,ThrowReferenceErrorIfHole
+code-creation,BytecodeHandler,0,19001,0x557426424840,120,ThrowSuperNotCalledIfHole
+code-creation,BytecodeHandler,0,19011,0x5574264248c0,120,ThrowSuperAlreadyCalledIfNotHole
+code-creation,BytecodeHandler,0,19020,0x557426424940,148,ThrowIfNotSuperConstructor
+code-creation,BytecodeHandler,0,19030,0x5574264249e0,128,SwitchOnGeneratorState
+code-creation,BytecodeHandler,0,19039,0x557426424a80,580,SuspendGenerator
+code-creation,BytecodeHandler,0,19049,0x557426424ce0,176,ResumeGenerator
+code-creation,BytecodeHandler,0,19058,0x557426424da0,164,GetIterator
+code-creation,BytecodeHandler,0,19067,0x557426424e60,100,Debugger
+code-creation,BytecodeHandler,0,19076,0x557426424ee0,116,IncBlockCounter
+code-creation,BytecodeHandler,0,19085,0x557426424f60,48,Abort
+code-creation,BytecodeHandler,0,19094,0x557426424fa0,32,Star0
+code-creation,BytecodeHandler,0,19104,0x557426424fe0,52,Illegal
+code-creation,BytecodeHandler,0,19114,0x557426425020,204,DebugBreak1.Wide
+code-creation,BytecodeHandler,0,19123,0x557426425100,204,DebugBreak2.Wide
+code-creation,BytecodeHandler,0,19132,0x5574264251e0,204,DebugBreak3.Wide
+code-creation,BytecodeHandler,0,19141,0x5574264252c0,204,DebugBreak4.Wide
+code-creation,BytecodeHandler,0,19151,0x5574264253a0,204,DebugBreak5.Wide
+code-creation,BytecodeHandler,0,19160,0x557426425480,204,DebugBreak6.Wide
+code-creation,BytecodeHandler,0,19169,0x557426425560,28,LdaSmi.Wide
+code-creation,BytecodeHandler,0,19185,0x557426425580,40,LdaConstant.Wide
+code-creation,BytecodeHandler,0,19194,0x5574264255c0,3908,LdaGlobal.Wide
+code-creation,BytecodeHandler,0,19208,0x557426426520,3800,LdaGlobalInsideTypeof.Wide
+code-creation,BytecodeHandler,0,19218,0x557426427400,180,StaGlobal.Wide
+code-creation,BytecodeHandler,0,19227,0x5574264274c0,40,PushContext.Wide
+code-creation,BytecodeHandler,0,19236,0x557426427500,36,PopContext.Wide
+code-creation,BytecodeHandler,0,19245,0x557426427540,100,LdaContextSlot.Wide
+code-creation,BytecodeHandler,0,19255,0x5574264275c0,100,LdaImmutableContextSlot.Wide
+code-creation,BytecodeHandler,0,19264,0x557426427640,52,LdaCurrentContextSlot.Wide
+code-creation,BytecodeHandler,0,19274,0x557426427680,52,LdaImmutableCurrentContextSlot.Wide
+code-creation,BytecodeHandler,0,19284,0x5574264276c0,176,StaContextSlot.Wide
+code-creation,BytecodeHandler,0,19293,0x557426427780,128,StaCurrentContextSlot.Wide
+code-creation,BytecodeHandler,0,19303,0x557426427820,128,LdaLookupSlot.Wide
+code-creation,BytecodeHandler,0,19312,0x5574264278c0,260,LdaLookupContextSlot.Wide
+code-creation,BytecodeHandler,0,19322,0x5574264279e0,4000,LdaLookupGlobalSlot.Wide
+code-creation,BytecodeHandler,0,19331,0x5574264289a0,128,LdaLookupSlotInsideTypeof.Wide
+code-creation,BytecodeHandler,0,19342,0x557426428a40,260,LdaLookupContextSlotInsideTypeof.Wide
+code-creation,BytecodeHandler,0,19352,0x557426428b60,3964,LdaLookupGlobalSlotInsideTypeof.Wide
+code-creation,BytecodeHandler,0,19362,0x557426429ae0,216,StaLookupSlot.Wide
+code-creation,BytecodeHandler,0,19371,0x557426429bc0,32,Ldar.Wide
+code-creation,BytecodeHandler,0,19380,0x557426429c00,32,Star.Wide
+code-creation,BytecodeHandler,0,19389,0x557426429c40,40,Mov.Wide
+code-creation,BytecodeHandler,0,19398,0x557426429c80,4508,LdaNamedProperty.Wide
+code-creation,BytecodeHandler,0,19407,0x55742642ae20,128,LdaNamedPropertyNoFeedback.Wide
+code-creation,BytecodeHandler,0,19419,0x55742642aec0,196,LdaNamedPropertyFromSuper.Wide
+code-creation,BytecodeHandler,0,19429,0x55742642afa0,164,LdaKeyedProperty.Wide
+code-creation,BytecodeHandler,0,19438,0x55742642b060,188,LdaModuleVariable.Wide
+code-creation,BytecodeHandler,0,19448,0x55742642b120,320,StaModuleVariable.Wide
+code-creation,BytecodeHandler,0,19457,0x55742642b280,184,StaNamedProperty.Wide
+code-creation,BytecodeHandler,0,19467,0x55742642b340,140,StaNamedPropertyNoFeedback.Wide
+code-creation,BytecodeHandler,0,19476,0x55742642b3e0,184,StaNamedOwnProperty.Wide
+code-creation,BytecodeHandler,0,19486,0x55742642b4a0,176,StaKeyedProperty.Wide
+code-creation,BytecodeHandler,0,19495,0x55742642b560,176,StaInArrayLiteral.Wide
+code-creation,BytecodeHandler,0,19505,0x55742642b620,200,StaDataPropertyInLiteral.Wide
+code-creation,BytecodeHandler,0,19515,0x55742642b700,168,CollectTypeProfile.Wide
+code-creation,BytecodeHandler,0,19524,0x55742642b7c0,948,Add.Wide
+code-creation,BytecodeHandler,0,19533,0x55742642bb80,1008,Sub.Wide
+code-creation,BytecodeHandler,0,19542,0x55742642bf80,1104,Mul.Wide
+code-creation,BytecodeHandler,0,19551,0x55742642c3e0,952,Div.Wide
+code-creation,BytecodeHandler,0,19559,0x55742642c7a0,1020,Mod.Wide
+code-creation,BytecodeHandler,0,19568,0x55742642cba0,188,Exp.Wide
+code-creation,BytecodeHandler,0,19577,0x55742642cc60,996,BitwiseOr.Wide
+code-creation,BytecodeHandler,0,19586,0x55742642d060,992,BitwiseXor.Wide
+code-creation,BytecodeHandler,0,19595,0x55742642d460,992,BitwiseAnd.Wide
+code-creation,BytecodeHandler,0,19604,0x55742642d860,992,ShiftLeft.Wide
+code-creation,BytecodeHandler,0,19613,0x55742642dc60,992,ShiftRight.Wide
+code-creation,BytecodeHandler,0,19623,0x55742642e060,996,ShiftRightLogical.Wide
+code-creation,BytecodeHandler,0,19632,0x55742642e460,884,AddSmi.Wide
+code-creation,BytecodeHandler,0,19641,0x55742642e7e0,944,SubSmi.Wide
+code-creation,BytecodeHandler,0,19650,0x55742642eba0,1052,MulSmi.Wide
+code-creation,BytecodeHandler,0,19659,0x55742642efc0,936,DivSmi.Wide
+code-creation,BytecodeHandler,0,19668,0x55742642f380,936,ModSmi.Wide
+code-creation,BytecodeHandler,0,19677,0x55742642f740,184,ExpSmi.Wide
+code-creation,BytecodeHandler,0,19689,0x55742642f800,604,BitwiseOrSmi.Wide
+code-creation,BytecodeHandler,0,19698,0x55742642fa60,604,BitwiseXorSmi.Wide
+code-creation,BytecodeHandler,0,19707,0x55742642fcc0,604,BitwiseAndSmi.Wide
+code-creation,BytecodeHandler,0,19718,0x55742642ff20,604,ShiftLeftSmi.Wide
+code-creation,BytecodeHandler,0,19727,0x557426430180,604,ShiftRightSmi.Wide
+code-creation,BytecodeHandler,0,19737,0x5574264303e0,608,ShiftRightLogicalSmi.Wide
+code-creation,BytecodeHandler,0,19746,0x557426430660,592,Inc.Wide
+code-creation,BytecodeHandler,0,19755,0x5574264308c0,592,Dec.Wide
+code-creation,BytecodeHandler,0,19764,0x557426430b20,612,Negate.Wide
+code-creation,BytecodeHandler,0,19773,0x557426430da0,600,BitwiseNot.Wide
+code-creation,BytecodeHandler,0,19782,0x557426431000,116,DeletePropertyStrict.Wide
+code-creation,BytecodeHandler,0,19792,0x557426431080,112,DeletePropertySloppy.Wide
+code-creation,BytecodeHandler,0,19801,0x557426431100,44,GetSuperConstructor.Wide
+code-creation,BytecodeHandler,0,19811,0x557426431140,600,CallAnyReceiver.Wide
+code-creation,BytecodeHandler,0,19820,0x5574264313a0,600,CallProperty.Wide
+code-creation,BytecodeHandler,0,19829,0x557426431600,600,CallProperty0.Wide
+code-creation,BytecodeHandler,0,19839,0x557426431860,616,CallProperty1.Wide
+code-creation,BytecodeHandler,0,19848,0x557426431ae0,628,CallProperty2.Wide
+code-creation,BytecodeHandler,0,19857,0x557426431d60,604,CallUndefinedReceiver.Wide
+code-creation,BytecodeHandler,0,19867,0x557426431fc0,644,CallUndefinedReceiver0.Wide
+code-creation,BytecodeHandler,0,19876,0x557426432260,624,CallUndefinedReceiver1.Wide
+code-creation,BytecodeHandler,0,19886,0x5574264324e0,636,CallUndefinedReceiver2.Wide
+code-creation,BytecodeHandler,0,19896,0x557426432760,60,CallNoFeedback.Wide
+code-creation,BytecodeHandler,0,19905,0x5574264327a0,600,CallWithSpread.Wide
+code-creation,BytecodeHandler,0,19914,0x557426432a00,132,CallRuntime.Wide
+code-creation,BytecodeHandler,0,19923,0x557426432aa0,172,CallRuntimeForPair.Wide
+code-creation,BytecodeHandler,0,19933,0x557426432b60,92,CallJSRuntime.Wide
+code-creation,BytecodeHandler,0,19942,0x557426432bc0,1632,InvokeIntrinsic.Wide
+code-creation,BytecodeHandler,0,19952,0x557426433240,1068,Construct.Wide
+code-creation,BytecodeHandler,0,19961,0x557426433680,512,ConstructWithSpread.Wide
+code-creation,BytecodeHandler,0,19970,0x5574264338a0,1868,TestEqual.Wide
+code-creation,BytecodeHandler,0,19980,0x557426434000,1040,TestEqualStrict.Wide
+code-creation,BytecodeHandler,0,19989,0x557426434420,1364,TestLessThan.Wide
+code-creation,BytecodeHandler,0,19998,0x557426434980,1364,TestGreaterThan.Wide
+code-creation,BytecodeHandler,0,20007,0x557426434ee0,1364,TestLessThanOrEqual.Wide
+code-creation,BytecodeHandler,0,20019,0x557426435440,1364,TestGreaterThanOrEqual.Wide
+code-creation,BytecodeHandler,0,20028,0x5574264359a0,52,TestReferenceEqual.Wide
+code-creation,BytecodeHandler,0,20038,0x5574264359e0,884,TestInstanceOf.Wide
+code-creation,BytecodeHandler,0,20047,0x557426435d60,164,TestIn.Wide
+code-creation,BytecodeHandler,0,20056,0x557426435e20,112,ToName.Wide
+code-creation,BytecodeHandler,0,20065,0x557426435ea0,212,ToNumber.Wide
+code-creation,BytecodeHandler,0,20074,0x557426435f80,228,ToNumeric.Wide
+code-creation,BytecodeHandler,0,20083,0x557426436080,112,ToObject.Wide
+code-creation,BytecodeHandler,0,20092,0x557426436100,424,CreateRegExpLiteral.Wide
+code-creation,BytecodeHandler,0,20102,0x5574264362c0,1380,CreateArrayLiteral.Wide
+code-creation,BytecodeHandler,0,20112,0x557426436840,836,CreateEmptyArrayLiteral.Wide
+code-creation,BytecodeHandler,0,20121,0x557426436ba0,2124,CreateObjectLiteral.Wide
+code-creation,BytecodeHandler,0,20131,0x557426437400,176,CloneObject.Wide
+code-creation,BytecodeHandler,0,20140,0x5574264374c0,172,GetTemplateObject.Wide
+code-creation,BytecodeHandler,0,20149,0x557426437580,336,CreateClosure.Wide
+code-creation,BytecodeHandler,0,20159,0x5574264376e0,128,CreateBlockContext.Wide
+code-creation,BytecodeHandler,0,20168,0x557426437780,144,CreateCatchContext.Wide
+code-creation,BytecodeHandler,0,20178,0x557426437820,276,CreateFunctionContext.Wide
+code-creation,BytecodeHandler,0,20198,0x557426437940,276,CreateEvalContext.Wide
+code-creation,BytecodeHandler,0,20207,0x557426437a60,144,CreateWithContext.Wide
+code-creation,BytecodeHandler,0,20216,0x557426437b00,464,JumpLoop.Wide
+code-creation,BytecodeHandler,0,20225,0x557426437ce0,44,Jump.Wide
+code-creation,BytecodeHandler,0,20234,0x557426437d20,64,JumpConstant.Wide
+code-creation,BytecodeHandler,0,20247,0x557426437d80,88,JumpIfNullConstant.Wide
+code-creation,BytecodeHandler,0,20257,0x557426437de0,88,JumpIfNotNullConstant.Wide
+code-creation,BytecodeHandler,0,20266,0x557426437e40,88,JumpIfUndefinedConstant.Wide
+code-creation,BytecodeHandler,0,20276,0x557426437ea0,88,JumpIfNotUndefinedConstant.Wide
+code-creation,BytecodeHandler,0,20286,0x557426437f00,96,JumpIfUndefinedOrNullConstant.Wide
+code-creation,BytecodeHandler,0,20296,0x557426437f80,88,JumpIfTrueConstant.Wide
+code-creation,BytecodeHandler,0,20305,0x557426437fe0,88,JumpIfFalseConstant.Wide
+code-creation,BytecodeHandler,0,20315,0x557426438040,96,JumpIfJSReceiverConstant.Wide
+code-creation,BytecodeHandler,0,20325,0x5574264380c0,164,JumpIfToBooleanTrueConstant.Wide
+code-creation,BytecodeHandler,0,20336,0x557426438180,164,JumpIfToBooleanFalseConstant.Wide
+code-creation,BytecodeHandler,0,20346,0x557426438240,148,JumpIfToBooleanTrue.Wide
+code-creation,BytecodeHandler,0,20356,0x5574264382e0,148,JumpIfToBooleanFalse.Wide
+code-creation,BytecodeHandler,0,20365,0x557426438380,68,JumpIfTrue.Wide
+code-creation,BytecodeHandler,0,20375,0x5574264383e0,68,JumpIfFalse.Wide
+code-creation,BytecodeHandler,0,20384,0x557426438440,68,JumpIfNull.Wide
+code-creation,BytecodeHandler,0,20393,0x5574264384a0,68,JumpIfNotNull.Wide
+code-creation,BytecodeHandler,0,20402,0x557426438500,68,JumpIfUndefined.Wide
+code-creation,BytecodeHandler,0,20412,0x557426438560,68,JumpIfNotUndefined.Wide
+code-creation,BytecodeHandler,0,20421,0x5574264385c0,80,JumpIfUndefinedOrNull.Wide
+code-creation,BytecodeHandler,0,20431,0x557426438620,80,JumpIfJSReceiver.Wide
+code-creation,BytecodeHandler,0,20440,0x557426438680,112,SwitchOnSmiNoFeedback.Wide
+code-creation,BytecodeHandler,0,20450,0x557426438700,484,ForInEnumerate.Wide
+code-creation,BytecodeHandler,0,20460,0x557426438900,296,ForInPrepare.Wide
+code-creation,BytecodeHandler,0,20469,0x557426438a40,64,ForInContinue.Wide
+code-creation,BytecodeHandler,0,20478,0x557426438aa0,260,ForInNext.Wide
+code-creation,BytecodeHandler,0,20487,0x557426438bc0,36,ForInStep.Wide
+code-creation,BytecodeHandler,0,20496,0x557426438c00,148,ThrowReferenceErrorIfHole.Wide
+code-creation,BytecodeHandler,0,20506,0x557426438ca0,148,ThrowIfNotSuperConstructor.Wide
+code-creation,BytecodeHandler,0,20516,0x557426438d40,128,SwitchOnGeneratorState.Wide
+code-creation,BytecodeHandler,0,20525,0x557426438de0,592,SuspendGenerator.Wide
+code-creation,BytecodeHandler,0,20535,0x557426439040,176,ResumeGenerator.Wide
+code-creation,BytecodeHandler,0,20544,0x557426439100,164,GetIterator.Wide
+code-creation,BytecodeHandler,0,20553,0x5574264391c0,120,IncBlockCounter.Wide
+code-creation,BytecodeHandler,0,20563,0x557426439240,52,Abort.Wide
+code-creation,BytecodeHandler,0,20572,0x557426439280,204,DebugBreak1.ExtraWide
+code-creation,BytecodeHandler,0,20581,0x557426439360,204,DebugBreak2.ExtraWide
+code-creation,BytecodeHandler,0,20590,0x557426439440,204,DebugBreak3.ExtraWide
+code-creation,BytecodeHandler,0,20600,0x557426439520,204,DebugBreak4.ExtraWide
+code-creation,BytecodeHandler,0,20609,0x557426439600,204,DebugBreak5.ExtraWide
+code-creation,BytecodeHandler,0,20618,0x5574264396e0,204,DebugBreak6.ExtraWide
+code-creation,BytecodeHandler,0,20628,0x5574264397c0,24,LdaSmi.ExtraWide
+code-creation,BytecodeHandler,0,20638,0x5574264397e0,36,LdaConstant.ExtraWide
+code-creation,BytecodeHandler,0,20647,0x557426439820,3896,LdaGlobal.ExtraWide
+code-creation,BytecodeHandler,0,20657,0x55742643a760,3788,LdaGlobalInsideTypeof.ExtraWide
+code-creation,BytecodeHandler,0,20667,0x55742643b640,180,StaGlobal.ExtraWide
+code-creation,BytecodeHandler,0,20676,0x55742643b700,36,PushContext.ExtraWide
+code-creation,BytecodeHandler,0,20685,0x55742643b740,32,PopContext.ExtraWide
+code-creation,BytecodeHandler,0,20698,0x55742643b780,96,LdaContextSlot.ExtraWide
+code-creation,BytecodeHandler,0,20707,0x55742643b800,96,LdaImmutableContextSlot.ExtraWide
+code-creation,BytecodeHandler,0,20717,0x55742643b880,52,LdaCurrentContextSlot.ExtraWide
+code-creation,BytecodeHandler,0,20727,0x55742643b8c0,52,LdaImmutableCurrentContextSlot.ExtraWide
+code-creation,BytecodeHandler,0,20737,0x55742643b900,172,StaContextSlot.ExtraWide
+code-creation,BytecodeHandler,0,20747,0x55742643b9c0,128,StaCurrentContextSlot.ExtraWide
+code-creation,BytecodeHandler,0,20757,0x55742643ba60,128,LdaLookupSlot.ExtraWide
+code-creation,BytecodeHandler,0,20766,0x55742643bb00,260,LdaLookupContextSlot.ExtraWide
+code-creation,BytecodeHandler,0,20776,0x55742643bc20,3988,LdaLookupGlobalSlot.ExtraWide
+code-creation,BytecodeHandler,0,20786,0x55742643cbc0,128,LdaLookupSlotInsideTypeof.ExtraWide
+code-creation,BytecodeHandler,0,20796,0x55742643cc60,260,LdaLookupContextSlotInsideTypeof.ExtraWide
+code-creation,BytecodeHandler,0,20806,0x55742643cd80,3952,LdaLookupGlobalSlotInsideTypeof.ExtraWide
+code-creation,BytecodeHandler,0,20817,0x55742643dd00,212,StaLookupSlot.ExtraWide
+code-creation,BytecodeHandler,0,20826,0x55742643dde0,32,Ldar.ExtraWide
+code-creation,BytecodeHandler,0,20835,0x55742643de20,28,Star.ExtraWide
+code-creation,BytecodeHandler,0,20845,0x55742643de40,40,Mov.ExtraWide
+code-creation,BytecodeHandler,0,20854,0x55742643de80,4492,LdaNamedProperty.ExtraWide
+code-creation,BytecodeHandler,0,20863,0x55742643f020,128,LdaNamedPropertyNoFeedback.ExtraWide
+code-creation,BytecodeHandler,0,20874,0x55742643f0c0,192,LdaNamedPropertyFromSuper.ExtraWide
+code-creation,BytecodeHandler,0,20884,0x55742643f1a0,164,LdaKeyedProperty.ExtraWide
+code-creation,BytecodeHandler,0,20893,0x55742643f260,188,LdaModuleVariable.ExtraWide
+code-creation,BytecodeHandler,0,20903,0x55742643f320,320,StaModuleVariable.ExtraWide
+code-creation,BytecodeHandler,0,20912,0x55742643f480,184,StaNamedProperty.ExtraWide
+code-creation,BytecodeHandler,0,20922,0x55742643f540,140,StaNamedPropertyNoFeedback.ExtraWide
+code-creation,BytecodeHandler,0,20932,0x55742643f5e0,184,StaNamedOwnProperty.ExtraWide
+code-creation,BytecodeHandler,0,20942,0x55742643f6a0,172,StaKeyedProperty.ExtraWide
+code-creation,BytecodeHandler,0,20953,0x55742643f760,172,StaInArrayLiteral.ExtraWide
+code-creation,BytecodeHandler,0,20963,0x55742643f820,196,StaDataPropertyInLiteral.ExtraWide
+code-creation,BytecodeHandler,0,20973,0x55742643f900,168,CollectTypeProfile.ExtraWide
+code-creation,BytecodeHandler,0,20982,0x55742643f9c0,948,Add.ExtraWide
+code-creation,BytecodeHandler,0,20991,0x55742643fd80,1008,Sub.ExtraWide
+code-creation,BytecodeHandler,0,21000,0x557426440180,1104,Mul.ExtraWide
+code-creation,BytecodeHandler,0,21010,0x5574264405e0,952,Div.ExtraWide
+code-creation,BytecodeHandler,0,21019,0x5574264409a0,1016,Mod.ExtraWide
+code-creation,BytecodeHandler,0,21028,0x557426440da0,188,Exp.ExtraWide
+code-creation,BytecodeHandler,0,21037,0x557426440e60,992,BitwiseOr.ExtraWide
+code-creation,BytecodeHandler,0,21046,0x557426441260,988,BitwiseXor.ExtraWide
+code-creation,BytecodeHandler,0,21055,0x557426441640,988,BitwiseAnd.ExtraWide
+code-creation,BytecodeHandler,0,21065,0x557426441a20,988,ShiftLeft.ExtraWide
+code-creation,BytecodeHandler,0,21074,0x557426441e00,988,ShiftRight.ExtraWide
+code-creation,BytecodeHandler,0,21083,0x5574264421e0,992,ShiftRightLogical.ExtraWide
+code-creation,BytecodeHandler,0,21093,0x5574264425e0,884,AddSmi.ExtraWide
+code-creation,BytecodeHandler,0,21102,0x557426442960,944,SubSmi.ExtraWide
+code-creation,BytecodeHandler,0,21111,0x557426442d20,1048,MulSmi.ExtraWide
+code-creation,BytecodeHandler,0,21120,0x557426443140,936,DivSmi.ExtraWide
+code-creation,BytecodeHandler,0,21130,0x557426443500,932,ModSmi.ExtraWide
+code-creation,BytecodeHandler,0,21139,0x5574264438c0,180,ExpSmi.ExtraWide
+code-creation,BytecodeHandler,0,21148,0x557426443980,604,BitwiseOrSmi.ExtraWide
+code-creation,BytecodeHandler,0,21157,0x557426443be0,604,BitwiseXorSmi.ExtraWide
+code-creation,BytecodeHandler,0,21167,0x557426443e40,604,BitwiseAndSmi.ExtraWide
+code-creation,BytecodeHandler,0,21185,0x5574264440a0,604,ShiftLeftSmi.ExtraWide
+code-creation,BytecodeHandler,0,21194,0x557426444300,604,ShiftRightSmi.ExtraWide
+code-creation,BytecodeHandler,0,21204,0x557426444560,608,ShiftRightLogicalSmi.ExtraWide
+code-creation,BytecodeHandler,0,21213,0x5574264447e0,588,Inc.ExtraWide
+code-creation,BytecodeHandler,0,21223,0x557426444a40,592,Dec.ExtraWide
+code-creation,BytecodeHandler,0,21232,0x557426444ca0,612,Negate.ExtraWide
+code-creation,BytecodeHandler,0,21241,0x557426444f20,600,BitwiseNot.ExtraWide
+code-creation,BytecodeHandler,0,21250,0x557426445180,112,DeletePropertyStrict.ExtraWide
+code-creation,BytecodeHandler,0,21262,0x557426445200,112,DeletePropertySloppy.ExtraWide
+code-creation,BytecodeHandler,0,21272,0x557426445280,40,GetSuperConstructor.ExtraWide
+code-creation,BytecodeHandler,0,21281,0x5574264452c0,596,CallAnyReceiver.ExtraWide
+code-creation,BytecodeHandler,0,21291,0x557426445520,596,CallProperty.ExtraWide
+code-creation,BytecodeHandler,0,21300,0x557426445780,596,CallProperty0.ExtraWide
+code-creation,BytecodeHandler,0,21314,0x5574264459e0,612,CallProperty1.ExtraWide
+code-creation,BytecodeHandler,0,21323,0x557426445c60,624,CallProperty2.ExtraWide
+code-creation,BytecodeHandler,0,21333,0x557426445ee0,600,CallUndefinedReceiver.ExtraWide
+code-creation,BytecodeHandler,0,21343,0x557426446140,644,CallUndefinedReceiver0.ExtraWide
+code-creation,BytecodeHandler,0,21353,0x5574264463e0,620,CallUndefinedReceiver1.ExtraWide
+code-creation,BytecodeHandler,0,21363,0x557426446660,632,CallUndefinedReceiver2.ExtraWide
+code-creation,BytecodeHandler,0,21373,0x5574264468e0,56,CallNoFeedback.ExtraWide
+code-creation,BytecodeHandler,0,21382,0x557426446920,596,CallWithSpread.ExtraWide
+code-creation,BytecodeHandler,0,21392,0x557426446b80,128,CallRuntime.ExtraWide
+code-creation,BytecodeHandler,0,21401,0x557426446c20,172,CallRuntimeForPair.ExtraWide
+code-creation,BytecodeHandler,0,21411,0x557426446ce0,92,CallJSRuntime.ExtraWide
+code-creation,BytecodeHandler,0,21420,0x557426446d40,1628,InvokeIntrinsic.ExtraWide
+code-creation,BytecodeHandler,0,21430,0x5574264473a0,1064,Construct.ExtraWide
+code-creation,BytecodeHandler,0,21439,0x5574264477e0,508,ConstructWithSpread.ExtraWide
+code-creation,BytecodeHandler,0,21449,0x5574264479e0,1864,TestEqual.ExtraWide
+code-creation,BytecodeHandler,0,21458,0x557426448140,1036,TestEqualStrict.ExtraWide
+code-creation,BytecodeHandler,0,21468,0x557426448560,1364,TestLessThan.ExtraWide
+code-creation,BytecodeHandler,0,21481,0x557426448ac0,1364,TestGreaterThan.ExtraWide
+code-creation,BytecodeHandler,0,21493,0x557426449020,1364,TestLessThanOrEqual.ExtraWide
+code-creation,BytecodeHandler,0,21506,0x557426449580,1364,TestGreaterThanOrEqual.ExtraWide
+code-creation,BytecodeHandler,0,21516,0x557426449ae0,52,TestReferenceEqual.ExtraWide
+code-creation,BytecodeHandler,0,21526,0x557426449b20,880,TestInstanceOf.ExtraWide
+code-creation,BytecodeHandler,0,21536,0x557426449ea0,164,TestIn.ExtraWide
+code-creation,BytecodeHandler,0,21545,0x557426449f60,112,ToName.ExtraWide
+code-creation,BytecodeHandler,0,21554,0x557426449fe0,208,ToNumber.ExtraWide
+code-creation,BytecodeHandler,0,21563,0x55742644a0c0,228,ToNumeric.ExtraWide
+code-creation,BytecodeHandler,0,21573,0x55742644a1c0,112,ToObject.ExtraWide
+code-creation,BytecodeHandler,0,21584,0x55742644a240,424,CreateRegExpLiteral.ExtraWide
+code-creation,BytecodeHandler,0,21594,0x55742644a400,1380,CreateArrayLiteral.ExtraWide
+code-creation,BytecodeHandler,0,21608,0x55742644a980,832,CreateEmptyArrayLiteral.ExtraWide
+code-creation,BytecodeHandler,0,21618,0x55742644ace0,2124,CreateObjectLiteral.ExtraWide
+code-creation,BytecodeHandler,0,21628,0x55742644b540,176,CloneObject.ExtraWide
+code-creation,BytecodeHandler,0,21638,0x55742644b600,172,GetTemplateObject.ExtraWide
+code-creation,BytecodeHandler,0,21647,0x55742644b6c0,336,CreateClosure.ExtraWide
+code-creation,BytecodeHandler,0,21657,0x55742644b820,128,CreateBlockContext.ExtraWide
+code-creation,BytecodeHandler,0,21666,0x55742644b8c0,140,CreateCatchContext.ExtraWide
+code-creation,BytecodeHandler,0,21680,0x55742644b960,272,CreateFunctionContext.ExtraWide
+code-creation,BytecodeHandler,0,21690,0x55742644ba80,272,CreateEvalContext.ExtraWide
+code-creation,BytecodeHandler,0,21700,0x55742644bba0,140,CreateWithContext.ExtraWide
+code-creation,BytecodeHandler,0,21710,0x55742644bc40,460,JumpLoop.ExtraWide
+code-creation,BytecodeHandler,0,21719,0x55742644be20,44,Jump.ExtraWide
+code-creation,BytecodeHandler,0,21729,0x55742644be60,64,JumpConstant.ExtraWide
+code-creation,BytecodeHandler,0,21738,0x55742644bec0,88,JumpIfNullConstant.ExtraWide
+code-creation,BytecodeHandler,0,21748,0x55742644bf20,88,JumpIfNotNullConstant.ExtraWide
+code-creation,BytecodeHandler,0,21758,0x55742644bf80,88,JumpIfUndefinedConstant.ExtraWide
+code-creation,BytecodeHandler,0,21768,0x55742644bfe0,88,JumpIfNotUndefinedConstant.ExtraWide
+code-creation,BytecodeHandler,0,21778,0x55742644c040,96,JumpIfUndefinedOrNullConstant.ExtraWide
+code-creation,BytecodeHandler,0,21788,0x55742644c0c0,88,JumpIfTrueConstant.ExtraWide
+code-creation,BytecodeHandler,0,21798,0x55742644c120,88,JumpIfFalseConstant.ExtraWide
+code-creation,BytecodeHandler,0,21808,0x55742644c180,96,JumpIfJSReceiverConstant.ExtraWide
+code-creation,BytecodeHandler,0,21818,0x55742644c200,164,JumpIfToBooleanTrueConstant.ExtraWide
+code-creation,BytecodeHandler,0,21828,0x55742644c2c0,164,JumpIfToBooleanFalseConstant.ExtraWide
+code-creation,BytecodeHandler,0,21838,0x55742644c380,148,JumpIfToBooleanTrue.ExtraWide
+code-creation,BytecodeHandler,0,21848,0x55742644c420,148,JumpIfToBooleanFalse.ExtraWide
+code-creation,BytecodeHandler,0,21858,0x55742644c4c0,68,JumpIfTrue.ExtraWide
+code-creation,BytecodeHandler,0,21867,0x55742644c520,68,JumpIfFalse.ExtraWide
+code-creation,BytecodeHandler,0,21877,0x55742644c580,68,JumpIfNull.ExtraWide
+code-creation,BytecodeHandler,0,21886,0x55742644c5e0,68,JumpIfNotNull.ExtraWide
+code-creation,BytecodeHandler,0,21896,0x55742644c640,68,JumpIfUndefined.ExtraWide
+code-creation,BytecodeHandler,0,21907,0x55742644c6a0,68,JumpIfNotUndefined.ExtraWide
+code-creation,BytecodeHandler,0,21917,0x55742644c700,76,JumpIfUndefinedOrNull.ExtraWide
+code-creation,BytecodeHandler,0,21926,0x55742644c760,76,JumpIfJSReceiver.ExtraWide
+code-creation,BytecodeHandler,0,21936,0x55742644c7c0,112,SwitchOnSmiNoFeedback.ExtraWide
+code-creation,BytecodeHandler,0,21946,0x55742644c840,484,ForInEnumerate.ExtraWide
+code-creation,BytecodeHandler,0,21956,0x55742644ca40,296,ForInPrepare.ExtraWide
+code-creation,BytecodeHandler,0,21965,0x55742644cb80,60,ForInContinue.ExtraWide
+code-creation,BytecodeHandler,0,21975,0x55742644cbc0,256,ForInNext.ExtraWide
+code-creation,BytecodeHandler,0,21984,0x55742644cce0,36,ForInStep.ExtraWide
+code-creation,BytecodeHandler,0,21994,0x55742644cd20,148,ThrowReferenceErrorIfHole.ExtraWide
+code-creation,BytecodeHandler,0,22004,0x55742644cdc0,144,ThrowIfNotSuperConstructor.ExtraWide
+code-creation,BytecodeHandler,0,22014,0x55742644ce60,128,SwitchOnGeneratorState.ExtraWide
+code-creation,BytecodeHandler,0,22024,0x55742644cf00,588,SuspendGenerator.ExtraWide
+code-creation,BytecodeHandler,0,22033,0x55742644d160,176,ResumeGenerator.ExtraWide
+code-creation,BytecodeHandler,0,22043,0x55742644d220,160,GetIterator.ExtraWide
+code-creation,BytecodeHandler,0,22052,0x55742644d2e0,120,IncBlockCounter.ExtraWide
+code-creation,BytecodeHandler,0,22062,0x55742644d360,52,Abort.ExtraWide
+tick,0x7f3662e68f6f,22077,0,0x0,6
+tick,0x7f3662def52c,22093,0,0x0,6
+tick,0x7f3662e68f6f,22103,0,0x0,6
+tick,0x7f3662def577,22113,0,0x0,6
+tick,0x557426454401,22128,0,0x0,6
+tick,0x7f3662dfac7e,22142,0,0x0,6
+tick,0x7f3662e68f6f,22156,0,0x0,6
+tick,0x7f3662e68f6f,22170,0,0x0,6
+tick,0x7f3662e68f6f,22184,0,0x0,6
+new,MemoryChunk,0x2ae708200000,262144
+new,MemoryChunk,0x2ae708240000,262144
+tick,0x5574260ac3a0,22383,0,0x0,5
+code-creation,Script,10,23305,0x2ae70821264a,128, test/mjsunit/tools/tickprocessor-test.js:1:1,0x2ae70821243c,~
+script-source,3,test/mjsunit/tools/tickprocessor-test.js,// Copyright 2020 the V8 project authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n// Sample file for creating tickprocessor-test.log\n"use strict"\n\nlet result;\n\nfunction loop() {\n let result = 0;\n for (let i = 0; i < 10_000_000; i++) {\n result = add(result\x2C 1);\n }\n return result;\n}\n\nfunction add(a\x2C b) {\n return a + b;\n}\n\n\nresult = loop();\nresult = loop();\n\n// Cause some IC misses\nfunction read_monomorphic(o) {\n return o.value\n}\n\nfunction read_polymorphic(o) {\n return o.value\n}\n\nfunction read_megamorphic(o) {\n return o.value\n}\n\nconst objects = [];\nfor (let i = 0; i < 100; i++) {\n const object = {};\n object['key' + i ];\n object['value'] = 1 + i/100;\n objects.push(object)\n}\n\nfunction ics() {\n result = 0;\n for (let i = 0; i < objects.length; i++) {\n result += read_monomorphic(objects[0]);\n result += read_polymorphic(objects[i % 3])\n result += read_megamorphic(objects[i]);\n }\n}\n\nfor (let i = 0; i < 100_000; i++) {\n ics();\n}\n
+code-source-info,0x2ae70821264a,3,0,1046,C6O0C11O237C12O237C14O417C18O426C21O424C23O434C27O443C30O441C32O645C34O645C36O662C38O667C40O667C45O698C47O704C52O717C55O710C58O726C63O749C66O746C69O742C73O757C76O765C81O765C86O675C91O649C94O1012C98O1017C104O1017C109O1037C113O1037C117O1029C122O999C127O1046,,
+tick,0x557426325820,23510,0,0x0,0
+code-creation,LazyCompile,10,23550,0x2ae708212ab2,39,loop test/mjsunit/tools/tickprocessor-test.js:10:14,0x2ae7082124c8,~
+code-source-info,0x2ae708212ab2,3,259,374,C0O279C2O297C4O302C10O302C15O327C22O336C28O317C33O284C36O358C38O372,,
+code-creation,LazyCompile,10,23599,0x2ae708212b62,6,add test/mjsunit/tools/tickprocessor-test.js:18:13,0x2ae7082124fc,~
+code-source-info,0x2ae708212b62,3,388,414,C0O399C2O408C5O412,,
+tick,0x557426070040,24524,0,0x0,4,0x557425e00550,0x2ae708212ad3,0x2ae70821265c
+new,MemoryChunk,0x2ae700080000,262144
+code-creation,LazyCompile,14,25309,0x2ae700084040,668,loop test/mjsunit/tools/tickprocessor-test.js:10:14,0x2ae7082124c8,*
+code-source-info,0x2ae700084040,3,259,374,C0O259C54O302C93O372C124O408I0C154O317C168O284C198O302C220O408I0C232O317C245O284C256O372C280O302C324O284C377O302C435O284C569O372,F0O336,S0x2ae7082124fc
+tick,0x2ae700084100,25586,0,0x0,0,0x2ae70821265c
+tick,0x2ae700084100,26724,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008411c,27733,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008411c,28797,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008412b,29864,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008412b,31001,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008412f,31996,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008412b,33131,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008412b,34126,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008412b,35268,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008412b,36259,0,0x0,0,0x2ae70821265c
+tick,0x2ae70008411c,37408,0,0x0,0,0x2ae708212665
+tick,0x2ae700084100,38388,0,0x0,0,0x2ae708212665
+tick,0x2ae70008411c,39531,0,0x0,0,0x2ae708212665
+tick,0x2ae700084103,40516,0,0x0,0,0x2ae708212665
+tick,0x2ae70008412f,41585,0,0x0,0,0x2ae708212665
+tick,0x2ae700084100,42737,0,0x0,0,0x2ae708212665
+tick,0x2ae700084100,43714,0,0x0,0,0x2ae708212665
+tick,0x2ae700084100,44853,0,0x0,0,0x2ae708212665
+tick,0x2ae70008412b,45845,0,0x0,0,0x2ae708212665
+tick,0x2ae70008412b,46998,0,0x0,0,0x2ae708212665
+code-creation,LazyCompile,10,47645,0x2ae708213eb6,146,ics test/mjsunit/tools/tickprocessor-test.js:47:13,0x2ae7082125cc,~
+code-source-info,0x2ae708213eb6,3,793,997,C0O800C4O807C10O827C12O832C14O834C17O842C21O832C26O861C37O888C41O895C45O871C55O868C61O905C72O932C77O942C80O939C84O915C94O912C100O952C111O979C116O986C120O962C130O959C136O851C141O814C145O996,,
+code-creation,LazyCompile,10,47688,0x2ae70821400a,5,read_monomorphic test/mjsunit/tools/tickprocessor-test.js:27:26,0x2ae708212530,~
+code-source-info,0x2ae70821400a,3,501,525,C0O518C4O523,,
+code-creation,LazyCompile,10,47711,0x2ae70821408e,5,read_polymorphic test/mjsunit/tools/tickprocessor-test.js:31:26,0x2ae708212564,~
+code-source-info,0x2ae70821408e,3,552,576,C0O569C4O574,,
+code-creation,LazyCompile,10,47728,0x2ae708214112,5,read_megamorphic test/mjsunit/tools/tickprocessor-test.js:35:26,0x2ae708212598,~
+code-source-info,0x2ae708214112,3,603,627,C0O620C4O625,,
+tick,0x5574264143eb,47977,0,0x0,0,0x2ae708214112,0x2ae708213f2e,0x2ae7082126bb
+tick,0x557426411f3c,49182,0,0x0,0,0x2ae708213f2e,0x2ae7082126bb
+tick,0x5574264143a4,50195,0,0x0,0,0x2ae708214112,0x2ae708213f2e,0x2ae7082126bb
+tick,0x55742641eee9,51325,0,0x0,0,0x2ae708213f2e,0x2ae7082126bb
+new,MemoryChunk,0x2ae708280000,262144
+new,MemoryChunk,0x2ae7082c0000,262144
+new,MemoryChunk,0x2ae708300000,262144
+new,MemoryChunk,0x2ae708340000,262144
+scavenge,begin,0,48726,1616666746763
+scavenge,end,0,48830,1616666746763
+tick,0x55742640f94f,52325,0,0x0,0,0x2ae708213f2e,0x2ae7082126bb
+tick,0x557426327ab9,53466,0,0x0,0,0x2ae7082126bb
+tick,0x55742635b744,54451,0,0x0,0,0x2ae708213f06,0x2ae7082126bb
+scavenge,begin,0,56381,1616666746767
+new,MemoryChunk,0x2ae708380000,262144
+new,MemoryChunk,0x2ae7083c0000,262144
+tick,0x7f36630ac7b0,55531,0,0x0,1
+scavenge,end,0,57884,1616666746767
+code-creation,LazyCompile,14,55610,0x2ae700084380,3364,ics test/mjsunit/tools/tickprocessor-test.js:47:13,0x2ae7082125cc,*
+code-source-info,0x2ae700084380,3,793,997,C0O793C50O800C63O807C83O842C113O832C126O895C139O518I0C184O871C192O868C321O939C328O569I1C361O915C367O912C465O962C469O912C494O959C617O814C640O832C649O861C669O871C736O868C848O942C868O868C894O939C911O569I1C946O915C953O912C1091O986C1099O620I2C1134O962C1141O959C1279O851C1283O814C1298O996C1332O793C1380O518I0C1572O569I1C1861O814C1940O868C2052O569I1C2184O912C2296O620I2C2428O959C2540O814C2624O861C2678O807,F0O871F1O915F2O962,S0x2ae708212530S0x2ae708212564S0x2ae708212598
+tick,0x2ae700084eb5,56707,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,58781,1616666746768
+scavenge,end,0,58814,1616666746768
+code-creation,LazyCompile,14,56912,0x2ae7000851c0,460,read_monomorphic test/mjsunit/tools/tickprocessor-test.js:27:26,0x2ae708212530,*
+code-source-info,0x2ae7000851c0,3,501,525,C0O501C50O518C95O523C236O501C284O518C358O523,,
+code-creation,LazyCompile,14,57036,0x2ae700085400,460,read_polymorphic test/mjsunit/tools/tickprocessor-test.js:31:26,0x2ae708212564,*
+code-source-info,0x2ae700085400,3,552,576,C0O552C50O569C95O574C236O552C284O569C358O574,,
+code-creation,LazyCompile,14,57152,0x2ae700085640,460,read_megamorphic test/mjsunit/tools/tickprocessor-test.js:35:26,0x2ae708212598,*
+code-source-info,0x2ae700085640,3,603,627,C0O603C50O620C95O625C236O603C284O620C358O625,,
+scavenge,begin,0,63111,1616666746769
+tick,0x7f3662edcf0d,57779,0,0x0,1
+scavenge,end,0,63169,1616666746769
+scavenge,begin,0,63713,1616666746770
+scavenge,end,0,63735,1616666746770
+tick,0x2ae70008478f,58825,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,64311,1616666746771
+scavenge,end,0,64334,1616666746771
+tick,0x55742631e6bd,59948,0,0x0,0,0x2ae700084eb8,0x2ae7082126bb
+scavenge,begin,0,64955,1616666746772
+scavenge,end,0,64976,1616666746772
+tick,0x2ae70008473d,60957,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,65555,1616666746773
+scavenge,end,0,65575,1616666746773
+scavenge,begin,0,66377,1616666746773
+scavenge,end,0,66408,1616666746773
+tick,0x2ae700084eb8,62021,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,67233,1616666746774
+scavenge,end,0,67263,1616666746774
+tick,0x2ae700084f0a,63087,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,68093,1616666746775
+scavenge,end,0,68123,1616666746775
+scavenge,begin,0,68956,1616666746776
+scavenge,end,0,68985,1616666746776
+tick,0x2ae700084eb8,64229,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,69772,1616666746777
+scavenge,end,0,69792,1616666746777
+tick,0x2ae700084742,65219,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,70664,1616666746777
+scavenge,end,0,70696,1616666746777
+tick,0x2ae700084669,66282,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,71551,1616666746778
+scavenge,end,0,71581,1616666746778
+scavenge,begin,0,72347,1616666746779
+scavenge,end,0,72397,1616666746779
+tick,0x7f36630ad014,67401,0,0x0,1
+scavenge,begin,0,73259,1616666746780
+scavenge,end,0,73289,1616666746780
+tick,0x55742631e6bd,68415,0,0x0,0,0x2ae700084eb8,0x2ae7082126bb
+scavenge,begin,0,74023,1616666746781
+scavenge,end,0,74047,1616666746781
+tick,0x55742641cb27,69482,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,74937,1616666746781
+scavenge,end,0,74969,1616666746781
+scavenge,begin,0,75789,1616666746782
+scavenge,end,0,75824,1616666746782
+tick,0x7f3662dcb010,70541,0,0x0,1
+scavenge,begin,0,76652,1616666746783
+scavenge,end,0,76682,1616666746783
+tick,0x2ae700084669,71661,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,77561,1616666746784
+scavenge,end,0,77591,1616666746784
+tick,0x2ae7000847f9,72675,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,78281,1616666746785
+scavenge,end,0,78302,1616666746785
+scavenge,begin,0,79083,1616666746785
+tick,0x557425e83bb4,73736,0,0x0,1
+scavenge,end,0,79178,1616666746785
+scavenge,begin,0,79932,1616666746786
+scavenge,end,0,79963,1616666746786
+tick,0x2ae700084f0a,74870,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,80872,1616666746787
+scavenge,end,0,80902,1616666746787
+tick,0x2ae700084ea8,75869,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,81711,1616666746788
+scavenge,end,0,81741,1616666746788
+scavenge,begin,0,82498,1616666746789
+scavenge,end,0,82518,1616666746789
+tick,0x7f3662def69c,77006,0,0x0,1
+scavenge,begin,0,83480,1616666746789
+scavenge,end,0,83512,1616666746789
+tick,0x55742631ec8c,77999,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,84370,1616666746790
+scavenge,end,0,84400,1616666746790
+tick,0x2ae70008473d,79124,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,85348,1616666746791
+scavenge,end,0,85378,1616666746791
+scavenge,begin,0,86199,1616666746792
+tick,0x557425ba3d08,80129,0,0x0,1
+scavenge,end,0,86285,1616666746792
+scavenge,begin,0,86940,1616666746793
+scavenge,end,0,86962,1616666746793
+tick,0x2ae700084ea5,81195,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,87831,1616666746793
+scavenge,end,0,87862,1616666746793
+tick,0x2ae70008474c,82259,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,88673,1616666746794
+scavenge,end,0,88703,1616666746794
+scavenge,begin,0,89515,1616666746795
+scavenge,end,0,89543,1616666746795
+tick,0x2ae70008482b,83383,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,90477,1616666746796
+scavenge,end,0,90508,1616666746796
+tick,0x55742631e6a7,84391,0,0x0,0,0x2ae700084eb8,0x2ae7082126bb
+scavenge,begin,0,91217,1616666746796
+scavenge,end,0,91239,1616666746796
+tick,0x2ae7000846ba,85488,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,92059,1616666746797
+scavenge,end,0,92090,1616666746797
+scavenge,begin,0,92844,1616666746798
+scavenge,end,0,92872,1616666746798
+tick,0x55742631e64a,86554,0,0x0,0,0x2ae700084f07,0x2ae7082126bb
+scavenge,begin,0,93718,1616666746799
+scavenge,end,0,93749,1616666746799
+tick,0x2ae700084707,87680,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,94631,1616666746800
+scavenge,end,0,94660,1616666746800
+tick,0x2ae700084732,88685,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,95413,1616666746800
+scavenge,end,0,95435,1616666746800
+scavenge,begin,0,96288,1616666746801
+scavenge,end,0,96318,1616666746801
+tick,0x55742631e64a,89750,0,0x0,0,0x2ae700084e69,0x2ae7082126bb
+scavenge,begin,0,97206,1616666746802
+scavenge,end,0,97237,1616666746802
+tick,0x55742631e64a,90879,0,0x0,0,0x2ae700084f07,0x2ae7082126bb
+scavenge,begin,0,98130,1616666746803
+scavenge,end,0,98159,1616666746803
+tick,0x55742631e682,91883,0,0x0,0,0x2ae700084eb8,0x2ae7082126bb
+scavenge,begin,0,99038,1616666746804
+scavenge,end,0,99072,1616666746804
+scavenge,begin,0,99748,1616666746804
+scavenge,end,0,99770,1616666746804
+tick,0x2ae700084869,92945,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,100637,1616666746805
+scavenge,end,0,100670,1616666746805
+tick,0x2ae700084818,94011,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,101504,1616666746806
+scavenge,end,0,101535,1616666746806
+tick,0x2ae70008475c,95134,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,102488,1616666746807
+scavenge,end,0,102517,1616666746807
+scavenge,begin,0,103359,1616666746808
+scavenge,end,0,103388,1616666746808
+tick,0x55742631e6bd,96142,0,0x0,0,0x2ae700084eb8,0x2ae7082126bb
+scavenge,begin,0,104142,1616666746808
+scavenge,end,0,104167,1616666746809
+tick,0x2ae7000846a5,97206,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,104995,1616666746809
+scavenge,end,0,105030,1616666746809
+tick,0x55742631e6c5,98272,0,0x0,0,0x2ae700084f07,0x2ae7082126bb
+scavenge,begin,0,105842,1616666746810
+scavenge,end,0,105873,1616666746810
+scavenge,begin,0,106634,1616666746811
+scavenge,end,0,106664,1616666746811
+tick,0x55742631ec81,99398,0,0x0,0,0x2ae700084e69,0x2ae7082126bb
+scavenge,begin,0,107567,1616666746812
+scavenge,end,0,107603,1616666746812
+tick,0x2ae700084eaa,100404,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,108352,1616666746812
+scavenge,end,0,108375,1616666746813
+tick,0x55742631e64a,101469,0,0x0,0,0x2ae700084f07,0x2ae7082126bb
+scavenge,begin,0,109193,1616666746813
+scavenge,end,0,109225,1616666746813
+scavenge,begin,0,110045,1616666746814
+scavenge,end,0,110073,1616666746814
+tick,0x7f3662e68f6f,102534,0,0x0,1
+scavenge,begin,0,110961,1616666746815
+scavenge,end,0,110993,1616666746815
+tick,0x55742631e64a,103658,0,0x0,0,0x2ae700084f07,0x2ae7082126bb
+scavenge,begin,0,111878,1616666746816
+scavenge,end,0,111909,1616666746816
+tick,0x2ae700084ea0,104664,0,0x0,0,0x2ae7082126bb
+scavenge,begin,0,112687,1616666746816
+scavenge,end,0,112710,1616666746817
+scavenge,begin,0,113481,1616666746817
+scavenge,end,0,113511,1616666746817
+tick,0x55742631e6bd,105746,0,0x0,0,0x2ae700084f07,0x2ae7082126bb
+scavenge,begin,0,114394,1616666746818
+scavenge,end,0,114425,1616666746818
+tick,0x55742631e6b2,106811,0,0x0,0,0x2ae700084f07,0x2ae7082126bb
+scavenge,begin,0,115226,1616666746819
+scavenge,end,0,115256,1616666746819
+tick,0x55742631e66a,107937,0,0x0,0,0x2ae700084e69,0x2ae7082126bb
+scavenge,begin,0,116208,1616666746820
+scavenge,end,0,116237,1616666746820
+scavenge,begin,0,117003,1616666746820
+scavenge,end,0,117025,1616666746820
+tick,0x55742631e64a,108945,0,0x0,0,0x2ae700084f07,0x2ae7082126bb
+scavenge,begin,0,117898,1616666746821
+scavenge,end,0,117932,1616666746821
+tick,0x557426125fa6,110017,0,0x0,4,0x557425e00550,0x2ae7082126c4
+tick,0x55742628821c,111086,0,0x0,4,0x557425e00550,0x2ae7082126c4
+tick,0x5574260f1677,112211,0,0x0,4,0x557425e00550,0x2ae7082126c4
+code-creation,LazyCompile,14,112854,0x2ae700085880,3960, test/mjsunit/tools/tickprocessor-test.js:1:1,0x2ae70821243c,*
+code-source-info,0x2ae700085880,3,0,1046,C0O0C107O1017C140O800I0C154O807I0C175O842I0C205O832I0C218O895I0C232O518I1C275O871I0C283O868I0C410O939I0C417O569I2C448O915I0C453O912I0C549O962I0C553O912I0C577O959I0C697O814I0C720O832I0C729O861I0C749O871I0C807O868I0C912O942I0C931O868I0C956O939I0C973O569I2C1006O915I0C1012O912I0C1145O986I0C1153O620I3C1186O962I0C1192O959I0C1325O851I0C1328O814I0C1343O1029C1358O999C1368O1017C1385O1046C1412O1017C1474O518I1C1724O569I2C2108O814I0C2212O868I0C2356O569I2C2517O912I0C2661O620I3C2822O959I0C2966O814I0C3073O999C3211O1017C3237O861I0C3280O807I0,F0O1037F1O871I0F2O915I0F3O962I0,S0x2ae7082125ccS0x2ae708212530S0x2ae708212564S0x2ae708212598
+tick,0x55742631e6a3,113215,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,121717,1616666746825
+scavenge,end,0,121749,1616666746825
+scavenge,begin,0,122491,1616666746826
+scavenge,end,0,122525,1616666746826
+tick,0x2ae7000865bd,114277,0,0x0,0
+scavenge,begin,0,123308,1616666746827
+scavenge,end,0,123340,1616666746827
+tick,0x55742631e659,115337,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,124119,1616666746827
+scavenge,end,0,124153,1616666746827
+tick,0x55742631e6af,116399,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,124931,1616666746828
+scavenge,end,0,124962,1616666746828
+scavenge,begin,0,125693,1616666746829
+scavenge,end,0,125724,1616666746829
+tick,0x2ae700085c7d,117466,0,0x0,0
+scavenge,begin,0,126578,1616666746830
+scavenge,end,0,126609,1616666746830
+tick,0x2ae700085c10,118531,0,0x0,0
+scavenge,begin,0,127452,1616666746830
+scavenge,end,0,127482,1616666746830
+scavenge,begin,0,128266,1616666746831
+scavenge,end,0,128294,1616666746831
+tick,0x55742631e65b,119665,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,129215,1616666746832
+scavenge,end,0,129245,1616666746832
+tick,0x2ae700086647,120654,0,0x0,0
+scavenge,begin,0,129991,1616666746833
+scavenge,end,0,130015,1616666746833
+tick,0x2ae700085ba3,121718,0,0x0,0
+scavenge,begin,0,130856,1616666746833
+scavenge,end,0,130887,1616666746833
+scavenge,begin,0,131621,1616666746834
+scavenge,end,0,131650,1616666746834
+tick,0x55742631e6a7,122847,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,132566,1616666746835
+scavenge,end,0,132597,1616666746835
+tick,0x2ae700086647,123845,0,0x0,0
+scavenge,begin,0,133393,1616666746836
+scavenge,end,0,133422,1616666746836
+scavenge,begin,0,134182,1616666746836
+scavenge,end,0,134206,1616666746836
+tick,0x2ae700085c6e,124968,0,0x0,0
+scavenge,begin,0,134896,1616666746837
+scavenge,end,0,134921,1616666746837
+tick,0x55742631ec8b,125973,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,134921,1616666746838
+scavenge,end,0,134921,1616666746838
+scavenge,begin,0,134921,1616666746839
+tick,0x55742631e6af,127115,0,0x0,0,0x2ae7000865b3
+scavenge,end,0,134921,1616666746839
+scavenge,begin,0,134921,1616666746839
+scavenge,end,0,134921,1616666746840
+tick,0x2ae7000865d9,128098,0,0x0,0
+scavenge,begin,0,135138,1616666746840
+scavenge,end,0,135162,1616666746840
+tick,0x2ae700085d35,129222,0,0x0,0
+scavenge,begin,0,135837,1616666746841
+scavenge,end,0,135861,1616666746841
+scavenge,begin,0,136658,1616666746842
+scavenge,end,0,136688,1616666746842
+tick,0x55742631e64e,130225,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,137534,1616666746843
+scavenge,end,0,137565,1616666746843
+tick,0x55742631e6bd,131288,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,138394,1616666746843
+scavenge,end,0,138423,1616666746843
+tick,0x2ae700085cb1,132413,0,0x0,0
+scavenge,begin,0,139336,1616666746844
+scavenge,end,0,139366,1616666746844
+scavenge,begin,0,140049,1616666746845
+scavenge,end,0,140071,1616666746845
+tick,0x2ae700085ce4,133413,0,0x0,0
+scavenge,begin,0,140912,1616666746846
+scavenge,end,0,140944,1616666746846
+tick,0x2ae700085c6e,134478,0,0x0,0
+scavenge,begin,0,141722,1616666746846
+scavenge,end,0,141753,1616666746846
+scavenge,begin,0,142550,1616666746847
+scavenge,end,0,142580,1616666746847
+tick,0x7f3662e68f6f,135552,0,0x0,1
+scavenge,begin,0,143443,1616666746848
+scavenge,end,0,143473,1616666746848
+tick,0x55742631e64a,136602,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,144262,1616666746849
+scavenge,end,0,144286,1616666746849
+tick,0x2ae700085be8,137625,0,0x0,0
+scavenge,begin,0,145069,1616666746849
+scavenge,end,0,145098,1616666746849
+scavenge,begin,0,145826,1616666746850
+scavenge,end,0,145855,1616666746850
+tick,0x2ae700085dad,138789,0,0x0,0
+scavenge,begin,0,146747,1616666746851
+scavenge,end,0,146777,1616666746851
+tick,0x55742631ec8b,139805,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,147627,1616666746852
+scavenge,end,0,147657,1616666746852
+scavenge,begin,0,148388,1616666746852
+tick,0x557425b2293f,140831,0,0x0,1
+scavenge,end,0,148463,1616666746852
+scavenge,begin,0,149054,1616666746853
+scavenge,end,0,149054,1616666746853
+tick,0x55742631e64a,141878,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,149054,1616666746854
+scavenge,end,0,149054,1616666746854
+tick,0x2ae700085d31,143006,0,0x0,0
+scavenge,begin,0,149054,1616666746855
+scavenge,end,0,149054,1616666746855
+scavenge,begin,0,149054,1616666746855
+scavenge,end,0,149054,1616666746856
+tick,0x2ae700085ce4,144004,0,0x0,0
+scavenge,begin,0,149054,1616666746856
+scavenge,end,0,149054,1616666746856
+tick,0x55742631e682,145069,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,149235,1616666746857
+scavenge,end,0,149258,1616666746857
+tick,0x2ae700086583,146132,0,0x0,0
+scavenge,begin,0,150063,1616666746858
+scavenge,end,0,150093,1616666746858
+scavenge,begin,0,150827,1616666746859
+scavenge,end,0,150855,1616666746859
+tick,0x2ae700085cf9,147196,0,0x0,0
+scavenge,begin,0,151685,1616666746859
+scavenge,end,0,151715,1616666746859
+tick,0x2ae7000865d9,148325,0,0x0,0
+scavenge,begin,0,152648,1616666746860
+scavenge,end,0,152676,1616666746860
+scavenge,begin,0,153427,1616666746861
+scavenge,end,0,153450,1616666746861
+tick,0x2ae700085bab,149320,0,0x0,0
+scavenge,begin,0,154237,1616666746862
+scavenge,end,0,154270,1616666746862
+tick,0x2ae700085bd3,150383,0,0x0,0
+scavenge,begin,0,155045,1616666746862
+scavenge,end,0,155075,1616666746862
+scavenge,begin,0,155826,1616666746863
+scavenge,end,0,155855,1616666746863
+tick,0x2ae700085c23,151525,0,0x0,0
+scavenge,begin,0,156704,1616666746864
+scavenge,end,0,156733,1616666746864
+tick,0x2ae700085d31,152509,0,0x0,0
+scavenge,begin,0,157508,1616666746865
+scavenge,end,0,157531,1616666746865
+tick,0x2ae7000865b3,153574,0,0x0,0
+scavenge,begin,0,158316,1616666746865
+scavenge,end,0,158345,1616666746865
+scavenge,begin,0,159140,1616666746866
+scavenge,end,0,159167,1616666746866
+tick,0x55742631e66d,154641,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,160010,1616666746867
+scavenge,end,0,160040,1616666746867
+tick,0x55742631e682,155772,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,160970,1616666746868
+scavenge,end,0,161000,1616666746868
+tick,0x55742631e6a3,156762,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,161783,1616666746868
+scavenge,end,0,161806,1616666746868
+scavenge,begin,0,162392,1616666746869
+scavenge,end,0,162416,1616666746869
+tick,0x2ae700085bfc,157825,0,0x0,0
+scavenge,begin,0,163252,1616666746870
+scavenge,end,0,163284,1616666746870
+tick,0x2ae70008658b,158949,0,0x0,0
+scavenge,begin,0,164142,1616666746871
+scavenge,end,0,164171,1616666746871
+scavenge,begin,0,164957,1616666746871
+scavenge,end,0,164986,1616666746871
+tick,0x2ae700085c19,159951,0,0x0,0
+scavenge,begin,0,165822,1616666746872
+scavenge,end,0,165851,1616666746872
+tick,0x55742631ec8b,161073,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,166705,1616666746873
+scavenge,end,0,166729,1616666746873
+tick,0x2ae700085d75,162082,0,0x0,0
+scavenge,begin,0,167514,1616666746874
+scavenge,end,0,167544,1616666746874
+scavenge,begin,0,168272,1616666746874
+scavenge,end,0,168301,1616666746875
+tick,0x2ae700085c23,163210,0,0x0,0
+scavenge,begin,0,169159,1616666746875
+scavenge,end,0,169188,1616666746875
+tick,0x557425afe8dc,164206,0,0x0,0,0x557425e19180,0x2ae7000863c8
+scavenge,begin,0,169969,1616666746876
+scavenge,end,0,169999,1616666746876
+scavenge,begin,0,170731,1616666746877
+scavenge,end,0,170761,1616666746877
+tick,0x55742631e6bd,165333,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,171623,1616666746878
+scavenge,end,0,171656,1616666746878
+tick,0x2ae7000865e7,166331,0,0x0,0
+scavenge,begin,0,172489,1616666746878
+scavenge,end,0,172518,1616666746878
+scavenge,begin,0,173324,1616666746879
+scavenge,end,0,173354,1616666746879
+tick,0x2ae7000865a2,167480,0,0x0,0
+scavenge,begin,0,174218,1616666746880
+scavenge,end,0,174247,1616666746880
+tick,0x2ae700085d28,168458,0,0x0,0
+scavenge,begin,0,175049,1616666746881
+scavenge,end,0,175073,1616666746881
+tick,0x55742631e6a3,169583,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,175073,1616666746881
+scavenge,end,0,175073,1616666746881
+scavenge,begin,0,175073,1616666746882
+scavenge,end,0,175073,1616666746882
+tick,0x2ae700085c17,170583,0,0x0,0
+scavenge,begin,0,175073,1616666746883
+scavenge,end,0,175073,1616666746883
+tick,0x55742631e6b2,171711,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,175387,1616666746884
+scavenge,end,0,175410,1616666746884
+tick,0x55742631e6bd,172708,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,176090,1616666746884
+scavenge,end,0,176115,1616666746884
+scavenge,begin,0,176745,1616666746885
+scavenge,end,0,176769,1616666746885
+tick,0x2ae700085d87,173770,0,0x0,0
+scavenge,begin,0,177553,1616666746886
+scavenge,end,0,177585,1616666746886
+tick,0x2ae700085b50,174893,0,0x0,0
+scavenge,begin,0,178438,1616666746887
+scavenge,end,0,178469,1616666746887
+scavenge,begin,0,179202,1616666746887
+scavenge,end,0,179232,1616666746887
+tick,0x2ae700085b60,175898,0,0x0,0
+scavenge,begin,0,180008,1616666746888
+scavenge,end,0,180039,1616666746888
+tick,0x2ae700085bfc,177024,0,0x0,0
+scavenge,begin,0,180875,1616666746889
+scavenge,end,0,180899,1616666746889
+tick,0x55742631ec8c,178023,0,0x0,0
+scavenge,begin,0,181679,1616666746890
+scavenge,end,0,181709,1616666746890
+scavenge,begin,0,182496,1616666746890
+scavenge,end,0,182524,1616666746890
+tick,0x2ae700085c87,179084,0,0x0,0
+scavenge,begin,0,183353,1616666746891
+scavenge,end,0,183383,1616666746891
+tick,0x2ae700085c78,180146,0,0x0,0
+scavenge,begin,0,184214,1616666746892
+scavenge,end,0,184242,1616666746892
+scavenge,begin,0,185011,1616666746893
+scavenge,end,0,185035,1616666746893
+tick,0x55742631e655,181212,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,185824,1616666746893
+scavenge,end,0,185855,1616666746893
+tick,0x55742631e69f,182340,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,186773,1616666746894
+scavenge,end,0,186803,1616666746894
+tick,0x55742631e6bd,183339,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,187589,1616666746895
+scavenge,end,0,187618,1616666746895
+scavenge,begin,0,188404,1616666746896
+scavenge,end,0,188434,1616666746896
+tick,0x55742631e64e,184486,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,189316,1616666746897
+scavenge,end,0,189339,1616666746897
+tick,0x2ae700085c7d,185465,0,0x0,0
+scavenge,begin,0,190190,1616666746897
+scavenge,end,0,190221,1616666746897
+scavenge,begin,0,190952,1616666746898
+scavenge,end,0,190980,1616666746898
+tick,0x2ae700085b60,186538,0,0x0,0
+scavenge,begin,0,191767,1616666746899
+scavenge,end,0,191798,1616666746899
+tick,0x55742631e644,187600,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,192589,1616666746900
+scavenge,end,0,192618,1616666746900
+tick,0x2ae700085c23,188654,0,0x0,0
+scavenge,begin,0,193388,1616666746900
+scavenge,end,0,193412,1616666746900
+scavenge,begin,0,194008,1616666746901
+scavenge,end,0,194032,1616666746901
+tick,0x2ae700086616,189716,0,0x0,0
+scavenge,begin,0,194819,1616666746902
+scavenge,end,0,194850,1616666746902
+tick,0x55742631e6c5,190847,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,195774,1616666746903
+scavenge,end,0,195803,1616666746903
+scavenge,begin,0,196604,1616666746903
+scavenge,end,0,196634,1616666746903
+tick,0x2ae700085d57,191844,0,0x0,0
+scavenge,begin,0,197477,1616666746904
+scavenge,end,0,197506,1616666746904
+tick,0x55742631e692,192966,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,198351,1616666746905
+scavenge,end,0,198375,1616666746905
+tick,0x2ae700085c7d,193971,0,0x0,0
+scavenge,begin,0,199157,1616666746906
+scavenge,end,0,199186,1616666746906
+scavenge,begin,0,199976,1616666746906
+scavenge,end,0,200005,1616666746906
+tick,0x2ae700085ccc,195098,0,0x0,0
+scavenge,begin,0,200873,1616666746907
+scavenge,end,0,200902,1616666746907
+tick,0x2ae700085d5e,196154,0,0x0,0
+scavenge,begin,0,201792,1616666746908
+scavenge,end,0,201821,1616666746908
+scavenge,begin,0,202579,1616666746909
+scavenge,end,0,202602,1616666746909
+tick,0x2ae700085cd3,197284,0,0x0,0
+scavenge,begin,0,203520,1616666746909
+scavenge,end,0,203553,1616666746909
+tick,0x55742631e67e,198288,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,204332,1616666746910
+scavenge,end,0,204362,1616666746910
+scavenge,begin,0,205093,1616666746911
+scavenge,end,0,205142,1616666746911
+tick,0x557425ba3ce1,199417,0,0x0,1
+scavenge,begin,0,205989,1616666746912
+scavenge,end,0,206019,1616666746912
+tick,0x55742631ec8b,200419,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,206774,1616666746912
+scavenge,end,0,206798,1616666746912
+tick,0x2ae7000858f9,201487,0,0x0,0
+scavenge,begin,0,207583,1616666746913
+scavenge,end,0,207614,1616666746913
+scavenge,begin,0,208344,1616666746914
+scavenge,end,0,208372,1616666746914
+tick,0x2ae700085c7d,202549,0,0x0,0
+scavenge,begin,0,209205,1616666746915
+scavenge,end,0,209234,1616666746915
+tick,0x55742631e692,203670,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,210141,1616666746915
+scavenge,end,0,210171,1616666746916
+scavenge,begin,0,210901,1616666746916
+scavenge,end,0,210924,1616666746916
+tick,0x557425b35cd0,204677,0,0x0,1
+scavenge,begin,0,211609,1616666746917
+scavenge,end,0,211636,1616666746917
+tick,0x2ae7000865a6,205741,0,0x0,0
+scavenge,begin,0,212434,1616666746918
+scavenge,end,0,212464,1616666746918
+tick,0x2ae700085be8,206870,0,0x0,0
+scavenge,begin,0,213378,1616666746919
+scavenge,end,0,213407,1616666746919
+scavenge,begin,0,214193,1616666746919
+scavenge,end,0,214222,1616666746919
+tick,0x55742631e6bd,207873,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,215057,1616666746920
+scavenge,end,0,215086,1616666746920
+tick,0x2ae700085cfe,208996,0,0x0,0
+scavenge,begin,0,215945,1616666746921
+scavenge,end,0,215969,1616666746921
+scavenge,begin,0,216767,1616666746922
+tick,0x7f3662e043a0,210003,0,0x0,1
+scavenge,end,0,216854,1616666746922
+scavenge,begin,0,217645,1616666746922
+scavenge,end,0,217674,1616666746922
+tick,0x2ae700085cf9,211067,0,0x0,0
+scavenge,begin,0,218452,1616666746923
+scavenge,end,0,218481,1616666746923
+tick,0x2ae700085c7d,212135,0,0x0,0
+scavenge,begin,0,219264,1616666746924
+scavenge,end,0,219294,1616666746924
+scavenge,begin,0,220026,1616666746925
+scavenge,end,0,220053,1616666746925
+tick,0x55742631e663,213264,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,220920,1616666746925
+scavenge,end,0,220951,1616666746925
+tick,0x2ae700085c7d,214264,0,0x0,0
+scavenge,begin,0,221730,1616666746926
+scavenge,end,0,221760,1616666746926
+scavenge,begin,0,222507,1616666746927
+scavenge,end,0,222556,1616666746927
+tick,0x7f3662e043a0,215432,0,0x0,1
+scavenge,begin,0,223499,1616666746928
+scavenge,end,0,223534,1616666746928
+tick,0x55742631e673,216393,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,224287,1616666746928
+scavenge,end,0,224311,1616666746928
+tick,0x2ae700086602,217460,0,0x0,0
+scavenge,begin,0,225038,1616666746929
+scavenge,end,0,225074,1616666746929
+scavenge,begin,0,225826,1616666746930
+scavenge,end,0,225854,1616666746930
+tick,0x2ae700085d91,218520,0,0x0,0
+scavenge,begin,0,226647,1616666746931
+scavenge,end,0,226676,1616666746931
+tick,0x2ae700085c23,219643,0,0x0,0
+scavenge,begin,0,227585,1616666746931
+scavenge,end,0,227616,1616666746932
+scavenge,begin,0,228403,1616666746932
+tick,0x7f3662e68f6f,220652,0,0x0,1
+scavenge,end,0,228491,1616666746932
+scavenge,begin,0,229220,1616666746933
+scavenge,end,0,229244,1616666746933
+tick,0x55742631e6bd,221715,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,230085,1616666746934
+scavenge,end,0,230115,1616666746934
+tick,0x55742631e69f,222883,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,230990,1616666746935
+scavenge,end,0,231020,1616666746935
+scavenge,begin,0,231753,1616666746935
+scavenge,end,0,231781,1616666746935
+tick,0x55742631e64a,223886,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,232563,1616666746936
+scavenge,end,0,232592,1616666746936
+tick,0x2ae70008659d,224952,0,0x0,0
+scavenge,begin,0,233364,1616666746937
+scavenge,end,0,233388,1616666746937
+scavenge,begin,0,234127,1616666746938
+scavenge,end,0,234157,1616666746938
+tick,0x55742631ec8c,226015,0,0x0,0
+scavenge,begin,0,234936,1616666746938
+scavenge,end,0,234967,1616666746938
+tick,0x2ae70008662b,227138,0,0x0,0
+scavenge,begin,0,235826,1616666746939
+scavenge,end,0,235856,1616666746939
+tick,0x2ae700085d87,228203,0,0x0,0
+scavenge,begin,0,236773,1616666746940
+scavenge,end,0,236803,1616666746940
+scavenge,begin,0,237534,1616666746941
+scavenge,end,0,237558,1616666746941
+tick,0x55742631e6bd,229214,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,238417,1616666746941
+scavenge,end,0,238448,1616666746941
+tick,0x55742631e6af,230275,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,239279,1616666746942
+scavenge,end,0,239309,1616666746942
+scavenge,begin,0,240105,1616666746943
+scavenge,end,0,240154,1616666746943
+tick,0x7f3662e01164,231352,0,0x0,1
+scavenge,begin,0,240978,1616666746944
+scavenge,end,0,241008,1616666746944
+tick,0x2ae7000865f0,232487,0,0x0,0
+scavenge,begin,0,241896,1616666746944
+scavenge,end,0,241922,1616666746944
+tick,0x2ae7000858f9,233474,0,0x0,0
+scavenge,begin,0,242632,1616666746945
+scavenge,end,0,242632,1616666746945
+scavenge,begin,0,242632,1616666746946
+scavenge,end,0,242632,1616666746946
+tick,0x55742631e6bd,234536,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,242632,1616666746947
+scavenge,end,0,242632,1616666746947
+tick,0x55742631e659,235604,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,242632,1616666746947
+scavenge,end,0,242632,1616666746948
+scavenge,begin,0,242632,1616666746948
+scavenge,end,0,242632,1616666746948
+tick,0x7f3662ed9ac0,236727,0,0x0,1
+scavenge,begin,0,242658,1616666746949
+scavenge,end,0,242683,1616666746949
+tick,0x55742631ec8c,237731,0,0x0,0
+scavenge,begin,0,243472,1616666746950
+scavenge,end,0,243502,1616666746950
+tick,0x2ae700085c36,238862,0,0x0,0
+scavenge,begin,0,244362,1616666746951
+scavenge,end,0,244391,1616666746951
+scavenge,begin,0,245132,1616666746951
+scavenge,end,0,245160,1616666746951
+tick,0x2ae7000865a6,239861,0,0x0,0
+scavenge,begin,0,245996,1616666746952
+scavenge,end,0,246027,1616666746952
+tick,0x55742631e6b2,240923,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,246802,1616666746953
+scavenge,end,0,246828,1616666746953
+scavenge,begin,0,247616,1616666746954
+scavenge,end,0,247647,1616666746954
+tick,0x7f3662e68f6f,241990,0,0x0,1
+scavenge,begin,0,248426,1616666746954
+scavenge,end,0,248459,1616666746954
+tick,0x55742631e67e,243120,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,249337,1616666746955
+scavenge,end,0,249367,1616666746955
+tick,0x55742631e659,244122,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,250204,1616666746956
+scavenge,end,0,250234,1616666746956
+scavenge,begin,0,251007,1616666746957
+scavenge,end,0,251033,1616666746957
+tick,0x55742631e64a,245248,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,251952,1616666746957
+scavenge,end,0,251982,1616666746957
+tick,0x2ae700085c7d,246251,0,0x0,0
+scavenge,begin,0,252822,1616666746958
+scavenge,end,0,252851,1616666746958
+scavenge,begin,0,253590,1616666746959
+scavenge,end,0,253618,1616666746959
+tick,0x55742631e6bd,247380,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,254475,1616666746960
+scavenge,end,0,254505,1616666746960
+tick,0x2ae700085cb1,248383,0,0x0,0
+scavenge,begin,0,255263,1616666746960
+scavenge,end,0,255287,1616666746960
+tick,0x55742631e692,249449,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,255947,1616666746961
+scavenge,end,0,255972,1616666746961
+scavenge,begin,0,256716,1616666746962
+scavenge,end,0,256745,1616666746962
+tick,0x2ae700085c10,250511,0,0x0,0
+scavenge,begin,0,257517,1616666746963
+scavenge,end,0,257546,1616666746963
+tick,0x2ae700085ba3,251648,0,0x0,0
+scavenge,begin,0,258470,1616666746963
+scavenge,end,0,258499,1616666746963
+scavenge,begin,0,259283,1616666746964
+scavenge,end,0,259313,1616666746964
+tick,0x55742631e688,252640,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,260097,1616666746965
+scavenge,end,0,260124,1616666746965
+tick,0x55742631e688,253770,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,260993,1616666746966
+scavenge,end,0,261023,1616666746966
+tick,0x2ae70008656f,254771,0,0x0,0
+scavenge,begin,0,261815,1616666746966
+scavenge,end,0,261844,1616666746967
+scavenge,begin,0,262632,1616666746967
+scavenge,end,0,262661,1616666746967
+tick,0x557425bb4dbe,255895,0,0x0,0,0x557425e19180,0x2ae7000863c8
+scavenge,begin,0,263520,1616666746968
+scavenge,end,0,263549,1616666746968
+tick,0x55742631e6b2,256903,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,264362,1616666746969
+scavenge,end,0,264388,1616666746969
+scavenge,begin,0,265182,1616666746970
+scavenge,end,0,265212,1616666746970
+tick,0x2ae700085ba3,257966,0,0x0,0
+scavenge,begin,0,265988,1616666746970
+scavenge,end,0,266019,1616666746970
+tick,0x2ae700085d1b,259093,0,0x0,0
+scavenge,begin,0,266945,1616666746971
+scavenge,end,0,266975,1616666746971
+tick,0x55742631e6bd,260098,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,267756,1616666746972
+scavenge,end,0,267785,1616666746972
+scavenge,begin,0,268520,1616666746973
+scavenge,end,0,268543,1616666746973
+tick,0x2ae7000865d1,261220,0,0x0,0
+scavenge,begin,0,269399,1616666746973
+scavenge,end,0,269429,1616666746973
+tick,0x2ae700085be8,262230,0,0x0,0
+scavenge,begin,0,270212,1616666746974
+scavenge,end,0,270245,1616666746974
+scavenge,begin,0,270979,1616666746975
+scavenge,end,0,271008,1616666746975
+tick,0x2ae700085baf,263364,0,0x0,0
+scavenge,begin,0,271883,1616666746976
+scavenge,end,0,271915,1616666746976
+tick,0x2ae700085d65,264394,0,0x0,0
+scavenge,begin,0,272742,1616666746976
+scavenge,end,0,272768,1616666746976
+tick,0x2ae700086599,265453,0,0x0,0
+scavenge,begin,0,273430,1616666746977
+scavenge,end,0,273457,1616666746977
+scavenge,begin,0,274264,1616666746978
+scavenge,end,0,274295,1616666746978
+tick,0x55742631e6af,266516,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,275085,1616666746979
+scavenge,end,0,275115,1616666746979
+tick,0x2ae700085d31,267656,0,0x0,0
+scavenge,begin,0,276035,1616666746979
+scavenge,end,0,276065,1616666746979
+scavenge,begin,0,276849,1616666746980
+scavenge,end,0,276878,1616666746980
+tick,0x55742631e6a7,268648,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,277709,1616666746981
+scavenge,end,0,277741,1616666746981
+tick,0x2ae700085dad,269713,0,0x0,0
+scavenge,begin,0,278607,1616666746982
+scavenge,end,0,278638,1616666746982
+tick,0x55742631e6c3,270853,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,279404,1616666746983
+scavenge,end,0,279564,1616666746983
+scavenge,begin,0,280352,1616666746983
+scavenge,end,0,280382,1616666746983
+tick,0x2ae70008662b,271846,0,0x0,0
+scavenge,begin,0,281161,1616666746984
+scavenge,end,0,281191,1616666746984
+tick,0x55742631e692,272920,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,281977,1616666746985
+scavenge,end,0,282006,1616666746985
+scavenge,begin,0,282743,1616666746986
+scavenge,end,0,282772,1616666746986
+tick,0x2ae7000865b5,273992,0,0x0,0
+scavenge,begin,0,283564,1616666746986
+scavenge,end,0,283594,1616666746986
+tick,0x2ae700085c87,275113,0,0x0,0
+scavenge,begin,0,284441,1616666746987
+scavenge,end,0,284470,1616666746987
+tick,0x2ae7000865e3,276125,0,0x0,0
+scavenge,begin,0,285258,1616666746988
+scavenge,end,0,285292,1616666746988
+scavenge,begin,0,286076,1616666746989
+scavenge,end,0,286106,1616666746989
+tick,0x2ae7000865f4,277187,0,0x0,0
+scavenge,begin,0,286894,1616666746989
+scavenge,end,0,286925,1616666746989
+tick,0x2ae700085c97,278251,0,0x0,0
+scavenge,begin,0,287712,1616666746990
+scavenge,end,0,287741,1616666746990
+scavenge,begin,0,288489,1616666746991
+scavenge,end,0,288518,1616666746991
+tick,0x55742631ec81,279386,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,289436,1616666746992
+scavenge,end,0,289467,1616666746992
+tick,0x55742631e6a3,280383,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,290299,1616666746992
+scavenge,end,0,290330,1616666746992
+tick,0x55742631e6bd,281448,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,291168,1616666746993
+scavenge,end,0,291197,1616666746993
+scavenge,begin,0,291955,1616666746994
+scavenge,end,0,291986,1616666746994
+tick,0x55742631e64a,282512,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,292762,1616666746995
+scavenge,end,0,292792,1616666746995
+tick,0x55742631e6bd,283636,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,293698,1616666746995
+scavenge,end,0,293727,1616666746995
+scavenge,begin,0,294460,1616666746996
+scavenge,end,0,294489,1616666746996
+tick,0x55742631e659,284645,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,295267,1616666746997
+scavenge,end,0,295297,1616666746997
+tick,0x55742631ec8c,285708,0,0x0,0
+scavenge,begin,0,296087,1616666746998
+scavenge,end,0,296120,1616666746998
+tick,0x2ae700085d1b,286777,0,0x0,0
+scavenge,begin,0,296916,1616666746999
+scavenge,end,0,296945,1616666746999
+scavenge,begin,0,297682,1616666746999
+scavenge,end,0,297711,1616666746999
+tick,0x55742631e659,287902,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,298631,1616666747000
+scavenge,end,0,298663,1616666747000
+tick,0x55742631e644,288906,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,299448,1616666747001
+scavenge,end,0,299480,1616666747001
+tick,0x55742631e6bd,289974,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,300286,1616666747002
+scavenge,end,0,300319,1616666747002
+scavenge,begin,0,301060,1616666747002
+scavenge,end,0,301091,1616666747002
+tick,0x2ae700085c7d,291110,0,0x0,0
+scavenge,begin,0,301963,1616666747003
+scavenge,end,0,301992,1616666747003
+tick,0x2ae700086597,292104,0,0x0,0
+scavenge,begin,0,302825,1616666747004
+scavenge,end,0,302854,1616666747004
+scavenge,begin,0,303638,1616666747005
+scavenge,end,0,303666,1616666747005
+tick,0x2ae700085b93,293166,0,0x0,0
+scavenge,begin,0,304499,1616666747005
+scavenge,end,0,304531,1616666747005
+tick,0x2ae700085c23,294232,0,0x0,0
+scavenge,begin,0,305318,1616666747006
+scavenge,end,0,305354,1616666747006
+scavenge,begin,0,306116,1616666747007
+scavenge,end,0,306145,1616666747007
+tick,0x2ae700085c7d,295390,0,0x0,0
+scavenge,begin,0,307070,1616666747008
+scavenge,end,0,307099,1616666747008
+tick,0x2ae700086599,296361,0,0x0,0
+scavenge,begin,0,307875,1616666747008
+scavenge,end,0,307904,1616666747008
+tick,0x55742631e64e,297425,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,308683,1616666747009
+scavenge,end,0,308720,1616666747009
+scavenge,begin,0,309468,1616666747010
+scavenge,end,0,309498,1616666747010
+tick,0x2ae700085c7d,298491,0,0x0,0
+scavenge,begin,0,310277,1616666747011
+scavenge,end,0,310308,1616666747011
+tick,0x55742631e6c5,299557,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,311153,1616666747012
+scavenge,end,0,311185,1616666747012
+tick,0x55742631ec8c,300625,0,0x0,0
+scavenge,begin,0,311976,1616666747012
+scavenge,end,0,312006,1616666747012
+scavenge,begin,0,312803,1616666747013
+scavenge,end,0,312835,1616666747013
+tick,0x55742631e6b2,301687,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,313625,1616666747014
+scavenge,end,0,313657,1616666747014
+tick,0x2ae700085d65,302754,0,0x0,0
+scavenge,begin,0,314436,1616666747015
+scavenge,end,0,314466,1616666747015
+scavenge,begin,0,315257,1616666747015
+scavenge,end,0,315285,1616666747015
+tick,0x55742631e6a3,303821,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,316113,1616666747016
+scavenge,end,0,316143,1616666747016
+tick,0x55742631e644,304884,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,316988,1616666747017
+scavenge,end,0,317017,1616666747017
+tick,0x2ae700085d80,305949,0,0x0,0
+scavenge,begin,0,317851,1616666747018
+scavenge,end,0,317885,1616666747018
+scavenge,begin,0,318625,1616666747018
+scavenge,end,0,318653,1616666747018
+tick,0x2ae700086591,307074,0,0x0,0
+scavenge,begin,0,319558,1616666747019
+scavenge,end,0,319588,1616666747019
+tick,0x55742631e66a,308082,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,320425,1616666747020
+scavenge,end,0,320455,1616666747020
+scavenge,begin,0,321187,1616666747021
+scavenge,end,0,321218,1616666747021
+tick,0x55742631e6c5,309145,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,322007,1616666747021
+scavenge,end,0,322037,1616666747021
+tick,0x2ae700085c7d,310209,0,0x0,0
+scavenge,begin,0,322823,1616666747022
+scavenge,end,0,322853,1616666747022
+scavenge,begin,0,323609,1616666747023
+tick,0x2ae700085be8,311346,0,0x0,0
+scavenge,end,0,323649,1616666747023
+scavenge,begin,0,324575,1616666747024
+scavenge,end,0,324606,1616666747024
+tick,0x55742631e67e,312340,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,325442,1616666747024
+scavenge,end,0,325473,1616666747025
+tick,0x2ae700085cf3,313402,0,0x0,0
+scavenge,begin,0,326311,1616666747025
+scavenge,end,0,326343,1616666747025
+scavenge,begin,0,327084,1616666747026
+scavenge,end,0,327113,1616666747026
+tick,0x7f3662dccff0,314465,0,0x0,1
+scavenge,begin,0,327888,1616666747027
+scavenge,end,0,327918,1616666747027
+tick,0x55742631e68e,315587,0,0x0,0,0x2ae7000865b3
+scavenge,begin,0,328823,1616666747028
+scavenge,end,0,328854,1616666747028
+tick,0x55742631e644,316600,0,0x0,0,0x2ae70008664a
+scavenge,begin,0,329692,1616666747028
+scavenge,end,0,329724,1616666747028
+scavenge,begin,0,330512,1616666747029
+scavenge,end,0,330541,1616666747029
+tick,0x2ae700086616,317625,0,0x0,0
+scavenge,begin,0,331375,1616666747030
+scavenge,end,0,331407,1616666747030
+tick,0x2ae700085c6e,318792,0,0x0,0
+scavenge,begin,0,332320,1616666747031
+scavenge,end,0,332349,1616666747031
+scavenge,begin,0,333133,1616666747031
+tick,0x7f3662e0322e,319757,0,0x0,1
+scavenge,end,0,333221,1616666747031
+scavenge,begin,0,334027,1616666747032
+scavenge,end,0,334056,1616666747032
+tick,0x55742631e655,320820,0,0x0,0,0x2ae7000865fe
+scavenge,begin,0,334833,1616666747033
+scavenge,end,0,334862,1616666747033
+tick,0x55742631e641,321884,0,0x0,0
+scavenge,begin,0,335648,1616666747034
+scavenge,end,0,335678,1616666747034
+scavenge,begin,0,336422,1616666747034
+scavenge,end,0,336450,1616666747034
+tick,0x55742631e6b7,323047,0,0x0,0,0x2ae7000865b3
+profiler,end
+delete,MemoryChunk,0x2ae708180000
+delete,MemoryChunk,0x2ae708200000
+delete,MemoryChunk,0x2ae708380000
+delete,MemoryChunk,0x2ae7083c0000
+delete,MemoryChunk,0x2ae700040000
+delete,MemoryChunk,0x2ae700080000
+delete,MemoryChunk,0x2ae7081c0000
+delete,MemoryChunk,0x2ae708240000
+delete,MemoryChunk,0x2ae708280000
+delete,MemoryChunk,0x2ae7082c0000
+delete,MemoryChunk,0x2ae708300000
+delete,MemoryChunk,0x2ae708340000
+delete,MemoryChunk,0x2ae708080000
+delete,MemoryChunk,0x2ae7080c0000
+delete,MemoryChunk,0x2ae708100000
+delete,MemoryChunk,0x2ae708140000
+delete,MemoryChunk,0x2ae708040000
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor-test-large.log.symbols.json b/deps/v8/test/mjsunit/tools/tickprocessor-test-large.log.symbols.json
new file mode 100644
index 0000000000..e7917da290
--- /dev/null
+++ b/deps/v8/test/mjsunit/tools/tickprocessor-test-large.log.symbols.json
@@ -0,0 +1 @@
+[["v8_Default_embedded_blob_code_data_",93957345371712,93957345373344],["v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*)",93957340107136,93957340107454],["construct_stub_invoke_deopt_addr",93957345398548,93957345398656],["v8::internal::SpaceWithLinearArea::RemoveAllocationObserver(v8::internal::AllocationObserver*)",93957337599472,93957337599634],["v8::internal::Deserializer::GetBackReferencedObject()",93957340528336,93957340528467],["v8::internal::SetSnapshotFromFile(v8::StartupData*)",93957346612128,93957346612307],["v8::internal::RootScavengeVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337529616,93957337529705],["v8::internal::Log::MessageBuilder::AppendString(char const*, unsigned long, bool)",93957338139424,93957338139694],["v8::internal::Stats_Runtime_ShrinkFinalizationRegistryUnregisterTokenMap(int, unsigned long*, v8::internal::Isolate*)",93957340505520,93957340506329],["v8::internal::compiler::JSOperatorBuilder::ToName()",93957343305728,93957343305741],["__libc_malloc",139871563825392,139871563826148],["v8::internal::LargeObjectSpace::SizeOfObjects()",93957337078992,93957337079005],["v8::internal::SpaceWithLinearArea::AdvanceAllocationObservers()",93957337599376,93957337599467],["v8::sampler::Sampler::Start()",93957338110944,93957338111064],["v8::internal::Runtime_CompileForOnStackReplacement(int, unsigned long*, v8::internal::Isolate*)",93957340005712,93957340007781],["v8::internal::Stats_Runtime_StringIteratorProtector(int, unsigned long*, v8::internal::Isolate*)",93957340477680,93957340478182],["v8::internal::IdentityMap<int, v8::base::DefaultAllocationPolicy>::~IdentityMap()",93957340518592,93957340518630],["v8::internal::compiler::TopLevelLiveRange::AddUsePosition(v8::internal::compiler::UsePosition*, bool)",93957343090544,93957343090865],["v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*)",93957345371568,93957345371601],["vprintf",139871563591584,139871563591607],["cfree",139871563826976,139871563827241],["v8::internal::Heap::Scavenge()",93957336999824,93957337000599],["v8::internal::RootScavengeVisitor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)",93957337529568,93957337529610],["v8::internal::Page::CreateBlackAreaBackground(unsigned long, unsigned long)",93957337597056,93957337597560],["std::__1::vector<v8::internal::JsonParser<unsigned char>::JsonContinuation, std::__1::allocator<v8::internal::JsonParser<unsigned char>::JsonContinuation> >::pop_back()",93957338045776,93957338045855],["v8::internal::WorkerThreadRuntimeCallStats::AddToMainTable(v8::internal::RuntimeCallStats*)",93957338130704,93957338131057],["v8::internal::Stats_Runtime_HealOptimizedCodeSlot(int, unsigned long*, v8::internal::Isolate*)",93957340000496,93957340001052],["v8::internal::Runtime_BytecodeBudgetInterruptFromBytecode(int, unsigned long*, v8::internal::Isolate*)",93957340104320,93957340105047],["v8::internal::Stats_Runtime_RegexpHasBytecode(int, unsigned long*, v8::internal::Isolate*)",93957340455856,93957340456577],["v8::internal::Runtime_TypedArrayCopyElements(int, unsigned long*, v8::internal::Isolate*)",93957340488720,93957340489144],["v8::internal::ScriptData::ScriptData(unsigned char const*, int)",93957340510320,93957340510490],["std::__1::vector<std::__1::shared_ptr<v8::internal::BackingStore>, std::__1::allocator<std::__1::shared_ptr<v8::internal::BackingStore> > >::push_back(std::__1::shared_ptr<v8::internal::BackingStore>&&)",93957340523760,93957340523810],["Cr_z_inflate_fast_chunk_",93957342806528,93957342810754],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::SelectParameters const&)",93957343304480,93957343304597],["v8::internal::compiler::Scheduler::ScheduleEarly()",93957344756624,93957344757199],["v8_code_start_for_profiler_",93957345371680,93957345371681],["std::__1::__libcpp_snprintf_l(char*, unsigned long, __locale_struct*, char const*, ...)",93957346691040,93957346691237],["pthread_attr_setschedparam",139871563805840,139871563805934],["__write",139871564238624,139871564238781],["v8::internal::Heap::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment)",93957336852080,93957336853129],["v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment)",93957337025376,93957337025582],["v8::internal::ScavengerCollector::CollectGarbage()",93957337516832,93957337523563],["void v8::internal::BodyDescriptorBase::IterateJSObjectBodyImpl<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337572544,93957337572722],["v8::internal::SpaceWithLinearArea::UpdateAllocationOrigins(v8::internal::AllocationOrigin)",93957337598752,93957337598770],["v8::internal::interpreter::LoopBuilder::BindContinueTarget()",93957338027808,93957338027826],["v8::internal::JsonStringifier::InitializeReplacer(v8::internal::Handle<v8::internal::Object>)",93957338070272,93957338071476],["v8::internal::RuntimeCallCounter::Reset()",93957338127712,93957338127725],["v8::internal::Log::MessageBuilder& v8::internal::Log::MessageBuilder::operator<< <char const*>(char const*)",93957338138112,93957338138165],["v8::internal::Stats_Runtime_WeakCollectionDelete(int, unsigned long*, v8::internal::Isolate*)",93957339991888,93957339992527],["v8::internal::Stats_Runtime_ObserveNode(int, unsigned long*, v8::internal::Isolate*)",93957340005216,93957340005712],["v8::internal::Runtime_ThrowInvalidStringLength(int, unsigned long*, v8::internal::Isolate*)",93957340097296,93957340097439],["v8::internal::Runtime_BytecodeBudgetInterruptFromCode(int, unsigned long*, v8::internal::Isolate*)",93957340106160,93957340106438],["v8::internal::Stats_Runtime_EnsureFeedbackVectorForFunction(int, unsigned long*, v8::internal::Isolate*)",93957340422896,93957340423492],["v8::internal::Stats_Runtime_HasFixedUint16Elements(int, unsigned long*, v8::internal::Isolate*)",93957340467536,93957340468072],["v8::internal::Stats_Runtime_IsBeingInterpreted(int, unsigned long*, v8::internal::Isolate*)",93957340483120,93957340483576],["unsigned int std::__1::__sort3<bool (*&)(double, double), v8::internal::UnalignedSlot<double> >(v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, bool (*&)(double, double))",93957340500112,93957340500366],["v8::internal::Runtime::IsAllowListedForFuzzing(v8::internal::Runtime::FunctionId)",93957340509072,93957340509179],["v8::internal::CreateInterpreterDataForDeserializedCode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, bool)",93957340514096,93957340515202],["v8::internal::ContextSerializer::ContextSerializer(v8::internal::Isolate*, v8::base::Flags<v8::internal::Snapshot::SerializerFlag, int>, v8::internal::StartupSerializer*, v8::SerializeInternalFieldsCallback)",93957340520240,93957340520339],["v8::internal::Deserializer::LogNewMapEvents()",93957340525200,93957340525331],["operator delete(void*)",93957340609296,93957340609306],["v8::internal::compiler::TopLevelLiveRange::AddUseInterval(v8::internal::compiler::LifetimePosition, v8::internal::compiler::LifetimePosition, v8::internal::Zone*, bool)",93957343090272,93957343090533],["v8::internal::compiler::NodeCache<int, v8::base::hash<int>, std::__1::equal_to<int> >::GetCachedNodes(v8::internal::ZoneVector<v8::internal::compiler::Node*>*)",93957343291792,93957343292516],["v8::internal::compiler::SparseInputMask::IterateOverInputs(v8::internal::compiler::Node*)",93957343305040,93957343305064],["v8::internal::compiler::Scheduler::Scheduler(v8::internal::Zone*, v8::internal::compiler::Graph*, v8::internal::compiler::Schedule*, v8::base::Flags<v8::internal::compiler::Scheduler::Flag, int>, unsigned long, v8::internal::TickCounter*, v8::internal::ProfileDataFromFile const*)",93957344752240,93957344752602],["v8::internal::compiler::WasmGraphBuilder::ArrayNewWithRtt(unsigned int, v8::internal::wasm::ArrayType const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345312624,93957345313820],["v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)",93957345371616,93957345371651],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(float)",93957346641056,93957346641457],["cuserid",139871563591056,139871563591221],["pthread_attr_getschedparam",139871563805824,139871563805831],["posix_spawnattr_setschedpolicy",139871564234784,139871564234803],["__nss_database_lookup",139871564548416,139871564548429],["std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char)",93957335315632,93957335315963],["v8::internal::Heap::MoveRange(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot, int, v8::internal::WriteBarrierMode)",93957336995504,93957336995715],["v8::internal::Heap::ConfigureHeap(v8::ResourceConstraints const&)",93957337021456,93957337022600],["v8::internal::LargeObjectSpace::Size()",93957337078944,93957337078957],["v8::internal::GlobalSafepoint::EnterSafepointScope()",93957337500656,93957337501333],["v8::internal::Scavenger::RememberPromotedEphemeron(v8::internal::EphemeronHashTable, int)",93957337526976,93957337527142],["v8::internal::ScavengeVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337536096,93957337536206],["v8::internal::Worklist<v8::internal::MemoryChunk*, 64>::FlushToGlobal(int)",93957337575792,93957337576014],["v8::internal::Space::RemoveAllocationObserver(v8::internal::AllocationObserver*)",93957337598560,93957337598574],["v8::internal::LocalAllocationBuffer::LocalAllocationBuffer(v8::internal::Heap*, v8::internal::LinearAllocationArea)",93957337599024,93957337599080],["v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterAllocateEvent(v8::internal::interpreter::Register)",93957338008128,93957338008269],["v8::internal::interpreter::Interpreter::Interpreter(v8::internal::Isolate*)",93957338030368,93957338030487],["v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<unsigned short>::DecodeString<v8::internal::SeqTwoByteString>(v8::internal::JsonString const&, v8::internal::Handle<v8::internal::SeqTwoByteString>, v8::internal::Handle<v8::internal::String>)",93957338059392,93957338059655],["v8::internal::JsonStringifier::SerializeJSReceiverSlow(v8::internal::Handle<v8::internal::JSReceiver>)",93957338087744,93957338088570],["v8::internal::Histogram::AddSample(int)",93957338112992,93957338113026],["v8::internal::RuntimeCallStatEntries::Add(v8::internal::RuntimeCallCounter*)",93957338128880,93957338129033],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<v8::internal::RuntimeCallStatEntries::Entry, v8::internal::RuntimeCallStatEntries::Entry>&, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> > >(std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::__less<v8::internal::RuntimeCallStatEntries::Entry, v8::internal::RuntimeCallStatEntries::Entry>&)",93957338135952,93957338136940],["v8::internal::Log::MessageBuilder::AppendString(v8::internal::Vector<char const>)",93957338139216,93957338139417],["v8::internal::(anonymous namespace)::AddDescriptorsByTemplate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::DescriptorArray>, v8::internal::Handle<v8::internal::NumberDictionary>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Arguments<(v8::internal::ArgumentsType)0>&)",93957339977424,93957339979670],["v8::internal::Stats_Runtime_TryInstallNCICode(int, unsigned long*, v8::internal::Isolate*)",93957339996464,93957339997246],["v8::internal::Stats_Runtime_NotifyDeoptimized(int, unsigned long*, v8::internal::Isolate*)",93957340003840,93957340005142],["v8::internal::Runtime_Throw(int, unsigned long*, v8::internal::Isolate*)",93957340084144,93957340084279],["v8::internal::Runtime_ThrowNotConstructor(int, unsigned long*, v8::internal::Isolate*)",93957340100048,93957340100207],["v8::internal::Stats_Runtime_BytecodeBudgetInterruptFromBytecode(int, unsigned long*, v8::internal::Isolate*)",93957340105056,93957340106147],["v8::internal::Stats_Runtime_BytecodeBudgetInterruptFromCode(int, unsigned long*, v8::internal::Isolate*)",93957340106448,93957340107123],["v8::internal::Runtime_StringBuilderConcat(int, unsigned long*, v8::internal::Isolate*)",93957340387936,93957340388868],["v8::internal::Stats_Runtime_DebugTrace(int, unsigned long*, v8::internal::Isolate*)",93957340442512,93957340442965],["v8::internal::Stats_Runtime_HasDoubleElements(int, unsigned long*, v8::internal::Isolate*)",93957340462240,93957340462776],["v8::internal::Stats_Runtime_HasFixedBigInt64Elements(int, unsigned long*, v8::internal::Isolate*)",93957340472784,93957340473320],["v8::internal::Stats_Runtime_ArrayBufferMaxByteLength(int, unsigned long*, v8::internal::Isolate*)",93957340480544,93957340481060],["v8::internal::(anonymous namespace)::EnsureFeedbackVector(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957340486720,93957340487127],["bool v8::internal::(anonymous namespace)::CompareNum<float>(float, float)",93957340494944,93957340495022],["unsigned int std::__1::__sort5<std::__1::__less<unsigned long, unsigned long>&, v8::internal::UnalignedSlot<unsigned long> >(v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, std::__1::__less<unsigned long, unsigned long>&)",93957340502784,93957340502928],["v8::internal::Stats_Runtime_JSWeakRefAddToKeptObjects(int, unsigned long*, v8::internal::Isolate*)",93957340507488,93957340508087],["v8::internal::Runtime::FunctionForId(v8::internal::Runtime::FunctionId)",93957340510160,93957340510183],["v8::internal::SnapshotByteSink::Put(unsigned char, char const*)",93957340512224,93957340512451],["v8::internal::SerializedCodeData::Payload() const",93957340518112,93957340518130],["v8::internal::ContextDeserializer::Deserialize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSGlobalProxy>, v8::DeserializeInternalFieldsCallback)",93957340518912,93957340519157],["v8::internal::ContextSerializer::SerializeObjectImpl(v8::internal::Handle<v8::internal::HeapObject>)",93957340521136,93957340521801],["v8::internal::Deserializer::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957340524416,93957340524526],["v8::internal::StringTableInsertionKey::IsMatch(v8::internal::Isolate*, v8::internal::String)",93957340525728,93957340525765],["v8::internal::SerializerDeserializer::CanBeDeferred(v8::internal::HeapObject)",93957340544032,93957340544206],["v8::OutputStream::GetChunkSize()",93957342560320,93957342560331],["v8::internal::compiler::LiveRangeBoundArray::Find(v8::internal::compiler::LifetimePosition) const",93957343088480,93957343088540],["v8::internal::compiler::BytecodeGraphBuilder::BuildSwitchOnGeneratorState(v8::internal::ZoneVector<v8::internal::compiler::ResumeJumpTarget> const&, bool)",93957343277712,93957343279214],["v8::internal::compiler::CommonOperatorReducer::reducer_name() const",93957343301072,93957343301085],["v8::internal::compiler::SparseInputMask::InputIterator::IsReal() const",93957343304848,93957343304865],["v8::internal::compiler::CommonOperatorBuilder::CommonOperatorBuilder(v8::internal::Zone*)",93957343305616,93957343305727],["v8::internal::compiler::BasicBlock::AddSuccessor(v8::internal::compiler::BasicBlock*)",93957344737072,93957344737731],["v8::internal::compiler::Scheduler::PrepareUses()",93957344755104,93957344756620],["v8::internal::compiler::WasmGraphBuilder::LoadIndirectFunctionTable(unsigned int, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345284384,93957345285490],["v8::internal::compiler::WasmAssemblerOptions()",93957345329776,93957345329827],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(short)",93957346638992,93957346639422],["std::__1::__num_get<wchar_t>::__stage2_float_loop(wchar_t, bool&, char&, char*, char*&, wchar_t, wchar_t, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int*, unsigned int*&, unsigned int&, wchar_t*)",93957346688496,93957346689333],["strtof128",139871563578576,139871563578594],["_IO_vfprintf",139871563591568,139871563591575],["_IO_file_read",139871563787744,139871563787773],["pathconf",139871564098480,139871564099114],["openat",139871564238112,139871564238408],["llseek",139871564238784,139871564238820],["__libc_freeres",139871564762752,139871564762913],["operator delete[](void*)",93957335214528,93957335214538],["v8::internal::Factory::NewBaselineData(v8::internal::Handle<v8::internal::Code>, v8::internal::Handle<v8::internal::HeapObject>)",93957336851280,93957336851613],["v8::internal::Heap::DevToolsTraceEventScope::~DevToolsTraceEventScope()",93957336987936,93957336988312],["v8::internal::Heap::CompleteSweepingYoung(v8::internal::GarbageCollector)",93957336997616,93957336998051],["v8::internal::Heap::RestoreHeapLimit(unsigned long)",93957337017984,93957337018320],["v8::internal::Heap::PercentToGlobalMemoryLimit()",93957337024848,93957337025164],["v8::internal::CodeLargeObjectSpace::CodeLargeObjectSpace(v8::internal::Heap*)",93957337078064,93957337078360],["v8::internal::LargeObjectSpace::~LargeObjectSpace()",93957337078960,93957337078988],["v8::internal::ReadOnlySpace::~ReadOnlySpace()",93957337497872,93957337497910],["v8::internal::ScavengeJob::ScheduleTaskIfNeeded(v8::internal::Heap*)",93957337501984,93957337502351],["v8::internal::ScavengerCollector::IterateStackAndScavenge(v8::internal::RootScavengeVisitor*, std::__1::vector<std::__1::unique_ptr<v8::internal::Scavenger, std::__1::default_delete<v8::internal::Scavenger> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::Scavenger, std::__1::default_delete<v8::internal::Scavenger> > > >*, int)",93957337524880,93957337525932],["v8::internal::ScavengerCollector::ClearOldEphemerons()",93957337528176,93957337529558],["v8::internal::ScavengerCollector::JobTask::~JobTask()",93957337535920,93957337536000],["v8::internal::Worklist<v8::internal::Scavenger::PromotionListEntry, 4>::FlushToGlobal(int)",93957337566288,93957337566548],["void v8::internal::Code::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337574416,93957337574495],["v8::internal::Page::AllocateFreeListCategories()",93957337595184,93957337595370],["v8::internal::Page::DestroyBlackAreaBackground(unsigned long, unsigned long)",93957337598016,93957337598533],["v8::internal::Space::ResumeAllocationObservers()",93957337598592,93957337598605],["v8::internal::LocalAllocationBuffer::CloseAndMakeIterable()",93957337598864,93957337598961],["v8::internal::LocalAllocationBuffer::operator=(v8::internal::LocalAllocationBuffer&&)",93957337599152,93957337599198],["v8::internal::interpreter::BytecodeGenerator::GetCachedLoadSuperICSlot(v8::internal::AstRawString const*)",93957337971184,93957337971486],["v8::internal::interpreter::ConstantArrayBuilder::ConstantArraySlice::Allocate(v8::internal::interpreter::ConstantArrayBuilder::Entry, unsigned long)",93957338020752,93957338021205],["v8::internal::interpreter::ConditionalControlFlowBuilder::~ConditionalControlFlowBuilder()",93957338029088,93957338029116],["v8::internal::JsonParser<unsigned char>::ParseJson()",93957338036832,93957338036965],["v8::internal::JsonParser<unsigned short>::JsonParser(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957338052080,93957338052636],["v8::base::SmallVector<v8::internal::JsonProperty, 16ul>::Grow()",93957338068304,93957338068316],["v8::internal::CircularStructureMessageBuilder::AppendNormalLine(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338075712,93957338076914],["v8::internal::JsonStringifier::Result v8::internal::JsonStringifier::Serialize_<true>(v8::internal::Handle<v8::internal::Object>, bool, v8::internal::Handle<v8::internal::Object>)",93957338098496,93957338108648],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, std::__1::vector<v8::sampler::Sampler*, std::__1::allocator<v8::sampler::Sampler*> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, std::__1::vector<v8::sampler::Sampler*, std::__1::allocator<v8::sampler::Sampler*> > >, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::vector<v8::sampler::Sampler*, std::__1::allocator<v8::sampler::Sampler*> > >, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::vector<v8::sampler::Sampler*, std::__1::allocator<v8::sampler::Sampler*> > >, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, std::__1::vector<v8::sampler::Sampler*, std::__1::allocator<v8::sampler::Sampler*> > > > >::__emplace_unique_key_args<unsigned long, unsigned long&, std::__1::vector<v8::sampler::Sampler*, std::__1::allocator<v8::sampler::Sampler*> > >(unsigned long const&, unsigned long&, std::__1::vector<v8::sampler::Sampler*, std::__1::allocator<v8::sampler::Sampler*> >&&)",93957338111872,93957338112816],["v8::internal::Counters::Counters(v8::internal::Isolate*)",93957338113488,93957338115946],["v8::internal::RuntimeCallTimer::Stop()",93957338128144,93957338128263],["v8::internal::RuntimeCallStats::Dump(v8::tracing::TracedValue*)",93957338130112,93957338130188],["v8::internal::RuntimeCallStatEntries::Entry::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957338131712,93957338132122],["v8::internal::Log::CreateOutputHandle(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957338137040,93957338137294],["v8::internal::Log::Close()",93957338138496,93957338138573],["v8::internal::Runtime_ThrowSuperAlreadyCalledError(int, unsigned long*, v8::internal::Isolate*)",93957339963152,93957339963307],["v8::internal::Stats_Runtime_SetGrow(int, unsigned long*, v8::internal::Isolate*)",93957339986960,93957339987816],["v8::internal::Stats_Runtime_CompileLazy(int, unsigned long*, v8::internal::Isolate*)",93957339993920,93957339994780],["v8::internal::Stats_Runtime_CompileOptimized_NotConcurrent(int, unsigned long*, v8::internal::Isolate*)",93957339998272,93957339998866],["v8::internal::Stats_Runtime_InstantiateAsmJs(int, unsigned long*, v8::internal::Isolate*)",93957340001824,93957340002952],["v8::internal::Runtime_ObserveNode(int, unsigned long*, v8::internal::Isolate*)",93957340005152,93957340005207],["v8::internal::Runtime_AsyncFunctionEnter(int, unsigned long*, v8::internal::Isolate*)",93957340074128,93957340074165],["v8::internal::Runtime_UnwindAndFindExceptionHandler(int, unsigned long*, v8::internal::Isolate*)",93957340091008,93957340091040],["v8::internal::Runtime_ThrowThrowMethodMissing(int, unsigned long*, v8::internal::Isolate*)",93957340098672,93957340098827],["v8::internal::Runtime_StackGuard(int, unsigned long*, v8::internal::Isolate*)",93957340101504,93957340101899],["v8::internal::Runtime_ThrowConstAssignError(int, unsigned long*, v8::internal::Isolate*)",93957340340976,93957340341131],["v8::internal::Stats_Runtime_ClearMegamorphicStubCache(int, unsigned long*, v8::internal::Isolate*)",93957340408896,93957340409415],["v8::internal::Stats_Runtime_ClearFunctionFeedback(int, unsigned long*, v8::internal::Isolate*)",93957340435552,93957340436151],["v8::internal::Stats_Runtime_DisassembleFunction(int, unsigned long*, v8::internal::Isolate*)",93957340449264,93957340449724],["v8::internal::Stats_Runtime_HasFastElements(int, unsigned long*, v8::internal::Isolate*)",93957340459616,93957340460150],["v8::internal::Stats_Runtime_HasSloppyArgumentsElements(int, unsigned long*, v8::internal::Isolate*)",93957340464912,93957340465451],["v8::internal::Stats_Runtime_HasFixedFloat32Elements(int, unsigned long*, v8::internal::Isolate*)",93957340470160,93957340470696],["v8::internal::Stats_Runtime_PromiseSpeciesProtector(int, unsigned long*, v8::internal::Isolate*)",93957340475248,93957340475750],["v8::internal::Stats_Runtime_SerializeDeserializeNow(int, unsigned long*, v8::internal::Isolate*)",93957340479040,93957340479651],["v8::internal::Stats_Runtime_CompleteInobjectSlackTracking(int, unsigned long*, v8::internal::Isolate*)",93957340481984,93957340482591],["v8::internal::Stats_Runtime_NewRegExpWithBacktrackLimit(int, unsigned long*, v8::internal::Isolate*)",93957340484880,93957340485780],["v8::internal::DebugPrintImpl(v8::internal::MaybeObject)",93957340487408,93957340487833],["v8::internal::Runtime_TypedArraySortFast(int, unsigned long*, v8::internal::Isolate*)",93957340490800,93957340491846],["unsigned int std::__1::__sort4<bool (*&)(float, float), float*>(float*, float*, float*, float*, bool (*&)(float, float))",93957340497280,93957340497684],["bool std::__1::__insertion_sort_incomplete<bool (*&)(double, double), v8::internal::UnalignedSlot<double> >(v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, bool (*&)(double, double))",93957340501056,93957340501492],["unsigned int std::__1::__sort4<std::__1::__less<long, long>&, v8::internal::UnalignedSlot<long> >(v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, std::__1::__less<long, long>&)",93957340504448,93957340504554],["v8::internal::Stats_Runtime_JSFinalizationRegistryRegisterWeakCellWithUnregisterToken(int, unsigned long*, v8::internal::Isolate*)",93957340506608,93957340507272],["v8::internal::Runtime::NeedsExactContext(v8::internal::Runtime::FunctionId)",93957340508928,93957340508993],["v8::internal::(anonymous namespace)::InitializeIntrinsicFunctionNames()",93957340509504,93957340510064],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::Runtime::FunctionId)",93957340510208,93957340510263],["v8::internal::CodeSerializer::~CodeSerializer()",93957340512128,93957340512173],["v8::internal::TorqueGeneratedScript<v8::internal::Script, v8::internal::Struct>::set_context_data(v8::internal::Object, v8::internal::WriteBarrierMode)",93957340513824,93957340513955],["v8::internal::SerializedCodeData::SerializedCodeData(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const*, v8::internal::CodeSerializer const*)",93957340517312,93957340517808],["v8::internal::SnapshotData::~SnapshotData()",93957340518208,93957340518261],["v8::internal::IdentityMap<int, v8::base::DefaultAllocationPolicy>::NewPointerArray(unsigned long)",93957340518688,93957340518706],["v8::internal::ContextDeserializer::DeserializeEmbedderFields(v8::DeserializeInternalFieldsCallback)",93957340519456,93957340519989],["v8::internal::ContextSerializer::~ContextSerializer()",93957340520432,93957340520509],["v8::internal::ContextSerializer::CheckRehashability(v8::internal::HeapObject)",93957340523424,93957340523486],["v8::internal::Deserializer::Rehash()",93957340523888,93957340523980],["v8::internal::Deserializer::DeserializeDeferredObjects()",93957340524576,93957340524648],["v8::internal::Deserializer::LogScriptEvents(v8::internal::Script)",93957340525520,93957340525621],["v8::internal::ExternalString::set_address_as_resource(v8::internal::Isolate*, unsigned long)",93957340528016,93957340528190],["int v8::internal::Deserializer::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject)",93957340531168,93957340533261],["v8::tracing::TracedValue::~TracedValue()",93957340605104,93957340605152],["v8_inspector::(anonymous namespace)::HeapSnapshotOutputStream::GetChunkSize()",93957342560208,93957342560219],["v8_crdtp::(anonymous namespace)::PreSerialized::~PreSerialized()",93957342802656,93957342802694],["v8::internal::compiler::RegisterAllocatorVerifier::VerifyAssignment(char const*)",93957343071440,93957343072596],["v8::internal::compiler::TopLevelLiveRange::GetSpillRangeOperand() const",93957343089136,93957343089173],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar9()",93957343264400,93957343264468],["v8::base::TemplateHashMapImpl<int, v8::internal::compiler::BytecodeLiveness, v8::base::KeyEqualityMatcher<int>, v8::internal::ZoneAllocationPolicy>::Resize()",93957343284272,93957343284653],["v8::internal::compiler::CommonOperatorReducer::ReduceReturn(v8::internal::compiler::Node*)",93957343296992,93957343298052],["v8::internal::compiler::ValueInputCountOfReturn(v8::internal::compiler::Operator const*)",93957343302080,93957343302092],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::TypedObjectStateInfo const&)",93957343304624,93957343304794],["v8::internal::compiler::SparseInputMask::InputIterator::GetReal() const",93957343304912,93957343304957],["v8::internal::compiler::MachineTypesOf(v8::internal::compiler::Operator const*)",93957343305408,93957343305429],["v8::internal::compiler::Truncation::LessGeneral(v8::internal::compiler::Truncation::TruncationKind, v8::internal::compiler::Truncation::TruncationKind)",93957344722304,93957344722403],["v8::internal::compiler::Schedule::AddNode(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344740176,93957344741304],["v8::internal::compiler::Scheduler::BuildCFG()",93957344753680,93957344754840],["v8::internal::compiler::WasmGraphBuilder::BuildI32AsmjsDivU(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345259728,93957345260117],["v8::internal::compiler::WasmGraphBuilder::StoreLane(v8::internal::MachineRepresentation, v8::internal::compiler::Node*, unsigned long, unsigned int, v8::internal::compiler::Node*, unsigned char, int, v8::internal::wasm::ValueType)",93957345298432,93957345298857],["v8::internal::compiler::WasmGraphBuilder::RefIsI31(v8::internal::compiler::Node*)",93957345320416,93957345320487],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::BuildUnpackObjectWrapper(v8::internal::compiler::Node*, v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::UnpackFailureBehavior)",93957345366480,93957345367424],["std::__1::ios_base::init(void*)",93957346635104,93957346635184],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned long)",93957346640656,93957346641050],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, unsigned long&) const",93957346677936,93957346677946],["std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, long) const",93957346690416,93957346691031],["wcstoimax",139871563568688,139871563568695],["__strtof128_nan",139871563589856,139871563590022],["fsetpos",139871563739600,139871563739920],["pthread_self",139871563805488,139871563805498],["endgrent",139871564079904,139871564080126],["__sched_get_priority_min",139871564197888,139871564197921],["__fxstatat",139871564236896,139871564236980],["__read",139871564238464,139871564238621],["__nss_group_lookup",139871564548368,139871564548388],["__pthread_cond_timedwait",139871566612640,139871566613513],["_start",93957335199456,93957335199499],["std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long)",93957335315376,93957335315627],["v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin)",93957336850128,93957336850443],["v8::internal::Factory::TryNewFixedArray(int, v8::internal::AllocationType)",93957336851776,93957336852071],["v8::internal::Heap::MonotonicallyIncreasingTimeInMs()",93957336975712,93957336975740],["v8::internal::Heap::NotifyContextDisposed(bool)",93957336991824,93957336992330],["void v8::internal::Heap::WriteBarrierForRange<v8::internal::CompressedObjectSlot>(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957336996000,93957336997530],["v8::internal::Heap::MinorMarkCompact()",93957336999216,93957336999824],["void v8::internal::Heap::CreateFillerForArray<v8::internal::FixedArrayBase>(v8::internal::FixedArrayBase, int, int)",93957337010096,93957337010868],["v8::internal::Heap::builtin(int)",93957337020064,93957337020081],["v8::internal::Heap::MaxRegularHeapObjectSize(v8::internal::AllocationType)",93957337024064,93957337024087],["v8::internal::Heap::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment)",93957337025216,93957337025363],["v8::internal::LargeObjectSpace::GetObjectIterator(v8::internal::Heap*)",93957337076400,93957337076447],["v8::internal::CodeLargeObjectSpace::AddPage(v8::internal::LargePage*, unsigned long)",93957337078384,93957337078710],["v8::internal::PagedSpace::AllocateRawSlow(int, v8::internal::AllocationAlignment, v8::internal::AllocationOrigin)",93957337495664,93957337495921],["v8::internal::ReadOnlySpace::CommittedPhysicalMemory()",93957337499248,93957337499364],["v8::internal::SafepointScope::SafepointScope(v8::internal::Heap*)",93957337501616,93957337501639],["v8::internal::ScavengerCollector::JobTask::GetMaxConcurrency(unsigned long) const",93957337503888,93957337503971],["v8::internal::ScavengerCollector::NumberOfScavengeTasks()",93957337524016,93957337524223],["v8::internal::Scavenger::Finalize()",93957337525984,93957337526502],["v8::internal::ScavengerCollector::ClearYoungEphemerons(v8::internal::Worklist<v8::internal::EphemeronHashTable, 128>*)",93957337527152,93957337528162],["v8::internal::SlotCallbackResult v8::internal::Scavenger::ScavengeObject<v8::internal::FullHeapObjectSlot>(v8::internal::FullHeapObjectSlot, v8::internal::HeapObject)",93957337529712,93957337535918],["v8::internal::ScavengerCollector::JobTask::~JobTask()",93957337536000,93957337536083],["v8::internal::IterateAndScavengePromotedObjectsVisitor::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957337539280,93957337540033],["void v8::internal::CallIterateBody::apply<v8::internal::CodeDataContainer::BodyDescriptor, v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337569888,93957337569946],["void v8::internal::JSDataView::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337573600,93957337573812],["void v8::internal::SubclassBodyDescriptor<v8::internal::FixedBodyDescriptor<4, 28, 28>, v8::internal::FixedBodyDescriptor<28, 72, 72> >::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337574768,93957337574824],["v8::internal::TypedSlots::~TypedSlots()",93957337594288,93957337594391],["v8::internal::Page::MoveOldToNewRememberedSetForSweeping()",93957337595712,93957337595768],["v8::internal::Page::DestroyBlackArea(unsigned long, unsigned long)",93957337597568,93957337598005],["v8::internal::Space::AddAllocationObserver(v8::internal::AllocationObserver*)",93957337598544,93957337598558],["v8::internal::Space::PauseAllocationObservers()",93957337598576,93957337598589],["v8::internal::SpaceWithLinearArea::ComputeLimit(unsigned long, unsigned long, unsigned long)",93957337598608,93957337598738],["v8::internal::SpaceWithLinearArea::PrintAllocationsOrigins()",93957337598784,93957337598858],["v8::internal::LocalAllocationBuffer::MakeIterable()",93957337598976,93957337599013],["v8::internal::LocalAllocationBuffer::LocalAllocationBuffer(v8::internal::LocalAllocationBuffer&&)",93957337599088,93957337599143],["v8::internal::SpaceWithLinearArea::AddAllocationObserver(v8::internal::AllocationObserver*)",93957337599200,93957337599362],["v8::internal::interpreter::BytecodeGenerator::VisitIfStatement(v8::internal::IfStatement*)",93957337909952,93957337910537],["v8::internal::interpreter::BytecodeGenerator::VisitForNullishTest(v8::internal::Expression*, v8::internal::interpreter::BytecodeLabels*, v8::internal::interpreter::BytecodeLabels*, v8::internal::interpreter::BytecodeLabels*)",93957337996784,93957337997082],["v8::internal::interpreter::Register::current_context()",93957338014128,93957338014139],["v8::internal::interpreter::ConstantArrayBuilder::CreateReservedEntry()",93957338025376,93957338025515],["v8::internal::interpreter::TryCatchBuilder::EndCatch()",93957338028432,93957338028453],["v8::internal::interpreter::HandlerTableBuilder::SetTryRegionStart(int, unsigned long)",93957338030064,93957338030084],["v8::internal::interpreter::Interpreter::NewSourcePositionCollectionJob(v8::internal::ParseInfo*, v8::internal::FunctionLiteral*, v8::internal::Handle<v8::internal::BytecodeArray>, v8::internal::AccountingAllocator*, v8::internal::LocalIsolate*)",93957338034528,93957338034764],["v8::internal::JsonParser<unsigned char>::ScanUnicodeCharacter()",93957338042768,93957338043017],["v8::base::SmallVector<v8::internal::JsonProperty, 16ul>::resize_no_init(unsigned long)",93957338050832,93957338050909],["v8::internal::JsonParser<unsigned short>::ScanUnicodeCharacter()",93957338058032,93957338058281],["v8::internal::JsonParseInternalizer::RecurseAndApply(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>)",93957338066704,93957338066916],["_ZN2v88internal11StringShape33DispatchToSpecificTypeWithoutCastIZNS1_22DispatchToSpecificTypeIZNKS0_6String13IsEqualToImplILNS4_12EqualityTypeE0EtEEbNS0_6VectorIKT0_EERKNS0_31SharedStringAccessGuardIfNeededEE19IsEqualToDispatcherbJPKtRmRNS0_22CombinationAssertScopeIJNS0_29PerThreadAssertScopeDebugOnlyILNS0_19PerThreadAssertTypeE0ELb0EEENSJ_ILSK_1ELb0EEEEEESD_EEES8_S4_DpOT1_E17CastingDispatcherbJRS4_SG_SH_SO_SD_EEES8_SR_",93957338068656,93957338069048],["v8::internal::JsonStringifier::CurrentHolder(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338073856,93957338074120],["v8::internal::JsonStringifier::SerializeString(v8::internal::Handle<v8::internal::String>)",93957338081488,93957338085593],["v8::internal::CircularStructureMessageBuilder::AppendConstructorName(v8::internal::Handle<v8::internal::Object>)",93957338095376,93957338095537],["v8::sampler::SamplerManager::DoSample(v8::RegisterState const&)",93957338110112,93957338110630],["v8::sampler::Sampler::Stop()",93957338111344,93957338111664],["v8::internal::StatsCounterThreadSafe::Increment()",93957338112848,93957338112901],["v8::internal::TimedHistogram::Start(v8::base::ElapsedTimer*, v8::internal::Isolate*)",93957338113136,93957338113266],["v8::internal::Counters::ResetCreateHistogramFunction(void* (*)(char const*, int, int, unsigned long))",93957338120432,93957338127695],["v8::internal::RuntimeCallStats::Enter(v8::internal::RuntimeCallTimer*, v8::internal::RuntimeCallCounterId)",93957338127808,93957338127914],["v8::internal::RuntimeCallStats::Print()",93957338128336,93957338128582],["v8::internal::RuntimeCallStats::EnumerateCounters(std::__1::function<void (char const*, long, v8::base::TimeDelta)>)",93957338129760,93957338130009],["v8::internal::WorkerThreadRuntimeCallStats::GetKey()",93957338130320,93957338130385],["v8::internal::WorkerThreadRuntimeCallStatsScope::~WorkerThreadRuntimeCallStatsScope()",93957338131200,93957338131511],["unsigned int std::__1::__sort3<std::__1::__less<v8::internal::RuntimeCallStatEntries::Entry, v8::internal::RuntimeCallStatEntries::Entry>&, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> > >(std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::__less<v8::internal::RuntimeCallStatEntries::Entry, v8::internal::RuntimeCallStatEntries::Entry>&)",93957338134528,93957338135073],["v8::internal::LocalLogger::ScriptEvent(v8::internal::Logger::ScriptEventType, int)",93957338137008,93957338137021],["v8::internal::Log::Log(v8::internal::Logger*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957338137328,93957338137628],["v8::internal::Log::MessageBuilder::WriteToLogFile()",93957338138224,93957338138335],["v8::internal::Log::MessageBuilder::AppendString(v8::internal::String, v8::base::Optional<int>)",93957338138640,93957338138946],["v8::internal::Runtime_BigIntToBoolean(int, unsigned long*, v8::internal::Isolate*)",93957339955872,93957339955973],["v8::internal::Runtime_LoadFromSuper(int, unsigned long*, v8::internal::Isolate*)",93957339972240,93957339972789],["v8::internal::(anonymous namespace)::GetSuperHolder(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::(anonymous namespace)::SuperMode, v8::internal::LookupIterator::Key*)",93957339985408,93957339985950],["v8::internal::Stats_Runtime_MapShrink(int, unsigned long*, v8::internal::Isolate*)",93957339989472,93957339990248],["v8::internal::Stats_Runtime_WeakCollectionSet(int, unsigned long*, v8::internal::Isolate*)",93957339992784,93957339993417],["v8::internal::Stats_Runtime_InstallBaselineCode(int, unsigned long*, v8::internal::Isolate*)",93957339995232,93957339996051],["v8::internal::Stats_Runtime_CompileOptimized_Concurrent(int, unsigned long*, v8::internal::Isolate*)",93957339997456,93957339998053],["v8::internal::Stats_Runtime_FunctionFirstExecution(int, unsigned long*, v8::internal::Isolate*)",93957339999408,93957340000300],["v8::internal::Runtime_InstantiateAsmJs(int, unsigned long*, v8::internal::Isolate*)",93957340001056,93957340001816],["v8::internal::Runtime_NotifyDeoptimized(int, unsigned long*, v8::internal::Isolate*)",93957340002960,93957340003833],["v8_inspector::V8Debugger::interruptAndBreak(int)::$_1::__invoke(v8::Isolate*, void*)",93957340058672,93957340058682],["v8::internal::Runtime_AsyncGeneratorResolve(int, unsigned long*, v8::internal::Isolate*)",93957340079616,93957340079653],["v8::internal::Runtime_ThrowRangeError(int, unsigned long*, v8::internal::Isolate*)",93957340086656,93957340086940],["v8::internal::Runtime_NewError(int, unsigned long*, v8::internal::Isolate*)",93957340093408,93957340093683],["v8::internal::Runtime_ThrowIteratorResultNotAnObject(int, unsigned long*, v8::internal::Isolate*)",93957340097952,93957340098111],["v8::internal::Runtime_ThrowSymbolIteratorInvalid(int, unsigned long*, v8::internal::Isolate*)",93957340099360,93957340099515],["v8::internal::Runtime_ThrowApplyNonFunction(int, unsigned long*, v8::internal::Isolate*)",93957340100768,93957340100942],["v8::internal::Runtime_StackGuardWithGap(int, unsigned long*, v8::internal::Isolate*)",93957340102720,93957340103323],["v8::internal::Stats_Runtime_JSProxyGetHandler(int, unsigned long*, v8::internal::Isolate*)",93957340269520,93957340270035],["v8::internal::Runtime_LoadLookupSlotInsideTypeof(int, unsigned long*, v8::internal::Isolate*)",93957340367664,93957340367874],["v8::internal::Runtime_StringMaxLength(int, unsigned long*, v8::internal::Isolate*)",93957340399664,93957340399694],["v8::internal::Stats_Runtime_ICsAreEnabled(int, unsigned long*, v8::internal::Isolate*)",93957340417360,93957340417824],["v8::internal::Stats_Runtime_GetOptimizationStatus(int, unsigned long*, v8::internal::Isolate*)",93957340430848,93957340432941],["v8::internal::Stats_Runtime_ScheduleGCInStackCheck(int, unsigned long*, v8::internal::Isolate*)",93957340438640,93957340439087],["v8::internal::Stats_Runtime_SetForceSlowPath(int, unsigned long*, v8::internal::Isolate*)",93957340446304,93957340446792],["v8::internal::Stats_Runtime_InLargeObjectSpace(int, unsigned long*, v8::internal::Isolate*)",93957340452768,93957340453347],["v8::internal::Stats_Runtime_RegexpTypeTag(int, unsigned long*, v8::internal::Isolate*)",93957340457984,93957340458682],["v8::internal::Stats_Runtime_HasObjectElements(int, unsigned long*, v8::internal::Isolate*)",93957340460928,93957340461464],["v8::internal::Stats_Runtime_HasDictionaryElements(int, unsigned long*, v8::internal::Isolate*)",93957340463584,93957340464120],["v8::internal::Stats_Runtime_HasFixedUint8Elements(int, unsigned long*, v8::internal::Isolate*)",93957340466224,93957340466760],["v8::internal::Stats_Runtime_HasFixedUint32Elements(int, unsigned long*, v8::internal::Isolate*)",93957340468848,93957340469384],["v8::internal::Stats_Runtime_HasFixedUint8ClampedElements(int, unsigned long*, v8::internal::Isolate*)",93957340471472,93957340472008],["v8::internal::Stats_Runtime_TypedArraySpeciesProtector(int, unsigned long*, v8::internal::Isolate*)",93957340474032,93957340474534],["v8::internal::Stats_Runtime_MapIteratorProtector(int, unsigned long*, v8::internal::Isolate*)",93957340476464,93957340476966],["v8::internal::Stats_Runtime_ArrayIteratorProtector(int, unsigned long*, v8::internal::Isolate*)",93957340478288,93957340478790],["v8::internal::Stats_Runtime_HeapObjectVerify(int, unsigned long*, v8::internal::Isolate*)",93957340479808,93957340480382],["v8::internal::Stats_Runtime_TypedArrayMaxLength(int, unsigned long*, v8::internal::Isolate*)",93957340481232,93957340481748],["v8::internal::Stats_Runtime_TurbofanStaticAssert(int, unsigned long*, v8::internal::Isolate*)",93957340482624,93957340483080],["v8::internal::Stats_Runtime_EnableCodeLoggingForTesting(int, unsigned long*, v8::internal::Isolate*)",93957340483776,93957340484343],["v8::internal::JSFunction::is_compiled() const",93957340486560,93957340486660],["v8::internal::call_as_function(v8::FunctionCallbackInfo<v8::Value> const&)",93957340487168,93957340487379],["v8::internal::Runtime_ArrayBufferDetach(int, unsigned long*, v8::internal::Isolate*)",93957340487856,93957340488095],["v8::internal::Runtime_TypedArrayGetBuffer(int, unsigned long*, v8::internal::Isolate*)",93957340489968,93957340490179],["v8::internal::Runtime_TypedArraySet(int, unsigned long*, v8::internal::Isolate*)",93957340493280,93957340493907],["std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::__append(unsigned long)",93957340495120,93957340495379],["bool std::__1::__insertion_sort_incomplete<bool (*&)(float, float), float*>(float*, float*, bool (*&)(float, float))",93957340498032,93957340498948],["unsigned int std::__1::__sort5<bool (*&)(double, double), v8::internal::UnalignedSlot<double> >(v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, bool (*&)(double, double))",93957340500560,93957340500825],["unsigned int std::__1::__sort3<std::__1::__less<unsigned long, unsigned long>&, v8::internal::UnalignedSlot<unsigned long> >(v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, std::__1::__less<unsigned long, unsigned long>&)",93957340502560,93957340502665],["void std::__1::__sort<std::__1::__less<long, long>&, v8::internal::UnalignedSlot<long> >(v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, std::__1::__less<long, long>&)",93957340503280,93957340504331],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<long, long>&, v8::internal::UnalignedSlot<long> >(v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, std::__1::__less<long, long>&)",93957340504704,93957340505043],["v8::internal::Runtime_JSFinalizationRegistryRegisterWeakCellWithUnregisterToken(int, unsigned long*, v8::internal::Isolate*)",93957340506336,93957340506603],["v8::internal::Runtime_JSWeakRefAddToKeptObjects(int, unsigned long*, v8::internal::Isolate*)",93957340507280,93957340507481],["v8::internal::JSFinalizationRegistry::RegisterWeakCellWithUnregisterToken(v8::internal::Handle<v8::internal::JSFinalizationRegistry>, v8::internal::Handle<v8::internal::WeakCell>, v8::internal::Isolate*)",93957340508096,93957340508920],["v8::internal::Runtime::IsNonReturning(v8::internal::Runtime::FunctionId)",93957340509008,93957340509065],["v8::internal::Runtime::FunctionForName(unsigned char const*, int)",93957340509184,93957340509493],["v8::internal::Runtime::FunctionForEntry(unsigned long)",93957340510064,93957340510154],["v8::internal::Runtime::RuntimeFunctionTable(v8::internal::Isolate*)",93957340510192,93957340510205],["v8::internal::(anonymous namespace)::IntrinsicFunctionIdentifier::Match(void*, void*)",93957340510272,93957340510307],["v8::internal::CodeSerializer::Serialize(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957340510496,93957340512120],["v8::internal::SerializedData::~SerializedData()",93957340512176,93957340512213],["v8::internal::CodeSerializer::SerializeObjectImpl(v8::internal::Handle<v8::internal::HeapObject>)",93957340512464,93957340513819],["v8::internal::TorqueGeneratedScript<v8::internal::Script, v8::internal::Struct>::set_host_defined_options(v8::internal::FixedArray, v8::internal::WriteBarrierMode)",93957340513968,93957340514092],["v8::internal::CodeSerializer::Deserialize(v8::internal::Isolate*, v8::internal::ScriptData*, v8::internal::Handle<v8::internal::String>, v8::ScriptOriginOptions)",93957340515216,93957340517306],["v8::internal::SerializedCodeData::SanityCheck(unsigned int) const",93957340517808,93957340518100],["v8::internal::CodeSerializer::~CodeSerializer()",93957340518144,93957340518197],["v8::internal::Serializer::~Serializer()",93957340518272,93957340518577],["v8::internal::IdentityMap<int, v8::base::DefaultAllocationPolicy>::~IdentityMap()",93957340518640,93957340518686],["v8::internal::ContextDeserializer::DeserializeContext(v8::internal::Isolate*, v8::internal::SnapshotData const*, bool, v8::internal::Handle<v8::internal::JSGlobalProxy>, v8::DeserializeInternalFieldsCallback)",93957340518720,93957340518912],["v8::internal::Deserializer::AddAttachedObject(v8::internal::Handle<v8::internal::HeapObject>)",93957340519168,93957340519442],["v8::internal::ContextDeserializer::SetupOffHeapArrayBufferBackingStores()",93957340520000,93957340520237],["v8::internal::ContextSerializer::~ContextSerializer()",93957340520352,93957340520421],["v8::internal::ContextSerializer::Serialize(v8::internal::Context*, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&)",93957340520512,93957340521121],["v8::internal::ContextSerializer::SerializeJSObjectWithEmbedderFields(v8::internal::Handle<v8::internal::HeapObject>)",93957340521808,93957340523413],["v8::internal::Deserializer::Deserializer(v8::internal::Isolate*, v8::internal::Vector<unsigned char const>, unsigned int, bool, bool)",93957340523488,93957340523750],["std::__1::shared_ptr<v8::internal::BackingStore>::~shared_ptr()",93957340523824,93957340523887],["v8::internal::Deserializer::~Deserializer()",93957340523984,93957340524414],["v8::internal::Deserializer::Synchronize(v8::internal::VisitorSynchronization::SyncTag)",93957340524528,93957340524575],["v8::internal::Deserializer::ReadObject(v8::internal::SnapshotSpace)",93957340524656,93957340525188],["v8::internal::Deserializer::WeakenDescriptorArrays()",93957340525344,93957340525514],["v8::internal::StringTableInsertionKey::StringTableInsertionKey(v8::internal::Handle<v8::internal::String>)",93957340525632,93957340525727],["v8::internal::Deserializer::PostProcessNewObject(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::SnapshotSpace)",93957340525776,93957340528009],["v8::internal::JSTypedArray::SetOnHeapDataPtr(v8::internal::Isolate*, v8::internal::HeapObject, unsigned long)",93957340528192,93957340528335],["v8::internal::Deserializer::ReadExternalReferenceCase()",93957340530416,93957340530518],["v8::internal::RootsSerializer::Synchronize(v8::internal::VisitorSynchronization::SyncTag)",93957340543168,93957340543194],["v8::internal::CancelableTaskManager::CancelableTaskManager()",93957340600512,93957340600578],["v8::tracing::TracingCategoryObserver::OnTraceDisabled()",93957340607360,93957340607410],["v8_inspector::(anonymous namespace)::buildSampingHeapProfileNode(v8::Isolate*, v8::AllocationProfile::Node const*)",93957342558304,93957342558964],["v8_inspector::(anonymous namespace)::HeapSnapshotOutputStream::WriteAsciiChunk(char*, int)",93957342560224,93957342560307],["v8_crdtp::ContainerSerializer::EncodeStop()",93957342800656,93957342800903],["Cr_z_adler32_simd_",93957342805872,93957342806526],["v8::internal::compiler::MoveOptimizer::MoveOptimizer(v8::internal::Zone*, v8::internal::compiler::InstructionSequence*)",93957343047184,93957343047248],["void std::__1::set<v8::internal::compiler::InstructionOperand, v8::internal::compiler::OperandAsKeyLess, v8::internal::ZoneAllocator<v8::internal::compiler::InstructionOperand> >::insert<std::__1::__tree_const_iterator<v8::internal::compiler::InstructionOperand, std::__1::__tree_node<v8::internal::compiler::InstructionOperand, void*>*, long> >(std::__1::__tree_const_iterator<v8::internal::compiler::InstructionOperand, std::__1::__tree_node<v8::internal::compiler::InstructionOperand, void*>*, long>, std::__1::__tree_const_iterator<v8::internal::compiler::InstructionOperand, std::__1::__tree_node<v8::internal::compiler::InstructionOperand, void*>*, long>)",93957343077664,93957343077991],["v8::internal::compiler::LiveRange::FirstHintPosition(int*)",93957343088768,93957343089023],["v8::internal::compiler::TopLevelLiveRange::CommitSpillMoves(v8::internal::compiler::TopTierRegisterAllocationData*, v8::internal::compiler::InstructionOperand const&)",93957343089648,93957343089899],["v8::internal::compiler::BytecodeGraphBuilder::VisitJumpIfNotUndefined()",93957343252672,93957343252813],["v8::internal::compiler::BytecodeGraphBuilder::BuildLdaLookupGlobalSlot(v8::internal::TypeofMode)",93957343267632,93957343268393],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::compiler::JSHeapBroker::CanonicalPersistentHandle<v8::internal::FixedArray>(v8::internal::FixedArray)",93957343282496,93957343282727],["std::__1::__hash_table<std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, std::__1::__unordered_map_hasher<long, std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, v8::base::hash<long>, std::__1::equal_to<long>, true>, std::__1::__unordered_map_equal<long, std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, std::__1::equal_to<long>, v8::base::hash<long>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<long, v8::internal::compiler::Node*> > >::__rehash(unsigned long)",93957343287072,93957343287788],["v8::internal::compiler::CommonOperatorReducer::ReduceBranch(v8::internal::compiler::Node*)",93957343294016,93957343294909],["v8::internal::compiler::(anonymous namespace)::DecideCondition(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*)",93957343300304,93957343300580],["v8::internal::compiler::OsrValueIndexOf(v8::internal::compiler::Operator const*)",93957343301808,93957343301817],["v8::internal::compiler::CommonOperatorBuilder::Branch(v8::internal::compiler::BranchHint, v8::internal::compiler::IsSafetyCheck)",93957343302752,93957343302951],["v8::base::BoundedPageAllocator::AllocatePageSize()",93957343304608,93957343304618],["v8::internal::compiler::SparseInputMask::InputIterator::Advance()",93957343304800,93957343304833],["v8::internal::compiler::SparseInputMask::InputIterator::AdvanceToNextRealOrEnd()",93957343304880,93957343304908],["v8::internal::compiler::SparseInputMask::InputIterator::IsEnd() const",93957343304960,93957343305036],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::TypedStateValueInfo const&)",93957343305088,93957343305362],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::IfValueParameters const&)",93957343305440,93957343305613],["v8::internal::compiler::WasmLoopUnrollingPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*, std::__1::vector<v8::internal::compiler::WasmLoopInfo, std::__1::allocator<v8::internal::compiler::WasmLoopInfo> >*)",93957344709616,93957344710082],["v8::internal::compiler::RepresentationChanger::InsertChangeFloat64ToUint32(v8::internal::compiler::Node*)",93957344734624,93957344734690],["v8::internal::compiler::BasicBlock::GetCommonDominator(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344737920,93957344737964],["v8::internal::compiler::Schedule::AddDeoptimize(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344743760,93957344743963],["v8::internal::compiler::Scheduler::ComputeSchedule(v8::internal::Zone*, v8::internal::compiler::Graph*, v8::base::Flags<v8::internal::compiler::Scheduler::Flag, int>, v8::internal::TickCounter*, v8::internal::ProfileDataFromFile const*)",93957344752608,93957344753666],["v8::internal::compiler::Scheduler::GenerateDominatorTree()",93957344754848,93957344755090],["v8::internal::compiler::SimdScalarLowering::LowerConvertFromFloat(v8::internal::compiler::Node*, bool)",93957345234144,93957345235361],["v8::internal::compiler::WasmGraphBuilder::TrapIfFalse(v8::internal::wasm::TrapReason, v8::internal::compiler::Node*, int)",93957345271168,93957345271360],["v8::internal::compiler::WasmGraphBuilder::GetBaseAndOffsetForImportedMutableExternRefGlobal(v8::internal::wasm::WasmGlobal const&, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345292288,93957345292839],["v8::internal::compiler::WasmGraphBuilder::SimdLaneOp(v8::internal::wasm::WasmOpcode, unsigned char, v8::internal::compiler::Node* const*)",93957345306272,93957345306724],["v8::internal::compiler::WasmGraphBuilder::RefCast(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, int)",93957345317776,93957345318195],["v8::internal::compiler::WasmGraphBuilder::I31New(v8::internal::compiler::Node*)",93957345323136,93957345323181],["v8::internal::compiler::ExecuteTurbofanWasmCompilation(v8::internal::wasm::WasmEngine*, v8::internal::wasm::CompilationEnv*, v8::internal::wasm::FunctionBody const&, int, v8::internal::Counters*, v8::internal::wasm::WasmFeatures*)",93957345351136,93957345356189],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::CastCallbacks(v8::internal::compiler::GraphAssemblerLabel<0ul>*, int)::$_5, void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957345369184,93957345369211],["void std::__1::__sort<std::__1::__less<unsigned short, unsigned short>&, unsigned short*>(unsigned short*, unsigned short*, std::__1::__less<unsigned short, unsigned short>&)",93957346619328,93957346620874],["std::__1::basic_streambuf<wchar_t, std::__1::char_traits<wchar_t> >::uflow()",93957346637040,93957346637088],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned int)",93957346639856,93957346640250],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_floating_point<double>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, double&) const",93957346666000,93957346667259],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, long double&) const",93957346683184,93957346683194],["wchar_t const* std::__1::__num_get<wchar_t>::__do_widen_p<wchar_t>(std::__1::ios_base&, wchar_t*) const",93957346689632,93957346689903],["strfmon",139871563560336,139871563560528],["makecontext",139871563569040,139871563569633],["strtof128_l",139871563589840,139871563589850],["ctermid",139871563591008,139871563591041],["__printf_fp",139871563603488,139871563603513],["__getdelim",139871563740880,139871563741613],["pthread_cond_destroy",139871563803296,139871563803331],["pthread_attr_getdetachstate",139871563805696,139871563805707],["mbrtoc32",139871564002064,139871564002083],["__fork",139871564092528,139871564092986],["re_search",139871564188960,139871564188981],["posix_spawn_file_actions_addchdir_np",139871564232016,139871564232134],["mkfifo",139871564235504,139871564235576],["lchmod",139871564237424,139871564237444],["__openat64_2",139871564238416,139871564238455],["putpmsg",139871564546816,139871564546836],["__nss_next",139871564548400,139871564548406],["__GI___pthread_mutex_unlock",139871566602128,139871566602138],["__pthread_cond_signal",139871566614384,139871566615189],["__cxxabiv1::__class_type_info::~__class_type_info()",93957335214464,93957335214492],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::__unordered_map_hasher<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::hash<v8::internal::wasm::WasmCode const*>, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, std::__1::hash<v8::internal::wasm::WasmCode const*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > > > >::__emplace_unique_key_args<v8::internal::wasm::WasmCode const*, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::wasm::WasmCode const* const&>, std::__1::tuple<> >(v8::internal::wasm::WasmCode const* const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::wasm::WasmCode const* const&>&&, std::__1::tuple<>&&)",93957335313280,93957335314162],["v8::internal::Handle<v8::internal::ExternalOneByteString> v8::internal::Factory::InternalizeExternalString<v8::internal::ExternalOneByteString>(v8::internal::Handle<v8::internal::String>)",93957336847184,93957336847548],["v8::internal::Factory::NewEnumCache(v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::FixedArray>)",93957336850576,93957336850909],["v8::internal::Factory::NewPropertyArray(int)",93957336851616,93957336851774],["v8::internal::Heap::IncrementDeferredCount(v8::Isolate::UseCounterFeature)",93957336964912,93957336964928],["v8::internal::Heap::InvokeNearHeapLimitCallback()",93957336985920,93957336986160],["v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags)",93957336988624,93957336990994],["v8::internal::Heap::IncrementalMarkingLimitReached()",93957336994288,93957336994871],["v8::internal::MemMove(void*, void const*, unsigned long)",93957336995728,93957336995997],["v8::internal::Heap::RequestCollectionBackground(v8::internal::LocalHeap*)",93957336997536,93957336997610],["v8::internal::Heap::MarkCompact()",93957336998064,93957336999206],["v8::internal::Heap::UpdateYoungReferencesInExternalStringTable(v8::internal::String (*)(v8::internal::Heap*, v8::internal::FullObjectSlot))",93957337007456,93957337007707],["v8::internal::Heap::PerformIdleTimeAction(v8::internal::GCIdleTimeAction, v8::internal::GCIdleTimeHeapState, double)",93957337013904,93957337014417],["v8::internal::Heap::MeasureMemoryDelegate(v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::JSPromise>, v8::MeasureMemoryMode)",93957337019536,93957337019550],["v8::internal::Heap::IterateSmiRoots(v8::internal::RootVisitor*)",93957337020320,93957337020413],["v8::internal::Heap::RecordStats(v8::internal::HeapStats*, bool)",93957337022768,93957337023605],["v8::internal::Heap::ShouldExpandOldGenerationOnSlowAllocation(v8::internal::LocalHeap*)",93957337024208,93957337024621],["v8::internal::Heap::NextStressMarkingLimit()",93957337025168,93957337025205],["v8::internal::OldLargeObjectSpace::ClearMarkingStateOfLiveObjects()",93957337074128,93957337074741],["v8::internal::NewLargeObjectSpace::Available()",93957337077440,93957337077472],["v8::internal::CodeLargeObjectSpace::AllocateRaw(int)",93957337078368,93957337078383],["v8::internal::CodeLargeObjectSpace::RemovePage(v8::internal::LargePage*, unsigned long)",93957337078720,93957337078941],["v8::internal::PagedSpace::UnmarkLinearAllocationArea()",93957337492368,93957337492415],["v8::internal::ReadOnlyHeap::ExtendReadOnlyObjectCache()",93957337496976,93957337497255],["v8::internal::ReadOnlySpace::RepairFreeSpacesAfterDeserialization()",93957337498288,93957337498430],["v8::internal::ReadOnlySpace::ShrinkPages()",93957337500288,93957337500458],["v8::internal::GlobalSafepoint::WaitInUnpark()",93957337501472,93957337501536],["v8::internal::GlobalSafepoint::Iterate(v8::internal::RootVisitor*)",93957337501824,93957337501882],["v8::internal::ScavengerCollector::JobTask::Run(v8::JobDelegate*)",93957337502704,93957337503516],["v8::internal::Scavenger::ScavengePage(v8::internal::MemoryChunk*)",93957337513088,93957337516773],["v8::internal::Worklist<v8::internal::MemoryChunk*, 64>::Worklist()",93957337523568,93957337524003],["v8::internal::Scavenger::PromotionList::PromotionList(int)",93957337524224,93957337524869],["v8::internal::(anonymous namespace)::IsUnscavengedHeapObjectSlot(v8::internal::Heap*, v8::internal::FullObjectSlot)",93957337525936,93957337525978],["v8::internal::Scavenger::Scavenger(v8::internal::ScavengerCollector*, v8::internal::Heap*, bool, v8::internal::Worklist<v8::internal::MemoryChunk*, 64>*, v8::internal::Worklist<std::__1::pair<v8::internal::HeapObject, int>, 256>*, v8::internal::Scavenger::PromotionList*, v8::internal::Worklist<v8::internal::EphemeronHashTable, 128>*, int)",93957337526512,93957337526964],["v8::internal::IterateAndScavengePromotedObjectsVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337536592,93957337537468],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::Map>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::Map>, std::__1::__unordered_map_hasher<v8::internal::HeapObject, std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::Map>, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::HeapObject>, true>, std::__1::__unordered_map_equal<v8::internal::HeapObject, std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::Map>, std::__1::equal_to<v8::internal::HeapObject>, v8::internal::Object::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::Map> > >::__emplace_unique_key_args<v8::internal::HeapObject, std::__1::pair<v8::internal::HeapObject const, v8::internal::Map> >(v8::internal::HeapObject const&, std::__1::pair<v8::internal::HeapObject const, v8::internal::Map>&&)",93957337564640,93957337565434],["v8::internal::SlotSet::Bucket::IsEmpty()",93957337567888,93957337568126],["void v8::internal::EphemeronHashTable::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337570960,93957337571370],["void v8::internal::JSWeakCollection::BodyDescriptorImpl::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337573168,93957337573364],["void v8::internal::WeakCell::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337574064,93957337574171],["void v8::internal::AllocationSite::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337574592,93957337574679],["void v8::internal::BodyDescriptorBase::IterateJSObjectBodyImpl<v8::internal::ScavengeVisitor>(v8::internal::Map, v8::internal::HeapObject, int, int, v8::internal::ScavengeVisitor*)",93957337574896,93957337575269],["v8::internal::SlotCallbackResult v8::internal::Scavenger::EvacuateShortcutCandidate<v8::internal::FullHeapObjectSlot>(v8::internal::Map, v8::internal::FullHeapObjectSlot, v8::internal::ConsString, int)",93957337582016,93957337594163],["v8::internal::TypedSlots::Merge(v8::internal::TypedSlots*)",93957337594880,93957337594933],["v8::internal::Page::ReleaseFreeListCategories()",93957337595472,93957337595617],["v8::internal::Page::ShrinkToHighWaterMark()",93957337596272,93957337596622],["v8::internal::interpreter::BytecodeArrayRandomIterator::UpdateOffsetFromIndex()",93957337881392,93957337881434],["v8::internal::interpreter::BytecodeGenerator::VisitObjectLiteral(v8::internal::ObjectLiteral*)",93957337936128,93957337944686],["v8::internal::interpreter::BytecodeGenerator::VisitNullishExpression(v8::internal::BinaryOperation*)",93957337987328,93957337988071],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, int>, std::__1::__tree_node<std::__1::__value_type<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, int>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, int>, std::__1::__map_value_compare<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, std::__1::__value_type<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, int>, std::__1::less<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*> >, true>, v8::internal::ZoneAllocator<std::__1::__value_type<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, int> > >::__emplace_unique_key_args<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, std::__1::pair<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, int>&>(std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*> const&, std::__1::pair<std::__1::tuple<v8::internal::interpreter::BytecodeGenerator::FeedbackSlotCache::SlotKind, int, void const*>, int>&)",93957338003456,93957338003748],["std::__1::__split_buffer<int*, v8::internal::RecyclingZoneAllocator<int*> >::push_back(int*&&)",93957338010288,93957338011225],["v8::internal::interpreter::Bytecodes::GetOperandOffset(v8::internal::interpreter::Bytecode, int, v8::internal::interpreter::OperandScale)",93957338017552,93957338017685],["v8::internal::interpreter::ConstantArrayBuilder::InsertClassFieldsSymbol()",93957338024016,93957338024165],["v8::internal::interpreter::BreakableControlFlowBuilder::EmitJumpIfTrue(v8::internal::interpreter::BytecodeArrayBuilder::ToBooleanMode, v8::internal::interpreter::BytecodeLabels*)",93957338027200,93957338027240],["v8::internal::interpreter::TryCatchBuilder::~TryCatchBuilder()",93957338028192,93957338028235],["v8::internal::interpreter::TryFinallyBuilder::EndTry()",93957338028704,93957338028724],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::interpreter::HandlerTableBuilder::ToHandlerTable<v8::internal::Isolate>(v8::internal::Isolate*)",93957338029296,93957338029504],["v8::internal::interpreter::HandlerTableBuilder::SetContextRegister(int, v8::internal::interpreter::Register)",93957338030192,93957338030212],["v8::internal::CompilationJob::Status v8::internal::interpreter::InterpreterCompilationJob::DoFinalizeJobImpl<v8::internal::Isolate>(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Isolate*)",93957338031584,93957338032691],["v8::internal::interpreter::InterpreterCompilationJob::~InterpreterCompilationJob()",93957338036208,93957338036497],["v8::internal::JsonParser<unsigned char>::~JsonParser()",93957338037840,93957338037907],["v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<unsigned char>::DecodeString<v8::internal::SeqTwoByteString>(v8::internal::JsonString const&, v8::internal::Handle<v8::internal::SeqTwoByteString>, v8::internal::Handle<v8::internal::String>)",93957338044112,93957338044372],["v8::internal::Map::IsDetached(v8::internal::Isolate*) const",93957338046032,93957338046140],["v8::internal::TransitionsAccessor::ExpectedTransitionKey()",93957338051648,93957338051932],["v8::internal::JsonParser<unsigned short>::ReportUnexpectedToken(v8::internal::JsonToken)",93957338057120,93957338057540],["v8::internal::JsonParser<unsigned short>::MakeString(v8::internal::JsonString const&, v8::internal::Handle<v8::internal::String>)",93957338058704,93957338059115],["v8::internal::JsonParser<unsigned short>::BuildJsonObject(v8::internal::JsonParser<unsigned short>::JsonContinuation const&, v8::base::SmallVector<v8::internal::JsonProperty, 16ul> const&, v8::internal::Handle<v8::internal::Map>)",93957338060688,93957338065372],["void v8::internal::JsonParser<unsigned char>::DecodeString<unsigned short>(unsigned short*, int, int)",93957338067328,93957338067835],["v8::base::SmallVector<v8::internal::CharacterRange, 8ul>::Grow()",93957338068496,93957338068508],["void v8::internal::JsonParser<unsigned short>::DecodeString<unsigned short>(unsigned short*, int, int)",93957338069472,93957338069963],["v8::internal::JsonStringifier::ApplyToJsonFunction(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338072880,93957338073478],["v8::internal::JsonStringifier::ConstructCircularStructureErrorMessage(v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338074368,93957338074690],["v8::internal::CircularStructureMessageBuilder::AppendClosingLine(v8::internal::Handle<v8::internal::Object>)",93957338078080,93957338079786],["v8::internal::JsonStringifier::SerializeDouble(double)",93957338085872,93957338086505],["v8::internal::JsonStringifier::Result v8::internal::JsonStringifier::Serialize_<false>(v8::internal::Handle<v8::internal::Object>, bool, v8::internal::Handle<v8::internal::Object>)",93957338089536,93957338095222],["v8::internal::CircularStructureMessageBuilder::AppendSmi(v8::internal::Smi)",93957338098000,93957338098242],["v8::sampler::SamplerManager::AddSampler(v8::sampler::Sampler*)",93957338108944,93957338109487],["v8::sampler::Sampler::Sampler(v8::Isolate*)",93957338110816,93957338110888],["v8::sampler::SignalHandler::IncreaseSamplerCount()",93957338111072,93957338111344],["v8::sampler::Sampler::DoSample()",93957338111664,93957338111868],["v8::internal::StatsCounterBase::FindLocationInStatsTable() const",93957338112816,93957338112843],["v8::internal::StatsCounterThreadSafe::Increment(int)",93957338112912,93957338112983],["v8::internal::TimedHistogram::AddTimedSample(v8::base::TimeDelta)",93957338113040,93957338113133],["v8::internal::TimedHistogram::Stop(v8::base::ElapsedTimer*, v8::internal::Isolate*)",93957338113280,93957338113478],["v8::internal::Counters::ResetCounterFunction(int* (*)(char const*))",93957338115952,93957338120427],["v8::internal::RuntimeCallTimer::NowCPUTime()",93957338127696,93957338127706],["v8::internal::RuntimeCallCounter::Dump(v8::tracing::TracedValue*)",93957338127728,93957338127795],["v8::internal::RuntimeCallStats::Leave(v8::internal::RuntimeCallTimer*)",93957338127920,93957338128134],["v8::internal::RuntimeCallStats::CorrectCurrentCounterId(v8::internal::RuntimeCallCounterId, v8::internal::RuntimeCallStats::CounterMode)",93957338128272,93957338128324],["v8::internal::RuntimeCallStats::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957338128592,93957338128870],["v8::internal::RuntimeCallStatEntries::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957338129040,93957338129756],["v8::internal::RuntimeCallStats::Reset()",93957338130016,93957338130108],["v8::internal::WorkerThreadRuntimeCallStats::~WorkerThreadRuntimeCallStats()",93957338130192,93957338130320],["v8::internal::WorkerThreadRuntimeCallStats::NewTable()",93957338130400,93957338130694],["v8::internal::WorkerThreadRuntimeCallStatsScope::WorkerThreadRuntimeCallStatsScope(v8::internal::WorkerThreadRuntimeCallStats*)",93957338131072,93957338131197],["v8::internal::RuntimeCallStatEntries::Entry::SetTotal(v8::base::TimeDelta, unsigned long)",93957338131520,93957338131706],["void std::__1::__sort<std::__1::__less<v8::internal::RuntimeCallStatEntries::Entry, v8::internal::RuntimeCallStatEntries::Entry>&, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> > >(std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::__less<v8::internal::RuntimeCallStatEntries::Entry, v8::internal::RuntimeCallStatEntries::Entry>&)",93957338132128,93957338134520],["unsigned int std::__1::__sort5<std::__1::__less<v8::internal::RuntimeCallStatEntries::Entry, v8::internal::RuntimeCallStatEntries::Entry>&, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> > >(std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::RuntimeCallStatEntries::Entry*> >, std::__1::__less<v8::internal::RuntimeCallStatEntries::Entry, v8::internal::RuntimeCallStatEntries::Entry>&)",93957338135088,93957338135939],["v8::internal::LocalLogger::LocalLogger(v8::internal::Isolate*)",93957338136944,93957338137008],["v8::internal::LocalLogger::CodeLinePosInfoRecordEvent(unsigned long, v8::internal::ByteArray)",93957338137024,93957338137037],["v8::internal::Log::IsLoggingToTemporaryFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957338137296,93957338137319],["v8::internal::Log::WriteLogHeader()",93957338137632,93957338138109],["v8::internal::Log::MessageBuilder& v8::internal::Log::MessageBuilder::operator<< <v8::internal::LogSeparator>(v8::internal::LogSeparator)",93957338138176,93957338138220],["v8::internal::Log::NewMessageBuilder()",93957338138336,93957338138487],["v8::internal::Log::file_name() const",93957338138576,93957338138640],["v8::internal::Log::MessageBuilder::AppendRawFormatString(char const*, ...)",93957338138960,93957338139211],["v8::internal::Runtime_AtomicsOr(int, unsigned long*, v8::internal::Isolate*)",93957339949856,93957339949893],["v8::internal::Runtime_BigIntUnaryOp(int, unsigned long*, v8::internal::Isolate*)",93957339959376,93957339959694],["v8::internal::Runtime_ThrowNotSuperConstructor(int, unsigned long*, v8::internal::Isolate*)",93957339964528,93957339965374],["v8::internal::Runtime_StoreToSuper(int, unsigned long*, v8::internal::Isolate*)",93957339974800,93957339975368],["v8::internal::Handle<v8::internal::NumberDictionary> v8::internal::(anonymous namespace)::ShallowCopyDictionaryTemplate<v8::internal::NumberDictionary>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>)",93957339983152,93957339983667],["v8::internal::Stats_Runtime_TheHole(int, unsigned long*, v8::internal::Isolate*)",93957339985984,93957339986440],["v8::internal::Stats_Runtime_SetShrink(int, unsigned long*, v8::internal::Isolate*)",93957339988256,93957339989032],["v8::internal::Stats_Runtime_MapGrow(int, unsigned long*, v8::internal::Isolate*)",93957339990768,93957339991624],["v8::internal::Runtime_WeakCollectionSet(int, unsigned long*, v8::internal::Isolate*)",93957339992528,93957339992770],["v8::internal::Runtime_CompileLazy(int, unsigned long*, v8::internal::Isolate*)",93957339993424,93957339993914],["v8::internal::Runtime_InstallBaselineCode(int, unsigned long*, v8::internal::Isolate*)",93957339994784,93957339995230],["v8::internal::Runtime_TryInstallNCICode(int, unsigned long*, v8::internal::Isolate*)",93957339996064,93957339996462],["v8::internal::Runtime_CompileOptimized_Concurrent(int, unsigned long*, v8::internal::Isolate*)",93957339997248,93957339997447],["v8::internal::Runtime_CompileOptimized_NotConcurrent(int, unsigned long*, v8::internal::Isolate*)",93957339998064,93957339998260],["v8::internal::Runtime_FunctionFirstExecution(int, unsigned long*, v8::internal::Isolate*)",93957339998880,93957339999408],["v8::internal::Runtime_HealOptimizedCodeSlot(int, unsigned long*, v8::internal::Isolate*)",93957340000304,93957340000484],["v8::internal::Runtime_CollectGarbage(int, unsigned long*, v8::internal::Isolate*)",93957340035136,93957340035207],["v8::internal::Runtime_Call(int, unsigned long*, v8::internal::Isolate*)",93957340066160,93957340066980],["v8::internal::Runtime_GeneratorClose(int, unsigned long*, v8::internal::Isolate*)",93957340077648,93957340077685],["v8::internal::Runtime_AsyncGeneratorHasCatchHandlerForPC(int, unsigned long*, v8::internal::Isolate*)",93957340081280,93957340081512],["v8::internal::Runtime_ThrowStackOverflow(int, unsigned long*, v8::internal::Isolate*)",93957340085488,93957340085520],["v8::internal::Runtime_ThrowTypeErrorIfStrict(int, unsigned long*, v8::internal::Isolate*)",93957340088544,93957340088834],["v8::internal::Runtime_ThrowReferenceError(int, unsigned long*, v8::internal::Isolate*)",93957340091968,93957340092127],["v8::internal::Runtime_NewReferenceError(int, unsigned long*, v8::internal::Isolate*)",93957340095408,93957340095683],["v8::internal::Stats_Runtime_ThrowInvalidStringLength(int, unsigned long*, v8::internal::Isolate*)",93957340097440,93957340097952],["v8::internal::Stats_Runtime_ThrowIteratorResultNotAnObject(int, unsigned long*, v8::internal::Isolate*)",93957340098112,93957340098659],["v8::internal::Stats_Runtime_ThrowThrowMethodMissing(int, unsigned long*, v8::internal::Isolate*)",93957340098832,93957340099356],["v8::internal::Stats_Runtime_ThrowSymbolIteratorInvalid(int, unsigned long*, v8::internal::Isolate*)",93957340099520,93957340100044],["v8::internal::Stats_Runtime_ThrowNotConstructor(int, unsigned long*, v8::internal::Isolate*)",93957340100208,93957340100755],["v8::internal::Stats_Runtime_ThrowApplyNonFunction(int, unsigned long*, v8::internal::Isolate*)",93957340100944,93957340101503],["v8::internal::Stats_Runtime_StackGuard(int, unsigned long*, v8::internal::Isolate*)",93957340101904,93957340102709],["v8::internal::Stats_Runtime_StackGuardWithGap(int, unsigned long*, v8::internal::Isolate*)",93957340103328,93957340104318],["v8::internal::Runtime_SwissTableDetailsAt(int, unsigned long*, v8::internal::Isolate*)",93957340243104,93957340243298],["v8::internal::Runtime_StringReplaceNonGlobalRegExpWithFunction(int, unsigned long*, v8::internal::Isolate*)",93957340305648,93957340307741],["v8::internal::Runtime_NewClosure(int, unsigned long*, v8::internal::Isolate*)",93957340358928,93957340359356],["v8::internal::(anonymous namespace)::StoreLookupSlot(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode, v8::internal::ContextLookupFlags)",93957340378208,93957340378786],["v8::internal::Runtime_StringGreaterThan(int, unsigned long*, v8::internal::Isolate*)",93957340395792,93957340396066],["v8::internal::Stats_Runtime_CreatePrivateBrandSymbol(int, unsigned long*, v8::internal::Isolate*)",93957340404288,93957340404882],["v8::internal::Stats_Runtime_DeoptimizeFunction(int, unsigned long*, v8::internal::Isolate*)",93957340414144,93957340414768],["v8::internal::Stats_Runtime_IsMidTierTurboprop(int, unsigned long*, v8::internal::Isolate*)",93957340419440,93957340419925],["v8::internal::Stats_Runtime_OptimizeOsr(int, unsigned long*, v8::internal::Isolate*)",93957340426160,93957340427756],["v8::internal::Stats_Runtime_GetUndetectable(int, unsigned long*, v8::internal::Isolate*)",93957340433792,93957340434364],["v8::internal::Stats_Runtime_SetAllocationTimeout(int, unsigned long*, v8::internal::Isolate*)",93957340436848,93957340437304],["v8::internal::Stats_Runtime_DebugPrintPtr(int, unsigned long*, v8::internal::Isolate*)",93957340440080,93957340440922],["v8::internal::Stats_Runtime_GlobalPrint(int, unsigned long*, v8::internal::Isolate*)",93957340444736,93957340445596],["v8::internal::Stats_Runtime_AbortJS(int, unsigned long*, v8::internal::Isolate*)",93957340447760,93957340448489],["v8::internal::Stats_Runtime_TraceExit(int, unsigned long*, v8::internal::Isolate*)",93957340451040,93957340451788],["v8::internal::Stats_Runtime_InYoungGeneration(int, unsigned long*, v8::internal::Isolate*)",93957340454272,93957340454822],["v8::internal::Stats_Runtime_RegexpHasNativeCode(int, unsigned long*, v8::internal::Isolate*)",93957340456912,93957340457633],["v8::internal::Stats_Runtime_RegexpIsUnmodified(int, unsigned long*, v8::internal::Isolate*)",93957340458896,93957340459497],["v8::internal::Stats_Runtime_HasSmiElements(int, unsigned long*, v8::internal::Isolate*)",93957340460272,93957340460806],["v8::internal::Stats_Runtime_HasSmiOrObjectElements(int, unsigned long*, v8::internal::Isolate*)",93957340461584,93957340462118],["v8::internal::Stats_Runtime_HasHoleyElements(int, unsigned long*, v8::internal::Isolate*)",93957340462912,93957340463461],["v8::internal::Stats_Runtime_HasPackedElements(int, unsigned long*, v8::internal::Isolate*)",93957340464240,93957340464776],["v8::internal::Stats_Runtime_HasFastProperties(int, unsigned long*, v8::internal::Isolate*)",93957340465568,93957340466101],["v8::internal::Stats_Runtime_HasFixedInt8Elements(int, unsigned long*, v8::internal::Isolate*)",93957340466880,93957340467416],["v8::internal::Stats_Runtime_HasFixedInt16Elements(int, unsigned long*, v8::internal::Isolate*)",93957340468192,93957340468728],["v8::internal::Stats_Runtime_HasFixedInt32Elements(int, unsigned long*, v8::internal::Isolate*)",93957340469504,93957340470040],["v8::internal::Stats_Runtime_HasFixedFloat64Elements(int, unsigned long*, v8::internal::Isolate*)",93957340470816,93957340471352],["v8::internal::Stats_Runtime_HasFixedBigUint64Elements(int, unsigned long*, v8::internal::Isolate*)",93957340472128,93957340472664],["v8::internal::Stats_Runtime_IsConcatSpreadableProtector(int, unsigned long*, v8::internal::Isolate*)",93957340473424,93957340473926],["v8::internal::Stats_Runtime_RegExpSpeciesProtector(int, unsigned long*, v8::internal::Isolate*)",93957340474640,93957340475142],["v8::internal::Stats_Runtime_ArraySpeciesProtector(int, unsigned long*, v8::internal::Isolate*)",93957340475856,93957340476358],["v8::internal::Stats_Runtime_SetIteratorProtector(int, unsigned long*, v8::internal::Isolate*)",93957340477072,93957340477574],["v8::internal::Runtime_ArrayIteratorProtector(int, unsigned long*, v8::internal::Isolate*)",93957340478192,93957340478277],["v8::internal::Runtime_SerializeDeserializeNow(int, unsigned long*, v8::internal::Isolate*)",93957340478800,93957340479027],["v8::internal::Runtime_HeapObjectVerify(int, unsigned long*, v8::internal::Isolate*)",93957340479664,93957340479799],["v8::internal::Runtime_ArrayBufferMaxByteLength(int, unsigned long*, v8::internal::Isolate*)",93957340480384,93957340480531],["v8::internal::Runtime_TypedArrayMaxLength(int, unsigned long*, v8::internal::Isolate*)",93957340481072,93957340481219],["v8::internal::Runtime_CompleteInobjectSlackTracking(int, unsigned long*, v8::internal::Isolate*)",93957340481760,93957340481984],["v8::internal::Runtime_TurbofanStaticAssert(int, unsigned long*, v8::internal::Isolate*)",93957340482592,93957340482624],["v8::internal::Runtime_IsBeingInterpreted(int, unsigned long*, v8::internal::Isolate*)",93957340483088,93957340483120],["v8::internal::Runtime_EnableCodeLoggingForTesting(int, unsigned long*, v8::internal::Isolate*)",93957340483584,93957340483775],["v8::internal::Runtime_NewRegExpWithBacktrackLimit(int, unsigned long*, v8::internal::Isolate*)",93957340484352,93957340484880],["v8::internal::(anonymous namespace)::OptimizeFunctionOnNextCall(v8::internal::Arguments<(v8::internal::ArgumentsType)0>&, v8::internal::Isolate*, v8::internal::(anonymous namespace)::TierupKind)",93957340485792,93957340486547],["v8::internal::WriteBarrier::Marking(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::Object)",93957340486672,93957340486720],["v8::internal::ReturnNull(v8::FunctionCallbackInfo<v8::Value> const&)",93957340487136,93957340487160],["v8::internal::__RT_impl_Runtime_ScheduleGCInStackCheck(v8::internal::Arguments<(v8::internal::ArgumentsType)0>, v8::internal::Isolate*)::{lambda(v8::Isolate*, void*)#1}::__invoke(v8::Isolate*, void*)",93957340487392,93957340487404],["v8::internal::(anonymous namespace)::DisallowCodegenFromStringsCallback(v8::Local<v8::Context>, v8::Local<v8::Value>, bool)",93957340487840,93957340487850],["v8::internal::Stats_Runtime_ArrayBufferDetach(int, unsigned long*, v8::internal::Isolate*)",93957340488096,93957340488710],["v8::internal::Stats_Runtime_TypedArrayCopyElements(int, unsigned long*, v8::internal::Isolate*)",93957340489152,93957340489965],["v8::internal::Stats_Runtime_TypedArrayGetBuffer(int, unsigned long*, v8::internal::Isolate*)",93957340490192,93957340490786],["v8::internal::Stats_Runtime_TypedArraySortFast(int, unsigned long*, v8::internal::Isolate*)",93957340491856,93957340493269],["v8::internal::Stats_Runtime_TypedArraySet(int, unsigned long*, v8::internal::Isolate*)",93957340493920,93957340494932],["bool v8::internal::(anonymous namespace)::CompareNum<double>(double, double)",93957340495024,93957340495113],["void std::__1::__sort<bool (*&)(float, float), float*>(float*, float*, bool (*&)(float, float))",93957340495392,93957340497278],["void std::__1::__insertion_sort_3<bool (*&)(float, float), float*>(float*, float*, bool (*&)(float, float))",93957340497696,93957340498030],["void std::__1::__sort<bool (*&)(double, double), v8::internal::UnalignedSlot<double> >(v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, bool (*&)(double, double))",93957340498960,93957340500098],["unsigned int std::__1::__sort4<bool (*&)(double, double), v8::internal::UnalignedSlot<double> >(v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, bool (*&)(double, double))",93957340500368,93957340500555],["void std::__1::__insertion_sort_3<bool (*&)(double, double), v8::internal::UnalignedSlot<double> >(v8::internal::UnalignedSlot<double>, v8::internal::UnalignedSlot<double>, bool (*&)(double, double))",93957340500832,93957340501049],["void std::__1::__sort<std::__1::__less<unsigned long, unsigned long>&, v8::internal::UnalignedSlot<unsigned long> >(v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, std::__1::__less<unsigned long, unsigned long>&)",93957340501504,93957340502555],["unsigned int std::__1::__sort4<std::__1::__less<unsigned long, unsigned long>&, v8::internal::UnalignedSlot<unsigned long> >(v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, std::__1::__less<unsigned long, unsigned long>&)",93957340502672,93957340502778],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<unsigned long, unsigned long>&, v8::internal::UnalignedSlot<unsigned long> >(v8::internal::UnalignedSlot<unsigned long>, v8::internal::UnalignedSlot<unsigned long>, std::__1::__less<unsigned long, unsigned long>&)",93957340502928,93957340503267],["unsigned int std::__1::__sort3<std::__1::__less<long, long>&, v8::internal::UnalignedSlot<long> >(v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, std::__1::__less<long, long>&)",93957340504336,93957340504441],["unsigned int std::__1::__sort5<std::__1::__less<long, long>&, v8::internal::UnalignedSlot<long> >(v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, v8::internal::UnalignedSlot<long>, std::__1::__less<long, long>&)",93957340504560,93957340504704],["v8::internal::Runtime_ShrinkFinalizationRegistryUnregisterTokenMap(int, unsigned long*, v8::internal::Isolate*)",93957340505056,93957340505516],["v8::internal::Deserializer::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int)",93957340529488,93957340529608],["v8::internal::Deserializer::RelocInfoVisitor::VisitOffHeapTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957340530688,93957340531154],["v8::internal::ReadOnlySerializer::~ReadOnlySerializer()",93957340541856,93957340541959],["v8::internal::SerializerDeserializer::Iterate(v8::internal::Isolate*, v8::internal::RootVisitor*)",93957340543536,93957340544018],["v8::internal::StringStream::OutputToFile(_IO_FILE*)",93957340582640,93957340582798],["v8::internal::MakeCancelableIdleTask(v8::internal::CancelableTaskManager*, std::__1::function<void (double)>)",93957340603584,93957340603766],["v8::tracing::TracedValue::AppendDouble(double)",93957340606368,93957340606512],["v8::internal::trap_handler::MetadataLock::~MetadataLock()",93957340608432,93957340608471],["v8_inspector::(anonymous namespace)::GlobalObjectNameResolver::~GlobalObjectNameResolver()",93957342555392,93957342555430],["v8_inspector::(anonymous namespace)::GlobalObjectNameResolver::GetName(v8::Local<v8::Object>)",93957342559072,93957342560138],["v8_crdtp::json::(anonymous namespace)::JsonParser<unsigned char>::DecodeString(unsigned char const*, unsigned char const*, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >*)",93957342792432,93957342793862],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >& std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__append_forward_unsafe<char const*>(char const*, char const*)",93957342801376,93957342802116],["v8_crdtp::Status::Message() const",93957342802896,93957342805241],["v8::internal::compiler::DefineOutputs(v8::internal::compiler::MidTierRegisterAllocationData*)",93957343032544,93957343033099],["v8::internal::compiler::MoveOptimizer::CompressMoves(v8::internal::compiler::ParallelMove*, v8::internal::ZoneVector<v8::internal::compiler::MoveOperands*>*)",93957343064832,93957343066025],["v8::internal::compiler::BlockAssessments::CheckReferenceMap(v8::internal::compiler::ReferenceMap const*)",93957343074576,93957343075189],["std::__1::__tree_node_base<void*>*& std::__1::__tree<v8::internal::compiler::InstructionOperand, v8::internal::compiler::OperandAsKeyLess, v8::internal::ZoneAllocator<v8::internal::compiler::InstructionOperand> >::__find_equal<v8::internal::compiler::InstructionOperand>(std::__1::__tree_const_iterator<v8::internal::compiler::InstructionOperand, std::__1::__tree_node<v8::internal::compiler::InstructionOperand, void*>*, long>, std::__1::__tree_end_node<std::__1::__tree_node_base<void*>*>*&, std::__1::__tree_node_base<void*>*&, v8::internal::compiler::InstructionOperand const&)",93957343086256,93957343086990],["v8::internal::compiler::LiveRangeFinder::ArrayFor(int)",93957343088544,93957343088767],["v8::internal::compiler::LiveRange::GetAssignedOperand() const",93957343089024,93957343089132],["v8::internal::compiler::LiveRange::DetachAt(v8::internal::compiler::LifetimePosition, v8::internal::compiler::LiveRange*, v8::internal::Zone*, v8::internal::compiler::LiveRange::HintConnectionOption)",93957343089184,93957343089636],["v8::internal::compiler::TopLevelLiveRange::FilterSpillMoves(v8::internal::compiler::TopTierRegisterAllocationData*, v8::internal::compiler::InstructionOperand const&)",93957343089904,93957343090270],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestGreaterThan()",93957343245168,93957343245268],["v8::internal::compiler::BytecodeGraphBuilder::VisitThrowSuperNotCalledIfHole()",93957343258032,93957343258180],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar1()",93957343265040,93957343265108],["v8::internal::compiler::BytecodeGraphBuilder::BuildBinaryOpWithImmediate(v8::internal::compiler::Operator const*)",93957343273456,93957343273894],["v8::internal::compiler::BytecodeGraphBuilder::ApplyEarlyReduction(v8::internal::compiler::JSTypeHintLowering::LoweringResult)",93957343280624,93957343281339],["v8::internal::compiler::BytecodeLiveness::BytecodeLiveness(int, v8::internal::Zone*)",93957343283184,93957343283708],["v8::internal::compiler::CheckpointElimination::Reduce(v8::internal::compiler::Node*)",93957343285872,93957343285896],["std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, std::__1::__unordered_map_hasher<std::__1::pair<long, char>, std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, v8::base::hash<std::__1::pair<long, char> >, std::__1::equal_to<std::__1::pair<long, char> >, true>, std::__1::__unordered_map_equal<std::__1::pair<long, char>, std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, std::__1::equal_to<std::__1::pair<long, char> >, v8::base::hash<std::__1::pair<long, char> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*> > >::__rehash(unsigned long)",93957343289312,93957343290059],["v8::internal::compiler::CommonOperatorReducer::CommonOperatorReducer(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::Graph*, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::compiler::MachineOperatorBuilder*, v8::internal::Zone*)",93957343293488,93957343293591],["v8::internal::compiler::CommonOperatorReducer::ReduceMerge(v8::internal::compiler::Node*)",93957343295632,93957343296036],["v8::internal::compiler::CommonOperatorReducer::ReduceSwitch(v8::internal::compiler::Node*)",93957343299472,93957343299881],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::FloatMatcher<float, (v8::internal::compiler::IrOpcode::Value)25>, v8::internal::compiler::FloatMatcher<float, (v8::internal::compiler::IrOpcode::Value)25> >::BinopMatcher(v8::internal::compiler::Node*)",93957343300752,93957343300886],["v8::internal::compiler::FloatMatcher<double, (v8::internal::compiler::IrOpcode::Value)26>::FloatMatcher(v8::internal::compiler::Node*)",93957343301280,93957343301462],["v8::internal::compiler::BranchHintOf(v8::internal::compiler::Operator const*)",93957343302000,93957343302056],["v8::internal::compiler::IsSafetyCheckOf(v8::internal::compiler::Operator const*)",93957343302384,93957343302412],["v8::internal::compiler::CommonOperatorBuilder::DeoptimizeUnless(v8::internal::DeoptimizeKind, v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::IsSafetyCheck)",93957343303648,93957343304330],["v8::internal::compiler::operator!=(v8::internal::compiler::SparseInputMask const&, v8::internal::compiler::SparseInputMask const&)",93957343305072,93957343305085],["v8::internal::compiler::SparseInputMaskOf(v8::internal::compiler::Operator const*)",93957343305376,93957343305404],["v8::internal::StdoutStream& v8::base::Optional<v8::internal::StdoutStream>::emplace<>()",93957344681520,93957344681734],["v8::internal::compiler::RedundancyElimination::~RedundancyElimination()",93957344716352,93957344716381],["v8::internal::compiler::RepresentationChanger::GetTaggedRepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::compiler::Truncation)",93957344726096,93957344727322],["v8::internal::compiler::RepresentationChanger::Int32OperatorFor(v8::internal::compiler::IrOpcode::Value)",93957344735616,93957344735816],["v8::internal::compiler::BasicBlock::set_rpo_number(int)",93957344737824,93957344737833],["v8::internal::compiler::Schedule::IsScheduled(v8::internal::compiler::Node*)",93957344739504,93957344739550],["v8::internal::compiler::Schedule::AddBranch(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*, v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344742896,93957344743095],["v8::internal::compiler::Schedule::InsertSwitch(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*, v8::internal::compiler::BasicBlock**, unsigned long)",93957344745440,93957344745861],["v8::internal::compiler::Type::Tuple(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::Zone*)",93957345156192,93957345156355],["v8::internal::compiler::WasmGraphBuilder::AppendToMerge(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345249936,93957345250030],["v8::internal::compiler::WasmGraphBuilder::BuildF64NearestInt(v8::internal::compiler::Node*)",93957345267680,93957345267724],["v8::internal::compiler::WasmGraphBuilder::BuildDecodeException32BitValue(v8::internal::compiler::Node*, unsigned int*)",93957345277104,93957345277530],["v8::internal::compiler::WasmGraphBuilder::BrOnNull(v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345288880,93957345289108],["v8::internal::compiler::WasmGraphBuilder::BoundsCheckMem(unsigned char, v8::internal::compiler::Node*, unsigned long, int, v8::internal::compiler::WasmGraphBuilder::EnforceBoundsCheck)",93957345295216,93957345295666],["v8::internal::compiler::WasmGraphBuilder::BuildF32x4Trunc(v8::internal::compiler::Node*)",93957345299744,93957345299788],["v8::internal::compiler::WasmGraphBuilder::TableInit(unsigned int, unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345309888,93957345310226],["v8::internal::compiler::WasmGraphBuilder::DataCheck(v8::internal::compiler::Node*, bool, v8::internal::compiler::WasmGraphBuilder::Callbacks)",93957345315616,93957345316071],["v8::internal::compiler::WasmGraphBuilder::BrOnData(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345319216,93957345319395],["v8::internal::compiler::WasmGraphBuilder::StructSet(v8::internal::compiler::Node*, v8::internal::wasm::StructType const*, unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::CheckForNull, int)",93957345321520,93957345321646],["v8::internal::compiler::WasmGraphBuilder::RemoveBytecodePositionDecorator()",93957345323472,93957345323512],["v8::internal::compiler::GetI32WasmCallDescriptor(v8::internal::Zone*, v8::internal::compiler::CallDescriptor const*)",93957345340496,93957345340516],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::BuildCallAndReturn(bool, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::base::SmallVector<v8::internal::compiler::Node*, 16ul>, v8::internal::compiler::JSWasmCallData const*, v8::internal::compiler::Node*)",93957345358992,93957345360800],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::TestCallbacks(v8::internal::compiler::GraphAssemblerLabel<1ul>*)::$_1, void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957345368912,93957345368981],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::WasmGraphBuilder::Callbacks)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::BrOnCast(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**)::$_10, void (v8::internal::compiler::WasmGraphBuilder::Callbacks)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::WasmGraphBuilder::Callbacks&&)",93957345369856,93957345370423],["unsigned int std::__1::__sort5<std::__1::__less<signed char, signed char>&, signed char*>(signed char*, signed char*, signed char*, signed char*, signed char*, std::__1::__less<signed char, signed char>&)",93957346613888,93957346614149],["std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)",93957346630736,93957346630807],["std::__1::basic_streambuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int)",93957346636208,93957346636223],["std::__1::basic_ostream<wchar_t, std::__1::char_traits<wchar_t> >::flush()",93957346638032,93957346638250],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(int)",93957346639424,93957346639852],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(long)",93957346640256,93957346640650],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const* std::__1::__scan_keyword<std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*, std::__1::ctype<char> >(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >&, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const*, std::__1::ctype<char> const&, unsigned int&, bool)",93957346656528,93957346657779],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, long&) const",93957346672624,93957346672634],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, float&) const",93957346680592,93957346680602],["std::__1::__num_get<char>::__stage2_float_prep(std::__1::ios_base&, char*, char&, char&)",93957346686384,93957346686851],["std::__1::__num_get<wchar_t>::__stage2_int_prep(std::__1::ios_base&, wchar_t&)",93957346689344,93957346689623],["std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, bool) const",93957346689904,93957346690415],["__strtod_nan",139871563556624,139871563556824],["fmtmsg",139871563567136,139871563568463],["getcontext",139871563568720,139871563568877],["strfromf128",139871563577952,139871563578555],["__isoc99_vsscanf",139871563621344,139871563621512],["fwrite",139871563740416,139871563740870],["_IO_file_seekoff",139871563784256,139871563785766],["_IO_sungetc",139871563797072,139871563797191],["pthread_mutex_destroy",139871563803680,139871563803715],["thrd_yield",139871563805584,139871563805592],["pthread_attr_getinheritsched",139871563805760,139871563805773],["__stpcpy_small",139871563868112,139871563868333],["timespec_get",139871564069440,139871564069480],["getpwent_r",139871564087968,139871564088226],["getegid",139871564095776,139871564095784],["re_set_syntax",139871564186384,139871564186401],["getopt_long",139871564197472,139871564197491],["wordexp",139871564227728,139871564230979],["posix_spawnattr_getpgroup",139871564232496,139871564232504],["__sched_cpufree",139871564235152,139871564235157],["__lxstat",139871564235824,139871564235900],["fstatvfs",139871564237200,139871564237308],["__open_2",139871564237664,139871564237704],["getmsg",139871564546688,139871564546708],["step",139871564548096,139871564548228],["__pthread_mutex_clocklock",139871566600896,139871566600918],["__pthread_cond_wait",139871566611920,139871566612637],["__pthread_cond_clockwait",139871566613520,139871566614379],["cnd_timedwait",139871566637872,139871566637950],["std::__1::__hash_table<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> >::rehash(unsigned long)",93957335213376,93957335213747],["std::__1::__shared_ptr_pointer<v8::DelayedTasksPlatform::DelayedTaskRunner*, v8::DelayedTasksPlatform::DelayedTaskRunnerDeleter, std::__1::allocator<v8::DelayedTasksPlatform::DelayedTaskRunner> >::__on_zero_shared()",93957335214496,93957335214514],["v8::(anonymous namespace)::MultiMappedAllocator::~MultiMappedAllocator()",93957335312352,93957335312483],["std::__1::__murmur2_or_cityhash<unsigned long, 64ul>::operator()(void const*, unsigned long)",93957335314176,93957335315366],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewConsString(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, int, bool, v8::internal::AllocationType)",93957336845952,93957336846385],["v8::internal::Factory::CodeBuilder::TryBuild()",93957336849488,93957336849500],["v8::internal::Factory::NewPrototypeInfo()",93957336850448,93957336850574],["v8::internal::Factory::NewTuple2(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::AllocationType)",93957336850912,93957336851266],["v8::internal::Heap::CanPromoteYoungAndExpandOldGeneration(unsigned long)",93957336948944,93957336949256],["v8::internal::Heap::PublishPendingAllocations()",93957336967232,93957336967395],["v8::internal::Heap::CheckCollectionRequested()",93957336976848,93957336976910],["v8::internal::Heap::StartIncrementalMarking(int, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)",93957336987136,93957336987256],["v8::internal::Heap::GarbageCollectionReasonToString(v8::internal::GarbageCollectionReason)",93957336988352,93957336988391],["v8::internal::Heap::OldGenerationSizeOfObjects()",93957336991232,93957336991384],["v8::internal::Context::set_retained_maps(v8::internal::WeakArrayList)",93957336993184,93957336993455],["v8::internal::Heap::StartIncrementalMarkingIfAllocationLimitIsReachedBackground()",93957336995088,93957336995376],["v8::internal::Heap::ConfigureInitialOldGenerationSize()",93957337000608,93957337001360],["v8::internal::Heap::PrecedeWithFiller(v8::internal::ReadOnlyRoots, v8::internal::HeapObject, int)",93957337008704,93957337008769],["v8::internal::Heap::FinalizeIncrementalMarkingIfComplete(v8::internal::GarbageCollectionReason)",93957337011792,93957337012089],["v8::internal::Heap::CollectGarbageOnMemoryPressure()",93957337016096,93957337017074],["v8::internal::Heap::MeasureMemory(std::__1::unique_ptr<v8::MeasureMemoryDelegate, std::__1::default_delete<v8::MeasureMemoryDelegate> >, v8::MeasureMemoryExecution)",93957337018352,93957337019066],["v8::internal::Heap::InSpaceSlow(unsigned long, v8::internal::AllocationSpace) const",93957337019808,93957337020038],["v8::internal::Heap::set_builtin(int, v8::internal::Code)",93957337020128,93957337020145],["v8::internal::Heap::IterateStackRoots(v8::internal::RootVisitor*)",93957337021376,93957337021421],["v8::internal::Heap::AddToRingBuffer(char const*)",93957337022608,93957337022768],["v8::internal::HeapObjectIterator::Next()",93957337023616,93957337024052],["v8::internal::Heap::ShouldOptimizeForLoadTime()",93957337024096,93957337024199],["v8::internal::Heap::GlobalMemoryAvailable()",93957337024624,93957337024839],["v8::internal::LargePage::ClearOutOfLiveRangeSlots(unsigned long)",93957337071760,93957337072397],["v8::internal::LargeObjectSpace::RemovePage(v8::internal::LargePage*, unsigned long)",93957337075680,93957337075853],["v8::internal::NewLargeObjectSpace::NewLargeObjectSpace(v8::internal::Heap*, unsigned long)",93957337076704,93957337076976],["v8::internal::NewLargeObjectSpace::FreeDeadObjects(std::__1::function<bool (v8::internal::HeapObject)> const&)",93957337077536,93957337078014],["v8::internal::PagedSpace::InitializePage(v8::internal::MemoryChunk*)",93957337488496,93957337488599],["v8::internal::PagedSpace::RawRefillLabBackground(v8::internal::LocalHeap*, unsigned long, unsigned long, v8::internal::AllocationAlignment, v8::internal::AllocationOrigin)",93957337493632,93957337494061],["v8::internal::ReadOnlyHeap::SetUp(v8::internal::Isolate*, v8::internal::SnapshotData*, bool)",93957337496544,93957337496827],["v8::internal::ReadOnlyHeapObjectIterator::Next()",93957337497376,93957337497629],["v8::internal::ReadOnlySpace::TearDown(v8::internal::MemoryAllocator*)",93957337497984,93957337498079],["v8::internal::ReadOnlySpace::FreeLinearAllocationArea()",93957337498672,93957337499176],["v8::internal::ReadOnlySpace::AllocateRaw(int, v8::internal::AllocationAlignment)",93957337499840,93957337499924],["v8::internal::ReadOnlySpace::Size()",93957337500528,93957337500538],["v8::internal::GlobalSafepoint::WaitInSafepoint()",93957337501344,93957337501461],["v8::internal::GlobalSafepoint::NotifyPark()",93957337501536,93957337501610],["v8::internal::SafepointScope::~SafepointScope()",93957337501648,93957337501811],["v8::internal::ScavengeJob::YoungGenerationTaskTriggerSize(v8::internal::Heap*)",93957337501888,93957337501969],["v8::internal::ScavengeJob::Task::RunInternal()",93957337502352,93957337502696],["v8::internal::ScavengerCollector::JobTask::ProcessItems(v8::JobDelegate*, v8::internal::Scavenger*)",93957337503520,93957337503874],["v8::internal::Scavenger::Process(v8::JobDelegate*)",93957337503984,93957337513074],["v8::internal::ScavengerCollector::ScavengerCollector(v8::internal::Heap*)",93957337516784,93957337516822],["v8::internal::ScavengeVisitor::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957337536336,93957337536462],["v8::internal::IterateAndScavengePromotedObjectsVisitor::VisitEphemeron(v8::internal::HeapObject, int, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337538368,93957337538491],["v8::internal::SlotCallbackResult v8::internal::Scavenger::EvacuateThinString<v8::internal::CompressedHeapObjectSlot>(v8::internal::Map, v8::internal::CompressedHeapObjectSlot, v8::internal::ThinString, int)",93957337546352,93957337552343],["v8::internal::ScavengeWeakObjectRetainer::RetainAs(v8::internal::Object)",93957337565680,93957337565742],["void std::__1::vector<std::__1::unique_ptr<v8::internal::Scavenger, std::__1::default_delete<v8::internal::Scavenger> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::Scavenger, std::__1::default_delete<v8::internal::Scavenger> > > >::__emplace_back_slow_path<v8::internal::Scavenger*>(v8::internal::Scavenger*&&)",93957337566896,93957337567651],["void v8::internal::CallIterateBody::apply<v8::internal::NativeContext::BodyDescriptor, v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337569760,93957337569824],["void v8::internal::CallIterateBody::apply<v8::internal::ExportedSubClass::BodyDescriptor, v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337570016,93957337570074],["void v8::internal::WasmArray::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337572256,93957337572327],["void v8::internal::WasmInstanceObject::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337572736,93957337573167],["void v8::internal::JSArrayBuffer::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337573376,93957337573588],["void v8::internal::JSTypedArray::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337573824,93957337574050],["void v8::internal::JSWeakRef::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337574176,93957337574402],["void v8::internal::BytecodeArray::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337574496,93957337574585],["void v8::internal::DataHandler::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337574688,93957337574754],["void v8::internal::SubclassBodyDescriptor<v8::internal::FixedBodyDescriptor<4, 28, 28>, v8::internal::FixedBodyDescriptor<28, 40, 40> >::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337574832,93957337574888],["void v8::internal::WasmInstanceObject::BodyDescriptor::IterateBody<v8::internal::ScavengeVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ScavengeVisitor*)",93957337575280,93957337575785],["v8::internal::SlotCallbackResult v8::internal::Scavenger::EvacuateThinString<v8::internal::FullHeapObjectSlot>(v8::internal::Map, v8::internal::FullHeapObjectSlot, v8::internal::ThinString, int)",93957337576016,93957337582006],["v8::internal::TypedSlots::~TypedSlots()",93957337594176,93957337594279],["v8::internal::TypedSlots::Insert(v8::internal::SlotType, unsigned int)",93957337594400,93957337594875],["v8::internal::TypedSlotSet::ClearInvalidSlots(std::__1::map<unsigned int, unsigned int, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<unsigned int const, unsigned int> > > const&)",93957337594944,93957337595178],["v8::internal::Page::InitializeFreeListCategories()",93957337595376,93957337595461],["v8::internal::Page::ConvertNewToOld(v8::internal::Page*)",93957337595632,93957337595698],["v8::internal::Page::MergeOldToNewRememberedSets()",93957337595776,93957337596260],["v8::internal::Page::CreateBlackArea(unsigned long, unsigned long)",93957337596624,93957337597046],["v8::internal::interpreter::BytecodeArrayBuilder::ForInPrepare(v8::internal::interpreter::RegisterList, int)",93957337862528,93957337862944],["v8::internal::interpreter::TestTypeOfFlags::GetFlagForLiteral(v8::internal::AstStringConstants const*, v8::internal::Literal*)",93957337894256,93957337894371],["v8::internal::interpreter::BytecodeGenerator::VisitTryFinallyStatement(v8::internal::TryFinallyStatement*)",93957337925248,93957337926360],["v8::internal::interpreter::BytecodeGenerator::BuildPrivateBrandCheck(v8::internal::Property*, v8::internal::interpreter::Register, v8::internal::MessageTemplate)",93957337956848,93957337957596],["v8::internal::interpreter::BytecodeGenerator::VisitForTypeOfValue(v8::internal::Expression*)",93957337978768,93957337979038],["v8::internal::interpreter::BytecodeGenerator::BuildLiteralCompareNil(v8::internal::Token::Value, v8::internal::interpreter::BytecodeArrayBuilder::NilValue)",93957337992208,93957337992426],["v8::internal::interpreter::BytecodeGenerator::BuildTest(v8::internal::interpreter::BytecodeArrayBuilder::ToBooleanMode, v8::internal::interpreter::BytecodeLabels*, v8::internal::interpreter::BytecodeLabels*, v8::internal::interpreter::BytecodeGenerator::TestFallthrough)",93957338000784,93957338000932],["v8::internal::interpreter::BytecodeRegisterOptimizer::BytecodeRegisterOptimizer(v8::internal::Zone*, v8::internal::interpreter::BytecodeRegisterAllocator*, int, int, v8::internal::interpreter::BytecodeRegisterOptimizer::BytecodeWriter*)",93957338005136,93957338005610],["v8::internal::interpreter::BytecodeRegisterOptimizer::~BytecodeRegisterOptimizer()",93957338008864,93957338008919],["v8::internal::interpreter::Register::FromParameterIndex(int, int)",93957338014064,93957338014077],["v8::internal::interpreter::Register::ToString(int) const",93957338014192,93957338015064],["v8::internal::Handle<v8::internal::Object> v8::internal::interpreter::ConstantArrayBuilder::Entry::ToHandle<v8::internal::Isolate>(v8::internal::Isolate*) const",93957338017872,93957338018332],["v8::internal::interpreter::ConstantArrayBuilder::Insert(v8::internal::AstRawString const*)",93957338022800,93957338023141],["v8::internal::interpreter::ConstantArrayBuilder::InsertDeferred()",93957338024656,93957338024779],["v8::internal::interpreter::BreakableControlFlowBuilder::~BreakableControlFlowBuilder()",93957338026176,93957338026282],["v8::internal::interpreter::LoopBuilder::~LoopBuilder()",93957338027568,93957338027596],["v8::internal::interpreter::SwitchBuilder::~SwitchBuilder()",93957338027968,93957338028086],["v8::internal::interpreter::TryCatchBuilder::BeginTry(v8::internal::interpreter::Register)",93957338028304,93957338028326],["v8::internal::interpreter::TryFinallyBuilder::~TryFinallyBuilder()",93957338028560,93957338028652],["v8::internal::interpreter::TryFinallyBuilder::BeginFinally()",93957338028784,93957338028842],["v8::internal::interpreter::ConditionalControlFlowBuilder::Then()",93957338029168,93957338029229],["v8::internal::interpreter::HandlerTableBuilder::HandlerTableBuilder(v8::internal::Zone*)",93957338029712,93957338029736],["v8::internal::interpreter::HandlerTableBuilder::SetHandlerTarget(int, unsigned long)",93957338030128,93957338030149],["v8::internal::interpreter::IntrinsicsHelper::FromRuntimeId(v8::internal::Runtime::FunctionId)",93957338030256,93957338030310],["v8::internal::interpreter::InterpreterCompilationJob::ExecuteJobImpl()",93957338030608,93957338031119],["v8::internal::CompilationJob::Status v8::internal::interpreter::InterpreterCompilationJob::DoFinalizeJobImpl<v8::internal::LocalIsolate>(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::LocalIsolate*)",93957338033168,93957338034275],["v8::internal::interpreter::Interpreter::GetDispatchCountersObject()",93957338035072,93957338035912],["v8::internal::interpreter::Interpreter::~Interpreter()",93957338036560,93957338036621],["v8::internal::JsonParser<unsigned char>::JsonParser(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957338037184,93957338037766],["v8::internal::JsonParser<unsigned char>::ReportUnexpectedToken(v8::internal::JsonToken)",93957338041920,93957338042340],["v8::internal::JsonParser<unsigned char>::MakeString(v8::internal::JsonString const&, v8::internal::Handle<v8::internal::String>)",93957338043440,93957338043830],["std::__1::vector<v8::internal::JsonParser<unsigned char>::JsonContinuation, std::__1::allocator<v8::internal::JsonParser<unsigned char>::JsonContinuation> >::reserve(unsigned long)",93957338045312,93957338045648],["v8::internal::Handle<v8::internal::Object> v8::internal::HandleScope::CloseAndEscape<v8::internal::Object>(v8::internal::Handle<v8::internal::Object>)",93957338045856,93957338046027],["v8::internal::JsonParser<unsigned char>::BuildJsonObject(v8::internal::JsonParser<unsigned char>::JsonContinuation const&, v8::base::SmallVector<v8::internal::JsonProperty, 16ul> const&, v8::internal::Handle<v8::internal::Map>)",93957338046144,93957338050828],["v8::internal::JsonParser<unsigned char>::BuildJsonArray(v8::internal::JsonParser<unsigned char>::JsonContinuation const&, v8::base::SmallVector<v8::internal::Handle<v8::internal::Object>, 16ul> const&)",93957338050912,93957338051641],["v8::internal::JsonParser<unsigned short>::ParseJson()",93957338051936,93957338052080],["v8::internal::JsonParser<unsigned short>::ParseJsonValue()",93957338052640,93957338057118],["v8::internal::JsonParser<unsigned short>::ScanJsonString(bool)",93957338057552,93957338058025],["v8::internal::JsonParser<unsigned short>::ScanJsonPropertyKey(v8::internal::JsonParser<unsigned short>::JsonContinuation*)",93957338058288,93957338058697],["v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<unsigned short>::DecodeString<v8::internal::SeqOneByteString>(v8::internal::JsonString const&, v8::internal::Handle<v8::internal::SeqOneByteString>, v8::internal::Handle<v8::internal::String>)",93957338059120,93957338059383],["v8::internal::JsonParser<unsigned short>::ParseJsonNumber()",93957338059664,93957338060681],["v8::internal::JsonParseInternalizer::InternalizeJsonProperty(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>)",93957338065376,93957338066701],["void v8::internal::JsonParser<unsigned char>::DecodeString<unsigned char>(unsigned char*, int, int)",93957338066928,93957338067325],["void std::__1::vector<v8::internal::JsonParser<unsigned char>::JsonContinuation, std::__1::allocator<v8::internal::JsonParser<unsigned char>::JsonContinuation> >::__emplace_back_slow_path<v8::internal::JsonParser<unsigned char>::JsonContinuation>(v8::internal::JsonParser<unsigned char>::JsonContinuation&&)",93957338067840,93957338068296],["v8::base::SmallVector<v8::internal::JsonProperty, 16ul>::Grow(unsigned long)",93957338068320,93957338068481],["v8::base::SmallVector<v8::internal::CharacterRange, 8ul>::Grow(unsigned long)",93957338068512,93957338068651],["void v8::internal::JsonParser<unsigned short>::DecodeString<unsigned char>(unsigned char*, int, int)",93957338069056,93957338069469],["v8::internal::JsonStringify(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338069968,93957338070263],["v8::internal::JsonStringifier::InitializeGap(v8::internal::Handle<v8::internal::Object>)",93957338071488,93957338072880],["v8::internal::JsonStringifier::ApplyReplacerFunction(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338073488,93957338073843],["v8::internal::JsonStringifier::StackPush(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338074128,93957338074361],["v8::internal::CircularStructureMessageBuilder::AppendStartLine(v8::internal::Handle<v8::internal::Object>)",93957338074704,93957338075708],["v8::internal::CircularStructureMessageBuilder::AppendEllipsis()",93957338076928,93957338078074],["v8::internal::JsonStringifier::SerializeJSPrimitiveWrapper(v8::internal::Handle<v8::internal::JSPrimitiveWrapper>, v8::internal::Handle<v8::internal::Object>)",93957338079792,93957338081476],["v8::internal::JsonStringifier::SerializeSmi(v8::internal::Smi)",93957338085600,93957338085865],["v8::internal::JsonStringifier::SerializeArrayLikeSlow(v8::internal::Handle<v8::internal::JSReceiver>, unsigned int, unsigned int)",93957338086512,93957338087731],["v8::internal::JsonStringifier::SerializeJSProxy(v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Object>)",93957338088576,93957338089521],["v8::internal::Object::ToArrayLength(unsigned int*) const",93957338095232,93957338095361],["v8::internal::CircularStructureMessageBuilder::AppendKey(v8::internal::Handle<v8::internal::Object>)",93957338095552,93957338097993],["v8::internal::FieldIndex::ForDescriptor(v8::internal::Map, v8::internal::InternalIndex)",93957338098256,93957338098491],["void std::__1::vector<std::__1::pair<v8::internal::Handle<v8::internal::JSGlobalObject>, char const*>, std::__1::allocator<std::__1::pair<v8::internal::Handle<v8::internal::JSGlobalObject>, char const*> > >::__emplace_back_slow_path<v8::internal::Handle<v8::internal::JSGlobalObject>&, char const*&>(v8::internal::Handle<v8::internal::JSGlobalObject>&, char const*&)",93957338108656,93957338108930],["v8::sampler::SamplerManager::RemoveSampler(v8::sampler::Sampler*)",93957338109488,93957338110101],["v8::sampler::SignalHandler::HandleProfilerSignal(int, siginfo_t*, void*)",93957338110640,93957338110811],["v8::sampler::Sampler::~Sampler()",93957338110896,93957338110938],["v8::internal::Stats_Runtime_ArrayIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957339944400,93957339946769],["v8::internal::Runtime_BigIntCompareToString(int, unsigned long*, v8::internal::Isolate*)",93957339952336,93957339952690],["v8::internal::Runtime_ToBigInt(int, unsigned long*, v8::internal::Isolate*)",93957339957328,93957339957472],["v8::internal::Runtime_ThrowConstructorNonCallableError(int, unsigned long*, v8::internal::Isolate*)",93957339961104,93957339961588],["v8::internal::Runtime_ThrowSuperNotCalled(int, unsigned long*, v8::internal::Isolate*)",93957339963840,93957339963995],["v8::internal::Runtime_DefineClass(int, unsigned long*, v8::internal::Isolate*)",93957339966608,93957339969211],["v8::internal::Runtime_LoadKeyedFromSuper(int, unsigned long*, v8::internal::Isolate*)",93957339973744,93957339974072],["v8::internal::Runtime_StoreKeyedToSuper(int, unsigned long*, v8::internal::Isolate*)",93957339976336,93957339976681],["bool v8::internal::(anonymous namespace)::AddDescriptorsByTemplate<v8::internal::NameDictionary>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::NumberDictionary>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::JSObject>, bool, v8::internal::Arguments<(v8::internal::ArgumentsType)0>&)",93957339979680,93957339983138],["bool v8::internal::(anonymous namespace)::SubstituteValues<v8::internal::NumberDictionary>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, v8::internal::Arguments<(v8::internal::ArgumentsType)0>&, bool*)",93957339983680,93957339985401],["v8::internal::Runtime_TheHole(int, unsigned long*, v8::internal::Isolate*)",93957339985952,93957339985984],["v8::internal::Runtime_SetGrow(int, unsigned long*, v8::internal::Isolate*)",93957339986448,93957339986951],["v8::internal::Runtime_SetShrink(int, unsigned long*, v8::internal::Isolate*)",93957339987824,93957339988246],["v8::internal::Runtime_MapShrink(int, unsigned long*, v8::internal::Isolate*)",93957339989040,93957339989462],["v8::internal::Runtime_MapGrow(int, unsigned long*, v8::internal::Isolate*)",93957339990256,93957339990759],["v8::internal::Runtime_WeakCollectionDelete(int, unsigned long*, v8::internal::Isolate*)",93957339991632,93957339991875],["v8::internal::Stats_Runtime_DateCurrentTime(int, unsigned long*, v8::internal::Isolate*)",93957340013024,93957340013718],["v8::internal::Runtime_DebugToggleBlockCoverage(int, unsigned long*, v8::internal::Isolate*)",93957340051392,93957340051529],["v8::internal::Runtime_FunctionGetScriptId(int, unsigned long*, v8::internal::Isolate*)",93957340062512,93957340062921],["v8::internal::Runtime_AtomicsNumUnresolvedAsyncPromisesForTesting(int, unsigned long*, v8::internal::Isolate*)",93957340070944,93957340071538],["v8::internal::Runtime_AsyncFunctionResolve(int, unsigned long*, v8::internal::Isolate*)",93957340074960,93957340074997],["v8::internal::Runtime_AsyncGeneratorAwaitCaught(int, unsigned long*, v8::internal::Isolate*)",93957340078784,93957340078821],["v8::internal::Runtime_AsyncGeneratorYield(int, unsigned long*, v8::internal::Isolate*)",93957340080448,93957340080485],["v8::internal::Runtime_FatalProcessOutOfMemoryInAllocateRaw(int, unsigned long*, v8::internal::Isolate*)",93957340083248,93957340083300],["v8::internal::Runtime_ReThrow(int, unsigned long*, v8::internal::Isolate*)",93957340084816,93957340084949],["v8::internal::Runtime_ThrowSymbolAsyncIteratorInvalid(int, unsigned long*, v8::internal::Isolate*)",93957340085968,93957340086123],["v8::internal::Runtime_ThrowTypeError(int, unsigned long*, v8::internal::Isolate*)",93957340087664,93957340087903],["v8::internal::Runtime_ThrowInvalidTypedArrayAlignment(int, unsigned long*, v8::internal::Isolate*)",93957340089536,93957340090086],["v8::internal::Runtime_PromoteScheduledException(int, unsigned long*, v8::internal::Isolate*)",93957340091488,93957340091520],["v8::internal::Runtime_ThrowAccessedUninitializedVariable(int, unsigned long*, v8::internal::Isolate*)",93957340092688,93957340092847],["v8::internal::Runtime_NewTypeError(int, unsigned long*, v8::internal::Isolate*)",93957340094352,93957340094679],["v8::internal::Runtime_NewSyntaxError(int, unsigned long*, v8::internal::Isolate*)",93957340096352,93957340096627],["v8::internal::Runtime_IsJSReceiver(int, unsigned long*, v8::internal::Isolate*)",93957340209264,93957340209365],["v8::internal::Runtime_EnqueueMicrotask(int, unsigned long*, v8::internal::Isolate*)",93957340254944,93957340255321],["v8::internal::CompiledReplacement::Apply(v8::internal::ReplacementStringBuilder*, int, int, int*)",93957340280736,93957340281333],["v8::internal::(anonymous namespace)::MatchInfoBackedMatch::GetPrefix()",93957340337968,93957340338013],["v8::internal::Runtime_DeclareEvalVar(int, unsigned long*, v8::internal::Isolate*)",93957340350080,93957340350276],["v8::internal::Runtime_PushCatchContext(int, unsigned long*, v8::internal::Isolate*)",93957340363520,93957340363832],["v8::internal::Runtime_StoreLookupSlot_SloppyHoisting(int, unsigned long*, v8::internal::Isolate*)",93957340371360,93957340371708],["v8::internal::Runtime_StringSubstring(int, unsigned long*, v8::internal::Isolate*)",93957340382944,93957340383481],["v8::internal::Runtime_StringLessThan(int, unsigned long*, v8::internal::Isolate*)",93957340393840,93957340394114],["v8::internal::Runtime_StringEqual(int, unsigned long*, v8::internal::Isolate*)",93957340397744,93957340398115],["v8::internal::__RT_impl_Runtime_GetSubstitution(v8::internal::Arguments<(v8::internal::ArgumentsType)0>, v8::internal::Isolate*)::SimpleMatch::GetCapture(int, bool*)",93957340402864,93957340402877],["v8::internal::Stats_Runtime_SymbolDescriptiveString(int, unsigned long*, v8::internal::Isolate*)",93957340406688,93957340408065],["v8::internal::Stats_Runtime_ConstructConsString(int, unsigned long*, v8::internal::Isolate*)",93957340411936,93957340412683],["v8::internal::Stats_Runtime_RunningInSimulator(int, unsigned long*, v8::internal::Isolate*)",93957340416032,93957340416488],["v8::internal::Stats_Runtime_DynamicCheckMapsEnabled(int, unsigned long*, v8::internal::Isolate*)",93957340418384,93957340418848],["v8::internal::Stats_Runtime_OptimizeFunctionOnNextCall(int, unsigned long*, v8::internal::Isolate*)",93957340421392,93957340421939],["v8::internal::Stats_Runtime_PrepareFunctionForOptimization(int, unsigned long*, v8::internal::Isolate*)",93957340424096,93957340425104],["v8::internal::Stats_Runtime_NeverOptimizeFunction(int, unsigned long*, v8::internal::Isolate*)",93957340428272,93957340429161],["v8::internal::Stats_Runtime_UnblockConcurrentRecompilation(int, unsigned long*, v8::internal::Isolate*)",93957340433072,93957340433573],["v8::internal::Stats_Runtime_GetCallable(int, unsigned long*, v8::internal::Isolate*)",93957340434656,93957340435318],["v8::internal::Stats_Runtime_NotifyContextDisposed(int, unsigned long*, v8::internal::Isolate*)",93957340436304,93957340436816],["v8::internal::Stats_Runtime_SimulateNewspaceFull(int, unsigned long*, v8::internal::Isolate*)",93957340437744,93957340438546],["v8::internal::Stats_Runtime_DebugPrint(int, unsigned long*, v8::internal::Isolate*)",93957340439152,93957340439586],["v8::internal::Stats_Runtime_PrintWithNameForAssert(int, unsigned long*, v8::internal::Isolate*)",93957340441456,93957340442424],["v8::internal::Stats_Runtime_DebugTrackRetainingPath(int, unsigned long*, v8::internal::Isolate*)",93957340443440,93957340444290],["v8::internal::Stats_Runtime_SystemBreak(int, unsigned long*, v8::internal::Isolate*)",93957340445744,93957340446244],["v8::internal::Stats_Runtime_Abort(int, unsigned long*, v8::internal::Isolate*)",93957340446928,93957340447387],["v8::internal::Stats_Runtime_AbortCSAAssert(int, unsigned long*, v8::internal::Isolate*)",93957340448688,93957340449203],["v8::internal::Stats_Runtime_TraceEnter(int, unsigned long*, v8::internal::Isolate*)",93957340450016,93957340450735],["v8::internal::Stats_Runtime_HaveSameMap(int, unsigned long*, v8::internal::Isolate*)",93957340451968,93957340452591],["v8::internal::Stats_Runtime_HasElementsInALargeObjectSpace(int, unsigned long*, v8::internal::Isolate*)",93957340453568,93957340454168],["v8::internal::Stats_Runtime_DisallowCodegenFromStrings(int, unsigned long*, v8::internal::Isolate*)",93957340454976,93957340455525],["v8::internal::Runtime_RegexpHasNativeCode(int, unsigned long*, v8::internal::Isolate*)",93957340456592,93957340456907],["v8::internal::Runtime_RegexpTypeTag(int, unsigned long*, v8::internal::Isolate*)",93957340457648,93957340457974],["v8::internal::Runtime_RegexpIsUnmodified(int, unsigned long*, v8::internal::Isolate*)",93957340458688,93957340458891],["v8::internal::Runtime_HasFastElements(int, unsigned long*, v8::internal::Isolate*)",93957340459504,93957340459614],["v8::internal::Runtime_HasSmiElements(int, unsigned long*, v8::internal::Isolate*)",93957340460160,93957340460270],["v8::internal::Runtime_HasObjectElements(int, unsigned long*, v8::internal::Isolate*)",93957340460816,93957340460928],["v8::internal::Runtime_HasSmiOrObjectElements(int, unsigned long*, v8::internal::Isolate*)",93957340461472,93957340461582],["v8::internal::Runtime_HasDoubleElements(int, unsigned long*, v8::internal::Isolate*)",93957340462128,93957340462240],["v8::internal::Runtime_HasHoleyElements(int, unsigned long*, v8::internal::Isolate*)",93957340462784,93957340462909],["v8::internal::Runtime_HasDictionaryElements(int, unsigned long*, v8::internal::Isolate*)",93957340463472,93957340463584],["v8::internal::Runtime_HasPackedElements(int, unsigned long*, v8::internal::Isolate*)",93957340464128,93957340464240],["v8::internal::Runtime_HasSloppyArgumentsElements(int, unsigned long*, v8::internal::Isolate*)",93957340464784,93957340464899],["v8::internal::Runtime_HasFastProperties(int, unsigned long*, v8::internal::Isolate*)",93957340465456,93957340465565],["v8::internal::Runtime_HasFixedUint8Elements(int, unsigned long*, v8::internal::Isolate*)",93957340466112,93957340466224],["v8::internal::Runtime_HasFixedInt8Elements(int, unsigned long*, v8::internal::Isolate*)",93957340466768,93957340466880],["v8::internal::Runtime_HasFixedUint16Elements(int, unsigned long*, v8::internal::Isolate*)",93957340467424,93957340467536],["v8::internal::Runtime_HasFixedInt16Elements(int, unsigned long*, v8::internal::Isolate*)",93957340468080,93957340468192],["v8::internal::Runtime_HasFixedUint32Elements(int, unsigned long*, v8::internal::Isolate*)",93957340468736,93957340468848],["v8::internal::Runtime_HasFixedInt32Elements(int, unsigned long*, v8::internal::Isolate*)",93957340469392,93957340469504],["v8::internal::Runtime_HasFixedFloat32Elements(int, unsigned long*, v8::internal::Isolate*)",93957340470048,93957340470160],["v8::internal::Runtime_HasFixedFloat64Elements(int, unsigned long*, v8::internal::Isolate*)",93957340470704,93957340470816],["v8::internal::Runtime_HasFixedUint8ClampedElements(int, unsigned long*, v8::internal::Isolate*)",93957340471360,93957340471472],["v8::internal::Runtime_HasFixedBigUint64Elements(int, unsigned long*, v8::internal::Isolate*)",93957340472016,93957340472128],["v8::internal::Runtime_HasFixedBigInt64Elements(int, unsigned long*, v8::internal::Isolate*)",93957340472672,93957340472784],["v8::internal::Runtime_IsConcatSpreadableProtector(int, unsigned long*, v8::internal::Isolate*)",93957340473328,93957340473413],["v8::internal::Runtime_TypedArraySpeciesProtector(int, unsigned long*, v8::internal::Isolate*)",93957340473936,93957340474021],["v8::internal::Runtime_RegExpSpeciesProtector(int, unsigned long*, v8::internal::Isolate*)",93957340474544,93957340474629],["v8::internal::Runtime_PromiseSpeciesProtector(int, unsigned long*, v8::internal::Isolate*)",93957340475152,93957340475237],["v8::internal::Runtime_ArraySpeciesProtector(int, unsigned long*, v8::internal::Isolate*)",93957340475760,93957340475845],["v8::internal::Runtime_MapIteratorProtector(int, unsigned long*, v8::internal::Isolate*)",93957340476368,93957340476453],["v8::internal::Runtime_SetIteratorProtector(int, unsigned long*, v8::internal::Isolate*)",93957340476976,93957340477061],["v8::internal::Runtime_StringIteratorProtector(int, unsigned long*, v8::internal::Isolate*)",93957340477584,93957340477669],["v8::internal::Deserializer::ReadObject()",93957340528576,93957340528659],["v8::internal::Deserializer::RelocInfoVisitor::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957340529952,93957340530131],["v8::internal::Deserializer::RelocInfoVisitor::VisitInternalReference(v8::internal::Code, v8::internal::RelocInfo*)",93957340530528,93957340530685],["v8::internal::EmbeddedData::FromIsolate(v8::internal::Isolate*)",93957340538000,93957340539169],["v8::internal::ReadOnlySerializer::MustBeDeferred(v8::internal::HeapObject)",93957340542624,93957340542649],["v8::internal::RootsSerializer::CheckRehashability(v8::internal::HeapObject)",93957340543392,93957340543454],["v8::internal::StartupSerializer::SerializeStringTable(v8::internal::StringTable*)::StartupSerializerStringTableVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957340575536,93957340575706],["void v8::internal::Utf8Decoder::Decode<unsigned short>(unsigned short*, v8::internal::Vector<unsigned char const> const&)",93957340588096,93957340588418],["non-virtual thunk to v8::internal::CancelableTask::~CancelableTask()",93957340602864,93957340602917],["v8::internal::(anonymous namespace)::CancelableIdleFuncTask::RunInternal(double)",93957340604224,93957340604239],["v8::tracing::(anonymous namespace)::EscapeAndAppendString(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*)",93957340605632,93957340605972],["v8::tracing::TracedValue::AppendAsTraceFormat(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const",93957340606672,93957340606748],["v8::internal::trap_handler::GetThreadInWasmThreadLocalAddress()",93957340608256,93957340608278],["v8::internal::Malloced::operator new(unsigned long)",93957340609136,93957340609168],["v8_inspector::V8HeapProfilerAgentImpl::restore()",93957342552992,93957342553472],["v8_inspector::V8HeapProfilerAgentImpl::onTimer(void*)",93957342557024,93957342557128],["v8_inspector::(anonymous namespace)::HeapSnapshotProgress::ReportProgressValue(int, int)",93957342558976,93957342559066],["v8_inspector::(anonymous namespace)::GlobalObjectNameResolver::~GlobalObjectNameResolver()",93957342560144,93957342560195],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleArrayBegin()",93957342773936,93957342774063],["v8_crdtp::DeserializerDescriptor::DeserializerDescriptor(v8_crdtp::DeserializerDescriptor::Field const*, unsigned long)",93957342798992,93957342799151],["v8_crdtp::ProtocolTypeTraits<double, void>::Deserialize(v8_crdtp::DeserializerState*, double*)",93957342801104,93957342801230],["v8_crdtp::IncomingDeferredMessage::MakeDeserializer() const",93957342802320,93957342802415],["v8_crdtp::SpanLessThan(v8_crdtp::span<char>, v8_crdtp::span<char>)",93957342802768,93957342802837],["v8_crdtp::json::platform::StrToD(char const*, double*)",93957342805504,93957342805554],["v8::internal::compiler::SinglePassRegisterAllocator::EmitGapMoveFromOutput(v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, int)",93957343018592,93957343019053],["v8::internal::compiler::AllocateSpillSlots(v8::internal::compiler::MidTierRegisterAllocationData*)",93957343040256,93957343041723],["v8::internal::compiler::MoveOptimizer::FinalizeMoves(v8::internal::compiler::Instruction*)",93957343053424,93957343054793],["void std::__1::__insertion_sort_3<bool (*&)(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*), v8::internal::compiler::MoveOperands**>(v8::internal::compiler::MoveOperands**, v8::internal::compiler::MoveOperands**, bool (*&)(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*))",93957343068480,93957343068806],["v8::internal::ElementSizeLog2Of(v8::internal::MachineRepresentation)",93957343073264,93957343073308],["std::__1::map<v8::internal::compiler::Variable, v8::internal::compiler::Node*, std::__1::less<v8::internal::compiler::Variable>, v8::internal::ZoneAllocator<std::__1::pair<v8::internal::compiler::Variable const, v8::internal::compiler::Node*> > >::operator[](v8::internal::compiler::Variable const&)",93957343076944,93957343077195],["v8::internal::compiler::RegisterAllocatorVerifier::VerifyGapMoves()",93957343081760,93957343085790],["std::__1::__tree_iterator<v8::internal::compiler::InstructionOperand, std::__1::__tree_node<v8::internal::compiler::InstructionOperand, void*>*, long> std::__1::__tree<v8::internal::compiler::InstructionOperand, v8::internal::compiler::OperandAsKeyLess, v8::internal::ZoneAllocator<v8::internal::compiler::InstructionOperand> >::find<v8::internal::compiler::InstructionOperand>(v8::internal::compiler::InstructionOperand const&)",93957343087328,93957343087715],["v8::internal::compiler::BytecodeGraphBuilder::VisitBitwiseAndSmi()",93957343235504,93957343235604],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateArrayLiteral()",93957343249024,93957343249326],["v8::internal::compiler::BytecodeGraphBuilder::VisitForInContinue()",93957343254448,93957343254763],["v8::internal::compiler::BytecodeGraphBuilder::VisitIncBlockCounter()",93957343262880,93957343263080],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar5()",93957343264720,93957343264788],["v8::internal::compiler::BytecodeGraphBuilder::TryGetScopeInfo()",93957343266064,93957343266360],["v8::internal::compiler::BytecodeGraphBuilder::MakeNode(v8::internal::compiler::Operator const*, int, v8::internal::compiler::Node* const*, bool)",93957343270000,93957343271228],["v8::internal::compiler::BytecodeGraphBuilder::BuildJumpIfFalse()",93957343275088,93957343275733],["v8::internal::compiler::BytecodeGraphBuilder::BuildJumpIf(v8::internal::compiler::Node*)",93957343279632,93957343280113],["v8::internal::compiler::BytecodeGraphBuilder::~BytecodeGraphBuilder()",93957343281520,93957343281754],["std::__1::__deque_base<v8::internal::compiler::GraphReducer::NodeState, v8::internal::RecyclingZoneAllocator<v8::internal::compiler::GraphReducer::NodeState> >::~__deque_base()",93957343282784,93957343283109],["v8::internal::compiler::BytecodeLivenessMap::InitializeLiveness(int, int, v8::internal::Zone*)",93957343283920,93957343284174],["v8::internal::compiler::CheckpointElimination::CheckpointElimination(v8::internal::compiler::AdvancedReducer::Editor*)",93957343285280,93957343285300],["v8::internal::compiler::CommonNodeCache::CommonNodeCache(v8::internal::Zone*)",93957343285920,93957343286687],["std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<int, char>, v8::internal::compiler::Node*>, std::__1::__unordered_map_hasher<std::__1::pair<int, char>, std::__1::__hash_value_type<std::__1::pair<int, char>, v8::internal::compiler::Node*>, v8::base::hash<std::__1::pair<int, char> >, std::__1::equal_to<std::__1::pair<int, char> >, true>, std::__1::__unordered_map_equal<std::__1::pair<int, char>, std::__1::__hash_value_type<std::__1::pair<int, char>, v8::internal::compiler::Node*>, std::__1::equal_to<std::__1::pair<int, char> >, v8::base::hash<std::__1::pair<int, char> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<std::__1::pair<int, char>, v8::internal::compiler::Node*> > >::__rehash(unsigned long)",93957343288176,93957343288921],["v8::internal::compiler::CommonNodeCache::FindHeapConstant(v8::internal::Handle<v8::internal::HeapObject>)",93957343290128,93957343290185],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, std::__1::__unordered_map_hasher<long, std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, v8::base::hash<long>, std::__1::equal_to<long>, true>, std::__1::__unordered_map_equal<long, std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, std::__1::equal_to<long>, v8::base::hash<long>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<long, v8::internal::compiler::Node*> > >::__emplace_unique_key_args<long, std::__1::piecewise_construct_t const&, std::__1::tuple<long const&>, std::__1::tuple<> >(long const&, std::__1::piecewise_construct_t const&, std::__1::tuple<long const&>&&, std::__1::tuple<>&&)",93957343292528,93957343293485],["v8::internal::compiler::CommonOperatorReducer::Reduce(v8::internal::compiler::Node*)",93957343293600,93957343294012],["v8::internal::compiler::CommonOperatorReducer::ReduceDeoptimizeConditional(v8::internal::compiler::Node*)",93957343294912,93957343295617],["v8::internal::compiler::CommonOperatorReducer::ReducePhi(v8::internal::compiler::Node*)",93957343296048,93957343296979],["v8::internal::compiler::CommonOperatorReducer::ReduceSelect(v8::internal::compiler::Node*)",93957343298064,93957343299466],["v8::internal::compiler::CommonOperatorReducer::ReduceTrapConditional(v8::internal::compiler::Node*)",93957343299888,93957343300304],["v8::internal::compiler::NodeProperties::GetControlInput(v8::internal::compiler::Node*, int)",93957343300592,93957343300748],["v8::internal::compiler::CommonOperatorReducer::Change(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::Node*)",93957343300896,93957343301064],["v8::internal::compiler::FloatMatcher<float, (v8::internal::compiler::IrOpcode::Value)25>::FloatMatcher(v8::internal::compiler::Node*)",93957343301088,93957343301270],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::TrapId)",93957343301472,93957343301805],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::BranchOperatorInfo)",93957343301824,93957343301995],["v8::internal::compiler::ObjectAccessOf(v8::internal::compiler::Operator const*)",93957343302064,93957343302074],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::DeoptimizeParameters)",93957343302096,93957343302372],["v8::internal::compiler::CommonOperatorBuilder::MarkAsSafetyCheck(v8::internal::compiler::Operator const*, v8::internal::compiler::IsSafetyCheck)",93957343302416,93957343302739],["v8::internal::compiler::CommonOperatorBuilder::DeoptimizeIf(v8::internal::DeoptimizeKind, v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::IsSafetyCheck)",93957343302960,93957343303635],["v8::internal::compiler::CommonOperatorBuilder::DelayedStringConstant(v8::internal::StringConstantBase const*)",93957343304336,93957343304476],["v8::internal::compiler::PipelineImpl::AllocateRegistersForTopTier(v8::internal::RegisterConfiguration const*, v8::internal::compiler::CallDescriptor*, bool)",93957344666336,93957344667367],["v8::internal::compiler::TypedLoweringPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344692176,93957344694460],["v8::internal::compiler::PropertyAccessBuilder::BuildCheckValue(v8::internal::compiler::Node*, v8::internal::compiler::Effect*, v8::internal::compiler::Control, v8::internal::Handle<v8::internal::HeapObject>)",93957344712848,93957344713246],["v8::internal::compiler::RedundancyElimination::TakeChecksFromFirstEffect(v8::internal::compiler::Node*)",93957344720704,93957344721004],["v8::internal::compiler::RepresentationChanger::TypeError(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::MachineRepresentation)",93957344723088,93957344723413],["v8::internal::compiler::RepresentationChanger::GetWord32RepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::compiler::Node*, v8::internal::compiler::UseInfo)",93957344730112,93957344732521],["v8::internal::compiler::RepresentationChanger::InsertUnconditionalDeopt(v8::internal::compiler::Node*, v8::internal::DeoptimizeReason)",93957344734944,93957344735397],["v8::internal::compiler::RepresentationChanger::Uint32OperatorFor(v8::internal::compiler::IrOpcode::Value)",93957344736112,93957344736284],["v8::internal::compiler::BasicBlock::set_control_input(v8::internal::compiler::Node*)",93957344737760,93957344737800],["v8::internal::compiler::BasicBlock::TrimNodes(std::__1::__wrap_iter<v8::internal::compiler::Node**>)",93957344737856,93957344737872],["v8::internal::compiler::Schedule::NewBasicBlock()",93957344738608,93957344739448],["v8::internal::compiler::Schedule::PlanNode(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344739568,93957344740060],["v8::internal::compiler::Schedule::AddSuccessor(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344741360,93957344742680],["v8::internal::compiler::Schedule::AddTailCall(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344743344,93957344743547],["v8::internal::compiler::Schedule::InsertBranch(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*, v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344744176,93957344744566],["v8::internal::compiler::ScheduledMachineLowering::ScheduledMachineLowering(v8::internal::compiler::JSGraph*, v8::internal::compiler::Schedule*, v8::internal::Zone*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*, v8::internal::PoisoningMitigationLevel)",93957344751504,93957344751925],["v8::internal::compiler::Typer::Visitor::SameValueNumbersOnlyTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345138608,93957345138631],["v8::internal::compiler::Int64Lowering::ReplaceNodeWithProjections(v8::internal::compiler::Node*)",93957345194144,93957345194343],["void v8::internal::compiler::SimdScalarLowering::SmallerIntToInt32<short>(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345245312,93957345245840],["v8::internal::compiler::WasmGraphBuilder::Binop(v8::internal::wasm::WasmOpcode, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345252640,93957345254384],["v8::internal::compiler::WasmGraphBuilder::BuildI32Popcnt(v8::internal::compiler::Node*)",93957345267168,93957345267331],["v8::internal::compiler::WasmGraphBuilder::BuildF64UConvertI64(v8::internal::compiler::Node*)",93957345268416,93957345268463],["v8::internal::compiler::Diamond::Nest(v8::internal::compiler::Diamond const&, bool)",93957345272656,93957345273151],["v8::internal::compiler::WasmGraphBuilder::BuildWasmCall(v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::Vector<v8::internal::compiler::Node*>, int, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::UseRetpoline, v8::internal::compiler::Node*)",93957345280704,93957345280973],["v8::internal::compiler::WasmGraphBuilder::CallRef(unsigned int, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::compiler::WasmGraphBuilder::CheckForNull, int)",93957345288544,93957345288578],["v8::internal::compiler::WasmGraphBuilder::MergeInstanceCacheInto(v8::internal::compiler::WasmInstanceCacheNodes*, v8::internal::compiler::WasmInstanceCacheNodes*, v8::internal::compiler::Node*)",93957345290048,93957345290167],["v8::internal::compiler::WasmGraphBuilder::GlobalSet(unsigned int, v8::internal::compiler::Node*)",93957345293920,93957345294454],["v8::internal::compiler::WasmGraphBuilder::TraceMemoryOperation(bool, v8::internal::MachineRepresentation, v8::internal::compiler::Node*, unsigned long, int)",93957345296240,93957345296583],["v8::internal::compiler::WasmGraphBuilder::BuildF64x2Trunc(v8::internal::compiler::Node*)",93957345299552,93957345299596],["v8::internal::compiler::WasmGraphBuilder::LowerInt64(v8::internal::Signature<v8::internal::MachineRepresentation>*)",93957345300320,93957345300828],["v8::internal::compiler::WasmGraphBuilder::MemoryInit(unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345308800,93957345309092],["v8::internal::compiler::WasmGraphBuilder::TableSize(unsigned int)",93957345311072,93957345311465],["v8::internal::compiler::WasmGraphBuilder::RttSub(unsigned int, v8::internal::compiler::Node*)",93957345314080,93957345314305],["v8::internal::compiler::WasmGraphBuilder::BrOnCastAbs(v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, std::__1::function<void (v8::internal::compiler::WasmGraphBuilder::Callbacks)>)",93957345316272,93957345317336],["v8::internal::compiler::WasmGraphBuilder::RefIsData(v8::internal::compiler::Node*, bool)",93957345318400,93957345318808],["v8::internal::compiler::WasmGraphBuilder::RefAsFunc(v8::internal::compiler::Node*, bool, int)",93957345319824,93957345320223],["v8::internal::compiler::WasmGraphBuilder::BrOnI31(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345320624,93957345320935],["v8::internal::compiler::WasmGraphBuilder::ArraySet(v8::internal::compiler::Node*, v8::internal::wasm::ArrayType const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::CheckForNull, int)",93957345322288,93957345322936],["v8::internal::compiler::WasmGraphBuilder::I31GetU(v8::internal::compiler::Node*)",93957345323264,93957345323340],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::BuildJSToWasmWrapper(bool, v8::internal::compiler::JSWasmCallData const*, v8::internal::compiler::Node*)",93957345324112,93957345328638],["v8::internal::compiler::CompileWasmImportCallWrapper(v8::internal::wasm::WasmEngine*, v8::internal::wasm::CompilationEnv*, v8::internal::compiler::WasmImportCallKind, v8::internal::Signature<v8::internal::wasm::ValueType> const*, bool, int)",93957345331504,93957345335603],["v8::internal::compiler::CompileWasmToJSWrapper(v8::internal::Isolate*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::compiler::WasmImportCallKind, int)",93957345345376,93957345346602],["v8::internal::compiler::(anonymous namespace)::LinkageLocationAllocator::Next(v8::internal::MachineRepresentation)",93957345356224,93957345356498],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::ToJS(v8::internal::compiler::Node*, v8::internal::wasm::ValueType)",93957345362784,93957345365658],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::BuildChangeTaggedToFloat64(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345367856,93957345368264],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::TestCallbacks(v8::internal::compiler::GraphAssemblerLabel<1ul>*)::$_3, void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957345369072,93957345369138],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::BranchCallbacks(v8::base::SmallVector<v8::internal::compiler::Node*, 6ul>&, v8::base::SmallVector<v8::internal::compiler::Node*, 6ul>&, v8::base::SmallVector<v8::internal::compiler::Node*, 6ul>&, v8::base::SmallVector<v8::internal::compiler::Node*, 6ul>&)::$_7, void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957345369248,93957345369544],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::WasmGraphBuilder::Callbacks)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::BrOnFunc(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**)::$_12, void (v8::internal::compiler::WasmGraphBuilder::Callbacks)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::WasmGraphBuilder::Callbacks&&)",93957345370960,93957345371478],["v8::internal::Snapshot::DefaultSnapshotBlob()",93957346612320,93957346612488],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<unsigned char, unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, std::__1::__less<unsigned char, unsigned char>&)",93957346616336,93957346616843],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<unsigned int, unsigned int>&, unsigned int*>(unsigned int*, unsigned int*, std::__1::__less<unsigned int, unsigned int>&)",93957346625680,93957346626187],["std::__1::ios_base::failure::~failure()",93957346634560,93957346634570],["std::__1::basic_ios<char, std::__1::char_traits<char> >::copyfmt(std::__1::basic_ios<char, std::__1::char_traits<char> > const&)",93957346635952,93957346636057],["std::__1::basic_streambuf<wchar_t, std::__1::char_traits<wchar_t> >::~basic_streambuf()",93957346636688,93957346636712],["std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()",93957346637328,93957346637360],["virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()",93957346638336,93957346638379],["std::__1::__stdoutbuf<char>::sync()",93957346653920,93957346654077],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_unsigned<unsigned int>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, unsigned int&) const",93957346661264,93957346662396],["std::__1::__num_get<char>::__stage2_int_loop(char, int, char*, char*&, unsigned int&, char, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int*, unsigned int*&, char const*)",93957346669792,93957346670407],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, unsigned short&) const",93957346675280,93957346675290],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, unsigned long long&) const",93957346679264,93957346679274],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, double&) const",93957346681888,93957346681898],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, void*&) const",93957346684496,93957346685752],["std::__1::__num_get<char>::__stage2_int_prep(std::__1::ios_base&, char&)",93957346687728,93957346688007],["__strtod_internal",139871563525872,139871563525888],["canonicalize_file_name",139871563559936,139871563559943],["getsubopt",139871563565888,139871563566186],["strtoimax",139871563568656,139871563568663],["wcstoumax",139871563568704,139871563568711],["setcontext",139871563568880,139871563569025],["swapcontext",139871563569648,139871563569908],["__strtof128_internal",139871563578560,139871563578576],["tempnam",139871563618368,139871563618499],["fopen",139871563738240,139871563738250],["ftell",139871563739920,139871563740286],["feof_unlocked",139871563780800,139871563780809],["_IO_file_xsputn",139871563787264,139871563787735],["_IO_file_open",139871563788464,139871563788695],["_IO_list_unlock",139871563800800,139871563800888],["pthread_cond_timedwait",139871563803488,139871563803523],["pthread_setcancelstate",139871563803872,139871563803907],["thrd_equal",139871563805520,139871563805529],["pthread_attr_destroy",139871563805616,139871563805636],["pthread_attr_setdetachstate",139871563805712,139871563805750],["pthread_attr_setinheritsched",139871563805776,139871563805817],["__libc_dynarray_finalize",139871563839456,139871563839667],["wcstol",139871563954576,139871563954594],["settimeofday",139871564024576,139871564024715],["readdir64_r",139871564073744,139871564074288],["fgetpwent",139871564085296,139871564085817],["__waitpid",139871564091776,139871564091783],["execvp",139871564094224,139871564094239],["__bsd_getpgrp",139871564096400,139871564096405],["globfree",139871564110448,139871564110530],["regfree",139871564188192,139871564188260],["re_exec",139871564189600,139871564189639],["__sched_setscheduler",139871564197696,139871564197729],["getaddrinfo",139871564210432,139871564213625],["posix_spawn_file_actions_destroy",139871564231440,139871564231552],["posix_spawnattr_getsigdefault",139871564232288,139871564232362],["posix_spawnattr_getsigmask",139871564234528,139871564234626],["posix_madvise",139871564234832,139871564234849],["getcpu",139871564235328,139871564235442],["__xstat",139871564235664,139871564235740],["__xmknod",139871564236704,139871564236796],["fstatfs",139871564237040,139871564237073],["chmod",139871564237328,139871564237361],["mkdir",139871564237568,139871564237601],["__open64_2",139871564238016,139871564238056],["posix_spawn",139871564546592,139871564546608],["isastream",139871564546752,139871564546776],["nftw",139871564548064,139871564548085],["advance",139871564548240,139871564548362],["__pthread_attr_getstack",139871566592608,139871566592631],["__pthread_mutex_unlock_usercnt",139871566601872,139871566602113],["pthread_rwlockattr_init",139871566610848,139871566610858],["pthread_attr_setaffinity_np@GLIBC_2.3.3",139871566632384,139871566632397],["_dl_make_stack_executable",139871566976016,139871566976080],["v8::DelayedTasksPlatform::GetTracingController()",93957335212448,93957335212466],["std::__1::__hash_table<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> >::__rehash(unsigned long)",93957335213760,93957335214455],["v8::(anonymous namespace)::MockArrayBufferAllocator::Free(void*, unsigned long)",93957335312064,93957335312114],["v8::(anonymous namespace)::MultiMappedAllocator::AllocateUninitialized(unsigned long)",93957335312544,93957335313015],["v8::internal::FactoryBase<v8::internal::LocalFactory>::InternalizeString(v8::internal::Vector<unsigned char const> const&, bool)",93957336842992,93957336843140],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewDescriptorArray(int, int, v8::internal::AllocationType)",93957336846752,93957336846923],["v8::internal::Factory::CodeBuilder::CodeBuilder(v8::internal::Isolate*, v8::internal::CodeDesc const&, v8::internal::CodeKind)",93957336847808,93957336847906],["v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment)",93957336849552,93957336849751],["v8::internal::Heap::RememberUnmappedPage(unsigned long, bool)",93957336945696,93957336945772],["v8::internal::Heap::AddHeapObjectAllocationTracker(v8::internal::HeapObjectAllocationTracker*)",93957336961120,93957336961461],["v8::internal::Heap::UsedGlobalHandlesSize()",93957336966464,93957336966485],["v8::internal::Heap::DeoptMarkedAllocationSites()",93957336969664,93957336969967],["v8::internal::Heap::CollectAllGarbage(int, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)",93957336976080,93957336976122],["v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)",93957336977888,93957336982756],["v8::internal::Heap::FinalizeIncrementalMarkingAtomically(v8::internal::GarbageCollectionReason)",93957336986272,93957336986316],["v8::internal::Heap::CreateFillerObjectAt(unsigned long, int, v8::internal::ClearRecordedSlots)",93957336987280,93957336987514],["v8::internal::Heap::FatalProcessOutOfMemory(char const*)",93957336988320,93957336988341],["v8::internal::Heap::CallGCPrologueCallbacks(v8::GCType, v8::GCCallbackFlags)",93957336988400,93957336988619],["v8::internal::Heap::CallGCEpilogueCallbacks(v8::GCType, v8::GCCallbackFlags)",93957336991008,93957336991227],["v8::internal::Heap::StartIncrementalMarkingIfAllocationLimitIsReached(int, v8::GCCallbackFlags)",93957336991392,93957336991820],["v8::internal::Heap::RemoveDirtyFinalizationRegistriesOnContext(v8::internal::NativeContext)",93957336992336,93957336993172],["v8::internal::Heap::CompleteSweepingFull()",93957336993456,93957336994279],["v8::internal::Heap::OldGenerationSpaceAvailable()",93957336994880,93957336995077],["v8::internal::Heap::StartIdleIncrementalMarking(v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)",93957336995376,93957336995495],["v8::internal::Heap::UnprotectAndRegisterMemoryChunk(v8::internal::MemoryChunk*)",93957337006080,93957337006175],["v8::internal::Heap::ProcessYoungWeakReferences(v8::internal::WeakObjectRetainer*)",93957337008128,93957337008166],["v8::internal::Heap::IsLargeObject(v8::internal::HeapObject)",93957337009296,93957337009317],["v8::internal::Heap::HasLowAllocationRate()",93957337010912,93957337011458],["v8::internal::Heap::InvokeIncrementalMarkingEpilogueCallbacks()",93957337012864,93957337013622],["v8::internal::Heap::IdleNotification(double)",93957337014688,93957337016056],["v8::internal::Heap::AddNearHeapLimitCallback(unsigned long (*)(void*, unsigned long, unsigned long), void*)",93957337017664,93957337017832],["v8::internal::Heap::AppendArrayBufferExtension(v8::internal::JSArrayBuffer, v8::internal::ArrayBufferExtension*)",93957337018320,93957337018337],["v8::internal::Heap::FindAllNativeContexts()",93957337019072,93957337019536],["v8::internal::Heap::Contains(v8::internal::HeapObject) const",93957337019552,93957337019802],["v8::internal::Heap::IsValidAllocationSpace(v8::internal::AllocationSpace)",93957337020048,93957337020060],["v8::internal::Heap::builtin_address(int)",93957337020096,93957337020115],["v8::internal::Heap::IterateWeakRoots(v8::internal::RootVisitor*, v8::base::EnumSet<v8::internal::SkipRoot, int>)",93957337020160,93957337020314],["v8::internal::Heap::IterateRoots(v8::internal::RootVisitor*, v8::base::EnumSet<v8::internal::SkipRoot, int>)",93957337020416,93957337021366],["v8::internal::Heap::IterateWeakGlobalHandles(v8::internal::RootVisitor*)",93957337021424,93957337021445],["v8::internal::IndexGenerator::IndexGenerator(unsigned long)",93957337070256,93957337070579],["v8::internal::OldLargeObjectSpace::AllocateRaw(int, v8::internal::Executability)",93957337072496,93957337073136],["v8::internal::OldLargeObjectSpace::PromoteNewLargeObject(v8::internal::LargePage*)",93957337075344,93957337075454],["v8::internal::LargeObjectSpace::Contains(v8::internal::HeapObject)",93957337076320,93957337076343],["v8::internal::OldLargeObjectSpace::OldLargeObjectSpace(v8::internal::Heap*)",93957337076448,93957337076701],["v8::internal::NewLargeObjectSpace::AllocateRaw(int)",93957337076976,93957337077437],["v8::internal::NewLargeObjectSpace::Flip()",93957337077472,93957337077521],["v8::internal::NewLargeObjectSpace::SetCapacity(unsigned long)",93957337078016,93957337078054],["v8::internal::ObjectStatsCollector::Collect()",93957337480272,93957337481586],["v8::internal::PagedSpace::CommittedPhysicalMemory()",93957337490960,93957337491135],["v8::internal::PagedSpace::SetReadAndExecutable()",93957337492864,93957337492997],["v8::internal::PagedSpace::RefillLabMain(int, v8::internal::AllocationOrigin)",93957337494464,93957337494643],["v8::internal::LocalSpace::~LocalSpace()",93957337496288,93957337496353],["v8::internal::ReadOnlyHeap::OnHeapTearDown(v8::internal::Heap*)",93957337496880,93957337496934],["v8::internal::ReadOnlyHeapObjectIterator::ReadOnlyHeapObjectIterator(v8::internal::ReadOnlyHeap*)",93957337497280,93957337497327],["v8::internal::ReadOnlyHeap::~ReadOnlyHeap()",93957337497680,93957337497731],["v8::internal::ReadOnlySpace::~ReadOnlySpace()",93957337497920,93957337497971],["v8::internal::ReadOnlySpace::Seal(v8::internal::ReadOnlySpace::SealMode)",93957337498080,93957337498278],["v8::internal::ReadOnlySpace::ClearStringPaddingIfNeeded()",93957337498432,93957337498661],["v8::internal::ReadOnlySpace::ContainsSlow(unsigned long)",93957337499184,93957337499242],["v8::internal::ReadOnlySpace::EnsureSpaceForAllocation(int)",93957337499376,93957337499830],["v8::internal::ReadOnlyPage::ShrinkToHighWaterMark()",93957337499936,93957337500275],["v8::internal::ReadOnlySpace::InitializePage(v8::internal::BasicMemoryChunk*)",93957337500464,93957337500521],["v8::internal::GlobalSafepoint::GlobalSafepoint(v8::internal::Heap*)",93957337500544,93957337500642],["v8::internal::ScavengeVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957337536208,93957337536333],["v8::internal::ScavengeVisitor::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957337536464,93957337536577],["v8::internal::IterateAndScavengePromotedObjectsVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957337537472,93957337538364],["v8::internal::IterateAndScavengePromotedObjectsVisitor::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957337538496,93957337539265],["v8::internal::SlotCallbackResult v8::internal::Scavenger::ScavengeObject<v8::internal::CompressedHeapObjectSlot>(v8::internal::CompressedHeapObjectSlot, v8::internal::HeapObject)",93957337540048,93957337546347],["v8::internal::SlotCallbackResult v8::internal::Scavenger::EvacuateShortcutCandidate<v8::internal::CompressedHeapObjectSlot>(v8::internal::Map, v8::internal::CompressedHeapObjectSlot, v8::internal::ConsString, int)",93957337552352,93957337564636],["v8::internal::Scavenger::PromotionList::PushLargeObject(int, v8::internal::HeapObject, v8::internal::Map, int)",93957337565440,93957337565667],["v8::internal::Worklist<std::__1::pair<v8::internal::HeapObject, int>, 256>::FlushToGlobal(int)",93957337565744,93957337566274],["v8::internal::Scavenger::~Scavenger()",93957337566560,93957337566890],["v8::internal::SlotSet::CheckPossiblyEmptyBuckets(unsigned long, v8::internal::PossiblyEmptyBuckets*)",93957337567664,93957337567882],["void v8::internal::BodyDescriptorApply<v8::internal::CallIterateBody, void, v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*>(v8::internal::InstanceType, v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337568128,93957337569756],["void v8::internal::CallIterateBody::apply<v8::internal::Map::BodyDescriptor, v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337569824,93957337569882],["void v8::internal::CallIterateBody::apply<v8::internal::SharedFunctionInfo::BodyDescriptor, v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337569952,93957337570007],["void v8::internal::BodyDescriptorBase::IteratePointers<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::HeapObject, int, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337570080,93957337570956],["void v8::internal::BodyDescriptorBase::IterateMaybeWeakPointers<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::HeapObject, int, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337571376,93957337572252],["void v8::internal::WasmStruct::BodyDescriptor::IterateBody<v8::internal::IterateAndScavengePromotedObjectsVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::IterateAndScavengePromotedObjectsVisitor*)",93957337572336,93957337572544],["v8::internal::interpreter::BytecodeArrayBuilder::LoadIteratorProperty(v8::internal::interpreter::Register, int)",93957337843488,93957337843931],["v8::internal::Handle<v8::internal::Object> v8::internal::interpreter::BytecodeArrayIterator::GetConstantForIndexOperand<v8::internal::Isolate>(int, v8::internal::Isolate*) const",93957337876736,93957337876920],["v8::internal::interpreter::BytecodeArrayWriter::BindJumpTableEntry(v8::internal::interpreter::BytecodeJumpTable*, int)",93957337889792,93957337889862],["v8::internal::interpreter::BytecodeGenerator::BuildGeneratorObjectVariableInitialization()",93957337903168,93957337903558],["v8::internal::interpreter::BytecodeGenerator::VisitWhileStatement(v8::internal::WhileStatement*)",93957337914656,93957337915404],["v8::internal::interpreter::BytecodeGenerator::VisitInitializeClassMembersStatement(v8::internal::InitializeClassMembersStatement*)",93957337933872,93957337933947],["v8::internal::interpreter::BytecodeGenerator::BuildAsyncReturn(int)",93957337949296,93957337949659],["v8::internal::interpreter::BytecodeGenerator::BuildAwait(int)",93957337965712,93957337966365],["v8::internal::interpreter::BytecodeGenerator::VisitCall(v8::internal::Call*)",93957337972624,93957337976463],["v8::internal::interpreter::BytecodeGenerator::VisitCountOperation(v8::internal::CountOperation*)",93957337981936,93957337985562],["v8::internal::interpreter::BytecodeGenerator::VisitNaryLogicalOrExpression(v8::internal::NaryOperation*)",93957337989504,93957337990107],["v8::internal::interpreter::BytecodeGenerator::VisitGetTemplateObject(v8::internal::GetTemplateObject*)",93957337995152,93957337995560],["v8::internal::interpreter::BytecodeGenerator::VisitNullishSubExpression(v8::internal::Expression*, v8::internal::interpreter::BytecodeLabels*, int)",93957337998336,93957337998843],["v8::internal::interpreter::BytecodeGenerator::VisitNoStackOverflowCheck(v8::internal::AstNode*)",93957338001152,93957338002232],["v8::internal::interpreter::BytecodeGenerator::ControlScope::DeferredCommands::GetNewTokenForCommand(v8::internal::interpreter::BytecodeGenerator::ControlScope::Command, v8::internal::Statement*)",93957338004512,93957338004858],["v8::internal::interpreter::BytecodeRegisterOptimizer::PrepareOutputRegister(v8::internal::interpreter::Register)",93957338007200,93957338007476],["v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterListFreeEvent(v8::internal::interpreter::RegisterList)",93957338008672,93957338008807],["std::__1::__deque_base<v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterInfo*, v8::internal::RecyclingZoneAllocator<v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterInfo*> >::~__deque_base()",93957338009200,93957338009525],["std::__1::__split_buffer<int*, v8::internal::RecyclingZoneAllocator<int*>&>::push_back(int*&&)",93957338012160,93957338013098],["v8::internal::interpreter::Register::function_closure()",93957338014096,93957338014107],["v8::internal::interpreter::Register::bytecode_array()",93957338014160,93957338014171],["v8::internal::interpreter::Bytecodes::ToString(v8::internal::interpreter::Bytecode, v8::internal::interpreter::OperandScale, char const*)",93957338016928,93957338017458],["v8::internal::interpreter::Bytecodes::BytecodeHasHandler(v8::internal::interpreter::Bytecode, v8::internal::interpreter::OperandScale)",93957338017728,93957338017823],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::interpreter::ConstantArrayBuilder::ToFixedArray<v8::internal::Isolate>(v8::internal::Isolate*)",93957338018832,93957338019782],["v8::internal::interpreter::ConstantArrayBuilder::AllocateReservedEntry(v8::internal::Smi)",93957338021792,93957338022156],["v8::internal::interpreter::ConstantArrayBuilder::Insert(v8::internal::Scope const*)",93957338023504,93957338023845],["v8::internal::interpreter::ConstantArrayBuilder::InsertEmptyArrayBoilerplateDescription()",93957338024336,93957338024485],["v8::internal::interpreter::ConstantArrayBuilder::SetDeferredAt(unsigned long, v8::internal::Handle<v8::internal::Object>)",93957338024928,93957338025036],["v8::internal::interpreter::ConstantArrayBuilder::DiscardReservedEntry(v8::internal::interpreter::OperandSize)",93957338025728,93957338025792],["v8::internal::interpreter::BreakableControlFlowBuilder::~BreakableControlFlowBuilder()",93957338027040,93957338027145],["v8::internal::interpreter::BreakableControlFlowBuilder::EmitJumpIfUndefined(v8::internal::interpreter::BytecodeLabels*)",93957338027296,93957338027331],["v8::internal::interpreter::LoopBuilder::LoopBody()",93957338027632,93957338027667],["v8::internal::interpreter::SwitchBuilder::~SwitchBuilder()",93957338027840,93957338027959],["v8::internal::interpreter::SwitchBuilder::SetCaseTarget(int, v8::internal::CaseClause*)",93957338028096,93957338028188],["v8::internal::interpreter::TryCatchBuilder::~TryCatchBuilder()",93957338028240,93957338028296],["v8::internal::interpreter::TryCatchBuilder::EndTry()",93957338028336,93957338028421],["v8::internal::interpreter::TryFinallyBuilder::~TryFinallyBuilder()",93957338028464,93957338028557],["v8::internal::interpreter::TryFinallyBuilder::LeaveTry()",93957338028656,93957338028692],["v8::internal::interpreter::TryFinallyBuilder::BeginHandler()",93957338028736,93957338028779],["v8::internal::interpreter::ConditionalControlFlowBuilder::~ConditionalControlFlowBuilder()",93957338028848,93957338029081],["v8::internal::interpreter::ConditionalControlFlowBuilder::JumpToEnd()",93957338029120,93957338029156],["v8::internal::interpreter::ConditionalControlFlowBuilder::Else()",93957338029232,93957338029293],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::interpreter::HandlerTableBuilder::ToHandlerTable<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957338029504,93957338029712],["v8::internal::interpreter::HandlerTableBuilder::NewHandlerEntry()",93957338029744,93957338030058],["v8::internal::interpreter::HandlerTableBuilder::SetTryRegionEnd(int, unsigned long)",93957338030096,93957338030117],["v8::internal::interpreter::HandlerTableBuilder::SetPrediction(int, v8::internal::HandlerTable::CatchPrediction)",93957338030160,93957338030180],["v8::internal::interpreter::IntrinsicsHelper::IsSupported(v8::internal::Runtime::FunctionId)",93957338030224,93957338030256],["v8::internal::interpreter::IntrinsicsHelper::ToRuntimeId(v8::internal::interpreter::IntrinsicsHelper::IntrinsicId)",93957338030320,93957338030358],["v8::internal::interpreter::Interpreter::GetBytecodeHandler(v8::internal::interpreter::Bytecode, v8::internal::interpreter::OperandScale)",93957338030496,93957338030602],["v8::internal::interpreter::InterpreterCompilationJob::FinalizeJobImpl(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Isolate*)",93957338031120,93957338031582],["v8::internal::interpreter::InterpreterCompilationJob::FinalizeJobImpl(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::LocalIsolate*)",93957338032704,93957338033166],["v8::internal::interpreter::Interpreter::NewCompilationJob(v8::internal::ParseInfo*, v8::internal::FunctionLiteral*, v8::internal::AccountingAllocator*, std::__1::vector<v8::internal::FunctionLiteral*, std::__1::allocator<v8::internal::FunctionLiteral*> >*, v8::internal::LocalIsolate*)",93957338034288,93957338034513],["v8::internal::interpreter::Interpreter::Initialize()",93957338034768,93957338035063],["v8::internal::interpreter::InterpreterCompilationJob::~InterpreterCompilationJob()",93957338035920,93957338036204],["v8::internal::interpreter::Interpreter::~Interpreter()",93957338036512,93957338036560],["void std::__1::__function::__policy_invoker<void (v8::internal::interpreter::Bytecode, v8::internal::interpreter::OperandScale)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::interpreter::Interpreter::Initialize()::$_0, void (v8::internal::interpreter::Bytecode, v8::internal::interpreter::OperandScale)> >(std::__1::__function::__policy_storage const*, v8::internal::interpreter::Bytecode, v8::internal::interpreter::OperandScale)",93957338036624,93957338036826],["v8::internal::JsonParseInternalizer::Internalize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338036976,93957338037177],["v8::internal::JsonParser<unsigned char>::UpdatePointersCallback(v8::Isolate*, v8::GCType, v8::GCCallbackFlags, void*)",93957338037776,93957338037834],["v8::internal::JsonParser<unsigned char>::ParseJsonValue()",93957338037920,93957338041916],["v8::internal::JsonParser<unsigned char>::ScanJsonString(bool)",93957338042352,93957338042753],["v8::internal::JsonParser<unsigned char>::ScanJsonPropertyKey(v8::internal::JsonParser<unsigned char>::JsonContinuation*)",93957338043024,93957338043429],["v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<unsigned char>::DecodeString<v8::internal::SeqOneByteString>(v8::internal::JsonString const&, v8::internal::Handle<v8::internal::SeqOneByteString>, v8::internal::Handle<v8::internal::String>)",93957338043840,93957338044100],["v8::internal::JsonParser<unsigned char>::ParseJsonNumber()",93957338044384,93957338045311],["v8::internal::JsonParser<unsigned char>::JsonContinuation::operator=(v8::internal::JsonParser<unsigned char>::JsonContinuation&&)",93957338045648,93957338045766],["v8::internal::Stats_Runtime_TransitionElementsKindWithKind(int, unsigned long*, v8::internal::Isolate*)",93957339930960,93957339931586],["v8::internal::Runtime_AtomicsCompareExchange(int, unsigned long*, v8::internal::Isolate*)",93957339948192,93957339948229],["v8::internal::Runtime_BigIntCompareToBigInt(int, unsigned long*, v8::internal::Isolate*)",93957339950688,93957339950909],["v8::internal::Runtime_BigIntEqualToNumber(int, unsigned long*, v8::internal::Isolate*)",93957339954208,93957339954334],["v8::internal::Runtime_BigIntToNumber(int, unsigned long*, v8::internal::Isolate*)",93957339956544,93957339956733],["v8::internal::Runtime_BigIntBinaryOp(int, unsigned long*, v8::internal::Isolate*)",93957339958016,93957339958467],["v8::internal::Runtime_ThrowUnsupportedSuperError(int, unsigned long*, v8::internal::Isolate*)",93957339960416,93957339960571],["v8::internal::Runtime_ThrowStaticPrototypeError(int, unsigned long*, v8::internal::Isolate*)",93957339962464,93957339962619],["v8::internal::Stats_Runtime_ThrowSuperAlreadyCalledError(int, unsigned long*, v8::internal::Isolate*)",93957339963312,93957339963836],["v8::internal::Stats_Runtime_ThrowSuperNotCalled(int, unsigned long*, v8::internal::Isolate*)",93957339964000,93957339964524],["v8::internal::Stats_Runtime_ThrowNotSuperConstructor(int, unsigned long*, v8::internal::Isolate*)",93957339965376,93957339966594],["v8::internal::Stats_Runtime_DefineClass(int, unsigned long*, v8::internal::Isolate*)",93957339969216,93957339972240],["v8::internal::Stats_Runtime_LoadFromSuper(int, unsigned long*, v8::internal::Isolate*)",93957339972800,93957339973730],["v8::internal::Stats_Runtime_LoadKeyedFromSuper(int, unsigned long*, v8::internal::Isolate*)",93957339974080,93957339974790],["v8::internal::Stats_Runtime_StoreToSuper(int, unsigned long*, v8::internal::Isolate*)",93957339975376,93957339976326],["v8::internal::Stats_Runtime_StoreKeyedToSuper(int, unsigned long*, v8::internal::Isolate*)",93957339976688,93957339977415],["v8::internal::Stats_Runtime_CompileForOnStackReplacement(int, unsigned long*, v8::internal::Isolate*)",93957340007792,93957340010288],["v8::internal::Runtime_GetGeneratorScopeCount(int, unsigned long*, v8::internal::Isolate*)",93957340024736,93957340025098],["v8::internal::Runtime_DebugPushPromise(int, unsigned long*, v8::internal::Isolate*)",93957340043184,93957340043381],["v8::internal::Runtime_DebugAsyncFunctionResumed(int, unsigned long*, v8::internal::Isolate*)",93957340054224,93957340054421],["v8::internal::Stats_Runtime_ForInHasProperty(int, unsigned long*, v8::internal::Isolate*)",93957340060224,93957340060867],["v8::internal::Runtime_FunctionGetScriptSourcePosition(int, unsigned long*, v8::internal::Isolate*)",93957340064736,93957340064858],["v8::internal::Runtime_AtomicsNumWaitersForTesting(int, unsigned long*, v8::internal::Isolate*)",93957340068880,93957340069474],["v8::internal::Runtime_AsyncFunctionAwaitCaught(int, unsigned long*, v8::internal::Isolate*)",93957340073296,93957340073333],["v8::internal::Runtime_AsyncFunctionReject(int, unsigned long*, v8::internal::Isolate*)",93957340074544,93957340074581],["v8::internal::Runtime_CreateJSGeneratorObject(int, unsigned long*, v8::internal::Isolate*)",93957340075376,93957340076318],["v8::internal::Runtime_GeneratorGetFunction(int, unsigned long*, v8::internal::Isolate*)",93957340078064,93957340078198],["v8::internal::Runtime_AsyncGeneratorAwaitUncaught(int, unsigned long*, v8::internal::Isolate*)",93957340079200,93957340079237],["v8::internal::Runtime_AsyncGeneratorReject(int, unsigned long*, v8::internal::Isolate*)",93957340080032,93957340080069],["v8::internal::Runtime_GeneratorGetResumeMode(int, unsigned long*, v8::internal::Isolate*)",93957340080864,93957340080901],["v8::internal::Runtime_AccessCheck(int, unsigned long*, v8::internal::Isolate*)",93957340082176,93957340082517],["v8::internal::Runtime_FatalProcessOutOfMemoryInvalidArrayLength(int, unsigned long*, v8::internal::Isolate*)",93957340083696,93957340083748],["v8::internal::Stats_Runtime_Throw(int, unsigned long*, v8::internal::Isolate*)",93957340084288,93957340084814],["v8::internal::Stats_Runtime_ReThrow(int, unsigned long*, v8::internal::Isolate*)",93957340084960,93957340085484],["v8::internal::Stats_Runtime_ThrowStackOverflow(int, unsigned long*, v8::internal::Isolate*)",93957340085520,93957340085954],["v8::internal::Stats_Runtime_ThrowSymbolAsyncIteratorInvalid(int, unsigned long*, v8::internal::Isolate*)",93957340086128,93957340086652],["v8::internal::Stats_Runtime_ThrowRangeError(int, unsigned long*, v8::internal::Isolate*)",93957340086944,93957340087653],["v8::internal::Stats_Runtime_ThrowTypeError(int, unsigned long*, v8::internal::Isolate*)",93957340087904,93957340088543],["v8::internal::Stats_Runtime_ThrowTypeErrorIfStrict(int, unsigned long*, v8::internal::Isolate*)",93957340088848,93957340089522],["v8::internal::Stats_Runtime_ThrowInvalidTypedArrayAlignment(int, unsigned long*, v8::internal::Isolate*)",93957340090096,93957340090999],["v8::internal::Stats_Runtime_UnwindAndFindExceptionHandler(int, unsigned long*, v8::internal::Isolate*)",93957340091040,93957340091474],["v8::internal::Stats_Runtime_PromoteScheduledException(int, unsigned long*, v8::internal::Isolate*)",93957340091520,93957340091954],["v8::internal::Stats_Runtime_ThrowReferenceError(int, unsigned long*, v8::internal::Isolate*)",93957340092128,93957340092675],["v8::internal::Stats_Runtime_ThrowAccessedUninitializedVariable(int, unsigned long*, v8::internal::Isolate*)",93957340092848,93957340093395],["v8::internal::Stats_Runtime_NewError(int, unsigned long*, v8::internal::Isolate*)",93957340093696,93957340094345],["v8::internal::Stats_Runtime_NewTypeError(int, unsigned long*, v8::internal::Isolate*)",93957340094688,93957340095400],["v8::internal::Stats_Runtime_NewReferenceError(int, unsigned long*, v8::internal::Isolate*)",93957340095696,93957340096345],["v8::internal::Stats_Runtime_NewSyntaxError(int, unsigned long*, v8::internal::Isolate*)",93957340096640,93957340097289],["v8::internal::Stats_Runtime_AddDictionaryProperty(int, unsigned long*, v8::internal::Isolate*)",93957340174656,93957340175330],["v8::internal::Runtime_SetOwnPropertyIgnoreAttributes(int, unsigned long*, v8::internal::Isolate*)",93957340226096,93957340226414],["v8::internal::Runtime_LessThan(int, unsigned long*, v8::internal::Isolate*)",93957340248192,93957340248375],["v8::internal::Runtime_PromiseHookBefore(int, unsigned long*, v8::internal::Isolate*)",93957340262512,93957340262784],["v8::internal::Stats_Runtime_CheckProxyGetSetTrapResult(int, unsigned long*, v8::internal::Isolate*)",93957340273248,93957340274044],["v8::internal::Runtime_RegExpExperimentalOneshotExec(int, unsigned long*, v8::internal::Isolate*)",93957340290752,93957340291398],["v8::internal::Runtime_IsRegExp(int, unsigned long*, v8::internal::Isolate*)",93957340336720,93957340336821],["v8::internal::(anonymous namespace)::VectorBackedMatch::GetPrefix()",93957340340128,93957340340164],["v8::internal::Runtime_DeclareGlobals(int, unsigned long*, v8::internal::Isolate*)",93957340345200,93957340347033],["v8::internal::Runtime_NewStrictArguments(int, unsigned long*, v8::internal::Isolate*)",93957340355392,93957340356103],["v8::internal::Runtime_NewFunctionContext(int, unsigned long*, v8::internal::Isolate*)",93957340361424,93957340361714],["v8::internal::Runtime_DeleteLookupSlot(int, unsigned long*, v8::internal::Isolate*)",93957340365488,93957340365973],["v8::internal::Runtime_StoreLookupSlot_Sloppy(int, unsigned long*, v8::internal::Isolate*)",93957340369280,93957340369610],["v8::internal::(anonymous namespace)::DeclareGlobal(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSGlobalObject>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, bool, v8::internal::(anonymous namespace)::RedeclarationType)",93957340374112,93957340374855],["v8::internal::Runtime_StringReplaceOneCharWithString(int, unsigned long*, v8::internal::Isolate*)",93957340380912,93957340381395],["v8::internal::Runtime_InternalizeString(int, unsigned long*, v8::internal::Isolate*)",93957340385536,93957340385759],["v8::internal::Runtime_StringToArray(int, unsigned long*, v8::internal::Isolate*)",93957340390208,93957340391791],["v8::internal::Runtime_StringLessThanOrEqual(int, unsigned long*, v8::internal::Isolate*)",93957340394816,93957340395090],["v8::internal::Runtime_StringGreaterThanOrEqual(int, unsigned long*, v8::internal::Isolate*)",93957340396768,93957340397042],["v8::internal::Runtime_FlattenString(int, unsigned long*, v8::internal::Isolate*)",93957340398880,93957340399071],["v8::internal::Runtime_StringEscapeQuotes(int, unsigned long*, v8::internal::Isolate*)",93957340400112,93957340401284],["v8::internal::Stats_Runtime_CreatePrivateSymbol(int, unsigned long*, v8::internal::Isolate*)",93957340403296,93957340404069],["v8::internal::Stats_Runtime_CreatePrivateNameSymbol(int, unsigned long*, v8::internal::Isolate*)",93957340405088,93957340405675],["v8::internal::Stats_Runtime_SymbolIsPrivate(int, unsigned long*, v8::internal::Isolate*)",93957340408192,93957340408734],["v8::internal::Stats_Runtime_ConstructDouble(int, unsigned long*, v8::internal::Isolate*)",93957340410288,93957340411544],["v8::internal::Stats_Runtime_ConstructSlicedString(int, unsigned long*, v8::internal::Isolate*)",93957340413088,93957340413876],["v8::internal::Stats_Runtime_DeoptimizeNow(int, unsigned long*, v8::internal::Isolate*)",93957340415168,93957340415993],["v8::internal::Stats_Runtime_RuntimeEvaluateREPL(int, unsigned long*, v8::internal::Isolate*)",93957340416704,93957340417309],["v8::internal::Stats_Runtime_IsConcurrentRecompilationSupported(int, unsigned long*, v8::internal::Isolate*)",93957340417872,93957340418334],["v8::internal::Stats_Runtime_IsTopTierTurboprop(int, unsigned long*, v8::internal::Isolate*)",93957340418896,93957340419360],["v8::internal::Stats_Runtime_CompileBaseline(int, unsigned long*, v8::internal::Isolate*)",93957340420384,93957340421217],["v8::internal::Stats_Runtime_TierupFunctionOnNextCall(int, unsigned long*, v8::internal::Isolate*)",93957340422128,93957340422678],["v8::internal::Runtime_PrepareFunctionForOptimization(int, unsigned long*, v8::internal::Isolate*)",93957340423504,93957340424094],["v8::internal::Runtime_OptimizeOsr(int, unsigned long*, v8::internal::Isolate*)",93957340425104,93957340426146],["v8::internal::Runtime_NeverOptimizeFunction(int, unsigned long*, v8::internal::Isolate*)",93957340427760,93957340428272],["v8::internal::Runtime_GetOptimizationStatus(int, unsigned long*, v8::internal::Isolate*)",93957340429168,93957340430844],["v8::internal::Runtime_UnblockConcurrentRecompilation(int, unsigned long*, v8::internal::Isolate*)",93957340432944,93957340433065],["v8::internal::Runtime_GetUndetectable(int, unsigned long*, v8::internal::Isolate*)",93957340433584,93957340433790],["v8::internal::Runtime_GetCallable(int, unsigned long*, v8::internal::Isolate*)",93957340434368,93957340434641],["v8::internal::Runtime_ClearFunctionFeedback(int, unsigned long*, v8::internal::Isolate*)",93957340435328,93957340435544],["v8::internal::Runtime_NotifyContextDisposed(int, unsigned long*, v8::internal::Isolate*)",93957340436160,93957340436303],["v8::internal::Runtime_SetAllocationTimeout(int, unsigned long*, v8::internal::Isolate*)",93957340436816,93957340436848],["v8::internal::Runtime_SimulateNewspaceFull(int, unsigned long*, v8::internal::Isolate*)",93957340437312,93957340437741],["v8::internal::Runtime_ScheduleGCInStackCheck(int, unsigned long*, v8::internal::Isolate*)",93957340438560,93957340438627],["v8::internal::Runtime_DebugPrint(int, unsigned long*, v8::internal::Isolate*)",93957340439088,93957340439142],["v8::internal::Runtime_DebugPrintPtr(int, unsigned long*, v8::internal::Isolate*)",93957340439600,93957340440074],["v8::internal::Runtime_PrintWithNameForAssert(int, unsigned long*, v8::internal::Isolate*)",93957340440928,93957340441453],["v8::internal::Runtime_DebugTrace(int, unsigned long*, v8::internal::Isolate*)",93957340442432,93957340442505],["v8::internal::Runtime_DebugTrackRetainingPath(int, unsigned long*, v8::internal::Isolate*)",93957340442976,93957340443438],["v8::internal::Runtime_GlobalPrint(int, unsigned long*, v8::internal::Isolate*)",93957340444304,93957340444735],["v8::internal::Runtime_SystemBreak(int, unsigned long*, v8::internal::Isolate*)",93957340445600,93957340445731],["v8::internal::Runtime_SetForceSlowPath(int, unsigned long*, v8::internal::Isolate*)",93957340446256,93957340446303],["v8::internal::Runtime_Abort(int, unsigned long*, v8::internal::Isolate*)",93957340446800,93957340446919],["v8::internal::Runtime_AbortJS(int, unsigned long*, v8::internal::Isolate*)",93957340447392,93957340447748],["v8::internal::Runtime_AbortCSAAssert(int, unsigned long*, v8::internal::Isolate*)",93957340448496,93957340448684],["v8::internal::Runtime_DisassembleFunction(int, unsigned long*, v8::internal::Isolate*)",93957340449216,93957340449259],["v8::internal::Runtime_TraceEnter(int, unsigned long*, v8::internal::Isolate*)",93957340449728,93957340450015],["v8::internal::Runtime_TraceExit(int, unsigned long*, v8::internal::Isolate*)",93957340450736,93957340451029],["v8::internal::Runtime_HaveSameMap(int, unsigned long*, v8::internal::Isolate*)",93957340451792,93957340451964],["v8::internal::Runtime_InLargeObjectSpace(int, unsigned long*, v8::internal::Isolate*)",93957340452592,93957340452767],["v8::internal::Runtime_HasElementsInALargeObjectSpace(int, unsigned long*, v8::internal::Isolate*)",93957340453360,93957340453556],["v8::internal::Runtime_InYoungGeneration(int, unsigned long*, v8::internal::Isolate*)",93957340454176,93957340454258],["v8::internal::Runtime_DisallowCodegenFromStrings(int, unsigned long*, v8::internal::Isolate*)",93957340454832,93957340454974],["v8::internal::Runtime_RegexpHasBytecode(int, unsigned long*, v8::internal::Isolate*)",93957340455536,93957340455851],["v8::internal::SnapshotByteSource::GetInt()",93957340528480,93957340528561],["int v8::internal::Deserializer::ReadSingleBytecodeData<v8::internal::SlotAccessorForHandle>(unsigned char, v8::internal::SlotAccessorForHandle)",93957340528672,93957340529488],["v8::internal::Deserializer::ReadMetaMap()",93957340529616,93957340529946],["v8::internal::Deserializer::RelocInfoVisitor::VisitExternalReference(v8::internal::Code, v8::internal::RelocInfo*)",93957340530144,93957340530404],["void std::__1::vector<v8::internal::Deserializer::UnresolvedForwardRef, std::__1::allocator<v8::internal::Deserializer::UnresolvedForwardRef> >::emplace_back<v8::internal::Handle<v8::internal::HeapObject>, int, v8::internal::HeapObjectReferenceType&>(v8::internal::Handle<v8::internal::HeapObject>&&, int&&, v8::internal::HeapObjectReferenceType&)",93957340534976,93957340535022],["v8::internal::EmbeddedData::InstructionEndOfBytecodeHandlers() const",93957340539808,93957340539836],["v8::internal::ReadOnlySerializer::SerializeReadOnlyRoots()",93957340542416,93957340542542],["v8::internal::RootsSerializer::RootsSerializer(v8::internal::Isolate*, v8::base::Flags<v8::internal::Snapshot::SerializerFlag, int>, v8::internal::RootIndex)",93957340542768,93957340543066],["v8::internal::RootsSerializer::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957340543200,93957340543386],["v8::internal::RootsSerializer::~RootsSerializer()",93957340543456,93957340543525],["v8::internal::SnapshotData::Payload() const",93957340561392,93957340561409],["v8::internal::ReplacementStringBuilder::ToString()",93957340577552,93957340578061],["v8::internal::StringStream::PrintMentionedObjectCache(v8::internal::Isolate*)",93957340585504,93957340586008],["v8::internal::Uri::Escape(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957340593968,93957340595040],["v8::internal::CancelableTaskManager::TryAbortAll()",93957340602000,93957340602237],["v8::internal::OperationsBarrier::CancelAndWait()",93957340603072,93957340603134],["non-virtual thunk to v8::internal::(anonymous namespace)::CancelableFuncTask::~CancelableFuncTask()",93957340603936,93957340604000],["v8::internal::tracing::CallStatsScopedTracer::AddEndTraceEvent()",93957340604416,93957340604784],["v8::tracing::TracedValue::SetDouble(char const*, double)",93957340605312,93957340605505],["v8::tracing::TracedValue::BeginArray(char const*)",93957340606112,93957340606227],["v8::tracing::TracedValue::EndDictionary()",93957340606576,93957340606610],["v8::tracing::TracingCategoryObserver::TearDown()",93957340606832,93957340606890],["v8::internal::trap_handler::RegisterHandlerData(unsigned long, unsigned long, unsigned long, v8::internal::trap_handler::ProtectedInstructionData const*)",93957340607648,93957340608134],["v8::internal::trap_handler::EnableTrapHandler(bool)",93957340608304,93957340608354],["v8::internal::RootIndexMap::Lookup(unsigned long, v8::internal::RootIndex*) const",93957340608864,93957340608973],["v8::internal::AllocWithRetry(unsigned long)",93957340609168,93957340609286],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::captureStackTrace(bool)::$_9, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342551296,93957342551326],["v8_inspector::V8HeapProfilerAgentImpl::stopTrackingHeapObjectsInternal()",93957342554320,93957342554500],["v8_inspector::V8HeapProfilerAgentImpl::addInspectedHeapObject(v8_inspector::String16 const&)",93957342556224,93957342556688],["v8_inspector::V8HeapProfilerAgentImpl::stopSampling(std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::SamplingHeapProfile, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::SamplingHeapProfile> >*)",93957342557520,93957342557633],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8_crdtp::UberDispatcher::Dispatch(v8_crdtp::Dispatchable const&) const::$_1, void ()> >(std::__1::__function::__policy_storage const*)",93957342764432,93957342765135],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleNull()",93957342783936,93957342784044],["v8_crdtp::DeserializerState::DeserializerState(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >)",93957342798304,93957342798476],["v8_crdtp::ProtocolTypeTraits<bool, void>::Serialize(bool, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342800016,93957342800270],["v8_crdtp::ObjectSerializer::~ObjectSerializer()",93957342800976,93957342801003],["v8_crdtp::DeferredMessage::FromSpan(v8_crdtp::span<unsigned char>)",93957342801248,93957342801301],["v8_crdtp::IncomingDeferredMessage::~IncomingDeferredMessage()",93957342802160,93957342802233],["v8_crdtp::Serializable::From(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >)",93957342802464,93957342802624],["v8_crdtp::(anonymous namespace)::PreSerialized::~PreSerialized()",93957342802704,93957342802755],["v8_crdtp::SpanEquals(v8_crdtp::span<char>, v8_crdtp::span<char>)",93957342802848,93957342802893],["v8_crdtp::Status::ToASCIIString() const",93957342805248,93957342805496],["v8_crdtp::json::platform::DToStr(double)",93957342805568,93957342805862],["v8::internal::compiler::VirtualRegisterData::AddDeferredSpillOutput(v8::internal::compiler::AllocatedOperand, int, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343010208,93957343010746],["v8::internal::compiler::SinglePassRegisterAllocator::AllocateOutput(v8::internal::compiler::UnallocatedOperand*, v8::internal::compiler::VirtualRegisterData&, int, v8::internal::compiler::SinglePassRegisterAllocator::UsePosition)",93957343023296,93957343024963],["v8::internal::compiler::AllocateRegisters(v8::internal::compiler::MidTierRegisterAllocationData*)",93957343038208,93957343038494],["void std::__1::vector<v8::internal::compiler::BlockState, v8::internal::ZoneAllocator<v8::internal::compiler::BlockState> >::__emplace_back_slow_path<int&, v8::internal::Zone*>(int&, v8::internal::Zone*&&)",93957343043840,93957343044396],["v8::internal::compiler::MoveOptimizer::CompressGaps(v8::internal::compiler::Instruction*)",93957343047952,93957343048430],["v8::internal::compiler::(anonymous namespace)::OperandSet::ContainsOpOrAlias(v8::internal::compiler::InstructionOperand const&) const",93957343057360,93957343057659],["void std::__1::__sort<bool (*&)(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*), v8::internal::compiler::MoveOperands**>(v8::internal::compiler::MoveOperands**, v8::internal::compiler::MoveOperands**, bool (*&)(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*))",93957343066496,93957343068152],["v8::internal::compiler::RegisterAllocatorVerifier::RegisterAllocatorVerifier(v8::internal::Zone*, v8::internal::RegisterConfiguration const*, v8::internal::compiler::InstructionSequence const*, v8::internal::compiler::Frame const*)",93957343069632,93957343071015],["v8::internal::compiler::RegisterAllocatorVerifier::CheckConstraint(v8::internal::compiler::InstructionOperand const*, v8::internal::compiler::RegisterAllocatorVerifier::OperandConstraint const*)",93957343072608,93957343073257],["v8::internal::compiler::BlockAssessments::PerformParallelMoves(v8::internal::compiler::ParallelMove const*)",93957343073312,93957343074576],["v8::internal::compiler::RegisterAllocatorVerifier::CreateForBlock(v8::internal::compiler::InstructionBlock const*)",93957343075200,93957343076930],["v8::internal::compiler::BlockAssessments::CopyFrom(v8::internal::compiler::BlockAssessments const*)",93957343077200,93957343077661],["v8::internal::compiler::RegisterAllocatorVerifier::ValidatePendingAssessment(v8::internal::compiler::RpoNumber, v8::internal::compiler::InstructionOperand, v8::internal::compiler::BlockAssessments const*, v8::internal::compiler::PendingAssessment*, int)",93957343078000,93957343081750],["v8::internal::compiler::BlockAssessments::AddDefinition(v8::internal::compiler::InstructionOperand, int)",93957343085792,93957343086255],["std::__1::__tree_node_base<void*>*& std::__1::__tree<v8::internal::compiler::InstructionOperand, v8::internal::compiler::OperandAsKeyLess, v8::internal::ZoneAllocator<v8::internal::compiler::InstructionOperand> >::__find_equal<v8::internal::compiler::InstructionOperand>(std::__1::__tree_end_node<std::__1::__tree_node_base<void*>*>*&, v8::internal::compiler::InstructionOperand const&)",93957343086992,93957343087325],["std::__1::deque<v8::internal::compiler::GraphReducer::NodeState, v8::internal::RecyclingZoneAllocator<v8::internal::compiler::GraphReducer::NodeState> >::__add_back_capacity()",93957343087728,93957343088479],["v8::internal::compiler::BytecodeGraphBuilder::VisitMov()",93957343227568,93957343227711],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallProperty2()",93957343238064,93957343238305],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestUndefined()",93957343246512,93957343246677],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateBlockContext()",93957343250992,93957343251205],["v8::internal::compiler::BytecodeGraphBuilder::VisitJumpIfToBooleanFalse()",93957343253328,93957343253449],["v8::internal::compiler::BytecodeGraphBuilder::VisitThrow()",93957343255984,93957343256858],["v8::internal::compiler::BytecodeGraphBuilder::VisitSuspendGenerator()",93957343260560,93957343261447],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar13()",93957343264080,93957343264148],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar7()",93957343264560,93957343264628],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar3()",93957343264880,93957343264948],["v8::internal::compiler::BytecodeGraphBuilder::BuildLdaLookupSlot(v8::internal::TypeofMode)",93957343265184,93957343265495],["v8::internal::compiler::BytecodeGraphBuilder::CheckContextExtensionsSlowPath(unsigned int)",93957343266592,93957343267140],["v8::internal::compiler::BytecodeGraphBuilder::BuildCreateArguments(v8::internal::CreateArgumentsType)",93957343269184,93957343269352],["v8::internal::compiler::BytecodeGraphBuilder::BuildUnaryOp(v8::internal::compiler::Operator const*)",93957343272608,93957343272993],["v8::internal::compiler::BytecodeGraphBuilder::BuildJump()",93957343274256,93957343274426],["v8::internal::compiler::BytecodeGraphBuilder::MergeIntoSuccessorEnvironment(int)",93957343276304,93957343276754],["v8::internal::compiler::BytecodeGraphBuilder::BuildLoopExitsUntilLoop(int, v8::internal::compiler::BytecodeLivenessState const*)",93957343279216,93957343279631],["v8::internal::compiler::BytecodeGraphBuilder::BuildJumpIfNot(v8::internal::compiler::Node*)",93957343280128,93957343280609],["v8::internal::compiler::BuildGraphFromBytecode(v8::internal::compiler::JSHeapBroker*, v8::internal::Zone*, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::FeedbackCellRef const&, v8::internal::BytecodeOffset, v8::internal::compiler::JSGraph*, v8::internal::compiler::CallFrequency const&, v8::internal::compiler::SourcePositionTable*, int, v8::internal::CodeKind, v8::base::Flags<v8::internal::compiler::BytecodeGraphBuilderFlag, int>, v8::internal::TickCounter*, v8::internal::compiler::ObserveNodeInfo const&)",93957343281344,93957343281517],["std::__1::deque<v8::internal::compiler::BytecodeGraphBuilder::OsrIteratorState::IteratorsStates, v8::internal::RecyclingZoneAllocator<v8::internal::compiler::BytecodeGraphBuilder::OsrIteratorState::IteratorsStates> >::__add_back_capacity()",93957343281760,93957343282495],["v8::internal::compiler::IrOpcode::IsFeedbackCollectingOpcode(v8::internal::compiler::IrOpcode::Value)",93957343282736,93957343282774],["std::__1::__tree<std::__1::__value_type<int, v8::internal::compiler::LoopInfo>, std::__1::__map_value_compare<int, std::__1::__value_type<int, v8::internal::compiler::LoopInfo>, std::__1::less<int>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<int, v8::internal::compiler::LoopInfo> > >::destroy(std::__1::__tree_node<std::__1::__value_type<int, v8::internal::compiler::LoopInfo>, void*>*)",93957343283120,93957343283176],["v8::internal::compiler::BytecodeLivenessMap::BytecodeLivenessMap(int, v8::internal::Zone*)",93957343283712,93957343283911],["v8::internal::compiler::BytecodeLivenessMap::GetLiveness(int)",93957343284176,93957343284268],["v8::internal::compiler::Linkage::GetSimplifiedCDescriptor(v8::internal::Zone*, v8::internal::Signature<v8::internal::MachineType> const*, v8::base::Flags<v8::internal::compiler::CallDescriptor::Flag, int>)",93957343284656,93957343285272],["v8::internal::compiler::CheckpointElimination::ReduceCheckpoint(v8::internal::compiler::Node*)",93957343285312,93957343285858],["v8::internal::compiler::CheckpointElimination::reducer_name() const",93957343285904,93957343285917],["std::__1::__hash_table<std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, std::__1::__unordered_map_hasher<long, std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, v8::base::hash<long>, std::__1::equal_to<long>, true>, std::__1::__unordered_map_equal<long, std::__1::__hash_value_type<long, v8::internal::compiler::Node*>, std::__1::equal_to<long>, v8::base::hash<long>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<long, v8::internal::compiler::Node*> > >::rehash(unsigned long)",93957343286688,93957343287059],["std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<int, char>, v8::internal::compiler::Node*>, std::__1::__unordered_map_hasher<std::__1::pair<int, char>, std::__1::__hash_value_type<std::__1::pair<int, char>, v8::internal::compiler::Node*>, v8::base::hash<std::__1::pair<int, char> >, std::__1::equal_to<std::__1::pair<int, char> >, true>, std::__1::__unordered_map_equal<std::__1::pair<int, char>, std::__1::__hash_value_type<std::__1::pair<int, char>, v8::internal::compiler::Node*>, std::__1::equal_to<std::__1::pair<int, char> >, v8::base::hash<std::__1::pair<int, char> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<std::__1::pair<int, char>, v8::internal::compiler::Node*> > >::rehash(unsigned long)",93957343287792,93957343288163],["std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, std::__1::__unordered_map_hasher<std::__1::pair<long, char>, std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, v8::base::hash<std::__1::pair<long, char> >, std::__1::equal_to<std::__1::pair<long, char> >, true>, std::__1::__unordered_map_equal<std::__1::pair<long, char>, std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, std::__1::equal_to<std::__1::pair<long, char> >, v8::base::hash<std::__1::pair<long, char> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*> > >::rehash(unsigned long)",93957343288928,93957343289299],["v8::internal::compiler::CommonNodeCache::FindExternalConstant(v8::internal::ExternalReference)",93957343290064,93957343290121],["v8::internal::compiler::CommonNodeCache::GetCachedNodes(v8::internal::ZoneVector<v8::internal::compiler::Node*>*)",93957343290192,93957343291783],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::EarlyGraphTrimmingPhase>()",93957344643936,93957344644321],["v8::internal::compiler::(anonymous namespace)::TraceSequence(v8::internal::OptimizedCompilationInfo*, v8::internal::compiler::PipelineData*, char const*)",93957344674816,93957344675719],["v8::internal::compiler::GraphBuilderPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344686656,93957344686933],["v8::internal::compiler::EarlyOptimizationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344701376,93957344703082],["v8::internal::compiler::HasOnlyStringMaps(v8::internal::compiler::JSHeapBroker*, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > const&)",93957344711376,93957344711517],["v8::internal::compiler::PropertyAccessBuilder::BuildLoadDataField(v8::internal::compiler::NameRef const&, v8::internal::compiler::Node*, v8::internal::compiler::FieldAccess&, bool, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957344714400,93957344715487],["v8::internal::compiler::RedundancyElimination::ReduceSpeculativeNumberOperation(v8::internal::compiler::Node*)",93957344718064,93957344718660],["v8::internal::compiler::RefsMap::LookupOrInsert(unsigned long const&)",93957344721312,93957344721518],["v8::internal::compiler::RepresentationChanger::RepresentationChanger(v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*)",93957344722432,93957344722484],["v8::internal::compiler::RepresentationChanger::GetTaggedSignedRepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::compiler::Node*, v8::internal::compiler::UseInfo)",93957344723792,93957344725046],["v8::internal::compiler::RepresentationChanger::GetFloat64RepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::compiler::Node*, v8::internal::compiler::UseInfo)",93957344728080,93957344729365],["v8::internal::compiler::RepresentationChanger::InsertTruncateInt64ToInt32(v8::internal::compiler::Node*)",93957344734464,93957344734530],["v8::internal::compiler::RepresentationChanger::InsertChangeFloat32ToFloat64(v8::internal::compiler::Node*)",93957344734784,93957344734850],["v8::internal::compiler::Truncation::IsUsedAsWord32() const",93957344735488,93957344735521],["v8::internal::compiler::RepresentationChanger::Int64OperatorFor(v8::internal::compiler::IrOpcode::Value)",93957344735952,93957344736026],["v8::internal::compiler::RepresentationChanger::Float64OperatorFor(v8::internal::compiler::IrOpcode::Value)",93957344736368,93957344736958],["v8::internal::compiler::BasicBlock::set_control(v8::internal::compiler::BasicBlock::Control)",93957344737744,93957344737753],["v8::internal::compiler::BasicBlock::set_loop_depth(int)",93957344737808,93957344737817],["v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*)",93957344737840,93957344737850],["v8::internal::compiler::BasicBlock::ResetRPOInfo()",93957344737872,93957344737910],["v8::internal::compiler::Schedule::Schedule(v8::internal::Zone*, unsigned long)",93957344737968,93957344738604],["v8::internal::compiler::Schedule::block(v8::internal::compiler::Node*) const",93957344739456,93957344739497],["v8::internal::compiler::Schedule::GetBlockById(v8::internal::compiler::BasicBlock::Id)",93957344739552,93957344739566],["v8::internal::compiler::Schedule::SetBlockForNode(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344740064,93957344740175],["v8::internal::compiler::Schedule::AddGoto(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344741312,93957344741356],["v8::internal::compiler::Schedule::AddCall(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*, v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344742688,93957344742887],["v8::internal::compiler::Schedule::AddSwitch(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*, v8::internal::compiler::BasicBlock**, unsigned long)",93957344743104,93957344743342],["v8::internal::compiler::Schedule::AddReturn(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344743552,93957344743755],["v8::internal::compiler::Schedule::AddThrow(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344743968,93957344744171],["v8::internal::compiler::Schedule::MoveSuccessors(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344744576,93957344745438],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Schedule const&)",93957344745872,93957344751502],["v8::internal::compiler::ScheduledMachineLowering::Run()",93957344751936,93957344752239],["v8::internal::compiler::TypedOptimization::ReduceSpeculativeNumberAdd(v8::internal::compiler::Node*)",93957345114432,93957345114998],["v8::internal::compiler::Typer::Visitor::TypeJSForInPrepare(v8::internal::compiler::Node*)",93957345144736,93957345144818],["v8::internal::compiler::ZoneStats::StatsScope::StatsScope(v8::internal::compiler::ZoneStats*)",93957345175856,93957345176536],["v8::internal::compiler::SimdScalarLowering::GetIndexNodes(v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::SimdScalarLowering::SimdType)",93957345218608,93957345218951],["v8::internal::compiler::SimdScalarLowering::LowerExtMul(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::SimdScalarLowering::SimdType, bool, bool)",93957345242400,93957345243050],["v8::internal::compiler::WasmGraphBuilder::TerminateLoop(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345249136,93957345249295],["v8::internal::compiler::WasmGraphBuilder::TrapIfTrue(v8::internal::wasm::TrapReason, v8::internal::compiler::Node*, int)",93957345250848,93957345251040],["v8::internal::compiler::WasmGraphBuilder::BuildI64DivU(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345256592,93957345256809],["v8::internal::compiler::WasmGraphBuilder::Unop(v8::internal::wasm::WasmOpcode, v8::internal::compiler::Node*, int)",93957345263040,93957345265067],["v8::internal::compiler::WasmGraphBuilder::BuildF32NearestInt(v8::internal::compiler::Node*)",93957345267488,93957345267532],["v8::internal::compiler::WasmGraphBuilder::BuildI64Popcnt(v8::internal::compiler::Node*)",93957345268048,93957345268258],["v8::internal::compiler::WasmGraphBuilder::Float64Constant(double)",93957345270832,93957345270846],["v8::internal::compiler::WasmGraphBuilder::IfDefault(v8::internal::compiler::Node*)",93957345271840,93957345271908],["v8::internal::compiler::WasmGraphBuilder::MemoryGrow(v8::internal::compiler::Node*)",93957345274160,93957345274920],["v8::internal::compiler::WasmGraphBuilder::GetExceptionTag(v8::internal::compiler::Node*)",93957345278144,93957345278637],["v8::internal::compiler::WasmGraphBuilder::Uint32ToUintptr(v8::internal::compiler::Node*)",93957345282880,93957345283077],["v8::internal::compiler::WasmGraphBuilder::BuildCallRef(unsigned int, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::compiler::WasmGraphBuilder::CheckForNull, v8::internal::compiler::WasmGraphBuilder::IsReturnCall, int)",93957345285728,93957345288257],["v8::internal::compiler::WasmGraphBuilder::ReturnCall(unsigned int, v8::internal::Vector<v8::internal::compiler::Node*>, int)",93957345288640,93957345288817],["v8::internal::compiler::WasmGraphBuilder::PrepareInstanceCacheForLoop(v8::internal::compiler::WasmInstanceCacheNodes*, v8::internal::compiler::Node*)",93957345289520,93957345289757],["v8::internal::compiler::WasmGraphBuilder::CreateOrMergeIntoEffectPhi(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345290976,93957345291758],["v8::internal::compiler::WasmGraphBuilder::BuildCallToRuntimeWithContext(v8::internal::Runtime::FunctionId, v8::internal::compiler::Node*, v8::internal::compiler::Node**, int)",93957345292992,93957345293392],["v8::internal::compiler::WasmGraphBuilder::TableSet(unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345294656,93957345294865],["v8::internal::compiler::WasmGraphBuilder::TraceFunctionEntry(int)",93957345295840,93957345295934],["v8::internal::compiler::WasmGraphBuilder::LoadTransform(v8::internal::wasm::ValueType, v8::internal::MachineType, v8::internal::wasm::LoadTransformationKind, v8::internal::compiler::Node*, unsigned long, unsigned int, int)",93957345297024,93957345297776],["v8::internal::compiler::WasmGraphBuilder::BuildF64x2Ceil(v8::internal::compiler::Node*)",93957345299456,93957345299500],["v8::internal::compiler::WasmGraphBuilder::BuildF32x4Ceil(v8::internal::compiler::Node*)",93957345299648,93957345299692],["v8::internal::compiler::WasmGraphBuilder::GetI32AtomicWaitCallDescriptor()",93957345299840,93957345300073],["v8::internal::compiler::WasmGraphBuilder::S128Zero()",93957345301424,93957345301474],["v8::internal::compiler::WasmGraphBuilder::AtomicOp(v8::internal::wasm::WasmOpcode, v8::internal::compiler::Node* const*, unsigned int, unsigned long, int)",93957345306960,93957345308703],["v8::internal::compiler::WasmGraphBuilder::MemoryCopy(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345309376,93957345309617],["v8::internal::compiler::WasmGraphBuilder::TableCopy(unsigned int, unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345310416,93957345310754],["v8::internal::compiler::WasmGraphBuilder::StructNewWithRtt(unsigned int, v8::internal::wasm::StructType const*, v8::internal::compiler::Node*, v8::internal::Vector<v8::internal::compiler::Node*>)",93957345311728,93957345312019],["v8::internal::compiler::WasmGraphBuilder::RttCanon(unsigned int)",93957345313824,93957345314067],["v8::internal::compiler::WasmGraphBuilder::TypeCheck(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, bool, v8::internal::compiler::WasmGraphBuilder::Callbacks)",93957345314320,93957345315616],["v8::internal::compiler::WasmGraphBuilder::FuncCheck(v8::internal::compiler::Node*, bool, v8::internal::compiler::WasmGraphBuilder::Callbacks)",93957345316080,93957345316272],["v8::internal::compiler::WasmGraphBuilder::RefTest(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge)",93957345317344,93957345317767],["v8::internal::compiler::WasmGraphBuilder::BrOnCast(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345318208,93957345318396],["v8::internal::compiler::WasmGraphBuilder::RefAsData(v8::internal::compiler::Node*, bool, int)",93957345318816,93957345319215],["v8::internal::compiler::WasmGraphBuilder::RefIsFunc(v8::internal::compiler::Node*, bool)",93957345319408,93957345319816],["v8::internal::compiler::WasmGraphBuilder::BrOnFunc(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345320224,93957345320403],["v8::internal::compiler::WasmGraphBuilder::RefAsI31(v8::internal::compiler::Node*, int)",93957345320496,93957345320613],["v8::internal::compiler::WasmGraphBuilder::StructGet(v8::internal::compiler::Node*, v8::internal::wasm::StructType const*, unsigned int, v8::internal::compiler::WasmGraphBuilder::CheckForNull, bool, int)",93957345320944,93957345321519],["v8::internal::compiler::WasmGraphBuilder::ArrayGet(v8::internal::compiler::Node*, v8::internal::wasm::ArrayType const*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::CheckForNull, bool, int)",93957345321648,93957345322273],["v8::internal::compiler::WasmGraphBuilder::ArrayLen(v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::CheckForNull, int)",93957345322944,93957345323131],["v8::internal::compiler::WasmGraphBuilder::I31GetS(v8::internal::compiler::Node*)",93957345323184,93957345323260],["v8::internal::compiler::WasmGraphBuilder::AddBytecodePositionDecorator(v8::internal::compiler::NodeOriginTable*, v8::internal::wasm::Decoder*)",93957345323344,93957345323457],["v8::internal::compiler::BuildInlinedJSToWasmWrapper(v8::internal::Zone*, v8::internal::compiler::MachineGraph*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::WasmModule const*, v8::internal::Isolate*, v8::internal::compiler::SourcePositionTable*, v8::internal::StubCallMode, v8::internal::wasm::WasmFeatures, v8::internal::compiler::JSWasmCallData const*, v8::internal::compiler::Node*)",93957345323520,93957345324111],["v8::internal::compiler::NewJSToWasmCompilationJob(v8::internal::Isolate*, v8::internal::wasm::WasmEngine*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::WasmModule const*, bool, v8::internal::wasm::WasmFeatures const&)",93957345328640,93957345329766],["v8::internal::compiler::ResolveWasmImportCall(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures const&)",93957345329840,93957345331492],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::BuildWasmToJSWrapper(v8::internal::compiler::WasmImportCallKind, int)",93957345335616,93957345340487],["v8::internal::compiler::CompileWasmCapiCallWrapper(v8::internal::wasm::WasmEngine*, v8::internal::wasm::NativeModule*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, unsigned long)",93957345340528,93957345345364],["v8::internal::compiler::CompileJSToJSWrapper(v8::internal::Isolate*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::WasmModule const*)",93957345346608,93957345351133],["v8::internal::compiler::GetI32WasmCallDescriptorForSimd(v8::internal::Zone*, v8::internal::compiler::CallDescriptor*)",93957345356192,93957345356212],["v8::internal::compiler::(anonymous namespace)::ReplaceTypeInCallDescriptorWith(v8::internal::Zone*, v8::internal::compiler::CallDescriptor const*, unsigned long, v8::internal::MachineType, v8::internal::MachineRepresentation)",93957345356512,93957345358985],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::FromJS(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::wasm::ValueType, v8::internal::compiler::Node*)",93957345360800,93957345362777],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::BuildModifyThreadInWasmFlagHelper(v8::internal::compiler::Node*, bool)",93957345365664,93957345366479],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::BuildCheckValidRefValue(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::wasm::ValueType)",93957345367424,93957345367853],["v8::internal::compiler::(anonymous namespace)::WasmWrapperGraphBuilder::BuildReceiverNode(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345368272,93957345368901],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::TestCallbacks(v8::internal::compiler::GraphAssemblerLabel<1ul>*)::$_2, void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957345368992,93957345369058],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::CastCallbacks(v8::internal::compiler::GraphAssemblerLabel<0ul>*, int)::$_4, void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957345369152,93957345369174],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::CastCallbacks(v8::internal::compiler::GraphAssemblerLabel<0ul>*, int)::$_6, void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957345369216,93957345369243],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::BranchCallbacks(v8::base::SmallVector<v8::internal::compiler::Node*, 6ul>&, v8::base::SmallVector<v8::internal::compiler::Node*, 6ul>&, v8::base::SmallVector<v8::internal::compiler::Node*, 6ul>&, v8::base::SmallVector<v8::internal::compiler::Node*, 6ul>&)::$_9, void (v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957345369552,93957345369848],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::WasmGraphBuilder::Callbacks)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::WasmGraphBuilder::BrOnData(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::ObjectReferenceKnowledge, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**)::$_11, void (v8::internal::compiler::WasmGraphBuilder::Callbacks)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::WasmGraphBuilder::Callbacks&&)",93957345370432,93957345370950],["v8::internal::compiler::WasmDecorator::Decorate(v8::internal::compiler::Node*)",93957345371488,93957345371561],["void std::__1::__sort<std::__1::__less<signed char, signed char>&, signed char*>(signed char*, signed char*, std::__1::__less<signed char, signed char>&)",93957346612496,93957346613880],["void std::__1::__sort<std::__1::__less<unsigned char, unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, std::__1::__less<unsigned char, unsigned char>&)",93957346614672,93957346616056],["unsigned int std::__1::__sort5<std::__1::__less<short, short>&, short*>(short*, short*, short*, short*, short*, std::__1::__less<short, short>&)",93957346618400,93957346618717],["unsigned int std::__1::__sort5<std::__1::__less<int, int>&, int*>(int*, int*, int*, int*, int*, std::__1::__less<int, int>&)",93957346623216,93957346623477],["std::__1::__itoa::__u32toa(unsigned int, char*)",93957346628512,93957346629116],["std::__1::__throw_overflow_error(char const*)",93957346634304,93957346634379],["std::__1::ios_base::~ios_base()",93957346634720,93957346634836],["std::__1::ios_base::__set_badbit_and_consider_rethrow()",93957346635904,93957346635925],["std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf()",93957346636096,93957346636138],["std::__1::basic_streambuf<char, std::__1::char_traits<char> >::uflow()",93957346636432,93957346636481],["std::__1::basic_streambuf<wchar_t, std::__1::char_traits<wchar_t> >::basic_streambuf()",93957346636768,93957346636818],["std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()",93957346637280,93957346637294],["std::__1::basic_istream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_istream<char, std::__1::char_traits<char> >&, bool)",93957346637408,93957346637801],["virtual thunk to std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()",93957346638272,93957346638296],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()",93957346638448,93957346638583],["std::__1::DoIOSInit::DoIOSInit()",93957346650640,93957346651952],["__cxxabiv1::__enum_type_info::~__enum_type_info()",93957346655104,93957346655114],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_signed<long long>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, long long&) const",93957346658960,93957346660092],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_unsigned<unsigned long long>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, unsigned long long&) const",93957346663568,93957346664700],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_floating_point<long double>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, long double&) const",93957346667280,93957346668549],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, bool&) const",93957346670608,93957346671335],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, long long&) const",93957346673952,93957346673962],["std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, unsigned int&) const",93957346676608,93957346676618],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_unsigned<unsigned long>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, unsigned long&) const",93957346677952,93957346679256],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_unsigned<unsigned long long>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, unsigned long long&) const",93957346679280,93957346680584],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_floating_point<float>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, float&) const",93957346680608,93957346681881],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_floating_point<double>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, double&) const",93957346681904,93957346683177],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_floating_point<long double>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, long double&) const",93957346683200,93957346684483],["std::__1::__num_get<wchar_t>::__stage2_int_loop(wchar_t, int, char*, char*&, unsigned int&, wchar_t, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int*, unsigned int*&, wchar_t const*)",93957346685760,93957346686384],["std::__1::__num_get<char>::__stage2_float_loop(char, bool&, char&, char*, char*&, char, char, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int*, unsigned int*&, unsigned int&, char*)",93957346686864,93957346687728],["std::__1::__num_get<wchar_t>::__stage2_float_prep(std::__1::ios_base&, wchar_t*, wchar_t&, wchar_t&)",93957346688016,93957346688483],["__strtol_internal",139871563523200,139871563523216],["strtof32_l",139871563536176,139871563536186],["__libc_system",139871563558480,139871563558525],["l64a",139871563560016,139871563560086],["__strfmon_l",139871563565712,139871563565882],["__xpg_basename",139871563566192,139871563566357],["addseverity",139871563568464,139871563568650],["strtoumax",139871563568672,139871563568679],["_IO_printf",139871563615472,139871563615672],["flockfile",139871563620256,139871563620356],["fdopen",139871563736224,139871563736817],["fputs",139871563738912,139871563739292],["ftello",139871563775808,139871563776174],["fread_unlocked",139871563781376,139871563781467],["_IO_file_write",139871563785792,139871563785932],["_IO_file_close_it",139871563787888,139871563788298],["_IO_switch_to_get_mode",139871563793808,139871563793959],["_IO_seekmark",139871563799984,139871563800110],["__libc_alloca_cutoff",139871563802880,139871563802948],["pthread_cond_signal",139871563803392,139871563803427],["pthread_getschedparam",139871563803584,139871563803619],["pthread_mutex_lock",139871563803776,139871563803811],["__libc_pthread_init",139871563804256,139871563804346],["thrd_current",139871563805504,139871563805514],["thrd_sleep",139871563805536,139871563805576],["pthread_equal",139871563805600,139871563805609],["pthread_attr_init",139871563805648,139871563805690],["__libc_realloc",139871563827584,139871563828550],["argz_create",139871563851520,139871563851695],["wmemmove",139871563950032,139871563950041],["wcwidth",139871563986896,139871563986997],["ctime",139871564021600,139871564021621],["getdate_r",139871564035280,139871564037127],["opendir",139871564072912,139871564072961],["getgrouplist",139871564077264,139871564077468],["_nss_files_parse_grent",139871564082800,139871564083606],["getpwnam",139871564086640,139871564087078],["fgetpwent_r",139871564090960,139871564091620],["alarm",139871564092176,139871564092209],["fexecve",139871564093168,139871564093467],["getppid",139871564095712,139871564095720],["group_member",139871564096128,139871564096284],["getresuid",139871564096528,139871564096561],["fpathconf",139871564100496,139871564101100],["fnmatch",139871564125520,139871564126460],["regcomp",139871564187760,139871564188042],["regexec",139871564188560,139871564188927],["re_search_2",139871564189264,139871564189531],["getopt",139871564197408,139871564197432],["sched_setparam",139871564197600,139871564197633],["__sched_yield",139871564197792,139871564197825],["sched_getaffinity",139871564197984,139871564198086],["gai_strerror",139871564213696,139871564213784],["__libc_pwrite",139871564231168,139871564231333],["posix_spawn_file_actions_addopen",139871564231664,139871564231830],["posix_spawnattr_init",139871564232224,139871564232271],["posix_spawnattr_getflags",139871564232448,139871564232457],["posix_spawn",139871564232528,139871564232544],["posix_spawnattr_getschedparam",139871564234656,139871564234667],["posix_spawnattr_setschedparam",139871564234816,139871564234827],["__sched_cpualloc",139871564235120,139871564235137],["sched_getcpu",139871564235168,139871564235325],["utime",139871564235456,139871564235489],["mkfifoat",139871564235584,139871564235658],["__fxstat",139871564235744,139871564235820],["statx",139871564236608,139871564236692],["__xmknodat",139871564236800,139871564236892],["__statfs",139871564236992,139871564237025],["statvfs",139871564237088,139871564237196],["umask",139871564237312,139871564237320],["fchmod",139871564237376,139871564237409],["fchmodat",139871564237456,139871564237556],["mkdirat",139871564237616,139871564237649],["__open",139871564237712,139871564238008],["__openat_2",139871564238064,139871564238103],["regexec",139871564539696,139871564539705],["fattach",139871564546624,139871564546644],["getpmsg",139871564546720,139871564546740],["putmsg",139871564546784,139871564546804],["__pthread_attr_getschedpolicy",139871566592336,139871566592344],["__GI___pthread_mutex_destroy",139871566594032,139871566594061],["__pthread_mutex_timedlock",139871566600928,139871566600938],["pthread_rwlock_timedrdlock",139871566605600,139871566606247],["pthread_rwlockattr_getkind_np",139871566610928,139871566610935],["__libc_send",139871566627888,139871566628069],["pthread_getattr_default_np",139871566636592,139871566636735],["__errno_location",139871566639248,139871566639265],["malloc",139871567004224,139871567004505],["v8::DelayedTasksPlatform::MonotonicallyIncreasingTime()",93957335212416,93957335212431],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::TaskRunner*, std::__1::weak_ptr<v8::DelayedTasksPlatform::DelayedTaskRunner> >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::TaskRunner*, std::__1::weak_ptr<v8::DelayedTasksPlatform::DelayedTaskRunner> >, std::__1::__unordered_map_hasher<v8::TaskRunner*, std::__1::__hash_value_type<v8::TaskRunner*, std::__1::weak_ptr<v8::DelayedTasksPlatform::DelayedTaskRunner> >, std::__1::hash<v8::TaskRunner*>, std::__1::equal_to<v8::TaskRunner*>, true>, std::__1::__unordered_map_equal<v8::TaskRunner*, std::__1::__hash_value_type<v8::TaskRunner*, std::__1::weak_ptr<v8::DelayedTasksPlatform::DelayedTaskRunner> >, std::__1::equal_to<v8::TaskRunner*>, std::__1::hash<v8::TaskRunner*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::TaskRunner*, std::__1::weak_ptr<v8::DelayedTasksPlatform::DelayedTaskRunner> > > >::__emplace_unique_key_args<v8::TaskRunner*, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::TaskRunner*&&>, std::__1::tuple<> >(v8::TaskRunner* const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::TaskRunner*&&>&&, std::__1::tuple<>&&)",93957335212480,93957335213367],["v8::(anonymous namespace)::ShellArrayBufferAllocator::Free(void*, unsigned long)",93957335311792,93957335311924],["v8::(anonymous namespace)::MockArrayBufferAllocatiorWithLimit::AllocateUninitialized(unsigned long)",93957335312208,93957335312276],["v8::(anonymous namespace)::MultiMappedAllocator::Allocate(unsigned long)",93957335312496,93957335312533],["v8::(anonymous namespace)::MultiMappedAllocator::Free(void*, unsigned long)",93957335313024,93957335313273],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewScriptWithId(v8::internal::Handle<v8::internal::PrimitiveHeapObject>, int)",93957336840880,93957336841201],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewRawOneByteString(int, v8::internal::AllocationType)",93957336843776,93957336843935],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewScopeInfo(int, v8::internal::AllocationType)",93957336846560,93957336846700],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::InternalizeString<v8::internal::SeqOneByteString>(v8::internal::Handle<v8::internal::SeqOneByteString>, int, int, bool)",93957336846992,93957336847087],["v8::internal::Factory::New(v8::internal::Handle<v8::internal::Map>, v8::internal::AllocationType)",93957336847552,93957336847807],["v8::internal::Factory::CodeBuilder::BuildInternal(bool)",93957336847920,93957336849486],["v8::internal::Factory::CodeBuilder::Build()",93957336849504,93957336849546],["v8::internal::Factory::AllocateRawWithAllocationSite(v8::internal::Handle<v8::internal::Map>, v8::internal::AllocationType, v8::internal::Handle<v8::internal::AllocationSite>)",93957336849760,93957336850126],["v8::internal::WriteBarrier::SetForThread(v8::internal::MarkingBarrier*)",93957336943200,93957336943235],["v8::internal::Heap::CommittedMemory()",93957336947904,93957336948140],["v8::internal::Heap::SizeOfObjects()",93957336952000,93957336952151],["v8::internal::Heap::IsRetainingPathTarget(v8::internal::HeapObject, v8::internal::RetainingPathOption*)",93957336962608,93957336962963],["v8::internal::Heap::GarbageCollectionPrologueInSafepoint()",93957336965792,93957336966427],["v8::internal::Heap::AddAllocationObserversToAllSpaces(v8::internal::AllocationObserver*, v8::internal::AllocationObserver*)",93957336966720,93957336966969],["v8::internal::Heap::ProcessPretenuringFeedback()",93957336967808,93957336969267],["v8::internal::Heap::ReduceNewSpaceSize()",93957336973216,93957336973409],["v8::internal::Heap::HandleGCRequest()",93957336975744,93957336976067],["v8::internal::Heap::CheckMemoryPressure()",93957336976128,93957336976842],["v8::internal::Heap::FinalizeIncrementalMarkingIncrementally(v8::internal::GarbageCollectionReason)",93957336976912,93957336977888],["v8::internal::Heap::CollectAllAvailableGarbage(v8::internal::GarbageCollectionReason)",93957336982768,93957336985907],["v8::internal::Heap::PreciseCollectAllGarbage(int, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)",93957336986160,93957336986264],["v8::internal::Heap::ReportExternalMemoryPressure()",93957336986320,93957336987128],["v8::base::BoundedPageAllocator::CommitPageSize()",93957336987264,93957336987274],["v8::internal::Heap::DevToolsTraceEventScope::DevToolsTraceEventScope(v8::internal::Heap*, char const*, char const*)",93957336987520,93957336987930],["v8::internal::Heap::MarkCompactEpilogue()",93957337003808,93957337004277],["v8::internal::Heap::UpdateExternalString(v8::internal::String, unsigned long, unsigned long)",93957337006816,93957337006914],["v8::internal::Heap::UpdateReferencesInExternalStringTable(v8::internal::String (*)(v8::internal::Heap*, v8::internal::FullObjectSlot))",93957337007984,93957337008001],["v8::internal::Heap::ResetAllAllocationSitesDependentCode(v8::internal::AllocationType)",93957337008288,93957337008639],["v8::internal::Heap::CreateFillerObjectAtBackground(unsigned long, int, v8::internal::ClearFreedMemoryMode)",93957337009120,93957337009220],["v8::internal::Heap::LeftTrimFixedArray(v8::internal::FixedArrayBase, int)",93957337009600,93957337009940],["v8::internal::Heap::RightTrimWeakFixedArray(v8::internal::WeakFixedArray, int)",93957337010880,93957337010897],["v8::internal::Heap::ShouldOptimizeForMemoryUsage()",93957337011472,93957337011777],["v8::internal::Heap::InvokeIncrementalMarkingPrologueCallbacks()",93957337012096,93957337012854],["v8::internal::Heap::NotifyObjectLayoutChange(v8::internal::HeapObject, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&, v8::internal::InvalidateRecordedSlots)",93957337013632,93957337013897],["v8::internal::Heap::IdleNotificationEpilogue(v8::internal::GCIdleTimeAction, v8::internal::GCIdleTimeHeapState, double, double)",93957337014432,93957337014680],["v8::internal::Heap::EmbedderAllocationCounter() const",93957337016064,93957337016090],["v8::internal::Heap::MemoryPressureNotification(v8::MemoryPressureLevel, bool)",93957337017088,93957337017661],["v8::internal::Heap::RemoveNearHeapLimitCallback(unsigned long (*)(void*, unsigned long, unsigned long), unsigned long)",93957337017840,93957337017977],["v8::internal::IncrementalMarking::AdvanceWithDeadline(double, v8::internal::IncrementalMarking::CompletionAction, v8::internal::StepOrigin)",93957337066944,93957337068107],["v8::internal::InvalidatedSlotsFilter::InvalidatedSlotsFilter(v8::internal::MemoryChunk*, std::__1::set<v8::internal::HeapObject, v8::internal::Object::Comparer, std::__1::allocator<v8::internal::HeapObject> >*)",93957337071248,93957337071525],["v8::internal::LargeObjectSpaceObjectIterator::Next()",93957337072432,93957337072470],["v8::internal::LargeObjectSpace::CommittedPhysicalMemory()",93957337073648,93957337073658],["v8::internal::CodeLargeObjectSpace::RemoveChunkMapEntries(v8::internal::LargePage*)",93957337074752,93957337075335],["v8::internal::LargeObjectSpace::AddPage(v8::internal::LargePage*, unsigned long)",93957337075456,93957337075666],["v8::internal::LargeObjectSpace::FreeUnmarkedObjects()",93957337075856,93957337076317],["v8::internal::LargeObjectSpace::ContainsSlow(unsigned long)",93957337076352,93957337076400],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualFunctionTemplateInfoDetails(v8::internal::FunctionTemplateInfo)",93957337471952,93957337472223],["v8::internal::WeakListVisitor<v8::internal::Context>::VisitLiveObject(v8::internal::Heap*, v8::internal::Context, v8::internal::WeakObjectRetainer*)",93957337483776,93957337484671],["v8::internal::PagedSpace::RemovePage(v8::internal::Page*)",93957337489632,93957337490006],["v8::internal::PagedSpace::ExpandBackground(v8::internal::LocalHeap*, unsigned long)",93957337491600,93957337491850],["v8::internal::PagedSpace::ReleasePage(v8::internal::Page*)",93957337492496,93957337492711],["v8::internal::PagedSpace::GetObjectIterator(v8::internal::Heap*)",93957337493152,93957337493209],["v8::internal::PagedSpace::UpdateInlineAllocationLimit(unsigned long)",93957337494368,93957337494416],["v8::internal::LocalSpace::Expand()",93957337495344,93957337495644],["v8::internal::MapSpace::SortFreeList()",93957337495936,93957337496281],["v8::internal::PagedSpaceObjectIterator::Next()",93957337496368,93957337496539],["v8::internal::ReadOnlyHeap::OnCreateHeapObjectsComplete(v8::internal::Isolate*)",93957337496832,93957337496875],["v8::internal::ReadOnlyHeap::Contains(v8::internal::HeapObject)",93957337496944,93957337496965],["v8::internal::ReadOnlyHeap::cached_read_only_object(unsigned long) const",93957337497264,93957337497278],["v8::internal::ReadOnlyHeapObjectIterator::ReadOnlyHeapObjectIterator(v8::internal::ReadOnlySpace*)",93957337497328,93957337497371],["v8::internal::ReadOnlyHeap::~ReadOnlyHeap()",93957337497632,93957337497670],["v8::internal::ReadOnlySpace::ReadOnlySpace(v8::internal::Heap*)",93957337497744,93957337497859],["v8::internal::IsolateAllocator::IsolateAllocator()",93957337815920,93957337815977],["v8::internal::interpreter::BytecodeArrayBuilder::ToString()",93957337855088,93957337855325],["v8::internal::interpreter::BytecodeArrayBuilder::CallRuntime(v8::internal::Runtime::FunctionId, v8::internal::interpreter::RegisterList)",93957337873360,93957337874165],["v8::internal::interpreter::BytecodeArrayIterator::GetRegisterPairOperand(int) const",93957337878128,93957337878218],["v8::internal::interpreter::BytecodeArrayWriter::WriteJump(v8::internal::interpreter::BytecodeNode*, v8::internal::interpreter::BytecodeLabel*)",93957337887984,93957337888337],["std::__1::vector<unsigned char, v8::internal::ZoneAllocator<unsigned char> >::__append(unsigned long)",93957337890736,93957337891280],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::interpreter::BytecodeGenerator::TopLevelDeclarationsBuilder::AllocateDeclarations<v8::internal::Isolate>(v8::internal::UnoptimizedCompilationInfo*, v8::internal::interpreter::BytecodeGenerator*, v8::internal::Handle<v8::internal::Script>, v8::internal::Isolate*)",93957337896720,93957337898168],["v8::internal::interpreter::BytecodeGenerator::VisitVariableDeclaration(v8::internal::VariableDeclaration*)",93957337906304,93957337906738],["v8::internal::interpreter::BytecodeGenerator::VisitReturnStatement(v8::internal::ReturnStatement*)",93957337911120,93957337911554],["v8::internal::interpreter::BytecodeGenerator::BuildAssignment(v8::internal::interpreter::BytecodeGenerator::AssignmentLhsData const&, v8::internal::Token::Value, v8::internal::LookupHoistingMode)",93957337920128,93957337921497],["v8::internal::interpreter::BytecodeGenerator::VisitLiteralAccessor(v8::internal::LiteralProperty*, v8::internal::interpreter::Register)",93957337931776,93957337932021],["v8::internal::interpreter::BytecodeGenerator::VisitConditional(v8::internal::Conditional*)",93957337934736,93957337935499],["v8::internal::interpreter::BytecodeGenerator::BuildCreateArrayLiteral(v8::internal::ZoneList<v8::internal::Expression*> const*, v8::internal::ArrayLiteral*)",93957337945856,93957337948890],["v8::internal::interpreter::BytecodeGenerator::GetCachedStoreICSlot(v8::internal::Expression const*, v8::internal::AstRawString const*)",93957337950592,93957337950995],["v8::internal::interpreter::BytecodeGenerator::BuildPrivateGetterAccess(v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957337960848,93957337961185],["v8::internal::interpreter::BytecodeGenerator::VisitPropertyLoad(v8::internal::interpreter::Register, v8::internal::Property*)",93957337967376,93957337968611],["v8::internal::interpreter::BytecodeGenerator::VisitProperty(v8::internal::Property*)",93957337971872,93957337972293],["v8::internal::interpreter::BytecodeGenerator::VisitCallNew(v8::internal::CallNew*)",93957337977856,93957337978526],["v8::internal::interpreter::BytecodeGenerator::VisitUnaryOperation(v8::internal::UnaryOperation*)",93957337979648,93957337980310],["v8::internal::interpreter::BytecodeGenerator::VisitLogicalOrExpression(v8::internal::BinaryOperation*)",93957337985904,93957337986613],["v8::internal::interpreter::BytecodeGenerator::VisitNaryOperation(v8::internal::NaryOperation*)",93957337988928,93957337988995],["v8::internal::interpreter::BytecodeGenerator::VisitNaryNullishExpression(v8::internal::NaryOperation*)",93957337990720,93957337991339],["v8::internal::interpreter::BytecodeGenerator::VisitImportCallExpression(v8::internal::ImportCallExpression*)",93957337993888,93957337994403],["v8::internal::interpreter::BytecodeGenerator::VisitThisExpression(v8::internal::ThisExpression*)",93957337996464,93957337996523],["v8::internal::interpreter::BytecodeGenerator::VisitLogicalOrSubExpression(v8::internal::Expression*, v8::internal::interpreter::BytecodeLabels*, int)",93957337997376,93957337997853],["v8::internal::interpreter::BlockCoverageBuilder::AllocateBlockCoverageSlot(v8::internal::ZoneObject*, v8::internal::SourceRangeKind)",93957337999264,93957338000015],["v8::internal::interpreter::BlockBuilder::~BlockBuilder()",93957338001040,93957338001068],["v8::internal::interpreter::BytecodeGenerator::ControlScopeForIteration::Execute(v8::internal::interpreter::BytecodeGenerator::ControlScope::Command, v8::internal::Statement*, int)",93957338002880,93957338003003],["v8::internal::interpreter::BytecodeGenerator::ControlScopeForTryFinally::Execute(v8::internal::interpreter::BytecodeGenerator::ControlScope::Command, v8::internal::Statement*, int)",93957338004208,93957338004300],["v8::internal::interpreter::BytecodeLabels::New()",93957338004912,93957338005062],["v8::internal::interpreter::BytecodeRegisterOptimizer::Materialize(v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterInfo*)",93957338006336,93957338006495],["v8::internal::interpreter::BytecodeRegisterOptimizer::GetInputRegister(v8::internal::interpreter::Register)",93957338007552,93957338007796],["v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterListAllocateEvent(v8::internal::interpreter::RegisterList)",93957338008272,93957338008665],["v8::internal::interpreter::BytecodeRegisterOptimizer::~BytecodeRegisterOptimizer()",93957338008816,93957338008864],["v8::internal::interpreter::BytecodeRegisterOptimizer::NewRegisterInfo(v8::internal::interpreter::Register)",93957338008928,93957338009186],["std::__1::deque<v8::internal::Map, v8::internal::RecyclingZoneAllocator<v8::internal::Map> >::__add_back_capacity()",93957338009536,93957338010287],["std::__1::__split_buffer<int*, v8::internal::RecyclingZoneAllocator<int*> >::push_front(int*&&)",93957338011232,93957338012154],["std::__1::__split_buffer<int*, v8::internal::RecyclingZoneAllocator<int*>&>::push_front(int* const&)",93957338013104,93957338014058],["v8::internal::interpreter::Register::ToParameterIndex(int) const",93957338014080,93957338014093],["v8::internal::interpreter::Register::is_function_closure() const",93957338014112,93957338014124],["v8::internal::interpreter::Register::is_current_context() const",93957338014144,93957338014156],["v8::internal::interpreter::Register::virtual_accumulator()",93957338014176,93957338014187],["v8::internal::interpreter::Bytecodes::ToString(v8::internal::interpreter::Bytecode)",93957338015072,93957338016922],["v8::internal::interpreter::Bytecodes::GetDebugBreak(v8::internal::interpreter::Bytecode)",93957338017472,93957338017550],["v8::internal::interpreter::Bytecodes::IsDebugBreak(v8::internal::interpreter::Bytecode)",93957338017696,93957338017713],["v8::internal::interpreter::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::interpreter::Bytecode const&)",93957338017824,93957338017871],["v8::internal::Handle<v8::internal::Object> v8::internal::interpreter::ConstantArrayBuilder::Entry::ToHandle<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957338018336,93957338018828],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::interpreter::ConstantArrayBuilder::ToFixedArray<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957338019792,93957338020742],["v8::internal::interpreter::ConstantArrayBuilder::ConstantArrayBuilder(v8::internal::Zone*)",93957338021216,93957338021787],["v8::internal::interpreter::ConstantArrayBuilder::Insert(double)",93957338022160,93957338022785],["v8::internal::interpreter::ConstantArrayBuilder::Insert(v8::internal::AstBigInt)",93957338023152,93957338023493],["v8::internal::interpreter::ConstantArrayBuilder::InsertAsyncIteratorSymbol()",93957338023856,93957338024005],["v8::internal::interpreter::ConstantArrayBuilder::InsertEmptyObjectBoilerplateDescription()",93957338024176,93957338024325],["v8::internal::interpreter::ConstantArrayBuilder::InsertIteratorSymbol()",93957338024496,93957338024645],["v8::internal::interpreter::ConstantArrayBuilder::InsertJumpTable(unsigned long)",93957338024784,93957338024917],["v8::internal::interpreter::ConstantArrayBuilder::SetJumpTableSmi(unsigned long, v8::internal::Smi)",93957338025040,93957338025376],["v8::internal::interpreter::ConstantArrayBuilder::CommitReservedEntry(v8::internal::interpreter::OperandSize, v8::internal::Smi)",93957338025520,93957338025727],["v8::base::TemplateHashMapImpl<long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::internal::ZoneAllocationPolicy>::Resize()",93957338025792,93957338026170],["v8::internal::interpreter::BlockCoverageBuilder::IncrementBlockCounter(v8::internal::ZoneObject*, v8::internal::SourceRangeKind)",93957338026288,93957338027038],["v8::internal::interpreter::BreakableControlFlowBuilder::EmitJump(v8::internal::interpreter::BytecodeLabels*)",93957338027152,93957338027187],["v8::internal::interpreter::BreakableControlFlowBuilder::EmitJumpIfFalse(v8::internal::interpreter::BytecodeArrayBuilder::ToBooleanMode, v8::internal::interpreter::BytecodeLabels*)",93957338027248,93957338027288],["v8::internal::interpreter::LoopBuilder::~LoopBuilder()",93957338027344,93957338027557],["v8::internal::interpreter::LoopBuilder::LoopHeader()",93957338027600,93957338027621],["v8::internal::interpreter::LoopBuilder::JumpToHeader(int, v8::internal::interpreter::LoopBuilder*)",93957338027680,93957338027802],["v8::internal::RegExpImpl::CompileIrregexp(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, bool)",93957339922128,93957339923867],["v8::internal::Stats_Runtime_ArrayIsArray(int, unsigned long*, v8::internal::Isolate*)",93957339936272,93957339936913],["v8::internal::Runtime_AtomicsStore64(int, unsigned long*, v8::internal::Isolate*)",93957339947360,93957339947397],["v8::internal::Runtime_AtomicsSub(int, unsigned long*, v8::internal::Isolate*)",93957339949024,93957339949061],["v8::internal::Runtime_AtomicsXor(int, unsigned long*, v8::internal::Isolate*)",93957339950272,93957339950309],["v8::internal::Runtime_BigIntCompareToNumber(int, unsigned long*, v8::internal::Isolate*)",93957339951568,93957339951730],["v8::internal::Runtime_BigIntEqualToBigInt(int, unsigned long*, v8::internal::Isolate*)",93957339953440,93957339953616],["v8::internal::Runtime_BigIntEqualToString(int, unsigned long*, v8::internal::Isolate*)",93957339954880,93957339955172],["v8::internal::Stats_Runtime_BigIntToBoolean(int, unsigned long*, v8::internal::Isolate*)",93957339955984,93957339956531],["v8::internal::Stats_Runtime_BigIntToNumber(int, unsigned long*, v8::internal::Isolate*)",93957339956736,93957339957323],["v8::internal::Stats_Runtime_ToBigInt(int, unsigned long*, v8::internal::Isolate*)",93957339957472,93957339958010],["v8::internal::Stats_Runtime_BigIntBinaryOp(int, unsigned long*, v8::internal::Isolate*)",93957339958480,93957339959362],["v8::internal::Stats_Runtime_BigIntUnaryOp(int, unsigned long*, v8::internal::Isolate*)",93957339959696,93957339960414],["v8::internal::Stats_Runtime_ThrowUnsupportedSuperError(int, unsigned long*, v8::internal::Isolate*)",93957339960576,93957339961100],["v8::internal::Stats_Runtime_ThrowConstructorNonCallableError(int, unsigned long*, v8::internal::Isolate*)",93957339961600,93957339962453],["v8::internal::Stats_Runtime_ThrowStaticPrototypeError(int, unsigned long*, v8::internal::Isolate*)",93957339962624,93957339963148],["v8::internal::(anonymous namespace)::CompileOptimized(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::ConcurrencyMode)",93957340012352,93957340012519],["v8::internal::Stats_Runtime_ScheduleBreak(int, unsigned long*, v8::internal::Isolate*)",93957340017440,93957340017887],["v8::internal::Runtime_IsBreakOnException(int, unsigned long*, v8::internal::Isolate*)",93957340030944,93957340031369],["v8::internal::Runtime_DebugOnFunctionCall(int, unsigned long*, v8::internal::Isolate*)",93957340041504,93957340041812],["v8::internal::Runtime_DebugCollectCoverage(int, unsigned long*, v8::internal::Isolate*)",93957340044512,93957340047408],["v8::internal::Runtime_DebugAsyncFunctionEntered(int, unsigned long*, v8::internal::Isolate*)",93957340052496,93957340052739],["v8::internal::Runtime_LiveEditPatchScript(int, unsigned long*, v8::internal::Isolate*)",93957340056112,93957340056799],["v8::internal::Stats_Runtime_ForInEnumerate(int, unsigned long*, v8::internal::Isolate*)",93957340059120,93957340059961],["v8::internal::Runtime_FunctionGetScriptSource(int, unsigned long*, v8::internal::Isolate*)",93957340061344,93957340061742],["v8::internal::Runtime_FunctionGetSourceCode(int, unsigned long*, v8::internal::Isolate*)",93957340063712,93957340064030],["v8::internal::Runtime_FunctionIsAPIFunction(int, unsigned long*, v8::internal::Isolate*)",93957340065376,93957340065541],["v8::internal::Runtime_IsFunction(int, unsigned long*, v8::internal::Isolate*)",93957340068192,93957340068294],["v8::internal::Runtime_AtomicsNumAsyncWaitersForTesting(int, unsigned long*, v8::internal::Isolate*)",93957340070464,93957340070496],["v8::internal::Runtime_SetAllowAtomicsWait(int, unsigned long*, v8::internal::Isolate*)",93957340072528,93957340072678],["v8::internal::Runtime_AsyncFunctionAwaitUncaught(int, unsigned long*, v8::internal::Isolate*)",93957340073712,93957340073749],["v8::internal::Stats_Runtime_AsyncFunctionEnter(int, unsigned long*, v8::internal::Isolate*)",93957340074176,93957340074530],["v8::internal::Stats_Runtime_AsyncFunctionReject(int, unsigned long*, v8::internal::Isolate*)",93957340074592,93957340074946],["v8::internal::Stats_Runtime_AsyncFunctionResolve(int, unsigned long*, v8::internal::Isolate*)",93957340075008,93957340075362],["v8::internal::Stats_Runtime_CreateJSGeneratorObject(int, unsigned long*, v8::internal::Isolate*)",93957340076320,93957340077639],["v8::internal::Stats_Runtime_GeneratorClose(int, unsigned long*, v8::internal::Isolate*)",93957340077696,93957340078050],["v8::internal::Stats_Runtime_GeneratorGetFunction(int, unsigned long*, v8::internal::Isolate*)",93957340078208,93957340078783],["v8::internal::Stats_Runtime_AsyncGeneratorAwaitCaught(int, unsigned long*, v8::internal::Isolate*)",93957340078832,93957340079186],["v8::internal::Stats_Runtime_AsyncGeneratorAwaitUncaught(int, unsigned long*, v8::internal::Isolate*)",93957340079248,93957340079602],["v8::internal::Stats_Runtime_AsyncGeneratorResolve(int, unsigned long*, v8::internal::Isolate*)",93957340079664,93957340080018],["v8::internal::Stats_Runtime_AsyncGeneratorReject(int, unsigned long*, v8::internal::Isolate*)",93957340080080,93957340080434],["v8::internal::Stats_Runtime_AsyncGeneratorYield(int, unsigned long*, v8::internal::Isolate*)",93957340080496,93957340080850],["v8::internal::Stats_Runtime_GeneratorGetResumeMode(int, unsigned long*, v8::internal::Isolate*)",93957340080912,93957340081266],["v8::internal::Stats_Runtime_AsyncGeneratorHasCatchHandlerForPC(int, unsigned long*, v8::internal::Isolate*)",93957340081520,93957340082175],["v8::internal::Stats_Runtime_AccessCheck(int, unsigned long*, v8::internal::Isolate*)",93957340082528,93957340083235],["v8::internal::Stats_Runtime_FatalProcessOutOfMemoryInAllocateRaw(int, unsigned long*, v8::internal::Isolate*)",93957340083312,93957340083682],["v8::internal::Stats_Runtime_FatalProcessOutOfMemoryInvalidArrayLength(int, unsigned long*, v8::internal::Isolate*)",93957340083760,93957340084130],["v8::internal::Runtime_FormatList(int, unsigned long*, v8::internal::Isolate*)",93957340128768,93957340129043],["v8::internal::Runtime_SetNamedProperty(int, unsigned long*, v8::internal::Isolate*)",93957340191744,93957340191905],["v8::internal::Runtime_ToNumber(int, unsigned long*, v8::internal::Isolate*)",93957340219408,93957340219595],["v8::internal::Runtime_SwissTableAdd(int, unsigned long*, v8::internal::Isolate*)",93957340235136,93957340235438],["v8::internal::Runtime_NotEqual(int, unsigned long*, v8::internal::Isolate*)",93957340245760,93957340245938],["v8::internal::Runtime_PromiseRejectEventFromStack(int, unsigned long*, v8::internal::Isolate*)",93957340251392,93957340251715],["v8::internal::Runtime_PromiseMarkAsHandled(int, unsigned long*, v8::internal::Isolate*)",93957340258400,93957340258504],["v8::internal::Runtime_ConstructAggregateErrorHelper(int, unsigned long*, v8::internal::Isolate*)",93957340266192,93957340266408],["v8::internal::Stats_Runtime_GetPropertyWithReceiver(int, unsigned long*, v8::internal::Isolate*)",93957340271008,93957340271714],["v8::internal::Stats_Runtime_CheckProxyDeleteTrapResult(int, unsigned long*, v8::internal::Isolate*)",93957340275360,93957340276054],["v8::internal::Runtime_RegExpExec(int, unsigned long*, v8::internal::Isolate*)",93957340287360,93957340288006],["v8::internal::Runtime_RegExpBuildIndices(int, unsigned long*, v8::internal::Isolate*)",93957340294144,93957340294348],["v8::internal::Runtime_RegExpReplaceRT(int, unsigned long*, v8::internal::Isolate*)",93957340316608,93957340325893],["v8::internal::Object std::__1::__function::__policy_invoker<v8::internal::Object (int)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::__RT_impl_Runtime_StringReplaceNonGlobalRegExpWithFunction(v8::internal::Arguments<(v8::internal::ArgumentsType)0>, v8::internal::Isolate*)::{lambda(int)#1}, v8::internal::Object (int)> >(std::__1::__function::__policy_storage const*, int)",93957340337792,93957340337814],["v8::internal::(anonymous namespace)::MatchInfoBackedMatch::GetNamedCapture(v8::internal::Handle<v8::internal::String>, v8::internal::String::Match::CaptureState*)",93957340338208,93957340338633],["v8::internal::(anonymous namespace)::VectorBackedMatch::GetCapture(int, bool*)",93957340340256,93957340340352],["v8::internal::Runtime_DeclareModuleExports(int, unsigned long*, v8::internal::Isolate*)",93957340341664,93957340343235],["v8::internal::Runtime_DeclareEvalFunction(int, unsigned long*, v8::internal::Isolate*)",93957340349280,93957340349473],["v8::internal::Runtime_NewSloppyArguments(int, unsigned long*, v8::internal::Isolate*)",93957340350896,93957340352927],["v8::internal::Runtime_NewRestParameter(int, unsigned long*, v8::internal::Isolate*)",93957340357216,93957340357871],["v8::internal::Runtime_NewClosure_Tenured(int, unsigned long*, v8::internal::Isolate*)",93957340360176,93957340360604],["v8::internal::Runtime_PushWithContext(int, unsigned long*, v8::internal::Isolate*)",93957340362384,93957340362759],["v8::internal::Runtime_PushBlockContext(int, unsigned long*, v8::internal::Isolate*)",93957340364528,93957340364818],["v8::internal::Runtime_LoadLookupSlot(int, unsigned long*, v8::internal::Isolate*)",93957340366848,93957340367055],["v8::internal::Runtime_LoadLookupSlotForCall(int, unsigned long*, v8::internal::Isolate*)",93957340368496,93957340368694],["v8::internal::Runtime_StoreLookupSlot_Strict(int, unsigned long*, v8::internal::Isolate*)",93957340370320,93957340370653],["v8::internal::Runtime_StoreGlobalNoHoleCheckForReplLet(int, unsigned long*, v8::internal::Isolate*)",93957340372432,93957340373088],["v8::internal::(anonymous namespace)::GetCallerArguments(v8::internal::Isolate*, int*)",93957340376128,93957340377340],["v8::internal::Stats_Runtime_GetSubstitution(int, unsigned long*, v8::internal::Isolate*)",93957340379360,93957340380305],["v8::internal::Runtime_StringLastIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957340382256,93957340382397],["v8::internal::Runtime_StringAdd(int, unsigned long*, v8::internal::Isolate*)",93957340384400,93957340384777],["v8::internal::Runtime_StringCharCodeAt(int, unsigned long*, v8::internal::Isolate*)",93957340386384,93957340386953],["v8::internal::Stats_Runtime_StringBuilderConcat(int, unsigned long*, v8::internal::Isolate*)",93957340388880,93957340390207],["v8::internal::Stats_Runtime_StringToArray(int, unsigned long*, v8::internal::Isolate*)",93957340391792,93957340393832],["v8::internal::Stats_Runtime_StringLessThan(int, unsigned long*, v8::internal::Isolate*)",93957340394128,93957340394801],["v8::internal::Stats_Runtime_StringLessThanOrEqual(int, unsigned long*, v8::internal::Isolate*)",93957340395104,93957340395777],["v8::internal::Stats_Runtime_StringGreaterThan(int, unsigned long*, v8::internal::Isolate*)",93957340396080,93957340396753],["v8::internal::Stats_Runtime_StringGreaterThanOrEqual(int, unsigned long*, v8::internal::Isolate*)",93957340397056,93957340397729],["v8::internal::Stats_Runtime_StringEqual(int, unsigned long*, v8::internal::Isolate*)",93957340398128,93957340398874],["v8::internal::Stats_Runtime_FlattenString(int, unsigned long*, v8::internal::Isolate*)",93957340399072,93957340399661],["v8::internal::Stats_Runtime_StringMaxLength(int, unsigned long*, v8::internal::Isolate*)",93957340399696,93957340400111],["v8::internal::Stats_Runtime_StringEscapeQuotes(int, unsigned long*, v8::internal::Isolate*)",93957340401296,93957340402862],["v8::internal::Runtime_CreatePrivateSymbol(int, unsigned long*, v8::internal::Isolate*)",93957340402880,93957340403288],["v8::internal::Runtime_CreatePrivateBrandSymbol(int, unsigned long*, v8::internal::Isolate*)",93957340404080,93957340404276],["v8::internal::Runtime_CreatePrivateNameSymbol(int, unsigned long*, v8::internal::Isolate*)",93957340404896,93957340405085],["v8::internal::Runtime_SymbolDescriptiveString(int, unsigned long*, v8::internal::Isolate*)",93957340405680,93957340406682],["v8::internal::Runtime_SymbolIsPrivate(int, unsigned long*, v8::internal::Isolate*)",93957340408080,93957340408177],["v8::internal::Runtime_ClearMegamorphicStubCache(int, unsigned long*, v8::internal::Isolate*)",93957340408736,93957340408886],["v8::internal::Runtime_ConstructDouble(int, unsigned long*, v8::internal::Isolate*)",93957340409424,93957340410279],["v8::internal::Runtime_ConstructConsString(int, unsigned long*, v8::internal::Isolate*)",93957340411552,93957340411927],["v8::internal::Runtime_ConstructSlicedString(int, unsigned long*, v8::internal::Isolate*)",93957340412688,93957340413085],["v8::internal::Runtime_DeoptimizeFunction(int, unsigned long*, v8::internal::Isolate*)",93957340413888,93957340414138],["v8::internal::Runtime_DeoptimizeNow(int, unsigned long*, v8::internal::Isolate*)",93957340414768,93957340415157],["v8::internal::Runtime_RunningInSimulator(int, unsigned long*, v8::internal::Isolate*)",93957340416000,93957340416032],["v8::internal::Runtime_RuntimeEvaluateREPL(int, unsigned long*, v8::internal::Isolate*)",93957340416496,93957340416703],["v8::internal::Runtime_ICsAreEnabled(int, unsigned long*, v8::internal::Isolate*)",93957340417312,93957340417360],["v8::internal::Runtime_IsConcurrentRecompilationSupported(int, unsigned long*, v8::internal::Isolate*)",93957340417824,93957340417870],["v8::internal::Runtime_DynamicCheckMapsEnabled(int, unsigned long*, v8::internal::Isolate*)",93957340418336,93957340418384],["v8::internal::Runtime_IsTopTierTurboprop(int, unsigned long*, v8::internal::Isolate*)",93957340418848,93957340418896],["v8::internal::Runtime_IsMidTierTurboprop(int, unsigned long*, v8::internal::Isolate*)",93957340419360,93957340419429],["v8::internal::Runtime_CompileBaseline(int, unsigned long*, v8::internal::Isolate*)",93957340419936,93957340420377],["v8::internal::Runtime_OptimizeFunctionOnNextCall(int, unsigned long*, v8::internal::Isolate*)",93957340421232,93957340421391],["v8::internal::Runtime_TierupFunctionOnNextCall(int, unsigned long*, v8::internal::Isolate*)",93957340421952,93957340422114],["v8::internal::Runtime_EnsureFeedbackVectorForFunction(int, unsigned long*, v8::internal::Isolate*)",93957340422688,93957340422886],["int v8::internal::Deserializer::ReadSingleBytecodeData<v8::internal::SlotAccessorForRootSlots>(unsigned char, v8::internal::SlotAccessorForRootSlots)",93957340533264,93957340534517],["v8::internal::SlotAccessorForHeapObject::Write(v8::internal::Handle<v8::internal::HeapObject>, v8::internal::HeapObjectReferenceType, int)",93957340535952,93957340536057],["v8::internal::EmbeddedData::InstructionSizeOfBuiltin(int) const",93957340539680,93957340539701],["v8::internal::ObjectDeserializer::CommitPostProcessedObjects()",93957340541024,93957340541399],["v8::internal::ReadOnlySerializer::SerializeObjectImpl(v8::internal::Handle<v8::internal::HeapObject>)",93957340541968,93957340542402],["v8::internal::ReadOnlySerializer::FinalizeSerialization()",93957340542544,93957340542610],["v8::internal::ReadOnlySerializer::SerializeUsingReadOnlyObjectCache(v8::internal::SnapshotByteSink*, v8::internal::Handle<v8::internal::HeapObject>)",93957340542656,93957340542754],["v8::internal::RootsSerializer::SerializeInObjectCache(v8::internal::Handle<v8::internal::HeapObject>)",93957340543072,93957340543158],["v8::internal::Serializer::ObjectSerializer::SerializePrologue(v8::internal::SnapshotSpace, int, v8::internal::Map)",93957340549744,93957340550340],["v8::internal::StartupDeserializer::DeserializeStringTable()",93957340572432,93957340572582],["v8::internal::FixedArrayBuilder::EnsureCapacity(v8::internal::Isolate*, int)",93957340576640,93957340576735],["v8::internal::HeapStringAllocator::allocate(unsigned int)",93957340579712,93957340579801],["v8::internal::StringStream::PrintName(v8::internal::Object)",93957340583680,93957340583804],["v8::internal::HeapStringAllocator::grow(unsigned int*)",93957340587584,93957340587758],["unibrow::Utf8::ValidateEncoding(unsigned char const*, unsigned long)",93957340589264,93957340589345],["int v8::internal::(anonymous namespace)::UnescapeChar<unsigned short>(v8::internal::Vector<unsigned short const>, int, int, int*)",93957340599408,93957340599829],["v8::internal::CancelableTaskManager::TryAbort(unsigned long)",93957340600720,93957340601270],["v8::internal::CancelableTask::CancelableTask(v8::internal::CancelableTaskManager*)",93957340602448,93957340602649],["non-virtual thunk to v8::internal::CancelableIdleTask::Run(double)",93957340602960,93957340602994],["v8::internal::MakeCancelableTask(v8::internal::Isolate*, std::__1::function<void ()>)",93957340603200,93957340603382],["v8::internal::(anonymous namespace)::CancelableFuncTask::~CancelableFuncTask()",93957340603840,93957340603911],["v8::internal::(anonymous namespace)::CancelableIdleFuncTask::~CancelableIdleFuncTask()",93957340604080,93957340604143],["non-virtual thunk to v8::internal::(anonymous namespace)::CancelableIdleFuncTask::~CancelableIdleFuncTask()",93957340604304,93957340604376],["v8::tracing::TracedValue::Create()",93957340605024,93957340605069],["v8::tracing::TracedValue::SetInteger(char const*, int)",93957340605152,93957340605311],["v8::tracing::TracedValue::SetString(char const*, char const*)",93957340605520,93957340605629],["v8::tracing::TracedValue::BeginDictionary(char const*)",93957340605984,93957340606099],["v8::tracing::TracedValue::AppendInteger(int)",93957340606240,93957340606357],["v8::tracing::TracedValue::BeginDictionary()",93957340606512,93957340606572],["v8::tracing::TracedValue::EndArray()",93957340606624,93957340606658],["v8::tracing::TracingCategoryObserver::SetUp()",93957340606752,93957340606820],["v8::tracing::TracingCategoryObserver::OnTraceEnabled()",93957340606896,93957340607358],["v8::internal::trap_handler::TryFindLandingPad(unsigned long, unsigned long*)",93957340607424,93957340607647],["v8::internal::trap_handler::ReleaseHandlerData(int)",93957340608144,93957340608253],["v8::internal::trap_handler::GetRecoveredTrapCount()",93957340608288,93957340608304],["v8::internal::trap_handler::MetadataLock::MetadataLock()",93957340608368,93957340608419],["v8::internal::RootIndexMap::RootIndexMap(v8::internal::Isolate*)",93957340608480,93957340608854],["v8::internal::GetPlatformPageAllocator()",93957340608976,93957340609128],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::handleProgramBreak(v8::Local<v8::Context>, v8::Local<v8::Value>, std::__1::vector<int, std::__1::allocator<int> > const&, v8::debug::ExceptionType, bool)::$_4, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342548608,93957342548633],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, v8_inspector::V8DebuggerId>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, v8_inspector::V8DebuggerId>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, v8_inspector::V8DebuggerId>, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, v8_inspector::V8DebuggerId>, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, v8_inspector::V8DebuggerId> > >::__emplace_unique_key_args<int, std::__1::pair<int, v8_inspector::V8DebuggerId> >(int const&, std::__1::pair<int, v8_inspector::V8DebuggerId>&&)",93957342551488,93957342552401],["v8_inspector::V8HeapProfilerAgentImpl::startTrackingHeapObjects(v8_crdtp::detail::ValueMaybe<bool>)",93957342553840,93957342554088],["v8_inspector::V8HeapProfilerAgentImpl::disable()",93957342554608,93957342554817],["v8_inspector::V8HeapProfilerAgentImpl::getObjectByHeapObjectId(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*)",93957342555440,93957342556219],["v8_inspector::V8HeapProfilerAgentImpl::getHeapObjectId(v8_inspector::String16 const&, v8_inspector::String16*)",93957342556688,93957342557021],["v8_inspector::V8HeapProfilerAgentImpl::startSampling(v8_crdtp::detail::ValueMaybe<double>)",93957342557136,93957342557508],["v8_inspector::V8HeapProfilerAgentImpl::getSamplingProfile(std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::SamplingHeapProfile, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::SamplingHeapProfile> >*)",93957342557648,93957342558301],["v8_crdtp::UberDispatcher::Dispatch(v8_crdtp::Dispatchable const&) const",93957342759616,93957342760804],["v8_crdtp::json::ConvertCBORToJSON(v8_crdtp::span<unsigned char>, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342769888,93957342770041],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleBinary(v8_crdtp::span<unsigned char>)",93957342780368,93957342783068],["_ZNSt3__16vectorIhNS_9allocatorIhEEE6insertIPKcEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIhNS_15iterator_traitsIS8_E9referenceEEE5valueENS_11__wrap_iterIPhEEE4typeENSC_IPKhEES8_S8_",93957342784592,93957342786840],["v8_crdtp::json::(anonymous namespace)::JsonParser<unsigned short>::ParseToken(unsigned short const*, unsigned short const*, unsigned short const**, unsigned short const**)",93957342795648,93957342797219],["v8_crdtp::DeserializerState::ErrorMessage(v8_crdtp::span<char>) const",93957342798544,93957342798922],["v8_crdtp::DeserializerDescriptor::DeserializeField(v8_crdtp::DeserializerState*, v8_crdtp::span<char>, int*, void*) const",93957342799600,93957342799897],["v8_crdtp::ProtocolTypeTraits<int, void>::Serialize(int, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342800384,93957342800394],["v8_crdtp::ObjectSerializer::ObjectSerializer()",93957342800912,93957342800963],["v8_crdtp::ObjectSerializer::Finish()",93957342801008,93957342801098],["v8_crdtp::ProtocolTypeTraits<double, void>::Serialize(double, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342801232,93957342801242],["std::__1::__shared_ptr_pointer<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, std::__1::shared_ptr<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const>::__shared_ptr_default_delete<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >, std::__1::allocator<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >::__on_zero_shared()",93957342801312,93957342801365],["v8_crdtp::IncomingDeferredMessage::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342802128,93957342802159],["v8_crdtp::IncomingDeferredMessage::~IncomingDeferredMessage()",93957342802240,93957342802316],["v8_crdtp::Serializable::Serialize() const",93957342802416,93957342802460],["v8_crdtp::(anonymous namespace)::PreSerialized::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342802624,93957342802652],["v8::internal::compiler::InstructionSequence::SetSourcePosition(v8::internal::compiler::Instruction const*, v8::internal::SourcePosition)",93957343001392,93957343001613],["v8::internal::compiler::RegisterState::AllocatePendingUse(v8::internal::compiler::RegisterIndex, int, v8::internal::compiler::InstructionOperand*, bool, int)",93957343013904,93957343014161],["v8::internal::compiler::SinglePassRegisterAllocator::AllocateUseWithMove(v8::internal::compiler::RegisterIndex, v8::internal::compiler::VirtualRegisterData&, v8::internal::compiler::UnallocatedOperand*, int, v8::internal::compiler::SinglePassRegisterAllocator::UsePosition)",93957343020160,93957343020479],["v8::internal::compiler::SinglePassRegisterAllocator::AllocatePhiGapMove(v8::internal::compiler::VirtualRegisterData&, v8::internal::compiler::VirtualRegisterData&, int)",93957343027136,93957343027878],["v8::internal::compiler::MidTierRegisterAllocator::ReserveFixedRegisters(int)",93957343036592,93957343037339],["v8::internal::compiler::MidTierSpillSlotAllocator::Allocate(v8::internal::compiler::VirtualRegisterData*)",93957343038944,93957343039426],["v8::internal::compiler::PopulateReferenceMaps(v8::internal::compiler::MidTierRegisterAllocationData*)",93957343042176,93957343042581],["unsigned int std::__1::__sort4<v8::internal::compiler::AllocateSpillSlots(v8::internal::compiler::MidTierRegisterAllocationData*)::$_0&, v8::internal::compiler::VirtualRegisterData**>(v8::internal::compiler::VirtualRegisterData**, v8::internal::compiler::VirtualRegisterData**, v8::internal::compiler::VirtualRegisterData**, v8::internal::compiler::VirtualRegisterData**, v8::internal::compiler::AllocateSpillSlots(v8::internal::compiler::MidTierRegisterAllocationData*)::$_0&)",93957343046112,93957343046374],["v8::internal::compiler::MoveOptimizer::Run()",93957343047248,93957343047938],["v8::internal::compiler::MoveOptimizer::OptimizeMerge(v8::internal::compiler::InstructionBlock*)",93957343048432,93957343053421],["v8::internal::compiler::MoveOptimizer::RemoveClobberedDestinations(v8::internal::compiler::Instruction*)",93957343054800,93957343057354],["v8::internal::compiler::MoveOptimizer::MigrateMoves(v8::internal::compiler::Instruction*, v8::internal::compiler::Instruction*)",93957343057664,93957343064819],["v8::internal::compiler::(anonymous namespace)::LoadCompare(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*)",93957343066032,93957343066495],["unsigned int std::__1::__sort4<bool (*&)(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*), v8::internal::compiler::MoveOperands**>(v8::internal::compiler::MoveOperands**, v8::internal::compiler::MoveOperands**, v8::internal::compiler::MoveOperands**, v8::internal::compiler::MoveOperands**, bool (*&)(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*))",93957343068160,93957343068478],["bool std::__1::__insertion_sort_incomplete<bool (*&)(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*), v8::internal::compiler::MoveOperands**>(v8::internal::compiler::MoveOperands**, v8::internal::compiler::MoveOperands**, bool (*&)(v8::internal::compiler::MoveOperands const*, v8::internal::compiler::MoveOperands const*))",93957343068816,93957343069626],["v8::internal::compiler::RegisterAllocatorVerifier::BuildConstraint(v8::internal::compiler::InstructionOperand const*, v8::internal::compiler::RegisterAllocatorVerifier::OperandConstraint*)",93957343071024,93957343071425],["v8::internal::compiler::BytecodeGraphBuilder::VisitBytecodes()",93957343213648,93957343214019],["v8::internal::compiler::BytecodeGraphBuilder::VisitMod()",93957343233712,93957343233812],["v8::internal::compiler::BytecodeGraphBuilder::VisitToBooleanLogicalNot()",93957343236400,93957343236591],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallRuntimeForPair()",93957343241792,93957343242179],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestInstanceOf()",93957343245696,93957343245796],["v8::internal::compiler::BytecodeGraphBuilder::VisitToNumeric()",93957343248096,93957343248437],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateEmptyObjectLiteral()",93957343249936,93957343250030],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateWithContext()",93957343251968,93957343252230],["v8::internal::compiler::BytecodeGraphBuilder::VisitJumpIfJSReceiver()",93957343253072,93957343253193],["v8::internal::compiler::BytecodeGraphBuilder::VisitForInEnumerate()",93957343253760,93957343253877],["v8::internal::compiler::BytecodeGraphBuilder::VisitForInStep()",93957343255520,93957343255780],["v8::internal::compiler::BytecodeGraphBuilder::VisitReturn()",93957343257728,93957343257784],["v8::internal::compiler::BytecodeGraphBuilder::VisitThrowIfNotSuperConstructor()",93957343258400,93957343259972],["v8::internal::compiler::BytecodeGraphBuilder::VisitGetIterator()",93957343262080,93957343262570],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar15()",93957343263920,93957343263988],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar11()",93957343264240,93957343264308],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar8()",93957343264480,93957343264548],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar6()",93957343264640,93957343264708],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar4()",93957343264800,93957343264868],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar2()",93957343264960,93957343265028],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar0()",93957343265120,93957343265183],["v8::internal::compiler::BytecodeGraphBuilder::CheckContextExtensionAtDepth(v8::internal::compiler::BytecodeGraphBuilder::Environment*, unsigned int)",93957343265504,93957343266057],["v8::internal::compiler::BytecodeGraphBuilder::CheckContextExtensions(unsigned int)",93957343266368,93957343266588],["v8::internal::compiler::BytecodeGraphBuilder::BuildLdaLookupContextSlot(v8::internal::TypeofMode)",93957343267152,93957343267620],["v8::internal::compiler::BytecodeGraphBuilder::BuildNamedStore(v8::internal::compiler::BytecodeGraphBuilder::StoreMode)",93957343268400,93957343269172],["v8::internal::compiler::BytecodeGraphBuilder::BuildCall(v8::internal::ConvertReceiverMode, v8::internal::compiler::Node* const*, unsigned long, int)",93957343269360,93957343269986],["v8::internal::compiler::BytecodeGraphBuilder::BuildHoleCheckAndThrow(v8::internal::compiler::Node*, v8::internal::Runtime::FunctionId, v8::internal::compiler::Node*)",93957343271232,93957343272593],["v8::internal::compiler::BytecodeGraphBuilder::BuildBinaryOp(v8::internal::compiler::Operator const*)",93957343273008,93957343273445],["v8::internal::compiler::BytecodeGraphBuilder::BuildDelete(v8::internal::LanguageMode)",93957343273904,93957343274241],["v8::internal::compiler::BytecodeGraphBuilder::BuildJumpIfTrue()",93957343274432,93957343275076],["v8::internal::compiler::BytecodeGraphBuilder::BuildSwitchOnSmi(v8::internal::compiler::Node*)",93957343275744,93957343276293],["v8::internal::compiler::BytecodeGraphBuilder::BuildReturn(v8::internal::compiler::BytecodeLivenessState const*)",93957343276768,93957343277706],["v8::internal::compiler::PipelineStatistics::BeginPhaseKind(char const*)",93957344624368,93957344624628],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::LateOptimizationPhase>()",93957344650320,93957344650705],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::InstructionStartsAsJSON const&)",93957344671376,93957344671940],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::PopulateReferenceMapsPhase>()",93957344678912,93957344679307],["void v8::internal::compiler::GraphTrimmer::TrimGraph<std::__1::__wrap_iter<v8::internal::compiler::Node**> >(std::__1::__wrap_iter<v8::internal::compiler::Node**>, std::__1::__wrap_iter<v8::internal::compiler::Node**>)",93957344684016,93957344684824],["v8::internal::compiler::(anonymous namespace)::NodeOriginsWrapper::Reduce(v8::internal::compiler::Node*)",93957344689792,93957344689944],["v8::internal::compiler::TypeAssertionsPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344699088,93957344699510],["v8::internal::compiler::LateOptimizationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344704720,93957344706581],["v8::internal::compiler::LateGraphTrimmingPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344710528,93957344710724],["v8::internal::compiler::PropertyAccessBuilder::TryBuildNumberCheck(v8::internal::compiler::JSHeapBroker*, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > const&, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node*)",93957344711824,93957344712122],["v8::internal::compiler::PropertyAccessBuilder::FoldLoadDictPrototypeConstant(v8::internal::compiler::PropertyAccessInfo const&)",93957344713296,93957344713704],["v8::internal::compiler::PropertyAccessBuilder::BuildLoadDataField(v8::internal::compiler::NameRef const&, v8::internal::compiler::PropertyAccessInfo const&, v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957344715760,93957344716299],["v8::internal::compiler::RedundancyElimination::ReduceCheckNode(v8::internal::compiler::Node*)",93957344716512,93957344717016],["v8::internal::compiler::RedundancyElimination::ReduceStart(v8::internal::compiler::Node*)",93957344719936,93957344720187],["v8::internal::compiler::RefsMap::RefsMap(unsigned int, v8::internal::compiler::AddressMatcher, v8::internal::Zone*)",93957344721024,93957344721208],["v8::internal::compiler::Truncation::description() const",93957344721904,93957344722041],["v8::internal::compiler::Truncation::GeneralizeIdentifyZeros(v8::internal::compiler::IdentifyZeros, v8::internal::compiler::IdentifyZeros)",93957344722416,93957344722432],["v8::internal::compiler::RepresentationChanger::GetRepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::compiler::Node*, v8::internal::compiler::UseInfo)",93957344722496,93957344723075],["v8::internal::compiler::RepresentationChanger::InsertConversion(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::Node*)",93957344723424,93957344723789],["v8::internal::compiler::RepresentationChanger::GetTaggedPointerRepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::compiler::Node*, v8::internal::compiler::UseInfo)",93957344725056,93957344726093],["v8::internal::compiler::RepresentationChanger::GetFloat32RepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::compiler::Truncation)",93957344727328,93957344728068],["v8::internal::compiler::RepresentationChanger::GetBitRepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type)",93957344729376,93957344730109],["v8::internal::compiler::RepresentationChanger::GetWord64RepresentationFor(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::compiler::Node*, v8::internal::compiler::UseInfo)",93957344732528,93957344734451],["v8::internal::compiler::RepresentationChanger::InsertChangeFloat64ToInt32(v8::internal::compiler::Node*)",93957344734544,93957344734610],["v8::internal::compiler::RepresentationChanger::InsertCheckedFloat64ToInt32(v8::internal::compiler::Node*, v8::internal::compiler::CheckForMinusZeroMode, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::Node*)",93957344734704,93957344734771],["v8::internal::compiler::RepresentationChanger::InsertChangeBitToTagged(v8::internal::compiler::Node*)",93957344734864,93957344734933],["v8::internal::compiler::RepresentationChanger::InsertChangeInt32ToFloat64(v8::internal::compiler::Node*)",93957344735408,93957344735474],["v8::internal::compiler::RepresentationChanger::InsertChangeTaggedSignedToInt32(v8::internal::compiler::Node*)",93957344735536,93957344735605],["v8::internal::compiler::RepresentationChanger::Int32OverflowOperatorFor(v8::internal::compiler::IrOpcode::Value)",93957344735824,93957344735937],["v8::internal::compiler::RepresentationChanger::TaggedSignedOperatorFor(v8::internal::compiler::IrOpcode::Value)",93957344736032,93957344736107],["v8::internal::compiler::RepresentationChanger::Uint32OverflowOperatorFor(v8::internal::compiler::IrOpcode::Value)",93957344736288,93957344736356],["v8::internal::compiler::BasicBlock::BasicBlock(v8::internal::Zone*, v8::internal::compiler::BasicBlock::Id)",93957344736960,93957344737063],["v8::internal::compiler::Operator1<v8::internal::compiler::AllocateParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::AllocateParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::AllocateParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957345086752,93957345086794],["v8::internal::compiler::Typer::Visitor::ObjectIsNumber(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345130704,93957345130822],["v8::internal::compiler::Typer::Visitor::TypeCheckNumber(v8::internal::compiler::Node*)",93957345142208,93957345142301],["v8::internal::compiler::Type::Intersect(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::Zone*)",93957345148672,93957345149143],["v8::internal::compiler::Verifier::Visitor::Check(v8::internal::compiler::Node*, v8::internal::compiler::AllNodes const&)",93957345158560,93957345167030],["v8::internal::compiler::ZoneStats::NewEmptyZone(char const*, bool)",93957345177536,93957345177825],["std::__1::vector<v8::internal::compiler::Node*, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> >::vector(unsigned long, v8::internal::compiler::Node* const&, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> const&)",93957345198688,93957345199050],["v8::internal::compiler::SimdScalarLowering::LowerCompareOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::Operator const*, bool)",93957345227936,93957345228773],["v8::internal::compiler::SimdScalarLowering::LowerNotEqual(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::Operator const*)",93957345239088,93957345239775],["v8::internal::compiler::SimdScalarLowering::Float64ToInt64(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345243776,93957345243940],["v8::internal::compiler::JSWasmCallData::JSWasmCallData(v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957345248416,93957345248595],["v8::internal::compiler::WasmGraphBuilder::SetEffectControl(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345249488,93957345249501],["v8::internal::compiler::WasmGraphBuilder::RefNull()",93957345250240,93957345250417],["v8::internal::compiler::WasmGraphBuilder::Int64Constant(long)",93957345251632,93957345251646],["v8::internal::compiler::WasmGraphBuilder::BuildI32RemU(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345255248,93957345255306],["v8::internal::compiler::WasmGraphBuilder::BuildI64Rol(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345257728,93957345258056],["v8::internal::compiler::WasmGraphBuilder::BuildI32AsmjsRemU(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345262224,93957345262578],["v8::internal::compiler::WasmGraphBuilder::BuildI32AsmjsSConvertF32(v8::internal::compiler::Node*)",93957345266944,93957345266978],["v8::internal::compiler::WasmGraphBuilder::BuildF32Ceil(v8::internal::compiler::Node*)",93957345267392,93957345267436],["v8::internal::compiler::WasmGraphBuilder::BuildF64Ceil(v8::internal::compiler::Node*)",93957345267584,93957345267628],["v8::internal::compiler::WasmGraphBuilder::BuildF64Asin(v8::internal::compiler::Node*)",93957345267776,93957345267820],["v8::internal::compiler::WasmGraphBuilder::BuildF32UConvertI64(v8::internal::compiler::Node*)",93957345268320,93957345268367],["v8::internal::compiler::WasmGraphBuilder::BuildAsmjsLoadMem(v8::internal::MachineType, v8::internal::compiler::Node*)",93957345270208,93957345270809],["v8::internal::compiler::WasmGraphBuilder::BranchNoHint(v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345270912,93957345271112],["v8::internal::compiler::WasmGraphBuilder::Switch(unsigned int, v8::internal::compiler::Node*)",93957345271664,93957345271750],["v8::internal::compiler::WasmGraphBuilder::Trap(v8::internal::wasm::TrapReason, int)",93957345272304,93957345272380],["v8::internal::compiler::WasmGraphBuilder::BuildCFuncInstruction(v8::internal::ExternalReference, v8::internal::MachineType, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345273456,93957345273751],["v8::internal::compiler::WasmGraphBuilder::BuildEncodeException32BitValue(v8::internal::compiler::Node*, unsigned int*, v8::internal::compiler::Node*)",93957345276400,93957345276843],["v8::internal::compiler::WasmGraphBuilder::Rethrow(v8::internal::compiler::Node*)",93957345277952,93957345278120],["v8::internal::compiler::WasmGraphBuilder::BuildDiv64Call(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::ExternalReference, v8::internal::MachineType, v8::internal::wasm::TrapReason, int)",93957345279888,93957345280213],["v8::internal::compiler::WasmGraphBuilder::BuildWasmReturnCall(v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::Vector<v8::internal::compiler::Node*>, int, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::UseRetpoline)",93957345282032,93957345282229],["v8::internal::compiler::WasmGraphBuilder::CallIndirect(unsigned int, unsigned int, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::Vector<v8::internal::compiler::Node*>, int)",93957345283280,93957345283315],["v8::internal::compiler::WasmGraphBuilder::BuildLoadJumpTableOffsetFromExportedFunctionData(v8::internal::compiler::Node*)",93957345285504,93957345285714],["v8::internal::compiler::WasmGraphAssembler::HasInstanceType(v8::internal::compiler::Node*, v8::internal::InstanceType)",93957345288272,93957345288540],["v8::internal::compiler::WasmGraphBuilder::ReturnCallRef(unsigned int, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::compiler::WasmGraphBuilder::CheckForNull, int)",93957345288592,93957345288628],["v8::internal::compiler::WasmGraphBuilder::ReturnCallIndirect(unsigned int, unsigned int, v8::internal::Vector<v8::internal::compiler::Node*>, int)",93957345288832,93957345288874],["v8::internal::compiler::WasmGraphBuilder::InitInstanceCache(v8::internal::compiler::WasmInstanceCacheNodes*)",93957345289120,93957345289510],["v8::internal::compiler::WasmGraphBuilder::NewInstanceCacheMerge(v8::internal::compiler::WasmInstanceCacheNodes*, v8::internal::compiler::WasmInstanceCacheNodes*, v8::internal::compiler::Node*)",93957345289760,93957345290044],["v8::internal::compiler::WasmGraphBuilder::CreateOrMergeIntoPhi(v8::internal::MachineRepresentation, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345290176,93957345290968],["v8::internal::compiler::WasmGraphBuilder::GetGlobalBaseAndOffset(v8::internal::MachineType, v8::internal::wasm::WasmGlobal const&, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345291760,93957345292277],["v8::internal::compiler::WasmGraphBuilder::CurrentMemoryPages()",93957345292848,93957345292987],["v8::internal::compiler::WasmGraphBuilder::GlobalGet(unsigned int)",93957345293392,93957345293910],["v8::internal::compiler::WasmGraphBuilder::TableGet(unsigned int, v8::internal::compiler::Node*, int)",93957345294464,93957345294653],["v8::internal::compiler::WasmGraphBuilder::CheckBoundsAndAlignment(signed char, v8::internal::compiler::Node*, unsigned long, int)",93957345294880,93957345295205],["v8::internal::compiler::WasmGraphBuilder::GetSafeLoadOperator(int, v8::internal::wasm::ValueType)",93957345295680,93957345295829],["v8::internal::compiler::WasmGraphBuilder::TraceFunctionExit(v8::internal::Vector<v8::internal::compiler::Node*>, int)",93957345295936,93957345296225],["v8::internal::compiler::WasmGraphBuilder::LoadLane(v8::internal::wasm::ValueType, v8::internal::MachineType, v8::internal::compiler::Node*, v8::internal::compiler::Node*, unsigned long, unsigned int, unsigned char, int)",93957345296592,93957345297017],["v8::internal::compiler::WasmGraphBuilder::LoadMem(v8::internal::wasm::ValueType, v8::internal::MachineType, v8::internal::compiler::Node*, unsigned long, unsigned int, int)",93957345297776,93957345298417],["v8::internal::compiler::WasmGraphBuilder::StoreMem(v8::internal::MachineRepresentation, v8::internal::compiler::Node*, unsigned long, unsigned int, v8::internal::compiler::Node*, int, v8::internal::wasm::ValueType)",93957345298864,93957345299450],["v8::internal::compiler::WasmGraphBuilder::BuildF64x2Floor(v8::internal::compiler::Node*)",93957345299504,93957345299548],["v8::internal::compiler::WasmGraphBuilder::BuildF64x2NearestInt(v8::internal::compiler::Node*)",93957345299600,93957345299644],["v8::internal::compiler::WasmGraphBuilder::BuildF32x4Floor(v8::internal::compiler::Node*)",93957345299696,93957345299740],["v8::internal::compiler::WasmGraphBuilder::BuildF32x4NearestInt(v8::internal::compiler::Node*)",93957345299792,93957345299836],["v8::internal::compiler::WasmGraphBuilder::GetI64AtomicWaitCallDescriptor()",93957345300080,93957345300313],["v8::internal::compiler::(anonymous namespace)::CreateMachineSignature(v8::internal::Zone*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::compiler::WasmGraphBuilder::CallOrigin)",93957345300832,93957345301419],["v8::internal::compiler::WasmGraphBuilder::SimdOp(v8::internal::wasm::WasmOpcode, v8::internal::compiler::Node* const*)",93957345301488,93957345306266],["v8::internal::compiler::WasmGraphBuilder::Simd8x16ShuffleOp(unsigned char const*, v8::internal::compiler::Node* const*)",93957345306736,93957345306946],["v8::internal::compiler::WasmGraphBuilder::AtomicFence()",93957345308704,93957345308792],["v8::internal::compiler::WasmGraphBuilder::DataDrop(unsigned int, int)",93957345309104,93957345309362],["v8::internal::compiler::WasmGraphBuilder::MemoryFill(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345309632,93957345309873],["v8::internal::compiler::WasmGraphBuilder::ElemDrop(unsigned int, int)",93957345310240,93957345310410],["v8::internal::compiler::WasmGraphBuilder::TableGrow(unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345310768,93957345311061],["v8::internal::compiler::WasmGraphBuilder::TableFill(unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345311472,93957345311724],["v8::internal::compiler::WasmGraphAssembler::StoreStructField(v8::internal::compiler::Node*, v8::internal::wasm::StructType const*, unsigned int, v8::internal::compiler::Node*)",93957345312032,93957345312623],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<signed char, signed char>&, signed char*>(signed char*, signed char*, std::__1::__less<signed char, signed char>&)",93957346614160,93957346614667],["unsigned int std::__1::__sort5<std::__1::__less<unsigned char, unsigned char>&, unsigned char*>(unsigned char*, unsigned char*, unsigned char*, unsigned char*, unsigned char*, std::__1::__less<unsigned char, unsigned char>&)",93957346616064,93957346616325],["void std::__1::__sort<std::__1::__less<short, short>&, short*>(short*, short*, std::__1::__less<short, short>&)",93957346616848,93957346618394],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<short, short>&, short*>(short*, short*, std::__1::__less<short, short>&)",93957346618720,93957346619325],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<unsigned short, unsigned short>&, unsigned short*>(unsigned short*, unsigned short*, std::__1::__less<unsigned short, unsigned short>&)",93957346621200,93957346621805],["void std::__1::__sort<std::__1::__less<unsigned int, unsigned int>&, unsigned int*>(unsigned int*, unsigned int*, std::__1::__less<unsigned int, unsigned int>&)",93957346624000,93957346625400],["unsigned int std::__1::__sort5<std::__1::__less<unsigned long, unsigned long>&, unsigned long*>(unsigned long*, unsigned long*, unsigned long*, unsigned long*, unsigned long*, std::__1::__less<unsigned long, unsigned long>&)",93957346627648,93957346627916],["__clang_call_terminate",93957346630704,93957346630715],["std::uncaught_exception()",93957346630832,93957346630848],["std::__1::__iostream_category::name() const",93957346634432,93957346634445],["std::__1::ios_base::__call_callbacks(std::__1::ios_base::event)",93957346634608,93957346634679],["std::__1::ios_base::clear(unsigned int)",93957346634880,93957346634918],["std::__1::ios_base::copyfmt(std::__1::ios_base const&)",93957346635184,93957346635892],["std::__1::basic_ios<char, std::__1::char_traits<char> >::~basic_ios()",93957346635936,93957346635946],["std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf()",93957346636064,93957346636088],["std::__1::basic_streambuf<char, std::__1::char_traits<char> >::basic_streambuf()",93957346636144,93957346636194],["std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsgetn(char*, long)",93957346636224,93957346636422],["std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsputn(char const*, long)",93957346636496,93957346636679],["std::__1::basic_streambuf<wchar_t, std::__1::char_traits<wchar_t> >::~basic_streambuf()",93957346636720,93957346636762],["std::__1::basic_streambuf<wchar_t, std::__1::char_traits<wchar_t> >::xsgetn(wchar_t*, long)",93957346636832,93957346637030],["std::__1::basic_streambuf<wchar_t, std::__1::char_traits<wchar_t> >::xsputn(wchar_t const*, long)",93957346637088,93957346637270],["virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()",93957346637296,93957346637320],["virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()",93957346637360,93957346637403],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()",93957346637808,93957346638026],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()",93957346638256,93957346638270],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::~basic_ostream()",93957346638304,93957346638336],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957346638384,93957346638442],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(bool)",93957346638592,93957346638987],["non-virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream()",93957346648912,93957346649020],["std::__1::__stdinbuf<char>::__getchar(bool)",93957346652688,93957346653058],["std::__1::__stdoutbuf<wchar_t>::xsputn(wchar_t const*, long)",93957346654560,93957346654667],["std::__1::collate<wchar_t>::do_compare(wchar_t const*, wchar_t const*, wchar_t const*, wchar_t const*) const",93957346655440,93957346655506],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_signed<long>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, long&) const",93957346657808,93957346658940],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_unsigned<unsigned short>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, unsigned short&) const",93957346660112,93957346661244],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_unsigned<unsigned long>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, unsigned long&) const",93957346662416,93957346663548],["std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get_floating_point<float>(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, float&) const",93957346664720,93957346665979],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, long double&) const",93957346667264,93957346667274],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, void*&) const",93957346668560,93957346669787],["std::__1::__libcpp_sscanf_l(char const*, __locale_struct*, char const*, ...)",93957346670416,93957346670607],["std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const* std::__1::__scan_keyword<std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const*, std::__1::ctype<wchar_t> >(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >&, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const*, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const*, std::__1::ctype<wchar_t> const&, unsigned int&, bool)",93957346671344,93957346672618],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_signed<long>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, long&) const",93957346672640,93957346673944],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_signed<long long>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, long long&) const",93957346673968,93957346675272],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_unsigned<unsigned short>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, unsigned short&) const",93957346675296,93957346676600],["std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::num_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get_unsigned<unsigned int>(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, unsigned int&) const",93957346676624,93957346677928],["srand48_r",139871563520832,139871563520867],["__strtol_l",139871563524592,139871563524602],["__strtold_internal",139871563525920,139871563525936],["strtof64x_l",139871563556448,139871563556458],["__strtold_nan",139871563556832,139871563557027],["realpath",139871563558528,139871563559932],["a64l",139871563559952,139871563560005],["rpmatch",139871563560240,139871563560323],["register_printf_specifier",139871563603600,139871563603890],["fscanf",139871563616496,139871563616673],["remove",139871563619984,139871563620039],["__isoc99_vscanf",139871563620784,139871563620810],["_IO_file_doallocate",139871563735216,139871563735567],["fgetpos",139871563737136,139871563737536],["fopencookie",139871563738704,139871563738904],["fread",139871563739296,139871563739589],["fgetc",139871563771584,139871563771896],["__fpurge",139871563777088,139871563777191],["getchar_unlocked",139871563780928,139871563780965],["_IO_file_sync",139871563782000,139871563782225],["_IO_file_stat",139871563785776,139871563785792],["_IO_file_init",139871563787824,139871563787886],["_IO_file_finish",139871563788304,139871563788463],["_IO_file_underflow",139871563790112,139871563790933],["_IO_default_xsputn",139871563795248,139871563795520],["_IO_init_marker",139871563799760,139871563799844],["_IO_iter_end",139871563800656,139871563800659],["_IO_str_pbackfail",139871563801888,139871563801910],["pthread_attr_setscope",139871563803104,139871563803139],["pthread_cond_init",139871563803344,139871563803379],["pthread_cond_wait",139871563803440,139871563803475],["pthread_exit",139871563803536,139871563803579],["pthread_setschedparam",139871563803632,139871563803667],["pthread_mutex_init",139871563803728,139871563803763],["pthread_mutex_unlock",139871563803824,139871563803859],["pthread_setcanceltype",139871563803920,139871563803955],["__register_atfork",139871563804352,139871563804782],["mprobe",139871563834640,139871563834792],["strtok",139871563844944,139871563844956],["__strcoll_l",139871563854672,139871563858480],["wcsdup",139871563948880,139871563948944],["__mbrtowc",139871563951184,139871563951721],["wcstof",139871563954768,139871563954786],["__isoc99_wscanf",139871564000240,139871564000443],["wcstof128",139871564013024,139871564013042],["gmtime",139871564021760,139871564021777],["setitimer",139871564034992,139871564035025],["strftime",139871564049456,139871564049472],["clock_settime",139871564069776,139871564069852],["telldir",139871564073376,139871564073381],["fdopendir",139871564074400,139871564074591],["getgrgid",139871564078064,139871564078502],["getgrgid_r",139871564080400,139871564081586],["__copy_grp",139871564084288,139871564084802],["putpwent",139871564086048,139871564086441],["setpwent",139871564087536,139871564087738],["getpwuid_r",139871564089248,139871564090241],["times",139871564091680,139871564091756],["wait4",139871564091824,139871564091987],["pause",139871564092336,139871564092459],["_exit",139871564093040,139871564093112],["execle",139871564093488,139871564093872],["execvpe",139871564095664,139871564095674],["geteuid",139871564095744,139871564095752],["setuid",139871564095840,139871564095984],["__setpgid",139871564096336,139871564096369],["getsid",139871564096432,139871564096465],["setresuid",139871564096624,139871564096776],["__sysconf",139871564099424,139871564100496],["glob",139871564103776,139871564110448],["glob_pattern_p",139871564110544,139871564110653],["re_compile_pattern",139871564186256,139871564186375],["re_compile_fastmap",139871564186416,139871564186580],["regerror",139871564188048,139871564188180],["re_comp",139871564188272,139871564188560],["re_match",139871564188928,139871564188952],["re_match_2",139871564188992,139871564189259],["re_set_registers",139871564189536,139871564189595],["confstr",139871564192320,139871564193874],["__posix_getopt",139871564197440,139871564197464],["getopt_long_only",139871564197536,139871564197558],["__sched_getparam",139871564197648,139871564197681],["__sched_getscheduler",139871564197744,139871564197777],["__sched_get_priority_max",139871564197840,139871564197873],["sched_rr_get_interval",139871564197936,139871564197969],["sched_setaffinity",139871564198096,139871564198174],["freeaddrinfo",139871564213632,139871564213689],["wordfree",139871564227616,139871564227713],["__libc_pread",139871564230992,139871564231157],["posix_spawn_file_actions_init",139871564231408,139871564231434],["posix_spawn_file_actions_addclose",139871564231552,139871564231658],["posix_spawn_file_actions_adddup2",139871564231840,139871564231962],["posix_spawn_file_actions_addfchdir_np",139871564232144,139871564232223],["posix_spawnattr_destroy",139871564232272,139871564232275],["posix_spawnattr_setsigdefault",139871564232368,139871564232442],["posix_spawnattr_setflags",139871564232464,139871564232482],["posix_spawnattr_setpgroup",139871564232512,139871564232518],["posix_spawnp",139871564232544,139871564232560],["posix_spawnattr_getschedpolicy",139871564234640,139871564234651],["posix_spawnattr_setsigmask",139871564234672,139871564234770],["pthread_cond_timedwait",139871564539232,139871564539267],["sched_getaffinity",139871564546384,139871564546486],["posix_spawnp",139871564546608,139871564546624],["fdetach",139871564546656,139871564546676],["pthread_yield",139871566591328,139871566591333],["__pthread_attr_getstackaddr",139871566592432,139871566592442],["pthread_getattr_np",139871566592688,139871566593550],["__GI___pthread_mutex_lock",139871566595936,139871566596572],["__pthread_mutex_unlock_full",139871566600944,139871566601869],["__pthread_mutexattr_destroy",139871566604768,139871566604771],["pthread_rwlock_clockwrlock",139871566608960,139871566610108],["pthread_rwlockattr_getpshared",139871566610880,139871566610888],["__pthread_cond_init",139871566610976,139871566611020],["sem_close",139871566622400,139871566622702],["__ftrylockfile",139871566631056,139871566631142],["pthread_mutexattr_getprioceiling",139871566633296,139871566633416],["mtx_timedlock",139871566637360,139871566637438],["tss_get",139871566638128,139871566638133],["_dl_get_tls_static_info",139871566973328,139871566973349],["_dl_exception_free",139871566990416,139871566990454],["_dl_signal_exception",139871567005696,139871567005769],["v8::DelayedTasksPlatform::IdleTasksEnabled(v8::Isolate*)",93957335212240,93957335212258],["v8::DelayedTasksPlatform::CurrentClockTimeMillis()",93957335212432,93957335212447],["v8::Deserializer::GetSharedArrayBufferFromId(v8::Isolate*, unsigned int)",93957335311456,93957335311524],["v8::(anonymous namespace)::MockArrayBufferAllocator::Allocate(unsigned long)",93957335311968,93957335312013],["v8::(anonymous namespace)::MockArrayBufferAllocatiorWithLimit::Allocate(unsigned long)",93957335312128,93957335312196],["v8::(anonymous namespace)::MockArrayBufferAllocatiorWithLimit::Free(void*, unsigned long)",93957335312288,93957335312343],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewFixedDoubleArray(int, v8::internal::AllocationType)",93957336839008,93957336839185],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewUncompiledDataWithoutPreparseData(v8::internal::Handle<v8::internal::String>, int, int)",93957336842480,93957336842496],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewOneByteInternalizedString(v8::internal::Vector<unsigned char const> const&, unsigned int)",93957336843312,93957336843533],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewConsString(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::AllocationType)",93957336844112,93957336845675],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewBigInt(int, v8::internal::AllocationType)",93957336846400,93957336846548],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewSourceTextModuleInfo()",93957336846704,93957336846739],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewClassPositions(int, int)",93957336846928,93957336846978],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::InternalizeString<v8::internal::SeqTwoByteString>(v8::internal::Handle<v8::internal::SeqTwoByteString>, int, int, bool)",93957336847088,93957336847183],["v8::internal::GCTracer::OldGenerationAllocationThroughputInBytesPerMillisecond(double) const",93957336939584,93957336939832],["v8::internal::Heap_WriteBarrierForCodeSlow(v8::internal::Code)",93957336943920,93957336943930],["v8::internal::Heap::GenerationSizesFromHeapSize(unsigned long, unsigned long*, unsigned long*)",93957336947440,93957336947602],["v8::internal::Heap::CommittedMemoryExecutable()",93957336948368,93957336948399],["v8::internal::Heap::AllocationLimitOvershotByLargeMargin()",93957336949600,93957336950278],["v8::internal::Heap::DumpJSONHeapStatistics(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)",93957336957920,93957336960018],["v8::internal::Heap::RemoveHeapObjectAllocationTracker(v8::internal::HeapObjectAllocationTracker*)",93957336961984,93957336962179],["v8::internal::Heap::AddRetainer(v8::internal::HeapObject, v8::internal::HeapObject)",93957336964224,93957336964592],["v8::internal::Heap::GarbageCollectionPrologue()",93957336964928,93957336965785],["v8::internal::Heap::TotalGlobalHandlesSize()",93957336966432,93957336966453],["v8::internal::Heap::MergeAllocationSitePretenuringFeedback(std::__1::unordered_map<v8::internal::AllocationSite, unsigned long, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::AllocationSite>, std::__1::allocator<std::__1::pair<v8::internal::AllocationSite const, unsigned long> > > const&)",93957336966496,93957336966714],["v8::internal::Heap::RemoveAllocationObserversFromAllSpaces(v8::internal::AllocationObserver*, v8::internal::AllocationObserver*)",93957336966976,93957336967225],["v8::internal::Heap::RemoveAllocationSitePretenuringFeedback(v8::internal::AllocationSite)",93957336967408,93957336967807],["v8::internal::Heap::InvalidateCodeDeoptimizationData(v8::internal::Code)",93957336969280,93957336969653],["v8::internal::Heap::GarbageCollectionEpilogueInSafepoint(v8::internal::GarbageCollector)",93957336969968,93957336973201],["v8::internal::Heap::GarbageCollectionEpilogue()",93957336973424,93957336975707],["v8::internal::Heap::GlobalSizeOfObjects()",93957337003008,93957337003186],["v8::internal::Heap::EvacuateYoungGeneration()",93957337004608,93957337005550],["v8::internal::Heap::UnregisterUnprotectedMemoryChunk(v8::internal::MemoryChunk*)",93957337006288,93957337006405],["v8::internal::Heap::ExternalStringTable::IterateYoung(v8::internal::RootVisitor*)",93957337007312,93957337007351],["v8::internal::Heap::ExternalStringTable::UpdateReferences(v8::internal::String (*)(v8::internal::Heap*, v8::internal::FullObjectSlot))",93957337007712,93957337007983],["v8::internal::Heap::ProcessAllWeakReferences(v8::internal::WeakObjectRetainer*)",93957337008016,93957337008121],["v8::internal::Heap::ProcessWeakListRoots(v8::internal::WeakObjectRetainer*)",93957337008176,93957337008286],["v8::internal::Heap::GetFillToAlign(unsigned long, v8::internal::AllocationAlignment)",93957337008640,93957337008689],["v8::internal::Heap::AllocateExternalBackingStore(std::__1::function<void* (unsigned long)> const&, unsigned long)",93957337008784,93957337009112],["v8::internal::Heap::CanMoveObjectStart(v8::internal::HeapObject)",93957337009232,93957337009294],["v8::internal::Heap::OnMoveEvent(v8::internal::HeapObject, v8::internal::HeapObject, int)",93957337009328,93957337009594],["v8::internal::Heap::RightTrimFixedArray(v8::internal::FixedArrayBase, int)",93957337009952,93957337010093],["v8::internal::IncrementalMarking::UpdateMarkedBytesAfterScavenge(unsigned long)",93957337064528,93957337064558],["v8::internal::IncrementalMarkingRootMarkingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337069472,93957337069535],["v8::internal::InvalidatedSlotsFilter::OldToOld(v8::internal::MemoryChunk*)",93957337071184,93957337071215],["v8::internal::InvalidatedSlotsCleanup::NoCleanup(v8::internal::MemoryChunk*)",93957337071632,93957337071683],["v8::internal::LargeObjectSpaceObjectIterator::LargeObjectSpaceObjectIterator(v8::internal::LargeObjectSpace*)",93957337072400,93957337072427],["v8::internal::OldLargeObjectSpace::AllocateRaw(int)",93957337072480,93957337072492],["v8::internal::OldLargeObjectSpace::AllocateRawBackground(v8::internal::LocalHeap*, int)",93957337073136,93957337073638],["v8::internal::CodeLargeObjectSpace::FindPage(unsigned long)",93957337073664,93957337074126],["v8::internal::NewSpace::~NewSpace()",93957337449968,93957337450086],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualCodeDetails(v8::internal::Code)",93957337477440,93957337478008],["v8::internal::FieldStatsCollector::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337481952,93957337481972],["void v8::internal::WeakListVisitor<v8::internal::Context>::DoWeakList<v8::internal::Code>(v8::internal::Heap*, v8::internal::Context, v8::internal::WeakObjectRetainer*, int)",93957337486912,93957337487346],["v8::internal::PagedSpace::TearDown()",93957337488912,93957337489088],["v8::internal::PagedSpace::MergeLocalSpace(v8::internal::LocalSpace*)",93957337490416,93957337490657],["v8::internal::PagedSpace::ShrinkImmortalImmovablePages()",93957337491200,93957337491382],["v8::internal::PagedSpace::DecreaseLimit(unsigned long)",93957337491920,93957337492307],["v8::internal::PagedSpace::Available()",93957337492416,93957337492490],["v8::internal::PagedSpace::SetReadable()",93957337492720,93957337492853],["v8::internal::PagedSpace::SetReadAndWritable()",93957337493008,93957337493141],["v8::internal::PagedSpace::TryAllocationFromFreeListMain(unsigned long, v8::internal::AllocationOrigin)",93957337493216,93957337493624],["v8::internal::PagedSpace::TryAllocationFromFreeListBackground(v8::internal::LocalHeap*, unsigned long, unsigned long, v8::internal::AllocationAlignment, v8::internal::AllocationOrigin)",93957337494064,93957337494356],["v8::internal::PagedSpace::PrepareForMarkCompact()",93957337494416,93957337494449],["v8::internal::PagedSpace::RawRefillLabMain(int, v8::internal::AllocationOrigin)",93957337494656,93957337495337],["v8::internal::CompactionSpace::RefillLabMain(int, v8::internal::AllocationOrigin)",93957337495648,93957337495658],["v8::internal::(anonymous namespace)::CreateFunctionForBuiltinWithoutPrototype(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Builtins::Name)",93957337715696,93957337716275],["v8::internal::interpreter::BytecodeArrayBuilder::CompareUndetectable()",93957337830944,93957337831198],["v8::internal::interpreter::BytecodeArrayBuilder::CreateFunctionContext(v8::internal::Scope const*, int)",93957337849600,93957337849926],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfNil(v8::internal::interpreter::BytecodeLabel*, v8::internal::Token::Value, v8::internal::interpreter::BytecodeArrayBuilder::NilValue)",93957337858592,93957337858661],["v8::internal::interpreter::BytecodeArrayBuilder::ResumeGenerator(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList)",93957337866032,93957337866549],["v8::internal::interpreter::BytecodeArrayBuilder::EmptyArrayBoilerplateDescriptionConstantPoolEntry()",93957337875904,93957337875918],["v8::internal::interpreter::BytecodeArrayIterator::current_bytecode_size() const",93957337877664,93957337877705],["v8::internal::interpreter::JumpTableTargetOffsets::end() const",93957337879232,93957337879275],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::interpreter::BytecodeArrayWriter::ToSourcePositionTable<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957337881888,93957337881918],["v8::internal::interpreter::BytecodeArrayWriter::WriteSwitch(v8::internal::interpreter::BytecodeNode*, v8::internal::interpreter::BytecodeJumpTable*)",93957337889152,93957337889527],["v8::internal::interpreter::BytecodeArrayWriter::SetFunctionEntrySourcePosition(int)",93957337890016,93957337890062],["v8::internal::interpreter::BytecodeDecoder::Decode(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, unsigned char const*, int)",93957337891552,93957337894187],["v8::internal::Handle<v8::internal::BytecodeArray> v8::internal::interpreter::BytecodeGenerator::FinalizeBytecode<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::Script>)",93957337895504,93957337895890],["v8::internal::interpreter::BytecodeGenerator::AllocateTopLevelRegisters()",93957337901040,93957337901242],["v8::internal::interpreter::BytecodeGenerator::BuildInstanceMemberInitialization(v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957337904640,93957337904968],["v8::internal::interpreter::BytecodeGenerator::BuildDeclareCall(v8::internal::Runtime::FunctionId)",93957337909136,93957337909356],["v8::internal::interpreter::BytecodeGenerator::VisitContinueStatement(v8::internal::ContinueStatement*)",93957337910832,93957337910965],["v8::internal::interpreter::BytecodeGenerator::VisitSwitchStatement(v8::internal::SwitchStatement*)",93957337912288,93957337913553],["v8::internal::interpreter::BytecodeGenerator::VisitForInStatement(v8::internal::ForInStatement*)",93957337916272,93957337917794],["v8::internal::interpreter::BytecodeGenerator::BuildGetIteratorRecord(v8::internal::IteratorType)",93957337923904,93957337924177],["v8::internal::interpreter::(anonymous namespace)::AccessorTable<v8::internal::ClassLiteralProperty>::LookupOrInsert(v8::internal::Literal*)",93957337931040,93957337931465],["v8::internal::interpreter::BytecodeGenerator::BuildClassProperty(v8::internal::ClassLiteralProperty*)",93957337932544,93957337933105],["v8::internal::interpreter::BytecodeGenerator::BuildInvalidPropertyAccess(v8::internal::MessageTemplate, v8::internal::Property*)",93957337934064,93957337934334],["v8::internal::interpreter::BytecodeGenerator::VisitRegExpLiteral(v8::internal::RegExpLiteral*)",93957337935760,93957337935832],["v8::internal::interpreter::BytecodeGenerator::BuildFillArrayWithIterator(v8::internal::interpreter::BytecodeGenerator::IteratorRecord, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::FeedbackSlot, v8::internal::FeedbackSlot, v8::internal::FeedbackSlot, v8::internal::FeedbackSlot)",93957337945056,93957337945662],["v8::internal::interpreter::BytecodeGenerator::BuildThrowIfHole(v8::internal::Variable*)",93957337948960,93957337948999],["v8::internal::interpreter::BytecodeGenerator::GetCachedLoadICSlot(v8::internal::Expression const*, v8::internal::AstRawString const*)",93957337949936,93957337950287],["v8::internal::interpreter::BytecodeGenerator::BuildDestructuringArrayAssignment(v8::internal::ArrayLiteral*, v8::internal::Token::Value, v8::internal::LookupHoistingMode)",93957337952064,93957337954945],["v8::internal::interpreter::BytecodeGenerator::VisitAssignment(v8::internal::Assignment*)",93957337957968,93957337958246],["v8::internal::interpreter::BytecodeGenerator::VisitYieldStar(v8::internal::YieldStar*)",93957337962336,93957337965399],["v8::internal::interpreter::BytecodeGenerator::VisitAwait(v8::internal::Await*)",93957337966816,93957337967100],["v8::internal::interpreter::BytecodeGenerator::VisitKeyedSuperPropertyLoad(v8::internal::Property*, v8::internal::interpreter::Register)",93957337969312,93957337969843],["void v8::internal::interpreter::BytecodeGenerator::BuildOptionalChain<v8::internal::interpreter::BytecodeGenerator::VisitOptionalChain(v8::internal::OptionalChain*)::$_10>(v8::internal::interpreter::BytecodeGenerator::VisitOptionalChain(v8::internal::OptionalChain*)::$_10)",93957337971488,93957337971870],["v8::internal::interpreter::BytecodeGenerator::VisitAndPushIntoRegisterList(v8::internal::Expression*, v8::internal::interpreter::RegisterList*)",93957337972304,93957337972620],["v8::internal::interpreter::BytecodeGenerator::VisitCallSuper(v8::internal::Call*)",93957337976464,93957337977843],["v8::internal::interpreter::BytecodeGenerator::VisitCallRuntime(v8::internal::CallRuntime*)",93957337978528,93957337978756],["v8::internal::interpreter::BytecodeGenerator::VisitNot(v8::internal::UnaryOperation*)",93957337979040,93957337979645],["v8::internal::interpreter::BytecodeGenerator::VisitDelete(v8::internal::UnaryOperation*)",93957337980320,93957337981927],["v8::internal::interpreter::BytecodeGenerator::VisitBinaryOperation(v8::internal::BinaryOperation*)",93957337985568,93957337985900],["v8::internal::interpreter::BytecodeGenerator::VisitLogicalAndExpression(v8::internal::BinaryOperation*)",93957337986624,93957337987327],["v8::internal::interpreter::BytecodeGenerator::VisitArithmeticExpression(v8::internal::BinaryOperation*)",93957337988080,93957337988915],["v8::internal::interpreter::BytecodeGenerator::VisitNaryCommaExpression(v8::internal::NaryOperation*)",93957337989008,93957337989504],["v8::internal::interpreter::BytecodeGenerator::VisitNaryLogicalAndExpression(v8::internal::NaryOperation*)",93957337990112,93957337990715],["v8::internal::interpreter::BytecodeGenerator::VisitNaryArithmeticExpression(v8::internal::NaryOperation*)",93957337991344,93957337992205],["v8::internal::interpreter::BytecodeGenerator::VisitCompareOperation(v8::internal::CompareOperation*)",93957337992432,93957337993873],["v8::internal::interpreter::BytecodeGenerator::BuildGetIterator(v8::internal::IteratorType)",93957337994416,93957337995147],["v8::internal::interpreter::BytecodeGenerator::VisitTemplateLiteral(v8::internal::TemplateLiteral*)",93957337995568,93957337996450],["v8::internal::interpreter::BytecodeGenerator::VisitLogicalTestSubExpression(v8::internal::Token::Value, v8::internal::Expression*, v8::internal::interpreter::BytecodeLabels*, v8::internal::interpreter::BytecodeLabels*, int)",93957337996528,93957337996772],["v8::internal::interpreter::BytecodeGenerator::VisitNaryLogicalTest(v8::internal::Token::Value, v8::internal::NaryOperation*, v8::internal::interpreter::BytecodeGenerator::NaryCodeCoverageSlots const*)",93957337997088,93957337997370],["v8::internal::interpreter::BytecodeGenerator::VisitLogicalAndSubExpression(v8::internal::Expression*, v8::internal::interpreter::BytecodeLabels*, int)",93957337997856,93957337998333],["v8::internal::interpreter::BytecodeGenerator::NaryCodeCoverageSlots::NaryCodeCoverageSlots(v8::internal::interpreter::BytecodeGenerator*, v8::internal::NaryOperation*)",93957337998848,93957337999257],["v8::internal::interpreter::BytecodeGenerator::AllocateNaryBlockCoverageSlotIfEnabled(v8::internal::NaryOperation*, unsigned long)",93957338000016,93957338000781],["v8::internal::interpreter::BytecodeGenerator::ControlScopeForTopLevel::Execute(v8::internal::interpreter::BytecodeGenerator::ControlScope::Command, v8::internal::Statement*, int)",93957338000944,93957338001036],["v8::internal::interpreter::BytecodeGenerator::ControlScopeForBreakable::Execute(v8::internal::interpreter::BytecodeGenerator::ControlScope::Command, v8::internal::Statement*, int)",93957338001072,93957338001150],["std::__1::vector<v8::internal::interpreter::BytecodeLabel, v8::internal::ZoneAllocator<v8::internal::interpreter::BytecodeLabel> >::__append(unsigned long)",93957338002240,93957338002866],["v8::internal::interpreter::BytecodeGenerator::MultipleEntryBlockContextScope::EnterScope()",93957338003008,93957338003448],["v8::internal::interpreter::BytecodeGenerator::ControlScope::DeferredCommands::ApplyDeferredCommands()",93957338003760,93957338004206],["v8::internal::interpreter::BytecodeGenerator::ControlScope::DeferredCommands::RecordCommand(v8::internal::interpreter::BytecodeGenerator::ControlScope::Command, v8::internal::Statement*)",93957338004304,93957338004512],["v8::internal::interpreter::BytecodeGenerator::ControlScopeForTryCatch::Execute(v8::internal::interpreter::BytecodeGenerator::ControlScope::Command, v8::internal::Statement*, int)",93957338004864,93957338004903],["v8::internal::interpreter::BytecodeLabels::Bind(v8::internal::interpreter::BytecodeArrayBuilder*)",93957338005072,93957338005136],["v8::internal::interpreter::BytecodeRegisterOptimizer::Flush()",93957338005616,93957338006323],["v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterTransfer(v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterInfo*, v8::internal::interpreter::BytecodeRegisterOptimizer::RegisterInfo*)",93957338006496,93957338007186],["v8::internal::interpreter::BytecodeRegisterOptimizer::PrepareOutputRegisterList(v8::internal::interpreter::RegisterList)",93957338007488,93957338007550],["v8::internal::interpreter::BytecodeRegisterOptimizer::GetInputRegisterList(v8::internal::interpreter::RegisterList)",93957338007808,93957338008125],["v8::internal::RegExpUtils::RegExpExec(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957339915408,93957339916344],["v8::internal::RegExpGlobalCache::LastSuccessfulMatch()",93957339927520,93957339927556],["v8::internal::Stats_Runtime_NormalizeElements(int, unsigned long*, v8::internal::Isolate*)",93957339934064,93957339934756],["v8::internal::Stats_Runtime_ArraySpeciesConstructor(int, unsigned long*, v8::internal::Isolate*)",93957339937760,93957339938298],["v8::internal::Runtime_AtomicsLoad64(int, unsigned long*, v8::internal::Isolate*)",93957339946944,93957339946981],["v8::internal::Runtime_AtomicsExchange(int, unsigned long*, v8::internal::Isolate*)",93957339947776,93957339947813],["v8::internal::Runtime_AtomicsAdd(int, unsigned long*, v8::internal::Isolate*)",93957339948608,93957339948645],["v8::internal::Runtime_AtomicsAnd(int, unsigned long*, v8::internal::Isolate*)",93957339949440,93957339949477],["v8::internal::Stats_Runtime_AtomicsOr(int, unsigned long*, v8::internal::Isolate*)",93957339949904,93957339950258],["v8::internal::Stats_Runtime_AtomicsXor(int, unsigned long*, v8::internal::Isolate*)",93957339950320,93957339950674],["v8::internal::Stats_Runtime_BigIntCompareToBigInt(int, unsigned long*, v8::internal::Isolate*)",93957339950912,93957339951553],["v8::internal::Stats_Runtime_BigIntCompareToNumber(int, unsigned long*, v8::internal::Isolate*)",93957339951744,93957339952322],["v8::internal::Stats_Runtime_BigIntCompareToString(int, unsigned long*, v8::internal::Isolate*)",93957339952704,93957339953440],["v8::internal::Stats_Runtime_BigIntEqualToBigInt(int, unsigned long*, v8::internal::Isolate*)",93957339953616,93957339954202],["v8::internal::Stats_Runtime_BigIntEqualToNumber(int, unsigned long*, v8::internal::Isolate*)",93957339954336,93957339954865],["v8::internal::Stats_Runtime_BigIntEqualToString(int, unsigned long*, v8::internal::Isolate*)",93957339955184,93957339955871],["v8::internal::Stats_Runtime_ResolvePossiblyDirectEval(int, unsigned long*, v8::internal::Isolate*)",93957340011008,93957340012119],["v8::internal::CodeTracer::CloseFile()",93957340012624,93957340012691],["v8::internal::Stats_Runtime_DebugBreakAtEntry(int, unsigned long*, v8::internal::Isolate*)",93957340015984,93957340016758],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::NewStringFromStaticChars<17ul>(char const (&) [17ul], v8::internal::AllocationType)",93957340024368,93957340024429],["v8::internal::Runtime_SetGeneratorScopeVariableValue(int, unsigned long*, v8::internal::Isolate*)",93957340027840,93957340028624],["v8::internal::Runtime_DebugGetLoadedScriptIds(int, unsigned long*, v8::internal::Isolate*)",93957340032928,93957340033352],["v8::internal::Runtime_ScriptLocationFromLine2(int, unsigned long*, v8::internal::Isolate*)",93957340035680,93957340038455],["v8::internal::Runtime_DebugPrepareStepInSuspendedGenerator(int, unsigned long*, v8::internal::Isolate*)",93957340042528,93957340042666],["v8::internal::Runtime_DebugPopPromise(int, unsigned long*, v8::internal::Isolate*)",93957340044000,93957340044058],["v8::internal::Runtime_DebugTogglePreciseCoverage(int, unsigned long*, v8::internal::Isolate*)",93957340050704,93957340050839],["v8::internal::Runtime_IncBlockCounter(int, unsigned long*, v8::internal::Isolate*)",93957340052080,93957340052117],["v8::internal::Runtime_DebugAsyncFunctionSuspended(int, unsigned long*, v8::internal::Isolate*)",93957340053392,93957340053611],["v8::internal::Runtime_DebugAsyncFunctionFinished(int, unsigned long*, v8::internal::Isolate*)",93957340055040,93957340055377],["v8::internal::Runtime_ProfileCreateSnapshotDataBlob(int, unsigned long*, v8::internal::Isolate*)",93957340057856,93957340058073],["v8::internal::Runtime_ForInEnumerate(int, unsigned long*, v8::internal::Isolate*)",93957340058688,93957340059108],["v8::internal::Runtime_ForInHasProperty(int, unsigned long*, v8::internal::Isolate*)",93957340059968,93957340060217],["v8::internal::(anonymous namespace)::HasEnumerableProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>)",93957340060880,93957340061335],["v8::internal::Stats_Runtime_FunctionGetScriptSource(int, unsigned long*, v8::internal::Isolate*)",93957340061744,93957340062507],["v8::internal::Stats_Runtime_FunctionGetScriptId(int, unsigned long*, v8::internal::Isolate*)",93957340062928,93957340063702],["v8::internal::Stats_Runtime_FunctionGetSourceCode(int, unsigned long*, v8::internal::Isolate*)",93957340064032,93957340064736],["v8::internal::Stats_Runtime_FunctionGetScriptSourcePosition(int, unsigned long*, v8::internal::Isolate*)",93957340064864,93957340065376],["v8::internal::Stats_Runtime_FunctionIsAPIFunction(int, unsigned long*, v8::internal::Isolate*)",93957340065552,93957340066148],["v8::internal::Stats_Runtime_Call(int, unsigned long*, v8::internal::Isolate*)",93957340066992,93957340068185],["v8::internal::Stats_Runtime_IsFunction(int, unsigned long*, v8::internal::Isolate*)",93957340068304,93957340068874],["v8::internal::Stats_Runtime_AtomicsNumWaitersForTesting(int, unsigned long*, v8::internal::Isolate*)",93957340069488,93957340070460],["v8::internal::Stats_Runtime_AtomicsNumAsyncWaitersForTesting(int, unsigned long*, v8::internal::Isolate*)",93957340070496,93957340070930],["v8::internal::Stats_Runtime_AtomicsNumUnresolvedAsyncPromisesForTesting(int, unsigned long*, v8::internal::Isolate*)",93957340071552,93957340072524],["v8::internal::Stats_Runtime_SetAllowAtomicsWait(int, unsigned long*, v8::internal::Isolate*)",93957340072688,93957340073283],["v8::internal::Stats_Runtime_AsyncFunctionAwaitCaught(int, unsigned long*, v8::internal::Isolate*)",93957340073344,93957340073698],["v8::internal::Stats_Runtime_AsyncFunctionAwaitUncaught(int, unsigned long*, v8::internal::Isolate*)",93957340073760,93957340074114],["v8::internal::Runtime_ThrowSpreadArgError(int, unsigned long*, v8::internal::Isolate*)",93957340112240,93957340112412],["v8::internal::Runtime_StringToNumber(int, unsigned long*, v8::internal::Isolate*)",93957340158016,93957340158205],["v8::internal::Runtime_ObjectIsExtensible(int, unsigned long*, v8::internal::Isolate*)",93957340182240,93957340182460],["v8::internal::Runtime_NewObject(int, unsigned long*, v8::internal::Isolate*)",93957340199152,93957340199433],["v8::internal::Runtime_CopyDataProperties(int, unsigned long*, v8::internal::Isolate*)",93957340213728,93957340213980],["v8::internal::Runtime_ToName(int, unsigned long*, v8::internal::Isolate*)",93957340222624,93957340222809],["v8::internal::Runtime_CreatePrivateAccessors(int, unsigned long*, v8::internal::Isolate*)",93957340229664,93957340230152],["v8::internal::Runtime_SwissTableEquals(int, unsigned long*, v8::internal::Isolate*)",93957340239680,93957340239965],["v8::internal::Runtime_Add(int, unsigned long*, v8::internal::Isolate*)",93957340244288,93957340244436],["v8::internal::Runtime_StrictNotEqual(int, unsigned long*, v8::internal::Isolate*)",93957340247088,93957340247162],["v8::internal::Runtime_LessThanOrEqual(int, unsigned long*, v8::internal::Isolate*)",93957340249776,93957340249976],["v8::internal::Runtime_PromiseResolveAfterResolved(int, unsigned long*, v8::internal::Isolate*)",93957340253248,93957340253454],["v8::internal::Runtime_RunMicrotaskCallback(int, unsigned long*, v8::internal::Isolate*)",93957340256736,93957340256947],["v8::internal::Runtime_AwaitPromisesInit(int, unsigned long*, v8::internal::Isolate*)",93957340259872,93957340260288],["v8::internal::Runtime_RejectPromise(int, unsigned long*, v8::internal::Isolate*)",93957340264368,93957340264672],["v8::internal::(anonymous namespace)::AwaitPromisesInitCommon(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSPromise>, v8::internal::Handle<v8::internal::JSPromise>, v8::internal::Handle<v8::internal::JSFunction>, bool)",93957340268432,93957340268734],["v8::internal::Stats_Runtime_JSProxyGetTarget(int, unsigned long*, v8::internal::Isolate*)",93957340270144,93957340270659],["v8::internal::Stats_Runtime_SetPropertyWithReceiver(int, unsigned long*, v8::internal::Isolate*)",93957340272096,93957340272834],["v8::internal::Stats_Runtime_CheckProxyHasTrapResult(int, unsigned long*, v8::internal::Isolate*)",93957340274352,93957340275046],["bool v8::internal::CompiledReplacement::ParseReplacementPattern<unsigned char const>(v8::internal::Vector<unsigned char const>, v8::internal::FixedArray, int, int)",93957340276496,93957340278595],["v8::internal::Runtime_StringSplit(int, unsigned long*, v8::internal::Isolate*)",93957340282928,93957340284923],["v8::internal::Runtime_RegExpExecTreatMatchAtEndAsFailure(int, unsigned long*, v8::internal::Isolate*)",93957340289056,93957340289709],["v8::internal::Runtime_RegExpExperimentalOneshotExecTreatMatchAtEndAsFailure(int, unsigned long*, v8::internal::Isolate*)",93957340292448,93957340293101],["v8::internal::Runtime_RegExpExecMultiple(int, unsigned long*, v8::internal::Isolate*)",93957340294960,93957340299992],["v8::internal::Runtime_RegExpSplit(int, unsigned long*, v8::internal::Isolate*)",93957340310288,93957340313218],["v8::internal::Runtime_RegExpInitializeAndCompile(int, unsigned long*, v8::internal::Isolate*)",93957340335632,93957340335981],["v8::internal::(anonymous namespace)::ConstructNamedCaptureGroupsObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, std::__1::function<v8::internal::Object (int)> const&)",93957340337408,93957340337731],["v8::internal::Object::ToObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, char const*)",93957340337872,93957340337925],["v8::internal::(anonymous namespace)::MatchInfoBackedMatch::CaptureCount()",93957340338064,93957340338091],["v8::internal::Object v8::internal::StringReplaceGlobalAtomRegExpWithString<v8::internal::SeqOneByteString>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::RegExpMatchInfo>)",93957340338752,93957340339438],["uhash_count_68",93957340340224,93957340340233],["bool std::__1::__function::__policy_invoker<bool (v8::internal::String)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CompiledReplacement::ParseReplacementPattern<unsigned char const>(v8::internal::Vector<unsigned char const>, v8::internal::FixedArray, int, int)::{lambda(v8::internal::String)#1}, bool (v8::internal::String)> >(std::__1::__function::__policy_storage const*, v8::internal::String&&)",93957340340688,93957340340821],["v8::internal::Stats_Runtime_ThrowConstAssignError(int, unsigned long*, v8::internal::Isolate*)",93957340341136,93957340341660],["v8::internal::Stats_Runtime_DeclareModuleExports(int, unsigned long*, v8::internal::Isolate*)",93957340343248,93957340345198],["v8::internal::Stats_Runtime_DeclareGlobals(int, unsigned long*, v8::internal::Isolate*)",93957340347040,93957340349265],["v8::internal::Stats_Runtime_DeclareEvalFunction(int, unsigned long*, v8::internal::Isolate*)",93957340349488,93957340350079],["v8::internal::Stats_Runtime_DeclareEvalVar(int, unsigned long*, v8::internal::Isolate*)",93957340350288,93957340350882],["v8::internal::Stats_Runtime_NewSloppyArguments(int, unsigned long*, v8::internal::Isolate*)",93957340352928,93957340355392],["v8::internal::Stats_Runtime_NewStrictArguments(int, unsigned long*, v8::internal::Isolate*)",93957340356112,93957340357215],["v8::internal::Stats_Runtime_NewRestParameter(int, unsigned long*, v8::internal::Isolate*)",93957340357872,93957340358922],["v8::internal::Stats_Runtime_NewClosure(int, unsigned long*, v8::internal::Isolate*)",93957340359360,93957340360175],["v8::internal::Stats_Runtime_NewClosure_Tenured(int, unsigned long*, v8::internal::Isolate*)",93957340360608,93957340361423],["v8::internal::Stats_Runtime_NewFunctionContext(int, unsigned long*, v8::internal::Isolate*)",93957340361728,93957340362384],["v8::internal::Stats_Runtime_PushWithContext(int, unsigned long*, v8::internal::Isolate*)",93957340362768,93957340363515],["v8::internal::Stats_Runtime_PushCatchContext(int, unsigned long*, v8::internal::Isolate*)",93957340363840,93957340364524],["v8::internal::Stats_Runtime_PushBlockContext(int, unsigned long*, v8::internal::Isolate*)",93957340364832,93957340365488],["v8::internal::Stats_Runtime_DeleteLookupSlot(int, unsigned long*, v8::internal::Isolate*)",93957340365984,93957340366844],["v8::internal::Stats_Runtime_LoadLookupSlot(int, unsigned long*, v8::internal::Isolate*)",93957340367056,93957340367661],["v8::internal::Stats_Runtime_LoadLookupSlotInsideTypeof(int, unsigned long*, v8::internal::Isolate*)",93957340367888,93957340368496],["v8::internal::Stats_Runtime_LoadLookupSlotForCall(int, unsigned long*, v8::internal::Isolate*)",93957340368704,93957340369277],["v8::internal::Stats_Runtime_StoreLookupSlot_Sloppy(int, unsigned long*, v8::internal::Isolate*)",93957340369616,93957340370312],["v8::internal::Stats_Runtime_StoreLookupSlot_Strict(int, unsigned long*, v8::internal::Isolate*)",93957340370656,93957340371355],["v8::internal::Stats_Runtime_StoreLookupSlot_SloppyHoisting(int, unsigned long*, v8::internal::Isolate*)",93957340371712,93957340372423],["v8::internal::Stats_Runtime_StoreGlobalNoHoleCheckForReplLet(int, unsigned long*, v8::internal::Isolate*)",93957340373088,93957340374106],["v8::internal::(anonymous namespace)::DeclareEvalHelper(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957340374864,93957340376121],["v8::internal::(anonymous namespace)::LoadLookupSlot(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::ShouldThrow, v8::internal::Handle<v8::internal::Object>*)",93957340377344,93957340378196],["v8::internal::Runtime_GetSubstitution(int, unsigned long*, v8::internal::Isolate*)",93957340378800,93957340379359],["v8::internal::StringReplaceOneCharWithString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, bool*, int)",93957340380320,93957340380909],["v8::internal::Stats_Runtime_StringReplaceOneCharWithString(int, unsigned long*, v8::internal::Isolate*)",93957340381408,93957340382252],["v8::internal::Stats_Runtime_StringLastIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957340382400,93957340382935],["v8::internal::Stats_Runtime_StringSubstring(int, unsigned long*, v8::internal::Isolate*)",93957340383488,93957340384387],["v8::internal::Stats_Runtime_StringAdd(int, unsigned long*, v8::internal::Isolate*)",93957340384784,93957340385530],["v8::internal::Stats_Runtime_InternalizeString(int, unsigned long*, v8::internal::Isolate*)",93957340385760,93957340386373],["v8::internal::Stats_Runtime_StringCharCodeAt(int, unsigned long*, v8::internal::Isolate*)",93957340386960,93957340387927],["void std::__1::vector<v8::internal::Handle<v8::internal::HeapObject>, std::__1::allocator<v8::internal::Handle<v8::internal::HeapObject> > >::__push_back_slow_path<v8::internal::Handle<v8::internal::HeapObject> >(v8::internal::Handle<v8::internal::HeapObject>&&)",93957340534592,93957340534854],["std::__1::unique_ptr<v8::internal::BackingStore, std::__1::default_delete<v8::internal::BackingStore> >::~unique_ptr()",93957340535456,93957340535506],["v8::internal::InstructionStream::PcIsOffHeap(v8::internal::Isolate*, unsigned long)",93957340536736,93957340536884],["v8::internal::EmbeddedData::PrintStatistics() const",93957340539360,93957340539638],["v8::internal::EmbeddedData::MetadataSizeOfBuiltin(int) const",93957340539744,93957340539765],["v8::internal::ObjectDeserializer::Deserialize()",93957340540272,93957340540574],["v8::internal::ReadOnlySerializer::ReadOnlySerializer(v8::internal::Isolate*, v8::base::Flags<v8::internal::Snapshot::SerializerFlag, int>)",93957340541712,93957340541745],["v8::internal::Serializer::Serializer(v8::internal::Isolate*, v8::base::Flags<v8::internal::Snapshot::SerializerFlag, int>)",93957340544336,93957340544722],["v8::internal::Serializer::ObjectSerializer::VisitExternalReference(v8::internal::Code, v8::internal::RelocInfo*)",93957340557040,93957340557118],["v8::internal::Snapshot::NewContextFromSnapshot(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSGlobalProxy>, unsigned long, v8::DeserializeInternalFieldsCallback)",93957340564768,93957340565394],["v8::internal::StartupSerializer::SerializeStrongReferences(v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&)",93957340574160,93957340574333],["void v8::internal::StringBuilderConcatHelper<unsigned char>(v8::internal::String, unsigned char*, v8::internal::FixedArray, int)",93957340575952,93957340576140],["v8::internal::ReplacementStringBuilder::ReplacementStringBuilder(v8::internal::Heap*, v8::internal::Handle<v8::internal::String>, int)",93957340576976,93957340577071],["v8::internal::IncrementalStringBuilder::Finish()",93957340578432,93957340578609],["v8::internal::StringStream::Add(v8::internal::Vector<char const>, v8::internal::Vector<v8::internal::StringStream::FmtElm>)",93957340580080,93957340581948],["v8::internal::StringStream::Put(v8::internal::String)",93957340582880,93957340582895],["v8::internal::StringStream::PrintFixedArray(v8::internal::FixedArray, unsigned int)",93957340584704,93957340585098],["v8::internal::StringStream::PrintFunction(v8::internal::JSFunction, v8::internal::Object, v8::internal::Code*)",93957340586128,93957340586173],["v8::internal::HeapStringAllocator::~HeapStringAllocator()",93957340587792,93957340587839],["unibrow::Utf8::CalculateValue(unsigned char const*, unsigned long, unsigned long*)",93957340589040,93957340589226],["v8::internal::Uri::Decode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, bool)",93957340589376,93957340591365],["v8::internal::(anonymous namespace)::IntoTwoByte(int, bool, int, v8::internal::String::FlatContent*, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >*)",93957340596352,93957340598985],["v8::internal::CancelableTaskManager::RemoveFinishedTask(unsigned long)",93957340599904,93957340600423],["v8::internal::CancelableTaskManager::~CancelableTaskManager()",93957340600592,93957340600708],["v8::internal::CancelableTaskManager::CancelAndWait()",93957340601280,93957340601994],["v8::internal::CancelableTask::CancelableTask(v8::internal::Isolate*)",93957340602240,93957340602445],["v8::internal::CancelableIdleTask::CancelableIdleTask(v8::internal::CancelableTaskManager*)",93957340602656,93957340602857],["v8::internal::CancelableIdleTask::Run(double)",93957340602928,93957340602958],["v8::internal::OperationsBarrier::TryLock()",93957340603008,93957340603066],["v8::internal::OperationsBarrier::Release()",93957340603136,93957340603186],["v8::internal::MakeCancelableTask(v8::internal::CancelableTaskManager*, std::__1::function<void ()>)",93957340603392,93957340603574],["v8::internal::(anonymous namespace)::CancelableFuncTask::~CancelableFuncTask()",93957340603776,93957340603839],["v8::internal::(anonymous namespace)::CancelableFuncTask::RunInternal()",93957340603920,93957340603935],["non-virtual thunk to v8::internal::(anonymous namespace)::CancelableFuncTask::~CancelableFuncTask()",93957340604000,93957340604072],["v8::internal::(anonymous namespace)::CancelableIdleFuncTask::~CancelableIdleFuncTask()",93957340604144,93957340604215],["non-virtual thunk to v8::internal::(anonymous namespace)::CancelableIdleFuncTask::~CancelableIdleFuncTask()",93957340604240,93957340604304],["v8::internal::tracing::TraceEventHelper::GetTracingController()",93957340604384,93957340604406],["v8::internal::tracing::CallStatsScopedTracer::Initialize(v8::internal::Isolate*, unsigned char const*, char const*)",93957340604784,93957340605014],["v8::tracing::TracedValue::~TracedValue()",93957340605072,93957340605104],["v8_inspector::V8Debugger::asyncTaskFinished(void*)",93957342547808,93957342548036],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8_inspector::V8DebuggerAgentImpl*, int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8_inspector::V8DebuggerAgentImpl*, int>, std::__1::__unordered_map_hasher<v8_inspector::V8DebuggerAgentImpl*, std::__1::__hash_value_type<v8_inspector::V8DebuggerAgentImpl*, int>, std::__1::hash<v8_inspector::V8DebuggerAgentImpl*>, std::__1::equal_to<v8_inspector::V8DebuggerAgentImpl*>, true>, std::__1::__unordered_map_equal<v8_inspector::V8DebuggerAgentImpl*, std::__1::__hash_value_type<v8_inspector::V8DebuggerAgentImpl*, int>, std::__1::equal_to<v8_inspector::V8DebuggerAgentImpl*>, std::__1::hash<v8_inspector::V8DebuggerAgentImpl*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8_inspector::V8DebuggerAgentImpl*, int> > >::__emplace_unique_key_args<v8_inspector::V8DebuggerAgentImpl*, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::V8DebuggerAgentImpl* const&>, std::__1::tuple<> >(v8_inspector::V8DebuggerAgentImpl* const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::V8DebuggerAgentImpl* const&>&&, std::__1::tuple<>&&)",93957342548848,93957342549729],["std::__1::__shared_ptr_emplace<v8_inspector::StackFrame, std::__1::allocator<v8_inspector::StackFrame> >::~__shared_ptr_emplace()",93957342551360,93957342551398],["v8_inspector::V8HeapProfilerAgentImpl::~V8HeapProfilerAgentImpl()",93957342552576,93957342552769],["v8_inspector::V8HeapProfilerAgentImpl::collectGarbage(std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback> >)",93957342553472,93957342553836],["v8_inspector::V8HeapProfilerAgentImpl::stopTrackingHeapObjects(v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>)",93957342554096,93957342554305],["v8_inspector::V8HeapProfilerAgentImpl::enable()",93957342554512,93957342554604],["v8_inspector::V8HeapProfilerAgentImpl::takeHeapSnapshot(v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>)",93957342554832,93957342555382],["v8_crdtp::CreateNotification(char const*, std::__1::unique_ptr<v8_crdtp::Serializable, std::__1::default_delete<v8_crdtp::Serializable> >)",93957342757264,93957342757310],["v8_crdtp::(anonymous namespace)::Response::~Response()",93957342763760,93957342763803],["std::__1::__split_buffer<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >, std::__1::allocator<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > > >&>::push_back(std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >&&)",93957342767008,93957342767671],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::~JSONEncoder()",93957342773600,93957342773624],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleString8(v8_crdtp::span<unsigned char>)",93957342774192,93957342778868],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleInt32(int)",93957342783632,93957342783786],["v8_crdtp::json::(anonymous namespace)::State::StartElement(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342784080,93957342784347],["v8_crdtp::json::(anonymous namespace)::JsonParser<unsigned char>::ParseValue(unsigned char const*, unsigned char const*, unsigned char const**, int)",93957342789104,93957342790789],["v8_crdtp::json::(anonymous namespace)::JsonParser<unsigned short>::ParseValue(unsigned short const*, unsigned short const*, unsigned short const**, int)",93957342793872,93957342795644],["v8_crdtp::json::(anonymous namespace)::JsonParser<unsigned short>::DecodeString(unsigned short const*, unsigned short const*, std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >*)",93957342797232,93957342798295],["v8_crdtp::DeserializerState::RegisterError(v8_crdtp::Error)",93957342798480,93957342798539],["v8_crdtp::DeserializerState::status() const",93957342798928,93957342798979],["v8_crdtp::DeserializerDescriptor::Deserialize(v8_crdtp::DeserializerState*, void*) const",93957342799152,93957342799596],["v8_crdtp::ProtocolTypeTraits<bool, void>::Deserialize(v8_crdtp::DeserializerState*, bool*)",93957342799904,93957342800003],["v8_crdtp::ProtocolTypeTraits<int, void>::Deserialize(v8_crdtp::DeserializerState*, int*)",93957342800272,93957342800371],["v8_crdtp::ContainerSerializer::ContainerSerializer(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned char)",93957342800400,93957342800650],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::PrintableInstructionBlock const&)",93957342990816,93957342992809],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::InstructionSequence const&)",93957343002384,93957343002936],["v8::internal::compiler::RegisterState::Register::Commit(v8::internal::compiler::AllocatedOperand, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343012368,93957343012806],["v8::internal::compiler::SinglePassRegisterAllocator::MergeStateFrom(v8::internal::ZoneVector<v8::internal::compiler::RpoNumber> const&)",93957343015888,93957343017528],["v8::internal::compiler::SinglePassRegisterAllocator::SpillRegister(v8::internal::compiler::RegisterIndex)",93957343019328,93957343019563],["v8::internal::compiler::SinglePassRegisterAllocator::AllocateGapMoveInput(v8::internal::compiler::UnallocatedOperand*, v8::internal::compiler::VirtualRegisterData&, int)",93957343022160,93957343022839],["v8::internal::compiler::SinglePassRegisterAllocator::AllocateTemp(v8::internal::compiler::UnallocatedOperand*, int, v8::internal::MachineRepresentation, int)",93957343025792,93957343026671],["v8::internal::compiler::MidTierOutputProcessor::InitializeBlockState(v8::internal::compiler::InstructionBlock const*)",93957343030688,93957343031028],["v8::internal::compiler::MidTierRegisterAllocator::AllocateRegisters(v8::internal::compiler::InstructionBlock const*)",93957343033104,93957343036584],["v8::internal::compiler::MidTierRegisterAllocator::UpdateSpillRangesForLoops()",93957343037344,93957343038194],["v8::internal::compiler::MidTierSpillSlotAllocator::AdvanceTo(int)",93957343038496,93957343038935],["std::__1::priority_queue<v8::internal::compiler::MidTierSpillSlotAllocator::SpillSlot*, v8::internal::ZoneVector<v8::internal::compiler::MidTierSpillSlotAllocator::SpillSlot*>, v8::internal::compiler::MidTierSpillSlotAllocator::OrderByLastUse>::push(v8::internal::compiler::MidTierSpillSlotAllocator::SpillSlot* const&)",93957343039440,93957343040242],["v8::internal::compiler::MidTierReferenceMapPopulator::RecordReferences(v8::internal::compiler::VirtualRegisterData const&)",93957343041728,93957343042163],["v8::internal::compiler::ParallelMove::AddMove(v8::internal::compiler::InstructionOperand const&, v8::internal::compiler::InstructionOperand const&, v8::internal::Zone*)",93957343042592,93957343043830],["void std::__1::__sort<v8::internal::compiler::AllocateSpillSlots(v8::internal::compiler::MidTierRegisterAllocationData*)::$_0&, v8::internal::compiler::VirtualRegisterData**>(v8::internal::compiler::VirtualRegisterData**, v8::internal::compiler::VirtualRegisterData**, v8::internal::compiler::AllocateSpillSlots(v8::internal::compiler::MidTierRegisterAllocationData*)::$_0&)",93957343044400,93957343046106],["bool std::__1::__insertion_sort_incomplete<v8::internal::compiler::AllocateSpillSlots(v8::internal::compiler::MidTierRegisterAllocationData*)::$_0&, v8::internal::compiler::VirtualRegisterData**>(v8::internal::compiler::VirtualRegisterData**, v8::internal::compiler::VirtualRegisterData**, v8::internal::compiler::AllocateSpillSlots(v8::internal::compiler::MidTierRegisterAllocationData*)::$_0&)",93957343046384,93957343047172],["v8::internal::compiler::BytecodeAnalysis::PushLoop(int, int)",93957343195344,93957343196145],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaFalse()",93957343224096,93957343224165],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaKeyedProperty()",93957343230832,93957343231491],["v8::internal::compiler::BytecodeGraphBuilder::VisitAddSmi()",93957343234608,93957343234708],["v8::internal::compiler::BytecodeGraphBuilder::VisitInc()",93957343235952,93957343236049],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallAnyReceiver()",93957343237056,93957343237376],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallUndefinedReceiver2()",93957343238960,93957343239177],["v8::internal::compiler::BytecodeGraphBuilder::VisitConstructWithSpread()",93957343244000,93957343244819],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestGreaterThanOrEqual()",93957343245392,93957343245492],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestUndetectable()",93957343246176,93957343246321],["v8::internal::compiler::BytecodeGraphBuilder::VisitToName()",93957343247584,93957343247737],["v8::internal::compiler::BytecodeGraphBuilder::VisitToString()",93957343248608,93957343248728],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateEmptyArrayLiteral()",93957343249456,93957343249620],["v8::internal::compiler::BytecodeGraphBuilder::VisitGetTemplateObject()",93957343250368,93957343250672],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateFunctionContext()",93957343251488,93957343251727],["v8::internal::compiler::BytecodeGraphBuilder::VisitJumpIfNotNull()",93957343252384,93957343252525],["v8::internal::compiler::BytecodeGraphBuilder::VisitJumpIfUndefinedOrNull()",93957343252816,93957343253066],["v8::internal::compiler::BytecodeGraphBuilder::VisitJumpIfToBooleanTrue()",93957343253200,93957343253321],["v8::internal::compiler::BytecodeGraphBuilder::VisitSwitchOnSmiNoFeedback()",93957343253456,93957343253754],["v8::internal::compiler::BytecodeGraphBuilder::VisitForInPrepare()",93957343253888,93957343254440],["v8::internal::compiler::BytecodeGraphBuilder::VisitForInNext()",93957343254768,93957343255514],["v8::internal::compiler::BytecodeGraphBuilder::VisitSetPendingMessage()",93957343255792,93957343255974],["v8::internal::compiler::BytecodeGraphBuilder::VisitReThrow()",93957343256864,93957343257722],["v8::internal::compiler::BytecodeGraphBuilder::VisitThrowReferenceErrorIfHole()",93957343257792,93957343258029],["v8::internal::compiler::BytecodeGraphBuilder::VisitThrowSuperAlreadyCalledIfNotHole()",93957343258192,93957343258390],["v8::internal::compiler::BytecodeGraphBuilder::VisitSwitchOnGeneratorState()",93957343259984,93957343260551],["v8::internal::compiler::BytecodeGraphBuilder::VisitResumeGenerator()",93957343261456,93957343262078],["v8::internal::compiler::BytecodeGraphBuilder::VisitDebugger()",93957343262576,93957343262877],["v8::internal::compiler::BytecodeGraphBuilder::VisitAbort()",93957343263088,93957343263905],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar14()",93957343264000,93957343264068],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar12()",93957343264160,93957343264228],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar10()",93957343264320,93957343264388],["v8::internal::compiler::OperationTyper::SpeculativeNumberBitwiseXor(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344619040,93957344619140],["v8::internal::compiler::PipelineImpl::AssembleCode(v8::internal::compiler::Linkage*, std::__1::unique_ptr<v8::internal::AssemblerBuffer, std::__1::default_delete<v8::internal::AssemblerBuffer> >)",93957344634128,93957344634832],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::TypeAssertionsPhase>()",93957344647104,93957344647489],["v8::internal::compiler::Pipeline::GenerateCodeForWasmNativeStub(v8::internal::wasm::WasmEngine*, v8::internal::compiler::CallDescriptor*, v8::internal::compiler::MachineGraph*, v8::internal::CodeKind, int, char const*, v8::internal::AssemblerOptions const&, v8::internal::compiler::SourcePositionTable*)",93957344657072,93957344659943],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::InstructionSelectionPhase, v8::internal::compiler::Linkage*&>(v8::internal::compiler::Linkage*&)",93957344669600,93957344670003],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::MeetRegisterConstraintsPhase>()",93957344673168,93957344673563],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::AssignSpillSlotsPhase>()",93957344677280,93957344677675],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::MidTierSpillSlotAllocatorPhase>()",93957344680496,93957344680873],["v8::internal::compiler::WasmHeapStubCompilationJob::WasmHeapStubCompilationJob(v8::internal::Isolate*, v8::internal::wasm::WasmEngine*, v8::internal::compiler::CallDescriptor*, std::__1::unique_ptr<v8::internal::Zone, std::__1::default_delete<v8::internal::Zone> >, v8::internal::compiler::Graph*, v8::internal::CodeKind, std::__1::unique_ptr<char [], std::__1::default_delete<char []> >, v8::internal::AssemblerOptions const&, v8::internal::compiler::SourcePositionTable*)",93957344682864,93957344683258],["v8::internal::compiler::PrintGraphPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*, char const*)",93957344684896,93957344686478],["v8::internal::compiler::JSInliner::reducer_name() const",93957344689696,93957344689709],["v8::internal::compiler::CopyMetadataForConcurrentCompilePhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344690144,93957344690643],["v8::internal::compiler::LoadEliminationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344694848,93957344697684],["v8::internal::compiler::WasmInliningPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344699712,93957344700857],["v8::internal::compiler::StoreStoreEliminationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344704080,93957344704305],["v8::internal::compiler::ScheduledMachineLoweringPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344707312,93957344707572],["v8::internal::compiler::WasmBaseOptimizationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344710096,93957344710514],["v8::internal::compiler::InstructionSelectionPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*, v8::internal::compiler::Linkage*)",93957344710736,93957344711371],["v8::internal::compiler::PropertyAccessBuilder::TryBuildStringCheck(v8::internal::compiler::JSHeapBroker*, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > const&, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node*)",93957344711520,93957344711816],["v8::internal::compiler::PropertyAccessBuilder::BuildCheckMaps(v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node*, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > const&)",93957344712128,93957344712845],["v8::internal::compiler::PropertyAccessBuilder::ConvertRepresentation(v8::internal::Representation)",93957344713248,93957344713289],["v8::internal::compiler::PropertyAccessBuilder::TryFoldLoadConstantDataField(v8::internal::compiler::NameRef const&, v8::internal::compiler::PropertyAccessInfo const&, v8::internal::compiler::Node*)",93957344713712,93957344714397],["v8::internal::compiler::PropertyAccessBuilder::BuildMinimorphicLoadDataField(v8::internal::compiler::NameRef const&, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo const&, v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957344715488,93957344715750],["v8::internal::compiler::RedundancyElimination::RedundancyElimination(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::Zone*)",93957344716304,93957344716347],["v8::internal::compiler::RedundancyElimination::Reduce(v8::internal::compiler::Node*)",93957344716384,93957344716507],["v8::internal::compiler::RedundancyElimination::ReduceSpeculativeNumberComparison(v8::internal::compiler::Node*)",93957344717024,93957344718051],["v8::internal::compiler::RedundancyElimination::ReduceEffectPhi(v8::internal::compiler::Node*)",93957344718672,93957344719931],["v8::internal::compiler::RedundancyElimination::EffectPathChecks::LookupCheck(v8::internal::compiler::Node*) const",93957344720192,93957344720702],["v8::internal::compiler::RedundancyElimination::reducer_name() const",93957344721008,93957344721021],["v8::internal::compiler::RefsMap::Lookup(unsigned long const&) const",93957344721216,93957344721301],["v8::base::TemplateHashMapImpl<unsigned long, v8::internal::compiler::ObjectData*, v8::internal::compiler::AddressMatcher, v8::internal::ZoneAllocationPolicy>::Resize()",93957344721520,93957344721899],["v8::internal::compiler::Truncation::Generalize(v8::internal::compiler::Truncation::TruncationKind, v8::internal::compiler::Truncation::TruncationKind)",93957344722048,93957344722297],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberModulus(v8::internal::compiler::NumberOperationHint)",93957345053776,93957345053858],["v8::internal::compiler::StateValuesAccess::size() const",93957345091600,93957345091810],["v8::internal::compiler::Typer::Visitor::Decrement(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345128432,93957345128535],["v8::internal::compiler::Typer::Visitor::JSBitwiseXorTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345133360,93957345133584],["v8::internal::compiler::Typer::Visitor::TypeInductionVariablePhi(v8::internal::compiler::Node*)",93957345139520,93957345141207],["v8::internal::compiler::Typer::Visitor::TypeLoadTypedElement(v8::internal::compiler::Node*)",93957345143072,93957345143273],["v8::internal::compiler::Type::BitsetGlb() const",93957345146656,93957345146972],["v8::internal::compiler::Type::Constant(double, v8::internal::Zone*)",93957345151936,93957345152325],["v8::internal::compiler::ValueNumberingReducer::Grow()",93957345157440,93957345157718],["v8::internal::compiler::Type::Equals(v8::internal::compiler::Type) const",93957345168144,93957345168220],["v8::internal::compiler::ZoneStats::StatsScope::ZoneReturned(v8::internal::Zone*)",93957345176928,93957345177351],["v8::internal::compiler::Int64Lowering::LowerNode(v8::internal::compiler::Node*)",93957345179232,93957345192473],["v8::internal::compiler::Int64Lowering::LowerStoreOperator(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Operator const*)",93957345195968,93957345197193],["v8::internal::compiler::SimdScalarLowering::SetLoweredType(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345217072,93957345217305],["v8::internal::compiler::SimdScalarLowering::LowerLoadTransformOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType)",93957345221264,93957345222992],["v8::internal::compiler::SimdScalarLowering::LowerSaturateBinaryOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::Operator const*, bool)",93957345230416,93957345231969],["v8::internal::compiler::SimdScalarLowering::LowerPack(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::SimdScalarLowering::SimdType, bool)",93957345236336,93957345237504],["v8::internal::compiler::SimdScalarLowering::LowerAllTrueOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType)",93957345240672,93957345241418],["v8::internal::compiler::SimdScalarLowering::Int32ToFloat32(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345243264,93957345243588],["v8::internal::compiler::SimdScalarLowering::Int64ToInt32(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345244288,93957345244832],["void v8::internal::compiler::SimdScalarLowering::Int32ToSmallerInt<short>(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345246816,93957345247826],["v8::internal::compiler::WasmGraphBuilder::Param(int, char const*)",93957345248928,93957345249043],["v8::internal::compiler::WasmGraphBuilder::control()",93957345249456,93957345249469],["v8::internal::compiler::WasmGraphBuilder::TerminateThrow(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345249600,93957345249759],["v8::internal::compiler::WasmGraphBuilder::Phi(v8::internal::wasm::ValueType, unsigned int, v8::internal::compiler::Node**)",93957345250096,93957345250173],["v8::internal::compiler::WasmGraphBuilder::RefFunc(unsigned int)",93957345250592,93957345250768],["v8::internal::compiler::WasmGraphAssembler::LoadFunctionDataFromJSFunction(v8::internal::compiler::Node*)",93957345251376,93957345251611],["v8::internal::compiler::WasmGraphBuilder::SetEffect(v8::internal::compiler::Node*)",93957345252448,93957345252479],["v8::internal::compiler::WasmGraphBuilder::BuildI32DivU(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345254800,93957345254858],["v8::internal::compiler::WasmGraphBuilder::BuildI32Rol(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345255600,93957345255950],["v8::internal::compiler::WasmGraphBuilder::BuildI64RemU(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345257344,93957345257561],["v8::internal::compiler::WasmGraphBuilder::BuildF64CopySign(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345258432,93957345258754],["v8::internal::compiler::WasmGraphBuilder::BuildI32AsmjsRemS(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345260128,93957345262210],["v8::internal::compiler::WasmGraphBuilder::BuildAsmjsStoreMem(v8::internal::MachineType, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345262592,93957345263033],["v8::internal::compiler::WasmGraphBuilder::BuildIntConvertFloat(v8::internal::compiler::Node*, int, v8::internal::wasm::WasmOpcode)",93957345265072,93957345266934],["v8::internal::compiler::WasmGraphBuilder::BuildI32Ctz(v8::internal::compiler::Node*)",93957345266992,93957345267155],["v8::internal::compiler::WasmGraphBuilder::BuildF32Floor(v8::internal::compiler::Node*)",93957345267344,93957345267388],["v8::internal::compiler::WasmGraphBuilder::BuildF32Trunc(v8::internal::compiler::Node*)",93957345267440,93957345267484],["v8::internal::compiler::WasmGraphBuilder::BuildF64Floor(v8::internal::compiler::Node*)",93957345267536,93957345267580],["v8::internal::compiler::WasmGraphBuilder::BuildF64Trunc(v8::internal::compiler::Node*)",93957345267632,93957345267676],["v8::internal::compiler::WasmGraphBuilder::BuildF64Acos(v8::internal::compiler::Node*)",93957345267728,93957345267772],["v8::internal::compiler::WasmGraphBuilder::BuildI64Ctz(v8::internal::compiler::Node*)",93957345267824,93957345268034],["v8::internal::compiler::WasmGraphBuilder::BuildF32SConvertI64(v8::internal::compiler::Node*)",93957345268272,93957345268319],["v8::internal::compiler::WasmGraphBuilder::BuildF64SConvertI64(v8::internal::compiler::Node*)",93957345268368,93957345268415],["v8::internal::compiler::WasmGraphBuilder::BuildCcallConvertFloat(v8::internal::compiler::Node*, int, v8::internal::wasm::WasmOpcode)",93957345268464,93957345270199],["v8::internal::compiler::WasmGraphBuilder::Float32Constant(float)",93957345270816,93957345270830],["v8::internal::compiler::WasmGraphBuilder::Simd128Constant(unsigned char const*)",93957345270848,93957345270898],["v8::internal::compiler::WasmGraphBuilder::SetControl(v8::internal::compiler::Node*)",93957345271120,93957345271154],["v8::internal::compiler::WasmGraphBuilder::TrapIfEq32(v8::internal::wasm::TrapReason, v8::internal::compiler::Node*, int, int)",93957345271360,93957345271659],["v8::internal::compiler::WasmGraphBuilder::IfValue(int, v8::internal::compiler::Node*)",93957345271760,93957345271830],["v8::internal::compiler::WasmGraphBuilder::Return(v8::internal::Vector<v8::internal::compiler::Node*>)",93957345271920,93957345272291],["v8::internal::compiler::(anonymous namespace)::ConvertTrapTest(v8::internal::compiler::WasmGraphBuilder*, v8::internal::wasm::WasmOpcode, v8::internal::MachineType const&, v8::internal::MachineType const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345272384,93957345272651],["v8::internal::compiler::WasmGraphBuilder::StoreArgsInStackSlot(std::initializer_list<std::__1::pair<v8::internal::MachineRepresentation, v8::internal::compiler::Node*> >)",93957345273152,93957345273455],["v8::internal::compiler::WasmGraphBuilder::BuildIntToFloatConversionInstruction(v8::internal::compiler::Node*, v8::internal::ExternalReference, v8::internal::MachineRepresentation, v8::internal::MachineType)",93957345273760,93957345274146],["v8::internal::compiler::WasmGraphBuilder::Throw(unsigned int, v8::internal::wasm::WasmException const*, v8::internal::Vector<v8::internal::compiler::Node*>, int)",93957345274928,93957345276386],["v8::internal::compiler::WasmGraphBuilder::LoadExceptionTagFromTable(unsigned int)",93957345276848,93957345277091],["v8::internal::compiler::WasmGraphBuilder::BuildDecodeException64BitValue(v8::internal::compiler::Node*, unsigned int*)",93957345277536,93957345277948],["v8::internal::compiler::WasmGraphBuilder::ExceptionTagEqual(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345278128,93957345278141],["v8::internal::compiler::WasmGraphBuilder::GetExceptionValues(v8::internal::compiler::Node*, v8::internal::wasm::WasmException const*, v8::internal::Vector<v8::internal::compiler::Node*>)",93957345278640,93957345279886],["v8::internal::compiler::WasmGraphBuilder::BuildCallNode(v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::Vector<v8::internal::compiler::Node*>, int, v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::Node*)",93957345280224,93957345280693],["v8::internal::compiler::GetWasmCallDescriptor(v8::internal::Zone*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::compiler::WasmGraphBuilder::UseRetpoline, v8::internal::compiler::WasmCallKind, bool)",93957345280976,93957345282022],["v8::internal::compiler::WasmGraphBuilder::BuildImportCall(v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::Vector<v8::internal::compiler::Node*>, int, v8::internal::compiler::Node*, v8::internal::compiler::WasmGraphBuilder::IsReturnCall)",93957345282240,93957345282880],["v8::internal::compiler::WasmGraphBuilder::CallDirect(unsigned int, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::Vector<v8::internal::compiler::Node*>, int)",93957345283088,93957345283271],["v8::internal::compiler::WasmGraphBuilder::BuildIndirectCall(unsigned int, unsigned int, v8::internal::Vector<v8::internal::compiler::Node*>, v8::internal::Vector<v8::internal::compiler::Node*>, int, v8::internal::compiler::WasmGraphBuilder::IsReturnCall)",93957345283328,93957345284371],["unsigned int std::__1::__sort5<std::__1::__less<unsigned short, unsigned short>&, unsigned short*>(unsigned short*, unsigned short*, unsigned short*, unsigned short*, unsigned short*, std::__1::__less<unsigned short, unsigned short>&)",93957346620880,93957346621197],["void std::__1::__sort<std::__1::__less<int, int>&, int*>(int*, int*, std::__1::__less<int, int>&)",93957346621808,93957346623208],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<int, int>&, int*>(int*, int*, std::__1::__less<int, int>&)",93957346623488,93957346623995],["unsigned int std::__1::__sort5<std::__1::__less<unsigned int, unsigned int>&, unsigned int*>(unsigned int*, unsigned int*, unsigned int*, unsigned int*, unsigned int*, std::__1::__less<unsigned int, unsigned int>&)",93957346625408,93957346625669],["void std::__1::__sort<std::__1::__less<unsigned long, unsigned long>&, unsigned long*>(unsigned long*, unsigned long*, std::__1::__less<unsigned long, unsigned long>&)",93957346626192,93957346627642],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<unsigned long, unsigned long>&, unsigned long*>(unsigned long*, unsigned long*, std::__1::__less<unsigned long, unsigned long>&)",93957346627920,93957346628507],["std::__1::__itoa::__u64toa(unsigned long, char*)",93957346629120,93957346630697],["v8::base::ConditionVariable::NotifyAll()",93957346630720,93957346630730],["v8::base::ConditionVariable::~ConditionVariable()",93957346630816,93957346630826],["std::__1::__next_prime(unsigned long)",93957346630848,93957346634298],["std::overflow_error::overflow_error(char const*)",93957346634384,93957346634419],["std::__1::__iostream_category::message(int) const",93957346634448,93957346634546],["std::__1::ios_base::failure::~failure()",93957346634576,93957346634604],["std::__1::ios_base::getloc() const",93957346634688,93957346634716],["std::__1::ios_base::~ios_base()",93957346634848,93957346634876],["std::__1::__throw_failure(char const*)",93957346634928,93957346635091],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf()",93957346645424,93957346645718],["std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_istringstream()",93957346649872,93957346649966],["std::__1::__stdinbuf<char>::imbue(std::__1::locale const&)",93957346652320,93957346652401],["std::__1::__stdinbuf<wchar_t>::uflow()",93957346653216,93957346653231],["std::__1::__stdoutbuf<char>::overflow(int)",93957346654192,93957346654496],["global constructors keyed to 000101",93957346654976,93957346655087],["std::__1::collate<char>::do_transform(char const*, char const*) const",93957346655200,93957346655354],["std::__1::collate<wchar_t>::do_hash(wchar_t const*, wchar_t const*) const",93957346655712,93957346655784],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, long&) const",93957346657792,93957346657802],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, long long&) const",93957346658944,93957346658954],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, unsigned short&) const",93957346660096,93957346660106],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, unsigned int&) const",93957346661248,93957346661258],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, unsigned long&) const",93957346662400,93957346662410],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, unsigned long long&) const",93957346663552,93957346663562],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, float&) const",93957346664704,93957346664714],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, double&) const",93957346665984,93957346665994],["seed48",139871563520480,139871563520508],["getentropy",139871563521264,139871563521396],["__strtoul_internal",139871563523248,139871563523264],["__strtof_internal",139871563525824,139871563525840],["strtod",139871563525888,139871563525906],["strtof64x",139871563525936,139871563525954],["__strtod_l",139871563546464,139871563546474],["__strtof_nan",139871563556464,139871563556617],["register_printf_type",139871563612448,139871563612713],["dprintf",139871563616256,139871563616435],["psignal",139871563617568,139871563617896],["getw",139871563619840,139871563619932],["renameat",139871563620096,139871563620138],["funlockfile",139871563620496,139871563620573],["__isoc99_vfscanf",139871563621008,139871563621018],["psiginfo",139871563621520,139871563622803],["fclose",139871563735568,139871563736212],["fflush",139871563736832,139871563737125],["fgets",139871563737536,139871563737932],["_IO_unsave_wmarkers",139871563758592,139871563758721],["vasprintf",139871563773696,139871563773703],["__fwriting",139871563777024,139871563777032],["fmemopen",139871563778448,139871563778934],["fputc_unlocked",139871563780832,139871563780880],["putc_unlocked",139871563781072,139871563781120],["fgets_unlocked",139871563781680,139871563781832],["_IO_file_setbuf",139871563782368,139871563782415],["_IO_file_attach",139871563789888,139871563790063],["_IO_un_link",139871563792480,139871563792497],["__uflow",139871563794496,139871563794833],["_IO_enable_locks",139871563796288,139871563796337],["_IO_flush_all",139871563798976,139871563798986],["_IO_marker_difference",139871563799920,139871563799927],["_IO_default_pbackfail",139871563800208,139871563800543],["_IO_iter_file",139871563800688,139871563800692],["_IO_str_underflow",139871563800928,139871563801014],["_IO_str_init_readonly",139871563802176,139871563802205],["pthread_attr_setschedpolicy",139871563803008,139871563803043],["pthread_condattr_init",139871563803200,139871563803235],["malloc_stats",139871563830992,139871563831559],["_obstack_free",139871563838432,139871563838557],["__libc_thread_freeres",139871563840336,139871563840364],["__strcasestr",139871563848144,139871563849193],["argz_replace",139871563852880,139871563853718],["__strcspn_c3",139871563867344,139871563867405],["memcpy",139871563945568,139871563945608],["wcsspn",139871563949360,139871563949431],["btowc",139871563950304,139871563950765],["mbsnrtowcs",139871563952992,139871563953714],["wcstod",139871563954672,139871563954690],["wcstof64x_l",139871563976448,139871563976458],["wcscasecmp",139871563997216,139871563997299],["__isoc99_swscanf",139871564000688,139871564001000],["wcstof128_l",139871564012992,139871564013002],["asctime",139871564021440,139871564021457],["difftime",139871564021712,139871564021743],["localtime",139871564021808,139871564021828],["tzset",139871564028768,139871564028954],["timegm",139871564035120,139871564035146],["strptime",139871564037200,139871564037218],["__strftime_l",139871564059072,139871564059140],["clock_getres",139871564069552,139871564069663],["ntp_gettime",139871564072144,139871564072249],["rewinddir",139871564073024,139871564073187],["dirfd",139871564073456,139871564073459],["alphasort",139871564074336,139871564074355],["getdirentries",139871564075200,139871564075265],["setgroups",139871564077728,139871564077872],["putgrent",139871564078960,139871564079693],["getgrent_r",139871564080128,139871564080386],["getgrnam_r",139871564081600,139871564082786],["fgetgrent_r",139871564083616,139871564084279],["__merge_grp",139871564084816,139871564085287],["getpw",139871564085824,139871564086041],["getpwent",139871564086448,139871564086634],["getpwuid",139871564087088,139871564087526],["endpwent",139871564087744,139871564087966],["getpwnam_r",139871564088240,139871564089233],["_nss_files_parse_pwent",139871564090256,139871564090953],["uname",139871564091632,139871564091665],["__wait",139871564091760,139871564091775],["wait3",139871564091792,139871564091810],["waitid",139871564092000,139871564092171],["sleep",139871564092224,139871564092330],["__nanosleep",139871564092464,139871564092513],["__vfork",139871564092992,139871564093026],["execve",139871564093120,139871564093153],["execv",139871564093472,139871564093487],["execl",139871564093872,139871564094224],["execlp",139871564094240,139871564094592],["__getpid",139871564095696,139871564095704],["getuid",139871564095728,139871564095736],["getgid",139871564095760,139871564095768],["getgroups",139871564095792,139871564095825],["setgid",139871564095984,139871564096128],["__getpgid",139871564096288,139871564096321],["getpgrp",139871564096384,139871564096392],["setpgrp",139871564096416,139871564096425],["setsid",139871564096480,139871564096513],["getresgid",139871564096576,139871564096609],["setresgid",139871564096784,139871564096936],["pthread_cond_destroy",139871564539040,139871564539075],["malloc_set_state",139871564539376,139871564539615],["glob",139871564539712,139871564546384],["sched_setaffinity",139871564546496,139871564546582],["__libpthread_freeres",139871566580704,139871566580727],["__pthread_setschedparam",139871566591760,139871566592038],["__pthread_attr_getscope",139871566592384,139871566592398],["__pthread_attr_getstacksize",139871566592464,139871566592574],["__pthread_attr_setstack",139871566592640,139871566592674],["__GI___pthread_mutex_init",139871566593552,139871566594028],["__pthread_mutex_lock_full",139871566594064,139871566595927],["__GI___pthread_mutex_trylock",139871566596576,139871566598192],["__GI___pthread_mutexattr_init",139871566604752,139871566604761],["__GI___pthread_mutexattr_settype",139871566604864,139871566604898],["__GI___pthread_rwlock_wrlock",139871566606976,139871566607934],["__pthread_rwlock_trywrlock",139871566610288,139871566610377],["pthread_rwlockattr_destroy",139871566610864,139871566610867],["pthread_rwlockattr_setpshared",139871566610896,139871566610918],["pthread_rwlockattr_setkind_np",139871566610944,139871566610966],["__pthread_cond_destroy",139871566611024,139871566611155],["pthread_condattr_setclock",139871566616720,139871566616744],["__pthread_cleanup_pop",139871566625120,139871566625153],["__libc_pwrite",139871566629232,139871566629397],["__pthread_kill_other_threads_np",139871566631872,139871566631873],["__pthread_cleanup_routine",139871566632512,139871566632537],["pthread_mutex_setprioceiling",139871566635008,139871566635458],["thrd_join",139871566636928,139871566637059],["cnd_broadcast",139871566637616,139871566637694],["tss_create",139871566638032,139871566638110],["__libpthread_version_placeholder",139871566638320,139871566638321],["_dl_debug_state",139871566964064,139871566964065],["_dl_allocate_tls",139871566974144,139871566974242],["_dl_exception_create",139871566989008,139871566989227],["__tls_get_addr",139871566996544,139871566996605],["free",139871567004576,139871567004628],["_dl_catch_exception",139871567006128,139871567006347],["v8::DelayedTasksPlatform::CallOnWorkerThread(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957335211968,93957335212087],["v8::DelayedTasksPlatform::PostJob(v8::TaskPriority, std::__1::unique_ptr<v8::JobTask, std::__1::default_delete<v8::JobTask> >)",93957335212272,93957335212407],["v8::Serializer::PrepareTransfer(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335310384,93957335310927],["v8::(anonymous namespace)::ShellArrayBufferAllocator::Allocate(unsigned long)",93957335311600,93957335311696],["v8::(anonymous namespace)::ArrayBufferAllocatorBase::Allocate(unsigned long)",93957335311936,93957335311954],["v8::(anonymous namespace)::MockArrayBufferAllocator::AllocateUninitialized(unsigned long)",93957335312016,93957335312061],["v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawFixedArray(int, v8::internal::AllocationType)",93957336837984,93957336838138],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewBytecodeArray(int, unsigned char const*, int, int, v8::internal::Handle<v8::internal::FixedArray>)",93957336839712,93957336840292],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewSharedFunctionInfo(v8::internal::MaybeHandle<v8::internal::String>, v8::internal::MaybeHandle<v8::internal::HeapObject>, int, v8::internal::FunctionKind)",93957336841376,93957336842241],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewFeedbackMetadata(int, int, v8::internal::AllocationType)",93957336842512,93957336842739],["v8::internal::FactoryBase<v8::internal::LocalFactory>::InternalizeString(v8::internal::Vector<unsigned short const> const&, bool)",93957336843152,93957336843300],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewTwoByteInternalizedString(v8::internal::Vector<unsigned short const> const&, unsigned int)",93957336843536,93957336843762],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewRawTwoByteString(int, v8::internal::AllocationType)",93957336843936,93957336844102],["v8::internal::FactoryBase<v8::internal::LocalFactory>::MakeOrFindTwoCharacterString(unsigned short, unsigned short)",93957336845680,93957336845952],["v8::internal::GCTracer::AddCompactionEvent(double, unsigned long)",93957336936128,93957336936235],["v8::internal::GCTracer::RecordGCPhasesHistograms(v8::internal::TimedHistogram*)",93957336940944,93957336941469],["v8::internal::WriteBarrier::MarkingSlow(v8::internal::Heap*, v8::internal::JSArrayBuffer, v8::internal::ArrayBufferExtension*)",93957336943440,93957336943511],["v8::internal::Heap::SetSerializedObjects(v8::internal::FixedArray)",93957336944736,93957336944749],["v8::internal::Heap::MaxReserved()",93957336947232,93957336947253],["v8::internal::PagedSpaceIterator::Next()",93957336947648,93957336947737],["v8::internal::SpaceIterator::HasNext()",93957336948320,93957336948333],["v8::internal::Heap::CanExpandOldGeneration(unsigned long)",93957336948608,93957336948861],["v8::internal::Heap::SelectGarbageCollector(v8::internal::AllocationSpace, char const**)",93957336949264,93957336949592],["v8::internal::Heap::PrintShortHeapStatistics()",93957336950288,93957336951998],["v8::internal::Heap::PrintFreeListsStats()",93957336952160,93957336957918],["v8::internal::Heap::DumpJSONHeapStatistics(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)::$_0::operator()(int) const",93957336960032,93957336961115],["v8::internal::Heap::DisableInlineAllocation()",93957336961472,93957336961976],["v8::internal::Heap::AddRetainingPathTarget(v8::internal::Handle<v8::internal::HeapObject>, v8::internal::RetainingPathOption)",93957336962192,93957336962597],["v8::internal::Heap::PrintRetainingPath(v8::internal::HeapObject, v8::internal::RetainingPathOption)",93957336962976,93957336964215],["v8::internal::Heap::AddRetainingRoot(v8::internal::Root, v8::internal::HeapObject)",93957336964592,93957336964909],["v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector)",93957337001360,93957337003001],["v8::internal::Heap::MarkCompactPrologue()",93957337003200,93957337003802],["v8::internal::Heap::EvaluateOldSpaceLocalPretenuring(unsigned long)",93957337004288,93957337004608],["v8::internal::Heap::ExternalStringTable::PromoteYoung()",93957337005552,93957337006070],["v8::internal::Heap::UnprotectAndRegisterMemoryChunk(v8::internal::HeapObject)",93957337006176,93957337006278],["v8::internal::Heap::ProtectUnprotectedMemoryChunks()",93957337006416,93957337006808],["v8::internal::Heap::UpdateYoungReferenceInExternalStringTableEntry(v8::internal::Heap*, v8::internal::FullObjectSlot)",93957337006928,93957337007297],["v8::internal::Heap::ExternalStringTable::IterateAll(v8::internal::RootVisitor*)",93957337007360,93957337007443],["v8::internal::IncrementalMarking::IsBelowActivationThresholds() const",93957337060000,93957337060058],["v8::internal::IncrementalMarking::Stop()",93957337065776,93957337066400],["v8::internal::IncrementalMarking::ScheduleBytesToMarkBasedOnAllocation()",93957337068960,93957337069224],["v8::internal::IncrementalMarkingRootMarkingVisitor::MarkObjectByPointer(v8::internal::FullObjectSlot)",93957337069552,93957337069798],["v8::internal::IndexGenerator::GetNext()",93957337070592,93957337071174],["v8::internal::InvalidatedSlotsFilter::OldToNew(v8::internal::MemoryChunk*)",93957337071216,93957337071247],["v8::internal::InvalidatedSlotsCleanup::OldToNew(v8::internal::MemoryChunk*)",93957337071536,93957337071624],["v8::internal::LargePage::Initialize(v8::internal::Heap*, v8::internal::MemoryChunk*, v8::internal::Executability)",93957337071696,93957337071746],["v8::internal::NewSpace::Flip()",93957337446864,93957337446891],["v8::internal::ObjectStats::PrintJSON(char const*)",93957337452224,93957337461252],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualFixedArrayDetails(v8::internal::FixedArray)",93957337475120,93957337475223],["v8::internal::ObjectStatsCollectorImpl::RecordObjectStats(v8::internal::HeapObject, v8::internal::InstanceType, unsigned long, unsigned long)",93957337478784,93957337479198],["v8::internal::FieldStatsCollector::~FieldStatsCollector()",93957337481776,93957337481855],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Map, v8::internal::FieldStatsCollector::JSObjectFieldStats>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Map, v8::internal::FieldStatsCollector::JSObjectFieldStats>, std::__1::__unordered_map_hasher<v8::internal::Map, std::__1::__hash_value_type<v8::internal::Map, v8::internal::FieldStatsCollector::JSObjectFieldStats>, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::Map>, true>, std::__1::__unordered_map_equal<v8::internal::Map, std::__1::__hash_value_type<v8::internal::Map, v8::internal::FieldStatsCollector::JSObjectFieldStats>, std::__1::equal_to<v8::internal::Map>, v8::internal::Object::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Map, v8::internal::FieldStatsCollector::JSObjectFieldStats> > >::__emplace_unique_key_args<v8::internal::Map, std::__1::pair<v8::internal::Map, v8::internal::FieldStatsCollector::JSObjectFieldStats> >(v8::internal::Map const&, std::__1::pair<v8::internal::Map, v8::internal::FieldStatsCollector::JSObjectFieldStats>&&)",93957337482000,93957337482794],["v8::internal::Object v8::internal::VisitWeakList<v8::internal::AllocationSite>(v8::internal::Heap*, v8::internal::Object, v8::internal::WeakObjectRetainer*)",93957337485120,93957337485968],["v8::internal::PagedSpaceObjectIterator::PagedSpaceObjectIterator(v8::internal::Heap*, v8::internal::PagedSpace*)",93957337488160,93957337488432],["v8::internal::PagedSpace::PagedSpace(v8::internal::Heap*, v8::internal::AllocationSpace, v8::internal::Executability, v8::internal::FreeList*, v8::internal::LocalSpaceKind)",93957337488608,93957337488899],["v8::internal::PagedSpace::RefillFreeList()",93957337489088,93957337489624],["v8::internal::PagedSpace::AddPage(v8::internal::Page*)",93957337490016,93957337490411],["v8::internal::PagedSpace::FreeLinearAllocationArea()",93957337490672,93957337490946],["v8::internal::PagedSpace::ContainsSlow(unsigned long) const",93957337491136,93957337491196],["v8::internal::PagedSpace::Expand()",93957337491392,93957337491590],["v8::internal::PagedSpace::CountTotalPages()",93957337491856,93957337491905],["v8::internal::PagedSpace::MarkLinearAllocationAreaBlack()",93957337492320,93957337492367],["v8::internal::Stats_Runtime_LoadGlobalIC_Slow(int, unsigned long*, v8::internal::Isolate*)",93957337673904,93957337674736],["v8::internal::(anonymous namespace)::SimpleInstallGetter(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Builtins::Name, bool)",93957337789120,93957337789139],["v8::internal::Handle<v8::internal::BytecodeArray> v8::internal::interpreter::BytecodeArrayBuilder::ToBytecodeArray<v8::internal::Isolate>(v8::internal::Isolate*)",93957337819408,93957337819524],["v8::internal::interpreter::BytecodeArrayBuilder::LoadBoolean(bool)",93957337835264,93957337835300],["v8::internal::interpreter::BytecodeArrayBuilder::StoreNamedOwnProperty(v8::internal::interpreter::Register, v8::internal::AstRawString const*, int)",93957337846576,93957337847049],["v8::internal::interpreter::BytecodeArrayBuilder::CreateObjectLiteral(unsigned long, int, int)",93957337852320,93957337852641],["v8::internal::interpreter::BytecodeArrayBuilder::Jump(v8::internal::interpreter::BytecodeLabel*)",93957337856048,93957337856290],["v8::internal::interpreter::BytecodeArrayBuilder::Return()",93957337860432,93957337860645],["v8::internal::interpreter::BytecodeArrayBuilder::StoreModuleVariable(int, int)",93957337864336,93957337864646],["v8::internal::interpreter::BytecodeArrayBuilder::CallNoFeedback(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList)",93957337871184,93957337871686],["v8::internal::interpreter::BytecodeArrayBuilder::CallRuntimeForPair(v8::internal::Runtime::FunctionId, v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList)",93957337874768,93957337874793],["v8::internal::interpreter::BytecodeArrayBuilder::EmitFunctionStartSourcePosition(int)",93957337876064,93957337876108],["v8::internal::interpreter::BytecodeArrayIterator::UpdatePointersCallback(void*)",93957337877392,93957337877451],["v8::internal::interpreter::BytecodeArrayIterator::GetImmediateOperand(int) const",93957337877888,93957337877939],["v8::internal::interpreter::BytecodeArrayIterator::GetJumpTargetOffset() const",93957337878672,93957337878701],["v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator++()",93957337879728,93957337879871],["v8::internal::Handle<v8::internal::BytecodeArray> v8::internal::interpreter::BytecodeArrayWriter::ToBytecodeArray<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, int, int, v8::internal::Handle<v8::internal::ByteArray>)",93957337881648,93957337881849],["v8::internal::interpreter::BytecodeArrayWriter::Write(v8::internal::interpreter::BytecodeNode*)",93957337882464,93957337882795],["v8::internal::interpreter::BytecodeArrayWriter::WriteJumpLoop(v8::internal::interpreter::BytecodeNode*, v8::internal::interpreter::BytecodeLoopHeader*)",93957337888576,93957337888929],["v8::internal::interpreter::BytecodeArrayWriter::PatchJump(unsigned long, unsigned long)",93957337889600,93957337889750],["v8::internal::interpreter::BytecodeArrayWriter::BindTryRegionStart(v8::internal::interpreter::HandlerTableBuilder*, int)",93957337889920,93957337889953],["v8::internal::interpreter::BytecodeArrayWriter::PatchJumpWith16BitOperand(unsigned long, int)",93957337890304,93957337890555],["v8::internal::interpreter::BytecodeDecoder::DecodeSignedOperand(unsigned long, v8::internal::interpreter::OperandType, v8::internal::interpreter::OperandScale)",93957337891392,93957337891470],["v8::internal::interpreter::CreateObjectLiteralFlags::Encode(int, bool)",93957337894208,93957337894222],["v8::internal::Handle<v8::internal::BytecodeArray> v8::internal::interpreter::BytecodeGenerator::FinalizeBytecode<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957337894400,93957337894786],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::interpreter::BytecodeGenerator::FinalizeSourcePositionTable<v8::internal::Isolate>(v8::internal::Isolate*)",93957337896528,93957337896622],["v8::internal::interpreter::BytecodeGenerator::BytecodeGenerator(v8::internal::Zone*, v8::internal::UnoptimizedCompilationInfo*, v8::internal::AstStringConstants const*, std::__1::vector<v8::internal::FunctionLiteral*, std::__1::allocator<v8::internal::FunctionLiteral*> >*)",93957337899632,93957337900333],["v8::internal::interpreter::BytecodeGenerator::BuildLocalActivationContextInitialization()",93957337901616,93957337901863],["v8::internal::interpreter::BytecodeGenerator::VisitModuleNamespaceImports()",93957337903936,93957337904257],["v8::internal::interpreter::BytecodeGenerator::VisitBlock(v8::internal::Block*)",93957337905248,93957337905733],["v8::internal::interpreter::BytecodeGenerator::VisitFunctionLiteral(v8::internal::FunctionLiteral*)",93957337907104,93957337907730],["v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)",93957337909664,93957337909722],["v8::internal::interpreter::BytecodeGenerator::VisitForTest(v8::internal::Expression*, v8::internal::interpreter::BytecodeLabels*, v8::internal::interpreter::BytecodeLabels*, v8::internal::interpreter::BytecodeGenerator::TestFallthrough)",93957337910544,93957337910824],["v8::internal::interpreter::BytecodeGenerator::VisitBreakStatement(v8::internal::BreakStatement*)",93957337910976,93957337911106],["v8::internal::interpreter::BytecodeGenerator::VisitWithStatement(v8::internal::WithStatement*)",93957337911568,93957337912281],["v8::internal::interpreter::BytecodeGenerator::VisitDoWhileStatement(v8::internal::DoWhileStatement*)",93957337913568,93957337914653],["v8::internal::interpreter::BytecodeGenerator::VisitForStatement(v8::internal::ForStatement*)",93957337915408,93957337916269],["v8::internal::interpreter::BytecodeGenerator::PrepareAssignmentLhs(v8::internal::Expression*, v8::internal::interpreter::BytecodeGenerator::AccumulatorPreservingMode)",93957337917808,93957337920128],["v8::internal::interpreter::BytecodeGenerator::VisitForOfStatement(v8::internal::ForOfStatement*)",93957337921504,93957337923895],["v8::internal::interpreter::BytecodeGenerator::VisitTryCatchStatement(v8::internal::TryCatchStatement*)",93957337924192,93957337925237],["v8::internal::interpreter::BytecodeGenerator::BuildClassLiteral(v8::internal::ClassLiteral*, v8::internal::interpreter::Register)",93957337926368,93957337931028],["v8::internal::interpreter::BytecodeGenerator::BuildLoadPropertyKey(v8::internal::LiteralProperty*, v8::internal::interpreter::Register)",93957337931472,93957337931776],["v8::internal::interpreter::BytecodeGenerator::VisitClassLiteral(v8::internal::ClassLiteral*, v8::internal::interpreter::Register)",93957337932032,93957337932538],["v8::internal::interpreter::BytecodeGenerator::BuildVariableLoad(v8::internal::Variable*, v8::internal::HoleCheckMode, v8::internal::TypeofMode)",93957337933120,93957337933867],["v8::internal::interpreter::BytecodeGenerator::VisitInitializeClassStaticElementsStatement(v8::internal::InitializeClassStaticElementsStatement*)",93957337933952,93957337934057],["v8::internal::interpreter::BytecodeGenerator::VisitNativeFunctionLiteral(v8::internal::NativeFunctionLiteral*)",93957337934336,93957337934726],["v8::internal::interpreter::BytecodeGenerator::VisitLiteral(v8::internal::Literal*)",93957337935504,93957337935754],["v8::internal::interpreter::BytecodeGenerator::BuildCreateObjectLiteral(v8::internal::interpreter::Register, unsigned char, unsigned long)",93957337935840,93957337936125],["v8::internal::interpreter::BytecodeGenerator::MultipleEntryBlockContextScope::MultipleEntryBlockContextScope(v8::internal::interpreter::BytecodeGenerator*, v8::internal::Scope*)",93957337944688,93957337945047],["v8::internal::interpreter::BytecodeGenerator::BuildIteratorNext(v8::internal::interpreter::BytecodeGenerator::IteratorRecord const&, v8::internal::interpreter::Register)",93957337945664,93957337945848],["v8::internal::interpreter::BytecodeGenerator::VisitVariableProxy(v8::internal::VariableProxy*)",93957337948896,93957337948956],["v8::internal::interpreter::BytecodeGenerator::GetCachedLoadGlobalICSlot(v8::internal::TypeofMode, v8::internal::Variable*)",93957337949008,93957337949287],["v8::internal::interpreter::BytecodeGenerator::GetCachedStoreGlobalICSlot(v8::internal::LanguageMode, v8::internal::Variable*)",93957337949664,93957337949922],["v8::internal::interpreter::BytecodeGenerator::BuildStoreNamedProperty(v8::internal::Expression const*, v8::internal::interpreter::Register, v8::internal::AstRawString const*)",93957337950288,93957337950578],["v8::internal::interpreter::BytecodeGenerator::BuildFinalizeIteration(v8::internal::interpreter::BytecodeGenerator::IteratorRecord, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957337951008,93957337952062],["v8::internal::interpreter::BytecodeGenerator::BuildDestructuringObjectAssignment(v8::internal::ObjectLiteral*, v8::internal::Token::Value, v8::internal::LookupHoistingMode)",93957337954960,93957337956835],["v8::internal::interpreter::BytecodeGenerator::BuildPrivateSetterAccess(v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957337957600,93957337957960],["v8::internal::interpreter::BytecodeGenerator::VisitCompoundAssignment(v8::internal::CompoundAssignment*)",93957337958256,93957337960833],["v8::internal::interpreter::BytecodeGenerator::VisitYield(v8::internal::Yield*)",93957337961200,93957337962327],["v8::internal::interpreter::BytecodeGenerator::BuildCallIteratorMethod(v8::internal::interpreter::Register, v8::internal::AstRawString const*, v8::internal::interpreter::RegisterList, v8::internal::interpreter::BytecodeLabel*, v8::internal::interpreter::BytecodeLabels*)",93957337965408,93957337965697],["v8::internal::interpreter::BytecodeGenerator::BuildIteratorClose(v8::internal::interpreter::BytecodeGenerator::IteratorRecord const&, v8::internal::Expression*)",93957337966368,93957337966805],["v8::internal::interpreter::BytecodeGenerator::VisitThrow(v8::internal::Throw*)",93957337967104,93957337967371],["v8::internal::interpreter::BytecodeGenerator::VisitNamedSuperPropertyLoad(v8::internal::Property*, v8::internal::interpreter::Register)",93957337968624,93957337969306],["v8::internal::interpreter::BytecodeGenerator::BuildPrivateMethodIn(v8::internal::Variable*, v8::internal::Expression*)",93957337969856,93957337971181],["v8::internal::BufferedZoneList<v8::internal::RegExpTree, 2>::Add(v8::internal::RegExpTree*, v8::internal::Zone*)",93957339909536,93957339909899],["v8::internal::HasFewDifferentCharacters(v8::internal::Handle<v8::internal::String>)",93957339919088,93957339919398],["v8::internal::RegExpGlobalCache::RegExpGlobalCache(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::internal::Isolate*)",93957339926368,93957339926886],["v8::internal::ReadOnlyRoots::Iterate(v8::internal::RootVisitor*)",93957339929664,93957339929722],["v8::internal::Stats_Runtime_NewArray(int, unsigned long*, v8::internal::Isolate*)",93957339932480,93957339933749],["v8::internal::Stats_Runtime_GrowArrayElements(int, unsigned long*, v8::internal::Isolate*)",93957339935200,93957339936004],["v8::internal::Stats_Runtime_IsArray(int, unsigned long*, v8::internal::Isolate*)",93957339937040,93957339937609],["v8::internal::Stats_Runtime_ArrayIncludes_Slow(int, unsigned long*, v8::internal::Isolate*)",93957339940224,93957339942506],["v8::internal::Handle<v8::internal::Object> v8::internal::FactoryBase<v8::internal::Factory>::NewNumberFromInt64<(v8::internal::AllocationType)0>(long)",93957339946784,93957339946935],["v8::internal::Stats_Runtime_AtomicsLoad64(int, unsigned long*, v8::internal::Isolate*)",93957339946992,93957339947346],["v8::internal::Stats_Runtime_AtomicsStore64(int, unsigned long*, v8::internal::Isolate*)",93957339947408,93957339947762],["v8::internal::Stats_Runtime_AtomicsExchange(int, unsigned long*, v8::internal::Isolate*)",93957339947824,93957339948178],["v8::internal::Stats_Runtime_AtomicsCompareExchange(int, unsigned long*, v8::internal::Isolate*)",93957339948240,93957339948594],["v8::internal::Stats_Runtime_AtomicsAdd(int, unsigned long*, v8::internal::Isolate*)",93957339948656,93957339949010],["v8::internal::Stats_Runtime_AtomicsSub(int, unsigned long*, v8::internal::Isolate*)",93957339949072,93957339949426],["v8::internal::Stats_Runtime_AtomicsAnd(int, unsigned long*, v8::internal::Isolate*)",93957339949488,93957339949842],["v8::internal::Runtime_ResolvePossiblyDirectEval(int, unsigned long*, v8::internal::Isolate*)",93957340010288,93957340011004],["v8::internal::(anonymous namespace)::TryInstallNCICode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::IsCompiledScope*)",93957340012128,93957340012348],["v8::internal::CodeTracer::OpenFile()",93957340012528,93957340012621],["v8::internal::Runtime_DateCurrentTime(int, unsigned long*, v8::internal::Isolate*)",93957340012704,93957340013023],["v8::internal::Stats_Runtime_DebugBreakOnBytecode(int, unsigned long*, v8::internal::Isolate*)",93957340014448,93957340015617],["v8::internal::Stats_Runtime_HandleDebuggerStatement(int, unsigned long*, v8::internal::Isolate*)",93957340016848,93957340017349],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::NewStringFromStaticChars<15ul>(char const (&) [15ul], v8::internal::AllocationType)",93957340024240,93957340024301],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::NewStringFromStaticChars<18ul>(char const (&) [18ul], v8::internal::AllocationType)",93957340024496,93957340024557],["v8::internal::Runtime_GetGeneratorScopeDetails(int, unsigned long*, v8::internal::Isolate*)",93957340025920,93957340026643],["v8::internal::Runtime_GetBreakLocations(int, unsigned long*, v8::internal::Isolate*)",93957340029856,93957340030201],["v8::internal::Runtime_ClearStepping(int, unsigned long*, v8::internal::Isolate*)",93957340032208,93957340032373],["v8::internal::Runtime_FunctionGetInferredName(int, unsigned long*, v8::internal::Isolate*)",93957340034208,93957340034459],["v8::internal::Stats_Runtime_CollectGarbage(int, unsigned long*, v8::internal::Isolate*)",93957340035216,93957340035667],["v8::internal::Stats_Runtime_ScriptLocationFromLine2(int, unsigned long*, v8::internal::Isolate*)",93957340038464,93957340041498],["v8::internal::Stats_Runtime_DebugOnFunctionCall(int, unsigned long*, v8::internal::Isolate*)",93957340041824,93957340042523],["v8::internal::Stats_Runtime_DebugPrepareStepInSuspendedGenerator(int, unsigned long*, v8::internal::Isolate*)",93957340042672,93957340043179],["v8::internal::Stats_Runtime_DebugPushPromise(int, unsigned long*, v8::internal::Isolate*)",93957340043392,93957340043987],["v8::internal::Stats_Runtime_DebugPopPromise(int, unsigned long*, v8::internal::Isolate*)",93957340044064,93957340044502],["v8::internal::Stats_Runtime_DebugCollectCoverage(int, unsigned long*, v8::internal::Isolate*)",93957340047408,93957340050699],["v8::internal::Stats_Runtime_DebugTogglePreciseCoverage(int, unsigned long*, v8::internal::Isolate*)",93957340050848,93957340051390],["v8::internal::Stats_Runtime_DebugToggleBlockCoverage(int, unsigned long*, v8::internal::Isolate*)",93957340051536,93957340052080],["v8::internal::Stats_Runtime_IncBlockCounter(int, unsigned long*, v8::internal::Isolate*)",93957340052128,93957340052482],["v8::internal::Stats_Runtime_DebugAsyncFunctionEntered(int, unsigned long*, v8::internal::Isolate*)",93957340052752,93957340053380],["v8::internal::Stats_Runtime_DebugAsyncFunctionSuspended(int, unsigned long*, v8::internal::Isolate*)",93957340053616,93957340054224],["v8::internal::Stats_Runtime_DebugAsyncFunctionResumed(int, unsigned long*, v8::internal::Isolate*)",93957340054432,93957340055027],["v8::internal::Stats_Runtime_DebugAsyncFunctionFinished(int, unsigned long*, v8::internal::Isolate*)",93957340055392,93957340056097],["v8::internal::Stats_Runtime_LiveEditPatchScript(int, unsigned long*, v8::internal::Isolate*)",93957340056800,93957340057854],["v8::internal::Stats_Runtime_ProfileCreateSnapshotDataBlob(int, unsigned long*, v8::internal::Isolate*)",93957340058080,93957340058662],["v8::internal::Runtime_AllocateByteArray(int, unsigned long*, v8::internal::Isolate*)",93957340109216,93957340109380],["v8::internal::Runtime_OrdinaryHasInstance(int, unsigned long*, v8::internal::Isolate*)",93957340120400,93957340120548],["v8::internal::Runtime_CreateRegExpLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340141904,93957340142980],["v8::internal::Runtime::GetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, bool*)",93957340165152,93957340165602],["v8::internal::Runtime_ObjectValues(int, unsigned long*, v8::internal::Isolate*)",93957340178592,93957340178848],["v8::internal::Runtime_JSReceiverSetPrototypeOfThrow(int, unsigned long*, v8::internal::Isolate*)",93957340185984,93957340186207],["v8::internal::Runtime_HasProperty(int, unsigned long*, v8::internal::Isolate*)",93957340195616,93957340195932],["v8::internal::Runtime_DefineAccessorPropertyUnchecked(int, unsigned long*, v8::internal::Isolate*)",93957340202800,93957340203336],["v8::internal::Runtime_DefineGetterPropertyUnchecked(int, unsigned long*, v8::internal::Isolate*)",93957340210752,93957340211588],["v8::internal::Runtime_DefineSetterPropertyUnchecked(int, unsigned long*, v8::internal::Isolate*)",93957340216912,93957340217762],["v8::internal::Runtime_ToLength(int, unsigned long*, v8::internal::Isolate*)",93957340221008,93957340221229],["v8::internal::Runtime_CreateIterResultObject(int, unsigned long*, v8::internal::Isolate*)",93957340224288,93957340224462],["v8::internal::Runtime_LoadPrivateSetter(int, unsigned long*, v8::internal::Isolate*)",93957340228256,93957340228384],["v8::internal::Runtime_AddPrivateField(int, unsigned long*, v8::internal::Isolate*)",93957340232768,93957340233363],["v8::internal::Runtime_SwissTableUpdate(int, unsigned long*, v8::internal::Isolate*)",93957340237440,93957340237935],["v8::internal::Runtime_SwissTableKeyAt(int, unsigned long*, v8::internal::Isolate*)",93957340241472,93957340241653],["v8::internal::Name::Equals(v8::internal::Name)",93957340243952,93957340244102],["v8::internal::Runtime_Equal(int, unsigned long*, v8::internal::Isolate*)",93957340244992,93957340245170],["v8::internal::Runtime_StrictEqual(int, unsigned long*, v8::internal::Isolate*)",93957340246528,93957340246604],["v8::internal::Runtime_ReferenceEqual(int, unsigned long*, v8::internal::Isolate*)",93957340247648,93957340247691],["v8::internal::Runtime_GreaterThan(int, unsigned long*, v8::internal::Isolate*)",93957340248960,93957340249159],["v8::internal::Runtime_GreaterThanOrEqual(int, unsigned long*, v8::internal::Isolate*)",93957340250576,93957340250780],["v8::internal::Runtime_PromiseRejectAfterResolved(int, unsigned long*, v8::internal::Isolate*)",93957340252432,93957340252638],["v8::internal::Runtime_PromiseRevokeReject(int, unsigned long*, v8::internal::Isolate*)",93957340254064,93957340254296],["v8::internal::Runtime_PerformMicrotaskCheckpoint(int, unsigned long*, v8::internal::Isolate*)",93957340256080,93957340256214],["v8::internal::Runtime_PromiseStatus(int, unsigned long*, v8::internal::Isolate*)",93957340257568,93957340257782],["v8::internal::Runtime_PromiseHookInit(int, unsigned long*, v8::internal::Isolate*)",93957340259040,93957340259249],["v8::internal::Runtime_AwaitPromisesInitOld(int, unsigned long*, v8::internal::Isolate*)",93957340261120,93957340261626],["v8::internal::Runtime_PromiseHookAfter(int, unsigned long*, v8::internal::Isolate*)",93957340263440,93957340263705],["v8::internal::Runtime_ResolvePromise(int, unsigned long*, v8::internal::Isolate*)",93957340265360,93957340265574],["v8::internal::Runtime_ConstructInternalAggregateErrorHelper(int, unsigned long*, v8::internal::Isolate*)",93957340267040,93957340267542],["v8::internal::Stats_Runtime_IsJSProxy(int, unsigned long*, v8::internal::Isolate*)",93957340268848,93957340269417],["v8::internal::Runtime_JSProxyGetTarget(int, unsigned long*, v8::internal::Isolate*)",93957340270048,93957340270140],["v8::internal::Runtime_GetPropertyWithReceiver(int, unsigned long*, v8::internal::Isolate*)",93957340270672,93957340270997],["v8::internal::Runtime_SetPropertyWithReceiver(int, unsigned long*, v8::internal::Isolate*)",93957340271728,93957340272085],["v8::internal::Runtime_CheckProxyGetSetTrapResult(int, unsigned long*, v8::internal::Isolate*)",93957340272848,93957340273246],["v8::internal::Runtime_CheckProxyHasTrapResult(int, unsigned long*, v8::internal::Isolate*)",93957340274048,93957340274352],["v8::internal::Runtime_CheckProxyDeleteTrapResult(int, unsigned long*, v8::internal::Isolate*)",93957340275056,93957340275360],["v8::internal::CompiledReplacement::Compile(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, int)",93957340276064,93957340276482],["bool v8::internal::CompiledReplacement::ParseReplacementPattern<unsigned short const>(v8::internal::Vector<unsigned short const>, v8::internal::FixedArray, int, int)",93957340278608,93957340280733],["v8::internal::FindStringIndicesDispatch(v8::internal::Isolate*, v8::internal::String, v8::internal::String, std::__1::vector<int, std::__1::allocator<int> >*, unsigned int)",93957340281344,93957340282921],["v8::internal::Stats_Runtime_StringSplit(int, unsigned long*, v8::internal::Isolate*)",93957340284928,93957340287353],["v8::internal::Stats_Runtime_RegExpExec(int, unsigned long*, v8::internal::Isolate*)",93957340288016,93957340289052],["v8::internal::Stats_Runtime_RegExpExecTreatMatchAtEndAsFailure(int, unsigned long*, v8::internal::Isolate*)",93957340289712,93957340290751],["v8::internal::Stats_Runtime_RegExpExperimentalOneshotExec(int, unsigned long*, v8::internal::Isolate*)",93957340291408,93957340292444],["v8::internal::Stats_Runtime_RegExpExperimentalOneshotExecTreatMatchAtEndAsFailure(int, unsigned long*, v8::internal::Isolate*)",93957340293104,93957340294143],["v8::internal::Stats_Runtime_RegExpBuildIndices(int, unsigned long*, v8::internal::Isolate*)",93957340294352,93957340294948],["v8::internal::Stats_Runtime_RegExpExecMultiple(int, unsigned long*, v8::internal::Isolate*)",93957340300000,93957340305641],["v8::internal::Stats_Runtime_StringReplaceNonGlobalRegExpWithFunction(int, unsigned long*, v8::internal::Isolate*)",93957340307744,93957340310284],["v8::internal::Stats_Runtime_RegExpSplit(int, unsigned long*, v8::internal::Isolate*)",93957340313232,93957340316595],["v8::internal::Stats_Runtime_RegExpReplaceRT(int, unsigned long*, v8::internal::Isolate*)",93957340325904,93957340335627],["v8::internal::Stats_Runtime_RegExpInitializeAndCompile(int, unsigned long*, v8::internal::Isolate*)",93957340335984,93957340336713],["v8::internal::Stats_Runtime_IsRegExp(int, unsigned long*, v8::internal::Isolate*)",93957340336832,93957340337401],["v8::internal::Object std::__1::__function::__policy_invoker<v8::internal::Object (int)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::(anonymous namespace)::SearchRegExpMultiple<true>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::Handle<v8::internal::JSArray>)::{lambda(int)#1}, v8::internal::Object (int)> >(std::__1::__function::__policy_storage const*, int)",93957340337744,93957340337779],["v8::internal::(anonymous namespace)::NewJSArrayWithElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, int)",93957340337824,93957340337871],["v8::internal::(anonymous namespace)::MatchInfoBackedMatch::GetMatch()",93957340337936,93957340337961],["v8::internal::(anonymous namespace)::MatchInfoBackedMatch::GetSuffix()",93957340338016,93957340338059],["v8::internal::(anonymous namespace)::MatchInfoBackedMatch::GetCapture(int, bool*)",93957340338096,93957340338198],["bool std::__1::__function::__policy_invoker<bool (v8::internal::String)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::(anonymous namespace)::MatchInfoBackedMatch::GetNamedCapture(v8::internal::Handle<v8::internal::String>, v8::internal::String::Match::CaptureState*)::{lambda(v8::internal::String)#1}, bool (v8::internal::String)> >(std::__1::__function::__policy_storage const*, v8::internal::String&&)",93957340338640,93957340338737],["v8::internal::Object v8::internal::StringReplaceGlobalAtomRegExpWithString<v8::internal::SeqTwoByteString>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::RegExpMatchInfo>)",93957340339440,93957340340126],["v8::internal::(anonymous namespace)::VectorBackedMatch::GetSuffix()",93957340340176,93957340340220],["v8::internal::(anonymous namespace)::VectorBackedMatch::HasNamedCaptures()",93957340340240,93957340340249],["v8::internal::(anonymous namespace)::VectorBackedMatch::GetNamedCapture(v8::internal::Handle<v8::internal::String>, v8::internal::String::Match::CaptureState*)",93957340340352,93957340340682],["bool std::__1::__function::__policy_invoker<bool (v8::internal::String)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CompiledReplacement::ParseReplacementPattern<unsigned short const>(v8::internal::Vector<unsigned short const>, v8::internal::FixedArray, int, int)::{lambda(v8::internal::String)#1}, bool (v8::internal::String)> >(std::__1::__function::__policy_storage const*, v8::internal::String&&)",93957340340832,93957340340965],["v8::internal::Heap::ExternalStringTable::AddString(v8::internal::String)",93957340534528,93957340534578],["v8::internal::SlotAccessorForHandle::Write(v8::internal::HeapObject, v8::internal::HeapObjectReferenceType, int)",93957340534864,93957340534966],["void v8::internal::RelocInfo::Visit<v8::internal::Deserializer::RelocInfoVisitor>(v8::internal::Deserializer::RelocInfoVisitor*)",93957340535136,93957340535321],["void std::__1::vector<v8::internal::Deserializer::UnresolvedForwardRef, std::__1::allocator<v8::internal::Deserializer::UnresolvedForwardRef> >::__emplace_back_slow_path<v8::internal::Handle<v8::internal::HeapObject>, int, v8::internal::HeapObjectReferenceType&>(v8::internal::Handle<v8::internal::HeapObject>&&, int&&, v8::internal::HeapObjectReferenceType&)",93957340535552,93957340535848],["v8::internal::SlotAccessorForHeapObject::WriteWithGenerationalBarrier(v8::internal::MaybeObject)",93957340536304,93957340536471],["v8::internal::InstructionStream::TryLookupCode(v8::internal::Isolate*, unsigned long)",93957340537072,93957340537514],["v8::internal::InstructionStream::FreeOffHeapInstructionStream(unsigned char*, unsigned int, unsigned char*, unsigned int)",93957340539184,93957340539347],["v8::internal::EmbeddedData::InstructionStartOfBuiltin(int) const",93957340539648,93957340539672],["v8::internal::EmbeddedData::MetadataStartOfBuiltin(int) const",93957340539712,93957340539742],["v8::internal::EmbeddedData::InstructionStartOfBytecodeHandlers() const",93957340539776,93957340539795],["v8::internal::ObjectDeserializer::DeserializeSharedFunctionInfo(v8::internal::Isolate*, v8::internal::SerializedCodeData const*, v8::internal::Handle<v8::internal::String>)",93957340539840,93957340540264],["v8::internal::ObjectDeserializer::LinkAllocationSites()",93957340540576,93957340541016],["v8::internal::ReadOnlyDeserializer::DeserializeIntoIsolate()",93957340541408,93957340541706],["v8::internal::ReadOnlySerializer::~ReadOnlySerializer()",93957340541760,93957340541855],["v8::internal::SerializerDeserializer::RestoreExternalReferenceRedirector(v8::internal::Isolate*, v8::internal::Handle<v8::internal::AccessorInfo>)",93957340544208,93957340544266],["v8::internal::Serializer::PutRoot(v8::internal::RootIndex)",93957340546304,93957340546545],["v8::internal::Serializer::ObjectSerializer::SerializeContent(v8::internal::Map, int)",93957340552976,93957340553206],["v8::internal::CodeAddressMap::CodeMoveEvent(v8::internal::AbstractCode, v8::internal::AbstractCode)",93957340558896,93957340559267],["_ZNSt3__16vectorIhNS_9allocatorIhEEE6insertINS_11__wrap_iterIPKhEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIhNS_15iterator_traitsISA_E9referenceEEE5valueENS5_IPhEEE4typeES8_SA_SA_",93957340561712,93957340563628],["v8::internal::CreateSnapshotDataBlobInternal(v8::SnapshotCreator::FunctionCodeHandling, char const*, v8::Isolate*)",93957340570864,93957340571077],["v8::internal::StartupSerializer::SerializeObjectImpl(v8::internal::Handle<v8::internal::HeapObject>)",93957340573056,93957340573813],["v8::internal::SerializedHandleChecker::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957340574816,93957340575291],["v8::internal::IsIdentifierPartSlow(unsigned int)",93957340575792,93957340575880],["v8::internal::StringBuilderConcatLength(int, v8::internal::FixedArray, int, bool*)",93957340576336,93957340576607],["v8::internal::FixedArrayBuilder::Add(v8::internal::Smi)",93957340576896,93957340576920],["v8::internal::ReplacementStringBuilder::AddString(v8::internal::Handle<v8::internal::String>)",93957340577184,93957340577286],["v8::internal::IncrementalStringBuilder::Length() const",93957340578224,93957340578243],["int v8::internal::FastAsciiConvert<false>(char*, char const*, int, bool*)",93957340578976,93957340579340],["v8::internal::FixedStringAllocator::grow(unsigned int*)",93957340579856,93957340579871],["v8::internal::StringStream::ToCString() const",93957340582448,93957340582584],["v8::internal::StringStream::ClearMentionedObjectCache(v8::internal::Isolate*)",93957340582800,93957340582877],["v8::internal::StringStream::Put(v8::internal::String, int, int)",93957340582896,93957340583677],["v8::internal::StringStream::PrintUsingMap(v8::internal::JSObject)",93957340583808,93957340584703],["v8::internal::StringStream::PrintByteArray(v8::internal::ByteArray)",93957340585104,93957340585490],["v8::internal::StringStream::PrintSecurityTokenIfChanged(v8::internal::JSFunction)",93957340586016,93957340586118],["v8::internal::StringStream::PrintPrototype(v8::internal::JSFunction, v8::internal::Object)",93957340586176,93957340587582],["v8::internal::HeapStringAllocator::~HeapStringAllocator()",93957340587760,93957340587791],["void v8::internal::Utf8Decoder::Decode<unsigned char>(unsigned char*, v8::internal::Vector<unsigned char const> const&)",93957340587840,93957340588094],["v8::internal::Utf8Decoder::Utf8Decoder(v8::internal::Vector<unsigned char const> const&)",93957340588432,93957340589036],["unibrow::Utf8::ValueOfIncrementalFinish(Utf8DfaDecoder::State*)",93957340589232,93957340589253],["unibrow::Uppercase::Is(unsigned int)",93957340589360,93957340589376],["v8::internal::Uri::Encode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, bool)",93957340591376,93957340593968],["v8::internal::Uri::Unescape(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957340595040,93957340596352],["int v8::internal::(anonymous namespace)::UnescapeChar<unsigned char>(v8::internal::Vector<unsigned char const>, int, int, int*)",93957340598992,93957340599406],["v8::internal::Cancelable::~Cancelable()",93957340599840,93957340599892],["v8::internal::Cancelable::~Cancelable()",93957340600432,93957340600497],["v8_inspector::V8Debugger::storeCurrentStackTrace(v8_inspector::StringView const&)",93957342545504,93957342546014],["v8_inspector::(anonymous namespace)::MatchPrototypePredicate::Filter(v8::Local<v8::Object>)",93957342548192,93957342548359],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::IsFunctionBlackboxed(v8::Local<v8::debug::Script>, v8::debug::Location const&, v8::debug::Location const&)::$_7, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342548720,93957342548781],["void std::__1::vector<std::__1::shared_ptr<v8_inspector::AsyncStackTrace>, std::__1::allocator<std::__1::shared_ptr<v8_inspector::AsyncStackTrace> > >::__emplace_back_slow_path<>()",93957342550672,93957342551022],["std::__1::__shared_ptr_emplace<v8_inspector::StackFrame, std::__1::allocator<v8_inspector::StackFrame> >::~__shared_ptr_emplace()",93957342551328,93957342551348],["std::__1::__shared_ptr_emplace<v8_inspector::StackFrame, std::__1::allocator<v8_inspector::StackFrame> >::__on_zero_shared()",93957342551408,93957342551487],["v8_inspector::V8HeapProfilerAgentImpl::V8HeapProfilerAgentImpl(v8_inspector::V8InspectorSessionImpl*, v8_crdtp::FrontendChannel*, v8_inspector::protocol::DictionaryValue*)",93957342552416,93957342552573],["v8_inspector::V8HeapProfilerAgentImpl::~V8HeapProfilerAgentImpl()",93957342552784,93957342552978],["v8_crdtp::cbor::(anonymous namespace)::ParseUTF16String(v8_crdtp::cbor::CBORTokenizer*, v8_crdtp::ParserHandler*)",93957342753824,93957342754297],["v8_crdtp::DomainDispatcher::DomainDispatcher(v8_crdtp::FrontendChannel*)",93957342758512,93957342758550],["v8_crdtp::(anonymous namespace)::ProtocolError::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342763072,93957342763401],["v8_crdtp::(anonymous namespace)::Notification::~Notification()",93957342764144,93957342764200],["void std::__1::__inplace_merge<v8_crdtp::FirstLessThan<v8_crdtp::span<unsigned char> >&, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*> >(std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*>, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*>, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*>, v8_crdtp::FirstLessThan<v8_crdtp::span<unsigned char> >&, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*> >::value_type*, long)",93957342765216,93957342766407],["void std::__1::__buffered_inplace_merge<v8_crdtp::FirstLessThan<std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >&, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*> >(std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*>, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*>, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*>, v8_crdtp::FirstLessThan<std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >&, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*> >::value_type*)",93957342768976,93957342769842],["v8_crdtp::json::ConvertJSONToCBOR(v8_crdtp::span<unsigned short>, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342770208,93957342770372],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleMapBegin()",93957342773680,93957342773807],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleArrayEnd()",93957342774064,93957342774184],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleString16(v8_crdtp::span<unsigned short>)",93957342778880,93957342780364],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleDouble(double)",93957342783072,93957342783623],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleBool(bool)",93957342783792,93957342783922],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleError(v8_crdtp::Status)",93957342784048,93957342784075],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::Emit(char)",93957342784352,93957342784589],["_ZNSt3__16vectorIhNS_9allocatorIhEEE6insertINS_11__wrap_iterIPKcEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIhNS_15iterator_traitsISA_E9referenceEEE5valueENS5_IPhEEE4typeENS5_IPKhEESA_SA_",93957342786848,93957342789096],["v8_crdtp::json::(anonymous namespace)::JsonParser<unsigned char>::ParseToken(unsigned char const*, unsigned char const*, unsigned char const**, unsigned char const**)",93957342790800,93957342792420],["v8::internal::compiler::ParallelMove::PrepareInsertAfter(v8::internal::compiler::MoveOperands*, v8::internal::ZoneVector<v8::internal::compiler::MoveOperands*>*) const",93957342978432,93957342979576],["v8::internal::compiler::InstructionSequence::AddInstruction(v8::internal::compiler::Instruction*)",93957342999888,93957343000421],["v8::internal::compiler::FrameStateDescriptor::GetTotalSize() const",93957343002128,93957343002220],["std::__1::deque<int, v8::internal::RecyclingZoneAllocator<int> >::__add_back_capacity()",93957343007216,93957343007967],["v8::internal::compiler::VirtualRegisterData::EmitGapMoveToInputFromSpillSlot(v8::internal::compiler::InstructionOperand, int, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343011168,93957343011575],["v8::internal::compiler::RegisterState::SpillForDeferred(v8::internal::compiler::RegisterIndex, v8::internal::compiler::AllocatedOperand, int, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343013408,93957343013663],["v8::internal::compiler::SinglePassRegisterAllocator::SinglePassRegisterAllocator(v8::internal::compiler::RegisterKind, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343014752,93957343015503],["v8::internal::compiler::SinglePassRegisterAllocator::MoveRegisterOnMerge(v8::internal::compiler::RegisterIndex, v8::internal::compiler::RegisterIndex, v8::internal::compiler::VirtualRegisterData&, v8::internal::compiler::RpoNumber, v8::internal::compiler::RegisterState*)",93957343017888,93957343018432],["v8::internal::compiler::SinglePassRegisterAllocator::CommitRegister(v8::internal::compiler::RegisterIndex, int, v8::internal::MachineRepresentation, v8::internal::compiler::InstructionOperand*, v8::internal::compiler::SinglePassRegisterAllocator::UsePosition)",93957343019056,93957343019324],["v8::internal::compiler::SinglePassRegisterAllocator::AllocateUse(v8::internal::compiler::RegisterIndex, v8::internal::compiler::VirtualRegisterData&, v8::internal::compiler::InstructionOperand*, int, v8::internal::compiler::SinglePassRegisterAllocator::UsePosition)",93957343019568,93957343020160],["v8::internal::compiler::SinglePassRegisterAllocator::AllocateInput(v8::internal::compiler::UnallocatedOperand*, v8::internal::compiler::VirtualRegisterData&, int)",93957343020480,93957343022148],["v8::internal::compiler::SinglePassRegisterAllocator::AllocateConstantOutput(v8::internal::compiler::ConstantOperand*, v8::internal::compiler::VirtualRegisterData&, int)",93957343022848,93957343023290],["v8::internal::compiler::SinglePassRegisterAllocator::AllocateSameInputOutput(v8::internal::compiler::UnallocatedOperand*, v8::internal::compiler::UnallocatedOperand*, v8::internal::compiler::VirtualRegisterData&, v8::internal::compiler::VirtualRegisterData&, int)",93957343024976,93957343025786],["v8::internal::compiler::SinglePassRegisterAllocator::ReserveFixedRegister(v8::internal::compiler::UnallocatedOperand const*, int, v8::internal::MachineRepresentation, int, v8::internal::compiler::SinglePassRegisterAllocator::UsePosition)",93957343026672,93957343027128],["v8::internal::compiler::MidTierOutputProcessor::PopulateDeferredBlockRegion(v8::internal::compiler::RpoNumber)",93957343027888,93957343030677],["v8::internal::compiler::MidTierOutputProcessor::DefineOutputs(v8::internal::compiler::InstructionBlock const*)",93957343031040,93957343032529],["bool std::__1::__function::__policy_invoker<bool (v8::internal::compiler::TopLevelLiveRange*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::LinearScanAllocator::ComputeStateFromManyPredecessors(v8::internal::compiler::InstructionBlock*, v8::internal::ZoneUnorderedSet<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals>*)::$_2, bool (v8::internal::compiler::TopLevelLiveRange*)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::TopLevelLiveRange*)",93957343173808,93957343173821],["v8::internal::compiler::BytecodeGraphBuilder::Environment::BindRegistersToProjections(v8::internal::interpreter::Register, v8::internal::compiler::Node*, v8::internal::compiler::BytecodeGraphBuilder::Environment::FrameStateAttachmentMode)",93957343204592,93957343204935],["v8::internal::compiler::BytecodeGraphBuilder::ExitThenEnterExceptionHandlers(int)",93957343222304,93957343222964],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaImmutableContextSlot()",93957343226128,93957343226319],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaKeyedProperty()",93957343229280,93957343229762],["v8::internal::compiler::BytecodeGraphBuilder::VisitAdd()",93957343233264,93957343233364],["v8::internal::compiler::BytecodeGraphBuilder::VisitBitwiseAnd()",93957343234160,93957343234260],["v8::internal::compiler::BytecodeGraphBuilder::VisitModSmi()",93957343235056,93957343235156],["v8::internal::compiler::BytecodeGraphBuilder::VisitShiftRightSmi()",93957343235728,93957343235828],["v8::internal::compiler::BytecodeGraphBuilder::VisitNegate()",93957343236176,93957343236273],["v8::internal::compiler::BytecodeGraphBuilder::VisitTypeOf()",93957343236752,93957343236890],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallProperty0()",93957343237696,93957343237854],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallUndefinedReceiver0()",93957343238640,93957343238774],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallWithSpread()",93957343239744,93957343240602],["v8::internal::compiler::BytecodeGraphBuilder::VisitInvokeIntrinsic()",93957343242784,93957343243153],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestEqualStrict()",93957343244944,93957343245044],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestLessThanOrEqual()",93957343245280,93957343245380],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestReferenceEqual()",93957343245504,93957343245691],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestIn()",93957343245808,93957343246166],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestNull()",93957343246336,93957343246501],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestTypeOf()",93957343246688,93957343247571],["v8::internal::compiler::BytecodeGraphBuilder::VisitToNumber()",93957343247744,93957343248085],["v8::internal::compiler::BytecodeGraphBuilder::VisitToObject()",93957343248448,93957343248601],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateRegExpLiteral()",93957343248736,93957343249013],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateArrayFromIterable()",93957343249328,93957343249448],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateObjectLiteral()",93957343249632,93957343249931],["v8::internal::compiler::BytecodeGraphBuilder::VisitCloneObject()",93957343250032,93957343250364],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateClosure()",93957343250672,93957343250982],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateCatchContext()",93957343251216,93957343251475],["v8::internal::compiler::BytecodeGraphBuilder::VisitCreateEvalContext()",93957343251728,93957343251967],["v8::internal::compiler::BytecodeGraphBuilder::VisitJumpIfNull()",93957343252240,93957343252381],["v8::internal::compiler::BytecodeGraphBuilder::VisitJumpIfUndefined()",93957343252528,93957343252669],["v8::internal::compiler::OperationTyper::NumberSign(v8::internal::compiler::Type)",93957344610704,93957344611074],["v8::internal::compiler::OperatorProperties::HasContextInput(v8::internal::compiler::Operator const*)",93957344621760,93957344621781],["v8::internal::compiler::PipelineCompilationJob::~PipelineCompilationJob()",93957344628496,93957344628612],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::MemoryOptimizationPhase>()",93957344640912,93957344641297],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::LoopPeelingPhase>()",93957344645520,93957344645905],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::EarlyOptimizationPhase>()",93957344648720,93957344649105],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::ScheduledEffectControlLinearizationPhase>()",93957344654672,93957344655182],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::CsaEarlyOptimizationPhase, bool const&>(bool const&)",93957344664768,93957344665172],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::ComputeSchedulePhase>()",93957344667776,93957344668191],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::FrameElisionPhase>()",93957344670496,93957344670891],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::AssembleCodePhase>()",93957344672416,93957344672790],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::BuildLiveRangesPhase>()",93957344673968,93957344674393],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::AllocateFPRegistersPhase<v8::internal::compiler::LinearScanAllocator>>()",93957344676304,93957344676870],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::ConnectRangesPhase>()",93957344678080,93957344678483],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::MidTierRegisterOutputDefinitionPhase>()",93957344679728,93957344680105],["v8::internal::compiler::WasmHeapStubCompilationJob::~WasmHeapStubCompilationJob()",93957344681264,93957344681387],["v8::internal::compiler::(anonymous namespace)::PrintFunctionSource(v8::internal::OptimizedCompilationInfo*, v8::internal::Isolate*, int, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957344681744,93957344682859],["v8::internal::compiler::MemoryOptimizationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344683264,93957344684001],["std::__1::__tree<std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> >, std::__1::__map_value_compare<unsigned int, std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> >, std::__1::less<unsigned int>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> >, void*>*)",93957344684832,93957344684888],["v8::internal::compiler::SerializationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344686480,93957344686644],["v8::internal::compiler::InliningPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344686944,93957344689690],["v8::internal::compiler::(anonymous namespace)::SourcePositionWrapper::Reduce(v8::internal::compiler::Node*)",93957344689712,93957344689786],["v8::internal::compiler::EarlyGraphTrimmingPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344689952,93957344690143],["v8::internal::compiler::TyperPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*, v8::internal::compiler::Typer*)",93957344690656,93957344692174],["v8::internal::compiler::LoopPeelingPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344694464,93957344694836],["v8::internal::compiler::EscapeAnalysisPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344697696,93957344699080],["v8::internal::compiler::SimplifiedLoweringPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*, v8::internal::compiler::Linkage*)",93957344699520,93957344699710],["v8::internal::compiler::GenericLoweringPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344700864,93957344701371],["v8::internal::compiler::EffectControlLinearizationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344703088,93957344704072],["v8::internal::compiler::ControlFlowOptimizationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344704320,93957344704714],["v8::internal::compiler::MachineOperatorOptimizationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)",93957344706592,93957344707298],["v8::internal::compiler::CsaEarlyOptimizationPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*, bool)",93957344707584,93957344709602],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedUint32Mod()",93957345042288,93957345042302],["v8::internal::compiler::FastApiCallNode::SlowCallArgumentCount() const",93957345057776,93957345057828],["v8::internal::compiler::Operator1<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345088080,93957345088201],["v8::internal::compiler::TypedOptimization::Reduce(v8::internal::compiler::Node*)",93957345106368,93957345107422],["v8::internal::compiler::Typer::Typer(v8::internal::compiler::JSHeapBroker*, v8::base::Flags<v8::internal::compiler::Typer::Flag, int>, v8::internal::compiler::Graph*, v8::internal::TickCounter*)",93957345117728,93957345117895],["v8::internal::compiler::Typer::Visitor::ObjectIsArrayBufferView(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345129712,93957345129791],["v8::internal::compiler::Typer::Visitor::JSCompareTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345131904,93957345132241],["v8::internal::compiler::Typer::Visitor::JSModulusTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345135296,93957345135520],["v8::internal::compiler::Typer::Visitor::UpdateType(v8::internal::compiler::Node*, v8::internal::compiler::Type)",93957345138768,93957345139060],["v8::internal::compiler::Typer::Visitor::TypeCheckBounds(v8::internal::compiler::Node*)",93957345141760,93957345141882],["v8::internal::compiler::Typer::Visitor::TypeCheckString(v8::internal::compiler::Node*)",93957345142656,93957345142760],["v8::internal::compiler::Typer::Visitor::TypeToBoolean(v8::internal::compiler::Node*)",93957345143584,93957345143678],["v8::internal::compiler::Type::Min() const",93957345145360,93957345145822],["v8::internal::compiler::Type::SimplyEquals(v8::internal::compiler::Type) const",93957345147328,93957345147714],["v8::internal::compiler::Type::Range(double, double, v8::internal::Zone*)",93957345150432,93957345150668],["v8::internal::compiler::BitsetType::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, unsigned int)",93957345155200,93957345155443],["v8::internal::compiler::ValueNumberingReducer::ValueNumberingReducer(v8::internal::Zone*, v8::internal::Zone*)",93957345156576,93957345156615],["v8::internal::compiler::Verifier::Visitor::CheckSwitch(v8::internal::compiler::Node*, v8::internal::compiler::AllNodes const&)",93957345157744,93957345158329],["v8::internal::compiler::Verifier::Visitor::CheckTypeIs(v8::internal::compiler::Node*, v8::internal::compiler::Type)",93957345167344,93957345167634],["v8::internal::compiler::ScheduleVerifier::Run(v8::internal::compiler::Schedule*)",93957345168896,93957345175070],["v8::internal::compiler::ZoneStats::StatsScope::GetMaxAllocatedBytes()",93957345176576,93957345176826],["v8::internal::compiler::ZoneStats::~ZoneStats()",93957345177392,93957345177449],["v8::internal::compiler::Int64Lowering::Int64Lowering(v8::internal::compiler::Graph*, v8::internal::compiler::MachineOperatorBuilder*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::compiler::SimplifiedOperatorBuilder*, v8::internal::Zone*, v8::internal::Signature<v8::internal::MachineRepresentation>*, std::__1::unique_ptr<v8::internal::compiler::Int64LoweringSpecialCase, std::__1::default_delete<v8::internal::compiler::Int64LoweringSpecialCase> >)",93957345178176,93957345178406],["v8::internal::compiler::Int64Lowering::LowerWord64AtomicBinop(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*)",93957345193344,93957345193778],["v8::internal::compiler::Int64Lowering::DefaultLowering(v8::internal::compiler::Node*, bool)",93957345194832,93957345195276],["v8::internal::compiler::Int64Lowering::LowerComparison(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::Operator const*)",93957345197280,93957345197778],["v8::internal::compiler::SimdScalarLowering::LowerGraph()",93957345199280,93957345200121],["v8::internal::compiler::SimdScalarLowering::GetParameterCountAfterLowering()",93957345218352,93957345218540],["v8::internal::compiler::SimdScalarLowering::ReplaceNode(v8::internal::compiler::Node*, v8::internal::compiler::Node**, int)",93957345220448,93957345220725],["v8::internal::compiler::SimdScalarLowering::GetReplacementsWithType(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType)",93957345224656,93957345227193],["v8::internal::compiler::SimdScalarLowering::LowerBinaryOpForSmallInt(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::Operator const*, bool)",93957345229024,93957345230294],["v8::internal::compiler::SimdScalarLowering::LowerIntMinMax(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, bool, v8::internal::compiler::SimdScalarLowering::SimdType)",93957345232512,93957345233482],["v8::internal::compiler::SimdScalarLowering::LowerConvertFromInt(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::SimdScalarLowering::SimdType, bool, int)",93957345235376,93957345236334],["v8::internal::compiler::SimdScalarLowering::LowerShiftOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType)",93957345237504,93957345239078],["v8::internal::compiler::SimdScalarLowering::LowerBitMaskOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, int)",93957345239776,93957345240663],["v8::internal::compiler::SimdScalarLowering::LowerFloatPseudoMinMax(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, bool, v8::internal::compiler::SimdScalarLowering::SimdType)",93957345241424,93957345242389],["v8::internal::compiler::SimdScalarLowering::ExtendNode(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, bool)",93957345243056,93957345243256],["v8::internal::compiler::SimdScalarLowering::Int64ToFloat64(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345243600,93957345243764],["v8::internal::compiler::SimdScalarLowering::Float32ToInt32(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345243952,93957345244276],["v8::internal::compiler::SimdScalarLowering::Int32ToInt64(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345244832,93957345245306],["void v8::internal::compiler::SimdScalarLowering::SmallerIntToInt32<signed char>(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345245840,93957345246804],["void v8::internal::compiler::SimdScalarLowering::Int32ToSmallerInt<signed char>(v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345247840,93957345248414],["v8::internal::compiler::WasmGraphBuilder::Start(unsigned int)",93957345248608,93957345248918],["v8::internal::compiler::WasmGraphBuilder::Loop(v8::internal::compiler::Node*)",93957345249056,93957345249127],["v8::internal::compiler::WasmGraphBuilder::LoopExit(v8::internal::compiler::Node*)",93957345249296,93957345249454],["v8::internal::compiler::WasmGraphBuilder::effect()",93957345249472,93957345249485],["v8::internal::compiler::WasmGraphBuilder::LoopExitValue(v8::internal::compiler::Node*, v8::internal::MachineRepresentation)",93957345249504,93957345249590],["v8::internal::compiler::WasmGraphBuilder::ThrowsException(v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957345249760,93957345249926],["v8::internal::compiler::WasmGraphBuilder::Merge(unsigned int, v8::internal::compiler::Node**)",93957345250032,93957345250092],["v8::internal::compiler::WasmGraphBuilder::EffectPhi(unsigned int, v8::internal::compiler::Node**)",93957345250176,93957345250237],["v8::internal::compiler::WasmGraphBuilder::BuildLoadIsolateRoot()",93957345250432,93957345250580],["v8::internal::compiler::WasmGraphBuilder::RefAsNonNull(v8::internal::compiler::Node*, int)",93957345250768,93957345250841],["v8::internal::compiler::WasmGraphBuilder::BuildLoadInstance()",93957345251040,93957345251372],["v8::internal::compiler::WasmGraphBuilder::Int32Constant(int)",93957345251616,93957345251630],["v8::internal::compiler::WasmGraphBuilder::StackCheck(int)",93957345251648,93957345252445],["v8::internal::compiler::WasmGraphBuilder::PatchInStackCheckIfNeeded()",93957345252480,93957345252634],["v8::internal::compiler::WasmGraphBuilder::BuildI32DivS(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345254384,93957345254799],["v8::internal::compiler::WasmGraphBuilder::BuildI32RemS(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345254864,93957345255246],["v8::internal::compiler::WasmGraphBuilder::MaskShiftCount32(v8::internal::compiler::Node*)",93957345255312,93957345255588],["v8::internal::compiler::WasmGraphBuilder::BuildI64DivS(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345255952,93957345256590],["v8::internal::compiler::WasmGraphBuilder::BuildI64RemS(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957345256816,93957345257340],["v8::internal::compiler::WasmGraphBuilder::MaskShiftCount64(v8::internal::compiler::Node*)",93957345257568,93957345257724],["v8::internal::compiler::WasmGraphBuilder::BuildF32CopySign(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345258064,93957345258426],["v8::internal::compiler::WasmGraphBuilder::BuildI32AsmjsDivS(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345258768,93957345259724],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)",93957346642272,93957346642517],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int)",93957346647568,93957346647750],["std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_ostringstream()",93957346649424,93957346649518],["std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream()",93957346650320,93957346650380],["std::__1::__stdoutbuf<wchar_t>::__stdoutbuf(_IO_FILE*, __mbstate_t*)",93957346652096,93957346652236],["std::__1::__stdinbuf<char>::uflow()",93957346652432,93957346652447],["std::__1::__stdinbuf<wchar_t>::imbue(std::__1::locale const&)",93957346653104,93957346653185],["std::__1::__stdinbuf<wchar_t>::__getchar(bool)",93957346653472,93957346653841],["std::__1::__stdoutbuf<char>::xsputn(char const*, long)",93957346654080,93957346654188],["std::__1::__stdoutbuf<wchar_t>::imbue(std::__1::locale const&)",93957346654496,93957346654551],["std::__1::__stdoutbuf<wchar_t>::overflow(unsigned int)",93957346654672,93957346654976],["_GLOBAL__sub_I_iostream.cpp",93957346655088,93957346655094],["std::__1::collate<char>::do_compare(char const*, char const*, char const*, char const*) const",93957346655120,93957346655188],["std::__1::collate<char>::do_hash(char const*, char const*) const",93957346655360,93957346655433],["std::__1::collate<wchar_t>::do_transform(wchar_t const*, wchar_t const*) const",93957346655520,93957346655711],["std::__1::num_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, bool&) const",93957346655792,93957346656519],["rand_r",139871563519904,139871563519979],["lrand48_r",139871563520656,139871563520678],["lcong48_r",139871563520944,139871563521005],["strfromd",139871563522000,139871563522587],["strtol",139871563523216,139871563523234],["strtoul",139871563523264,139871563523282],["__strtoul_l",139871563525808,139871563525818],["strtof",139871563525840,139871563525858],["parse_printf_format",139871563603920,139871563604233],["printf_size_info",139871563615248,139871563615276],["_IO_sprintf",139871563615856,139871563616049],["__vfscanf",139871563616464,139871563616471],["_IO_sscanf",139871563616896,139871563617200],["tmpnam",139871563618112,139871563618274],["getline",139871563619824,139871563619837],["putw",139871563619936,139871563619983],["rename",139871563620048,139871563620082],["renameat2",139871563620144,139871563620253],["ftrylockfile",139871563620368,139871563620483],["__isoc99_scanf",139871563620576,139871563620779],["__isoc99_fscanf",139871563620816,139871563620998],["__isoc99_sscanf",139871563621024,139871563621331],["_IO_wdefault_uflow",139871563755760,139871563755871],["open_wmemstream",139871563769216,139871563769448],["_IO_putc",139871563772704,139871563773036],["obstack_vprintf",139871563775312,139871563775319],["__fbufsize",139871563776912,139871563776953],["__fwritable",139871563777056,139871563777065],["__fsetlocking",139871563777248,139871563777282],["__libc_readline_unlocked",139871563780048,139871563780778],["ferror_unlocked",139871563780816,139871563780825],["fgetc_unlocked",139871563780880,139871563780917],["fflush_unlocked",139871563780976,139871563781065],["_IO_peekc_locked",139871563781120,139871563781365],["fwrite_unlocked",139871563781472,139871563781673],["fputs_unlocked",139871563781840,139871563781991],["_IO_file_close",139871563782352,139871563782360],["_IO_file_seek",139871563783536,139871563783544],["_IO_file_fopen",139871563788704,139871563789884],["_IO_do_write",139871563790064,139871563790102],["_IO_file_overflow",139871563790944,139871563791469],["_IO_link_in",139871563792512,139871563793221],["__overflow",139871563794032,139871563794144],["_IO_doallocbuf",139871563794944,139871563795127],["_IO_default_xsgetn",139871563795632,139871563795797],["_IO_default_finish",139871563796800,139871563796919],["_IO_adjust_column",139871563797200,139871563797247],["_flushlbf",139871563798992,139871563799747],["_IO_remove_marker",139871563799856,139871563799908],["_IO_marker_delta",139871563799936,139871563799983],["_IO_unsave_markers",139871563800112,139871563800198],["_IO_iter_begin",139871563800640,139871563800648],["_IO_iter_next",139871563800672,139871563800677],["_IO_list_lock",139871563800704,139871563800799],["_IO_list_resetlock",139871563800896,139871563800919],["_IO_str_overflow",139871563801024,139871563801423],["_IO_str_init_static",139871563802144,139871563802162],["_IO_str_seekoff",139871563802240,139871563802874],["pthread_attr_getschedpolicy",139871563802960,139871563802995],["pthread_attr_getscope",139871563803056,139871563803091],["pthread_condattr_destroy",139871563803152,139871563803187],["pthread_cond_broadcast",139871563803248,139871563803283],["calloc",139871563828816,139871563829737],["__default_morecore",139871563832240,139871563832267],["_obstack_begin",139871563837632,139871563837803],["__libc_scratch_buffer_grow_preserve",139871563838768,139871563838929],["__libc_alloc_buffer_allocate",139871563840048,139871563840123],["__strndup",139871563841136,139871563841201],["__ffs",139871563845840,139871563845855],["memmem",139871563850512,139871563851077],["argz_extract",139871563852112,139871563852178],["envz_add",139871563854016,139871563854291],["__strsep_2c",139871563867056,139871563867132],["__strpbrk_c2",139871563867584,139871563867639],["strerror_l",139871563868688,139871563868936],["wcscat",139871563948608,139871563948649],["wcsncpy",139871563949152,139871563949232],["wcsstr",139871563949632,139871563949830],["wcpncpy",139871563950192,139871563950286],["mbsinit",139871563951120,139871563951140],["mbsrtowcs",139871563952208,139871563952238],["wcschrnul",139871563954528,139871563954560],["wcstoul",139871563954624,139871563954642],["wcstof64x",139871563954720,139871563954738],["__wcstoul_l",139871563956976,139871563956986],["wcscoll",139871563986864,139871563986880],["__wcscoll_l",139871563987168,139871563990695],["__wcscasecmp_l",139871563997424,139871563997523],["__isoc99_fwscanf",139871564000480,139871564000662],["mbrtoc16",139871564001184,139871564001875],["c32rtomb",139871564002096,139871564002115],["__wcstof128_internal",139871564013008,139871564013024],["asctime_r",139871564021424,139871564021434],["clock",139871564021472,139871564021598],["ctime_r",139871564021632,139871564021702],["__gmtime_r",139871564021744,139871564021757],["localtime_r",139871564021792,139871564021808],["mktime",139871564023984,139871564024016],["adjtime",139871564024768,139871564025107],["getitimer",139871564034944,139871564034977],["dysize",139871564035040,139871564035108],["ftime",139871564035152,139871564035265],["getdate",139871564037136,139871564037196],["strptime_l",139871564049440,139871564049450],["wcsftime",139871564049472,139871564049488],["__wcsftime_l",139871564069360,139871564069428],["clock_getcpuclockid",139871564069488,139871564069541],["__clock_gettime",139871564069664,139871564069775],["clock_nanosleep",139871564069856,139871564070003],["ntp_gettimex",139871564072256,139871564072405],["closedir",139871564072976,139871564073017],["seekdir",139871564073200,139871564073363],["getdents64",139871564073392,139871564073444],["readdir",139871564073472,139871564073740],["scandir",139871564074288,139871564074329],["versionsort",139871564074368,139871564074387],["scandirat",139871564074592,139871564074633],["fgetgrent",139871564075280,139871564075796],["initgroups",139871564077472,139871564077725],["getgrent",139871564077872,139871564078058],["getgrnam",139871564078512,139871564078950],["setgrent",139871564079696,139871564079898],["quick_exit",139871564538816,139871564538839],["pthread_cond_signal",139871564539136,139871564539171],["malloc_get_state",139871564539344,139871564539361],["stime",139871564539616,139871564539686],["register_tm_clones",139871566579168,139871566579232],["__pthread_join",139871566590448,139871566590463],["pthread_setconcurrency",139871566591360,139871566591382],["pthread_attr_getguardsize",139871566592304,139871566592314],["__pthread_attr_setschedpolicy",139871566592352,139871566592378],["__pthread_attr_setscope",139871566592400,139871566592431],["__pthread_attr_setstackaddr",139871566592448,139871566592459],["__pthread_attr_setstacksize",139871566592576,139871566592599],["__pthread_mutex_clocklock_common",139871566598192,139871566600895],["__pthread_mutex_cond_lock",139871566604000,139871566604601],["pthread_mutexattr_setpshared",139871566604800,139871566604841],["__pthread_rwlock_destroy",139871566604976,139871566604979],["pthread_rwlock_clockrdlock",139871566606256,139871566606971],["pthread_rwlock_timedwrlock",139871566607936,139871566608957],["__pthread_rwlock_tryrdlock",139871566610112,139871566610278],["__GI___pthread_rwlock_unlock",139871566610384,139871566610838],["__condvar_cancel_waiting",139871566611440,139871566611765],["__pthread_cond_timedwait_2_0",139871566616256,139871566616389],["pthread_sigmask",139871566618144,139871566618372],["do_futex_wait",139871566624112,139871566624321],["__fcntl_alias",139871566626624,139871566626709],["msync",139871566628464,139871566628619],["__libc_sendmsg",139871566630400,139871566630557],["__res_state",139871566631808,139871566631820],["pthread_setaffinity_np@GLIBC_2.3.3",139871566632048,139871566632061],["pthread_mutexattr_setrobust",139871566632416,139871566632462],["pthread_mutexattr_getprotocol",139871566633232,139871566633245],["__init_sched_fifo_prio",139871566633552,139871566633593],["pthread_getname_np",139871566635776,139871566636082],["thrd_detach",139871566636832,139871566636910],["mtx_init",139871566637088,139871566637280],["mtx_unlock",139871566637520,139871566637598],["cnd_init",139871566637712,139871566637790],["cnd_wait",139871566637952,139871566638030],["tss_delete",139871566638112,139871566638117],["tss_set",139871566638144,139871566638222],["_dl_tunable_set_elision_skip_trylock_internal_abort",139871566638384,139871566638394],["_dl_rtld_di_serinfo",139871566937056,139871566937711],["_dl_mcount",139871566971024,139871566971616],["_dl_allocate_tls_init",139871566973568,139871566974142],["_dl_deallocate_tls",139871566974256,139871566974375],["_dl_find_dso_for_object",139871566976864,139871566977060],["_dl_exception_create_format",139871566989232,139871566990408],["__tunable_get_val",139871566994576,139871566994677],["__get_cpu_features",139871566996608,139871566996616],["calloc",139871567004512,139871567004568],["realloc",139871567005040,139871567005178],["_dl_signal_error",139871567005776,139871567005855],["_dl_catch_error",139871567006352,139871567006417],["v8::DelayedTasksPlatform::DelayedTaskRunner::IdleTasksEnabled()",93957335211488,93957335211503],["v8::DelayedTasksPlatform::CallDelayedOnWorkerThread(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, double)",93957335212096,93957335212233],["Cr_z_zcfree",93957335308896,93957335308909],["v8::Deserializer::~Deserializer()",93957335311296,93957335311370],["v8::(anonymous namespace)::ArrayBufferAllocatorBase::~ArrayBufferAllocatorBase()",93957335311536,93957335311592],["v8::(anonymous namespace)::ShellArrayBufferAllocator::AllocateUninitialized(unsigned long)",93957335311696,93957335311792],["v8::internal::FactoryBase<v8::internal::Factory>::NewBigInt(int, v8::internal::AllocationType)",93957336836512,93957336836668],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewFixedArray(int, v8::internal::AllocationType)",93957336838592,93957336838637],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewWeakFixedArray(int, v8::internal::AllocationType)",93957336839456,93957336839497],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewArrayBoilerplateDescription(v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957336840448,93957336840602],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewSharedFunctionInfoForLiteral(v8::internal::FunctionLiteral*, v8::internal::Handle<v8::internal::Script>, bool)",93957336841216,93957336841372],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewPreparseData(int, int)",93957336842256,93957336842477],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewUncompiledDataWithPreparseData(v8::internal::Handle<v8::internal::String>, int, int, v8::internal::Handle<v8::internal::PreparseData>)",93957336842496,93957336842512],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewCoverageInfo(v8::internal::ZoneVector<v8::internal::SourceRange> const&)",93957336842752,93957336842983],["v8::internal::WorkerThreadRuntimeCallStatsScope& v8::base::Optional<v8::internal::WorkerThreadRuntimeCallStatsScope>::emplace<v8::internal::WorkerThreadRuntimeCallStats*>(v8::internal::WorkerThreadRuntimeCallStats*&&)",93957336920864,93957336920929],["v8::internal::GCTracer::ContextDisposalRateInMilliseconds() const",93957336937680,93957336937901],["v8::internal::GCTracer::CurrentEmbedderAllocationThroughputInBytesPerMillisecond() const",93957336940624,93957336940856],["v8::internal::MemoryController<v8::internal::V8HeapTrait>::GrowingFactor(v8::internal::Heap*, unsigned long, double, double)",93957336941888,93957336942187],["v8::internal::WriteBarrier::MarkingSlow(v8::internal::Heap*, v8::internal::HeapObject, v8::internal::CompressedHeapObjectSlot, v8::internal::HeapObject)",93957336943280,93957336943357],["v8::internal::WriteBarrier::MarkingFromCode(unsigned long, unsigned long)",93957336943600,93957336943736],["v8::internal::Heap_GenerationalBarrierForCodeSlow(v8::internal::Code, v8::internal::RelocInfo*, v8::internal::HeapObject)",93957336944384,93957336944514],["v8::internal::Heap::SetBasicBlockProfilingData(v8::internal::Handle<v8::internal::ArrayList>)",93957336944768,93957336944784],["v8::internal::Heap::~Heap()",93957336945776,93957336947219],["v8::internal::Heap::HeapSizeFromPhysicalMemory(unsigned long)",93957336947264,93957336947430],["v8::internal::Heap::HasBeenSetUp() const",93957336947616,93957336947633],["v8::internal::Heap::CommittedOldGenerationMemory()",93957336947744,93957336947899],["v8::internal::Heap::CommittedPhysicalMemory()",93957336948144,93957336948313],["v8::internal::SpaceIterator::Next()",93957336948336,93957336948365],["v8::internal::Heap::Available()",93957336948400,93957336948599],["v8::internal::Heap::CanExpandOldGenerationBackground(unsigned long)",93957336948864,93957336948931],["v8::internal::IncrementalMarking::AdvanceOnAllocation()",93957337057136,93957337058029],["v8::internal::IncrementalMarking::PauseBlackAllocation()",93957337062272,93957337062415],["v8::internal::IncrementalMarking::EmbedderStep(double, double*)",93957337064672,93957337065556],["v8::internal::IncrementalMarking::MarkingComplete(v8::internal::IncrementalMarking::CompletionAction)",93957337066432,93957337066919],["v8::internal::IncrementalMarking::Step(double, v8::internal::IncrementalMarking::CompletionAction, v8::internal::StepOrigin)",93957337068112,93957337068952],["v8::internal::IncrementalMarking::ComputeStepSizeInBytes(v8::internal::StepOrigin)",93957337069232,93957337069465],["v8::internal::IncrementalMarkingRootMarkingVisitor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)",93957337069536,93957337069549],["void heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>::Update<v8::internal::IncrementalMarking::UpdateMarkingWorklistAfterScavenge()::$_2>(v8::internal::IncrementalMarking::UpdateMarkingWorklistAfterScavenge()::$_2)",93957337069808,93957337070243],["v8::internal::SemiSpace::InitializePage(v8::internal::MemoryChunk*)",93957337441696,93957337441837],["v8::internal::NewSpace::EnsureAllocation(int, v8::internal::AllocationAlignment)",93957337449120,93957337449291],["v8::internal::FieldStatsCollector::GetInobjectFieldStats(v8::internal::Map)",93957337450448,93957337451266],["v8::internal::ObjectStats::CheckpointObjectStats()",93957337469792,93957337470130],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualJSObjectDetails(v8::internal::JSObject)",93957337472432,93957337473537],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualMapDetails(v8::internal::Map)",93957337476064,93957337476995],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualContext(v8::internal::Context)",93957337478160,93957337478436],["v8::internal::ObjectStatsCollectorImpl::CollectGlobalStatistics()",93957337479536,93957337480041],["std::__1::basic_ostream<char, std::__1::char_traits<char> >& v8::internal::operator<< <unsigned long*>(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::PrintIteratorRange<unsigned long*> const&)",93957337481600,93957337481766],["v8::internal::FieldStatsCollector::~FieldStatsCollector()",93957337481856,93957337481938],["v8::internal::FieldStatsCollector::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957337481984,93957337481998],["v8::internal::Object v8::internal::VisitWeakList<v8::internal::Context>(v8::internal::Heap*, v8::internal::Object, v8::internal::WeakObjectRetainer*)",93957337482800,93957337483772],["v8::internal::WeakListVisitor<v8::internal::Context>::VisitPhantomObject(v8::internal::Heap*, v8::internal::Context)",93957337484672,93957337485111],["v8::internal::Object v8::internal::VisitWeakList<v8::internal::JSFinalizationRegistry>(v8::internal::Heap*, v8::internal::Object, v8::internal::WeakObjectRetainer*)",93957337485968,93957337486904],["v8::internal::Object v8::internal::VisitWeakList<v8::internal::Code>(v8::internal::Heap*, v8::internal::Object, v8::internal::WeakObjectRetainer*)",93957337487360,93957337488157],["v8::internal::PagedSpaceObjectIterator::AdvanceToNextPage()",93957337488432,93957337488484],["v8::internal::JavaScriptFrameIterator::JavaScriptFrameIterator(v8::internal::Isolate*)",93957337629056,93957337629101],["v8::internal::Stats_Runtime_LoadElementWithInterceptor(int, unsigned long*, v8::internal::Isolate*)",93957337701472,93957337702692],["v8::internal::Genesis::CreateNewGlobals(v8::Local<v8::ObjectTemplate>, v8::internal::Handle<v8::internal::JSGlobalProxy>)",93957337727792,93957337729401],["v8::internal::Genesis::InstallABunchOfRandomThings()",93957337803296,93957337808332],["v8::internal::V8::Initialize()",93957337817872,93957337817999],["v8::internal::interpreter::BytecodeArrayBuilder::BinaryOperation(v8::internal::Token::Value, v8::internal::interpreter::Register, int)",93957337820176,93957337823630],["v8::internal::interpreter::BytecodeArrayBuilder::LoadLiteral(v8::internal::AstRawString const*)",93957337833200,93957337833487],["v8::internal::interpreter::BytecodeArrayBuilder::LoadLookupSlot(v8::internal::AstRawString const*, v8::internal::TypeofMode)",93957337839552,93957337840022],["v8::internal::interpreter::BytecodeArrayBuilder::CollectTypeProfile(int)",93957337845328,93957337845592],["v8::internal::interpreter::BytecodeArrayBuilder::LoadClassFieldsInitializer(v8::internal::interpreter::Register, int)",93957337848144,93957337848587],["v8::internal::interpreter::BytecodeArrayBuilder::CreateRegExpLiteral(v8::internal::AstRawString const*, int, int)",93957337851136,93957337851466],["v8::internal::interpreter::BytecodeArrayBuilder::PushContext(v8::internal::interpreter::Register)",93957337853600,93957337853986],["v8::internal::interpreter::BytecodeArrayBuilder::Bind(v8::internal::interpreter::BytecodeJumpTable*, int)",93957337855744,93957337855812],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfNotNull(v8::internal::interpreter::BytecodeLabel*)",93957337857504,93957337857771],["v8::internal::interpreter::BytecodeArrayBuilder::SwitchOnSmiNoFeedback(v8::internal::interpreter::BytecodeJumpTable*)",93957337859328,93957337859741],["v8::internal::interpreter::BytecodeArrayBuilder::ThrowIfNotSuperConstructor(v8::internal::interpreter::Register)",93957337861376,93957337861695],["v8::internal::interpreter::BytecodeArrayBuilder::ForInNext(v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList, int)",93957337863376,93957337863959],["v8::internal::interpreter::BytecodeArrayBuilder::SuspendGenerator(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList, int)",93957337864976,93957337865533],["v8::internal::interpreter::BytecodeArrayBuilder::CallUndefinedReceiver(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList, int)",93957337868704,93957337870628],["v8::internal::interpreter::BytecodeArrayBuilder::Construct(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList, int)",93957337872240,93957337872800],["v8::internal::interpreter::BytecodeArrayBuilder::CallRuntime(v8::internal::Runtime::FunctionId)",93957337874208,93957337874223],["v8::internal::interpreter::BytecodeArrayBuilder::Delete(v8::internal::interpreter::Register, v8::internal::LanguageMode)",93957337875232,93957337875886],["v8::internal::interpreter::BytecodeArrayBuilder::AllocateDeferredConstantPoolEntry()",93957337876032,93957337876046],["v8::internal::interpreter::RegisterTransferWriter::EmitStar(v8::internal::interpreter::Register)",93957337876288,93957337876496],["v8::internal::Handle<v8::internal::Object> v8::internal::interpreter::BytecodeArrayIterator::GetConstantForIndexOperand<v8::internal::LocalIsolate>(int, v8::internal::LocalIsolate*) const",93957337877008,93957337877193],["v8::internal::interpreter::BytecodeArrayIterator::SetOffset(int)",93957337877488,93957337877575],["v8::internal::interpreter::BytecodeArrayIterator::GetFlagOperand(int) const",93957337877760,93957337877811],["v8::internal::interpreter::BytecodeArrayIterator::GetParameter(int) const",93957337878016,93957337878043],["v8::internal::interpreter::BytecodeArrayIterator::GetIntrinsicIdOperand(int) const",93957337878368,93957337878452],["v8::internal::interpreter::BytecodeArrayIterator::PrintTo(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957337879024,93957337879063],["v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator!=(v8::internal::interpreter::JumpTableTargetOffsets::iterator const&)",93957337879680,93957337879695],["v8::internal::interpreter::BytecodeArrayRandomIterator::Initialize()",93957337880352,93957337881339],["v8::internal::Handle<v8::internal::BytecodeArray> v8::internal::interpreter::BytecodeArrayWriter::ToBytecodeArray<v8::internal::Isolate>(v8::internal::Isolate*, int, int, v8::internal::Handle<v8::internal::ByteArray>)",93957337881440,93957337881641],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::interpreter::BytecodeArrayWriter::ToSourcePositionTable<v8::internal::Isolate>(v8::internal::Isolate*)",93957337881856,93957337881888],["v8::internal::interpreter::BytecodeArrayWriter::BytecodeArrayWriter(v8::internal::Zone*, v8::internal::interpreter::ConstantArrayBuilder*, v8::internal::SourcePositionTableBuilder::RecordingMode)",93957337881920,93957337882462],["v8::internal::interpreter::BytecodeArrayWriter::EmitBytecode(v8::internal::interpreter::BytecodeNode const*)",93957337882800,93957337887982],["v8::internal::interpreter::BytecodeArrayWriter::EmitJump(v8::internal::interpreter::BytecodeNode*, v8::internal::interpreter::BytecodeLabel*)",93957337888352,93957337888563],["v8::internal::interpreter::BytecodeArrayWriter::EmitJumpLoop(v8::internal::interpreter::BytecodeNode*, v8::internal::interpreter::BytecodeLoopHeader*)",93957337888944,93957337889150],["v8::internal::interpreter::BytecodeArrayWriter::BindLabel(v8::internal::interpreter::BytecodeLabel*)",93957337889536,93957337889589],["v8::internal::interpreter::BytecodeArrayWriter::BindLoopHeader(v8::internal::interpreter::BytecodeLoopHeader*)",93957337889760,93957337889791],["v8::internal::interpreter::BytecodeArrayWriter::BindHandlerTarget(v8::internal::interpreter::HandlerTableBuilder*, int)",93957337889872,93957337889912],["v8::internal::interpreter::BytecodeArrayWriter::BindTryRegionEnd(v8::internal::interpreter::HandlerTableBuilder*, int)",93957337889968,93957337890001],["v8::internal::interpreter::BytecodeArrayWriter::PatchJumpWith8BitOperand(unsigned long, int)",93957337890064,93957337890304],["v8::internal::interpreter::BytecodeArrayWriter::PatchJumpWith32BitOperand(unsigned long, int)",93957337890560,93957337890726],["v8::internal::interpreter::BytecodeDecoder::DecodeRegisterOperand(unsigned long, v8::internal::interpreter::OperandType, v8::internal::interpreter::OperandScale)",93957337891280,93957337891379],["v8::internal::interpreter::BytecodeDecoder::DecodeUnsignedOperand(unsigned long, v8::internal::interpreter::OperandType, v8::internal::interpreter::OperandScale)",93957337891472,93957337891550],["v8::internal::interpreter::CreateArrayLiteralFlags::Encode(bool, int)",93957337894192,93957337894206],["v8::internal::interpreter::CreateClosureFlags::Encode(bool, bool, bool)",93957337894224,93957337894251],["v8::internal::interpreter::StoreLookupSlotFlags::Encode(v8::internal::LanguageMode, v8::internal::LookupHoistingMode)",93957337894384,93957337894400],["void v8::internal::interpreter::BytecodeGenerator::AllocateDeferredConstants<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957337894800,93957337895494],["void v8::internal::interpreter::BytecodeGenerator::AllocateDeferredConstants<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::Script>)",93957337895904,93957337896524],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::interpreter::BytecodeGenerator::FinalizeSourcePositionTable<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957337896624,93957337896705],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::interpreter::BytecodeGenerator::TopLevelDeclarationsBuilder::AllocateDeclarations<v8::internal::LocalIsolate>(v8::internal::UnoptimizedCompilationInfo*, v8::internal::interpreter::BytecodeGenerator*, v8::internal::Handle<v8::internal::Script>, v8::internal::LocalIsolate*)",93957337898176,93957337899624],["v8::internal::interpreter::BytecodeGenerator::GenerateBytecode(unsigned long)",93957337900336,93957337901031],["v8::internal::interpreter::BytecodeGenerator::BuildNewLocalActivationContext()",93957337901248,93957337901601],["v8::internal::interpreter::BytecodeGenerator::GenerateBytecodeBody()",93957337901872,93957337903160],["v8::internal::interpreter::BytecodeGenerator::VisitModuleDeclarations(v8::base::ThreadedListBase<v8::internal::Declaration, v8::base::EmptyBase, v8::base::ThreadedListTraits<v8::internal::Declaration> >*)",93957337903568,93957337903933],["v8::internal::interpreter::BytecodeGenerator::BuildPrivateBrandInitialization(v8::internal::interpreter::Register)",93957337904272,93957337904635],["v8::internal::interpreter::BytecodeGenerator::BuildReturn(int)",93957337904976,93957337905246],["v8::internal::interpreter::BytecodeGenerator::VisitBlockDeclarationsAndStatements(v8::internal::Block*)",93957337905744,93957337906292],["v8::internal::interpreter::BytecodeGenerator::VisitFunctionDeclaration(v8::internal::FunctionDeclaration*)",93957337906752,93957337907095],["v8::internal::interpreter::BytecodeGenerator::BuildVariableAssignment(v8::internal::Variable*, v8::internal::Token::Value, v8::internal::HoleCheckMode, v8::internal::LookupHoistingMode)",93957337907744,93957337909135],["v8::internal::interpreter::BytecodeGenerator::AddToEagerLiteralsIfEager(v8::internal::FunctionLiteral*)",93957337909360,93957337909649],["v8::internal::interpreter::BytecodeGenerator::VisitExpressionStatement(v8::internal::ExpressionStatement*)",93957337909728,93957337909941],["v8::internal::RegExpParser::ParseNamedBackReference(v8::internal::RegExpBuilder*, v8::internal::RegExpParser::RegExpParserState*)",93957339896240,93957339896885],["v8::internal::RegExpStackScope::RegExpStackScope(v8::internal::Isolate*)",93957339913712,93957339913765],["v8::internal::RegExp::ThrowRegExpException(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::internal::RegExpError)",93957339917584,93957339917717],["v8::internal::RegExp::Exec(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::RegExp::ExecQuirks)",93957339919968,93957339920065],["v8::internal::RegExpImpl::IrregexpExecRaw(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, int*, int)",93957339924784,93957339925648],["v8::internal::RegExpGlobalCache::AdvanceZeroLength(int)",93957339926928,93957339927157],["v8::internal::RegExpResultsCache::Enter(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::RegExpResultsCache::ResultsCacheType)",93957339927792,93957339929588],["v8::internal::Stats_Runtime_TransitionElementsKind(int, unsigned long*, v8::internal::Isolate*)",93957339930032,93957339930715],["v8::internal::Runtime_NewArray(int, unsigned long*, v8::internal::Isolate*)",93957339931600,93957339932467],["v8::internal::Runtime_NormalizeElements(int, unsigned long*, v8::internal::Isolate*)",93957339933760,93957339934062],["v8::internal::Runtime_GrowArrayElements(int, unsigned long*, v8::internal::Isolate*)",93957339934768,93957339935196],["v8::internal::Runtime_ArrayIsArray(int, unsigned long*, v8::internal::Isolate*)",93957339936016,93957339936261],["v8::internal::Runtime_IsArray(int, unsigned long*, v8::internal::Isolate*)",93957339936928,93957339937029],["v8::internal::Runtime_ArraySpeciesConstructor(int, unsigned long*, v8::internal::Isolate*)",93957339937616,93957339937760],["v8::internal::Runtime_ArrayIncludes_Slow(int, unsigned long*, v8::internal::Isolate*)",93957339938304,93957339940219],["v8::internal::Runtime_ArrayIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957339942512,93957339944396],["v8::internal::Runtime_DebugBreakOnBytecode(int, unsigned long*, v8::internal::Isolate*)",93957340013728,93957340014443],["v8::internal::Runtime_DebugBreakAtEntry(int, unsigned long*, v8::internal::Isolate*)",93957340015632,93957340015973],["v8::internal::Runtime_HandleDebuggerStatement(int, unsigned long*, v8::internal::Isolate*)",93957340016768,93957340016845],["v8::internal::Runtime_ScheduleBreak(int, unsigned long*, v8::internal::Isolate*)",93957340017360,93957340017427],["v8::internal::Runtime::GetInternalProperties(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957340017888,93957340024238],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::NewStringFromStaticChars<16ul>(char const (&) [16ul], v8::internal::AllocationType)",93957340024304,93957340024365],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::NewStringFromStaticChars<19ul>(char const (&) [19ul], v8::internal::AllocationType)",93957340024432,93957340024493],["v8::internal::Handle<v8::internal::Object> v8::internal::FactoryBase<v8::internal::Factory>::NewNumberFromSize<(v8::internal::AllocationType)0>(unsigned long)",93957340024560,93957340024724],["v8::internal::Stats_Runtime_GetGeneratorScopeCount(int, unsigned long*, v8::internal::Isolate*)",93957340025104,93957340025909],["v8::internal::Stats_Runtime_GetGeneratorScopeDetails(int, unsigned long*, v8::internal::Isolate*)",93957340026656,93957340027834],["v8::internal::Stats_Runtime_SetGeneratorScopeVariableValue(int, unsigned long*, v8::internal::Isolate*)",93957340028624,93957340029850],["v8::internal::Stats_Runtime_GetBreakLocations(int, unsigned long*, v8::internal::Isolate*)",93957340030208,93957340030939],["v8::internal::Stats_Runtime_IsBreakOnException(int, unsigned long*, v8::internal::Isolate*)",93957340031376,93957340032194],["v8::internal::Stats_Runtime_ClearStepping(int, unsigned long*, v8::internal::Isolate*)",93957340032384,93957340032918],["v8::internal::Stats_Runtime_DebugGetLoadedScriptIds(int, unsigned long*, v8::internal::Isolate*)",93957340033360,93957340034197],["v8::internal::Stats_Runtime_FunctionGetInferredName(int, unsigned long*, v8::internal::Isolate*)",93957340034464,93957340035123],["v8::internal::Runtime_AllocateInOldGeneration(int, unsigned long*, v8::internal::Isolate*)",93957340108160,93957340108484],["v8::internal::Runtime_AllocateSeqTwoByteString(int, unsigned long*, v8::internal::Isolate*)",93957340110752,93957340110953],["v8::internal::Runtime_ThrowConstructorReturnedNonObject(int, unsigned long*, v8::internal::Isolate*)",93957340115040,93957340115195],["v8::internal::Runtime_GetTemplateObject(int, unsigned long*, v8::internal::Isolate*)",93957340124208,93957340124649],["v8::internal::Runtime_CreateObjectLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340132416,93957340133969],["v8::internal::(anonymous namespace)::JSObjectWalkVisitor<v8::internal::AllocationSiteUsageContext>::StructureWalk(v8::internal::Handle<v8::internal::JSObject>)",93957340151664,93957340154353],["v8::internal::Runtime_MaxSmi(int, unsigned long*, v8::internal::Isolate*)",93957340162800,93957340162830],["v8::internal::Stats_Runtime_ObjectGetOwnPropertyNamesTryFast(int, unsigned long*, v8::internal::Isolate*)",93957340169408,93957340170188],["v8::internal::Runtime_InternalSetPrototype(int, unsigned long*, v8::internal::Isolate*)",93957340176688,93957340176908],["v8::internal::Runtime_ObjectEntries(int, unsigned long*, v8::internal::Isolate*)",93957340180416,93957340180672],["v8::internal::Runtime_JSReceiverPreventExtensionsDontThrow(int, unsigned long*, v8::internal::Isolate*)",93957340183920,93957340184158],["v8::internal::Runtime_GetProperty(int, unsigned long*, v8::internal::Isolate*)",93957340187728,93957340189151],["v8::internal::Runtime_DeleteProperty(int, unsigned long*, v8::internal::Isolate*)",93957340193568,93957340193885],["v8::internal::Runtime_ToFastProperties(int, unsigned long*, v8::internal::Isolate*)",93957340197648,93957340197876],["v8::internal::Runtime_CompleteInobjectSlackTrackingForMap(int, unsigned long*, v8::internal::Isolate*)",93957340201104,93957340201322],["v8::internal::Runtime_CollectTypeProfile(int, unsigned long*, v8::internal::Isolate*)",93957340207136,93957340207671],["v8::internal::Runtime_GetFunctionName(int, unsigned long*, v8::internal::Isolate*)",93957340209952,93957340210146],["v8::internal::Runtime_SetDataProperties(int, unsigned long*, v8::internal::Isolate*)",93957340212816,93957340213068],["v8::internal::Runtime_CopyDataPropertiesWithExcludedProperties(int, unsigned long*, v8::internal::Isolate*)",93957340214640,93957340215569],["v8::internal::Runtime_ToObject(int, unsigned long*, v8::internal::Isolate*)",93957340218992,93957340219029],["v8::internal::Runtime_ToNumeric(int, unsigned long*, v8::internal::Isolate*)",93957340220192,93957340220399],["v8::internal::Runtime_ToString(int, unsigned long*, v8::internal::Isolate*)",93957340221856,93957340222041],["v8::internal::Runtime_HasInPrototypeChain(int, unsigned long*, v8::internal::Isolate*)",93957340223392,93957340223633],["v8::internal::Runtime_CreateDataProperty(int, unsigned long*, v8::internal::Isolate*)",93957340225024,93957340225370],["v8::internal::Runtime_GetOwnPropertyDescriptor(int, unsigned long*, v8::internal::Isolate*)",93957340227136,93957340227492],["v8::internal::Runtime_LoadPrivateGetter(int, unsigned long*, v8::internal::Isolate*)",93957340228960,93957340229088],["v8::internal::Runtime_AddPrivateBrand(int, unsigned long*, v8::internal::Isolate*)",93957340231040,93957340231695],["v8::internal::Runtime_SwissTableAllocate(int, unsigned long*, v8::internal::Isolate*)",93957340234400,93957340234564],["v8::internal::Runtime_SwissTableFindEntry(int, unsigned long*, v8::internal::Isolate*)",93957340236144,93957340236586],["v8::internal::Runtime_SwissTableDelete(int, unsigned long*, v8::internal::Isolate*)",93957340238800,93957340239027],["v8::internal::Runtime_SwissTableElementsCount(int, unsigned long*, v8::internal::Isolate*)",93957340240640,93957340240824],["v8::internal::Runtime_SwissTableValueAt(int, unsigned long*, v8::internal::Isolate*)",93957340242288,93957340242469],["v8::internal::Stats_Runtime_SwissTableDetailsAt(int, unsigned long*, v8::internal::Isolate*)",93957340243312,93957340243949],["v8::internal::InternalIndex v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::FindEntry<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>)",93957340244112,93957340244276],["v8::internal::Stats_Runtime_Add(int, unsigned long*, v8::internal::Isolate*)",93957340244448,93957340244990],["v8::internal::Stats_Runtime_Equal(int, unsigned long*, v8::internal::Isolate*)",93957340245184,93957340245752],["v8::internal::Stats_Runtime_NotEqual(int, unsigned long*, v8::internal::Isolate*)",93957340245952,93957340246520],["v8::internal::Stats_Runtime_StrictEqual(int, unsigned long*, v8::internal::Isolate*)",93957340246608,93957340247086],["v8::internal::Stats_Runtime_StrictNotEqual(int, unsigned long*, v8::internal::Isolate*)",93957340247168,93957340247644],["v8::internal::Stats_Runtime_ReferenceEqual(int, unsigned long*, v8::internal::Isolate*)",93957340247696,93957340248179],["v8::internal::Stats_Runtime_LessThan(int, unsigned long*, v8::internal::Isolate*)",93957340248384,93957340248957],["v8::internal::Stats_Runtime_GreaterThan(int, unsigned long*, v8::internal::Isolate*)",93957340249168,93957340249765],["v8::internal::Stats_Runtime_LessThanOrEqual(int, unsigned long*, v8::internal::Isolate*)",93957340249984,93957340250574],["v8::internal::Stats_Runtime_GreaterThanOrEqual(int, unsigned long*, v8::internal::Isolate*)",93957340250784,93957340251379],["v8::internal::Stats_Runtime_PromiseRejectEventFromStack(int, unsigned long*, v8::internal::Isolate*)",93957340251728,93957340252417],["v8::internal::Stats_Runtime_PromiseRejectAfterResolved(int, unsigned long*, v8::internal::Isolate*)",93957340252640,93957340253244],["v8::internal::Stats_Runtime_PromiseResolveAfterResolved(int, unsigned long*, v8::internal::Isolate*)",93957340253456,93957340254060],["v8::internal::Stats_Runtime_PromiseRevokeReject(int, unsigned long*, v8::internal::Isolate*)",93957340254304,93957340254938],["v8::internal::Stats_Runtime_EnqueueMicrotask(int, unsigned long*, v8::internal::Isolate*)",93957340255328,93957340256070],["v8::internal::Stats_Runtime_PerformMicrotaskCheckpoint(int, unsigned long*, v8::internal::Isolate*)",93957340256224,93957340256727],["v8::internal::Stats_Runtime_RunMicrotaskCallback(int, unsigned long*, v8::internal::Isolate*)",93957340256960,93957340257558],["v8::internal::Stats_Runtime_PromiseStatus(int, unsigned long*, v8::internal::Isolate*)",93957340257792,93957340258389],["v8::internal::Stats_Runtime_PromiseMarkAsHandled(int, unsigned long*, v8::internal::Isolate*)",93957340258512,93957340259040],["v8::internal::Stats_Runtime_PromiseHookInit(int, unsigned long*, v8::internal::Isolate*)",93957340259264,93957340259865],["v8::internal::Stats_Runtime_AwaitPromisesInit(int, unsigned long*, v8::internal::Isolate*)",93957340260288,93957340261108],["v8::internal::Stats_Runtime_AwaitPromisesInitOld(int, unsigned long*, v8::internal::Isolate*)",93957340261632,93957340262500],["v8::internal::Stats_Runtime_PromiseHookBefore(int, unsigned long*, v8::internal::Isolate*)",93957340262784,93957340263438],["v8::internal::Stats_Runtime_PromiseHookAfter(int, unsigned long*, v8::internal::Isolate*)",93957340263712,93957340264362],["v8::internal::Stats_Runtime_RejectPromise(int, unsigned long*, v8::internal::Isolate*)",93957340264672,93957340265347],["v8::internal::Stats_Runtime_ResolvePromise(int, unsigned long*, v8::internal::Isolate*)",93957340265584,93957340266190],["v8::internal::Stats_Runtime_ConstructAggregateErrorHelper(int, unsigned long*, v8::internal::Isolate*)",93957340266416,93957340267030],["v8::internal::Stats_Runtime_ConstructInternalAggregateErrorHelper(int, unsigned long*, v8::internal::Isolate*)",93957340267552,93957340268425],["v8::internal::Runtime_IsJSProxy(int, unsigned long*, v8::internal::Isolate*)",93957340268736,93957340268837],["v8::internal::Runtime_JSProxyGetHandler(int, unsigned long*, v8::internal::Isolate*)",93957340269424,93957340269516],["v8::internal::SlotAccessorForHeapObject::Write(v8::internal::HeapObject, v8::internal::HeapObjectReferenceType, int)",93957340535024,93957340535126],["int v8::internal::Deserializer::ReadRepeatedObject<v8::internal::SlotAccessorForHandle>(v8::internal::SlotAccessorForHandle, int)",93957340535328,93957340535453],["v8::internal::(anonymous namespace)::NoExternalReferencesCallback()",93957340535520,93957340535538],["v8::internal::SlotAccessorForHeapObject::Write(v8::internal::MaybeObject, int)",93957340535856,93957340535946],["int v8::internal::Deserializer::ReadRepeatedObject<v8::internal::SlotAccessorForHeapObject>(v8::internal::SlotAccessorForHeapObject, int)",93957340536064,93957340536291],["int v8::internal::Deserializer::ReadRepeatedObject<v8::internal::SlotAccessorForRootSlots>(v8::internal::SlotAccessorForRootSlots, int)",93957340536480,93957340536728],["v8::internal::InstructionStream::TryGetAddressForHashing(v8::internal::Isolate*, unsigned long, unsigned int*)",93957340536896,93957340537066],["v8::internal::InstructionStream::CreateOffHeapInstructionStream(v8::internal::Isolate*, unsigned char**, unsigned int*, unsigned char**, unsigned int*)",93957340537520,93957340537996],["v8::internal::SerializerDeserializer::RestoreExternalReferenceRedirector(v8::internal::Isolate*, v8::internal::Handle<v8::internal::CallHandlerInfo>)",93957340544272,93957340544330],["v8::internal::Serializer::SerializeObject(v8::internal::Handle<v8::internal::HeapObject>)",93957340545664,93957340545884],["v8::internal::Serializer::ResolvePendingObject(v8::internal::Handle<v8::internal::HeapObject>)",93957340547456,93957340547711],["v8::internal::Serializer::ObjectSerializer::SerializeJSArrayBuffer()",93957340551008,93957340551256],["v8::internal::Serializer::ObjectSerializer::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957340554688,93957340556646],["v8::internal::Serializer::HotObjectsList::~HotObjectsList()",93957340557568,93957340557588],["v8::internal::SnapshotCompression::Compress(v8::internal::SnapshotData const*)",93957340560384,93957340560644],["v8::internal::SnapshotByteSink::PutRaw(unsigned char const*, int, char const*)",93957340561648,93957340561674],["v8::internal::(anonymous namespace)::SnapshotImpl::ExtractNumContexts(v8::StartupData const*)",93957340563680,93957340563718],["v8::internal::Snapshot::SerializeDeserializeAndVerifyForTesting(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>)",93957340566928,93957340567399],["void std::__1::vector<v8::internal::SnapshotData, std::__1::allocator<v8::internal::SnapshotData> >::__push_back_slow_path<v8::internal::SnapshotData>(v8::internal::SnapshotData&&)",93957340571456,93957340571853],["v8::internal::StartupSerializer::~StartupSerializer()",93957340572720,93957340573014],["v8::internal::TorqueGeneratedUncompiledData<v8::internal::UncompiledData, v8::internal::HeapObject>::set_inferred_name(v8::internal::String, v8::internal::WriteBarrierMode)",93957340573856,93957340573980],["v8::internal::StartupSerializer::SerializeUsingStartupObjectCache(v8::internal::SnapshotByteSink*, v8::internal::Handle<v8::internal::HeapObject>)",93957340574672,93957340574735],["v8::internal::SerializedHandleChecker::~SerializedHandleChecker()",93957340575360,93957340575439],["v8::internal::IsIdentifierStartSlow(unsigned int)",93957340575712,93957340575783],["v8::internal::IsWhiteSpaceSlow(unsigned int)",93957340575888,93957340575950],["void v8::internal::StringBuilderConcatHelper<unsigned short>(v8::internal::String, unsigned short*, v8::internal::FixedArray, int)",93957340576144,93957340576336],["v8::internal::FixedArrayBuilder::FixedArrayBuilder(v8::internal::Handle<v8::internal::FixedArray>)",93957340576608,93957340576628],["v8::internal::FixedArrayBuilder::Add(v8::internal::Object)",93957340576736,93957340576889],["v8::internal::FixedArrayBuilder::ToJSArray(v8::internal::Handle<v8::internal::JSArray>)",93957340576928,93957340576972],["v8::internal::ReplacementStringBuilder::EnsureCapacity(int)",93957340577072,93957340577180],["v8::internal::ReplacementStringBuilder::AddElement(v8::internal::Handle<v8::internal::Object>)",93957340577296,93957340577548],["v8::internal::IncrementalStringBuilder::IncrementalStringBuilder(v8::internal::Isolate*)",93957340578064,93957340578218],["v8::internal::IncrementalStringBuilder::Extend()",93957340578256,93957340578426],["v8::internal::IncrementalStringBuilder::AppendString(v8::internal::Handle<v8::internal::String>)",93957340578624,93957340578963],["int v8::internal::FastAsciiConvert<true>(char*, char const*, int, bool*)",93957340579344,93957340579708],["v8::internal::FixedStringAllocator::allocate(unsigned int)",93957340579808,93957340579844],["v8::internal::StringStream::Put(char)",93957340579872,93957340580066],["v8::internal::StringStream::PrintObject(v8::internal::Object)",93957340581952,93957340582446],["v8::internal::StringStream::Log(v8::internal::Isolate*)",93957340582592,93957340582637],["v8_inspector::V8Debugger::collectionsEntries(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957342541840,93957342542442],["v8_inspector::V8Debugger::externalAsyncTaskFinished(v8_inspector::V8StackTraceId const&)",93957342547376,93957342547562],["v8_inspector::V8Debugger::unmuteScriptParsedEvents()",93957342548064,93957342548074],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::handleProgramBreak(v8::Local<v8::Context>, v8::Local<v8::Value>, std::__1::vector<int, std::__1::allocator<int> > const&, v8::debug::ExceptionType, bool)::$_3, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342548416,93957342548533],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::ScriptCompiled(v8::Local<v8::debug::Script>, bool, bool)::$_6, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342548640,93957342548719],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::ShouldBeSkipped(v8::Local<v8::debug::Script>, int, int)::$_8, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342548784,93957342548843],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, std::__1::weak_ptr<v8_inspector::AsyncStackTrace> >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, std::__1::weak_ptr<v8_inspector::AsyncStackTrace> >, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::weak_ptr<v8_inspector::AsyncStackTrace> >, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::weak_ptr<v8_inspector::AsyncStackTrace> >, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, std::__1::weak_ptr<v8_inspector::AsyncStackTrace> > > >::__emplace_unique_key_args<unsigned long, std::__1::piecewise_construct_t const&, std::__1::tuple<unsigned long const&>, std::__1::tuple<> >(unsigned long const&, std::__1::piecewise_construct_t const&, std::__1::tuple<unsigned long const&>&&, std::__1::tuple<>&&)",93957342549744,93957342550662],["void std::__1::vector<v8_inspector::V8StackTraceId, std::__1::allocator<v8_inspector::V8StackTraceId> >::__emplace_back_slow_path<>()",93957342551024,93957342551283],["v8_crdtp::cbor::ParseCBOR(v8_crdtp::span<unsigned char>, v8_crdtp::ParserHandler*)",93957342750832,93957342750984],["v8_crdtp::DispatchResponse::ServerError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957342755200,93957342755237],["v8_crdtp::DomainDispatcher::Callback::Callback(std::__1::unique_ptr<v8_crdtp::DomainDispatcher::WeakPtr, std::__1::default_delete<v8_crdtp::DomainDispatcher::WeakPtr> >, int, v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char>)",93957342757664,93957342757793],["v8_crdtp::UberDispatcher::DispatchResult::Run()",93957342759200,93957342759279],["_ZNSt3__16vectorINS_4pairIN8v8_crdtp4spanIhEES4_EENS_9allocatorIS5_EEE6insertINS_11__wrap_iterIPKS5_EEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS5_NS_15iterator_traitsISF_E9referenceEEE5valueENSA_IPS5_EEE4typeESD_SF_SF_",93957342761376,93957342762244],["v8_crdtp::(anonymous namespace)::ProtocolError::~ProtocolError()",93957342763488,93957342763559],["v8_crdtp::(anonymous namespace)::Notification::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342763872,93957342764083],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8_crdtp::UberDispatcher::Dispatch(v8_crdtp::Dispatchable const&) const::$_0, void ()> >(void const*)",93957342764240,93957342764377],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8_crdtp::UberDispatcher::Dispatch(v8_crdtp::Dispatchable const&) const::$_1, void ()> >(void const*)",93957342765136,93957342765216],["void std::__1::__buffered_inplace_merge<v8_crdtp::FirstLessThan<v8_crdtp::span<unsigned char> >&, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*> >(std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*>, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*>, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*>, v8_crdtp::FirstLessThan<v8_crdtp::span<unsigned char> >&, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >*> >::value_type*)",93957342766416,93957342767008],["void std::__1::__inplace_merge<v8_crdtp::FirstLessThan<std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >&, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*> >(std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*>, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*>, std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*>, v8_crdtp::FirstLessThan<std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >&, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >*> >::value_type*, long)",93957342767680,93957342768969],["v8_crdtp::ErrorSupport::Errors() const",93957342769856,93957342769887],["v8_crdtp::json::ConvertJSONToCBOR(v8_crdtp::span<unsigned char>, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342770048,93957342770208],["void std::__1::stack<v8_crdtp::json::(anonymous namespace)::State, std::__1::deque<v8_crdtp::json::(anonymous namespace)::State, std::__1::allocator<v8_crdtp::json::(anonymous namespace)::State> > >::emplace<v8_crdtp::json::(anonymous namespace)::Container>(v8_crdtp::json::(anonymous namespace)::Container&&)",93957342770384,93957342773593],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::~JSONEncoder()",93957342773632,93957342773674],["v8_crdtp::json::(anonymous namespace)::JSONEncoder<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > >::HandleMapEnd()",93957342773808,93957342773928],["v8::internal::compiler::InstructionSelector::SwapShuffleInputs(v8::internal::compiler::Node*)",93957342966272,93957342966547],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::FlagsCondition const&)",93957342989072,93957342989550],["v8::internal::compiler::InstructionSequence::InstructionSequence(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::ZoneVector<v8::internal::compiler::InstructionBlock*>*)",93957342999408,93957342999692],["v8::internal::compiler::InstructionSequence::AddDeoptimizationEntry(v8::internal::compiler::FrameStateDescriptor*, v8::internal::DeoptimizeKind, v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&)",93957343000704,93957343001147],["v8::internal::compiler::FrameStateDescriptor::GetHeight() const",93957343001984,93957343002047],["v8::internal::compiler::FrameStateDescriptor::GetJSFrameCount() const",93957343002256,93957343002317],["v8::internal::compiler::JumpThreading::ComputeForwarding(v8::internal::Zone*, v8::internal::ZoneVector<v8::internal::compiler::RpoNumber>*, v8::internal::compiler::InstructionSequence*, bool)",93957343003968,93957343006249],["v8::internal::compiler::VirtualRegisterData::EnsureSpillRange(v8::internal::compiler::MidTierRegisterAllocationData*)",93957343009248,93957343009762],["v8::internal::compiler::VirtualRegisterData::EmitGapMoveToSpillSlot(v8::internal::compiler::InstructionOperand, int, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343010752,93957343011162],["v8::internal::compiler::RegisterState::Register::AddDeferredBlockSpill(int, bool, v8::internal::Zone*)",93957343011584,93957343012355],["v8::internal::compiler::RegisterState::Register::Spill(v8::internal::compiler::AllocatedOperand, v8::internal::compiler::InstructionBlock const*, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343012816,93957343013393],["v8::internal::compiler::RegisterState::MoveToSpillSlotOnDeferred(v8::internal::compiler::RegisterIndex, int, int, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343013664,93957343013895],["v8::internal::compiler::RegisterState::Clone()",93957343014176,93957343014744],["v8::internal::compiler::SinglePassRegisterAllocator::CloneStateFrom(v8::internal::compiler::RpoNumber)",93957343015504,93957343015886],["v8::internal::compiler::SinglePassRegisterAllocator::EndBlock(v8::internal::compiler::InstructionBlock const*)",93957343017536,93957343017878],["v8::internal::compiler::SinglePassRegisterAllocator::AllocatePendingUse(v8::internal::compiler::RegisterIndex, v8::internal::compiler::VirtualRegisterData&, v8::internal::compiler::InstructionOperand*, bool, int)",93957343018432,93957343018578],["v8::internal::compiler::LinearScanAllocator::AllocateRegisters()::$_4::operator()(v8::internal::compiler::RpoNumber, v8::internal::ZoneUnorderedSet<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals>*) const",93957343144720,93957343145025],["v8::internal::compiler::BranchElimination::ReduceMerge(v8::internal::compiler::Node*)",93957343183984,93957343184316],["v8::internal::compiler::BytecodeAnalysis::GetLoopInfoFor(int) const",93957343201648,93957343201720],["v8::internal::compiler::BytecodeGraphBuilder::Environment::Checkpoint(v8::internal::BytecodeOffset, v8::internal::compiler::OutputFrameStateCombine, v8::internal::compiler::BytecodeLivenessState const*)",93957343209952,93957343210633],["v8::internal::compiler::BytecodeGraphBuilder::PrepareFrameStateForOSREntryStackCheck(v8::internal::compiler::Node*)",93957343214704,93957343214811],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaUndefined()",93957343223776,93957343223845],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaGlobal()",93957343225120,93957343225681],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaCurrentContextSlot()",93957343226784,93957343226915],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaNamedPropertyNoFeedback()",93957343228256,93957343228674],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaModuleVariable()",93957343229984,93957343230194],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaDataPropertyInLiteral()",93957343232144,93957343232823],["v8::internal::compiler::BytecodeGraphBuilder::VisitMul()",93957343233488,93957343233588],["v8::internal::compiler::BytecodeGraphBuilder::VisitBitwiseOr()",93957343233936,93957343234036],["v8::internal::compiler::BytecodeGraphBuilder::VisitShiftRight()",93957343234384,93957343234484],["v8::internal::compiler::BytecodeGraphBuilder::VisitMulSmi()",93957343234832,93957343234932],["v8::internal::compiler::BytecodeGraphBuilder::VisitBitwiseOrSmi()",93957343235280,93957343235380],["v8::internal::compiler::BytecodeGraphBuilder::VisitShiftLeftSmi()",93957343235616,93957343235716],["v8::internal::compiler::BytecodeGraphBuilder::VisitShiftRightLogicalSmi()",93957343235840,93957343235940],["v8::internal::compiler::BytecodeGraphBuilder::VisitDec()",93957343236064,93957343236161],["v8::internal::compiler::BytecodeGraphBuilder::VisitBitwiseNot()",93957343236288,93957343236385],["v8::internal::compiler::BytecodeGraphBuilder::VisitLogicalNot()",93957343236592,93957343236737],["v8::internal::compiler::BytecodeGraphBuilder::VisitGetSuperConstructor()",93957343236896,93957343237049],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallProperty()",93957343237376,93957343237696],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallProperty1()",93957343237856,93957343238055],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallUndefinedReceiver()",93957343238320,93957343238631],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallUndefinedReceiver1()",93957343238784,93957343238959],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallNoFeedback()",93957343239184,93957343239732],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallRuntime()",93957343240608,93957343241786],["v8::internal::compiler::BytecodeGraphBuilder::VisitCallJSRuntime()",93957343242192,93957343242772],["v8::internal::compiler::BytecodeGraphBuilder::VisitConstruct()",93957343243168,93957343243987],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestEqual()",93957343244832,93957343244932],["v8::internal::compiler::BytecodeGraphBuilder::VisitTestLessThan()",93957343245056,93957343245156],["v8::internal::compiler::Node::InsertInput(v8::internal::Zone*, int, v8::internal::compiler::Node*)",93957344603568,93957344604215],["v8::internal::compiler::OperationTyper::NumberModulus(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344614912,93957344615604],["v8::internal::compiler::OperationTyper::SameValueNumbersOnly(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344620448,93957344620458],["v8::internal::compiler::Operator::PrintPropsTo(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957344622288,93957344623128],["v8::internal::compiler::(anonymous namespace)::CreatePipelineStatistics(v8::internal::Handle<v8::internal::Script>, v8::internal::OptimizedCompilationInfo*, v8::internal::Isolate*, v8::internal::compiler::ZoneStats*)",93957344625712,93957344626052],["v8::internal::compiler::PipelineImpl::CreateGraph()",93957344630528,93957344631077],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::InstructionRangesAsJSON const&)",93957344638224,93957344638926],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::HeapBrokerInitializationPhase>()",93957344642304,93957344642761],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::TyperPhase, v8::internal::compiler::Typer*>(v8::internal::compiler::Typer*&&)",93957344644704,93957344645107],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::LoadEliminationPhase>()",93957344646304,93957344646689],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::WasmInliningPhase>()",93957344647920,93957344648305],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::StoreStoreEliminationPhase>()",93957344649520,93957344649905],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::DecompressionOptimizationPhase>()",93957344651120,93957344651933],["v8::internal::compiler::PipelineData::PipelineData(v8::internal::compiler::ZoneStats*, v8::internal::OptimizedCompilationInfo*, v8::internal::Isolate*, v8::internal::AccountingAllocator*, v8::internal::compiler::Graph*, v8::internal::compiler::JSGraph*, v8::internal::compiler::Schedule*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*, v8::internal::JumpOptimizationInfo*, v8::internal::AssemblerOptions const&, v8::internal::ProfileDataFromFile const*)",93957344655584,93957344656751],["v8::internal::compiler::Pipeline::GenerateCodeForWasmFunction(v8::internal::OptimizedCompilationInfo*, v8::internal::wasm::WasmEngine*, v8::internal::compiler::MachineGraph*, v8::internal::compiler::CallDescriptor*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*, v8::internal::wasm::FunctionBody, v8::internal::wasm::WasmModule const*, int, std::__1::vector<v8::internal::compiler::WasmLoopInfo, std::__1::allocator<v8::internal::compiler::WasmLoopInfo> >*)",93957344660864,93957344664351],["v8::internal::compiler::Pipeline::NewCompilationJob(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::CodeKind, bool, v8::internal::BytecodeOffset, v8::internal::JavaScriptFrame*)",93957344665584,93957344665775],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::LateGraphTrimmingPhase>()",93957344667376,93957344667761],["v8::internal::compiler::(anonymous namespace)::TraceScheduleAndVerify(v8::internal::OptimizedCompilationInfo*, v8::internal::compiler::PipelineData*, v8::internal::compiler::Schedule*, char const*)",93957344668192,93957344669591],["v8::internal::compiler::PipelineImpl::VerifyGeneratedCodeIsIdempotent()",93957344670016,93957344670495],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::JumpThreadingPhase, bool&>(bool&)",93957344670896,93957344671374],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::TurbolizerCodeOffsetsInfoAsJSON const&)",93957344671952,93957344672409],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::FinalizeCodePhase>()",93957344672800,93957344673157],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::ResolvePhisPhase>()",93957344673568,93957344673963],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::BuildBundlesPhase>()",93957344674400,93957344674804],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::AllocateGeneralRegistersPhase<v8::internal::compiler::LinearScanAllocator>>()",93957344675728,93957344676294],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::DecideSpillingModePhase>()",93957344676880,93957344677275],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::CommitAssignmentPhase>()",93957344677680,93957344678075],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::ResolveControlFlowPhase>()",93957344678496,93957344678899],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::OptimizeMovesPhase>()",93957344679312,93957344679718],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::MidTierRegisterAllocatorPhase>()",93957344680112,93957344680489],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::MidTierPopulateReferenceMapsPhase>()",93957344680880,93957344681257],["v8::internal::compiler::WasmHeapStubCompilationJob::~WasmHeapStubCompilationJob()",93957344681392,93957344681518],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeUint32ToTagged()",93957345041264,93957345041278],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedTaggedToInt32(v8::internal::compiler::CheckForMinusZeroMode, v8::internal::compiler::FeedbackSource const&)",93957345048512,93957345048806],["v8::internal::compiler::SimplifiedOperatorBuilder::LoadTypedElement(v8::internal::ExternalArrayType const&)",93957345055760,93957345055888],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckMapsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckMapsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckMapsParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957345085376,93957345085454],["v8::internal::compiler::Operator1<v8::internal::compiler::ObjectAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ObjectAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ObjectAccess> >::Equals(v8::internal::compiler::Operator const*) const",93957345087424,93957345087470],["v8::internal::compiler::StateValuesCache::BuildTree(unsigned long*, v8::internal::compiler::Node**, unsigned long, v8::internal::BitVector const*, int, unsigned long)",93957345089776,93957345090594],["std::__1::map<v8::internal::compiler::(anonymous namespace)::UnobservableStore, bool, std::__1::less<v8::internal::compiler::(anonymous namespace)::UnobservableStore>, v8::internal::ZoneAllocator<std::__1::pair<v8::internal::compiler::(anonymous namespace)::UnobservableStore const, bool> > >::operator[](v8::internal::compiler::(anonymous namespace)::UnobservableStore const&)",93957345100752,93957345101040],["v8::internal::compiler::TypedOptimization::ReducePhi(v8::internal::compiler::Node*)",93957345110032,93957345110397],["v8::internal::compiler::TypedOptimization::TryReduceStringComparisonOfStringFromSingleCharCode(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Type, bool)",93957345116128,93957345116945],["v8::internal::compiler::Typer::Visitor::~Visitor()",93957345119520,93957345119548],["v8::internal::compiler::Typer::Visitor::ToLength(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345128960,93957345129140],["v8::internal::compiler::Typer::Visitor::ObjectIsDetectableCallable(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345130192,93957345130310],["v8::internal::compiler::Typer::Visitor::ObjectIsSymbol(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345131152,93957345131270],["v8::internal::compiler::Typer::Visitor::JSLessThanOrEqualTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345132720,93957345132813],["v8::internal::compiler::Typer::Visitor::JSAddTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345134112,93957345134621],["v8::internal::compiler::Typer::Visitor::NumberLessThanTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345138240,93957345138350],["v8::internal::compiler::Typer::Visitor::reducer_name() const",93957345138688,93957345138701],["v8::internal::compiler::Typer::Visitor::TypeSelect(v8::internal::compiler::Node*)",93957345139120,93957345139250],["v8::internal::compiler::Typer::Visitor::TypeProjection(v8::internal::compiler::Node*)",93957345141440,93957345141645],["v8::internal::compiler::Typer::Visitor::TypeCheckInternalizedString(v8::internal::compiler::Node*)",93957345141984,93957345142088],["v8::internal::compiler::Typer::Visitor::TypeCheckReceiverOrNullOrUndefined(v8::internal::compiler::Node*)",93957345142416,93957345142520],["v8::internal::compiler::Typer::Visitor::TypeConvertReceiver(v8::internal::compiler::Node*)",93957345142880,93957345142973],["v8::internal::compiler::Typer::Visitor::TypePoisonIndex(v8::internal::compiler::Node*)",93957345143376,93957345143486],["v8::internal::compiler::Typer::Visitor::TypeJSWasmCall(v8::internal::compiler::Node*)",93957345143744,93957345143805],["v8::internal::compiler::Typer::Visitor::TypeUnaryOp(v8::internal::compiler::Node*, v8::internal::compiler::Type (*)(v8::internal::compiler::Type, v8::internal::compiler::Typer*))",93957345144976,93957345145066],["v8::internal::compiler::Type::Max() const",93957345146032,93957345146477],["v8::internal::compiler::BitsetType::ExpandInternals(unsigned int)",93957345147216,93957345147297],["v8::internal::compiler::Type::Maybe(v8::internal::compiler::Type) const",93957345148128,93957345148614],["v8::internal::compiler::Type::IntersectAux(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::UnionType*, int, v8::internal::compiler::RangeType::Limits*, v8::internal::Zone*)",93957345149280,93957345150243],["v8::internal::compiler::Type::AddToUnion(v8::internal::compiler::Type, v8::internal::compiler::UnionType*, int, v8::internal::Zone*)",93957345151024,93957345151252],["v8::internal::compiler::Type::Union(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::Zone*)",93957345152624,93957345153127],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Type)",93957345156128,93957345156163],["unsigned int v8::internal::compiler::BitsetType::Lub<v8::internal::compiler::HeapObjectType>(v8::internal::compiler::HeapObjectType const&)",93957345156368,93957345156561],["v8::internal::compiler::ValueNumberingReducer::Reduce(v8::internal::compiler::Node*)",93957345156624,93957345157430],["v8::internal::compiler::ValueNumberingReducer::reducer_name() const",93957345157728,93957345157741],["v8::internal::compiler::Verifier::Visitor::CheckNotTyped(v8::internal::compiler::Node*)",93957345158336,93957345158547],["v8::internal::compiler::Verifier::Visitor::CheckOutput(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int, char const*)",93957345167040,93957345167341],["v8::internal::compiler::Verifier::Visitor::CheckValueInputIs(v8::internal::compiler::Node*, int, v8::internal::compiler::Type)",93957345167648,93957345168134],["v8::internal::compiler::Verifier::Run(v8::internal::compiler::Graph*, v8::internal::compiler::Verifier::Typing, v8::internal::compiler::Verifier::CheckInputs, v8::internal::compiler::Verifier::CodeType)",93957345168224,93957345168893],["v8::internal::compiler::CheckInputsDominate(v8::internal::compiler::Schedule*, v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*, int)",93957345175072,93957345175842],["v8::internal::compiler::ZoneStats::StatsScope::~StatsScope()",93957345176544,93957345176570],["v8::internal::compiler::ZoneStats::StatsScope::GetTotalAllocatedBytes()",93957345176832,93957345176922],["v8::internal::compiler::ZoneStats::ZoneStats(v8::internal::AccountingAllocator*)",93957345177360,93957345177388],["v8::internal::compiler::ZoneStats::GetCurrentAllocatedBytes() const",93957345177456,93957345177530],["v8::internal::compiler::ZoneStats::ReturnZone(v8::internal::Zone*)",93957345177840,93957345178171],["v8::internal::compiler::Int64Lowering::LowerGraph()",93957345178416,93957345179225],["v8::internal::compiler::Int64Lowering::PreparePhiReplacement(v8::internal::compiler::Node*)",93957345192480,93957345193329],["v8::internal::compiler::Int64Lowering::LowerMemoryBaseAndIndex(v8::internal::compiler::Node*)",93957345193792,93957345194133],["v8::internal::compiler::Int64Lowering::LowerWord64AtomicNarrowOp(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*)",93957345194352,93957345194822],["v8::internal::compiler::Int64Lowering::LowerLoadOperator(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Operator const*)",93957345195280,93957345195964],["v8::internal::compiler::Int64Lowering::LowerCallDescriptor(v8::internal::compiler::CallDescriptor const*)",93957345197200,93957345197269],["std::__1::deque<v8::internal::compiler::Int64Lowering::NodeState, v8::internal::RecyclingZoneAllocator<v8::internal::compiler::Int64Lowering::NodeState> >::__add_front_capacity()",93957345197792,93957345198679],["v8::internal::compiler::SimdScalarLowering::SimdScalarLowering(v8::internal::compiler::MachineGraph*, v8::internal::compiler::SimplifiedOperatorBuilder*, v8::internal::Signature<v8::internal::MachineRepresentation>*)",93957345199056,93957345199266],["v8::internal::compiler::SimdScalarLowering::LowerNode(v8::internal::compiler::Node*)",93957345200128,93957345217070],["v8::internal::compiler::SimdScalarLowering::PreparePhiReplacement(v8::internal::compiler::Node*)",93957345217312,93957345218351],["v8::internal::compiler::SimdScalarLowering::NumLanes(v8::internal::compiler::SimdScalarLowering::SimdType)",93957345218544,93957345218607],["v8::internal::compiler::SimdScalarLowering::LowerLoadOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType)",93957345218960,93957345220437],["v8::internal::compiler::SimdScalarLowering::DefaultLowering(v8::internal::compiler::Node*)",93957345220736,93957345221257],["v8::internal::compiler::SimdScalarLowering::LowerStoreOp(v8::internal::compiler::Node*)",93957345222992,93957345224642],["v8::internal::compiler::SimdScalarLowering::LowerBinaryOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::Operator const*, bool)",93957345227200,93957345227926],["v8::internal::compiler::SimdScalarLowering::ConstructPhiForComparison(v8::internal::compiler::Diamond, v8::internal::compiler::SimdScalarLowering::SimdType, int, int)",93957345228784,93957345229018],["v8::internal::compiler::SimdScalarLowering::Mask(v8::internal::compiler::Node*, int)",93957345230304,93957345230405],["v8::internal::compiler::SimdScalarLowering::LowerUnaryOp(v8::internal::compiler::Node*, v8::internal::compiler::SimdScalarLowering::SimdType, v8::internal::compiler::Operator const*)",93957345231984,93957345232499],["v8::internal::compiler::SimdScalarLowering::BuildF64Trunc(v8::internal::compiler::Node*)",93957345233488,93957345234144],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(double)",93957346641472,93957346641869],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str() const",93957346643104,93957346643967],["std::__1::__throw_bad_cast()",93957346646592,93957346646641],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringbuf()",93957346648608,93957346648670],["virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream()",93957346649152,93957346649279],["virtual thunk to std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_ostringstream()",93957346649632,93957346649741],["virtual thunk to std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_istringstream()",93957346650080,93957346650189],["virtual thunk to std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream()",93957346650464,93957346650537],["std::__1::__stdoutbuf<char>::__stdoutbuf(_IO_FILE*, __mbstate_t*)",93957346651952,93957346652092],["std::__1::DoIOSInit::~DoIOSInit()",93957346652240,93957346652310],["std::__1::__stdinbuf<char>::underflow()",93957346652416,93957346652428],["std::__1::__stdinbuf<char>::pbackfail(int)",93957346652448,93957346652681],["std::__1::__stdinbuf<wchar_t>::~__stdinbuf()",93957346653072,93957346653100],["std::__1::__stdinbuf<wchar_t>::underflow()",93957346653200,93957346653212],["std::__1::__stdinbuf<wchar_t>::pbackfail(unsigned int)",93957346653232,93957346653465],["std::__1::__stdoutbuf<char>::imbue(std::__1::locale const&)",93957346653856,93957346653911],["initstate",139871563518208,139871563518421],["nrand48",139871563520224,139871563520289],["drand48_r",139871563520528,139871563520539],["mrand48_r",139871563520752,139871563520774],["seed48_r",139871563520880,139871563520939],["getrandom",139871563521104,139871563521261],["strfromf",139871563521408,139871563521995],["strfromf64x",139871563522592,139871563523195],["register_printf_function",139871563603904,139871563603909],["register_printf_modifier",139871563611600,139871563612026],["printf_size",139871563612720,139871563615243],["fprintf",139871563615280,139871563615459],["__snprintf",139871563615680,139871563615855],["__asprintf",139871563616064,139871563616243],["vfwprintf",139871563616448,139871563616455],["vfwscanf",139871563616480,139871563616487],["scanf",139871563616688,139871563616888],["perror",139871563617360,139871563617555],["tmpfile",139871563617904,139871563618105],["tmpnam_r",139871563618288,139871563618363],["fwprintf",139871563752400,139871563752579],["__wunderflow",139871563757312,139871563757658],["_IO_wfile_overflow",139871563766000,139871563766709],["fileno",139871563770160,139871563770196],["open_memstream",139871563772464,139871563772676],["setbuf",139871563773264,139871563773274],["vscanf",139871563774112,139871563774135],["fcloseall",139871563775520,139871563775525],["freopen64",139871563776176,139871563776898],["__freading",139871563776960,139871563777010],["__freadable",139871563777040,139871563777049],["__flbf",139871563777072,139871563777080],["__fpending",139871563777200,139871563777241],["__libc_fatal",139871563777904,139871563777940],["fmemopen",139871563779440,139871563779900],["clearerr_unlocked",139871563780784,139871563780788],["_IO_free_backup_area",139871563793968,139871563794023],["__underflow",139871563794144,139871563794481],["_IO_setb",139871563794848,139871563794937],["_IO_default_uflow",139871563795152,139871563795239],["_IO_sgetn",139871563795520,139871563795622],["_IO_default_doallocate",139871563796176,139871563796282],["_IO_init",139871563796736,139871563796778],["_IO_sputbackc",139871563796944,139871563797071],["__libc_valloc",139871563828656,139871563828711],["malloc_usable_size",139871563830464,139871563830675],["posix_memalign",139871563832080,139871563832167],["mcheck",139871563834320,139871563834596],["mtrace",139871563837024,139871563837414],["_obstack_newchunk",139871563838000,139871563838355],["__libc_reallocarray",139871563838608,139871563838641],["__libc_dynarray_at_failure",139871563839120,139871563839184],["__libc_dynarray_resize_clear",139871563839856,139871563839928],["__libc_alloc_buffer_copy_string",139871563840224,139871563840269],["__strverscmp",139871563840784,139871563841060],["__strerror_r",139871563841360,139871563841798],["strxfrm",139871563845088,139871563845104],["memccpy",139871563846400,139871563846486],["strfry",139871563849248,139871563849518],["argz_add",139871563851328,139871563851437],["__argz_next",139871563851920,139871563851997],["__argz_stringify",139871563852464,139871563852537],["envz_get",139871563853904,139871563853952],["envz_strip",139871563854512,139871563854628],["__strtok_r_1c",139871563866848,139871563866945],["__strcspn_c1",139871563867248,139871563867285],["__strspn_c2",139871563867456,139871563867492],["__mempcpy_small",139871563867728,139871563867931],["__xpg_strerror_r",139871563868400,139871563868664],["explicit_bzero",139871563868944,139871563868963],["__bzero",139871563946528,139871563946540],["wcscspn",139871563948816,139871563948878],["wcsncat",139871563949008,139871563949085],["wcspbrk",139871563949232,139871563949294],["wcstok",139871563949440,139871563949625],["wmemcpy",139871563950016,139871563950025],["wcpcpy",139871563950144,139871563950189],["wmempcpy",139871563950288,139871563950297],["wctob",139871563950768,139871563951119],["__mbrlen",139871563951152,139871563951182],["wcrtomb",139871563951728,139871563952196],["wcsrtombs",139871563952240,139871563952986],["wcsnrtombs",139871563953728,139871563954443],["__wcstol_internal",139871563954560,139871563954576],["__wcstoul_internal",139871563954608,139871563954624],["__wcstod_internal",139871563954656,139871563954672],["__wcstold_internal",139871563954704,139871563954720],["__wcstof_internal",139871563954752,139871563954768],["__wcstol_l",139871563955904,139871563955914],["__wcstod_l",139871563966832,139871563966842],["wcstof32_l",139871563986272,139871563986282],["wcsxfrm",139871563986880,139871563986896],["wcswidth",139871563987008,139871563987167],["__wcsxfrm_l",139871563990704,139871563997216],["wcsncasecmp",139871563997312,139871563997419],["__wcsncasecmp_l",139871563997536,139871563997675],["__isoc99_vwscanf",139871564000448,139871564000474],["__isoc99_vfwscanf",139871564000672,139871564000682],["__isoc99_vswscanf",139871564001008,139871564001181],["c16rtomb",139871564001888,139871564002049],["_dl_catch_error",139871564538608,139871564538710],["_IO_vfscanf",139871564538896,139871564538932],["pthread_cond_init",139871564539088,139871564539123],["pthread_cond_wait",139871564539184,139871564539219],["f32xsubf128",139871565714736,139871565715354],["sigcancel_handler",139871566579344,139871566579497],["__pthread_exit",139871566590304,139871566590348],["__pthread_timedjoin_np",139871566590512,139871566590528],["pthread_getconcurrency",139871566591344,139871566591351],["__pthread_getschedparam",139871566591392,139871566591745],["pthread_setschedprio",139871566592048,139871566592302],["pthread_attr_setguardsize",139871566592320,139871566592327],["__pthread_mutex_cond_lock_full",139871566602144,139871566603999],["__pthread_mutex_cond_lock_adjust",139871566604608,139871566604745],["pthread_mutexattr_getpshared",139871566604784,139871566604794],["pthread_mutexattr_getkind_np",139871566604848,139871566604860],["__pthread_rwlock_init",139871566604912,139871566604970],["__GI___pthread_rwlock_rdlock",139871566604992,139871566605586],["__condvar_release_lock",139871566611248,139871566611331],["__condvar_cleanup_waiting",139871566611776,139871566611908],["__pthread_cond_broadcast",139871566615200,139871566616077],["__pthread_condattr_destroy",139871566616640,139871566616643],["pthread_barrierattr_init",139871566617520,139871566617529],["__dyn_pthread_atfork",139871566619648,139871566619660],["__new_sem_wait",139871566623424,139871566623473],["__GI___pthread_unregister_cancel",139871566624816,139871566624830],["__GI___pthread_unwind",139871566625776,139871566625845],["accept",139871566627184,139871566627339],["fsync",139871566628272,139871566628411],["__libc_pause",139871566628928,139871566629051],["__libc_sigwait",139871566629952,139871566630077],["system_alias",139871566630944,139871566630949],["__sigaction",139871566631728,139871566631772],["__libc_current_sigrtmax",139871566631840,139871566631845],["pthread_getaffinity_np@GLIBC_2.3.3",139871566631968,139871566631981],["pthread_attr_getaffinity_np@GLIBC_2.3.3",139871566632240,139871566632253],["pthread_mutexattr_getrobust",139871566632400,139871566632413],["pthread_mutex_consistent",139871566632464,139871566632500],["_Unwind_Resume",139871566632864,139871566632929],["pthread_mutexattr_setprotocol",139871566633248,139871566633286],["pthread_mutexattr_setprioceiling",139871566633424,139871566633547],["pthread_mutex_getprioceiling",139871566634976,139871566635006],["pthread_setname_np",139871566635472,139871566635765],["pthread_setattr_default_np",139871566636096,139871566636582],["thrd_create",139871566636736,139871566636822],["thrd_exit",139871566636912,139871566636924],["mtx_destroy",139871566637072,139871566637077],["mtx_lock",139871566637280,139871566637358],["mtx_trylock",139871566637440,139871566637518],["call_once",139871566637600,139871566637605],["cnd_destroy",139871566637696,139871566637701],["cnd_signal",139871566637792,139871566637870],["_dl_tunable_set_mutex_spin_count",139871566638224,139871566638234],["_dl_tunable_set_elision_skip_lock_internal_abort",139871566638352,139871566638362],["__lll_trylock_elision",139871566639136,139871566639245],["v8::DelayedTasksPlatform::OnCriticalMemoryPressure()",93957335211440,93957335211455],["v8::DelayedTasksPlatform::GetForegroundTaskRunner(v8::Isolate*)",93957335211504,93957335211965],["v8::Serializer::ThrowDataCloneError(v8::Local<v8::String>)",93957335308048,93957335308083],["void std::__1::vector<std::__1::shared_ptr<v8::BackingStore>, std::__1::allocator<std::__1::shared_ptr<v8::BackingStore> > >::__push_back_slow_path<std::__1::shared_ptr<v8::BackingStore> >(std::__1::shared_ptr<v8::BackingStore>&&)",93957335309424,93957335309790],["v8::Serializer::FinalizeTransfer()",93957335310928,93957335311281],["v8::Deserializer::GetWasmModuleFromId(v8::Isolate*, unsigned int)",93957335311376,93957335311442],["v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawOneByteInternalizedString(int, unsigned int)",93957336833680,93957336833882],["v8::internal::FactoryBase<v8::internal::Factory>::NewClassPositions(int, int)",93957336837040,93957336837268],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewStruct(v8::internal::InstanceType, v8::internal::AllocationType)",93957336838304,93957336838518],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewFixedArrayWithMap(v8::internal::Handle<v8::internal::Map>, int, v8::internal::AllocationType)",93957336838928,93957336838948],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewWeakFixedArrayWithMap(v8::internal::Map, int, v8::internal::AllocationType)",93957336839200,93957336839445],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewByteArray(int, v8::internal::AllocationType)",93957336839504,93957336839707],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewObjectBoilerplateDescription(int, int, int, bool)",93957336840304,93957336840444],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewTemplateObjectDescription(v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::FixedArray>)",93957336840608,93957336840865],["v8::internal::FreeListManyCached::RemoveCategory(v8::internal::FreeListCategory*)",93957336917952,93957336918124],["v8::internal::GCTracer::StopInSafepoint()",93957336924304,93957336924531],["v8::internal::GCTracer::AverageMarkCompactMutatorUtilization() const",93957336936688,93957336936740],["v8::internal::GCTracer::AverageTimeToIncrementalMarkingTask() const",93957336938352,93957336938366],["v8::internal::GCTracer::CurrentAllocationThroughputInBytesPerMillisecond() const",93957336940352,93957336940370],["v8::internal::GCTracer::ResetSurvivalEvents()",93957336940880,93957336940897],["std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream(unsigned int)",93957336941584,93957336941850],["v8::internal::MemoryController<v8::internal::GlobalMemoryTrait>::GrowingFactor(v8::internal::Heap*, unsigned long, double, double)",93957336942544,93957336942843],["v8::internal::WriteBarrier::ClearForThread(v8::internal::MarkingBarrier*)",93957336943248,93957336943277],["v8::internal::WriteBarrier::MarkingSlow(v8::internal::Heap*, v8::internal::Code, v8::internal::RelocInfo*, v8::internal::HeapObject)",93957336943360,93957336943437],["v8::internal::WriteBarrier::MarkingSlow(v8::internal::Heap*, v8::internal::DescriptorArray, int)",93957336943520,93957336943591],["v8::internal::Heap_GenerationalBarrierSlow(v8::internal::HeapObject, unsigned long, v8::internal::HeapObject)",93957336943744,93957336943905],["v8::internal::Heap::WriteBarrierForCodeSlow(v8::internal::Code)",93957336943936,93957336944369],["v8::internal::Heap_GenerationalEphemeronKeyBarrierSlow(v8::internal::Heap*, v8::internal::EphemeronHashTable, unsigned long)",93957336944528,93957336944736],["v8::internal::Heap::SetSerializedGlobalProxySizes(v8::internal::FixedArray)",93957336944752,93957336944765],["v8::internal::Heap::Heap()",93957336944784,93957336945691],["v8::internal::MemoryMeasurement::~MemoryMeasurement()",93957337054064,93957337054483],["v8::internal::IncrementalMarking::MarkBlackBackground(v8::internal::HeapObject, int)",93957337059408,93957337059638],["v8::internal::IncrementalMarking::StartMarking()",93957337061280,93957337062112],["v8::internal::IncrementalMarking::FinalizeIncrementally()",93957337063360,93957337063857],["v8::internal::IncrementalMarking::ProcessBlackAllocatedObject(v8::internal::HeapObject)",93957337064560,93957337064670],["v8::internal::IncrementalMarking::Hurry()",93957337065568,93957337065769],["v8::internal::IncrementalMarking::Finalize()",93957337066400,93957337066428],["v8::internal::IncrementalMarking::Epilogue()",93957337066928,93957337066942],["v8::internal::NativeContextInferrer::InferForJSFunction(v8::internal::Isolate*, v8::internal::JSFunction, unsigned long*)",93957337437264,93957337437368],["v8::internal::SemiSpace::Swap(v8::internal::SemiSpace*, v8::internal::SemiSpace*)",93957337444352,93957337444817],["v8::internal::NewSpace::Rebalance()",93957337448032,93957337448087],["v8::internal::Space::~Space()",93957337449600,93957337449779],["v8::internal::NewSpace::ExternalBackingStoreBytes(v8::internal::ExternalBackingStoreType) const",93957337450208,93957337450241],["v8::internal::ObjectStats::PrintInstanceTypeJSON(char const*, int, char const*, int)",93957337451472,93957337451765],["v8::internal::DumpJSONArray(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, unsigned long*, int)",93957337461696,93957337461735],["v8::internal::ObjectStatsCollectorImpl::RecordExternalResourceStats(unsigned long, v8::internal::ObjectStats::VirtualInstanceType, unsigned long)",93957337471008,93957337471520],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualJSGlobalObjectDetails(v8::internal::JSGlobalObject)",93957337472224,93957337472432],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualFeedbackVectorDetails(v8::internal::FeedbackVector)",93957337473552,93957337475113],["v8::internal::ObjectStatsCollectorImpl::CollectStatistics(v8::internal::HeapObject, v8::internal::ObjectStatsCollectorImpl::Phase, v8::internal::ObjectStatsCollectorImpl::CollectFieldStats)",93957337475232,93957337476049],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualBytecodeArrayDetails(v8::internal::BytecodeArray)",93957337477008,93957337477440],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualSharedFunctionInfoDetails(v8::internal::SharedFunctionInfo)",93957337478016,93957337478145],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualScriptDetails(v8::internal::Script)",93957337478448,93957337478783],["v8::internal::FieldStatsCollector::RecordStats(v8::internal::HeapObject)",93957337479200,93957337479534],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualObjectsForConstantPoolOrEmbeddedObjects(v8::internal::HeapObject, v8::internal::HeapObject, v8::internal::ObjectStats::VirtualInstanceType)",93957337480048,93957337480259],["v8::internal::Sweeper::PauseOrCompleteScope::~PauseOrCompleteScope()",93957337601568,93957337601739],["v8::internal::LoadHandler::LoadElement(v8::internal::Isolate*, v8::internal::ElementsKind, bool, bool, v8::internal::KeyedAccessLoadMode)",93957337648640,93957337648757],["v8::internal::Stats_Runtime_StoreInArrayLiteralIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337685760,93957337686559],["v8::internal::StubCache::StubCache(v8::internal::Isolate*)",93957337710432,93957337710469],["v8::internal::(anonymous namespace)::SimpleCreateFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Builtins::Name, int, bool)",93957337721872,93957337722035],["v8::internal::(anonymous namespace)::InstallFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, v8::internal::InstanceType, int, int, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Builtins::Name)",93957337788096,93957337788205],["v8::internal::Genesis::InitializeGlobal_harmony_regexp_match_indices()",93957337794272,93957337794913],["v8::internal::Genesis::TransferObject(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>)",93957337812816,93957337813083],["v8::internal::InitializeExternalStartupData(char const*)",93957337817472,93957337817527],["v8::internal::V8::ShutdownPlatform()",93957337819168,93957337819228],["v8::internal::interpreter::BytecodeArrayBuilder::BytecodeArrayBuilder(v8::internal::Zone*, int, int, v8::internal::FeedbackVectorSpec*, v8::internal::SourcePositionTableBuilder::RecordingMode)",93957337819728,93957337820091],["v8::internal::interpreter::BytecodeArrayBuilder::TypeOf()",93957337827600,93957337827837],["v8::internal::interpreter::BytecodeArrayBuilder::CompareTypeOf(v8::internal::interpreter::TestTypeOfFlags::LiteralFlag)",93957337831776,93957337832050],["v8::internal::interpreter::BytecodeArrayBuilder::LoadNull()",93957337834304,93957337834533],["v8::internal::interpreter::BytecodeArrayBuilder::LoadGlobal(v8::internal::AstRawString const*, int, v8::internal::TypeofMode)",93957337836480,93957337837089],["v8::internal::interpreter::BytecodeArrayBuilder::LoadNamedProperty(v8::internal::interpreter::Register, v8::internal::AstRawString const*, int)",93957337841728,93957337842174],["v8::internal::interpreter::BytecodeArrayBuilder::LoadAsyncIteratorProperty(v8::internal::interpreter::Register, int)",93957337844384,93957337844827],["v8::internal::interpreter::BytecodeArrayBuilder::StoreNamedProperty(v8::internal::interpreter::Register, v8::internal::AstRawString const*, int, v8::internal::LanguageMode)",93957337846064,93957337846125],["v8::internal::interpreter::BytecodeArrayBuilder::StoreInArrayLiteral(v8::internal::interpreter::Register, v8::internal::interpreter::Register, int)",93957337847568,93957337848068],["v8::internal::interpreter::BytecodeArrayBuilder::CreateBlockContext(v8::internal::Scope const*)",93957337848928,93957337849198],["v8::internal::interpreter::BytecodeArrayBuilder::CreateWithContext(v8::internal::interpreter::Register, v8::internal::Scope const*)",93957337850272,93957337850670],["v8::internal::interpreter::BytecodeArrayBuilder::CreateArrayLiteral(unsigned long, int, int)",93957337851744,93957337852065],["v8::internal::interpreter::BytecodeArrayBuilder::CloneObject(v8::internal::interpreter::Register, int, int)",93957337852880,93957337853279],["v8::internal::interpreter::BytecodeArrayBuilder::ToObject(v8::internal::interpreter::Register)",93957337854352,93957337854717],["v8::internal::interpreter::BytecodeArrayBuilder::Bind(v8::internal::interpreter::BytecodeLabel*)",93957337855616,93957337855676],["v8::internal::interpreter::BytecodeArrayBuilder::MarkTryBegin(int, v8::internal::interpreter::Register)",93957337855904,93957337855992],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfFalse(v8::internal::interpreter::BytecodeArrayBuilder::ToBooleanMode, v8::internal::interpreter::BytecodeLabel*)",93957337856768,93957337857223],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfUndefinedOrNull(v8::internal::interpreter::BytecodeLabel*)",93957337858048,93957337858315],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfJSReceiver(v8::internal::interpreter::BytecodeLabel*)",93957337858752,93957337859019],["v8::internal::interpreter::BytecodeArrayBuilder::Throw()",93957337859984,93957337860197],["v8::internal::interpreter::BytecodeArrayBuilder::ThrowSuperNotCalledIfHole()",93957337860928,93957337861141],["v8::internal::interpreter::BytecodeArrayBuilder::IncBlockCounter(int)",93957337861920,93957337862153],["v8::internal::interpreter::BytecodeArrayBuilder::ForInContinue(v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957337862944,93957337863373],["v8::internal::interpreter::BytecodeArrayBuilder::ForInStep(v8::internal::interpreter::Register)",93957337863968,93957337864335],["v8::internal::interpreter::BytecodeArrayBuilder::LoadModuleVariable(int, int)",93957337864656,93957337864965],["v8::internal::interpreter::BytecodeArrayBuilder::SwitchOnGeneratorState(v8::internal::interpreter::Register, v8::internal::interpreter::BytecodeJumpTable*)",93957337865536,93957337866017],["v8::internal::interpreter::BytecodeArrayBuilder::CallProperty(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList, int)",93957337866560,93957337868700],["v8::internal::interpreter::BytecodeArrayBuilder::CallAnyReceiver(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList, int)",93957337870640,93957337871181],["v8::internal::interpreter::BytecodeArrayBuilder::CallWithSpread(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList, int)",93957337871696,93957337872237],["v8::internal::interpreter::BytecodeArrayBuilder::ConstructWithSpread(v8::internal::interpreter::Register, v8::internal::interpreter::RegisterList, int)",93957337872800,93957337873360],["v8::internal::interpreter::BytecodeArrayBuilder::CallRuntime(v8::internal::Runtime::FunctionId, v8::internal::interpreter::Register)",93957337874176,93957337874201],["v8::internal::interpreter::BytecodeArrayBuilder::CallRuntimeForPair(v8::internal::Runtime::FunctionId, v8::internal::interpreter::RegisterList, v8::internal::interpreter::RegisterList)",93957337874224,93957337874767],["v8::internal::interpreter::BytecodeArrayBuilder::CallJSRuntime(int, v8::internal::interpreter::RegisterList)",93957337874800,93957337875227],["v8::internal::interpreter::BytecodeArrayBuilder::EmptyObjectBoilerplateDescriptionConstantPoolEntry()",93957337875888,93957337875902],["v8::internal::interpreter::BytecodeArrayBuilder::AllocateJumpTable(int, int)",93957337875920,93957337876023],["v8::internal::interpreter::BytecodeArrayBuilder::SetDeferredConstantPoolEntry(unsigned long, v8::internal::Handle<v8::internal::Object>)",93957337876048,93957337876062],["v8::internal::interpreter::RegisterTransferWriter::EmitLdar(v8::internal::interpreter::Register)",93957337876112,93957337876278],["v8::internal::interpreter::RegisterTransferWriter::EmitMov(v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957337876496,93957337876721],["v8::internal::interpreter::BytecodeArrayIterator::GetSlotOperand(int) const",93957337876928,93957337877005],["v8::internal::interpreter::BytecodeArrayIterator::BytecodeArrayIterator(v8::internal::Handle<v8::internal::BytecodeArray>, int)",93957337877200,93957337877391],["v8::internal::interpreter::BytecodeArrayIterator::~BytecodeArrayIterator()",93957337877456,93957337877480],["v8::internal::interpreter::BytecodeArrayIterator::ApplyDebugBreak()",93957337877584,93957337877650],["v8::internal::interpreter::BytecodeArrayIterator::current_bytecode_size_without_prefix() const",93957337877712,93957337877750],["v8::internal::interpreter::BytecodeArrayIterator::GetUnsignedImmediateOperand(int) const",93957337877824,93957337877875],["v8::internal::interpreter::BytecodeArrayIterator::GetRegisterCountOperand(int) const",93957337877952,93957337878003],["v8::internal::interpreter::BytecodeArrayIterator::GetRegisterOperand(int) const",93957337878048,93957337878125],["v8::internal::interpreter::BytecodeArrayIterator::GetRegisterListOperand(int) const",93957337878224,93957337878364],["v8::internal::interpreter::BytecodeArrayIterator::GetRelativeJumpTargetOffset() const",93957337878464,93957337878666],["v8::internal::interpreter::BytecodeArrayIterator::GetJumpTableTargetOffsets() const",93957337878704,93957337879016],["v8::internal::interpreter::JumpTableTargetOffsets::begin() const",93957337879072,93957337879218],["v8::internal::interpreter::JumpTableTargetOffsets::size() const",93957337879280,93957337879676],["v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator*()",93957337879696,93957337879728],["v8::internal::interpreter::BytecodeArrayRandomIterator::BytecodeArrayRandomIterator(v8::internal::Handle<v8::internal::BytecodeArray>, v8::internal::Zone*)",93957337879872,93957337880338],["v8::internal::interpreter::BytecodeArrayRandomIterator::IsValid() const",93957337881344,93957337881379],["v8::internal::RegExpParser::IsSyntaxCharacterOrSlash(unsigned int)",93957339878096,93957339878131],["v8::internal::(anonymous namespace)::LookupPropertyValueName(UProperty, char const*, bool, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::Zone*)",93957339905424,93957339906036],["_ZNSt3__16vectorIPN2v88internal13RegExpCaptureENS2_13ZoneAllocatorIS4_EEEC2INS_21__tree_const_iteratorIS4_PNS_11__tree_nodeIS4_PvEElEEEET_SF_RKS6_PNS_9enable_ifIXaasr27__is_cpp17_forward_iteratorISF_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISF_E9referenceEEE5valueEvE4typeE",93957339910880,93957339911198],["v8::internal::RegExpStack::EnsureCapacity(unsigned long)",93957339914064,93957339914325],["v8::internal::RegExpUtils::AdvanceStringIndex(v8::internal::Handle<v8::internal::String>, unsigned long, bool)",93957339916832,93957339917049],["v8::internal::RegExp::IsUnmodifiedRegExp(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>)",93957339917968,93957339917978],["v8::internal::RegExpImpl::IrregexpPrepare(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>)",93957339919568,93957339919939],["v8::internal::RegExpImpl::IrregexpExec(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::RegExp::ExecQuirks)",93957339920448,93957339920996],["v8::internal::RegExpImpl::Compile(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::RegExpCompileData*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, bool, unsigned int&)",93957339923872,93957339924780],["v8::internal::RegExp::SetLastMatchInfo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::Handle<v8::internal::String>, int, int*)",93957339925648,93957339926353],["v8::internal::RegExpGlobalCache::~RegExpGlobalCache()",93957339926896,93957339926926],["v8::internal::RegExpGlobalCache::FetchNext()",93957339927168,93957339927517],["v8::internal::RegExpResultsCache::Lookup(v8::internal::Heap*, v8::internal::String, v8::internal::Object, v8::internal::FixedArray*, v8::internal::RegExpResultsCache::ResultsCacheType)",93957339927568,93957339927787],["v8::internal::RegExpResultsCache::Clear(v8::internal::FixedArray)",93957339929600,93957339929655],["v8::internal::Runtime_TransitionElementsKind(int, unsigned long*, v8::internal::Isolate*)",93957339929728,93957339930025],["v8::internal::Runtime_TransitionElementsKindWithKind(int, unsigned long*, v8::internal::Isolate*)",93957339930720,93957339930953],["v8::internal::Stats_Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*)",93957340107456,93957340108156],["v8::internal::Stats_Runtime_AllocateInOldGeneration(int, unsigned long*, v8::internal::Isolate*)",93957340108496,93957340109202],["v8::internal::Runtime_AllocateSeqOneByteString(int, unsigned long*, v8::internal::Isolate*)",93957340109952,93957340110153],["v8::internal::Runtime_ThrowIteratorError(int, unsigned long*, v8::internal::Isolate*)",93957340111552,93957340111695],["v8::internal::Runtime_ThrowConstructedNonConstructable(int, unsigned long*, v8::internal::Isolate*)",93957340113680,93957340113823],["v8::internal::Runtime_IncrementUseCounter(int, unsigned long*, v8::internal::Isolate*)",93957340116432,93957340116598],["v8::internal::Runtime_AllowDynamicFunction(int, unsigned long*, v8::internal::Isolate*)",93957340121776,93957340122101],["v8::internal::Runtime_GetInitializerFunction(int, unsigned long*, v8::internal::Isolate*)",93957340126240,93957340126658],["v8::internal::Runtime_StringToLowerCaseIntl(int, unsigned long*, v8::internal::Isolate*)",93957340130720,93957340130936],["v8::internal::Runtime_CreateArrayLiteralWithoutAllocationSite(int, unsigned long*, v8::internal::Isolate*)",93957340137152,93957340137507],["v8::internal::(anonymous namespace)::JSObjectWalkVisitor<v8::internal::(anonymous namespace)::DeprecationUpdateContext>::StructureWalk(v8::internal::Handle<v8::internal::JSObject>)",93957340144912,93957340146806],["v8::internal::Runtime_GetModuleNamespace(int, unsigned long*, v8::internal::Isolate*)",93957340156192,93957340156470],["v8::internal::Runtime_StringParseFloat(int, unsigned long*, v8::internal::Isolate*)",93957340160816,93957340161211],["v8::internal::Runtime_GetHoleNaNUpper(int, unsigned long*, v8::internal::Isolate*)",93957340163776,93957340163923],["v8::internal::Stats_Runtime_ObjectKeys(int, unsigned long*, v8::internal::Isolate*)",93957340167456,93957340168083],["v8::internal::Stats_Runtime_HasOwnConstDataProperty(int, unsigned long*, v8::internal::Isolate*)",93957340173120,93957340173839],["v8::internal::Stats_Runtime_ObjectCreate(int, unsigned long*, v8::internal::Isolate*)",93957340175648,93957340176317],["v8::internal::Runtime_OptimizeObjectForAddingMultipleProperties(int, unsigned long*, v8::internal::Isolate*)",93957340177536,93957340177870],["v8::internal::Runtime_ObjectValuesSkipFastPath(int, unsigned long*, v8::internal::Isolate*)",93957340179504,93957340179757],["v8::internal::Runtime_ObjectEntriesSkipFastPath(int, unsigned long*, v8::internal::Isolate*)",93957340181328,93957340181581],["v8::internal::Runtime_JSReceiverPreventExtensionsThrow(int, unsigned long*, v8::internal::Isolate*)",93957340183088,93957340183302],["v8::internal::Runtime_JSReceiverGetPrototypeOf(int, unsigned long*, v8::internal::Isolate*)",93957340184800,93957340185186],["v8::internal::Runtime_JSReceiverSetPrototypeOfDontThrow(int, unsigned long*, v8::internal::Isolate*)",93957340186832,93957340187082],["v8::internal::Runtime_SetKeyedProperty(int, unsigned long*, v8::internal::Isolate*)",93957340191024,93957340191182],["v8::internal::Runtime_StoreDataPropertyInLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340192480,93957340192825],["v8::internal::Runtime_ShrinkPropertyDictionary(int, unsigned long*, v8::internal::Isolate*)",93957340194576,93957340194905],["v8::internal::Runtime_GetOwnPropertyKeys(int, unsigned long*, v8::internal::Isolate*)",93957340196656,93957340196952],["v8::internal::Runtime_AllocateHeapNumber(int, unsigned long*, v8::internal::Isolate*)",93957340198496,93957340198637],["v8::internal::Runtime_GetDerivedMap(int, unsigned long*, v8::internal::Isolate*)",93957340200128,93957340200404],["v8::internal::Runtime_TryMigrateInstance(int, unsigned long*, v8::internal::Isolate*)",93957340201936,93957340202174],["v8::internal::Runtime_DefineDataPropertyInLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340204272,93957340205533],["v8::internal::Runtime_HasFastPackedElements(int, unsigned long*, v8::internal::Isolate*)",93957340208624,93957340208727],["v8::internal::Stats_Runtime_IsJSReceiver(int, unsigned long*, v8::internal::Isolate*)",93957340209376,93957340209945],["v8::internal::Stats_Runtime_GetFunctionName(int, unsigned long*, v8::internal::Isolate*)",93957340210160,93957340210752],["v8::internal::Stats_Runtime_DefineGetterPropertyUnchecked(int, unsigned long*, v8::internal::Isolate*)",93957340211600,93957340212811],["v8::internal::Stats_Runtime_SetDataProperties(int, unsigned long*, v8::internal::Isolate*)",93957340213072,93957340213720],["v8::internal::Stats_Runtime_CopyDataProperties(int, unsigned long*, v8::internal::Isolate*)",93957340213984,93957340214632],["v8::internal::Stats_Runtime_CopyDataPropertiesWithExcludedProperties(int, unsigned long*, v8::internal::Isolate*)",93957340215584,93957340216902],["v8::internal::Stats_Runtime_DefineSetterPropertyUnchecked(int, unsigned long*, v8::internal::Isolate*)",93957340217776,93957340218987],["v8::internal::Stats_Runtime_ToObject(int, unsigned long*, v8::internal::Isolate*)",93957340219040,93957340219394],["v8::internal::Stats_Runtime_ToNumber(int, unsigned long*, v8::internal::Isolate*)",93957340219600,93957340220177],["v8::internal::Stats_Runtime_ToNumeric(int, unsigned long*, v8::internal::Isolate*)",93957340220400,93957340220998],["v8::internal::Stats_Runtime_ToLength(int, unsigned long*, v8::internal::Isolate*)",93957340221232,93957340221842],["v8::internal::Stats_Runtime_ToString(int, unsigned long*, v8::internal::Isolate*)",93957340222048,93957340222623],["v8::internal::Stats_Runtime_ToName(int, unsigned long*, v8::internal::Isolate*)",93957340222816,93957340223391],["v8::internal::Stats_Runtime_HasInPrototypeChain(int, unsigned long*, v8::internal::Isolate*)",93957340223648,93957340224288],["v8::internal::Stats_Runtime_CreateIterResultObject(int, unsigned long*, v8::internal::Isolate*)",93957340224464,93957340225011],["v8::internal::Stats_Runtime_CreateDataProperty(int, unsigned long*, v8::internal::Isolate*)",93957340225376,93957340226094],["v8::internal::Stats_Runtime_SetOwnPropertyIgnoreAttributes(int, unsigned long*, v8::internal::Isolate*)",93957340226416,93957340227123],["v8::internal::Stats_Runtime_GetOwnPropertyDescriptor(int, unsigned long*, v8::internal::Isolate*)",93957340227504,93957340228242],["v8::internal::Stats_Runtime_LoadPrivateSetter(int, unsigned long*, v8::internal::Isolate*)",93957340228384,93957340228953],["v8::internal::Stats_Runtime_LoadPrivateGetter(int, unsigned long*, v8::internal::Isolate*)",93957340229088,93957340229657],["v8::internal::Stats_Runtime_CreatePrivateAccessors(int, unsigned long*, v8::internal::Isolate*)",93957340230160,93957340231040],["v8::internal::Stats_Runtime_AddPrivateBrand(int, unsigned long*, v8::internal::Isolate*)",93957340231696,93957340232767],["v8::internal::Stats_Runtime_AddPrivateField(int, unsigned long*, v8::internal::Isolate*)",93957340233376,93957340234387],["v8::internal::Stats_Runtime_SwissTableAllocate(int, unsigned long*, v8::internal::Isolate*)",93957340234576,93957340235135],["v8::internal::Stats_Runtime_SwissTableAdd(int, unsigned long*, v8::internal::Isolate*)",93957340235440,93957340236141],["v8::internal::Stats_Runtime_SwissTableFindEntry(int, unsigned long*, v8::internal::Isolate*)",93957340236592,93957340237436],["v8::internal::Stats_Runtime_SwissTableUpdate(int, unsigned long*, v8::internal::Isolate*)",93957340237936,93957340238786],["v8::internal::Stats_Runtime_SwissTableDelete(int, unsigned long*, v8::internal::Isolate*)",93957340239040,93957340239669],["v8::internal::Stats_Runtime_SwissTableEquals(int, unsigned long*, v8::internal::Isolate*)",93957340239968,93957340240635],["v8::internal::Stats_Runtime_SwissTableElementsCount(int, unsigned long*, v8::internal::Isolate*)",93957340240832,93957340241458],["v8::internal::Stats_Runtime_SwissTableKeyAt(int, unsigned long*, v8::internal::Isolate*)",93957340241664,93957340242284],["v8::internal::Stats_Runtime_SwissTableValueAt(int, unsigned long*, v8::internal::Isolate*)",93957340242480,93957340243100],["v8::internal::Serializer::OutputStatistics(char const*)",93957340544768,93957340545031],["v8::internal::Serializer::SerializeRootObject(v8::internal::FullObjectSlot)",93957340546048,93957340546153],["v8::internal::Serializer::SerializeBackReference(v8::internal::Handle<v8::internal::HeapObject>)",93957340546784,93957340547083],["v8::internal::Serializer::InitializeCodeAddressMap()",93957340547856,93957340548142],["v8::internal::Serializer::ObjectSerializer::SerializeJSTypedArray()",93957340550560,93957340550716],["v8::internal::Serializer::ObjectSerializer::SerializeExternalStringAsSequentialString()",93957340551424,93957340551896],["v8::internal::Serializer::ObjectSerializer::SerializeCode(v8::internal::Map, int)",93957340553504,93957340554179],["v8::internal::Serializer::ObjectSerializer::VisitExternalReference(v8::internal::Foreign, unsigned long*)",93957340556976,93957340557012],["v8::internal::Serializer::ObjectSerializer::VisitOffHeapTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957340557200,93957340557326],["v8::internal::CodeAddressMap::~CodeAddressMap()",93957340558496,93957340558682],["v8::internal::CodeAddressMap::NameMap::FindOrCreateEntry(unsigned long)",93957340559904,93957340560182],["v8::internal::SerializedData::AllocateData(unsigned int)",93957340560896,93957340561006],["v8::internal::SnapshotByteSink::PutInt(unsigned long, char const*)",93957340561424,93957340561646],["v8::internal::SnapshotByteSink::Append(v8::internal::SnapshotByteSink const&)",93957340561680,93957340561704],["v8::internal::Checksum(v8::internal::Vector<unsigned char const>)",93957340563632,93957340563673],["v8::internal::Snapshot::Initialize(v8::internal::Isolate*)",93957340563728,93957340564760],["v8::internal::Snapshot::ClearReconstructableDataForSerialization(v8::internal::Isolate*, bool)",93957340565408,93957340566925],["v8::internal::Snapshot::Create(v8::internal::Isolate*, std::__1::vector<v8::internal::Context, std::__1::allocator<v8::internal::Context> >*, std::__1::vector<v8::SerializeInternalFieldsCallback, std::__1::allocator<v8::SerializeInternalFieldsCallback> > const&, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&, v8::base::Flags<v8::internal::Snapshot::SerializerFlag, int>)",93957340567408,93957340570853],["v8::internal::(anonymous namespace)::RunExtraCode(v8::Isolate*, v8::Local<v8::Context>, char const*, char const*)",93957340571088,93957340571444],["v8::internal::StartupDeserializer::DeserializeIntoIsolate()",93957340571856,93957340572428],["v8::internal::StartupSerializer::StartupSerializer(v8::internal::Isolate*, v8::base::Flags<v8::internal::Snapshot::SerializerFlag, int>, v8::internal::ReadOnlySerializer*)",93957340572592,93957340572716],["v8::internal::StartupSerializer::~StartupSerializer()",93957340573024,93957340573052],["v8::internal::StartupSerializer::SerializeUsingReadOnlyObjectCache(v8::internal::SnapshotByteSink*, v8::internal::Handle<v8::internal::HeapObject>)",93957340573824,93957340573841],["v8::internal::StartupSerializer::SerializeWeakReferencesAndDeferred()",93957340573984,93957340574152],["v8::internal::SerializedHandleChecker::SerializedHandleChecker(v8::internal::Isolate*, std::__1::vector<v8::internal::Context, std::__1::allocator<v8::internal::Context> >*)",93957340574336,93957340574659],["v8::internal::StartupSerializer::CheckNoDirtyFinalizationRegistries()",93957340574736,93957340574810],["v8::internal::SerializedHandleChecker::CheckGlobalAndEternalHandles()",93957340575296,93957340575353],["v8::internal::SerializedHandleChecker::~SerializedHandleChecker()",93957340575440,93957340575522],["v8_inspector::V8Debugger::asyncTaskScheduledForStack(v8_inspector::String16 const&, void*, bool)",93957342538704,93957342539093],["v8_inspector::V8Debugger::setAsyncCallStackDepth(v8_inspector::V8DebuggerAgentImpl*, int)",93957342543424,93957342543722],["v8_inspector::V8Debugger::storeStackTrace(std::__1::shared_ptr<v8_inspector::AsyncStackTrace>)",93957342546608,93957342546771],["v8_inspector::V8Debugger::asyncTaskCanceled(void*)",93957342547664,93957342547745],["v8_inspector::V8Debugger::muteScriptParsedEvents()",93957342548048,93957342548058],["v8_inspector::V8Debugger::symbolize(v8::Local<v8::StackFrame>)",93957342548080,93957342548187],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::handleProgramBreak(v8::Local<v8::Context>, v8::Local<v8::Value>, std::__1::vector<int, std::__1::allocator<int> > const&, v8::debug::ExceptionType, bool)::$_2, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342548368,93957342548413],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::handleProgramBreak(v8::Local<v8::Context>, v8::Local<v8::Value>, std::__1::vector<int, std::__1::allocator<int> > const&, v8::debug::ExceptionType, bool)::$_3, void (v8_inspector::V8InspectorSessionImpl*)> >(void const*)",93957342548544,93957342548600],["_ZNSt3__16vectorIhNS_9allocatorIhEEE6insertIPKtEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIhNS_15iterator_traitsIS8_E9referenceEEE5valueENS_11__wrap_iterIPhEEE4typeENSC_IPKhEES8_S8_",93957342746192,93957342748654],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleString16(v8_crdtp::span<unsigned short>)",93957342752704,93957342752845],["v8_crdtp::DispatchResponse::Success()",93957342754992,93957342755022],["v8_crdtp::Dispatchable::DispatchError() const",93957342756224,93957342756368],["v8_crdtp::DomainDispatcher::Callback::~Callback()",93957342757440,93957342757619],["v8_crdtp::DomainDispatcher::sendResponse(int, v8_crdtp::DispatchResponse const&, std::__1::unique_ptr<v8_crdtp::Serializable, std::__1::default_delete<v8_crdtp::Serializable> >)",93957342758016,93957342758290],["v8_crdtp::DomainDispatcher::MaybeReportInvalidParams(v8_crdtp::Dispatchable const&, v8_crdtp::DeserializerState const&)",93957342758896,93957342759112],["v8_crdtp::UberDispatcher::~UberDispatcher()",93957342759328,93957342759462],["v8_crdtp::UberDispatcher::WireBackend(v8_crdtp::span<unsigned char>, std::__1::vector<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> >, std::__1::allocator<std::__1::pair<v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char> > > > const&, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> >)",93957342760816,93957342761376],["std::__1::vector<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >, std::__1::allocator<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > > > >::insert(std::__1::__wrap_iter<std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > > const*>, std::__1::pair<v8_crdtp::span<unsigned char>, std::__1::unique_ptr<v8_crdtp::DomainDispatcher, std::__1::default_delete<v8_crdtp::DomainDispatcher> > >&&)",93957342762256,93957342763058],["v8_crdtp::(anonymous namespace)::ProtocolError::~ProtocolError()",93957342763408,93957342763476],["v8_crdtp::(anonymous namespace)::Response::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342763568,93957342763752],["v8_crdtp::(anonymous namespace)::Response::~Response()",93957342763808,93957342763864],["v8_crdtp::(anonymous namespace)::Notification::~Notification()",93957342764096,93957342764139],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8_crdtp::UberDispatcher::Dispatch(v8_crdtp::Dispatchable const&) const::$_0, void ()> >(std::__1::__function::__policy_storage const*)",93957342764208,93957342764226],["void std::__1::__function::__policy::__large_destroy<std::__1::__function::__default_alloc_func<v8_crdtp::UberDispatcher::Dispatch(v8_crdtp::Dispatchable const&) const::$_0, void ()> >(void*)",93957342764384,93957342764426],["v8::internal::compiler::InstructionSelector::VisitComment(v8::internal::compiler::Node*)",93957342960336,93957342960429],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, std::__1::__unordered_map_hasher<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, v8::internal::compiler::FeedbackSource::Hash, v8::internal::compiler::FeedbackSource::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, v8::internal::compiler::FeedbackSource::Equal, v8::internal::compiler::FeedbackSource::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo> > >::__rehash(unsigned long)",93957342974064,93957342974804],["v8::internal::compiler::ReferenceMap::RecordReference(v8::internal::compiler::AllocatedOperand const&)",93957342981600,93957342982303],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Constant const&)",93957342990240,93957342990532],["v8::internal::compiler::InstructionSequence::InstructionBlocksFor(v8::internal::Zone*, v8::internal::compiler::Schedule const*)",93957342992832,93957342996414],["v8::internal::compiler::InstructionSequence::StartBlock(v8::internal::compiler::RpoNumber)",93957342999744,93957342999804],["v8::internal::compiler::InstructionSequence::GetRepresentation(int) const",93957343000480,93957343000513],["v8::internal::compiler::InstructionSequence::InputRpo(v8::internal::compiler::Instruction*, unsigned long)",93957343001184,93957343001308],["v8::internal::compiler::FrameStateDescriptor::FrameStateDescriptor(v8::internal::Zone*, v8::internal::compiler::FrameStateType, v8::internal::BytecodeOffset, v8::internal::compiler::OutputFrameStateCombine, unsigned long, unsigned long, unsigned long, v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo>, v8::internal::compiler::FrameStateDescriptor*)",93957343001616,93957343001969],["v8::internal::compiler::FrameStateDescriptor::GetSize() const",93957343002048,93957343002113],["v8::internal::compiler::FrameStateDescriptor::GetFrameCount() const",93957343002224,93957343002255],["v8::internal::compiler::JSToWasmFrameStateDescriptor::JSToWasmFrameStateDescriptor(v8::internal::Zone*, v8::internal::compiler::FrameStateType, v8::internal::BytecodeOffset, v8::internal::compiler::OutputFrameStateCombine, unsigned long, unsigned long, unsigned long, v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo>, v8::internal::compiler::FrameStateDescriptor*, v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957343002320,93957343002384],["std::__1::vector<v8::internal::MachineRepresentation, v8::internal::ZoneAllocator<v8::internal::MachineRepresentation> >::__append(unsigned long, v8::internal::MachineRepresentation const&)",93957343002944,93957343003966],["v8::internal::compiler::JumpThreading::ApplyForwarding(v8::internal::Zone*, v8::internal::ZoneVector<v8::internal::compiler::RpoNumber> const&, v8::internal::compiler::InstructionSequence*)",93957343006256,93957343007212],["v8::internal::compiler::MidTierRegisterAllocationData::MidTierRegisterAllocationData(v8::internal::RegisterConfiguration const*, v8::internal::Zone*, v8::internal::compiler::Frame*, v8::internal::compiler::InstructionSequence*, v8::internal::TickCounter*, char const*)",93957343007968,93957343009237],["v8::internal::compiler::VirtualRegisterData::AddSpillUse(int, v8::internal::compiler::MidTierRegisterAllocationData*)",93957343009776,93957343010202],["v8::internal::compiler::LiveRangeBuilder::FixedLiveRangeFor(int, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343108192,93957343108535],["v8::internal::compiler::LiveRangeConnector::ResolveControlFlow(v8::internal::Zone*)",93957343157616,93957343160259],["v8::internal::compiler::SpillPlacer::ForwardPass()",93957343176256,93957343176549],["v8::internal::compiler::BranchElimination::UpdateConditions(v8::internal::compiler::Node*, v8::internal::compiler::BranchElimination::ControlPathConditions)",93957343187376,93957343187705],["v8::internal::compiler::(anonymous namespace)::UpdateInLiveness(v8::internal::interpreter::Bytecode, v8::internal::compiler::BytecodeLivenessState*, v8::internal::interpreter::BytecodeArrayIterator const&)",93957343197888,93957343199458],["v8::internal::compiler::BytecodeGraphBuilder::Environment::Environment(v8::internal::compiler::BytecodeGraphBuilder*, int, int, v8::internal::interpreter::Register, v8::internal::compiler::Node*)",93957343202128,93957343203946],["v8::internal::compiler::BytecodeGraphBuilder::MergeValue(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343206272,93957343206835],["v8::internal::compiler::BytecodeGraphBuilder::CreateNativeContextNode()",93957343212000,93957343212239],["v8::internal::compiler::BytecodeGraphBuilder::BuildFunctionEntryStackCheck()",93957343214352,93957343214501],["v8::internal::compiler::BytecodeGraphBuilder::OsrIteratorState::ProcessOsrPrelude()",93957343216400,93957343217857],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaZero()",93957343223600,93957343223669],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaTheHole()",93957343223936,93957343224005],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaGlobal()",93957343224320,93957343224717],["v8::internal::compiler::BytecodeGraphBuilder::VisitPopContext()",93957343225872,93957343225929],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaImmutableCurrentContextSlot()",93957343226448,93957343226567],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdar()",93957343227328,93957343227418],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaNamedProperty()",93957343227712,93957343228242],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaNamedPropertyFromSuper()",93957343228688,93957343229275],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaModuleVariable()",93957343229776,93957343229972],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaNamedPropertyNoFeedback()",93957343230208,93957343230820],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaInArrayLiteral()",93957343231504,93957343232141],["v8::internal::compiler::BytecodeGraphBuilder::VisitCollectTypeProfile()",93957343232832,93957343233253],["v8::internal::compiler::BytecodeGraphBuilder::VisitSub()",93957343233376,93957343233476],["v8::internal::compiler::BytecodeGraphBuilder::VisitDiv()",93957343233600,93957343233700],["v8::internal::compiler::BytecodeGraphBuilder::VisitExp()",93957343233824,93957343233924],["v8::internal::compiler::BytecodeGraphBuilder::VisitBitwiseXor()",93957343234048,93957343234148],["v8::internal::compiler::BytecodeGraphBuilder::VisitShiftLeft()",93957343234272,93957343234372],["v8::internal::compiler::BytecodeGraphBuilder::VisitShiftRightLogical()",93957343234496,93957343234596],["v8::internal::compiler::BytecodeGraphBuilder::VisitSubSmi()",93957343234720,93957343234820],["v8::internal::compiler::BytecodeGraphBuilder::VisitDivSmi()",93957343234944,93957343235044],["v8::internal::compiler::BytecodeGraphBuilder::VisitExpSmi()",93957343235168,93957343235268],["v8::internal::compiler::BytecodeGraphBuilder::VisitBitwiseXorSmi()",93957343235392,93957343235492],["v8::internal::compiler::NodeProperties::FindSuccessfulControlProjection(v8::internal::compiler::Node*)",93957344592800,93957344593073],["v8::internal::compiler::OperationTyper::OperationTyper(v8::internal::compiler::JSHeapBroker*, v8::internal::Zone*)",93957344606976,93957344607373],["v8::internal::compiler::OperationTyper::NumberAdd(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344611888,93957344612456],["v8::internal::compiler::OperationTyper::NumberMax(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344617312,93957344617863],["v8::internal::compiler::OperationTyper::BigIntSubtract(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344619488,93957344619519],["v8::internal::compiler::OperationTyper::CheckNumber(v8::internal::compiler::Type)",93957344621264,93957344621288],["v8::internal::compiler::OperatorProperties::IsBasicBlockBegin(v8::internal::compiler::Operator const*)",93957344622016,93957344622051],["v8::internal::compiler::PipelineStatistics::CommonStats::End(v8::internal::compiler::PipelineStatistics*, v8::internal::CompilationStatistics::BasicStats*)",93957344623392,93957344623627],["v8::internal::compiler::PipelineStatistics::EndPhase()",93957344624896,93957344625213],["v8::internal::compiler::PipelineCompilationJob::~PipelineCompilationJob()",93957344627760,93957344627871],["v8::internal::compiler::PipelineData::ChooseSpecializationContext()",93957344629200,93957344629634],["v8::internal::compiler::PipelineImpl::OptimizeGraphForMidTier(v8::internal::compiler::Linkage*)",93957344631312,93957344632339],["v8::internal::compiler::PipelineImpl::FinalizeCode(bool)",93957344635264,93957344637384],["v8::internal::compiler::WasmHeapStubCompilationJob::ExecuteJobImpl(v8::internal::RuntimeCallStats*, v8::internal::LocalIsolate*)",93957344639056,93957344640646],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::PrintGraphPhase, char const*&>(char const*&)",93957344641456,93957344641859],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::GraphBuilderPhase>()",93957344643136,93957344643521],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::CopyMetadataForConcurrentCompilePhase>()",93957344644336,93957344644704],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::TypedLoweringPhase>()",93957344645120,93957344645505],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::LoopExitEliminationPhase>()",93957344645920,93957344646302],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::EscapeAnalysisPhase>()",93957344646704,93957344647089],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::SimplifiedLoweringPhase, v8::internal::compiler::Linkage*&>(v8::internal::compiler::Linkage*&)",93957344647504,93957344647907],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::GenericLoweringPhase>()",93957344648320,93957344648705],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::EffectControlLinearizationPhase>()",93957344649120,93957344649505],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::ControlFlowOptimizationPhase>()",93957344649920,93957344650305],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::MachineOperatorOptimizationPhase>()",93957344650720,93957344651105],["v8::internal::compiler::PipelineImpl::SelectInstructions(v8::internal::compiler::Linkage*)",93957344651936,93957344654671],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::ScheduledMachineLoweringPhase>()",93957344655184,93957344655569],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::BlockStartsAsJSON const&)",93957344656752,93957344657061],["v8::internal::compiler::PipelineData::PipelineData(v8::internal::compiler::ZoneStats*, v8::internal::wasm::WasmEngine*, v8::internal::OptimizedCompilationInfo*, v8::internal::compiler::MachineGraph*, v8::internal::compiler::PipelineStatistics*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*, v8::internal::AssemblerOptions const&)",93957344659952,93957344660857],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::WasmLoopUnrollingPhase, std::__1::vector<v8::internal::compiler::WasmLoopInfo, std::__1::allocator<v8::internal::compiler::WasmLoopInfo> >*&>(std::__1::vector<v8::internal::compiler::WasmLoopInfo, std::__1::allocator<v8::internal::compiler::WasmLoopInfo> >*&)",93957344664352,93957344664755],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::WasmBaseOptimizationPhase>()",93957344665184,93957344665569],["v8::internal::compiler::PipelineImpl::AllocateRegistersForMidTier(v8::internal::RegisterConfiguration const*, v8::internal::compiler::CallDescriptor*, bool)",93957344665776,93957344666329],["v8::internal::compiler::(anonymous namespace)::ReplaceEffectControlUses(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345030848,93957345031559],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsInteger()",93957345041776,93957345041790],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedUint32ToTaggedSigned(v8::internal::compiler::FeedbackSource const&)",93957345044848,93957345045048],["v8::internal::compiler::SimplifiedOperatorBuilder::MaybeGrowFastElements(v8::internal::compiler::GrowFastElementsMode, v8::internal::compiler::FeedbackSource const&)",93957345051616,93957345051910],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeSafeIntegerSubtract(v8::internal::compiler::NumberOperationHint)",93957345054544,93957345054626],["v8::internal::compiler::SimplifiedOperatorBuilder::LoadStackArgument()",93957345056816,93957345056830],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckMinusZeroParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckMinusZeroParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckMinusZeroParameters> >::HashCode() const",93957345084384,93957345084472],["v8::internal::compiler::Operator1<v8::internal::compiler::BigIntOperationHint, v8::internal::compiler::OpEqualTo<v8::internal::compiler::BigIntOperationHint>, v8::internal::compiler::OpHash<v8::internal::compiler::BigIntOperationHint> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345086048,93957345086146],["v8::internal::compiler::Operator1<v8::internal::compiler::FieldAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FieldAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::FieldAccess> >::HashCode() const",93957345087040,93957345087162],["v8::internal::compiler::Operator1<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters> >::HashCode() const",93957345087680,93957345087720],["v8::internal::compiler::StateValuesCache::StateValuesCache(v8::internal::compiler::JSGraph*)",93957345088592,93957345088832],["v8::internal::compiler::StateValuesAccess::iterator::AdvanceTillNotEmpty()",93957345091248,93957345091353],["v8::internal::compiler::PersistentMap<v8::internal::compiler::(anonymous namespace)::UnobservableStore, bool, v8::base::hash<v8::internal::compiler::(anonymous namespace)::UnobservableStore> >::Set(v8::internal::compiler::(anonymous namespace)::UnobservableStore, bool)",93957345097760,93957345099398],["v8::internal::compiler::TypeNarrowingReducer::TypeNarrowingReducer(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*)",93957345103072,93957345103113],["v8::internal::compiler::TypedOptimization::ReduceCheckMaps(v8::internal::compiler::Node*)",93957345108624,93957345109084],["v8::internal::compiler::TypedOptimization::ReduceSameValue(v8::internal::compiler::Node*)",93957345111856,93957345112720],["v8::internal::compiler::TypedOptimization::ReduceSpeculativeNumberComparison(v8::internal::compiler::Node*)",93957345115552,93957345115919],["v8::internal::compiler::(anonymous namespace)::NumberOpFromSpeculativeNumberOp(v8::internal::compiler::SimplifiedOperatorBuilder*, v8::internal::compiler::Operator const*)",93957345117616,93957345117704],["v8::internal::compiler::Typer::Run(v8::internal::ZoneVector<v8::internal::compiler::Node*> const&, v8::internal::compiler::LoopVariableOptimizer*)",93957345117936,93957345118371],["v8::internal::compiler::Typer::Visitor::TypeNode(v8::internal::compiler::Node*)",93957345119744,93957345128306],["v8::internal::compiler::Typer::Visitor::Negate(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345128656,93957345128759],["v8::internal::compiler::Typer::Visitor::ToString(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345129440,93957345129577],["v8::internal::compiler::Typer::Visitor::ObjectIsCallable(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345129920,93957345130038],["v8::internal::compiler::Typer::Visitor::NumberIsNaN(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345130448,93957345130566],["v8::internal::compiler::Typer::Visitor::ObjectIsSmi(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345130960,93957345131018],["v8::internal::compiler::Typer::Visitor::Operand(v8::internal::compiler::Node*, int)",93957345131408,93957345131516],["v8::internal::compiler::Typer::Visitor::JSLessThanTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345132544,93957345132619],["v8::internal::compiler::Typer::Visitor::JSBitwiseOrTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345132912,93957345133136],["v8::internal::compiler::Typer::Visitor::JSShiftRightTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345133808,93957345134032],["v8::internal::compiler::Typer::Visitor::JSMultiplyTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345134848,93957345135072],["v8::internal::compiler::Typer::Visitor::JSCallTyper(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345136832,93957345138146],["v8::internal::compiler::Typer::Visitor::ReferenceEqualTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345138496,93957345138571],["v8::internal::compiler::Typer::Visitor::~Visitor()",93957345138640,93957345138686],["v8::internal::compiler::Typer::Visitor::Reduce(v8::internal::compiler::Node*)",93957345138704,93957345138756],["v8::internal::compiler::Typer::Visitor::TypeHeapConstant(v8::internal::compiler::Node*)",93957345139072,93957345139118],["v8::internal::compiler::Typer::Visitor::TypePhi(v8::internal::compiler::Node*)",93957345139264,93957345139508],["v8::internal::compiler::Typer::Visitor::TypeParameter(v8::internal::compiler::Node*)",93957345141216,93957345141438],["v8::internal::compiler::Typer::Visitor::TypeTypeGuard(v8::internal::compiler::Node*)",93957345141648,93957345141745],["v8::internal::compiler::Typer::Visitor::TypeCheckFloat64Hole(v8::internal::compiler::Node*)",93957345141888,93957345141981],["v8::internal::compiler::Typer::Visitor::TypeCheckNotTaggedHole(v8::internal::compiler::Node*)",93957345142096,93957345142200],["v8::internal::compiler::Typer::Visitor::TypeCheckReceiver(v8::internal::compiler::Node*)",93957345142304,93957345142408],["v8::internal::compiler::Typer::Visitor::TypeCheckSmi(v8::internal::compiler::Node*)",93957345142528,93957345142647],["v8::internal::compiler::Typer::Visitor::TypeCheckSymbol(v8::internal::compiler::Node*)",93957345142768,93957345142872],["v8::internal::compiler::Typer::Visitor::TypeConvertTaggedHoleToUndefined(v8::internal::compiler::Node*)",93957345142976,93957345143069],["v8::internal::compiler::Typer::Visitor::TypeStringToNumber(v8::internal::compiler::Node*)",93957345143280,93957345143374],["v8::internal::compiler::Typer::Visitor::TypeStringFromSingleCharCode(v8::internal::compiler::Node*)",93957345143488,93957345143572],["v8::internal::compiler::Typer::Visitor::TypeJSCreateArguments(v8::internal::compiler::Node*)",93957345143680,93957345143729],["v8::internal::compiler::Typer::Visitor::TypeJSCallRuntime(v8::internal::compiler::Node*)",93957345143808,93957345144736],["v8::internal::compiler::Typer::Visitor::TypeBinaryOp(v8::internal::compiler::Node*, v8::internal::compiler::Type (*)(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*))",93957345144832,93957345144973],["unsigned int v8::internal::compiler::BitsetType::Lub<v8::internal::compiler::MapRef>(v8::internal::compiler::MapRef const&)",93957345145072,93957345145354],["v8::internal::compiler::BitsetType::Min(unsigned int)",93957345145824,93957345146020],["v8::internal::compiler::BitsetType::Max(unsigned int)",93957345146480,93957345146641],["v8::internal::compiler::Type::BitsetLub() const",93957345146976,93957345147214],["v8::internal::compiler::HeapConstantType::Value() const",93957345147312,93957345147326],["v8::internal::compiler::Type::SlowIs(v8::internal::compiler::Type) const",93957345147728,93957345148123],["v8::internal::compiler::Type::GetRange() const",93957345148624,93957345148668],["v8::internal::compiler::UnionType::New(int, v8::internal::Zone*)",93957345149152,93957345149280],["v8::internal::compiler::Type::UpdateRange(v8::internal::compiler::Type, v8::internal::compiler::UnionType*, int, v8::internal::Zone*)",93957345150256,93957345150422],["v8::internal::compiler::Type::NormalizeUnion(v8::internal::compiler::UnionType*, int, v8::internal::Zone*)",93957345150672,93957345151021],["v8::internal::compiler::Type::NormalizeRangeAndBitset(v8::internal::compiler::Type, unsigned int*, v8::internal::Zone*)",93957345151264,93957345151925],["v8::internal::compiler::Type::Constant(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::Zone*)",93957345152336,93957345152624],["v8::internal::compiler::BitsetType::Name(unsigned int)",93957345153136,93957345155192],["v8::internal::compiler::Type::PrintTo(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957345155456,93957345156125],["v8::internal::compiler::BitsetType::SignedSmall()",93957345156176,93957345156187],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(void const*)",93957346641872,93957346642266],["virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()",93957346642944,93957346642968],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::overflow(int)",93957346644528,93957346644863],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf()",93957346645936,93957346645964],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int)",93957346646736,93957346647292],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync()",93957346647856,93957346648340],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::seekpos(std::__1::fpos<__mbstate_t>, unsigned int)",93957346648752,93957346648771],["non-virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream()",93957346649024,93957346649137],["virtual thunk to std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream()",93957346649280,93957346649412],["std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_ostringstream()",93957346649520,93957346649619],["virtual thunk to std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_ostringstream()",93957346649744,93957346649858],["std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_istringstream()",93957346649968,93957346650067],["virtual thunk to std::__1::basic_istringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_istringstream()",93957346650192,93957346650306],["std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream()",93957346650384,93957346650454],["virtual thunk to std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream()",93957346650544,93957346650628],["imaxdiv",139871563517440,139871563517449],["initstate_r",139871563519120,139871563519495],["erand48",139871563520064,139871563520130],["jrand48",139871563520384,139871563520449],["lcong48",139871563520512,139871563520524],["erand48_r",139871563520544,139871563520644],["nrand48_r",139871563520688,139871563520750],["jrand48_r",139871563520784,139871563520829],["fputwc_unlocked",139871563748288,139871563748410],["vswscanf",139871563753824,139871563753994],["_IO_wdefault_doallocate",139871563756576,139871563756690],["_IO_adjust_wcolumn",139871563758160,139871563758211],["_IO_wfile_seekoff",139871563762816,139871563765054],["_IO_wfile_xsputn",139871563767120,139871563767494],["feof",139871563769680,139871563769909],["freopen",139871563770544,139871563771298],["getchar",139871563771904,139871563772268],["pclose",139871563772688,139871563772693],["rewind",139871563773040,139871563773261],["setlinebuf",139871563773280,139871563773294],["vdprintf",139871563774096,139871563774103],["__vsnprintf",139871563774496,139871563774504],["obstack_printf",139871563775328,139871563775507],["fseeko",139871563775536,139871563775797],["aligned_alloc",139871563828640,139871563828649],["__libc_pvalloc",139871563828720,139871563828809],["malloc_trim",139871563829744,139871563830463],["__libc_mallinfo",139871563830688,139871563830991],["__libc_mallopt",139871563831568,139871563832065],["malloc_info",139871563832176,139871563832231],["mcheck_check_all",139871563832688,139871563832903],["mcheck_pedantic",139871563834608,139871563834636],["tr_break",139871563837008,139871563837009],["muntrace",139871563837424,139871563837554],["_obstack_begin_1",139871563837808,139871563837995],["_obstack_allocated_p",139871563838368,139871563838423],["_obstack_memory_used",139871563838560,139871563838595],["__libc_scratch_buffer_grow",139871563838656,139871563838768],["__libc_scratch_buffer_set_array_size",139871563838944,139871563839118],["__libc_dynarray_emplace_enlarge",139871563839184,139871563839453],["__libc_dynarray_resize",139871563839680,139871563839846],["__libc_alloc_buffer_alloc_array",139871563839936,139871563840034],["__libc_alloc_buffer_copy_bytes",139871563840128,139871563840213],["__libc_alloc_buffer_create_failure",139871563840272,139871563840333],["strcoll",139871563840640,139871563840656],["__strdup",139871563841072,139871563841132],["strerror",139871563841216,139871563841353],["strsignal",139871563842480,139871563842946],["__strtok_r",139871563844960,139871563845077],["bcopy",139871563845824,139871563845832],["ffsl",139871563845856,139871563845875],["strsep",139871563846688,139871563846770],["swab",139871563849200,139871563849239],["memfrob",139871563849520,139871563849553],["argz_append",139871563851216,139871563851315],["__argz_count",139871563851440,139871563851515],["argz_create_sep",139871563851696,139871563851913],["argz_delete",139871563852000,139871563852110],["argz_insert",139871563852192,139871563852461],["argz_add_sep",139871563852544,139871563852737],["envz_entry",139871563853728,139871563853897],["envz_remove",139871563853952,139871563854016],["envz_merge",139871563854304,139871563854497],["basename",139871563854640,139871563854670],["__strxfrm_l",139871563858656,139871563866836],["__strsep_1c",139871563866960,139871563867042],["__strsep_3c",139871563867136,139871563867236],["__strcspn_c2",139871563867296,139871563867337],["__strspn_c1",139871563867408,139871563867441],["__strspn_c3",139871563867504,139871563867569],["__strpbrk_c3",139871563867648,139871563867719],["__strcpy_small",139871563867936,139871563868104],["_dl_sym",139871564537936,139871564537949],["__sigaddset",139871564538752,139871564538777],["realpath",139871564538848,139871564538881],["pthread_cond_broadcast",139871564538992,139871564539027],["f32mulf128",139871565711008,139871565711570],["__nptl_setxid_error.cold",139871566579077,139871566579086],["frame_dummy",139871566579296,139871566579312],["__pthread_initialize_minimal",139871566579808,139871566580671],["__pthread_create_2_1",139871566586240,139871566590290],["__pthread_detach",139871566590352,139871566590443],["pthread_tryjoin_np",139871566590464,139871566590502],["__pthread_clockjoin_np",139871566590528,139871566590539],["__condvar_confirm_wakeup",139871566611168,139871566611248],["__condvar_dec_grefs",139871566611344,139871566611429],["__pthread_cond_destroy_2_0",139871566616112,139871566616131],["__pthread_cond_broadcast_2_0",139871566616512,139871566616613],["pthread_condattr_setpshared",139871566616672,139871566616702],["pthread_spin_init",139871566616832,139871566616841],["__GI___pthread_key_create",139871566617600,139871566617676],["__GI___pthread_testcancel",139871566618896,139871566618958],["__new_sem_init",139871566620304,139871566620356],["__new_sem_getvalue",139871566623008,139871566623016],["do_futex_wait.constprop.0",139871566623552,139871566623745],["__new_sem_post",139871566624656,139871566624764],["__pthread_unregister_cancel_restore",139871566624944,139871566625076],["__pthread_cleanup_pop_restore",139871566625280,139871566625444],["longjmp_alias",139871566625872,139871566625881],["__libc_read",139871566626880,139871566627037],["__libc_recv",139871566627504,139871566627685],["__libc_sendto",139871566628080,139871566628269],["__libc_lseek",139871566628416,139871566628452],["__libc_open",139871566628624,139871566628920],["__libc_pread",139871566629056,139871566629221],["__libc_tcdrain",139871566629408,139871566629571],["__libc_recvmsg",139871566630240,139871566630397],["gsignal",139871566630560,139871566630937],["__flockfile",139871566630960,139871566631047],["__funlockfile",139871566631152,139871566631213],["__h_errno_location",139871566631776,139871566631793],["__libc_current_sigrtmin",139871566631824,139871566631829],["__libc_allocate_rtsig",139871566631856,139871566631861],["__pthread_getaffinity_new",139871566631888,139871566631966],["__pthread_setaffinity_new",139871566631984,139871566632041],["__pthread_attr_getaffinity_new",139871566632064,139871566632236],["__pthread_attr_setaffinity_new",139871566632256,139871566632371],["pthread_cancel_init",139871566632544,139871566632809],["_Unwind_ForcedUnwind",139871566633056,139871566633141],["__pthread_current_priority",139871566634640,139871566634972],["__pthread_tunables_init",139871566638240,139871566638308],["_dl_tunable_set_elision_skip_lock_busy",139871566638336,139871566638346],["_dl_tunable_set_elision_retry_try_xbegin",139871566638368,139871566638378],["__lll_unlock_elision",139871566638816,139871566638862],["v8::DelayedTasksPlatform::~DelayedTasksPlatform()",93957335211264,93957335211411],["ustrenum_count(UEnumeration*, UErrorCode*)",93957335211456,93957335211474],["v8::TerminateTask::RunInternal()",93957335307792,93957335307810],["v8::Serializer::GetWasmModuleTransferId(v8::Isolate*, v8::Local<v8::WasmModuleObject>)",93957335308416,93957335308809],["void std::__1::vector<v8::Global<v8::ArrayBuffer>, std::__1::allocator<v8::Global<v8::ArrayBuffer> > >::__emplace_back_slow_path<v8::Isolate*&, v8::Local<v8::ArrayBuffer>&>(v8::Isolate*&, v8::Local<v8::ArrayBuffer>&)",93957335308912,93957335309421],["void std::__1::vector<v8::CompiledWasmModule, std::__1::allocator<v8::CompiledWasmModule> >::__push_back_slow_path<v8::CompiledWasmModule>(v8::CompiledWasmModule&&)",93957335309792,93957335310381],["v8::internal::FactoryBase<v8::internal::Factory>::NewPreparseData(int, int)",93957336832608,93957336832828],["v8::internal::FactoryBase<v8::internal::Factory>::NewRawTwoByteString(int, v8::internal::AllocationType)",93957336834496,93957336834678],["v8::internal::FactoryBase<v8::internal::Factory>::NewSourceTextModuleInfo()",93957336836816,93957336836851],["v8::internal::FactoryBase<v8::internal::Factory>::NewSwissNameDictionaryWithCapacity(int, v8::internal::AllocationType)",93957336837360,93957336837656],["v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawWeakArrayList(int, v8::internal::AllocationType)",93957336838144,93957336838298],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewAccessorPair()",93957336838528,93957336838580],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewFixedArrayWithFiller(v8::internal::Handle<v8::internal::Map>, int, v8::internal::Handle<v8::internal::Oddball>, v8::internal::AllocationType)",93957336838640,93957336838917],["v8::internal::FactoryBase<v8::internal::LocalFactory>::NewFixedArrayWithHoles(int, v8::internal::AllocationType)",93957336838960,93957336839005],["v8::internal::FinalizationRegistryCleanupTask::FinalizationRegistryCleanupTask(v8::internal::Heap*)",93957336914848,93957336914903],["v8::internal::FreeListCategory::FreeListLength()",93957336920048,93957336920099],["v8::internal::GCTracer::NotifyYoungGenerationHandling(v8::internal::YoungGenerationHandling)",93957336921984,93957336922009],["v8::internal::GCTracer::PrintNVP() const",93957336928800,93957336935115],["v8::internal::GCTracer::AddIncrementalMarkingStep(double, unsigned long)",93957336936336,93957336936370],["v8::internal::GCTracer::AverageSurvivalRatio() const",93957336937248,93957336937411],["v8::internal::GCTracer::CompactionSpeedInBytesPerMillisecond() const",93957336938000,93957336938284],["v8::internal::GCTracer::EmbedderSpeedInBytesPerMillisecond() const",93957336938480,93957336938494],["v8::internal::GCTracer::AllocationThroughputInBytesPerMillisecond(double) const",93957336939840,93957336940344],["v8::internal::GCTracer::CurrentOldGenerationAllocationThroughputInBytesPerMillisecond() const",93957336940384,93957336940616],["v8::internal::GCTracer::SurvivalEventsRecorded() const",93957336940864,93957336940880],["v8::internal::GCTracer::NotifyIncrementalMarkingStart()",93957336940912,93957336940944],["std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream()",93957336941472,93957336941581],["v8::internal::MemoryController<v8::internal::V8HeapTrait>::MinimumAllocationLimitGrowingStep(v8::internal::Heap::HeapGrowingMode)",93957336941856,93957336941879],["v8::internal::MemoryController<v8::internal::V8HeapTrait>::CalculateAllocationLimit(v8::internal::Heap*, unsigned long, unsigned long, unsigned long, unsigned long, double, v8::internal::Heap::HeapGrowingMode)",93957336942192,93957336942536],["v8::internal::MemoryController<v8::internal::GlobalMemoryTrait>::CalculateAllocationLimit(v8::internal::Heap*, unsigned long, unsigned long, unsigned long, unsigned long, double, v8::internal::Heap::HeapGrowingMode)",93957336942848,93957336943192],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long>, std::__1::__unordered_map_hasher<v8::internal::AllocationSite, std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long>, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::AllocationSite>, true>, std::__1::__unordered_map_equal<v8::internal::AllocationSite, std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long>, std::__1::equal_to<v8::internal::AllocationSite>, v8::internal::Object::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long> > >::__emplace_unique_key_args<v8::internal::AllocationSite, std::__1::pair<v8::internal::AllocationSite, int> >(v8::internal::AllocationSite const&, std::__1::pair<v8::internal::AllocationSite, int>&&)",93957337052208,93957337053003],["v8::internal::IncrementalMarkingJob::ScheduleTask(v8::internal::Heap*, v8::internal::IncrementalMarkingJob::TaskType)",93957337055888,93957337056313],["v8::internal::IncrementalMarking::IncrementalMarking(v8::internal::Heap*, v8::internal::WeakObjects*)",93957337058384,93957337058594],["v8::internal::IncrementalMarking::WasActivated()",93957337059920,93957337059929],["v8::internal::IncrementalMarking::Start(v8::internal::GarbageCollectionReason)",93957337060064,93957337061274],["v8::internal::IncrementalMarking::StartBlackAllocation()",93957337062112,93957337062270],["v8::internal::IncrementalMarking::RetainMaps()",93957337062416,93957337063346],["v8::internal::IncrementalMarking::UpdateMarkingWorklistAfterScavenge()",93957337063872,93957337064516],["v8::internal::TypedSlotSet* v8::internal::MemoryChunk::AllocateTypedSlotSet<(v8::internal::RememberedSetType)0>()",93957337431616,93957337431699],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::MemoryMeasurement::ScheduleGCTask(v8::MeasureMemoryExecution)::$_1, void ()> >(std::__1::__function::__policy_storage const*)",93957337439360,93957337439517],["v8::internal::SemiSpace::CommittedPhysicalMemory()",93957337443168,93957337443231],["v8::internal::NewSpace::NewSpace(v8::internal::Heap*, v8::PageAllocator*, unsigned long, unsigned long)",93957337445184,93957337446063],["v8::internal::NewSpace::Shrink()",93957337447280,93957337447955],["v8::internal::NewSpace::AddFreshPage()",93957337448160,93957337448518],["v8::internal::NewSpace::GetObjectIterator(v8::internal::Heap*)",93957337449360,93957337449422],["v8::internal::NewSpace::MaximumCommittedMemory()",93957337449824,93957337449844],["v8::internal::NewSpace::Available()",93957337450096,93957337450194],["v8::internal::SemiSpaceObjectIterator::Next()",93957337450256,93957337450435],["v8::internal::ObjectStats::ClearObjectStats(bool)",93957337451280,93957337451457],["v8::internal::PrintJSONArray(unsigned long*, int)",93957337451776,93957337452214],["v8::internal::ObjectStats::DumpInstanceTypeData(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char const*, int)",93957337461264,93957337461690],["v8::internal::ObjectStats::Dump(std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)",93957337461744,93957337469788],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualObjectStats(v8::internal::HeapObject, v8::internal::HeapObject, v8::internal::ObjectStats::VirtualInstanceType, unsigned long, unsigned long, v8::internal::ObjectStatsCollectorImpl::CowMode)",93957337470144,93957337470998],["v8::internal::ObjectStatsCollectorImpl::RecordVirtualAllocationSiteDetails(v8::internal::AllocationSite)",93957337471520,93957337471952],["v8::internal::SpaceWithLinearArea::MarkLabStartInitialized()",93957337599840,93957337599891],["v8::internal::WeakObjects::UpdateWeakObjectsInCode(v8::internal::Worklist<std::__1::pair<v8::internal::HeapObject, v8::internal::Code>, 64>&)",93957337616432,93957337617159],["v8::internal::IC::UpdatePolymorphicIC(v8::internal::Handle<v8::internal::Name>, v8::internal::MaybeObjectHandle const&)",93957337635920,93957337637482],["v8::internal::KeyedStoreIC::UpdateStoreElement(v8::internal::Handle<v8::internal::Map>, v8::internal::KeyedAccessStoreMode, v8::internal::Handle<v8::internal::Map>)",93957337659744,93957337661190],["v8::internal::Stats_Runtime_StoreGlobalIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337679104,93957337679996],["v8::internal::Stats_Runtime_CloneObjectIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337691424,93957337693637],["v8::internal::IC::~IC()",93957337706576,93957337706614],["v8::internal::Bootstrapper::TearDown()",93957337712560,93957337712574],["v8::internal::(anonymous namespace)::CreateFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::InstanceType, int, int, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Builtins::Name)",93957337718672,93957337718975],["v8::internal::Genesis::CreateJSProxyMaps()",93957337725392,93957337726714],["v8::internal::Genesis::TransferNamedProperties(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>)",93957337730976,93957337734119],["v8::internal::(anonymous namespace)::InstallFunctionWithBuiltinId(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, v8::internal::Builtins::Name, int, bool)",93957337788752,93957337788886],["v8::internal::Genesis::InstallTypedArray(char const*, v8::internal::ElementsKind, v8::internal::InstanceType)",93957337791344,93957337792596],["v8::internal::Genesis::CompileExtension(v8::internal::Isolate*, v8::Extension*)",93957337796848,93957337797521],["v8::internal::Genesis::InstallSpecialObjects(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>)",93957337810800,93957337811144],["int v8::internal::BinarySearch<(v8::internal::SearchMode)1, v8::internal::DescriptorArray>(v8::internal::DescriptorArray*, v8::internal::Name, int, int*)",93957337815216,93957337815544],["v8::internal::IsolateAllocator::CommitPagesForIsolate(unsigned long)",93957337817008,93957337817388],["v8::internal::InitializeExternalStartupDataFromFile(char const*)",93957337817808,93957337817818],["v8::internal::V8::InitializeOncePerProcessImpl()",93957337818032,93957337819063],["v8::internal::V8::SetSnapshotBlob(v8::StartupData*)",93957337819248,93957337819377],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::interpreter::BytecodeArrayBuilder::ToSourcePositionTable<v8::internal::Isolate>(v8::internal::Isolate*)",93957337819664,93957337819681],["v8::internal::interpreter::BytecodeArrayBuilder::Receiver() const",93957337820128,93957337820146],["v8::internal::interpreter::BytecodeArrayBuilder::UnaryOperation(v8::internal::Token::Value, int)",93957337826208,93957337827191],["v8::internal::interpreter::BytecodeArrayBuilder::CompareOperation(v8::internal::Token::Value, v8::internal::interpreter::Register, int)",93957337828208,93957337830574],["v8::internal::interpreter::BytecodeArrayBuilder::CompareNull()",93957337831456,93957337831710],["v8::internal::interpreter::BytecodeArrayBuilder::LoadLiteral(v8::internal::Smi)",93957337832352,93957337832815],["v8::internal::interpreter::BytecodeArrayBuilder::LoadLiteral(v8::internal::AstBigInt)",93957337833776,93957337834063],["v8::internal::interpreter::BytecodeArrayBuilder::LoadTrue()",93957337834784,93957337835013],["v8::internal::interpreter::BytecodeArrayBuilder::StoreAccumulatorInRegister(v8::internal::interpreter::Register)",93957337835696,93957337836014],["v8::internal::interpreter::BytecodeArrayBuilder::LoadContextSlot(v8::internal::interpreter::Register, int, int, v8::internal::interpreter::BytecodeArrayBuilder::ContextSlotMutability)",93957337837440,93957337838846],["v8::internal::interpreter::BytecodeArrayBuilder::LoadLookupGlobalSlot(v8::internal::AstRawString const*, v8::internal::TypeofMode, int, int)",93957337840704,93957337841367],["v8::internal::interpreter::BytecodeArrayBuilder::LoadNamedPropertyNoFeedback(v8::internal::interpreter::Register, v8::internal::AstRawString const*)",93957337842656,93957337843054],["v8::internal::interpreter::BytecodeArrayBuilder::GetIterator(v8::internal::interpreter::Register, int, int)",93957337843936,93957337844380],["v8::internal::interpreter::BytecodeArrayBuilder::StoreDataPropertyInLiteral(v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::base::Flags<v8::internal::DataPropertyInLiteralFlag, int>, int)",93957337844832,93957337845315],["v8::internal::interpreter::BytecodeArrayBuilder::StoreNamedProperty(v8::internal::interpreter::Register, unsigned long, int, v8::internal::LanguageMode)",93957337845600,93957337846061],["v8::internal::interpreter::BytecodeArrayBuilder::StoreNamedPropertyNoFeedback(v8::internal::interpreter::Register, v8::internal::AstRawString const*, v8::internal::LanguageMode)",93957337846128,93957337846566],["v8::internal::interpreter::BytecodeArrayBuilder::StoreKeyedProperty(v8::internal::interpreter::Register, v8::internal::interpreter::Register, int, v8::internal::LanguageMode)",93957337847056,93957337847556],["v8::internal::interpreter::BytecodeArrayBuilder::StoreClassFieldsInitializer(v8::internal::interpreter::Register, int)",93957337848080,93957337848138],["v8::internal::interpreter::BytecodeArrayBuilder::CreateClosure(unsigned long, int, int)",93957337848592,93957337848913],["v8::internal::interpreter::BytecodeArrayBuilder::CreateCatchContext(v8::internal::interpreter::Register, v8::internal::Scope const*)",93957337849200,93957337849598],["v8::internal::interpreter::BytecodeArrayBuilder::CreateEvalContext(v8::internal::Scope const*, int)",93957337849936,93957337850262],["v8::internal::interpreter::BytecodeArrayBuilder::CreateArguments(v8::internal::CreateArgumentsType)",93957337850672,93957337851124],["v8::internal::interpreter::BytecodeArrayBuilder::CreateEmptyArrayLiteral(int)",93957337851472,93957337851733],["v8::internal::interpreter::BytecodeArrayBuilder::CreateArrayFromIterable()",93957337852080,93957337852317],["v8::internal::interpreter::BytecodeArrayBuilder::CreateEmptyObjectLiteral()",93957337852656,93957337852868],["v8::internal::interpreter::BytecodeArrayBuilder::GetTemplateObject(unsigned long, int)",93957337853280,93957337853597],["v8::internal::interpreter::BytecodeArrayBuilder::PopContext(v8::internal::interpreter::Register)",93957337854000,93957337854340],["v8::internal::interpreter::BytecodeArrayBuilder::ToName(v8::internal::interpreter::Register)",93957337854720,93957337855085],["v8::internal::interpreter::BytecodeArrayBuilder::ToNumeric(int)",93957337855328,93957337855614],["v8::internal::interpreter::BytecodeArrayBuilder::Bind(v8::internal::interpreter::BytecodeLoopHeader*)",93957337855680,93957337855733],["v8::internal::interpreter::BytecodeArrayBuilder::MarkHandler(int, v8::internal::HandlerTable::CatchPrediction)",93957337855824,93957337855895],["v8::internal::interpreter::BytecodeArrayBuilder::MarkTryEnd(int)",93957337856000,93957337856040],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfTrue(v8::internal::interpreter::BytecodeArrayBuilder::ToBooleanMode, v8::internal::interpreter::BytecodeLabel*)",93957337856304,93957337856759],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfNull(v8::internal::interpreter::BytecodeLabel*)",93957337857232,93957337857499],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfUndefined(v8::internal::interpreter::BytecodeLabel*)",93957337857776,93957337858043],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfNotUndefined(v8::internal::interpreter::BytecodeLabel*)",93957337858320,93957337858587],["v8::internal::interpreter::BytecodeArrayBuilder::JumpIfNotNil(v8::internal::interpreter::BytecodeLabel*, v8::internal::Token::Value, v8::internal::interpreter::BytecodeArrayBuilder::NilValue)",93957337858672,93957337858741],["v8::internal::interpreter::BytecodeArrayBuilder::JumpLoop(v8::internal::interpreter::BytecodeLoopHeader*, int, int)",93957337859024,93957337859316],["v8::internal::interpreter::BytecodeArrayBuilder::SetPendingMessage()",93957337859744,93957337859981],["v8::internal::interpreter::BytecodeArrayBuilder::ReThrow()",93957337860208,93957337860421],["v8::internal::interpreter::BytecodeArrayBuilder::ThrowReferenceErrorIfHole(v8::internal::AstRawString const*)",93957337860656,93957337860927],["v8::internal::interpreter::BytecodeArrayBuilder::ThrowSuperAlreadyCalledIfNotHole()",93957337861152,93957337861365],["v8::internal::interpreter::BytecodeArrayBuilder::Debugger()",93957337861696,93957337861905],["v8::internal::interpreter::BytecodeArrayBuilder::ForInEnumerate(v8::internal::interpreter::Register)",93957337862160,93957337862527],["v8::base::SmallVector<int, 64ul>::Grow()",93957339875136,93957339875148],["v8::internal::RegExpParser::ParseOpenParenthesis(v8::internal::RegExpParser::RegExpParserState*)",93957339885392,93957339886795],["v8::internal::RegExpBuilder::FlushText()",93957339898832,93957339899347],["v8::internal::RegExpParser::Parse(v8::internal::RegExpCompileData*, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&)",93957339908112,93957339908563],["v8::internal::BufferedZoneList<v8::internal::RegExpTree, 2>::GetList(v8::internal::Zone*)",93957339910144,93957339910467],["unsigned int std::__1::__sort4<v8::internal::(anonymous namespace)::RegExpCaptureIndexLess&, v8::internal::RegExpCapture**>(v8::internal::RegExpCapture**, v8::internal::RegExpCapture**, v8::internal::RegExpCapture**, v8::internal::RegExpCapture**, v8::internal::(anonymous namespace)::RegExpCaptureIndexLess&)",93957339912752,93957339912999],["v8::internal::RegExpStack::RegExpStack()",93957339913888,93957339913981],["v8::internal::RegExpUtils::SetLastIndex(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, unsigned long)",93957339914592,93957339914932],["v8::internal::RegExpUtils::IsUnmodifiedRegExp(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957339916352,93957339916827],["v8::internal::RegExpUtils::SetAdvancedStringIndex(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>, bool)",93957339917056,93957339917573],["v8::internal::RegExp::ThrowRegExpException(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::RegExpError)",93957339917728,93957339917959],["v8::internal::RegExp::Compile(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, unsigned int)",93957339917984,93957339919083],["v8::internal::RegExp::EnsureFullyCompiled(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>)",93957339919408,93957339919564],["v8::internal::RegExp::ExperimentalOneshotExec(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::RegExp::ExecQuirks)",93957339919952,93957339919962],["v8::internal::RegExpImpl::AtomExec(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>)",93957339920080,93957339920448],["v8::internal::RegExpImpl::AtomExecRaw(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, int*, int)",93957339921008,93957339922124],["v8::internal::Stats_Runtime_AllocateByteArray(int, unsigned long*, v8::internal::Isolate*)",93957340109392,93957340109951],["v8::internal::Stats_Runtime_AllocateSeqOneByteString(int, unsigned long*, v8::internal::Isolate*)",93957340110160,93957340110752],["v8::internal::Stats_Runtime_AllocateSeqTwoByteString(int, unsigned long*, v8::internal::Isolate*)",93957340110960,93957340111552],["v8::internal::Stats_Runtime_ThrowIteratorError(int, unsigned long*, v8::internal::Isolate*)",93957340111696,93957340112233],["v8::internal::Runtime_ThrowCalledNonCallable(int, unsigned long*, v8::internal::Isolate*)",93957340112992,93957340113135],["v8::internal::Runtime_ThrowPatternAssignmentNonCoercible(int, unsigned long*, v8::internal::Isolate*)",93957340114368,93957340114500],["v8::internal::Runtime_CreateListFromArrayLike(int, unsigned long*, v8::internal::Isolate*)",93957340115728,93957340115874],["v8::internal::Runtime_GetAndResetRuntimeCallStats(int, unsigned long*, v8::internal::Isolate*)",93957340117184,93957340118567],["v8::internal::Runtime_Typeof(int, unsigned long*, v8::internal::Isolate*)",93957340121104,93957340121234],["v8::internal::Runtime_CreateAsyncFromSyncIterator(int, unsigned long*, v8::internal::Isolate*)",93957340122816,93957340123286],["v8::internal::Runtime_ReportMessageFromMicrotask(int, unsigned long*, v8::internal::Isolate*)",93957340125472,93957340125649],["v8::internal::Runtime_DoubleToStringWithRadix(int, unsigned long*, v8::internal::Isolate*)",93957340127520,93957340127952],["v8::internal::Runtime_FormatListToParts(int, unsigned long*, v8::internal::Isolate*)",93957340129744,93957340130019],["v8::internal::Runtime_StringToUpperCaseIntl(int, unsigned long*, v8::internal::Isolate*)",93957340131568,93957340131784],["v8::internal::Runtime_CreateObjectLiteralWithoutAllocationSite(int, unsigned long*, v8::internal::Isolate*)",93957340136000,93957340136363],["v8::internal::Runtime_CreateArrayLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340138288,93957340139887],["v8::internal::(anonymous namespace)::AllocationSiteCreationContext::EnterNewScope()",93957340144368,93957340144707],["v8::internal::(anonymous namespace)::CreateArrayLiteral(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ArrayBoilerplateDescription>, v8::internal::AllocationType)",93957340148016,93957340148833],["v8::internal::Runtime_DynamicImportCall(int, unsigned long*, v8::internal::Isolate*)",93957340154448,93957340155126],["v8::internal::Runtime_GetImportMetaObject(int, unsigned long*, v8::internal::Isolate*)",93957340157152,93957340157401],["v8::internal::Runtime_StringParseInt(int, unsigned long*, v8::internal::Isolate*)",93957340158800,93957340159589],["v8::internal::Runtime_NumberToStringSlow(int, unsigned long*, v8::internal::Isolate*)",93957340162016,93957340162206],["v8::internal::Runtime_IsSmi(int, unsigned long*, v8::internal::Isolate*)",93957340163248,93957340163287],["v8::internal::Runtime_GetHoleNaNLower(int, unsigned long*, v8::internal::Isolate*)",93957340164464,93957340164611],["v8::internal::Runtime::DeleteObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode)",93957340165824,93957340167206],["v8::internal::Stats_Runtime_ObjectGetOwnPropertyNames(int, unsigned long*, v8::internal::Isolate*)",93957340168336,93957340168963],["v8::internal::Stats_Runtime_ObjectHasOwnProperty(int, unsigned long*, v8::internal::Isolate*)",93957340171280,93957340172772],["v8::internal::Stats_Runtime_IsDictPropertyConstTrackingEnabled(int, unsigned long*, v8::internal::Isolate*)",93957340173872,93957340174328],["v8::internal::Runtime_ObjectCreate(int, unsigned long*, v8::internal::Isolate*)",93957340175344,93957340175633],["v8::internal::Runtime::SetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::StoreOrigin, v8::Maybe<v8::internal::ShouldThrow>)",93957340176320,93957340176684],["v8::internal::Stats_Runtime_InternalSetPrototype(int, unsigned long*, v8::internal::Isolate*)",93957340176912,93957340177521],["v8::internal::Stats_Runtime_OptimizeObjectForAddingMultipleProperties(int, unsigned long*, v8::internal::Isolate*)",93957340177872,93957340178587],["v8::internal::Stats_Runtime_ObjectValues(int, unsigned long*, v8::internal::Isolate*)",93957340178848,93957340179496],["v8::internal::Stats_Runtime_ObjectValuesSkipFastPath(int, unsigned long*, v8::internal::Isolate*)",93957340179760,93957340180405],["v8::internal::Stats_Runtime_ObjectEntries(int, unsigned long*, v8::internal::Isolate*)",93957340180672,93957340181320],["v8::internal::Stats_Runtime_ObjectEntriesSkipFastPath(int, unsigned long*, v8::internal::Isolate*)",93957340181584,93957340182229],["v8::internal::Stats_Runtime_ObjectIsExtensible(int, unsigned long*, v8::internal::Isolate*)",93957340182464,93957340183080],["v8::internal::Stats_Runtime_JSReceiverPreventExtensionsThrow(int, unsigned long*, v8::internal::Isolate*)",93957340183312,93957340183915],["v8::internal::Stats_Runtime_JSReceiverPreventExtensionsDontThrow(int, unsigned long*, v8::internal::Isolate*)",93957340184160,93957340184789],["v8::internal::Stats_Runtime_JSReceiverGetPrototypeOf(int, unsigned long*, v8::internal::Isolate*)",93957340185200,93957340185970],["v8::internal::Stats_Runtime_JSReceiverSetPrototypeOfThrow(int, unsigned long*, v8::internal::Isolate*)",93957340186208,93957340186820],["v8::internal::Stats_Runtime_JSReceiverSetPrototypeOfDontThrow(int, unsigned long*, v8::internal::Isolate*)",93957340187088,93957340187726],["v8::internal::Stats_Runtime_GetProperty(int, unsigned long*, v8::internal::Isolate*)",93957340189152,93957340191020],["v8::internal::Stats_Runtime_SetKeyedProperty(int, unsigned long*, v8::internal::Isolate*)",93957340191184,93957340191736],["v8::internal::Stats_Runtime_SetNamedProperty(int, unsigned long*, v8::internal::Isolate*)",93957340191920,93957340192475],["v8::internal::Stats_Runtime_StoreDataPropertyInLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340192832,93957340193558],["v8::internal::Stats_Runtime_DeleteProperty(int, unsigned long*, v8::internal::Isolate*)",93957340193888,93957340194570],["v8::internal::Stats_Runtime_ShrinkPropertyDictionary(int, unsigned long*, v8::internal::Isolate*)",93957340194912,93957340195605],["v8::internal::Stats_Runtime_HasProperty(int, unsigned long*, v8::internal::Isolate*)",93957340195936,93957340196641],["v8::internal::Stats_Runtime_GetOwnPropertyKeys(int, unsigned long*, v8::internal::Isolate*)",93957340196960,93957340197644],["v8::internal::Stats_Runtime_ToFastProperties(int, unsigned long*, v8::internal::Isolate*)",93957340197888,93957340198490],["v8::internal::Stats_Runtime_AllocateHeapNumber(int, unsigned long*, v8::internal::Isolate*)",93957340198640,93957340199150],["v8::internal::Stats_Runtime_NewObject(int, unsigned long*, v8::internal::Isolate*)",93957340199440,93957340200114],["v8::internal::Stats_Runtime_GetDerivedMap(int, unsigned long*, v8::internal::Isolate*)",93957340200416,93957340201091],["v8::internal::Stats_Runtime_CompleteInobjectSlackTrackingForMap(int, unsigned long*, v8::internal::Isolate*)",93957340201328,93957340201929],["v8::internal::Stats_Runtime_TryMigrateInstance(int, unsigned long*, v8::internal::Isolate*)",93957340202176,93957340202799],["v8::internal::Stats_Runtime_DefineAccessorPropertyUnchecked(int, unsigned long*, v8::internal::Isolate*)",93957340203344,93957340204271],["v8::internal::Stats_Runtime_DefineDataPropertyInLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340205536,93957340207136],["v8::internal::Stats_Runtime_CollectTypeProfile(int, unsigned long*, v8::internal::Isolate*)",93957340207680,93957340208611],["v8::internal::Stats_Runtime_HasFastPackedElements(int, unsigned long*, v8::internal::Isolate*)",93957340208736,93957340209259],["v8::internal::Serializer::TotalAllocationSize() const",93957340544736,93957340544766],["v8::internal::Serializer::SerializeDeferredObjects()",93957340545040,93957340545660],["v8::internal::Serializer::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957340545888,93957340546035],["v8::internal::Serializer::SerializeRoot(v8::internal::Handle<v8::internal::HeapObject>)",93957340546160,93957340546291],["v8::internal::Serializer::SerializeHotObject(v8::internal::Handle<v8::internal::HeapObject>)",93957340546560,93957340546774],["v8::internal::Serializer::PutPendingForwardReference(std::__1::vector<int, std::__1::allocator<int> >*&)",93957340547088,93957340547456],["v8::internal::Serializer::Pad(int)",93957340547712,93957340547846],["_ZNSt3__16vectorIhNS_9allocatorIhEEE6insertIPhEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIhNS_15iterator_traitsIS7_E9referenceEEE5valueENS_11__wrap_iterIS5_EEE4typeENSB_IPKhEES7_S7_",93957340548144,93957340549741],["v8::internal::Serializer::ObjectSerializer::SerializeBackingStore(void*, int)",93957340550352,93957340550559],["v8::internal::Serializer::ObjectSerializer::SerializeObject()",93957340550720,93957340550995],["v8::internal::Serializer::ObjectSerializer::SerializeExternalString()",93957340551264,93957340551418],["v8::internal::Serializer::ObjectSerializer::Serialize()",93957340551904,93957340552965],["v8::internal::UnlinkWeakNextScope::UnlinkWeakNextScope(v8::internal::Heap*, v8::internal::Handle<v8::internal::HeapObject>)",93957340553216,93957340553500],["v8::internal::Serializer::ObjectSerializer::OutputRawData(unsigned long)",93957340554192,93957340554679],["v8::internal::Serializer::ObjectSerializer::OutputExternalReference(unsigned long, int, bool)",93957340556656,93957340556971],["v8::internal::Serializer::ObjectSerializer::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957340557024,93957340557034],["v8::internal::Serializer::ObjectSerializer::VisitInternalReference(v8::internal::Code, v8::internal::RelocInfo*)",93957340557120,93957340557191],["void v8::internal::RelocInfo::Visit<v8::internal::Serializer::ObjectSerializer::RelocInfoObjectPreSerializer>(v8::internal::Serializer::ObjectSerializer::RelocInfoObjectPreSerializer*)",93957340557328,93957340557560],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<void*, v8::internal::SerializerReference>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<void*, v8::internal::SerializerReference>, std::__1::__unordered_map_hasher<void*, std::__1::__hash_value_type<void*, v8::internal::SerializerReference>, std::__1::hash<void*>, std::__1::equal_to<void*>, true>, std::__1::__unordered_map_equal<void*, std::__1::__hash_value_type<void*, v8::internal::SerializerReference>, std::__1::equal_to<void*>, std::__1::hash<void*>, true>, std::__1::allocator<std::__1::__hash_value_type<void*, v8::internal::SerializerReference> > >::__emplace_unique_key_args<void*, void*&, v8::internal::SerializerReference&>(void* const&, void*&, v8::internal::SerializerReference&)",93957340557600,93957340558483],["v8::internal::CodeAddressMap::~CodeAddressMap()",93957340558688,93957340558882],["v8::internal::CodeAddressMap::LogRecordedBuffer(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo>, char const*, int)",93957340559280,93957340559898],["v8::internal::Serializer::ObjectSerializer::RelocInfoObjectPreSerializer::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957340560192,93957340560372],["v8::internal::SnapshotCompression::Decompress(v8::internal::Vector<unsigned char const>)",93957340560656,93957340560884],["v8::internal::SnapshotData::SnapshotData(v8::internal::Serializer const*)",93957340561008,93957340561391],["v8_inspector::V8Debugger::shouldContinueToCurrentLocation()",93957342535968,93957342536412],["v8_inspector::V8Debugger::asyncTaskCanceledForStack(void*)",93957342540080,93957342540295],["v8_inspector::V8Debugger::queryObjects(v8::Local<v8::Context>, v8::Local<v8::Object>)",93957342542832,93957342543283],["v8_inspector::V8Debugger::stackTraceFor(int, v8_inspector::V8StackTraceId const&)",93957342544512,93957342545026],["v8_inspector::V8Debugger::collectOldAsyncStacksIfNeeded()",93957342546016,93957342546600],["v8_inspector::V8Debugger::externalAsyncTaskStarted(v8_inspector::V8StackTraceId const&)",93957342546784,93957342547375],["v8_inspector::V8Debugger::asyncTaskScheduled(v8_inspector::StringView const&, void*, bool)",93957342547568,93957342547660],["v8_inspector::V8Debugger::asyncTaskStarted(void*)",93957342547760,93957342547793],["v8_inspector::UTF16ToUTF8(unsigned short const*, unsigned long)",93957342740528,93957342741129],["v8_crdtp::cbor::CBORTokenizer::Next()",93957342750624,93957342750650],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleMapBegin()",93957342751696,93957342751950],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleBool(bool)",93957342752976,93957342753243],["v8_crdtp::cbor::(anonymous namespace)::ParseArray(int, v8_crdtp::cbor::CBORTokenizer*, v8_crdtp::ParserHandler*)",93957342754576,93957342754763],["v8_crdtp::DispatchResponse::InvalidParams(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957342755072,93957342755109],["v8_crdtp::Dispatchable::MaybeParseProperty(v8_crdtp::cbor::CBORTokenizer*)",93957342755760,93957342756200],["v8_crdtp::CreateErrorResponse(int, v8_crdtp::DispatchResponse, v8_crdtp::ErrorSupport const*)",93957342756512,93957342757163],["v8_crdtp::DomainDispatcher::WeakPtr::~WeakPtr()",93957342757312,93957342757431],["v8_crdtp::DomainDispatcher::Callback::~Callback()",93957342757632,93957342757660],["v8_crdtp::DomainDispatcher::Callback::sendIfActive(std::__1::unique_ptr<v8_crdtp::Serializable, std::__1::default_delete<v8_crdtp::Serializable> >, v8_crdtp::DispatchResponse const&)",93957342757808,93957342758003],["v8_crdtp::DomainDispatcher::Callback::fallThroughIfActive()",93957342758304,93957342758512],["v8_crdtp::DomainDispatcher::~DomainDispatcher()",93957342758560,93957342758895],["v8_crdtp::DomainDispatcher::weakPtr()",93957342759120,93957342759185],["v8_crdtp::UberDispatcher::UberDispatcher(v8_crdtp::FrontendChannel*)",93957342759280,93957342759315],["v8_crdtp::UberDispatcher::~UberDispatcher()",93957342759472,93957342759603],["v8::internal::compiler::InstructionSelector::VisitIfException(v8::internal::compiler::Node*)",93957342955776,93957342955942],["v8::internal::compiler::InstructionSelector::EmitWordPoisonOnSpeculation(v8::internal::compiler::Node*)",93957342961680,93957342962155],["void std::__1::__stable_sort<v8::internal::compiler::SwitchInfo::CasesSortedByValue() const::{lambda(v8::internal::compiler::CaseInfo, v8::internal::compiler::CaseInfo)#1}&, std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*> >(std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*>, std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*>, v8::internal::compiler::SwitchInfo::CasesSortedByValue() const::{lambda(v8::internal::compiler::CaseInfo, v8::internal::compiler::CaseInfo)#1}&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*> >::difference_type, std::__1::iterator_traits::value_type*, long)",93957342971600,93957342972144],["v8::internal::compiler::CommuteFlagsCondition(v8::internal::compiler::FlagsCondition)",93957342976912,93957342977071],["v8::internal::compiler::Instruction::AreMovesRedundant() const",93957342980960,93957342981382],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::AddressingMode const&)",93957342988512,93957342988905],["v8::internal::compiler::Constant::Constant(int)",93957342990160,93957342990183],["v8::internal::compiler::PhiInstruction::RenameInput(unsigned long, int)",93957342990736,93957342990749],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::RpoNumber const&)",93957342992816,93957342992829],["v8::internal::compiler::InstructionSequence::ComputeAssemblyOrder()",93957342996416,93957342999406],["v8::internal::compiler::InstructionSequence::NextVirtualRegister()",93957342999696,93957342999741],["v8::internal::compiler::InstructionSequence::EndBlock(v8::internal::compiler::RpoNumber)",93957342999808,93957342999873],["v8::internal::compiler::InstructionSequence::GetInstructionBlock(int) const",93957343000432,93957343000479],["v8::internal::compiler::InstructionSequence::MarkAsRepresentation(v8::internal::MachineRepresentation, int)",93957343000528,93957343000692],["v8::internal::compiler::InstructionSequence::GetDeoptimizationEntry(int)",93957343001152,93957343001172],["v8::internal::compiler::InstructionSequence::GetSourcePosition(v8::internal::compiler::Instruction const*, v8::internal::SourcePosition*) const",93957343001312,93957343001392],["v8::internal::compiler::TopTierRegisterAllocationData::AddGapMove(int, v8::internal::compiler::Instruction::GapPosition, v8::internal::compiler::InstructionOperand const&, v8::internal::compiler::InstructionOperand const&)",93957343098656,93957343098832],["v8::internal::compiler::RegisterAllocator::FindOptimalSpillingPos(v8::internal::compiler::LiveRange*, v8::internal::compiler::LifetimePosition, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode, v8::internal::compiler::LiveRange**)",93957343127872,93957343128456],["v8::internal::compiler::LinearScanAllocator::PickRegisterThatIsAvailableLongest(v8::internal::compiler::LiveRange*, int, v8::internal::Vector<v8::internal::compiler::LifetimePosition> const&)",93957343150896,93957343151442],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::LiveRange*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::LinearScanAllocator::UpdateDeferredFixedRanges(v8::internal::compiler::TopTierRegisterAllocationData::SpillMode, v8::internal::compiler::InstructionBlock*)::$_3::operator()(v8::internal::compiler::LiveRange*) const::{lambda(v8::internal::compiler::LiveRange*)#1}, void (v8::internal::compiler::LiveRange*)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::LiveRange*)",93957343169776,93957343169809],["v8::internal::compiler::SpillPlacer::Add(v8::internal::compiler::TopLevelLiveRange*)",93957343174224,93957343175145],["v8::internal::compiler::BranchElimination::BranchElimination(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::Zone*, v8::internal::compiler::BranchElimination::Phase)",93957343182704,93957343182990],["v8::internal::compiler::BranchElimination::SimplifyBranchCondition(v8::internal::compiler::Node*)",93957343185968,93957343186734],["v8::internal::compiler::BytecodeLoopAssignments::ContainsParameter(int) const",93957343188352,93957343188409],["v8::internal::compiler::(anonymous namespace)::UpdateLiveness(v8::internal::interpreter::Bytecode, v8::internal::compiler::BytecodeLiveness const&, v8::internal::compiler::BytecodeLivenessState**, v8::internal::interpreter::BytecodeArrayIterator const&, v8::internal::Handle<v8::internal::BytecodeArray>, v8::internal::compiler::BytecodeLivenessMap const&)",93957343196480,93957343196846],["v8::internal::compiler::BytecodeAnalysis::IsLoopHeader(int) const",93957343201440,93957343201514],["v8::internal::compiler::BytecodeAnalysis::GetOutLivenessFor(int) const",93957343201760,93957343201792],["v8::internal::compiler::BytecodeGraphBuilder::Environment::BindAccumulator(v8::internal::compiler::Node*, v8::internal::compiler::BytecodeGraphBuilder::Environment::FrameStateAttachmentMode)",93957343204176,93957343204352],["v8::internal::compiler::BytecodeGraphBuilder::MergeControl(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343205520,93957343205704],["v8::internal::compiler::BytecodeGraphBuilder::Environment::FillWithOsrValues()",93957343208816,93957343209082],["v8::internal::compiler::BytecodeGraphBuilder::BuildLoadFeedbackCell()",93957343211520,93957343211726],["v8::internal::compiler::BytecodeGraphBuilder::MaybeBuildIncrementInvocationCount()",93957343212688,93957343212978],["v8::internal::compiler::BytecodeGraphBuilder::AdvanceIteratorsTo(int)",93957343214032,93957343214344],["v8::internal::compiler::BytecodeGraphBuilder::BuildIterationBodyStackCheck()",93957343214512,93957343214697],["v8::internal::compiler::BytecodeGraphBuilder::AdvanceToOsrEntryAndPeelLoops()",93957343214816,93957343216391],["v8::internal::compiler::BytecodeGraphBuilder::VisitSingleBytecode()",93957343217872,93957343222289],["v8::internal::compiler::BytecodeGraphBuilder::BuildLoopHeaderEnvironment(int)",93957343222976,93957343223600],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaSmi()",93957343223680,93957343223769],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaNull()",93957343223856,93957343223925],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaTrue()",93957343224016,93957343224085],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaConstant()",93957343224176,93957343224320],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaGlobalInsideTypeof()",93957343224720,93957343225114],["v8::internal::compiler::BytecodeGraphBuilder::VisitPushContext()",93957343225696,93957343225861],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaContextSlot()",93957343225936,93957343226124],["v8::internal::compiler::BytecodeGraphBuilder::VisitLdaCurrentContextSlot()",93957343226320,93957343226436],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaContextSlot()",93957343226576,93957343226779],["v8::internal::compiler::BytecodeGraphBuilder::VisitStaLookupSlot()",93957343226928,93957343227322],["v8::internal::compiler::BytecodeGraphBuilder::VisitStar()",93957343227424,93957343227556],["v8::internal::compiler::MemoryLowering::reducer_name() const",93957344582096,93957344582109],["v8::internal::compiler::NodeProperties::NoObservableSideEffectBetween(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344599616,93957344599768],["v8::internal::compiler::Node::Print(int) const",93957344605728,93957344605979],["v8::internal::compiler::OperationTyper::ToNumberConvertBigInt(v8::internal::compiler::Type)",93957344609824,93957344609948],["v8::internal::compiler::OperationTyper::NumberToUint32(v8::internal::compiler::Type)",93957344611552,93957344611738],["v8::internal::compiler::OperationTyper::SpeculativeSafeIntegerSubtract(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344613296,93957344613418],["v8::internal::compiler::OperationTyper::NumberShiftLeft(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344616528,93957344616799],["v8::internal::compiler::OperationTyper::SpeculativeNumberDivide(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344618592,93957344618692],["v8::internal::compiler::OperationTyper::SpeculativeNumberShiftRight(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344619264,93957344619364],["v8::internal::compiler::OperationTyper::SameValue(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344619552,93957344620054],["v8::internal::compiler::OperationTyper::CheckBounds(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344620944,93957344621167],["v8::internal::compiler::OperationTyper::ConvertTaggedHoleToUndefined(v8::internal::compiler::Type)",93957344621344,93957344621420],["v8::internal::compiler::OperatorProperties::HasFrameStateInput(v8::internal::compiler::Operator const*)",93957344621888,93957344621948],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator const&)",93957344622192,93957344622225],["v8::internal::compiler::OsrHelper::SetupFrame(v8::internal::compiler::Frame*)",93957344623216,93957344623238],["v8::internal::compiler::PipelineStatistics::~PipelineStatistics()",93957344623776,93957344624041],["v8::internal::compiler::PipelineStatistics::BeginPhase(char const*)",93957344624640,93957344624888],["v8::internal::compiler::PipelineCompilationJob::PipelineCompilationJob(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::BytecodeOffset, v8::internal::JavaScriptFrame*, v8::internal::CodeKind)",93957344625216,93957344625707],["v8::internal::compiler::PipelineData::PipelineData(v8::internal::compiler::ZoneStats*, v8::internal::Isolate*, v8::internal::OptimizedCompilationInfo*, v8::internal::compiler::PipelineStatistics*, bool)",93957344626064,93957344627751],["v8::internal::compiler::PipelineData::~PipelineData()",93957344627872,93957344628482],["v8::internal::compiler::PipelineCompilationJob::PrepareJobImpl(v8::internal::Isolate*)",93957344628624,93957344629194],["v8::internal::compiler::PipelineImpl::Serialize()",93957344629648,93957344630516],["v8::internal::compiler::PipelineCompilationJob::ExecuteJobImpl(v8::internal::RuntimeCallStats*, v8::internal::LocalIsolate*)",93957344631088,93957344631312],["v8::internal::compiler::PipelineImpl::OptimizeGraph(v8::internal::compiler::Linkage*)",93957344632352,93957344634123],["v8::internal::compiler::PipelineCompilationJob::FinalizeJobImpl(v8::internal::Isolate*)",93957344634832,93957344635251],["v8::internal::compiler::PipelineCompilationJob::RegisterWeakObjectsInOptimizedCode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::Code>)",93957344637392,93957344638212],["v8::internal::compiler::Pipeline::NewWasmHeapStubCompilationJob(v8::internal::Isolate*, v8::internal::wasm::WasmEngine*, v8::internal::compiler::CallDescriptor*, std::__1::unique_ptr<v8::internal::Zone, std::__1::default_delete<v8::internal::Zone> >, v8::internal::compiler::Graph*, v8::internal::CodeKind, std::__1::unique_ptr<char [], std::__1::default_delete<char []> >, v8::internal::AssemblerOptions const&, v8::internal::compiler::SourcePositionTable*)",93957344638928,93957344639043],["v8::internal::CodeTracer::StreamScope::~StreamScope()",93957344640656,93957344640912],["v8::internal::compiler::WasmHeapStubCompilationJob::FinalizeJobImpl(v8::internal::Isolate*)",93957344641312,93957344641444],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::VerifyGraphPhase, bool&>(bool&)",93957344641872,93957344642302],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::SerializationPhase>()",93957344642768,93957344643136],["void v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::InliningPhase>()",93957344643536,93957344643921],["void v8::internal::compiler::RepresentationSelector::VisitCheckBounds<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957344946528,93957344948445],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberTanh()",93957345040752,93957345040766],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberIsMinusZero()",93957345041520,93957345041534],["v8::internal::compiler::SimplifiedOperatorBuilder::StringFromCodePointAt()",93957345042032,93957345042046],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedInt32ToTaggedSigned(v8::internal::compiler::FeedbackSource const&)",93957345043184,93957345043384],["v8::internal::compiler::SimplifiedOperatorBuilder::UpdateInterruptBudget(int)",93957345046432,93957345046557],["v8::internal::compiler::SimplifiedOperatorBuilder::ConvertReceiver(v8::internal::ConvertReceiverMode)",93957345050416,93957345050478],["v8::internal::compiler::SimplifiedOperatorBuilder::NewArgumentsElements(v8::internal::CreateArgumentsType, int)",93957345052752,93957345052900],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberShiftLeft(v8::internal::compiler::NumberOperationHint)",93957345054160,93957345054242],["v8::internal::compiler::SimplifiedOperatorBuilder::LoadField(v8::internal::compiler::FieldAccess const&)",93957345054928,93957345055163],["v8::internal::compiler::SimplifiedOperatorBuilder::LoadDataViewElement(v8::internal::ExternalArrayType const&)",93957345056336,93957345056464],["v8::internal::compiler::SimplifiedOperatorBuilder::TransitionAndStoreNonNumberElement(v8::internal::Handle<v8::internal::Map>, v8::internal::compiler::Type)",93957345057216,93957345057357],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckIfParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckIfParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckIfParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957345083984,93957345084024],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckFloat64HoleParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckFloat64HoleParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckFloat64HoleParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345084864,93957345085012],["v8::internal::compiler::Operator1<v8::internal::compiler::DynamicCheckMapsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::DynamicCheckMapsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::DynamicCheckMapsParameters> >::HashCode() const",93957345085776,93957345085849],["v8::internal::compiler::Operator1<v8::internal::AllocationType, v8::internal::compiler::OpEqualTo<v8::internal::AllocationType>, v8::internal::compiler::OpHash<v8::internal::AllocationType> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345086384,93957345086553],["v8::internal::compiler::Operator1<v8::internal::compiler::AllocateParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::AllocateParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::AllocateParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345086864,93957345086938],["v8::internal::compiler::Operator1<v8::internal::compiler::ElementAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ElementAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ElementAccess> >::HashCode() const",93957345087232,93957345087330],["v8::internal::compiler::Operator1<v8::internal::compiler::ObjectAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ObjectAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ObjectAccess> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345087552,93957345087624],["v8::internal::compiler::Operator1<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNumberElementParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNumberElementParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNumberElementParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345087888,93957345087990],["v8::internal::compiler::Operator1<v8::internal::compiler::FastApiCallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FastApiCallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::FastApiCallParameters> >::HashCode() const",93957345088288,93957345088442],["v8::internal::compiler::StateValuesCache::IsKeysEqualToNode(v8::internal::compiler::StateValuesCache::StateValuesKey*, v8::internal::compiler::Node*)",93957345089024,93957345089362],["v8::internal::compiler::StateValuesAccess::iterator::iterator(v8::internal::compiler::Node*)",93957345090768,93957345090898],["v8::internal::compiler::StateValuesAccess::iterator::operator++()",93957345091424,93957345091471],["v8::internal::compiler::StoreStoreElimination::Run(v8::internal::compiler::JSGraph*, v8::internal::TickCounter*, v8::internal::Zone*)",93957345092176,93957345093757],["v8::internal::compiler::PersistentMap<v8::internal::compiler::(anonymous namespace)::UnobservableStore, bool, v8::base::hash<v8::internal::compiler::(anonymous namespace)::UnobservableStore> >::begin() const",93957345100032,93957345100298],["v8::internal::compiler::TypeCache::Get()",93957345101344,93957345101416],["v8::internal::compiler::TypeNarrowingReducer::reducer_name() const",93957345106224,93957345106237],["v8::internal::compiler::TypedOptimization::ReduceMaybeGrowFastElements(v8::internal::compiler::Node*)",93957345107680,93957345108416],["v8::internal::compiler::TypedOptimization::ReduceLoadField(v8::internal::compiler::Node*)",93957345109344,93957345109594],["v8::internal::compiler::TypedOptimization::ReduceStringComparison(v8::internal::compiler::Node*)",93957345110592,93957345111394],["v8::internal::compiler::TypedOptimization::ReduceTypeOf(v8::internal::compiler::Node*)",93957345113264,93957345113748],["v8::internal::compiler::TypedOptimization::ReduceSpeculativeNumberBinop(v8::internal::compiler::Node*)",93957345115008,93957345115538],["v8::internal::compiler::TypedOptimization::TryReduceStringComparisonOfStringFromSingleCharCodeToConstant(v8::internal::compiler::Node*, v8::internal::compiler::StringRef const&, bool)",93957345115920,93957345116114],["v8::internal::compiler::TypedOptimization::ReduceJSToNumberInput(v8::internal::compiler::Node*)",93957345116960,93957345117608],["v8::internal::compiler::TypedOptimization::reducer_name() const",93957345117712,93957345117725],["v8::internal::compiler::Typer::~Typer()",93957345117904,93957345117925],["v8::internal::compiler::Typer::Visitor::InductionVariablePhiTypeIsPrefixedPoint(v8::internal::compiler::InductionVariable*)",93957345118384,93957345119509],["v8::internal::compiler::Typer::Decorator::Decorate(v8::internal::compiler::Node*)",93957345119552,93957345119743],["v8::internal::compiler::Typer::Visitor::BitwiseNot(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345128320,93957345128423],["v8::internal::compiler::Typer::Visitor::Increment(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345128544,93957345128647],["v8::internal::compiler::Typer::Visitor::ToInteger(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345128768,93957345128947],["v8::internal::compiler::Typer::Visitor::ToName(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345129152,93957345129425],["v8::internal::compiler::Typer::Visitor::ToObject(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345129584,93957345129711],["v8::internal::compiler::Typer::Visitor::ObjectIsBigInt(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345129792,93957345129910],["v8::internal::compiler::Typer::Visitor::ObjectIsConstructor(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345130048,93957345130192],["v8::internal::compiler::Typer::Visitor::NumberIsMinusZero(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345130320,93957345130438],["v8::internal::compiler::Typer::Visitor::ObjectIsNonCallable(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345130576,93957345130694],["v8::internal::compiler::Typer::Visitor::ObjectIsReceiver(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345130832,93957345130950],["v8::internal::compiler::Typer::Visitor::ObjectIsString(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345131024,93957345131142],["v8::internal::compiler::Typer::Visitor::ObjectIsUndetectable(v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345131280,93957345131398],["v8::internal::compiler::Typer::Visitor::JSEqualTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345131520,93957345131894],["v8::internal::compiler::Typer::Visitor::NumberCompareTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345132256,93957345132537],["v8::internal::compiler::Typer::Visitor::JSGreaterThanTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345132624,93957345132708],["v8::internal::compiler::Typer::Visitor::JSGreaterThanOrEqualTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345132816,93957345132900],["v8::internal::compiler::Typer::Visitor::JSBitwiseAndTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345133136,93957345133360],["v8::internal::compiler::Typer::Visitor::JSShiftLeftTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345133584,93957345133808],["v8::internal::compiler::Typer::Visitor::JSShiftRightLogicalTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345134032,93957345134101],["v8::internal::compiler::Typer::Visitor::JSSubtractTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345134624,93957345134848],["v8::internal::compiler::Typer::Visitor::JSDivideTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345135072,93957345135296],["v8::internal::compiler::Typer::Visitor::Weaken(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::Type)",93957345135520,93957345136831],["v8::internal::compiler::Typer::Visitor::NumberEqualTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345138160,93957345138228],["v8::internal::compiler::Typer::Visitor::NumberLessThanOrEqualTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345138352,93957345138481],["v8::internal::compiler::Typer::Visitor::SameValueTyper(v8::internal::compiler::Type, v8::internal::compiler::Type, v8::internal::compiler::Typer*)",93957345138576,93957345138599],["std::__1::basic_ostream<wchar_t, std::__1::char_traits<wchar_t> >::sentry::~sentry()",93957346642784,93957346642919],["non-virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()",93957346643008,93957346643041],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::underflow()",93957346644352,93957346644417],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::open(char const*, unsigned int)",93957346645104,93957346645350],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf()",93957346645728,93957346645925],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow()",93957346645968,93957346646590],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::pbackfail(int)",93957346646656,93957346646730],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long)",93957346647296,93957346647555],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekpos(std::__1::fpos<__mbstate_t>, unsigned int)",93957346647760,93957346647852],["std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&)",93957346648352,93957346648594],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringbuf()",93957346648672,93957346648739],["std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream()",93957346648784,93957346648900],["quick_exit",139871563516992,139871563517012],["mbtowc",139871563517712,139871563517857],["random",139871563518624,139871563518815],["random_r",139871563519728,139871563519876],["drand48",139871563519984,139871563520053],["lrand48",139871563520144,139871563520212],["mrand48",139871563520304,139871563520372],["srand48",139871563520464,139871563520476],["_IO_getline_info",139871563741616,139871563742032],["fputws_unlocked",139871563750016,139871563750159],["wscanf",139871563753008,139871563753208],["_IO_switch_to_wbackup_area",139871563755024,139871563755073],["_IO_wdefault_xsputn",139871563756000,139871563756404],["_IO_free_wbackup_area",139871563756832,139871563756937],["_IO_sputbackwc",139871563757904,139871563758031],["_IO_wmarker_delta",139871563758336,139871563758402],["_IO_wfile_underflow",139871563760848,139871563762572],["_IO_wdo_write",139871563765488,139871563765998],["_IO_wfile_sync",139871563766720,139871563767108],["fwide",139871563768576,139871563768988],["clearerr",139871563769456,139871563769677],["ferror",139871563769920,139871563770149],["fputc",139871563770208,139871563770540],["fseek",139871563771312,139871563771573],["__libc_dlsym",139871564535936,139871564536097],["_dl_signal_error",139871564538240,139871564538323],["__sigismember",139871564538720,139871564538749],["__sigdelset",139871564538784,139871564538812],["ddivl",139871565707744,139871565708070],["f32xsubf64",139871565713152,139871565713310],["_init",139871566577664,139871566579072],["__pthread_create_2_1.cold",139871566579095,139871566579109],["__do_global_dtors_aux",139871566579232,139871566579296],["__nptl_set_robust",139871566579312,139871566579332],["sighandler_setxid",139871566579504,139871566579802],["__pthread_get_minstack",139871566580672,139871566580697],["__free_tcb",139871566585216,139871566585290],["__pthread_clockjoin_ex",139871566590576,139871566591318],["__pthread_cond_init_2_0",139871566616080,139871566616107],["__pthread_cond_wait_2_0",139871566616144,139871566616247],["__pthread_cond_signal_2_0",139871566616400,139871566616501],["__pthread_condattr_init",139871566616624,139871566616633],["pthread_condattr_getpshared",139871566616656,139871566616666],["pthread_condattr_getclock",139871566616704,139871566616716],["pthread_spin_lock",139871566616768,139871566616793],["pthread_barrier_destroy",139871566616912,139871566617035],["pthread_barrierattr_getpshared",139871566617552,139871566617559],["__GI___pthread_getspecific",139871566617744,139871566617877],["pthread_sigqueue",139871566618480,139871566618684],["__pthread_setcanceltype",139871566619120,139871566619280],["__GI___shm_directory",139871566620192,139871566620256],["__sem_search",139871566621056,139871566621101],["sem_unlink",139871566622704,139871566623007],["__sem_wait_cleanup",139871566623024,139871566623039],["__new_sem_trywait",139871566623488,139871566623532],["sem_timedwait",139871566623984,139871566624092],["sem_clockwait",139871566624576,139871566624644],["__GI___pthread_register_cancel",139871566624768,139871566624804],["__pthread_register_cancel_defer",139871566624832,139871566624939],["__pthread_cleanup_push",139871566625088,139871566625118],["__pthread_cleanup_push_defer",139871566625168,139871566625275],["unwind_stop",139871566625456,139871566625748],["__GI___pthread_unwind_next",139871566625856,139871566625869],["__fork_alias",139871566626608,139871566626613],["__libc_write",139871566626720,139871566626877],["__close",139871566627040,139871566627179],["__connect",139871566627344,139871566627499],["__libc_recvfrom",139871566627696,139871566627885],["__libc_msgrcv",139871566629584,139871566629765],["__libc_sigsuspend",139871566630080,139871566630235],["__libc_sigaction",139871566631248,139871566631721],["__nptl_unwind_freeres",139871566632816,139871566632849],["__gcc_personality_v0",139871566632944,139871566633043],["_Unwind_GetCFA",139871566633152,139871566633217],["__pthread_tpp_change_priority",139871566633600,139871566634627],["_dl_tunable_set_elision_enable",139871566638576,139871566638615],["__lll_clocklock_elision",139871566638864,139871566639128],["noopHasNext(UCharIterator*)",93957335211104,93957335211112],["v8::DelayedTasksPlatform::GetPageAllocator()",93957335211424,93957335211439],["non-virtual thunk to v8::ProcessMessageTask::~ProcessMessageTask()",93957335307424,93957335307553],["non-virtual thunk to v8::TerminateTask::~TerminateTask()",93957335307920,93957335308016],["v8::Serializer::GetSharedArrayBufferId(v8::Isolate*, v8::Local<v8::SharedArrayBuffer>)",93957335308096,93957335308414],["v8::Serializer::ReallocateBufferMemory(void*, unsigned long, unsigned long*)",93957335308816,93957335308887],["v8::internal::FactoryBase<v8::internal::Factory>::NewObjectBoilerplateDescription(int, int, int, bool)",93957336829616,93957336829756],["v8::internal::FactoryBase<v8::internal::Factory>::NewCoverageInfo(v8::internal::ZoneVector<v8::internal::SourceRange> const&)",93957336833104,93957336833335],["v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawTwoByteInternalizedString(int, unsigned int)",93957336834112,93957336834299],["v8::internal::FactoryBase<v8::internal::Factory>::MakeOrFindTwoCharacterString(unsigned short, unsigned short)",93957336835808,93957336836060],["v8::internal::FactoryBase<v8::internal::Factory>::NewScopeInfo(int, v8::internal::AllocationType)",93957336836672,93957336836809],["v8::internal::FactoryBase<v8::internal::Factory>::NewDescriptorArray(int, int, v8::internal::AllocationType)",93957336836864,93957336837032],["v8::internal::FactoryBase<v8::internal::Factory>::NewSwissNameDictionary(int, v8::internal::AllocationType)",93957336837280,93957336837359],["void v8::internal::SwissNameDictionary::Initialize<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::ByteArray, int)",93957336837664,93957336837983],["v8::internal::Factory::NewRegExpMatchInfo()",93957336909552,93957336909863],["v8::internal::FreeListMany::GuaranteedAllocatable(unsigned long)",93957336916464,93957336916546],["v8::internal::FreeListManyCachedFastPath::Allocate(unsigned long, unsigned long*, v8::internal::AllocationOrigin)",93957336918832,93957336919724],["v8::internal::GCIdleTimeHandler::EstimateMarkingStepSize(double, double)",93957336920336,93957336920451],["v8::internal::GCTracer::Scope::Name(v8::internal::GCTracer::Scope::ScopeId)",93957336921280,93957336921319],["v8::internal::GCTracer::StartInSafepoint()",93957336923456,93957336924127],["v8::internal::GCTracer::AddAllocation(double)",93957336927696,93957336928092],["v8::internal::GCTracer::NotifySweepingCompleted()",93957336935888,93957336936026],["v8::internal::GCTracer::AddSurvivalRatio(double)",93957336936240,93957336936323],["v8::internal::GCTracer::Output(char const*, ...) const",93957336936384,93957336936683],["v8::internal::GCTracer::ScavengeSpeedInBytesPerMillisecond(v8::internal::ScavengeSpeedMode) const",93957336936752,93957336937244],["v8::internal::GCTracer::NewSpaceAllocationThroughputInBytesPerMillisecond(double) const",93957336937424,93957336937672],["v8::internal::GCTracer::IncrementalMarkingSpeedInBytesPerMillisecond() const",93957336937904,93957336937997],["v8::internal::GCTracer::RecordTimeToIncrementalMarkingTask(double)",93957336938288,93957336938347],["v8::internal::GCTracer::RecordEmbedderSpeed(unsigned long, double)",93957336938368,93957336938477],["v8::internal::GCTracer::CombinedMarkCompactSpeedInBytesPerMillisecond()",93957336938496,93957336939576],["v8::internal::UnreachableObjectsFilter::MarkingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957337049408,93957337049538],["void std::__1::__function::__policy_invoker<void (v8::internal::AllocationSite)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::Heap::ResetAllAllocationSitesDependentCode(v8::internal::AllocationType)::$_4, void (v8::internal::AllocationSite)> >(std::__1::__function::__policy_storage const*, v8::internal::AllocationSite&&)",93957337053424,93957337053510],["v8::internal::SlotSet::RemoveRange(unsigned long, unsigned long, unsigned long, v8::internal::SlotSet::EmptyBucketMode)",93957337054816,93957337055859],["v8::internal::IncrementalMarkingJob::CurrentTimeToTask(v8::internal::Heap*) const",93957337056880,93957337056933],["v8::internal::IncrementalMarking::EnsureBlackAllocated(unsigned long, unsigned long)",93957337058032,93957337058370],["v8::internal::IncrementalMarking::MarkBlackAndVisitObjectDueToLayoutChange(v8::internal::HeapObject)",93957337058608,93957337059395],["v8::internal::IncrementalMarking::NotifyLeftTrimming(v8::internal::HeapObject, v8::internal::HeapObject)",93957337059648,93957337059917],["v8::internal::IncrementalMarking::CanBeActivated()",93957337059936,93957337059990],["v8::internal::MemoryChunk::ReleaseAllocatedMemoryNeededForWritableChunk()",93957337429280,93957337429901],["v8::internal::MemoryMeasurement::EnqueueRequest(std::__1::unique_ptr<v8::MeasureMemoryDelegate, std::__1::default_delete<v8::MeasureMemoryDelegate> >, v8::MeasureMemoryExecution, std::__1::vector<v8::internal::Handle<v8::internal::NativeContext>, std::__1::allocator<v8::internal::Handle<v8::internal::NativeContext> > >)",93957337433312,93957337433919],["v8::internal::NativeContextStats::IncrementExternalSize(unsigned long, v8::internal::Map, v8::internal::HeapObject)",93957337438048,93957337438157],["v8::internal::MemoryReducer::Step(v8::internal::MemoryReducer::State const&, v8::internal::MemoryReducer::Event const&)",93957337440480,93957337441108],["v8::internal::SemiSpace::Uncommit()",93957337442384,93957337442588],["v8::internal::SemiSpace::RemovePage(v8::internal::Page*)",93957337443920,93957337444157],["v8::internal::NewSpace::CommittedPhysicalMemory()",93957337444928,93957337445146],["v8::internal::NewSpace::TearDown()",93957337446320,93957337446829],["v8::internal::NewSpace::Grow()",93957337446896,93957337447267],["v8::internal::NewSpace::SizeOfObjects()",93957337447968,93957337448028],["v8::internal::NewSpace::UpdateInlineAllocationLimit(unsigned long)",93957337448096,93957337448145],["v8::internal::NewSpace::AddParkedAllocationBuffer(int, v8::internal::AllocationAlignment)",93957337448528,93957337449116],["v8::internal::NewSpace::MaybeFreeUnusedLab(v8::internal::LinearAllocationArea)",93957337449296,93957337449349],["v8::internal::NewSpace::AllocateRawSlow(int, v8::internal::AllocationAlignment, v8::internal::AllocationOrigin)",93957337449424,93957337449595],["v8::internal::SemiSpace::~SemiSpace()",93957337449792,93957337449820],["v8::internal::NewSpace::~NewSpace()",93957337449856,93957337449966],["v8::internal::SpaceWithLinearArea::PauseAllocationObservers()",93957337599648,93957337599746],["v8::internal::StressMarkingObserver::Step(int, unsigned long, unsigned long)",93957337600240,93957337600304],["v8::internal::Sweeper::ParallelSweepPage(v8::internal::Page*, v8::internal::AllocationSpace, v8::internal::Sweeper::FreeSpaceMayContainInvalidatedSlots)",93957337607968,93957337608213],["v8::internal::StoreHandler::StoreTransition(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957337621776,93957337622138],["v8::internal::IC::ConfigureVectorState(v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>)",93957337630688,93957337630854],["v8::internal::LoadHandler::LoadGlobal(v8::internal::Isolate*)",93957337645024,93957337645110],["v8::internal::StoreGlobalIC::Store(v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>)",93957337652304,93957337653543],["v8::internal::Stats_Runtime_LoadIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337667712,93957337669077],["v8::internal::Stats_Runtime_KeyedLoadIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337676400,93957337677199],["v8::internal::Stats_Runtime_StoreGlobalIC_Slow(int, unsigned long*, v8::internal::Isolate*)",93957337682096,93957337683460],["v8::internal::Stats_Runtime_StoreInArrayLiteralIC_Slow(int, unsigned long*, v8::internal::Isolate*)",93957337687600,93957337688287],["v8::internal::Stats_Runtime_LoadPropertyWithInterceptor(int, unsigned long*, v8::internal::Isolate*)",93957337696128,93957337697915],["v8::internal::Stats_Runtime_HasElementWithInterceptor(int, unsigned long*, v8::internal::Isolate*)",93957337704928,93957337706284],["v8::internal::PropertyCallbackArguments::BasicCallIndexedGetterCallback(void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&), unsigned int, v8::internal::Handle<v8::internal::Object>)",93957337708960,93957337709575],["v8::internal::SourceCodeCache::Add(v8::internal::Isolate*, v8::internal::Vector<char const>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957337711296,93957337711896],["v8::internal::Genesis::CreateEmptyFunction()",93957337713696,93957337714345],["v8::internal::Genesis::AddRestrictedFunctionProperties(v8::internal::Handle<v8::internal::JSFunction>)",93957337717104,93957337717520],["v8::internal::(anonymous namespace)::InstallFunctionAtSymbol(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Symbol>, char const*, v8::internal::Builtins::Name, int, bool, v8::internal::PropertyAttributes)",93957337721584,93957337721713],["v8::internal::Genesis::CreateAsyncIteratorMaps(v8::internal::Handle<v8::internal::JSFunction>)",93957337722416,93957337724629],["v8::internal::Genesis::CreateRoots()",93957337727072,93957337727330],["v8::internal::Genesis::HookUpGlobalProxy(v8::internal::Handle<v8::internal::JSGlobalProxy>)",93957337730144,93957337730493],["v8::internal::Genesis::InitializeGlobal(v8::internal::Handle<v8::internal::JSGlobalObject>, v8::internal::Handle<v8::internal::JSFunction>)",93957337734368,93957337787902],["v8::internal::(anonymous namespace)::InstallConstructor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, v8::internal::InstanceType, int, int, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Builtins::Name, v8::internal::InstanceType)",93957337788560,93957337788702],["v8::internal::(anonymous namespace)::InstallToStringTag(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::String>)",93957337788992,93957337789018],["v8::internal::InstallError(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Builtins::Name, int, int)",93957337789264,93957337790894],["v8::internal::Genesis::InitializeGlobal_harmony_atomics()",93957337792880,93957337793307],["v8::internal::Genesis::InitializeGlobal_harmony_weak_refs_with_cleanup_some()",93957337795968,93957337796413],["v8::internal::Genesis::InitializeCallSiteBuiltins()",93957337801856,93957337803190],["v8::internal::Genesis::InstallExtrasBindings()",93957337809472,93957337809805],["v8::internal::Genesis::InstallExtension(v8::internal::Isolate*, v8::RegisteredExtension*, v8::internal::Genesis::ExtensionStates*)",93957337811440,93957337812074],["_ZN2v88internal11StringShape33DispatchToSpecificTypeWithoutCastIZNS1_22DispatchToSpecificTypeIZNKS0_6String13IsEqualToImplILNS4_12EqualityTypeE0EcEEbNS0_6VectorIKT0_EERKNS0_31SharedStringAccessGuardIfNeededEE19IsEqualToDispatcherbJPKcRmRNS0_22CombinationAssertScopeIJNS0_29PerThreadAssertScopeDebugOnlyILNS0_19PerThreadAssertTypeE0ELb0EEENSJ_ILSK_1ELb0EEEEEESD_EEES8_S4_DpOT1_E17CastingDispatcherbJRS4_SG_SH_SO_SD_EEES8_SR_",93957337814688,93957337815070],["v8::internal::InitializeICU(char const*)",93957337815632,93957337815880],["v8::internal::IsolateAllocator::InitReservation()",93957337815984,93957337816993],["v8::internal::IsolateAllocator::~IsolateAllocator()",93957337817392,93957337817461],["v8::internal::(anonymous namespace)::LoadFromFile(char const*)",93957337817536,93957337817800],["v8::internal::(anonymous namespace)::FreeStartupData()",93957337817824,93957337817868],["v8::internal::V8::TearDown()",93957337818000,93957337818030],["v8::internal::V8::InitializePlatform(v8::Platform*)",93957337819072,93957337819160],["v8::internal::V8::GetCurrentPlatform()",93957337819232,93957337819245],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<void (*)(), void ()> >(std::__1::__function::__policy_storage const*)",93957337819392,93957337819399],["v8::internal::Handle<v8::internal::BytecodeArray> v8::internal::interpreter::BytecodeArrayBuilder::ToBytecodeArray<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957337819536,93957337819652],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::interpreter::BytecodeArrayBuilder::ToSourcePositionTable<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957337819696,93957337819713],["v8::internal::interpreter::BytecodeArrayBuilder::Parameter(int) const",93957337820096,93957337820117],["enumSameValue(void const*, unsigned int)",93957337820160,93957337820168],["v8::internal::interpreter::BytecodeArrayBuilder::BinaryOperationSmiLiteral(v8::internal::Token::Value, v8::internal::Smi, int)",93957337823632,93957337826203],["v8::internal::interpreter::BytecodeArrayBuilder::LogicalNot(v8::internal::interpreter::BytecodeArrayBuilder::ToBooleanMode)",93957337827200,93957337827595],["v8::internal::interpreter::BytecodeArrayBuilder::GetSuperConstructor(v8::internal::interpreter::Register)",93957337827840,93957337828205],["v8::internal::interpreter::BytecodeArrayBuilder::CompareReference(v8::internal::interpreter::Register)",93957337830576,93957337830939],["v8::internal::interpreter::BytecodeArrayBuilder::CompareUndefined()",93957337831200,93957337831454],["v8::internal::interpreter::BytecodeArrayBuilder::CompareNil(v8::internal::Token::Value, v8::internal::interpreter::BytecodeArrayBuilder::NilValue)",93957337831712,93957337831761],["v8::internal::interpreter::BytecodeArrayBuilder::LoadConstantPoolEntry(unsigned long)",93957337832064,93957337832342],["v8::internal::interpreter::BytecodeArrayBuilder::LoadLiteral(double)",93957337832816,93957337833188],["v8::internal::interpreter::BytecodeArrayBuilder::LoadLiteral(v8::internal::Scope const*)",93957337833488,93957337833775],["v8::internal::interpreter::BytecodeArrayBuilder::LoadUndefined()",93957337834064,93957337834293],["v8::internal::interpreter::BytecodeArrayBuilder::LoadTheHole()",93957337834544,93957337834773],["v8::internal::interpreter::BytecodeArrayBuilder::LoadFalse()",93957337835024,93957337835253],["v8::internal::interpreter::BytecodeArrayBuilder::LoadAccumulatorWithRegister(v8::internal::interpreter::Register)",93957337835312,93957337835692],["v8::internal::interpreter::BytecodeArrayBuilder::MoveRegister(v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957337836016,93957337836469],["v8::internal::interpreter::BytecodeArrayBuilder::StoreGlobal(v8::internal::AstRawString const*, int)",93957337837104,93957337837431],["v8::internal::interpreter::BytecodeArrayBuilder::StoreContextSlot(v8::internal::interpreter::Register, int, int)",93957337838848,93957337839537],["v8::internal::interpreter::BytecodeArrayBuilder::LoadLookupContextSlot(v8::internal::AstRawString const*, v8::internal::TypeofMode, int, int)",93957337840032,93957337840695],["v8::internal::interpreter::BytecodeArrayBuilder::StoreLookupSlot(v8::internal::AstRawString const*, v8::internal::LanguageMode, v8::internal::LookupHoistingMode)",93957337841376,93957337841718],["v8::internal::interpreter::BytecodeArrayBuilder::LoadNamedPropertyFromSuper(v8::internal::interpreter::Register, v8::internal::AstRawString const*, int)",93957337842176,93957337842649],["v8::internal::interpreter::BytecodeArrayBuilder::LoadKeyedProperty(v8::internal::interpreter::Register, int)",93957337843056,93957337843481],["std::__1::__bit_iterator<std::__1::__bitset<2ul, 128ul>, false, 0> std::__1::__copy_unaligned<std::__1::__bitset<2ul, 128ul>, false>(std::__1::__bit_iterator<std::__1::__bitset<2ul, 128ul>, false, 0>, std::__1::__bit_iterator<std::__1::__bitset<2ul, 128ul>, false, 0>, std::__1::__bit_iterator<std::__1::__bitset<2ul, 128ul>, false, 0>)",93957339858544,93957339859145],["v8::internal::NativeRegExpMacroAssembler::LoadCurrentCharacterImpl(int, v8::internal::Label*, bool, int, int)",93957339876064,93957339876153],["v8::internal::RegExpParser::CreateNamedCaptureAtIndex(v8::internal::ZoneVector<unsigned short> const*, int)",93957339883936,93957339884392],["v8::internal::RegExpParser::GetPropertySequence(v8::internal::ZoneVector<char> const&)",93957339891664,93957339894365],["v8::internal::RegExpBuilder::AddUnicodeCharacter(unsigned int)",93957339897760,93957339897973],["v8::internal::RegExpParser::ScanForCaptures()",93957339903888,93957339905010],["v8::internal::RegExpParser::ParseClassCharacterEscape()",93957339906224,93957339907301],["v8::internal::RegExpBuilder::AddTrailSurrogate(unsigned short)",93957339908752,93957339909152],["v8::internal::RegExpBuilder::FlushTerms()",93957339909904,93957339910136],["std::__1::pair<std::__1::__tree_iterator<v8::internal::RegExpCapture*, std::__1::__tree_node<v8::internal::RegExpCapture*, void*>*, long>, bool> std::__1::__tree<v8::internal::RegExpCapture*, v8::internal::RegExpParser::RegExpCaptureNameLess, v8::internal::ZoneAllocator<v8::internal::RegExpCapture*> >::__emplace_unique_key_args<v8::internal::RegExpCapture*, v8::internal::RegExpCapture*&>(v8::internal::RegExpCapture* const&, v8::internal::RegExpCapture*&)",93957339910480,93957339910866],["void std::__1::__sort<v8::internal::(anonymous namespace)::RegExpCaptureIndexLess&, v8::internal::RegExpCapture**>(v8::internal::RegExpCapture**, v8::internal::RegExpCapture**, v8::internal::(anonymous namespace)::RegExpCaptureIndexLess&)",93957339911200,93957339912750],["bool std::__1::__insertion_sort_incomplete<v8::internal::(anonymous namespace)::RegExpCaptureIndexLess&, v8::internal::RegExpCapture**>(v8::internal::RegExpCapture**, v8::internal::RegExpCapture**, v8::internal::(anonymous namespace)::RegExpCaptureIndexLess&)",93957339913008,93957339913706],["v8::internal::RegExpStackScope::~RegExpStackScope()",93957339913776,93957339913873],["v8::internal::RegExpStack::~RegExpStack()",93957339913984,93957339914054],["v8::internal::RegExpUtils::GenericCaptureGetter(v8::internal::Isolate*, v8::internal::Handle<v8::internal::RegExpMatchInfo>, int, bool*)",93957339914336,93957339914589],["v8::internal::RegExpUtils::GetLastIndex(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>)",93957339914944,93957339915393],["v8::internal::Stats_Runtime_ThrowSpreadArgError(int, unsigned long*, v8::internal::Isolate*)",93957340112416,93957340112980],["v8::internal::Stats_Runtime_ThrowCalledNonCallable(int, unsigned long*, v8::internal::Isolate*)",93957340113136,93957340113673],["v8::internal::Stats_Runtime_ThrowConstructedNonConstructable(int, unsigned long*, v8::internal::Isolate*)",93957340113824,93957340114361],["v8::internal::Stats_Runtime_ThrowPatternAssignmentNonCoercible(int, unsigned long*, v8::internal::Isolate*)",93957340114512,93957340115038],["v8::internal::Stats_Runtime_ThrowConstructorReturnedNonObject(int, unsigned long*, v8::internal::Isolate*)",93957340115200,93957340115724],["v8::internal::Stats_Runtime_CreateListFromArrayLike(int, unsigned long*, v8::internal::Isolate*)",93957340115888,93957340116428],["v8::internal::Stats_Runtime_IncrementUseCounter(int, unsigned long*, v8::internal::Isolate*)",93957340116608,93957340117169],["v8::internal::Stats_Runtime_GetAndResetRuntimeCallStats(int, unsigned long*, v8::internal::Isolate*)",93957340118576,93957340120400],["v8::internal::Stats_Runtime_OrdinaryHasInstance(int, unsigned long*, v8::internal::Isolate*)",93957340120560,93957340121102],["v8::internal::Stats_Runtime_Typeof(int, unsigned long*, v8::internal::Isolate*)",93957340121248,93957340121772],["v8::internal::Stats_Runtime_AllowDynamicFunction(int, unsigned long*, v8::internal::Isolate*)",93957340122112,93957340122804],["v8::internal::Stats_Runtime_CreateAsyncFromSyncIterator(int, unsigned long*, v8::internal::Isolate*)",93957340123296,93957340124198],["v8::internal::Stats_Runtime_GetTemplateObject(int, unsigned long*, v8::internal::Isolate*)",93957340124656,93957340125468],["v8::internal::Stats_Runtime_ReportMessageFromMicrotask(int, unsigned long*, v8::internal::Isolate*)",93957340125664,93957340126231],["v8::internal::Stats_Runtime_GetInitializerFunction(int, unsigned long*, v8::internal::Isolate*)",93957340126672,93957340127510],["v8::internal::Stats_Runtime_DoubleToStringWithRadix(int, unsigned long*, v8::internal::Isolate*)",93957340127952,93957340128759],["v8::internal::Stats_Runtime_FormatList(int, unsigned long*, v8::internal::Isolate*)",93957340129056,93957340129730],["v8::internal::Stats_Runtime_FormatListToParts(int, unsigned long*, v8::internal::Isolate*)",93957340130032,93957340130706],["v8::internal::Stats_Runtime_StringToLowerCaseIntl(int, unsigned long*, v8::internal::Isolate*)",93957340130944,93957340131558],["v8::internal::Stats_Runtime_StringToUpperCaseIntl(int, unsigned long*, v8::internal::Isolate*)",93957340131792,93957340132406],["v8::internal::Stats_Runtime_CreateObjectLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340133984,93957340135987],["v8::internal::Stats_Runtime_CreateObjectLiteralWithoutAllocationSite(int, unsigned long*, v8::internal::Isolate*)",93957340136368,93957340137142],["v8::internal::Stats_Runtime_CreateArrayLiteralWithoutAllocationSite(int, unsigned long*, v8::internal::Isolate*)",93957340137520,93957340138285],["v8::internal::Stats_Runtime_CreateArrayLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340139888,93957340141899],["v8::internal::Stats_Runtime_CreateRegExpLiteral(int, unsigned long*, v8::internal::Isolate*)",93957340142992,93957340144361],["v8::internal::AllocationSiteUsageContext::EnterNewScope()",93957340144720,93957340144899],["v8::internal::(anonymous namespace)::CreateObjectLiteral(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectBoilerplateDescription>, int, v8::internal::AllocationType)",93957340146816,93957340148012],["v8::internal::(anonymous namespace)::JSObjectWalkVisitor<v8::internal::(anonymous namespace)::AllocationSiteCreationContext>::StructureWalk(v8::internal::Handle<v8::internal::JSObject>)",93957340148848,93957340151654],["v8::internal::(anonymous namespace)::JSObjectWalkVisitor<v8::internal::AllocationSiteUsageContext>::VisitElementOrProperty(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>)",93957340154368,93957340154438],["v8::internal::Stats_Runtime_DynamicImportCall(int, unsigned long*, v8::internal::Isolate*)",93957340155136,93957340156187],["v8::internal::Stats_Runtime_GetModuleNamespace(int, unsigned long*, v8::internal::Isolate*)",93957340156480,93957340157142],["v8::internal::Stats_Runtime_GetImportMetaObject(int, unsigned long*, v8::internal::Isolate*)",93957340157408,93957340158010],["v8::internal::Stats_Runtime_StringToNumber(int, unsigned long*, v8::internal::Isolate*)",93957340158208,93957340158795],["v8::internal::Stats_Runtime_StringParseInt(int, unsigned long*, v8::internal::Isolate*)",93957340159600,93957340160801],["v8::internal::Stats_Runtime_StringParseFloat(int, unsigned long*, v8::internal::Isolate*)",93957340161216,93957340162007],["v8::internal::Stats_Runtime_NumberToStringSlow(int, unsigned long*, v8::internal::Isolate*)",93957340162208,93957340162796],["v8::internal::Stats_Runtime_MaxSmi(int, unsigned long*, v8::internal::Isolate*)",93957340162832,93957340163247],["v8::internal::Stats_Runtime_IsSmi(int, unsigned long*, v8::internal::Isolate*)",93957340163296,93957340163773],["v8::internal::Stats_Runtime_GetHoleNaNUpper(int, unsigned long*, v8::internal::Isolate*)",93957340163936,93957340164452],["v8::internal::Stats_Runtime_GetHoleNaNLower(int, unsigned long*, v8::internal::Isolate*)",93957340164624,93957340165140],["v8::internal::Runtime::HasProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957340165616,93957340165817],["v8::internal::Runtime_ObjectKeys(int, unsigned long*, v8::internal::Isolate*)",93957340167216,93957340167452],["v8::internal::Runtime_ObjectGetOwnPropertyNames(int, unsigned long*, v8::internal::Isolate*)",93957340168096,93957340168332],["v8::internal::Runtime_ObjectGetOwnPropertyNamesTryFast(int, unsigned long*, v8::internal::Isolate*)",93957340168976,93957340169394],["v8::internal::Runtime_ObjectHasOwnProperty(int, unsigned long*, v8::internal::Isolate*)",93957340170192,93957340171278],["v8::internal::Runtime_HasOwnConstDataProperty(int, unsigned long*, v8::internal::Isolate*)",93957340172784,93957340173108],["v8::internal::Runtime_IsDictPropertyConstTrackingEnabled(int, unsigned long*, v8::internal::Isolate*)",93957340173840,93957340173872],["v8::internal::Runtime_AddDictionaryProperty(int, unsigned long*, v8::internal::Isolate*)",93957340174336,93957340174645],["v8_inspector::V8Debugger::asyncStepOutOfFunction(int, bool)",93957342534016,93957342534486],["v8_inspector::V8Debugger::ExceptionThrown(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>, bool, v8::debug::ExceptionType)",93957342537408,93957342537473],["v8_inspector::V8Debugger::asyncTaskStartedForStack(void*)",93957342539248,93957342539911],["v8_inspector::V8Debugger::currentExternalParent()",93957342540320,93957342540380],["v8_inspector::V8Debugger::internalProperties(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957342542448,93957342542817],["v8_inspector::V8Debugger::createStackTrace(v8::Local<v8::StackTrace>)",93957342543296,93957342543420],["v8_inspector::V8Debugger::allAsyncTasksCanceled()",93957342543728,93957342544508],["v8_inspector::V8Debugger::debuggerIdFor(int)",93957342545040,93957342545490],["v8_inspector::(anonymous namespace)::PrimitiveValueMirror::buildPropertyPreview(v8::Local<v8::Context>, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >*) const",93957342733264,93957342733645],["v8_crdtp::cbor::EncodeFalse()",93957342745360,93957342745368],["v8_crdtp::cbor::EnvelopeEncoder::EncodeStop(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342749648,93957342749768],["v8_crdtp::cbor::CBORTokenizer::GetDouble() const",93957342750704,93957342750730],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::~CBOREncoder()",93957342751584,93957342751622],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleArrayBegin()",93957342752352,93957342752606],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleDouble(double)",93957342752896,93957342752921],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleError(v8_crdtp::Status)",93957342753488,93957342753522],["v8_crdtp::cbor::(anonymous namespace)::ParseMap(int, v8_crdtp::cbor::CBORTokenizer*, v8_crdtp::ParserHandler*)",93957342754304,93957342754575],["void std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::__push_back_slow_path<unsigned char>(unsigned char&&)",93957342754768,93957342754982],["v8_crdtp::DispatchResponse::ParseError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957342755024,93957342755061],["v8_crdtp::DispatchResponse::InternalError()",93957342755120,93957342755186],["v8_crdtp::Dispatchable::Dispatchable(v8_crdtp::span<unsigned char>)",93957342755248,93957342755751],["icu_68::number::impl::DecimalQuantity::isZeroish() const",93957342756208,93957342756221],["v8_crdtp::Dispatchable::MaybeParseParams(v8_crdtp::cbor::CBORTokenizer*)",93957342756368,93957342756499],["v8_crdtp::CreateErrorNotification(v8_crdtp::DispatchResponse)",93957342757168,93957342757262],["v8::internal::compiler::InstructionSelector::EmitWithContinuation(unsigned int, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, v8::internal::compiler::FlagsContinuation*)",93957342920960,93957342921013],["v8::internal::compiler::InstructionSelector::MarkAsFloat64(v8::internal::compiler::Node*)",93957342958256,93957342958340],["v8::internal::compiler::InstructionSelector::VisitBitcastWordToTagged(v8::internal::compiler::Node*)",93957342960832,93957342961151],["v8::internal::compiler::CallBuffer::CallBuffer(v8::internal::Zone*, v8::internal::compiler::CallDescriptor const*, v8::internal::compiler::FrameStateDescriptor*)",93957342963840,93957342965348],["_ZNSt3__16vectorIN2v88internal8compiler18InstructionOperandENS2_13ZoneAllocatorIS4_EEE6insertINS_11__wrap_iterIPS4_EEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISD_E9referenceEEE5valueESB_E4typeENS9_IPKS4_EESD_SD_",93957342967392,93957342970922],["void std::__1::__inplace_merge<v8::internal::compiler::SwitchInfo::CasesSortedByValue() const::{lambda(v8::internal::compiler::CaseInfo, v8::internal::compiler::CaseInfo)#1}&, std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*> >(std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*>, std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*>, std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*>, v8::internal::compiler::SwitchInfo::CasesSortedByValue() const::{lambda(v8::internal::compiler::CaseInfo, v8::internal::compiler::CaseInfo)#1}&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*> >, std::__1::iterator_traits::value_type*, long)",93957342972672,93957342973666],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*>, std::__1::__unordered_map_hasher<v8::internal::compiler::InstructionSelector::FrameStateInput, std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*>, v8::internal::compiler::InstructionSelector::FrameStateInput::Hash, v8::internal::compiler::InstructionSelector::FrameStateInput::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::InstructionSelector::FrameStateInput, std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*>, v8::internal::compiler::InstructionSelector::FrameStateInput::Equal, v8::internal::compiler::InstructionSelector::FrameStateInput::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*> > >::__emplace_unique_key_args<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::FrameStateInput&, v8::internal::compiler::InstructionSelector::CachedStateValues*>(v8::internal::compiler::InstructionSelector::FrameStateInput const&, v8::internal::compiler::InstructionSelector::FrameStateInput&, v8::internal::compiler::InstructionSelector::CachedStateValues*&&)",93957342975264,93957342976271],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::InstructionOperand const&)",93957342977216,93957342978353],["v8::internal::compiler::Instruction::Instruction(unsigned int, unsigned long, v8::internal::compiler::InstructionOperand*, unsigned long, v8::internal::compiler::InstructionOperand*, unsigned long, v8::internal::compiler::InstructionOperand*)",93957342979584,93957342980945],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::ParallelMove const&)",93957342981392,93957342981594],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::ArchOpcode const&)",93957342982304,93957342988499],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::FlagsMode const&)",93957342988912,93957342989071],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Instruction const&)",93957342989552,93957342990152],["v8::internal::compiler::Constant::Constant(v8::internal::compiler::RelocatablePtrConstantInfo)",93957342990192,93957342990237],["v8::internal::compiler::PhiInstruction::PhiInstruction(v8::internal::Zone*, int, unsigned long)",93957342990544,93957342990726],["v8::internal::compiler::InstructionBlock::PredecessorIndexOf(v8::internal::compiler::RpoNumber) const",93957342990752,93957342990805],["v8::internal::compiler::LinearScanAllocator::PrintRangeRow(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::TopLevelLiveRange const*)",93957343090880,93957343093303],["v8::internal::compiler::ConstraintBuilder::MeetConstraintsBefore(int)",93957343101472,93957343103517],["v8::internal::compiler::BundleBuilder::BuildBundles()",93957343118608,93957343124796],["v8::internal::compiler::LinearScanAllocator::ChooseOneOfTwoPredecessorStates(v8::internal::compiler::InstructionBlock*, v8::internal::compiler::LifetimePosition)",93957343133872,93957343136050],["v8::internal::compiler::LinearScanAllocator::FindFreeRegistersForRange(v8::internal::compiler::LiveRange*, v8::internal::Vector<v8::internal::compiler::LifetimePosition>)",93957343146896,93957343147929],["v8::internal::compiler::TopLevelLiveRange::TransitionRangeToDeferredSpill(v8::internal::Zone*, int)",93957343153776,93957343154070],["std::__1::__hash_table<v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>::hash, v8::internal::Handle<v8::internal::JSObject>::equal_to, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::JSObject> > >::__node_insert_unique_prepare(unsigned long, v8::internal::Handle<v8::internal::JSObject>&)",93957343167408,93957343167948],["std::__1::vector<v8::internal::ZoneMultiset<v8::internal::compiler::LiveRange*, v8::internal::compiler::LinearScanAllocator::InactiveLiveRangeOrdering>, v8::internal::ZoneAllocator<v8::internal::ZoneMultiset<v8::internal::compiler::LiveRange*, v8::internal::compiler::LinearScanAllocator::InactiveLiveRangeOrdering> > >::vector(unsigned long, v8::internal::ZoneMultiset<v8::internal::compiler::LiveRange*, v8::internal::compiler::LinearScanAllocator::InactiveLiveRangeOrdering> const&, v8::internal::ZoneAllocator<v8::internal::ZoneMultiset<v8::internal::compiler::LiveRange*, v8::internal::compiler::LinearScanAllocator::InactiveLiveRangeOrdering> > const&)",93957343171584,93957343172611],["v8::internal::compiler::SpillPlacer::SpillPlacer(v8::internal::compiler::LiveRangeFinder*, v8::internal::compiler::TopTierRegisterAllocationData*, v8::internal::Zone*)",93957343174112,93957343174151],["v8::internal::compiler::SpillPlacer::GetOrCreateIndexForLatestVreg(int)",93957343175376,93957343175867],["v8::internal::compiler::BasicBlockInstrumentor::Instrument(v8::internal::OptimizedCompilationInfo*, v8::internal::compiler::Graph*, v8::internal::compiler::Schedule*, v8::internal::Isolate*)",93957343177440,93957343179155],["v8::internal::compiler::BranchElimination::Reduce(v8::internal::compiler::Node*)",93957343183024,93957343183124],["v8::internal::compiler::BranchElimination::ReduceIf(v8::internal::compiler::Node*, bool)",93957343184912,93957343185290],["v8::internal::compiler::BranchElimination::TakeConditionsFromFirstControl(v8::internal::compiler::Node*)",93957343186912,93957343187124],["v8::internal::compiler::BranchElimination::reducer_name() const",93957343188080,93957343188093],["v8::internal::compiler::BytecodeAnalysis::BytecodeAnalysis(v8::internal::Handle<v8::internal::BytecodeArray>, v8::internal::Zone*, v8::internal::BytecodeOffset, bool)",93957343188480,93957343188730],["v8::internal::compiler::LoopInfo::AddResumeTarget(v8::internal::compiler::ResumeJumpTarget const&)",93957343196160,93957343196471],["v8::internal::compiler::(anonymous namespace)::UpdateOutLiveness(v8::internal::interpreter::Bytecode, v8::internal::compiler::BytecodeLivenessState*, v8::internal::compiler::BytecodeLivenessState*, v8::internal::interpreter::BytecodeArrayIterator const&, v8::internal::Handle<v8::internal::BytecodeArray>, v8::internal::compiler::BytecodeLivenessMap const&)",93957343196848,93957343197873],["v8::internal::compiler::BytecodeAnalysis::PrintLivenessTo(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957343199472,93957343201431],["v8::internal::compiler::BytecodeAnalysis::GetLoopOffsetFor(int) const",93957343201520,93957343201642],["v8::internal::compiler::BytecodeAnalysis::GetInLivenessFor(int) const",93957343201728,93957343201759],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<int, v8::internal::compiler::LoopInfo>, std::__1::__tree_node<std::__1::__value_type<int, v8::internal::compiler::LoopInfo>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<int, v8::internal::compiler::LoopInfo>, std::__1::__map_value_compare<int, std::__1::__value_type<int, v8::internal::compiler::LoopInfo>, std::__1::less<int>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<int, v8::internal::compiler::LoopInfo> > >::__emplace_unique_key_args<int, std::__1::pair<int const, v8::internal::compiler::LoopInfo> >(int const&, std::__1::pair<int const, v8::internal::compiler::LoopInfo>&&)",93957343201792,93957343202128],["v8::internal::compiler::BytecodeGraphBuilder::Environment::LookupRegister(v8::internal::interpreter::Register) const",93957343203952,93957343204168],["v8::internal::compiler::BytecodeGraphBuilder::Environment::BindRegister(v8::internal::interpreter::Register, v8::internal::compiler::Node*, v8::internal::compiler::BytecodeGraphBuilder::Environment::FrameStateAttachmentMode)",93957343204352,93957343204587],["v8::internal::compiler::BytecodeGraphBuilder::Environment::Merge(v8::internal::compiler::BytecodeGraphBuilder::Environment*, v8::internal::compiler::BytecodeLivenessState const*)",93957343204944,93957343205505],["v8::internal::compiler::BytecodeGraphBuilder::MergeEffect(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343205712,93957343206265],["v8::internal::compiler::BytecodeGraphBuilder::Environment::PrepareForLoop(v8::internal::compiler::BytecodeLoopAssignments const&, v8::internal::compiler::BytecodeLivenessState const*)",93957343206848,93957343208815],["v8::internal::compiler::BytecodeGraphBuilder::Environment::PrepareForLoopExit(v8::internal::compiler::Node*, v8::internal::compiler::BytecodeLoopAssignments const&, v8::internal::compiler::BytecodeLivenessState const*)",93957343209088,93957343209945],["v8::internal::compiler::BytecodeGraphBuilder::BytecodeGraphBuilder(v8::internal::compiler::JSHeapBroker*, v8::internal::Zone*, v8::internal::compiler::NativeContextRef const&, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::FeedbackCellRef const&, v8::internal::BytecodeOffset, v8::internal::compiler::JSGraph*, v8::internal::compiler::CallFrequency const&, v8::internal::compiler::SourcePositionTable*, int, v8::internal::CodeKind, v8::base::Flags<v8::internal::compiler::BytecodeGraphBuilderFlag, int>, v8::internal::TickCounter*, v8::internal::compiler::ObserveNodeInfo const&)",93957343210640,93957343211520],["v8::internal::compiler::BytecodeGraphBuilder::BuildLoadFeedbackCell(int)",93957343211728,93957343211985],["v8::internal::compiler::BytecodeGraphBuilder::MaybeBuildTierUpCheck()",93957343212240,93957343212673],["v8::internal::compiler::BytecodeGraphBuilder::CreateGraph()",93957343212992,93957343213640],["v8::internal::compiler::MapInference::HaveMaps() const",93957344573296,93957344573313],["v8::internal::compiler::BranchMatcher::BranchMatcher(v8::internal::compiler::Node*)",93957344588880,93957344588997],["v8::internal::compiler::NodeProperties::MergeControlToEnd(v8::internal::compiler::Graph*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::compiler::Node*)",93957344594432,93957344594514],["v8::internal::compiler::NodeProperties::Equals(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344601200,93957344601442],["v8::internal::compiler::Node::UseCount() const",93957344605392,93957344605421],["v8::internal::compiler::Node::Uses::empty() const",93957344606816,93957344606833],["v8::internal::compiler::OperationTyper::SubtractRanger(double, double, double, double)",93957344608608,93957344608964],["v8::internal::compiler::OperationTyper::NumberCeil(v8::internal::compiler::Type)",93957344610416,93957344610520],["v8::internal::compiler::OperationTyper::NumberToInt32(v8::internal::compiler::Type)",93957344611248,93957344611434],["v8::internal::compiler::OperationTyper::NumberSilenceNaN(v8::internal::compiler::Type)",93957344611824,93957344611871],["v8::internal::compiler::OperationTyper::SpeculativeSafeIntegerAdd(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344613056,93957344613178],["v8::internal::compiler::OperationTyper::NumberMultiply(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344613536,93957344614406],["v8::internal::compiler::OperationTyper::NumberBitwiseAnd(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344615984,93957344616262],["v8::internal::compiler::OperationTyper::NumberShiftRightLogical(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344617056,93957344617287],["v8::internal::compiler::OperationTyper::SpeculativeToNumber(v8::internal::compiler::Type)",93957344618432,93957344618477],["v8::internal::compiler::OperationTyper::SpeculativeNumberBitwiseOr(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344618816,93957344618916],["v8::internal::compiler::OperationTyper::SpeculativeNumberShiftLeft(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344619152,93957344619252],["v8::internal::compiler::OperationTyper::SpeculativeNumberShiftRightLogical(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344619376,93957344619476],["v8::internal::compiler::OperationTyper::BigIntNegate(v8::internal::compiler::Type)",93957344619520,93957344619543],["v8::internal::compiler::(anonymous namespace)::JSType(v8::internal::compiler::Type)",93957344620064,93957344620433],["v8::internal::compiler::OperationTyper::StrictEqual(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344620464,93957344620936],["v8::internal::compiler::OperationTyper::CheckFloat64Hole(v8::internal::compiler::Type)",93957344621168,93957344621252],["v8::internal::compiler::OperationTyper::TypeTypeGuard(v8::internal::compiler::Operator const*, v8::internal::compiler::Type)",93957344621296,93957344621335],["v8::internal::compiler::OperationTyper::ToBoolean(v8::internal::compiler::Type)",93957344621424,93957344621756],["v8::internal::compiler::OperatorProperties::NeedsExactContext(v8::internal::compiler::Operator const*)",93957344621792,93957344621877],["v8::internal::compiler::OperatorProperties::GetTotalInputCount(v8::internal::compiler::Operator const*)",93957344621952,93957344622016],["v8::internal::compiler::Operator::Operator(unsigned short, v8::base::Flags<v8::internal::compiler::Operator::Property, unsigned char>, char const*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)",93957344622064,93957344622191],["v8::internal::compiler::Operator::PrintToImpl(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344622240,93957344622280],["v8::internal::compiler::OsrHelper::OsrHelper(v8::internal::OptimizedCompilationInfo*)",93957344623136,93957344623205],["v8::internal::compiler::PipelineStatistics::CommonStats::Begin(v8::internal::compiler::PipelineStatistics*)",93957344623248,93957344623389],["v8::internal::compiler::PipelineStatistics::PipelineStatistics(v8::internal::OptimizedCompilationInfo*, v8::internal::CompilationStatistics*, v8::internal::compiler::ZoneStats*)",93957344623632,93957344623773],["v8::internal::compiler::PipelineStatistics::EndPhaseKind()",93957344624048,93957344624358],["std::__1::deque<v8::internal::compiler::HandlerRangeMatcher::Range, std::__1::allocator<v8::internal::compiler::HandlerRangeMatcher::Range> >::__add_back_capacity()",93957344877312,93957344877733],["void v8::internal::compiler::RepresentationSelector::VisitJSWasmCall<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957344973104,93957344973796],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::NumberOperationHint)",93957345039984,93957345040116],["v8::internal::compiler::SimplifiedOperatorBuilder::StringToUpperCaseIntl()",93957345041008,93957345041022],["v8::internal::compiler::SimplifiedOperatorBuilder::TruncateTaggedToWord32()",93957345041392,93957345041406],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsSymbol()",93957345041648,93957345041662],["v8::internal::compiler::SimplifiedOperatorBuilder::StringLessThanOrEqual()",93957345041904,93957345041918],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckReceiver()",93957345042160,93957345042174],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckNumber(v8::internal::compiler::FeedbackSource const&)",93957345042352,93957345042552],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedTaggedSignedToInt32(v8::internal::compiler::FeedbackSource const&)",93957345044016,93957345044216],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedUint64Bounds(v8::internal::compiler::FeedbackSource const&, v8::base::Flags<v8::internal::compiler::CheckBoundsFlag, int>)",93957345045680,93957345045873],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeFloat64ToTagged(v8::internal::compiler::CheckForMinusZeroMode)",93957345047776,93957345047825],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckMaps(v8::base::Flags<v8::internal::compiler::CheckMapsFlag, int>, v8::internal::ZoneHandleSet<v8::internal::Map>, v8::internal::compiler::FeedbackSource const&)",93957345049728,93957345049928],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeBigIntNegate(v8::internal::compiler::BigIntOperationHint)",93957345051024,93957345051149],["v8::internal::compiler::CheckParametersOf(v8::internal::compiler::Operator const*)",93957345052368,93957345052433],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberAdd(v8::internal::compiler::NumberOperationHint)",93957345053392,93957345053474],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberBitwiseOr(v8::internal::compiler::NumberOperationHint)",93957345053968,93957345054050],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberShiftRightLogical(v8::internal::compiler::NumberOperationHint)",93957345054352,93957345054434],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberLessThanOrEqual(v8::internal::compiler::NumberOperationHint)",93957345054736,93957345054818],["v8::internal::compiler::SimplifiedOperatorBuilder::LoadElement(v8::internal::compiler::ElementAccess const&)",93957345055408,93957345055569],["v8::internal::compiler::SimplifiedOperatorBuilder::StoreTypedElement(v8::internal::ExternalArrayType const&)",93957345056048,93957345056176],["v8::internal::compiler::SimplifiedOperatorBuilder::LoadMessage()",93957345056592,93957345056701],["v8::internal::compiler::SimplifiedOperatorBuilder::StoreSignedSmallElement()",93957345056976,93957345057085],["v8::internal::compiler::FastApiCallNode::FastCallExtraInputCount() const",93957345057632,93957345057681],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckBoundsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckBoundsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckBoundsParameters> >::HashCode() const",93957345083760,93957345083871],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckIfParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckIfParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckIfParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345084144,93957345084246],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckTaggedInputParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckTaggedInputParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckTaggedInputParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345084640,93957345084710],["v8::internal::compiler::Operator1<v8::internal::compiler::NumberOperationHint, v8::internal::compiler::OpEqualTo<v8::internal::compiler::NumberOperationHint>, v8::internal::compiler::OpHash<v8::internal::compiler::NumberOperationHint> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345085184,93957345085254],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckMapsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckMapsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckMapsParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345085568,93957345085731],["v8::internal::compiler::Operator1<v8::internal::ZoneHandleSet<v8::internal::Map>, v8::internal::compiler::OpEqualTo<v8::internal::ZoneHandleSet<v8::internal::Map> >, v8::internal::compiler::OpHash<v8::internal::ZoneHandleSet<v8::internal::Map> > >::Equals(v8::internal::compiler::Operator const*) const",93957345085936,93957345085968],["v8::internal::compiler::Operator1<v8::internal::compiler::ElementsTransition, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ElementsTransition>, v8::internal::compiler::OpHash<v8::internal::compiler::ElementsTransition> >::HashCode() const",93957345086224,93957345086282],["v8::internal::compiler::Operator1<v8::internal::compiler::NewArgumentsElementsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::NewArgumentsElementsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::NewArgumentsElementsParameters> >::HashCode() const",93957345086608,93957345086668],["v8::internal::compiler::Operator1<v8::internal::compiler::AllocateParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::AllocateParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::AllocateParameters> >::HashCode() const",93957345086800,93957345086861],["v8::internal::compiler::Operator1<v8::internal::compiler::FieldAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FieldAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::FieldAccess> >::Equals(v8::internal::compiler::Operator const*) const",93957345086944,93957345087026],["v8::internal::compiler::Operator1<v8::internal::compiler::ElementAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ElementAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ElementAccess> >::Equals(v8::internal::compiler::Operator const*) const",93957345087168,93957345087222],["v8::internal::compiler::Operator1<v8::internal::compiler::ElementAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ElementAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ElementAccess> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345087344,93957345087416],["v8::internal::compiler::Operator1<v8::internal::compiler::ObjectAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ObjectAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ObjectAccess> >::HashCode() const",93957345087472,93957345087539],["v8::internal::compiler::Operator1<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957345087632,93957345087674],["v8::internal::compiler::Operator1<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreElementParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345087728,93957345087880],["v8::internal::compiler::Operator1<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters> >::HashCode() const",93957345088000,93957345088073],["v8::internal::compiler::Operator1<v8::internal::compiler::FastApiCallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FastApiCallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::FastApiCallParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957345088208,93957345088281],["v8::internal::compiler::Operator1<v8::internal::compiler::FastApiCallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FastApiCallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::FastApiCallParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345088448,93957345088580],["v8::internal::compiler::StateValuesCache::AreKeysEqual(void*, void*)",93957345088832,93957345089013],["v8::internal::compiler::StateValuesCache::GetValuesNodeFromCache(v8::internal::compiler::Node**, unsigned long, v8::internal::compiler::SparseInputMask)",93957345089376,93957345089763],["v8::internal::compiler::StateValuesCache::GetNodeForValues(v8::internal::compiler::Node**, unsigned long, v8::internal::BitVector const*, int)",93957345090608,93957345090758],["v8::internal::compiler::StateValuesAccess::iterator::EnsureValid()",93957345090912,93957345091245],["v8::internal::compiler::StateValuesAccess::iterator::node()",93957345091360,93957345091416],["v8::internal::compiler::StateValuesAccess::iterator::operator*()",93957345091472,93957345091592],["std::__1::vector<std::__1::array<v8::internal::compiler::Node*, 8ul>, v8::internal::ZoneAllocator<std::__1::array<v8::internal::compiler::Node*, 8ul> > >::__append(unsigned long)",93957345091824,93957345092172],["v8::internal::compiler::(anonymous namespace)::RedundantStoreFinder::Visit(v8::internal::compiler::Node*)",93957345093760,93957345097760],["v8::internal::compiler::PersistentMap<v8::internal::compiler::(anonymous namespace)::UnobservableStore, bool, v8::base::hash<v8::internal::compiler::(anonymous namespace)::UnobservableStore> >::double_iterator::operator++()",93957345099408,93957345100025],["v8::internal::compiler::PersistentMap<v8::internal::compiler::(anonymous namespace)::UnobservableStore, bool, v8::base::hash<v8::internal::compiler::(anonymous namespace)::UnobservableStore> >::iterator::operator++()",93957345100304,93957345100750],["v8::internal::compiler::PersistentMap<v8::internal::compiler::(anonymous namespace)::UnobservableStore, bool, v8::base::hash<v8::internal::compiler::(anonymous namespace)::UnobservableStore> >::Get(v8::internal::compiler::(anonymous namespace)::UnobservableStore const&) const",93957345101040,93957345101341],["v8::internal::compiler::TypeCache::TypeCache()",93957345101424,93957345103071],["v8::internal::compiler::TypeNarrowingReducer::Reduce(v8::internal::compiler::Node*)",93957345103120,93957345106212],["v8::internal::compiler::TypedOptimization::TypedOptimization(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::CompilationDependencies*, v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*)",93957345106240,93957345106357],["v8::internal::compiler::TypedOptimization::ReduceConvertReceiver(v8::internal::compiler::Node*)",93957345107424,93957345107673],["v8::internal::compiler::TypedOptimization::ReduceCheckBounds(v8::internal::compiler::Node*)",93957345108416,93957345108613],["v8::internal::compiler::TypedOptimization::ReduceCheckEqualsSymbol(v8::internal::compiler::Node*)",93957345109088,93957345109339],["v8::internal::compiler::TypedOptimization::ReduceNumberFloor(v8::internal::compiler::Node*)",93957345109600,93957345110020],["v8::internal::compiler::TypedOptimization::ReduceReferenceEqual(v8::internal::compiler::Node*)",93957345110400,93957345110585],["v8::internal::compiler::TypedOptimization::ReduceStringLength(v8::internal::compiler::Node*)",93957345111408,93957345111851],["v8::internal::compiler::TypedOptimization::ReduceSelect(v8::internal::compiler::Node*)",93957345112720,93957345113261],["v8::internal::compiler::TypedOptimization::ReduceToBoolean(v8::internal::compiler::Node*)",93957345113760,93957345114420],["std::__1::basic_ostream<char, std::__1::char_traits<char> >::write(char const*, long)",93957346642528,93957346642777],["std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()",93957346642928,93957346642942],["std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()",93957346642976,93957346643008],["virtual thunk to std::__1::basic_iostream<char, std::__1::char_traits<char> >::~basic_iostream()",93957346643056,93957346643099],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957346643968,93957346644339],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::pbackfail(int)",93957346644432,93957346644524],["std::__1::basic_stringbuf<char, std::__1::char_traits<char>, std::__1::allocator<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int)",93957346644864,93957346645099],["std::__1::basic_ofstream<char, std::__1::char_traits<char> >::open(char const*, unsigned int)",93957346645360,93957346645415],["setenv",139871563514160,139871563514249],["abs",139871563517376,139871563517384],["mblen",139871563517472,139871563517617],["wctomb",139871563517952,139871563518057],["setstate",139871563518432,139871563518618],["srandom_r",139871563518816,139871563519118],["setstate_r",139871563519504,139871563519724],["rand",139871563519888,139871563519902],["_IO_seekoff",139871563745536,139871563745773],["getwchar_unlocked",139871563749056,139871563749109],["putwchar",139871563751568,139871563751916],["vwprintf",139871563752768,139871563752791],["vwscanf",139871563753408,139871563753431],["_IO_least_wmarker",139871563754896,139871563754951],["_IO_wdefault_pbackfail",139871563755200,139871563755626],["__woverflow",139871563755872,139871563755989],["_IO_wdoallocbuf",139871563756416,139871563756563],["_IO_switch_to_wget_mode",139871563756704,139871563756818],["__wuflow",139871563756944,139871563757298],["_IO_wdefault_xsgetn",139871563757664,139871563757895],["_IO_sungetwc",139871563758032,139871563758151],["_IO_init_wmarker",139871563758224,139871563758324],["_IO_seekwmark",139871563758416,139871563758582],["_dl_addr",139871564534384,139871564535227],["__libc_dlclose",139871564536464,139871564536509],["_dl_signal_exception",139871564538160,139871564538237],["_dl_catch_exception",139871564538336,139871564538604],["f32addf64x",139871565704144,139871565704538],["f32mulf32x",139871565709712,139871565710101],["f64xmulf128",139871565712176,139871565712716],["dsubl",139871565713712,139871565714120],["f64xsubf128",139871565715360,139871565715948],["free_stacks.cold",139871566579072,139871566579077],["__nptl_setxid.cold",139871566579086,139871566579095],["deregister_tm_clones",139871566579120,139871566579168],["__pthread_init_static_tls",139871566583856,139871566584172],["start_thread",139871566585296,139871566586228],["cleanup",139871566590544,139871566590568],["pthread_spin_destroy",139871566616752,139871566616755],["pthread_spin_trylock",139871566616800,139871566616820],["__pthread_barrier_init",139871566616848,139871566616910],["__pthread_barrier_wait",139871566617040,139871566617518],["pthread_barrierattr_destroy",139871566617536,139871566617539],["pthread_barrierattr_setpshared",139871566617568,139871566617590],["__pthread_key_delete",139871566617680,139871566617734],["__GI___pthread_setspecific",139871566617888,139871566618131],["__pthread_kill",139871566618384,139871566618477],["__pthread_cancel",139871566618688,139871566618894],["__GI___pthread_setcancelstate",139871566618960,139871566619107],["__GI___pthread_once",139871566619616,139871566619637],["pthread_getcpuclockid",139871566619664,139871566619702],["__shm_directory_freeres",139871566620256,139871566620289],["__new_sem_destroy",139871566620368,139871566620371],["sem_open",139871566621104,139871566622357],["__new_sem_wait_slow.constprop.0",139871566623200,139871566623413],["__sem_wait_cleanup",139871566623536,139871566623551],["__new_sem_wait_slow.constprop.0",139871566623760,139871566623981],["__sem_wait_cleanup",139871566624096,139871566624111],["__new_sem_wait_slow",139871566624336,139871566624565],["unwind_cleanup",139871566625760,139871566625776],["__lll_clocklock_wait",139871566626368,139871566626604],["__libc_msgsnd",139871566629776,139871566629939],["__restore_rt",139871566631232,139871566631248],["elision_init",139871566638400,139871566638573],["__lll_lock_elision",139871566638624,139871566638805],["std::__1::unique_ptr<v8::DelayedTasksPlatform, std::__1::default_delete<v8::DelayedTasksPlatform> >::~unique_ptr()",93957335210912,93957335211086],["v8::DelayedTasksPlatform::~DelayedTasksPlatform()",93957335211120,93957335211262],["v8::ProcessMessageTask::~ProcessMessageTask()",93957335307104,93957335307232],["v8::TerminateTask::~TerminateTask()",93957335307600,93957335307687],["non-virtual thunk to v8::TerminateTask::~TerminateTask()",93957335307824,93957335307912],["v8::Serializer::~Serializer()",93957335308016,93957335308044],["v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArrayWithFiller(v8::internal::Handle<v8::internal::Map>, int, v8::internal::Handle<v8::internal::Oddball>, v8::internal::AllocationType)",93957336827936,93957336828220],["v8::internal::FactoryBase<v8::internal::Factory>::NewScript(v8::internal::Handle<v8::internal::PrimitiveHeapObject>)",93957336831024,93957336831059],["v8::internal::FactoryBase<v8::internal::Factory>::NewUncompiledDataWithPreparseData(v8::internal::Handle<v8::internal::String>, int, int, v8::internal::Handle<v8::internal::PreparseData>)",93957336832848,93957336832864],["v8::internal::FactoryBase<v8::internal::Factory>::InternalizeString(v8::internal::Vector<unsigned short const> const&, bool)",93957336833488,93957336833626],["v8::internal::FactoryBase<v8::internal::Factory>::NewTwoByteInternalizedString(v8::internal::Vector<unsigned short const> const&, unsigned int)",93957336833888,93957336834108],["v8::internal::FactoryBase<v8::internal::Factory>::NewRawOneByteString(int, v8::internal::AllocationType)",93957336834304,93957336834483],["v8::internal::FactoryBase<v8::internal::Factory>::NewConsString(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::AllocationType)",93957336834688,93957336835794],["v8::internal::FactoryBase<v8::internal::Factory>::NewConsString(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, int, bool, v8::internal::AllocationType)",93957336836064,93957336836503],["v8::internal::Factory::NewSharedFunctionInfoForBuiltin(v8::internal::MaybeHandle<v8::internal::String>, int, v8::internal::FunctionKind)",93957336902400,93957336902417],["v8::internal::Factory::NewCallHandlerInfo(bool)",93957336912384,93957336912587],["v8::internal::FreeList::CreateFreeList()",93957336915776,93957336915875],["v8::internal::FreeListManyCached::Reset()",93957336917392,93957336917609],["v8::internal::FreeListManyCached::Free(unsigned long, unsigned long, v8::internal::FreeMode)",93957336918240,93957336918473],["v8::internal::FreeList::EvictFreeListItems(v8::internal::Page*)",93957336919760,93957336919969],["v8::internal::FreeListMany::~FreeListMany()",93957336920208,93957336920239],["v8::internal::GCTracer::CurrentEpoch(v8::internal::GCTracer::Scope::ScopeId)",93957336920560,93957336920612],["v8::internal::GCTracer::Scope::~Scope()",93957336920944,93957336921273],["v8::internal::GCTracer::GCTracer(v8::internal::Heap*)",93957336921328,93957336921972],["v8::internal::GCTracer::Start(v8::internal::GarbageCollector, v8::internal::GarbageCollectionReason, char const*)",93957336922016,93957336923446],["v8::internal::GCTracer::SampleAllocation(double, unsigned long, unsigned long, unsigned long)",93957336924128,93957336924297],["v8::internal::GCTracer::Stop(v8::internal::GarbageCollector)",93957336924544,93957336927686],["v8::internal::GCTracer::RecordGCSumCounters(double)",93957336928096,93957336928800],["v8::internal::GCTracer::Print() const",93957336935120,93957336935883],["v8::internal::GCTracer::AddContextDisposalTime(double)",93957336936032,93957336936115],["v8::internal::UnreachableObjectsFilter::~UnreachableObjectsFilter()",93957337048256,93957337048284],["non-virtual thunk to v8::internal::UnreachableObjectsFilter::MarkingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957337049792,93957337049922],["void std::__1::__function::__policy_invoker<void (v8::internal::AllocationSite)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::Heap::DeoptMarkedAllocationSites()::$_2, void (v8::internal::AllocationSite)> >(std::__1::__function::__policy_storage const*, v8::internal::AllocationSite&&)",93957337053072,93957337053135],["v8::internal::MemoryAllocator::~MemoryAllocator()",93957337053536,93957337053789],["void std::__1::vector<v8::internal::Heap::GCCallbackTuple, std::__1::allocator<v8::internal::Heap::GCCallbackTuple> >::__emplace_back_slow_path<void (*&)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags, void*), v8::GCType&, void*&>(void (*&)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags, void*), v8::GCType&, void*&)",93957337054496,93957337054801],["v8::internal::IncrementalMarkingJob::Start(v8::internal::Heap*)",93957337055872,93957337055884],["v8::internal::IncrementalMarkingJob::Task::RunInternal()",93957337056320,93957337056865],["v8::internal::IncrementalMarking::Observer::Step(int, unsigned long, unsigned long)",93957337056944,93957337057129],["v8::internal::MemoryChunkLayout::ObjectStartOffsetInCodePage()",93957337427776,93957337427829],["v8::internal::MemoryChunk::ReleaseAllAllocatedMemory()",93957337430464,93957337430474],["v8::internal::MeasureMemoryDelegate::~MeasureMemoryDelegate()",93957337431888,93957337431939],["v8::internal::MemoryMeasurement::ScheduleReportingTask()",93957337435872,93957337436100],["v8::internal::NativeContextStats::Clear()",93957337437728,93957337437922],["std::__1::list<v8::internal::MemoryMeasurement::Request, std::__1::allocator<v8::internal::MemoryMeasurement::Request> >::__move_assign(std::__1::list<v8::internal::MemoryMeasurement::Request, std::__1::allocator<v8::internal::MemoryMeasurement::Request> >&, std::__1::integral_constant<bool, true>)",93957337439104,93957337439327],["v8::internal::MemoryReducer::TimerTask::RunInternal()",93957337439600,93957337440060],["v8::internal::MemoryReducer::NotifyPossibleGarbage(v8::internal::MemoryReducer::Event const&)",93957337441424,93957337441654],["v8::internal::SemiSpace::EnsureCurrentCapacity()",93957337441840,93957337442379],["v8::internal::SemiSpace::Commit()",93957337442592,93957337443155],["v8::internal::SemiSpace::GrowTo(unsigned long)",93957337443232,93957337443910],["v8::internal::SemiSpace::PrependPage(v8::internal::Page*)",93957337444160,93957337444350],["v8::internal::SemiSpace::set_age_mark(unsigned long)",93957337444832,93957337444914],["v8::internal::NewSpace::CommittedMemory()",93957337445152,93957337445175],["v8::internal::NewSpace::ResetLinearAllocationArea()",93957337446064,93957337446319],["v8::internal::NewSpace::ResetParkedAllocationBuffers()",93957337446832,93957337446852],["v8::internal::SpaceWithLinearArea::ResumeAllocationObservers()",93957337599760,93957337599831],["v8::internal::MemoryChunk::FreeListsLength()",93957337600080,93957337600196],["v8::internal::StressScavengeObserver::RequestedGCDone()",93957337600896,93957337601235],["v8::internal::Sweeper::MergeOldToNewRememberedSetsForSweptPages()",93957337602752,93957337602897],["v8::internal::Sweeper::SweeperJob::GetMaxConcurrency(unsigned long) const",93957337612256,93957337612375],["v8::internal::CallOptimization::AnalyzePossibleApiFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957337618960,93957337619355],["v8::internal::ICStats::Reset()",93957337624464,93957337625047],["v8::internal::IC::UpdateState(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957337629584,93957337629869],["v8::internal::LoadIC::Load(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, bool, v8::internal::Handle<v8::internal::Object>)",93957337631456,93957337633998],["v8::internal::LoadIC::ComputeHandler(v8::internal::LookupIterator*)",93957337638896,93957337644731],["v8::internal::LoadHandler::LoadConstantFromPrototype(v8::internal::Isolate*)",93957337645424,93957337645510],["v8::internal::StoreIC::LookupForWrite(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::StoreOrigin)",93957337650640,93957337651840],["v8::internal::StoreIC::ComputeHandler(v8::internal::LookupIterator*)",93957337655904,93957337659444],["v8::internal::(anonymous namespace)::GetStoreMode(v8::internal::Handle<v8::internal::JSObject>, unsigned long)",93957337665248,93957337665641],["v8::internal::Stats_Runtime_LoadWithReceiverNoFeedbackIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337670864,93957337671636],["v8::internal::Stats_Runtime_LoadWithReceiverIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337675168,93957337675946],["v8::internal::Stats_Runtime_StoreIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337677696,93957337678571],["v8::internal::Stats_Runtime_StoreGlobalICNoFeedback_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337680352,93957337681060],["v8::internal::Stats_Runtime_KeyedStoreIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337684176,93957337685298],["v8::internal::Stats_Runtime_KeyedStoreIC_Slow(int, unsigned long*, v8::internal::Isolate*)",93957337686736,93957337687288],["v8::internal::Stats_Runtime_ElementsTransitionAndStoreIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337688752,93957337689585],["v8::internal::Stats_Runtime_StoreCallbackProperty(int, unsigned long*, v8::internal::Isolate*)",93957337693984,93957337694739],["v8::internal::Stats_Runtime_StorePropertyWithInterceptor(int, unsigned long*, v8::internal::Isolate*)",93957337699056,93957337700594],["v8::internal::Stats_Runtime_KeyedHasIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337703152,93957337703951],["v8::internal::MaybeObjectHandle::MaybeObjectHandle(v8::internal::Object, v8::internal::HeapObjectReferenceType, v8::internal::Isolate*)",93957337706352,93957337706448],["v8::internal::PropertyCallbackArguments::BasicCallNamedGetterCallback(void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957337707552,93957337708170],["std::__1::__function::__policy_invoker<v8::internal::MaybeHandle<v8::internal::Map> (v8::internal::Handle<v8::internal::Map>)>::__call_empty(std::__1::__function::__policy_storage const*, v8::internal::Handle<v8::internal::Map>&&)",93957337710384,93957337710393],["v8::internal::StubCache::Set(v8::internal::Name, v8::internal::Map, v8::internal::MaybeObject)",93957337710672,93957337710937],["v8::internal::Bootstrapper::Initialize(bool)",93957337711936,93957337711969],["v8::internal::Bootstrapper::CreateEnvironment(v8::internal::MaybeHandle<v8::internal::JSGlobalProxy>, v8::Local<v8::ObjectTemplate>, v8::ExtensionConfiguration*, unsigned long, v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*)",93957337712640,93957337713100],["v8::internal::Genesis::CreateSloppyModeFunctionMaps(v8::internal::Handle<v8::internal::JSFunction>)",93957337714832,93957337715422],["v8::internal::Genesis::CreateStrictModeFunctionMaps(v8::internal::Handle<v8::internal::JSFunction>)",93957337716288,93957337717096],["v8::internal::Genesis::CreateObjectFunction(v8::internal::Handle<v8::internal::JSFunction>)",93957337717520,93957337718663],["v8::internal::Genesis::CreateIteratorMaps(v8::internal::Handle<v8::internal::JSFunction>)",93957337718976,93957337721571],["v8::internal::(anonymous namespace)::SimpleInstallFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, v8::internal::Builtins::Name, int, bool, v8::internal::PropertyAttributes)",93957337721728,93957337721860],["v8::internal::(anonymous namespace)::CreateNonConstructorMap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::JSObject>, char const*)",93957337722048,93957337722409],["v8::internal::Genesis::CreateAsyncFunctionMaps(v8::internal::Handle<v8::internal::JSFunction>)",93957337724640,93957337725390],["v8::internal::(anonymous namespace)::ReplaceAccessors(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::String>, v8::internal::PropertyAttributes, v8::internal::Handle<v8::internal::AccessorPair>)",93957337726720,93957337727058],["v8::internal::Genesis::InstallGlobalThisBinding()",93957337727344,93957337727791],["v8::internal::(anonymous namespace)::CreateFunctionForBuiltinWithPrototype(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Builtins::Name, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::InstanceType, int, int, v8::internal::MutableMode)",93957337729408,93957337730137],["v8::internal::Genesis::HookUpGlobalObject(v8::internal::Handle<v8::internal::JSGlobalObject>)",93957337730496,93957337730968],["v8::internal::Genesis::TransferIndexedProperties(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>)",93957337734128,93957337734365],["v8::internal::(anonymous namespace)::SimpleInstallGetterSetter(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::String>, v8::internal::Builtins::Name, v8::internal::Builtins::Name)",93957337787904,93957337788090],["v8::internal::InstallWithIntrinsicDefaultProto(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, int)",93957337788208,93957337788559],["v8::internal::(anonymous namespace)::InstallSpeciesGetter(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957337788704,93957337788740],["v8::internal::(anonymous namespace)::InstallTrueValuedProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*)",93957337788896,93957337788981],["v8::internal::(anonymous namespace)::InstallConstant(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, v8::internal::Handle<v8::internal::Object>)",93957337789024,93957337789115],["v8::internal::(anonymous namespace)::CreateFunction(v8::internal::Isolate*, char const*, v8::internal::InstanceType, int, int, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Builtins::Name)",93957337789152,93957337789259],["v8::internal::Genesis::CreateArrayBuffer(v8::internal::Handle<v8::internal::String>, v8::internal::Genesis::ArrayBufferKind)",93957337790896,93957337791341],["v8::internal::Genesis::InitializeGlobal_harmony_sharedarraybuffer()",93957337792608,93957337792879],["v8::internal::Genesis::InitializeGlobal_harmony_weak_refs()",93957337793312,93957337794268],["v8::internal::Genesis::InitializeGlobal_harmony_relative_indexing_methods()",93957337794928,93957337795953],["v8::internal::Genesis::InitializeGlobal_regexp_linear_flag()",93957337796416,93957337796839],["v8::internal::Genesis::InitializeIteratorFunctions()",93957337797536,93957337801850],["v8::internal::(anonymous namespace)::InstallFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::String>, v8::internal::InstanceType, int, int, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Builtins::Name)",93957337803200,93957337803295],["v8::internal::Genesis::CreateInitialMapForArraySubclass(int, int)",93957337808336,93957337809463],["v8::internal::Genesis::InstallExtensions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>, v8::ExtensionConfiguration*)",93957337809808,93957337810786],["v8::internal::Genesis::ExtensionStates::set_state(v8::RegisteredExtension*, v8::internal::Genesis::ExtensionTraversalState)",93957337811152,93957337811435],["v8::internal::Genesis::ConfigureGlobalObjects(v8::Local<v8::ObjectTemplate>)",93957337812080,93957337812810],["v8::internal::Genesis::Genesis(v8::internal::Isolate*, v8::internal::MaybeHandle<v8::internal::JSGlobalProxy>, v8::Local<v8::ObjectTemplate>, unsigned long, v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*)",93957337813088,93957337814679],["v8::internal::(anonymous namespace)::SimpleInstallGetter(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Name>, v8::internal::Builtins::Name, bool)",93957337815072,93957337815215],["v8::internal::InitializeICUDefaultLocation(char const*, char const*)",93957337815552,93957337815619],["v8::internal::(anonymous namespace)::free_icu_data_ptr()",93957337815888,93957337815912],["v8::internal::ChoiceNode::EmitOutOfLineContinuation(v8::internal::RegExpCompiler*, v8::internal::Trace*, v8::internal::GuardedAlternative, v8::internal::AlternativeGeneration*, int, bool)",93957339850288,93957339850884],["v8::internal::RegExpErrorString(v8::internal::RegExpError)",93957339861456,93957339861476],["v8::internal::RegExpMacroAssembler::CheckNotInSurrogatePair(int, v8::internal::Label*)",93957339875744,93957339875923],["v8::internal::NativeRegExpMacroAssembler::Execute(v8::internal::String, int, unsigned char const*, unsigned char const*, int*, int, v8::internal::Isolate*, v8::internal::JSRegExp)",93957339877232,93957339877466],["v8::internal::RegExpParser::PatchNamedBackReferences()",93957339883216,93957339883725],["v8::internal::RegExpBuilder::AddAtom(v8::internal::RegExpTree*)",93957339884976,93957339885211],["v8::internal::RegExpParser::ParsePropertyClassName(v8::internal::ZoneVector<char>*, v8::internal::ZoneVector<char>*)",93957339888480,93957339890704],["v8::internal::RegExpParser::ParseBackReferenceIndex(int*)",93957339894864,93957339895265],["v8::internal::RegExpParser::ParseIntervalQuantifier(int*, int*)",93957339896896,93957339897745],["v8::internal::RegExpBuilder::AddQuantifierToAtom(int, int, v8::internal::RegExpQuantifier::QuantifierType)",93957339897984,93957339898824],["v8::internal::RegExpParser::ParseCaptureGroupName()",93957339899360,93957339903878],["v8::internal::RegExpParser::CreateCaptureNameMap()",93957339905024,93957339905411],["v8::internal::ZoneList<v8::internal::CharacterRange>::Add(v8::internal::CharacterRange const&, v8::internal::Zone*)",93957339906048,93957339906212],["v8::internal::RegExpParser::ParseClassEscape(v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::Zone*, bool, unsigned int*, bool*)",93957339907312,93957339908097],["v8::internal::RegExpParser::ParseRegExp(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::FlatStringReader*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::RegExpCompileData*)",93957339908576,93957339908739],["v8::internal::RegExpBuilder::AddCharacterClassForDesugaring(unsigned int)",93957339909152,93957339909521],["v8_inspector::V8Debugger::setPauseOnExceptionsState(v8::debug::ExceptionBreakState)",93957342533472,93957342533514],["v8_inspector::V8Debugger::terminateExecution(std::__1::unique_ptr<v8_inspector::protocol::Runtime::Backend::TerminateExecutionCallback, std::__1::default_delete<v8_inspector::protocol::Runtime::Backend::TerminateExecutionCallback> >)",93957342534704,93957342534939],["v8_inspector::V8Debugger::ScriptCompiled(v8::Local<v8::debug::Script>, bool, bool)",93957342537120,93957342537368],["v8_inspector::V8Debugger::ShouldBeSkipped(v8::Local<v8::debug::Script>, int, int)",93957342537776,93957342538063],["v8_inspector::V8Debugger::asyncTaskCandidateForStepping(void*)",93957342539104,93957342539243],["v8_inspector::V8Debugger::asyncTaskStartedForStepping(void*)",93957342539920,93957342540079],["non-virtual thunk to v8_inspector::V8Debugger::AsyncEventOccurred(v8::debug::DebugAsyncActionType, int, bool)",93957342540304,93957342540318],["v8_inspector::V8Debugger::getTargetScopes(v8::Local<v8::Context>, v8::Local<v8::Value>, v8_inspector::V8Debugger::ScopeTargetKind)",93957342540384,93957342541834],["v8_inspector::protocol::Runtime::PropertyPreview::setSubtype(v8_inspector::String16 const&)",93957342717680,93957342718342],["v8_inspector::(anonymous namespace)::BigIntMirror::buildPropertyPreview(v8::Local<v8::Context>, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >*) const",93957342736848,93957342737160],["void v8_crdtp::cbor::(anonymous namespace)::WriteBytesMostSignificantByteFirst<unsigned long>(unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342744816,93957342745197],["v8_crdtp::cbor::EncodeInt32(int, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342745424,93957342745447],["v8_crdtp::cbor::EncodeDouble(double, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342748928,93957342749169],["v8_crdtp::cbor::CBORTokenizer::CBORTokenizer(v8_crdtp::span<unsigned char>)",93957342749856,93957342749890],["v8_crdtp::cbor::CBORTokenizer::Status() const",93957342750672,93957342750685],["v8_crdtp::cbor::CBORTokenizer::GetEnvelope() const",93957342750768,93957342750789],["v8_crdtp::cbor::(anonymous namespace)::ParseValue(int, v8_crdtp::cbor::CBORTokenizer*, v8_crdtp::ParserHandler*)",93957342750992,93957342751573],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::~CBOREncoder()",93957342751632,93957342751683],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleMapEnd()",93957342751952,93957342752346],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleString8(v8_crdtp::span<unsigned char>)",93957342752608,93957342752695],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleBinary(v8_crdtp::span<unsigned char>)",93957342752848,93957342752882],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleInt32(int)",93957342752928,93957342752968],["v8_crdtp::cbor::(anonymous namespace)::CBOREncoder::HandleNull()",93957342753248,93957342753473],["void std::__1::vector<v8_crdtp::cbor::EnvelopeEncoder, std::__1::allocator<v8_crdtp::cbor::EnvelopeEncoder> >::emplace_back<>()",93957342753536,93957342753813],["v8::internal::compiler::InstructionSelector::MarkAsDefined(v8::internal::compiler::Node*)",93957342912960,93957342912999],["v8::internal::compiler::InstructionSelector::VisitNode(v8::internal::compiler::Node*)",93957342939744,93957342951405],["v8::internal::compiler::InstructionSelector::VisitPhi(v8::internal::compiler::Node*)",93957342956528,93957342957606],["v8::internal::compiler::InstructionSelector::VisitTrapIf(v8::internal::compiler::Node*, v8::internal::compiler::TrapId)",93957342959776,93957342959920],["v8::internal::compiler::InstructionSelector::MarkAsWord64(v8::internal::compiler::Node*)",93957342960640,93957342960724],["v8::internal::compiler::InstructionSelector::VisitLoadFramePointer(v8::internal::compiler::Node*)",93957342961328,93957342961494],["v8::internal::compiler::InstructionSelector::EmitBinarySearchSwitch(v8::internal::compiler::SwitchInfo const&, v8::internal::compiler::InstructionOperand const&)",93957342962816,93957342963461],["v8::internal::compiler::InstructionSelector::ZeroExtendsWord32ToWord64(v8::internal::compiler::Node*, int)",93957342965456,93957342965765],["std::__1::vector<v8::internal::compiler::StateValueDescriptor, v8::internal::ZoneAllocator<v8::internal::compiler::StateValueDescriptor> >::insert(std::__1::__wrap_iter<v8::internal::compiler::StateValueDescriptor const*>, unsigned long, v8::internal::compiler::StateValueDescriptor const&)",93957342966560,93957342967382],["_ZNSt3__16vectorIN2v88internal8compiler20StateValueDescriptorENS2_13ZoneAllocatorIS4_EEE6insertINS_11__wrap_iterIPS4_EEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISD_E9referenceEEE5valueESB_E4typeENS9_IPKS4_EESD_SD_",93957342970928,93957342971586],["void std::__1::__stable_sort_move<v8::internal::compiler::SwitchInfo::CasesSortedByValue() const::{lambda(v8::internal::compiler::CaseInfo, v8::internal::compiler::CaseInfo)#1}&, std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*> >(std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*>, std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*>, v8::internal::compiler::SwitchInfo::CasesSortedByValue() const::{lambda(v8::internal::compiler::CaseInfo, v8::internal::compiler::CaseInfo)#1}&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::compiler::CaseInfo*> >::difference_type, std::__1::iterator_traits::value_type*)",93957342972144,93957342972657],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, std::__1::__unordered_map_hasher<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, v8::internal::compiler::FeedbackSource::Hash, v8::internal::compiler::FeedbackSource::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, v8::internal::compiler::FeedbackSource::Equal, v8::internal::compiler::FeedbackSource::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo> > >::rehash(unsigned long)",93957342973680,93957342974051],["std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*>, std::__1::__unordered_map_hasher<v8::internal::compiler::InstructionSelector::FrameStateInput, std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*>, v8::internal::compiler::InstructionSelector::FrameStateInput::Hash, v8::internal::compiler::InstructionSelector::FrameStateInput::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::InstructionSelector::FrameStateInput, std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*>, v8::internal::compiler::InstructionSelector::FrameStateInput::Equal, v8::internal::compiler::InstructionSelector::FrameStateInput::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::InstructionSelector::FrameStateInput, v8::internal::compiler::InstructionSelector::CachedStateValues*> > >::find<v8::internal::compiler::InstructionSelector::FrameStateInput>(v8::internal::compiler::InstructionSelector::FrameStateInput const&)",93957342974816,93957342975257],["std::__1::vector<v8::internal::compiler::PushParameter, v8::internal::ZoneAllocator<v8::internal::compiler::PushParameter> >::__append(unsigned long)",93957342976272,93957342976898],["v8::internal::compiler::InstructionOperand::InterferesWith(v8::internal::compiler::InstructionOperand const&) const",93957342977072,93957342977215],["std::__1::basic_ostream<char, std::__1::char_traits<char> >& v8::internal::operator<< <v8::internal::XMMRegister, char const*>(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::XMMRegister)",93957342978368,93957342978432],["v8::internal::compiler::(anonymous namespace)::PrintBlockRow(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::ZoneVector<v8::internal::compiler::InstructionBlock*> const&)",93957343093632,93957343094575],["v8::internal::compiler::TopTierRegisterAllocationData::RangesDefinedInDeferredStayInDeferred()",93957343100384,93957343100723],["v8::internal::compiler::ConstraintBuilder::ResolvePhis(v8::internal::compiler::InstructionBlock const*)",93957343105824,93957343107041],["v8::internal::compiler::LiveRangeBuilder::ProcessInstructions(v8::internal::compiler::InstructionBlock const*, v8::internal::BitVector*)",93957343110272,93957343115863],["v8::internal::compiler::RegisterAllocator::SplitAndSpillRangesDefinedByMemoryOperand()",93957343126432,93957343126951],["v8::internal::compiler::LinearScanAllocator::AssignRegisterOnReload(v8::internal::compiler::LiveRange*, int)",93957343131120,93957343131800],["v8::internal::compiler::LinearScanAllocator::UpdateDeferredFixedRanges(v8::internal::compiler::TopTierRegisterAllocationData::SpillMode, v8::internal::compiler::InstructionBlock*)::$_3::operator()(v8::internal::compiler::LiveRange*) const",93957343139024,93957343139449],["v8::internal::compiler::LinearScanAllocator::ActiveToInactive(std::__1::__wrap_iter<v8::internal::compiler::LiveRange**>, v8::internal::compiler::LifetimePosition)",93957343145568,93957343145949],["v8::internal::compiler::LinearScanAllocator::TryAllocateFreeReg(v8::internal::compiler::LiveRange*, v8::internal::Vector<v8::internal::compiler::LifetimePosition> const&)",93957343148288,93957343148673],["v8::internal::compiler::LinearScanAllocator::SpillBetweenUntil(v8::internal::compiler::LiveRange*, v8::internal::compiler::LifetimePosition, v8::internal::compiler::LifetimePosition, v8::internal::compiler::LifetimePosition, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343152880,93957343153477],["v8::internal::compiler::OperandAssigner::CommitAssignment()",93957343154912,93957343155987],["v8::internal::compiler::LiveRangeConnector::ConnectRanges(v8::internal::Zone*)",93957343162912,93957343166951],["std::__1::__hash_table<v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>::hash, v8::internal::Handle<v8::internal::Map>::equal_to, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::Map> > >::__rehash(unsigned long)",93957343168336,93957343169046],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, void*>*>, bool> std::__1::__hash_table<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals, v8::internal::ZoneAllocator<v8::internal::compiler::LinearScanAllocator::RangeWithRegister> >::__emplace_unique_impl<v8::internal::compiler::LiveRange* const&>(v8::internal::compiler::LiveRange* const&)",93957343169872,93957343170314],["std::__1::__hash_table<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals, v8::internal::ZoneAllocator<v8::internal::compiler::LinearScanAllocator::RangeWithRegister> >::remove(std::__1::__hash_const_iterator<std::__1::__hash_node<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, void*>*>)",93957343173280,93957343173777],["std::__1::__tree_iterator<v8::internal::compiler::LiveRange*, std::__1::__tree_node<v8::internal::compiler::LiveRange*, void*>*, long> std::__1::__tree<v8::internal::compiler::LiveRange*, v8::internal::compiler::LinearScanAllocator::UnhandledLiveRangeOrdering, v8::internal::ZoneAllocator<v8::internal::compiler::LiveRange*> >::__emplace_multi<v8::internal::compiler::LiveRange* const&>(v8::internal::compiler::LiveRange* const&)",93957343173824,93957343174106],["v8::internal::compiler::SpillPlacer::~SpillPlacer()",93957343174160,93957343174209],["v8::internal::compiler::SpillPlacer::SetSpillRequired(v8::internal::compiler::InstructionBlock*, int, v8::internal::compiler::RpoNumber)",93957343175152,93957343175376],["v8::internal::compiler::SpillPlacer::FirstBackwardPass()",93957343175872,93957343176256],["v8::internal::compiler::SpillPlacer::SecondBackwardPass()",93957343176560,93957343177436],["_ZNSt3__16vectorIPN2v88internal8compiler4NodeENS2_13ZoneAllocatorIS5_EEE6insertIPS5_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS5_NS_15iterator_traitsISC_E9referenceEEE5valueENS_11__wrap_iterISA_EEE4typeENSG_IPKS5_EESC_SC_",93957343179168,93957343182698],["v8::internal::compiler::BranchElimination::~BranchElimination()",93957343182992,93957343183021],["v8::internal::compiler::BranchElimination::ReduceDeoptimizeConditional(v8::internal::compiler::Node*)",93957343183136,93957343183979],["v8::internal::compiler::BranchElimination::ReduceBranch(v8::internal::compiler::Node*)",93957343184320,93957343184903],["v8::internal::compiler::BranchElimination::ReduceTrapConditional(v8::internal::compiler::Node*)",93957343185296,93957343185959],["v8::internal::compiler::BranchElimination::MarkAsSafetyCheckIfNeeded(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343186736,93957343186904],["v8::internal::compiler::FunctionalList<v8::internal::compiler::BranchElimination::BranchCondition>::ResetToCommonAncestor(v8::internal::compiler::FunctionalList<v8::internal::compiler::BranchElimination::BranchCondition>)",93957343187136,93957343187375],["v8::internal::compiler::FunctionalList<v8::internal::compiler::BranchElimination::BranchCondition>::PushFront(v8::internal::compiler::BranchElimination::BranchCondition, v8::internal::Zone*, v8::internal::compiler::FunctionalList<v8::internal::compiler::BranchElimination::BranchCondition>)",93957343187712,93957343188079],["v8::internal::compiler::BytecodeLoopAssignments::AddList(v8::internal::interpreter::Register, unsigned int)",93957343188096,93957343188339],["v8::internal::compiler::BytecodeLoopAssignments::ContainsLocal(int) const",93957343188416,93957343188475],["v8::internal::compiler::BytecodeAnalysis::Analyze()",93957343188736,93957343195335],["v8::internal::compiler::operator==(v8::internal::compiler::ShuffleParameter const&, v8::internal::compiler::ShuffleParameter const&)",93957344512848,93957344513178],["v8::internal::compiler::MemoryLowering::MemoryLowering(v8::internal::compiler::JSGraph*, v8::internal::Zone*, v8::internal::compiler::JSGraphAssembler*, v8::internal::PoisoningMitigationLevel, v8::internal::compiler::MemoryLowering::AllocationFolding, std::__1::function<void (v8::internal::compiler::Node*, v8::internal::compiler::Node*, char const*, v8::internal::Zone*)>, char const*)",93957344575632,93957344575779],["v8::internal::compiler::MemoryOptimizer::MergeStates(v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> const&)",93957344585216,93957344585578],["v8::internal::compiler::NodeOriginTable::PrintJson(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957344590992,93957344591315],["v8::internal::compiler::NodeProperties::ReplaceControlInput(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957344593712,93957344593956],["v8::internal::compiler::NodeProperties::CollectValueProjections(v8::internal::compiler::Node*, v8::internal::compiler::Node**, unsigned long)",93957344595664,93957344595777],["v8::internal::compiler::NodeProperties::GetTypeOrAny(v8::internal::compiler::Node const*)",93957344600512,93957344600534],["v8::internal::compiler::Node* v8::internal::compiler::Node::NewImpl<v8::internal::compiler::Node*>(v8::internal::Zone*, unsigned int, v8::internal::compiler::Operator const*, int, v8::internal::compiler::Node* const*, bool)",93957344601568,93957344602241],["v8::internal::compiler::Node::TrimInputCount(int)",93957344604768,93957344605021],["v8::internal::compiler::Node::OwnedBy(v8::internal::compiler::Node const*) const",93957344605536,93957344605607],["v8::internal::compiler::(anonymous namespace)::PrintNode(v8::internal::compiler::Node const*, std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, int)",93957344606000,93957344606320],["v8::internal::compiler::IrOpcode::Mnemonic(v8::internal::compiler::IrOpcode::Value)",93957344606864,93957344606898],["v8::internal::compiler::OperationTyper::WeakenRange(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344607408,93957344608246],["v8::internal::compiler::OperationTyper::ConvertReceiver(v8::internal::compiler::Type)",93957344609376,93957344609504],["v8::internal::compiler::OperationTyper::NumberAbs(v8::internal::compiler::Type)",93957344610080,93957344610391],["v8::internal::compiler::OperationTyper::NumberExp(v8::internal::compiler::Type)",93957344610560,93957344610583],["v8::internal::compiler::OperationTyper::NumberToBoolean(v8::internal::compiler::Type)",93957344611088,93957344611244],["v8::internal::compiler::OperationTyper::NumberToString(v8::internal::compiler::Type)",93957344611440,93957344611547],["v8::internal::compiler::OperationTyper::NumberToUint8Clamped(v8::internal::compiler::Type)",93957344611744,93957344611812],["v8::internal::compiler::OperationTyper::CheckBigInt(v8::internal::compiler::Type)",93957344611872,93957344611883],["v8::internal::compiler::OperationTyper::NumberSubtract(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344612464,93957344613053],["v8::internal::compiler::OperationTyper::SpeculativeNumberAdd(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344613184,93957344613284],["v8::internal::compiler::OperationTyper::SpeculativeNumberSubtract(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344613424,93957344613524],["v8::internal::compiler::OperationTyper::NumberDivide(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344614416,93957344614906],["v8::internal::compiler::OperationTyper::NumberBitwiseOr(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344615616,93957344615974],["v8::internal::compiler::OperationTyper::NumberBitwiseXor(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344616272,93957344616515],["v8::internal::compiler::OperationTyper::NumberShiftRight(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344616800,93957344617045],["v8::internal::compiler::OperationTyper::NumberImul(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344617296,93957344617307],["v8::internal::compiler::OperationTyper::NumberMin(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344617872,93957344618423],["v8::internal::compiler::OperationTyper::SpeculativeNumberMultiply(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344618480,93957344618580],["v8::internal::compiler::OperationTyper::SpeculativeNumberModulus(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344618704,93957344618804],["v8::internal::compiler::OperationTyper::SpeculativeNumberBitwiseAnd(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344618928,93957344619028],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCreateClosure(v8::internal::interpreter::BytecodeArrayIterator*)",93957344826592,93957344827115],["v8::internal::compiler::SimplifiedLowering::DoIntegerToUint8Clamped(v8::internal::compiler::Node*)",93957344902384,93957344902895],["void v8::internal::compiler::RepresentationSelector::VisitNode<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344958064,93957344967102],["v8::internal::compiler::RepresentationSelector::ChangeToInt32OverflowOp(v8::internal::compiler::Node*)",93957345017376,93957345017455],["v8::internal::compiler::Operator1<v8::internal::compiler::FieldAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FieldAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::FieldAccess> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345038480,93957345038576],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberMin()",93957345040624,93957345040638],["v8::internal::compiler::SimplifiedOperatorBuilder::BigIntNegate()",93957345040880,93957345040894],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeTaggedToInt64()",93957345041136,93957345041150],["v8::internal::compiler::SimplifiedOperatorBuilder::TruncateBigIntToUint64()",93957345041328,93957345041342],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsCallable()",93957345041456,93957345041470],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsNumber()",93957345041584,93957345041598],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsFiniteNumber()",93957345041712,93957345041726],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberSameValue()",93957345041840,93957345041854],["v8::internal::compiler::SimplifiedOperatorBuilder::BigIntAdd()",93957345041968,93957345041982],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckEqualsSymbol()",93957345042096,93957345042110],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedInt32Div()",93957345042224,93957345042238],["v8::internal::compiler::SimplifiedOperatorBuilder::FindOrderedHashMapEntryForInt32Key()",93957345042320,93957345042334],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckString(v8::internal::compiler::FeedbackSource const&)",93957345042768,93957345042968],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedInt64ToTaggedSigned(v8::internal::compiler::FeedbackSource const&)",93957345043600,93957345043800],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedTaggedToTaggedSigned(v8::internal::compiler::FeedbackSource const&)",93957345044432,93957345044632],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedUint64ToTaggedSigned(v8::internal::compiler::FeedbackSource const&)",93957345045264,93957345045464],["v8::internal::compiler::SimplifiedOperatorBuilder::RuntimeAbort(v8::internal::AbortReason)",93957345046128,93957345046254],["v8::internal::compiler::SimplifiedOperatorBuilder::AssertType(v8::internal::compiler::Type)",93957345046672,93957345046815],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedFloat64ToInt32(v8::internal::compiler::CheckForMinusZeroMode, v8::internal::compiler::FeedbackSource const&)",93957345047904,93957345048198],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedTaggedToFloat64(v8::internal::compiler::CheckTaggedInputMode, v8::internal::compiler::FeedbackSource const&)",93957345049120,93957345049409],["v8::internal::compiler::SimplifiedOperatorBuilder::MapGuard(v8::internal::ZoneHandleSet<v8::internal::Map>)",93957345050160,93957345050285],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeBigIntAdd(v8::internal::compiler::BigIntOperationHint)",93957345050768,93957345050893],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeToNumber(v8::internal::compiler::NumberOperationHint, v8::internal::compiler::FeedbackSource const&)",93957345051280,93957345051593],["v8::internal::compiler::SimplifiedOperatorBuilder::ArgumentsLength()",93957345052096,93957345052215],["v8::internal::compiler::SimplifiedOperatorBuilder::NewDoubleElements(v8::internal::AllocationType)",93957345052496,93957345052621],["v8::internal::compiler::SimplifiedOperatorBuilder::Allocate(v8::internal::compiler::Type, v8::internal::AllocationType)",93957345053040,93957345053202],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberMultiply(v8::internal::compiler::NumberOperationHint)",93957345053584,93957345053666],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberBitwiseAnd(v8::internal::compiler::NumberOperationHint)",93957345053872,93957345053954],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberBitwiseXor(v8::internal::compiler::NumberOperationHint)",93957345054064,93957345054146],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberShiftRight(v8::internal::compiler::NumberOperationHint)",93957345054256,93957345054338],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeSafeIntegerAdd(v8::internal::compiler::NumberOperationHint)",93957345054448,93957345054530],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberLessThan(v8::internal::compiler::NumberOperationHint)",93957345054640,93957345054722],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberEqual(v8::internal::compiler::NumberOperationHint)",93957345054832,93957345054924],["v8::internal::compiler::SimplifiedOperatorBuilder::StoreField(v8::internal::compiler::FieldAccess const&)",93957345055168,93957345055403],["v8::internal::compiler::SimplifiedOperatorBuilder::StoreElement(v8::internal::compiler::ElementAccess const&)",93957345055584,93957345055745],["v8::internal::compiler::SimplifiedOperatorBuilder::LoadFromObject(v8::internal::compiler::ObjectAccess const&)",93957345055888,93957345056035],["v8::internal::compiler::SimplifiedOperatorBuilder::StoreToObject(v8::internal::compiler::ObjectAccess const&)",93957345056176,93957345056323],["v8::internal::compiler::SimplifiedOperatorBuilder::StoreDataViewElement(v8::internal::ExternalArrayType const&)",93957345056464,93957345056592],["v8::internal::compiler::SimplifiedOperatorBuilder::StoreMessage()",93957345056704,93957345056813],["v8::internal::compiler::SimplifiedOperatorBuilder::TransitionAndStoreElement(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>)",93957345056832,93957345056973],["v8::internal::compiler::SimplifiedOperatorBuilder::TransitionAndStoreNumberElement(v8::internal::Handle<v8::internal::Map>)",93957345057088,93957345057213],["v8::internal::compiler::SimplifiedOperatorBuilder::FastApiCall(v8::CFunctionInfo const*, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::CallDescriptor*)",93957345057360,93957345057620],["v8::internal::compiler::FastApiCallNode::FastCallArgumentCount() const",93957345057696,93957345057768],["v8::internal::compiler::SimplifiedOperatorGlobalCache::SimplifiedOperatorGlobalCache()",93957345057840,93957345083757],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckBoundsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckBoundsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckBoundsParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345083872,93957345083975],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckIfParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckIfParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckIfParameters> >::HashCode() const",93957345084032,93957345084131],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckForMinusZeroMode, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckForMinusZeroMode>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckForMinusZeroMode> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345084256,93957345084374],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckMinusZeroParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckMinusZeroParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckMinusZeroParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345084480,93957345084633],["v8::internal::compiler::Operator1<v8::internal::ConvertReceiverMode, v8::internal::compiler::OpEqualTo<v8::internal::ConvertReceiverMode>, v8::internal::compiler::OpHash<v8::internal::ConvertReceiverMode> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345084720,93957345084857],["v8::internal::compiler::Operator1<v8::internal::compiler::GrowFastElementsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::GrowFastElementsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::GrowFastElementsParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345085024,93957345085177],["v8::internal::compiler::Operator1<v8::internal::compiler::NumberOperationParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::NumberOperationParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::NumberOperationParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345085264,93957345085366],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckMapsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckMapsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckMapsParameters> >::HashCode() const",93957345085456,93957345085567],["v8::internal::compiler::Operator1<v8::internal::compiler::DynamicCheckMapsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::DynamicCheckMapsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::DynamicCheckMapsParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957345085744,93957345085776],["v8::internal::compiler::Operator1<v8::internal::compiler::DynamicCheckMapsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::DynamicCheckMapsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::DynamicCheckMapsParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345085856,93957345085926],["v8::internal::compiler::Operator1<v8::internal::ZoneHandleSet<v8::internal::Map>, v8::internal::compiler::OpEqualTo<v8::internal::ZoneHandleSet<v8::internal::Map> >, v8::internal::compiler::OpHash<v8::internal::ZoneHandleSet<v8::internal::Map> > >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345085968,93957345086038],["v8::internal::compiler::Operator1<v8::internal::compiler::ElementsTransition, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ElementsTransition>, v8::internal::compiler::OpHash<v8::internal::compiler::ElementsTransition> >::Equals(v8::internal::compiler::Operator const*) const",93957345086160,93957345086209],["v8::internal::compiler::Operator1<v8::internal::compiler::ElementsTransition, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ElementsTransition>, v8::internal::compiler::OpHash<v8::internal::compiler::ElementsTransition> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345086288,93957345086374],["v8::internal::compiler::Operator1<v8::internal::compiler::NewArgumentsElementsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::NewArgumentsElementsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::NewArgumentsElementsParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957345086560,93957345086600],["v8::internal::compiler::Operator1<v8::internal::compiler::NewArgumentsElementsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::NewArgumentsElementsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::NewArgumentsElementsParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957345086672,93957345086742],["atoi",139871563509664,139871563509685],["exit",139871563515488,139871563515514],["__cxa_thread_atexit_impl",139871563517056,139871563517254],["llabs",139871563517408,139871563517420],["lldiv",139871563517456,139871563517465],["mbstowcs",139871563517632,139871563517707],["wcstombs",139871563517872,139871563517947],["srand",139871563518064,139871563518202],["_IO_proc_close",139871563742816,139871563743460],["_IO_ungetc",139871563747088,139871563747359],["fgetwc_unlocked",139871563748688,139871563748725],["fgetws_unlocked",139871563749520,139871563749675],["putwc",139871563751232,139871563751493],["putchar",139871563751984,139871563752332],["swprintf",139871563752592,139871563752767],["wprintf",139871563752800,139871563753000],["fwscanf",139871563753216,139871563753393],["vswprintf",139871563753808,139871563753816],["swscanf",139871563754000,139871563754309],["_IO_switch_to_main_wget_area",139871563754960,139871563755009],["_IO_wsetb",139871563755088,139871563755185],["_IO_wdefault_finish",139871563755632,139871563755758],["utmpxname",139871564533776,139871564533781],["_dl_mcount_wrapper_check",139871564535392,139871564535441],["__libc_dlvsym",139871564536112,139871564536457],["_dl_vsym",139871564537696,139871564537930],["tgammaf128",139871565674672,139871565675158],["f64xaddf128",139871565706256,139871565706860],["f32xdivf128",139871565708640,139871565709186],["f32mulf64x",139871565710288,139871565710630],["f32xmulf128",139871565711584,139871565712170],["f32subf32x",139871565712720,139871565713141],["f32subf64x",139871565713312,139871565713704],["f32subf128",139871565714128,139871565714730],["setxid_unmark_thread.constprop.0",139871566581440,139871566581533],["__find_in_stack_list",139871566584656,139871566584865],["clear_once_control",139871566619552,139871566619613],["where_is_shmfs",139871566619712,139871566620190],["check_add_mapping",139871566620384,139871566621055],["walker",139871566622368,139871566622389],["do_futex_wait.constprop.0",139871566623040,139871566623185],["__lll_lock_wait_private",139871566626240,139871566626289],["void std::__1::__tree_remove<std::__1::__tree_node_base<void*>*>(std::__1::__tree_node_base<void*>*, std::__1::__tree_node_base<void*>*)",93957335209744,93957335210730],["v8::internal::FreePages(v8::PageAllocator*, void*, unsigned long)",93957335211088,93957335211102],["v8::InspectorFrontend::sendResponse(int, std::__1::unique_ptr<v8_inspector::StringBuffer, std::__1::default_delete<v8_inspector::StringBuffer> >)",93957335306448,93957335306519],["v8::ProcessMessageTask::RunInternal()",93957335307264,93957335307293],["non-virtual thunk to v8::internal::CancelableTask::Run()",93957335307568,93957335307599],["v8::TerminateTask::~TerminateTask()",93957335307696,93957335307791],["v8::internal::Handle<v8::internal::String> v8::internal::FactoryBase<v8::internal::Factory>::InternalizeStringWithKey<v8::internal::SeqSubStringKey<v8::internal::SeqOneByteString> >(v8::internal::SeqSubStringKey<v8::internal::SeqOneByteString>*)",93957336827152,93957336827175],["v8::internal::FactoryBase<v8::internal::Factory>::NewWeakFixedArrayWithMap(v8::internal::Map, int, v8::internal::AllocationType)",93957336828496,93957336828740],["v8::internal::FactoryBase<v8::internal::Factory>::NewRegExpBoilerplateDescription(v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::String>, v8::internal::Smi)",93957336830112,93957336830563],["v8::internal::FactoryBase<v8::internal::Factory>::NewSharedFunctionInfoForLiteral(v8::internal::FunctionLiteral*, v8::internal::Handle<v8::internal::Script>, bool)",93957336831568,93957336831721],["v8::internal::FactoryBase<v8::internal::Factory>::NewUncompiledDataWithoutPreparseData(v8::internal::Handle<v8::internal::String>, int, int)",93957336832832,93957336832848],["v8::internal::FactoryBase<v8::internal::Factory>::NewFeedbackMetadata(int, int, v8::internal::AllocationType)",93957336832864,93957336833092],["v8::internal::FactoryBase<v8::internal::Factory>::InternalizeString(v8::internal::Vector<unsigned char const> const&, bool)",93957336833344,93957336833482],["v8::internal::FactoryBase<v8::internal::Factory>::NewOneByteInternalizedString(v8::internal::Vector<unsigned char const> const&, unsigned int)",93957336833632,93957336833680],["v8::internal::Factory::NewJSArrayBuffer(std::__1::shared_ptr<v8::internal::BackingStore>, v8::internal::AllocationType)",93957336892304,93957336892665],["v8::internal::Factory::NewStackFrameInfo(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::HeapObject>, int, int, v8::internal::Handle<v8::internal::FixedArray>)",93957336905856,93957336906461],["v8::internal::Factory::CreateStrictFunctionMap(v8::internal::FunctionMode, v8::internal::Handle<v8::internal::JSFunction>)",93957336910944,93957336911528],["v8::internal::Factory::JSFunctionBuilder::PrepareFeedbackCell()",93957336913088,93957336913213],["v8::internal::FreeListCategory::Reset(v8::internal::FreeList*)",93957336915680,93957336915737],["v8::internal::FreeList::Free(unsigned long, unsigned long, v8::internal::FreeMode)",93957336916240,93957336916409],["v8::internal::FreeListMany::Allocate(unsigned long, unsigned long*, v8::internal::AllocationOrigin)",93957336916704,93957336916992],["v8::internal::FreeListManyCached::AddCategory(v8::internal::FreeListCategory*)",93957336917792,93957336917881],["v8::internal::FreeList::RemoveCategory(v8::internal::FreeListCategory*)",93957336918128,93957336918238],["v8::internal::FreeListManyCached::Allocate(unsigned long, unsigned long*, v8::internal::AllocationOrigin)",93957336918480,93957336918832],["v8::internal::FreeListManyCachedOrigin::Allocate(unsigned long, unsigned long*, v8::internal::AllocationOrigin)",93957336919728,93957336919754],["v8::internal::FreeListCategory::SumFreeList()",93957336919984,93957336920043],["v8::internal::FreeListMany::SelectFreeListCategoryType(unsigned long)",93957336920112,93957336920202],["v8::internal::GCIdleTimeHeapState::Print()",93957336920240,93957336920326],["v8::internal::GCIdleTimeHandler::Compute(double, v8::internal::GCIdleTimeHeapState)",93957336920464,93957336920560],["v8::internal::GCTracer::Scope::Scope(v8::internal::GCTracer*, v8::internal::GCTracer::Scope::ScopeId, v8::internal::ThreadKind)",93957336920624,93957336920862],["v8::internal::PagedSpace::SupportsAllocationObserver()",93957337047280,93957337047296],["v8::internal::UnreachableObjectsFilter::MarkingVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337048896,93957337049035],["non-virtual thunk to v8::internal::UnreachableObjectsFilter::MarkingVisitor::~MarkingVisitor()",93957337049616,93957337049679],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::HeapObject, void*>*>, bool> std::__1::__hash_table<v8::internal::HeapObject, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::HeapObject>, std::__1::allocator<v8::internal::HeapObject> >::__emplace_unique_key_args<v8::internal::HeapObject, v8::internal::HeapObject const&>(v8::internal::HeapObject const&, v8::internal::HeapObject const&)",93957337050464,93957337051251],["void std::__1::__function::__policy_invoker<void (v8::internal::AllocationSite)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::Heap::ProcessPretenuringFeedback()::$_1, void (v8::internal::AllocationSite)> >(std::__1::__function::__policy_storage const*, v8::internal::AllocationSite&&)",93957337053008,93957337053058],["v8::internal::MarkingBarrier::MarkValue(v8::internal::HeapObject, v8::internal::HeapObject)",93957337053136,93957337053416],["v8::internal::MemoryPressureInterruptTask::RunInternal()",93957337053520,93957337053534],["std::__1::default_delete<v8::internal::ConcurrentMarking>::operator()(v8::internal::ConcurrentMarking*) const",93957337053792,93957337054056],["v8::internal::MemoryAllocator::CommitExecutableMemory(v8::internal::VirtualMemory*, unsigned long, unsigned long, unsigned long)",93957337423616,93957337423946],["v8::internal::MemoryChunk::DecrementWriteUnprotectCounterAndMaybeSetPermissions(v8::PageAllocator::Permission)",93957337428336,93957337428489],["void v8::internal::MemoryChunk::ReleaseTypedSlotSet<(v8::internal::RememberedSetType)0>()",93957337430240,93957337430279],["void v8::internal::MemoryChunk::RegisterObjectWithInvalidatedSlots<(v8::internal::RememberedSetType)0>(v8::internal::HeapObject)",93957337430976,93957337431209],["v8::internal::TypedSlotSet::~TypedSlotSet()",93957337431808,93957337431836],["v8::internal::MeasureMemoryDelegate::MeasurementComplete(std::__1::vector<std::__1::pair<v8::Local<v8::Context>, unsigned long>, std::__1::allocator<std::__1::pair<v8::Local<v8::Context>, unsigned long> > > const&, unsigned long)",93957337432000,93957337433180],["v8::internal::MemoryMeasurement::StartProcessing()",93957337434256,93957337434778],["v8::internal::MemoryMeasurement::DefaultDelegate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::JSPromise>, v8::MeasureMemoryMode)",93957337437056,93957337437169],["v8::internal::NativeContextInferrer::InferForJSObject(v8::internal::Isolate*, v8::internal::Map, v8::internal::JSObject, unsigned long*)",93957337437376,93957337437721],["v8::internal::NativeContextStats::Merge(v8::internal::NativeContextStats const&)",93957337437936,93957337438044],["v8::internal::(anonymous namespace)::MemoryMeasurementResultBuilder::NewResult(unsigned long, unsigned long, unsigned long)",93957337438160,93957337439103],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::MemoryMeasurement::ScheduleReportingTask()::$_0, void ()> >(std::__1::__function::__policy_storage const*)",93957337439328,93957337439345],["v8::internal::MemoryReducer::MemoryReducer(v8::internal::Heap*)",93957337439520,93957337439599],["v8::internal::MemoryReducer::NotifyTimer(v8::internal::MemoryReducer::Event const&)",93957337440064,93957337440478],["v8::internal::MemoryReducer::NotifyMarkCompact(v8::internal::MemoryReducer::Event const&)",93957337441120,93957337441421],["v8::internal::MemoryReducer::TearDown()",93957337441664,93957337441681],["v8::internal::SpaceWithLinearArea::InvokeAllocationObservers(unsigned long, unsigned long, unsigned long, unsigned long)",93957337599904,93957337600076],["v8::internal::StressMarkingObserver::StressMarkingObserver(v8::internal::Heap*)",93957337600208,93957337600236],["v8::internal::StressScavengeObserver::Step(int, unsigned long, unsigned long)",93957337600464,93957337600870],["v8::internal::Sweeper::Sweeper(v8::internal::Heap*, v8::internal::MajorNonAtomicMarkingState*)",93957337601264,93957337601415],["v8::internal::Sweeper::TearDown()",93957337602240,93957337602291],["v8::internal::Sweeper::DrainSweepingWorklistForSpace(v8::internal::AllocationSpace)",93957337603968,93957337604148],["void std::__1::__sort<v8::internal::Sweeper::StartSweeping()::$_0::operator()(v8::internal::AllocationSpace) const::{lambda(v8::internal::Page*, v8::internal::Page*)#1}&, v8::internal::Page**>(v8::internal::Page**, v8::internal::Page**, v8::internal::Sweeper::StartSweeping()::$_0::operator()(v8::internal::AllocationSpace) const::{lambda(v8::internal::Page*, v8::internal::Page*)#1}&)",93957337608688,93957337610490],["v8::internal::WeakObjects::UpdateAfterScavenge()",93957337614016,93957337614127],["v8::internal::CallOptimization::GetAccessorContext(v8::internal::Map) const",93957337618240,93957337618351],["v8::internal::LoadHandler::LoadFullChain(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle const&, v8::internal::Handle<v8::internal::Smi>)",93957337620816,93957337621226],["v8::internal::ICStats::ICStats()",93957337623680,93957337623984],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, std::__1::unique_ptr<char [], std::__1::default_delete<char []> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, std::__1::unique_ptr<char [], std::__1::default_delete<char []> > >, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::unique_ptr<char [], std::__1::default_delete<char []> > >, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::unique_ptr<char [], std::__1::default_delete<char []> > >, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, std::__1::unique_ptr<char [], std::__1::default_delete<char []> > > > >::__emplace_unique_key_args<unsigned long, std::__1::pair<unsigned long, std::__1::unique_ptr<char [], std::__1::default_delete<char []> > > >(unsigned long const&, std::__1::pair<unsigned long, std::__1::unique_ptr<char [], std::__1::default_delete<char []> > >&&)",93957337626816,93957337627731],["v8::internal::AbstractCode v8::internal::JSFunction::abstract_code<v8::internal::Isolate>(v8::internal::Isolate*)",93957337629120,93957337629208],["v8::internal::IC::TypeError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957337630016,93957337630143],["v8::internal::IC::ConfigureVectorState(v8::internal::Handle<v8::internal::Name>, std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > > const&, std::__1::vector<v8::internal::MaybeObjectHandle, std::__1::allocator<v8::internal::MaybeObjectHandle> >*)",93957337631024,93957337631345],["v8::internal::LoadIC::UpdateCaches(v8::internal::LookupIterator*)",93957337634096,93957337634904],["v8::internal::IC::CopyICToMegamorphicCache(v8::internal::Handle<v8::internal::Name>)",93957337638016,93957337638321],["v8::internal::LoadHandler::LoadApiGetter(v8::internal::Isolate*, bool)",93957337644832,93957337644925],["v8::internal::LoadHandler::LoadNativeDataProperty(v8::internal::Isolate*, int)",93957337645216,93957337645305],["v8::internal::KeyedLoadIC::LoadElementHandler(v8::internal::Handle<v8::internal::Map>, v8::internal::KeyedAccessLoadMode)",93957337646672,93957337648220],["v8::internal::KeyedLoadIC::Load(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957337649008,93957337650338],["v8::internal::LookupIterator::ExtendingNonExtensible(v8::internal::Handle<v8::internal::JSReceiver>)",93957337651920,93957337651994],["v8::internal::StoreIC::Store(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::StoreOrigin)",93957337653648,93957337655354],["v8::internal::StoreHandler::StoreApiSetter(v8::internal::Isolate*, bool)",93957337659552,93957337659645],["v8::internal::KeyedStoreIC::StoreElementPolymorphicHandlers(std::__1::vector<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle>, std::__1::allocator<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle> > >*, v8::internal::KeyedAccessStoreMode)",93957337662064,93957337663159],["v8::internal::StoreInArrayLiteralIC::Store(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957337665856,93957337666749],["v8::internal::Stats_Runtime_LoadNoFeedbackIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337669600,93957337670458],["v8::internal::Stats_Runtime_LoadGlobalIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337672336,93957337673413],["v8::internal::Runtime_LoadWithReceiverIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337674736,93957337675157],["v8::internal::Runtime_KeyedLoadIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337675952,93957337676398],["v8::internal::Runtime_StoreIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337677200,93957337677696],["v8::internal::Runtime_StoreGlobalIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337678576,93957337679098],["v8::internal::Runtime_StoreGlobalICNoFeedback_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337680000,93957337680345],["v8::internal::Runtime_StoreGlobalIC_Slow(int, unsigned long*, v8::internal::Isolate*)",93957337681072,93957337682090],["v8::internal::Runtime_KeyedStoreIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337683472,93957337684163],["v8::internal::Runtime_StoreInArrayLiteralIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337685312,93957337685745],["v8::internal::Runtime_KeyedStoreIC_Slow(int, unsigned long*, v8::internal::Isolate*)",93957337686560,93957337686724],["v8::internal::Runtime_StoreInArrayLiteralIC_Slow(int, unsigned long*, v8::internal::Isolate*)",93957337687296,93957337687593],["v8::internal::Runtime_ElementsTransitionAndStoreIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337688288,93957337688737],["v8::internal::Runtime_CloneObjectIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337689600,93957337691424],["v8::internal::Runtime_StoreCallbackProperty(int, unsigned long*, v8::internal::Isolate*)",93957337693648,93957337693979],["v8::internal::Runtime_LoadPropertyWithInterceptor(int, unsigned long*, v8::internal::Isolate*)",93957337694752,93957337696124],["v8::internal::Runtime_StorePropertyWithInterceptor(int, unsigned long*, v8::internal::Isolate*)",93957337697920,93957337699041],["v8::internal::Runtime_LoadElementWithInterceptor(int, unsigned long*, v8::internal::Isolate*)",93957337700608,93957337701461],["v8::internal::Runtime_KeyedHasIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337702704,93957337703150],["v8::internal::Runtime_HasElementWithInterceptor(int, unsigned long*, v8::internal::Isolate*)",93957337703952,93957337704928],["v8::internal::KeyedLoadIC::~KeyedLoadIC()",93957337706288,93957337706339],["v8::internal::StoreHandler::StoreField(v8::internal::Isolate*, v8::internal::StoreHandler::Kind, int, v8::internal::FieldIndex, v8::internal::Representation)",93957337706448,93957337706570],["v8::internal::PropertyCallbackArguments::CallAccessorSetter(v8::internal::Handle<v8::internal::AccessorInfo>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>)",93957337706624,93957337707549],["v8::internal::PropertyCallbackArguments::CallNamedSetter(v8::internal::Handle<v8::internal::InterceptorInfo>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>)",93957337708176,93957337708950],["v8::internal::PropertyCallbackArguments::CallIndexedQuery(v8::internal::Handle<v8::internal::InterceptorInfo>, unsigned int)",93957337709584,93957337710375],["v8::internal::MaybeHandle<v8::internal::Map> std::__1::__function::__policy_invoker<v8::internal::MaybeHandle<v8::internal::Map> (v8::internal::Handle<v8::internal::Map>)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::KeyedStoreIC::UpdateStoreElement(v8::internal::Handle<v8::internal::Map>, v8::internal::KeyedAccessStoreMode, v8::internal::Handle<v8::internal::Map>)::$_1, v8::internal::MaybeHandle<v8::internal::Map> (v8::internal::Handle<v8::internal::Map>)> >(std::__1::__function::__policy_storage const*, v8::internal::Handle<v8::internal::Map>&&)",93957337710400,93957337710420],["v8::internal::StubCache::Initialize()",93957337710480,93957337710662],["v8::internal::SourceCodeCache::Lookup(v8::internal::Isolate*, v8::internal::Vector<char const>, v8::internal::Handle<v8::internal::SharedFunctionInfo>*)",93957337710944,93957337711290],["v8::internal::Bootstrapper::Bootstrapper(v8::internal::Isolate*)",93957337711904,93957337711935],["v8::internal::Bootstrapper::InitializeOncePerProcess()",93957337711984,93957337712546],["v8::internal::Bootstrapper::Iterate(v8::internal::RootVisitor*)",93957337712576,93957337712628],["v8::internal::Bootstrapper::DetachGlobal(v8::internal::Handle<v8::internal::Context>)",93957337713104,93957337713689],["v8::internal::(anonymous namespace)::CreateFunctionForBuiltin(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Map>, v8::internal::Builtins::Name)",93957337714352,93957337714820],["v8::internal::Genesis::GetThrowTypeErrorIntrinsic()",93957337715424,93957337715685],["v8::internal::TextNode::CreateForSurrogatePair(v8::internal::Zone*, v8::internal::CharacterRange, v8::internal::CharacterRange, bool, v8::internal::RegExpNode*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957339840128,93957339840829],["v8::internal::RegExpCompiler::PreprocessRegExp(v8::internal::RegExpCompileData*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, bool)",93957339854528,93957339855522],["v8::internal::Analysis<v8::internal::(anonymous namespace)::AssertionPropagator, v8::internal::(anonymous namespace)::EatsAtLeastPropagator>::VisitNegativeLookaroundChoice(v8::internal::NegativeLookaroundChoiceNode*)",93957339860128,93957339860534],["v8::internal::IrregexpInterpreter::Result v8::internal::(anonymous namespace)::RawMatch<unsigned short>(v8::internal::Isolate*, v8::internal::ByteArray, v8::internal::String, v8::internal::Vector<unsigned short const>, int*, int, int, int, unsigned int, v8::internal::RegExp::CallOrigin, unsigned int)",93957339868432,93957339874781],["v8::internal::RegExpMacroAssembler::CaseInsensitiveCompareNonUnicode(unsigned long, unsigned long, unsigned long, v8::internal::Isolate*)",93957339875200,93957339875576],["v8::internal::RegExpMacroAssembler::CheckPosition(int, v8::internal::Label*)",93957339875968,93957339876002],["v8::internal::NativeRegExpMacroAssembler::CheckStackGuardState(v8::internal::Isolate*, int, v8::internal::RegExp::CallOrigin, unsigned long*, v8::internal::Code, unsigned long*, unsigned char const**, unsigned char const**)",93957339876192,93957339876932],["v8::internal::RegExpParser::Advance()",93957339877552,93957339877917],["v8::internal::RegExpParser::ParseDisjunction()",93957339878144,93957339883208],["v8::internal::RegExpBuilder::ToRegExp()",93957339883728,93957339883930],["v8::internal::RegExpParser::GetCapture(int)",93957339884400,93957339884964],["v8::internal::RegExpBuilder::AddCharacterClass(v8::internal::RegExpCharacterClass*)",93957339885216,93957339885377],["v8::internal::RegExpParser::ParseCharacterClass(v8::internal::RegExpBuilder const*)",93957339886800,93957339888471],["v8::internal::RegExpParser::AddPropertyClassRange(v8::internal::ZoneList<v8::internal::CharacterRange>*, bool, v8::internal::ZoneVector<char> const&, v8::internal::ZoneVector<char> const&)",93957339890704,93957339891658],["v8::internal::RegExpBuilder::AddCharacter(unsigned short)",93957339894368,93957339894862],["v8::internal::RegExpParser::ParseUnicodeEscape(unsigned int*)",93957339895280,93957339896232],["v8_inspector::V8Debugger::enable()",93957342532160,93957342532281],["v8_inspector::V8Debugger::interruptAndBreak(int)",93957342533712,93957342533746],["v8_inspector::V8Debugger::stepOutOfFunction(int)",93957342534576,93957342534650],["v8_inspector::V8Debugger::continueToLocation(int, v8_inspector::V8DebuggerScript*, std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >, v8_inspector::String16 const&)",93957342535072,93957342535656],["v8_inspector::V8Debugger::handleProgramBreak(v8::Local<v8::Context>, v8::Local<v8::Value>, std::__1::vector<int, std::__1::allocator<int> > const&, v8::debug::ExceptionType, bool)",93957342536416,93957342537114],["v8_inspector::V8Debugger::BreakProgramRequested(v8::Local<v8::Context>, std::__1::vector<int, std::__1::allocator<int> > const&)",93957342537376,93957342537397],["v8_inspector::V8Debugger::IsFunctionBlackboxed(v8::Local<v8::debug::Script>, v8::debug::Location const&, v8::debug::Location const&)",93957342537488,93957342537775],["v8_inspector::V8Debugger::AsyncEventOccurred(v8::debug::DebugAsyncActionType, int, bool)",93957342538064,93957342538698],["v8_inspector::String16 v8_inspector::String16::concat<char, v8_inspector::String16, char>(char, v8_inspector::String16, char)",93957342708240,93957342708982],["void std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >::__emplace_back_slow_path<char const (&) [17]>(char const (&) [17])",93957342730816,93957342731193],["v8_inspector::(anonymous namespace)::NumberMirror::buildPropertyPreview(v8::Local<v8::Context>, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >*) const",93957342734944,93957342735319],["v8_inspector::(anonymous namespace)::SymbolMirror::buildPropertyPreview(v8::Local<v8::Context>, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >*) const",93957342738384,93957342738763],["v8_crdtp::cbor::internals::ReadTokenStart(v8_crdtp::span<unsigned char>, v8_crdtp::cbor::MajorType*, unsigned long*)",93957342742288,93957342742460],["v8_crdtp::cbor::EncodeIndefiniteLengthMapStart()",93957342745328,93957342745336],["v8_crdtp::cbor::EncodeIndefiniteLengthArrayStart()",93957342745392,93957342745400],["v8_crdtp::cbor::EncodeString8(v8_crdtp::span<unsigned char>, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342746000,93957342746058],["v8_crdtp::cbor::EncodeBinary(v8_crdtp::span<unsigned char>, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342748656,93957342748915],["v8_crdtp::cbor::EnvelopeEncoder::EncodeStart(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342749184,93957342749635],["v8_crdtp::cbor::NewCBOREncoder(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, v8_crdtp::Status*)",93957342749776,93957342749852],["v8_crdtp::cbor::CBORTokenizer::ReadNextToken(bool)",93957342749904,93957342750609],["v8_crdtp::cbor::CBORTokenizer::EnterEnvelope()",93957342750656,93957342750671],["v8_crdtp::cbor::CBORTokenizer::GetInt32() const",93957342750688,93957342750704],["v8_crdtp::cbor::CBORTokenizer::GetString8() const",93957342750736,93957342750760],["v8_crdtp::cbor::CBORTokenizer::GetEnvelopeContents() const",93957342750800,93957342750824],["v8::internal::compiler::InstructionSelector::SelectInstructions()",93957342907552,93957342909065],["v8::internal::compiler::StateValueList::PushArgumentsLength()",93957342917904,93957342918165],["v8::internal::compiler::OperandGenerator::DefineAsLocation(v8::internal::compiler::Node*, v8::internal::compiler::LinkageLocation)",93957342937664,93957342937925],["v8::internal::compiler::InstructionSelector::VisitReturn(v8::internal::compiler::Node*)",93957342954848,93957342955380],["v8::internal::compiler::InstructionSelector::VisitParameter(v8::internal::compiler::Node*)",93957342956064,93957342956402],["v8::internal::compiler::InstructionSelector::VisitConstant(v8::internal::compiler::Node*)",93957342958080,93957342958153],["v8::internal::compiler::InstructionSelector::VisitDeoptimizeUnless(v8::internal::compiler::Node*)",93957342958736,93957342959026],["v8::internal::compiler::InstructionSelector::VisitStaticAssert(v8::internal::compiler::Node*)",93957342960064,93957342960155],["v8::internal::compiler::InstructionSelector::VisitRetain(v8::internal::compiler::Node*)",93957342960432,93957342960634],["v8::internal::compiler::InstructionSelector::MarkAsSimd128(v8::internal::compiler::Node*)",93957342960736,93957342960820],["v8::internal::compiler::InstructionSelector::VisitLoadStackCheckOffset(v8::internal::compiler::Node*)",93957342961152,93957342961318],["v8::internal::compiler::InstructionSelector::VisitLoadParentFramePointer(v8::internal::compiler::Node*)",93957342961504,93957342961670],["v8::internal::compiler::InstructionSelector::EmitTableSwitch(v8::internal::compiler::SwitchInfo const&, v8::internal::compiler::InstructionOperand const&)",93957342962160,93957342962804],["v8::internal::compiler::OperandGenerator::DefineAsConstant(v8::internal::compiler::Node*)",93957342963472,93957342963830],["v8::internal::compiler::UnparkedScopeIfNeeded::UnparkedScopeIfNeeded(v8::internal::compiler::JSHeapBroker*, bool)",93957342965360,93957342965451],["v8::internal::compiler::(anonymous namespace)::GetFrameStateDescriptorInternal(v8::internal::Zone*, v8::internal::compiler::FrameState)",93957342965776,93957342966264],["v8::internal::compiler::LinearScanAllocator::PrintRangeOverview(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957343093312,93957343093619],["v8::internal::compiler::SpillRange::TryMerge(v8::internal::compiler::SpillRange*)",93957343095536,93957343095843],["v8::internal::compiler::TopTierRegisterAllocationData::InitializePhiMap(v8::internal::compiler::InstructionBlock const*, v8::internal::compiler::PhiInstruction*)",93957343099152,93957343099879],["v8::internal::compiler::ConstraintBuilder::AllocateFixed(v8::internal::compiler::UnallocatedOperand*, int, bool, bool)",93957343100816,93957343101271],["v8::internal::compiler::ConstraintBuilder::MeetRegisterConstraintsForLastInstructionInBlock(v8::internal::compiler::InstructionBlock const*)",93957343104864,93957343105686],["v8::internal::compiler::LiveRangeBuilder::ComputeLiveOut(v8::internal::compiler::InstructionBlock const*, v8::internal::compiler::TopTierRegisterAllocationData*)",93957343107104,93957343107774],["v8::internal::compiler::LiveRangeBuilder::Define(v8::internal::compiler::LifetimePosition, v8::internal::compiler::InstructionOperand*, void*, v8::internal::compiler::UsePositionHintType, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343109008,93957343109712],["v8::internal::compiler::LiveRangeBuilder::ProcessLoopHeader(v8::internal::compiler::InstructionBlock const*, v8::internal::BitVector*)",93957343116928,93957343117682],["v8::internal::compiler::LiveRangeBundle::InsertUses(v8::internal::compiler::UseInterval*)",93957343125824,93957343126149],["v8::internal::compiler::RegisterAllocator::FindOptimalSplitPos(v8::internal::compiler::LifetimePosition, v8::internal::compiler::LifetimePosition)",93957343127376,93957343127567],["v8::internal::compiler::LinearScanAllocator::MaybeUndoPreviousSplit(v8::internal::compiler::LiveRange*)",93957343129200,93957343129621],["v8::internal::compiler::LinearScanAllocator::ReloadLiveRanges(v8::internal::ZoneUnorderedSet<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals> const&, v8::internal::compiler::LifetimePosition)",93957343132128,93957343133040],["v8::internal::compiler::LinearScanAllocator::ComputeStateFromManyPredecessors(v8::internal::compiler::InstructionBlock*, v8::internal::ZoneUnorderedSet<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals>*)::$_0::operator()(std::__1::function<bool (v8::internal::compiler::TopLevelLiveRange*)>, v8::internal::ZoneUnorderedSet<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals>*, bool*) const",93957343137952,93957343138420],["v8::internal::compiler::LinearScanAllocator::AddToInactive(v8::internal::compiler::LiveRange*)",93957343141920,93957343142263],["v8::internal::compiler::LinearScanAllocator::TryReuseSpillForPhi(v8::internal::compiler::TopLevelLiveRange*)",93957343145040,93957343145562],["v8::internal::compiler::LinearScanAllocator::InactiveToActive(std::__1::__tree_const_iterator<v8::internal::compiler::LiveRange*, std::__1::__tree_node<v8::internal::compiler::LiveRange*, void*>*, long>, v8::internal::compiler::LifetimePosition)",93957343145952,93957343146895],["v8::internal::compiler::LinearScanAllocator::TryAllocatePreferredReg(v8::internal::compiler::LiveRange*, v8::internal::Vector<v8::internal::compiler::LifetimePosition> const&)",93957343147936,93957343148286],["v8::internal::compiler::LinearScanAllocator::AllocateBlockedReg(v8::internal::compiler::LiveRange*, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343148688,93957343150884],["v8::internal::compiler::LinearScanAllocator::SplitAndSpillIntersecting(v8::internal::compiler::LiveRange*, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343151456,93957343152877],["v8::internal::compiler::OperandAssigner::DecideSpillingMode()",93957343153488,93957343153761],["v8::internal::compiler::OperandAssigner::AssignSpillSlots()",93957343154080,93957343154904],["v8::internal::compiler::ReferenceMapPopulator::PopulateReferenceMaps()",93957343156000,93957343157608],["v8::internal::compiler::LiveRangeConnector::CommitSpillsInDeferredBlocks(v8::internal::compiler::TopLevelLiveRange*, v8::internal::compiler::LiveRangeBoundArray*, v8::internal::Zone*)",93957343160272,93957343162912],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, void*>*>, bool> std::__1::__hash_table<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals, v8::internal::ZoneAllocator<v8::internal::compiler::LinearScanAllocator::RangeWithRegister> >::__emplace_unique_impl<v8::internal::compiler::TopLevelLiveRange* const&, int&>(v8::internal::compiler::TopLevelLiveRange* const&, int&)",93957343166960,93957343167395],["std::__1::__hash_table<v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>::hash, v8::internal::Handle<v8::internal::Map>::equal_to, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::Map> > >::rehash(unsigned long)",93957343167952,93957343168323],["v8::internal::compiler::LinearScanAllocator::UpdateDeferredFixedRanges(v8::internal::compiler::TopTierRegisterAllocationData::SpillMode, v8::internal::compiler::InstructionBlock*)::$_3::operator()(v8::internal::compiler::LiveRange*) const::{lambda(v8::internal::compiler::LiveRange*, v8::internal::compiler::LiveRange*, std::__1::function<void (v8::internal::compiler::LiveRange*)>)#1}::operator()(v8::internal::compiler::LiveRange*, v8::internal::compiler::LiveRange*, std::__1::function<void (v8::internal::compiler::LiveRange*)>) const",93957343169056,93957343169771],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::LiveRange*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::LinearScanAllocator::UpdateDeferredFixedRanges(v8::internal::compiler::TopTierRegisterAllocationData::SpillMode, v8::internal::compiler::InstructionBlock*)::$_3::operator()(v8::internal::compiler::LiveRange*) const::{lambda(v8::internal::compiler::LiveRange*)#2}, void (v8::internal::compiler::LiveRange*)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::LiveRange*)",93957343169824,93957343169857],["std::__1::vector<v8::internal::SourcePosition, v8::internal::ZoneAllocator<v8::internal::SourcePosition> >::__append(unsigned long, v8::internal::SourcePosition const&)",93957343170320,93957343171570],["std::__1::pair<std::__1::__tree_iterator<v8::internal::compiler::LiveRange*, std::__1::__tree_node<v8::internal::compiler::LiveRange*, void*>*, long>, std::__1::__tree_iterator<v8::internal::compiler::LiveRange*, std::__1::__tree_node<v8::internal::compiler::LiveRange*, void*>*, long> > std::__1::__tree<v8::internal::compiler::LiveRange*, v8::internal::compiler::LinearScanAllocator::UnhandledLiveRangeOrdering, v8::internal::ZoneAllocator<v8::internal::compiler::LiveRange*> >::__equal_range_multi<v8::internal::compiler::LiveRange*>(v8::internal::compiler::LiveRange* const&)",93957343172624,93957343173267],["bool std::__1::__function::__policy_invoker<bool (v8::internal::compiler::TopLevelLiveRange*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::LinearScanAllocator::ComputeStateFromManyPredecessors(v8::internal::compiler::InstructionBlock*, v8::internal::ZoneUnorderedSet<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals>*)::$_1, bool (v8::internal::compiler::TopLevelLiveRange*)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::TopLevelLiveRange*)",93957343173792,93957343173804],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicXor(v8::internal::MachineType)",93957344508800,93957344508915],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreRepresentation>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreRepresentation> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344570016,93957344570086],["v8::internal::compiler::MapInference::Is(v8::internal::Handle<v8::internal::Map>)",93957344574560,93957344574611],["v8::internal::compiler::MemoryLowering::ReduceStore(v8::internal::compiler::Node*, v8::internal::compiler::MemoryLowering::AllocationState const*)",93957344577872,93957344578237],["v8::internal::compiler::MemoryOptimizer::EnqueueUses(v8::internal::compiler::Node*, v8::internal::compiler::MemoryLowering::AllocationState const*)",93957344583984,93957344584315],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> >, std::__1::__tree_node<std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> >, std::__1::__map_value_compare<unsigned int, std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> >, std::__1::less<unsigned int>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> > > >::__emplace_unique_key_args<unsigned int, std::__1::pair<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> > >(unsigned int const&, std::__1::pair<unsigned int, v8::internal::ZoneVector<v8::internal::compiler::MemoryLowering::AllocationState const*> >&&)",93957344588448,93957344588764],["v8::internal::compiler::NodeOriginTable::NodeOriginTable(v8::internal::compiler::Graph*)",93957344590544,93957344590623],["v8::internal::compiler::NodeProperties::IsFrameStateEdge(v8::internal::compiler::Edge)",93957344592128,93957344592230],["v8::internal::compiler::NodeProperties::ReplaceValueInputs(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344593296,93957344593511],["v8::internal::compiler::NodeProperties::ReplaceFrameStateInput(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344594208,93957344594406],["v8::internal::compiler::NodeProperties::FindFrameStateBefore(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344595200,93957344595545],["v8::internal::compiler::NodeProperties::GetJSCreateMap(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*)",93957344596096,93957344597138],["v8::internal::compiler::NodeProperties::CanBeNullOrUndefined(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344600080,93957344600299],["v8::internal::compiler::NodeProperties::IsFreshObject(v8::internal::compiler::Node*)",93957344600720,93957344600948],["v8::internal::compiler::Node::AppendUse(v8::internal::compiler::Node::Use*)",93957344601504,93957344601542],["v8::internal::compiler::Node::NullAllInputs()",93957344602336,93957344602472],["v8::internal::compiler::Node::RemoveInput(int)",93957344604224,93957344604758],["v8::internal::compiler::Node::EnsureInputCount(v8::internal::Zone*, int)",93957344605024,93957344605381],["v8::internal::compiler::Node::ReplaceUses(v8::internal::compiler::Node*)",93957344605424,93957344605521],["v8::internal::compiler::Node::OwnedBy(v8::internal::compiler::Node const*, v8::internal::compiler::Node const*) const",93957344605616,93957344605727],["v8::internal::compiler::Node::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int) const",93957344605984,93957344605996],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Node const&)",93957344606320,93957344606815],["v8::internal::compiler::Node::Uses::const_iterator::operator++(int)",93957344606848,93957344606863],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::IrOpcode::Value)",93957344606912,93957344606976],["v8::internal::compiler::OperationTyper::Merge(v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344607376,93957344607398],["v8::internal::compiler::OperationTyper::AddRanger(double, double, double, double)",93957344608256,93957344608608],["v8::internal::compiler::OperationTyper::MultiplyRanger(double, double, double, double)",93957344608976,93957344609374],["v8::internal::compiler::OperationTyper::ToNumber(v8::internal::compiler::Type)",93957344609504,93957344609818],["v8::internal::compiler::OperationTyper::ToNumeric(v8::internal::compiler::Type)",93957344609952,93957344610079],["v8::internal::compiler::OperationTyper::NumberAcos(v8::internal::compiler::Type)",93957344610400,93957344610411],["v8::internal::compiler::OperationTyper::NumberClz32(v8::internal::compiler::Type)",93957344610528,93957344610545],["v8::internal::compiler::OperationTyper::NumberFloor(v8::internal::compiler::Type)",93957344610592,93957344610696],["v8::internal::compiler::CFGBuilder::ConnectThrow(v8::internal::compiler::Node*)",93957344773168,93957344773376],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessCalleeForCallOrConstruct(v8::internal::compiler::Callee const&, v8::base::Optional<v8::internal::compiler::Hints>, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&, v8::internal::SpeculationMode, v8::internal::compiler::MissingArgumentsPolicy, v8::internal::compiler::Hints*)",93957344844784,93957344846216],["v8::internal::compiler::SimplifiedLowering::DoJSToNumberOrNumericTruncatesToFloat64(v8::internal::compiler::Node*, v8::internal::compiler::RepresentationSelector*)",93957344888864,93957344891090],["void v8::internal::compiler::RepresentationSelector::VisitBinop<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::UseInfo, v8::internal::MachineRepresentation, v8::internal::compiler::Type)",93957344937520,93957344937825],["void v8::internal::compiler::RepresentationSelector::VisitObjectState<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*)",93957344951248,93957344951633],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeAdditiveOp<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344969584,93957344969887],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeIntegerAdditiveOp<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957345013632,93957345015550],["void v8::internal::compiler::RepresentationSelector::VisitObjectIs<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::SimplifiedLowering*)",93957345023952,93957345024378],["v8::internal::compiler::SimplifiedOperatorReducer::Change(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::Node*)",93957345037408,93957345037563],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::DynamicCheckMapsParameters const&)",93957345039488,93957345039724],["v8::internal::compiler::SimplifiedOperatorBuilder::SimplifiedOperatorBuilder(v8::internal::Zone*)",93957345040464,93957345040575],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberSin()",93957345040688,93957345040702],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberToString()",93957345040816,93957345040830],["v8::internal::compiler::SimplifiedOperatorBuilder::StringFromSingleCodePoint()",93957345040944,93957345040958],["v8::internal::compiler::SimplifiedOperatorBuilder::PlainPrimitiveToFloat64()",93957345041072,93957345041086],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeFloat64ToTaggedPointer()",93957345041200,93957345041214],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeTaggedToBit()",93957345041296,93957345041310],["v8::internal::compiler::SimplifiedOperatorBuilder::TruncateTaggedToBit()",93957345041360,93957345041374],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsArrayBufferView()",93957345041424,93957345041438],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsDetectableCallable()",93957345041488,93957345041502],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberIsNaN()",93957345041552,93957345041566],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsSmi()",93957345041616,93957345041630],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberIsFloat64Hole()",93957345041680,93957345041694],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsSafeInteger()",93957345041744,93957345041758],["v8::internal::compiler::SimplifiedOperatorBuilder::SameValue()",93957345041808,93957345041822],["v8::internal::compiler::SimplifiedOperatorBuilder::StringEqual()",93957345041872,93957345041886],["v8::internal::compiler::SimplifiedOperatorBuilder::NewConsString()",93957345041936,93957345041950],["v8::internal::compiler::SimplifiedOperatorBuilder::StringCharCodeAt()",93957345042000,93957345042014],["v8::internal::compiler::SimplifiedOperatorBuilder::DateNow()",93957345042064,93957345042078],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckInternalizedString()",93957345042128,93957345042142],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckSymbol()",93957345042192,93957345042206],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedInt32Sub()",93957345042256,93957345042270],["v8::internal::compiler::SimplifiedOperatorBuilder::FindOrderedHashMapEntry()",93957345042304,93957345042318],["v8::internal::compiler::SimplifiedOperatorBuilder::LoadFieldByIndex()",93957345042336,93957345042350],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckSmi(v8::internal::compiler::FeedbackSource const&)",93957345042560,93957345042760],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckBigInt(v8::internal::compiler::FeedbackSource const&)",93957345042976,93957345043176],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedInt64ToInt32(v8::internal::compiler::FeedbackSource const&)",93957345043392,93957345043592],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedTaggedToArrayIndex(v8::internal::compiler::FeedbackSource const&)",93957345043808,93957345044008],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedTaggedToTaggedPointer(v8::internal::compiler::FeedbackSource const&)",93957345044224,93957345044424],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedUint32ToInt32(v8::internal::compiler::FeedbackSource const&)",93957345044640,93957345044840],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedUint64ToInt32(v8::internal::compiler::FeedbackSource const&)",93957345045056,93957345045256],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedUint32Bounds(v8::internal::compiler::FeedbackSource const&, v8::base::Flags<v8::internal::compiler::CheckBoundsFlag, int>)",93957345045472,93957345045665],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckBounds(v8::internal::compiler::FeedbackSource const&, v8::base::Flags<v8::internal::compiler::CheckBoundsFlag, int>)",93957345045888,93957345046115],["v8::internal::compiler::SimplifiedOperatorBuilder::BigIntAsUintN(int)",93957345046256,93957345046425],["v8::internal::compiler::SimplifiedOperatorBuilder::TierUpCheck()",93957345046560,93957345046669],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckIf(v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&)",93957345046816,93957345047776],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedInt32Mul(v8::internal::compiler::CheckForMinusZeroMode)",93957345047840,93957345047889],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedFloat64ToInt64(v8::internal::compiler::CheckForMinusZeroMode, v8::internal::compiler::FeedbackSource const&)",93957345048208,93957345048502],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedTaggedToInt64(v8::internal::compiler::CheckForMinusZeroMode, v8::internal::compiler::FeedbackSource const&)",93957345048816,93957345049110],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedTruncateTaggedToWord32(v8::internal::compiler::CheckTaggedInputMode, v8::internal::compiler::FeedbackSource const&)",93957345049424,93957345049721],["v8::internal::compiler::SimplifiedOperatorBuilder::DynamicCheckMaps(v8::base::Flags<v8::internal::compiler::CheckMapsFlag, int>, v8::internal::Handle<v8::internal::Object>, v8::internal::ZoneHandleSet<v8::internal::Map> const&, v8::internal::compiler::FeedbackSource const&)",93957345049936,93957345050151],["v8::internal::compiler::SimplifiedOperatorBuilder::CompareMaps(v8::internal::ZoneHandleSet<v8::internal::Map>)",93957345050288,93957345050413],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckFloat64Hole(v8::internal::compiler::CheckFloat64HoleMode, v8::internal::compiler::FeedbackSource const&)",93957345050480,93957345050754],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeBigIntSubtract(v8::internal::compiler::BigIntOperationHint)",93957345050896,93957345051021],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckClosure(v8::internal::Handle<v8::internal::FeedbackCell> const&)",93957345051152,93957345051280],["v8::internal::compiler::SimplifiedOperatorBuilder::EnsureWritableFastElements()",93957345051600,93957345051614],["v8::internal::compiler::SimplifiedOperatorBuilder::TransitionElementsKind(v8::internal::compiler::ElementsTransition)",93957345051920,93957345052082],["v8::internal::compiler::SimplifiedOperatorBuilder::RestLength(int)",93957345052224,93957345052364],["v8::internal::compiler::CheckIfParametersOf(v8::internal::compiler::Operator const*)",93957345052448,93957345052493],["v8::internal::compiler::SimplifiedOperatorBuilder::NewSmiOrObjectElements(v8::internal::AllocationType)",93957345052624,93957345052749],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::NewArgumentsElementsParameters const&)",93957345052912,93957345053031],["v8::internal::compiler::SimplifiedOperatorBuilder::AllocateRaw(v8::internal::compiler::Type, v8::internal::AllocationType, v8::internal::AllowLargeObjects)",93957345053216,93957345053385],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberSubtract(v8::internal::compiler::NumberOperationHint)",93957345053488,93957345053570],["v8::internal::compiler::SimplifiedOperatorBuilder::SpeculativeNumberDivide(v8::internal::compiler::NumberOperationHint)",93957345053680,93957345053762],["__sigtimedwait",139871563508480,139871563508735],["qsort_r",139871563511872,139871563512702],["clearenv",139871563514608,139871563514806],["__cxa_atexit",139871563516400,139871563516412],["__cxa_at_quick_exit",139871563517024,139871563517041],["__call_tls_dtors",139871563517264,139871563517364],["imaxabs",139871563517392,139871563517404],["div",139871563517424,139871563517437],["gets",139871563742048,139871563742492],["_IO_popen",139871563744592,139871563744737],["_IO_setbuffer",139871563746160,139871563746501],["__vsscanf",139871563747808,139871563747973],["fgetwc",139871563748416,139871563748677],["getwchar",139871563748736,139871563749052],["fgetws",139871563749120,139871563749516],["fputws",139871563749680,139871563750008],["ungetwc",139871563750976,139871563751221],["putwc_unlocked",139871563751504,139871563751559],["putwchar_unlocked",139871563751920,139871563751975],["putchar_unlocked",139871563752336,139871563752395],["endutxent",139871564533712,139871564533717],["getutmp",139871564533808,139871564533864],["_dl_mcount_wrapper",139871564535360,139871564535383],["__libc_dlopen_mode",139871564535808,139871564535936],["ynf128",139871565673216,139871565673360],["__exp2f128_finite",139871565675728,139871565676187],["f32addf128",139871565704960,139871565705586],["f32xdivf64",139871565707248,139871565707414],["f32divf128",139871565708080,139871565708626],["f64xdivf128",139871565709200,139871565709708],["f32xmulf64",139871565710112,139871565710286],["dmull",139871565710640,139871565710998],["__GI___nptl_death_event",139871566580752,139871566580753],["__make_stacks_executable",139871566582080,139871566582385],["__wait_lookup_done",139871566584176,139871566584656],["__nptl_deallocate_tsd",139871566584880,139871566585203],["__pthread_once_slow",139871566619280,139871566619541],["__pthread_enable_asynccancel",139871566626048,139871566626134],["__lll_lock_wait",139871566626304,139871566626353],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::base::TimeTicks>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::base::TimeTicks>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::base::TimeTicks>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::base::TimeTicks>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::base::TimeTicks> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::base::TimeTicks> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::base::TimeTicks>&&)",93957335208912,93957335209381],["v8::MakeDelayedTasksPlatform(std::__1::unique_ptr<v8::Platform, std::__1::default_delete<v8::Platform> >, long)",93957335210736,93957335210901],["v8::InspectorClient::ensureDefaultContextInGroup(int)",93957335306304,93957335306334],["v8::InspectorFrontend::Send(v8_inspector::StringView const&)",93957335306608,93957335306969],["v8::internal::CancelableTask::Run()",93957335307232,93957335307259],["non-virtual thunk to v8::ProcessMessageTask::~ProcessMessageTask()",93957335307296,93957335307417],["v8::internal::LocalEmbedderHeapTracer::ProcessingScope::TracePossibleWrapper(v8::internal::JSObject)",93957336826416,93957336826617],["v8::internal::FactoryBase<v8::internal::Factory>::NewStruct(v8::internal::InstanceType, v8::internal::AllocationType)",93957336827280,93957336827493],["v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArrayWithHoles(int, v8::internal::AllocationType)",93957336828256,93957336828304],["v8::internal::FactoryBase<v8::internal::Factory>::NewByteArray(int, v8::internal::AllocationType)",93957336828800,93957336829013],["v8::internal::FactoryBase<v8::internal::Factory>::NewArrayBoilerplateDescription(v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957336829760,93957336830106],["v8::internal::FactoryBase<v8::internal::Factory>::NewTemplateObjectDescription(v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::FixedArray>)",93957336830576,93957336831010],["v8::internal::FactoryBase<v8::internal::Factory>::NewScriptWithId(v8::internal::Handle<v8::internal::PrimitiveHeapObject>, int)",93957336831072,93957336831568],["v8::internal::FactoryBase<v8::internal::Factory>::NewSharedFunctionInfo(v8::internal::MaybeHandle<v8::internal::String>, v8::internal::MaybeHandle<v8::internal::HeapObject>, int, v8::internal::FunctionKind)",93957336831728,93957336832595],["v8::internal::Factory::NewJSObjectWithNullProto()",93957336884192,93957336884471],["v8::internal::Factory::NewJSArrayBufferView(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, unsigned long)",93957336896064,93957336896892],["v8::internal::Factory::SizeToString(unsigned long, bool)",93957336904528,93957336904987],["v8::internal::Factory::NewStoreHandler(int)",93957336908144,93957336908354],["v8::internal::Factory::CreateSloppyFunctionMap(v8::internal::FunctionMode, v8::internal::MaybeHandle<v8::internal::JSFunction>)",93957336909920,93957336910605],["v8::internal::Factory::NewJSPromiseWithoutHook()",93957336911968,93957336912333],["v8::internal::Factory::JSFunctionBuilder::Build()",93957336912624,93957336913053],["v8::internal::DescriptorArray::Append(v8::internal::Descriptor*)",93957336914048,93957336914480],["v8::internal::FinalizationRegistryCleanupTask::RunInternal()",93957336914912,93957336915678],["v8::internal::FreeListCategory::Relink(v8::internal::FreeList*)",93957336915744,93957336915767],["v8::internal::FreeList::SearchForNodeInList(int, unsigned long, unsigned long*)",93957336915888,93957336916235],["v8::internal::FreeListMany::~FreeListMany()",93957336916416,93957336916463],["v8::internal::FreeListMany::GetPageForSize(unsigned long)",93957336916560,93957336916693],["v8::internal::FreeListManyCached::FreeListManyCached()",93957336916992,93957336917378],["v8::internal::FreeList::Reset()",93957336917616,93957336917785],["v8::internal::FreeList::AddCategory(v8::internal::FreeListCategory*)",93957336917888,93957336917945],["v8::internal::FixStaleLeftTrimmedHandlesVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337046944,93957337047041],["v8::internal::ScavengeTaskObserver::Step(int, unsigned long, unsigned long)",93957337047600,93957337047621],["v8::internal::UnreachableObjectsFilter::MarkingVisitor::~MarkingVisitor()",93957337048768,93957337048817],["v8::internal::UnreachableObjectsFilter::MarkingVisitor::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957337049168,93957337049281],["non-virtual thunk to v8::internal::UnreachableObjectsFilter::MarkingVisitor::~MarkingVisitor()",93957337049552,93957337049601],["non-virtual thunk to v8::internal::UnreachableObjectsFilter::MarkingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337049680,93957337049791],["v8::internal::UnreachableObjectsFilter::MarkAsReachable(v8::internal::HeapObject)",93957337049936,93957337050454],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::EphemeronHashTable, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::EphemeronHashTable, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> > >, std::__1::__unordered_map_hasher<v8::internal::EphemeronHashTable, std::__1::__hash_value_type<v8::internal::EphemeronHashTable, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> > >, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::EphemeronHashTable>, true>, std::__1::__unordered_map_equal<v8::internal::EphemeronHashTable, std::__1::__hash_value_type<v8::internal::EphemeronHashTable, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> > >, std::__1::equal_to<v8::internal::EphemeronHashTable>, v8::internal::Object::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::EphemeronHashTable, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> > > > >::__emplace_unique_key_args<v8::internal::EphemeronHashTable, std::__1::pair<v8::internal::EphemeronHashTable const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> > > >(v8::internal::EphemeronHashTable const&, std::__1::pair<v8::internal::EphemeronHashTable const, std::__1::unordered_set<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> > >&&)",93957337051264,93957337052196],["v8::internal::CodeRangeAddressHint::GetAddressHint(unsigned long)",93957337419056,93957337419481],["v8::internal::MemoryAllocator::ComputeDiscardMemoryArea(unsigned long, unsigned long)",93957337425616,93957337425721],["v8::internal::MemoryChunkLayout::AllocatableMemoryInMemoryChunk(v8::internal::AllocationSpace)",93957337428000,93957337428128],["v8::internal::MemoryChunk::Initialize(v8::internal::BasicMemoryChunk*, v8::internal::Heap*, v8::internal::Executability)",93957337428704,93957337429119],["v8::internal::MemoryChunk::ReleaseSweepingSlotSet()",93957337430016,93957337430125],["void v8::internal::MemoryChunk::ReleaseInvalidatedSlots<(v8::internal::RememberedSetType)0>()",93957337430336,93957337430394],["v8::internal::MemoryChunk::InvalidateRecordedSlots(v8::internal::HeapObject)",93957337430656,93957337430731],["v8::internal::SlotSet* v8::internal::MemoryChunk::AllocateSlotSet<(v8::internal::RememberedSetType)0>()",93957337431264,93957337431440],["v8::internal::TypedSlotSet* v8::internal::MemoryChunk::AllocateTypedSlotSet<(v8::internal::RememberedSetType)1>()",93957337431712,93957337431795],["v8::internal::MeasureMemoryDelegate::~MeasureMemoryDelegate()",93957337431840,93957337431883],["v8::internal::MeasureMemoryDelegate::ShouldMeasure(v8::Local<v8::Context>)",93957337431952,93957337431985],["v8::internal::MemoryMeasurement::MemoryMeasurement(v8::internal::Isolate*)",93957337433184,93957337433310],["v8::internal::MemoryMeasurement::ScheduleGCTask(v8::MeasureMemoryExecution)",93957337433920,93957337434256],["v8::internal::MemoryMeasurement::FinishProcessing(v8::internal::NativeContextStats const&)",93957337434784,93957337435868],["v8::internal::MemoryMeasurement::ReportResults()",93957337436112,93957337437051],["v8::internal::NativeContextInferrer::InferForContext(v8::internal::Isolate*, v8::internal::Context, unsigned long*)",93957337437184,93957337437251],["v8::internal::StressScavengeObserver::StressScavengeObserver(v8::internal::Heap*)",93957337600304,93957337600461],["v8::internal::StressScavengeObserver::HasRequestedGC() const",93957337600880,93957337600889],["v8::internal::StressScavengeObserver::MaxNewSpaceSizeReached() const",93957337601248,93957337601259],["v8::internal::Sweeper::PauseOrCompleteScope::PauseOrCompleteScope(v8::internal::Sweeper*)",93957337601424,93957337601560],["v8::internal::Sweeper::FilterSweepingPagesScope::FilterSweepingPagesScope(v8::internal::Sweeper*, v8::internal::Sweeper::PauseOrCompleteScope const&)",93957337601904,93957337602076],["v8::internal::Sweeper::ScheduleIncrementalSweepingTask()",93957337602432,93957337602655],["v8::internal::Sweeper::EnsureIterabilityCompleted()",93957337603360,93957337603585],["v8::internal::Sweeper::AreSweeperTasksRunning()",93957337604784,93957337604837],["v8::internal::Sweeper::StartIterabilityTasks()",93957337608384,93957337608611],["bool std::__1::__insertion_sort_incomplete<v8::internal::Sweeper::StartSweeping()::$_0::operator()(v8::internal::AllocationSpace) const::{lambda(v8::internal::Page*, v8::internal::Page*)#1}&, v8::internal::Page**>(v8::internal::Page**, v8::internal::Page**, v8::internal::Sweeper::StartSweeping()::$_0::operator()(v8::internal::AllocationSpace) const::{lambda(v8::internal::Page*, v8::internal::Page*)#1}&)",93957337610752,93957337611524],["v8::internal::Sweeper::IncrementalSweeperTask::RunInternal()",93957337613056,93957337613390],["v8::internal::WeakObjects::UpdateNextEphemerons(v8::internal::Worklist<v8::internal::Ephemeron, 64>&)",93957337614752,93957337615671],["v8::internal::CallOptimization::CallOptimization(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957337617824,93957337617997],["v8::internal::CallOptimization::LookupHolderOfExpectedType(v8::internal::Handle<v8::internal::Map>, v8::internal::CallOptimization::HolderLookup*) const",93957337618448,93957337618807],["int v8::internal::(anonymous namespace)::GetHandlerDataSize<v8::internal::LoadHandler>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Smi>*, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle, v8::internal::MaybeObjectHandle)",93957337619776,93957337620049],["v8::internal::StoreHandler::GetKeyedAccessStoreMode(v8::internal::MaybeObject)",93957337621280,93957337621312],["v8::internal::StoreHandler::StoreGlobal(v8::internal::Handle<v8::internal::PropertyCell>)",93957337623472,93957337623483],["v8::internal::ICStats::End()",93957337624016,93957337624068],["v8::internal::ICStats::GetOrCacheScriptName(v8::internal::Script)",93957337626048,93957337626645],["v8::internal::IC::TraceIC(char const*, v8::internal::Handle<v8::internal::Object>, v8::internal::InlineCacheState, v8::internal::InlineCacheState)",93957337627792,93957337628993],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*)",93957337629104,93957337629114],["v8::internal::IC::ShouldRecomputeHandler(v8::internal::Handle<v8::internal::String>)",93957337629216,93957337629584],["v8::internal::IC::update_lookup_start_object_map(v8::internal::Handle<v8::internal::Object>)",93957337629872,93957337630002],["v8::internal::IC::OnFeedbackChanged(v8::internal::Isolate*, v8::internal::FeedbackVector, v8::internal::FeedbackSlot, char const*)",93957337630144,93957337630684],["v8::internal::IC::ConfigureVectorState(v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle const&)",93957337630864,93957337631012],["v8::internal::IC::ConfigureVectorState(v8::internal::Handle<v8::internal::Name>, std::__1::vector<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle>, std::__1::allocator<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle> > > const&)",93957337631360,93957337631451],["v8::internal::LoadHandler::LoadSlow(v8::internal::Isolate*)",93957337634000,93957337634086],["v8::internal::LoadGlobalIC::Load(v8::internal::Handle<v8::internal::Name>, bool)",93957337634912,93957337635905],["v8::internal::IC::IsTransitionOfMonomorphicTarget(v8::internal::Map, v8::internal::Map)",93957337637488,93957337638001],["v8::internal::IC::SetCache(v8::internal::Handle<v8::internal::Name>, v8::internal::MaybeObjectHandle const&)",93957337638336,93957337638883],["v8::internal::FunctionTemplateInfo::BreakAtEntry()",93957337644736,93957337644819],["v8::internal::LoadHandler::LoadAccessor(v8::internal::Isolate*, int)",93957337644928,93957337645017],["v8::internal::LoadHandler::LoadNormal(v8::internal::Isolate*)",93957337645120,93957337645206],["v8::internal::MaybeObjectHandle::MaybeObjectHandle(v8::internal::Object, v8::internal::Isolate*)",93957337645312,93957337645412],["v8::internal::KeyedLoadIC::UpdateLoadElement(v8::internal::Handle<v8::internal::HeapObject>, v8::internal::KeyedAccessLoadMode)",93957337645520,93957337646666],["v8::internal::KeyedLoadIC::LoadElementPolymorphicHandlers(std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > >*, std::__1::vector<v8::internal::MaybeObjectHandle, std::__1::allocator<v8::internal::MaybeObjectHandle> >*, v8::internal::KeyedAccessLoadMode)",93957337648224,93957337648626],["v8::internal::(anonymous namespace)::AllowConvertHoleElementToUndefined(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957337648768,93957337648999],["v8::internal::(anonymous namespace)::TryConvertKey(v8::internal::Handle<v8::internal::Object>, v8::internal::Isolate*, long*, v8::internal::Handle<v8::internal::Name>*)",93957337650352,93957337650631],["v8::internal::PrototypeIterator::PrototypeIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::WhereToStart, v8::internal::PrototypeIterator::WhereToEnd)",93957337651840,93957337651913],["v8::internal::LookupIterator::IsCacheableTransition()",93957337652000,93957337652298],["v8::internal::StoreHandler::StoreSlow(v8::internal::Isolate*, v8::internal::KeyedAccessStoreMode)",93957337653552,93957337653641],["v8::internal::StoreIC::UpdateCaches(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::StoreOrigin)",93957337655360,93957337655900],["v8::internal::StoreHandler::StoreNativeDataProperty(v8::internal::Isolate*, int)",93957337659456,93957337659545],["v8::internal::StoreHandler::StoreAccessor(v8::internal::Isolate*, int)",93957337659648,93957337659737],["v8::internal::KeyedStoreIC::StoreElementHandler(v8::internal::Handle<v8::internal::Map>, v8::internal::KeyedAccessStoreMode, v8::internal::MaybeHandle<v8::internal::Object>)",93957337661200,93957337662061],["v8::internal::KeyedStoreIC::Store(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957337663168,93957337665242],["v8::internal::(anonymous namespace)::MayHaveTypedArrayInPrototypeChain(v8::internal::Handle<v8::internal::JSObject>)",93957337665648,93957337665849],["v8::internal::Runtime_LoadIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337666752,93957337667703],["v8::internal::Runtime_LoadNoFeedbackIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337669088,93957337669589],["v8::internal::Runtime_LoadWithReceiverNoFeedbackIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337670464,93957337670856],["v8::internal::Runtime_LoadGlobalIC_Miss(int, unsigned long*, v8::internal::Isolate*)",93957337671648,93957337672332],["v8::internal::Runtime_LoadGlobalIC_Slow(int, unsigned long*, v8::internal::Isolate*)",93957337673424,93957337673901],["v8::internal::TextNode::FilterOneByte(int)",93957339831792,93957339832464],["v8::internal::BoyerMoorePositionInfo::SetInterval(v8::internal::Interval const&)",93957339844432,93957339844797],["v8::internal::BackReferenceNode::FillInBMInfo(v8::internal::Isolate*, int, int, v8::internal::BoyerMooreLookahead*, bool)",93957339852416,93957339852517],["v8::internal::LoopChoiceNode::read_backward()",93957339855632,93957339855641],["v8::internal::Analysis<v8::internal::(anonymous namespace)::AssertionPropagator, v8::internal::(anonymous namespace)::EatsAtLeastPropagator>::VisitChoice(v8::internal::ChoiceNode*)",93957339859392,93957339859734],["v8::internal::Analysis<v8::internal::(anonymous namespace)::AssertionPropagator, v8::internal::(anonymous namespace)::EatsAtLeastPropagator>::VisitAssertion(v8::internal::AssertionNode*)",93957339860720,93957339860902],["v8::internal::IrregexpInterpreter::MatchInternal(v8::internal::Isolate*, v8::internal::ByteArray, v8::internal::String, int*, int, int, int, v8::internal::RegExp::CallOrigin, unsigned int)",93957339861776,93957339862025],["v8::internal::IrregexpInterpreter::MatchForCallFromRuntime(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int*, int, int)",93957339874960,93957339874992],["v8::internal::RegExpMacroAssembler::RegExpMacroAssembler(v8::internal::Isolate*, v8::internal::Zone*)",93957339875152,93957339875198],["v8::internal::RegExpMacroAssembler::CaseInsensitiveCompareUnicode(unsigned long, unsigned long, unsigned long, v8::internal::Isolate*)",93957339875584,93957339875739],["v8::internal::RegExpMacroAssembler::LoadCurrentCharacter(int, v8::internal::Label*, bool, int, int)",93957339875936,93957339875961],["v8::internal::NativeRegExpMacroAssembler::NativeRegExpMacroAssembler(v8::internal::Isolate*, v8::internal::Zone*)",93957339876016,93957339876062],["v8::internal::NativeRegExpMacroAssembler::CanReadUnaligned()",93957339876160,93957339876189],["v8::internal::NativeRegExpMacroAssembler::Match(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int*, int, int, v8::internal::Isolate*)",93957339876944,93957339877228],["v8::internal::NativeRegExpMacroAssembler::GrowStack(unsigned long, unsigned long*, v8::internal::Isolate*)",93957339877472,93957339877549],["v8::internal::RegExpParser::Next()",93957339877920,93957339878085],["v8_inspector::(anonymous namespace)::ActualScript::script() const",93957342530640,93957342530673],["v8_inspector::V8Debugger::enabled() const",93957342532816,93957342532829],["v8_inspector::V8Debugger::canBreakProgram()",93957342533648,93957342533665],["v8_inspector::V8Debugger::breakProgramOnAssert(int)",93957342533824,93957342533897],["v8_inspector::V8Debugger::stepOverStatement(int)",93957342534496,93957342534576],["v8_inspector::V8Debugger::currentAsyncParent()",93957342534656,93957342534703],["v8_inspector::V8Debugger::reportTermination()",93957342534944,93957342535060],["v8_inspector::V8Debugger::captureStackTrace(bool)",93957342535664,93957342535954],["std::__1::__unique_if<v8_inspector::(anonymous namespace)::ObjectMirror>::__unique_single std::__1::make_unique<v8_inspector::(anonymous namespace)::ObjectMirror, v8::Local<v8::Value>&, char const (&) [19], v8_inspector::String16>(v8::Local<v8::Value>&, char const (&) [19], v8_inspector::String16&&)",93957342693264,93957342694562],["v8_inspector::(anonymous namespace)::ObjectMirror::buildRemoteObject(v8::Local<v8::Context>, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*) const",93957342712240,93957342713212],["void v8_inspector::String16Builder::appendAll<v8_inspector::String16, v8_inspector::String16, v8_inspector::String16>(v8_inspector::String16, v8_inspector::String16, v8_inspector::String16)",93957342721824,93957342723094],["v8_inspector::protocol::Runtime::ObjectPreview::setDescription(v8_inspector::String16 const&)",93957342731952,93957342732608],["v8_inspector::(anonymous namespace)::descriptionForPrimitiveType(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957342734112,93957342734353],["v8_inspector::protocol::Runtime::RemoteObject::setUnserializableValue(v8_inspector::String16 const&)",93957342735840,93957342736505],["v8_inspector::(anonymous namespace)::descriptionForBigInt(v8::Local<v8::Context>, v8::Local<v8::BigInt>)",93957342737568,93957342737849],["v8_inspector::(anonymous namespace)::FunctionMirror::buildPropertyPreview(v8::Local<v8::Context>, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >*) const",93957342739744,93957342739990],["v8_inspector::UTF8ToUTF16(char const*, unsigned long)",93957342741136,93957342742286],["v8_crdtp::cbor::internals::WriteTokenStart(v8_crdtp::cbor::MajorType, unsigned long, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342742464,93957342744808],["v8_crdtp::cbor::CheckCBORMessage(v8_crdtp::span<unsigned char>)",93957342745200,93957342745328],["v8_crdtp::cbor::EncodeTrue()",93957342745344,93957342745352],["v8_crdtp::cbor::EncodeNull()",93957342745376,93957342745384],["v8_crdtp::cbor::EncodeStop()",93957342745408,93957342745416],["v8_crdtp::cbor::EncodeString16(v8_crdtp::span<unsigned short>, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342745456,93957342746000],["v8_crdtp::cbor::EncodeFromUTF16(v8_crdtp::span<unsigned short>, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342746064,93957342746183],["std::__1::deque<v8::internal::compiler::DeoptimizationLiteral, v8::internal::RecyclingZoneAllocator<v8::internal::compiler::DeoptimizationLiteral> >::__add_back_capacity()",93957342892976,93957342893727],["v8::internal::compiler::InstructionSelector::Emit(unsigned int, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, unsigned long, v8::internal::compiler::InstructionOperand*)",93957342911968,93957342912044],["v8::internal::compiler::InstructionSelector::CanUseRootsRegister() const",93957342913184,93957342913205],["v8::internal::compiler::InstructionSelector::AddInputsToFrameStateDescriptor(v8::internal::compiler::StateValueList*, v8::internal::ZoneVector<v8::internal::compiler::InstructionOperand>*, v8::internal::compiler::OperandGenerator*, v8::internal::compiler::StateObjectDeduplicator*, v8::internal::compiler::Node*, v8::internal::compiler::FrameStateInputKind, v8::internal::Zone*)",93957342918800,93957342920144],["v8::internal::compiler::InstructionSelector::AppendDeoptimizeArguments(v8::internal::ZoneVector<v8::internal::compiler::InstructionOperand>*, v8::internal::DeoptimizeKind, v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::FrameState)",93957342927136,93957342927977],["v8::internal::compiler::OperandGenerator::UsePointerLocation(v8::internal::compiler::LinkageLocation, v8::internal::compiler::LinkageLocation)",93957342938208,93957342938579],["v8::internal::compiler::InstructionSelector::VisitTailCall(v8::internal::compiler::Node*)",93957342952896,93957342954624],["v8::internal::compiler::InstructionSelector::MarkAsWord32(v8::internal::compiler::Node*)",93957342955584,93957342955668],["v8::internal::compiler::InstructionSelector::EmitIdentity(v8::internal::compiler::Node*)",93957342955952,93957342956054],["v8::internal::compiler::InstructionSelector::VisitOsrValue(v8::internal::compiler::Node*)",93957342956416,93957342956521],["v8::internal::compiler::InstructionSelector::VisitProjection(v8::internal::compiler::Node*)",93957342957616,93957342958070],["v8::internal::compiler::InstructionSelector::MarkAsFloat32(v8::internal::compiler::Node*)",93957342958160,93957342958244],["v8::internal::compiler::InstructionSelector::VisitDeoptimizeIf(v8::internal::compiler::Node*)",93957342958352,93957342958721],["v8::internal::compiler::InstructionSelector::VisitDynamicCheckMapsWithDeoptUnless(v8::internal::compiler::Node*)",93957342959040,93957342959772],["v8::internal::compiler::InstructionSelector::VisitTrapUnless(v8::internal::compiler::Node*, v8::internal::compiler::TrapId)",93957342959920,93957342960058],["v8::internal::compiler::InstructionSelector::VisitDeadValue(v8::internal::compiler::Node*)",93957342960160,93957342960327],["v8::internal::compiler::SpillRange::SpillRange(v8::internal::compiler::TopLevelLiveRange*, v8::internal::Zone*)",93957343094576,93957343095532],["v8::internal::compiler::TopTierRegisterAllocationData::TopTierRegisterAllocationData(v8::internal::RegisterConfiguration const*, v8::internal::Zone*, v8::internal::compiler::Frame*, v8::internal::compiler::InstructionSequence*, v8::base::Flags<v8::internal::compiler::RegisterAllocationFlag, int>, v8::internal::TickCounter*, char const*)",93957343095856,93957343098656],["v8::internal::compiler::TopTierRegisterAllocationData::GetOrCreateLiveRangeFor(int)",93957343098832,93957343099151],["v8::internal::compiler::TopTierRegisterAllocationData::ExistsUseWithoutDefinition()",93957343099888,93957343100375],["v8::internal::compiler::TopTierRegisterAllocationData::IsBlockBoundary(v8::internal::compiler::LifetimePosition) const",93957343100736,93957343100806],["v8::internal::compiler::ConstraintBuilder::MeetRegisterConstraints()",93957343101280,93957343101466],["v8::internal::compiler::ConstraintBuilder::MeetConstraintsAfter(int)",93957343103520,93957343104860],["v8::internal::compiler::ConstraintBuilder::ResolvePhis()",93957343105696,93957343105824],["v8::internal::compiler::LiveRangeBuilder::LiveRangeBuilder(v8::internal::compiler::TopTierRegisterAllocationData*, v8::internal::Zone*)",93957343107056,93957343107093],["v8::internal::compiler::LiveRangeBuilder::AddInitialIntervals(v8::internal::compiler::InstructionBlock const*, v8::internal::BitVector*)",93957343107776,93957343108181],["v8::internal::compiler::LiveRangeBuilder::FixedFPLiveRangeFor(int, v8::internal::MachineRepresentation, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343108544,93957343109006],["v8::internal::compiler::LiveRangeBuilder::Use(v8::internal::compiler::LifetimePosition, v8::internal::compiler::LifetimePosition, v8::internal::compiler::InstructionOperand*, void*, v8::internal::compiler::UsePositionHintType, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343109712,93957343110257],["v8::internal::compiler::LiveRangeBuilder::ProcessPhis(v8::internal::compiler::InstructionBlock const*, v8::internal::BitVector*)",93957343115872,93957343116920],["v8::internal::compiler::LiveRangeBuilder::BuildLiveRanges()",93957343117696,93957343118593],["v8::internal::compiler::LiveRangeBundle::TryMerge(v8::internal::compiler::LiveRangeBundle*, v8::internal::compiler::LiveRangeBundle*, bool)",93957343124800,93957343125810],["v8::internal::compiler::LiveRangeBundle::MergeSpillRangesAndClear()",93957343126160,93957343126418],["v8::internal::compiler::RegisterAllocator::Spill(v8::internal::compiler::LiveRange*, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343126960,93957343127368],["v8::internal::compiler::RegisterAllocator::SplitRangeAt(v8::internal::compiler::LiveRange*, v8::internal::compiler::LifetimePosition)",93957343127568,93957343127872],["v8::internal::compiler::LinearScanAllocator::LinearScanAllocator(v8::internal::compiler::TopTierRegisterAllocationData*, v8::internal::compiler::RegisterKind, v8::internal::Zone*)",93957343128464,93957343129189],["v8::internal::compiler::LinearScanAllocator::SpillNotLiveRanges(v8::internal::ZoneUnorderedSet<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals>*, v8::internal::compiler::LifetimePosition, v8::internal::compiler::TopTierRegisterAllocationData::SpillMode)",93957343129632,93957343131112],["v8::internal::compiler::LinearScanAllocator::SetLiveRangeAssignedRegister(v8::internal::compiler::LiveRange*, int)",93957343131808,93957343132123],["v8::internal::compiler::LinearScanAllocator::AddToActive(v8::internal::compiler::LiveRange*)",93957343133040,93957343133870],["v8::internal::compiler::LinearScanAllocator::ComputeStateFromManyPredecessors(v8::internal::compiler::InstructionBlock*, v8::internal::ZoneUnorderedSet<v8::internal::compiler::LinearScanAllocator::RangeWithRegister, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Hash, v8::internal::compiler::LinearScanAllocator::RangeWithRegister::Equals>*)",93957343136064,93957343137952],["v8::internal::compiler::LinearScanAllocator::UpdateDeferredFixedRanges(v8::internal::compiler::TopTierRegisterAllocationData::SpillMode, v8::internal::compiler::InstructionBlock*)",93957343138432,93957343139015],["v8::internal::compiler::LinearScanAllocator::AllocateRegisters()",93957343139456,93957343141918],["v8::internal::compiler::LinearScanAllocator::ForwardStateTo(v8::internal::compiler::LifetimePosition)",93957343142272,93957343144718],["v8::internal::compiler::MachineOperatorBuilder::PoisonedLoad(v8::internal::MachineType)",93957344485936,93957344486326],["v8::internal::compiler::MachineOperatorBuilder::I32x4ExtractLane(int)",93957344509776,93957344509918],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadTransformParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadTransformParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadTransformParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344569456,93957344569504],["v8::internal::compiler::Operator1<v8::internal::compiler::S128ImmediateParameter, v8::internal::compiler::OpEqualTo<v8::internal::compiler::S128ImmediateParameter>, v8::internal::compiler::OpHash<v8::internal::compiler::S128ImmediateParameter> >::HashCode() const",93957344570672,93957344570708],["v8::internal::compiler::MapInference::AllOfInstanceTypesAre(v8::internal::InstanceType) const",93957344573856,93957344573965],["v8::internal::compiler::MapInference::RelyOnMapsPreferStability(v8::internal::compiler::CompilationDependencies*, v8::internal::compiler::JSGraph*, v8::internal::compiler::Effect*, v8::internal::compiler::Control, v8::internal::compiler::FeedbackSource const&)",93957344575328,93957344575554],["v8::internal::compiler::MemoryLowering::ReduceLoadField(v8::internal::compiler::Node*)",93957344576448,93957344576616],["v8::internal::compiler::MemoryLowering::AllocationState::AllocationState()",93957344581920,93957344581948],["v8::internal::compiler::(anonymous namespace)::WriteBarrierAssertFailed(v8::internal::compiler::Node*, v8::internal::compiler::Node*, char const*, v8::internal::Zone*)",93957344582560,93957344583723],["v8::internal::compiler::MemoryOptimizer::VisitAllocateRaw(v8::internal::compiler::Node*, v8::internal::compiler::MemoryLowering::AllocationState const*)",93957344584656,93957344585132],["v8::internal::compiler::(anonymous namespace)::SearchAllocatingNode(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::Zone*)",93957344586960,93957344588407],["v8::internal::compiler::NodeMatcher::IsComparison() const",93957344588800,93957344588820],["v8::internal::compiler::ObserveNodeManager::OnNodeChanged(char const*, v8::internal::compiler::Node const*, v8::internal::compiler::Node const*)",93957344589376,93957344590258],["v8::internal::compiler::NodeOriginTable::GetNodeOrigin(v8::internal::compiler::Node*) const",93957344590720,93957344590808],["std::__1::vector<v8::internal::compiler::NodeOrigin, v8::internal::ZoneAllocator<v8::internal::compiler::NodeOrigin> >::__append(unsigned long, v8::internal::compiler::NodeOrigin const&)",93957344591504,93957344592080],["v8::internal::compiler::NodeProperties::IsControlEdge(v8::internal::compiler::Edge)",93957344592368,93957344592492],["v8::internal::compiler::NodeProperties::ReplaceValueInput(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957344593088,93957344593294],["v8::internal::compiler::NodeProperties::ReplaceContextInput(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344593520,93957344593704],["v8::internal::compiler::NodeProperties::ReplaceEffectInput(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957344593968,93957344594206],["v8::internal::compiler::NodeProperties::RemoveNonValueInputs(v8::internal::compiler::Node*)",93957344594416,93957344594432],["v8::internal::compiler::NodeProperties::ReplaceUses(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344594528,93957344595185],["v8::internal::compiler::NodeProperties::FindProjection(v8::internal::compiler::Node*, unsigned long)",93957344595552,93957344595659],["v8::internal::compiler::NodeProperties::CollectControlProjections(v8::internal::compiler::Node*, v8::internal::compiler::Node**, unsigned long)",93957344595792,93957344596096],["v8::internal::compiler::NodeProperties::InferMapsUnsafe(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map>*)",93957344597152,93957344599604],["v8::internal::compiler::NodeProperties::CanBePrimitive(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344599776,93957344600073],["v8::internal::compiler::NodeProperties::GetOuterContext(v8::internal::compiler::Node*, unsigned long*)",93957344600304,93957344600505],["v8::internal::compiler::NodeProperties::AllValueInputsAreTyped(v8::internal::compiler::Node*)",93957344600544,93957344600712],["v8::internal::compiler::NodeProperties::HashCode(v8::internal::compiler::Node*)",93957344600960,93957344601185],["v8::internal::compiler::Node::RemoveUse(v8::internal::compiler::Node::Use*)",93957344601456,93957344601499],["v8::internal::compiler::Node::New(v8::internal::Zone*, unsigned int, v8::internal::compiler::Operator const*, int, v8::internal::compiler::Node* const*, bool)",93957344601552,93957344601562],["v8::internal::compiler::Node::Clone(v8::internal::Zone*, unsigned int, v8::internal::compiler::Node const*)",93957344602256,93957344602332],["v8::internal::compiler::Node::AppendInput(v8::internal::Zone*, v8::internal::compiler::Node*)",93957344602480,93957344603557],["v8::internal::compiler::Scheduler::UpdatePlacement(v8::internal::compiler::Node*, v8::internal::compiler::Scheduler::Placement)",93957344758144,93957344758639],["v8::internal::compiler::Hints::AddVirtualBoundFunction(v8::internal::compiler::VirtualBoundFunction const&, v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*)",93957344796272,93957344796991],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitStaGlobal(v8::internal::interpreter::BytecodeArrayIterator*)",93957344832560,93957344832751],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessHintsForObjectGetPrototype(v8::internal::compiler::Hints const&)",93957344867664,93957344867929],["v8::internal::compiler::RepresentationSelector::ConvertInput(v8::internal::compiler::Node*, int, v8::internal::compiler::UseInfo, v8::internal::compiler::Type)",93957344885456,93957344885951],["v8::internal::compiler::SimplifiedLowering::Int32Sign(v8::internal::compiler::Node*)",93957344899216,93957344899576],["v8::internal::compiler::RepresentationSelector::RunLowerPhase(v8::internal::compiler::SimplifiedLowering*)",93957344908944,93957344909417],["void v8::internal::compiler::RepresentationSelector::VisitFloat64Binop<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*)",93957344940928,93957344941249],["v8::internal::compiler::RepresentationSelector::WriteBarrierKindFor(v8::internal::compiler::BaseTaggedness, v8::internal::MachineRepresentation, v8::internal::compiler::Type, v8::internal::MachineRepresentation, v8::internal::compiler::Node*)",93957344949328,93957344949694],["void v8::internal::compiler::RepresentationSelector::VisitJSWasmCall<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957344954176,93957344955484],["v8::internal::compiler::RepresentationSelector::PrintNodeFeedbackType(v8::internal::compiler::Node*)",93957344967792,93957344968702],["void v8::internal::compiler::RepresentationSelector::VisitCheckBounds<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957344971568,93957344972002],["void v8::internal::compiler::RepresentationSelector::VisitPhi<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957345012544,93957345012983],["void v8::internal::compiler::RepresentationSelector::VisitInt64Binop<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957345016736,93957345016893],["void v8::internal::compiler::RepresentationSelector::VisitNoop<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation)",93957345021136,93957345021596],["void v8::internal::compiler::RepresentationSelector::VisitReturn<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957345027648,93957345027954],["v8::internal::compiler::SimplifiedOperatorReducer::SimplifiedOperatorReducer(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*)",93957345031888,93957345031916],["v8::internal::compiler::SimplifiedOperatorReducer::reducer_name() const",93957345037856,93957345037869],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::ObjectAccess const&)",93957345039008,93957345039187],["v8::internal::compiler::DoubleMapParameterOf(v8::internal::compiler::Operator const*)",93957345039872,93957345039917],["v8::internal::compiler::AllocationTypeOf(v8::internal::compiler::Operator const*)",93957345040288,93957345040323],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberLog2()",93957345040592,93957345040606],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberRound()",93957345040656,93957345040670],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberSqrt()",93957345040720,93957345040734],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberToBoolean()",93957345040784,93957345040798],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberToUint8Clamped()",93957345040848,93957345040862],["v8::internal::compiler::SimplifiedOperatorBuilder::StringToNumber()",93957345040912,93957345040926],["v8::internal::compiler::SimplifiedOperatorBuilder::StringLength()",93957345040976,93957345040990],["v8::internal::compiler::SimplifiedOperatorBuilder::PlainPrimitiveToNumber()",93957345041040,93957345041054],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeTaggedSignedToInt64()",93957345041104,93957345041118],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeTaggedToFloat64()",93957345041168,93957345041182],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeInt32ToTagged()",93957345041232,93957345041246],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeUint64ToTagged()",93957345041280,93957345041294],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeBitToTagged()",93957345041312,93957345041326],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeUint64ToBigInt()",93957345041344,93957345041358],["v8::internal::compiler::SimplifiedOperatorBuilder::TruncateTaggedPointerToBit()",93957345041376,93957345041390],["v8::internal::compiler::SimplifiedOperatorBuilder::TruncateTaggedToFloat64()",93957345041408,93957345041422],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsBigInt()",93957345041440,93957345041454],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsConstructor()",93957345041472,93957345041486],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsMinusZero()",93957345041504,93957345041518],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsNaN()",93957345041536,93957345041550],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsNonCallable()",93957345041568,93957345041582],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsReceiver()",93957345041600,93957345041614],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsString()",93957345041632,93957345041646],["v8::internal::compiler::SimplifiedOperatorBuilder::ObjectIsUndetectable()",93957345041664,93957345041678],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberIsFinite()",93957345041696,93957345041710],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberIsInteger()",93957345041728,93957345041742],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberIsSafeInteger()",93957345041760,93957345041774],["v8::internal::compiler::SimplifiedOperatorBuilder::ConvertTaggedHoleToUndefined()",93957345041792,93957345041806],["v8::internal::compiler::SimplifiedOperatorBuilder::SameValueNumbersOnly()",93957345041824,93957345041838],["v8::internal::compiler::SimplifiedOperatorBuilder::ReferenceEqual()",93957345041856,93957345041870],["v8::internal::compiler::SimplifiedOperatorBuilder::StringLessThan()",93957345041888,93957345041902],["v8::internal::compiler::SimplifiedOperatorBuilder::ToBoolean()",93957345041920,93957345041934],["v8::internal::compiler::SimplifiedOperatorBuilder::PoisonIndex()",93957345041952,93957345041966],["v8::internal::compiler::SimplifiedOperatorBuilder::BigIntSubtract()",93957345041984,93957345041998],["v8::internal::compiler::SimplifiedOperatorBuilder::StringCodePointAt()",93957345042016,93957345042030],["v8::internal::compiler::SimplifiedOperatorBuilder::StringSubstring()",93957345042048,93957345042062],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckEqualsInternalizedString()",93957345042080,93957345042094],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckHeapObject()",93957345042112,93957345042126],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckNotTaggedHole()",93957345042144,93957345042158],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckReceiverOrNullOrUndefined()",93957345042176,93957345042190],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedInt32Add()",93957345042208,93957345042222],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedInt32Mod()",93957345042240,93957345042254],["v8::internal::compiler::SimplifiedOperatorBuilder::CheckedUint32Div()",93957345042272,93957345042286],["siggetmask",139871563507920,139871563507927],["sigrelse",139871563509056,139871563509172],["atoll",139871563509712,139871563509724],["getenv",139871563512720,139871563512933],["unsetenv",139871563514256,139871563514601],["__libc_secure_getenv",139871563514816,139871563514843],["on_exit",139871563515520,139871563515796],["__cxa_finalize",139871563516416,139871563516984],["_IO_getline",139871563742032,139871563742040],["_IO_padn",139871563742496,139871563742804],["_IO_proc_open",139871563743568,139871563744579],["_IO_puts",139871563744752,139871563745224],["_IO_seekpos",139871563745920,139871563746157],["_IO_setvbuf",139871563746512,139871563747075],["_IO_vsprintf",139871563747616,139871563747795],["fputwc",139871563747984,139871563748277],["ptsname_r",139871564533584,139871564533650],["getutxline",139871564533744,139871564533749],["updwtmpx",139871564533792,139871564533797],["dl_iterate_phdr",139871564533872,139871564534371],["exp2f128",139871565672272,139871565672461],["powf128",139871565673744,139871565674234],["lgammaf128_r",139871565675360,139871565675533],["f32addf32x",139871565703536,139871565703973],["daddl",139871565704544,139871565704954],["f32xaddf128",139871565705600,139871565706242],["f32divf32x",139871565706864,139871565707237],["f32divf64x",139871565707424,139871565707742],["__GI___nptl_create_event",139871566580736,139871566580737],["free_stacks",139871566580816,139871566580993],["__nptl_stacks_freeres",139871566581776,139871566581783],["__nptl_setxid_error",139871566583056,139871566583105],["__GI___pthread_cleanup_upto",139871566625888,139871566626036],["__pthread_disable_asynccancel",139871566626144,139871566626233],["std::__1::__tree<v8_inspector::String16, std::__1::less<v8_inspector::String16>, std::__1::allocator<v8_inspector::String16> >::destroy(std::__1::__tree_node<v8_inspector::String16, void*>*)",93957335208576,93957335208642],["void std::__1::__tree_balance_after_insert<std::__1::__tree_node_base<void*>*>(std::__1::__tree_node_base<void*>*, std::__1::__tree_node_base<void*>*)",93957335209392,93957335209743],["v8::InspectorClient::SendInspectorMessage(v8::FunctionCallbackInfo<v8::Value> const&)",93957335305392,93957335305796],["v8::InspectorFrontend::~InspectorFrontend()",93957335306352,93957335306400],["v8::InspectorFrontend::sendNotification(std::__1::unique_ptr<v8_inspector::StringBuffer, std::__1::default_delete<v8_inspector::StringBuffer> >)",93957335306528,93957335306596],["v8::ProcessMessageTask::~ProcessMessageTask()",93957335306976,93957335307096],["v8::internal::LocalEmbedderHeapTracer::EnterFinalPause()",93957336825696,93957336825737],["v8::internal::Handle<v8::internal::HeapNumber> v8::internal::FactoryBase<v8::internal::LocalFactory>::NewHeapNumber<(v8::internal::AllocationType)1>()",93957336826912,93957336827041],["v8::internal::Handle<v8::internal::String> v8::internal::FactoryBase<v8::internal::LocalFactory>::InternalizeStringWithKey<v8::internal::SequentialStringKey<unsigned char> >(v8::internal::SequentialStringKey<unsigned char>*)",93957336827216,93957336827246],["v8::internal::FactoryBase<v8::internal::Factory>::NewAccessorPair()",93957336827648,93957336827874],["v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArrayWithMap(v8::internal::Handle<v8::internal::Map>, int, v8::internal::AllocationType)",93957336828224,93957336828244],["v8::internal::FactoryBase<v8::internal::Factory>::NewFixedDoubleArray(int, v8::internal::AllocationType)",93957336828304,93957336828487],["v8::internal::FactoryBase<v8::internal::Factory>::NewWeakFixedArray(int, v8::internal::AllocationType)",93957336828752,93957336828791],["v8::internal::FactoryBase<v8::internal::Factory>::NewBytecodeArray(int, unsigned char const*, int, int, v8::internal::Handle<v8::internal::FixedArray>)",93957336829024,93957336829608],["v8::internal::Factory::CopyAndTenureFixedCOWArray(v8::internal::Handle<v8::internal::FixedArray>)",93957336878480,93957336878526],["v8::internal::Factory::NewJSArrayStorage(v8::internal::ElementsKind, int, v8::internal::ArrayStorageAllocationMode)",93957336887392,93957336887684],["v8::internal::Factory::NewJSAsyncFromSyncIterator(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>)",93957336894352,93957336895038],["v8::internal::Factory::NewUninitializedJSGlobalProxy(int)",93957336900432,93957336900844],["v8::internal::Factory::SmiToString(v8::internal::Smi, v8::internal::NumberCacheMode)",93957336902544,93957336903537],["v8::internal::Factory::NewBreakPointInfo(int)",93957336905488,93957336905616],["v8::internal::Factory::ObjectLiteralMapFromCache(v8::internal::Handle<v8::internal::NativeContext>, int)",93957336907216,93957336908007],["v8::internal::Factory::SetRegExpIrregexpData(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, int, unsigned int)",93957336908768,93957336909176],["v8::internal::Factory::ToPrimitiveHintString(v8::internal::ToPrimitiveHint)",93957336909872,93957336909914],["v8::internal::Map::AppendDescriptor(v8::internal::Isolate*, v8::internal::Descriptor*)",93957336910608,93957336910929],["v8::internal::Factory::CreateClassFunctionMap(v8::internal::Handle<v8::internal::JSFunction>)",93957336911536,93957336911953],["v8::internal::Factory::NewJSPromise()",93957336912336,93957336912382],["v8::internal::Factory::CanAllocateInReadOnlySpace()",93957336912592,93957336912612],["v8::internal::Factory::JSFunctionBuilder::JSFunctionBuilder(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Context>)",93957336913056,93957336913084],["v8::internal::Factory::JSFunctionBuilder::BuildRaw(v8::internal::Handle<v8::internal::Code>)",93957336913216,93957336914047],["v8::internal::DescriptorArray::Set(v8::internal::InternalIndex, v8::internal::Name, v8::internal::MaybeObject, v8::internal::PropertyDetails)",93957336914480,93957336914840],["unsigned int std::__1::__sort5<v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&, v8::internal::HeapObject*>(v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&)",93957337043328,93957337043708],["v8::internal::PagedSpace::~PagedSpace()",93957337047152,93957337047180],["v8::internal::PagedSpace::~PagedSpace()",93957337047328,93957337047539],["v8::internal::TorqueGeneratedWeakArrayList<v8::internal::WeakArrayList, v8::internal::HeapObject>::set_objects(int, v8::internal::MaybeObject, v8::internal::WriteBarrierMode)",93957337047712,93957337048034],["v8::internal::UnreachableObjectsFilter::SkipObject(v8::internal::HeapObject)",93957337048288,93957337048754],["v8::internal::UnreachableObjectsFilter::MarkingVisitor::~MarkingVisitor()",93957337048832,93957337048894],["v8::internal::UnreachableObjectsFilter::MarkingVisitor::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957337049040,93957337049167],["v8::internal::UnreachableObjectsFilter::MarkingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337049296,93957337049407],["v8::internal::MarkingWorklists::Local::Publish()",93957337414608,93957337414952],["v8::internal::MemoryAllocator::Unmapper::PrepareForGC()",93957337421856,93957337421868],["v8::internal::MemoryAllocator::UnregisterMemory(v8::internal::BasicMemoryChunk*, v8::internal::Executability)",93957337424992,93957337425196],["v8::internal::MemoryAllocator::Unmapper::UnmapFreeMemoryJob::GetMaxConcurrency(unsigned long) const",93957337427440,93957337427548],["v8::internal::MemoryChunkLayout::ObjectStartOffsetInMemoryChunk(v8::internal::AllocationSpace)",93957337427872,93957337427949],["v8::internal::MemoryChunk::DiscardUnusedMemory(unsigned long, unsigned long)",93957337428224,93957337428313],["v8::internal::MemoryChunk::SetReadAndExecutable()",93957337428512,93957337428527],["v8::internal::MemoryChunk::SetOldGenerationPageFlags(bool)",93957337429184,93957337429224],["void v8::internal::MemoryChunk::ReleaseSlotSet<(v8::internal::RememberedSetType)0>()",93957337429904,93957337430010],["void v8::internal::MemoryChunk::ReleaseSlotSet<(v8::internal::RememberedSetType)1>()",93957337430128,93957337430234],["void v8::internal::MemoryChunk::ReleaseTypedSlotSet<(v8::internal::RememberedSetType)1>()",93957337430288,93957337430327],["void v8::internal::MemoryChunk::ReleaseInvalidatedSlots<(v8::internal::RememberedSetType)1>()",93957337430400,93957337430458],["v8::internal::MemoryChunk::AllocateSweepingSlotSet()",93957337430480,93957337430656],["void v8::internal::MemoryChunk::RegisterObjectWithInvalidatedSlots<(v8::internal::RememberedSetType)1>(v8::internal::HeapObject)",93957337430736,93957337430969],["v8::internal::MemoryChunk::AllocateYoungGenerationBitmap()",93957337431216,93957337431259],["v8::internal::SlotSet* v8::internal::MemoryChunk::AllocateSlotSet<(v8::internal::RememberedSetType)1>()",93957337431440,93957337431616],["v8::internal::Sweeper::StartSweeperTasks()",93957337601744,93957337601902],["v8::internal::Sweeper::FilterSweepingPagesScope::~FilterSweepingPagesScope()",93957337602080,93957337602238],["v8::internal::Sweeper::StartSweeping()",93957337602304,93957337602427],["v8::internal::Sweeper::GetSweptPageSafe(v8::internal::PagedSpace*)",93957337602656,93957337602750],["v8::internal::Sweeper::EnsureCompleted()",93957337602912,93957337603353],["v8::internal::Sweeper::DrainSweepingWorklists()",93957337603600,93957337603965],["v8::internal::Sweeper::ParallelSweepSpace(v8::internal::AllocationSpace, int, int, v8::internal::Sweeper::FreeSpaceMayContainInvalidatedSlots)",93957337604160,93957337604779],["v8::internal::Sweeper::RawSweep(v8::internal::Page*, v8::internal::Sweeper::FreeListRebuildingMode, v8::internal::FreeSpaceTreatmentMode, v8::internal::Sweeper::FreeSpaceMayContainInvalidatedSlots, v8::base::LockGuard<v8::base::Mutex, (v8::base::NullBehavior)0> const&)",93957337604848,93957337607953],["v8::internal::Sweeper::AddPage(v8::internal::AllocationSpace, v8::internal::Page*, v8::internal::Sweeper::AddPageMode)",93957337608224,93957337608371],["v8::internal::Sweeper::AddPageForIterability(v8::internal::Page*)",93957337608624,93957337608674],["unsigned int std::__1::__sort4<v8::internal::Sweeper::StartSweeping()::$_0::operator()(v8::internal::AllocationSpace) const::{lambda(v8::internal::Page*, v8::internal::Page*)#1}&, v8::internal::Page**>(v8::internal::Page**, v8::internal::Page**, v8::internal::Page**, v8::internal::Page**, v8::internal::Sweeper::StartSweeping()::$_0::operator()(v8::internal::AllocationSpace) const::{lambda(v8::internal::Page*, v8::internal::Page*)#1}&)",93957337610496,93957337610746],["v8::internal::Sweeper::SweeperJob::Run(v8::JobDelegate*)",93957337611536,93957337612255],["v8::internal::Sweeper::SweeperJob::RunImpl(v8::JobDelegate*)",93957337612384,93957337613041],["v8::internal::Sweeper::IterabilityTask::RunInternal()",93957337613392,93957337614012],["v8::internal::WeakObjects::UpdateFlushedJSFunctions(v8::internal::Worklist<v8::internal::JSFunction, 64>&)",93957337614128,93957337614743],["v8::internal::WeakObjects::UpdateWeakReferences(v8::internal::Worklist<std::__1::pair<v8::internal::HeapObject, v8::internal::CompressedHeapObjectSlot>, 64>&)",93957337615680,93957337616419],["v8::internal::WeakObjects::UpdateJSWeakRefs(v8::internal::Worklist<v8::internal::JSWeakRef, 64>&)",93957337617168,93957337617814],["v8::internal::CallOptimization::Initialize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FunctionTemplateInfo>)",93957337618000,93957337618235],["v8::internal::CallOptimization::IsCrossContextLazyAccessorPair(v8::internal::Context, v8::internal::Map) const",93957337618352,93957337618444],["v8::internal::CallOptimization::IsCompatibleReceiverMap(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::CallOptimization::HolderLookup) const",93957337618816,93957337618951],["v8::internal::LoadHandler::LoadFromPrototype(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Smi>, v8::internal::MaybeObjectHandle, v8::internal::MaybeObjectHandle)",93957337619360,93957337619762],["void v8::internal::(anonymous namespace)::InitPrototypeChecks<v8::internal::LoadHandler>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::LoadHandler>, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle, v8::internal::MaybeObjectHandle)",93957337620064,93957337620812],["v8::internal::LoadHandler::GetKeyedAccessLoadMode(v8::internal::MaybeObject)",93957337621232,93957337621265],["v8::internal::StoreHandler::StoreElementTransition(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>, v8::internal::KeyedAccessStoreMode, v8::internal::MaybeHandle<v8::internal::Object>)",93957337621312,93957337621767],["v8::internal::StoreHandler::StoreThroughPrototype(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Smi>, v8::internal::MaybeObjectHandle, v8::internal::MaybeObjectHandle)",93957337622144,93957337623458],["v8::internal::StoreHandler::StoreProxy(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::JSReceiver>)",93957337623488,93957337623669],["v8::internal::ICStats::Begin()",93957337623984,93957337624012],["v8::internal::ICStats::Dump()",93957337624080,93957337624463],["v8::internal::ICInfo::AppendToTracedValue(v8::tracing::TracedValue*) const",93957337625056,93957337626036],["v8::internal::ICStats::GetOrCacheFunctionName(v8::internal::JSFunction)",93957337626656,93957337626814],["v8::internal::IC::TransitionMarkFromState(v8::internal::InlineCacheState)",93957337627744,93957337627786],["v8::internal::(anonymous namespace)::GetModifier(v8::internal::KeyedAccessStoreMode)",93957337629008,93957337629047],["v8::internal::ActionNode::StorePosition(int, bool, v8::internal::RegExpNode*)",93957339826976,93957339827103],["v8::internal::ChoiceNode::FillInBMInfo(v8::internal::Isolate*, int, int, v8::internal::BoyerMooreLookahead*, bool)",93957339834416,93957339834683],["v8::internal::LoopChoiceNode::AddLoopAlternative(v8::internal::GuardedAlternative)",93957339842288,93957339842498],["v8::internal::BoyerMooreLookahead::EmitSkipInstructions(v8::internal::RegExpMacroAssembler*)",93957339846160,93957339846864],["v8::internal::BackReferenceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339851984,93957339852241],["v8::internal::RegExpCompiler::OptionallyStepBackToLeadSurrogate(v8::internal::RegExpNode*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957339853584,93957339854264],["v8::internal::NegativeLookaroundChoiceNode::FillInBMInfo(v8::internal::Isolate*, int, int, v8::internal::BoyerMooreLookahead*, bool)",93957339855552,93957339855616],["std::__1::bitset<128ul>::operator>>=(unsigned long)",93957339857840,93957339858130],["v8::internal::Analysis<v8::internal::(anonymous namespace)::AssertionPropagator, v8::internal::(anonymous namespace)::EatsAtLeastPropagator>::VisitAction(v8::internal::ActionNode*)",93957339859152,93957339859385],["v8::internal::Analysis<v8::internal::(anonymous namespace)::AssertionPropagator, v8::internal::(anonymous namespace)::EatsAtLeastPropagator>::VisitLoopChoice(v8::internal::LoopChoiceNode*)",93957339859744,93957339860123],["v8::internal::Analysis<v8::internal::(anonymous namespace)::AssertionPropagator, v8::internal::(anonymous namespace)::EatsAtLeastPropagator>::VisitBackReference(v8::internal::BackReferenceNode*)",93957339860544,93957339860710],["v8::internal::Analysis<v8::internal::(anonymous namespace)::AssertionPropagator, v8::internal::(anonymous namespace)::EatsAtLeastPropagator>::VisitText(v8::internal::TextNode*)",93957339860912,93957339861449],["v8::internal::IrregexpInterpreter::Match(v8::internal::Isolate*, v8::internal::JSRegExp, v8::internal::String, int*, int, int, v8::internal::RegExp::CallOrigin)",93957339861488,93957339861764],["v8::internal::IrregexpInterpreter::Result v8::internal::(anonymous namespace)::RawMatch<unsigned char>(v8::internal::Isolate*, v8::internal::ByteArray, v8::internal::String, v8::internal::Vector<unsigned char const>, int*, int, int, int, unsigned int, v8::internal::RegExp::CallOrigin, unsigned int)",93957339862032,93957339868426],["v8::internal::IrregexpInterpreter::MatchForCallFromJs(unsigned long, int, unsigned long, unsigned long, int*, int, unsigned long, v8::internal::RegExp::CallOrigin, v8::internal::Isolate*, unsigned long)",93957339874784,93957339874949],["v8::base::SmallVector<int, 64ul>::Grow(unsigned long)",93957339874992,93957339875130],["v8_inspector::(anonymous namespace)::ActualScript::offset(int, int) const",93957342529232,93957342529355],["v8_inspector::V8Debugger::terminateExecutionCompletedCallback(v8::Isolate*)",93957342531936,93957342532058],["v8_inspector::V8Debugger::disable()",93957342532400,93957342532774],["v8_inspector::V8Debugger::setBreakpointsActive(bool)",93957342533392,93957342533447],["v8_inspector::V8Debugger::setPauseOnNextCall(bool, int)",93957342533520,93957342533639],["v8_inspector::V8Debugger::breakProgram(int)",93957342533680,93957342533705],["v8_inspector::V8Debugger::continueProgram(int, bool)",93957342533760,93957342533820],["v8_inspector::V8Debugger::stepIntoStatement(int, bool)",93957342533904,93957342534009],["v8_inspector::String16 v8_inspector::String16::concat<v8_inspector::String16, char, v8_inspector::String16>(v8_inspector::String16, char, v8_inspector::String16)",93957342674160,93957342675586],["v8_inspector::(anonymous namespace)::nativeSetterCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957342703536,93957342703821],["void v8_inspector::String16Builder::appendAll<v8_inspector::String16, char, v8_inspector::String16>(v8_inspector::String16, char, v8_inspector::String16)",93957342710752,93957342711415],["v8_inspector::(anonymous namespace)::toProtocolValue(v8::Local<v8::Context>, v8::Local<v8::Value>, int, std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> >*)",93957342713760,93957342715458],["v8_inspector::String16 v8_inspector::String16::concat<v8_inspector::String16, v8_inspector::String16, v8_inspector::String16>(v8_inspector::String16, v8_inspector::String16, v8_inspector::String16)",93957342719008,93957342721097],["v8_inspector::(anonymous namespace)::ObjectMirror::buildObjectPreviewInternal(v8::Local<v8::Context>, bool, bool, int*, int*, std::__1::unique_ptr<v8_inspector::protocol::Runtime::ObjectPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::ObjectPreview> >*) const",93957342723760,93957342730750],["v8_inspector::(anonymous namespace)::PreviewPropertyAccumulator::~PreviewPropertyAccumulator()",93957342731312,93957342731420],["v8_inspector::(anonymous namespace)::PrimitiveValueMirror::~PrimitiveValueMirror()",93957342732688,93957342732759],["v8_inspector::(anonymous namespace)::PrimitiveValueMirror::buildEntryPreview(v8::Local<v8::Context>, int*, int*, std::__1::unique_ptr<v8_inspector::protocol::Runtime::ObjectPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::ObjectPreview> >*) const",93957342733648,93957342734098],["v8_inspector::(anonymous namespace)::NumberMirror::buildRemoteObject(v8::Local<v8::Context>, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*) const",93957342734368,93957342734941],["v8_inspector::(anonymous namespace)::NumberMirror::buildEntryPreview(v8::Local<v8::Context>, int*, int*, std::__1::unique_ptr<v8_inspector::protocol::Runtime::ObjectPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::ObjectPreview> >*) const",93957342735328,93957342735833],["v8_inspector::(anonymous namespace)::BigIntMirror::buildRemoteObject(v8::Local<v8::Context>, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*) const",93957342736512,93957342736841],["v8_inspector::(anonymous namespace)::BigIntMirror::buildEntryPreview(v8::Local<v8::Context>, int*, int*, std::__1::unique_ptr<v8_inspector::protocol::Runtime::ObjectPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::ObjectPreview> >*) const",93957342737168,93957342737568],["v8_inspector::(anonymous namespace)::SymbolMirror::buildRemoteObject(v8::Local<v8::Context>, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*) const",93957342737856,93957342738381],["v8_inspector::(anonymous namespace)::FunctionMirror::buildRemoteObject(v8::Local<v8::Context>, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*) const",93957342738768,93957342739735],["v8_inspector::(anonymous namespace)::FunctionMirror::buildEntryPreview(v8::Local<v8::Context>, int*, int*, std::__1::unique_ptr<v8_inspector::protocol::Runtime::ObjectPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::ObjectPreview> >*) const",93957342740000,93957342740528],["v8::internal::compiler::CodeGenerator::MoveType::InferSwap(v8::internal::compiler::InstructionOperand*, v8::internal::compiler::InstructionOperand*)",93957342880880,93957342880938],["v8::internal::compiler::InstructionScheduler::EndBlock(v8::internal::compiler::RpoNumber)",93957342896912,93957342896971],["v8::internal::compiler::InstructionSelector::Emit(unsigned int, unsigned long, v8::internal::compiler::InstructionOperand*, unsigned long, v8::internal::compiler::InstructionOperand*, unsigned long, v8::internal::compiler::InstructionOperand*)",93957342910896,93957342911741],["v8::internal::compiler::InstructionSelector::IsOnlyUserOfNodeInSameBlock(v8::internal::compiler::Node*, v8::internal::compiler::Node*) const",93957342912480,93957342912617],["v8::internal::compiler::InstructionSelector::GetEffectLevel(v8::internal::compiler::Node*, v8::internal::compiler::FlagsContinuation*) const",93957342913072,93957342913124],["v8::internal::compiler::InstructionSelector::AddOperandToStateValueDescriptor(v8::internal::compiler::StateValueList*, v8::internal::ZoneVector<v8::internal::compiler::InstructionOperand>*, v8::internal::compiler::OperandGenerator*, v8::internal::compiler::StateObjectDeduplicator*, v8::internal::compiler::Node*, v8::internal::MachineType, v8::internal::compiler::FrameStateInputKind, v8::internal::Zone*)",93957342913312,93957342917614],["v8::internal::compiler::StateValueList::PushDuplicate(unsigned long)",93957342918224,93957342918502],["v8::internal::compiler::InstructionSelector::EmitWithContinuation(unsigned int, unsigned long, v8::internal::compiler::InstructionOperand*, unsigned long, v8::internal::compiler::InstructionOperand*, v8::internal::compiler::FlagsContinuation*)",93957342920848,93957342920883],["v8::internal::compiler::InstructionSelector::EmitWithContinuation(unsigned int, unsigned long, v8::internal::compiler::InstructionOperand*, unsigned long, v8::internal::compiler::InstructionOperand*, unsigned long, v8::internal::compiler::InstructionOperand*, v8::internal::compiler::FlagsContinuation*)",93957342921024,93957342927128],["v8::internal::compiler::InstructionSelector::InitializeCallBuffer(v8::internal::compiler::Node*, v8::internal::compiler::CallBuffer*, v8::base::Flags<v8::internal::compiler::InstructionSelector::CallBufferFlag, int>, bool, int)",93957342927984,93957342937653],["v8::internal::compiler::OperandGenerator::UseLocation(v8::internal::compiler::Node*, v8::internal::compiler::LinkageLocation)",93957342937936,93957342938197],["v8::internal::compiler::InstructionSelector::VisitControl(v8::internal::compiler::BasicBlock*)",93957342938592,93957342939740],["v8::internal::compiler::InstructionSelector::VisitCall(v8::internal::compiler::Node*, v8::internal::compiler::BasicBlock*)",93957342951408,93957342952883],["v8::internal::compiler::InstructionSelector::VisitBranch(v8::internal::compiler::Node*, v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957342954624,93957342954846],["v8::internal::compiler::InstructionSelector::MarkPairProjectionsAsWord32(v8::internal::compiler::Node*)",93957342955392,93957342955581],["v8::internal::compiler::InstructionSelector::MarkAsTagged(v8::internal::compiler::Node*)",93957342955680,93957342955764],["v8::internal::compiler::MachineOperatorBuilder::V128AnyTrue()",93957344484320,93957344484335],["v8::internal::compiler::MachineOperatorBuilder::MemBarrier()",93957344506816,93957344506831],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairOr()",93957344509264,93957344509279],["v8::internal::compiler::MachineOperatorBuilder::I32x4ReplaceLane(int)",93957344510928,93957344511070],["v8::internal::compiler::Operator1<v8::internal::compiler::TruncateKind, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TruncateKind>, v8::internal::compiler::OpHash<v8::internal::compiler::TruncateKind> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344569184,93957344569282],["v8::internal::compiler::Operator1<v8::internal::compiler::StackSlotRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StackSlotRepresentation>, v8::internal::compiler::OpHash<v8::internal::compiler::StackSlotRepresentation> >::HashCode() const",93957344569696,93957344569779],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreLaneParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344570384,93957344570454],["v8::internal::compiler::Operator1<v8::internal::compiler::ShuffleParameter, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ShuffleParameter>, v8::internal::compiler::OpHash<v8::internal::compiler::ShuffleParameter> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344570912,93957344571054],["v8::internal::compiler::MapInference::AllOfInstanceTypesUnsafe(std::__1::function<bool (v8::internal::InstanceType)>) const",93957344573424,93957344573836],["v8::internal::compiler::MapInference::AnyOfInstanceTypesUnsafe(std::__1::function<bool (v8::internal::InstanceType)>) const",93957344574080,93957344574492],["v8::internal::compiler::MapInference::RelyOnMapsViaStability(v8::internal::compiler::CompilationDependencies*)",93957344574896,93957344575005],["bool std::__1::__function::__policy_invoker<bool (v8::internal::InstanceType)>::__call_impl<std::__1::__function::__default_alloc_func<bool (*)(v8::internal::InstanceType), bool (v8::internal::InstanceType)> >(std::__1::__function::__policy_storage const*, v8::internal::InstanceType)",93957344575600,93957344575612],["v8::internal::compiler::MemoryLowering::ReduceLoadFromObject(v8::internal::compiler::Node*)",93957344576016,93957344576152],["v8::internal::compiler::MemoryLowering::ReduceStoreElement(v8::internal::compiler::Node*, v8::internal::compiler::MemoryLowering::AllocationState const*)",93957344577056,93957344577508],["v8::internal::compiler::MemoryLowering::ComputeIndex(v8::internal::compiler::ElementAccess const&, v8::internal::compiler::Node*)",93957344581376,93957344581563],["v8::internal::compiler::MemoryLowering::~MemoryLowering()",93957344581984,93957344582020],["v8::internal::compiler::MemoryOptimizer::MemoryOptimizer(v8::internal::compiler::JSGraph*, v8::internal::Zone*, v8::internal::PoisoningMitigationLevel, v8::internal::compiler::MemoryLowering::AllocationFolding, char const*, v8::internal::TickCounter*)",93957344582112,93957344582556],["v8::internal::compiler::MemoryOptimizer::Optimize()",93957344583728,93957344583975],["v8::internal::compiler::MemoryOptimizer::VisitNode(v8::internal::compiler::Node*, v8::internal::compiler::MemoryLowering::AllocationState const*)",93957344584320,93957344584646],["v8::internal::compiler::(anonymous namespace)::CanAllocate(v8::internal::compiler::Node const*)",93957344585136,93957344585210],["v8::internal::compiler::MemoryOptimizer::EnqueueMerge(v8::internal::compiler::Node*, int, v8::internal::compiler::MemoryLowering::AllocationState const*)",93957344585584,93957344586954],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::Node*, char const*, v8::internal::Zone*)>::__call_impl<std::__1::__function::__default_alloc_func<void (*)(v8::internal::compiler::Node*, v8::internal::compiler::Node*, char const*, v8::internal::Zone*), void (v8::internal::compiler::Node*, v8::internal::compiler::Node*, char const*, v8::internal::Zone*)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, char const*, v8::internal::Zone*)",93957344588416,93957344588438],["v8::internal::compiler::NodeMarkerBase::NodeMarkerBase(v8::internal::compiler::Graph*, unsigned int)",93957344588768,93957344588788],["v8::internal::compiler::IrOpcode::IsComparisonOpcode(v8::internal::compiler::IrOpcode::Value)",93957344588832,93957344588874],["v8::internal::compiler::ObserveNodeManager::StartObserving(v8::internal::compiler::Node*, v8::internal::compiler::NodeObserver*)",93957344589008,93957344589368],["v8::internal::compiler::NodeOrigin::PrintJson(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957344590272,93957344590541],["v8::internal::compiler::NodeOriginTable::AddDecorator()",93957344590624,93957344590711],["v8::internal::compiler::NodeOriginTable::SetNodeOrigin(v8::internal::compiler::Node*, v8::internal::compiler::NodeOrigin const&)",93957344590816,93957344590977],["v8::internal::compiler::NodeOriginTable::Decorator::Decorate(v8::internal::compiler::Node*)",93957344591328,93957344591491],["v8::internal::compiler::NodeProperties::IsValueEdge(v8::internal::compiler::Edge)",93957344592080,93957344592124],["v8::internal::compiler::NodeProperties::IsEffectEdge(v8::internal::compiler::Edge)",93957344592240,93957344592361],["v8::internal::compiler::NodeProperties::IsExceptionalCall(v8::internal::compiler::Node*, v8::internal::compiler::Node**)",93957344592496,93957344592786],["v8::internal::compiler::Scheduler::ScheduleLate()",93957344757200,93957344757858],["v8::internal::compiler::ScheduleEarlyNodeVisitor::Run(v8::internal::ZoneVector<v8::internal::compiler::Node*>*)",93957344763040,93957344763675],["v8::internal::compiler::ScheduleLateNodeVisitor::GetBlockForUse(v8::internal::compiler::Edge)",93957344785168,93957344785781],["v8::internal::compiler::SerializerForBackgroundCompilation::SerializerForBackgroundCompilation(v8::internal::compiler::ZoneStats*, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::CompilationDependencies*, v8::internal::compiler::CompilationSubject, v8::base::Optional<v8::internal::compiler::Hints>, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&, v8::internal::compiler::MissingArgumentsPolicy, v8::base::Flags<v8::internal::compiler::SerializerForBackgroundCompilationFlag, int>, int)",93957344808704,93957344810630],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitLdaImmutableContextSlot(v8::internal::interpreter::BytecodeArrayIterator*)",93957344829968,93957344830236],["v8::internal::compiler::SerializerForBackgroundCompilation::PrepareArgumentsHints(v8::internal::interpreter::Register, unsigned long)",93957344837120,93957344838272],["std::__1::vector<v8::internal::compiler::Hints, v8::internal::ZoneAllocator<v8::internal::compiler::Hints> >::insert(std::__1::__wrap_iter<v8::internal::compiler::Hints const*>, v8::internal::compiler::Hints&&)",93957344863488,93957344865125],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessKeyedPropertyAccess(v8::internal::compiler::Hints*, v8::internal::compiler::Hints const&, v8::internal::FeedbackSlot, v8::internal::compiler::AccessMode, bool)",93957344871888,93957344872241],["void std::__1::__function::__policy_invoker<void (int)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::SerializerForBackgroundCompilation::TraverseBytecode()::$_0, void (int)> >(std::__1::__function::__policy_storage const*, int)",93957344882560,93957344883353],["void v8::internal::compiler::RepresentationSelector::InsertUnreachableIfNecessary<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957344886848,93957344887515],["v8::internal::compiler::SimplifiedLowering::Float64Sign(v8::internal::compiler::Node*)",93957344895328,93957344895689],["v8::internal::compiler::SimplifiedLowering::DoMin(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::MachineRepresentation)",93957344901216,93957344901390],["v8::internal::compiler::NodeProperties::PastEffectIndex(v8::internal::compiler::Node*)",93957344904304,93957344904365],["void v8::internal::compiler::RepresentationSelector::VisitSelect<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344935856,93957344936230],["v8::internal::compiler::(anonymous namespace)::CheckedUseInfoAsFloat64FromHint(v8::internal::compiler::NumberOperationHint, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::IdentifyZeros)",93957344940032,93957344940109],["void v8::internal::compiler::RepresentationSelector::VisitBinop<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::UseInfo, v8::internal::compiler::UseInfo, v8::internal::MachineRepresentation, v8::internal::compiler::Type)",93957344944864,93957344945153],["void v8::internal::compiler::RepresentationSelector::VisitCheck<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::SimplifiedLowering*)",93957344948528,93957344949219],["void v8::internal::compiler::RepresentationSelector::VisitObjectIs<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::SimplifiedLowering*)",93957344949776,93957344950534],["void v8::internal::compiler::RepresentationSelector::VisitReturn<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*)",93957344952128,93957344952562],["v8::internal::compiler::RepresentationSelector::RetypeNode(v8::internal::compiler::Node*)",93957344955632,93957344955793],["v8::internal::compiler::RepresentationSelector::Weaken(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::Type)",93957344967376,93957344967640],["void v8::internal::compiler::RepresentationSelector::VisitCall<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957344968800,93957344968960],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeInt32Binop<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*)",93957344971232,93957344971448],["void v8::internal::compiler::RepresentationSelector::VisitObjectIs<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::SimplifiedLowering*)",93957344972128,93957344972294],["void v8::internal::compiler::RepresentationSelector::VisitUnused<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957345011824,93957345012071],["v8::internal::compiler::RepresentationSelector::ChangeOp(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*)",93957345013536,93957345013599],["v8::internal::compiler::RepresentationSelector::ChangeToPureOp(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*)",93957345016160,93957345016574],["v8::internal::compiler::RepresentationSelector::LowerToCheckedInt32Mul(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::Type, v8::internal::compiler::Type)",93957345017056,93957345017281],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeInt32Binop<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957345020368,93957345020800],["void v8::internal::compiler::RepresentationSelector::VisitCheckBounds<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957345022080,93957345023582],["void v8::internal::compiler::RepresentationSelector::VisitStateValues<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957345025744,93957345026671],["void v8::internal::compiler::RepresentationSelector::VisitJSWasmCall<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957345029360,93957345030464],["v8::internal::compiler::RepresentationSelector::ChangeToDeadValue(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957345031568,93957345031880],["v8::internal::compiler::SimplifiedOperatorReducer::Reduce(v8::internal::compiler::Node*)",93957345031920,93957345037406],["v8::internal::compiler::(anonymous namespace)::DecideObjectIsSmi(v8::internal::compiler::Node*)",93957345037568,93957345037853],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::FieldAccess const&)",93957345037872,93957345038468],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::ElementAccess const&)",93957345038576,93957345038994],["std::__1::basic_ostream<char, std::__1::char_traits<char> >& v8::internal::operator<< <v8::internal::Map>(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::ZoneHandleSet<v8::internal::Map>)",93957345039200,93957345039479],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::ElementsTransition)",93957345039728,93957345039865],["v8::internal::compiler::FastMapParameterOf(v8::internal::compiler::Operator const*)",93957345039920,93957345039977],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::AllocateParameters)",93957345040128,93957345040277],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::CheckTaggedInputParameters const&)",93957345040336,93957345040454],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberLog10()",93957345040576,93957345040590],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberMax()",93957345040608,93957345040622],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberPow()",93957345040640,93957345040654],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberSign()",93957345040672,93957345040686],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberSinh()",93957345040704,93957345040718],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberTan()",93957345040736,93957345040750],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberTrunc()",93957345040768,93957345040782],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberToInt32()",93957345040800,93957345040814],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberToUint32()",93957345040832,93957345040846],["v8::internal::compiler::SimplifiedOperatorBuilder::NumberSilenceNaN()",93957345040864,93957345040878],["v8::internal::compiler::SimplifiedOperatorBuilder::StringConcat()",93957345040896,93957345040910],["v8::internal::compiler::SimplifiedOperatorBuilder::StringFromSingleCharCode()",93957345040928,93957345040942],["v8::internal::compiler::SimplifiedOperatorBuilder::StringIndexOf()",93957345040960,93957345040974],["v8::internal::compiler::SimplifiedOperatorBuilder::StringToLowerCaseIntl()",93957345040992,93957345041006],["v8::internal::compiler::SimplifiedOperatorBuilder::TypeOf()",93957345041024,93957345041038],["v8::internal::compiler::SimplifiedOperatorBuilder::PlainPrimitiveToWord32()",93957345041056,93957345041070],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeTaggedSignedToInt32()",93957345041088,93957345041102],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeTaggedToInt32()",93957345041120,93957345041134],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeTaggedToUint32()",93957345041152,93957345041166],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeTaggedToTaggedSigned()",93957345041184,93957345041198],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeInt31ToTaggedSigned()",93957345041216,93957345041230],["v8::internal::compiler::SimplifiedOperatorBuilder::ChangeInt64ToTagged()",93957345041248,93957345041262],["sigaltstack",139871563507264,139871563507297],["sigorset",139871563508304,139871563508381],["sigqueue",139871563508752,139871563508920],["sigset",139871563509296,139871563509636],["atol",139871563509696,139871563509708],["bsearch",139871563509728,139871563509850],["qsort",139871563512704,139871563512712],["putenv",139871563512944,139871563513190],["getpt",139871564532000,139871564532046],["setutxent",139871564533680,139871564533685],["getutxid",139871564533728,139871564533733],["pututxline",139871564533760,139871564533765],["fminmagf128",139871565670960,139871565671252],["y0f128",139871565672896,139871565673040],["log10f128",139871565673488,139871565673601],["sinhf128",139871565674400,139871565674573],["lgammaf128",139871565675168,139871565675349],["expf128",139871565675536,139871565675725],["__iscanonicall",139871565677152,139871565677186],["f32xaddf64",139871565703984,139871565704134],["__nptl_main",139871566580768,139871566580801],["create_thread.constprop.0",139871566581008,139871566581427],["setxid_mark_thread.constprop.0",139871566581536,139871566581776],["__deallocate_stack",139871566581792,139871566582068],["__reclaim_stacks",139871566582400,139871566583042],["__nptl_setxid",139871566583120,139871566583850],["v8::D8Console::~D8Console()",93957335208496,93957335208524],["std::__1::__tree_const_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__tree_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void*>*, long> std::__1::__tree<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::find<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const",93957335208656,93957335208907],["calendar_astro_cleanup()",93957335305312,93957335305320],["v8::InspectorClient::runMessageLoopOnPause(int)",93957335305936,93957335306279],["v8_inspector::V8InspectorClient::currentTimeMS()",93957335306336,93957335306345],["v8::InspectorFrontend::~InspectorFrontend()",93957335306400,93957335306447],["v8::internal::GraphBuildingVisitor::Visit(v8::TracedReferenceBase const&)",93957336823200,93957336823227],["v8::internal::LocalEmbedderHeapTracer::ProcessingScope::ProcessingScope(v8::internal::LocalEmbedderHeapTracer*)",93957336825840,93957336825902],["v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawWithImmortalMap(int, v8::internal::AllocationType, v8::internal::Map, v8::internal::AllocationAlignment)",93957336826752,93957336826779],["v8::internal::Handle<v8::internal::String> v8::internal::FactoryBase<v8::internal::Factory>::InternalizeStringWithKey<v8::internal::SequentialStringKey<unsigned char> >(v8::internal::SequentialStringKey<unsigned char>*)",93957336827088,93957336827111],["v8::internal::Handle<v8::internal::String> v8::internal::FactoryBase<v8::internal::Factory>::InternalizeStringWithKey<v8::internal::SeqSubStringKey<v8::internal::SeqTwoByteString> >(v8::internal::SeqSubStringKey<v8::internal::SeqTwoByteString>*)",93957336827184,93957336827207],["v8::internal::Handle<v8::internal::String> v8::internal::FactoryBase<v8::internal::LocalFactory>::InternalizeStringWithKey<v8::internal::SequentialStringKey<unsigned short> >(v8::internal::SequentialStringKey<unsigned short>*)",93957336827248,93957336827278],["v8::internal::FactoryBase<v8::internal::Factory>::NewStructInternal(v8::internal::InstanceType, v8::internal::AllocationType)",93957336827504,93957336827646],["v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArray(int, v8::internal::AllocationType)",93957336827888,93957336827936],["v8::internal::Factory::CopyJSObject(v8::internal::Handle<v8::internal::JSObject>)",93957336872256,93957336872268],["v8::internal::Factory::NewTypeError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336879776,93957336879954],["v8::internal::Factory::NewSlowJSObjectFromMap(v8::internal::Handle<v8::internal::Map>, int, v8::internal::AllocationType, v8::internal::Handle<v8::internal::AllocationSite>)",93957336886048,93957336886331],["v8::internal::Factory::NewJSModuleNamespace()",93957336889088,93957336889853],["v8::internal::Factory::NewJSSharedArrayBuffer(std::__1::shared_ptr<v8::internal::BackingStore>)",93957336893120,93957336893627],["v8::internal::Factory::NewJSSet()",93957336895520,93957336895995],["v8::internal::Factory::NewJSDataView(v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, unsigned long)",93957336898640,93957336898902],["v8::internal::Factory::NewJSMessageObject(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, int, int, v8::internal::Handle<v8::internal::SharedFunctionInfo>, int, v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::Object>)",93957336901328,93957336902359],["v8::internal::Factory::NumberToString(v8::internal::Handle<v8::internal::Object>, v8::internal::NumberCacheMode)",93957336902432,93957336902539],["v8::internal::Factory::HeapNumberToString(v8::internal::Handle<v8::internal::HeapNumber>, double, v8::internal::NumberCacheMode)",93957336903552,93957336904517],["v8::internal::Factory::NewDebugInfo(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336904992,93957336905480],["v8::internal::Factory::NewBreakPoint(int, v8::internal::Handle<v8::internal::String>)",93957336905616,93957336905841],["v8::internal::Factory::NewArgumentsObject(v8::internal::Handle<v8::internal::JSFunction>, int)",93957336906464,93957336907209],["v8::internal::Factory::NewLoadHandler(int, v8::internal::AllocationType)",93957336908016,93957336908139],["v8::internal::Factory::SetRegExpAtomData(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::Object>)",93957336908368,93957336908762],["v8::internal::Factory::SetRegExpExperimentalData(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, int)",93957336909184,93957336909542],["v8::internal::ObjectVisitor::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957337038848,93957337038866],["unsigned int std::__1::__sort4<std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&, std::__1::pair<int, v8::internal::HeapObject>*>(std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&)",93957337045936,93957337046138],["v8::internal::ZoneConsumedPreparseData::GetScopeData()",93957337047120,93957337047130],["v8::internal::Space::RoundSizeDownToObjectAlignment(int)",93957337047200,93957337047225],["v8::internal::PagedSpace::Waste()",93957337047296,93957337047313],["v8::internal::MapSpace::RoundSizeDownToObjectAlignment(int)",93957337047552,93957337047587],["v8::internal::StressConcurrentAllocationObserver::Step(int, unsigned long, unsigned long)",93957337047632,93957337047702],["v8::internal::UnreachableObjectsFilter::~UnreachableObjectsFilter()",93957337048048,93957337048247],["v8::internal::MarkingBarrier::RecordRelocSlot(v8::internal::Code, v8::internal::RelocInfo*, v8::internal::HeapObject)",93957337409616,93957337409774],["v8::internal::MarkingWorklists::Local::SwitchToContextSlow(unsigned long)",93957337416448,93957337416997],["v8::internal::MemoryAllocator::GetCommitPageSize()",93957337420704,93957337420735],["v8::internal::MemoryAllocator::Unmapper::NumberOfCommittedChunks()",93957337423024,93957337423098],["v8::internal::MemoryAllocator::ZapBlock(unsigned long, unsigned long, unsigned long)",93957337424848,93957337424870],["v8::internal::MemoryAllocator::AllocateReadOnlyPage(unsigned long, v8::internal::ReadOnlySpace*)",93957337425392,93957337425445],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::GlobalBackingStoreRegistryImpl, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::GlobalBackingStoreRegistryImpl>, v8::base::DefaultConstructTrait<v8::internal::(anonymous namespace)::GlobalBackingStoreRegistryImpl>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::GlobalBackingStoreRegistryImpl> >::InitInstance(void*)",93957337426656,93957337426717],["v8::internal::MemoryChunkLayout::CodePageGuardStartOffset()",93957337427712,93957337427757],["v8::internal::MemoryChunkLayout::ObjectStartOffsetInDataPage()",93957337427840,93957337427865],["v8::internal::MemoryChunkLayout::AllocatableMemoryInDataPage()",93957337427952,93957337427985],["v8::internal::MemoryChunkLayout::MaxRegularCodeObjectSize()",93957337428128,93957337428224],["v8::internal::MemoryChunk::InitializationMemoryFence()",93957337428320,93957337428329],["v8::internal::MemoryChunk::SetReadable()",93957337428496,93957337428511],["v8::internal::MemoryChunk::SetReadAndWritable()",93957337428528,93957337428692],["v8::internal::MemoryChunk::CommittedPhysicalMemory()",93957337429120,93957337429172],["v8::internal::MemoryChunk::SetYoungGenerationPageFlags(bool)",93957337429232,93957337429272],["v8::internal::RegExpCharacterClass::AppendToText(v8::internal::RegExpText*, v8::internal::Zone*)",93957339820656,93957339820688],["v8::internal::AssertionNode::FillInBMInfo(v8::internal::Isolate*, int, int, v8::internal::BoyerMooreLookahead*, bool)",93957339828688,93957339828764],["v8::internal::LoopChoiceNode::GetQuickCheckDetails(v8::internal::QuickCheckDetails*, v8::internal::RegExpCompiler*, int, bool)",93957339833488,93957339833626],["v8::internal::AssertionNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339835920,93957339836582],["v8::internal::TextNode::GreedyLoopTextLength()",93957339842064,93957339842129],["v8::internal::LoopChoiceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339842736,93957339843041],["v8::internal::BoyerMooreLookahead::FindBestInterval(int, int, int*, int*)",93957339845312,93957339845902],["v8::internal::ChoiceNode::EmitOptimizedUnanchoredSearch(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339848704,93957339848982],["v8::internal::ActionNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339850896,93957339851970],["v8::internal::AnalyzeRegExp(v8::internal::Isolate*, bool, v8::internal::RegExpNode*)",93957339852256,93957339852413],["v8::internal::TextNode::FillInBMInfo(v8::internal::Isolate*, int, int, v8::internal::BoyerMooreLookahead*, bool)",93957339852528,93957339853575],["v8::internal::ChoiceNode* v8::internal::Zone::New<v8::internal::ChoiceNode, int, v8::internal::Zone*>(int&&, v8::internal::Zone*&&)",93957339854272,93957339854520],["v8::internal::ActionNode::GreedyLoopTextLength()",93957339855536,93957339855547],["v8::internal::NegativeLookaroundChoiceNode::try_to_emit_quick_check_for_alternative(bool)",93957339855616,93957339855626],["v8::internal::GenerateBranches(v8::internal::RegExpMacroAssembler*, v8::internal::ZoneList<unsigned int>*, unsigned int, unsigned int, unsigned int, unsigned int, v8::internal::Label*, v8::internal::Label*, v8::internal::Label*)",93957339855648,93957339857826],["std::__1::__bit_iterator<std::__1::__bitset<2ul, 128ul>, false, 0> std::__1::copy<std::__1::__bitset<2ul, 128ul>, false>(std::__1::__bit_iterator<std::__1::__bitset<2ul, 128ul>, false, 0>, std::__1::__bit_iterator<std::__1::__bitset<2ul, 128ul>, false, 0>, std::__1::__bit_iterator<std::__1::__bitset<2ul, 128ul>, false, 0>)",93957339858144,93957339858540],["v8_inspector::(anonymous namespace)::ActualScript::codeOffset() const",93957342528080,93957342528153],["v8_inspector::(anonymous namespace)::ActualScript::setBreakpointOnRun(int*) const",93957342529632,93957342529713],["v8_inspector::V8Debugger::V8Debugger(v8::Isolate*, v8_inspector::V8InspectorImpl*)",93957342530736,93957342531073],["v8_inspector::V8Debugger::~V8Debugger()",93957342532080,93957342532108],["v8_inspector::V8Debugger::nearHeapLimitCallback(void*, unsigned long, unsigned long)",93957342532288,93957342532389],["v8_inspector::V8Debugger::isPausedInContextGroup(int) const",93957342532784,93957342532805],["v8_inspector::V8Debugger::getCompiledScripts(int, v8_inspector::V8DebuggerAgentImpl*)",93957342532832,93957342533386],["v8_inspector::V8Debugger::getPauseOnExceptionsState()",93957342533456,93957342533468],["v8_inspector::AsyncStackTrace::capture(v8_inspector::V8Debugger*, int, v8_inspector::String16 const&, int)",93957342655488,93957342656658],["std::__1::__unique_if<v8_inspector::(anonymous namespace)::PrimitiveValueMirror>::__unique_single std::__1::make_unique<v8_inspector::(anonymous namespace)::PrimitiveValueMirror, v8::Local<v8::Value>&, char const*&>(v8::Local<v8::Value>&, char const*&)",93957342687856,93957342688548],["v8_inspector::(anonymous namespace)::isArrayLike(v8::Local<v8::Context>, v8::Local<v8::Value>, unsigned long*)",93957342701232,93957342701751],["v8_inspector::protocol::Runtime::RemoteObject::setDescription(v8_inspector::String16 const&)",93957342704736,93957342705401],["void std::__1::vector<v8_inspector::InternalPropertyMirror, std::__1::allocator<v8_inspector::InternalPropertyMirror> >::__push_back_slow_path<v8_inspector::InternalPropertyMirror>(v8_inspector::InternalPropertyMirror&&)",93957342709696,93957342710154],["v8_inspector::(anonymous namespace)::ObjectMirror::~ObjectMirror()",93957342712080,93957342712148],["v8_inspector::(anonymous namespace)::ObjectMirror::buildObjectPreview(v8::Local<v8::Context>, bool, int*, int*, std::__1::unique_ptr<v8_inspector::protocol::Runtime::ObjectPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::ObjectPreview> >*) const",93957342713664,93957342713700],["v8_inspector::protocol::Runtime::RemoteObject::setClassName(v8_inspector::String16 const&)",93957342716128,93957342716784],["v8_inspector::protocol::Runtime::PropertyPreview::setValue(v8_inspector::String16 const&)",93957342718352,93957342719008],["v8_inspector::String16 v8_inspector::String16::concat<v8_inspector::String16, unsigned short>(v8_inspector::String16, unsigned short)",93957342721104,93957342721812],["void v8_inspector::String16Builder::appendAll<v8_inspector::String16, v8_inspector::String16>(v8_inspector::String16, v8_inspector::String16)",93957342723104,93957342723746],["void std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >::emplace_back<char const (&) [17]>(char const (&) [17])",93957342730752,93957342730805],["v8_inspector::(anonymous namespace)::PreviewPropertyAccumulator::~PreviewPropertyAccumulator()",93957342731200,93957342731311],["v8_inspector::(anonymous namespace)::PreviewPropertyAccumulator::Add(v8_inspector::PropertyMirror)",93957342731424,93957342731945],["v8_inspector::(anonymous namespace)::PrimitiveValueMirror::~PrimitiveValueMirror()",93957342732608,93957342732676],["v8_inspector::(anonymous namespace)::PrimitiveValueMirror::buildRemoteObject(v8::Local<v8::Context>, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*) const",93957342732768,93957342733255],["v8::internal::compiler::CodeGenerator::DefineDeoptimizationLiteral(v8::internal::compiler::DeoptimizationLiteral)",93957342873280,93957342873609],["v8::internal::compiler::CodeGenerator::TranslateStateValueDescriptor(v8::internal::compiler::StateValueDescriptor*, v8::internal::compiler::StateValueList*, v8::internal::compiler::InstructionOperandIterator*)",93957342884160,93957342884612],["v8::internal::compiler::GapResolver::Resolve(v8::internal::compiler::ParallelMove*)",93957342895136,93957342895790],["v8::internal::compiler::InstructionScheduler::AddInstruction(v8::internal::compiler::Instruction*)",93957342900128,93957342903546],["v8::internal::compiler::InstructionSelector::VisitBlock(v8::internal::compiler::BasicBlock*)",93957342909120,93957342910817],["v8::internal::compiler::InstructionSelector::Emit(unsigned int, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, unsigned long, v8::internal::compiler::InstructionOperand*)",93957342911808,93957342911875],["v8::internal::compiler::InstructionSelector::GetEffectLevel(v8::internal::compiler::Node*) const",93957342912304,93957342912328],["v8::internal::compiler::InstructionSelector::GetVirtualRegister(v8::internal::compiler::Node const*)",93957342912848,93957342912911],["v8::internal::compiler::InstructionSelector::IsUsed(v8::internal::compiler::Node*) const",93957342913008,93957342913070],["v8::internal::compiler::InstructionSelector::CanAddressRelativeToRootsRegister(v8::internal::ExternalReference const&) const",93957342913136,93957342913183],["v8::internal::compiler::InstructionSelector::MarkAsRepresentation(v8::internal::MachineRepresentation, v8::internal::compiler::Node*)",93957342913216,93957342913302],["v8::internal::compiler::StateValueList::PushArgumentsElements(v8::internal::CreateArgumentsType)",93957342917616,93957342917891],["v8::internal::compiler::Node::InputAt(int) const",93957342918176,93957342918215],["v8::internal::compiler::StateValueList::PushPlain(v8::internal::MachineType)",93957342918512,93957342918787],["v8::internal::compiler::InstructionSelector::AddInputsToFrameStateDescriptor(v8::internal::compiler::FrameStateDescriptor*, v8::internal::compiler::FrameState, v8::internal::compiler::OperandGenerator*, v8::internal::compiler::StateObjectDeduplicator*, v8::internal::ZoneVector<v8::internal::compiler::InstructionOperand>*, v8::internal::compiler::FrameStateInputKind, v8::internal::Zone*)",93957342920144,93957342920843],["v8::internal::compiler::InstructionSelector::EmitWithContinuation(unsigned int, v8::internal::compiler::InstructionOperand, v8::internal::compiler::FlagsContinuation*)",93957342920896,93957342920945],["v8::internal::compiler::MachineOperatorBuilder::I8x16Shl()",93957344483808,93957344483823],["v8::internal::compiler::MachineOperatorBuilder::Word64ReverseBits()",93957344484736,93957344484759],["v8::internal::compiler::StackSlotOperator* v8::internal::Zone::New<v8::internal::compiler::StackSlotOperator, int&, int&>(int&, int&)",93957344504864,93957344505027],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicOr(v8::internal::MachineType)",93957344507776,93957344507907],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairStore()",93957344509200,93957344509215],["v8::internal::compiler::MachineOperatorBuilder::Word32PoisonOnSpeculation()",93957344509328,93957344509343],["v8::internal::compiler::MachineOperatorBuilder::I8x16ExtractLaneS(int)",93957344510352,93957344510494],["v8::internal::compiler::operator==(v8::internal::compiler::S128ImmediateParameter const&, v8::internal::compiler::S128ImmediateParameter const&)",93957344511504,93957344511534],["v8::internal::compiler::MachineOperatorGlobalCache::MachineOperatorGlobalCache()",93957344513392,93957344569059],["v8::internal::compiler::Operator1<v8::internal::MachineType, v8::internal::compiler::OpEqualTo<v8::internal::MachineType>, v8::internal::compiler::OpHash<v8::internal::MachineType> >::HashCode() const",93957344569344,93957344569376],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadTransformParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadTransformParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadTransformParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344569568,93957344569638],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreRepresentation>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreRepresentation> >::Equals(v8::internal::compiler::Operator const*) const",93957344569904,93957344569942],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadLaneParameters> >::HashCode() const",93957344570192,93957344570294],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreLaneParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344570560,93957344570630],["v8::internal::compiler::Operator1<v8::internal::compiler::ShuffleParameter, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ShuffleParameter>, v8::internal::compiler::OpHash<v8::internal::compiler::ShuffleParameter> >::Equals(v8::internal::compiler::Operator const*) const",93957344570800,93957344570832],["_ZNSt3__16vectorIN2v88internal6HandleINS2_3MapEEENS_9allocatorIS5_EEE6insertINS2_13ZoneHandleSetIS4_E14const_iteratorEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS5_NS_15iterator_traitsISE_E9referenceEEE5valueENS_11__wrap_iterIPS5_EEE4typeENSI_IPKS5_EESE_SE_",93957344571248,93957344573217],["v8::internal::compiler::MapInference::AllOfInstanceTypesAreJSReceiver() const",93957344573328,93957344573417],["v8::internal::InstanceTypeChecker::IsJSReceiver(v8::internal::InstanceType)",93957344573840,93957344573855],["v8::internal::compiler::MapInference::AnyOfInstanceTypesAre(v8::internal::InstanceType) const",93957344573968,93957344574077],["v8::internal::compiler::MapInference::GetMaps()",93957344574496,93957344574553],["v8::internal::compiler::MapInference::InsertMapChecks(v8::internal::compiler::JSGraph*, v8::internal::compiler::Effect*, v8::internal::compiler::Control, v8::internal::compiler::FeedbackSource const&)",93957344574624,93957344574889],["v8::internal::compiler::MapInference::RelyOnMapsHelper(v8::internal::compiler::CompilationDependencies*, v8::internal::compiler::JSGraph*, v8::internal::compiler::Effect*, v8::internal::compiler::Control, v8::internal::compiler::FeedbackSource const&)",93957344575008,93957344575326],["v8::internal::compiler::MapInference::NoChange()",93957344575568,93957344575591],["bool std::__1::__function::__policy_invoker<bool (v8::internal::InstanceType)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::MapInference::AllOfInstanceTypesAre(v8::internal::InstanceType) const::$_0, bool (v8::internal::InstanceType)> >(std::__1::__function::__policy_storage const*, v8::internal::InstanceType)",93957344575616,93957344575628],["v8::internal::compiler::MemoryLowering::Reduce(v8::internal::compiler::Node*)",93957344575792,93957344576006],["v8::internal::compiler::MemoryLowering::ReduceLoadElement(v8::internal::compiler::Node*)",93957344576160,93957344576448],["v8::internal::compiler::MemoryLowering::ReduceStoreToObject(v8::internal::compiler::Node*, v8::internal::compiler::MemoryLowering::AllocationState const*)",93957344576624,93957344577043],["v8::internal::compiler::MemoryLowering::ReduceStoreField(v8::internal::compiler::Node*, v8::internal::compiler::MemoryLowering::AllocationState const*)",93957344577520,93957344577872],["v8::internal::compiler::MemoryLowering::ReduceAllocateRaw(v8::internal::compiler::Node*, v8::internal::AllocationType, v8::internal::AllowLargeObjects, v8::internal::compiler::MemoryLowering::AllocationState const**)",93957344578240,93957344581364],["v8::internal::compiler::MemoryLowering::AllocationGroup::Contains(v8::internal::compiler::Node*) const",93957344581568,93957344581912],["v8::internal::compiler::MemoryLowering::AllocationState::AllocationState(v8::internal::compiler::MemoryLowering::AllocationGroup*, v8::internal::compiler::Node*)",93957344581952,93957344581981],["v8::internal::compiler::MemoryLowering::~MemoryLowering()",93957344582032,93957344582084],["v8::internal::compiler::Scheduler::InitializePlacement(v8::internal::compiler::Node*)",93957344757872,93957344758134],["v8::internal::compiler::Scheduler::ComputeSpecialRPO(v8::internal::Zone*, v8::internal::compiler::Schedule*)",93957344760896,93957344761050],["v8::internal::compiler::CFGBuilder::BuildBlockForNode(v8::internal::compiler::Node*)",93957344770080,93957344770219],["std::__1::vector<v8::internal::compiler::SpecialRPONumberer::LoopInfo, v8::internal::ZoneAllocator<v8::internal::compiler::SpecialRPONumberer::LoopInfo> >::__append(unsigned long, v8::internal::compiler::SpecialRPONumberer::LoopInfo const&)",93957344778784,93957344779554],["v8::internal::compiler::SerializerForBackgroundCompilation::Run()",93957344787696,93957344791170],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::VirtualBoundFunction const&)",93957344803392,93957344803725],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCallProperty1(v8::internal::interpreter::BytecodeArrayIterator*)",93957344822960,93957344823500],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitGetTemplateObject(v8::internal::interpreter::BytecodeArrayIterator*)",93957344828320,93957344828639],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitMov(v8::internal::interpreter::BytecodeArrayIterator*)",93957344830992,93957344831464],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitShortStar(v8::internal::interpreter::Register)",93957344834016,93957344834360],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessCreateContext(v8::internal::interpreter::BytecodeArrayIterator*, int)",93957344840000,93957344840437],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessCalleeForCallOrConstruct(v8::internal::Handle<v8::internal::Object>, v8::base::Optional<v8::internal::compiler::Hints>, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&, v8::internal::SpeculationMode, v8::internal::compiler::MissingArgumentsPolicy, v8::internal::compiler::Hints*)",93957344857344,93957344859695],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessHintsForRegExpTest(v8::internal::compiler::Hints const&)",93957344866160,93957344866753],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessGlobalAccess(v8::internal::FeedbackSlot, bool)",93957344868640,93957344868872],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessNamedSuperAccess(v8::internal::compiler::Hints*, v8::internal::compiler::NamedAccessFeedback const&, v8::internal::compiler::AccessMode, v8::internal::compiler::Hints*)",93957344875312,93957344876081],["bool std::__1::all_of<v8::internal::compiler::FunctionalList<v8::internal::compiler::VirtualClosure>::iterator, v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualClosure, std::__1::equal_to<v8::internal::compiler::VirtualClosure> >::Includes(v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualClosure, std::__1::equal_to<v8::internal::compiler::VirtualClosure> > const&) const::{lambda(v8::internal::compiler::VirtualClosure const&)#1}>(v8::internal::compiler::FunctionalList<v8::internal::compiler::VirtualClosure>::iterator, v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualClosure, std::__1::equal_to<v8::internal::compiler::VirtualClosure> >::Includes(v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualClosure, std::__1::equal_to<v8::internal::compiler::VirtualClosure> > const&) const::{lambda(v8::internal::compiler::VirtualClosure const&)#1}, v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualClosure, std::__1::equal_to<v8::internal::compiler::VirtualClosure> >::Includes(v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualClosure, std::__1::equal_to<v8::internal::compiler::VirtualClosure> > const&) const::{lambda(v8::internal::compiler::VirtualClosure const&)#1})",93957344881360,93957344881485],["v8::internal::compiler::SerializerForBackgroundCompilation::Environment::Environment(v8::internal::compiler::SerializerForBackgroundCompilation::Environment const&)",93957344883840,93957344884793],["void v8::internal::compiler::RepresentationSelector::VisitInputs<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*)",93957344886192,93957344886578],["v8::internal::compiler::SimplifiedLowering::LowerAllNodes()",93957344887632,93957344888253],["v8::internal::compiler::SimplifiedLowering::DoJSToNumberOrNumericTruncatesToWord32(v8::internal::compiler::Node*, v8::internal::compiler::RepresentationSelector*)",93957344892704,93957344894898],["v8::internal::compiler::SimplifiedLowering::Int32Div(v8::internal::compiler::Node*)",93957344895936,93957344897284],["v8::internal::compiler::SimplifiedLowering::Uint32Mod(v8::internal::compiler::Node*)",93957344899936,93957344900904],["v8::internal::compiler::SimplifiedLowering::DoOrderedNumberToBit(v8::internal::compiler::Node*)",93957344901728,93957344902069],["v8::internal::compiler::SimplifiedLowering::DoSigned32ToUint8Clamped(v8::internal::compiler::Node*)",93957344903424,93957344903931],["v8::internal::compiler::RepresentationSelector::RunPropagatePhase()",93957344907248,93957344907819],["void v8::internal::compiler::RepresentationSelector::VisitUnused<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*)",93957344935136,93957344935551],["void v8::internal::compiler::RepresentationSelector::VisitCall<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957344936624,93957344937365],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeAdditiveOp<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344939312,93957344939927],["v8::internal::compiler::RepresentationSelector::BothInputsAre(v8::internal::compiler::Node*, v8::internal::compiler::Type)",93957344940432,93957344940581],["v8::internal::compiler::RepresentationSelector::BothInputsAreSigned32(v8::internal::compiler::Node*)",93957344941424,93957344941583],["v8::internal::compiler::RepresentationSelector::InputIs(v8::internal::compiler::Node*, v8::internal::compiler::Type)",93957344946016,93957344946086],["v8::internal::compiler::RepresentationSelector::InputCannotBe(v8::internal::compiler::Node*, v8::internal::compiler::Type)",93957344948448,93957344948513],["v8::internal::compiler::(anonymous namespace)::TruncatingUseInfoFromRepresentation(v8::internal::MachineRepresentation)",93957344949232,93957344949326],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationFromArrayType(v8::internal::ExternalArrayType)",93957344949696,93957344949772],["void v8::internal::compiler::RepresentationSelector::VisitFrameState<(v8::internal::compiler::Phase)0>(v8::internal::compiler::FrameState)",93957344950544,93957344951240],["v8::internal::compiler::RepresentationSelector::GetOutputInfoForPhi(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::Truncation)",93957344951648,93957344952117],["void v8::internal::compiler::RepresentationSelector::VisitFastApiCall<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957344952576,93957344954165],["v8::base::SmallVector<v8::internal::compiler::UseInfo, 10ul>::Grow(unsigned long)",93957344955488,93957344955625],["v8::internal::compiler::RepresentationSelector::UpdateFeedbackType(v8::internal::compiler::Node*)",93957344955808,93957344958063],["v8::internal::compiler::RepresentationSelector::TypePhi(v8::internal::compiler::Node*)",93957344967104,93957344967362],["v8::internal::compiler::RepresentationSelector::TypeSelect(v8::internal::compiler::Node*)",93957344967648,93957344967780],["void v8::internal::compiler::RepresentationSelector::VisitSelect<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344968704,93957344968787],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeIntegerAdditiveOp<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344968960,93957344969575],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeNumberModulus<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344969888,93957344971223],["void v8::internal::compiler::RepresentationSelector::VisitNoop<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation)",93957344971456,93957344971563],["void v8::internal::compiler::RepresentationSelector::VisitCheck<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::SimplifiedLowering*)",93957344972016,93957344972121],["void v8::internal::compiler::RepresentationSelector::VisitFastApiCall<(v8::internal::compiler::Phase)1>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957344972304,93957344973093],["void v8::internal::compiler::RepresentationSelector::VisitNode<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344973808,93957345011819],["void v8::internal::compiler::RepresentationSelector::VisitSelect<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957345012080,93957345012530],["void v8::internal::compiler::RepresentationSelector::VisitCall<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957345012992,93957345013524],["v8::internal::compiler::MachineOperatorBuilder::WordEqual()",93957345013600,93957345013622],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeAdditiveOp<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957345015552,93957345016155],["void v8::internal::compiler::RepresentationSelector::VisitWord32TruncatingBinop<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957345016576,93957345016727],["void v8::internal::compiler::RepresentationSelector::VisitFloat64Binop<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957345016896,93957345017053],["v8::internal::compiler::RepresentationSelector::ChangeToUint32OverflowOp(v8::internal::compiler::Node*)",93957345017296,93957345017375],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeNumberModulus<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957345017456,93957345020354],["v8::internal::compiler::RepresentationSelector::MaskShiftOperand(v8::internal::compiler::Node*, v8::internal::compiler::Type)",93957345020800,93957345021132],["v8::internal::compiler::RepresentationSelector::ChangeUnaryToPureBinaryOp(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, int, v8::internal::compiler::Node*)",93957345021600,93957345022066],["void v8::internal::compiler::RepresentationSelector::VisitCheck<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::Type, v8::internal::compiler::SimplifiedLowering*)",93957345023584,93957345023950],["void v8::internal::compiler::RepresentationSelector::VisitFrameState<(v8::internal::compiler::Phase)2>(v8::internal::compiler::FrameState)",93957345024384,93957345025739],["void v8::internal::compiler::RepresentationSelector::VisitObjectState<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957345026672,93957345027643],["void v8::internal::compiler::RepresentationSelector::VisitFastApiCall<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*, v8::internal::compiler::SimplifiedLowering*)",93957345027968,93957345029347],["v8::internal::compiler::RepresentationSelector::Kill(v8::internal::compiler::Node*)",93957345030464,93957345030837],["sigwait",139871563506048,139871563506173],["sigaddset",139871563507696,139871563507756],["sigisemptyset",139871563508128,139871563508221],["__libc_current_sigrtmax",139871563508400,139871563508407],["sigwaitinfo",139871563508736,139871563508743],["sighold",139871563508928,139871563509044],["sigignore",139871563509184,139871563509293],["atof",139871563509648,139871563509655],["getutline_r",139871564527216,139871564527394],["unlockpt",139871564532704,139871564532812],["__ptsname_r_chk",139871564533664,139871564533680],["getutxent",139871564533696,139871564533701],["nanf128",139871565669872,139871565669881],["atan2f128",139871565671584,139871565671760],["hypotf128",139871565672624,139871565672865],["y1f128",139871565673056,139871565673200],["logf128",139871565673360,139871565673473],["log2f128",139871565673616,139871565673729],["remainderf128",139871565674240,139871565674394],["sqrtf128",139871565674576,139871565674663],["v8::D8Console::Trace(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335208432,93957335208472],["v8::D8Console::~D8Console()",93957335208528,93957335208574],["std::__1::deque<unsigned long, std::__1::allocator<unsigned long> >::__add_back_capacity()",93957335304736,93957335305157],["v8::ExternalOwningOneByteStringResource::data() const",93957335305360,93957335305375],["v8::InspectorClient::~InspectorClient()",93957335305808,93957335305932],["v8::InspectorClient::quitMessageLoopOnPause()",93957335306288,93957335306298],["v8::internal::CppGraphBuilderImpl::VisitationDoneItem::Process(v8::internal::CppGraphBuilderImpl&)",93957336822032,93957336822201],["cppgc::internal::HeapVisitor<v8::internal::LiveObjectsForVisibilityIterator>::Traverse(cppgc::internal::BasePage*)",93957336825104,93957336825495],["v8::internal::LocalEmbedderHeapTracer::IsRemoteTracingDone()",93957336825776,93957336825800],["v8::internal::LocalEmbedderHeapTracer::ExtractWrapperInfo(v8::internal::Isolate*, v8::internal::JSObject)",93957336825984,93957336826049],["v8::internal::Handle<v8::internal::HeapNumber> v8::internal::FactoryBase<v8::internal::Factory>::NewHeapNumber<(v8::internal::AllocationType)0>()",93957336826624,93957336826747],["v8::internal::Handle<v8::internal::HeapNumber> v8::internal::FactoryBase<v8::internal::Factory>::NewHeapNumber<(v8::internal::AllocationType)1>()",93957336826784,93957336826910],["v8::internal::FactoryBase<v8::internal::LocalFactory>::AllocateRawWithImmortalMap(int, v8::internal::AllocationType, v8::internal::Map, v8::internal::AllocationAlignment)",93957336827056,93957336827083],["v8::internal::Handle<v8::internal::String> v8::internal::FactoryBase<v8::internal::Factory>::InternalizeStringWithKey<v8::internal::SequentialStringKey<unsigned short> >(v8::internal::SequentialStringKey<unsigned short>*)",93957336827120,93957336827143],["v8::internal::Factory::CloneScript(v8::internal::Handle<v8::internal::Script>)",93957336866528,93957336867353],["v8::internal::Factory::NewWeakArrayList(int, v8::internal::AllocationType)",93957336876512,93957336876688],["v8::internal::Factory::NewError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336879008,93957336879186],["v8::internal::Factory::NewOffHeapTrampolineFor(v8::internal::Handle<v8::internal::Code>, unsigned long)",93957336881568,93957336882176],["v8::internal::Factory::InitializeJSObjectFromMap(v8::internal::JSObject, v8::internal::Object, v8::internal::Map)",93957336885440,93957336885739],["v8::internal::Factory::NewJSArray(v8::internal::ElementsKind, int, int, v8::internal::ArrayStorageAllocationMode, v8::internal::AllocationType)",93957336887072,93957336887345],["v8::internal::Factory::NewJSArrayStorage(v8::internal::Handle<v8::internal::JSArray>, int, int, v8::internal::ArrayStorageAllocationMode)",93957336888112,93957336888533],["v8::internal::Factory::NewSourceTextModule(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336890256,93957336891499],["v8::internal::Factory::NewJSArrayBufferAndBackingStore(unsigned long, v8::internal::InitializedFlag, v8::internal::AllocationType)",93957336892672,93957336893108],["v8::internal::Factory::NewJSIteratorResult(v8::internal::Handle<v8::internal::Object>, bool)",93957336893632,93957336894343],["v8::internal::Factory::NewJSMap()",93957336895040,93957336895515],["v8::internal::Factory::TypeAndSizeForElementsKind(v8::internal::ElementsKind, v8::internal::ExternalArrayType*, unsigned long*)",93957336896000,93957336896060],["v8::internal::Factory::NewJSTypedArray(v8::internal::ExternalArrayType, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, unsigned long)",93957336896896,93957336898626],["v8::internal::Factory::NewJSBoundFunction(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::Vector<v8::internal::Handle<v8::internal::Object> >)",93957336898912,93957336900426],["v8::internal::Factory::ReinitializeJSGlobalProxy(v8::internal::Handle<v8::internal::JSGlobalProxy>, v8::internal::Handle<v8::internal::JSFunction>)",93957336900848,93957336901324],["v8::internal::Factory::NewSharedFunctionInfoForApiFunction(v8::internal::MaybeHandle<v8::internal::String>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::FunctionKind)",93957336902368,93957336902386],["v8::internal::Heap::NumberOfDetachedContexts()",93957337037584,93957337037613],["void v8::internal::Heap::WriteBarrierForRange<v8::internal::CompressedMaybeObjectSlot>(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957337039264,93957337040873],["void std::__1::__sort<std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&, std::__1::pair<int, v8::internal::HeapObject>*>(std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&)",93957337044224,93957337045649],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&, std::__1::pair<int, v8::internal::HeapObject>*>(std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&)",93957337046432,93957337046900],["v8::internal::FixStaleLeftTrimmedHandlesVisitor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)",93957337047056,93957337047120],["v8::internal::PagedSpace::Size()",93957337047136,93957337047149],["ucache_hashKeys_68",93957337047184,93957337047195],["v8::internal::OldSpace::ExternalBackingStoreBytes(v8::internal::ExternalBackingStoreType) const",93957337047232,93957337047272],["v8::internal::(anonymous namespace)::YoungGenerationEvacuator::~YoungGenerationEvacuator()",93957337404192,93957337404269],["v8::internal::MarkingBarrier::Publish()",93957337410832,93957337411433],["v8::internal::MarkingWorklists::Local::IsEmbedderEmpty() const",93957337415584,93957337415634],["void v8::internal::MemoryAllocator::Free<(v8::internal::MemoryAllocator::FreeMode)3>(v8::internal::MemoryChunk*)",93957337418160,93957337418377],["v8::internal::MemoryAllocator::MemoryAllocator(v8::internal::Isolate*, unsigned long, unsigned long)",93957337419824,93957337420130],["v8::internal::MemoryAllocator::Unmapper::FreeQueuedChunks()",93957337421040,93957337421289],["v8::internal::MemoryAllocator::Unmapper::EnsureUnmappingCompleted()",93957337422160,93957337422256],["v8::internal::MemoryAllocator::Unmapper::CommittedBufferedMemory()",93957337423200,93957337423317],["v8::internal::MemoryAllocator::AllocateBasicChunk(unsigned long, unsigned long, v8::internal::Executability, v8::internal::BaseSpace*)",93957337423952,93957337424848],["v8::internal::MemoryAllocator::PartialFreeMemory(v8::internal::BasicMemoryChunk*, unsigned long, unsigned long, unsigned long)",93957337424880,93957337424988],["v8::internal::MemoryAllocator::FreeReadOnlyPage(v8::internal::ReadOnlyPage*)",93957337425200,93957337425384],["v8::internal::MemoryAllocator::AllocateLargePage(unsigned long, v8::internal::LargeObjectSpace*, v8::internal::Executability)",93957337425456,93957337425608],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > >, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > >, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > >, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > > > >::__emplace_unique_key_args<unsigned long, std::__1::piecewise_construct_t const&, std::__1::tuple<unsigned long const&>, std::__1::tuple<> >(unsigned long const&, std::__1::piecewise_construct_t const&, std::__1::tuple<unsigned long const&>&&, std::__1::tuple<>&&)",93957337425728,93957337426654],["v8::internal::MemoryAllocator::Unmapper::UnmapFreeMemoryJob::Run(v8::JobDelegate*)",93957337426720,93957337427439],["v8::internal::MemoryAllocator::Unmapper::TryGetPooledMemoryChunkSafe()",93957337427552,93957337427700],["v8::internal::MemoryChunkLayout::CodePageGuardSize()",93957337427760,93957337427770],["v8::internal::CharacterRange::AddClassEscape(char, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::Zone*)",93957339805440,93957339809618],["v8::internal::Trace::RestoreAffectedRegisters(v8::internal::RegExpMacroAssembler*, int, v8::internal::DynamicBitSet const&, v8::internal::DynamicBitSet const&)",93957339823712,93957339824085],["v8::internal::ActionNode::EmptyMatchCheck(int, int, int, v8::internal::RegExpNode*)",93957339827520,93957339827653],["v8::internal::TextNode::GetQuickCheckDetails(v8::internal::QuickCheckDetails*, v8::internal::RegExpCompiler*, int, bool)",93957339829504,93957339830659],["v8::internal::ChoiceNode::FilterOneByte(int)",93957339832576,93957339833302],["v8::internal::LoopChoiceNode::GetQuickCheckDetailsFromLoopEntry(v8::internal::QuickCheckDetails*, v8::internal::RegExpCompiler*, int, bool)",93957339834160,93957339834225],["v8::internal::AssertionNode::BacktrackIfPrevious(v8::internal::RegExpCompiler*, v8::internal::Trace*, v8::internal::AssertionNode::IfPrevious)",93957339835392,93957339835864],["v8::internal::TextNode::CreateForCharacterRanges(v8::internal::Zone*, v8::internal::ZoneList<v8::internal::CharacterRange>*, bool, v8::internal::RegExpNode*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957339839344,93957339839827],["v8::internal::TextNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339840832,93957339842062],["v8::internal::TextNode::GetSuccessorOfOmnivorousTextNode(v8::internal::RegExpCompiler*)",93957339842144,93957339842284],["v8::internal::LoopChoiceNode::AddContinueAlternative(v8::internal::GuardedAlternative)",93957339842512,93957339842722],["v8::internal::ChoiceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339843056,93957339844429],["v8::internal::BoyerMooreLookahead::BoyerMooreLookahead(int, v8::internal::RegExpCompiler*, v8::internal::Zone*)",93957339844800,93957339845304],["v8::internal::BoyerMooreLookahead::GetSkipTable(int, int, v8::internal::Handle<v8::internal::ByteArray>)",93957339845904,93957339846146],["v8::internal::AlternativeGenerationList::AlternativeGenerationList(int, v8::internal::Zone*)",93957339846864,93957339848690],["v8::internal::ChoiceNode::EmitChoices(v8::internal::RegExpCompiler*, v8::internal::AlternativeGenerationList*, int, v8::internal::Trace*, v8::internal::PreloadState*)",93957339848992,93957339850274],["v8_inspector::(anonymous namespace)::ActualScript::sourceMappingURL() const",93957342526560,93957342526573],["v8_inspector::(anonymous namespace)::ActualScript::setSourceMappingURL(v8_inspector::String16 const&)",93957342528320,93957342528361],["v8_inspector::(anonymous namespace)::ActualScript::setBreakpoint(v8_inspector::String16 const&, v8::debug::Location*, int*) const",93957342529472,93957342529586],["v8_inspector::(anonymous namespace)::ActualScript::getDebugSymbolsType() const",93957342529856,93957342529926],["v8_inspector::(anonymous namespace)::ActualScript::MakeWeak()::{lambda(v8::WeakCallbackInfo<v8_inspector::(anonymous namespace)::ActualScript> const&)#1}::__invoke(v8::WeakCallbackInfo<v8_inspector::(anonymous namespace)::ActualScript> const&)",93957342530688,93957342530728],["v8_inspector::V8Debugger::~V8Debugger()",93957342531088,93957342531930],["non-virtual thunk to v8_inspector::V8Debugger::~V8Debugger()",93957342532064,93957342532078],["non-virtual thunk to v8_inspector::V8Debugger::~V8Debugger()",93957342532112,93957342532147],["v8_inspector::V8StackTraceImpl::StackFrameIterator::next()",93957342650928,93957342651398],["v8_inspector::ValueMirror::getProperties(v8::Local<v8::Context>, v8::Local<v8::Object>, bool, bool, v8_inspector::ValueMirror::PropertyAccumulator*)",93957342659008,93957342664280],["std::__1::__unique_if<v8_inspector::(anonymous namespace)::ObjectMirror>::__unique_single std::__1::make_unique<v8_inspector::(anonymous namespace)::ObjectMirror, v8::Local<v8::Value>&, char const (&) [15], v8_inspector::String16>(v8::Local<v8::Value>&, char const (&) [15], v8_inspector::String16&&)",93957342680720,93957342682017],["v8_inspector::(anonymous namespace)::descriptionForDate(v8::Local<v8::Context>, v8::Local<v8::Date>)",93957342690400,93957342690540],["v8_inspector::(anonymous namespace)::descriptionForEntry(v8::Local<v8::Context>, v8::Local<v8::Object>)",93957342694672,93957342701071],["void v8_inspector::String16Builder::appendAll<char const*, v8_inspector::String16, char const*>(char const*, v8_inspector::String16, char const*)",93957342702512,93957342703252],["bool std::__1::operator!=<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >(std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > const&, std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > const&)",93957342703952,93957342704082],["void v8_inspector::String16Builder::appendAll<v8_inspector::String16, char, v8_inspector::String16, char>(v8_inspector::String16, char, v8_inspector::String16, char)",93957342706848,93957342707556],["void v8_inspector::String16Builder::appendAll<char const*, v8_inspector::String16, char>(char const*, v8_inspector::String16, char)",93957342708992,93957342709695],["void std::__1::vector<v8_inspector::PrivatePropertyMirror, std::__1::allocator<v8_inspector::PrivatePropertyMirror> >::__emplace_back_slow_path<v8_inspector::PrivatePropertyMirror>(v8_inspector::PrivatePropertyMirror&&)",93957342710160,93957342710748],["void v8_inspector::String16Builder::appendAll<char, v8_inspector::String16>(char, v8_inspector::String16)",93957342711424,93957342712066],["v8_inspector::(anonymous namespace)::ObjectMirror::~ObjectMirror()",93957342712160,93957342712231],["v8_inspector::(anonymous namespace)::ObjectMirror::buildPropertyPreview(v8::Local<v8::Context>, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >*) const",93957342713216,93957342713656],["v8_inspector::(anonymous namespace)::ObjectMirror::buildEntryPreview(v8::Local<v8::Context>, int*, int*, std::__1::unique_ptr<v8_inspector::protocol::Runtime::ObjectPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::ObjectPreview> >*) const",93957342713712,93957342713751],["v8_inspector::protocol::StringValue::create(v8_inspector::String16 const&)",93957342715472,93957342716121],["v8_inspector::(anonymous namespace)::abbreviateString(v8_inspector::String16 const&, v8_inspector::(anonymous namespace)::AbbreviateMode)",93957342716784,93957342717666],["v8::internal::compiler::AddTypeAssertionsReducer::Reduce(v8::internal::compiler::Node*)",93957342862144,93957342862758],["v8::internal::compiler::CodeGenerator::FinalizeCode()",93957342876752,93957342877303],["v8::internal::compiler::DeoptimizationLiteral::Reify(v8::internal::Isolate*) const",93957342881104,93957342881383],["void std::__1::__sort<v8::internal::compiler::CodeGenerator::AssembleCode()::$_0&, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l> >(std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, v8::internal::compiler::CodeGenerator::AssembleCode()::$_0&)",93957342886432,93957342890591],["v8::internal::compiler::FrameElider::PropagateMarks()",93957342893968,93957342894725],["v8::internal::compiler::InstructionScheduler::InstructionScheduler(v8::internal::Zone*, v8::internal::compiler::InstructionSequence*)",93957342896688,93957342896894],["void v8::internal::compiler::InstructionScheduler::Schedule<v8::internal::compiler::InstructionScheduler::CriticalPathFirstQueue>()",93957342898144,93957342899164],["v8::internal::compiler::InstructionSelector::InstructionSelector(v8::internal::Zone*, unsigned long, v8::internal::compiler::Linkage*, v8::internal::compiler::InstructionSequence*, v8::internal::compiler::Schedule*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::Frame*, v8::internal::compiler::InstructionSelector::EnableSwitchJumpTable, v8::internal::TickCounter*, v8::internal::compiler::JSHeapBroker*, unsigned long*, unsigned long*, v8::internal::compiler::InstructionSelector::SourcePositionMode, v8::internal::compiler::InstructionSelector::Features, v8::internal::compiler::InstructionSelector::EnableScheduling, v8::internal::compiler::InstructionSelector::EnableRootsRelativeAddressing, v8::internal::PoisoningMitigationLevel, v8::internal::compiler::InstructionSelector::EnableTraceTurboJson)",93957342903648,93957342906591],["v8::internal::compiler::InstructionSelector::MarkAsUsed(v8::internal::compiler::Node*)",93957342909072,93957342909111],["v8::internal::compiler::InstructionSelector::Emit(unsigned int, v8::internal::compiler::InstructionOperand, unsigned long, v8::internal::compiler::InstructionOperand*)",93957342910832,93957342910886],["v8::internal::compiler::InstructionSelector::Emit(unsigned int, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, unsigned long, v8::internal::compiler::InstructionOperand*)",93957342911744,93957342911806],["v8::internal::compiler::InstructionSelector::Emit(unsigned int, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, v8::internal::compiler::InstructionOperand, unsigned long, v8::internal::compiler::InstructionOperand*)",93957342911888,93957342911956],["v8::internal::compiler::InstructionSelector::CanCover(v8::internal::compiler::Node*, v8::internal::compiler::Node*) const",93957342912048,93957342912292],["v8::internal::compiler::InstructionSelector::CanCoverTransitively(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*) const",93957342912336,93957342912465],["v8::internal::compiler::InstructionSelector::SetRename(v8::internal::compiler::Node const*, v8::internal::compiler::Node const*)",93957342912624,93957342912837],["v8::internal::compiler::InstructionSelector::IsDefined(v8::internal::compiler::Node*) const",93957342912912,93957342912951],["v8::internal::compiler::MachineOperatorBuilder::I16x8AddSatS()",93957344483296,93957344483311],["v8::internal::compiler::MachineOperatorBuilder::I8x16SubSatU()",93957344484064,93957344484079],["v8::internal::compiler::MachineOperatorBuilder::TruncateFloat32ToUint32(v8::internal::compiler::TruncateKind)",93957344484480,93957344484509],["v8::internal::compiler::MachineOperatorBuilder::Float64RoundTruncate()",93957344484992,93957344485015],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadLaneParameters> >* v8::internal::Zone::New<v8::internal::compiler::Operator1<v8::internal::compiler::LoadLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadLaneParameters> >, v8::internal::compiler::IrOpcode::Value, v8::base::Flags<v8::internal::compiler::Operator::Property, unsigned char>, char const (&) [9], int, int, int, int, int, int, v8::internal::compiler::LoadLaneParameters>(v8::internal::compiler::IrOpcode::Value&&, v8::base::Flags<v8::internal::compiler::Operator::Property, unsigned char>&&, char const (&) [9], int&&, int&&, int&&, int&&, int&&, int&&, v8::internal::compiler::LoadLaneParameters&&)",93957344496112,93957344496298],["v8::internal::compiler::MachineOperatorBuilder::UnsafePointerAdd()",93957344506672,93957344506687],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicCompareExchange(v8::internal::MachineType)",93957344507200,93957344507331],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicAdd(v8::internal::MachineType)",93957344508288,93957344508403],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicCompareExchange(v8::internal::MachineType)",93957344509056,93957344509171],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairSub()",93957344509232,93957344509247],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairExchange()",93957344509296,93957344509311],["v8::internal::compiler::MachineOperatorBuilder::F32x4ExtractLane(int)",93957344509488,93957344509630],["v8::internal::compiler::MachineOperatorBuilder::I16x8ExtractLaneS(int)",93957344510064,93957344510206],["v8::internal::compiler::MachineOperatorBuilder::F32x4ReplaceLane(int)",93957344510640,93957344510782],["v8::internal::compiler::MachineOperatorBuilder::I8x16ReplaceLane(int)",93957344511216,93957344511358],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::S128ImmediateParameter const&)",93957344512160,93957344512642],["v8::internal::compiler::MachineOperatorBuilder::I8x16Shuffle(unsigned char const*, bool)",93957344513184,93957344513385],["v8::internal::compiler::Operator1<v8::internal::compiler::ShiftKind, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ShiftKind>, v8::internal::compiler::OpHash<v8::internal::compiler::ShiftKind> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344569072,93957344569170],["v8::internal::compiler::Operator1<v8::internal::MachineType, v8::internal::compiler::OpEqualTo<v8::internal::MachineType>, v8::internal::compiler::OpHash<v8::internal::MachineType> >::Equals(v8::internal::compiler::Operator const*) const",93957344569296,93957344569336],["v8::internal::compiler::Operator1<v8::internal::MachineType, v8::internal::compiler::OpEqualTo<v8::internal::MachineType>, v8::internal::compiler::OpHash<v8::internal::MachineType> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344569376,93957344569446],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadTransformParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadTransformParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadTransformParameters> >::HashCode() const",93957344569504,93957344569560],["v8::internal::compiler::Operator1<v8::internal::compiler::StackSlotRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StackSlotRepresentation>, v8::internal::compiler::OpHash<v8::internal::compiler::StackSlotRepresentation> >::Equals(v8::internal::compiler::Operator const*) const",93957344569648,93957344569696],["v8::internal::compiler::Operator1<v8::internal::compiler::StackSlotRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StackSlotRepresentation>, v8::internal::compiler::OpHash<v8::internal::compiler::StackSlotRepresentation> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344569792,93957344569899],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreRepresentation>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreRepresentation> >::HashCode() const",93957344569952,93957344570008],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadLaneParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344570096,93957344570179],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadLaneParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344570304,93957344570374],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreLaneParameters> >::HashCode() const",93957344570464,93957344570550],["v8::internal::compiler::Operator1<v8::internal::compiler::S128ImmediateParameter, v8::internal::compiler::OpEqualTo<v8::internal::compiler::S128ImmediateParameter>, v8::internal::compiler::OpHash<v8::internal::compiler::S128ImmediateParameter> >::Equals(v8::internal::compiler::Operator const*) const",93957344570640,93957344570672],["v8::internal::compiler::Operator1<v8::internal::compiler::S128ImmediateParameter, v8::internal::compiler::OpEqualTo<v8::internal::compiler::S128ImmediateParameter>, v8::internal::compiler::OpHash<v8::internal::compiler::S128ImmediateParameter> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344570720,93957344570792],["v8::internal::compiler::Operator1<v8::internal::compiler::ShuffleParameter, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ShuffleParameter>, v8::internal::compiler::OpHash<v8::internal::compiler::ShuffleParameter> >::HashCode() const",93957344570832,93957344570910],["v8::internal::compiler::MapInference::MapInference(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344571056,93957344571240],["v8::internal::compiler::MapInference::~MapInference()",93957344573232,93957344573287],["v8::internal::compiler::Scheduler::IncrementUnscheduledUseCount(v8::internal::compiler::Node*, int, v8::internal::compiler::Node*)",93957344759216,93957344759599],["v8::internal::compiler::Scheduler::GenerateDominatorTree(v8::internal::compiler::Schedule*)",93957344761904,93957344762130],["v8::internal::compiler::CFGBuilder::Queue(v8::internal::compiler::Node*)",93957344768480,93957344769242],["v8::internal::compiler::CFGBuilder::ConnectSwitch(v8::internal::compiler::Node*)",93957344771776,93957344772539],["v8::internal::compiler::SpecialRPONumberer::ComputeLoopInfo(v8::internal::ZoneVector<v8::internal::compiler::SpecialRPONumberer::SpecialRPOStackFrame>*, unsigned long, v8::internal::ZoneVector<std::__1::pair<v8::internal::compiler::BasicBlock*, unsigned long> >*)",93957344776912,93957344777745],["v8::internal::compiler::ScheduleLateNodeVisitor::GetCommonDominatorOfUses(v8::internal::compiler::Node*)",93957344781536,93957344781719],["v8::internal::compiler::SelectLowering::Reduce(v8::internal::compiler::Node*)",93957344786752,93957344786776],["v8::internal::compiler::Hints::AddConstant(v8::internal::Handle<v8::internal::Object>, v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*)",93957344792896,93957344793700],["v8::internal::compiler::Hints::CopyToParentZone(v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*) const",93957344799952,93957344801829],["v8::internal::compiler::Hints::Merge(v8::internal::compiler::Hints const&, v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*)",93957344805008,93957344805847],["v8::internal::compiler::SerializerForBackgroundCompilation::IncorporateJumpTargetEnvironment(int)",93957344820736,93957344821262],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCallUndefinedReceiver2(v8::internal::interpreter::BytecodeArrayIterator*)",93957344825120,93957344825738],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitGetIterator(v8::internal::interpreter::BytecodeArrayIterator*)",93957344827312,93957344827676],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitLdaConstant(v8::internal::interpreter::BytecodeArrayIterator*)",93957344829520,93957344829704],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitLdaSmi(v8::internal::interpreter::BytecodeArrayIterator*)",93957344830592,93957344830798],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitPushContext(v8::internal::interpreter::BytecodeArrayIterator*)",93957344831824,93957344832312],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitSwitchOnSmiNoFeedback(v8::internal::interpreter::BytecodeArrayIterator*)",93957344833120,93957344833294],["v8::internal::ZoneVector<v8::internal::compiler::Hints> v8::internal::compiler::SerializerForBackgroundCompilation::PrepareArgumentsHints<>(v8::internal::compiler::Hints*)",93957344834736,93957344835607],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessContextAccess(v8::internal::compiler::Hints const&, int, int, v8::internal::compiler::SerializerForBackgroundCompilation::ContextProcessingMode, v8::internal::compiler::Hints*)",93957344838848,93957344839785],["v8::internal::ZoneVector<v8::internal::compiler::Hints> v8::internal::compiler::SerializerForBackgroundCompilation::PrepareArgumentsHints<v8::internal::compiler::Hints*>(v8::internal::compiler::Hints*, v8::internal::compiler::Hints*)",93957344840656,93957344842272],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessBuiltinCall(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::base::Optional<v8::internal::compiler::Hints>, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&, v8::internal::SpeculationMode, v8::internal::compiler::MissingArgumentsPolicy, v8::internal::compiler::Hints*)",93957344847136,93957344856938],["std::__1::vector<v8::internal::compiler::Hints, v8::internal::ZoneAllocator<v8::internal::compiler::Hints> >::insert(std::__1::__wrap_iter<v8::internal::compiler::Hints const*>, v8::internal::compiler::Hints const&)",93957344860336,93957344861989],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessHintsForObjectCreate(v8::internal::compiler::Hints const&)",93957344865632,93957344865762],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessHintsForOrdinaryHasInstance(v8::internal::compiler::Hints const&, v8::internal::compiler::Hints const&)",93957344867024,93957344867203],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessHintsForHasInPrototypeChain(v8::internal::compiler::Hints const&)::$_1::operator()(v8::internal::Handle<v8::internal::Map>) const",93957344868208,93957344868370],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessLdaLookupContextSlot(v8::internal::interpreter::BytecodeArrayIterator*)",93957344869168,93957344869479],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessNamedAccess(v8::internal::compiler::Hints*, v8::internal::compiler::NamedAccessFeedback const&, v8::internal::compiler::AccessMode, v8::internal::compiler::Hints*)",93957344873408,93957344874933],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessConstantForInstanceOf(v8::internal::compiler::ObjectRef const&, bool*)",93957344876480,93957344877032],["_ZNSt3__16vectorIN2v88internal8compiler5HintsENS2_13ZoneAllocatorIS4_EEE6insertINS_16reverse_iteratorINS_11__wrap_iterIPS4_EEEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISF_E9referenceEEE5valueESC_E4typeENSA_IPKS4_EESF_SF_",93957344877744,93957344881352],["v8::internal::compiler::FunctionalList<v8::internal::compiler::VirtualBoundFunction>::Cons* v8::internal::Zone::New<v8::internal::compiler::FunctionalList<v8::internal::compiler::VirtualBoundFunction>::Cons, v8::internal::compiler::VirtualBoundFunction, v8::internal::compiler::FunctionalList<v8::internal::compiler::VirtualBoundFunction>::Cons*&>(v8::internal::compiler::VirtualBoundFunction&&, v8::internal::compiler::FunctionalList<v8::internal::compiler::VirtualBoundFunction>::Cons*&)",93957344881488,93957344882557],["_ZNSt3__16vectorIN2v88internal8compiler5HintsENS2_13ZoneAllocatorIS4_EEEC2INS_11__wrap_iterIPKS4_EEEET_SD_RKS6_PNS_9enable_ifIXaasr27__is_cpp17_forward_iteratorISD_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISD_E9referenceEEE5valueEvE4typeE",93957344883360,93957344883835],["void v8::internal::compiler::RepresentationSelector::EnqueueInput<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, int, v8::internal::compiler::UseInfo)",93957344884800,93957344885448],["void v8::internal::compiler::RepresentationSelector::ProcessRemainingInputs<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, int)",93957344885952,93957344886191],["void v8::internal::compiler::RepresentationSelector::VisitInputs<(v8::internal::compiler::Phase)2>(v8::internal::compiler::Node*)",93957344886592,93957344886834],["v8::internal::compiler::SimplifiedLowering::SimplifiedLowering(v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*, v8::internal::Zone*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*, v8::internal::PoisoningMitigationLevel, v8::internal::TickCounter*, v8::internal::compiler::Linkage*, v8::internal::compiler::ObserveNodeManager*)",93957344887520,93957344887625],["v8::internal::compiler::RepresentationSelector::RepresentationSelector(v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*, v8::internal::Zone*, v8::internal::compiler::RepresentationChanger*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*, v8::internal::TickCounter*, v8::internal::compiler::Linkage*, v8::internal::compiler::ObserveNodeManager*)",93957344888256,93957344888862],["v8::internal::compiler::RepresentationSelector::DeferReplacement(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344891104,93957344892692],["v8::internal::compiler::SimplifiedLowering::Float64Round(v8::internal::compiler::Node*)",93957344894912,93957344895326],["v8::internal::compiler::SimplifiedLowering::Int32Abs(v8::internal::compiler::Node*)",93957344895696,93957344895922],["v8::internal::compiler::SimplifiedLowering::Int32Mod(v8::internal::compiler::Node*)",93957344897296,93957344899213],["v8::internal::compiler::SimplifiedLowering::Uint32Div(v8::internal::compiler::Node*)",93957344899584,93957344899926],["v8::internal::compiler::SimplifiedLowering::DoMax(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::MachineRepresentation)",93957344900912,93957344901214],["v8::internal::compiler::SimplifiedLowering::DoIntegral32ToBit(v8::internal::compiler::Node*)",93957344901392,93957344901718],["v8::internal::compiler::SimplifiedLowering::DoNumberToBit(v8::internal::compiler::Node*)",93957344902080,93957344902383],["v8::internal::compiler::SimplifiedLowering::DoNumberToUint8Clamped(v8::internal::compiler::Node*)",93957344902896,93957344903424],["v8::internal::compiler::SimplifiedLowering::DoUnsigned32ToUint8Clamped(v8::internal::compiler::Node*)",93957344903936,93957344904303],["v8::internal::compiler::RepresentationSelector::GenerateTraversal()",93957344904368,93957344907241],["v8::internal::compiler::RepresentationSelector::RunRetypePhase()",93957344907824,93957344908940],["void v8::internal::compiler::RepresentationSelector::VisitNode<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344909424,93957344935128],["void v8::internal::compiler::RepresentationSelector::VisitUnop<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::UseInfo, v8::internal::MachineRepresentation, v8::internal::compiler::Type)",93957344935552,93957344935843],["void v8::internal::compiler::RepresentationSelector::VisitPhi<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344936240,93957344936623],["v8::internal::compiler::RepresentationSelector::OneInputCannotBe(v8::internal::compiler::Node*, v8::internal::compiler::Type)",93957344937376,93957344937512],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeIntegerAdditiveOp<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344937840,93957344939297],["v8::internal::compiler::(anonymous namespace)::CheckedUseInfoAsWord32FromHint(v8::internal::compiler::NumberOperationHint, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::IdentifyZeros)",93957344939936,93957344940022],["void v8::internal::compiler::RepresentationSelector::VisitWord32TruncatingBinop<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*)",93957344940112,93957344940420],["void v8::internal::compiler::RepresentationSelector::VisitInt64Binop<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*)",93957344940592,93957344940913],["v8::internal::compiler::RepresentationSelector::BothInputsAreUnsigned32(v8::internal::compiler::Node*)",93957344941264,93957344941423],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeNumberModulus<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation, v8::internal::compiler::SimplifiedLowering*)",93957344941584,93957344944859],["void v8::internal::compiler::RepresentationSelector::VisitSpeculativeInt32Binop<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*)",93957344945168,93957344946002],["void v8::internal::compiler::RepresentationSelector::VisitNoop<(v8::internal::compiler::Phase)0>(v8::internal::compiler::Node*, v8::internal::compiler::Truncation)",93957344946096,93957344946528],["bsd_signal",139871563504480,139871563504534],["sigpause",139871563506592,139871563506685],["sigemptyset",139871563507520,139871563507586],["sigismember",139871563507824,139871563507876],["__sysv_signal",139871563508080,139871563508126],["sigandset",139871563508224,139871563508301],["__libc_current_sigrtmin",139871563508384,139871563508391],["__libc_allocate_rtsig",139871563508416,139871563508476],["endutent",139871564526576,139871564526714],["updwtmp",139871564531200,139871564531468],["grantpt",139871564532048,139871564532704],["ptsname",139871564533488,139871564533584],["cprojf128",139871565664304,139871565664507],["llogbf128",139871565670144,139871565670236],["acoshf128",139871565671376,139871565671463],["coshf128",139871565671904,139871565672077],["fmodf128",139871565672464,139871565672618],["j0f128",139871565672880,139871565672885],["j1f128",139871565673040,139871565673045],["jnf128",139871565673200,139871565673205],["v8::D8Console::TimeEnd(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335207392,93957335207988],["__jit_debug_register_code",93957335208480,93957335208486],["std::__1::__deque_base<v8::Global<v8::Context>, std::__1::allocator<v8::Global<v8::Context> > >::clear()",93957335303184,93957335303476],["v8::ExternalOwningOneByteStringResource::~ExternalOwningOneByteStringResource()",93957335305200,93957335305243],["ucache_deleteKey_68",93957335305328,93957335305346],["v8::ExternalOwningOneByteStringResource::length() const",93957335305376,93957335305391],["v8::internal::CppGraphBuilderImpl::VisitRootForGraphBuilding(v8::internal::RootState&, cppgc::internal::HeapObjectHeader const&, cppgc::SourceLocation const&)",93957336818848,93957336819062],["v8::internal::EmbedderNode::GetDetachedness()",93957336822368,93957336822377],["v8::internal::CppGraphBuilderImpl::AddEdge(v8::internal::State&, v8::TracedReferenceBase const&)",93957336823776,93957336824351],["v8::internal::LocalEmbedderHeapTracer::TracePrologue(v8::EmbedderHeapTracer::TraceFlags)",93957336825552,93957336825584],["v8::internal::LocalEmbedderHeapTracer::Trace(double)",93957336825744,93957336825771],["v8::internal::LocalEmbedderHeapTracer::SetEmbedderStackStateForNextFinalization(cppgc::EmbedderStackState)",93957336825808,93957336825840],["v8::internal::LocalEmbedderHeapTracer::ProcessingScope::~ProcessingScope()",93957336825904,93957336825971],["v8::internal::(anonymous namespace)::ExtractWrappableInfo(v8::internal::Isolate*, v8::internal::JSObject, v8::WrapperDescriptor const&, std::__1::pair<void*, void*>*)",93957336826064,93957336826405],["v8::internal::Factory::NewPrivateNameSymbol(v8::internal::Handle<v8::internal::String>)",93957336859552,93957336859822],["v8::internal::Factory::NewCell(v8::internal::Handle<v8::internal::Object>)",93957336869408,93957336869657],["v8::internal::Handle<v8::internal::PropertyArray> v8::internal::Factory::CopyArrayWithMap<v8::internal::PropertyArray>(v8::internal::Handle<v8::internal::PropertyArray>, v8::internal::Handle<v8::internal::Map>)",93957336875680,93957336875923],["v8::internal::Factory::CompactWeakArrayList(v8::internal::Handle<v8::internal::WeakArrayList>, int, v8::internal::AllocationType)",93957336877312,93957336877918],["v8::internal::Factory::NewError(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::String>)",93957336878736,93957336878803],["v8::internal::Factory::NewReferenceError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336879392,93957336879570],["v8::internal::Factory::NewFunctionPrototype(v8::internal::Handle<v8::internal::JSFunction>)",93957336880160,93957336880945],["v8::internal::Factory::CopyBytecodeArray(v8::internal::Handle<v8::internal::BytecodeArray>)",93957336883312,93957336883949],["v8::internal::Factory::NewJSGlobalObject(v8::internal::Handle<v8::internal::JSFunction>)",93957336884480,93957336885430],["v8::internal::Factory::InitializeJSObjectBody(v8::internal::JSObject, v8::internal::Map, int)",93957336885744,93957336886042],["v8::internal::Factory::NewSlowJSObjectWithPropertiesAndElements(v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957336886336,93957336887058],["v8::internal::Factory::NewJSArrayWithElements(v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, int, v8::internal::AllocationType)",93957336887360,93957336887392],["v8::internal::Factory::NewJSArrayWithUnverifiedElements(v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, int, v8::internal::AllocationType)",93957336887696,93957336888102],["v8::internal::Factory::NewJSWeakMap()",93957336888544,93957336889084],["v8::internal::Factory::NewJSGeneratorObject(v8::internal::Handle<v8::internal::JSFunction>)",93957336889856,93957336890248],["v8::internal::Factory::NewSyntheticModule(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::FixedArray>, v8::MaybeLocal<v8::Value> (*)(v8::Local<v8::Context>, v8::Local<v8::Module>))",93957336891504,93957336892290],["v8::internal::Heap::SetInterpreterEntryTrampolineForProfiling(v8::internal::Code)",93957337035824,93957337035837],["v8::internal::Heap::SetEmbedderStackStateForNextFinalization(cppgc::EmbedderStackState)",93957337038464,93957337038481],["void v8::internal::Heap::CopyRange<v8::internal::CompressedObjectSlot>(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot, int, v8::internal::WriteBarrierMode)",93957337038912,93957337039083],["unsigned int std::__1::__sort3<v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&, v8::internal::HeapObject*>(v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&)",93957337042640,93957337043014],["bool std::__1::__insertion_sort_incomplete<v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&, v8::internal::HeapObject*>(v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&)",93957337043712,93957337044216],["unsigned int std::__1::__sort3<std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&, std::__1::pair<int, v8::internal::HeapObject>*>(std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&)",93957337045664,93957337045932],["unsigned int std::__1::__sort5<std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&, std::__1::pair<int, v8::internal::HeapObject>*>(std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::pair<int, v8::internal::HeapObject>*, std::__1::__less<std::__1::pair<int, v8::internal::HeapObject>, std::__1::pair<int, v8::internal::HeapObject> >&)",93957337046144,93957337046422],["v8::internal::Space::ExternalBackingStoreBytes(v8::internal::ExternalBackingStoreType) const",93957337046912,93957337046931],["void v8::internal::WasmTypeInfo::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337374272,93957337374855],["void v8::internal::LiveObjectVisitor::VisitGreyObjectsNoFail<v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)1>, v8::internal::MinorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MinorNonAtomicMarkingState*, v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)1>*, v8::internal::LiveObjectVisitor::IterationMode)",93957337406432,93957337407704],["v8::internal::MarkingBarrier::Activate(bool)",93957337409920,93957337410302],["v8::internal::MarkingWorklists::CreateContextWorklists(std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&)",93957337412432,93957337413132],["v8::internal::MarkingWorklists::Local::IsEmpty()",93957337415200,93957337415467],["v8::internal::MarkingWorklists::Local::MergeOnHold()",93957337415824,93957337416029],["void v8::internal::MemoryAllocator::Free<(v8::internal::MemoryAllocator::FreeMode)0>(v8::internal::MemoryChunk*)",93957337417808,93957337417952],["v8::internal::Page* v8::internal::MemoryAllocator::AllocatePage<(v8::internal::MemoryAllocator::AllocationMode)1, v8::internal::SemiSpace>(unsigned long, v8::internal::SemiSpace*, v8::internal::Executability)",93957337418544,93957337418723],["v8::internal::CodeRangeAddressHint::NotifyFreedCodeRange(unsigned long, unsigned long)",93957337419488,93957337419812],["v8::internal::MemoryAllocator::InitializeCodePageAllocator(v8::PageAllocator*, unsigned long)",93957337420144,93957337420697],["v8::internal::MemoryAllocator::TearDown()",93957337420736,93957337421030],["void v8::internal::MemoryAllocator::Unmapper::PerformFreeMemoryOnQueuedChunks<(v8::internal::MemoryAllocator::Unmapper::FreeMode)0>(v8::JobDelegate*)",93957337421296,93957337421853],["v8::internal::MemoryAllocator::Unmapper::PerformFreeMemoryOnQueuedNonRegularChunks(v8::JobDelegate*)",93957337421872,93957337422159],["void v8::internal::MemoryAllocator::Unmapper::PerformFreeMemoryOnQueuedChunks<(v8::internal::MemoryAllocator::Unmapper::FreeMode)1>(v8::JobDelegate*)",93957337422256,93957337423023],["v8::internal::MemoryAllocator::Unmapper::NumberOfChunks()",93957337423104,93957337423190],["v8::internal::MemoryAllocator::AllocateAlignedMemory(unsigned long, unsigned long, unsigned long, v8::internal::Executability, void*, v8::internal::VirtualMemory*)",93957337423328,93957337423606],["v8::internal::RegExpDisjunction::RationalizeConsecutiveAtoms(v8::internal::RegExpCompiler*)",93957339792768,93957339795741],["void std::__1::__stable_sort<v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)::{lambda(v8::internal::RegExpTree* const&, v8::internal::RegExpTree* const&)#1}&, v8::internal::RegExpTree**>(v8::internal::RegExpTree**, v8::internal::RegExpTree**, v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)::{lambda(v8::internal::RegExpTree* const&, v8::internal::RegExpTree* const&)#1}&, std::__1::iterator_traits<v8::internal::RegExpTree**>::difference_type, std::__1::iterator_traits::value_type*, long)",93957339814032,93957339815232],["v8::internal::FrequencyCollator::FrequencyCollator()",93957339821040,93957339822238],["v8::internal::EndNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339826208,93957339826409],["v8::internal::ActionNode::BeginSubmatch(int, int, v8::internal::RegExpNode*)",93957339827232,93957339827359],["v8::internal::ActionNode::FillInBMInfo(v8::internal::Isolate*, int, int, v8::internal::BoyerMooreLookahead*, bool)",93957339828480,93957339828626],["v8::internal::LoopChoiceNode::EatsAtLeastFromLoopEntry()",93957339828800,93957339829004],["v8::internal::SeqRegExpNode::FilterOneByte(int)",93957339831600,93957339831698],["v8::internal::LoopChoiceNode::FilterOneByte(int)",93957339832464,93957339832575],["v8::internal::NegativeLookaroundChoiceNode::FilterOneByte(int)",93957339833312,93957339833473],["v8::internal::ChoiceNode::GetQuickCheckDetails(v8::internal::QuickCheckDetails*, v8::internal::RegExpCompiler*, int, bool)",93957339833632,93957339834145],["v8::internal::LoopChoiceNode::FillInBMInfo(v8::internal::Isolate*, int, int, v8::internal::BoyerMooreLookahead*, bool)",93957339834240,93957339834411],["v8::internal::AssertionNode::EmitBoundaryCheck(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339834688,93957339835381],["v8::internal::AssertionNode::GetQuickCheckDetails(v8::internal::QuickCheckDetails*, v8::internal::RegExpCompiler*, int, bool)",93957339835872,93957339835911],["v8::internal::TextNode::TextEmitPass(v8::internal::RegExpCompiler*, v8::internal::TextNode::TextEmitPassType, bool, v8::internal::Trace*, bool, int*)",93957339836592,93957339839330],["v8::internal::RegExpCharacterClass* v8::internal::Zone::New<v8::internal::RegExpCharacterClass, v8::internal::Zone*, v8::internal::ZoneList<v8::internal::CharacterRange>*&, v8::base::Flags<v8::internal::JSRegExp::Flag, int> >(v8::internal::Zone*&&, v8::internal::ZoneList<v8::internal::CharacterRange>*&, v8::base::Flags<v8::internal::JSRegExp::Flag, int>&&)",93957339839840,93957339840122],["v8_inspector::V8DebuggerScript::Create(v8::Isolate*, v8::Local<v8::debug::Script>, bool, v8_inspector::V8DebuggerAgentImpl*, v8_inspector::V8InspectorClient*)",93957342523568,93957342524654],["v8_inspector::(anonymous namespace)::ActualScript::startLine() const",93957342528016,93957342528028],["v8_inspector::(anonymous namespace)::ActualScript::isModule() const",93957342528176,93957342528188],["v8_inspector::(anonymous namespace)::ActualScript::getPossibleBreakpoints(v8::debug::Location const&, v8::debug::Location const&, bool, std::__1::vector<v8::debug::BreakLocation, std::__1::allocator<v8::debug::BreakLocation> >*)",93957342528688,93957342529124],["v8_inspector::(anonymous namespace)::ActualScript::location(int) const",93957342529360,93957342529459],["v8_inspector::(anonymous namespace)::ActualScript::MakeWeak()",93957342529600,93957342529632],["v8_inspector::(anonymous namespace)::ActualScript::wasmBytecode() const",93957342529728,93957342529847],["v8_inspector::(anonymous namespace)::ActualScript::getExternalDebugSymbolsURL() const",93957342529936,93957342530639],["v8_inspector::V8SchemaAgentImpl::getDomains(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Schema::Domain, std::__1::default_delete<v8_inspector::protocol::Schema::Domain> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Schema::Domain, std::__1::default_delete<v8_inspector::protocol::Schema::Domain> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Schema::Domain, std::__1::default_delete<v8_inspector::protocol::Schema::Domain> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Schema::Domain, std::__1::default_delete<v8_inspector::protocol::Schema::Domain> > > > > >*)",93957342646720,93957342646983],["v8_inspector::V8StackTraceImpl::buildInspectorObjectImpl(v8_inspector::V8Debugger*) const",93957342651648,93957342651844],["v8_inspector::protocol::Runtime::StackTrace::setDescription(v8_inspector::String16 const&)",93957342657856,93957342658512],["v8_inspector::String16::String16(v8_inspector::String16 const&)",93957342668624,93957342669223],["v8_inspector::clientMirror(v8::Local<v8::Context>, v8::Local<v8::Value>, v8_inspector::String16 const&)",93957342676352,93957342680612],["v8_inspector::(anonymous namespace)::descriptionForCollection(v8::Isolate*, v8::Local<v8::Object>, unsigned long)",93957342686432,93957342687188],["v8_inspector::(anonymous namespace)::descriptionForRegExp(v8::Isolate*, v8::Local<v8::RegExp>)",93957342688656,93957342689032],["std::__1::__unique_if<v8_inspector::(anonymous namespace)::ObjectMirror>::__unique_single std::__1::make_unique<v8_inspector::(anonymous namespace)::ObjectMirror, v8::Local<v8::Object>&, char const*&, v8_inspector::String16>(v8::Local<v8::Object>&, char const*&, v8_inspector::String16&&)",93957342691872,93957342693186],["v8_inspector::(anonymous namespace)::descriptionForScopeList(v8::Local<v8::Array>)",93957342694576,93957342694659],["v8_inspector::(anonymous namespace)::descriptionForScope(v8::Local<v8::Context>, v8::Local<v8::Object>)",93957342701072,93957342701224],["v8_inspector::String16 v8_inspector::String16::concat<char const*, v8_inspector::String16, char const*>(char const*, v8_inspector::String16, char const*)",93957342701760,93957342702500],["v8_inspector::(anonymous namespace)::nativeGetterCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957342703264,93957342703529],["bool std::__1::operator==<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >(std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > const&, std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > const&)",93957342703824,93957342703944],["v8_inspector::(anonymous namespace)::LocationMirror::buildRemoteObject(v8::Local<v8::Context>, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*) const",93957342704096,93957342704723],["v8_inspector::String16 v8_inspector::String16::concat<v8_inspector::String16, char, v8_inspector::String16, char>(v8_inspector::String16, char, v8_inspector::String16, char)",93957342705408,93957342706842],["void v8_inspector::String16Builder::appendAll<char, v8_inspector::String16, char>(char, v8_inspector::String16, char)",93957342707568,93957342708239],["v8::internal::compiler::AccessInfoFactory::TryLoadPropertyDetails(v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::InternalIndex*, v8::internal::PropertyDetails*) const",93957342848912,93957342849381],["v8::internal::compiler::CodeGenerator::wasm_runtime_exception_support() const",93957342867520,93957342867541],["v8::internal::compiler::CodeGenerator::ComputeBranchInfo(v8::internal::compiler::BranchInfo*, v8::internal::compiler::Instruction*)",93957342875728,93957342876315],["v8::internal::compiler::CodeGenerator::IsMaterializableFromRoot(v8::internal::Handle<v8::internal::HeapObject>, v8::internal::RootIndex*)",93957342878880,93957342878949],["v8::internal::compiler::CodeGenerator::ResetSpeculationPoison()",93957342881040,93957342881068],["v8::internal::compiler::CodeGenerator::RecordCallPosition(v8::internal::compiler::Instruction*)",93957342881504,93957342882426],["v8::internal::compiler::CodeGenerator::BuildTranslationForFrameStateDescriptor(v8::internal::compiler::FrameStateDescriptor*, v8::internal::compiler::InstructionOperandIterator*, v8::internal::compiler::OutputFrameStateCombine)",93957342885840,93957342886358],["unsigned int std::__1::__sort5<v8::internal::compiler::CodeGenerator::AssembleCode()::$_0&, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l> >(std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, v8::internal::compiler::CodeGenerator::AssembleCode()::$_0&)",93957342890800,93957342891110],["v8::internal::compiler::FrameElider::Run()",93957342893728,93957342893959],["v8::internal::compiler::FrameElider::MarkDeConstruction()",93957342894736,93957342895131],["v8::internal::compiler::GapResolver::PerformMove(v8::internal::compiler::ParallelMove*, v8::internal::compiler::MoveOperands*)",93957342895792,93957342896683],["v8::internal::compiler::InstructionScheduler::StartBlock(v8::internal::compiler::RpoNumber)",93957342896896,93957342896910],["void v8::internal::compiler::InstructionScheduler::Schedule<v8::internal::compiler::InstructionScheduler::StressSchedulerQueue>()",93957342896976,93957342898140],["v8::internal::compiler::InstructionScheduler::AddTerminator(v8::internal::compiler::Instruction*)",93957342899168,93957342900114],["v8::internal::compiler::InstructionScheduler::GetInstructionFlags(v8::internal::compiler::Instruction const*) const",93957342903552,93957342903639],["std::__1::vector<std::__1::pair<int, int>, v8::internal::ZoneAllocator<std::__1::pair<int, int> > >::assign(unsigned long, std::__1::pair<int, int> const&)",93957342906592,93957342907537],["v8::internal::compiler::MachineOperatorBuilder::I32x4MaxS()",93957344482784,93957344482799],["v8::internal::compiler::MachineOperatorBuilder::I16x8MinU()",93957344483552,93957344483567],["v8::internal::compiler::MachineOperatorBuilder::I8x16MaxS()",93957344483936,93957344483951],["v8::internal::compiler::MachineOperatorBuilder::I8x16BitMask()",93957344484192,93957344484207],["v8::internal::compiler::MachineOperatorBuilder::I8x16AllTrue()",93957344484384,93957344484399],["v8::internal::compiler::MachineOperatorBuilder::Word64Ctz()",93957344484608,93957344484631],["v8::internal::compiler::MachineOperatorBuilder::Float64RoundDown()",93957344484864,93957344484886],["v8::internal::compiler::MachineOperatorBuilder::Int32SubWithOverflow()",93957344485104,93957344485119],["v8::internal::compiler::MachineOperatorBuilder::LoadTransform(v8::internal::compiler::MemoryAccessKind, v8::internal::compiler::LoadTransformation)",93957344486736,93957344487493],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreLaneParameters> >* v8::internal::Zone::New<v8::internal::compiler::Operator1<v8::internal::compiler::StoreLaneParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreLaneParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreLaneParameters> >, v8::internal::compiler::IrOpcode::Value, v8::base::Flags<v8::internal::compiler::Operator::Property, unsigned char>, char const (&) [10], int, int, int, int, int, int, v8::internal::compiler::StoreLaneParameters>(v8::internal::compiler::IrOpcode::Value&&, v8::base::Flags<v8::internal::compiler::Operator::Property, unsigned char>&&, char const (&) [10], int&&, int&&, int&&, int&&, int&&, int&&, v8::internal::compiler::StoreLaneParameters&&)",93957344504480,93957344504666],["v8::internal::compiler::MachineOperatorBuilder::Store(v8::internal::compiler::StoreRepresentation)",93957344505392,93957344506470],["v8::internal::compiler::MachineOperatorBuilder::BitcastWordToTagged()",93957344506784,93957344506799],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicStore(v8::internal::MachineRepresentation)",93957344506976,93957344507045],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicSub(v8::internal::MachineType)",93957344507488,93957344507619],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicLoad(v8::internal::MachineType)",93957344508064,93957344508179],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicAnd(v8::internal::MachineType)",93957344508544,93957344508659],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicExchange(v8::internal::MachineType)",93957344508928,93957344509043],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairLoad()",93957344509184,93957344509199],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairAdd()",93957344509216,93957344509231],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairAnd()",93957344509248,93957344509263],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairXor()",93957344509280,93957344509295],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicPairCompareExchange()",93957344509312,93957344509327],["v8::internal::compiler::MachineOperatorBuilder::F64x2ExtractLane(int)",93957344509344,93957344509486],["v8::internal::compiler::MachineOperatorBuilder::I64x2ExtractLane(int)",93957344509632,93957344509774],["v8::internal::compiler::MachineOperatorBuilder::I16x8ExtractLaneU(int)",93957344509920,93957344510062],["v8::internal::compiler::MachineOperatorBuilder::I8x16ExtractLaneU(int)",93957344510208,93957344510350],["v8::internal::compiler::MachineOperatorBuilder::F64x2ReplaceLane(int)",93957344510496,93957344510638],["v8::internal::compiler::MachineOperatorBuilder::I64x2ReplaceLane(int)",93957344510784,93957344510926],["v8::internal::compiler::MachineOperatorBuilder::I16x8ReplaceLane(int)",93957344511072,93957344511214],["v8::internal::compiler::MachineOperatorBuilder::I64x2ReplaceLaneI32Pair(int)",93957344511360,93957344511502],["v8::internal::compiler::hash_value(v8::internal::compiler::S128ImmediateParameter const&)",93957344511536,93957344512145],["v8::internal::compiler::MachineOperatorBuilder::S128Const(unsigned char const*)",93957344512656,93957344512840],["v8::internal::compiler::Scheduler::DecrementUnscheduledUseCount(v8::internal::compiler::Node*, int, v8::internal::compiler::Node*)",93957344758640,93957344759201],["v8::internal::compiler::CFGBuilder::Run()",93957344759600,93957344760893],["v8::internal::compiler::SpecialRPONumberer::SerializeRPOIntoSchedule()",93957344761056,93957344761893],["v8::internal::compiler::PrepareUsesVisitor::Pre(v8::internal::compiler::Node*)",93957344762144,93957344763030],["v8::internal::compiler::CFGBuilder::Run(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344766576,93957344768221],["v8::internal::compiler::CFGBuilder::BuildBlocks(v8::internal::compiler::Node*)",93957344769568,93957344770025],["v8::internal::compiler::CFGBuilder::ConnectMerge(v8::internal::compiler::Node*)",93957344770368,93957344770763],["v8::internal::compiler::CFGBuilder::ConnectTailCall(v8::internal::compiler::Node*)",93957344772752,93957344772960],["v8::internal::compiler::CFGBuilder::FindPredecessorBlock(v8::internal::compiler::Node*)",93957344773840,93957344774020],["v8::internal::BitVector::Resize(int, v8::internal::Zone*)",93957344778080,93957344778507],["v8::internal::compiler::ScheduleLateNodeVisitor::ProcessQueue(v8::internal::compiler::Node*)",93957344779984,93957344780639],["v8::internal::compiler::ScheduleLateNodeVisitor::ScheduleRegion(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344784048,93957344784330],["std::__1::vector<v8::internal::compiler::Scheduler::SchedulerData, v8::internal::ZoneAllocator<v8::internal::compiler::Scheduler::SchedulerData> >::__append(unsigned long, v8::internal::compiler::Scheduler::SchedulerData const&)",93957344786208,93957344786712],["v8::internal::compiler::SelectLowering::reducer_name() const",93957344787056,93957344787069],["v8::internal::compiler::Hints::operator==(v8::internal::compiler::Hints const&) const",93957344791568,93957344792422],["v8::internal::compiler::Hints::AddVirtualContext(v8::internal::compiler::VirtualContext const&, v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*)",93957344794528,93957344795374],["v8::internal::compiler::Hints::Add(v8::internal::compiler::Hints const&, v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*)",93957344797680,93957344798401],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::VirtualClosure const&)",93957344802032,93957344802454],["v8::internal::compiler::SerializerForBackgroundCompilation::Environment::Environment(v8::internal::Zone*, v8::internal::Isolate*, v8::internal::compiler::CompilationSubject, v8::base::Optional<v8::internal::compiler::Hints>, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&, v8::internal::compiler::MissingArgumentsPolicy)",93957344804112,93957344804626],["v8::internal::compiler::SerializerForBackgroundCompilation::SerializerForBackgroundCompilation(v8::internal::compiler::ZoneStats*, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::CompilationDependencies*, v8::internal::Handle<v8::internal::JSFunction>, v8::base::Flags<v8::internal::compiler::SerializerForBackgroundCompilationFlag, int>, v8::internal::BytecodeOffset)",93957344807040,93957344808634],["v8::internal::compiler::SerializerForBackgroundCompilation::TraverseBytecode()",93957344811136,93957344820520],["v8::internal::compiler::SerializerForBackgroundCompilation::ContributeToJumpTargetEnvironment(int)",93957344822032,93957344822682],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCallUndefinedReceiver0(v8::internal::interpreter::BytecodeArrayIterator*)",93957344824208,93957344824629],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitConstructWithSpread(v8::internal::interpreter::BytecodeArrayIterator*)",93957344826064,93957344826387],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCreateRegExpLiteral(v8::internal::interpreter::BytecodeArrayIterator*)",93957344827120,93957344827312],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitGetSuperConstructor(v8::internal::interpreter::BytecodeArrayIterator*)",93957344827680,93957344828314],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitInvokeIntrinsic(v8::internal::interpreter::BytecodeArrayIterator*)",93957344828640,93957344829519],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitLdaContextSlot(v8::internal::interpreter::BytecodeArrayIterator*)",93957344829712,93957344829968],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitLdar(v8::internal::interpreter::BytecodeArrayIterator*)",93957344830240,93957344830583],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitLdaZero(v8::internal::interpreter::BytecodeArrayIterator*)",93957344830800,93957344830982],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitPopContext(v8::internal::interpreter::BytecodeArrayIterator*)",93957344831472,93957344831814],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitStaContextSlot(v8::internal::interpreter::BytecodeArrayIterator*)",93957344832320,93957344832560],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitStar(v8::internal::interpreter::BytecodeArrayIterator*)",93957344832752,93957344833106],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitTestInstanceOf(v8::internal::interpreter::BytecodeArrayIterator*)",93957344833296,93957344834008],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessNamedPropertyAccess(v8::internal::compiler::Hints*, v8::internal::compiler::NameRef const&, v8::internal::FeedbackSlot, v8::internal::compiler::AccessMode)",93957344834368,93957344834725],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessCallOrConstruct(v8::internal::compiler::Hints, v8::base::Optional<v8::internal::compiler::Hints>, v8::internal::ZoneVector<v8::internal::compiler::Hints>*, v8::internal::FeedbackSlot, v8::internal::compiler::MissingArgumentsPolicy)",93957344835616,93957344837119],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessHintsForPromiseResolve(v8::internal::compiler::Hints const&)",93957344838272,93957344838837],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessModuleVariableAccess(v8::internal::interpreter::BytecodeArrayIterator*)",93957344839792,93957344839986],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessCallVarArgs(v8::internal::ConvertReceiverMode, v8::internal::compiler::Hints const&, v8::internal::interpreter::Register, int, v8::internal::FeedbackSlot, v8::internal::compiler::MissingArgumentsPolicy)",93957344840448,93957344840650],["v8::internal::ZoneVector<v8::internal::compiler::Hints> v8::internal::compiler::SerializerForBackgroundCompilation::PrepareArgumentsHints<v8::internal::compiler::Hints*, v8::internal::compiler::Hints*>(v8::internal::compiler::Hints*, v8::internal::compiler::Hints*, v8::internal::compiler::Hints*)",93957344842272,93957344844771],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessApiCall(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&)",93957344846224,93957344847130],["v8::internal::compiler::Callee::ToCompilationSubject(v8::internal::Isolate*, v8::internal::Zone*) const",93957344856944,93957344857335],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessNewTargetForConstruct(v8::internal::compiler::Hints const&, v8::internal::compiler::Hints*)",93957344859696,93957344860326],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessCallOrConstructRecursive(v8::internal::compiler::Hints const&, v8::base::Optional<v8::internal::compiler::Hints>, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&, v8::internal::SpeculationMode, v8::internal::compiler::MissingArgumentsPolicy, v8::internal::compiler::Hints*)",93957344862000,93957344863484],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessReceiverMapForApiCall(v8::internal::compiler::FunctionTemplateInfoRef, v8::internal::Handle<v8::internal::Map>)",93957344865136,93957344865622],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessMapHintsForPromises(v8::internal::compiler::Hints const&)",93957344865776,93957344866155],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessHintsForHasInPrototypeChain(v8::internal::compiler::Hints const&)",93957344866768,93957344867011],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessHintsForFunctionBind(v8::internal::compiler::Hints const&)",93957344867216,93957344867657],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessConstantForOrdinaryHasInstance(v8::internal::compiler::HeapObjectRef const&, bool*)",93957344867936,93957344868193],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessMapForRegExpTest(v8::internal::compiler::MapRef)",93957344868384,93957344868638],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessLdaLookupGlobalSlot(v8::internal::interpreter::BytecodeArrayIterator*)",93957344868880,93957344869160],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessMapForNamedPropertyAccess(v8::internal::compiler::Hints*, v8::base::Optional<v8::internal::compiler::MapRef>, v8::internal::compiler::MapRef, v8::internal::compiler::NameRef const&, v8::internal::compiler::AccessMode, v8::base::Optional<v8::internal::compiler::JSObjectRef>, v8::internal::compiler::Hints*)",93957344869488,93957344871876],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessElementAccess(v8::internal::compiler::Hints const&, v8::internal::compiler::Hints const&, v8::internal::compiler::ElementAccessFeedback const&, v8::internal::compiler::AccessMode)",93957344872256,93957344873404],["v8::internal::compiler::SerializerForBackgroundCompilation::ProcessNamedSuperPropertyAccess(v8::internal::compiler::Hints*, v8::internal::compiler::NameRef const&, v8::internal::FeedbackSlot, v8::internal::compiler::AccessMode)",93957344874944,93957344875301],["std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > > v8::internal::compiler::(anonymous namespace)::GetRelevantReceiverMaps<v8::internal::compiler::FunctionalSet<v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>::equal_to> >(v8::internal::Isolate*, v8::internal::compiler::FunctionalSet<v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>::equal_to> const&)",93957344876096,93957344876472],["std::__1::pair<std::__1::__tree_iterator<v8::internal::compiler::HandlerRangeMatcher::Range, std::__1::__tree_node<v8::internal::compiler::HandlerRangeMatcher::Range, void*>*, long>, bool> std::__1::__tree<v8::internal::compiler::HandlerRangeMatcher::Range, std::__1::less<v8::internal::compiler::HandlerRangeMatcher::Range>, std::__1::allocator<v8::internal::compiler::HandlerRangeMatcher::Range> >::__emplace_unique_key_args<v8::internal::compiler::HandlerRangeMatcher::Range, v8::internal::compiler::HandlerRangeMatcher::Range>(v8::internal::compiler::HandlerRangeMatcher::Range const&, v8::internal::compiler::HandlerRangeMatcher::Range&&)",93957344877040,93957344877307],["frexpf",139871563501936,139871563502037],["sigprocmask",139871563505536,139871563505787],["sigsetmask",139871563506304,139871563506425],["sigvec",139871563506816,139871563507082],["siginterrupt",139871563507312,139871563507514],["sigfillset",139871563507600,139871563507681],["sigdelset",139871563507760,139871563507820],["sigreturn",139871563507888,139871563507908],["getutent",139871564525984,139871564526097],["getutline",139871564526848,139871564526969],["utmpname",139871564530896,139871564531199],["posix_openpt",139871564531472,139871564531790],["casinhf128",139871565645360,139871565646372],["fdimf128",139871565669072,139871565669379],["canonicalizef128",139871565670016,139871565670066],["scalblnf128",139871565670368,139871565670652],["acosf128",139871565671264,139871565671372],["asinf128",139871565671472,139871565671580],["atanhf128",139871565671760,139871565671897],["exp10f128",139871565672080,139871565672269],["v8::D8Console::Debug(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335206832,93957335206866],["v8::D8Console::TimeStamp(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335208000,93957335208422],["v8::SourceGroup::IsolateThread::~IsolateThread()",93957335302512,93957335302540],["std::__1::__hash_table<std::__1::__hash_value_type<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__unordered_map_hasher<v8::Global<v8::Module>, std::__1::__hash_value_type<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, v8::(anonymous namespace)::ModuleEmbedderData::ModuleGlobalHash, std::__1::equal_to<v8::Global<v8::Module> >, false>, std::__1::__unordered_map_equal<v8::Global<v8::Module>, std::__1::__hash_value_type<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<v8::Global<v8::Module> >, v8::(anonymous namespace)::ModuleEmbedderData::ModuleGlobalHash, true>, std::__1::allocator<std::__1::__hash_value_type<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::rehash(unsigned long)",93957335303584,93957335303955],["v8::Shell::ReadBuffer(v8::FunctionCallbackInfo<v8::Value> const&)::$_1::__invoke(void*, unsigned long, void*)",93957335305168,93957335305185],["v8::ExternalOwningOneByteStringResource::~ExternalOwningOneByteStringResource()",93957335305248,93957335305304],["v8::internal::ConcurrentMarking::JobTask::Run(v8::JobDelegate*)",93957336816112,93957336816623],["v8::internal::CppGraphBuilder::Run(v8::Isolate*, v8::EmbedderGraph*, void*)",93957336820528,93957336820842],["v8::internal::VisiblityVisitor::VisitWeakContainer(void const*, cppgc::TraceDescriptor, cppgc::TraceDescriptor, void (*)(cppgc::LivenessBroker const&, void const*), void const*)",93957336822240,93957336822279],["v8::internal::GraphBuildingVisitor::Visit(void const*, cppgc::TraceDescriptor)",93957336823136,93957336823164],["v8::internal::CppGraphBuilderImpl::AddEdge(v8::internal::State&, cppgc::internal::HeapObjectHeader const&)",93957336823232,93957336823771],["void std::__1::vector<std::__1::unique_ptr<v8_inspector::V8DebuggerScript, std::__1::default_delete<v8_inspector::V8DebuggerScript> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::V8DebuggerScript, std::__1::default_delete<v8_inspector::V8DebuggerScript> > > >::__push_back_slow_path<std::__1::unique_ptr<v8_inspector::V8DebuggerScript, std::__1::default_delete<v8_inspector::V8DebuggerScript> > >(std::__1::unique_ptr<v8_inspector::V8DebuggerScript, std::__1::default_delete<v8_inspector::V8DebuggerScript> >&&)",93957336824352,93957336825095],["v8::internal::LocalEmbedderHeapTracer::SetRemoteTracer(v8::EmbedderHeapTracer*)",93957336825504,93957336825543],["v8::internal::LocalEmbedderHeapTracer::TraceEpilogue()",93957336825584,93957336825683],["v8::internal::Factory::InternalizeUtf8String(v8::internal::Vector<char const> const&)",93957336854240,93957336854467],["v8::internal::Factory::NewCatchContext(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::ScopeInfo>, v8::internal::Handle<v8::internal::Object>)",93957336863328,93957336863884],["v8::internal::Factory::NewForeign(unsigned long)",93957336868592,93957336868715],["v8::internal::Factory::NewProtector()",93957336870624,93957336870737],["v8::internal::Factory::CopyFixedDoubleArray(v8::internal::Handle<v8::internal::FixedDoubleArray>)",93957336875024,93957336875509],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::Factory::CopyArrayWithMap<v8::internal::FixedArray>(v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::Map>)",93957336875952,93957336876203],["v8::internal::Handle<v8::internal::WeakFixedArray> v8::internal::Factory::CopyArrayAndGrow<v8::internal::WeakFixedArray>(v8::internal::Handle<v8::internal::WeakFixedArray>, int, v8::internal::AllocationType)",93957336876704,93957336877001],["v8::internal::Handle<v8::internal::PropertyArray> v8::internal::Factory::CopyArrayAndGrow<v8::internal::PropertyArray>(v8::internal::Handle<v8::internal::PropertyArray>, int, v8::internal::AllocationType)",93957336877936,93957336878234],["v8::internal::Factory::NewError(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336878528,93957336878732],["v8::internal::Factory::NewRangeError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336878816,93957336878994],["v8::internal::Factory::NewEvalError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336879200,93957336879378],["v8::internal::Factory::NewSyntaxError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336879584,93957336879762],["v8::internal::Factory::NewWasmRuntimeError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336879968,93957336880146],["v8::internal::Factory::NewExternal(void*)",93957336880960,93957336881555],["v8::internal::Factory::CopyCode(v8::internal::Handle<v8::internal::Code>)",93957336882176,93957336883312],["v8::internal::Factory::NewJSObject(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::AllocationType)",93957336883952,93957336884187],["v8::internal::Heap::ExternalStringTable::CleanUpYoung()",93957337035056,93957337035296],["v8::internal::Heap::KeepDuringJob(v8::internal::Handle<v8::internal::JSReceiver>)",93957337036848,93957337037021],["v8::internal::Heap::GcSafeFindCodeForInnerPointer(unsigned long)",93957337037792,93957337038093],["v8::internal::StrongRootBlockAllocator::deallocate(unsigned long*, unsigned long)",93957337038688,93957337038821],["v8::internal::ObjectVisitor::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot)",93957337038880,93957337038898],["void v8::internal::Heap::CopyRange<v8::internal::CompressedMaybeObjectSlot>(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot, int, v8::internal::WriteBarrierMode)",93957337039088,93957337039259],["void std::__1::__sort<v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&, v8::internal::HeapObject*>(v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&)",93957337040880,93957337042632],["unsigned int std::__1::__sort4<v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&, v8::internal::HeapObject*>(v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::HeapObject*, v8::internal::(anonymous namespace)::ReportDuplicates(int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> >*)::$_6&)",93957337043024,93957337043320],["void v8::internal::JSArrayBuffer::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337366304,93957337366684],["v8::internal::YoungGenerationMarkingJob::ProcessItems(v8::JobDelegate*)",93957337377328,93957337377984],["v8::internal::(anonymous namespace)::YoungGenerationEvacuator::RawEvacuatePage(v8::internal::MemoryChunk*, long*)",93957337404400,93957337404910],["v8::internal::MarkingBarrier::~MarkingBarrier()",93957337408944,93957337409068],["v8::internal::MarkingBarrier::Write(v8::internal::DescriptorArray, int)",93957337409792,93957337409840],["v8::internal::MarkingBarrier::Deactivate()",93957337410384,93957337410747],["v8::internal::MarkingWorklists::Clear()",93957337411712,93957337412283],["v8::internal::MarkingWorklists::Local::Local(v8::internal::MarkingWorklists*)",93957337413840,93957337414432],["heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>::Local::Publish()",93957337414960,93957337415186],["v8::internal::MarkingWorklists::Local::SwitchToContext(unsigned long, heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>::Local*)",93957337415472,93957337415579],["v8::internal::MarkingWorklists::Local::ShareWork()",93957337415648,93957337415811],["v8::internal::MarkingWorklists::Local::PopContext(v8::internal::HeapObject*)",93957337416032,93957337416446],["void std::__1::vector<std::__1::unique_ptr<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>, std::__1::default_delete<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64> > >, std::__1::allocator<std::__1::unique_ptr<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>, std::__1::default_delete<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64> > > > >::__push_back_slow_path<std::__1::unique_ptr<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>, std::__1::default_delete<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64> > > >(std::__1::unique_ptr<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>, std::__1::default_delete<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64> > >&&)",93957337417008,93957337417805],["void v8::internal::MemoryAllocator::Free<(v8::internal::MemoryAllocator::FreeMode)2>(v8::internal::MemoryChunk*)",93957337417952,93957337418155],["v8::internal::Page* v8::internal::MemoryAllocator::AllocatePage<(v8::internal::MemoryAllocator::AllocationMode)0, v8::internal::PagedSpace>(unsigned long, v8::internal::PagedSpace*, v8::internal::Executability)",93957337418384,93957337418534],["v8::internal::MemoryChunk* v8::internal::MemoryAllocator::AllocatePagePooled<v8::internal::SemiSpace>(v8::internal::SemiSpace*)",93957337418736,93957337419055],["v8::internal::RegExpBytecodeDisassemble(unsigned char const*, int, char const*)",93957339781920,93957339782048],["v8::internal::RegExpBackReference::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339803968,93957339804118],["v8::internal::(anonymous namespace)::NegativeLookaroundAgainstReadDirectionAndMatch(v8::internal::RegExpCompiler*, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::RegExpNode*, bool, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957339811936,93957339812347],["v8::internal::NegativeLookaroundChoiceNode::NegativeLookaroundChoiceNode(v8::internal::GuardedAlternative, v8::internal::GuardedAlternative, v8::internal::Zone*)",93957339819632,93957339820317],["v8::internal::RegExpText::AppendToText(v8::internal::RegExpText*, v8::internal::Zone*)",93957339820720,93957339820826],["v8::internal::Trace::FindAffectedRegisters(v8::internal::DynamicBitSet*, v8::internal::Zone*)",93957339822688,93957339823316],["v8::internal::Trace::Flush(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339824752,93957339826093],["v8::internal::ActionNode::SetRegisterForLoop(int, int, v8::internal::RegExpNode*)",93957339826736,93957339826863],["v8::internal::ActionNode::ClearCaptures(v8::internal::Interval, v8::internal::RegExpNode*)",93957339827104,93957339827225],["v8::internal::ActionNode::PositiveSubmatchSuccess(int, int, int, int, v8::internal::RegExpNode*)",93957339827360,93957339827509],["v8::internal::RegExpNode::LimitVersions(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339827664,93957339828468],["v8::internal::ActionNode::GetQuickCheckDetails(v8::internal::QuickCheckDetails*, v8::internal::RegExpCompiler*, int, bool)",93957339828640,93957339828679],["v8::internal::NegativeLookaroundChoiceNode::GetQuickCheckDetails(v8::internal::QuickCheckDetails*, v8::internal::RegExpCompiler*, int, bool)",93957339828768,93957339828793],["v8::internal::RegExpNode::EmitQuickCheck(v8::internal::RegExpCompiler*, v8::internal::Trace*, v8::internal::Trace*, bool, v8::internal::Label*, v8::internal::QuickCheckDetails*, bool, v8::internal::ChoiceNode*)",93957339829008,93957339829499],["v8::internal::GetCaseIndependentLetters(v8::internal::Isolate*, unsigned short, bool, unsigned int*, int)",93957339830672,93957339831598],["v8::internal::RangeContainsLatin1Equivalents(v8::internal::CharacterRange)",93957339831712,93957339831784],["_ZNSt3__16vectorINS_4pairIiiEENS_9allocatorIS2_EEE6assignIPS2_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS2_NS_15iterator_traitsIS9_E9referenceEEE5valueEvE4typeES9_S9_",93957342522144,93957342522487],["v8_inspector::(anonymous namespace)::ActualScript::GetScriptName(v8::Isolate*, v8::Local<v8::debug::Script>, v8_inspector::V8InspectorClient*)",93957342524896,93957342525680],["v8_inspector::(anonymous namespace)::ActualScript::getLanguage() const",93957342526816,93957342526828],["v8_inspector::(anonymous namespace)::ActualScript::endLine() const",93957342528048,93957342528060],["v8_inspector::(anonymous namespace)::ActualScript::isLiveEdit() const",93957342528160,93957342528172],["v8_inspector::(anonymous namespace)::ActualScript::length() const",93957342528192,93957342528311],["v8_inspector::(anonymous namespace)::ActualScript::setSource(v8_inspector::String16 const&, bool, v8::debug::LiveEditResult*)",93957342528368,93957342528683],["v8_inspector::(anonymous namespace)::ActualScript::resetBlackboxedStateCache()",93957342529136,93957342529223],["v8_inspector::V8RuntimeAgentImpl::reportExecutionContextCreated(v8_inspector::InspectedContext*)",93957342641120,93957342643341],["v8_inspector::V8StackTraceImpl::create(v8_inspector::V8Debugger*, int, v8::Local<v8::StackTrace>, int)",93957342648096,93957342648613],["v8_inspector::V8StackTraceImpl::topColumnNumber() const",93957342651520,93957342651539],["v8_inspector::V8StackTraceImpl::buildInspectorObject(int) const",93957342653600,93957342653804],["v8_inspector::AsyncStackTrace::buildInspectorObject(v8_inspector::V8Debugger*, int) const",93957342657552,93957342657728],["v8_inspector::createDataProperty(v8::Local<v8::Context>, v8::Local<v8::Object>, v8::Local<v8::Name>, v8::Local<v8::Value>)",93957342658688,93957342658848],["v8_inspector::ValueMirror::create(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957342664400,93957342668086],["v8_inspector::ValueMirror::getPrivateProperties(v8::Local<v8::Context>, v8::Local<v8::Object>)",93957342670960,93957342671970],["v8_inspector::String16 v8_inspector::String16::concat<char const*, v8_inspector::String16, char>(char const*, v8_inspector::String16, char)",93957342675600,93957342676341],["std::__1::unique_ptr<v8_inspector::(anonymous namespace)::ObjectMirror, std::__1::default_delete<v8_inspector::(anonymous namespace)::ObjectMirror> >::~unique_ptr()",93957342680624,93957342680714],["v8_inspector::(anonymous namespace)::descriptionForError(v8::Local<v8::Context>, v8::Local<v8::Object>, v8_inspector::(anonymous namespace)::ErrorType)",93957342682032,93957342686420],["std::__1::__unique_if<v8_inspector::(anonymous namespace)::ObjectMirror>::__unique_single std::__1::make_unique<v8_inspector::(anonymous namespace)::ObjectMirror, v8::Local<v8::Value>&, v8_inspector::String16>(v8::Local<v8::Value>&, v8_inspector::String16&&)",93957342687200,93957342687851],["std::__1::unique_ptr<v8_inspector::(anonymous namespace)::PrimitiveValueMirror, std::__1::default_delete<v8_inspector::(anonymous namespace)::PrimitiveValueMirror> >::~unique_ptr()",93957342688560,93957342688650],["std::__1::__unique_if<v8_inspector::(anonymous namespace)::ObjectMirror>::__unique_single std::__1::make_unique<v8_inspector::(anonymous namespace)::ObjectMirror, v8::Local<v8::Value>&, char const*&, char const (&) [6]>(v8::Local<v8::Value>&, char const*&, char const (&) [6])",93957342689040,93957342690385],["std::__1::__unique_if<v8_inspector::(anonymous namespace)::ObjectMirror>::__unique_single std::__1::make_unique<v8_inspector::(anonymous namespace)::ObjectMirror, v8::Local<v8::Promise>&, char const*&, v8_inspector::String16>(v8::Local<v8::Promise>&, char const*&, v8_inspector::String16&&)",93957342690544,93957342691858],["v8_inspector::(anonymous namespace)::descriptionForWasmValueObject(v8::Local<v8::Context>, v8::Local<v8::debug::WasmValueObject>)",93957342693200,93957342693260],["v8::internal::compiler::PropertyAccessInfo::ModuleExport(v8::internal::Zone*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Cell>)",93957342834208,93957342834512],["v8::internal::compiler::AccessInfoFactory::FinalizePropertyAccessInfos(v8::internal::ZoneVector<v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::AccessMode, v8::internal::ZoneVector<v8::internal::compiler::PropertyAccessInfo>*) const",93957342858304,93957342859095],["v8::internal::compiler::AllNodes::AllNodes(v8::internal::Zone*, v8::internal::compiler::Graph const*, bool)",93957342863536,93957342863800],["v8::internal::compiler::CodeGenerator::AssembleDeoptImmediateArgs(v8::internal::ZoneVector<v8::internal::compiler::ImmediateOperand*> const*, v8::internal::Label*)",93957342868432,93957342868976],["std::__1::vector<v8::internal::compiler::TurbolizerInstructionStartInfo, v8::internal::ZoneAllocator<v8::internal::compiler::TurbolizerInstructionStartInfo> >::assign(unsigned long, v8::internal::compiler::TurbolizerInstructionStartInfo const&)",93957342874800,93957342875476],["v8::internal::compiler::CodeGenerator::GetSourcePositionTable()",93957342876640,93957342876657],["v8::internal::compiler::CodeGenerator::IsNextInAssemblyOrder(v8::internal::compiler::RpoNumber) const",93957342878624,93957342878697],["v8::internal::compiler::CodeGenerator::GetPushCompatibleMoves(v8::internal::compiler::Instruction*, v8::base::Flags<v8::internal::compiler::CodeGenerator::PushTypeFlag, int>, v8::internal::ZoneVector<v8::internal::compiler::MoveOperands*>*)",93957342880048,93957342880758],["v8::internal::compiler::CodeGenerator::AssembleSourcePosition(v8::internal::compiler::Instruction*)",93957342880944,93957342881034],["v8::internal::compiler::CodeGenerator::DetermineStubCallMode() const",93957342881072,93957342881099],["v8::internal::compiler::CodeGenerator::AddJumpTable(v8::internal::Label**, unsigned long)",93957342881392,93957342881496],["v8::internal::compiler::CodeGenerator::BuildTranslation(v8::internal::compiler::Instruction*, int, unsigned long, unsigned long, v8::internal::compiler::OutputFrameStateCombine)",93957342882432,93957342884152],["v8::internal::compiler::CodeGenerator::AddTranslationForOperand(v8::internal::compiler::Instruction*, v8::internal::compiler::InstructionOperand*, v8::internal::MachineType)",93957342884624,93957342885836],["v8::internal::compiler::OutOfLineCode::OutOfLineCode(v8::internal::compiler::CodeGenerator*)",93957342886368,93957342886431],["unsigned int std::__1::__sort3<v8::internal::compiler::CodeGenerator::AssembleCode()::$_0&, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l> >(std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, v8::internal::compiler::CodeGenerator::AssembleCode()::$_0&)",93957342890592,93957342890800],["bool std::__1::__insertion_sort_incomplete<v8::internal::compiler::CodeGenerator::AssembleCode()::$_0&, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l> >(std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, std::__1::__deque_iterator<v8::internal::compiler::DeoptimizationExit*, v8::internal::compiler::DeoptimizationExit**, v8::internal::compiler::DeoptimizationExit*&, v8::internal::compiler::DeoptimizationExit***, long, 0l>, v8::internal::compiler::CodeGenerator::AssembleCode()::$_0&)",93957342891120,93957342892961],["v8::internal::compiler::MachineOperatorBuilder::I64x2Abs()",93957344482272,93957344482287],["v8::internal::compiler::MachineOperatorBuilder::I32x4ExtMulLowI16x8S()",93957344483040,93957344483055],["v8::internal::compiler::MachineOperatorBuilder::I16x8GtS()",93957344483424,93957344483439],["v8::internal::compiler::MachineOperatorBuilder::I16x8ExtMulLowI8x16S()",93957344483680,93957344483695],["v8::internal::compiler::MachineOperatorBuilder::I8x16AddSatS()",93957344483872,93957344483887],["v8::internal::compiler::MachineOperatorBuilder::I8x16GeS()",93957344484000,93957344484015],["v8::internal::compiler::MachineOperatorBuilder::I8x16GeU()",93957344484128,93957344484143],["v8::internal::compiler::MachineOperatorBuilder::S128Xor()",93957344484256,93957344484271],["v8::internal::compiler::MachineOperatorBuilder::I32x4AllTrue()",93957344484352,93957344484367],["v8::internal::compiler::MachineOperatorBuilder::Word32Sar(v8::internal::compiler::ShiftKind)",93957344484416,93957344484445],["v8::internal::compiler::MachineOperatorBuilder::TruncateFloat32ToInt32(v8::internal::compiler::TruncateKind)",93957344484544,93957344484573],["v8::internal::compiler::MachineOperatorBuilder::Word64Rol()",93957344484672,93957344484695],["v8::internal::compiler::MachineOperatorBuilder::Word64Popcnt()",93957344484800,93957344484822],["v8::internal::compiler::MachineOperatorBuilder::Float64RoundUp()",93957344484928,93957344484951],["v8::internal::compiler::MachineOperatorBuilder::Float64RoundTiesEven()",93957344485056,93957344485077],["v8::internal::compiler::MachineOperatorBuilder::Load(v8::internal::MachineType)",93957344485136,93957344485526],["v8::internal::compiler::MachineOperatorBuilder::ProtectedLoad(v8::internal::MachineType)",93957344486336,93957344486726],["v8::internal::compiler::MachineOperatorBuilder::LoadLane(v8::internal::compiler::MemoryAccessKind, v8::internal::MachineType, unsigned char)",93957344487504,93957344496098],["v8::internal::compiler::MachineOperatorBuilder::StoreLane(v8::internal::compiler::MemoryAccessKind, v8::internal::MachineRepresentation, unsigned char)",93957344496304,93957344504473],["v8::internal::compiler::MachineOperatorBuilder::StackSlot(int, int)",93957344504672,93957344504855],["v8::internal::compiler::MachineOperatorBuilder::StackSlot(v8::internal::MachineRepresentation, int)",93957344505040,93957344505391],["v8::internal::compiler::MachineOperatorBuilder::ProtectedStore(v8::internal::MachineRepresentation)",93957344506480,93957344506664],["v8::internal::compiler::MachineOperatorBuilder::StackPointerGreaterThan(v8::internal::compiler::StackCheckKind)",93957344506688,93957344506773],["v8::internal::compiler::MachineOperatorBuilder::BitcastTaggedToWord()",93957344506800,93957344506815],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicLoad(v8::internal::MachineType)",93957344506832,93957344506963],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicExchange(v8::internal::MachineType)",93957344507056,93957344507187],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicAdd(v8::internal::MachineType)",93957344507344,93957344507475],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicAnd(v8::internal::MachineType)",93957344507632,93957344507763],["v8::internal::compiler::MachineOperatorBuilder::Word32AtomicXor(v8::internal::MachineType)",93957344507920,93957344508051],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicStore(v8::internal::MachineRepresentation)",93957344508192,93957344508284],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicSub(v8::internal::MachineType)",93957344508416,93957344508531],["v8::internal::compiler::MachineOperatorBuilder::Word64AtomicOr(v8::internal::MachineType)",93957344508672,93957344508787],["v8::internal::compiler::Scheduler::FuseFloatingControl(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344763680,93957344766561],["v8::internal::compiler::Scheduler::MovePlannedNodes(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344768224,93957344768466],["v8::internal::compiler::CFGBuilder::ConnectBlocks(v8::internal::compiler::Node*)",93957344769248,93957344769565],["v8::internal::compiler::CFGBuilder::FixNode(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344770032,93957344770075],["v8::internal::compiler::CFGBuilder::BuildBlocksForSuccessors(v8::internal::compiler::Node*)",93957344770224,93957344770367],["v8::internal::compiler::CFGBuilder::ConnectBranch(v8::internal::compiler::Node*)",93957344770768,93957344771769],["v8::internal::compiler::CFGBuilder::ConnectDeoptimize(v8::internal::compiler::Node*)",93957344772544,93957344772752],["v8::internal::compiler::CFGBuilder::ConnectReturn(v8::internal::compiler::Node*)",93957344772960,93957344773168],["v8::internal::compiler::CFGBuilder::ConnectCall(v8::internal::compiler::Node*)",93957344773376,93957344773827],["v8::internal::compiler::SpecialRPONumberer::ComputeAndInsertSpecialRPO(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957344774032,93957344776906],["std::__1::vector<v8::internal::compiler::SpecialRPONumberer::SpecialRPOStackFrame, v8::internal::ZoneAllocator<v8::internal::compiler::SpecialRPONumberer::SpecialRPOStackFrame> >::__append(unsigned long)",93957344777760,93957344778075],["v8::internal::BitVector* v8::internal::Zone::New<v8::internal::BitVector, int, v8::internal::Zone*&>(int&&, v8::internal::Zone*&)",93957344778512,93957344778775],["v8::internal::compiler::ScheduleEarlyNodeVisitor::PropagateMinimumPositionToNode(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344779568,93957344779979],["v8::internal::compiler::ScheduleLateNodeVisitor::VisitNode(v8::internal::compiler::Node*)",93957344780640,93957344781535],["v8::internal::compiler::ScheduleLateNodeVisitor::SplitNode(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344781728,93957344784042],["v8::internal::compiler::ScheduleLateNodeVisitor::ScheduleNode(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*)",93957344784336,93957344785154],["v8::internal::compiler::ScheduleLateNodeVisitor::CloneNode(v8::internal::compiler::Node*)",93957344785792,93957344786196],["v8::internal::compiler::SelectLowering::SelectLowering(v8::internal::compiler::JSGraphAssembler*, v8::internal::compiler::Graph*)",93957344786720,93957344786748],["v8::internal::compiler::SelectLowering::LowerSelect(v8::internal::compiler::Node*)",93957344786784,93957344787049],["v8::internal::compiler::RunSerializerForBackgroundCompilation(v8::internal::compiler::ZoneStats*, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::CompilationDependencies*, v8::internal::Handle<v8::internal::JSFunction>, v8::base::Flags<v8::internal::compiler::SerializerForBackgroundCompilationFlag, int>, v8::internal::BytecodeOffset)",93957344787072,93957344787688],["v8::internal::compiler::VirtualClosure::VirtualClosure(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Isolate*, v8::internal::Zone*)",93957344791184,93957344791562],["v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualBoundFunction, std::__1::equal_to<v8::internal::compiler::VirtualBoundFunction> >::operator==(v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualBoundFunction, std::__1::equal_to<v8::internal::compiler::VirtualBoundFunction> > const&) const",93957344792432,93957344792891],["v8::internal::compiler::Hints::AddMap(v8::internal::Handle<v8::internal::Map>, v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*, bool)",93957344793712,93957344794518],["v8::internal::compiler::Hints::AddVirtualClosure(v8::internal::compiler::VirtualClosure const&, v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*)",93957344795376,93957344796262],["v8::internal::compiler::FunctionalSet<v8::internal::compiler::VirtualBoundFunction, std::__1::equal_to<v8::internal::compiler::VirtualBoundFunction> >::Add(v8::internal::compiler::VirtualBoundFunction const&, v8::internal::Zone*)",93957344796992,93957344797673],["v8::internal::compiler::Hints::Union(v8::internal::compiler::Hints const&)",93957344798416,93957344799937],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::VirtualContext const&)",93957344801840,93957344802032],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Hints const&)",93957344802464,93957344803387],["v8::internal::compiler::SerializerForBackgroundCompilation::Environment::Environment(v8::internal::Zone*, v8::internal::Isolate*, v8::internal::compiler::CompilationSubject)",93957344803728,93957344804111],["v8::internal::compiler::SerializerForBackgroundCompilation::Environment::Merge(v8::internal::compiler::SerializerForBackgroundCompilation::Environment*, v8::internal::Zone*, v8::internal::compiler::JSHeapBroker*)",93957344804640,93957344804999],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::SerializerForBackgroundCompilation::Environment const&)",93957344805856,93957344807034],["v8::internal::compiler::SerializerForBackgroundCompilation::zone()",93957344808640,93957344808693],["v8::internal::ZoneVector<v8::internal::compiler::Hints>::ZoneVector(v8::internal::ZoneVector<v8::internal::compiler::Hints> const&)",93957344810640,93957344811124],["v8::internal::compiler::HandlerRangeMatcher::HandlerRangeMatcher(v8::internal::interpreter::BytecodeArrayIterator const&, v8::internal::Handle<v8::internal::BytecodeArray>)",93957344820528,93957344820726],["v8::internal::compiler::HandlerRangeMatcher::HandlerOffsetForCurrentPosition(std::__1::function<void (int)> const&)",93957344821264,93957344822021],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCallJSRuntime(v8::internal::interpreter::BytecodeArrayIterator*)",93957344822688,93957344822954],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCallProperty2(v8::internal::interpreter::BytecodeArrayIterator*)",93957344823504,93957344824195],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCallUndefinedReceiver1(v8::internal::interpreter::BytecodeArrayIterator*)",93957344824640,93957344825120],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitConstruct(v8::internal::interpreter::BytecodeArrayIterator*)",93957344825744,93957344826063],["v8::internal::compiler::SerializerForBackgroundCompilation::VisitCreateArrayLiteral(v8::internal::interpreter::BytecodeArrayIterator*)",93957344826400,93957344826592],["frexp",139871563501088,139871563501236],["setjmp",139871563503920,139871563503930],["killpg",139871563504928,139871563504964],["sigpending",139871563505840,139871563505882],["sigblock",139871563506176,139871563506294],["__sigpause",139871563506432,139871563506589],["__xpg_sigpause",139871563506688,139871563506812],["sigstack",139871563507088,139871563507258],["getlogin",139871564524832,139871564524889],["getutent_r",139871564526256,139871564526426],["getutid",139871564526720,139871564526841],["getutid_r",139871564526976,139871564527201],["crealf128",139871565639296,139871565639303],["ctanf128",139871565657456,139871565659021],["cpowf128",139871565666800,139871565667210],["fmaxf128",139871565669424,139871565669634],["__iseqsigf128",139871565669888,139871565670014],["ilogbf128",139871565670080,139871565670139],["log1pf128",139871565670240,139871565670361],["fmaxmagf128",139871565670656,139871565670948],["v8::D8Console::Warn(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335206736,93957335206770],["v8::D8Console::Time(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335206880,93957335207392],["v8::(anonymous namespace)::ArrayBufferAllocatorBase::~ArrayBufferAllocatorBase()",93957335302272,93957335302315],["void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957335302560,93957335302969],["std::__1::__tree<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, std::__1::__map_value_compare<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, std::__1::less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> >, true>, std::__1::allocator<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, void*>*)",93957335303488,93957335303576],["std::__1::__hash_table<std::__1::__hash_value_type<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__unordered_map_hasher<v8::Global<v8::Module>, std::__1::__hash_value_type<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, v8::(anonymous namespace)::ModuleEmbedderData::ModuleGlobalHash, std::__1::equal_to<v8::Global<v8::Module> >, false>, std::__1::__unordered_map_equal<v8::Global<v8::Module>, std::__1::__hash_value_type<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<v8::Global<v8::Module> >, v8::(anonymous namespace)::ModuleEmbedderData::ModuleGlobalHash, true>, std::__1::allocator<std::__1::__hash_value_type<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::__rehash(unsigned long)",93957335303968,93957335304735],["void v8::internal::BodyDescriptorBase::IterateJSObjectBodyImpl<v8::internal::ConcurrentMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, int, v8::internal::ConcurrentMarkingVisitor*)",93957336813120,93957336814034],["cppgc::internal::StatsCollector::GetScopeName(cppgc::internal::StatsCollector::ScopeId, cppgc::internal::MarkerBase::MarkingConfig::CollectionType)",93957336817152,93957336817812],["v8::internal::CppGraphBuilderImpl::Run()",93957336819680,93957336820212],["v8::internal::StateBase::FollowDependencies()",93957336821264,93957336821773],["v8::internal::VisiblityVisitor::Visit(void const*, cppgc::TraceDescriptor)",93957336822208,93957336822236],["v8::internal::VisiblityVisitor::Visit(v8::TracedReferenceBase const&)",93957336822288,93957336822358],["void std::__1::vector<std::__1::unique_ptr<char const, std::__1::default_delete<char const> >, std::__1::allocator<std::__1::unique_ptr<char const, std::__1::default_delete<char const> > > >::__push_back_slow_path<std::__1::unique_ptr<char const, std::__1::default_delete<char const> > >(std::__1::unique_ptr<char const, std::__1::default_delete<char const> >&&)",93957336822384,93957336823126],["v8::internal::GraphBuildingVisitor::VisitRoot(void const*, cppgc::TraceDescriptor, cppgc::SourceLocation const&)",93957336823168,93957336823199],["v8::internal::Factory::NewUninitializedFixedArray(int)",93957336853136,93957336853206],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::AllocateInternalizedStringImpl<false, v8::internal::Handle<v8::internal::String> >(v8::internal::Handle<v8::internal::String>, int, unsigned int)",93957336856960,93957336857149],["v8::internal::Factory::NewScriptContext(v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::ScopeInfo>)",93957336861440,93957336862010],["v8::internal::Factory::NewBuiltinContext(v8::internal::Handle<v8::internal::NativeContext>, int)",93957336865712,93957336866169],["v8::internal::Factory::NewCallbackTask(v8::internal::Handle<v8::internal::Foreign>, v8::internal::Handle<v8::internal::Foreign>)",93957336867696,93957336868026],["v8::internal::Factory::CopyFixedArrayAndGrow(v8::internal::Handle<v8::internal::FixedArray>, int)",93957336869360,93957336869372],["v8::internal::Factory::NewOneClosureCell(v8::internal::Handle<v8::internal::HeapObject>)",93957336869952,93957336870227],["v8::internal::Factory::NewAllocationSite(bool)",93957336871024,93957336871412],["v8::internal::Factory::CopyJSObjectWithAllocationSite(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::AllocationSite>)",93957336872272,93957336875009],["v8::internal::Factory::CopyFixedArray(v8::internal::Handle<v8::internal::FixedArray>)",93957336875520,93957336875666],["v8::internal::Factory::CopyFixedArrayWithMap(v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::Map>)",93957336875936,93957336875946],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::Factory::CopyArrayAndGrow<v8::internal::FixedArray>(v8::internal::Handle<v8::internal::FixedArray>, int, v8::internal::AllocationType)",93957336876208,93957336876505],["v8::internal::Factory::CopyWeakFixedArrayAndGrow(v8::internal::Handle<v8::internal::WeakFixedArray>, int)",93957336876688,93957336876703],["v8::internal::Factory::CopyWeakArrayListAndGrow(v8::internal::Handle<v8::internal::WeakArrayList>, int, v8::internal::AllocationType)",93957336877008,93957336877310],["v8::internal::Factory::CopyPropertyArrayAndGrow(v8::internal::Handle<v8::internal::PropertyArray>, int)",93957336877920,93957336877932],["v8::internal::Factory::CopyFixedArrayUpTo(v8::internal::Handle<v8::internal::FixedArray>, int, v8::internal::AllocationType)",93957336878240,93957336878474],["v8::internal::Heap::AddRetainedMap(v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::Map>)",93957337033456,93957337033823],["v8::internal::Heap::UpdateStrongRoots(v8::internal::StrongRootsEntry*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337035664,93957337035677],["v8::internal::Heap::EnqueueDirtyJSFinalizationRegistry(v8::internal::JSFinalizationRegistry, std::__1::function<void (v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::Object)>)",93957337036016,93957337036401],["v8::internal::Heap::NumberOfNativeContexts()",93957337037056,93957337037126],["v8::internal::Heap::CreateObjectStats()",93957337037616,93957337037778],["v8::internal::Heap::EphemeronKeyWriteBarrierFromCode(unsigned long, unsigned long, v8::internal::Isolate*)",93957337038096,93957337038461],["v8::internal::StrongRootBlockAllocator::allocate(unsigned long)",93957337038496,93957337038675],["v8::internal::ObjectVisitor::VisitCustomWeakPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337038832,93957337038846],["v8::internal::ToSpaceUpdatingItem<v8::internal::MinorNonAtomicMarkingState>::Process()",93957337358496,93957337358522],["void v8::internal::SmallOrderedHashTable<v8::internal::SmallOrderedHashMap>::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337370640,93957337371000],["v8::internal::YoungGenerationMarkingJob::~YoungGenerationMarkingJob()",93957337376352,93957337376432],["unsigned long v8::internal::SlotSet::Iterate<v8::internal::PageMarkingItem::MarkUntypedPointers(v8::internal::YoungGenerationMarkingTask*)::{lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::Iterate<{lambda(v8::internal::CompressedMaybeObjectSlot)#2}>(unsigned long, unsigned long, unsigned long, {lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::EmptyBucketMode)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, unsigned long, v8::internal::SlotSet::Iterate, v8::internal::SlotSet::Iterate<{lambda(v8::internal::CompressedMaybeObjectSlot)#2}>(unsigned long, unsigned long, unsigned long, {lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::EmptyBucketMode)::{lambda(unsigned long)#1})",93957337390240,93957337391200],["v8::internal::(anonymous namespace)::YoungGenerationEvacuator::GetBackgroundTracingScope()",93957337404368,93957337404379],["v8::internal::YoungGenerationRecordMigratedSlotVisitor::RecordMigratedSlot(v8::internal::HeapObject, v8::internal::MaybeObject, unsigned long)",93957337404976,93957337405388],["v8::internal::MarkingBarrier::MarkingBarrier(v8::internal::Heap*)",93957337408752,93957337408847],["v8::internal::MarkingBarrier::Write(v8::internal::HeapObject, v8::internal::CompressedHeapObjectSlot, v8::internal::HeapObject)",93957337409216,93957337409500],["v8::internal::MarkingBarrier::Write(v8::internal::JSArrayBuffer, v8::internal::ArrayBufferExtension*)",93957337409776,93957337409785],["v8::internal::MarkingBarrier::ActivateAll(v8::internal::Heap*, bool)",93957337409840,93957337409914],["v8::internal::MarkingBarrier::DeactivateAll(v8::internal::Heap*)",93957337410304,93957337410377],["v8::internal::MarkingBarrier::PublishAll(v8::internal::Heap*)",93957337410752,93957337410825],["v8::internal::MarkingWorklists::~MarkingWorklists()",93957337411440,93957337411702],["v8::internal::MarkingWorklists::ReleaseContextWorklists()",93957337412288,93957337412427],["std::__1::vector<std::__1::unique_ptr<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>, std::__1::default_delete<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64> > >, std::__1::allocator<std::__1::unique_ptr<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>, std::__1::default_delete<heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64> > > > >::reserve(unsigned long)",93957337413136,93957337413829],["v8::internal::MarkingWorklists::Local::~Local()",93957337414432,93957337414598],["v8::internal::RegExpBytecodeGenerator::IfRegisterLT(int, int, v8::internal::Label*)",93957339761856,93957339762112],["v8::internal::RegExpCharacterClass::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339784960,93957339790494],["v8::internal::RegExpQuantifier::ToNode(int, int, bool, v8::internal::RegExpTree*, v8::internal::RegExpCompiler*, v8::internal::RegExpNode*, bool)",93957339797536,93957339799906],["v8::internal::RegExpLookaround::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339804496,93957339804915],["v8::internal::CharacterRange::Canonicalize(v8::internal::ZoneList<v8::internal::CharacterRange>*)",93957339810400,93957339811640],["v8::internal::(anonymous namespace)::AssertionSequenceRewriter::Rewrite(int, int)",93957339812784,93957339813634],["void std::__1::__inplace_merge<v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)::{lambda(v8::internal::RegExpTree* const&, v8::internal::RegExpTree* const&)#1}&, v8::internal::RegExpTree**>(v8::internal::RegExpTree**, v8::internal::RegExpTree**, v8::internal::RegExpTree**, v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)::{lambda(v8::internal::RegExpTree* const&, v8::internal::RegExpTree* const&)#1}&, std::__1::iterator_traits<v8::internal::RegExpTree**>::difference_type, std::__1::iterator_traits<v8::internal::RegExpTree**>, std::__1::iterator_traits::value_type*, long)",93957339816400,93957339818359],["v8::internal::RegExpText::AddElement(v8::internal::TextElement, v8::internal::Zone*)",93957339820352,93957339820626],["v8::internal::TextElement::CharClass(v8::internal::RegExpCharacterClass*)",93957339820688,93957339820707],["v8::internal::RegExpCompiler::RegExpCompiler(v8::internal::Isolate*, v8::internal::Zone*, int, bool)",93957339820832,93957339821031],["v8::internal::RegExpCompiler::Assemble(v8::internal::Isolate*, v8::internal::RegExpMacroAssembler*, v8::internal::RegExpNode*, int, v8::internal::Handle<v8::internal::String>)",93957339822240,93957339822677],["v8::internal::DynamicBitSet::Set(unsigned int, v8::internal::Zone*)",93957339823328,93957339823711],["v8::internal::Trace::PerformDeferredActions(v8::internal::RegExpMacroAssembler*, int, v8::internal::DynamicBitSet const&, v8::internal::DynamicBitSet*, v8::internal::DynamicBitSet*, v8::internal::Zone*)",93957339824096,93957339824745],["v8::internal::NegativeSubmatchSuccess::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*)",93957339826096,93957339826204],["v8::internal::GuardedAlternative::AddGuard(v8::internal::Guard*, v8::internal::Zone*)",93957339826416,93957339826721],["v8::internal::ActionNode::IncrementRegister(int, v8::internal::RegExpNode*)",93957339826864,93957339826975],["v8_inspector::V8DebuggerAgentImpl::removeBreakpointFor(v8::Local<v8::Function>, v8_inspector::V8DebuggerAgentImpl::BreakpointSource)",93957342517696,93957342517874],["v8_inspector::V8DebuggerId::V8DebuggerId(v8_inspector::String16 const&)",93957342522960,93957342523213],["v8_inspector::V8DebuggerScript::setSourceURL(v8_inspector::String16 const&)",93957342524752,93957342524812],["v8_inspector::(anonymous namespace)::ActualScript::~ActualScript()",93957342526144,93957342526338],["v8_inspector::(anonymous namespace)::ActualScript::source(unsigned long, unsigned long) const",93957342526576,93957342526807],["v8_inspector::(anonymous namespace)::ActualScript::hash() const",93957342526832,93957342528011],["v8_inspector::(anonymous namespace)::ActualScript::startColumn() const",93957342528032,93957342528044],["v8_inspector::(anonymous namespace)::ActualScript::endColumn() const",93957342528064,93957342528076],["v8_inspector::V8RuntimeAgentImpl::runScript(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, std::__1::unique_ptr<v8_inspector::protocol::Runtime::Backend::RunScriptCallback, std::__1::default_delete<v8_inspector::protocol::Runtime::Backend::RunScriptCallback> >)",93957342632352,93957342634194],["void std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >::__push_back_slow_path<v8_inspector::String16>(v8_inspector::String16&&)",93957342643792,93957342644179],["v8_inspector::V8StackTraceId::IsInvalid() const",93957342647120,93957342647133],["v8_inspector::V8StackTraceImpl::~V8StackTraceImpl()",93957342650112,93957342650262],["v8_inspector::V8StackTraceImpl::topSourceURL() const",93957342651440,93957342651475],["v8_inspector::V8StackTraceImpl::topScriptIdAsInteger() const",93957342651600,93957342651616],["v8_inspector::(anonymous namespace)::buildInspectorObjectCommon(v8_inspector::V8Debugger*, std::__1::vector<std::__1::shared_ptr<v8_inspector::StackFrame>, std::__1::allocator<std::__1::shared_ptr<v8_inspector::StackFrame> > > const&, v8_inspector::String16 const&, std::__1::shared_ptr<v8_inspector::AsyncStackTrace> const&, v8_inspector::V8StackTraceId const&, int)",93957342652064,93957342653564],["v8_inspector::V8StackTraceImpl::isEqualIgnoringTopFrame(v8_inspector::V8StackTraceImpl*) const",93957342655120,93957342655453],["v8_inspector::AsyncStackTrace::AsyncStackTrace(int, v8_inspector::String16 const&, std::__1::vector<std::__1::shared_ptr<v8_inspector::StackFrame>, std::__1::allocator<std::__1::shared_ptr<v8_inspector::StackFrame> > >, std::__1::shared_ptr<v8_inspector::AsyncStackTrace>, v8_inspector::V8StackTraceId const&)",93957342656672,93957342657541],["v8_inspector::AsyncStackTrace::store(v8_inspector::V8Debugger*, std::__1::shared_ptr<v8_inspector::AsyncStackTrace>)",93957342657728,93957342657843],["std::__1::__shared_ptr_pointer<v8_inspector::AsyncStackTrace*, std::__1::shared_ptr<v8_inspector::AsyncStackTrace>::__shared_ptr_default_delete<v8_inspector::AsyncStackTrace, v8_inspector::AsyncStackTrace>, std::__1::allocator<v8_inspector::AsyncStackTrace> >::__on_zero_shared()",93957342658512,93957342658686],["v8_inspector::createDataProperty(v8::Local<v8::Context>, v8::Local<v8::Array>, int, v8::Local<v8::Value>)",93957342658848,93957342659008],["v8_inspector::(anonymous namespace)::v8InternalValueTypeFrom(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957342664288,93957342664392],["v8_inspector::(anonymous namespace)::doesAttributeHaveObservableSideEffectOnGet(v8::Local<v8::Context>, v8::Local<v8::Object>, v8::Local<v8::Name>)",93957342668096,93957342668611],["v8_inspector::ValueMirror::getInternalProperties(v8::Local<v8::Context>, v8::Local<v8::Object>, std::__1::vector<v8_inspector::InternalPropertyMirror, std::__1::allocator<v8_inspector::InternalPropertyMirror> >*)",93957342669232,93957342670955],["v8_inspector::descriptionForNode(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957342671984,93957342674149],["v8::internal::compiler::AccessBuilder::ForOrderedHashMapOrSetNextTable()",93957342831744,93957342831808],["v8::internal::compiler::AccessInfoFactory::ComputeElementAccessInfo(v8::internal::Handle<v8::internal::Map>, v8::internal::compiler::AccessMode) const",93957342839184,93957342839580],["v8::internal::compiler::AccessInfoFactory::FinalizePropertyAccessInfosAsOne(v8::internal::ZoneVector<v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::AccessMode) const",93957342855920,93957342856822],["void std::__1::vector<v8::internal::compiler::PropertyAccessInfo, v8::internal::ZoneAllocator<v8::internal::compiler::PropertyAccessInfo> >::__push_back_slow_path<v8::internal::compiler::PropertyAccessInfo const&>(v8::internal::compiler::PropertyAccessInfo const&)",93957342861280,93957342861846],["std::__1::vector<bool, v8::internal::ZoneAllocator<bool> >::resize(unsigned long, bool)",93957342862784,93957342863211],["v8::internal::compiler::AllNodes::AllNodes(v8::internal::Zone*, v8::internal::compiler::Node*, v8::internal::compiler::Graph const*, bool)",93957342866144,93957342866410],["v8::internal::compiler::CodeGenerator::ShouldApplyOffsetToStackCheck(v8::internal::compiler::Instruction*, unsigned int*)",93957342868288,93957342868363],["v8::internal::compiler::CodeGenerator::AssembleCode()",93957342869328,93957342872533],["std::__1::vector<int, v8::internal::ZoneAllocator<int> >::assign(unsigned long, int const&)",93957342873616,93957342874789],["v8::internal::compiler::CodeGenerator::TryInsertBranchPoisoning(v8::internal::compiler::InstructionBlock const*)",93957342875488,93957342875727],["v8::internal::compiler::CodeGenerator::AssembleArchBinarySearchSwitchRange(v8::internal::Register, v8::internal::compiler::RpoNumber, std::__1::pair<int, v8::internal::Label*>*, std::__1::pair<int, v8::internal::Label*>*)",93957342876320,93957342876628],["v8::internal::compiler::CodeGenerator::GetProtectedInstructionsData()",93957342876672,93957342876748],["v8::internal::compiler::CodeGenerator::GenerateDeoptimizationData()",93957342877312,93957342878616],["v8::internal::compiler::CodeGenerator::RecordSafepoint(v8::internal::compiler::ReferenceMap*)",93957342878704,93957342878868],["v8::internal::compiler::CodeGenerator::AssembleInstruction(int, v8::internal::compiler::InstructionBlock const*)",93957342878960,93957342880040],["v8::internal::compiler::CodeGenerator::MoveType::InferMove(v8::internal::compiler::InstructionOperand*, v8::internal::compiler::InstructionOperand*)",93957342880768,93957342880875],["v8::internal::compiler::MachineOperatorBuilder::F64x2ConvertLowI32x4S()",93957344481760,93957344481775],["v8::internal::compiler::MachineOperatorBuilder::I64x2ShrU()",93957344482528,93957344482543],["v8::internal::compiler::MachineOperatorBuilder::I32x4ShrU()",93957344482912,93957344482927],["v8::internal::compiler::MachineOperatorBuilder::I16x8Splat()",93957344483168,93957344483183],["v8::internal::compiler::MachineOperatorBuilder::I16x8MinS()",93957344483360,93957344483375],["v8::internal::compiler::MachineOperatorBuilder::I16x8ShrU()",93957344483488,93957344483503],["v8::internal::compiler::MachineOperatorBuilder::I16x8RoundingAverageU()",93957344483616,93957344483631],["v8::internal::compiler::MachineOperatorBuilder::I16x8ExtAddPairwiseI8x16S()",93957344483744,93957344483759],["v8::internal::compiler::MachineOperatorBuilder::I8x16SConvertI16x8()",93957344483840,93957344483855],["v8::internal::compiler::MachineOperatorBuilder::I8x16SubSatS()",93957344483904,93957344483919],["v8::internal::compiler::MachineOperatorBuilder::I8x16Ne()",93957344483968,93957344483983],["v8::internal::compiler::MachineOperatorBuilder::I8x16UConvertI16x8()",93957344484032,93957344484047],["v8::internal::compiler::MachineOperatorBuilder::I8x16MaxU()",93957344484096,93957344484111],["v8::internal::compiler::MachineOperatorBuilder::I8x16Popcnt()",93957344484160,93957344484175],["v8::internal::compiler::MachineOperatorBuilder::S128And()",93957344484224,93957344484239],["v8::internal::compiler::MachineOperatorBuilder::S128Select()",93957344484288,93957344484303],["v8::internal::compiler::MachineOperatorBuilder::I64x2AllTrue()",93957344484336,93957344484351],["v8::internal::compiler::MachineOperatorBuilder::I16x8AllTrue()",93957344484368,93957344484383],["v8::internal::compiler::MachineOperatorBuilder::I8x16Swizzle()",93957344484400,93957344484415],["v8::internal::compiler::MachineOperatorBuilder::Word64Sar(v8::internal::compiler::ShiftKind)",93957344484448,93957344484477],["v8::internal::compiler::MachineOperatorBuilder::TruncateFloat64ToInt64(v8::internal::compiler::TruncateKind)",93957344484512,93957344484541],["v8::internal::compiler::MachineOperatorBuilder::Word32Ctz()",93957344484576,93957344484599],["v8::internal::compiler::MachineOperatorBuilder::Word32Rol()",93957344484640,93957344484663],["v8::internal::compiler::MachineOperatorBuilder::Word32ReverseBits()",93957344484704,93957344484724],["v8::internal::compiler::MachineOperatorBuilder::Word32Popcnt()",93957344484768,93957344484791],["v8::internal::compiler::MachineOperatorBuilder::Float32RoundDown()",93957344484832,93957344484852],["v8::internal::compiler::MachineOperatorBuilder::Float32RoundUp()",93957344484896,93957344484919],["v8::internal::compiler::MachineOperatorBuilder::Float32RoundTruncate()",93957344484960,93957344484983],["v8::internal::compiler::MachineOperatorBuilder::Float32RoundTiesEven()",93957344485024,93957344485047],["v8::internal::compiler::MachineOperatorBuilder::Int32AddWithOverflow()",93957344485088,93957344485103],["v8::internal::compiler::MachineOperatorBuilder::Int32MulWithOverflow()",93957344485120,93957344485135],["v8::internal::compiler::MachineOperatorBuilder::LoadImmutable(v8::internal::MachineType)",93957344485536,93957344485926],["frexpl",139871563500160,139871563500303],["__isnanf",139871563501440,139871563501461],["ldexpf",139871563502064,139871563502181],["__libc_siglongjmp",139871563503952,139871563504017],["gsignal",139871563504544,139871563504921],["__sigaction",139871563505488,139871563505532],["kill",139871563505792,139871563505825],["__sigsuspend",139871563505888,139871563506043],["xdr_sizeof",139871564507232,139871564507473],["setlogin",139871564525936,139871564525956],["setutent",139871564526112,139871564526250],["pututline",139871564526432,139871564526570],["roundevenf128",139871565636048,139871565636423],["ccosf128",139871565641040,139871565641161],["catanhf128",139871565652624,139871565654749],["cexpf128",139871565660688,139871565662451],["csqrtf128",139871565664512,139871565666798],["clog10f128",139871565667216,139871565669071],["nextdownf128",139871565669392,139871565669422],["fminf128",139871565669648,139871565669858],["v8::D8Console::Log(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335206656,93957335206685],["v8::D8Console::Info(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335206784,93957335206818],["v8::Serializer::~Serializer()",93957335297184,93957335297590],["v8::Worker::WorkerThread::~WorkerThread()",93957335302336,93957335302412],["v8::SourceGroup::IsolateThread::Run()",93957335302544,93957335302558],["std::__1::__deque_base<v8::AsyncContext, std::__1::allocator<v8::AsyncContext> >::~__deque_base()",93957335302976,93957335303183],["void v8::internal::MarkingVisitorBase<v8::internal::ConcurrentMarkingVisitor, v8::internal::ConcurrentMarkingState>::ProcessStrongHeapObject<v8::internal::CompressedHeapObjectSlot>(v8::internal::HeapObject, v8::internal::CompressedHeapObjectSlot, v8::internal::HeapObject)",93957336809760,93957336810040],["void v8::internal::PrototypeInfo::BodyDescriptor::IterateBody<v8::internal::ConcurrentMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ConcurrentMarkingVisitor*)",93957336814944,93957336815237],["v8::internal::CppHeap::DetachIsolate()",93957336816752,93957336816869],["v8::internal::CppGraphBuilderImpl::VisitForVisibility(v8::internal::State*, cppgc::internal::HeapObjectHeader const&)",93957336818128,93957336818497],["v8::internal::CppGraphBuilderImpl::AddRootEdge(v8::internal::RootState&, v8::internal::State&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957336819072,93957336819668],["v8::internal::StateStorage::CreateRootState(v8::internal::EmbedderRootNode*)",93957336820224,93957336820520],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::__unordered_map_hasher<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::hash<v8::internal::wasm::WasmCode const*>, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, std::__1::hash<v8::internal::wasm::WasmCode const*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > > > >::__node_insert_unique(std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, void*>*)",93957336820848,93957336821254],["v8::internal::CppGraphBuilderImpl::VisitationItem::Process(v8::internal::CppGraphBuilderImpl&)",93957336821776,93957336822019],["v8::internal::Factory::NewOrderedHashSet()",93957336854000,93957336854044],["v8::internal::Factory::NewStringFromTwoByte(unsigned short const*, int, v8::internal::AllocationType)",93957336855136,93957336855534],["v8::internal::Factory::NewInvalidStringLengthError()",93957336858912,93957336859132],["v8::internal::Factory::NewNativeContext()",93957336860144,93957336861238],["v8::internal::Factory::NewModuleContext(v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::ScopeInfo>)",93957336862064,93957336862747],["v8::internal::Factory::NewWithContext(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::ScopeInfo>, v8::internal::Handle<v8::internal::JSReceiver>)",93957336864688,93957336865244],["v8::internal::Factory::NewAccessorInfo()",93957336866304,93957336866451],["v8::internal::Factory::NewCallableTask(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Context>)",93957336867360,93957336867690],["v8::internal::Factory::NewPromiseResolveThenableJobTask(v8::internal::Handle<v8::internal::JSPromise>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Context>)",93957336868032,93957336868577],["v8::internal::Factory::NewWasmTypeInfo(unsigned long, v8::internal::Handle<v8::internal::Map>)",93957336868720,93957336869354],["v8::internal::Factory::NewSharedFunctionInfoForWasmJSFunction(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::WasmJSFunctionData>)",93957336869376,93957336869394],["v8::internal::Factory::NewNoClosuresCell(v8::internal::Handle<v8::internal::HeapObject>)",93957336869664,93957336869939],["v8::internal::Factory::NewPropertyCell(v8::internal::Handle<v8::internal::Name>, v8::internal::PropertyDetails, v8::internal::Handle<v8::internal::Object>, v8::internal::AllocationType)",93957336870240,93957336870620],["v8::internal::Factory::NewTransitionArray(int, int)",93957336870752,93957336871010],["v8::internal::Factory::InitializeMap(v8::internal::Map, v8::internal::InstanceType, int, v8::internal::ElementsKind, int)",93957336871424,93957336872245],["v8::internal::Heap::SetEmbedderHeapTracer(v8::EmbedderHeapTracer*)",93957337029392,93957337029409],["v8::internal::SpaceIterator::SpaceIterator(v8::internal::Heap*)",93957337034416,93957337034443],["v8::internal::Heap::YoungArrayBufferBytes()",93957337035504,93957337035521],["v8::internal::Heap::SetBuiltinsConstantsTable(v8::internal::FixedArray)",93957337035792,93957337035805],["v8::internal::Heap::PostFinalizationRegistryCleanupTaskIfNeeded()",93957337035840,93957337036016],["v8::internal::Heap::DequeueDirtyJSFinalizationRegistry()",93957337036416,93957337036837],["v8::internal::Heap::ClearKeptObjects()",93957337037024,93957337037044],["v8::internal::Heap::FindAllRetainedMaps()",93957337037136,93957337037581],["v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateUntypedPointers()",93957337349632,93957337350076],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateCodeTarget<v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::RelocInfo*, v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337363264,93957337363592],["void v8::internal::JSWeakRef::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337368224,93957337368629],["void v8::internal::SwissNameDictionary::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337372432,93957337372792],["void v8::internal::ExportedSubClass::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337375456,93957337376071],["v8::internal::YoungGenerationMarkingJob::Run(v8::JobDelegate*)",93957337376528,93957337377280],["v8::internal::PageMarkingItem::Process(v8::internal::YoungGenerationMarkingTask*)",93957337389344,93957337389897],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::MemoryChunk*, std::__1::unique_ptr<v8::internal::TypedSlots, std::__1::default_delete<v8::internal::TypedSlots> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::MemoryChunk*, std::__1::unique_ptr<v8::internal::TypedSlots, std::__1::default_delete<v8::internal::TypedSlots> > >, std::__1::__unordered_map_hasher<v8::internal::MemoryChunk*, std::__1::__hash_value_type<v8::internal::MemoryChunk*, std::__1::unique_ptr<v8::internal::TypedSlots, std::__1::default_delete<v8::internal::TypedSlots> > >, v8::internal::BasicMemoryChunk::Hasher, std::__1::equal_to<v8::internal::MemoryChunk*>, true>, std::__1::__unordered_map_equal<v8::internal::MemoryChunk*, std::__1::__hash_value_type<v8::internal::MemoryChunk*, std::__1::unique_ptr<v8::internal::TypedSlots, std::__1::default_delete<v8::internal::TypedSlots> > >, std::__1::equal_to<v8::internal::MemoryChunk*>, v8::internal::BasicMemoryChunk::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::MemoryChunk*, std::__1::unique_ptr<v8::internal::TypedSlots, std::__1::default_delete<v8::internal::TypedSlots> > > > >::__emplace_unique_key_args<v8::internal::MemoryChunk*, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::MemoryChunk* const&>, std::__1::tuple<> >(v8::internal::MemoryChunk* const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::MemoryChunk* const&>&&, std::__1::tuple<>&&)",93957337402976,93957337403889],["v8::internal::(anonymous namespace)::YoungGenerationEvacuator::~YoungGenerationEvacuator()",93957337404272,93957337404357],["v8::internal::(anonymous namespace)::YoungGenerationEvacuator::GetTracingScope()",93957337404384,93957337404395],["v8::internal::YoungGenerationRecordMigratedSlotVisitor::MarkArrayBufferExtensionPromoted(v8::internal::HeapObject)",93957337404912,93957337404970],["void v8::internal::LiveObjectVisitor::VisitGreyObjectsNoFail<v8::internal::EvacuateNewSpaceVisitor, v8::internal::MinorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MinorNonAtomicMarkingState*, v8::internal::EvacuateNewSpaceVisitor*, v8::internal::LiveObjectVisitor::IterationMode)",93957337405392,93957337406426],["void v8::internal::LiveObjectVisitor::VisitGreyObjectsNoFail<v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)0>, v8::internal::MinorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MinorNonAtomicMarkingState*, v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)0>*, v8::internal::LiveObjectVisitor::IterationMode)",93957337407712,93957337408746],["v8::internal::MarkingBarrier::MarkingBarrier(v8::internal::LocalHeap*)",93957337408848,93957337408943],["heap::base::Worklist<v8::internal::HeapObject, (unsigned short)16>::Local::~Local()",93957337409072,93957337409215],["v8::internal::MarkingBarrier::Write(v8::internal::Code, v8::internal::RelocInfo*, v8::internal::HeapObject)",93957337409504,93957337409607],["v8::internal::RegExpBytecodeGenerator::CheckGreedyLoop(v8::internal::Label*)",93957339757264,93957339757463],["v8::internal::RegExpBytecodePeepholeOptimization::OptimizeBytecode(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::Handle<v8::internal::String>, unsigned char const*, int, v8::internal::ZoneUnorderedMap<int, int, v8::base::hash<int>, std::__1::equal_to<int> > const&)",93957339764960,93957339776754],["v8::internal::CompareRanges(v8::internal::ZoneList<v8::internal::CharacterRange>*, int const*, int)",93957339784064,93957339784163],["v8::internal::CompareFirstChar(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)",93957339791792,93957339791866],["v8::internal::RegExpDisjunction::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339797024,93957339797462],["v8::internal::(anonymous namespace)::BoundaryAssertionAsLookaround(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*, v8::internal::RegExpAssertion::AssertionType, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957339801584,93957339802804],["v8::internal::RegExpLookaround::Builder::Builder(bool, v8::internal::RegExpNode*, int, int, int, int)",93957339804144,93957339804340],["v8::internal::RegExpCapture::ToNode(v8::internal::RegExpTree*, int, v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339805024,93957339805115],["v8::internal::CharacterRange::AddCaseEquivalents(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::ZoneList<v8::internal::CharacterRange>*, bool)",93957339809632,93957339810400],["v8::internal::CharacterRange::List(v8::internal::Zone*, v8::internal::CharacterRange)",93957339811648,93957339811930],["v8::internal::(anonymous namespace)::MatchAndNegativeLookaroundInReadDirection(v8::internal::RegExpCompiler*, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::RegExpNode*, bool, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957339812352,93957339812775],["v8::internal::TextNode::TextNode(v8::internal::RegExpCharacterClass*, bool, v8::internal::RegExpNode*)",93957339813648,93957339814029],["void std::__1::__stable_sort_move<v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)::{lambda(v8::internal::RegExpTree* const&, v8::internal::RegExpTree* const&)#1}&, v8::internal::RegExpTree**>(v8::internal::RegExpTree**, v8::internal::RegExpTree**, v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)::{lambda(v8::internal::RegExpTree* const&, v8::internal::RegExpTree* const&)#1}&, std::__1::iterator_traits<v8::internal::RegExpTree**>::difference_type, std::__1::iterator_traits::value_type*)",93957339815232,93957339816390],["void std::__1::__buffered_inplace_merge<v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)::{lambda(v8::internal::RegExpTree* const&, v8::internal::RegExpTree* const&)#1}&, v8::internal::RegExpTree**>(v8::internal::RegExpTree**, v8::internal::RegExpTree**, v8::internal::RegExpTree**, v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)::{lambda(v8::internal::RegExpTree* const&, v8::internal::RegExpTree* const&)#1}&, std::__1::iterator_traits<v8::internal::RegExpTree**>::difference_type, std::__1::iterator_traits<v8::internal::RegExpTree**>, std::__1::iterator_traits::value_type*)",93957339818368,93957339819618],["v8::internal::RegExpAtom::AppendToText(v8::internal::RegExpText*, v8::internal::Zone*)",93957339820320,93957339820347],["v8::internal::TextElement::Atom(v8::internal::RegExpAtom*)",93957339820640,93957339820654],["v8_inspector::V8DebuggerAgentImpl::setBlackboxPatterns(std::__1::unique_ptr<std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >, std::__1::default_delete<std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> > > >)",93957342512592,93957342513432],["std::__1::pair<v8_inspector::String16 const, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > >::pair(std::__1::pair<v8_inspector::String16 const, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > > const&)",93957342520016,93957342520722],["v8_inspector::V8DebuggerId::V8DebuggerId(std::__1::pair<long, long>)",93957342522896,93957342522909],["v8_inspector::V8DebuggerId::isValid() const",93957342523520,93957342523544],["v8_inspector::V8DebuggerScript::~V8DebuggerScript()",93957342524656,93957342524745],["v8_inspector::V8DebuggerScript::removeWasmBreakpoint(int)",93957342524816,93957342524893],["v8_inspector::(anonymous namespace)::ActualScript::Initialize(v8::Local<v8::debug::Script>)",93957342525680,93957342526144],["v8_inspector::(anonymous namespace)::ActualScript::~ActualScript()",93957342526352,93957342526549],["v8_inspector::V8RuntimeAgentImpl::~V8RuntimeAgentImpl()",93957342621792,93957342621955],["v8_inspector::V8RuntimeAgentImpl::addBinding(v8_inspector::InspectedContext*, v8_inspector::String16 const&)",93957342637776,93957342638017],["v8_inspector::(anonymous namespace)::EvaluateCallbackWrapper<v8_inspector::protocol::Runtime::Backend::EvaluateCallback>::sendSuccess(std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>)",93957342643584,93957342643648],["void std::__1::__function::__policy_invoker<void (v8_inspector::InspectedContext*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8RuntimeAgentImpl::restore()::$_2, void (v8_inspector::InspectedContext*)> >(std::__1::__function::__policy_storage const*, v8_inspector::InspectedContext*)",93957342646368,93957342646381],["v8_inspector::V8StackTraceId::V8StackTraceId(unsigned long, std::__1::pair<long, long>)",93957342647056,93957342647077],["v8_inspector::StackFrame::buildInspectorObject(v8_inspector::V8InspectorClient*) const",93957342647344,93957342648055],["v8_inspector::(anonymous namespace)::calculateAsyncChain(v8_inspector::V8Debugger*, int, std::__1::shared_ptr<v8_inspector::AsyncStackTrace>*, v8_inspector::V8StackTraceId*, int*)",93957342649216,93957342649673],["v8_inspector::V8StackTraceImpl::clone()",93957342650432,93957342650693],["v8_inspector::V8StackTraceImpl::isEmpty() const",93957342651408,93957342651425],["v8_inspector::V8StackTraceImpl::topLineNumber() const",93957342651488,93957342651507],["v8_inspector::V8StackTraceImpl::topScriptId() const",93957342651552,93957342651587],["v8_inspector::V8StackTraceImpl::topFunctionName() const",93957342651616,93957342651647],["v8_inspector::V8StackTraceImpl::buildInspectorObjectImpl(v8_inspector::V8Debugger*, int) const",93957342651856,93957342652051],["v8_inspector::V8StackTraceImpl::buildInspectorObject() const",93957342653568,93957342653592],["v8_inspector::V8StackTraceImpl::toString() const",93957342653808,93957342655106],["v8_inspector::AsyncStackTrace::parent() const",93957342655456,93957342655481],["v8::internal::compiler::AccessBuilder::ForJSArrayIteratorNextIndex()",93957342830368,93957342830449],["v8::internal::compiler::AccessBuilder::ForFeedbackVectorFlags()",93957342832368,93957342832449],["v8::internal::compiler::PropertyAccessInfo::Merge(v8::internal::compiler::PropertyAccessInfo const*, v8::internal::compiler::AccessMode, v8::internal::Zone*)",93957342835216,93957342835548],["v8::internal::compiler::AccessInfoFactory::ComputeDataFieldAccessInfo(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::compiler::AccessMode) const",93957342842784,93957342846747],["v8::internal::compiler::AccessInfoFactory::LookupSpecialFieldAccessor(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>) const",93957342851760,93957342852278],["v8::internal::compiler::PropertyAccessInfo::PropertyAccessInfo(v8::internal::compiler::PropertyAccessInfo const&)",93957342856912,93957342857919],["v8::internal::compiler::ElementAccessInfo::ElementAccessInfo(v8::internal::compiler::ElementAccessInfo const&)",93957342859600,93957342860545],["v8::internal::compiler::NodeAuxData<bool, &(bool v8::internal::compiler::DefaultConstruct<bool>())>::NodeAuxData(unsigned long, v8::internal::Zone*)",93957342861904,93957342862123],["v8::internal::compiler::AddTypeAssertionsReducer::reducer_name() const",93957342862768,93957342862781],["std::__1::vector<bool, v8::internal::ZoneAllocator<bool> >::reserve(unsigned long)",93957342863216,93957342863532],["v8::internal::compiler::AllNodes::Mark(v8::internal::Zone*, v8::internal::compiler::Node*, v8::internal::compiler::Graph const*)",93957342863808,93957342866136],["v8::internal::compiler::CodeGenerator::CodeGenerator(v8::internal::Zone*, v8::internal::compiler::Frame*, v8::internal::compiler::Linkage*, v8::internal::compiler::InstructionSequence*, v8::internal::OptimizedCompilationInfo*, v8::internal::Isolate*, v8::base::Optional<v8::internal::compiler::OsrHelper>, int, v8::internal::JumpOptimizationInfo*, v8::internal::PoisoningMitigationLevel, v8::internal::AssemblerOptions const&, int, unsigned long, unsigned long, std::__1::unique_ptr<v8::internal::AssemblerBuffer, std::__1::default_delete<v8::internal::AssemblerBuffer> >, char const*)",93957342866416,93957342867506],["v8::internal::compiler::CodeGenerator::AddProtectedInstructionLanding(unsigned int, unsigned int)",93957342867552,93957342868278],["v8::internal::compiler::CodeGenerator::GetStackCheckOffset()",93957342868368,93957342868427],["v8::internal::compiler::CodeGenerator::AssembleDeoptimizerCall(v8::internal::compiler::DeoptimizationExit*)",93957342868976,93957342869325],["v8::internal::compiler::CodeGenerator::AssembleSourcePosition(v8::internal::SourcePosition)",93957342872544,93957342873276],["v8::internal::compiler::MachineOperatorBuilder::Float64InsertLowWord32()",93957344481248,93957344481263],["v8::internal::compiler::MachineOperatorBuilder::F32x4Max()",93957344482016,93957344482031],["v8::internal::compiler::MachineOperatorBuilder::I64x2ShrS()",93957344482400,93957344482415],["v8::internal::compiler::MachineOperatorBuilder::I32x4SConvertI16x8High()",93957344482656,93957344482671],["v8::internal::compiler::MachineOperatorBuilder::I32x4GeS()",93957344482848,93957344482863],["v8::internal::compiler::MachineOperatorBuilder::I32x4GeU()",93957344482976,93957344482991],["v8::internal::compiler::MachineOperatorBuilder::I32x4ExtAddPairwiseI16x8S()",93957344483104,93957344483119],["v8::internal::compiler::MachineOperatorBuilder::I16x8Shl()",93957344483232,93957344483247],["v8::internal::compiler::MachineOperatorBuilder::I16x8SubSatS()",93957344483328,93957344483343],["v8::internal::compiler::MachineOperatorBuilder::I16x8Eq()",93957344483392,93957344483407],["v8::internal::compiler::MachineOperatorBuilder::I16x8UConvertI8x16Low()",93957344483456,93957344483471],["v8::internal::compiler::MachineOperatorBuilder::I16x8AddSatU()",93957344483520,93957344483535],["v8::internal::compiler::MachineOperatorBuilder::I16x8GtU()",93957344483584,93957344483599],["v8::internal::compiler::MachineOperatorBuilder::I16x8Abs()",93957344483648,93957344483663],["v8::internal::compiler::MachineOperatorBuilder::I16x8ExtMulLowI8x16U()",93957344483712,93957344483727],["v8::internal::compiler::MachineOperatorBuilder::I8x16Splat()",93957344483776,93957344483791],["v8::internal::compiler::MachineOperatorBuilder::I8x16ShrS()",93957344483824,93957344483839],["v8::internal::compiler::MachineOperatorBuilder::I8x16Add()",93957344483856,93957344483871],["v8::internal::compiler::MachineOperatorBuilder::I8x16Sub()",93957344483888,93957344483903],["v8::internal::compiler::MachineOperatorBuilder::I8x16MinS()",93957344483920,93957344483935],["v8::internal::compiler::MachineOperatorBuilder::I8x16Eq()",93957344483952,93957344483967],["v8::internal::compiler::MachineOperatorBuilder::I8x16GtS()",93957344483984,93957344483999],["v8::internal::compiler::MachineOperatorBuilder::I8x16ShrU()",93957344484016,93957344484031],["v8::internal::compiler::MachineOperatorBuilder::I8x16AddSatU()",93957344484048,93957344484063],["v8::internal::compiler::MachineOperatorBuilder::I8x16MinU()",93957344484080,93957344484095],["v8::internal::compiler::MachineOperatorBuilder::I8x16GtU()",93957344484112,93957344484127],["v8::internal::compiler::MachineOperatorBuilder::I8x16RoundingAverageU()",93957344484144,93957344484159],["v8::internal::compiler::MachineOperatorBuilder::I8x16Abs()",93957344484176,93957344484191],["v8::internal::compiler::MachineOperatorBuilder::S128Zero()",93957344484208,93957344484223],["v8::internal::compiler::MachineOperatorBuilder::S128Or()",93957344484240,93957344484255],["v8::internal::compiler::MachineOperatorBuilder::S128Not()",93957344484272,93957344484287],["v8::internal::compiler::MachineOperatorBuilder::S128AndNot()",93957344484304,93957344484319],["catgets",139871563497216,139871563497346],["__isnan",139871563500496,139871563500524],["ldexp",139871563501264,139871563501390],["copysignf",139871563501504,139871563501522],["__signbitf",139871563502048,139871563502056],["__sigsetjmp",139871563503776,139871563503863],["_setjmp",139871563503936,139871563503943],["__libc_longjmp",139871563504032,139871563504099],["xdr_uint8_t",139871564505968,139871564506098],["svc_exit",139871564508176,139871564508213],["getlogin_r",139871564525872,139871564525922],["__getlogin_r_chk",139871564525968,139871564525984],["nextupf128",139871565634752,139871565635020],["ufromfpxf128",139871565638512,139871565639205],["cacosf128",139871565639344,139871565640008],["casinf128",139871565643248,139871565643623],["csinhf128",139871565650640,139871565652619],["catanf128",139871565654752,139871565657455],["ctanhf128",139871565659024,139871565660684],["clogf128",139871565662464,139871565664303],["v8::D8Console::Assert(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335206112,93957335206231],["v8::D8Console::Error(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957335206688,93957335206722],["v8::Shell::NotifyStartStreamingTask(v8::Isolate*)",93957335295344,93957335295708],["v8::Shell::Main(int, char**)",93957335297680,93957335302142],["main",93957335302320,93957335302330],["v8::Worker::WorkerThread::~WorkerThread()",93957335302416,93957335302500],["v8::internal::MarkingVisitorBase<v8::internal::ConcurrentMarkingVisitor, v8::internal::ConcurrentMarkingState>::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957336808112,93957336808215],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::MemoryChunk*, v8::internal::MemoryChunkData>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::MemoryChunk*, v8::internal::MemoryChunkData>, std::__1::__unordered_map_hasher<v8::internal::MemoryChunk*, std::__1::__hash_value_type<v8::internal::MemoryChunk*, v8::internal::MemoryChunkData>, v8::internal::BasicMemoryChunk::Hasher, std::__1::equal_to<v8::internal::MemoryChunk*>, true>, std::__1::__unordered_map_equal<v8::internal::MemoryChunk*, std::__1::__hash_value_type<v8::internal::MemoryChunk*, v8::internal::MemoryChunkData>, std::__1::equal_to<v8::internal::MemoryChunk*>, v8::internal::BasicMemoryChunk::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::MemoryChunk*, v8::internal::MemoryChunkData> > >::__emplace_unique_key_args<v8::internal::MemoryChunk*, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::MemoryChunk* const&>, std::__1::tuple<> >(v8::internal::MemoryChunk* const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::MemoryChunk* const&>&&, std::__1::tuple<>&&)",93957336810752,93957336811670],["int v8::internal::ConcurrentMarkingVisitor::VisitJSObjectSubclass<v8::internal::JSTypedArray, v8::internal::JSTypedArray::BodyDescriptor>(v8::internal::Map, v8::internal::JSTypedArray)",93957336814320,93957336814646],["v8::internal::ConcurrentMarkingVisitor::VisitPointersInSnapshot(v8::internal::HeapObject, v8::internal::SlotSnapshot const&)",93957336815472,93957336815854],["v8::internal::ConcurrentMarking::JobTask::GetMaxConcurrency(unsigned long) const",93957336816624,93957336816742],["cppgc::internal::StatsCollector::InternalScope<(cppgc::internal::StatsCollector::TraceCategory)0, (cppgc::internal::StatsCollector::ScopeContext)0>::InternalScope<>(cppgc::internal::StatsCollector*, cppgc::internal::StatsCollector::ScopeId)",93957336816880,93957336817147],["cppgc::internal::StatsCollector::InternalScope<(cppgc::internal::StatsCollector::TraceCategory)0, (cppgc::internal::StatsCollector::ScopeContext)0>::StopTraceImpl()",93957336817824,93957336818126],["v8::internal::StateStorage::GetOrCreateState(cppgc::internal::HeapObjectHeader const&)",93957336818512,93957336818842],["v8::internal::Factory::NewFeedbackVector(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::ClosureFeedbackCellArray>)",93957336853264,93957336853822],["v8::internal::Factory::NewNameDictionary(int)",93957336854096,93957336854110],["v8::internal::Factory::LookupSingleCharacterStringFromCode(unsigned short)",93957336854608,93957336854964],["v8::internal::Factory::NewStringFromTwoByte(v8::internal::Vector<unsigned short const> const&, v8::internal::AllocationType)",93957336856672,93957336856693],["v8::internal::Factory::NewProperSubString(v8::internal::Handle<v8::internal::String>, int, int)",93957336857280,93957336858435],["v8::internal::Factory::NewSymbol(v8::internal::AllocationType)",93957336859264,93957336859408],["v8::internal::Factory::NewContextInternal(v8::internal::Handle<v8::internal::Map>, int, int, v8::internal::AllocationType)",93957336859824,93957336860131],["v8::internal::Factory::NewMap(v8::internal::InstanceType, int, v8::internal::ElementsKind, int)",93957336861248,93957336861429],["v8::internal::Factory::NewScriptContextTable()",93957336862016,93957336862051],["v8::internal::Factory::NewFunctionContext(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::ScopeInfo>)",93957336862752,93957336863314],["v8::internal::Factory::NewDebugEvaluateContext(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::ScopeInfo>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::StringSet>)",93957336863888,93957336864687],["v8::internal::Factory::NewBlockContext(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::ScopeInfo>)",93957336865248,93957336865708],["v8::internal::Factory::NewAliasedArgumentsEntry(int)",93957336866176,93957336866290],["v8::internal::Factory::AddToScriptList(v8::internal::Handle<v8::internal::Script>)",93957336866464,93957336866525],["v8::internal::Heap::SetUp()",93957337025584,93957337026304],["v8::internal::Heap::ExternalStringTable::TearDown()",93957337031280,93957337031800],["v8::internal::Heap::ClearRecordedSlot(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957337034112,93957337034242],["v8::internal::HeapObjectIterator::~HeapObjectIterator()",93957337034896,93957337035001],["v8::internal::Heap::ExternalStringTable::CleanUpAll()",93957337035296,93957337035489],["v8::internal::Heap::RegisterStrongRoots(v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337035536,93957337035655],["v8::internal::Heap::UnregisterStrongRoots(v8::internal::StrongRootsEntry*)",93957337035680,93957337035791],["v8::internal::Heap::SetDetachedContexts(v8::internal::WeakArrayList)",93957337035808,93957337035821],["void v8::internal::WasmTypeInfo::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337346576,93957337346641],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateCodeTarget<v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::SlotType, unsigned long)#2}::operator()(v8::internal::SlotType, unsigned long) const::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::RelocInfo*, v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::SlotType, unsigned long)#2}::operator()(v8::internal::SlotType, unsigned long) const::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337354560,93957337354732],["v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateUntypedPointers()",93957337360368,93957337360812],["void v8::internal::DataHandler::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337364768,93957337365146],["void v8::internal::JSDataView::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337367184,93957337367564],["void v8::internal::NativeContext::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337369264,93957337369644],["void v8::internal::SmallOrderedHashTable<v8::internal::SmallOrderedNameDictionary>::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337371376,93957337371736],["void v8::internal::WasmInstanceObject::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337373488,93957337373799],["void v8::internal::UncompiledDataWithPreparseData::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337374864,93957337375447],["void std::__1::vector<v8::internal::PageMarkingItem, std::__1::allocator<v8::internal::PageMarkingItem> >::__emplace_back_slow_path<v8::internal::MemoryChunk*&>(v8::internal::MemoryChunk*&)",93957337376080,93957337376351],["v8::internal::YoungGenerationMarkingJob::~YoungGenerationMarkingJob()",93957337376432,93957337376515],["v8::internal::YoungGenerationMarkingJob::GetMaxConcurrency(unsigned long) const",93957337377280,93957337377328],["v8::internal::YoungGenerationMarkingTask::EmptyMarkingWorklist()",93957337377984,93957337389343],["v8::internal::PageMarkingItem::MarkUntypedPointers(v8::internal::YoungGenerationMarkingTask*)",93957337389904,93957337390240],["v8::internal::YoungGenerationMarkingTask::MarkObject(v8::internal::Object)",93957337391200,93957337402975],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateTypedSlot<v8::internal::PageMarkingItem::MarkTypedPointers(v8::internal::YoungGenerationMarkingTask*)::{lambda(v8::internal::SlotType, unsigned long)#1}::operator()(v8::internal::SlotType, unsigned long) const::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::Heap*, v8::internal::SlotType, unsigned long, v8::internal::PageMarkingItem::MarkTypedPointers(v8::internal::YoungGenerationMarkingTask*)::{lambda(v8::internal::SlotType, unsigned long)#1}::operator()(v8::internal::SlotType, unsigned long) const::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337403904,93957337404181],["v8::internal::RegExpBytecodeGenerator::WriteCurrentPositionToRegister(int, int)",93957339755472,93957339755584],["v8::internal::RegExpBytecodeGenerator::CheckCharacterAfterAnd(unsigned int, unsigned int, v8::internal::Label*)",93957339759376,93957339759700],["v8::internal::RegExpBytecodeGenerator::Expand()",93957339762720,93957339762869],["v8::internal::(anonymous namespace)::BytecodeSequenceNode::MapArgument(int, int, int, int)",93957339778112,93957339778507],["v8::internal::RegExpText::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339782544,93957339782676],["v8::internal::CompareInverseRanges(v8::internal::ZoneList<v8::internal::CharacterRange>*, int const*, int)",93957339784336,93957339784430],["v8::internal::CharacterRange::Negate(v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::Zone*)",93957339790976,93957339791522],["v8::internal::RegExpDisjunction::SortConsecutiveAtoms(v8::internal::RegExpCompiler*)",93957339792144,93957339792554],["v8::internal::RegExpDisjunction::FixSingleCharacterDisjunctions(v8::internal::RegExpCompiler*)",93957339795744,93957339797023],["v8::internal::RegExpQuantifier::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339797472,93957339797525],["v8::internal::RegExpAssertion::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339799920,93957339801578],["v8::internal::CharacterRange::AddClassEscape(char, v8::internal::ZoneList<v8::internal::CharacterRange>*, bool, v8::internal::Zone*)",93957339802816,93957339803961],["v8::internal::RegExpEmpty::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339804128,93957339804137],["v8::internal::RegExpLookaround::Builder::ForMatch(v8::internal::RegExpNode*)",93957339804352,93957339804490],["v8::internal::RegExpCapture::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339804928,93957339805020],["v8::internal::RegExpAlternative::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339805120,93957339805428],["v8_inspector::V8DebuggerAgentImpl::stepInto(v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > > >)",93957342507280,93957342507879],["v8_inspector::V8DebuggerAgentImpl::setScriptInstrumentationBreakpointIfNeeded(v8_inspector::V8DebuggerScript*)",93957342515008,93957342516716],["v8_inspector::V8DebuggerAgentImpl::ScriptCollected(v8_inspector::V8DebuggerScript const*)",93957342518768,93957342519265],["v8_inspector::protocol::Runtime::RemoteObject::setSubtype(v8_inspector::String16 const&)",93957342521024,93957342521680],["std::__1::__hash_table<std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > >, std::__1::__unordered_map_hasher<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > >, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, true>, std::__1::__unordered_map_equal<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > >, std::__1::equal_to<v8_inspector::String16>, std::__1::hash<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > > > >::__move_assign(std::__1::__hash_table<std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > >, std::__1::__unordered_map_hasher<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > >, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, true>, std::__1::__unordered_map_equal<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > >, std::__1::equal_to<v8_inspector::String16>, std::__1::hash<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > > > > >&, std::__1::integral_constant<bool, true>)",93957342522496,93957342522894],["v8_inspector::V8DebuggerId::generate(v8_inspector::V8InspectorImpl*)",93957342522912,93957342522949],["v8_inspector::V8DebuggerId::toString() const",93957342523216,93957342523513],["v8_inspector::V8DebuggerId::pair() const",93957342523552,93957342523565],["v8_inspector::V8ProfilerAgentImpl::startTypeProfile()",93957342610736,93957342610849],["v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> > > > >::operator=(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> > > > > >)",93957342629696,93957342629819],["v8_inspector::V8RuntimeAgentImpl::getIsolateId(v8_inspector::String16*)",93957342636048,93957342636205],["v8_inspector::V8RuntimeAgentImpl::restore()",93957342639904,93957342640213],["v8_inspector::V8RuntimeAgentImpl::inspect(std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> >)",93957342643424,93957342643498],["v8_inspector::(anonymous namespace)::EvaluateCallbackWrapper<v8_inspector::protocol::Runtime::Backend::EvaluateCallback>::~EvaluateCallbackWrapper()",93957342643680,93957342643723],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8RuntimeAgentImpl::bindingCallback(v8::FunctionCallbackInfo<v8::Value> const&)::$_1, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342645088,93957342645388],["void std::__1::__function::__policy_invoker<void (v8_inspector::InspectedContext*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8RuntimeAgentImpl::reset()::$_3, void (v8_inspector::InspectedContext*)> >(std::__1::__function::__policy_storage const*, v8_inspector::InspectedContext*)",93957342646656,93957342646679],["v8_inspector::V8StackTraceId::V8StackTraceId()",93957342646992,93957342647046],["v8_inspector::V8StackTraceId::V8StackTraceId(unsigned long, std::__1::pair<long, long>, bool)",93957342647088,93957342647109],["v8_inspector::StackFrame::StackFrame(v8::Isolate*, v8::Local<v8::StackFrame>)",93957342647136,93957342647331],["v8_inspector::V8StackTraceImpl::setCaptureStackTraceForUncaughtExceptions(v8::Isolate*, bool)",93957342648064,93957342648085],["v8_inspector::(anonymous namespace)::toFramesVector(v8_inspector::V8Debugger*, v8::Local<v8::StackTrace>, int)",93957342648624,93957342649212],["v8_inspector::V8StackTraceImpl::capture(v8_inspector::V8Debugger*, int, int)",93957342649680,93957342650112],["v8_inspector::V8StackTraceImpl::~V8StackTraceImpl()",93957342650272,93957342650421],["v8_inspector::V8StackTraceImpl::firstNonEmptySourceURL() const",93957342650704,93957342650928],["v8::internal::compiler::AccessBuilder::ForMapBitField3()",93957342829232,93957342829313],["v8::internal::compiler::AccessBuilder::ForFixedArrayElement(v8::internal::ElementsKind, v8::internal::LoadSensitivity)",93957342830992,93957342831161],["v8::internal::compiler::AccessBuilder::ForDictionaryNextEnumerationIndex()",93957342832048,93957342832125],["v8::internal::compiler::PropertyAccessInfo::NotFound(v8::internal::Zone*, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::JSObject>)",93957342832752,93957342833067],["v8::internal::compiler::PropertyAccessInfo::DictionaryProtoAccessorConstant(v8::internal::Zone*, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>)",93957342834816,93957342835154],["v8::internal::compiler::PropertyAccessInfo::GetConstFieldInfo() const",93957342839088,93957342839133],["v8::internal::compiler::AccessInfoFactory::ComputeElementAccessInfos(v8::internal::compiler::ElementAccessFeedback const&, v8::internal::ZoneVector<v8::internal::compiler::ElementAccessInfo>*) const",93957342839648,93957342840796],["v8::internal::compiler::AccessInfoFactory::ComputeAccessorDescriptorAccessInfo(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::compiler::AccessMode) const",93957342847440,93957342848809],["v8::internal::compiler::AccessInfoFactory::ComputePropertyAccessInfo(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::compiler::AccessMode) const",93957342849392,93957342851748],["v8::internal::compiler::AccessInfoFactory::LookupTransition(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::MaybeHandle<v8::internal::JSObject>) const",93957342852288,93957342855913],["v8::internal::compiler::PropertyAccessInfo::RecordDependencies(v8::internal::compiler::CompilationDependencies*)",93957342856832,93957342856901],["v8::internal::compiler::AccessInfoFactory::ComputePropertyAccessInfos(std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > > const&, v8::internal::Handle<v8::internal::Name>, v8::internal::compiler::AccessMode, v8::internal::ZoneVector<v8::internal::compiler::PropertyAccessInfo>*) const",93957342857920,93957342858298],["void std::__1::vector<v8::internal::compiler::ElementAccessInfo, v8::internal::ZoneAllocator<v8::internal::compiler::ElementAccessInfo> >::__push_back_slow_path<v8::internal::compiler::ElementAccessInfo const&>(v8::internal::compiler::ElementAccessInfo const&)",93957342859104,93957342859597],["void std::__1::vector<v8::internal::compiler::PropertyAccessInfo, v8::internal::ZoneAllocator<v8::internal::compiler::PropertyAccessInfo> >::__push_back_slow_path<v8::internal::compiler::PropertyAccessInfo>(v8::internal::compiler::PropertyAccessInfo&&)",93957342860560,93957342861271],["v8::internal::compiler::AddTypeAssertionsReducer::AddTypeAssertionsReducer(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::Zone*)",93957342861856,93957342861897],["v8::internal::compiler::AddTypeAssertionsReducer::~AddTypeAssertionsReducer()",93957342862128,93957342862144],["v8::internal::compiler::MachineOperatorBuilder::Float64Atanh()",93957344480736,93957344480751],["v8::internal::compiler::MachineOperatorBuilder::F64x2Mul()",93957344481504,93957344481519],["v8::internal::compiler::MachineOperatorBuilder::F32x4Sqrt()",93957344481888,93957344481903],["v8::internal::compiler::MachineOperatorBuilder::F32x4Pmax()",93957344482144,93957344482159],["v8::internal::compiler::MachineOperatorBuilder::I64x2UConvertI32x4Low()",93957344482336,93957344482351],["v8::internal::compiler::MachineOperatorBuilder::I64x2Eq()",93957344482464,93957344482479],["v8::internal::compiler::MachineOperatorBuilder::I64x2ExtMulHighI32x4U()",93957344482592,93957344482607],["v8::internal::compiler::MachineOperatorBuilder::I32x4Add()",93957344482720,93957344482735],["v8::internal::compiler::MachineOperatorBuilder::I32x4Ne()",93957344482816,93957344482831],["v8::internal::compiler::MachineOperatorBuilder::I32x4UConvertI16x8Low()",93957344482880,93957344482895],["v8::internal::compiler::MachineOperatorBuilder::I32x4MaxU()",93957344482944,93957344482959],["v8::internal::compiler::MachineOperatorBuilder::I32x4BitMask()",93957344483008,93957344483023],["v8::internal::compiler::MachineOperatorBuilder::I32x4ExtMulLowI16x8U()",93957344483072,93957344483087],["v8::internal::compiler::MachineOperatorBuilder::I32x4TruncSatF64x2SZero()",93957344483136,93957344483151],["v8::internal::compiler::MachineOperatorBuilder::I16x8SConvertI8x16High()",93957344483200,93957344483215],["v8::internal::compiler::MachineOperatorBuilder::I16x8SConvertI32x4()",93957344483264,93957344483279],["v8::internal::compiler::MachineOperatorBuilder::I16x8Sub()",93957344483312,93957344483327],["v8::internal::compiler::MachineOperatorBuilder::I16x8Mul()",93957344483344,93957344483359],["v8::internal::compiler::MachineOperatorBuilder::I16x8MaxS()",93957344483376,93957344483391],["v8::internal::compiler::MachineOperatorBuilder::I16x8Ne()",93957344483408,93957344483423],["v8::internal::compiler::MachineOperatorBuilder::I16x8GeS()",93957344483440,93957344483455],["v8::internal::compiler::MachineOperatorBuilder::I16x8UConvertI8x16High()",93957344483472,93957344483487],["v8::internal::compiler::MachineOperatorBuilder::I16x8UConvertI32x4()",93957344483504,93957344483519],["v8::internal::compiler::MachineOperatorBuilder::I16x8SubSatU()",93957344483536,93957344483551],["v8::internal::compiler::MachineOperatorBuilder::I16x8MaxU()",93957344483568,93957344483583],["v8::internal::compiler::MachineOperatorBuilder::I16x8GeU()",93957344483600,93957344483615],["v8::internal::compiler::MachineOperatorBuilder::I16x8Q15MulRSatS()",93957344483632,93957344483647],["v8::internal::compiler::MachineOperatorBuilder::I16x8BitMask()",93957344483664,93957344483679],["v8::internal::compiler::MachineOperatorBuilder::I16x8ExtMulHighI8x16S()",93957344483696,93957344483711],["v8::internal::compiler::MachineOperatorBuilder::I16x8ExtMulHighI8x16U()",93957344483728,93957344483743],["v8::internal::compiler::MachineOperatorBuilder::I16x8ExtAddPairwiseI8x16U()",93957344483760,93957344483775],["v8::internal::compiler::MachineOperatorBuilder::I8x16Neg()",93957344483792,93957344483807],["__dcgettext",139871563477024,139871563477039],["__isnanl",139871563499680,139871563499738],["ldexpl",139871563500320,139871563500429],["copysign",139871563500560,139871563500581],["__signbit",139871563501248,139871563501258],["__isinff",139871563501392,139871563501427],["__finitef",139871563501472,139871563501496],["modff",139871563501536,139871563501675],["xdr_uint32_t",139871564505456,139871564505527],["xdr_reference",139871564506608,139871564506825],["xdrstdio_create",139871564508128,139871564508161],["svc_run",139871564508224,139871564508572],["__isinff128",139871565627072,139871565627133],["totalordermagf128",139871565635264,139871565635295],["ufromfpf128",139871565637104,139871565637770],["conjf128",139871565639248,139871565639279],["cabsf128",139871565639312,139871565639329],["cacoshf128",139871565640016,139871565641034],["ccoshf128",139871565641168,139871565643246],["csinf128",139871565643632,139871565645346],["std::__1::__split_buffer<int*, std::__1::allocator<int*> >::push_front(int*&&)",93957335205184,93957335206045],["v8::(anonymous namespace)::WriteToFile(char const*, _IO_FILE*, v8::Isolate*, v8::debug::ConsoleCallArguments const&)",93957335206240,93957335206650],["v8::ShellOptions::DisallowReassignment<char const*, false>::operator=(char const*)",93957335293824,93957335293873],["v8::(anonymous namespace)::ProcessMessages(v8::Isolate*, std::__1::function<v8::platform::MessageLoopBehavior ()> const&)",93957335296080,93957335296916],["v8::Deserializer::~Deserializer()",93957335297600,93957335297669],["v8::(anonymous namespace)::MultiMappedAllocator::~MultiMappedAllocator()",93957335302144,93957335302272],["v8::internal::ConcurrentMarking::Pause()",93957336806528,93957336806582],["v8::internal::ObjectVisitor::VisitCustomWeakPointer(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957336808624,93957336808642],["void v8::internal::MarkingVisitorBase<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>, v8::internal::MajorMarkingState>::ProcessWeakHeapObject<v8::internal::CompressedHeapObjectSlot>(v8::internal::HeapObject, v8::internal::CompressedHeapObjectSlot, v8::internal::HeapObject)",93957336810304,93957336810580],["v8::internal::ConcurrentMarkingVisitor::ShouldVisit(v8::internal::HeapObject)",93957336812608,93957336812847],["int v8::internal::ConcurrentMarkingVisitor::VisitJSObjectSubclass<v8::internal::JSDataView, v8::internal::JSDataView::BodyDescriptor>(v8::internal::Map, v8::internal::JSDataView)",93957336814048,93957336814319],["int v8::internal::ConcurrentMarkingVisitor::VisitJSObjectSubclass<v8::internal::JSWeakRef, v8::internal::JSWeakRef::BodyDescriptor>(v8::internal::Map, v8::internal::JSWeakRef)",93957336814656,93957336814944],["int v8::internal::ConcurrentMarkingVisitor::VisitLeftTrimmableArray<v8::internal::FixedArray>(v8::internal::Map, v8::internal::FixedArray)",93957336815248,93957336815464],["int v8::internal::ConcurrentMarkingVisitor::VisitJSObjectSubclass<v8::internal::JSObject, v8::internal::JSObject::FastBodyDescriptor>(v8::internal::Map, v8::internal::JSObject)",93957336815856,93957336816104],["v8::internal::Factory::NewClosureFeedbackCellArray(int)",93957336853216,93957336853256],["v8::internal::Factory::NewEmbedderDataArray(int)",93957336853824,93957336853987],["v8::internal::Factory::NewOrderedHashMap()",93957336854048,93957336854092],["v8::internal::Factory::NewPropertyDescriptorObject()",93957336854112,93957336854227],["v8::internal::Factory::NewStringFromOneByte(v8::internal::Vector<unsigned char const> const&, v8::internal::AllocationType)",93957336854480,93957336854600],["v8::internal::Factory::NewStringFromUtf8(v8::internal::Vector<char const> const&, v8::internal::AllocationType)",93957336854976,93957336855133],["void v8::internal::CopyChars<unsigned short, unsigned char>(unsigned char*, unsigned short const*, unsigned long)",93957336855536,93957336856664],["v8::internal::Factory::NewInternalizedStringImpl(v8::internal::Handle<v8::internal::String>, int, unsigned int)",93957336856704,93957336856957],["v8::internal::Factory::InternalizedStringMapForString(v8::internal::Handle<v8::internal::String>)",93957336857152,93957336857270],["v8::internal::Factory::NewExternalStringFromOneByte(v8::String::ExternalOneByteStringResource const*)",93957336858448,93957336858910],["v8::internal::Factory::NewJSObjectFromMap(v8::internal::Handle<v8::internal::Map>, v8::internal::AllocationType, v8::internal::Handle<v8::internal::AllocationSite>)",93957336859136,93957336859260],["v8::internal::Factory::NewPrivateSymbol(v8::internal::AllocationType)",93957336859408,93957336859552],["v8::internal::Heap::InitializeHashSeed()",93957337028576,93957337028641],["v8::internal::Heap::StartTearDown()",93957337029456,93957337029483],["v8::internal::Heap::RemoveGCEpilogueCallback(void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags, void*), void*)",93957337031904,93957337032016],["v8::internal::Heap::CompactRetainedMaps(v8::internal::WeakArrayList)",93957337033824,93957337034105],["v8::internal::Heap::InsertIntoRememberedSetFromCode(v8::internal::MemoryChunk*, unsigned long)",93957337034256,93957337034412],["v8::internal::HeapObjectIterator::HeapObjectIterator(v8::internal::Heap*, v8::internal::HeapObjectIterator::HeapObjectsFiltering)",93957337034448,93957337034895],["v8::internal::Heap::UpdateTotalGCTime(double)",93957337035008,93957337035042],["v8::internal::EvacuateOldSpaceVisitor::~EvacuateOldSpaceVisitor()",93957337338320,93957337338371],["void v8::internal::Code::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337348416,93957337348498],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateTypedSlot<v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::Heap*, v8::internal::SlotType, unsigned long, v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337352608,93957337353447],["v8::internal::PointersUpdatingJob::~PointersUpdatingJob()",93957337356528,93957337356673],["v8::internal::ToSpaceUpdatingItem<v8::internal::MinorNonAtomicMarkingState>::ProcessVisitAll()",93957337359424,93957337359898],["unsigned long v8::internal::SlotSet::Iterate<v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateUntypedPointers()::{lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::Iterate<{lambda(v8::internal::CompressedMaybeObjectSlot)#2}>(unsigned long, unsigned long, unsigned long, {lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::EmptyBucketMode)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, unsigned long, v8::internal::SlotSet::Iterate, v8::internal::SlotSet::Iterate<{lambda(v8::internal::CompressedMaybeObjectSlot)#2}>(unsigned long, unsigned long, unsigned long, {lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::EmptyBucketMode)::{lambda(unsigned long)#1})",93957337361296,93957337362407],["void v8::internal::BodyDescriptorBase::IteratePointers<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::HeapObject, int, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337364000,93957337364360],["void v8::internal::BodyDescriptorBase::IteratePointer<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337365536,93957337365832],["void v8::internal::BodyDescriptorBase::IterateJSObjectBodyImpl<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337366688,93957337367169],["void v8::internal::JSTypedArray::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337367568,93957337368212],["void v8::internal::Map::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337368640,93957337369257],["void v8::internal::PrototypeInfo::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337369648,93957337370630],["void v8::internal::SmallOrderedHashTable<v8::internal::SmallOrderedHashSet>::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337371008,93957337371368],["void v8::internal::SubclassBodyDescriptor<v8::internal::FixedBodyDescriptor<4, 28, 28>, v8::internal::FixedBodyDescriptor<28, 72, 72> >::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337371744,93957337372423],["void v8::internal::SubclassBodyDescriptor<v8::internal::FixedBodyDescriptor<4, 28, 28>, v8::internal::FixedBodyDescriptor<28, 40, 40> >::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337372800,93957337373479],["void v8::internal::WasmStruct::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337373808,93957337374267],["v8::internal::RegExpUnparser::VisitLookaround(v8::internal::RegExpLookaround*, void*)",93957339754032,93957339754196],["v8::internal::RegExpBytecodeGenerator::PopCurrentPosition()",93957339756144,93957339756199],["v8::internal::RegExpBytecodeGenerator::CheckCharacter(unsigned int, v8::internal::Label*)",93957339758384,93957339758660],["v8::internal::RegExpBytecodeGenerator::CheckCharacterNotInRange(unsigned short, unsigned short, v8::internal::Label*)",93957339760656,93957339760947],["v8::internal::RegExpBytecodeGenerator::IfRegisterEqPos(int, v8::internal::Label*)",93957339762368,93957339762571],["std::__1::__hash_table<std::__1::__hash_value_type<int, int>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, int>, v8::base::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, int>, std::__1::equal_to<int>, v8::base::hash<int>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<int, int> > >::__rehash(unsigned long)",93957339763264,93957339763978],["v8::internal::(anonymous namespace)::BytecodeSequenceNode::BytecodeSequenceNode(int, v8::internal::Zone*)",93957339777264,93957339777549],["std::__1::vector<unsigned char, v8::internal::ZoneAllocator<unsigned char> >::insert(std::__1::__wrap_iter<unsigned char const*>, unsigned long, unsigned char const&)",93957339779424,93957339781690],["v8::internal::RegExpAtom::ToNode(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*)",93957339782048,93957339782536],["v8::internal::RegExpCharacterClass::is_standard(v8::internal::Zone*)",93957339782688,93957339784051],["v8::internal::CharacterSet::ranges(v8::internal::Zone*)",93957339784176,93957339784334],["v8::internal::UnicodeRangeSplitter::AddRange(v8::internal::CharacterRange)",93957339784432,93957339784945],["v8::internal::(anonymous namespace)::AddUnicodeCaseEquivalents(v8::internal::ZoneList<v8::internal::CharacterRange>*, v8::internal::Zone*)",93957339790496,93957339790962],["v8::internal::ChoiceNode* v8::internal::Zone::New<v8::internal::ChoiceNode, int, v8::internal::Zone*&>(int&&, v8::internal::Zone*&)",93957339791536,93957339791788],["v8::internal::CompareFirstCharCaseInsensitve(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)",93957339791872,93957339792143],["void v8::internal::ZoneList<v8::internal::RegExpTree*>::StableSort<int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*)>(int (*)(v8::internal::RegExpTree* const*, v8::internal::RegExpTree* const*), unsigned long, unsigned long)",93957339792560,93957339792756],["v8_inspector::V8DebuggerAgentImpl::getWasmBytecode(v8_inspector::String16 const&, v8_inspector::protocol::Binary*)",93957342501968,93957342502663],["v8_inspector::V8DebuggerAgentImpl::evaluateOnCallFrame(v8_inspector::String16 const&, v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<double>, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>*)",93957342509088,93957342510311],["v8_inspector::(anonymous namespace)::isValidPosition(v8_inspector::protocol::Debugger::ScriptPosition*)",93957342514576,93957342514803],["v8_inspector::V8DebuggerAgentImpl::breakProgram(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> >)",93957342516880,93957342517380],["v8_inspector::V8DebuggerAgentImpl::reset()",93957342517888,93957342518768],["std::__1::deque<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >::push_back(v8_inspector::String16 const&)",93957342519280,93957342520012],["std::__1::__deque_base<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >::clear()",93957342520736,93957342521012],["void std::__1::vector<std::__1::pair<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> > >, std::__1::allocator<std::__1::pair<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> > > > >::__push_back_slow_path<std::__1::pair<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> > > >(std::__1::pair<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> > >&&)",93957342521680,93957342522138],["v8_inspector::V8ProfilerAgentImpl::startProfiling(v8_inspector::String16 const&)",93957342598576,93957342598765],["v8_inspector::V8ProfilerAgentImpl::getRuntimeCallStats(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo> > > > > >*)",93957342617152,93957342617677],["v8_inspector::V8RuntimeAgentImpl::awaitPromise(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, std::__1::unique_ptr<v8_inspector::protocol::Runtime::Backend::AwaitPromiseCallback, std::__1::default_delete<v8_inspector::protocol::Runtime::Backend::AwaitPromiseCallback> >)",93957342624688,93957342625249],["v8_inspector::V8RuntimeAgentImpl::setCustomObjectFormatterEnabled(bool)",93957342630128,93957342630336],["v8_inspector::V8RuntimeAgentImpl::queryObjects(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*)",93957342634464,93957342634908],["v8_inspector::V8RuntimeAgentImpl::terminateExecution(std::__1::unique_ptr<v8_inspector::protocol::Runtime::Backend::TerminateExecutionCallback, std::__1::default_delete<v8_inspector::protocol::Runtime::Backend::TerminateExecutionCallback> >)",93957342636384,93957342636402],["v8_inspector::V8RuntimeAgentImpl::removeBinding(v8_inspector::String16 const&)",93957342638448,93957342638958],["v8_inspector::V8RuntimeAgentImpl::disable()",93957342640576,93957342640960],["v8_inspector::V8RuntimeAgentImpl::reportExecutionContextDestroyed(v8_inspector::InspectedContext*)",93957342643344,93957342643424],["v8_inspector::V8RuntimeAgentImpl::messageAdded(v8_inspector::V8ConsoleMessage*)",93957342643504,93957342643577],["v8_inspector::(anonymous namespace)::EvaluateCallbackWrapper<v8_inspector::protocol::Runtime::Backend::EvaluateCallback>::sendFailure(v8_crdtp::DispatchResponse const&)",93957342643648,93957342643666],["v8_inspector::(anonymous namespace)::EvaluateCallbackWrapper<v8_inspector::protocol::Runtime::Backend::EvaluateCallback>::~EvaluateCallbackWrapper()",93957342643728,93957342643784],["void std::__1::__function::__policy_invoker<void (v8_inspector::InspectedContext*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8RuntimeAgentImpl::addBinding(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)::$_0, void (v8_inspector::InspectedContext*)> >(std::__1::__function::__policy_storage const*, v8_inspector::InspectedContext*)",93957342644192,93957342645078],["std::__1::pair<std::__1::__tree_iterator<v8_inspector::String16, std::__1::__tree_node<v8_inspector::String16, void*>*, long>, bool> std::__1::__tree<v8_inspector::String16, std::__1::less<v8_inspector::String16>, std::__1::allocator<v8_inspector::String16> >::__emplace_unique_key_args<v8_inspector::String16, v8_inspector::String16 const&>(v8_inspector::String16 const&, v8_inspector::String16 const&)",93957342645392,93957342646364],["std::__1::__hash_table<std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > >, std::__1::__unordered_map_hasher<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > >, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, true>, std::__1::__unordered_map_equal<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > >, std::__1::equal_to<v8_inspector::String16>, std::__1::hash<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > > > >::clear()",93957342646384,93957342646646],["v8_inspector::V8SchemaAgentImpl::V8SchemaAgentImpl(v8_inspector::V8InspectorSessionImpl*, v8_crdtp::FrontendChannel*, v8_inspector::protocol::DictionaryValue*)",93957342646688,93957342646712],["v8::internal::compiler::AccessBuilder::ForJSArrayBufferBitField()",93957342827984,93957342828062],["v8::internal::compiler::AccessBuilder::ForConsStringFirst()",93957342829840,93957342829903],["v8::internal::compiler::AccessBuilder::ForContextSlot(unsigned long)",93957342830736,93957342830803],["v8::internal::compiler::AccessBuilder::ForEnumCacheIndices()",93957342831344,93957342831407],["v8::internal::compiler::AccessBuilder::ForOrderedHashMapOrSetNumberOfElements()",93957342831904,93957342831985],["v8::internal::compiler::AccessBuilder::ForFeedbackCellValue()",93957342832208,93957342832272],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::AccessMode)",93957342832528,93957342832641],["v8::internal::compiler::PropertyAccessInfo::FastDataConstant(v8::internal::Zone*, v8::internal::Handle<v8::internal::Map>, v8::internal::ZoneVector<v8::internal::compiler::CompilationDependency const*>&&, v8::internal::FieldIndex, v8::internal::Representation, v8::internal::compiler::Type, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::JSObject>, v8::internal::MaybeHandle<v8::internal::Map>)",93957342833472,93957342833866],["v8::internal::compiler::PropertyAccessInfo::StringLength(v8::internal::Zone*, v8::internal::Handle<v8::internal::Map>)",93957342834512,93957342834804],["v8::internal::compiler::MinimorphicLoadPropertyAccessInfo::Invalid()",93957342835168,93957342835206],["_ZNSt3__16vectorIN2v88internal6HandleINS2_3MapEEENS2_13ZoneAllocatorIS5_EEE6insertINS_11__wrap_iterIPKS5_EEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS5_NS_15iterator_traitsISF_E9referenceEEE5valueENSA_IPS5_EEE4typeESD_SF_SF_",93957342835552,93957342839082],["v8::internal::compiler::AccessInfoFactory::AccessInfoFactory(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::CompilationDependencies*, v8::internal::Zone*)",93957342839136,93957342839174],["v8::internal::compiler::MapRef::MapRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957342839584,93957342839648],["v8::internal::compiler::AccessInfoFactory::ConsolidateElementLoad(v8::internal::compiler::ElementAccessFeedback const&) const",93957342840800,93957342842774],["std::__1::vector<v8::internal::compiler::CompilationDependency const*, v8::internal::ZoneAllocator<v8::internal::compiler::CompilationDependency const*> >::push_back(v8::internal::compiler::CompilationDependency const*&&)",93957342846752,93957342847430],["v8::internal::compiler::AccessInfoFactory::ComputePropertyAccessInfo(v8::internal::compiler::MinimorphicLoadPropertyAccessFeedback const&) const",93957342848816,93957342848899],["v8::internal::compiler::MachineOperatorBuilder::RoundUint64ToFloat64()",93957344480224,93957344480239],["v8::internal::compiler::MachineOperatorBuilder::Float64Div()",93957344480992,93957344481007],["v8::internal::compiler::MachineOperatorBuilder::Word32PairShr()",93957344481376,93957344481391],["v8::internal::compiler::MachineOperatorBuilder::F64x2Qfma()",93957344481632,93957344481647],["v8::internal::compiler::MachineOperatorBuilder::F32x4SConvertI32x4()",93957344481824,93957344481839],["v8::internal::compiler::MachineOperatorBuilder::F32x4Sub()",93957344481952,93957344481967],["v8::internal::compiler::MachineOperatorBuilder::F32x4Le()",93957344482080,93957344482095],["v8::internal::compiler::MachineOperatorBuilder::F32x4NearestInt()",93957344482208,93957344482223],["v8::internal::compiler::MachineOperatorBuilder::I64x2SConvertI32x4Low()",93957344482304,93957344482319],["v8::internal::compiler::MachineOperatorBuilder::I64x2BitMask()",93957344482368,93957344482383],["v8::internal::compiler::MachineOperatorBuilder::I64x2Sub()",93957344482432,93957344482447],["v8::internal::compiler::MachineOperatorBuilder::I64x2GtS()",93957344482496,93957344482511],["v8::internal::compiler::MachineOperatorBuilder::I64x2ExtMulHighI32x4S()",93957344482560,93957344482575],["v8::internal::compiler::MachineOperatorBuilder::I32x4SConvertF32x4()",93957344482624,93957344482639],["v8::internal::compiler::MachineOperatorBuilder::I32x4Shl()",93957344482688,93957344482703],["v8::internal::compiler::MachineOperatorBuilder::I32x4Mul()",93957344482752,93957344482767],["v8::internal::compiler::MachineOperatorBuilder::I32x4Eq()",93957344482800,93957344482815],["v8::internal::compiler::MachineOperatorBuilder::I32x4GtS()",93957344482832,93957344482847],["v8::internal::compiler::MachineOperatorBuilder::I32x4UConvertF32x4()",93957344482864,93957344482879],["v8::internal::compiler::MachineOperatorBuilder::I32x4UConvertI16x8High()",93957344482896,93957344482911],["v8::internal::compiler::MachineOperatorBuilder::I32x4MinU()",93957344482928,93957344482943],["v8::internal::compiler::MachineOperatorBuilder::I32x4GtU()",93957344482960,93957344482975],["v8::internal::compiler::MachineOperatorBuilder::I32x4Abs()",93957344482992,93957344483007],["v8::internal::compiler::MachineOperatorBuilder::I32x4DotI16x8S()",93957344483024,93957344483039],["v8::internal::compiler::MachineOperatorBuilder::I32x4ExtMulHighI16x8S()",93957344483056,93957344483071],["v8::internal::compiler::MachineOperatorBuilder::I32x4ExtMulHighI16x8U()",93957344483088,93957344483103],["v8::internal::compiler::MachineOperatorBuilder::I32x4ExtAddPairwiseI16x8U()",93957344483120,93957344483135],["v8::internal::compiler::MachineOperatorBuilder::I32x4TruncSatF64x2UZero()",93957344483152,93957344483167],["v8::internal::compiler::MachineOperatorBuilder::I16x8SConvertI8x16Low()",93957344483184,93957344483199],["v8::internal::compiler::MachineOperatorBuilder::I16x8Neg()",93957344483216,93957344483231],["v8::internal::compiler::MachineOperatorBuilder::I16x8ShrS()",93957344483248,93957344483263],["v8::internal::compiler::MachineOperatorBuilder::I16x8Add()",93957344483280,93957344483295],["__toupper_l",139871563475584,139871563475595],["dngettext",139871563482912,139871563482923],["__open_catalog",139871563497456,139871563499587],["copysignl",139871563499760,139871563499790],["__signbitl",139871563500304,139871563500320],["__isinf",139871563500432,139871563500482],["__finite",139871563500528,139871563500560],["modf",139871563500592,139871563500777],["xdr_quad_t",139871564505104,139871564505109],["xdr_uint16_t",139871564505680,139871564505818],["xdrmem_create",139871564506576,139871564506601],["xdr_pointer",139871564506832,139871564506976],["sincosf128",139871565620736,139871565621236],["modff128",139871565627264,139871565627666],["totalorderf128",139871565635136,139871565635167],["setpayloadf128",139871565635472,139871565635753],["fromfpf128",139871565636432,139871565637097],["fromfpxf128",139871565637776,139871565638508],["cargf128",139871565639216,139871565639233],["cimagf128",139871565639280,139871565639287],["std::__1::deque<v8::AsyncContext, std::__1::allocator<v8::AsyncContext> >::__add_back_capacity()",93957335203888,93957335204309],["v8::D8Console::D8Console(v8::Isolate*)",93957335206048,93957335206110],["v8::Worker::ProcessMessages()",93957335289520,93957335289693],["v8::ShellOptions::DisallowReassignment<int, false>::operator=(int)",93957335293952,93957335294000],["v8::Shell::NotifyFinishStreamingTask(v8::Isolate*)",93957335295712,93957335296076],["v8::Serializer::WriteValue(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)",93957335296928,93957335297182],["v8::internal::ConcurrentMarking::Run(v8::JobDelegate*, v8::internal::BytecodeFlushMode, unsigned int, bool)",93957336779184,93957336804752],["v8::internal::ConcurrentMarking::ClearMemoryChunkData(v8::internal::MemoryChunk*)",93957336807344,93957336807892],["v8::internal::MarkingVisitorBase<v8::internal::ConcurrentMarkingVisitor, v8::internal::ConcurrentMarkingState>::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957336808368,93957336808471],["v8::internal::MarkingVisitorBase<v8::internal::ConcurrentMarkingVisitor, v8::internal::ConcurrentMarkingState>::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957336808720,93957336809070],["void v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::RecordSlot<v8::internal::CompressedObjectSlot>(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::HeapObject)",93957336810048,93957336810300],["v8::internal::ConcurrentMarkingVisitor::RecordRelocSlot(v8::internal::Code, v8::internal::RelocInfo*, v8::internal::HeapObject)",93957336810592,93957336810747],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, unsigned long>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, unsigned long>, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, unsigned long>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, unsigned long>, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, unsigned long> > >::__emplace_unique_key_args<unsigned long, std::__1::piecewise_construct_t const&, std::__1::tuple<unsigned long const&>, std::__1::tuple<> >(unsigned long const&, std::__1::piecewise_construct_t const&, std::__1::tuple<unsigned long const&>&&, std::__1::tuple<>&&)",93957336811680,93957336812593],["int v8::internal::ConcurrentMarkingVisitor::VisitJSObjectSubclass<v8::internal::JSArrayBuffer, v8::internal::JSArrayBuffer::BodyDescriptor>(v8::internal::Map, v8::internal::JSArrayBuffer)",93957336812848,93957336813119],["v8::internal::Heap::RemapEmbeddedBuiltinsIntoCodeRange(unsigned char const*, unsigned long)",93957337026336,93957337026660],["v8::internal::Heap::NotifyBootstrapComplete()",93957337028880,93957337029058],["v8::internal::Heap::flags_for_embedder_tracer() const",93957337029424,93957337029455],["v8::internal::Heap::TearDown()",93957337029488,93957337031280],["v8::internal::Heap::AddGCEpilogueCallback(void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags, void*), v8::GCType, void*)",93957337031808,93957337031900],["v8::internal::Heap::CompactWeakArrayLists(v8::internal::AllocationType)",93957337032016,93957337033455],["int v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::VisitJSObjectSubclass<v8::internal::JSFunction, v8::internal::JSObject::BodyDescriptor>(v8::internal::Map, v8::internal::JSFunction)",93957337331120,93957337331452],["v8::internal::ToSpaceUpdatingItem<v8::internal::MajorNonAtomicMarkingState>::ProcessVisitLive()",93957337342128,93957337343011],["void v8::internal::JSDataView::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337347584,93957337347796],["void v8::internal::DataHandler::BodyDescriptor::IterateBody<v8::internal::PointersUpdatingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::PointersUpdatingVisitor*)",93957337348752,93957337348907],["unsigned long v8::internal::SlotSet::Iterate<v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateUntypedPointers()::{lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::Iterate<{lambda(v8::internal::CompressedMaybeObjectSlot)#2}>(unsigned long, unsigned long, unsigned long, {lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::EmptyBucketMode)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, unsigned long, v8::internal::SlotSet::Iterate, v8::internal::SlotSet::Iterate<{lambda(v8::internal::CompressedMaybeObjectSlot)#2}>(unsigned long, unsigned long, unsigned long, {lambda(v8::internal::CompressedMaybeObjectSlot)#2}, v8::internal::SlotSet::EmptyBucketMode)::{lambda(unsigned long)#1})",93957337350560,93957337351671],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateEmbeddedPointer<v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::Heap*, v8::internal::RelocInfo*, v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337353792,93957337354180],["v8::internal::EphemeronTableUpdatingItem::Process()",93957337354976,93957337356365],["v8::internal::PointersUpdatingJob::GetMaxConcurrency(unsigned long) const",93957337357760,93957337357805],["v8::internal::ToSpaceUpdatingItem<v8::internal::MinorNonAtomicMarkingState>::ProcessVisitLive()",93957337358528,93957337359411],["v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::Process()",93957337359904,93957337360356],["v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateTypedPointers()",93957337360816,93957337361283],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateTypedSlot<v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::Heap*, v8::internal::SlotType, unsigned long, v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337362416,93957337363255],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateEmbeddedPointer<v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::Heap*, v8::internal::RelocInfo*, v8::internal::RememberedSetUpdatingItem<v8::internal::MinorNonAtomicMarkingState, (v8::internal::GarbageCollector)2>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337363600,93957337363988],["void v8::internal::Code::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, v8::internal::YoungGenerationMarkingVisitor*)",93957337364368,93957337364764],["void v8::internal::BodyDescriptorBase::IterateMaybeWeakPointers<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::HeapObject, int, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337365152,93957337365528],["void v8::internal::EphemeronHashTable::BodyDescriptor::IterateBody<v8::internal::YoungGenerationMarkingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::YoungGenerationMarkingVisitor*)",93957337365840,93957337366301],["v8::internal::RegExpAssertion::IsAnchoredAtStart()",93957339751936,93957339751949],["v8::internal::RegExpQuantifier::max_match()",93957339754768,93957339754777],["v8::internal::RegExpBytecodeGenerator::ReadStackPointerFromRegister(int)",93957339755792,93957339755854],["v8::internal::RegExpBytecodeGenerator::PushBacktrack(v8::internal::Label*)",93957339756784,93957339756983],["v8::internal::RegExpBytecodeGenerator::CheckCharacterLT(unsigned short, v8::internal::Label*)",93957339757968,93957339758171],["v8::internal::RegExpBytecodeGenerator::CheckNotAtStart(int, v8::internal::Label*)",93957339758880,93957339759083],["v8::internal::RegExpBytecodeGenerator::CheckNotCharacterAfterMinusAnd(unsigned short, unsigned short, unsigned short, v8::internal::Label*)",93957339760048,93957339760348],["v8::internal::RegExpBytecodeGenerator::CheckNotBackReference(int, bool, v8::internal::Label*)",93957339761392,93957339761614],["v8::internal::RegExpBytecodeGenerator::IfRegisterGE(int, int, v8::internal::Label*)",93957339762112,93957339762368],["v8::internal::RegExpBytecodeGenerator::GetCode(v8::internal::Handle<v8::internal::String>)",93957339762576,93957339762706],["std::__1::__hash_table<std::__1::__hash_value_type<int, int>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, int>, v8::base::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, int>, std::__1::equal_to<int>, v8::base::hash<int>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<int, int> > >::rehash(unsigned long)",93957339762880,93957339763251],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, int>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, int>, v8::base::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, int>, std::__1::equal_to<int>, v8::base::hash<int>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<int, int> > >::__emplace_unique_key_args<int, int&, int&>(int const&, int&, int&)",93957339763984,93957339764952],["v8::internal::(anonymous namespace)::RegExpBytecodePeephole::AddSentinelFixups(int)",93957339776768,93957339777253],["v8::internal::(anonymous namespace)::BytecodeSequenceNode::FollowedBy(int)",93957339777552,93957339778101],["std::__1::unordered_map<int, v8::internal::(anonymous namespace)::BytecodeSequenceNode*, v8::base::hash<int>, std::__1::equal_to<int>, v8::internal::ZoneAllocator<std::__1::pair<int const, v8::internal::(anonymous namespace)::BytecodeSequenceNode*> > >::operator[](int const&)",93957339778512,93957339779423],["v8::internal::RegExpBytecodeDisassembleSingle(unsigned char const*, unsigned char const*)",93957339781696,93957339781917],["v8_inspector::V8DebuggerAgentImpl::shouldBeSkipped(v8_inspector::String16 const&, int, int)",93957342493456,93957342493628],["v8_inspector::V8DebuggerAgentImpl::pause()",93957342503792,93957342504063],["v8_inspector::V8DebuggerAgentImpl::pauseOnAsyncCall(std::__1::unique_ptr<v8_inspector::protocol::Runtime::StackTraceId, std::__1::default_delete<v8_inspector::protocol::Runtime::StackTraceId> >)",93957342508112,93957342508152],["v8_inspector::V8DebuggerAgentImpl::setReturnValue(std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >)",93957342511408,93957342512354],["v8_inspector::V8DebuggerAgentImpl::setBlackboxedRanges(v8_inspector::String16 const&, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> > > > > >)",93957342513440,93957342514561],["v8_inspector::(anonymous namespace)::isValidRangeOfPositions(std::__1::vector<std::__1::pair<int, int>, std::__1::allocator<std::__1::pair<int, int> > >&)",93957342514816,93957342515008],["v8_inspector::V8DebuggerAgentImpl::didContinue()",93957342516720,93957342516868],["v8_inspector::V8DebuggerAgentImpl::setBreakpointFor(v8::Local<v8::Function>, v8::Local<v8::String>, v8_inspector::V8DebuggerAgentImpl::BreakpointSource)",93957342517392,93957342517696],["v8_inspector::V8InspectorSessionImpl::breakProgram(v8_inspector::StringView, v8_inspector::StringView)",93957342593760,93957342593942],["v8_inspector::V8ProfilerAgentImpl::start()",93957342602960,93957342603251],["v8_inspector::V8ProfilerAgentImpl::disableCounters()",93957342616032,93957342616131],["void std::__1::__function::__policy_invoker<void (char const*, long, v8::base::TimeDelta)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8ProfilerAgentImpl::getRuntimeCallStats(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::RuntimeCallCounterInfo> > > > > >*)::$_0, void (char const*, long, v8::base::TimeDelta)> >(std::__1::__function::__policy_storage const*, char const*, long, v8::base::TimeDelta&&)",93957342620368,93957342620633],["v8_inspector::V8RuntimeAgentImpl::evaluate(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<double>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, std::__1::unique_ptr<v8_inspector::protocol::Runtime::Backend::EvaluateCallback, std::__1::default_delete<v8_inspector::protocol::Runtime::Backend::EvaluateCallback> >)",93957342622000,93957342624089],["v8_inspector::(anonymous namespace)::innerCallFunctionOn(v8_inspector::V8InspectorSessionImpl*, v8_inspector::InjectedScript::Scope&, v8::Local<v8::Value>, v8_inspector::String16 const&, v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > > >, bool, v8_inspector::WrapMode, bool, bool, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Runtime::Backend::CallFunctionOnCallback, std::__1::default_delete<v8_inspector::protocol::Runtime::Backend::CallFunctionOnCallback> >)",93957342626928,93957342628556],["v8_inspector::V8RuntimeAgentImpl::releaseObjectGroup(v8_inspector::String16 const&)",93957342630032,93957342630071],["v8_inspector::V8RuntimeAgentImpl::discardConsoleEntries()",93957342630480,93957342630531],["bool v8_inspector::(anonymous namespace)::wrapEvaluateResultAsync<v8_inspector::protocol::Runtime::Backend::RunScriptCallback>(v8_inspector::InjectedScript*, v8::MaybeLocal<v8::Value>, v8::TryCatch const&, v8_inspector::String16 const&, v8_inspector::WrapMode, v8_inspector::protocol::Runtime::Backend::RunScriptCallback*)",93957342634208,93957342634450],["v8_inspector::V8RuntimeAgentImpl::globalLexicalScopeNames(v8_crdtp::detail::ValueMaybe<int>, std::__1::unique_ptr<std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >, std::__1::default_delete<std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> > > >*)",93957342634912,93957342636037],["v8_inspector::V8RuntimeAgentImpl::getHeapUsage(double*, double*)",93957342636208,93957342636371],["v8_inspector::V8RuntimeAgentImpl::addBinding(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)",93957342636416,93957342637767],["v8_inspector::V8RuntimeAgentImpl::bindingCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957342638032,93957342638447],["v8_inspector::V8RuntimeAgentImpl::addBindings(v8_inspector::InspectedContext*)",93957342638960,93957342639902],["v8_inspector::V8RuntimeAgentImpl::enable()",93957342640224,93957342640574],["v8_inspector::V8RuntimeAgentImpl::reset()",93957342640960,93957342641114],["v8::internal::compiler::AccessBuilder::ForJSCollectionIteratorIndex()",93957342826800,93957342826881],["v8::internal::compiler::AccessBuilder::ForJSRegExpData()",93957342828640,93957342828703],["v8::internal::compiler::AccessBuilder::ForModuleRegularExports()",93957342829552,93957342829615],["v8::internal::compiler::AccessBuilder::ForSeqOneByteStringCharacter()",93957342830112,93957342830171],["v8::internal::compiler::AccessBuilder::ForJSStringIteratorIndex()",93957342830560,93957342830641],["v8::internal::compiler::AccessBuilder::ForFixedArrayElement()",93957342830896,93957342830941],["v8::internal::compiler::AccessBuilder::ForFixedDoubleArrayElement()",93957342831216,93957342831278],["v8::internal::compiler::AccessBuilder::ForHashTableBaseNumberOfElements()",93957342831584,93957342831661],["v8::internal::compiler::AccessBuilder::ForOrderedHashMapOrSetNumberOfDeletedElements()",93957342831808,93957342831889],["v8::internal::compiler::AccessBuilder::ForOrderedHashMapEntryValue()",93957342832000,93957342832045],["v8::internal::compiler::AccessBuilder::ForDictionaryObjectHashIndex()",93957342832128,93957342832205],["v8::internal::compiler::AccessBuilder::ForFeedbackCellInterruptBudget()",93957342832272,93957342832353],["v8::internal::compiler::AccessBuilder::ForFeedbackVectorClosureFeedbackCellArray()",93957342832464,93957342832528],["v8::internal::compiler::PropertyAccessInfo::Invalid(v8::internal::Zone*)",93957342832656,93957342832752],["v8::internal::compiler::PropertyAccessInfo::DataField(v8::internal::Zone*, v8::internal::Handle<v8::internal::Map>, v8::internal::ZoneVector<v8::internal::compiler::CompilationDependency const*>&&, v8::internal::FieldIndex, v8::internal::Representation, v8::internal::compiler::Type, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::Map>, v8::internal::MaybeHandle<v8::internal::JSObject>, v8::internal::MaybeHandle<v8::internal::Map>)",93957342833072,93957342833466],["v8::internal::compiler::PropertyAccessInfo::FastAccessorConstant(v8::internal::Zone*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::MaybeHandle<v8::internal::JSObject>)",93957342833872,93957342834197],["v8::internal::compiler::MachineOperatorBuilder::Int64Div()",93957344479712,93957344479727],["v8::internal::compiler::MachineOperatorBuilder::Float32Abs()",93957344480480,93957344480495],["v8::internal::compiler::MachineOperatorBuilder::Float64Log2()",93957344480864,93957344480879],["v8::internal::compiler::MachineOperatorBuilder::Float32Equal()",93957344481120,93957344481135],["v8::internal::compiler::MachineOperatorBuilder::Int32PairAdd()",93957344481312,93957344481327],["v8::internal::compiler::MachineOperatorBuilder::F64x2Neg()",93957344481440,93957344481455],["v8::internal::compiler::MachineOperatorBuilder::F64x2Eq()",93957344481568,93957344481583],["v8::internal::compiler::MachineOperatorBuilder::F64x2Ceil()",93957344481696,93957344481711],["v8::internal::compiler::MachineOperatorBuilder::F64x2PromoteLowF32x4()",93957344481792,93957344481807],["v8::internal::compiler::MachineOperatorBuilder::F32x4Abs()",93957344481856,93957344481871],["v8::internal::compiler::MachineOperatorBuilder::F32x4RecipSqrtApprox()",93957344481920,93957344481935],["v8::internal::compiler::MachineOperatorBuilder::F32x4Div()",93957344481984,93957344481999],["v8::internal::compiler::MachineOperatorBuilder::F32x4Ne()",93957344482048,93957344482063],["v8::internal::compiler::MachineOperatorBuilder::F32x4Qfms()",93957344482112,93957344482127],["v8::internal::compiler::MachineOperatorBuilder::F32x4Floor()",93957344482176,93957344482191],["v8::internal::compiler::MachineOperatorBuilder::I64x2Splat()",93957344482240,93957344482255],["v8::internal::compiler::MachineOperatorBuilder::I64x2Neg()",93957344482288,93957344482303],["v8::internal::compiler::MachineOperatorBuilder::I64x2SConvertI32x4High()",93957344482320,93957344482335],["v8::internal::compiler::MachineOperatorBuilder::I64x2UConvertI32x4High()",93957344482352,93957344482367],["v8::internal::compiler::MachineOperatorBuilder::I64x2Shl()",93957344482384,93957344482399],["v8::internal::compiler::MachineOperatorBuilder::I64x2Add()",93957344482416,93957344482431],["v8::internal::compiler::MachineOperatorBuilder::I64x2Mul()",93957344482448,93957344482463],["v8::internal::compiler::MachineOperatorBuilder::I64x2Ne()",93957344482480,93957344482495],["v8::internal::compiler::MachineOperatorBuilder::I64x2GeS()",93957344482512,93957344482527],["v8::internal::compiler::MachineOperatorBuilder::I64x2ExtMulLowI32x4S()",93957344482544,93957344482559],["v8::internal::compiler::MachineOperatorBuilder::I64x2ExtMulLowI32x4U()",93957344482576,93957344482591],["v8::internal::compiler::MachineOperatorBuilder::I32x4Splat()",93957344482608,93957344482623],["v8::internal::compiler::MachineOperatorBuilder::I32x4SConvertI16x8Low()",93957344482640,93957344482655],["v8::internal::compiler::MachineOperatorBuilder::I32x4Neg()",93957344482672,93957344482687],["v8::internal::compiler::MachineOperatorBuilder::I32x4ShrS()",93957344482704,93957344482719],["v8::internal::compiler::MachineOperatorBuilder::I32x4Sub()",93957344482736,93957344482751],["v8::internal::compiler::MachineOperatorBuilder::I32x4MinS()",93957344482768,93957344482783],["__islower_l",139871563475360,139871563475377],["__ctype_tolower_loc",139871563475696,139871563475713],["gettext",139871563477056,139871563477071],["textdomain",139871563491168,139871563491447],["catclose",139871563497360,139871563497445],["__isinfl",139871563499600,139871563499666],["__finitel",139871563499744,139871563499759],["modfl",139871563499792,139871563500122],["xdr_union",139871564504336,139871564504479],["xdr_u_quad_t",139871564505360,139871564505365],["xdr_int16_t",139871564505536,139871564505674],["xdr_int8_t",139871564505824,139871564505954],["tanf128",139871565616864,139871565617125],["lroundf128",139871565625952,139871565626271],["__finitef128",139871565627200,139871565627231],["__signbitf128",139871565628272,139871565628279],["totalorderf128",139871565635024,139871565635134],["totalordermagf128",139871565635168,139871565635253],["getpayloadf128",139871565635296,139871565635469],["setpayloadsigf128",139871565635760,139871565636047],["v8::AsyncHooks::Deinitialize()",93957335203536,93957335203608],["std::__1::__split_buffer<int*, std::__1::allocator<int*> >::push_back(int*&&)",93957335204320,93957335205175],["v8::Worker::WorkerThread::Run()",93957335286960,93957335287067],["v8::Shell::SetOptions(int, char**)",93957335290192,93957335293745],["v8::ShellOptions::DisallowReassignment<v8::ShellOptions::CodeCacheOptions, true>::operator=(v8::ShellOptions::CodeCacheOptions)",93957335293888,93957335293941],["v8::Shell::RunMain(v8::Isolate*, bool)",93957335294000,93957335295343],["v8::internal::ConcurrentAllocator::MakeLinearAllocationAreaIterable()",93957336777696,93957336777710],["v8::internal::Worklist<v8::internal::EphemeronHashTable, 128>::FlushToGlobal(int)",93957336805776,93957336806020],["v8::internal::ConcurrentMarking::FlushNativeContexts(v8::internal::NativeContextStats*)",93957336806640,93957336806848],["v8::internal::ConcurrentMarking::PauseScope::PauseScope(v8::internal::ConcurrentMarking*)",93957336808000,93957336808070],["v8::internal::MarkingVisitorBase<v8::internal::ConcurrentMarkingVisitor, v8::internal::ConcurrentMarkingState>::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957336808224,93957336808362],["v8::internal::MarkingVisitorBase<v8::internal::ConcurrentMarkingVisitor, v8::internal::ConcurrentMarkingState>::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot)",93957336808480,93957336808618],["v8::internal::ObjectVisitor::VisitEphemeron(v8::internal::HeapObject, int, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957336808656,93957336808712],["v8::internal::MarkingVisitorBase<v8::internal::ConcurrentMarkingVisitor, v8::internal::ConcurrentMarkingState>::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957336809072,93957336809751],["v8::internal::Heap::SetUpFromReadOnlyHeap(v8::internal::ReadOnlyHeap*)",93957337026304,93957337026332],["v8::internal::Heap::SetUpSpaces()",93957337026672,93957337028573],["v8::internal::Heap::NotifyDeserializationComplete()",93957337028656,93957337028872],["v8::internal::Heap::NotifyOldGenerationExpansion(v8::internal::AllocationSpace, v8::internal::MemoryChunk*)",93957337029072,93957337029388],["v8::internal::EvacuationAllocator::NewLocalAllocationBuffer()",93957337323024,93957337323407],["v8::internal::LiveObjectRange<(v8::internal::LiveObjectIterationMode)0>::iterator::AdvanceToNextValidObject()",93957337334384,93957337334930],["v8::internal::PageEvacuationJob::~PageEvacuationJob()",93957337340800,93957337340883],["void v8::internal::CallIterateBody::apply<v8::internal::WeakFixedArray::BodyDescriptor, v8::internal::PointersUpdatingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::PointersUpdatingVisitor*)",93957337346000,93957337346116],["void v8::internal::JSWeakCollection::BodyDescriptorImpl::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337347152,93957337347348],["void v8::internal::WeakCell::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337348048,93957337348157],["void v8::internal::PreparseData::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337348592,93957337348645],["void v8::internal::SuffixRangeWeakBodyDescriptor<20>::IterateBody<v8::internal::PointersUpdatingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::PointersUpdatingVisitor*)",93957337349040,93957337349156],["v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()",93957337350080,93957337350547],["unsigned long v8::internal::SlotSet::Iterate<v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateUntypedPointers()::{lambda(v8::internal::CompressedMaybeObjectSlot)#3}, v8::internal::SlotSet::Iterate<{lambda(v8::internal::CompressedMaybeObjectSlot)#3}>(unsigned long, unsigned long, unsigned long, {lambda(v8::internal::CompressedMaybeObjectSlot)#3}, v8::internal::SlotSet::EmptyBucketMode)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, unsigned long, v8::internal::SlotSet::Iterate, v8::internal::SlotSet::Iterate<{lambda(v8::internal::CompressedMaybeObjectSlot)#3}>(unsigned long, unsigned long, unsigned long, {lambda(v8::internal::CompressedMaybeObjectSlot)#3}, v8::internal::SlotSet::EmptyBucketMode)::{lambda(unsigned long)#1})",93957337351680,93957337352599],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateCodeTarget<v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::RelocInfo*, v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337353456,93957337353783],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateTypedSlot<v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::SlotType, unsigned long)#2}::operator()(v8::internal::SlotType, unsigned long) const::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::Heap*, v8::internal::SlotType, unsigned long, v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::SlotType, unsigned long)#2}::operator()(v8::internal::SlotType, unsigned long) const::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337354192,93957337354559],["v8::internal::SlotCallbackResult v8::internal::UpdateTypedSlotHelper::UpdateEmbeddedPointer<v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::SlotType, unsigned long)#2}::operator()(v8::internal::SlotType, unsigned long) const::{lambda(v8::internal::FullMaybeObjectSlot)#1}>(v8::internal::Heap*, v8::internal::RelocInfo*, v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::UpdateTypedPointers()::{lambda(v8::internal::SlotType, unsigned long)#2}::operator()(v8::internal::SlotType, unsigned long) const::{lambda(v8::internal::FullMaybeObjectSlot)#1})",93957337354736,93957337354967],["v8::internal::PointersUpdatingJob::~PointersUpdatingJob()",93957337356368,93957337356516],["v8::internal::PointersUpdatingJob::Run(v8::JobDelegate*)",93957337356688,93957337357745],["v8::internal::LiveObjectRange<(v8::internal::LiveObjectIterationMode)1>::iterator::AdvanceToNextValidObject()",93957337357808,93957337358494],["v8::internal::ExperimentalRegExp::OneshotExecRaw(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int*, int, int)",93957339750096,93957339750899],["v8::internal::RegExpUnparser::VisitAlternative(v8::internal::RegExpAlternative*, void*)",93957339752560,93957339752719],["v8::internal::RegExpDisjunction::RegExpDisjunction(v8::internal::ZoneList<v8::internal::RegExpTree*>*)",93957339754400,93957339754557],["v8::internal::RegExpBytecodeGenerator::~RegExpBytecodeGenerator()",93957339755104,93957339755190],["v8::internal::RegExpBytecodeGenerator::ReadCurrentPositionFromRegister(int)",93957339755664,93957339755726],["v8::internal::RegExpBytecodeGenerator::SetRegister(int, int)",93957339755920,93957339756032],["v8::internal::RegExpBytecodeGenerator::Backtrack()",93957339756272,93957339756342],["v8::internal::RegExpBytecodeGenerator::Fail()",93957339757056,93957339757111],["v8::internal::RegExpBytecodeGenerator::LoadCurrentCharacterImpl(int, v8::internal::Label*, bool, int, int)",93957339757472,93957339757963],["v8::internal::RegExpBytecodeGenerator::CheckCharacterGT(unsigned short, v8::internal::Label*)",93957339758176,93957339758379],["v8::internal::RegExpBytecodeGenerator::CheckAtStart(int, v8::internal::Label*)",93957339758672,93957339758875],["v8::internal::RegExpBytecodeGenerator::CheckNotCharacter(unsigned int, v8::internal::Label*)",93957339759088,93957339759364],["v8::internal::RegExpBytecodeGenerator::CheckNotCharacterAfterAnd(unsigned int, unsigned int, v8::internal::Label*)",93957339759712,93957339760036],["v8::internal::RegExpBytecodeGenerator::CheckCharacterInRange(unsigned short, unsigned short, v8::internal::Label*)",93957339760352,93957339760643],["v8::internal::RegExpBytecodeGenerator::CheckBitInTable(v8::internal::Handle<v8::internal::ByteArray>, v8::internal::Label*)",93957339760960,93957339761389],["v8::internal::RegExpBytecodeGenerator::CheckNotBackReferenceIgnoreCase(int, bool, bool, v8::internal::Label*)",93957339761616,93957339761841],["v8_inspector::V8DebuggerAgentImpl::setInstrumentationBreakpoint(v8_inspector::String16 const&, v8_inspector::String16*)",93957342483296,93957342483826],["v8_inspector::V8DebuggerAgentImpl::currentCallFrames(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> > > > > >*)",93957342495472,93957342500150],["v8_inspector::V8DebuggerAgentImpl::schedulePauseOnNextStatement(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> >)",93957342503456,93957342503615],["v8_inspector::V8DebuggerAgentImpl::stepOver(v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > > >)",93957342504320,93957342504877],["v8_inspector::V8DebuggerAgentImpl::stepOut()",93957342507888,93957342508111],["v8_inspector::V8DebuggerAgentImpl::setPauseOnExceptions(v8_inspector::String16 const&)",93957342508160,93957342509085],["v8_inspector::V8DebuggerAgentImpl::setVariableValue(int, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, v8_inspector::String16 const&)",93957342510320,93957342511403],["v8_inspector::V8DebuggerAgentImpl::setAsyncCallStackDepth(int)",93957342512368,93957342512586],["v8_inspector::V8InspectorSessionImpl::unwrapObject(std::__1::unique_ptr<v8_inspector::StringBuffer, std::__1::default_delete<v8_inspector::StringBuffer> >*, v8_inspector::StringView, v8::Local<v8::Value>*, v8::Local<v8::Context>*, std::__1::unique_ptr<v8_inspector::StringBuffer, std::__1::default_delete<v8_inspector::StringBuffer> >*)",93957342588128,93957342588512],["void std::__1::__function::__policy_invoker<void (v8_inspector::InspectedContext*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8InspectorSessionImpl::setCustomObjectFormatterEnabled(bool)::$_2, void (v8_inspector::InspectedContext*)> >(std::__1::__function::__policy_storage const*, v8_inspector::InspectedContext*)",93957342594912,93957342594970],["v8_inspector::V8ProfilerAgentImpl::enable()",93957342601264,93957342601366],["v8_inspector::V8ProfilerAgentImpl::takePreciseCoverage(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> > > > > >*, double*)",93957342604528,93957342604872],["v8_inspector::V8ProfilerAgentImpl::takeTypeProfile(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptTypeProfile, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptTypeProfile> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptTypeProfile, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptTypeProfile> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptTypeProfile, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptTypeProfile> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptTypeProfile, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptTypeProfile> > > > > >*)",93957342610976,93957342615744],["v8_inspector::V8ProfilerAgentImpl::enableRuntimeCallStats()",93957342616736,93957342616887],["v8_inspector::(anonymous namespace)::flattenNodesTree(v8_inspector::V8InspectorImpl*, v8::CpuProfileNode const*, std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ProfileNode, std::__1::default_delete<v8_inspector::protocol::Profiler::ProfileNode> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ProfileNode, std::__1::default_delete<v8_inspector::protocol::Profiler::ProfileNode> > > >*)",93957342618448,93957342619826],["v8_inspector::V8Regex::match(v8_inspector::String16 const&, int, int*) const",93957342621136,93957342621709],["v8_inspector::V8RuntimeAgentImpl::~V8RuntimeAgentImpl()",93957342621968,93957342621996],["v8_inspector::(anonymous namespace)::ensureContext(v8_inspector::V8InspectorImpl*, int, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, int*)",93957342624096,93957342624679],["v8_inspector::V8RuntimeAgentImpl::callFunctionOn(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > > >, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, std::__1::unique_ptr<v8_inspector::protocol::Runtime::Backend::CallFunctionOnCallback, std::__1::default_delete<v8_inspector::protocol::Runtime::Backend::CallFunctionOnCallback> >)",93957342625264,93957342626928],["v8_inspector::V8RuntimeAgentImpl::getProperties(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyDescriptor> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyDescriptor> > > > > >*, v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::InternalPropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::InternalPropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::InternalPropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::InternalPropertyDescriptor> > > > >*, v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> > > > >*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>*)",93957342628560,93957342629695],["v8_inspector::V8RuntimeAgentImpl::releaseObject(v8_inspector::String16 const&)",93957342629824,93957342630025],["v8_inspector::V8RuntimeAgentImpl::runIfWaitingForDebugger()",93957342630080,93957342630128],["v8_inspector::V8RuntimeAgentImpl::setMaxCallStackSizeToCapture(int)",93957342630336,93957342630469],["v8_inspector::V8RuntimeAgentImpl::compileScript(v8_inspector::String16 const&, v8_inspector::String16 const&, bool, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>*)",93957342630544,93957342632346],["Cr_z_crc32_sse42_simd_",93957342823120,93957342823837],["v8::internal::compiler::AccessBuilder::ForJSGeneratorObjectContinuation()",93957342827344,93957342827421],["v8::internal::compiler::AccessBuilder::ForJSTypedArrayBasePointer()",93957342828352,93957342828415],["v8::internal::compiler::AccessBuilder::ForSloppyArgumentsElementsArguments()",93957342828928,93957342828992],["v8::internal::compiler::AccessBuilder::ForMapPrototype()",93957342829424,93957342829488],["v8::internal::compiler::AccessBuilder::ForNameRawHashField()",93957342829680,93957342829743],["v8::internal::compiler::AccessBuilder::ForSlicedStringOffset()",93957342829968,93957342830045],["v8::internal::compiler::AccessBuilder::ForJSGlobalProxyNativeContext()",93957342830240,93957342830303],["v8::internal::compiler::AccessBuilder::ForJSArrayIteratorKind()",93957342830464,93957342830545],["v8::internal::compiler::AccessBuilder::ForFixedArraySlot(unsigned long, v8::internal::compiler::WriteBarrierKind)",93957342830656,93957342830722],["v8::internal::compiler::AccessBuilder::ForContextSlotKnownPointer(unsigned long)",93957342830816,93957342830883],["v8::internal::compiler::AccessBuilder::ForSloppyArgumentsElementsMappedEntry()",93957342830944,93957342830989],["v8::internal::compiler::AccessBuilder::ForStackArgument()",93957342831168,93957342831212],["v8::internal::compiler::AccessBuilder::ForEnumCacheKeys()",93957342831280,93957342831343],["v8::internal::compiler::AccessBuilder::ForTypedArrayElement(v8::internal::ExternalArrayType, bool, v8::internal::LoadSensitivity)",93957342831408,93957342831577],["v8::internal::compiler::AccessBuilder::ForHashTableBaseNumberOfDeletedElement()",93957342831664,93957342831741],["v8::internal::compiler::MachineOperatorBuilder::MachineOperatorBuilder(v8::internal::Zone*, v8::internal::MachineRepresentation, v8::base::Flags<v8::internal::compiler::MachineOperatorBuilder::Flag, unsigned int>, v8::internal::compiler::MachineOperatorBuilder::AlignmentRequirements)",93957344478496,93957344478641],["v8::internal::compiler::MachineOperatorBuilder::ChangeFloat64ToUint32()",93957344479968,93957344479983],["v8::internal::compiler::MachineOperatorBuilder::BitcastFloat64ToInt64()",93957344480352,93957344480367],["v8::internal::compiler::MachineOperatorBuilder::Float32Min()",93957344480608,93957344480623],["v8::internal::compiler::MachineOperatorBuilder::Float64Exp()",93957344480800,93957344480815],["v8::internal::compiler::MachineOperatorBuilder::Float64Neg()",93957344480928,93957344480943],["v8::internal::compiler::MachineOperatorBuilder::Float64Sinh()",93957344481056,93957344481071],["v8::internal::compiler::MachineOperatorBuilder::Float64LessThan()",93957344481184,93957344481199],["v8::internal::compiler::MachineOperatorBuilder::LoadStackCheckOffset()",93957344481280,93957344481295],["v8::internal::compiler::MachineOperatorBuilder::Int32PairMul()",93957344481344,93957344481359],["v8::internal::compiler::MachineOperatorBuilder::F64x2Splat()",93957344481408,93957344481423],["v8::internal::compiler::MachineOperatorBuilder::F64x2Add()",93957344481472,93957344481487],["v8::internal::compiler::MachineOperatorBuilder::F64x2Min()",93957344481536,93957344481551],["v8::internal::compiler::MachineOperatorBuilder::F64x2Lt()",93957344481600,93957344481615],["v8::internal::compiler::MachineOperatorBuilder::F64x2Pmin()",93957344481664,93957344481679],["v8::internal::compiler::MachineOperatorBuilder::F64x2Trunc()",93957344481728,93957344481743],["v8::internal::compiler::MachineOperatorBuilder::F64x2ConvertLowI32x4U()",93957344481776,93957344481791],["v8::internal::compiler::MachineOperatorBuilder::F32x4Splat()",93957344481808,93957344481823],["v8::internal::compiler::MachineOperatorBuilder::F32x4UConvertI32x4()",93957344481840,93957344481855],["v8::internal::compiler::MachineOperatorBuilder::F32x4Neg()",93957344481872,93957344481887],["v8::internal::compiler::MachineOperatorBuilder::F32x4RecipApprox()",93957344481904,93957344481919],["v8::internal::compiler::MachineOperatorBuilder::F32x4Add()",93957344481936,93957344481951],["v8::internal::compiler::MachineOperatorBuilder::F32x4Mul()",93957344481968,93957344481983],["v8::internal::compiler::MachineOperatorBuilder::F32x4Min()",93957344482000,93957344482015],["v8::internal::compiler::MachineOperatorBuilder::F32x4Eq()",93957344482032,93957344482047],["v8::internal::compiler::MachineOperatorBuilder::F32x4Lt()",93957344482064,93957344482079],["v8::internal::compiler::MachineOperatorBuilder::F32x4Qfma()",93957344482096,93957344482111],["v8::internal::compiler::MachineOperatorBuilder::F32x4Pmin()",93957344482128,93957344482143],["v8::internal::compiler::MachineOperatorBuilder::F32x4Ceil()",93957344482160,93957344482175],["v8::internal::compiler::MachineOperatorBuilder::F32x4Trunc()",93957344482192,93957344482207],["v8::internal::compiler::MachineOperatorBuilder::F32x4DemoteF64x2Zero()",93957344482224,93957344482239],["v8::internal::compiler::MachineOperatorBuilder::I64x2SplatI32Pair()",93957344482256,93957344482271],["_toupper",139871563475184,139871563475213],["__isspace_l",139871563475472,139871563475489],["__ctype_b_loc",139871563475632,139871563475649],["bindtextdomain",139871563476928,139871563476971],["__dgettext",139871563477040,139871563477050],["dcngettext",139871563482896,139871563482912],["ngettext",139871563482928,139871563482950],["catopen",139871563496704,139871563497205],["xdr_enum",139871564503728,139871564503856],["xdr_wrapstring",139871564504832,139871564504859],["xdr_uint64_t",139871564505120,139871564505346],["xdr_int32_t",139871564505376,139871564505447],["erff128",139871565610832,139871565611837],["remquof128",139871565618000,139871565618926],["lrintf128",139871565624944,139871565625496],["__exp10f128_finite",139871565626592,139871565626998],["__isnanf128",139871565627136,139871565627193],["copysignf128",139871565627232,139871565627253],["frexpf128",139871565628064,139871565628261],["ldexpf128",139871565628288,139871565628571],["v8::EnableHook(v8::FunctionCallbackInfo<v8::Value> const&)",93957335203472,93957335203492],["v8::UnwrapHook(v8::FunctionCallbackInfo<v8::Value> const&)",93957335203616,93957335203873],["v8::InspectorClient::InspectorClient(v8::Local<v8::Context>, bool)",93957335285568,93957335286240],["v8::Shell::RemoveRunningWorker(std::__1::shared_ptr<v8::Worker> const&)",93957335288880,93957335289163],["v8::Worker::PostMessageOut(v8::FunctionCallbackInfo<v8::Value> const&)",93957335289696,93957335290190],["v8::ShellOptions::DisallowReassignment<bool, true>::operator=(bool)",93957335293760,93957335293815],["v8::internal::CollectionBarrier::StopTimeToCollectionTimer()",93957336775936,93957336776282],["v8::internal::ConcurrentAllocator::EnsureLab(v8::internal::AllocationOrigin)",93957336777984,93957336778322],["v8::internal::ConcurrentMarkingVisitor::ProcessEphemeron(v8::internal::HeapObject, v8::internal::HeapObject)",93957336805024,93957336805509],["v8::internal::ConcurrentMarking::RescheduleJobIfNeeded(v8::TaskPriority)",93957336806192,93957336806459],["v8::internal::ConcurrentMarking::IsStopped()",93957336806592,93957336806628],["v8::internal::ConcurrentMarking::FlushMemoryChunkData(v8::internal::MajorNonAtomicMarkingState*)",93957336806848,93957336807330],["v8::internal::ConcurrentMarking::TotalMarkedBytes()",93957336807904,93957336807987],["v8::internal::ConcurrentMarking::PauseScope::~PauseScope()",93957336808080,93957336808106],["v8::internal::YoungGenerationMarkingVisitor::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957337317728,93957337318008],["void v8::internal::MarkingVisitorBase<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>, v8::internal::MajorMarkingState>::ProcessStrongHeapObject<v8::internal::CompressedHeapObjectSlot>(v8::internal::HeapObject, v8::internal::CompressedHeapObjectSlot, v8::internal::HeapObject)",93957337325296,93957337325613],["int v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::VisitLeftTrimmableArray<v8::internal::FixedArray>(v8::internal::Map, v8::internal::FixedArray)",93957337332640,93957337333015],["void std::__1::vector<std::__1::pair<v8::internal::ParallelWorkItem, v8::internal::MemoryChunk*>, std::__1::allocator<std::__1::pair<v8::internal::ParallelWorkItem, v8::internal::MemoryChunk*> > >::__emplace_back_slow_path<v8::internal::ParallelWorkItem, v8::internal::Page*&>(v8::internal::ParallelWorkItem&&, v8::internal::Page*&)",93957337335424,93957337335698],["void v8::internal::EvacuateVisitorBase::RawMigrateObject<(v8::internal::EvacuateVisitorBase::MigrationMode)1>(v8::internal::EvacuateVisitorBase*, v8::internal::HeapObject, v8::internal::HeapObject, int, v8::internal::AllocationSpace)",93957337338672,93957337340719],["v8::internal::PageEvacuationJob::GetMaxConcurrency(unsigned long) const",93957337342048,93957337342088],["v8::internal::LiveObjectRange<(v8::internal::LiveObjectIterationMode)2>::iterator::AdvanceToNextValidObject()",93957337343504,93957337344210],["void v8::internal::WasmArray::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337346272,93957337346363],["void v8::internal::WasmInstanceObject::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337346656,93957337347141],["void v8::internal::JSArrayBuffer::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337347360,93957337347572],["void v8::internal::JSTypedArray::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337347808,93957337348036],["void v8::internal::JSWeakRef::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337348160,93957337348404],["void v8::internal::BytecodeArray::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337348512,93957337348577],["void v8::internal::AllocationSite::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337348656,93957337348742],["void v8::internal::SuffixRangeWeakBodyDescriptor<12>::IterateBody<v8::internal::PointersUpdatingVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::PointersUpdatingVisitor*)",93957337348912,93957337349028],["v8::internal::RememberedSetUpdatingItem<v8::internal::MajorNonAtomicMarkingState, (v8::internal::GarbageCollector)1>::Process()",93957337349168,93957337349620],["v8::internal::(anonymous namespace)::CompileVisitor::VisitAtom(v8::internal::RegExpAtom*, void*)",93957339733872,93957339734160],["v8::internal::RegExpGroup::Accept(v8::internal::RegExpVisitor*, void*)",93957339751520,93957339751543],["v8::internal::RegExpDisjunction::IsAnchoredAtStart()",93957339752208,93957339752282],["v8::internal::RegExpUnparser::VisitText(v8::internal::RegExpText*, void*)",93957339753408,93957339753600],["v8::internal::RegExpUnparser::VisitEmpty(v8::internal::RegExpEmpty*, void*)",93957339754288,93957339754326],["v8::internal::RegExpTree::CaptureRegisters()",93957339754736,93957339754752],["v8::internal::RegExpBytecodeGenerator::RegExpBytecodeGenerator(v8::internal::Isolate*, v8::internal::Zone*)",93957339754800,93957339755013],["v8::internal::RegExpBytecodeGenerator::PopRegister(int)",93957339755344,93957339755406],["v8::internal::RegExpBytecodeGenerator::ClearRegisters(int, int)",93957339755584,93957339755654],["v8::internal::RegExpBytecodeGenerator::WriteStackPointerToRegister(int)",93957339755728,93957339755790],["v8::internal::RegExpBytecodeGenerator::SetCurrentPositionFromEnd(int)",93957339755856,93957339755918],["v8::internal::RegExpBytecodeGenerator::AdvanceRegister(int, int)",93957339756032,93957339756144],["v8::internal::RegExpBytecodeGenerator::PushCurrentPosition()",93957339756208,93957339756263],["v8::internal::RegExpBytecodeGenerator::GoTo(v8::internal::Label*)",93957339756352,93957339756774],["v8::internal::RegExpBytecodeGenerator::Succeed()",93957339756992,93957339757049],["v8::internal::RegExpBytecodeGenerator::AdvanceCurrentPosition(int)",93957339757120,93957339757255],["v8_inspector::V8DebuggerAgentImpl::setSkipAllPauses(bool)",93957342475424,93957342475536],["v8_inspector::V8DebuggerAgentImpl::getPossibleBreakpoints(std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Debugger::Location>, v8_crdtp::detail::ValueMaybe<bool>, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::BreakLocation, std::__1::default_delete<v8_inspector::protocol::Debugger::BreakLocation> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::BreakLocation, std::__1::default_delete<v8_inspector::protocol::Debugger::BreakLocation> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::BreakLocation, std::__1::default_delete<v8_inspector::protocol::Debugger::BreakLocation> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::BreakLocation, std::__1::default_delete<v8_inspector::protocol::Debugger::BreakLocation> > > > > >*)",93957342486240,93957342489609],["v8_inspector::V8DebuggerAgentImpl::searchInContent(v8_inspector::String16 const&, v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::SearchMatch, std::__1::default_delete<v8_inspector::protocol::Debugger::SearchMatch> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::SearchMatch, std::__1::default_delete<v8_inspector::protocol::Debugger::SearchMatch> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::SearchMatch, std::__1::default_delete<v8_inspector::protocol::Debugger::SearchMatch> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::SearchMatch, std::__1::default_delete<v8_inspector::protocol::Debugger::SearchMatch> > > > > >*)",93957342493664,93957342494273],["v8_inspector::V8DebuggerAgentImpl::restartFrame(v8_inspector::String16 const&, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> > > > > >*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTrace>*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTraceId>*)",93957342500480,93957342501324],["v8_inspector::V8DebuggerAgentImpl::pushBreakDetails(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> >)",93957342502672,93957342503446],["v8_inspector::V8DebuggerAgentImpl::cancelPauseOnNextStatement()",93957342503616,93957342503792],["v8_inspector::V8DebuggerAgentImpl::resume(v8_crdtp::detail::ValueMaybe<bool>)",93957342504064,93957342504313],["v8_inspector::V8DebuggerAgentImpl::processSkipList(std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > >*)",93957342504880,93957342507266],["v8_inspector::V8InspectorSessionImpl::~V8InspectorSessionImpl()",93957342585792,93957342586548],["v8_inspector::V8InspectorSessionImpl::state()",93957342590464,93957342590492],["v8_inspector::V8InspectorSessionImpl::searchInTextByLines(v8_inspector::StringView, v8_inspector::StringView, bool, bool)",93957342594288,93957342594722],["v8_inspector::V8ProfilerAgentImpl::~V8ProfilerAgentImpl()",93957342596016,93957342596270],["v8_inspector::V8ProfilerAgentImpl::consoleProfileEnd(v8_inspector::String16 const&)",93957342598992,93957342600444],["v8_inspector::V8ProfilerAgentImpl::setSamplingInterval(int)",93957342602016,93957342602210],["v8_inspector::V8ProfilerAgentImpl::startPreciseCoverage(v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, double*)",93957342603712,93957342604215],["v8_inspector::V8ProfilerAgentImpl::triggerPreciseCoverageDeltaUpdate(v8_inspector::String16 const&)",93957342610240,93957342610582],["v8_inspector::V8ProfilerAgentImpl::stopTypeProfile()",93957342610864,93957342610971],["v8_inspector::V8ProfilerAgentImpl::enableCounters()",93957342615744,93957342616024],["v8_inspector::V8ProfilerAgentImpl::getCounters(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::CounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::CounterInfo> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::CounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::CounterInfo> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::CounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::CounterInfo> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::CounterInfo, std::__1::default_delete<v8_inspector::protocol::Profiler::CounterInfo> > > > > >*)",93957342616144,93957342616729],["v8_inspector::V8ProfilerAgentImpl::disableRuntimeCallStats()",93957342616896,93957342617148],["v8_inspector::(anonymous namespace)::resourceNameToUrl(v8_inspector::V8InspectorImpl*, v8::Local<v8::String>)",93957342617680,93957342618437],["void std::__1::vector<v8_inspector::V8ProfilerAgentImpl::ProfileDescriptor, std::__1::allocator<v8_inspector::V8ProfilerAgentImpl::ProfileDescriptor> >::__push_back_slow_path<v8_inspector::V8ProfilerAgentImpl::ProfileDescriptor>(v8_inspector::V8ProfilerAgentImpl::ProfileDescriptor&&)",93957342619840,93957342620356],["v8_inspector::V8Regex::V8Regex(v8_inspector::V8InspectorImpl*, v8_inspector::String16 const&, bool, bool)",93957342620640,93957342621130],["v8_inspector::V8RuntimeAgentImpl::V8RuntimeAgentImpl(v8_inspector::V8InspectorSessionImpl*, v8_crdtp::FrontendChannel*, v8_inspector::protocol::DictionaryValue*)",93957342621712,93957342621782],["Cr_z_inflateReset",93957342810768,93957342811007],["v8::internal::compiler::AccessBuilder::ForBigIntBitfield()",93957342826208,93957342826289],["v8::internal::compiler::AccessBuilder::ForJSFunctionCode()",93957342827088,93957342827151],["v8::internal::compiler::AccessBuilder::ForJSAsyncFunctionObjectPromise()",93957342827632,93957342827695],["v8::internal::compiler::AccessBuilder::ForJSArrayBufferViewByteOffset()",93957342828160,93957342828241],["v8::internal::compiler::AccessBuilder::ForJSDataViewDataPointer()",93957342828480,93957342828543],["v8::internal::compiler::AccessBuilder::ForFixedArrayLength()",93957342828768,93957342828849],["v8::internal::compiler::AccessBuilder::ForMapBitField()",93957342829072,93957342829150],["v8::internal::compiler::AccessBuilder::ForMapInstanceType()",93957342829328,93957342829409],["v8::internal::compiler::AccessBuilder::ForMapNativeContext()",93957342829488,93957342829552],["v8::internal::compiler::AccessBuilder::ForModuleRegularImports()",93957342829616,93957342829679],["v8::internal::compiler::AccessBuilder::ForStringLength()",93957342829744,93957342829825],["v8::internal::compiler::AccessBuilder::ForConsStringSecond()",93957342829904,93957342829967],["v8::internal::compiler::AccessBuilder::ForExternalStringResourceData()",93957342830048,93957342830111],["v8::internal::compiler::AccessBuilder::ForSeqTwoByteStringCharacter()",93957342830176,93957342830238],["v8::internal::compiler::AccessBuilder::ForJSArrayIteratorIteratedObject()",93957342830304,93957342830367],["v8::internal::compiler::MachineOperatorReducer::ReduceWord32Comparisons(v8::internal::compiler::Node*)",93957344464992,93957344465374],["v8::internal::compiler::MachineOperatorBuilder::Int32LessThanOrEqual()",93957344479456,93957344479471],["v8::internal::compiler::MachineOperatorBuilder::Word32Clz()",93957344479840,93957344479855],["v8::internal::compiler::MachineOperatorBuilder::ChangeInt64ToFloat64()",93957344480096,93957344480111],["v8::internal::compiler::MachineOperatorBuilder::ChangeUint32ToUint64()",93957344480288,93957344480303],["v8::internal::compiler::MachineOperatorBuilder::SignExtendWord16ToInt32()",93957344480416,93957344480431],["v8::internal::compiler::MachineOperatorBuilder::Float32Div()",93957344480544,93957344480559],["v8::internal::compiler::MachineOperatorBuilder::Float64Asin()",93957344480672,93957344480687],["v8::internal::compiler::MachineOperatorBuilder::Float64Cos()",93957344480768,93957344480783],["v8::internal::compiler::MachineOperatorBuilder::Float64Log()",93957344480832,93957344480847],["v8::internal::compiler::MachineOperatorBuilder::Float64Max()",93957344480896,93957344480911],["v8::internal::compiler::MachineOperatorBuilder::Float64Sub()",93957344480960,93957344480975],["v8::internal::compiler::MachineOperatorBuilder::Float64Pow()",93957344481024,93957344481039],["v8::internal::compiler::MachineOperatorBuilder::Float64Tan()",93957344481088,93957344481103],["v8::internal::compiler::MachineOperatorBuilder::Float32LessThanOrEqual()",93957344481152,93957344481167],["v8::internal::compiler::MachineOperatorBuilder::Float64ExtractLowWord32()",93957344481216,93957344481231],["v8::internal::compiler::MachineOperatorBuilder::Float64InsertHighWord32()",93957344481264,93957344481279],["v8::internal::compiler::MachineOperatorBuilder::LoadFramePointer()",93957344481296,93957344481311],["v8::internal::compiler::MachineOperatorBuilder::Int32PairSub()",93957344481328,93957344481343],["v8::internal::compiler::MachineOperatorBuilder::Word32PairShl()",93957344481360,93957344481375],["v8::internal::compiler::MachineOperatorBuilder::Word32PairSar()",93957344481392,93957344481407],["v8::internal::compiler::MachineOperatorBuilder::F64x2Abs()",93957344481424,93957344481439],["v8::internal::compiler::MachineOperatorBuilder::F64x2Sqrt()",93957344481456,93957344481471],["v8::internal::compiler::MachineOperatorBuilder::F64x2Sub()",93957344481488,93957344481503],["v8::internal::compiler::MachineOperatorBuilder::F64x2Div()",93957344481520,93957344481535],["v8::internal::compiler::MachineOperatorBuilder::F64x2Max()",93957344481552,93957344481567],["v8::internal::compiler::MachineOperatorBuilder::F64x2Ne()",93957344481584,93957344481599],["v8::internal::compiler::MachineOperatorBuilder::F64x2Le()",93957344481616,93957344481631],["v8::internal::compiler::MachineOperatorBuilder::F64x2Qfms()",93957344481648,93957344481663],["v8::internal::compiler::MachineOperatorBuilder::F64x2Pmax()",93957344481680,93957344481695],["v8::internal::compiler::MachineOperatorBuilder::F64x2Floor()",93957344481712,93957344481727],["v8::internal::compiler::MachineOperatorBuilder::F64x2NearestInt()",93957344481744,93957344481759],["ispunct",139871563474896,139871563474918],["__isalnum_l",139871563475264,139871563475279],["__isprint_l",139871563475424,139871563475441],["__isxdigit_l",139871563475536,139871563475553],["__isctype",139871563475600,139871563475632],["__ctype_toupper_loc",139871563475664,139871563475681],["__ctype_init",139871563475728,139871563475808],["bind_textdomain_codeset",139871563476976,139871563477019],["xdr_u_short",139871564503168,139871564503296],["xdr_bytes",139871564503888,139871564504303],["xdr_string",139871564504480,139871564504822],["xdr_int64_t",139871564504864,139871564505090],["__sqrtf128_finite",139871565598320,139871565599249],["logbf128",139871565615200,139871565615373],["__fpclassifyf128",139871565617680,139871565617774],["roundf128",139871565620128,139871565620394],["fmaf128",139871565621248,139871565624936],["llrintf128",139871565625504,139871565625950],["llroundf128",139871565626272,139871565626587],["__issignalingf128",139871565627008,139871565627072],["v8::AsyncHooks::PromiseHookDispatch(v8::PromiseHookType, v8::Local<v8::Promise>, v8::Local<v8::Value>, v8::AsyncHooksWrap*, v8::AsyncHooks*)",93957335202016,93957335202747],["v8::DisableHook(v8::FunctionCallbackInfo<v8::Value> const&)",93957335203504,93957335203524],["std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char)",93957335282656,93957335282907],["v8::SerializationDataQueue::Dequeue(std::__1::unique_ptr<v8::SerializationData, std::__1::default_delete<v8::SerializationData> >*)",93957335286368,93957335286684],["v8::Worker::ExecuteInThread()",93957335287072,93957335288872],["v8::Worker::ProcessMessage(std::__1::unique_ptr<v8::SerializationData, std::__1::default_delete<v8::SerializationData> >)",93957335289168,93957335289513],["v8::internal::CodeObjectRegistry::Clear()",93957336774656,93957336774673],["v8::internal::StressConcurrentAllocatorTask::RunInternal()",93957336776432,93957336777165],["v8::internal::ConcurrentAllocator::UnmarkLinearAllocationArea()",93957336777760,93957336777801],["v8::internal::ConcurrentAllocator::AllocateInLab(int, v8::internal::AllocationAlignment, v8::internal::AllocationOrigin)",93957336778480,93957336778660],["v8::internal::Worklist<v8::internal::Ephemeron, 64>::Pop(int, v8::internal::Ephemeron*)",93957336804752,93957336805020],["v8::internal::Worklist<v8::internal::HeapObject, 64>::FlushToGlobal(int)",93957336805520,93957336805764],["v8::internal::ConcurrentMarking::ScheduleJob(v8::TaskPriority)",93957336806032,93957336806178],["v8::internal::ConcurrentMarking::Join()",93957336806464,93957336806513],["void v8::internal::SubclassBodyDescriptor<v8::internal::FixedBodyDescriptor<4, 28, 28>, v8::internal::FixedBodyDescriptor<28, 40, 40> >::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337315840,93957337315991],["v8::internal::EvacuateNewSpaceVisitor::~EvacuateNewSpaceVisitor()",93957337319744,93957337319814],["v8::internal::MarkingVisitorBase<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>, v8::internal::MajorMarkingState>::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957337323936,93957337324039],["int v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::VisitLeftTrimmableArray<v8::internal::FixedDoubleArray>(v8::internal::Map, v8::internal::FixedDoubleArray)",93957337328960,93957337329278],["int v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::VisitJSObjectSubclass<v8::internal::JSWeakRef, v8::internal::JSWeakRef::BodyDescriptor>(v8::internal::Map, v8::internal::JSWeakRef)",93957337331904,93957337332321],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject>, std::__1::__unordered_map_hasher<v8::internal::HeapObject, std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject>, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::HeapObject>, true>, std::__1::__unordered_map_equal<v8::internal::HeapObject, std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject>, std::__1::equal_to<v8::internal::HeapObject>, v8::internal::Object::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject> > >::__node_insert_multi_prepare(unsigned long, std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject>&)",93957337333424,93957337334120],["v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)0>::Visit(v8::internal::HeapObject, int)",93957337335088,93957337335353],["v8::internal::ProfilingMigrationObserver::Move(v8::internal::AllocationSpace, v8::internal::HeapObject, v8::internal::HeapObject, int)",93957337336464,93957337336579],["v8::internal::EvacuateVisitorBase::AddObserver(v8::internal::MigrationObserver*)",93957337338384,93957337338669],["v8::internal::PageEvacuationJob::~PageEvacuationJob()",93957337340720,93957337340800],["v8::internal::PageEvacuationJob::Run(v8::JobDelegate*)",93957337340896,93957337342036],["v8::internal::ToSpaceUpdatingItem<v8::internal::MajorNonAtomicMarkingState>::Process()",93957337342096,93957337342122],["v8::internal::ToSpaceUpdatingItem<v8::internal::MajorNonAtomicMarkingState>::ProcessVisitAll()",93957337343024,93957337343498],["void v8::internal::BodyDescriptorApply<v8::internal::CallIterateBody, void, v8::internal::Map, v8::internal::HeapObject, int, v8::internal::PointersUpdatingVisitor*>(v8::internal::InstanceType, v8::internal::Map, v8::internal::HeapObject, int, v8::internal::PointersUpdatingVisitor*)",93957337344224,93957337345995],["void v8::internal::EphemeronHashTable::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337346128,93957337346270],["void v8::internal::WasmStruct::BodyDescriptor::IterateBody<v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957337346368,93957337346568],["v8::internal::WeakCodeRegistry::Track(v8::internal::CodeEntry*, v8::internal::Handle<v8::internal::AbstractCode>)",93957339729152,93957339729229],["v8::internal::ExperimentalRegExp::Initialize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, int)",93957339746336,93957339746759],["v8::internal::ChoiceNode::Accept(v8::internal::NodeVisitor*)",93957339751392,93957339751415],["v8::internal::RegExpText::Accept(v8::internal::RegExpVisitor*, void*)",93957339751648,93957339751671],["v8::internal::RegExpAlternative::IsAnchoredAtStart()",93957339751968,93957339752093],["v8::internal::RegExpLookaround::IsAnchoredAtStart()",93957339752368,93957339752399],["v8::internal::RegExpUnparser::VisitAssertion(v8::internal::RegExpAssertion*, void*)",93957339753120,93957339753259],["v8::internal::RegExpUnparser::VisitCapture(v8::internal::RegExpCapture*, void*)",93957339753840,93957339753930],["v8::internal::RegExpUnparser::VisitBackReference(v8::internal::RegExpBackReference*, void*)",93957339754208,93957339754282],["v8::internal::RegExpTree::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::Zone*)",93957339754336,93957339754389],["v8::internal::RegExpAlternative::RegExpAlternative(v8::internal::ZoneList<v8::internal::RegExpTree*>*)",93957339754560,93957339754723],["v8::internal::RegExpText::max_match()",93957339754752,93957339754761],["v8::internal::RegExpBackReference::max_match()",93957339754784,93957339754795],["v8::internal::RegExpBytecodeGenerator::~RegExpBytecodeGenerator()",93957339755024,93957339755102],["v8::internal::RegExpBytecodeGenerator::Bind(v8::internal::Label*)",93957339755200,93957339755333],["v8::internal::RegExpBytecodeGenerator::PushRegister(int, v8::internal::RegExpMacroAssembler::StackCheckFlag)",93957339755408,93957339755470],["v8_inspector::V8DebuggerAgentImpl::enableImpl()",93957342454912,93957342455260],["v8_inspector::(anonymous namespace)::adjustBreakpointLocation(v8_inspector::V8DebuggerScript const&, v8_inspector::String16 const&, int*, int*)",93957342479088,93957342480065],["v8_inspector::(anonymous namespace)::parseBreakpointId(v8_inspector::String16 const&, v8_inspector::(anonymous namespace)::BreakpointType*, v8_inspector::String16*, int*, int*)",93957342484768,93957342485504],["v8_inspector::V8DebuggerAgentImpl::getStackTrace(std::__1::unique_ptr<v8_inspector::protocol::Runtime::StackTraceId, std::__1::default_delete<v8_inspector::protocol::Runtime::StackTraceId> >, std::__1::unique_ptr<v8_inspector::protocol::Runtime::StackTrace, std::__1::default_delete<v8_inspector::protocol::Runtime::StackTrace> >*)",93957342490992,93957342493052],["v8_inspector::V8DebuggerAgentImpl::acceptsPause(bool) const",93957342493632,93957342493662],["v8_inspector::V8DebuggerAgentImpl::setScriptSource(v8_inspector::String16 const&, v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> > > > >*, v8_crdtp::detail::ValueMaybe<bool>*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTrace>*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTraceId>*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>*)",93957342494288,93957342495471],["v8_inspector::V8DebuggerAgentImpl::currentExternalStackTrace()",93957342500160,93957342500471],["v8_inspector::V8DebuggerAgentImpl::getScriptSource(v8_inspector::String16 const&, v8_inspector::String16*, v8_crdtp::detail::ValueMaybe<v8_inspector::protocol::Binary>*)",93957342501328,93957342501957],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > > > >::__emplace_unique_key_args<int, std::__1::pair<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > > >(int const&, std::__1::pair<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >&&)",93957342581344,93957342582342],["non-virtual thunk to v8_inspector::V8InspectorSessionImpl::SendProtocolNotification(std::__1::unique_ptr<v8_crdtp::Serializable, std::__1::default_delete<v8_crdtp::Serializable> >)",93957342587152,93957342587192],["v8_inspector::V8InspectorSessionImpl::wrapTable(v8::Local<v8::Context>, v8::Local<v8::Object>, v8::MaybeLocal<v8::Array>)",93957342589344,93957342589459],["std::__1::vector<std::__1::unique_ptr<v8_inspector::V8InspectorSession::Inspectable, std::__1::default_delete<v8_inspector::V8InspectorSession::Inspectable> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::V8InspectorSession::Inspectable, std::__1::default_delete<v8_inspector::V8InspectorSession::Inspectable> > > >::insert(std::__1::__wrap_iter<std::__1::unique_ptr<v8_inspector::V8InspectorSession::Inspectable, std::__1::default_delete<v8_inspector::V8InspectorSession::Inspectable> > const*>, std::__1::unique_ptr<v8_inspector::V8InspectorSession::Inspectable, std::__1::default_delete<v8_inspector::V8InspectorSession::Inspectable> >&&)",93957342592352,93957342593487],["v8_inspector::V8InspectorSessionImpl::resume(bool)",93957342594016,93957342594083],["void std::__1::__function::__policy_invoker<void (v8_inspector::InspectedContext*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8InspectorSessionImpl::discardInjectedScripts()::$_0, void (v8_inspector::InspectedContext*)> >(std::__1::__function::__policy_storage const*, v8_inspector::InspectedContext*)",93957342594816,93957342594837],["std::__1::__split_buffer<std::__1::unique_ptr<v8_inspector::V8InspectorSession::Inspectable, std::__1::default_delete<v8_inspector::V8InspectorSession::Inspectable> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::V8InspectorSession::Inspectable, std::__1::default_delete<v8_inspector::V8InspectorSession::Inspectable> > >&>::push_back(std::__1::unique_ptr<v8_inspector::V8InspectorSession::Inspectable, std::__1::default_delete<v8_inspector::V8InspectorSession::Inspectable> >&&)",93957342594992,93957342595916],["v8_inspector::V8ProfilerAgentImpl::consoleProfile(v8_inspector::String16 const&)",93957342596304,93957342597366],["v8_inspector::(anonymous namespace)::currentDebugLocation(v8_inspector::V8InspectorImpl*)",93957342598768,93957342598977],["v8_inspector::V8ProfilerAgentImpl::stopProfiling(v8_inspector::String16 const&, bool)",93957342600448,93957342601249],["v8_inspector::V8ProfilerAgentImpl::disable()",93957342601376,93957342602012],["v8_inspector::V8ProfilerAgentImpl::restore()",93957342602224,93957342602947],["v8_inspector::V8ProfilerAgentImpl::stop(std::__1::unique_ptr<v8_inspector::protocol::Profiler::Profile, std::__1::default_delete<v8_inspector::protocol::Profiler::Profile> >*)",93957342603264,93957342603708],["v8_inspector::V8ProfilerAgentImpl::stopPreciseCoverage()",93957342604224,93957342604525],["v8_inspector::(anonymous namespace)::coverageToProtocol(v8_inspector::V8InspectorImpl*, v8::debug::Coverage const&, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> > > > > >*)",93957342604880,93957342610227],["v8_inspector::V8ProfilerAgentImpl::getBestEffortCoverage(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> > > > > >*)",93957342610592,93957342610734],["Cr_z_inflate",93957342811456,93957342821458],["Cr_z_fill_window_sse",93957342825360,93957342825981],["v8::internal::compiler::AccessBuilder::ForJSObjectElements()",93957342826528,93957342826591],["v8::internal::compiler::AccessBuilder::ForJSFunctionContext()",93957342826960,93957342827023],["v8::internal::compiler::AccessBuilder::ForJSRegExpSource()",93957342827216,93957342827279],["v8::internal::compiler::AccessBuilder::ForJSGeneratorObjectParametersAndRegisters()",93957342827488,93957342827551],["v8::internal::compiler::AccessBuilder::ForJSAsyncGeneratorObjectIsAwaiting()",93957342827760,93957342827837],["v8::internal::compiler::AccessBuilder::ForJSArrayBufferViewByteLength()",93957342828064,93957342828145],["v8::internal::compiler::AccessBuilder::ForJSTypedArrayLength()",93957342828256,93957342828337],["v8::internal::compiler::AccessBuilder::ForJSTypedArrayExternalPointer()",93957342828416,93957342828479],["v8::internal::compiler::AccessBuilder::ForJSDateValue()",93957342828544,93957342828625],["v8::internal::compiler::AccessBuilder::ForJSRegExpFlags()",93957342828704,93957342828767],["v8::internal::compiler::AccessBuilder::ForSloppyArgumentsElementsContext()",93957342828864,93957342828928],["v8::internal::compiler::AccessBuilder::ForScopeInfoFlags()",93957342828992,93957342829069],["v8::internal::compiler::AccessBuilder::ForMapBitField2()",93957342829152,93957342829230],["v8::internal::compiler::MachineOperatorReducer::Word32And(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344444528,93957344444637],["v8::internal::compiler::(anonymous namespace)::BitfieldCheck::Detect(v8::internal::compiler::Node*)",93957344471824,93957344472740],["v8::internal::compiler::MachineOperatorBuilder::Word32Equal()",93957344479328,93957344479343],["v8::internal::compiler::MachineOperatorBuilder::Word64Xor()",93957344479584,93957344479599],["v8::internal::compiler::MachineOperatorBuilder::Uint64Div()",93957344479776,93957344479791],["v8::internal::compiler::MachineOperatorBuilder::TruncateFloat64ToWord32()",93957344479904,93957344479919],["v8::internal::compiler::MachineOperatorBuilder::TryTruncateFloat64ToInt64()",93957344480032,93957344480047],["v8::internal::compiler::MachineOperatorBuilder::RoundInt64ToFloat32()",93957344480160,93957344480175],["v8::internal::compiler::MachineOperatorBuilder::ChangeInt32ToInt64()",93957344480256,93957344480271],["v8::internal::compiler::MachineOperatorBuilder::TruncateInt64ToInt32()",93957344480320,93957344480335],["v8::internal::compiler::MachineOperatorBuilder::BitcastInt64ToFloat64()",93957344480384,93957344480399],["v8::internal::compiler::MachineOperatorBuilder::SignExtendWord16ToInt64()",93957344480448,93957344480463],["v8::internal::compiler::MachineOperatorBuilder::Float32Sub()",93957344480512,93957344480527],["v8::internal::compiler::MachineOperatorBuilder::Float32Sqrt()",93957344480576,93957344480591],["v8::internal::compiler::MachineOperatorBuilder::Float64Acos()",93957344480640,93957344480655],["v8::internal::compiler::MachineOperatorBuilder::Float64Atan()",93957344480704,93957344480719],["v8::internal::compiler::MachineOperatorBuilder::Float64Cbrt()",93957344480752,93957344480767],["v8::internal::compiler::MachineOperatorBuilder::Float64Cosh()",93957344480784,93957344480799],["v8::internal::compiler::MachineOperatorBuilder::Float64Expm1()",93957344480816,93957344480831],["v8::internal::compiler::MachineOperatorBuilder::Float64Log1p()",93957344480848,93957344480863],["v8::internal::compiler::MachineOperatorBuilder::Float64Log10()",93957344480880,93957344480895],["v8::internal::compiler::MachineOperatorBuilder::Float64Min()",93957344480912,93957344480927],["v8::internal::compiler::MachineOperatorBuilder::Float64Add()",93957344480944,93957344480959],["v8::internal::compiler::MachineOperatorBuilder::Float64Mul()",93957344480976,93957344480991],["v8::internal::compiler::MachineOperatorBuilder::Float64Mod()",93957344481008,93957344481023],["v8::internal::compiler::MachineOperatorBuilder::Float64Sin()",93957344481040,93957344481055],["v8::internal::compiler::MachineOperatorBuilder::Float64Sqrt()",93957344481072,93957344481087],["v8::internal::compiler::MachineOperatorBuilder::Float64Tanh()",93957344481104,93957344481119],["v8::internal::compiler::MachineOperatorBuilder::Float32LessThan()",93957344481136,93957344481151],["v8::internal::compiler::MachineOperatorBuilder::Float64Equal()",93957344481168,93957344481183],["v8::internal::compiler::MachineOperatorBuilder::Float64LessThanOrEqual()",93957344481200,93957344481215],["v8::internal::compiler::MachineOperatorBuilder::Float64ExtractHighWord32()",93957344481232,93957344481247],["__assert",139871563474656,139871563474667],["tolower",139871563475024,139871563475065],["isascii",139871563475232,139871563475241],["__iscntrl_l",139871563475312,139871563475327],["__isgraph_l",139871563475392,139871563475409],["__ispunct_l",139871563475456,139871563475471],["__isupper_l",139871563475504,139871563475521],["__tolower_l",139871563475568,139871563475579],["xdr_u_hyper",139871564502752,139871564502978],["xdr_u_char",139871564503440,139871564503584],["xdr_opaque",139871564503856,139871564503878],["xdr_netobj",139871564504304,139871564504321],["__jnf128_finite",139871565578048,139871565580310],["cbrtf128",139871565604736,139871565605572],["fabsf128",139871565612944,139871565612982],["rintf128",139871565615872,139871565616095],["tanhf128",139871565617136,139871565617673],["truncf128",139871565617776,139871565617996],["__log2f128_finite",139871565618928,139871565620121],["nearbyintf128",139871565620400,139871565620730],["v8::AsyncHooks::CreateHook(v8::FunctionCallbackInfo<v8::Value> const&)",93957335199792,93957335200902],["v8::AsyncHooks::Initialize()",93957335202752,93957335203467],["v8::FuzzerMonitor::SimulateErrors()",93957335282256,93957335282451],["v8::SourceGroup::Execute(v8::Isolate*)",93957335283504,93957335284248],["v8::InspectorClient::~InspectorClient()",93957335286240,93957335286363],["v8::Worker::~Worker()",93957335286688,93957335286956],["v8::internal::ArrayBufferSweeper::Append(v8::internal::JSArrayBuffer, v8::internal::ArrayBufferExtension*)",93957336772400,93957336772680],["v8::internal::CollectionBarrier::ShutdownRequested()",93957336775056,93957336775125],["v8::internal::CombinedHeapObjectIterator::CombinedHeapObjectIterator(v8::internal::Heap*, v8::internal::HeapObjectIterator::HeapObjectsFiltering)",93957336776304,93957336776372],["v8::internal::StressConcurrentAllocatorTask::Schedule(v8::internal::Isolate*)",93957336777552,93957336777663],["v8::internal::ConcurrentAllocator::MarkLinearAllocationAreaBlack()",93957336777712,93957336777753],["v8::internal::ConcurrentAllocator::AllocateInLabSlow(int, v8::internal::AllocationAlignment, v8::internal::AllocationOrigin)",93957336777808,93957336777969],["v8::internal::ConcurrentAllocator::AllocateOutsideLab(int, v8::internal::AllocationAlignment, v8::internal::AllocationOrigin)",93957336778336,93957336778472],["v8::internal::ConcurrentMarking::ConcurrentMarking(v8::internal::Heap*, v8::internal::MarkingWorklists*, v8::internal::WeakObjects*)",93957336778672,93957336779169],["void v8::internal::JSArrayBuffer::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337313392,93957337313532],["v8::internal::PointersUpdatingVisitor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)",93957337316656,93957337316700],["v8::internal::MinorMarkCompactCollector::RootMarkingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337318720,93957337319002],["v8::internal::EvacuateVisitorBase::TryEvacuateObject(v8::internal::AllocationSpace, v8::internal::HeapObject, int, v8::internal::HeapObject*)",93957337321056,93957337321577],["v8::internal::MarkingVisitorBase<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>, v8::internal::MajorMarkingState>::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337323680,93957337323783],["v8::internal::MarkingVisitorBase<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>, v8::internal::MajorMarkingState>::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957337324192,93957337324574],["unsigned int std::__1::__sort4<v8::internal::MarkCompactCollector::CollectEvacuationCandidates(v8::internal::PagedSpace*)::$_1&, std::__1::pair<unsigned long, v8::internal::Page*>*>(std::__1::pair<unsigned long, v8::internal::Page*>*, std::__1::pair<unsigned long, v8::internal::Page*>*, std::__1::pair<unsigned long, v8::internal::Page*>*, std::__1::pair<unsigned long, v8::internal::Page*>*, v8::internal::MarkCompactCollector::CollectEvacuationCandidates(v8::internal::PagedSpace*)::$_1&)",93957337327696,93957337327999],["void v8::internal::BodyDescriptorBase::IterateJSObjectBodyImpl<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState> >(v8::internal::Map, v8::internal::HeapObject, int, int, v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>*)",93957337329680,93957337330706],["int v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::VisitJSObjectSubclass<v8::internal::JSTypedArray, v8::internal::JSTypedArray::BodyDescriptor>(v8::internal::Map, v8::internal::JSTypedArray)",93957337331456,93957337331894],["void v8::internal::PrototypeInfo::BodyDescriptor::IterateBody<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState> >(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>*)",93957337332336,93957337332629],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject>, std::__1::__unordered_map_hasher<v8::internal::HeapObject, std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject>, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::HeapObject>, true>, std::__1::__unordered_map_equal<v8::internal::HeapObject, std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject>, std::__1::equal_to<v8::internal::HeapObject>, v8::internal::Object::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject> > >::__node_insert_multi(std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::HeapObject, v8::internal::HeapObject>, void*>*)",93957337333024,93957337333424],["void std::__1::__function::__policy_invoker<void (v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::Object)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::MarkCompactCollector::ClearJSWeakRefs()::$_6, void (v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::Object)> >(std::__1::__function::__policy_storage const*, v8::internal::HeapObject&&, v8::internal::CompressedObjectSlot&&, v8::internal::Object&&)",93957337334128,93957337334380],["v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)1>::Visit(v8::internal::HeapObject, int)",93957337334944,93957337335076],["v8::internal::EvacuateOldSpaceVisitor::Visit(v8::internal::HeapObject, int)",93957337335360,93957337335420],["std::__1::__unique_if<v8::internal::FullEvacuator>::__unique_single std::__1::make_unique<v8::internal::FullEvacuator, v8::internal::MarkCompactCollector*&>(v8::internal::MarkCompactCollector*&)",93957337335712,93957337336459],["void v8::internal::EvacuateVisitorBase::RawMigrateObject<(v8::internal::EvacuateVisitorBase::MigrationMode)0>(v8::internal::EvacuateVisitorBase*, v8::internal::HeapObject, v8::internal::HeapObject, int, v8::internal::AllocationSpace)",93957337336592,93957337338313],["v8::internal::StringsStorage::GetName(int)",93957339724416,93957339724437],["v8::internal::(anonymous namespace)::CanBeHandledVisitor::VisitQuantifier(v8::internal::RegExpQuantifier*, void*)",93957339731136,93957339731230],["v8::internal::ExperimentalRegExpInterpreter::FindMatches(v8::internal::Isolate*, v8::internal::RegExp::CallOrigin, v8::internal::ByteArray, int, v8::internal::String, int, int*, int, v8::internal::Zone*)",93957339737920,93957339743110],["v8::internal::ExperimentalRegExp::ExecRaw(v8::internal::Isolate*, v8::internal::RegExp::CallOrigin, v8::internal::JSRegExp, v8::internal::String, int*, int, int)",93957339748576,93957339749164],["v8::internal::RegExpDisjunction::Accept(v8::internal::RegExpVisitor*, void*)",93957339751328,93957339751351],["v8::internal::RegExpAtom::Accept(v8::internal::RegExpVisitor*, void*)",93957339751456,93957339751479],["v8::internal::RegExpBackReference::Accept(v8::internal::RegExpVisitor*, void*)",93957339751584,93957339751607],["v8::internal::RegExpGroup::CaptureRegisters()",93957339751840,93957339751855],["v8::internal::RegExpAssertion::IsAnchoredAtEnd()",93957339751952,93957339751965],["v8::internal::RegExpAlternative::IsAnchoredAtEnd()",93957339752096,93957339752201],["v8::internal::RegExpDisjunction::IsAnchoredAtEnd()",93957339752288,93957339752362],["v8::internal::RegExpUnparser::VisitDisjunction(v8::internal::RegExpDisjunction*, void*)",93957339752400,93957339752559],["v8::internal::RegExpUnparser::VisitCharacterClass(v8::internal::RegExpCharacterClass*, void*)",93957339752720,93957339753118],["v8::internal::RegExpUnparser::VisitAtom(v8::internal::RegExpAtom*, void*)",93957339753264,93957339753396],["v8::internal::RegExpUnparser::VisitQuantifier(v8::internal::RegExpQuantifier*, void*)",93957339753600,93957339753829],["v8::internal::RegExpUnparser::VisitGroup(v8::internal::RegExpGroup*, void*)",93957339753936,93957339754026],["v8_inspector::V8Console::CommandLineAPIScope::~CommandLineAPIScope()",93957342452768,93957342453081],["v8_inspector::V8DebuggerAgentImpl::disable()",93957342471936,93957342474232],["v8_inspector::(anonymous namespace)::generateBreakpointId(v8_inspector::(anonymous namespace)::BreakpointType, v8_inspector::String16 const&, int, int)",93957342478320,93957342478493],["v8_inspector::V8DebuggerAgentImpl::setBreakpoint(std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_inspector::String16*, std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >*)",93957342480592,93957342482375],["v8_inspector::V8DebuggerAgentImpl::removeBreakpoint(v8_inspector::String16 const&)",93957342483840,93957342484758],["v8_inspector::V8DebuggerAgentImpl::removeBreakpointImpl(v8_inspector::String16 const&, std::__1::vector<v8_inspector::V8DebuggerScript*, std::__1::allocator<v8_inspector::V8DebuggerScript*> > const&)",93957342485504,93957342486229],["v8_inspector::V8DebuggerAgentImpl::continueToLocation(std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)",93957342489616,93957342490987],["v8_inspector::V8DebuggerAgentImpl::isFunctionBlackboxed(v8_inspector::String16 const&, v8::debug::Location const&, v8::debug::Location const&)",93957342493056,93957342493455],["v8_inspector::V8InspectorImpl::asyncTaskCanceled(void*)",93957342575424,93957342575444],["std::__1::__shared_ptr_emplace<v8_inspector::V8Inspector::Counters, std::__1::allocator<v8_inspector::V8Inspector::Counters> >::__on_zero_shared()",93957342582976,93957342582990],["v8_inspector::V8InspectorSessionImpl::serializeForFrontend(std::__1::unique_ptr<v8_crdtp::Serializable, std::__1::default_delete<v8_crdtp::Serializable> >)",93957342586656,93957342587000],["v8_inspector::V8InspectorSessionImpl::findInjectedScript(int, v8_inspector::InjectedScript*&)",93957342587456,93957342587676],["v8_inspector::V8InspectorSessionImpl::wrapObject(v8::Local<v8::Context>, v8::Local<v8::Value>, v8_inspector::StringView, bool)",93957342589056,93957342589165],["v8_inspector::V8InspectorSessionImpl::reportAllContexts(v8_inspector::V8RuntimeAgentImpl*)",93957342589616,93957342589735],["v8_inspector::V8InspectorSessionImpl::supportedDomainsImpl()",93957342590832,93957342592171],["v8_inspector::V8InspectorSessionImpl::schedulePauseOnNextStatement(v8_inspector::StringView, v8_inspector::StringView)",93957342593536,93957342593718],["v8_inspector::V8InspectorSessionImpl::setSkipAllPauses(bool)",93957342593952,93957342594009],["v8_inspector::V8InspectorSessionImpl::stepOver()",93957342594096,93957342594273],["v8_inspector::V8InspectorSessionImpl::triggerPreciseCoverageDeltaUpdate(v8_inspector::StringView)",93957342594736,93957342594805],["void std::__1::__function::__policy_invoker<void (v8_inspector::InspectedContext*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8InspectorSessionImpl::releaseObjectGroup(v8_inspector::String16 const&)::$_1, void (v8_inspector::InspectedContext*)> >(std::__1::__function::__policy_storage const*, v8_inspector::InspectedContext*)",93957342594848,93957342594903],["void std::__1::__function::__policy_invoker<void (v8_inspector::InspectedContext*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8InspectorSessionImpl::reportAllContexts(v8_inspector::V8RuntimeAgentImpl*)::$_3, void (v8_inspector::InspectedContext*)> >(std::__1::__function::__policy_storage const*, v8_inspector::InspectedContext*)",93957342594976,93957342594992],["v8_inspector::V8ProfilerAgentImpl::V8ProfilerAgentImpl(v8_inspector::V8InspectorSessionImpl*, v8_crdtp::FrontendChannel*, v8_inspector::protocol::DictionaryValue*)",93957342595920,93957342596004],["v8_inspector::V8ProfilerAgentImpl::~V8ProfilerAgentImpl()",93957342596272,93957342596300],["v8_inspector::V8ProfilerAgentImpl::ProfileDescriptor::ProfileDescriptor(v8_inspector::String16 const&, v8_inspector::String16 const&)",93957342597376,93957342598575],["Cr_z_inflateInit2_",93957342811008,93957342811446],["chunkcopy_lapped_safe",93957342821696,93957342822984],["Cr_z_crc_fold_copy",93957342823888,93957342825128],["v8::internal::compiler::AccessBuilder::ForMap()",93957342826048,93957342826111],["v8::internal::compiler::AccessBuilder::ForCellValue()",93957342826400,93957342826464],["v8::internal::compiler::AccessBuilder::ForJSObjectOffset(int, v8::internal::compiler::WriteBarrierKind)",93957342826672,93957342826730],["v8::internal::compiler::AccessBuilder::ForJSFunctionPrototypeOrInitialMap()",93957342826896,93957342826960],["v8::internal::compiler::AccessBuilder::ForJSFunctionFeedbackCell()",93957342827024,93957342827087],["v8::internal::compiler::AccessBuilder::ForJSBoundFunctionBoundTargetFunction()",93957342827152,93957342827215],["v8::internal::compiler::AccessBuilder::ForJSGeneratorObjectFunction()",93957342827280,93957342827343],["v8::internal::compiler::AccessBuilder::ForJSRegExpLastIndex()",93957342827424,93957342827487],["v8::internal::compiler::AccessBuilder::ForJSGeneratorObjectResumeMode()",93957342827552,93957342827629],["v8::internal::compiler::AccessBuilder::ForJSAsyncGeneratorObjectQueue()",93957342827696,93957342827759],["v8::internal::compiler::AccessBuilder::ForJSArrayLength(v8::internal::ElementsKind)",93957342827840,93957342827971],["v8::internal::compiler::LoopVariableOptimizer::ChangeToInductionVariablePhis()",93957344430336,93957344430853],["v8::internal::compiler::MachineOperatorReducer::ReduceWord32Shl(v8::internal::compiler::Node*)",93957344456736,93957344457432],["v8::internal::compiler::MachineOperatorReducer::ReduceFloat64RoundDown(v8::internal::compiler::Node*)",93957344468560,93957344468767],["v8::base::Optional<std::__1::pair<v8::internal::compiler::Node*, unsigned int> > v8::internal::compiler::MachineOperatorReducer::ReduceWord32EqualForConstantRhs<v8::internal::compiler::Word32Adapter>(v8::internal::compiler::Node*, unsigned int)",93957344477072,93957344477407],["v8::internal::compiler::MachineOperatorBuilder::Word32Xor()",93957344479264,93957344479278],["v8::internal::compiler::MachineOperatorBuilder::Int32MulHigh()",93957344479392,93957344479407],["v8::internal::compiler::MachineOperatorBuilder::Uint32Mod()",93957344479520,93957344479535],["v8::internal::compiler::MachineOperatorBuilder::Word64Equal()",93957344479648,93957344479663],["v8::internal::compiler::MachineOperatorBuilder::Int64LessThan()",93957344479744,93957344479759],["v8::internal::compiler::MachineOperatorBuilder::Uint64LessThan()",93957344479808,93957344479823],["v8::internal::compiler::MachineOperatorBuilder::Word32ReverseBytes()",93957344479872,93957344479887],["v8::internal::compiler::MachineOperatorBuilder::ChangeFloat64ToInt32()",93957344479936,93957344479951],["v8::internal::compiler::MachineOperatorBuilder::TruncateFloat64ToUint32()",93957344480000,93957344480015],["v8::internal::compiler::MachineOperatorBuilder::TryTruncateFloat64ToUint64()",93957344480064,93957344480079],["v8::internal::compiler::MachineOperatorBuilder::RoundFloat64ToInt32()",93957344480128,93957344480143],["v8::internal::compiler::MachineOperatorBuilder::RoundUint32ToFloat32()",93957344480192,93957344480207],["v8::internal::compiler::MachineOperatorBuilder::BitcastWord32ToWord64()",93957344480240,93957344480255],["v8::internal::compiler::MachineOperatorBuilder::ChangeUint32ToFloat64()",93957344480272,93957344480287],["v8::internal::compiler::MachineOperatorBuilder::TruncateFloat64ToFloat32()",93957344480304,93957344480319],["v8::internal::compiler::MachineOperatorBuilder::BitcastFloat32ToInt32()",93957344480336,93957344480351],["v8::internal::compiler::MachineOperatorBuilder::BitcastInt32ToFloat32()",93957344480368,93957344480383],["v8::internal::compiler::MachineOperatorBuilder::SignExtendWord8ToInt32()",93957344480400,93957344480415],["v8::internal::compiler::MachineOperatorBuilder::SignExtendWord8ToInt64()",93957344480432,93957344480447],["v8::internal::compiler::MachineOperatorBuilder::SignExtendWord32ToInt64()",93957344480464,93957344480479],["v8::internal::compiler::MachineOperatorBuilder::Float32Add()",93957344480496,93957344480511],["v8::internal::compiler::MachineOperatorBuilder::Float32Mul()",93957344480528,93957344480543],["v8::internal::compiler::MachineOperatorBuilder::Float32Neg()",93957344480560,93957344480575],["v8::internal::compiler::MachineOperatorBuilder::Float32Max()",93957344480592,93957344480607],["v8::internal::compiler::MachineOperatorBuilder::Float64Abs()",93957344480624,93957344480639],["v8::internal::compiler::MachineOperatorBuilder::Float64Acosh()",93957344480656,93957344480671],["v8::internal::compiler::MachineOperatorBuilder::Float64Asinh()",93957344480688,93957344480703],["v8::internal::compiler::MachineOperatorBuilder::Float64Atan2()",93957344480720,93957344480735],["__nl_langinfo_l",139871563470304,139871563470377],["isdigit",139871563474768,139871563474792],["isupper",139871563474960,139871563474984],["isblank",139871563475120,139871563475142],["toascii",139871563475216,139871563475222],["__isblank_l",139871563475248,139871563475263],["__isalpha_l",139871563475280,139871563475297],["__isdigit_l",139871563475328,139871563475345],["xdr_u_int",139871564502160,139871564502287],["xdr_u_longlong_t",139871564503008,139871564503013],["xdr_char",139871564503296,139871564503440],["xdr_bool",139871564503584,139871564503726],["__coshf128_finite",139871565553728,139871565554248],["__log10f128_finite",139871565591312,139871565592617],["asinhf128",139871565603392,139871565603875],["cosf128",139871565605872,139871565606248],["expm1f128",139871565611840,139871565612938],["floorf128",139871565612992,139871565613280],["nextafterf128",139871565615376,139871565615858],["sinf128",139871565616480,139871565616851],["v8::AsyncHooks::GetExecutionAsyncId() const",93957335199696,93957335199741],["v8::AsyncHooks::ShellPromiseHook(v8::PromiseHookType, v8::Local<v8::Promise>, v8::Local<v8::Value>)",93957335200912,93957335202008],["v8::PrintMessageCallback(v8::Local<v8::Message>, v8::Local<v8::Value>)",93957335269168,93957335269489],["v8::FuzzerMonitor::ObservableDifference()",93957335282496,93957335282513],["v8::Shell::RunShell(v8::Isolate*)",93957335282912,93957335283494],["v8::SourceGroup::ExecuteInThread()",93957335284256,93957335285555],["v8::internal::ArrayBufferSweeper::EnsureFinished()",93957336769776,93957336770693],["v8::internal::BaseSpace::GetSpaceName(v8::internal::AllocationSpace)",93957336774320,93957336774359],["v8::internal::CodeObjectRegistry::GetCodeObjectStartFromInnerAddress(unsigned long) const",93957336774848,93957336774981],["v8::internal::CollectionBarrier::ActivateStackGuardAndPostTask()",93957336775232,93957336775457],["v8::internal::BackgroundCollectionInterruptTask::RunInternal()",93957336776288,93957336776302],["v8::internal::CombinedHeapObjectIterator::Next()",93957336776384,93957336776431],["v8::internal::LocalHeap::AllocateRawOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment)",93957336777168,93957336777546],["v8::internal::ConcurrentAllocator::FreeLinearAllocationArea()",93957336777664,93957336777691],["v8::internal::RecordMigratedSlotVisitor::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957337306880,93957337307028],["void v8::internal::SmallOrderedHashTable<v8::internal::SmallOrderedHashSet>::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337314672,93957337314789],["v8::internal::PointersUpdatingVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337316384,93957337316435],["non-virtual thunk to v8::internal::PointersUpdatingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957337316864,93957337316915],["v8::internal::(anonymous namespace)::YoungGenerationExternalStringTableCleaner::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337318336,93957337318601],["v8::internal::YoungGenerationMigrationObserver::~YoungGenerationMigrationObserver()",93957337319248,93957337319290],["v8::internal::EvacuateNewSpaceVisitor::~EvacuateNewSpaceVisitor()",93957337319872,93957337319950],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long>, std::__1::__unordered_map_hasher<v8::internal::AllocationSite, std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long>, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::AllocationSite>, true>, std::__1::__unordered_map_equal<v8::internal::AllocationSite, std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long>, std::__1::equal_to<v8::internal::AllocationSite>, v8::internal::Object::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::AllocationSite, unsigned long> > >::__emplace_unique_key_args<v8::internal::AllocationSite, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::AllocationSite&&>, std::__1::tuple<> >(v8::internal::AllocationSite const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::AllocationSite&&>&&, std::__1::tuple<>&&)",93957337321936,93957337322737],["v8::internal::LocalSpace::~LocalSpace()",93957337323408,93957337323667],["v8::internal::MarkingVisitorBase<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>, v8::internal::MajorMarkingState>::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957337323792,93957337323930],["v8::internal::MarkingVisitorBase<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>, v8::internal::MajorMarkingState>::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot)",93957337324048,93957337324186],["v8::internal::MarkingVisitorBase<v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>, v8::internal::MajorMarkingState>::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957337324576,93957337325283],["void std::__1::__sort<v8::internal::MarkCompactCollector::CollectEvacuationCandidates(v8::internal::PagedSpace*)::$_1&, std::__1::pair<unsigned long, v8::internal::Page*>*>(std::__1::pair<unsigned long, v8::internal::Page*>*, std::__1::pair<unsigned long, v8::internal::Page*>*, v8::internal::MarkCompactCollector::CollectEvacuationCandidates(v8::internal::PagedSpace*)::$_1&)",93957337325616,93957337327682],["bool std::__1::__insertion_sort_incomplete<v8::internal::MarkCompactCollector::CollectEvacuationCandidates(v8::internal::PagedSpace*)::$_1&, std::__1::pair<unsigned long, v8::internal::Page*>*>(std::__1::pair<unsigned long, v8::internal::Page*>*, std::__1::pair<unsigned long, v8::internal::Page*>*, v8::internal::MarkCompactCollector::CollectEvacuationCandidates(v8::internal::PagedSpace*)::$_1&)",93957337328000,93957337328953],["int v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::VisitJSObjectSubclass<v8::internal::JSArrayBuffer, v8::internal::JSArrayBuffer::BodyDescriptor>(v8::internal::Map, v8::internal::JSArrayBuffer)",93957337329280,93957337329680],["int v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::VisitJSObjectSubclass<v8::internal::JSDataView, v8::internal::JSDataView::BodyDescriptor>(v8::internal::Map, v8::internal::JSDataView)",93957337330720,93957337331120],["std::__1::__tree<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > >, std::__1::__map_value_compare<unsigned long, std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > >, std::__1::less<unsigned long>, true>, std::__1::allocator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > > > >::destroy(std::__1::__tree_node<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > >, void*>*)",93957339720336,93957339720437],["v8::internal::TracingCpuProfilerImpl::TracingCpuProfilerImpl(v8::internal::Isolate*)",93957339728320,93957339728402],["v8::internal::ExperimentalRegExpCompiler::Compile(v8::internal::RegExpTree*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Zone*)",93957339729648,93957339730942],["v8::internal::(anonymous namespace)::CompileVisitor::VisitDisjunction(v8::internal::RegExpDisjunction*, void*)",93957339731376,93957339732152],["v8::internal::(anonymous namespace)::CompileVisitor::VisitCapture(v8::internal::RegExpCapture*, void*)",93957339737456,93957339737819],["v8::internal::(anonymous namespace)::NfaInterpreter<unsigned short>::RunActiveThreads()",93957339744704,93957339746320],["v8::internal::ExperimentalRegExp::Compile(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>)",93957339746816,93957339748078],["v8::internal::ExperimentalRegExp::MatchForCallFromJs(unsigned long, int, unsigned long, unsigned long, int*, int, unsigned long, v8::internal::RegExp::CallOrigin, v8::internal::Isolate*, unsigned long)",93957339749456,93957339749590],["v8::internal::ExperimentalRegExp::OneshotExec(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::RegExp::ExecQuirks)",93957339750912,93957339751328],["v8::internal::ActionNode::Accept(v8::internal::NodeVisitor*)",93957339751360,93957339751383],["v8::internal::LoopChoiceNode::Accept(v8::internal::NodeVisitor*)",93957339751424,93957339751447],["v8::internal::AssertionNode::Accept(v8::internal::NodeVisitor*)",93957339751488,93957339751511],["v8::internal::RegExpLookaround::Accept(v8::internal::RegExpVisitor*, void*)",93957339751552,93957339751575],["v8::internal::RegExpEmpty::Accept(v8::internal::RegExpVisitor*, void*)",93957339751616,93957339751639],["v8::internal::RegExpAlternative::CaptureRegisters()",93957339751680,93957339751828],["v8::internal::RegExpCapture::CaptureRegisters()",93957339751856,93957339751934],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::inspectedObject0>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342451024,93957342451130],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Console::ProfileEnd(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)::$_1, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342453552,93957342453640],["v8_inspector::V8DebuggerAgentImpl::didPause(int, v8::Local<v8::Value>, std::__1::vector<int, std::__1::allocator<int> > const&, v8::debug::ExceptionType, bool, bool, bool)",93957342466112,93957342471540],["v8_inspector::V8DebuggerAgentImpl::setBlackboxPattern(v8_inspector::String16 const&)",93957342474768,93957342475087],["v8_inspector::V8DebuggerAgentImpl::setBreakpointByUrl(int, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_inspector::String16*, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> > > > > >*)",93957342475536,93957342478312],["v8_inspector::matches(v8_inspector::V8InspectorImpl*, v8_inspector::V8DebuggerScript const&, v8_inspector::(anonymous namespace)::BreakpointType, v8_inspector::String16 const&)",93957342478496,93957342479085],["v8_inspector::V8DebuggerAgentImpl::setBreakpointImpl(v8_inspector::String16 const&, v8_inspector::String16 const&, v8_inspector::String16 const&, int, int)",93957342480080,93957342480579],["v8_inspector::V8DebuggerAgentImpl::setBreakpointOnFunctionCall(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_inspector::String16*)",93957342482384,93957342483295],["v8_inspector::V8InspectorImpl::forEachSession(int, std::__1::function<void (v8_inspector::V8InspectorSessionImpl*)> const&)",93957342569408,93957342570631],["std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >::erase(int const&)",93957342576496,93957342577021],["unsigned long std::__1::__tree<std::__1::__value_type<std::__1::pair<long, long>, int>, std::__1::__map_value_compare<std::__1::pair<long, long>, std::__1::__value_type<std::__1::pair<long, long>, int>, std::__1::less<std::__1::pair<long, long> >, true>, std::__1::allocator<std::__1::__value_type<std::__1::pair<long, long>, int> > >::__erase_unique<std::__1::pair<long, long> >(std::__1::pair<long, long> const&)",93957342582640,93957342582873],["v8_inspector::V8InspectorImpl::EvaluateScope::TerminateTask::~TerminateTask()",93957342584128,93957342584204],["v8_inspector::V8InspectorSessionImpl::~V8InspectorSessionImpl()",93957342586576,93957342586604],["non-virtual thunk to v8_inspector::V8InspectorSessionImpl::SendProtocolResponse(int, std::__1::unique_ptr<v8_crdtp::Serializable, std::__1::default_delete<v8_crdtp::Serializable> >)",93957342587056,93957342587104],["non-virtual thunk to v8_inspector::V8InspectorSessionImpl::FlushProtocolNotifications()",93957342587216,93957342587231],["v8_inspector::V8InspectorSessionImpl::releaseObjectGroup(v8_inspector::StringView)",93957342587824,93957342587986],["v8_inspector::V8InspectorSessionImpl::unwrapObject(v8_inspector::String16 const&, v8::Local<v8::Value>*, v8::Local<v8::Context>*, v8_inspector::String16*)",93957342588512,93957342589055],["v8_inspector::V8InspectorSessionImpl::wrapObject(v8::Local<v8::Context>, v8::Local<v8::Value>, v8_inspector::String16 const&, bool)",93957342589168,93957342589333],["v8_inspector::V8InspectorSessionImpl::setCustomObjectFormatterEnabled(bool)",93957342589472,93957342589609],["v8_inspector::V8InspectorSessionImpl::dispatchProtocolMessage(v8_inspector::StringView)",93957342589744,93957342590460],["v8_inspector::V8InspectorSessionImpl::supportedDomains()",93957342590496,93957342590817],["v8_inspector::V8InspectorSessionImpl::addInspectedObject(std::__1::unique_ptr<v8_inspector::V8InspectorSession::Inspectable, std::__1::default_delete<v8_inspector::V8InspectorSession::Inspectable> >)",93957342592176,93957342592338],["v8_inspector::V8InspectorSessionImpl::inspectedObject(unsigned int)",93957342593488,93957342593530],["v8_inspector::V8InspectorSessionImpl::cancelPauseOnNextStatement()",93957342593728,93957342593745],["chunkcopy_safe",93957342821472,93957342821681],["Cr_z_inflateEnd",93957342822992,93957342823110],["Cr_z_crc_fold_init",93957342823840,93957342823886],["Cr_z_crc_fold_512to32",93957342825136,93957342825350],["v8::internal::compiler::AccessBuilder::ForExternalIntPtr()",93957342825984,93957342826048],["v8::internal::compiler::AccessBuilder::ForHeapNumberValue()",93957342826112,93957342826193],["v8::internal::compiler::AccessBuilder::ForBigIntLeastSignificantDigit64()",93957342826304,93957342826385],["v8::internal::compiler::AccessBuilder::ForJSObjectPropertiesOrHashKnownPointer()",93957342826464,93957342826528],["v8::internal::compiler::AccessBuilder::ForJSObjectInObjectProperty(v8::internal::compiler::MapRef const&, int)",93957342826592,93957342826671],["v8::internal::compiler::AccessBuilder::ForJSCollectionTable()",93957342826736,93957342826799],["v8::internal::compiler::LoopFinderImpl::PropagateBackward()",93957344395568,93957344397135],["v8::internal::compiler::MachineGraph::Int32Constant(int)",93957344440528,93957344440646],["v8::internal::compiler::MachineOperatorReducer::ReduceInt32Sub(v8::internal::compiler::Node*)",93957344446544,93957344446849],["v8::internal::compiler::(anonymous namespace)::ObjectsMayAlias(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344460640,93957344460747],["v8::internal::compiler::MachineOperatorReducer::ReduceFloat64InsertLowWord32(v8::internal::compiler::Node*)",93957344465760,93957344466161],["v8::internal::compiler::MachineOperatorReducer::Word32And(v8::internal::compiler::Node*, unsigned int)",93957344470320,93957344470440],["v8::internal::compiler::Reduction v8::internal::compiler::MachineOperatorReducer::ReduceWordNOr<v8::internal::compiler::Word64Adapter>(v8::internal::compiler::Node*)",93957344475136,93957344475650],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::LoadTransformParameters)",93957344477872,93957344478029],["v8::internal::compiler::MachineOperatorBuilder::UnalignedStore(v8::internal::MachineRepresentation)",93957344479056,93957344479240],["v8::internal::compiler::MachineOperatorBuilder::Word32Shr()",93957344479296,93957344479311],["v8::internal::compiler::MachineOperatorBuilder::Int32Sub()",93957344479360,93957344479375],["v8::internal::compiler::MachineOperatorBuilder::Int32Mod()",93957344479424,93957344479439],["v8::internal::compiler::MachineOperatorBuilder::Uint32LessThan()",93957344479488,93957344479503],["v8::internal::compiler::MachineOperatorBuilder::Word64And()",93957344479552,93957344479567],["v8::internal::compiler::MachineOperatorBuilder::Word64Shr()",93957344479616,93957344479631],["v8::internal::compiler::MachineOperatorBuilder::Int64Sub()",93957344479680,93957344479695],["v8::internal::compiler::MachineOperatorBuilder::Int64Mod()",93957344479728,93957344479743],["v8::internal::compiler::MachineOperatorBuilder::Int64LessThanOrEqual()",93957344479760,93957344479775],["v8::internal::compiler::MachineOperatorBuilder::Uint64Mod()",93957344479792,93957344479807],["v8::internal::compiler::MachineOperatorBuilder::Uint64LessThanOrEqual()",93957344479824,93957344479839],["v8::internal::compiler::MachineOperatorBuilder::Word64Clz()",93957344479856,93957344479871],["v8::internal::compiler::MachineOperatorBuilder::Word64ReverseBytes()",93957344479888,93957344479903],["v8::internal::compiler::MachineOperatorBuilder::ChangeFloat32ToFloat64()",93957344479920,93957344479935],["v8::internal::compiler::MachineOperatorBuilder::ChangeFloat64ToInt64()",93957344479952,93957344479967],["v8::internal::compiler::MachineOperatorBuilder::ChangeFloat64ToUint64()",93957344479984,93957344479999],["v8::internal::compiler::MachineOperatorBuilder::TryTruncateFloat32ToInt64()",93957344480016,93957344480031],["v8::internal::compiler::MachineOperatorBuilder::TryTruncateFloat32ToUint64()",93957344480048,93957344480063],["v8::internal::compiler::MachineOperatorBuilder::ChangeInt32ToFloat64()",93957344480080,93957344480095],["v8::internal::compiler::MachineOperatorBuilder::Float64SilenceNaN()",93957344480112,93957344480127],["v8::internal::compiler::MachineOperatorBuilder::RoundInt32ToFloat32()",93957344480144,93957344480159],["v8::internal::compiler::MachineOperatorBuilder::RoundInt64ToFloat64()",93957344480176,93957344480191],["v8::internal::compiler::MachineOperatorBuilder::RoundUint64ToFloat32()",93957344480208,93957344480223],["__gconv_get_alias_db",139871563421840,139871563421848],["__freelocale",139871563473376,139871563473561],["isalpha",139871563474704,139871563474728],["isgraph",139871563474832,139871563474856],["isspace",139871563474928,139871563474952],["isxdigit",139871563474992,139871563475016],["toupper",139871563475072,139871563475113],["_tolower",139871563475152,139871563475181],["xdr_vector",139871564501648,139871564501770],["xdr_u_long",139871564502352,139871564502512],["xdr_longlong_t",139871564502992,139871564502997],["xdr_short",139871564503024,139871564503153],["scalblnf",139871565546512,139871565546629],["__j0f128_finite",139871565557936,139871565562772],["__lgammaf128_r_finite",139871565581728,139871565590131],["__remainderf128_finite",139871565597072,139871565597650],["__gammaf128_r_finite",139871565600528,139871565601953],["atanf128",139871565603888,139871565604736],["ceilf128",139871565605584,139871565605871],["erfcf128",139871565606256,139871565610832],["__do_global_dtors_aux",93957335199616,93957335199680],["v8::AsyncHooks::GetTriggerAsyncId() const",93957335199744,93957335199790],["v8::Shell::CreateWorkerTemplate(v8::Isolate*)",93957335267504,93957335268112],["v8::Shell::WriteIgnitionDispatchCountersFile(v8::Isolate*)",93957335270192,93957335270771],["v8::FuzzerMonitor::Fatal()",93957335282464,93957335282482],["v8::FuzzerMonitor::UseAfterFree()",93957335282528,93957335282647],["v8::internal::PersistentHandlesScope::~PersistentHandlesScope()",93957336768032,93957336768052],["v8::internal::ArrayBufferSweeper::RequestSweepFull()",93957336772080,93957336772095],["v8::internal::ArrayBufferSweeper::SweepingJob::SweepFull()",93957336773136,93957336773762],["v8::internal::CodeObjectRegistry::RegisterNewlyAllocatedCodeObject(unsigned long)",93957336774560,93957336774616],["v8::internal::CodeObjectRegistry::Finalize()",93957336774688,93957336774840],["v8::internal::CollectionBarrier::ResumeThreadsAwaitingCollection()",93957336774992,93957336775045],["v8::internal::CollectionBarrier::AwaitCollectionBackground()",93957336775136,93957336775219],["v8::internal::CollectionBarrier::BlockUntilCollected()",93957336775472,93957336775924],["v8::internal::Worklist<v8::internal::Ephemeron, 64>::Worklist()",93957337302176,93957337302788],["void v8::internal::EphemeronHashTable::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337311184,93957337311358],["void v8::internal::JSWeakRef::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337314080,93957337314235],["void v8::internal::PreparseData::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337315184,93957337315317],["void v8::internal::UncompiledDataWithPreparseData::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337316128,93957337316227],["v8::internal::PointersUpdatingVisitor::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957337316560,93957337316588],["v8::internal::PointersUpdatingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957337316784,93957337316835],["v8::internal::YoungGenerationMarkingVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337316976,93957337317334],["v8::internal::YoungGenerationMarkingVisitor::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot)",93957337318016,93957337318328],["v8::internal::(anonymous namespace)::MinorMarkCompactWeakObjectRetainer::RetainAs(v8::internal::Object)",93957337318608,93957337318705],["v8::internal::MinorMarkCompactCollector::RootMarkingVisitor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)",93957337319008,93957337319243],["v8::internal::YoungGenerationMigrationObserver::Move(v8::internal::AllocationSpace, v8::internal::HeapObject, v8::internal::HeapObject, int)",93957337319296,93957337319739],["v8::internal::EvacuateVisitorBase::~EvacuateVisitorBase()",93957337319824,93957337319862],["v8::internal::EvacuateNewSpaceVisitor::Visit(v8::internal::HeapObject, int)",93957337319952,93957337321050],["v8::internal::EvacuateNewSpaceVisitor::AllocateTargetObject(v8::internal::HeapObject, int, v8::internal::HeapObject*)",93957337321584,93957337321928],["v8::internal::EvacuationAllocator::AllocateInLAB(int, v8::internal::AllocationAlignment)",93957337322752,93957337323016],["std::__1::__hash_table<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, v8::internal::CodeEntry::Hasher, v8::internal::CodeEntry::Equals, std::__1::allocator<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > > >::rehash(unsigned long)",93957339710064,93957339710435],["std::__1::deque<v8::AllocationProfile::Node, std::__1::allocator<v8::AllocationProfile::Node> >::__add_back_capacity()",93957339722256,93957339722677],["v8::internal::Symbolizer::Symbolizer(v8::internal::CodeMap*)",93957339725488,93957339725497],["v8::internal::TracingCpuProfilerImpl::OnTraceDisabled()",93957339728752,93957339728815],["v8::internal::WeakCodeRegistry::Clear()",93957339729488,93957339729568],["v8::internal::(anonymous namespace)::CanBeHandledVisitor::VisitAssertion(v8::internal::RegExpAssertion*, void*)",93957339731040,93957339731076],["v8::internal::(anonymous namespace)::CanBeHandledVisitor::VisitLookaround(v8::internal::RegExpLookaround*, void*)",93957339731264,93957339731276],["v8::internal::(anonymous namespace)::CompileVisitor::VisitAssertion(v8::internal::RegExpAssertion*, void*)",93957339732256,93957339732421],["v8::internal::(anonymous namespace)::CompileVisitor::VisitQuantifier(v8::internal::RegExpQuantifier*, void*)",93957339734160,93957339737454],["v8::internal::(anonymous namespace)::CompileVisitor::VisitText(v8::internal::RegExpText*, void*)",93957339737824,93957339737908],["v8::internal::(anonymous namespace)::NfaInterpreter<unsigned char>::RunActiveThreads()",93957339743120,93957339744704],["v8::internal::ExperimentalRegExp::CanBeHandled(v8::internal::RegExpTree*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, int)",93957339746320,93957339746330],["v8::internal::ExperimentalRegExp::IsCompiled(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Isolate*)",93957339746768,93957339746803],["v8::internal::(anonymous namespace)::CompileImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>)",93957339748080,93957339748561],["v8::internal::(anonymous namespace)::ExecRawImpl(v8::internal::Isolate*, v8::internal::RegExp::CallOrigin, v8::internal::ByteArray, v8::internal::String, int, int*, int, int)",93957339749168,93957339749447],["v8::internal::ExperimentalRegExp::Exec(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::RegExp::ExecQuirks)",93957339749600,93957339750090],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::debugFunctionCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342450064,93957342450168],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::inspectedObject4>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342451472,93957342451581],["v8_inspector::(anonymous namespace)::returnDataCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957342453408,93957342453446],["v8_inspector::V8DebuggerAgentImpl::~V8DebuggerAgentImpl()",93957342453904,93957342454867],["v8_inspector::V8DebuggerAgentImpl::didParseSource(std::__1::unique_ptr<v8_inspector::V8DebuggerScript, std::__1::default_delete<v8_inspector::V8DebuggerScript> >, bool)",93957342455264,93957342466102],["v8_inspector::V8DebuggerAgentImpl::enable(v8_crdtp::detail::ValueMaybe<double>, v8_inspector::String16*)",93957342471552,93957342471928],["v8_inspector::V8DebuggerAgentImpl::restore()",93957342474240,93957342474761],["v8_inspector::V8DebuggerAgentImpl::setBreakpointsActive(bool)",93957342475088,93957342475417],["v8_inspector::V8InspectorImpl::resolveUniqueContextId(v8_inspector::V8DebuggerId) const",93957342564016,93957342564160],["v8_inspector::V8InspectorImpl::idleFinished()",93957342573936,93957342573952],["v8_inspector::V8Inspector::Counters::getCounterPtr(char const*)",93957342575536,93957342575782],["v8_inspector::V8InspectorImpl::EvaluateScope::~EvaluateScope()",93957342578960,93957342579106],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8InspectorImpl::contextCreated(v8_inspector::V8ContextInfo const&)::$_0, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342582560,93957342582607],["std::__1::__shared_ptr_emplace<v8_inspector::V8Inspector::Counters, std::__1::allocator<v8_inspector::V8Inspector::Counters> >::~__shared_ptr_emplace()",93957342582896,93957342582916],["std::__1::__shared_ptr_pointer<v8_inspector::V8InspectorImpl::EvaluateScope::CancelToken*, std::__1::shared_ptr<v8_inspector::V8InspectorImpl::EvaluateScope::CancelToken>::__shared_ptr_default_delete<v8_inspector::V8InspectorImpl::EvaluateScope::CancelToken, v8_inspector::V8InspectorImpl::EvaluateScope::CancelToken>, std::__1::allocator<v8_inspector::V8InspectorImpl::EvaluateScope::CancelToken> >::__on_zero_shared()",93957342584000,93957342584044],["v8_inspector::V8InspectorSessionImpl::create(v8_inspector::V8InspectorImpl*, int, int, v8_inspector::V8Inspector::Channel*, v8_inspector::StringView)",93957342584272,93957342584369],["non-virtual thunk to v8_inspector::V8InspectorSessionImpl::~V8InspectorSessionImpl()",93957342586560,93957342586574],["non-virtual thunk to v8_inspector::V8InspectorSessionImpl::~V8InspectorSessionImpl()",93957342586608,93957342586643],["v8_inspector::V8InspectorSessionImpl::SendProtocolResponse(int, std::__1::unique_ptr<v8_crdtp::Serializable, std::__1::default_delete<v8_crdtp::Serializable> >)",93957342587008,93957342587052],["v8_inspector::V8InspectorSessionImpl::SendProtocolNotification(std::__1::unique_ptr<v8_crdtp::Serializable, std::__1::default_delete<v8_crdtp::Serializable> >)",93957342587104,93957342587140],["v8_inspector::V8InspectorSessionImpl::FlushProtocolNotifications()",93957342587200,93957342587215],["v8_inspector::V8InspectorSessionImpl::reset()",93957342587232,93957342587447],["v8_inspector::V8InspectorSessionImpl::findInjectedScript(v8_inspector::RemoteObjectIdBase*, v8_inspector::InjectedScript*&)",93957342587680,93957342587819],["v8_inspector::V8InspectorSessionImpl::releaseObjectGroup(v8_inspector::String16 const&)",93957342588000,93957342588127],["v8::internal::compiler::LoadElimination::AbstractField::KillConst(v8::internal::compiler::Node*, v8::internal::Zone*) const",93957344370528,93957344371498],["v8::internal::compiler::LoopPeeler::PeelInnerLoopsOfTree()",93957344415440,93957344415514],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputIsTaggedOrPointer(v8::internal::compiler::Node const*, int)",93957344438672,93957344439029],["v8::internal::compiler::MachineGraph::ExternalConstant(v8::internal::ExternalReference)",93957344441648,93957344441733],["v8::internal::compiler::MachineOperatorReducer::Word64And(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344445440,93957344445549],["v8::internal::compiler::MachineOperatorReducer::TruncateInt64ToInt32(v8::internal::compiler::Node*)",93957344448048,93957344448275],["v8::internal::compiler::MachineOperatorReducer::ReduceWord32Sar(v8::internal::compiler::Node*)",93957344458960,93957344459326],["v8::internal::compiler::MachineOperatorReducer::ReduceInt32Div(v8::internal::compiler::Node*)",93957344463072,93957344463673],["v8::internal::compiler::FloatMatcher<double, (v8::internal::compiler::IrOpcode::Value)26>::IsPositiveOrNegativePowerOf2() const",93957344465456,93957344465565],["v8::internal::compiler::MachineOperatorReducer::ReduceStore(v8::internal::compiler::Node*)",93957344466576,93957344466996],["v8::internal::compiler::MachineOperatorReducer::ReduceWord64Comparisons(v8::internal::compiler::Node*)",93957344469040,93957344470171],["v8::internal::compiler::MachineOperatorReducer::ReduceWord32Shifts(v8::internal::compiler::Node*)",93957344470576,93957344470779],["v8::internal::compiler::MachineOperatorReducer::TryMatchWord32Ror(v8::internal::compiler::Node*)",93957344474368,93957344474900],["v8::internal::compiler::Reduction v8::internal::compiler::MachineOperatorReducer::ReduceWordNXor<v8::internal::compiler::Word64Adapter>(v8::internal::compiler::Node*)",93957344475824,93957344476368],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::StoreRepresentation)",93957344477424,93957344477598],["v8::internal::compiler::AtomicOpType(v8::internal::compiler::Operator const*)",93957344478256,93957344478266],["v8::internal::compiler::MachineOperatorBuilder::UnalignedLoad(v8::internal::MachineType)",93957344478656,93957344479046],["v8::internal::compiler::MachineOperatorBuilder::Word32Or()",93957344479248,93957344479262],["v8::internal::compiler::MachineOperatorBuilder::Word32Shl()",93957344479280,93957344479295],["v8::internal::compiler::MachineOperatorBuilder::Word32Ror()",93957344479312,93957344479327],["v8::internal::compiler::MachineOperatorBuilder::Int32Add()",93957344479344,93957344479359],["v8::internal::compiler::MachineOperatorBuilder::Int32Mul()",93957344479376,93957344479391],["v8::internal::compiler::MachineOperatorBuilder::Int32Div()",93957344479408,93957344479423],["v8::internal::compiler::MachineOperatorBuilder::Int32LessThan()",93957344479440,93957344479455],["v8::internal::compiler::MachineOperatorBuilder::Uint32Div()",93957344479472,93957344479487],["v8::internal::compiler::MachineOperatorBuilder::Uint32LessThanOrEqual()",93957344479504,93957344479519],["v8::internal::compiler::MachineOperatorBuilder::Uint32MulHigh()",93957344479536,93957344479551],["v8::internal::compiler::MachineOperatorBuilder::Word64Or()",93957344479568,93957344479583],["v8::internal::compiler::MachineOperatorBuilder::Word64Shl()",93957344479600,93957344479615],["v8::internal::compiler::MachineOperatorBuilder::Word64Ror()",93957344479632,93957344479647],["v8::internal::compiler::MachineOperatorBuilder::Int64Add()",93957344479664,93957344479679],["v8::internal::compiler::MachineOperatorBuilder::Int64Mul()",93957344479696,93957344479711],["gnu_get_libc_release",139871563419168,139871563419176],["__gconv_destroy_spec",139871563462304,139871563462326],["__newlocale",139871563470416,139871563472990],["__assert_fail",139871563474464,139871563474530],["isalnum",139871563474672,139871563474694],["iscntrl",139871563474736,139871563474758],["islower",139871563474800,139871563474824],["isprint",139871563474864,139871563474888],["passwd2des",139871564500784,139871564500851],["xdr_void",139871564502016,139871564502022],["xdr_long",139871564502288,139871564502343],["xdr_hyper",139871564502512,139871564502738],["fminf",139871565546048,139871565546106],["__acoshf128_finite",139871565550000,139871565550436],["__fmodf128_finite",139871565555504,139871565556726],["__j1f128_finite",139871565567776,139871565572789],["__ynf128_finite",139871565580320,139871565581728],["__logf128_finite",139871565590144,139871565591303],["__powf128_finite",139871565592624,139871565597069],["__sinhf128_finite",139871565597664,139871565598314],["deregister_tm_clones",93957335199504,93957335199552],["frame_dummy",93957335199680,93957335199696],["v8::Shell::ReadLine(v8::FunctionCallbackInfo<v8::Value> const&)",93957335265744,93957335265787],["v8::Shell::CreateAsyncHookTemplate(v8::Isolate*)",93957335268512,93957335268843],["v8::Shell::CreateEvaluationContext(v8::Isolate*)",93957335269504,93957335270192],["v8::Shell::WriteLcovData(v8::Isolate*, char const*)",93957335270784,93957335282252],["v8::internal::LocalHandles::Iterate(v8::internal::RootVisitor*)",93957336766192,93957336766365],["v8::internal::AllocationCounter::AdvanceAllocationObservers(unsigned long)",93957336768576,93957336768603],["v8::internal::ArrayBufferSweeper::RequestSweepYoung()",93957336771040,93957336771052],["v8::internal::ArrayBufferSweeper::OldBytes()",93957336772112,93957336772125],["v8::internal::ArrayBufferSweeper::SweepingJob::SweepYoung()",93957336772688,93957336773133],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::ArrayBufferSweeper::RequestSweep(v8::internal::ArrayBufferSweeper::SweepingScope)::$_0, void ()> >(std::__1::__function::__policy_storage const*)",93957336773776,93957336774314],["v8::internal::BasicMemoryChunk::Initialize(v8::internal::Heap*, unsigned long, unsigned long, unsigned long, unsigned long, v8::internal::BaseSpace*, v8::internal::VirtualMemory)",93957336774368,93957336774547],["v8::internal::CodeObjectRegistry::RegisterAlreadyExistingCodeObject(unsigned long)",93957336774624,93957336774651],["v8::internal::MinorMarkCompactCollector::EvacuateEpilogue()",93957337284608,93957337284674],["v8::internal::ExternalStringTableCleaner::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337305168,93957337305428],["void v8::internal::CallIterateBody::apply<v8::internal::FlexibleBodyDescriptor<8>, v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337310416,93957337310533],["void v8::internal::WasmTypeInfo::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337311904,93957337312003],["void v8::internal::JSTypedArray::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337313680,93957337313852],["void v8::internal::Code::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337314384,93957337314520],["void v8::internal::SmallOrderedHashTable<v8::internal::SmallOrderedNameDictionary>::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337314928,93957337315045],["void v8::internal::DataHandler::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337315488,93957337315671],["void v8::internal::SharedFunctionInfo::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337316000,93957337316117],["void v8::internal::ExportedSubClass::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337316240,93957337316377],["v8::internal::PointersUpdatingVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957337316448,93957337316547],["v8::internal::PointersUpdatingVisitor::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot)",93957337316592,93957337316656],["v8::internal::PointersUpdatingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337316704,93957337316779],["non-virtual thunk to v8::internal::PointersUpdatingVisitor::~PointersUpdatingVisitor()",93957337316848,93957337316862],["v8::internal::EvacuationWeakObjectRetainer::RetainAs(v8::internal::Object)",93957337316928,93957337316972],["v8::internal::YoungGenerationMarkingVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957337317344,93957337317718],["v8::internal::ProfilerListener::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>, int, int)",93957339702240,93957339706146],["v8::internal::SamplingHeapProfiler::AddStack()",93957339713632,93957339715283],["v8::internal::AllocationProfile::~AllocationProfile()",93957339720688,93957339720846],["v8::internal::StringsStorage::GetCopy(char const*)",93957339723408,93957339723687],["v8::internal::StringsStorage::Release(char const*)",93957339724880,93957339725186],["v8::internal::TickSample::Init(v8::internal::Isolate*, v8::RegisterState const&, v8::internal::TickSample::RecordCEntryFrame, bool, bool, v8::base::TimeDelta)",93957339727200,93957339727429],["v8::internal::TracingCpuProfilerImpl::~TracingCpuProfilerImpl()",93957339728608,93957339728636],["v8::internal::TracingCpuProfilerImpl::OnTraceEnabled()::$_0::__invoke(v8::Isolate*, void*)",93957339729024,93957339729037],["v8::internal::WeakCodeRegistry::Sweep(v8::internal::WeakCodeRegistry::Listener*)",93957339729232,93957339729476],["v8::internal::ExperimentalRegExpCompiler::CanBeHandled(v8::internal::RegExpTree*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, int)",93957339729568,93957339729634],["v8::internal::(anonymous namespace)::CanBeHandledVisitor::VisitAlternative(v8::internal::RegExpAlternative*, void*)",93957339730944,93957339731038],["v8::internal::(anonymous namespace)::CanBeHandledVisitor::VisitCharacterClass(v8::internal::RegExpCharacterClass*, void*)",93957339731088,93957339731124],["v8::internal::(anonymous namespace)::CompileVisitor::VisitGroup(v8::internal::RegExpGroup*, void*)",93957339731232,93957339731258],["v8::internal::(anonymous namespace)::CanBeHandledVisitor::VisitText(v8::internal::RegExpText*, void*)",93957339731280,93957339731375],["v8::internal::(anonymous namespace)::CompileVisitor::VisitAlternative(v8::internal::RegExpAlternative*, void*)",93957339732160,93957339732243],["v8::internal::(anonymous namespace)::CompileVisitor::VisitCharacterClass(v8::internal::RegExpCharacterClass*, void*)",93957339732432,93957339733865],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::Dir>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342448752,93957342448927],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::inspectCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342450512,93957342450651],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::inspectedObject2>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342451248,93957342451357],["v8_inspector::V8Console::CommandLineAPIScope::accessorSetterCallback(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&)",93957342452048,93957342452288],["v8_inspector::(anonymous namespace)::consoleContextToString(v8::Isolate*, v8::debug::ConsoleContext const&)",93957342453088,93957342453404],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8Console::Profile(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)::$_0, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342453456,93957342453544],["v8_inspector::V8DebuggerAgentImpl::V8DebuggerAgentImpl(v8_inspector::V8InspectorSessionImpl*, v8_crdtp::FrontendChannel*, v8_inspector::protocol::DictionaryValue*)",93957342453648,93957342453889],["v8_inspector::V8DebuggerAgentImpl::~V8DebuggerAgentImpl()",93957342454880,93957342454908],["v8_inspector::(anonymous namespace)::HeapStatsStream::WriteHeapStatsChunk(v8::HeapStatsUpdate*, int)",93957342560416,93957342560548],["v8_inspector::V8InspectorImpl::hasConsoleMessageStorage(int)",93957342565248,93957342565640],["v8_inspector::V8InspectorImpl::discardInspectedContext(int, int)",93957342572144,93957342572715],["v8_inspector::V8InspectorImpl::storeCurrentStackTrace(v8_inspector::StringView)",93957342575312,93957342575344],["v8_inspector::V8InspectorImpl::asyncTaskFinished(void*)",93957342575488,93957342575508],["v8_inspector::V8InspectorImpl::enableCounters()",93957342575968,93957342576343],["v8_inspector::V8InspectorImpl::forEachContext(int, std::__1::function<void (v8_inspector::InspectedContext*)> const&)",93957342577520,93957342578903],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> > >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> > >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> > >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> > > > >::__emplace_unique_key_args<int, std::__1::pair<int, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> > > >(int const&, std::__1::pair<int, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> > >&&)",93957342579488,93957342580402],["std::__1::unique_ptr<std::__1::__hash_node<std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, void*>, std::__1::__hash_node_destructor<std::__1::allocator<std::__1::__hash_node<std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, void*> > > >::~unique_ptr()",93957342582352,93957342582549],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8InspectorImpl::contextCollected(int, int)::$_1, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342582608,93957342582631],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8InspectorImpl::resetContextGroup(int)::$_2, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342582880,93957342582893],["std::__1::__shared_ptr_emplace<v8_inspector::V8Inspector::Counters, std::__1::allocator<v8_inspector::V8Inspector::Counters> >::~__shared_ptr_emplace()",93957342582928,93957342582966],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, std::__1::unique_ptr<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > >, std::__1::default_delete<std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InspectedContext, std::__1::default_delete<v8_inspector::InspectedContext> > > > > > > > > >::__emplace_unique_key_args<int, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>, std::__1::tuple<> >(int const&, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>&&, std::__1::tuple<>&&)",93957342582992,93957342583986],["v8_inspector::V8InspectorImpl::EvaluateScope::TerminateTask::~TerminateTask()",93957342584048,93957342584121],["v8_inspector::V8InspectorImpl::EvaluateScope::TerminateTask::Run()",93957342584208,93957342584261],["v8_inspector::V8InspectorSessionImpl::V8InspectorSessionImpl(v8_inspector::V8InspectorImpl*, int, int, v8_inspector::V8Inspector::Channel*, v8_inspector::StringView)",93957342584384,93957342585778],["v8::internal::compiler::Linkage::ComputeIncoming(v8::internal::Zone*, v8::internal::OptimizedCompilationInfo*)",93957344345008,93957344345074],["v8::internal::compiler::LoadElimination::AbstractState::KillAll(v8::internal::Zone*) const",93957344380672,93957344381192],["v8::internal::compiler::LoopFinderImpl::ConnectLoopTree(int)",93957344402976,93957344404567],["v8::internal::compiler::InductionVariable::AddUpperBound(v8::internal::compiler::Node*, v8::internal::compiler::InductionVariable::ConstraintKind)",93957344425920,93957344426754],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputRepresentationIs(v8::internal::compiler::Node const*, int, v8::internal::MachineRepresentation)",93957344437136,93957344437554],["std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<< <std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*)",93957344440240,93957344440279],["v8::internal::compiler::MachineGraph::RelocatableIntPtrConstant(long, v8::internal::RelocInfo::Mode)",93957344441120,93957344441258],["v8::internal::compiler::MachineOperatorReducer::ReplaceInt64(long)",93957344443760,93957344443806],["v8::internal::compiler::MachineOperatorReducer::Word32Sar(v8::internal::compiler::Node*, unsigned int)",93957344445200,93957344445313],["v8::internal::compiler::MachineOperatorReducer::ReduceInt32Add(v8::internal::compiler::Node*)",93957344445664,93957344446417],["v8::internal::compiler::MachineOperatorReducer::Int32Div(v8::internal::compiler::Node*, int)",93957344446944,93957344447492],["v8::internal::compiler::MachineOperatorReducer::Reduce(v8::internal::compiler::Node*)",93957344448464,93957344456435],["v8::internal::compiler::MachineOperatorReducer::ReduceWord32Shr(v8::internal::compiler::Node*)",93957344458528,93957344458703],["v8::internal::compiler::MachineOperatorReducer::ReduceWord32Equal(v8::internal::compiler::Node*)",93957344459584,93957344460495],["v8::internal::compiler::MachineOperatorReducer::ReduceInt64Sub(v8::internal::compiler::Node*)",93957344461376,93957344461949],["v8::internal::compiler::MachineOperatorReducer::ReduceInt32Mod(v8::internal::compiler::Node*)",93957344464080,93957344464631],["v8::internal::compiler::MachineOperatorReducer::ReplaceFloat32(float)",93957344465376,93957344465442],["v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22>::IntMatcher(v8::internal::compiler::Node*)",93957344465568,93957344465746],["v8::internal::compiler::MachineOperatorReducer::ReduceFloat64InsertHighWord32(v8::internal::compiler::Node*)",93957344466176,93957344466565],["v8::internal::compiler::MachineOperatorReducer::ReduceFloat64Compare(v8::internal::compiler::Node*)",93957344467008,93957344468545],["v8::internal::compiler::MachineOperatorReducer::ReduceConditional(v8::internal::compiler::Node*)",93957344468768,93957344469025],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<unsigned long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<unsigned long, (v8::internal::compiler::IrOpcode::Value)23> >::BinopMatcher(v8::internal::compiler::Node*)",93957344470176,93957344470310],["v8::internal::compiler::MachineOperatorReducer::Map64To32Comparison(v8::internal::compiler::Operator const*, bool)",93957344470448,93957344470575],["v8::internal::compiler::Reduction v8::internal::compiler::MachineOperatorReducer::ReduceWordNAnd<v8::internal::compiler::Word32Adapter>(v8::internal::compiler::Node*)",93957344470784,93957344471821],["v8::internal::compiler::Reduction v8::internal::compiler::MachineOperatorReducer::ReduceWordNAnd<v8::internal::compiler::Word64Adapter>(v8::internal::compiler::Node*)",93957344472752,93957344474356],["v8::internal::compiler::Reduction v8::internal::compiler::MachineOperatorReducer::ReduceWordNOr<v8::internal::compiler::Word32Adapter>(v8::internal::compiler::Node*)",93957344474912,93957344475128],["v8::internal::compiler::Reduction v8::internal::compiler::MachineOperatorReducer::ReduceWordNXor<v8::internal::compiler::Word32Adapter>(v8::internal::compiler::Node*)",93957344475664,93957344475821],["v8::base::Optional<std::__1::pair<v8::internal::compiler::Node*, unsigned int> > v8::internal::compiler::MachineOperatorReducer::ReduceWord32EqualForConstantRhs<v8::internal::compiler::Word64Adapter>(v8::internal::compiler::Node*, unsigned int)",93957344476368,93957344477058],["v8::internal::compiler::MachineOperatorReducer::reducer_name() const",93957344477408,93957344477421],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::LoadTransformation)",93957344477600,93957344477861],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::LoadLaneParameters)",93957344478032,93957344478252],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::StoreLaneParameters)",93957344478272,93957344478493],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::reserve(unsigned long)",93957346784576,93957346784686],["iconv",139871563419776,139871563420255],["__gconv_get_cache",139871563458560,139871563458568],["localeconv",139871563469792,139871563470286],["__ctype_get_mb_cur_max",139871563470384,139871563470405],["__duplocale",139871563472992,139871563473373],["__uselocale",139871563473568,139871563473663],["__assert_perror_fail",139871563474544,139871563474645],["svcfd_create",139871564497616,139871564497621],["xdecrypt",139871564501072,139871564501265],["xdr_free",139871564501952,139871564502014],["xdr_int",139871564502032,139871564502160],["clogf",139871565541744,139871565542848],["significandf",139871565546240,139871565546280],["fminmagf",139871565546784,139871565546919],["__atan2f128_finite",139871565552320,139871565553197],["__expf128_finite",139871565554256,139871565555500],["__hypotf128_finite",139871565556736,139871565557929],["__y0f128_finite",139871565562784,139871565567764],["__y1f128_finite",139871565572800,139871565578036],["register_tm_clones",93957335199552,93957335199616],["v8::Shell::LookupCounter(char const*)",93957335265104,93957335265116],["v8::Shell::CreateRealmTemplate(v8::Isolate*)",93957335266128,93957335267249],["v8::Shell::CreateD8Template(v8::Isolate*)",93957335268112,93957335268499],["v8::Shell::PromiseRejectCallback(v8::PromiseRejectMessage)",93957335268848,93957335269167],["v8::internal::IdentityMap<unsigned int, v8::internal::ZoneAllocationPolicy>::~IdentityMap()",93957336765616,93957336765662],["v8::internal::PersistentHandles::AddBlock()",93957336767008,93957336767367],["v8::internal::AllocationCounter::AddAllocationObserver(v8::internal::AllocationObserver*)",93957336768128,93957336768368],["v8::internal::PauseAllocationObserversScope::PauseAllocationObserversScope(v8::internal::Heap*)",93957336769488,93957336769617],["v8::internal::ArrayBufferSweeper::AdjustCountersAndMergeIfPossible()",93957336770704,93957336771037],["v8::internal::ArrayBufferSweeper::RequestSweep(v8::internal::ArrayBufferSweeper::SweepingScope)",93957336771056,93957336772077],["v8::internal::ArrayBufferSweeper::YoungBytes()",93957336772096,93957336772109],["v8::internal::ArrayBufferSweeper::ReleaseAll()",93957336772128,93957336772394],["int v8::internal::MarkCompactCollectorBase::CollectRememberedSetUpdatingItems<v8::internal::OldLargeObjectSpace>(std::__1::vector<std::__1::unique_ptr<v8::internal::UpdatingItem, std::__1::default_delete<v8::internal::UpdatingItem> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::UpdatingItem, std::__1::default_delete<v8::internal::UpdatingItem> > > >*, v8::internal::OldLargeObjectSpace*, v8::internal::RememberedSetUpdatingMode)",93957337272384,93957337272734],["v8::internal::YoungGenerationMigrationObserver::~YoungGenerationMigrationObserver()",93957337300976,93957337301000],["v8::internal::MarkCompactCollector::CustomRootBodyMarkingVisitor::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957337303936,93957337304253],["v8::internal::RecordMigratedSlotVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337306304,93957337306406],["void v8::internal::BodyDescriptorApply<v8::internal::CallIterateBody, void, v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*>(v8::internal::InstanceType, v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337307280,93957337310274],["void v8::internal::CallIterateBody::apply<v8::internal::DescriptorArray::BodyDescriptor, v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337310928,93957337311045],["void v8::internal::WasmArray::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337311488,93957337311637],["void v8::internal::WasmInstanceObject::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337312384,93957337313037],["void v8::internal::JSDataView::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337313536,93957337313676],["void v8::internal::WeakCell::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337313856,93957337314070],["void v8::internal::Map::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337314240,93957337314376],["void v8::internal::BytecodeArray::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337314528,93957337314657],["void v8::internal::SmallOrderedHashTable<v8::internal::SmallOrderedHashMap>::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337314800,93957337314917],["void v8::internal::SwissNameDictionary::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337315056,93957337315173],["void v8::internal::AllocationSite::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337315328,93957337315474],["void v8::internal::SubclassBodyDescriptor<v8::internal::FixedBodyDescriptor<4, 28, 28>, v8::internal::FixedBodyDescriptor<28, 72, 72> >::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337315680,93957337315831],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, std::__1::__unordered_map_hasher<v8::internal::CodeEntryAndLineNumber, std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, v8::internal::ProfileNode::Hasher, v8::internal::ProfileNode::Equals, true>, std::__1::__unordered_map_equal<v8::internal::CodeEntryAndLineNumber, std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, v8::internal::ProfileNode::Equals, v8::internal::ProfileNode::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*> > >::__emplace_unique_key_args<v8::internal::CodeEntryAndLineNumber, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::CodeEntryAndLineNumber&&>, std::__1::tuple<> >(v8::internal::CodeEntryAndLineNumber const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::CodeEntryAndLineNumber&&>&&, std::__1::tuple<>&&)",93957339696080,93957339697205],["v8::internal::ProfilerListener::CodeMoveEvent(v8::internal::AbstractCode, v8::internal::AbstractCode)",93957339707856,93957339708083],["v8::internal::ProfilerStats::AddReason(v8::internal::ProfilerStats::Reason)",93957339712592,93957339712605],["v8::internal::SamplingHeapProfiler::GetAllocationProfile()",93957339719200,93957339719748],["v8::internal::AllocationProfile::GetSamples()",93957339720512,93957339720522],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::SamplingHeapProfiler::Sample*, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::Sample, std::__1::default_delete<v8::internal::SamplingHeapProfiler::Sample> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::SamplingHeapProfiler::Sample*, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::Sample, std::__1::default_delete<v8::internal::SamplingHeapProfiler::Sample> > >, std::__1::__unordered_map_hasher<v8::internal::SamplingHeapProfiler::Sample*, std::__1::__hash_value_type<v8::internal::SamplingHeapProfiler::Sample*, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::Sample, std::__1::default_delete<v8::internal::SamplingHeapProfiler::Sample> > >, std::__1::hash<v8::internal::SamplingHeapProfiler::Sample*>, std::__1::equal_to<v8::internal::SamplingHeapProfiler::Sample*>, true>, std::__1::__unordered_map_equal<v8::internal::SamplingHeapProfiler::Sample*, std::__1::__hash_value_type<v8::internal::SamplingHeapProfiler::Sample*, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::Sample, std::__1::default_delete<v8::internal::SamplingHeapProfiler::Sample> > >, std::__1::equal_to<v8::internal::SamplingHeapProfiler::Sample*>, std::__1::hash<v8::internal::SamplingHeapProfiler::Sample*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::SamplingHeapProfiler::Sample*, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::Sample, std::__1::default_delete<v8::internal::SamplingHeapProfiler::Sample> > > > >::__emplace_unique_key_args<v8::internal::SamplingHeapProfiler::Sample*, v8::internal::SamplingHeapProfiler::Sample*, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::Sample, std::__1::default_delete<v8::internal::SamplingHeapProfiler::Sample> > >(v8::internal::SamplingHeapProfiler::Sample* const&, v8::internal::SamplingHeapProfiler::Sample*&&, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::Sample, std::__1::default_delete<v8::internal::SamplingHeapProfiler::Sample> >&&)",93957339721168,93957339722059],["v8::internal::StringsStorage::StringsStorage()",93957339723056,93957339723235],["v8::internal::StringsStorage::GetVFormatted(char const*, __va_list_tag*)",93957339723840,93957339724133],["v8::internal::StringsStorage::GetConsName(char const*, v8::internal::Name)",93957339724448,93957339724873],["v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::Remove(void* const&, unsigned int)",93957339725200,93957339725487],["v8::internal::Symbolizer::SymbolizeTickSample(v8::internal::TickSample const&)",93957339725504,93957339727199],["v8::internal::TickSample::GetStackSample(v8::internal::Isolate*, v8::RegisterState*, v8::internal::TickSample::RecordCEntryFrame, void**, unsigned long, v8::SampleInfo*, v8::StateTag*, bool)",93957339727440,93957339728320],["v8::internal::TracingCpuProfilerImpl::~TracingCpuProfilerImpl()",93957339728416,93957339728604],["v8::internal::TracingCpuProfilerImpl::OnTraceEnabled()",93957339728640,93957339728737],["v8::internal::TracingCpuProfilerImpl::StartProfiling()",93957339728816,93957339729016],["v8::internal::TracingCpuProfilerImpl::OnTraceDisabled()::$_1::__invoke(v8::Isolate*, void*)",93957339729040,93957339729137],["v8_inspector::inspectImpl(v8::FunctionCallbackInfo<v8::Value> const&, v8::Local<v8::Value>, int, v8_inspector::(anonymous namespace)::InspectRequest, v8_inspector::V8InspectorImpl*)",93957342445696,93957342446228],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::Clear>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342449488,93957342449663],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::monitorFunctionCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342450288,93957342450392],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::queryObjectsCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342450800,93957342450904],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::inspectedObject1>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342451136,93957342451245],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::inspectedObject3>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342451360,93957342451469],["v8_inspector::V8Console::CommandLineAPIScope::accessorGetterCallback(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957342451584,93957342452033],["v8_inspector::V8Console::CommandLineAPIScope::CommandLineAPIScope(v8::Local<v8::Context>, v8::Local<v8::Object>, v8::Local<v8::Object>)",93957342452288,93957342452767],["v8_inspector::(anonymous namespace)::InspectableHeapObject::get(v8::Local<v8::Context>)",93957342560336,93957342560416],["v8_inspector::V8Inspector::create(v8::Isolate*, v8_inspector::V8InspectorClient*)",93957342561840,93957342561897],["v8_inspector::V8InspectorImpl::disableStackCapturingIfNeeded()",93957342564576,93957342564600],["v8_inspector::V8InspectorImpl::getContext(int, int) const",93957342566720,93957342567417],["v8_inspector::V8InspectorImpl::contextCollected(int, int)",93957342571088,93957342571665],["std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::V8ConsoleMessageStorage, std::__1::default_delete<v8_inspector::V8ConsoleMessageStorage> > > > >::erase(int const&)",93957342573376,93957342573901],["v8_inspector::V8InspectorImpl::exceptionRevoked(v8::Local<v8::Context>, unsigned int, v8_inspector::StringView)",93957342574752,93957342575295],["v8_inspector::V8InspectorImpl::externalAsyncTaskFinished(v8_inspector::V8StackTraceId const&)",93957342575360,93957342575374],["v8_inspector::V8InspectorImpl::asyncTaskStarted(void*)",93957342575456,93957342575476],["v8_inspector::V8InspectorImpl::allAsyncTasksCanceled()",93957342575520,93957342575534],["v8_inspector::V8Inspector::Counters::~Counters()",93957342575792,93957342575968],["v8_inspector::V8InspectorImpl::regexContext()",93957342576352,93957342576491],["v8_inspector::V8InspectorImpl::sessionById(int, int)",93957342577024,93957342577505],["v8_inspector::V8InspectorImpl::EvaluateScope::EvaluateScope(v8_inspector::InjectedScript::Scope const&)",93957342578912,93957342578948],["v8_inspector::V8InspectorImpl::EvaluateScope::setTimeout(double)",93957342579120,93957342579480],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, std::__1::map<int, v8_inspector::V8InspectorSessionImpl*, std::__1::less<int>, std::__1::allocator<std::__1::pair<int const, v8_inspector::V8InspectorSessionImpl*> > > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, std::__1::map<int, v8_inspector::V8InspectorSessionImpl*, std::__1::less<int>, std::__1::allocator<std::__1::pair<int const, v8_inspector::V8InspectorSessionImpl*> > > >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, std::__1::map<int, v8_inspector::V8InspectorSessionImpl*, std::__1::less<int>, std::__1::allocator<std::__1::pair<int const, v8_inspector::V8InspectorSessionImpl*> > > >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, std::__1::map<int, v8_inspector::V8InspectorSessionImpl*, std::__1::less<int>, std::__1::allocator<std::__1::pair<int const, v8_inspector::V8InspectorSessionImpl*> > > >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, std::__1::map<int, v8_inspector::V8InspectorSessionImpl*, std::__1::less<int>, std::__1::allocator<std::__1::pair<int const, v8_inspector::V8InspectorSessionImpl*> > > > > >::__emplace_unique_key_args<int, std::__1::piecewise_construct_t const&, std::__1::tuple<int&&>, std::__1::tuple<> >(int const&, std::__1::piecewise_construct_t const&, std::__1::tuple<int&&>&&, std::__1::tuple<>&&)",93957342580416,93957342581340],["v8::internal::compiler::JSTypedLowering::ReduceJSStoreContext(v8::internal::compiler::Node*)",93957344321920,93957344322843],["v8::internal::compiler::LoadElimination::ReduceTransitionElementsKind(v8::internal::compiler::Node*)",93957344354816,93957344356649],["v8::internal::compiler::LoadElimination::AbstractMaps::Print() const",93957344375888,93957344377362],["void std::__1::__tree<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo>, std::__1::__map_value_compare<v8::internal::compiler::Node*, std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo>, std::__1::less<v8::internal::compiler::Node*>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo> > >::__assign_multi<std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo>, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo>, void*>*, long> >(std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo>, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo>, void*>*, long>, std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo>, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::FieldInfo>, void*>*, long>)",93957344389248,93957344390282],["v8::internal::compiler::LoopFinderImpl::CreateLoopInfo(v8::internal::compiler::Node*)",93957344399696,93957344400358],["v8::internal::compiler::LoopPeeler::Peel(v8::internal::compiler::LoopTree::Loop*)",93957344408352,93957344412501],["v8::internal::compiler::LoopVariableOptimizer::LoopVariableOptimizer(v8::internal::compiler::Graph*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::Zone*)",93957344423472,93957344423706],["v8::internal::compiler::LoopVariableOptimizer::DetectInductionVariables(v8::internal::compiler::Node*)",93957344428400,93957344429007],["v8::internal::compiler::MachineGraphVerifier::Run(v8::internal::compiler::Graph*, v8::internal::compiler::Schedule const*, v8::internal::compiler::Linkage*, bool, char const*, v8::internal::Zone*)",93957344431920,93957344436613],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputIsTagged(v8::internal::compiler::Node const*, int)",93957344437936,93957344438293],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputIsCompressedOrTaggedOrInt32(v8::internal::compiler::Node const*, int)",93957344439488,93957344439857],["std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_ostringstream()",93957344440320,93957344440491],["v8::internal::compiler::MachineGraph::IntPtrConstant(long)",93957344440784,93957344440978],["v8::internal::compiler::MachineGraph::Float64Constant(double)",93957344441392,93957344441515],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, std::__1::__unordered_map_hasher<std::__1::pair<long, char>, std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, v8::base::hash<std::__1::pair<long, char> >, std::__1::equal_to<std::__1::pair<long, char> >, true>, std::__1::__unordered_map_equal<std::__1::pair<long, char>, std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*>, std::__1::equal_to<std::__1::pair<long, char> >, v8::base::hash<std::__1::pair<long, char> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<std::__1::pair<long, char>, v8::internal::compiler::Node*> > >::__emplace_unique_key_args<std::__1::pair<long, char>, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::pair<long, char> const&>, std::__1::tuple<> >(std::__1::pair<long, char> const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::pair<long, char> const&>&&, std::__1::tuple<>&&)",93957344442704,93957344443728],["v8::internal::compiler::Diamond::Diamond(v8::internal::compiler::Graph*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::compiler::Node*, v8::internal::compiler::BranchHint)",93957344444176,93957344444420],["v8::internal::compiler::MachineOperatorReducer::ReduceWord32And(v8::internal::compiler::Node*)",93957344444640,93957344445187],["v8::internal::compiler::MachineOperatorReducer::Word32Shr(v8::internal::compiler::Node*, unsigned int)",93957344445328,93957344445439],["v8::internal::compiler::MachineOperatorReducer::Int32Add(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344445552,93957344445661],["v8::internal::compiler::MachineOperatorReducer::Int32Sub(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344446432,93957344446541],["v8::internal::compiler::MachineOperatorReducer::Int32Mul(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344446864,93957344446941],["v8::internal::compiler::MachineOperatorReducer::Uint32Div(v8::internal::compiler::Node*, unsigned int)",93957344447504,93957344448044],["v8::internal::compiler::MachineOperatorReducer::ReduceTruncateInt64ToInt32(v8::internal::compiler::Node*)",93957344448288,93957344448451],["v8::internal::compiler::MachineOperatorReducer::ReduceProjection(unsigned long, v8::internal::compiler::Node*)",93957344456448,93957344456729],["v8::internal::compiler::MachineOperatorReducer::ReduceWord64Shl(v8::internal::compiler::Node*)",93957344457440,93957344458528],["v8::internal::compiler::MachineOperatorReducer::ReduceWord64Shr(v8::internal::compiler::Node*)",93957344458704,93957344458956],["v8::internal::compiler::MachineOperatorReducer::ReduceWord64Sar(v8::internal::compiler::Node*)",93957344459328,93957344459580],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23> >::BinopMatcher(v8::internal::compiler::Node*)",93957344460496,93957344460630],["v8::internal::compiler::MachineOperatorReducer::ReduceInt64Add(v8::internal::compiler::Node*)",93957344460752,93957344461366],["v8::internal::compiler::MachineOperatorReducer::ReduceInt64Mul(v8::internal::compiler::Node*)",93957344461952,93957344463071],["v8::internal::compiler::MachineOperatorReducer::ReduceUint32Div(v8::internal::compiler::Node*)",93957344463680,93957344464070],["v8::internal::compiler::MachineOperatorReducer::ReduceUint32Mod(v8::internal::compiler::Node*)",93957344464640,93957344464983],["operator new[](unsigned long, std::nothrow_t const&)",93957346781424,93957346781460],["_init",93957348461728,93957348461752],["__errno_location",139871563419584,139871563419601],["__gconv_open",139871563420320,139871563421109],["__gconv_transliterate",139871563456848,139871563458052],["__gconv_create_spec",139871563461568,139871563462296],["setlocale",139871563462848,139871563464689],["nl_langinfo",139871563470288,139871563470304],["svc_getreqset",139871564495424,139871564495553],["svcudp_create",139871564500240,139871564500255],["xencrypt",139871564500864,139871564501057],["xdr_array",139871564501280,139871564501642],["csinf",139871565530256,139871565531335],["__clog10f",139871565544720,139871565545840],["__iseqsigf",139871565546128,139871565546189],["llogbf",139871565546352,139871565546444],["fmaxmagf",139871565546640,139871565546775],["__acosf128_finite",139871565547248,139871565549990],["__asinf128_finite",139871565550448,139871565552308],["__atanhf128_finite",139871565553200,139871565553722],["v8::Shell::SetWaitUntilDone(v8::Isolate*, bool)",93957335264480,93957335264842],["v8::Shell::AddHistogramSample(void*, int)",93957335265136,93957335265148],["v8::Shell::CreateTestRunnerTemplate(v8::Isolate*)",93957335265792,93957335266123],["v8::Shell::CreatePerformanceTemplate(v8::Isolate*)",93957335267264,93957335267490],["v8::internal::HandleScope::DeleteExtensions(v8::internal::Isolate*)",93957336764752,93957336764874],["v8::internal::LocalHandleScope::CloseMainThreadScope(v8::internal::LocalHeap*, unsigned long*, unsigned long*)",93957336765856,93957336765908],["v8::internal::PersistentHandles::PersistentHandles(v8::internal::Isolate*)",93957336766736,93957336766832],["v8::internal::PersistentHandlesList::Iterate(v8::internal::RootVisitor*, v8::internal::Isolate*)",93957336767440,93957336767669],["v8::internal::PersistentHandlesScope::Detach()",93957336768064,93957336768120],["v8::internal::AllocationCounter::RemoveAllocationObserver(v8::internal::AllocationObserver*)",93957336768368,93957336768568],["v8::internal::AllocationCounter::InvokeAllocationObservers(unsigned long, unsigned long, unsigned long)",93957336768608,93957336769486],["v8::internal::PauseAllocationObserversScope::~PauseAllocationObserversScope()",93957336769632,93957336769761],["v8::internal::Evacuator::EvacuatePage(v8::internal::MemoryChunk*)",93957337257392,93957337257995],["v8::internal::MinorMarkCompactCollector::~MinorMarkCompactCollector()",93957337274784,93957337274812],["v8::internal::MinorMarkCompactCollector::DrainMarkingWorklist()",93957337286240,93957337297115],["v8::internal::FullEvacuator::Finalize()",93957337301456,93957337301938],["v8::internal::MarkCompactCollector::RootMarkingVisitor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)",93957337303200,93957337303501],["v8::internal::MarkCompactCollector::CustomRootBodyMarkingVisitor::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957337304656,93957337305046],["void std::__1::__function::__policy_invoker<void (v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::HeapObject)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::MarkCompactCollector::FlushBytecodeFromSFI(v8::internal::SharedFunctionInfo)::$_4, void (v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::HeapObject)> >(std::__1::__function::__policy_storage const*, v8::internal::HeapObject&&, v8::internal::CompressedObjectSlot&&, v8::internal::HeapObject&&)",93957337305936,93957337306172],["v8::internal::RecordMigratedSlotVisitor::VisitEphemeron(v8::internal::HeapObject, int, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337306464,93957337306763],["v8::internal::RecordMigratedSlotVisitor::RecordMigratedSlot(v8::internal::HeapObject, v8::internal::MaybeObject, unsigned long)",93957337307040,93957337307268],["void v8::internal::CallIterateBody::apply<v8::internal::FixedArray::BodyDescriptor, v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337310288,93957337310405],["void v8::internal::CallIterateBody::apply<v8::internal::JSObject::BodyDescriptor, v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337310544,93957337310919],["void v8::internal::CallIterateBody::apply<v8::internal::FeedbackVector::BodyDescriptor, v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337311056,93957337311173],["void v8::internal::NativeContext::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337311360,93957337311487],["void v8::internal::WasmStruct::BodyDescriptor::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337311648,93957337311890],["void v8::internal::BodyDescriptorBase::IterateJSObjectBodyImpl<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, int, v8::internal::RecordMigratedSlotVisitor*)",93957337312016,93957337312374],["void v8::internal::JSWeakCollection::BodyDescriptorImpl::IterateBody<v8::internal::RecordMigratedSlotVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::RecordMigratedSlotVisitor*)",93957337313040,93957337313382],["v8::internal::CodeMap::RemoveCode(v8::internal::CodeEntry*)",93957339690960,93957339691544],["void std::__1::vector<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> > > >::__emplace_back_slow_path<v8::internal::CpuProfile*>(v8::internal::CpuProfile*&&)",93957339699936,93957339700263],["v8::internal::ProfilerListener::CallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957339706976,93957339707138],["v8::internal::ProfilerListener::WeakCodeClearEvent()",93957339708960,93957339708981],["v8::internal::CodeEntry::RareData::~RareData()",93957339711328,93957339711642],["v8::internal::SamplingHeapProfiler::~SamplingHeapProfiler()",93957339712896,93957339713068],["v8::internal::SamplingHeapProfiler::AllocationNode::AddChildNode(unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> >)",93957339716304,93957339716559],["v8::internal::SamplingHeapProfiler::Observer::Step(int, unsigned long, unsigned long)",93957339720160,93957339720186],["v8::internal::AllocationProfile::GetRootNode()",93957339720448,93957339720511],["v8::internal::AllocationProfile::~AllocationProfile()",93957339720528,93957339720687],["std::__1::__deque_base<v8::AllocationProfile::Node, std::__1::allocator<v8::AllocationProfile::Node> >::clear()",93957339720848,93957339721168],["std::__1::__tree<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > >, std::__1::__map_value_compare<unsigned long, std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > >, std::__1::less<unsigned long>, true>, std::__1::allocator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > > > >::erase(std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > >, std::__1::__tree_node<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::SamplingHeapProfiler::AllocationNode, std::__1::default_delete<v8::internal::SamplingHeapProfiler::AllocationNode> > >, void*>*, long>)",93957339722064,93957339722241],["_ZNSt3__16vectorIN2v817AllocationProfile6SampleENS_9allocatorIS3_EEE6assignIPS3_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS3_NS_15iterator_traitsISA_E9referenceEEE5valueEvE4typeESA_SA_",93957339722688,93957339723044],["v8::internal::StringsStorage::~StringsStorage()",93957339723248,93957339723403],["v8::internal::StringsStorage::GetFormatted(char const*, ...)",93957339723696,93957339723828],["v8::internal::StringsStorage::GetName(v8::internal::Name)",93957339724144,93957339724415],["v8_inspector::V8Console::TimeStamp(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342443072,93957342443251],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::memoryGetterCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342446896,93957342446988],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::Profile>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342449104,93957342449282],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::keysCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342449840,93957342449940],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::undebugFunctionCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342450176,93957342450280],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::unmonitorFunctionCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342450400,93957342450504],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::copyCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342450656,93957342450798],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::lastEvaluationResultCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342450912,93957342451016],["void std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback> > > >::__push_back_slow_path<std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback> > >(std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::Backend::CollectGarbageCallback> >&&)",93957342560768,93957342561511],["v8_inspector::V8InspectorImpl::~V8InspectorImpl()",93957342562448,93957342563157],["v8_inspector::V8InspectorImpl::compileScript(v8::Local<v8::Context>, v8_inspector::String16 const&, v8_inspector::String16 const&)",93957342564368,93957342564517],["v8_inspector::V8InspectorImpl::unmuteExceptions(int)",93957342564672,93957342564725],["v8_inspector::V8InspectorImpl::connect(int, v8_inspector::V8Inspector::Channel*, v8_inspector::StringView)",93957342565664,93957342565969],["v8_inspector::V8InspectorImpl::contextById(int)",93957342567856,93957342568312],["v8_inspector::V8InspectorImpl::contextDestroyed(v8::Local<v8::Context>)",93957342570640,93957342571081],["std::__1::unordered_map<int, int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, int> > >::erase(int const&)",93957342571680,93957342572143],["v8_inspector::V8InspectorImpl::resetContextGroup(int)",93957342572720,93957342573370],["v8_inspector::V8InspectorImpl::idleStarted()",93957342573904,93957342573923],["v8_inspector::V8InspectorImpl::exceptionThrown(v8::Local<v8::Context>, v8_inspector::StringView, v8::Local<v8::Value>, v8_inspector::StringView, v8_inspector::StringView, unsigned int, unsigned int, std::__1::unique_ptr<v8_inspector::V8StackTrace, std::__1::default_delete<v8_inspector::V8StackTrace> >, int)",93957342573952,93957342574745],["v8_inspector::V8InspectorImpl::captureStackTrace(bool)",93957342575296,93957342575310],["v8_inspector::V8InspectorImpl::externalAsyncTaskStarted(v8_inspector::V8StackTraceId const&)",93957342575344,93957342575358],["v8_inspector::V8InspectorImpl::asyncTaskScheduled(v8_inspector::StringView, void*, bool)",93957342575376,93957342575409],["v8::internal::compiler::JSTypedLowering::ReduceJSComparison(v8::internal::compiler::Node*)",93957344300432,93957344301989],["v8::internal::compiler::JSTypedLowering::ReduceJSGeneratorRestoreRegister(v8::internal::compiler::Node*)",93957344339024,93957344339730],["v8::internal::compiler::Linkage::GetParameterSecondaryLocation(int) const",93957344347936,93957344348061],["v8::internal::compiler::LoadElimination::ReduceOtherNode(v8::internal::compiler::Node*)",93957344364848,93957344365188],["v8::internal::compiler::LoadElimination::AbstractMaps::Kill(v8::internal::compiler::LoadElimination::AliasStateInfo const&, v8::internal::Zone*) const",93957344373200,93957344374186],["v8::internal::compiler::LoadElimination::AbstractState::Merge(v8::internal::compiler::LoadElimination::AbstractState const*, v8::internal::Zone*)",93957344378992,93957344379230],["v8::internal::compiler::LoadElimination::ComputeLoopStateForStoreField(v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::AbstractState const*, v8::internal::compiler::FieldAccess const&) const",93957344387312,93957344388173],["v8::internal::compiler::LoopFinder::FindUnnestedLoopFromHeader(v8::internal::compiler::Node*, v8::internal::Zone*, unsigned long)",93957344392224,93957344393544],["v8::internal::compiler::LoopFinderImpl::FinishLoopTree()",93957344398272,93957344399400],["void std::__1::vector<v8::internal::compiler::LoopTree::Loop, v8::internal::ZoneAllocator<v8::internal::compiler::LoopTree::Loop> >::__push_back_slow_path<v8::internal::compiler::LoopTree::Loop>(v8::internal::compiler::LoopTree::Loop&&)",93957344400976,93957344401457],["v8::internal::compiler::LoopFinderImpl::PrintLoop(v8::internal::compiler::LoopTree::Loop*)",93957344406992,93957344407379],["v8::internal::compiler::LoopPeeler::PeelInnerLoops(v8::internal::compiler::LoopTree::Loop*)",93957344414752,93957344414972],["v8::internal::compiler::UnrollLoop(v8::internal::compiler::Node*, v8::internal::ZoneUnorderedSet<v8::internal::compiler::Node*, v8::base::hash<v8::internal::compiler::Node*>, std::__1::equal_to<v8::internal::compiler::Node*> >*, unsigned int, v8::internal::compiler::Graph*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::Zone*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*)",93957344416976,93957344421223],["v8::internal::compiler::LoopVariableOptimizer::VisitNode(v8::internal::compiler::Node*)",93957344425040,93957344425328],["v8::internal::compiler::LoopVariableOptimizer::VisitMerge(v8::internal::compiler::Node*)",93957344427536,93957344427964],["v8::internal::compiler::LoopVariableOptimizer::AddCmpToLimits(v8::internal::compiler::FunctionalList<v8::internal::compiler::LoopVariableOptimizer::Constraint>*, v8::internal::compiler::Node*, v8::internal::compiler::InductionVariable::ConstraintKind, bool)",93957344429360,93957344429769],["v8::internal::compiler::LoopVariableOptimizer::ChangeToPhisAndInsertGuards()",93957344430864,93957344431919],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputForInt64Op(v8::internal::compiler::Node const*, int)",93957344436624,93957344437125],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputIsCompressedOrTagged(v8::internal::compiler::Node const*, int)",93957344437568,93957344437925],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputForFloat64Op(v8::internal::compiler::Node const*, int)",93957344438304,93957344438658],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputForInt32Op(v8::internal::compiler::Node const*, int)",93957344439040,93957344439479],["v8::internal::compiler::(anonymous namespace)::MachineRepresentationChecker::CheckValueInputForFloat32Op(v8::internal::compiler::Node const*, int)",93957344439872,93957344440226],["std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str() const",93957344440288,93957344440316],["std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::str() const",93957344440496,93957344440524],["v8::internal::compiler::MachineGraph::Int64Constant(long)",93957344440656,93957344440775],["v8::internal::compiler::MachineGraph::TaggedIndexConstant(long)",93957344440992,93957344441114],["v8::internal::compiler::MachineGraph::Float32Constant(float)",93957344441264,93957344441387],["v8::internal::compiler::MachineGraph::PointerConstant(long)",93957344441520,93957344441642],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, v8::internal::compiler::SerializerForBackgroundCompilation::Environment*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, v8::internal::compiler::SerializerForBackgroundCompilation::Environment*>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, v8::internal::compiler::SerializerForBackgroundCompilation::Environment*>, v8::base::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, v8::internal::compiler::SerializerForBackgroundCompilation::Environment*>, std::__1::equal_to<int>, v8::base::hash<int>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<int, v8::internal::compiler::SerializerForBackgroundCompilation::Environment*> > >::__emplace_unique_key_args<int, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>, std::__1::tuple<> >(int const&, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>&&, std::__1::tuple<>&&)",93957344441744,93957344442698],["v8::internal::compiler::MachineOperatorReducer::MachineOperatorReducer(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::MachineGraph*, bool)",93957344443728,93957344443755],["v8::internal::compiler::MachineOperatorReducer::Float64PowHalf(v8::internal::compiler::Node*)",93957344443808,93957344444166],["v8::internal::compiler::Diamond::Phi(v8::internal::MachineRepresentation, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344444432,93957344444525],["operator new(unsigned long)",93957346781248,93957346781357],["operator new[](unsigned long, std::align_val_t)",93957346781728,93957346781738],["__libc_csu_fini",93957348461696,93957348461697],["__libc_init_first",139871563418496,139871563418497],["gnu_get_libc_version",139871563419184,139871563419192],["iconv_open",139871563419616,139871563419773],["iconv_close",139871563420256,139871563420308],["__gconv_get_modules_db",139871563421824,139871563421832],["svcerr_weakauth",139871564494352,139871564494440],["svc_getreq_poll",139871564495664,139871564495809],["svcudp_bufcreate",139871564499232,139871564500231],["svcudp_enablecache",139871564500256,139871564500520],["cimagf",139871565527968,139871565527981],["catanf",139871565537616,139871565538898],["csqrtf",139871565542960,139871565544500],["nextdownf",139871565545936,139871565545972],["nanf",139871565546112,139871565546121],["canonicalizef",139871565546192,139871565546234],["ilogbf",139871565546288,139871565546347],["log1pf",139871565546448,139871565546505],["v8::Shell::WaitForRunningWorkers()",93957335261472,93957335261942],["v8::Shell::Version(v8::FunctionCallbackInfo<v8::Value> const&)",93957335264880,93957335264945],["v8::Shell::CreateHistogram(char const*, int, int, unsigned long)",93957335265120,93957335265135],["v8::Shell::GetCounter(char const*, bool)",93957335265152,93957335265742],["v8::internal::EternalHandles::~EternalHandles()",93957336763248,93957336763363],["v8::internal::CanonicalHandleScope::CanonicalHandleScope(v8::internal::Isolate*, v8::internal::OptimizedCompilationInfo*)",93957336764928,93957336765170],["v8::internal::LocalHandleScope::GetMainThreadHandle(v8::internal::LocalHeap*, unsigned long)",93957336765712,93957336765799],["v8::internal::LocalHandles::~LocalHandles()",93957336765952,93957336766086],["v8::internal::LocalHandles::AddBlock()",93957336766368,93957336766729],["v8::internal::PersistentHandles::~PersistentHandles()",93957336766832,93957336767004],["v8::internal::PersistentHandles::GetHandle(unsigned long)",93957336767376,93957336767431],["v8::internal::PersistentHandlesScope::PersistentHandlesScope(v8::internal::Isolate*)",93957336767680,93957336768022],["v8::internal::MarkCompactCollector::ClearWeakReferences()",93957337243376,93957337244204],["void v8::internal::MarkCompactCollectorBase::CreateAndExecuteEvacuationTasks<v8::internal::FullEvacuator, v8::internal::MarkCompactCollector>(v8::internal::MarkCompactCollector*, std::__1::vector<std::__1::pair<v8::internal::ParallelWorkItem, v8::internal::MemoryChunk*>, std::__1::allocator<std::__1::pair<v8::internal::ParallelWorkItem, v8::internal::MemoryChunk*> > >, v8::internal::MigrationObserver*, long)",93957337264784,93957337265818],["v8::internal::MinorMarkCompactCollector::MinorMarkCompactCollector(v8::internal::Heap*)",93957337273696,93957337273819],["v8::internal::MinorMarkCompactCollector::ClearNonLiveReferences()",93957337279568,93957337280749],["v8::internal::MinorMarkCompactCollector::CreateRememberedSetUpdatingItem(v8::internal::MemoryChunk*, v8::internal::RememberedSetUpdatingMode)",93957337284768,93957337284845],["v8::internal::MinorMarkCompactCollector::TraceFragmentation()",93957337297232,93957337298285],["v8::internal::FullEvacuator::~FullEvacuator()",93957337301200,93957337301418],["v8::internal::FullEvacuator::GetTracingScope()",93957337301968,93957337301979],["v8::internal::MarkCompactCollector::RootMarkingVisitor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957337302800,93957337303190],["v8::internal::MarkCompactCollector::CustomRootBodyMarkingVisitor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::CompressedObjectSlot)",93957337303504,93957337303932],["v8::internal::MarkCompactCollector::CustomRootBodyMarkingVisitor::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957337304256,93957337304644],["v8::internal::InternalizedStringTableCleaner::VisitRootPointers(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957337305056,93957337305161],["v8::internal::MarkCompactWeakObjectRetainer::RetainAs(v8::internal::Object)",93957337305440,93957337305932],["v8::internal::EvacuateRecordOnlyVisitor::Visit(v8::internal::HeapObject, int)",93957337306176,93957337306296],["v8::internal::RecordMigratedSlotVisitor::VisitPointer(v8::internal::HeapObject, v8::internal::CompressedObjectSlot)",93957337306416,93957337306454],["v8::internal::RecordMigratedSlotVisitor::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957337306768,93957337306874],["v8::internal::ProfileNode::FindOrAddChild(v8::internal::CodeEntry*, int)",93957339684336,93957339684737],["v8::internal::CpuProfilesCollection::RemoveProfile(v8::internal::CpuProfile*)",93957339693392,93957339693447],["void std::__1::vector<v8::internal::Position, std::__1::allocator<v8::internal::Position> >::__emplace_back_slow_path<v8::internal::ProfileNode*>(v8::internal::ProfileNode*&&)",93957339699280,93957339699554],["v8::internal::ProfilerListener::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, char const*)",93957339700864,93957339701208],["std::__1::unordered_set<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, v8::internal::CodeEntry::Hasher, v8::internal::CodeEntry::Equals, std::__1::allocator<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > > >::~unordered_set()",93957339706448,93957339706646],["v8::internal::ProfilerListener::SetterCallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957339707328,93957339707497],["v8::internal::ProfilerListener::CodeDeoptEvent(v8::internal::Handle<v8::internal::Code>, v8::internal::DeoptimizeKind, unsigned long, int, bool)",93957339708272,93957339708470],["non-virtual thunk to v8::internal::ProfilerListener::OnHeapObjectDeletion(v8::internal::CodeEntry*)",93957339709072,93957339709143],["std::__1::__hash_table<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, v8::internal::CodeEntry::Hasher, v8::internal::CodeEntry::Equals, std::__1::allocator<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > > >::__rehash(unsigned long)",93957339710448,93957339711322],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > > > >::__emplace_unique_key_args<int, int&, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >(int const&, int&, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> >&&)",93957339711648,93957339712591],["v8::internal::SamplingHeapProfiler::SamplingHeapProfiler(v8::internal::Heap*, v8::internal::StringsStorage*, unsigned long, int, v8::HeapProfiler::SamplingFlags)",93957339712608,93957339712886],["v8::internal::SamplingHeapProfiler::SampleObject(unsigned long, unsigned long)",93957339713072,93957339713619],["v8::internal::SamplingHeapProfiler::OnWeakCallback(v8::WeakCallbackInfo<v8::internal::SamplingHeapProfiler::Sample> const&)",93957339715296,93957339716289],["v8::internal::SamplingHeapProfiler::TranslateAllocationNode(v8::internal::AllocationProfile*, v8::internal::SamplingHeapProfiler::AllocationNode*, std::__1::map<int, v8::internal::Handle<v8::internal::Script>, std::__1::less<int>, std::__1::allocator<std::__1::pair<int const, v8::internal::Handle<v8::internal::Script> > > > const&)",93957339716560,93957339719190],["v8::internal::SamplingHeapProfiler::BuildSamples() const",93957339719760,93957339720146],["v8::internal::SamplingHeapProfiler::Observer::GetNextStepSize()",93957339720192,93957339720321],["v8_inspector::V8Console::Assert(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342438976,93957342439327],["v8_inspector::V8Console::undebugFunctionCallback(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957342444256,93957342444514],["v8_inspector::V8Console::inspectedObject(v8::FunctionCallbackInfo<v8::Value> const&, int, unsigned int)",93957342446496,93957342446698],["v8_inspector::V8Console::createCommandLineAPI(v8::Local<v8::Context>, int)",93957342447024,93957342448463],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::DirXml>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342448928,93957342449103],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::ProfileEnd>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342449296,93957342449474],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::Table>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342449664,93957342449839],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::valuesCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342449952,93957342450052],["std::__1::__shared_ptr_emplace<v8_inspector::V8HeapProfilerAgentImpl::AsyncGC, std::__1::allocator<v8_inspector::V8HeapProfilerAgentImpl::AsyncGC> >::~__shared_ptr_emplace()",93957342560592,93957342560630],["v8_inspector::V8HeapProfilerAgentImpl::GCTask::~GCTask()",93957342561552,93957342561599],["v8_inspector::V8InspectorImpl::generateUniqueId()",93957342562288,93957342562346],["v8_inspector::V8InspectorImpl::contextGroupId(v8::Local<v8::Context>) const",93957342563200,93957342563615],["v8_inspector::V8InspectorImpl::compileAndRunInternalScript(v8::Local<v8::Context>, v8::Local<v8::String>)",93957342564160,93957342564362],["v8_inspector::V8InspectorImpl::enableStackCapturingIfNeeded()",93957342564528,93957342564574],["v8_inspector::V8InspectorImpl::muteExceptions(int)",93957342564608,93957342564661],["v8_inspector::V8InspectorImpl::ensureConsoleMessageStorage(int)",93957342564736,93957342565238],["v8_inspector::V8InspectorImpl::createStackTrace(v8::Local<v8::StackTrace>)",93957342565648,93957342565662],["v8_inspector::V8InspectorImpl::disconnect(v8_inspector::V8InspectorSessionImpl*)",93957342565984,93957342566718],["v8_inspector::V8InspectorImpl::getContext(int) const",93957342567424,93957342567851],["v8_inspector::V8InspectorImpl::contextCreated(v8_inspector::V8ContextInfo const&)",93957342568320,93957342569407],["v8::internal::compiler::JSTypeHintLowering::ReduceForInNextOperation(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344286912,93957344287000],["v8::internal::compiler::JSBinopReduction::GetCompareNumberOperationHint(v8::internal::compiler::NumberOperationHint*)",93957344310320,93957344310392],["v8::internal::compiler::(anonymous namespace)::ReduceBuiltin(v8::internal::compiler::JSGraph*, v8::internal::compiler::Node*, int, int, v8::base::Flags<v8::internal::compiler::CallDescriptor::Flag, int>)",93957344330192,93957344330927],["v8::internal::compiler::JSBinopReduction::BothInputsMaybe(v8::internal::compiler::Type)",93957344343536,93957344343679],["v8::internal::compiler::Linkage::GetCEntryStubCallDescriptor(v8::internal::Zone*, int, int, char const*, v8::base::Flags<v8::internal::compiler::Operator::Property, unsigned char>, v8::base::Flags<v8::internal::compiler::CallDescriptor::Flag, int>, v8::internal::StackArgumentOrder)",93957344345936,93957344346824],["v8::internal::compiler::LoadElimination::ReduceCheckMaps(v8::internal::compiler::Node*)",93957344350864,93957344351847],["v8::internal::compiler::LoadElimination::ReduceStoreElement(v8::internal::compiler::Node*)",93957344361520,93957344362245],["v8::internal::compiler::(anonymous namespace)::MayAlias(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344368096,93957344368440],["v8::internal::compiler::LoadElimination::AliasStateInfo::MayAlias(v8::internal::compiler::Node*) const",93957344372576,93957344372921],["v8::internal::operator==(v8::internal::ZoneHandleSet<v8::internal::Map> const&, v8::internal::ZoneHandleSet<v8::internal::Map> const&)",93957344375088,93957344375397],["v8::internal::compiler::LoadElimination::AbstractState::Equals(v8::internal::compiler::LoadElimination::AbstractState const*) const",93957344377712,93957344378229],["v8::internal::compiler::LoadElimination::AbstractState::AddField(v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::IndexRange, v8::internal::compiler::LoadElimination::FieldInfo, v8::internal::Zone*) const",93957344379696,93957344380376],["v8::internal::compiler::LoadElimination::UpdateStateForPhi(v8::internal::compiler::LoadElimination::AbstractState const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344381824,93957344382943],["v8::internal::compiler::LoadElimination::reducer_name() const",93957344388208,93957344388221],["v8::internal::compiler::LoopFinderImpl::LoopFinderImpl(v8::internal::compiler::Graph*, v8::internal::compiler::LoopTree*, v8::internal::TickCounter*, v8::internal::Zone*)",93957344391136,93957344391803],["v8::internal::compiler::NodeCopier::map(v8::internal::compiler::Node*, unsigned int)",93957344394176,93957344394238],["v8::internal::compiler::LoopFinderImpl::PropagateForward()",93957344397136,93957344398264],["v8::internal::compiler::LoopFinderImpl::ResizeBackwardMarks()",93957344399408,93957344399682],["v8::internal::compiler::LoopFinderImpl::SetLoopMarkForLoopHeader(v8::internal::compiler::Node*, int)",93957344400368,93957344400964],["v8::internal::compiler::LoopFinderImpl::FinishSingleLoop()",93957344401472,93957344402974],["v8::internal::compiler::LoopFinderImpl::SerializeLoop(v8::internal::compiler::LoopTree::Loop*)",93957344404576,93957344406990],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::compiler::Node*, void*>*>, bool> std::__1::__hash_table<v8::internal::compiler::Node*, v8::base::hash<v8::internal::compiler::Node*>, std::__1::equal_to<v8::internal::compiler::Node*>, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> >::__emplace_unique_key_args<v8::internal::compiler::Node*, v8::internal::compiler::Node* const&>(v8::internal::compiler::Node* const&, v8::internal::compiler::Node* const&)",93957344407392,93957344408338],["void v8::internal::compiler::NodeCopier::CopyNodes<v8::internal::compiler::Node**>(v8::internal::compiler::Graph*, v8::internal::Zone*, v8::internal::compiler::Node*, v8::base::iterator_range<v8::internal::compiler::Node**>, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*)",93957344412512,93957344414741],["v8::internal::compiler::LoopPeeler::EliminateLoopExit(v8::internal::compiler::Node*)",93957344414976,93957344415438],["v8::internal::compiler::LoopPeeler::EliminateLoopExits(v8::internal::compiler::Graph*, v8::internal::Zone*)",93957344415520,93957344416967],["void v8::internal::compiler::NodeCopier::CopyNodes<std::__1::__hash_const_iterator<std::__1::__hash_node<v8::internal::compiler::Node*, void*>*> >(v8::internal::compiler::Graph*, v8::internal::Zone*, v8::internal::compiler::Node*, v8::base::iterator_range<std::__1::__hash_const_iterator<std::__1::__hash_node<v8::internal::compiler::Node*, void*>*> >, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*)",93957344421232,93957344423461],["v8::internal::compiler::LoopVariableOptimizer::Run()",93957344423712,93957344425031],["v8::internal::compiler::LoopVariableOptimizer::VisitBackedge(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344425328,93957344425905],["v8::internal::compiler::InductionVariable::AddLowerBound(v8::internal::compiler::Node*, v8::internal::compiler::InductionVariable::ConstraintKind)",93957344426768,93957344427522],["v8::internal::compiler::LoopVariableOptimizer::VisitIf(v8::internal::compiler::Node*, bool)",93957344427968,93957344428392],["v8::internal::compiler::LoopVariableOptimizer::TakeConditionsFromFirstControl(v8::internal::compiler::Node*)",93957344429008,93957344429359],["v8::internal::compiler::LoopVariableOptimizer::TryGetInductionVariable(v8::internal::compiler::Node*)",93957344429776,93957344430323],["std::__1::__sp_mut::lock()",93957346780384,93957346780455],["operator new(unsigned long, std::nothrow_t const&)",93957346781360,93957346781396],["operator new(unsigned long, std::align_val_t)",93957346781488,93957346781665],["operator delete(void*, unsigned long, std::align_val_t)",93957346781792,93957346781805],["__libc_csu_init",93957348461600,93957348461693],["atexit",93957348461712,93957348461726],["abort",139871563412500,139871563413027],["__libc_start_main",139871563418656,139871563419132],["svcerr_noproc",139871564493920,139871564494019],["svcerr_progvers",139871564494560,139871564494669],["svc_getreq",139871564495568,139871564495656],["svctcp_create",139871564497056,139871564497611],["setpayloadsigf",139871565525024,139871565525116],["cacoshf",139871565528400,139871565528973],["csinhf",139871565535312,139871565536322],["ctanhf",139871565539808,139871565540746],["cprojf",139871565542848,139871565542948],["cpowf",139871565544512,139871565544713],["fdimf",139871565545840,139871565545921],["fmaxf",139871565545984,139871565546042],["v8::Shell::WorkerTerminate(v8::FunctionCallbackInfo<v8::Value> const&)",93957335260832,93957335260950],["v8::Shell::Quit(v8::FunctionCallbackInfo<v8::Value> const&)",93957335264304,93957335264433],["v8::Shell::NotifyDone(v8::FunctionCallbackInfo<v8::Value> const&)",93957335264848,93957335264867],["v8::Shell::MapCounters(v8::Isolate*, char const*)",93957335264960,93957335265102],["v8::internal::GlobalHandles::InvokeOrScheduleSecondPassPhantomCallbacks(bool)",93957336760800,93957336761312],["void std::__1::vector<v8::internal::RuntimeCallStatEntries::Entry, std::__1::allocator<v8::internal::RuntimeCallStatEntries::Entry> >::__push_back_slow_path<v8::internal::RuntimeCallStatEntries::Entry>(v8::internal::RuntimeCallStatEntries::Entry&&)",93957336763712,93957336764014],["v8::internal::HandleScope::current_next_address(v8::internal::Isolate*)",93957336764896,93957336764909],["v8::internal::CanonicalHandleScope::Lookup(unsigned long)",93957336765344,93957336765553],["v8::internal::IdentityMap<unsigned int, v8::internal::ZoneAllocationPolicy>::NewPointerArray(unsigned long)",93957336765664,93957336765708],["v8::internal::LocalHandleScope::OpenMainThreadScope(v8::internal::LocalHeap*)",93957336765808,93957336765849],["v8::internal::LocalHandles::LocalHandles()",93957336765920,93957336765948],["v8::internal::LocalHandles::RemoveUnusedBlocks()",93957336766096,93957336766185],["v8::internal::MarkCompactCollector::IsUnmarkedHeapObject(v8::internal::Heap*, v8::internal::FullObjectSlot)",93957337170512,93957337170569],["v8::internal::Worklist<v8::internal::HeapObject, 64>::Pop(int, v8::internal::HeapObject*)",93957337254336,93957337254593],["void v8::internal::LiveObjectVisitor::VisitBlackObjectsNoFail<v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)1>, v8::internal::MajorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MajorNonAtomicMarkingState*, v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)1>*, v8::internal::LiveObjectVisitor::IterationMode)",93957337260096,93957337261384],["v8::internal::MarkCompactCollector::UpdatePointersAfterEvacuation()",93957337268480,93957337271894],["void v8::internal::LiveObjectVisitor::RecomputeLiveBytes<v8::internal::MajorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MajorNonAtomicMarkingState*)",93957337272912,93957337273380],["v8::internal::MinorMarkCompactCollector::~MinorMarkCompactCollector()",93957337274448,93957337274559],["v8::internal::MinorMarkCompactCollector::CollectGarbage()",93957337276800,93957337278237],["v8::internal::MinorMarkCompactCollector::MakeIterable(v8::internal::Page*, v8::internal::MarkingTreatmentMode, v8::internal::FreeSpaceTreatmentMode)",93957337283232,93957337284391],["v8::internal::MinorMarkCompactCollector::CreateToSpaceUpdatingItem(v8::internal::MemoryChunk*, unsigned long, unsigned long)",93957337284688,93957337284764],["v8::internal::MinorMarkCompactCollector::MarkRootSetInParallel(v8::internal::MinorMarkCompactCollector::RootMarkingVisitor*)",93957337284848,93957337286232],["v8::internal::(anonymous namespace)::IsUnmarkedObjectForYoungGeneration(v8::internal::Heap*, v8::internal::FullObjectSlot)",93957337297120,93957337297223],["v8::internal::MinorMarkCompactCollector::EvacuatePagesInParallel()",93957337298288,93957337300975],["v8::internal::Evacuator::~Evacuator()",93957337301008,93957337301185],["v8::internal::FullEvacuator::~FullEvacuator()",93957337301424,93957337301452],["v8::internal::FullEvacuator::GetBackgroundTracingScope()",93957337301952,93957337301963],["heap::base::Worklist<v8::internal::HeapObject, (unsigned short)64>::Local::Pop(v8::internal::HeapObject*)",93957337301984,93957337302166],["v8::internal::CodeEntry::idle_entry()",93957339680592,93957339680714],["v8::internal::CpuProfile::CpuProfile(v8::internal::CpuProfiler*, char const*, v8::CpuProfilingOptions, std::__1::unique_ptr<v8::DiscardedSamplesDelegate, std::__1::default_delete<v8::DiscardedSamplesDelegate> >)",93957339686848,93957339687462],["v8::internal::CpuProfilesCollection::StartProfiling(char const*, v8::CpuProfilingOptions, std::__1::unique_ptr<v8::DiscardedSamplesDelegate, std::__1::default_delete<v8::DiscardedSamplesDelegate> >)",93957339692496,93957339692766],["std::__1::__hash_table<std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > > > >::__move_assign(std::__1::__hash_table<std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > > > >&, std::__1::integral_constant<bool, true>)",93957339694304,93957339694686],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, std::__1::__unordered_map_hasher<v8::internal::CodeEntryAndLineNumber, std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, v8::internal::ProfileNode::Hasher, v8::internal::ProfileNode::Equals, true>, std::__1::__unordered_map_equal<v8::internal::CodeEntryAndLineNumber, std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, v8::internal::ProfileNode::Equals, v8::internal::ProfileNode::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*> > >::__rehash(unsigned long)",93957339697600,93957339698359],["v8::internal::CpuProfileMaxSamplesCallbackTask::~CpuProfileMaxSamplesCallbackTask()",93957339699824,93957339699867],["void std::__1::vector<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> > > >::__push_back_slow_path<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> > >(std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> >&&)",93957339700464,93957339700807],["v8::internal::ProfilerListener::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>)",93957339701568,93957339702055],["v8::internal::ProfilerListener::GetFunctionName(v8::internal::SharedFunctionInfo)",93957339706160,93957339706445],["v8::internal::ProfilerListener::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::wasm::WasmCode const*, v8::internal::Vector<char const>, char const*, int, int)",93957339706656,93957339706974],["v8::internal::ProfilerListener::GetterCallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957339707152,93957339707321],["v8::internal::ProfilerListener::RegExpCodeCreateEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::String>)",93957339707504,93957339707847],["v8::internal::ProfilerListener::CodeDisableOptEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957339708096,93957339708271],["v8::internal::ProfilerListener::AttachDeoptInlinedFrames(v8::internal::Handle<v8::internal::Code>, v8::internal::CodeDeoptEventRecord*)",93957339708480,93957339708952],["v8::internal::ProfilerListener::OnHeapObjectDeletion(v8::internal::CodeEntry*)",93957339708992,93957339709063],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, void*>*>, bool> std::__1::__hash_table<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, v8::internal::CodeEntry::Hasher, v8::internal::CodeEntry::Equals, std::__1::allocator<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > > >::__emplace_unique_key_args<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > >(std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > const&, std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >&&)",93957339709152,93957339710057],["v8_inspector::V8Console::Group(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342434176,93957342434307],["v8_inspector::V8Console::Time(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342439888,93957342440909],["v8_inspector::V8Console::valuesCallback(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957342443520,93957342443920],["v8_inspector::V8Console::unmonitorFunctionCallback(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957342445248,93957342445506],["v8_inspector::V8Console::queryObjectsCallback(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957342446240,93957342446496],["v8_inspector::V8Console::installMemoryGetter(v8::Local<v8::Context>, v8::Local<v8::Object>)",93957342446704,93957342446894],["void v8_inspector::V8Console::call<&v8_inspector::V8Console::memorySetterCallback>(v8::FunctionCallbackInfo<v8::Value> const&)",93957342446992,93957342447009],["v8_inspector::(anonymous namespace)::createBoundFunctionProperty(v8::Local<v8::Context>, v8::Local<v8::Object>, v8::Local<v8::Value>, char const*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), char const*, v8::SideEffectType)",93957342448464,93957342448747],["std::__1::__shared_ptr_emplace<v8_inspector::V8HeapProfilerAgentImpl::AsyncGC, std::__1::allocator<v8_inspector::V8HeapProfilerAgentImpl::AsyncGC> >::~__shared_ptr_emplace()",93957342560560,93957342560580],["std::__1::__shared_ptr_emplace<v8_inspector::V8HeapProfilerAgentImpl::AsyncGC, std::__1::allocator<v8_inspector::V8HeapProfilerAgentImpl::AsyncGC> >::__on_zero_shared()",93957342560640,93957342560757],["v8_inspector::V8HeapProfilerAgentImpl::GCTask::~GCTask()",93957342561520,93957342561551],["v8_inspector::V8HeapProfilerAgentImpl::GCTask::Run()",93957342561600,93957342561837],["v8_inspector::V8InspectorImpl::V8InspectorImpl(v8::Isolate*, v8_inspector::V8InspectorClient*)",93957342561904,93957342562274],["v8_inspector::V8InspectorImpl::console()",93957342562352,93957342562441],["v8_inspector::V8InspectorImpl::~V8InspectorImpl()",93957342563168,93957342563196],["v8_inspector::V8InspectorImpl::contextGroupId(int) const",93957342563616,93957342564001],["v8::internal::compiler::Operator1<v8::internal::compiler::ContextAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ContextAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ContextAccess> >::HashCode() const",93957344282160,93957344282259],["v8::internal::compiler::JSBinopReduction::ChangeToPureOperator(v8::internal::compiler::Operator const*, v8::internal::compiler::Type)",93957344290128,93957344290297],["v8::internal::compiler::JSBinopReduction::IsReceiverOrNullOrUndefinedCompareOperation()",93957344306768,93957344306944],["v8::internal::compiler::JSTypedLowering::ReduceJSToNumber(v8::internal::compiler::Node*)",93957344313424,93957344313668],["v8::internal::compiler::JSTypedLowering::ReduceJSConstructForwardVarargs(v8::internal::compiler::Node*)",93957344324640,93957344325138],["v8::internal::compiler::JSTypedLowering::ReduceJSStoreMessage(v8::internal::compiler::Node*)",93957344336560,93957344336933],["v8::internal::compiler::JSTypedLowering::ReduceJSResolvePromise(v8::internal::compiler::Node*)",93957344342224,93957344342392],["v8::internal::compiler::CallDescriptor::GetOffsetToReturns() const",93957344344128,93957344344537],["v8::internal::compiler::Linkage::NeedsFrameStateInput(v8::internal::Runtime::FunctionId)",93957344345728,93957344345824],["v8::internal::compiler::Linkage::GetOsrValueLocation(int) const",93957344347584,93957344347729],["v8::internal::compiler::LoadElimination::AbstractState::Print() const",93957344349264,93957344349860],["v8::internal::compiler::LoadElimination::ReduceEnsureWritableFastElements(v8::internal::compiler::Node*)",93957344352688,93957344353909],["v8::internal::compiler::LoadElimination::ReduceStoreField(v8::internal::compiler::Node*, v8::internal::compiler::FieldAccess const&)",93957344358288,93957344360854],["v8::internal::compiler::LoadElimination::ReduceStoreTypedElement(v8::internal::compiler::Node*)",93957344363424,93957344363716],["v8::internal::compiler::(anonymous namespace)::MustAlias(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344366432,93957344366666],["v8::internal::compiler::LoadElimination::AbstractElements::Merge(v8::internal::compiler::LoadElimination::AbstractElements const*, v8::internal::Zone*) const",93957344369216,93957344369832],["v8::internal::compiler::LoadElimination::AbstractField::Kill(v8::internal::compiler::LoadElimination::AliasStateInfo const&, v8::internal::MaybeHandle<v8::internal::Name>, v8::internal::Zone*) const",93957344371504,93957344372562],["v8::internal::compiler::LoadElimination::AbstractMaps::AbstractMaps(v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map>, v8::internal::Zone*)",93957344372928,93957344373199],["v8::internal::compiler::LoadElimination::AbstractMaps::Merge(v8::internal::compiler::LoadElimination::AbstractMaps const*, v8::internal::Zone*) const",93957344374192,93957344375077],["v8::internal::compiler::LoadElimination::AbstractMaps::Extend(v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map>, v8::internal::Zone*) const",93957344375408,93957344375884],["v8::internal::compiler::LoadElimination::AbstractField::Equals(v8::internal::compiler::LoadElimination::AbstractField const*) const",93957344377376,93957344377701],["v8::internal::compiler::LoadElimination::AbstractField::Merge(v8::internal::compiler::LoadElimination::AbstractField const*, v8::internal::Zone*) const",93957344378240,93957344378977],["v8::internal::compiler::LoadElimination::AbstractState::AddElement(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::Zone*) const",93957344379232,93957344379686],["v8::internal::compiler::LoadElimination::AbstractField* v8::internal::Zone::New<v8::internal::compiler::LoadElimination::AbstractField, v8::internal::compiler::Node*&, v8::internal::compiler::LoadElimination::FieldInfo&, v8::internal::Zone*&>(v8::internal::compiler::Node*&, v8::internal::compiler::LoadElimination::FieldInfo&, v8::internal::Zone*&)",93957344380384,93957344380657],["v8::internal::compiler::LoadElimination::AbstractState::LookupField(v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::IndexRange, v8::internal::compiler::ConstFieldInfo) const",93957344381200,93957344381815],["v8::internal::compiler::LoadElimination::ComputeLoopState(v8::internal::compiler::Node*, v8::internal::compiler::LoadElimination::AbstractState const*) const",93957344382944,93957344387308],["v8::internal::compiler::LoadElimination::~LoadElimination()",93957344388176,93957344388205],["void std::__1::__tree<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> >, std::__1::__map_value_compare<v8::internal::compiler::Node*, std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> >, std::__1::less<v8::internal::compiler::Node*>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> > > >::__assign_multi<std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> >, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> >, void*>*, long> >(std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> >, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> >, void*>*, long>, std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> >, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Node*, v8::internal::ZoneHandleSet<v8::internal::Map> >, void*>*, long>)",93957344388224,93957344389242],["v8::internal::compiler::LoopFinder::BuildLoopTree(v8::internal::compiler::Graph*, v8::internal::TickCounter*, v8::internal::Zone*)",93957344390288,93957344391127],["v8::internal::compiler::LoopFinderImpl::Print()",93957344391808,93957344392211],["v8::internal::compiler::LoopFinder::HasMarkedExits(v8::internal::compiler::LoopTree*, v8::internal::compiler::LoopTree::Loop const*)",93957344393552,93957344394174],["v8::internal::compiler::NodeCopier::Insert(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344394240,93957344395555],["__cxx_global_array_dtor.140",93957346776256,93957346776314],["v8::base::RecursiveMutex::Unlock()",93957346780880,93957346780890],["operator new[](unsigned long)",93957346781408,93957346781418],["operator delete[](void*, unsigned long)",93957346781472,93957346781482],["operator new(unsigned long, std::align_val_t, std::nothrow_t const&)",93957346781680,93957346781716],["operator new[](unsigned long, std::align_val_t, std::nothrow_t const&)",93957346781744,93957346781780],["operator delete[](void*, unsigned long, std::align_val_t)",93957346781808,93957346781821],["icu_68::TZEnumeration::snext(UErrorCode&)",93957347797616,93957347797693],["xprt_unregister",139871564493248,139871564493446],["svcerr_systemerr",139871564494144,139871564494243],["svcerr_noprog",139871564494448,139871564494547],["svc_getreq_common",139871564494672,139871564495411],["ldexpf",139871565522512,139871565522629],["fromfpxf",139871565526528,139871565527186],["cabsf",139871565528000,139871565528023],["ccoshf",139871565529024,139871565530041],["casinhf",139871565531344,139871565531741],["catanhf",139871565536336,139871565537604],["ctanf",139871565538912,139871565539802],["cexpf",139871565540752,139871565541732],["v8::(anonymous namespace)::GetWorkerFromInternalField(v8::Isolate*, v8::Local<v8::Object>)",93957335259696,93957335259930],["v8::Shell::WorkerTerminateAndWait(v8::FunctionCallbackInfo<v8::Value> const&)",93957335261216,93957335261346],["v8::Shell::OnExit(v8::Isolate*)",93957335261952,93957335264301],["v8::Shell::WaitUntilDone(v8::FunctionCallbackInfo<v8::Value> const&)",93957335264448,93957335264470],["v8::internal::GlobalHandles::InvokeSecondPassPhantomCallbacksFromTask()",93957336758528,93957336759104],["v8::internal::GlobalHandles::IterateWeakRoots(v8::internal::RootVisitor*)",93957336762032,93957336762248],["v8::internal::EternalHandles::IterateYoungRoots(v8::internal::RootVisitor*)",93957336763472,93957336763560],["std::__1::vector<int, std::__1::allocator<int> >::__append(unsigned long)",93957336764032,93957336764339],["v8::internal::HandleScope::current_level_address(v8::internal::Isolate*)",93957336764880,93957336764893],["v8::internal::HandleScope::current_limit_address(v8::internal::Isolate*)",93957336764912,93957336764925],["v8::internal::CanonicalHandleScope::~CanonicalHandleScope()",93957336765184,93957336765341],["v8::internal::IdentityMap<unsigned int, v8::internal::ZoneAllocationPolicy>::~IdentityMap()",93957336765568,93957336765606],["v8::internal::MarkCompactCollector::StartCompaction()",93957337153024,93957337153432],["v8::internal::MarkCompactCollector::ProcessEphemeronsLinear()",93957337235168,93957337241348],["v8::internal::Worklist<std::__1::pair<v8::internal::HeapObject, v8::internal::CompressedHeapObjectSlot>, 64>::Pop(int, std::__1::pair<v8::internal::HeapObject, v8::internal::CompressedHeapObjectSlot>*)",93957337252400,93957337252687],["v8::internal::MarkCompactCollector::PrepareRecordRelocSlot(v8::internal::Code, v8::internal::RelocInfo*, v8::internal::HeapObject)",93957337256512,93957337256665],["v8::internal::FullEvacuator::RawEvacuatePage(v8::internal::MemoryChunk*, long*)",93957337258256,93957337259046],["bool v8::internal::LiveObjectVisitor::VisitBlackObjects<v8::internal::EvacuateOldSpaceVisitor, v8::internal::MajorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MajorNonAtomicMarkingState*, v8::internal::EvacuateOldSpaceVisitor*, v8::internal::LiveObjectVisitor::IterationMode, v8::internal::HeapObject*)",93957337262432,93957337263533],["v8::internal::MarkCompactCollector::RecordLiveSlotsOnPage(v8::internal::Page*)",93957337267120,93957337267177],["v8::internal::MarkCompactCollector::CreateRememberedSetUpdatingItem(v8::internal::MemoryChunk*, v8::internal::RememberedSetUpdatingMode)",93957337271984,93957337272064],["v8::internal::UpdateReferenceInExternalStringTableEntry(v8::internal::Heap*, v8::internal::FullObjectSlot)",93957337272736,93957337272911],["v8::internal::MarkCompactCollector::StartSweepSpace(v8::internal::PagedSpace*)",93957337273392,93957337273681],["v8::internal::Worklist<v8::internal::HeapObject, 64>::Worklist()",93957337273824,93957337274436],["v8::internal::Worklist<v8::internal::HeapObject, 64>::~Worklist()",93957337274560,93957337274779],["v8::internal::MinorMarkCompactCollector::UpdatePointersAfterEvacuation()",93957337274816,93957337276799],["v8::internal::MinorMarkCompactCollector::MarkLiveObjects()",93957337278240,93957337279557],["v8::internal::MinorMarkCompactCollector::Evacuate()",93957337280752,93957337283230],["v8::internal::MinorMarkCompactCollector::EvacuatePrologue()",93957337284400,93957337284596],["v8::internal::EmbedderGraphImpl::~EmbedderGraphImpl()",93957339674096,93957339674225],["v8::internal::CodeEntry::EnsureRareData()",93957339681648,93957339681797],["v8::internal::ProfileNode::Print(int) const",93957339685664,93957339686195],["v8::internal::CodeMap::CodeMap(v8::internal::StringsStorage&)",93957339690080,93957339690116],["v8::internal::CodeMap::MoveCode(unsigned long, unsigned long)",93957339691728,93957339692426],["std::__1::vector<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> > > >::erase(std::__1::__wrap_iter<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> > const*>)",93957339693008,93957339693325],["v8::internal::CpuProfilesCollection::AddPathToCurrentProfiles(v8::base::TimeTicks, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > const&, int, bool, v8::base::TimeDelta)",93957339693680,93957339693816],["void std::__1::vector<v8::CpuProfileDeoptInfo, std::__1::allocator<v8::CpuProfileDeoptInfo> >::__push_back_slow_path<v8::CpuProfileDeoptInfo>(v8::CpuProfileDeoptInfo&&)",93957339695056,93957339695494],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, std::__1::__unordered_map_hasher<v8::internal::CodeEntryAndLineNumber, std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, v8::internal::ProfileNode::Hasher, v8::internal::ProfileNode::Equals, true>, std::__1::__unordered_map_equal<v8::internal::CodeEntryAndLineNumber, std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, v8::internal::ProfileNode::Equals, v8::internal::ProfileNode::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*> > >::rehash(unsigned long)",93957339697216,93957339697587],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, int>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, int>, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, int>, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, int> > >::__emplace_unique_key_args<int, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>, std::__1::tuple<> >(int const&, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>&&, std::__1::tuple<>&&)",93957339698368,93957339699278],["v8::internal::ProfileNode::~ProfileNode()",93957339699568,93957339699815],["v8::internal::CpuProfileMaxSamplesCallbackTask::~CpuProfileMaxSamplesCallbackTask()",93957339699872,93957339699928],["std::__1::__split_buffer<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::CpuProfile, std::__1::default_delete<v8::internal::CpuProfile> > >&>::~__split_buffer()",93957339700272,93957339700452],["v8::internal::ProfilerListener::ProfilerListener(v8::internal::Isolate*, v8::internal::CodeEventObserver*, v8::internal::StringsStorage&, v8::internal::WeakCodeRegistry&, v8::CpuProfilingNamingMode)",93957339700816,93957339700863],["v8::internal::ProfilerListener::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::Name>)",93957339701216,93957339701563],["v8::internal::ProfilerListener::InferScriptName(v8::internal::Name, v8::internal::SharedFunctionInfo)",93957339702064,93957339702228],["v8_inspector::V8Console::Info(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342433184,93957342433271],["v8_inspector::V8Console::Count(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342434768,93957342436030],["v8_inspector::V8Console::Profile(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342439536,93957342439705],["v8_inspector::timeEndFunction(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&, bool, v8_inspector::V8InspectorImpl*)",93957342440944,93957342443026],["v8_inspector::V8Console::keysCallback(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957342443264,93957342443505],["v8_inspector::V8Console::debugFunctionCallback(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957342443920,93957342444245],["v8_inspector::V8Console::monitorFunctionCallback(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957342444528,93957342445238],["v8_inspector::V8Console::lastEvaluationResultCallback(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957342445520,93957342445696],["v8::internal::compiler::Operator1<v8::internal::compiler::CallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CallParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344278960,93957344279008],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateLiteralParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateLiteralParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateLiteralParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344283552,93957344283702],["v8::internal::compiler::JSTypeHintLowering::ReduceStoreNamedOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344287904,93957344287991],["v8::internal::compiler::JSTypedLowering::ReduceJSToStringInput(v8::internal::compiler::Node*)",93957344296128,93957344296650],["v8::internal::compiler::JSBinopReduction::IsInternalizedStringCompareOperation()",93957344304656,93957344304832],["v8::internal::compiler::JSBinopReduction::IsSymbolCompareOperation()",93957344307888,93957344308064],["v8::internal::compiler::JSBinopReduction::CheckLeftInputToSymbol()",93957344311648,93957344312154],["v8::internal::compiler::JSTypedLowering::ReduceJSHasInPrototypeChain(v8::internal::compiler::Node*)",93957344315920,93957344320033],["v8::internal::compiler::JSTypedLowering::ReduceJSLoadModule(v8::internal::compiler::Node*)",93957344323680,93957344324121],["v8::internal::compiler::JSTypedLowering::ReduceJSCallForwardVarargs(v8::internal::compiler::Node*)",93957344326336,93957344326740],["v8::internal::compiler::JSTypedLowering::ReduceJSForInPrepare(v8::internal::compiler::Node*)",93957344333776,93957344336351],["v8::internal::compiler::JSTypedLowering::ReduceJSGeneratorRestoreContinuation(v8::internal::compiler::Node*)",93957344338288,93957344338883],["v8::internal::compiler::JSTypedLowering::ReduceObjectIsArray(v8::internal::compiler::Node*)",93957344339872,93957344341952],["v8::internal::compiler::JSTypedLowering::reducer_name() const",93957344343344,93957344343357],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::CallDescriptor const&)",93957344343840,93957344344071],["v8::internal::compiler::CallDescriptor::GetTaggedParameterSlots() const",93957344344720,93957344344917],["v8::internal::compiler::Linkage::GetJSCallDescriptor(v8::internal::Zone*, bool, int, v8::base::Flags<v8::internal::compiler::CallDescriptor::Flag, int>)",93957344345088,93957344345714],["v8::internal::compiler::Linkage::GetRuntimeCallDescriptor(v8::internal::Zone*, v8::internal::Runtime::FunctionId, int, v8::base::Flags<v8::internal::compiler::Operator::Property, unsigned char>, v8::base::Flags<v8::internal::compiler::CallDescriptor::Flag, int>)",93957344345824,93957344345934],["v8::internal::compiler::Linkage::GetStubCallDescriptor(v8::internal::Zone*, v8::internal::CallInterfaceDescriptor const&, int, v8::base::Flags<v8::internal::compiler::CallDescriptor::Flag, int>, v8::base::Flags<v8::internal::compiler::Operator::Property, unsigned char>, v8::internal::StubCallMode)",93957344346832,93957344347577],["v8::internal::compiler::Linkage::ParameterHasSecondaryLocation(int) const",93957344347744,93957344347923],["v8::internal::compiler::LoadElimination::Reduce(v8::internal::compiler::Node*)",93957344348064,93957344349250],["v8::internal::compiler::LoadElimination::ReduceMapGuard(v8::internal::compiler::Node*)",93957344349872,93957344350853],["v8::internal::compiler::LoadElimination::ReduceCompareMaps(v8::internal::compiler::Node*)",93957344351856,93957344352684],["v8::internal::compiler::LoadElimination::ReduceMaybeGrowFastElements(v8::internal::compiler::Node*)",93957344353920,93957344354816],["v8::internal::compiler::LoadElimination::ReduceLoadField(v8::internal::compiler::Node*, v8::internal::compiler::FieldAccess const&)",93957344356656,93957344358280],["v8::internal::compiler::LoadElimination::ReduceLoadElement(v8::internal::compiler::Node*)",93957344360864,93957344361513],["v8::internal::compiler::LoadElimination::ReduceTransitionAndStoreElement(v8::internal::compiler::Node*)",93957344362256,93957344363424],["v8::internal::compiler::LoadElimination::ReduceEffectPhi(v8::internal::compiler::Node*)",93957344363728,93957344364837],["v8::internal::compiler::LoadElimination::AbstractElements::Lookup(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::MachineRepresentation) const",93957344365200,93957344366428],["v8::internal::compiler::LoadElimination::AbstractElements::Kill(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::Zone*) const",93957344366672,93957344368089],["v8::internal::compiler::LoadElimination::AbstractElements::Equals(v8::internal::compiler::LoadElimination::AbstractElements const*) const",93957344368448,93957344369211],["v8::internal::compiler::LoadElimination::AbstractElements::Print() const",93957344369840,93957344370515],["std::__1::__time_get_c_storage<char>::__x() const",93957346773616,93957346773744],["unsigned long std::__1::__num_get_unsigned_integral<unsigned long>(char const*, char const*, unsigned int&, int)",93957346777728,93957346778005],["std::__1::__get_sp_mut(void const*)",93957346780480,93957346780840],["std::__throw_bad_alloc()",93957346781184,93957346781233],["std::runtime_error::runtime_error(char const*)",93957346782096,93957346782218],["icu_68::DecimalFormat::setDecimalPatternMatchRequired(signed char)",93957347045536,93957347045597],["icu_68::UnicodeSet::_toPattern(icu_68::UnicodeString&, signed char) const",93957348289888,93957348290271],["__rpc_thread_createerr",139871564492736,139871564492799],["svc_unregister",139871564493680,139871564493801],["svcerr_decode",139871564494032,139871564494131],["svcerr_auth",139871564494256,139871564494340],["llroundf",139871565521632,139871565521775],["totalordermagf",139871565524816,139871565524840],["fromfpf",139871565525264,139871565525852],["cargf",139871565527888,139871565527911],["crealf",139871565527984,139871565527997],["cacosf",139871565528032,139871565528399],["ccosf",139871565528976,139871565529024],["casinf",139871565530048,139871565530245],["v8::FunctionAndArgumentsToString(v8::Local<v8::Function>, v8::Local<v8::Value>, v8::Local<v8::String>*, v8::Isolate*)",93957335257152,93957335257671],["v8::Shell::WorkerGetMessage(v8::FunctionCallbackInfo<v8::Value> const&)",93957335260272,93957335260523],["v8::Worker::Terminate()",93957335260960,93957335261205],["v8::Shell::QuitOnce(v8::FunctionCallbackInfo<v8::Value>*)",93957335261360,93957335261472],["v8::internal::GlobalHandles::Node::CollectPhantomCallbackData(std::__1::vector<std::__1::pair<v8::internal::GlobalHandles::Node*, v8::internal::GlobalHandles::PendingPhantomCallback>, std::__1::allocator<std::__1::pair<v8::internal::GlobalHandles::Node*, v8::internal::GlobalHandles::PendingPhantomCallback> > >*)",93957336756304,93957336756775],["void v8::internal::GlobalHandles::UpdateAndCompactListOfYoungNode<v8::internal::GlobalHandles::TracedNode>(std::__1::vector<v8::internal::GlobalHandles::TracedNode*, std::__1::allocator<v8::internal::GlobalHandles::TracedNode*> >*)",93957336759872,93957336760202],["v8::internal::GlobalHandles::IterateStrongRoots(v8::internal::RootVisitor*)",93957336761744,93957336761865],["v8::internal::GlobalHandles::IterateAllYoungRoots(v8::internal::RootVisitor*)",93957336762656,93957336762985],["v8::internal::EternalHandles::IterateAllRoots(v8::internal::RootVisitor*)",93957336763376,93957336763472],["v8::internal::EternalHandles::PostGarbageCollectionProcessing()",93957336763568,93957336763709],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::GlobalHandles::InvokeOrScheduleSecondPassPhantomCallbacks(bool)::$_0, void ()> >(std::__1::__function::__policy_storage const*)",93957336764016,93957336764029],["v8::internal::HandleScope::Extend(v8::internal::Isolate*)",93957336764352,93957336764747],["v8::internal::LocalHeap::FreeLinearAllocationArea()",93957337082096,93957337082110],["v8::internal::MarkCompactCollector::Evacuate()",93957337165392,93957337167780],["v8::internal::MarkCompactCollector::MarkDescriptorArrayFromWriteBarrier(v8::internal::DescriptorArray, int)",93957337232464,93957337232481],["std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_stringstream()",93957337242112,93957337242372],["v8::internal::MarkCompactCollector::ClearJSWeakRefs()",93957337245008,93957337252139],["v8::internal::MarkCompactCollector::ClearPotentialSimpleMapTransition(v8::internal::Map, v8::internal::Map)",93957337253040,93957337253188],["v8::internal::MarkCompactCollector::RightTrimDescriptorArray(v8::internal::DescriptorArray, int)",93957337256128,93957337256349],["v8::internal::MarkCompactCollector::EvacuatePrologue()",93957337256848,93957337257119],["v8::internal::Evacuator::Finalize()",93957337258000,93957337258253],["void v8::internal::LiveObjectVisitor::VisitBlackObjectsNoFail<v8::internal::EvacuateNewSpaceVisitor, v8::internal::MajorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MajorNonAtomicMarkingState*, v8::internal::EvacuateNewSpaceVisitor*, v8::internal::LiveObjectVisitor::IterationMode)",93957337259056,93957337260087],["void v8::internal::LiveObjectVisitor::VisitBlackObjectsNoFail<v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)0>, v8::internal::MajorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MajorNonAtomicMarkingState*, v8::internal::EvacuateNewSpacePageVisitor<(v8::internal::PageEvacuationMode)0>*, v8::internal::LiveObjectVisitor::IterationMode)",93957337261392,93957337262423],["v8::internal::MarkCompactCollector::EvacuatePagesInParallel()",93957337263536,93957337264771],["v8::internal::MarkCompactCollector::PostProcessEvacuationCandidates()",93957337265824,93957337267105],["void v8::internal::LiveObjectVisitor::VisitBlackObjectsNoFail<v8::internal::EvacuateRecordOnlyVisitor, v8::internal::MajorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MajorNonAtomicMarkingState*, v8::internal::EvacuateRecordOnlyVisitor*, v8::internal::LiveObjectVisitor::IterationMode)",93957337267184,93957337268472],["v8::internal::MarkCompactCollector::CreateToSpaceUpdatingItem(v8::internal::MemoryChunk*, unsigned long, unsigned long)",93957337271904,93957337271983],["v8::internal::MarkCompactCollectorBase::CollectToSpaceUpdatingItems(std::__1::vector<std::__1::unique_ptr<v8::internal::UpdatingItem, std::__1::default_delete<v8::internal::UpdatingItem> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::UpdatingItem, std::__1::default_delete<v8::internal::UpdatingItem> > > >*)",93957337272064,93957337272369],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<void*, v8::internal::HeapEntry*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<void*, v8::internal::HeapEntry*>, std::__1::__unordered_map_hasher<void*, std::__1::__hash_value_type<void*, v8::internal::HeapEntry*>, std::__1::hash<void*>, std::__1::equal_to<void*>, true>, std::__1::__unordered_map_equal<void*, std::__1::__hash_value_type<void*, v8::internal::HeapEntry*>, std::__1::equal_to<void*>, std::__1::hash<void*>, true>, std::__1::allocator<std::__1::__hash_value_type<void*, v8::internal::HeapEntry*> > >::__emplace_unique_key_args<void*, void*&, v8::internal::HeapEntry*>(void* const&, void*&, v8::internal::HeapEntry*&&)",93957339671248,93957339672132],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, void*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, void*>, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, void*>, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, void*>, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, void*> > >::__emplace_unique_key_args<unsigned long, unsigned long const&, void* const&>(unsigned long const&, unsigned long const&, void* const&)",93957339677296,93957339678208],["v8::internal::CodeEntry::IsSameFunctionAs(v8::internal::CodeEntry const*) const",93957339681216,93957339681287],["std::__1::unique_ptr<v8::internal::CodeEntry::RareData, std::__1::default_delete<v8::internal::CodeEntry::RareData> >::reset(v8::internal::CodeEntry::RareData*)",93957339682896,93957339683208],["v8::internal::ProfileNode::IncrementLineTicks(int)",93957339685120,93957339685577],["void v8::internal::ProfileTree::TraverseDepthFirst<v8::internal::DeleteNodesCallback>(v8::internal::DeleteNodesCallback*)",93957339686256,93957339686590],["v8::internal::CpuProfile::StreamPendingTraceEvents()",93957339687952,93957339689728],["v8::internal::CodeMap::Clear()",93957339690176,93957339690800],["v8::internal::CodeMap::FindEntry(unsigned long, unsigned long*)",93957339691552,93957339691721],["v8::internal::CpuProfilesCollection::CpuProfilesCollection(v8::internal::Isolate*)",93957339692432,93957339692489],["v8::internal::CpuProfilesCollection::StopProfiling(char const*)",93957339692768,93957339693001],["v8::internal::CpuProfilesCollection::IsLastProfile(char const*)",93957339693328,93957339693380],["v8::internal::CpuProfilesCollection::GetCommonSamplingInterval() const",93957339693456,93957339693675],["std::__1::__hash_table<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, v8::internal::CodeEntry::Hasher, v8::internal::CodeEntry::Equals, std::__1::allocator<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > > >::__move_assign(std::__1::__hash_table<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, v8::internal::CodeEntry::Hasher, v8::internal::CodeEntry::Equals, std::__1::allocator<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > > >&, std::__1::integral_constant<bool, true>)",93957339693824,93957339694290],["_ZNSt3__16vectorIN2v820CpuProfileDeoptFrameENS_9allocatorIS2_EEE6assignIPS2_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS2_NS_15iterator_traitsIS9_E9referenceEEE5valueEvE4typeES9_S9_",93957339694688,93957339695044],["std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, std::__1::__unordered_map_hasher<v8::internal::CodeEntryAndLineNumber, std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, v8::internal::ProfileNode::Hasher, v8::internal::ProfileNode::Equals, true>, std::__1::__unordered_map_equal<v8::internal::CodeEntryAndLineNumber, std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*>, v8::internal::ProfileNode::Equals, v8::internal::ProfileNode::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::CodeEntryAndLineNumber, v8::internal::ProfileNode*> > >::find<v8::internal::CodeEntryAndLineNumber>(v8::internal::CodeEntryAndLineNumber const&)",93957339695504,93957339696076],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8ConsoleMessageStorage::clear()::$_1, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342430464,93957342430532],["v8_inspector::V8Console::DirXml(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342433568,93957342433655],["v8_inspector::V8Console::GroupEnd(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342434464,93957342434595],["v8_inspector::identifierFromTitleOrStackTrace(v8_inspector::String16 const&, v8_inspector::(anonymous namespace)::ConsoleHelper const&, v8::debug::ConsoleContext const&, v8_inspector::V8InspectorImpl*)",93957342437344,93957342438297],["v8_inspector::(anonymous namespace)::ConsoleHelper::reportCall(v8_inspector::ConsoleAPIType, std::__1::vector<v8::Local<v8::Value>, std::__1::allocator<v8::Local<v8::Value> > > const&)",93957342439328,93957342439530],["v8_inspector::V8Console::ProfileEnd(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342439712,93957342439881],["v8_inspector::V8Console::TimeLog(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342440912,93957342440937],["v8_inspector::V8Console::TimeEnd(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342443040,93957342443062],["v8::internal::compiler::JSOperatorBuilder::StoreGlobal(v8::internal::LanguageMode, v8::internal::Handle<v8::internal::Name> const&, v8::internal::compiler::FeedbackSource const&)",93957344272080,93957344272296],["v8::internal::compiler::Operator1<v8::internal::compiler::PropertyAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::PropertyAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::PropertyAccess> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344280608,93957344280735],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateCollectionIteratorParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateCollectionIteratorParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateCollectionIteratorParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344282880,93957344282950],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateFunctionContextParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateFunctionContextParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateFunctionContextParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344284432,93957344284533],["v8::internal::compiler::JSTypeHintLowering::ReduceConstructOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node* const*, int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344287472,93957344287559],["v8::internal::compiler::JSTypedLowering::JSTypedLowering(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*, v8::internal::Zone*)",93957344288608,93957344288735],["v8::internal::compiler::JSTypedLowering::ReduceJSNegate(v8::internal::compiler::Node*)",93957344291408,93957344291805],["v8::internal::compiler::JSBinopReduction::OneInputIs(v8::internal::compiler::Type)",93957344299168,93957344299327],["v8::internal::compiler::JSBinopReduction::IsStringCompareOperation()",93957344302320,93957344302388],["v8::internal::compiler::JSBinopReduction::IsReceiverCompareOperation()",93957344305920,93957344306096],["v8::internal::compiler::JSGraphAssembler::JSGraphAssembler(v8::internal::compiler::JSGraph*, v8::internal::Zone*, v8::base::Optional<std::__1::function<void (v8::internal::compiler::Node*)> >, v8::internal::compiler::Schedule*, bool)",93957344307616,93957344307836],["v8::internal::compiler::JSTypedLowering::ReduceJSStrictEqual(v8::internal::compiler::Node*)",93957344308736,93957344310019],["v8::internal::compiler::JSBinopReduction::CheckLeftInputToReceiver()",93957344310624,93957344311130],["v8::internal::compiler::JSTypedLowering::ReduceJSToLength(v8::internal::compiler::Node*)",93957344312320,93957344312757],["v8::internal::compiler::JSTypedLowering::ReduceJSToObject(v8::internal::compiler::Node*)",93957344313888,93957344315548],["v8::internal::compiler::JSTypedLowering::ReduceJSHasContextExtension(v8::internal::compiler::Node*)",93957344320288,93957344321127],["v8::internal::compiler::JSTypedLowering::BuildGetModuleCell(v8::internal::compiler::Node*)",93957344322848,93957344323672],["v8::internal::compiler::JSTypedLowering::ReduceJSStoreModule(v8::internal::compiler::Node*)",93957344324128,93957344324639],["v8::internal::compiler::JSTypedLowering::ReduceJSConstruct(v8::internal::compiler::Node*)",93957344325152,93957344326321],["v8::internal::compiler::JSTypedLowering::ReduceJSCall(v8::internal::compiler::Node*)",93957344326752,93957344330179],["v8::internal::compiler::JSTypedLowering::ReduceJSForInNext(v8::internal::compiler::Node*)",93957344330928,93957344333771],["v8::internal::compiler::JSTypedLowering::ReduceJSLoadMessage(v8::internal::compiler::Node*)",93957344336352,93957344336554],["v8::internal::compiler::JSTypedLowering::ReduceJSGeneratorStore(v8::internal::compiler::Node*)",93957344336944,93957344338284],["v8::internal::compiler::JSTypedLowering::ReduceJSGeneratorRestoreContext(v8::internal::compiler::Node*)",93957344338896,93957344339021],["v8::internal::compiler::JSTypedLowering::ReduceJSGeneratorRestoreInputOrDebugPos(v8::internal::compiler::Node*)",93957344339744,93957344339869],["v8::internal::compiler::JSTypedLowering::ReduceJSParseInt(v8::internal::compiler::Node*)",93957344341952,93957344342216],["v8::internal::compiler::JSTypedLowering::Reduce(v8::internal::compiler::Node*)",93957344342400,93957344343330],["v8::internal::compiler::JSBinopReduction::ConvertToUI32(v8::internal::compiler::Node*, v8::internal::compiler::Signedness)",93957344343360,93957344343529],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::CallDescriptor::Kind const&)",93957344343680,93957344343827],["v8::internal::compiler::CallDescriptor::GetStackParameterDelta(v8::internal::compiler::CallDescriptor const*) const",93957344344080,93957344344122],["v8::internal::compiler::CallDescriptor::GetOffsetToFirstUnusedStackSlot() const",93957344344544,93957344344714],["v8::internal::compiler::CallDescriptor::CalculateFixedFrameSize(v8::internal::CodeKind) const",93957344344928,93957344345004],["std::__1::numpunct<wchar_t>::do_truename() const",93957346767776,93957346767823],["std::__1::codecvt<wchar_t, char, __mbstate_t>::~codecvt()",93957346774640,93957346774760],["void std::__1::__call_once_proxy<std::__1::tuple<std::__1::(anonymous namespace)::__fake_bind&&> >(void*)",93957346776832,93957346776868],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >& std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__append_forward_unsafe<char*>(char*, char*)",93957346778688,93957346779454],["std::__1::__sp_mut::unlock()",93957346780464,93957346780477],["std::__1::mutex::lock()",93957346780848,93957346780877],["std::__1::__call_once(unsigned long volatile&, void*, void (*)(void*))",93957346780896,93957346781172],["std::logic_error::logic_error(char const*)",93957346781824,93957346781946],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::replace(unsigned long, unsigned long, char const*, unsigned long)",93957346782336,93957346783169],["(anonymous namespace)::itanium_demangle::DeleteExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346851424,93957346851744],["uprv_decNumberMultiply_68",93957347419392,93957347419487],["icu_68::LocaleKeyFactory::create(icu_68::ICUServiceKey const&, icu_68::ICUService const*, UErrorCode&) const",93957348128240,93957348128515],["unistrTextLength(UText*)",93957348405184,93957348405213],["netname2host",139871564491552,139871564491653],["__rpc_thread_svc_max_pollfd",139871564492864,139871564492927],["svc_register",139871564493456,139871564493676],["svc_sendreply",139871564493808,139871564493917],["nexttowardf",139871565518624,139871565518976],["copysignf",139871565521952,139871565521970],["totalorderf",139871565524736,139871565524763],["getpayloadf",139871565524896,139871565524912],["roundevenf",139871565525120,139871565525261],["ufromfpf",139871565525856,139871565526519],["ufromfpxf",139871565527200,139871565527885],["conjf",139871565527920,139871565527964],["v8::Shell::Load(v8::FunctionCallbackInfo<v8::Value> const&)",93957335255632,93957335256161],["v8::Worker::StartWorkerThread(std::__1::shared_ptr<v8::Worker>)",93957335258864,93957335259248],["v8::Worker::PostMessage(std::__1::unique_ptr<v8::SerializationData, std::__1::default_delete<v8::SerializationData> >)",93957335259936,93957335260258],["v8::Shell::DeserializeValue(v8::Isolate*, std::__1::unique_ptr<v8::SerializationData, std::__1::default_delete<v8::SerializationData> >)",93957335260528,93957335260822],["v8::internal::GlobalHandles::NodeSpace<v8::internal::GlobalHandles::Node>::Release(v8::internal::GlobalHandles::Node*)",93957336754848,93957336755093],["v8::internal::GlobalHandles::IterateYoungStrongAndDependentRoots(v8::internal::RootVisitor*)",93957336757584,93957336757738],["v8::internal::GlobalHandles::Node::PostGarbageCollectionProcessing(v8::internal::Isolate*)",93957336759296,93957336759533],["unsigned long v8::internal::GlobalHandles::InvokeFirstPassWeakCallbacks<v8::internal::GlobalHandles::Node>(std::__1::vector<std::__1::pair<v8::internal::GlobalHandles::Node*, v8::internal::GlobalHandles::PendingPhantomCallback>, std::__1::allocator<std::__1::pair<v8::internal::GlobalHandles::Node*, v8::internal::GlobalHandles::PendingPhantomCallback> > >*)",93957336760256,93957336760527],["v8::internal::GlobalHandles::PostGarbageCollectionProcessing(v8::internal::GarbageCollector, v8::GCCallbackFlags)",93957336761312,93957336761740],["v8::internal::GlobalHandles::IterateStrongStackRoots(v8::internal::RootVisitor*)",93957336761872,93957336762027],["v8::internal::GlobalHandles::IterateAllRoots(v8::internal::RootVisitor*)",93957336762256,93957336762651],["v8::internal::GlobalHandles::RecordStats(v8::internal::HeapStats*)",93957336762992,93957336763237],["v8::internal::CodeLargeObjectSpace::~CodeLargeObjectSpace()",93957337079472,93957337079560],["unsigned long v8::internal::MarkCompactCollector::ProcessMarkingWorklist<(v8::internal::MarkCompactCollector::MarkingWorklistProcessingMode)0>(unsigned long)",93957337084112,93957337116871],["v8::internal::MarkCompactCollector::MarkLiveObjects()",93957337157056,93957337161252],["v8::internal::MarkCompactCollector::DrainSweepingWorklistForSpace(v8::internal::AllocationSpace)",93957337169008,93957337169044],["v8::internal::MarkCompactCollector::VisitObject(v8::internal::HeapObject)",93957337170880,93957337201670],["v8::internal::MarkCompactCollector::ProcessEphemeronsUntilFixpoint()",93957337233072,93957337234510],["v8::internal::MarkCompactCollector::ProcessEphemeron(v8::internal::HeapObject, v8::internal::HeapObject)",93957337241632,93957337242090],["v8::internal::MarkCompactCollector::ClearOldBytecodeCandidates()",93957337242512,93957337242988],["v8::internal::MarkCompactCollector::ClearWeakCollections()",93957337244208,93957337245008],["v8::internal::MarkCompactCollector::MarkDependentCodeForDeoptimization()",93957337252144,93957337252392],["v8::internal::MarkCompactCollector::ClearPotentialSimpleMapTransition(v8::internal::Map)",93957337252688,93957337253028],["v8::internal::MarkCompactCollector::FlushBytecodeFromSFI(v8::internal::SharedFunctionInfo)",93957337253200,93957337254324],["v8::internal::MarkCompactCollector::CompactTransitionArray(v8::internal::Map, v8::internal::TransitionArray, v8::internal::DescriptorArray)",93957337254608,93957337256123],["v8::internal::MarkCompactCollector::TrimEnumCache(v8::internal::Map, v8::internal::DescriptorArray)",93957337256352,93957337256512],["v8::internal::MarkCompactCollector::RecordRelocSlot(v8::internal::Code, v8::internal::RelocInfo*, v8::internal::HeapObject)",93957337256672,93957337256845],["v8::internal::MarkCompactCollector::EvacuateEpilogue()",93957337257120,93957337257384],["v8::internal::OutputStreamWriter::AddString(char const*)",93957339660912,93957339661079],["v8::internal::GlobalObjectsEnumerator::~GlobalObjectsEnumerator()",93957339673072,93957339673123],["std::__1::deque<v8::internal::HeapEntry, std::__1::allocator<v8::internal::HeapEntry> >::__add_back_capacity()",93957339675328,93957339675749],["v8::base::TemplateHashMapEntry<void*, void*> v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<void*, v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::LookupOrInsert(void* const&, unsigned int)::{lambda()#1}>(void* const&, unsigned int, v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::LookupOrInsert(void* const&, unsigned int)::{lambda()#1} const&)::{lambda()#1}, {lambda()#1}>(void* const, unsigned int, v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::LookupOrInsert(void* const&, unsigned int)::{lambda()#1}>(void* const&, unsigned int, v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::LookupOrInsert(void* const&, unsigned int)::{lambda()#1} const&)::{lambda()#1} const&, {lambda()#1} const&)",93957339679536,93957339679813],["v8::internal::CodeEntry::unresolved_entry()",93957339680848,93957339680970],["v8::internal::CodeEntry::GetSourceLine(int) const",93957339681328,93957339681445],["v8::internal::CodeEntry::set_deopt_info(char const*, int, std::__1::vector<v8::CpuProfileDeoptFrame, std::__1::allocator<v8::CpuProfileDeoptFrame> >)",93957339682304,93957339682556],["v8::internal::ProfileNode::source_type() const",93957339683344,93957339684054],["v8::internal::ProfileNode::ProfileNode(v8::internal::ProfileTree*, v8::internal::CodeEntry*, v8::internal::ProfileNode*, int)",93957339684752,93957339685108],["v8::internal::ProfileNode::GetLineTicks(v8::CpuProfileNode::LineTick*, unsigned int) const",93957339685584,93957339685657],["v8::internal::ProfileTree::~ProfileTree()",93957339686208,93957339686250],["v8::internal::ProfileTree::AddPathFromEnd(std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > const&, int, bool, v8::CpuProfilingMode)",93957339686592,93957339686847],["v8::internal::CpuProfile::AddPath(v8::base::TimeTicks, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > const&, int, bool, v8::base::TimeDelta)",93957339687472,93957339687943],["v8::internal::CpuProfile::FinishProfile()",93957339689728,93957339690066],["v8::internal::CodeMap::~CodeMap()",93957339690128,93957339690169],["v8::internal::CodeMap::AddCode(unsigned long, v8::internal::CodeEntry*, unsigned int)",93957339690800,93957339690954],["v8_inspector::(anonymous namespace)::V8ValueStringBuilder::append(v8::Local<v8::String>)",93957342428320,93957342428432],["v8_inspector::V8Console::V8Console(v8_inspector::V8InspectorImpl*)",93957342432720,93957342432740],["v8_inspector::V8Console::Warn(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342433376,93957342433463],["v8_inspector::V8Console::Trace(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342433760,93957342433891],["v8_inspector::V8Console::GroupCollapsed(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342434320,93957342434451],["v8_inspector::V8Console::Clear(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342434608,93957342434762],["v8_inspector::(anonymous namespace)::ConsoleHelper::firstArgToString(v8_inspector::String16 const&, bool)",93957342436032,93957342437333],["v8_inspector::V8Console::CountReset(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342438304,93957342438973],["v8::internal::compiler::JSOperatorBuilder::GreaterThan(v8::internal::compiler::FeedbackSource const&)",93957344266048,93957344266223],["v8::internal::compiler::JSOperatorBuilder::CreateArrayFromIterable()",93957344274608,93957344274714],["v8::internal::compiler::Operator1<v8::internal::compiler::ConstructForwardVarargsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ConstructForwardVarargsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::ConstructForwardVarargsParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344279728,93957344279830],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreNamedOwnParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreNamedOwnParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreNamedOwnParameters> >::HashCode() const",93957344281360,93957344281458],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateArrayParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateArrayParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateArrayParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344282512,93957344282641],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateClosureParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateClosureParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateClosureParameters> >::HashCode() const",93957344283264,93957344283325],["v8::internal::compiler::Operator1<v8::internal::compiler::CloneObjectParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CloneObjectParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CloneObjectParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344284032,93957344284101],["v8::internal::compiler::JSSpeculativeBinopBuilder::TryBuildNumberBinop()",93957344285728,93957344285907],["v8::internal::compiler::JSTypeHintLowering::ReduceToNumberOperation(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344287104,93957344287367],["v8::internal::compiler::JSTypeHintLowering::ReduceLoadNamedOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344287712,93957344287795],["v8::internal::compiler::JSSpeculativeBinopBuilder::SpeculativeNumberOp(v8::internal::compiler::NumberOperationHint)",93957344288096,93957344288445],["v8::internal::compiler::JSBinopReduction::ConvertInputsToNumber()",93957344289152,93957344289717],["v8::internal::compiler::JSTypedLowering::ReduceJSDecrement(v8::internal::compiler::Node*)",93957344290608,93957344290997],["v8::internal::compiler::JSBinopReduction::BothInputsAre(v8::internal::compiler::Type)",93957344295888,93957344296047],["v8::internal::compiler::JSTypedLowering::ReduceJSToString(v8::internal::compiler::Node*)",93957344297808,93957344297905],["v8::internal::compiler::JSTypedLowering::ReduceInt32Binop(v8::internal::compiler::Node*)",93957344299680,93957344300035],["v8::internal::compiler::JSBinopReduction::SwapInputs()",93957344302000,93957344302311],["v8::internal::compiler::JSTypedLowering::ReduceJSEqual(v8::internal::compiler::Node*)",93957344302400,93957344304654],["v8::internal::compiler::JSBinopReduction::CheckInputsToInternalizedString()",93957344304832,93957344305914],["v8::internal::compiler::JSBinopReduction::CheckInputsToReceiver()",93957344306096,93957344306767],["v8::internal::compiler::JSBinopReduction::CheckInputsToReceiverOrNullOrUndefined()",93957344306944,93957344307615],["void v8::internal::compiler::GraphAssembler::Goto<v8::internal::TNode<v8::internal::Oddball> >(v8::internal::compiler::GraphAssemblerLabel<1>*, v8::internal::TNode<v8::internal::Oddball>)",93957344307840,93957344307882],["v8::internal::compiler::JSBinopReduction::CheckInputsToSymbol()",93957344308064,93957344308735],["v8::internal::compiler::Type::IsSingleton() const",93957344310032,93957344310306],["v8::internal::compiler::JSBinopReduction::ChangeToSpeculativeOperator(v8::internal::compiler::Operator const*, v8::internal::compiler::Type)",93957344310400,93957344310619],["v8::internal::compiler::JSBinopReduction::CheckLeftInputToReceiverOrNullOrUndefined()",93957344311136,93957344311642],["v8::internal::compiler::JSTypedLowering::ReduceJSToName(v8::internal::compiler::Node*)",93957344312160,93957344312310],["v8::internal::compiler::JSTypedLowering::ReduceJSToNumberInput(v8::internal::compiler::Node*)",93957344312768,93957344313416],["v8::internal::compiler::JSTypedLowering::ReduceJSToNumeric(v8::internal::compiler::Node*)",93957344313680,93957344313881],["v8::internal::compiler::JSTypedLowering::ReduceJSLoadNamed(v8::internal::compiler::Node*)",93957344315552,93957344315913],["v8::internal::compiler::JSTypedLowering::ReduceJSOrdinaryHasInstance(v8::internal::compiler::Node*)",93957344320048,93957344320286],["v8::internal::compiler::JSTypedLowering::ReduceJSLoadContext(v8::internal::compiler::Node*)",93957344321136,93957344321916],["std::__1::utf8_to_utf16(unsigned char const*, unsigned char const*, unsigned char const*&, unsigned short*, unsigned short*, unsigned short*&, unsigned long, std::__1::codecvt_mode)",93957346764288,93957346765035],["std::__1::__time_get_c_storage<char>::__months() const",93957346769952,93957346770054],["std::__1::__time_get_c_storage<char>::__c() const",93957346774128,93957346774256],["__cxx_global_array_dtor.74",93957346775536,93957346776062],["std::length_error::length_error(char const*)",93957346776400,93957346776435],["unsigned short std::__1::__num_get_unsigned_integral<unsigned short>(char const*, char const*, unsigned int&, int)",93957346777136,93957346777422],["double std::__1::__num_get_float<double>(char const*, char const*, unsigned int&)",93957346778240,93957346778450],["std::__1::__shared_weak_count::__release_weak()",93957346780288,93957346780328],["std::runtime_error::runtime_error(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957346781952,93957346782083],["std::__1::__basic_string_common<true>::__throw_out_of_range() const",93957346782240,93957346782256],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init_copy_ctor_external(char const*, unsigned long)",93957346783536,93957346783651],["std::get_terminate()",93957346793744,93957346793760],["v8::platform::DefaultPlatform::RunIdleTasks(v8::Isolate*, double)",93957346915552,93957346916152],["icu_68::number::impl::AffixUtils::unescape(icu_68::UnicodeString const&, icu_68::FormattedStringBuilder&, int, icu_68::number::impl::SymbolProvider const&, icu_68::FormattedStringBuilder::Field, UErrorCode&)",93957347236224,93957347236794],["icu_68::CollationBuilder::~CollationBuilder()",93957347574064,93957347574145],["icu_68::SimpleFilteredSentenceBreakIterator::setText(UText*, UErrorCode&)",93957347950112,93957347950133],["doLoadFromIndividualFiles(char const*, char const*, char const*, char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*, UErrorCode*)",93957348195056,93957348195621],["icu_68::ResourceDataValue::~ResourceDataValue()",93957348371904,93957348371954],["Cr_z_deflateReset",93957348435472,93957348435704],["user2netname",139871564490592,139871564490815],["pmap_getport",139871564492272,139871564492289],["__rpc_thread_svc_pollfd",139871564492800,139871564492863],["xprt_register",139871564492928,139871564493246],["atanf",139871565512896,139871565513518],["remquof",139871565520080,139871565520555],["__issignalingf",139871565521808,139871565521840],["frexpf",139871565522384,139871565522485],["nextupf",139871565524640,139871565524736],["totalorderf",139871565524768,139871565524804],["totalordermagf",139871565524848,139871565524884],["setpayloadf",139871565524912,139871565525020],["v8::Shell::Write(v8::FunctionCallbackInfo<v8::Value> const&)",93957335254624,93957335254647],["v8::PerIsolateData::SetTimeout(v8::Local<v8::Function>, v8::Local<v8::Context>)",93957335256352,93957335256670],["v8::Shell::WorkerNew(v8::FunctionCallbackInfo<v8::Value> const&)",93957335257680,93957335258855],["v8::Shell::WorkerPostMessage(v8::FunctionCallbackInfo<v8::Value> const&)",93957335259248,93957335259688],["v8::internal::GlobalHandles::UsedSize() const",93957336753344,93957336753370],["v8::internal::GlobalHandles::ClearWeakness(unsigned long*)",93957336755536,93957336755566],["v8::internal::GlobalHandles::IterateWeakRootsIdentifyFinalizers(bool (*)(v8::internal::Heap*, v8::internal::FullObjectSlot))",93957336757200,93957336757374],["v8::internal::GlobalHandles::IterateYoungWeakDeadObjectsForFinalizers(v8::internal::RootVisitor*)",93957336757904,93957336757987],["v8::internal::GlobalHandles::InvokeSecondPassPhantomCallbacks()",93957336759104,93957336759296],["void v8::internal::GlobalHandles::UpdateAndCompactListOfYoungNode<v8::internal::GlobalHandles::Node>(std::__1::vector<v8::internal::GlobalHandles::Node*, std::__1::allocator<v8::internal::GlobalHandles::Node*> >*)",93957336759536,93957336759866],["v8::internal::GlobalHandles::InvokeFirstPassWeakCallbacks()",93957336760208,93957336760250],["unsigned long v8::internal::GlobalHandles::InvokeFirstPassWeakCallbacks<v8::internal::GlobalHandles::TracedNode>(std::__1::vector<std::__1::pair<v8::internal::GlobalHandles::TracedNode*, v8::internal::GlobalHandles::PendingPhantomCallback>, std::__1::allocator<std::__1::pair<v8::internal::GlobalHandles::TracedNode*, v8::internal::GlobalHandles::PendingPhantomCallback> > >*)",93957336760528,93957336760799],["v8::internal::LargeObjectSpace::~LargeObjectSpace()",93957337079008,93957337079467],["v8::internal::LocalHeap::~LocalHeap()",93957337080528,93957337080848],["v8::internal::LocalHeap::PerformCollectionAndAllocateAgain(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment)",93957337082160,93957337083887],["v8::internal::Sweeper::~Sweeper()",93957337150816,93957337151032],["v8::internal::MarkCompactCollector::StartMarking()",93957337155968,93957337156795],["v8::internal::MarkCompactCollector::RecordObjectStats()",93957337164048,93957337164791],["v8::internal::MarkCompactCollector::EnsureSweepingCompleted()",93957337168816,93957337168959],["v8::internal::MarkCompactCollector::Prepare()",93957337169456,93957337170108],["v8::internal::MarkCompactCollector::ProcessTopOptimizedFrame(v8::internal::ObjectVisitor*)",93957337170576,93957337170878],["v8::internal::MarkCompactCollector::RevisitObject(v8::internal::HeapObject)",93957337201680,93957337232449],["v8::internal::MainMarkingVisitor<v8::internal::MajorMarkingState>::MarkDescriptorArrayFromWriteBarrier(v8::internal::DescriptorArray, int)",93957337232496,93957337233066],["v8::internal::MarkCompactCollector::PerformWrapperTracing()",93957337234512,93957337235153],["v8::internal::MarkCompactCollector::ProcessEphemerons()",93957337241360,93957337241629],["v8::internal::MarkCompactCollector::DrainMarkingWorklist()",93957337242096,93957337242108],["std::__1::basic_stringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_stringstream()",93957337242384,93957337242509],["v8::internal::MarkCompactCollector::ClearFullMapTransitions()",93957337242992,93957337243361],["v8::internal::V8HeapExplorer::SetGcSubrootReference(v8::internal::Root, char const*, bool, v8::internal::Object)",93957339653344,93957339653943],["v8::internal::HeapSnapshotJSONSerializer::SerializeNode(v8::internal::HeapEntry const*)",93957339665968,93957339667396],["equalFormatsForHash(UElement, UElement)",93957339672512,93957339672526],["void v8::internal::GlobalObjectsEnumerator::VisitRootPointersImpl<v8::internal::OffHeapCompressedObjectSlot>(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957339673456,93957339673733],["std::__1::deque<v8::internal::CpuProfile::SampleInfo, std::__1::allocator<v8::internal::CpuProfile::SampleInfo> >::__add_back_capacity()",93957339674576,93957339674997],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::CallDescriptor const*, v8::internal::compiler::CallDescriptor const*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::CallDescriptor const*, v8::internal::compiler::CallDescriptor const*>, std::__1::__unordered_map_hasher<v8::internal::compiler::CallDescriptor const*, std::__1::__hash_value_type<v8::internal::compiler::CallDescriptor const*, v8::internal::compiler::CallDescriptor const*>, std::__1::hash<v8::internal::compiler::CallDescriptor const*>, std::__1::equal_to<v8::internal::compiler::CallDescriptor const*>, true>, std::__1::__unordered_map_equal<v8::internal::compiler::CallDescriptor const*, std::__1::__hash_value_type<v8::internal::compiler::CallDescriptor const*, v8::internal::compiler::CallDescriptor const*>, std::__1::equal_to<v8::internal::compiler::CallDescriptor const*>, std::__1::hash<v8::internal::compiler::CallDescriptor const*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::compiler::CallDescriptor const*, v8::internal::compiler::CallDescriptor const*> > >::__emplace_unique_key_args<v8::internal::compiler::CallDescriptor const*, std::__1::pair<v8::internal::compiler::CallDescriptor const* const, v8::internal::compiler::CallDescriptor const*> >(v8::internal::compiler::CallDescriptor const* const&, std::__1::pair<v8::internal::compiler::CallDescriptor const* const, v8::internal::compiler::CallDescriptor const*>&&)",93957339676096,93957339676971],["void std::__1::fill_n<std::__1::vector<bool, v8::internal::ZoneAllocator<bool> > >(std::__1::__bit_iterator<std::__1::vector<bool, v8::internal::ZoneAllocator<bool> >, false, 0>, std::__1::vector<bool, v8::internal::ZoneAllocator<bool> >::size_type, bool)",93957339678480,93957339678734],["v8::internal::SourcePositionTable::SetPosition(int, int, int)",93957339680368,93957339680457],["v8::internal::CodeEntry::gc_entry()",93957339680720,93957339680842],["v8::internal::CodeEntry::GetHash() const",93957339680976,93957339681212],["v8::internal::CodeEntry::SetBuiltinId(v8::internal::Builtins::Name)",93957339681296,93957339681328],["v8::internal::CodeEntry::SetInlineStacks(std::__1::unordered_set<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> >, v8::internal::CodeEntry::Hasher, v8::internal::CodeEntry::Equals, std::__1::allocator<std::__1::unique_ptr<v8::internal::CodeEntry, std::__1::default_delete<v8::internal::CodeEntry> > > >, std::__1::unordered_map<int, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::vector<v8::internal::CodeEntryAndLineNumber, std::__1::allocator<v8::internal::CodeEntryAndLineNumber> > > > >)",93957339681456,93957339681638],["v8::internal::CodeEntry::GetInlineStack(int) const",93957339681808,93957339682298],["v8::internal::CodeEntry::FillFunctionInfo(v8::internal::SharedFunctionInfo)",93957339682560,93957339682883],["v8::internal::CodeEntry::ReleaseStrings(v8::internal::StringsStorage&)",93957339683216,93957339683343],["v8::internal::ProfileNode::CollectDeoptInfo(v8::internal::CodeEntry*)",93957339684064,93957339684336],["v8_inspector::V8ConsoleMessageStorage::count(int, v8_inspector::String16 const&)",93957342424256,93957342424554],["std::__1::__deque_base<std::__1::unique_ptr<v8_inspector::V8ConsoleMessage, std::__1::default_delete<v8_inspector::V8ConsoleMessage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::V8ConsoleMessage, std::__1::default_delete<v8_inspector::V8ConsoleMessage> > > >::clear()",93957342429216,93957342429520],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<v8_inspector::String16, double>, std::__1::__tree_node<std::__1::__value_type<v8_inspector::String16, double>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<v8_inspector::String16, double>, std::__1::__map_value_compare<v8_inspector::String16, std::__1::__value_type<v8_inspector::String16, double>, std::__1::less<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__value_type<v8_inspector::String16, double> > >::__emplace_unique_key_args<v8_inspector::String16, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16 const&>, std::__1::tuple<> >(v8_inspector::String16 const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16 const&>&&, std::__1::tuple<>&&)",93957342431552,93957342432548],["v8_inspector::(anonymous namespace)::ConsoleHelper::reportCall(v8_inspector::ConsoleAPIType)",93957342432848,93957342433073],["v8_inspector::V8Console::Log(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342433280,93957342433364],["v8_inspector::V8Console::Dir(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342433472,93957342433559],["v8_inspector::V8Console::Table(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342433664,93957342433751],["v8_inspector::(anonymous namespace)::ConsoleHelper::reportCallWithDefaultArgument(v8_inspector::ConsoleAPIType, v8_inspector::String16 const&)",93957342433904,93957342434169],["v8::internal::compiler::JSOperatorBuilder::StoreMessage()",93957344262480,93957344262494],["v8::internal::compiler::JSOperatorBuilder::ConstructWithSpread(unsigned int, v8::internal::compiler::CallFrequency const&, v8::internal::compiler::FeedbackSource const&)",93957344269136,93957344269330],["v8::internal::compiler::JSOperatorBuilder::CreateArray(unsigned long, v8::internal::MaybeHandle<v8::internal::AllocationSite>)",93957344273248,93957344273387],["v8::internal::compiler::JSOperatorBuilder::CreateCatchContext(v8::internal::Handle<v8::internal::ScopeInfo> const&)",93957344275968,93957344276093],["v8::internal::compiler::Operator1<v8::internal::compiler::CallRuntimeParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CallRuntimeParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CallRuntimeParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344279264,93957344279365],["v8::internal::compiler::Operator1<v8::internal::compiler::NamedAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::NamedAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::NamedAccess> >::HashCode() const",93957344280176,93957344280299],["v8::internal::compiler::Operator1<v8::internal::compiler::ForInParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ForInParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::ForInParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344281056,93957344281118],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreGlobalParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreGlobalParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreGlobalParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344281760,93957344281820],["v8::internal::compiler::Operator1<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::(anonymous namespace)::TransitionAndStoreNonNumberElementParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344282416,93957344282458],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateArrayIteratorParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateArrayIteratorParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateArrayIteratorParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344282688,93957344282825],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateBoundFunctionParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateBoundFunctionParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateBoundFunctionParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344283056,93957344283187],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateLiteralParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateLiteralParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateLiteralParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344283408,93957344283489],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckBoundsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckBoundsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckBoundsParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344283840,93957344283902],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateFunctionContextParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateFunctionContextParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateFunctionContextParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344284272,93957344284319],["v8::internal::compiler::JSTypeHintLowering::ReduceUnaryOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344284576,93957344285243],["v8::internal::compiler::JSSpeculativeBinopBuilder::TryBuildNumberCompare()",93957344286464,93957344286643],["v8::internal::compiler::JSTypeHintLowering::ReduceForInPrepareOperation(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344287008,93957344287091],["v8::internal::compiler::JSTypeHintLowering::ReduceCallOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node* const*, int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344287376,93957344287463],["v8::internal::compiler::JSTypeHintLowering::ReduceGetIteratorOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot, v8::internal::FeedbackSlot) const",93957344287568,93957344287699],["v8::internal::compiler::JSTypeHintLowering::ReduceLoadKeyedOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344287808,93957344287895],["v8::internal::compiler::JSTypeHintLowering::ReduceStoreKeyedOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344288000,93957344288088],["v8::internal::compiler::JSSpeculativeBinopBuilder::SpeculativeCompareOp(v8::internal::compiler::NumberOperationHint)",93957344288448,93957344288605],["v8::internal::compiler::JSTypedLowering::ReduceJSBitwiseNot(v8::internal::compiler::Node*)",93957344288736,93957344289145],["v8::internal::compiler::JSBinopReduction::ConvertInputsToUI32(v8::internal::compiler::Signedness, v8::internal::compiler::Signedness)",93957344289728,93957344290123],["v8::internal::compiler::JSBinopReduction::NumberOp()",93957344290304,93957344290606],["v8::internal::compiler::JSTypedLowering::ReduceJSIncrement(v8::internal::compiler::Node*)",93957344291008,93957344291397],["v8::internal::compiler::JSTypedLowering::ReduceJSAdd(v8::internal::compiler::Node*)",93957344291808,93957344295875],["v8::internal::compiler::JSBinopReduction::LeftInputIs(v8::internal::compiler::Type)",93957344296048,93957344296120],["v8::internal::compiler::JSBinopReduction::CheckInputsToString()",93957344296656,93957344297802],["v8::internal::compiler::JSBinopReduction::ShouldCreateConsString()",93957344297920,93957344299163],["v8::internal::compiler::JSTypedLowering::ReduceNumberBinop(v8::internal::compiler::Node*)",93957344299328,93957344299671],["v8::internal::compiler::JSTypedLowering::ReduceUI32Shift(v8::internal::compiler::Node*, v8::internal::compiler::Signedness)",93957344300048,93957344300430],["std::__1::ctype<char>::do_widen(char const*, char const*, char*) const",93957346759888,93957346760282],["std::__1::utf8_to_ucs4_length(unsigned char const*, unsigned char const*, unsigned long, unsigned long, std::__1::codecvt_mode)",93957346766864,93957346767431],["std::__1::__time_get_c_storage<char>::__weeks() const",93957346768096,93957346768198],["std::__1::__time_get_c_storage<char>::__am_pm() const",93957346772928,93957346773030],["std::__1::__time_get_c_storage<char>::__X() const",93957346773872,93957346774000],["std::__1::__time_get_c_storage<char>::__r() const",93957346774384,93957346774512],["std::__1::time_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::~time_put()",93957346774896,93957346775006],["__cxx_global_array_dtor.113",93957346776128,93957346776191],["std::__1::__throw_length_error(char const*)",93957346776320,93957346776395],["std::__1::vector<std::__1::locale::facet*, std::__1::__sso_allocator<std::__1::locale::facet*, 30ul> >::__append(unsigned long)",93957346776448,93957346776831],["long std::__1::__num_get_signed_integral<long>(char const*, char const*, unsigned int&, int)",93957346776880,93957346777130],["unsigned int std::__1::__num_get_unsigned_integral<unsigned int>(char const*, char const*, unsigned int&, int)",93957346777424,93957346777713],["float std::__1::__num_get_float<float>(char const*, char const*, unsigned int&)",93957346778016,93957346778226],["long double std::__1::__num_get_float<long double>(char const*, char const*, unsigned int&)",93957346778464,93957346778675],["std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >& std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >::__append_forward_unsafe<wchar_t*>(wchar_t*, wchar_t*)",93957346779456,93957346780288],["std::__1::__shared_weak_count::lock()",93957346780336,93957346780379],["std::__1::__basic_string_common<true>::__throw_length_error() const",93957346782224,93957346782240],["std::__1::__throw_out_of_range(char const*)",93957346782256,93957346782331],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()",93957346783248,93957346783269],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__assign_external(char const*, unsigned long)",93957346784192,93957346784527],["std::__1::__do_message::message(int) const",93957346790736,93957346791021],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseDecltype()",93957346822384,93957346822683],["v8::base::ieee754::pow(double, double)",93957346895792,93957346898004],["icu_68::ChineseCalendar::isLeapMonthBetween(int, int) const",93957346988512,93957346988614],["icu_68::Formattable::isNumeric() const",93957347188912,93957347188949],["icu_68::number::impl::Modifier::Parameters::Parameters(icu_68::number::impl::ModifierStore const*, icu_68::number::impl::Signum, icu_68::StandardPlural::Form)",93957347346128,93957347346143],["icu_68::PluralRules::getRuleFromResource(icu_68::Locale const&, UPluralType, UErrorCode&)",93957347486928,93957347488451],["icu_68::(anonymous namespace)::FCDUTF8NFDIterator::nextRawCodePoint()",93957347691024,93957347691058],["(anonymous namespace)::KeywordsSink::~KeywordsSink()",93957347872144,93957347872186],["icu_68::FCDNormalizer2::isInert(int) const",93957348048688,93957348048767],["u_isdigit_68",93957348158752,93957348158888],["LocExtType* icu_68::MemoryPool<LocExtType, 8>::create<>()",93957348232096,93957348232291],["icu_68::UnicodeString::findAndReplace(int, int, icu_68::UnicodeString const&, int, int, icu_68::UnicodeString const&, int, int)",93957348342912,93957348343591],["icu_68::UStringEnumeration::count(UErrorCode&) const",93957348390416,93957348390430],["icu_68::UVector::sort(signed char (*)(UElement, UElement), UErrorCode&)",93957348429168,93957348429229],["zlib_internal::CompressHelper(zlib_internal::WrapperType, unsigned char*, unsigned long*, unsigned char const*, unsigned long, int, void* (*)(unsigned long), void (*)(void*))",93957348460864,93957348461330],["key_decryptsession_pk",139871564489840,139871564490028],["getnetname",139871564491184,139871564491229],["__libc_rpc_getport",139871564491824,139871564492257],["__rpc_thread_svc_fdset",139871564492672,139871564492727],["__lgammaf_r_finite",139871565504512,139871565507113],["expm1f",139871565516496,139871565517453],["tanhf",139871565519680,139871565519968],["llrintf",139871565521472,139871565521478],["__exp10f_finite",139871565521776,139871565521806],["__finitef",139871565521920,139871565521944],["modff",139871565521984,139871565522123],["__signbitf",139871565522496,139871565522504],["v8::Shell::AsyncHooksTriggerAsyncId(v8::FunctionCallbackInfo<v8::Value> const&)",93957335253952,93957335254047],["v8::Shell::ReadBuffer(v8::FunctionCallbackInfo<v8::Value> const&)",93957335254960,93957335255262],["v8::Shell::SetTimeout(v8::FunctionCallbackInfo<v8::Value> const&)",93957335256176,93957335256350],["v8::ReadWorkerTypeAndArguments(v8::FunctionCallbackInfo<v8::Value> const&, v8::WorkerType*, v8::Local<v8::Value>*)",93957335256672,93957335257146],["v8::internal::FlagList::ResetAllFlags()",93957336728384,93957336728427],["v8::internal::GlobalHandles::Create(v8::internal::Object)",93957336754016,93957336754765],["v8::internal::GlobalHandles::MakeWeak(unsigned long*, void*, void (*)(v8::WeakCallbackInfo<void> const&), v8::WeakCallbackType)",93957336755360,93957336755451],["v8::internal::GlobalHandles::IterateWeakRootsForFinalizers(v8::internal::RootVisitor*)",93957336755584,93957336755705],["v8::internal::GlobalHandles::TracedNode::CollectPhantomCallbackData(std::__1::vector<std::__1::pair<v8::internal::GlobalHandles::TracedNode*, v8::internal::GlobalHandles::PendingPhantomCallback>, std::__1::allocator<std::__1::pair<v8::internal::GlobalHandles::TracedNode*, v8::internal::GlobalHandles::PendingPhantomCallback> > >*)",93957336756784,93957336757199],["v8::internal::GlobalHandles::IdentifyWeakUnmodifiedObjects(bool (*)(v8::internal::FullObjectSlot))",93957336757376,93957336757573],["v8::internal::GlobalHandles::MarkYoungWeakDeadObjectsPending(bool (*)(v8::internal::Heap*, v8::internal::FullObjectSlot))",93957336757744,93957336757895],["v8::internal::GlobalHandles::IterateYoungWeakObjectsForPhantomHandles(v8::internal::RootVisitor*, bool (*)(v8::internal::Heap*, v8::internal::FullObjectSlot))",93957336758000,93957336758528],["v8::internal::LocalFactory::LocalFactory(v8::internal::Isolate*)",93957337079728,93957337079741],["v8::internal::LocalHeap::IsParked()",93957337081008,93957337081031],["v8::internal::LocalHeap::MarkLinearAllocationAreaBlack()",93957337082128,93957337082142],["v8::internal::LocalHeap::RemoveGCEpilogueCallback(void (*)(void*), void*)",93957337083968,93957337084047],["v8::internal::MarkCompactCollector::MarkCompactCollector(v8::internal::Heap*)",93957337149872,93957337150324],["v8::internal::MarkCompactCollector::TearDown()",93957337151072,93957337151246],["v8::internal::MarkCompactCollector::CollectEvacuationCandidates(v8::internal::PagedSpace*)",93957337153440,93957337155963],["v8::internal::MarkCompactCollector::CollectGarbage()",93957337156800,93957337157043],["v8::internal::MarkCompactCollector::ClearNonLiveReferences()",93957337161264,93957337164044],["v8::internal::MarkCompactCollector::StartSweepSpaces()",93957337164800,93957337165391],["v8::internal::MarkCompactCollector::Finish()",93957337167792,93957337168814],["v8::internal::MarkCompactCollector::DrainSweepingWorklists()",93957337168960,93957337168996],["v8::internal::RememberedSet<(v8::internal::RememberedSetType)1>::ClearAll(v8::internal::Heap*)",93957337169056,93957337169450],["v8::internal::MarkCompactCollector::SweepArrayBufferExtensions()",93957337170112,93957337170507],["v8::internal::V8HeapExplorer::ExtractPropertyReferences(v8::internal::JSObject, v8::internal::HeapEntry*)",93957339644800,93957339645789],["v8::internal::EmbedderGraphImpl::~EmbedderGraphImpl()",93957339657152,93957339657284],["v8::internal::HeapSnapshotJSONSerializer::SerializeLocations()",93957339664448,93957339664654],["v8::internal::HeapSnapshotJSONSerializer::SerializeLocation(v8::internal::SourceLocation const&)",93957339670176,93957339670959],["v8::internal::RootsReferencesExtractor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)",93957339672240,93957339672361],["v8::internal::IndexedReferencesExtractor::VisitCodeTarget(v8::internal::Code, v8::internal::RelocInfo*)",93957339672832,93957339672957],["v8::internal::GlobalObjectsEnumerator::VisitRootPointers(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957339673152,93957339673162],["v8::internal::EmbedderGraphImpl::AddNode(std::__1::unique_ptr<v8::EmbedderGraph::Node, std::__1::default_delete<v8::EmbedderGraph::Node> >)",93957339673904,93957339674011],["void v8::internal::OutputStreamWriter::AddNumberImpl<unsigned int>(unsigned int, char const*)",93957339674240,93957339674575],["void std::__1::vector<v8::internal::SourceLocation, std::__1::allocator<v8::internal::SourceLocation> >::__emplace_back_slow_path<int, int&, int&, int&>(int&&, int&, int&, int&)",93957339675008,93957339675319],["void std::__1::vector<v8::internal::HeapObjectsMap::EntryInfo, std::__1::allocator<v8::internal::HeapObjectsMap::EntryInfo> >::__emplace_back_slow_path<int, unsigned long const&, int, bool>(int&&, unsigned long const&, int&&, bool&&)",93957339675760,93957339676083],["void std::__1::vector<v8::internal::HeapObjectsMap::TimeInterval, std::__1::allocator<v8::internal::HeapObjectsMap::TimeInterval> >::__emplace_back_slow_path<unsigned int&>(unsigned int&)",93957339676976,93957339677291],["std::__1::vector<bool, std::__1::allocator<bool> >::reserve(unsigned long)",93957339678208,93957339678480],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::JSGlobalObject, char const*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::JSGlobalObject, char const*>, std::__1::__unordered_map_hasher<v8::internal::JSGlobalObject, std::__1::__hash_value_type<v8::internal::JSGlobalObject, char const*>, v8::internal::Object::Hasher, std::__1::equal_to<v8::internal::JSGlobalObject>, true>, std::__1::__unordered_map_equal<v8::internal::JSGlobalObject, std::__1::__hash_value_type<v8::internal::JSGlobalObject, char const*>, std::__1::equal_to<v8::internal::JSGlobalObject>, v8::internal::Object::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::JSGlobalObject, char const*> > >::__emplace_unique_key_args<v8::internal::JSGlobalObject, v8::internal::JSGlobalObject, char const* const&>(v8::internal::JSGlobalObject const&, v8::internal::JSGlobalObject&&, char const* const&)",93957339678736,93957339679535],["v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::base::DefaultAllocationPolicy>::Resize()",93957339679824,93957339680353],["v8::internal::CodeEntry::program_entry()",93957339680464,93957339680586],["v8_inspector::V8ConsoleMessage::createForConsoleAPI(v8::Local<v8::Context>, int, int, v8_inspector::V8InspectorImpl*, double, v8_inspector::ConsoleAPIType, std::__1::vector<v8::Local<v8::Value>, std::__1::allocator<v8::Local<v8::Value> > > const&, v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::V8StackTraceImpl, std::__1::default_delete<v8_inspector::V8StackTraceImpl> >)",93957342417440,93957342420337],["v8_inspector::V8ConsoleMessageStorage::timeEnd(int, v8_inspector::String16 const&)",93957342426016,93957342426723],["v8_inspector::(anonymous namespace)::V8ValueStringBuilder::append(v8::Local<v8::Symbol>)",93957342428624,93957342428748],["std::__1::__tree<std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData>, std::__1::__map_value_compare<int, std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData>, std::__1::less<int>, true>, std::__1::allocator<std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData> > >::destroy(std::__1::__tree_node<std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData>, void*>*)",93957342430304,93957342430397],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<v8_inspector::String16, int>, std::__1::__tree_node<std::__1::__value_type<v8_inspector::String16, int>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<v8_inspector::String16, int>, std::__1::__map_value_compare<v8_inspector::String16, std::__1::__value_type<v8_inspector::String16, int>, std::__1::less<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__value_type<v8_inspector::String16, int> > >::__emplace_unique_key_args<v8_inspector::String16, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16 const&>, std::__1::tuple<> >(v8_inspector::String16 const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16 const&>&&, std::__1::tuple<>&&)",93957342430544,93957342431540],["std::__1::__tree<std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData>, std::__1::__map_value_compare<int, std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData>, std::__1::less<int>, true>, std::__1::allocator<std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData> > >::erase(std::__1::__tree_const_iterator<std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData>, std::__1::__tree_node<std::__1::__value_type<int, v8_inspector::V8ConsoleMessageStorage::PerContextData>, void*>*, long>)",93957342432560,93957342432720],["v8_inspector::V8Console::Debug(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342432752,93957342432839],["v8_inspector::V8Console::Error(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&)",93957342433088,93957342433175],["v8::internal::compiler::JSNativeContextSpecialization::BuildElementAccess(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::ElementAccessInfo const&, v8::internal::compiler::KeyedAccessMode const&)",93957344235472,93957344244234],["v8::internal::compiler::JSOperatorBuilder::Increment(v8::internal::compiler::FeedbackSource const&)",93957344263216,93957344263391],["v8::internal::compiler::JSOperatorBuilder::CallWithArrayLike(v8::internal::compiler::CallFrequency const&, v8::internal::compiler::FeedbackSource const&, v8::internal::SpeculationMode, v8::internal::compiler::CallFeedbackRelation)",93957344267552,93957344267781],["v8::internal::compiler::JSOperatorBuilder::GeneratorStore(int)",93957344270768,93957344270894],["v8::internal::compiler::JSOperatorBuilder::LoadModule(int)",93957344272752,93957344272877],["v8::internal::compiler::JSOperatorBuilder::CreateBoundFunction(unsigned long, v8::internal::Handle<v8::internal::Map>)",93957344273840,93957344273982],["v8::internal::compiler::JSOperatorBuilder::StackCheck(v8::internal::compiler::StackCheckKind)",93957344275344,93957344275466],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344278640,93957344278672],["v8::internal::compiler::Operator1<v8::internal::compiler::CallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CallParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344279120,93957344279190],["v8::internal::compiler::Operator1<v8::internal::compiler::JSWasmCallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::JSWasmCallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::JSWasmCallParameters> >::HashCode() const",93957344279440,93957344279573],["v8::internal::compiler::Operator1<v8::internal::compiler::ConstructParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ConstructParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::ConstructParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344279968,93957344280097],["v8::internal::compiler::Operator1<v8::internal::compiler::PropertyAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::PropertyAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::PropertyAccess> >::Equals(v8::internal::compiler::Operator const*) const",93957344280448,93957344280498],["v8::internal::compiler::Operator1<v8::internal::compiler::GetIteratorParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::GetIteratorParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::GetIteratorParameters> >::HashCode() const",93957344280816,93957344280942],["v8::internal::compiler::Operator1<v8::internal::compiler::ForInParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ForInParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::ForInParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344281232,93957344281302],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadGlobalParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadGlobalParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadGlobalParameters> >::HashCode() const",93957344281552,93957344281632],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreGlobalParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreGlobalParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreGlobalParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344281952,93957344282089],["v8::internal::compiler::Operator1<v8::internal::compiler::ContextAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ContextAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ContextAccess> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344282272,93957344282403],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateArrayParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateArrayParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateArrayParameters> >::HashCode() const",93957344282464,93957344282507],["v8::internal::compiler::Operator1<v8::internal::compiler::TruncateKind, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TruncateKind>, v8::internal::compiler::OpHash<v8::internal::compiler::TruncateKind> >::HashCode() const",93957344282656,93957344282674],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateCollectionIteratorParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateCollectionIteratorParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateCollectionIteratorParameters> >::HashCode() const",93957344282832,93957344282875],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateBoundFunctionParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateBoundFunctionParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateBoundFunctionParameters> >::HashCode() const",93957344282960,93957344283041],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateClosureParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateClosureParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateClosureParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344283200,93957344283249],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateClosureParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateClosureParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateClosureParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344283328,93957344283398],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateLiteralParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateLiteralParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateLiteralParameters> >::HashCode() const",93957344283504,93957344283540],["v8::internal::compiler::Operator1<v8::internal::compiler::GetTemplateObjectParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::GetTemplateObjectParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::GetTemplateObjectParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344283712,93957344283840],["v8::internal::compiler::Operator1<v8::internal::compiler::CloneObjectParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CloneObjectParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CloneObjectParameters> >::HashCode() const",93957344283904,93957344284022],["v8::internal::compiler::Operator1<v8::internal::compiler::StackCheckKind, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StackCheckKind>, v8::internal::compiler::OpHash<v8::internal::compiler::StackCheckKind> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344284112,93957344284266],["v8::internal::compiler::Operator1<v8::internal::compiler::CreateFunctionContextParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CreateFunctionContextParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CreateFunctionContextParameters> >::HashCode() const",93957344284320,93957344284426],["v8::internal::compiler::JSTypeHintLowering::JSTypeHintLowering(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::JSGraph*, v8::internal::compiler::FeedbackVectorRef, v8::base::Flags<v8::internal::compiler::JSTypeHintLowering::Flag, int>)",93957344284544,93957344284569],["v8::internal::compiler::JSTypeHintLowering::TryBuildSoftDeopt(v8::internal::FeedbackSlot, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::DeoptimizeReason) const",93957344285248,93957344285727],["v8::internal::compiler::JSTypeHintLowering::ReduceBinaryOperation(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::FeedbackSlot) const",93957344285920,93957344286453],["v8::internal::compiler::JSSpeculativeBinopBuilder::TryBuildBigIntBinop()",93957344286656,93957344286911],["std::__1::ctype<wchar_t>::do_is(wchar_t const*, wchar_t const*, unsigned short*) const",93957346757152,93957346757320],["std::__1::codecvt<wchar_t, char, __mbstate_t>::do_in(__mbstate_t&, char const*, char const*, char const*&, wchar_t*, wchar_t*, wchar_t*&) const",93957346761952,93957346762603],["std::__1::ucs4_to_utf8(unsigned int const*, unsigned int const*, unsigned int const*&, unsigned char*, unsigned char*, unsigned char*&, unsigned long, std::__1::codecvt_mode)",93957346765760,93957346766137],["std::__1::numpunct<wchar_t>::~numpunct()",93957346767600,93957346767656],["std::__1::numpunct<char>::do_falsename() const",93957346767984,93957346768009],["std::__1::__time_get_c_storage<wchar_t>::__weeks() const",93957346769072,93957346769174],["std::__1::__time_get_c_storage<wchar_t>::__months() const",93957346771440,93957346771542],["std::__1::__time_get_c_storage<wchar_t>::__am_pm() const",93957346773248,93957346773350],["std::__1::__time_get_c_storage<wchar_t>::__x() const",93957346773744,93957346773872],["std::__1::__time_get_c_storage<wchar_t>::__X() const",93957346774000,93957346774128],["std::__1::__time_get_c_storage<wchar_t>::__c() const",93957346774256,93957346774384],["std::__1::__time_get_c_storage<wchar_t>::__r() const",93957346774512,93957346774640],["std::__1::time_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::~time_put()",93957346774768,93957346774886],["__cxx_global_array_dtor",93957346775008,93957346775534],["__cxx_global_array_dtor.89",93957346776064,93957346776127],["__cxx_global_array_dtor.137",93957346776192,93957346776250],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::replace(unsigned long, unsigned long, char const*)",93957346783184,93957346783243],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__grow_by(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)",93957346783280,93957346783536],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::insert(unsigned long, char const*, unsigned long)",93957346783664,93957346784187],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__assign_external(char const*)",93957346784528,93957346784567],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*)",93957346787856,93957346787895],["__cxa_allocate_exception",93957346792384,93957346792459],["std::bad_cast::what() const",93957346801664,93957346801677],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::InitListExpr, decltype(nullptr), (anonymous namespace)::itanium_demangle::NodeArray>(decltype(nullptr)&&, (anonymous namespace)::itanium_demangle::NodeArray&&)",93957346839536,93957346839683],["(anonymous namespace)::itanium_demangle::QualType::hasArraySlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346872512,93957346872544],["v8::base::RandomNumberGenerator::NextInt64()",93957346905472,93957346905527],["icu_68::LocaleCacheKey<icu_68::SharedCalendar>::createObject(void const*, UErrorCode&) const",93957346948384,93957346948506],["icu_68::CurrencyUnit::getDynamicClassID() const",93957347023824,93957347023837],["icu_68::DateIntervalFormat::getTimeZone() const",93957347133680,93957347133757],["icu_68::HebrewCalendar::isLeapYear(int)",93957347209024,93957347209088],["icu_68::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&) const",93957347297808,93957347298113],["icu_68::number::Precision::integer()",93957347375952,93957347375995],["icu_68::numparse::impl::CombinedCurrencyMatcher::~CombinedCurrencyMatcher()",93957347459376,93957347459404],["icu_68::NFRule::doParse(icu_68::UnicodeString const&, icu_68::ParsePosition&, signed char, double, unsigned int, icu_68::Formattable&) const",93957347527360,93957347529151],["icu_68::RuleBasedTimeZone::~RuleBasedTimeZone()",93957347638944,93957347639058],["icu_68::AppendableWrapper::formatAndAppend(icu_68::Format const*, icu_68::Formattable const&, icu_68::UnicodeString const&, UErrorCode&)",93957347764192,93957347764515],["icu_68::TextTrieMap::search(icu_68::CharacterNode*, icu_68::UnicodeString const&, int, int, icu_68::TextTrieMapSearchResultHandler*, UErrorCode&) const",93957347843424,93957347844050],["icu_68::BreakIterator::createInstance(icu_68::Locale const&, int, UErrorCode&)",93957347922240,93957347922715],["icu_68::Locale::createFromName(char const*)",93957348000880,93957348001128],["icu_68::RuleBasedBreakIterator::current() const",93957348090944,93957348090956],["icu_68::SharedObject::removeRef() const",93957348135632,93957348135676],["icu_68::UCharCharacterIterator::first()",93957348171664,93957348171694],["utf8IteratorMove(UCharIterator*, int, UCharIteratorOrigin)",93957348209120,93957348210231],["icu_68::UnicodeSet::hasStrings() const",93957348277088,93957348277114],["icu_68::UnicodeSetStringSpan::spanUTF8(unsigned char const*, int, USetSpanCondition) const",93957348326752,93957348328219],["getVo(IntProperty const&, int, UProperty)",93957348351264,93957348351322],["icu_68::UnicodeSetIterator::getString()",93957348379312,93957348379475],["u_terminateChars_68",93957348395952,93957348396013],["getDataBlock(UNewTrie2*, int, signed char)",93957348421568,93957348422195],["icu_68::UVector64::~UVector64()",93957348431248,93957348431306],["Cr_z__tr_stored_block",93957348451888,93957348452208],["zlib_internal::CompressHelper(zlib_internal::WrapperType, unsigned char*, unsigned long*, unsigned char const*, unsigned long, int, void* (*)(unsigned long), void (*)(void*))::$_0::__invoke(void*, unsigned int, unsigned int)",93957348461568,93957348461584],["key_secretkey_is_set",139871564489232,139871564489353],["key_setnet",139871564490272,139871564490376],["host2netname",139871564490816,139871564491177],["netname2user",139871564491232,139871564491542],["__fmodf_finite",139871565496224,139871565496691],["__sinhf_finite",139871565509296,139871565509737],["erff",139871565513920,139871565515187],["logbf",139871565518304,139871565518399],["tanf",139871565519312,139871565519679],["__fpclassifyf",139871565519968,139871565520034],["roundf",139871565520912,139871565521021],["lroundf",139871565521488,139871565521631],["v8::Shell::TestVerifySourcePositions(v8::FunctionCallbackInfo<v8::Value> const&)",93957335251296,93957335253550],["v8::Shell::Print(v8::FunctionCallbackInfo<v8::Value> const&)",93957335254496,93957335254550],["v8::Shell::Read(v8::FunctionCallbackInfo<v8::Value> const&)",93957335254656,93957335254954],["v8::Shell::ReadFromStdin(v8::Isolate*)",93957335255264,93957335255623],["v8::internal::StatisticsExtension::GetCounters(v8::FunctionCallbackInfo<v8::Value> const&)",93957336719072,93957336722950],["v8::internal::(anonymous namespace)::Flag::CheckFlagChange(v8::internal::(anonymous namespace)::Flag::SetBy, bool, char const*)",93957336752672,93957336753084],["v8::internal::GlobalHandles::GlobalHandles(v8::internal::Isolate*)",93957336753424,93957336753635],["v8::internal::GlobalHandles::MoveGlobal(unsigned long**, unsigned long**)",93957336754784,93957336754808],["v8::internal::GlobalHandles::NodeSpace<v8::internal::GlobalHandles::TracedNode>::Release(v8::internal::GlobalHandles::TracedNode*)",93957336755104,93957336755357],["v8::internal::GlobalHandles::MakeWeak(unsigned long**)",93957336755456,93957336755525],["v8_inspector::AsyncStackTrace::setSuspendedTaskId(void*)",93957336755568,93957336755578],["v8::internal::GlobalHandles::IterateWeakRootsForPhantomHandles(bool (*)(v8::internal::Heap*, v8::internal::FullObjectSlot))",93957336755712,93957336756295],["v8::internal::NoFreeList::GuaranteedAllocatable(unsigned long)",93957337079664,93957337079682],["v8::internal::LocalHeap::Current()",93957337080128,93957337080153],["v8::internal::LocalHeap::AttachPersistentHandles(std::__1::unique_ptr<v8::internal::PersistentHandles, std::__1::default_delete<v8::internal::PersistentHandles> >)",93957337080928,93957337080976],["v8::internal::LocalHeap::Unpark()",93957337081152,93957337081653],["v8::internal::LocalHeap::MakeLinearAllocationAreaIterable()",93957337082112,93957337082126],["v8::internal::LocalHeap::UnmarkLinearAllocationArea()",93957337082144,93957337082158],["v8::internal::LocalHeap::AddGCEpilogueCallback(void (*)(void*), void*)",93957337083888,93957337083954],["v8::internal::LocalHeap::InvokeGCEpilogueCallbacksInSafepoint()",93957337084048,93957337084100],["unsigned long v8::internal::MarkCompactCollector::ProcessMarkingWorklist<(v8::internal::MarkCompactCollector::MarkingWorklistProcessingMode)1>(unsigned long)",93957337116880,93957337149863],["v8::internal::MarkCompactCollector::~MarkCompactCollector()",93957337150336,93957337150806],["v8::internal::MarkCompactCollector::~MarkCompactCollector()",93957337151040,93957337151068],["v8::internal::MarkCompactCollector::AbortWeakObjects()",93957337151248,93957337153021],["v8::internal::V8HeapExplorer::ExtractSharedFunctionInfoReferences(v8::internal::HeapEntry*, v8::internal::SharedFunctionInfo)",93957339640368,93957339640741],["v8::internal::V8HeapExplorer::SetWeakReference(v8::internal::HeapEntry*, char const*, v8::internal::Object, int)",93957339648800,93957339649361],["v8::internal::EmbedderGraphEntriesAllocator::AllocateEntry(void*)",93957339654768,93957339655239],["v8::internal::HeapSnapshotGenerator::ProgressReport(bool)",93957339658224,93957339658300],["v8::internal::HeapSnapshotJSONSerializer::SerializeTraceNodeInfos()",93957339662016,93957339663751],["v8::internal::OutputStreamWriter::Finalize()",93957339665200,93957339665273],["v8::internal::HeapSnapshotJSONSerializer::SerializeString(unsigned char const*)",93957339668384,93957339669852],["v8::internal::HeapSnapshotGenerator::~HeapSnapshotGenerator()",93957339670992,93957339671113],["v8::internal::RootsReferencesExtractor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957339672144,93957339672235],["v8::internal::RootsReferencesExtractor::VisitRootPointers(v8::internal::Root, char const*, v8::internal::OffHeapCompressedObjectSlot, v8::internal::OffHeapCompressedObjectSlot)",93957339672368,93957339672499],["v8::internal::IndexedReferencesExtractor::VisitPointers(v8::internal::HeapObject, v8::internal::CompressedMaybeObjectSlot, v8::internal::CompressedMaybeObjectSlot)",93957339672528,93957339672827],["v8::internal::IndexedReferencesExtractor::VisitEmbeddedPointer(v8::internal::Code, v8::internal::RelocInfo*)",93957339672960,93957339673065],["v8::internal::GlobalObjectsEnumerator::VisitRootPointers(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957339673136,93957339673146],["void v8::internal::GlobalObjectsEnumerator::VisitRootPointersImpl<v8::internal::FullObjectSlot>(v8::internal::Root, char const*, v8::internal::FullObjectSlot, v8::internal::FullObjectSlot)",93957339673168,93957339673443],["v8::internal::EmbedderGraphImpl::V8Node(v8::Local<v8::Value> const&)",93957339673744,93957339673895],["v8::internal::EmbedderGraphImpl::AddEdge(v8::EmbedderGraph::Node*, v8::EmbedderGraph::Node*, char const*)",93957339674016,93957339674094],["v8_inspector::V8ConsoleMessage::~V8ConsoleMessage()",93957342410608,93957342410898],["v8_inspector::V8ConsoleMessageStorage::V8ConsoleMessageStorage(v8_inspector::V8InspectorImpl*, int)",93957342422352,93957342422398],["v8_inspector::V8ConsoleMessageStorage::countReset(int, v8_inspector::String16 const&)",93957342424880,93957342425456],["v8_inspector::V8ConsoleMessageStorage::contextDestroyed(int)",93957342427264,93957342427550],["v8_inspector::(anonymous namespace)::V8ValueStringBuilder::append(v8::Local<v8::BigInt>)",93957342428432,93957342428612],["v8_inspector::(anonymous namespace)::V8ValueStringBuilder::append(v8::Local<v8::Array>)",93957342428752,93957342429201],["void std::__1::vector<std::__1::unique_ptr<v8::Global<v8::Value>, std::__1::default_delete<v8::Global<v8::Value> > >, std::__1::allocator<std::__1::unique_ptr<v8::Global<v8::Value>, std::__1::default_delete<v8::Global<v8::Value> > > > >::__push_back_slow_path<std::__1::unique_ptr<v8::Global<v8::Value>, std::__1::default_delete<v8::Global<v8::Value> > > >(std::__1::unique_ptr<v8::Global<v8::Value>, std::__1::default_delete<v8::Global<v8::Value> > >&&)",93957342429520,93957342430296],["void std::__1::__function::__policy_invoker<void (v8_inspector::V8InspectorSessionImpl*)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::V8ConsoleMessageStorage::addMessage(std::__1::unique_ptr<v8_inspector::V8ConsoleMessage, std::__1::default_delete<v8_inspector::V8ConsoleMessage> >)::$_0, void (v8_inspector::V8InspectorSessionImpl*)> >(std::__1::__function::__policy_storage const*, v8_inspector::V8InspectorSessionImpl*)",93957342430400,93957342430455],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSPromiseResolve(v8::internal::compiler::Node*)",93957344192304,93957344193449],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::CallParameters const&)",93957344261168,93957344261491],["v8::internal::compiler::JSOperatorBuilder::RejectPromise()",93957344262608,93957344262622],["v8::internal::compiler::JSOperatorBuilder::BitwiseXor(v8::internal::compiler::FeedbackSource const&)",93957344264624,93957344264799],["v8::internal::compiler::JSOperatorBuilder::StoreDataPropertyInLiteral(v8::internal::compiler::FeedbackSource const&)",93957344266752,93957344266930],["v8::internal::compiler::JSOperatorBuilder::CallWasm(v8::internal::wasm::WasmModule const*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::compiler::FeedbackSource const&)",93957344268368,93957344268574],["v8::internal::compiler::JSOperatorBuilder::GetIterator(v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::FeedbackSource const&)",93957344269952,93957344270150],["v8::internal::compiler::JSOperatorBuilder::StoreNamedOwn(v8::internal::Handle<v8::internal::Name>, v8::internal::compiler::FeedbackSource const&)",93957344271456,93957344271642],["v8::internal::compiler::JSOperatorBuilder::LoadContext(unsigned long, unsigned long, bool)",93957344272432,93957344272585],["v8::internal::compiler::JSOperatorBuilder::StoreModule(int)",93957344272992,93957344273117],["v8::internal::compiler::JSOperatorBuilder::CreateAsyncFunctionObject(int)",93957344273520,93957344273645],["v8::internal::compiler::JSOperatorBuilder::CreateLiteralArray(v8::internal::Handle<v8::internal::ArrayBoilerplateDescription>, v8::internal::compiler::FeedbackSource const&, int, int)",93957344274192,93957344274403],["v8::internal::compiler::JSOperatorBuilder::GetTemplateObject(v8::internal::Handle<v8::internal::TemplateObjectDescription>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::compiler::FeedbackSource const&)",93957344274944,93957344275144],["v8::internal::compiler::JSOperatorBuilder::CreateLiteralRegExp(v8::internal::Handle<v8::internal::String>, v8::internal::compiler::FeedbackSource const&, int)",93957344275584,93957344275791],["v8::internal::compiler::JSOperatorBuilder::CreateBlockContext(v8::internal::Handle<v8::internal::ScopeInfo> const&)",93957344276224,93957344276346],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344278752,93957344278822],["v8::internal::compiler::Operator1<v8::internal::compiler::CallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CallParameters> >::HashCode() const",93957344279008,93957344279116],["v8::internal::compiler::Operator1<v8::internal::compiler::CallRuntimeParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CallRuntimeParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CallRuntimeParameters> >::HashCode() const",93957344279200,93957344279252],["v8::internal::compiler::Operator1<v8::internal::compiler::JSWasmCallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::JSWasmCallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::JSWasmCallParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344279376,93957344279428],["v8::internal::compiler::Operator1<v8::internal::compiler::JSWasmCallParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::JSWasmCallParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::JSWasmCallParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344279584,93957344279716],["v8::internal::compiler::Operator1<v8::internal::compiler::ConstructParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ConstructParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::ConstructParameters> >::HashCode() const",93957344279840,93957344279961],["v8::internal::compiler::Operator1<v8::internal::compiler::NamedAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::NamedAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::NamedAccess> >::Equals(v8::internal::compiler::Operator const*) const",93957344280112,93957344280172],["v8::internal::compiler::Operator1<v8::internal::compiler::NamedAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::NamedAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::NamedAccess> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344280304,93957344280441],["v8::internal::compiler::Operator1<v8::internal::compiler::PropertyAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::PropertyAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::PropertyAccess> >::HashCode() const",93957344280512,93957344280600],["v8::internal::compiler::Operator1<v8::internal::compiler::GetIteratorParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::GetIteratorParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::GetIteratorParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344280736,93957344280806],["v8::internal::compiler::Operator1<v8::internal::compiler::GetIteratorParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::GetIteratorParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::GetIteratorParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344280944,93957344281046],["v8::internal::compiler::Operator1<v8::internal::compiler::ForInParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ForInParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::ForInParameters> >::HashCode() const",93957344281120,93957344281231],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreNamedOwnParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreNamedOwnParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreNamedOwnParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344281312,93957344281354],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadGlobalParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadGlobalParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadGlobalParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957344281472,93957344281544],["v8::internal::compiler::Operator1<v8::internal::compiler::LoadGlobalParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::LoadGlobalParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::LoadGlobalParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344281632,93957344281745],["v8::internal::compiler::Operator1<v8::internal::compiler::StoreGlobalParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::StoreGlobalParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::StoreGlobalParameters> >::HashCode() const",93957344281824,93957344281947],["v8::internal::compiler::Operator1<v8::internal::compiler::ContextAccess, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ContextAccess>, v8::internal::compiler::OpHash<v8::internal::compiler::ContextAccess> >::Equals(v8::internal::compiler::Operator const*) const",93957344282096,93957344282150],["std::__1::messages<char>::do_get(long, int, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const",93957346746048,93957346746385],["std::__1::ctype<wchar_t>::do_narrow(wchar_t, char) const",93957346758544,93957346758561],["std::__1::codecvt<char, char, __mbstate_t>::do_unshift(__mbstate_t&, char*, char*, char*&) const",93957346760864,93957346760878],["std::__1::codecvt<wchar_t, char, __mbstate_t>::do_max_length() const",93957346763376,93957346763435],["std::__1::utf8_to_utf16_length(unsigned char const*, unsigned char const*, unsigned long, unsigned long, std::__1::codecvt_mode)",93957346765072,93957346765652],["std::__1::utf8_to_ucs4(unsigned char const*, unsigned char const*, unsigned char const*&, unsigned int*, unsigned int*, unsigned int*&, unsigned long, std::__1::codecvt_mode)",93957346766240,93957346766830],["std::__1::numpunct<char>::~numpunct()",93957346767488,93957346767544],["std::__1::numpunct<char>::do_grouping() const",93957346767680,93957346767744],["std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >::basic_string<decltype(nullptr)>(wchar_t const*)",93957346767824,93957346767974],["std::__1::numpunct<wchar_t>::do_falsename() const",93957346768016,93957346768089],["std::__1::init_weeks()",93957346768208,93957346769067],["std::__1::init_wweeks()",93957346769184,93957346769946],["std::__1::init_months()",93957346770064,93957346771432],["std::__1::init_wmonths()",93957346771552,93957346772922],["std::__1::init_am_pm()",93957346773040,93957346773238],["std::__1::init_wam_pm()",93957346773360,93957346773609],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >& std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__assign_no_alias<true>(char const*, unsigned long)",93957346786192,93957346786360],["std::__1::to_string(int)",93957346789408,93957346789726],["std::__1::system_error::~system_error()",93957346791888,93957346791898],["__cxa_uncaught_exceptions",93957346793280,93957346793311],["__cxxabiv1::__vmi_class_type_info::has_unambiguous_public_base(__cxxabiv1::__dynamic_cast_info*, void*, int) const",93957346798416,93957346798717],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [12], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [12], (anonymous namespace)::itanium_demangle::Node*&)",93957346816432,93957346816593],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::EnclosingExpr, char const (&) [10], (anonymous namespace)::itanium_demangle::Node*&, char const (&) [2]>(char const (&) [10], (anonymous namespace)::itanium_demangle::Node*&, char const (&) [2])",93957346830336,93957346830538],["(anonymous namespace)::itanium_demangle::IntegerLiteral::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346843184,93957346843862],["(anonymous namespace)::itanium_demangle::parse_discriminator(char const*, char const*)",93957346862752,93957346862954],["v8::base::BoundedPageAllocator::DiscardSystemPages(void*, unsigned long)",93957346878400,93957346878418],["v8::base::SharedMutex::UnlockShared()",93957346900144,93957346900154],["v8::base::OS::isDirectorySeparator(char)",93957346911584,93957346911597],["v8::platform::DefaultForegroundTaskRunner::MoveExpiredDelayedTasks(v8::base::LockGuard<v8::base::Mutex, (v8::base::NullBehavior)0> const&)",93957346927104,93957346927505],["icu_68::Calendar::getActualMinimum(UCalendarDateFields, UErrorCode&) const",93957346972000,93957346972591],["icu_68::CollationTailoring::ensureOwnedData(UErrorCode&)",93957346999920,93957347000098],["icu_68::DecimalFormat::setMultiplierScale(int)",93957347033248,93957347033304],["icu_68::DateFormatSymbols::DateFormatSymbols(UErrorCode&)",93957347093296,93957347093414],["icu_68::PtnSkeleton::getSkeleton() const",93957347164032,93957347164293],["icu_68::FormattedStringBuilder::contentEquals(icu_68::FormattedStringBuilder const&) const",93957347200096,93957347200300],["icu_68::FormattedList::~FormattedList()",93957347221120,93957347221176],["icu_68::double_conversion::Bignum::AssignBignum(icu_68::double_conversion::Bignum const&)",93957347255856,93957347255914],["icu_68::number::IntegerWidth::operator==(icu_68::number::IntegerWidth const&) const",93957347324048,93957347324077],["icu_68::number::impl::MutablePatternModifier::MutablePatternModifier(bool)",93957347354400,93957347354551],["icu_68::number::impl::GeneratorHelpers::integerWidth(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347397984,93957347398269],["icu_68::LocaleCacheKey<icu_68::SharedNumberFormat>::~LocaleCacheKey()",93957347431728,93957347431778],["icu_68::OlsonTimeZone::OlsonTimeZone(UResourceBundle const*, UResourceBundle const*, icu_68::UnicodeString const&, UErrorCode&)",93957347465616,93957347467345],["icu_68::RuleBasedNumberFormat::getNumberOfRuleSetDisplayNameLocales() const",93957347503792,93957347503819],["icu_68::ModulusSubstitution::calcUpperBound(double) const",93957347548832,93957347548844],["icu_68::DataBuilderCollationIterator::previousCodePoint(UErrorCode&)",93957347611136,93957347611207],["icu_68::RelativeDateFormat::format(icu_68::Calendar&, icu_68::UnicodeString&, icu_68::FieldPosition&) const",93957347665984,93957347667490],["icu_68::createFastFormatter(icu_68::DecimalFormat const*, int, int, UErrorCode&)",93957347729952,93957347730221],["icu_68::StringSegment::StringSegment(icu_68::UnicodeString const&, bool)",93957347785552,93957347785591],["icu_68::TZGNCore::~TZGNCore()",93957347829168,93957347829196],["icu_68::TimeZoneRule::operator==(icu_68::TimeZoneRule const&) const",93957347860544,93957347860720],["icu_68::UTF16CollationIterator::handleNextCE32(int&, UErrorCode&)",93957347900736,93957347900819],["icu_68::CanonicalIterator::extract(icu_68::Hashtable*, int, char16_t const*, int, int, UErrorCode&)",93957347937536,93957347938715],["_getStringOrCopyKey(char const*, char const*, char const*, char const*, char const*, char const*, char16_t*, int, UErrorCode*)",93957347968896,93957347969263],["icu_68::MessagePattern::clear()",93957348031840,93957348031890],["icu_68::PatternProps::trimWhiteSpace(char16_t const*, int&)",93957348080928,93957348081283],["icu_68::RuleBasedBreakIterator::BreakCache::seek(int)",93957348116864,93957348117021],["icu_68::LocaleKey::prefix(icu_68::UnicodeString&) const",93957348132416,93957348132658],["icu_68::StringTrieBuilder::IntermediateValueNode::write(icu_68::StringTrieBuilder&)",93957348147440,93957348147490],["icu_68::UCharsTrieBuilder::getLimitOfLinearMatch(int, int, int) const",93957348165104,93957348165348],["ucptrie_internalSmallU8Index_68",93957348175008,93957348175187],["uhash_get_68",93957348202560,93957348202820],["uloc_openKeywords_68",93957348218928,93957348219957],["icu_68::(anonymous namespace)::MutableCodePointTrie::getDataBlock(int)",93957348269232,93957348269740],["icu_68::UnicodeSet::containsNone(int, int) const",93957348281856,93957348281954],["icu_68::(anonymous namespace)::mungeCharName(char*, char const*, int)",93957348307808,93957348307907],["icu_68::UnicodeString::UnicodeString(icu_68::UnicodeString const&, int)",93957348338624,93957348338757],["hasFullCompositionExclusion(BinaryProperty const&, int, UProperty)",93957348349008,93957348349176],["ures_getLocaleInternal_68",93957348362528,93957348362568],["res_getTableItemByIndex_68",93957348376352,93957348376683],["_cmpFold(char16_t const*, int, char16_t const*, int, unsigned int, int*, int*, UErrorCode*)",93957348386784,93957348388829],["u_strstr_68",93957348392880,93957348392903],["utext_nativeLength_68",93957348402080,93957348402092],["utf8_nextCharSafeBody_68",93957348409216,93957348409797],["icu_68::UVector::assign(icu_68::UVector const&, void (*)(UElement*, UElement*), UErrorCode&)",93957348425408,93957348425644],["icu_68::UVector32::setSize(int)",93957348430176,93957348430471],["_cpu_check_features",93957348433152,93957348433228],["deflate_rle",93957348443424,93957348444813],["build_tree",93957348455952,93957348458321],["zlib_internal::UncompressHelper(zlib_internal::WrapperType, unsigned char*, unsigned long*, unsigned char const*, unsigned long)",93957348461344,93957348461568],["zlib_internal::CompressHelper(zlib_internal::WrapperType, unsigned char*, unsigned long*, unsigned char const*, unsigned long, int, void* (*)(unsigned long), void (*)(void*))::$_1::__invoke(void*, void*)",93957348461584,93957348461598],["clntudp_bufcreate",139871564487952,139871564487978],["key_decryptsession",139871564489504,139871564489636],["key_gendes",139871564490032,139871564490258],["key_get_conv",139871564490384,139871564490500],["exp",139871565492448,139871565492548],["__j1f_finite",139871565500592,139871565501353],["__remainderf_finite",139871565508752,139871565509026],["__gammaf_r_finite",139871565510592,139871565511726],["cbrtf",139871565513520,139871565513838],["erfcf",139871565515200,139871565516484],["fabsf",139871565517456,139871565517464],["nextafterf",139871565518400,139871565518612],["v8::Shell::RealmEval(v8::FunctionCallbackInfo<v8::Value> const&)",93957335250080,93957335250587],["v8::Shell::AsyncHooksCreateHook(v8::FunctionCallbackInfo<v8::Value> const&)",93957335253792,93957335253854],["v8::WriteToFile(_IO_FILE*, v8::FunctionCallbackInfo<v8::Value> const&)",93957335254048,93957335254482],["v8::Shell::PrintErr(v8::FunctionCallbackInfo<v8::Value> const&)",93957335254560,93957335254614],["v8::internal::(anonymous namespace)::AsyncGC::~AsyncGC()",93957336718464,93957336718495],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::(anonymous namespace)::Flag const&)",93957336723472,93957336723718],["v8::internal::FlagList::EnforceFlagImplications()",93957336729680,93957336752641],["v8::internal::GlobalHandles::CleanupOnStackReferencesBelowCurrentStackPosition()",93957336753296,93957336753310],["v8::internal::GlobalHandles::NotifyEmptyEmbedderStack()",93957336753376,93957336753418],["v8::internal::GlobalHandles::~GlobalHandles()",93957336753648,93957336754001],["v8::internal::GlobalHandles::Create(unsigned long)",93957336754768,93957336754778],["v8::internal::GlobalHandles::Destroy(unsigned long*)",93957336754816,93957336754833],["v8::internal::CodeLargeObjectSpace::~CodeLargeObjectSpace()",93957337079568,93957337079664],["v8::internal::NoFreeList::GetPageForSize(unsigned long)",93957337079696,93957337079714],["v8::internal::LocalFactory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment)",93957337079744,93957337080117],["v8::internal::LocalHeap::LocalHeap(v8::internal::Heap*, v8::internal::ThreadKind, std::__1::unique_ptr<v8::internal::PersistentHandles, std::__1::default_delete<v8::internal::PersistentHandles> >)",93957337080160,93957337080523],["v8::internal::LocalHeap::EnsurePersistentHandles()",93957337080848,93957337080918],["v8::internal::LocalHeap::DetachPersistentHandles()",93957337080976,93957337080994],["v8::internal::LocalHeap::Park()",93957337081040,93957337081140],["v8::internal::LocalHeap::SafepointSlowPath()",93957337081664,93957337082088],["v8::internal::HeapObjectsMap::RemoveDeadEntries()",93957339629408,93957339630753],["v8::internal::V8HeapExplorer::ExtractFeedbackVectorReferences(v8::internal::HeapEntry*, v8::internal::FeedbackVector)",93957339641904,93957339641967],["v8::internal::V8HeapExplorer::TagObject(v8::internal::Object, char const*)",93957339647152,93957339647445],["v8::internal::V8HeapExplorer::IterateAndExtractReferences(v8::internal::HeapSnapshotGenerator*)",93957339650544,93957339651890],["v8::internal::V8HeapExplorer::CollectGlobalObjectsTags()",93957339654448,93957339654708],["v8::internal::NativeObjectsExplorer::EntryForEmbedderGraphNode(v8::EmbedderGraph::Node*)",93957339655744,93957339655946],["v8::internal::HeapSnapshotGenerator::GenerateSnapshot()",93957339657664,93957339658195],["v8::internal::HeapSnapshotJSONSerializer::SerializeImpl()",93957339658528,93957339660806],["v8::internal::HeapSnapshotJSONSerializer::SerializeSnapshot()",93957339661088,93957339662005],["v8::internal::HeapSnapshotJSONSerializer::SerializeSamples()",93957339663760,93957339664438],["v8::internal::HeapSnapshotJSONSerializer::SerializeStrings()",93957339664656,93957339665196],["v8::internal::HeapSnapshotJSONSerializer::SerializeEdge(v8::internal::HeapGraphEdge*, bool)",93957339665280,93957339665956],["v8::internal::HeapSnapshotJSONSerializer::SerializeTraceNode(v8::internal::AllocationTraceNode*)",93957339667408,93957339668377],["v8::internal::WriteUChar(v8::internal::OutputStreamWriter*, unsigned int)",93957339669856,93957339670171],["v8::internal::V8HeapExplorer::~V8HeapExplorer()",93957339670960,93957339670988],["v8::internal::HeapSnapshotGenerator::~HeapSnapshotGenerator()",93957339671120,93957339671246],["v8_inspector::(anonymous namespace)::StringBuffer16::string() const",93957342409792,93957342409837],["v8_inspector::V8ConsoleMessage::wrapArguments(v8_inspector::V8InspectorSessionImpl*, bool) const",93957342412480,93957342413774],["v8_inspector::V8ConsoleMessage::createForRevokedException(double, v8_inspector::String16 const&, unsigned int)",93957342421360,93957342422093],["v8_inspector::V8ConsoleMessageStorage::clear()",93957342422704,93957342422860],["v8_inspector::V8ConsoleMessageStorage::time(int, v8_inspector::String16 const&)",93957342424560,93957342424869],["v8_inspector::V8ConsoleMessageStorage::timeLog(int, v8_inspector::String16 const&)",93957342425456,93957342426008],["v8_inspector::V8ConsoleMessageStorage::hasTimer(int, v8_inspector::String16 const&)",93957342426736,93957342427258],["v8_inspector::(anonymous namespace)::V8ValueStringBuilder::append(v8::Local<v8::Value>, unsigned int)",93957342427552,93957342428305],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncFunctionAwaitUncaught(v8::internal::compiler::Node*)",93957344176912,93957344177095],["v8::internal::compiler::JSNativeContextSpecialization::GetMaxStringLength(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*)",93957344203872,93957344204449],["v8::internal::compiler::JSNativeContextSpecialization::BuildPropertyStore(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::NameRef const&, v8::internal::ZoneVector<v8::internal::compiler::Node*>*, v8::internal::compiler::PropertyAccessInfo const&, v8::internal::compiler::AccessMode)",93957344251392,93957344254798],["v8::internal::compiler::JSOperatorBuilder::ObjectIsArray()",93957344262352,93957344262366],["v8::internal::compiler::JSOperatorBuilder::Debugger()",93957344262544,93957344262558],["v8::internal::compiler::JSOperatorBuilder::RegExpTest()",93957344262672,93957344262686],["v8::internal::compiler::JSOperatorBuilder::Divide(v8::internal::compiler::FeedbackSource const&)",93957344263920,93957344264095],["v8::internal::compiler::JSOperatorBuilder::ShiftRightLogical(v8::internal::compiler::FeedbackSource const&)",93957344265328,93957344265503],["v8::internal::compiler::JSOperatorBuilder::GreaterThanOrEqual(v8::internal::compiler::FeedbackSource const&)",93957344266400,93957344266575],["v8::internal::compiler::JSOperatorBuilder::CallForwardVarargs(unsigned long, unsigned int)",93957344267136,93957344267281],["v8::internal::compiler::JSOperatorBuilder::CallRuntime(v8::internal::Runtime::FunctionId)",93957344268048,93957344268201],["v8::internal::compiler::JSOperatorBuilder::Construct(unsigned int, v8::internal::compiler::CallFrequency const&, v8::internal::compiler::FeedbackSource const&)",93957344268720,93957344268914],["v8::internal::compiler::JSOperatorBuilder::LoadNamedFromSuper(v8::internal::Handle<v8::internal::Name>, v8::internal::compiler::FeedbackSource const&)",93957344269552,93957344269757],["v8::internal::compiler::JSOperatorBuilder::ForInNext(v8::internal::compiler::ForInMode, v8::internal::compiler::FeedbackSource const&)",93957344270352,93957344270553],["v8::internal::compiler::JSOperatorBuilder::StoreNamed(v8::internal::LanguageMode, v8::internal::Handle<v8::internal::Name>, v8::internal::compiler::FeedbackSource const&)",93957344271024,93957344271240],["v8::internal::compiler::JSOperatorBuilder::CreateGeneratorObject()",93957344271760,93957344271869],["v8::internal::compiler::JSOperatorBuilder::HasContextExtension(unsigned long)",93957344272304,93957344272426],["v8::internal::compiler::JSOperatorBuilder::StoreContext(unsigned long, unsigned long)",93957344272592,93957344272740],["v8::internal::compiler::JSOperatorBuilder::GetImportMeta()",93957344272880,93957344272983],["v8::internal::compiler::JSOperatorBuilder::CreateArguments(v8::internal::CreateArgumentsType)",93957344273120,93957344273245],["v8::internal::compiler::JSOperatorBuilder::CreateArrayIterator(v8::internal::IterationKind)",93957344273392,93957344273517],["v8::internal::compiler::JSOperatorBuilder::CreateCollectionIterator(v8::internal::CollectionKind, v8::internal::IterationKind)",93957344273648,93957344273826],["v8::internal::compiler::JSOperatorBuilder::CreateClosure(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Code>, v8::internal::AllocationType)",93957344273984,93957344274187],["v8::internal::compiler::JSOperatorBuilder::CreateEmptyLiteralArray(v8::internal::compiler::FeedbackSource const&)",93957344274416,93957344274594],["v8::internal::compiler::JSOperatorBuilder::CreateLiteralObject(v8::internal::Handle<v8::internal::ObjectBoilerplateDescription>, v8::internal::compiler::FeedbackSource const&, int, int)",93957344274720,93957344274931],["v8::internal::compiler::JSOperatorBuilder::CloneObject(v8::internal::compiler::FeedbackSource const&, int)",93957344275152,93957344275338],["v8::internal::compiler::JSOperatorBuilder::CreateEmptyLiteralObject()",93957344275472,93957344275575],["v8::internal::compiler::JSOperatorBuilder::CreateFunctionContext(v8::internal::Handle<v8::internal::ScopeInfo>, int, v8::internal::ScopeType)",93957344275792,93957344275955],["v8::internal::compiler::JSOperatorBuilder::CreateWithContext(v8::internal::Handle<v8::internal::ScopeInfo> const&)",93957344276096,93957344276221],["v8::internal::compiler::JSOperatorGlobalCache::JSOperatorGlobalCache()",93957344276352,93957344278627],["v8::internal::compiler::Operator1<v8::internal::compiler::CheckParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CheckParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CheckParameters> >::HashCode() const",93957344278672,93957344278745],["v8::internal::compiler::Operator1<v8::internal::compiler::CallForwardVarargsParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::CallForwardVarargsParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::CallForwardVarargsParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957344278832,93957344278947],["std::__1::__throw_runtime_error(char const*)",93957346727104,93957346727179],["std::__1::locale::locale()",93957346756448,93957346756565],["std::__1::ctype<wchar_t>::do_toupper(wchar_t*, wchar_t const*) const",93957346757792,93957346757945],["std::__1::ctype<char>::do_toupper(char) const",93957346759344,93957346759448],["std::__1::ctype<char>::do_narrow(char const*, char const*, char, char*) const",93957346760304,93957346760831],["std::__1::codecvt<wchar_t, char, __mbstate_t>::~codecvt()",93957346760912,93957346761040],["std::__1::codecvt<wchar_t, char, __mbstate_t>::do_encoding() const",93957346762976,93957346763106],["std::__1::utf16_to_utf8(unsigned short const*, unsigned short const*, unsigned short const*&, unsigned char*, unsigned char*, unsigned char*&, unsigned long, std::__1::codecvt_mode)",93957346763536,93957346764189],["std::__1::codecvt<char16_t, char, __mbstate_t>::do_length(__mbstate_t&, char const*, char const*, unsigned long) const",93957346765040,93957346765067],["std::__1::codecvt<char32_t, char, __mbstate_t>::do_out(__mbstate_t&, char32_t const*, char32_t const*, char32_t const*&, char*, char*, char*&) const",93957346765664,93957346765753],["std::__1::codecvt<char32_t, char, __mbstate_t>::do_in(__mbstate_t&, char const*, char const*, char const*&, char32_t*, char32_t*, char32_t*&) const",93957346766144,93957346766233],["std::__1::codecvt<char32_t, char, __mbstate_t>::do_length(__mbstate_t&, char const*, char const*, unsigned long) const",93957346766832,93957346766859],["std::__1::numpunct_byname<char>::~numpunct_byname()",93957346767440,93957346767488],["std::__1::numpunct_byname<wchar_t>::~numpunct_byname()",93957346767552,93957346767600],["std::__1::numpunct<char>::do_decimal_point() const",93957346767664,93957346767673],["std::__1::numpunct<char>::do_truename() const",93957346767744,93957346767767],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, std::__1::allocator<char> const&)",93957346785552,93957346785731],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(unsigned long, char)",93957346787120,93957346787448],["std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >::__assign_external(wchar_t const*, unsigned long)",93957346788624,93957346788790],["std::out_of_range::out_of_range(char const*)",93957346790592,93957346790627],["std::__1::__system_error_category::message(int) const",93957346791152,93957346791242],["std::__1::__vector_base_common<true>::__throw_out_of_range() const",93957346792096,93957346792112],["__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*)",93957346792720,93957346792747],["__cxxabiv1::(anonymous namespace)::destruct_(void*)",93957346793568,93957346793610],["__cxxabiv1::exception_spec_can_catch(long, unsigned char const*, unsigned char, __cxxabiv1::__shim_type_info const*, void*, _Unwind_Exception*)",93957346796880,93957346797148],["std::bad_exception::what() const",93957346801312,93957346801325],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseEncoding()",93957346804064,93957346806542],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [18], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [18], (anonymous namespace)::itanium_demangle::Node*&)",93957346818128,93957346818289],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::NameType, char const (&) [10]>(char const (&) [10])",93957346825136,93957346825291],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseConversionExpr()",93957346835280,93957346836076],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SizeofParamPackExpr, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&)",93957346841856,93957346841993],["(anonymous namespace)::itanium_demangle::ParameterPackExpansion::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346848592,93957346849019],["(anonymous namespace)::itanium_demangle::BracedRangeExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346858080,93957346858533],["(anonymous namespace)::itanium_demangle::DotSuffix::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346865840,93957346866155],["(anonymous namespace)::itanium_demangle::ReferenceType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346876048,93957346876536],["v8::base::ieee754::asin(double)",93957346882448,93957346883143],["v8::base::SharedMemory::~SharedMemory()",93957346899440,93957346899491],["v8::base::RegionAllocator::FreeListAddRegion(v8::base::RegionAllocator::Region*)",93957346901920,93957346902133],["v8::base::OS::Sleep(v8::base::TimeDelta)",93957346910336,93957346910370],["v8::base::Thread::CreateThreadLocalKey()",93957346913088,93957346913116],["v8::platform::DefaultJobState::~DefaultJobState()",93957346921632,93957346921720],["v8::platform::tracing::TraceBufferRingBuffer::~TraceBufferRingBuffer()",93957346937696,93957346937846],["icu_68::Calendar::complete(UErrorCode&)",93957346956320,93957346956433],["icu_68::DangiCalendar::~DangiCalendar()",93957346984224,93957346984252],["icu_68::Collator::compare(char16_t const*, int, char16_t const*, int) const",93957346996016,93957346996047],["icu_68::Collation::getThreeBytePrimaryForOffsetData(int, long)",93957347008512,93957347008752],["icu_68::DateFormat::getCalendar() const",93957347028160,93957347028173],["icu_68::DecimalFormat::getDecimalFormatSymbols() const",93957347042416,93957347042445],["icu_68::CurrencyPluralInfo::copyHash(icu_68::Hashtable const*, icu_68::Hashtable*, UErrorCode&)",93957347050752,93957347051081],["icu_68::UnicodeString::setTo(icu_68::UnicodeString const&, int, int)",93957347123216,93957347123288],["icu_68::DateIntervalInfo::DateIntervalSink::~DateIntervalSink()",93957347148656,93957347148698],["icu_68::FormatParser::setTokens(icu_68::UnicodeString const&, int, int*)",93957347181520,93957347181708],["icu_68::FormattedValueStringBuilderImpl::FormattedValueStringBuilderImpl(icu_68::FormattedStringBuilder::Field)",93957347193152,93957347193227],["icu_68::GregorianCalendar::handleComputeFields(int, UErrorCode&)",93957347203248,93957347203711],["icu_68::IslamicCalendar::monthStart(int, int) const",93957347214624,93957347214959],["icu_68::ListFormatter::ListPatternsSink::setAliasedStyle(icu_68::UnicodeString)",93957347230320,93957347230524],["icu_68::number::impl::DecimalQuantity::hasIntegerValue() const",93957347243920,93957347243933],["icu_68::number::impl::DecimalFormatProperties::DecimalFormatProperties()",93957347285952,93957347286179],["icu_68::MeasureUnitImpl::forMeasureUnitMaybeCopy(icu_68::MeasureUnit const&, UErrorCode&)",93957347312768,93957347313087],["icu_68::number::impl::PropertiesAffixPatternProvider::setTo(icu_68::number::impl::DecimalFormatProperties const&, UErrorCode&)",93957347341872,93957347342834],["(anonymous namespace)::cleanupDefaultCurrencySpacing()",93957347351456,93957347351557],["icu_68::number::impl::PatternParser::parseToExistingPropertiesImpl(icu_68::UnicodeString const&, icu_68::number::impl::DecimalFormatProperties&, icu_68::number::impl::IgnoreRounding, UErrorCode&)",93957347359488,93957347360048],["non-virtual thunk to icu_68::number::impl::ScientificHandler::~ScientificHandler()",93957347379584,93957347379613],["icu_68::number::impl::UsagePrefsHandler::~UsagePrefsHandler()",93957347404096,93957347404120],["icu_68::NumberFormat::createInstance(UErrorCode&)",93957347426656,93957347426752],["icu_68::numparse::impl::ArraySeriesMatcher::end() const",93957347447360,93957347447378],["icu_68::numparse::impl::PercentMatcher::accept(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&) const",93957347462432,93957347462449],["icu_68::DateTimeRule::DateTimeRule(int, int, int, signed char, int, icu_68::DateTimeRule::TimeRuleType)",93957347480160,93957347480218],["icu_68::FixedDecimal::~FixedDecimal()",93957347495552,93957347495592],["icu_68::RuleBasedNumberFormat::setRoundingMode(icu_68::NumberFormat::ERoundingMode)",93957347513680,93957347513692],["icu_68::NFSubstitution::getDynamicClassID() const",93957347542192,93957347542205],["icu_68::CollationIterator::handleNextCE32(int&, UErrorCode&)",93957347552384,93957347552560],["icu_68::compareRanges(void const*, void const*, void const*)",93957347592944,93957347592969],["icu_68::CollationDataBuilder::getCEs(icu_68::UnicodeString const&, long*, int)",93957347625040,93957347625058],["icu_68::FormatNameEnumeration::count(UErrorCode&) const",93957347653552,93957347653574],["icu_68::RuleBasedCollator::setVariableTop(char16_t const*, int, UErrorCode&)",93957347673360,93957347674172],["icu_68::SimpleTimeZone::getRawOffset() const",93957347709232,93957347709241],["icu_68::SimpleDateFormat::setContext(UDisplayContext, UErrorCode&)",93957347751248,93957347751371],["icu_68::number::impl::LocalizedNumberFormatterAsFormat::operator==(icu_68::Format const&) const",93957347774672,93957347774975],["icu_68::TimeZone::operator==(icu_68::TimeZone const&) const",93957347788576,93957347788701],["icu_68::TimeZoneFormat::parse(UTimeZoneFormatStyle, icu_68::UnicodeString const&, icu_68::ParsePosition&, int, UTimeZoneFormatTimeType*) const",93957347810304,93957347815238],["icu_68::TimeZoneNamesDelegate::getMetaZoneID(icu_68::UnicodeString const&, double, icu_68::UnicodeString&) const",93957347839472,93957347839493],["icu_68::TimeZoneNamesImpl::doFind(icu_68::ZNameSearchHandler&, icu_68::UnicodeString const&, int, UErrorCode&) const",93957347850256,93957347850482],["icu_68::TimeArrayTimeZoneRule::getNextStart(double, int, int, signed char, double&) const",93957347864336,93957347864465],["icu_68::units::UnitConverter* icu_68::MemoryPool<icu_68::units::UnitConverter, 8>::create<icu_68::MeasureUnitImpl const&, icu_68::MeasureUnitImpl&, icu_68::units::ConversionRates const&, UErrorCode&>(icu_68::MeasureUnitImpl const&, icu_68::MeasureUnitImpl&, icu_68::units::ConversionRates const&, UErrorCode&)",93957347881536,93957347881786],["icu_68::FCDUTF8CollationIterator::handleNextCE32(int&, UErrorCode&)",93957347906736,93957347907913],["icu_68::compareElementStrings(void const*, void const*, void const*)",93957347927408,93957347927564],["icu_68::Edits::growArray()",93957347943232,93957347943401],["icu_68::LocaleBuilder::clearExtensions()",93957347954864,93957347954906],["icu_68::LocaleDisplayNamesImpl::variantDisplayName(char const*, icu_68::UnicodeString&) const",93957347983648,93957347983660],["createTagStringWithAlternates(char const*, int, char const*, int, char const*, int, char const*, int, char const*, icu_68::ByteSink&, UErrorCode*)",93957348017584,93957348018445],["icu_68::Normalizer2Factory::getFCDInstance(UErrorCode&)",93957348044752,93957348044888],["icu_68::Normalizer2Impl::getDecomposition(int, char16_t*, int&) const",93957348058560,93957348059137],["searchForTZFile(char const*, DefaultTZInfo*)",93957348084624,93957348086059],["icu_68::LaoBreakEngine::LaoBreakEngine(icu_68::DictionaryMatcher*, UErrorCode&)",93957348103072,93957348103663],["icu_68::ICUServiceKey::parseSuffix(icu_68::UnicodeString&)",93957348122976,93957348123086],["icu_68::ServiceEnumeration::getDynamicClassID() const",93957348130528,93957348130541],["icu_68::ICUResourceBundleFactory::~ICUResourceBundleFactory()",93957348134352,93957348134394],["icu_68::StringPiece::StringPiece(icu_68::StringPiece const&, int, int)",93957348142608,93957348142661],["ucase_addStringCaseClosure_68",93957348151808,93957348152165],["uscript_hasScript_68",93957348162144,93957348162392],["icu_68::UCharsTrie::next(int)",93957348168032,93957348168213],["icu_68::UCharCharacterIterator::next32PostInc()",93957348172880,93957348172975],["currency_cleanup()",93957348186816,93957348187238],["udata_getLength_68",93957348198864,93957348198918],["uhash_equals_68",93957348205968,93957348206511],["ulist_count_keyword_values_68",93957348212384,93957348212414],["uloc_toLegacyKey_68",93957348225504,93957348225604],["ulocimp_toLanguageTag_68",93957348236160,93957348243906],["icu_68::UnifiedCache::_poll(icu_68::CacheKeyBase const&, icu_68::SharedObject const*&, UErrorCode&) const",93957348272992,93957348273454],["non-virtual thunk to icu_68::UnicodeSet::~UnicodeSet()",93957348279200,93957348279235],["icu_68::UnicodeSet::addAll(icu_68::UnicodeString const&)",93957348286240,93957348286364],["icu_68::BMPSet::span(char16_t const*, char16_t const*, USetSpanCondition) const",93957348297504,93957348298575],["icu_68::isDataLoaded(UErrorCode*)",93957348312288,93957348312471],["icu_68::UnicodeString::UnicodeString(int, int, int)",93957348333776,93957348334910],["icu_68::UnicodeString::getLength() const",93957348340144,93957348340167],["icu_68::UnicodeStringAppendable::reserveAppendCapacity(int)",93957348346848,93957348346899],["defaultGetMaxValue(IntProperty const&, UProperty)",93957348350672,93957348350703],["ures_hasNext_68",93957348353424,93957348353456],["getPoolEntry(char const*, UErrorCode*)",93957348370320,93957348370384],["icu_68::ResourceDataValue::getArray(UErrorCode&) const",93957348372896,93957348373052],["uset_getSerializedRangeCount_68",93957348378576,93957348378625],["icu_68::GreekUpper::getDiacriticData(int)",93957348383152,93957348383217],["icu_68::StringEnumeration::unext(int*, UErrorCode&)",93957348389584,93957348389695],["ustrenum_next(UEnumeration*, int*, UErrorCode*)",93957348390832,93957348390850],["u_strncpy_68",93957348394384,93957348394427],["ustrcase_getTitleBreakIterator_68",93957348396448,93957348396795],["utext_setup_68",93957348403456,93957348403837],["ucstrTextAccess(UText*, long, signed char)",93957348407024,93957348407476],["utrace_exit_68",93957348411376,93957348411628],["icu_68::UVector::getDynamicClassID() const",93957348424640,93957348424653],["icu_68::UVector::removeAll(icu_68::UVector const&)",93957348427120,93957348427535],["icu_68::UVector32::UVector32(int, UErrorCode&)",93957348429376,93957348429502],["icu_68::UVector32::expandCapacity(int, UErrorCode&)",93957348430912,93957348431066],["Cr_z_adler32_z",93957348431920,93957348433039],["Cr_z_crc_finalize",93957348434224,93957348434266],["Cr_z_deflate",93957348437456,93957348440805],["deflate_slow",93957348446560,93957348448546],["Cr_z__tr_align",93957348452352,93957348452711],["send_tree",93957348459440,93957348460847],["clnt_spcreateerror",139871564482080,139871564482328],["get_myaddress",139871564488016,139871564488206],["key_encryptsession",139871564489360,139871564489492],["key_encryptsession_pk",139871564489648,139871564489836],["ilogb",139871565491440,139871565491499],["__asinf_finite",139871565494080,139871565494673],["__j0f_finite",139871565498144,139871565498871],["__jnf_finite",139871565502272,139871565503687],["__log10f_finite",139871565507488,139871565507713],["__scalbf_finite",139871565509168,139871565509292],["__sqrtf_finite",139871565509744,139871565509749],["asinhf",139871565512512,139871565512889],["v8::Shell::RealmNavigate(v8::FunctionCallbackInfo<v8::Value> const&)",93957335249344,93957335249663],["v8::Shell::RealmSharedSet(v8::Local<v8::String>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&)",93957335250624,93957335250700],["v8::internal::BytecodeArray v8::internal::SharedFunctionInfo::GetBytecodeArray<v8::internal::Isolate>(v8::internal::Isolate*) const",93957335253552,93957335253786],["v8::Shell::AsyncHooksExecutionAsyncId(v8::FunctionCallbackInfo<v8::Value> const&)",93957335253856,93957335253951],["v8::internal::CpuTraceMarkExtension::Mark(v8::FunctionCallbackInfo<v8::Value> const&)",93957336716224,93957336716388],["non-virtual thunk to v8::internal::(anonymous namespace)::AsyncGC::~AsyncGC()",93957336718848,93957336718901],["v8::internal::TriggerFailureExtension::TriggerCheckFalse(v8::FunctionCallbackInfo<v8::Value> const&)",93957336723248,93957336723273],["v8::internal::FlagList::PrintHelp()",93957336726496,93957336727726],["v8::internal::(anonymous namespace)::Flag::Reset()",93957336728432,93957336729671],["v8::internal::FlagList::Hash()",93957336752656,93957336752668],["v8::internal::GlobalHandles::OnStackTracedNodeSpace::CleanupBelowCurrentStackPosition()",93957336753088,93957336753290],["v8::internal::GlobalHandles::TotalSize() const",93957336753312,93957336753338],["std::__1::default_delete<v8::internal::HeapSnapshot>::operator()(v8::internal::HeapSnapshot*) const",93957339623344,93957339623513],["v8::internal::V8HeapExplorer::GetSystemEntryName(v8::internal::HeapObject)",93957339633968,93957339636080],["v8::internal::V8HeapExplorer::ExtractCodeReferences(v8::internal::HeapEntry*, v8::internal::Code)",93957339641264,93957339641510],["v8::internal::V8HeapExplorer::ExtractContextReferences(v8::internal::HeapEntry*, v8::internal::Context)",93957339642560,93957339643255],["v8::internal::V8HeapExplorer::ExtractInternalReferences(v8::internal::JSObject, v8::internal::HeapEntry*)",93957339646208,93957339646587],["v8::internal::V8HeapExplorer::SetWeakReference(v8::internal::HeapEntry*, int, v8::internal::Object, int)",93957339647808,93957339648388],["v8::internal::V8HeapExplorer::ExtractAccessorPairProperty(v8::internal::HeapEntry*, v8::internal::Name, v8::internal::Object, int)",93957339649952,93957339650181],["v8::internal::V8HeapExplorer::SetHiddenReference(v8::internal::HeapObject, v8::internal::HeapEntry*, int, v8::internal::Object, int)",93957339652352,93957339652981],["v8::internal::V8HeapExplorer::GetStrongGcSubrootName(v8::internal::Object)",93957339653952,93957339654446],["v8::internal::GlobalObjectsEnumerator::~GlobalObjectsEnumerator()",93957339654720,93957339654758],["v8::internal::NativeObjectsExplorer::MergeNodeIntoEntry(v8::internal::HeapEntry*, v8::EmbedderGraph::Node*, v8::EmbedderGraph::Node*)",93957339655248,93957339655740],["v8::internal::NativeObjectsExplorer::IterateAndExtractReferences(v8::internal::HeapSnapshotGenerator*)",93957339655952,93957339657144],["v8::internal::HeapSnapshotGenerator::HeapSnapshotGenerator(v8::internal::HeapSnapshot*, v8::ActivityControl*, v8::HeapProfiler::ObjectNameResolver*, v8::internal::Heap*)",93957339657296,93957339657657],["v8::internal::HeapSnapshotGenerator::ProgressStep()",93957339658208,93957339658221],["v8::internal::HeapSnapshotJSONSerializer::Serialize(v8::OutputStream*)",93957339658304,93957339658520],["v8::internal::OutputStreamWriter::AddCharacter(char)",93957339660816,93957339660900],["v8_crdtp::ProtocolTypeTraits<v8_inspector::String16, void>::Serialize(v8_inspector::String16 const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342409472,93957342409501],["v8_inspector::V8ConsoleAgentImpl::disable()",93957342410256,93957342410375],["v8_inspector::V8ConsoleMessage::reportToFrontend(v8_inspector::protocol::Console::Frontend*) const",93957342411360,93957342411802],["v8_inspector::V8ConsoleMessage::wrapException(v8_inspector::V8InspectorSessionImpl*, bool) const",93957342416544,93957342416766],["v8_inspector::V8ConsoleMessage::createForException(double, v8_inspector::String16 const&, v8_inspector::String16 const&, unsigned int, unsigned int, std::__1::unique_ptr<v8_inspector::V8StackTraceImpl, std::__1::default_delete<v8_inspector::V8StackTraceImpl> >, int, v8::Isolate*, v8_inspector::String16 const&, int, v8::Local<v8::Value>, unsigned int)",93957342420352,93957342421359],["v8_inspector::V8ConsoleMessage::contextDestroyed(int)",93957342422096,93957342422339],["v8_inspector::V8ConsoleMessageStorage::~V8ConsoleMessageStorage()",93957342422400,93957342422690],["v8_inspector::V8ConsoleMessageStorage::addMessage(std::__1::unique_ptr<v8_inspector::V8ConsoleMessage, std::__1::default_delete<v8_inspector::V8ConsoleMessage> >)",93957342422864,93957342424246],["v8::internal::compiler::JSInliningHeuristic::Finalize()",93957344145888,93957344146294],["v8::internal::compiler::JSIntrinsicLowering::ReduceCall(v8::internal::compiler::Node*)",93957344180432,93957344180623],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSLoadProperty(v8::internal::compiler::Node*)",93957344199216,93957344199577],["v8::internal::compiler::(anonymous namespace)::HasNumberMaps(v8::internal::compiler::JSHeapBroker*, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > const&)",93957344223872,93957344224013],["v8::internal::compiler::JSNativeContextSpecialization::InlineApiCall(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::FunctionTemplateInfoRef const&)",93957344247936,93957344249188],["_ZNSt3__16vectorIN2v88internal6HandleINS2_3MapEEENS2_13ZoneAllocatorIS5_EEE6assignINS_13move_iteratorINS_11__wrap_iterIPS5_EEEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS5_NS_15iterator_traitsISG_E9referenceEEE5valueEvE4typeESG_SG_",93957344259360,93957344260846],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::ForInParameters const&)",93957344262048,93957344262167],["v8::internal::compiler::JSOperatorBuilder::AsyncFunctionEnter()",93957344262416,93957344262430],["v8::internal::compiler::JSOperatorBuilder::GeneratorRestoreContext()",93957344262512,93957344262526],["v8::internal::compiler::JSOperatorBuilder::PerformPromiseThen()",93957344262576,93957344262590],["v8::internal::compiler::JSOperatorBuilder::GetSuperConstructor()",93957344262640,93957344262654],["v8::internal::compiler::JSOperatorBuilder::Negate(v8::internal::compiler::FeedbackSource const&)",93957344262864,93957344263039],["v8::internal::compiler::JSOperatorBuilder::Subtract(v8::internal::compiler::FeedbackSource const&)",93957344263568,93957344263743],["v8::internal::compiler::JSOperatorBuilder::Exponentiate(v8::internal::compiler::FeedbackSource const&)",93957344264272,93957344264447],["v8::internal::compiler::JSOperatorBuilder::ShiftLeft(v8::internal::compiler::FeedbackSource const&)",93957344264976,93957344265151],["v8::internal::compiler::JSOperatorBuilder::StrictEqual(v8::internal::compiler::FeedbackSource const&)",93957344265680,93957344265858],["v8::internal::compiler::JSOperatorBuilder::LessThanOrEqual(v8::internal::compiler::FeedbackSource const&)",93957344266224,93957344266399],["v8::internal::compiler::JSOperatorBuilder::InstanceOf(v8::internal::compiler::FeedbackSource const&)",93957344266576,93957344266751],["v8::internal::compiler::JSOperatorBuilder::StoreInArrayLiteral(v8::internal::compiler::FeedbackSource const&)",93957344266944,93957344267122],["v8::internal::compiler::JSOperatorBuilder::Call(unsigned long, v8::internal::compiler::CallFrequency const&, v8::internal::compiler::FeedbackSource const&, v8::internal::ConvertReceiverMode, v8::internal::SpeculationMode, v8::internal::compiler::CallFeedbackRelation)",93957344267296,93957344267547],["v8::internal::compiler::JSOperatorBuilder::CallWithSpread(unsigned int, v8::internal::compiler::CallFrequency const&, v8::internal::compiler::FeedbackSource const&, v8::internal::SpeculationMode, v8::internal::compiler::CallFeedbackRelation)",93957344267792,93957344268034],["v8::internal::compiler::JSOperatorBuilder::CallRuntime(v8::internal::Runtime::FunctionId, unsigned long)",93957344268208,93957344268359],["v8::internal::compiler::JSOperatorBuilder::ConstructForwardVarargs(unsigned long, unsigned int)",93957344268576,93957344268715],["v8::internal::compiler::JSOperatorBuilder::ConstructWithArrayLike(v8::internal::compiler::CallFrequency const&, v8::internal::compiler::FeedbackSource const&)",93957344268928,93957344269121],["v8::internal::compiler::JSOperatorBuilder::LoadNamed(v8::internal::Handle<v8::internal::Name>, v8::internal::compiler::FeedbackSource const&)",93957344269344,93957344269549],["v8::internal::compiler::JSOperatorBuilder::LoadProperty(v8::internal::compiler::FeedbackSource const&)",93957344269760,93957344269951],["v8::internal::compiler::JSOperatorBuilder::HasProperty(v8::internal::compiler::FeedbackSource const&)",93957344270160,93957344270351],["v8::internal::compiler::JSOperatorBuilder::ForInPrepare(v8::internal::compiler::ForInMode, v8::internal::compiler::FeedbackSource const&)",93957344270560,93957344270764],["v8::internal::compiler::JSOperatorBuilder::GeneratorRestoreRegister(int)",93957344270896,93957344271021],["v8::internal::compiler::JSOperatorBuilder::StoreProperty(v8::internal::LanguageMode, v8::internal::compiler::FeedbackSource const&)",93957344271248,93957344271449],["v8::internal::compiler::JSOperatorBuilder::DeleteProperty()",93957344271648,93957344271754],["v8::internal::compiler::JSOperatorBuilder::LoadGlobal(v8::internal::Handle<v8::internal::Name> const&, v8::internal::compiler::FeedbackSource const&, v8::internal::TypeofMode)",93957344271872,93957344272069],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get_monthname(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346715984,93957346716382],["std::__1::__money_put<char>::__gather_info(bool, bool, std::__1::locale const&, std::__1::money_base::pattern&, char&, char&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, int&)",93957346738304,93957346738817],["std::__1::locale::__imp::__imp(unsigned long)",93957346747376,93957346756052],["std::__1::locale::has_facet(std::__1::locale::id&) const",93957346756720,93957346756854],["std::__1::ctype<wchar_t>::do_scan_not(unsigned short, wchar_t const*, wchar_t const*) const",93957346757504,93957346757665],["std::__1::ctype<wchar_t>::do_tolower(wchar_t*, wchar_t const*) const",93957346758064,93957346758217],["std::__1::ctype<char>::~ctype()",93957346759216,93957346759269],["std::__1::ctype<char>::do_tolower(char) const",93957346759616,93957346759720],["std::__1::ctype<char>::do_narrow(char, char) const",93957346760288,93957346760302],["std::__1::codecvt<char, char, __mbstate_t>::do_in(__mbstate_t&, char const*, char const*, char const*&, char*, char*, char*&) const",93957346760832,93957346760853],["std::__1::codecvt<char, char, __mbstate_t>::do_length(__mbstate_t&, char const*, char const*, unsigned long) const",93957346760880,93957346760898],["std::__1::codecvt<wchar_t, char, __mbstate_t>::do_out(__mbstate_t&, wchar_t const*, wchar_t const*, wchar_t const*&, char*, char*, char*&) const",93957346761040,93957346761939],["std::__1::codecvt<wchar_t, char, __mbstate_t>::do_unshift(__mbstate_t&, char*, char*, char*&) const",93957346762608,93957346762968],["std::__1::codecvt<wchar_t, char, __mbstate_t>::do_length(__mbstate_t&, char const*, char const*, unsigned long) const",93957346763120,93957346763372],["std::__1::codecvt<char16_t, char, __mbstate_t>::do_out(__mbstate_t&, char16_t const*, char16_t const*, char16_t const*&, char*, char*, char*&) const",93957346763440,93957346763529],["std::__1::codecvt<char16_t, char, __mbstate_t>::do_in(__mbstate_t&, char const*, char const*, char const*&, char16_t*, char16_t*, char16_t*&) const",93957346764192,93957346764281],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*, unsigned long)",93957346785040,93957346785436],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::insert(unsigned long, char const*)",93957346785840,93957346785894],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(unsigned long, char)",93957346786656,93957346787025],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const",93957346787584,93957346787716],["std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >::__grow_by_and_replace(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, wchar_t const*)",93957346787968,93957346788314],["std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >::push_back(wchar_t)",93957346788976,93957346789131],["std::__1::to_string(unsigned int)",93957346790064,93957346790306],["std::__1::error_category::equivalent(int, std::__1::error_condition const&) const",93957346790656,93957346790692],["std::__1::__generic_error_category::message(int) const",93957346791040,93957346791132],["std::__1::system_error::__init(std::__1::error_code const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957346791376,93957346791567],["std::__1::__throw_system_error(int, char const*)",93957346791936,93957346792067],["__cxa_bad_typeid",93957346792288,93957346792337],["__cxa_throw",93957346792496,93957346792613],["__cxa_end_catch",93957346792880,93957346793069],["__cxa_get_globals_fast",93957346793456,93957346793509],["std::terminate()",93957346793632,93957346793702],["__cxxabiv1::scan_eh_tab(__cxxabiv1::(anonymous namespace)::scan_results&, _Unwind_Action, bool, _Unwind_Exception*, _Unwind_Context*)",93957346794304,93957346795983],["__cxxabiv1::__free_with_fallback(void*)",93957346797776,93957346798025],["__cxxabiv1::__class_type_info::search_below_dst(__cxxabiv1::__dynamic_cast_info*, void const*, int, bool) const",93957346800160,93957346800329],["std::logic_error::~logic_error()",93957346801424,93957346801493],["__cxa_guard_release",93957346801888,93957346802001],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseName((anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::NameState*)",93957346811584,93957346815417],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseCallOffset()",93957346817136,93957346817605],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseSubstitution()",93957346818928,93957346819815],["(anonymous namespace)::itanium_demangle::NameType::getBaseName() const",93957346824784,93957346824798],["(anonymous namespace)::itanium_demangle::ForwardTemplateReference::getSyntaxNode((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346825536,93957346825594],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseBinaryExpr((anonymous namespace)::itanium_demangle::StringView)",93957346834544,93957346834754],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::MemberExpr, (anonymous namespace)::itanium_demangle::Node*&, char const (&) [3], (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, char const (&) [3], (anonymous namespace)::itanium_demangle::Node*&)",93957346838352,93957346838542],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::ConditionalExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346841184,93957346841352],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::ThrowExpr, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&)",93957346842496,93957346842633],["(anonymous namespace)::itanium_demangle::FloatLiteralImpl<long double>::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346845376,93957346846336],["(anonymous namespace)::itanium_demangle::CallExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346850432,93957346850640],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::LiteralOperator, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&)",93957346856432,93957346856569],["(anonymous namespace)::itanium_demangle::ExpandedSpecialSubstitution::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346860592,93957346861324],["(anonymous namespace)::itanium_demangle::ParameterPack::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346864112,93957346864175],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::PostfixQualifiedType, (anonymous namespace)::itanium_demangle::Node*&, char const (&) [11]>((anonymous namespace)::itanium_demangle::Node*&, char const (&) [11])",93957346870464,93957346870625],["(anonymous namespace)::itanium_demangle::ArrayType::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346873760,93957346874165],["v8::base::bits::SignedMulOverflow32(int, int, int*)",93957346877152,93957346877179],["v8::base::RelativePath(char const*, char const*)",93957346879616,93957346879774],["v8::base::ieee754::log2(double)",93957346891760,93957346892222],["v8::base::PageAllocator::GetRandomMmapAddr()",93957346899088,93957346899098],["v8::base::Mutex::Mutex()",93957346899952,93957346899964],["v8::base::Time::NowFromSystemTime()",93957346900448,93957346900529],["v8::base::SysInfo::NumberOfProcessors()",93957346904176,93957346904206],["v8::base::OS::SetRandomMmapSeed(long)",93957346909008,93957346909249],["v8::base::OS::GetCurrentThreadId()",93957346911152,93957346911169],["v8::base::OS::SNPrintF(char*, int, char const*, ...)",93957346912176,93957346912364],["void std::__1::vector<v8::base::OS::SharedLibraryAddress, std::__1::allocator<v8::base::OS::SharedLibraryAddress> >::__push_back_slow_path<v8::base::OS::SharedLibraryAddress>(v8::base::OS::SharedLibraryAddress&&)",93957346914240,93957346914675],["v8::platform::(anonymous namespace)::PrintStackTrace()",93957346918048,93957346918106],["v8::JobHandle::IsRunning()",93957346923952,93957346923963],["v8::platform::DefaultWorkerThreadsTaskRunner::PostDelayedTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, double)",93957346932960,93957346933080],["v8::platform::tracing::TracingController::~TracingController()",93957346945440,93957346945780],["icu_68::Calendar::operator=(icu_68::Calendar const&)",93957346952208,93957346952672],["icu_68::Calendar::roll(UCalendarDateFields, int, UErrorCode&)",93957346961376,93957346964411],["icu_68::DefaultCalendarFactory::create(icu_68::ICUServiceKey const&, icu_68::ICUService const*, UErrorCode&) const",93957346982496,93957346982972],["icu_68::HebrewCalendar::~HebrewCalendar()",93957346985664,93957346985692],["icu_68::CalendarAstronomer::getSunTime(double, signed char)",93957346991552,93957346991604],["icu_68::Collator::internalCompareUTF8(char const*, int, char const*, int, UErrorCode&) const",93957346997456,93957346997637],["icu_68::CollationSettings::setFlag(int, UColAttributeValue, int, UErrorCode&)",93957347004544,93957347004606],["icu_68::initializeSystemDefaultCentury()",93957347022192,93957347022470],["icu_68::DateFormat::operator==(icu_68::Format const&) const",93957347025648,93957347025762],["icu_68::DateFmtBestPatternKey::clone() const",93957347029008,93957347029131],["icu_68::DecimalFormat::clone() const",93957347036176,93957347036254],["icu_68::DecimalFormat::setRoundingMode(icu_68::NumberFormat::ERoundingMode)",93957347044224,93957347044331],["icu_68::DecimalFormat::toNumberFormatter(UErrorCode&) const",93957347048288,93957347048329],["icu_68::DecimalFormatSymbols::DecimalFormatSymbols(icu_68::DecimalFormatSymbols const&)",93957347060496,93957347061114],["icu_68::DateFormatSymbols::getAmPmStrings(int&) const",93957347114080,93957347114101],["icu_68::FormattedList::nextPosition(icu_68::ConstrainedFieldPosition&, UErrorCode&) const",93957347124624,93957347124666],["icu_68::DateIntervalInfo::getDynamicClassID() const",93957347144656,93957347144669],["icu_68::DateTimePatternGenerator::operator=(icu_68::DateTimePatternGenerator const&)",93957347156272,93957347157131],["icu_68::DateTimePatternGenerator::adjustFieldTypes(icu_68::UnicodeString const&, icu_68::PtnSkeleton const*, int, UDateTimePatternMatchOptions)",93957347172336,93957347174158],["icu_68::EthiopicCalendar::defaultCenturyStart() const",93957347186720,93957347186778],["icu_68::Format::operator=(icu_68::Format const&)",93957347190224,93957347190285],["icu_68::FormattedStringBuilder::length() const",93957347196320,93957347196332],["icu_68::FieldPositionIteratorHandler::~FieldPositionIteratorHandler()",93957347200992,93957347201055],["icu_68::GregorianCalendar::defaultCenturyStart() const",93957347206432,93957347206490],["icu_68::IndianCalendar::IndianCalendar(icu_68::Locale const&, UErrorCode&)",93957347212288,93957347212368],["icu_68::JapaneseCalendar::getDefaultMonthInYear(int)",93957347218336,93957347218421],["icu_68::ListFormatter::formatStringsToValue(icu_68::UnicodeString const*, int, UErrorCode&) const",93957347224064,93957347224779],["icu_68::MeasureUnit::getSubtype() const",93957347232976,93957347233068],["icu_68::number::impl::DecimalQuantity::applyMaxInteger(int)",93957347240144,93957347240352],["icu_68::number::impl::DecimalQuantity::setToDecNumber(icu_68::StringPiece, UErrorCode&)",93957347247600,93957347247895],["double icu_68::double_conversion::StringToDoubleConverter::StringToIeee<char const*>(char const*, int, bool, int*) const",93957347268048,93957347271630],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::sign(UNumberSignDisplay) const &",93957347292032,93957347292340],["icu_68::MeasureUnitImpl::~MeasureUnitImpl()",93957347307712,93957347307821],["icu_68::number::impl::CompactData::CompactDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347319344,93957347320261],["icu_68::number::impl::LongNameMultiplexer::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347335328,93957347335527],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::hasCurrencySign() const",93957347344608,93957347344630],["icu_68::number::impl::ConstantMultiFieldModifier::isStrong() const",93957347347696,93957347347708],["icu_68::number::Notation::scientific()",93957347352960,93957347352987],["non-virtual thunk to icu_68::number::impl::MutablePatternModifier::getPrefixLength() const",93957347357904,93957347358005],["icu_68::number::impl::ParsedPatternInfo::consumeLiteral(UErrorCode&)",93957347362048,93957347362543],["icu_68::number::impl::RoundingImpl::isSignificantDigits() const",93957347377568,93957347377580],["icu_68::number::impl::blueprint_helpers::parseDigitsStem(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347389616,93957347389894],["icu_68::number::impl::SymbolsWrapper::~SymbolsWrapper()",93957347400384,93957347400418],["icu_68::number::impl::DecNum::multiplyBy(icu_68::number::impl::DecNum const&, UErrorCode&)",93957347407296,93957347407345],["icu_68::NumberFormat::operator==(icu_68::Format const&) const",93957347424272,93957347424468],["icu_68::NumberFormat::setMinimumFractionDigits(int)",93957347427888,93957347427945],["icu_68::numparse::impl::NumberParserImpl::parse(icu_68::UnicodeString const&, int, bool, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347439856,93957347440265],["icu_68::numparse::impl::CompactUnicodeString<4>::operator==(icu_68::numparse::impl::CompactUnicodeString<4> const&) const",93957347450432,93957347450710],["icu_68::numparse::impl::SymbolMatcher::smokeTest(icu_68::StringSegment const&) const",93957347461280,93957347461335],["icu_68::numparse::impl::RequireNumberValidator::toString() const",93957347463184,93957347463215],["icu_68::OlsonTimeZone::hasSameRules(icu_68::TimeZone const&) const",93957347470464,93957347470885],["icu_68::PluralRules::getDynamicClassID() const",93957347481648,93957347481661],["icu_68::OrConstraint::~OrConstraint()",93957347492368,93957347492447],["icu_68::StandardPluralRanges::copy(UErrorCode&) const",93957347496832,93957347497024],["icu_68::RuleBasedNumberFormat::setLenient(signed char)",93957347509136,93957347509193],["icu_68::PluralFormat::PluralSelectorAdapter::~PluralSelectorAdapter()",93957347518672,93957347518720],["icu_68::NFRuleSet::findNormalRule(long) const",93957347536736,93957347536988],["icu_68::IntegralPartSubstitution::getDynamicClassID() const",93957347544912,93957347544925],["icu_68::CollationElementIterator::getDynamicClassID() const",93957347549200,93957347549213],["icu_68::TailoredSet::comparePrefixes(int, char16_t const*, char16_t const*)",93957347566672,93957347567534],["icu_68::CollationBuilder::ignoreString(icu_68::UnicodeString const&, UErrorCode&) const",93957347585616,93957347585718],["icu_68::CollationRuleParser::setErrorContext()",93957347606096,93957347606429],["icu_68::CollationDataBuilder::encodeCEs(long const*, int, UErrorCode&)",93957347617680,93957347618143],["icu_68::Collation::ceFromCE32(unsigned int)",93957347633120,93957347633194],["icu_68::RuleBasedTimeZone::hasSameRules(icu_68::TimeZone const&) const",93957347643232,93957347643697],["icu_68::RelativeDateTimeFormatter::formatRelativeImpl(double, URelativeDateTimeUnit, icu_68::FormattedRelativeDateTimeData&, UErrorCode&) const",93957347658320,93957347658960],["icu_68::RuleBasedCollator::~RuleBasedCollator()",93957347670704,93957347670790],["icu_68::RuleBasedCollator::compare(UCharIterator&, UCharIterator&, UErrorCode&) const",93957347682432,93957347684542],["icu_68::SimpleTimeZone::getDynamicClassID() const",93957347705520,93957347705533],["icu_68::SimpleDateFormat::~SimpleDateFormat()",93957347713184,93957347713212],["icu_68::SimpleDateFormat::set2DigitYearStart(double, UErrorCode&)",93957347747440,93957347747565],["icu_68::MessageFormat::applyPattern(icu_68::UnicodeString const&, UParseError&, UErrorCode&)",93957347754720,93957347754856],["icu_68::MessageFormat::DummyFormat::clone() const",93957347771712,93957347771783],["icu_68::DayPeriodRulesDataSink::parseSetNum(icu_68::UnicodeString const&, UErrorCode&)",93957347781008,93957347781258],["icu_68::TaiwanCalendar::getDynamicClassID() const",93957347787120,93957347787133],["icu_68::TimeZone::findID(icu_68::UnicodeString const&)",93957347792368,93957347792518],["icu_68::TimeZoneFormat::operator=(icu_68::TimeZoneFormat const&)",93957347803920,93957347804551],["icu_68::TimeZoneFormat::parseOffsetLocalizedGMTPattern(icu_68::UnicodeString const&, int, signed char, int&) const",93957347821200,93957347821599],["icu_68::deleteTZGNCoreRef(void*)",93957347837984,93957347838021],["icu_68::TimeZoneNames::MatchInfoCollection::addMetaZone(UTimeZoneNameType, int, icu_68::UnicodeString const&, UErrorCode&)",93957347840816,93957347841144],["icu_68::TimeZoneNamesImpl::loadMetaZoneNames(icu_68::UnicodeString const&, UErrorCode&)",93957347846512,93957347847555],["icu_68::TZDBTimeZoneNames::~TZDBTimeZoneNames()",93957347856144,93957347856186],["icu_68::AnnualTimeZoneRule::getStartInYear(int, int, int, double&) const",93957347861792,93957347862469],["ucal_getKeywordValuesForLocale_68",93957347865248,93957347865930],["icu_68::FCDUIterCollationIterator::~FCDUIterCollationIterator()",93957347873728,93957347873781],["icu_68::units::ConversionRates::extractConversionInfo(icu_68::StringPiece, UErrorCode&) const",93957347889984,93957347890131],["icu_68::FCDUTF16CollationIterator::previousCodePoint(UErrorCode&)",93957347903664,93957347904127],["icu_68::ZoneMeta::getMetazoneID(icu_68::UnicodeString const&, double, icu_68::UnicodeString&)",93957347915440,93957347915606],["icu_68::ByteSinkUtil::appendCodePoint(int, int, icu_68::ByteSink&, icu_68::Edits*)",93957347925312,93957347925516],["icu_68::BytesTrieBuilder::writeDeltaTo(int)",93957347929360,93957347929538],["uprv_malloc_68",93957347940592,93957347940644],["icu_68::SimpleFilteredSentenceBreakIterator::previous()",93957347946432,93957347946631],["icu_68::deleteNorm2AllModes(void*)",93957347952272,93957347952306],["(anonymous namespace)::_load_installedLocales(UErrorCode&)",93957347961776,93957347961968],["icu_68::LocaleDisplayNamesImpl::getContext(UDisplayContextType) const",93957347976144,93957347976207],["icu_68::Locale::Locale(char const*, char const*, char const*, char const*)",93957347987216,93957347988183],["icu_68::KeywordEnumeration::next(int*, UErrorCode&)",93957348007344,93957348007439],["icu_68::LocaleUtility::canonicalLocaleString(icu_68::UnicodeString const*, icu_68::UnicodeString&)",93957348027584,93957348028012],["icu_68::MessagePattern::isPlural(int)",93957348040144,93957348040520],["icu_68::DecomposeNormalizer2::isInert(int) const",93957348046736,93957348046886],["icu_68::ReorderingBuffer::append(char16_t const*, int, signed char, unsigned char, unsigned char, UErrorCode&)",93957348051104,93957348052389],["icu_68::Normalizer2Impl::composeUTF8(unsigned int, signed char, unsigned char const*, unsigned char const*, icu_68::ByteSink*, icu_68::Edits*, UErrorCode&) const",93957348070608,93957348075144],["uprv_getNaN_68",93957348083488,93957348083502],["icu_68::RuleBasedBreakIterator::operator==(icu_68::BreakIterator const&) const",93957348089136,93957348089326],["icu_68::UnhandledEngine::handleCharacter(int)",93957348098048,93957348098179],["icu_68::UCharsDictionaryMatcher::~UCharsDictionaryMatcher()",93957348114176,93957348114218],["icu_68::StringCharacterIterator::getDynamicClassID() const",93957348121776,93957348121789],["icu_68::ICUService::getVisibleIDMap(UErrorCode&) const",93957348126480,93957348126799],["icu_68::ICULocaleService::get(icu_68::Locale const&, int, UErrorCode&) const",93957348129696,93957348129901],["icu_68::ServiceEnumeration::snext(UErrorCode&)",93957348131152,93957348131264],["icu_68::LocaleKey::getDynamicClassID() const",93957348133488,93957348133501],["icu_68::ResourceBundle::~ResourceBundle()",93957348134832,93957348134902],["icu_68::SimpleFormatter::getTextWithNoArguments(char16_t const*, int, int*, int)",93957348138320,93957348138598],["icu_68::StringTrieBuilder::writeBranchSubNode(int, int, int, int)",93957348144688,93957348145481],["icu_68::StringTrieBuilder::SplitBranchNode::write(icu_68::StringTrieBuilder&)",93957348148368,93957348148468],["ucase_toFullTitle_68",93957348155840,93957348155853],["u_isgraphPOSIX_68",93957348160368,93957348160505],["icu_68::UCharsTrieBuilder::add(icu_68::UnicodeString const&, int, UErrorCode&)",93957348163600,93957348163971],["icu_68::UCharsTrieBuilder::write(int)",93957348166656,93957348166726],["icu_68::UCharsTrie::Iterator::branchNext(char16_t const*, int, UErrorCode&)",93957348170544,93957348171238],["icu_68::UCharCharacterIterator::previous()",93957348172000,93957348172035],["icu_68::CharacterIterator::operator=(icu_68::CharacterIterator const&)",93957348173984,93957348174017],["uprv_parseCurrency_68",93957348180112,93957348180789],["udata_cacheDataItem(char const*, UDataMemory*, UErrorCode*)",93957348191680,93957348192014],["pointerTOCLookupFn(UDataMemory const*, char const*, int*, UErrorCode*)",93957348198080,93957348198441],["uhash_openSize_68",93957348199984,93957348200936],["uhash_iputi_68",93957348204800,93957348204835],["uprv_isInvariantString_68",93957348207248,93957348207335],["ulist_createEmptyList_68",93957348211424,93957348211482],["getShortestSubtagLength(char const*)",93957348214608,93957348214808],["uloc_getName_68",93957348222464,93957348222611],["ulocimp_toLegacyKey_68",93957348230240,93957348230292],["ultag_isPrivateuseValueSubtags_68",93957348233552,93957348233895],["uprv_unmapFile_68",93957348255808,93957348255865],["icu_68::umtx_cleanup()",93957348271040,93957348271128],["icu_68::RuleCharacterIterator::atEnd() const",93957348275648,93957348275697],["icu_68::UnicodeSet::ensureCapacity(int)",93957348278288,93957348278548],["icu_68::UnicodeSet::getRangeEnd(int) const",93957348280400,93957348280425],["non-virtual thunk to icu_68::UnicodeSet::addMatchSetTo(icu_68::UnicodeSet&) const",93957348283440,93957348283460],["icu_68::UnicodeSet::remove(int)",93957348287792,93957348287911],["icu_68::UnicodeFilter::toMatcher() const",93957348293488,93957348293505],["icu_68::UnicodeSet::resemblesPropertyPattern(icu_68::RuleCharacterIterator&, int)",93957348304784,93957348304993],["ubidi_getMaxValue_68",93957348311296,93957348311357],["icu_68::enumGroupNames(icu_68::UCharNames*, unsigned short const*, int, int, signed char (*)(void*, int, UCharNameChoice, char const*, int), void*, UCharNameChoice)",93957348317760,93957348318993],["uhash_hashCaselessUnicodeString_68",93957348332816,93957348332960],["icu_68::UnicodeString::UnicodeString(char16_t*, int, int)",93957348336112,93957348336275],["icu_68::UnicodeString::operator=(icu_68::UnicodeString const&)",93957348339440,93957348339452],["icu_68::UnicodeString::extract(int, int, char*, int, icu_68::UnicodeString::EInvariant) const",93957348341200,93957348341352],["icu_68::UnicodeString::doAppend(icu_68::UnicodeString const&, int, int)",93957348345728,93957348345825],["u_hasBinaryProperty_68",93957348347968,93957348348007],["isPOSIX_print(BinaryProperty const&, int, UProperty)",93957348349424,93957348349436],["getHangulSyllableType(IntProperty const&, int, UProperty)",93957348350896,93957348350941],["ures_getString_68",93957348352496,93957348352696],["ures_getStringByKeyWithFallback_68",93957348358224,93957348358627],["findFirstExisting(char const*, char*, signed char*, signed char*, signed char*, UErrorCode*)",93957348368160,93957348368439],["res_unload_68",93957348371200,93957348371236],["icu_68::ResourceDataValue::getInt(UErrorCode&) const",93957348372416,93957348372486],["(anonymous namespace)::getStringArray(ResourceData const*, icu_68::ResourceArray const&, icu_68::UnicodeString*, int, UErrorCode&)",93957348373696,93957348374164],["res_getArrayItem_68",93957348377504,93957348377612],["icu_68::UnicodeSetIterator::~UnicodeSetIterator()",93957348379024,93957348379072],["ustrcase_internalToTitle_68",93957348379568,93957348380950],["ustrcase_internalFold_68",93957348386048,93957348386155],["u_strToUpper_68",93957348389024,93957348389144],["icu_68::UStringEnumeration::fromUEnumeration(UEnumeration*, UErrorCode&)",93957348390048,93957348390159],["icu_68::UStringEnumeration::getDynamicClassID() const",93957348390592,93957348390605],["u_strchr_68",93957348392416,93957348392637],["uprv_strCompare_68",93957348393552,93957348394179],["u_memcmp_68",93957348394720,93957348394763],["icu_68::WholeStringBreakIterator::getDynamicClassID() const",93957348396304,93957348396317],["u_strToUTF8_68",93957348401184,93957348401211],["utext_current32_68",93957348402704,93957348402935],["utext_openUChars_68",93957348404288,93957348404459],["unistrTextCopy(UText*, long, long, long, signed char, UErrorCode*)",93957348405936,93957348406327],["charIterTextLength(UText*)",93957348408368,93957348408378],["icu_68::ICU_Utility::escapeUnprintable(icu_68::UnicodeString&, int)",93957348410704,93957348411107],["utrie2_set32_68",93957348412944,93957348413071],["utrie2_isFrozen_68",93957348423232,93957348423246],["icu_68::UVector::UVector(void (*)(void*), signed char (*)(UElement, UElement), int, UErrorCode&)",93957348424944,93957348425057],["icu_68::UVector::setElementAt(void*, int)",93957348426400,93957348426471],["icu_68::UVector::removeElement(void*)",93957348428176,93957348428468],["icu_68::UVector32::getDynamicClassID() const",93957348429264,93957348429277],["icu_68::UVector32::~UVector32()",93957348429568,93957348429626],["icu_68::UVector32::insertElementAt(int, int, UErrorCode&)",93957348430512,93957348430889],["icu_68::UVector64::UVector64(UErrorCode&)",93957348431088,93957348431174],["icu_68::UVector64::insertElementAt(long, int, UErrorCode&)",93957348431344,93957348431745],["Cr_z_compressBound",93957348433056,93957348433108],["Cr_z_crc32",93957348434144,93957348434156],["Cr_z_deflateInit2_",93957348434384,93957348435205],["Cr_z_deflateResetKeep",93957348437088,93957348437338],["deflate_stored",93957348440928,93957348442619],["insert_string_simd",93957348444944,93957348445027],["Cr_z_inflate_table",93957348449296,93957348451262],["Cr_z__tr_flush_bits",93957348452208,93957348452347],["Cr_z__tr_flush_block",93957348452720,93957348455948],["compress_block",93957348458336,93957348459428],["Cr_z_zcalloc",93957348460848,93957348460863],["clnt_sperrno",139871564481312,139871564481414],["clnttcp_create",139871564484016,139871564484673],["clntudp_create",139871564487984,139871564488010],["key_setsecret",139871564489120,139871564489228],["fdim",139871565490976,139871565491063],["fmaxmag",139871565491792,139871565491999],["__acosf_finite",139871565493136,139871565493853],["__atanhf_finite",139871565495296,139871565495589],["__hypotf_finite",139871565496704,139871565496915],["__y0f_finite",139871565498880,139871565499622],["__y1f_finite",139871565501360,139871565502260],["__ynf_finite",139871565503696,139871565504500],["v8::Shell::CreateGlobalTemplate(v8::Isolate*)",93957335247392,93957335249061],["v8::Shell::RealmDispose(v8::FunctionCallbackInfo<v8::Value> const&)",93957335249888,93957335250028],["v8::Shell::RealmSharedGet(v8::Local<v8::String>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335250592,93957335250624],["v8::Shell::LogGetAndStop(v8::FunctionCallbackInfo<v8::Value> const&)",93957335250704,93957335251282],["v8::internal::ThreadLocalTop::Free()",93957336715456,93957336715514],["v8::internal::SimpleStringResource<char, v8::String::ExternalOneByteStringResource>::~SimpleStringResource()",93957336717312,93957336717343],["v8::internal::(anonymous namespace)::AsyncGC::RunInternal()",93957336718560,93957336718788],["v8::internal::IgnitionStatisticsExtension::GetIgnitionDispatchCounters(v8::FunctionCallbackInfo<v8::Value> const&)",93957336718960,93957336719010],["v8::internal::TriggerFailureExtension::GetNativeFunctionTemplate(v8::Isolate*, v8::Local<v8::String>)",93957336722960,93957336723240],["v8::internal::(anonymous namespace)::Flag::IsDefault() const",93957336723280,93957336723470],["v8::internal::FlagList::SetFlagsFromCommandLine(int*, char**, bool, v8::internal::FlagList::HelpOptions)",93957336723728,93957336726485],["v8::internal::FlagList::SetFlagsFromString(char const*, unsigned long)",93957336727728,93957336728381],["v8::internal::HeapProfiler::GetAllocationProfile()",93957339620400,93957339620423],["v8::internal::HeapSnapshot::FillChildren()",93957339626224,93957339626694],["v8::internal::V8HeapExplorer::ExtractLocation(v8::internal::HeapEntry*, v8::internal::HeapObject)",93957339632960,93957339633310],["v8::internal::V8HeapExplorer::ExtractJSGeneratorObjectReferences(v8::internal::HeapEntry*, v8::internal::JSGeneratorObject)",93957339638016,93957339638177],["v8::internal::V8HeapExplorer::ExtractAccessorInfoReferences(v8::internal::HeapEntry*, v8::internal::AccessorInfo)",93957339640944,93957339641137],["v8::internal::V8HeapExplorer::ExtractPropertyCellReferences(v8::internal::HeapEntry*, v8::internal::PropertyCell)",93957339641616,93957339641736],["void v8::internal::V8HeapExplorer::ExtractWeakArrayReferences<v8::internal::WeakFixedArray>(int, v8::internal::HeapEntry*, v8::internal::WeakFixedArray)",93957339642208,93957339642384],["v8::internal::V8HeapExplorer::ExtractFixedArrayReferences(v8::internal::HeapEntry*, v8::internal::FixedArray)",93957339644080,93957339644217],["v8::internal::V8HeapExplorer::ExtractElementReferences(v8::internal::JSObject, v8::internal::HeapEntry*)",93957339645792,93957339646194],["v8::internal::V8HeapExplorer::SetPropertyReference(v8::internal::HeapEntry*, v8::internal::Name, v8::internal::Object, char const*, int)",93957339646592,93957339647142],["v8::internal::V8HeapExplorer::SetNativeBindReference(v8::internal::HeapEntry*, char const*, v8::internal::Object)",93957339647456,93957339647802],["v8::internal::V8HeapExplorer::SetContextReference(v8::internal::HeapEntry*, v8::internal::String, v8::internal::Object, int)",93957339648400,93957339648798],["v8::internal::V8HeapExplorer::SetInternalReference(v8::internal::HeapEntry*, int, v8::internal::Object, int)",93957339649376,93957339649947],["v8::internal::V8HeapExplorer::SetElementReference(v8::internal::HeapEntry*, int, v8::internal::Object)",93957339650192,93957339650535],["std::__1::vector<bool, std::__1::allocator<bool> >::resize(unsigned long, bool)",93957339651904,93957339652339],["v8::internal::V8HeapExplorer::SetUserGlobalReference(v8::internal::Object)",93957339652992,93957339653341],["v8_inspector::toProtocolString(v8::Isolate*, v8::Local<v8::String>)",93957342408496,93957342408696],["v8_inspector::(anonymous namespace)::StringBuffer8::~StringBuffer8()",93957342409616,93957342409667],["v8_inspector::V8ConsoleAgentImpl::enable()",93957342409872,93957342410002],["v8_inspector::V8ConsoleAgentImpl::restore()",93957342410416,93957342410534],["v8_inspector::V8ConsoleMessage::setLocation(v8_inspector::String16 const&, unsigned int, unsigned int, std::__1::unique_ptr<v8_inspector::V8StackTraceImpl, std::__1::default_delete<v8_inspector::V8StackTraceImpl> >, int)",93957342410912,93957342411347],["v8_inspector::protocol::Console::ConsoleMessage::setUrl(v8_inspector::String16 const&)",93957342411808,93957342412467],["v8_inspector::V8ConsoleMessage::reportToFrontend(v8_inspector::protocol::Runtime::Frontend*, v8_inspector::V8InspectorSessionImpl*, bool) const",93957342413776,93957342416539],["v8_inspector::protocol::Runtime::ExceptionDetails::setUrl(v8_inspector::String16 const&)",93957342416768,93957342417427],["v8::internal::compiler::ProcessedFeedback::AsMinimorphicPropertyAccess() const",93957344123504,93957344123539],["std::__1::vector<v8::internal::compiler::Node*, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> >::push_back(v8::internal::compiler::Node* const&)",93957344162224,93957344162885],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncGeneratorYield(v8::internal::compiler::Node*)",93957344178080,93957344178263],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSAdd(v8::internal::compiler::Node*)",93957344182304,93957344183133],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSLoadNamed(v8::internal::compiler::Node*)",93957344196848,93957344198272],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSStoreInArrayLiteral(v8::internal::compiler::Node*)",93957344200640,93957344200898],["v8::internal::compiler::JSNativeContextSpecialization::ReduceMinimorphicPropertyAccess(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::MinimorphicLoadPropertyAccessFeedback const&, v8::internal::compiler::FeedbackSource const&)",93957344209952,93957344210976],["v8::internal::compiler::JSNativeContextSpecialization::InferRootMap(v8::internal::compiler::Node*) const",93957344226176,93957344226553],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSLoadPropertyWithEnumeratedKey(v8::internal::compiler::Node*)",93957344244784,93957344246393],["v8::internal::compiler::JSNativeContextSpecialization::BuildPropertyLoad(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::NameRef const&, v8::internal::ZoneVector<v8::internal::compiler::Node*>*, v8::internal::compiler::PropertyAccessInfo const&)",93957344250496,93957344251166],["v8::internal::compiler::JSNativeContextSpecialization::CanTreatHoleAsUndefined(v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > const&)",93957344259136,93957344259340],["v8::internal::compiler::JSCreateClosureNode::GetFeedbackCellRefChecked(v8::internal::compiler::JSHeapBroker*) const",93957344260864,93957344261107],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::CreateClosureParameters const&)",93957344261664,93957344261883],["v8::internal::compiler::JSOperatorBuilder::JSOperatorBuilder(v8::internal::Zone*)",93957344262224,93957344262335],["v8::internal::compiler::JSOperatorBuilder::OrdinaryHasInstance()",93957344262384,93957344262398],["v8::internal::compiler::JSOperatorBuilder::AsyncFunctionResolve()",93957344262448,93957344262462],["v8::internal::compiler::JSOperatorBuilder::GeneratorRestoreContinuation()",93957344262496,93957344262510],["v8::internal::compiler::JSOperatorBuilder::GeneratorRestoreInputOrDebugPos()",93957344262528,93957344262542],["v8::internal::compiler::JSOperatorBuilder::FulfillPromise()",93957344262560,93957344262574],["v8::internal::compiler::JSOperatorBuilder::PromiseResolve()",93957344262592,93957344262606],["v8::internal::compiler::JSOperatorBuilder::ResolvePromise()",93957344262624,93957344262638],["v8::internal::compiler::JSOperatorBuilder::ParseInt()",93957344262656,93957344262670],["v8::internal::compiler::JSOperatorBuilder::BitwiseNot(v8::internal::compiler::FeedbackSource const&)",93957344262688,93957344262863],["v8::internal::compiler::JSOperatorBuilder::Decrement(v8::internal::compiler::FeedbackSource const&)",93957344263040,93957344263215],["v8::internal::compiler::JSOperatorBuilder::Add(v8::internal::compiler::FeedbackSource const&)",93957344263392,93957344263567],["v8::internal::compiler::JSOperatorBuilder::Multiply(v8::internal::compiler::FeedbackSource const&)",93957344263744,93957344263919],["v8::internal::compiler::JSOperatorBuilder::Modulus(v8::internal::compiler::FeedbackSource const&)",93957344264096,93957344264271],["v8::internal::compiler::JSOperatorBuilder::BitwiseOr(v8::internal::compiler::FeedbackSource const&)",93957344264448,93957344264623],["v8::internal::compiler::JSOperatorBuilder::BitwiseAnd(v8::internal::compiler::FeedbackSource const&)",93957344264800,93957344264975],["v8::internal::compiler::JSOperatorBuilder::ShiftRight(v8::internal::compiler::FeedbackSource const&)",93957344265152,93957344265327],["v8::internal::compiler::JSOperatorBuilder::Equal(v8::internal::compiler::FeedbackSource const&)",93957344265504,93957344265679],["v8::internal::compiler::JSOperatorBuilder::LessThan(v8::internal::compiler::FeedbackSource const&)",93957344265872,93957344266047],["std::__1::num_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, long double) const",93957346706528,93957346707864],["std::__1::__time_put::__do_put(wchar_t*, wchar_t*&, tm const*, char, char) const",93957346720288,93957346720592],["std::__1::money_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >&, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, bool, std::__1::locale const&, unsigned int, unsigned int&, bool&, std::__1::ctype<wchar_t> const&, std::__1::unique_ptr<wchar_t, void (*)(void*)>&, wchar_t*&, wchar_t*)",93957346730000,93957346735206],["std::__1::__money_put<wchar_t>::__gather_info(bool, bool, std::__1::locale const&, std::__1::money_base::pattern&, wchar_t&, wchar_t&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, int&)",93957346743104,93957346743617],["std::__1::messages<wchar_t>::do_get(long, int, int, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&) const",93957346746432,93957346747072],["std::__1::locale::__imp::~__imp()",93957346756256,93957346756284],["std::__1::locale::~locale()",93957346756608,93957346756642],["std::__1::locale::id::__init()",93957346757008,93957346757033],["std::__1::ctype<wchar_t>::do_scan_is(unsigned short, wchar_t const*, wchar_t const*) const",93957346757328,93957346757489],["std::__1::ctype<wchar_t>::do_toupper(wchar_t) const",93957346757680,93957346757784],["std::__1::ctype<wchar_t>::do_tolower(wchar_t) const",93957346757952,93957346758056],["std::__1::ctype<wchar_t>::do_widen(char const*, char const*, wchar_t*) const",93957346758224,93957346758543],["std::__1::ctype<wchar_t>::do_narrow(wchar_t const*, wchar_t const*, char, char*) const",93957346758576,93957346759214],["std::__1::ctype<char>::~ctype()",93957346759280,93957346759341],["std::__1::ctype<char>::do_toupper(char*, char const*) const",93957346759456,93957346759611],["std::__1::ctype<char>::do_tolower(char*, char const*) const",93957346759728,93957346759883],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__shrink_or_extend(unsigned long)",93957346784688,93957346785025],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::copy(char*, unsigned long, unsigned long) const",93957346785440,93957346785538],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char, unsigned long) const",93957346785744,93957346785837],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >& std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__assign_no_alias<false>(char const*, unsigned long)",93957346785904,93957346786190],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::push_back(char)",93957346786368,93957346786641],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::rfind(char, unsigned long) const",93957346787040,93957346787118],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__erase_external_with_move(unsigned long, unsigned long)",93957346787456,93957346787572],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(unsigned long, unsigned long, char const*, unsigned long) const",93957346787728,93957346787850],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::resize(unsigned long, char)",93957346787904,93957346787966],["std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >::__grow_by(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)",93957346788320,93957346788615],["std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >::append(wchar_t const*, unsigned long)",93957346788800,93957346788976],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957346789136,93957346789398],["std::__1::to_string(long)",93957346789728,93957346790050],["std::__1::to_string(unsigned long)",93957346790320,93957346790578],["std::__1::error_category::default_error_condition(int) const",93957346790640,93957346790651],["std::__1::error_category::equivalent(std::__1::error_code const&, int) const",93957346790704,93957346790724],["std::__1::__generic_error_category::name() const",93957346791024,93957346791037],["std::__1::__system_error_category::name() const",93957346791136,93957346791149],["std::__1::__system_error_category::default_error_condition(int) const",93957346791248,93957346791364],["std::__1::system_error::system_error(std::__1::error_code, char const*)",93957346791568,93957346791881],["std::__1::system_error::~system_error()",93957346791904,93957346791932],["std::__1::__vector_base_common<true>::__throw_length_error() const",93957346792080,93957346792096],["abort_message",93957346792112,93957346792288],["__cxxabiv1::__isOurExceptionClass(_Unwind_Exception const*)",93957346792352,93957346792381],["__cxa_free_exception",93957346792464,93957346792487],["__cxxabiv1::exception_cleanup_func(_Unwind_Reason_Code, _Unwind_Exception*)",93957346792624,93957346792710],["__cxa_begin_catch",93957346792752,93957346792870],["__cxa_rethrow",93957346793072,93957346793265],["__cxa_get_globals",93957346793312,93957346793453],["__cxxabiv1::(anonymous namespace)::construct_()",93957346793520,93957346793563],["std::get_unexpected()",93957346793616,93957346793632],["std::__unexpected(void (*)())",93957346793712,93957346793732],["std::get_new_handler()",93957346793840,93957346793853],["__cxa_call_unexpected",93957346796032,93957346796588],["__cxxabiv1::__aligned_malloc_with_fallback(unsigned long)",93957346797184,93957346797477],["__cxxabiv1::__class_type_info::has_unambiguous_public_base(__cxxabiv1::__dynamic_cast_info*, void*, int) const",93957346798240,93957346798310],["__cxxabiv1::__vmi_class_type_info::search_below_dst(__cxxabiv1::__dynamic_cast_info*, void const*, int, bool) const",93957346798976,93957346799849],["__cxxabiv1::__si_class_type_info::search_above_dst(__cxxabiv1::__dynamic_cast_info*, void const*, void const*, int, bool) const",93957346800928,93957346801144],["std::bad_alloc::what() const",93957346801344,93957346801357],["std::runtime_error::~runtime_error()",93957346801568,93957346801637],["std::bad_typeid::what() const",93957346801696,93957346801709],["__cxa_demangle",93957346802144,93957346803865],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [34], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [34], (anonymous namespace)::itanium_demangle::Node*&)",93957346806720,93957346806894],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::EnableIfAttr, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray&&)",93957346816064,93957346816202],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [14], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [14], (anonymous namespace)::itanium_demangle::Node*&)",93957346816784,93957346816945],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::CtorVtableSpecialName, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346817792,93957346817940],["(anonymous namespace)::itanium_demangle::SpecialName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346818480,93957346818643],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::NameWithTemplateArgs, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346821504,93957346821652],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseUnqualifiedName((anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::NameState*)",93957346822928,93957346824646],["(anonymous namespace)::itanium_demangle::NestedName::getBaseName() const",93957346824992,93957346825007],["(anonymous namespace)::itanium_demangle::ForwardTemplateReference::hasArraySlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346825376,93957346825450],["(anonymous namespace)::itanium_demangle::ForwardTemplateReference::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346825664,93957346825716],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseFunctionParam()",93957346832656,93957346833320],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::CastExpr, char const (&) [11], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [11], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346834944,93957346835116],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::CastExpr, char const (&) [13], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [13], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346836256,93957346836428],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::ArraySubscriptExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346838720,93957346838868],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseNewExpr()",93957346839872,93957346840977],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::CastExpr, char const (&) [12], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [12], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346841536,93957346841708],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::NodeArrayNode, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray&&)",93957346842192,93957346842330],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::BoolExpr, int>(int&&)",93957346842880,93957346843018],["(anonymous namespace)::itanium_demangle::FloatLiteralImpl<float>::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346844032,93957346844559],["(anonymous namespace)::itanium_demangle::FunctionParam::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346846656,93957346846845],["(anonymous namespace)::itanium_demangle::PrefixExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346849760,93957346850071],["(anonymous namespace)::itanium_demangle::NodeArray (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::makeNodeArray<(anonymous namespace)::itanium_demangle::Node**>((anonymous namespace)::itanium_demangle::Node**, (anonymous namespace)::itanium_demangle::Node**)",93957346850912,93957346851133],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::NameType, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::StringView&)",93957346853408,93957346853546],["(anonymous namespace)::itanium_demangle::StdQualifiedName::getBaseName() const",93957346857072,93957346857087],["(anonymous namespace)::itanium_demangle::ConditionalExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346859744,93957346860166],["(anonymous namespace)::itanium_demangle::AbiTagAttr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346861648,93957346861925],["(anonymous namespace)::itanium_demangle::ParameterPack::hasRHSComponentSlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346863792,93957346863870],["(anonymous namespace)::itanium_demangle::StdQualifiedName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346864608,93957346864760],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseClassEnumType()",93957346869616,93957346869949],["(anonymous namespace)::itanium_demangle::FunctionType::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346871152,93957346871909],["(anonymous namespace)::itanium_demangle::PixelVectorType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346872912,93957346873196],["(anonymous namespace)::itanium_demangle::PointerToMemberType::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346874720,93957346874879],["v8::base::bits::RoundUpToPowerOfTwo64(unsigned long)",93957346876976,93957346877022],["v8::base::BoundedPageAllocator::ReserveForSharedMemoryMapping(void*, unsigned long)",93957346877824,93957346878045],["v8::base::BoundedPageAllocator::GetRandomMmapAddr()",93957346878576,93957346878591],["v8::base::ieee754::acos(double)",93957346879952,93957346880714],["v8::base::ieee754::cos(double)",93957346884624,93957346885929],["v8::base::ieee754::sin(double)",93957346893584,93957346894745],["V8_Fatal(char const*, ...)",93957346898608,93957346898946],["v8::base::PageAllocator::ReleasePages(void*, unsigned long, unsigned long)",93957346899312,93957346899332],["v8::base::ConditionVariable::ConditionVariable()",93957346899712,93957346899779],["v8::base::SharedMutex::SharedMutex()",93957346900080,93957346900092],["v8::base::Semaphore::Wait()",93957346900240,93957346900275],["v8::base::Time::ToJsTime() const",93957346900896,93957346900953],["v8::base::RegionAllocator::Merge(std::__1::__tree_const_iterator<v8::base::RegionAllocator::Region*, std::__1::__tree_node<v8::base::RegionAllocator::Region*, void*>*, long>, std::__1::__tree_const_iterator<v8::base::RegionAllocator::Region*, std::__1::__tree_node<v8::base::RegionAllocator::Region*, void*>*, long>)",93957346903024,93957346903177],["v8::base::RandomNumberGenerator::SetSeed(long)",93957346904928,93957346905073],["v8::base::RandomNumberGenerator::MurmurHash3(unsigned long)",93957346908688,93957346908752],["v8::base::OS::AllocateShared(unsigned long, v8::base::OS::MemoryPermission)",93957346910000,93957346910090],["v8::base::OS::MemoryMappedFile::create(char const*, unsigned long, void*)",93957346910704,93957346910921],["v8::base::PosixTimezoneCache::DaylightSavingsOffset(double)",93957346911360,93957346911455],["v8::base::OS::FPrint(_IO_FILE*, char const*, ...)",93957346911808,93957346911951],["v8::base::Thread::~Thread()",93957346912608,93957346912663],["v8::base::OS::CreateTimezoneCache()",93957346913168,93957346913198],["v8::platform::NewDefaultJobHandle(v8::Platform*, v8::TaskPriority, std::__1::unique_ptr<v8::JobTask, std::__1::default_delete<v8::JobTask> >, unsigned long)",93957346914992,93957346915226],["v8::platform::DefaultPlatform::CallOnWorkerThread(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957346917792,93957346917809],["v8::base::debug::DisableSignalStackDump()",93957346919824,93957346919837],["v8::platform::DefaultJobHandle::Cancel()",93957346923472,93957346923640],["std::__1::priority_queue<v8::platform::DefaultForegroundTaskRunner::DelayedEntry, std::__1::vector<v8::platform::DefaultForegroundTaskRunner::DelayedEntry, std::__1::allocator<v8::platform::DefaultForegroundTaskRunner::DelayedEntry> >, v8::platform::DefaultForegroundTaskRunner::DelayedEntryCompare>::pop()",93957346925184,93957346925704],["std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l> std::__1::move_backward<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l>(std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l>, std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l>, std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l>)",93957346930464,93957346930785],["v8::platform::DelayedTaskQueue::GetNext()",93957346933968,93957346934932],["v8::platform::tracing::TraceObject::~TraceObject()",93957346942272,93957346942354],["v8::platform::tracing::TracingController::GetCategoryGroupName(unsigned char const*)",93957346946736,93957346946763],["icu_68::getCalendarService(UErrorCode&)",93957346949680,93957346949951],["icu_68::Calendar::setTimeZone(icu_68::TimeZone const&)",93957346955104,93957346955166],["icu_68::Calendar::computeFields(UErrorCode&)",93957346959552,93957346960236],["icu_68::Calendar::getWeekendTransition(UCalendarDaysOfWeek, UErrorCode&) const",93957346971056,93957346971109],["icu_68::Calendar::handleGetExtendedYearFromWeekFields(int, int)",93957346976064,93957346977017],["icu_68::LocaleCacheKey<icu_68::SharedCalendar>::~LocaleCacheKey()",93957346983792,93957346983842],["icu_68::initializeSystemDefaultCentury()",93957346984592,93957346984909],["icu_68::ChineseCalendar::add(UCalendarDateFields, int, UErrorCode&)",93957346986368,93957346986514],["icu_68::ChineseCalendar::getDynamicClassID() const",93957346990400,93957346990413],["icu_68::CalendarCache::~CalendarCache()",93957346993824,93957346993871],["icu_68::Collator::getTailoredSet(UErrorCode&) const",93957346997136,93957346997194],["icu_68::CollationRoot::load(UErrorCode&)",93957346998752,93957346999043],["icu_68::CollationSettings::~CollationSettings()",93957347001040,93957347001096],["icu_68::CollationData::getLastPrimaryForGroup(int) const",93957347005632,93957347005709],["icu_68::CollationFastLatin::compareUTF8(unsigned short const*, unsigned short const*, int, unsigned char const*, int, unsigned char const*, int)",93957347016880,93957347021656],["icu_68::CurrencyUnit::CurrencyUnit(icu_68::ConstChar16Ptr, UErrorCode&)",93957347023072,93957347023319],["icu_68::DateFmtBestPattern::~DateFmtBestPattern()",93957347024944,93957347024994],["icu_68::DateFormat::createTimeInstance(icu_68::DateFormat::EStyle, icu_68::Locale const&)",93957347027024,93957347027042],["icu_68::DateFormat::isLenient() const",93957347028544,93957347028662],["icu_68::DecimalFormat::DecimalFormat(icu_68::DecimalFormatSymbols const*, UErrorCode&)",93957347029904,93957347031138],["icu_68::DecimalFormat::getMultiplier() const",93957347034080,93957347034142],["icu_68::DecimalFormat::format(long, icu_68::UnicodeString&, icu_68::FieldPosition&) const",93957347038272,93957347038772],["icu_68::DecimalFormat::getPositiveSuffix(icu_68::UnicodeString&) const",93957347043360,93957347043435],["icu_68::DecimalFormat::setScientificNotation(signed char)",93957347045056,93957347045119],["icu_68::DecimalFormat::applyLocalizedPattern(icu_68::UnicodeString const&, UErrorCode&)",93957347046976,93957347047137],["icu_68::CurrencyAmount::~CurrencyAmount()",93957347049904,93957347049932],["icu_68::DecimalFormatSymbols::getDynamicClassID() const",93957347054176,93957347054189],["icu_68::(anonymous namespace)::CurrencySpacingSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347064128,93957347065012],["icu_68::DateFormatSymbols::disposeZoneStrings()",93957347111040,93957347111360],["icu_68::(anonymous namespace)::CalendarDataSink::~CalendarDataSink()",93957347115984,93957347116255],["icu_68::LocaleCacheKey<icu_68::SharedDateFormatSymbols>::clone() const",93957347124080,93957347124174],["icu_68::DateIntervalFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347127408,93957347127558],["icu_68::DateIntervalFormat::setFallbackPattern(UCalendarDateFields, icu_68::UnicodeString const&, UErrorCode&)",93957347137936,93957347138150],["icu_68::DateIntervalInfo::clone() const",93957347147952,93957347148116],["icu_68::DateIntervalInfo::DateIntervalSink::validateAndProcessPatternLetter(char const*)",93957347152224,93957347152318],["icu_68::DateTimePatternGenerator::addICUPatterns(icu_68::Locale const&, UErrorCode&)",93957347159296,93957347159837],["icu_68::DateTimePatternGenerator::AppendItemFormatsSink::fillInMissing()",93957347167712,93957347167919],["icu_68::DateTimePatternGenerator::getFieldAndWidthIndices(char const*, UDateTimePGDisplayWidth*) const",93957347178752,93957347179374],["icu_68::(anonymous namespace)::AllowedHourFormatsSink::getHourFormatFromUnicodeString(icu_68::UnicodeString const&)",93957347185616,93957347186138],["icu_68::Formattable::Formattable(long)",93957347187488,93957347187579],["icu_68::Formattable::adoptArray(icu_68::Formattable*, int)",93957347189664,93957347189714],["icu_68::NumberingSystem::getDescription() const",93957347190784,93957347190812],["icu_68::FormattedValueStringBuilderImpl::nextFieldPosition(icu_68::FieldPosition&, UErrorCode&) const",93957347194784,93957347195141],["icu_68::FormattedStringBuilder::insert(int, icu_68::UnicodeString const&, int, int, icu_68::FormattedStringBuilder::Field, UErrorCode&)",93957347197744,93957347198066],["icu_68::FieldPositionOnlyHandler::FieldPositionOnlyHandler(icu_68::FieldPosition&)",93957347200560,93957347200593],["icu_68::FieldPositionIterator::next(icu_68::FieldPosition&)",93957347201952,93957347202138],["icu_68::GregorianCalendar::roll(UCalendarDateFields, int, UErrorCode&)",93957347204768,93957347205826],["icu_68::Grego::dayToFields(double, int&, int&, int&, int&, int&)",93957347207424,93957347207976],["icu_68::HebrewCalendar::handleComputeFields(int, UErrorCode&)",93957347210432,93957347211205],["icu_68::initializeSystemDefaultCentury()",93957347213632,93957347213960],["icu_68::IslamicCalendar::initializeSystemDefaultCentury()",93957347217552,93957347217871],["icu_68::EraRules::initCurrentEra()",93957347219344,93957347219620],["icu_68::ListFormatter::ListPatternsSink::~ListPatternsSink()",93957347222928,93957347223003],["icu_68::(anonymous namespace)::ContextualHandler::~ContextualHandler()",93957347229536,93957347229621],["icu_68::MeasureUnit::MeasureUnit(icu_68::MeasureUnit&&)",93957347231648,93957347231694],["icu_68::Measure::getDynamicClassID() const",93957347234960,93957347234973],["icu_68::number::impl::DecimalQuantity::~DecimalQuantity()",93957347239328,93957347239381],["icu_68::number::impl::DecimalQuantity::setToDecNum(icu_68::number::impl::DecNum const&, UErrorCode&)",93957347242208,93957347242357],["icu_68::number::impl::DecimalQuantity::readLongToBcd(long)",93957347244432,93957347244854],["icu_68::number::impl::DecimalQuantity::appendDigit(signed char, int, bool)",93957347252288,93957347252561],["icu_68::double_conversion::Bignum::Square()",93957347260512,93957347261794],["bool icu_68::double_conversion::Advance<unsigned short const*>(unsigned short const**, unsigned short, int, unsigned short const*&)",93957347279584,93957347279782],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::unit(icu_68::MeasureUnit const&) const &",93957347289440,93957347289763],["icu_68::number::LocalizedNumberFormatter::LocalizedNumberFormatter(icu_68::number::LocalizedNumberFormatter&&)",93957347295200,93957347295456],["icu_68::number::impl::NumberFormatterImpl::NumberFormatterImpl(icu_68::number::impl::MacroProps const&, UErrorCode&)",93957347300176,93957347300609],["icu_68::MeasureUnitImpl::forMeasureUnit(icu_68::MeasureUnit const&, icu_68::MeasureUnitImpl&, UErrorCode&)",93957347309008,93957347309623],["icu_68::SingleUnitImpl* icu_68::MemoryPool<icu_68::SingleUnitImpl, 8>::create<>()",93957347317072,93957347317276],["icu_68::number::impl::Grouper::setLocaleData(icu_68::number::impl::ParsedPatternInfo const&, icu_68::Locale const&)",93957347323232,93957347323581],["icu_68::number::impl::LongNameHandler::forCurrencyLongNames(icu_68::Locale const&, icu_68::CurrencyUnit const&, icu_68::PluralRules const*, icu_68::number::impl::MicroPropsGenerator const*, UErrorCode&)",93957347329392,93957347330468],["non-virtual thunk to icu_68::number::impl::MixedUnitLongNameHandler::~MixedUnitLongNameHandler()",93957347336864,93957347337029],["icu_68::number::impl::PropertiesAffixPatternProvider::containsSymbolType(icu_68::number::impl::AffixPatternType, UErrorCode&) const",93957347343872,93957347343989],["icu_68::number::impl::CurrencySymbols::getNarrowCurrencySymbol(UErrorCode&) const",93957347345232,93957347345353],["icu_68::TimeZoneRule::getDSTSavings() const",93957347347072,93957347347081],["icu_68::number::impl::CurrencySpacingEnabledModifier::applyCurrencySpacingAffix(icu_68::FormattedStringBuilder&, int, icu_68::number::impl::CurrencySpacingEnabledModifier::EAffix, icu_68::DecimalFormatSymbols const&, UErrorCode&)",93957347350240,93957347350964],["icu_68::number::Scale::powerOfTen(int)",93957347352144,93957347352170],["icu_68::number::FormattedNumber::~FormattedNumber()",93957347353344,93957347353400],["icu_68::number::impl::ImmutablePatternModifier::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347356352,93957347356441],["non-virtual thunk to icu_68::number::impl::MutablePatternModifier::~MutablePatternModifier()",93957347358912,93957347358926],["icu_68::number::impl::ParsedPatternInfo::hasCurrencySign() const",93957347360624,93957347360666],["icu_68::number::impl::PatternStringUtils::escapePaddingString(icu_68::UnicodeString, icu_68::UnicodeString&, int, UErrorCode&)",93957347369424,93957347370041],["icu_68::number::Precision::constructIncrement(double, int)",93957347376496,93957347376711],["icu_68::number::impl::ScientificModifier::getCodePointCount() const",93957347378992,93957347379003],["icu_68::number::impl::enum_to_stem_string::signDisplay(UNumberSignDisplay, icu_68::UnicodeString&)",93957347380688,93957347380957],["icu_68::number::impl::blueprint_helpers::parseScaleOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347394752,93957347395288],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::toSkeleton(UErrorCode&) const",93957347399600,93957347399935],["icu_68::number::impl::Usage::operator=(icu_68::number::impl::Usage&&)",93957347400944,93957347401012],["(anonymous namespace)::doGetPattern(UResourceBundle*, char const*, char const*, UErrorCode&, UErrorCode&)",93957347405520,93957347405882],["decSetCoeff(decNumber*, decContext*, unsigned char const*, int, int*, unsigned int*)",93957347408928,93957347410520],["decApplyRound(decNumber*, decContext*, int, unsigned int*)",93957347422448,93957347423168],["icu_68::NumberFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347424992,93957347425475],["icu_68::NumberFormat::setGroupingUsed(signed char)",93957347427616,93957347427629],["icu_68::UnicodeString::setTo(icu_68::UnicodeString const&, int)",93957347430800,93957347430929],["icu_68::numparse::impl::CombinedCurrencyMatcher::~CombinedCurrencyMatcher()",93957347434000,93957347434169],["icu_68::numparse::impl::DecimalMatcher::smokeTest(icu_68::StringSegment const&) const",93957347445952,93957347446343],["icu_68::numparse::impl::AffixTokenMatcherWarehouse::AffixTokenMatcherWarehouse(icu_68::numparse::impl::AffixTokenMatcherSetupData const*)",93957347449024,93957347449429],["icu_68::numparse::impl::AffixMatcher::toString() const",93957347456272,93957347456823],["icu_68::numparse::impl::ScientificMatcher::ScientificMatcher(icu_68::DecimalFormatSymbols const&, icu_68::number::impl::Grouper const&)",93957347459840,93957347460094],["icu_68::numparse::impl::PlusSignMatcher::isDisabled(icu_68::numparse::impl::ParsedNumber const&) const",93957347461920,93957347461943],["icu_68::numparse::impl::RequireAffixValidator::postProcess(icu_68::numparse::impl::ParsedNumber&) const",93957347462912,93957347462937],["icu_68::NumberingSystem::createInstance(int, signed char, icu_68::UnicodeString const&, UErrorCode&)",93957347463520,93957347463905],["icu_68::OlsonTimeZone::getHistoricalOffset(double, signed char, int, int, int&, int&) const",93957347468608,93957347469458],["icu_68::BasicTimeZone::BasicTimeZone(icu_68::BasicTimeZone const&)",93957347475952,93957347475983],["icu_68::PersianCalendar::handleGetMonthLength(int, int) const",93957347480608,93957347480723],["icu_68::PluralRules::clone() const",93957347482336,93957347482424],["icu_68::PluralRuleParser::getNextToken(UErrorCode&)",93957347490064,93957347490998],["icu_68::PluralKeywordEnumeration::snext(UErrorCode&)",93957347494352,93957347494392],["icu_68::PluralAvailableLocalesEnumeration::next(int*, UErrorCode&)",93957347495920,93957347496048],["icu_68::RuleBasedNumberFormat::getDecimalFormatSymbols() const",93957347502576,93957347502589],["icu_68::RuleBasedNumberFormat::format(double, icu_68::UnicodeString&, icu_68::FieldPosition&) const",93957347506800,93957347506850],["icu_68::RuleBasedNumberFormat::initCapitalizationContextInfo(icu_68::Locale const&)",93957347512384,93957347512693],["icu_68::PluralFormat::format(icu_68::Formattable const&, double, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347514560,93957347515683],["icu_68::NFRule::setBaseValue(long, UErrorCode&)",93957347522912,93957347523106],["icu_68::NFRuleSet::parseRules(icu_68::UnicodeString&, UErrorCode&)",93957347534032,93957347534611],["icu_68::util64_tou(long, char16_t*, unsigned int, unsigned int, signed char)",93957347539968,93957347540265],["icu_68::MultiplierSubstitution::operator==(icu_68::NFSubstitution const&) const",93957347543824,93957347543960],["icu_68::NumeratorSubstitution::doParse(icu_68::UnicodeString const&, icu_68::ParsePosition&, double, double, signed char, unsigned int, icu_68::Formattable&) const",93957347547520,93957347548493],["icu_68::IntegralPartSubstitution::calcUpperBound(double) const",93957347549040,93957347549054],["icu_68::CollationElementIterator::CollationElementIterator(icu_68::CharacterIterator const&, icu_68::RuleBasedCollator const*, UErrorCode&)",93957347550928,93957347551065],["icu_68::CollationIterator::nextCE32FromDiscontiguousContraction(icu_68::CollationData const*, icu_68::UCharsTrie&, unsigned int, int, int, UErrorCode&)",93957347560320,93957347562745],["icu_68::ContractionsAndExpansions::handleCE32(int, int, unsigned int)",93957347570032,93957347571092],["icu_68::CollationBuilder::findOrInsertNodeForPrimary(unsigned int, UErrorCode&)",93957347580944,93957347581284],["icu_68::CEFinalizer::modifyCE32(unsigned int) const",93957347591072,93957347591164],["icu_68::CollationRuleParser::parseSetting(UErrorCode&)",93957347595888,93957347600876],["uprv_deleteConditionalCE32_68",93957347610144,93957347610182],["icu_68::CollationDataBuilder::~CollationDataBuilder()",93957347613872,93957347614013],["icu_68::CollationDataBuilder::getJamoCE32s(unsigned int*, UErrorCode&)",93957347621584,93957347622173],["icu_68::CollationFastLatinBuilder::loadGroups(icu_68::CollationData const&, UErrorCode&)",93957347628400,93957347628765],["icu_68::CollationRootElements::getTertiaryBefore(unsigned int, unsigned int, unsigned int) const",93957347635504,93957347635805],["icu_68::RuleBasedTimeZone::getOffsetInternal(double, signed char, int, int, int&, int&, UErrorCode&) const",93957347640656,93957347641090],["region_cleanup()",93957347652240,93957347652253],["icu_68::RelativeDateTimeFormatter::init(icu_68::NumberFormat*, icu_68::BreakIterator*, UErrorCode&)",93957347656480,93957347657106],["icu_68::RelativeDateFormat::getDynamicClassID() const",93957347663696,93957347663709],["icu_68::RelativeDateFormat::getDateFormatSymbols() const",93957347669280,93957347669301],["icu_68::RuleBasedCollator::getRules() const",93957347671936,93957347671950],["icu_68::RuleBasedCollator::compare(char16_t const*, int, char16_t const*, int, UErrorCode&) const",93957347677632,93957347677795],["icu_68::RuleBasedCollator::internalNextSortKeyPart(UCharIterator*, unsigned int*, unsigned char*, int, UErrorCode&) const",93957347686416,93957347687790],["icu_68::CollationKeys::writeSortKeyUpToQuaternary(icu_68::CollationIterator&, signed char const*, icu_68::CollationSettings const&, icu_68::SortKeyByteSink&, icu_68::Collation::Level, icu_68::CollationKeys::LevelCallback&, signed char, UErrorCode&)",93957347691520,93957347702209],["icu_68::SimpleTimeZone::setStartYear(int)",93957347706512,93957347706525],["icu_68::SimpleTimeZone::initTransitionRules(UErrorCode&)",93957347710544,93957347712418],["icu_68::SimpleDateFormat::initFastNumberFormatters(UErrorCode&)",93957347721280,93957347721505],["icu_68::SimpleDateFormat::isAtNumericField(icu_68::UnicodeString const&, int)",93957347731840,93957347732043],["icu_68::SimpleDateFormat::applyLocalizedPattern(icu_68::UnicodeString const&, UErrorCode&)",93957347750208,93957347750346],["icu_68::MessageFormat::copyObjects(icu_68::MessageFormat const&, UErrorCode&)",93957347753152,93957347753765],["icu_68::MessageFormat::adoptFormat(icu_68::UnicodeString const&, icu_68::Format*, UErrorCode&)",93957347757472,93957347758101],["icu_68::MessageFormat::findFirstPluralNumberArg(int, icu_68::UnicodeString const&) const",93957347767216,93957347767502],["icu_68::number::impl::MacroProps::~MacroProps()",93957347772912,93957347772996],["icu_68::DayPeriodRules::getInstance(icu_68::Locale const&, UErrorCode&)",93957347776560,93957347777066],["icu_68::CollationKey::setToBogus()",93957347784656,93957347784679],["icu_68::StringSegment::codePointAt(int) const",93957347786016,93957347786035],["icu_68::initializeSystemDefaultCentury()",93957347787600,93957347787901],["icu_68::TimeZone::getOffset(double, signed char, int&, int&, UErrorCode&) const",93957347790288,93957347790713],["icu_68::TimeZone::getDSTSavings() const",93957347794864,93957347794888],["icu_68::GMTOffsetField::createText(icu_68::UnicodeString const&, UErrorCode&)",93957347799760,93957347799988],["icu_68::TimeZoneFormat::formatGeneric(icu_68::TimeZone const&, int, double, icu_68::UnicodeString&) const",93957347808320,93957347808600],["icu_68::TimeZoneFormat::parseZoneID(icu_68::UnicodeString const&, icu_68::ParsePosition&, icu_68::UnicodeString&) const",93957347816864,93957347817379],["icu_68::ZoneIdMatchHandler::handleMatch(int, icu_68::CharacterNode const*, UErrorCode&)",93957347826944,93957347827027],["icu_68::UnicodeString::caseCompare(icu_68::UnicodeString const&, unsigned int) const",93957347833760,93957347833885],["icu_68::TimeZoneNamesDelegate::TimeZoneNamesDelegate(icu_68::Locale const&, UErrorCode&)",93957347838352,93957347838988],["icu_68::TimeZoneNames::createInstance(icu_68::Locale const&, UErrorCode&)",93957347839728,93957347839814],["icu_68::TextTrieMap::~TextTrieMap()",93957347841712,93957347841925],["icu_68::MetaZoneIDsEnumeration::~MetaZoneIDsEnumeration()",93957347844736,93957347844795],["icu_68::TimeZoneNamesImpl::getMetaZoneID(icu_68::UnicodeString const&, double, icu_68::UnicodeString&) const",93957347848480,93957347848510],["icu_68::TimeZoneNamesImpl::getDefaultExemplarLocationName(icu_68::UnicodeString const&, icu_68::UnicodeString&)",93957347853568,93957347854165],["icu_68::TimeZoneNamesImpl::ZoneStringsLoader::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347859136,93957347859431],["icu_68::InitialTimeZoneRule::isEquivalentTo(icu_68::TimeZoneRule const&) const",93957347861152,93957347861217],["icu_68::TimeArrayTimeZoneRule::initStartTimes(double const*, int, UErrorCode&)",93957347863328,93957347863562],["icu_68::TimeZoneTransition::operator=(icu_68::TimeZoneTransition const&)",93957347864896,93957347865005],["icu_68::CollationLoader::loadFromLocale(UErrorCode&)",93957347867808,93957347868483],["icu_68::UIterCollationIterator::getOffset() const",93957347873344,93957347873367],["icu_68::FCDUIterCollationIterator::previousSegment(UErrorCode&)",93957347876752,93957347877582],["icu_68::units::UnitConverter::UnitConverter(icu_68::MeasureUnitImpl const&, icu_68::MeasureUnitImpl const&, icu_68::units::ConversionRates const&, UErrorCode&)",93957347885984,93957347886982],["icu_68::units::UnitsRouter::parseSkeletonToPrecision(icu_68::UnicodeString, UErrorCode&)",93957347896592,93957347896979],["icu_68::FCDUTF16CollationIterator::~FCDUTF16CollationIterator()",93957347901504,93957347901557],["icu_68::UTF8CollationIterator::nextCodePoint(UErrorCode&)",93957347905600,93957347905941],["icu_68::FCDUTF8CollationIterator::forwardNumCodePoints(int, UErrorCode&)",93957347912592,93957347912660],["icu_68::ZoneMeta::createCustomTimeZone(int)",93957347919568,93957347919815],["icu_68::BreakIterator::getRuleStatusVec(int*, int, UErrorCode&)",93957347923808,93957347923846],["icu_68::CheckedArrayByteSink::Append(char const*, int)",93957347925952,93957347926066],["icu_68::BytesTrieBuilder::BTLinearMatchNode::operator==(icu_68::StringTrieBuilder::Node const&) const",93957347928208,93957347928270],["icu_68::CanonicalIterator::~CanonicalIterator()",93957347932352,93957347932408],["icu_68::CharString::append(char, UErrorCode&)",93957347939536,93957347939605],["T_CString_integerToString_68",93957347941088,93957347941277],["icu_68::SimpleFilteredSentenceBreakIterator::SimpleFilteredSentenceBreakIterator(icu_68::BreakIterator*, icu_68::UCharsTrie*, icu_68::UCharsTrie*, UErrorCode&)",93957347944688,93957347944958],["icu_68::SimpleFilteredBreakIteratorBuilder::suppressBreakAfter(icu_68::UnicodeString const&, UErrorCode&)",93957347947680,93957347947818],["icu_68::LoadedNormalizer2Impl::load(char const*, char const*, UErrorCode&)",93957347950480,93957347950651],["icu_68::LocaleBuilder::~LocaleBuilder()",93957347953136,93957347953223],["icu_68::LocaleMatcher::LocaleMatcher(icu_68::LocaleMatcher::Builder const&, UErrorCode&)",93957347957248,93957347959876],["icu_68::LocaleBased::getLocaleID(ULocDataLocaleType, UErrorCode&) const",93957347963136,93957347963177],["icu_68::LocaleDistance::isParadigmLSR(icu_68::LSR const&) const",93957347972432,93957347972515],["icu_68::LocaleDisplayNamesImpl::variantDisplayName(char const*, icu_68::UnicodeString&, signed char) const",93957347981712,93957347981954],["icu_68::Locale::init(char const*, signed char)",93957347985200,93957347986699],["icu_68::Locale::initBaseName(UErrorCode&)",93957347999440,93957347999627],["icu_68::Locale::getKeywordValue(char const*, char*, int, UErrorCode&) const",93957348005504,93957348005518],["icu_68::(anonymous namespace)::cleanupKnownCanonicalized()",93957348010000,93957348010033],["icu_68::XLikelySubtags::makeMaximizedLsrFrom(icu_68::Locale const&, UErrorCode&) const",93957348023344,93957348023469],["icu_68::LSR::operator=(icu_68::LSR&&)",93957348030272,93957348030392],["icu_68::MessagePattern::validateArgumentName(icu_68::UnicodeString const&)",93957348036704,93957348036983],["icu_68::Normalizer2::isNormalizedUTF8(icu_68::StringPiece, UErrorCode&) const",93957348043584,93957348043698],["icu_68::Normalizer2WithImpl::getRawDecomposition(int, icu_68::UnicodeString&) const",93957348045968,93957348046143],["icu_68::ComposeNormalizer2::quickCheck(icu_68::UnicodeString const&, UErrorCode&) const",93957348047712,93957348047835],["icu_68::NoopNormalizer2::isNormalizedUTF8(icu_68::StringPiece, UErrorCode&) const",93957348049120,93957348049132],["icu_68::Normalizer2Impl::ensureCanonIterData(UErrorCode&) const",93957348054112,93957348054211],["icu_68::Normalizer2Impl::compose(char16_t const*, char16_t const*, signed char, signed char, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348064128,93957348067120],["icu_68::InitCanonIterData::doInit(icu_68::Normalizer2Impl*, UErrorCode&)",93957348078896,93957348079302],["u_getPropertyValueName_68",93957348082960,93957348082970],["uprv_trunc_68",93957348083648,93957348083731],["u_versionFromString_68",93957348087472,93957348087680],["icu_68::RuleBasedBreakIterator::first()",93957348090080,93957348090153],["icu_68::RuleBasedBreakIterator::getLanguageBreakEngine(int)",93957348096976,93957348097571],["icu_68::DictionaryBreakEngine::handles(int) const",93957348099792,93957348099806],["icu_68::KhmerBreakEngine::~KhmerBreakEngine()",93957348106768,93957348106886],["icu_68::RuleBasedBreakIterator::DictionaryCache::preceding(int, int*, int*)",93957348115456,93957348115689],["icu_68::RBBIDataWrapper::RBBIDataWrapper(UDataMemory*, UErrorCode&)",93957348120896,93957348121061],["icu_68::StringCharacterIterator::getText(icu_68::UnicodeString&)",93957348122560,93957348122580],["icu_68::ICUService::ICUService(icu_68::UnicodeString const&)",93957348123776,93957348123839],["icu_68::ICUService::countFactories() const",93957348127712,93957348127734],["icu_68::LocaleKeyFactory::getDynamicClassID() const",93957348129168,93957348129181],["icu_68::ICULocaleService::registerInstance(icu_68::UObject*, icu_68::Locale const&, int, UErrorCode&)",93957348130240,93957348130263],["icu_68::ICULocaleService::createKey(icu_68::UnicodeString const*, UErrorCode&) const",93957348130864,93957348130900],["icu_68::LocaleKey::createWithCanonicalFallback(icu_68::UnicodeString const*, icu_68::UnicodeString const*, int, UErrorCode&)",93957348131792,93957348131982],["icu_68::LocaleKey::canonicalLocale(icu_68::Locale&) const",93957348132928,93957348132942],["icu_68::ICUNotifier::removeListener(icu_68::EventListener const*, UErrorCode&)",93957348133872,93957348134066],["icu_68::ICUResourceBundleFactory::getDynamicClassID() const",93957348134672,93957348134685],["icu_68::SimpleLocaleKeyFactory::create(icu_68::ICUServiceKey const&, icu_68::ICUService const*, UErrorCode&) const",93957348135168,93957348135468],["icu_68::SimpleFormatter::format(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&) const",93957348136624,93957348137007],["(anonymous namespace)::computeUnion(icu_68::unisets::Key, icu_68::unisets::Key, icu_68::unisets::Key)",93957348140352,93957348140499],["icu_68::StringTrieBuilder::~StringTrieBuilder()",93957348142864,93957348142914],["icu_68::StringTrieBuilder::FinalValueNode::operator==(icu_68::StringTrieBuilder::Node const&) const",93957348147168,93957348147238],["icu_68::StringTrieBuilder::ListBranchNode::markRightEdgesFirst(int)",93957348147792,93957348147889],["ucase_addPropertyStarts_68",93957348150704,93957348150740],["ucase_toFullLower_68",93957348152832,93957348154530],["ucase_hasBinaryProperty_68",93957348156928,93957348158334],["u_isWhitespace_68",93957348159536,93957348159723],["u_getMainProperties_68",93957348161568,93957348161694],["icu_68::UCharsTrieElement::getString(icu_68::UnicodeString const&) const",93957348163280,93957348163366],["icu_68::compareElementStrings(void const*, void const*, void const*)",93957348164896,93957348164918],["icu_68::UCharsTrieBuilder::UCTLinearMatchNode::operator==(icu_68::StringTrieBuilder::Node const&) const",93957348165904,93957348165965],["icu_68::UCharsTrieBuilder::writeDeltaTo(int)",93957348167408,93957348167600],["icu_68::UCharsTrie::next(icu_68::ConstChar16Ptr, int)",93957348168928,93957348169434],["icu_68::UCharCharacterIterator::operator=(icu_68::UCharCharacterIterator const&)",93957348171392,93957348171426],["icu_68::UCharCharacterIterator::current() const",93957348171856,93957348171888],["icu_68::UCharCharacterIterator::last32()",93957348172272,93957348172372],["icu_68::UCharCharacterIterator::setText(icu_68::ConstChar16Ptr, int)",93957348173728,93957348173771],["ucln_registerCleanup_68",93957348174192,93957348174216],["(anonymous namespace)::getRange(void const*, int, unsigned int (*)(void const*, unsigned int), void const*, unsigned int*)",93957348176048,93957348177583],["ucurr_getDefaultFractionDigits_68",93957348186224,93957348186246],["icu_68::UDataPathIterator::UDataPathIterator(char const*, char const*, char const*, char const*, signed char, UErrorCode*)",93957348189856,93957348190269],["udata_setFileAccess_68",93957348194448,93957348194460],["udata_getHeaderSize_68",93957348197456,93957348197483],["UDataMemory_normalizeDataPointer_68",93957348198640,93957348198674],["uenum_unext_68",93957348199312,93957348199350],["uhash_setValueComparator_68",93957348201648,93957348201662],["uhash_put_68",93957348203680,93957348203698],["uhash_find_68",93957348205536,93957348205809],["uhash_compareLong_68",93957348206800,93957348206811],["uiter_next32_68",93957348207904,93957348207998],["utf8IteratorNext(UCharIterator*)",93957348210608,93957348211022],["ulist_removeString_68",93957348211968,93957348212142],["ulocimp_getKeywords_68",93957348212544,93957348213483],["ulocimp_getLanguage_68(char const*, char const**, UErrorCode&)",93957348217392,93957348217926],["uloc_getScript_68",93957348220368,93957348220637],["uloc_canonicalize_68",93957348225184,93957348225334],["uloc_kw_nextKeyword(UEnumeration*, int*, UErrorCode*)",93957348225920,93957348226000],["ulocimp_toLegacyType_68",93957348230848,93957348231171],["ultag_isRegionSubtag_68",93957348232720,93957348232829],["ultag_isTransformedExtensionSubtags_68",93957348234528,93957348234696],["icu_68::CharString* icu_68::MemoryPool<icu_68::CharString, 8>::create<icu_68::CharString&, UErrorCode&>(icu_68::CharString&, UErrorCode&)",93957348254592,93957348254870],["umutablecptrie_close_68",93957348256176,93957348256231],["umtx_lock_68",93957348270496,93957348270704],["icu_68::UnifiedCache::_runEvictionSlice() const",93957348271984,93957348272328],["(anonymous namespace)::_set_add(USet*, int)",93957348275472,93957348275482],["icu_68::RuleCharacterIterator::getPos(icu_68::RuleCharacterIterator::Pos&) const",93957348276752,93957348276781],["icu_68::UnicodeSet::add(int, int)",93957348277360,93957348277676],["icu_68::UnicodeSet::setPattern(char16_t const*, int)",93957348278864,93957348278980],["icu_68::UnicodeSet::operator==(icu_68::UnicodeSet const&) const",93957348279952,93957348280079],["icu_68::UnicodeSet::contains(int, int) const",93957348280656,93957348280752],["icu_68::UnicodeSet::matchRest(icu_68::Replaceable const&, int, int, icu_68::UnicodeString const&)",93957348282864,93957348283240],["icu_68::UnicodeSet::add(int const*, int, signed char)",93957348284080,93957348284861],["icu_68::UnicodeSet::removeAllStrings()",93957348286752,93957348286836],["icu_68::UnicodeSet::UnicodeSet(unsigned short const*, int, icu_68::UnicodeSet::ESerialization, UErrorCode&)",93957348288704,93957348289339],["icu_68::UnicodeSet::freeze()",93957348291184,93957348291484],["icu_68::BMPSet::initBits()",93957348295184,93957348295850],["icu_68::UnicodeSet::UnicodeSet(icu_68::UnicodeString const&, UErrorCode&)",93957348301040,93957348301265],["icu_68::(anonymous namespace)::generalCategoryMaskFilter(int, void*)",93957348306112,93957348306141],["(anonymous namespace)::getInclusionsForSource(UPropertySource, UErrorCode&)",93957348309728,93957348310351],["ubidi_getJoiningType_68",93957348311792,93957348311924],["icu_68::enumNames(icu_68::UCharNames*, int, int, signed char (*)(void*, int, UCharNameChoice, char const*, int), void*, UCharNameChoice)",93957348315280,93957348317037],["icu_68::UnicodeSetStringSpan::span(char16_t const*, int, USetSpanCondition) const",93957348321504,93957348323567],["icu_68::UnicodeSetStringSpan::spanNotBackUTF8(unsigned char const*, int) const",93957348330576,93957348330935],["icu_68::UnicodeString::toUpper(icu_68::Locale const&)",93957348333232,93957348333284],["icu_68::UnicodeString::doAppend(char16_t const*, int, int)",93957348335088,93957348335799],["icu_68::UnicodeString::setToUTF8(icu_68::StringPiece)",93957348337536,93957348337964],["icu_68::UnicodeString::~UnicodeString()",93957348339024,93957348339095],["icu_68::UnicodeString::append(int)",93957348339680,93957348339780],["icu_68::UnicodeString::countChar32(int, int) const",93957348340512,93957348340598],["icu_68::UnicodeString::indexOf(char16_t const*, int, int, int, int) const",93957348342256,93957348342438],["icu_68::UnicodeString::setCharAt(int, char16_t)",93957348344144,93957348344281],["icu_68::UnicodeString::doHashCode() const",93957348346592,93957348346656],["icu_68::UnicodeString::trim()",93957348347344,93957348347764],["(anonymous namespace)::ulayout_ensureData(UErrorCode&)",93957348348528,93957348348921],["isCanonSegmentStarter(BinaryProperty const&, int, UProperty)",93957348349280,93957348349364],["isRegionalIndicator(BinaryProperty const&, int, UProperty)",93957348350560,93957348350578],["getJoiningType(IntProperty const&, int, UProperty)",93957348350752,93957348350764],["getBiDiPairedBracketType(IntProperty const&, int, UProperty)",93957348351024,93957348351036],["icu_68::StackUResourceBundle::~StackUResourceBundle()",93957348351616,93957348351626],["ures_getType_68",93957348353296,93957348353323],["init_resb_result(ResourceData const*, unsigned int, char const*, int, UResourceDataEntry*, UResourceBundle const*, int, UResourceBundle*, UErrorCode*)",93957348354448,93957348357508],["(anonymous namespace)::getAllItemsWithFallback(UResourceBundle const*, icu_68::ResourceDataValue&, icu_68::ResourceSink&, UErrorCode&)",93957348360544,93957348361328],["ures_openDirect_68",93957348364944,93957348364970],["hashEntry(UElement)",93957348369744,93957348369791],["ures_loc_resetLocales(UEnumeration*, UErrorCode*)",93957348370576,93957348370601],["res_getBinaryNoTrace_68",93957348371600,93957348371671],["icu_68::ResourceDataValue::getString(int&, UErrorCode&) const",93957348372000,93957348372294],["icu_68::ResourceDataValue::getIntVector(int&, UErrorCode&) const",93957348372576,93957348372733],["icu_68::ResourceDataValue::isNoInheritanceMarker() const",93957348373328,93957348373551],["icu_68::ResourceDataValue::getStringOrFirstOfArray(UErrorCode&) const",93957348374704,93957348375462],["icu_68::ResourceTable::getKeyAndValue(int, char const*&, icu_68::ResourceValue&) const",93957348376736,93957348376996],["res_findResource_68",93957348377808,93957348378472],["icu_68::UnicodeSetIterator::getDynamicClassID() const",93957348378864,93957348378877],["icu_68::UnicodeSetIterator::next()",93957348379136,93957348379252],["icu_68::UStack::UStack(UErrorCode&)",93957348379504,93957348379535],["icu_68::(anonymous namespace)::appendResult(char16_t*, int, int, int, char16_t const*, int, unsigned int, icu_68::Edits*)",93957348381200,93957348381965],["ustrcase_internalToLower_68",93957348384640,93957348384776],["u_strFoldCase_68",93957348386688,93957348386749],["ustrcase_getCaseLocale_68",93957348388848,93957348388888],["icu_68::StringEnumeration::~StringEnumeration()",93957348389216,93957348389281],["icu_68::StringEnumeration::setChars(char const*, int, UErrorCode&)",93957348389872,93957348390011],["icu_68::UStringEnumeration::~UStringEnumeration()",93957348390224,93957348390308],["icu_68::UStringEnumeration::snext(UErrorCode&)",93957348390448,93957348390575],["ustrenum_close(UEnumeration*)",93957348390752,93957348390790],["uprv_itou_68",93957348390896,93957348391458],["u_strlen_68",93957348392736,93957348392769],["u_memrchr_68",93957348393408,93957348393501],["u_strncmp_68",93957348394240,93957348394330],["u_memcpy_68",93957348394624,93957348394660],["u_asciiToUpper_68",93957348395856,93957348395875],["ustr_hashCharsN_68",93957348396112,93957348396181],["icu_68::WholeStringBreakIterator::setText(icu_68::UnicodeString const&)",93957348396352,93957348396381],["u_strToUTF8WithSub_68",93957348398800,93957348401011],["utext_next32_68",93957348401728,93957348401901],["utext_setNativeIndex_68",93957348402128,93957348402291],["utext_equals_68",93957348403248,93957348403366],["utext_openUnicodeString_68",93957348403984,93957348404014],["shallowTextClone(UText*, UText const*, UErrorCode*)",93957348404624,93957348405079],["unistrTextExtract(UText*, long, long, char16_t*, int, UErrorCode*)",93957348405296,93957348405602],["ucstrTextClone(UText*, UText const*, signed char, UErrorCode*)",93957348406384,93957348406934],["ucstrTextClose(UText*)",93957348407920,93957348407959],["charIterTextExtract(UText*, long, long, char16_t*, int, UErrorCode*)",93957348408784,93957348409159],["utf8_back1SafeBody_68",93957348410400,93957348410677],["icu_68::ICU_Utility::parseAsciiInteger(icu_68::UnicodeString const&, int&)",93957348411232,93957348411342],["utrace_getLevel_68",93957348411808,93957348411820],["utrie2_freeze_68",93957348413216,93957348419413],["utrie2_openFromSerialized_68",93957348422608,93957348423138],["enumEitherTrie(UTrie2 const*, int, int, unsigned int (*)(void const*, unsigned int), signed char (*)(void const*, int, int, unsigned int), void const*)",93957348423280,93957348424564],["icu_68::UVector::UVector(int, UErrorCode&)",93957348424736,93957348424844],["icu_68::UVector::removeAllElements()",93957348425200,93957348425280],["icu_68::UVector::operator==(icu_68::UVector const&)",93957348426112,93957348426247],["icu_68::UVector::elementAt(int) const",93957348426832,93957348426861],["icu_68::UVector::retainAll(icu_68::UVector const&)",93957348427664,93957348428054],["icu_68::UVector::sortedInsert(void*, signed char (*)(UElement, UElement), UErrorCode&)",93957348428672,93957348428682],["icu_68::sortComparator(void const*, void const*, void const*)",93957348429232,93957348429252],["icu_68::UVector32::UVector32(UErrorCode&)",93957348429280,93957348429366],["icu_68::UVector32::~UVector32()",93957348429504,93957348429554],["icu_68::UVector32::assign(icu_68::UVector32 const&, UErrorCode&)",93957348429632,93957348430163],["icu_68::UVector32::setElementAt(int, int)",93957348430480,93957348430504],["icu_68::UVector32::removeAllElements()",93957348430896,93957348430909],["icu_68::UVector64::getDynamicClassID() const",93957348431072,93957348431085],["icu_68::UVector64::~UVector64()",93957348431184,93957348431234],["icu_68::UVector64::setElementAt(long, int)",93957348431312,93957348431337],["icu_68::UVector64::expandCapacity(int, UErrorCode&)",93957348431760,93957348431914],["Cr_z_adler32",93957348433040,93957348433052],["Cr_z_cpu_check_features",93957348433120,93957348433144],["Cr_z_crc32_z",93957348433232,93957348434133],["Cr_z_crc_reset",93957348434160,93957348434218],["Cr_z_copy_with_crc",93957348434272,93957348434375],["Cr_z_deflateEnd",93957348435216,93957348435471],["fill_window",93957348435712,93957348437077],["Cr_z_deflateSetHeader",93957348437344,93957348437448],["flush_pending",93957348440816,93957348440922],["deflate_huff",93957348442624,93957348443421],["Cr_z_deflate_read_buf",93957348444816,93957348444944],["deflate_fast",93957348445040,93957348446555],["longest_match",93957348448560,93957348449292],["Cr_z__tr_init",93957348451264,93957348451883],["authdes_create",139871564478896,139871564479044],["clnt_perror",139871564482016,139871564482048],["clnt_pcreateerror",139871564482336,139871564482368],["__libc_clntudp_bufcreate",139871564487216,139871564487951],["ctan",139871565483920,139871565484843],["nan",139871565491248,139871565491257],["log1p",139871565491600,139871565491657],["log",139871565492192,139871565492249],["exp2",139871565492560,139871565493122],["__acoshf_finite",139871565493856,139871565494069],["__atan2f_finite",139871565494688,139871565495293],["__coshf_finite",139871565495600,139871565495897],["v8::Shell::RealmCurrent(v8::FunctionCallbackInfo<v8::Value> const&)",93957335245872,93957335246042],["v8::Shell::RealmCreate(v8::FunctionCallbackInfo<v8::Value> const&)",93957335249232,93957335249249],["v8::Shell::RealmDetachGlobal(v8::FunctionCallbackInfo<v8::Value> const&)",93957335249664,93957335249881],["v8::Shell::RealmSwitch(v8::FunctionCallbackInfo<v8::Value> const&)",93957335250032,93957335250076],["v8::internal::StackGuard::RequestInterrupt(v8::internal::StackGuard::InterruptFlag)",93957336711824,93957336711932],["v8::internal::ThreadManager::~ThreadManager()",93957336715712,93957336715913],["v8::internal::ExternalizeStringExtension::Externalize(v8::FunctionCallbackInfo<v8::Value> const&)",93957336716560,93957336717154],["v8::internal::GCExtension::GetNativeFunctionTemplate(v8::Isolate*, v8::Local<v8::String>)",93957336717392,93957336717434],["v8::internal::(anonymous namespace)::AsyncGC::~AsyncGC()",93957336718496,93957336718545],["non-virtual thunk to v8::internal::(anonymous namespace)::AsyncGC::~AsyncGC()",93957336718800,93957336718838],["v8::internal::IgnitionStatisticsExtension::GetNativeFunctionTemplate(v8::Isolate*, v8::Local<v8::String>)",93957336718912,93957336718954],["v8::internal::StatisticsExtension::GetNativeFunctionTemplate(v8::Isolate*, v8::Local<v8::String>)",93957336719024,93957336719066],["v8::internal::CpuSampler::SampleStack(v8::RegisterState const&)",93957339616368,93957339616737],["v8::internal::HeapProfiler::AllocationEvent(unsigned long, int)",93957339620992,93957339621013],["v8::internal::HeapSnapshot::HeapSnapshot(v8::internal::HeapProfiler*, bool)",93957339624720,93957339624921],["v8::internal::HeapObjectsMap::FindOrAddEntry(unsigned long, unsigned int, bool)",93957339628208,93957339628807],["v8::internal::V8HeapExplorer::AllocateEntry(void*)",93957339631344,93957339631354],["v8::internal::V8HeapExplorer::AddEntry(v8::internal::HeapObject, v8::internal::HeapEntry::Type, char const*)",93957339633616,93957339633730],["v8::internal::V8HeapExplorer::ExtractReferences(v8::internal::HeapEntry*, v8::internal::HeapObject)",93957339636480,93957339637634],["v8::internal::V8HeapExplorer::ExtractStringReferences(v8::internal::HeapEntry*, v8::internal::String)",93957339639440,93957339639689],["v8::internal::V8HeapExplorer::ExtractScriptReferences(v8::internal::HeapEntry*, v8::internal::Script)",93957339640752,93957339640936],["v8::internal::V8HeapExplorer::ExtractAccessorPairReferences(v8::internal::HeapEntry*, v8::internal::AccessorPair)",93957339641152,93957339641249],["v8::internal::V8HeapExplorer::ExtractFeedbackCellReferences(v8::internal::HeapEntry*, v8::internal::FeedbackCell)",93957339641520,93957339641607],["v8::internal::V8HeapExplorer::ExtractAllocationSiteReferences(v8::internal::HeapEntry*, v8::internal::AllocationSite)",93957339641744,93957339641896],["v8::internal::V8HeapExplorer::ExtractDescriptorArrayReferences(v8::internal::HeapEntry*, v8::internal::DescriptorArray)",93957339641968,93957339642197],["void v8::internal::V8HeapExplorer::ExtractWeakArrayReferences<v8::internal::WeakArrayList>(int, v8::internal::HeapEntry*, v8::internal::WeakArrayList)",93957339642384,93957339642560],["v8::internal::V8HeapExplorer::ExtractEphemeronHashTableReferences(v8::internal::HeapEntry*, v8::internal::EphemeronHashTable)",93957339643264,93957339644068],["v8::internal::V8HeapExplorer::SetInternalReference(v8::internal::HeapEntry*, char const*, v8::internal::Object, int)",93957339644224,93957339644785],["v8_inspector::String16Builder::toString()",93957342405456,93957342406141],["v8_inspector::StringBufferFrom(v8_inspector::String16)",93957342408944,93957342409080],["v8_inspector::(anonymous namespace)::EmptyStringBuffer::string() const",93957342409536,93957342409555],["v8_inspector::(anonymous namespace)::StringBuffer16::~StringBuffer16()",93957342409712,93957342409744],["v8_inspector::V8ConsoleAgentImpl::V8ConsoleAgentImpl(v8_inspector::V8InspectorSessionImpl*, v8_crdtp::FrontendChannel*, v8_inspector::protocol::DictionaryValue*)",93957342409840,93957342409872],["v8_inspector::V8ConsoleAgentImpl::reportAllMessages()",93957342410016,93957342410244],["v8_inspector::V8ConsoleAgentImpl::clearMessages()",93957342410384,93957342410408],["v8_inspector::V8ConsoleAgentImpl::messageAdded(v8_inspector::V8ConsoleMessage*)",93957342410544,93957342410608],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForArrayOrObjectLiteral(v8::internal::compiler::FeedbackSource const&)",93957344114256,93957344114886],["std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*>, std::__1::__unordered_map_hasher<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*>, v8::internal::compiler::FeedbackSource::Hash, v8::internal::compiler::FeedbackSource::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*>, v8::internal::compiler::FeedbackSource::Equal, v8::internal::compiler::FeedbackSource::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*> > >::find<v8::internal::compiler::FeedbackSource>(v8::internal::compiler::FeedbackSource const&) const",93957344130608,93957344131069],["v8::internal::compiler::JSInliningHeuristic::~JSInliningHeuristic()",93957344153760,93957344153814],["v8::internal::compiler::JSIntrinsicLowering::Reduce(v8::internal::compiler::Node*)",93957344173744,93957344174281],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncGeneratorAwaitCaught(v8::internal::compiler::Node*)",93957344177312,93957344177495],["v8::internal::compiler::JSIntrinsicLowering::ReduceIsSmi(v8::internal::compiler::Node*)",93957344179856,93957344179945],["v8::internal::compiler::JSIntrinsicLowering::Change(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344181424,93957344181859],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSGetSuperConstructor(v8::internal::compiler::Node*)",93957344185776,93957344186816],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSLoadGlobal(v8::internal::compiler::Node*)",93957344195504,93957344196066],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSStoreNamed(v8::internal::compiler::Node*)",93957344198576,93957344198888],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSStoreNamedOwn(v8::internal::compiler::Node*)",93957344199856,93957344200168],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSToString(v8::internal::compiler::Node*)",93957344201232,93957344201837],["v8::internal::compiler::JSNativeContextSpecialization::InferHasInPrototypeChain(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::HeapObjectRef const&)",93957344205200,93957344206439],["v8::internal::compiler::JSNativeContextSpecialization::InferMaps(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> >*) const",93957344221584,93957344223354],["v8::internal::compiler::JSNativeContextSpecialization::ReduceElementAccessOnString(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::KeyedAccessMode const&)",93957344224288,93957344224928],["v8::internal::compiler::JSNativeContextSpecialization::ReduceElementLoadFromHeapConstant(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::AccessMode, v8::internal::KeyedAccessLoadMode)",93957344233056,93957344235121],["v8::internal::compiler::JSNativeContextSpecialization::ReduceSoftDeoptimize(v8::internal::compiler::Node*, v8::internal::DeoptimizeReason)",93957344244240,93957344244780],["v8::internal::compiler::JSNativeContextSpecialization::InlinePropertyGetterCall(v8::internal::compiler::Node*, v8::internal::ConvertReceiverMode, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::ZoneVector<v8::internal::compiler::Node*>*, v8::internal::compiler::PropertyAccessInfo const&)",93957344246400,93957344247932],["v8::internal::compiler::JSNativeContextSpecialization::InlinePropertySetterCall(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::ZoneVector<v8::internal::compiler::Node*>*, v8::internal::compiler::PropertyAccessInfo const&)",93957344249200,93957344250488],["v8::internal::compiler::JSNativeContextSpecialization::BuildPropertyTest(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::PropertyAccessInfo const&)",93957344251168,93957344251382],["v8::internal::compiler::JSNativeContextSpecialization::BuildExtendPropertiesBackingStore(v8::internal::compiler::MapRef const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344254800,93957344259124],["v8::internal::compiler::JSNativeContextSpecialization::reducer_name() const",93957344259344,93957344259357],["v8::internal::compiler::js_node_wrapper_utils::UndefinedConstant(v8::internal::compiler::JSGraph*)",93957344260848,93957344260858],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::CallFrequency const&)",93957344261120,93957344261157],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::CreateCollectionIteratorParameters const&)",93957344261504,93957344261655],["v8::internal::compiler::hash_value(v8::internal::compiler::CreateLiteralParameters const&)",93957344261888,93957344262041],["v8::internal::compiler::JSWasmCallNode::TypeForWasmReturnType(v8::internal::wasm::ValueType const&)",93957344262176,93957344262221],["v8::internal::compiler::JSOperatorBuilder::CreateObject()",93957344262336,93957344262350],["v8::internal::compiler::JSOperatorBuilder::HasInPrototypeChain()",93957344262368,93957344262382],["v8::internal::compiler::JSOperatorBuilder::ForInEnumerate()",93957344262400,93957344262414],["v8::internal::compiler::JSOperatorBuilder::AsyncFunctionReject()",93957344262432,93957344262446],["v8::internal::compiler::JSOperatorBuilder::LoadMessage()",93957344262464,93957344262478],["std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, unsigned long) const",93957346692880,93957346693505],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, tm*, char, char) const",93957346711152,93957346712809],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__get_percent(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >&, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, unsigned int&, std::__1::ctype<wchar_t> const&) const",93957346718768,93957346719111],["std::__1::moneypunct<char, false>::do_neg_format() const",93957346720672,93957346720683],["std::__1::__money_get<char>::__gather_info(bool, std::__1::locale const&, std::__1::money_base::pattern&, char&, char&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, int&)",93957346728096,93957346728627],["std::__1::__money_get<wchar_t>::__gather_info(bool, std::__1::locale const&, std::__1::money_base::pattern&, wchar_t&, wchar_t&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, int&)",93957346735952,93957346736483],["std::__1::money_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, bool, std::__1::ios_base&, char, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const",93957346740064,93957346741334],["std::__1::money_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, bool, std::__1::ios_base&, wchar_t, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&) const",93957346744928,93957346745997],["std::__1::messages<char>::do_close(long) const",93957346746400,93957346746422],["std::__1::back_insert_iterator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > std::__1::__widen_from_utf8<32ul>::operator()<std::__1::back_insert_iterator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > > >(std::__1::back_insert_iterator<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > >, char const*, char const*) const",93957346747072,93957346747374],["std::__1::locale::__imp::~__imp()",93957346756064,93957346756250],["std::__1::locale::__imp::make_global()",93957346756288,93957346756435],["std::__1::locale::locale(std::__1::locale const&)",93957346756576,93957346756594],["std::__1::locale::operator=(std::__1::locale const&)",93957346756656,93957346756719],["std::__1::locale::use_facet(std::__1::locale::id&) const",93957346756864,93957346757000],["std::__1::ctype<wchar_t>::do_is(unsigned short, wchar_t) const",93957346757040,93957346757152],["std::__terminate(void (*)())",93957346793760,93957346793828],["__gxx_personality_v0",93957346793856,93957346794291],["__cxxabiv1::call_terminate(bool, _Unwind_Exception*)",93957346795984,93957346796024],["__cxxabiv1::readEncodedPointer(unsigned char const**, unsigned char)",93957346796592,93957346796866],["__cxa_pure_virtual",93957346797152,93957346797170],["__cxxabiv1::__calloc_with_fallback(unsigned long, unsigned long)",93957346797488,93957346797774],["__cxxabiv1::__class_type_info::can_catch(__cxxabiv1::__shim_type_info const*, void*&) const",93957346798032,93957346798235],["__cxxabiv1::__si_class_type_info::has_unambiguous_public_base(__cxxabiv1::__dynamic_cast_info*, void*, int) const",93957346798320,93957346798402],["__dynamic_cast",93957346798720,93957346798969],["__cxxabiv1::__si_class_type_info::search_below_dst(__cxxabiv1::__dynamic_cast_info*, void const*, int, bool) const",93957346799856,93957346800156],["__cxxabiv1::__vmi_class_type_info::search_above_dst(__cxxabiv1::__dynamic_cast_info*, void const*, void const*, int, bool) const",93957346800336,93957346800923],["__cxxabiv1::__class_type_info::search_above_dst(__cxxabiv1::__dynamic_cast_info*, void const*, void const*, int, bool) const",93957346801152,93957346801304],["std::bad_alloc::bad_alloc()",93957346801328,93957346801344],["std::logic_error::~logic_error()",93957346801360,93957346801421],["std::range_error::~range_error()",93957346801504,93957346801565],["std::bad_cast::bad_cast()",93957346801648,93957346801664],["std::bad_typeid::bad_typeid()",93957346801680,93957346801696],["__cxa_guard_acquire",93957346801712,93957346801888],["__cxa_guard_abort",93957346802016,93957346802129],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::~AbstractManglingParser()",93957346803872,93957346804058],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseNumber(bool)",93957346806544,93957346806709],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseType()",93957346806896,93957346811580],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseTemplateArg()",93957346815424,93957346816054],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::FunctionEncoding, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Qualifiers&, (anonymous namespace)::itanium_demangle::FunctionRefQual&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Qualifiers&, (anonymous namespace)::itanium_demangle::FunctionRefQual&)",93957346816208,93957346816431],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [9], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [9], (anonymous namespace)::itanium_demangle::Node*&)",93957346816608,93957346816769],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [19], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [19], (anonymous namespace)::itanium_demangle::Node*&)",93957346816960,93957346817121],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [27], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [27], (anonymous namespace)::itanium_demangle::Node*&)",93957346817616,93957346817777],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [41], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [41], (anonymous namespace)::itanium_demangle::Node*&)",93957346817952,93957346818113],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [22], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [22], (anonymous namespace)::itanium_demangle::Node*&)",93957346818304,93957346818465],["(anonymous namespace)::itanium_demangle::CtorVtableSpecialName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346818656,93957346818928],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseTemplateArgs(bool)",93957346819824,93957346821503],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseTemplateParam()",93957346821664,93957346822375],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseAbiTags((anonymous namespace)::itanium_demangle::Node*)",93957346822688,93957346822928],["(anonymous namespace)::itanium_demangle::NameType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346824656,93957346824772],["(anonymous namespace)::itanium_demangle::NestedName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346824800,93957346824977],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parsePositiveInteger(unsigned long*)",93957346825008,93957346825125],["(anonymous namespace)::itanium_demangle::ForwardTemplateReference::hasRHSComponentSlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346825296,93957346825369],["(anonymous namespace)::itanium_demangle::ForwardTemplateReference::hasFunctionSlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346825456,93957346825530],["(anonymous namespace)::itanium_demangle::ForwardTemplateReference::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346825600,93957346825652],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseExpr()",93957346825728,93957346830324],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseExprPrimary()",93957346830544,93957346832649],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseFoldExpr()",93957346833328,93957346834529],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parsePrefixExpr((anonymous namespace)::itanium_demangle::StringView)",93957346834768,93957346834940],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::CallExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&&)",93957346835120,93957346835269],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::DeleteExpr, (anonymous namespace)::itanium_demangle::Node*&, bool&, bool>((anonymous namespace)::itanium_demangle::Node*&, bool&, bool&&)",93957346836080,93957346836248],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseUnresolvedName()",93957346836432,93957346838349],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::MemberExpr, (anonymous namespace)::itanium_demangle::Node*&, char const (&) [2], (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, char const (&) [2], (anonymous namespace)::itanium_demangle::Node*&)",93957346838544,93957346838716],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseBracedExpr()",93957346838880,93957346839529],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::PostfixExpr, (anonymous namespace)::itanium_demangle::Node*&, char const (&) [3]>((anonymous namespace)::itanium_demangle::Node*&, char const (&) [3])",93957346839696,93957346839870],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::EnclosingExpr, char const (&) [11], (anonymous namespace)::itanium_demangle::Node*&, char const (&) [2]>(char const (&) [11], (anonymous namespace)::itanium_demangle::Node*&, char const (&) [2])",93957346840992,93957346841177],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::CastExpr, char const (&) [17], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [17], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346841360,93957346841532],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::ParameterPackExpansion, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&)",93957346841712,93957346841849],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::EnclosingExpr, char const (&) [12], (anonymous namespace)::itanium_demangle::Node*&, char const (&) [2]>(char const (&) [12], (anonymous namespace)::itanium_demangle::Node*&, char const (&) [2])",93957346842000,93957346842185],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::InitListExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&&)",93957346842336,93957346842485],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseIntegerLiteral((anonymous namespace)::itanium_demangle::StringView)",93957346842640,93957346842867],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::IntegerCastExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&)",93957346843024,93957346843173],["(anonymous namespace)::itanium_demangle::BoolExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346843872,93957346844020],["(anonymous namespace)::itanium_demangle::FloatLiteralImpl<double>::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346844560,93957346845367],["(anonymous namespace)::itanium_demangle::PostfixExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346846336,93957346846647],["(anonymous namespace)::itanium_demangle::FoldExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346846848,93957346848588],["(anonymous namespace)::itanium_demangle::BinaryExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346849024,93957346849758],["(anonymous namespace)::itanium_demangle::CastExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346850080,93957346850432],["(anonymous namespace)::itanium_demangle::NodeArray::printWithComma((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346850640,93957346850904],["(anonymous namespace)::itanium_demangle::ConversionExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346851136,93957346851418],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseBaseUnresolvedName()",93957346852016,93957346852890],["(anonymous namespace)::itanium_demangle::DtorName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346856176,93957346856279],["(anonymous namespace)::itanium_demangle::LiteralOperator::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346856736,93957346856898],["(anonymous namespace)::itanium_demangle::ArraySubscriptExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346857312,93957346857613],["(anonymous namespace)::itanium_demangle::NewExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346858768,93957346859479],["(anonymous namespace)::itanium_demangle::NodeArrayNode::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346860416,93957346860430],["(anonymous namespace)::itanium_demangle::CtorDtorName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346861360,93957346861558],["(anonymous namespace)::itanium_demangle::ClosureTypeName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346862208,93957346862563],["(anonymous namespace)::itanium_demangle::SpecialSubstitution::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346863120,93957346863756],["(anonymous namespace)::itanium_demangle::ParameterPack::hasFunctionSlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346863952,93957346864031],["(anonymous namespace)::itanium_demangle::TemplateArgs::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346864240,93957346864494],["(anonymous namespace)::itanium_demangle::FunctionEncoding::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346864960,93957346865149],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseQualifiedType()",93957346867712,93957346868688],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::ReferenceType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::ReferenceKind>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::ReferenceKind&&)",93957346870112,93957346870277],["(anonymous namespace)::itanium_demangle::DynamicExceptionSpec::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346870864,93957346871045],["(anonymous namespace)::itanium_demangle::VendorExtQualType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346872240,93957346872473],["(anonymous namespace)::itanium_demangle::QualType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346872576,93957346872872],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::ArrayType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeOrString&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeOrString&)",93957346873568,93957346873717],["(anonymous namespace)::itanium_demangle::PointerToMemberType::hasRHSComponentSlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346874336,93957346874367],["(anonymous namespace)::itanium_demangle::PointerType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346875120,93957346875788],["(anonymous namespace)::itanium_demangle::PostfixQualifiedType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346876784,93957346876913],["v8::base::bits::SignedMod32(int, int)",93957346877056,93957346877079],["v8::base::BoundedPageAllocator::AllocatePages(void*, unsigned long, unsigned long, v8::PageAllocator::Permission)",93957346877392,93957346877585],["v8::base::BoundedPageAllocator::ReleasePages(void*, unsigned long, unsigned long)",93957346878192,93957346878354],["v8::base::BoundedPageAllocator::~BoundedPageAllocator()",93957346878480,93957346878531],["v8::base::MagicNumbersForDivision<unsigned int> v8::base::SignedDivisionByConstant<unsigned int>(unsigned int)",93957346879136,93957346879306],["v8::base::hash_value(unsigned int)",93957346879824,93957346879869],["v8::base::ieee754::log(double)",93957346881040,93957346881691],["v8::base::ieee754::atan(double)",93957346883520,93957346884062],["v8::base::ieee754::exp(double)",93957346890864,93957346891458],["v8::base::ieee754::expm1(double)",93957346892496,93957346893301],["v8::base::ieee754::(anonymous namespace)::__kernel_tan(double, double, int)",93957346894848,93957346895502],["v8::base::ieee754::tanh(double)",93957346898320,93957346898585],["v8::base::PageAllocator::PageAllocator()",93957346899024,93957346899068],["v8::base::PageAllocator::AllocateSharedPages(unsigned long, void const*)",93957346899136,93957346899294],["v8::base::PageAllocator::DiscardSystemPages(void*, unsigned long)",93957346899376,93957346899392],["v8::base::SharedMemoryMapping::~SharedMemoryMapping()",93957346899600,93957346899639],["v8::base::ConditionVariable::Wait(v8::base::Mutex*)",93957346899808,93957346899818],["v8::base::RecursiveMutex::Lock()",93957346899984,93957346899994],["v8::base::SharedMutex::LockShared()",93957346900112,93957346900122],["v8::base::Semaphore::~Semaphore()",93957346900176,93957346900186],["v8::base::TimeDelta::InMillisecondsF() const",93957346900336,93957346900383],["v8::base::Time::ToTimespec() const",93957346900640,93957346900737],["v8::base::ThreadTicks::Now()",93957346901344,93957346901468],["v8::base::RegionAllocator::FreeListRemoveRegion(v8::base::RegionAllocator::Region*)",93957346902304,93957346902517],["v8::base::RegionAllocator::AllocateRegionAt(unsigned long, unsigned long, v8::base::RegionAllocator::RegionState)",93957346903344,93957346903564],["v8::base::SysInfo::AmountOfVirtualMemory()",93957346904272,93957346904323],["v8::base::RandomNumberGenerator::Next(int)",93957346905312,93957346905374],["v8::base::RandomNumberGenerator::NextSample(unsigned long, unsigned long)",93957346905632,93957346906931],["v8::base::OS::Initialize(bool, char const*)",93957346908896,93957346908916],["v8::base::OS::Allocate(void*, unsigned long, unsigned long, v8::base::OS::MemoryPermission)",93957346909520,93957346909973],["v8::base::OS::DiscardSystemPages(void*, unsigned long)",93957346910224,93957346910311],["v8::base::OS::DebugBreak()",93957346910416,93957346910423],["v8::base::PosixMemoryMappedFile::~PosixMemoryMappedFile()",93957346911104,93957346911132],["v8::base::OS::GetUserTime(unsigned int*, unsigned int*)",93957346911232,93957346911315],["v8::base::OS::FOpen(char const*, char const*)",93957346911472,93957346911558],["v8::base::OS::Print(char const*, ...)",93957346911616,93957346911776],["v8::base::OS::PrintError(char const*, ...)",93957346911984,93957346912144],["v8::base::OS::StrNCpy(char*, int, char const*, unsigned long)",93957346912448,93957346912465],["v8::base::ThreadEntry(void*)",93957346912960,93957346913047],["v8::base::Thread::GetThreadLocal(int)",93957346913136,93957346913146],["v8::base::OS::SignalCodeMovingGC()",93957346914016,93957346914191],["v8::base::PosixDefaultTimezoneCache::LocalTimeOffset(double, bool)",93957346914800,93957346914873],["v8::platform::DefaultPlatform::PumpMessageLoop(v8::Isolate*, v8::platform::MessageLoopBehavior)",93957346915248,93957346915525],["v8::platform::DefaultPlatform::~DefaultPlatform()",93957346916784,93957346917074],["v8::platform::DefaultPlatform::MonotonicallyIncreasingTime()",93957346917952,93957346917988],["std::__1::__shared_ptr_emplace<v8::platform::DefaultForegroundTaskRunner, std::__1::allocator<v8::platform::DefaultForegroundTaskRunner> >::~__shared_ptr_emplace()",93957346918256,93957346918294],["v8::base::debug::(anonymous namespace)::PrintBacktraceOutputHandler::HandleOutput(char const*)",93957346921280,93957346921319],["v8::platform::DefaultJobHandle::DefaultJobHandle(std::__1::shared_ptr<v8::platform::DefaultJobState>)",93957346923184,93957346923215],["v8::platform::DefaultJobState::JobDelegate::ShouldYield()",93957346923888,93957346923903],["v8::platform::DefaultForegroundTaskRunner::RunTaskScope::RunTaskScope(std::__1::shared_ptr<v8::platform::DefaultForegroundTaskRunner>)",93957346924384,93957346924474],["v8::platform::DefaultForegroundTaskRunner::PostNonNestableDelayedTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, double)",93957346926512,93957346926584],["v8::platform::DefaultForegroundTaskRunner::~DefaultForegroundTaskRunner()",93957346929376,93957346929745],["v8::platform::DefaultWorkerThreadsTaskRunner::~DefaultWorkerThreadsTaskRunner()",93957346932384,93957346932532],["v8::platform::DelayedTaskQueue::DelayedTaskQueue(double (*)())",93957346933264,93957346933346],["v8::platform::tracing::TraceBufferRingBuffer::GetEventByHandle(unsigned long)",93957346935392,93957346935546],["v8::platform::tracing::TraceConfig::CreateDefaultTraceConfig()",93957346939680,93957346939773],["v8::platform::tracing::JSONTraceWriter::~JSONTraceWriter()",93957346943744,93957346943798],["v8::platform::tracing::TracingController::CurrentTimestampMicroseconds()",93957346946288,93957346946298],["v8::platform::tracing::TracingController::RemoveTraceStateObserver(v8::TracingController::TraceStateObserver*)",93957346947744,93957346947882],["icu_68::ICUCollatorFactory::~ICUCollatorFactory()",93957346949584,93957346949594],["icu_68::Calendar::Calendar(icu_68::TimeZone*, icu_68::Locale const&, UErrorCode&)",93957346951664,93957346951872],["icu_68::getCalendarTypeForLocale(char const*)",93957346954160,93957346954830],["icu_68::Calendar::isEquivalentTo(icu_68::Calendar const&) const",93957346955824,93957346956031],["icu_68::Calendar::setRelatedYear(int)",93957346957840,93957346958426],["icu_68::Calendar::getFirstDayOfWeek() const",93957346961072,93957346961084],["icu_68::Calendar::getImmediatePreviousZoneTransition(double, double*, UErrorCode&) const",93957346968192,93957346968490],["icu_68::Calendar::getMaximum(UCalendarDateFields) const",93957346971728,93957346971750],["icu_68::Calendar::computeTime(UErrorCode&)",93957346972864,93957346973592],["icu_68::Calendar::getActualHelper(UCalendarDateFields, int, int, UErrorCode&) const",93957346977584,93957346978498],["calendar_cleanup()",93957346983344,93957346983389],["icu_68::LocaleCacheKey<icu_68::SharedCalendar>::writeDescription(char*, int) const",93957346984096,93957346984138],["icu_68::BuddhistCalendar::handleComputeMonthStart(int, int, signed char) const",93957346984416,93957346984426],["icu_68::ChineseCalendar::getChineseCalZoneAstroCalc() const",93957346985200,93957346985431],["icu_68::ChineseCalendar::handleGetMonthLength(int, int) const",93957346985872,93957346985940],["icu_68::ChineseCalendar::newMoonNear(double, signed char) const",93957346987568,93957346987987],["icu_68::CECalendar::inDaylightTime(UErrorCode&) const",93957346989856,93957346989925],["icu_68::CalendarAstronomer::getSunLongitude()",93957346991040,93957346991139],["icu_68::CalendarAstronomer::getMoonTime(icu_68::CalendarAstronomer::MoonAge const&, signed char)",93957346993184,93957346993238],["icu_68::Collator::createInstance(icu_68::Locale const&, UErrorCode&)",93957346994384,93957346995934],["icu_68::isAvailableLocaleListInitialized(UErrorCode&)",93957346996352,93957346997032],["icu_68::WholeStringBreakIterator::refreshInputText(UText*, UErrorCode&)",93957346997344,93957346997366],["icu_68::ICUCollatorService::handleDefault(icu_68::ICUServiceKey const&, icu_68::UnicodeString*, UErrorCode&) const",93957346997824,93957346998165],["icu_68::CollationRoot::getRoot(UErrorCode&)",93957346999296,93957346999411],["icu_68::CollationCacheEntry::~CollationCacheEntry()",93957347000304,93957347000382],["icu_68::CollationSettings::aliasReordering(icu_68::CollationData const&, int const*, int, unsigned int const*, int, unsigned char const*, UErrorCode&)",93957347001936,93957347002275],["icu_68::CollationData::getIndirectCE32(unsigned int) const",93957347004832,93957347004885],["icu_68::Collation::incTwoBytePrimaryByOffset(unsigned int, signed char, int)",93957347007952,93957347008099],["icu_68::CollationSettings* icu_68::SharedObject::copyOnWrite<icu_68::CollationSettings>(icu_68::CollationSettings const*&)",93957347011440,93957347011538],["icu_68::CopticCalendar::getType() const",93957347021776,93957347021789],["icu_68::CECalendar::CECalendar(icu_68::CECalendar const&)",93957347022640,93957347022671],["icu_68::CurrencyUnit::operator=(icu_68::CurrencyUnit const&)",93957347023632,93957347023682],["icu_68::DangiCalendar::getType() const",93957347024816,93957347024829],["icu_68::DateFormat::DateFormat()",93957347025168,93957347025226],["icu_68::DateFormat::format(icu_68::Calendar&, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347026336,93957347026360],["icu_68::DateFormat::getBestPattern(icu_68::Locale const&, icu_68::UnicodeString const&, UErrorCode&)",93957347027392,93957347027842],["icu_68::DateFormat::adoptTimeZone(icu_68::TimeZone*)",93957347028336,93957347028360],["icu_68::DateFormat::getContext(UDisplayContextType, UErrorCode&) const",93957347028784,93957347028818],["icu_68::LocaleCacheKey<icu_68::DateFmtBestPattern>::~LocaleCacheKey()",93957347029664,93957347029714],["icu_68::DecimalFormat::setAttribute(UNumberFormatAttribute, int, UErrorCode&)",93957347032304,93957347032955],["icu_68::DecimalFormat::setParseCaseSensitive(signed char)",93957347033520,93957347033587],["icu_68::DecimalFormat::DecimalFormat(icu_68::UnicodeString const&, icu_68::DecimalFormatSymbols const&, UErrorCode&)",93957347034464,93957347034740],["icu_68::DecimalFormat::format(double, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347037568,93957347038171],["icu_68::DecimalFormat::format(icu_68::number::impl::DecimalQuantity const&, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347040304,93957347040760],["icu_68::DecimalFormat::adoptCurrencyPluralInfo(icu_68::CurrencyPluralInfo*)",93957347042752,93957347042853],["icu_68::DecimalFormat::setMultiplier(int)",93957347043904,93957347044042],["icu_68::DecimalFormat::setPadCharacter(icu_68::UnicodeString const&)",93957347044560,93957347044867],["icu_68::DecimalFormat::setExponentSignAlwaysShown(signed char)",93957347045280,93957347045341],["icu_68::DecimalFormat::toLocalizedPattern(icu_68::UnicodeString&) const",93957347046608,93957347046823],["icu_68::DecimalFormat::setMinimumFractionDigits(int)",93957347047408,93957347047479],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::~CurrencyPluralInfoAffixProvider()",93957347049216,93957347049679],["icu_68::CurrencyPluralInfo::CurrencyPluralInfo(icu_68::Locale const&, UErrorCode&)",93957347050144,93957347050175],["icu_68::CurrencyPluralInfo::getCurrencyPluralPattern(icu_68::UnicodeString const&, icu_68::UnicodeString&) const",93957347051408,93957347051687],["icu_68::DecimalFormatSymbols::DecimalFormatSymbols(icu_68::Locale const&, icu_68::NumberingSystem const&, UErrorCode&)",93957347057776,93957347058427],["icu_68::DecimalFormatSymbols::getPatternForCurrencySpacing(UCurrencySpacing, signed char, UErrorCode&) const",93957347062960,93957347063013],["icu_68::DateFormatSymbols::getDynamicClassID() const",93957347065664,93957347065677],["icu_68::DateFormatSymbols::createZoneStrings(icu_68::UnicodeString const* const*)",93957347108064,93957347108780],["icu_68::DateFormatSymbols::getMonths(int&, icu_68::DateFormatSymbols::DtContextType, icu_68::DateFormatSymbols::DtWidthType) const",93957347113552,93957347113690],["icu_68::DateFormatSymbols::isNumericPatternChar(char16_t, int)",93957347114256,93957347114353],["icu_68::Hashtable::put(icu_68::UnicodeString const&, void*, UErrorCode&)",93957347120272,93957347120358],["icu_68::(anonymous namespace)::CalendarDataSink::deleteUnicodeStringArray(void*)",93957347123808,93957347123890],["icu_68::FormattedDateInterval::~FormattedDateInterval()",93957347124288,93957347124352],["icu_68::DateIntervalFormat::~DateIntervalFormat()",93957347125776,93957347126220],["icu_68::DateIntervalFormat::fallbackFormat(icu_68::Calendar&, icu_68::Calendar&, signed char, icu_68::UnicodeString&, signed char&, icu_68::FieldPositionHandler&, UErrorCode&) const",93957347130224,93957347131466],["icu_68::DateIntervalFormat::normalizeHourMetacharacters(icu_68::UnicodeString const&) const",93957347134544,93957347135942],["icu_68::DateIntervalFormat::splitPatternInto2Part(icu_68::UnicodeString const&)",93957347140336,93957347140689],["icu_68::DateIntervalInfo::setIntervalPatternInternally(icu_68::UnicodeString const&, UCalendarDateFields, icu_68::UnicodeString const&, UErrorCode&)",93957347146432,93957347146830],["icu_68::DateIntervalInfo::getIntervalPattern(icu_68::UnicodeString const&, UCalendarDateFields, icu_68::UnicodeString&, UErrorCode&) const",93957347148416,93957347148544],["icu_68::dtitvinfHashTableValueComparator(UElement, UElement)",93957347150800,93957347150964],["icu_68::DateTimePatternGenerator::createInstanceNoStdPat(icu_68::Locale const&, UErrorCode&)",93957347152848,93957347152965],["icu_68::DateTimePatternGenerator::~DateTimePatternGenerator()",93957347158960,93957347158988],["icu_68::DateTimePatternGenerator::getAllowedHourFormats(icu_68::Locale const&, UErrorCode&)",93957347161872,93957347162712],["icu_68::DateTimePatternGenerator::getCalendarTypeToUse(icu_68::Locale const&, icu_68::CharString&, UErrorCode&)",93957347167216,93957347167571],["icu_68::DateTimePatternGenerator::getBestPattern(icu_68::UnicodeString const&, UErrorCode&)",93957347168640,93957347168669],["icu_68::PatternMap::getPatternFromBasePattern(icu_68::UnicodeString const&, signed char&) const",93957347176560,93957347176874],["icu_68::PatternMap::getDuplicateElem(icu_68::UnicodeString const&, icu_68::PtnSkeleton const&, icu_68::PtnElem*)",93957347179600,93957347180012],["icu_68::DateTimePatternGenerator::AppendItemFormatsSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347182176,93957347182608],["icu_68::EthiopicCalendar::getType() const",93957347186288,93957347186319],["icu_68::Formattable::getDynamicClassID() const",93957347187184,93957347187197],["icu_68::Formattable::dispose()",93957347188528,93957347188779],["icu_68::Formattable::setDouble(double)",93957347189440,93957347189483],["icu_68::Formattable::adoptDecimalQuantity(icu_68::number::impl::DecimalQuantity*)",93957347189968,93957347190090],["icu_68::Format::setLocaleIDs(char const*, char const*)",93957347190560,93957347190602],["icu_68::FormattedValueFieldPositionIteratorImpl::getHandler(UErrorCode&)",93957347191360,93957347191388],["icu_68::FormattedValueStringBuilderImpl::toTempString(UErrorCode&) const",93957347193408,93957347193436],["icu_68::FormattedStringBuilder::FormattedStringBuilder()",93957347195808,93957347195828],["icu_68::FormattedStringBuilder::codePointAt(int) const",93957347196816,93957347196991],["icu_68::FormattedStringBuilder::prepareForInsertHelper(int, int, UErrorCode&)",93957347199184,93957347199916],["icu_68::ConstrainedFieldPosition::constrainField(int, int)",93957347200432,93957347200448],["icu_68::FieldPositionOnlyHandler::setAcceptFirstOnly(signed char)",93957347200752,93957347200762],["icu_68::FieldPositionIterator::~FieldPositionIterator()",93957347201568,93957347201631],["icu_68::GregorianCalendar::GregorianCalendar(icu_68::GregorianCalendar const&)",93957347202448,93957347202567],["icu_68::GregorianCalendar::handleGetYearLength(int) const",93957347204416,93957347204515],["icu_68::GregorianCalendar::handleGetExtendedYear()",93957347206176,93957347206318],["icu_68::ClockMath::floorDivide(long, long)",93957347206896,93957347206966],["icu_68::HebrewCalendar::HebrewCalendar(icu_68::Locale const&, UErrorCode&)",93957347208432,93957347208512],["icu_68::HebrewCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347209904,93957347209931],["icu_68::initializeSystemDefaultCentury()",93957347211792,93957347212129],["icu_68::IndianCalendar::handleGetYearLength(int) const",93957347212544,93957347212625],["icu_68::IslamicCalendar::clone() const",93957347214096,93957347214170],["icu_68::IslamicCalendar::handleGetYearLength(int) const",93957347215536,93957347216028],["icu_68::JapaneseCalendar::JapaneseCalendar(icu_68::Locale const&, UErrorCode&)",93957347217968,93957347218024],["icu_68::JapaneseCalendar::handleComputeFields(int, UErrorCode&)",93957347218736,93957347218858],["icu_68::EraRules::getStartYear(int, UErrorCode&) const",93957347220736,93957347220797],["icu_68::uprv_deleteListFormatInternal(void*)",93957347221504,93957347221569],["icu_68::ListFormatter::~ListFormatter()",93957347223456,93957347223541],["icu_68::(anonymous namespace)::createPatternHandler(char const*, icu_68::UnicodeString const&, icu_68::UnicodeString const&, UErrorCode&)",93957347226288,93957347228791],["icu_68::(anonymous namespace)::ContextualHandler::getEndPattern(icu_68::UnicodeString const&) const",93957347230048,93957347230093],["icu_68::MeasureUnit::getPermille()",93957347230912,93957347230949],["icu_68::MeasureUnit::operator=(icu_68::MeasureUnit&&)",93957347232496,93957347232686],["icu_68::MeasureUnit::setTo(int, int)",93957347233552,93957347233695],["icu_68::Measure::~Measure()",93957347235328,93957347235385],["icu_68::number::impl::AffixUtils::hasCurrencySymbols(icu_68::UnicodeString const&, UErrorCode&)",93957347238272,93957347238588],["icu_68::number::impl::DecimalQuantity::operator=(icu_68::number::impl::DecimalQuantity&&)",93957347239776,93957347239990],["icu_68::number::impl::DecimalQuantity::divideBy(icu_68::number::impl::DecNum const&, UErrorCode&)",93957347241376,93957347241588],["icu_68::number::impl::DecimalQuantity::isNegative() const",93957347243376,93957347243387],["icu_68::number::impl::DecimalQuantity::signum() const",93957347244064,93957347244138],["icu_68::number::impl::DecimalQuantity::setToDouble(double)",93957347245920,93957347246113],["icu_68::number::impl::DecimalQuantity::roundToNickel(int, UNumberFormatRoundingMode, UErrorCode&)",93957347248976,93957347248994],["icu_68::double_conversion::BignumDtoa(double, icu_68::double_conversion::BignumDtoaMode, int, icu_68::double_conversion::Vector<char>, int*, int*)",93957347253712,93957347255494],["icu_68::double_conversion::Bignum::SubtractBignum(icu_68::double_conversion::Bignum const&)",93957347258816,93957347259525],["icu_68::double_conversion::Bignum::Compare(icu_68::double_conversion::Bignum const&, icu_68::double_conversion::Bignum const&)",93957347264368,93957347264552],["bool icu_68::double_conversion::IsHexFloatString<char const*>(char const*, char const*, unsigned short, bool)",93957347275456,93957347276408],["icu_68::double_conversion::ComputeGuess(icu_68::double_conversion::Vector<char const>, int, double*)",93957347282960,93957347284473],["icu_68::number::impl::DecimalFormatProperties::getDefault()",93957347287808,93957347288120],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::grouping(UNumberGroupingStrategy) const &",93957347290736,93957347291052],["icu_68::number::NumberFormatter::withLocale(icu_68::Locale const&)",93957347293216,93957347293649],["icu_68::number::impl::AutoAffixPatternProvider::setTo(icu_68::number::impl::AffixPatternProvider const*, UErrorCode&)",93957347296448,93957347296813],["icu_68::number::impl::MicroProps::~MicroProps()",93957347299360,93957347299543],["icu_68::number::impl::NumberFormatterImpl::format(icu_68::number::impl::UFormattedNumberData*, UErrorCode&) const",93957347302576,93957347303357],["icu_68::number::impl::NumberFormatterImpl::writeIntegerDigits(icu_68::number::impl::MicroProps const&, icu_68::number::impl::DecimalQuantity&, icu_68::FormattedStringBuilder&, int, UErrorCode&)",93957347308336,93957347308706],["icu_68::SingleUnitImpl::getSimpleUnitID() const",93957347310608,93957347310628],["icu_68::MeasureUnit::product(icu_68::MeasureUnit const&, UErrorCode&) const",93957347314000,93957347315111],["icu_68::MeasureUnitImpl* icu_68::MemoryPool<icu_68::MeasureUnitImpl, 8>::create<icu_68::SingleUnitImpl const&, UErrorCode&>(icu_68::SingleUnitImpl const&, UErrorCode&)",93957347318160,93957347318502],["icu_68::number::impl::CompactHandler::~CompactHandler()",93957347322368,93957347322396],["icu_68::number::IntegerWidth::IntegerWidth(short, short, bool)",93957347323696,93957347323716],["icu_68::number::impl::LongNameHandler::simpleFormatsToModifiers(icu_68::UnicodeString const*, icu_68::FormattedStringBuilder::Field, UErrorCode&)",93957347327712,93957347328298],["icu_68::number::impl::MixedUnitLongNameHandler::forMeasureUnit(icu_68::Locale const&, icu_68::MeasureUnit const&, UNumberUnitWidth const&, icu_68::PluralRules const*, icu_68::number::impl::MicroPropsGenerator const*, icu_68::number::impl::MixedUnitLongNameHandler*, UErrorCode&)",93957347330896,93957347331972],["non-virtual thunk to icu_68::number::impl::LongNameHandler::~LongNameHandler()",93957347336096,93957347336356],["icu_68::number::impl::MixedUnitLongNameHandler* icu_68::MemoryPool<icu_68::number::impl::MixedUnitLongNameHandler, 8>::create<>()",93957347337888,93957347338371],["icu_68::number::impl::PropertiesAffixPatternProvider::positiveHasPlusSign() const",93957347343168,93957347343324],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::getString(int) const",93957347344464,93957347344512],["icu_68::number::impl::PropertiesAffixPatternProvider::~PropertiesAffixPatternProvider()",93957347344784,93957347344867],["icu_68::number::impl::CurrencySymbols::getIntlCurrencySymbol(UErrorCode&) const",93957347345760,93957347345822],["icu_68::number::impl::SimpleModifier::SimpleModifier(icu_68::SimpleFormatter const&, icu_68::FormattedStringBuilder::Field, bool, icu_68::number::impl::Modifier::Parameters)",93957347346320,93957347346757],["icu_68::number::impl::SimpleModifier::semanticallyEquivalent(icu_68::number::impl::Modifier const&) const",93957347347200,93957347347408],["icu_68::number::impl::CurrencySpacingEnabledModifier::CurrencySpacingEnabledModifier(icu_68::FormattedStringBuilder const&, icu_68::FormattedStringBuilder const&, bool, bool, icu_68::DecimalFormatSymbols const&, UErrorCode&)",93957347347968,93957347349017],["icu_68::number::impl::SimpleModifier::~SimpleModifier()",93957347351152,93957347351176],["icu_68::number::Scale::Scale(icu_68::number::Scale&&)",93957347351920,93957347351952],["icu_68::number::impl::MultiplierFormatHandler::setAndChain(icu_68::number::Scale const&, icu_68::number::impl::MicroPropsGenerator const*)",93957347352624,93957347352744],["icu_68::number::Notation::compactLong()",93957347353120,93957347353156],["icu_68::number::impl::UFormattedNumberData::~UFormattedNumberData()",93957347353600,93957347353657],["icu_68::number::impl::MutablePatternModifier::setNumberProperties(icu_68::number::impl::Signum, icu_68::StandardPlural::Form)",93957347354928,93957347354946],["icu_68::number::impl::MutablePatternModifier::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347356896,93957347357324],["icu_68::number::impl::MutablePatternModifier::getSymbol(icu_68::number::impl::AffixPatternType) const",93957347358416,93957347358694],["icu_68::number::impl::ImmutablePatternModifier::~ImmutablePatternModifier()",93957347359040,93957347359072],["icu_68::number::impl::ParsedPatternInfo::getString(int) const",93957347360400,93957347360566],["icu_68::number::impl::ParsedPatternInfo::consumePadding(UNumberFormatPadPosition, UErrorCode&)",93957347360896,93957347361131],["icu_68::number::impl::ParsedPatternInfo::~ParsedPatternInfo()",93957347364912,93957347364978],["icu_68::number::impl::ParsedPatternInfo::~ParsedPatternInfo()",93957347374416,93957347374490],["icu_68::number::Precision::minMaxFraction(int, int)",93957347376208,93957347376283],["icu_68::number::Precision::withCurrency(icu_68::CurrencyUnit const&, UErrorCode&) const",93957347376960,93957347377329],["(anonymous namespace)::getDisplayMagnitudeSignificant(icu_68::number::impl::DecimalQuantity const&, int)",93957347378368,93957347378413],["icu_68::number::impl::ScientificHandler::getMultiplier(int) const",93957347379408,93957347379469],["icu_68::number::impl::stem_to_object::roundingMode(icu_68::number::impl::skeleton::StemEnum)",93957347379872,93957347379892],["icu_68::number::impl::GeneratorHelpers::generateSkeleton(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347386608,93957347387480],["icu_68::number::impl::blueprint_helpers::parseIdentifierUnitOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347392384,93957347393528],["icu_68::number::impl::GeneratorHelpers::notation(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347396176,93957347396567],["icu_68::UnicodeString::truncate(int)",93957347398752,93957347398844],["icu_68::number::impl::SymbolsWrapper::doCopyFrom(icu_68::number::impl::SymbolsWrapper const&)",93957347400032,93957347400168],["icu_68::number::impl::SymbolsWrapper::isNumberingSystem() const",93957347400624,93957347400636],["icu_68::number::impl::UsagePrefsHandler::UsagePrefsHandler(icu_68::Locale const&, icu_68::MeasureUnit const&, icu_68::StringPiece, icu_68::number::impl::MicroPropsGenerator const*, UErrorCode&)",93957347401888,93957347402067],["icu_68::units::UnitsRouter::~UnitsRouter()",93957347404320,93957347404645],["icu_68::number::impl::DecNum::setTo(char const*, UErrorCode&)",93957347406480,93957347406654],["uprv_decContextDefault_68",93957347407472,93957347407575],["decDivideOp(decNumber*, decNumber const*, decNumber const*, decContext*, unsigned char, unsigned int*)",93957347411488,93957347415114],["decShiftToLeast(unsigned char*, int, int)",93957347420384,93957347420991],["icu_68::SharedNumberFormat::~SharedNumberFormat()",93957347423792,93957347423840],["icu_68::NumberFormat::format(long, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347424576,93957347424601],["icu_68::NumberFormat::parse(icu_68::UnicodeString const&, icu_68::Formattable&, UErrorCode&) const",93957347426160,93957347426247],["icu_68::NumberFormat::createPercentInstance(icu_68::Locale const&, UErrorCode&)",93957347426992,93957347427010],["icu_68::NumberFormat::setMinimumIntegerDigits(int)",93957347427728,93957347427785],["icu_68::NumberFormat::getContext(UDisplayContextType, UErrorCode&) const",93957347428176,93957347428210],["icu_68::ICUNumberFormatService::handleDefault(icu_68::ICUServiceKey const&, icu_68::UnicodeString*, UErrorCode&) const",93957347431104,93957347431336],["icu_68::numparse::impl::AffixMatcherWarehouse::operator=(icu_68::numparse::impl::AffixMatcherWarehouse&&)",93957347432512,93957347433100],["icu_68::numparse::impl::NumberParserImpl::{unnamed type#1}::~NumberParserImpl()",93957347439104,93957347439573],["icu_68::numparse::impl::AffixMatcherWarehouse::AffixMatcherWarehouse()",93957347441328,93957347441765],["icu_68::numparse::impl::SeriesMatcher::smokeTest(icu_68::StringSegment const&) const",93957347447040,93957347447117],["icu_68::numparse::impl::AffixPatternMatcherBuilder::consumeToken(icu_68::number::impl::AffixPatternType, int, UErrorCode&)",93957347447536,93957347448352],["icu_68::numparse::impl::CodePointMatcher::toString() const",93957347449760,93957347449791],["icu_68::numparse::impl::AffixMatcher::compareTo(icu_68::numparse::impl::AffixMatcher const&) const",93957347454256,93957347455062],["icu_68::numparse::impl::CombinedCurrencyMatcher::CombinedCurrencyMatcher(icu_68::number::impl::CurrencySymbols const&, icu_68::DecimalFormatSymbols const&, int, UErrorCode&)",93957347457056,93957347457794],["icu_68::numparse::impl::ParsedNumber::success() const",93957347459584,93957347459607],["icu_68::numparse::impl::ScientificMatcher::~ScientificMatcher()",93957347460800,93957347460919],["icu_68::numparse::impl::InfinityMatcher::InfinityMatcher(icu_68::DecimalFormatSymbols const&)",93957347461600,93957347461726],["icu_68::numparse::impl::NanMatcher::accept(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&) const",93957347462128,93957347462145],["icu_68::numparse::impl::PlusSignMatcher::PlusSignMatcher(icu_68::DecimalFormatSymbols const&, bool)",93957347462640,93957347462772],["icu_68::numparse::impl::RequireDecimalSeparatorValidator::RequireDecimalSeparatorValidator(bool)",93957347463040,93957347463060],["icu_68::numparse::impl::MultiplierParseHandler::~MultiplierParseHandler()",93957347463312,93957347463354],["icu_68::NumberingSystem::~NumberingSystem()",93957347465504,93957347465554],["icu_68::OlsonTimeZone::operator==(icu_68::TimeZone const&) const",93957347467760,93957347467857],["icu_68::OlsonTimeZone::transitionTimeInSeconds(short) const",93957347469744,93957347469852],["icu_68::OlsonTimeZone::getPreviousTransition(double, signed char, icu_68::TimeZoneTransition&) const",93957347474128,93957347475227],["icu_68::BasicTimeZone::getOffsetFromLocal(double, int, int, int&, int&, UErrorCode&) const",93957347480016,93957347480037],["icu_68::PersianCalendar::getType() const",93957347480416,93957347480429],["icu_68::PersianCalendar::defaultCenturyStart() const",93957347481184,93957347481242],["icu_68::PluralRules::~PluralRules()",93957347482048,93957347482126],["icu_68::PluralRules::internalForLocale(icu_68::Locale const&, UPluralType, UErrorCode&)",93957347485840,93957347486449],["icu_68::RuleChain::select(icu_68::IFixedDecimal const&) const",93957347489024,93957347489240],["icu_68::AndConstraint::~AndConstraint()",93957347491680,93957347491759],["icu_68::PluralRuleParser::~PluralRuleParser()",93957347492928,93957347492952],["icu_68::PluralKeywordEnumeration::~PluralKeywordEnumeration()",93957347494480,93957347494530],["icu_68::FixedDecimal::isInfinite() const",93957347495744,93957347495757],["icu_68::LocaleCacheKey<icu_68::SharedPluralRules>::~LocaleCacheKey()",93957347496160,93957347496210],["icu_68::RuleBasedNumberFormat::init(icu_68::UnicodeString const&, icu_68::LocalizationInfo*, UParseError&, UErrorCode&)",93957347498128,93957347500863],["icu_68::RuleBasedNumberFormat::operator==(icu_68::Format const&) const",93957347502976,93957347503244],["icu_68::RuleBasedNumberFormat::findRuleSet(icu_68::UnicodeString const&, UErrorCode&) const",93957347505520,93957347505717],["icu_68::UnicodeString::indexOf(char16_t const*, int, int) const",93957347507632,93957347507712],["icu_68::RuleBasedNumberFormat::initializeDefaultInfinityRule(UErrorCode&)",93957347510928,93957347511295],["icu_68::RuleBasedNumberFormat::adoptDecimalFormatSymbols(icu_68::DecimalFormatSymbols*)",93957347513168,93957347513461],["icu_68::PluralFormat::PluralFormat(icu_68::PluralFormat const&)",93957347513968,93957347514188],["icu_68::PluralFormat::operator==(icu_68::Format const&) const",93957347517280,93957347517470],["icu_68::NFRule::~NFRule()",93957347520608,93957347520716],["icu_68::NFRule::getDivisor() const",93957347525520,93957347525539],["icu_68::NFRule::findText(icu_68::UnicodeString const&, icu_68::UnicodeString const&, int, int*) const",93957347531200,93957347532611],["icu_68::NFRuleSet::~NFRuleSet()",93957347535312,93957347535614],["icu_68::util64_fromDouble(double)",93957347538224,93957347538371],["icu_68::NumeratorSubstitution::NumeratorSubstitution(int, double, icu_68::NFRuleSet*, icu_68::UnicodeString const&, UErrorCode&)",93957347541088,93957347541438],["icu_68::NFSubstitution::doSubstitution(double, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347543088,93957347543504],["icu_68::ModulusSubstitution::doSubstitution(long, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347544320,93957347544441],["icu_68::FractionalPartSubstitution::operator==(icu_68::NFSubstitution const&) const",93957347546688,93957347546823],["icu_68::ModulusSubstitution::setDivisor(int, short, UErrorCode&)",93957347548688,93957347548734],["icu_68::ModulusSubstitution::composeRuleValue(double, double) const",93957347548928,93957347548992],["icu_68::AbsoluteValueSubstitution::composeRuleValue(double, double) const",93957347549136,93957347549149],["icu_68::CollationElementIterator::next(UErrorCode&)",93957347549456,93957347549661],["icu_68::CollationIterator::~CollationIterator()",93957347551968,93957347552053],["icu_68::CollationIterator::appendCEsFromCE32(icu_68::CollationData const*, int, unsigned int, signed char, UErrorCode&)",93957347552832,93957347557162],["icu_68::TailoredSet::forData(icu_68::CollationData const*, UErrorCode&)",93957347564960,93957347565024],["icu_68::TailoredSet::add(int)",93957347569152,93957347569358],["icu_68::RuleBasedCollator::RuleBasedCollator(icu_68::UnicodeString const&, UErrorCode&)",93957347572352,93957347572483],["icu_68::CollationBuilder::finalizeCEs(UErrorCode&)",93957347576928,93957347577130],["icu_68::CollationBuilder::findOrInsertWeakNode(int, unsigned int, int, UErrorCode&)",93957347582064,93957347582703],["icu_68::CollationBuilder::optimize(icu_68::UnicodeSet const&, char const*&, UErrorCode&)",93957347586528,93957347586550],["icu_68::CollationWeights::initForPrimary(signed char)",93957347591344,93957347591427],["icu_68::CollationRuleParser::CollationRuleParser(icu_68::CollationData const*, UErrorCode&)",93957347594688,93957347594768],["icu_68::CollationRuleParser::parseStarredCharacters(int, int, UErrorCode&)",93957347603392,93957347604742],["icu_68::CollationRuleParser::parseReordering(icu_68::UnicodeString const&, UErrorCode&)",93957347608304,93957347608988],["icu_68::CollationData::getCE32(int) const",93957347610848,93957347610989],["icu_68::DataBuilderCollationIterator::getCE32FromBuilderData(unsigned int, UErrorCode&)",93957347611344,93957347611573],["icu_68::CollationDataBuilder::addConditionalCE32(icu_68::UnicodeString const&, unsigned int, UErrorCode&)",93957347614304,93957347614477],["icu_68::CollationDataBuilder::copyFrom(icu_68::CollationDataBuilder const&, icu_68::CollationDataBuilder::CEModifier const&, UErrorCode&)",93957347620160,93957347620451],["icu_68::CollationDataBuilder::buildMappings(icu_68::CollationData&, UErrorCode&)",93957347622976,93957347623915],["icu_68::CollationFastLatinBuilder::CollationFastLatinBuilder(UErrorCode&)",93957347627680,93957347627807],["icu_68::CollationFastLatinBuilder::encodeContractions(UErrorCode&)",93957347630960,93957347631683],["icu_68::CollationRootElements::firstCEWithPrimaryAtLeast(unsigned int) const",93957347634608,93957347634806],["icu_68::RuleBasedTimeZone::getDynamicClassID() const",93957347636224,93957347636237],["icu_68::RuleBasedTimeZone::addTransitionRule(icu_68::TimeZoneRule*, UErrorCode&)",93957347639904,93957347640164],["icu_68::RuleBasedTimeZone::findRuleInFinal(double, signed char, int, int) const",93957347641504,93957347642274],["icu_68::RuleBasedTimeZone::countTransitionRules(UErrorCode&) const",93957347644752,93957347644786],["icu_68::Region::getInstance(char const*, UErrorCode&)",93957347652688,93957347653072],["icu_68::RelativeDateTimeCacheData::~RelativeDateTimeCacheData()",93957347654208,93957347654236],["icu_68::RelativeDateTimeFormatter::~RelativeDateTimeFormatter()",93957347657488,93957347657516],["icu_68::LocaleCacheKey<icu_68::RelativeDateTimeCacheData>::~LocaleCacheKey()",93957347662768,93957347662818],["icu_68::RelativeDateFormat::~RelativeDateFormat()",93957347665424,93957347665568],["icu_68::RelativeDateFormat::toPattern(icu_68::UnicodeString&, UErrorCode&) const",93957347668928,93957347669052],["icu_68::CollationKeyByteSink::AppendBeyondCapacity(char const*, int, int)",93957347670160,93957347670232],["icu_68::RuleBasedCollator::operator==(icu_68::Collator const&) const",93957347671072,93957347671367],["icu_68::RuleBasedCollator::setAttribute(UColAttribute, UColAttributeValue, UErrorCode&)",93957347672400,93957347672928],["icu_68::RuleBasedCollator::setReorderCodes(int const*, int, UErrorCode&)",93957347674656,93957347675022],["icu_68::(anonymous namespace)::compareNFDIter(icu_68::Normalizer2Impl const&, icu_68::(anonymous namespace)::NFDIterator&, icu_68::(anonymous namespace)::NFDIterator&)",93957347681248,93957347681913],["icu_68::RuleBasedCollator::writeSortKey(char16_t const*, int, icu_68::SortKeyByteSink&, UErrorCode&) const",93957347684928,93957347685725],["icu_68::(anonymous namespace)::UTF16NFDIterator::nextRawCodePoint()",93957347690448,93957347690565],["icu_68::(anonymous namespace)::FixedSortKeyByteSink::AppendBeyondCapacity(char const*, int, int)",93957347691200,93957347691231],["u_writeIdenticalLevelRun_68",93957347704240,93957347705374],["icu_68::SimpleTimeZone::deleteTransitionRules()",93957347706000,93957347706110],["icu_68::SimpleTimeZone::getOffset(unsigned char, int, int, int, unsigned char, int, int, UErrorCode&) const",93957347707088,93957347707348],["icu_68::SimpleTimeZone::inDaylightTime(double, UErrorCode&) const",93957347709296,93957347709418],["icu_68::SimpleDateFormat::getDynamicClassID() const",93957347712672,93957347712685],["icu_68::SimpleDateFormat::SimpleDateFormat(icu_68::UnicodeString const&, icu_68::Locale const&, UErrorCode&)",93957347719040,93957347719532],["icu_68::SimpleDateFormat::format(icu_68::Calendar&, icu_68::UnicodeString&, icu_68::FieldPosition&) const",93957347722272,93957347722411],["icu_68::SimpleDateFormat::tzFormat(UErrorCode&) const",93957347731408,93957347731513],["icu_68::SimpleDateFormat::matchQuarterString(icu_68::UnicodeString const&, int, UCalendarDateFields, icu_68::UnicodeString const*, int, icu_68::Calendar&) const",93957347746032,93957347746269],["icu_68::SimpleDateFormat::translatePattern(icu_68::UnicodeString const&, icu_68::UnicodeString&, icu_68::UnicodeString const&, icu_68::UnicodeString const&, UErrorCode&)",93957347748640,93957347749054],["icu_68::SimpleDateFormat::getTimeZoneFormat() const",93957347750528,93957347750639],["icu_68::MessageFormat::getDynamicClassID() const",93957347752544,93957347752557],["icu_68::MessageFormat::clone() const",93957347754368,93957347754419],["icu_68::MessageFormat::setArgStartFormat(int, icu_68::Format*, UErrorCode&)",93957347756112,93957347756347],["icu_68::MessageFormat::getFormats(int&) const",93957347759328,93957347759740],["icu_68::MessageFormat::formatComplexSubMessage(int, void const*, icu_68::Formattable const*, icu_68::UnicodeString const*, int, icu_68::AppendableWrapper&, UErrorCode&) const",93957347764928,93957347766292],["icu_68::MessageFormat::parseObject(icu_68::UnicodeString const&, icu_68::Formattable&, icu_68::ParsePosition&) const",93957347769952,93957347770013],["icu_68::FormatNameEnumeration::~FormatNameEnumeration()",93957347771920,93957347771976],["icu_68::SelectFormat::findSubMessage(icu_68::MessagePattern const&, int, icu_68::UnicodeString const&, UErrorCode&)",93957347773952,93957347774505],["icu_68::number::impl::LocalizedNumberFormatterAsFormat::parseObject(icu_68::UnicodeString const&, icu_68::Formattable&, icu_68::ParsePosition&) const",93957347775936,93957347775949],["icu_68::DayPeriodRules::getDayPeriodFromString(char const*)",93957347778576,93957347778933],["icu_68::SimpleDateFormatStaticSets::~SimpleDateFormatStaticSets()",93957347784096,93957347784208],["icu_68::StandardPlural::indexOrNegativeFromString(char const*)",93957347784784,93957347784993],["icu_68::StringSegment::setLength(int)",93957347785872,93957347785884],["icu_68::StringSegment::startsWith(icu_68::UnicodeString const&) const",93957347786464,93957347786712],["icu_68::TaiwanCalendar::handleGetExtendedYear()",93957347787264,93957347787417],["icu_68::TimeZone::TimeZone(icu_68::UnicodeString const&)",93957347788416,93957347788440],["icu_68::TimeZone::createDefault()",93957347789488,93957347789655],["icu_68::TimeZone::createTimeZoneIDEnumeration(USystemTimeZoneType, char const*, int const*, UErrorCode&)",93957347790864,93957347790874],["icu_68::TimeZone::getRegion(icu_68::UnicodeString const&, UErrorCode&)",93957347793248,93957347793426],["icu_68::TimeZone::getCanonicalID(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&)",93957347796944,93957347796979],["icu_68::initMap(USystemTimeZoneType, UErrorCode&)",93957347798400,93957347799406],["icu_68::TimeZoneFormat::expandOffsetPattern(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&)",93957347802368,93957347802904],["icu_68::TimeZoneFormat::clone() const",93957347805472,93957347805776],["icu_68::TimeZoneFormat::formatOffsetShortLocalizedGMT(int, icu_68::UnicodeString&, UErrorCode&) const",93957347809600,93957347809621],["icu_68::TimeZoneFormat::getTimeType(UTimeZoneNameType)",93957347816352,93957347816395],["icu_68::TimeZoneFormat::formatOffsetISO8601(int, signed char, signed char, signed char, signed char, icu_68::UnicodeString&, UErrorCode&) const",93957347818544,93957347819174],["icu_68::TimeZoneFormat::parseAbuttingOffsetFields(icu_68::UnicodeString const&, int, int&) const",93957347824192,93957347825468],["icu_68::GNameSearchHandler::handleMatch(int, icu_68::CharacterNode const*, UErrorCode&)",93957347827248,93957347827694],["icu_68::TZGNCore::getDisplayName(icu_68::TimeZone const&, UTimeZoneGenericNameType, double, icu_68::UnicodeString&) const",93957347830112,93957347830406],["icu_68::TZGNCore::findLocal(icu_68::UnicodeString const&, int, unsigned int, UErrorCode&) const",93957347836336,93957347836959],["icu_68::TimeZoneGenericNames::getDisplayName(icu_68::TimeZone const&, UTimeZoneGenericNameType, double, icu_68::UnicodeString&) const",93957347838224,93957347838241],["icu_68::TimeZoneNamesDelegate::operator==(icu_68::TimeZoneNames const&) const",93957347839200,93957347839285],["icu_68::TimeZoneNamesDelegate::getExemplarLocationName(icu_68::UnicodeString const&, icu_68::UnicodeString&) const",93957347839600,93957347839621],["icu_68::TimeZoneNames::MatchInfoCollection::MatchInfoCollection()",93957347840352,93957347840376],["icu_68::TimeZoneNames::MatchInfoCollection::getTimeZoneIDAt(int, icu_68::UnicodeString&) const",93957347841248,93957347841330],["icu_68::TextTrieMap::putImpl(icu_68::UnicodeString const&, void*, UErrorCode&)",93957347842208,93957347842626],["icu_68::MetaZoneIDsEnumeration::getDynamicClassID() const",93957347844512,93957347844525],["icu_68::TimeZoneNamesImpl::TimeZoneNamesImpl(icu_68::Locale const&, UErrorCode&)",93957347845376,93957347845515],["icu_68::TimeZoneNamesImpl::getAvailableMetaZoneIDs(UErrorCode&) const",93957347847920,93957347847933],["icu_68::TimeZoneNamesImpl::getExemplarLocationName(icu_68::UnicodeString const&, icu_68::UnicodeString&) const",93957347849008,93957347849160],["icu_68::TimeZoneNamesImpl::ZoneStringsLoader::~ZoneStringsLoader()",93957347851728,93957347851778],["icu_68::TZDBNameSearchHandler::~TZDBNameSearchHandler()",93957347855088,93957347855120],["icu_68::TZDBTimeZoneNames::getMetaZoneNames(icu_68::UnicodeString const&, UErrorCode&)",93957347856480,93957347857294],["icu_68::tzdbTimeZoneNames_cleanup()",93957347859568,93957347859656],["icu_68::InitialTimeZoneRule::InitialTimeZoneRule(icu_68::UnicodeString const&, int, int)",93957347860848,93957347860915],["icu_68::AnnualTimeZoneRule::~AnnualTimeZoneRule()",93957347861424,93957347861499],["icu_68::AnnualTimeZoneRule::getNextStart(double, int, int, signed char, double&) const",93957347862672,93957347862918],["icu_68::TimeArrayTimeZoneRule::operator==(icu_68::TimeZoneRule const&) const",93957347863888,93957347864046],["icu_68::TimeZoneTransition::TimeZoneTransition(double, icu_68::TimeZoneRule const&, icu_68::TimeZoneRule const&)",93957347864656,93957347864715],["icu_68::TimeZoneTransition::adoptFrom(icu_68::TimeZoneRule*)",93957347865120,93957347865157],["icu_68::LocaleCacheKey<icu_68::CollationCacheEntry>::createObject(void const*, UErrorCode&) const",93957347866464,93957347866546],["icu_68::CollationLoader::makeCacheEntryFromRoot(icu_68::Locale const&, UErrorCode&) const",93957347871536,93957347871593],["icu_68::LocaleCacheKey<icu_68::CollationCacheEntry>::~LocaleCacheKey()",93957347873072,93957347873122],["icu_68::UIterCollationIterator::previousCodePoint(UErrorCode&)",93957347873552,93957347873569],["icu_68::FCDUIterCollationIterator::nextSegment(UErrorCode&)",93957347874560,93957347875296],["icu_68::units::ComplexUnitsConverter::greaterThanOrEqual(double, double) const",93957347878432,93957347878471],["icu_68::units::(anonymous namespace)::strToDouble(icu_68::StringPiece, UErrorCode&)",93957347883088,93957347883250],["icu_68::units::(anonymous namespace)::loadCompoundFactor(icu_68::MeasureUnitImpl const&, icu_68::units::ConversionRates const&, UErrorCode&)",93957347887504,93957347889241],["icu_68::units::ConversionRateInfo* icu_68::MemoryPool<icu_68::units::ConversionRateInfo, 8>::create<>()",93957347893456,93957347893805],["icu_68::units::ConverterPreference* icu_68::MemoryPool<icu_68::units::ConverterPreference, 8>::create<icu_68::MeasureUnitImpl&, icu_68::MeasureUnitImpl&, double const&, icu_68::UnicodeString&, icu_68::units::ConversionRates&, UErrorCode&>(icu_68::MeasureUnitImpl&, icu_68::MeasureUnitImpl&, double const&, icu_68::UnicodeString&, icu_68::units::ConversionRates&, UErrorCode&)",93957347900160,93957347900564],["icu_68::UTF16CollationIterator::previousCodePoint(UErrorCode&)",93957347901072,93957347901181],["icu_68::FCDUTF16CollationIterator::handleNextCE32(int&, UErrorCode&)",93957347901920,93957347902367],["icu_68::UTF8CollationIterator::resetToOffset(int)",93957347904960,93957347904990],["icu_68::FCDUTF8CollationIterator::~FCDUTF8CollationIterator()",93957347906528,93957347906573],["icu_68::FCDUTF8CollationIterator::foundNULTerminator()",93957347909760,93957347909811],["icu_68::ZoneMeta::findTimeZoneID(icu_68::UnicodeString const&)",93957347913984,93957347913994],["icu_68::ZoneMeta::getZoneIdByMetazone(icu_68::UnicodeString const&, icu_68::UnicodeString const&, icu_68::UnicodeString&)",93957347917920,93957347918525],["icu_68::ZoneMeta::getShortID(icu_68::UnicodeString const&)",93957347920768,93957347920819],["icu_68::BreakIterator::BreakIterator()",93957347922800,93957347922827],["icu_68::ICUBreakIteratorService::ICUBreakIteratorService()",93957347924192,93957347924426],["icu_68::CharStringByteSink::GetAppendBuffer(int, int, char*, int, int*)",93957347925728,93957347925818],["icu_68::BytesTrieBuilder::~BytesTrieBuilder()",93957347926368,93957347926463],["icu_68::BytesTrieBuilder::getLimitOfLinearMatch(int, int, int) const",93957347927712,93957347927896],["icu_68::BytesTrieBuilder::write(int)",93957347928800,93957347929004],["icu_68::BytesTrie::next(int)",93957347930544,93957347930804],["icu_68::CanonicalIterator::next()",93957347932752,93957347933005],["icu_68::CharString::extract(char*, int, UErrorCode&) const",93957347939024,93957347939139],["icu_68::CharString::getAppendBuffer(int, int, int&, UErrorCode&)",93957347940048,93957347940145],["uprv_toupper_68",93957347940896,93957347940916],["icu_68::Edits::reset()",93957347941648,93957347941661],["icu_68::UStringSet::~UStringSet()",93957347944464,93957347944474],["icu_68::SimpleFilteredSentenceBreakIterator::internalNext(int)",93957347945904,93957347946126],["icu_68::SimpleFilteredSentenceBreakIterator::last()",93957347946896,93957347946914],["icu_68::SimpleFilteredSentenceBreakIterator::clone() const",93957347949904,93957347950014],["icu_68::SimpleFilteredSentenceBreakIterator::refreshInputText(UText*, UErrorCode&)",93957347950240,93957347950275],["icu_68::Norm2AllModes::getNFKC_CFInstance(UErrorCode&)",93957347951232,93957347951340],["icu_68::Normalizer2Factory::getNFKC_CFImpl(UErrorCode&)",93957347952800,93957347952916],["icu_68::LocaleBuilder::setRegion(icu_68::StringPiece)",93957347953968,93957347954070],["icu_68::LocaleMatcher::Builder::addSupportedLocale(icu_68::Locale const&)",93957347956816,93957347956982],["icu_68::LocaleMatcher::~LocaleMatcher()",93957347960112,93957347960350],["(anonymous namespace)::AvailableLocalesStringEnumeration::~AvailableLocalesStringEnumeration()",93957347962832,93957347962860],["uloc_getDisplayVariant_68",93957347963600,93957347963886],["icu_68::LocaleDistance::LocaleDistance(icu_68::LocaleDistanceData const&, icu_68::XLikelySubtags const&)",93957347969616,93957347970004],["icu_68::LocaleDisplayNamesImpl::LocaleDisplayNamesImpl(icu_68::Locale const&, UDisplayContext*, int)",93957347975152,93957347975872],["icu_68::LocaleDisplayNamesImpl::localeIdName(char const*, icu_68::UnicodeString&, bool) const",93957347980384,93957347980763],["icu_68::LocaleDisplayNamesImpl::languageDisplayName(char const*, icu_68::UnicodeString&) const",93957347983056,93957347983560],["icu_68::LocaleDisplayNames::createInstance(icu_68::Locale const&, UDisplayContext*, int)",93957347983776,93957347983852],["icu_68::Locale::~Locale()",93957347986880,93957347986968],["icu_68::Locale::operator=(icu_68::Locale&&)",93957347988592,93957347988779],["icu_68::Locale::minimizeSubtags(UErrorCode&)",93957347999936,93957348000152],["icu_68::KeywordEnumeration::~KeywordEnumeration()",93957348004800,93957348004854],["icu_68::Locale::setUnicodeKeywordValue(icu_68::StringPiece, icu_68::StringPiece, UErrorCode&)",93957348006624,93957348006980],["icu_68::(anonymous namespace)::AliasData::cleanup()",93957348009648,93957348009767],["ulocimp_getRegionForSupplementalData_68",93957348013776,93957348014250],["icu_68::XLikelySubtagsData::~XLikelySubtagsData()",93957348022160,93957348022462],["icu_68::XLikelySubtags::compareLikely(icu_68::LSR const&, icu_68::LSR const&, int) const",93957348025136,93957348025438],["service_cleanup()",93957348029568,93957348029627],["icu_68::MessagePattern::MessagePattern(UErrorCode&)",93957348030704,93957348030887],["icu_68::MessagePattern::parseChoiceStyle(int, int, UParseError*, UErrorCode&)",93957348033200,93957348034362],["icu_68::MessagePattern::parseArg(int, int, int, UParseError*, UErrorCode&)",93957348037424,93957348039343],["icu_68::MessagePattern::parseDouble(int, int, signed char, UParseError*, UErrorCode&)",93957348041904,93957348042665],["icu_68::Norm2AllModes::createNFCInstance(UErrorCode&)",93957348044112,93957348044329],["icu_68::Normalizer2WithImpl::normalize(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&) const",93957348045440,93957348045744],["icu_68::Normalizer2WithImpl::quickCheck(icu_68::UnicodeString const&, UErrorCode&) const",93957348046464,93957348046579],["icu_68::DecomposeNormalizer2::getQuickCheck(int) const",93957348046960,93957348047093],["icu_68::ComposeNormalizer2::normalize(char16_t const*, char16_t const*, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348048400,93957348048443],["icu_68::NoopNormalizer2::normalize(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&) const",93957348048832,93957348048877],["icu_68::ReorderingBuffer::init(int, UErrorCode&)",93957348049808,93957348049986],["icu_68::Normalizer2Impl::~Normalizer2Impl()",93957348053104,93957348053187],["icu_68::Normalizer2Impl::decompose(char16_t const*, char16_t const*, icu_68::ReorderingBuffer*, UErrorCode&) const",93957348054736,93957348055534],["icu_68::Normalizer2Impl::hasDecompBoundaryAfter(int) const",93957348060608,93957348060904],["icu_68::Normalizer2Impl::composeQuickCheck(char16_t const*, char16_t const*, signed char, UNormalizationCheckResult*) const",93957348067984,93957348069255],["icu_68::Normalizer2Impl::findNextFCDBoundary(char16_t const*, char16_t const*) const",93957348077040,93957348077552],["icu_68::ParsePosition::getDynamicClassID() const",93957348080544,93957348080557],["icu_68::PropNameData::getPropertyValueName(int, int, int)",93957348081936,93957348082363],["uprv_getUTCtime_68",93957348083232,93957348083315],["uprv_round_68",93957348083552,93957348083570],["uprv_timezone_68",93957348083792,93957348083807],["u_getDataDirectory_68",93957348086432,93957348086525],["icu_68::RuleBasedBreakIterator::operator=(icu_68::RuleBasedBreakIterator const&)",93957348088224,93957348088624],["icu_68::RuleBasedBreakIterator::getText() const",93957348089632,93957348089645],["icu_68::RuleBasedBreakIterator::previous()",93957348090416,93957348090475],["icu_68::RuleBasedBreakIterator::getRuleStatusVec(int*, int, UErrorCode&)",93957348096560,93957348096756],["icu_68::UnhandledEngine::~UnhandledEngine()",93957348097776,93957348097834],["icu_68::ICULanguageBreakFactory::getEngineFor(int)",93957348098304,93957348098549],["icu_68::ThaiBreakEngine::ThaiBreakEngine(icu_68::DictionaryMatcher*, UErrorCode&)",93957348100240,93957348100888],["icu_68::BurmeseBreakEngine::BurmeseBreakEngine(icu_68::DictionaryMatcher*, UErrorCode&)",93957348105408,93957348105945],["icu_68::CjkBreakEngine::~CjkBreakEngine()",93957348109376,93957348109494],["icu_68::BytesDictionaryMatcher::matches(UText*, int, int, int*, int*, int*, int*) const",93957348114816,93957348115360],["icu_68::RuleBasedBreakIterator::BreakCache::~BreakCache()",93957348116416,93957348116443],["icu_68::RuleBasedBreakIterator::BreakCache::nextOL()",93957348118256,93957348118325],["icu_68::RBBIDataWrapper::addReference()",93957348121248,93957348121262],["icu_68::StringCharacterIterator::operator=(icu_68::StringCharacterIterator const&)",93957348122064,93957348122141],["icu_68::ICUServiceKey::canonicalID(icu_68::UnicodeString&) const",93957348122736,93957348122775],["icu_68::SimpleFactory::create(icu_68::ICUServiceKey const&, icu_68::ICUService const*, UErrorCode&) const",93957348123248,93957348123504],["icu_68::ICUService::getKey(icu_68::ICUServiceKey&, icu_68::UnicodeString*, icu_68::ICUServiceFactory const*, UErrorCode&) const",93957348124000,93957348126074],["icu_68::ICUService::unregister(void const*, UErrorCode&)",93957348127424,93957348127561],["icu_68::ICUService::acceptsListener(icu_68::EventListener const&) const",93957348128032,93957348128079],["icu_68::LocaleKeyFactory::updateVisibleIDs(icu_68::Hashtable&, UErrorCode&) const",93957348128704,93957348128922],["icu_68::ICULocaleService::~ICULocaleService()",93957348129264,93957348129318],["icu_68::ICULocaleService::registerInstance(icu_68::UObject*, icu_68::UnicodeString const&, signed char, UErrorCode&)",93957348129936,93957348130196],["icu_68::ServiceEnumeration::~ServiceEnumeration()",93957348130416,93957348130461],["icu_68::ServiceEnumeration::create(icu_68::ICULocaleService const*)",93957348130560,93957348130724],["icu_68::ServiceEnumeration::clone() const",93957348130976,93957348131059],["icu_68::ServiceEnumeration::ServiceEnumeration(icu_68::ServiceEnumeration const&, UErrorCode&)",93957348131360,93957348131590],["icu_68::LocaleKey::~LocaleKey()",93957348132256,93957348132322],["icu_68::LocaleKey::currentID(icu_68::UnicodeString&) const",93957348132720,93957348132784],["icu_68::LocaleKey::fallback()",93957348132976,93957348133196],["icu_68::ICUNotifier::~ICUNotifier()",93957348133536,93957348133608],["icu_68::ICUResourceBundleFactory::ICUResourceBundleFactory()",93957348134224,93957348134278],["icu_68::ICUResourceBundleFactory::getSupportedIDs(UErrorCode&) const",93957348134464,93957348134487],["icu_68::ResourceBundle::ResourceBundle(char const*, icu_68::Locale const&, UErrorCode&)",93957348134704,93957348134760],["icu_68::SimpleLocaleKeyFactory::~SimpleLocaleKeyFactory()",93957348135008,93957348135073],["icu_68::SimpleLocaleKeyFactory::getDynamicClassID() const",93957348135600,93957348135613],["icu_68::SimpleFormatter::~SimpleFormatter()",93957348135712,93957348135726],["icu_68::SimpleFormatter::format(char16_t const*, int, icu_68::UnicodeString const* const*, icu_68::UnicodeString&, icu_68::UnicodeString const*, signed char, int*, int, UErrorCode&)",93957348137392,93957348137780],["icu_68::unisets::chooseFrom(icu_68::UnicodeString, icu_68::unisets::Key, icu_68::unisets::Key)",93957348140064,93957348140208],["(anonymous namespace)::saveSet(icu_68::unisets::Key, icu_68::UnicodeString const&, UErrorCode&)",93957348142480,93957348142559],["icu_68::operator==(icu_68::StringPiece const&, icu_68::StringPiece const&)",93957348142768,93957348142825],["icu_68::StringTrieBuilder::writeNode(int, int, int)",93957348143136,93957348143644],["icu_68::StringTrieBuilder::makeBranchSubNode(int, int, int, int, UErrorCode&)",93957348145760,93957348147129],["icu_68::StringTrieBuilder::IntermediateValueNode::operator==(icu_68::StringTrieBuilder::Node const&) const",93957348147296,93957348147388],["icu_68::StringTrieBuilder::BranchHeadNode::markRightEdgesFirst(int)",93957348147616,93957348147655],["icu_68::StringTrieBuilder::SplitBranchNode::operator==(icu_68::StringTrieBuilder::Node const&) const",93957348148208,93957348148300],["uprv_sortArray_68",93957348148608,93957348149549],["ucase_getTrie_68",93957348150784,93957348150797],["ucase_getTypeOrIgnorable_68",93957348152336,93957348152487],["ucase_toFullUpper_68",93957348154768,93957348154784],["ucase_toFullFolding_68",93957348156304,93957348156906],["u_islower_68",93957348158464,93957348158600],["u_getUnicodeProperties_68",93957348159088,93957348159241],["u_isUWhiteSpace_68",93957348159888,93957348160027],["u_getNumericValue_68",93957348160672,93957348161283],["u_charAge_68",93957348161728,93957348161895],["upropsvec_addPropertyStarts_68",93957348162896,93957348162932],["icu_68::UCharsTrieBuilder::~UCharsTrieBuilder()",93957348163440,93957348163505],["icu_68::UCharsTrieBuilder::buildUChars(UStringTrieBuildOption, UErrorCode&)",93957348164096,93957348164800],["icu_68::UCharsTrieBuilder::getElementUnit(int, int) const",93957348164992,93957348165063],["icu_68::UCharsTrieBuilder::skipElementsBySomeUnits(int, int, int) const",93957348165584,93957348165776],["icu_68::UCharsTrieBuilder::createLinearMatchNode(int, int, int, icu_68::StringTrieBuilder::Node*) const",93957348166128,93957348166463],["icu_68::UCharsTrieBuilder::writeValueAndFinal(int, signed char)",93957348167008,93957348167199],["icu_68::UCharsTrie::current() const",93957348167616,93957348167664],["icu_68::UCharsTrie::branchNext(char16_t const*, int, int)",93957348168304,93957348168758],["icu_68::UCharsTrie::Iterator::~Iterator()",93957348169600,93957348169642],["icu_68::UCharCharacterIterator::UCharCharacterIterator(icu_68::ConstChar16Ptr, int)",93957348171264,93957348171332],["icu_68::UCharCharacterIterator::hashCode() const",93957348171536,93957348171573],["icu_68::UCharCharacterIterator::last()",93957348171744,93957348171782],["icu_68::UCharCharacterIterator::nextPostInc()",93957348171936,93957348171969],["icu_68::UCharCharacterIterator::first32()",93957348172064,93957348172153],["icu_68::UCharCharacterIterator::current32() const",93957348172560,93957348172691],["icu_68::UCharCharacterIterator::move(int, icu_68::CharacterIterator::EOrigin)",93957348173088,93957348173150],["icu_68::CharacterIterator::CharacterIterator(int)",93957348173872,93957348173922],["icu_68::CharacterIterator::first32PostInc()",93957348174080,93957348174117],["ucptrie_getValueWidth_68",93957348174832,93957348174842],["ucptrie_get_68",93957348175504,93957348175786],["ucurr_getName_68",93957348178544,93957348179528],["searchCurrencyName(CurrencyNameStruct const*, int, char16_t const*, int, int*, int*, int*)",93957348185408,93957348186090],["_findMetaData(char16_t const*, UErrorCode&)",93957348186320,93957348186675],["getCurrSymbolsEquiv()",93957348187440,93957348189739],["udata_setCommonData_68",93957348190848,93957348190992],["doOpenChoice(char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*)",93957348192080,93957348194390],["udata_getHashTable(UErrorCode&)",93957348194832,93957348194994],["icu_68::UDataPathIterator::~UDataPathIterator()",93957348196528,93957348196601],["offsetTOCLookupFn(UDataMemory const*, char const*, int*, UErrorCode*)",93957348197664,93957348198036],["UDatamemory_assign_68",93957348198496,93957348198538],["udata_close_68",93957348198736,93957348198811],["uenum_count_68",93957348199008,93957348199049],["uenum_reset_68",93957348199440,93957348199476],["uhash_close_68",93957348201344,93957348201554],["uhash_setValueDeleter_68",93957348201680,93957348201694],["uhash_geti_68",93957348203120,93957348203379],["uhash_iput_68",93957348204704,93957348204737],["uhash_removeAll_68",93957348205232,93957348205422],["uhash_hashChars_68",93957348205872,93957348205910],["uhash_compareChars_68",93957348206608,93957348206671],["u_charsToUChars_68",93957348206864,93957348207152],["uprv_compareInvAscii_68",93957348207424,93957348207665],["noopSetState(UCharIterator*, unsigned int, UErrorCode*)",93957348208096,93957348208108],["utf8IteratorHasPrevious(UCharIterator*)",93957348210272,93957348210285],["utf8IteratorGetState(UCharIterator const*)",93957348211200,93957348211221],["ulist_addItemBeginList_68",93957348211680,93957348211856],["ulist_deleteList_68",93957348212176,93957348212261],["ulist_reset_keyword_values_iterator_68",93957348212496,93957348212525],["uloc_getKeywordValue_68",93957348213504,93957348213661],["uloc_getCurrentCountryID_68",93957348216672,93957348217224],["ulocimp_getCountry_68(char const*, char const**, UErrorCode&)",93957348218240,93957348218657],["uloc_getParent_68",93957348219984,93957348220197],["uloc_getVariant_68",93957348221056,93957348222128],["_canonicalize(char const*, icu_68::ByteSink&, unsigned int, UErrorCode*)",93957348222640,93957348225014],["uloc_toUnicodeLocaleKey_68",93957348225376,93957348225427],["uloc_kw_closeKeywords(UEnumeration*)",93957348225792,93957348225836],["ulocimp_toBcpKey_68",93957348226032,93957348226085],["isSpecialTypeReorderCode(char const*)",93957348230640,93957348230740],["icu_68::CharString* icu_68::MemoryPool<icu_68::CharString, 8>::create<>()",93957348231568,93957348231791],["ultag_isLanguageSubtag_68",93957348232512,93957348232600],["_isVariantSubtag(char const*, int)",93957348233008,93957348233192],["ultag_isUnicodeLocaleKey_68",93957348234256,93957348234338],["ultag_isUnicodeExtensionSubtags_68",93957348235440,93957348235608],["ulocimp_forLanguageTag_68",93957348244080,93957348254296],["_addExtensionToList(ExtensionListEntry**, ExtensionListEntry*, signed char)",93957348255168,93957348255562],["uprv_min_68",93957348255888,93957348255901],["umutablecptrie_set_68",93957348256320,93957348256598],["void icu_68::(anonymous namespace)::MixedBlocks::extend<unsigned short>(unsigned short const*, int, int, int)",93957348270064,93957348270378],["icu_68::umtx_initImplPreInit(icu_68::UInitOnce&)",93957348270736,93957348270966],["icu_68::UnifiedCache::_flush(signed char) const",93957348271616,93957348271916],["icu_68::UnifiedCache::~UnifiedCache()",93957348272496,93957348272524],["unifiedcache_cleanup()",93957348273616,93957348273695],["(anonymous namespace)::_set_addString(USet*, char16_t const*, int)",93957348275504,93957348275616],["icu_68::RuleCharacterIterator::lookahead(icu_68::UnicodeString&, int) const",93957348276544,93957348276632],["icu_68::RuleCharacterIterator::skipIgnored(int)",93957348276816,93957348277067],["icu_68::UnicodeSet::UnicodeSet()",93957348277152,93957348277245],["icu_68::UnicodeSet::operator=(icu_68::UnicodeSet const&)",93957348277776,93957348277788],["icu_68::cloneUnicodeString(UElement*, UElement*)",93957348278704,93957348278763],["non-virtual thunk to icu_68::UnicodeSet::~UnicodeSet()",93957348279152,93957348279166],["icu_68::UnicodeSet::clone() const",93957348279744,93957348279880],["icu_68::UnicodeSet::size() const",93957348280224,93957348280361],["icu_68::UnicodeSet::isEmpty() const",93957348280464,93957348280500],["icu_68::UnicodeSet::containsAll(icu_68::UnicodeSet const&) const",93957348281040,93957348281247],["non-virtual thunk to icu_68::UnicodeSet::matchesIndexValue(unsigned char) const",93957348282160,93957348282174],["icu_68::UnicodeSet::addMatchSetTo(icu_68::UnicodeSet&) const",93957348283264,93957348283283],["icu_68::UnicodeSet::clear()",93957348283776,93957348283873],["icu_68::UnicodeSet::add(icu_68::UnicodeString const&)",93957348285584,93957348285809],["icu_68::UnicodeSet::complementAll(icu_68::UnicodeSet const&)",93957348286480,93957348286628],["icu_68::UnicodeSet::retain(int const*, int, signed char)",93957348287056,93957348287661],["icu_68::UnicodeSet::complement()",93957348288304,93957348288474],["icu_68::UnicodeSet::_appendToPat(icu_68::UnicodeString&, icu_68::UnicodeString const&, signed char)",93957348289584,93957348289730],["icu_68::UnicodeSet::toPattern(icu_68::UnicodeString&, signed char) const",93957348290976,93957348291068],["icu_68::UnicodeSet::spanUTF8(char const*, int, USetSpanCondition) const",93957348292096,93957348292905],["icu_68::BMPSet::BMPSet(int const*, int)",93957348293728,93957348295095],["icu_68::set32x64Bits(unsigned int*, int, int)",93957348296064,93957348297218],["icu_68::BMPSet::spanUTF8(unsigned char const*, int, USetSpanCondition) const",93957348299632,93957348300515],["icu_68::UnicodeSet::applyPatternIgnoreSpace(icu_68::UnicodeString const&, icu_68::ParsePosition&, icu_68::SymbolTable const*, UErrorCode&)",93957348301440,93957348301782],["icu_68::UnicodeSet::applyFilter(signed char (*)(int, void*), void*, icu_68::UnicodeSet const*, UErrorCode&)",93957348305280,93957348305566],["icu_68::UnicodeSet::applyPropertyAlias(icu_68::UnicodeString const&, icu_68::UnicodeString const&, UErrorCode&)",93957348306176,93957348307747],["icu_68::UnicodeSet::applyPropertyPattern(icu_68::UnicodeString const&, icu_68::ParsePosition&, UErrorCode&)",93957348308000,93957348309206],["(anonymous namespace)::characterproperties_cleanup()",93957348310800,93957348311003],["ubidi_isBidiControl_68",93957348311504,93957348311635],["ubidi_getPairedBracketType_68",93957348312000,93957348312130],["u_charFromName_68",93957348312896,93957348315156],["icu_68::unames_cleanup()",93957348317104,93957348317179],["icu_68::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_68::UnicodeSetStringSpan const&, icu_68::UVector const&)",93957348321072,93957348321378],["icu_68::UnicodeSetStringSpan::spanBack(char16_t const*, int, USetSpanCondition) const",93957348324112,93957348326187],["icu_68::spanOneUTF8(icu_68::UnicodeSet const&, unsigned char const*, int)",93957348328544,93957348328843],["icu_68::UnicodeString::caseMap(int, unsigned int, icu_68::BreakIterator*, int (*)(int, unsigned int, icu_68::BreakIterator*, char16_t*, int, char16_t const*, int, icu_68::Edits*, UErrorCode&))",93957348331168,93957348332773],["icu_68::UnicodeString::toLower(icu_68::Locale const&)",93957348333120,93957348333172],["icu_68::operator+(icu_68::UnicodeString const&, icu_68::UnicodeString const&)",93957348333312,93957348333759],["icu_68::UnicodeString::UnicodeString(int)",93957348334944,93957348335030],["icu_68::UnicodeString::UnicodeString(signed char, icu_68::ConstChar16Ptr, int)",93957348335840,93957348336026],["icu_68::UnicodeString::cloneArrayIfNeeded(int, int, signed char, int**, signed char)",93957348336512,93957348337465],["icu_68::UnicodeString::copyFrom(icu_68::UnicodeString const&, signed char)",93957348338000,93957348338501],["icu_68::UnicodeString::clone() const",93957348338880,93957348338949],["icu_68::UnicodeString::getBuffer(int)",93957348339168,93957348339257],["icu_68::UnicodeString::operator=(icu_68::UnicodeString&&)",93957348339472,93957348339624],["icu_68::UnicodeString::doEquals(icu_68::UnicodeString const&, int) const",93957348339856,93957348339915],["icu_68::UnicodeString::getChar32At(int) const",93957348340240,93957348340391],["icu_68::UnicodeString::doExtract(int, int, char16_t*, int) const",93957348340896,93957348341010],["icu_68::UnicodeString::extractBetween(int, int, icu_68::UnicodeString&) const",93957348341584,93957348341768],["icu_68::UnicodeString::lastIndexOf(char16_t const*, int, int, int, int) const",93957348342576,93957348342758],["icu_68::UnicodeString::getTerminatedBuffer()",93957348343632,93957348343849],["icu_68::UnicodeString::doReplace(int, int, char16_t const*, int, int)",93957348344400,93957348345624],["icu_68::UnicodeString::copy(int, int, int)",93957348345920,93957348346203],["icu_68::UnicodeStringAppendable::appendCodePoint(int)",93957348346704,93957348346812],["uhash_hashUnicodeString_68",93957348347104,93957348347174],["icu_68::UnicodeString::toTitle(icu_68::BreakIterator*, icu_68::Locale const&)",93957348347936,93957348347948],["uprops_getSource_68",93957348348128,93957348348314],["isBidiControl(BinaryProperty const&, int, UProperty)",93957348348976,93957348348988],["caseBinaryPropertyContains(BinaryProperty const&, int, UProperty)",93957348349200,93957348349215],["isPOSIX_blank(BinaryProperty const&, int, UProperty)",93957348349392,93957348349404],["changesWhenCasefolded(BinaryProperty const&, int, UProperty)",93957348349456,93957348350008],["biDiGetMaxValue(IntProperty const&, UProperty)",93957348350608,93957348350620],["getGeneralCategory(IntProperty const&, int, UProperty)",93957348350720,93957348350736],["getScript(IntProperty const&, int, UProperty)",93957348350832,93957348350864],["getLeadCombiningClass(IntProperty const&, int, UProperty)",93957348350976,93957348350995],["layoutGetMaxValue(IntProperty const&, UProperty)",93957348351104,93957348351189],["(anonymous namespace)::uprops_cleanup()",93957348351392,93957348351530],["ures_copyResb_68",93957348351808,93957348352299],["ures_getIntVector_68",93957348352912,93957348353112],["ures_getSize_68",93957348353360,93957348353380],["ures_getStringWithAlias(UResourceBundle const*, unsigned int, int, int*, UErrorCode*)",93957348353808,93957348354128],["ures_getStringByIndex_68",93957348357824,93957348358192],["ures_getValueWithFallback_68",93957348359920,93957348360146],["getFallbackData(UResourceBundle const*, char const**, UResourceDataEntry**, unsigned int*, UErrorCode*)",93957348361632,93957348362002],["ures_openWithType(UResourceBundle*, char const*, char const*, UResOpenType, UErrorCode*)",93957348362640,93957348364906],["ures_getFunctionalEquivalent_68",93957348365248,93957348368079],["loadParentsExceptRoot(UResourceDataEntry*&, char*, int, signed char, char*, UErrorCode*)",93957348369328,93957348369634],["ures_cleanup()",93957348369856,93957348370194],["ures_loc_countLocales(UEnumeration*, UErrorCode*)",93957348370448,93957348370473],["res_init(ResourceData*, unsigned char*, void const*, int, UErrorCode*)",93957348370688,93957348371066],["res_getStringNoTrace_68",93957348371280,93957348371509],["res_countArrayItems_68",93957348371760,93957348371850],["icu_68::ResourceDataValue::getType() const",93957348371968,93957348371992],["icu_68::ResourceDataValue::getAliasString(int&, UErrorCode&) const",93957348372304,93957348372404],["icu_68::ResourceDataValue::getUInt(UErrorCode&) const",93957348372496,93957348372566],["icu_68::ResourceDataValue::getBinary(int&, UErrorCode&) const",93957348372736,93957348372893],["icu_68::ResourceDataValue::getTable(UErrorCode&) const",93957348373056,93957348373328],["icu_68::ResourceDataValue::getStringArray(icu_68::UnicodeString*, int, UErrorCode&) const",93957348373552,93957348373682],["icu_68::ResourceDataValue::getStringArrayOrStringAsArray(icu_68::UnicodeString*, int, UErrorCode&) const",93957348374176,93957348374692],["res_getTableItemByKey_68",93957348375472,93957348376352],["res_getResource_68",93957348376688,93957348376729],["icu_68::ResourceTable::findValue(char const*, icu_68::ResourceValue&) const",93957348377008,93957348377501],["icu_68::ResourceArray::getValue(int, icu_68::ResourceValue&) const",93957348377616,93957348377797],["uset_getSerializedSet_68",93957348378480,93957348378569],["uset_getSerializedRange_68",93957348378640,93957348378858],["icu_68::UnicodeSetIterator::UnicodeSetIterator(icu_68::UnicodeSet const&)",93957348378880,93957348379022],["icu_68::UnicodeSetIterator::~UnicodeSetIterator()",93957348379072,93957348379128],["icu_68::UnicodeSetIterator::loadRange(int)",93957348379264,93957348379309],["icu_68::UStack::getDynamicClassID() const",93957348379488,93957348379501],["icu_68::UStack::UStack(void (*)(void*), signed char (*)(UElement, UElement), UErrorCode&)",93957348379536,93957348379567],["icu_68::(anonymous namespace)::utf16_caseContextIterator(void*, signed char)",93957348380960,93957348381200],["icu_68::(anonymous namespace)::toLower(int, unsigned int, char16_t*, int, char16_t const*, UCaseContext*, int, int, icu_68::Edits*, UErrorCode&)",93957348381968,93957348383146],["icu_68::GreekUpper::toUpper(unsigned int, char16_t*, int, char16_t const*, int, icu_68::Edits*, UErrorCode&)",93957348383232,93957348384632],["ustrcase_internalToUpper_68",93957348384784,93957348386042],["ustrcase_mapWithOverlap_68",93957348386160,93957348386673],["u_strcmpFold_68",93957348386752,93957348386776],["u_caseInsensitivePrefixMatch_68",93957348388832,93957348388842],["u_strToLower_68",93957348388896,93957348389016],["icu_68::StringEnumeration::StringEnumeration()",93957348389152,93957348389204],["icu_68::StringEnumeration::next(int*, UErrorCode&)",93957348389296,93957348389580],["icu_68::StringEnumeration::snext(UErrorCode&)",93957348389696,93957348389862],["icu_68::StringEnumeration::operator!=(icu_68::StringEnumeration const&) const",93957348390016,93957348390033],["icu_68::UStringEnumeration::UStringEnumeration(UEnumeration*)",93957348390160,93957348390216],["icu_68::UStringEnumeration::~UStringEnumeration()",93957348390320,93957348390412],["icu_68::UStringEnumeration::next(int*, UErrorCode&)",93957348390432,93957348390446],["icu_68::UStringEnumeration::reset(UErrorCode&)",93957348390576,93957348390590],["uenum_openFromStringEnumeration_68",93957348390608,93957348390750],["ustrenum_unext(UEnumeration*, int*, UErrorCode*)",93957348390800,93957348390818],["ustrenum_reset(UEnumeration*, UErrorCode*)",93957348390864,93957348390882],["u_strFindFirst_68",93957348391472,93957348392414],["isMatchAtCPBoundary(char16_t const*, char16_t const*, char16_t const*, char16_t const*)",93957348392640,93957348392730],["u_memchr_68",93957348392784,93957348392871],["u_strFindLast_68",93957348392912,93957348393406],["u_strcmp_68",93957348393504,93957348393551],["u_strCompare_68",93957348394192,93957348394233],["u_strcpy_68",93957348394336,93957348394371],["u_countChar32_68",93957348394432,93957348394621],["u_memmove_68",93957348394672,93957348394708],["u_unescapeAt_68",93957348394768,93957348395847],["u_terminateUChars_68",93957348395888,93957348395951],["ustr_hashUCharsN_68",93957348396016,93957348396101],["ustr_hashICharsN_68",93957348396192,93957348396294],["icu_68::WholeStringBreakIterator::getUText(UText*, UErrorCode&) const",93957348396320,93957348396339],["icu_68::WholeStringBreakIterator::setText(UText*, UErrorCode&)",93957348396384,93957348396438],["u_strFromUTF8WithSub_68",93957348396800,93957348398787],["_appendUTF8(unsigned char*, int)",93957348401024,93957348401183],["utext_moveIndex32_68",93957348401216,93957348401727],["utext_previous32_68",93957348401904,93957348402071],["utext_getNativeIndex_68",93957348402096,93957348402123],["utext_getPreviousNativeIndex_68",93957348402304,93957348402704],["utext_char32At_68",93957348402944,93957348403248],["utext_clone_68",93957348403376,93957348403451],["utext_close_68",93957348403840,93957348403974],["utext_openConstUnicodeString_68",93957348404016,93957348404274],["utext_openCharacterIterator_68",93957348404464,93957348404617],["unistrTextClone(UText*, UText const*, signed char, UErrorCode*)",93957348405088,93957348405183],["unistrTextAccess(UText*, long, signed char)",93957348405216,93957348405286],["unistrTextReplace(UText*, long, long, char16_t const*, int, UErrorCode*)",93957348405616,93957348405932],["unistrTextClose(UText*)",93957348406336,93957348406381],["ucstrTextLength(UText*)",93957348406944,93957348407016],["ucstrTextExtract(UText*, long, long, char16_t*, int, UErrorCode*)",93957348407488,93957348407914],["charIterTextClone(UText*, UText const*, signed char, UErrorCode*)",93957348407968,93957348408358],["charIterTextAccess(UText*, long, signed char)",93957348408384,93957348408776],["charIterTextClose(UText*)",93957348409168,93957348409207],["utf8_prevCharSafeBody_68",93957348409808,93957348410392],["icu_68::ICU_Utility::isUnprintable(int)",93957348410688,93957348410703],["icu_68::ICU_Utility::skipWhitespace(icu_68::UnicodeString const&, int&, signed char)",93957348411120,93957348411225],["utrace_entry_68",93957348411344,93957348411374],["utrace_data_68",93957348411632,93957348411796],["utrie2_open_68",93957348411824,93957348412938],["utrie2_set32ForLeadSurrogateCodeUnit_68",93957348413072,93957348413202],["utrie2_setRange32_68",93957348419424,93957348421561],["utrie2_get32_68",93957348422208,93957348422604],["utrie2_close_68",93957348423152,93957348423226],["utrie2_enum_68",93957348423248,93957348423274],["utrie2_enumForLeadSurrogate_68",93957348424576,93957348424628],["icu_68::UVector::UVector(UErrorCode&)",93957348424656,93957348424735],["icu_68::UVector::UVector(void (*)(void*), signed char (*)(UElement, UElement), UErrorCode&)",93957348424848,93957348424931],["icu_68::UVector::~UVector()",93957348425072,93957348425192],["icu_68::UVector::~UVector()",93957348425280,93957348425408],["icu_68::UVector::setSize(int, UErrorCode&)",93957348425648,93957348426104],["icu_68::UVector::addElement(void*, UErrorCode&)",93957348426256,93957348426399],["icu_68::UVector::insertElementAt(void*, int, UErrorCode&)",93957348426480,93957348426830],["icu_68::UVector::containsAll(icu_68::UVector const&) const",93957348426864,93957348427112],["icu_68::UVector::removeElementAt(int)",93957348427536,93957348427658],["icu_68::UVector::orphanElementAt(int)",93957348428064,93957348428170],["icu_68::UVector::indexOf(void*, int) const",93957348428480,93957348428664],["icu_68::UVector::sortedInsert(UElement, signed char (*)(UElement, UElement), UErrorCode&)",93957348428688,93957348429154],["clntunix_create",139871564473888,139871564474607],["authunix_create_default",139871564480384,139871564480749],["clnt_sperror",139871564481424,139871564482001],["clnt_perrno",139871564482048,139871564482080],["ccos",139871565473712,139871565473737],["cproj",139871565487936,139871565488013],["fmax",139871565491120,139871565491181],["canonicalize",139871565491328,139871565491377],["llogb",139871565491504,139871565491596],["scalbln",139871565491664,139871565491790],["fminmag",139871565492000,139871565492191],["pow",139871565492256,139871565492438],["v8::(anonymous namespace)::DisposeModuleEmbedderData(v8::Local<v8::Context>)",93957335244896,93957335245217],["v8::Shell::RealmGlobal(v8::FunctionCallbackInfo<v8::Value> const&)",93957335246544,93957335246655],["v8::Shell::DisposeRealm(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957335249072,93957335249231],["v8::Shell::RealmCreateAllowCrossRealmAccess(v8::FunctionCallbackInfo<v8::Value> const&)",93957335249264,93957335249334],["v8::internal::RuntimeProfiler::ShouldOptimize(v8::internal::JSFunction, v8::internal::BytecodeArray)",93957336709792,93957336710217],["v8::internal::StackGuard::HandleInterrupts()",93957336712304,93957336715149],["v8::internal::ThreadManager::FirstThreadStateInUse()",93957336715552,93957336715580],["v8::internal::ThreadManager::IterateArchivedThreads(v8::internal::ThreadVisitor*)",93957336716064,93957336716174],["v8::internal::ExternalizeStringExtension::GetNativeFunctionTemplate(v8::Isolate*, v8::Local<v8::String>)",93957336716400,93957336716547],["v8::internal::ExternalizeStringExtension::IsOneByte(v8::FunctionCallbackInfo<v8::Value> const&)",93957336717168,93957336717311],["v8::internal::SimpleStringResource<char, v8::String::ExternalOneByteStringResource>::~SimpleStringResource()",93957336717344,93957336717391],["v8::internal::GCExtension::GC(v8::FunctionCallbackInfo<v8::Value> const&)",93957336717440,93957336718450],["v8::internal::CpuProfiler::StopProcessor()",93957339612976,93957339613166],["v8::internal::HeapProfiler::DeleteAllSnapshots()",93957339618912,93957339619108],["v8::internal::HeapProfiler::GetSnapshotsCount() const",93957339620800,93957339620818],["v8::internal::HeapProfiler::ClearHeapObjectMap()",93957339621328,93957339621410],["std::__1::default_delete<v8::internal::HeapObjectsMap>::operator()(v8::internal::HeapObjectsMap*) const",93957339624288,93957339624421],["v8::internal::HeapSnapshot::AddSyntheticRootEntries()",93957339624944,93957339625894],["v8::internal::HeapObjectsMap::MoveObject(unsigned long, unsigned long, int)",93957339626960,93957339628179],["v8::internal::HeapObjectsMap::StopHeapObjectsTracking()",93957339629008,93957339629022],["v8::internal::HeapObjectsMap::PushHeapObjectsStats(v8::OutputStream*, long*)",93957339630768,93957339631333],["v8::internal::V8HeapExplorer::AddEntry(v8::internal::HeapObject)",93957339631360,93957339632949],["v8::internal::V8HeapExplorer::ExtractLocationForJSFunction(v8::internal::HeapEntry*, v8::internal::JSFunction)",93957339633312,93957339633603],["v8::internal::V8HeapExplorer::GetConstructorName(v8::internal::JSObject)",93957339633744,93957339633957],["v8::internal::V8HeapExplorer::AddEntry(unsigned long, v8::internal::HeapEntry::Type, char const*, unsigned long)",93957339636080,93957339636466],["v8::internal::V8HeapExplorer::ExtractJSArrayBufferReferences(v8::internal::HeapEntry*, v8::internal::JSArrayBuffer)",93957339637648,93957339638008],["v8::internal::V8HeapExplorer::ExtractJSObjectReferences(v8::internal::HeapEntry*, v8::internal::JSObject)",93957339638192,93957339639435],["v8::internal::V8HeapExplorer::ExtractMapReferences(v8::internal::HeapEntry*, v8::internal::Map)",93957339639696,93957339640353],["v8_inspector::String16::stripWhiteSpace() const",93957342398112,93957342399605],["std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >::__grow_by(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)",93957342407008,93957342408279],["v8_inspector::toString16(v8_inspector::StringView const&)",93957342408800,93957342408871],["v8_inspector::stackTraceIdToString(unsigned long)",93957342409200,93957342409285],["v8_crdtp::ProtocolTypeTraits<v8_inspector::protocol::Binary, void>::Serialize(v8_inspector::protocol::Binary const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342409504,93957342409530],["v8_inspector::(anonymous namespace)::StringBuffer8::~StringBuffer8()",93957342409568,93957342409606],["v8_inspector::(anonymous namespace)::StringBuffer8::string() const",93957342409680,93957342409711],["v8_inspector::(anonymous namespace)::StringBuffer16::~StringBuffer16()",93957342409744,93957342409792],["v8::internal::compiler::JSTypedArrayRef::ShouldHaveBeenSerialized() const",93957344099664,93957344099734],["v8::internal::compiler::JSHeapBroker::GetFeedbackForGlobalAccess(v8::internal::compiler::FeedbackSource const&)",93957344118496,93957344118556],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, std::__1::__unordered_map_hasher<v8::internal::compiler::PropertyAccessTarget, std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::PropertyAccessTarget::Hash, v8::internal::compiler::PropertyAccessTarget::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::PropertyAccessTarget, std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::PropertyAccessTarget::Equal, v8::internal::compiler::PropertyAccessTarget::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo> > >::__rehash(unsigned long)",93957344126112,93957344126878],["v8::internal::compiler::AllocationSiteRef::AllocationSiteRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344137840,93957344137904],["v8::internal::compiler::JSInliningHeuristic::TryReuseDispatch(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, int)",93957344150800,93957344152671],["std::__1::pair<std::__1::__tree_iterator<unsigned int, std::__1::__tree_node<unsigned int, void*>*, long>, bool> std::__1::__tree<unsigned int, std::__1::less<unsigned int>, v8::internal::ZoneAllocator<unsigned int> >::__emplace_unique_key_args<unsigned int, unsigned int>(unsigned int const&, unsigned int&&)",93957344154128,93957344154370],["v8::internal::compiler::JSInliner::ReduceJSWasmCall(v8::internal::compiler::Node*)",93957344166288,93957344167915],["v8::internal::compiler::JSIntrinsicLowering::ReduceDeoptimizeNow(v8::internal::compiler::Node*)",93957344175168,93957344175695],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncFunctionReject(v8::internal::compiler::Node*)",93957344177152,93957344177219],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncGeneratorReject(v8::internal::compiler::Node*)",93957344177696,93957344177879],["v8::internal::compiler::JSIntrinsicLowering::ReduceIsInstanceType(v8::internal::compiler::Node*, v8::internal::InstanceType)",93957344178688,93957344179753],["v8::internal::compiler::JSIntrinsicLowering::ReduceToObject(v8::internal::compiler::Node*)",93957344180000,93957344180046],["v8::internal::compiler::JSIntrinsicLowering::ReduceGetImportMetaObject(v8::internal::compiler::Node*)",93957344180816,93957344180862],["v8::internal::compiler::JSNativeContextSpecialization::JSNativeContextSpecialization(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*, v8::base::Flags<v8::internal::compiler::JSNativeContextSpecialization::Flag, int>, v8::internal::compiler::CompilationDependencies*, v8::internal::Zone*, v8::internal::Zone*)",93957344181888,93957344182099],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSAsyncFunctionReject(v8::internal::compiler::Node*)",93957344184000,93957344184892],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSHasInPrototypeChain(v8::internal::compiler::Node*)",93957344189984,93957344190492],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSResolvePromise(v8::internal::compiler::Node*)",93957344193456,93957344195498],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSStoreGlobal(v8::internal::compiler::Node*)",93957344196080,93957344196834],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSLoadNamedFromSuper(v8::internal::compiler::Node*)",93957344198272,93957344198576],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSHasProperty(v8::internal::compiler::Node*)",93957344198896,93957344199208],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSStoreProperty(v8::internal::compiler::Node*)",93957344199584,93957344199842],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSStoreDataPropertyInLiteral(v8::internal::compiler::Node*)",93957344200176,93957344200639],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSToObject(v8::internal::compiler::Node*)",93957344200912,93957344201228],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSGetIterator(v8::internal::compiler::Node*)",93957344201840,93957344203858],["v8::internal::compiler::JSNativeContextSpecialization::CreateDelayedStringConstant(v8::internal::compiler::Node*)",93957344204464,93957344205199],["v8::internal::compiler::JSNativeContextSpecialization::ReduceGlobalAccess(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::NameRef const&, v8::internal::compiler::AccessMode, v8::internal::compiler::Node*, v8::internal::compiler::PropertyCellRef const&, v8::internal::compiler::Node*)",93957344206448,93957344209950],["v8::internal::compiler::JSNativeContextSpecialization::ReduceNamedAccess(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::NamedAccessFeedback const&, v8::internal::compiler::AccessMode, v8::internal::compiler::Node*)",93957344210976,93957344221581],["v8::internal::compiler::JSNativeContextSpecialization::RemoveImpossibleMaps(v8::internal::compiler::Node*, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> >*) const",93957344223360,93957344223857],["v8::internal::compiler::JSNativeContextSpecialization::ReducePropertyAccess(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::base::Optional<v8::internal::compiler::NameRef>, v8::internal::compiler::Node*, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::AccessMode)",93957344224016,93957344224284],["v8::internal::compiler::JSNativeContextSpecialization::BuildIndexedStringLoad(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::KeyedAccessLoadMode)",93957344224928,93957344226176],["v8::internal::compiler::JSNativeContextSpecialization::ReduceElementAccess(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::ElementAccessFeedback const&)",93957344226560,93957344233043],["v8::internal::compiler::(anonymous namespace)::GetTypedArrayConstant(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*)",93957344235136,93957344235467],["std::__1::__num_put<char>::__widen_and_group_int(char*, char*, char*, char*, char*&, char*&, std::__1::locale const&)",93957346691248,93957346692252],["std::__1::num_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, long) const",93957346699696,93957346700322],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get_date(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346709888,93957346709996],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, tm*, wchar_t const*, wchar_t const*) const",93957346714176,93957346715421],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, tm*, char, char) const",93957346716720,93957346718378],["std::__1::time_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, tm const*, char, char) const",93957346719792,93957346720056],["std::__1::moneypunct<char, false>::do_grouping() const",93957346720608,93957346720631],["std::__1::money_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, bool, std::__1::ios_base&, unsigned int&, long double&) const",93957346720736,93957346722077],["std::__1::money_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, bool, std::__1::ios_base&, unsigned int&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) const",93957346727184,93957346728094],["std::__1::money_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, bool, std::__1::ios_base&, unsigned int&, long double&) const",93957346728640,93957346729990],["std::__1::money_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, bool, std::__1::ios_base&, unsigned int&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&) const",93957346735216,93957346735938],["std::__1::money_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, bool, std::__1::ios_base&, char, long double) const",93957346736496,93957346738289],["std::__1::__money_put<char>::__format(char*, char*&, char*&, unsigned int, char const*, char const*, std::__1::ctype<char> const&, bool, std::__1::money_base::pattern const&, char, char, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)",93957346738832,93957346740060],["std::__1::money_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, bool, std::__1::ios_base&, wchar_t, long double) const",93957346741344,93957346743101],["std::__1::__money_put<wchar_t>::__format(wchar_t*, wchar_t*&, wchar_t*&, unsigned int, wchar_t const*, wchar_t const*, std::__1::ctype<wchar_t> const&, bool, std::__1::money_base::pattern const&, wchar_t, wchar_t, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, int)",93957346743632,93957346744926],["std::__1::messages<char>::do_open(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::locale const&) const",93957346746000,93957346746045],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseUnresolvedType()",93957346851744,93957346852016],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseSourceName((anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::NameState*)",93957346852896,93957346853403],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseOperatorName((anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::NameState*)",93957346853552,93957346856172],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::ConversionOperatorType, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&)",93957346856288,93957346856425],["(anonymous namespace)::itanium_demangle::ConversionOperatorType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346856576,93957346856735],["(anonymous namespace)::itanium_demangle::GlobalQualifiedName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346856912,93957346857058],["(anonymous namespace)::itanium_demangle::MemberExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346857088,93957346857300],["(anonymous namespace)::itanium_demangle::BracedExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346857616,93957346858067],["(anonymous namespace)::itanium_demangle::InitListExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346858544,93957346858766],["(anonymous namespace)::itanium_demangle::EnclosingExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346859488,93957346859731],["(anonymous namespace)::itanium_demangle::SizeofParamPackExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346860176,93957346860407],["(anonymous namespace)::itanium_demangle::ThrowExpr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346860432,93957346860586],["(anonymous namespace)::itanium_demangle::ExpandedSpecialSubstitution::getBaseName() const",93957346861328,93957346861360],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseBareSourceName()",93957346861568,93957346861636],["(anonymous namespace)::itanium_demangle::UnnamedTypeName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346861936,93957346862205],["(anonymous namespace)::itanium_demangle::StructuredBindingName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346862576,93957346862750],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::LocalName, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346862960,93957346863108],["(anonymous namespace)::itanium_demangle::SpecialSubstitution::getBaseName() const",93957346863760,93957346863792],["(anonymous namespace)::itanium_demangle::ParameterPack::hasArraySlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346863872,93957346863951],["(anonymous namespace)::itanium_demangle::ParameterPack::getSyntaxNode((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346864032,93957346864098],["(anonymous namespace)::itanium_demangle::ParameterPack::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346864176,93957346864239],["(anonymous namespace)::itanium_demangle::NameWithTemplateArgs::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346864496,93957346864601],["(anonymous namespace)::itanium_demangle::EnableIfAttr::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346864768,93957346864957],["(anonymous namespace)::itanium_demangle::FunctionEncoding::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346865152,93957346865840],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseFunctionType()",93957346866160,93957346867704],["(anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::parseVectorType()",93957346868688,93957346869613],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::PointerType, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&)",93957346869952,93957346870102],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::PostfixQualifiedType, (anonymous namespace)::itanium_demangle::Node*&, char const (&) [9]>((anonymous namespace)::itanium_demangle::Node*&, char const (&) [9])",93957346870288,93957346870449],["(anonymous namespace)::itanium_demangle::NoexceptSpec::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346870640,93957346870855],["(anonymous namespace)::itanium_demangle::FunctionType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346871056,93957346871152],["(anonymous namespace)::itanium_demangle::ObjCProtoName::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346871920,93957346872233],["(anonymous namespace)::itanium_demangle::PointerType::hasRHSComponentSlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346872480,93957346872511],["(anonymous namespace)::itanium_demangle::QualType::hasFunctionSlow((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346872544,93957346872576],["(anonymous namespace)::itanium_demangle::QualType::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346872880,93957346872898],["(anonymous namespace)::itanium_demangle::VectorType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346873200,93957346873563],["(anonymous namespace)::itanium_demangle::ArrayType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346873728,93957346873746],["(anonymous namespace)::itanium_demangle::Node* (anonymous namespace)::itanium_demangle::AbstractManglingParser<(anonymous namespace)::itanium_demangle::ManglingParser<(anonymous namespace)::DefaultAllocator>, (anonymous namespace)::DefaultAllocator>::make<(anonymous namespace)::itanium_demangle::PointerToMemberType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&)",93957346874176,93957346874335],["(anonymous namespace)::itanium_demangle::PointerToMemberType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346874368,93957346874711],["(anonymous namespace)::itanium_demangle::ElaboratedTypeSpefType::printLeft((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346874880,93957346875118],["(anonymous namespace)::itanium_demangle::PointerType::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346875792,93957346876038],["(anonymous namespace)::itanium_demangle::ReferenceType::printRight((anonymous namespace)::itanium_demangle::OutputStream&) const",93957346876544,93957346876783],["v8::base::bits::RoundUpToPowerOfTwo32(unsigned int)",93957346876928,93957346876968],["v8::base::bits::SignedDiv32(int, int)",93957346877024,93957346877056],["v8::base::bits::SignedSaturatedAdd64(long, long)",93957346877088,93957346877143],["v8::base::BoundedPageAllocator::BoundedPageAllocator(v8::PageAllocator*, unsigned long, unsigned long, unsigned long)",93957346877184,93957346877387],["v8::base::BoundedPageAllocator::AllocatePagesAt(unsigned long, unsigned long, v8::PageAllocator::Permission)",93957346877600,93957346877820],["v8::base::BoundedPageAllocator::FreePages(void*, unsigned long)",93957346878048,93957346878179],["v8::base::BoundedPageAllocator::SetPermissions(void*, unsigned long, v8::PageAllocator::Permission)",93957346878368,93957346878386],["v8::base::BoundedPageAllocator::~BoundedPageAllocator()",93957346878432,93957346878478],["v8::base::BoundedPageAllocator::SetRandomMmapSeed(long)",93957346878544,93957346878562],["v8::base::CPU::CPU()",93957346878592,93957346879124],["v8::base::MagicNumbersForDivision<unsigned int> v8::base::UnsignedDivisionByConstant<unsigned int>(unsigned int, unsigned int)",93957346879312,93957346879603],["v8::base::hash_combine(unsigned long, unsigned long)",93957346879776,93957346879817],["v8::base::hash_value(unsigned long)",93957346879872,93957346879946],["v8::base::ieee754::acosh(double)",93957346880720,93957346881034],["v8::base::ieee754::log1p(double)",93957346881696,93957346882440],["v8::base::ieee754::asinh(double)",93957346883152,93957346883520],["v8::base::ieee754::atan2(double, double)",93957346884064,93957346884614],["v8::base::ieee754::(anonymous namespace)::__ieee754_rem_pio2(double, double*)",93957346885936,93957346890863],["v8::base::ieee754::atanh(double)",93957346891472,93957346891750],["v8::base::ieee754::log10(double)",93957346892224,93957346892495],["v8::base::ieee754::cbrt(double)",93957346893312,93957346893584],["v8::base::ieee754::tan(double)",93957346894752,93957346894848],["v8::base::ieee754::cosh(double)",93957346895504,93957346895787],["v8::base::ieee754::sinh(double)",93957346898016,93957346898317],["v8::base::SetPrintStackTrace(void (*)())",93957346898592,93957346898605],["v8::base::CallOnceImpl(std::__1::atomic<unsigned char>*, std::__1::function<void ()>)",93957346898960,93957346899022],["v8::base::PageAllocator::SetRandomMmapSeed(long)",93957346899072,93957346899085],["v8::base::PageAllocator::AllocatePages(void*, unsigned long, unsigned long, v8::PageAllocator::Permission)",93957346899104,93957346899135],["v8::base::PageAllocator::FreePages(void*, unsigned long)",93957346899296,93957346899312],["v8::base::PageAllocator::SetPermissions(void*, unsigned long, v8::PageAllocator::Permission)",93957346899344,93957346899362],["v8::base::SharedMemory::~SharedMemory()",93957346899392,93957346899431],["v8::base::SharedMemory::RemapTo(void*) const",93957346899504,93957346899587],["v8::base::SharedMemoryMapping::~SharedMemoryMapping()",93957346899648,93957346899699],["v8::base::ConditionVariable::NotifyOne()",93957346899792,93957346899802],["v8::base::ConditionVariable::WaitFor(v8::base::Mutex*, v8::base::TimeDelta const&)",93957346899824,93957346899943],["v8::base::RecursiveMutex::~RecursiveMutex()",93957346899968,93957346899978],["v8::base::RecursiveMutex::RecursiveMutex()",93957346900000,93957346900067],["v8::base::SharedMutex::~SharedMutex()",93957346900096,93957346900106],["v8::base::SharedMutex::LockExclusive()",93957346900128,93957346900138],["v8::base::Semaphore::Semaphore(int)",93957346900160,93957346900174],["v8::base::Semaphore::Signal()",93957346900192,93957346900228],["v8::base::TimeDelta::InSecondsF() const",93957346900288,93957346900335],["v8::base::TimeDelta::InMilliseconds() const",93957346900384,93957346900441],["v8::base::Time::FromTimespec(timespec)",93957346900544,93957346900628],["v8::base::TimeTicks::HighResolutionNow()",93957346900752,93957346900881],["v8::base::TimeTicks::IsHighResolution()",93957346900960,93957346901330],["v8::base::RegionAllocator::RegionAllocator(unsigned long, unsigned long, unsigned long)",93957346901472,93957346901912],["v8::base::RegionAllocator::~RegionAllocator()",93957346902144,93957346902290],["v8::base::RegionAllocator::Split(v8::base::RegionAllocator::Region*, unsigned long)",93957346902528,93957346903010],["v8::base::RegionAllocator::AllocateRegion(unsigned long)",93957346903184,93957346903330],["v8::base::RegionAllocator::TrimRegion(unsigned long, unsigned long)",93957346903568,93957346904171],["v8::base::SysInfo::AmountOfPhysicalMemory()",93957346904208,93957346904272],["v8::base::RandomNumberGenerator::RandomNumberGenerator()",93957346904336,93957346904921],["v8::base::RandomNumberGenerator::NextInt(int)",93957346905088,93957346905304],["v8::base::RandomNumberGenerator::NextDouble()",93957346905376,93957346905458],["v8::base::RandomNumberGenerator::NextBytes(void*, unsigned long)",93957346905536,93957346905620],["v8::base::RandomNumberGenerator::NextSampleSlow(unsigned long, unsigned long, std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const&)",93957346906944,93957346908676],["v8::base::VLQBase64Decode(char const*, unsigned long, unsigned long*)",93957346908752,93957346908890],["v8::base::OS::CommitPageSize()",93957346908928,93957346909005],["v8::base::OS::GetRandomMmapAddr()",93957346909264,93957346909511],["v8::base::OS::Free(void*, unsigned long)",93957346909984,93957346910000],["v8::base::OS::SetPermissions(void*, unsigned long, v8::base::OS::MemoryPermission)",93957346910096,93957346910222],["v8::base::OS::GetGCFakeMMapFile()",93957346910320,93957346910333],["v8::base::OS::Abort()",93957346910384,93957346910405],["v8::base::OS::MemoryMappedFile::open(char const*, v8::base::OS::MemoryMappedFile::FileMode)",93957346910432,93957346910691],["v8::base::PosixMemoryMappedFile::~PosixMemoryMappedFile()",93957346910928,93957346911094],["v8::base::OS::GetCurrentProcessId()",93957346911136,93957346911146],["v8::base::OS::ExitProcess(int)",93957346911184,93957346911229],["v8::base::OS::TimeCurrentMillis()",93957346911328,93957346911360],["v8::base::OS::GetLastError()",93957346911456,93957346911469],["v8::base::OS::DirectorySeparator()",93957346911568,93957346911576],["v8::base::OS::OpenTemporaryFile()",93957346911600,93957346911610],["v8::base::OS::VPrint(char const*, __va_list_tag*)",93957346911776,93957346911807],["v8::base::OS::VFPrint(_IO_FILE*, char const*, __va_list_tag*)",93957346911952,93957346911973],["v8::base::OS::VPrintError(char const*, __va_list_tag*)",93957346912144,93957346912175],["v8::base::OS::VSNPrintF(char*, int, char const*, __va_list_tag*)",93957346912368,93957346912441],["v8::base::Thread::Thread(v8::base::Thread::Options const&)",93957346912480,93957346912607],["v8::base::Thread::Start()",93957346912672,93957346912952],["v8::base::Thread::Join()",93957346913056,93957346913075],["v8::base::Thread::DeleteThreadLocalKey(int)",93957346913120,93957346913130],["v8::base::Thread::SetThreadLocal(int, void*)",93957346913152,93957346913162],["v8::base::OS::GetSharedLibraryAddresses()",93957346913200,93957346914012],["v8::base::OS::RemapShared(void*, void*, unsigned long)",93957346914192,93957346914232],["v8::base::PosixDefaultTimezoneCache::LocalTimezone(double)",93957346914688,93957346914787],["v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::__1::unique_ptr<v8::TracingController, std::__1::default_delete<v8::TracingController> >)",93957346914880,93957346914985],["v8::platform::PumpMessageLoop(v8::Platform*, v8::Isolate*, v8::platform::MessageLoopBehavior)",93957346915232,93957346915242],["v8::platform::RunIdleTasks(v8::Platform*, v8::Isolate*, double)",93957346915536,93957346915546],["v8::platform::DefaultPlatform::NotifyIsolateShutdown(v8::Isolate*)",93957346916176,93957346916447],["v8::platform::(anonymous namespace)::DefaultTimeFunction()",93957346917120,93957346917144],["v8::platform::DefaultPlatform::IdleTasksEnabled(v8::Isolate*)",93957346917856,93957346917869],["v8::platform::DefaultPlatform::GetTracingController()",93957346918016,93957346918026],["std::__1::__tree<std::__1::__value_type<v8::Isolate*, std::__1::shared_ptr<v8::platform::DefaultForegroundTaskRunner> >, std::__1::__map_value_compare<v8::Isolate*, std::__1::__value_type<v8::Isolate*, std::__1::shared_ptr<v8::platform::DefaultForegroundTaskRunner> >, std::__1::less<v8::Isolate*>, true>, std::__1::allocator<std::__1::__value_type<v8::Isolate*, std::__1::shared_ptr<v8::platform::DefaultForegroundTaskRunner> > > >::destroy(std::__1::__tree_node<std::__1::__value_type<v8::Isolate*, std::__1::shared_ptr<v8::platform::DefaultForegroundTaskRunner> >, void*>*)",93957346918128,93957346918223],["v8::base::debug::EnableInProcessStackDumping()",93957346918320,93957346918731],["v8::base::debug::StackTrace::Print() const",93957346919888,93957346919929],["v8::platform::DefaultJobState::DefaultJobState(v8::Platform*, std::__1::unique_ptr<v8::JobTask, std::__1::default_delete<v8::JobTask> >, v8::TaskPriority, unsigned long)",93957346921408,93957346921523],["v8::platform::DefaultJobState::Join()",93957346922192,93957346922696],["v8::platform::DefaultJobHandle::~DefaultJobHandle()",93957346923296,93957346923372],["v8::platform::DefaultJobHandle::IsActive()",93957346923744,93957346923823],["v8::JobHandle::IsCompleted()",93957346923920,93957346923934],["v8::platform::DefaultJobWorker::~DefaultJobWorker()",93957346924000,93957346924047],["v8::platform::DefaultForegroundTaskRunner::DefaultForegroundTaskRunner(v8::platform::IdleTaskSupport, double (*)())",93957346924560,93957346924703],["v8::platform::DefaultForegroundTaskRunner::PostDelayedTaskLocked(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, double, v8::platform::DefaultForegroundTaskRunner::Nestability, v8::base::LockGuard<v8::base::Mutex, (v8::base::NullBehavior)0> const&)",93957346925936,93957346926426],["v8::platform::DefaultForegroundTaskRunner::IdleTasksEnabled()",93957346926864,93957346926880],["std::__1::deque<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::allocator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > > > >::erase(std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > > const*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > > const&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > > const* const*, long, 0l>)",93957346928224,93957346929132],["std::__1::__deque_base<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::allocator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > > > >::clear()",93957346929792,93957346930064],["_ZNSt3__113move_backwardIPNS_4pairIN2v88platform27DefaultForegroundTaskRunner11NestabilityENS_10unique_ptrINS2_4TaskENS_14default_deleteIS7_EEEEEESB_SC_RSB_PSC_lLl0EEENS_16__deque_iteratorIT0_T1_T2_T3_T4_XT5_EEET_SM_SL_PNS_9enable_ifIXsr33__is_cpp17_random_access_iteratorISM_EE5valueEvE4typeE",93957346931472,93957346931978],["v8::platform::DefaultWorkerThreadsTaskRunner::Terminate()",93957346932704,93957346932834],["v8::platform::DefaultWorkerThreadsTaskRunner::WorkerThread::~WorkerThread()",93957346933136,93957346933182],["v8::platform::DelayedTaskQueue::Append(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957346933552,93957346933723],["std::__1::__tree<std::__1::__value_type<double, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::__map_value_compare<double, std::__1::__value_type<double, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::less<double>, true>, std::__1::allocator<std::__1::__value_type<double, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > > > >::destroy(std::__1::__tree_node<std::__1::__value_type<double, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, void*>*)",93957346935008,93957346935082],["v8::platform::tracing::TraceBufferChunk::TraceBufferChunk(unsigned int)",93957346935760,93957346937568],["std::__1::vector<std::__1::unique_ptr<v8::platform::tracing::TraceBufferChunk, std::__1::default_delete<v8::platform::tracing::TraceBufferChunk> >, std::__1::allocator<std::__1::unique_ptr<v8::platform::tracing::TraceBufferChunk, std::__1::default_delete<v8::platform::tracing::TraceBufferChunk> > > >::__append(unsigned long)",93957346938016,93957346938867],["v8::platform::tracing::TraceConfig::AddIncludedCategory(char const*)",93957346941168,93957346941401],["v8::platform::tracing::JSONTraceWriter::AppendArgValue(unsigned char, v8::platform::tracing::TraceObject::ArgValue)",93957346942416,93957346943688],["v8::platform::tracing::TraceWriter::CreateJSONTraceWriter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957346945152,93957346945310],["v8::platform::tracing::TracingController::~TracingController()",93957346946224,93957346946252],["v8::platform::tracing::TracingController::AddTraceEventWithTimestamp(char, unsigned char const*, char const*, char const*, unsigned long, unsigned long, int, char const**, unsigned char const*, unsigned long const*, std::__1::unique_ptr<v8::ConvertableToTraceFormat, std::__1::default_delete<v8::ConvertableToTraceFormat> >*, unsigned int, long)",93957346946448,93957346946634],["v8::platform::tracing::TracingController::GetCategoryGroupEnabled(char const*)",93957346947280,93957346947641],["icu_68::SharedCalendar::~SharedCalendar()",93957346948272,93957346948320],["icu_68::BasicCalendarFactory::~BasicCalendarFactory()",93957346949536,93957346949546],["icu_68::CalendarService::~CalendarService()",93957346949632,93957346949642],["icu_68::Calendar::clear()",93957346950192,93957346950279],["icu_68::Calendar::~Calendar()",93957346952112,93957346952163],["icu_68::Calendar::createInstance(icu_68::Locale const&, UErrorCode&)",93957346953248,93957346953284],["icu_68::Calendar::setTimeInMillis(double, UErrorCode&)",93957346954896,93957346955086],["icu_68::Calendar::operator==(icu_68::Calendar const&) const",93957346955472,93957346955704],["icu_68::Calendar::isLenient() const",93957346956128,93957346956140],["icu_68::Calendar::getRelatedYear(UErrorCode&) const",93957346956768,93957346957267],["icu_68::Calendar::newestStamp(UCalendarDateFields, UCalendarDateFields, int) const",93957346958464,93957346958907],["icu_68::Calendar::computeWeekFields(UErrorCode&)",93957346960256,93957346960987],["icu_68::Calendar::weekNumber(int, int, int)",93957346961104,93957346961235],["icu_68::Calendar::add(UCalendarDateFields, int, UErrorCode&)",93957346964432,93957346968171],["icu_68::Calendar::fieldDifference(double, UCalendarDateFields, UErrorCode&)",93957346968512,93957346970921],["icu_68::Calendar::isWeekend() const",93957346971440,93957346971692],["icu_68::Calendar::getLeastMaximum(UCalendarDateFields) const",93957346971792,93957346971814],["icu_68::Calendar::getFieldResolutionTable() const",93957346972816,93957346972829],["icu_68::Calendar::computeZoneOffset(double, double, UErrorCode&)",93957346974160,93957346974645],["icu_68::Calendar::handleGetYearLength(int) const",93957346977104,93957346977176],["icu_68::BasicCalendarFactory::create(icu_68::ICUServiceKey const&, icu_68::ICUService const*, UErrorCode&) const",93957346981056,93957346982050],["icu_68::CalendarService::cloneInstance(icu_68::UObject*) const",93957346983008,93957346983081],["icu_68::LocaleCacheKey<icu_68::SharedCalendar>::~LocaleCacheKey()",93957346983600,93957346983642],["icu_68::LocaleCacheKey<icu_68::SharedCalendar>::clone() const",93957346983920,93957346984014],["icu_68::BuddhistCalendar::BuddhistCalendar(icu_68::Locale const&, UErrorCode&)",93957346984160,93957346984208],["icu_68::BuddhistCalendar::getType() const",93957346984320,93957346984333],["icu_68::BuddhistCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957346984496,93957346984514],["icu_68::ChineseCalendar::clone() const",93957346984976,93957346985077],["icu_68::ChineseCalendar::ChineseCalendar(icu_68::ChineseCalendar const&)",93957346985568,93957346985641],["icu_68::ChineseCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957346985712,93957346985739],["icu_68::ChineseCalendar::getFieldResolutionTable() const",93957346986000,93957346986013],["icu_68::ChineseCalendar::winterSolstice(int) const",93957346986912,93957346987397],["icu_68::ChineseCalendar::majorSolarTerm(int) const",93957346988064,93957346988404],["icu_68::ChineseCalendar::newYear(int) const",93957346989312,93957346989629],["icu_68::ChineseCalendar::defaultCenturyStartYear() const",93957346990000,93957346990056],["icu_68::CalendarAstronomer::setTime(double)",93957346990544,93957346990626],["icu_68::CalendarAstronomer::WINTER_SOLSTICE()",93957346991520,93957346991534],["icu_68::CalendarAstronomer::getMoonPosition()",93957346992368,93957346993094],["icu_68::CalendarCache::put(icu_68::CalendarCache**, int, int, UErrorCode&)",93957346993520,93957346993786],["icu_68::MoonTimeAngleFunc::eval(icu_68::CalendarAstronomer&)",93957346993984,93957346994057],["icu_68::Collator::compare(icu_68::UnicodeString const&, icu_68::UnicodeString const&) const",93957346995952,93957346995983],["icu_68::Collator::compareUTF8(icu_68::StringPiece const&, icu_68::StringPiece const&, UErrorCode&) const",93957346996080,93957346996285],["icu_68::StringEnumeration::operator==(icu_68::StringEnumeration const&) const",93957346997056,93957346997097],["icu_68::Collator::getStrength() const",93957346997248,93957346997287],["icu_68::Collator::setReorderCodes(int const*, int, UErrorCode&)",93957346997392,93957346997411],["icu_68::ICUCollatorService::getKey(icu_68::ICUServiceKey&, icu_68::UnicodeString*, UErrorCode&) const",93957346997680,93957346997807],["collator_cleanup()",93957346998336,93957346998497],["icu_68::CollationCacheEntry::CollationCacheEntry(icu_68::Locale const&, icu_68::CollationTailoring const*)",93957346999104,93957346999176],["icu_68::CollationTailoring::~CollationTailoring()",93957346999696,93957346999887],["icu_68::CollationTailoring::getUCAVersion() const",93957347000192,93957347000220],["icu_68::CollationSettings::copyReorderingFrom(icu_68::CollationSettings const&, UErrorCode&)",93957347000544,93957347000992],["icu_68::CollationSettings::hashCode() const",93957347001216,93957347001885],["icu_68::CollationSettings::reorderEx(unsigned int) const",93957347004416,93957347004465],["icu_68::CollationSettings::setAlternateHandling(UColAttributeValue, int, UErrorCode&)",93957347004704,93957347004759],["icu_68::CollationData::getSingleCE(int, UErrorCode&) const",93957347004976,93957347005548],["icu_68::CollationData::makeReorderRanges(int const*, int, icu_68::UVector32&, UErrorCode&) const",93957347005936,93957347005954],["icu_68::Collation::decTwoBytePrimaryByOneStep(unsigned int, signed char, int)",93957347008336,93957347008396],["icu_68::CollationDataReader::read(icu_68::CollationTailoring const*, unsigned char const*, int, icu_68::CollationTailoring&, UErrorCode&)",93957347008944,93957347011350],["icu_68::CollationFastLatin::compareUTF16(unsigned short const*, unsigned short const*, int, char16_t const*, int, char16_t const*, int)",93957347012400,93957347016405],["icu_68::CopticCalendar::CopticCalendar(icu_68::Locale const&, UErrorCode&)",93957347021680,93957347021711],["icu_68::CopticCalendar::handleComputeFields(int, UErrorCode&)",93957347021920,93957347022117],["icu_68::CopticCalendar::getJDEpochOffset() const",93957347022544,93957347022555],["icu_68::CECalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347022832,93957347022859],["icu_68::CurrencyUnit::CurrencyUnit(icu_68::MeasureUnit const&, UErrorCode&)",93957347023392,93957347023498],["icu_68::CurrencyUnit::~CurrencyUnit()",93957347023776,93957347023786],["icu_68::DangiCalendar::getDangiCalZoneAstroCalc() const",93957347023920,93957347024748],["calendar_dangi_cleanup()",93957347024848,93957347024893],["icu_68::DateFmtBestPatternKey::~DateFmtBestPatternKey()",93957347025024,93957347025088],["icu_68::DateFormat::operator=(icu_68::DateFormat const&)",93957347025408,93957347025554],["icu_68::DateFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347025984,93957347026179],["icu_68::DateFormat::parse(icu_68::UnicodeString const&, UErrorCode&) const",93957347026592,93957347026825],["icu_68::DateFormat::createDateInstance(icu_68::DateFormat::EStyle, icu_68::Locale const&)",93957347027088,93957347027115],["icu_68::DateFormat::adoptCalendar(icu_68::Calendar*)",93957347028048,93957347028091],["icu_68::DateFormat::setNumberFormat(icu_68::NumberFormat const&)",93957347028256,93957347028310],["icu_68::DateFormat::getTimeZone() const",93957347028400,93957347028429],["icu_68::DateFormat::isCalendarLenient() const",93957347028704,93957347028730],["icu_68::DateFormat::getBooleanAttribute(UDateFormatBooleanAttribute, UErrorCode&) const",93957347028896,93957347028914],["icu_68::DateFmtBestPatternKey::createObject(void const*, UErrorCode&) const",93957347029344,93957347029615],["icu_68::LocaleCacheKey<icu_68::DateFmtBestPattern>::clone() const",93957347029792,93957347029886],["icu_68::DecimalFormat::DecimalFormat(icu_68::UnicodeString const&, icu_68::DecimalFormatSymbols*, UNumberFormatStyle, UErrorCode&)",93957347031808,93957347032107],["icu_68::DecimalFormat::setMaximumSignificantDigits(int)",93957347033088,93957347033159],["icu_68::DecimalFormat::setCurrencyUsage(UCurrencyUsage, UErrorCode*)",93957347033392,93957347033450],["icu_68::DecimalFormat::setFormatFailIfMoreThanMaxDigits(signed char)",93957347033680,93957347033741],["icu_68::DecimalFormat::setParseIntegerOnly(signed char)",93957347034240,93957347034335],["icu_68::DecimalFormat::~DecimalFormat()",93957347035920,93957347036039],["icu_68::DecimalFormat::format(double, icu_68::UnicodeString&, icu_68::FieldPosition&) const",93957347036416,93957347036991],["icu_68::DecimalFormat::format(int, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347038208,93957347038225],["icu_68::DecimalFormat::format(long, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347039296,93957347039823],["icu_68::DecimalFormat::parse(icu_68::UnicodeString const&, icu_68::Formattable&, icu_68::ParsePosition&) const",93957347041200,93957347041730],["icu_68::DecimalFormat::setDecimalFormatSymbols(icu_68::DecimalFormatSymbols const&)",93957347042560,93957347042718],["icu_68::DecimalFormat::setPositivePrefix(icu_68::UnicodeString const&)",93957347042976,93957347043161],["icu_68::DecimalFormat::getNegativeSuffix(icu_68::UnicodeString&) const",93957347043632,93957347043710],["icu_68::DecimalFormat::setRoundingIncrement(double)",93957347044096,93957347044162],["icu_68::DecimalFormat::setFormatWidth(int)",93957347044384,93957347044434],["icu_68::DecimalFormat::setPadPosition(icu_68::DecimalFormat::EPadPosition)",93957347044928,93957347045000],["icu_68::DecimalFormat::setMinimumExponentDigits(signed char)",93957347045168,93957347045222],["icu_68::DecimalFormat::setSecondaryGroupingSize(int)",93957347045408,93957347045464],["icu_68::number::impl::DecimalFormatProperties::DecimalFormatProperties(icu_68::number::impl::DecimalFormatProperties const&)",93957347046032,93957347046438],["icu_68::DecimalFormat::applyPattern(icu_68::UnicodeString const&, UErrorCode&)",93957347046864,93957347046942],["icu_68::DecimalFormat::setMinimumIntegerDigits(int)",93957347047232,93957347047303],["icu_68::DecimalFormat::setCurrency(char16_t const*)",93957347047920,93957347048022],["icu_68::DecimalFormat::doFastFormatInt32(int, bool, icu_68::UnicodeString&) const",93957347048864,93957347049187],["icu_68::CurrencyAmount::clone() const",93957347049824,93957347049885],["icu_68::CurrencyPluralInfo::getDynamicClassID() const",93957347049952,93957347049965],["icu_68::CurrencyPluralInfo::operator=(icu_68::CurrencyPluralInfo const&)",93957347050208,93957347050539],["icu_68::CurrencyPluralInfo::~CurrencyPluralInfo()",93957347051280,93957347051308],["icu_68::UnicodeString::findAndReplace(icu_68::UnicodeString const&, icu_68::UnicodeString const&)",93957347054000,93957347054092],["icu_68::DecimalFormatSymbols::initialize(icu_68::Locale const&, UErrorCode&, signed char, icu_68::NumberingSystem const*)",93957347054848,93957347057132],["icu_68::DecimalFormatSymbols::~DecimalFormatSymbols()",93957347059984,93957347060451],["icu_68::DecimalFormatSymbols::operator==(icu_68::DecimalFormatSymbols const&) const",93957347061424,93957347062023],["icu_68::(anonymous namespace)::DecFmtSymDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347063056,93957347063549],["icu_68::SharedDateFormatSymbols::~SharedDateFormatSymbols()",93957347065136,93957347065243],["icu_68::DateFormatSymbols::DateFormatSymbols(icu_68::Locale const&, UErrorCode&)",93957347066064,93957347066176],["icu_68::DateFormatSymbols::copyData(icu_68::DateFormatSymbols const&)",93957347093536,93957347107625],["icu_68::DateFormatSymbols::~DateFormatSymbols()",93957347110864,93957347110938],["icu_68::UnicodeString::operator!=(icu_68::UnicodeString const&) const",93957347111568,93957347111649],["icu_68::DateFormatSymbols::getQuarters(int&, icu_68::DateFormatSymbols::DtContextType, icu_68::DateFormatSymbols::DtWidthType) const",93957347113904,93957347114041],["icu_68::DateFormatSymbols::getPatternCharIndex(char16_t)",93957347114128,93957347114180],["icu_68::loadDayPeriodStrings(icu_68::(anonymous namespace)::CalendarDataSink&, icu_68::CharString&, int&, UErrorCode&)",93957347114720,93957347115342],["icu_68::(anonymous namespace)::CalendarDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347116288,93957347119528],["icu_68::LocalArray<icu_68::UnicodeString>::~LocalArray()",93957347120464,93957347120556],["icu_68::Hashtable* icu_68::MemoryPool<icu_68::Hashtable, 8>::create<int, UErrorCode&>(int&&, UErrorCode&)",93957347123344,93957347123671],["icu_68::LocaleCacheKey<icu_68::SharedDateFormatSymbols>::~LocaleCacheKey()",93957347123952,93957347124002],["icu_68::FormattedDateIntervalData::~FormattedDateIntervalData()",93957347124192,93957347124220],["icu_68::FormattedList::toTempString(UErrorCode&) const",93957347124464,93957347124568],["icu_68::DateIntervalFormat::createInstance(icu_68::UnicodeString const&, icu_68::Locale const&, UErrorCode&)",93957347124688,93957347124850],["icu_68::DateIntervalFormat::clone() const",93957347126256,93957347126717],["icu_68::DateIntervalFormat::formatImpl(icu_68::Calendar&, icu_68::Calendar&, icu_68::UnicodeString&, signed char&, icu_68::FieldPositionHandler&, UErrorCode&) const",93957347127888,93957347129611],["icu_68::DateIntervalFormat::adoptTimeZone(icu_68::TimeZone*)",93957347133488,93957347133574],["icu_68::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&) const",93957347133808,93957347133842],["icu_68::DateIntervalFormat::setSeparateDateTimePtn(icu_68::UnicodeString const&, icu_68::UnicodeString const&)",93957347136992,93957347137771],["icu_68::DateIntervalFormat::setIntervalPattern(UCalendarDateFields, icu_68::UnicodeString const*, icu_68::UnicodeString const*, signed char, icu_68::UnicodeString*, icu_68::UnicodeString*)",93957347138608,93957347139668],["icu_68::DateIntervalFormat::fallbackFormatRange(icu_68::Calendar&, icu_68::Calendar&, icu_68::UnicodeString&, signed char&, icu_68::FieldPositionHandler&, UErrorCode&) const",93957347142400,93957347143461],["icu_68::DateIntervalInfo::DateIntervalInfo(icu_68::Locale const&, UErrorCode&)",93957347144848,93957347144929],["icu_68::DateIntervalInfo::deleteHash(icu_68::Hashtable*)",93957347147056,93957347147250],["icu_68::DateIntervalInfo::~DateIntervalInfo()",93957347148192,93957347148259],["icu_68::DateIntervalInfo::getDefaultOrder() const",93957347148608,93957347148617],["icu_68::DateIntervalInfo::parseSkeleton(icu_68::UnicodeString const&, int*)",93957347148768,93957347148867],["icu_68::DateIntervalInfo::DateIntervalSink::getCalendarTypeFromPath(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&)",93957347151696,93957347151911],["icu_68::DateTimePatternGenerator::getDynamicClassID() const",93957347152704,93957347152717],["icu_68::DateTimePatternGenerator::initData(icu_68::Locale const&, UErrorCode&, signed char)",93957347154464,93957347154821],["icu_68::DateTimePatternGenerator::copyHashtable(icu_68::Hashtable*, UErrorCode&)",93957347157760,93957347157980],["allowedHourFormatsCleanup_68",93957347159008,93957347159028],["icu_68::DateTimePatternGenerator::setDateTimeFromCalendar(icu_68::Locale const&, UErrorCode&)",93957347161056,93957347161670],["icu_68::DateTimePatternGenerator::getDefaultHourCycle(UErrorCode&) const",93957347162976,93957347163065],["icu_68::DateTimePatternGenerator::hackTimes(icu_68::UnicodeString const&, UErrorCode&)",93957347165472,93957347166697],["icu_68::DateTimePatternGenerator::AvailableFormatsSink::~AvailableFormatsSink()",93957347167600,93957347167642],["icu_68::DateTimePatternGenerator::initHashtable(UErrorCode&)",93957347168368,93957347168573],["icu_68::DateTimePatternGenerator::mapSkeletonMetacharacters(icu_68::UnicodeString const&, int*, UErrorCode&)",93957347169840,93957347170796],["icu_68::DateTimePatternGenerator::getBestAppending(int, int, UErrorCode&, UDateTimePatternMatchOptions)",93957347174336,93957347175606],["icu_68::PatternMap::add(icu_68::UnicodeString const&, icu_68::PtnSkeleton const&, icu_68::UnicodeString const&, signed char, UErrorCode&)",93957347177360,93957347178370],["icu_68::PatternMap::~PatternMap()",93957347179440,93957347179512],["icu_68::FormatParser::~FormatParser()",93957347180864,93957347181488],["icu_68::PtnElem::~PtnElem()",93957347182000,93957347182079],["icu_68::DateTimePatternGenerator::AvailableFormatsSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347183408,93957347184052],["icu_68::EthiopicCalendar::EthiopicCalendar(icu_68::Locale const&, UErrorCode&, icu_68::EthiopicCalendar::EEraType)",93957347186160,93957347186200],["icu_68::EthiopicCalendar::handleComputeFields(int, UErrorCode&)",93957347186464,93957347186673],["icu_68::EthiopicCalendar::defaultCenturyStartYear() const",93957347187072,93957347187154],["icu_68::Formattable::Formattable(double)",93957347187280,93957347187380],["icu_68::Formattable::Formattable(icu_68::Formattable const&)",93957347187808,93957347187898],["icu_68::Formattable::~Formattable()",93957347188832,93957347188887],["icu_68::Formattable::getDouble(UErrorCode&) const",93957347189200,93957347189394],["icu_68::Formattable::setDate(double)",93957347189536,93957347189579],["icu_68::Formattable::getString(UErrorCode&) const",93957347189776,93957347189830],["icu_68::Format::Format()",93957347190112,93957347190139],["icu_68::BreakIterator::getLocale(ULocDataLocaleType, UErrorCode&) const",93957347190448,93957347190498],["icu_68::FormattedValueFieldPositionIteratorImpl::~FormattedValueFieldPositionIteratorImpl()",93957347190656,93957347190707],["icu_68::FormattedValueFieldPositionIteratorImpl::appendTo(icu_68::Appendable&, UErrorCode&) const",93957347190912,93957347190993],["icu_68::FormattedValueFieldPositionIteratorImpl::addOverlapSpans(UFieldCategory, signed char, UErrorCode&)",93957347191472,93957347192510],["icu_68::FormattedValueStringBuilderImpl::~FormattedValueStringBuilderImpl()",93957347193296,93957347193367],["icu_68::FormattedValueStringBuilderImpl::nextPosition(icu_68::ConstrainedFieldPosition&, UErrorCode&) const",93957347193520,93957347193537],["icu_68::FormattedValueStringBuilderImpl::appendSpanInfo(int, int, UErrorCode&)",93957347195312,93957347195527],["icu_68::FormattedStringBuilder::FormattedStringBuilder(icu_68::FormattedStringBuilder const&)",93957347195888,93957347195912],["icu_68::FormattedStringBuilder::getFirstCodePoint() const",93957347196384,93957347196500],["icu_68::FormattedStringBuilder::insertCodePoint(int, int, icu_68::FormattedStringBuilder::Field, UErrorCode&)",93957347197264,93957347197616],["icu_68::FormattedStringBuilder::insert(int, icu_68::FormattedStringBuilder const&, UErrorCode&)",93957347198672,93957347198984],["icu_68::FormattedStringBuilder::toTempUnicodeString() const",93957347199984,93957347200064],["icu_68::ConstrainedFieldPosition::ConstrainedFieldPosition()",93957347200400,93957347200416],["icu_68::ConstrainedFieldPosition::setState(int, int, int, int)",93957347200512,93957347200531],["icu_68::FieldPositionOnlyHandler::shiftLast(int)",93957347200672,93957347200712],["icu_68::FieldPositionIteratorHandler::FieldPositionIteratorHandler(icu_68::UVector32*, UErrorCode&)",93957347200880,93957347200927],["icu_68::FieldPositionIteratorHandler::shiftLast(int)",93957347201424,93957347201547],["icu_68::FieldPositionIterator::FieldPositionIterator()",93957347201712,93957347201743],["icu_68::GregorianCalendar::GregorianCalendar(icu_68::TimeZone const&, UErrorCode&)",93957347202160,93957347202290],["icu_68::GregorianCalendar::isEquivalentTo(icu_68::Calendar const&) const",93957347202736,93957347202793],["icu_68::GregorianCalendar::handleComputeMonthStart(int, int, signed char) const",93957347203952,93957347204246],["icu_68::GregorianCalendar::monthLength(int, int) const",93957347204560,93957347204663],["icu_68::GregorianCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347205856,93957347205883],["icu_68::GregorianCalendar::internalGetEra() const",93957347206368,93957347206405],["icu_68::GregorianCalendar::defaultCenturyStartYear() const",93957347206800,93957347206856],["icu_68::ClockMath::floorDivide(double, double, double&)",93957347207056,93957347207190],["icu_68::Grego::dayOfWeek(double)",93957347208192,93957347208263],["icu_68::HebrewCalendar::clone() const",93957347208528,93957347208589],["icu_68::HebrewCalendar::startOfYear(int, UErrorCode&)",93957347209408,93957347209854],["icu_68::HebrewCalendar::handleGetYearLength(int) const",93957347210224,93957347210288],["icu_68::HebrewCalendar::handleComputeMonthStart(int, int, signed char) const",93957347211296,93957347211715],["icu_68::HebrewCalendar::getDynamicClassID() const",93957347212208,93957347212221],["icu_68::IndianCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347212384,93957347212411],["icu_68::IndianCalendar::handleComputeFields(int, UErrorCode&)",93957347212944,93957347213568],["icu_68::IndianCalendar::getDynamicClassID() const",93957347214032,93957347214045],["icu_68::IslamicCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347214272,93957347214299],["calendar_islamic_cleanup()",93957347215200,93957347215283],["icu_68::IslamicCalendar::handleComputeFields(int, UErrorCode&)",93957347216160,93957347217485],["icu_68::IslamicCalendar::getDynamicClassID() const",93957347217936,93957347217949],["icu_68::JapaneseCalendar::clone() const",93957347218224,93957347218309],["icu_68::JapaneseCalendar::internalGetEra() const",93957347218544,93957347218574],["icu_68::JapaneseCalendar::getActualMaximum(UCalendarDateFields, UErrorCode&) const",93957347219008,93957347219252],["icu_68::EraRules::createInstance(char const*, signed char, UErrorCode&)",93957347219648,93957347220643],["icu_68::FormattedListData::~FormattedListData()",93957347221072,93957347221082],["icu_68::ListFormatInternal::~ListFormatInternal()",93957347221248,93957347221302],["icu_68::ListFormatter::getListFormatInternal(icu_68::Locale const&, char const*, UErrorCode&)",93957347221648,93957347222233],["icu_68::ListFormatInternal::ListFormatInternal(icu_68::UnicodeString const&, icu_68::UnicodeString const&, icu_68::UnicodeString const&, icu_68::UnicodeString const&, icu_68::Locale const&, UErrorCode&)",93957347223104,93957347223286],["icu_68::ListFormatter::format(icu_68::UnicodeString const*, int, icu_68::UnicodeString&, UErrorCode&) const",93957347223648,93957347223696],["icu_68::(anonymous namespace)::FormattedListBuilder::append(icu_68::SimpleFormatter const&, icu_68::UnicodeString const&, int, UErrorCode&)",93957347224960,93957347225736],["icu_68::(anonymous namespace)::shouldChangeToU(icu_68::UnicodeString const&)",93957347229136,93957347229460],["icu_68::(anonymous namespace)::ContextualHandler::clone() const",93957347229728,93957347229989],["icu_68::(anonymous namespace)::PatternHandler::~PatternHandler()",93957347230160,93957347230219],["icu_68::MeasureUnit::getDynamicClassID() const",93957347230848,93957347230861],["icu_68::MeasureUnit::MeasureUnit(icu_68::MeasureUnit const&)",93957347231008,93957347231036],["icu_68::MeasureUnit::findBySubType(icu_68::StringPiece, icu_68::MeasureUnit*)",93957347231920,93957347232240],["icu_68::MeasureUnit::~MeasureUnit()",93957347232768,93957347232918],["icu_68::MeasureUnit::operator==(icu_68::UObject const&) const",93957347233152,93957347233357],["icu_68::MeasureUnit::initCurrency(icu_68::StringPiece)",93957347234016,93957347234737],["icu_68::Measure::Measure(icu_68::Measure const&)",93957347235072,93957347235169],["icu_68::number::impl::AffixUtils::estimateLength(icu_68::UnicodeString const&, UErrorCode&)",93957347235472,93957347235771],["icu_68::number::impl::AffixUtils::unescapedCodePointCount(icu_68::UnicodeString const&, icu_68::number::impl::SymbolProvider const&, UErrorCode&)",93957347237472,93957347237926],["icu_68::number::impl::AffixUtils::iterateWithConsumer(icu_68::UnicodeString const&, icu_68::number::impl::TokenConsumer&, UErrorCode&)",93957347238928,93957347239257],["icu_68::number::impl::DecimalQuantity::DecimalQuantity(icu_68::number::impl::DecimalQuantity const&)",93957347239456,93957347239501],["icu_68::number::impl::DecimalQuantity::setMinInteger(int)",93957347240096,93957347240113],["icu_68::number::impl::DecimalQuantity::compact()",93957347240384,93957347241107],["icu_68::number::impl::DecimalQuantity::multiplyBy(icu_68::number::impl::DecNum const&, UErrorCode&)",93957347241616,93957347241828],["icu_68::number::impl::DecimalQuantity::adjustMagnitude(int)",93957347242384,93957347242485],["icu_68::number::impl::DecimalQuantity::toDouble() const",93957347243584,93957347243903],["icu_68::number::impl::DecimalQuantity::getLowerDisplayMagnitude() const",93957347243968,93957347243985],["icu_68::number::impl::DecimalQuantity::isNaN() const",93957347244160,93957347244174],["icu_68::number::impl::DecimalQuantity::_setToLong(long)",93957347245008,93957347245357],["icu_68::number::impl::DecimalQuantity::convertToAccurateDouble()",93957347246432,93957347246653],["icu_68::number::impl::DecimalQuantity::toScientificString() const",93957347248144,93957347248815],["icu_68::number::impl::DecimalQuantity::setDigitPos(int, signed char)",93957347251728,93957347252248],["icu_68::number::impl::DecimalQuantity::toPlainString() const",93957347252992,93957347253478],["icu_68::double_conversion::Bignum::AssignUInt16(unsigned short)",93957347255760,93957347255788],["icu_68::double_conversion::Bignum::MultiplyByPowerOfTen(int)",93957347256640,93957347257915],["icu_68::double_conversion::Bignum::MultiplyByUInt32(unsigned int)",93957347259904,93957347260147],["icu_68::double_conversion::Bignum::DivideModuloIntBignum(icu_68::double_conversion::Bignum const&)",93957347262992,93957347264061],["icu_68::double_conversion::FastDtoa(double, icu_68::double_conversion::FastDtoaMode, int, icu_68::double_conversion::Vector<char>, int*, int*)",93957347264896,93957347268010],["double icu_68::double_conversion::StringToDoubleConverter::StringToIeee<unsigned short const*>(unsigned short const*, int, bool, int*) const",93957347271664,93957347275245],["double icu_68::double_conversion::RadixStringToIeee<3, char*>(char**, char*, bool, unsigned short, bool, bool, double, bool, bool*)",93957347278304,93957347279441],["double icu_68::double_conversion::RadixStringToIeee<4, unsigned short const*>(unsigned short const**, unsigned short const*, bool, unsigned short, bool, bool, double, bool, bool*)",93957347280752,93957347282631],["icu_68::double_conversion::Strtod(icu_68::double_conversion::Vector<char const>, int)",93957347284720,93957347284980],["icu_68::number::impl::DecimalFormatProperties::_equals(icu_68::number::impl::DecimalFormatProperties const&, bool) const",93957347286496,93957347287465],["icu_68::number::NumberFormatterSettings<icu_68::number::UnlocalizedNumberFormatter>::macros(icu_68::number::impl::MacroProps&&) &&",93957347288624,93957347289120],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::precision(icu_68::number::Precision const&) const &",93957347290112,93957347290429],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::adoptSymbols(icu_68::NumberingSystem*) const &",93957347291376,93957347291699],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::clone() &&",93957347292656,93957347292958],["icu_68::number::LocalizedNumberFormatter::LocalizedNumberFormatter(icu_68::number::LocalizedNumberFormatter const&)",93957347293696,93957347293973],["icu_68::number::LocalizedNumberFormatter::operator=(icu_68::number::LocalizedNumberFormatter&&)",93957347295744,93957347295983],["icu_68::number::LocalizedNumberFormatter::LocalizedNumberFormatter(icu_68::number::impl::MacroProps&&, icu_68::Locale const&)",93957347297056,93957347297576],["icu_68::number::LocalizedNumberFormatter::formatDecimalQuantity(icu_68::number::impl::DecimalQuantity const&, UErrorCode&) const",93957347298448,93957347298754],["icu_68::number::impl::MicroProps::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347299744,93957347299775],["icu_68::number::impl::NumberFormatterImpl::writeNumber(icu_68::number::impl::MicroProps const&, icu_68::number::impl::DecimalQuantity&, icu_68::FormattedStringBuilder&, int, UErrorCode&)",93957347301488,93957347301905],["icu_68::number::impl::NumberFormatterImpl::macrosToMicroGenerator(icu_68::number::impl::MacroProps const&, bool, UErrorCode&)",93957347303456,93957347307602],["icu_68::number::impl::MixedUnitLongNameHandler::MixedUnitLongNameHandler()",93957347307904,93957347308204],["icu_68::number::impl::EmptyModifier::getParameters(icu_68::number::impl::Modifier::Parameters&) const",93957347308960,93957347308973],["icu_68::MeasureUnitImpl::append(icu_68::SingleUnitImpl const&, UErrorCode&)",93957347310064,93957347310255],["icu_68::MeasureUnitImpl::forIdentifier(icu_68::StringPiece, UErrorCode&)",93957347311024,93957347311289],["icu_68::MeasureUnit::getComplexity(UErrorCode&) const",93957347313328,93957347313649],["icu_68::(anonymous namespace)::cleanupUnitExtras()",93957347316640,93957347316702],["icu_68::(anonymous namespace)::serializeSingle(icu_68::SingleUnitImpl const&, bool, icu_68::CharString&, UErrorCode&)",93957347317376,93957347317906],["(anonymous namespace)::getResourceBundleKey(char const*, UNumberCompactStyle, icu_68::number::impl::CompactType, icu_68::CharString&, UErrorCode&)",93957347319072,93957347319292],["icu_68::number::impl::CompactHandler::precomputeAllModifiers(icu_68::number::impl::MutablePatternModifier&, UErrorCode&)",93957347320848,93957347322133],["icu_68::number::impl::Grouper::forStrategy(UNumberGroupingStrategy)",93957347323072,93957347323125],["icu_68::number::impl::Grouper::getPrimary() const",93957347323664,93957347323673],["icu_68::number::IntegerWidth::truncateAt(int)",93957347323776,93957347323893],["icu_68::number::impl::LongNameHandler::forCompoundUnit(icu_68::Locale const&, icu_68::MeasureUnit const&, icu_68::MeasureUnit const&, UNumberUnitWidth const&, icu_68::PluralRules const*, icu_68::number::impl::MicroPropsGenerator const*, icu_68::number::impl::LongNameHandler*, UErrorCode&)",93957347324832,93957347326717],["icu_68::SimpleFormatter::getTextWithNoArguments() const",93957347328416,93957347328504],["icu_68::number::impl::LongNameHandler::getModifier(icu_68::number::impl::Signum, icu_68::StandardPlural::Form) const",93957347330832,93957347330851],["icu_68::number::impl::MixedUnitLongNameHandler::getMixedUnitModifier(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347332064,93957347334438],["icu_68::number::impl::LongNameHandler::~LongNameHandler()",93957347335808,93957347335836],["icu_68::number::impl::MixedUnitLongNameHandler::~MixedUnitLongNameHandler()",93957347336528,93957347336693],["icu_68::number::impl::LongNameMultiplexer::~LongNameMultiplexer()",93957347337328,93957347337356],["icu_68::number::impl::NumberPropertyMapper::oldToNew(icu_68::number::impl::DecimalFormatProperties const&, icu_68::DecimalFormatSymbols const&, icu_68::number::impl::DecimalFormatWarehouse&, icu_68::number::impl::DecimalFormatProperties*, UErrorCode&)",93957347338688,93957347341542],["icu_68::number::impl::PropertiesAffixPatternProvider::length(int) const",93957347342976,93957347343057],["icu_68::number::impl::PropertiesAffixPatternProvider::negativeHasMinusSign() const",93957347343680,93957347343842],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::charAt(int, int) const",93957347344368,93957347344406],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::hasNegativeSubpattern() const",93957347344544,93957347344566],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::hasBody() const",93957347344672,93957347344694],["icu_68::number::impl::CurrencySymbols::CurrencySymbols(icu_68::CurrencyUnit, icu_68::Locale const&, icu_68::DecimalFormatSymbols const&, UErrorCode&)",93957347344912,93957347345202],["icu_68::number::impl::CurrencySymbols::getVariantCurrencySymbol(UErrorCode&) const",93957347345488,93957347345609],["icu_68::number::impl::resolveCurrency(icu_68::number::impl::DecimalFormatProperties const&, icu_68::Locale const&, UErrorCode&)",93957347345968,93957347346104],["icu_68::number::impl::AdoptingModifierStore::~AdoptingModifierStore()",93957347346224,93957347346298],["icu_68::number::impl::SimpleModifier::apply(icu_68::FormattedStringBuilder&, int, int, UErrorCode&) const",93957347346848,93957347346858],["icu_68::number::impl::SimpleModifier::isStrong() const",93957347347168,93957347347177],["icu_68::number::impl::ConstantMultiFieldModifier::getPrefixLength() const",93957347347632,93957347347646],["icu_68::number::impl::ConstantMultiFieldModifier::getParameters(icu_68::number::impl::Modifier::Parameters&) const",93957347347776,93957347347792],["icu_68::number::impl::CurrencySpacingEnabledModifier::apply(icu_68::FormattedStringBuilder&, int, int, UErrorCode&) const",93957347349664,93957347350086],["icu_68::number::impl::ConstantMultiFieldModifier::~ConstantMultiFieldModifier()",93957347351040,93957347351094],["icu_68::number::impl::CurrencySpacingEnabledModifier::~CurrencySpacingEnabledModifier()",93957347351232,93957347351339],["icu_68::number::Scale::Scale(icu_68::number::Scale const&)",93957347351696,93957347351798],["icu_68::number::Scale::~Scale()",93957347352048,93957347352098],["icu_68::number::Scale::byDoubleAndPowerOfTen(double, int)",93957347352352,93957347352529],["icu_68::number::impl::MultiplierFormatHandler::~MultiplierFormatHandler()",93957347352832,93957347352892],["icu_68::number::ScientificNotation::ScientificNotation(signed char, bool, short, UNumberSignDisplay)",93957347353024,93957347353070],["icu_68::number::ScientificNotation::withMinExponentDigits(int) const",93957347353200,93957347353277],["icu_68::number::FormattedNumber::operator=(icu_68::number::FormattedNumber&&)",93957347353472,93957347353539],["icu_68::number::impl::Padder::forProperties(icu_68::number::impl::DecimalFormatProperties const&)",93957347353744,93957347353842],["icu_68::number::impl::MutablePatternModifier::setPatternAttributes(UNumberSignDisplay, bool)",93957347354576,93957347354588],["icu_68::number::impl::MutablePatternModifier::createImmutable(UErrorCode&)",93957347355008,93957347355704],["icu_68::number::impl::ImmutablePatternModifier::getModifier(icu_68::number::impl::Signum, icu_68::StandardPlural::Form) const",93957347356832,93957347356870],["non-virtual thunk to icu_68::number::impl::MutablePatternModifier::apply(icu_68::FormattedStringBuilder&, int, int, UErrorCode&) const",93957347357776,93957347357790],["non-virtual thunk to icu_68::number::impl::MutablePatternModifier::getCodePointCount() const",93957347358208,93957347358385],["icu_68::number::impl::MutablePatternModifier::~MutablePatternModifier()",93957347358736,93957347358878],["non-virtual thunk to icu_68::number::impl::MutablePatternModifier::~MutablePatternModifier()",93957347358976,93957347358990],["icu_68::number::impl::PatternParser::parseToPatternInfo(icu_68::UnicodeString const&, icu_68::number::impl::ParsedPatternInfo&, UErrorCode&)",93957347359120,93957347359139],["icu_68::number::impl::ParsedPatternInfo::charAt(int, int) const",93957347360064,93957347360271],["icu_68::number::impl::ParsedPatternInfo::hasNegativeSubpattern() const",93957347360592,93957347360604],["icu_68::number::impl::ParsedPatternInfo::hasBody() const",93957347360688,93957347360701],["icu_68::number::impl::ParsedPatternInfo::consumeFormat(UErrorCode&)",93957347361408,93957347361592],["icu_68::number::impl::ParsedPatternInfo::consumeFractionFormat(UErrorCode&)",93957347363152,93957347363571],["icu_68::number::impl::PatternStringUtils::propertiesToPatternString(icu_68::number::impl::DecimalFormatProperties const&, UErrorCode&)",93957347365072,93957347368742],["icu_68::number::impl::PatternStringUtils::patternInfoToStringBuilder(icu_68::number::impl::AffixPatternProvider const&, bool, icu_68::number::impl::PatternSignType, icu_68::StandardPlural::Form, bool, icu_68::UnicodeString&)",93957347373920,93957347374315],["icu_68::number::impl::roundingutils::doubleFractionLength(double, signed char*)",93957347375760,93957347375914],["icu_68::number::Precision::minFraction(int)",93957347376048,93957347376117],["icu_68::number::Precision::minSignificantDigits(int)",93957347376336,93957347376408],["icu_68::number::FractionPrecision::withMinDigits(int) const",93957347376768,93957347376860],["icu_68::number::impl::RoundingImpl::RoundingImpl(icu_68::number::Precision const&, UNumberFormatRoundingMode, icu_68::CurrencyUnit const&, UErrorCode&)",93957347377456,93957347377531],["icu_68::number::impl::RoundingImpl::apply(icu_68::number::impl::DecimalQuantity&, UErrorCode&) const",93957347377792,93957347378303],["icu_68::number::impl::ScientificModifier::ScientificModifier()",93957347378448,93957347378479],["icu_68::number::impl::ScientificHandler::ScientificHandler(icu_68::number::Notation const*, icu_68::DecimalFormatSymbols const*, icu_68::number::impl::MicroPropsGenerator const*)",93957347379088,93957347379131],["icu_68::number::impl::ScientificHandler::~ScientificHandler()",93957347379536,93957347379550],["icu_68::number::impl::stem_to_object::unit(icu_68::number::impl::skeleton::StemEnum)",93957347379680,93957347379747],["icu_68::number::impl::enum_to_stem_string::groupingStrategy(UNumberGroupingStrategy, icu_68::UnicodeString&)",93957347380208,93957347380409],["(anonymous namespace)::initNumberSkeletons(UErrorCode&)",93957347382064,93957347385603],["icu_68::number::impl::skeleton::parseOption(icu_68::number::impl::skeleton::ParseState, icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347388816,93957347389264],["icu_68::number::impl::blueprint_helpers::parseCurrencyOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347390272,93957347390499],["icu_68::number::impl::blueprint_helpers::parseIntegerWidthOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347393904,93957347394368],["icu_68::number::impl::blueprint_helpers::parseExponentSignOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347395456,93957347395838],["icu_68::number::impl::GeneratorHelpers::precision(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347397376,93957347397921],["icu_68::number::impl::GeneratorHelpers::decimal(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347398544,93957347398615],["icu_68::number::impl::blueprint_helpers::generateIncrementOption(double, int, icu_68::UnicodeString&, UErrorCode&)",93957347399040,93957347399311],["(anonymous namespace)::cleanupNumberSkeletons()",93957347399968,93957347400007],["icu_68::number::impl::SymbolsWrapper::operator=(icu_68::number::impl::SymbolsWrapper const&)",93957347400224,93957347400288],["icu_68::number::impl::SymbolsWrapper::setTo(icu_68::NumberingSystem const*)",93957347400544,93957347400599],["icu_68::number::impl::Usage::operator=(icu_68::number::impl::Usage const&)",93957347400768,93957347400889],["icu_68::number::impl::Usage::set(icu_68::StringPiece)",93957347401072,93957347401199],["icu_68::number::impl::UnitConversionHandler::UnitConversionHandler(icu_68::MeasureUnit const&, icu_68::MeasureUnit const&, icu_68::number::impl::MicroPropsGenerator const*, UErrorCode&)",93957347402736,93957347403819],["icu_68::number::impl::UnitConversionHandler::~UnitConversionHandler()",93957347404176,93957347404237],["icu_68::units::ConversionRate::~ConversionRate()",93957347405072,93957347405277],["icu_68::number::impl::DecNum::DecNum(icu_68::number::impl::DecNum const&, UErrorCode&)",93957347405968,93957347406166],["icu_68::number::impl::DecNum::setTo(unsigned char const*, int, int, bool, UErrorCode&)",93957347407024,93957347407257],["icu_68::number::impl::DecNum::isNegative() const",93957347407424,93957347407439],["uprv_decContextSetRounding_68",93957347407600,93957347407612],["uprv_decNumberCopy_68",93957347410864,93957347411369],["decNaNs(decNumber*, decNumber const*, decNumber const*, decContext*, unsigned int*)",93957347417776,93957347419020],["uprv_decNumberReduce_68",93957347419872,93957347420091],["decUnitAddSub(unsigned char const*, int, unsigned char const*, int, int, unsigned char*, int)",93957347421456,93957347421991],["decSetSubnormal(decNumber*, decContext*, int*, unsigned int*)",93957347423440,93957347423710],["icu_68::NumberFormat::NumberFormat(icu_68::NumberFormat const&)",93957347423904,93957347424094],["icu_68::NumberFormat::format(double, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347424512,93957347424536],["icu_68::NumberFormat::format(icu_68::number::impl::DecimalQuantity const&, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347424832,93957347424900],["icu_68::NumberFormat::parseObject(icu_68::UnicodeString const&, icu_68::Formattable&, icu_68::ParsePosition&) const",93957347425984,93957347426001],["icu_68::NumberFormat::setParseIntegerOnly(signed char)",93957347426624,93957347426637],["icu_68::NumberFormat::createInstance(icu_68::Locale const&, UErrorCode&)",93957347426864,93957347426952],["icu_68::NumberFormat::createSharedInstance(icu_68::Locale const&, UNumberFormatStyle, UErrorCode&)",93957347427344,93957347427588],["icu_68::NumberFormat::setMaximumIntegerDigits(int)",93957347427648,93957347427705],["icu_68::NumberFormat::setMaximumFractionDigits(int)",93957347427808,93957347427865],["icu_68::NumberFormat::getEffectiveCurrency(char16_t*, UErrorCode&) const",93957347428016,93957347428119],["icu_68::NumberFormat::makeInstance(icu_68::Locale const&, UNumberFormatStyle, signed char, UErrorCode&)",93957347428448,93957347430719],["icu_68::ICUNumberFormatFactory::handleCreate(icu_68::Locale const&, int, icu_68::ICUService const*, UErrorCode&) const",93957347431056,93957347431076],["icu_68::ICUNumberFormatService::ICUNumberFormatService()",93957347431440,93957347431674],["icu_68::LocaleCacheKey<icu_68::SharedNumberFormat>::clone() const",93957347431856,93957347431950],["icu_68::numparse::impl::DecimalMatcher::operator=(icu_68::numparse::impl::DecimalMatcher&&)",93957347433504,93957347433811],["icu_68::numparse::impl::NumberParserImpl::{unnamed type#1}::NumberParserImpl()",93957347437888,93957347439006],["icu_68::numparse::impl::NumberParserImpl::addMatcher(icu_68::numparse::impl::NumberParseMatcher&)",93957347439680,93957347439834],["icu_68::numparse::impl::AffixPatternMatcher::~AffixPatternMatcher()",93957347441168,93957347441244],["icu_68::numparse::impl::DecimalMatcher::match(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347442992,93957347443004],["icu_68::numparse::impl::DecimalMatcher::~DecimalMatcher()",93957347446384,93957347446412],["icu_68::numparse::impl::ArraySeriesMatcher::ArraySeriesMatcher()",93957347447200,93957347447242],["icu_68::numparse::impl::ArraySeriesMatcher::~ArraySeriesMatcher()",93957347447424,93957347447472],["icu_68::numparse::impl::AffixPatternMatcherBuilder::addMatcher(icu_68::numparse::impl::NumberParseMatcher&)",93957347448704,93957347448859],["icu_68::numparse::impl::CodePointMatcher::match(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347449664,93957347449718],["icu_68::numparse::impl::AffixPatternMatcherBuilder::~AffixPatternMatcherBuilder()",93957347450128,93957347450187],["icu_68::numparse::impl::AffixMatcherWarehouse::isInteresting(icu_68::number::impl::AffixPatternProvider const&, icu_68::numparse::impl::IgnorablesMatcher const&, int, UErrorCode&)",93957347451184,93957347451858],["icu_68::numparse::impl::AffixMatcher::smokeTest(icu_68::StringSegment const&) const",93957347455616,93957347455687],["non-virtual thunk to icu_68::numparse::impl::AffixPatternMatcherBuilder::~AffixPatternMatcherBuilder()",93957347456912,93957347456972],["icu_68::numparse::impl::CombinedCurrencyMatcher::matchCurrency(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347458160,93957347459334],["icu_68::numparse::impl::ParsedNumber::setCharsConsumed(icu_68::StringSegment const&)",93957347459520,93957347459547],["icu_68::numparse::impl::ParsedNumber::populateFormattable(icu_68::Formattable&, int) const",93957347459648,93957347459817],["icu_68::numparse::impl::ScientificMatcher::smokeTest(icu_68::StringSegment const&) const",93957347460736,93957347460756],["icu_68::numparse::impl::SymbolMatcher::getSet() const",93957347461056,93957347461066],["icu_68::numparse::impl::IgnorablesMatcher::IgnorablesMatcher(int)",93957347461376,93957347461558],["icu_68::numparse::impl::InfinityMatcher::accept(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&) const",93957347461744,93957347461761],["icu_68::numparse::impl::NanMatcher::NanMatcher(icu_68::DecimalFormatSymbols const&)",93957347461984,93957347462107],["icu_68::numparse::impl::PercentMatcher::PercentMatcher(icu_68::DecimalFormatSymbols const&)",93957347462288,93957347462414],["icu_68::numparse::impl::PermilleMatcher::isDisabled(icu_68::numparse::impl::ParsedNumber const&) const",93957347462592,93957347462606],["icu_68::numparse::impl::NanMatcher::~NanMatcher()",93957347462800,93957347462850],["icu_68::numparse::impl::RequireCurrencyValidator::postProcess(icu_68::numparse::impl::ParsedNumber&) const",93957347462976,93957347462998],["icu_68::numparse::impl::RequireDecimalSeparatorValidator::toString() const",93957347463120,93957347463151],["icu_68::numparse::impl::MultiplierParseHandler::postProcess(icu_68::numparse::impl::ParsedNumber&) const",93957347463248,93957347463270],["icu_68::NumberingSystem::getDynamicClassID() const",93957347463424,93957347463437],["icu_68::NumberingSystem::createInstanceByName(char const*, UErrorCode&)",93957347464944,93957347465455],["icu_68::NumberingSystem::getName() const",93957347465584,93957347465594],["icu_68::OlsonTimeZone::deleteTransitionRules()",93957347467424,93957347467685],["icu_68::OlsonTimeZone::getOffset(unsigned char, int, int, int, unsigned char, int, UErrorCode&) const",93957347468176,93957347468327],["icu_68::OlsonTimeZone::getOffsetFromLocal(double, int, int, int&, int&, UErrorCode&) const",93957347469568,93957347469653],["icu_68::OlsonTimeZone::getDSTSavings() const",93957347470352,93957347470387],["icu_68::OlsonTimeZone::initTransitionRules(UErrorCode&)",93957347470976,93957347472969],["icu_68::OlsonTimeZone::getTimeZoneRules(icu_68::InitialTimeZoneRule const*&, icu_68::TimeZoneRule const**, int&, UErrorCode&) const",93957347475552,93957347475914],["icu_68::BasicTimeZone::hasEquivalentTransitions(icu_68::BasicTimeZone const&, double, double, signed char, UErrorCode&) const",93957347476000,93957347477271],["icu_68::DateTimeRule::DateTimeRule(int, int, int, icu_68::DateTimeRule::TimeRuleType)",93957347480064,93957347480108],["icu_68::DateTimeRule::operator==(icu_68::DateTimeRule const&) const",93957347480288,93957347480398],["icu_68::PersianCalendar::PersianCalendar(icu_68::Locale const&, UErrorCode&)",93957347480496,93957347480576],["icu_68::PersianCalendar::handleComputeMonthStart(int, int, signed char) const",93957347480800,93957347480906],["icu_68::PersianCalendar::defaultCenturyStartYear() const",93957347481568,93957347481624],["icu_68::PluralRules::PluralRules(icu_68::PluralRules const&)",93957347481680,93957347481714],["icu_68::SharedPluralRules::~SharedPluralRules()",93957347482224,93957347482272],["icu_68::PluralRuleParser::parse(icu_68::UnicodeString const&, icu_68::PluralRules*, UErrorCode&)",93957347482640,93957347485581],["icu_68::PluralRules::forLocale(icu_68::Locale const&, UErrorCode&)",93957347486720,93957347486735],["icu_68::PluralRules::select(double) const",93957347488560,93957347488702],["icu_68::PluralRules::isKeyword(icu_68::UnicodeString const&) const",93957347489376,93957347489617],["icu_68::AndConstraint::AndConstraint(icu_68::AndConstraint const&)",93957347491280,93957347491589],["icu_68::OrConstraint::OrConstraint(icu_68::OrConstraint const&)",93957347492080,93957347492279],["icu_68::RuleChain::~RuleChain()",93957347492736,93957347492824],["icu_68::PluralRuleParser::getKeyType(icu_68::UnicodeString const&, icu_68::tokenType)",93957347493008,93957347493941],["icu_68::PluralKeywordEnumeration::count(UErrorCode&) const",93957347494416,93957347494428],["icu_68::FixedDecimal::~FixedDecimal()",93957347495488,93957347495520],["icu_68::FixedDecimal::getPluralOperand(icu_68::PluralOperand) const",93957347495648,93957347495725],["icu_68::PluralAvailableLocalesEnumeration::~PluralAvailableLocalesEnumeration()",93957347495776,93957347495837],["icu_68::PluralAvailableLocalesEnumeration::count(UErrorCode&) const",93957347496080,93957347496112],["icu_68::LocaleCacheKey<icu_68::SharedPluralRules>::clone() const",93957347496288,93957347496382],["icu_68::(anonymous namespace)::PluralRangesDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347497200,93957347498112],["icu_68::RuleBasedNumberFormat::operator=(icu_68::RuleBasedNumberFormat const&)",93957347501744,93957347502136],["icu_68::RuleBasedNumberFormat::~RuleBasedNumberFormat()",93957347502656,93957347502726],["icu_68::RuleBasedNumberFormat::getRuleSetName(int) const",93957347503360,93957347503685],["icu_68::RuleBasedNumberFormat::getRuleSetDisplayName(int, icu_68::Locale const&)",93957347504560,93957347505255],["icu_68::RuleBasedNumberFormat::format(long, icu_68::UnicodeString&, icu_68::FieldPosition&) const",93957347506272,93957347506322],["icu_68::RuleBasedNumberFormat::format(int, icu_68::UnicodeString const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347507264,93957347507284],["icu_68::RuleBasedNumberFormat::adjustForCapitalizationContext(int, icu_68::UnicodeString&, UErrorCode&) const",93957347508048,93957347508269],["icu_68::RuleBasedNumberFormat::initDefaultRuleSet()",93957347509920,93957347510816],["icu_68::RuleBasedNumberFormat::stripWhitespace(icu_68::UnicodeString&)",93957347511664,93957347512175],["icu_68::RuleBasedNumberFormat::getDefaultInfinityRule() const",93957347513136,93957347513149],["icu_68::RuleBasedNumberFormat::createPluralFormat(UPluralType, icu_68::UnicodeString const&, UErrorCode&) const",93957347513552,93957347513652],["icu_68::PluralFormat::getDynamicClassID() const",93957347513712,93957347513725],["icu_68::PluralFormat::~PluralFormat()",93957347514304,93957347514419],["icu_68::PluralFormat::findSubMessage(icu_68::MessagePattern const&, int, icu_68::PluralFormat::PluralSelector const&, void*, double, UErrorCode&)",93957347515984,93957347517202],["icu_68::PluralFormat::parseType(icu_68::UnicodeString const&, icu_68::NFRule const*, icu_68::Formattable&, icu_68::FieldPosition&) const",93957347517488,93957347518632],["icu_68::NFRule::NFRule(icu_68::RuleBasedNumberFormat const*, icu_68::UnicodeString const&, UErrorCode&)",93957347518752,93957347518859],["icu_68::NFRule::extractSubstitutions(icu_68::NFRuleSet const*, icu_68::UnicodeString const&, icu_68::NFRule const*, UErrorCode&)",93957347521920,93957347522812],["icu_68::NFRule::operator==(icu_68::NFRule const&) const",93957347523776,93957347524001],["icu_68::NFRule::doFormat(double, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347526352,93957347527214],["icu_68::NFRule::prefixLength(icu_68::UnicodeString const&, icu_68::UnicodeString const&, UErrorCode&) const",93957347530224,93957347530949],["icu_68::NFRule::setDecimalFormatSymbols(icu_68::DecimalFormatSymbols const&, UErrorCode&)",93957347532976,93957347533056],["icu_68::NFRuleSet::setNonNumericalRule(icu_68::NFRule*)",93957347534816,93957347535024],["icu_68::NFRuleSet::setDecimalFormatSymbols(icu_68::DecimalFormatSymbols const&, UErrorCode&)",93957347536096,93957347536618],["icu_68::NFRuleSet::findDoubleRule(double) const",93957347537104,93957347537369],["icu_68::NFRuleSet::appendRules(icu_68::UnicodeString&) const",93957347539472,93957347539875],["icu_68::ModulusSubstitution::~ModulusSubstitution()",93957347540336,93957347540400],["icu_68::NFSubstitution::NFSubstitution(int, icu_68::NFRuleSet const*, icu_68::UnicodeString const&, UErrorCode&)",93957347541520,93957347542155],["icu_68::NFSubstitution::toString(icu_68::UnicodeString&) const",93957347542320,93957347542601],["icu_68::SameValueSubstitution::getDynamicClassID() const",93957347543792,93957347543805],["icu_68::ModulusSubstitution::getDynamicClassID() const",93957347544144,93957347544157],["icu_68::ModulusSubstitution::doParse(icu_68::UnicodeString const&, icu_68::ParsePosition&, double, double, signed char, unsigned int, icu_68::Formattable&) const",93957347544576,93957347544715],["icu_68::FractionalPartSubstitution::doSubstitution(double, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347545200,93957347545591],["icu_68::AbsoluteValueSubstitution::getDynamicClassID() const",93957347546848,93957347546861],["icu_68::NumeratorSubstitution::getDynamicClassID() const",93957347548656,93957347548669],["icu_68::MultiplierSubstitution::transformNumber(double) const",93957347548784,93957347548813],["icu_68::ModulusSubstitution::transformNumber(long) const",93957347548864,93957347548905],["icu_68::IntegralPartSubstitution::transformNumber(double) const",93957347549008,93957347549018],["icu_68::AbsoluteValueSubstitution::transformNumber(long) const",93957347549104,93957347549120],["icu_68::NumeratorSubstitution::transformNumber(double) const",93957347549168,93957347549183],["icu_68::CollationElementIterator::~CollationElementIterator()",93957347549296,93957347549376],["icu_68::CollationElementIterator::setText(icu_68::UnicodeString const&, UErrorCode&)",93957347550240,93957347550841],["icu_68::(anonymous namespace)::MaxExpSink::handleExpansion(long const*, int)",93957347551424,93957347551744],["icu_68::CollationIterator::reset()",93957347552224,93957347552293],["icu_68::CollationIterator::getCE32FromBuilderData(unsigned int, UErrorCode&)",93957347552720,93957347552739],["icu_68::CollationIterator::nextCE32FromContraction(icu_68::CollationData const*, unsigned int, char16_t const*, unsigned int, int, UErrorCode&)",93957347557536,93957347559063],["icu_68::CollationData::isUnsafeBackward(int, signed char) const",93957347564640,93957347564883],["icu_68::TailoredSet::handleCE32(int, int, unsigned int)",93957347565056,93957347565486],["icu_68::TailoredSet::compareContractions(int, char16_t const*, char16_t const*)",93957347567808,93957347568789],["icu_68::ContractionsAndExpansions::forData(icu_68::CollationData const*, UErrorCode&)",93957347569616,93957347569758],["icu_68::ContractionsAndExpansions::handleContractions(int, int, unsigned int)",93957347571568,93957347571963],["icu_68::CollationBuilder::parseAndBuild(icu_68::UnicodeString const&, unsigned char const*, icu_68::CollationRuleParser::Importer*, UParseError*, UErrorCode&)",93957347573040,93957347573747],["icu_68::CollationBuilder::makeTailoredCEs(UErrorCode&)",93957347574256,93957347575956],["icu_68::CollationBuilder::getSpecialResetPosition(icu_68::UnicodeString const&, char const*&, UErrorCode&)",93957347578352,93957347580523],["icu_68::CollationBuilder::getWeight16Before(int, long, int)",93957347581488,93957347581701],["icu_68::CollationBuilder::insertTailoredNodeAfter(int, int, UErrorCode&)",93957347584176,93957347584621],["icu_68::CollationBuilder::addWithClosure(icu_68::UnicodeString const&, icu_68::UnicodeString const&, long const*, int, unsigned int, UErrorCode&)",93957347586064,93957347586461],["icu_68::CollationBuilder::addTailComposites(icu_68::UnicodeString const&, icu_68::UnicodeString const&, UErrorCode&)",93957347589056,93957347590344],["icu_68::(anonymous namespace)::BundleImporter::getRules(char const*, char const*, icu_68::UnicodeString&, char const*&, UErrorCode&)",93957347591280,93957347591302],["icu_68::CollationWeights::initForTertiary()",93957347591488,93957347591522],["icu_68::CollationWeights::allocWeights(unsigned int, unsigned int, int)",93957347593952,93957347594383],["icu_68::CollationRuleParser::parse(icu_68::UnicodeString const&, UErrorCode&)",93957347594848,93957347595349],["icu_68::CollationRuleParser::parseRelationOperator(UErrorCode&)",93957347601920,93957347602706],["icu_68::CollationRuleParser::parseSpecialPosition(int, icu_68::UnicodeString&, UErrorCode&)",93957347604880,93957347605770],["icu_68::CollationRuleParser::readWords(int, icu_68::UnicodeString&) const",93957347607504,93957347608224],["icu_68::CollationRuleParser::parseUnicodeSet(int, icu_68::UnicodeSet&, UErrorCode&)",93957347609360,93957347609952],["icu_68::UTF8CollationIterator::~UTF8CollationIterator()",93957347610208,93957347610236],["icu_68::DataBuilderCollationIterator::getOffset() const",93957347611024,93957347611036],["icu_68::DataBuilderCollationIterator::backwardNumCodePoints(int, UErrorCode&)",93957347611264,93957347611308],["icu_68::CollationDataBuilder::clearContexts()",93957347613440,93957347613616],["icu_68::CollationDataBuilder::initForTailoring(icu_68::CollationData const*, UErrorCode&)",93957347614048,93957347614261],["icu_68::CollationDataBuilder::copyFromBaseCE32(int, unsigned int, signed char, UErrorCode&)",93957347615856,93957347617407],["icu_68::CollationDataBuilder::encodeExpansion(long const*, int, UErrorCode&)",93957347618576,93957347619026],["icu_68::CollationDataBuilder::optimize(icu_68::UnicodeSet const&, UErrorCode&)",93957347620608,93957347621023],["icu_68::enumRangeLeadValue(void const*, int, int, unsigned int)",93957347622784,93957347622840],["icu_68::CollationDataBuilder::buildContexts(UErrorCode&)",93957347624272,93957347624524],["icu_68::CollationDataBuilder::getCEs(icu_68::UnicodeString const&, icu_68::UnicodeString const&, long*, int)",93957347625536,93957347625712],["icu_68::CollationFastLatinBuilder::~CollationFastLatinBuilder()",93957347627904,93957347627993],["icu_68::CollationFastLatinBuilder::encodeUniqueCEs(UErrorCode&)",93957347629680,93957347630539],["icu_68::CollationFastLatinBuilder::getCEsFromCE32(icu_68::CollationData const&, int, unsigned int, UErrorCode&)",93957347631792,93957347632531],["icu_68::CollationFastLatinBuilder::encodeTwoCEs(long, long) const",93957347633936,93957347634334],["icu_68::CollationRootElements::findPrimary(unsigned int) const",93957347635088,93957347635234],["icu_68::CollationRootElements::getSecondaryAfter(int, unsigned int) const",93957347635904,93957347636021],["icu_68::RuleBasedTimeZone::copyRules(icu_68::UVector*)",93957347636288,93957347636551],["icu_68::RuleBasedTimeZone::~RuleBasedTimeZone()",93957347639280,93957347639402],["icu_68::RuleBasedTimeZone::getOffset(unsigned char, int, int, int, unsigned char, int, UErrorCode&) const",93957347640336,93957347640492],["icu_68::RuleBasedTimeZone::getOffsetFromLocal(double, int, int, int&, int&, UErrorCode&) const",93957347641152,93957347641193],["icu_68::RuleBasedTimeZone::findNext(double, signed char, double&, icu_68::TimeZoneRule*&, icu_68::TimeZoneRule*&) const",93957347642464,93957347643165],["icu_68::RuleBasedTimeZone::getPreviousTransition(double, signed char, icu_68::TimeZoneTransition&) const",93957347643920,93957347644115],["icu_68::RegionNameEnumeration::getDynamicClassID() const",93957347645088,93957347645101],["icu_68::Region::~Region()",93957347652528,93957347652600],["icu_68::RegionNameEnumeration::RegionNameEnumeration(icu_68::UVector*, UErrorCode&)",93957347653232,93957347653480],["icu_68::RegionNameEnumeration::~RegionNameEnumeration()",93957347653632,93957347653688],["icu_68::FormattedRelativeDateTime::~FormattedRelativeDateTime()",93957347656352,93957347656408],["void icu_68::SharedObject::copyPtr<icu_68::SharedNumberFormat>(icu_68::SharedNumberFormat const*, icu_68::SharedNumberFormat const*&)",93957347657312,93957347657368],["icu_68::RelativeDateTimeFormatter::formatNumericToValue(double, URelativeDateTimeUnit, UErrorCode&) const",93957347657968,93957347658007],["icu_68::(anonymous namespace)::RelDateTimeFmtDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347659008,93957347662712],["icu_68::LocaleCacheKey<icu_68::RelativeDateTimeCacheData>::clone() const",93957347662896,93957347662990],["icu_68::RelativeDateFormat::RelativeDateFormat(UDateFormatStyle, UDateFormatStyle, icu_68::Locale const&, UErrorCode&)",93957347664112,93957347664733],["icu_68::RelativeDateFormat::clone() const",93957347665600,93957347665651],["icu_68::RelativeDateFormat::parse(icu_68::UnicodeString const&, icu_68::Calendar&, icu_68::ParsePosition&) const",93957347667520,93957347668911],["icu_68::RelativeDateFormat::toPatternTime(icu_68::UnicodeString&, UErrorCode&) const",93957347669136,93957347669203],["icu_68::RelativeDateFormat::initCapitalizationContextInfo(icu_68::Locale const&)",93957347669520,93957347669815],["icu_68::RuleBasedCollator::adoptTailoring(icu_68::CollationTailoring*, UErrorCode&)",93957347670336,93957347670562],["icu_68::RuleBasedCollator::clone() const",93957347670896,93957347671049],["icu_68::RuleBasedCollator::setLocales(icu_68::Locale const&, icu_68::Locale const&, icu_68::Locale const&)",93957347671776,93957347671833],["icu_68::RuleBasedCollator::getTailoredSet(UErrorCode&) const",93957347671984,93957347672222],["icu_68::RuleBasedCollator::getMaxVariable() const",93957347673312,93957347673336],["icu_68::RuleBasedCollator::setVariableTop(unsigned int, UErrorCode&)",93957347674256,93957347674560],["icu_68::RuleBasedCollator::doCompare(char16_t const*, int, char16_t const*, int, UErrorCode&) const",93957347675184,93957347677456],["icu_68::RuleBasedCollator::doCompare(unsigned char const*, int, unsigned char const*, int, UErrorCode&) const",93957347677888,93957347681065],["icu_68::(anonymous namespace)::FCDUTF16NFDIterator::~FCDUTF16NFDIterator()",93957347682336,93957347682378],["icu_68::RuleBasedCollator::getCollationKey(icu_68::UnicodeString const&, icu_68::CollationKey&, UErrorCode&) const",93957347684592,93957347684669],["icu_68::RuleBasedCollator::getSortKey(char16_t const*, int, unsigned char*, int) const",93957347685808,93957347686006],["icu_68::RuleBasedCollator::createCollationElementIterator(icu_68::UnicodeString const&) const",93957347690064,93957347690256],["icu_68::(anonymous namespace)::UTF8NFDIterator::nextRawCodePoint()",93957347690640,93957347690948],["icu_68::(anonymous namespace)::FCDUIterNFDIterator::~FCDUIterNFDIterator()",93957347691088,93957347691138],["icu_68::SortKeyByteSink::Append(char const*, int)",93957347691280,93957347691379],["icu_68::CollationCompare::compareUpToQuaternary(icu_68::CollationIterator&, icu_68::CollationIterator&, icu_68::CollationSettings const&, UErrorCode&)",93957347702304,93957347704176],["icu_68::SharedBreakIterator::~SharedBreakIterator()",93957347705408,93957347705456],["icu_68::SimpleTimeZone::SimpleTimeZone(int, icu_68::UnicodeString const&, signed char, signed char, signed char, int, icu_68::SimpleTimeZone::TimeMode, signed char, signed char, signed char, int, icu_68::SimpleTimeZone::TimeMode, int, UErrorCode&)",93957347705664,93957347705871],["icu_68::SimpleTimeZone::SimpleTimeZone(icu_68::SimpleTimeZone const&)",93957347706256,93957347706442],["icu_68::SimpleTimeZone::decodeEndRule(UErrorCode&)",93957347706720,93957347706915],["icu_68::SimpleTimeZone::compareToRule(signed char, signed char, signed char, signed char, signed char, int, int, icu_68::SimpleTimeZone::EMode, signed char, signed char, signed char, int)",93957347707888,93957347708555],["icu_68::SimpleTimeZone::getDSTSavings() const",93957347709264,93957347709273],["icu_68::SimpleTimeZone::getNextTransition(double, signed char, icu_68::TimeZoneTransition&) const",93957347709632,93957347710096],["icu_68::SimpleTimeZone::getTimeZoneRules(icu_68::InitialTimeZoneRule const*&, icu_68::TimeZoneRule const**, int&, UErrorCode&) const",93957347712464,93957347712641],["icu_68::freeSharedNumberFormatters(icu_68::SharedNumberFormat const**)",93957347712928,93957347712990],["icu_68::SimpleDateFormat::initialize(icu_68::Locale const&, UErrorCode&)",93957347716384,93957347716933],["icu_68::SimpleDateFormat::SimpleDateFormat(icu_68::Locale const&, UErrorCode&)",93957347719968,93957347720563],["icu_68::SimpleDateFormat::operator==(icu_68::Format const&) const",93957347721840,93957347722061],["icu_68::SimpleDateFormat::format(icu_68::Calendar&, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347723216,93957347723338],["icu_68::SimpleDateFormat::zeroPaddingNumber(icu_68::NumberFormat const*, icu_68::UnicodeString&, int, int, int) const",93957347730432,93957347731177],["icu_68::UnicodeString::replaceBetween(int, int, icu_68::UnicodeString const&)",93957347731536,93957347731572],["icu_68::SimpleDateFormat::subParse(icu_68::UnicodeString const&, int&, char16_t, int, signed char, signed char, signed char*, int&, icu_68::Calendar&, int, icu_68::MessageFormat*, UTimeZoneFormatTimeType*, int*) const",93957347735872,93957347744060],["icu_68::SimpleDateFormat::matchDayPeriodStrings(icu_68::UnicodeString const&, int, icu_68::UnicodeString const*, int, int&) const",93957347746560,93957347746699],["icu_68::SimpleDateFormat::countDigits(icu_68::UnicodeString const&, int, int) const",93957347748016,93957347748110],["icu_68::SimpleDateFormat::toLocalizedPattern(icu_68::UnicodeString&, UErrorCode&) const",93957347749104,93957347749245],["icu_68::SimpleDateFormat::adoptDateFormatSymbols(icu_68::DateFormatSymbols*)",93957347750368,93957347750430],["icu_68::SimpleDateFormat::setTimeZoneFormat(icu_68::TimeZoneFormat const&)",93957347750688,93957347750773],["icu_68::SimpleDateFormat::isFieldUnitIgnored(icu_68::UnicodeString const&, UCalendarDateFields)",93957347751408,93957347751778],["icu_68::MessageFormat::MessageFormat(icu_68::UnicodeString const&, icu_68::Locale const&, UErrorCode&)",93957347752576,93957347752817],["icu_68::MessageFormat::~MessageFormat()",93957347754016,93957347754044],["icu_68::MessageFormat::getLocale() const",93957347754640,93957347754653],["icu_68::MessageFormat::applyPattern(icu_68::UnicodeString const&, UMessagePatternApostropheMode, UParseError*, UErrorCode&)",93957347755904,93957347755995],["icu_68::MessageFormat::setFormats(icu_68::Format const**, int)",93957347756752,93957347757205],["icu_68::MessageFormat::getFormat(icu_68::UnicodeString const&, UErrorCode&)",93957347758368,93957347758811],["icu_68::MessageFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347760144,93957347760355],["icu_68::AppendableWrapper::append(icu_68::UnicodeString const&)",93957347764752,93957347764845],["icu_68::MessageFormat::getLiteralStringUntilNextArgument(int) const",93957347766560,93957347766799],["icu_68::MessageFormat::parse(icu_68::UnicodeString const&, icu_68::ParsePosition&, int&) const",93957347769712,93957347769753],["icu_68::MessageFormat::findKeyword(icu_68::UnicodeString const&, char16_t const* const*)",93957347771200,93957347771590],["icu_68::FormatNameEnumeration::snext(UErrorCode&)",93957347771824,93957347771864],["icu_68::MessageFormat::PluralSelectorProvider::~PluralSelectorProvider()",93957347772032,93957347772088],["icu_68::ChoiceFormat::parseArgument(icu_68::MessagePattern const&, int, icu_68::UnicodeString const&, icu_68::ParsePosition&)",93957347773312,93957347773611],["icu_68::number::impl::LocalizedNumberFormatterAsFormat::~LocalizedNumberFormatterAsFormat()",93957347774528,93957347774585],["icu_68::number::impl::LocalizedNumberFormatterAsFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347775088,93957347775503],["dayPeriodRulesCleanup_68",93957347776112,93957347776184],["icu_68::DayPeriodRules::getStartHourForDayPeriod(icu_68::DayPeriodRules::DayPeriod, UErrorCode&) const",93957347777200,93957347777864],["icu_68::DayPeriodRulesDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347779120,93957347780654],["icu_68::DayPeriodRulesDataSink::parseHour(icu_68::UnicodeString const&, UErrorCode&)",93957347783344,93957347783540],["icu_68::smpdtfmt_cleanup()",93957347784464,93957347784526],["icu_68::CollationKey::reset()",93957347784720,93957347784743],["icu_68::StandardPlural::indexFromString(char const*, UErrorCode&)",93957347785456,93957347785502],["icu_68::StringSegment::adjustOffsetByCodePoint()",93957347785616,93957347785753],["icu_68::StringSegment::length() const",93957347785920,93957347785932],["icu_68::StringSegment::startsWith(int) const",93957347786144,93957347786315],["icu_68::StringSegment::getPrefixLengthInternal(icu_68::UnicodeString const&, bool)",93957347786736,93957347787098],["icu_68::TaiwanCalendar::clone() const",93957347787184,93957347787245],["icu_68::TaiwanCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347787504,93957347787528],["icu_68::TimeZone::loadRule(UResourceBundle const*, icu_68::UnicodeString const&, UResourceBundle*, UErrorCode&)",93957347787968,93957347788130],["icu_68::TimeZone::TimeZone(icu_68::TimeZone const&)",93957347788496,93957347788524],["icu_68::TimeZone::createCustomTimeZone(icu_68::UnicodeString const&)",93957347788784,93957347789064],["icu_68::TimeZone::adoptDefault(icu_68::TimeZone*)",93957347789936,93957347790023],["icu_68::TZEnumeration::~TZEnumeration()",93957347790784,93957347790842],["icu_68::TimeZone::createEnumeration()",93957347791904,93957347792097],["icu_68::TimeZone::dereferOlsonLink(icu_68::UnicodeString const&)",93957347792976,93957347793211],["icu_68::TimeZone::getDisplayName(signed char, icu_68::TimeZone::EDisplayType, icu_68::Locale const&, icu_68::UnicodeString&) const",93957347793664,93957347794795],["icu_68::TimeZone::formatCustomID(int, int, int, signed char, icu_68::UnicodeString&)",93957347796304,93957347796859],["icu_68::TZEnumeration::clone() const",93957347797328,93957347797575],["icu_68::(anonymous namespace)::createSystemTimeZone(icu_68::UnicodeString const&, UErrorCode&)",93957347797712,93957347798028],["icu_68::GMTOffsetField::~GMTOffsetField()",93957347799680,93957347799711],["icu_68::TimeZoneFormat::TimeZoneFormat(icu_68::Locale const&, UErrorCode&)",93957347800016,93957347802094],["icu_68::TimeZoneFormat::initGMTOffsetPatterns(UErrorCode&)",93957347803312,93957347803633],["icu_68::TimeZoneFormat::~TimeZoneFormat()",93957347804896,93957347804924],["icu_68::TimeZoneFormat::parseOffsetPattern(icu_68::UnicodeString const&, icu_68::TimeZoneFormat::OffsetFields, UErrorCode&)",93957347805856,93957347807502],["icu_68::TimeZoneFormat::formatExemplarLocation(icu_68::TimeZone const&, icu_68::UnicodeString&) const",93957347809008,93957347809567],["icu_68::TimeZoneFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347809680,93957347810271],["icu_68::TimeZoneFormat::createTimeZoneForOffset(int) const",93957347815792,93957347815940],["icu_68::TimeZoneFormat::getTZDBTimeZoneNames(UErrorCode&) const",93957347816640,93957347816765],["icu_68::TimeZoneFormat::parseExemplarLocation(icu_68::UnicodeString const&, icu_68::ParsePosition&, icu_68::UnicodeString&) const",93957347817984,93957347818488],["icu_68::TimeZoneFormat::parseAsciiOffsetFields(icu_68::UnicodeString const&, icu_68::ParsePosition&, char16_t, icu_68::TimeZoneFormat::OffsetFields, icu_68::TimeZoneFormat::OffsetFields)",93957347820112,93957347820651],["icu_68::TimeZoneFormat::parseOffsetFields(icu_68::UnicodeString const&, int, signed char, int&) const",93957347822064,93957347822963],["icu_68::TimeZoneFormat::parseDefaultOffsetFields(icu_68::UnicodeString const&, int, char16_t, int&) const",93957347825760,93957347826642],["icu_68::GNameSearchHandler::~GNameSearchHandler()",93957347827136,93957347827184],["icu_68::TZGNCore::~TZGNCore()",93957347828928,93957347829073],["icu_68::comparePartialLocationKey(UElement, UElement)",93957347829440,93957347829498],["icu_68::TZGNCore::formatGenericNonLocationName(icu_68::TimeZone const&, UTimeZoneGenericNameType, double, icu_68::UnicodeString&) const",93957347830576,93957347832827],["icu_68::TZGNCore::getPartialLocationName(icu_68::UnicodeString const&, icu_68::UnicodeString const&, signed char, icu_68::UnicodeString const&)",93957347834080,93957347835131],["icu_68::TimeZoneGenericNames::~TimeZoneGenericNames()",93957347837024,93957347837087],["icu_68::TimeZoneGenericNames::operator==(icu_68::TimeZoneGenericNames const&) const",93957347838080,93957347838097],["icu_68::TimeZoneGenericNames::findBestMatch(icu_68::UnicodeString const&, int, unsigned int, icu_68::UnicodeString&, UTimeZoneFormatTimeType&, UErrorCode&) const",93957347838288,93957347838305],["icu_68::TimeZoneNamesDelegate::~TimeZoneNamesDelegate()",93957347839040,93957347839110],["icu_68::TimeZoneNamesDelegate::getAvailableMetaZoneIDs(UErrorCode&) const",93957347839408,93957347839429],["icu_68::TimeZoneNamesDelegate::getMetaZoneDisplayName(icu_68::UnicodeString const&, UTimeZoneNameType, icu_68::UnicodeString&) const",93957347839536,93957347839557],["icu_68::TimeZoneNamesDelegate::getDisplayNames(icu_68::UnicodeString const&, UTimeZoneNameType const*, int, double, icu_68::UnicodeString*, UErrorCode&) const",93957347839664,93957347839685],["icu_68::TimeZoneNames::getDisplayName(icu_68::UnicodeString const&, UTimeZoneNameType, double, icu_68::UnicodeString&) const",93957347839840,93957347840068],["icu_68::TimeZoneNames::MatchInfoCollection::~MatchInfoCollection()",93957347840416,93957347840464],["icu_68::TimeZoneNames::MatchInfoCollection::getNameTypeAt(int) const",93957347841184,93957347841210],["icu_68::CharacterNode::addValue(void*, void (*)(void*), UErrorCode&)",93957347841440,93957347841662],["icu_68::ZNStringPool::get(icu_68::UnicodeString const&, UErrorCode&)",93957347841968,93957347842007],["icu_68::TextTrieMap::buildTrie(UErrorCode&)",93957347843040,93957347843291],["icu_68::ZNStringPool::~ZNStringPool()",93957347844176,93957347844248],["(anonymous namespace)::AvailableLocalesStringEnumeration::reset(UErrorCode&)",93957347844656,93957347844669],["icu_68::ZNameSearchHandler::~ZNameSearchHandler()",93957347844832,93957347844880],["icu_68::deleteZNames(void*)",93957347846032,93957347846093],["icu_68::TimeZoneNamesImpl::~TimeZoneNamesImpl()",93957347847712,93957347847740],["icu_68::TimeZoneNamesImpl::getAvailableMetaZoneIDs(icu_68::UnicodeString const&, UErrorCode&) const",93957347848096,93957347848112],["icu_68::TimeZoneNamesImpl::getMetaZoneDisplayName(icu_68::UnicodeString const&, UTimeZoneNameType, icu_68::UnicodeString&) const",93957347848624,93957347848803],["icu_68::ZNames::createTimeZoneAndPutInCache(UHashtable*, char16_t const**, icu_68::UnicodeString const&, UErrorCode&)",93957347849552,93957347849957],["icu_68::TimeZoneNamesImpl::internalLoadAllDisplayNames(UErrorCode&)",93957347851104,93957347851668],["icu_68::TimeZoneNamesImpl::getDisplayNames(icu_68::UnicodeString const&, UTimeZoneNameType const*, int, double, icu_68::UnicodeString*, UErrorCode&) const",93957347851872,93957347852497],["icu_68::TZDBNames::~TZDBNames()",93957347854304,93957347854417],["icu_68::TZDBNameSearchHandler::handleMatch(int, icu_68::CharacterNode const*, UErrorCode&)",93957347855168,93957347855834],["icu_68::TZDBTimeZoneNames::clone() const",93957347856256,93957347856311],["icu_68::TZDBTimeZoneNames::find(icu_68::UnicodeString const&, int, unsigned int, UErrorCode&) const",93957347857328,93957347858237],["icu_68::deleteZNamesLoader(void*)",93957347859504,93957347859534],["icu_68::TimeZoneNamesImpl::ZoneStringsLoader::consumeNamesTable(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347859696,93957347860484],["icu_68::TimeZoneRule::isEquivalentTo(icu_68::TimeZoneRule const&) const",93957347860752,93957347860822],["icu_68::InitialTimeZoneRule::clone() const",93957347860992,93957347861082],["icu_68::AnnualTimeZoneRule::AnnualTimeZoneRule(icu_68::UnicodeString const&, int, int, icu_68::DateTimeRule*, int, int)",93957347861248,93957347861343],["icu_68::AnnualTimeZoneRule::operator==(icu_68::TimeZoneRule const&) const",93957347861664,93957347861765],["icu_68::AnnualTimeZoneRule::getFirstStart(int, int, double&) const",93957347862608,93957347862628],["icu_68::TimeArrayTimeZoneRule::getDynamicClassID() const",93957347863184,93957347863197],["icu_68::TimeArrayTimeZoneRule::~TimeArrayTimeZoneRule()",93957347863648,93957347863731],["icu_68::TimeArrayTimeZoneRule::getFirstStart(int, int, double&) const",93957347864176,93957347864242],["compareDates(void const*, void const*, void const*)",93957347864592,93957347864635],["icu_68::TimeZoneTransition::~TimeZoneTransition()",93957347864752,93957347864815],["icu_68::TimeZoneTransition::setTo(icu_68::TimeZoneRule const&)",93957347865056,93957347865102],["icu_68::TimeZoneTransition::getTime() const",93957347865216,93957347865227],["i18n_cleanup()",93957347866016,93957347866089],["icu_68::CollationLoader::getCacheEntry(UErrorCode&)",93957347867056,93957347867358],["icu_68::CollationLoader::loadFromCollations(UErrorCode&)",93957347869296,93957347870389],["icu_68::LocaleCacheKey<icu_68::CollationCacheEntry>::~LocaleCacheKey()",93957347871776,93957347871818],["(anonymous namespace)::KeywordsSink::~KeywordsSink()",93957347872256,93957347872306],["icu_68::LocaleCacheKey<icu_68::CollationCacheEntry>::clone() const",93957347873200,93957347873294],["icu_68::UIterCollationIterator::handleGetTrailSurrogate()",93957347873456,93957347873513],["icu_68::UIterCollationIterator::backwardNumCodePoints(int, UErrorCode&)",93957347873632,93957347873679],["icu_68::FCDUIterCollationIterator::getOffset() const",93957347873856,93957347873921],["icu_68::FCDUIterCollationIterator::nextCodePoint(UErrorCode&)",93957347875488,93957347876098],["icu_68::FCDUIterCollationIterator::backwardNumCodePoints(int, UErrorCode&)",93957347877664,93957347877732],["icu_68::units::ComplexUnitsConverter::ComplexUnitsConverter(icu_68::MeasureUnitImpl const&, icu_68::MeasureUnitImpl const&, icu_68::units::ConversionRates const&, UErrorCode&)::$_0::__invoke(void const*, void const*, void const*)",93957347880864,93957347881301],["icu_68::units::Factor::substituteConstants()",93957347882048,93957347882407],["icu_68::units::extractConvertibility(icu_68::MeasureUnitImpl const&, icu_68::MeasureUnitImpl const&, icu_68::units::ConversionRates const&, UErrorCode&)",93957347884544,93957347885628],["icu_68::units::UnitConverter::convert(double) const",93957347887312,93957347887395],["icu_68::units::getUnitCategory(char const*, UErrorCode&)",93957347889584,93957347889870],["icu_68::units::UnitPreferences::getPreferencesFor(icu_68::StringPiece, icu_68::StringPiece, icu_68::StringPiece, icu_68::units::UnitPreference const* const*&, int&, UErrorCode&) const",93957347890320,93957347891919],["icu_68::units::UnitPreferenceMetadata* icu_68::MemoryPool<icu_68::units::UnitPreferenceMetadata, 8>::create<char const*&, char const*&, char const*&, int&, int&, UErrorCode&>(char const*&, char const*&, char const*&, int&, int&, UErrorCode&)",93957347895744,93957347896313],["icu_68::units::UnitsRouter::route(double, icu_68::number::impl::RoundingImpl*, UErrorCode&) const",93957347899072,93957347899976],["icu_68::UTF16CollationIterator::resetToOffset(int)",93957347900656,93957347900699],["icu_68::UTF16CollationIterator::foundNULTerminator()",93957347900896,93957347900943],["icu_68::UTF16CollationIterator::backwardNumCodePoints(int, UErrorCode&)",93957347901328,93957347901445],["icu_68::FCDUTF16CollationIterator::resetToOffset(int)",93957347901760,93957347901838],["icu_68::FCDUTF16CollationIterator::foundNULTerminator()",93957347903072,93957347903126],["icu_68::FCDUTF16CollationIterator::forwardNumCodePoints(int, UErrorCode&)",93957347904800,93957347904868],["icu_68::UTF8CollationIterator::handleNextCE32(int&, UErrorCode&)",93957347905008,93957347905537],["icu_68::UTF8CollationIterator::forwardNumCodePoints(int, UErrorCode&)",93957347906032,93957347906420],["icu_68::FCDUTF8CollationIterator::resetToOffset(int)",93957347906640,93957347906687],["icu_68::FCDUTF8CollationIterator::nextSegment(UErrorCode&)",93957347908288,93957347909643],["icu_68::FCDUTF8CollationIterator::previousCodePoint(UErrorCode&)",93957347911008,93957347911760],["icu_68::ZoneMeta::getCanonicalCLDRID(icu_68::UnicodeString const&, UErrorCode&)",93957347912752,93957347913875],["icu_68::ZoneMeta::getCanonicalCLDRID(icu_68::TimeZone const&)",93957347914096,93957347914291],["icu_68::ZoneMeta::createMetazoneMappings(icu_68::UnicodeString const&)",93957347916192,93957347917233],["icu_68::initAvailableMetaZoneIDs()",93957347918592,93957347919462],["icu_68::ZoneMeta::getShortID(icu_68::TimeZone const&)",93957347920368,93957347920440],["icu_68::BreakIterator::buildInstance(icu_68::Locale const&, char const*, UErrorCode&)",93957347921056,93957347922193],["icu_68::BreakIterator::createCharacterInstance(icu_68::Locale const&, UErrorCode&)",93957347922752,93957347922767],["icu_68::BreakIterator::operator=(icu_68::BreakIterator const&)",93957347922912,93957347922983],["icu_68::ICUBreakIteratorFactory::handleCreate(icu_68::Locale const&, int, icu_68::ICUService const*, UErrorCode&) const",93957347923920,93957347923938],["icu_68::ByteSinkUtil::appendChange(int, char16_t const*, int, icu_68::ByteSink&, icu_68::Edits*, UErrorCode&)",93957347924480,93957347925243],["icu_68::CharStringByteSink::CharStringByteSink(icu_68::CharString*)",93957347925648,93957347925668],["icu_68::CheckedArrayByteSink::CheckedArrayByteSink(char*, int)",93957347925872,93957347925914],["icu_68::BytesTrieBuilder::BytesTrieBuilder(UErrorCode&)",93957347926144,93957347926270],["icu_68::BytesTrieBuilder::buildBytes(UStringTrieBuildOption, UErrorCode&)",93957347926832,93957347927339],["icu_68::BytesTrieBuilder::getElementUnit(int, int) const",93957347927632,93957347927675],["icu_68::BytesTrieBuilder::skipElementsBySomeUnits(int, int, int) const",93957347928016,93957347928121],["icu_68::BytesTrieBuilder::write(char const*, int)",93957347928352,93957347928565],["icu_68::BytesTrieBuilder::writeValueAndFinal(int, signed char)",93957347929056,93957347929274],["icu_68::BytesTrie::branchNext(unsigned char const*, int, int)",93957347929680,93957347930344],["icu_68::CanonicalIterator::CanonicalIterator(icu_68::UnicodeString const&, UErrorCode&)",93957347930832,93957347931010],["icu_68::CanonicalIterator::~CanonicalIterator()",93957347932640,93957347932704],["icu_68::CanonicalIterator::permute(icu_68::UnicodeString&, signed char, icu_68::Hashtable*, UErrorCode&)",93957347935040,93957347935986],["icu_68::CharString::operator=(icu_68::CharString&&)",93957347938816,93957347938926],["icu_68::CharString::lastIndexOf(char) const",93957347939440,93957347939481],["icu_68::CharString::append(icu_68::CharString const&, UErrorCode&)",93957347939968,93957347939990],["icu_68::CharString::appendInvariantChars(char16_t const*, int, UErrorCode&)",93957347940352,93957347940489],["uprv_free_68",93957347940800,93957347940852],["T_CString_toLowerCase_68",93957347940960,93957347941010],["uprv_strnicmp_68",93957347941424,93957347941561],["icu_68::Edits::addUnchanged(int)",93957347941696,93957347942276],["icu_68::Edits::Iterator::Iterator(unsigned short const*, int, signed char, signed char)",93957347943440,93957347943488],["icu_68::SimpleFilteredSentenceBreakData::~SimpleFilteredSentenceBreakData()",93957347944512,93957347944591],["icu_68::SimpleFilteredSentenceBreakIterator::~SimpleFilteredSentenceBreakIterator()",93957347945072,93957347945191],["icu_68::SimpleFilteredSentenceBreakIterator::first()",93957347946176,93957347946194],["icu_68::SimpleFilteredSentenceBreakIterator::next(int)",93957347946800,93957347946841],["icu_68::SimpleFilteredBreakIteratorBuilder::~SimpleFilteredBreakIteratorBuilder()",93957347946976,93957347947026],["icu_68::SimpleFilteredBreakIteratorBuilder::build(icu_68::BreakIterator*, UErrorCode&)",93957347947856,93957347949783],["icu_68::SimpleFilteredSentenceBreakIterator::getUText(UText*, UErrorCode&) const",93957347950048,93957347950069],["icu_68::SimpleFilteredSentenceBreakIterator::current() const",93957347950176,93957347950194],["icu_68::LoadedNormalizer2Impl::~LoadedNormalizer2Impl()",93957347950352,93957347950411],["icu_68::Norm2AllModes::getNFKCInstance(UErrorCode&)",93957347950800,93957347950908],["icu_68::Normalizer2::getInstance(char const*, char const*, UNormalization2Mode, UErrorCode&)",93957347951472,93957347952128],["icu_68::Normalizer2Factory::getInstance(UNormalizationMode, UErrorCode&)",93957347952368,93957347952667],["icu_68::LocaleBuilder::LocaleBuilder()",93957347953008,93957347953043],["icu_68::LocaleBuilder::setLanguage(icu_68::StringPiece)",93957347953744,93957347953846],["icu_68::LocaleBuilder::setLanguageTag(icu_68::StringPiece)",93957347954448,93957347954642],["icu_68::LocaleBuilder::build(UErrorCode&)",93957347955776,93957347956720],["icu_68::LocaleMatcher::Builder::build(UErrorCode&) const",93957347957072,93957347957112],["icu_68::(anonymous namespace)::compareLSRs(UElement, UElement)",93957347960000,93957347960010],["icu_68::LocaleMatcher::getBestSuppIndex(icu_68::LSR, icu_68::LocaleLsrIterator*, UErrorCode&) const",93957347960592,93957347961368],["(anonymous namespace)::uloc_cleanup()",93957347962144,93957347962226],["(anonymous namespace)::AvailableLocalesStringEnumeration::next(int*, UErrorCode&)",93957347962912,93957347963030],["icu_68::LocaleBased::setLocaleIDs(icu_68::Locale const&, icu_68::Locale const&)",93957347963264,93957347963306],["uloc_getDisplayName_68",93957347964176,93957347968259],["icu_68::(anonymous namespace)::cleanup()",93957347969440,93957347969503],["icu_68::LocaleDistance::getDesSuppScriptDistance(icu_68::BytesTrie&, unsigned long, char const*, char const*)",93957347971440,93957347971777],["icu_68::LocaleDisplayNamesImpl::LocaleDisplayNamesImpl(icu_68::Locale const&, UDialectHandling)",93957347972768,93957347973157],["icu_68::LocaleDisplayNamesImpl::~LocaleDisplayNamesImpl()",93957347976096,93957347976124],["icu_68::LocaleDisplayNamesImpl::localeDisplayName(icu_68::Locale const&, icu_68::UnicodeString&) const",93957347976384,93957347980081],["icu_68::LocaleDisplayNamesImpl::regionDisplayName(char const*, icu_68::UnicodeString&, signed char) const",93957347981184,93957347981591],["icu_68::LocaleDisplayNamesImpl::keyValueDisplayName(char const*, char const*, icu_68::UnicodeString&, signed char) const",93957347982224,93957347982926],["icu_68::LocaleDisplayNamesImpl::scriptDisplayName(UScriptCode, icu_68::UnicodeString&) const",93957347983584,93957347983624],["icu_68::LocaleDisplayNamesImpl::keyValueDisplayName(char const*, char const*, icu_68::UnicodeString&) const",93957347983680,93957347983693],["icu_68::locale_set_default_internal(char const*, UErrorCode&)",93957347984384,93957347984935],["icu_68::Locale::getDefault()",93957347986784,93957347986863],["icu_68::Locale::Locale()",93957347987072,93957347987115],["icu_68::Locale::operator=(icu_68::Locale const&)",93957347988240,93957347988530],["icu_68::Locale::operator==(icu_68::Locale const&) const",93957347988880,93957347988907],["icu_68::Locale::setDefault(icu_68::Locale const&, UErrorCode&)",93957347999680,93957347999701],["icu_68::Locale::forLanguageTag(icu_68::StringPiece, UErrorCode&)",93957348000384,93957348000830],["icu_68::Locale::getRoot()",93957348001280,93957348001306],["icu_68::Locale::createKeywords(UErrorCode&) const",93957348004928,93957348005260],["icu_68::Locale::getUnicodeKeywordValue(icu_68::StringPiece, icu_68::ByteSink&, UErrorCode&) const",93957348005728,93957348006340],["icu_68::KeywordEnumeration::clone() const",93957348007008,93957348007257],["icu_68::KeywordEnumeration::reset(UErrorCode&)",93957348007504,93957348007521],["icu_68::(anonymous namespace)::AliasReplacer::outputToString(icu_68::CharString&, UErrorCode)::$_12::__invoke(UElement, UElement)",93957348009936,93957348009947],["_ulocimp_addLikelySubtags(char const*, icu_68::ByteSink&, UErrorCode*)",93957348010064,93957348010617],["createLikelySubtagsString(char const*, int, char const*, int, char const*, int, char const*, int, icu_68::ByteSink&, UErrorCode*)",93957348014864,93957348017045],["icu_68::XLikelySubtagsData::load(UErrorCode&)",93957348018816,93957348022083],["icu_68::XLikelySubtags::XLikelySubtags(icu_68::XLikelySubtagsData&)",93957348022576,93957348023026],["icu_68::XLikelySubtags::maximize(char const*, char const*, char const*) const",93957348023984,93957348024959],["icu_68::XLikelySubtagsData::readStrings(icu_68::ResourceTable const&, char const*, icu_68::ResourceValue&, icu_68::LocalMemory<int>&, int&, UErrorCode&)",93957348025952,93957348026454],["icu_68::LocaleUtility::initNameFromLocale(icu_68::Locale const&, icu_68::UnicodeString&)",93957348028448,93957348028587],["icu_68::LSR::indexForRegion(char const*)",93957348030128,93957348030245],["icu_68::LSR::operator==(icu_68::LSR const&) const",93957348030496,93957348030590],["icu_68::MessagePattern::MessagePattern(icu_68::MessagePattern const&)",93957348031056,93957348031227],["icu_68::MessagePattern::~MessagePattern()",93957348032016,93957348032044],["icu_68::MessagePattern::parsePluralOrSelectStyle(UMessagePatternArgType, int, int, UParseError*, UErrorCode&)",93957348034528,93957348036402],["icu_68::MessagePattern::getPluralOffset(int) const",93957348037056,93957348037138],["icu_68::MessagePattern::skipWhiteSpace(int)",93957348039664,93957348039753],["icu_68::MessagePattern::isOrdinal(int)",93957348040912,93957348041352],["icu_68::MessageImpl::appendReducedApostrophes(icu_68::UnicodeString const&, int, int, icu_68::UnicodeString&)",93957348043056,93957348043312],["icu_68::Norm2AllModes::~Norm2AllModes()",93957348043888,93957348043956],["icu_68::Normalizer2::getNFCInstance(UErrorCode&)",93957348044464,93957348044600],["u_getCombiningClass_68",93957348045040,93957348045209],["icu_68::Normalizer2WithImpl::append(icu_68::UnicodeString&, icu_68::UnicodeString const&, UErrorCode&) const",93957348045776,93957348045791],["icu_68::Normalizer2WithImpl::getCombiningClass(int) const",93957348046160,93957348046322],["icu_68::FCDNormalizer2::hasBoundaryBefore(int) const",93957348046704,93957348046718],["icu_68::DecomposeNormalizer2::normalizeAndAppend(char16_t const*, char16_t const*, signed char, icu_68::UnicodeString&, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348046912,93957348046926],["icu_68::ComposeNormalizer2::isNormalized(icu_68::UnicodeString const&, UErrorCode&) const",93957348047264,93957348047643],["icu_68::ComposeNormalizer2::hasBoundaryAfter(int) const",93957348048016,93957348048208],["icu_68::ComposeNormalizer2::spanQuickCheckYes(char16_t const*, char16_t const*, UErrorCode&) const",93957348048496,93957348048520],["icu_68::FCDNormalizer2::normalizeAndAppend(char16_t const*, char16_t const*, signed char, icu_68::UnicodeString&, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348048784,93957348048798],["icu_68::NoopNormalizer2::normalizeSecondAndAppend(icu_68::UnicodeString&, icu_68::UnicodeString const&, UErrorCode&) const",93957348049024,93957348049091],["icu_68::uprv_normalizer2_cleanup()",93957348049168,93957348049310],["icu_68::ReorderingBuffer::equals(unsigned char const*, unsigned char const*) const",93957348050240,93957348050566],["icu_68::ReorderingBuffer::appendZeroCC(char16_t const*, char16_t const*, UErrorCode&)",93957348052736,93957348053016],["icu_68::Normalizer2Impl::addPropertyStarts(USetAdder const*, UErrorCode&) const",93957348053344,93957348053851],["icu_68::Normalizer2Impl::decompose(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&) const",93957348054240,93957348054518],["icu_68::Normalizer2Impl::decomposeShort(char16_t const*, char16_t const*, signed char, signed char, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348056096,93957348056588],["icu_68::Normalizer2Impl::decomposeAndAppend(char16_t const*, char16_t const*, signed char, icu_68::UnicodeString&, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348059728,93957348060343],["icu_68::Normalizer2Impl::recompose(icu_68::ReorderingBuffer&, int, signed char) const",93957348061168,93957348063582],["icu_68::Normalizer2Impl::hasCompBoundaryAfter(char16_t const*, char16_t const*, signed char) const",93957348067328,93957348067568],["icu_68::Normalizer2Impl::findNextCompBoundary(char16_t const*, char16_t const*, signed char) const",93957348069872,93957348070219],["icu_68::Normalizer2Impl::getFCD16FromNormData(int) const",93957348075552,93957348075906],["icu_68::Normalizer2Impl::findPreviousFCDBoundary(char16_t const*, char16_t const*) const",93957348078112,93957348078615],["icu_68::Normalizer2Impl::isCanonSegmentStarter(int) const",93957348080128,93957348080152],["icu_68::PatternProps::skipWhiteSpace(char16_t const*, int)",93957348080624,93957348080732],["icu_68::PatternProps::skipIdentifier(char16_t const*, int)",93957348081472,93957348081650],["u_getPropertyName_68",93957348082672,93957348082939],["uscript_getName_68",93957348083168,93957348083190],["uprv_isInfinite_68",93957348083376,93957348083416],["uprv_floor_68",93957348083520,93957348083530],["uprv_pow10_68",93957348083600,93957348083622],["uprv_log_68",93957348083760,93957348083770],["uprv_tzname_68",93957348083840,93957348084473],["putil_cleanup()",93957348086192,93957348086391],["TimeZoneDataDirInitFn(UErrorCode&)",93957348086656,93957348086838],["icu_68::RuleBasedBreakIterator::init(UErrorCode&)",93957348087696,93957348087954],["icu_68::RuleBasedBreakIterator::~RuleBasedBreakIterator()",93957348088912,93957348088940],["icu_68::RuleBasedBreakIterator::setText(UText*, UErrorCode&)",93957348089360,93957348089578],["icu_68::RuleBasedBreakIterator::setText(icu_68::UnicodeString const&)",93957348089808,93957348089946],["icu_68::RuleBasedBreakIterator::next(int)",93957348090208,93957348090296],["icu_68::RuleBasedBreakIterator::preceding(int)",93957348090608,93957348090740],["icu_68::RuleBasedBreakIterator::handleSafePrevious(int)",93957348094512,93957348096509],["icu_68::RuleBasedBreakIterator::createBufferClone(void*, int&, UErrorCode&)",93957348096816,93957348096878],["icu_68::LanguageBreakEngine::LanguageBreakEngine()",93957348097728,93957348097744],["icu_68::UnhandledEngine::handles(int) const",93957348097920,93957348097949],["icu_68::ICULanguageBreakFactory::~ICULanguageBreakFactory()",93957348098224,93957348098256],["icu_68::ICULanguageBreakFactory::loadDictionaryMatcherFor(UScriptCode)",93957348098928,93957348099741],["icu_68::DictionaryBreakEngine::setCharacters(icu_68::UnicodeSet const&)",93957348100016,93957348100051],["icu_68::ThaiBreakEngine::~ThaiBreakEngine()",93957348101040,93957348101068],["icu_68::LaoBreakEngine::~LaoBreakEngine()",93957348103792,93957348103918],["icu_68::BurmeseBreakEngine::~BurmeseBreakEngine()",93957348106080,93957348106206],["icu_68::KhmerBreakEngine::divideUpDictionaryRange(UText*, int, int, icu_68::UVector32&) const",93957348107024,93957348108478],["icu_68::CjkBreakEngine::divideUpDictionaryRange(UText*, int, int, icu_68::UVector32&) const",93957348109632,93957348114141],["icu_68::BytesDictionaryMatcher::~BytesDictionaryMatcher()",93957348114736,93957348114760],["icu_68::RuleBasedBreakIterator::DictionaryCache::~DictionaryCache()",93957348115408,93957348115422],["icu_68::RuleBasedBreakIterator::BreakCache::BreakCache(icu_68::RuleBasedBreakIterator*, UErrorCode&)",93957348116288,93957348116356],["icu_68::RuleBasedBreakIterator::BreakCache::current()",93957348116496,93957348116551],["icu_68::RuleBasedBreakIterator::BreakCache::preceding(int, UErrorCode&)",93957348117760,93957348118136],["icu_68::RuleBasedBreakIterator::BreakCache::populatePreceding(UErrorCode&)",93957348119072,93957348120608],["icu_68::RBBIDataWrapper::hashCode()",93957348121120,93957348121132],["icu_68::FileTracer::traceOpen(char const*, char const*, char const*)",93957348121280,93957348121353],["icu_68::StringCharacterIterator::~StringCharacterIterator()",93957348121952,93957348121994],["icu_68::StringCharacterIterator::clone() const",93957348122336,93957348122446],["icu_68::ICUServiceKey::~ICUServiceKey()",93957348122624,93957348122666],["icu_68::ICUServiceKey::currentDescriptor(icu_68::UnicodeString&) const",93957348122800,93957348122869],["icu_68::SimpleFactory::~SimpleFactory()",93957348123104,93957348123161],["icu_68::SimpleFactory::getDisplayName(icu_68::UnicodeString const&, icu_68::Locale const&, icu_68::UnicodeString&) const",93957348123616,93957348123746],["icu_68::ICUService::getKey(icu_68::ICUServiceKey&, UErrorCode&) const",93957348123952,93957348123971],["icu_68::ICUService::getVisibleIDs(icu_68::UVector&, UErrorCode&) const",93957348126160,93957348126175],["icu_68::ICUService::createSimpleFactory(icu_68::UObject*, icu_68::UnicodeString const&, signed char, UErrorCode&)",93957348127056,93957348127167],["icu_68::ICUService::reInitializeFactories()",93957348127648,93957348127669],["icu_68::ICUService::clearCaches()",93957348127824,93957348127967],["icu_68::LocaleKeyFactory::~LocaleKeyFactory()",93957348128128,93957348128170],["icu_68::LocaleKeyFactory::handlesKey(icu_68::ICUServiceKey const&, UErrorCode&) const",93957348128528,93957348128696],["icu_68::LocaleKeyFactory::getDisplayName(icu_68::UnicodeString const&, icu_68::Locale const&, icu_68::UnicodeString&) const",93957348128928,93957348129168],["icu_68::ICULocaleService::ICULocaleService(icu_68::UnicodeString const&)",93957348129184,93957348129261],["icu_68::ICULocaleService::get(icu_68::Locale const&, int, icu_68::Locale*, UErrorCode&) const",93957348129328,93957348129695],["icu_68::ICULocaleService::get(icu_68::Locale const&, icu_68::Locale*, UErrorCode&) const",93957348129904,93957348129925],["icu_68::ICULocaleService::registerInstance(icu_68::UObject*, icu_68::Locale const&, UErrorCode&)",93957348130208,93957348130236],["icu_68::ICULocaleService::registerInstance(icu_68::UObject*, icu_68::Locale const&, int, int, UErrorCode&)",93957348130272,93957348130412],["icu_68::ServiceEnumeration::~ServiceEnumeration()",93957348130464,93957348130517],["icu_68::ICULocaleService::getAvailableLocales() const",93957348130544,93957348130554],["icu_68::ICULocaleService::validateFallbackLocale() const",93957348130736,93957348130855],["icu_68::ICULocaleService::createKey(icu_68::UnicodeString const*, int, UErrorCode&) const",93957348130912,93957348130963],["icu_68::ServiceEnumeration::count(UErrorCode&) const",93957348131072,93957348131145],["icu_68::ServiceEnumeration::reset(UErrorCode&)",93957348131264,93957348131349],["icu_68::LocaleKey::createWithCanonicalFallback(icu_68::UnicodeString const*, icu_68::UnicodeString const*, UErrorCode&)",93957348131600,93957348131786],["icu_68::LocaleKey::LocaleKey(icu_68::UnicodeString const&, icu_68::UnicodeString const&, icu_68::UnicodeString const*, int)",93957348131984,93957348132256],["icu_68::LocaleKey::~LocaleKey()",93957348132336,93957348132410],["icu_68::LocaleKey::canonicalID(icu_68::UnicodeString&) const",93957348132672,93957348132711],["icu_68::LocaleKey::currentDescriptor(icu_68::UnicodeString&) const",93957348132784,93957348132918],["icu_68::LocaleKey::currentLocale(icu_68::Locale&) const",93957348132944,93957348132961],["icu_68::LocaleKey::isFallbackOf(icu_68::UnicodeString const&) const",93957348133200,93957348133483],["icu_68::ICUNotifier::ICUNotifier()",93957348133504,93957348133528],["icu_68::ICUNotifier::addListener(icu_68::EventListener const*, UErrorCode&)",93957348133616,93957348133870],["icu_68::ICUNotifier::notifyChanged()",93957348134080,93957348134224],["icu_68::ICUResourceBundleFactory::ICUResourceBundleFactory(icu_68::UnicodeString const&)",93957348134288,93957348134337],["icu_68::ICUResourceBundleFactory::~ICUResourceBundleFactory()",93957348134400,93957348134450],["icu_68::ICUResourceBundleFactory::handleCreate(icu_68::Locale const&, int, icu_68::ICUService const*, UErrorCode&) const",93957348134496,93957348134662],["icu_68::ResourceBundle::getDynamicClassID() const",93957348134688,93957348134701],["icu_68::ResourceBundle::~ResourceBundle()",93957348134768,93957348134830],["icu_68::SimpleLocaleKeyFactory::SimpleLocaleKeyFactory(icu_68::UObject*, icu_68::Locale const&, int, int)",93957348134912,93957348135005],["icu_68::SimpleLocaleKeyFactory::~SimpleLocaleKeyFactory()",93957348135088,93957348135161],["icu_68::SimpleLocaleKeyFactory::updateVisibleIDs(icu_68::Hashtable&, UErrorCode&) const",93957348135472,93957348135590],["icu_68::SharedObject::addRef() const",93957348135616,93957348135627],["icu_68::SharedObject::deleteIfZeroRefCount() const",93957348135680,93957348135712],["icu_68::SimpleFormatter::applyPatternMinMaxArguments(icu_68::UnicodeString const&, int, int, UErrorCode&)",93957348135728,93957348136613],["icu_68::SimpleFormatter::format(icu_68::UnicodeString const&, icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&) const",93957348137008,93957348137384],["icu_68::SimpleFormatter::formatAndReplace(icu_68::UnicodeString const* const*, int, icu_68::UnicodeString&, int*, int, UErrorCode&) const",93957348137792,93957348138305],["icu_68::unisets::get(icu_68::unisets::Key)",93957348138608,93957348140051],["(anonymous namespace)::cleanupNumberParseUniSets()",93957348140208,93957348140341],["(anonymous namespace)::ParseDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957348140512,93957348142473],["icu_68::StringPiece::StringPiece(char const*)",93957348142560,93957348142599],["icu_68::StringPiece::compare(icu_68::StringPiece)",93957348142672,93957348142761],["icu_68::StringTrieBuilder::StringTrieBuilder()",93957348142832,93957348142856],["icu_68::StringTrieBuilder::build(UStringTrieBuildOption, int, UErrorCode&)",93957348142928,93957348143126],["icu_68::StringTrieBuilder::makeNode(int, int, int, UErrorCode&)",93957348143648,93957348144686],["icu_68::StringTrieBuilder::registerFinalValue(int, UErrorCode&)",93957348145488,93957348145757],["icu_68::StringTrieBuilder::Node::markRightEdgesFirst(int)",93957348147136,93957348147155],["icu_68::StringTrieBuilder::FinalValueNode::write(icu_68::StringTrieBuilder&)",93957348147248,93957348147290],["icu_68::StringTrieBuilder::IntermediateValueNode::markRightEdgesFirst(int)",93957348147392,93957348147431],["icu_68::StringTrieBuilder::BranchHeadNode::operator==(icu_68::StringTrieBuilder::Node const&) const",93957348147504,93957348147604],["icu_68::StringTrieBuilder::ListBranchNode::operator==(icu_68::StringTrieBuilder::Node const&) const",93957348147664,93957348147782],["icu_68::StringTrieBuilder::ListBranchNode::write(icu_68::StringTrieBuilder&)",93957348147904,93957348148206],["icu_68::StringTrieBuilder::SplitBranchNode::markRightEdgesFirst(int)",93957348148304,93957348148359],["icu_68::StringTrieBuilder::BranchHeadNode::write(icu_68::StringTrieBuilder&)",93957348148480,93957348148602],["subQuickSort(char*, int, int, int, int (*)(void const*, void const*, void const*), void const*, void*, void*)",93957348149552,93957348150699],["_enumPropertyStartsRange(void const*, int, int, unsigned int)",93957348150752,93957348150769],["ucase_addCaseClosure_68",93957348150800,93957348151807],["ucase_getType_68",93957348152176,93957348152327],["ucase_getCaseLocale_68",93957348152496,93957348152821],["isFollowedByCasedLetter(int (*)(void*, signed char), void*, signed char)",93957348154544,93957348154761],["toUpperOrTitle(int, int (*)(void*, signed char), void*, char16_t const**, int, signed char)",93957348154784,93957348155825],["ucase_fold_68",93957348155856,93957348156294],["u_foldCase_68",93957348156912,93957348156922],["u_charType_68",93957348158336,93957348158463],["u_isupper_68",93957348158608,93957348158744],["u_isxdigit_68",93957348158896,93957348159073],["u_isalnumPOSIX_68",93957348159248,93957348159526],["u_isblank_68",93957348159728,93957348159887],["u_isprintPOSIX_68",93957348160032,93957348160365],["u_charDigitValue_68",93957348160512,93957348160659],["u_digit_68",93957348161296,93957348161554],["uprv_getMaxValues_68",93957348161696,93957348161725],["uscript_getScript_68",93957348161904,93957348162136],["uchar_addPropertyStarts_68",93957348162400,93957348162883],["icu_68::UCharsTrieElement::compareStringTo(icu_68::UCharsTrieElement const&, icu_68::UnicodeString const&) const",93957348162944,93957348163271],["icu_68::UCharsTrieBuilder::UCharsTrieBuilder(UErrorCode&)",93957348163376,93957348163439],["icu_68::UCharsTrieBuilder::~UCharsTrieBuilder()",93957348163520,93957348163593],["icu_68::UCharsTrieBuilder::build(UStringTrieBuildOption, UErrorCode&)",93957348163984,93957348164092],["icu_68::UCharsTrieBuilder::buildUnicodeString(UStringTrieBuildOption, icu_68::UnicodeString&, UErrorCode&)",93957348164800,93957348164893],["icu_68::UCharsTrieBuilder::getElementStringLength(int) const",93957348164928,93957348164992],["icu_68::UCharsTrieBuilder::getElementValue(int) const",93957348165072,93957348165089],["icu_68::UCharsTrieBuilder::countElementUnits(int, int, int) const",93957348165360,93957348165569],["icu_68::UCharsTrieBuilder::indexOfElementWithNextUnit(int, int, char16_t) const",93957348165776,93957348165891],["icu_68::UCharsTrieBuilder::UCTLinearMatchNode::write(icu_68::StringTrieBuilder&)",93957348165968,93957348166121],["icu_68::UCharsTrieBuilder::ensureCapacity(int)",93957348166464,93957348166641],["icu_68::UCharsTrieBuilder::writeElementUnits(int, int, int)",93957348166736,93957348167003],["icu_68::UCharsTrieBuilder::writeValueAndType(signed char, int, int)",93957348167200,93957348167397],["icu_68::UCharsTrieBuilder::getMinLinearMatch() const",93957348167600,93957348167611],["icu_68::UCharsTrie::firstForCodePoint(int)",93957348167664,93957348168030],["icu_68::UCharsTrie::nextForCodePoint(int)",93957348168224,93957348168302],["icu_68::UCharsTrie::nextImpl(char16_t const*, int)",93957348168768,93957348168914],["icu_68::UCharsTrie::Iterator::Iterator(icu_68::ConstChar16Ptr, int, UErrorCode&)",93957348169440,93957348169587],["icu_68::UCharsTrie::Iterator::next(UErrorCode&)",93957348169648,93957348170533],["icu_68::UCharCharacterIterator::getDynamicClassID() const",93957348171248,93957348171261],["icu_68::UCharCharacterIterator::UCharCharacterIterator(icu_68::UCharCharacterIterator const&)",93957348171344,93957348171385],["icu_68::UCharCharacterIterator::operator==(icu_68::ForwardCharacterIterator const&) const",93957348171440,93957348171536],["icu_68::UCharCharacterIterator::clone() const",93957348171584,93957348171653],["icu_68::UCharCharacterIterator::firstPostInc()",93957348171696,93957348171732],["icu_68::UCharCharacterIterator::setIndex(int)",93957348171792,93957348171853],["icu_68::UCharCharacterIterator::next()",93957348171888,93957348171929],["icu_68::UCharCharacterIterator::hasNext()",93957348171984,93957348171999],["icu_68::UCharCharacterIterator::hasPrevious()",93957348172048,93957348172063],["icu_68::UCharCharacterIterator::first32PostInc()",93957348172160,93957348172258],["icu_68::UCharCharacterIterator::setIndex32(int)",93957348172384,93957348172554],["icu_68::UCharCharacterIterator::next32()",93957348172704,93957348172866],["icu_68::UCharCharacterIterator::previous32()",93957348172976,93957348173073],["icu_68::UCharCharacterIterator::move32(int, icu_68::CharacterIterator::EOrigin)",93957348173152,93957348173714],["icu_68::UCharCharacterIterator::getText(icu_68::UnicodeString&)",93957348173776,93957348173870],["icu_68::CharacterIterator::CharacterIterator(icu_68::CharacterIterator const&)",93957348173936,93957348173976],["icu_68::CharacterIterator::firstPostInc()",93957348174032,93957348174069],["ucln_common_registerCleanup_68",93957348174128,93957348174192],["ucptrie_openFromBinary_68",93957348174224,93957348174826],["ucptrie_internalSmallIndex_68",93957348174848,93957348174998],["ucptrie_internalU8PrevIndex_68",93957348175200,93957348175495],["ucptrie_getRange_68",93957348175792,93957348176035],["ucurr_forLocale_68",93957348177584,93957348178543],["ucurr_getPluralName_68",93957348179536,93957348180104],["getCacheEntry(char const*, UErrorCode&)",93957348180800,93957348185405],["uprv_getStaticCurrencyName_68",93957348186096,93957348186213],["ucurr_getDefaultFractionDigitsForUsage_68",93957348186256,93957348186311],["ucurr_getRoundingIncrementForUsage_68",93957348186688,93957348186813],["deleteCacheEntry(CurrencyNameCacheEntry*)",93957348187248,93957348187429],["currencyNameComparator(void const*, void const*)",93957348189744,93957348189851],["icu_68::UDataPathIterator::next(UErrorCode*)",93957348190272,93957348190846],["setCommonICUData(UDataMemory*, signed char, UErrorCode*)",93957348190992,93957348191671],["udata_open_68",93957348192016,93957348192065],["udata_openChoice_68",93957348194400,93957348194447],["udata_cleanup()",93957348194464,93957348194827],["DataCacheElement_deleter(void*)",93957348195008,93957348195048],["doLoadFromCommonData(signed char, char const*, char const*, char const*, char const*, char const*, char const*, char const*, signed char (*)(void*, char const*, char const*, UDataInfo const*), void*, UErrorCode*, UErrorCode*)",93957348195632,93957348196516],["openCommonData(char const*, int, UErrorCode*)",93957348196608,93957348197449],["udata_checkCommonData_68",93957348197488,93957348197662],["offsetTOCEntryCount(UDataMemory const*)",93957348198048,93957348198069],["UDataMemory_init_68",93957348198448,93957348198483],["UDataMemory_createNewInstance_68",93957348198544,93957348198625],["UDataMemory_setData_68",93957348198688,93957348198723],["udata_getMemory_68",93957348198816,93957348198861],["uenum_close_68",93957348198928,93957348199000],["uenum_unextDefault_68",93957348199056,93957348199311],["uenum_next_68",93957348199360,93957348199430],["uhash_open_68",93957348199488,93957348199982],["uhash_init_68",93957348200944,93957348201335],["uhash_nextElement_68",93957348201568,93957348201640],["uhash_setKeyDeleter_68",93957348201664,93957348201678],["_uhash_rehash(UHashtable*, UErrorCode*)",93957348201696,93957348202556],["uhash_iget_68",93957348202832,93957348203108],["uhash_igeti_68",93957348203392,93957348203667],["_uhash_put(UHashtable*, UElement, UElement, signed char, UErrorCode*)",93957348203712,93957348204696],["uhash_puti_68",93957348204752,93957348204785],["uhash_remove_68",93957348204848,93957348205225],["uhash_removeElement_68",93957348205424,93957348205532],["uhash_hashUChars_68",93957348205824,93957348205862],["uhash_hashIChars_68",93957348205920,93957348205958],["uhash_compareUChars_68",93957348206512,93957348206594],["uhash_compareIChars_68",93957348206672,93957348206788],["uhash_deleteHashtable_68",93957348206816,93957348206858],["u_UCharsToChars_68",93957348207152,93957348207235],["uprv_isInvariantUString_68",93957348207344,93957348207418],["uiter_setUTF8_68",93957348207680,93957348207904],["uiter_previous32_68",93957348208000,93957348208093],["utf8IteratorGetIndex(UCharIterator*, UCharIteratorOrigin)",93957348208112,93957348209119],["utf8IteratorHasNext(UCharIterator*)",93957348210240,93957348210263],["utf8IteratorCurrent(UCharIterator*)",93957348210288,93957348210606],["utf8IteratorPrevious(UCharIterator*)",93957348211024,93957348211195],["utf8IteratorSetState(UCharIterator*, unsigned int, UErrorCode*)",93957348211232,93957348211422],["ulist_addItemEndList_68",93957348211488,93957348211670],["ulist_containsString_68",93957348211856,93957348211968],["ulist_resetList_68",93957348212144,93957348212162],["ulist_close_keyword_values_iterator_68",93957348212272,93957348212373],["ulist_next_keyword_value_68",93957348212416,93957348212491],["locale_getKeywordsStart_68",93957348212528,93957348212543],["compareKeywordStructs(void const*, void const*, void const*)",93957348213488,93957348213504],["ulocimp_getKeywordValue_68",93957348213664,93957348214593],["uloc_setKeywordValue_68",93957348214816,93957348216666],["uloc_getCurrentLanguageID_68",93957348217232,93957348217384],["ulocimp_getScript_68(char const*, char const**, UErrorCode&)",93957348217936,93957348218228],["uloc_openKeywordList_68",93957348218672,93957348218928],["uloc_getDefault_68",93957348219968,93957348219978],["uloc_getLanguage_68",93957348220208,93957348220362],["uloc_getCountry_68",93957348220640,93957348221043],["_getVariant(char const*, char, icu_68::ByteSink&, signed char)",93957348222128,93957348222460],["ulocimp_getName_68",93957348222624,93957348222639],["uloc_getBaseName_68",93957348225024,93957348225174],["ulocimp_canonicalize_68",93957348225344,93957348225362],["uloc_toUnicodeLocaleType_68",93957348225440,93957348225495],["uloc_toLegacyType_68",93957348225616,93957348225778],["uloc_kw_countKeywords(UEnumeration*, UErrorCode*)",93957348225840,93957348225909],["uloc_kw_resetKeywords(UEnumeration*, UErrorCode*)",93957348226000,93957348226017],["init()",93957348226096,93957348230240],["ulocimp_toBcpType_68",93957348230304,93957348230627],["isSpecialTypeRgKeyValue(char const*)",93957348230752,93957348230836],["uloc_key_type_cleanup()",93957348231184,93957348231565],["icu_68::CharString* icu_68::MemoryPool<icu_68::CharString, 8>::create<char const*&, UErrorCode&>(char const*&, UErrorCode&)",93957348231792,93957348232088],["LocExtKeyData* icu_68::MemoryPool<LocExtKeyData, 8>::create<>()",93957348232304,93957348232503],["ultag_isScriptSubtag_68",93957348232608,93957348232707],["ultag_isVariantSubtags_68",93957348232832,93957348233004],["ultag_isExtensionSubtags_68",93957348233200,93957348233543],["ultag_isUnicodeLocaleAttributes_68",93957348233904,93957348234247],["ultag_getTKeyStart",93957348234352,93957348234513],["_isTransformedExtensionSubtag(int&, char const*, int)",93957348234704,93957348235439],["_isUnicodeExtensionSubtag(int&, char const*, int)",93957348235616,93957348236152],["uloc_forLanguageTag_68",93957348243920,93957348244077],["icu_68::CharString* icu_68::MemoryPool<icu_68::CharString, 8>::create<char (&) [100], int&, UErrorCode&>(char (&) [100], int&, UErrorCode&)",93957348254304,93957348254586],["icu_68::CharString* icu_68::MemoryPool<icu_68::CharString, 8>::create<char*, int&, UErrorCode&>(char*&&, int&, UErrorCode&)",93957348254880,93957348255167],["uprv_mapFile_68",93957348255568,93957348255806],["uprv_max_68",93957348255872,93957348255885],["umutablecptrie_open_68",93957348255904,93957348256170],["umutablecptrie_get_68",93957348256240,93957348256318],["umutablecptrie_buildImmutable_68",93957348256608,93957348269231],["void icu_68::(anonymous namespace)::MixedBlocks::extend<unsigned int>(unsigned int const*, int, int, int)",93957348269744,93957348270058],["icu_68::umtx_init()",93957348270384,93957348270483],["umtx_unlock_68",93957348270704,93957348270732],["icu_68::umtx_initImplPostInit(icu_68::UInitOnce&)",93957348270976,93957348271032],["icu_68::UnifiedCache::getInstance(UErrorCode&)",93957348271136,93957348271611],["icu_68::UnifiedCache::handleUnreferencedObject() const",93957348271920,93957348271969],["icu_68::UnifiedCache::~UnifiedCache()",93957348272336,93957348272494],["icu_68::UnifiedCache::_putIfAbsentAndGet(icu_68::CacheKeyBase const&, icu_68::SharedObject const*&, UErrorCode&) const",93957348272528,93957348272982],["icu_68::UnifiedCache::_get(icu_68::CacheKeyBase const&, icu_68::SharedObject const*&, void const*, UErrorCode&) const",93957348273456,93957348273605],["icu_68::UnicodeSet::closeOver(int)",93957348273696,93957348275462],["(anonymous namespace)::_set_addRange(USet*, int, int)",93957348275488,93957348275498],["icu_68::RuleCharacterIterator::RuleCharacterIterator(icu_68::UnicodeString const&, icu_68::SymbolTable const*, icu_68::ParsePosition&)",93957348275616,93957348275648],["icu_68::RuleCharacterIterator::next(int, signed char&, UErrorCode&)",93957348275712,93957348276539],["icu_68::RuleCharacterIterator::jumpahead(int)",93957348276640,93957348276741],["icu_68::RuleCharacterIterator::setPos(icu_68::RuleCharacterIterator::Pos const&)",93957348276784,93957348276813],["icu_68::UnicodeSet::getDynamicClassID() const",93957348277072,93957348277085],["icu_68::UnicodeSet::stringsSize() const",93957348277120,93957348277142],["icu_68::UnicodeSet::UnicodeSet(int, int)",93957348277248,93957348277345],["icu_68::UnicodeSet::UnicodeSet(icu_68::UnicodeSet const&)",93957348277680,93957348277772],["icu_68::UnicodeSet::UnicodeSet(icu_68::UnicodeSet const&, signed char)",93957348277792,93957348278286],["icu_68::UnicodeSet::allocateStrings(UErrorCode&)",93957348278560,93957348278690],["icu_68::UnicodeSet::setToBogus()",93957348278768,93957348278862],["icu_68::UnicodeSet::~UnicodeSet()",93957348278992,93957348279151],["icu_68::UnicodeSet::~UnicodeSet()",93957348279168,93957348279196],["icu_68::UnicodeSet::copyFrom(icu_68::UnicodeSet const&, signed char)",93957348279248,93957348279742],["icu_68::UnicodeSet::cloneAsThawed() const",93957348279888,93957348279941],["icu_68::UnicodeSet::hashCode() const",93957348280080,93957348280212],["icu_68::UnicodeSet::getRangeCount() const",93957348280368,93957348280386],["icu_68::UnicodeSet::getRangeStart(int) const",93957348280432,93957348280450],["icu_68::UnicodeSet::contains(int) const",93957348280512,93957348280643],["icu_68::UnicodeSet::contains(icu_68::UnicodeString const&) const",93957348280752,93957348281027],["icu_68::UnicodeSet::span(char16_t const*, int, USetSpanCondition) const",93957348281248,93957348281853],["icu_68::UnicodeSet::matchesIndexValue(unsigned char) const",93957348281968,93957348282149],["icu_68::UnicodeSet::matches(icu_68::Replaceable const&, int&, int, signed char)",93957348282176,93957348282862],["non-virtual thunk to icu_68::UnicodeSet::matches(icu_68::Replaceable const&, int&, int, signed char)",93957348283248,93957348283262],["icu_68::UnicodeSet::addAll(icu_68::UnicodeSet const&)",93957348283296,93957348283430],["icu_68::UnicodeSet::set(int, int)",93957348283472,93957348283765],["icu_68::UnicodeSet::complement(int, int)",93957348283888,93957348284065],["icu_68::UnicodeSet::add(int)",93957348284864,93957348285578],["icu_68::UnicodeSet::_add(icu_68::UnicodeString const&)",93957348285824,93957348286234],["icu_68::UnicodeSet::retainAll(icu_68::UnicodeSet const&)",93957348286368,93957348286469],["icu_68::UnicodeSet::removeAll(icu_68::UnicodeSet const&)",93957348286640,93957348286737],["icu_68::UnicodeSet::retain(int, int)",93957348286848,93957348287052],["icu_68::UnicodeSet::remove(int, int)",93957348287664,93957348287787],["icu_68::UnicodeSet::exclusiveOr(int const*, int, signed char)",93957348287920,93957348288303],["icu_68::UnicodeSet::compact()",93957348288480,93957348288693],["icu_68::UnicodeSet::ensureBufferCapacity(int)",93957348289344,93957348289569],["icu_68::UnicodeSet::_appendToPat(icu_68::UnicodeString&, int, signed char)",93957348289744,93957348289880],["icu_68::UnicodeSet::_generatePattern(icu_68::UnicodeString&, signed char) const",93957348290272,93957348290964],["non-virtual thunk to icu_68::UnicodeSet::toPattern(icu_68::UnicodeString&, signed char) const",93957348291072,93957348291170],["icu_68::UnicodeSet::spanBack(char16_t const*, int, USetSpanCondition) const",93957348291488,93957348292093],["icu_68::UnicodeSet::spanBackUTF8(char const*, int, USetSpanCondition) const",93957348292912,93957348293485],["icu_68::UnicodeFilter::matches(icu_68::Replaceable const&, int&, int, signed char)",93957348293520,93957348293721],["icu_68::BMPSet::findCodePoint(int, int, int) const",93957348295104,93957348295176],["icu_68::BMPSet::BMPSet(icu_68::BMPSet const&, int const*, int)",93957348295856,93957348296049],["icu_68::BMPSet::contains(int) const",93957348297232,93957348297499],["icu_68::BMPSet::spanBack(char16_t const*, char16_t const*, USetSpanCondition) const",93957348298576,93957348299620],["icu_68::BMPSet::spanBackUTF8(unsigned char const*, int, USetSpanCondition) const",93957348300528,93957348301027],["icu_68::UnicodeSet::applyPattern(icu_68::UnicodeString const&, UErrorCode&)",93957348301280,93957348301432],["icu_68::UnicodeSet::applyPattern(icu_68::RuleCharacterIterator&, icu_68::SymbolTable const*, icu_68::UnicodeString&, unsigned int, icu_68::UnicodeSet& (icu_68::UnicodeSet::*)(int), int, UErrorCode&)",93957348301792,93957348304783],["icu_68::UnicodeSet::applyPropertyPattern(icu_68::RuleCharacterIterator&, icu_68::UnicodeString&, UErrorCode&)",93957348305008,93957348305268],["icu_68::UnicodeSet::applyIntPropertyValue(UProperty, int, UErrorCode&)",93957348305568,93957348306097],["icu_68::(anonymous namespace)::intPropertyFilter(int, void*)",93957348306144,93957348306173],["icu_68::(anonymous namespace)::numericValueFilter(int, void*)",93957348307760,93957348307794],["icu_68::(anonymous namespace)::versionFilter(int, void*)",93957348307920,93957348307989],["icu_68::CharacterProperties::getInclusionsForProperty(UProperty, UErrorCode&)",93957348309216,93957348309725],["u_getBinaryPropertySet_68",93957348310352,93957348310787],["ubidi_addPropertyStarts_68",93957348311008,93957348311288],["ubidi_isMirrored_68",93957348311360,93957348311491],["ubidi_isJoinControl_68",93957348311648,93957348311779],["ubidi_getJoiningGroup_68",93957348311936,93957348311997],["u_charDirection_68",93957348312144,93957348312273],["icu_68::getExtName(unsigned int, char*, unsigned short)",93957348312480,93957348312894],["icu_68::getCharCat(int)",93957348315168,93957348315268],["icu_68::isAcceptable(void*, char const*, char const*, UDataInfo const*)",93957348317040,93957348317099],["icu_68::expandName(icu_68::UCharNames*, unsigned char const*, unsigned short, UCharNameChoice, char*, unsigned short)",93957348317184,93957348317749],["icu_68::UnicodeSetStringSpan::UnicodeSetStringSpan(icu_68::UnicodeSet const&, icu_68::UVector const&, unsigned int)",93957348319008,93957348321060],["icu_68::UnicodeSetStringSpan::~UnicodeSetStringSpan()",93957348321392,93957348321489],["icu_68::UnicodeSetStringSpan::spanNot(char16_t const*, int) const",93957348323568,93957348324110],["icu_68::UnicodeSetStringSpan::spanNotBack(char16_t const*, int) const",93957348326192,93957348326746],["icu_68::UnicodeSetStringSpan::spanNotUTF8(unsigned char const*, int) const",93957348328224,93957348328538],["icu_68::UnicodeSetStringSpan::spanBackUTF8(unsigned char const*, int, USetSpanCondition) const",93957348328848,93957348330576],["icu_68::UnicodeString::doCaseCompare(int, int, char16_t const*, int, int, unsigned int) const",93957348330944,93957348331154],["icu_68::UnicodeString::foldCase(unsigned int)",93957348332784,93957348332810],["uhash_compareCaselessUnicodeString_68",93957348332960,93957348333112],["icu_68::UnicodeString::toUpper()",93957348333184,93957348333227],["icu_68::UnicodeString::getDynamicClassID() const",93957348333296,93957348333309],["icu_68::UnicodeString::refCount() const",93957348333760,93957348333773],["icu_68::UnicodeString::UnicodeString(char16_t)",93957348334912,93957348334938],["icu_68::UnicodeString::UnicodeString(char16_t const*)",93957348335040,93957348335073],["icu_68::UnicodeString::UnicodeString(char16_t const*, int)",93957348335808,93957348335838],["icu_68::UnicodeString::setToBogus()",93957348336032,93957348336099],["icu_68::UnicodeString::UnicodeString(char const*, int, icu_68::UnicodeString::EInvariant)",93957348336288,93957348336511],["icu_68::UnicodeString::UnicodeString(char const*)",93957348337472,93957348337536],["icu_68::UnicodeString::UnicodeString(icu_68::UnicodeString const&)",93957348337968,93957348337996],["icu_68::UnicodeString::UnicodeString(icu_68::UnicodeString&&)",93957348338512,93957348338624],["icu_68::UnicodeString::UnicodeString(icu_68::UnicodeString const&, int, int)",93957348338768,93957348338876],["icu_68::UnicodeString::~UnicodeString()",93957348338960,93957348339023],["icu_68::UnicodeString::fromUTF8(icu_68::StringPiece)",93957348339104,93957348339166],["icu_68::UnicodeString::releaseBuffer(int)",93957348339264,93957348339432],["icu_68::UnicodeString::fastCopyFrom(icu_68::UnicodeString const&)",93957348339456,93957348339471],["icu_68::UnicodeString::unescapeAt(int&) const",93957348339632,93957348339669],["UnicodeString_charAt(int, void*)",93957348339792,93957348339847],["icu_68::UnicodeString::doCompare(int, int, char16_t const*, int, int) const",93957348339920,93957348340143],["icu_68::UnicodeString::getCharAt(int) const",93957348340176,93957348340231],["icu_68::UnicodeString::getChar32Start(int) const",93957348340400,93957348340500],["icu_68::UnicodeString::moveIndex32(int, int) const",93957348340608,93957348340890],["icu_68::UnicodeString::extract(icu_68::Char16Ptr, int, UErrorCode&) const",93957348341024,93957348341187],["icu_68::UnicodeString::tempSubString(int, int) const",93957348341360,93957348341571],["icu_68::UnicodeString::toUTF8(icu_68::ByteSink&) const",93957348341776,93957348342254],["icu_68::UnicodeString::doIndexOf(char16_t, int, int) const",93957348342448,93957348342566],["icu_68::UnicodeString::doLastIndexOf(char16_t, int, int) const",93957348342768,93957348342901],["icu_68::UnicodeString::unBogus()",93957348343600,93957348343618],["icu_68::UnicodeString::setTo(signed char, icu_68::ConstChar16Ptr, int)",93957348343856,93957348344131],["icu_68::UnicodeString::replace(int, int, int)",93957348344288,93957348344388],["icu_68::UnicodeString::doReplace(int, int, icu_68::UnicodeString const&, int, int)",93957348345632,93957348345725],["icu_68::UnicodeString::handleReplaceBetween(int, int, icu_68::UnicodeString const&)",93957348345840,93957348345913],["icu_68::UnicodeString::doReverse(int, int)",93957348346208,93957348346590],["icu_68::UnicodeStringAppendable::appendCodeUnit(char16_t)",93957348346656,93957348346701],["icu_68::UnicodeStringAppendable::appendString(char16_t const*, int)",93957348346816,93957348346842],["icu_68::UnicodeStringAppendable::getAppendBuffer(int, int, char16_t*, int, int*)",93957348346912,93957348347096],["uhash_compareUnicodeString_68",93957348347184,93957348347331],["icu_68::UnicodeString::toTitle(icu_68::BreakIterator*, icu_68::Locale const&, unsigned int)",93957348347776,93957348347932],["icu_68::UMemory::operator new[](unsigned long)",93957348347952,93957348347962],["u_getIntPropertyValue_68",93957348348016,93957348348127],["uprops_addPropertyStarts_68",93957348348320,93957348348515],["defaultContains(BinaryProperty const&, int, UProperty)",93957348348928,93957348348961],["isMirrored(BinaryProperty const&, int, UProperty)",93957348348992,93957348349004],["isJoinControl(BinaryProperty const&, int, UProperty)",93957348349184,93957348349196],["isNormInert(BinaryProperty const&, int, UProperty)",93957348349216,93957348349279],["isPOSIX_alnum(BinaryProperty const&, int, UProperty)",93957348349376,93957348349388],["isPOSIX_graph(BinaryProperty const&, int, UProperty)",93957348349408,93957348349420],["isPOSIX_xdigit(BinaryProperty const&, int, UProperty)",93957348349440,93957348349452],["changesWhenNFKC_Casefolded(BinaryProperty const&, int, UProperty)",93957348350016,93957348350555],["getBiDiClass(IntProperty const&, int, UProperty)",93957348350592,93957348350604],["defaultGetValue(IntProperty const&, int, UProperty)",93957348350624,93957348350659],["getCombiningClass(IntProperty const&, int, UProperty)",93957348350704,93957348350720],["getJoiningGroup(IntProperty const&, int, UProperty)",93957348350736,93957348350748],["getNumericType(IntProperty const&, int, UProperty)",93957348350768,93957348350817],["scriptGetMaxValue(IntProperty const&, UProperty)",93957348350864,93957348350890],["getNormQuickCheck(IntProperty const&, int, UProperty)",93957348350944,93957348350962],["getTrailCombiningClass(IntProperty const&, int, UProperty)",93957348351008,93957348351024],["getInPC(IntProperty const&, int, UProperty)",93957348351040,93957348351098],["getInSC(IntProperty const&, int, UProperty)",93957348351200,93957348351258],["(anonymous namespace)::ulayout_isAcceptable(void*, char const*, char const*, UDataInfo const*)",93957348351328,93957348351387],["ures_initStackObject_68",93957348351536,93957348351615],["ures_close_68",93957348351632,93957348351807],["ures_appendResPath(UResourceBundle*, char const*, int, UErrorCode*)",93957348352304,93957348352495],["ures_getBinary_68",93957348352704,93957348352904],["ures_getInt_68",93957348353120,93957348353286],["ures_getKey_68",93957348353328,93957348353345],["ures_resetIterator_68",93957348353392,93957348353413],["ures_getNextString_68",93957348353456,93957348353806],["ures_getNextResource_68",93957348354128,93957348354436],["ures_getByIndex_68",93957348357520,93957348357810],["ures_open_68",93957348358192,93957348358215],["ures_getByKeyWithFallback_68",93957348358640,93957348359916],["ures_getAllItemsWithFallback_68",93957348360160,93957348360533],["ures_getByKey_68",93957348361328,93957348361617],["ures_getStringByKey_68",93957348362016,93957348362522],["ures_getLocaleByType_68",93957348362576,93957348362629],["ures_openNoDefault_68",93957348364912,93957348364938],["ures_openAvailableLocales_68",93957348364976,93957348365241],["entryClose(UResourceDataEntry*)",93957348368080,93957348368146],["init_entry(char const*, char const*, UErrorCode*)",93957348368448,93957348369315],["insertRootBundle(UResourceDataEntry*&, UErrorCode*)",93957348369648,93957348369738],["compareEntries(UElement, UElement)",93957348369792,93957348369853],["free_entry(UResourceDataEntry*)",93957348370208,93957348370318],["ures_loc_closeLocales(UEnumeration*)",93957348370384,93957348370438],["ures_loc_nextLocale(UEnumeration*, int*, UErrorCode*)",93957348370480,93957348370571],["isAcceptable(void*, char const*, char const*, UDataInfo const*)",93957348370608,93957348370683],["res_load_68",93957348371072,93957348371195],["res_getPublicType_68",93957348371248,93957348371271],["res_getAlias_68",93957348371520,93957348371591],["res_getIntVectorNoTrace_68",93957348371680,93957348371751],["icu_68::ResourceDataValue::~ResourceDataValue()",93957348371856,93957348371898],["endrpcent",139871564469328,139871564469550],["svcunixfd_create",139871564476736,139871564476741],["authunix_create",139871564479920,139871564480369],["clnt_create",139871564480752,139871564481310],["ufromfpx",139871565472080,139871565472765],["casinh",139871565476128,139871565476497],["cexp",139871565485824,139871565486780],["cpow",139871565489728,139871565489845],["nextdown",139871565491072,139871565491110],["fmin",139871565491184,139871565491245],["__iseqsig",139871565491264,139871565491325],["significand",139871565491392,139871565491432],["v8::PerIsolateData::RemoveUnhandledPromise(v8::Local<v8::Promise>)",93957335242768,93957335243284],["v8::Shell::PerformanceNow(v8::FunctionCallbackInfo<v8::Value> const&)",93957335245504,93957335245575],["v8::Shell::RealmOwner(v8::FunctionCallbackInfo<v8::Value> const&)",93957335246048,93957335246531],["v8::Shell::CreateRealm(v8::FunctionCallbackInfo<v8::Value> const&, int, v8::MaybeLocal<v8::Value>)",93957335246656,93957335247392],["v8::internal::Protectors::InvalidateStringLengthOverflowLookupChain(v8::internal::Isolate*)",93957336707088,93957336707161],["v8::internal::StackGuard::SetStackLimit(unsigned long)",93957336711056,93957336711143],["v8::internal::StackGuard::HasTerminationRequest()",93957336712048,93957336712140],["v8::internal::ThreadLocalTop::Clear()",93957336715232,93957336715324],["v8::Locker::IsActive()",93957336715520,93957336715537],["v8::internal::ThreadManager::ThreadManager(v8::internal::Isolate*)",93957336715584,93957336715707],["v8::internal::ThreadManager::Iterate(v8::internal::RootVisitor*)",93957336715920,93957336716055],["v8::internal::CpuTraceMarkExtension::GetNativeFunctionTemplate(v8::Isolate*, v8::Local<v8::String>)",93957336716176,93957336716218],["v8::internal::SamplingEventsProcessor::~SamplingEventsProcessor()",93957339608416,93957339608501],["v8::internal::CpuProfiler::StartProfiling(char const*, v8::CpuProfilingOptions, std::__1::unique_ptr<v8::DiscardedSamplesDelegate, std::__1::default_delete<v8::DiscardedSamplesDelegate> >)",93957339614832,93957339615227],["std::__1::__deque_base<v8::internal::CpuProfile::SampleInfo, std::__1::allocator<v8::internal::CpuProfile::SampleInfo> >::~__deque_base()",93957339618224,93957339618431],["v8::internal::HeapProfiler::GetDetachedness(v8::Local<v8::Value>, unsigned short)",93957339619472,93957339619525],["v8::internal::HeapProfiler::PushHeapObjectsStats(v8::OutputStream*, long*)",93957339620592,93957339620606],["v8::internal::HeapProfiler::GetSnapshotObjectId(v8::internal::Handle<v8::internal::Object>)",93957339620848,93957339620879],["v8::internal::HeapProfiler::FindHeapObjectById(unsigned int)",93957339621040,93957339621282],["std::__1::__deque_base<v8::internal::HeapEntry, std::__1::allocator<v8::internal::HeapEntry> >::~__deque_base()",93957339622880,93957339623087],["void std::__1::vector<std::__1::unique_ptr<v8::internal::HeapSnapshot, std::__1::default_delete<v8::internal::HeapSnapshot> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::HeapSnapshot, std::__1::default_delete<v8::internal::HeapSnapshot> > > >::__emplace_back_slow_path<v8::internal::HeapSnapshot*&>(v8::internal::HeapSnapshot*&)",93957339623520,93957339624285],["v8::internal::HeapEntry::SetNamedAutoIndexReference(v8::internal::HeapGraphEdge::Type, char const*, v8::internal::HeapEntry*, v8::internal::StringsStorage*)",93957339624432,93957339624710],["v8::internal::HeapSnapshot::Delete()",93957339624928,93957339624944],["v8::internal::HeapSnapshot::AddGcSubrootEntry(v8::internal::Root, unsigned int)",93957339625904,93957339626221],["v8::internal::HeapObjectsMap::HeapObjectsMap(v8::internal::Heap*)",93957339626704,93957339626957],["v8::internal::HeapObjectsMap::UpdateObjectSize(unsigned long, int)",93957339628192,93957339628204],["v8::internal::HeapObjectsMap::FindEntry(unsigned long)",93957339628816,93957339629008],["v8::internal::HeapObjectsMap::UpdateHeapObjectsMap()",93957339629024,93957339629400],["v8_inspector::String16::String16(std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >&&)",93957342394896,93957342395494],["v8_inspector::String16Builder::appendNumber(int)",93957342402496,93957342402605],["v8_inspector::String16::fromUTF16LE(unsigned short const*, unsigned long)",93957342406784,93957342406938],["v8_inspector::toV8StringInternalized(v8::Isolate*, char const*)",93957342408368,93957342408414],["v8_inspector::toProtocolStringWithTypeCheck(v8::Isolate*, v8::Local<v8::Value>)",93957342408704,93957342408785],["v8_inspector::toStringView(v8_inspector::String16 const&)",93957342408880,93957342408941],["v8_inspector::StringBufferFrom(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >)",93957342409088,93957342409196],["v8_crdtp::ProtocolTypeTraits<v8_inspector::String16, void>::Deserialize(v8_crdtp::DeserializerState*, v8_inspector::String16*)",93957342409296,93957342409466],["v8::internal::compiler::SourceTextModuleRef::GetCell(int) const",93957344083712,93957344084169],["v8::internal::compiler::KeyedAccessMode::IsLoad() const",93957344104624,93957344104645],["v8::internal::compiler::JSHeapBroker::GetFeedbackForForIn(v8::internal::compiler::FeedbackSource const&)",93957344117216,93957344117320],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::ObjectRef const&)",93957344119712,93957344119981],["v8::internal::compiler::CodeRef::GetInlinedBytecodeSize() const",93957344123696,93957344123902],["std::__1::__tree_iterator<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, void*>*, long> std::__1::__tree<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, std::__1::__map_value_compare<v8::internal::compiler::JSHeapBroker::SerializedFunction, std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, std::__1::less<v8::internal::compiler::JSHeapBroker::SerializedFunction>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> > > >::__emplace_multi<std::__1::pair<v8::internal::compiler::JSHeapBroker::SerializedFunction const, v8::internal::ZoneVector<v8::internal::compiler::Hints> > >(std::__1::pair<v8::internal::compiler::JSHeapBroker::SerializedFunction const, v8::internal::ZoneVector<v8::internal::compiler::Hints> >&&)",93957344127680,93957344127978],["std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, std::__1::__unordered_map_hasher<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, v8::internal::compiler::FeedbackSource::Hash, v8::internal::compiler::FeedbackSource::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, v8::internal::compiler::FeedbackSource::Equal, v8::internal::compiler::FeedbackSource::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo> > >::find<v8::internal::compiler::FeedbackSource>(v8::internal::compiler::FeedbackSource const&)",93957344133888,93957344134349],["v8::internal::compiler::(anonymous namespace)::CanConsiderForInlining(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::FeedbackVectorRef const&)",93957344140688,93957344142419],["v8::internal::compiler::JSInliningHeuristic::DuplicateStateValuesAndRename(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::JSInliningHeuristic::StateCloneMode)",93957344149760,93957344150296],["v8::internal::compiler::MachineGraph::Dead()",93957344152864,93957344152933],["v8::internal::compiler::JSInliningHeuristic::reducer_name() const",93957344153888,93957344153901],["v8::internal::compiler::JSInliner::InlineCall(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::StartNode, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::ZoneVector<v8::internal::compiler::Node*> const&, int)",93957344154768,93957344162063],["v8::internal::compiler::JSInliner::DetermineCallTarget(v8::internal::compiler::Node*)",93957344164512,93957344165160],["v8::internal::compiler::JSCallAccessor::receiver() const",93957344173632,93957344173702],["v8::internal::compiler::JSIntrinsicLowering::ReduceCopyDataProperties(v8::internal::compiler::Node*)",93957344174608,93957344174791],["v8::internal::compiler::JSIntrinsicLowering::ReduceCreateJSGeneratorObject(v8::internal::compiler::Node*)",93957344176192,93957344176720],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncFunctionEnter(v8::internal::compiler::Node*)",93957344177104,93957344177150],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncFunctionResolve(v8::internal::compiler::Node*)",93957344177232,93957344177299],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncGeneratorAwaitUncaught(v8::internal::compiler::Node*)",93957344177504,93957344177687],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncGeneratorResolve(v8::internal::compiler::Node*)",93957344177888,93957344178071],["v8::internal::compiler::JSIntrinsicLowering::ReduceGeneratorGetResumeMode(v8::internal::compiler::Node*)",93957344178272,93957344178685],["v8::internal::compiler::JSIntrinsicLowering::ReduceIsJSReceiver(v8::internal::compiler::Node*)",93957344179760,93957344179849],["v8::internal::compiler::JSIntrinsicLowering::ReduceToLength(v8::internal::compiler::Node*)",93957344179952,93957344179998],["v8::internal::compiler::JSIntrinsicLowering::ReduceToString(v8::internal::compiler::Node*)",93957344180048,93957344180427],["v8::internal::compiler::JSIntrinsicLowering::ReduceIncBlockCounter(v8::internal::compiler::Node*)",93957344180624,93957344180804],["v8::internal::compiler::JSIntrinsicLowering::Change(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957344180864,93957344181416],["v8::internal::compiler::JSIntrinsicLowering::reducer_name() const",93957344181872,93957344181885],["v8::internal::compiler::JSNativeContextSpecialization::Reduce(v8::internal::compiler::Node*)",93957344182112,93957344182300],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSAsyncFunctionEnter(v8::internal::compiler::Node*)",93957344183136,93957344183999],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSAsyncFunctionResolve(v8::internal::compiler::Node*)",93957344184896,93957344185761],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSInstanceOf(v8::internal::compiler::Node*)",93957344186816,93957344189978],["v8::internal::compiler::JSNativeContextSpecialization::ReduceJSOrdinaryHasInstance(v8::internal::compiler::Node*)",93957344190496,93957344192291],["std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, long long) const",93957346692256,93957346692868],["std::__1::__num_put<char>::__widen_and_group_float(char*, char*, char*, char*, char*&, char*&, std::__1::locale const&)",93957346695680,93957346697075],["std::__1::num_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, unsigned long) const",93957346702496,93957346703128],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, tm*, char const*, char const*) const",93957346708592,93957346709851],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get_monthname(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346710416,93957346710814],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__get_percent(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >&, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, unsigned int&, std::__1::ctype<char> const&) const",93957346713184,93957346713508],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get_date(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346715456,93957346715565],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get_year(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346716384,93957346716705],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::__get_white_space(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >&, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, unsigned int&, std::__1::ctype<wchar_t> const&) const",93957346718384,93957346718768],["int std::__1::__get_up_to_n_digits<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >&, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, unsigned int&, std::__1::ctype<wchar_t> const&, int)",93957346719120,93957346719789],["std::__1::time_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, tm const*, char, char) const",93957346720064,93957346720274],["std::__1::moneypunct<char, false>::do_decimal_point() const",93957346720592,93957346720600],["std::__1::moneypunct<char, false>::do_negative_sign() const",93957346720640,93957346720658],["std::__1::moneypunct<wchar_t, false>::do_negative_sign() const",93957346720688,93957346720733],["std::__1::money_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__do_get(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >&, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, bool, std::__1::locale const&, unsigned int, unsigned int&, bool&, std::__1::ctype<char> const&, std::__1::unique_ptr<char, void (*)(void*)>&, char*&, char*)",93957346722080,93957346727099],["v8::platform::NotifyIsolateShutdown(v8::Platform*, v8::Isolate*)",93957346916160,93957346916170],["v8::platform::DefaultPlatform::DefaultPlatform(int, v8::platform::IdleTaskSupport, std::__1::unique_ptr<v8::TracingController, std::__1::default_delete<v8::TracingController> >)",93957346916448,93957346916772],["v8::platform::DefaultPlatform::~DefaultPlatform()",93957346917088,93957346917116],["v8::platform::DefaultPlatform::GetForegroundTaskRunner(v8::Isolate*)",93957346917152,93957346917788],["v8::platform::DefaultPlatform::CallDelayedOnWorkerThread(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, double)",93957346917824,93957346917842],["v8::platform::DefaultPlatform::PostJob(v8::TaskPriority, std::__1::unique_ptr<v8::JobTask, std::__1::default_delete<v8::JobTask> >)",93957346917872,93957346917942],["v8::platform::DefaultPlatform::CurrentClockTimeMillis()",93957346918000,93957346918010],["v8::platform::DefaultPlatform::GetStackTracePrinter()",93957346918032,93957346918045],["v8::platform::DefaultPlatform::GetPageAllocator()",93957346918112,93957346918122],["std::__1::__shared_ptr_emplace<v8::platform::DefaultForegroundTaskRunner, std::__1::allocator<v8::platform::DefaultForegroundTaskRunner> >::~__shared_ptr_emplace()",93957346918224,93957346918244],["std::__1::__shared_ptr_emplace<v8::platform::DefaultForegroundTaskRunner, std::__1::allocator<v8::platform::DefaultForegroundTaskRunner> >::__on_zero_shared()",93957346918304,93957346918320],["v8::base::debug::(anonymous namespace)::StackDumpSignalHandler(int, siginfo_t*, void*)",93957346918736,93957346919820],["v8::base::debug::StackTrace::StackTrace()",93957346919840,93957346919875],["v8::base::debug::(anonymous namespace)::ProcessBacktrace(void* const*, unsigned long, v8::base::debug::(anonymous namespace)::BacktraceOutputHandler*)",93957346919936,93957346921268],["v8::platform::DefaultJobState::JobDelegate::GetTaskId()",93957346921328,93957346921407],["v8::platform::DefaultJobState::~DefaultJobState()",93957346921536,93957346921619],["v8::platform::DefaultJobState::NotifyConcurrencyIncrease()",93957346921728,93957346922178],["v8::platform::DefaultJobState::DidRunTask()",93957346922704,93957346923172],["v8::platform::DefaultJobHandle::~DefaultJobHandle()",93957346923216,93957346923289],["v8::platform::DefaultJobHandle::Join()",93957346923376,93957346923464],["v8::platform::DefaultJobHandle::CancelAndDetach()",93957346923648,93957346923735],["v8::platform::DefaultJobHandle::UpdatePriority(v8::TaskPriority)",93957346923824,93957346923875],["v8::platform::DefaultJobState::JobDelegate::NotifyConcurrencyIncrease()",93957346923904,93957346923918],["UDataMemory_isLoaded_68",93957346923936,93957346923950],["v8::platform::DefaultJobWorker::~DefaultJobWorker()",93957346923968,93957346923999],["v8::platform::DefaultJobWorker::Run()",93957346924048,93957346924377],["v8::platform::DefaultForegroundTaskRunner::RunTaskScope::~RunTaskScope()",93957346924480,93957346924550],["v8::platform::DefaultForegroundTaskRunner::Terminate()",93957346924704,93957346925177],["v8::platform::DefaultForegroundTaskRunner::PostTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957346925712,93957346925932],["v8::platform::DefaultForegroundTaskRunner::PostDelayedTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, double)",93957346926432,93957346926501],["v8::platform::DefaultForegroundTaskRunner::PostIdleTask(std::__1::unique_ptr<v8::IdleTask, std::__1::default_delete<v8::IdleTask> >)",93957346926592,93957346926863],["v8::platform::DefaultForegroundTaskRunner::PostNonNestableTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957346926880,93957346927100],["v8::platform::DefaultForegroundTaskRunner::PopTaskFromQueue(v8::platform::MessageLoopBehavior)",93957346927520,93957346928216],["v8::platform::DefaultForegroundTaskRunner::PopTaskFromIdleQueue()",93957346929136,93957346929370],["v8::platform::DefaultForegroundTaskRunner::~DefaultForegroundTaskRunner()",93957346929760,93957346929788],["void std::__1::vector<v8::platform::DefaultForegroundTaskRunner::DelayedEntry, std::__1::allocator<v8::platform::DefaultForegroundTaskRunner::DelayedEntry> >::__push_back_slow_path<v8::platform::DefaultForegroundTaskRunner::DelayedEntry>(v8::platform::DefaultForegroundTaskRunner::DelayedEntry&&)",93957346930064,93957346930456],["std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l> std::__1::move<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l>(std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l>, std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l>, std::__1::__deque_iterator<std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >*, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >&, std::__1::pair<v8::platform::DefaultForegroundTaskRunner::Nestability, std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > >**, long, 0l>)",93957346930800,93957346931458],["v8::platform::DefaultWorkerThreadsTaskRunner::DefaultWorkerThreadsTaskRunner(unsigned int, double (*)())",93957346931984,93957346932372],["v8::platform::DefaultWorkerThreadsTaskRunner::~DefaultWorkerThreadsTaskRunner()",93957346932544,93957346932697],["v8::platform::DefaultWorkerThreadsTaskRunner::PostTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957346932848,93957346932958],["v8::platform::DefaultWorkerThreadsTaskRunner::WorkerThread::~WorkerThread()",93957346933088,93957346933126],["v8::platform::DefaultWorkerThreadsTaskRunner::WorkerThread::Run()",93957346933184,93957346933260],["v8::platform::DelayedTaskQueue::~DelayedTaskQueue()",93957346933360,93957346933551],["v8::platform::DelayedTaskQueue::AppendDelayed(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, double)",93957346933728,93957346933964],["v8::platform::DelayedTaskQueue::Terminate()",93957346934944,93957346934993],["v8::platform::tracing::TraceBufferRingBuffer::AddTraceEvent(unsigned long*)",93957346935088,93957346935391],["v8::platform::tracing::TraceBufferRingBuffer::Flush()",93957346935552,93957346935750],["v8::platform::tracing::TraceBuffer::CreateTraceBufferRingBuffer(unsigned long, v8::platform::tracing::TraceWriter*)",93957346937568,93957346937684],["v8::platform::tracing::TraceBufferRingBuffer::~TraceBufferRingBuffer()",93957346937856,93957346938011],["v8::platform::tracing::TraceBufferChunk::~TraceBufferChunk()",93957346938880,93957346939665],["v8::platform::tracing::TraceConfig::IsCategoryGroupEnabled(char const*) const",93957346939776,93957346941157],["v8::platform::tracing::TraceObject::Initialize(char, unsigned char const*, char const*, char const*, unsigned long, unsigned long, int, char const**, unsigned char const*, unsigned long const*, std::__1::unique_ptr<v8::ConvertableToTraceFormat, std::__1::default_delete<v8::ConvertableToTraceFormat> >*, unsigned int, long, long)",93957346941408,93957346942261],["v8::platform::tracing::TraceObject::UpdateDuration(long, long)",93957346942368,93957346942402],["v8::platform::tracing::JSONTraceWriter::~JSONTraceWriter()",93957346943696,93957346943732],["v8::platform::tracing::JSONTraceWriter::AppendTraceEvent(v8::platform::tracing::TraceObject*)",93957346943808,93957346945138],["v8::platform::tracing::TracingController::TracingController()",93957346945312,93957346945440],["v8::platform::tracing::TracingController::StopTracing()",93957346945792,93957346946217],["v8::platform::tracing::TracingController::Initialize(v8::platform::tracing::TraceBuffer*)",93957346946256,93957346946285],["v8::platform::tracing::TracingController::AddTraceEvent(char, unsigned char const*, char const*, char const*, unsigned long, unsigned long, int, char const**, unsigned char const*, unsigned long const*, std::__1::unique_ptr<v8::ConvertableToTraceFormat, std::__1::default_delete<v8::ConvertableToTraceFormat> >*, unsigned int)",93957346946304,93957346946433],["v8::platform::tracing::TracingController::UpdateTraceEventDuration(unsigned char const*, char const*, unsigned long)",93957346946640,93957346946727],["v8::platform::tracing::TracingController::StartTracing(v8::platform::tracing::TraceConfig*)",93957346946768,93957346947273],["v8::platform::tracing::TracingController::AddTraceStateObserver(v8::TracingController::TraceStateObserver*)",93957346947648,93957346947729],["void std::__1::__hash_table<v8::TracingController::TraceStateObserver*, std::__1::hash<v8::TracingController::TraceStateObserver*>, std::__1::equal_to<v8::TracingController::TraceStateObserver*>, std::__1::allocator<v8::TracingController::TraceStateObserver*> >::__assign_multi<std::__1::__hash_const_iterator<std::__1::__hash_node<v8::TracingController::TraceStateObserver*, void*>*> >(std::__1::__hash_const_iterator<std::__1::__hash_node<v8::TracingController::TraceStateObserver*, void*>*>, std::__1::__hash_const_iterator<std::__1::__hash_node<v8::TracingController::TraceStateObserver*, void*>*>)",93957346947888,93957346948268],["icu_68::SharedCalendar::~SharedCalendar()",93957346948320,93957346948376],["icu_68::Calendar::makeInstance(icu_68::Locale const&, UErrorCode&)",93957346948512,93957346949523],["icu_68::BasicCalendarFactory::~BasicCalendarFactory()",93957346949552,93957346949580],["icu_68::ICUCollatorFactory::~ICUCollatorFactory()",93957346949600,93957346949628],["icu_68::CalendarService::~CalendarService()",93957346949648,93957346949676],["icu_68::Calendar::Calendar(UErrorCode&)",93957346949952,93957346950182],["icu_68::Calendar::setWeekData(icu_68::Locale const&, char const*, UErrorCode&)",93957346950288,93957346951649],["icu_68::Calendar::Calendar(icu_68::TimeZone const&, icu_68::Locale const&, UErrorCode&)",93957346951872,93957346952111],["icu_68::Calendar::Calendar(icu_68::Calendar const&)",93957346952176,93957346952207],["icu_68::Calendar::createInstance(icu_68::TimeZone*, icu_68::Locale const&, UErrorCode&)",93957346952672,93957346953236],["icu_68::createStandardCalendar(ECalType, icu_68::Locale const&, UErrorCode&)",93957346953296,93957346954153],["icu_68::Calendar::adoptTimeZone(icu_68::TimeZone*)",93957346954832,93957346954884],["icu_68::Calendar::getNow()",93957346955088,93957346955098],["icu_68::Calendar::getCalendarTypeFromLocale(icu_68::Locale const&, char*, int, UErrorCode&)",93957346955168,93957346955460],["icu_68::Calendar::getTimeInMillis(UErrorCode&) const",93957346955712,93957346955817],["icu_68::Calendar::getKeywordValuesForLocale(char const*, icu_68::Locale const&, signed char, UErrorCode&)",93957346956032,93957346956126],["icu_68::Calendar::get(UCalendarDateFields, UErrorCode&) const",93957346956144,93957346956311],["icu_68::Calendar::set(UCalendarDateFields, int)",93957346956448,93957346956761],["icu_68::getCalendarType(char const*)",93957346957280,93957346957829],["icu_68::Calendar::isSet(UCalendarDateFields) const",93957346958432,93957346958461],["icu_68::Calendar::pinField(UCalendarDateFields, UErrorCode&)",93957346958912,93957346959542],["icu_68::Calendar::getTimeZone() const",93957346960240,93957346960253],["icu_68::Calendar::computeGregorianFields(int, UErrorCode&)",93957346960992,93957346961063],["icu_68::Calendar::getMinimalDaysInFirstWeek() const",93957346961088,93957346961100],["icu_68::Calendar::handleComputeFields(int, UErrorCode&)",93957346961248,93957346961375],["icu_68::Calendar::add(icu_68::Calendar::EDateFields, int, UErrorCode&)",93957346964416,93957346964426],["icu_68::Calendar::setLenient(signed char)",93957346968176,93957346968189],["icu_68::Calendar::fieldDifference(double, icu_68::Calendar::EDateFields, UErrorCode&)",93957346968496,93957346968510],["icu_68::Calendar::getDayOfWeekType(UCalendarDaysOfWeek, UErrorCode&) const",93957346970928,93957346971047],["icu_68::Calendar::isWeekend(double, UErrorCode&) const",93957346971120,93957346971436],["icu_68::Calendar::getMinimum(UCalendarDateFields) const",93957346971696,93957346971715],["icu_68::Calendar::getGreatestMinimum(UCalendarDateFields) const",93957346971760,93957346971782],["icu_68::Calendar::getLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957346971824,93957346971995],["icu_68::Calendar::validateField(UCalendarDateFields, UErrorCode&)",93957346972592,93957346972808],["icu_68::Calendar::newerField(UCalendarDateFields, UCalendarDateFields) const",93957346972832,93957346972861],["icu_68::Calendar::computeJulianDay()",93957346973600,93957346974148],["icu_68::Calendar::handleComputeJulianDay(UCalendarDateFields)",93957346974656,93957346976049],["icu_68::Calendar::handleGetMonthLength(int, int) const",93957346977024,93957346977103],["icu_68::Calendar::getActualMaximum(UCalendarDateFields, UErrorCode&) const",93957346977184,93957346977578],["icu_68::Calendar::prepareGetActual(UCalendarDateFields, signed char, UErrorCode&)",93957346978512,93957346981046],["icu_68::BasicCalendarFactory::updateVisibleIDs(icu_68::Hashtable&, UErrorCode&) const",93957346982064,93957346982493],["icu_68::CalendarService::isDefault() const",93957346982976,93957346982993],["icu_68::CalendarService::handleDefault(icu_68::ICUServiceKey const&, icu_68::UnicodeString*, UErrorCode&) const",93957346983088,93957346983333],["icu_68::CalendarService::CalendarService()",93957346983392,93957346983585],["void icu_68::UnifiedCache::get<icu_68::SharedCalendar>(icu_68::CacheKey<icu_68::SharedCalendar> const&, void const*, icu_68::SharedCalendar const*&, UErrorCode&) const",93957346983648,93957346983788],["icu_68::LocaleCacheKey<icu_68::SharedCalendar>::hashCode() const",93957346983856,93957346983910],["icu_68::LocaleCacheKey<icu_68::SharedCalendar>::operator==(icu_68::CacheKeyBase const&) const",93957346984016,93957346984081],["icu_68::BuddhistCalendar::getDynamicClassID() const",93957346984144,93957346984157],["icu_68::DangiCalendar::~DangiCalendar()",93957346984208,93957346984218],["icu_68::BuddhistCalendar::clone() const",93957346984256,93957346984317],["icu_68::BuddhistCalendar::handleGetExtendedYear()",93957346984336,93957346984410],["icu_68::BuddhistCalendar::handleComputeFields(int, UErrorCode&)",93957346984432,93957346984494],["icu_68::BuddhistCalendar::defaultCenturyStart() const",93957346984528,93957346984586],["icu_68::BuddhistCalendar::defaultCenturyStartYear() const",93957346984912,93957346984968],["icu_68::ChineseCalendar::ChineseCalendar(icu_68::Locale const&, UErrorCode&)",93957346985088,93957346985197],["icu_68::ChineseCalendar::ChineseCalendar(icu_68::Locale const&, int, icu_68::TimeZone const*, UErrorCode&)",93957346985440,93957346985555],["icu_68::CECalendar::~CECalendar()",93957346985648,93957346985658],["icu_68::ChineseCalendar::getType() const",93957346985696,93957346985709],["icu_68::ChineseCalendar::handleGetExtendedYear()",93957346985744,93957346985863],["icu_68::ChineseCalendar::handleComputeFields(int, UErrorCode&)",93957346985952,93957346985993],["icu_68::ChineseCalendar::handleComputeMonthStart(int, int, signed char) const",93957346986016,93957346986363],["icu_68::ChineseCalendar::roll(UCalendarDateFields, int, UErrorCode&)",93957346986528,93957346986907],["calendar_chinese_cleanup()",93957346987408,93957346987557],["icu_68::ChineseCalendar::synodicMonthsBetween(int, int) const",93957346988000,93957346988052],["icu_68::ChineseCalendar::hasNoMajorSolarTerm(int) const",93957346988416,93957346988501],["icu_68::ChineseCalendar::computeChineseFields(int, int, int, signed char)",93957346988624,93957346989297],["icu_68::ChineseCalendar::offsetMonth(int, int, int)",93957346989632,93957346989842],["icu_68::ChineseCalendar::defaultCenturyStart() const",93957346989936,93957346989994],["icu_68::initializeSystemDefaultCentury()",93957346990064,93957346990396],["icu_68::CalendarAstronomer::CalendarAstronomer()",93957346990416,93957346990529],["icu_68::CalendarAstronomer::eclipticToEquatorial(icu_68::CalendarAstronomer::Equatorial&, double, double)",93957346990640,93957346991030],["icu_68::CalendarAstronomer::getSunLongitude(double, double&, double&)",93957346991152,93957346991508],["icu_68::PtnSkeleton::~PtnSkeleton()",93957346991536,93957346991546],["icu_68::CalendarAstronomer::timeOfAngle(icu_68::CalendarAstronomer::AngleFunc&, double, double, double, signed char)",93957346991616,93957346992358],["icu_68::CalendarAstronomer::getMoonAge()",93957346993104,93957346993174],["icu_68::CalendarCache::get(icu_68::CalendarCache**, int, UErrorCode&)",93957346993248,93957346993505],["icu_68::CalendarCache::~CalendarCache()",93957346993792,93957346993823],["icu_68::SunTimeAngleFunc::eval(icu_68::CalendarAstronomer&)",93957346993872,93957346993971],["icu_68::ICUCollatorFactory::create(icu_68::ICUServiceKey const&, icu_68::ICUService const*, UErrorCode&) const",93957346994064,93957346994369],["icu_68::Collator::safeClone() const",93957346995936,93957346995947],["icu_68::Collator::compare(icu_68::UnicodeString const&, icu_68::UnicodeString const&, int) const",93957346995984,93957346996015],["icu_68::WholeStringBreakIterator::createBufferClone(void*, int&, UErrorCode&)",93957346996048,93957346996067],["icu_68::Collator::getAvailableLocales(int&)",93957346996288,93957346996349],["icu_68::Collator::Collator(icu_68::Collator const&)",93957346997040,93957346997056],["icu_68::PluralFormat::operator!=(icu_68::Format const&) const",93957346997104,93957346997121],["icu_68::Collator::getKeywordValuesForLocale(char const*, icu_68::Locale const&, signed char, UErrorCode&)",93957346997200,93957346997235],["icu_68::Collator::setStrength(icu_68::Collator::ECollationStrength)",93957346997296,93957346997337],["icu_68::Collator::getMaxVariable() const",93957346997376,93957346997387],["icu_68::Collator::internalGetShortDefinitionString(char const*, char*, int, UErrorCode&) const",93957346997424,93957346997445],["icu_68::Collator::internalNextSortKeyPart(UCharIterator*, unsigned int*, unsigned char*, int, UErrorCode&) const",93957346997648,93957346997669],["icu_68::ICUCollatorService::cloneInstance(icu_68::UObject*) const",93957346997808,93957346997822],["icu_68::(anonymous namespace)::getReorderCode(char const*)",93957346998176,93957346998325],["icu_68::ICUCollatorService::ICUCollatorService()",93957346998512,93957346998746],["icu_68::uprv_collation_root_cleanup()",93957346999056,93957346999100],["icu_68::CollationRoot::getRootCacheEntry(UErrorCode&)",93957346999184,93957346999290],["icu_68::CollationTailoring::CollationTailoring(icu_68::CollationSettings const*)",93957346999424,93957346999685],["icu_68::CollationTailoring::~CollationTailoring()",93957346999888,93957346999916],["icu_68::CollationTailoring::setVersion(unsigned char const*, unsigned char const*)",93957347000112,93957347000191],["icu_68::CollationCacheEntry::~CollationCacheEntry()",93957347000224,93957347000294],["icu_68::CollationSettings::CollationSettings(icu_68::CollationSettings const&)",93957347000384,93957347000532],["icu_68::CollationSettings::~CollationSettings()",93957347000992,93957347001040],["icu_68::CollationSettings::operator==(icu_68::CollationSettings const&) const",93957347001104,93957347001205],["icu_68::CollationSettings::resetReordering()",93957347001888,93957347001923],["icu_68::CollationSettings::setReordering(icu_68::CollationData const&, int const*, int, UErrorCode&)",93957347002288,93957347004410],["icu_68::CollationSettings::setStrength(int, int, UErrorCode&)",93957347004480,93957347004542],["icu_68::CollationSettings::setCaseFirst(UColAttributeValue, int, UErrorCode&)",93957347004608,93957347004696],["icu_68::CollationSettings::setMaxVariable(int, int, UErrorCode&)",93957347004768,93957347004820],["icu_68::CollationData::getFinalCE32(unsigned int) const",93957347004896,93957347004965],["icu_68::CollationData::getFirstPrimaryForGroup(int) const",93957347005552,93957347005625],["icu_68::CollationData::getGroupForPrimary(unsigned int) const",93957347005712,93957347005930],["icu_68::CollationData::makeReorderRanges(int const*, int, signed char, icu_68::UVector32&, UErrorCode&) const",93957347005968,93957347007940],["icu_68::Collation::incThreeBytePrimaryByOffset(unsigned int, signed char, int)",93957347008112,93957347008324],["icu_68::Collation::decThreeBytePrimaryByOneStep(unsigned int, signed char, int)",93957347008400,93957347008507],["icu_68::Collation::unassignedPrimaryFromCodePoint(int)",93957347008752,93957347008931],["icu_68::CollationDataReader::isAcceptable(void*, char const*, char const*, UDataInfo const*)",93957347011360,93957347011430],["icu_68::CollationFastLatin::getOptions(icu_68::CollationData const*, icu_68::CollationSettings const&, unsigned short*, int)",93957347011552,93957347012400],["icu_68::CollationFastLatin::nextPair(unsigned short const*, int, unsigned int, char16_t const*, unsigned char const*, int&, int&)",93957347016416,93957347016876],["icu_68::CopticCalendar::getDynamicClassID() const",93957347021664,93957347021677],["icu_68::CopticCalendar::clone() const",93957347021712,93957347021773],["icu_68::CopticCalendar::handleGetExtendedYear()",93957347021792,93957347021913],["icu_68::CopticCalendar::defaultCenturyStart() const",93957347022128,93957347022186],["icu_68::CopticCalendar::defaultCenturyStartYear() const",93957347022480,93957347022536],["icu_68::CECalendar::CECalendar(icu_68::Locale const&, UErrorCode&)",93957347022560,93957347022640],["icu_68::CECalendar::handleComputeMonthStart(int, int, signed char) const",93957347022672,93957347022822],["icu_68::CECalendar::jdToCE(int, int, int&, int&, int&)",93957347022864,93957347023057],["icu_68::CurrencyUnit::CurrencyUnit(icu_68::CurrencyUnit const&)",93957347023328,93957347023379],["icu_68::CurrencyUnit::CurrencyUnit()",93957347023504,93957347023619],["icu_68::CurrencyUnit::clone() const",93957347023696,93957347023776],["icu_68::MeasureUnit::~MeasureUnit()",93957347023792,93957347023820],["icu_68::DangiCalendar::DangiCalendar(icu_68::Locale const&, UErrorCode&)",93957347023840,93957347023909],["icu_68::DangiCalendar::clone() const",93957347024752,93957347024813],["icu_68::DangiCalendar::getDynamicClassID() const",93957347024832,93957347024845],["icu_68::DateFmtBestPattern::~DateFmtBestPattern()",93957347024896,93957347024938],["icu_68::LocaleCacheKey<icu_68::DateFmtBestPattern>::createObject(void const*, UErrorCode&) const",93957347025008,93957347025022],["icu_68::DateFmtBestPatternKey::~DateFmtBestPatternKey()",93957347025088,93957347025160],["icu_68::DateFormat::DateFormat(icu_68::DateFormat const&)",93957347025232,93957347025393],["icu_68::DateFormat::~DateFormat()",93957347025568,93957347025637],["icu_68::DateFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347025776,93957347025975],["icu_68::DateFormat::format(double, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347026192,93957347026321],["icu_68::DateFormat::format(double, icu_68::UnicodeString&) const",93957347026368,93957347026588],["icu_68::DateFormat::parseObject(icu_68::UnicodeString const&, icu_68::Formattable&, icu_68::ParsePosition&) const",93957347026832,93957347027019],["icu_68::DateFormat::createDateTimeInstance(icu_68::DateFormat::EStyle, icu_68::DateFormat::EStyle, icu_68::Locale const&)",93957347027056,93957347027079],["icu_68::DateFormat::create(icu_68::DateFormat::EStyle, icu_68::DateFormat::EStyle, icu_68::Locale const&)",93957347027120,93957347027381],["icu_68::DateFormat::createInstanceForSkeleton(icu_68::UnicodeString const&, icu_68::Locale const&, UErrorCode&)",93957347027856,93957347028041],["icu_68::DateFormat::setCalendar(icu_68::Calendar const&)",93957347028096,93957347028150],["icu_68::DateFormat::adoptNumberFormat(icu_68::NumberFormat*)",93957347028176,93957347028252],["icu_68::DateFormat::getNumberFormat() const",93957347028320,93957347028333],["icu_68::DateFormat::setTimeZone(icu_68::TimeZone const&)",93957347028368,93957347028392],["icu_68::DateFormat::setLenient(signed char)",93957347028432,93957347028534],["icu_68::DateFormat::setCalendarLenient(signed char)",93957347028672,93957347028700],["icu_68::DateFormat::setContext(UDisplayContext, UErrorCode&)",93957347028736,93957347028777],["icu_68::DateFormat::setBooleanAttribute(UDateFormatBooleanAttribute, signed char, UErrorCode&)",93957347028832,93957347028887],["icu_68::DateFmtBestPatternKey::hashCode() const",93957347028928,93957347029004],["icu_68::DateFmtBestPatternKey::operator==(icu_68::CacheKeyBase const&) const",93957347029136,93957347029331],["icu_68::LocaleCacheKey<icu_68::DateFmtBestPattern>::~LocaleCacheKey()",93957347029616,93957347029658],["icu_68::LocaleCacheKey<icu_68::DateFmtBestPattern>::hashCode() const",93957347029728,93957347029782],["icu_68::DecimalFormat::getStaticClassID()",93957347029888,93957347029901],["icu_68::DecimalFormat::touch(UErrorCode&)",93957347031152,93957347031799],["icu_68::number::impl::DecimalFormatFields::~DecimalFormatFields()",93957347032112,93957347032291],["icu_68::DecimalFormat::setSignificantDigitsUsed(signed char)",93957347032960,93957347033074],["icu_68::DecimalFormat::setMinimumSignificantDigits(int)",93957347033168,93957347033239],["icu_68::DecimalFormat::setParseNoExponent(signed char)",93957347033312,93957347033379],["icu_68::DecimalFormat::setMinimumGroupingDigits(int)",93957347033456,93957347033506],["icu_68::DecimalFormat::setSignAlwaysShown(signed char)",93957347033600,93957347033667],["icu_68::DecimalFormat::getAttribute(UNumberFormatAttribute, UErrorCode&) const",93957347033744,93957347034065],["icu_68::DecimalFormat::setGroupingUsed(signed char)",93957347034144,93957347034233],["icu_68::DecimalFormat::setLenient(signed char)",93957347034336,93957347034451],["icu_68::DecimalFormat::DecimalFormat(icu_68::DecimalFormat const&)",93957347034752,93957347035913],["icu_68::DecimalFormat::~DecimalFormat()",93957347036048,93957347036175],["icu_68::DecimalFormat::operator==(icu_68::Format const&) const",93957347036256,93957347036411],["icu_68::DecimalFormat::format(double, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347036992,93957347037564],["icu_68::DecimalFormat::format(int, icu_68::UnicodeString&, icu_68::FieldPosition&) const",93957347038176,93957347038193],["icu_68::DecimalFormat::format(int, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347038240,93957347038260],["icu_68::DecimalFormat::format(long, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347038784,93957347039281],["icu_68::DecimalFormat::format(icu_68::StringPiece, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347039824,93957347040297],["icu_68::DecimalFormat::format(icu_68::number::impl::DecimalQuantity const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347040768,93957347041198],["icu_68::DecimalFormat::parseCurrency(icu_68::UnicodeString const&, icu_68::ParsePosition&) const",93957347041744,93957347042408],["icu_68::DecimalFormat::adoptDecimalFormatSymbols(icu_68::DecimalFormatSymbols*)",93957347042448,93957347042555],["icu_68::DecimalFormat::getCurrencyPluralInfo() const",93957347042720,93957347042746],["icu_68::DecimalFormat::setCurrencyPluralInfo(icu_68::CurrencyPluralInfo const&)",93957347042864,93957347042965],["icu_68::DecimalFormat::setNegativePrefix(icu_68::UnicodeString const&)",93957347043168,93957347043353],["icu_68::DecimalFormat::setPositiveSuffix(icu_68::UnicodeString const&)",93957347043440,93957347043625],["icu_68::DecimalFormat::setNegativeSuffix(icu_68::UnicodeString const&)",93957347043712,93957347043897],["icu_68::DecimalFormat::getRoundingIncrement() const",93957347044048,93957347044089],["icu_68::DecimalFormat::getRoundingMode() const",93957347044176,93957347044215],["icu_68::DecimalFormat::getFormatWidth() const",93957347044336,93957347044371],["icu_68::DecimalFormat::getPadCharacterString() const",93957347044448,93957347044549],["icu_68::DecimalFormat::getPadPosition() const",93957347044880,93957347044917],["icu_68::DecimalFormat::isScientificNotation() const",93957347045008,93957347045047],["icu_68::DecimalFormat::getMinimumExponentDigits() const",93957347045120,93957347045155],["icu_68::DecimalFormat::isExponentSignAlwaysShown() const",93957347045232,93957347045267],["icu_68::DecimalFormat::setGroupingSize(int)",93957347045344,93957347045394],["icu_68::DecimalFormat::setDecimalSeparatorAlwaysShown(signed char)",93957347045472,93957347045533],["icu_68::DecimalFormat::toPattern(icu_68::UnicodeString&) const",93957347045600,93957347046031],["icu_68::number::impl::DecimalFormatProperties::~DecimalFormatProperties()",93957347046448,93957347046598],["icu_68::DecimalFormat::applyPattern(icu_68::UnicodeString const&, UParseError&, UErrorCode&)",93957347046832,93957347046852],["icu_68::DecimalFormat::applyLocalizedPattern(icu_68::UnicodeString const&, UParseError&, UErrorCode&)",93957347046944,93957347046964],["icu_68::DecimalFormat::setMaximumIntegerDigits(int)",93957347047152,93957347047223],["icu_68::DecimalFormat::setMaximumFractionDigits(int)",93957347047312,93957347047397],["icu_68::DecimalFormat::setCurrency(char16_t const*, UErrorCode&)",93957347047488,93957347047916],["icu_68::DecimalFormat::formatToDecimalQuantity(icu_68::Formattable const&, icu_68::number::impl::DecimalQuantity&, UErrorCode&) const",93957347048032,93957347048288],["icu_68::DecimalFormat::setupFastFormat()",93957347048336,93957347048849],["icu_68::NumberFormat::isLenient() const",93957347049200,93957347049212],["icu_68::CurrencyAmount::CurrencyAmount(icu_68::Formattable const&, icu_68::ConstChar16Ptr, UErrorCode&)",93957347049680,93957347049818],["icu_68::CurrencyAmount::~CurrencyAmount()",93957347049888,93957347049898],["icu_68::CurrencyAmount::getDynamicClassID() const",93957347049936,93957347049949],["icu_68::CurrencyPluralInfo::initialize(icu_68::Locale const&, UErrorCode&)",93957347049968,93957347050135],["icu_68::CurrencyPluralInfo::CurrencyPluralInfo(icu_68::CurrencyPluralInfo const&)",93957347050176,93957347050207],["icu_68::CurrencyPluralInfo::initHash(UErrorCode&)",93957347050544,93957347050741],["icu_68::CurrencyPluralInfo::~CurrencyPluralInfo()",93957347051088,93957347051273],["icu_68::CurrencyPluralInfo::clone() const",93957347051312,93957347051397],["icu_68::CurrencyPluralInfo::setupCurrencyPluralPattern(icu_68::Locale const&, UErrorCode&)",93957347051696,93957347053985],["icu_68::ValueComparator(UElement, UElement)",93957347054096,93957347054175],["icu_68::DecimalFormatSymbols::DecimalFormatSymbols(UErrorCode&)",93957347054192,93957347054834],["icu_68::DecimalFormatSymbols::DecimalFormatSymbols(icu_68::Locale const&, UErrorCode&)",93957347057136,93957347057775],["icu_68::DecimalFormatSymbols::initialize()",93957347058432,93957347059969],["icu_68::DecimalFormatSymbols::~DecimalFormatSymbols()",93957347060464,93957347060492],["icu_68::DecimalFormatSymbols::operator=(icu_68::DecimalFormatSymbols const&)",93957347061120,93957347061419],["icu_68::DecimalFormatSymbols::setCurrency(char16_t const*, UErrorCode&)",93957347062032,93957347062945],["(anonymous namespace)::ParseDataSink::~ParseDataSink()",93957347063024,93957347063052],["icu_68::DecimalFormatSymbols::setSymbol(icu_68::DecimalFormatSymbols::ENumberFormatSymbol, icu_68::UnicodeString const&, signed char)",93957347063552,93957347064124],["icu_68::SharedDateFormatSymbols::~SharedDateFormatSymbols()",93957347065024,93957347065123],["icu_68::LocaleCacheKey<icu_68::SharedDateFormatSymbols>::createObject(void const*, UErrorCode&) const",93957347065248,93957347065652],["icu_68::DateFormatSymbols::createForLocale(icu_68::Locale const&, UErrorCode&)",93957347065680,93957347066061],["icu_68::DateFormatSymbols::initializeData(icu_68::Locale const&, char const*, UErrorCode&, signed char)",93957347066176,93957347093296],["icu_68::DateFormatSymbols::DateFormatSymbols(icu_68::DateFormatSymbols const&)",93957347093424,93957347093526],["icu_68::DateFormatSymbols::assignArray(icu_68::UnicodeString*&, int&, icu_68::UnicodeString const*, int)",93957347107632,93957347108061],["icu_68::DateFormatSymbols::dispose()",93957347108784,93957347110855],["icu_68::DateFormatSymbols::~DateFormatSymbols()",93957347110944,93957347111026],["icu_68::DateFormatSymbols::arrayCompare(icu_68::UnicodeString const*, icu_68::UnicodeString const*, int)",93957347111360,93957347111555],["icu_68::DateFormatSymbols::operator==(icu_68::DateFormatSymbols const&) const",93957347111664,93957347113538],["icu_68::DateFormatSymbols::getWeekdays(int&, icu_68::DateFormatSymbols::DtContextType, icu_68::DateFormatSymbols::DtWidthType) const",93957347113696,93957347113895],["icu_68::DateFormatSymbols::getTimeSeparatorString(icu_68::UnicodeString&) const",93957347114048,93957347114071],["icu_68::DateFormatSymbols::getPatternUChars()",93957347114112,93957347114125],["icu_68::DateFormatSymbols::isNumericField(UDateFormatField, int)",93957347114192,93957347114252],["icu_68::initLeapMonthPattern(icu_68::UnicodeString*, int, icu_68::(anonymous namespace)::CalendarDataSink&, icu_68::CharString&, UErrorCode&)",93957347114368,93957347114714],["icu_68::initField(icu_68::UnicodeString**, int&, icu_68::(anonymous namespace)::CalendarDataSink&, icu_68::CharString&, int, UErrorCode&)",93957347115344,93957347115973],["icu_68::(anonymous namespace)::CalendarDataSink::~CalendarDataSink()",93957347116256,93957347116284],["icu_68::(anonymous namespace)::CalendarDataSink::processAliasFromValue(icu_68::UnicodeString&, icu_68::ResourceValue&, UErrorCode&)",93957347119536,93957347120265],["icu_68::Hashtable::puti(icu_68::UnicodeString const&, int, UErrorCode&)",93957347120368,93957347120454],["icu_68::(anonymous namespace)::CalendarDataSink::processResource(icu_68::UnicodeString&, char const*, icu_68::ResourceValue&, UErrorCode&)",93957347120560,93957347123215],["icu_68::UnicodeString::compare(icu_68::ConstChar16Ptr, int) const",93957347123296,93957347123334],["icu_68::UnicodeString::retainBetween(int, int)",93957347123680,93957347123803],["icu_68::LocaleCacheKey<icu_68::SharedDateFormatSymbols>::~LocaleCacheKey()",93957347123904,93957347123946],["icu_68::LocaleCacheKey<icu_68::SharedDateFormatSymbols>::hashCode() const",93957347124016,93957347124070],["icu_68::FormattedDateIntervalData::~FormattedDateIntervalData()",93957347124176,93957347124186],["icu_68::FormattedDateInterval::~FormattedDateInterval()",93957347124224,93957347124280],["icu_68::FormattedList::toString(UErrorCode&) const",93957347124352,93957347124456],["icu_68::FormattedList::appendTo(icu_68::Appendable&, UErrorCode&) const",93957347124576,93957347124619],["icu_68::DateIntervalFormat::getDynamicClassID() const",93957347124672,93957347124685],["icu_68::DateIntervalFormat::operator=(icu_68::DateIntervalFormat const&)",93957347124864,93957347125775],["icu_68::DateIntervalFormat::~DateIntervalFormat()",93957347126224,93957347126252],["icu_68::DateIntervalFormat::operator==(icu_68::Format const&) const",93957347126720,93957347127396],["icu_68::DateIntervalFormat::format(icu_68::DateInterval const*, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347127568,93957347127886],["icu_68::DateIntervalFormat::formatToValue(icu_68::Calendar&, icu_68::Calendar&, UErrorCode&) const",93957347129616,93957347130209],["icu_68::DateIntervalFormat::initializePattern(UErrorCode&)",93957347131472,93957347133474],["icu_68::DateIntervalFormat::setTimeZone(icu_68::TimeZone const&)",93957347133584,93957347133670],["icu_68::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&)",93957347133760,93957347133801],["icu_68::DateIntervalFormat::DateIntervalFormat(icu_68::Locale const&, icu_68::DateIntervalInfo*, icu_68::UnicodeString const*, UErrorCode&)",93957347133856,93957347134544],["icu_68::DateIntervalFormat::getDateTimeSkeleton(icu_68::UnicodeString const&, icu_68::UnicodeString&, icu_68::UnicodeString&, icu_68::UnicodeString&, icu_68::UnicodeString&)",93957347135952,93957347136987],["icu_68::DateIntervalFormat::setPatternInfo(UCalendarDateFields, icu_68::UnicodeString const*, icu_68::UnicodeString const*, signed char)",93957347137776,93957347137935],["icu_68::DateIntervalFormat::concatSingleDate2TimeInterval(icu_68::UnicodeString&, icu_68::UnicodeString const&, UCalendarDateFields, UErrorCode&)",93957347138160,93957347138599],["icu_68::DateIntervalFormat::setIntervalPattern(UCalendarDateFields, icu_68::UnicodeString const&, signed char)",93957347139680,93957347140336],["icu_68::DateIntervalFormat::adjustFieldWidth(icu_68::UnicodeString const&, icu_68::UnicodeString const&, icu_68::UnicodeString const&, signed char, signed char, icu_68::UnicodeString&)",93957347140704,93957347142386],["icu_68::DateIntervalFormat::findReplaceInPattern(icu_68::UnicodeString&, icu_68::UnicodeString const&, icu_68::UnicodeString const&)",93957347143472,93957347144642],["icu_68::DateIntervalInfo::initHash(UErrorCode&)",93957347144672,93957347144845],["icu_68::DateIntervalInfo::initializeData(icu_68::Locale const&, UErrorCode&)",93957347144944,93957347146417],["icu_68::DateIntervalInfo::setFallbackIntervalPattern(icu_68::UnicodeString const&, UErrorCode&)",93957347146832,93957347147046],["icu_68::DateIntervalInfo::copyHash(icu_68::Hashtable const*, icu_68::Hashtable*, UErrorCode&)",93957347147264,93957347147943],["icu_68::DateIntervalInfo::~DateIntervalInfo()",93957347148128,93957347148187],["icu_68::DateIntervalInfo::operator==(icu_68::DateIntervalInfo const&) const",93957347148272,93957347148413],["icu_68::DateIntervalInfo::calendarFieldToIntervalIndex(UCalendarDateFields, UErrorCode&)",93957347148544,93957347148596],["icu_68::TimeZoneRule::getName(icu_68::UnicodeString&) const",93957347148624,93957347148655],["icu_68::DateIntervalInfo::DateIntervalSink::~DateIntervalSink()",93957347148704,93957347148754],["icu_68::DateIntervalInfo::getBestSkeleton(icu_68::UnicodeString const&, signed char&) const",93957347148880,93957347150794],["icu_68::DateIntervalInfo::DateIntervalSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347150976,93957347151682],["icu_68::DateIntervalInfo::DateIntervalSink::processSkeletonTable(char const*, icu_68::ResourceValue&, UErrorCode&)",93957347151920,93957347152209],["icu_68::DateIntervalInfo::DateIntervalSink::setIntervalPatternIfAbsent(char const*, UCalendarDateFields, icu_68::ResourceValue const&, UErrorCode&)",93957347152320,93957347152691],["icu_68::DateTimePatternGenerator::createInstance(icu_68::Locale const&, UErrorCode&)",93957347152720,93957347152834],["icu_68::DateTimePatternGenerator::DateTimePatternGenerator(icu_68::Locale const&, UErrorCode&, signed char)",93957347152976,93957347154450],["icu_68::DateTimePatternGenerator::DateTimePatternGenerator(icu_68::DateTimePatternGenerator const&)",93957347154832,93957347156262],["icu_68::PatternMap::copyFrom(icu_68::PatternMap const&, UErrorCode&)",93957347157136,93957347157750],["icu_68::DateTimePatternGenerator::~DateTimePatternGenerator()",93957347157984,93957347158958],["deleteAllowedHourFormats_68",93957347158992,93957347159002],["icu_68::DateTimePatternGenerator::addCanonicalItems(UErrorCode&)",93957347159040,93957347159281],["icu_68::DateTimePatternGenerator::addCLDRData(icu_68::Locale const&, UErrorCode&)",93957347159840,93957347161049],["icu_68::DateTimePatternGenerator::loadAllowedHourFormatsData(UErrorCode&)",93957347161680,93957347161863],["icu_68::getAllowedHourFormatsLangCountry(char const*, char const*, UErrorCode&)",93957347162720,93957347162974],["icu_68::DateTimeMatcher::set(icu_68::UnicodeString const&, icu_68::FormatParser*, icu_68::PtnSkeleton&)",93957347163072,93957347164018],["icu_68::DateTimePatternGenerator::staticGetSkeleton(icu_68::UnicodeString const&, UErrorCode&)",93957347164304,93957347165471],["icu_68::FormatParser::getQuoteLiteral(icu_68::UnicodeString&, int*)",93957347166704,93957347167204],["icu_68::CEFinalizer::~CEFinalizer()",93957347167584,93957347167594],["icu_68::DateTimePatternGenerator::AvailableFormatsSink::~AvailableFormatsSink()",93957347167648,93957347167698],["icu_68::DateTimePatternGenerator::AppendItemNamesSink::fillInMissing()",93957347167920,93957347168362],["icu_68::DateTimePatternGenerator::getFieldDisplayName(UDateTimePatternField, UDateTimePGDisplayWidth) const",93957347168576,93957347168630],["icu_68::DateTimePatternGenerator::getBestPattern(icu_68::UnicodeString const&, UDateTimePatternMatchOptions, UErrorCode&)",93957347168672,93957347169837],["icu_68::DateTimePatternGenerator::getBestRaw(icu_68::DateTimeMatcher&, int, icu_68::DistanceInfo*, UErrorCode&, icu_68::PtnSkeleton const**)",93957347170800,93957347172331],["icu_68::DateTimeMatcher::getFieldMask() const",93957347174160,93957347174327],["icu_68::DateTimePatternGenerator::addPatternWithSkeleton(icu_68::UnicodeString const&, icu_68::UnicodeString const*, signed char, icu_68::UnicodeString&, UErrorCode&)",93957347175616,93957347176559],["icu_68::PatternMap::getPatternFromSkeleton(icu_68::PtnSkeleton const&, icu_68::PtnSkeleton const**) const",93957347176880,93957347177351],["icu_68::DateTimePatternGenerator::getAppendFormatNumber(char const*) const",93957347178384,93957347178738],["icu_68::DateTimePatternGenerator::clone() const",93957347179376,93957347179427],["icu_68::PatternMap::~PatternMap()",93957347179520,93957347179599],["icu_68::FormatParser::FormatParser()",93957347180016,93957347180851],["icu_68::FormatParser::~FormatParser()",93957347181488,93957347181516],["icu_68::FormatParser::getCanonicalIndex(icu_68::UnicodeString const&, signed char)",93957347181712,93957347181991],["icu_68::PtnElem::~PtnElem()",93957347182080,93957347182164],["icu_68::DateTimePatternGenerator::AppendItemNamesSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347182608,93957347183398],["icu_68::(anonymous namespace)::AllowedHourFormatsSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347184064,93957347185612],["icu_68::EthiopicCalendar::getDynamicClassID() const",93957347186144,93957347186157],["icu_68::EthiopicCalendar::clone() const",93957347186208,93957347186282],["icu_68::EthiopicCalendar::handleGetExtendedYear()",93957347186320,93957347186464],["icu_68::EthiopicCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347186688,93957347186714],["icu_68::initializeSystemDefaultCentury()",93957347186784,93957347187069],["icu_68::EthiopicCalendar::getJDEpochOffset() const",93957347187168,93957347187179],["icu_68::Formattable::Formattable()",93957347187200,93957347187270],["icu_68::Formattable::Formattable(int)",93957347187392,93957347187479],["icu_68::Formattable::setDecimalNumber(icu_68::StringPiece, UErrorCode&)",93957347187584,93957347187798],["icu_68::Formattable::operator=(icu_68::Formattable const&)",93957347187904,93957347188524],["icu_68::Formattable::~Formattable()",93957347188784,93957347188831],["icu_68::(anonymous namespace)::hashLSR(UElement)",93957347188896,93957347188905],["icu_68::Formattable::getLong(UErrorCode&) const",93957347188960,93957347189191],["icu_68::Formattable::getObject() const",93957347189408,93957347189428],["icu_68::Formattable::setLong(int)",93957347189488,93957347189525],["icu_68::Formattable::setString(icu_68::UnicodeString const&)",93957347189584,93957347189661],["icu_68::Formattable::adoptObject(icu_68::UObject*)",93957347189728,93957347189762],["icu_68::Formattable::populateDecimalQuantity(icu_68::number::impl::DecimalQuantity&, UErrorCode&) const",93957347189840,93957347189953],["icu_68::FieldPosition::getDynamicClassID() const",93957347190096,93957347190109],["icu_68::Format::Format(icu_68::Format const&)",93957347190144,93957347190219],["icu_68::Format::format(icu_68::Formattable const&, icu_68::UnicodeString&, UErrorCode&) const",93957347190288,93957347190434],["icu_68::Format::getLocaleID(ULocDataLocaleType, UErrorCode&) const",93957347190512,93957347190554],["icu_68::FormattedValueFieldPositionIteratorImpl::FormattedValueFieldPositionIteratorImpl(int, UErrorCode&)",93957347190608,93957347190656],["icu_68::FormattedValueFieldPositionIteratorImpl::~FormattedValueFieldPositionIteratorImpl()",93957347190720,93957347190779],["icu_68::FormattedValueFieldPositionIteratorImpl::toTempString(UErrorCode&) const",93957347190816,93957347190912],["icu_68::FormattedValueFieldPositionIteratorImpl::nextPosition(icu_68::ConstrainedFieldPosition&, UErrorCode&) const",93957347191008,93957347191350],["icu_68::FormattedValueFieldPositionIteratorImpl::appendString(icu_68::UnicodeString, UErrorCode&)",93957347191392,93957347191466],["icu_68::FormattedValueFieldPositionIteratorImpl::sort()",93957347192512,93957347193141],["icu_68::FormattedValueStringBuilderImpl::~FormattedValueStringBuilderImpl()",93957347193232,93957347193295],["icu_68::FormattedValueStringBuilderImpl::toString(UErrorCode&) const",93957347193376,93957347193404],["icu_68::FormattedValueStringBuilderImpl::appendTo(icu_68::Appendable&, UErrorCode&) const",93957347193440,93957347193507],["icu_68::FormattedValueStringBuilderImpl::nextPositionImpl(icu_68::ConstrainedFieldPosition&, icu_68::FormattedStringBuilder::Field, UErrorCode&) const",93957347193552,93957347194771],["icu_68::FormattedValueStringBuilderImpl::getAllFieldPositions(icu_68::FieldPositionIteratorHandler&, UErrorCode&) const",93957347195152,93957347195307],["icu_68::FormattedValueStringBuilderImpl::prependSpanInfo(int, int, UErrorCode&)",93957347195536,93957347195798],["icu_68::FormattedStringBuilder::~FormattedStringBuilder()",93957347195840,93957347195885],["icu_68::FormattedStringBuilder::operator=(icu_68::FormattedStringBuilder const&)",93957347195920,93957347196319],["icu_68::FormattedStringBuilder::codePointCount() const",93957347196336,93957347196381],["icu_68::FormattedStringBuilder::getLastCodePoint() const",93957347196512,93957347196809],["icu_68::FormattedStringBuilder::codePointBefore(int) const",93957347196992,93957347197260],["icu_68::FormattedStringBuilder::insert(int, icu_68::UnicodeString const&, icu_68::FormattedStringBuilder::Field, UErrorCode&)",93957347197616,93957347197733],["icu_68::FormattedStringBuilder::splice(int, int, icu_68::UnicodeString const&, int, int, icu_68::FormattedStringBuilder::Field, UErrorCode&)",93957347198080,93957347198659],["icu_68::FormattedStringBuilder::writeTerminator(UErrorCode&)",93957347198992,93957347199173],["icu_68::FormattedStringBuilder::toUnicodeString() const",93957347199920,93957347199982],["icu_68::FormattedStringBuilder::chars() const",93957347200064,93957347200096],["icu_68::FormattedStringBuilder::containsField(icu_68::FormattedStringBuilder::Field) const",93957347200304,93957347200395],["icu_68::ConstrainedFieldPosition::constrainCategory(int)",93957347200416,93957347200429],["icu_68::ConstrainedFieldPosition::matchesField(int, int) const",93957347200448,93957347200501],["icu_68::StringSegment::setOffset(int)",93957347200544,93957347200553],["icu_68::FieldPositionOnlyHandler::addAttribute(int, int, int)",93957347200608,93957347200657],["icu_68::FieldPositionOnlyHandler::isRecording() const",93957347200720,93957347200737],["icu_68::FieldPositionIteratorHandler::FieldPositionIteratorHandler(icu_68::FieldPositionIterator*, UErrorCode&)",93957347200768,93957347200872],["icu_68::FieldPositionIteratorHandler::~FieldPositionIteratorHandler()",93957347200928,93957347200984],["icu_68::FieldPositionIteratorHandler::addAttribute(int, int, int)",93957347201056,93957347201419],["icu_68::FieldPositionIteratorHandler::isRecording() const",93957347201552,93957347201565],["icu_68::FieldPositionIterator::~FieldPositionIterator()",93957347201632,93957347201703],["icu_68::FieldPositionIterator::setData(icu_68::UVector32*, UErrorCode&)",93957347201744,93957347201948],["icu_68::GregorianCalendar::getStaticClassID()",93957347202144,93957347202157],["icu_68::GregorianCalendar::GregorianCalendar(icu_68::Locale const&, UErrorCode&)",93957347202304,93957347202437],["icu_68::GregorianCalendar::clone() const",93957347202576,93957347202723],["icu_68::GregorianCalendar::setGregorianChange(double, UErrorCode&)",93957347202800,93957347203244],["icu_68::GregorianCalendar::handleComputeJulianDay(UCalendarDateFields)",93957347203712,93957347203939],["icu_68::GregorianCalendar::handleGetMonthLength(int, int) const",93957347204256,93957347204411],["icu_68::GregorianCalendar::monthLength(int) const",93957347204528,93957347204550],["icu_68::GregorianCalendar::getEpochDay(UErrorCode&)",93957347204672,93957347204757],["icu_68::GregorianCalendar::getActualMinimum(UCalendarDateFields, UErrorCode&) const",93957347205840,93957347205854],["icu_68::GregorianCalendar::getActualMaximum(UCalendarDateFields, UErrorCode&) const",93957347205888,93957347206176],["icu_68::GregorianCalendar::handleGetExtendedYearFromWeekFields(int, int)",93957347206320,93957347206353],["icu_68::GregorianCalendar::getType() const",93957347206416,93957347206429],["icu_68::initializeSystemDefaultCentury()",93957347206496,93957347206791],["icu_68::ClockMath::floorDivide(int, int)",93957347206864,93957347206890],["icu_68::ClockMath::floorDivide(double, int, int&)",93957347206976,93957347207046],["icu_68::Grego::fieldsToDay(int, int, int)",93957347207200,93957347207410],["icu_68::Grego::timeToFields(double, int&, int&, int&, int&, int&, int&)",93957347207984,93957347208185],["icu_68::Grego::dayOfWeekInMonth(int, int, int)",93957347208272,93957347208422],["icu_68::HebrewCalendar::getType() const",93957347208512,93957347208525],["icu_68::HebrewCalendar::add(UCalendarDateFields, int, UErrorCode&)",93957347208592,93957347209009],["icu_68::HebrewCalendar::roll(UCalendarDateFields, int, UErrorCode&)",93957347209088,93957347209393],["calendar_hebrew_cleanup()",93957347209856,93957347209893],["icu_68::HebrewCalendar::handleGetMonthLength(int, int) const",93957347209936,93957347210219],["icu_68::HebrewCalendar::validateField(UCalendarDateFields, UErrorCode&)",93957347210288,93957347210429],["icu_68::HebrewCalendar::handleGetExtendedYear()",93957347211216,93957347211288],["icu_68::HebrewCalendar::defaultCenturyStart() const",93957347211728,93957347211786],["icu_68::HebrewCalendar::defaultCenturyStartYear() const",93957347212144,93957347212200],["icu_68::IndianCalendar::clone() const",93957347212224,93957347212285],["icu_68::IndianCalendar::getType() const",93957347212368,93957347212381],["icu_68::IndianCalendar::handleGetMonthLength(int, int) const",93957347212416,93957347212535],["icu_68::IndianCalendar::handleComputeMonthStart(int, int, signed char) const",93957347212640,93957347212944],["icu_68::IndianCalendar::defaultCenturyStart() const",93957347213568,93957347213626],["icu_68::IndianCalendar::defaultCenturyStartYear() const",93957347213968,93957347214024],["icu_68::IslamicCalendar::getType() const",93957347214048,93957347214083],["icu_68::IslamicCalendar::IslamicCalendar(icu_68::Locale const&, UErrorCode&, icu_68::IslamicCalendar::ECalculationType)",93957347214176,93957347214265],["icu_68::IslamicCalendar::trueMonthStart(int) const",93957347214304,93957347214621],["icu_68::IslamicCalendar::moonAge(double, UErrorCode&)",93957347214960,93957347215192],["icu_68::IslamicCalendar::handleGetMonthLength(int, int) const",93957347215296,93957347215528],["icu_68::IslamicCalendar::handleComputeMonthStart(int, int, signed char) const",93957347216032,93957347216155],["icu_68::IslamicCalendar::defaultCenturyStart() const",93957347217488,93957347217546],["icu_68::IslamicCalendar::defaultCenturyStartYear() const",93957347217872,93957347217928],["icu_68::JapaneseCalendar::getDynamicClassID() const",93957347217952,93957347217965],["icu_68::init(UErrorCode&)",93957347218032,93957347218213],["icu_68::JapaneseCalendar::getType() const",93957347218320,93957347218333],["icu_68::JapaneseCalendar::getDefaultDayInMonth(int, int)",93957347218432,93957347218534],["icu_68::JapaneseCalendar::handleGetExtendedYear()",93957347218576,93957347218732],["icu_68::JapaneseCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347218864,93957347219000],["japanese_calendar_cleanup()",93957347219264,93957347219336],["icu_68::UCharsTrie::~UCharsTrie()",93957347219632,93957347219645],["icu_68::EraRules::getStartDate(int, int (&) [3], UErrorCode&) const",93957347220656,93957347220734],["icu_68::EraRules::getEraIndex(int, int, int, UErrorCode&) const",93957347220800,93957347221072],["icu_68::FormattedListData::~FormattedListData()",93957347221088,93957347221116],["icu_68::FormattedList::~FormattedList()",93957347221184,93957347221248],["icu_68::ListFormatter::initializeHash(UErrorCode&)",93957347221312,93957347221494],["icu_68::uprv_listformatter_cleanup()",93957347221584,93957347221643],["icu_68::ListFormatter::loadListFormatInternal(icu_68::Locale const&, char const*, UErrorCode&)",93957347222240,93957347222921],["icu_68::ListFormatter::ListPatternsSink::~ListPatternsSink()",93957347223008,93957347223091],["icu_68::ListFormatter::createInstance(icu_68::Locale const&, UListFormatterType, UListFormatterWidth, UErrorCode&)",93957347223296,93957347223443],["icu_68::ListFormatter::~ListFormatter()",93957347223552,93957347223645],["icu_68::ListFormatter::format(icu_68::UnicodeString const*, int, icu_68::UnicodeString&, int, int&, UErrorCode&) const",93957347223696,93957347224060],["icu_68::(anonymous namespace)::FormattedListBuilder::FormattedListBuilder(icu_68::UnicodeString const&, UErrorCode&)",93957347224784,93957347224955],["icu_68::ListFormatter::ListPatternsSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347225744,93957347226280],["icu_68::(anonymous namespace)::shouldChangeToE(icu_68::UnicodeString const&)",93957347228800,93957347229129],["icu_68::(anonymous namespace)::shouldChangeToVavDash(icu_68::UnicodeString const&)",93957347229472,93957347229528],["icu_68::(anonymous namespace)::ContextualHandler::~ContextualHandler()",93957347229632,93957347229725],["icu_68::(anonymous namespace)::ContextualHandler::getTwoPattern(icu_68::UnicodeString const&) const",93957347230000,93957347230045],["icu_68::(anonymous namespace)::PatternHandler::~PatternHandler()",93957347230096,93957347230147],["icu_68::(anonymous namespace)::PatternHandler::clone() const",93957347230224,93957347230306],["icu_68::ListFormatter::ListPatternsSink::handleValueForPattern(icu_68::ResourceValue&, icu_68::UnicodeString&, UErrorCode&)",93957347230528,93957347230841],["icu_68::MeasureUnit::getPercent()",93957347230864,93957347230901],["icu_68::MeasureUnit::MeasureUnit()",93957347230960,93957347230994],["icu_68::MeasureUnit::operator=(icu_68::MeasureUnit const&)",93957347231040,93957347231647],["icu_68::MeasureUnit::MeasureUnit(icu_68::MeasureUnitImpl&&)",93957347231696,93957347231914],["icu_68::MeasureUnitImpl::copy(UErrorCode&) const",93957347232240,93957347232493],["icu_68::MeasureUnit::clone() const",93957347232688,93957347232757],["icu_68::MeasureUnit::getType() const",93957347232928,93957347232965],["icu_68::MeasureUnit::getIdentifier() const",93957347233072,93957347233147],["icu_68::MeasureUnit::getAvailable(icu_68::MeasureUnit*, int, UErrorCode&)",93957347233360,93957347233544],["icu_68::MeasureUnit::getAvailable(char const*, icu_68::MeasureUnit*, int, UErrorCode&)",93957347233696,93957347234016],["icu_68::SingleUnitImpl* icu_68::MemoryPool<icu_68::SingleUnitImpl, 8>::create<icu_68::SingleUnitImpl const&>(icu_68::SingleUnitImpl const&)",93957347234752,93957347234958],["icu_68::Measure::Measure(icu_68::Formattable const&, icu_68::MeasureUnit*, UErrorCode&)",93957347234976,93957347235061],["icu_68::Measure::clone() const",93957347235184,93957347235313],["icu_68::Measure::~Measure()",93957347235392,93957347235457],["icu_68::number::impl::AffixUtils::escape(icu_68::UnicodeString const&)",93957347235776,93957347236210],["icu_68::number::impl::AffixUtils::nextToken(icu_68::number::impl::AffixTag, icu_68::UnicodeString const&, UErrorCode&)",93957347236800,93957347237457],["icu_68::number::impl::AffixUtils::containsType(icu_68::UnicodeString const&, icu_68::number::impl::AffixPatternType, UErrorCode&)",93957347237936,93957347238258],["icu_68::number::impl::AffixUtils::containsOnlySymbolsAndIgnorables(icu_68::UnicodeString const&, icu_68::UnicodeSet const&, UErrorCode&)",93957347238592,93957347238927],["icu_68::number::impl::DecimalQuantity::DecimalQuantity()",93957347239264,93957347239315],["icu_68::number::impl::DecimalQuantity::~DecimalQuantity()",93957347239392,93957347239452],["icu_68::number::impl::DecimalQuantity::operator=(icu_68::number::impl::DecimalQuantity const&)",93957347239504,93957347239762],["icu_68::number::impl::DecimalQuantity::clear()",93957347240000,93957347240089],["icu_68::number::impl::DecimalQuantity::setMinFraction(int)",93957347240128,93957347240139],["icu_68::number::impl::DecimalQuantity::getMagnitude() const",93957347240352,93957347240369],["icu_68::number::impl::DecimalQuantity::roundToIncrement(double, UNumberFormatRoundingMode, UErrorCode&)",93957347241120,93957347241362],["icu_68::number::impl::DecimalQuantity::roundToMagnitude(int, UNumberFormatRoundingMode, UErrorCode&)",93957347241600,93957347241615],["icu_68::number::impl::DecimalQuantity::toDecNum(icu_68::number::impl::DecNum&, UErrorCode&) const",93957347241840,93957347242203],["icu_68::number::impl::DecimalQuantity::negate()",93957347242368,93957347242378],["icu_68::number::impl::DecimalQuantity::getPluralOperand(icu_68::PluralOperand) const",93957347242496,93957347243368],["icu_68::number::impl::DecimalQuantity::toLong(bool) const",93957347243392,93957347243581],["icu_68::number::impl::DecimalQuantity::adjustExponent(int)",93957347243904,93957347243913],["icu_68::number::impl::DecimalQuantity::getUpperDisplayMagnitude() const",93957347243936,93957347243959],["icu_68::number::impl::DecimalQuantity::getDigit(int) const",93957347244000,93957347244058],["icu_68::number::impl::DecimalQuantity::isInfinite() const",93957347244144,93957347244157],["icu_68::number::impl::DecimalQuantity::setToInt(int)",93957347244176,93957347244431],["icu_68::number::impl::DecimalQuantity::setToLong(long)",93957347244864,93957347244996],["icu_68::number::impl::DecimalQuantity::readDecNumberToBcd(icu_68::number::impl::DecNum const&)",93957347245360,93957347245919],["icu_68::number::impl::DecimalQuantity::_setToDoubleFast(double)",93957347246128,93957347246421],["icu_68::number::impl::DecimalQuantity::readDoubleConversionToBcd(char const*, int, int)",93957347246656,93957347247587],["icu_68::number::impl::DecimalQuantity::fitsInLong(bool) const",93957347247904,93957347248139],["icu_68::number::impl::DecimalQuantity::truncate()",93957347248816,93957347248962],["icu_68::number::impl::DecimalQuantity::roundToMagnitude(int, UNumberFormatRoundingMode, bool, UErrorCode&)",93957347249008,93957347251720],["icu_68::number::impl::DecimalQuantity::roundToInfinity()",93957347252256,93957347252274],["icu_68::number::impl::DecimalQuantity::shiftLeft(int)",93957347252576,93957347252980],["icu_68::double_conversion::DoubleToStringConverter::DoubleToAscii(double, icu_68::double_conversion::DoubleToStringConverter::DtoaMode, int, char*, int, bool*, int*, int*)",93957347253488,93957347253704],["icu_68::double_conversion::GenerateCountedDigits(int, int*, icu_68::double_conversion::Bignum*, icu_68::double_conversion::Bignum*, icu_68::double_conversion::Vector<char>, int*)",93957347255504,93957347255749],["icu_68::double_conversion::Bignum::AssignUInt64(unsigned long)",93957347255792,93957347255854],["icu_68::double_conversion::Bignum::AssignDecimalString(icu_68::double_conversion::Vector<char const>)",93957347255920,93957347256630],["icu_68::double_conversion::Bignum::AddBignum(icu_68::double_conversion::Bignum const&)",93957347257920,93957347258809],["icu_68::double_conversion::Bignum::ShiftLeft(int)",93957347259536,93957347259891],["icu_68::double_conversion::Bignum::MultiplyByUInt64(unsigned long)",93957347260160,93957347260505],["icu_68::double_conversion::Bignum::AssignPowerUInt16(unsigned short, int)",93957347261808,93957347262992],["icu_68::double_conversion::Bignum::SubtractTimes(icu_68::double_conversion::Bignum const&, int)",93957347264064,93957347264367],["icu_68::double_conversion::Bignum::PlusCompare(icu_68::double_conversion::Bignum const&, icu_68::double_conversion::Bignum const&, icu_68::double_conversion::Bignum const&)",93957347264560,93957347264895],["icu_68::double_conversion::StringToDoubleConverter::StringToDouble(char const*, int, int*) const",93957347268016,93957347268034],["icu_68::double_conversion::StringToDoubleConverter::StringToDouble(unsigned short const*, int, int*) const",93957347271632,93957347271650],["bool icu_68::double_conversion::Advance<char const*>(char const**, unsigned short, int, char const*&)",93957347275248,93957347275442],["double icu_68::double_conversion::RadixStringToIeee<4, char const*>(char const**, char const*, bool, unsigned short, bool, bool, double, bool, bool*)",93957347276416,93957347278295],["icu_68::double_conversion::isWhitespace(int)",93957347279456,93957347279573],["bool icu_68::double_conversion::IsHexFloatString<unsigned short const*>(unsigned short const*, unsigned short const*, unsigned short, bool)",93957347279792,93957347280742],["icu_68::double_conversion::StrtodTrimmed(icu_68::double_conversion::Vector<char const>, int)",93957347282640,93957347282958],["icu_68::double_conversion::CompareBufferWithDiyFp(icu_68::double_conversion::Vector<char const>, int, icu_68::double_conversion::DiyFp)",93957347284480,93957347284709],["icu_68::double_conversion::Strtof(icu_68::double_conversion::Vector<char const>, int)",93957347284992,93957347285943],["icu_68::number::impl::DecimalFormatProperties::clear()",93957347286192,93957347286481],["icu_68::number::impl::DecimalFormatProperties::equalsDefaultExceptFastFormat() const",93957347287472,93957347287798],["icu_68::number::NumberFormatterSettings<icu_68::number::UnlocalizedNumberFormatter>::macros(icu_68::number::impl::MacroProps const&) &&",93957347288128,93957347288624],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::notation(icu_68::number::Notation const&) const &",93957347289120,93957347289435],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::perUnit(icu_68::MeasureUnit const&) const &",93957347289776,93957347290099],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::roundingMode(UNumberFormatRoundingMode) &&",93957347290432,93957347290726],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::integerWidth(icu_68::number::IntegerWidth const&) const &",93957347291056,93957347291371],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::unitWidth(UNumberUnitWidth) const &",93957347291712,93957347292020],["icu_68::number::NumberFormatterSettings<icu_68::number::LocalizedNumberFormatter>::scale(icu_68::number::Scale const&) &&",93957347292352,93957347292655],["icu_68::number::NumberFormatter::with()",93957347292960,93957347293207],["icu_68::number::UnlocalizedNumberFormatter::locale(icu_68::Locale const&) &&",93957347293664,93957347293688],["icu_68::number::LocalizedNumberFormatter::lnfCopyHelper(icu_68::number::LocalizedNumberFormatter const&, UErrorCode&)",93957347293984,93957347295191],["icu_68::number::LocalizedNumberFormatter::lnfMoveHelper(icu_68::number::LocalizedNumberFormatter&&)",93957347295456,93957347295734],["icu_68::number::impl::NumberFormatterImpl::~NumberFormatterImpl()",93957347295984,93957347296441],["icu_68::number::LocalizedNumberFormatter::~LocalizedNumberFormatter()",93957347296816,93957347297055],["icu_68::number::LocalizedNumberFormatter::formatImpl(icu_68::number::impl::UFormattedNumberData*, UErrorCode&) const",93957347297584,93957347297796],["icu_68::number::LocalizedNumberFormatter::formatDecimal(icu_68::StringPiece, UErrorCode&) const",93957347298128,93957347298445],["icu_68::number::LocalizedNumberFormatter::getAffixImpl(bool, bool, icu_68::UnicodeString&, UErrorCode&) const",93957347298768,93957347299348],["icu_68::number::impl::MicroProps::~MicroProps()",93957347299552,93957347299740],["icu_68::number::impl::MicroProps::operator=(icu_68::number::impl::MicroProps const&)",93957347299776,93957347300165],["icu_68::number::impl::NumberFormatterImpl::formatStatic(icu_68::number::impl::MacroProps const&, icu_68::number::impl::UFormattedNumberData*, UErrorCode&)",93957347300624,93957347301485],["icu_68::number::impl::NumberFormatterImpl::getPrefixSuffixStatic(icu_68::number::impl::MacroProps const&, icu_68::number::impl::Signum, icu_68::StandardPlural::Form, icu_68::FormattedStringBuilder&, UErrorCode&)",93957347301920,93957347302561],["icu_68::number::impl::NumberFormatterImpl::getPrefixSuffix(icu_68::number::impl::Signum, icu_68::StandardPlural::Form, icu_68::FormattedStringBuilder&, UErrorCode&) const",93957347303360,93957347303453],["icu_68::LocalPointer<icu_68::number::impl::UsagePrefsHandler const>::adoptInsteadAndCheckErrorCode(icu_68::number::impl::UsagePrefsHandler const*, UErrorCode&)",93957347307616,93957347307704],["icu_68::number::impl::NumberFormatterImpl::resolvePluralRules(icu_68::PluralRules const*, icu_68::Locale const&, UErrorCode&)",93957347307824,93957347307901],["icu_68::number::impl::LongNameHandler::LongNameHandler()",93957347308208,93957347308322],["icu_68::number::impl::NumberFormatterImpl::writeFractionDigits(icu_68::number::impl::MicroProps const&, icu_68::number::impl::DecimalQuantity&, icu_68::FormattedStringBuilder&, int, UErrorCode&)",93957347308720,93957347308945],["icu_68::number::impl::EmptyModifier::semanticallyEquivalent(icu_68::number::impl::Modifier const&) const",93957347308976,93957347308996],["icu_68::SingleUnitImpl::build(UErrorCode&) const",93957347309632,93957347310051],["icu_68::MeasureUnitImpl::build(UErrorCode&) &&",93957347310256,93957347310593],["icu_68::MeasureUnitImpl::MeasureUnitImpl(icu_68::MeasureUnitImpl const&, UErrorCode&)",93957347310640,93957347311024],["icu_68::(anonymous namespace)::Parser::parse(UErrorCode&)",93957347311296,93957347312755],["icu_68::MeasureUnitImpl::extractIndividualUnits(UErrorCode&) const",93957347313088,93957347313314],["icu_68::MeasureUnit::reciprocal(UErrorCode&) const",93957347313664,93957347313985],["icu_68::(anonymous namespace)::initUnitExtras(UErrorCode&)",93957347315120,93957347316627],["icu_68::(anonymous namespace)::SimpleUnitIdentifiersSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347316704,93957347317061],["icu_68::(anonymous namespace)::compareSingleUnits(void const*, void const*, void const*)",93957347317280,93957347317363],["icu_68::MeasureUnitImpl* icu_68::MemoryPool<icu_68::MeasureUnitImpl, 8>::create<icu_68::MeasureUnitImpl const&, UErrorCode&>(icu_68::MeasureUnitImpl const&, UErrorCode&)",93957347317920,93957347318151],["icu_68::number::impl::CompactData::populate(icu_68::Locale const&, char const*, UNumberCompactStyle, icu_68::number::impl::CompactType, UErrorCode&)",93957347318512,93957347319071],["icu_68::number::impl::CompactData::getMultiplier(int) const",93957347319296,93957347319332],["icu_68::number::impl::CompactHandler::CompactHandler(UNumberCompactStyle, icu_68::Locale const&, char const*, icu_68::number::impl::CompactType, icu_68::PluralRules const*, icu_68::number::impl::MutablePatternModifier*, bool, icu_68::number::impl::MicroPropsGenerator const*, UErrorCode&)",93957347320272,93957347320845],["icu_68::number::impl::CompactHandler::~CompactHandler()",93957347322144,93957347322354],["icu_68::number::impl::CompactHandler::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347322400,93957347323066],["icu_68::number::impl::Grouper::forProperties(icu_68::number::impl::DecimalFormatProperties const&)",93957347323136,93957347323230],["icu_68::number::impl::Grouper::groupAtPosition(int, icu_68::number::impl::DecimalQuantity const&) const",93957347323584,93957347323663],["icu_68::number::impl::Grouper::getSecondary() const",93957347323680,93957347323690],["icu_68::number::IntegerWidth::zeroFillTo(int)",93957347323728,93957347323765],["icu_68::number::IntegerWidth::apply(icu_68::number::impl::DecimalQuantity&, UErrorCode&) const",93957347323904,93957347324040],["icu_68::number::impl::LongNameHandler::forMeasureUnit(icu_68::Locale const&, icu_68::MeasureUnit const&, icu_68::MeasureUnit const&, UNumberUnitWidth const&, icu_68::PluralRules const*, icu_68::number::impl::MicroPropsGenerator const*, icu_68::number::impl::LongNameHandler*, UErrorCode&)",93957347324080,93957347324827],["(anonymous namespace)::getMeasureData(icu_68::Locale const&, icu_68::MeasureUnit const&, UNumberUnitWidth const&, icu_68::UnicodeString*, UErrorCode&)",93957347326720,93957347327710],["(anonymous namespace)::getWithPlural(icu_68::UnicodeString const*, icu_68::StandardPlural::Form, UErrorCode&)",93957347328304,93957347328410],["icu_68::number::impl::LongNameHandler::multiSimpleFormatsToModifiers(icu_68::UnicodeString const*, icu_68::UnicodeString, icu_68::FormattedStringBuilder::Field, UErrorCode&)",93957347328512,93957347329382],["icu_68::number::impl::LongNameHandler::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347330480,93957347330829],["non-virtual thunk to icu_68::number::impl::LongNameHandler::getModifier(icu_68::number::impl::Signum, icu_68::StandardPlural::Form) const",93957347330864,93957347330883],["icu_68::number::impl::MixedUnitLongNameHandler::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347331984,93957347332061],["icu_68::number::impl::LongNameMultiplexer::forMeasureUnits(icu_68::Locale const&, icu_68::MaybeStackVector<icu_68::MeasureUnit, 8> const&, UNumberUnitWidth const&, icu_68::PluralRules const*, icu_68::number::impl::MicroPropsGenerator const*, UErrorCode&)",93957347334448,93957347335328],["icu_68::number::impl::LongNameHandler::~LongNameHandler()",93957347335536,93957347335803],["non-virtual thunk to icu_68::number::impl::LongNameHandler::~LongNameHandler()",93957347335840,93957347336089],["icu_68::number::impl::MixedUnitLongNameHandler::~MixedUnitLongNameHandler()",93957347336368,93957347336519],["non-virtual thunk to icu_68::number::impl::MixedUnitLongNameHandler::~MixedUnitLongNameHandler()",93957347336704,93957347336855],["icu_68::number::impl::LongNameMultiplexer::~LongNameMultiplexer()",93957347337040,93957347337318],["(anonymous namespace)::PluralTableSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347337360,93957347337876],["icu_68::number::impl::LongNameHandler* icu_68::MemoryPool<icu_68::number::impl::LongNameHandler, 8>::create<>()",93957347338384,93957347338677],["icu_68::number::impl::NumberPropertyMapper::create(icu_68::number::impl::DecimalFormatProperties const&, icu_68::DecimalFormatSymbols const&, icu_68::number::impl::DecimalFormatWarehouse&, icu_68::number::impl::DecimalFormatProperties&, UErrorCode&)",93957347341552,93957347341857],["icu_68::number::impl::PropertiesAffixPatternProvider::charAt(int, int) const",93957347342848,93957347342961],["icu_68::number::impl::PropertiesAffixPatternProvider::getString(int) const",93957347343072,93957347343157],["icu_68::number::impl::PropertiesAffixPatternProvider::hasNegativeSubpattern() const",93957347343328,93957347343676],["icu_68::number::impl::PropertiesAffixPatternProvider::hasCurrencySign() const",93957347343856,93957347343868],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::setTo(icu_68::CurrencyPluralInfo const&, icu_68::number::impl::DecimalFormatProperties const&, UErrorCode&)",93957347344000,93957347344364],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::length(int) const",93957347344416,93957347344454],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::positiveHasPlusSign() const",93957347344512,93957347344534],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::negativeHasMinusSign() const",93957347344576,93957347344598],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::containsSymbolType(icu_68::number::impl::AffixPatternType, UErrorCode&) const",93957347344640,93957347344665],["icu_68::number::impl::PropertiesAffixPatternProvider::~PropertiesAffixPatternProvider()",93957347344704,93957347344779],["icu_68::number::impl::CurrencyPluralInfoAffixProvider::~CurrencyPluralInfoAffixProvider()",93957347344880,93957347344908],["icu_68::number::impl::CurrencySymbols::getIsoCode() const",93957347345216,93957347345226],["icu_68::number::impl::CurrencySymbols::getFormalCurrencySymbol(UErrorCode&) const",93957347345360,93957347345481],["icu_68::number::impl::CurrencySymbols::getCurrencySymbol(UErrorCode&) const",93957347345616,93957347345757],["icu_68::number::impl::CurrencySymbols::getPluralName(icu_68::StandardPlural::Form, UErrorCode&) const",93957347345824,93957347345964],["icu_68::number::impl::Modifier::Parameters::Parameters()",93957347346112,93957347346125],["icu_68::number::impl::AdoptingModifierStore::~AdoptingModifierStore()",93957347346144,93957347346211],["icu_68::number::impl::SimpleModifier::SimpleModifier(icu_68::SimpleFormatter const&, icu_68::FormattedStringBuilder::Field, bool)",93957347346304,93957347346317],["icu_68::number::impl::SimpleModifier::SimpleModifier()",93957347346768,93957347346840],["icu_68::number::impl::SimpleModifier::formatAsPrefixSuffix(icu_68::FormattedStringBuilder&, int, int, UErrorCode&) const",93957347346864,93957347347059],["icu_68::number::impl::SimpleModifier::getCodePointCount() const",93957347347088,93957347347163],["icu_68::number::impl::SimpleModifier::getParameters(icu_68::number::impl::Modifier::Parameters&) const",93957347347184,93957347347197],["icu_68::number::impl::ConstantMultiFieldModifier::apply(icu_68::FormattedStringBuilder&, int, int, UErrorCode&) const",93957347347408,93957347347632],["icu_68::number::impl::ConstantMultiFieldModifier::getCodePointCount() const",93957347347648,93957347347693],["icu_68::number::impl::ConstantMultiFieldModifier::containsField(icu_68::FormattedStringBuilder::Field) const",93957347347712,93957347347768],["icu_68::number::impl::ConstantMultiFieldModifier::semanticallyEquivalent(icu_68::number::impl::Modifier const&) const",93957347347792,93957347347965],["icu_68::number::impl::CurrencySpacingEnabledModifier::getUnicodeSet(icu_68::DecimalFormatSymbols const&, icu_68::number::impl::CurrencySpacingEnabledModifier::EPosition, icu_68::number::impl::CurrencySpacingEnabledModifier::EAffix, UErrorCode&)",93957347349024,93957347349651],["icu_68::number::impl::CurrencySpacingEnabledModifier::applyCurrencySpacing(icu_68::FormattedStringBuilder&, int, int, int, int, icu_68::DecimalFormatSymbols const&, UErrorCode&)",93957347350096,93957347350228],["icu_68::number::impl::ConstantMultiFieldModifier::~ConstantMultiFieldModifier()",93957347350976,93957347351025],["icu_68::number::impl::AdoptingModifierStore::getModifier(icu_68::number::impl::Signum, icu_68::StandardPlural::Form) const",93957347351104,93957347351141],["icu_68::number::impl::SimpleModifier::~SimpleModifier()",93957347351184,93957347351226],["icu_68::number::impl::CurrencySpacingEnabledModifier::~CurrencySpacingEnabledModifier()",93957347351344,93957347351456],["icu_68::number::Scale::Scale(int, icu_68::number::impl::DecNum*)",93957347351568,93957347351684],["icu_68::number::Scale::operator=(icu_68::number::Scale const&)",93957347351808,93957347351916],["icu_68::number::Scale::operator=(icu_68::number::Scale&&)",93957347351952,93957347352041],["icu_68::number::Scale::none()",93957347352112,93957347352142],["icu_68::number::Scale::byDouble(double)",93957347352176,93957347352345],["icu_68::number::Scale::applyReciprocalTo(icu_68::number::impl::DecimalQuantity&) const",93957347352544,93957347352610],["icu_68::number::impl::MultiplierFormatHandler::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347352752,93957347352827],["icu_68::number::impl::MultiplierFormatHandler::~MultiplierFormatHandler()",93957347352896,93957347352959],["icu_68::number::Notation::engineering()",93957347352992,93957347353019],["icu_68::number::Notation::compactShort()",93957347353072,93957347353108],["icu_68::number::Notation::simple()",93957347353168,93957347353195],["icu_68::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const",93957347353280,93957347353339],["icu_68::number::FormattedNumber::~FormattedNumber()",93957347353408,93957347353472],["icu_68::number::FormattedNumber::getDecimalQuantity(icu_68::number::impl::DecimalQuantity&, UErrorCode&) const",93957347353552,93957347353598],["icu_68::number::impl::UFormattedNumberData::~UFormattedNumberData()",93957347353664,93957347353729],["icu_68::number::impl::Padder::padAndApply(icu_68::number::impl::Modifier const&, icu_68::number::impl::Modifier const&, icu_68::FormattedStringBuilder&, int, int, UErrorCode&) const",93957347353856,93957347354399],["icu_68::number::impl::MutablePatternModifier::setPatternInfo(icu_68::number::impl::AffixPatternProvider const*, icu_68::FormattedStringBuilder::Field)",93957347354560,93957347354573],["icu_68::number::impl::MutablePatternModifier::setSymbols(icu_68::DecimalFormatSymbols const*, icu_68::CurrencyUnit const&, UNumberUnitWidth, icu_68::PluralRules const*, UErrorCode&)",93957347354592,93957347354922],["icu_68::number::impl::MutablePatternModifier::needsPlurals() const",93957347354960,93957347355000],["icu_68::number::impl::MutablePatternModifier::createConstantModifier(UErrorCode&)",93957347355712,93957347356339],["icu_68::number::impl::ImmutablePatternModifier::applyToMicros(icu_68::number::impl::MicroProps&, icu_68::number::impl::DecimalQuantity const&, UErrorCode&) const",93957347356448,93957347356822],["icu_68::number::impl::MutablePatternModifier::addToChain(icu_68::number::impl::MicroPropsGenerator const*)",93957347356880,93957347356896],["icu_68::number::impl::MutablePatternModifier::apply(icu_68::FormattedStringBuilder&, int, int, UErrorCode&) const",93957347357328,93957347357761],["icu_68::number::impl::MutablePatternModifier::getPrefixLength() const",93957347357792,93957347357893],["icu_68::number::impl::MutablePatternModifier::getCodePointCount() const",93957347358016,93957347358193],["icu_68::number::impl::MutablePatternModifier::isStrong() const",93957347358400,93957347358409],["non-virtual thunk to icu_68::number::impl::MutablePatternModifier::getSymbol(icu_68::number::impl::AffixPatternType) const",93957347358704,93957347358732],["icu_68::number::impl::MutablePatternModifier::~MutablePatternModifier()",93957347358880,93957347358908],["non-virtual thunk to icu_68::number::impl::MutablePatternModifier::~MutablePatternModifier()",93957347358928,93957347358963],["non-virtual thunk to icu_68::number::impl::MutablePatternModifier::~MutablePatternModifier()",93957347358992,93957347359027],["icu_68::number::impl::ImmutablePatternModifier::~ImmutablePatternModifier()",93957347359072,93957347359120],["icu_68::number::impl::ParsedPatternInfo::consumePattern(icu_68::UnicodeString const&, UErrorCode&)",93957347359152,93957347359476],["icu_68::number::impl::PatternParser::parseToExistingProperties(icu_68::UnicodeString const&, icu_68::number::impl::DecimalFormatProperties&, icu_68::number::impl::IgnoreRounding, UErrorCode&)",93957347360048,93957347360058],["icu_68::number::impl::ParsedPatternInfo::length(int) const",93957347360272,93957347360387],["icu_68::number::impl::ParsedPatternInfo::positiveHasPlusSign() const",93957347360576,93957347360588],["icu_68::number::impl::ParsedPatternInfo::negativeHasMinusSign() const",93957347360608,93957347360620],["icu_68::number::impl::ParsedPatternInfo::containsSymbolType(icu_68::number::impl::AffixPatternType, UErrorCode&) const",93957347360672,93957347360686],["icu_68::number::impl::ParsedPatternInfo::consumeSubpattern(UErrorCode&)",93957347360704,93957347360891],["icu_68::number::impl::ParsedPatternInfo::consumeAffix(icu_68::number::impl::Endpoints&, UErrorCode&)",93957347361136,93957347361395],["icu_68::number::impl::ParsedPatternInfo::consumeExponent(UErrorCode&)",93957347361600,93957347362033],["icu_68::number::impl::ParsedPatternInfo::consumeIntegerFormat(UErrorCode&)",93957347362544,93957347363145],["icu_68::number::impl::PatternParser::patternInfoToProperties(icu_68::number::impl::DecimalFormatProperties&, icu_68::number::impl::ParsedPatternInfo&, icu_68::number::impl::IgnoreRounding, UErrorCode&)",93957347363584,93957347364903],["icu_68::number::impl::PatternStringUtils::ignoreRoundingIncrement(double, int)",93957347364992,93957347365066],["icu_68::number::impl::AutoAffixPatternProvider::AutoAffixPatternProvider(icu_68::number::impl::DecimalFormatProperties const&, UErrorCode&)",93957347368752,93957347369411],["icu_68::number::impl::PatternStringUtils::convertLocalized(icu_68::UnicodeString const&, icu_68::DecimalFormatSymbols const&, bool, UErrorCode&)",93957347370048,93957347373907],["icu_68::number::impl::PatternStringUtils::resolveSignDisplay(UNumberSignDisplay, icu_68::number::impl::Signum)",93957347374320,93957347374410],["icu_68::number::impl::parseIncrementOption(icu_68::StringSegment const&, icu_68::number::Precision&, UErrorCode&)",93957347374496,93957347375748],["icu_68::number::Precision::unlimited()",93957347375920,93957347375942],["icu_68::number::Precision::constructFraction(int, int)",93957347376000,93957347376044],["icu_68::number::Precision::maxFraction(int)",93957347376128,93957347376197],["icu_68::number::Precision::constructSignificant(int, int)",93957347376288,93957347376332],["icu_68::number::Precision::minMaxSignificantDigits(int, int)",93957347376416,93957347376491],["icu_68::number::Precision::constructCurrency(UCurrencyUsage)",93957347376720,93957347376758],["icu_68::number::FractionPrecision::withMaxDigits(int) const",93957347376864,93957347376956],["icu_68::number::CurrencyPrecision::withCurrency(icu_68::CurrencyUnit const&) const",93957347377344,93957347377441],["icu_68::number::impl::RoundingImpl::passThrough()",93957347377536,93957347377559],["icu_68::number::impl::RoundingImpl::chooseMultiplierAndApply(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MultiplierProducer const&, UErrorCode&)",93957347377584,93957347377778],["(anonymous namespace)::getRoundingMagnitudeSignificant(icu_68::number::impl::DecimalQuantity const&, int)",93957347378304,93957347378358],["icu_68::number::impl::RoundingImpl::apply(icu_68::number::impl::DecimalQuantity&, int, UErrorCode)",93957347378416,93957347378438],["icu_68::number::impl::ScientificModifier::apply(icu_68::FormattedStringBuilder&, int, int, UErrorCode&) const",93957347378480,93957347378979],["icu_68::number::impl::ScientificModifier::semanticallyEquivalent(icu_68::number::impl::Modifier const&) const",93957347379008,93957347379078],["icu_68::number::impl::ScientificHandler::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347379136,93957347379405],["non-virtual thunk to icu_68::number::impl::ScientificHandler::getMultiplier(int) const",93957347379472,93957347379533],["icu_68::number::impl::ScientificHandler::~ScientificHandler()",93957347379552,93957347379584],["icu_68::number::impl::stem_to_object::notation(icu_68::number::impl::skeleton::StemEnum)",93957347379616,93957347379678],["icu_68::number::impl::stem_to_object::precision(icu_68::number::impl::skeleton::StemEnum)",93957347379760,93957347379869],["icu_68::number::impl::enum_to_stem_string::roundingMode(UNumberFormatRoundingMode, icu_68::UnicodeString&)",93957347379904,93957347380207],["icu_68::number::impl::enum_to_stem_string::unitWidth(UNumberUnitWidth, icu_68::UnicodeString&)",93957347380416,93957347380685],["icu_68::number::impl::skeleton::create(icu_68::UnicodeString const&, UParseError*, UErrorCode&)",93957347380960,93957347382064],["icu_68::number::impl::skeleton::parseSkeleton(icu_68::UnicodeString const&, int&, UErrorCode&)",93957347385616,93957347386596],["icu_68::number::impl::skeleton::parseStem(icu_68::StringSegment const&, icu_68::UCharsTrie const&, icu_68::number::impl::SeenMacroProps&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347387488,93957347388811],["icu_68::number::impl::blueprint_helpers::parseFractionStem(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347389264,93957347389602],["icu_68::number::impl::blueprint_helpers::parseScientificStem(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347389904,93957347390265],["icu_68::number::impl::blueprint_helpers::parseMeasureUnitOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347390512,93957347392384],["icu_68::number::impl::blueprint_helpers::parseUnitUsageOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347393536,93957347393895],["icu_68::number::impl::blueprint_helpers::parseNumberingSystemOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347394368,93957347394743],["icu_68::number::impl::blueprint_helpers::parseExponentWidthOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347395296,93957347395449],["icu_68::number::impl::blueprint_helpers::parseFracSigOption(icu_68::StringSegment const&, icu_68::number::impl::MacroProps&, UErrorCode&)",93957347395840,93957347396173],["icu_68::number::impl::GeneratorHelpers::unit(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347396576,93957347397375],["icu_68::number::impl::GeneratorHelpers::grouping(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347397936,93957347397979],["icu_68::number::impl::GeneratorHelpers::symbols(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347398272,93957347398542],["icu_68::number::impl::GeneratorHelpers::scale(icu_68::number::impl::MacroProps const&, icu_68::UnicodeString&, UErrorCode&)",93957347398624,93957347398739],["icu_68::number::impl::blueprint_helpers::generateFractionStem(int, int, icu_68::UnicodeString&, UErrorCode&)",93957347398848,93957347399034],["icu_68::number::impl::blueprint_helpers::generateScaleOption(int, icu_68::number::impl::DecNum const*, icu_68::UnicodeString&, UErrorCode&)",93957347399312,93957347399588],["icu_68::number::NumberFormatter::forSkeleton(icu_68::UnicodeString const&, UErrorCode&)",93957347399936,93957347399965],["icu_68::number::impl::SymbolsWrapper::SymbolsWrapper(icu_68::number::impl::SymbolsWrapper const&)",93957347400016,93957347400026],["icu_68::number::impl::SymbolsWrapper::SymbolsWrapper(icu_68::number::impl::SymbolsWrapper&&)",93957347400176,93957347400212],["icu_68::number::impl::SymbolsWrapper::operator=(icu_68::number::impl::SymbolsWrapper&&)",93957347400288,93957347400372],["icu_68::number::impl::SymbolsWrapper::setTo(icu_68::DecimalFormatSymbols const&)",93957347400432,93957347400530],["icu_68::number::impl::SymbolsWrapper::isDecimalFormatSymbols() const",93957347400608,93957347400620],["icu_68::number::impl::Usage::Usage(icu_68::number::impl::Usage const&)",93957347400640,93957347400753],["icu_68::number::impl::Usage::Usage(icu_68::number::impl::Usage&&)",93957347400896,93957347400929],["icu_68::number::impl::Usage::~Usage()",93957347401024,93957347401060],["mixedMeasuresToMicros(icu_68::MaybeStackVector<icu_68::Measure, 8> const&, icu_68::number::impl::DecimalQuantity*, icu_68::number::impl::MicroProps*, UErrorCode)",93957347401200,93957347401880],["icu_68::number::impl::UsagePrefsHandler::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347402080,93957347402725],["icu_68::number::impl::UnitConversionHandler::processQuantity(icu_68::number::impl::DecimalQuantity&, icu_68::number::impl::MicroProps&, UErrorCode&) const",93957347403824,93957347404082],["icu_68::number::impl::UsagePrefsHandler::~UsagePrefsHandler()",93957347404128,93957347404170],["icu_68::number::impl::UnitConversionHandler::~UnitConversionHandler()",93957347404240,93957347404306],["icu_68::units::ComplexUnitsConverter::~ComplexUnitsConverter()",93957347404656,93957347405057],["icu_68::number::impl::utils::getPatternForStyle(icu_68::Locale const&, char const*, icu_68::number::impl::CldrPatternStyle, UErrorCode&)",93957347405280,93957347405512],["icu_68::number::impl::DecNum::DecNum()",93957347405888,93957347405955],["icu_68::number::impl::DecNum::setTo(icu_68::StringPiece, UErrorCode&)",93957347406176,93957347406468],["icu_68::number::impl::DecNum::setTo(double, UErrorCode&)",93957347406656,93957347407009],["icu_68::number::impl::DecNum::normalize()",93957347407264,93957347407284],["icu_68::number::impl::DecNum::divideBy(icu_68::number::impl::DecNum const&, UErrorCode&)",93957347407360,93957347407415],["icu_68::number::impl::DecNum::isZero() const",93957347407440,93957347407471],["uprv_decContextSetStatus_68",93957347407584,93957347407596],["uprv_decNumberFromString_68",93957347407616,93957347408921],["decFinalize(decNumber*, decContext*, int*, unsigned int*)",93957347410528,93957347410854],["uprv_decNumberDivide_68",93957347411376,93957347411477],["decMultiplyOp(decNumber*, decNumber const*, decNumber const*, decContext*, unsigned int*)",93957347415120,93957347417764],["decCompare(decNumber const*, decNumber const*, unsigned char)",93957347419024,93957347419388],["decShiftToMost(unsigned char*, int, int)",93957347419488,93957347419871],["decTrim(decNumber*, decContext*, unsigned char, unsigned char, int*)",93957347420096,93957347420382],["uprv_decNumberSetBCD_68",93957347420992,93957347421453],["decUnitCompare(unsigned char const*, int, unsigned char const*, int, int)",93957347422000,93957347422434],["decSetOverflow(decNumber*, decContext*, unsigned int*)",93957347423168,93957347423438],["icu_68::NumberFormat::NumberFormat()",93957347423712,93957347423784],["icu_68::SharedNumberFormat::~SharedNumberFormat()",93957347423840,93957347423896],["icu_68::NumberFormat::operator=(icu_68::NumberFormat const&)",93957347424096,93957347424271],["icu_68::NumberFormat::format(double, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347424480,93957347424502],["icu_68::NumberFormat::format(int, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347424544,93957347424569],["icu_68::NumberFormat::format(icu_68::StringPiece, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347424608,93957347424819],["icu_68::NumberFormat::format(icu_68::number::impl::DecimalQuantity const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347424912,93957347424980],["icu_68::NumberFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347425488,93957347425974],["icu_68::NumberFormat::format(double, icu_68::UnicodeString&) const",93957347426016,93957347426152],["icu_68::NumberFormat::parseCurrency(icu_68::UnicodeString const&, icu_68::ParsePosition&) const",93957347426256,93957347426610],["icu_68::NumberFormat::setLenient(signed char)",93957347426640,93957347426653],["icu_68::NumberFormat::createInstance(icu_68::Locale const&, UNumberFormatStyle, UErrorCode&)",93957347426752,93957347426862],["icu_68::NumberFormat::createCurrencyInstance(icu_68::Locale const&, UErrorCode&)",93957347426960,93957347426978],["icu_68::NumberFormat::internalCreateInstance(icu_68::Locale const&, UNumberFormatStyle, UErrorCode&)",93957347427024,93957347427329],["icu_68::NumberFormat::isGroupingUsed() const",93957347427600,93957347427612],["icu_68::WholeStringBreakIterator::last()",93957347427632,93957347427644],["icu_68::NumberFormat::getMinimumIntegerDigits() const",93957347427712,93957347427724],["icu_68::NumberFormat::getMaximumFractionDigits() const",93957347427792,93957347427804],["icu_68::NumberFormat::getMinimumFractionDigits() const",93957347427872,93957347427884],["icu_68::NumberFormat::setCurrency(char16_t const*, UErrorCode&)",93957347427952,93957347428010],["icu_68::NumberFormat::setContext(UDisplayContext, UErrorCode&)",93957347428128,93957347428169],["icu_68::LocaleCacheKey<icu_68::SharedNumberFormat>::createObject(void const*, UErrorCode&) const",93957347428224,93957347428434],["icu_68::UnicodeString::setTo(char16_t const*, int)",93957347430720,93957347430790],["icu_68::compareUnicodeString(UElement, UElement)",93957347430944,93957347431051],["icu_68::ICUNumberFormatService::cloneInstance(icu_68::UObject*) const",93957347431088,93957347431102],["numfmt_cleanup()",93957347431344,93957347431432],["icu_68::LocaleCacheKey<icu_68::SharedNumberFormat>::~LocaleCacheKey()",93957347431680,93957347431722],["icu_68::LocaleCacheKey<icu_68::SharedNumberFormat>::hashCode() const",93957347431792,93957347431846],["icu_68::numparse::impl::AffixTokenMatcherWarehouse::operator=(icu_68::numparse::impl::AffixTokenMatcherWarehouse&&)",93957347431952,93957347432502],["icu_68::numparse::impl::AffixMatcherWarehouse::~AffixMatcherWarehouse()",93957347433104,93957347433492],["icu_68::numparse::impl::DecimalMatcher::~DecimalMatcher()",93957347433824,93957347433996],["icu_68::numparse::impl::NumberParserImpl::createParserFromProperties(icu_68::number::impl::DecimalFormatProperties const&, icu_68::DecimalFormatSymbols const&, bool, UErrorCode&)",93957347434176,93957347437887],["icu_68::numparse::impl::NumberParserImpl::~NumberParserImpl()",93957347439008,93957347439101],["icu_68::numparse::impl::NumberParserImpl::~NumberParserImpl()",93957347439584,93957347439678],["hashStringTrieNode(UElement)",93957347439840,93957347439849],["icu_68::numparse::impl::NumberParserImpl::parseLongestRecursive(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, int, UErrorCode&) const",93957347440272,93957347441155],["icu_68::numparse::impl::AffixPatternMatcher::~AffixPatternMatcher()",93957347441248,93957347441325],["icu_68::numparse::impl::DecimalMatcher::DecimalMatcher(icu_68::DecimalFormatSymbols const&, icu_68::number::impl::Grouper const&, int)",93957347441776,93957347442977],["icu_68::numparse::impl::DecimalMatcher::match(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, signed char, UErrorCode&) const",93957347443008,93957347445938],["icu_68::numparse::impl::DecimalMatcher::toString() const",93957347446352,93957347446383],["icu_68::numparse::impl::SeriesMatcher::match(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347446416,93957347447032],["icu_68::numparse::impl::SeriesMatcher::postProcess(icu_68::numparse::impl::ParsedNumber&) const",93957347447120,93957347447200],["icu_68::numparse::impl::ArraySeriesMatcher::ArraySeriesMatcher(icu_68::MaybeStackArray<icu_68::numparse::impl::NumberParseMatcher const*, 3>&, int)",93957347447248,93957347447351],["icu_68::numparse::impl::ArraySeriesMatcher::toString() const",93957347447392,93957347447423],["icu_68::numparse::impl::ArraySeriesMatcher::~ArraySeriesMatcher()",93957347447472,93957347447528],["icu_68::numparse::impl::AffixTokenMatcherWarehouse::currency(UErrorCode&)",93957347448352,93957347448695],["non-virtual thunk to icu_68::numparse::impl::AffixPatternMatcherBuilder::addMatcher(icu_68::numparse::impl::NumberParseMatcher&)",93957347448864,93957347449024],["icu_68::numparse::impl::CodePointMatcher* icu_68::MemoryPool<icu_68::numparse::impl::CodePointMatcher, 8>::create<int&>(int&)",93957347449440,93957347449649],["icu_68::numparse::impl::CodePointMatcher::smokeTest(icu_68::StringSegment const&) const",93957347449728,93957347449747],["icu_68::numparse::impl::AffixPatternMatcher::fromAffixPattern(icu_68::UnicodeString const&, icu_68::numparse::impl::AffixTokenMatcherWarehouse&, int, bool*, UErrorCode&)",93957347449792,93957347450128],["icu_68::numparse::impl::CompactUnicodeString<4>::CompactUnicodeString(icu_68::UnicodeString const&, UErrorCode&)",93957347450192,93957347450427],["icu_68::numparse::impl::AffixMatcherWarehouse::AffixMatcherWarehouse(icu_68::numparse::impl::AffixTokenMatcherWarehouse*)",93957347450720,93957347451172],["icu_68::numparse::impl::AffixMatcherWarehouse::createAffixMatchers(icu_68::number::impl::AffixPatternProvider const&, icu_68::numparse::impl::MutableMatcherCollection&, icu_68::numparse::impl::IgnorablesMatcher const&, int, UErrorCode&)",93957347451872,93957347454245],["icu_68::numparse::impl::AffixMatcher::match(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347455072,93957347455606],["icu_68::numparse::impl::AffixMatcher::postProcess(icu_68::numparse::impl::ParsedNumber&) const",93957347455696,93957347456272],["icu_68::numparse::impl::AffixPatternMatcherBuilder::~AffixPatternMatcherBuilder()",93957347456832,93957347456899],["non-virtual thunk to icu_68::numparse::impl::AffixPatternMatcherBuilder::~AffixPatternMatcherBuilder()",93957347456976,93957347457044],["icu_68::numparse::impl::CombinedCurrencyMatcher::match(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347457808,93957347458160],["icu_68::numparse::impl::CombinedCurrencyMatcher::toString() const",93957347459344,93957347459375],["icu_68::numparse::impl::ParsedNumber::ParsedNumber()",93957347459408,93957347459510],["icu_68::numparse::impl::ParsedNumber::postProcess()",93957347459552,93957347459576],["icu_68::numparse::impl::ParsedNumber::seenNumber() const",93957347459616,93957347459643],["icu_68::numparse::impl::ParsedNumber::isBetterThan(icu_68::numparse::impl::ParsedNumber const&)",93957347459824,93957347459839],["icu_68::numparse::impl::ScientificMatcher::match(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347460096,93957347460731],["icu_68::numparse::impl::ScientificMatcher::toString() const",93957347460768,93957347460799],["icu_68::numparse::impl::ScientificMatcher::~ScientificMatcher()",93957347460928,93957347461055],["icu_68::numparse::impl::SymbolMatcher::match(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&, UErrorCode&) const",93957347461072,93957347461275],["icu_68::numparse::impl::SymbolMatcher::toString() const",93957347461344,93957347461375],["icu_68::numparse::impl::IgnorablesMatcher::toString() const",93957347461568,93957347461599],["icu_68::numparse::impl::InfinityMatcher::isDisabled(icu_68::numparse::impl::ParsedNumber const&) const",93957347461728,93957347461740],["icu_68::numparse::impl::MinusSignMatcher::MinusSignMatcher(icu_68::DecimalFormatSymbols const&, bool)",93957347461776,93957347461908],["icu_68::numparse::impl::MinusSignMatcher::accept(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&) const",93957347461952,93957347461969],["icu_68::numparse::impl::NanMatcher::isDisabled(icu_68::numparse::impl::ParsedNumber const&) const",93957347462112,93957347462125],["icu_68::numparse::impl::PaddingMatcher::PaddingMatcher(icu_68::UnicodeString const&)",93957347462160,93957347462276],["icu_68::numparse::impl::PercentMatcher::isDisabled(icu_68::numparse::impl::ParsedNumber const&) const",93957347462416,93957347462429],["icu_68::numparse::impl::PermilleMatcher::PermilleMatcher(icu_68::DecimalFormatSymbols const&)",93957347462464,93957347462590],["icu_68::numparse::impl::PermilleMatcher::accept(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&) const",93957347462608,93957347462625],["icu_68::numparse::impl::PlusSignMatcher::accept(icu_68::StringSegment&, icu_68::numparse::impl::ParsedNumber&) const",93957347462784,93957347462797],["icu_68::numparse::impl::SymbolMatcher::~SymbolMatcher()",93957347462864,93957347462906],["icu_68::numparse::impl::RequireAffixValidator::toString() const",93957347462944,93957347462975],["icu_68::numparse::impl::RequireCurrencyValidator::toString() const",93957347463008,93957347463039],["icu_68::numparse::impl::RequireDecimalSeparatorValidator::postProcess(icu_68::numparse::impl::ParsedNumber&) const",93957347463072,93957347463105],["icu_68::numparse::impl::RequireNumberValidator::postProcess(icu_68::numparse::impl::ParsedNumber&) const",93957347463152,93957347463184],["icu_68::numparse::impl::MultiplierParseHandler::MultiplierParseHandler(icu_68::number::Scale)",93957347463216,93957347463240],["icu_68::numparse::impl::MultiplierParseHandler::toString() const",93957347463280,93957347463311],["icu_68::numparse::impl::MultiplierParseHandler::~MultiplierParseHandler()",93957347463360,93957347463410],["icu_68::NumberingSystem::NumberingSystem(icu_68::NumberingSystem const&)",93957347463440,93957347463518],["icu_68::NumberingSystem::createInstance(icu_68::Locale const&, UErrorCode&)",93957347463920,93957347464929],["icu_68::NumberingSystem::~NumberingSystem()",93957347465456,93957347465498],["icu_68::TimeZoneRule::getRawOffset() const",93957347465568,93957347465577],["icu_68::OlsonTimeZone::getDynamicClassID() const",93957347465600,93957347465613],["icu_68::OlsonTimeZone::~OlsonTimeZone()",93957347467360,93957347467416],["icu_68::OlsonTimeZone::~OlsonTimeZone()",93957347467696,93957347467760],["icu_68::OlsonTimeZone::clone() const",93957347467872,93957347468173],["icu_68::OlsonTimeZone::getOffset(unsigned char, int, int, int, unsigned char, int, int, UErrorCode&) const",93957347468336,93957347468603],["icu_68::OlsonTimeZone::getOffset(double, signed char, int&, int&, UErrorCode&) const",93957347469472,93957347469559],["icu_68::OlsonTimeZone::getRawOffset() const",93957347469664,93957347469743],["icu_68::OlsonTimeZone::useDaylightTime() const",93957347469856,93957347470348],["icu_68::OlsonTimeZone::inDaylightTime(double, UErrorCode&) const",93957347470400,93957347470454],["arrayEqual(void const*, void const*, int)",93957347470896,93957347470965],["icu_68::OlsonTimeZone::getNextTransition(double, signed char, icu_68::TimeZoneTransition&) const",93957347472976,93957347474117],["icu_68::OlsonTimeZone::countTransitionRules(UErrorCode&) const",93957347475232,93957347475547],["icu_68::BasicTimeZone::BasicTimeZone(icu_68::UnicodeString const&)",93957347475920,93957347475951],["icu_68::BasicTimeZone::~BasicTimeZone()",93957347475984,93957347475994],["icu_68::BasicTimeZone::getSimpleRulesNear(double, icu_68::InitialTimeZoneRule*&, icu_68::AnnualTimeZoneRule*&, icu_68::AnnualTimeZoneRule*&, UErrorCode&) const",93957347477280,93957347480013],["icu_68::DateTimeRule::getDynamicClassID() const",93957347480048,93957347480061],["icu_68::DateTimeRule::DateTimeRule(int, int, int, int, icu_68::DateTimeRule::TimeRuleType)",93957347480112,93957347480159],["icu_68::DateTimeRule::DateTimeRule(icu_68::DateTimeRule const&)",93957347480224,93957347480282],["icu_68::DateTimeRule::getRuleDayOfMonth() const",93957347480400,93957347480409],["icu_68::PersianCalendar::clone() const",93957347480432,93957347480493],["icu_68::PersianCalendar::handleGetLimit(UCalendarDateFields, icu_68::Calendar::ELimitType) const",93957347480576,93957347480603],["icu_68::PersianCalendar::handleGetYearLength(int) const",93957347480736,93957347480800],["icu_68::PersianCalendar::handleComputeFields(int, UErrorCode&)",93957347480912,93957347481180],["icu_68::initializeSystemDefaultCentury()",93957347481248,93957347481560],["icu_68::PersianCalendar::getDynamicClassID() const",93957347481632,93957347481645],["icu_68::PluralKeywordEnumeration::getDynamicClassID() const",93957347481664,93957347481677],["icu_68::PluralRules::operator=(icu_68::PluralRules const&)",93957347481728,93957347482046],["icu_68::PluralRules::~PluralRules()",93957347482128,93957347482215],["icu_68::SharedPluralRules::~SharedPluralRules()",93957347482272,93957347482328],["icu_68::PluralRules::getAvailableLocales(UErrorCode&)",93957347482432,93957347482638],["icu_68::LocaleCacheKey<icu_68::SharedPluralRules>::createObject(void const*, UErrorCode&) const",93957347485584,93957347485839],["icu_68::PluralRules::createSharedInstance(icu_68::Locale const&, UPluralType, UErrorCode&)",93957347486464,93957347486707],["icu_68::PluralRules::forLocale(icu_68::Locale const&, UPluralType, UErrorCode&)",93957347486736,93957347486927],["icu_68::PluralRules::select(icu_68::IFixedDecimal const&) const",93957347488464,93957347488546],["icu_68::PluralRules::select(icu_68::number::FormattedNumber const&, UErrorCode&) const",93957347488704,93957347489019],["icu_68::PluralRules::getKeywords(UErrorCode&) const",93957347489248,93957347489372],["icu_68::PluralRules::operator==(icu_68::PluralRules const&) const",93957347489632,93957347490061],["icu_68::PluralRuleParser::checkSyntax(UErrorCode&)",93957347491008,93957347491276],["icu_68::AndConstraint::~AndConstraint()",93957347491600,93957347491672],["icu_68::AndConstraint::isFulfilled(icu_68::IFixedDecimal const&)",93957347491760,93957347492071],["icu_68::OrConstraint::~OrConstraint()",93957347492288,93957347492360],["icu_68::RuleChain::RuleChain(icu_68::RuleChain const&)",93957347492448,93957347492734],["icu_68::RuleChain::~RuleChain()",93957347492832,93957347492925],["icu_68::PluralRuleParser::~PluralRuleParser()",93957347492960,93957347493002],["icu_68::PluralKeywordEnumeration::PluralKeywordEnumeration(icu_68::RuleChain*, UErrorCode&)",93957347493952,93957347494343],["icu_68::FormatNameEnumeration::reset(UErrorCode&)",93957347494400,93957347494413],["icu_68::PluralKeywordEnumeration::~PluralKeywordEnumeration()",93957347494432,93957347494474],["icu_68::FixedDecimal::init(double)",93957347494544,93957347495476],["non-virtual thunk to icu_68::FixedDecimal::~FixedDecimal()",93957347495520,93957347495549],["non-virtual thunk to icu_68::FixedDecimal::~FixedDecimal()",93957347495600,93957347495637],["icu_68::FixedDecimal::isNaN() const",93957347495728,93957347495741],["icu_68::FixedDecimal::hasIntegerValue() const",93957347495760,93957347495773],["icu_68::PluralAvailableLocalesEnumeration::~PluralAvailableLocalesEnumeration()",93957347495840,93957347495909],["icu_68::PluralAvailableLocalesEnumeration::reset(UErrorCode&)",93957347496048,93957347496080],["icu_68::LocaleCacheKey<icu_68::SharedPluralRules>::~LocaleCacheKey()",93957347496112,93957347496154],["icu_68::LocaleCacheKey<icu_68::SharedPluralRules>::hashCode() const",93957347496224,93957347496278],["icu_68::StandardPluralRanges::forLocale(icu_68::Locale const&, UErrorCode&)",93957347496384,93957347496832],["icu_68::StandardPluralRanges::toPointer(UErrorCode&) &&",93957347497024,93957347497193],["icu_68::RuleBasedNumberFormat::getDynamicClassID() const",93957347498112,93957347498125],["icu_68::RuleBasedNumberFormat::RuleBasedNumberFormat(icu_68::URBNFRuleSetTag, icu_68::Locale const&, UErrorCode&)",93957347500864,93957347501741],["icu_68::RuleBasedNumberFormat::dispose()",93957347502144,93957347502569],["icu_68::RuleBasedNumberFormat::~RuleBasedNumberFormat()",93957347502592,93957347502654],["icu_68::RuleBasedNumberFormat::clone() const",93957347502736,93957347502963],["icu_68::RuleBasedNumberFormat::getRules() const",93957347503248,93957347503356],["icu_68::RuleBasedNumberFormat::getNumberOfRuleSetNames() const",93957347503696,93957347503784],["icu_68::RuleBasedNumberFormat::getRuleSetDisplayNameLocale(int, UErrorCode&) const",93957347503824,93957347504555],["icu_68::RuleBasedNumberFormat::getRuleSetDisplayName(icu_68::UnicodeString const&, icu_68::Locale const&)",93957347505264,93957347505518],["icu_68::RuleBasedNumberFormat::format(icu_68::number::impl::DecimalQuantity const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347505728,93957347506271],["icu_68::RuleBasedNumberFormat::format(long, icu_68::NFRuleSet*, icu_68::UnicodeString&, UErrorCode&) const",93957347506336,93957347506790],["icu_68::RuleBasedNumberFormat::format(double, icu_68::NFRuleSet&, icu_68::UnicodeString&, UErrorCode&) const",93957347506864,93957347507258],["icu_68::RuleBasedNumberFormat::format(long, icu_68::UnicodeString const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347507296,93957347507621],["icu_68::RuleBasedNumberFormat::format(double, icu_68::UnicodeString const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347507712,93957347508038],["icu_68::RuleBasedNumberFormat::parse(icu_68::UnicodeString const&, icu_68::Formattable&, icu_68::ParsePosition&) const",93957347508272,93957347509121],["icu_68::RuleBasedNumberFormat::setDefaultRuleSet(icu_68::UnicodeString const&, UErrorCode&)",93957347509200,93957347509910],["icu_68::RuleBasedNumberFormat::getDefaultRuleSetName() const",93957347510816,93957347510922],["icu_68::RuleBasedNumberFormat::initializeDefaultNaNRule(UErrorCode&)",93957347511296,93957347511663],["icu_68::RuleBasedNumberFormat::setContext(UDisplayContext, UErrorCode&)",93957347512176,93957347512378],["icu_68::RuleBasedNumberFormat::getCollator() const",93957347512704,93957347513129],["icu_68::RuleBasedNumberFormat::getDefaultNaNRule() const",93957347513152,93957347513165],["icu_68::RuleBasedNumberFormat::setDecimalFormatSymbols(icu_68::DecimalFormatSymbols const&)",93957347513472,93957347513549],["icu_68::RuleBasedNumberFormat::getRoundingMode() const",93957347513664,93957347513676],["icu_68::RuleBasedNumberFormat::isLenient() const",93957347513696,93957347513708],["icu_68::PluralFormat::PluralFormat(icu_68::Locale const&, UPluralType, icu_68::UnicodeString const&, UErrorCode&)",93957347513728,93957347513956],["icu_68::PluralFormat::~PluralFormat()",93957347514192,93957347514299],["icu_68::PluralFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347514432,93957347514546],["icu_68::PluralFormat::format(int, UErrorCode&) const",93957347515696,93957347515981],["icu_68::PluralFormat::clone() const",93957347517216,93957347517267],["icu_68::PluralFormat::parseObject(icu_68::UnicodeString const&, icu_68::Formattable&, icu_68::ParsePosition&) const",93957347517472,93957347517484],["icu_68::PluralFormat::PluralSelectorAdapter::~PluralSelectorAdapter()",93957347518640,93957347518672],["icu_68::PluralFormat::PluralSelectorAdapter::select(void*, double, UErrorCode&) const",93957347518720,93957347518748],["icu_68::NFRule::parseRuleDescriptor(icu_68::UnicodeString&, UErrorCode&)",93957347518864,93957347520598],["icu_68::NFRule::makeRules(icu_68::UnicodeString&, icu_68::NFRuleSet*, icu_68::NFRule const*, icu_68::RuleBasedNumberFormat const*, icu_68::NFRuleList&, UErrorCode&)",93957347520720,93957347521914],["icu_68::NFRuleList::add(icu_68::NFRule*)",93957347522816,93957347522899],["icu_68::NFRule::extractSubstitution(icu_68::NFRuleSet const*, icu_68::NFRule const*, UErrorCode&)",93957347523120,93957347523772],["icu_68::NFRule::_appendRuleText(icu_68::UnicodeString&) const",93957347524016,93957347525511],["icu_68::NFRule::doFormat(long, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347525552,93957347526347],["icu_68::NFRule::shouldRollBack(long) const",93957347527216,93957347527360],["icu_68::NFRule::matchToDelimiter(icu_68::UnicodeString const&, int, double, icu_68::UnicodeString const&, icu_68::ParsePosition&, icu_68::NFSubstitution const*, unsigned int, double) const",93957347529152,93957347530223],["icu_68::NFRule::allIgnorable(icu_68::UnicodeString const&, UErrorCode&) const",93957347530960,93957347531190],["icu_68::NFRule::findTextLenient(icu_68::UnicodeString const&, icu_68::UnicodeString const&, int, int*) const",93957347532624,93957347532965],["icu_68::NFRuleSet::NFRuleSet(icu_68::RuleBasedNumberFormat*, icu_68::UnicodeString*, int, UErrorCode&)",93957347533056,93957347534018],["icu_68::NFRuleList::deleteAll()",93957347534624,93957347534802],["icu_68::NFRuleSet::setBestFractionRule(int, icu_68::NFRule*, signed char)",93957347535024,93957347535308],["icu_68::NFRuleSet::operator==(icu_68::NFRuleSet const&) const",93957347535616,93957347536082],["icu_68::NFRuleSet::format(long, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347536624,93957347536733],["icu_68::NFRuleSet::format(double, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347536992,93957347537099],["icu_68::NFRuleSet::findFractionRuleSetRule(double) const",93957347537376,93957347538216],["icu_68::NFRuleSet::parse(icu_68::UnicodeString const&, icu_68::ParsePosition&, double, unsigned int, icu_68::Formattable&) const",93957347538384,93957347539460],["icu_68::util64_pow(unsigned int, unsigned short)",93957347539888,93957347539956],["icu_68::NFSubstitution::~NFSubstitution()",93957347540272,93957347540328],["icu_68::NFSubstitution::makeSubstitution(int, icu_68::NFRule const*, icu_68::NFRule const*, icu_68::NFRuleSet const*, icu_68::RuleBasedNumberFormat const*, icu_68::UnicodeString const&, UErrorCode&)",93957347540400,93957347541086],["icu_68::MultiplierSubstitution::MultiplierSubstitution(int, icu_68::NFRule const*, icu_68::NFRuleSet const*, icu_68::UnicodeString const&, UErrorCode&)",93957347541440,93957347541518],["icu_68::NFSubstitution::setDecimalFormatSymbols(icu_68::DecimalFormatSymbols const&, UErrorCode&)",93957347542160,93957347542188],["icu_68::NFSubstitution::operator==(icu_68::NFSubstitution const&) const",93957347542208,93957347542319],["icu_68::NFSubstitution::doSubstitution(long, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347542608,93957347543074],["icu_68::NFSubstitution::doParse(icu_68::UnicodeString const&, icu_68::ParsePosition&, double, double, signed char, unsigned int, icu_68::Formattable&) const",93957347543504,93957347543782],["icu_68::MultiplierSubstitution::getDynamicClassID() const",93957347543808,93957347543821],["icu_68::ModulusSubstitution::ModulusSubstitution(int, icu_68::NFRule const*, icu_68::NFRule const*, icu_68::NFRuleSet const*, icu_68::UnicodeString const&, UErrorCode&)",93957347543968,93957347544130],["icu_68::ModulusSubstitution::operator==(icu_68::NFSubstitution const&) const",93957347544160,93957347544312],["icu_68::ModulusSubstitution::doSubstitution(double, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347544448,93957347544566],["icu_68::ModulusSubstitution::toString(icu_68::UnicodeString&) const",93957347544720,93957347544897],["icu_68::FractionalPartSubstitution::FractionalPartSubstitution(int, icu_68::NFRuleSet const*, icu_68::UnicodeString const&, UErrorCode&)",93957347544928,93957347545199],["icu_68::FractionalPartSubstitution::doParse(icu_68::UnicodeString const&, icu_68::ParsePosition&, double, double, signed char, unsigned int, icu_68::Formattable&) const",93957347545600,93957347546678],["icu_68::FractionalPartSubstitution::getDynamicClassID() const",93957347546832,93957347546845],["icu_68::NumeratorSubstitution::doSubstitution(double, icu_68::UnicodeString&, int, int, UErrorCode&) const",93957347546864,93957347547507],["icu_68::NumeratorSubstitution::operator==(icu_68::NFSubstitution const&) const",93957347548496,93957347548645],["icu_68::SameValueSubstitution::tokenChar() const",93957347548672,93957347548682],["icu_68::MultiplierSubstitution::transformNumber(long) const",93957347548736,93957347548772],["icu_68::MultiplierSubstitution::composeRuleValue(double, double) const",93957347548816,93957347548832],["icu_68::NumeratorSubstitution::tokenChar() const",93957347548848,93957347548858],["icu_68::ModulusSubstitution::transformNumber(double) const",93957347548912,93957347548928],["icu_68::ModulusSubstitution::tokenChar() const",93957347548992,93957347549002],["icu_68::IntegralPartSubstitution::composeRuleValue(double, double) const",93957347549024,93957347549034],["icu_68::FractionalPartSubstitution::transformNumber(double) const",93957347549056,93957347549093],["icu_68::AbsoluteValueSubstitution::transformNumber(double) const",93957347549120,93957347549130],["icu_68::NumeratorSubstitution::transformNumber(long) const",93957347549152,93957347549166],["icu_68::NumeratorSubstitution::composeRuleValue(double, double) const",93957347549184,93957347549194],["icu_68::CollationElementIterator::~CollationElementIterator()",93957347549216,93957347549288],["icu_68::CollationElementIterator::getOffset() const",93957347549376,93957347549454],["icu_68::CollationIterator::nextCE(UErrorCode&)",93957347549664,93957347550240],["icu_68::CollationElementIterator::CollationElementIterator(icu_68::UnicodeString const&, icu_68::RuleBasedCollator const*, UErrorCode&)",93957347550848,93957347550923],["icu_68::CollationElementIterator::computeMaxExpansions(icu_68::CollationData const*, UErrorCode&)",93957347551072,93957347551423],["icu_68::CollationIterator::CEBuffer::ensureAppendCapacity(int, UErrorCode&)",93957347551744,93957347551953],["icu_68::CollationIterator::operator==(icu_68::CollationIterator const&) const",93957347552064,93957347552219],["icu_68::CollationIterator::fetchCEs(UErrorCode&)",93957347552304,93957347552381],["icu_68::CollationIterator::getDataCE32(int) const",93957347552560,93957347552705],["icu_68::CollationIterator::nextCEFromCE32(icu_68::CollationData const*, int, unsigned int, UErrorCode&)",93957347552752,93957347552823],["icu_68::CollationIterator::getCE32FromPrefix(icu_68::CollationData const*, unsigned int, UErrorCode&)",93957347557168,93957347557530],["icu_68::CollationIterator::appendNumericCEs(unsigned int, signed char, UErrorCode&)",93957347559072,93957347560309],["icu_68::CollationIterator::appendNumericSegmentCEs(char const*, int, UErrorCode&)",93957347562752,93957347564636],["icu_68::UVector32::addElement(int, UErrorCode&)",93957347564896,93957347564960],["icu_68::enumTailoredRange(void const*, int, int, unsigned int)",93957347565024,93957347565046],["icu_68::TailoredSet::compare(int, unsigned int, unsigned int)",93957347565488,93957347566658],["icu_68::TailoredSet::addPrefixes(icu_68::CollationData const*, int, char16_t const*)",93957347567536,93957347567802],["icu_68::TailoredSet::addContractions(int, char16_t const*)",93957347568800,93957347569149],["icu_68::TailoredSet::addPrefix(icu_68::CollationData const*, icu_68::UnicodeString const&, int, unsigned int)",93957347569360,93957347569605],["icu_68::enumCnERange(void const*, int, int, unsigned int)",93957347569760,93957347570020],["icu_68::ContractionsAndExpansions::handlePrefixes(int, int, unsigned int)",93957347571104,93957347571559],["icu_68::ContractionsAndExpansions::addStrings(int, int, icu_68::UnicodeSet*)",93957347571968,93957347572339],["icu_68::RuleBasedCollator::internalBuildTailoring(icu_68::UnicodeString const&, int, UColAttributeValue, UParseError*, icu_68::UnicodeString*, UErrorCode&)",93957347572496,93957347573027],["icu_68::CollationBuilder::CollationBuilder(icu_68::CollationTailoring const*, UErrorCode&)",93957347573760,93957347574058],["icu_68::CollationBuilder::~CollationBuilder()",93957347574160,93957347574249],["icu_68::CollationBuilder::closeOverComposites(UErrorCode&)",93957347575968,93957347576918],["icu_68::CollationBuilder::addReset(int, icu_68::UnicodeString const&, char const*&, UErrorCode&)",93957347577136,93957347578350],["icu_68::CollationBuilder::findOrInsertNodeForCEs(int, char const*&, UErrorCode&)",93957347580528,93957347580936],["icu_68::CollationBuilder::findCommonNode(int, int) const",93957347581296,93957347581484],["icu_68::CollationBuilder::insertNodeBetween(int, int, long, UErrorCode&)",93957347581712,93957347582053],["icu_68::CollationBuilder::addRelation(int, icu_68::UnicodeString const&, icu_68::UnicodeString const&, icu_68::UnicodeString const&, char const*&, UErrorCode&)",93957347582704,93957347584169],["icu_68::CollationBuilder::setCaseBits(icu_68::UnicodeString const&, char const*&, UErrorCode&)",93957347584624,93957347585608],["icu_68::CollationBuilder::addIfDifferent(icu_68::UnicodeString const&, icu_68::UnicodeString const&, long const*, int, unsigned int, UErrorCode&)",93957347585728,93957347586052],["icu_68::CollationBuilder::suppressContractions(icu_68::UnicodeSet const&, char const*&, UErrorCode&)",93957347586464,93957347586514],["icu_68::CollationBuilder::addOnlyClosure(icu_68::UnicodeString const&, icu_68::UnicodeString const&, long const*, int, unsigned int, UErrorCode&)",93957347586560,93957347589055],["icu_68::CollationBuilder::mergeCompositeIntoString(icu_68::UnicodeString const&, int, int, icu_68::UnicodeString const&, icu_68::UnicodeString&, icu_68::UnicodeString&, UErrorCode&) const",93957347590352,93957347591072],["icu_68::CEFinalizer::modifyCE(long) const",93957347591168,93957347591266],["icu_68::CollationWeights::CollationWeights()",93957347591312,93957347591343],["icu_68::CollationWeights::initForSecondary()",93957347591440,93957347591474],["icu_68::CollationWeights::getWeightRanges(unsigned int, unsigned int)",93957347591536,93957347592939],["icu_68::CollationWeights::allocWeightsInMinLengthRanges(int, int)",93957347592976,93957347593947],["icu_68::CollationWeights::nextWeight()",93957347594384,93957347594675],["icu_68::CollationRuleParser::parse(icu_68::UnicodeString const&, icu_68::CollationSettings&, UParseError*, UErrorCode&)",93957347594768,93957347594847],["icu_68::CollationRuleParser::parseRuleChain(UErrorCode&)",93957347595360,93957347595883],["icu_68::CollationRuleParser::parseResetAndPosition(UErrorCode&)",93957347600880,93957347601908],["icu_68::CollationRuleParser::parseRelationStrings(int, int, UErrorCode&)",93957347602720,93957347603388],["icu_68::CollationRuleParser::skipWhiteSpace(int) const",93957347604752,93957347604865],["icu_68::CollationRuleParser::parseTailoringString(int, icu_68::UnicodeString&, UErrorCode&)",93957347605776,93957347606095],["icu_68::CollationRuleParser::parseString(int, icu_68::UnicodeString&, UErrorCode&)",93957347606432,93957347607497],["icu_68::UnicodeString::setTo(char16_t)",93957347608224,93957347608289],["icu_68::CollationRuleParser::getOnOffValue(icu_68::UnicodeString const&)",93957347608992,93957347609349],["icu_68::CollationRuleParser::getReorderCode(char const*)",93957347609952,93957347610141],["icu_68::UTF8CollationIterator::~UTF8CollationIterator()",93957347610192,93957347610202],["icu_68::DataBuilderCollationIterator::fetchCEs(icu_68::UnicodeString const&, int, long*, int)",93957347610240,93957347610844],["icu_68::DataBuilderCollationIterator::resetToOffset(int)",93957347610992,93957347611022],["icu_68::DataBuilderCollationIterator::nextCodePoint(UErrorCode&)",93957347611040,93957347611123],["icu_68::DataBuilderCollationIterator::forwardNumCodePoints(int, UErrorCode&)",93957347611216,93957347611258],["icu_68::DataBuilderCollationIterator::getDataCE32(int) const",93957347611312,93957347611333],["icu_68::CollationDataBuilder::buildContext(icu_68::ConditionalCE32*, UErrorCode&)",93957347611584,93957347613438],["icu_68::CollationDataBuilder::CollationDataBuilder(UErrorCode&)",93957347613616,93957347613857],["icu_68::CollationDataBuilder::~CollationDataBuilder()",93957347614016,93957347614044],["icu_68::CollationDataBuilder::isCompressibleLeadByte(unsigned int) const",93957347614272,93957347614291],["icu_68::CollationDataBuilder::addCE32(icu_68::UnicodeString const&, icu_68::UnicodeString const&, unsigned int, UErrorCode&)",93957347614480,93957347615853],["icu_68::CollationDataBuilder::encodeOneCE(long, UErrorCode&)",93957347617408,93957347617670],["icu_68::CollationDataBuilder::encodeExpansion32(int const*, int, UErrorCode&)",93957347618144,93957347618561],["icu_68::CollationDataBuilder::copyContractionsFromBaseCE32(icu_68::UnicodeString&, int, unsigned int, icu_68::ConditionalCE32*, UErrorCode&)",93957347619040,93957347620145],["icu_68::enumRangeForCopy(void const*, int, int, unsigned int)",93957347620464,93957347620606],["icu_68::CollationDataBuilder::suppressContractions(icu_68::UnicodeSet const&, UErrorCode&)",93957347621024,93957347621579],["icu_68::CollationDataBuilder::setDigitTags(UErrorCode&)",93957347622176,93957347622779],["icu_68::CollationDataBuilder::build(icu_68::CollationData&, UErrorCode&)",93957347622848,93957347622970],["icu_68::CollationDataBuilder::buildFastLatinTable(icu_68::CollationData&, UErrorCode&)",93957347623920,93957347624257],["icu_68::CollationDataBuilder::addContextTrie(unsigned int, icu_68::UCharsTrieBuilder&, UErrorCode&)",93957347624528,93957347625031],["icu_68::CollationDataBuilder::getCEs(icu_68::UnicodeString const&, int, long*, int)",93957347625072,93957347625530],["icu_68::CopyHelper::copyCE32(unsigned int)",93957347625712,93957347627674],["icu_68::CollationFastLatinBuilder::~CollationFastLatinBuilder()",93957347627808,93957347627889],["icu_68::CollationFastLatinBuilder::forData(icu_68::CollationData const&, UErrorCode&)",93957347628000,93957347628399],["icu_68::CollationFastLatinBuilder::getCEs(icu_68::CollationData const&, UErrorCode&)",93957347628768,93957347629668],["icu_68::CollationFastLatinBuilder::encodeCharCEs(UErrorCode&)",93957347630544,93957347630956],["icu_68::CollationFastLatinBuilder::inSameGroup(unsigned int, unsigned int) const",93957347631696,93957347631792],["icu_68::CollationFastLatinBuilder::addContractionEntry(int, long, long, UErrorCode&)",93957347632544,93957347633119],["icu_68::CollationFastLatinBuilder::getCEsFromContractionCE32(icu_68::CollationData const&, unsigned int, UErrorCode&)",93957347633200,93957347633929],["icu_68::CollationRootElements::lastCEWithPrimaryBefore(unsigned int) const",93957347634336,93957347634607],["icu_68::CollationRootElements::getPrimaryBefore(unsigned int, signed char) const",93957347634816,93957347635079],["icu_68::CollationRootElements::getSecondaryBefore(unsigned int, unsigned int) const",93957347635248,93957347635489],["icu_68::CollationRootElements::getPrimaryAfter(unsigned int, int, signed char) const",93957347635808,93957347635892],["icu_68::CollationRootElements::getTertiaryAfter(int, unsigned int, unsigned int) const",93957347636032,93957347636212],["icu_68::RuleBasedTimeZone::RuleBasedTimeZone(icu_68::UnicodeString const&, icu_68::InitialTimeZoneRule*)",93957347636240,93957347636288],["icu_68::RuleBasedTimeZone::complete(UErrorCode&)",93957347636560,93957347638942],["icu_68::RuleBasedTimeZone::deleteRules()",93957347639072,93957347639275],["icu_68::RuleBasedTimeZone::operator==(icu_68::TimeZone const&) const",93957347639408,93957347639892],["icu_68::RuleBasedTimeZone::clone() const",93957347640176,93957347640323],["icu_68::RuleBasedTimeZone::getOffset(unsigned char, int, int, int, unsigned char, int, int, UErrorCode&) const",93957347640496,93957347640643],["icu_68::RuleBasedTimeZone::getOffset(double, signed char, int&, int&, UErrorCode&) const",93957347641104,93957347641146],["icu_68::RuleBasedTimeZone::getTransitionTime(icu_68::Transition*, signed char, int, int) const",93957347641200,93957347641493],["icu_68::RuleBasedTimeZone::useDaylightTime() const",93957347642288,93957347642453],["icu_68::RuleBasedTimeZone::inDaylightTime(double, UErrorCode&) const",93957347643168,93957347643231],["icu_68::RuleBasedTimeZone::getNextTransition(double, signed char, icu_68::TimeZoneTransition&) const",93957347643712,93957347643907],["icu_68::RuleBasedTimeZone::findPrev(double, signed char, double&, icu_68::TimeZoneRule*&, icu_68::TimeZoneRule*&) const",93957347644128,93957347644746],["icu_68::RuleBasedTimeZone::getTimeZoneRules(icu_68::InitialTimeZoneRule const*&, icu_68::TimeZoneRule const**, int&, UErrorCode&) const",93957347644800,93957347645085],["icu_68::Region::loadRegionData(UErrorCode&)",93957347645104,93957347652229],["icu_68::Region::cleanupRegionData()",93957347652256,93957347652526],["icu_68::Region::~Region()",93957347652608,93957347652688],["icu_68::Region::getPreferredValues(UErrorCode&) const",93957347653072,93957347653230],["icu_68::RegionNameEnumeration::snext(UErrorCode&)",93957347653488,93957347653539],["icu_68::RegionNameEnumeration::~RegionNameEnumeration()",93957347653584,93957347653632],["icu_68::RelativeDateTimeCacheData::~RelativeDateTimeCacheData()",93957347653696,93957347654201],["icu_68::LocaleCacheKey<icu_68::RelativeDateTimeCacheData>::createObject(void const*, UErrorCode&) const",93957347654240,93957347656343],["icu_68::FormattedRelativeDateTime::~FormattedRelativeDateTime()",93957347656416,93957347656480],["icu_68::RelativeDateTimeFormatter::RelativeDateTimeFormatter(icu_68::Locale const&, icu_68::NumberFormat*, UDateRelativeDateTimeFormatterStyle, UDisplayContext, UErrorCode&)",93957347657120,93957347657308],["icu_68::RelativeDateTimeFormatter::~RelativeDateTimeFormatter()",93957347657376,93957347657474],["icu_68::RelativeDateTimeFormatter::formatNumericImpl(double, URelativeDateTimeUnit, icu_68::FormattedRelativeDateTimeData&, UErrorCode&) const",93957347657520,93957347657956],["icu_68::FormattedRelativeDateTime icu_68::RelativeDateTimeFormatter::doFormatToValue<void (icu_68::RelativeDateTimeFormatter::*)(double, URelativeDateTimeUnit, icu_68::FormattedRelativeDateTimeData&, UErrorCode&) const, double, URelativeDateTimeUnit>(void (icu_68::RelativeDateTimeFormatter::*)(double, URelativeDateTimeUnit, icu_68::FormattedRelativeDateTimeData&, UErrorCode&) const, UErrorCode&, double, URelativeDateTimeUnit) const",93957347658016,93957347658317],["icu_68::RelativeDateTimeFormatter::formatToValue(double, URelativeDateTimeUnit, UErrorCode&) const",93957347658960,93957347658999],["icu_68::LocaleCacheKey<icu_68::RelativeDateTimeCacheData>::~LocaleCacheKey()",93957347662720,93957347662762],["icu_68::LocaleCacheKey<icu_68::RelativeDateTimeCacheData>::hashCode() const",93957347662832,93957347662886],["icu_68::QuantityFormatter::formatAndSelect(double, icu_68::NumberFormat const&, icu_68::PluralRules const&, icu_68::FormattedStringBuilder&, icu_68::StandardPlural::Form&, UErrorCode&)",93957347662992,93957347663683],["icu_68::RelativeDateFormat::RelativeDateFormat(icu_68::RelativeDateFormat const&)",93957347663712,93957347664098],["icu_68::RelativeDateFormat::loadDates(UErrorCode&)",93957347664736,93957347665421],["icu_68::RelativeDateFormat::~RelativeDateFormat()",93957347665568,93957347665596],["icu_68::RelativeDateFormat::operator==(icu_68::Format const&) const",93957347665664,93957347665979],["icu_68::RelativeDateFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPosition&, UErrorCode&) const",93957347667504,93957347667514],["icu_68::RelativeDateFormat::parse(icu_68::UnicodeString const&, UErrorCode&) const",93957347668912,93957347668922],["icu_68::RelativeDateFormat::toPatternDate(icu_68::UnicodeString&, UErrorCode&) const",93957347669056,93957347669123],["icu_68::RelativeDateFormat::applyPatterns(icu_68::UnicodeString const&, icu_68::UnicodeString const&, UErrorCode&)",93957347669216,93957347669273],["icu_68::RelativeDateFormat::setContext(UDisplayContext, UErrorCode&)",93957347669312,93957347669514],["icu_68::(anonymous namespace)::RelDateFmtDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347669824,93957347670156],["icu_68::CollationKeyByteSink::Resize(int, int)",93957347670240,93957347670335],["icu_68::RuleBasedCollator::RuleBasedCollator(icu_68::CollationCacheEntry const*)",93957347670576,93957347670704],["icu_68::RuleBasedCollator::~RuleBasedCollator()",93957347670800,93957347670894],["icu_68::RuleBasedCollator::getDynamicClassID() const",93957347671056,93957347671069],["icu_68::RuleBasedCollator::hashCode() const",93957347671376,93957347671768],["icu_68::RuleBasedCollator::getLocale(ULocDataLocaleType, UErrorCode&) const",93957347671840,93957347671922],["icu_68::RuleBasedCollator::getVersion(unsigned char*) const",93957347671952,93957347671974],["icu_68::RuleBasedCollator::getAttribute(UColAttribute, UErrorCode&) const",93957347672224,93957347672388],["icu_68::RuleBasedCollator::setMaxVariable(UColReorderCode, UErrorCode&)",93957347672928,93957347673308],["icu_68::RuleBasedCollator::getVariableTop(UErrorCode&) const",93957347673344,93957347673357],["icu_68::RuleBasedCollator::setVariableTop(icu_68::UnicodeString const&, UErrorCode&)",93957347674176,93957347674253],["icu_68::RuleBasedCollator::getReorderCodes(int*, int, UErrorCode&) const",93957347674560,93957347674650],["icu_68::RuleBasedCollator::compare(icu_68::UnicodeString const&, icu_68::UnicodeString const&, UErrorCode&) const",93957347675024,93957347675170],["icu_68::RuleBasedCollator::compare(icu_68::UnicodeString const&, icu_68::UnicodeString const&, int, UErrorCode&) const",93957347677456,93957347677622],["icu_68::RuleBasedCollator::compareUTF8(icu_68::StringPiece const&, icu_68::StringPiece const&, UErrorCode&) const",93957347677808,93957347677883],["icu_68::RuleBasedCollator::internalCompareUTF8(char const*, int, char const*, int, UErrorCode&) const",93957347681072,93957347681235],["icu_68::(anonymous namespace)::FCDUTF16NFDIterator::FCDUTF16NFDIterator(icu_68::Normalizer2Impl const&, char16_t const*, char16_t const*)",93957347681920,93957347682333],["icu_68::(anonymous namespace)::FCDUTF8NFDIterator::~FCDUTF8NFDIterator()",93957347682384,93957347682426],["icu_68::(anonymous namespace)::FCDUIterNFDIterator::~FCDUIterNFDIterator()",93957347684544,93957347684586],["icu_68::RuleBasedCollator::getCollationKey(char16_t const*, int, icu_68::CollationKey&, UErrorCode&) const",93957347684672,93957347684914],["icu_68::RuleBasedCollator::getSortKey(icu_68::UnicodeString const&, unsigned char*, int) const",93957347685728,93957347685808],["icu_68::RuleBasedCollator::writeIdenticalLevel(char16_t const*, char16_t const*, icu_68::SortKeyByteSink&, UErrorCode&) const",93957347686016,93957347686415],["icu_68::RuleBasedCollator::internalGetShortDefinitionString(char const*, char*, int, UErrorCode&) const",93957347687792,93957347690057],["icu_68::RuleBasedCollator::createCollationElementIterator(icu_68::CharacterIterator const&) const",93957347690256,93957347690448],["icu_68::(anonymous namespace)::FCDUTF16NFDIterator::~FCDUTF16NFDIterator()",93957347690576,93957347690626],["icu_68::(anonymous namespace)::FCDUTF8NFDIterator::~FCDUTF8NFDIterator()",93957347690960,93957347691010],["icu_68::(anonymous namespace)::UIterNFDIterator::nextRawCodePoint()",93957347691072,93957347691086],["icu_68::(anonymous namespace)::FCDUIterNFDIterator::nextRawCodePoint()",93957347691152,93957347691186],["icu_68::(anonymous namespace)::PartLevelCallback::needToWrite(icu_68::Collation::Level)",93957347691232,93957347691271],["icu_68::SortKeyByteSink::GetAppendBuffer(int, int, char*, int, int*)",93957347691392,93957347691510],["icu_68::SortKeyByteSink::Append(unsigned int)",93957347702224,93957347702301],["icu_68::CollationSettings::reorder(unsigned int) const",93957347704176,93957347704226],["icu_68::SharedBreakIterator::SharedBreakIterator(icu_68::BreakIterator*)",93957347705376,93957347705403],["icu_68::SharedBreakIterator::~SharedBreakIterator()",93957347705456,93957347705512],["icu_68::SimpleTimeZone::SimpleTimeZone(int, icu_68::UnicodeString const&)",93957347705536,93957347705656],["icu_68::SimpleTimeZone::~SimpleTimeZone()",93957347705872,93957347705999],["icu_68::SimpleTimeZone::~SimpleTimeZone()",93957347706112,93957347706247],["icu_68::SimpleTimeZone::clone() const",93957347706448,93957347706499],["icu_68::SimpleTimeZone::decodeStartRule(UErrorCode&)",93957347706528,93957347706714],["icu_68::SimpleTimeZone::getOffset(unsigned char, int, int, int, unsigned char, int, UErrorCode&) const",93957347706928,93957347707073],["icu_68::SimpleTimeZone::getOffset(unsigned char, int, int, int, unsigned char, int, int, int, UErrorCode&) const",93957347707360,93957347707878],["icu_68::SimpleTimeZone::getOffsetFromLocal(double, int, int, int&, int&, UErrorCode&) const",93957347708560,93957347709220],["icu_68::SimpleTimeZone::setRawOffset(int)",93957347709248,93957347709261],["icu_68::SimpleTimeZone::useDaylightTime() const",93957347709280,93957347709289],["icu_68::SimpleTimeZone::hasSameRules(icu_68::TimeZone const&) const",93957347709424,93957347709620],["icu_68::SimpleTimeZone::getPreviousTransition(double, signed char, icu_68::TimeZoneTransition&) const",93957347710096,93957347710544],["icu_68::SimpleTimeZone::countTransitionRules(UErrorCode&) const",93957347712432,93957347712449],["icu_68::SimpleTimeZone::getOffset(double, signed char, int&, int&, UErrorCode&) const",93957347712656,93957347712666],["icu_68::SimpleDateFormat::~SimpleDateFormat()",93957347712688,93957347712920],["icu_68::SimpleDateFormat::freeFastNumberFormatters()",93957347712992,93957347713172],["icu_68::SimpleDateFormat::construct(icu_68::DateFormat::EStyle, icu_68::DateFormat::EStyle, icu_68::Locale const&, UErrorCode&)",93957347713216,93957347716376],["icu_68::SimpleDateFormat::processOverrideString(icu_68::Locale const&, icu_68::UnicodeString const&, signed char, UErrorCode&)",93957347716944,93957347719034],["icu_68::SimpleDateFormat::SimpleDateFormat(icu_68::DateFormat::EStyle, icu_68::DateFormat::EStyle, icu_68::Locale const&, UErrorCode&)",93957347719536,93957347719956],["icu_68::SimpleDateFormat::operator=(icu_68::SimpleDateFormat const&)",93957347720576,93957347721269],["icu_68::SimpleDateFormat::clone() const",93957347721520,93957347721836],["icu_68::SimpleDateFormat::initNumberFormatters(icu_68::Locale const&, UErrorCode&)",93957347722064,93957347722272],["icu_68::SimpleDateFormat::_format(icu_68::Calendar&, icu_68::UnicodeString&, icu_68::FieldPositionHandler&, UErrorCode&) const",93957347722416,93957347723204],["icu_68::SimpleDateFormat::subFormat(icu_68::UnicodeString&, char16_t, int, UDisplayContext, int, char16_t, icu_68::FieldPositionHandler&, icu_68::Calendar&, UErrorCode&) const",93957347723344,93957347729952],["icu_68::createSharedNumberFormat(icu_68::Locale const&, UErrorCode&)",93957347730224,93957347730419],["icu_68::_appendSymbolWithMonthPattern(icu_68::UnicodeString&, int, icu_68::UnicodeString const*, int, icu_68::UnicodeString const*, UErrorCode&)",93957347731184,93957347731407],["icu_68::SimpleDateFormat::getSmpFmtLocale() const",93957347731520,93957347731533],["icu_68::SimpleDateFormat::adoptNumberFormat(icu_68::NumberFormat*)",93957347731584,93957347731835],["icu_68::SimpleDateFormat::parse(icu_68::UnicodeString const&, icu_68::Calendar&, icu_68::ParsePosition&) const",93957347732048,93957347735870],["icu_68::SimpleDateFormat::matchLiterals(icu_68::UnicodeString const&, int&, icu_68::UnicodeString const&, int&, signed char, signed char, signed char)",93957347744064,93957347746019],["icu_68::matchStringWithOptionalDot(icu_68::UnicodeString const&, int, icu_68::UnicodeString const&)",93957347746272,93957347746548],["icu_68::SimpleDateFormat::matchString(icu_68::UnicodeString const&, int, UCalendarDateFields, icu_68::UnicodeString const*, int, icu_68::UnicodeString const*, icu_68::Calendar&) const",93957347746704,93957347747429],["icu_68::SimpleDateFormat::checkIntSuffix(icu_68::UnicodeString const&, int, int, signed char) const",93957347747568,93957347748016],["icu_68::SimpleDateFormat::parseInt(icu_68::UnicodeString const&, icu_68::Formattable&, int, icu_68::ParsePosition&, signed char, icu_68::NumberFormat const*) const",93957347748112,93957347748636],["icu_68::SimpleDateFormat::toPattern(icu_68::UnicodeString&) const",93957347749056,93957347749090],["icu_68::SimpleDateFormat::applyPattern(icu_68::UnicodeString const&)",93957347749248,93957347750204],["icu_68::SimpleDateFormat::getDateFormatSymbols() const",93957347750352,93957347750365],["icu_68::SimpleDateFormat::setDateFormatSymbols(icu_68::DateFormatSymbols const&)",93957347750432,93957347750527],["icu_68::SimpleDateFormat::adoptTimeZoneFormat(icu_68::TimeZoneFormat*)",93957347750640,93957347750683],["icu_68::SimpleDateFormat::adoptCalendar(icu_68::Calendar*)",93957347750784,93957347751233],["icu_68::SimpleDateFormat::isFieldUnitIgnored(UCalendarDateFields) const",93957347751376,93957347751393],["icu_68::SimpleDateFormat::compareSimpleAffix(icu_68::UnicodeString const&, icu_68::UnicodeString const&, int) const",93957347751792,93957347752537],["icu_68::FormatNameEnumeration::getDynamicClassID() const",93957347752560,93957347752573],["icu_68::MessageFormat::MessageFormat(icu_68::MessageFormat const&)",93957347752832,93957347753149],["icu_68::MessageFormat::~MessageFormat()",93957347753776,93957347754012],["icu_68::MessageFormat::operator==(icu_68::Format const&) const",93957347754048,93957347754362],["icu_68::MessageFormat::setLocale(icu_68::Locale const&)",93957347754432,93957347754627],["icu_68::MessageFormat::applyPattern(icu_68::UnicodeString const&, UErrorCode&)",93957347754656,93957347754720],["icu_68::MessageFormat::cacheExplicitFormats(UErrorCode&)",93957347754864,93957347755892],["icu_68::MessageFormat::toPattern(icu_68::UnicodeString&) const",93957347756000,93957347756103],["icu_68::MessageFormat::adoptFormats(icu_68::Format**, int)",93957347756352,93957347756745],["icu_68::MessageFormat::adoptFormat(int, icu_68::Format*)",93957347757216,93957347757469],["icu_68::MessageFormat::setFormat(int, icu_68::Format const&)",93957347758112,93957347758360],["icu_68::MessageFormat::setFormat(icu_68::UnicodeString const&, icu_68::Format const&, UErrorCode&)",93957347758816,93957347759316],["icu_68::MessageFormat::getFormatNames(UErrorCode&)",93957347759744,93957347760136],["icu_68::MessageFormat::format(int, void const*, icu_68::Formattable const*, icu_68::UnicodeString const*, int, icu_68::AppendableWrapper&, icu_68::FieldPosition*, UErrorCode&) const",93957347760368,93957347764191],["icu_68::AppendableWrapper::formatAndAppend(icu_68::Format const*, icu_68::Formattable const&, UErrorCode&)",93957347764528,93957347764738],["icu_68::MessageFormat::getDefaultDateFormat(UErrorCode&) const",93957347764848,93957347764926],["icu_68::(anonymous namespace)::PluralSelectorContext::PluralSelectorContext(int, icu_68::UnicodeString const&, icu_68::Formattable const&, double, UErrorCode&)",93957347766304,93957347766555],["icu_68::MessageFormat::findOtherSubMessage(int) const",93957347766800,93957347767205],["icu_68::MessageFormat::parse(int, icu_68::UnicodeString const&, icu_68::ParsePosition&, int&, UErrorCode&) const",93957347767504,93957347769697],["icu_68::MessageFormat::parse(icu_68::UnicodeString const&, int&, UErrorCode&) const",93957347769760,93957347769937],["icu_68::MessageFormat::createAppropriateFormat(icu_68::UnicodeString&, icu_68::UnicodeString&, icu_68::Formattable::Type&, UParseError&, UErrorCode&)",93957347770016,93957347771188],["icu_68::MessageFormat::createIntegerFormat(icu_68::Locale const&, UErrorCode&) const",93957347771600,93957347771711],["icu_68::MessageFormat::DummyFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, UErrorCode&) const",93957347771792,93957347771814],["icu_68::FormatNameEnumeration::~FormatNameEnumeration()",93957347771872,93957347771920],["icu_68::MessageFormat::PluralSelectorProvider::~PluralSelectorProvider()",93957347771984,93957347772032],["icu_68::MessageFormat::PluralSelectorProvider::select(void*, double, UErrorCode&) const",93957347772096,93957347772898],["icu_68::ChoiceFormat::findSubMessage(icu_68::MessagePattern const&, int, double)",93957347773008,93957347773306],["icu_68::ChoiceFormat::matchStringUntilLimitPart(icu_68::MessagePattern const&, int, int, icu_68::UnicodeString const&, int)",93957347773616,93957347773943],["icu_68::number::impl::LocalizedNumberFormatterAsFormat::getDynamicClassID() const",93957347774512,93957347774525],["icu_68::number::impl::LocalizedNumberFormatterAsFormat::~LocalizedNumberFormatterAsFormat()",93957347774592,93957347774657],["icu_68::number::impl::LocalizedNumberFormatterAsFormat::clone() const",93957347774976,93957347775081],["icu_68::number::impl::LocalizedNumberFormatterAsFormat::format(icu_68::Formattable const&, icu_68::UnicodeString&, icu_68::FieldPositionIterator*, UErrorCode&) const",93957347775504,93957347775923],["icu_68::number::LocalizedNumberFormatter::toFormat(UErrorCode&) const",93957347775952,93957347776111],["icu_68::DayPeriodRules::load(UErrorCode&)",93957347776192,93957347776550],["icu_68::DayPeriodRules::getMidPointForDayPeriod(icu_68::DayPeriodRules::DayPeriod, UErrorCode&) const",93957347777072,93957347777199],["icu_68::DayPeriodRules::getEndHourForDayPeriod(icu_68::DayPeriodRules::DayPeriod, UErrorCode&) const",93957347777872,93957347778563],["icu_68::DayPeriodRules::allHoursAreSet()",93957347778944,93957347779111],["icu_68::DayPeriodRulesCountSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347780656,93957347781004],["icu_68::DayPeriodRulesDataSink::processRules(icu_68::ResourceTable const&, char const*, icu_68::ResourceValue&, UErrorCode&)",93957347781264,93957347783331],["icu_68::SimpleDateFormatStaticSets::SimpleDateFormatStaticSets(UErrorCode&)",93957347783552,93957347784089],["icu_68::SimpleDateFormatStaticSets::getIgnorables(UDateFormatField)",93957347784208,93957347784454],["icu_68::CollationKey::reallocate(int, int)",93957347784528,93957347784654],["icu_68::CollationKey::setLength(int)",93957347784688,93957347784714],["icu_68::StandardPlural::getKeyword(icu_68::StandardPlural::Form)",93957347784752,93957347784771],["icu_68::StandardPlural::indexOrNegativeFromString(icu_68::UnicodeString const&)",93957347785008,93957347785441],["icu_68::StandardPlural::indexFromString(icu_68::UnicodeString const&, UErrorCode&)",93957347785504,93957347785550],["icu_68::StringSegment::adjustOffset(int)",93957347785600,93957347785609],["icu_68::StringSegment::getCodePoint() const",93957347785760,93957347785871],["icu_68::StringSegment::resetLength()",93957347785888,93957347785917],["icu_68::StringSegment::charAt(int) const",93957347785936,93957347786002],["icu_68::StringSegment::toTempUnicodeString() const",93957347786048,93957347786144],["icu_68::StringSegment::startsWith(icu_68::UnicodeSet const&) const",93957347786320,93957347786461],["icu_68::StringSegment::getCommonPrefixLength(icu_68::UnicodeString const&)",93957347786720,93957347786734],["icu_68::StringSegment::getCaseSensitivePrefixLength(icu_68::UnicodeString const&)",93957347787104,93957347787116],["icu_68::TaiwanCalendar::TaiwanCalendar(icu_68::Locale const&, UErrorCode&)",93957347787136,93957347787184],["icu_68::TaiwanCalendar::getType() const",93957347787248,93957347787261],["icu_68::TaiwanCalendar::handleComputeFields(int, UErrorCode&)",93957347787424,93957347787504],["icu_68::TaiwanCalendar::defaultCenturyStart() const",93957347787536,93957347787594],["icu_68::TaiwanCalendar::defaultCenturyStartYear() const",93957347787904,93957347787960],["icu_68::TimeZone::getUnknown()",93957347788144,93957347788411],["icu_68::TimeZone::~TimeZone()",93957347788448,93957347788490],["icu_68::TimeZone::operator=(icu_68::TimeZone const&)",93957347788528,93957347788565],["icu_68::TimeZone::createTimeZone(icu_68::UnicodeString const&)",93957347788704,93957347788776],["icu_68::TimeZone::detectHostTimeZone()",93957347789072,93957347789488],["icu_68::TimeZone::forLocaleOrDefault(icu_68::Locale const&)",93957347789664,93957347789933],["timeZone_cleanup()",93957347790032,93957347790281],["icu_68::TZEnumeration::~TZEnumeration()",93957347790720,93957347790770],["icu_68::TZEnumeration::getDynamicClassID() const",93957347790848,93957347790861],["icu_68::TZEnumeration::create(USystemTimeZoneType, char const*, int const*, UErrorCode&)",93957347790880,93957347791896],["icu_68::openOlsonResource(icu_68::UnicodeString const&, UResourceBundle&, UErrorCode&)",93957347792112,93957347792356],["icu_68::findInStringArray(UResourceBundle*, icu_68::UnicodeString const&, UErrorCode&)",93957347792528,93957347792962],["icu_68::TimeZone::getRegion(icu_68::UnicodeString const&)",93957347793216,93957347793246],["icu_68::TimeZone::getRegion(icu_68::UnicodeString const&, char*, int, UErrorCode&)",93957347793440,93957347793664],["icu_68::TimeZone::getDisplayName(signed char, icu_68::TimeZone::EDisplayType, icu_68::UnicodeString&) const",93957347794800,93957347794856],["icu_68::TimeZone::parseCustomID(icu_68::UnicodeString const&, int&, int&, int&, int&)",93957347794896,93957347796302],["icu_68::TimeZone::hasSameRules(icu_68::TimeZone const&) const",93957347796864,93957347796943],["icu_68::TimeZone::getCanonicalID(icu_68::UnicodeString const&, icu_68::UnicodeString&, signed char&, UErrorCode&)",93957347796992,93957347797321],["icu_68::TZEnumeration::count(UErrorCode&) const",93957347797584,93957347797605],["icu_68::TZEnumeration::reset(UErrorCode&)",93957347797696,93957347797712],["icu_68::TZEnumeration::getMap(USystemTimeZoneType, int&, UErrorCode&)",93957347798032,93957347798386],["icu_68::TZEnumeration::getID(int, UErrorCode&)",93957347799408,93957347799676],["icu_68::GMTOffsetField::~GMTOffsetField()",93957347799712,93957347799759],["icu_68::TimeZoneFormat::getDynamicClassID() const",93957347800000,93957347800013],["icu_68::TimeZoneFormat::initGMTPattern(icu_68::UnicodeString const&, UErrorCode&)",93957347802096,93957347802362],["icu_68::TimeZoneFormat::truncateOffsetPattern(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&)",93957347802912,93957347803311],["icu_68::TimeZoneFormat::TimeZoneFormat(icu_68::TimeZoneFormat const&)",93957347803648,93957347803916],["icu_68::TimeZoneFormat::~TimeZoneFormat()",93957347804560,93957347804889],["icu_68::TimeZoneFormat::operator==(icu_68::Format const&) const",93957347804928,93957347805465],["icu_68::TimeZoneFormat::createInstance(icu_68::Locale const&, UErrorCode&)",93957347805776,93957347805855],["icu_68::TimeZoneFormat::format(UTimeZoneFormatStyle, icu_68::TimeZone const&, double, icu_68::UnicodeString&, UTimeZoneFormatTimeType*) const",93957347807504,93957347808311],["icu_68::TimeZoneFormat::formatSpecific(icu_68::TimeZone const&, UTimeZoneNameType, UTimeZoneNameType, double, icu_68::UnicodeString&, UTimeZoneFormatTimeType*) const",93957347808608,93957347809008],["icu_68::TimeZoneFormat::formatOffsetLocalizedGMT(int, icu_68::UnicodeString&, UErrorCode&) const",93957347809568,93957347809586],["icu_68::TimeZoneFormat::formatOffsetISO8601Basic(int, signed char, signed char, signed char, icu_68::UnicodeString&, UErrorCode&) const",93957347809632,93957347809677],["icu_68::TimeZoneFormat::parse(UTimeZoneFormatStyle, icu_68::UnicodeString const&, icu_68::ParsePosition&, UTimeZoneFormatTimeType*) const",93957347810272,93957347810296],["icu_68::TimeZoneFormat::parseOffsetLocalizedGMT(icu_68::UnicodeString const&, icu_68::ParsePosition&, signed char, signed char*) const",93957347815248,93957347815786],["icu_68::TimeZoneFormat::parseOffsetISO8601(icu_68::UnicodeString const&, icu_68::ParsePosition&, signed char, signed char*) const",93957347815952,93957347816346],["icu_68::TimeZoneFormat::getTimeZoneID(icu_68::TimeZoneNames::MatchInfoCollection const*, int, icu_68::UnicodeString&) const",93957347816400,93957347816638],["icu_68::TimeZoneFormat::getTimeZoneGenericNames(UErrorCode&) const",93957347816768,93957347816858],["icu_68::TimeZoneFormat::parseShortZoneID(icu_68::UnicodeString const&, icu_68::ParsePosition&, icu_68::UnicodeString&) const",93957347817392,93957347817984],["icu_68::TimeZoneFormat::parseObject(icu_68::UnicodeString const&, icu_68::Formattable&, icu_68::ParsePosition&) const",93957347818496,93957347818542],["icu_68::TimeZoneFormat::formatOffsetLocalizedGMT(int, signed char, icu_68::UnicodeString&, UErrorCode&) const",93957347819184,93957347820105],["icu_68::TimeZoneFormat::parseAbuttingAsciiOffsetFields(icu_68::UnicodeString const&, icu_68::ParsePosition&, icu_68::TimeZoneFormat::OffsetFields, icu_68::TimeZoneFormat::OffsetFields, signed char)",93957347820656,93957347821198],["icu_68::TimeZoneFormat::parseOffsetDefaultLocalizedGMT(icu_68::UnicodeString const&, int, int&) const",93957347821600,93957347822052],["icu_68::TimeZoneFormat::parseOffsetFieldsWithPattern(icu_68::UnicodeString const&, int, icu_68::UVector*, signed char, int&, int&, int&) const",93957347822976,93957347824187],["icu_68::TimeZoneFormat::parseSingleLocalizedDigit(icu_68::UnicodeString const&, int, int&) const",93957347825472,93957347825745],["icu_68::TimeZoneFormat::unquote(icu_68::UnicodeString const&, icu_68::UnicodeString&)",93957347826656,93957347826931],["icu_68::tzfmt_cleanup()",93957347827040,93957347827129],["icu_68::GNameSearchHandler::~GNameSearchHandler()",93957347827184,93957347827240],["icu_68::TZGNCore::initialize(icu_68::Locale const&, UErrorCode&)",93957347827696,93957347828919],["icu_68::TZGNCore::cleanup()",93957347829088,93957347829163],["icu_68::hashPartialLocationKey(UElement)",93957347829200,93957347829434],["icu_68::TZGNCore::loadStrings(icu_68::UnicodeString const&)",93957347829504,93957347830102],["icu_68::TZGNCore::getGenericLocationName(icu_68::UnicodeString const&, icu_68::UnicodeString&) const",93957347830416,93957347830566],["icu_68::TZGNCore::getGenericLocationName(icu_68::UnicodeString const&)",93957347832832,93957347833746],["icu_68::TZGNCore::getPartialLocationName(icu_68::UnicodeString const&, icu_68::UnicodeString const&, signed char, icu_68::UnicodeString const&, icu_68::UnicodeString&) const",93957347833888,93957347834069],["icu_68::TZGNCore::findBestMatch(icu_68::UnicodeString const&, int, unsigned int, icu_68::UnicodeString&, UTimeZoneFormatTimeType&, UErrorCode&) const",93957347835136,93957347836336],["icu_68::TimeZoneGenericNames::~TimeZoneGenericNames()",93957347836960,93957347837015],["icu_68::TimeZoneGenericNames::createInstance(icu_68::Locale const&, UErrorCode&)",93957347837088,93957347837980],["icu_68::tzgnCore_cleanup()",93957347838032,93957347838075],["icu_68::TimeZoneGenericNames::clone() const",93957347838112,93957347838218],["icu_68::TimeZoneGenericNames::getGenericLocationName(icu_68::UnicodeString const&, icu_68::UnicodeString&) const",93957347838256,93957347838273],["icu_68::TimeZoneGenericNames::operator!=(icu_68::TimeZoneGenericNames const&) const",93957347838320,93957347838337],["icu_68::timeZoneNames_cleanup()",93957347838992,93957347839035],["icu_68::TimeZoneNamesDelegate::~TimeZoneNamesDelegate()",93957347839120,93957347839198],["icu_68::TimeZoneNamesDelegate::clone() const",93957347839296,93957347839402],["icu_68::TimeZoneNamesDelegate::getAvailableMetaZoneIDs(icu_68::UnicodeString const&, UErrorCode&) const",93957347839440,93957347839461],["icu_68::TimeZoneNamesDelegate::getReferenceZoneID(icu_68::UnicodeString const&, char const*, icu_68::UnicodeString&) const",93957347839504,93957347839525],["icu_68::TimeZoneNamesDelegate::getTimeZoneDisplayName(icu_68::UnicodeString const&, UTimeZoneNameType, icu_68::UnicodeString&) const",93957347839568,93957347839589],["icu_68::TimeZoneNamesDelegate::loadAllDisplayNames(UErrorCode&)",93957347839632,93957347839653],["icu_68::TimeZoneNamesDelegate::find(icu_68::UnicodeString const&, int, unsigned int, UErrorCode&) const",93957347839696,93957347839717],["icu_68::TimeZoneNames::getExemplarLocationName(icu_68::UnicodeString const&, icu_68::UnicodeString&) const",93957347839824,93957347839840],["icu_68::TimeZoneNames::getDisplayNames(icu_68::UnicodeString const&, UTimeZoneNameType const*, int, double, icu_68::UnicodeString*, UErrorCode&) const",93957347840080,93957347840345],["icu_68::TimeZoneNames::MatchInfoCollection::~MatchInfoCollection()",93957347840384,93957347840416],["icu_68::TimeZoneNames::MatchInfoCollection::addZone(UTimeZoneNameType, int, icu_68::UnicodeString const&, UErrorCode&)",93957347840464,93957347840804],["icu_68::TimeZoneNames::MatchInfoCollection::size() const",93957347841152,93957347841174],["icu_68::TimeZoneNames::MatchInfoCollection::getMatchLengthAt(int) const",93957347841216,93957347841243],["icu_68::TimeZoneNames::MatchInfoCollection::getMetaZoneIDAt(int, icu_68::UnicodeString&) const",93957347841344,93957347841426],["icu_68::TextTrieMap::TextTrieMap(signed char, void (*)(void*))",93957347841664,93957347841707],["icu_68::TextTrieMap::~TextTrieMap()",93957347841936,93957347841964],["icu_68::TextTrieMap::put(char16_t const*, void*, UErrorCode&)",93957347842016,93957347842208],["icu_68::TextTrieMap::addChildNode(icu_68::CharacterNode*, char16_t, UErrorCode&)",93957347842640,93957347843030],["icu_68::TextTrieMap::search(icu_68::UnicodeString const&, int, icu_68::TextTrieMapSearchResultHandler*, UErrorCode&) const",93957347843296,93957347843415],["icu_68::ZNStringPool::ZNStringPool(UErrorCode&)",93957347844064,93957347844170],["icu_68::ZNStringPool::get(char16_t const*, UErrorCode&)",93957347844256,93957347844499],["icu_68::MetaZoneIDsEnumeration::snext(UErrorCode&)",93957347844528,93957347844650],["icu_68::MetaZoneIDsEnumeration::~MetaZoneIDsEnumeration()",93957347844672,93957347844723],["icu_68::ZNameSearchHandler::~ZNameSearchHandler()",93957347844800,93957347844832],["icu_68::ZNameSearchHandler::handleMatch(int, icu_68::CharacterNode const*, UErrorCode&)",93957347844880,93957347845375],["icu_68::TimeZoneNamesImpl::initialize(icu_68::Locale const&, UErrorCode&)",93957347845520,93957347846025],["icu_68::TimeZoneNamesImpl::loadTimeZoneNames(icu_68::UnicodeString const&, UErrorCode&)",93957347846096,93957347846511],["icu_68::TimeZoneNamesImpl::~TimeZoneNamesImpl()",93957347847568,93957347847706],["icu_68::TimeZoneNamesImpl::clone() const",93957347847744,93957347847920],["icu_68::TimeZoneNamesImpl::_getAvailableMetaZoneIDs(UErrorCode&)",93957347847936,93957347848087],["icu_68::TimeZoneNamesImpl::_getAvailableMetaZoneIDs(icu_68::UnicodeString const&, UErrorCode&)",93957347848112,93957347848471],["icu_68::TimeZoneNamesImpl::getReferenceZoneID(icu_68::UnicodeString const&, char const*, icu_68::UnicodeString&) const",93957347848512,93957347848622],["icu_68::TimeZoneNamesImpl::getTimeZoneDisplayName(icu_68::UnicodeString const&, UTimeZoneNameType, icu_68::UnicodeString&) const",93957347848816,93957347848995],["icu_68::ZNames::ZNamesLoader::loadTimeZone(UResourceBundle const*, icu_68::UnicodeString const&, UErrorCode&)",93957347849168,93957347849552],["icu_68::TimeZoneNamesImpl::find(icu_68::UnicodeString const&, int, unsigned int, UErrorCode&) const",93957347849968,93957347850252],["icu_68::TimeZoneNamesImpl::addAllNamesIntoTrie(UErrorCode&)",93957347850496,93957347851091],["icu_68::TimeZoneNamesImpl::ZoneStringsLoader::~ZoneStringsLoader()",93957347851680,93957347851722],["icu_68::TimeZoneNamesImpl::loadAllDisplayNames(UErrorCode&)",93957347851792,93957347851868],["icu_68::TimeZoneNamesImpl::ZoneStringsLoader::load(UErrorCode&)",93957347852512,93957347853559],["icu_68::TZDBNames::~TZDBNames()",93957347854176,93957347854292],["icu_68::TZDBNames::createInstance(UResourceBundle*, char const*)",93957347854432,93957347855085],["icu_68::TZDBNameSearchHandler::~TZDBNameSearchHandler()",93957347855120,93957347855168],["icu_68::TZDBTimeZoneNames::TZDBTimeZoneNames(icu_68::Locale const&)",93957347855840,93957347856139],["icu_68::TZDBTimeZoneNames::~TZDBTimeZoneNames()",93957347856192,93957347856242],["icu_68::TZDBTimeZoneNames::getMetaZoneDisplayName(icu_68::UnicodeString const&, UTimeZoneNameType, icu_68::UnicodeString&) const",93957347856320,93957347856468],["icu_68::TZDBTimeZoneNames::getTimeZoneDisplayName(icu_68::UnicodeString const&, UTimeZoneNameType, icu_68::UnicodeString&) const",93957347857296,93957347857323],["icu_68::ZNames::ZNamesLoader::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347858240,93957347859124],["icu_68::ZNames::getTZNameTypeIndex(UTimeZoneNameType)",93957347859440,93957347859504],["icu_68::UMemory::operator delete[](void*)",93957347859536,93957347859553],["icu_68::deleteTZDBNames(void*)",93957347859664,93957347859694],["icu_68::TimeZoneRule::~TimeZoneRule()",93957347860496,93957347860538],["icu_68::TimeZoneRule::operator!=(icu_68::TimeZoneRule const&) const",93957347860720,93957347860737],["icu_68::InitialTimeZoneRule::getDynamicClassID() const",93957347860832,93957347860845],["icu_68::InitialTimeZoneRule::~InitialTimeZoneRule()",93957347860928,93957347860978],["icu_68::InitialTimeZoneRule::operator==(icu_68::TimeZoneRule const&) const",93957347861088,93957347861151],["icu_68::AnnualTimeZoneRule::getDynamicClassID() const",93957347861232,93957347861245],["icu_68::AnnualTimeZoneRule::~AnnualTimeZoneRule()",93957347861344,93957347861411],["icu_68::AnnualTimeZoneRule::clone() const",93957347861504,93957347861656],["icu_68::AnnualTimeZoneRule::getEndYear() const",93957347861776,93957347861785],["icu_68::AnnualTimeZoneRule::isEquivalentTo(icu_68::TimeZoneRule const&) const",93957347862480,93957347862599],["icu_68::AnnualTimeZoneRule::getFinalStart(int, int, double&) const",93957347862640,93957347862672],["icu_68::AnnualTimeZoneRule::getPreviousStart(double, int, int, signed char, double&) const",93957347862928,93957347863174],["icu_68::TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(icu_68::UnicodeString const&, int, int, double const*, int, icu_68::DateTimeRule::TimeRuleType)",93957347863200,93957347863320],["icu_68::TimeArrayTimeZoneRule::~TimeArrayTimeZoneRule()",93957347863568,93957347863643],["icu_68::TimeArrayTimeZoneRule::clone() const",93957347863744,93957347863884],["icu_68::TimeArrayTimeZoneRule::isEquivalentTo(icu_68::TimeZoneRule const&) const",93957347864048,93957347864168],["icu_68::TimeArrayTimeZoneRule::getFinalStart(int, int, double&) const",93957347864256,93957347864328],["icu_68::TimeArrayTimeZoneRule::getPreviousStart(double, int, int, signed char, double&) const",93957347864480,93957347864578],["icu_68::TimeZoneTransition::getDynamicClassID() const",93957347864640,93957347864653],["icu_68::TimeZoneTransition::TimeZoneTransition()",93957347864720,93957347864751],["icu_68::TimeZoneTransition::~TimeZoneTransition()",93957347864816,93957347864887],["icu_68::TimeZoneTransition::setFrom(icu_68::TimeZoneRule const&)",93957347865008,93957347865054],["icu_68::TimeZoneTransition::setTime(double)",93957347865104,93957347865115],["icu_68::TimeZoneTransition::adoptTo(icu_68::TimeZoneRule*)",93957347865168,93957347865205],["ucal_getNow_68",93957347865232,93957347865242],["ucln_i18n_registerCleanup_68",93957347865936,93957347866001],["icu_68::CollationLoader::loadRules(char const*, char const*, icu_68::UnicodeString&, UErrorCode&)",93957347866096,93957347866459],["icu_68::CollationLoader::loadTailoring(icu_68::Locale const&, UErrorCode&)",93957347866560,93957347867046],["icu_68::CollationLoader::CollationLoader(icu_68::CollationCacheEntry const*, icu_68::Locale const&, UErrorCode&)",93957347867360,93957347867797],["icu_68::CollationLoader::loadFromBundle(UErrorCode&)",93957347868496,93957347869284],["icu_68::CollationLoader::loadFromData(UErrorCode&)",93957347870400,93957347871535],["icu_68::CollationLoader::makeCacheEntry(icu_68::Locale const&, icu_68::CollationCacheEntry const*, UErrorCode&)",93957347871600,93957347871775],["ucol_getKeywordValuesForLocale_68",93957347871824,93957347872132],["ucol_getFunctionalEquivalent_68",93957347872192,93957347872242],["(anonymous namespace)::KeywordsSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347872320,93957347873059],["icu_68::LocaleCacheKey<icu_68::CollationCacheEntry>::hashCode() const",93957347873136,93957347873200],["icu_68::UIterCollationIterator::resetToOffset(int)",93957347873296,93957347873336],["icu_68::UIterCollationIterator::handleNextCE32(int&, UErrorCode&)",93957347873376,93957347873448],["icu_68::UIterCollationIterator::nextCodePoint(UErrorCode&)",93957347873520,93957347873537],["icu_68::UIterCollationIterator::forwardNumCodePoints(int, UErrorCode&)",93957347873584,93957347873631],["icu_68::FCDUIterCollationIterator::~FCDUIterCollationIterator()",93957347873680,93957347873725],["icu_68::FCDUIterCollationIterator::resetToOffset(int)",93957347873792,93957347873847],["icu_68::FCDUIterCollationIterator::handleNextCE32(int&, UErrorCode&)",93957347873936,93957347874549],["icu_68::FCDUIterCollationIterator::handleGetTrailSurrogate()",93957347875296,93957347875476],["icu_68::FCDUIterCollationIterator::previousCodePoint(UErrorCode&)",93957347876112,93957347876740],["icu_68::FCDUIterCollationIterator::forwardNumCodePoints(int, UErrorCode&)",93957347877584,93957347877652],["icu_68::units::ComplexUnitsConverter::ComplexUnitsConverter(icu_68::MeasureUnitImpl const&, icu_68::MeasureUnitImpl const&, icu_68::units::ConversionRates const&, UErrorCode&)",93957347877744,93957347878427],["icu_68::units::ComplexUnitsConverter::convert(double, icu_68::number::impl::RoundingImpl*, UErrorCode&) const",93957347878480,93957347880862],["icu_68::MeasureUnit* icu_68::MemoryPool<icu_68::MeasureUnit, 8>::create<icu_68::MeasureUnit&>(icu_68::MeasureUnit&)",93957347881312,93957347881530],["icu_68::Measure* icu_68::MemoryPool<icu_68::Measure, 8>::create<icu_68::Formattable&, icu_68::MeasureUnit*&, UErrorCode&>(icu_68::Formattable&, icu_68::MeasureUnit*&, UErrorCode&)",93957347881792,93957347882039],["icu_68::units::addSingleFactorConstant(icu_68::StringPiece, int, icu_68::units::Signum, icu_68::units::Factor&, UErrorCode&)",93957347882416,93957347883082],["icu_68::units::extractCompoundBaseUnit(icu_68::MeasureUnitImpl const&, icu_68::units::ConversionRates const&, UErrorCode&)",93957347883264,93957347884530],["icu_68::units::(anonymous namespace)::mergeUnitsAndDimensions(icu_68::MaybeStackVector<icu_68::units::(anonymous namespace)::UnitIndexAndDimension, 8>&, icu_68::MeasureUnitImpl const&, int)",93957347885632,93957347885981],["icu_68::units::ConversionRate::ConversionRate(icu_68::MeasureUnitImpl&&, icu_68::MeasureUnitImpl&&)",93957347886992,93957347887301],["icu_68::units::UnitConverter::convertInverse(double) const",93957347887408,93957347887491],["icu_68::units::(anonymous namespace)::addFactorElement(icu_68::units::Factor&, icu_68::StringPiece, icu_68::units::Signum, UErrorCode&)",93957347889248,93957347889571],["icu_68::units::getAllConversionRates(icu_68::MaybeStackVector<icu_68::units::ConversionRateInfo, 8>&, UErrorCode&)",93957347889872,93957347889983],["icu_68::units::UnitPreferences::UnitPreferences(UErrorCode&)",93957347890144,93957347890318],["icu_68::units::(anonymous namespace)::ConversionRateDataSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347891920,93957347893445],["icu_68::units::(anonymous namespace)::UnitPreferencesSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347893808,93957347895741],["icu_68::units::UnitPreference* icu_68::MemoryPool<icu_68::units::UnitPreference, 8>::create<>()",93957347896320,93957347896583],["icu_68::units::UnitsRouter::UnitsRouter(icu_68::MeasureUnit, icu_68::StringPiece, icu_68::StringPiece, UErrorCode&)",93957347896992,93957347899071],["icu_68::MemoryPool<icu_68::units::UnitPreferenceMetadata, 8>::~MemoryPool()",93957347899984,93957347900145],["icu_68::UTF16CollationIterator::operator==(icu_68::CollationIterator const&) const",93957347900576,93957347900641],["icu_68::UTF16CollationIterator::getOffset() const",93957347900704,93957347900727],["icu_68::UTF16CollationIterator::handleGetTrailSurrogate()",93957347900832,93957347900888],["icu_68::UTF16CollationIterator::nextCodePoint(UErrorCode&)",93957347900944,93957347901071],["icu_68::UTF16CollationIterator::forwardNumCodePoints(int, UErrorCode&)",93957347901184,93957347901318],["icu_68::FCDUTF16CollationIterator::~FCDUTF16CollationIterator()",93957347901456,93957347901501],["icu_68::FCDUTF16CollationIterator::operator==(icu_68::CollationIterator const&) const",93957347901568,93957347901750],["icu_68::FCDUTF16CollationIterator::getOffset() const",93957347901840,93957347901919],["icu_68::FCDUTF16CollationIterator::nextSegment(UErrorCode&)",93957347902368,93957347903068],["icu_68::FCDUTF16CollationIterator::nextCodePoint(UErrorCode&)",93957347903136,93957347903649],["icu_68::FCDUTF16CollationIterator::previousSegment(UErrorCode&)",93957347904128,93957347904796],["icu_68::FCDUTF16CollationIterator::backwardNumCodePoints(int, UErrorCode&)",93957347904880,93957347904948],["icu_68::UTF8CollationIterator::getOffset() const",93957347904992,93957347905004],["icu_68::UTF8CollationIterator::foundNULTerminator()",93957347905552,93957347905594],["icu_68::UTF8CollationIterator::previousCodePoint(UErrorCode&)",93957347905952,93957347906029],["icu_68::UTF8CollationIterator::backwardNumCodePoints(int, UErrorCode&)",93957347906432,93957347906522],["icu_68::FCDUTF8CollationIterator::~FCDUTF8CollationIterator()",93957347906576,93957347906629],["icu_68::FCDUTF8CollationIterator::getOffset() const",93957347906688,93957347906736],["icu_68::FCDUTF8CollationIterator::nextHasLccc() const",93957347907920,93957347908279],["icu_68::FCDUTF8CollationIterator::handleGetTrailSurrogate()",93957347909648,93957347909757],["icu_68::FCDUTF8CollationIterator::nextCodePoint(UErrorCode&)",93957347909824,93957347910993],["icu_68::FCDUTF8CollationIterator::previousSegment(UErrorCode&)",93957347911760,93957347912586],["icu_68::FCDUTF8CollationIterator::backwardNumCodePoints(int, UErrorCode&)",93957347912672,93957347912740],["icu_68::initCanonicalIDCache(UErrorCode&)",93957347913888,93957347913980],["icu_68::ZoneMeta::getCanonicalCLDRID(icu_68::UnicodeString const&, icu_68::UnicodeString&, UErrorCode&)",93957347914000,93957347914091],["icu_68::ZoneMeta::getCanonicalCountry(icu_68::UnicodeString const&, icu_68::UnicodeString&, signed char*)",93957347914304,93957347915427],["icu_68::ZoneMeta::getMetazoneMappings(icu_68::UnicodeString const&)",93957347915616,93957347916180],["icu_68::parseDate(char16_t const*, UErrorCode&)",93957347917248,93957347917911],["icu_68::ZoneMeta::getAvailableMetazoneIDs()",93957347918528,93957347918585],["icu_68::ZoneMeta::findMetaZoneID(icu_68::UnicodeString const&)",93957347919472,93957347919560],["icu_68::ZoneMeta::formatCustomID(unsigned char, unsigned char, unsigned char, signed char, icu_68::UnicodeString&)",93957347919824,93957347920362],["icu_68::ZoneMeta::getShortIDFromCanonical(char16_t const*)",93957347920448,93957347920760],["zoneMeta_cleanup()",93957347920832,93957347921050],["icu_68::BreakIterator::createWordInstance(icu_68::Locale const&, UErrorCode&)",93957347922208,93957347922226],["icu_68::BreakIterator::createLineInstance(icu_68::Locale const&, UErrorCode&)",93957347922720,93957347922738],["icu_68::BreakIterator::createSentenceInstance(icu_68::Locale const&, UErrorCode&)",93957347922768,93957347922786],["icu_68::BreakIterator::BreakIterator(icu_68::BreakIterator const&)",93957347922832,93957347922907],["icu_68::BreakIterator::makeInstance(icu_68::Locale const&, int, UErrorCode&)",93957347922992,93957347923807],["icu_68::BreakIterator::BreakIterator(icu_68::Locale const&, icu_68::Locale const&)",93957347923856,93957347923908],["icu_68::ICUBreakIteratorService::handleDefault(icu_68::ICUServiceKey const&, icu_68::UnicodeString*, UErrorCode&) const",93957347923952,93957347924182],["breakiterator_cleanup()",93957347924432,93957347924477],["icu_68::ByteSinkUtil::appendChange(unsigned char const*, unsigned char const*, char16_t const*, int, icu_68::ByteSink&, icu_68::Edits*, UErrorCode&)",93957347925248,93957347925306],["icu_68::ByteSinkUtil::appendUnchanged(unsigned char const*, unsigned char const*, icu_68::ByteSink&, unsigned int, icu_68::Edits*, UErrorCode&)",93957347925520,93957347925645],["icu_68::CharStringByteSink::Append(char const*, int)",93957347925680,93957347925714],["icu_68::ByteSink::GetAppendBuffer(int, int, char*, int, int*)",93957347925824,93957347925858],["icu_68::CheckedArrayByteSink::Reset()",93957347925920,93957347925941],["icu_68::CheckedArrayByteSink::GetAppendBuffer(int, int, char*, int, int*)",93957347926080,93957347926135],["icu_68::BytesTrieBuilder::~BytesTrieBuilder()",93957347926272,93957347926359],["icu_68::BytesTrieBuilder::add(icu_68::StringPiece, int, UErrorCode&)",93957347926464,93957347926826],["icu_68::BytesTrieBuilder::buildStringPiece(UStringTrieBuildOption, UErrorCode&)",93957347927344,93957347927393],["icu_68::BytesTrieBuilder::getElementStringLength(int) const",93957347927568,93957347927628],["icu_68::BytesTrieBuilder::getElementValue(int) const",93957347927680,93957347927697],["icu_68::BytesTrieBuilder::countElementUnits(int, int, int) const",93957347927904,93957347928010],["icu_68::BytesTrieBuilder::indexOfElementWithNextUnit(int, int, char16_t) const",93957347928128,93957347928193],["icu_68::BytesTrieBuilder::BTLinearMatchNode::write(icu_68::StringTrieBuilder&)",93957347928272,93957347928348],["icu_68::BytesTrieBuilder::createLinearMatchNode(int, int, int, icu_68::StringTrieBuilder::Node*) const",93957347928576,93957347928789],["icu_68::BytesTrieBuilder::writeElementUnits(int, int, int)",93957347929008,93957347929056],["icu_68::BytesTrieBuilder::writeValueAndType(signed char, int, int)",93957347929280,93957347929353],["icu_68::BytesTrie::readValue(unsigned char const*, int)",93957347929552,93957347929674],["icu_68::BytesTrie::nextImpl(unsigned char const*, int)",93957347930352,93957347930532],["icu_68::CanonicalIterator::getDynamicClassID() const",93957347930816,93957347930829],["icu_68::CanonicalIterator::setSource(icu_68::UnicodeString const&, UErrorCode&)",93957347931024,93957347932347],["icu_68::CanonicalIterator::cleanPieces()",93957347932416,93957347932633],["icu_68::CanonicalIterator::reset()",93957347932704,93957347932746],["icu_68::CanonicalIterator::getEquivalents(icu_68::UnicodeString const&, int&, UErrorCode&)",93957347933008,93957347935031],["icu_68::CanonicalIterator::getEquivalents2(icu_68::Hashtable*, char16_t const*, int, UErrorCode&)",93957347936000,93957347937524],["icu_68::CharString::CharString(icu_68::CharString&&)",93957347938720,93957347938814],["icu_68::CharString::cloneData(UErrorCode&) const",93957347938928,93957347939016],["icu_68::CharString::ensureCapacity(int, int, UErrorCode&)",93957347939152,93957347939439],["icu_68::CharString::truncate(int)",93957347939488,93957347939521],["icu_68::CharString::append(char const*, int, UErrorCode&)",93957347939616,93957347939957],["icu_68::CharString::CharString(char const*, int, UErrorCode&)",93957347940000,93957347940037],["icu_68::CharString::appendInvariantChars(icu_68::UnicodeString const&, UErrorCode&)",93957347940160,93957347940343],["icu_68::CharString::ensureEndsWithFileSeparator(UErrorCode&)",93957347940496,93957347940589],["uprv_realloc_68",93957347940656,93957347940796],["uprv_isASCIILetter_68",93957347940864,93957347940885],["uprv_asciitolower_68",93957347940928,93957347940948],["T_CString_toUpperCase_68",93957347941024,93957347941074],["uprv_stricmp_68",93957347941280,93957347941409],["uprv_strdup_68",93957347941568,93957347941637],["icu_68::Edits::~Edits()",93957347941664,93957347941691],["icu_68::Edits::addReplace(int, int)",93957347942288,93957347943229],["icu_68::Edits::copyErrorTo(UErrorCode&) const",93957347943408,93957347943436],["icu_68::Edits::Iterator::next(signed char, UErrorCode&)",93957347943488,93957347944462],["icu_68::UStringSet::~UStringSet()",93957347944480,93957347944508],["icu_68::SimpleFilteredSentenceBreakData::~SimpleFilteredSentenceBreakData()",93957347944592,93957347944674],["icu_68::SimpleFilteredSentenceBreakIterator::~SimpleFilteredSentenceBreakIterator()",93957347944960,93957347945071],["icu_68::SimpleFilteredSentenceBreakIterator::breakExceptionAt(int)",93957347945200,93957347945898],["icu_68::SimpleFilteredSentenceBreakIterator::next()",93957347946128,93957347946166],["icu_68::SimpleFilteredSentenceBreakIterator::preceding(int)",93957347946208,93957347946423],["icu_68::SimpleFilteredSentenceBreakIterator::isBoundary(int)",93957347946640,93957347946795],["icu_68::SimpleFilteredSentenceBreakIterator::following(int)",93957347946848,93957347946886],["icu_68::SimpleFilteredBreakIteratorBuilder::~SimpleFilteredBreakIteratorBuilder()",93957347946928,93957347946970],["icu_68::SimpleFilteredBreakIteratorBuilder::SimpleFilteredBreakIteratorBuilder(icu_68::Locale const&, UErrorCode&)",93957347947040,93957347947679],["icu_68::SimpleFilteredBreakIteratorBuilder::unsuppressBreakAfter(icu_68::UnicodeString const&, UErrorCode&)",93957347947824,93957347947847],["icu_68::FilteredBreakIteratorBuilder::createInstance(icu_68::Locale const&, UErrorCode&)",93957347949792,93957347949904],["icu_68::SimpleFilteredSentenceBreakIterator::getText() const",93957347950016,93957347950034],["icu_68::SimpleFilteredSentenceBreakIterator::setText(icu_68::UnicodeString const&)",93957347950080,93957347950101],["icu_68::SimpleFilteredSentenceBreakIterator::adoptText(icu_68::CharacterIterator*)",93957347950144,93957347950165],["icu_68::SimpleFilteredSentenceBreakIterator::createBufferClone(void*, int&, UErrorCode&)",93957347950208,93957347950225],["icu_68::LoadedNormalizer2Impl::~LoadedNormalizer2Impl()",93957347950288,93957347950339],["icu_68::LoadedNormalizer2Impl::isAcceptable(void*, char const*, char const*, UDataInfo const*)",93957347950416,93957347950474],["icu_68::Norm2AllModes::createInstance(char const*, char const*, UErrorCode&)",93957347950656,93957347950785],["icu_68::initSingletons(char const*, UErrorCode&)",93957347950912,93957347951227],["icu_68::Normalizer2::getNFKCInstance(UErrorCode&)",93957347951344,93957347951463],["icu_68::uprv_loaded_normalizer2_cleanup()",93957347952128,93957347952261],["icu_68::LocalPointer<icu_68::Norm2AllModes>::~LocalPointer()",93957347952320,93957347952363],["icu_68::Normalizer2Factory::getNFKCImpl(UErrorCode&)",93957347952672,93957347952788],["unorm_getQuickCheck_68",93957347952928,93957347953002],["icu_68::LocaleBuilder::~LocaleBuilder()",93957347953056,93957347953134],["icu_68::LocaleBuilder::setLocale(icu_68::Locale const&)",93957347953232,93957347953730],["icu_68::LocaleBuilder::setScript(icu_68::StringPiece)",93957347953856,93957347953958],["icu_68::LocaleBuilder::setVariant(icu_68::StringPiece)",93957347954080,93957347954446],["icu_68::LocaleBuilder::setUnicodeLocaleKeyword(icu_68::StringPiece, icu_68::StringPiece)",93957347954656,93957347954855],["icu_68::_copyExtensions(icu_68::Locale const&, icu_68::StringEnumeration*, icu_68::Locale&, bool, UErrorCode&)",93957347954912,93957347955776],["icu_68::LocaleMatcher::Builder::~Builder()",93957347956720,93957347956802],["icu_68::LocaleMatcher::Builder::setDefaultLocale(icu_68::Locale const*)",93957347956992,93957347957070],["icu_68::LocaleMatcher::putIfAbsent(icu_68::LSR const&, int, int, UErrorCode&)",93957347957120,93957347957233],["icu_68::(anonymous namespace)::getMaximalLsrOrUnd(icu_68::XLikelySubtags const&, icu_68::Locale const&, UErrorCode&)",93957347959888,93957347959989],["icu_68::MaybeStackArray<signed char, 100>::MaybeStackArray(int, UErrorCode)",93957347960016,93957347960110],["icu_68::LocaleMatcher::getBestMatch(icu_68::Locale const&, UErrorCode&) const",93957347960352,93957347960584],["icu_68::LocaleMatcher::getBestMatch(icu_68::Locale::Iterator&, UErrorCode&) const",93957347961376,93957347961775],["uloc_openAvailableByType_68",93957347961968,93957347962139],["(anonymous namespace)::AvailableLocalesSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347962240,93957347962823],["(anonymous namespace)::AvailableLocalesStringEnumeration::count(UErrorCode&) const",93957347962864,93957347962903],["icu_68::LocaleBased::getLocale(ULocDataLocaleType, UErrorCode&) const",93957347963040,93957347963123],["icu_68::LocaleBased::setLocaleIDs(char const*, char const*)",93957347963184,93957347963263],["uloc_getDisplayCountry_68",93957347963312,93957347963598],["icu_68::Locale::getDisplayName(icu_68::Locale const&, icu_68::UnicodeString&) const",93957347963888,93957347964163],["uloc_getDisplayKeywordValue_68",93957347968272,93957347968895],["icu_68::LocaleDistance::initLocaleDistance(UErrorCode&)",93957347969264,93957347969439],["icu_68::LocaleDistance::getSingleton(UErrorCode&)",93957347969504,93957347969605],["icu_68::LocaleDistance::getBestIndexAndDistance(icu_68::LSR const&, icu_68::LSR const**, int, int, ULocMatchFavorSubtag, ULocMatchDirection) const",93957347970016,93957347971430],["icu_68::LocaleDistance::getRegionPartitionsDistance(icu_68::BytesTrie&, unsigned long, char const*, char const*, int)",93957347971792,93957347972421],["icu_68::ICUDataTable::get(char const*, char const*, char const*, icu_68::UnicodeString&) const",93957347972528,93957347972763],["icu_68::LocaleDisplayNamesImpl::initialize()",93957347973168,93957347975139],["icu_68::LocaleDisplayNamesImpl::~LocaleDisplayNamesImpl()",93957347975872,93957347976096],["icu_68::LocaleDisplayNamesImpl::getDialectHandling() const",93957347976128,93957347976140],["icu_68::LocaleDisplayNamesImpl::adjustForUsageAndContext(icu_68::LocaleDisplayNamesImpl::CapContextUsage, icu_68::UnicodeString&) const",93957347976208,93957347976374],["ncat(char*, unsigned int, ...)",93957347980096,93957347980375],["icu_68::LocaleDisplayNamesImpl::scriptDisplayName(char const*, icu_68::UnicodeString&, signed char) const",93957347980768,93957347981175],["icu_68::LocaleDisplayNamesImpl::appendWithSep(icu_68::UnicodeString&, icu_68::UnicodeString const&) const",93957347981600,93957347981697],["icu_68::LocaleDisplayNamesImpl::keyDisplayName(char const*, icu_68::UnicodeString&, signed char) const",93957347981968,93957347982210],["icu_68::LocaleDisplayNamesImpl::localeDisplayName(char const*, icu_68::UnicodeString&) const",93957347982928,93957347983048],["icu_68::LocaleDisplayNamesImpl::scriptDisplayName(char const*, icu_68::UnicodeString&) const",93957347983568,93957347983580],["icu_68::LocaleDisplayNamesImpl::regionDisplayName(char const*, icu_68::UnicodeString&) const",93957347983632,93957347983644],["icu_68::LocaleDisplayNamesImpl::keyDisplayName(char const*, icu_68::UnicodeString&) const",93957347983664,93957347983676],["icu_68::LocaleDisplayNames::createInstance(icu_68::Locale const&, UDialectHandling)",93957347983696,93957347983762],["icu_68::LocaleDisplayNamesImpl::CapitalizationContextSink::put(char const*, icu_68::ResourceValue&, signed char, UErrorCode&)",93957347983856,93957347984378],["locale_cleanup()",93957347984944,93957347985185],["locale_get_default_68",93957347986704,93957347986784],["icu_68::Locale::getDynamicClassID() const",93957347986864,93957347986877],["icu_68::Locale::~Locale()",93957347986976,93957347987072],["icu_68::Locale::setToBogus()",93957347987120,93957347987216],["icu_68::Locale::Locale(icu_68::Locale const&)",93957347988192,93957347988231],["icu_68::Locale::Locale(icu_68::Locale&&)",93957347988544,93957347988579],["icu_68::Locale::clone() const",93957347988784,93957347988867],["icu_68::(anonymous namespace)::canonicalizeLocale(icu_68::Locale const&, icu_68::CharString&, UErrorCode&)",93957347988912,93957347999431],["icu_68::Locale::hashCode() const",93957347999632,93957347999666],["icu_68::Locale::addLikelySubtags(UErrorCode&)",93957347999712,93957347999928],["icu_68::Locale::canonicalize(UErrorCode&)",93957348000160,93957348000384],["icu_68::Locale::toLanguageTag(icu_68::ByteSink&, UErrorCode&) const",93957348000832,93957348000875],["icu_68::Locale::createCanonical(char const*)",93957348001136,93957348001272],["icu_68::Locale::getLocaleCache()",93957348001312,93957348004795],["icu_68::KeywordEnumeration::~KeywordEnumeration()",93957348004864,93957348004926],["icu_68::KeywordEnumeration::KeywordEnumeration(char const*, int, int, UErrorCode&)",93957348005264,93957348005491],["icu_68::Locale::getKeywordValue(icu_68::StringPiece, icu_68::ByteSink&, UErrorCode&) const",93957348005520,93957348005715],["icu_68::Locale::setKeywordValue(char const*, char const*, UErrorCode&)",93957348006352,93957348006609],["icu_68::KeywordEnumeration::getDynamicClassID() const",93957348006992,93957348007005],["icu_68::KeywordEnumeration::count(UErrorCode&) const",93957348007264,93957348007333],["icu_68::KeywordEnumeration::snext(UErrorCode&)",93957348007440,93957348007503],["icu_68::(anonymous namespace)::AliasReplacer::replaceLanguage(bool, bool, bool, icu_68::UVector&, UErrorCode&)",93957348007536,93957348009633],["icu_68::UniqueCharStrings::add(icu_68::UnicodeString const&, UErrorCode&)",93957348009776,93957348009935],["icu_68::(anonymous namespace)::AliasReplacer::replace(icu_68::Locale const&, icu_68::CharString&, UErrorCode&)::$_1::__invoke(void*)",93957348009952,93957348009995],["ulocimp_addLikelySubtags_68",93957348010048,93957348010058],["ulocimp_minimizeSubtags_68",93957348010624,93957348013771],["parseTagString(char const*, char*, int*, char*, int*, char*, int*, UErrorCode*)",93957348014256,93957348014856],["findLikelySubtags(char const*, char*, int, UErrorCode*)",93957348017056,93957348017581],["icu_68::XLikelySubtags::initLikelySubtags(UErrorCode&)",93957348018448,93957348018812],["icu_68::(anonymous namespace)::cleanup()",93957348022096,93957348022158],["icu_68::XLikelySubtags::getSingleton(UErrorCode&)",93957348022464,93957348022565],["icu_68::XLikelySubtags::~XLikelySubtags()",93957348023040,93957348023334],["icu_68::XLikelySubtags::makeMaximizedLsr(char const*, char const*, char const*, char const*, UErrorCode&) const",93957348023472,93957348023978],["icu_68::XLikelySubtags::trieNext(icu_68::BytesTrie&, char const*, int)",93957348024960,93957348025121],["icu_68::XLikelySubtags::getLikelyIndex(char const*, char const*) const",93957348025440,93957348025940],["uloc_getTableStringWithFallback_68",93957348026464,93957348027569],["icu_68::LocaleUtility::initLocaleFromName(icu_68::UnicodeString const&, icu_68::Locale&)",93957348028016,93957348028447],["icu_68::LocaleUtility::getAvailableLocaleNames(icu_68::UnicodeString const&)",93957348028592,93957348029553],["icu_68::LSR::LSR(char, char const*, char const*, char const*, int, UErrorCode&)",93957348029632,93957348030117],["icu_68::LSR::deleteOwned()",93957348030256,93957348030270],["icu_68::LSR::isEquivalentTo(icu_68::LSR const&) const",93957348030400,93957348030487],["icu_68::LSR::setHashCode()",93957348030592,93957348030699],["icu_68::MessagePattern::parse(icu_68::UnicodeString const&, UParseError*, UErrorCode&)",93957348030896,93957348031046],["icu_68::MessagePattern::copyStorage(icu_68::MessagePattern const&, UErrorCode&)",93957348031232,93957348031828],["icu_68::MessagePattern::~MessagePattern()",93957348031904,93957348032007],["icu_68::MessagePattern::parseMessage(int, int, int, UMessagePatternArgType, UParseError*, UErrorCode&)",93957348032048,93957348033185],["icu_68::MessagePattern::parsePluralStyle(icu_68::UnicodeString const&, UParseError*, UErrorCode&)",93957348034368,93957348034517],["icu_68::MessagePattern::operator==(icu_68::MessagePattern const&) const",93957348036416,93957348036694],["icu_68::MessagePattern::getNumericValue(icu_68::MessagePattern::Part const&) const",93957348036992,93957348037044],["icu_68::MessagePattern::addPart(UMessagePatternPartType, int, int, int, UErrorCode&)",93957348037152,93957348037409],["icu_68::MessagePattern::setParseError(UParseError*, int)",93957348039344,93957348039655],["icu_68::MessagePattern::isChoice(int)",93957348039760,93957348040136],["icu_68::MessagePattern::isSelect(int)",93957348040528,93957348040904],["icu_68::MessagePattern::parseSimpleStyle(int, UParseError*, UErrorCode&)",93957348041360,93957348041893],["icu_68::MessagePattern::addArgDoublePart(double, int, int, UErrorCode&)",93957348042672,93957348043056],["icu_68::Normalizer2::normalizeUTF8(unsigned int, icu_68::StringPiece, icu_68::ByteSink&, icu_68::Edits*, UErrorCode&) const",93957348043312,93957348043571],["icu_68::Normalizer2Factory::getNoopInstance(UErrorCode&)",93957348043712,93957348043887],["icu_68::Norm2AllModes::createInstance(icu_68::Normalizer2Impl*, UErrorCode&)",93957348043968,93957348044102],["icu_68::Norm2AllModes::getNFCInstance(UErrorCode&)",93957348044336,93957348044461],["icu_68::Normalizer2::getNFDInstance(UErrorCode&)",93957348044608,93957348044744],["icu_68::Normalizer2Factory::getNFCImpl(UErrorCode&)",93957348044896,93957348045029],["unorm_getFCD16_68",93957348045216,93957348045432],["icu_68::Normalizer2WithImpl::normalizeSecondAndAppend(icu_68::UnicodeString&, icu_68::UnicodeString const&, UErrorCode&) const",93957348045744,93957348045762],["icu_68::Normalizer2WithImpl::getDecomposition(int, icu_68::UnicodeString&) const",93957348045792,93957348045958],["icu_68::Normalizer2WithImpl::composePair(int, int) const",93957348046144,93957348046158],["icu_68::Normalizer2WithImpl::isNormalized(icu_68::UnicodeString const&, UErrorCode&) const",93957348046336,93957348046451],["icu_68::Normalizer2WithImpl::spanQuickCheckYes(icu_68::UnicodeString const&, UErrorCode&) const",93957348046592,93957348046699],["icu_68::FCDNormalizer2::hasBoundaryAfter(int) const",93957348046720,93957348046734],["icu_68::DecomposeNormalizer2::normalize(char16_t const*, char16_t const*, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348046896,93957348046910],["icu_68::DecomposeNormalizer2::spanQuickCheckYes(char16_t const*, char16_t const*, UErrorCode&) const",93957348046928,93957348046947],["icu_68::ComposeNormalizer2::normalizeUTF8(unsigned int, icu_68::StringPiece, icu_68::ByteSink&, icu_68::Edits*, UErrorCode&) const",93957348047104,93957348047254],["icu_68::ComposeNormalizer2::isNormalizedUTF8(icu_68::StringPiece, UErrorCode&) const",93957348047648,93957348047707],["icu_68::ComposeNormalizer2::hasBoundaryBefore(int) const",93957348047840,93957348048003],["icu_68::ComposeNormalizer2::isInert(int) const",93957348048208,93957348048387],["icu_68::ComposeNormalizer2::normalizeAndAppend(char16_t const*, char16_t const*, signed char, icu_68::UnicodeString&, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348048448,93957348048486],["icu_68::ComposeNormalizer2::getQuickCheck(int) const",93957348048528,93957348048674],["icu_68::FCDNormalizer2::normalize(char16_t const*, char16_t const*, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348048768,93957348048782],["icu_68::FCDNormalizer2::spanQuickCheckYes(char16_t const*, char16_t const*, UErrorCode&) const",93957348048800,93957348048819],["icu_68::NoopNormalizer2::normalizeUTF8(unsigned int, icu_68::StringPiece, icu_68::ByteSink&, icu_68::Edits*, UErrorCode&) const",93957348048880,93957348049015],["icu_68::NoopNormalizer2::isNormalized(icu_68::UnicodeString const&, UErrorCode&) const",93957348049104,93957348049116],["icu_68::NoopNormalizer2::spanQuickCheckYes(icu_68::UnicodeString const&, UErrorCode&) const",93957348049136,93957348049159],["icu_68::Normalizer2WithImpl::normalizeSecondAndAppend(icu_68::UnicodeString&, icu_68::UnicodeString const&, signed char, UErrorCode&) const",93957348049312,93957348049797],["icu_68::ReorderingBuffer::previousCC()",93957348050000,93957348050230],["icu_68::ReorderingBuffer::appendSupplementary(int, unsigned char, UErrorCode&)",93957348050576,93957348051100],["icu_68::ReorderingBuffer::appendZeroCC(int, UErrorCode&)",93957348052400,93957348052728],["icu_68::Normalizer2Impl::~Normalizer2Impl()",93957348053024,93957348053099],["icu_68::Normalizer2Impl::init(int const*, UCPTrie const*, unsigned short const*, unsigned char const*)",93957348053200,93957348053338],["icu_68::Normalizer2Impl::addCanonIterPropertyStarts(USetAdder const*, UErrorCode&) const",93957348053856,93957348054102],["icu_68::segmentStarterMapper(void const*, unsigned int)",93957348054224,93957348054237],["icu_68::Normalizer2Impl::decompose(char16_t const*, char16_t const*, icu_68::UnicodeString&, int, UErrorCode&) const",93957348054528,93957348054721],["icu_68::Normalizer2Impl::decompose(int, unsigned short, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348055536,93957348056093],["icu_68::Normalizer2Impl::decomposeShort(unsigned char const*, unsigned char const*, signed char, signed char, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348056592,93957348058558],["icu_68::Normalizer2Impl::getRawDecomposition(int, char16_t*, int&) const",93957348059152,93957348059716],["icu_68::Normalizer2Impl::hasDecompBoundaryBefore(int) const",93957348060352,93957348060596],["icu_68::Normalizer2Impl::addComposites(unsigned short const*, icu_68::UnicodeSet&) const",93957348060912,93957348061168],["icu_68::Normalizer2Impl::composePair(int, int) const",93957348063584,93957348064128],["icu_68::Normalizer2Impl::hasCompBoundaryBefore(char16_t const*, char16_t const*) const",93957348067120,93957348067327],["icu_68::ReorderingBuffer::appendBMP(char16_t, unsigned char, UErrorCode&)",93957348067568,93957348067984],["icu_68::Normalizer2Impl::composeAndAppend(char16_t const*, char16_t const*, signed char, signed char, icu_68::UnicodeString&, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348069264,93957348069866],["icu_68::Normalizer2Impl::findPreviousCompBoundary(char16_t const*, char16_t const*, signed char) const",93957348070224,93957348070595],["icu_68::Normalizer2Impl::hasCompBoundaryBefore(unsigned char const*, unsigned char const*) const",93957348075152,93957348075544],["icu_68::Normalizer2Impl::makeFCD(char16_t const*, char16_t const*, icu_68::ReorderingBuffer*, UErrorCode&) const",93957348075920,93957348077027],["icu_68::Normalizer2Impl::makeFCDAndAppend(char16_t const*, char16_t const*, signed char, icu_68::UnicodeString&, icu_68::ReorderingBuffer&, UErrorCode&) const",93957348077552,93957348078097],["icu_68::CanonIterData::addToStartSet(int, int, UErrorCode&)",93957348078624,93957348078890],["icu_68::Normalizer2Impl::makeCanonIterDataFromNorm16(int, int, unsigned short, icu_68::CanonIterData&, UErrorCode&) const",93957348079312,93957348080127],["icu_68::Normalizer2Impl::getCanonStartSet(int, icu_68::UnicodeSet&) const",93957348080160,93957348080538],["icu_68::PatternProps::isWhiteSpace(int)",93957348080560,93957348080622],["icu_68::PatternProps::skipWhiteSpace(icu_68::UnicodeString const&, int)",93957348080736,93957348080915],["icu_68::PatternProps::isIdentifier(char16_t const*, int)",93957348081296,93957348081460],["uprv_compareASCIIPropertyNames_68",93957348081664,93957348081923],["icu_68::PropNameData::getPropertyOrValueEnum(int, char const*)",93957348082368,93957348082658],["u_getPropertyEnum_68",93957348082944,93957348082959],["u_getPropertyValueEnum_68",93957348082976,93957348083165],["uscript_getShortName_68",93957348083200,93957348083219],["uprv_isNaN_68",93957348083328,93957348083368],["uprv_isPositiveInfinity_68",93957348083424,93957348083477],["uprv_getInfinity_68",93957348083504,93957348083518],["uprv_ceil_68",93957348083536,93957348083546],["uprv_fabs_68",93957348083584,93957348083597],["uprv_add32_overflow_68",93957348083632,93957348083645],["uprv_maxMantissa_68",93957348083744,93957348083758],["uprv_tzset_68",93957348083776,93957348083786],["uprv_tzname_clear_cache_68",93957348083808,93957348083825],["isValidOlsonID(char const*)",93957348084480,93957348084621],["u_setDataDirectory_68",93957348086064,93957348086184],["uprv_pathIsAbsolute_68",93957348086400,93957348086420],["u_getTimeZoneFilesDirectory_68",93957348086528,93957348086644],["uprv_getDefaultLocaleID_68",93957348086848,93957348087466],["icu_68::RuleBasedBreakIterator::getDynamicClassID() const",93957348087680,93957348087693],["icu_68::RuleBasedBreakIterator::RuleBasedBreakIterator(UDataMemory*, UErrorCode&)",93957348087968,93957348088221],["icu_68::RuleBasedBreakIterator::~RuleBasedBreakIterator()",93957348088624,93957348088903],["icu_68::RuleBasedBreakIterator::clone() const",93957348088944,93957348089131],["icu_68::RuleBasedBreakIterator::hashCode() const",93957348089328,93957348089354],["icu_68::RuleBasedBreakIterator::getUText(UText*, UErrorCode&) const",93957348089584,93957348089617],["icu_68::RuleBasedBreakIterator::adoptText(icu_68::CharacterIterator*)",93957348089648,93957348089808],["icu_68::RuleBasedBreakIterator::refreshInputText(UText*, UErrorCode&)",93957348089952,93957348090077],["icu_68::RuleBasedBreakIterator::last()",93957348090160,93957348090208],["icu_68::RuleBasedBreakIterator::next()",93957348090304,93957348090410],["icu_68::RuleBasedBreakIterator::following(int)",93957348090480,93957348090594],["icu_68::RuleBasedBreakIterator::isBoundary(int)",93957348090752,93957348090941],["icu_68::RuleBasedBreakIterator::handleNext()",93957348090960,93957348094501],["icu_68::RuleBasedBreakIterator::getRuleStatus() const",93957348096512,93957348096546],["icu_68::RuleBasedBreakIterator::getBinaryRules(unsigned int&)",93957348096768,93957348096804],["rbbi_cleanup_68",93957348096880,93957348096962],["icu_68::RuleBasedBreakIterator::getRules() const",93957348097584,93957348097717],["icu_68::UnhandledEngine::UnhandledEngine(UErrorCode&)",93957348097744,93957348097768],["icu_68::UnhandledEngine::~UnhandledEngine()",93957348097840,93957348097905],["icu_68::UnhandledEngine::findBreaks(UText*, int, int, icu_68::UVector32&) const",93957348097952,93957348098043],["icu_68::ICULanguageBreakFactory::ICULanguageBreakFactory(UErrorCode&)",93957348098192,93957348098216],["icu_68::ICULanguageBreakFactory::~ICULanguageBreakFactory()",93957348098256,93957348098304],["icu_68::ICULanguageBreakFactory::loadEngineFor(int)",93957348098560,93957348098924],["icu_68::DictionaryBreakEngine::~DictionaryBreakEngine()",93957348099744,93957348099786],["icu_68::DictionaryBreakEngine::findBreaks(UText*, int, int, icu_68::UVector32&) const",93957348099808,93957348100008],["icu_68::PossibleWord::candidates(UText*, icu_68::DictionaryMatcher*, int)",93957348100064,93957348100226],["icu_68::ThaiBreakEngine::~ThaiBreakEngine()",93957348100896,93957348101026],["icu_68::ThaiBreakEngine::divideUpDictionaryRange(UText*, int, int, icu_68::UVector32&) const",93957348101072,93957348103061],["icu_68::LaoBreakEngine::~LaoBreakEngine()",93957348103664,93957348103782],["icu_68::LaoBreakEngine::divideUpDictionaryRange(UText*, int, int, icu_68::UVector32&) const",93957348103920,93957348105393],["icu_68::BurmeseBreakEngine::~BurmeseBreakEngine()",93957348105952,93957348106070],["icu_68::KhmerBreakEngine::KhmerBreakEngine(icu_68::DictionaryMatcher*, UErrorCode&)",93957348106208,93957348106758],["icu_68::KhmerBreakEngine::~KhmerBreakEngine()",93957348106896,93957348107022],["icu_68::CjkBreakEngine::CjkBreakEngine(icu_68::DictionaryMatcher*, icu_68::LanguageType, UErrorCode&)",93957348108480,93957348109373],["icu_68::CjkBreakEngine::~CjkBreakEngine()",93957348109504,93957348109630],["icu_68::UCharsDictionaryMatcher::~UCharsDictionaryMatcher()",93957348114144,93957348114168],["icu_68::UCharsDictionaryMatcher::matches(UText*, int, int, int*, int*, int*, int*) const",93957348114224,93957348114724],["icu_68::BytesDictionaryMatcher::~BytesDictionaryMatcher()",93957348114768,93957348114810],["icu_68::RuleBasedBreakIterator::DictionaryCache::DictionaryCache(icu_68::RuleBasedBreakIterator*, UErrorCode&)",93957348115360,93957348115405],["icu_68::RuleBasedBreakIterator::DictionaryCache::reset()",93957348115424,93957348115452],["icu_68::RuleBasedBreakIterator::DictionaryCache::populateDictionary(int, int, int, int)",93957348115696,93957348116278],["icu_68::RuleBasedBreakIterator::BreakCache::reset(int, int)",93957348116368,93957348116402],["icu_68::RuleBasedBreakIterator::BreakCache::~BreakCache()",93957348116448,93957348116493],["icu_68::RuleBasedBreakIterator::BreakCache::following(int, UErrorCode&)",93957348116560,93957348116852],["icu_68::RuleBasedBreakIterator::BreakCache::populateNear(int, UErrorCode&)",93957348117024,93957348117755],["icu_68::RuleBasedBreakIterator::BreakCache::previous(UErrorCode&)",93957348118144,93957348118253],["icu_68::RuleBasedBreakIterator::BreakCache::populateFollowing()",93957348118336,93957348119071],["icu_68::RBBIDataWrapper::init(icu_68::RBBIDataHeader const*, UErrorCode&)",93957348120608,93957348120887],["icu_68::RBBIDataWrapper::operator==(icu_68::RBBIDataWrapper const&) const",93957348121072,93957348121115],["icu_68::RBBIDataWrapper::removeReference()",93957348121136,93957348121245],["icu_68::RBBIDataWrapper::getRuleSourceString() const",93957348121264,93957348121274],["icu_68::FileTracer::traceOpenDataFile(char const*, char const*, char const*)",93957348121360,93957348121768],["icu_68::StringCharacterIterator::StringCharacterIterator(icu_68::UnicodeString const&)",93957348121792,93957348121944],["icu_68::StringCharacterIterator::~StringCharacterIterator()",93957348122000,93957348122050],["icu_68::StringCharacterIterator::operator==(icu_68::ForwardCharacterIterator const&) const",93957348122144,93957348122329],["icu_68::StringCharacterIterator::setText(icu_68::UnicodeString const&)",93957348122448,93957348122545],["icu_68::ICUServiceKey::ICUServiceKey(icu_68::UnicodeString const&)",93957348122592,93957348122616],["icu_68::ICUServiceKey::~ICUServiceKey()",93957348122672,93957348122722],["icu_68::ICUServiceKey::currentID(icu_68::UnicodeString&) const",93957348122784,93957348122798],["icu_68::ICUServiceKey::isFallbackOf(icu_68::UnicodeString const&) const",93957348122880,93957348122973],["icu_68::ICUServiceKey::getDynamicClassID() const",93957348123088,93957348123101],["icu_68::SimpleFactory::~SimpleFactory()",93957348123168,93957348123233],["icu_68::SimpleFactory::updateVisibleIDs(icu_68::Hashtable&, UErrorCode&) const",93957348123504,93957348123608],["icu_68::SimpleFactory::getDynamicClassID() const",93957348123760,93957348123773],["icu_68::ICUService::~ICUService()",93957348123840,93957348123941],["icu_68::ICUService::getKey(icu_68::ICUServiceKey&, icu_68::UnicodeString*, UErrorCode&) const",93957348123984,93957348123999],["icu_68::cacheDeleter(void*)",93957348126080,93957348126150],["icu_68::ICUService::getVisibleIDs(icu_68::UVector&, icu_68::UnicodeString const*, UErrorCode&) const",93957348126176,93957348126478],["icu_68::ICUService::registerInstance(icu_68::UObject*, icu_68::UnicodeString const&, signed char, UErrorCode&)",93957348126800,93957348127054],["icu_68::ICUService::registerFactory(icu_68::ICUServiceFactory*, UErrorCode&)",93957348127168,93957348127410],["icu_68::ICUService::reset()",93957348127568,93957348127638],["icu_68::ICUService::isDefault() const",93957348127680,93957348127706],["icu_68::ICUService::createKey(icu_68::UnicodeString const*, UErrorCode&) const",93957348127744,93957348127821],["icu_68::ICUService::clearServiceCache()",93957348127968,93957348128021],["icu_68::LocaleKeyFactory::LocaleKeyFactory(int)",93957348128080,93957348128120],["icu_68::LocaleKeyFactory::~LocaleKeyFactory()",93957348128176,93957348128226],["getrpcent",139871564468016,139871564468202],["getrpcbyname_r",139871564469840,139871564470673],["svcunix_create",139871564476144,139871564476736],["authdes_pk_create",139871564478208,139871564478895],["totalordermag",139871565469552,139871565469585],["creal",139871565472832,139871565472833],["casin",139871565474816,139871565474981],["catanh",139871565481168,139871565482500],["ctanh",139871565484848,139871565485811],["clog",139871565486784,139871565487934],["csqrt",139871565488016,139871565489716],["__clog10",139871565489856,139871565490966],["v8::Shell::ExecuteModule(v8::Isolate*, char const*)",93957335239920,93957335240939],["v8::PerIsolateData::HandleUnhandledPromiseRejections()",93957335243680,93957335244076],["v8::PerIsolateData::RealmIndexOrThrow(v8::FunctionCallbackInfo<v8::Value> const&, int)",93957335245232,93957335245504],["v8::Shell::PerformanceMeasureMemory(v8::FunctionCallbackInfo<v8::Value> const&)",93957335245584,93957335245861],["v8::internal::Protectors::InvalidateMapIteratorLookupChain(v8::internal::Isolate*)",93957336706448,93957336706521],["v8::internal::JSFunction::MarkForOptimization(v8::internal::ConcurrencyMode)",93957336708000,93957336708380],["v8::internal::RuntimeProfiler::MarkCandidatesForOptimization(v8::internal::JavaScriptFrame*)",93957336710624,93957336710944],["v8::internal::StackGuard::PopInterruptsScope()",93957336711360,93957336711748],["v8::internal::StackGuard::ClearInterrupt(v8::internal::StackGuard::InterruptFlag)",93957336711936,93957336712037],["v8::internal::StackGuard::InitThread(v8::internal::ExecutionAccess const&)",93957336712144,93957336712301],["v8::internal::ThreadId::GetCurrentThreadId()",93957336715152,93957336715229],["v8::internal::ThreadLocalTop::Initialize(v8::internal::Isolate*)",93957336715328,93957336715454],["v8::internal::Utf16CharacterStream::Back()",93957339602592,93957339602659],["v8::internal::ProfilerCodeObserver::CodeEventHandlerInternal(v8::internal::CodeEventsContainer const&)",93957339609872,93957339610480],["v8::internal::CpuProfiler::CpuProfiler(v8::internal::Isolate*, v8::CpuProfilingNamingMode, v8::CpuProfilingLoggingMode, v8::internal::CpuProfilesCollection*, v8::internal::Symbolizer*, v8::internal::ProfilerEventsProcessor*, v8::internal::ProfilerCodeObserver*)",93957339613536,93957339613912],["v8::internal::CpuProfiler::StopProfiling(v8::internal::String)",93957339616032,93957339616141],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*>, std::__1::__unordered_map_hasher<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*>, std::__1::hash<v8::internal::Isolate*>, std::__1::equal_to<v8::internal::Isolate*>, true>, std::__1::__unordered_map_equal<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*>, std::__1::equal_to<v8::internal::Isolate*>, std::__1::hash<v8::internal::Isolate*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*> > >::__node_insert_multi_prepare(unsigned long, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*>&)",93957339617232,93957339617928],["v8::internal::HeapProfiler::~HeapProfiler()",93957339618592,93957339618871],["v8::internal::HeapProfiler::RemoveBuildEmbedderGraphCallback(void (*)(v8::Isolate*, v8::EmbedderGraph*, void*), void*)",93957339619296,93957339619406],["v8::internal::HeapProfiler::StartSamplingHeapProfiler(unsigned long, int, v8::HeapProfiler::SamplingFlags)",93957339620096,93957339620228],["v8::internal::HeapProfiler::StartHeapObjectsTracking(bool)",93957339620432,93957339620590],["v8::internal::HeapProfiler::StopHeapObjectsTracking()",93957339620608,93957339620785],["v8::internal::HeapProfiler::IsTakingSnapshot() const",93957339620832,93957339620841],["v8::internal::HeapProfiler::ObjectMoveEvent(unsigned long, unsigned long, int)",93957339620880,93957339620992],["v8::internal::HeapProfiler::UpdateObjectSizeEvent(unsigned long, int)",93957339621024,93957339621038],["v8::internal::HeapProfiler::isolate() const",93957339621296,93957339621317],["v8::internal::HeapProfiler::QueryObjects(v8::internal::Handle<v8::internal::Context>, v8::debug::QueryObjectPredicate*, v8::PersistentValueVector<v8::Object, v8::DefaultPersistentValueVectorTraits>*)",93957339621424,93957339622876],["v8::internal::V8HeapExplorer::~V8HeapExplorer()",93957339623088,93957339623329],["std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::SearchMatch, std::__1::default_delete<v8_inspector::protocol::Debugger::SearchMatch> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::SearchMatch, std::__1::default_delete<v8_inspector::protocol::Debugger::SearchMatch> > > >::reserve(unsigned long)",93957342390672,93957342391327],["v8_inspector::String16::fromDouble(double)",93957342396688,93957342397060],["_ZNSt3__16vectorItNS_9allocatorItEEE6insertIPKtEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleItNS_15iterator_traitsIS8_E9referenceEEE5valueENS_11__wrap_iterIPtEEE4typeENSC_IS6_EES8_S8_",93957342399664,93957342402226],["v8_inspector::String16Builder::appendNumber(unsigned long)",93957342405232,93957342405342],["v8_inspector::String16::fromUTF8(char const*, unsigned long)",93957342406144,93957342406776],["v8_inspector::String16::utf8() const",93957342406944,93957342406994],["v8_inspector::toV8String(v8::Isolate*, v8_inspector::String16 const&)",93957342408288,93957342408355],["v8_inspector::toV8String(v8::Isolate*, v8_inspector::StringView const&)",93957342408416,93957342408494],["v8::internal::compiler::MapRef::SerializeRootMap()",93957344073392,93957344073656],["v8::internal::compiler::JSBoundFunctionRef::serialized() const",93957344095792,93957344095955],["v8::internal::compiler::GlobalAccessFeedback::IsPropertyCell() const",93957344103760,93957344103784],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForPropertyAccess(v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::AccessMode, v8::base::Optional<v8::internal::compiler::NameRef>)",93957344105600,93957344109039],["v8::internal::compiler::JSHeapBroker::GetFeedbackForBinaryOperation(v8::internal::compiler::FeedbackSource const&)",93957344116512,93957344116616],["v8::internal::compiler::JSHeapBroker::GetFeedbackForInstanceOf(v8::internal::compiler::FeedbackSource const&)",93957344117888,93957344117948],["v8::internal::compiler::JSHeapBroker::GetFeedbackForRegExpLiteral(v8::internal::compiler::FeedbackSource const&)",93957344119104,93957344119164],["v8::internal::compiler::ProcessedFeedback::AsElementAccess() const",93957344123312,93957344123347],["v8::internal::compiler::ProcessedFeedback::AsRegExpLiteral() const",93957344123600,93957344123635],["v8::internal::compiler::(anonymous namespace)::IsFastLiteralHelper(v8::internal::Handle<v8::internal::JSObject>, int, int*)",93957344124368,93957344125713],["std::__1::__hash_table<v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>::hash, v8::internal::Handle<v8::internal::JSObject>::equal_to, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::JSObject> > >::__node_insert_unique(std::__1::__hash_node<v8::internal::Handle<v8::internal::JSObject>, void*>*)",93957344127056,93957344127420],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::Handle<v8::internal::Map>, void*>*>, bool> std::__1::__hash_table<v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>::hash, v8::internal::Handle<v8::internal::Map>::equal_to, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::Map> > >::__emplace_unique_key_args<v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map> const&>(v8::internal::Handle<v8::internal::Map> const&, v8::internal::Handle<v8::internal::Map> const&)",93957344128672,93957344129596],["std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, std::__1::__unordered_map_hasher<v8::internal::compiler::PropertyAccessTarget, std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::PropertyAccessTarget::Hash, v8::internal::compiler::PropertyAccessTarget::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::PropertyAccessTarget, std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::PropertyAccessTarget::Equal, v8::internal::compiler::PropertyAccessTarget::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo> > >::find<v8::internal::compiler::PropertyAccessTarget>(v8::internal::compiler::PropertyAccessTarget const&)",93957344132112,93957344132623],["v8::internal::compiler::JSHeapCopyReducer::JSHeapCopyReducer(v8::internal::compiler::JSHeapBroker*)",93957344135376,93957344135396],["v8::internal::compiler::JSInliningHeuristic::CollectFunctions(v8::internal::compiler::Node*, int)",93957344137920,93957344139494],["v8::internal::compiler::NodeProperties::GetFrameStateInput(v8::internal::compiler::Node*)",93957344144320,93957344144417],["v8::internal::compiler::JSInliningHeuristic::PrintCandidates()",93957344146304,93957344149759],["v8::internal::compiler::JSInliningHeuristic::DuplicateFrameStateAndRename(v8::internal::compiler::FrameState, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::JSInliningHeuristic::StateCloneMode)",93957344150304,93957344150787],["v8::internal::compiler::(anonymous namespace)::CollectFrameStateUniqueUses(v8::internal::compiler::Node*, v8::internal::compiler::FrameState, v8::internal::compiler::(anonymous namespace)::NodeAndIndex*, unsigned long*, unsigned long)",93957344152672,93957344152863],["v8::internal::compiler::JSInliningHeuristic::CreateOrReuseDispatch(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::JSInliningHeuristic::Candidate const&, v8::internal::compiler::Node**, v8::internal::compiler::Node**, v8::internal::compiler::Node**, int)",93957344152944,93957344153750],["v8::internal::compiler::JSInliningHeuristic::~JSInliningHeuristic()",93957344153824,93957344153883],["v8::internal::compiler::(anonymous namespace)::CollectStateValuesOwnedUses(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::(anonymous namespace)::NodeAndIndex*, unsigned long*, unsigned long)",93957344153904,93957344154116],["std::__1::pair<std::__1::__tree_iterator<v8::internal::compiler::JSInliningHeuristic::Candidate, std::__1::__tree_node<v8::internal::compiler::JSInliningHeuristic::Candidate, void*>*, long>, bool> std::__1::__tree<v8::internal::compiler::JSInliningHeuristic::Candidate, v8::internal::compiler::JSInliningHeuristic::CandidateCompare, v8::internal::ZoneAllocator<v8::internal::compiler::JSInliningHeuristic::Candidate> >::__emplace_unique_key_args<v8::internal::compiler::JSInliningHeuristic::Candidate, v8::internal::compiler::JSInliningHeuristic::Candidate const&>(v8::internal::compiler::JSInliningHeuristic::Candidate const&, v8::internal::compiler::JSInliningHeuristic::Candidate const&)",93957344154384,93957344154761],["v8::internal::compiler::NodeProperties::GetEffectInput(v8::internal::compiler::Node*, int)",93957344162064,93957344162212],["v8::internal::compiler::JSInliner::CreateArtificialFrameState(v8::internal::compiler::Node*, v8::internal::compiler::FrameState, int, v8::internal::BytecodeOffset, v8::internal::compiler::FrameStateType, v8::internal::compiler::SharedFunctionInfoRef, v8::internal::compiler::Node*)",93957344162896,93957344164505],["v8::internal::compiler::JSInliner::DetermineCallContext(v8::internal::compiler::Node*, v8::internal::compiler::Node**)",93957344165168,93957344166286],["v8::internal::compiler::JSInliner::ReduceJSCall(v8::internal::compiler::Node*)",93957344167920,93957344173630],["v8::internal::compiler::JSIntrinsicLowering::JSIntrinsicLowering(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*)",93957344173712,93957344173740],["v8::internal::compiler::JSIntrinsicLowering::ReduceTurbofanStaticAssert(v8::internal::compiler::Node*)",93957344174288,93957344174608],["v8::internal::compiler::JSIntrinsicLowering::ReduceCreateIterResultObject(v8::internal::compiler::Node*)",93957344174800,93957344175155],["v8::internal::compiler::JSIntrinsicLowering::ReduceGeneratorClose(v8::internal::compiler::Node*)",93957344175696,93957344176191],["v8::internal::compiler::JSIntrinsicLowering::ReduceAsyncFunctionAwaitCaught(v8::internal::compiler::Node*)",93957344176720,93957344176903],["std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, double) const",93957346694144,93957346695480],["std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, void const*) const",93957346698464,93957346699165],["std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > std::__1::__pad_and_output<wchar_t, std::__1::char_traits<wchar_t> >(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, wchar_t const*, wchar_t const*, wchar_t const*, std::__1::ios_base&, wchar_t)",93957346701408,93957346701858],["std::__1::num_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, double) const",93957346703776,93957346705075],["std::__1::num_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, void const*) const",93957346707872,93957346708591],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get_time(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346709856,93957346709888],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get_weekday(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346710000,93957346710401],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::do_get_year(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346710816,93957346711137],["std::__1::time_get<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >::__get_white_space(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >&, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, unsigned int&, std::__1::ctype<char> const&) const",93957346712816,93957346713177],["int std::__1::__get_up_to_n_digits<char, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> > >(std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >&, std::__1::istreambuf_iterator<char, std::__1::char_traits<char> >, unsigned int&, std::__1::ctype<char> const&, int)",93957346713520,93957346714172],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get_time(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346715424,93957346715456],["std::__1::time_get<wchar_t, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_get_weekday(std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::istreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, unsigned int&, tm*) const",93957346715568,93957346715969],["xdr_key_netstarg",139871564464352,139871564464441],["getrpcbynumber",139871564468656,139871564469094],["getrpcent_r",139871564469552,139871564469829],["getrpcbynumber_r",139871564470688,139871564471521],["modf",139871565465520,139871565465705],["roundeven",139871565469904,139871565470085],["conj",139871565472800,139871565472809],["cacos",139871565472864,139871565473159],["ccosh",139871565473744,139871565474802],["csin",139871565474992,139871565476120],["csinh",139871565480112,139871565481154],["catan",139871565482512,139871565483910],["v8::Shell::DoHostImportModuleDynamically(void*)",93957335236128,93957335238469],["v8::Shell::ReadChars(char const*, int*)",93957335242016,93957335242310],["v8::PerIsolateData::AddUnhandledPromise(v8::Local<v8::Promise>, v8::Local<v8::Message>, v8::Local<v8::Value>)",93957335243296,93957335243675],["v8::Shell::ReportException(v8::Isolate*, v8::Local<v8::Message>, v8::Local<v8::Value>)",93957335244080,93957335244891],["v8::internal::MicrotaskQueue::RemoveMicrotasksCompletedCallback(void (*)(v8::Isolate*, void*), void*)",93957336705584,93957336705694],["v8::internal::Protectors::InvalidatePromiseResolveLookupChain(v8::internal::Isolate*)",93957336706768,93957336706841],["v8::internal::RuntimeProfiler::RuntimeProfiler(v8::internal::Isolate*)",93957336707248,93957336707268],["v8::internal::RuntimeProfiler::MaybeOptimizeFrame(v8::internal::JSFunction, v8::internal::JavaScriptFrame*, v8::internal::CodeKind)",93957336708800,93957336709304],["v8::internal::RuntimeProfiler::MarkCandidatesForOptimizationScope::MarkCandidatesForOptimizationScope(v8::internal::RuntimeProfiler*)",93957336710224,93957336710623],["v8::internal::RuntimeProfiler::MarkCandidatesForOptimizationFromCode()",93957336710944,93957336711050],["v8::internal::StackGuard::PushInterruptsScope(v8::internal::InterruptsScope*)",93957336711152,93957336711346],["v8::internal::StackGuard::CheckInterrupt(v8::internal::StackGuard::InterruptFlag)",93957336711760,93957336711822],["v8::internal::Scanner::ScanHexDigits()",93957339595200,93957339595698],["v8::internal::AddressToTraceMap::MoveObject(unsigned long, unsigned long, int)",93957339604832,93957339605158],["non-virtual thunk to v8::internal::SamplingEventsProcessor::~SamplingEventsProcessor()",93957339608928,93957339609024],["v8::internal::SamplingEventsProcessor::Run()",93957339611664,93957339612291],["v8::internal::CpuProfiler::DeleteProfile(v8::internal::CpuProfile*)",93957339613344,93957339613403],["v8::internal::CpuProfiler::~CpuProfiler()",93957339614224,93957339614805],["v8::internal::CpuProfiler::StartProfiling(v8::internal::String, v8::CpuProfilingOptions, std::__1::unique_ptr<v8::DiscardedSamplesDelegate, std::__1::default_delete<v8::DiscardedSamplesDelegate> >)",93957339615856,93957339615916],["v8::internal::ProfilerCodeObserver::~ProfilerCodeObserver()",93957339616240,93957339616327],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*>, std::__1::__unordered_map_hasher<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*>, std::__1::hash<v8::internal::Isolate*>, std::__1::equal_to<v8::internal::Isolate*>, true>, std::__1::__unordered_map_equal<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*>, std::__1::equal_to<v8::internal::Isolate*>, std::__1::hash<v8::internal::Isolate*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*> > >::__node_insert_multi(std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::CpuProfiler*>, void*>*)",93957339616752,93957339617218],["v8::internal::CpuProfilesCollection::~CpuProfilesCollection()",93957339617936,93957339618220],["v8::internal::HeapProfiler::HeapProfiler(v8::internal::Heap*)",93957339618432,93957339618578],["v8::internal::HeapProfiler::~HeapProfiler()",93957339618880,93957339618908],["v8::internal::HeapProfiler::RemoveSnapshot(v8::internal::HeapSnapshot*)",93957339619120,93957339619291],["v8::internal::HeapProfiler::BuildEmbedderGraph(v8::internal::Isolate*, v8::EmbedderGraph*)",93957339619408,93957339619470],["v8::internal::HeapProfiler::TakeSnapshot(v8::ActivityControl*, v8::HeapProfiler::ObjectNameResolver*, bool)",93957339619536,93957339620083],["v8::internal::HeapProfiler::StopSamplingHeapProfiler()",93957339620240,93957339620388],["v8_inspector::(anonymous namespace)::serializeId(unsigned long, int, int)",93957342380448,93957342380621],["void std::__1::vector<std::__1::pair<int, v8_inspector::String16>, std::__1::allocator<std::__1::pair<int, v8_inspector::String16> > >::__push_back_slow_path<std::__1::pair<int, v8_inspector::String16> >(std::__1::pair<int, v8_inspector::String16>&&)",93957342393248,93957342393667],["v8_inspector::String16::fromInteger(unsigned long)",93957342395888,93957342396275],["v8_inspector::String16::toInteger64(bool*) const",93957342397408,93957342398064],["v8_inspector::String16Builder::append(v8_inspector::String16 const&)",93957342399616,93957342399652],["v8_inspector::String16Builder::append(char)",93957342402240,93957342402482],["_ZNSt3__16vectorItNS_9allocatorItEEE6insertIPcEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleItNS_15iterator_traitsIS7_E9referenceEEE5valueENS_11__wrap_iterIPtEEE4typeENSB_IPKtEES7_S7_",93957342402608,93957342405222],["v8_inspector::String16Builder::appendUnsignedAsHex(unsigned int)",93957342405344,93957342405453],["v8::internal::compiler::FunctionTemplateInfoRef::is_signature_undefined() const",93957344061856,93957344062041],["v8::internal::compiler::StringRef::IsSeqString() const",93957344078080,93957344078298],["v8::internal::compiler::FeedbackVectorRef::serialized() const",93957344085840,93957344085995],["v8::internal::compiler::SharedFunctionInfoRef::scope_info() const",93957344097696,93957344098037],["v8::internal::compiler::JSGlobalObjectRef::GetPropertyCell(v8::internal::compiler::NameRef const&, v8::internal::compiler::SerializationPolicy) const",93957344100400,93957344100777],["v8::internal::compiler::GlobalAccessFeedback::slot_index() const",93957344103984,93957344104001],["v8::internal::compiler::ElementAccessFeedback::HasOnlyStringMaps(v8::internal::compiler::JSHeapBroker*) const",93957344104784,93957344105310],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForBinaryOperation(v8::internal::compiler::FeedbackSource const&) const",93957344113216,93957344113422],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForTemplateObject(v8::internal::compiler::FeedbackSource const&)",93957344115424,93957344115939],["v8::internal::compiler::JSHeapBroker::GetFeedbackForCompareOperation(v8::internal::compiler::FeedbackSource const&)",93957344116864,93957344116968],["v8::internal::compiler::JSHeapBroker::GetFeedbackForPropertyAccess(v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::AccessMode, v8::base::Optional<v8::internal::compiler::NameRef>)",93957344117568,93957344117628],["v8::internal::compiler::JSHeapBroker::GetFeedbackForCall(v8::internal::compiler::FeedbackSource const&)",93957344118192,93957344118252],["v8::internal::compiler::JSHeapBroker::GetFeedbackForArrayOrObjectLiteral(v8::internal::compiler::FeedbackSource const&)",93957344118800,93957344118860],["v8::internal::compiler::JSHeapBroker::GetFeedbackForTemplateObject(v8::internal::compiler::FeedbackSource const&)",93957344119408,93957344119468],["v8::internal::compiler::JSHeapBroker::GetPropertyAccessInfo(v8::internal::compiler::MinimorphicLoadPropertyAccessFeedback const&, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::SerializationPolicy)",93957344121664,93957344123262],["v8::internal::compiler::ProcessedFeedback::AsInstanceOf() const",93957344123408,93957344123443],["v8::internal::compiler::ProcessedFeedback::AsLiteral() const",93957344123552,93957344123587],["v8::internal::compiler::ProcessedFeedback::AsTemplateObject() const",93957344123648,93957344123683],["v8::internal::compiler::TraceScope::TraceScope(v8::internal::compiler::JSHeapBroker*, void*, char const*)",93957344123904,93957344124353],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, std::__1::__unordered_map_hasher<v8::internal::compiler::PropertyAccessTarget, std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::PropertyAccessTarget::Hash, v8::internal::compiler::PropertyAccessTarget::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::PropertyAccessTarget, std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::PropertyAccessTarget::Equal, v8::internal::compiler::PropertyAccessTarget::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo> > >::rehash(unsigned long)",93957344125728,93957344126099],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::Handle<v8::internal::JSObject>, void*>*>, bool> std::__1::__hash_table<v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSObject>::hash, v8::internal::Handle<v8::internal::JSObject>::equal_to, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::JSObject> > >::__emplace_unique<v8::internal::JSObject, v8::internal::Isolate*>(v8::internal::JSObject&&, v8::internal::Isolate*&&)",93957344126880,93957344127056],["std::__1::pair<std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, void*>*, long>, std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, void*>*, long> > std::__1::__tree<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, std::__1::__map_value_compare<v8::internal::compiler::JSHeapBroker::SerializedFunction, std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> >, std::__1::less<v8::internal::compiler::JSHeapBroker::SerializedFunction>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<v8::internal::compiler::JSHeapBroker::SerializedFunction, v8::internal::ZoneVector<v8::internal::compiler::Hints> > > >::__equal_range_multi<v8::internal::compiler::JSHeapBroker::SerializedFunction>(v8::internal::compiler::JSHeapBroker::SerializedFunction const&) const",93957344127424,93957344127673],["v8::internal::compiler::ObjectData::ObjectData(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectDataKind)",93957344127984,93957344128661],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*>, std::__1::__unordered_map_hasher<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*>, v8::internal::compiler::FeedbackSource::Hash, v8::internal::compiler::FeedbackSource::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*>, v8::internal::compiler::FeedbackSource::Equal, v8::internal::compiler::FeedbackSource::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::ProcessedFeedback const*> > >::__emplace_unique_key_args<v8::internal::compiler::FeedbackSource, std::__1::pair<v8::internal::compiler::FeedbackSource const, v8::internal::compiler::ProcessedFeedback const*> >(v8::internal::compiler::FeedbackSource const&, std::__1::pair<v8::internal::compiler::FeedbackSource const, v8::internal::compiler::ProcessedFeedback const*>&&)",93957344129600,93957344130604],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Map>, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Map>, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > >, std::__1::__unordered_map_hasher<v8::internal::Handle<v8::internal::Map>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Map>, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > >, v8::internal::Handle<v8::internal::Map>::hash, v8::internal::Handle<v8::internal::Map>::equal_to, true>, std::__1::__unordered_map_equal<v8::internal::Handle<v8::internal::Map>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Map>, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > >, v8::internal::Handle<v8::internal::Map>::equal_to, v8::internal::Handle<v8::internal::Map>::hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Map>, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > > > >::__emplace_unique_key_args<v8::internal::Handle<v8::internal::Map>, std::__1::pair<v8::internal::Handle<v8::internal::Map> const, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > > >(v8::internal::Handle<v8::internal::Map> const&, std::__1::pair<v8::internal::Handle<v8::internal::Map> const, v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > >&&)",93957344131072,93957344132097],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, std::__1::__unordered_map_hasher<v8::internal::compiler::PropertyAccessTarget, std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::PropertyAccessTarget::Hash, v8::internal::compiler::PropertyAccessTarget::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::PropertyAccessTarget, std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo>, v8::internal::compiler::PropertyAccessTarget::Equal, v8::internal::compiler::PropertyAccessTarget::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::PropertyAccessTarget, v8::internal::compiler::PropertyAccessInfo> > >::__emplace_unique_key_args<v8::internal::compiler::PropertyAccessTarget, std::__1::pair<v8::internal::compiler::PropertyAccessTarget const, v8::internal::compiler::PropertyAccessInfo> >(v8::internal::compiler::PropertyAccessTarget const&, std::__1::pair<v8::internal::compiler::PropertyAccessTarget const, v8::internal::compiler::PropertyAccessInfo>&&)",93957344132624,93957344133881],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, std::__1::__unordered_map_hasher<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, v8::internal::compiler::FeedbackSource::Hash, v8::internal::compiler::FeedbackSource::Equal, true>, std::__1::__unordered_map_equal<v8::internal::compiler::FeedbackSource, std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>, v8::internal::compiler::FeedbackSource::Equal, v8::internal::compiler::FeedbackSource::Hash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::compiler::FeedbackSource, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo> > >::__emplace_unique_key_args<v8::internal::compiler::FeedbackSource, std::__1::pair<v8::internal::compiler::FeedbackSource const, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo> >(v8::internal::compiler::FeedbackSource const&, std::__1::pair<v8::internal::compiler::FeedbackSource const, v8::internal::compiler::MinimorphicLoadPropertyAccessInfo>&&)",93957344134352,93957344135364],["v8::internal::compiler::JSHeapCopyReducer::Reduce(v8::internal::compiler::Node*)",93957344135408,93957344137839],["v8::internal::compiler::JSHeapCopyReducer::reducer_name() const",93957344137904,93957344137917],["v8::internal::compiler::(anonymous namespace)::CanConsiderForInlining(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::JSFunctionRef const&)",93957344139504,93957344140685],["v8::internal::compiler::JSInliningHeuristic::Reduce(v8::internal::compiler::Node*)",93957344142432,93957344144306],["v8::internal::compiler::JSInliningHeuristic::InlineCandidate(v8::internal::compiler::JSInliningHeuristic::Candidate const&, bool)",93957344144432,93957344145877],["std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, unsigned long long) const",93957346693520,93957346694142],["std::__1::__libcpp_asprintf_l(char**, __locale_struct*, char const*, ...)",93957346695488,93957346695679],["std::__1::num_put<char, std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > >::do_put(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, std::__1::ios_base&, char, long double) const",93957346697088,93957346698458],["std::__1::num_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, bool) const",93957346699168,93957346699696],["std::__1::__num_put<wchar_t>::__widen_and_group_int(char*, char*, char*, wchar_t*, wchar_t*&, wchar_t*&, std::__1::locale const&)",93957346700336,93957346701404],["std::__1::num_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, long long) const",93957346701872,93957346702495],["std::__1::num_put<wchar_t, std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> > >::do_put(std::__1::ostreambuf_iterator<wchar_t, std::__1::char_traits<wchar_t> >, std::__1::ios_base&, wchar_t, unsigned long long) const",93957346703136,93957346703765],["std::__1::__num_put<wchar_t>::__widen_and_group_float(char*, char*, char*, wchar_t*, wchar_t*&, wchar_t*&, std::__1::locale const&)",93957346705088,93957346706514],["xdr_cryptkeyarg2",139871564463984,139871564464067],["rtime",139871564464912,139871564465458],["getrpcbyname",139871564468208,139871564468646],["setrpcent",139871564469104,139871564469322],["round",139871565459248,139871565459398],["nextup",139871565469264,139871565469421],["setpayload",139871565469632,139871565469773],["ufromfp",139871565470720,139871565471398],["carg",139871565472768,139871565472785],["cimag",139871565472816,139871565472821],["cabs",139871565472848,139871565472853],["cacosh",139871565473168,139871565473701],["v8::Shell::ModuleResolutionSuccessCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957335235200,93957335235458],["std::__1::map<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module>, std::__1::less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> >, std::__1::allocator<std::__1::pair<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> const, v8::Global<v8::Module> > > >::find(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> const&)",93957335238784,93957335239209],["v8::Shell::ExecuteWebSnapshot(v8::Isolate*, char const*)",93957335240944,93957335242010],["v8::PerIsolateData::~PerIsolateData()",93957335242320,93957335242765],["v8::internal::MicrotaskQueue::EnqueueMicrotask(v8::internal::Microtask)",93957336702128,93957336702515],["v8::internal::Protectors::InvalidateArrayIteratorLookupChain(v8::internal::Isolate*)",93957336706128,93957336706201],["v8::internal::Protectors::InvalidatePromiseHook(v8::internal::Isolate*)",93957336706608,93957336706681],["v8::internal::Protectors::InvalidateSetIteratorLookupChain(v8::internal::Isolate*)",93957336706928,93957336707001],["v8::internal::Protectors::InvalidateTypedArraySpeciesLookupChain(v8::internal::Isolate*)",93957336707168,93957336707241],["v8::internal::RuntimeProfiler::Optimize(v8::internal::JSFunction, v8::internal::OptimizationReason, v8::internal::CodeKind)",93957336707280,93957336707996],["v8::internal::RuntimeProfiler::AttemptOnStackReplacement(v8::internal::UnoptimizedFrame*, int)",93957336708384,93957336708799],["v8::internal::RuntimeProfiler::MaybeOSR(v8::internal::JSFunction, v8::internal::UnoptimizedFrame*)",93957336709312,93957336709788],["void v8::internal::Scanner::Advance<false>()",93957339579616,93957339579701],["v8::internal::Scanner::ScanRegExpFlags()",93957339601552,93957339601957],["v8::internal::AllocationTraceNode::~AllocationTraceNode()",93957339603712,93957339603829],["v8::internal::AllocationTracker::AllocationEvent(unsigned long, int)",93957339606112,93957339606949],["non-virtual thunk to v8::internal::SamplingEventsProcessor::~SamplingEventsProcessor()",93957339608736,93957339608824],["v8::internal::ProfilerEventsProcessor::AddDeoptStack(unsigned long, int)",93957339609040,93957339609414],["non-virtual thunk to v8::internal::ProfilerEventsProcessor::CodeEventHandler(v8::internal::CodeEventsContainer const&)",93957339611008,93957339611022],["v8::internal::ProfilerCodeObserver::ProfilerCodeObserver(v8::internal::Isolate*)",93957339612496,93957339612914],["v8::internal::CpuProfiler::ResetProfiles()",93957339613168,93957339613343],["v8::internal::CpuProfiler::CpuProfiler(v8::internal::Isolate*, v8::CpuProfilingNamingMode, v8::CpuProfilingLoggingMode)",93957339613408,93957339613524],["v8::internal::CpuProfiler::EnableLogging()",93957339613920,93957339614221],["v8::internal::CpuProfiler::set_sampling_interval(v8::base::TimeDelta)",93957339614816,93957339614826],["v8::internal::CpuProfiler::StartProcessorIfNotStarted()",93957339615232,93957339615842],["v8::internal::CpuProfiler::StopProfiling(char const*)",93957339615920,93957339616017],["v8::internal::ProfilerCodeObserver::~ProfilerCodeObserver()",93957339616144,93957339616226],["v8::internal::CpuSampler::~CpuSampler()",93957339616336,93957339616364],["std::__1::unordered_map<int, std::__1::unique_ptr<v8_inspector::InjectedScript, std::__1::default_delete<v8_inspector::InjectedScript> >, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, std::__1::unique_ptr<v8_inspector::InjectedScript, std::__1::default_delete<v8_inspector::InjectedScript> > > > >::erase(int const&)",93957342378032,93957342378557],["void v8_inspector::String16Builder::appendAll<char const*, v8_inspector::String16, char const*, v8_inspector::String16>(char const*, v8_inspector::String16, char const*, v8_inspector::String16)",93957342384240,93957342385670],["v8_inspector::(anonymous namespace)::findMagicComment(v8_inspector::String16 const&, v8_inspector::String16 const&, bool)",93957342391424,93957342393139],["v8_inspector::String16::String16(char const*)",93957342394288,93957342394607],["v8_inspector::String16::fromInteger(int)",93957342395504,93957342395876],["v8_inspector::String16::fromInteger64(long)",93957342396288,93957342396675],["v8_inspector::String16::fromDouble(double, int)",93957342397072,93957342397407],["v8_inspector::String16::toInteger(bool*) const",93957342398064,93957342398104],["v8::internal::compiler::NativeContextRef::js_array_holey_elements_map() const",93957344051712,93957344052027],["v8::internal::compiler::SharedFunctionInfoRef::kind() const",93957344068208,93957344068387],["v8::internal::compiler::MapRef::CanBeDeprecated() const",93957344076320,93957344076651],["v8::internal::compiler::ObjectRef::OddballToNumber() const",93957344080032,93957344080259],["v8::internal::compiler::AllocationSiteRef::boilerplate() const",93957344085040,93957344085364],["v8::internal::compiler::NativeContextData::Serialize(v8::internal::compiler::JSHeapBroker*)",93957344086960,93957344092935],["v8::internal::compiler::SharedFunctionInfoRef::SerializeFunctionTemplateInfo()",93957344096752,93957344096945],["v8::internal::compiler::MapRef::SerializeBackPointer()",93957344098800,93957344099089],["v8::internal::compiler::PropertyCellRef::Serialize() const",93957344099888,93957344100036],["v8::internal::compiler::ElementAccessFeedback::transition_groups() const",93957344100896,93957344100906],["v8::internal::compiler::GlobalAccessFeedback::property_cell() const",93957344103824,93957344103890],["v8::internal::compiler::GlobalAccessFeedback::GetConstantHint() const",93957344104032,93957344104485],["v8::internal::compiler::KeyedAccessMode::load_mode() const",93957344104688,93957344104729],["v8::internal::compiler::JSHeapBroker::GetFeedbackSlotKind(v8::internal::compiler::FeedbackSource const&) const",93957344105360,93957344105471],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForGlobalAccess(v8::internal::compiler::FeedbackSource const&)",93957344111792,93957344113027],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForForIn(v8::internal::compiler::FeedbackSource const&) const",93957344113632,93957344113838],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForRegExpLiteral(v8::internal::compiler::FeedbackSource const&)",93957344114896,93957344115420],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForCall(v8::internal::compiler::FeedbackSource const&)",93957344115952,93957344116506],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForBinaryOperation(v8::internal::compiler::FeedbackSource const&)",93957344116624,93957344116852],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForCompareOperation(v8::internal::compiler::FeedbackSource const&)",93957344116976,93957344117204],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForForIn(v8::internal::compiler::FeedbackSource const&)",93957344117328,93957344117556],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForPropertyAccess(v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::AccessMode, v8::base::Optional<v8::internal::compiler::NameRef>)",93957344117632,93957344117884],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForInstanceOf(v8::internal::compiler::FeedbackSource const&)",93957344117952,93957344118180],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForCall(v8::internal::compiler::FeedbackSource const&)",93957344118256,93957344118484],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForGlobalAccess(v8::internal::compiler::FeedbackSource const&)",93957344118560,93957344118788],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForArrayOrObjectLiteral(v8::internal::compiler::FeedbackSource const&)",93957344118864,93957344119092],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForRegExpLiteral(v8::internal::compiler::FeedbackSource const&)",93957344119168,93957344119396],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackForTemplateObject(v8::internal::compiler::FeedbackSource const&)",93957344119472,93957344119700],["v8::internal::compiler::JSHeapBroker::GetPropertyAccessInfo(v8::internal::compiler::MapRef, v8::internal::compiler::NameRef, v8::internal::compiler::AccessMode, v8::internal::compiler::CompilationDependencies*, v8::internal::compiler::SerializationPolicy)",93957344119984,93957344121658],["v8::internal::compiler::ProcessedFeedback::AsCall() const",93957344123264,93957344123299],["v8::internal::compiler::ProcessedFeedback::AsGlobalAccess() const",93957344123360,93957344123395],["v8::internal::compiler::ProcessedFeedback::AsNamedAccess() const",93957344123456,93957344123491],["xdr_keystatus",139871564463824,139871564463846],["xdr_unixcred",139871564464160,139871564464257],["xdr_key_netstres",139871564464448,139871564464523],["authdes_getucred",139871564467376,139871564468006],["fabs",139871565429392,139871565429401],["__exp10_finite",139871565465072,139871565465309],["__signbit",139871565466176,139871565466186],["totalorder",139871565469472,139871565469505],["getpayload",139871565469600,139871565469623],["setpayloadsig",139871565469776,139871565469901],["fromfp",139871565470096,139871565470716],["fromfpx",139871565471408,139871565472068],["v8::MaybeLocal<v8::Module> v8::Shell::CompileString<v8::Module>(v8::Isolate*, v8::Local<v8::Context>, v8::Local<v8::String>, v8::ScriptOrigin const&)",93957335230240,93957335230783],["v8::Shell::HostImportModuleDynamically(v8::Local<v8::Context>, v8::Local<v8::ScriptOrModule>, v8::Local<v8::String>, v8::Local<v8::FixedArray>)",93957335235744,93957335235898],["v8::Shell::HostInitializeImportMetaObject(v8::Local<v8::Context>, v8::Local<v8::Module>, v8::Local<v8::Object>)",93957335238480,93957335238784],["v8::(anonymous namespace)::ResolveModuleCallback(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::FixedArray>, v8::Local<v8::Module>)",93957335239216,93957335239916],["v8::internal::ErrorUtils::NewCalledNonCallableError(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957336699872,93957336699971],["v8::internal::MicrotaskQueue::IsRunningMicrotasks() const",93957336703760,93957336703769],["v8::internal::(anonymous namespace)::TraceProtectorInvalidation(char const*)",93957336705776,93957336706034],["v8::internal::Protectors::InvalidateIsConcatSpreadableLookupChain(v8::internal::Isolate*)",93957336706288,93957336706361],["v8::internal::Protectors::InvalidateRegExpSpeciesLookupChain(v8::internal::Isolate*)",93957336706528,93957336706601],["v8::internal::Protectors::InvalidatePromiseThenLookupChain(v8::internal::Isolate*)",93957336706688,93957336706761],["v8::internal::Protectors::InvalidatePromiseSpeciesLookupChain(v8::internal::Isolate*)",93957336706848,93957336706921],["v8::internal::Protectors::InvalidateStringIteratorLookupChain(v8::internal::Isolate*)",93957336707008,93957336707081],["v8::internal::UnbufferedCharacterStream<v8::internal::ChunkedStream>::ReadBlock()",93957339552272,93957339552376],["v8::internal::Scanner::ScanTemplateSpan()",93957339590368,93957339591899],["unsigned int v8::internal::Scanner::ScanUnicodeEscape<false>()",93957339598384,93957339599267],["v8::internal::Scanner::DoubleValue()",93957339602160,93957339602190],["unsigned int v8::internal::Scanner::ScanUnicodeEscape<true>()",93957339602848,93957339603438],["v8::internal::AddressToTraceMap::RemoveRange(unsigned long, unsigned long)",93957339604208,93957339604747],["v8::internal::AllocationTracker::~AllocationTracker()",93957339605536,93957339605772],["v8::internal::AllocationTracker::UnresolvedLocation::HandleWeakScript(v8::WeakCallbackInfo<void> const&)",93957339608000,93957339608032],["v8::internal::ProfilerEventsProcessor::~ProfilerEventsProcessor()",93957339608512,93957339608723],["v8::internal::SamplingEventsProcessor::~SamplingEventsProcessor()",93957339608832,93957339608925],["non-virtual thunk to v8::internal::ProfilerEventsProcessor::~ProfilerEventsProcessor()",93957339609024,93957339609038],["v8::internal::ProfilerEventsProcessor::AddCurrentStack(bool)",93957339609424,93957339609867],["v8::internal::ProfilerEventsProcessor::CodeEventHandler(v8::internal::CodeEventsContainer const&)",93957339610480,93957339611008],["v8::internal::SamplingEventsProcessor::ProcessOneSample()",93957339611024,93957339611662],["v8::internal::SamplingEventsProcessor::SetSamplingInterval(v8::base::TimeDelta)",93957339612304,93957339612487],["v8::internal::ProfilerCodeObserver::CodeEventHandler(v8::internal::CodeEventsContainer const&)",93957339612928,93957339612966],["v8_inspector::InspectedContext::contextId(v8::Local<v8::Context>)",93957342375712,93957342375722],["v8_inspector::RemoteObjectIdBase::parseId(v8_inspector::String16 const&)",93957342378992,93957342379486],["v8_inspector::String16 v8_inspector::String16::concat<v8_inspector::String16, char const*, v8_inspector::String16, char const*, v8_inspector::String16>(v8_inspector::String16, char const*, v8_inspector::String16, char const*, v8_inspector::String16)",93957342380816,93957342382838],["void v8_inspector::String16Builder::appendAll<char const*, v8_inspector::String16>(char const*, v8_inspector::String16)",93957342386352,93957342387042],["v8_inspector::findSourceURL(v8_inspector::String16 const&, bool)",93957342391328,93957342391419],["v8_inspector::findSourceMapURL(v8_inspector::String16 const&, bool)",93957342393152,93957342393243],["v8_inspector::String16::String16(unsigned short const*, unsigned long)",93957342393680,93957342394283],["v8_inspector::String16::String16(char const*, unsigned long)",93957342394608,93957342394887],["v8::internal::compiler::MapRef::is_deprecated() const",93957344042912,93957344043095],["v8::internal::compiler::NativeContextRef::slow_object_with_null_prototype_map() const",93957344056928,93957344057243],["v8::internal::compiler::ScopeInfoRef::HasOuterScopeInfo() const",93957344066336,93957344066515],["v8::internal::compiler::SharedFunctionInfoRef::IsUserJavaScript() const",93957344069808,93957344070080],["v8::internal::compiler::JSTypedArrayRef::buffer() const",93957344075232,93957344075624],["v8::internal::compiler::StringRef::IsExternalString() const",93957344077216,93957344077415],["v8::internal::compiler::NativeContextRef::GetInitialJSArrayMap(v8::internal::ElementsKind) const",93957344079408,93957344079486],["v8::internal::compiler::JSObjectRef::GetOwnDictionaryProperty(v8::internal::InternalIndex, v8::internal::compiler::SerializationPolicy) const",93957344082128,93957344082521],["v8::internal::compiler::ObjectRef::ObjectRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344084560,93957344084694],["v8::internal::compiler::NameRef::NameRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344085552,93957344085728],["v8::internal::compiler::RegExpBoilerplateDescriptionRef::Serialize()",93957344086144,93957344086352],["v8::internal::compiler::JSFunctionRef::Serialize()",93957344095504,93957344095645],["v8::internal::compiler::JSFunctionRef::serialized_code_and_feedback() const",93957344096144,93957344096307],["v8::internal::compiler::SharedFunctionInfoRef::function_template_info() const",93957344097104,93957344097452],["v8::internal::compiler::MapRef::SerializeOwnDescriptor(v8::internal::InternalIndex)",93957344098192,93957344098385],["v8::internal::compiler::JSTypedArrayRef::Serialize()",93957344099248,93957344099477],["v8::internal::compiler::JSBoundFunctionRef::Serialize()",93957344099744,93957344099887],["v8::internal::compiler::FunctionTemplateInfoRef::SerializeCallCode()",93957344100048,93957344100388],["v8::internal::compiler::CanInlineElementAccess(v8::internal::compiler::MapRef const&)",93957344100784,93957344100884],["v8::internal::compiler::ElementAccessFeedback::Refine(v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > const&, v8::internal::Zone*) const",93957344100912,93957344103752],["v8::internal::compiler::GlobalAccessFeedback::IsScriptContextSlot() const",93957344103792,93957344103816],["v8::internal::compiler::GlobalAccessFeedback::script_context() const",93957344103904,93957344103970],["v8::internal::compiler::GlobalAccessFeedback::immutable() const",93957344104016,93957344104030],["v8::internal::compiler::KeyedAccessMode::FromNexus(v8::internal::FeedbackNexus const&)",93957344104496,93957344104615],["v8::internal::compiler::KeyedAccessMode::IsStore() const",93957344104656,93957344104673],["v8::internal::compiler::KeyedAccessMode::store_mode() const",93957344104736,93957344104776],["v8::internal::compiler::JSHeapBroker::GetFeedback(v8::internal::compiler::FeedbackSource const&) const",93957344105312,93957344105360],["v8::internal::compiler::JSHeapBroker::FeedbackIsInsufficient(v8::internal::compiler::FeedbackSource const&) const",93957344105472,93957344105595],["v8::internal::compiler::JSHeapBroker::ProcessFeedbackMapsForElementAccess(std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > > const&, v8::internal::compiler::KeyedAccessMode const&, v8::internal::FeedbackSlotKind)",93957344109040,93957344111783],["v8::internal::compiler::PropertyCellRef::PropertyCellRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344113040,93957344113216],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForCompareOperation(v8::internal::compiler::FeedbackSource const&) const",93957344113424,93957344113630],["v8::internal::compiler::JSHeapBroker::ReadFeedbackForInstanceOf(v8::internal::compiler::FeedbackSource const&)",93957344113840,93957344114248],["xdr_authdes_verf",139871564460752,139871564460810],["xdr_netnamestr",139871564463888,139871564463915],["xdr_cryptkeyres",139871564464080,139871564464155],["xdr_getcredres",139871564464272,139871564464347],["__sinh_finite",139871565413072,139871565413532],["tanh",139871565457504,139871565457819],["llrint",139871565464880,139871565464886],["__finite",139871565465456,139871565465488],["frexp",139871565466016,139871565466164],["ldexp",139871565466192,139871565466318],["totalorder",139871565469424,139871565469461],["totalordermag",139871565469520,139871565469549],["v8::Shell::Stringify(v8::Isolate*, v8::Local<v8::Value>)",93957335222976,93957335223433],["v8::(anonymous namespace)::NormalizePath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957335231856,93957335234361],["v8::Shell::ModuleResolutionFailureCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957335235472,93957335235737],["v8::DynamicImportData::DynamicImportData(v8::Isolate*, v8::Local<v8::String>, v8::Local<v8::String>, v8::Local<v8::FixedArray>, v8::Local<v8::Promise::Resolver>)",93957335235904,93957335236117],["v8::internal::ErrorUtils::Construct(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::FrameSkipMode, v8::internal::Handle<v8::internal::Object>, v8::internal::ErrorUtils::StackTraceCollection)",93957336695232,93957336695728],["v8::internal::MicrotaskQueue::SetUpDefaultMicrotaskQueue(v8::internal::Isolate*)",93957336701440,93957336701533],["v8::internal::MicrotaskQueue::EnqueueMicrotask(v8::Isolate*, void (*)(void*), void*)",93957336703152,93957336703688],["v8::internal::MicrotaskQueue::IterateMicrotasks(v8::internal::RootVisitor*)",93957336705008,93957336705471],["v8::internal::Protectors::InvalidateArrayBufferDetaching(v8::internal::Isolate*)",93957336705696,93957336705769],["v8::internal::Protectors::InvalidateArrayConstructor(v8::internal::Isolate*)",93957336706048,93957336706121],["v8::internal::Protectors::InvalidateArraySpeciesLookupChain(v8::internal::Isolate*)",93957336706208,93957336706281],["v8::internal::Protectors::InvalidateNoElements(v8::internal::Isolate*)",93957336706368,93957336706441],["v8::internal::BufferedCharacterStream<v8::internal::ExternalStringStream>::~BufferedCharacterStream()",93957339550768,93957339550796],["v8::internal::Handle<v8::internal::String> v8::internal::Scanner::SourceMappingUrl<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957339553088,93957339553130],["v8::internal::Scanner::SeekForward(int)",93957339580944,93957339587321],["v8::internal::Scanner::ScanDecimalAsSmi(unsigned long*, bool)",93957339593744,93957339594015],["v8::internal::Scanner::ScanNumber(bool)",93957339595920,93957339598179],["v8::internal::Scanner::CombineSurrogatePair()",93957339600528,93957339600735],["v8::internal::Scanner::NextSymbol(v8::internal::AstValueFactory*) const",93957339602032,93957339602087],["v8::internal::Scanner::Select(v8::internal::Token::Value)",93957339602304,93957339602394],["void v8::internal::Scanner::Advance<true>()",93957339602672,93957339602837],["unsigned int v8::internal::Scanner::ScanUnlimitedLengthHexNumber<false>(unsigned int, int)",93957339603440,93957339603709],["v8::internal::AllocationTraceNode::FindOrAddChild(unsigned int)",93957339603840,93957339604207],["v8::internal::AddressToTraceMap::GetTraceNodeId(unsigned long)",93957339604752,93957339604823],["v8::internal::AllocationTracker::AllocationTracker(v8::internal::HeapObjectsMap*, v8::internal::StringsStorage*)",93957339605168,93957339605530],["v8::internal::AllocationTracker::PrepareForSerialization()",93957339605776,93957339606104],["v8::internal::AllocationTracker::AddFunctionInfo(v8::internal::SharedFunctionInfo, unsigned int)",93957339606960,93957339607989],["v8::internal::ProfilerEventsProcessor::ProfilerEventsProcessor(v8::internal::Isolate*, v8::internal::Symbolizer*, v8::internal::ProfilerCodeObserver*)",93957339608032,93957339608416],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8_inspector::String16, void*>*>, bool> std::__1::__hash_table<v8_inspector::String16, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, std::__1::allocator<v8_inspector::String16> >::__emplace_unique_key_args<v8_inspector::String16, v8_inspector::String16 const&>(v8_inspector::String16 const&, v8_inspector::String16 const&)",93957342368160,93957342370141],["v8_inspector::InspectedContext::setReported(int, bool)",93957342376192,93957342376667],["v8_inspector::InspectedContext::getInternalType(v8::Local<v8::Object>)",93957342378784,93957342378923],["v8_inspector::RemoteObjectId::parse(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::RemoteObjectId, std::__1::default_delete<v8_inspector::RemoteObjectId> >*)",93957342380208,93957342380408],["v8_inspector::RemoteCallFrameId::parse(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::RemoteCallFrameId, std::__1::default_delete<v8_inspector::RemoteCallFrameId> >*)",93957342380624,93957342380804],["void v8_inspector::String16Builder::appendAll<v8_inspector::String16, char const*, v8_inspector::String16, char const*, v8_inspector::String16>(v8_inspector::String16, char const*, v8_inspector::String16, char const*, v8_inspector::String16)",93957342382848,93957342384227],["void v8_inspector::String16Builder::appendAll<v8_inspector::String16, char const*, v8_inspector::String16>(v8_inspector::String16, char const*, v8_inspector::String16)",93957342385680,93957342386342],["v8_inspector::searchInTextByLinesImpl(v8_inspector::V8InspectorSession*, v8_inspector::String16 const&, v8_inspector::String16 const&, bool, bool)",93957342387056,93957342390665],["v8::internal::compiler::BytecodeArrayRef::SourcePositionTable() const",93957344035024,93957344035104],["v8::internal::compiler::JSFunctionRef::JSFunctionRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344046544,93957344046720],["v8::internal::compiler::NativeContextRef::catch_context_map() const",93957344054368,93957344054683],["v8::internal::compiler::NativeContextRef::set_value_iterator_map() const",93957344059488,93957344059803],["v8::internal::compiler::MapRef::serialized_prototype() const",93957344065472,93957344065631],["v8::internal::compiler::SharedFunctionInfoRef::GetBytecodeArray() const",93957344067168,93957344067631],["v8::internal::compiler::SharedFunctionInfoRef::HasBuiltinId() const",93957344068976,93957344069162],["v8::internal::SharedFunctionInfo::Inlineability v8::internal::SharedFunctionInfo::GetInlineability<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957344070960,93957344071352],["v8::internal::compiler::JSTypedArrayRef::is_on_heap() const",93957344074816,93957344075003],["v8::internal::compiler::MapRef::IsInobjectSlackTrackingInProgress() const",93957344075872,93957344076057],["v8::internal::compiler::MapRef::GetInObjectProperties() const",93957344076848,93957344077065],["v8::internal::compiler::FunctionTemplateInfoRef::c_function() const",93957344077632,93957344077851],["v8::internal::compiler::FeedbackVectorRef::shared_function_info() const",93957344078640,93957344078967],["v8::internal::compiler::ObjectRef::IsNullOrUndefined() const",93957344079696,93957344079869],["v8::internal::compiler::JSObjectRef::GetElementsKind() const",93957344081680,93957344081716],["v8::internal::compiler::JSArrayRef::length_unsafe() const",93957344082544,93957344082926],["v8::internal::compiler::SourceTextModuleRef::import_meta() const",93957344084176,93957344084545],["v8::internal::compiler::HeapObjectRef::GetHeapObjectType() const",93957344084704,93957344085037],["v8::internal::compiler::FixedArrayBaseRef::length() const",93957344085376,93957344085548],["v8::internal::compiler::FeedbackCellRef::shared_function_info() const",93957344085728,93957344085837],["v8::internal::compiler::FeedbackVectorRef::Serialize()",93957344086000,93957344086136],["v8::internal::compiler::NoChangeBecauseOfMissingData(v8::internal::compiler::JSHeapBroker*, char const*, int)",93957344086352,93957344086950],["v8::internal::compiler::NativeContextData::SerializeOnBackground(v8::internal::compiler::JSHeapBroker*)",93957344092944,93957344095492],["v8::internal::compiler::JSFunctionRef::SerializeCodeAndFeedback()",93957344095648,93957344095789],["v8::internal::compiler::JSFunctionRef::serialized() const",93957344095968,93957344096131],["v8::internal::compiler::JSFunctionRef::code() const",93957344096320,93957344096741],["v8::internal::compiler::SharedFunctionInfoRef::SerializeScopeInfoChain()",93957344096960,93957344097096],["v8::internal::compiler::SharedFunctionInfoRef::context_header_size() const",93957344097456,93957344097687],["v8::internal::compiler::JSObjectRef::SerializeObjectCreateMap()",93957344098048,93957344098189],["v8::internal::compiler::MapRef::serialized_own_descriptor(v8::internal::InternalIndex) const",93957344098400,93957344098792],["v8::internal::compiler::SourceTextModuleRef::Serialize()",93957344099104,93957344099245],["v8::internal::compiler::JSTypedArrayRef::serialized() const",93957344099488,93957344099660],["xdrrec_endofrecord",139871564459904,139871564459993],["ecb_crypt",139871564461152,139871564461292],["xdr_keybuf",139871564463856,139871564463883],["xdr_cryptkeyarg",139871564463920,139871564463973],["__j1_finite",139871565401392,139871565402210],["cbrt",139871565424896,139871565425263],["nextafter",139871565430464,139871565430793],["remquo",139871565457936,139871565458449],["sincos",139871565459440,139871565462080],["llround",139871565464896,139871565465062],["__issignaling",139871565465312,139871565465347],["copysign",139871565465488,139871565465509],["v8::MaybeLocal<v8::Script> v8::Shell::CompileString<v8::Script>(v8::Isolate*, v8::Local<v8::Context>, v8::Local<v8::String>, v8::ScriptOrigin const&)",93957335221312,93957335221842],["v8::Shell::ReadFile(v8::Isolate*, char const*)",93957335229120,93957335229592],["v8::Shell::JSONModuleEvaluationSteps(v8::Local<v8::Context>, v8::Local<v8::Module>)",93957335230784,93957335231850],["v8::(anonymous namespace)::ModuleEmbedderData::ModuleTypeFromImportAssertions(v8::Local<v8::Context>, v8::Local<v8::FixedArray>, bool)",93957335234368,93957335235200],["v8::internal::MessageFormatter::Format(v8::internal::Isolate*, v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336688992,93957336689207],["v8::internal::(anonymous namespace)::RenderCallSite(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::MessageLocation*, v8::internal::CallPrinter::ErrorHint*)",93957336696560,93957336697198],["v8::internal::ErrorUtils::ThrowLoadFromNullOrUndefined(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::MaybeHandle<v8::internal::Object>)",93957336700080,93957336701281],["v8::internal::MicrotaskQueue::~MicrotaskQueue()",93957336701632,93957336701726],["v8::internal::MicrotaskQueue::EnqueueMicrotask(v8::Isolate*, v8::Local<v8::Function>)",93957336702528,93957336703143],["v8::internal::MicrotaskQueue::PerformCheckpoint(v8::Isolate*)",93957336703696,93957336703749],["v8::internal::MicrotaskQueue::RunMicrotasks(v8::internal::Isolate*)",93957336703776,93957336705007],["v8::internal::MicrotaskQueue::AddMicrotasksCompletedCallback(void (*)(v8::Isolate*, void*), void*)",93957336705472,93957336705581],["v8::internal::Utf8ExternalStreamingStream::SearchPosition(unsigned long)",93957339546736,93957339547213],["v8::internal::UnbufferedCharacterStream<v8::internal::ExternalStringStream>::ReadBlock()",93957339551472,93957339551535],["v8::internal::BufferedCharacterStream<v8::internal::ChunkedStream>::ReadBlock()",93957339552768,93957339552942],["v8::internal::Scanner::Initialize()",93957339559904,93957339566035],["v8::internal::Scanner::ScanHtmlComment()",93957339580336,93957339580879],["bool v8::internal::Scanner::ScanEscape<false>()",93957339588048,93957339589228],["v8::internal::Scanner::ScanDecimalDigits(bool)",93957339592592,93957339593257],["v8::internal::Scanner::ScanOctalDigits()",93957339594448,93957339594872],["v8::internal::Scanner::ScanSignedInteger()",93957339595712,93957339595914],["v8::internal::Scanner::ScanIdentifierUnicodeEscape()",93957339598192,93957339598372],["v8::internal::Scanner::ScanIdentifierOrKeywordInnerSlow(bool, bool)",93957339599280,93957339600515],["v8::internal::Scanner::ScanRegExpPattern()",93957339600736,93957339601544],["v8::internal::Scanner::CurrentSymbol(v8::internal::AstValueFactory*) const",93957339601968,93957339602023],["v8::internal::Scanner::CurrentRawSymbol(v8::internal::AstValueFactory*) const",93957339602096,93957339602151],["v8::internal::Scanner::CurrentLiteralAsCString(v8::internal::Zone*) const",93957339602192,93957339602294],["v8::internal::Scanner::Select(unsigned int, v8::internal::Token::Value, v8::internal::Token::Value)",93957339602400,93957339602591],["v8_inspector::InjectedScript::ProtocolPromiseHandler::ProtocolPromiseHandler(v8_inspector::V8InspectorSessionImpl*, int, v8_inspector::String16 const&, v8_inspector::WrapMode, bool, v8_inspector::EvaluateCallback*, v8::MaybeLocal<v8::Promise>)",93957342361728,93957342362560],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<int, std::__1::allocator<int> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<int, std::__1::allocator<int> > >, std::__1::__unordered_map_hasher<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<int, std::__1::allocator<int> > >, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, true>, std::__1::__unordered_map_equal<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<int, std::__1::allocator<int> > >, std::__1::equal_to<v8_inspector::String16>, std::__1::hash<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__hash_value_type<v8_inspector::String16, std::__1::vector<int, std::__1::allocator<int> > > > >::__emplace_unique_key_args<v8_inspector::String16, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16 const&>, std::__1::tuple<> >(v8_inspector::String16 const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16 const&>&&, std::__1::tuple<>&&)",93957342372784,93957342374773],["v8_inspector::InspectedContext::isolate() const",93957342375776,93957342375789],["v8_inspector::InspectedContext::createInjectedScript(int)",93957342377088,93957342377984],["v8_inspector::InspectedContext::addInternalObject(v8::Local<v8::Object>, v8_inspector::V8InternalValueType)",93957342378560,93957342378784],["v8_inspector::InspectedContext::WeakCallbackData::callContextCollected(v8::WeakCallbackInfo<v8_inspector::InspectedContext::WeakCallbackData> const&)",93957342378928,93957342378979],["v8_inspector::String16::substring(unsigned long, unsigned long) const",93957342379488,93957342380207],["v8_inspector::RemoteObjectId::serialize(unsigned long, int, int)",93957342380416,93957342380440],["v8::internal::compiler::MapRef::is_stable() const",93957344023888,93957344024061],["v8::internal::compiler::FixedArrayRef::FixedArrayRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344038320,93957344038496],["v8::internal::compiler::MapRef::instance_size() const",93957344044448,93957344044624],["v8::internal::compiler::NativeContextRef::string_function() const",93957344048960,93957344049275],["v8::internal::compiler::NativeContextRef::js_array_packed_smi_elements_map() const",93957344052992,93957344053307],["v8::internal::compiler::NativeContextRef::initial_array_iterator_map() const",93957344055648,93957344055963],["v8::internal::compiler::NativeContextRef::map_key_iterator_map() const",93957344058208,93957344058523],["v8::internal::compiler::RegExpBoilerplateDescriptionRef::data() const",93957344060544,93957344060871],["v8::internal::compiler::FunctionTemplateInfoRef::accept_any_receiver() const",93957344062240,93957344062414],["v8::internal::compiler::ScopeInfoRef::ContextLength() const",93957344065968,93957344066143],["v8::internal::compiler::ScopeInfoRef::ScopeInfoRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344066816,93957344066992],["v8::internal::compiler::SharedFunctionInfoRef::has_duplicate_parameters() const",93957344067824,93957344068011],["v8::internal::compiler::SharedFunctionInfoRef::native() const",93957344068592,93957344068779],["v8::internal::compiler::SharedFunctionInfoRef::StartPosition() const",93957344069360,93957344069547],["v8::internal::compiler::SharedFunctionInfoRef::wasm_function_signature() const",93957344070384,93957344070724],["v8::internal::compiler::MapRef::GetStrongValue(v8::internal::InternalIndex) const",93957344072336,93957344072437],["v8::internal::compiler::MapRef::FindRootMap() const",93957344073664,93957344074815],["v8::internal::compiler::JSTypedArrayRef::length() const",93957344075008,93957344075229],["v8::internal::compiler::JSTypedArrayRef::data_ptr() const",93957344075632,93957344075858],["v8::internal::compiler::MapRef::constructor_function_index() const",93957344076064,93957344076310],["v8::internal::compiler::MapRef::CanTransition() const",93957344076656,93957344076842],["v8::internal::compiler::ScopeInfoRef::SerializeScopeInfoChain()",93957344077072,93957344077208],["v8::internal::compiler::CallHandlerInfoRef::callback() const",93957344077424,93957344077625],["v8::internal::compiler::FunctionTemplateInfoRef::c_signature() const",93957344077856,93957344078075],["v8::internal::compiler::NativeContextRef::scope_info() const",93957344078304,93957344078640],["v8::internal::compiler::NativeContextRef::GetFunctionMapFromIndex(int) const",93957344078976,93957344079398],["v8::internal::compiler::NativeContextRef::GetConstructorFunction(v8::internal::compiler::MapRef const&) const",93957344079488,93957344079691],["v8::internal::compiler::ObjectRef::BooleanValue() const",93957344079872,93957344080031],["v8::internal::compiler::JSObjectRef::GetOwnConstantElement(unsigned int, v8::internal::compiler::SerializationPolicy) const",93957344080272,93957344081668],["v8::internal::compiler::JSObjectRef::GetOwnFastDataProperty(v8::internal::Representation, v8::internal::FieldIndex, v8::internal::compiler::SerializationPolicy) const",93957344081728,93957344082128],["v8::internal::compiler::JSArrayRef::GetBoilerplateLength() const",93957344082528,93957344082538],["v8::internal::compiler::JSArrayRef::GetOwnCowElement(v8::internal::compiler::FixedArrayBaseRef, unsigned int, v8::internal::compiler::SerializationPolicy) const",93957344082928,93957344083697],["xdr_double",139871564457040,139871564457261],["getsecretkey",139871564460304,139871564460614],["cbc_crypt",139871564460816,139871564461146],["des_setparity",139871564463776,139871564463815],["__exp2l_finite",139871565368640,139871565368731],["__lgamma_r_finite",139871565405760,139871565408433],["__gamma_r_finite",139871565414608,139871565415831],["erfc",139871565426768,139871565428317],["logb",139871565430336,139871565430453],["nexttoward",139871565430800,139871565431202],["__fpclassify",139871565457824,139871565457901],["log2",139871565458464,139871565459234],["v8::ShellOptions::~ShellOptions()",93957335218192,93957335218357],["v8::(anonymous namespace)::Throw(v8::Isolate*, char const*)",93957335222848,93957335222908],["v8::Shell::FetchModuleTree(v8::Local<v8::Module>, v8::Local<v8::Context>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, v8::ModuleType)",93957335223440,93957335229115],["std::__1::unordered_map<v8::Global<v8::Module>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::(anonymous namespace)::ModuleEmbedderData::ModuleGlobalHash, std::__1::equal_to<v8::Global<v8::Module> >, std::__1::allocator<std::__1::pair<v8::Global<v8::Module> const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::find(v8::Global<v8::Module> const&)",93957335229600,93957335230237],["v8::internal::MessageLocation::MessageLocation(v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, int)",93957336686240,93957336686264],["v8::internal::ErrorUtils::ToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957336694208,93957336694700],["v8::internal::ErrorUtils::MakeGenericError(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::FrameSkipMode)",93957336696032,93957336696397],["v8::internal::(anonymous namespace)::ComputeLocation(v8::internal::Isolate*, v8::internal::MessageLocation*)",93957336697888,93957336698579],["v8::internal::ErrorUtils::NewConstructedNonConstructable(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957336699984,93957336700074],["v8::internal::Handle<v8::internal::Object>* v8::internal::NewArray<v8::internal::Handle<v8::internal::Object> >(unsigned long)",93957336701296,93957336701438],["v8::internal::MicrotaskQueue::~MicrotaskQueue()",93957336701536,93957336701629],["v8::internal::MicrotaskQueue::CallEnqueueMicrotask(v8::internal::Isolate*, long, unsigned long)",93957336701728,93957336702118],["v8::internal::ParserBase<v8::internal::PreParser>::ParseAsyncFunctionBody(v8::internal::Scope*, v8::internal::PreParserScopedStatementList*)",93957339539424,93957339539787],["v8::internal::Windows1252CharacterStream::~Windows1252CharacterStream()",93957339549008,93957339549142],["v8::internal::ExternalStringStream<unsigned short>::ExternalStringStream(v8::internal::ExternalTwoByteString, unsigned long, unsigned long)",93957339551104,93957339551285],["v8::internal::RelocatingCharacterStream::~RelocatingCharacterStream()",93957339551840,93957339551897],["v8::internal::BufferedCharacterStream<v8::internal::ChunkedStream>::~BufferedCharacterStream()",93957339552480,93957339552623],["v8::internal::Handle<v8::internal::String> v8::internal::Scanner::SourceUrl<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957339552992,93957339553034],["v8::internal::Scanner::SeekNext(unsigned long)",93957339553248,93957339559609],["v8::internal::Scanner::PeekAhead()",93957339572288,93957339578345],["v8::internal::Scanner::SkipMultiLineComment()",93957339579712,93957339580327],["v8::internal::Scanner::Peek() const",93957339580880,93957339580944],["v8::internal::Scanner::ScanString()",93957339587328,93957339588035],["v8::internal::Scanner::ScanPrivateName()",93957339589232,93957339590354],["bool v8::internal::Scanner::ScanEscape<true>()",93957339591904,93957339592590],["v8::internal::Scanner::ScanDecimalAsSmiWithNumericSeparators(unsigned long*)",93957339593264,93957339593735],["v8::internal::Scanner::ScanBinaryDigits()",93957339594016,93957339594440],["v8::internal::Scanner::ScanImplicitOctalDigits(int, v8::internal::Scanner::NumberKind*)",93957339594880,93957339595194],["v8_inspector::InjectedScript::CallFrameScope::CallFrameScope(v8_inspector::V8InspectorSessionImpl*, v8_inspector::String16 const&)",93957342358464,93957342359193],["v8_inspector::InjectedScript::ProtocolPromiseHandler::sendPromiseCollected()",93957342363056,93957342363581],["v8_crdtp::DeserializableProtocolObject<v8_inspector::protocol::Runtime::PropertyPreview>::ReadFrom(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >)",93957342371504,93957342371850],["v8_inspector::InspectedContext::WeakCallbackData::resetContext(v8::WeakCallbackInfo<v8_inspector::InspectedContext::WeakCallbackData> const&)",93957342375280,93957342375356],["v8_inspector::InspectedContext::context() const",93957342375728,93957342375761],["v8_inspector::InspectedContext::isReported(int) const",93957342375792,93957342376184],["v8_inspector::InspectedContext::getInjectedScript(int)",93957342376672,93957342377085],["v8_inspector::InspectedContext::discardInjectedScript(int)",93957342377984,93957342378017],["v8::internal::compiler::ObjectRef::IsCell() const",93957344018320,93957344018427],["v8::internal::compiler::MapRef::instance_descriptors() const",93957344029024,93957344029429],["v8::internal::compiler::BigIntRef::AsUint64() const",93957344036272,93957344036455],["v8::internal::compiler::JSFunctionRef::initial_map() const",93957344040336,93957344040648],["v8::internal::compiler::MapRef::is_callable() const",93957344043680,93957344043861],["v8::internal::compiler::MapRef::GetConstructor() const",93957344045184,93957344045616],["v8::internal::compiler::NativeContextRef::object_function() const",93957344047680,93957344047992],["v8::internal::compiler::NativeContextRef::promise_prototype() const",93957344050432,93957344050747],["v8::internal::compiler::NativeContextRef::js_array_packed_double_elements_map() const",93957344052352,93957344052667],["v8::internal::compiler::NativeContextRef::regexp_exec_function() const",93957344053728,93957344054043],["v8::internal::compiler::NativeContextRef::fast_aliased_arguments_map() const",93957344055008,93957344055323],["v8::internal::compiler::NativeContextRef::iterator_result_map() const",93957344056288,93957344056603],["v8::internal::compiler::NativeContextRef::with_context_map() const",93957344057568,93957344057883],["v8::internal::compiler::NativeContextRef::map_value_iterator_map() const",93957344058848,93957344059163],["v8::internal::compiler::PropertyCellRef::value() const",93957344060000,93957344060334],["v8::internal::compiler::RegExpBoilerplateDescriptionRef::flags() const",93957344061216,93957344061410],["v8::internal::compiler::FunctionTemplateInfoRef::has_call_code() const",93957344062048,93957344062231],["v8::internal::compiler::FunctionTemplateInfoRef::LookupHolderOfExpectedType(v8::internal::compiler::MapRef, v8::internal::compiler::SerializationPolicy)",93957344062416,93957344065457],["v8::internal::compiler::CallHandlerInfoRef::data() const",93957344065632,93957344065961],["v8::internal::compiler::ScopeInfoRef::HasContextExtensionSlot() const",93957344066144,93957344066323],["v8::internal::compiler::ScopeInfoRef::OuterScopeInfo() const",93957344066528,93957344066804],["v8::internal::compiler::SharedFunctionInfoRef::builtin_id() const",93957344066992,93957344067159],["v8::internal::compiler::SharedFunctionInfoRef::internal_formal_parameter_count() const",93957344067632,93957344067810],["v8::internal::compiler::SharedFunctionInfoRef::function_map_index() const",93957344068016,93957344068204],["v8::internal::compiler::SharedFunctionInfoRef::language_mode() const",93957344068400,93957344068587],["v8::internal::compiler::SharedFunctionInfoRef::HasBreakInfo() const",93957344068784,93957344068975],["v8::internal::compiler::SharedFunctionInfoRef::construct_as_builtin() const",93957344069168,93957344069355],["v8::internal::compiler::SharedFunctionInfoRef::is_compiled() const",93957344069552,93957344069802],["v8::internal::compiler::SharedFunctionInfoRef::wasm_module() const",93957344070080,93957344070380],["v8::internal::compiler::SharedFunctionInfoRef::GetInlineability() const",93957344070736,93957344070958],["v8::internal::compiler::FeedbackCellRef::value() const",93957344071360,93957344072331],["v8::internal::compiler::DescriptorArrayRef::GetStrongValue(v8::internal::InternalIndex) const",93957344072448,93957344073384],["_authenticate",139871564454720,139871564454786],["xdrrec_skiprecord",139871564459280,139871564459594],["getpublickey",139871564460000,139871564460294],["xdr_authdes_cred",139871564460624,139871564460752],["canonicalizef64x",139871565367760,139871565367848],["__fmod_finite",139871565395824,139871565396336],["__jn_finite",139871565403088,139871565404742],["__remainder_finite",139871565411456,139871565412785],["__sqrt_finite",139871565413536,139871565413541],["asinh",139871565416016,139871565416411],["erf",139871565425296,139871565426758],["expm1",139871565428320,139871565429386],["std::__1::unordered_set<std::__1::shared_ptr<v8::Worker>, std::__1::hash<std::__1::shared_ptr<v8::Worker> >, std::__1::equal_to<std::__1::shared_ptr<v8::Worker> >, std::__1::allocator<std::__1::shared_ptr<v8::Worker> > >::~unordered_set()",93957335216976,93957335217111],["v8::Shell::StoreInCodeCache(v8::Isolate*, v8::Local<v8::Value>, v8::ScriptCompiler::CachedData const*)",93957335218928,93957335219479],["v8::Shell::ReadLines(char const*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&)",93957335221856,93957335222846],["v8::Shell::ReportException(v8::Isolate*, v8::TryCatch*)",93957335222912,93957335222971],["std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > >, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > >, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > >, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > > > >::__node_insert_unique_prepare(unsigned long, std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > >&)",93957336684848,93957336685388],["v8::internal::MessageHandler::MakeMessageObject(v8::internal::Isolate*, v8::internal::MessageTemplate, v8::internal::MessageLocation const*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::FixedArray>)",93957336687088,93957336687215],["v8::internal::(anonymous namespace)::GetStackFrames(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>)",93957336693360,93957336693932],["v8::internal::MessageFormatter::TemplateString(v8::internal::MessageTemplate)",93957336695104,93957336695135],["v8::internal::(anonymous namespace)::GetStringPropertyOrDefault(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957336695728,93957336696026],["v8::internal::ErrorUtils::NewIteratorError(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957336696400,93957336696548],["v8::internal::ErrorUtils::ThrowSpreadArgError(v8::internal::Isolate*, v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>)",93957336697200,93957336697880],["v8::internal::(anonymous namespace)::BuildDefaultCallSite(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957336698592,93957336699860],["v8::internal::ParserBase<v8::internal::PreParser>::ParseBreakStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339528080,93957339528812],["v8::internal::Rewriter::Rewrite(v8::internal::ParseInfo*)",93957339542864,93957339543042],["v8::internal::ScannerStream::For(v8::ScriptCompiler::ExternalSourceStream*, v8::ScriptCompiler::StreamedSource::Encoding)",93957339548256,93957339548597],["void std::__1::vector<v8::internal::ChunkedStream<unsigned char>::Chunk, std::__1::allocator<v8::internal::ChunkedStream<unsigned char>::Chunk> >::__emplace_back_slow_path<unsigned char const*, unsigned long&, unsigned long>(unsigned char const*&&, unsigned long&, unsigned long&&)",93957339549600,93957339549906],["v8::internal::BufferedCharacterStream<v8::internal::ExternalStringStream>::Clone() const",93957339550848,93957339550952],["v8::internal::UnbufferedCharacterStream<v8::internal::ExternalStringStream>::~UnbufferedCharacterStream()",93957339551328,93957339551371],["v8::internal::RelocatingCharacterStream::UpdateBufferPointersCallback(v8::Isolate*, v8::GCType, v8::GCCallbackFlags, void*)",93957339551696,93957339551781],["v8::internal::UnbufferedCharacterStream<v8::internal::ChunkedStream>::~UnbufferedCharacterStream()",93957339552000,93957339552124],["v8::internal::ChunkedStream<unsigned short>::ProcessChunk(unsigned char const*, unsigned long, unsigned long)",93957339552384,93957339552469],["v8::internal::BufferedCharacterStream<v8::internal::ChunkedStream>::~BufferedCharacterStream()",93957339552624,93957339552758],["v8::internal::Handle<v8::internal::String> v8::internal::Scanner::SourceUrl<v8::internal::Isolate>(v8::internal::Isolate*) const",93957339552944,93957339552986],["v8::internal::Handle<v8::internal::String> v8::internal::Scanner::SourceMappingUrl<v8::internal::Isolate>(v8::internal::Isolate*) const",93957339553040,93957339553082],["v8::internal::Scanner::BookmarkScope::Apply()",93957339553136,93957339553234],["v8::internal::Scanner::Scanner(v8::internal::Utf16CharacterStream*, v8::internal::UnoptimizedCompileFlags)",93957339559616,93957339559897],["v8::internal::Scanner::Next()",93957339566048,93957339572284],["v8::internal::Scanner::TryToParseSourceURLComment()",93957339578352,93957339579610],["v8_inspector::InjectedScript::ContextScope::~ContextScope()",93957342356560,93957342356820],["v8_inspector::InjectedScript::bindObject(v8::Local<v8::Value>, v8_inspector::String16 const&)",93957342359504,93957342360115],["v8_inspector::InjectedScript::ProtocolPromiseHandler::catchCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957342362720,93957342362870],["v8_inspector::InjectedScript::ProtocolPromiseHandler::catchCallback(v8::Local<v8::Value>)",93957342364768,93957342366822],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8_inspector::String16, v8_inspector::protocol::Runtime::PropertyPreview*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8_inspector::String16, v8_inspector::protocol::Runtime::PropertyPreview*>, std::__1::__unordered_map_hasher<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, v8_inspector::protocol::Runtime::PropertyPreview*>, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, true>, std::__1::__unordered_map_equal<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, v8_inspector::protocol::Runtime::PropertyPreview*>, std::__1::equal_to<v8_inspector::String16>, std::__1::hash<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__hash_value_type<v8_inspector::String16, v8_inspector::protocol::Runtime::PropertyPreview*> > >::__emplace_unique_key_args<v8_inspector::String16, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16&&>, std::__1::tuple<> >(v8_inspector::String16 const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16&&>&&, std::__1::tuple<>&&)",93957342370144,93957342371497],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, v8_inspector::String16>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, v8_inspector::String16>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, v8_inspector::String16>, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, v8_inspector::String16>, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, v8_inspector::String16> > >::__emplace_unique_key_args<int, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>, std::__1::tuple<> >(int const&, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>&&, std::__1::tuple<>&&)",93957342371856,93957342372776],["v8_inspector::InspectedContext::InspectedContext(v8_inspector::V8InspectorImpl*, v8_inspector::V8ContextInfo const&, int)",93957342374784,93957342375271],["v8_inspector::InspectedContext::~InspectedContext()",93957342375360,93957342375698],["v8::internal::compiler::ObjectRef::AsContext() const",93957344013632,93957344013824],["v8::internal::compiler::JSObjectRef::GetObjectCreateMap() const",93957344020336,93957344020712],["v8::internal::compiler::JSObjectRef::SerializeElements()",93957344026448,93957344026589],["v8::internal::compiler::DescriptorArrayRef::GetFieldType(v8::internal::InternalIndex) const",93957344030944,93957344031376],["v8::internal::compiler::AllocationSiteRef::CanInlineCall() const",93957344035536,93957344035714],["v8::internal::compiler::HeapNumberRef::value() const",93957344037008,93957344037179],["v8::internal::compiler::JSFunctionRef::has_prototype() const",93957344039200,93957344039431],["v8::internal::compiler::JSFunctionRef::raw_feedback_cell() const",93957344041616,93957344042027],["v8::internal::compiler::MapRef::has_prototype_slot() const",93957344043296,93957344043476],["v8::internal::compiler::MapRef::is_constructor() const",93957344044064,93957344044246],["v8::internal::compiler::MapRef::UnusedPropertyFields() const",93957344044816,93957344045003],["v8::internal::compiler::MapRef::is_abandoned_prototype_map() const",93957344046016,93957344046218],["v8::internal::compiler::NativeContextRef::bigint_function() const",93957344047040,93957344047349],["v8::internal::compiler::NativeContextRef::promise_then() const",93957344048320,93957344048629],["v8::internal::compiler::NativeContextRef::global_object() const",93957344049600,93957344050008],["v8::internal::compiler::NativeContextRef::bound_function_without_constructor_map() const",93957344051072,93957344051387],["v8::internal::compiler::NativeContextRef::js_array_holey_smi_elements_map() const",93957344052032,93957344052347],["v8::internal::compiler::NativeContextRef::js_array_packed_elements_map() const",93957344052672,93957344052987],["v8::internal::compiler::NativeContextRef::script_context_table() const",93957344053312,93957344053726],["v8::internal::compiler::NativeContextRef::block_context_map() const",93957344054048,93957344054363],["v8::internal::compiler::NativeContextRef::eval_context_map() const",93957344054688,93957344055003],["v8::internal::compiler::NativeContextRef::function_context_map() const",93957344055328,93957344055643],["v8::internal::compiler::NativeContextRef::initial_string_iterator_map() const",93957344055968,93957344056283],["v8::internal::compiler::NativeContextRef::sloppy_arguments_map() const",93957344056608,93957344056923],["v8::internal::compiler::NativeContextRef::strict_arguments_map() const",93957344057248,93957344057563],["v8::internal::compiler::NativeContextRef::async_function_object_map() const",93957344057888,93957344058200],["v8::internal::compiler::NativeContextRef::map_key_value_iterator_map() const",93957344058528,93957344058843],["v8::internal::compiler::NativeContextRef::set_key_value_iterator_map() const",93957344059168,93957344059483],["v8::internal::compiler::ObjectBoilerplateDescriptionRef::size() const",93957344059808,93957344059990],["v8::internal::compiler::PropertyCellRef::property_details() const",93957344060336,93957344060540],["v8::internal::compiler::RegExpBoilerplateDescriptionRef::source() const",93957344060880,93957344061207],["v8::internal::compiler::FunctionTemplateInfoRef::call_code() const",93957344061424,93957344061842],["xdr_replymsg",139871564453264,139871564453350],["registerrpc",139871564456416,139871564456902],["xdrrec_create",139871564458912,139871564459272],["xdrrec_eof",139871564459600,139871564459893],["cpowf64x",139871565366080,139871565366223],["log1pf64x",139871565368064,139871565368137],["__atanh_finite",139871565394512,139871565394822],["__j0_finite",139871565398496,139871565399256],["__y1_finite",139871565402224,139871565403074],["__yn_finite",139871565404752,139871565405752],["__log10_finite",139871565409264,139871565409537],["__scalb_finite",139871565412928,139871565413069],["v8::DelayedTasksPlatform::DelayedJob::Run(v8::JobDelegate*)",93957335216816,93957335216858],["std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > > > >::~map()",93957335217136,93957335217150],["v8::Shell::LookupCodeCache(v8::Isolate*, v8::Local<v8::Value>)",93957335218368,93957335218914],["v8::Shell::ExecuteString(v8::Isolate*, v8::Local<v8::String>, v8::Local<v8::Value>, v8::Shell::PrintResult, v8::Shell::ReportExceptions, v8::Shell::ProcessMessageQueue)",93957335219488,93957335221312],["std::__1::shared_ptr<v8::internal::metrics::Recorder> std::__1::allocate_shared<v8::internal::metrics::Recorder, std::__1::allocator<v8::internal::metrics::Recorder>, , void>(std::__1::allocator<v8::internal::metrics::Recorder> const&)",93957336682512,93957336682756],["v8::internal::LocalIsolate::is_collecting_type_profile() const",93957336686112,93957336686135],["v8::internal::MessageHandler::DefaultMessageReport(v8::internal::Isolate*, v8::internal::MessageLocation const*, v8::internal::Handle<v8::internal::Object>)",93957336686320,93957336686723],["v8::internal::MessageHandler::ReportMessageNoExceptions(v8::internal::Isolate*, v8::internal::MessageLocation const*, v8::internal::Handle<v8::internal::Object>, v8::Local<v8::Value>)",93957336688160,93957336688837],["v8::internal::ErrorUtils::FormatStackTrace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>)",93957336689216,93957336693355],["v8::internal::JSReceiver::GetProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*)",93957336693936,93957336694198],["v8::internal::MessageFormatter::Format(v8::internal::Isolate*, v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957336694704,93957336695089],["v8::internal::ErrorUtils::Construct(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336695136,93957336695222],["v8::internal::ParserBase<v8::internal::PreParser>::NewScope(v8::internal::ScopeType) const",93957339511728,93957339511831],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::PreParser> >::ValidateAndRewriteReference(v8::internal::PreParserExpression, int, int)",93957339533920,93957339534101],["v8::internal::Processor::VisitTryCatchStatement(v8::internal::TryCatchStatement*)",93957339540848,93957339541033],["v8::internal::Utf8ExternalStreamingStream::SkipToPosition(unsigned long)",93957339544656,93957339545214],["v8::internal::ScannerStream::For(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957339547440,93957339547458],["v8::internal::Utf8ExternalStreamingStream::~Utf8ExternalStreamingStream()",93957339548736,93957339548854],["v8::internal::Windows1252CharacterStream::ReadBlock()",93957339549184,93957339549492],["v8::internal::ChunkedStream<unsigned char>::FetchChunk(unsigned long, v8::internal::RuntimeCallStats*)",93957339550416,93957339550575],["v8::internal::BufferedCharacterStream<v8::internal::ExternalStringStream>::~BufferedCharacterStream()",93957339550800,93957339550846],["v8::internal::BufferedCharacterStream<v8::internal::ExternalStringStream>::ReadBlock()",93957339550960,93957339551090],["v8::internal::UnbufferedCharacterStream<v8::internal::ExternalStringStream>::~UnbufferedCharacterStream()",93957339551296,93957339551321],["v8::internal::UnbufferedCharacterStream<v8::internal::ExternalStringStream>::Clone() const",93957339551376,93957339551462],["v8::internal::BufferedCharacterStream<v8::internal::OnHeapStream>::ReadBlock()",93957339551536,93957339551692],["v8::internal::RelocatingCharacterStream::~RelocatingCharacterStream()",93957339551792,93957339551831],["v8::internal::UnbufferedCharacterStream<v8::internal::OnHeapStream>::ReadBlock()",93957339551904,93957339551988],["v8::internal::UnbufferedCharacterStream<v8::internal::ChunkedStream>::~UnbufferedCharacterStream()",93957339552128,93957339552259],["v8_inspector::protocol::Runtime::ExceptionDetails::setScriptId(v8_inspector::String16 const&)",93957342353920,93957342354576],["v8_inspector::InjectedScript::ObjectScope::ObjectScope(v8_inspector::V8InspectorSessionImpl*, v8_inspector::String16 const&)",93957342357056,93957342357815],["v8_inspector::InjectedScript::CallFrameScope::~CallFrameScope()",93957342359264,93957342359326],["v8_inspector::(anonymous namespace)::PropertyAccumulator::Add(v8_inspector::PropertyMirror)",93957342360800,93957342360971],["v8_inspector::InjectedScript::ProtocolPromiseHandler::thenCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957342362560,93957342362710],["v8_inspector::InjectedScript::ProtocolPromiseHandler::cleanup(v8::WeakCallbackInfo<v8_inspector::InjectedScript::ProtocolPromiseHandler> const&)",93957342362880,93957342363049],["v8_inspector::InjectedScript::ProtocolPromiseHandler::thenCallback(v8::Local<v8::Value>)",93957342363584,93957342364767],["std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > std::__1::operator+<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >(std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > const&, std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > const&)",93957342366832,93957342368145],["v8::internal::compiler::BigIntData* v8::internal::Zone::New<v8::internal::compiler::BigIntData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::BigInt> const, v8::internal::compiler::ObjectDataKind&>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::BigInt> const&&, v8::internal::compiler::ObjectDataKind&)",93957344006848,93957344006979],["v8::internal::compiler::ObjectRef::IsBigInt() const",93957344016128,93957344016235],["v8::internal::compiler::ObjectRef::IsFunctionTemplateInfo() const",93957344019456,93957344019563],["v8::internal::compiler::MapRef::AsElementsKind(v8::internal::ElementsKind) const",93957344021472,93957344021966],["v8::internal::compiler::JSFunctionRef::InitialMapInstanceSizeWithMinSlack() const",93957344025040,93957344025264],["v8::internal::compiler::MapRef::NumberOfOwnDescriptors() const",93957344028448,93957344028633],["v8::internal::compiler::MapRef::IsFixedCowArrayMap() const",93957344030240,93957344030298],["v8::internal::compiler::StringRef::ToNumber()",93957344033408,93957344034180],["v8::internal::compiler::BytecodeArrayRef::handler_table_size() const",93957344035152,93957344035189],["v8::internal::compiler::AllocationSiteRef::GetElementsKind() const",93957344035904,93957344036078],["v8::internal::compiler::BytecodeArrayRef::parameter_count() const",93957344036640,93957344036808],["v8::internal::compiler::JSBoundFunctionRef::bound_this() const",93957344037616,93957344037973],["v8::internal::compiler::JSFunctionRef::has_feedback_vector() const",93957344038672,93957344038965],["v8::internal::compiler::JSFunctionRef::context() const",93957344039696,93957344040008],["v8::internal::compiler::JSFunctionRef::shared() const",93957344041120,93957344041432],["v8::internal::compiler::JSGlobalObjectRef::IsDetached() const",93957344042448,93957344042718],["v8::internal::compiler::MapRef::is_migration_target() const",93957344043104,93957344043287],["v8::internal::compiler::MapRef::is_access_check_needed() const",93957344043488,93957344043670],["v8::internal::compiler::MapRef::has_indexed_interceptor() const",93957344043872,93957344044054],["v8::internal::compiler::MapRef::is_undetectable() const",93957344044256,93957344044438],["v8::internal::compiler::MapRef::NextFreePropertyIndex() const",93957344044624,93957344044804],["v8::internal::compiler::HeapObjectRef::HeapObjectRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344045008,93957344045184],["v8::internal::compiler::MapRef::GetBackPointer() const",93957344045616,93957344046012],["v8::internal::compiler::NativeContextRef::array_function() const",93957344046224,93957344046533],["v8::internal::compiler::NativeContextRef::boolean_function() const",93957344046720,93957344047029],["v8::internal::compiler::NativeContextRef::number_function() const",93957344047360,93957344047672],["v8::internal::compiler::NativeContextRef::promise_function() const",93957344048000,93957344048312],["v8::internal::compiler::NativeContextRef::regexp_function() const",93957344048640,93957344048955],["v8::internal::compiler::NativeContextRef::symbol_function() const",93957344049280,93957344049595],["v8::internal::compiler::NativeContextRef::global_proxy_object() const",93957344050016,93957344050427],["v8::internal::compiler::NativeContextRef::bound_function_with_constructor_map() const",93957344050752,93957344051067],["v8::internal::compiler::NativeContextRef::js_array_holey_double_elements_map() const",93957344051392,93957344051707],["xdr_rejected_reply",139871564452896,139871564453002],["_seterr_reply",139871564453504,139871564453770],["svcraw_create",139871564455776,139871564455913],["xdr_float",139871564456912,139871564457040],["catanhf64x",139871565356608,139871565358009],["fmaxf64x",139871565367536,139871565367586],["ilogbf64x",139871565367872,139871565367939],["fmaxmagf64x",139871565368256,139871565368451],["__acosh_finite",139871565368736,139871565368982],["__cosh_finite",139871565394832,139871565395170],["__hypot_finite",139871565396336,139871565397155],["__y0_finite",139871565399264,139871565400060],["v8::DelayedTasksPlatform::DelayedIdleTask::~DelayedIdleTask()",93957335216592,93957335216648],["std::__1::unique_ptr<v8::Platform, std::__1::default_delete<v8::Platform> >::~unique_ptr()",93957335216896,93957335216927],["std::__1::map<v8::Isolate*, bool, std::__1::less<v8::Isolate*>, std::__1::allocator<std::__1::pair<v8::Isolate* const, bool> > >::~map()",93957335217120,93957335217134],["v8::ShellOptions::ShellOptions()",93957335217152,93957335218181],["v8::internal::Deserializer::~Deserializer()",93957336681152,93957336681180],["v8::internal::metrics::Recorder::~Recorder()",93957336682864,93957336683113],["v8::internal::LocalIsolate::LocalIsolate(v8::internal::Isolate*, v8::internal::ThreadKind, v8::internal::RuntimeCallStats*)",93957336685872,93957336686035],["v8::internal::MessageLocation::MessageLocation(v8::internal::Handle<v8::internal::Script>, int, int)",93957336686176,93957336686206],["v8::internal::MessageLocation::MessageLocation()",93957336686272,93957336686308],["v8::internal::MessageHandler::GetLocalizedMessage(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957336686736,93957336687084],["v8::internal::MessageHandler::ReportMessage(v8::internal::Isolate*, v8::internal::MessageLocation const*, v8::internal::Handle<v8::internal::JSMessageObject>)",93957336687216,93957336688155],["v8::internal::MessageHandler::GetMessage(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957336688848,93957336688983],["v8::internal::ParserBase<v8::internal::PreParser>::ParseArrowFunctionLiteral(v8::internal::PreParserFormalParameters const&)",93957339501120,93957339502172],["v8::internal::ParserBase<v8::internal::PreParser>::ParseVariableDeclarations(v8::internal::ParserBase<v8::internal::PreParser>::VariableDeclarationContext, v8::internal::ParserBase<v8::internal::PreParser>::DeclarationParsingResult*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339517856,93957339520445],["v8::internal::ParserBase<v8::internal::PreParser>::ParseSwitchStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339531072,93957339532523],["v8::internal::ParserBase<v8::internal::PreParser>::ParseStandardForLoop(int, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::PreParserExpression*, v8::internal::PreParserStatement*, v8::internal::PreParserStatement*)",93957339536864,93957339538006],["v8::internal::Processor::SetResult(v8::internal::Expression*)",93957339540416,93957339540644],["v8::internal::ZoneList<v8::internal::Statement*>::InsertAt(int, v8::internal::Statement* const&, v8::internal::Zone*)",93957339542240,93957339542614],["v8::internal::Processor::VisitNoStackOverflowCheck(v8::internal::AstNode*)",93957339543920,93957339544563],["v8::internal::Utf8ExternalStreamingStream::FillBufferFromCurrentChunk()",93957339545376,93957339546472],["v8::internal::Utf8ExternalStreamingStream::FillBuffer(unsigned long)",93957339547216,93957339547432],["v8::internal::ScannerStream::For(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, int, int)",93957339547472,93957339548252],["v8::internal::Utf8ExternalStreamingStream::~Utf8ExternalStreamingStream()",93957339548608,93957339548735],["v8::internal::Windows1252CharacterStream::~Windows1252CharacterStream()",93957339548864,93957339549007],["v8::internal::BufferedCharacterStream<v8::internal::OnHeapStream>::Clone() const",93957339549152,93957339549177],["v8::internal::ChunkedStream<unsigned char>::ProcessChunk(unsigned char const*, unsigned long, unsigned long)",93957339549504,93957339549586],["v8::internal::ChunkedStream<unsigned char>::FindChunk(unsigned long, v8::internal::RuntimeCallStats*)",93957339549920,93957339550401],["v8::internal::ExternalStringStream<unsigned char>::ExternalStringStream(v8::internal::ExternalOneByteString, unsigned long, unsigned long)",93957339550576,93957339550756],["v8_inspector::InjectedScript::objectGroupName(v8_inspector::RemoteObjectId const&) const",93957342346320,93957342347252],["v8_inspector::InjectedScript::Scope::installCommandLineAPI()",93957342356208,93957342356323],["v8_inspector::InjectedScript::ContextScope::~ContextScope()",93957342356976,93957342357004],["v8_inspector::InjectedScript::ObjectScope::~ObjectScope()",93957342357920,93957342358014],["v8_inspector::InjectedScript::CallFrameScope::~CallFrameScope()",93957342359200,93957342359254],["v8_inspector::InjectedScript::CallFrameScope::findInjectedScript(v8_inspector::V8InspectorSessionImpl*)",93957342359328,93957342359492],["v8_inspector::protocol::Runtime::RemoteObject::setObjectId(v8_inspector::String16 const&)",93957342360128,93957342360793],["void std::__1::vector<v8_inspector::PropertyMirror, std::__1::allocator<v8_inspector::PropertyMirror> >::__push_back_slow_path<v8_inspector::PropertyMirror>(v8_inspector::PropertyMirror&&)",93957342360976,93957342361713],["v8::internal::compiler::MapRef::instance_type() const",93957343995840,93957343996024],["v8::internal::compiler::FixedArrayBaseData* v8::internal::Zone::New<v8::internal::compiler::FixedArrayBaseData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::FixedArrayBase> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::FixedArrayBase> const&&)",93957344011136,93957344011367],["v8::internal::compiler::ObjectRef::IsAllocationSite() const",93957344014848,93957344014955],["v8::internal::compiler::ObjectRef::IsScopeInfo() const",93957344017344,93957344017451],["v8::internal::compiler::ObjectRef::IsFeedbackCell() const",93957344018848,93957344018955],["v8::internal::compiler::ObjectRef::IsSharedFunctionInfo() const",93957344019984,93957344020091],["v8::internal::compiler::MapRef::IsJSPromiseMap() const",93957344021344,93957344021366],["v8::internal::compiler::MapData::SerializeForElementStore(v8::internal::compiler::JSHeapBroker*)",93957344022672,93957344022952],["v8::internal::compiler::MapRef::supports_fast_array_iteration() const",93957344024560,93957344024851],["v8::internal::compiler::JSObjectRef::RawFastPropertyAt(v8::internal::FieldIndex) const",93957344025616,93957344026097],["v8::internal::compiler::JSObjectRef::elements() const",93957344027008,93957344027852],["v8::internal::compiler::MapRef::GetInObjectPropertiesStartInWords() const",93957344028704,93957344028913],["v8::internal::compiler::MapRef::GetPropertyKey(v8::internal::InternalIndex) const",93957344029696,93957344029781],["v8::internal::compiler::MapRef::FindFieldOwner(v8::internal::InternalIndex) const",93957344030336,93957344030845],["v8::internal::compiler::StringRef::length() const",93957344031680,93957344032438],["v8::internal::compiler::FixedArrayRef::get(int) const",93957344034384,93957344034782],["v8::internal::compiler::BytecodeArrayRef::handler_table_address() const",93957344035104,93957344035142],["v8::internal::compiler::AllocationSiteRef::nested_site() const",93957344035200,93957344035534],["v8::internal::compiler::AllocationSiteRef::PointsToLiteral() const",93957344035728,93957344035904],["v8::internal::compiler::AllocationSiteRef::GetAllocationType() const",93957344036080,93957344036260],["v8::internal::compiler::BytecodeArrayRef::register_count() const",93957344036464,93957344036640],["v8::internal::compiler::BytecodeArrayRef::incoming_new_target_or_generator_register() const",93957344036816,93957344036998],["v8::internal::compiler::JSBoundFunctionRef::bound_target_function() const",93957344037184,93957344037605],["v8::internal::compiler::JSBoundFunctionRef::bound_arguments() const",93957344037984,93957344038318],["v8::internal::compiler::JSDataViewRef::byte_length() const",93957344038496,93957344038669],["v8::internal::compiler::JSFunctionRef::has_initial_map() const",93957344038976,93957344039186],["v8::internal::compiler::JSFunctionRef::PrototypeRequiresRuntimeLookup() const",93957344039440,93957344039687],["v8::internal::compiler::JSFunctionRef::native_context() const",93957344040016,93957344040336],["v8::internal::compiler::JSFunctionRef::prototype() const",93957344040656,93957344041115],["v8::internal::compiler::SharedFunctionInfoRef::SharedFunctionInfoRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957344041440,93957344041616],["v8::internal::compiler::JSFunctionRef::feedback_vector() const",93957344042032,93957344042447],["v8::internal::compiler::MapRef::is_dictionary_map() const",93957344042720,93957344042903],["xdr_rmtcallres",139871564450448,139871564450578],["xdr_opaque_auth",139871564453184,139871564453243],["xdr_callhdr",139871564453360,139871564453490],["xdr_callmsg",139871564453776,139871564454699],["cacosf64x",139871565349088,139871565349456],["cexpf64x",139871565361536,139871565362863],["fdimf64x",139871565367408,139871565367503],["nanf64x",139871565367664,139871565367673],["significandl",139871565367856,139871565367865],["llogbf64x",139871565367952,139871565368060],["scalblnf64x",139871565368144,139871565368253],["fminmagf64x",139871565368464,139871565368637],["v8::DelayedTasksPlatform::DelayedTask::~DelayedTask()",93957335216384,93957335216427],["v8::DelayedTasksPlatform::DelayedJob::~DelayedJob()",93957335216704,93957335216747],["v8::(anonymous namespace)::ArrayBufferAllocatorBase::AllocateUninitialized(unsigned long)",93957335216864,93957335216882],["v8::Global<v8::Context>::~Global()",93957335216928,93957335216964],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::RegExpCodeCreateEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::String>)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680880,93957336680907],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::ThreadId, v8::internal::Isolate::PerIsolateThreadData*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::ThreadId, v8::internal::Isolate::PerIsolateThreadData*>, std::__1::__unordered_map_hasher<v8::internal::ThreadId, std::__1::__hash_value_type<v8::internal::ThreadId, v8::internal::Isolate::PerIsolateThreadData*>, v8::internal::Isolate::ThreadDataTable::Hasher, std::__1::equal_to<v8::internal::ThreadId>, true>, std::__1::__unordered_map_equal<v8::internal::ThreadId, std::__1::__hash_value_type<v8::internal::ThreadId, v8::internal::Isolate::PerIsolateThreadData*>, std::__1::equal_to<v8::internal::ThreadId>, v8::internal::Isolate::ThreadDataTable::Hasher, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::ThreadId, v8::internal::Isolate::PerIsolateThreadData*> > >::__emplace_unique_key_args<v8::internal::ThreadId, std::__1::pair<v8::internal::ThreadId, v8::internal::Isolate::PerIsolateThreadData*> >(v8::internal::ThreadId const&, std::__1::pair<v8::internal::ThreadId, v8::internal::Isolate::PerIsolateThreadData*>&&)",93957336681440,93957336682346],["std::__1::__shared_ptr_emplace<v8::internal::metrics::Recorder, std::__1::allocator<v8::internal::metrics::Recorder> >::~__shared_ptr_emplace()",93957336682800,93957336682838],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Isolate::ICUObjectCacheType, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Isolate::ICUObjectCacheType, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> > >, std::__1::__unordered_map_hasher<v8::internal::Isolate::ICUObjectCacheType, std::__1::__hash_value_type<v8::internal::Isolate::ICUObjectCacheType, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> > >, v8::internal::Isolate::ICUObjectCacheTypeHash, std::__1::equal_to<v8::internal::Isolate::ICUObjectCacheType>, true>, std::__1::__unordered_map_equal<v8::internal::Isolate::ICUObjectCacheType, std::__1::__hash_value_type<v8::internal::Isolate::ICUObjectCacheType, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> > >, std::__1::equal_to<v8::internal::Isolate::ICUObjectCacheType>, v8::internal::Isolate::ICUObjectCacheTypeHash, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Isolate::ICUObjectCacheType, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> > > > >::__emplace_unique_key_args<v8::internal::Isolate::ICUObjectCacheType, std::__1::pair<v8::internal::Isolate::ICUObjectCacheType const, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> > > >(v8::internal::Isolate::ICUObjectCacheType const&, std::__1::pair<v8::internal::Isolate::ICUObjectCacheType const, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> > >&&)",93957336683424,93957336684381],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<unsigned long, unsigned long> >, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<unsigned long, unsigned long> >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<unsigned long, unsigned long> >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<unsigned long, unsigned long> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<unsigned long, unsigned long> > > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>&&, std::__1::tuple<>&&)",93957336685392,93957336685869],["v8::internal::LocalIsolate::~LocalIsolate()",93957336686048,93957336686103],["v8::internal::StackLimitCheck::HasOverflowed(v8::internal::LocalIsolate*)",93957336686144,93957336686175],["v8::internal::MessageLocation::MessageLocation(v8::internal::Handle<v8::internal::Script>, int, int, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336686208,93957336686234],["v8::internal::ParserBase<v8::internal::PreParser>::ParseArrayLiteral()",93957339491664,93957339492587],["v8::internal::PreParser::ExpressionFromPrivateName(v8::internal::PrivateNameScopeIterator*, v8::internal::PreParserIdentifier const&, int)",93957339506192,93957339506308],["v8::internal::ParserBase<v8::internal::PreParser>::DoParseMemberExpressionContinuation(v8::internal::PreParserExpression)",93957339516144,93957339516431],["v8::internal::ParserBase<v8::internal::PreParser>::ParseWhileStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339522304,93957339522899],["v8::internal::ParserBase<v8::internal::PreParser>::ParseThrowStatement()",93957339529920,93957339530388],["v8::internal::ParserBase<v8::internal::PreParser>::ParseScopedStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339533504,93957339533733],["v8::internal::ParserBase<v8::internal::PreParser>::ParseStandardForLoopWithLexicalDeclarations(int, v8::internal::PreParserStatement, v8::internal::ParserBase<v8::internal::PreParser>::ForInfo*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339535536,93957339535963],["v8::internal::ParserBase<v8::internal::PreParser>::ParseNonRestrictedIdentifier()",93957339538144,93957339538605],["v8::internal::Processor::AssignUndefinedBefore(v8::internal::Statement*)",93957339539792,93957339540403],["v8::internal::Processor::VisitIfStatement(v8::internal::IfStatement*)",93957339540656,93957339540841],["v8::internal::Processor::VisitTryFinallyStatement(v8::internal::TryFinallyStatement*)",93957339541040,93957339542232],["v8::internal::Processor::VisitSwitchStatement(v8::internal::SwitchStatement*)",93957339542624,93957339542853],["v8::internal::Rewriter::RewriteBody(v8::internal::ParseInfo*, v8::internal::Scope*, v8::internal::ZoneList<v8::internal::Statement*>*)",93957339543056,93957339543917],["v8::internal::BufferedUtf16CharacterStream::ReadBlock()",93957339544576,93957339544644],["unibrow::Utf8::ValueOfIncremental(unsigned char const**, Utf8DfaDecoder::State*, unsigned int*)",93957339545216,93957339545365],["v8::internal::Utf8ExternalStreamingStream::FetchChunk()",93957339546480,93957339546736],["v8_inspector::InjectedScript::releaseObject(v8_inspector::String16 const&)",93957342339648,93957342339771],["v8_inspector::InjectedScript::resolveCallArgument(v8_inspector::protocol::Runtime::CallArgument*, v8::Local<v8::Value>*)",93957342347776,93957342352031],["v8_inspector::InjectedScript::commandLineAPI()",93957342355744,93957342355949],["v8_inspector::InjectedScript::Scope::pretendUserGesture()",93957342356464,93957342356487],["v8_inspector::InjectedScript::ContextScope::ContextScope(v8_inspector::V8InspectorSessionImpl*, int)",93957342356832,93957342356976],["v8_inspector::InjectedScript::ContextScope::findInjectedScript(v8_inspector::V8InspectorSessionImpl*)",93957342357008,93957342357047],["v8_inspector::InjectedScript::ObjectScope::~ObjectScope()",93957342357824,93957342357910],["v8_inspector::InjectedScript::ObjectScope::findInjectedScript(v8_inspector::V8InspectorSessionImpl*)",93957342358016,93957342358463],["v8::internal::compiler::ObjectData::IsPropertyCell() const",93957343986112,93957343986289],["v8::internal::compiler::JSHeapBroker::InitializeAndStartSerializing(v8::internal::Handle<v8::internal::NativeContext>)",93957344001792,93957344003519],["v8::internal::compiler::JSFunctionData* v8::internal::Zone::New<v8::internal::compiler::JSFunctionData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::JSFunction> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::JSFunction> const&&)",93957344008800,93957344008895],["v8::internal::compiler::ObjectRef::IsJSFunction() const",93957344012576,93957344012683],["v8::internal::compiler::ObjectRef::IsFixedDoubleArray() const",93957344014240,93957344014347],["v8::internal::compiler::ObjectRef::AsJSReceiver() const",93957344015376,93957344015568],["v8::internal::compiler::ObjectRef::IsMap() const",93957344016736,93957344016843],["v8::internal::compiler::ObjectRef::AsString() const",93957344017792,93957344017984],["v8::internal::compiler::ObjectRef::IsCode() const",93957344018624,93957344018731],["v8::internal::compiler::ObjectRef::IsFeedbackVector() const",93957344019152,93957344019259],["v8::internal::compiler::ObjectRef::IsName() const",93957344019760,93957344019867],["v8::internal::compiler::ObjectRef::IsSmi() const",93957344020208,93957344020320],["v8::internal::compiler::MapRef::IsHeapNumberMap() const",93957344021280,93957344021298],["v8::internal::compiler::MapRef::IsJSObjectMap() const",93957344021408,93957344021430],["v8::internal::compiler::MapData::SerializeForElementLoad(v8::internal::compiler::JSHeapBroker*)",93957344022224,93957344022407],["v8::internal::compiler::MapRef::prototype() const",93957344023232,93957344023604],["v8::internal::compiler::MapRef::HasOnlyStablePrototypesWithFastElements(v8::internal::ZoneVector<v8::internal::compiler::MapRef>*)",93957344024064,93957344024558],["v8::internal::compiler::MapRef::supports_fast_array_resize() const",93957344024864,93957344025035],["v8::internal::compiler::FeedbackVectorRef::GetClosureFeedbackCell(int) const",93957344025264,93957344025610],["v8::internal::compiler::AllocationSiteRef::IsFastLiteral() const",93957344026112,93957344026440],["v8::internal::compiler::JSObjectRef::EnsureElementsTenured()",93957344026592,93957344026997],["v8::internal::compiler::MapRef::GetFieldIndexFor(v8::internal::InternalIndex) const",93957344027856,93957344028442],["v8::internal::compiler::MapRef::GetInObjectPropertyOffset(int) const",93957344028640,93957344028693],["v8::internal::compiler::MapRef::GetPropertyDetails(v8::internal::InternalIndex) const",93957344028928,93957344029013],["v8::internal::compiler::DescriptorArrayRef::GetPropertyDetails(v8::internal::InternalIndex) const",93957344029440,93957344029687],["v8::internal::compiler::DescriptorArrayRef::GetPropertyKey(v8::internal::InternalIndex) const",93957344029792,93957344030234],["v8::internal::compiler::MapRef::IsPrimitiveMap() const",93957344030304,93957344030322],["v8::internal::compiler::MapRef::GetFieldType(v8::internal::InternalIndex) const",93957344030848,93957344030933],["v8::internal::compiler::StringRef::GetCharAsStringOrUndefined(unsigned int, v8::internal::compiler::SerializationPolicy) const",93957344031376,93957344031671],["v8::internal::compiler::StringRef::GetFirstChar()",93957344032448,93957344033400],["v8::internal::compiler::ArrayBoilerplateDescriptionRef::constants_elements_length() const",93957344034192,93957344034376],["v8::internal::compiler::FixedDoubleArrayRef::get(int) const",93957344034784,93957344035010],["pmap_unset",139871564449408,139871564449665],["pmap_rmtcall",139871564450864,139871564451205],["xdr_accepted_reply",139871564453008,139871564453173],["xdr_des_block",139871564453248,139871564453258],["ufromfpf64x",139871565347136,139871565347735],["casinf64x",139871565351312,139871565351503],["ctanf64x",139871565359648,139871565360525],["cprojf64x",139871565364048,139871565364158],["clog10f64x",139871565366224,139871565367406],["nextdownf64x",139871565367504,139871565367529],["fminf64x",139871565367600,139871565367650],["__iseqsigl",139871565367680,139871565367749],["v8::DelayedTasksPlatform::DelayedTaskRunner::PostIdleTask(std::__1::unique_ptr<v8::IdleTask, std::__1::default_delete<v8::IdleTask> >)",93957335216080,93957335216200],["v8::DelayedTasksPlatform::DelayedTask::Run()",93957335216496,93957335216530],["v8::DelayedTasksPlatform::DelayedIdleTask::Run(double)",93957335216656,93957335216703],["v8::DelayedTasksPlatform::DelayedJob::~DelayedJob()",93957335216752,93957335216808],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::ScriptCompiled(v8::Local<v8::debug::Script>, bool, bool)::$_6, void (v8_inspector::V8InspectorSessionImpl*)> >(void const*)",93957336680512,93957336680552],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeDisableOptEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680992,93957336681019],["std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats> > >::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats>, void*>*)",93957336681216,93957336681329],["std::__1::__shared_ptr_emplace<v8::internal::Counters, std::__1::allocator<v8::internal::Counters> >::~__shared_ptr_emplace()",93957336682384,93957336682422],["std::__1::__shared_ptr_emplace<v8::internal::metrics::Recorder, std::__1::allocator<v8::internal::metrics::Recorder> >::~__shared_ptr_emplace()",93957336682768,93957336682788],["std::__1::__shared_ptr_emplace<v8::internal::metrics::Recorder, std::__1::allocator<v8::internal::metrics::Recorder> >::__on_zero_shared()",93957336682848,93957336682862],["std::__1::__deque_base<std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, std::__1::allocator<std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> > > >::clear()",93957336683120,93957336683412],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > >, std::__1::__unordered_map_hasher<unsigned long, std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > >, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, true>, std::__1::__unordered_map_equal<unsigned long, std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > >, std::__1::equal_to<unsigned long>, std::__1::hash<unsigned long>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned long, v8::Persistent<v8::Context, v8::CopyablePersistentTraits<v8::Context> > > > >::__emplace_unique_impl<std::__1::piecewise_construct_t const&, std::__1::tuple<unsigned long&>, std::__1::tuple<v8::Isolate*&&, v8::Local<v8::Context>&&> >(std::__1::piecewise_construct_t const&, std::__1::tuple<unsigned long&>&&, std::__1::tuple<v8::Isolate*&&, v8::Local<v8::Context>&&>&&)",93957336684384,93957336684843],["v8::internal::ParserBase<v8::internal::PreParser>::ParseClassLiteral(v8::internal::PreParserIdentifier, v8::internal::Scanner::Location, bool, int)",93957339478544,93957339480843],["v8::internal::VariableDeclarationParsingScope<v8::internal::ParserTypes<v8::internal::PreParser> >::Declare(v8::internal::AstRawString const*, int)",93957339496416,93957339496865],["v8::internal::ParserBase<v8::internal::PreParser>::ParseConditionalContinuation(v8::internal::PreParserExpression, int)",93957339503136,93957339503881],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::PreParser> >::ValidatePattern(v8::internal::PreParserExpression, int, int)",93957339508320,93957339508654],["v8::internal::ParserBase<v8::internal::PreParser>::ParseArrowParametersWithRest(v8::internal::PreParserExpressionList*, v8::internal::AccumulationScope<v8::internal::ParserTypes<v8::internal::PreParser> >*, int)",93957339514800,93957339515242],["v8::internal::ParserBase<v8::internal::PreParser>::ParseMemberInitializer(v8::internal::ParserBase<v8::internal::PreParser>::ClassInfo*, int, bool)",93957339516784,93957339517674],["v8::internal::ParserBase<v8::internal::PreParser>::ParseIfStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339520576,93957339521513],["v8::internal::ParserBase<v8::internal::PreParser>::ParseForStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339525120,93957339527260],["v8::internal::ParserBase<v8::internal::PreParser>::ParseReturnStatement()",93957339528816,93957339529919],["v8::internal::ParserBase<v8::internal::PreParser>::ParseWithStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339530400,93957339531063],["v8::internal::ParserBase<v8::internal::PreParser>::ParseExpressionOrLabelledStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::AllowLabelledFunctionStatement)",93957339532528,93957339533496],["v8::internal::ParserBase<v8::internal::PreParser>::ParseFunctionDeclaration()",93957339533744,93957339533918],["v8::internal::ParserBase<v8::internal::PreParser>::ParseForEachStatementWithDeclarations(int, v8::internal::ParserBase<v8::internal::PreParser>::ForInfo*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::Scope*)",93957339534112,93957339535534],["v8::internal::ParserBase<v8::internal::PreParser>::ParseForEachStatementWithoutDeclarations(int, v8::internal::PreParserExpression, int, int, v8::internal::ParserBase<v8::internal::PreParser>::ForInfo*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339535968,93957339536856],["void v8::internal::ParserBase<v8::internal::PreParser>::ReportMessage<v8::internal::PreParserIdentifier>(v8::internal::MessageTemplate, v8::internal::PreParserIdentifier)",93957339538016,93957339538131],["v8::internal::ParserBase<v8::internal::PreParser>::DeclareLabel(v8::internal::ZoneList<v8::internal::AstRawString const*>**, v8::internal::ZoneList<v8::internal::AstRawString const*>**, v8::internal::AstRawString const*)",93957339538608,93957339539421],["v8_inspector::InjectedScript::InjectedScript(v8_inspector::InspectedContext*, int)",93957342332576,93957342332684],["v8_inspector::InjectedScript::wrapTable(v8::Local<v8::Object>, v8::MaybeLocal<v8::Array>)",93957342341008,93957342345058],["v8_inspector::InjectedScript::setCustomObjectFormatterEnabled(bool)",93957342347680,93957342347693],["v8_inspector::InjectedScript::addExceptionToDetails(v8::Local<v8::Value>, v8_inspector::protocol::Runtime::ExceptionDetails*, v8_inspector::String16 const&)",93957342352160,93957342352483],["v8_inspector::InjectedScript::wrapEvaluateResult(v8::MaybeLocal<v8::Value>, v8::TryCatch const&, v8_inspector::String16 const&, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>*)",93957342354576,93957342355737],["v8_inspector::InjectedScript::Scope::initialize()",93957342355952,93957342356203],["v8_inspector::InjectedScript::Scope::ignoreExceptionsAndMuteConsole()",93957342356336,93957342356455],["v8_inspector::InjectedScript::Scope::allowCodeGenerationFromStrings()",93957342356496,93957342356549],["v8::internal::compiler::JSBoundFunctionData::Serialize(v8::internal::compiler::JSHeapBroker*)",93957343968816,93957343969397],["v8::internal::compiler::ObjectData::IsName() const",93957343989056,93957343989229],["v8::internal::compiler::JSHeapBroker::SetTargetNativeContextRef(v8::internal::Handle<v8::internal::NativeContext>)",93957343998656,93957343998731],["v8::internal::compiler::CallHandlerInfoData* v8::internal::Zone::New<v8::internal::compiler::CallHandlerInfoData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::CallHandlerInfo> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::CallHandlerInfo> const&&)",93957344005040,93957344005298],["v8::internal::compiler::PropertyCellData* v8::internal::Zone::New<v8::internal::compiler::PropertyCellData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::PropertyCell> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::PropertyCell> const&&)",93957344007360,93957344007594],["v8::internal::compiler::NativeContextData* v8::internal::Zone::New<v8::internal::compiler::NativeContextData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::NativeContext> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::NativeContext> const&&)",93957344010176,93957344010501],["v8::internal::compiler::ObjectRef::IsJSBoundFunction() const",93957344011968,93957344012075],["v8::internal::compiler::ObjectRef::IsJSTypedArray() const",93957344013104,93957344013211],["v8::internal::compiler::ObjectRef::IsFixedArray() const",93957344013936,93957344014043],["v8::internal::compiler::ObjectRef::IsJSObject() const",93957344014544,93957344014651],["v8::internal::compiler::ObjectRef::IsFixedArrayBase() const",93957344015152,93957344015259],["v8::internal::compiler::ObjectRef::IsHeapObject() const",93957344015680,93957344015923],["v8::internal::compiler::ObjectRef::IsHeapNumber() const",93957344016432,93957344016539],["v8::internal::compiler::ObjectRef::IsPropertyCell() const",93957344017040,93957344017147],["v8::internal::compiler::ObjectRef::IsBytecodeArray() const",93957344017568,93957344017675],["v8::internal::compiler::ObjectRef::IsAccessorInfo() const",93957344018096,93957344018203],["v8::internal::compiler::ObjectRef::AsCell() const",93957344018432,93957344018624],["v8::internal::compiler::ObjectRef::IsDescriptorArray() const",93957344018736,93957344018843],["v8::internal::compiler::ObjectRef::AsFeedbackCell() const",93957344018960,93957344019152],["v8::internal::compiler::ObjectRef::AsFeedbackVector() const",93957344019264,93957344019456],["v8::internal::compiler::ObjectRef::AsFunctionTemplateInfo() const",93957344019568,93957344019760],["v8::internal::compiler::ObjectRef::IsRegExpBoilerplateDescription() const",93957344019872,93957344019979],["v8::internal::compiler::ObjectRef::IsTemplateObjectDescription() const",93957344020096,93957344020203],["v8::internal::compiler::ObjectRef::AsSmi() const",93957344020320,93957344020336],["v8::internal::compiler::JSObjectData::object_create_map(v8::internal::compiler::JSHeapBroker*) const",93957344020720,93957344021278],["v8::internal::compiler::MapRef::IsJSArrayMap() const",93957344021312,93957344021334],["v8::internal::compiler::MapRef::IsStringMap() const",93957344021376,93957344021394],["v8::internal::compiler::MapRef::IsJSReceiverMap() const",93957344021440,93957344021462],["v8::internal::compiler::MapRef::SerializeForElementLoad()",93957344021968,93957344022220],["v8::internal::compiler::MapRef::SerializeForElementStore()",93957344022416,93957344022668],["v8::internal::compiler::MapRef::SerializePrototype()",93957344022960,93957344023224],["v8::internal::compiler::MapRef::oddball_type() const",93957344023616,93957344023878],["callrpc",139871564448112,139871564448650],["xdr_pmap",139871564450112,139871564450194],["xdr_rmtcall_args",139871564450592,139871564450856],["clnt_broadcast",139871564451216,139871564452885],["totalorderf64x",139871565345552,139871565345576],["conjf64x",139871565349024,139871565349035],["ccosf64x",139871565350144,139871565350167],["casinhf64x",139871565352752,139871565353385],["catanf64x",139871565358016,139871565359633],["ctanhf64x",139871565360528,139871565361525],["clogf64x",139871565362864,139871565364044],["csqrtf64x",139871565364160,139871565366065],["v8::DelayedTasksPlatform::DelayedTaskRunner::PostTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957335215648,93957335215767],["v8::DelayedTasksPlatform::DelayedTaskRunner::~DelayedTaskRunner()",93957335216224,93957335216297],["v8::DelayedTasksPlatform::DelayedTask::~DelayedTask()",93957335216432,93957335216488],["v8::DelayedTasksPlatform::DelayedIdleTask::~DelayedIdleTask()",93957335216544,93957335216587],["v8::internal::CodeEventDispatcher::CodeDisableOptEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336679472,93957336679660],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::wasm::WasmCode const*, v8::internal::Vector<char const>, char const*, int, int)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(void const*)",93957336680736,93957336680784],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::SharedFunctionInfoMoveEvent(unsigned long, unsigned long)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680944,93957336680971],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeDependencyChangeEvent(v8::internal::Handle<v8::internal::Code>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, char const*)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336681072,93957336681110],["v8::internal::RootVisitor::VisitRootPointer(v8::internal::Root, char const*, v8::internal::FullObjectSlot)",93957336681184,93957336681202],["std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats> > >::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats>, void*>*)",93957336681344,93957336681433],["std::__1::__shared_ptr_emplace<v8::internal::Counters, std::__1::allocator<v8::internal::Counters> >::~__shared_ptr_emplace()",93957336682352,93957336682372],["std::__1::__shared_ptr_emplace<v8::internal::Counters, std::__1::allocator<v8::internal::Counters> >::__on_zero_shared()",93957336682432,93957336682512],["v8::internal::ParserBase<v8::internal::PreParser>::Expect(v8::internal::Token::Value)",93957339467680,93957339467728],["v8::internal::ParserBase<v8::internal::PreParser>::ClassifyParameter(v8::internal::PreParserIdentifier, int, int)",93957339488176,93957339488369],["v8::internal::ParserBase<v8::internal::PreParser>::ParseTemplateLiteral(v8::internal::PreParserExpression, int, bool)",93957339494480,93957339495278],["v8::internal::ParserBase<v8::internal::PreParser>::ExpectContextualKeyword(v8::internal::AstRawString const*, char const*, int)",93957339498272,93957339498473],["v8::internal::ParserBase<v8::internal::PreParser>::RewriteInvalidReferenceExpression(v8::internal::PreParserExpression, int, int, v8::internal::MessageTemplate, bool)",93957339502320,93957339502624],["v8::internal::ParserBase<v8::internal::PreParser>::ParseCoalesceExpression(v8::internal::PreParserExpression)",93957339505440,93957339505974],["v8::internal::ParserBase<v8::internal::PreParser>::ParseAwaitExpression()",93957339507232,93957339508067],["v8::internal::ParserBase<v8::internal::PreParser>::ParsePossibleDestructuringSubPattern(v8::internal::AccumulationScope<v8::internal::ParserTypes<v8::internal::PreParser> >*)",93957339508768,93957339509774],["v8::internal::ParserBase<v8::internal::PreParser>::ParseProperty(v8::internal::ParserBase<v8::internal::PreParser>::ParsePropertyInfo*)",93957339511840,93957339514795],["v8::internal::ParserBase<v8::internal::PreParser>::ParseBindingPattern()",93957339515248,93957339516133],["v8::internal::ParserBase<v8::internal::PreParser>::ParseBlock(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::Scope*)",93957339516432,93957339516775],["v8::internal::ParserBase<v8::internal::PreParser>::ExpectSemicolon()",93957339517680,93957339517844],["v8::internal::ParserBase<v8::internal::PreParser>::ParseBlock(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339520448,93957339520571],["v8::internal::ParserBase<v8::internal::PreParser>::ParseDoWhileStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339521520,93957339522292],["v8::internal::ParserBase<v8::internal::PreParser>::ParseForAwaitStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339522912,93957339525106],["v8::internal::ParserBase<v8::internal::PreParser>::ParseContinueStatement()",93957339527264,93957339528069],["non-virtual thunk to v8_inspector::protocol::Schema::Domain::~Domain()",93957342326896,93957342326979],["v8_inspector::InjectedScript::createExceptionDetails(v8::TryCatch const&, v8_inspector::String16 const&, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>*)",93957342335696,93957342335812],["v8_inspector::InjectedScript::wrapObject(v8::Local<v8::Value>, v8_inspector::String16 const&, v8_inspector::WrapMode, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*)",93957342340688,93957342340842],["v8_inspector::InjectedScript::ProtocolPromiseHandler::add(v8_inspector::V8InspectorSessionImpl*, v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8_inspector::String16 const&, v8_inspector::WrapMode, bool, v8_inspector::EvaluateCallback*)",93957342345344,93957342345785],["v8_inspector::InjectedScript::releaseObjectGroup(v8_inspector::String16 const&)",93957342347264,93957342347669],["v8_inspector::InjectedScript::lastEvaluationResult() const",93957342347696,93957342347765],["v8_inspector::operator+(char const*, v8_inspector::String16 const&)",93957342352032,93957342352148],["v8_inspector::InjectedScript::createExceptionDetails(v8::Local<v8::Message>, v8::Local<v8::Value>, v8_inspector::String16 const&, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>*)",93957342352496,93957342353916],["v8::internal::compiler::FunctionTemplateInfoData::FunctionTemplateInfoData(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::FunctionTemplateInfo>)",93957343945520,93957343945876],["v8::internal::compiler::ObjectData::IsJSDataView() const",93957343983104,93957343983281],["v8::internal::compiler::ObjectData::IsArrayBoilerplateDescription() const",93957343987584,93957343987757],["v8::internal::compiler::operator==(v8::internal::compiler::ConstFieldInfo const&, v8::internal::compiler::ConstFieldInfo const&)",93957343994000,93957343994015],["v8::internal::compiler::JSHeapBroker::AttachLocalIsolate(v8::internal::OptimizedCompilationInfo*, v8::internal::LocalIsolate*)",93957343997360,93957343997649],["v8::internal::compiler::JSHeapBroker::ShouldBeSerializedForCompilation(v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::FeedbackVectorRef const&, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&) const",93957343999328,93957344000107],["v8::internal::compiler::StringData* v8::internal::Zone::New<v8::internal::compiler::StringData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::String> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::String> const&&)",93957344004176,93957344004266],["v8::internal::compiler::FeedbackVectorData* v8::internal::Zone::New<v8::internal::compiler::FeedbackVectorData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::FeedbackVector> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::FeedbackVector> const&&)",93957344006144,93957344006405],["v8::internal::compiler::MapData* v8::internal::Zone::New<v8::internal::compiler::MapData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::Map> const, v8::internal::compiler::ObjectDataKind&>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::Map> const&&, v8::internal::compiler::ObjectDataKind&)",93957344007120,93957344007231],["v8::internal::compiler::JSBoundFunctionData* v8::internal::Zone::New<v8::internal::compiler::JSBoundFunctionData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::JSBoundFunction> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::JSBoundFunction> const&&)",93957344008016,93957344008410],["v8::internal::compiler::JSObjectData* v8::internal::Zone::New<v8::internal::compiler::JSObjectData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::JSObject> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::JSObject> const&&)",93957344009408,93957344009774],["v8::internal::compiler::FixedArrayData* v8::internal::Zone::New<v8::internal::compiler::FixedArrayData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::FixedArray> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::FixedArray> const&&)",93957344010768,93957344011025],["v8::internal::compiler::ObjectRef::IsJSArray() const",93957344011664,93957344011771],["v8::internal::compiler::ObjectRef::IsJSDataView() const",93957344012272,93957344012379],["v8::internal::compiler::ObjectRef::IsJSGlobalObject() const",93957344012880,93957344012987],["v8::internal::compiler::ObjectRef::IsNativeContext() const",93957344013408,93957344013515],["v8::internal::compiler::ObjectRef::IsScriptContextTable() const",93957344013824,93957344013931],["v8::internal::compiler::ObjectRef::AsFixedArray() const",93957344014048,93957344014240],["v8::internal::compiler::ObjectRef::AsFixedDoubleArray() const",93957344014352,93957344014544],["v8::internal::compiler::ObjectRef::AsJSObject() const",93957344014656,93957344014848],["v8::internal::compiler::ObjectRef::AsAllocationSite() const",93957344014960,93957344015152],["v8::internal::compiler::ObjectRef::IsJSReceiver() const",93957344015264,93957344015371],["v8::internal::compiler::ObjectRef::IsSourceTextModule() const",93957344015568,93957344015675],["v8::internal::compiler::ObjectRef::AsHeapObject() const",93957344015936,93957344016128],["v8::internal::compiler::ObjectRef::AsBigInt() const",93957344016240,93957344016432],["v8::internal::compiler::ObjectRef::AsHeapNumber() const",93957344016544,93957344016736],["v8::internal::compiler::ObjectRef::AsMap() const",93957344016848,93957344017040],["v8::internal::compiler::ObjectRef::AsPropertyCell() const",93957344017152,93957344017344],["v8::internal::compiler::ObjectRef::IsInternalizedString() const",93957344017456,93957344017563],["v8::internal::compiler::ObjectRef::IsString() const",93957344017680,93957344017787],["v8::internal::compiler::ObjectRef::IsSymbol() const",93957344017984,93957344018091],["v8::internal::compiler::ObjectRef::IsCallHandlerInfo() const",93957344018208,93957344018315],["authnone_create",139871564445632,139871564445730],["getrpcport",139871564448768,139871564448878],["pmap_getmaps",139871564449680,139871564450097],["xdr_pmaplist",139871564450208,139871564450444],["__finitel",139871565341360,139871565341375],["setpayloadf64x",139871565345760,139871565345978],["ufromfpxf64x",139871565348352,139871565348990],["crealf64x",139871565349056,139871565349061],["cacoshf64x",139871565349456,139871565350133],["ccoshf64x",139871565350176,139871565351298],["csinf64x",139871565351504,139871565352751],["csinhf64x",139871565355440,139871565356604],["std::__1::__hash_iterator<std::__1::__hash_node<std::__1::shared_ptr<v8::Worker>, void*>*> std::__1::__hash_table<std::__1::shared_ptr<v8::Worker>, std::__1::hash<std::__1::shared_ptr<v8::Worker> >, std::__1::equal_to<std::__1::shared_ptr<v8::Worker> >, std::__1::allocator<std::__1::shared_ptr<v8::Worker> > >::find<std::__1::shared_ptr<v8::Worker> >(std::__1::shared_ptr<v8::Worker> const&)",93957335214736,93957335215110],["v8::DelayedTasksPlatform::DelayedTaskRunner::PostDelayedTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >, double)",93957335215904,93957335216042],["v8::internal::RegExpGroup::IsAnchoredAtEnd()",93957335216208,93957335216223],["v8::DelayedTasksPlatform::DelayedTaskRunner::~DelayedTaskRunner()",93957335216304,93957335216380],["v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::wasm::WasmCode const*, v8::internal::Vector<char const>, char const*, int, int)",93957336677872,93957336678128],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, char const*)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680320,93957336680354],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8_inspector::V8Debugger::IsFunctionBlackboxed(v8::Local<v8::debug::Script>, v8::debug::Location const&, v8::debug::Location const&)::$_7, void (v8_inspector::V8InspectorSessionImpl*)> >(void const*)",93957336680624,93957336680672],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::GetterCallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680816,93957336680843],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeMoveEvent(v8::internal::AbstractCode, v8::internal::AbstractCode)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680912,93957336680939],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeMovingGCEvent()::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680976,93957336680990],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeDeoptEvent(v8::internal::Handle<v8::internal::Code>, v8::internal::DeoptimizeKind, unsigned long, int, bool)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336681024,93957336681068],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::WeakCodeClearEvent()::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336681120,93957336681137],["v8::internal::BaseConsumedPreparseData<v8::internal::ZoneVectorWrapper>::~BaseConsumedPreparseData()",93957339460800,93957339460842],["v8::internal::PreParser::ReportMessageAt(v8::internal::Scanner::Location, v8::internal::MessageTemplate, char const*)",93957339473504,93957339473605],["v8::internal::ParserBase<v8::internal::PreParser>::ParseLeftHandSideContinuation(v8::internal::PreParserExpression)",93957339482688,93957339484175],["v8::internal::ParserBase<v8::internal::PreParser>::ParseRegExpLiteral()",93957339489776,93957339489879],["v8::internal::ParserBase<v8::internal::PreParser>::ParseExpressionCoverGrammar()",93957339493504,93957339494208],["v8::internal::ExpressionScope<v8::internal::ParserTypes<v8::internal::PreParser> >::RecordStrictModeParameterError(v8::internal::Scanner::Location const&, v8::internal::MessageTemplate)",93957339495584,93957339495754],["v8::internal::ParserBase<v8::internal::PreParser>::ParseNewTargetExpression()",93957339497008,93957339497202],["v8::internal::ParserBase<v8::internal::PreParser>::ClassifyArrowParameter(v8::internal::AccumulationScope<v8::internal::ParserTypes<v8::internal::PreParser> >*, int, v8::internal::PreParserExpression)",93957339500064,93957339500547],["v8::internal::ExpressionScope<v8::internal::ParserTypes<v8::internal::PreParser> >::RecordDeclarationError(v8::internal::Scanner::Location const&, v8::internal::MessageTemplate)",93957339502176,93957339502314],["v8::internal::ParserBase<v8::internal::PreParser>::ParseLogicalExpression()",93957339502624,93957339503134],["v8::internal::ParserBase<v8::internal::PreParser>::ParseBinaryContinuation(v8::internal::PreParserExpression, int, int)",93957339503888,93957339505432],["v8::internal::ParserBase<v8::internal::PreParser>::ParsePropertyOrPrivatePropertyName()",93957339505984,93957339506190],["v8::internal::ParserBase<v8::internal::PreParser>::ParseUnaryOrPrefixExpression()",93957339506320,93957339507225],["v8::internal::ParserBase<v8::internal::PreParser>::ParsePostfixContinuation(v8::internal::PreParserExpression, int)",93957339508080,93957339508307],["v8::internal::ParserBase<v8::internal::PreParser>::ReportMessageAt(v8::internal::Scanner::Location, v8::internal::MessageTemplate)",93957339508656,93957339508757],["v8::internal::ParserBase<v8::internal::PreParser>::ParseObjectPropertyDefinition(v8::internal::ParserBase<v8::internal::PreParser>::ParsePropertyInfo*, bool*)",93957339509776,93957339511715],["v8_inspector::protocol::Schema::Domain::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342325264,93957342325399],["v8_inspector::(anonymous namespace)::substituteObjectTags(int, v8_inspector::String16 const&, v8::Local<v8::Context>, v8::Local<v8::Array>, int)",93957342329312,93957342330737],["v8_inspector::InjectedScript::discardEvaluateCallbacks()",93957342333088,93957342333555],["v8_inspector::InjectedScript::bindRemoteObjectIfNeeded(int, v8::Local<v8::Context>, v8::Local<v8::Value>, v8_inspector::String16 const&, v8_inspector::protocol::Runtime::RemoteObject*)",93957342336304,93957342337426],["v8_inspector::InjectedScript::unbindObject(int)",93957342339776,93957342340684],["v8_inspector::InjectedScript::wrapObject(v8::Local<v8::Value>, v8_inspector::String16 const&, v8_inspector::WrapMode, v8::MaybeLocal<v8::Value>, int, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*)",93957342340848,93957342341005],["v8_inspector::InjectedScript::addPromiseCallback(v8_inspector::V8InspectorSessionImpl*, v8::MaybeLocal<v8::Value>, v8_inspector::String16 const&, v8_inspector::WrapMode, bool, std::__1::unique_ptr<v8_inspector::EvaluateCallback, std::__1::default_delete<v8_inspector::EvaluateCallback> >)",93957342345072,93957342345337],["v8_inspector::InjectedScript::findObject(v8_inspector::RemoteObjectId const&, v8::Local<v8::Value>*) const",93957342345792,93957342346318],["v8::internal::compiler::JSGraph::HeapConstant(v8::internal::Handle<v8::internal::HeapObject>)",93957343918432,93957343918517],["v8::internal::compiler::StringData::GetCharAsStringOrUndefined(v8::internal::compiler::JSHeapBroker*, unsigned int, v8::internal::compiler::SerializationPolicy)",93957343957824,93957343958896],["v8::internal::compiler::SharedFunctionInfoData::SharedFunctionInfoData(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957343974640,93957343975672],["v8::internal::compiler::ObjectData::IsFixedDoubleArray() const",93957343984624,93957343984801],["v8::internal::compiler::ObjectData::IsBytecodeArray() const",93957343986864,93957343987041],["v8::internal::compiler::ObjectData::IsDescriptorArray() const",93957343988320,93957343988498],["v8::internal::compiler::ObjectData::AsHeapObject()",93957343989776,93957343989945],["v8::internal::compiler::ContextRef::ContextRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957343994688,93957343994864],["v8::internal::compiler::JSHeapBroker::JSHeapBroker(v8::internal::Isolate*, v8::internal::Zone*, bool, bool, v8::internal::CodeKind)",93957343996224,93957343997127],["v8::internal::compiler::JSHeapBroker::StopSerializing()",93957343997824,93957343998226],["v8::internal::compiler::JSHeapBroker::CollectArrayAndObjectPrototypes()",93957343998912,93957343999218],["v8::internal::compiler::JSHeapBroker::IsSerializedForCompilation(v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::FeedbackVectorRef const&) const",93957344001104,93957344001243],["v8::internal::compiler::ObjectBoilerplateDescriptionData* v8::internal::Zone::New<v8::internal::compiler::ObjectBoilerplateDescriptionData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::ObjectBoilerplateDescription> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::ObjectBoilerplateDescription> const&&)",93957344003632,93957344003878],["v8::internal::compiler::SymbolData* v8::internal::Zone::New<v8::internal::compiler::SymbolData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::Symbol> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::Symbol> const&&)",93957344004560,93957344004782],["v8::internal::compiler::DescriptorArrayData* v8::internal::Zone::New<v8::internal::compiler::DescriptorArrayData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::DescriptorArray> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::DescriptorArray> const&&)",93957344005584,93957344005835],["v8::internal::compiler::RegExpBoilerplateDescriptionData* v8::internal::Zone::New<v8::internal::compiler::RegExpBoilerplateDescriptionData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::RegExpBoilerplateDescription> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::RegExpBoilerplateDescription> const&&)",93957344006512,93957344006742],["v8::internal::compiler::HeapNumberData* v8::internal::Zone::New<v8::internal::compiler::HeapNumberData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::HeapNumber> const, v8::internal::compiler::ObjectDataKind&>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::HeapNumber> const&&, v8::internal::compiler::ObjectDataKind&)",93957344006992,93957344007114],["v8::internal::compiler::PropertyCellData* v8::internal::Zone::New<v8::internal::compiler::PropertyCellData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::PropertyCell> const, v8::internal::compiler::ObjectDataKind>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::PropertyCell> const&&, v8::internal::compiler::ObjectDataKind&&)",93957344007232,93957344007353],["v8::internal::compiler::JSArrayData* v8::internal::Zone::New<v8::internal::compiler::JSArrayData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::JSArray> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::JSArray> const&&)",93957344007600,93957344008016],["v8::internal::compiler::JSDataViewData* v8::internal::Zone::New<v8::internal::compiler::JSDataViewData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::JSDataView> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::JSDataView> const&&)",93957344008416,93957344008796],["v8::internal::compiler::JSGlobalObjectData* v8::internal::Zone::New<v8::internal::compiler::JSGlobalObjectData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::JSGlobalObject> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::JSGlobalObject> const&&)",93957344008896,93957344009398],["v8::internal::compiler::JSTypedArrayData* v8::internal::Zone::New<v8::internal::compiler::JSTypedArrayData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::JSTypedArray> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::JSTypedArray> const&&)",93957344009776,93957344010172],["v8::internal::compiler::ContextData* v8::internal::Zone::New<v8::internal::compiler::ContextData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::Context> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::Context> const&&)",93957344010512,93957344010762],["v8::internal::compiler::AllocationSiteData* v8::internal::Zone::New<v8::internal::compiler::AllocationSiteData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::AllocationSite> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::AllocationSite> const&&)",93957344011040,93957344011130],["v8::internal::compiler::SourceTextModuleData* v8::internal::Zone::New<v8::internal::compiler::SourceTextModuleData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::SourceTextModule> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::SourceTextModule> const&&)",93957344011376,93957344011650],["v8::internal::compiler::ObjectRef::AsJSArray() const",93957344011776,93957344011968],["v8::internal::compiler::ObjectRef::AsJSBoundFunction() const",93957344012080,93957344012272],["v8::internal::compiler::ObjectRef::AsJSDataView() const",93957344012384,93957344012576],["v8::internal::compiler::ObjectRef::AsJSFunction() const",93957344012688,93957344012880],["v8::internal::compiler::ObjectRef::IsJSGlobalProxy() const",93957344012992,93957344013099],["v8::internal::compiler::ObjectRef::AsJSTypedArray() const",93957344013216,93957344013408],["v8::internal::compiler::ObjectRef::IsContext() const",93957344013520,93957344013627],["__nss_hosts_lookup2",139871564443536,139871564443666],["bindresvport",139871564445888,139871564447069],["_rpc_dtablesize",139871564448720,139871564448756],["pmap_set",139871564449088,139871564449402],["nearbyintf64x",139871565336832,139871565336856],["__signbitl",139871565341920,139871565341936],["totalordermagf64x",139871565345696,139871565345720],["roundevenf64x",139871565346192,139871565346599],["fromfpxf64x",139871565347744,139871565348340],["cargf64x",139871565348992,139871565349013],["cimagf64x",139871565349040,139871565349045],["cabsf64x",139871565349072,139871565349077],["v8::DelayedTasksPlatform::DelayedTaskRunnerDeleter::operator()(v8::DelayedTasksPlatform::DelayedTaskRunner*) const",93957335214544,93957335214721],["std::__1::__hash_table<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> >::remove(std::__1::__hash_const_iterator<std::__1::__hash_node<int, void*>*>)",93957335215120,93957335215633],["v8::DelayedTasksPlatform::DelayedTaskRunner::PostNonNestableTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957335215776,93957335215896],["v8::TaskRunner::PostNonNestableTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task> >)",93957335216048,93957335216069],["v8::internal::TracingAccountingAllocator::UpdateMemoryTrafficAndReportMemoryUsage(unsigned long)",93957336675424,93957336675896],["v8::internal::CodeEventDispatcher::RegExpCodeCreateEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::String>)",93957336678704,93957336678892],["v8::internal::CodeEventDispatcher::CodeDependencyChangeEvent(v8::internal::Handle<v8::internal::Code>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, char const*)",93957336679904,93957336680126],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::Name>)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680416,93957336680450],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>, int, int)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680560,93957336680614],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::wasm::WasmCode const*, v8::internal::Vector<char const>, char const*, int, int)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680672,93957336680730],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680784,93957336680811],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::SetterCallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680848,93957336680875],["v8::internal::PreparseDataBuilder::Serialize(v8::internal::Isolate*)",93957339457248,93957339457564],["v8::internal::ZoneProducedPreparseData::Serialize(v8::internal::LocalIsolate*)",93957339461824,93957339461838],["v8::internal::PreParser::ParseFunctionLiteral(v8::internal::PreParserIdentifier, v8::internal::Scanner::Location, v8::internal::FunctionNameValidity, v8::internal::FunctionKind, int, v8::internal::FunctionSyntaxKind, v8::internal::LanguageMode, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339468512,93957339470270],["v8::internal::ParserBase<v8::internal::PreParser>::ParseHoistableDeclaration(int, v8::base::Flags<v8::internal::ParseFunctionFlag, int>, v8::internal::ZoneList<v8::internal::AstRawString const*>*, bool)",93957339477184,93957339478031],["v8::internal::ParserBase<v8::internal::PreParser>::ParseClassPropertyDefinition(v8::internal::ParserBase<v8::internal::PreParser>::ClassInfo*, v8::internal::ParserBase<v8::internal::PreParser>::ParsePropertyInfo*, bool)",93957339481360,93957339482573],["v8::internal::ParserBase<v8::internal::PreParser>::ParseAsyncFunctionLiteral()",93957339487408,93957339487975],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::PreParser> >::~ExpressionParsingScope()",93957339489168,93957339489256],["v8::internal::ParserBase<v8::internal::PreParser>::ParseSuperExpression()",93957339490384,93957339491168],["v8::internal::ParserBase<v8::internal::PreParser>::ParseObjectLiteral()",93957339492592,93957339493498],["v8::internal::ArrowHeadParsingScope<v8::internal::ParserTypes<v8::internal::PreParser> >::ValidateExpression()",93957339494208,93957339494479],["v8::internal::ParserBase<v8::internal::PreParser>::ParseV8Intrinsic()",93957339495280,93957339495577],["v8::internal::ExpressionScope<v8::internal::ParserTypes<v8::internal::PreParser> >::NewVariable(v8::internal::AstRawString const*, int)",93957339495760,93957339496408],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::PreParser> >::Validate(int)",93957339496880,93957339497001],["v8::internal::ParserBase<v8::internal::PreParser>::ParseArguments(v8::internal::PreParserExpressionList*, bool*, v8::internal::ParsingArrowHeadFlag)",93957339497216,93957339498269],["v8::internal::ParserBase<v8::internal::PreParser>::ParseAssignmentExpressionCoverGrammar()",93957339498480,93957339500051],["v8::internal::ParserBase<v8::internal::PreParser>::ParseYieldExpression()",93957339500560,93957339501109],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_94::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324880,93957342324919],["v8_inspector::protocol::Schema::Dispatcher::wire(v8_crdtp::UberDispatcher*, v8_inspector::protocol::Schema::Backend*)",93957342326464,93957342326632],["v8_inspector::(anonymous namespace)::reportError(v8::Local<v8::Context>, v8::TryCatch const&)",93957342328880,93957342329219],["v8_inspector::(anonymous namespace)::getInjectedScript(v8::Local<v8::Context>, int)",93957342331824,93957342331913],["v8_inspector::InjectedScript::~InjectedScript()",93957342332688,93957342333087],["v8_inspector::InjectedScript::getProperties(v8::Local<v8::Object>, v8_inspector::String16 const&, bool, bool, v8_inspector::WrapMode, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyDescriptor> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyDescriptor> > > > > >*, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>*)",93957342333568,93957342335686],["v8_inspector::InjectedScript::wrapObjectMirror(v8_inspector::ValueMirror const&, v8_inspector::String16 const&, v8_inspector::WrapMode, v8::MaybeLocal<v8::Value>, int, std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >*)",93957342335824,93957342336289],["v8_inspector::InjectedScript::getInternalAndPrivateProperties(v8::Local<v8::Value>, v8_inspector::String16 const&, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::InternalPropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::InternalPropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::InternalPropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::InternalPropertyDescriptor> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::InternalPropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::InternalPropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::InternalPropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::InternalPropertyDescriptor> > > > > >*, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor, std::__1::default_delete<v8_inspector::protocol::Runtime::PrivatePropertyDescriptor> > > > > >*)",93957342337440,93957342339644],["v8::internal::compiler::JSGenericLowering::LowerJSLoadNamedFromSuper(v8::internal::compiler::Node*)",93957343903968,93957343904773],["v8::internal::compiler::JSGraph::BigIntMapConstant()",93957343943376,93957343943492],["v8::internal::compiler::JSObjectData::GetOwnConstantElement(v8::internal::compiler::JSHeapBroker*, unsigned int, v8::internal::compiler::SerializationPolicy)",93957343952112,93957343953168],["v8::internal::compiler::MapData::SerializeElementsKindGeneralizations(v8::internal::compiler::JSHeapBroker*)",93957343962368,93957343963307],["v8::internal::compiler::FixedArrayData::SerializeContents(v8::internal::compiler::JSHeapBroker*)",93957343969856,93957343971628],["v8::internal::compiler::SourceTextModuleData::Serialize(v8::internal::compiler::JSHeapBroker*)",93957343977088,93957343981245],["v8::internal::compiler::ObjectData::IsNativeContext() const",93957343983872,93957343984049],["v8::internal::compiler::ObjectData::IsSourceTextModule() const",93957343985376,93957343985553],["v8::internal::compiler::ObjectData::IsScopeInfo() const",93957343986496,93957343986673],["v8::internal::compiler::ObjectData::IsSymbol() const",93957343987232,93957343987405],["v8::internal::compiler::ObjectData::IsCell() const",93957343987936,93957343988113],["v8::internal::compiler::ObjectData::IsFeedbackVector() const",93957343988688,93957343988865],["v8::internal::compiler::ObjectData::IsSharedFunctionInfo() const",93957343989408,93957343989585],["v8::internal::compiler::JSObjectData::SerializeElements(v8::internal::compiler::JSHeapBroker*)",93957343993600,93957343993796],["v8::internal::compiler::ObjectRef::isolate() const",93957343994080,93957343994093],["v8::internal::compiler::ContextRef::GetModule(v8::internal::compiler::SerializationPolicy) const",93957343995360,93957343995600],["v8::internal::compiler::ObjectRef::AsSourceTextModule() const",93957343996032,93957343996224],["v8::internal::compiler::JSHeapBroker::~JSHeapBroker()",93957343997136,93957343997355],["v8::internal::compiler::JSHeapBroker::DetachLocalIsolate(v8::internal::OptimizedCompilationInfo*)",93957343997664,93957343997810],["v8::internal::compiler::JSHeapBroker::Retire()",93957343998240,93957343998642],["v8::internal::compiler::NativeContextRef::NativeContextRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957343998736,93957343998912],["v8::internal::compiler::JSHeapBroker::GetTypedArrayStringTag(v8::internal::ElementsKind)",93957343999232,93957343999319],["v8::internal::compiler::JSHeapBroker::SetSerializedForCompilation(v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::FeedbackVectorRef const&, v8::internal::ZoneVector<v8::internal::compiler::Hints> const&)",93957344000112,93957344001094],["v8::internal::compiler::JSHeapBroker::IsArrayOrObjectPrototype(v8::internal::compiler::JSObjectRef const&) const",93957344001248,93957344001783],["v8::internal::compiler::ObjectData* v8::internal::Zone::New<v8::internal::compiler::ObjectData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::Object>&, v8::internal::compiler::ObjectDataKind>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::Object>&, v8::internal::compiler::ObjectDataKind&&)",93957344003520,93957344003626],["v8::internal::compiler::ScopeInfoData* v8::internal::Zone::New<v8::internal::compiler::ScopeInfoData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::ScopeInfo> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::ScopeInfo> const&&)",93957344003888,93957344004172],["v8::internal::compiler::BytecodeArrayData* v8::internal::Zone::New<v8::internal::compiler::BytecodeArrayData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::BytecodeArray> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::BytecodeArray> const&&)",93957344004272,93957344004560],["v8::internal::compiler::ArrayBoilerplateDescriptionData* v8::internal::Zone::New<v8::internal::compiler::ArrayBoilerplateDescriptionData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::ArrayBoilerplateDescription> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::ArrayBoilerplateDescription> const&&)",93957344004784,93957344005028],["v8::internal::compiler::CodeData* v8::internal::Zone::New<v8::internal::compiler::CodeData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::Code> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::Code> const&&)",93957344005312,93957344005575],["v8::internal::compiler::FeedbackCellData* v8::internal::Zone::New<v8::internal::compiler::FeedbackCellData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::FeedbackCell> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::FeedbackCell> const&&)",93957344005840,93957344006130],["v8::internal::compiler::FunctionTemplateInfoData* v8::internal::Zone::New<v8::internal::compiler::FunctionTemplateInfoData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::FunctionTemplateInfo> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::FunctionTemplateInfo> const&&)",93957344006416,93957344006506],["v8::internal::compiler::SharedFunctionInfoData* v8::internal::Zone::New<v8::internal::compiler::SharedFunctionInfoData, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::SharedFunctionInfo> const>(v8::internal::compiler::JSHeapBroker*&&, v8::internal::compiler::ObjectData**&&, v8::internal::Handle<v8::internal::SharedFunctionInfo> const&&)",93957344006752,93957344006847],["__nss_next2",139871564439072,139871564439326],["__nss_passwd_lookup2",139871564443968,139871564444098],["xdr_authunix_parms",139871564445744,139871564445873],["clntraw_create",139871564447776,139871564448104],["sinf64x",139871565334672,139871565335029],["lroundf64x",139871565340416,139871565340686],["modff64x",139871565341408,139871565341738],["nextupf64x",139871565345088,139871565345399],["totalordermagf64x",139871565345584,139871565345682],["getpayloadf64x",139871565345728,139871565345751],["setpayloadsigf64x",139871565345984,139871565346183],["fromfpf64x",139871565346608,139871565347132],["std::__1::__shared_ptr_emplace<v8::internal::wasm::GlobalWasmCodeRef, std::__1::allocator<v8::internal::wasm::GlobalWasmCodeRef> >::__on_zero_shared()",93957336673808,93957336673888],["v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, char const*)",93957336676960,93957336677182],["v8::internal::CodeEventDispatcher::GetterCallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957336678320,93957336678508],["v8::internal::CodeEventDispatcher::SharedFunctionInfoMoveEvent(unsigned long, unsigned long)",93957336679088,93957336679276],["v8::internal::CodeEventDispatcher::CodeDeoptEvent(v8::internal::Handle<v8::internal::Code>, v8::internal::DeoptimizeKind, unsigned long, int, bool)",93957336679664,93957336679904],["v8::internal::CodeEventDispatcher::WeakCodeClearEvent()",93957336680128,93957336680316],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8_inspector::V8RuntimeAgentImpl::addBinding(v8_inspector::String16 const&, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)::$_0, void (v8_inspector::InspectedContext*)> >(void const*)",93957336680368,93957336680408],["void std::__1::__function::__policy_invoker<void (v8::internal::CodeEventListener*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>)::{lambda(v8::internal::CodeEventListener*)#1}, void (v8::internal::CodeEventListener*)> >(std::__1::__function::__policy_storage const*, v8::internal::CodeEventListener*)",93957336680464,93957336680502],["v8::internal::PendingCompilationErrorHandler::ReportWarningAt(int, int, v8::internal::MessageTemplate, char const*)",93957339452016,93957339452116],["v8::internal::ZonePreparseData::Serialize(v8::internal::LocalIsolate*)",93957339459264,93957339459561],["v8::internal::BuilderProducedPreparseData::Serialize(v8::internal::Isolate*)",93957339461760,93957339461774],["v8::internal::ParserBase<v8::internal::PreParser>::CheckStrictOctalLiteral(int, int)",93957339464336,93957339464536],["v8::internal::ParserBase<v8::internal::PreParser>::NewVarblockScope() const",93957339467984,93957339468088],["v8::internal::ParserBase<v8::internal::PreParser>::ParseFunctionBody(v8::internal::PreParserScopedStatementList*, v8::internal::PreParserIdentifier, int, v8::internal::PreParserFormalParameters const&, v8::internal::FunctionKind, v8::internal::FunctionSyntaxKind, v8::internal::ParserBase<v8::internal::PreParser>::FunctionBodyType)",93957339470448,93957339473057],["v8::internal::ParserBase<v8::internal::PreParser>::IsNextLetKeyword()",93957339474416,93957339474497],["v8::internal::ParserBase<v8::internal::PreParser>::ReportUnexpectedToken(v8::internal::Token::Value)",93957339478160,93957339478236],["v8::internal::ParserBase<v8::internal::PreParser>::ParseClassStaticBlock(v8::internal::ParserBase<v8::internal::PreParser>::ClassInfo*)",93957339480848,93957339481351],["v8::internal::PreParser::ReportMessageAt(v8::internal::Scanner::Location, v8::internal::MessageTemplate, v8::internal::AstRawString const*)",93957339482576,93957339482677],["v8::internal::ParserBase<v8::internal::PreParser>::ParsePrimaryExpression()",93957339484176,93957339487404],["v8::internal::ArrowHeadParsingScope<v8::internal::ParserTypes<v8::internal::PreParser> >::ArrowHeadParsingScope(v8::internal::PreParser*, v8::internal::FunctionKind)",93957339487984,93957339488165],["v8::internal::ArrowHeadParsingScope<v8::internal::ParserTypes<v8::internal::PreParser> >::ValidateAndCreateScope()",93957339488384,93957339489160],["v8::internal::ParserBase<v8::internal::PreParser>::ParseMemberWithPresentNewPrefixesExpression()",93957339489264,93957339489765],["v8::internal::ParserBase<v8::internal::PreParser>::ParseFunctionExpression()",93957339489888,93957339490375],["v8::internal::ParserBase<v8::internal::PreParser>::ParseImportExpressions()",93957339491168,93957339491650],["v8_inspector::protocol::Runtime::(anonymous namespace)::runScriptParams::deserializer_descriptor()::$_115::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324528,93957342324567],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_100::__invoke(v8_crdtp::DeserializerState*, void*)",93957342325072,93957342325115],["v8_inspector::protocol::Schema::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned char>)",93957342325552,93957342325954],["v8_inspector::protocol::Schema::Domain::~Domain()",93957342326720,93957342326802],["v8_inspector::generateCustomPreview(int, v8_inspector::String16 const&, v8::Local<v8::Object>, v8::MaybeLocal<v8::Value>, int, std::__1::unique_ptr<v8_inspector::protocol::Runtime::CustomPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::CustomPreview> >*)",93957342326992,93957342328876],["v8_inspector::(anonymous namespace)::reportError(v8::Local<v8::Context>, v8::TryCatch const&, v8_inspector::String16 const&)",93957342329232,93957342329301],["v8_inspector::(anonymous namespace)::bodyCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957342330752,93957342331822],["v8_inspector::protocol::Runtime::CustomPreview::setBodyGetterId(v8_inspector::String16 const&)",93957342331920,93957342332576],["v8::internal::compiler::JSGenericLowering::Reduce(v8::internal::compiler::Node*)",93957343896848,93957343898124],["v8::internal::compiler::JSGenericLowering::LowerJSCallWithArrayLike(v8::internal::compiler::Node*)",93957343910080,93957343911458],["v8::internal::compiler::JSGraph::ZeroConstant()",93957343920368,93957343920506],["v8::internal::compiler::JSGraph::HeapNumberMapConstant()",93957343944416,93957343944532],["v8::internal::compiler::JSHeapBroker::ObjectMayBeUninitialized(v8::internal::Handle<v8::internal::Object>) const",93957343946384,93957343946682],["v8::internal::compiler::JSObjectData::GetOwnDictionaryProperty(v8::internal::compiler::JSHeapBroker*, v8::internal::InternalIndex, v8::internal::compiler::SerializationPolicy)",93957343955200,93957343956420],["v8::internal::compiler::MapData::MapData(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::Map>, v8::internal::compiler::ObjectDataKind)",93957343959824,93957343960465],["v8::internal::compiler::DescriptorArrayData::SerializeDescriptor(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Map>, v8::internal::InternalIndex)",93957343963968,93957343965568],["v8::internal::compiler::ObjectData::IsJSBoundFunction() const",93957343969472,93957343969649],["v8::internal::compiler::JSArrayData::GetOwnElement(v8::internal::compiler::JSHeapBroker*, unsigned int, v8::internal::compiler::SerializationPolicy)",93957343973360,93957343974444],["v8::internal::compiler::SharedFunctionInfoData::SerializeScopeInfoChain(v8::internal::compiler::JSHeapBroker*)",93957343976080,93957343976309],["v8::internal::compiler::(anonymous namespace)::GetPropertyCellFromHeap(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Name>)",93957343982432,93957343982908],["v8::internal::compiler::ObjectData::IsJSGlobalProxy() const",93957343983488,93957343983665],["v8::internal::compiler::ObjectData::IsScriptContextTable() const",93957343984256,93957343984433],["v8::internal::compiler::ObjectData::IsFixedArrayBase() const",93957343985008,93957343985184],["v8::internal::compiler::ObjectData::IsHeapNumber() const",93957343985744,93957343985917],["v8::internal::compiler::ObjectData::IsObjectBoilerplateDescription() const",93957343986304,93957343986481],["v8::internal::compiler::ObjectData::IsInternalizedString() const",93957343986688,93957343986861],["v8::internal::compiler::ObjectData::IsString() const",93957343987056,93957343987229],["v8::internal::compiler::ObjectData::IsAccessorInfo() const",93957343987408,93957343987581],["v8::internal::compiler::ObjectData::IsCallHandlerInfo() const",93957343987760,93957343987933],["v8::internal::compiler::ObjectData::IsCode() const",93957343988128,93957343988305],["v8::internal::compiler::ObjectData::IsFeedbackCell() const",93957343988512,93957343988685],["v8::internal::compiler::ObjectData::IsFunctionTemplateInfo() const",93957343988880,93957343989053],["v8::internal::compiler::ObjectData::IsRegExpBoilerplateDescription() const",93957343989232,93957343989405],["v8::internal::compiler::ObjectData::IsTemplateObjectDescription() const",93957343989600,93957343989773],["v8::internal::compiler::JSObjectData::SerializeRecursiveAsBoilerplate(v8::internal::compiler::JSHeapBroker*, int)",93957343989952,93957343993598],["v8::internal::compiler::RegExpBoilerplateDescriptionData::Serialize(v8::internal::compiler::JSHeapBroker*)",93957343993808,93957343993994],["v8::internal::compiler::ObjectRef::ShouldHaveBeenSerialized() const",93957343994016,93957343994074],["v8::internal::compiler::ContextRef::previous(unsigned long*, v8::internal::compiler::SerializationPolicy) const",93957343994096,93957343994688],["v8::internal::compiler::ContextRef::get(int, v8::internal::compiler::SerializationPolicy) const",93957343994864,93957343995360],["v8::internal::compiler::HeapObjectRef::map() const",93957343995600,93957343995835],["__nss_database_lookup2",139871564436896,139871564438033],["__nss_hostname_digits_dots",139871564442800,139871564442982],["__nss_group_lookup2",139871564443824,139871564443954],["__nss_hash",139871564445056,139871564445305],["erff64x",139871565330736,139871565331886],["truncf64x",139871565335648,139871565335689],["fmaf64x",139871565337408,139871565340396],["__exp10l_finite",139871565340944,139871565341142],["copysignf64x",139871565341376,139871565341406],["frexpf64x",139871565341776,139871565341919],["ldexpf64x",139871565341936,139871565342045],["totalorderf64x",139871565345408,139871565345550],["v8::internal::(anonymous namespace)::IsBuiltinFunction(v8::internal::Isolate*, v8::internal::HeapObject, v8::internal::Builtins::Name)",93957336670192,93957336670268],["v8::internal::TracingAccountingAllocator::~TracingAccountingAllocator()",93957336675072,93957336675100],["v8::internal::CodeEventDispatcher::~CodeEventDispatcher()",93957336676752,93957336676847],["v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>)",93957336677408,93957336677632],["v8::internal::CodeEventDispatcher::CallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957336678128,93957336678316],["v8::internal::CodeEventDispatcher::SetterCallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957336678512,93957336678700],["v8::internal::CodeEventDispatcher::CodeMoveEvent(v8::internal::AbstractCode, v8::internal::AbstractCode)",93957336678896,93957336679084],["v8::internal::CodeEventDispatcher::CodeMovingGCEvent()",93957336679280,93957336679468],["v8::internal::ParserBase<v8::internal::Parser>::LookupContinueTarget(v8::internal::AstRawString const*)",93957339446816,93957339446970],["std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::insert(std::__1::__wrap_iter<unsigned char const*>, unsigned long, unsigned char const&)",93957339453472,93957339455487],["v8::internal::OnHeapConsumedPreparseData::GetScopeData()",93957339458176,93957339458189],["v8::internal::BaseConsumedPreparseData<v8::internal::PreparseData>::~BaseConsumedPreparseData()",93957339459904,93957339459946],["v8::internal::BaseConsumedPreparseData<v8::internal::ZoneVectorWrapper>::GetDataForSkippableFunction(v8::internal::Zone*, int, int*, int*, int*, int*, bool*, v8::internal::LanguageMode*)",93957339460912,93957339461678],["v8::internal::BuilderProducedPreparseData::Serialize(v8::internal::Zone*)",93957339461792,93957339461806],["v8::internal::BaseConsumedPreparseData<v8::internal::ZoneVectorWrapper>::RestoreDataForScope(v8::internal::Scope*, v8::internal::AstValueFactory*, v8::internal::Zone*)",93957339462960,93957339464123],["v8::internal::ParserBase<v8::internal::PreParser>::ParseFormalParameterList(v8::internal::PreParserFormalParameters*)",93957339466368,93957339467590],["v8::internal::ParserBase<v8::internal::PreParser>::CheckArityRestrictions(int, v8::internal::FunctionKind, bool, int, int)",93957339467728,93957339467977],["v8::internal::PreParser::ParseStatementListAndLogFunction(v8::internal::PreParserFormalParameters*)",93957339468096,93957339468500],["v8::internal::ParserBase<v8::internal::PreParser>::NewFunctionScope(v8::internal::FunctionKind, v8::internal::Zone*) const",93957339470272,93957339470433],["v8::internal::ParserBase<v8::internal::PreParser>::ParseStatementListItem()",93957339473072,93957339473491],["v8::internal::ParserBase<v8::internal::PreParser>::ParseClassDeclaration(v8::internal::ZoneList<v8::internal::AstRawString const*>*, bool)",93957339473616,93957339474414],["v8::internal::ParserBase<v8::internal::PreParser>::ParseStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::AllowLabelledFunctionStatement)",93957339474512,93957339477175],["v8::internal::ParserBase<v8::internal::PreParser>::ReportMessage(v8::internal::MessageTemplate)",93957339478032,93957339478147],["v8::internal::PreParser::DeclareVariableName(v8::internal::AstRawString const*, v8::internal::VariableMode, v8::internal::Scope*, bool*, int, v8::internal::VariableKind)",93957339478240,93957339478536],["v8_inspector::protocol::Runtime::EvaluateCallbackImpl::sendSuccess(std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::ExceptionDetails>)",93957342323168,93957342323384],["v8_inspector::protocol::Runtime::(anonymous namespace)::compileScriptParams::deserializer_descriptor()::$_86::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324720,93957342324734],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_98::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324976,93957342325015],["v8_inspector::protocol::Runtime::(anonymous namespace)::globalLexicalScopeNamesParams::deserializer_descriptor()::$_107::__invoke(v8_crdtp::DeserializerState*, void*)",93957342325168,93957342325206],["non-virtual thunk to v8_inspector::protocol::Schema::Domain::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342325408,93957342325543],["v8_inspector::protocol::Schema::DomainDispatcherImpl::getDomains(v8_crdtp::Dispatchable const&)",93957342325968,93957342326456],["v8_inspector::protocol::Schema::Domain::~Domain()",93957342326640,93957342326719],["non-virtual thunk to v8_inspector::protocol::Schema::Domain::~Domain()",93957342326816,93957342326895],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateStringIterator(v8::internal::compiler::Node*)",93957343862336,93957343863458],["v8::internal::compiler::JSGenericLowering::LowerJSDivide(v8::internal::compiler::Node*)",93957343900272,93957343900396],["v8::internal::compiler::JSGenericLowering::LowerJSHasProperty(v8::internal::compiler::Node*)",93957343907280,93957343907409],["v8::internal::compiler::JSGenericLowering::LowerJSForInPrepare(v8::internal::compiler::Node*)",93957343914864,93957343915829],["v8::internal::compiler::JSGraph::NullConstant()",93957343919856,93957343919972],["v8::internal::compiler::JSGraph::AllocateRegularInYoungGenerationStubConstant()",93957343942800,93957343942929],["v8::internal::compiler::JSGraph::EmptyStringConstant()",93957343943904,93957343944020],["v8::internal::compiler::JSGraph::MinusOneConstant()",93957343944960,93957343945109],["v8::internal::compiler::JSHeapBroker::DecrementTracingIndentation()",93957343946080,93957343946093],["v8::internal::compiler::FunctionTemplateInfoData::SerializeCallCode(v8::internal::compiler::JSHeapBroker*)",93957343951440,93957343951777],["v8::internal::compiler::(anonymous namespace)::GetOwnElementFromHeap(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, unsigned int, bool)",93957343953680,93957343953907],["v8::internal::compiler::ContextData::GetSlot(v8::internal::compiler::JSHeapBroker*, int, v8::internal::compiler::SerializationPolicy)",93957343956624,93957343957450],["v8::internal::compiler::AllocationSiteData::SerializeBoilerplate(v8::internal::compiler::JSHeapBroker*)",93957343959248,93957343959643],["v8::internal::compiler::JSFunctionData::JSFunctionData(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::JSFunction>)",93957343960800,93957343961462],["v8::internal::compiler::JSFunctionData::SerializeCodeAndFeedback(v8::internal::compiler::JSHeapBroker*)",93957343963488,93957343963761],["v8::internal::compiler::FeedbackVectorData::GetClosureFeedbackCell(v8::internal::compiler::JSHeapBroker*, int) const",93957343966144,93957343966781],["v8::internal::compiler::JSHeapBroker::StackHasOverflowed() const",93957343969408,93957343969462],["v8::internal::compiler::ObjectData::IsJSFunction() const",93957343969664,93957343969842],["v8::internal::compiler::FixedDoubleArrayData::SerializeContents(v8::internal::compiler::JSHeapBroker*)",93957343971632,93957343973347],["v8::internal::compiler::ScopeInfoData::SerializeScopeInfoChain(v8::internal::compiler::JSHeapBroker*)",93957343974448,93957343974628],["v8::internal::SharedFunctionInfo::Inlineability v8::internal::SharedFunctionInfo::GetInlineability<v8::internal::Isolate>(v8::internal::Isolate*) const",93957343975680,93957343976072],["v8::internal::compiler::SourceTextModuleData::GetCell(v8::internal::compiler::JSHeapBroker*, int) const",93957343976320,93957343977088],["v8::internal::compiler::JSGlobalObjectData::GetPropertyCell(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData*, v8::internal::compiler::SerializationPolicy)",93957343981248,93957343982427],["v8::internal::compiler::ObjectData::IsJSArray() const",93957343982912,93957343983089],["v8::internal::compiler::ObjectData::IsJSGlobalObject() const",93957343983296,93957343983473],["v8::internal::compiler::ObjectData::IsJSTypedArray() const",93957343983680,93957343983857],["v8::internal::compiler::ObjectData::IsContext() const",93957343984064,93957343984242],["v8::internal::compiler::ObjectData::IsFixedArray() const",93957343984448,93957343984624],["v8::internal::compiler::ObjectData::IsJSObject() const",93957343984816,93957343984993],["v8::internal::compiler::ObjectData::IsJSReceiver() const",93957343985184,93957343985361],["v8::internal::compiler::ObjectData::IsBigInt() const",93957343985568,93957343985741],["v8::internal::compiler::ObjectData::IsMap() const",93957343985920,93957343986097],["__resolv_context_get_preinit",139871564429872,139871564430081],["__nss_lookup_function",139871564438352,139871564438887],["__nss_disable_nscd",139871564439328,139871564439739],["__nss_services_lookup2",139871564443408,139871564443533],["__sinhl_finite",139871565326528,139871565327084],["floorf64x",139871565333440,139871565333487],["tanhf64x",139871565335248,139871565335540],["__log2l_finite",139871565336432,139871565336482],["sincosf64x",139871565336864,139871565337402],["llrintf64x",139871565340400,139871565340415],["llroundf64x",139871565340688,139871565340942],["__issignalingl",139871565341152,139871565341212],["v8::internal::Isolate::AddCodeMemoryRange(v8::MemoryRange)",93957336667328,93957336667840],["v8::internal::StackTraceBuilder::IsNotHidden(v8::internal::Handle<v8::internal::JSFunction>)",93957336673280,93957336673484],["v8::internal::StackTraceBuilder::AppendPromiseCombinatorFrame(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::JSFunction>)",93957336674512,93957336674825],["v8::internal::TracingAccountingAllocator::TraceZoneDestructionImpl(v8::internal::Zone const*)",93957336675184,93957336675353],["v8::internal::TracingAccountingAllocator::Dump(std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, bool)",93957336675904,93957336676739],["v8::internal::CodeEventDispatcher::~CodeEventDispatcher()",93957336676848,93957336676946],["v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::Name>)",93957336677184,93957336677406],["v8::internal::CodeEventDispatcher::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>, int, int)",93957336677632,93957336677872],["v8::internal::ParserBase<v8::internal::Parser>::ParseExpressionOrLabelledStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::AllowLabelledFunctionStatement)",93957339434288,93957339435498],["v8::internal::parsing::ParseFunction(v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Isolate*, v8::internal::parsing::ReportStatisticsMode)",93957339450480,93957339451075],["v8::internal::PreparseDataBuilder::DataGatheringScope::Start(v8::internal::DeclarationScope*)",93957339452688,93957339452891],["v8::internal::PreparseDataBuilder::ScopeNeedsData(v8::internal::Scope*)",93957339455568,93957339455728],["v8::internal::PreparseDataBuilder::Serialize(v8::internal::Zone*)",93957339457888,93957339458089],["v8::internal::ZonePreparseData::ZonePreparseData(v8::internal::Zone*, v8::internal::Vector<unsigned char>*, int)",93957339458384,93957339458956],["v8::internal::ConsumedPreparseData::For(v8::internal::Isolate*, v8::internal::Handle<v8::internal::PreparseData>)",93957339459712,93957339459800],["v8::internal::BaseConsumedPreparseData<v8::internal::PreparseData>::GetDataForSkippableFunction(v8::internal::Zone*, int, int*, int*, int*, int*, bool*, v8::internal::LanguageMode*)",93957339460016,93957339460709],["v8::internal::ZoneConsumedPreparseData::~ZoneConsumedPreparseData()",93957339460848,93957339460903],["v8::internal::BaseConsumedPreparseData<v8::internal::ZoneVectorWrapper>::RestoreScopeAllocationData(v8::internal::DeclarationScope*, v8::internal::AstValueFactory*, v8::internal::Zone*)",93957339461680,93957339461751],["v8::internal::BuilderProducedPreparseData::Serialize(v8::internal::LocalIsolate*)",93957339461776,93957339461790],["v8::internal::ZoneProducedPreparseData::Serialize(v8::internal::Isolate*)",93957339461808,93957339461822],["v8::internal::BaseConsumedPreparseData<v8::internal::PreparseData>::RestoreDataForScope(v8::internal::Scope*, v8::internal::AstValueFactory*, v8::internal::Zone*)",93957339461840,93957339462950],["v8::internal::PreParser::GetIdentifier() const",93957339464128,93957339464324],["v8::internal::PreParser::PreParseFunction(v8::internal::AstRawString const*, v8::internal::FunctionKind, v8::internal::FunctionSyntaxKind, v8::internal::DeclarationScope*, int*, v8::internal::ProducedPreparseData**)",93957339464544,93957339466357],["v8::internal::PreParser::BuildParameterInitializationBlock(v8::internal::PreParserFormalParameters const&)",93957339467600,93957339467667],["v8_inspector::protocol::Runtime::EntryPreview::deserializer_descriptor()::$_22::__invoke(v8_crdtp::DeserializerState*, void*)",93957342322304,93957342322463],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_102::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324224,93957342324263],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_93::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324624,93957342324663],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_89::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324784,93957342324823],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_96::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324928,93957342324967],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_99::__invoke(v8_crdtp::DeserializerState*, void*)",93957342325024,93957342325063],["v8_inspector::protocol::Runtime::(anonymous namespace)::getPropertiesParams::deserializer_descriptor()::$_104::__invoke(v8_crdtp::DeserializerState*, void*)",93957342325120,93957342325159],["v8_inspector::protocol::Runtime::(anonymous namespace)::runScriptParams::deserializer_descriptor()::$_113::__invoke(v8_crdtp::DeserializerState*, void*)",93957342325216,93957342325255],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeFind(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&, v8::internal::compiler::ArrayFindVariant)::$_22, void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(void const*)",93957343833664,93957343833736],["v8::internal::compiler::JSCreateLowering::TryAllocateAliasedArguments(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::FrameState, v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&, bool*)",93957343879904,93957343881760],["v8::internal::compiler::JSGenericLowering::LowerJSBitwiseXor(v8::internal::compiler::Node*)",93957343899248,93957343899372],["v8::internal::compiler::JSGenericLowering::LowerJSCreateEmptyLiteralArray(v8::internal::compiler::Node*)",93957343901504,93957343901614],["v8::internal::compiler::JSGenericLowering::LowerJSStoreNamedOwn(v8::internal::compiler::Node*)",93957343906128,93957343906680],["v8::internal::compiler::JSGenericLowering::LowerJSCreateWithContext(v8::internal::compiler::Node*)",93957343908800,93957343908892],["v8::internal::compiler::JSGenericLowering::LowerJSConstructWithArrayLike(v8::internal::compiler::Node*)",93957343913280,93957343913902],["v8::internal::compiler::JSGenericLowering::ReplaceWithRuntimeCall(v8::internal::compiler::Node*, v8::internal::Runtime::FunctionId, int)",93957343917392,93957343917672],["v8::internal::compiler::JSGraph::Constant(double)",93957343919328,93957343919723],["v8::internal::compiler::JSGraph::TrueConstant()",93957343920112,93957343920228],["v8::internal::compiler::JSGraph::GetCachedNodes(v8::internal::ZoneVector<v8::internal::compiler::Node*>*)",93957343920672,93957343942651],["v8::internal::compiler::JSGraph::AllocateRegularInOldGenerationStubConstant()",93957343943088,93957343943217],["v8::internal::compiler::JSGraph::PlainPrimitiveToNumberBuiltinConstant()",93957343943632,93957343943761],["v8::internal::compiler::JSGraph::PropertyArrayMapConstant()",93957343944160,93957343944276],["v8::internal::compiler::JSGraph::StaleRegisterConstant()",93957343944672,93957343944788],["v8::internal::compiler::JSGraph::EmptyStateValues()",93957343945280,93957343945353],["v8::internal::compiler::HeapObjectData::HeapObjectData(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::compiler::ObjectDataKind)",93957343945888,93957343946077],["v8::internal::compiler::PropertyCellData::Serialize(v8::internal::compiler::JSHeapBroker*)",93957343946096,93957343946372],["v8::internal::compiler::JSHeapBroker::TryGetOrCreateData(v8::internal::Handle<v8::internal::Object>, bool, v8::internal::compiler::ObjectRef::BackgroundSerialization)",93957343946688,93957343951432],["v8::internal::compiler::JSObjectData::SerializeObjectCreateMap(v8::internal::compiler::JSHeapBroker*)",93957343951792,93957343952098],["v8::internal::compiler::JSHeapBroker::Trace() const",93957343953168,93957343953680],["v8::internal::compiler::JSObjectData::GetOwnFastDataProperty(v8::internal::compiler::JSHeapBroker*, v8::internal::Representation, v8::internal::FieldIndex, v8::internal::compiler::SerializationPolicy)",93957343953920,93957343955193],["v8::internal::compiler::JSTypedArrayData::Serialize(v8::internal::compiler::JSHeapBroker*)",93957343956432,93957343956616],["v8::internal::compiler::StringData::StringData(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::String>)",93957343957456,93957343957809],["v8::internal::compiler::AllocationSiteData::AllocationSiteData(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::ObjectData**, v8::internal::Handle<v8::internal::AllocationSite>)",93957343958896,93957343959244],["v8::internal::compiler::ObjectData::IsAllocationSite() const",93957343959648,93957343959821],["v8::internal::compiler::(anonymous namespace)::SupportsFastArrayResize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957343960480,93957343960787],["v8::internal::compiler::JSFunctionData::Serialize(v8::internal::compiler::JSHeapBroker*)",93957343961472,93957343962363],["v8::internal::compiler::MapData::SerializeConstructor(v8::internal::compiler::JSHeapBroker*)",93957343963312,93957343963482],["v8::internal::compiler::MapRef::elements_kind() const",93957343963776,93957343963956],["v8::internal::compiler::MapData::SerializeOwnDescriptor(v8::internal::compiler::JSHeapBroker*, v8::internal::InternalIndex)",93957343965568,93957343966138],["v8::internal::compiler::FeedbackVectorData::Serialize(v8::internal::compiler::JSHeapBroker*)",93957343966784,93957343968812],["__res_randomid",139871564428864,139871564428881],["__resolv_context_put",139871564430192,139871564430351],["__nss_configure_lookup",139871564438048,139871564438346],["__nss_lookup",139871564438896,139871564439061],["__jnl_finite",139871565320416,139871565322008],["atanf64x",139871565329968,139871565329977],["expm1f64x",139871565333216,139871565333415],["nextafterf64x",139871565333584,139871565334277],["tanf64x",139871565335040,139871565335235],["__fpclassifyl",139871565335552,139871565335641],["remquof64x",139871565335696,139871565336343],["roundf64x",139871565336496,139871565336819],["v8::internal::Isolate::get_cached_icu_object(v8::internal::Isolate::ICUObjectCacheType, v8::internal::Handle<v8::internal::Object>)",93957336664912,93957336665658],["v8::internal::Isolate::load_from_stack_count_address(char const*)",93957336668640,93957336668909],["v8::internal::StackTraceBuilder::IsVisibleInStackTrace(v8::internal::Handle<v8::internal::JSFunction>)",93957336672784,93957336672969],["std::__1::__shared_ptr_emplace<v8::internal::wasm::GlobalWasmCodeRef, std::__1::allocator<v8::internal::wasm::GlobalWasmCodeRef> >::~__shared_ptr_emplace()",93957336673728,93957336673748],["v8::internal::StackTraceBuilder::AppendAsyncFrame(v8::internal::Handle<v8::internal::JSGeneratorObject>)",93957336673888,93957336674506],["v8::internal::TracingAccountingAllocator::~TracingAccountingAllocator()",93957336674832,93957336675061],["v8::internal::TracingAccountingAllocator::TraceZoneCreationImpl(v8::internal::Zone const*)",93957336675104,93957336675173],["v8::internal::TracingAccountingAllocator::TraceAllocateSegmentImpl(v8::internal::Segment*)",93957336675360,93957336675418],["std::__1::vector<v8::internal::FuncNameInferrer::Name, std::__1::allocator<v8::internal::FuncNameInferrer::Name> >::__append(unsigned long)",93957339412688,93957339412901],["v8::internal::IterationStatementSourceRanges::GetRange(v8::internal::SourceRangeKind)",93957339437216,93957339437290],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, v8::internal::Scanner::Location> >, std::__1::__tree_node<std::__1::__value_type<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, v8::internal::Scanner::Location> >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, v8::internal::Scanner::Location> >, std::__1::__map_value_compare<v8::internal::AstRawString const*, std::__1::__value_type<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, v8::internal::Scanner::Location> >, v8::internal::ImportAssertionsKeyComparer, true>, v8::internal::ZoneAllocator<std::__1::__value_type<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, v8::internal::Scanner::Location> > > >::__emplace_unique_key_args<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, v8::internal::Scanner::Location> > >(v8::internal::AstRawString const* const&, std::__1::pair<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, v8::internal::Scanner::Location> >&&)",93957339448704,93957339449004],["void v8::internal::PendingCompilationErrorHandler::PrepareErrors<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::AstValueFactory*)",93957339451744,93957339451805],["v8::internal::PendingCompilationErrorHandler::ReportErrors(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>) const",93957339452416,93957339452441],["v8::internal::PreparseDataBuilder::FinalizeChildren(v8::internal::Zone*)",93957339452992,93957339453198],["v8::internal::PreparseDataBuilder::HasInnerFunctions() const",93957339455536,93957339455550],["v8::internal::PreparseDataBuilder::SaveScopeAllocationData(v8::internal::DeclarationScope*, v8::internal::Parser*)",93957339456160,93957339456491],["v8::internal::PreparseDataBuilder::Serialize(v8::internal::LocalIsolate*)",93957339457568,93957339457884],["v8::internal::ProducedPreparseData::For(v8::internal::PreparseDataBuilder*, v8::internal::Zone*)",93957339458096,93957339458169],["v8::internal::OnHeapConsumedPreparseData::GetChildData(v8::internal::Zone*, int)",93957339458192,93957339458382],["v8::internal::ZonePreparseData::Serialize(v8::internal::Isolate*)",93957339458960,93957339459257],["v8::internal::ZoneConsumedPreparseData::GetChildData(v8::internal::Zone*, int)",93957339459568,93957339459703],["v8::internal::ConsumedPreparseData::For(v8::internal::Zone*, v8::internal::ZonePreparseData*)",93957339459808,93957339459893],["v8::internal::OnHeapConsumedPreparseData::~OnHeapConsumedPreparseData()",93957339459952,93957339460007],["v8::internal::BaseConsumedPreparseData<v8::internal::PreparseData>::RestoreScopeAllocationData(v8::internal::DeclarationScope*, v8::internal::AstValueFactory*, v8::internal::Zone*)",93957339460720,93957339460791],["v8_inspector::protocol::Runtime::ObjectPreview::deserializer_descriptor()::$_14::__invoke(v8_crdtp::DeserializerState*, void*)",93957342321040,93957342321054],["v8_inspector::protocol::Runtime::CallArgument::deserializer_descriptor()::$_42::__invoke(v8_crdtp::DeserializerState*, void*)",93957342322944,93957342323046],["v8_crdtp::ProtocolTypeTraits<std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > > > >*)",93957342323664,93957342323864],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_97::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324320,93957342324359],["v8_inspector::protocol::Runtime::(anonymous namespace)::runScriptParams::deserializer_descriptor()::$_119::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324576,93957342324615],["v8_inspector::protocol::Runtime::(anonymous namespace)::compileScriptParams::deserializer_descriptor()::$_84::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324672,93957342324711],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_88::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324736,93957342324775],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_90::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324832,93957342324871],["v8::internal::TNode<v8::internal::Oddball> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Oddball> (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::ForZeroUntil(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)::{lambda(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)#1}, v8::internal::TNode<v8::internal::Oddball> (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343823568,93957343823591],["v8::internal::compiler::JSContextSpecialization::SimplifyJSLoadContext(v8::internal::compiler::Node*, v8::internal::compiler::Node*, unsigned long)",93957343838896,93957343839091],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateWithContext(v8::internal::compiler::Node*)",93957343869552,93957343870537],["v8::internal::compiler::JSCreateLowering::AllocateElements(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::ElementsKind, std::__1::vector<v8::internal::compiler::Node*, std::__1::allocator<v8::internal::compiler::Node*> > const&, v8::internal::AllocationType)",93957343889328,93957343889787],["v8::internal::compiler::JSGenericLowering::LowerJSGreaterThan(v8::internal::compiler::Node*)",93957343898736,93957343898860],["v8::internal::compiler::JSGenericLowering::LowerJSShiftRightLogical(v8::internal::compiler::Node*)",93957343899760,93957343899884],["v8::internal::compiler::JSGenericLowering::LowerJSCloneObject(v8::internal::compiler::Node*)",93957343900784,93957343900933],["v8::internal::compiler::JSGenericLowering::LowerJSCreateLiteralRegExp(v8::internal::compiler::Node*)",93957343902176,93957343902363],["v8::internal::compiler::JSGenericLowering::LowerJSStoreProperty(v8::internal::compiler::Node*)",93957343905344,93957343905607],["v8::internal::compiler::JSGenericLowering::LowerJSStoreDataPropertyInLiteral(v8::internal::compiler::Node*)",93957343906992,93957343907129],["v8::internal::compiler::JSGenericLowering::LowerJSCreateFunctionContext(v8::internal::compiler::Node*)",93957343908304,93957343908693],["v8::internal::compiler::JSGenericLowering::LowerJSCall(v8::internal::compiler::Node*)",93957343908992,93957343909731],["v8::internal::compiler::JSGenericLowering::LowerJSConstructForwardVarargs(v8::internal::compiler::Node*)",93957343912224,93957343912564],["v8::internal::compiler::JSGenericLowering::LowerJSCallRuntime(v8::internal::compiler::Node*)",93957343914720,93957343914761],["v8::internal::compiler::JSGenericLowering::LowerJSStackCheck(v8::internal::compiler::Node*)",93957343915984,93957343917176],["v8::internal::compiler::JSGenericLowering::reducer_name() const",93957343918016,93957343918029],["v8::internal::compiler::JSGraph::Constant(v8::internal::compiler::ObjectRef const&)",93957343918528,93957343919322],["v8::internal::compiler::JSGraph::UndefinedConstant()",93957343919728,93957343919844],["v8::internal::compiler::JSGraph::TheHoleConstant()",93957343919984,93957343920100],["v8::internal::compiler::JSGraph::FalseConstant()",93957343920240,93957343920356],["v8::internal::compiler::JSGraph::OneConstant()",93957343920512,93957343920661],["v8::internal::compiler::JSGraph::AllocateInYoungGenerationStubConstant()",93957343942656,93957343942785],["v8::internal::compiler::JSGraph::AllocateInOldGenerationStubConstant()",93957343942944,93957343943073],["v8::internal::compiler::JSGraph::ArrayConstructorStubConstant()",93957343943232,93957343943361],["v8::internal::compiler::JSGraph::BooleanMapConstant()",93957343943504,93957343943620],["v8::internal::compiler::JSGraph::EmptyFixedArrayConstant()",93957343943776,93957343943892],["v8::internal::compiler::JSGraph::FixedArrayMapConstant()",93957343944032,93957343944148],["v8::internal::compiler::JSGraph::FixedDoubleArrayMapConstant()",93957343944288,93957343944404],["v8::internal::compiler::JSGraph::OptimizedOutConstant()",93957343944544,93957343944660],["v8::internal::compiler::JSGraph::MinusZeroConstant()",93957343944800,93957343944949],["v8::internal::compiler::JSGraph::NaNConstant()",93957343945120,93957343945269],["v8::internal::compiler::JSGraph::SingleDeadTypedStateValues()",93957343945360,93957343945507],["inet_nsap_ntoa",139871564421552,139871564421707],["__res_nclose",139871564429152,139871564429162],["__resolv_context_get_override",139871564430096,139871564430186],["__gai_sigqueue",139871564434848,139871564435008],["__coshl_finite",139871565313424,139871565313819],["__log10l_finite",139871565325456,139871565325506],["__gammal_r_finite",139871565328112,139871565329183],["ceilf64x",139871565330336,139871565330383],["erfcf64x",139871565331888,139871565333202],["fabsf64x",139871565333424,139871565333431],["logbf64x",139871565333568,139871565333577],["rintf64x",139871565334288,139871565334295],["v8::internal::Isolate::ReportPromiseReject(v8::internal::Handle<v8::internal::JSPromise>, v8::internal::Handle<v8::internal::Object>, v8::PromiseRejectEvent)",93957336662592,93957336662648],["v8::internal::StackLimitCheck::JsHasOverflowed(unsigned long) const",93957336666960,93957336666993],["v8::internal::Isolate::GetOrRegisterRecorderContextId(v8::internal::Handle<v8::internal::NativeContext>)",93957336667856,93957336668144],["v8::internal::StackTraceBuilder::AppendWasmFrame(v8::internal::FrameSummary::WasmFrameSummary const&)",93957336669184,93957336669528],["v8::internal::(anonymous namespace)::CaptureAsyncStackTrace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSPromise>, v8::internal::StackTraceBuilder*)",93957336670272,93957336672781],["v8::internal::StackTraceBuilder::AppendFrame(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::HeapObject>, int, int, v8::internal::Handle<v8::internal::FixedArray>)",93957336672976,93957336673271],["v8::internal::Managed<v8::internal::wasm::GlobalWasmCodeRef>::FromSharedPtr(v8::internal::Isolate*, unsigned long, std::__1::shared_ptr<v8::internal::wasm::GlobalWasmCodeRef>)",93957336673488,93957336673713],["std::__1::__shared_ptr_emplace<v8::internal::wasm::GlobalWasmCodeRef, std::__1::allocator<v8::internal::wasm::GlobalWasmCodeRef> >::~__shared_ptr_emplace()",93957336673760,93957336673798],["v8::internal::ParserBase<v8::internal::Parser>::ClassInfo::ClassInfo(v8::internal::ParserBase<v8::internal::Parser>*)",93957339400192,93957339400774],["v8::internal::ParserBase<v8::internal::Parser>::ParseForAwaitStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339421184,93957339424442],["v8::internal::ParserBase<v8::internal::Parser>::ParseHoistableDeclaration(int, v8::base::Flags<v8::internal::ParseFunctionFlag, int>, v8::internal::ZoneList<v8::internal::AstRawString const*>*, bool)",93957339436336,93957339437052],["v8::internal::ParserBase<v8::internal::Parser>::ParseForEachStatementWithDeclarations(int, v8::internal::ParserBase<v8::internal::Parser>::ForInfo*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::Scope*)",93957339440288,93957339442679],["v8::internal::ParserBase<v8::internal::Parser>::DeclareLabel(v8::internal::ZoneList<v8::internal::AstRawString const*>**, v8::internal::ZoneList<v8::internal::AstRawString const*>**, v8::internal::AstRawString const*)",93957339447312,93957339448125],["v8::internal::parsing::ParseProgram(v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::Script>, v8::internal::MaybeHandle<v8::internal::ScopeInfo>, v8::internal::Isolate*, v8::internal::parsing::ReportStatisticsMode)",93957339449968,93957339450438],["void v8::internal::PendingCompilationErrorHandler::PrepareWarnings<v8::internal::Isolate>(v8::internal::Isolate*)",93957339451568,93957339451620],["v8::internal::PendingCompilationErrorHandler::ReportMessageAt(int, int, v8::internal::MessageTemplate, char const*)",93957339451920,93957339451962],["v8::internal::PendingCompilationErrorHandler::ReportWarnings(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>) const",93957339452128,93957339452403],["v8::internal::PendingCompilationErrorHandler::ThrowPendingError(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>) const",93957339452448,93957339452675],["v8::internal::PreparseDataBuilder::DataGatheringScope::Close()",93957339452896,93957339452988],["v8::internal::PreparseDataBuilder::AddChild(v8::internal::PreparseDataBuilder*)",93957339453200,93957339453468],["v8::internal::PreparseDataBuilder::DataGatheringScope::SetSkippableFunction(v8::internal::DeclarationScope*, int, int)",93957339455488,93957339455527],["v8::internal::PreparseDataBuilder::HasData() const",93957339455552,93957339455568],["v8::internal::PreparseDataBuilder::SaveDataForSkippableFunction(v8::internal::PreparseDataBuilder*)",93957339455728,93957339456152],["v8::internal::PreparseDataBuilder::SaveDataForScope(v8::internal::Scope*)",93957339456496,93957339457241],["non-virtual thunk to v8_inspector::protocol::Runtime::StackTraceId::~StackTraceId()",93957342319632,93957342319711],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_101::__invoke(v8_crdtp::DeserializerState*, void*)",93957342321808,93957342321960],["v8_inspector::protocol::Runtime::CallArgument::deserializer_descriptor()::$_40::__invoke(v8_crdtp::DeserializerState*, void*)",93957342322624,93957342322770],["v8_inspector::protocol::Runtime::(anonymous namespace)::awaitPromiseParams::deserializer_descriptor()::$_71::__invoke(v8_crdtp::DeserializerState*, void*)",93957342323072,93957342323111],["v8_inspector::protocol::Runtime::(anonymous namespace)::callFunctionOnParams::deserializer_descriptor()::$_74::__invoke(v8_crdtp::DeserializerState*, void*)",93957342323392,93957342323654],["v8_crdtp::ProtocolTypeTraits<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > >*)",93957342323872,93957342324221],["v8_inspector::protocol::Runtime::(anonymous namespace)::callFunctionOnParams::deserializer_descriptor()::$_76::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324272,93957342324311],["v8_inspector::protocol::Runtime::(anonymous namespace)::callFunctionOnParams::deserializer_descriptor()::$_79::__invoke(v8_crdtp::DeserializerState*, void*)",93957342324368,93957342324517],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeIterator(v8::internal::compiler::Node*)",93957343791344,93957343791865],["v8::internal::TNode<v8::internal::String> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::String> ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::ReduceStringPrototypeSlice()::$_11, v8::internal::TNode<v8::internal::String> ()> >(std::__1::__function::__policy_storage const*)",93957343827168,93957343827205],["v8::internal::compiler::PromiseBuiltinReducerAssembler::CallPromiseReject(v8::internal::TNode<v8::internal::JSFunction>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)",93957343835504,93957343835754],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateArguments(v8::internal::compiler::Node*)",93957343842320,93957343849251],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateLiteralRegExp(v8::internal::compiler::Node*)",93957343866560,93957343866898],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateObject(v8::internal::compiler::Node*)",93957343875504,93957343878446],["v8::internal::compiler::JSCreateLowering::ReduceNewArray(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::MapRef, v8::internal::ElementsKind, v8::internal::AllocationType, v8::internal::compiler::SlackTrackingPrediction const&)",93957343883792,93957343885494],["v8::internal::compiler::AllocationBuilder::AllocateSloppyArgumentElements(int, v8::internal::compiler::MapRef, v8::internal::AllocationType)",93957343895152,93957343895597],["v8::internal::compiler::JSGenericLowering::LowerJSStrictEqual(v8::internal::compiler::Node*)",93957343898256,93957343898602],["v8::internal::compiler::JSGenericLowering::LowerJSGreaterThanOrEqual(v8::internal::compiler::Node*)",93957343898992,93957343899116],["v8::internal::compiler::JSGenericLowering::LowerJSShiftLeft(v8::internal::compiler::Node*)",93957343899504,93957343899628],["v8::internal::compiler::JSGenericLowering::LowerJSSubtract(v8::internal::compiler::Node*)",93957343900016,93957343900140],["v8::internal::compiler::JSGenericLowering::LowerJSExponentiate(v8::internal::compiler::Node*)",93957343900528,93957343900652],["v8::internal::compiler::JSGenericLowering::LowerJSCreateArray(v8::internal::compiler::Node*)",93957343901024,93957343901345],["v8::internal::compiler::JSGenericLowering::LowerJSCreateLiteralArray(v8::internal::compiler::Node*)",93957343901664,93957343901906],["v8::internal::compiler::JSGenericLowering::LowerJSLoadProperty(v8::internal::compiler::Node*)",93957343902736,93957343903255],["v8::internal::compiler::JSGenericLowering::LowerJSLoadGlobal(v8::internal::compiler::Node*)",93957343904784,93957343905339],["v8::internal::compiler::JSGenericLowering::LowerJSStoreNamed(v8::internal::compiler::Node*)",93957343905616,93957343906117],["v8::internal::compiler::JSGenericLowering::LowerJSStoreGlobal(v8::internal::compiler::Node*)",93957343906688,93957343906986],["v8::internal::compiler::JSGenericLowering::LowerJSStoreInArrayLiteral(v8::internal::compiler::Node*)",93957343907136,93957343907268],["v8::internal::compiler::JSGenericLowering::LowerJSGetSuperConstructor(v8::internal::compiler::Node*)",93957343907424,93957343908294],["v8::internal::compiler::JSGenericLowering::LowerJSCreateCatchContext(v8::internal::compiler::Node*)",93957343908704,93957343908796],["v8::internal::compiler::JSGenericLowering::LowerJSCreateBlockContext(v8::internal::compiler::Node*)",93957343908896,93957343908985],["v8::internal::compiler::JSGenericLowering::LowerJSCallForwardVarargs(v8::internal::compiler::Node*)",93957343909744,93957343910065],["v8::internal::compiler::JSGenericLowering::LowerJSCallWithSpread(v8::internal::compiler::Node*)",93957343911472,93957343912218],["v8::internal::compiler::JSGenericLowering::LowerJSConstruct(v8::internal::compiler::Node*)",93957343912576,93957343913271],["v8::internal::compiler::JSGenericLowering::LowerJSConstructWithSpread(v8::internal::compiler::Node*)",93957343913904,93957343914710],["v8::internal::compiler::JSGenericLowering::LowerJSForInNext(v8::internal::compiler::Node*)",93957343914768,93957343914855],["v8::internal::compiler::JSGenericLowering::LowerJSGetIterator(v8::internal::compiler::Node*)",93957343915840,93957343915976],["v8::internal::compiler::JSGenericLowering::ReplaceWithBuiltinCall(v8::internal::compiler::Node*, v8::internal::Builtins::Name)",93957343917184,93957343917382],["v8::internal::compiler::JSGenericLowering::ReplaceUnaryOpWithBuiltinCall(v8::internal::compiler::Node*, v8::internal::Builtins::Name, v8::internal::Builtins::Name)",93957343917680,93957343918010],["v8::internal::compiler::JSGraph::CEntryStubConstant(int, v8::internal::SaveFPRegsMode, v8::internal::ArgvMode, bool)",93957343918032,93957343918423],["inet_ntop",139871564419536,139871564420361],["__res_init",139871564428704,139871564428836],["__res_iclose",139871564428896,139871564429082],["__resolv_context_get",139871564429664,139871564429865],["lgammaf",139871565311584,139871565311783],["__j0l_finite",139871565316240,139871565316907],["__lgammal_r_finite",139871565322992,139871565325216],["__remainderl_finite",139871565326368,139871565326391],["__sqrtl_finite",139871565327088,139871565327095],["asinhf64x",139871565329696,139871565329963],["cbrtf64x",139871565329984,139871565330334],["cosf64x",139871565330384,139871565330732],["v8::internal::Isolate::RunPrepareStackTraceCallback(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::JSArray>)",93957336660960,93957336661033],["v8::internal::Isolate::LoadStartTimeMs()",93957336663824,93957336663888],["v8::internal::Isolate::set_icu_object_in_cache(v8::internal::Isolate::ICUObjectCacheType, v8::internal::Handle<v8::internal::Object>, std::__1::shared_ptr<icu_68::UMemory>)",93957336665888,93957336666752],["v8::internal::SaveContext::~SaveContext()",93957336667136,93957336667175],["v8::internal::Isolate::AddCodeRange(unsigned long, unsigned long)",93957336667840,93957336667850],["v8::internal::Isolate::RemoveContextIdCallback(v8::WeakCallbackInfo<void> const&)",93957336668144,93957336668633],["v8::internal::Isolate::store_to_stack_count_address(char const*)",93957336668912,93957336669181],["v8::internal::StackTraceBuilder::AppendBuiltinExitFrame(v8::internal::BuiltinExitFrame*)",93957336669536,93957336670182],["v8::internal::ParserBase<v8::internal::Parser>::ParseSuperExpression()",93957339389808,93957339390438],["v8::internal::ParserBase<v8::internal::Parser>::ReportMessageAt(v8::internal::Scanner::Location, v8::internal::MessageTemplate)",93957339408224,93957339408327],["v8::internal::ParserBase<v8::internal::Parser>::ParseBlock(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339417280,93957339417403],["v8::internal::ParserBase<v8::internal::Parser>::ParseReturnStatement()",93957339428496,93957339429848],["v8::internal::ParserBase<v8::internal::Parser>::BlockState::BlockState(v8::internal::Zone*, v8::internal::Scope**)",93957339436048,93957339436156],["v8::internal::IfStatementSourceRanges::HasRange(v8::internal::SourceRangeKind)",93957339437168,93957339437194],["v8::internal::ParserBase<v8::internal::Parser>::ParseVariableDeclarations(v8::internal::ParserBase<v8::internal::Parser>::VariableDeclarationContext, v8::internal::ParserBase<v8::internal::Parser>::DeclarationParsingResult*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339437312,93957339440054],["v8::internal::ParserBase<v8::internal::Parser>::ParseForEachStatementWithoutDeclarations(int, v8::internal::Expression*, int, int, v8::internal::ParserBase<v8::internal::Parser>::ForInfo*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339443680,93957339445220],["v8::internal::ParserBase<v8::internal::Parser>::BuildReturnStatement(v8::internal::Expression*, int, int)",93957339446976,93957339447301],["v8::internal::ParserBase<v8::internal::Parser>::ParseNativeDeclaration()",93957339448128,93957339448693],["v8::internal::ParserBase<v8::internal::Parser>::ParseAsyncFunctionBody(v8::internal::Scope*, v8::internal::ScopedList<v8::internal::Statement*, void*>*)",93957339449008,93957339449964],["v8::internal::parsing::ParseProgram(v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::Script>, v8::internal::Isolate*, v8::internal::parsing::ReportStatisticsMode)",93957339450448,93957339450466],["v8::internal::parsing::ParseAny(v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Isolate*, v8::internal::parsing::ReportStatisticsMode)",93957339451088,93957339451560],["void v8::internal::PendingCompilationErrorHandler::PrepareWarnings<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957339451632,93957339451739],["void v8::internal::PendingCompilationErrorHandler::PrepareErrors<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::AstValueFactory*)",93957339451808,93957339451906],["v8::internal::PendingCompilationErrorHandler::ReportMessageAt(int, int, v8::internal::MessageTemplate, v8::internal::AstRawString const*)",93957339451968,93957339452008],["v8_inspector::protocol::Runtime::CallFrame::~CallFrame()",93957342318944,93957342319033],["v8_crdtp::ProtocolTypeTraits<std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> > > > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> > > > > >*)",93957342320256,93957342320456],["v8_crdtp::ProtocolTypeTraits<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> > > >*)",93957342321264,93957342321634],["v8_inspector::protocol::Runtime::PropertyPreview::deserializer_descriptor()::$_20::__invoke(v8_crdtp::DeserializerState*, void*)",93957342321984,93957342322130],["v8_inspector::protocol::Runtime::EntryPreview::deserializer_descriptor()::$_23::__invoke(v8_crdtp::DeserializerState*, void*)",93957342322464,93957342322623],["v8_inspector::protocol::Runtime::CallArgument::deserializer_descriptor()::$_41::__invoke(v8_crdtp::DeserializerState*, void*)",93957342322784,93957342322930],["v8_inspector::protocol::Runtime::StackTraceId::deserializer_descriptor()::$_67::__invoke(v8_crdtp::DeserializerState*, void*)",93957342323056,93957342323070],["v8_inspector::protocol::Runtime::(anonymous namespace)::awaitPromiseParams::deserializer_descriptor()::$_73::__invoke(v8_crdtp::DeserializerState*, void*)",93957342323120,93957342323159],["v8::internal::compiler::JSCallReducer::ReduceArrayPrototypePop(v8::internal::compiler::Node*)",93957343720272,93957343723146],["v8::internal::compiler::JSCallReducer::ReduceTypedArrayConstructor(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343812352,93957343813417],["v8::internal::TNode<v8::internal::Object> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Object> ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::JSCall3(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::$_0, v8::internal::TNode<v8::internal::Object> ()> >(std::__1::__function::__policy_storage const*)",93957343825520,93957343826012],["v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeReduce(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::ArrayReduceDirection, v8::internal::compiler::SharedFunctionInfoRef const&)::$_16, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343828736,93957343828762],["v8::internal::compiler::PromiseBuiltinReducerAssembler::CallPromiseExecutor(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::JSFunction>, v8::internal::TNode<v8::internal::JSFunction>, v8::internal::compiler::FrameState)",93957343834816,93957343835078],["v8::internal::compiler::JSContextSpecialization::Reduce(v8::internal::compiler::Node*)",93957343836256,93957343836477],["v8::internal::compiler::GetModuleContext(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*, v8::Maybe<v8::internal::compiler::OuterContext>)::$_0::operator()(v8::internal::compiler::ContextRef) const",93957343840064,93957343840236],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateBoundFunction(v8::internal::compiler::Node*)",93957343855600,93957343857529],["v8::internal::compiler::JSCreateLowering::ReduceJSCreatePromise(v8::internal::compiler::Node*)",93957343864976,93957343866088],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateEmptyLiteralObject(v8::internal::compiler::Node*)",93957343867216,93957343868426],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateBlockContext(v8::internal::compiler::Node*)",93957343871536,93957343872548],["v8::internal::compiler::JSCreateLowering::TryAllocateAliasedArguments(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&, bool*)",93957343878752,93957343879841],["v8::internal::compiler::JSCreateLowering::TryAllocateRestArguments(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::FrameState, int)",93957343882496,93957343883306],["v8::internal::compiler::JSCreateLowering::AllocateElements(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::ElementsKind, int, v8::internal::AllocationType)",93957343886960,93957343887402],["v8::internal::compiler::JSCreateLowering::AllocateLiteralRegExp(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::RegExpBoilerplateDescriptionRef)",93957343893472,93957343894693],["v8::internal::compiler::JSCreateLowering::reducer_name() const",93957343896800,93957343896813],["v8::internal::compiler::JSGenericLowering::LowerJSEqual(v8::internal::compiler::Node*)",93957343898128,93957343898252],["v8::internal::compiler::JSGenericLowering::LowerJSLessThan(v8::internal::compiler::Node*)",93957343898608,93957343898732],["v8::internal::compiler::JSGenericLowering::LowerJSLessThanOrEqual(v8::internal::compiler::Node*)",93957343898864,93957343898988],["v8::internal::compiler::JSGenericLowering::LowerJSBitwiseOr(v8::internal::compiler::Node*)",93957343899120,93957343899244],["v8::internal::compiler::JSGenericLowering::LowerJSBitwiseAnd(v8::internal::compiler::Node*)",93957343899376,93957343899500],["v8::internal::compiler::JSGenericLowering::LowerJSShiftRight(v8::internal::compiler::Node*)",93957343899632,93957343899756],["v8::internal::compiler::JSGenericLowering::LowerJSAdd(v8::internal::compiler::Node*)",93957343899888,93957343900012],["v8::internal::compiler::JSGenericLowering::LowerJSMultiply(v8::internal::compiler::Node*)",93957343900144,93957343900268],["v8::internal::compiler::JSGenericLowering::LowerJSModulus(v8::internal::compiler::Node*)",93957343900400,93957343900524],["v8::internal::compiler::JSGenericLowering::LowerJSInstanceOf(v8::internal::compiler::Node*)",93957343900656,93957343900780],["v8::internal::compiler::JSGenericLowering::LowerJSCreateArguments(v8::internal::compiler::Node*)",93957343900944,93957343901010],["v8::internal::compiler::JSGenericLowering::LowerJSCreateClosure(v8::internal::compiler::Node*)",93957343901360,93957343901495],["v8::internal::compiler::JSGenericLowering::LowerJSCreateGeneratorObject(v8::internal::compiler::Node*)",93957343901616,93957343901662],["v8::internal::compiler::JSGenericLowering::LowerJSCreateLiteralObject(v8::internal::compiler::Node*)",93957343901920,93957343902164],["v8::internal::compiler::JSGenericLowering::LowerJSGetTemplateObject(v8::internal::compiler::Node*)",93957343902368,93957343902729],["v8::internal::compiler::JSGenericLowering::LowerJSLoadNamed(v8::internal::compiler::Node*)",93957343903264,93957343903959],["herror",139871564418736,139871564418933],["inet_pton",139871564421216,139871564421324],["__res_ninit",139871564422464,139871564422525],["__res_state",139871564428848,139871564428860],["logf",139871565309824,139871565309905],["__acoshl_finite",139871565312272,139871565312518],["__fmodl_finite",139871565314032,139871565314053],["__j1l_finite",139871565318928,139871565319639],["__ynl_finite",139871565322016,139871565322983],["__logl_finite",139871565325312,139871565325362],["__powl_finite",139871565325520,139871565326363],["__scalbl_finite",139871565326400,139871565326527],["v8::internal::Isolate::FireCallCompletedCallback(v8::internal::MicrotaskQueue*)",93957336658176,93957336658452],["v8::internal::Isolate::RunPromiseHook(v8::PromiseHookType, v8::internal::Handle<v8::internal::JSPromise>, v8::internal::Handle<v8::internal::Object>)",93957336661408,93957336661476],["v8::internal::Isolate::AddDetachedContext(v8::internal::Handle<v8::internal::Context>)",93957336662720,93957336662935],["v8::internal::Isolate::SetIdle(bool)",93957336664096,93957336664150],["v8::internal::(anonymous namespace)::GetStringFromLocale(v8::internal::Handle<v8::internal::Object>)",93957336665664,93957336665886],["std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> >::operator=(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<icu_68::UMemory> > const&)",93957336666752,93957336666950],["v8::internal::SaveContext::SaveContext(v8::internal::Isolate*)",93957336667008,93957336667133],["v8::internal::SaveAndSwitchContext::SaveAndSwitchContext(v8::internal::Isolate*, v8::internal::Context)",93957336667184,93957336667318],["v8::internal::ParserBase<v8::internal::Parser>::ParseBinaryContinuation(v8::internal::Expression*, int, int)",93957339375728,93957339377112],["v8::internal::ParserBase<v8::internal::Parser>::ParseTemplateLiteral(v8::internal::Expression*, int, bool)",93957339394864,93957339396172],["v8::internal::ParserBase<v8::internal::Parser>::ParseBlock(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::Scope*)",93957339403568,93957339404568],["v8::internal::ConditionalSourceRanges::HasRange(v8::internal::SourceRangeKind)",93957339408944,93957339408964],["v8::internal::ParserBase<v8::internal::Parser>::IsNextLetKeyword()",93957339413168,93957339413249],["v8::internal::ParserBase<v8::internal::Parser>::ParseDoWhileStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339418912,93957339420151],["v8::internal::ParserBase<v8::internal::Parser>::ParseContinueStatement()",93957339426784,93957339427573],["v8::internal::ParserBase<v8::internal::Parser>::ParseWithStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339430768,93957339431539],["v8::internal::ParserBase<v8::internal::Parser>::ParseScopedStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339435504,93957339436045],["v8::internal::ParserBase<v8::internal::Parser>::ParseFunctionDeclaration()",93957339436160,93957339436336],["v8::internal::IfStatementSourceRanges::GetRange(v8::internal::SourceRangeKind)",93957339437056,93957339437157],["v8::internal::IfStatementSourceRanges::RemoveContinuationRange()",93957339437200,93957339437210],["v8::internal::IterationStatementSourceRanges::HasRange(v8::internal::SourceRangeKind)",93957339437296,93957339437311],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::ValidateAndRewriteReference(v8::internal::Expression*, int, int)",93957339440064,93957339440277],["v8::internal::ParserBase<v8::internal::Parser>::ParseStandardForLoopWithLexicalDeclarations(int, v8::internal::Statement*, v8::internal::ParserBase<v8::internal::Parser>::ForInfo*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339442688,93957339443665],["v8::internal::ParserBase<v8::internal::Parser>::ParseStandardForLoop(int, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::Expression**, v8::internal::Statement**, v8::internal::Statement**)",93957339445232,93957339446801],["v8_inspector::protocol::Runtime::PrivatePropertyDescriptor::~PrivatePropertyDescriptor()",93957342317904,93957342318020],["non-virtual thunk to v8_inspector::protocol::Runtime::StackTrace::~StackTrace()",93957342319392,93957342319406],["v8_inspector::protocol::Runtime::ObjectPreview::deserializer_descriptor()::$_11::__invoke(v8_crdtp::DeserializerState*, void*)",93957342319808,93957342319954],["v8_crdtp::DeserializableProtocolObject<v8_inspector::protocol::Runtime::EntryPreview>::Deserialize(v8_crdtp::DeserializerState*, v8_inspector::protocol::Runtime::EntryPreview*)",93957342320768,93957342321013],["v8_crdtp::ProtocolTypeTraits<std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> > > > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::PropertyPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::PropertyPreview> > > > > >*)",93957342321056,93957342321256],["v8_inspector::protocol::Runtime::(anonymous namespace)::runScriptParams::deserializer_descriptor()::$_116::__invoke(v8_crdtp::DeserializerState*, void*)",93957342321648,93957342321794],["v8_inspector::protocol::Runtime::PropertyPreview::deserializer_descriptor()::$_19::__invoke(v8_crdtp::DeserializerState*, void*)",93957342321968,93957342321982],["v8_inspector::protocol::Runtime::PropertyPreview::deserializer_descriptor()::$_21::__invoke(v8_crdtp::DeserializerState*, void*)",93957342322144,93957342322303],["v8::internal::compiler::JSCallReducer::ReduceObjectPrototypeGetProto(v8::internal::compiler::Node*)",93957343688176,93957343688247],["v8::internal::compiler::JSCallReducer::ReduceGlobalIsNaN(v8::internal::compiler::Node*)",93957343775488,93957343776029],["v8::internal::compiler::JSCallReducer::ReduceCollectionPrototypeSize(v8::internal::compiler::Node*, v8::internal::CollectionKind)",93957343802624,93957343803370],["v8::internal::compiler::(anonymous namespace)::CreateArtificialFrameState(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int, v8::internal::BytecodeOffset, v8::internal::compiler::FrameStateType, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::Node*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::compiler::Graph*)",93957343821984,93957343822524],["v8::internal::compiler::GraphAssembler::LoopScope<(v8::internal::MachineRepresentation)8, (v8::internal::MachineRepresentation)8>::LoopScope(v8::internal::compiler::GraphAssembler*)",93957343824384,93957343825101],["v8::internal::TNode<v8::internal::Object> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Object> ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::JSCallRuntime2(v8::internal::Runtime::FunctionId, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::$_2, v8::internal::TNode<v8::internal::Object> ()> >(std::__1::__function::__policy_storage const*)",93957343826672,93957343826920],["v8::internal::TNode<v8::internal::Object> v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::MaybeSkipHole<>(v8::internal::TNode<v8::internal::Object>, v8::internal::ElementsKind, v8::internal::compiler::GraphAssemblerLabel<0>*)",93957343828368,93957343828593],["v8::internal::TNode<v8::internal::Object> v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::MaybeSkipHole<v8::internal::Object>(v8::internal::TNode<v8::internal::Object>, v8::internal::ElementsKind, v8::internal::compiler::GraphAssemblerLabel<1>*, v8::internal::TNode<v8::internal::Object>)",93957343830192,93957343830427],["v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeIndexOfIncludes(v8::internal::ElementsKind, v8::internal::compiler::ArrayIndexOfIncludesVariant)::$_24, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > ()> >(std::__1::__function::__policy_storage const*)",93957343834704,93957343834768],["v8::internal::compiler::PromiseBuiltinReducerAssembler::CallPromiseExecutor(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::JSFunction>, v8::internal::TNode<v8::internal::JSFunction>, v8::internal::compiler::FrameState)::{lambda()#1}::operator()() const",93957343835104,93957343835445],["v8::internal::compiler::PromiseBuiltinReducerAssembler::CallPromiseReject(v8::internal::TNode<v8::internal::JSFunction>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::{lambda()#1}::operator()() const",93957343835776,93957343836096],["v8::internal::compiler::JSContextSpecialization::ReduceJSStoreContext(v8::internal::compiler::Node*)",93957343837936,93957343838668],["v8::internal::compiler::(anonymous namespace)::GetSpecializationContext(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*, unsigned long*, v8::Maybe<v8::internal::compiler::OuterContext>)",93957343839296,93957343839668],["v8::internal::compiler::JSCreateLowering::Reduce(v8::internal::compiler::Node*)",93957343840256,93957343840826],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateArrayIterator(v8::internal::compiler::Node*)",93957343851680,93957343853081],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateCollectionIterator(v8::internal::compiler::Node*)",93957343859680,93957343861212],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateKeyValueArray(v8::internal::compiler::Node*)",93957343863472,93957343864970],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateLiteralArrayOrObject(v8::internal::compiler::Node*)",93957343866096,93957343866552],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateEmptyLiteralArray(v8::internal::compiler::Node*)",93957343866912,93957343867208],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateFunctionContext(v8::internal::compiler::Node*)",93957343868432,93957343869544],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateCatchContext(v8::internal::compiler::Node*)",93957343870544,93957343871529],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateGeneratorObject(v8::internal::compiler::Node*)",93957343872560,93957343875491],["v8::internal::compiler::AllocationBuilder::FinishAndChange(v8::internal::compiler::Node*)",93957343878448,93957343878746],["v8::internal::compiler::JSCreateLowering::native_context() const",93957343879856,93957343879901],["v8::internal::compiler::JSCreateLowering::TryAllocateArguments(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::FrameState)",93957343881760,93957343882494],["v8::internal::compiler::AllocationBuilder::AllocateArray(int, v8::internal::compiler::MapRef, v8::internal::AllocationType)",93957343883312,93957343883786],["v8::internal::compiler::JSCreateLowering::ReduceNewArray(v8::internal::compiler::Node*, v8::internal::compiler::Node*, int, v8::internal::compiler::MapRef, v8::internal::ElementsKind, v8::internal::AllocationType, v8::internal::compiler::SlackTrackingPrediction const&)",93957343885504,93957343886945],["v8::internal::compiler::JSCreateLowering::ReduceNewArray(v8::internal::compiler::Node*, std::__1::vector<v8::internal::compiler::Node*, std::__1::allocator<v8::internal::compiler::Node*> >, v8::internal::compiler::MapRef, v8::internal::ElementsKind, v8::internal::AllocationType, v8::internal::compiler::SlackTrackingPrediction const&)",93957343887408,93957343889318],["v8::internal::compiler::JSCreateLowering::AllocateFastLiteral(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::JSObjectRef, v8::internal::AllocationType)",93957343889792,93957343893459],["v8::internal::compiler::AllocationBuilder::AllocateContext(int, v8::internal::compiler::MapRef)",93957343894704,93957343895145],["v8::internal::compiler::JSCreateLowering::AllocateFastLiteralElements(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::JSObjectRef, v8::internal::AllocationType)",93957343895600,93957343896787],["v8::internal::compiler::JSGenericLowering::JSGenericLowering(v8::internal::compiler::JSGraph*, v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSHeapBroker*)",93957343896816,93957343896844],["__idna_to_dns_encoding",139871564413936,139871564414225],["inet_aton",139871564419392,139871564419446],["__inet_pton_length",139871564421136,139871564421214],["inet_nsap_addr",139871564421328,139871564421543],["j0f",139871565309008,139871565309072],["sinhf",139871565310736,139871565310829],["gammaf",139871565311920,139871565312204],["__atan2l_finite",139871565313120,139871565313131],["__expl_finite",139871565313824,139871565314022],["__hypotl_finite",139871565314064,139871565314950],["__y0l_finite",139871565316912,139871565317638],["__y1l_finite",139871565319648,139871565320414],["v8::internal::Isolate::random_number_generator()",93957336656608,93957336656700],["v8::internal::Isolate::ClearKeptObjects()",93957336660656,93957336660673],["v8::internal::Isolate::RunAtomicsWaitCallback(v8::Isolate::AtomicsWaitEvent, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, long, double, v8::internal::AtomicsWaitWakeHandle*)",93957336661072,93957336661208],["v8::internal::Isolate::OnAsyncFunctionStateChanged(v8::internal::Handle<v8::internal::JSPromise>, v8::debug::DebugAsyncActionType)",93957336662432,93957336662563],["v8::internal::Isolate::GetNextScriptId()",93957336662656,93957336662717],["v8::internal::Isolate::CheckDetachedContextsAfterGC()",93957336662944,93957336663813],["v8::internal::Isolate::PrintWithTimestamp(char const*, ...)",93957336663888,93957336664091],["v8::internal::Isolate::CollectSourcePositionsForAllBytecodeArrays()",93957336664160,93957336664910],["v8::internal::VariableDeclarationParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::Declare(v8::internal::AstRawString const*, int)",93957339363744,93957339364218],["v8::internal::ParserBase<v8::internal::Parser>::ParseAsyncFunctionLiteral()",93957339386448,93957339386891],["v8::internal::ParserBase<v8::internal::Parser>::ParseExpressionCoverGrammar()",93957339391296,93957339392116],["v8::internal::ParserBase<v8::internal::Parser>::ParseNewTargetExpression()",93957339397472,93957339397776],["v8::internal::ParserBase<v8::internal::Parser>::ParseClassStaticBlock(v8::internal::ParserBase<v8::internal::Parser>::ClassInfo*)",93957339400880,93957339401383],["v8::internal::ParserBase<v8::internal::Parser>::ParseProperty(v8::internal::ParserBase<v8::internal::Parser>::ParsePropertyInfo*)",93957339404688,93957339407199],["v8::internal::ExpressionSourceRanges::HasRange(v8::internal::SourceRangeKind)",93957339408880,93957339408892],["v8::internal::ParserBase<v8::internal::Parser>::ParseObjectPropertyDefinition(v8::internal::ParserBase<v8::internal::Parser>::ParsePropertyInfo*, bool*)",93957339409312,93957339412563],["v8::internal::ParserBase<v8::internal::Parser>::ValidateFormalParameters(v8::internal::LanguageMode, v8::internal::ParserFormalParameters const&, bool)",93957339412912,93957339413166],["v8::internal::ParserBase<v8::internal::Parser>::ParseStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::AllowLabelledFunctionStatement)",93957339413264,93957339417266],["v8::internal::ParserBase<v8::internal::Parser>::ParseIfStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339417408,93957339418905],["v8::internal::ParserBase<v8::internal::Parser>::ParseWhileStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339420160,93957339421183],["v8::internal::ParserBase<v8::internal::Parser>::ParseForStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339424448,93957339426777],["v8::internal::ParserBase<v8::internal::Parser>::ParseBreakStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339427584,93957339428481],["v8::internal::ParserBase<v8::internal::Parser>::ParseThrowStatement()",93957339429856,93957339430765],["v8::internal::ParserBase<v8::internal::Parser>::ParseSwitchStatement(v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339431552,93957339434288],["v8_inspector::protocol::Runtime::PropertyPreview::~PropertyPreview()",93957342316976,93957342317128],["v8_inspector::protocol::Runtime::ExecutionContextDescription::~ExecutionContextDescription()",93957342318384,93957342318496],["v8_inspector::protocol::Runtime::StackTrace::~StackTrace()",93957342319136,93957342319351],["v8_inspector::protocol::Runtime::StackTraceId::~StackTraceId()",93957342319456,93957342319535],["non-virtual thunk to v8_inspector::protocol::Runtime::StackTraceId::~StackTraceId()",93957342319712,93957342319795],["v8_inspector::protocol::Runtime::ObjectPreview::deserializer_descriptor()::$_12::__invoke(v8_crdtp::DeserializerState*, void*)",93957342319968,93957342320246],["v8_crdtp::ProtocolTypeTraits<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::EntryPreview, std::__1::default_delete<v8_inspector::protocol::Runtime::EntryPreview> > > >*)",93957342320464,93957342320760],["v8_inspector::protocol::Runtime::ObjectPreview::deserializer_descriptor()::$_13::__invoke(v8_crdtp::DeserializerState*, void*)",93957342321024,93957342321038],["v8::internal::compiler::PromiseBuiltinReducerAssembler::ReducePromiseConstructor(v8::internal::compiler::NativeContextRef const&)",93957343657888,93957343660044],["v8::internal::compiler::JSCallReducer::ReduceArrayFindIndex(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343699072,93957343699553],["v8::internal::compiler::JSCallReducer::ReduceDataViewAccess(v8::internal::compiler::Node*, v8::internal::compiler::JSCallReducer::DataViewAccess, v8::internal::ExternalArrayType)",93957343738752,93957343741723],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeSubstring(v8::internal::compiler::Node*)",93957343784064,93957343784426],["v8::internal::compiler::JSCallReducer::ReducePromisePrototypeFinally(v8::internal::compiler::Node*)",93957343795600,93957343798884],["v8::internal::compiler::JSCallReducer::ReduceNumberConstructor(v8::internal::compiler::Node*)",93957343810432,93957343810978],["v8::internal::compiler::(anonymous namespace)::CanInlineArrayIteratingBuiltin(v8::internal::compiler::JSHeapBroker*, std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > > const&, v8::internal::ElementsKind*)",93957343815328,93957343815562],["v8::internal::compiler::JSCallReducer::reducer_name() const",93957343822672,93957343822685],["v8::internal::compiler::GraphAssembler::LoopScope<(v8::internal::MachineRepresentation)8>::LoopScope(v8::internal::compiler::GraphAssembler*)",93957343823648,93957343824365],["v8::internal::compiler::JSCallReducerAssembler::~JSCallReducerAssembler()",93957343825392,93957343825473],["v8::internal::TNode<v8::internal::Object> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Object> ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::JSCall4(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::$_1, v8::internal::TNode<v8::internal::Object> ()> >(std::__1::__function::__policy_storage const*)",93957343826080,93957343826598],["v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::ReduceStringPrototypeSlice()::$_7, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > ()> >(std::__1::__function::__policy_storage const*)",93957343827072,93957343827129],["void std::__1::__function::__policy_invoker<void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeForEach(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&)::$_13, void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343827232,93957343828076],["v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeReduce(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::ArrayReduceDirection, v8::internal::compiler::SharedFunctionInfoRef const&)::$_14, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343828672,93957343828698],["void std::__1::__function::__policy_invoker<void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeReduce(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::ArrayReduceDirection, v8::internal::compiler::SharedFunctionInfoRef const&)::$_18, void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343828800,93957343829212],["void std::__1::__function::__policy_invoker<void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::Object>*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeFilter(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&)::$_21, void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::Object>*)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&, v8::internal::TNode<v8::internal::Object>*)",93957343831344,93957343832708],["void std::__1::__function::__policy_invoker<void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeEverySome(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&, v8::internal::compiler::ArrayEverySomeVariant)::$_23, void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343833744,93957343834702],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::PromiseBuiltinReducerAssembler::ReducePromiseConstructor(v8::internal::compiler::NativeContextRef const&)::$_26, void ()> >(std::__1::__function::__policy_storage const*)",93957343834768,93957343834812],["v8::internal::TNode<v8::internal::Object> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Object> ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::PromiseBuiltinReducerAssembler::CallPromiseExecutor(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::JSFunction>, v8::internal::TNode<v8::internal::JSFunction>, v8::internal::compiler::FrameState)::{lambda()#1}, v8::internal::TNode<v8::internal::Object> ()> >(std::__1::__function::__policy_storage const*)",93957343835088,93957343835101],["void std::__1::__function::__policy_invoker<void (v8::internal::TNode<v8::internal::Object>)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::PromiseBuiltinReducerAssembler::ReducePromiseConstructor(v8::internal::compiler::NativeContextRef const&)::$_27, void (v8::internal::TNode<v8::internal::Object>)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::Object>&&)",93957343835456,93957343835489],["v8::internal::TNode<v8::internal::Object> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Object> ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::PromiseBuiltinReducerAssembler::CallPromiseReject(v8::internal::TNode<v8::internal::JSFunction>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::{lambda()#1}, v8::internal::TNode<v8::internal::Object> ()> >(std::__1::__function::__policy_storage const*)",93957343835760,93957343835773],["v8::internal::compiler::SkipValueIdentities(v8::internal::compiler::Node*)",93957343836096,93957343836242],["v8::internal::compiler::JSContextSpecialization::ReduceJSLoadContext(v8::internal::compiler::Node*)",93957343836480,93957343837923],["v8::internal::compiler::JSContextSpecialization::ReduceJSGetImportMeta(v8::internal::compiler::Node*)",93957343838672,93957343838888],["v8::internal::compiler::JSContextSpecialization::SimplifyJSStoreContext(v8::internal::compiler::Node*, v8::internal::compiler::Node*, unsigned long)",93957343839104,93957343839294],["v8::internal::compiler::GetModuleContext(v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*, v8::Maybe<v8::internal::compiler::OuterContext>)",93957343839680,93957343840064],["v8::internal::compiler::JSContextSpecialization::reducer_name() const",93957343840240,93957343840253],["v8::internal::compiler::JSCreateLowering::ReduceJSCreate(v8::internal::compiler::Node*)",93957343840832,93957343842320],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateArray(v8::internal::compiler::Node*)",93957343849264,93957343851670],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateAsyncFunctionObject(v8::internal::compiler::Node*)",93957343853088,93957343855592],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateClosure(v8::internal::compiler::Node*)",93957343857536,93957343859678],["v8::internal::compiler::JSCreateLowering::ReduceJSCreateIterResultObject(v8::internal::compiler::Node*)",93957343861216,93957343862333],["inet6_rth_reverse",139871564412832,139871564412971],["__netlink_assert_response",139871564418208,139871564418616],["__inet_aton_exact",139871564419280,139871564419378],["inet_addr",139871564419456,139871564419529],["asinf",139871565308080,139871565308145],["jnf",139871565309392,139871565309467],["dremf",139871565310224,139871565310306],["tgammaf",139871565310880,139871565311366],["expf",139871565311792,139871565311905],["__acosl_finite",139871565312240,139871565312265],["__asinl_finite",139871565312528,139871565313113],["__atanhl_finite",139871565313136,139871565313416],["v8::internal::Isolate::use_optimizer()",93957336655200,93957336655243],["v8::internal::Isolate::SymbolFor(v8::internal::RootIndex, v8::internal::Handle<v8::internal::String>, bool)",93957336657056,93957336657694],["v8::internal::Isolate::RunHostImportModuleDynamicallyCallback(v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::Object>, v8::internal::MaybeHandle<v8::internal::Object>)",93957336658656,93957336659323],["v8::internal::Isolate::RunHostInitializeImportMetaObjectCallback(v8::internal::Handle<v8::internal::SourceTextModule>)",93957336660704,93957336660944],["v8::internal::Isolate::HasPrepareStackTraceCallback() const",93957336661040,93957336661057],["v8::internal::Isolate::SetPromiseHook(void (*)(v8::PromiseHookType, v8::Local<v8::Promise>, v8::Local<v8::Value>))",93957336661216,93957336661408],["v8::internal::Isolate::RunPromiseHookForAsyncEventDelegate(v8::PromiseHookType, v8::internal::Handle<v8::internal::JSPromise>)",93957336661488,93957336662421],["v8::internal::Isolate::SetPromiseRejectCallback(void (*)(v8::PromiseRejectMessage))",93957336662576,93957336662589],["v8::internal::Parser::CloseTemplateLiteral(v8::internal::Parser::TemplateLiteral**, int, v8::internal::Expression*)",93957339360240,93957339360787],["v8::internal::ParserBase<v8::internal::Parser>::ParseAssignmentExpressionCoverGrammar()",93957339369664,93957339372077],["v8::internal::ParserBase<v8::internal::Parser>::ParseAwaitExpression()",93957339379632,93957339380863],["v8::internal::ParserBase<v8::internal::Parser>::ParseMemberWithPresentNewPrefixesExpression()",93957339388064,93957339389030],["v8::internal::AstNodeFactory::NewEmptyParentheses(int)",93957339391136,93957339391200],["v8::internal::Scope::Snapshot::~Snapshot()",93957339392400,93957339392588],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::Validate(int)",93957339396608,93957339396731],["v8::internal::ParserBase<v8::internal::Parser>::ClassifyArrowParameter(v8::internal::AccumulationScope<v8::internal::ParserTypes<v8::internal::Parser> >*, int, v8::internal::Expression*)",93957339398992,93957339399569],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::~ExpressionParsingScope()",93957339400784,93957339400872],["v8::internal::ParserBase<v8::internal::Parser>::ParseClassPropertyDefinition(v8::internal::ParserBase<v8::internal::Parser>::ClassInfo*, v8::internal::ParserBase<v8::internal::Parser>::ParsePropertyInfo*, bool)",93957339401392,93957339403567],["v8::internal::ParserBase<v8::internal::Parser>::NewVarblockScope() const",93957339404576,93957339404680],["v8::internal::ParserBase<v8::internal::Parser>::ParseMemberInitializer(v8::internal::ParserBase<v8::internal::Parser>::ClassInfo*, int, bool)",93957339407200,93957339408209],["v8::internal::ParserBase<v8::internal::Parser>::DoParseMemberExpressionContinuation(v8::internal::Expression*)",93957339408336,93957339408879],["v8::internal::ConditionalSourceRanges::GetRange(v8::internal::SourceRangeKind)",93957339408896,93957339408942],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::ValidatePattern(v8::internal::Expression*, int, int)",93957339408976,93957339409310],["v8::internal::ParserBase<v8::internal::Parser>::NewScope(v8::internal::ScopeType) const",93957339412576,93957339412679],["v8_inspector::protocol::Runtime::RemoteObject::~RemoteObject()",93957342316048,93957342316341],["v8_inspector::protocol::Runtime::PropertyDescriptor::~PropertyDescriptor()",93957342317456,93957342317595],["v8_inspector::protocol::Runtime::CallArgument::~CallArgument()",93957342318160,93957342318268],["v8_inspector::protocol::Runtime::ExceptionDetails::~ExceptionDetails()",93957342318624,93957342318771],["v8_inspector::protocol::Runtime::CallFrame::~CallFrame()",93957342319040,93957342319132],["v8_inspector::protocol::Runtime::StackTrace::~StackTrace()",93957342319360,93957342319388],["non-virtual thunk to v8_inspector::protocol::Runtime::StackTrace::~StackTrace()",93957342319408,93957342319443],["v8_inspector::protocol::Runtime::StackTraceId::~StackTraceId()",93957342319536,93957342319618],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::InstructionAsJSON const&)",93957343628128,93957343631668],["v8::internal::compiler::JSCallReducer::ReduceArrayConstructor(v8::internal::compiler::Node*)",93957343674496,93957343674695],["v8::internal::compiler::JSCallReducer::ReduceReflectHas(v8::internal::compiler::Node*)",93957343693952,93957343695699],["v8::internal::compiler::FastApiCallReducerAssembler::ReduceFastApiCall()",93957343707136,93957343708761],["v8::internal::compiler::JSCallReducer::ReduceArrayIteratorPrototypeNext(v8::internal::compiler::Node*)",93957343731712,93957343736165],["v8::internal::compiler::JSCallReducer::ReduceNumberIsSafeInteger(v8::internal::compiler::Node*)",93957343773168,93957343773368],["v8::internal::compiler::JSCallReducer::ReduceReturnReceiver(v8::internal::compiler::Node*)",93957343781232,93957343781327],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeToLowerCaseIntl(v8::internal::compiler::Node*)",93957343789040,93957343789662],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeConcat(v8::internal::compiler::Node*)",93957343793808,93957343794757],["v8::internal::compiler::JSCallReducer::ReducePromiseResolveTrampoline(v8::internal::compiler::Node*)",93957343800528,93957343801939],["v8::internal::compiler::JSCallReducer::ReduceDatePrototypeGetTime(v8::internal::compiler::Node*)",93957343809520,93957343810089],["v8::internal::compiler::JSConstructNodeBase<817>::ArgumentCount() const",93957343811760,93957343811783],["v8::internal::compiler::JSCallReducer::CheckIfElementsKind(v8::internal::compiler::Node*, v8::internal::ElementsKind, v8::internal::compiler::Node*, v8::internal::compiler::Node**, v8::internal::compiler::Node**)",93957343813872,93957343814610],["v8::internal::compiler::JSCallReducer::DoPromiseChecks(v8::internal::compiler::MapInference*)",93957343815632,93957343816473],["v8::internal::compiler::JSCallReducer::~JSCallReducer()",93957343822592,93957343822620],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::ThrowIfNotCallable(v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::{lambda()#1}, void ()> >(std::__1::__function::__policy_storage const*)",93957343823328,93957343823341],["v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::ForZeroUntil(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)::{lambda(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)#2}, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343823600,93957343823639],["v8::internal::TNode<v8::internal::Oddball> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Oddball> (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::Forever(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, std::__1::function<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> const&)::{lambda(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)#1}, v8::internal::TNode<v8::internal::Oddball> (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343824368,93957343824381],["void v8::internal::compiler::GraphAssembler::BranchImpl<v8::internal::TNode<v8::internal::Object> >(v8::internal::compiler::Node*, v8::internal::compiler::GraphAssemblerLabel<1>*, v8::internal::compiler::GraphAssemblerLabel<1>*, v8::internal::compiler::BranchHint, v8::internal::compiler::IsSafetyCheck, v8::internal::TNode<v8::internal::Object>)",93957343825104,93957343825390],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::JSCallReducerAssembler(v8::internal::compiler::JSCallReducer*, v8::internal::compiler::Node*)::{lambda(v8::internal::compiler::Node*)#1}, void (v8::internal::compiler::Node*)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*)",93957343825488,93957343825509],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::JSCall3(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::$_0, v8::internal::TNode<v8::internal::Object> ()> >(void const*)",93957343826016,93957343826080],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::JSCall4(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::$_1, v8::internal::TNode<v8::internal::Object> ()> >(void const*)",93957343826608,93957343826672],["v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::ReduceStringPrototypeSlice()::$_6, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > ()> >(std::__1::__function::__policy_storage const*)",93957343826928,93957343827060],["v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::ReduceStringPrototypeSlice()::$_8, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > ()> >(std::__1::__function::__policy_storage const*)",93957343827136,93957343827166],["v8::internal::TNode<v8::internal::String> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::String> ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::JSCallReducerAssembler::ReduceStringPrototypeSlice()::$_12, v8::internal::TNode<v8::internal::String> ()> >(std::__1::__function::__policy_storage const*)",93957343827216,93957343827229],["v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::SafeLoadElement(v8::internal::ElementsKind, v8::internal::TNode<v8::internal::JSArray>, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343828080,93957343828363],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::compiler::PromiseBuiltinReducerAssembler::CallPromiseReject(v8::internal::TNode<v8::internal::JSFunction>, v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::{lambda()#1}, v8::internal::TNode<v8::internal::Object> ()> >(void const*)",93957343828608,93957343828664],["v8::internal::TNode<v8::internal::Oddball> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Oddball> (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeReduce(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::ArrayReduceDirection, v8::internal::compiler::SharedFunctionInfoRef const&)::$_15, v8::internal::TNode<v8::internal::Oddball> (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343828704,93957343828730],["v8::internal::TNode<v8::internal::Oddball> std::__1::__function::__policy_invoker<v8::internal::TNode<v8::internal::Oddball> (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeReduce(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::ArrayReduceDirection, v8::internal::compiler::SharedFunctionInfoRef const&)::$_17, v8::internal::TNode<v8::internal::Oddball> (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343828768,93957343828794],["void std::__1::__function::__policy_invoker<void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::Object>*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeReduce(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::ArrayReduceDirection, v8::internal::compiler::SharedFunctionInfoRef const&)::$_19, void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::Object>*)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&, v8::internal::TNode<v8::internal::Object>*)",93957343829216,93957343830192],["void std::__1::__function::__policy_invoker<void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeMap(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&)::$_20, void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343830432,93957343831340],["void std::__1::__function::__policy_invoker<void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeFind(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&, v8::internal::compiler::ArrayFindVariant)::$_22, void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> >(std::__1::__function::__policy_storage const*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >&&)",93957343832720,93957343833653],["inet6_opt_get_val",139871564412592,139871564412633],["inet6_rth_getaddr",139871564413008,139871564413051],["__idna_from_dns_encoding",139871564414240,139871564414438],["hstrerror",139871564418624,139871564418728],["sqrt",139871565296592,139871565296634],["exp2f",139871565308544,139871565308660],["j1f",139871565309200,139871565309264],["log2f",139871565309632,139871565309713],["powf",139871565309920,139871565310219],["scalbf",139871565310512,139871565310725],["sqrtf",139871565310832,139871565310873],["lgammaf32_r",139871565311376,139871565311575],["v8::internal::Isolate::GetTurboCfgFileName(v8::internal::Isolate*)",93957336653712,93957336654404],["v8::internal::Isolate::SetFeedbackVectorsForProfilingTools(v8::internal::Object)",93957336655584,93957336655597],["v8::internal::Isolate::GenerateIdentityHash(unsigned int)",93957336656864,93957336657016],["v8::internal::Isolate::AddCallCompletedCallback(void (*)(v8::Isolate*))",93957336657984,93957336658065],["v8::internal::Isolate::PromiseHookStateUpdated()",93957336658464,93957336658654],["v8::internal::Isolate::GetImportAssertionsFromArgument(v8::internal::MaybeHandle<v8::internal::Object>)",93957336659328,93957336660656],["v8::internal::Isolate::SetHostImportModuleDynamicallyCallback(v8::MaybeLocal<v8::Promise> (*)(v8::Local<v8::Context>, v8::Local<v8::ScriptOrModule>, v8::Local<v8::String>, v8::Local<v8::FixedArray>))",93957336660688,93957336660701],["v8::internal::Isolate::SetHostInitializeImportMetaObjectCallback(void (*)(v8::Local<v8::Context>, v8::Local<v8::Module>, v8::Local<v8::Object>))",93957336660944,93957336660957],["v8::internal::ParserBase<v8::internal::Parser>::CheckArityRestrictions(int, v8::internal::FunctionKind, bool, int, int)",93957339350096,93957339350396],["v8::internal::CaseClauseSourceRanges::HasRange(v8::internal::SourceRangeKind)",93957339362160,93957339362171],["v8::internal::ParserBase<v8::internal::Parser>::ParseArrayLiteral()",93957339365376,93957339367143],["v8::internal::ContinuationSourceRanges::HasRange(v8::internal::SourceRangeKind)",93957339373904,93957339373916],["v8::internal::ParserBase<v8::internal::Parser>::ParsePropertyOrPrivatePropertyName()",93957339378160,93957339378517],["v8::internal::ParserBase<v8::internal::Parser>::ParseLeftHandSideContinuation(v8::internal::Expression*)",93957339381232,93957339383885],["v8::internal::ExpressionParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::SetInitializers(int, int)",93957339387088,93957339387223],["v8::internal::ParserBase<v8::internal::Parser>::ParseRegExpLiteral()",93957339389216,93957339389413],["v8::internal::ParserBase<v8::internal::Parser>::ParseImportExpressions()",93957339390448,93957339391132],["v8::internal::Scope::Snapshot::Snapshot(v8::internal::Scope*)",93957339391200,93957339391287],["v8::internal::ArrowHeadParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::ValidateExpression()",93957339392128,93957339392389],["v8::internal::ParserBase<v8::internal::Parser>::ParseClassLiteral(v8::internal::AstRawString const*, v8::internal::Scanner::Location, bool, int)",93957339392592,93957339394861],["v8::internal::ParserBase<v8::internal::Parser>::ParseV8Intrinsic()",93957339396176,93957339396599],["std::__1::vector<std::__1::pair<v8::internal::VariableProxy*, int>, std::__1::allocator<std::__1::pair<v8::internal::VariableProxy*, int> > >::__append(unsigned long)",93957339396736,93957339397462],["v8::internal::ParserBase<v8::internal::Parser>::ParseArguments(v8::internal::ScopedList<v8::internal::Expression*, void*>*, bool*, v8::internal::ParsingArrowHeadFlag)",93957339397776,93957339398982],["v8::internal::ParserBase<v8::internal::Parser>::ParseArrowParametersWithRest(v8::internal::ScopedList<v8::internal::Expression*, void*>*, v8::internal::AccumulationScope<v8::internal::ParserTypes<v8::internal::Parser> >*, int)",93957339399584,93957339400179],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::runIfWaitingForDebugger(v8_crdtp::Dispatchable const&)",93957342311808,93957342311963],["v8_inspector::protocol::Runtime::CustomPreview::~CustomPreview()",93957342316448,93957342316516],["v8_inspector::protocol::Runtime::EntryPreview::~EntryPreview()",93957342317296,93957342317374],["v8_inspector::protocol::Runtime::InternalPropertyDescriptor::~InternalPropertyDescriptor()",93957342317744,93957342317814],["v8_inspector::protocol::Runtime::PrivatePropertyDescriptor::~PrivatePropertyDescriptor()",93957342318032,93957342318149],["v8_inspector::protocol::Runtime::CallArgument::~CallArgument()",93957342318272,93957342318383],["v8_inspector::protocol::Runtime::ExecutionContextDescription::~ExecutionContextDescription()",93957342318496,93957342318611],["v8_inspector::protocol::Runtime::ExceptionDetails::~ExceptionDetails()",93957342318784,93957342318934],["v8::internal::compiler::GraphTrimmer::TrimGraph()",93957343573312,93957343577141],["v8::internal::compiler::JSCallReducerAssembler::CreateArrayNoThrow(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::compiler::FrameState)",93957343640752,93957343640983],["v8::internal::compiler::JSNodeWrapperBase::effect() const",93957343663616,93957343663736],["v8::internal::compiler::StringRef::StringRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957343682736,93957343682800],["v8::internal::compiler::JSCallReducer::ReduceReflectApply(v8::internal::compiler::Node*)",93957343689776,93957343690075],["v8::internal::compiler::JSCallReducer::ReduceArrayReduceRight(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343697104,93957343697545],["v8::internal::compiler::JSCallReducer::ReduceArraySome(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343700896,93957343701377],["v8::internal::compiler::FeedbackCellRef::FeedbackCellRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957343715760,93957343715824],["v8::internal::compiler::JSCallReducer::ReduceArrayPrototypeSlice(v8::internal::compiler::Node*)",93957343728464,93957343730019],["v8::internal::compiler::JSCallReducer::ReduceArrayBufferIsView(v8::internal::compiler::Node*)",93957343737344,93957343737639],["v8::internal::compiler::JSCallReducer::ReduceNumberIsFinite(v8::internal::compiler::Node*)",93957343772752,93957343772952],["v8::internal::compiler::JSCallReducer::ReduceNumberParseInt(v8::internal::compiler::Node*)",93957343773584,93957343774941],["v8::internal::compiler::JSCallReducer::ReduceMapPrototypeHas(v8::internal::compiler::Node*)",93957343777424,93957343778272],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeCharAt(v8::internal::compiler::Node*)",93957343782464,93957343783295],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeSubstr(v8::internal::compiler::Node*)",93957343784800,93957343787183],["v8::internal::compiler::JSCallReducer::ReduceStringFromCharCode(v8::internal::compiler::Node*)",93957343790288,93957343790799],["v8::internal::compiler::JSCallReducer::ReduceStringIteratorPrototypeNext(v8::internal::compiler::Node*)",93957343791872,93957343793803],["v8::internal::compiler::JSCallReducer::ReducePromisePrototypeCatch(v8::internal::compiler::Node*)",93957343794768,93957343795592],["v8::internal::compiler::JSCallReducer::ReducePromisePrototypeThen(v8::internal::compiler::Node*)",93957343798896,93957343800525],["v8::internal::compiler::JSCallReducer::ReduceCollectionIteration(v8::internal::compiler::Node*, v8::internal::CollectionKind, v8::internal::IterationKind)",93957343801952,93957343802616],["v8::internal::compiler::JSCallReducer::ReduceCollectionIteratorPrototypeNext(v8::internal::compiler::Node*, int, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::InstanceType, v8::internal::InstanceType)",93957343803376,93957343809508],["v8::internal::compiler::JSCallReducer::ReduceDateNow(v8::internal::compiler::Node*)",93957343810096,93957343810428],["v8::internal::compiler::JSCallReducer::ReduceBigIntAsUintN(v8::internal::compiler::Node*)",93957343810992,93957343811750],["v8::internal::compiler::JSCallReducer::ReducePromiseConstructor(v8::internal::compiler::Node*)",93957343811792,93957343812342],["v8::internal::compiler::JSCallReducer::LoadReceiverElementsKind(v8::internal::compiler::Node*, v8::internal::compiler::Effect*, v8::internal::compiler::Control)",93957343813424,93957343813858],["v8::internal::compiler::(anonymous namespace)::CanInlineArrayResizingBuiltin(v8::internal::compiler::JSHeapBroker*, std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > > const&, std::__1::vector<v8::internal::ElementsKind, std::__1::allocator<v8::internal::ElementsKind> >*, bool)",93957343814624,93957343815319],["v8::internal::compiler::JSCallReducerAssembler::~JSCallReducerAssembler()",93957343815568,93957343815628],["v8::internal::ZoneHandleSet<v8::internal::Map>::insert(v8::internal::Handle<v8::internal::Map>, v8::internal::Zone*)",93957343816480,93957343821971],["v8::internal::compiler::JSObjectRef::JSObjectRef(v8::internal::compiler::JSHeapBroker*, v8::internal::Handle<v8::internal::Object>, v8::internal::compiler::ObjectRef::BackgroundSerialization, bool)",93957343822528,93957343822592],["v8::internal::compiler::JSCallReducer::~JSCallReducer()",93957343822624,93957343822670],["v8::internal::compiler::JSCallReducerAssembler::IfBuilder0::~IfBuilder0()",93957343822688,93957343823328],["void std::__1::__invoke_void_return_wrapper<void, true>::__call<v8::internal::compiler::JSCallReducerAssembler::ThrowIfNotCallable(v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::{lambda()#1}&>(v8::internal::compiler::JSCallReducerAssembler::ThrowIfNotCallable(v8::internal::TNode<v8::internal::Object>, v8::internal::compiler::FrameState)::{lambda()#1}&)",93957343823344,93957343823564],["inet6_opt_finish",139871564412048,139871564412247],["inet6_rth_init",139871564412672,139871564412766],["inet6_rth_segments",139871564412976,139871564413006],["__inet6_scopeid_pton",139871564413056,139871564413242],["yn",139871565295184,139871565295358],["exp",139871565297616,139871565297735],["atanhf",139871565308368,139871565308439],["fmodf",139871565308800,139871565308875],["y0f",139871565309072,139871565309196],["y1f",139871565309264,139871565309388],["ynf",139871565309472,139871565309626],["log10f",139871565309728,139871565309809],["v8::internal::Isolate::InitializeCounters()",93957336648000,93957336648267],["v8::internal::Isolate::AbortConcurrentOptimization(v8::internal::BlockingBehavior)",93957336654736,93957336654760],["v8::internal::Isolate::NeedsDetailedOptimizedCodeLineInfo() const",93957336655312,93957336655448],["v8::internal::Isolate::IsInAnyContext(v8::internal::Object, unsigned int)",93957336656128,93957336656206],["v8::internal::Isolate::fuzzer_rng()",93957336656704,93957336656856],["v8::internal::Isolate::FindCodeObject(unsigned long)",93957336657024,93957336657041],["std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >::push_back(unsigned long const&)",93957336657696,93957336657974],["v8::internal::Isolate::RemoveCallCompletedCallback(void (*)(v8::Isolate*))",93957336658080,93957336658174],["v8::internal::Parser::RewriteTryStatement(v8::internal::Block*, v8::internal::Block*, v8::internal::SourceRange const&, v8::internal::Block*, v8::internal::SourceRange const&, v8::internal::ParserBase<v8::internal::Parser>::CatchInfo const&, int)",93957339328000,93957339329625],["v8::internal::Parser::AddClassStaticBlock(v8::internal::Block*, v8::internal::ParserBase<v8::internal::Parser>::ClassInfo*)",93957339356384,93957339356604],["v8::internal::ZoneList<v8::internal::Expression*>::ZoneList(v8::internal::Vector<v8::internal::Expression* const> const&, v8::internal::Zone*)",93957339361760,93957339362063],["v8::internal::TryFinallyStatementSourceRanges::GetRange(v8::internal::SourceRangeKind)",93957339362288,93957339362363],["v8::internal::ParserBase<v8::internal::Parser>::ParseBindingPattern()",93957339364272,93957339365123],["v8::internal::ExpressionScope<v8::internal::ParserTypes<v8::internal::Parser> >::RecordStrictModeParameterError(v8::internal::Scanner::Location const&, v8::internal::MessageTemplate)",93957339368384,93957339368557],["v8::internal::ParserBase<v8::internal::Parser>::RewriteInvalidReferenceExpression(v8::internal::Expression*, int, int, v8::internal::MessageTemplate, bool)",93957339373472,93957339373867],["v8::internal::ParserBase<v8::internal::Parser>::ParseLogicalExpression()",93957339373936,93957339374457],["v8::internal::ParserBase<v8::internal::Parser>::ParseCoalesceExpression(v8::internal::Expression*)",93957339377120,93957339378150],["v8::internal::ParserBase<v8::internal::Parser>::ParseUnaryOrPrefixExpression()",93957339378528,93957339379632],["v8::internal::ParserBase<v8::internal::Parser>::ParsePostfixContinuation(v8::internal::Expression*, int)",93957339380864,93957339381218],["v8::internal::ParserBase<v8::internal::Parser>::ParsePrimaryExpression()",93957339383888,93957339386438],["v8::internal::ArrowHeadParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::ArrowHeadParsingScope(v8::internal::Parser*, v8::internal::FunctionKind)",93957339386896,93957339387077],["v8::internal::ArrowHeadParsingScope<v8::internal::ParserTypes<v8::internal::Parser> >::ValidateAndCreateScope()",93957339387232,93957339388049],["v8::internal::Parser::NewThisExpression(int)",93957339389040,93957339389207],["v8::internal::ParserBase<v8::internal::Parser>::ParseFunctionExpression()",93957339389424,93957339389800],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::evaluate(v8_crdtp::Dispatchable const&)",93957342304656,93957342306548],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::terminateExecution(v8_crdtp::Dispatchable const&)",93957342314288,93957342314447],["non-virtual thunk to v8_inspector::protocol::Runtime::RemoteObject::~RemoteObject()",93957342316384,93957342316398],["v8_inspector::protocol::Runtime::ObjectPreview::~ObjectPreview()",93957342316608,93957342316933],["v8_inspector::protocol::Runtime::PropertyPreview::~PropertyPreview()",93957342317136,93957342317291],["v8_inspector::protocol::Runtime::EntryPreview::~EntryPreview()",93957342317376,93957342317455],["v8_inspector::protocol::Runtime::PropertyDescriptor::~PropertyDescriptor()",93957342317600,93957342317740],["v8_inspector::protocol::Runtime::InternalPropertyDescriptor::~InternalPropertyDescriptor()",93957342317824,93957342317895],["v8::internal::compiler::GraphAssembler::BitcastTaggedToWord(v8::internal::compiler::Node*)",93957343562352,93957343562557],["v8::internal::compiler::GraphC1Visualizer::PrintCompilation(v8::internal::OptimizedCompilationInfo const*)",93957343586080,93957343586613],["v8::internal::compiler::JSONGraphNodeWriter::PrintNode(v8::internal::compiler::Node*)",93957343635408,93957343638453],["v8::internal::compiler::JSCallReducerAssembler::ForBuilder0::Do(std::__1::function<void (v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)> const&)",93957343646880,93957343647349],["v8::internal::compiler::JSCallNodeBase<811>::ArgumentCount() const",93957343661808,93957343661838],["v8::internal::compiler::JSCallReducer::Reduce(v8::internal::compiler::Node*)",93957343665296,93957343665513],["v8::internal::compiler::JSNodeWrapperBase::context() const",93957343678800,93957343678887],["v8::internal::compiler::JSCallReducer::ReduceFunctionPrototypeHasInstance(v8::internal::compiler::Node*)",93957343684848,93957343686129],["v8::internal::compiler::NodeProperties::GetValueInput(v8::internal::compiler::Node*, int)",93957343689216,93957343689308],["v8::internal::compiler::JSCallReducer::ReduceObjectCreate(v8::internal::compiler::Node*)",93957343690976,93957343692226],["v8::internal::compiler::(anonymous namespace)::IteratingArrayBuiltinHelper::IteratingArrayBuiltinHelper(v8::internal::compiler::Node*, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::JSGraph*, v8::internal::compiler::CompilationDependencies*)",93957343696160,93957343696644],["v8::internal::compiler::JSCallReducer::ReduceArrayFilter(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343698064,93957343698575],["v8::internal::compiler::JSCallReducer::ReduceArrayIncludes(v8::internal::compiler::Node*)",93957343700064,93957343700475],["v8::internal::compiler::JSCallReducer::ReduceCallApiFunction(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343701728,93957343706826],["v8::internal::compiler::JSCallReducer::IsBuiltinOrApiFunction(v8::internal::compiler::JSFunctionRef) const",93957343712016,93957343712678],["v8::internal::compiler::JSCallReducer::ReduceForInsufficientFeedback(v8::internal::compiler::Node*, v8::internal::DeoptimizeReason)",93957343716288,93957343716851],["v8::internal::compiler::JSCallReducer::ReduceArrayPrototypeShift(v8::internal::compiler::Node*)",93957343723152,93957343728461],["v8::internal::compiler::JSCallReducer::ReduceArrayIterator(v8::internal::compiler::Node*, v8::internal::compiler::JSCallReducer::ArrayIteratorKind, v8::internal::IterationKind)",93957343730032,93957343731711],["v8::internal::compiler::JSCallReducer::ReduceArrayIsArray(v8::internal::compiler::Node*)",93957343736176,93957343737330],["v8::internal::compiler::JSCallReducer::ReduceArrayBufferViewAccessor(v8::internal::compiler::Node*, v8::internal::InstanceType, v8::internal::compiler::FieldAccess const&)",93957343737648,93957343738747],["v8::internal::compiler::JSCallReducer::ReduceTypedArrayPrototypeToStringTag(v8::internal::compiler::Node*)",93957343741728,93957343772744],["v8::internal::compiler::JSCallReducer::ReduceNumberIsInteger(v8::internal::compiler::Node*)",93957343772960,93957343773160],["v8::internal::compiler::JSCallReducer::ReduceNumberIsNaN(v8::internal::compiler::Node*)",93957343773376,93957343773576],["v8::internal::compiler::JSCallReducer::ReduceGlobalIsFinite(v8::internal::compiler::Node*)",93957343774944,93957343775485],["v8::internal::compiler::JSCallReducer::ReduceMapPrototypeGet(v8::internal::compiler::Node*)",93957343776032,93957343777412],["v8::internal::compiler::JSCallReducer::ReduceRegExpPrototypeTest(v8::internal::compiler::Node*)",93957343778272,93957343781219],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeIndexOf(v8::internal::compiler::Node*)",93957343781328,93957343782452],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeStringAt(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*)",93957343783296,93957343784058],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeSlice(v8::internal::compiler::Node*)",93957343784432,93957343784794],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeStartsWith(v8::internal::compiler::Node*)",93957343787184,93957343789037],["v8::internal::compiler::JSCallReducer::ReduceStringPrototypeToUpperCaseIntl(v8::internal::compiler::Node*)",93957343789664,93957343790286],["v8::internal::compiler::JSCallReducer::ReduceStringFromCodePoint(v8::internal::compiler::Node*)",93957343790800,93957343791333],["getsourcefilter",139871564410864,139871564411279],["inet6_opt_next",139871564412304,139871564412425],["inet6_rth_space",139871564412640,139871564412664],["inet6_rth_add",139871564412768,139871564412830],["exp10",139871565294320,139871565294439],["pow",139871565295648,139871565295978],["lgammaf32x_r",139871565297168,139871565297391],["acosf",139871565307936,139871565308001],["atan2f",139871565308160,139871565308356],["coshf",139871565308448,139871565308541],["exp10f",139871565308672,139871565308788],["hypotf",139871565308880,139871565309000],["v8::internal::Isolate::Isolate(std::__1::unique_ptr<v8::internal::IsolateAllocator, std::__1::default_delete<v8::internal::IsolateAllocator> >)",93957336640656,93957336642712],["v8::internal::Isolate::Init(v8::internal::SnapshotData*, v8::internal::SnapshotData*, bool)",93957336649360,93957336653437],["v8::internal::Isolate::Exit()",93957336654576,93957336654678],["v8::internal::Isolate::GetCodeTracer()",93957336654896,93957336654961],["v8::internal::Isolate::IncreaseTotalRegexpCodeGenerated(v8::internal::Handle<v8::internal::HeapObject>)",93957336655248,93957336655308],["v8::internal::Isolate::NeedsSourcePositionsForProfiling() const",93957336655456,93957336655584],["v8::internal::Isolate::MaybeInitializeVectorListFromHeap()",93957336655600,93957336656121],["v8::internal::Isolate::UpdateNoElementsProtectorOnSetElement(v8::internal::Handle<v8::internal::JSObject>)",93957336656208,93957336656593],["v8::internal::Parser::ParseExportDefault()",93957339318672,93957339320495],["v8::internal::Parser::DeclareArrowFunctionFormalParameters(v8::internal::ParserFormalParameters*, v8::internal::Expression*, v8::internal::Scanner::Location const&)",93957339343328,93957339343878],["v8::internal::Parser::DeclarePublicClassField(v8::internal::ClassScope*, v8::internal::ClassLiteralProperty*, bool, bool, v8::internal::ParserBase<v8::internal::Parser>::ClassInfo*)",93957339354480,93957339355193],["v8::internal::Parser::UpdateStatistics(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957339358848,93957339359083],["v8::internal::Parser::ExpressionListToExpression(v8::internal::ScopedList<v8::internal::Expression*, void*> const&)",93957339361088,93957339361550],["v8::internal::NaryOperationSourceRanges::~NaryOperationSourceRanges()",93957339362096,93957339362137],["v8::internal::TryCatchStatementSourceRanges::HasRange(v8::internal::SourceRangeKind)",93957339362256,93957339362271],["v8::internal::PreParser::PreParser(v8::internal::Zone*, v8::internal::Scanner*, unsigned long, v8::internal::AstValueFactory*, v8::internal::PendingCompilationErrorHandler*, v8::internal::RuntimeCallStats*, v8::internal::Logger*, v8::internal::UnoptimizedCompileFlags, bool)",93957339362400,93957339363075],["std::__1::vector<void*, std::__1::allocator<void*> >::resize(unsigned long)",93957339364224,93957339364268],["v8::internal::ParserBase<v8::internal::Parser>::ClassifyParameter(v8::internal::AstRawString const*, int, int)",93957339365136,93957339365371],["v8::internal::ParserBase<v8::internal::Parser>::ParseObjectLiteral()",93957339367152,93957339368383],["v8::internal::ParserBase<v8::internal::Parser>::ParsePossibleDestructuringSubPattern(v8::internal::AccumulationScope<v8::internal::ParserTypes<v8::internal::Parser> >*)",93957339368560,93957339369664],["v8::internal::ParserBase<v8::internal::Parser>::ParseYieldExpression()",93957339372080,93957339373464],["v8::internal::ContinuationSourceRanges::GetRange(v8::internal::SourceRangeKind)",93957339373872,93957339373894],["v8::internal::ContinuationSourceRanges::RemoveContinuationRange()",93957339373920,93957339373933],["v8::internal::ParserBase<v8::internal::Parser>::ParseConditionalContinuation(v8::internal::Expression*, int)",93957339374464,93957339375717],["v8_inspector::protocol::Runtime::Frontend::inspectRequested(std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >, std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> >)",93957342299888,93957342300103],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::globalLexicalScopeNames(v8_crdtp::Dispatchable const&)",93957342308896,93957342309766],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::setCustomObjectFormatterEnabled(v8_crdtp::Dispatchable const&)",93957342313232,93957342313751],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::removeBinding(v8_crdtp::Dispatchable const&)",93957342315280,93957342315825],["v8_inspector::protocol::Runtime::RemoteObject::~RemoteObject()",93957342316352,93957342316380],["non-virtual thunk to v8_inspector::protocol::Runtime::RemoteObject::~RemoteObject()",93957342316400,93957342316435],["v8_inspector::protocol::Runtime::CustomPreview::~CustomPreview()",93957342316528,93957342316599],["v8_inspector::protocol::Runtime::ObjectPreview::~ObjectPreview()",93957342316944,93957342316972],["v8::internal::compiler::JSGraphAssembler::NumberMax(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343555696,93957343555909],["v8::internal::compiler::GraphAssembler::Reset(v8::internal::compiler::BasicBlock*)",93957343565920,93957343566003],["v8::internal::compiler::JsonPrintFunctionSource(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, std::__1::unique_ptr<char [], std::__1::default_delete<char []> >, v8::internal::Handle<v8::internal::Script>, v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, bool)",93957343581136,93957343582516],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::AsC1V const&)",93957343614672,93957343614842],["std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream()",93957343634864,93957343634947],["v8::internal::compiler::Graph::RemoveDecorator(v8::internal::compiler::GraphDecorator*)",93957343639616,93957343639703],["v8::internal::compiler::JSCallReducerAssembler::ReduceStringPrototypeSubstring()",93957343642640,93957343643413],["v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeFilter(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&)",93957343651920,93957343653487],["v8::internal::compiler::JSCallReducerAssembler::CatchScope::MergeExceptionalPaths(v8::internal::TNode<v8::internal::Object>*, v8::internal::compiler::Effect*, v8::internal::compiler::Control*)",93957343660464,93957343661362],["v8::internal::compiler::JSCallReducer::ReduceMathBinary(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*)",93957343662352,93957343662771],["v8::internal::compiler::JSCallReducer::ReduceMathClz32(v8::internal::compiler::Node*)",93957343663872,93957343664478],["v8::internal::compiler::JSCallReducer::ReduceJSCall(v8::internal::compiler::Node*)",93957343670400,93957343674167],["v8::internal::compiler::JSCallReducer::ReduceObjectConstructor(v8::internal::compiler::Node*)",93957343674912,93957343675236],["v8::internal::compiler::JSCallReducer::ReduceFunctionPrototypeBind(v8::internal::compiler::Node*)",93957343679008,93957343682609],["v8::internal::compiler::JSCallReducer::ReduceFunctionPrototypeCall(v8::internal::compiler::Node*)",93957343682848,93957343684730],["v8::internal::compiler::JSCallReducer::ReduceObjectGetPrototypeOf(v8::internal::compiler::Node*)",93957343687744,93957343687873],["v8::internal::compiler::JSCallReducer::ReduceObjectPrototypeHasOwnProperty(v8::internal::compiler::Node*)",93957343688256,93957343689203],["v8::internal::compiler::JSCallReducer::ReduceObjectPrototypeIsPrototypeOf(v8::internal::compiler::Node*)",93957343689312,93957343689774],["v8::internal::compiler::JSCallReducer::ReduceReflectConstruct(v8::internal::compiler::Node*)",93957343690080,93957343690970],["v8::internal::compiler::JSCallReducer::ReduceReflectGet(v8::internal::compiler::Node*)",93957343692240,93957343693943],["v8::internal::compiler::JSCallReducer::ReduceArrayForEach(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343695712,93957343696147],["v8::internal::compiler::JSCallReducer::ReduceArrayReduce(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343696656,93957343697094],["v8::internal::compiler::JSCallReducer::ReduceArrayMap(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343697552,93957343698063],["v8::internal::compiler::JSCallReducer::ReduceArrayFind(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343698576,93957343699057],["v8::internal::compiler::JSCallReducer::ReduceArrayEvery(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343699568,93957343700049],["v8::internal::compiler::JSCallReducer::ReduceArrayIndexOf(v8::internal::compiler::Node*)",93957343700480,93957343700894],["v8::internal::compiler::JSCallReducer::ReduceCallWasmFunction(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343701392,93957343701722],["v8::internal::compiler::FastApiCallReducerAssembler::FastApiCallReducerAssembler(v8::internal::compiler::JSCallReducer*, v8::internal::compiler::Node*, v8::internal::compiler::FunctionTemplateInfoRef, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef, v8::internal::compiler::Node*, int, v8::internal::compiler::Node*)",93957343706832,93957343707136],["v8::internal::compiler::JSCallReducer::ReduceCallOrConstructWithArrayLikeOrSpread(v8::internal::compiler::Node*, int, v8::internal::compiler::CallFrequency const&, v8::internal::compiler::FeedbackSource const&, v8::internal::SpeculationMode, v8::internal::compiler::CallFeedbackRelation)",93957343708768,93957343712007],["v8::internal::compiler::JSCallReducer::ReduceJSCall(v8::internal::compiler::Node*, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343712688,93957343715747],["v8::internal::compiler::(anonymous namespace)::ShouldUseCallICFeedback(v8::internal::compiler::Node*)",93957343715824,93957343716284],["v8::internal::compiler::JSCallReducer::ReduceArrayPrototypePush(v8::internal::compiler::Node*)",93957343716864,93957343720257],["inet6_option_next",139871564409728,139871564409894],["inet6_opt_init",139871564411632,139871564411686],["inet6_opt_set_val",139871564412256,139871564412294],["inet6_opt_find",139871564412432,139871564412586],["gammal",139871565292672,139871565292942],["y0",139871565294736,139871565294870],["log10",139871565295456,139871565295550],["scalb",139871565296272,139871565296478],["tgamma",139871565296640,139871565297159],["lgamma",139871565297392,139871565297615],["gamma",139871565297744,139871565298052],["acoshf",139871565308016,139871565308065],["v8::internal::Isolate::RegisterManagedPtrDestructor(v8::internal::ManagedPtrDestructor*)",93957336638208,93957336638295],["v8::internal::Isolate::DumpAndResetStats()",93957336643312,93957336645435],["v8::internal::Isolate::RequiresCodeRange() const",93957336649312,93957336649328],["v8::internal::Isolate::main_thread_local_heap()",93957336653456,93957336653473],["v8::internal::Isolate::Enter()",93957336654416,93957336654572],["v8::internal::Isolate::NewPersistentHandles()",93957336654688,93957336654730],["v8::internal::Isolate::GetTurboStatistics()",93957336654768,93957336654895],["v8::internal::CodeTracer::CodeTracer(int)",93957336654976,93957336655193],["v8::internal::ParserBase<v8::internal::Parser>::Expect(v8::internal::Token::Value)",93957339308672,93957339308720],["v8::internal::Parser::InitializeVariables(v8::internal::ScopedList<v8::internal::Statement*, void*>*, v8::internal::VariableKind, v8::internal::ParserBase<v8::internal::Parser>::DeclarationParsingResult::Declaration const*)",93957339323520,93957339323753],["v8::internal::Parser::DesugarBindingInForEachStatement(v8::internal::ParserBase<v8::internal::Parser>::ForInfo*, v8::internal::Block**, v8::internal::Expression**)",93957339333984,93957339334782],["v8::internal::FuncNameInferrer::AddFunction(v8::internal::FunctionLiteral*)",93957339347296,93957339347577],["v8::internal::Parser::CreateSyntheticContextVariable(v8::internal::AstRawString const*)",93957339353808,93957339354239],["v8::internal::Parser::DeclarePrivateClassMember(v8::internal::ClassScope*, v8::internal::AstRawString const*, v8::internal::ClassLiteralProperty*, v8::internal::ClassLiteralProperty::Kind, bool, v8::internal::ParserBase<v8::internal::Parser>::ClassInfo*)",93957339355376,93957339356158],["v8::internal::Parser::RewriteClassLiteral(v8::internal::ClassScope*, v8::internal::AstRawString const*, v8::internal::ParserBase<v8::internal::Parser>::ClassInfo*, int, int)",93957339357280,93957339357954],["v8::internal::Parser::OpenTemplateLiteral(int)",93957339359600,93957339359875],["v8::internal::ScopedList<v8::internal::Expression*, void*>::AddAll(v8::internal::Vector<v8::internal::Expression* const> const&)",93957339360800,93957339361073],["v8::internal::Parser::SetFunctionNameFromPropertyName(v8::internal::LiteralProperty*, v8::internal::AstRawString const*, v8::internal::AstRawString const*)",93957339361552,93957339361748],["v8::internal::NaryOperationSourceRanges::~NaryOperationSourceRanges()",93957339362064,93957339362093],["v8::internal::FunctionLiteralSourceRanges::GetRange(v8::internal::SourceRangeKind)",93957339362144,93957339362160],["v8::internal::TryCatchStatementSourceRanges::GetRange(v8::internal::SourceRangeKind)",93957339362176,93957339362251],["v8::internal::TryCatchStatementSourceRanges::RemoveContinuationRange()",93957339362272,93957339362282],["v8::internal::TryFinallyStatementSourceRanges::HasRange(v8::internal::SourceRangeKind)",93957339362368,93957339362386],["v8::internal::ExpressionScope<v8::internal::ParserTypes<v8::internal::Parser> >::NewVariable(v8::internal::AstRawString const*, int)",93957339363088,93957339363736],["non-virtual thunk to v8_inspector::protocol::Runtime::StackTraceId::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342298432,93957342298446],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::compileScript(v8_crdtp::Dispatchable const&)",93957342302976,93957342304165],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::getHeapUsage(v8_crdtp::Dispatchable const&)",93957342306896,93957342307233],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::releaseObject(v8_crdtp::Dispatchable const&)",93957342310720,93957342311262],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::runScript(v8_crdtp::Dispatchable const&)",93957342311968,93957342313219],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::setMaxCallStackSizeToCapture(v8_crdtp::Dispatchable const&)",93957342313760,93957342314278],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::addBinding(v8_crdtp::Dispatchable const&)",93957342314448,93957342315276],["v8_inspector::protocol::Runtime::Dispatcher::wire(v8_crdtp::UberDispatcher*, v8_inspector::protocol::Runtime::Backend*)",93957342315840,93957342316046],["v8::internal::compiler::GraphAssembler::WordAnd(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343549296,93957343549512],["v8::internal::compiler::GraphAssembler::UnreachableWithoutConnectToEnd()",93957343559120,93957343559318],["v8::internal::compiler::GraphAssembler::TailCall(v8::internal::compiler::CallDescriptor const*, int, v8::internal::compiler::Node**)",93957343563872,93957343564134],["v8::internal::compiler::GraphReducer::ReduceGraph()",93957343569376,93957343569394],["virtual thunk to v8::internal::compiler::TurboCfgFile::~TurboCfgFile()",93957343580432,93957343580569],["v8::internal::compiler::GraphC1Visualizer::PrintStringProperty(char const*, char const*)",93957343585344,93957343585523],["v8::internal::compiler::GraphC1Visualizer::PrintLiveRanges(char const*, v8::internal::compiler::TopTierRegisterAllocationData const*)",93957343612848,93957343613446],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::InstructionOperandAsJSON const&)",93957343619936,93957343622387],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::InstructionSequenceAsJSON const&)",93957343634560,93957343634778],["virtual thunk to std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream()",93957343635072,93957343635182],["v8::internal::compiler::(anonymous namespace)::PrintScheduledNode(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, v8::internal::compiler::Node*)",93957343638912,93957343639569],["v8::internal::compiler::Graph::CloneNode(v8::internal::compiler::Node const*)",93957343639824,93957343639923],["v8::internal::compiler::JSCallReducerAssembler::ReduceMathUnary(v8::internal::compiler::Operator const*)",93957343641968,93957343642198],["v8::internal::compiler::JSCallReducerAssembler::ReduceStringPrototypeSlice()",93957343643936,93957343645446],["v8::internal::compiler::JSCallReducerAssembler::ForBuilder1::Value()",93957343649584,93957343650101],["v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeEverySome(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&, v8::internal::compiler::ArrayEverySomeVariant)",93957343655104,93957343656683],["v8::internal::compiler::JSCallReducerAssembler::TryCatchBuilder0::Catch(std::__1::function<void (v8::internal::TNode<v8::internal::Object>)> const&)",93957343660048,93957343660459],["v8::internal::compiler::JSCallReducer::ReduceMathUnary(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*)",93957343661376,93957343661795],["v8::internal::compiler::JSCallReducerAssembler::JSCallReducerAssembler(v8::internal::compiler::JSCallReducer*, v8::internal::compiler::Node*)",93957343661840,93957343662342],["v8::internal::compiler::JSCallReducer::ReduceMathImul(v8::internal::compiler::Node*)",93957343662784,93957343663603],["v8::internal::compiler::JSNodeWrapperBase::control() const",93957343663744,93957343663872],["v8::internal::compiler::JSCallReducer::ReduceMathMinMax(v8::internal::compiler::Node*, v8::internal::compiler::Operator const*, v8::internal::compiler::Node*)",93957343664480,93957343665286],["v8::internal::compiler::JSCallReducer::ReduceJSConstruct(v8::internal::compiler::Node*)",93957343665520,93957343670387],["v8::internal::compiler::JSCallReducer::Finalize()",93957343674176,93957343674489],["v8::internal::compiler::JSCallReducer::ReduceBooleanConstructor(v8::internal::compiler::Node*)",93957343674704,93957343674901],["v8::internal::compiler::JSCallReducer::ReduceFunctionPrototypeApply(v8::internal::compiler::Node*)",93957343675248,93957343678788],["v8::internal::compiler::JSNodeWrapperBase::frame_state() const",93957343678896,93957343678993],["std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957343682624,93957343682733],["v8::internal::compiler::JSCallReducer::native_context() const",93957343682800,93957343682845],["v8::internal::compiler::HeapObjectMatcherImpl<(v8::internal::compiler::IrOpcode::Value)30>::Ref(v8::internal::compiler::JSHeapBroker*) const",93957343684736,93957343684841],["v8::internal::compiler::JSCallReducer::ReduceObjectGetPrototype(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343686144,93957343687729],["v8::internal::compiler::JSCallReducer::ReduceObjectIs(v8::internal::compiler::Node*)",93957343687888,93957343688174],["inet6_option_space",139871564409472,139871564409482],["getipv4sourcefilter",139871564410096,139871564410413],["setsourcefilter",139871564411280,139871564411626],["inet6_opt_append",139871564411696,139871564412043],["dreml",139871565290640,139871565290770],["atan2",139871565293792,139871565293990],["hypot",139871565294528,139871565294654],["y1",139871565294960,139871565295094],["log2",139871565295360,139871565295454],["log",139871565295552,139871565295646],["drem",139871565295984,139871565296074],["sinh",139871565296480,139871565296584],["v8::internal::Isolate::PopPromise()",93957336635312,93957336635385],["v8::internal::Isolate::Delete(v8::internal::Isolate*)",93957336638608,93957336638779],["v8::internal::Isolate::ClearSerializerData()",93957336643136,93957336643195],["v8::internal::Isolate::~Isolate()",93957336645840,93957336647921],["v8::internal::Isolate::CreateAndSetEmbeddedBlob()",93957336648272,93957336649297],["v8::internal::Isolate::InitWithoutSnapshot()",93957336649328,93957336649347],["v8::internal::Isolate::InitWithSnapshot(v8::internal::SnapshotData*, v8::internal::SnapshotData*, bool)",93957336653440,93957336653453],["v8::internal::OptimizingCompileDispatcher::OptimizingCompileDispatcher(v8::internal::Isolate*)",93957336653488,93957336653704],["v8::internal::Parser::DoParseProgram(v8::internal::Isolate*, v8::internal::ParseInfo*)",93957339291248,93957339294630],["v8::internal::ParserBase<v8::internal::Parser>::ReportUnexpectedToken(v8::internal::Token::Value)",93957339315840,93957339315871],["v8::internal::Parser::ParseExportStar()",93957339321712,93957339322579],["v8::internal::Parser::RewriteReturn(v8::internal::Expression*, int)",93957339325568,93957339326165],["v8::internal::Parser::ParseAndRewriteAsyncGeneratorFunctionBody(int, v8::internal::FunctionKind, v8::internal::ScopedList<v8::internal::Statement*, void*>*)",93957339330368,93957339333231],["v8::internal::Parser::DesugarLexicalBindingsInForStatement(v8::internal::ForStatement*, v8::internal::Statement*, v8::internal::Expression*, v8::internal::Statement*, v8::internal::Statement*, v8::internal::Scope*, v8::internal::ParserBase<v8::internal::Parser>::ForInfo const&)",93957339335488,93957339342898],["v8::internal::Parser::ParseFunction(v8::internal::ScopedList<v8::internal::Statement*, void*>*, v8::internal::AstRawString const*, int, v8::internal::FunctionKind, v8::internal::FunctionSyntaxKind, v8::internal::DeclarationScope*, int*, int*, bool*, int*, int*, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339345456,93957339347120],["v8::internal::Parser::BuildParameterInitializationBlock(v8::internal::ParserFormalParameters const&)",93957339347904,93957339348794],["v8::internal::ParserBase<v8::internal::Parser>::ParseFunctionBody(v8::internal::ScopedList<v8::internal::Statement*, void*>*, v8::internal::AstRawString const*, int, v8::internal::ParserFormalParameters const&, v8::internal::FunctionKind, v8::internal::FunctionSyntaxKind, v8::internal::ParserBase<v8::internal::Parser>::FunctionBodyType)",93957339350400,93957339353803],["v8::internal::Parser::CreatePrivateNameVariable(v8::internal::ClassScope*, v8::internal::VariableMode, v8::internal::IsStaticFlag, v8::internal::AstRawString const*)",93957339354240,93957339354465],["v8::internal::ParserBase<v8::internal::Parser>::ClassFieldVariableName(v8::internal::AstValueFactory*, int)",93957339355200,93957339355363],["v8::internal::Parser::DeclarePublicClassMethod(v8::internal::AstRawString const*, v8::internal::ClassLiteralProperty*, bool, v8::internal::ParserBase<v8::internal::Parser>::ClassInfo*)",93957339356160,93957339356373],["v8::internal::Parser::CreateInitializerFunction(char const*, v8::internal::DeclarationScope*, v8::internal::Statement*)",93957339356608,93957339357274],["v8::internal::Parser::InsertShadowingVarBindingInitializers(v8::internal::Block*)",93957339357968,93957339358835],["v8::internal::Parser::ParseOnBackground(v8::internal::ParseInfo*, int, int, int)",93957339359088,93957339359591],["v8::internal::Parser::TemplateLiteral::AddTemplateSpan(v8::internal::AstRawString const*, v8::internal::AstRawString const*, int, v8::internal::Zone*)",93957339359888,93957339360238],["v8_inspector::protocol::Runtime::CallArgument::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342296608,93957342296793],["v8_inspector::protocol::Runtime::Frontend::exceptionThrown(double, std::__1::unique_ptr<v8_inspector::protocol::Runtime::ExceptionDetails, std::__1::default_delete<v8_inspector::protocol::Runtime::ExceptionDetails> >)",93957342299360,93957342299551],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::awaitPromise(v8_crdtp::Dispatchable const&)",93957342300528,93957342301281],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::discardConsoleEntries(v8_crdtp::Dispatchable const&)",93957342304336,93957342304488],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::getIsolateId(v8_crdtp::Dispatchable const&)",93957342306560,93957342306891],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::getProperties(v8_crdtp::Dispatchable const&)",93957342307248,93957342308890],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::queryObjects(v8_crdtp::Dispatchable const&)",93957342309776,93957342310714],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::releaseObjectGroup(v8_crdtp::Dispatchable const&)",93957342311264,93957342311806],["v8::internal::compiler::GraphAssembler::Float64InsertHighWord32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343542560,93957343542763],["v8::internal::compiler::GraphAssembler::IntPtrEqual(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343552896,93957343552906],["v8::internal::compiler::JSGraphAssembler::CheckIf(v8::internal::compiler::Node*, v8::internal::DeoptimizeReason)",93957343557472,93957343557744],["v8::internal::compiler::GraphAssembler::StoreUnaligned(v8::internal::MachineRepresentation, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343560320,93957343560604],["v8::internal::compiler::GraphAssembler::DeoptimizeIfNot(v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::IsSafetyCheck)",93957343563216,93957343563255],["v8::internal::compiler::GraphAssembler::NewBasicBlock(bool)",93957343564864,93957343564920],["v8::internal::compiler::GraphReducer::~GraphReducer()",93957343566400,93957343566454],["v8::internal::compiler::GraphReducer::Replace(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343571920,93957343571935],["v8::internal::compiler::TurboJsonFile::TurboJsonFile(v8::internal::OptimizedCompilationInfo*, unsigned int)",93957343580016,93957343580307],["virtual thunk to v8::internal::compiler::TurboCfgFile::~TurboCfgFile()",93957343580704,93957343580849],["v8::internal::compiler::JsonPrintAllSourceWithPositions(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::OptimizedCompilationInfo*, v8::internal::Isolate*)",93957343583328,93957343584722],["v8::internal::compiler::GraphC1Visualizer::PrintBlockProperty(char const*, int)",93957343585728,93957343585893],["v8::internal::compiler::GraphC1Visualizer::PrintInputs(v8::internal::compiler::Node*)",93957343586768,93957343587524],["std::__1::basic_ostream<char, std::__1::char_traits<char> >& v8::internal::operator<< <v8::internal::Register, char const*>(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::Register)",93957343614448,93957343614512],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::AsRPO const&)",93957343615024,93957343619286],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::RegisterAllocationDataAsJSON const&)",93957343622736,93957343624991],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::InstructionBlockAsJSON const&)",93957343631680,93957343634549],["std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream()",93957343634784,93957343634862],["virtual thunk to std::__1::basic_ofstream<char, std::__1::char_traits<char> >::~basic_ofstream()",93957343634960,93957343635062],["v8::internal::compiler::JSONEscaped::PipeCharacter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char)",93957343635184,93957343635402],["v8::internal::compiler::JSONGraphEdgeWriter::PrintEdge(v8::internal::compiler::Node*, int, v8::internal::compiler::Node*)",93957343638464,93957343638910],["v8::internal::compiler::Graph::Graph(v8::internal::Zone*)",93957343639584,93957343639612],["v8::internal::compiler::Graph::NewNode(v8::internal::compiler::Operator const*, int, v8::internal::compiler::Node* const*, bool)",93957343639712,93957343639811],["v8::internal::compiler::JSCallReducerAssembler::MayThrow(std::__1::function<v8::internal::TNode<v8::internal::Object> ()> const&)",93957343639936,93957343640742],["v8::internal::compiler::JSCallReducerAssembler::AllocateEmptyJSArray(v8::internal::ElementsKind, v8::internal::compiler::NativeContextRef const&)",93957343640992,93957343641967],["v8::internal::compiler::JSCallReducerAssembler::ReduceMathBinary(v8::internal::compiler::Operator const*)",93957343642208,93957343642640],["v8::internal::compiler::JSCallReducerAssembler::IfBuilder1<v8::internal::String>::Value()",93957343643424,93957343643933],["v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeForEach(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343645456,93957343646872],["v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeReduce(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::ArrayReduceDirection, v8::internal::compiler::SharedFunctionInfoRef const&)",93957343647360,93957343649573],["v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeMap(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&)",93957343650112,93957343651914],["v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeFind(v8::internal::compiler::MapInference*, bool, v8::internal::ElementsKind, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::NativeContextRef const&, v8::internal::compiler::ArrayFindVariant)",93957343653488,93957343655099],["v8::internal::compiler::IteratingArrayBuiltinReducerAssembler::ReduceArrayPrototypeIndexOfIncludes(v8::internal::ElementsKind, v8::internal::compiler::ArrayIndexOfIncludesVariant)",93957343656688,93957343657873],["if_nameindex",139871564403776,139871564404509],["inet6_option_append",139871564409536,139871564409710],["inet6_option_find",139871564409904,139871564410084],["setipv4sourcefilter",139871564410416,139871564410726],["j1f64x",139871565288912,139871565289007],["tgammaf64x",139871565291520,139871565292101],["acosh",139871565293648,139871565293698],["cosh",139871565294080,139871565294184],["fmod",139871565294448,139871565294524],["j0",139871565294656,139871565294721],["j1",139871565294880,139871565294945],["jn",139871565295104,139871565295181],["v8::internal::Isolate::RestorePendingMessageFromTryCatch(v8::TryCatch*)",93957336632272,93957336632289],["v8::internal::Isolate::get_capture_stack_trace_for_uncaught_exceptions() const",93957336637792,93957336637804],["v8::internal::Isolate::AddSharedWasmMemory(v8::internal::Handle<v8::internal::WasmMemoryObject>)",93957336638416,93957336638544],["v8::internal::Isolate::SetUpFromReadOnlyArtifacts(std::__1::shared_ptr<v8::internal::ReadOnlyArtifacts>, v8::internal::ReadOnlyHeap*)",93957336640528,93957336640612],["v8::internal::Isolate::InitializeDefaultEmbeddedBlob()",93957336642720,93957336643136],["v8::internal::Isolate::LogObjectRelocation()",93957336643200,93957336643303],["v8::internal::Isolate::TearDownEmbeddedBlob()",93957336645440,93957336645840],["v8::internal::Isolate::SetTerminationOnExternalTryCatch()",93957336647936,93957336647987],["v8::internal::Parser::CollapseNaryExpression(v8::internal::Expression**, v8::internal::Expression*, v8::internal::Token::Value, int, v8::internal::SourceRange const&)",93957339282848,93957339284764],["v8::internal::Parser::PrepareWrappedArguments(v8::internal::Isolate*, v8::internal::ParseInfo*, v8::internal::Zone*)",93957339297344,93957339297904],["v8::internal::ParserBase<v8::internal::Parser>::ParseStatementListItem()",93957339314320,93957339314754],["v8::internal::Parser::ReportMessageAt(v8::internal::Scanner::Location, v8::internal::MessageTemplate, v8::internal::AstRawString const*)",93957339317920,93957339318023],["v8::internal::Parser::IgnoreCompletion(v8::internal::Statement*)",93957339321200,93957339321503],["v8::internal::Parser::Declare(v8::internal::Declaration*, v8::internal::AstRawString const*, v8::internal::VariableKind, v8::internal::VariableMode, v8::internal::InitializationFlag, v8::internal::Scope*, bool*, int, int)",93957339322912,93957339323176],["v8::internal::Parser::DeclareClass(v8::internal::AstRawString const*, v8::internal::Expression*, v8::internal::ZoneList<v8::internal::AstRawString const*>*, int, int)",93957339324304,93957339325081],["v8::internal::Parser::RewriteCatchPattern(v8::internal::ParserBase<v8::internal::Parser>::CatchInfo*)",93957339327392,93957339327800],["v8::internal::Parser::ParseAndRewriteGeneratorFunctionBody(int, v8::internal::FunctionKind, v8::internal::ScopedList<v8::internal::Statement*, void*>*)",93957339329632,93957339330354],["v8::internal::Parser::RewriteForVarInLegacy(v8::internal::ParserBase<v8::internal::Parser>::ForInfo const&)",93957339333232,93957339333972],["v8::internal::Parser::CreateForEachStatementTDZ(v8::internal::Block*, v8::internal::ParserBase<v8::internal::Parser>::ForInfo const&)",93957339334784,93957339335477],["v8::internal::Parser::AddArrowFunctionFormalParameters(v8::internal::ParserFormalParameters*, v8::internal::Expression*, int)",93957339342912,93957339343318],["v8::internal::Parser::SkipFunction(v8::internal::AstRawString const*, v8::internal::FunctionKind, v8::internal::FunctionSyntaxKind, v8::internal::DeclarationScope*, int*, int*, v8::internal::ProducedPreparseData**)",93957339343888,93957339345442],["v8::internal::ParserBase<v8::internal::Parser>::CheckFunctionName(v8::internal::LanguageMode, v8::internal::AstRawString const*, v8::internal::FunctionNameValidity, v8::internal::Scanner::Location const&)",93957339347120,93957339347295],["v8::internal::Parser::reusable_preparser()",93957339347584,93957339347898],["v8::internal::Parser::BuildRejectPromiseOnException(v8::internal::Block*, v8::internal::REPLMode)",93957339348800,93957339350085],["v8_inspector::protocol::Runtime::ObjectPreview::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342294256,93957342294691],["v8_inspector::protocol::Runtime::StackTrace::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342297728,93957342298023],["v8_inspector::protocol::Runtime::Frontend::consoleAPICalled(v8_inspector::String16 const&, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::RemoteObject, std::__1::default_delete<v8_inspector::protocol::Runtime::RemoteObject> > > > > >, int, double, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTrace>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)",93957342298672,93957342299174],["v8_inspector::protocol::Runtime::Frontend::executionContextDestroyed(int)",93957342299696,93957342299823],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned char>)",93957342300112,93957342300516],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::callFunctionOn(v8_crdtp::Dispatchable const&)",93957342301296,93957342302969],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::disable(v8_crdtp::Dispatchable const&)",93957342304176,93957342304328],["v8_inspector::protocol::Runtime::DomainDispatcherImpl::enable(v8_crdtp::Dispatchable const&)",93957342304496,93957342304648],["v8::internal::compiler::JSGraphAssembler::TrueConstant()",93957343536368,93957343536439],["v8::internal::compiler::GraphAssembler::Uint32LessThan(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343545952,93957343546155],["v8::internal::compiler::GraphAssembler::Int32Mod(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343551104,93957343551315],["v8::internal::compiler::JSGraphAssembler::Allocate(v8::internal::AllocationType, v8::internal::compiler::Node*)",93957343553856,93957343554080],["v8::internal::compiler::JSGraphAssembler::NumberLessThanOrEqual(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343556592,93957343556805],["v8::internal::compiler::JSGraphAssembler::MaybeGrowFastElements(v8::internal::ElementsKind, v8::internal::compiler::FeedbackSource const&, v8::internal::TNode<v8::internal::JSArray>, v8::internal::TNode<v8::internal::FixedArrayBase>, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343558368,93957343558624],["v8::internal::compiler::GraphAssembler::StackSlot(int, int)",93957343559696,93957343559872],["v8::internal::compiler::GraphAssembler::Retain(v8::internal::compiler::Node*)",93957343561328,93957343561532],["v8::internal::compiler::GraphAssembler::DeoptimizeIf(v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::IsSafetyCheck)",93957343562768,93957343562990],["v8::internal::compiler::GraphAssembler::Call(v8::internal::compiler::CallDescriptor const*, int, v8::internal::compiler::Node**)",93957343563520,93957343563703],["v8::internal::compiler::GraphAssembler::RecordBranchInBlockUpdater(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957343564208,93957343564780],["v8::internal::compiler::GraphAssembler::GotoIfBasicBlock(v8::internal::compiler::BasicBlock*, v8::internal::compiler::Node*, v8::internal::compiler::IrOpcode::Value)",93957343565056,93957343565566],["v8::internal::compiler::GraphReducer::GraphReducer(v8::internal::Zone*, v8::internal::compiler::Graph*, v8::internal::TickCounter*, v8::internal::compiler::JSHeapBroker*, v8::internal::compiler::Node*, v8::internal::compiler::ObserveNodeManager*)",93957343566096,93957343566335],["v8::internal::compiler::GraphReducer::ReduceNode(v8::internal::compiler::Node*)",93957343567136,93957343567764],["v8::internal::compiler::GraphReducer::Revisit(v8::internal::compiler::Node*)",93957343570672,93957343570822],["v8::internal::compiler::GraphTrimmer::GraphTrimmer(v8::internal::Zone*, v8::internal::compiler::Graph*)",93957343572832,93957343573277],["v8::internal::compiler::GetVisualizerLogFileName(v8::internal::OptimizedCompilationInfo*, char const*, char const*, char const*)",93957343577152,93957343580012],["v8::internal::compiler::TurboCfgFile::~TurboCfgFile()",93957343580320,93957343580426],["v8::internal::compiler::TurboCfgFile::~TurboCfgFile()",93957343580576,93957343580690],["v8::internal::compiler::TurboCfgFile::TurboCfgFile(v8::internal::Isolate*)",93957343580864,93957343581125],["v8::internal::compiler::SourceIdAssigner::GetIdFor(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957343582528,93957343583316],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::GraphAsJSON const&)",93957343584736,93957343585335],["v8::internal::compiler::GraphC1Visualizer::PrintLongProperty(char const*, long)",93957343585536,93957343585728],["v8::internal::compiler::GraphC1Visualizer::PrintIntProperty(char const*, int)",93957343585904,93957343586069],["v8::internal::compiler::GraphC1Visualizer::PrintNode(v8::internal::compiler::Node*)",93957343586624,93957343586759],["v8::internal::compiler::GraphC1Visualizer::PrintSchedule(char const*, v8::internal::compiler::Schedule const*, v8::internal::compiler::SourcePositionTable const*, v8::internal::compiler::InstructionSequence const*)",93957343587536,93957343612844],["v8::internal::compiler::GraphC1Visualizer::PrintLiveRange(v8::internal::compiler::LiveRange const*, char const*, int)",93957343613456,93957343614446],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::AsC1VCompilation const&)",93957343614512,93957343614670],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::AsC1VRegisterAllocationData const&)",93957343614848,93957343615019],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::LiveRangeAsJSON const&)",93957343619296,93957343619925],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::TopLevelLiveRangeAsJSON const&)",93957343622400,93957343622723],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::AsScheduledGraph const&)",93957343624992,93957343628128],["getaliasbyname_r",139871564398992,139871564399825],["getifaddrs",139871564409088,139871564409111],["inet6_option_init",139871564409488,139871564409534],["inet6_option_alloc",139871564409712,139871564409717],["atanhf64x",139871565287792,139871565287899],["log2f64x",139871565289616,139871565289781],["sinhf64x",139871565291328,139871565291436],["lgammaf64x",139871565292320,139871565292519],["acos",139871565293568,139871565293634],["asin",139871565293712,139871565293778],["atanh",139871565294000,139871565294070],["exp2",139871565294192,139871565294311],["std::__1::unique_ptr<char [], std::__1::default_delete<char []> >::~unique_ptr()",93957336627536,93957336627566],["v8::internal::Isolate::ComputeLocationFromStackTrace(v8::internal::MessageLocation*, v8::internal::Handle<v8::internal::Object>)",93957336633376,93957336633907],["v8::internal::Isolate::GetPromiseOnStackOnThrow()",93957336637120,93957336637748],["v8::internal::Isolate::AreWasmExceptionsEnabled(v8::internal::Handle<v8::internal::Context>)",93957336637856,93957336637889],["v8::internal::Isolate::UnregisterManagedPtrDestructor(v8::internal::ManagedPtrDestructor*)",93957336638304,93957336638408],["v8::internal::Isolate::New()",93957336638544,93957336638594],["v8::internal::Isolate::Deinit()",93957336638784,93957336640524],["v8::internal::Isolate::page_allocator()",93957336640624,93957336640641],["v8::internal::ParseInfo::~ParseInfo()",93957339276128,93957339276264],["void v8::internal::ParserBase<v8::internal::Parser>::ReportMessage<v8::internal::AstRawString const*>(v8::internal::MessageTemplate, v8::internal::AstRawString const*)",93957339287680,93957339287797],["v8::internal::AstNodeFactory::NewBlock(bool, v8::internal::ScopedList<v8::internal::Statement*, void*> const&)",93957339295344,93957339295538],["v8::internal::Parser::ParseFunction(v8::internal::Isolate*, v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957339300752,93957339302912],["v8::internal::Parser::ParseExportDeclaration()",93957339311312,93957339312804],["v8::internal::Parser::ParseExportSpecifierName()",93957339315360,93957339315522],["v8::internal::Parser::ParseNamedImports(int)",93957339315984,93957339317205],["v8::internal::ParserBase<v8::internal::Parser>::ParseNonRestrictedIdentifier()",93957339318208,93957339318455],["v8::internal::ParserBase<v8::internal::Parser>::ParseClassDeclaration(v8::internal::ZoneList<v8::internal::AstRawString const*>*, bool)",93957339320496,93957339321194],["v8::internal::Parser::NextInternalNamespaceExportName()",93957339321504,93957339321701],["v8::internal::Parser::DeclareVariable(v8::internal::AstRawString const*, v8::internal::VariableKind, v8::internal::VariableMode, v8::internal::InitializationFlag, v8::internal::Scope*, bool*, int, int)",93957339322592,93957339322901],["v8::internal::Parser::BuildInitializationBlock(v8::internal::ParserBase<v8::internal::Parser>::DeclarationParsingResult*)",93957339323184,93957339323514],["v8::internal::Parser::DeclareFunction(v8::internal::AstRawString const*, v8::internal::FunctionLiteral*, v8::internal::VariableMode, v8::internal::VariableKind, int, int, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339323760,93957339324295],["v8::internal::Parser::DeclareNative(v8::internal::AstRawString const*, int)",93957339325088,93957339325557],["v8::internal::Parser::RewriteSwitchStatement(v8::internal::SwitchStatement*, v8::internal::Scope*)",93957339326176,93957339327382],["v8::internal::Parser::ReportVarRedeclarationIn(v8::internal::AstRawString const*, v8::internal::Scope*)",93957339327808,93957339327998],["v8_inspector::protocol::Profiler::CounterInfo::~CounterInfo()",93957342293024,93957342293072],["v8_inspector::protocol::Runtime::PropertyDescriptor::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342295488,93957342295944],["v8_inspector::protocol::Runtime::ExceptionDetails::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342297056,93957342297475],["v8_inspector::protocol::Runtime::StackTraceId::deserializer_descriptor()",93957342298048,93957342298275],["v8_inspector::protocol::Runtime::Frontend::bindingCalled(v8_inspector::String16 const&, v8_inspector::String16 const&, int)",93957342298448,93957342298660],["v8_inspector::protocol::Runtime::Frontend::exceptionRevoked(v8_inspector::String16 const&, int)",93957342299184,93957342299355],["v8_inspector::protocol::Runtime::Frontend::executionContextCreated(std::__1::unique_ptr<v8_inspector::protocol::Runtime::ExecutionContextDescription, std::__1::default_delete<v8_inspector::protocol::Runtime::ExecutionContextDescription> >)",93957342299552,93957342299693],["v8_inspector::protocol::Runtime::Frontend::executionContextsCleared()",93957342299824,93957342299880],["v8::internal::compiler::GraphAssembler::~GraphAssembler()",93957343533360,93957343533453],["v8::internal::compiler::GraphAssembler::ChangeInt64ToFloat64(v8::internal::compiler::Node*)",93957343539232,93957343539428],["v8::internal::compiler::GraphAssembler::Int32LessThanOrEqual(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343544224,93957343544427],["v8::internal::compiler::GraphAssembler::Word32Sar(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343547632,93957343547837],["v8::internal::compiler::GraphAssembler::WordShl(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343550208,93957343550424],["v8::internal::compiler::GraphAssembler::Uint32Div(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343552000,93957343552211],["v8::internal::compiler::GraphAssembler::Float64RoundDown(v8::internal::compiler::Node*)",93957343552960,93957343553198],["v8::internal::compiler::JSGraphAssembler::StoreElement(v8::internal::compiler::ElementAccess const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343554752,93957343554985],["v8::internal::compiler::JSGraphAssembler::NumberSubtract(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343556144,93957343556357],["v8::internal::compiler::JSGraphAssembler::ObjectIsCallable(v8::internal::TNode<v8::internal::Object>)",93957343557056,93957343557262],["v8::internal::compiler::JSGraphAssembler::ToBoolean(v8::internal::TNode<v8::internal::Object>)",93957343557952,93957343558158],["v8::internal::compiler::GraphAssembler::Checkpoint(v8::internal::compiler::FrameState)",93957343558832,93957343559037],["v8::internal::compiler::GraphAssembler::InitializeEffectControl(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343559520,93957343559534],["v8::internal::compiler::GraphAssembler::Store(v8::internal::compiler::StoreRepresentation, v8::internal::compiler::Node*, int, v8::internal::compiler::Node*)",93957343560096,93957343560201],["v8::internal::compiler::GraphAssembler::ProtectedStore(v8::internal::MachineRepresentation, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343560880,93957343561103],["v8::internal::compiler::JSGraphAssembler::PlainPrimitiveToNumber(v8::internal::TNode<v8::internal::Object>)",93957343561760,93957343562138],["v8::internal::compiler::GraphAssembler::Word32PoisonOnSpeculation(v8::internal::compiler::Node*)",93957343562560,93957343562765],["v8::internal::compiler::GraphAssembler::DeoptimizeIfNot(v8::internal::DeoptimizeKind, v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::IsSafetyCheck)",93957343562992,93957343563209],["v8::internal::compiler::GraphAssembler::DynamicCheckMapsWithDeoptUnless(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343563264,93957343563514],["v8::internal::compiler::GraphAssembler::Call(v8::internal::compiler::Operator const*, int, v8::internal::compiler::Node**)",93957343563712,93957343563869],["v8::internal::compiler::GraphAssembler::BranchWithCriticalSafetyCheck(v8::internal::compiler::Node*, v8::internal::compiler::GraphAssemblerLabel<0ul>*, v8::internal::compiler::GraphAssemblerLabel<0ul>*)",93957343564144,93957343564198],["v8::internal::compiler::GraphAssembler::BindBasicBlock(v8::internal::compiler::BasicBlock*)",93957343564784,93957343564864],["v8::internal::compiler::GraphAssembler::GotoBasicBlock(v8::internal::compiler::BasicBlock*)",93957343564928,93957343565052],["v8::internal::compiler::GraphAssembler::FinalizeCurrentBlock(v8::internal::compiler::BasicBlock*)",93957343565568,93957343565916],["v8::internal::compiler::Reducer::Reduce(v8::internal::compiler::Node*, v8::internal::compiler::ObserveNodeManager*)",93957343566016,93957343566095],["v8::internal::compiler::GraphReducer::~GraphReducer()",93957343566336,93957343566396],["v8::internal::compiler::GraphReducer::AddReducer(v8::internal::compiler::Reducer*)",93957343566464,93957343567123],["v8::internal::compiler::GraphReducer::ReduceTop()",93957343567776,93957343569370],["v8::internal::compiler::GraphReducer::Reduce(v8::internal::compiler::Node*)",93957343569408,93957343570668],["v8::internal::compiler::GraphReducer::Replace(v8::internal::compiler::Node*, v8::internal::compiler::Node*, unsigned int)",93957343570832,93957343571919],["v8::internal::compiler::GraphReducer::ReplaceWithValue(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343571936,93957343572828],["v8::internal::compiler::GraphTrimmer::~GraphTrimmer()",93957343573280,93957343573299],["endaliasent",139871564397856,139871564398078],["if_nametoindex",139871564403472,139871564403701],["if_indextoname",139871564404512,139871564404678],["freeifaddrs",139871564409120,139871564409125],["fesetexcept",139871565285600,139871565285665],["fmodf64x",139871565288304,139871565288402],["jnf64x",139871565289216,139871565289353],["logf64x",139871565289968,139871565290133],["scalbl",139871565291008,139871565291327],["sqrtf64x",139871565291440,139871565291512],["lgammaf64x_r",139871565292112,139871565292311],["expf64x",139871565292528,139871565292665],["v8::internal::Isolate::ThrowInternal(v8::internal::Object, v8::internal::MessageLocation*)",93957336624032,93957336625267],["v8::internal::Isolate::UnwindAndFindHandler()",93957336628432,93957336631146],["v8::internal::Isolate::PromoteScheduledException()",93957336632400,93957336632441],["v8::internal::Isolate::OptionalRescheduleException(bool)",93957336634800,93957336635228],["v8::internal::Isolate::PromiseHasUserDefinedRejectHandler(v8::internal::Handle<v8::internal::JSPromise>)",93957336635392,93957336637108],["v8::internal::Isolate::SetCaptureStackTraceForUncaughtExceptions(bool, int, v8::StackTrace::StackTraceOptions)",93957336637760,93957336637785],["v8::internal::Isolate::IsWasmSimdEnabled(v8::internal::Handle<v8::internal::Context>)",93957336637808,93957336637841],["v8::internal::Isolate::GetIncumbentContext()",93957336637904,93957336638204],["v8::internal::Handle<v8::internal::String> v8::internal::LiteralBuffer::Internalize<v8::internal::Isolate>(v8::internal::Isolate*) const",93957339271552,93957339271643],["v8::internal::ParserBase<v8::internal::Parser>::NewFunctionScope(v8::internal::FunctionKind, v8::internal::Zone*) const",93957339278144,93957339278305],["v8::internal::Parser::NewSuperPropertyReference(int)",93957339286144,93957339286381],["v8::internal::ParserBase<v8::internal::Parser>::ParserBase(v8::internal::Zone*, v8::internal::Scanner*, unsigned long, v8::Extension*, v8::internal::AstValueFactory*, v8::internal::PendingCompilationErrorHandler*, v8::internal::RuntimeCallStats*, v8::internal::Logger*, v8::internal::UnoptimizedCompileFlags, bool)",93957339289056,93957339289593],["v8::internal::Parser::BuildInitialYield(int, v8::internal::FunctionKind)",93957339294880,93957339295134],["v8::internal::Parser::ParseWrapped(v8::internal::Isolate*, v8::internal::ParseInfo*, v8::internal::ScopedList<v8::internal::Statement*, void*>*, v8::internal::DeclarationScope*, v8::internal::Zone*)",93957339295888,93957339296227],["v8::internal::Parser::WrapREPLResult(v8::internal::Expression*)",93957339299920,93957339300258],["v8::internal::Parser::DoParseFunction(v8::internal::Isolate*, v8::internal::ParseInfo*, int, int, int, v8::internal::AstRawString const*)",93957339303200,93957339306479],["v8::internal::ParserBase<v8::internal::Parser>::ParseArrowFunctionLiteral(v8::internal::ParserFormalParameters const&)",93957339308720,93957339311309],["v8::internal::Parser::ParseImportDeclaration()",93957339312816,93957339314311],["v8::internal::Parser::ParseExportClause(v8::internal::Scanner::Location*, v8::internal::Scanner::Location*)",93957339314768,93957339315353],["v8::internal::ZoneChunkList<v8::internal::Parser::ExportClauseData>::push_back(v8::internal::Parser::ExportClauseData const&)",93957339315536,93957339315834],["unibrow::Utf16::HasUnpairedSurrogate(unsigned short const*, unsigned long)",93957339315872,93957339315983],["v8::internal::Parser::ParseImportAssertClause()",93957339317216,93957339317915],["v8::internal::ParserBase<v8::internal::Parser>::ExpectSemicolon()",93957339318032,93957339318196],["v8::internal::ParserBase<v8::internal::Parser>::ExpectContextualKeyword(v8::internal::AstRawString const*, char const*, int)",93957339318464,93957339318665],["v8_inspector::protocol::Profiler::ScriptCoverage::~ScriptCoverage()",93957342292384,93957342292412],["v8_inspector::protocol::Runtime::RemoteObject::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342293200,93957342293665],["v8_inspector::protocol::Runtime::PropertyPreview::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342295072,93957342295331],["v8_inspector::protocol::Runtime::PrivatePropertyDescriptor::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342296096,93957342296314],["v8_inspector::protocol::Runtime::ExecutionContextDescription::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342296800,93957342297041],["v8_inspector::protocol::Runtime::CallFrame::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342297488,93957342297728],["non-virtual thunk to v8_inspector::protocol::Runtime::StackTrace::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342298032,93957342298046],["v8_inspector::protocol::Runtime::StackTraceId::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342298288,93957342298423],["v8::internal::compiler::EscapeAnalysisTracker::Scope::InitVirtualObject(int)",93957343523360,93957343524571],["v8::internal::compiler::JSGraphAssembler::AllocateInYoungGenerationStubConstant()",93957343535088,93957343535159],["v8::internal::compiler::GraphAssembler::BitcastWord32ToWord64(v8::internal::compiler::Node*)",93957343537568,93957343537764],["v8::internal::compiler::GraphAssembler::RoundInt32ToFloat32(v8::internal::compiler::Node*)",93957343540896,93957343541092],["v8::internal::compiler::GraphAssembler::Float64Mod(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343543392,93957343543595],["v8::internal::compiler::GraphAssembler::IntAdd(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343545056,93957343545272],["v8::internal::compiler::GraphAssembler::UintLessThan(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343546784,93957343547000],["v8::internal::compiler::GraphAssembler::Word32Xor(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343548464,93957343548667],["v8::internal::compiler::GraphAssembler::WordSar(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343549744,93957343549964],["v8::internal::compiler::GraphAssembler::Int32AddWithOverflow(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343550656,93957343550867],["v8::internal::compiler::GraphAssembler::Int32SubWithOverflow(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343551552,93957343551763],["v8::internal::compiler::GraphAssembler::Uint64Div(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343552448,93957343552659],["v8::internal::compiler::GraphAssembler::SmiSub(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343552928,93957343552938],["v8::internal::compiler::GraphAssembler::TruncateFloat64ToInt64(v8::internal::compiler::Node*, v8::internal::compiler::TruncateKind)",93957343553440,93957343553638],["v8::internal::compiler::JSGraphAssembler::LoadElement(v8::internal::compiler::ElementAccess const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343554304,93957343554526],["v8::internal::compiler::JSGraphAssembler::StringLength(v8::internal::TNode<v8::internal::String>)",93957343555264,93957343555470],["v8::internal::compiler::JSGraphAssembler::NumberAdd(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343555920,93957343556133],["v8::internal::compiler::JSGraphAssembler::NumberLessThan(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343556368,93957343556581],["v8::internal::compiler::JSGraphAssembler::StringSubstring(v8::internal::TNode<v8::internal::String>, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343556816,93957343557049],["v8::internal::compiler::JSGraphAssembler::ObjectIsUndetectable(v8::internal::TNode<v8::internal::Object>)",93957343557264,93957343557470],["v8::internal::compiler::JSGraphAssembler::NumberIsFloat64Hole(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343557744,93957343557950],["v8::internal::compiler::JSGraphAssembler::ConvertTaggedHoleToUndefined(v8::internal::TNode<v8::internal::Object>)",93957343558160,93957343558366],["v8::internal::compiler::GraphAssembler::TypeGuard(v8::internal::compiler::Type, v8::internal::compiler::Node*)",93957343558624,93957343558829],["v8::internal::compiler::GraphAssembler::Unreachable(v8::internal::compiler::GraphAssemblerLabel<0ul>*)",93957343559040,93957343559113],["v8::internal::compiler::GraphAssembler::ConnectUnreachableToEnd()",93957343559328,93957343559517],["void v8::internal::compiler::GraphAssembler::Goto<>(v8::internal::compiler::GraphAssemblerLabel<0>*)",93957343559536,93957343559691],["v8::internal::compiler::GraphAssembler::Store(v8::internal::compiler::StoreRepresentation, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343559872,93957343560095],["v8::internal::compiler::GraphAssembler::Load(v8::internal::MachineType, v8::internal::compiler::Node*, int)",93957343560208,93957343560308],["v8::internal::compiler::GraphAssembler::LoadUnaligned(v8::internal::MachineType, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343560608,93957343560873],["v8::internal::compiler::GraphAssembler::ProtectedLoad(v8::internal::MachineType, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343561104,93957343561316],["v8::internal::compiler::GraphAssembler::UnsafePointerAdd(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343561536,93957343561748],["v8::internal::compiler::GraphAssembler::BitcastWordToTagged(v8::internal::compiler::Node*)",93957343562144,93957343562349],["getnetgrent_r",139871564396000,139871564396237],["getaliasent",139871564398352,139871564398538],["getnameinfo",139871564400816,139871564403462],["if_freenameindex",139871564403712,139871564403766],["fesetround",139871565284656,139871565284781],["acosf64x",139871565287344,139871565287432],["exp2f64x",139871565288016,139871565288153],["j0f64x",139871565288608,139871565288703],["y1f64x",139871565289008,139871565289214],["ynf64x",139871565289360,139871565289609],["log10f64x",139871565289792,139871565289957],["powf64x",139871565290144,139871565290638],["v8::internal::Isolate::GetAbstractPC(int*, int*)",93957336621008,93957336621596],["v8::internal::Isolate::InvokeApiInterruptCallbacks()",93957336625616,93957336626238],["v8::internal::Isolate::ComputeLocation(v8::internal::MessageLocation*)",93957336627872,93957336628399],["v8::internal::(anonymous namespace)::PredictException(v8::internal::JavaScriptFrame*)",93957336631616,93957336632182],["v8::internal::Isolate::CancelScheduledExceptionFromTryCatch(v8::TryCatch*)",93957336632304,93957336632396],["v8::internal::Isolate::ComputeLocationFromException(v8::internal::MessageLocation*, v8::internal::Handle<v8::internal::Object>)",93957336632448,93957336633364],["v8::internal::Isolate::ReportPendingMessages()",93957336633920,93957336634786],["v8::internal::Isolate::PushPromise(v8::internal::Handle<v8::internal::JSObject>)",93957336635232,93957336635305],["v8::internal::ValueDeserializer::AddObjectWithID(unsigned int, v8::internal::Handle<v8::internal::JSReceiver>)",93957339265760,93957339265848],["v8::internal::UnoptimizedCompileFlags::ForScriptCompile(v8::internal::Isolate*, v8::internal::Script)",93957339273984,93957339274460],["v8::internal::UnoptimizedCompileState::ParallelTasks::Enqueue(v8::internal::ParseInfo*, v8::internal::AstRawString const*, v8::internal::FunctionLiteral*)",93957339276368,93957339276439],["v8::internal::ScopedList<v8::internal::Expression*, void*>::Rewind()",93957339279184,93957339279254],["v8::internal::Parser::BuildUnaryExpression(v8::internal::Expression*, v8::internal::Token::Value, int)",93957339285072,93957339285636],["v8::internal::Parser::ExpressionFromLiteral(v8::internal::Token::Value, int)",93957339286640,93957339287183],["v8::internal::ParserBase<v8::internal::Parser>::ReportMessage(v8::internal::MessageTemplate)",93957339288496,93957339288613],["v8::internal::Parser::DeserializeScopeChain(v8::internal::Isolate*, v8::internal::ParseInfo*, v8::internal::MaybeHandle<v8::internal::ScopeInfo>, v8::internal::Scope::DeserializationMode)",93957339289744,93957339290006],["v8::internal::Parser::PostProcessParseResult(v8::internal::Isolate*, v8::internal::ParseInfo*, v8::internal::FunctionLiteral*)",93957339294640,93957339294880],["v8::internal::Parser::ParseModuleItemList(v8::internal::ScopedList<v8::internal::Statement*, void*>*)",93957339295136,93957339295335],["v8::internal::Parser::RewriteAsyncFunctionBody(v8::internal::ScopedList<v8::internal::Statement*, void*>*, v8::internal::Block*, v8::internal::Expression*, v8::internal::REPLMode)",93957339295552,93957339295882],["v8::internal::Parser::ParseREPLProgram(v8::internal::ParseInfo*, v8::internal::ScopedList<v8::internal::Statement*, void*>*, v8::internal::DeclarationScope*)",93957339296240,93957339297342],["v8::internal::Parser::ParseFunctionLiteral(v8::internal::AstRawString const*, v8::internal::Scanner::Location, v8::internal::FunctionNameValidity, v8::internal::FunctionKind, int, v8::internal::FunctionSyntaxKind, v8::internal::LanguageMode, v8::internal::ZoneList<v8::internal::AstRawString const*>*)",93957339297904,93957339299920],["v8::internal::AstNodeFactory::NewObjectLiteral(v8::internal::ScopedList<v8::internal::ObjectLiteralProperty*, void*> const&, unsigned int, int, bool, v8::internal::Variable*)",93957339300272,93957339300747],["v8::internal::SharedFunctionInfo::HasOuterScopeInfo() const",93957339302912,93957339303189],["v8::internal::ParserBase<v8::internal::Parser>::ParseFormalParameterList(v8::internal::ParserFormalParameters*)",93957339306480,93957339308669],["v8_inspector::protocol::Profiler::Dispatcher::wire(v8_crdtp::UberDispatcher*, v8_inspector::protocol::Profiler::Backend*)",93957342291184,93957342291352],["v8_inspector::protocol::Profiler::TypeProfileEntry::~TypeProfileEntry()",93957342292640,93957342292774],["v8_inspector::protocol::Profiler::RuntimeCallCounterInfo::~RuntimeCallCounterInfo()",93957342293104,93957342293152],["v8_inspector::protocol::Runtime::CustomPreview::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342293696,93957342293831],["v8_inspector::protocol::Runtime::PropertyPreview::deserializer_descriptor()",93957342294704,93957342295069],["v8_inspector::protocol::Runtime::EntryPreview::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342295344,93957342295475],["v8_inspector::protocol::Runtime::InternalPropertyDescriptor::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342295952,93957342296086],["v8_inspector::protocol::Runtime::CallArgument::deserializer_descriptor()",93957342296320,93957342296593],["v8::internal::compiler::NodeHashCache::Constructor::Get()",93957343490656,93957343491449],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::FrameStateType)",93957343529824,93957343529970],["v8::internal::compiler::JSGraphAssembler::HeapConstant(v8::internal::Handle<v8::internal::HeapObject>)",93957343534208,93957343534279],["v8::internal::compiler::JSGraphAssembler::FixedDoubleArrayMapConstant()",93957343535728,93957343535799],["v8::internal::compiler::JSGraphAssembler::IsUndefined(v8::internal::TNode<v8::internal::Object>)",93957343536848,93957343536934],["v8::internal::compiler::GraphAssembler::ChangeFloat64ToInt64(v8::internal::compiler::Node*)",93957343538400,93957343538596],["v8::internal::compiler::GraphAssembler::Float64ExtractHighWord32(v8::internal::compiler::Node*)",93957343540064,93957343540260],["v8::internal::compiler::GraphAssembler::Word32ReverseBytes(v8::internal::compiler::Node*)",93957343541728,93957343541924],["v8::internal::compiler::GraphAssembler::Float64LessThan(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343542976,93957343543179],["v8::internal::compiler::GraphAssembler::Int32Add(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343543808,93957343544011],["v8::internal::compiler::GraphAssembler::Int32Sub(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343544640,93957343544843],["v8::internal::compiler::GraphAssembler::IntMul(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343545504,93957343545720],["v8::internal::compiler::GraphAssembler::Uint64LessThan(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343546368,93957343546571],["v8::internal::compiler::GraphAssembler::Word32Equal(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343547216,93957343547419],["v8::internal::compiler::GraphAssembler::Word32Shl(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343548048,93957343548251],["v8::internal::compiler::GraphAssembler::Word64Equal(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343548880,93957343549083],["v8::internal::compiler::GraphAssembler::WordEqual(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343549520,93957343549736],["v8::internal::compiler::GraphAssembler::WordSarShiftOutZeros(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343549968,93957343550194],["v8::internal::compiler::GraphAssembler::WordShr(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343550432,93957343550648],["v8::internal::compiler::GraphAssembler::Int32Div(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343550880,93957343551091],["v8::internal::compiler::GraphAssembler::Int32MulWithOverflow(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343551328,93957343551539],["v8::internal::compiler::GraphAssembler::Int64Div(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343551776,93957343551987],["v8::internal::compiler::GraphAssembler::Uint32Mod(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343552224,93957343552435],["v8::internal::compiler::GraphAssembler::Uint64Mod(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343552672,93957343552883],["v8::internal::compiler::GraphAssembler::TaggedEqual(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343552912,93957343552922],["v8::internal::compiler::GraphAssembler::SmiLessThan(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343552944,93957343552954],["v8::internal::compiler::GraphAssembler::Float64RoundTruncate(v8::internal::compiler::Node*)",93957343553200,93957343553438],["v8::internal::compiler::GraphAssembler::Projection(int, v8::internal::compiler::Node*)",93957343553648,93957343553855],["v8::internal::compiler::JSGraphAssembler::LoadField(v8::internal::compiler::FieldAccess const&, v8::internal::compiler::Node*)",93957343554080,93957343554295],["v8::internal::compiler::JSGraphAssembler::StoreField(v8::internal::compiler::FieldAccess const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343554528,93957343554750],["v8::internal::compiler::JSGraphAssembler::TransitionAndStoreElement(v8::internal::compiler::MapRef, v8::internal::compiler::MapRef, v8::internal::TNode<v8::internal::HeapObject>, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::Object>)",93957343554992,93957343555262],["v8::internal::compiler::JSGraphAssembler::NumberMin(v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343555472,93957343555685],["setnetgrent",139871564394656,139871564395009],["getnetgrent",139871564397456,139871564397634],["getaliasent_r",139871564398080,139871564398338],["getaliasbyname",139871564398544,139871564398982],["__emutls_register_common",139871565196080,139871565196125],["feupdateenv",139871565285232,139871565285321],["fegetmode",139871565285696,139871565285705],["asinf64x",139871565287520,139871565287608],["coshf64x",139871565287904,139871565288012],["exp10f64x",139871565288160,139871565288297],["hypotf64x",139871565288416,139871565288604],["y0f64x",139871565288704,139871565288910],["v8::internal::StackTraceFailureMessage::StackTraceFailureMessage(v8::internal::Isolate*, void*, void*, void*, void*)",93957336616688,93957336617002],["v8::internal::Isolate::ScheduleThrow(v8::internal::Object)",93957336622368,93957336622700],["v8::internal::Isolate::CancelTerminateExecution()",93957336625312,93957336625405],["v8::internal::Isolate::CreateMessage(v8::internal::Handle<v8::internal::Object>, v8::internal::MessageLocation*)",93957336626416,93957336626712],["v8::internal::Isolate::PrintCurrentStackTrace(_IO_FILE*)",93957336627568,93957336627872],["v8::internal::Isolate::ReThrow(v8::internal::Object)",93957336628400,93957336628420],["v8::internal::Isolate::is_catchable_by_wasm(v8::internal::Object)",93957336631152,93957336631603],["v8::internal::Isolate::ThrowIllegalOperation()",93957336632192,93957336632259],["v8::internal::ValueDeserializer::ReadJSObject()",93957339256416,93957339257073],["v8::internal::FuncNameInferrer::FuncNameInferrer(v8::internal::AstValueFactory*)",93957339270672,93957339270704],["v8::internal::LiteralBuffer::AddTwoByteChar(unsigned int)",93957339272384,93957339272516],["v8::internal::UnoptimizedCompileState::UnoptimizedCompileState(v8::internal::UnoptimizedCompileState const&)",93957339275248,93957339275332],["v8::internal::ParseInfo::ResetCharacterStream()",93957339276288,93957339276321],["void v8::internal::Parser::HandleSourceURLComments<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::Script>)",93957339276752,93957339277047],["v8::internal::AstNodeFactory::NewCall(v8::internal::Expression*, v8::internal::ScopedList<v8::internal::Expression*, void*> const&, int, bool, v8::internal::Call::PossiblyEval, bool)",93957339278640,93957339278850],["v8::internal::Parser::ReportMessageAt(v8::internal::Scanner::Location, v8::internal::MessageTemplate, char const*)",93957339279520,93957339279623],["v8::internal::NaryOperation::AddSubsequent(v8::internal::Expression*, int)",93957339284768,93957339285066],["v8::internal::Parser::NewThrowError(v8::internal::Runtime::FunctionId, v8::internal::MessageTemplate, v8::internal::AstRawString const*, int)",93957339285648,93957339286140],["v8::internal::Parser::ImportMetaExpression(int)",93957339286384,93957339286631],["v8::internal::Parser::NewV8Intrinsic(v8::internal::AstRawString const*, v8::internal::ScopedList<v8::internal::Expression*, void*> const&, int)",93957339287184,93957339287677],["v8::internal::Parser::NewV8RuntimeFunctionForFuzzing(v8::internal::Runtime::Function const*, v8::internal::ScopedList<v8::internal::Expression*, void*> const&, int)",93957339287808,93957339288481],["v8::internal::Parser::Parser(v8::internal::ParseInfo*)",93957339288624,93957339289045],["v8::internal::Parser::InitializeEmptyScopeChain(v8::internal::ParseInfo*)",93957339289600,93957339289741],["v8::internal::Parser::ParseProgram(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>, v8::internal::ParseInfo*, v8::internal::MaybeHandle<v8::internal::ScopeInfo>)",93957339290016,93957339291245],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::takePreciseCoverage(v8_crdtp::Dispatchable const&)",93957342288528,93957342289048],["v8_inspector::protocol::Profiler::Profile::~Profile()",93957342291856,93957342291884],["v8_inspector::protocol::Profiler::TypeObject::~TypeObject()",93957342292448,93957342292496],["v8_inspector::protocol::Profiler::ScriptTypeProfile::~ScriptTypeProfile()",93957342292960,93957342292988],["v8_inspector::protocol::Profiler::RuntimeCallCounterInfo::~RuntimeCallCounterInfo()",93957342293072,93957342293104],["v8_inspector::protocol::Profiler::(anonymous namespace)::startPreciseCoverageParams::deserializer_descriptor()::$_37::__invoke(v8_crdtp::DeserializerState*, void*)",93957342293152,93957342293191],["non-virtual thunk to v8_inspector::protocol::Runtime::RemoteObject::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342293680,93957342293694],["v8_inspector::protocol::Runtime::ObjectPreview::deserializer_descriptor()",93957342293840,93957342294251],["v8::internal::compiler::EffectControlLinearizer::TruncateTaggedPointerToBit(v8::internal::compiler::Node*, v8::internal::compiler::GraphAssemblerLabel<1ul>*)",93957343471424,93957343472345],["v8::internal::compiler::SparseSidetable<v8::internal::compiler::VariableTracker::State>::Set(v8::internal::compiler::Node const*, v8::internal::compiler::VariableTracker::State)",93957343506272,93957343506785],["void std::__1::__function::__policy_invoker<void (v8::internal::compiler::Node*, v8::internal::compiler::EffectGraphReducer::Reduction*)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::compiler::EscapeAnalysis::EscapeAnalysis(v8::internal::compiler::JSGraph*, v8::internal::TickCounter*, v8::internal::Zone*)::$_0, void (v8::internal::compiler::Node*, v8::internal::compiler::EffectGraphReducer::Reduction*)> >(std::__1::__function::__policy_storage const*, v8::internal::compiler::Node*, v8::internal::compiler::EffectGraphReducer::Reduction*)",93957343529344,93957343529357],["v8::internal::compiler::FrameAccessState::MarkHasFrame(bool)",93957343531712,93957343531741],["v8::internal::compiler::GraphAssembler::UniqueIntPtrConstant(long)",93957343533696,93957343533889],["v8::internal::compiler::JSGraphAssembler::CEntryStubConstant(int)",93957343534528,93957343534606],["v8::internal::compiler::JSGraphAssembler::BooleanMapConstant()",93957343535408,93957343535479],["v8::internal::compiler::JSGraphAssembler::ZeroConstant()",93957343536048,93957343536119],["v8::internal::compiler::JSGraphAssembler::ReferenceEqual(v8::internal::TNode<v8::internal::Object>, v8::internal::TNode<v8::internal::Object>)",93957343536528,93957343536741],["v8::internal::compiler::GraphAssembler::BitcastFloat64ToInt64(v8::internal::compiler::Node*)",93957343537152,93957343537348],["v8::internal::compiler::GraphAssembler::ChangeFloat32ToFloat64(v8::internal::compiler::Node*)",93957343537984,93957343538180],["v8::internal::compiler::GraphAssembler::ChangeInt32ToFloat64(v8::internal::compiler::Node*)",93957343538816,93957343539012],["v8::internal::compiler::GraphAssembler::ChangeUint32ToUint64(v8::internal::compiler::Node*)",93957343539648,93957343539844],["v8::internal::compiler::GraphAssembler::Float64SilenceNaN(v8::internal::compiler::Node*)",93957343540480,93957343540676],["v8::internal::compiler::GraphAssembler::TruncateFloat64ToWord32(v8::internal::compiler::Node*)",93957343541312,93957343541508],["v8::internal::compiler::GraphAssembler::Float64Add(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343542144,93957343542347],["v8::internal::compiler::GraphAssembler::Float64InsertLowWord32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343542768,93957343542971],["v8::internal::compiler::GraphAssembler::Float64LessThanOrEqual(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343543184,93957343543387],["v8::internal::compiler::GraphAssembler::Float64Sub(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343543600,93957343543803],["v8::internal::compiler::GraphAssembler::Int32LessThan(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343544016,93957343544219],["v8::internal::compiler::GraphAssembler::Int32Mul(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343544432,93957343544635],["v8::internal::compiler::GraphAssembler::Int64Sub(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343544848,93957343545051],["v8::internal::compiler::GraphAssembler::IntLessThan(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343545280,93957343545496],["v8::internal::compiler::GraphAssembler::IntSub(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343545728,93957343545944],["v8::internal::compiler::GraphAssembler::Uint32LessThanOrEqual(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343546160,93957343546363],["v8::internal::compiler::GraphAssembler::Uint64LessThanOrEqual(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343546576,93957343546779],["v8::internal::compiler::GraphAssembler::Word32And(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343547008,93957343547211],["v8::internal::compiler::GraphAssembler::Word32Or(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343547424,93957343547627],["v8::internal::compiler::GraphAssembler::Word32SarShiftOutZeros(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343547840,93957343548048],["v8::internal::compiler::GraphAssembler::Word32Shr(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343548256,93957343548459],["v8::internal::compiler::GraphAssembler::Word64And(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343548672,93957343548875],["v8::internal::compiler::GraphAssembler::Word64Or(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343549088,93957343549291],["rexec_af",139871564390320,139871564391677],["endnetgrent",139871564395152,139871564395437],["innetgr",139871564396240,139871564397410],["setaliasent",139871564397648,139871564397850],["__register_frame_info_table",139871565193184,139871565193193],["feraiseexcept",139871565284240,139871565284380],["feholdexcept",139871565284800,139871565284878],["feenableexcept",139871565285424,139871565285522],["fetestexceptflag",139871565285680,139871565285689],["fesetmode",139871565285712,139871565285834],["acoshf64x",139871565287440,139871565287512],["atan2f64x",139871565287616,139871565287789],["v8::internal::Isolate::Iterate(v8::internal::RootVisitor*, v8::internal::ThreadLocalTop*)",93957336615664,93957336615994],["v8::internal::Isolate::CaptureAndSetDetailedStackTrace(v8::internal::Handle<v8::internal::JSReceiver>)",93957336620336,93957336620484],["v8::internal::Isolate::InitializeLoggingAndCounters()",93957336621952,93957336622015],["v8::internal::Isolate::StackOverflow()",93957336623248,93957336623688],["v8::internal::Isolate::TerminateExecution()",93957336625280,93957336625299],["v8::internal::Isolate::RequestInterrupt(void (*)(v8::Isolate*, void*), void*)",93957336625408,93957336625615],["v8::internal::Isolate::CreateMessageOrAbort(v8::internal::Handle<v8::internal::Object>, v8::internal::MessageLocation*)",93957336626240,93957336626407],["v8::internal::Isolate::PredictExceptionCatcher()",93957336626720,93957336627529],["v8::internal::ValueDeserializer::ValueDeserializer(v8::internal::Isolate*, unsigned char const*, unsigned long)",93957339253280,93957339253357],["v8::internal::ValueDeserializer::ReadJSArrayBuffer(bool)",93957339262720,93957339263099],["v8::internal::NonAsciiStart(unsigned char const*, int)",93957339270064,93957339270365],["v8::internal::FuncNameInferrer::RemoveAsyncKeywordFromEnd()",93957339270912,93957339271016],["v8::internal::LiteralBuffer::ExpandBuffer()",93957339271744,93957339271919],["v8::internal::Handle<v8::internal::Script> v8::internal::ParseInfo::CreateScript<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::String>, v8::internal::MaybeHandle<v8::internal::FixedArray>, v8::ScriptOriginOptions, v8::internal::NativesFlag)",93957339272864,93957339273213],["v8::internal::UnoptimizedCompileFlags::ForToplevelFunction(v8::internal::UnoptimizedCompileFlags, v8::internal::FunctionLiteral const*)",93957339274896,93957339275083],["v8::internal::ParseInfo::ForToplevelFunction(v8::internal::UnoptimizedCompileFlags, v8::internal::UnoptimizedCompileState*, v8::internal::FunctionLiteral const*, v8::internal::AstRawString const*)",93957339275600,93957339275865],["v8::internal::ParseInfo::scope() const",93957339276272,93957339276286],["v8::internal::ParseInfo::set_character_stream(std::__1::unique_ptr<v8::internal::Utf16CharacterStream, std::__1::default_delete<v8::internal::Utf16CharacterStream> >)",93957339276336,93957339276365],["void v8::internal::Parser::HandleSourceURLComments<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957339276448,93957339276743],["v8::internal::Parser::DefaultConstructor(v8::internal::AstRawString const*, bool, int, int)",93957339277056,93957339278142],["v8::internal::Parser::NewSuperCallReference(int)",93957339278320,93957339278626],["v8::internal::AstNodeFactory::NewFunctionLiteral(v8::internal::AstRawString const*, v8::internal::DeclarationScope*, v8::internal::ScopedList<v8::internal::Statement*, void*> const&, int, int, int, v8::internal::FunctionLiteral::ParameterFlag, v8::internal::FunctionSyntaxKind, v8::internal::FunctionLiteral::EagerCompileHint, int, bool, int, v8::internal::ProducedPreparseData*)",93957339278864,93957339279184],["v8::internal::Parser::ReportUnexpectedTokenAt(v8::internal::Scanner::Location, v8::internal::Token::Value, v8::internal::MessageTemplate)",93957339279264,93957339279520],["v8::internal::Parser::ShortcutNumericLiteralBinaryExpression(v8::internal::Expression**, v8::internal::Expression*, v8::internal::Token::Value, int)",93957339279632,93957339282844],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::getBestEffortCoverage(v8_crdtp::Dispatchable const&)",93957342285712,93957342286200],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::getCounters(v8_crdtp::Dispatchable const&)",93957342289872,93957342290360],["v8_inspector::protocol::Profiler::ProfileNode::~ProfileNode()",93957342291584,93957342291612],["v8_inspector::protocol::Profiler::FunctionCoverage::~FunctionCoverage()",93957342292048,93957342292198],["v8_inspector::protocol::Profiler::TypeObject::~TypeObject()",93957342292416,93957342292448],["v8_inspector::protocol::Profiler::TypeProfileEntry::~TypeProfileEntry()",93957342292496,93957342292635],["v8_inspector::protocol::Profiler::ScriptTypeProfile::~ScriptTypeProfile()",93957342292784,93957342292958],["v8_inspector::protocol::Profiler::CounterInfo::~CounterInfo()",93957342292992,93957342293024],["v8::internal::compiler::EffectControlLinearizer::LowerMaybeGrowFastElements(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343449040,93957343449906],["v8::internal::compiler::EffectControlLinearizer::ComputeUnseededHash(v8::internal::compiler::Node*)",93957343480320,93957343480657],["std::__1::__hash_table<v8::internal::compiler::Node*, v8::internal::compiler::NodeHashCache::NodeHashCode, v8::internal::compiler::NodeHashCache::NodeEquals, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> >::rehash(unsigned long)",93957343495680,93957343496051],["v8::internal::compiler::VariableTracker::Get(v8::internal::compiler::Variable, v8::internal::compiler::Node*)",93957343517392,93957343517823],["v8::internal::compiler::EscapeAnalysisTracker::Scope::SetReplacement(v8::internal::compiler::Node*)",93957343526496,93957343526952],["v8::internal::compiler::operator==(v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::FeedbackSource const&)",93957343529488,93957343529514],["v8::internal::compiler::CreateJSWasmCallBuiltinContinuationFrameState(v8::internal::compiler::JSGraph*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957343530912,93957343531048],["v8::internal::compiler::GraphAssembler::BasicBlockUpdater::AddClonedNode(v8::internal::compiler::Node*)",93957343532512,93957343532703],["v8::internal::compiler::GraphAssembler::Int32Constant(int)",93957343533536,93957343533604],["v8::internal::compiler::JSGraphAssembler::SmiConstant(int)",93957343534048,93957343534123],["v8::internal::compiler::JSGraphAssembler::NumberConstant(double)",93957343534368,93957343534439],["v8::internal::compiler::GraphAssembler::Load(v8::internal::MachineType, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343534784,93957343534996],["v8::internal::compiler::JSGraphAssembler::AllocateRegularInYoungGenerationStubConstant()",93957343535248,93957343535319],["v8::internal::compiler::JSGraphAssembler::FalseConstant()",93957343535568,93957343535639],["v8::internal::compiler::JSGraphAssembler::MinusOneConstant()",93957343535888,93957343535959],["v8::internal::compiler::JSGraphAssembler::OneConstant()",93957343536208,93957343536279],["v8::internal::compiler::JSGraphAssembler::UndefinedConstant()",93957343536448,93957343536519],["v8::internal::compiler::JSGraphAssembler::IsTheHole(v8::internal::TNode<v8::internal::Object>)",93957343536752,93957343536838],["v8::internal::compiler::GraphAssembler::BitcastFloat32ToInt32(v8::internal::compiler::Node*)",93957343536944,93957343537140],["v8::internal::compiler::GraphAssembler::BitcastInt32ToFloat32(v8::internal::compiler::Node*)",93957343537360,93957343537556],["v8::internal::compiler::GraphAssembler::BitcastInt64ToFloat64(v8::internal::compiler::Node*)",93957343537776,93957343537972],["v8::internal::compiler::GraphAssembler::ChangeFloat64ToInt32(v8::internal::compiler::Node*)",93957343538192,93957343538388],["v8::internal::compiler::GraphAssembler::ChangeFloat64ToUint32(v8::internal::compiler::Node*)",93957343538608,93957343538804],["v8::internal::compiler::GraphAssembler::ChangeInt32ToInt64(v8::internal::compiler::Node*)",93957343539024,93957343539220],["v8::internal::compiler::GraphAssembler::ChangeUint32ToFloat64(v8::internal::compiler::Node*)",93957343539440,93957343539636],["v8::internal::compiler::GraphAssembler::Float64Abs(v8::internal::compiler::Node*)",93957343539856,93957343540052],["v8::internal::compiler::GraphAssembler::Float64ExtractLowWord32(v8::internal::compiler::Node*)",93957343540272,93957343540468],["v8::internal::compiler::GraphAssembler::RoundFloat64ToInt32(v8::internal::compiler::Node*)",93957343540688,93957343540884],["v8::internal::compiler::GraphAssembler::TruncateFloat64ToFloat32(v8::internal::compiler::Node*)",93957343541104,93957343541300],["v8::internal::compiler::GraphAssembler::TruncateInt64ToInt32(v8::internal::compiler::Node*)",93957343541520,93957343541716],["v8::internal::compiler::GraphAssembler::Word64ReverseBytes(v8::internal::compiler::Node*)",93957343541936,93957343542132],["v8::internal::compiler::GraphAssembler::Float64Equal(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343542352,93957343542555],["ruserok",139871564389888,139871564389899],["ruserpass",139871564392272,139871564393788],["__internal_endnetgrent",139871564395024,139871564395152],["__internal_getnetgrent_r",139871564395440,139871564395992],["_Unwind_Resume",139871565184960,139871565185359],["__deregister_frame",139871565193552,139871565193589],["feclearexcept",139871565284064,139871565284149],["fetestexcept",139871565284512,139871565284578],["fegetenv",139871565284784,139871565284795],["fesetenv",139871565284880,139871565285219],["fedisableexcept",139871565285328,139871565285422],["fegetexcept",139871565285536,139871565285597],["v8::internal::Isolate::embedded_blob_data_size() const",93957336614192,93957336614204],["v8::internal::Isolate::UnregisterTryCatchHandler(v8::TryCatch*)",93957336616080,93957336616097],["v8::internal::Isolate::CountUsage(v8::Isolate::UseCounterFeature)",93957336617632,93957336617791],["v8::internal::Isolate::CaptureAndSetSimpleStackTrace(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::FrameSkipMode, v8::internal::Handle<v8::internal::Object>)",93957336620560,93957336620710],["v8::internal::Isolate::PrintStack(_IO_FILE*, v8::internal::Isolate::PrintStackMode)",93957336621600,93957336621944],["v8::internal::Isolate::ReportFailedAccessCheck(v8::internal::Handle<v8::internal::JSObject>)",93957336622016,93957336622361],["v8::internal::Isolate::MayAccess(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::JSObject>)",93957336622704,93957336623233],["v8::internal::Isolate::ThrowAt(v8::internal::Handle<v8::internal::JSObject>, v8::internal::MessageLocation*)",93957336623696,93957336624023],["v8::internal::ValueSerializer::WriteHostObject(v8::internal::Handle<v8::internal::JSObject>)",93957339242752,93957339243170],["v8::internal::ValueDeserializer::ReadJSArrayBufferView(v8::internal::Handle<v8::internal::JSArrayBuffer>)",93957339254896,93957339255393],["v8::internal::ValueDeserializer::ReadJSPrimitiveWrapper(v8::internal::SerializationTag)",93957339259120,93957339260664],["v8::internal::ValueDeserializer::ReadWasmMemory()",93957339264656,93957339264949],["v8::internal::ValueDeserializer::ReadObjectUsingEntireBufferForLegacyFormat()",93957339268400,93957339269801],["v8::internal::ObjectVisitor::VisitRelocInfo(v8::internal::RelocIterator*)",93957339270416,93957339270484],["v8::internal::FuncNameInferrer::PushLiteralName(v8::internal::AstRawString const*)",93957339270784,93957339270842],["v8::internal::FuncNameInferrer::InferFunctionsNames()",93957339271424,93957339271515],["v8::internal::Handle<v8::internal::String> v8::internal::LiteralBuffer::Internalize<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957339271648,93957339271739],["v8::internal::LiteralBuffer::ConvertToTwoByte()",93957339271920,93957339272383],["v8::internal::Handle<v8::internal::Script> v8::internal::ParseInfo::CreateScript<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::MaybeHandle<v8::internal::FixedArray>, v8::ScriptOriginOptions, v8::internal::NativesFlag)",93957339272528,93957339272862],["v8::internal::UnoptimizedCompileFlags::ForFunctionCompile(v8::internal::Isolate*, v8::internal::SharedFunctionInfo)",93957339273216,93957339273969],["v8::internal::UnoptimizedCompileFlags::ForToplevelCompile(v8::internal::Isolate*, bool, v8::internal::LanguageMode, v8::internal::REPLMode, v8::ScriptType)",93957339274464,93957339274884],["v8::internal::UnoptimizedCompileState::UnoptimizedCompileState(v8::internal::Isolate*)",93957339275088,93957339275245],["v8::internal::ParseInfo::ParseInfo(v8::internal::Isolate*, v8::internal::UnoptimizedCompileFlags, v8::internal::UnoptimizedCompileState*)",93957339275344,93957339275598],["v8::internal::ParseInfo::GetOrCreateAstValueFactory()",93957339275872,93957339276118],["v8_inspector::protocol::Profiler::CounterInfo::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342283728,93957342283860],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::startTypeProfile(v8_crdtp::Dispatchable const&)",93957342287712,93957342287864],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::enableCounters(v8_crdtp::Dispatchable const&)",93957342289552,93957342289704],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::disableRuntimeCallStats(v8_crdtp::Dispatchable const&)",93957342290528,93957342290683],["v8_inspector::protocol::Profiler::ProfileNode::~ProfileNode()",93957342291360,93957342291576],["v8_inspector::protocol::Profiler::Profile::~Profile()",93957342291616,93957342291851],["v8_inspector::protocol::Profiler::FunctionCoverage::~FunctionCoverage()",93957342291888,93957342292039],["v8_inspector::protocol::Profiler::ScriptCoverage::~ScriptCoverage()",93957342292208,93957342292382],["v8::internal::compiler::EffectControlLinearizer::LowerStringIndexOf(v8::internal::compiler::Node*)",93957343435296,93957343435565],["v8::internal::compiler::EffectControlLinearizer::LowerTransitionAndStoreElement(v8::internal::compiler::Node*)",93957343461392,93957343463434],["v8::internal::compiler::EffectControlLinearizer::BuildCheckedHeapNumberOrOddballToFloat64(v8::internal::compiler::CheckTaggedInputMode, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343475328,93957343475970],["void v8::internal::compiler::GraphAssembler::GotoIfNot<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> > >(v8::internal::compiler::Node*, v8::internal::compiler::GraphAssemblerLabel<1>*, v8::internal::compiler::BranchHint, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >)",93957343484496,93957343484740],["v8::internal::compiler::NodeHashCache::Constructor::MutableNode()",93957343494976,93957343495493],["v8::internal::compiler::EffectGraphReducer::ReduceFrom(v8::internal::compiler::Node*)",93957343498336,93957343499699],["v8::internal::compiler::EscapeAnalysisTracker::Scope::~Scope()",93957343515920,93957343516577],["v8::internal::compiler::PersistentMap<v8::internal::compiler::Variable, v8::internal::compiler::Node*, v8::base::hash<v8::internal::compiler::Variable> >::iterator::begin(v8::internal::compiler::PersistentMap<v8::internal::compiler::Variable, v8::internal::compiler::Node*, v8::base::hash<v8::internal::compiler::Variable> >::FocusedTree const*, v8::internal::compiler::Node*)",93957343520432,93957343520673],["v8::internal::compiler::EscapeAnalysisTracker::Scope::SetEscaped(v8::internal::compiler::Node*)",93957343525616,93957343526290],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, v8::internal::compiler::ObjectData*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, v8::internal::compiler::ObjectData*>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, v8::internal::compiler::ObjectData*>, v8::base::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, v8::internal::compiler::ObjectData*>, std::__1::equal_to<int>, v8::base::hash<int>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<int, v8::internal::compiler::ObjectData*> > >::__emplace_unique_key_args<int, std::__1::pair<int, v8::internal::compiler::ObjectData*> >(int const&, std::__1::pair<int, v8::internal::compiler::ObjectData*>&&)",93957343527408,93957343528359],["v8::internal::compiler::FeedbackSource::FeedbackSource(v8::internal::compiler::FeedbackVectorRef, v8::internal::FeedbackSlot)",93957343529376,93957343529426],["v8::internal::compiler::operator==(v8::internal::compiler::FrameStateInfo const&, v8::internal::compiler::FrameStateInfo const&)",93957343529632,93957343529701],["v8::internal::compiler::CreateStubBuiltinContinuationFrameState(v8::internal::compiler::JSGraph*, v8::internal::Builtins::Name, v8::internal::compiler::Node*, v8::internal::compiler::Node* const*, int, v8::internal::compiler::Node*, v8::internal::compiler::ContinuationFrameStateMode, v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957343530224,93957343530632],["v8::internal::compiler::CreateGenericLazyDeoptContinuationFrameState(v8::internal::compiler::JSGraph*, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343531600,93957343531654],["v8::internal::compiler::FrameAccessState::GetFrameOffset(int) const",93957343531776,93957343531836],["v8::internal::compiler::GraphAssembler::GraphAssembler(v8::internal::compiler::MachineGraph*, v8::internal::Zone*, v8::base::Optional<std::__1::function<void (v8::internal::compiler::Node*)> >, v8::internal::compiler::Schedule*, bool)",93957343532944,93957343533264],["v8::internal::compiler::GraphAssembler::IntPtrConstant(long)",93957343533456,93957343533524],["v8::internal::compiler::GraphAssembler::Int64Constant(long)",93957343533616,93957343533684],["v8::internal::compiler::GraphAssembler::AddNode(v8::internal::compiler::Node*)",93957343533904,93957343534046],["v8::internal::compiler::GraphAssembler::Float64Constant(double)",93957343534128,93957343534196],["v8::internal::compiler::JSGraphAssembler::Constant(v8::internal::compiler::ObjectRef const&)",93957343534288,93957343534359],["v8::internal::compiler::GraphAssembler::ExternalConstant(v8::internal::ExternalReference)",93957343534448,93957343534516],["v8::internal::compiler::GraphAssembler::LoadFramePointer()",93957343534608,93957343534784],["v8::internal::compiler::JSGraphAssembler::AllocateInOldGenerationStubConstant()",93957343535008,93957343535079],["v8::internal::compiler::JSGraphAssembler::AllocateRegularInOldGenerationStubConstant()",93957343535168,93957343535239],["v8::internal::compiler::JSGraphAssembler::BigIntMapConstant()",93957343535328,93957343535399],["v8::internal::compiler::JSGraphAssembler::EmptyStringConstant()",93957343535488,93957343535559],["v8::internal::compiler::JSGraphAssembler::FixedArrayMapConstant()",93957343535648,93957343535719],["v8::internal::compiler::JSGraphAssembler::HeapNumberMapConstant()",93957343535808,93957343535879],["v8::internal::compiler::JSGraphAssembler::NaNConstant()",93957343535968,93957343536039],["v8::internal::compiler::JSGraphAssembler::NullConstant()",93957343536128,93957343536199],["v8::internal::compiler::JSGraphAssembler::TheHoleConstant()",93957343536288,93957343536359],["rcmd_af",139871564387008,139871564389602],["iruserok",139871564390080,139871564390196],["rexec",139871564391680,139871564391696],["__internal_setnetgrent",139871564394528,139871564394647],["_Unwind_SetIP",139871565174912,139871565174920],["__register_frame_info_bases",139871565192800,139871565192969],["__deregister_frame_info_bases",139871565193232,139871565193522],["__gcc_personality_v0",139871565194672,139871565195410],["matherr",139871565284048,139871565284051],["fegetexceptflag",139871565284160,139871565284234],["fesetexceptflag",139871565284384,139871565284502],["fegetround",139871565284592,139871565284651],["v8::internal::Isolate::CurrentEmbeddedBlobCode()",93957336613744,93957336613757],["v8::internal::Isolate::FindPerThreadDataForThread(v8::internal::ThreadId)",93957336615136,93957336615583],["v8::internal::Isolate::Iterate(v8::internal::RootVisitor*)",93957336616032,93957336616049],["v8::internal::Isolate::PushStackTraceAndDie(void*, void*, void*, void*)",93957336616560,93957336616615],["v8::internal::GetStackTraceLimit(v8::internal::Isolate*, int*)",93957336617008,93957336617619],["v8::internal::(anonymous namespace)::CaptureStackTrace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::(anonymous namespace)::CaptureStackTraceOptions)",93957336617792,93957336620321],["v8::internal::Isolate::CaptureCurrentStackTrace(int, v8::StackTrace::StackTraceOptions)",93957336620496,93957336620558],["v8::internal::Isolate::GetDetailedStackTrace(v8::internal::Handle<v8::internal::JSObject>)",93957336620720,93957336621004],["v8::internal::ValueSerializer::WriteOneByteString(v8::internal::Vector<unsigned char const>)",93957339236192,93957339236409],["v8::internal::ValueSerializer::WriteJSArrayBufferView(v8::internal::JSArrayBufferView)",93957339249632,93957339250063],["v8::internal::ValueDeserializer::ReadUint32(unsigned int*)",93957339253696,93957339253783],["v8::internal::ValueDeserializer::ReadUtf8String()",93957339255792,93957339255934],["v8::internal::ValueDeserializer::ReadDenseJSArray()",93957339257648,93957339258650],["v8::internal::ValueDeserializer::ReadJSMap()",93957339260944,93957339261835],["v8::internal::ValueDeserializer::ReadJSError()",93957339263648,93957339264415],["v8::internal::ValueDeserializer::ReadString()",93957339265200,93957339265416],["v8::internal::ValueDeserializer::ReadJSObjectProperties(v8::internal::Handle<v8::internal::JSObject>, v8::internal::SerializationTag, bool)",93957339265856,93957339268394],["v8::internal::SetPropertiesFromKeyValuePairs(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>*, unsigned int)",93957339269808,93957339270062],["v8::internal::RootVisitor::RootName(v8::internal::Root)",93957339270368,93957339270407],["void v8::internal::RelocInfo::Visit<v8::internal::Serializer::ObjectSerializer>(v8::internal::Serializer::ObjectSerializer*)",93957339270496,93957339270665],["v8::internal::FuncNameInferrer::PushEnclosingName(v8::internal::AstRawString const*)",93957339270704,93957339270776],["v8::internal::FuncNameInferrer::PushVariableName(v8::internal::AstRawString const*)",93957339270848,93957339270906],["v8::internal::FuncNameInferrer::MakeNameFromStack()",93957339271024,93957339271421],["v8::internal::ImportAssertionsKeyComparer::operator()(v8::internal::AstRawString const*, v8::internal::AstRawString const*) const",93957339271520,93957339271540],["v8_inspector::protocol::Profiler::Profile::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342281920,93957342282354],["v8_inspector::protocol::Profiler::Frontend::preciseCoverageDeltaUpdate(double, v8_inspector::String16 const&, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Profiler::ScriptCoverage, std::__1::default_delete<v8_inspector::protocol::Profiler::ScriptCoverage> > > > > >)",93957342284592,93957342284967],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::start(v8_crdtp::Dispatchable const&)",93957342286736,93957342286888],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::stopPreciseCoverage(v8_crdtp::Dispatchable const&)",93957342288208,93957342288360],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::takeTypeProfile(v8_crdtp::Dispatchable const&)",93957342289056,93957342289544],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::disableCounters(v8_crdtp::Dispatchable const&)",93957342289712,93957342289864],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::enableRuntimeCallStats(v8_crdtp::Dispatchable const&)",93957342290368,93957342290523],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::getRuntimeCallStats(v8_crdtp::Dispatchable const&)",93957342290688,93957342291176],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsBigInt(v8::internal::compiler::Node*)",93957343418480,93957343418947],["v8::internal::compiler::EffectControlLinearizer::LowerNumberIsFinite(v8::internal::compiler::Node*)",93957343441792,93957343441865],["v8::internal::compiler::EffectControlLinearizer::LowerLoadStackArgument(v8::internal::compiler::Node*)",93957343456112,93957343456220],["v8::internal::compiler::EffectControlLinearizer::LowerDateNow(v8::internal::compiler::Node*)",93957343468048,93957343468256],["v8::internal::compiler::EffectControlLinearizer::BuildCheckedFloat64ToInt32(v8::internal::compiler::CheckForMinusZeroMode, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343473808,93957343474344],["v8::internal::compiler::EffectControlLinearizer::LowerStringComparison(v8::internal::Callable const&, v8::internal::compiler::Node*)",93957343477888,93957343478114],["void v8::internal::compiler::GraphAssembler::MergeState<>(v8::internal::compiler::GraphAssemblerLabel<0>*)",93957343481200,93957343482304],["v8::internal::compiler::EscapeAnalysisReducer::ReplaceNode(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343487584,93957343488091],["v8::internal::compiler::EscapeAnalysisReducer::Finalize()",93957343491664,93957343494547],["v8::internal::compiler::EscapeAnalysisReducer::~EscapeAnalysisReducer()",93957343495600,93957343495652],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::compiler::Node*, void*>*>, bool> std::__1::__hash_table<v8::internal::compiler::Node*, v8::internal::compiler::NodeHashCache::NodeHashCode, v8::internal::compiler::NodeHashCache::NodeEquals, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> >::__emplace_unique_key_args<v8::internal::compiler::Node*, v8::internal::compiler::Node* const&>(v8::internal::compiler::Node* const&, v8::internal::compiler::Node* const&)",93957343496960,93957343497902],["v8::internal::compiler::VariableTracker::MergeInputs(v8::internal::compiler::Node*)",93957343500320,93957343505752],["v8::internal::compiler::PersistentMap<v8::internal::compiler::Variable, v8::internal::compiler::Node*, v8::base::hash<v8::internal::compiler::Variable> >::iterator::operator++()",93957343507040,93957343507477],["v8::internal::compiler::EscapeAnalysisResult::GetReplacementOf(v8::internal::compiler::Node*)",93957343517136,93957343517222],["v8::internal::compiler::VirtualObject::VirtualObject(v8::internal::compiler::VariableTracker*, unsigned int, int)",93957343518256,93957343519508],["void std::__1::__tree<std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*>, std::__1::__map_value_compare<v8::internal::compiler::Variable, std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*>, std::__1::less<v8::internal::compiler::Variable>, true>, v8::internal::ZoneAllocator<std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*> > >::__assign_multi<std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*>, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*>, void*>*, long> >(std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*>, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*>, void*>*, long>, std::__1::__tree_const_iterator<std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*>, std::__1::__tree_node<std::__1::__value_type<v8::internal::compiler::Variable, v8::internal::compiler::Node*>, void*>*, long>)",93957343522128,93957343523146],["v8::internal::compiler::EscapeAnalysisTracker::Scope::GetVirtualObject(v8::internal::compiler::Node*)",93957343524576,93957343525613],["v8::internal::compiler::(anonymous namespace)::OffsetOfElementsAccess(v8::internal::compiler::Operator const*, v8::internal::compiler::Node*)",93957343526304,93957343526489],["v8::internal::compiler::SparseSidetable<v8::internal::compiler::VirtualObject*>::Set(v8::internal::compiler::Node const*, v8::internal::compiler::VirtualObject*)",93957343526960,93957343527403],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned int, v8::internal::compiler::VariableTracker::State>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned int, v8::internal::compiler::VariableTracker::State>, std::__1::__unordered_map_hasher<unsigned int, std::__1::__hash_value_type<unsigned int, v8::internal::compiler::VariableTracker::State>, v8::base::hash<unsigned int>, std::__1::equal_to<unsigned int>, true>, std::__1::__unordered_map_equal<unsigned int, std::__1::__hash_value_type<unsigned int, v8::internal::compiler::VariableTracker::State>, std::__1::equal_to<unsigned int>, v8::base::hash<unsigned int>, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<unsigned int, v8::internal::compiler::VariableTracker::State> > >::__emplace_unique_key_args<unsigned int, std::__1::pair<unsigned int, v8::internal::compiler::VariableTracker::State> >(unsigned int const&, std::__1::pair<unsigned int, v8::internal::compiler::VariableTracker::State>&&)",93957343528368,93957343529333],["v8::internal::compiler::FeedbackSource::FeedbackSource(v8::internal::Handle<v8::internal::FeedbackVector>, v8::internal::FeedbackSlot)",93957343529360,93957343529372],["v8::internal::compiler::FeedbackSource::index() const",93957343529440,93957343529481],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::FeedbackSource const&)",93957343529520,93957343529618],["v8::internal::compiler::hash_value(v8::internal::compiler::FrameStateInfo const&)",93957343529712,93957343529815],["v8::internal::compiler::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::FrameStateInfo const&)",93957343529984,93957343530219],["v8::internal::compiler::(anonymous namespace)::CreateBuiltinContinuationFrameStateCommon(v8::internal::compiler::JSGraph*, v8::internal::compiler::FrameStateType, v8::internal::Builtins::Name, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node**, int, v8::internal::compiler::Node*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957343530640,93957343530905],["v8::internal::compiler::CreateJavaScriptBuiltinContinuationFrameState(v8::internal::compiler::JSGraph*, v8::internal::compiler::SharedFunctionInfoRef const&, v8::internal::Builtins::Name, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node* const*, int, v8::internal::compiler::Node*, v8::internal::compiler::ContinuationFrameStateMode)",93957343531056,93957343531597],["v8::internal::compiler::Frame::Frame(int)",93957343531664,93957343531709],["v8::internal::compiler::FrameAccessState::SetFrameAccessToDefault()",93957343531744,93957343531775],["v8::internal::compiler::GraphAssembler::BasicBlockUpdater::CopyForChange()",93957343531840,93957343532506],["v8::internal::compiler::GraphAssembler::BasicBlockUpdater::Finalize(v8::internal::compiler::BasicBlock*)",93957343532704,93957343532932],["v8::internal::compiler::GraphAssembler::~GraphAssembler()",93957343533264,93957343533356],["ether_ntoa",139871564383824,139871564383836],["rresvport",139871564389648,139871564389658],["iruserok_af",139871564389904,139871564390070],["__ivaliduser",139871564390208,139871564390305],["__multc3",139871565172016,139871565173976],["_Unwind_GetDataRelBase",139871565174992,139871565175000],["_Unwind_DeleteException",139871565185584,139871565185609],["__register_frame",139871565192992,139871565193034],["__register_frame_table",139871565193200,139871565193226],["__deregister_frame_info",139871565193536,139871565193541],["_Unwind_Find_FDE",139871565193600,139871565194195],["__emutls_get_address",139871565195696,139871565196075],["v8::internal::Object v8::internal::FutexEmulation::WaitAsync<int>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, int, bool, long)",93957336608320,93957336609660],["v8::internal::Isolate::ClearEmbeddedBlob()",93957336613808,93957336614130],["v8::internal::Isolate::FindOrAllocatePerThreadDataForThisThread()",93957336614560,93957336615102],["v8::internal::Isolate::get_address_from_id(v8::internal::IsolateAddressId)",93957336615616,93957336615632],["v8::internal::Isolate::IterateThread(v8::internal::ThreadVisitor*, char*)",93957336616000,93957336616022],["v8::internal::Isolate::RegisterTryCatchHandler(v8::TryCatch*)",93957336616064,93957336616077],["v8::internal::Isolate::PrintStack(v8::internal::StringStream*, v8::internal::Isolate::PrintStackMode)",93957336616112,93957336616556],["v8::internal::StackTraceFailureMessage::Print() volatile",93957336616624,93957336616679],["v8::internal::TransitionsAccessor::PutPrototypeTransition(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Map>)",93957339229648,93957339230470],["v8::internal::ValueSerializer::WriteSmi(v8::internal::Smi)",93957339237616,93957339237808],["v8::internal::ValueSerializer::WriteJSRegExp(v8::internal::Handle<v8::internal::JSRegExp>)",93957339246112,93957339246425],["v8::internal::ValueSerializer::WriteJSObjectSlow(v8::internal::Handle<v8::internal::JSObject>)",93957339252112,93957339252550],["v8::internal::ValueDeserializer::ReadHeader()",93957339253408,93957339253596],["v8::internal::ValueDeserializer::ReadObject()",93957339253968,93957339254315],["v8::internal::Handle<v8::internal::Object> v8::internal::FactoryBase<v8::internal::Factory>::NewNumberFromInt<(v8::internal::AllocationType)0>(int)",93957339255520,93957339255662],["v8::internal::ValueDeserializer::ReadTwoByteString()",93957339256096,93957339256272],["v8::internal::ValueDeserializer::ReadSparseJSArray()",93957339257088,93957339257644],["v8::internal::ValueDeserializer::ReadJSDate()",93957339258656,93957339259110],["v8::internal::ValueDeserializer::ReadJSRegExp()",93957339260672,93957339260938],["v8::internal::ValueDeserializer::ReadJSSet()",93957339261840,93957339262720],["v8::internal::ValueDeserializer::ReadTransferredJSArrayBuffer()",93957339263104,93957339263640],["v8::internal::ValueDeserializer::ReadWasmModuleTransfer()",93957339264416,93957339264647],["v8::internal::ValueDeserializer::ReadHostObject()",93957339264960,93957339265198],["v8::internal::ValueDeserializer::ReadExpectedString(v8::internal::Handle<v8::internal::String>)",93957339265424,93957339265760],["v8_inspector::protocol::HeapProfiler::CollectGarbageCallbackImpl::sendFailure(v8_crdtp::DispatchResponse const&)",93957342281296,93957342281315],["v8_inspector::protocol::Profiler::ScriptCoverage::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342282928,93957342283153],["v8_inspector::protocol::Profiler::Frontend::consoleProfileFinished(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >, std::__1::unique_ptr<v8_inspector::protocol::Profiler::Profile, std::__1::default_delete<v8_inspector::protocol::Profiler::Profile> >, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)",93957342284048,93957342284337],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::disable(v8_crdtp::Dispatchable const&)",93957342285392,93957342285544],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::setSamplingInterval(v8_crdtp::Dispatchable const&)",93957342286208,93957342286723],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::startPreciseCoverage(v8_crdtp::Dispatchable const&)",93957342286896,93957342287697],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::stop(v8_crdtp::Dispatchable const&)",93957342287872,93957342288196],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::stopTypeProfile(v8_crdtp::Dispatchable const&)",93957342288368,93957342288520],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedInt32Add(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343404736,93957343404923],["v8::internal::compiler::EffectControlLinearizer::LowerRestLength(v8::internal::compiler::Node*)",93957343425584,93957343425982],["v8::internal::compiler::EffectControlLinearizer::LowerStringSubstring(v8::internal::compiler::Node*)",93957343440016,93957343440396],["v8::internal::compiler::EffectControlLinearizer::LowerConvertTaggedHoleToUndefined(v8::internal::compiler::Node*)",93957343444480,93957343444859],["v8::internal::compiler::EffectControlLinearizer::LowerFastApiCall(v8::internal::compiler::Node*)",93957343450976,93957343453582],["v8::internal::compiler::EffectControlLinearizer::LowerFindOrderedHashMapEntry(v8::internal::compiler::Node*)",93957343457760,93957343458072],["v8::internal::compiler::EffectControlLinearizer::LowerFloat64RoundUp(v8::internal::compiler::Node*)",93957343465856,93957343467190],["void v8::internal::compiler::GraphAssembler::Bind<1ul>(v8::internal::compiler::GraphAssemblerLabel<1ul>*)",93957343469792,93957343469970],["v8::internal::compiler::EffectControlLinearizer::TryMigrateInstance(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343472864,93957343473367],["v8::internal::compiler::EffectControlLinearizer::BuildCheckedFloat64ToInt64(v8::internal::compiler::CheckForMinusZeroMode, v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343474656,93957343475197],["void v8::internal::compiler::GraphAssembler::Bind<2ul>(v8::internal::compiler::GraphAssemblerLabel<2ul>*)",93957343477296,93957343477486],["v8::internal::compiler::EffectControlLinearizer::TransitionElementsTo(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::ElementsKind, v8::internal::ElementsKind)",93957343478544,93957343478988],["v8::internal::compiler::JSGraphAssembler::~JSGraphAssembler()",93957343480928,93957343480956],["void v8::internal::compiler::GraphAssembler::GotoIfNot<>(v8::internal::compiler::Node*, v8::internal::compiler::GraphAssemblerLabel<0>*, v8::internal::compiler::BranchHint)",93957343484000,93957343484234],["void v8::internal::compiler::GraphAssembler::MergeState<v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::Object> >(v8::internal::compiler::GraphAssemblerLabel<2>*, v8::internal::TNode<v8::internal::UnionT<v8::internal::Smi, v8::internal::HeapNumber> >, v8::internal::TNode<v8::internal::Object>)",93957343485040,93957343487370],["v8::internal::compiler::EscapeAnalysisReducer::ReduceFrameStateInputs(v8::internal::compiler::Node*)",93957343488656,93957343489034],["v8::internal::compiler::EscapeAnalysisReducer::VerifyReplacement() const",93957343491456,93957343491660],["v8::internal::compiler::NodeHashCache::Constructor::Constructor(v8::internal::compiler::NodeHashCache*, v8::internal::compiler::Operator const*, int, v8::internal::compiler::Node**, v8::internal::compiler::Type)",93957343494560,93957343494966],["v8::internal::compiler::EscapeAnalysisReducer::~EscapeAnalysisReducer()",93957343495504,93957343495589],["v8::internal::compiler::EscapeAnalysisReducer::reducer_name() const",93957343495664,93957343495677],["std::__1::__hash_table<v8::internal::compiler::Node*, v8::internal::compiler::NodeHashCache::NodeHashCode, v8::internal::compiler::NodeHashCache::NodeEquals, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> >::__rehash(unsigned long)",93957343496064,93957343496947],["std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::compiler::Node*, void*>*> std::__1::__hash_table<v8::internal::compiler::Node*, v8::internal::compiler::NodeHashCache::NodeHashCode, v8::internal::compiler::NodeHashCache::NodeEquals, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> >::find<v8::internal::compiler::Node*>(v8::internal::compiler::Node* const&)",93957343497904,93957343498333],["v8::internal::compiler::VariableTracker::Scope::Scope(v8::internal::compiler::VariableTracker*, v8::internal::compiler::Node*, v8::internal::compiler::EffectGraphReducer::Reduction*)",93957343499712,93957343500317],["v8::internal::compiler::VariableTracker::Scope::~Scope()",93957343505760,93957343506272],["v8::internal::compiler::VariableTracker::State::Get(v8::internal::compiler::Variable) const",93957343506800,93957343507038],["v8::internal::compiler::EscapeAnalysis::Reduce(v8::internal::compiler::Node*, v8::internal::compiler::EffectGraphReducer::Reduction*)",93957343507488,93957343515917],["v8::internal::compiler::EscapeAnalysis::EscapeAnalysis(v8::internal::compiler::JSGraph*, v8::internal::TickCounter*, v8::internal::Zone*)",93957343516592,93957343517129],["v8::internal::compiler::EscapeAnalysisResult::GetVirtualObjectField(v8::internal::compiler::VirtualObject const*, int, v8::internal::compiler::Node*)",93957343517232,93957343517387],["v8::internal::compiler::EscapeAnalysisResult::GetVirtualObject(v8::internal::compiler::Node*)",93957343517824,93957343518246],["v8::internal::compiler::PersistentMap<v8::internal::compiler::Variable, v8::internal::compiler::Node*, v8::base::hash<v8::internal::compiler::Variable> >::operator==(v8::internal::compiler::PersistentMap<v8::internal::compiler::Variable, v8::internal::compiler::Node*, v8::base::hash<v8::internal::compiler::Variable> > const&) const",93957343519520,93957343520421],["v8::internal::compiler::PersistentMap<v8::internal::compiler::Variable, v8::internal::compiler::Node*, v8::base::hash<v8::internal::compiler::Variable> >::Set(v8::internal::compiler::Variable, v8::internal::compiler::Node*)",93957343520688,93957343522122],["v8::internal::compiler::EscapeAnalysisTracker::Scope::ValueInput(int)",93957343523152,93957343523357],["ether_aton",139871564382752,139871564382764],["ether_ntohost",139871564383904,139871564384252],["rcmd",139871564389616,139871564389635],["ruserok_af",139871564389664,139871564389887],["__extendxftf2",139871565163696,139871565164172],["_Unwind_GetCFA",139871565174752,139871565174760],["_Unwind_GetRegionStart",139871565174944,139871565174952],["_Unwind_RaiseException",139871565183632,139871565184537],["_Unwind_Resume_or_Rethrow",139871565185360,139871565185572],["_Unwind_Backtrace",139871565185616,139871565185883],["__register_frame_info",139871565192976,139871565192985],["__register_frame_info_table_bases",139871565193040,139871565193180],["v8::internal::FutexEmulation::HandleAsyncWaiterTimeout(v8::internal::FutexWaitListNode*)",93957336602672,93957336603220],["v8::internal::InterruptsScope::InterruptsScope(v8::internal::Isolate*, long, v8::internal::InterruptsScope::Mode)",93957336613024,93957336613083],["v8::internal::Isolate::CurrentEmbeddedBlobCodeSize()",93957336613776,93957336613788],["v8::internal::Isolate::embedded_blob_code_size() const",93957336614160,93957336614172],["v8::internal::Isolate::HashIsolateForEmbeddedBlob()",93957336614208,93957336614545],["v8::internal::Isolate::FindPerThreadDataForThisThread()",93957336615104,93957336615134],["v8::internal::Isolate::InitializeOncePerProcess()",93957336615584,93957336615612],["v8::internal::Isolate::Iterate(v8::internal::RootVisitor*, char*)",93957336615632,93957336615660],["v8::internal::SyntheticModule::FinishInstantiate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SyntheticModule>)",93957339219680,93957339219717],["v8::internal::TransitionArray::Sort()",93957339233152,93957339234653],["v8::internal::ValueSerializer::WriteUint32(unsigned int)",93957339236992,93957339237002],["v8::internal::ValueSerializer::WriteJSReceiver(v8::internal::Handle<v8::internal::JSReceiver>)",93957339238528,93957339239425],["v8::internal::ValueSerializer::WriteJSDate(v8::internal::JSDate)",93957339244512,93957339244850],["v8::internal::ValueSerializer::WriteJSSet(v8::internal::Handle<v8::internal::JSSet>)",93957339247632,93957339248582],["v8::internal::ValueSerializer::WriteWasmModule(v8::internal::Handle<v8::internal::WasmModuleObject>)",93957339251424,93957339251713],["void v8::internal::ValueSerializer::WriteVarint<unsigned char>(unsigned char)",93957339252960,93957339253185],["v8::internal::ValueDeserializer::~ValueDeserializer()",93957339253360,93957339253401],["v8::Maybe<unsigned int> v8::internal::ValueDeserializer::ReadVarint<unsigned int>()",93957339253600,93957339253686],["v8::internal::ValueDeserializer::TransferArrayBuffer(unsigned int, v8::internal::Handle<v8::internal::JSArrayBuffer>)",93957339253792,93957339253967],["v8::internal::ValueDeserializer::ReadObjectInternal()",93957339254320,93957339254896],["v8::Maybe<int> v8::internal::ValueDeserializer::ReadZigZag<int>()",93957339255408,93957339255509],["v8::internal::ValueDeserializer::ReadBigInt()",93957339255664,93957339255789],["v8::internal::ValueDeserializer::ReadOneByteString()",93957339255936,93957339256094],["v8::internal::ValueDeserializer::GetObjectWithID(unsigned int)",93957339256272,93957339256404],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::stopTrackingHeapObjects(v8_crdtp::Dispatchable const&)",93957342279184,93957342279773],["non-virtual thunk to v8_inspector::protocol::HeapProfiler::CollectGarbageCallbackImpl::~CollectGarbageCallbackImpl()",93957342281392,93957342281402],["v8_inspector::protocol::Profiler::CoverageRange::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342282512,93957342282675],["v8_inspector::protocol::Profiler::TypeProfileEntry::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342283280,93957342283473],["v8_inspector::protocol::Profiler::RuntimeCallCounterInfo::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342283872,93957342284042],["v8_inspector::protocol::Profiler::Frontend::consoleProfileStarted(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)",93957342284352,93957342284590],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned char>)",93957342284976,93957342285380],["v8_inspector::protocol::Profiler::DomainDispatcherImpl::enable(v8_crdtp::Dispatchable const&)",93957342285552,93957342285704],["v8::internal::compiler::(anonymous namespace)::RemoveRenameNode(v8::internal::compiler::Node*)",93957343392944,93957343393317],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedFloat64ToInt32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343411040,93957343411128],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsNonCallable(v8::internal::compiler::Node*)",93957343422112,93957343422725],["v8::internal::compiler::EffectControlLinearizer::LowerNewConsString(v8::internal::compiler::Node*)",93957343430048,93957343430968],["v8::internal::compiler::EffectControlLinearizer::LowerStringCharCodeAt(v8::internal::compiler::Node*)",93957343436208,93957343439237],["v8::internal::compiler::EffectControlLinearizer::LowerBigIntAdd(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343440640,93957343441035],["v8::internal::compiler::EffectControlLinearizer::LowerNumberIsSafeInteger(v8::internal::compiler::Node*)",93957343442944,93957343443277],["v8::internal::compiler::EffectControlLinearizer::LowerPlainPrimitiveToNumber(v8::internal::compiler::Node*)",93957343446576,93957343446619],["v8::internal::compiler::EffectControlLinearizer::LowerLoadMessage(v8::internal::compiler::Node*)",93957343450688,93957343450818],["v8::internal::compiler::EffectControlLinearizer::LowerLoadTypedElement(v8::internal::compiler::Node*)",93957343455392,93957343455644],["v8::internal::compiler::EffectControlLinearizer::LowerStoreDataViewElement(v8::internal::compiler::Node*)",93957343456496,93957343456990],["v8::internal::compiler::EffectControlLinearizer::LowerTransitionAndStoreNumberElement(v8::internal::compiler::Node*)",93957343459792,93957343460448],["v8::internal::compiler::EffectControlLinearizer::LowerAssertType(v8::internal::compiler::Node*)",93957343463696,93957343464089],["v8::internal::compiler::EffectControlLinearizer::LowerFloat64RoundTruncate(v8::internal::compiler::Node*)",93957343467296,93957343467379],["v8::internal::compiler::EffectControlLinearizer::ChangeFloat64ToTagged(v8::internal::compiler::Node*, v8::internal::compiler::CheckForMinusZeroMode)",93957343468544,93957343469607],["v8::internal::compiler::EffectControlLinearizer::ChangeInt32ToTagged(v8::internal::compiler::Node*)",93957343470320,93957343470837],["v8::internal::compiler::EffectControlLinearizer::MigrateInstanceOrDeopt(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::FeedbackSource const&, v8::internal::DeoptimizeReason)",93957343472352,93957343472854],["v8::internal::compiler::EffectControlLinearizer::BuildUint32Mod(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343473376,93957343473804],["v8::internal::compiler::EffectControlLinearizer::BuildCheckedFloat64ToIndex(v8::internal::compiler::FeedbackSource const&, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343474352,93957343474655],["v8::internal::compiler::EffectControlLinearizer::ChangeSmiToIntPtr(v8::internal::compiler::Node*)",93957343475200,93957343475323],["v8::internal::compiler::EffectControlLinearizer::BuildFloat64RoundTruncate(v8::internal::compiler::Node*)",93957343475984,93957343477294],["v8::internal::compiler::EffectControlLinearizer::LoadFromSeqString(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343477488,93957343477881],["v8::internal::compiler::EffectControlLinearizer::BuildReverseBytes(v8::internal::ExternalArrayType, v8::internal::compiler::Node*)",93957343478128,93957343478532],["v8::internal::compiler::EffectControlLinearizer::BuildFloat64RoundDown(v8::internal::compiler::Node*)",93957343478992,93957343480319],["v8::internal::compiler::LinearizeEffectControl(v8::internal::compiler::JSGraph*, v8::internal::compiler::Schedule*, v8::internal::Zone*, v8::internal::compiler::SourcePositionTable*, v8::internal::compiler::NodeOriginTable*, v8::internal::compiler::MaskArrayIndexEnable, v8::internal::compiler::MaintainSchedule, v8::internal::compiler::JSHeapBroker*)",93957343480672,93957343480920],["void v8::internal::compiler::GraphAssembler::GotoIf<>(v8::internal::compiler::Node*, v8::internal::compiler::GraphAssemblerLabel<0>*, v8::internal::compiler::BranchHint)",93957343480960,93957343481194],["void v8::internal::compiler::GraphAssembler::MergeState<v8::internal::TNode<v8::internal::HeapObject> >(v8::internal::compiler::GraphAssemblerLabel<1>*, v8::internal::TNode<v8::internal::HeapObject>)",93957343482304,93957343483991],["void v8::internal::compiler::GraphAssembler::GotoIf<v8::internal::TNode<v8::internal::HeapObject> >(v8::internal::compiler::Node*, v8::internal::compiler::GraphAssemblerLabel<1>*, v8::internal::compiler::BranchHint, v8::internal::TNode<v8::internal::HeapObject>)",93957343484240,93957343484484],["void v8::internal::compiler::GraphAssembler::BranchImpl<>(v8::internal::compiler::Node*, v8::internal::compiler::GraphAssemblerLabel<0>*, v8::internal::compiler::GraphAssemblerLabel<0>*, v8::internal::compiler::BranchHint, v8::internal::compiler::IsSafetyCheck)",93957343484752,93957343485030],["v8::internal::compiler::EscapeAnalysisReducer::EscapeAnalysisReducer(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::compiler::EscapeAnalysisResult, v8::internal::Zone*)",93957343487376,93957343487569],["v8::internal::compiler::EscapeAnalysisReducer::Reduce(v8::internal::compiler::Node*)",93957343488096,93957343488652],["v8::internal::compiler::EscapeAnalysisReducer::ReduceDeoptState(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::Deduplicator*)",93957343489040,93957343490655],["getservent",139871564381824,139871564382010],["ether_hostton",139871564383040,139871564383396],["ether_ntoa_r",139871564383840,139871564383897],["rresvport_af",139871564386576,139871564387003],["__floatditf",139871565159680,139871565159915],["__getf2",139871565168304,139871565168923],["__enable_execute_stack",139871565174128,139871565174129],["_Unwind_GetIP",139871565174864,139871565174872],["_Unwind_GetLanguageSpecificData",139871565174928,139871565174936],["_Unwind_FindEnclosingFunction",139871565174960,139871565174990],["_Unwind_GetTextRelBase",139871565175008,139871565175016],["_Unwind_ForcedUnwind",139871565184544,139871565184952],["v8::internal::FutexEmulation::WaitWasm32(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, int, long)",93957336599504,93957336599527],["v8::internal::FutexEmulation::NumUnresolvedAsyncPromisesForTesting(v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long)",93957336605552,93957336606202],["v8::internal::Object v8::internal::FutexEmulation::WaitSync<long>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, long, bool, long)",93957336609680,93957336611667],["v8::internal::DisableEmbeddedBlobRefcounting()",93957336613152,93957336613320],["v8::internal::Isolate::CurrentEmbeddedBlobData()",93957336613760,93957336613773],["v8::internal::Isolate::CurrentEmbeddedBlobDataSize()",93957336613792,93957336613804],["v8::internal::Isolate::embedded_blob_code() const",93957336614144,93957336614157],["v8::internal::Isolate::embedded_blob_data() const",93957336614176,93957336614189],["v8::internal::FlatStringReader::PostGarbageCollection()",93957339213664,93957339213727],["v8::internal::TransitionArray::Set(int, v8::internal::Name, v8::internal::MaybeObject)",93957339226976,93957339227292],["v8::internal::TransitionsAccessor::TraverseTransitionTreeInternal(void (*)(v8::internal::Map, void*), void*, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> >*)",93957339231488,93957339232346],["v8::internal::ValueSerializer::~ValueSerializer()",93957339235376,93957339235506],["v8::internal::ValueSerializer::WriteBigIntContents(v8::internal::BigInt)",93957339236656,93957339236858],["v8::internal::ValueSerializer::TransferArrayBuffer(unsigned int, v8::internal::Handle<v8::internal::JSArrayBuffer>)",93957339237040,93957339237072],["v8::internal::ValueSerializer::WriteHeapNumber(v8::internal::HeapNumber)",93957339238032,93957339238343],["v8::internal::ValueSerializer::ThrowDataCloneError(v8::internal::MessageTemplate, v8::internal::Handle<v8::internal::Object>)",93957339240048,93957339240291],["v8::internal::ValueSerializer::WriteJSObject(v8::internal::Handle<v8::internal::JSObject>)",93957339243184,93957339244503],["v8::internal::ValueSerializer::WriteJSPrimitiveWrapper(v8::internal::Handle<v8::internal::JSPrimitiveWrapper>)",93957339244864,93957339246103],["v8::internal::ValueSerializer::WriteJSMap(v8::internal::Handle<v8::internal::JSMap>)",93957339246432,93957339247622],["v8::internal::ValueSerializer::WriteJSArrayBuffer(v8::internal::Handle<v8::internal::JSArrayBuffer>)",93957339248592,93957339249618],["v8::internal::ValueSerializer::WriteJSError(v8::internal::Handle<v8::internal::JSObject>)",93957339250064,93957339251414],["v8::internal::ValueSerializer::WriteWasmMemory(v8::internal::Handle<v8::internal::WasmMemoryObject>)",93957339251728,93957339252111],["v8::internal::ValueSerializer::WriteJSObjectPropertiesSlow(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>)",93957339252560,93957339252947],["v8::internal::ValueDeserializer::ValueDeserializer(v8::internal::Isolate*, v8::internal::Vector<unsigned char const>, v8::ValueDeserializer::Delegate*)",93957339253200,93957339253276],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::disable(v8_crdtp::Dispatchable const&)",93957342275408,93957342275560],["v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode::~SamplingHeapProfileNode()",93957342280704,93957342280861],["v8_inspector::protocol::HeapProfiler::CollectGarbageCallbackImpl::~CollectGarbageCallbackImpl()",93957342281344,93957342281358],["v8_inspector::protocol::HeapProfiler::(anonymous namespace)::takeHeapSnapshotParams::deserializer_descriptor()::$_21::__invoke(v8_crdtp::DeserializerState*, void*)",93957342281440,93957342281479],["v8_inspector::protocol::Profiler::PositionTickInfo::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342282368,93957342282497],["v8_inspector::protocol::Profiler::FunctionCoverage::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342282688,93957342282918],["v8_inspector::protocol::Profiler::TypeObject::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342283168,93957342283266],["v8_inspector::protocol::Profiler::ScriptTypeProfile::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342283488,93957342283713],["v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > >::operator==(v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > > const&) const",93957343362448,93957343362881],["v8::internal::compiler::EffectControlLinearizer::LowerTruncateTaggedToBit(v8::internal::compiler::Node*)",93957343397584,93957343398018],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedInt64ToInt32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343409120,93957343409270],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedTaggedToTaggedPointer(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343414832,93957343414997],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsMinusZero(v8::internal::compiler::Node*)",93957343420592,93957343421183],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsString(v8::internal::compiler::Node*)",93957343423824,93957343424328],["v8::internal::compiler::EffectControlLinearizer::LowerUpdateInterruptBudget(v8::internal::compiler::Node*)",93957343427264,93957343427974],["v8::internal::compiler::EffectControlLinearizer::LowerDeadValue(v8::internal::compiler::Node*)",93957343432016,93957343432140],["v8::internal::compiler::EffectControlLinearizer::LowerStringLength(v8::internal::compiler::Node*)",93957343435824,93957343435943],["v8::internal::compiler::EffectControlLinearizer::LowerStringToLowerCaseIntl(v8::internal::compiler::Node*)",93957343439504,93957343439748],["v8::internal::compiler::EffectControlLinearizer::LowerStringLessThan(v8::internal::compiler::Node*)",93957343440480,93957343440551],["v8::internal::compiler::EffectControlLinearizer::LowerBigIntNegate(v8::internal::compiler::Node*)",93957343441440,93957343441681],["v8::internal::compiler::EffectControlLinearizer::LowerNumberIsInteger(v8::internal::compiler::Node*)",93957343442336,93957343442436],["v8::internal::compiler::EffectControlLinearizer::LowerCheckFloat64Hole(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343443856,93957343444290],["v8::internal::compiler::EffectControlLinearizer::LowerAllocate(v8::internal::compiler::Node*)",93957343446336,93957343446406],["v8::internal::compiler::EffectControlLinearizer::LowerPlainPrimitiveToFloat64(v8::internal::compiler::Node*)",93957343447504,93957343448389],["v8::internal::compiler::EffectControlLinearizer::LowerTransitionElementsKind(v8::internal::compiler::Node*)",93957343449920,93957343450673],["v8::internal::compiler::EffectControlLinearizer::LowerStoreMessage(v8::internal::compiler::Node*)",93957343450832,93957343450973],["v8::internal::compiler::EffectControlLinearizer::LowerLoadFieldByIndex(v8::internal::compiler::Node*)",93957343453584,93957343455389],["v8::internal::compiler::EffectControlLinearizer::LowerLoadDataViewElement(v8::internal::compiler::Node*)",93957343455648,93957343456106],["v8::internal::compiler::EffectControlLinearizer::LowerStoreTypedElement(v8::internal::compiler::Node*)",93957343456224,93957343456490],["v8::internal::compiler::EffectControlLinearizer::LowerStoreSignedSmallElement(v8::internal::compiler::Node*)",93957343456992,93957343457759],["v8::internal::compiler::EffectControlLinearizer::LowerFindOrderedHashMapEntryForInt32Key(v8::internal::compiler::Node*)",93957343458080,93957343459785],["v8::internal::compiler::EffectControlLinearizer::LowerTransitionAndStoreNonNumberElement(v8::internal::compiler::Node*)",93957343460448,93957343461391],["v8::internal::compiler::EffectControlLinearizer::LowerRuntimeAbort(v8::internal::compiler::Node*)",93957343463440,93957343463689],["v8::internal::compiler::EffectControlLinearizer::LowerConvertReceiver(v8::internal::compiler::Node*)",93957343464096,93957343465844],["v8::internal::compiler::EffectControlLinearizer::LowerFloat64RoundDown(v8::internal::compiler::Node*)",93957343467200,93957343467283],["v8::internal::compiler::EffectControlLinearizer::LowerFloat64RoundTiesEven(v8::internal::compiler::Node*)",93957343467392,93957343468036],["v8::internal::compiler::EffectControlLinearizer::LowerFoldConstant(v8::internal::compiler::Node*)",93957343468256,93957343468536],["void v8::internal::compiler::GraphAssembler::Bind<0ul>(v8::internal::compiler::GraphAssemblerLabel<0ul>*)",93957343469616,93957343469782],["v8::internal::compiler::EffectControlLinearizer::ChangeBitToTagged(v8::internal::compiler::Node*)",93957343469984,93957343470313],["v8::internal::compiler::EffectControlLinearizer::ChangeUint32ToTagged(v8::internal::compiler::Node*)",93957343470848,93957343471416],["getservbyname",139871564378784,139871564379238],["endservent",139871564382240,139871564382462],["ether_aton_r",139871564382768,139871564383025],["ether_line",139871564383408,139871564383812],["__subtf3",139871565152912,139871565157661],["__floattitf",139871565161056,139871565161933],["__trunctfdf2",139871565165376,139871565166717],["__eqtf2",139871565169568,139871565170112],["__powitf2",139871565173984,139871565174121],["_Unwind_GetGR",139871565174688,139871565174752],["_Unwind_SetGR",139871565174768,139871565174849],["_Unwind_GetIPInfo",139871565174880,139871565174904],["void std::__1::vector<v8::internal::FrameSummary, std::__1::allocator<v8::internal::FrameSummary> >::__push_back_slow_path<v8::internal::FrameSummary>(v8::internal::FrameSummary&&)",93957336597104,93957336597477],["v8::internal::FutexEmulation::CleanupAsyncWaiterPromise(v8::internal::FutexWaitListNode*)",93957336601344,93957336601682],["v8::internal::FutexEmulation::NumWaitersForTesting(v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long)",93957336604544,93957336605128],["v8::internal::ResolveAsyncWaiterPromisesTask::RunInternal()",93957336606240,93957336606254],["v8::internal::AsyncWaiterTimeoutTask::RunInternal()",93957336609664,93957336609678],["v8::internal::Object v8::internal::FutexEmulation::WaitAsync<long>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, long, bool, long)",93957336611680,93957336613023],["v8::internal::InterruptsScope::Intercept(v8::internal::StackGuard::InterruptFlag)",93957336613088,93957336613150],["v8::internal::FreeCurrentEmbeddedBlob()",93957336613328,93957336613731],["int v8::internal::(anonymous namespace)::StringMatchBackwards<unsigned short, unsigned short>(v8::internal::Vector<unsigned short const>, v8::internal::Vector<unsigned short const>, int)",93957339209632,93957339209770],["v8::internal::Handle<v8::internal::SwissNameDictionary> v8::internal::SwissNameDictionary::Rehash<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SwissNameDictionary>, int)",93957339215760,93957339216267],["v8::internal::TransitionsAccessor::HasSimpleTransitionTo(v8::internal::Map)",93957339221520,93957339221573],["v8::internal::TransitionsAccessor::SearchSpecial(v8::internal::Symbol)",93957339228240,93957339228564],["v8::internal::TransitionsAccessor::NumberOfTransitions()",93957339230736,93957339230800],["v8::internal::TransitionArray::SearchDetailsAndGetTarget(int, v8::internal::PropertyKind, v8::internal::PropertyAttributes)",93957339232656,93957339232902],["int v8::internal::BinarySearch<(v8::internal::SearchMode)0, v8::internal::TransitionArray>(v8::internal::TransitionArray*, v8::internal::Name, int, int*)",93957339234848,93957339235140],["void v8::internal::ValueSerializer::WriteVarint<unsigned int>(unsigned int)",93957339235696,93957339235972],["v8::internal::ValueSerializer::WriteTwoByteString(v8::internal::Vector<unsigned short const>)",93957339236416,93957339236642],["v8::internal::ValueSerializer::ExpandBuffer(unsigned long)",93957339236864,93957339236989],["v8::internal::ValueSerializer::Release()",93957339237008,93957339237037],["v8::internal::ValueSerializer::WriteObject(v8::internal::Handle<v8::internal::Object>)",93957339237072,93957339237603],["v8::internal::ValueSerializer::WriteOddball(v8::internal::Oddball)",93957339237808,93957339238025],["v8::internal::ValueSerializer::WriteBigInt(v8::internal::BigInt)",93957339238352,93957339238528],["v8::internal::ValueSerializer::WriteString(v8::internal::Handle<v8::internal::String>)",93957339239440,93957339240039],["v8::internal::ValueSerializer::WriteJSArray(v8::internal::Handle<v8::internal::JSArray>)",93957339240304,93957339242737],["v8_inspector::protocol::HeapProfiler::Frontend::addHeapSnapshotChunk(v8_inspector::String16 const&)",93957342273456,93957342273583],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::getSamplingProfile(v8_crdtp::Dispatchable const&)",93957342277424,93957342277748],["v8_inspector::protocol::HeapProfiler::Dispatcher::wire(v8_crdtp::UberDispatcher*, v8_inspector::protocol::HeapProfiler::Backend*)",93957342280368,93957342280536],["v8_inspector::protocol::HeapProfiler::SamplingHeapProfile::~SamplingHeapProfile()",93957342281024,93957342281181],["v8_inspector::protocol::HeapProfiler::CollectGarbageCallbackImpl::fallThrough()",93957342281328,93957342281342],["v8_inspector::protocol::HeapProfiler::CollectGarbageCallbackImpl::~CollectGarbageCallbackImpl()",93957342281360,93957342281392],["non-virtual thunk to v8_inspector::protocol::HeapProfiler::CollectGarbageCallbackImpl::~CollectGarbageCallbackImpl()",93957342281408,93957342281437],["v8_inspector::protocol::Profiler::ProfileNode::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342281488,93957342281907],["v8::internal::compiler::ControlEquivalence::RunUndirectedDFS(v8::internal::compiler::Node*)",93957343344608,93957343346226],["v8::internal::compiler::DeadCodeElimination::ReduceNode(v8::internal::compiler::Node*)",93957343371696,93957343371910],["v8::internal::compiler::EffectControlLinearizer::LowerChangeFloat64ToTaggedPointer(v8::internal::compiler::Node*)",93957343394928,93957343395123],["v8::internal::compiler::EffectControlLinearizer::LowerCheckNumber(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343402544,93957343403058],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedUint32Div(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343407584,93957343408162],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedUint32ToTaggedSigned(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343410032,93957343410258],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedTaggedToInt32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343412688,93957343413391],["v8::internal::compiler::EffectControlLinearizer::LowerTruncateTaggedToWord32(v8::internal::compiler::Node*)",93957343416576,93957343417112],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsConstructor(v8::internal::compiler::Node*)",93957343419504,93957343420038],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsNaN(v8::internal::compiler::Node*)",93957343421568,93957343422011],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsReceiver(v8::internal::compiler::Node*)",93957343423200,93957343423704],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsUndetectable(v8::internal::compiler::Node*)",93957343424848,93957343425406],["v8::internal::compiler::EffectControlLinearizer::LowerTypeOf(v8::internal::compiler::Node*)",93957343426240,93957343426487],["v8::internal::compiler::EffectControlLinearizer::LowerNewSmiOrObjectElements(v8::internal::compiler::Node*)",93957343428848,93957343429670],["v8::internal::compiler::EffectControlLinearizer::LowerSameValueNumbersOnly(v8::internal::compiler::Node*)",93957343431232,93957343431482],["v8::internal::compiler::EffectControlLinearizer::LowerStringFromSingleCharCode(v8::internal::compiler::Node*)",93957343432400,93957343433577],["v8::internal::compiler::EffectControlLinearizer::LowerStringFromCodePointAt(v8::internal::compiler::Node*)",93957343435568,93957343435818],["v8::internal::compiler::EffectControlLinearizer::LowerStringToNumber(v8::internal::compiler::Node*)",93957343435952,93957343436196],["v8::internal::compiler::EffectControlLinearizer::LowerStringCodePointAt(v8::internal::compiler::Node*)",93957343439248,93957343439498],["v8::internal::compiler::EffectControlLinearizer::LowerStringToUpperCaseIntl(v8::internal::compiler::Node*)",93957343439760,93957343440015],["v8::internal::compiler::EffectControlLinearizer::LowerStringEqual(v8::internal::compiler::Node*)",93957343440400,93957343440471],["v8::internal::compiler::EffectControlLinearizer::LowerStringLessThanOrEqual(v8::internal::compiler::Node*)",93957343440560,93957343440631],["v8::internal::compiler::EffectControlLinearizer::LowerBigIntSubtract(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343441040,93957343441435],["v8::internal::compiler::EffectControlLinearizer::LowerNumberIsFloat64Hole(v8::internal::compiler::Node*)",93957343441696,93957343441781],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsFiniteNumber(v8::internal::compiler::Node*)",93957343441872,93957343442326],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsInteger(v8::internal::compiler::Node*)",93957343442448,93957343442930],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsSafeInteger(v8::internal::compiler::Node*)",93957343443280,93957343443842],["v8::internal::compiler::EffectControlLinearizer::LowerCheckNotTaggedHole(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343444304,93957343444469],["v8::internal::compiler::EffectControlLinearizer::LowerCheckEqualsInternalizedString(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343444864,93957343446322],["v8::internal::compiler::EffectControlLinearizer::LowerCheckEqualsSymbol(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343446416,93957343446567],["v8::internal::compiler::EffectControlLinearizer::LowerPlainPrimitiveToWord32(v8::internal::compiler::Node*)",93957343446624,93957343447498],["v8::internal::compiler::EffectControlLinearizer::LowerEnsureWritableFastElements(v8::internal::compiler::Node*)",93957343448400,93957343449026],["endprotoent",139871564376976,139871564377198],["getservbyport",139871564380304,139871564380758],["setservent",139871564382016,139871564382234],["getservent_r",139871564382464,139871564382741],["__divmodti4",139871565140480,139871565140979],["__floatsitf",139871565158672,139871565158824],["__fixtfti",139871565160112,139871565160607],["__extendsftf2",139871565162688,139871565163148],["__trunctfsf2",139871565164176,139871565165364],["__trunctfxf2",139871565166720,139871565168291],["__letf2",139871565168928,139871565169563],["__divtc3",139871565170112,139871565172001],["v8::internal::InternalFrame::type() const",93957336596976,93957336596987],["v8::internal::FutexWaitList::RemoveNode(v8::internal::FutexWaitListNode*)",93957336598544,93957336598797],["v8::internal::FutexWaitListNode::FutexWaitListNode(std::__1::shared_ptr<v8::internal::BackingStore> const&, unsigned long, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Isolate*)",93957336599568,93957336600275],["v8::internal::FutexEmulation::ResolveAsyncWaiterPromises(v8::internal::Isolate*)",93957336601888,93957336602461],["v8::internal::FutexEmulation::IsolateDeinit(v8::internal::Isolate*)",93957336603232,93957336604535],["v8::internal::FutexEmulation::NumAsyncWaitersForTesting(v8::internal::Isolate*)",93957336605136,93957336605543],["v8::base::LazyInstanceImpl<v8::internal::FutexWaitList, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::FutexWaitList>, v8::base::DefaultConstructTrait<v8::internal::FutexWaitList>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::FutexWaitList> >::InitInstance(void*)",93957336606208,93957336606240],["v8::internal::Object v8::internal::FutexEmulation::WaitSync<int>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, int, bool, long)",93957336606256,93957336608305],["v8::internal::StringCharacterStream::StringCharacterStream(v8::internal::String, int)",93957339200336,93957339200635],["v8::internal::SeqString::Truncate(v8::internal::Handle<v8::internal::SeqString>, int)",93957339212784,93957339212967],["v8::internal::ConsStringIterator::Search(int*)",93957339214192,93957339214468],["v8::internal::SwissNameDictionary::Rehash(v8::internal::Isolate*)",93957339217472,93957339218384],["v8::internal::TemplateObjectDescription::GetTemplateObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::TemplateObjectDescription>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, int)",93957339220224,93957339221241],["v8::internal::Map::SetBackPointer(v8::internal::HeapObject, v8::internal::WriteBarrierMode)",93957339226416,93957339226821],["v8::internal::TransitionsAccessor::SearchTransition(v8::internal::Name, v8::internal::PropertyKind, v8::internal::PropertyAttributes)",93957339227616,93957339227893],["v8::internal::TransitionsAccessor::CanHaveMoreTransitions()",93957339228816,93957339228869],["v8::internal::TransitionsAccessor::GetPrototypeTransition(v8::internal::Handle<v8::internal::Object>)",93957339230480,93957339230723],["v8::internal::TransitionsAccessor::EnsureHasFullTransitionArray()",93957339230800,93957339231477],["v8::internal::TransitionArray::SearchDetails(int, v8::internal::PropertyKind, v8::internal::PropertyAttributes, int*)",93957339232352,93957339232655],["v8::internal::TransitionArray::SearchName(v8::internal::Name, int*)",93957339232912,93957339233148],["v8::internal::TransitionsAccessor::HasIntegrityLevelTransitionTo(v8::internal::Map, v8::internal::Symbol*, v8::internal::PropertyAttributes*)",93957339234656,93957339234846],["v8::internal::ValueSerializer::ValueSerializer(v8::internal::Isolate*, v8::ValueSerializer::Delegate*)",93957339235152,93957339235364],["v8::internal::ValueSerializer::WriteHeader()",93957339235520,93957339235690],["v8::internal::ValueSerializer::WriteRawBytes(void const*, unsigned long)",93957339235984,93957339236183],["v8_inspector::protocol::Debugger::(anonymous namespace)::stepIntoParams::deserializer_descriptor()::$_85::__invoke(v8_crdtp::DeserializerState*, void*)",93957342271952,93957342271966],["v8_inspector::protocol::HeapProfiler::Frontend::resetProfiles()",93957342274224,93957342274280],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::getHeapObjectId(v8_crdtp::Dispatchable const&)",93957342275728,93957342276466],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::startTrackingHeapObjects(v8_crdtp::Dispatchable const&)",93957342278304,93957342278834],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::takeHeapSnapshot(v8_crdtp::Dispatchable const&)",93957342279776,93957342280365],["v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode::~SamplingHeapProfileNode()",93957342280544,93957342280702],["v8_inspector::protocol::HeapProfiler::SamplingHeapProfile::~SamplingHeapProfile()",93957342280864,93957342281022],["v8_inspector::protocol::HeapProfiler::CollectGarbageCallbackImpl::sendSuccess()",93957342281184,93957342281288],["v8::internal::compiler::ConstantInDictionaryPrototypeChainDependency::GetHolderIfValid() const",93957343337648,93957343338017],["v8::internal::compiler::CsaLoadElimination::ReduceLoadFromObject(v8::internal::compiler::Node*, v8::internal::compiler::ObjectAccess const&)",93957343353632,93957343354479],["v8::internal::compiler::DeadCodeElimination::ReduceEnd(v8::internal::compiler::Node*)",93957343365984,93957343366357],["v8::internal::compiler::DecompressionOptimizer::ChangeLoad(v8::internal::compiler::Node*)",93957343375696,93957343375890],["v8::internal::compiler::EffectControlLinearizer::LowerChangeInt64ToTagged(v8::internal::compiler::Node*)",93957343393568,93957343394178],["v8::internal::compiler::EffectControlLinearizer::LowerChangeTaggedToInt32(v8::internal::compiler::Node*)",93957343395456,93957343395992],["v8::internal::compiler::EffectControlLinearizer::LowerCheckClosure(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343398800,93957343399180],["v8::internal::compiler::EffectControlLinearizer::LowerCheckString(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343403840,93957343404074],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedInt32Div(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343405120,93957343406643],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedInt32Mul(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343408368,93957343408959],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedUint32Bounds(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343409520,93957343409897],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedUint64ToInt32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343410656,93957343410792],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedTaggedSignedToInt32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343411232,93957343411502],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedTaggedToFloat64(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343414080,93957343414642],["v8::internal::compiler::EffectControlLinearizer::LowerChangeUint64ToBigInt(v8::internal::compiler::Node*)",93957343415152,93957343415919],["v8::internal::compiler::EffectControlLinearizer::LowerNumberToString(v8::internal::compiler::Node*)",93957343417680,93957343417924],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsCallable(v8::internal::compiler::Node*)",93957343418960,93957343419494],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsDetectableCallable(v8::internal::compiler::Node*)",93957343420048,93957343420582],["v8::internal::compiler::EffectControlLinearizer::LowerNumberIsMinusZero(v8::internal::compiler::Node*)",93957343421184,93957343421564],["v8::internal::compiler::EffectControlLinearizer::LowerNumberIsNaN(v8::internal::compiler::Node*)",93957343422016,93957343422101],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsNumber(v8::internal::compiler::Node*)",93957343422736,93957343423200],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsSmi(v8::internal::compiler::Node*)",93957343423712,93957343423813],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsSymbol(v8::internal::compiler::Node*)",93957343424336,93957343424840],["v8::internal::compiler::EffectControlLinearizer::LowerArgumentsLength(v8::internal::compiler::Node*)",93957343425408,93957343425571],["v8::internal::compiler::EffectControlLinearizer::LowerToBoolean(v8::internal::compiler::Node*)",93957343425984,93957343426231],["v8::internal::compiler::EffectControlLinearizer::LowerTierUpCheck(v8::internal::compiler::Node*)",93957343426496,93957343427249],["v8::internal::compiler::EffectControlLinearizer::LowerNewDoubleElements(v8::internal::compiler::Node*)",93957343427984,93957343428839],["v8::internal::compiler::EffectControlLinearizer::LowerNewArgumentsElements(v8::internal::compiler::Node*)",93957343429680,93957343430039],["v8::internal::compiler::EffectControlLinearizer::LowerSameValue(v8::internal::compiler::Node*)",93957343430976,93957343431226],["v8::internal::compiler::EffectControlLinearizer::LowerNumberSameValue(v8::internal::compiler::Node*)",93957343431488,93957343432014],["v8::internal::compiler::EffectControlLinearizer::LowerStringConcat(v8::internal::compiler::Node*)",93957343432144,93957343432392],["v8::internal::compiler::EffectControlLinearizer::LowerStringFromSingleCodePoint(v8::internal::compiler::Node*)",93957343433584,93957343435293],["getprotobynumber",139871564375264,139871564375702],["getprotobyname",139871564377488,139871564377926],["getservbyname_r",139871564379248,139871564380290],["getservbyport_r",139871564380768,139871564381810],["__floattisf",139871565138528,139871565138832],["__addtf3",139871565142128,139871565146957],["__fixtfsi",139871565158192,139871565158442],["__fixtfdi",139871565158976,139871565159349],["__floatunditf",139871565159920,139871565160106],["__fixunstfti",139871565160608,139871565161048],["__floatuntitf",139871565161936,139871565162676],["__extenddftf2",139871565163152,139871565163696],["v8::internal::StoreTransitionDescriptor::MapRegister()",93957336596848,93957336596859],["v8::internal::BuiltinContinuationFrame::type() const",93957336597040,93957336597051],["v8::internal::FutexWaitListNode::NotifyWake()",93957336597648,93957336597832],["v8::internal::FutexEmulation::WaitJs32(v8::internal::Isolate*, v8::internal::FutexEmulation::WaitMode, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, int, double)",93957336599088,93957336599293],["v8::internal::FutexEmulation::WaitWasm64(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, long, long)",93957336599536,93957336599559],["v8::internal::FutexEmulation::Wake(v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, unsigned int)",93957336600288,93957336601341],["v8::internal::FutexEmulation::ResolveAsyncWaiterPromise(v8::internal::FutexWaitListNode*)",93957336601696,93957336601882],["v8::internal::FutexWaitList::DeleteAsyncWaiterNode(v8::internal::FutexWaitListNode*)",93957336602464,93957336602661],["void v8::internal::CalculateLineEndsImpl<unsigned short>(std::__1::vector<int, std::__1::allocator<int> >*, v8::internal::Vector<unsigned short const>, bool)",93957339193536,93957339193783],["v8::internal::String::Compare(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957339205696,93957339206299],["bool v8::internal::StringToIndex<v8::internal::StringCharacterStream, unsigned int, (v8::internal::ToIndexMode)0>(v8::internal::StringCharacterStream*, unsigned int*)",93957339210912,93957339211576],["v8::internal::ThinString::Get(int) const",93957339213296,93957339213372],["v8::internal::ConsStringIterator::Continue(int*)",93957339213776,93957339213866],["v8::internal::ConsString v8::internal::String::VisitFlat<v8::internal::StringCharacterStream>(v8::internal::StringCharacterStream*, v8::internal::String, int, v8::internal::SharedStringAccessGuardIfNeeded const&)",93957339215008,93957339215442],["v8::internal::SwissNameDictionary::ClearDataTableEntry(v8::internal::Isolate*, int)",93957339216576,93957339216873],["v8::internal::SyntheticModule::ResolveExport(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SyntheticModule>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::MessageLocation, bool)",93957339218800,93957339219052],["v8::internal::SyntheticModule::Evaluate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SyntheticModule>)",93957339219728,93957339220214],["v8::internal::CachedTemplateObject::New(v8::internal::Isolate*, int, v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::HeapObject>)",93957339221248,93957339221515],["v8::internal::TransitionsAccessor::Insert(v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Map>, v8::internal::SimpleTransitionFlag)",93957339221584,93957339226406],["v8::internal::TransitionsAccessor::ReplaceTransitions(v8::internal::MaybeObject)",93957339226832,93957339226969],["v8::internal::TransitionArray::Search(v8::internal::PropertyKind, v8::internal::Name, v8::internal::PropertyAttributes, int*)",93957339227296,93957339227601],["v8::internal::TransitionArray::SearchAndGetTarget(v8::internal::PropertyKind, v8::internal::Name, v8::internal::PropertyAttributes)",93957339227904,93957339228230],["v8::internal::TransitionsAccessor::FindTransitionToDataProperty(v8::internal::Handle<v8::internal::Name>, v8::internal::TransitionsAccessor::RequestedLocation)",93957339228576,93957339228813],["v8::internal::TransitionArray::CompactPrototypeTransitionArray(v8::internal::Isolate*, v8::internal::WeakFixedArray)",93957339228880,93957339229645],["v8_inspector::protocol::Debugger::(anonymous namespace)::setBreakpointByUrlParams::deserializer_descriptor()::$_66::__invoke(v8_crdtp::DeserializerState*, void*)",93957342270960,93957342271115],["v8_inspector::protocol::Debugger::(anonymous namespace)::stepOverParams::deserializer_descriptor()::$_86::__invoke(v8_crdtp::DeserializerState*, void*)",93957342272784,93957342272794],["v8_inspector::protocol::HeapProfiler::Frontend::lastSeenObjectId(int, double)",93957342273824,93957342273995],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::addInspectedHeapObject(v8_crdtp::Dispatchable const&)",93957342274704,93957342275246],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::enable(v8_crdtp::Dispatchable const&)",93957342275568,93957342275720],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::getObjectByHeapObjectId(v8_crdtp::Dispatchable const&)",93957342276480,93957342277418],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::startSampling(v8_crdtp::Dispatchable const&)",93957342277760,93957342278304],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::stopSampling(v8_crdtp::Dispatchable const&)",93957342278848,93957342279172],["v8::internal::compiler::CompilationDependencies::CompilationDependencies(v8::internal::compiler::JSHeapBroker*, v8::internal::Zone*)",93957343332464,93957343332489],["v8::internal::compiler::FieldRepresentationDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343339568,93957343339636],["v8::internal::compiler::ControlFlowOptimizer::ControlFlowOptimizer(v8::internal::compiler::Graph*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::compiler::MachineOperatorBuilder*, v8::internal::TickCounter*, v8::internal::Zone*)",93957343349376,93957343349478],["v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > >::Get(std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> const&) const",93957343357536,93957343357846],["void std::__1::__tree<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, std::__1::__map_value_compare<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, std::__1::less<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> >, true>, v8::internal::ZoneAllocator<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo> > >::__assign_multi<std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, std::__1::__tree_node<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, void*>*, long> >(std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, std::__1::__tree_node<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, void*>*, long>, std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, std::__1::__tree_node<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, void*>*, long>)",93957343364176,93957343365258],["v8::internal::compiler::DeadCodeElimination::ReducePhi(v8::internal::compiler::Node*)",93957343369056,93957343369779],["v8::internal::compiler::DeadCodeElimination::reducer_name() const",93957343373280,93957343373293],["v8::internal::compiler::(anonymous namespace)::UpdateBlockControl(v8::internal::compiler::BasicBlock*, v8::internal::compiler::(anonymous namespace)::BlockEffectControlMap*)",93957343389008,93957343389302],["v8::internal::compiler::EffectControlLinearizer::LowerChangeInt31ToTaggedSigned(v8::internal::compiler::Node*)",93957343393376,93957343393505],["v8::internal::compiler::EffectControlLinearizer::LowerChangeUint64ToTagged(v8::internal::compiler::Node*)",93957343394240,93957343394834],["v8::internal::compiler::EffectControlLinearizer::LowerChangeTaggedSignedToInt64(v8::internal::compiler::Node*)",93957343395296,93957343395369],["v8::internal::compiler::EffectControlLinearizer::LowerChangeTaggedToInt64(v8::internal::compiler::Node*)",93957343396544,93957343397034],["v8::internal::compiler::EffectControlLinearizer::LowerTruncateTaggedToFloat64(v8::internal::compiler::Node*)",93957343398192,93957343398728],["v8::internal::compiler::EffectControlLinearizer::LowerDynamicCheckMaps(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343400752,93957343401756],["v8::internal::compiler::EffectControlLinearizer::LowerCheckReceiverOrNullOrUndefined(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343403312,93957343403614],["v8::internal::compiler::EffectControlLinearizer::LowerCheckInternalizedString(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343404368,93957343404631],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedInt32Sub(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343404928,93957343405115],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedInt32Mod(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343406656,93957343407580],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedUint32Mod(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343408176,93957343408367],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedInt32ToTaggedSigned(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343408960,93957343409115],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedInt64ToTaggedSigned(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343409280,93957343409511],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedUint32ToInt32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343409904,93957343410030],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedUint64Bounds(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343410272,93957343410649],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedUint64ToTaggedSigned(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343410800,93957343411026],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedFloat64ToInt64(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343411136,93957343411224],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedTaggedToArrayIndex(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343411504,93957343412673],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedTaggedToInt64(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343413392,93957343414066],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedTaggedToTaggedSigned(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343414656,93957343414821],["v8::internal::compiler::EffectControlLinearizer::LowerBigIntAsUintN(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343415008,93957343415140],["v8::internal::compiler::EffectControlLinearizer::LowerTruncateBigIntToUint64(v8::internal::compiler::Node*)",93957343415920,93957343416574],["v8::internal::compiler::EffectControlLinearizer::LowerCheckedTruncateTaggedToWord32(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343417120,93957343417672],["v8::internal::compiler::EffectControlLinearizer::LowerObjectIsArrayBufferView(v8::internal::compiler::Node*)",93957343417936,93957343418470],["setnetent",139871564373408,139871564373626],["getprotoent",139871564376560,139871564376746],["getprotoent_r",139871564377200,139871564377477],["getprotobyname_r",139871564377936,139871564378769],["__fixunsdfdi",139871565137472,139871565137519],["__floatuntidf",139871565139408,139871565139624],["__umodti3",139871565141248,139871565141534],["__multf3",139871565150128,139871565152785],["__unordtf2",139871565157664,139871565158189],["__fixunstfsi",139871565158448,139871565158671],["__floatunsitf",139871565158832,139871565158966],["__fixunstfdi",139871565159360,139871565159675],["v8::internal::BuiltinContinuationFrameInfo::BuiltinContinuationFrameInfo(int, v8::internal::CallInterfaceDescriptor const&, v8::internal::RegisterConfiguration const*, bool, v8::internal::DeoptimizeKind, v8::internal::BuiltinContinuationMode, v8::internal::FrameInfoKind)",93957336596528,93957336596729],["v8::internal::StoreDescriptor::SlotRegister()",93957336596912,93957336596923],["v8::internal::JavaScriptFrame::fp_register()",93957336597008,93957336597019],["v8::internal::ConstructFrame::type() const",93957336597072,93957336597083],["v8::internal::FutexWaitListNode::~FutexWaitListNode()",93957336597488,93957336597633],["v8::internal::FutexEmulation::NotifyAsyncWaiter(v8::internal::FutexWaitListNode*)",93957336597840,93957336598531],["v8::internal::FutexWaitList::AddNode(v8::internal::FutexWaitListNode*)",93957336598800,93957336599077],["v8::internal::FutexEmulation::WaitJs64(v8::internal::Isolate*, v8::internal::FutexEmulation::WaitMode, v8::internal::Handle<v8::internal::JSArrayBuffer>, unsigned long, long, double)",93957336599296,93957336599501],["v8::internal::StringTable::Capacity() const",93957339189616,93957339189628],["v8::internal::ExternalTwoByteString::SetResource(v8::internal::Isolate*, v8::String::ExternalStringResource const*)",93957339197552,93957339197701],["v8::internal::String::ToCString(v8::internal::AllowNullsFlag, v8::internal::RobustnessFlag, int, int, int*)",93957339202096,93957339203699],["v8::internal::String::LastIndexOf(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957339208480,93957339209147],["v8::internal::String::ComputeAndSetHash()",93957339209920,93957339210707],["bool v8::internal::StringToIndex<v8::internal::StringCharacterStream, unsigned long, (v8::internal::ToIndexMode)1>(v8::internal::StringCharacterStream*, unsigned long*)",93957339211776,93957339212597],["v8::internal::SeqTwoByteString::clear_padding()",93957339213024,93957339213075],["v8::internal::ExternalString::ExternalPayloadSize() const",93957339213472,93957339213521],["v8::internal::ConsStringIterator::Initialize(v8::internal::ConsString, int)",93957339213728,93957339213764],["v8::internal::ConsStringIterator::NextLeaf(bool*)",93957339213872,93957339214179],["v8::internal::String::AddressOfCharacterAt(int, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&)",93957339214480,93957339214995],["void std::__1::vector<int, std::__1::allocator<int> >::emplace_back<unsigned int>(unsigned int&&)",93957339215456,93957339215748],["v8::internal::SwissNameDictionary::DeleteEntry(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SwissNameDictionary>, v8::internal::InternalIndex)",93957339216272,93957339216575],["v8::internal::SwissNameDictionary::EqualsForTesting(v8::internal::SwissNameDictionary)",93957339216880,93957339217464],["v8::internal::SyntheticModule::SetExport(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SyntheticModule>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957339218384,93957339218793],["v8::internal::SyntheticModule::PrepareInstantiate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SyntheticModule>, v8::Local<v8::Context>)",93957339219056,93957339219679],["v8_crdtp::ProtocolTypeTraits<std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >*)",93957342268912,93957342269120],["v8_inspector::protocol::Runtime::(anonymous namespace)::setCustomObjectFormatterEnabledParams::deserializer_descriptor()::$_120::__invoke(v8_crdtp::DeserializerState*, void*)",93957342271600,93957342271610],["v8_crdtp::ProtocolTypeTraits<std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > > > >*)",93957342272240,93957342272440],["v8_inspector::protocol::HeapProfiler::SamplingHeapProfileSample::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342273072,93957342273239],["v8_inspector::protocol::HeapProfiler::Frontend::heapStatsUpdate(std::__1::unique_ptr<std::__1::vector<int, std::__1::allocator<int> >, std::__1::default_delete<std::__1::vector<int, std::__1::allocator<int> > > >)",93957342273584,93957342273819],["v8_inspector::protocol::HeapProfiler::Frontend::reportHeapSnapshotProgress(int, int, v8_crdtp::detail::ValueMaybe<bool>)",93957342274000,93957342274215],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned char>)",93957342274288,93957342274692],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::collectGarbage(v8_crdtp::Dispatchable const&)",93957342275248,93957342275404],["v8::internal::compiler::Operator1<float, v8::internal::compiler::OpEqualTo<float>, v8::internal::compiler::OpHash<float> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343328624,93957343328695],["v8::internal::compiler::CompilationDependencies::Commit(v8::internal::Handle<v8::internal::Code>)",93957343335072,93957343335374],["v8::internal::compiler::ProtectorDependency::IsValid() const",93957343338896,93957343338921],["v8::internal::compiler::SourcePositionTable::PrintJson(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957343340208,93957343340505],["v8::internal::compiler::ControlEquivalence::DFSPush(v8::internal::ZoneStack<v8::internal::compiler::ControlEquivalence::DFSStackEntry>&, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::ControlEquivalence::DFSDirection)",93957343347632,93957343347997],["v8::internal::compiler::ControlFlowOptimizer::TryBuildSwitch(v8::internal::compiler::Node*)",93957343350464,93957343352096],["v8::internal::compiler::CsaLoadElimination::ReduceEffectPhi(v8::internal::compiler::Node*)",93957343355648,93957343356677],["v8::internal::compiler::CsaLoadElimination::TruncateAndExtend(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::MachineType)",93957343360192,93957343360722],["v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > >::double_iterator::operator++()",93957343363328,93957343363853],["v8::internal::compiler::DeadCodeElimination::DeadCodeElimination(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::Graph*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::Zone*)",93957343365536,93957343365630],["v8::internal::compiler::DeadCodeElimination::ReduceLoopExit(v8::internal::compiler::Node*)",93957343368512,93957343368788],["v8::internal::compiler::DeadCodeElimination::ReduceDeoptimizeOrReturnOrTerminateOrTailCall(v8::internal::compiler::Node*)",93957343370464,93957343371276],["v8::internal::compiler::DeadCodeElimination::ReducePureNode(v8::internal::compiler::Node*)",93957343372192,93957343372481],["v8::internal::compiler::DecompressionOptimizer::MaybeMarkAndQueueForRevisit(v8::internal::compiler::Node*, v8::internal::compiler::DecompressionOptimizer::State)",93957343373392,93957343374298],["v8::internal::compiler::DecompressionOptimizer::Reduce()",93957343376096,93957343376291],["v8::internal::compiler::EffectControlLinearizer::ProcessNode(v8::internal::compiler::Node*, v8::internal::compiler::Node**)",93957343389600,93957343390310],["v8::internal::compiler::EffectControlLinearizer::LowerChangeBitToTagged(v8::internal::compiler::Node*)",93957343393328,93957343393367],["v8::internal::compiler::EffectControlLinearizer::LowerChangeInt32ToTagged(v8::internal::compiler::Node*)",93957343393520,93957343393559],["v8::internal::compiler::EffectControlLinearizer::LowerChangeUint32ToTagged(v8::internal::compiler::Node*)",93957343394192,93957343394231],["v8::internal::compiler::EffectControlLinearizer::LowerChangeFloat64ToTagged(v8::internal::compiler::Node*)",93957343394848,93957343394914],["v8::internal::compiler::EffectControlLinearizer::LowerChangeTaggedSignedToInt32(v8::internal::compiler::Node*)",93957343395136,93957343395289],["v8::internal::compiler::EffectControlLinearizer::LowerChangeTaggedToBit(v8::internal::compiler::Node*)",93957343395376,93957343395445],["v8::internal::compiler::EffectControlLinearizer::LowerChangeTaggedToUint32(v8::internal::compiler::Node*)",93957343396000,93957343396536],["v8::internal::compiler::EffectControlLinearizer::LowerChangeTaggedToTaggedSigned(v8::internal::compiler::Node*)",93957343397040,93957343397574],["v8::internal::compiler::EffectControlLinearizer::LowerTruncateTaggedPointerToBit(v8::internal::compiler::Node*)",93957343398032,93957343398182],["v8::internal::compiler::EffectControlLinearizer::LowerPoisonIndex(v8::internal::compiler::Node*)",93957343398736,93957343398790],["v8::internal::compiler::EffectControlLinearizer::LowerCheckMaps(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343399184,93957343400750],["v8::internal::compiler::EffectControlLinearizer::LowerCompareMaps(v8::internal::compiler::Node*)",93957343401760,93957343402532],["v8::internal::compiler::EffectControlLinearizer::LowerCheckReceiver(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343403072,93957343403308],["v8::internal::compiler::EffectControlLinearizer::LowerCheckSymbol(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343403616,93957343403835],["v8::internal::compiler::EffectControlLinearizer::LowerCheckBigInt(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343404080,93957343404360],["v8::internal::compiler::EffectControlLinearizer::LowerCheckIf(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343404640,93957343404735],["getnetbyaddr",139871564371040,139871564371542],["getnetent_r",139871564373856,139871564374149],["getprotobynumber_r",139871564375712,139871564376545],["setprotoent",139871564376752,139871564376970],["__divsc3",139871565135136,139871565135775],["__fixxfti",139871565137728,139871565137789],["__floattixf",139871565139136,139871565139181],["__divti3",139871565139712,139871565140075],["__udivti3",139871565140992,139871565141240],["__udivmodti4",139871565141536,139871565141975],["__divtf3",139871565146960,139871565150125],["__negtf2",139871565152800,139871565152897],["v8::internal::JsToWasmFrame::Iterate(v8::internal::RootVisitor*) const",93957336593536,93957336593652],["v8::internal::ApiGetterDescriptor::CallbackRegister()",93957336596784,93957336596795],["v8::internal::BuiltinFrame::type() const",93957336596880,93957336596891],["v8::internal::RegExpBytecodeGenerator::Implementation()",93957336596944,93957336596955],["v8::base::OS::ActivationFrameAlignment()",93957336596992,93957336597003],["v8::internal::WasmExitFrame::type() const",93957336597024,93957336597035],["v8::internal::JavaScriptBuiltinContinuationWithCatchFrame::type() const",93957336597056,93957336597067],["v8::base::LazyInstanceImpl<v8::internal::ICStats, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::ICStats>, v8::base::DefaultConstructTrait<v8::internal::ICStats>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::ICStats> >::InitInstance(void*)",93957336597088,93957336597098],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntry<v8::internal::Isolate, v8::internal::SequentialStringKey<unsigned short> >(v8::internal::Isolate*, v8::internal::SequentialStringKey<unsigned short>*, unsigned int) const",93957339184016,93957339184281],["v8::internal::StringTable::IterateElements(v8::internal::RootVisitor*)",93957339192208,93957339192244],["void v8::internal::String::WriteToFlat<unsigned char>(v8::internal::String, unsigned char*, int, int, v8::internal::SharedStringAccessGuardIfNeeded const&)",93957339194720,93957339195533],["v8::internal::String::StringShortPrint(v8::internal::StringStream*)",93957339198528,93957339199043],["v8::internal::String::ToArrayIndex(unsigned long)",93957339200848,93957339201069],["v8::internal::String::SlowEquals(v8::internal::String) const",93957339203744,93957339204650],["v8::internal::String::IndexOf(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, int)",93957339206384,93957339207211],["int v8::internal::(anonymous namespace)::StringMatchBackwards<unsigned short, unsigned char>(v8::internal::Vector<unsigned short const>, v8::internal::Vector<unsigned char const>, int)",93957339209296,93957339209434],["v8::internal::String::HasOneBytePrefix(v8::internal::Vector<char const>)",93957339209776,93957339209905],["v8::internal::String::SlowAsArrayIndex(unsigned int*)",93957339210720,93957339210905],["v8::internal::String::SlowAsIntegerIndex(unsigned long*)",93957339211584,93957339211769],["v8::internal::String::PrintOn(_IO_FILE*)",93957339212608,93957339212772],["v8::internal::SeqOneByteString::clear_padding()",93957339212976,93957339213019],["v8::internal::ConsString::Get(int) const",93957339213088,93957339213294],["v8::internal::SlicedString::Get(int) const",93957339213376,93957339213459],["v8::internal::FlatStringReader::FlatStringReader(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957339213536,93957339213650],["v8_inspector::protocol::Debugger::(anonymous namespace)::getPossibleBreakpointsParams::deserializer_descriptor()::$_44::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268144,93957342268283],["v8_crdtp::ProtocolTypeTraits<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> > > >*)",93957342269712,93957342270009],["v8_inspector::protocol::Runtime::StackTraceId::deserializer_descriptor()::$_66::__invoke(v8_crdtp::DeserializerState*, void*)",93957342271280,93957342271426],["v8_inspector::protocol::Debugger::(anonymous namespace)::setVariableValueParams::deserializer_descriptor()::$_80::__invoke(v8_crdtp::DeserializerState*, void*)",93957342271776,93957342271790],["v8_crdtp::ProtocolTypeTraits<v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > > >, void>::Deserialize(v8_crdtp::DeserializerState*, v8_crdtp::detail::PtrMaybe<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > > >*)",93957342271968,93957342272230],["v8_crdtp::ProtocolTypeTraits<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::LocationRange, std::__1::default_delete<v8_inspector::protocol::Debugger::LocationRange> > > >*)",93957342272448,93957342272770],["v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342272800,93957342273057],["v8_inspector::protocol::HeapProfiler::SamplingHeapProfile::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342273248,93957342273441],["v8::internal::compiler::Operator::Equals(v8::internal::compiler::Operator const*) const",93957343326128,93957343326145],["v8::internal::compiler::Operator1<v8::internal::compiler::TypedStateValueInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TypedStateValueInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::TypedStateValueInfo> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343329792,93957343329862],["v8::internal::compiler::CompilationDependencies::DependOnArrayBufferDetachingProtector()",93957343334032,93957343334129],["v8::internal::compiler::InitialMapDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343336544,93957343336613],["v8::internal::compiler::FieldConstnessDependency::IsValid() const",93957343338528,93957343338621],["v8::internal::compiler::InitialMapInstanceSizePredictionDependency::PrepareInstall() const",93957343339216,93957343339338],["v8::internal::compiler::SourcePositionTable::AddDecorator()",93957343339904,93957343339991],["v8::internal::compiler::Node::ReplaceInput(int, v8::internal::compiler::Node*)",93957343341392,93957343341539],["v8::internal::compiler::ControlEquivalence::VisitBackedge(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::ControlEquivalence::DFSDirection)",93957343346912,93957343347170],["v8::internal::compiler::ControlEquivalence::DetermineParticipationEnqueue(v8::internal::ZoneQueue<v8::internal::compiler::Node*>&, v8::internal::compiler::Node*)",93957343348288,93957343348640],["v8::internal::compiler::ControlFlowOptimizer::Enqueue(v8::internal::compiler::Node*)",93957343349936,93957343350114],["v8::internal::compiler::CsaLoadElimination::Reduce(v8::internal::compiler::Node*)",93957343352352,93957343353338],["v8::internal::compiler::CsaLoadElimination::PropagateInputState(v8::internal::compiler::Node*)",93957343355072,93957343355370],["v8::internal::compiler::CsaLoadEliminationHelpers::OffsetMayAlias(v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::compiler::Node*, v8::internal::MachineRepresentation)",93957343357008,93957343357211],["v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > >::iterator::operator++()",93957343359248,93957343359683],["v8::internal::compiler::CsaLoadElimination::~CsaLoadElimination()",93957343362400,93957343362429],["v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > >::ZipIterable::begin()",93957343362896,93957343363328],["v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > >::iterator::begin(v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > >::FocusedTree const*, v8::internal::compiler::CsaLoadElimination::FieldInfo)",93957343363856,93957343364166],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, std::__1::__tree_node<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, std::__1::__map_value_compare<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo>, std::__1::less<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> >, true>, v8::internal::ZoneAllocator<std::__1::__value_type<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo> > >::__emplace_unique_key_args<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> const&>, std::__1::tuple<> >(std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> const&>&&, std::__1::tuple<>&&)",93957343365264,93957343365533],["v8::internal::compiler::DeadCodeElimination::Reduce(v8::internal::compiler::Node*)",93957343365632,93957343365969],["v8::internal::compiler::DeadCodeElimination::ReduceLoopOrMerge(v8::internal::compiler::Node*)",93957343366368,93957343368501],["v8::internal::compiler::DeadCodeElimination::ReduceUnreachableOrIfException(v8::internal::compiler::Node*)",93957343368800,93957343369047],["v8::internal::compiler::DeadCodeElimination::ReduceEffectPhi(v8::internal::compiler::Node*)",93957343369792,93957343370457],["v8::internal::compiler::DeadCodeElimination::ReduceBranchOrSwitch(v8::internal::compiler::Node*)",93957343371280,93957343371682],["v8::internal::compiler::DeadCodeElimination::RemoveLoopExit(v8::internal::compiler::Node*)",93957343371920,93957343372191],["v8::internal::compiler::DeadCodeElimination::ReduceEffectNode(v8::internal::compiler::Node*)",93957343372496,93957343373273],["v8::internal::compiler::DecompressionOptimizer::DecompressionOptimizer(v8::internal::Zone*, v8::internal::compiler::Graph*, v8::internal::compiler::CommonOperatorBuilder*, v8::internal::compiler::MachineOperatorBuilder*)",93957343373296,93957343373388],["v8::internal::compiler::DecompressionOptimizer::MarkNodeInputs(v8::internal::compiler::Node*)",93957343374304,93957343375689],["v8::internal::compiler::DecompressionOptimizer::ChangeNodes()",93957343375904,93957343376092],["v8::internal::compiler::EffectControlLinearizer::Run()",93957343376304,93957343388998],["v8::internal::compiler::(anonymous namespace)::BlockEffectControlMap::For(v8::internal::compiler::BasicBlock*, v8::internal::compiler::BasicBlock*)",93957343389312,93957343389590],["v8::internal::compiler::EffectControlLinearizer::TryWireInStateEffect(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957343390320,93957343392940],["gethostent",139871564370064,139871564370274],["getnetbyname",139871564372688,139871564373174],["endnetent",139871564373632,139871564373854],["getnetbyname_r",139871564374160,139871564375252],["__paritydi2",139871565132336,139871565132390],["__bswapdi2",139871565137280,139871565137287],["__fixsfti",139871565137632,139871565137679],["__fixunsdfti",139871565137952,139871565138095],["__floattidf",139871565138832,139871565139136],["__floatuntisf",139871565139184,139871565139400],["__floatuntixf",139871565139632,139871565139703],["__modti3",139871565140080,139871565140470],["v8::internal::WasmFrame::position() const",93957336592016,93957336592309],["v8::internal::InternalFrame::Iterate(v8::internal::RootVisitor*) const",93957336596048,93957336596374],["v8_inspector::(anonymous namespace)::HeapStatsStream::WriteAsciiChunk(char*, int)",93957336596752,93957336596763],["v8::internal::StubFrame::type() const",93957336596816,93957336596827],["v8::internal::BaselineFrame::type() const",93957336596864,93957336596875],["v8::internal::FieldType::None()",93957336596896,93957336596907],["v8::internal::JavaScriptFrame::context_register()",93957336596928,93957336596939],["v8::internal::WasmCompileLazyFrame::type() const",93957336596960,93957336596971],["v8::internal::StackFrameInfo::GetMethodName(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339164432,93957339167561],["v8::internal::Handle<v8::internal::String> v8::internal::StringTable::LookupKey<v8::internal::SequentialStringKey<unsigned char>, v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::SequentialStringKey<unsigned char>*)",93957339186608,93957339187246],["v8::internal::StringTable::TryStringToIndexOrLookupExisting(v8::internal::Isolate*, unsigned long)",93957339190992,93957339191237],["v8::internal::InternalizedStringKey::AsHandle(v8::internal::Isolate*)",93957339192336,93957339192510],["void v8::internal::String::WriteToFlat<unsigned short>(v8::internal::String, unsigned short*, int, int, v8::internal::SharedStringAccessGuardIfNeeded const&)",93957339193840,93957339194661],["v8::internal::String::MakeThin(v8::internal::Isolate*, v8::internal::String)",93957339196352,93957339197070],["v8::internal::ExternalOneByteString::SetResource(v8::internal::Isolate*, v8::String::ExternalOneByteStringResource const*)",93957339198192,93957339198341],["v8::internal::String::PrintUC16(v8::internal::StringStream*, int, int)",93957339199136,93957339199833],["v8::internal::StringCharacterStream::GetNext()",93957339200640,93957339200835],["v8::internal::String::ToNumber(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957339201072,93957339202088],["v8::internal::String::ToCString(v8::internal::AllowNullsFlag, v8::internal::RobustnessFlag, int*)",93957339203712,93957339203733],["v8::internal::String::SlowEquals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957339204656,93957339205696],["v8::internal::String::ToValidIndex(v8::internal::Object)",93957339206304,93957339206371],["v8::internal::String::GetSubstitution(v8::internal::Isolate*, v8::internal::String::Match*, v8::internal::Handle<v8::internal::String>, int)",93957339207216,93957339208478],["int v8::internal::(anonymous namespace)::StringMatchBackwards<unsigned char, unsigned char>(v8::internal::Vector<unsigned char const>, v8::internal::Vector<unsigned char const>, int)",93957339209152,93957339209289],["int v8::internal::(anonymous namespace)::StringMatchBackwards<unsigned char, unsigned short>(v8::internal::Vector<unsigned char const>, v8::internal::Vector<unsigned short const>, int)",93957339209440,93957339209626],["v8_inspector::protocol::Runtime::(anonymous namespace)::compileScriptParams::deserializer_descriptor()::$_87::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267680,93957342267694],["v8_inspector::protocol::Debugger::(anonymous namespace)::searchInContentParams::deserializer_descriptor()::$_54::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268528,93957342268567],["v8_inspector::protocol::Debugger::(anonymous namespace)::setBlackboxedRangesParams::deserializer_descriptor()::$_60::__invoke(v8_crdtp::DeserializerState*, void*)",93957342269488,93957342269502],["void std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > >::__emplace_back_slow_path<>()",93957342270160,93957342270903],["v8_inspector::protocol::Debugger::(anonymous namespace)::setBreakpointByUrlParams::deserializer_descriptor()::$_68::__invoke(v8_crdtp::DeserializerState*, void*)",93957342271120,93957342271266],["v8_inspector::protocol::HeapProfiler::(anonymous namespace)::getObjectByHeapObjectIdParams::deserializer_descriptor()::$_14::__invoke(v8_crdtp::DeserializerState*, void*)",93957342271440,93957342271586],["v8_inspector::protocol::Debugger::(anonymous namespace)::setReturnValueParams::deserializer_descriptor()::$_75::__invoke(v8_crdtp::DeserializerState*, void*)",93957342271616,93957342271762],["v8_inspector::protocol::Debugger::(anonymous namespace)::setVariableValueParams::deserializer_descriptor()::$_81::__invoke(v8_crdtp::DeserializerState*, void*)",93957342271792,93957342271940],["v8::internal::compiler::CommonOperatorBuilder::ExternalConstant(v8::internal::ExternalReference const&)",93957343309696,93957343309839],["v8::internal::compiler::Operator1<v8::internal::compiler::ParameterInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ParameterInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::ParameterInfo> >::Equals(v8::internal::compiler::Operator const*) const",93957343327296,93957343327325],["v8::internal::compiler::Operator1<v8::internal::compiler::RelocatablePtrConstantInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::RelocatablePtrConstantInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::RelocatablePtrConstantInfo> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343329184,93957343329315],["v8::internal::compiler::Operator1<v8::internal::compiler::FrameStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FrameStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::FrameStateInfo> >::Equals(v8::internal::compiler::Operator const*) const",93957343330496,93957343330528],["v8::internal::compiler::CompilationDependencies::DependOnPretenureMode(v8::internal::compiler::AllocationSiteRef const&)",93957343332976,93957343333143],["v8::internal::compiler::CompilationDependencies::DependOnPromiseHookProtector()",93957343334480,93957343334577],["v8::internal::compiler::CompilationDependencies::TransitionDependencyOffTheRecord(v8::internal::compiler::MapRef const&) const",93957343336064,93957343336159],["v8::internal::compiler::StableMapDependency::IsValid() const",93957343337152,93957343337181],["v8::internal::compiler::PretenureModeDependency::IsValid() const",93957343338400,93957343338446],["v8::internal::compiler::GlobalPropertyDependency::IsValid() const",93957343338704,93957343338802],["v8::internal::compiler::ElementsKindDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343339008,93957343339076],["v8::internal::compiler::TransitionDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343339376,93957343339441],["v8::internal::compiler::FieldTypeDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343339776,93957343339844],["v8::internal::compiler::SourcePositionTable::GetSourcePosition(v8::internal::compiler::Node*) const",93957343340048,93957343340090],["v8::internal::compiler::ConstantFoldingReducer::ConstantFoldingReducer(v8::internal::compiler::AdvancedReducer::Editor*, v8::internal::compiler::JSGraph*, v8::internal::compiler::JSHeapBroker*)",93957343340624,93957343340652],["v8::internal::compiler::ControlEquivalence::Run(v8::internal::compiler::Node*)",93957343341568,93957343341743],["v8::internal::compiler::ControlEquivalence::VisitMid(v8::internal::compiler::Node*, v8::internal::compiler::ControlEquivalence::DFSDirection)",93957343346240,93957343346899],["v8::internal::compiler::ControlEquivalence::VisitPost(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::ControlEquivalence::DFSDirection)",93957343347184,93957343347621],["v8::internal::compiler::ControlEquivalence::DFSPop(v8::internal::ZoneStack<v8::internal::compiler::ControlEquivalence::DFSStackEntry>&, v8::internal::compiler::Node*)",93957343348000,93957343348277],["std::__1::deque<v8::internal::compiler::ControlEquivalence::DFSStackEntry, v8::internal::RecyclingZoneAllocator<v8::internal::compiler::ControlEquivalence::DFSStackEntry> >::__add_back_capacity()",93957343348640,93957343349375],["v8::internal::compiler::ControlFlowOptimizer::Optimize()",93957343349488,93957343349926],["v8::internal::compiler::ControlFlowOptimizer::VisitNode(v8::internal::compiler::Node*)",93957343350128,93957343350456],["std::__1::pair<std::__1::__tree_iterator<int, std::__1::__tree_node<int, void*>*, long>, bool> std::__1::__tree<int, std::__1::less<int>, v8::internal::ZoneAllocator<int> >::__emplace_unique_key_args<int, int const&>(int const&, int const&)",93957343352096,93957343352338],["v8::internal::compiler::CsaLoadElimination::AbstractState::Print() const",93957343353344,93957343353627],["v8::internal::compiler::CsaLoadElimination::ReduceStoreToObject(v8::internal::compiler::Node*, v8::internal::compiler::ObjectAccess const&)",93957343354480,93957343355059],["v8::internal::compiler::CsaLoadElimination::ReduceCall(v8::internal::compiler::Node*)",93957343355376,93957343355639],["v8::internal::compiler::CsaLoadElimination::ReduceOtherNode(v8::internal::compiler::Node*)",93957343356688,93957343357006],["v8::internal::compiler::CsaLoadElimination::AbstractState::Merge(v8::internal::compiler::CsaLoadElimination::AbstractState const*, v8::internal::Zone*)",93957343357216,93957343357531],["v8::internal::compiler::PersistentMap<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo, v8::base::hash<std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*> > >::Set(std::__1::pair<v8::internal::compiler::Node*, v8::internal::compiler::Node*>, v8::internal::compiler::CsaLoadElimination::FieldInfo)",93957343357856,93957343359241],["v8::internal::compiler::CsaLoadElimination::AbstractState::KillField(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::MachineRepresentation, v8::internal::Zone*) const",93957343359696,93957343360183],["v8::internal::compiler::CsaLoadElimination::ComputeLoopState(v8::internal::compiler::Node*, v8::internal::compiler::CsaLoadElimination::AbstractState const*) const",93957343360736,93957343362396],["v8::internal::compiler::CsaLoadElimination::reducer_name() const",93957343362432,93957343362445],["gethostbyname",139871564366048,139871564366648],["endhostent",139871564370512,139871564370734],["getnetbyaddr_r",139871564371552,139871564372684],["getnetent",139871564373184,139871564373394],["__ffsdi2",139871565131936,139871565131958],["__powixf2",139871565132624,139871565132699],["__divxc3",139871565136464,139871565137260],["__clrsbti2",139871565137344,139871565137413],["__fixunsxfdi",139871565137520,139871565137623],["__fixdfti",139871565137680,139871565137728],["__fixunssfti",139871565137792,139871565137943],["__fixunsxfti",139871565138096,139871565138521],["v8::internal::BaselineFrame::GetPCForBytecodeOffset(int) const",93957336590672,93957336590758],["v8::internal::WasmFrame::Summarize(std::__1::vector<v8::internal::FrameSummary, std::__1::allocator<v8::internal::FrameSummary> >*) const",93957336592528,93957336592984],["v8::internal::JavaScriptFrame::Print(v8::internal::StringStream*, v8::internal::StackFrame::PrintMode, int) const",93957336593744,93957336595483],["v8::internal::UnoptimizedFrameInfo::GetStackSizeForAdditionalArguments(int)",93957336596464,93957336596477],["v8::internal::NativeFrame::type() const",93957336596736,93957336596747],["v8::internal::LoadDescriptor::ReceiverRegister()",93957336596768,93957336596779],["v8::internal::BuiltinExitFrame::type() const",93957336596800,93957336596811],["v8::internal::OptimizedFrame::type() const",93957336596832,93957336596843],["v8::internal::StackFrameInfo::IsPromiseAny() const",93957339154928,93957339154987],["v8::internal::StringComparator::State::Init(v8::internal::String)",93957339181264,93957339181434],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntryOrInsertionEntry<v8::internal::Isolate, v8::internal::SeqSubStringKey<v8::internal::SeqOneByteString> >(v8::internal::Isolate*, v8::internal::SeqSubStringKey<v8::internal::SeqOneByteString>*, unsigned int) const",93957339185264,93957339185555],["v8::internal::Handle<v8::internal::String> v8::internal::StringTable::LookupKey<v8::internal::StringTableInsertionKey, v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::StringTableInsertionKey*)",93957339188624,93957339189191],["v8::internal::StringTable::LookupString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957339189680,93957339190411],["unsigned long v8::internal::StringTable::Data::TryStringToIndexOrLookupExisting<unsigned short>(v8::internal::Isolate*, v8::internal::String, v8::internal::String, unsigned long)",93957339191696,93957339192151],["v8::internal::StringTable::NotifyElementsRemoved(int)",93957339192272,93957339192287],["v8::internal::String::GetFlatContent(v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&)",93957339192880,93957339193307],["void v8::internal::String::WriteToFlat<unsigned short>(v8::internal::String, unsigned short*, int, int)",93957339193792,93957339193837],["void v8::internal::String::WriteToFlat<unsigned char>(v8::internal::String, unsigned char*, int, int)",93957339194672,93957339194717],["v8::internal::String::SlowFlatten(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ConsString>, v8::internal::AllocationType)",93957339195536,93957339196346],["v8::internal::String::MakeExternal(v8::String::ExternalStringResource*)",93957339197072,93957339197538],["v8::internal::String::MakeExternal(v8::String::ExternalOneByteStringResource*)",93957339197712,93957339198178],["v8::internal::String::SupportsExternalization()",93957339198352,93957339198524],["v8::internal::String::LooksValid()",93957339199056,93957339199122],["v8::internal::String::PrintUC16(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, int)",93957339199840,93957339200332],["v8_inspector::protocol::Debugger::ScriptPosition::deserializer_descriptor()::$_4::__invoke(v8_crdtp::DeserializerState*, void*)",93957342266816,93957342266830],["v8_inspector::protocol::Debugger::(anonymous namespace)::evaluateOnCallFrameParams::deserializer_descriptor()::$_40::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267952,93957342267991],["v8_inspector::protocol::Debugger::(anonymous namespace)::getStackTraceParams::deserializer_descriptor()::$_49::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268336,93957342268478],["v8_inspector::protocol::Runtime::(anonymous namespace)::setMaxCallStackSizeToCaptureParams::deserializer_descriptor()::$_121::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268624,93957342268634],["void std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >::__emplace_back_slow_path<>()",93957342269120,93957342269475],["v8_crdtp::ProtocolTypeTraits<std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> > > > > >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::ScriptPosition, std::__1::default_delete<v8_inspector::protocol::Debugger::ScriptPosition> > > > > >*)",93957342269504,93957342269704],["std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > > > >::operator=(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Runtime::CallArgument, std::__1::default_delete<v8_inspector::protocol::Runtime::CallArgument> > > > > >&&)",93957342270016,93957342270146],["v8_inspector::protocol::Debugger::(anonymous namespace)::setBreakpointByUrlParams::deserializer_descriptor()::$_65::__invoke(v8_crdtp::DeserializerState*, void*)",93957342270912,93957342270957],["v8::internal::compiler::JSOperatorBuilder::ToNumber()",93957343305744,93957343305757],["v8::internal::compiler::CommonOperatorBuilder::TypedStateValues(v8::internal::ZoneVector<v8::internal::MachineType> const*, v8::internal::compiler::SparseInputMask)",93957343312528,93957343312700],["v8::internal::compiler::Operator1<v8::internal::compiler::RegionObservability, v8::internal::compiler::OpEqualTo<v8::internal::compiler::RegionObservability>, v8::internal::compiler::OpHash<v8::internal::compiler::RegionObservability> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343326512,93957343326630],["v8::internal::compiler::Operator1<v8::internal::StringConstantBase const*, v8::internal::compiler::OpEqualTo<v8::internal::StringConstantBase const*>, v8::internal::compiler::OpHash<v8::internal::StringConstantBase const*> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343327904,93957343327974],["v8::internal::compiler::Operator1<v8::internal::ExternalReference, v8::internal::compiler::OpEqualTo<v8::internal::ExternalReference>, v8::internal::compiler::OpHash<v8::internal::ExternalReference> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343328864,93957343328934],["v8::internal::compiler::Operator1<v8::internal::ZoneHandleSet<v8::internal::Map>, v8::internal::compiler::OpEqualTo<v8::internal::ZoneHandleSet<v8::internal::Map> >, v8::internal::compiler::OpHash<v8::internal::ZoneHandleSet<v8::internal::Map> > >::HashCode() const",93957343329552,93957343329570],["v8::internal::compiler::Operator1<v8::internal::compiler::ObjectStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ObjectStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::ObjectStateInfo> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343330144,93957343330264],["void v8::internal::compiler::CompilationDependencies::DependOnStablePrototypeChains<v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > >(v8::internal::ZoneVector<v8::internal::Handle<v8::internal::Map> > const&, v8::internal::WhereToStart, v8::base::Optional<v8::internal::compiler::JSObjectRef>)",93957343330736,93957343331345],["v8::internal::compiler::CompilationDependencies::DependOnPrototypeProperty(v8::internal::compiler::JSFunctionRef const&)",93957343332576,93957343332766],["v8::internal::compiler::CompilationDependencies::DependOnGlobalProperty(v8::internal::compiler::PropertyCellRef const&)",93957343333584,93957343333787],["v8::internal::compiler::CompilationDependencies::DependOnArraySpeciesProtector()",93957343334256,93957343334353],["v8::internal::compiler::CompilationDependencies::DependOnPromiseThenProtector()",93957343334704,93957343334801],["v8::internal::compiler::SlackTrackingPrediction::SlackTrackingPrediction(v8::internal::compiler::MapRef, int)",93957343335600,93957343335653],["v8::internal::compiler::CompilationDependencies::FieldTypeDependencyOffTheRecord(v8::internal::compiler::MapRef const&, v8::internal::InternalIndex) const",93957343336304,93957343336446],["v8::internal::compiler::PrototypePropertyDependency::PrepareInstall() const",93957343336912,93957343336975],["v8::internal::compiler::ConstantInDictionaryPrototypeChainDependency::IsValid() const",93957343337264,93957343337281],["v8::internal::compiler::ConstantInDictionaryPrototypeChainDependency::GetHolderIfValid() const::ValidationResult v8::internal::compiler::ConstantInDictionaryPrototypeChainDependency::GetHolderIfValid() const::{lambda(auto:1)#1}::operator()<v8::internal::NameDictionary>(v8::internal::NameDictionary) const",93957343338032,93957343338400],["v8::internal::compiler::PretenureModeDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343338448,93957343338516],["v8::internal::compiler::FieldConstnessDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343338624,93957343338692],["v8::internal::compiler::ProtectorDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343338816,93957343338884],["v8::internal::compiler::ElementsKindDependency::IsValid() const",93957343338928,93957343339002],["v8::internal::compiler::InitialMapInstanceSizePredictionDependency::IsValid() const",93957343339088,93957343339207],["v8::internal::compiler::TransitionDependency::IsValid() const",93957343339344,93957343339373],["v8::internal::compiler::FieldRepresentationDependency::IsValid() const",93957343339456,93957343339555],["v8::internal::compiler::FieldTypeDependency::IsValid() const",93957343339648,93957343339776],["v8::internal::compiler::SourcePositionTable::SourcePositionTable(v8::internal::compiler::Graph*)",93957343339856,93957343339891],["v8::internal::compiler::NodeOriginTable::RemoveDecorator()",93957343340000,93957343340036],["v8::internal::compiler::SourcePositionTable::SetSourcePosition(v8::internal::compiler::Node*, v8::internal::SourcePosition)",93957343340096,93957343340199],["v8::internal::compiler::SourcePositionTable::Decorator::Decorate(v8::internal::compiler::Node*)",93957343340512,93957343340619],["v8::internal::compiler::ConstantFoldingReducer::Reduce(v8::internal::compiler::Node*)",93957343340656,93957343341382],["v8::internal::compiler::ConstantFoldingReducer::reducer_name() const",93957343341552,93957343341565],["v8::internal::compiler::ControlEquivalence::DetermineParticipation(v8::internal::compiler::Node*)",93957343341744,93957343344599],["inet_network",139871564363648,139871564364111],["gethostbyname2_r",139871564367280,139871564368685],["sethostent",139871564370288,139871564370506],["gethostent_r",139871564370736,139871564371029],["__subvsi3",139871565131088,139871565131130],["__ctzdi2",139871565132048,139871565132056],["__powisf2",139871565132464,139871565132539],["__muldc3",139871565133392,139871565134093],["__divdc3",139871565135776,139871565136455],["__bswapsi2",139871565137264,139871565137269],["__clrsbdi2",139871565137296,139871565137330],["__fixunssfdi",139871565137424,139871565137467],["v8::internal::UnoptimizedFrame::ReadInterpreterRegister(int) const",93957336589456,93957336589471],["v8::internal::WasmFrame::Print(v8::internal::StringStream*, v8::internal::StackFrame::PrintMode, int) const",93957336591200,93957336591851],["v8::internal::WasmFrame::is_inspectable() const",93957336592384,93957336592473],["v8::internal::WasmDebugBreakFrame::Iterate(v8::internal::RootVisitor*) const",93957336593120,93957336593378],["v8::internal::WasmCompileLazyFrame::Iterate(v8::internal::RootVisitor*) const",93957336593664,93957336593739],["v8::internal::(anonymous namespace)::PrintFunctionSource(v8::internal::StringStream*, v8::internal::SharedFunctionInfo, v8::internal::Code)",93957336595488,93957336596045],["v8::internal::UnoptimizedFrameInfo::UnoptimizedFrameInfo(int, int, bool, bool, v8::internal::FrameInfoKind)",93957336596384,93957336596456],["v8::internal::ConstructStubFrameInfo::ConstructStubFrameInfo(int, bool, v8::internal::FrameInfoKind)",93957336596480,93957336596518],["v8::internal::SourceTextModule::AddAsyncParentModule(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339144688,93957339144927],["v8::internal::StackFrameInfo::GetEnclosingLineNumber(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339156016,93957339156227],["v8::internal::StackFrameInfo::ComputeLocation(v8::internal::Handle<v8::internal::StackFrameInfo>, v8::internal::MessageLocation*)",93957339168384,93957339169326],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntry<v8::internal::Isolate, v8::internal::SequentialStringKey<unsigned char> >(v8::internal::Isolate*, v8::internal::SequentialStringKey<unsigned char>*, unsigned int) const",93957339182848,93957339183113],["v8::internal::Handle<v8::internal::String> v8::internal::StringTable::LookupKey<v8::internal::SeqSubStringKey<v8::internal::SeqOneByteString>, v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::SeqSubStringKey<v8::internal::SeqOneByteString>*)",93957339184576,93957339184968],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntry<v8::internal::Isolate, v8::internal::SeqSubStringKey<v8::internal::SeqTwoByteString> >(v8::internal::Isolate*, v8::internal::SeqSubStringKey<v8::internal::SeqTwoByteString>*, unsigned int) const",93957339186016,93957339186293],["v8::internal::Handle<v8::internal::String> v8::internal::StringTable::LookupKey<v8::internal::SequentialStringKey<unsigned short>, v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::SequentialStringKey<unsigned short>*)",93957339187600,93957339188258],["v8::internal::StringTable::StringTable(v8::internal::Isolate*)",93957339189456,93957339189551],["v8::internal::StringTable::NumberOfElements() const",93957339189632,93957339189675],["v8::internal::Handle<v8::internal::String> v8::internal::StringTable::LookupKey<v8::internal::InternalizedStringKey, v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::InternalizedStringKey*)",93957339190416,93957339190991],["unsigned long v8::internal::StringTable::Data::TryStringToIndexOrLookupExisting<unsigned char>(v8::internal::Isolate*, v8::internal::String, v8::internal::String, unsigned long)",93957339191248,93957339191688],["v8::internal::StringTable::GetCurrentMemoryUsage() const",93957339192160,93957339192202],["v8::internal::StringTable::DropOldData()",93957339192256,93957339192271],["std::__1::unique_ptr<v8::internal::StringTable::Data, std::__1::default_delete<v8::internal::StringTable::Data> >::reset(v8::internal::StringTable::Data*)",93957339192288,93957339192336],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::String::CalculateLineEnds<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, bool)",93957339192512,93957339192877],["void v8::internal::CalculateLineEndsImpl<unsigned char>(std::__1::vector<int, std::__1::allocator<int> >*, v8::internal::Vector<unsigned char const>, bool)",93957339193312,93957339193526],["v8_inspector::protocol::Debugger::BreakLocation::~BreakLocation()",93957342266400,93957342266468],["v8_inspector::protocol::Debugger::(anonymous namespace)::setBreakpointParams::deserializer_descriptor()::$_63::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267312,93957342267449],["v8_inspector::protocol::Debugger::(anonymous namespace)::evaluateOnCallFrameParams::deserializer_descriptor()::$_38::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267744,93957342267783],["v8_inspector::protocol::Runtime::(anonymous namespace)::evaluateParams::deserializer_descriptor()::$_91::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268048,93957342268087],["v8_inspector::protocol::Debugger::(anonymous namespace)::getPossibleBreakpointsParams::deserializer_descriptor()::$_45::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268288,93957342268327],["v8_inspector::protocol::HeapProfiler::(anonymous namespace)::takeHeapSnapshotParams::deserializer_descriptor()::$_20::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268480,93957342268518],["v8_inspector::protocol::Debugger::(anonymous namespace)::searchInContentParams::deserializer_descriptor()::$_55::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268576,93957342268615],["v8_inspector::protocol::Debugger::(anonymous namespace)::setBlackboxPatternsParams::deserializer_descriptor()::$_59::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268640,93957342268903],["v8::internal::compiler::CommonOperatorBuilder::TrapIf(v8::internal::compiler::TrapId)",93957343306992,93957343307168],["v8::internal::compiler::CommonOperatorBuilder::Phi(v8::internal::MachineRepresentation, int)",93957343310928,93957343311285],["v8::internal::compiler::CommonOperatorBuilder::TailCall(v8::internal::compiler::CallDescriptor const*)",93957343313744,93957343313911],["v8::internal::compiler::Operator1<double, v8::internal::compiler::OpEqualTo<double>, v8::internal::compiler::OpHash<double> >::PrintToImpl(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343326288,93957343326360],["v8::internal::compiler::Operator1<v8::internal::compiler::DeoptimizeParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::DeoptimizeParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::DeoptimizeParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343327056,93957343327142],["v8::internal::compiler::Operator1<double, v8::internal::compiler::OpEqualTo<double>, v8::internal::compiler::OpHash<double> >::HashCode() const",93957343327536,93957343327572],["v8::internal::compiler::Operator1<v8::internal::compiler::IfValueParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::IfValueParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::IfValueParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343328240,93957343328312],["v8::internal::compiler::Operator1<v8::internal::ExternalReference, v8::internal::compiler::OpEqualTo<v8::internal::ExternalReference>, v8::internal::compiler::OpHash<v8::internal::ExternalReference> >::Equals(v8::internal::compiler::Operator const*) const",93957343328784,93957343328816],["v8::internal::compiler::Operator1<v8::internal::compiler::RelocatablePtrConstantInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::RelocatablePtrConstantInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::RelocatablePtrConstantInfo> >::Equals(v8::internal::compiler::Operator const*) const",93957343329040,93957343329087],["v8::internal::compiler::Operator1<v8::internal::compiler::SelectParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::SelectParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::SelectParameters> >::HashCode() const",93957343329408,93957343329461],["v8::internal::compiler::Operator1<v8::internal::compiler::TypedStateValueInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TypedStateValueInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::TypedStateValueInfo> >::Equals(v8::internal::compiler::Operator const*) const",93957343329664,93957343329706],["v8::internal::compiler::Operator1<v8::internal::compiler::ObjectStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ObjectStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::ObjectStateInfo> >::Equals(v8::internal::compiler::Operator const*) const",93957343330016,93957343330053],["v8::internal::compiler::Operator1<v8::internal::compiler::TypedObjectStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TypedObjectStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::TypedObjectStateInfo> >::HashCode() const",93957343330320,93957343330401],["v8::internal::compiler::Operator1<v8::internal::compiler::FrameStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FrameStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::FrameStateInfo> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343330576,93957343330646],["v8::internal::compiler::(anonymous namespace)::DependOnStablePrototypeChain(v8::internal::compiler::CompilationDependencies*, v8::internal::compiler::MapRef, v8::base::Optional<v8::internal::compiler::JSObjectRef>)",93957343331536,93957343331898],["v8::internal::compiler::CompilationDependencies::RecordDependency(v8::internal::compiler::CompilationDependency const*)",93957343332496,93957343332575],["v8::internal::compiler::CompilationDependencies::DependOnConstantInDictionaryPrototypeChain(v8::internal::compiler::MapRef const&, v8::internal::compiler::NameRef const&, v8::internal::compiler::ObjectRef const&, v8::internal::PropertyKind)",93957343332768,93957343332973],["v8::internal::compiler::CompilationDependencies::DependOnFieldConstness(v8::internal::compiler::MapRef const&, v8::internal::InternalIndex)",93957343333152,93957343333579],["v8::internal::compiler::CompilationDependencies::DependOnProtector(v8::internal::compiler::PropertyCellRef const&)",93957343333792,93957343334026],["v8::internal::compiler::CompilationDependencies::DependOnArrayIteratorProtector()",93957343334144,93957343334241],["v8::internal::compiler::CompilationDependencies::DependOnNoElementsProtector()",93957343334368,93957343334465],["v8::internal::compiler::CompilationDependencies::DependOnPromiseSpeciesProtector()",93957343334592,93957343334689],["v8::internal::compiler::CompilationDependencies::DependOnElementsKind(v8::internal::compiler::AllocationSiteRef const&)",93957343334816,93957343335064],["v8::internal::compiler::CompilationDependencies::DependOnElementsKinds(v8::internal::compiler::AllocationSiteRef const&)",93957343335376,93957343335589],["v8::internal::compiler::CompilationDependencies::DependOnInitialMapInstanceSizePrediction(v8::internal::compiler::JSFunctionRef const&)",93957343335664,93957343336059],["v8::internal::compiler::CompilationDependencies::FieldRepresentationDependencyOffTheRecord(v8::internal::compiler::MapRef const&, v8::internal::InternalIndex) const",93957343336160,93957343336294],["v8::internal::compiler::InitialMapDependency::IsValid() const",93957343336448,93957343336537],["v8::internal::compiler::PrototypePropertyDependency::IsValid() const",93957343336624,93957343336906],["v8::internal::compiler::PrototypePropertyDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343336976,93957343337151],["v8::internal::compiler::StableMapDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343337184,93957343337252],["v8::internal::compiler::ConstantInDictionaryPrototypeChainDependency::Install(v8::internal::MaybeObjectHandle const&) const",93957343337296,93957343337645],["inet_lnaof",139871564363392,139871564363432],["gethostbyaddr",139871564364144,139871564364662],["gethostbyname2",139871564366656,139871564367272],["gethostbyname_r",139871564368688,139871564370056],["__clear_cache",139871565130672,139871565130673],["__mulvti3",139871565131296,139871565131730],["__clzdi2",139871565132000,139871565132009],["__popcountdi2",139871565132096,139871565132186],["__parityti2",139871565132400,139871565132460],["__powidf2",139871565132544,139871565132621],["__mulsc3",139871565132704,139871565133388],["__mulxc3",139871565134096,139871565135134],["v8::internal::OptimizedFrame::Summarize(std::__1::vector<v8::internal::FrameSummary, std::__1::allocator<v8::internal::FrameSummary> >*) const",93957336586496,93957336588216],["v8::internal::InterpretedFrame::PatchBytecodeOffset(int)",93957336590016,93957336590054],["v8::internal::BaselineFrame::PatchContext(v8::internal::Context)",93957336591168,93957336591182],["v8::internal::WasmFrame::wasm_code() const",93957336591936,93957336591964],["v8::internal::WasmFrame::byte_offset() const",93957336592320,93957336592375],["v8::internal::WasmFrame::context() const",93957336592480,93957336592513],["v8::internal::WasmFrame::LookupExceptionHandlerInTable()",93957336592992,93957336593107],["v8::internal::WasmDebugBreakFrame::Print(v8::internal::StringStream*, v8::internal::StackFrame::PrintMode, int) const",93957336593392,93957336593527],["v8::internal::SourceTextModule::PrepareInstantiate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::Local<v8::Context>, v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::FixedArray>, v8::Local<v8::Module>), v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::Module>))",93957339129184,93957339131046],["std::__1::__hash_table<v8::internal::Handle<v8::internal::String>, v8::internal::StringHandleHash, v8::internal::StringHandleEqual, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::String> > >::__rehash(unsigned long)",93957339149200,93957339149995],["v8::internal::StackFrameInfo::GetLineNumber(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339155392,93957339155527],["v8::internal::StackFrameInfo::GetScriptNameOrSourceURL() const",93957339156832,93957339157013],["v8::internal::StackFrameInfo::GetTypeName(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339167776,93957339168098],["v8::internal::SerializeStackFrameInfo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339178752,93957339178819],["v8::internal::ConsString v8::internal::String::VisitFlat<v8::internal::StringComparator::State>(v8::internal::StringComparator::State*, v8::internal::String, int, v8::internal::SharedStringAccessGuardIfNeeded const&)",93957339182096,93957339182449],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntryOrInsertionEntry<v8::internal::Isolate, v8::internal::SequentialStringKey<unsigned char> >(v8::internal::Isolate*, v8::internal::SequentialStringKey<unsigned char>*, unsigned int) const",93957339183328,93957339183607],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntryOrInsertionEntry<v8::internal::Isolate, v8::internal::SequentialStringKey<unsigned short> >(v8::internal::Isolate*, v8::internal::SequentialStringKey<unsigned short>*, unsigned int) const",93957339184288,93957339184567],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntry<v8::internal::Isolate, v8::internal::SeqSubStringKey<v8::internal::SeqOneByteString> >(v8::internal::Isolate*, v8::internal::SeqSubStringKey<v8::internal::SeqOneByteString>*, unsigned int) const",93957339184976,93957339185253],["v8::internal::Handle<v8::internal::String> v8::internal::StringTable::LookupKey<v8::internal::SeqSubStringKey<v8::internal::SeqTwoByteString>, v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::SeqSubStringKey<v8::internal::SeqTwoByteString>*)",93957339185568,93957339186014],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntryOrInsertionEntry<v8::internal::Isolate, v8::internal::SeqSubStringKey<v8::internal::SeqTwoByteString> >(v8::internal::Isolate*, v8::internal::SeqSubStringKey<v8::internal::SeqTwoByteString>*, unsigned int) const",93957339186304,93957339186595],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntryOrInsertionEntry<v8::internal::LocalIsolate, v8::internal::SequentialStringKey<unsigned char> >(v8::internal::LocalIsolate*, v8::internal::SequentialStringKey<unsigned char>*, unsigned int) const",93957339187248,93957339187593],["v8::internal::InternalIndex v8::internal::StringTable::Data::FindEntryOrInsertionEntry<v8::internal::LocalIsolate, v8::internal::SequentialStringKey<unsigned short> >(v8::internal::LocalIsolate*, v8::internal::SequentialStringKey<unsigned short>*, unsigned int) const",93957339188272,93957339188617],["v8::internal::StringTable::Data::Resize(v8::internal::IsolateRoot, std::__1::unique_ptr<v8::internal::StringTable::Data, std::__1::default_delete<v8::internal::StringTable::Data> >, int)",93957339189200,93957339189445],["v8::internal::StringTable::~StringTable()",93957339189552,93957339189604],["v8_inspector::protocol::Debugger::CallFrame::~CallFrame()",93957342265520,93957342265820],["v8_inspector::protocol::Debugger::Location::deserializer_descriptor()::$_0::__invoke(v8_crdtp::DeserializerState*, void*)",93957342266720,93957342266759],["v8_crdtp::DeserializableProtocolObject<v8_inspector::protocol::Debugger::ScriptPosition>::Deserialize(v8_crdtp::DeserializerState*, v8_inspector::protocol::Debugger::ScriptPosition*)",93957342266944,93957342267189],["v8_inspector::protocol::HeapProfiler::(anonymous namespace)::startSamplingParams::deserializer_descriptor()::$_16::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267616,93957342267658],["v8_inspector::protocol::Debugger::(anonymous namespace)::evaluateOnCallFrameParams::deserializer_descriptor()::$_37::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267696,93957342267735],["v8_inspector::protocol::Debugger::(anonymous namespace)::evaluateOnCallFrameParams::deserializer_descriptor()::$_39::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267792,93957342267938],["v8_inspector::protocol::Debugger::(anonymous namespace)::evaluateOnCallFrameParams::deserializer_descriptor()::$_41::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268000,93957342268039],["v8_inspector::protocol::Debugger::(anonymous namespace)::evaluateOnCallFrameParams::deserializer_descriptor()::$_43::__invoke(v8_crdtp::DeserializerState*, void*)",93957342268096,93957342268142],["v8::internal::compiler::JSOperatorBuilder::CreateKeyValueArray()",93957343305872,93957343305886],["v8::internal::compiler::CommonOperatorBuilder::LoopExitValue(v8::internal::MachineRepresentation)",93957343308368,93957343308527],["v8::internal::compiler::CommonOperatorBuilder::CompressedHeapConstant(v8::internal::Handle<v8::internal::HeapObject> const&)",93957343310288,93957343310431],["v8::internal::compiler::CommonOperatorBuilder::EffectPhi(int)",93957343311744,93957343311919],["v8::internal::compiler::CommonOperatorBuilder::TypedObjectState(unsigned int, v8::internal::ZoneVector<v8::internal::MachineType> const*)",93957343313136,93957343313308],["v8::internal::compiler::CommonOperatorBuilder::CreateJSToWasmFrameStateFunctionInfo(v8::internal::compiler::FrameStateType, int, int, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957343314832,93957343314934],["v8::internal::compiler::Operator1<v8::internal::compiler::SelectParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::SelectParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::SelectParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957343326176,93957343326213],["v8::internal::compiler::Operator1<v8::internal::AllocationType, v8::internal::compiler::OpEqualTo<v8::internal::AllocationType>, v8::internal::compiler::OpHash<v8::internal::AllocationType> >::Equals(v8::internal::compiler::Operator const*) const",93957343326448,93957343326477],["v8::internal::compiler::Operator1<v8::internal::compiler::DeoptimizeParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::DeoptimizeParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::DeoptimizeParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957343326720,93957343326876],["v8::internal::compiler::Operator1<v8::internal::ConvertReceiverMode, v8::internal::compiler::OpEqualTo<v8::internal::ConvertReceiverMode>, v8::internal::compiler::OpHash<v8::internal::ConvertReceiverMode> >::HashCode() const",93957343327184,93957343327201],["v8::internal::compiler::Operator1<v8::internal::compiler::ParameterInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ParameterInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::ParameterInfo> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343327360,93957343327496],["v8::internal::compiler::Operator1<float, v8::internal::compiler::OpEqualTo<float>, v8::internal::compiler::OpHash<float> >::HashCode() const",93957343327664,93957343327699],["v8::internal::compiler::Operator1<v8::internal::compiler::IfValueParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::IfValueParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::IfValueParameters> >::Equals(v8::internal::compiler::Operator const*) const",93957343328080,93957343328125],["v8::internal::compiler::Operator1<int, v8::internal::compiler::OpEqualTo<int>, v8::internal::compiler::OpHash<int> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343328464,93957343328533],["v8::internal::compiler::Operator1<double, v8::internal::compiler::OpEqualTo<double>, v8::internal::compiler::OpHash<double> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343328704,93957343328775],["v8::internal::compiler::Operator1<v8::internal::ExternalReference, v8::internal::compiler::OpEqualTo<v8::internal::ExternalReference>, v8::internal::compiler::OpHash<v8::internal::ExternalReference> >::HashCode() const",93957343328816,93957343328852],["v8::internal::compiler::Operator1<v8::internal::Handle<v8::internal::HeapObject>, v8::internal::compiler::OpEqualTo<v8::internal::Handle<v8::internal::HeapObject> >, v8::internal::compiler::OpHash<v8::internal::Handle<v8::internal::HeapObject> > >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343328944,93957343329026],["v8::internal::compiler::Operator1<v8::internal::compiler::RelocatablePtrConstantInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::RelocatablePtrConstantInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::RelocatablePtrConstantInfo> >::HashCode() const",93957343329088,93957343329183],["v8::internal::compiler::Operator1<unsigned int, v8::internal::compiler::OpEqualTo<unsigned int>, v8::internal::compiler::OpHash<unsigned int> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343329328,93957343329397],["v8::internal::compiler::Operator1<v8::internal::compiler::SelectParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::SelectParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::SelectParameters> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343329472,93957343329542],["v8::internal::compiler::Operator1<v8::internal::compiler::Type, v8::internal::compiler::OpEqualTo<v8::internal::compiler::Type>, v8::internal::compiler::OpHash<v8::internal::compiler::Type> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343329584,93957343329654],["v8::internal::compiler::Operator1<v8::internal::compiler::TypedStateValueInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TypedStateValueInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::TypedStateValueInfo> >::HashCode() const",93957343329712,93957343329792],["v8::internal::compiler::Operator1<v8::internal::CreateArgumentsType, v8::internal::compiler::OpEqualTo<v8::internal::CreateArgumentsType>, v8::internal::compiler::OpHash<v8::internal::CreateArgumentsType> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343329872,93957343330009],["v8::internal::compiler::Operator1<v8::internal::compiler::ObjectStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ObjectStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::ObjectStateInfo> >::HashCode() const",93957343330064,93957343330144],["v8::internal::compiler::Operator1<v8::internal::compiler::TypedObjectStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TypedObjectStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::TypedObjectStateInfo> >::Equals(v8::internal::compiler::Operator const*) const",93957343330272,93957343330314],["v8::internal::compiler::Operator1<v8::internal::compiler::TypedObjectStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TypedObjectStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::TypedObjectStateInfo> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343330416,93957343330486],["v8::internal::compiler::Operator1<v8::internal::compiler::FrameStateInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::FrameStateInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::FrameStateInfo> >::HashCode() const",93957343330528,93957343330564],["v8::internal::compiler::CommonOperatorBuilder::Call(v8::internal::compiler::CallDescriptor const*)::CallOperator::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343330656,93957343330726],["v8::internal::compiler::CompilationDependencies::DependOnStableMap(v8::internal::compiler::MapRef const&)",93957343331360,93957343331521],["void v8::internal::compiler::CompilationDependencies::DependOnStablePrototypeChains<v8::internal::ZoneHandleSet<v8::internal::Map> >(v8::internal::ZoneHandleSet<v8::internal::Map> const&, v8::internal::WhereToStart, v8::base::Optional<v8::internal::compiler::JSObjectRef>)",93957343331904,93957343332459],["__stack_chk_fail",139871564363296,139871564363312],["inet_netof",139871564363520,139871564363558],["__h_errno_location",139871564364112,139871564364129],["gethostbyaddr_r",139871564364672,139871564366037],["__cpu_indicator_init",139871565129280,139871565130072],["__addvdi3",139871565130832,139871565130883],["__mulvdi3",139871565131216,139871565131247],["__negvsi2",139871565131808,139871565131850],["__ffsti2",139871565131968,139871565131998],["__clzti2",139871565132016,139871565132042],["__ctzti2",139871565132064,139871565132090],["__popcountti2",139871565132192,139871565132331],["v8::internal::FrameSummary::receiver() const",93957336585312,93957336585458],["v8::internal::OptimizedFrame::StackSlotOffsetRelativeToFp(int)",93957336589248,93957336589264],["v8::internal::InterpretedFrame::GetBytecodeOffset() const",93957336589968,93957336589992],["v8::internal::BaselineFrame::GetBytecodeOffset() const",93957336590096,93957336590186],["v8::internal::Code::GetBaselinePCForBytecodeOffset(int, v8::internal::BytecodeArray)",93957336590768,93957336591160],["v8::internal::BuiltinFrame::ComputeParametersCount() const",93957336591184,93957336591199],["v8::internal::WasmFrame::function_index() const",93957336591856,93957336591927],["v8::internal::WasmFrame::native_module() const",93957336591968,93957336592014],["v8::internal::SharedFunctionInfo::SetPosition(int, int)",93957339122784,93957339123182],["v8::internal::SourceTextModule::EvaluateMaybeAsync(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339139328,93957339139747],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, std::__1::__unordered_map_hasher<v8::internal::Handle<v8::internal::String>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, v8::internal::StringHandleHash, v8::internal::StringHandleEqual, true>, std::__1::__unordered_map_equal<v8::internal::Handle<v8::internal::String>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, v8::internal::StringHandleEqual, v8::internal::StringHandleHash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> > > >::rehash(unsigned long)",93957339146672,93957339147043],["std::__1::__hash_table<v8::internal::Handle<v8::internal::Module>, v8::internal::ModuleHandleHash, v8::internal::ModuleHandleEqual, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::Module> > >::rehash(unsigned long)",93957339152608,93957339152979],["v8::internal::StackFrameInfo::IsEval() const",93957339155152,93957339155300],["v8::internal::StackFrameInfo::GetSourcePosition(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339155760,93957339155827],["v8::internal::StackFrameInfo::GetScriptId() const",93957339156496,93957339156642],["v8::internal::(anonymous namespace)::FormatEvalOrigin(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957339157136,93957339164000],["v8::internal::SharedFunctionInfo::inferred_name()",93957339167568,93957339167765],["v8::internal::StackFrameInfo::ComputeSourcePosition(v8::internal::Handle<v8::internal::StackFrameInfo>, int)",93957339168112,93957339168376],["v8::internal::SerializeStackFrameInfo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::StackFrameInfo>, v8::internal::IncrementalStringBuilder*)",93957339169328,93957339178740],["v8::internal::(anonymous namespace)::AppendFileLocation(v8::internal::Isolate*, v8::internal::Handle<v8::internal::StackFrameInfo>, v8::internal::IncrementalStringBuilder*)",93957339178832,93957339181250],["v8::internal::StringComparator::Equals(v8::internal::String, v8::internal::String)",93957339181440,93957339182092],["v8::internal::Handle<v8::internal::String> v8::internal::StringTable::LookupKey<v8::internal::SequentialStringKey<unsigned char>, v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::SequentialStringKey<unsigned char>*)",93957339182464,93957339182833],["v8::internal::StringTable::EnsureCapacity(v8::internal::IsolateRoot, int)",93957339183120,93957339183320],["v8::internal::Handle<v8::internal::String> v8::internal::StringTable::LookupKey<v8::internal::SequentialStringKey<unsigned short>, v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::SequentialStringKey<unsigned short>*)",93957339183616,93957339184003],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::stepInto(v8_crdtp::Dispatchable const&)",93957342263312,93957342264134],["v8_inspector::protocol::Debugger::SearchMatch::~SearchMatch()",93957342266176,93957342266219],["v8_inspector::protocol::Debugger::DebugSymbols::~DebugSymbols()",93957342266560,93957342266628],["v8_inspector::protocol::Runtime::ObjectPreview::deserializer_descriptor()::$_16::__invoke(v8_crdtp::DeserializerState*, void*)",93957342266784,93957342266798],["v8_inspector::protocol::Debugger::LocationRange::deserializer_descriptor()::$_5::__invoke(v8_crdtp::DeserializerState*, void*)",93957342266832,93957342266941],["v8_inspector::protocol::Debugger::LocationRange::deserializer_descriptor()::$_7::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267200,93957342267309],["v8_inspector::protocol::Debugger::(anonymous namespace)::setBreakpointParams::deserializer_descriptor()::$_62::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267456,93957342267602],["v8_inspector::protocol::HeapProfiler::(anonymous namespace)::getHeapObjectIdParams::deserializer_descriptor()::$_13::__invoke(v8_crdtp::DeserializerState*, void*)",93957342267664,93957342267674],["v8::internal::compiler::JSOperatorBuilder::ToString()",93957343305808,93957343305822],["v8::internal::compiler::CommonOperatorBuilder::Return(int)",93957343306144,93957343306333],["v8::internal::compiler::CommonOperatorBuilder::IfDefault(v8::internal::compiler::BranchHint)",93957343307728,93957343307868],["v8::internal::compiler::CommonOperatorBuilder::Int64Constant(long)",93957343309088,93957343309228],["v8::internal::compiler::CommonOperatorBuilder::PointerConstant(long)",93957343310000,93957343310140],["v8::internal::compiler::CommonOperatorBuilder::ObjectId(unsigned int)",93957343310608,93957343310748],["v8::internal::compiler::CommonOperatorBuilder::TypeGuard(v8::internal::compiler::Type)",93957343311488,93957343311613],["v8::internal::compiler::CommonOperatorBuilder::BeginRegion(v8::internal::compiler::RegionObservability)",93957343312112,93957343312161],["v8::internal::compiler::CommonOperatorBuilder::ArgumentsLengthState()",93957343312848,93957343312967],["v8::internal::compiler::CommonOperatorBuilder::FrameState(v8::internal::BytecodeOffset, v8::internal::compiler::OutputFrameStateCombine, v8::internal::compiler::FrameStateFunctionInfo const*)",93957343313376,93957343313541],["v8::internal::compiler::CommonOperatorBuilder::ResizeMergeOrPhi(v8::internal::compiler::Operator const*, int)",93957343314096,93957343314736],["v8::internal::compiler::CombineSafetyChecks(v8::internal::compiler::IsSafetyCheck, v8::internal::compiler::IsSafetyCheck)",93957343315088,93957343315128],["v8::internal::compiler::Operator::HashCode() const",93957343326160,93957343326170],["v8::internal::compiler::Operator1<v8::internal::compiler::BranchOperatorInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::BranchOperatorInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::BranchOperatorInfo> >::HashCode() const",93957343326224,93957343326277],["v8::internal::compiler::Operator1<v8::internal::compiler::BranchOperatorInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::BranchOperatorInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::BranchOperatorInfo> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343326368,93957343326438],["v8::internal::compiler::Operator1<v8::internal::AllocationType, v8::internal::compiler::OpEqualTo<v8::internal::AllocationType>, v8::internal::compiler::OpHash<v8::internal::AllocationType> >::HashCode() const",93957343326480,93957343326498],["v8::internal::compiler::Operator1<v8::internal::MachineRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::MachineRepresentation>, v8::internal::compiler::OpHash<v8::internal::MachineRepresentation> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343326640,93957343326710],["v8::internal::compiler::Operator1<v8::internal::compiler::DeoptimizeParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::DeoptimizeParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::DeoptimizeParameters> >::HashCode() const",93957343326880,93957343327048],["v8::internal::compiler::Operator1<float, v8::internal::compiler::OpEqualTo<float>, v8::internal::compiler::OpHash<float> >::Equals(v8::internal::compiler::Operator const*) const",93957343327152,93957343327181],["v8::internal::compiler::Operator1<v8::internal::compiler::TrapId, v8::internal::compiler::OpEqualTo<v8::internal::compiler::TrapId>, v8::internal::compiler::OpHash<v8::internal::compiler::TrapId> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343327216,93957343327285],["v8::internal::compiler::Operator1<v8::internal::compiler::ParameterInfo, v8::internal::compiler::OpEqualTo<v8::internal::compiler::ParameterInfo>, v8::internal::compiler::OpHash<v8::internal::compiler::ParameterInfo> >::HashCode() const",93957343327328,93957343327346],["v8::internal::compiler::Operator1<double, v8::internal::compiler::OpEqualTo<double>, v8::internal::compiler::OpHash<double> >::Equals(v8::internal::compiler::Operator const*) const",93957343327504,93957343327535],["v8::internal::compiler::Operator1<unsigned long, v8::internal::compiler::OpEqualTo<unsigned long>, v8::internal::compiler::OpHash<unsigned long> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343327584,93957343327654],["v8::internal::compiler::Operator1<v8::internal::compiler::SparseInputMask, v8::internal::compiler::OpEqualTo<v8::internal::compiler::SparseInputMask>, v8::internal::compiler::OpHash<v8::internal::compiler::SparseInputMask> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343327712,93957343327891],["v8::internal::compiler::Operator1<char const*, v8::internal::compiler::OpEqualTo<char const*>, v8::internal::compiler::OpHash<char const*> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343327984,93957343328079],["v8::internal::compiler::Operator1<v8::internal::compiler::IfValueParameters, v8::internal::compiler::OpEqualTo<v8::internal::compiler::IfValueParameters>, v8::internal::compiler::OpHash<v8::internal::compiler::IfValueParameters> >::HashCode() const",93957343328128,93957343328226],["v8::internal::compiler::Operator1<v8::internal::compiler::BranchHint, v8::internal::compiler::OpEqualTo<v8::internal::compiler::BranchHint>, v8::internal::compiler::OpHash<v8::internal::compiler::BranchHint> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343328320,93957343328452],["v8::internal::compiler::Operator1<long, v8::internal::compiler::OpEqualTo<long>, v8::internal::compiler::OpHash<long> >::PrintParameter(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::compiler::Operator::PrintVerbosity) const",93957343328544,93957343328614],["__fdelt_chk",139871564363152,139871564363175],["htonl",139871564363360,139871564363365],["inet_makeaddr",139871564363440,139871564363514],["inet_ntoa",139871564363568,139871564363647],["__ashlti3",139871565130416,139871565130487],["__absvsi2",139871565130736,139871565130771],["__addvti3",139871565130944,139871565131014],["__subvti3",139871565131136,139871565131209],["__mulvsi3",139871565131248,139871565131287],["__negvdi2",139871565131744,139871565131795],["__negvti2",139871565131856,139871565131923],["v8::internal::JavaScriptBuiltinContinuationWithCatchFrame::SetException(v8::internal::Object)",93957336584208,93957336584290],["v8::internal::FrameSummary::script() const",93957336585744,93957336585950],["v8::internal::OptimizedFrame::LookupExceptionHandlerInTable(int*, v8::internal::HandlerTable::CatchPrediction*)",93957336588528,93957336588735],["v8::internal::UnoptimizedFrame::GetBytecodeArray() const",93957336589328,93957336589348],["v8::internal::UnoptimizedFrame::Summarize(std::__1::vector<v8::internal::FrameSummary, std::__1::allocator<v8::internal::FrameSummary> >*) const",93957336589472,93957336589960],["v8::internal::InterpretedFrame::GetBytecodeOffset(unsigned long)",93957336590000,93957336590014],["v8::internal::InterpretedFrame::PatchBytecodeArray(v8::internal::BytecodeArray)",93957336590064,93957336590094],["v8::internal::Code::GetBytecodeOffsetForBaselinePC(unsigned long, v8::internal::BytecodeArray)",93957336590192,93957336590669],["v8::internal::SharedFunctionInfo::HasBreakInfo() const",93957339114960,93957339115041],["v8::internal::SourceTextModule::CreateIndirectExport(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::SourceTextModuleInfoEntry>)",93957339124928,93957339125183],["v8::internal::SourceTextModule::FetchStarExports(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Zone*, v8::internal::UnorderedModuleSet*)",93957339135312,93957339137336],["v8::internal::SourceTextModule::ExecuteAsyncModule(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339142400,93957339143272],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, std::__1::__unordered_map_hasher<v8::internal::Handle<v8::internal::Module>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, v8::internal::ModuleHandleHash, v8::internal::ModuleHandleEqual, true>, std::__1::__unordered_map_equal<v8::internal::Handle<v8::internal::Module>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, v8::internal::ModuleHandleEqual, v8::internal::ModuleHandleHash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*> > >::rehash(unsigned long)",93957339145536,93957339145907],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, std::__1::__unordered_map_hasher<v8::internal::Handle<v8::internal::Module>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, v8::internal::ModuleHandleHash, v8::internal::ModuleHandleEqual, true>, std::__1::__unordered_map_equal<v8::internal::Handle<v8::internal::Module>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, v8::internal::ModuleHandleEqual, v8::internal::ModuleHandleHash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*> > >::__emplace_unique_key_args<v8::internal::Handle<v8::internal::Module>, std::__1::pair<v8::internal::Handle<v8::internal::Module> const, v8::internal::UnorderedStringSet*> >(v8::internal::Handle<v8::internal::Module> const&, std::__1::pair<v8::internal::Handle<v8::internal::Module> const, v8::internal::UnorderedStringSet*>&&)",93957339147856,93957339148813],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::Handle<v8::internal::String>, void*>*>, bool> std::__1::__hash_table<v8::internal::Handle<v8::internal::String>, v8::internal::StringHandleHash, v8::internal::StringHandleEqual, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::String> > >::__emplace_unique_key_args<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String> const&>(v8::internal::Handle<v8::internal::String> const&, v8::internal::Handle<v8::internal::String> const&)",93957339150592,93957339151675],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, std::__1::__unordered_map_hasher<v8::internal::Handle<v8::internal::String>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, v8::internal::StringHandleHash, v8::internal::StringHandleEqual, true>, std::__1::__unordered_map_equal<v8::internal::Handle<v8::internal::String>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, v8::internal::StringHandleEqual, v8::internal::StringHandleHash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> > > >::__emplace_unique_key_args<v8::internal::Handle<v8::internal::String>, std::__1::pair<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Cell> > >(v8::internal::Handle<v8::internal::String> const&, std::__1::pair<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Cell> >&&)",93957339153728,93957339154863],["v8::internal::StackFrameInfo::IsNative() const",93957339154992,93957339155140],["v8::internal::StackFrameInfo::IsToplevel() const",93957339155312,93957339155391],["v8::internal::StackFrameInfo::GetScript(v8::internal::Isolate*, v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339155536,93957339155751],["v8::internal::StackFrameInfo::GetColumnNumber(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339155840,93957339156005],["v8::internal::StackFrameInfo::GetEnclosingColumnNumber(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339156240,93957339156485],["v8::internal::StackFrameInfo::GetScriptName() const",93957339156656,93957339156817],["v8::internal::StackFrameInfo::GetEvalOrigin(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339157024,93957339157121],["v8::internal::StackFrameInfo::GetFunctionName(v8::internal::Handle<v8::internal::StackFrameInfo>)",93957339164000,93957339164421],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setBreakpointByUrl(v8_crdtp::Dispatchable const&)",93957342255952,93957342257838],["v8_inspector::protocol::Debugger::Location::~Location()",93957342265248,93957342265280],["v8_inspector::protocol::Debugger::Scope::~Scope()",93957342265856,93957342266006],["non-virtual thunk to v8_inspector::protocol::Debugger::SearchMatch::~SearchMatch()",93957342266288,93957342266331],["v8_inspector::protocol::Debugger::BreakLocation::~BreakLocation()",93957342266480,93957342266551],["v8_inspector::protocol::Debugger::DebugSymbols::~DebugSymbols()",93957342266640,93957342266711],["v8_inspector::protocol::Debugger::Location::deserializer_descriptor()::$_1::__invoke(v8_crdtp::DeserializerState*, void*)",93957342266768,93957342266782],["v8_inspector::protocol::Debugger::ScriptPosition::deserializer_descriptor()::$_3::__invoke(v8_crdtp::DeserializerState*, void*)",93957342266800,93957342266814],["v8::internal::compiler::JSOperatorBuilder::ToNumeric()",93957343305776,93957343305790],["v8::internal::compiler::JSOperatorBuilder::CreateIterResultObject()",93957343305840,93957343305854],["v8::internal::compiler::JSOperatorBuilder::CreateTypedArray()",93957343305904,93957343305918],["v8::internal::compiler::CommonOperatorBuilder::Deoptimize(v8::internal::DeoptimizeKind, v8::internal::DeoptimizeReason, v8::internal::compiler::FeedbackSource const&)",93957343306496,93957343306973],["v8::internal::compiler::CommonOperatorBuilder::Switch(unsigned long)",93957343307424,93957343307549],["v8::internal::compiler::CommonOperatorBuilder::Loop(int)",93957343307984,93957343308139],["v8::internal::compiler::CommonOperatorBuilder::OsrValue(int)",93957343308800,93957343308937],["v8::internal::compiler::CommonOperatorBuilder::Float32Constant(float)",93957343309376,93957343309530],["v8::internal::compiler::CommonOperatorBuilder::NumberConstant(double)",93957343309840,93957343309994],["v8::internal::compiler::CommonOperatorBuilder::HeapConstant(v8::internal::Handle<v8::internal::HeapObject> const&)",93957343310144,93957343310287],["v8::internal::compiler::CommonOperatorBuilder::RelocatableInt64Constant(long, v8::internal::RelocInfo::Mode)",93957343310432,93957343310604],["v8::internal::compiler::CommonOperatorBuilder::Select(v8::internal::MachineRepresentation, v8::internal::compiler::BranchHint)",93957343310752,93957343310917],["v8::internal::compiler::Operator1<v8::internal::MachineRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::MachineRepresentation>, v8::internal::compiler::OpHash<v8::internal::MachineRepresentation> >* v8::internal::Zone::New<v8::internal::compiler::Operator1<v8::internal::MachineRepresentation, v8::internal::compiler::OpEqualTo<v8::internal::MachineRepresentation>, v8::internal::compiler::OpHash<v8::internal::MachineRepresentation> >, v8::internal::compiler::IrOpcode::Value, v8::internal::compiler::Operator::Property, char const (&) [4], int&, int, int, int, int, int, v8::internal::MachineRepresentation&>(v8::internal::compiler::IrOpcode::Value&&, v8::internal::compiler::Operator::Property&&, char const (&) [4], int&, int&&, int&&, int&&, int&&, int&&, v8::internal::MachineRepresentation&)",93957343311296,93957343311477],["v8::internal::compiler::CommonOperatorBuilder::FoldConstant()",93957343311616,93957343311738],["v8::internal::compiler::CommonOperatorBuilder::InductionVariablePhi(int)",93957343311920,93957343312102],["v8::internal::compiler::CommonOperatorBuilder::StateValues(int, v8::internal::compiler::SparseInputMask)",93957343312176,93957343312517],["v8::internal::compiler::CommonOperatorBuilder::ArgumentsElementsState(v8::internal::CreateArgumentsType)",93957343312704,93957343312844],["v8::internal::compiler::CommonOperatorBuilder::ObjectState(unsigned int, int)",93957343312976,93957343313136],["v8::internal::compiler::ObjectIdOf(v8::internal::compiler::Operator const*)",93957343313312,93957343313368],["v8::internal::compiler::CommonOperatorBuilder::Call(v8::internal::compiler::CallDescriptor const*)",93957343313552,93957343313740],["v8::internal::compiler::CommonOperatorBuilder::Projection(unsigned long)",93957343313920,93957343314094],["v8::internal::compiler::CommonOperatorBuilder::CreateFrameStateFunctionInfo(v8::internal::compiler::FrameStateType, int, int, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957343314736,93957343314822],["v8::internal::compiler::CommonOperatorBuilder::DeadValue(v8::internal::MachineRepresentation)",93957343314944,93957343315087],["v8::internal::compiler::CommonOperatorGlobalCache::CommonOperatorGlobalCache()",93957343315136,93957343326124],["__vdprintf_chk",139871564362656,139871564362680],["__ppoll_chk",139871564363216,139871564363236],["__fortify_fail",139871564363312,139871564363348],["htons",139871564363376,139871564363383],["__negti2",139871565130304,139871565130325],["__cmpti2",139871565130576,139871565130612],["__absvdi2",139871565130688,139871565130725],["__absvti2",139871565130784,139871565130828],["__addvsi3",139871565130896,139871565130938],["__subvdi3",139871565131024,139871565131075],["v8::internal::JavaScriptFrame::PrintTop(v8::internal::Isolate*, _IO_FILE*, bool, bool)",93957336580960,93957336583505],["v8::internal::FrameSummary::WasmFrameSummary::function_index() const",93957336584944,93957336584957],["v8::internal::FrameSummary::is_constructor() const",93957336585504,93957336585547],["v8::internal::FrameSummary::SourceStatementPosition() const",93957336586128,93957336586290],["v8::internal::OptimizedFrame::GetDeoptimizationData(int*) const",93957336588224,93957336588525],["v8::internal::OptimizedFrame::GetFunctions(std::__1::vector<v8::internal::SharedFunctionInfo, std::__1::allocator<v8::internal::SharedFunctionInfo> >*) const",93957336588736,93957336589239],["v8::internal::UnoptimizedFrame::position() const",93957336589264,93957336589321],["v8::internal::UnoptimizedFrame::LookupExceptionHandlerInTable(int*, v8::internal::HandlerTable::CatchPrediction*)",93957336589360,93957336589451],["v8::internal::SourceTextModuleInfo::RegularExportCount() const",93957339109504,93957339109557],["v8::internal::SharedFunctionInfo::DiscardCompiled(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957339117232,93957339117974],["v8::internal::SharedFunctionInfo::UninstallDebugBytecode(v8::internal::SharedFunctionInfo, v8::internal::Isolate*)",93957339124304,93957339124620],["v8::internal::SourceTextModule::StoreVariable(v8::internal::Handle<v8::internal::SourceTextModule>, int, v8::internal::Handle<v8::internal::Object>)",93957339126112,93957339126370],["v8::internal::SourceTextModule::MaybeTransitionComponent(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::ZoneForwardList<v8::internal::Handle<v8::internal::SourceTextModule> >*, v8::internal::Module::Status)",93957339131664,93957339132074],["v8::internal::SourceTextModule::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, int)",93957339138928,93957339139051],["v8::internal::SourceTextModule::InnerModuleEvaluation(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::ZoneForwardList<v8::internal::Handle<v8::internal::SourceTextModule> >*, unsigned int*)",93957339140048,93957339141445],["v8::internal::SourceTextModule::AsyncModuleExecutionRejected(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Handle<v8::internal::Object>)",93957339143760,93957339144253],["v8::internal::SourceTextModule::Reset(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339144928,93957339145523],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, std::__1::__unordered_map_hasher<v8::internal::Handle<v8::internal::Module>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, v8::internal::ModuleHandleHash, v8::internal::ModuleHandleEqual, true>, std::__1::__unordered_map_equal<v8::internal::Handle<v8::internal::Module>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*>, v8::internal::ModuleHandleEqual, v8::internal::ModuleHandleHash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::Module>, v8::internal::UnorderedStringSet*> > >::__rehash(unsigned long)",93957339145920,93957339146662],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, std::__1::__unordered_map_hasher<v8::internal::Handle<v8::internal::String>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, v8::internal::StringHandleHash, v8::internal::StringHandleEqual, true>, std::__1::__unordered_map_equal<v8::internal::Handle<v8::internal::String>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> >, v8::internal::StringHandleEqual, v8::internal::StringHandleHash, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object> > > >::__rehash(unsigned long)",93957339147056,93957339147856],["std::__1::__hash_table<v8::internal::Handle<v8::internal::String>, v8::internal::StringHandleHash, v8::internal::StringHandleEqual, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::String> > >::rehash(unsigned long)",93957339148816,93957339149187],["std::__1::__hash_const_iterator<std::__1::__hash_node<v8::internal::Handle<v8::internal::String>, void*>*> std::__1::__hash_table<v8::internal::Handle<v8::internal::String>, v8::internal::StringHandleHash, v8::internal::StringHandleEqual, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::String> > >::find<v8::internal::Handle<v8::internal::String> >(v8::internal::Handle<v8::internal::String> const&) const",93957339150000,93957339150581],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::Handle<v8::internal::Module>, void*>*>, bool> std::__1::__hash_table<v8::internal::Handle<v8::internal::Module>, v8::internal::ModuleHandleHash, v8::internal::ModuleHandleEqual, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::Module> > >::__emplace_unique_key_args<v8::internal::Handle<v8::internal::Module>, v8::internal::Handle<v8::internal::Module> >(v8::internal::Handle<v8::internal::Module> const&, v8::internal::Handle<v8::internal::Module>&&)",93957339151680,93957339152608],["std::__1::__hash_table<v8::internal::Handle<v8::internal::Module>, v8::internal::ModuleHandleHash, v8::internal::ModuleHandleEqual, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::Module> > >::__rehash(unsigned long)",93957339152992,93957339153728],["v8::internal::StackFrameInfo::IsPromiseAll() const",93957339154864,93957339154923],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::restartFrame(v8_crdtp::Dispatchable const&)",93957342249424,93957342250496],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setReturnValue(v8_crdtp::Dispatchable const&)",93957342259904,93957342260462],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::stepOver(v8_crdtp::Dispatchable const&)",93957342264304,93957342265061],["v8_inspector::protocol::Debugger::LocationRange::~LocationRange()",93957342265328,93957342265421],["v8_inspector::protocol::Debugger::CallFrame::~CallFrame()",93957342265824,93957342265852],["v8_inspector::protocol::Debugger::Scope::~Scope()",93957342266016,93957342266167],["v8_inspector::protocol::Debugger::SearchMatch::~SearchMatch()",93957342266224,93957342266283],["non-virtual thunk to v8_inspector::protocol::Debugger::SearchMatch::~SearchMatch()",93957342266336,93957342266396],["v8::internal::compiler::JSOperatorBuilder::ToNumberConvertBigInt()",93957343305760,93957343305774],["v8::internal::compiler::JSOperatorBuilder::ToObject()",93957343305792,93957343305806],["v8::internal::compiler::JSOperatorBuilder::Create()",93957343305824,93957343305838],["v8::internal::compiler::JSOperatorBuilder::CreateStringIterator()",93957343305856,93957343305870],["v8::internal::compiler::JSOperatorBuilder::CreatePromise()",93957343305888,93957343305902],["v8::internal::compiler::CommonOperatorBuilder::End(unsigned long)",93957343305920,93957343306133],["v8::internal::compiler::CommonOperatorBuilder::StaticAssert(char const*)",93957343306336,93957343306482],["v8::internal::compiler::CommonOperatorBuilder::DynamicCheckMapsWithDeoptUnless()",93957343306976,93957343306990],["v8::internal::compiler::CommonOperatorBuilder::TrapUnless(v8::internal::compiler::TrapId)",93957343307168,93957343307410],["v8::internal::compiler::CommonOperatorBuilder::IfValue(int, int, v8::internal::compiler::BranchHint)",93957343307552,93957343307728],["v8::internal::compiler::CommonOperatorBuilder::Start(int)",93957343307872,93957343307976],["v8::internal::compiler::CommonOperatorBuilder::Merge(int)",93957343308144,93957343308359],["v8::internal::compiler::CommonOperatorBuilder::Parameter(int, char const*)",93957343308528,93957343308793],["v8::internal::compiler::CommonOperatorBuilder::Int32Constant(int)",93957343308944,93957343309084],["v8::internal::compiler::CommonOperatorBuilder::TaggedIndexConstant(int)",93957343309232,93957343309372],["v8::internal::compiler::CommonOperatorBuilder::Float64Constant(double)",93957343309536,93957343309690],["__wcstombs_chk",139871564362144,139871564362234],["__obstack_vprintf_chk",139871564362880,139871564362904],["__poll_chk",139871564363184,139871564363204],["__explicit_bzero_chk",139871564363248,139871564363285],["__multi3",139871565130272,139871565130300],["__lshrti3",139871565130336,139871565130407],["__ashrti3",139871565130496,139871565130567],["__ucmpti2",139871565130624,139871565130660],["v8::internal::CommonFrameWithJSLinkage::ComputeParametersCount() const",93957336579296,93957336579329],["v8::internal::FixedArray::set(int, v8::internal::Object)",93957336583984,93957336584141],["v8::internal::FrameSummary::EnsureSourcePositionsAvailable()",93957336584656,93957336584800],["v8::internal::FrameSummary::GetTop(v8::internal::CommonFrame const*)",93957336584992,93957336585136],["v8::internal::FrameSummary::code_offset() const",93957336585472,93957336585501],["v8::internal::FrameSummary::is_subject_to_debugging() const",93957336585552,93957336585737],["v8::internal::FrameSummary::SourcePosition() const",93957336585952,93957336586114],["v8::internal::FrameSummary::FunctionName() const",93957336586304,93957336586487],["v8::internal::ScopeInfo::ContextLocalName(int) const",93957339107056,93957339107088],["v8::internal::SharedFunctionInfo::StartPosition() const",93957339112400,93957339112717],["v8::internal::SharedFunctionInfo::DebugName(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957339115728,93957339116315],["v8::internal::SharedFunctionInfo::SourceSize()",93957339121344,93957339121378],["v8::internal::SharedFunctionInfo::InstallDebugBytecode(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Isolate*)",93957339123376,93957339123787],["v8::internal::SourceTextModule::GetScript() const",93957339124752,93957339124901],["v8::internal::SourceTextModule::GetCell(int)",93957339125776,93957339125902],["v8::internal::SourceTextModule::ResolveImport(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Handle<v8::internal::String>, int, v8::internal::MessageLocation, bool, v8::internal::Module::ResolveSet*)",93957339127456,93957339127964],["v8::internal::SourceTextModule::RunInitializationCode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339131056,93957339131664],["v8::internal::SourceTextModule::FinishInstantiate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::ZoneForwardList<v8::internal::Handle<v8::internal::SourceTextModule> >*, unsigned int*, v8::internal::Zone*)",93957339132080,93957339135307],["v8::internal::SourceTextModule::GatherAsyncParentCompletions(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::ZoneSet<v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::SourceTextModule::AsyncEvaluatingOrdinalCompare>*)",93957339137344,93957339138916],["v8::internal::SourceTextModule::GetImportMeta(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339139056,93957339139326],["v8::internal::SourceTextModule::Evaluate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339139760,93957339140035],["v8::internal::SourceTextModule::AsyncModuleExecutionFulfilled(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339141456,93957339142388],["v8::internal::SourceTextModule::ExecuteModule(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>)",93957339143280,93957339143760],["v8::internal::SourceTextModule::InnerExecuteAsyncModule(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Handle<v8::internal::JSPromise>)",93957339144256,93957339144673],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::evaluateOnCallFrame(v8_crdtp::Dispatchable const&)",93957342243024,93957342244649],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setBlackboxPatterns(v8_crdtp::Dispatchable const&)",93957342252800,93957342253438],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setBreakpointsActive(v8_crdtp::Dispatchable const&)",93957342258816,93957342259335],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setSkipAllPauses(v8_crdtp::Dispatchable const&)",93957342262000,93957342262519],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::stepOut(v8_crdtp::Dispatchable const&)",93957342264144,93957342264299],["v8_inspector::protocol::Debugger::Dispatcher::wire(v8_crdtp::UberDispatcher*, v8_inspector::protocol::Debugger::Backend*)",93957342265072,93957342265240],["v8_inspector::protocol::Debugger::Location::~Location()",93957342265280,93957342265328],["v8_inspector::protocol::Debugger::LocationRange::~LocationRange()",93957342265424,93957342265518],["__wcsnrtombs_chk",139871564361952,139871564361977],["__vasprintf_chk",139871564362432,139871564362456],["__obstack_printf_chk",139871564362688,139871564362876],["__longjmp_chk",139871564362912,139871564362979],["v8::internal::InnerPointerToCodeCache::GetCacheEntry(unsigned long)",93957336578560,93957336578883],["v8::internal::BuiltinFrame::function() const",93957336580464,93957336580478],["v8::internal::CommonFrameWithJSLinkage::GetParameter(int) const",93957336583920,93957336583953],["v8::internal::JavaScriptBuiltinContinuationFrame::GetSPToFPDelta() const",93957336584160,93957336584177],["v8::internal::FrameSummary::JavaScriptFrameSummary::JavaScriptFrameSummary(v8::internal::Isolate*, v8::internal::Object, v8::internal::JSFunction, v8::internal::AbstractCode, int, bool, v8::internal::FixedArray)",93957336584304,93957336584651],["v8::internal::FrameSummary::AreSourcePositionsAvailable() const",93957336584800,93957336584929],["v8::internal::FrameSummary::~FrameSummary()",93957336584960,93957336584986],["v8::internal::FrameSummary::Get(v8::internal::CommonFrame const*, int)",93957336585136,93957336585298],["v8::internal::ScopeInfo::HasSharedFunctionName() const",93957339105296,93957339105362],["v8::internal::ScopeInfo::ModuleVariableCount() const",93957339107632,93957339107810],["v8::internal::SharedFunctionInfo::SetFunctionTokenPosition(int, int)",93957339110880,93957339110916],["v8::internal::SharedFunctionInfo::InterpreterTrampoline() const",93957339113488,93957339113561],["v8::internal::SharedFunctionInfo::HasCoverageInfo() const",93957339115152,93957339115233],["v8::internal::SharedFunctionInfo::HasSourceCode() const",93957339116416,93957339116595],["v8::internal::SharedFunctionInfo::GetSourceCode(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957339118320,93957339118693],["v8::internal::SharedFunctionInfo::TryGetCachedCode(v8::internal::Isolate*)",93957339122096,93957339122204],["v8::internal::SharedFunctionInfo::EnsureSourcePositionsAvailable(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957339123184,93957339123375],["v8::internal::SharedFunctionInfo::SetActiveBytecodeArray(v8::internal::BytecodeArray)",93957339123792,93957339124297],["v8::internal::SourceTextModule::GetSharedFunctionInfo() const",93957339124624,93957339124743],["v8::internal::SourceTextModule::ImportIndex(int)",93957339124912,93957339124922],["v8::internal::SourceTextModule::CreateExport(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, int, v8::internal::Handle<v8::internal::FixedArray>)",93957339125184,93957339125776],["v8::internal::SourceTextModule::LoadVariable(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, int)",93957339125904,93957339126105],["v8::internal::SourceTextModule::ResolveExport(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::MessageLocation, bool, v8::internal::Module::ResolveSet*)",93957339126384,93957339127454],["v8::internal::SourceTextModule::ResolveExportUsingStarExports(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SourceTextModule>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::MessageLocation, bool, v8::internal::Module::ResolveSet*)",93957339127968,93957339129182],["v8_inspector::protocol::Debugger::Frontend::paused(std::__1::unique_ptr<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> > > >, std::__1::default_delete<std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::Debugger::CallFrame, std::__1::default_delete<v8_inspector::protocol::Debugger::CallFrame> > > > > >, v8_inspector::String16 const&, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::DictionaryValue>, v8_crdtp::detail::PtrMaybe<std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> > >, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTrace>, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTraceId>, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTraceId>)",93957342238576,93957342239207],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::getStackTrace(v8_crdtp::Dispatchable const&)",93957342247424,93957342248151],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::searchInContent(v8_crdtp::Dispatchable const&)",93957342251040,93957342252258],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setBreakpoint(v8_crdtp::Dispatchable const&)",93957342254160,93957342255193],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setBreakpointOnFunctionCall(v8_crdtp::Dispatchable const&)",93957342257840,93957342258815],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setPauseOnExceptions(v8_crdtp::Dispatchable const&)",93957342259344,93957342259889],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setScriptSource(v8_crdtp::Dispatchable const&)",93957342260464,93957342261988],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setVariableValue(v8_crdtp::Dispatchable const&)",93957342262528,93957342263305],["__gethostname_chk",139871564361840,139871564361856],["__wcsrtombs_chk",139871564362016,139871564362041],["__asprintf_chk",139871564362240,139871564362428],["__dprintf_chk",139871564362464,139871564362652],["v8::internal::StackFrame::Print(v8::internal::StringStream*, v8::internal::StackFrame::PrintMode, int) const",93957336576768,93957336576960],["v8::internal::JavaScriptFrame::SetParameterValue(int, v8::internal::Object) const",93957336579072,93957336579107],["v8::internal::JavaScriptFrame::GetFunctions(std::__1::vector<v8::internal::Handle<v8::internal::SharedFunctionInfo>, std::__1::allocator<v8::internal::Handle<v8::internal::SharedFunctionInfo> > >*) const",93957336579408,93957336579904],["v8::internal::JavaScriptFrame::context() const",93957336580512,93957336580526],["v8::internal::JavaScriptFrame::CollectFunctionAndOffsetForICStats(v8::internal::JSFunction, v8::internal::AbstractCode, int)",93957336583520,93957336583905],["v8::internal::JavaScriptFrame::GetActualArgumentCount() const",93957336583968,93957336583981],["v8::internal::JavaScriptBuiltinContinuationFrame::ComputeParametersCount() const",93957336584144,93957336584159],["v8::internal::JavaScriptBuiltinContinuationFrame::context() const",93957336584192,93957336584206],["v8::internal::Handle<v8::internal::SourceTextModuleInfoEntry> v8::internal::SourceTextModuleInfoEntry::New<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::PrimitiveHeapObject>, v8::internal::Handle<v8::internal::PrimitiveHeapObject>, v8::internal::Handle<v8::internal::PrimitiveHeapObject>, int, int, int, int)",93957339104096,93957339104533],["v8::internal::ScopeInfo::IsReplModeScope() const",93957339106016,93957339106033],["v8::internal::ScopeInfo::ContextLocalIsParameter(int) const",93957339107232,93957339107276],["v8::internal::ScopeInfo::SavedClassVariableContextLocalIndex() const",93957339109248,93957339109293],["v8::internal::SourceTextModuleInfo::RegularExportExportNames(int) const",93957339109616,93957339109664],["void v8::internal::SharedFunctionInfo::InitFromFunctionLiteral<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::FunctionLiteral*, bool)",93957339111040,93957339112202],["v8::internal::SharedFunctionInfo::GetCode() const",93957339113088,93957339113450],["v8::internal::SharedFunctionInfo::ScriptIterator::Next()",93957339113728,93957339113862],["v8::internal::SharedFunctionInfo::BreakAtEntry() const",93957339115056,93957339115137],["v8::internal::SharedFunctionInfo::DebugNameCStr()",93957339115248,93957339115715],["v8::internal::SharedFunctionInfo::PassesFilter(char const*)",93957339116320,93957339116413],["v8::internal::SharedFunctionInfo::DiscardCompiledMetadata(v8::internal::Isolate*, std::__1::function<void (v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::HeapObject)>)",93957339116608,93957339117222],["v8::internal::SharedFunctionInfo::EndPosition() const",93957339117984,93957339118305],["v8::internal::SharedFunctionInfo::GetSourceCodeHarmony(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957339118704,93957339121338],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::SourceCodeOf const&)",93957339121392,93957339122091],["v8::internal::SharedFunctionInfo::DisableOptimization(v8::internal::BailoutReason)",93957339122208,93957339122774],["v8_inspector::protocol::Debugger::LocationRange::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342236864,93957342237030],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned char>)",93957342240976,93957342241380],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::getScriptSource(v8_crdtp::Dispatchable const&)",93957342245760,93957342246642],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::pauseOnAsyncCall(v8_crdtp::Dispatchable const&)",93957342248320,93957342248875],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::resume(v8_crdtp::Dispatchable const&)",93957342250496,93957342251026],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setAsyncCallStackDepth(v8_crdtp::Dispatchable const&)",93957342252272,93957342252790],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setBlackboxedRanges(v8_crdtp::Dispatchable const&)",93957342253440,93957342254147],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::setInstrumentationBreakpoint(v8_crdtp::Dispatchable const&)",93957342255200,93957342255941],["__fgetws_unlocked_chk",139871564361552,139871564361719],["__wcrtomb_chk",139871564361872,139871564361908],["__mbsrtowcs_chk",139871564361984,139871564362009],["__mbstowcs_chk",139871564362048,139871564362138],["v8::internal::ConstructEntryFrame::unchecked_code() const",93957336576320,93957336576347],["v8::internal::CommonFrame::context() const",93957336577472,93957336577489],["v8::internal::StubFrame::LookupExceptionHandlerInTable()",93957336578928,93957336579051],["v8::internal::CommonFrameWithJSLinkage::unchecked_code() const",93957336579152,93957336579183],["v8::internal::JavaScriptFrame::GetFunctions(std::__1::vector<v8::internal::SharedFunctionInfo, std::__1::allocator<v8::internal::SharedFunctionInfo> >*) const",93957336579344,93957336579401],["v8::internal::CommonFrameWithJSLinkage::Summarize(std::__1::vector<v8::internal::FrameSummary, std::__1::allocator<v8::internal::FrameSummary> >*) const",93957336579904,93957336580460],["v8::internal::CommonFrameWithJSLinkage::receiver() const",93957336580480,93957336580499],["v8::internal::JavaScriptFrame::PrintFunctionAndOffset(v8::internal::JSFunction, v8::internal::AbstractCode, int, _IO_FILE*, bool)",93957336580528,93957336580945],["v8::internal::Descriptor::Descriptor()",93957339091056,93957339091091],["v8::internal::ScopeInfo::is_declaration_scope() const",93957339104944,93957339104959],["v8::internal::ScopeInfo::HasOuterScopeInfo() const",93957339105888,93957339105903],["v8::internal::ScopeInfo::EndPosition() const",93957339106416,93957339106512],["v8::internal::ScopeInfo::ContextLocalIsStaticFlag(int) const",93957339107136,93957339107171],["v8::internal::ScopeInfo::ContextLocalMaybeAssignedFlag(int) const",93957339107328,93957339107363],["v8::internal::ScopeInfo::ModuleVariable(int, v8::internal::String*, int*, v8::internal::VariableMode*, v8::internal::InitializationFlag*, v8::internal::MaybeAssignedFlag*)",93957339108416,93957339109007],["v8::internal::ScopeInfo::FunctionContextSlotIndex(v8::internal::String) const",93957339109360,93957339109472],["v8::internal::SourceTextModuleInfo::RegularExportCellIndex(int) const",93957339109568,93957339109615],["void v8::internal::SharedFunctionInfo::InitFromFunctionLiteral<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::FunctionLiteral*, bool)",93957339109664,93957339110873],["v8::internal::SharedFunctionInfo::UpdateAndFinalizeExpectedNofPropertiesFromEstimate(v8::internal::FunctionLiteral*)",93957339110928,93957339111031],["v8::internal::SharedFunctionInfo::Hash()",93957339112208,93957339112391],["v8::internal::SharedFunctionInfo::Init(v8::internal::ReadOnlyRoots, int)",93957339112720,93957339113077],["v8::internal::StackFrameInfo::GetWasmInstance() const",93957339113456,93957339113484],["v8::internal::SharedFunctionInfo::ScriptIterator::ScriptIterator(v8::internal::Isolate*, v8::internal::Script)",93957339113568,93957339113718],["v8::internal::SharedFunctionInfo::SetScript(v8::internal::ReadOnlyRoots, v8::internal::HeapObject, int, bool)",93957339113872,93957339114957],["v8_inspector::protocol::Console::ConsoleMessage::~ConsoleMessage()",93957342235632,93957342235745],["non-virtual thunk to v8_inspector::protocol::Debugger::SearchMatch::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342237888,93957342238021],["v8_inspector::protocol::Debugger::Frontend::scriptFailedToParse(v8_inspector::String16 const&, v8_inspector::String16 const&, int, int, int, int, int, v8_inspector::String16 const&, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::DictionaryValue>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTrace>, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)",93957342239280,93957342240073],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::disable(v8_crdtp::Dispatchable const&)",93957342242128,93957342242280],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::getPossibleBreakpoints(v8_crdtp::Dispatchable const&)",93957342244656,93957342245757],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::getWasmBytecode(v8_crdtp::Dispatchable const&)",93957342246656,93957342247419],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::pause(v8_crdtp::Dispatchable const&)",93957342248160,93957342248312],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::removeBreakpoint(v8_crdtp::Dispatchable const&)",93957342248880,93957342249422],["__fwprintf_chk",139871564360912,139871564361100],["__getgroups_chk",139871564361760,139871564361817],["__getdomainname_chk",139871564361856,139871564361872],["__mbsnrtowcs_chk",139871564361920,139871564361945],["v8::internal::SafeStackFrameIterator::IsValidCaller(v8::internal::StackFrame*)",93957336575392,93957336575860],["v8::internal::BuiltinExitFrame::receiver() const",93957336576656,93957336576670],["v8::internal::CommonFrame::GetExpressionAddress(int) const",93957336577408,93957336577431],["v8::internal::CommonFrame::ComputeCallerState(v8::internal::StackFrame::State*) const",93957336577616,93957336577707],["v8::internal::StubFrame::unchecked_code() const",93957336578896,93957336578920],["v8::internal::TypedFrame::Iterate(v8::internal::RootVisitor*) const",93957336579056,93957336579066],["v8::internal::JavaScriptFrame::IsConstructor() const",93957336579120,93957336579141],["v8::internal::OptimizedFrame::ComputeParametersCount() const",93957336579184,93957336579282],["v8::internal::OSROptimizedCodeCache::InitializeEntry(int, v8::internal::SharedFunctionInfo, v8::internal::Code, v8::internal::BytecodeOffset)",93957339083200,93957339083558],["v8::internal::Handle<v8::internal::SourceTextModuleInfo> v8::internal::SourceTextModuleInfo::New<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::SourceTextModuleDescriptor*)",93957339095776,93957339097442],["v8::internal::ScopeInfo::scope_type() const",93957339104832,93957339104848],["v8::internal::ScopeInfo::HasSavedClassVariableIndex() const",93957339105184,93957339105201],["v8::internal::ScopeInfo::SetFunctionName(v8::internal::Object)",93957339105456,93957339105654],["v8::internal::ScopeInfo::SetIsDebugEvaluateScope()",93957339105920,93957339105976],["v8::internal::ScopeInfo::FunctionDebugName() const",93957339106144,93957339106319],["v8::internal::ScopeInfo::OuterScopeInfo() const",93957339106720,93957339106875],["v8::internal::ScopeInfo::ContextLocalMode(int) const",93957339107088,93957339107122],["v8::internal::ScopeInfo::ContextLocalInitFlag(int) const",93957339107184,93957339107219],["v8::internal::ScopeInfo::ContextLocalParameterNumber(int) const",93957339107280,93957339107316],["v8::internal::ScopeInfo::VariableIsSynthetic(v8::internal::String)",93957339107376,93957339107619],["v8::internal::ScopeInfo::ModuleIndex(v8::internal::String, v8::internal::VariableMode*, v8::internal::InitializationFlag*, v8::internal::MaybeAssignedFlag*)",93957339107824,93957339108414],["v8::internal::ScopeInfo::ContextSlotIndex(v8::internal::ScopeInfo, v8::internal::String, v8::internal::VariableMode*, v8::internal::InitializationFlag*, v8::internal::MaybeAssignedFlag*, v8::internal::IsStaticFlag*)",93957339109008,93957339109245],["v8::internal::ScopeInfo::ReceiverContextSlotIndex() const",93957339109296,93957339109359],["v8::internal::ScopeInfo::function_kind() const",93957339109472,93957339109489],["v8_inspector::protocol::Console::ConsoleMessage::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342234064,93957342234363],["v8_inspector::protocol::Debugger::Location::deserializer_descriptor()",93957342235968,93957342236241],["v8_inspector::protocol::Debugger::Scope::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342237488,93957342237742],["v8_inspector::protocol::Debugger::DebugSymbols::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342238240,93957342238375],["v8_inspector::protocol::Debugger::Frontend::resumed()",93957342239216,93957342239272],["v8_inspector::protocol::Debugger::Frontend::scriptParsed(v8_inspector::String16 const&, v8_inspector::String16 const&, int, int, int, int, int, v8_inspector::String16 const&, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::DictionaryValue>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Runtime::StackTrace>, v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, v8_crdtp::detail::PtrMaybe<v8_inspector::protocol::Debugger::DebugSymbols>, v8_crdtp::detail::ValueMaybe<v8_inspector::String16>)",93957342240080,93957342240963],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::continueToLocation(v8_crdtp::Dispatchable const&)",93957342241392,93957342242116],["v8_inspector::protocol::Debugger::DomainDispatcherImpl::enable(v8_crdtp::Dispatchable const&)",93957342242288,93957342243020],["__wcpncpy_chk",139871564360416,139871564360441],["__vfwprintf_chk",139871564361136,139871564361160],["__confstr_chk",139871564361728,139871564361753],["__ttyname_r_chk",139871564361824,139871564361840],["v8::internal::StackTraceFrameIterator::Advance()",93957336571328,93957336571380],["v8::internal::EntryFrame::unchecked_code() const",93957336576016,93957336576043],["v8::internal::EntryFrame::Iterate(v8::internal::RootVisitor*) const",93957336576432,93957336576632],["v8::internal::BuiltinExitFrame::GetParameter(int) const",93957336576704,93957336576722],["v8::internal::BuiltinExitFrame::Print(v8::internal::StringStream*, v8::internal::StackFrame::PrintMode, int) const",93957336576960,93957336577403],["v8::internal::UnoptimizedFrame::GetExpressionAddress(int) const",93957336577440,93957336577463],["v8::internal::CommonFrame::position() const",93957336577504,93957336577614],["v8::internal::CommonFrame::IterateCompiledFrame(v8::internal::RootVisitor*) const",93957336577712,93957336578556],["v8::internal::MaybeHandle<v8::internal::OrderedHashMap> v8::internal::OrderedHashTable<v8::internal::OrderedHashMap, 2>::EnsureGrowable<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashMap>)",93957339076880,93957339076950],["v8::internal::(anonymous namespace)::CreateDataProperty(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957339087712,93957339087970],["v8::internal::Descriptor::DataConstant(v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957339091296,93957339091460],["v8::internal::Handle<v8::internal::SourceTextModuleInfo> v8::internal::SourceTextModuleInfo::New<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Zone*, v8::internal::SourceTextModuleDescriptor*)",93957339101392,93957339103058],["v8::internal::ScopeInfo::ContextHeaderLength() const",93957339104768,93957339104792],["v8::internal::ScopeInfo::SloppyEvalCanExtendVars() const",93957339104880,93957339104897],["v8::internal::ScopeInfo::HasContextExtensionSlot() const",93957339105120,93957339105137],["v8::internal::ScopeInfo::HasInferredFunctionName() const",93957339105232,93957339105248],["v8::internal::ScopeInfo::FunctionName() const",93957339105376,93957339105455],["v8::internal::ScopeInfo::SetInferredFunctionName(v8::internal::String)",93957339105664,93957339105879],["v8::internal::ScopeInfo::IsDebugEvaluateScope() const",93957339105904,93957339105918],["v8::internal::ScopeInfo::PrivateNameLookupSkipsOuterClass() const",93957339105984,93957339106001],["v8::internal::ScopeInfo::InferredFunctionName() const",93957339106048,93957339106143],["v8::internal::ScopeInfo::StartPosition() const",93957339106320,93957339106410],["v8::internal::ScopeInfo::SetPositionInfo(int, int)",93957339106512,93957339106709],["v8::internal::ScopeInfo::ModuleDescriptorInfo() const",93957339106880,93957339107056],["std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >::__grow_by_and_replace(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned short const*)",93957342226176,93957342227531],["v8_inspector::protocol::Console::DomainDispatcherImpl::clearMessages(v8_crdtp::Dispatchable const&)",93957342234976,93957342235128],["v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::~DomainDispatcherImpl()",93957342235888,93957342235916],["v8_inspector::protocol::Debugger::ScriptPosition::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342236432,93957342236561],["v8_inspector::protocol::Debugger::CallFrame::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342237040,93957342237477],["v8_inspector::protocol::Debugger::SearchMatch::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342237744,93957342237877],["v8_inspector::protocol::Debugger::BreakLocation::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342238032,93957342238239],["v8_inspector::protocol::Debugger::Frontend::breakpointResolved(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::Debugger::Location, std::__1::default_delete<v8_inspector::protocol::Debugger::Location> >)",93957342238384,93957342238575],["__wcpcpy_chk",139871564359840,139871564359889],["__vswprintf_chk",139871564360656,139871564360697],["__vwprintf_chk",139871564361104,139871564361128],["__fgetws_chk",139871564361168,139871564361539],["v8::internal::StackFrameIterator::Advance()",93957336569104,93957336569678],["v8::internal::SafeStackFrameIterator::SafeStackFrameIterator(v8::internal::Isolate*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)",93957336573104,93957336574154],["v8::internal::CommonFrame::GetCallerStackPointer() const",93957336575920,93957336575934],["v8::internal::EntryFrame::GetCallerState(v8::internal::StackFrame::State*) const",93957336576064,93957336576185],["v8::internal::ExitFrame::ComputeCallerState(v8::internal::StackFrame::State*) const",93957336576352,93957336576427],["v8::internal::BuiltinExitFrame::function() const",93957336576640,93957336576654],["v8::internal::BuiltinExitFrame::IsConstructor() const",93957336576672,93957336576698],["v8::internal::BuiltinExitFrame::ComputeParametersCount() const",93957336576736,93957336576754],["v8::internal::FunctionTemplateInfo::TryGetCachedPropertyName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957339071264,93957339071396],["v8::internal::OrderedHashSet::ConvertToKeysArray(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashSet>, v8::internal::GetKeysConversion)",93957339079376,93957339080011],["v8::internal::OSROptimizedCodeCache::GetOptimizedCode(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::BytecodeOffset, v8::internal::Isolate*)",93957339084944,93957339085184],["v8::internal::PropertyDescriptor::ToPropertyDescriptorObject(v8::internal::Isolate*)",93957339090144,93957339090596],["v8::internal::Descriptor::DataField(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, int, v8::internal::PropertyAttributes, v8::internal::Representation)",93957339091136,93957339091229],["v8::internal::PropertyDetails::PrintAsFastTo(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::PropertyDetails::PrintMode)",93957339091520,93957339092043],["v8::internal::ScopeInfo::set(int, v8::internal::Smi)",93957339097632,93957339097651],["v8::internal::Handle<v8::internal::ModuleRequest> v8::internal::ModuleRequest::New<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::FixedArray>, int)",93957339103360,93957339103646],["v8::internal::ScopeInfo::CreateForWithScope(v8::internal::Isolate*, v8::internal::MaybeHandle<v8::internal::ScopeInfo>)",93957339104544,93957339104756],["v8::internal::ScopeInfo::IsEmpty() const",93957339104800,93957339104817],["v8::internal::ScopeInfo::is_script_scope() const",93957339104848,93957339104871],["v8::internal::ScopeInfo::language_mode() const",93957339104912,93957339104929],["v8::internal::ScopeInfo::ContextLength() const",93957339104960,93957339105115],["v8::internal::ScopeInfo::HasClassBrand() const",93957339105152,93957339105169],["v8::internal::ScopeInfo::HasFunctionName() const",93957339105216,93957339105232],["v8::internal::ScopeInfo::HasPositionInfo() const",93957339105248,93957339105281],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleNull()",93957342222528,93957342222743],["std::__1::__hash_table<v8_inspector::String16, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, std::__1::allocator<v8_inspector::String16> >::__rehash(unsigned long)",93957342230672,93957342231531],["v8_inspector::protocol::HeapProfiler::Frontend::flush()",93957342234512,93957342234526],["v8_inspector::protocol::Console::DomainDispatcherImpl::enable(v8_crdtp::Dispatchable const&)",93957342235296,93957342235448],["v8_inspector::protocol::Console::ConsoleMessage::~ConsoleMessage()",93957342235760,93957342235876],["void std::__1::__function::__policy_invoker<void (v8_crdtp::Dispatchable const&)>::__call_impl<std::__1::__function::__default_alloc_func<v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned char>)::$_9, void (v8_crdtp::Dispatchable const&)> >(std::__1::__function::__policy_storage const*, v8_crdtp::Dispatchable const&)",93957342235920,93957342235953],["v8_inspector::protocol::Debugger::Location::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342236256,93957342236423],["v8_inspector::protocol::Debugger::LocationRange::deserializer_descriptor()",93957342236576,93957342236849],["__wcscpy_chk",139871564359680,139871564359732],["__wcscat_chk",139871564359936,139871564360036],["__swprintf_chk",139871564360448,139871564360650],["__wprintf_chk",139871564360704,139871564360900],["v8::internal::Execution::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*)",93957336566496,93957336566616],["v8::internal::StackFrame::LookupCode() const",93957336570880,93957336570913],["v8::internal::StackTraceFrameIterator::FrameFunctionCount() const",93957336572736,93957336572847],["v8::internal::SafeStackFrameIterator::Advance()",93957336574704,93957336574940],["v8::internal::StackFrame::GetCallerState(v8::internal::StackFrame::State*) const",93957336575872,93957336575907],["v8::internal::NativeFrame::ComputeCallerState(v8::internal::StackFrame::State*) const",93957336575936,93957336576011],["v8::internal::RegExpMacroAssembler::BindJumpTarget(v8::internal::Label*)",93957336576048,93957336576062],["v8::internal::CWasmEntryFrame::GetCallerState(v8::internal::StackFrame::State*) const",93957336576192,93957336576313],["v8::internal::NumberDictionary::Set(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::PropertyDetails)",93957339066384,93957339066525],["v8::internal::JSDataView::BodyDescriptor::IsValidSlot(v8::internal::Map, v8::internal::HeapObject, int)",93957339075056,93957339075165],["v8::internal::OrderedHashTableIterator<v8::internal::JSSetIterator, v8::internal::OrderedHashSet>::HasMore()",93957339077712,93957339078050],["v8::internal::MaybeHandle<v8::internal::OrderedHashMap> v8::internal::OrderedHashTable<v8::internal::OrderedHashMap, 2>::Rehash<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashMap>, int)",93957339081152,93957339082539],["v8::internal::OSROptimizedCodeCache::Compact(v8::internal::Handle<v8::internal::NativeContext>)",93957339083728,93957339084301],["v8::internal::OSROptimizedCodeCache::EvictMarkedCode(v8::internal::Isolate*)",93957339085648,93957339085815],["v8::internal::(anonymous namespace)::GetPropertyIfPresent(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>*)",93957339089728,93957339090000],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::PropertyAttributes const&)",93957339090832,93957339090990],["v8::internal::Descriptor::Descriptor(v8::internal::Handle<v8::internal::Name>, v8::internal::MaybeObjectHandle const&, v8::internal::PropertyDetails)",93957339091104,93957339091123],["v8::internal::Descriptor::DataField(v8::internal::Handle<v8::internal::Name>, int, v8::internal::PropertyAttributes, v8::internal::PropertyConstness, v8::internal::Representation, v8::internal::MaybeObjectHandle const&)",93957339091232,93957339091283],["v8::internal::Descriptor::AccessorConstant(v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957339091472,93957339091507],["v8::internal::Handle<v8::internal::ScopeInfo> v8::internal::ScopeInfo::Create<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::Scope*, v8::internal::MaybeHandle<v8::internal::ScopeInfo>)",93957339092048,93957339095764],["v8::internal::ScopeInfo::set(int, v8::internal::Object, v8::internal::WriteBarrierMode)",93957339097456,93957339097618],["v8::internal::Handle<v8::internal::ScopeInfo> v8::internal::ScopeInfo::Create<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Zone*, v8::internal::Scope*, v8::internal::MaybeHandle<v8::internal::ScopeInfo>)",93957339097664,93957339101380],["v8::internal::Handle<v8::internal::ModuleRequest> v8::internal::ModuleRequest::New<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::FixedArray>, int)",93957339103072,93957339103358],["v8::internal::Handle<v8::internal::SourceTextModuleInfoEntry> v8::internal::SourceTextModuleInfoEntry::New<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::PrimitiveHeapObject>, v8::internal::Handle<v8::internal::PrimitiveHeapObject>, v8::internal::Handle<v8::internal::PrimitiveHeapObject>, int, int, int, int)",93957339103648,93957339104085],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleMapEnd()",93957342220960,93957342220979],["std::__1::__shared_ptr_emplace<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::allocator<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >::~__shared_ptr_emplace()",93957342225072,93957342225092],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > >, std::__1::__unordered_map_hasher<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > >, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, true>, std::__1::__unordered_map_equal<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > >, std::__1::equal_to<v8_inspector::String16>, std::__1::hash<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8::Global<v8::Script>, std::__1::default_delete<v8::Global<v8::Script> > > > > >::__emplace_unique_key_args<v8_inspector::String16, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16 const&>, std::__1::tuple<> >(v8_inspector::String16 const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8_inspector::String16 const&>&&, std::__1::tuple<>&&)",93957342228304,93957342230285],["std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> > >, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> > >, std::__1::__unordered_map_hasher<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> > >, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, true>, std::__1::__unordered_map_equal<v8_inspector::String16, std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> > >, std::__1::equal_to<v8_inspector::String16>, std::__1::hash<v8_inspector::String16>, true>, std::__1::allocator<std::__1::__hash_value_type<v8_inspector::String16, std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> > > > >::find<v8_inspector::String16>(v8_inspector::String16 const&) const",93957342232544,93957342233312],["v8_inspector::protocol::Console::Frontend::messageAdded(std::__1::unique_ptr<v8_inspector::protocol::Console::ConsoleMessage, std::__1::default_delete<v8_inspector::protocol::Console::ConsoleMessage> >)",93957342234368,93957342234509],["v8_inspector::protocol::Console::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned char>)",93957342234528,93957342234974],["v8_inspector::protocol::Console::DomainDispatcherImpl::disable(v8_crdtp::Dispatchable const&)",93957342235136,93957342235288],["v8_inspector::protocol::Console::Dispatcher::wire(v8_crdtp::UberDispatcher*, v8_inspector::protocol::Console::Backend*)",93957342235456,93957342235624],["__realpath_chk",139871564359072,139871564359092],["__wmemmove_chk",139871564359776,139871564359801],["__wcsncpy_chk",139871564359904,139871564359929],["__wcsncat_chk",139871564360048,139871564360317],["v8::internal::PerfJitLogger::LogRecordedBuffer(v8::internal::wasm::WasmCode const*, char const*, int)",93957336560800,93957336561220],["v8::internal::StackFrameIteratorBase::StackFrameIteratorBase(v8::internal::Isolate*, bool)",93957336567312,93957336568385],["v8::internal::StackFrame::ComputeType(v8::internal::StackFrameIteratorBase const*, v8::internal::StackFrame::State*)",93957336570176,93957336570619],["v8::internal::StackTraceFrameIterator::StackTraceFrameIterator(v8::internal::Isolate*)",93957336570992,93957336571090],["v8::internal::StackTraceFrameIterator::StackTraceFrameIterator(v8::internal::Isolate*, v8::internal::StackFrameId)",93957336571392,93957336572721],["v8::internal::SafeStackFrameIterator::IsNoFrameBytecodeHandlerPc(v8::internal::Isolate*, unsigned long, unsigned long) const",93957336572848,93957336573094],["v8::internal::(anonymous namespace)::IsInterpreterFramePc(v8::internal::Isolate*, unsigned long, v8::internal::StackFrame::State*)",93957336574160,93957336574690],["v8::internal::SafeStackFrameIterator::AdvanceOneFrame()",93957336574944,93957336575382],["v8::internal::FixedArrayBase::IsCowArray() const",93957339060208,93957339060242],["v8::internal::JSWeakCollection::GetEntries(v8::internal::Handle<v8::internal::JSWeakCollection>, int)",93957339068592,93957339069559],["void v8::internal::CallIterateBody::apply<v8::internal::DataHandler::BodyDescriptor, v8::internal::ObjectVisitor>(v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957339074592,93957339074669],["v8::internal::OrderedHashTable<v8::internal::OrderedHashSet, 1>::Clear(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashSet>)",93957339075456,93957339075868],["v8::internal::OrderedHashTable<v8::internal::OrderedHashMap, 2>::Clear(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashMap>)",93957339077040,93957339077468],["v8::internal::OrderedHashTableIterator<v8::internal::JSMapIterator, v8::internal::OrderedHashMap>::HasMore()",93957339078384,93957339078744],["v8::internal::OrderedHashSet::Rehash(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashSet>)",93957339081088,93957339081107],["v8::internal::OSROptimizedCodeCache::AddOptimizedCode(v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Code>, v8::internal::BytecodeOffset)",93957339082624,93957339082909],["v8::internal::OSROptimizedCodeCache::Clear(v8::internal::NativeContext)",93957339083568,93957339083721],["v8::internal::OSROptimizedCodeCache::MoveEntry(int, int, v8::internal::Isolate*)",93957339084304,93957339084929],["v8::internal::OSROptimizedCodeCache::ClearEntry(int, v8::internal::Isolate*)",93957339085184,93957339085636],["v8::internal::PropertyDescriptor::ToObject(v8::internal::Isolate*)",93957339085824,93957339087709],["v8::internal::PropertyDescriptor::ToPropertyDescriptor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDescriptor*)",93957339087984,93957339089720],["v8::internal::PropertyDescriptor::CompletePropertyDescriptor(v8::internal::Isolate*, v8::internal::PropertyDescriptor*)",93957339090000,93957339090135],["v8::internal::FieldIndex::ForDescriptor(v8::internal::IsolateRoot, v8::internal::Map, v8::internal::InternalIndex)",93957339090608,93957339090827],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::PropertyConstness)",93957339090992,93957339091053],["v8_crdtp::ProtocolTypeTraits<std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> >, void>::Deserialize(v8_crdtp::DeserializerState*, std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> >*)",93957342218208,93957342220107],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleBinary(v8_crdtp::span<unsigned char>)",93957342221584,93957342221859],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::AddStringToParent(v8_inspector::String16)",93957342222768,93957342224859],["std::__1::__shared_ptr_emplace<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::allocator<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >::__on_zero_shared()",93957342225152,93957342225180],["std::__1::__hash_iterator<std::__1::__hash_node<v8_inspector::String16, void*>*> std::__1::__hash_table<v8_inspector::String16, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, std::__1::allocator<v8_inspector::String16> >::find<v8_inspector::String16>(v8_inspector::String16 const&)",93957342227536,93957342228304],["std::__1::__hash_table<v8_inspector::String16, std::__1::hash<v8_inspector::String16>, std::__1::equal_to<v8_inspector::String16>, std::__1::allocator<v8_inspector::String16> >::rehash(unsigned long)",93957342230288,93957342230659],["void std::__1::vector<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >::__push_back_slow_path<v8_inspector::String16 const&>(v8_inspector::String16 const&)",93957342231536,93957342232542],["void std::__1::vector<std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode> >, std::__1::allocator<std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode> > > >::__emplace_back_slow_path<std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode> > >(std::__1::unique_ptr<v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode, std::__1::default_delete<v8_inspector::protocol::HeapProfiler::SamplingHeapProfileNode> >&&)",93957342233312,93957342234055],["__readlink_chk",139871564358976,139871564358992],["__fread_unlocked_chk",139871564359472,139871564359603],["__wmemcpy_chk",139871564359744,139871564359769],["__wmempcpy_chk",139871564359808,139871564359833],["v8::internal::DescriptorArray::PrintDescriptorDetails(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::InternalIndex, v8::internal::PropertyDetails::PrintMode)",93957336556096,93957336556426],["v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*)",93957336562208,93957336562487],["v8::internal::(anonymous namespace)::InvokeWithTryCatch(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&)",93957336566928,93957336567173],["v8::internal::StackFrameIterator::StackFrameIterator(v8::internal::Isolate*, v8::internal::ThreadLocalTop*)",93957336568448,93957336568486],["v8::internal::StackFrameIterator::Reframe()",93957336569680,93957336570166],["v8::internal::JavaScriptFrame::Iterate(v8::internal::RootVisitor*) const",93957336570624,93957336570877],["v8::internal::JavaScriptFrameIterator::Advance()",93957336570928,93957336570984],["v8::internal::StackTraceFrameIterator::IsValidFrame(v8::internal::StackFrame*) const",93957336571104,93957336571318],["v8::internal::Script::GetColumnNumber(v8::internal::Handle<v8::internal::Script>, int)",93957339058256,93957339058357],["v8::internal::JSPromise::Reject(v8::internal::Handle<v8::internal::JSPromise>, v8::internal::Handle<v8::internal::Object>, bool)",93957339063184,93957339063743],["v8::internal::JSMap::Clear(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSMap>)",93957339067056,93957339067284],["v8::internal::PropertyCell::InvalidateProtector()",93957339070672,93957339070742],["v8::internal::JSFinalizationRegistry::RemoveCellFromUnregisterTokenMap(v8::internal::Isolate*, unsigned long, unsigned long)",93957339071776,93957339072893],["v8::internal::JSWeakCollection::BodyDescriptorImpl::IsValidSlot(v8::internal::Map, v8::internal::HeapObject, int)",93957339074848,93957339074933],["v8::internal::MaybeHandle<v8::internal::OrderedHashSet> v8::internal::OrderedHashTable<v8::internal::OrderedHashSet, 1>::EnsureGrowable<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashSet>)",93957339075296,93957339075366],["v8::internal::OrderedHashTable<v8::internal::OrderedHashSet, 1>::FindEntry(v8::internal::Isolate*, v8::internal::Object)",93957339076112,93957339076611],["v8::internal::OrderedHashTable<v8::internal::OrderedHashMap, 2>::Shrink(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashMap>)",93957339076960,93957339077025],["v8::internal::MaybeHandle<v8::internal::OrderedHashMap> v8::internal::OrderedHashMap::Allocate<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType)",93957339077472,93957339077701],["v8::internal::OrderedHashTableIterator<v8::internal::JSMapIterator, v8::internal::OrderedHashMap>::Transition()",93957339078064,93957339078372],["v8::internal::OrderedHashSet::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashSet>, v8::internal::Handle<v8::internal::Object>)",93957339078752,93957339079364],["v8::internal::MaybeHandle<v8::internal::OrderedHashSet> v8::internal::OrderedHashTable<v8::internal::OrderedHashSet, 1>::Rehash<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashSet>, int)",93957339080016,93957339081079],["v8::internal::OrderedHashMap::Rehash(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashMap>)",93957339081120,93957339081139],["v8::internal::OrderedHashMap::GetHash(v8::internal::Isolate*, unsigned long)",93957339082544,93957339082616],["v8::internal::OSROptimizedCodeCache::GrowOSRCache(v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::OSROptimizedCodeCache>*)",93957339082912,93957339083196],["v8_inspector::protocol::DictionaryValue::clone() const",93957342216096,93957342216983],["v8_inspector::protocol::BinaryValue::~BinaryValue()",93957342220208,93957342220281],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleString8(v8_crdtp::span<unsigned char>)",93957342221456,93957342221517],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleInt32(int)",93957342222112,93957342222320],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleError(v8_crdtp::Status)",93957342222752,93957342222765],["v8_inspector::protocol::Binary::fromSpan(unsigned char const*, unsigned long)",93957342224864,93957342225059],["std::__1::__shared_ptr_emplace<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::allocator<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >::~__shared_ptr_emplace()",93957342225104,93957342225142],["std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> >::operator=(std::__1::basic_string<unsigned short, std::__1::char_traits<unsigned short>, std::__1::allocator<unsigned short> > const&)",93957342225184,93957342226166],["__pread_chk",139871564358864,139871564358880],["__getwd_chk",139871564359008,139871564359050],["__fread_chk",139871564359104,139871564359472],["__wctomb_chk",139871564359616,139871564359667],["bool std::__1::__insertion_sort_incomplete<bool (*&)(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&), v8::internal::GDBJITInterface::LineInfo::PCInfo*>(v8::internal::GDBJITInterface::LineInfo::PCInfo*, v8::internal::GDBJITInterface::LineInfo::PCInfo*, bool (*&)(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&))",93957336550512,93957336551895],["v8::internal::PerfJitLogger::~PerfJitLogger()",93957336557408,93957336557436],["v8::internal::PerfJitLogger::CodeMoveEvent(v8::internal::AbstractCode, v8::internal::AbstractCode)",93957336562128,93957336562186],["v8::internal::Execution::CallBuiltin(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*)",93957336566048,93957336566359],["v8::internal::Execution::TryCall(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Execution::MessageHandling, v8::internal::MaybeHandle<v8::internal::Object>*, bool)",93957336566624,93957336566924],["v8::internal::Execution::TryRunMicrotasks(v8::internal::Isolate*, v8::internal::MicrotaskQueue*, v8::internal::MaybeHandle<v8::internal::Object>*)",93957336567184,93957336567304],["v8::internal::StackFrameIterator::StackFrameIterator(v8::internal::Isolate*)",93957336568400,93957336568442],["v8::internal::StackFrameIterator::Reset(v8::internal::ThreadLocalTop*)",93957336568496,93957336569095],["v8::internal::DescriptorArray::UpdateNumberOfMarkedDescriptors(unsigned int, short)",93957339053504,93957339053610],["v8::internal::JSArray::SetLengthWouldNormalize(unsigned int)",93957339058816,93957339059002],["v8::internal::JSPromise::async_task_id() const",93957339060944,93957339060964],["v8::internal::StringSet::Has(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957339065392,93957339065742],["v8::internal::JSSet::Clear(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSSet>)",93957339066672,93957339066900],["v8::internal::JSWeakCollection::Set(v8::internal::Handle<v8::internal::JSWeakCollection>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int)",93957339067536,93957339068076],["v8::internal::PropertyCell::InitialType(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957339069968,93957339069994],["v8::internal::JSGeneratorObject::source_position() const",93957339070912,93957339071017],["v8::internal::Smi::LexicographicCompare(v8::internal::Isolate*, v8::internal::Smi, v8::internal::Smi)",93957339071408,93957339071772],["void v8::internal::BodyDescriptorApply<v8::internal::CallIterateBody, void, v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*>(v8::internal::InstanceType, v8::internal::Map, v8::internal::HeapObject, int, v8::internal::ObjectVisitor*)",93957339072896,93957339074580],["v8::internal::WasmInstanceObject::BodyDescriptor::IsValidSlot(v8::internal::Map, v8::internal::HeapObject, int)",93957339074672,93957339074841],["v8::internal::JSArrayBuffer::BodyDescriptor::IsValidSlot(v8::internal::Map, v8::internal::HeapObject, int)",93957339074944,93957339075053],["v8::internal::JSTypedArray::BodyDescriptor::IsValidSlot(v8::internal::Map, v8::internal::HeapObject, int)",93957339075168,93957339075282],["v8::internal::OrderedHashTable<v8::internal::OrderedHashSet, 1>::Shrink(v8::internal::Isolate*, v8::internal::Handle<v8::internal::OrderedHashSet>)",93957339075376,93957339075441],["v8::internal::MaybeHandle<v8::internal::OrderedHashSet> v8::internal::OrderedHashSet::Allocate<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType)",93957339075872,93957339076101],["v8::internal::OrderedHashTable<v8::internal::OrderedHashSet, 1>::Delete(v8::internal::Isolate*, v8::internal::OrderedHashSet, v8::internal::Object)",93957339076624,93957339076871],["v8_inspector::protocol::DictionaryValue::getObject(v8_inspector::String16 const&) const",93957342213200,93957342213243],["v8_inspector::protocol::ListValue::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342217312,93957342217807],["v8_inspector::protocol::StringValue::~StringValue()",93957342220128,93957342220160],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::~ValueParserHandler()",93957342220368,93957342220468],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleArrayBegin()",93957342220992,93957342221453],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleString16(v8_crdtp::span<unsigned short>)",93957342221520,93957342221581],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleDouble(double)",93957342221872,93957342222105],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleBool(bool)",93957342222320,93957342222528],["__chk_fail",139871564357696,139871564357712],["__recv_chk",139871564358896,139871564358915],["__readlinkat_chk",139871564358992,139871564359008],["__getcwd_chk",139871564359056,139871564359072],["v8::internal::GDBJITInterface::DebugAbbrevSection::WriteBodyInternal(v8::internal::GDBJITInterface::Writer*)",93957336538928,93957336541802],["v8::internal::HeapNumber::HeapNumberShortPrint(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957336553376,93957336553589],["v8::internal::PerfJitLogger::PerfJitLogger(v8::internal::Isolate*)",93957336556816,93957336557180],["v8::internal::PerfJitLogger::LogWriteDebugInfo(v8::internal::Handle<v8::internal::Code>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336558288,93957336559770],["v8::internal::PerfJitLogger::LogWriteDebugInfo(v8::internal::wasm::WasmCode const*)",93957336561232,93957336562125],["v8::base::LazyInstanceImpl<v8::base::RecursiveMutex, v8::base::StaticallyAllocatedInstanceTrait<v8::base::RecursiveMutex>, v8::base::DefaultConstructTrait<v8::base::RecursiveMutex>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::base::RecursiveMutex> >::InitInstance(void*)",93957336562192,93957336562202],["v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&)",93957336562496,93957336566047],["v8::internal::Execution::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*)",93957336566368,93957336566488],["v8::internal::ArrayList::Elements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ArrayList>)",93957339048640,93957339048724],["v8::internal::JSArray::ArrayJoinConcatToSequentialString(v8::internal::Isolate*, unsigned long, long, unsigned long, unsigned long)",93957339054912,93957339056015],["v8::internal::Script::GetNameOrSourceURL()",93957339058576,93957339058617],["v8::internal::AllocationSite::IsNested()",93957339059728,93957339059826],["v8::internal::JSPromise::status() const",93957339060864,93957339060881],["v8::internal::JSPromise::Fulfill(v8::internal::Handle<v8::internal::JSPromise>, v8::internal::Handle<v8::internal::Object>)",93957339061008,93957339061323],["v8::internal::StringSet::New(v8::internal::Isolate*)",93957339064896,93957339065007],["v8::internal::SimpleNumberDictionary::Set(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SimpleNumberDictionary>, unsigned int, v8::internal::Handle<v8::internal::Object>)",93957339066240,93957339066253],["v8::internal::JSSet::Initialize(v8::internal::Handle<v8::internal::JSSet>, v8::internal::Isolate*)",93957339066528,93957339066665],["v8::internal::JSMap::Initialize(v8::internal::Handle<v8::internal::JSMap>, v8::internal::Isolate*)",93957339066912,93957339067049],["v8::internal::JSWeakCollection::Initialize(v8::internal::Handle<v8::internal::JSWeakCollection>, v8::internal::Isolate*)",93957339067296,93957339067533],["v8::internal::JSWeakCollection::Delete(v8::internal::Handle<v8::internal::JSWeakCollection>, v8::internal::Handle<v8::internal::Object>, int)",93957339068080,93957339068591],["v8::internal::PropertyCell::InvalidateAndReplaceEntry(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>, v8::internal::InternalIndex, v8::internal::PropertyDetails, v8::internal::Handle<v8::internal::Object>)",93957339069568,93957339069965],["v8::internal::PropertyCell::PrepareForAndSetValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails)",93957339070000,93957339070664],["v8::internal::PropertyCell::CheckDataIsCompatible(v8::internal::PropertyDetails, v8::internal::Object)",93957339070752,93957339070899],["v8::internal::AccessCheckInfo::Get(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>)",93957339071024,93957339071256],["v8_inspector::protocol::DictionaryValue::setArray(v8_inspector::String16 const&, std::__1::unique_ptr<v8_inspector::protocol::ListValue, std::__1::default_delete<v8_inspector::protocol::ListValue> >)",93957342211344,93957342212079],["v8_inspector::protocol::DictionaryValue::doubleProperty(v8_inspector::String16 const&, double) const",93957342214656,93957342214734],["v8_inspector::protocol::ListValue::~ListValue()",93957342217056,93957342217172],["v8_inspector::protocol::ListValue::pushValue(std::__1::unique_ptr<v8_inspector::protocol::Value, std::__1::default_delete<v8_inspector::protocol::Value> >)",93957342218048,93957342218150],["v8_crdtp::ProtocolTypeTraits<std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> >, void>::Serialize(std::__1::unique_ptr<v8_inspector::protocol::DictionaryValue, std::__1::default_delete<v8_inspector::protocol::DictionaryValue> > const&, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*)",93957342220112,93957342220128],["v8_inspector::protocol::StringValue::~StringValue()",93957342220160,93957342220208],["v8_inspector::protocol::BinaryValue::~BinaryValue()",93957342220288,93957342220364],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::HandleMapBegin()",93957342220480,93957342220959],["__fprintf_chk",139871564357008,139871564357196],["__fgets_unlocked_chk",139871564358624,139871564358791],["__pread64_chk",139871564358880,139871564358896],["__recvfrom_chk",139871564358928,139871564358965],["v8::internal::GDBJITInterface::ELF::Write(v8::internal::GDBJITInterface::Writer*)",93957336526912,93957336527153],["v8::internal::GDBJITInterface::DebugLineSection::ComparePCInfo(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&)",93957336547024,93957336547059],["v8::internal::GDBJITInterface::ELF::WriteSectionTable(v8::internal::GDBJITInterface::Writer*)",93957336552240,93957336552956],["v8::internal::Map::MapPrint(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957336553680,93957336555811],["v8::internal::PerfJitLogger::OpenJitDumpFile()",93957336556432,93957336556801],["v8::internal::PerfJitLogger::~PerfJitLogger()",93957336557184,93957336557405],["v8::internal::PerfJitLogger::LogRecordedBuffer(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo>, char const*, int)",93957336557440,93957336558279],["v8::internal::PerfJitLogger::LogWriteUnwindingInfo(v8::internal::Code)",93957336559776,93957336560790],["v8::internal::JSArray::ArraySetLength(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>)",93957339041952,93957339042879],["v8::internal::PrototypeUsers::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WeakArrayList>, v8::internal::Handle<v8::internal::Map>, int*)",93957339050896,93957339051851],["v8::internal::Name::ToFunctionName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::String>)",93957339054528,93957339054690],["v8::internal::Script::GetPositionInfo(v8::internal::Handle<v8::internal::Script>, int, v8::internal::Script::PositionInfo*, v8::internal::Script::OffsetFlag)",93957339057072,93957339057172],["v8::internal::Script::GetLineNumber(v8::internal::Handle<v8::internal::Script>, int)",93957339058416,93957339058517],["v8::internal::Script::Iterator::Next()",93957339058656,93957339058770],["v8::internal::AllocationSite::ResetPretenureDecision()",93957339059648,93957339059684],["v8::internal::JSArray::MayHaveReadOnlyLength(v8::internal::Map)",93957339059888,93957339059933],["v8::internal::Symbol::PrivateSymbolToName() const",93957339060256,93957339060863],["v8::internal::JSPromise::Status(v8::Promise::PromiseState)",93957339060896,93957339060935],["v8::internal::JSPromise::set_async_task_id(int)",93957339060976,93957339061001],["v8::internal::JSPromise::TriggerPromiseReactions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::PromiseReaction::Type)",93957339061328,93957339063174],["v8::internal::JSPromise::Resolve(v8::internal::Handle<v8::internal::JSPromise>, v8::internal::Handle<v8::internal::Object>)",93957339063744,93957339064881],["v8::internal::StringSet::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::StringSet>, v8::internal::Handle<v8::internal::String>)",93957339065008,93957339065377],["v8::internal::ObjectHashSet::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectHashSet>, v8::internal::Handle<v8::internal::Object>)",93957339065744,93957339066237],["v8::internal::NumberDictionary::UpdateMaxNumberKey(unsigned int, v8::internal::Handle<v8::internal::JSObject>)",93957339066256,93957339066372],["v8_inspector::protocol::StringValue::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342210080,93957342210141],["v8_inspector::protocol::DictionaryValue::getBoolean(v8_inspector::String16 const&, bool*) const",93957342212976,93957342213035],["v8_inspector::protocol::DictionaryValue::booleanProperty(v8_inspector::String16 const&, bool) const",93957342214528,93957342214584],["std::__1::__wrap_iter<v8_inspector::String16*> std::__1::remove<std::__1::__wrap_iter<v8_inspector::String16*>, v8_inspector::String16>(std::__1::__wrap_iter<v8_inspector::String16*>, std::__1::__wrap_iter<v8_inspector::String16*>, v8_inspector::String16 const&)",93957342214992,93957342215443],["v8_inspector::protocol::DictionaryValue::DictionaryValue()",93957342216992,93957342217045],["v8_inspector::protocol::ListValue::~ListValue()",93957342217184,93957342217297],["v8_inspector::protocol::ListValue::clone() const",93957342217808,93957342218038],["v8_inspector::protocol::ListValue::ListValue()",93957342218160,93957342218198],["__vsprintf_chk",139871564356496,139871564356540],["__vfprintf_chk",139871564357232,139871564357256],["__fgets_chk",139871564358240,139871564358611],["__read_chk",139871564358800,139871564358850],["v8::internal::GDBJITInterface::UnwindInfoSection::WriteFDEStateAfterRBPPush(v8::internal::GDBJITInterface::Writer*)",93957336520432,93957336520913],["v8::internal::GDBJITInterface::ELFSymbolTable::WriteBody(v8::internal::GDBJITInterface::Writer::Slot<v8::internal::GDBJITInterface::ELFSectionHeader>, v8::internal::GDBJITInterface::Writer*)",93957336527648,93957336528197],["v8::internal::GDBJITInterface::DebugLineSection::WriteBodyInternal(v8::internal::GDBJITInterface::Writer*)",93957336542640,93957336546710],["unsigned int std::__1::__sort4<bool (*&)(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&), v8::internal::GDBJITInterface::LineInfo::PCInfo*>(v8::internal::GDBJITInterface::LineInfo::PCInfo*, v8::internal::GDBJITInterface::LineInfo::PCInfo*, v8::internal::GDBJITInterface::LineInfo::PCInfo*, v8::internal::GDBJITInterface::LineInfo::PCInfo*, bool (*&)(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&))",93957336549376,93957336549981],["v8::internal::GDBJITInterface::ELF::WriteHeader(v8::internal::GDBJITInterface::Writer*)",93957336551904,93957336552233],["v8::base::TemplateHashMapImpl<void*, void*, v8::base::KeyEqualityMatcher<void*>, v8::base::DefaultAllocationPolicy>::Resize()",93957336552960,93957336553368],["v8::internal::Map::PrintMapDetails(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957336553600,93957336553669],["v8::internal::DescriptorArray::PrintDescriptors(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957336555824,93957336556085],["v8::internal::Object::WriteToReadOnlyProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>)",93957339034176,93957339034375],["v8::internal::DescriptorArray::CopyUpToAddAttributes(v8::internal::Isolate*, v8::internal::Handle<v8::internal::DescriptorArray>, int, v8::internal::PropertyAttributes, int)",93957339046544,93957339046999],["v8::internal::WeakArrayList::Append(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WeakArrayList>, v8::internal::MaybeObjectHandle const&, v8::internal::AllocationType)",93957339049664,93957339050340],["v8::internal::DescriptorArray::Initialize(v8::internal::EnumCache, v8::internal::HeapObject, int, int)",93957339052944,93957339053017],["v8::internal::AccessorPair::GetComponent(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::AccessorPair>, v8::internal::AccessorComponent)",93957339053920,93957339054181],["v8::internal::Relocatable::Iterate(v8::internal::RootVisitor*, char*)",93957339054768,93957339054839],["v8::internal::CacheInitialJSArrayMaps(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::Map>)",93957339056032,93957339056719],["v8::internal::Script::IsUserJavaScript() const",93957339058064,93957339058085],["v8::internal::Script::GetColumnNumber(int) const",93957339058368,93957339058408],["v8::internal::Script::GetLineNumber(int) const",93957339058528,93957339058568],["v8::internal::Script::Iterator::Iterator(v8::internal::Isolate*)",93957339058624,93957339058647],["v8::internal::JSArray::Initialize(v8::internal::Handle<v8::internal::JSArray>, int, int)",93957339058784,93957339058812],["v8::internal::JSProxy::SetPrototype(v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Object>, bool, v8::internal::ShouldThrow)",93957339059008,93957339059648],["v8::internal::AllocationSite::GetAllocationType() const",93957339059696,93957339059722],["v8::internal::AllocationSite::PretenureDecisionName(v8::internal::AllocationSite::PretenureDecision)",93957339059840,93957339059879],["v8::internal::JSArray::HasReadOnlyLength(v8::internal::Handle<v8::internal::JSArray>)",93957339059936,93957339060200],["v8_inspector::protocol::Value::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342209104,93957342209346],["v8_inspector::protocol::BinaryValue::clone() const",93957342210928,93957342210998],["v8_inspector::protocol::DictionaryValue::setDouble(v8_inspector::String16 const&, double)",93957342212160,93957342212241],["v8_inspector::protocol::DictionaryValue::getInteger(v8_inspector::String16 const&, int*) const",93957342213072,93957342213131],["v8_inspector::protocol::DictionaryValue::at(unsigned long) const",93957342213248,93957342214517],["v8_inspector::protocol::DictionaryValue::integerProperty(v8_inspector::String16 const&, int) const",93957342214592,93957342214648],["v8_inspector::protocol::DictionaryValue::remove(v8_inspector::String16 const&)",93957342214736,93957342214979],["v8_inspector::protocol::DictionaryValue::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342215456,93957342216094],["__strncat_chk",139871564355936,139871564356220],["__vsnprintf_chk",139871564356752,139871564356793],["__vprintf_chk",139871564357200,139871564357224],["__gets_chk",139871564357264,139871564357686],["v8::internal::EhFrameWriter::SetBaseAddressRegisterAndOffset(v8::internal::Register, int)",93957336514112,93957336514706],["v8::internal::GDBJITInterface::EventHandler(v8::JitCodeEvent const*)",93957336521936,93957336526476],["v8::internal::GDBJITInterface::ELFStringTable::WriteBody(v8::internal::GDBJITInterface::Writer::Slot<v8::internal::GDBJITInterface::ELFSectionHeader>, v8::internal::GDBJITInterface::Writer*)",93957336527456,93957336527488],["v8::internal::GDBJITInterface::ELFSymbolTable::WriteSymbolsList(v8::internal::ZoneChunkList<v8::internal::GDBJITInterface::ELFSymbol> const*, v8::internal::GDBJITInterface::Writer::Slot<v8::internal::GDBJITInterface::ELFSymbol::SerializedLayout>, v8::internal::GDBJITInterface::ELFStringTable*)",93957336528352,93957336528821],["v8::internal::GDBJITInterface::DebugAbbrevSection::WriteVariableAbbreviation(v8::internal::GDBJITInterface::Writer*, int, bool, bool)",93957336541808,93957336542633],["v8::internal::GDBJITInterface::DebugLineSection::WriteExtendedOpcode(v8::internal::GDBJITInterface::Writer*, v8::internal::GDBJITInterface::DebugLineSection::DWARF2ExtendedOpcode, unsigned long)",93957336546720,93957336547019],["void std::__1::__sort<bool (*&)(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&), v8::internal::GDBJITInterface::LineInfo::PCInfo*>(v8::internal::GDBJITInterface::LineInfo::PCInfo*, v8::internal::GDBJITInterface::LineInfo::PCInfo*, bool (*&)(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&))",93957336547072,93957336549361],["void std::__1::__insertion_sort_3<bool (*&)(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&), v8::internal::GDBJITInterface::LineInfo::PCInfo*>(v8::internal::GDBJITInterface::LineInfo::PCInfo*, v8::internal::GDBJITInterface::LineInfo::PCInfo*, bool (*&)(v8::internal::GDBJITInterface::LineInfo::PCInfo const&, v8::internal::GDBJITInterface::LineInfo::PCInfo const&))",93957336549984,93957336550499],["bool v8::internal::BodyDescriptorApply<v8::internal::CallIsValidSlot, bool, v8::internal::Map, v8::internal::HeapObject, int, int>(v8::internal::InstanceType, v8::internal::Map, v8::internal::HeapObject, int, int)",93957339027696,93957339028430],["v8::internal::JSProxy::CheckHasTrap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::JSReceiver>)",93957339038880,93957339039052],["v8::internal::JSProxy::SetPrivateSymbol(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Symbol>, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>)",93957339044784,93957339045384],["v8::internal::FixedArray::Shrink(v8::internal::Isolate*, int)",93957339047792,93957339047831],["v8::internal::WeakArrayList::EnsureSpace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WeakArrayList>, int, v8::internal::AllocationType)",93957339049056,93957339049120],["v8::internal::WeakArrayList::IsFull()",93957339050672,93957339050693],["v8::internal::PrototypeUsers::Compact(v8::internal::Handle<v8::internal::WeakArrayList>, v8::internal::Heap*, void (*)(v8::internal::HeapObject, int, int), v8::internal::AllocationType)",93957339052128,93957339052848],["v8::internal::DescriptorArray::Replace(v8::internal::InternalIndex, v8::internal::Descriptor*)",93957339053056,93957339053193],["v8::internal::AccessorPair::Copy(v8::internal::Isolate*, v8::internal::Handle<v8::internal::AccessorPair>)",93957339053616,93957339053907],["v8::internal::Name::ToFunctionName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>)",93957339054192,93957339054519],["v8::internal::Relocatable::PostGarbageCollectionProcessing(v8::internal::Isolate*)",93957339054704,93957339054761],["v8::internal::Relocatable::Iterate(v8::internal::Isolate*, v8::internal::RootVisitor*)",93957339054848,93957339054906],["v8::internal::StringHasher::MakeArrayIndexHash(unsigned int, int)",93957339056016,93957339056032],["v8::internal::Script::GetEvalPosition(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957339056720,93957339057063],["v8::internal::Script::GetPositionInfo(int, v8::internal::Script::PositionInfo*, v8::internal::Script::OffsetFlag) const",93957339057184,93957339058064],["v8::internal::Script::ContainsAsmModule()",93957339058096,93957339058252],["v8::internal::TorqueGeneratedFactory<v8::internal::Factory>::NewUncompiledDataWithoutPreparseData(v8::internal::Handle<v8::internal::String>, int, int, v8::internal::AllocationType)",93957342206432,93957342206712],["v8_inspector::protocol::FundamentalValue::asInteger(int*) const",93957342209488,93957342209513],["v8_inspector::protocol::BinaryValue::asBinary(v8_inspector::protocol::Binary*) const",93957342210800,93957342210885],["v8_inspector::protocol::DictionaryValue::~DictionaryValue()",93957342211232,93957342211260],["v8_inspector::protocol::DictionaryValue::setInteger(v8_inspector::String16 const&, int)",93957342212080,93957342212154],["v8_inspector::protocol::DictionaryValue::setString(v8_inspector::String16 const&, v8_inspector::String16 const&)",93957342212256,93957342212973],["v8_inspector::protocol::DictionaryValue::get(v8_inspector::String16 const&) const",93957342213040,93957342213068],["v8_inspector::protocol::DictionaryValue::getString(v8_inspector::String16 const&, v8_inspector::String16*) const",93957342213136,93957342213195],["__cyg_profile_func_enter",139871564354912,139871564354913],["__stpncpy_chk",139871564356256,139871564356281],["__snprintf_chk",139871564356544,139871564356746],["__printf_chk",139871564356800,139871564356996],["v8::internal::EhFrameWriter::WriteCie()",93957336504176,93957336505985],["_ZNSt3__16vectorIhN2v88internal13ZoneAllocatorIhEEE6insertIPhEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIhNS_15iterator_traitsIS9_E9referenceEEE5valueENS_11__wrap_iterIS7_EEE4typeENSD_IPKhEES9_S9_",93957336516144,93957336518308],["v8::internal::GDBJITInterface::UnwindInfoSection::WriteFDEStateAfterRBPPop(v8::internal::GDBJITInterface::Writer*)",93957336521296,93957336521886],["v8::internal::GDBJITInterface::ELFSection::PopulateHeader(v8::internal::GDBJITInterface::Writer::Slot<v8::internal::GDBJITInterface::ELFSectionHeader>)",93957336526560,93957336526655],["v8::internal::ZoneChunkList<v8::internal::GDBJITInterface::ELFSection*>::push_back(v8::internal::GDBJITInterface::ELFSection* const&)",93957336527168,93957336527443],["v8::internal::GDBJITInterface::FullHeaderELFSection::PopulateHeader(v8::internal::GDBJITInterface::Writer::Slot<v8::internal::GDBJITInterface::ELFSectionHeader>)",93957336527488,93957336527635],["v8::internal::GDBJITInterface::ELFSymbolTable::PopulateHeader(v8::internal::GDBJITInterface::Writer::Slot<v8::internal::GDBJITInterface::ELFSectionHeader>)",93957336528208,93957336528345],["v8::internal::GDBJITInterface::DebugInfoSection::WriteBodyInternal(v8::internal::GDBJITInterface::Writer*)",93957336528832,93957336538928],["v8::internal::Object::IsCodeLike(v8::internal::Isolate*) const",93957339021040,93957339021114],["v8::internal::JSMap::Rehash(v8::internal::Isolate*)",93957339030672,93957339030952],["v8::internal::Object::SetSuperProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::StoreOrigin, v8::Maybe<v8::internal::ShouldThrow>)",93957339036464,93957339037844],["v8::internal::JSProxy::GetPropertyAttributes(v8::internal::LookupIterator*)",93957339039968,93957339040151],["v8::internal::JSArray::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957339043584,93957339043697],["v8::internal::JSProxy::IsExtensible(v8::internal::Handle<v8::internal::JSProxy>)",93957339045968,93957339046520],["v8::internal::DescriptorArray::IsEqualUpTo(v8::internal::DescriptorArray, int)",93957339047344,93957339047469],["v8::internal::ArrayList::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ArrayList>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957339048144,93957339048577],["v8::internal::WeakArrayList::AddToEnd(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WeakArrayList>, v8::internal::MaybeObjectHandle const&)",93957339048736,93957339049041],["v8::internal::WeakArrayList::AddToEnd(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WeakArrayList>, v8::internal::MaybeObjectHandle const&, v8::internal::MaybeObjectHandle const&)",93957339049120,93957339049653],["v8::internal::WeakArrayList::Compact(v8::internal::Isolate*)",93957339050352,93957339050666],["v8::internal::WeakArrayList::CountLiveWeakReferences() const",93957339050704,93957339050889],["v8::internal::PrototypeUsers::ScanForEmptySlots(v8::internal::WeakArrayList)",93957339051856,93957339052119],["v8::internal::RegExpMatchInfo::ReserveCaptures(v8::internal::Isolate*, v8::internal::Handle<v8::internal::RegExpMatchInfo>, int)",93957339052848,93957339052931],["v8::internal::DescriptorArray::ClearEnumCache()",93957339053024,93957339053055],["v8::internal::DescriptorArray::InitializeOrChangeEnumCache(v8::internal::Handle<v8::internal::DescriptorArray>, v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::FixedArray>)",93957339053200,93957339053501],["cppgc::internal::Sweeper::FinishIfRunning()",93957342203280,93957342203294],["v8::internal::TorqueGeneratedFactory<v8::internal::Factory>::NewOnHeapBasicBlockProfilerData(v8::internal::Handle<v8::internal::ByteArray>, v8::internal::Handle<v8::internal::ByteArray>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, int, v8::internal::AllocationType)",93957342207824,93957342208596],["v8_inspector::protocol::FundamentalValue::asBoolean(bool*) const",93957342209408,93957342209433],["v8_inspector::protocol::FundamentalValue::clone() const",93957342209856,93957342210027],["v8_inspector::protocol::StringValue::clone() const",93957342210144,93957342210793],["v8_inspector::protocol::BinaryValue::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342210896,93957342210923],["v8_inspector::protocol::DictionaryValue::~DictionaryValue()",93957342211008,93957342211218],["v8_inspector::protocol::DictionaryValue::setBoolean(v8_inspector::String16 const&, bool)",93957342211264,93957342211338],["argp_usage",139871564352736,139871564352756],["__strcat_chk",139871564355744,139871564355860],["__strncpy_chk",139871564356224,139871564356249],["__sprintf_chk",139871564356288,139871564356493],["v8::internal::CompilationStatistics::RecordTotalStats(v8::internal::CompilationStatistics::BasicStats const&)",93957336500560,93957336500723],["v8::internal::EhFrameWriter::WriteEhFrameHdr(int)",93957336507920,93957336510163],["v8::internal::EhFrameWriter::Finish(int)",93957336515856,93957336516100],["v8::internal::GDBJITInterface::UnwindInfoSection::WriteFDE(v8::internal::GDBJITInterface::Writer*, int)",93957336519008,93957336519737],["v8::internal::GDBJITInterface::UnwindInfoSection::WriteFDEStateAfterRBPSet(v8::internal::GDBJITInterface::Writer*)",93957336520928,93957336521281],["v8::internal::GDBJITInterface::UnwindInfoSection::WriteBodyInternal(v8::internal::GDBJITInterface::Writer*)",93957336521888,93957336521926],["v8::internal::GDBJITInterface::ELFSection::WriteBody(v8::internal::GDBJITInterface::Writer::Slot<v8::internal::GDBJITInterface::ELFSectionHeader>, v8::internal::GDBJITInterface::Writer*)",93957336526480,93957336526551],["v8::internal::GDBJITInterface::ELF::ELF(v8::internal::Zone*)",93957336526656,93957336526906],["v8::internal::FunctionTemplateInfo::IsTemplateFor(v8::internal::Map)",93957339014528,93957339014953],["v8::internal::ClassPositions::BriefPrintDetails(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957339026032,93957339026122],["v8::internal::HeapObject::NeedsRehashing(v8::internal::InstanceType) const",93957339028912,93957339029026],["v8::internal::Object::SetProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::StoreOrigin, v8::Maybe<v8::internal::ShouldThrow>)",93957339031712,93957339031955],["v8::internal::PropertyCell::ClearAndInvalidate(v8::internal::ReadOnlyRoots)",93957339034656,93957339034846],["v8::internal::AccessorInfo::AppendUnique(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::FixedArray>, int)",93957339037952,93957339038512],["v8::internal::JSProxy::CheckDeleteTrap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::JSReceiver>)",93957339039616,93957339039788],["v8::internal::PropertyKeyToArrayLength(v8::internal::Handle<v8::internal::Object>, unsigned int*)",93957339041072,93957339041295],["v8::internal::JSArray::AnythingToArrayLength(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, unsigned int*)",93957339042880,93957339043582],["v8::internal::JSProxy::DefineOwnProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>)",93957339043712,93957339044769],["v8::internal::JSProxy::PreventExtensions(v8::internal::Handle<v8::internal::JSProxy>, v8::internal::ShouldThrow)",93957339045392,93957339045954],["v8::internal::DescriptorArray::CopyUpTo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::DescriptorArray>, int, int)",93957339046528,93957339046543],["v8::internal::DescriptorArray::CopyForFastObjectClone(v8::internal::Isolate*, v8::internal::Handle<v8::internal::DescriptorArray>, int, int)",93957339047008,93957339047330],["v8::internal::FixedArray::CopyTo(int, v8::internal::FixedArray, int, int) const",93957339047472,93957339047780],["v8::internal::ArrayList::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ArrayList>, v8::internal::Handle<v8::internal::Object>)",93957339047840,93957339048140],["v8::internal::ArrayList::New(v8::internal::Isolate*, int)",93957339048592,93957339048640],["cppgc::internal::PersistentRegion::Trace(cppgc::Visitor*)",93957342200912,93957342201332],["cppgc::internal::(anonymous namespace)::ThreadSafeStack<cppgc::internal::(anonymous namespace)::SpaceState::SweptPageState>::Pop()",93957342204848,93957342205338],["v8::internal::TorqueGeneratedFactory<v8::internal::Factory>::NewUncompiledDataWithPreparseData(v8::internal::Handle<v8::internal::String>, int, int, v8::internal::Handle<v8::internal::PreparseData>, v8::internal::AllocationType)",93957342207008,93957342207406],["v8_inspector::protocol::Value::parseBinary(unsigned char const*, unsigned long)",93957342208816,93957342208989],["v8_inspector::protocol::Value::clone() const",93957342209360,93957342209393],["v8_inspector::protocol::FundamentalValue::asDouble(double*) const",93957342209440,93957342209487],["v8_inspector::protocol::FundamentalValue::AppendSerialized(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*) const",93957342209520,93957342209849],["v8_inspector::protocol::StringValue::asString(v8_inspector::String16*) const",93957342210032,93957342210072],["argp_help",139871564346464,139871564346479],["__backtrace_symbols",139871564353392,139871564354118],["__stpcpy_chk",139871564355664,139871564355733],["__strcpy_chk",139871564355872,139871564355922],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)",93957336493328,93957336494646],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::OrderedStats>&&)",93957336503040,93957336503533],["v8::internal::EhFrameWriter::WriteSLeb128(int)",93957336506624,93957336507267],["v8::internal::EhFrameWriter::SetBaseAddressOffset(int)",93957336512976,93957336513516],["v8::internal::EhFrameWriter::RecordRegisterSavedToStack(int, int)",93957336514720,93957336515844],["v8::internal::EhFrameWriter::GetEhFrame(v8::internal::CodeDesc*)",93957336516112,93957336516135],["v8::internal::GDBJITInterface::UnwindInfoSection::WriteCIE(v8::internal::GDBJITInterface::Writer*)",93957336518320,93957336519006],["v8::internal::GDBJITInterface::UnwindInfoSection::WriteFDEStateOnEntry(v8::internal::GDBJITInterface::Writer*)",93957336519744,93957336520417],["v8::internal::Object::StrictEquals(v8::internal::Object)",93957339005328,93957339005653],["v8::internal::AccessorInfo::redirected_getter() const",93957339017056,93957339017133],["v8::internal::Object::ShortPrint(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957339021904,93957339021940],["v8::internal::HeapObject::Iterate(v8::internal::ObjectVisitor*)",93957339026704,93957339026816],["v8::internal::WasmArray::GcSafeSizeFor(v8::internal::Map, int)",93957339028688,93957339028759],["v8::internal::HeapObject::RehashBasedOnMap(v8::internal::Isolate*)",93957339029152,93957339029476],["v8::internal::HeapObject::IsExternal(v8::internal::Isolate*) const",93957339031248,93957339031308],["v8::internal::Object::SetPropertyInternal(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>, v8::internal::StoreOrigin, bool*)",93957339032256,93957339033280],["v8::internal::Object::SetDataProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>)",93957339034384,93957339034646],["v8::internal::Object::AddDataProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::Maybe<v8::internal::ShouldThrow>, v8::internal::StoreOrigin)",93957339034848,93957339036457],["v8::internal::Object::RedefineIncompatibleProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>)",93957339037856,93957339037941],["v8::internal::JSProxy::IsArray(v8::internal::Handle<v8::internal::JSProxy>)",93957339038512,93957339038871],["v8::internal::JSProxy::DeletePropertyOrElement(v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Name>, v8::internal::LanguageMode)",93957339039056,93957339039608],["v8::internal::JSProxy::GetFunctionRealm(v8::internal::Handle<v8::internal::JSProxy>)",93957339039792,93957339039967],["v8::internal::JSProxy::GetOwnPropertyDescriptor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Name>, v8::internal::PropertyDescriptor*)",93957339040160,93957339041070],["v8::internal::JSArray::DefineOwnProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>)",93957339041296,93957339041952],["cppgc::internal::NormalPage::PayloadStart()",93957342199488,93957342199505],["cppgc::SourceLocation::ToString() const",93957342201824,93957342202368],["cppgc::internal::Sweeper::SweeperImpl::Finish()",93957342203600,93957342203922],["heap::base::internal::SegmentBase::GetSentinelSegmentAddress()",93957342205952,93957342206022],["v8::internal::TorqueGeneratedFactory<v8::internal::LocalFactory>::NewUncompiledDataWithoutPreparseData(v8::internal::Handle<v8::internal::String>, int, int, v8::internal::AllocationType)",93957342206720,93957342207002],["v8::internal::TorqueGeneratedFactory<v8::internal::LocalFactory>::NewUncompiledDataWithPreparseData(v8::internal::Handle<v8::internal::String>, int, int, v8::internal::Handle<v8::internal::PreparseData>, v8::internal::AllocationType)",93957342207408,93957342207809],["v8::bigint::Compare(v8::bigint::Digits, v8::bigint::Digits)",93957342208608,93957342208809],["v8_inspector::protocol::(anonymous namespace)::ValueParserHandler::~ValueParserHandler()",93957342208992,93957342209091],["_nss_files_parse_sgent",139871564328800,139871564329656],["argp_error",139871564346896,139871564347075],["__backtrace",139871564353152,139871564353382],["__backtrace_symbols_fd",139871564354128,139871564354903],["v8::internal::BasicBlockProfilerData::SetSchedule(std::__1::basic_ostringstream<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957336489568,93957336489638],["unsigned int std::__1::__sort5<v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)::$_1&, std::__1::pair<unsigned long, unsigned int>*>(std::__1::pair<unsigned long, unsigned int>*, std::__1::pair<unsigned long, unsigned int>*, std::__1::pair<unsigned long, unsigned int>*, std::__1::pair<unsigned long, unsigned int>*, std::__1::pair<unsigned long, unsigned int>*, v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)::$_1&)",93957336497808,93957336498328],["v8::internal::WriteLine(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, char const*, v8::internal::CompilationStatistics::BasicStats const&, v8::internal::CompilationStatistics::BasicStats const&)",93957336502000,93957336502496],["v8::internal::EhFrameWriter::EhFrameWriter(v8::internal::Zone*)",93957336503664,93957336503706],["v8::internal::EhFrameWriter::WriteFdeHeader()",93957336506000,93957336506622],["v8::internal::EhFrameWriter::WriteULeb128(unsigned int)",93957336507280,93957336507905],["v8::internal::EhFrameWriter::AdvanceLocation(int)",93957336510176,93957336512962],["v8::internal::EhFrameWriter::SetBaseAddressRegister(v8::internal::Register)",93957336513520,93957336514105],["v8::internal::Object::ConvertToUint32(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338994448,93957338994890],["v8::internal::Object::GetProperty(v8::internal::LookupIterator*, bool)",93957339010000,93957339010493],["v8::internal::FixedArray::SetAndGrow(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, int, v8::internal::Handle<v8::internal::Object>)",93957339015216,93957339015698],["v8::internal::Object::GetPrototypeChainRootMap(v8::internal::Isolate*) const",93957339018544,93957339018652],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::Brief const&)",93957339021264,93957339021407],["v8::internal::HeapObject::HeapObjectShortPrint(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957339022000,93957339025939],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::ScopeType)",93957339026272,93957339026462],["v8::internal::HeapObject::IterateBody(v8::internal::Map, int, v8::internal::ObjectVisitor*)",93957339027632,93957339027657],["v8::internal::TorqueGeneratedScopeInfo<v8::internal::ScopeInfo, v8::internal::HeapObject>::AllocatedSize() const",93957339028432,93957339028686],["v8::internal::HeapObject::NeedsRehashing() const",93957339028768,93957339028900],["v8::internal::HeapObject::CanBeRehashed() const",93957339029040,93957339029148],["v8::internal::DescriptorArray::Sort()",93957339029488,93957339030663],["v8::internal::JSSet::Rehash(v8::internal::Isolate*)",93957339030960,93957339031240],["v8::internal::DescriptorArray::GeneralizeAllFields()",93957339031312,93957339031699],["v8::internal::Object::SetProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::StoreOrigin, v8::Maybe<v8::internal::ShouldThrow>)",93957339031968,93957339032253],["v8::internal::JSProxy::SetProperty(v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>)",93957339033280,93957339034170],["cppgc::internal::FreeList::FreeList(cppgc::internal::FreeList&&)",93957342198736,93957342198816],["cppgc::internal::BaseSpace::AddPage(cppgc::internal::BasePage*)",93957342199632,93957342199913],["cppgc::internal::PersistentRegionLock::~PersistentRegionLock()",93957342201504,93957342201650],["cppgc::internal::StatsCollector::NotifyFreedMemory(long)",93957342203104,93957342203168],["cppgc::internal::Sweeper::SweeperImpl::FinishIfRunning()",93957342203296,93957342203595],["cppgc::internal::(anonymous namespace)::SweepFinalizer::FinalizeHeap(std::__1::vector<cppgc::internal::(anonymous namespace)::SpaceState, std::__1::allocator<cppgc::internal::(anonymous namespace)::SpaceState> >*)",93957342203936,93957342204845],["cppgc::internal::HeapVisitor<cppgc::internal::(anonymous namespace)::MutatorThreadSweeper>::Traverse(cppgc::internal::BasePage*)",93957342205344,93957342205951],["v8::internal::TorqueGeneratedFactory<v8::internal::Factory>::NewSloppyArgumentsElements(int, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::AllocationType)",93957342206032,93957342206425],["setsgent",139871564327248,139871564327450],["fgetsgent_r",139871564329840,139871564330500],["argp_state_help",139871564346480,139871564346629],["argp_parse",139871564348544,139871564352669],["v8::internal::TranslationArrayBuilder::StoreLiteral(int)",93957336484048,93957336485318],["v8::internal::BasicBlockProfilerData::CopyToJSHeap(v8::internal::Isolate*)",93957336490944,93957336491496],["void std::__1::__sort<v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)::$_1&, std::__1::pair<unsigned long, unsigned int>*>(std::__1::pair<unsigned long, unsigned int>*, std::__1::pair<unsigned long, unsigned int>*, v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)::$_1&)",93957336495952,93957336497532],["v8::internal::CompilationStatistics::RecordPhaseStats(char const*, char const*, v8::internal::CompilationStatistics::BasicStats const&)",93957336498960,93957336499915],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::AsPrintableStatistics const&)",93957336500736,93957336502000],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::internal::CompilationStatistics::PhaseStats>&&)",93957336502496,93957336503025],["v8::internal::EhFrameWriter::WriteEmptyEhFrame(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957336503536,93957336503661],["v8::internal::EhFrameWriter::Initialize()",93957336503712,93957336504165],["v8::internal::Handle<v8::internal::GlobalDictionary> v8::internal::Dictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::Add<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338987712,93957338987961],["v8::internal::Isolate::error_to_string()",93957339000288,93957339000402],["v8::internal::Object::InstanceOf(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957339007504,93957339007792],["v8::internal::JSProxy::CheckGetSetTrapResult(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::JSProxy::AccessKind)",93957339013216,93957339013551],["v8::internal::TemplateList::New(v8::internal::Isolate*, int)",93957339015136,93957339015159],["v8::internal::JSReceiver::GetPrototype(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>)",93957339016512,93957339016691],["v8::internal::AccessorInfo::IsCompatibleReceiverMap(v8::internal::Handle<v8::internal::AccessorInfo>, v8::internal::Handle<v8::internal::Map>)",93957339017216,93957339017321],["v8::internal::Object::ArraySpeciesConstructor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957339019040,93957339020406],["v8::internal::Object::ShortPrint(_IO_FILE*) const",93957339021120,93957339021253],["v8::internal::Object::ShortPrint(v8::internal::StringStream*) const",93957339021408,93957339021889],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::Object const&)",93957339021952,93957339021987],["v8::internal::CallableTask::BriefPrintDetails(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957339025952,93957339026029],["v8::internal::Tuple2::BriefPrintDetails(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957339026128,93957339026267],["v8::internal::Symbol::SymbolShortPrint(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957339026464,93957339026698],["v8::internal::HeapObject::SizeFromMap(v8::internal::Map) const",93957339026816,93957339027621],["v8::internal::HeapObject::IsValidSlot(v8::internal::Map, int)",93957339027664,93957339027689],["v8::internal::trap_handler::RegisterDefaultTrapHandler()",93957342197776,93957342197899],["cppgc::internal::HeapObjectHeader::GetName() const",93957342199184,93957342199220],["cppgc::internal::NormalPage::begin()",93957342199552,93957342199612],["cppgc::internal::PageBackend::FreeNormalPageMemory(unsigned long, unsigned char*)",93957342200176,93957342200423],["cppgc::internal::PersistentRegionLock::PersistentRegionLock()",93957342201344,93957342201490],["cppgc::internal::CrossThreadPersistentRegion::Trace(cppgc::Visitor*)",93957342201664,93957342201816],["cppgc::internal::StatsCollector::NotifySweepingCompleted()",93957342202368,93957342203092],["cppgc::internal::StatsCollector::RecordHistogramSample(cppgc::internal::StatsCollector::ScopeId, v8::base::TimeDelta)",93957342203168,93957342203268],["getsgnam",139871564325072,139871564325510],["getsgent_r",139871564327680,139871564327938],["sgetsgent_r",139871564329664,139871564329832],["argp_failure",139871564341120,139871564341290],["v8::internal::TranslationArrayBuilder::StoreDoubleRegister(v8::internal::XMMRegister)",93957336473808,93957336475078],["void std::__1::__function::__policy_invoker<void (unsigned char)>::__call_impl<std::__1::__function::__default_alloc_func<v8::base::VLQEncode<v8::internal::ZoneAllocator<unsigned char> >(std::__1::vector<unsigned char, v8::internal::ZoneAllocator<unsigned char> >*, int)::{lambda(unsigned char)#1}, void (unsigned char)> >(std::__1::__function::__policy_storage const*, unsigned char)",93957336488512,93957336489026],["v8::internal::BasicBlockProfiler::NewData(unsigned long)",93957336489664,93957336489937],["v8::internal::BasicBlockProfiler::HasData(v8::internal::Isolate*)",93957336492016,93957336492059],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void*>*>, bool> std::__1::__hash_table<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957336494656,93957336495952],["unsigned int std::__1::__sort3<v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)::$_1&, std::__1::pair<unsigned long, unsigned int>*>(std::__1::pair<unsigned long, unsigned int>*, std::__1::pair<unsigned long, unsigned int>*, std::__1::pair<unsigned long, unsigned int>*, v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)::$_1&)",93957336497536,93957336497799],["bool std::__1::__insertion_sort_incomplete<v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)::$_1&, std::__1::pair<unsigned long, unsigned int>*>(std::__1::pair<unsigned long, unsigned int>*, std::__1::pair<unsigned long, unsigned int>*, v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BasicBlockProfilerData const&)::$_1&)",93957336498336,93957336498951],["v8::internal::CompilationStatistics::RecordPhaseKindStats(char const*, v8::internal::CompilationStatistics::BasicStats const&)",93957336499920,93957336500557],["v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::IterationIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>)",93957338983776,93957338984033],["v8::internal::Object::NewStorageFor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Representation)",93957338992176,93957338992321],["v8::internal::Object::NoSideEffectsToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338995792,93957338999887],["v8::internal::Object::ConvertToIndex(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::MessageTemplate)",93957339002032,93957339002558],["v8::internal::Object::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957339005952,93957339006835],["v8::internal::Object::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::ElementTypes)",93957339008176,93957339009660],["v8::internal::JSProxy::GetProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, bool*)",93957339011024,93957339011830],["v8::internal::Object::ToInt32(int*)",93957339013952,93957339014057],["v8::internal::FunctionTemplateInfo::AllocateFunctionTemplateRareData(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FunctionTemplateInfo>)",93957339014960,93957339015124],["v8::internal::TemplateList::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::TemplateList>, v8::internal::Handle<v8::internal::Object>)",93957339015168,93957339015212],["v8::internal::JSProxy::GetPrototype(v8::internal::Handle<v8::internal::JSProxy>)",93957339015712,93957339016508],["v8::internal::PropertyCallbackArguments::CallAccessorGetter(v8::internal::Handle<v8::internal::AccessorInfo>, v8::internal::Handle<v8::internal::Name>)",93957339016704,93957339017049],["v8::internal::CallHandlerInfo::redirected_callback() const",93957339017136,93957339017204],["v8::internal::Object::SetPropertyWithAccessor(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>)",93957339017328,93957339018529],["v8::internal::Object::SameValueZero(v8::internal::Object)",93957339018656,93957339019029],["v8::internal::Object::SpeciesConstructor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSFunction>)",93957339020416,93957339021038],["v8::internal::RegExpMacroAssemblerX64::WriteCurrentPositionToRegister(int, int)",93957342195600,93957342195938],["v8::internal::BuildSpecialAddSet()",93957342198384,93957342198559],["cppgc::internal::FreeList::Add(cppgc::internal::FreeList::Block)",93957342198976,93957342199128],["cppgc::internal::LargePage::Destroy(cppgc::internal::LargePage*)",93957342199360,93957342199409],["cppgc::internal::NormalPage::PayloadEnd()",93957342199520,93957342199543],["cppgc::internal::LargePage::ObjectHeader()",93957342199616,93957342199630],["cppgc::internal::NormalPageMemoryRegion::Free(unsigned char*)",93957342199920,93957342200171],["cppgc::internal::PageBackend::FreeLargePageMemory(unsigned char*)",93957342200432,93957342200910],["fgetspent_r",139871564323264,139871564323908],["fgetsgent",139871564326016,139871564326537],["endsgent",139871564327456,139871564327678],["getsgnam_r",139871564327952,139871564328785],["v8::internal::TranslationArrayBuilder::BeginCapturedObject(int)",93957336463568,93957336464838],["v8::internal::TranslationArrayBuilder::StoreUint32StackSlot(int)",93957336478928,93957336480198],["v8::internal::TranslationArrayBuilder::StoreJSFrameFunction()",93957336487872,93957336487887],["v8::internal::BasicBlockProfiler::Get()",93957336489376,93957336489508],["v8::internal::BasicBlockProfilerData::SetBlockId(unsigned long, int)",93957336489648,93957336489660],["v8::internal::BasicBlockProfilerData::CopyFromJSHeap(v8::internal::OnHeapBasicBlockProfilerData)",93957336489952,93957336490935],["v8::internal::BasicBlockProfiler::ResetCounts(v8::internal::Isolate*)",93957336491504,93957336492016],["v8::internal::BasicBlockProfiler::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::Isolate*)",93957336492064,93957336493314],["v8::internal::Handle<v8::internal::NumberDictionary> v8::internal::Dictionary<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::Add<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338976720,93957338977185],["v8::internal::HashTable<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::Shrink(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>, int)",93957338985536,93957338985782],["v8::internal::GetShouldThrow(v8::internal::Isolate*, v8::Maybe<v8::internal::ShouldThrow>)",93957338988672,93957338988985],["v8::internal::Object::ConvertToNumberOrNumeric(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Object::Conversion)",93957338993136,93957338993488],["v8::internal::Object::ConvertToPropertyKey(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338995040,93957338995420],["v8::internal::JSReceiver::GetDataProperty(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>)",93957338999952,93957339000190],["v8::internal::Isolate::object_to_string()",93957339001440,93957339001554],["v8::internal::Object::Compare(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957339002752,93957339003566],["v8::internal::Object::TypeOf(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957339005664,93957339005946],["v8::internal::Object::OrdinaryHasInstance(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957339006848,93957339007501],["v8::internal::Object::GetMethod(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>)",93957339007792,93957339008164],["v8::internal::Object::GetLengthFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>)",93957339009664,93957339010000],["v8::internal::JSProxy::HasProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::Name>)",93957339010496,93957339011018],["v8::internal::Object::GetPropertyWithAccessor(v8::internal::LookupIterator*)",93957339011840,93957339013206],["v8::internal::Object::SameValue(v8::internal::Object)",93957339013552,93957339013947],["v8::internal::FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::MaybeHandle<v8::internal::Name>)",93957339014064,93957339014513],["v8::internal::RegExpMacroAssemblerX64::PushBacktrack(v8::internal::Label*)",93957342194336,93957342194555],["v8::internal::RegExpMacroAssemblerX64::CheckPosition(int, v8::internal::Label*)",93957342196480,93957342196755],["v8::internal::BuildIgnoreSet()",93957342197952,93957342198233],["v8::base::LazyInstanceImpl<v8::internal::IgnoreSetData, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::IgnoreSetData>, v8::base::DefaultConstructTrait<v8::internal::IgnoreSetData>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::IgnoreSetData> >::InitInstance(void*)",93957342198704,93957342198715],["cppgc::internal::FreeList::Append(cppgc::internal::FreeList&&)",93957342198816,93957342198965],["cppgc::internal::HeapObjectHeader::Finalize()",93957342199136,93957342199181],["cppgc::internal::BasePage::Destroy(cppgc::internal::BasePage*)",93957342199232,93957342199346],["cppgc::internal::NormalPage::Destroy(cppgc::internal::NormalPage*)",93957342199424,93957342199487],["getspent_r",139871564320960,139871564321218],["ulckpwdf",139871564324688,139871564324868],["sgetsgent",139871564325520,139871564326011],["putsgent",139871564326544,139871564327240],["v8::internal::TranslationArrayBuilder::BeginJSToWasmBuiltinContinuationFrame(v8::internal::BytecodeOffset, int, unsigned int, v8::base::Optional<v8::internal::wasm::ValueKind>)",93957336436848,93957336441960],["v8::internal::TranslationArrayBuilder::StoreInt64Register(v8::internal::Register)",93957336468688,93957336469958],["v8::internal::TranslationArrayBuilder::StoreInt32StackSlot(int)",93957336476368,93957336477638],["v8::internal::TranslationArrayBuilder::StoreFloatStackSlot(int)",93957336481488,93957336482758],["v8::internal::TranslationArrayBuilder::AddUpdateFeedback(int, int)",93957336485328,93957336487869],["void std::__1::vector<int, v8::internal::ZoneAllocator<int> >::__push_back_slow_path<int const&>(int const&)",93957336487888,93957336488508],["std::__1::vector<unsigned char, v8::internal::ZoneAllocator<unsigned char> >::vector(unsigned long, unsigned char const&, v8::internal::ZoneAllocator<unsigned char> const&)",93957336489040,93957336489375],["v8::internal::BasicBlockProfilerData::SetFunctionName(std::__1::unique_ptr<char [], std::__1::default_delete<char []> >)",93957336489520,93957336489564],["v8::internal::Dictionary<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::SetEntry(v8::internal::InternalIndex, v8::internal::Object, v8::internal::Object, v8::internal::PropertyDetails)",93957338969520,93957338969849],["v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::DeleteEntry(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::InternalIndex)",93957338982016,93957338982127],["v8::internal::Handle<v8::internal::NameDictionary> v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::New<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338984304,93957338984457],["v8::internal::Dictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::NumberOfEnumerableProperties()",93957338987056,93957338987198],["v8::internal::BaseNameDictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::IterationIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>)",93957338988272,93957338988509],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::InstanceType)",93957338989072,93957338991952],["v8::internal::Object::ToObjectImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, char const*)",93957338992384,93957338992905],["v8::internal::Handle<v8::internal::Object> v8::internal::FactoryBase<v8::internal::Factory>::NewNumber<(v8::internal::AllocationType)0>(double)",93957338993808,93957338993994],["v8::internal::Object::ConvertToName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338994896,93957338995037],["v8::internal::Object::ConvertToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338995424,93957338995777],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::NewStringFromStaticChars<22ul>(char const (&) [22ul], v8::internal::AllocationType)",93957338999888,93957338999949],["v8::internal::(anonymous namespace)::IsErrorObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957339000192,93957339000280],["v8::internal::(anonymous namespace)::NoSideEffectsErrorToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>)",93957339000416,93957339001439],["v8::internal::Object::ConvertToLength(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957339001568,93957339002022],["v8::internal::Object::BooleanValue(v8::internal::Isolate*)",93957339002560,93957339002741],["v8::internal::Object::Equals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957339003568,93957339005315],["v8::internal::RegExpMacroAssemblerX64::GetCode(v8::internal::Handle<v8::internal::String>)",93957342189072,93957342193197],["v8::internal::RegExpMacroAssemblerX64::ReadStackPointerFromRegister(int)",93957342195088,93957342195248],["v8::internal::RegExpMacroAssemblerX64::WriteStackPointerToRegister(int)",93957342196208,93957342196412],["v8::internal::trap_handler::TryHandleSignal(int, siginfo_t*, void*)",93957342197360,93957342197710],["v8::internal::trap_handler::RemoveTrapHandler()",93957342197904,93957342197951],["v8::internal::RegExpCaseFolding::IgnoreSet()",93957342198240,93957342198383],["v8::internal::RegExpCaseFolding::SpecialAddSet()",93957342198560,93957342198703],["v8::base::LazyInstanceImpl<v8::internal::SpecialAddSetData, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::SpecialAddSetData>, v8::base::DefaultConstructTrait<v8::internal::SpecialAddSetData>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::SpecialAddSetData> >::InitInstance(void*)",93957342198720,93957342198731],["fgetspent",139871564318720,139871564319241],["_nss_files_parse_spent",139871564322080,139871564323108],["lckpwdf",139871564323936,139871564324684],["getsgent",139871564324880,139871564325066],["v8::internal::TranslationArrayIterator::TranslationArrayIterator(v8::internal::ByteArray, int)",93957336428320,93957336428473],["v8::internal::TranslationArrayBuilder::BeginArgumentsAdaptorFrame(int, unsigned int)",93957336453488,93957336456029],["v8::internal::TranslationArrayBuilder::StoreRegister(v8::internal::Register)",93957336466128,93957336467398],["v8::internal::TranslationArrayBuilder::StoreBoolRegister(v8::internal::Register)",93957336471248,93957336472518],["v8::internal::TranslationArrayBuilder::StoreStackSlot(int)",93957336475088,93957336476358],["v8::internal::TranslationArrayBuilder::StoreInt64StackSlot(int)",93957336477648,93957336478918],["v8::internal::TranslationArrayBuilder::StoreBoolStackSlot(int)",93957336480208,93957336481478],["v8::internal::TranslationArrayBuilder::StoreDoubleStackSlot(int)",93957336482768,93957336484038],["v8::internal::HashTable<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::Swap(v8::internal::InternalIndex, v8::internal::InternalIndex, v8::internal::WriteBarrierMode)",93957338963088,93957338964065],["v8::internal::Handle<v8::internal::NumberDictionary> v8::internal::HashTable<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::New<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338974736,93957338974869],["v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Shrink(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, int)",93957338979936,93957338980185],["v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::ShallowCopy(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>)",93957338982912,93957338982929],["v8::internal::Handle<v8::internal::NameDictionary> v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::AddNoUpdateNextEnumerationIndex<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338984128,93957338984138],["v8::internal::HashTable<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::Rehash(v8::internal::IsolateRoot)",93957338984480,93957338985141],["v8::internal::Handle<v8::internal::GlobalDictionary> v8::internal::HashTable<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>, int, v8::internal::AllocationType)",93957338986544,93957338986823],["v8::internal::GlobalDictionary::SetEntry(v8::internal::InternalIndex, v8::internal::Object, v8::internal::Object, v8::internal::PropertyDetails)",93957338987328,93957338987585],["v8::internal::BaseNameDictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::NextEnumerationIndex(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>)",93957338987968,93957338988268],["v8::internal::Handle<v8::internal::GlobalDictionary> v8::internal::BaseNameDictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338988512,93957338988669],["v8::internal::ComparisonResultToBool(v8::internal::Operation, v8::internal::ComparisonResult)",93957338988992,93957338989060],["v8::internal::Object::OptimalType(v8::internal::Isolate*, v8::internal::Representation)",93957338991952,93957338992166],["v8::internal::Object::WrapForRead(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Representation)",93957338992336,93957338992376],["v8::internal::Object::ConvertReceiver(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338992912,93957338993135],["v8::internal::Object::ConvertToInteger(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338993488,93957338993806],["v8::internal::Object::ConvertToInt32(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338994000,93957338994439],["v8::internal::RegExpMacroAssemblerX64::CheckCharacterAfterAnd(unsigned int, unsigned int, v8::internal::Label*)",93957342186256,93957342186428],["v8::internal::RegExpMacroAssemblerX64::IfRegisterLT(int, int, v8::internal::Label*)",93957342193680,93957342193870],["v8::internal::RegExpMacroAssemblerX64::PushRegister(int, v8::internal::RegExpMacroAssembler::StackCheckFlag)",93957342194640,93957342194946],["v8::internal::RegExpMacroAssemblerX64::SetRegister(int, int)",93957342195424,93957342195545],["v8::internal::RegExpMacroAssemblerX64::ClearRegisters(int, int)",93957342195952,93957342196200],["v8::internal::RegExpMacroAssemblerX64::CheckStackGuardState(unsigned long*, unsigned long, unsigned long)",93957342196416,93957342196465],["v8::internal::RegExpMacroAssemblerX64::LoadCurrentCharacterUnchecked(int, int)",93957342196768,93957342197355],["v8::internal::trap_handler::HandleSignal(int, siginfo_t*, void*)",93957342197712,93957342197762],["__towctrans_l",139871564317520,139871564317589],["setspent",139871564320528,139871564320730],["getspnam_r",139871564321232,139871564322065],["sgetspent_r",139871564323120,139871564323250],["v8::internal::TranslatedState::GetResolvedSlot(v8::internal::TranslatedFrame*, int)",93957336425264,93957336425486],["v8::internal::TranslationArrayBuilder::Add(int)",93957336431168,93957336431410],["v8::internal::TranslationArrayBuilder::BeginJavaScriptBuiltinContinuationWithCatchFrame(v8::internal::BytecodeOffset, int, unsigned int)",93957336445808,93957336449648],["v8::internal::TranslationArrayBuilder::ArgumentsElements(v8::internal::CreateArgumentsType)",93957336462304,93957336463547],["v8::internal::TranslationArrayBuilder::DuplicateObject(int)",93957336464848,93957336466118],["v8::internal::TranslationArrayBuilder::StoreInt32Register(v8::internal::Register)",93957336467408,93957336468678],["v8::internal::TranslationArrayBuilder::StoreUint32Register(v8::internal::Register)",93957336469968,93957336471238],["v8::internal::TranslationArrayBuilder::StoreFloatRegister(v8::internal::XMMRegister)",93957336472528,93957336473798],["v8::internal::HashTable<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Rehash(v8::internal::IsolateRoot)",93957338957232,93957338957926],["v8::internal::ObjectHashTableBase<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::Remove(v8::internal::Isolate*, v8::internal::Handle<v8::internal::EphemeronHashTable>, v8::internal::Handle<v8::internal::Object>, bool*, int)",93957338966736,93957338967046],["v8::internal::HashTable<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::Swap(v8::internal::InternalIndex, v8::internal::InternalIndex, v8::internal::WriteBarrierMode)",93957338971616,93957338973140],["v8::internal::Dictionary<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::NumberOfEnumerableProperties()",93957338975568,93957338975745],["v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Rehash(v8::internal::IsolateRoot)",93957338977680,93957338978398],["v8::internal::Handle<v8::internal::NameDictionary> v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, int, v8::internal::AllocationType)",93957338981440,93957338981721],["v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::SlowReverseLookup(v8::internal::Object)",93957338982320,93957338982473],["v8::internal::Handle<v8::internal::NameDictionary> v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Add<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338983216,93957338983475],["v8::internal::FixedArray::ShrinkOrEmpty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, int)",93957338984048,93957338984122],["v8::internal::Handle<v8::internal::NameDictionary> v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338984144,93957338984304],["v8::internal::Handle<v8::internal::NameDictionary> v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::AddNoUpdateNextEnumerationIndex<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338984464,93957338984474],["v8::internal::HashTable<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::Swap(v8::internal::InternalIndex, v8::internal::InternalIndex, v8::internal::WriteBarrierMode)",93957338985152,93957338985522],["v8::internal::HashTable<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::Rehash(v8::internal::IsolateRoot, v8::internal::GlobalDictionary)",93957338985792,93957338986535],["v8::internal::Dictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::DeleteEntry(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>, v8::internal::InternalIndex)",93957338986832,93957338987049],["v8::internal::Dictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::SlowReverseLookup(v8::internal::Object)",93957338987200,93957338987328],["v8::internal::BaseNameDictionary<v8::internal::GlobalDictionary, v8::internal::GlobalDictionaryShape>::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::GlobalDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338987600,93957338987709],["v8::internal::RegExpMacroAssemblerX64::CheckCharacterGT(unsigned short, v8::internal::Label*)",93957342182016,93957342182118],["v8::internal::RegExpMacroAssemblerX64::CheckCharacterNotInRange(unsigned short, unsigned short, v8::internal::Label*)",93957342187072,93957342187285],["v8::internal::RegExpMacroAssemblerX64::GoTo(v8::internal::Label*)",93957342193456,93957342193487],["v8::internal::RegExpMacroAssemblerX64::PopCurrentPosition()",93957342194064,93957342194132],["v8::internal::RegExpMacroAssemblerX64::PushCurrentPosition()",93957342194560,93957342194637],["v8::internal::RegExpMacroAssemblerX64::ReadCurrentPositionFromRegister(int)",93957342194960,93957342195077],["v8::internal::RegExpMacroAssemblerX64::SetCurrentPositionFromEnd(int)",93957342195248,93957342195412],["v8::internal::RegExpMacroAssemblerX64::Succeed()",93957342195552,93957342195596],["__towupper_l",139871564317072,139871564317149],["getspnam",139871564317792,139871564318230],["putspent",139871564319248,139871564320516],["endspent",139871564320736,139871564320958],["v8::internal::TranslatedState::InitializeJSObjectAt(v8::internal::TranslatedFrame*, int*, v8::internal::TranslatedValue*, v8::internal::Handle<v8::internal::Map>, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&)",93957336420176,93957336421031],["v8::internal::TranslatedState::DoUpdateFeedback()",93957336427184,93957336427295],["v8::internal::TranslationArrayIterator::Next()",93957336430976,93957336431093],["v8::internal::TranslationArrayBuilder::BeginBuiltinContinuationFrame(v8::internal::BytecodeOffset, int, unsigned int)",93957336431728,93957336435568],["v8::internal::TranslationArrayBuilder::BeginJavaScriptBuiltinContinuationFrame(v8::internal::BytecodeOffset, int, unsigned int)",93957336441968,93957336445808],["v8::internal::TranslationArrayBuilder::BeginConstructStubFrame(v8::internal::BytecodeOffset, int, unsigned int)",93957336449648,93957336453488],["v8::internal::TranslationArrayBuilder::BeginInterpretedFrame(v8::internal::BytecodeOffset, int, unsigned int, int, int)",93957336456032,93957336462298],["v8::internal::TranslationArrayBuilder::ArgumentsLength()",93957336463552,93957336463567],["bool std::__1::__insertion_sort_incomplete<v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&, v8::internal::Handle<v8::internal::String>*>(v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&)",93957338952144,93957338952578],["v8::internal::ObjectHashTableBase<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::ValueAt(v8::internal::InternalIndex)",93957338960720,93957338960758],["v8::internal::Handle<v8::internal::EphemeronHashTable> v8::internal::HashTable<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::EphemeronHashTable>, int, v8::internal::AllocationType)",93957338965184,93957338965465],["v8::internal::Handle<v8::internal::SimpleNumberDictionary> v8::internal::HashTable<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338968240,93957338968382],["v8::internal::Handle<v8::internal::SimpleNumberDictionary> v8::internal::Dictionary<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::Add<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SimpleNumberDictionary>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338970240,93957338970689],["v8::internal::Handle<v8::internal::NumberDictionary> v8::internal::HashTable<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338973408,93957338973548],["v8::internal::Handle<v8::internal::NumberDictionary> v8::internal::HashTable<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::EnsureCapacity<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::NumberDictionary>, int, v8::internal::AllocationType)",93957338975168,93957338975446],["v8::internal::Dictionary<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::ShallowCopy(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>)",93957338976192,93957338976209],["v8::internal::Handle<v8::internal::NumberDictionary> v8::internal::Dictionary<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::Add<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::NumberDictionary>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338977200,93957338977673],["v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Swap(v8::internal::InternalIndex, v8::internal::InternalIndex, v8::internal::WriteBarrierMode)",93957338978400,93957338979924],["v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Rehash(v8::internal::IsolateRoot, v8::internal::NameDictionary)",93957338980192,93957338981434],["v8::internal::Handle<v8::internal::NameDictionary> v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::EnsureCapacity<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::NameDictionary>, int, v8::internal::AllocationType)",93957338981728,93957338982006],["v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::NumberOfEnumerableProperties()",93957338982128,93957338982305],["v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::SetEntry(v8::internal::InternalIndex, v8::internal::Object, v8::internal::Object, v8::internal::PropertyDetails)",93957338982480,93957338982909],["v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338982944,93957338983211],["v8::internal::Handle<v8::internal::NameDictionary> v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Add<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338983488,93957338983767],["v8::internal::RegExpMacroAssemblerX64::~RegExpMacroAssemblerX64()",93957342180864,93957342181080],["v8::internal::RegExpMacroAssemblerX64::CheckGreedyLoop(v8::internal::Label*)",93957342182656,93957342182822],["v8::internal::RegExpMacroAssemblerX64::CheckNotCharacterAfterMinusAnd(unsigned short, unsigned short, unsigned short, v8::internal::Label*)",93957342186608,93957342186843],["v8::internal::RegExpMacroAssemblerX64::CheckSpecialCharacterClass(unsigned short, v8::internal::Label*)",93957342187472,93957342188999],["v8::internal::RegExpMacroAssemblerX64::FixupCodeRelativePositions()",93957342193200,93957342193453],["v8::internal::RegExpMacroAssemblerX64::IfRegisterGE(int, int, v8::internal::Label*)",93957342193488,93957342193678],["v8::internal::RegExpMacroAssemblerX64::IfRegisterEqPos(int, v8::internal::Label*)",93957342193872,93957342194059],["v8::internal::RegExpMacroAssemblerX64::PopRegister(int)",93957342194144,93957342194326],["__iswspace_l",139871564316624,139871564316744],["__iswctype_l",139871564317312,139871564317389],["getspent",139871564317600,139871564317786],["sgetspent",139871564318240,139871564318710],["v8::internal::TranslatedState::CreateNextTranslatedValue(int, v8::internal::TranslationArrayIterator*, v8::internal::FixedArray, unsigned long, v8::internal::RegisterValues*, _IO_FILE*)",93957336410272,93957336415091],["v8::internal::TranslatedState::EnsureChildrenAllocated(int, v8::internal::TranslatedFrame*, int*, std::__1::stack<int, std::__1::deque<int, std::__1::allocator<int> > >*)",93957336423376,93957336423944],["v8::internal::TranslatedState::GetArgumentsInfoFromJSFrameIndex(int, int*)",93957336425584,93957336425833],["void std::__1::vector<v8::internal::TranslatedFrame, std::__1::allocator<v8::internal::TranslatedFrame> >::__push_back_slow_path<v8::internal::TranslatedFrame>(v8::internal::TranslatedFrame&&)",93957336427344,93957336427888],["std::__1::vector<int, std::__1::allocator<int> >::insert(std::__1::__wrap_iter<int const*>, unsigned long, int const&)",93957336428480,93957336430968],["v8::internal::TranslationArrayIterator::HasNext() const",93957336431104,93957336431157],["v8::internal::TranslationArrayBuilder::ToTranslationArray(v8::internal::Factory*)",93957336431424,93957336431714],["v8::internal::TranslationArrayBuilder::Add(v8::internal::TranslationOpcode)",93957336435568,93957336436838],["v8::internal::Module::RecordError(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>, v8::internal::Handle<v8::internal::Object>)",93957338944112,93957338944527],["v8::internal::HashTable<v8::internal::CompilationCacheTable, v8::internal::CompilationCacheShape>::FindInsertionEntry(v8::internal::Isolate*, unsigned int)",93957338954352,93957338954490],["v8::internal::HashTable<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Rehash(v8::internal::IsolateRoot, v8::internal::ObjectHashTable)",93957338959248,93957338959952],["v8::internal::ObjectHashTableBase<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::AddEntry(v8::internal::InternalIndex, v8::internal::Object, v8::internal::Object)",93957338961616,93957338961908],["v8::internal::Handle<v8::internal::EphemeronHashTable> v8::internal::HashTable<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338964336,93957338964478],["v8::internal::ObjectHashTableBase<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::Put(v8::internal::Isolate*, v8::internal::Handle<v8::internal::EphemeronHashTable>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int)",93957338965696,93957338966360],["v8::internal::HashTable<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::Rehash(v8::internal::IsolateRoot)",93957338967168,93957338967973],["v8::internal::Handle<v8::internal::SimpleNumberDictionary> v8::internal::HashTable<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SimpleNumberDictionary>, int, v8::internal::AllocationType)",93957338969120,93957338969401],["v8::internal::Dictionary<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::AtPut(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SimpleNumberDictionary>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails)",93957338969856,93957338970240],["v8::internal::HashTable<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::Rehash(v8::internal::IsolateRoot)",93957338970704,93957338971614],["v8::internal::HashTable<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::Shrink(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, int)",93957338973152,93957338973401],["v8::internal::HashTable<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::Rehash(v8::internal::IsolateRoot, v8::internal::NumberDictionary)",93957338973552,93957338974731],["v8::internal::Handle<v8::internal::NumberDictionary> v8::internal::HashTable<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, int, v8::internal::AllocationType)",93957338974880,93957338975161],["v8::internal::Dictionary<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::DeleteEntry(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, v8::internal::InternalIndex)",93957338975456,93957338975567],["v8::internal::Dictionary<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::SetEntry(v8::internal::InternalIndex, v8::internal::Object, v8::internal::Object, v8::internal::PropertyDetails)",93957338975760,93957338976189],["v8::internal::Dictionary<v8::internal::NumberDictionary, v8::internal::NumberDictionaryShape>::AtPut(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails)",93957338976224,93957338976710],["ucache_compareKeys_68",93957342180336,93957342180350],["v8::internal::RegExpMacroAssemblerX64::AdvanceRegister(int, int)",93957342181376,93957342181500],["v8::internal::RegExpMacroAssemblerX64::CheckNotAtStart(int, v8::internal::Label*)",93957342182336,93957342182541],["v8::internal::RegExpMacroAssemblerX64::CheckNotBackReference(int, bool, v8::internal::Label*)",93957342184848,93957342186129],["v8::internal::RegExpMacroAssemblerX64::CheckNotCharacterAfterAnd(unsigned int, unsigned int, v8::internal::Label*)",93957342186432,93957342186604],["v8::internal::RegExpMacroAssemblerX64::CheckCharacterInRange(unsigned short, unsigned short, v8::internal::Label*)",93957342186848,93957342187061],["v8::internal::RegExpMacroAssemblerX64::CheckBitInTable(v8::internal::Handle<v8::internal::ByteArray>, v8::internal::Label*)",93957342187296,93957342187468],["v8::internal::RegExpMacroAssemblerX64::Fail()",93957342189008,93957342189066],["__iswlower_l",139871564316112,139871564316232],["__iswxdigit_l",139871564316864,139871564316984],["__wctype_l",139871564317152,139871564317297],["__wctrans_l",139871564317392,139871564317509],["v8::internal::TranslatedState::InitializeObjectAt(v8::internal::TranslatedValue*)",93957336406224,93957336406860],["v8::internal::TranslatedState::Prepare(unsigned long)",93957336417744,93957336417924],["v8::internal::TranslatedState::MaterializeFixedDoubleArray(v8::internal::TranslatedFrame*, int*, v8::internal::TranslatedValue*, v8::internal::Handle<v8::internal::Map>)",93957336422624,93957336423159],["v8::internal::TranslatedState::EnsurePropertiesAllocatedAndMarked(v8::internal::TranslatedValue*, v8::internal::Handle<v8::internal::Map>)",93957336424560,93957336425127],["v8::internal::TranslatedState::GetFrameFromJSFrameIndex(int)",93957336425488,93957336425575],["v8::internal::TranslatedState::StoreMaterializedValuesAndDeopt(v8::internal::JavaScriptFrame*)",93957336425840,93957336427184],["v8::internal::Representation::Mnemonic() const",93957336427296,93957336427337],["std::__1::deque<int, std::__1::allocator<int> >::__add_back_capacity()",93957336427888,93957336428309],["v8::internal::Map::ReconfigureExistingProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::InternalIndex, v8::internal::PropertyKind, v8::internal::PropertyAttributes, v8::internal::PropertyConstness)",93957338938400,93957338938678],["v8::internal::Module::EvaluateMaybeAsync(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)",93957338946144,93957338946709],["v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo> v8::internal::Script::FindSharedFunctionInfo<v8::internal::Isolate>(v8::internal::Isolate*, int)",93957338953056,93957338953310],["v8::internal::Handle<v8::internal::CompilationCacheTable> v8::internal::HashTable<v8::internal::CompilationCacheTable, v8::internal::CompilationCacheShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::CompilationCacheTable>, int, v8::internal::AllocationType)",93957338956016,93957338956297],["v8::internal::HashTable<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Shrink(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectHashTable>, int)",93957338958848,93957338959099],["v8::internal::ObjectHashTableBase<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Lookup(v8::internal::Handle<v8::internal::Object>)",93957338960240,93957338960493],["v8::internal::Object::GetOrCreateHash(v8::internal::Isolate*)",93957338960880,93957338960937],["v8::internal::ObjectHashTableBase<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Remove(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectHashTable>, v8::internal::Handle<v8::internal::Object>, bool*, int)",93957338962064,93957338962374],["v8::internal::HashTable<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::Shrink(v8::internal::Isolate*, v8::internal::Handle<v8::internal::EphemeronHashTable>, int)",93957338964080,93957338964331],["v8::internal::HashTable<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::Rehash(v8::internal::IsolateRoot, v8::internal::EphemeronHashTable)",93957338964480,93957338965184],["v8::internal::ObjectHashTableBase<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::Lookup(v8::internal::Handle<v8::internal::Object>, int)",93957338965472,93957338965693],["v8::internal::ObjectHashTableBase<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::AddEntry(v8::internal::InternalIndex, v8::internal::Object, v8::internal::Object)",93957338966368,93957338966735],["v8::internal::ObjectHashTableBase<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::RemoveEntry(v8::internal::InternalIndex)",93957338967056,93957338967158],["v8::internal::HashTable<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::Shrink(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SimpleNumberDictionary>, int)",93957338967984,93957338968235],["v8::internal::HashTable<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::Rehash(v8::internal::IsolateRoot, v8::internal::SimpleNumberDictionary)",93957338968384,93957338969117],["v8::internal::Dictionary<v8::internal::SimpleNumberDictionary, v8::internal::SimpleNumberDictionaryShape>::DeleteEntry(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SimpleNumberDictionary>, v8::internal::InternalIndex)",93957338969408,93957338969519],["v8::internal::compiler::UnwindingInfoWriter::BeginInstructionBlock(int, v8::internal::compiler::InstructionBlock const*)",93957342179632,93957342179789],["v8::internal::EhFrameWriter::WriteReturnAddressRegisterCode()",93957342180448,93957342180463],["v8::internal::RegExpMacroAssemblerX64::stack_limit_slack()",93957342181312,93957342181323],["v8::internal::RegExpMacroAssemblerX64::Bind(v8::internal::Label*)",93957342181888,93957342181902],["v8::internal::RegExpMacroAssemblerX64::CheckAtStart(int, v8::internal::Label*)",93957342182128,93957342182333],["v8::internal::RegExpMacroAssemblerX64::CheckCharacterLT(unsigned short, v8::internal::Label*)",93957342182544,93957342182646],["v8::internal::RegExpMacroAssemblerX64::CheckNotBackReferenceIgnoreCase(int, bool, bool, v8::internal::Label*)",93957342182832,93957342184845],["v8::internal::RegExpMacroAssemblerX64::CheckNotCharacter(unsigned int, v8::internal::Label*)",93957342186144,93957342186246],["__iswalpha_l",139871564315600,139871564315720],["__iswprint_l",139871564316368,139871564316488],["__iswupper_l",139871564316752,139871564316864],["__towlower_l",139871564316992,139871564317069],["v8::internal::TranslatedValue::NewDouble(v8::internal::TranslatedState*, v8::internal::Float64)",93957336404544,93957336404574],["v8::internal::TranslatedState::CreateNextTranslatedFrame(v8::internal::TranslationArrayIterator*, v8::internal::FixedArray, unsigned long, _IO_FILE*)",93957336407264,93957336408680],["v8::internal::TranslatedState::Init(v8::internal::Isolate*, unsigned long, unsigned long, v8::internal::TranslationArrayIterator*, v8::internal::FixedArray, v8::internal::RegisterValues*, _IO_FILE*, int, int)",93957336415440,93957336417391],["v8::internal::TranslatedState::InitializeCapturedObjectAt(int, std::__1::stack<int, std::__1::deque<int, std::__1::allocator<int> > >*, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&)",93957336418448,93957336419448],["v8::internal::TranslatedState::EnsureCapturedObjectAllocatedAt(int, std::__1::stack<int, std::__1::deque<int, std::__1::allocator<int> > >*)",93957336421040,93957336422613],["v8::internal::TranslatedState::MaterializeHeapNumber(v8::internal::TranslatedFrame*, int*, v8::internal::TranslatedValue*)",93957336423168,93957336423364],["v8::internal::TranslatedState::EnsureJSObjectAllocated(v8::internal::TranslatedValue*, v8::internal::Handle<v8::internal::Map>)",93957336423952,93957336424554],["v8::internal::TranslatedValue::ReplaceElementsArrayWithCopy()",93957336425136,93957336425257],["v8::internal::Map::CopyInitialMap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, int, int, int)",93957338929408,93957338929641],["v8::internal::StopSlackTracking(v8::internal::Map, void*)",93957338942688,93957338942701],["v8::internal::Module::Instantiate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>, v8::Local<v8::Context>, v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::FixedArray>, v8::Local<v8::Module>), v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::Module>))",93957338945280,93957338945467],["void std::__1::__sort<v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&, v8::internal::Handle<v8::internal::String>*>(v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&)",93957338950096,93957338951439],["v8::internal::Handle<v8::internal::DescriptorArray> v8::internal::DescriptorArray::Allocate<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, int, int, v8::internal::AllocationType)",93957338952624,93957338952652],["v8::internal::HashTable<v8::internal::StringSet, v8::internal::StringSetShape>::Rehash(v8::internal::IsolateRoot, v8::internal::StringSet)",93957338953568,93957338954061],["v8::internal::HashTable<v8::internal::CompilationCacheTable, v8::internal::CompilationCacheShape>::Rehash(v8::internal::IsolateRoot, v8::internal::CompilationCacheTable)",93957338954640,93957338955662],["v8::internal::HashTable<v8::internal::ObjectHashSet, v8::internal::ObjectHashSetShape>::Rehash(v8::internal::IsolateRoot, v8::internal::ObjectHashSet)",93957338956448,93957338956932],["v8::internal::HashTable<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Swap(v8::internal::InternalIndex, v8::internal::InternalIndex, v8::internal::WriteBarrierMode)",93957338957936,93957338958843],["v8::internal::Handle<v8::internal::ObjectHashTable> v8::internal::HashTable<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338959104,93957338959246],["v8::internal::Handle<v8::internal::ObjectHashTable> v8::internal::HashTable<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectHashTable>, int, v8::internal::AllocationType)",93957338959952,93957338960233],["v8::internal::ObjectHashTableBase<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Lookup(v8::internal::IsolateRoot, v8::internal::Handle<v8::internal::Object>, int)",93957338960496,93957338960715],["v8::internal::ObjectHashTableBase<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Put(v8::internal::Handle<v8::internal::ObjectHashTable>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338960768,93957338960880],["v8::internal::ObjectHashTableBase<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Put(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectHashTable>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int)",93957338960944,93957338961608],["v8::internal::ObjectHashTableBase<v8::internal::ObjectHashTable, v8::internal::ObjectHashTableShape>::Remove(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectHashTable>, v8::internal::Handle<v8::internal::Object>, bool*)",93957338961920,93957338962051],["v8::internal::HashTable<v8::internal::EphemeronHashTable, v8::internal::ObjectHashTableShape>::Rehash(v8::internal::IsolateRoot)",93957338962384,93957338963078],["bool v8::internal::compiler::(anonymous namespace)::TryVisitWordShift<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22>, v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22> >, 32>(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode, v8::internal::compiler::FlagsContinuation*)",93957342174896,93957342175254],["v8::internal::RegisterValues::GetFloatRegister(unsigned int) const",93957342180240,93957342180255],["disasm::NameConverter::NameOfByteCPURegister(int) const",93957342180384,93957342180416],["v8::internal::EhFrameWriter::RegisterToDwarfCode(v8::internal::Register)",93957342180512,93957342180558],["v8::internal::RegExpMacroAssemblerX64::~RegExpMacroAssemblerX64()",93957342181088,93957342181312],["v8::internal::RegExpMacroAssemblerX64::AdvanceCurrentPosition(int)",93957342181328,93957342181369],["v8::internal::RegExpMacroAssemblerX64::Backtrack()",93957342181504,93957342181884],["v8::internal::RegExpMacroAssemblerX64::CheckCharacter(unsigned int, v8::internal::Label*)",93957342181904,93957342182006],["__iswctype",139871564315168,139871564315245],["__iswcntrl_l",139871564315856,139871564315974],["__iswgraph_l",139871564316240,139871564316360],["__iswpunct_l",139871564316496,139871564316614],["v8::internal::FrameWriter::DebugPrintOutputObject(v8::internal::Object, unsigned int, char const*)",93957336401152,93957336401328],["v8::internal::TranslatedValue::GetRawValue() const",93957336404672,93957336405171],["v8::internal::TranslatedValue::IsMaterializableByDebugger() const",93957336406896,93957336406908],["v8::internal::TranslatedState::CreateArgumentsElementsTranslatedValues(int, unsigned long, v8::internal::CreateArgumentsType, _IO_FILE*)",93957336408800,93957336410122],["v8::internal::TranslatedState::TranslatedState(v8::internal::JavaScriptFrame const*)",93957336415104,93957336415426],["std::__1::vector<v8::internal::TranslatedFrame, std::__1::allocator<v8::internal::TranslatedFrame> >::reserve(unsigned long)",93957336417392,93957336417736],["v8::internal::TranslatedState::UpdateFromPreviouslyMaterializedObjects()",93957336417936,93957336418444],["v8::internal::TranslatedState::InitializeObjectWithTaggedFieldsAt(v8::internal::TranslatedFrame*, int*, v8::internal::TranslatedValue*, v8::internal::Handle<v8::internal::Map>, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> > const&)",93957336419456,93957336420168],["v8::internal::Map::FindElementsKindTransitionedMap(v8::internal::Isolate*, std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > > const&)",93957338923280,93957338924400],["v8::internal::Map::CopyForElementsTransition(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957338932944,93957338933296],["v8::internal::Map::ComputeMinObjectSlack(v8::internal::Isolate*)",93957338942064,93957338942301],["v8::internal::Map::StartInobjectSlackTracking()",93957338943904,93957338943952],["v8::internal::Module::Reset(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)",93957338944976,93957338945206],["v8::internal::Module::FinishInstantiate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>, v8::internal::ZoneForwardList<v8::internal::Handle<v8::internal::SourceTextModule> >*, unsigned int*, v8::internal::Zone*)",93957338945680,93957338945883],["v8::internal::JSModuleNamespace::GetExport(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957338949392,93957338949704],["unsigned int std::__1::__sort4<v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&, v8::internal::Handle<v8::internal::String>*>(v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&)",93957338951680,93957338951861],["v8::internal::Handle<v8::internal::DescriptorArray> v8::internal::DescriptorArray::Allocate<v8::internal::Isolate>(v8::internal::Isolate*, int, int, v8::internal::AllocationType)",93957338952592,93957338952623],["void v8::internal::Script::InitLineEnds<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957338952656,93957338953043],["v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo> v8::internal::Script::FindSharedFunctionInfo<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, int)",93957338953312,93957338953562],["v8::internal::Handle<v8::internal::StringSet> v8::internal::HashTable<v8::internal::StringSet, v8::internal::StringSetShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::StringSet>, int, v8::internal::AllocationType)",93957338954064,93957338954343],["v8::internal::Handle<v8::internal::CompilationCacheTable> v8::internal::HashTable<v8::internal::CompilationCacheTable, v8::internal::CompilationCacheShape>::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338954496,93957338954636],["v8::internal::CompilationCacheShape::HashForObject(v8::internal::ReadOnlyRoots, v8::internal::Object)",93957338955664,93957338956014],["v8::internal::Handle<v8::internal::ObjectHashSet> v8::internal::HashTable<v8::internal::ObjectHashSet, v8::internal::ObjectHashSetShape>::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity)",93957338956304,93957338956441],["v8::internal::Handle<v8::internal::ObjectHashSet> v8::internal::HashTable<v8::internal::ObjectHashSet, v8::internal::ObjectHashSetShape>::EnsureCapacity<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectHashSet>, int, v8::internal::AllocationType)",93957338956944,93957338957223],["v8::internal::compiler::AddMatcher<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23> >, (v8::internal::compiler::IrOpcode::Value)330, (v8::internal::compiler::IrOpcode::Value)332, (v8::internal::compiler::IrOpcode::Value)334, (v8::internal::compiler::IrOpcode::Value)325>::AddMatcher(v8::internal::compiler::Node*, bool)",93957342172832,93957342172997],["v8::internal::compiler::BaseWithIndexAndDisplacementMatcher<v8::internal::compiler::AddMatcher<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22>, v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22> >, (v8::internal::compiler::IrOpcode::Value)310, (v8::internal::compiler::IrOpcode::Value)312, (v8::internal::compiler::IrOpcode::Value)314, (v8::internal::compiler::IrOpcode::Value)305> >::Initialize(v8::internal::compiler::Node*, v8::base::Flags<v8::internal::compiler::AddressOption, unsigned char>)",93957342176336,93957342178666],["v8::internal::compiler::UnwindingInfoWriter::MarkFrameConstructed(int)",93957342179984,93957342180114],["v8::internal::FrameDescription::SetPc(long)",93957342180272,93957342180285],["disasm::NameConverter::NameOfCPURegister(int) const",93957342180352,93957342180384],["disasm::NameConverter::NameOfXMMRegister(int) const",93957342180416,93957342180448],["v8::internal::EhFrameWriter::WriteInitialStateInCie()",93957342180464,93957342180512],["v8::internal::RegExpMacroAssemblerX64::RegExpMacroAssemblerX64(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::NativeRegExpMacroAssembler::Mode, int)",93957342180560,93957342180863],["iswxdigit",139871564314656,139871564314799],["__towctrans",139871564315392,139871564315461],["__iswblank_l",139871564315728,139871564315846],["__iswdigit_l",139871564315984,139871564316105],["v8::internal::Deoptimizer::DoComputeUnoptimizedFrame(v8::internal::TranslatedFrame*, int, bool)",93957336388496,93957336392291],["v8::internal::MaterializedObjectStore::Set(unsigned long, v8::internal::Handle<v8::internal::FixedArray>)",93957336402784,93957336403247],["v8::internal::TranslatedValue::NewInt64ToBigInt(v8::internal::TranslatedState*, long)",93957336404608,93957336404638],["v8::internal::Handle<v8::internal::HeapNumber> v8::internal::FactoryBase<v8::internal::Factory>::NewHeapNumber<(v8::internal::AllocationType)0>(double)",93957336405552,93957336405589],["v8::internal::TranslatedValue::IsMaterializedObject() const",93957336406864,93957336406882],["v8::internal::TranslatedFrame::Handlify()",93957336406912,93957336407260],["v8::internal::TranslatedFrame::AdvanceIterator(std::__1::__deque_iterator<v8::internal::TranslatedValue, v8::internal::TranslatedValue*, v8::internal::TranslatedValue&, v8::internal::TranslatedValue**, long, 0l>*)",93957336408688,93957336408787],["v8::internal::TranslatedFrame::Add(v8::internal::TranslatedValue const&)",93957336410128,93957336410264],["v8::internal::Map::UpdateFieldType(v8::internal::Isolate*, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Name>, v8::internal::PropertyConstness, v8::internal::Representation, v8::internal::MaybeObjectHandle const&)",93957338913776,93957338915536],["v8::internal::Map::RawCopy(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, int, int)",93957338927312,93957338927716],["v8::internal::Map::CopyReplaceDescriptors(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::DescriptorArray>, v8::internal::TransitionFlag, v8::internal::MaybeHandle<v8::internal::Name>, char const*, v8::internal::SimpleTransitionFlag)",93957338930944,93957338931619],["v8::internal::Map::PrepareForDataProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::InternalIndex, v8::internal::PropertyConstness, v8::internal::Handle<v8::internal::Object>)",93957338935728,93957338935844],["v8::internal::Map::CopyInsertDescriptor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Descriptor*, v8::internal::TransitionFlag)",93957338941008,93957338941527],["v8::internal::Map::CompleteInobjectSlackTracking(v8::internal::Isolate*)",93957338942352,93957338942614],["v8::internal::Map::SetShouldBeFastPrototypeMap(v8::internal::Handle<v8::internal::Map>, bool, v8::internal::Isolate*)",93957338942992,93957338943080],["v8::internal::Module::SetStatus(v8::internal::Module::Status)",93957338943984,93957338943998],["v8::internal::Module::ResetGraph(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)",93957338944528,93957338944965],["v8::internal::Module::ResolveExport(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::MessageLocation, bool, v8::internal::Module::ResolveSet*)",93957338945216,93957338945272],["v8::internal::Module::PrepareInstantiate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>, v8::Local<v8::Context>, v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::FixedArray>, v8::Local<v8::Module>), v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::Module>))",93957338945472,93957338945679],["v8::internal::Module::Evaluate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)",93957338945888,93957338946143],["v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)",93957338946720,93957338949379],["v8::internal::JSModuleNamespace::GetPropertyAttributes(v8::internal::LookupIterator*)",93957338949712,93957338950087],["unsigned int std::__1::__sort3<v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&, v8::internal::Handle<v8::internal::String>*>(v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&)",93957338951440,93957338951674],["unsigned int std::__1::__sort5<v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&, v8::internal::Handle<v8::internal::String>*>(v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Handle<v8::internal::String>*, v8::internal::Module::GetModuleNamespace(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)::$_0&)",93957338951872,93957338952133],["v8::internal::compiler::InstructionSelector::VisitI64x2GtS(v8::internal::compiler::Node*)",93957342167536,93957342168235],["v8::internal::compiler::OperandGenerator::ToConstant(v8::internal::compiler::Node const*)",93957342173696,93957342174026],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22>, v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22> >::SwapInputs()",93957342175808,93957342176120],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22>, v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22> >::BinopMatcher(v8::internal::compiler::Node*, bool)",93957342178736,93957342179177],["v8::internal::compiler::UnwindingInfoWriter::EndInstructionBlock(v8::internal::compiler::InstructionBlock const*)",93957342179792,93957342179972],["v8::internal::compiler::UnwindingInfoWriter::MarkFrameDeconstructed(int)",93957342180128,93957342180227],["v8::internal::FrameDescription::SetCallerFp(unsigned int, long)",93957342180256,93957342180272],["disasm::NameConverter::NameOfAddress(unsigned char*) const",93957342180288,93957342180333],["iswprint",139871564314080,139871564314223],["towupper",139871564314912,139871564315005],["wctrans",139871564315248,139871564315381],["__iswalnum_l",139871564315472,139871564315590],["v8::internal::Deoptimizer::compiled_code() const",93957336386288,93957336386369],["v8::internal::FrameWriter::PushStackJSArguments(v8::internal::TranslatedFrame::iterator&, int)",93957336399840,93957336400096],["std::__1::vector<v8::internal::TranslatedFrame::iterator, std::__1::allocator<v8::internal::TranslatedFrame::iterator> >::__append(unsigned long, v8::internal::TranslatedFrame::iterator const&)",93957336401760,93957336402418],["v8::internal::MaterializedObjectStore::Remove(unsigned long)",93957336403952,93957336404509],["v8::internal::TranslatedValue::NewInt32(v8::internal::TranslatedState*, int)",93957336404576,93957336404605],["v8::internal::TranslatedValue::NewTagged(v8::internal::TranslatedState*, v8::internal::Object)",93957336404640,93957336404670],["v8::internal::TranslatedValue::GetValue()",93957336405184,93957336405547],["v8::internal::TranslatedState::EnsureObjectAllocatedAt(v8::internal::TranslatedValue*)",93957336405600,93957336406212],["v8::internal::Map::GetConstructorFunction(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Context>)",93957338907376,93957338907504],["v8::internal::Map::TryReplayPropertyTransitions(v8::internal::Isolate*, v8::internal::Map)",93957338919232,93957338920007],["v8::internal::Map::AsElementsKind(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::ElementsKind)",93957338926128,93957338926718],["v8::internal::NormalizedMapCache::Set(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>)",93957338928832,93957338929039],["v8::internal::Map::ShareDescriptor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::DescriptorArray>, v8::internal::Descriptor*)",93957338929824,93957338930345],["v8::internal::Map::InstallDescriptors(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::DescriptorArray>)",93957338932304,93957338932701],["v8::internal::Map::Create(v8::internal::Isolate*, int)",93957338934592,93957338935249],["v8::internal::Map::TransitionToDataProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::PropertyConstness, v8::internal::StoreOrigin)",93957338936416,93957338937932],["v8::internal::Map::TransitionToAccessorProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338938688,93957338940993],["v8::internal::Map::EquivalentToForNormalization(v8::internal::Map, v8::internal::ElementsKind, v8::internal::PropertyNormalizationMode) const",93957338941536,93957338942060],["v8::internal::GetMinInobjectSlack(v8::internal::Map, void*)",93957338942304,93957338942342],["v8::internal::ShrinkInstanceSize(v8::internal::Map, void*)",93957338942624,93957338942687],["v8::internal::Map::GetOrCreatePrototypeInfo(v8::internal::Handle<v8::internal::Map>, v8::internal::Isolate*)",93957338942704,93957338942977],["v8::internal::Map::GetOrCreatePrototypeChainValidityCell(v8::internal::Handle<v8::internal::Map>, v8::internal::Isolate*)",93957338943088,93957338943903],["v8::internal::NormalizedMapCache::New(v8::internal::Isolate*)",93957338943952,93957338943972],["v8::internal::Module::RecordErrorUsingPendingException(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Module>)",93957338944000,93957338944110],["v8::internal::compiler::InstructionSelector::VisitI32x4ExtAddPairwiseI16x8S(v8::internal::compiler::Node*)",93957342166032,93957342166211],["v8::internal::compiler::InstructionSelector::AlignmentRequirements()",93957342169152,93957342169165],["v8::internal::compiler::AddMatcher<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23> >, (v8::internal::compiler::IrOpcode::Value)330, (v8::internal::compiler::IrOpcode::Value)332, (v8::internal::compiler::IrOpcode::Value)334, (v8::internal::compiler::IrOpcode::Value)325>::Initialize(v8::internal::compiler::Node*, bool)",93957342173200,93957342173369],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::HeapObjectMatcherImpl<(v8::internal::compiler::IrOpcode::Value)30>, v8::internal::compiler::HeapObjectMatcherImpl<(v8::internal::compiler::IrOpcode::Value)30> >::BinopMatcher(v8::internal::compiler::Node*)",93957342174144,93957342174608],["bool v8::internal::compiler::(anonymous namespace)::TryVisitWordShift<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23> >, 64>(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode, v8::internal::compiler::FlagsContinuation*)",93957342175264,93957342175799],["v8::internal::compiler::ValueMatcher<unsigned long, (v8::internal::compiler::IrOpcode::Value)23>::ValueMatcher(v8::internal::compiler::Node*)",93957342176128,93957342176329],["v8::internal::compiler::AddMatcher<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22>, v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22> >, (v8::internal::compiler::IrOpcode::Value)310, (v8::internal::compiler::IrOpcode::Value)312, (v8::internal::compiler::IrOpcode::Value)314, (v8::internal::compiler::IrOpcode::Value)305>::AddMatcher(v8::internal::compiler::Node*)",93957342178672,93957342178736],["v8::internal::compiler::AddMatcher<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22>, v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22> >, (v8::internal::compiler::IrOpcode::Value)310, (v8::internal::compiler::IrOpcode::Value)312, (v8::internal::compiler::IrOpcode::Value)314, (v8::internal::compiler::IrOpcode::Value)305>::Initialize(v8::internal::compiler::Node*, bool)",93957342179184,93957342179620],["iswcntrl",139871564313504,139871564313645],["iswspace",139871564314368,139871564314511],["towlower",139871564314800,139871564314903],["wctype",139871564315008,139871564315161],["v8::internal::Deoptimizer::TraceDeoptMarked(v8::internal::Isolate*)",93957336382208,93957336382380],["v8::internal::Deoptimizer::TraceDeoptBegin(int, v8::internal::BytecodeOffset)",93957336386720,93957336387254],["v8::internal::Deoptimizer::DoComputeConstructStubFrame(v8::internal::TranslatedFrame*, int)",93957336393200,93957336395184],["v8::internal::Deoptimizer::TranslatedValueForWasmReturnKind(v8::base::Optional<v8::internal::wasm::ValueKind>)",93957336400368,93957336400586],["std::__1::deque<v8_inspector::String16, std::__1::allocator<v8_inspector::String16> >::__add_back_capacity()",93957336401328,93957336401749],["v8::internal::MaterializedObjectStore::Get(unsigned long)",93957336402432,93957336402776],["v8::internal::MaterializedObjectStore::EnsureStackEntries(int)",93957336403248,93957336403951],["v8::internal::TranslatedValue::NewFloat(v8::internal::TranslatedState*, v8::internal::Float32)",93957336404512,93957336404541],["v8::internal::ManagedObjectFinalizer(v8::WeakCallbackInfo<void> const&)",93957338894976,93957338895019],["v8::internal::Map::NextFreePropertyIndex() const",93957338911424,93957338911545],["v8::internal::Map::TryUpdate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957338917216,93957338917332],["v8::internal::Map::GetOrCreatePrototypeInfo(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Isolate*)",93957338921552,93957338921842],["v8::internal::Map::TransitionElementsTo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::ElementsKind)",93957338924672,93957338925388],["v8::internal::Map::OnlyHasSimpleProperties() const",93957338926848,93957338926906],["v8::internal::NormalizedMapCache::Get(v8::internal::Handle<v8::internal::Map>, v8::internal::ElementsKind, v8::internal::PropertyNormalizationMode)",93957338928432,93957338928632],["v8::internal::Map::Copy(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, char const*)",93957338929216,93957338929388],["v8::internal::Map::CopyDropDescriptors(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957338929648,93957338929813],["v8::internal::Map::ConnectTransition(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::SimpleTransitionFlag)",93957338930352,93957338930943],["v8::internal::Map::AddMissingTransitions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::DescriptorArray>)",93957338931632,93957338932294],["v8::internal::Map::SetInstanceDescriptors(v8::internal::Isolate*, v8::internal::DescriptorArray, int)",93957338932704,93957338932930],["v8::internal::Map::AsLanguageMode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957338933296,93957338934582],["v8::internal::Map::CopyForPreventExtensions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::PropertyAttributes, v8::internal::Handle<v8::internal::Symbol>, char const*, bool)",93957338935264,93957338935718],["v8::internal::(anonymous namespace)::UpdateDescriptorForValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::InternalIndex, v8::internal::PropertyConstness, v8::internal::Handle<v8::internal::Object>)",93957338935856,93957338936406],["v8::internal::Map::TooManyFastProperties(v8::internal::StoreOrigin) const",93957338937936,93957338938400],["v8::internal::compiler::InstructionSelector::VisitI8x16Shuffle(v8::internal::compiler::Node*)",93957342162704,93957342165017],["v8::internal::compiler::InstructionSelector::VisitI8x16Popcnt(v8::internal::compiler::Node*)",93957342166752,93957342166959],["v8::internal::compiler::InstructionSelector::VisitI64x2Abs(v8::internal::compiler::Node*)",93957342168896,93957342169092],["v8::internal::compiler::ValueMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>::ValueMatcher(v8::internal::compiler::Node*)",93957342170288,93957342170490],["v8::internal::compiler::AddMatcher<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23> >, (v8::internal::compiler::IrOpcode::Value)330, (v8::internal::compiler::IrOpcode::Value)332, (v8::internal::compiler::IrOpcode::Value)334, (v8::internal::compiler::IrOpcode::Value)325>::AddMatcher(v8::internal::compiler::Node*)",93957342173008,93957342173190],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23> >::SwapInputs()",93957342173376,93957342173692],["v8::internal::compiler::(anonymous namespace)::AddDisplacementToAddressingMode(v8::internal::compiler::AddressingMode)",93957342174032,93957342174134],["v8::internal::compiler::(anonymous namespace)::MachineTypeForNarrow(v8::internal::compiler::Node*, v8::internal::compiler::Node*)",93957342174608,93957342174894],["__fentry__",139871564312976,139871564313068],["iswlower",139871564313792,139871564313935],["iswpunct",139871564314224,139871564314365],["iswupper",139871564314512,139871564314647],["v8::internal::Deoptimizer::New(unsigned long, v8::internal::DeoptimizeKind, unsigned int, unsigned long, int, v8::internal::Isolate*)",93957336378464,93957336378567],["v8::internal::Deoptimizer::MessageFor(v8::internal::DeoptimizeKind, bool)",93957336384688,93957336384767],["v8::internal::Deoptimizer::GetDeoptWithResumeBuiltin(v8::internal::DeoptimizeReason)",93957336386624,93957336386654],["v8::internal::Deoptimizer::TraceMarkForDeoptimization(v8::internal::Code, char const*)",93957336387648,93957336388245],["v8::internal::Deoptimizer::DoComputeArgumentsAdaptorFrame(v8::internal::TranslatedFrame*, int)",93957336392304,93957336393193],["v8::internal::Deoptimizer::DoComputeBuiltinContinuation(v8::internal::TranslatedFrame*, int, v8::internal::BuiltinContinuationMode)",93957336395184,93957336399838],["v8::internal::FrameWriter::PushTranslatedValue(v8::internal::TranslatedFrame::iterator const&, char const*)",93957336400096,93957336400368],["v8::internal::Deoptimizer::MaterializeHeapObjects()",93957336400592,93957336401137],["v8::internal::LookupIterator::HolderIsReceiver() const",93957338890784,93957338890812],["v8::internal::MapUpdater::ConstructNewMapWithIntegrityLevelTransition()",93957338901440,93957338901751],["v8::internal::Map::PrintGeneralization(v8::internal::Isolate*, _IO_FILE*, char const*, v8::internal::InternalIndex, int, int, bool, v8::internal::Representation, v8::internal::Representation, v8::internal::PropertyConstness, v8::internal::PropertyConstness, v8::internal::MaybeHandle<v8::internal::FieldType>, v8::internal::MaybeHandle<v8::internal::Object>, v8::internal::MaybeHandle<v8::internal::FieldType>, v8::internal::MaybeHandle<v8::internal::Object>)",93957338909664,93957338910623],["v8::internal::Map::DeprecateTransitionTree(v8::internal::Isolate*)",93957338912656,93957338913258],["v8::internal::Map::GeneralizeField(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::InternalIndex, v8::internal::PropertyConstness, v8::internal::Representation, v8::internal::Handle<v8::internal::FieldType>)",93957338915712,93957338917151],["v8::internal::Map::EquivalentToForTransition(v8::internal::Map) const",93957338918592,93957338918913],["v8::internal::Map::EnsureDescriptorSlack(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, int)",93957338920096,93957338920704],["v8::internal::Map::TransitionToPrototype(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::HeapObject>)",93957338922160,93957338922746],["v8::internal::Map::IsMapInArrayPrototypeChain(v8::internal::Isolate*) const",93957338924400,93957338924658],["v8::internal::Map::CopyAsElementsKind(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::ElementsKind, v8::internal::TransitionFlag)",93957338925392,93957338926115],["v8::internal::Map::NumberOfEnumerableProperties() const",93957338926720,93957338926835],["v8::internal::Map::MayHaveReadOnlyElementsInPrototypeChain(v8::internal::Isolate*)",93957338926912,93957338927312],["v8::internal::Map::Normalize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::ElementsKind, v8::internal::PropertyNormalizationMode, char const*)",93957338927728,93957338928425],["v8::internal::Map::CopyNormalized(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::PropertyNormalizationMode)",93957338928640,93957338928817],["v8::internal::Map::TransitionToImmutableProto(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957338929040,93957338929210],["v8::internal::Map::CopyInitialMapNormalized(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::PropertyNormalizationMode)",93957338929392,93957338929402],["v8::internal::compiler::InstructionSelector::VisitF64x2Qfms(v8::internal::compiler::Node*)",93957342160032,93957342160346],["v8::internal::compiler::(anonymous namespace)::VisitPminOrPmax(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342165712,93957342165981],["v8::internal::compiler::InstructionSelector::VisitI16x8ExtAddPairwiseI8x16S(v8::internal::compiler::Node*)",93957342166416,93957342166559],["v8::internal::compiler::InstructionSelector::VisitI32x4TruncSatF64x2SZero(v8::internal::compiler::Node*)",93957342167136,93957342167332],["v8::internal::compiler::InstructionSelector::VisitI64x2GeS(v8::internal::compiler::Node*)",93957342168240,93957342168890],["v8::internal::compiler::InstructionSelector::SupportedMachineOperatorFlags()",93957342169104,93957342169150],["v8::internal::compiler::X64OperandGenerator::GenerateMemoryOperandInputs(v8::internal::compiler::Node*, int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::DisplacementMode, v8::internal::compiler::InstructionOperand*, unsigned long*)",93957342169168,93957342170286],["v8::internal::compiler::BaseWithIndexAndDisplacementMatcher<v8::internal::compiler::AddMatcher<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23> >, (v8::internal::compiler::IrOpcode::Value)330, (v8::internal::compiler::IrOpcode::Value)332, (v8::internal::compiler::IrOpcode::Value)334, (v8::internal::compiler::IrOpcode::Value)325> >::Initialize(v8::internal::compiler::Node*, v8::base::Flags<v8::internal::compiler::AddressOption, unsigned char>)",93957342170496,93957342172821],["profil",139871564310496,139871564310960],["iswalpha",139871564313216,139871564313359],["iswdigit",139871564313648,139871564313785],["iswgraph",139871564313936,139871564314079],["v8::internal::(anonymous namespace)::TokensCompareOutput::AddChunk(int, int, int, int)",93957336376032,93957336376116],["v8::internal::(anonymous namespace)::ActivationsFinder::VisitThread(v8::internal::Isolate*, v8::internal::ThreadLocalTop*)",93957336380336,93957336380817],["v8::internal::Deoptimizer::ComputeOutputFrames(v8::internal::Deoptimizer*)",93957336383264,93957336383274],["v8::internal::Deoptimizer::should_reuse_code() const",93957336386128,93957336386185],["v8::internal::Deoptimizer::~Deoptimizer()",93957336386384,93957336386610],["v8::internal::Deoptimizer::GetDeoptimizationEntry(v8::internal::DeoptimizeKind)",93957336386656,93957336386718],["v8::internal::Deoptimizer::GetDeoptInfo(v8::internal::Code, unsigned long)",93957336387264,93957336387638],["v8::internal::Deoptimizer::TraceEvictFromOptimizedCodeCache(v8::internal::SharedFunctionInfo, char const*)",93957336388256,93957336388496],["v8::internal::LookupIterator::State v8::internal::LookupIterator::LookupInSpecialHolder<false>(v8::internal::Map, v8::internal::JSReceiver)",93957338879744,93957338880263],["v8::internal::LookupIterator::GetInterceptorForFailedAccessCheck() const",93957338892816,93957338892965],["v8::internal::MapUpdater::TryReconfigureToDataFieldInplace()",93957338896128,93957338896639],["v8::internal::MapUpdater::GetOrComputeFieldType(v8::internal::InternalIndex, v8::internal::PropertyLocation, v8::internal::Representation) const",93957338902864,93957338903147],["v8::internal::Map::GetInstanceTypeMap(v8::internal::ReadOnlyRoots, v8::internal::InstanceType)",93957338907984,93957338908688],["v8::internal::Map::UnwrapFieldType(v8::internal::MaybeObject)",93957338910768,93957338910803],["v8::internal::Map::NumberOfFields() const",93957338912080,93957338912260],["v8::internal::Map::FindRootMap(v8::internal::Isolate*) const",93957338913616,93957338913665],["v8::internal::Map::GeneralizeFieldType(v8::internal::Representation, v8::internal::Handle<v8::internal::FieldType>, v8::internal::Representation, v8::internal::Handle<v8::internal::FieldType>, v8::internal::Isolate*)",93957338915536,93957338915709],["v8::internal::Map::ReconfigureElementsKind(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::ElementsKind)",93957338917152,93957338917211],["v8::internal::Map::TryUpdateSlow(v8::internal::Isolate*, v8::internal::Map)",93957338917344,93957338918591],["v8::internal::Map::LookupElementsTransitionMap(v8::internal::Isolate*, v8::internal::ElementsKind)",93957338918928,93957338919225],["v8::internal::Map::Update(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957338920016,93957338920084],["v8::internal::Map::GetObjectCreateMap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>)",93957338920704,93957338921538],["v8::internal::Map::SetPrototype(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::HeapObject>, bool)",93957338921856,93957338922147],["v8::internal::Map::TryGetObjectCreateMap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>)",93957338922752,93957338923272],["v8::internal::compiler::InstructionSelector::VisitS128Xor(v8::internal::compiler::Node*)",93957342158208,93957342158487],["v8::internal::compiler::InstructionSelector::VisitI64x2Mul(v8::internal::compiler::Node*)",93957342161296,93957342161594],["v8::internal::compiler::InstructionSelector::VisitI8x16Swizzle(v8::internal::compiler::Node*)",93957342165216,93957342165692],["v8::internal::compiler::InstructionSelector::VisitF64x2Pmin(v8::internal::compiler::Node*)",93957342166000,93957342166015],["v8::internal::compiler::InstructionSelector::VisitI32x4ExtAddPairwiseI16x8U(v8::internal::compiler::Node*)",93957342166224,93957342166403],["v8::internal::compiler::InstructionSelector::VisitI16x8ExtAddPairwiseI8x16U(v8::internal::compiler::Node*)",93957342166560,93957342166739],["v8::internal::compiler::InstructionSelector::VisitF64x2ConvertLowI32x4U(v8::internal::compiler::Node*)",93957342166960,93957342167133],["v8::internal::compiler::InstructionSelector::VisitI32x4TruncSatF64x2UZero(v8::internal::compiler::Node*)",93957342167344,93957342167523],["shmctl",139871564307904,139871564307938],["__profile_frequency",139871564312864,139871564312875],["iswalnum",139871564313072,139871564313213],["iswblank",139871564313360,139871564313501],["v8::internal::(anonymous namespace)::LineArrayCompareInput::SetSubrange1(int, int)",93957336375248,93957336375260],["v8::internal::DeoptimizeReasonToString(v8::internal::DeoptimizeReason)",93957336377168,93957336377187],["v8::internal::Deoptimizer::DebuggerInspectableFrame(v8::internal::JavaScriptFrame*, int, v8::internal::Isolate*)",93957336378752,93957336379331],["v8::internal::Deoptimizer::TraceDeoptAll(v8::internal::Isolate*)",93957336381504,93957336381676],["v8::internal::Deoptimizer::DeoptimizeFunction(v8::internal::JSFunction, v8::internal::Code)",93957336382384,93957336383253],["v8::internal::Deoptimizer::DoComputeOutputFrames()",93957336383280,93957336384673],["v8::internal::Deoptimizer::Deoptimizer(v8::internal::Isolate*, v8::internal::JSFunction, v8::internal::DeoptimizeKind, unsigned int, unsigned long, int)",93957336384768,93957336386126],["v8::internal::Deoptimizer::function() const",93957336386192,93957336386273],["v8::internal::ArrayBoilerplateDescription::BriefPrintDetails(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957338874928,93957338875077],["v8::internal::LookupIterator::PrepareTransitionToDataProperty(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::StoreOrigin)",93957338885680,93957338886140],["v8::internal::LookupIterator::GetFieldIndex() const",93957338891664,93957338891926],["v8::internal::ConcurrentLookupIterator::TryGetOwnCowElement(v8::internal::Isolate*, v8::internal::FixedArray, v8::internal::ElementsKind, int, unsigned long)",93957338893280,93957338893369],["v8::internal::MapUpdater::MapUpdater(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>)",93957338895104,93957338895324],["v8::internal::MapUpdater::FindTargetMap()",93957338897536,93957338899889],["v8::internal::MapUpdater::Update()",93957338901856,93957338901920],["v8::internal::MapUpdater::FindSplitMap(v8::internal::Handle<v8::internal::DescriptorArray>)",93957338906592,93957338907262],["v8::internal::Map::PrintReconfiguration(v8::internal::Isolate*, _IO_FILE*, v8::internal::InternalIndex, v8::internal::PropertyKind, v8::internal::PropertyAttributes)",93957338907504,93957338907980],["v8::internal::Map::GetVisitorId(v8::internal::Map)",93957338908688,93957338909661],["v8::internal::Map::WrapFieldType(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FieldType>)",93957338910624,93957338910768],["v8::internal::Map::CopyWithField(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::FieldType>, v8::internal::PropertyAttributes, v8::internal::PropertyConstness, v8::internal::Representation, v8::internal::TransitionFlag)",93957338910816,93957338911422],["v8::internal::Map::CopyAddDescriptor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Descriptor*, v8::internal::TransitionFlag)",93957338911552,93957338912067],["v8::internal::Map::InstancesNeedRewriting(v8::internal::Map, int, int, int, int*) const",93957338912272,93957338912656],["v8::internal::Map::ReplaceDescriptors(v8::internal::Isolate*, v8::internal::DescriptorArray)",93957338913264,93957338913611],["v8::internal::Map::FindFieldOwner(v8::internal::Isolate*, v8::internal::InternalIndex) const",93957338913680,93957338913776],["v8::internal::compiler::InstructionSelector::VisitI8x16GtS(v8::internal::compiler::Node*)",93957342155904,93957342156183],["v8::internal::compiler::InstructionSelector::VisitF64x2Abs(v8::internal::compiler::Node*)",93957342159232,93957342159385],["v8::internal::compiler::InstructionSelector::VisitF32x4Qfms(v8::internal::compiler::Node*)",93957342160672,93957342160986],["v8::internal::compiler::InstructionSelector::VisitI32x4UConvertF32x4(v8::internal::compiler::Node*)",93957342161760,93957342162023],["v8::internal::compiler::(anonymous namespace)::TryMatch16x8HalfShuffle(unsigned char*, unsigned char*)",93957342165024,93957342165201],["v8::internal::compiler::InstructionSelector::VisitF32x4Pmin(v8::internal::compiler::Node*)",93957342165696,93957342165711],["v8::internal::compiler::InstructionSelector::VisitF32x4Pmax(v8::internal::compiler::Node*)",93957342165984,93957342165999],["v8::internal::compiler::InstructionSelector::VisitF64x2Pmax(v8::internal::compiler::Node*)",93957342166016,93957342166031],["semtimedop",139871564307712,139871564307754],["__monstartup",139871564309424,139871564309905],["sprofil",139871564311664,139871564312863],["_mcount",139871564312880,139871564312971],["v8::internal::(anonymous namespace)::FunctionDataMap::VisitThread(v8::internal::Isolate*, v8::internal::ThreadLocalTop*)",93957336373264,93957336373866],["v8::internal::(anonymous namespace)::TokenizingLineArrayCompareOutput::SetSubrange2(int, int)",93957336375808,93957336375817],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::DeoptimizeReason)",93957336376352,93957336377148],["std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >::__append(unsigned long)",93957336377856,93957336378164],["v8::internal::Deoptimizer::Grab(v8::internal::Isolate*)",93957336378576,93957336378741],["v8::internal::Deoptimizer::DeoptimizeMarkedCodeForContext(v8::internal::NativeContext)",93957336379344,93957336380324],["v8::internal::Deoptimizer::DeoptimizeAll(v8::internal::Isolate*)",93957336380832,93957336381499],["v8::internal::Deoptimizer::DeoptimizeMarkedCode(v8::internal::Isolate*)",93957336381680,93957336382203],["v8::base::TemplateHashMapEntry<v8::internal::Handle<v8::internal::Name>, int>* v8::base::TemplateHashMapImpl<v8::internal::Handle<v8::internal::Name>, int, v8::internal::(anonymous namespace)::NameComparator, v8::internal::ZoneAllocationPolicy>::Probe<v8::internal::Handle<v8::internal::Name> >(v8::internal::Handle<v8::internal::Name> const&, unsigned int) const",93957338861184,93957338861488],["void v8::internal::LookupIterator::NextInternal<true>(v8::internal::Map, v8::internal::JSReceiver)",93957338877392,93957338877779],["v8::internal::LookupIterator::PrepareForDataProperty(v8::internal::Handle<v8::internal::Object>)",93957338882416,93957338883423],["v8::internal::LookupIterator::State v8::internal::LookupIterator::LookupInRegularHolder<false>(v8::internal::Map, v8::internal::JSReceiver)",93957338888768,93957338889510],["v8::internal::LookupIterator::FetchValue(v8::internal::AllocationPolicy) const",93957338890896,93957338891642],["v8::internal::LookupIterator::GetDataValue(v8::internal::AllocationPolicy) const",93957338892048,93957338892058],["v8::internal::LookupIterator::LookupCachedProperty(v8::internal::Handle<v8::internal::AccessorPair>)",93957338892992,93957338893194],["v8::internal::LookupIterator::State v8::internal::LookupIterator::LookupInRegularHolder<true>(v8::internal::Map, v8::internal::JSReceiver)",93957338893760,93957338894748],["v8::internal::(anonymous namespace)::ManagedObjectFinalizerSecondPass(v8::WeakCallbackInfo<void> const&)",93957338895024,93957338895099],["v8::internal::MapUpdater::ReconfigureToDataField(v8::internal::InternalIndex, v8::internal::PropertyAttributes, v8::internal::PropertyConstness, v8::internal::Representation, v8::internal::Handle<v8::internal::FieldType>)",93957338895328,93957338896122],["v8::internal::MapUpdater::FindRootMap()",93957338896640,93957338897524],["v8::internal::MapUpdater::ConstructNewMap()",93957338899904,93957338901440],["v8::internal::MapUpdater::ReconfigureElementsKind(v8::internal::ElementsKind)",93957338901760,93957338901847],["v8::internal::MapUpdater::TrySaveIntegrityLevelTransitions()",93957338901920,93957338902860],["v8::internal::MapUpdater::BuildDescriptorArray()",93957338903152,93957338906581],["v8::internal::Map::GetPrototypeChainRootMap(v8::internal::Isolate*) const",93957338907264,93957338907375],["v8::internal::compiler::InstructionSelector::VisitI8x16UConvertI16x8(v8::internal::compiler::Node*)",93957342153600,93957342153879],["v8::internal::compiler::InstructionSelector::VisitI8x16MaxU(v8::internal::compiler::Node*)",93957342157056,93957342157335],["v8::internal::compiler::InstructionSelector::VisitS128Select(v8::internal::compiler::Node*)",93957342158640,93957342158976],["v8::internal::compiler::InstructionSelector::VisitF32x4UConvertI32x4(v8::internal::compiler::Node*)",93957342159552,93957342159705],["v8::internal::compiler::InstructionSelector::VisitF32x4Qfma(v8::internal::compiler::Node*)",93957342160352,93957342160666],["v8::internal::compiler::InstructionSelector::VisitI64x2ShrS(v8::internal::compiler::Node*)",93957342160992,93957342161284],["v8::internal::compiler::InstructionSelector::VisitI32x4SConvertF32x4(v8::internal::compiler::Node*)",93957342161600,93957342161753],["v8::internal::compiler::InstructionSelector::VisitI8x16ShrS(v8::internal::compiler::Node*)",93957342162032,93957342162690],["msgctl",139871564307424,139871564307458],["shmdt",139871564307808,139871564307842],["moncontrol",139871564309312,139871564309409],["_mcleanup",139871564309984,139871564310060],["void std::__1::vector<v8::internal::(anonymous namespace)::SourcePositionEvent, std::__1::allocator<v8::internal::(anonymous namespace)::SourcePositionEvent> >::emplace_back<v8::internal::FunctionLiteral*&, bool>(v8::internal::FunctionLiteral*&, bool&&)",93957336366224,93957336366601],["std::__1::__tree<std::__1::__value_type<std::__1::pair<int, int>, v8::internal::(anonymous namespace)::FunctionData>, std::__1::__map_value_compare<std::__1::pair<int, int>, std::__1::__value_type<std::__1::pair<int, int>, v8::internal::(anonymous namespace)::FunctionData>, std::__1::less<std::__1::pair<int, int> >, true>, std::__1::allocator<std::__1::__value_type<std::__1::pair<int, int>, v8::internal::(anonymous namespace)::FunctionData> > >::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::pair<int, int>, v8::internal::(anonymous namespace)::FunctionData>, void*>*)",93957336374656,93957336374743],["v8::internal::(anonymous namespace)::TokenizingLineArrayCompareOutput::AddChunk(int, int, int, int)",93957336375280,93957336375784],["v8::internal::(anonymous namespace)::TokensCompareInput::GetLength2()",93957336375840,93957336375849],["v8::internal::(anonymous namespace)::Differencer::CompareUpToTail(int, int)",93957336376128,93957336376340],["v8::internal::hash_value(v8::internal::DeoptimizeReason)",93957336377152,93957336377160],["v8::internal::DeoptimizedFrameInfo::DeoptimizedFrameInfo(v8::internal::TranslatedState*, std::__1::__wrap_iter<v8::internal::TranslatedFrame*>, v8::internal::Isolate*)",93957336377200,93957336377850],["v8::internal::Deoptimizer::FindDeoptimizingCode(unsigned long)",93957336378176,93957336378460],["v8::internal::KeyAccumulator::CollectPrivateNames(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>)",93957338852592,93957338853021],["v8::internal::Handle<v8::internal::ClassBoilerplate> v8::internal::ClassBoilerplate::BuildClassBoilerplate<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::ClassLiteral*)",93957338867824,93957338869926],["v8::internal::Handle<v8::internal::SwissNameDictionary> v8::internal::SwissNameDictionary::Add<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SwissNameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, v8::internal::InternalIndex*)",93957338875600,93957338876009],["void v8::internal::LookupIterator::RestartInternal<false>(v8::internal::LookupIterator::InterceptorState)",93957338878400,93957338878428],["v8::internal::LookupIterator::HasAccess() const",93957338880720,93957338880832],["v8::internal::LookupIterator::ReconfigureDataProperty(v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338884176,93957338885262],["v8::internal::LookupIterator::Delete()",93957338887264,93957338887698],["v8::internal::AccessorPair::SetComponents(v8::internal::Object, v8::internal::Object)",93957338889536,93957338889842],["v8::internal::LookupIterator::HolderIsReceiverOrHiddenPrototype() const",93957338890816,93957338890892],["v8::internal::LookupIterator::GetAccessorIndex() const",93957338891648,93957338891657],["v8::internal::LookupIterator::GetPropertyCell() const",93957338891936,93957338892048],["v8::internal::JSObject::WriteToField(v8::internal::InternalIndex, v8::internal::PropertyDetails, v8::internal::Object)",93957338892064,93957338892807],["v8::internal::LookupIterator::TryLookupCachedProperty(v8::internal::Handle<v8::internal::AccessorPair>)",93957338892976,93957338892986],["v8::internal::LookupIterator::TryLookupCachedProperty()",93957338893200,93957338893274],["v8::internal::ConcurrentLookupIterator::TryGetOwnConstantElement(v8::internal::Object*, v8::internal::Isolate*, v8::internal::LocalIsolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned long)",93957338893376,93957338893757],["bool v8::internal::LookupIterator::SkipInterceptor<false>(v8::internal::JSObject)",93957338894752,93957338894969],["v8::internal::compiler::InstructionSelector::VisitI16x8MaxU(v8::internal::compiler::Node*)",93957342151296,93957342151575],["v8::internal::compiler::InstructionSelector::VisitI8x16SubSatS(v8::internal::compiler::Node*)",93957342154752,93957342155031],["v8::internal::compiler::InstructionSelector::VisitI8x16SubSatU(v8::internal::compiler::Node*)",93957342156480,93957342156759],["v8::internal::compiler::InstructionSelector::VisitS128And(v8::internal::compiler::Node*)",93957342157632,93957342157911],["v8::internal::compiler::InstructionSelector::VisitV128AnyTrue(v8::internal::compiler::Node*)",93957342158496,93957342158639],["v8::internal::compiler::InstructionSelector::VisitS128AndNot(v8::internal::compiler::Node*)",93957342158976,93957342159227],["v8::internal::compiler::InstructionSelector::VisitF64x2Neg(v8::internal::compiler::Node*)",93957342159392,93957342159545],["v8::internal::compiler::InstructionSelector::VisitF64x2Qfma(v8::internal::compiler::Node*)",93957342159712,93957342160026],["ftok",139871564306896,139871564307008],["semget",139871564307488,139871564307522],["shmat",139871564307760,139871564307796],["shmget",139871564307856,139871564307898],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitProperty(v8::internal::Property*)",93957336364624,93957336364694],["unsigned int std::__1::__sort5<bool (*&)(v8::internal::(anonymous namespace)::SourcePositionEvent const&, v8::internal::(anonymous namespace)::SourcePositionEvent const&), v8::internal::(anonymous namespace)::SourcePositionEvent*>(v8::internal::(anonymous namespace)::SourcePositionEvent*, v8::internal::(anonymous namespace)::SourcePositionEvent*, v8::internal::(anonymous namespace)::SourcePositionEvent*, v8::internal::(anonymous namespace)::SourcePositionEvent*, v8::internal::(anonymous namespace)::SourcePositionEvent*, bool (*&)(v8::internal::(anonymous namespace)::SourcePositionEvent const&, v8::internal::(anonymous namespace)::SourcePositionEvent const&))",93957336369440,93957336370046],["void std::__1::vector<v8::internal::Handle<v8::internal::JSFunction>, std::__1::allocator<v8::internal::Handle<v8::internal::JSFunction> > >::__emplace_back_slow_path<v8::internal::JSFunction&, v8::internal::Isolate*&>(v8::internal::JSFunction&, v8::internal::Isolate*&)",93957336373920,93957336374261],["v8::internal::(anonymous namespace)::LineArrayCompareInput::GetLength2()",93957336374768,93957336374777],["v8::internal::(anonymous namespace)::LineArrayCompareInput::SetSubrange2(int, int)",93957336375264,93957336375276],["v8::internal::(anonymous namespace)::TokenizingLineArrayCompareOutput::SetSubrange1(int, int)",93957336375792,93957336375801],["v8::internal::RegExpGroup::max_match()",93957336375824,93957336375833],["v8::internal::(anonymous namespace)::TokensCompareInput::Equals(int, int)",93957336375856,93957336376018],["v8::internal::FastKeyAccumulator::GetKeysFast(v8::internal::GetKeysConversion)",93957338837712,93957338838103],["bool std::__1::__insertion_sort_incomplete<v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&)",93957338856944,93957338857522],["void v8::internal::(anonymous namespace)::AddToDictionaryTemplate<v8::internal::LocalIsolate, v8::internal::NameDictionary, v8::internal::Handle<v8::internal::Name> >(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, int, v8::internal::ClassBoilerplate::ValueKind, v8::internal::Smi)",93957338863296,93957338864712],["v8::internal::Handle<v8::internal::ClassBoilerplate> v8::internal::ClassBoilerplate::BuildClassBoilerplate<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::ClassLiteral*)",93957338871328,93957338873523],["v8::internal::AccessorPair::set(v8::internal::AccessorComponent, v8::internal::Object)",93957338875264,93957338875451],["v8::internal::DescriptorLookupCache::Clear()",93957338876528,93957338877213],["void v8::internal::LookupIterator::NextInternal<false>(v8::internal::Map, v8::internal::JSReceiver)",93957338877968,93957338878355],["v8::internal::LookupIterator::Next()",93957338878816,93957338878984],["v8::internal::LookupIterator::GetRootForNonJSReceiver(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338880272,93957338880719],["v8::internal::LookupIterator::InternalUpdateProtector(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>)",93957338880832,93957338882401],["v8::internal::LookupIterator::IsConstFieldValueEqualTo(v8::internal::Object) const",93957338883424,93957338884176],["v8::internal::LookupIterator::WriteDataValue(v8::internal::Handle<v8::internal::Object>, bool)",93957338885264,93957338885678],["v8::internal::LookupIterator::ApplyTransitionToDataProperty(v8::internal::Handle<v8::internal::JSReceiver>)",93957338886144,93957338887252],["v8::internal::LookupIterator::TransitionToAccessorProperty(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338887712,93957338888768],["v8::internal::LookupIterator::GetAccessors() const",93957338889520,93957338889532],["v8::internal::LookupIterator::TransitionToAccessorPair(v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338889856,93957338890775],["v8::internal::compiler::InstructionSelector::VisitI16x8Mul(v8::internal::compiler::Node*)",93957342148992,93957342149271],["v8::internal::compiler::InstructionSelector::VisitI16x8ExtMulLowI8x16U(v8::internal::compiler::Node*)",93957342152448,93957342152727],["v8::internal::compiler::InstructionSelector::VisitI8x16AddSatS(v8::internal::compiler::Node*)",93957342154176,93957342154455],["v8::internal::compiler::InstructionSelector::VisitI8x16MaxS(v8::internal::compiler::Node*)",93957342155328,93957342155607],["v8::internal::compiler::InstructionSelector::VisitI8x16AddSatU(v8::internal::compiler::Node*)",93957342156192,93957342156471],["v8::internal::compiler::InstructionSelector::VisitI8x16MinU(v8::internal::compiler::Node*)",93957342156768,93957342157047],["v8::internal::compiler::InstructionSelector::VisitI8x16RoundingAverageU(v8::internal::compiler::Node*)",93957342157344,93957342157623],["v8::internal::compiler::InstructionSelector::VisitS128Or(v8::internal::compiler::Node*)",93957342157920,93957342158199],["recvmmsg",139871564306432,139871564306603],["__libc_msgrcv",139871564307184,139871564307365],["semop",139871564307472,139871564307479],["semctl",139871564307536,139871564307704],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitSwitchStatement(v8::internal::SwitchStatement*)",93957336363680,93957336363847],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitConditional(v8::internal::Conditional*)",93957336365456,93957336365556],["v8::internal::(anonymous namespace)::SourcePositionEvent::LessThan(v8::internal::(anonymous namespace)::SourcePositionEvent const&, v8::internal::(anonymous namespace)::SourcePositionEvent const&)",93957336366992,93957336367180],["std::__1::unordered_map<v8::internal::FunctionLiteral*, v8::internal::(anonymous namespace)::ChangeState, std::__1::hash<v8::internal::FunctionLiteral*>, std::__1::equal_to<v8::internal::FunctionLiteral*>, std::__1::allocator<std::__1::pair<v8::internal::FunctionLiteral* const, v8::internal::(anonymous namespace)::ChangeState> > >::operator[](v8::internal::FunctionLiteral* const&)",93957336371280,93957336372345],["v8::internal::(anonymous namespace)::FunctionDataMap::~FunctionDataMap()",93957336373872,93957336373918],["std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::__unordered_map_hasher<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::hash<v8::internal::wasm::WasmCode const*>, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, std::__1::hash<v8::internal::wasm::WasmCode const*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > > > >::find<v8::internal::wasm::WasmCode const*>(v8::internal::wasm::WasmCode const* const&) const",93957336374272,93957336374646],["v8::internal::(anonymous namespace)::LineArrayCompareInput::GetLength1()",93957336374752,93957336374761],["v8::internal::(anonymous namespace)::LineArrayCompareInput::Equals(int, int)",93957336374784,93957336375241],["v8::internal::JSSegments::CreateSegmentDataObject(v8::internal::Isolate*, v8::internal::JSSegmenter::Granularity, icu_68::BreakIterator*, icu_68::UnicodeString const&, int, int)",93957338828944,93957338829497],["v8::internal::KeyAccumulator::CollectInterceptorKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator::IndexedOrNamed)",93957338843280,93957338843799],["unsigned int std::__1::__sort3<v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&)",93957338855520,93957338855887],["unsigned int std::__1::__sort5<v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&)",93957338859744,93957338860140],["void v8::internal::ClassBoilerplate::AddToPropertiesTemplate<v8::internal::Isolate, v8::internal::NameDictionary>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, int, v8::internal::ClassBoilerplate::ValueKind, v8::internal::Smi)",93957338861856,93957338861866],["void v8::internal::(anonymous namespace)::AddToDictionaryTemplate<v8::internal::Isolate, v8::internal::NumberDictionary, unsigned int>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, unsigned int, int, v8::internal::ClassBoilerplate::ValueKind, v8::internal::Smi)",93957338864736,93957338866249],["v8::internal::ObjectDescriptor<v8::internal::Isolate>::AddConstant(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338870224,93957338870455],["v8::internal::ObjectDescriptor<v8::internal::LocalIsolate>::AddConstant(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338873824,93957338874055],["v8::internal::RegExpBoilerplateDescription::BriefPrintDetails(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957338875088,93957338875259],["v8::internal::TorqueGeneratedAccessorPair<v8::internal::AccessorPair, v8::internal::Struct>::set_setter(v8::internal::Object, v8::internal::WriteBarrierMode)",93957338875456,93957338875587],["v8::internal::SwissNameDictionary::AddInternal(v8::internal::Name, v8::internal::Object, v8::internal::PropertyDetails)",93957338876016,93957338876522],["void v8::internal::LookupIterator::Start<true>()",93957338877216,93957338877391],["void v8::internal::LookupIterator::Start<false>()",93957338877792,93957338877967],["void v8::internal::LookupIterator::RestartInternal<true>(v8::internal::LookupIterator::InterceptorState)",93957338878368,93957338878396],["v8::internal::LookupIterator::Key::Key(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, bool*)",93957338878432,93957338878801],["v8::internal::LookupIterator::State v8::internal::LookupIterator::LookupInSpecialHolder<true>(v8::internal::Map, v8::internal::JSReceiver)",93957338878992,93957338879737],["v8::internal::compiler::InstructionSelector::VisitI32x4ExtMulLowI16x8U(v8::internal::compiler::Node*)",93957342146688,93957342146967],["v8::internal::compiler::InstructionSelector::VisitI16x8GtS(v8::internal::compiler::Node*)",93957342150144,93957342150423],["v8::internal::compiler::InstructionSelector::VisitI16x8ExtMulLowI8x16S(v8::internal::compiler::Node*)",93957342151872,93957342152151],["v8::internal::compiler::InstructionSelector::VisitI16x8Q15MulRSatS(v8::internal::compiler::Node*)",93957342153024,93957342153303],["v8::internal::compiler::InstructionSelector::VisitI8x16Add(v8::internal::compiler::Node*)",93957342153888,93957342154167],["v8::internal::compiler::InstructionSelector::VisitI8x16Sub(v8::internal::compiler::Node*)",93957342154464,93957342154743],["v8::internal::compiler::InstructionSelector::VisitI8x16MinS(v8::internal::compiler::Node*)",93957342155040,93957342155319],["v8::internal::compiler::InstructionSelector::VisitI8x16Eq(v8::internal::compiler::Node*)",93957342155616,93957342155895],["socketpair",139871564305568,139871564305604],["__libc_sa_len",139871564306784,139871564306809],["__libc_msgsnd",139871564307008,139871564307171],["msgget",139871564307376,139871564307410],["v8::internal::LiveEdit::RestartFrame(v8::internal::JavaScriptFrame*)",93957336361200,93957336361686],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitInitializeClassMembersStatement(v8::internal::InitializeClassMembersStatement*)",93957336364064,93957336364179],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitCallNew(v8::internal::CallNew*)",93957336364864,93957336365000],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitImportCallExpression(v8::internal::ImportCallExpression*)",93957336366032,93957336366109],["void std::__1::vector<v8::internal::(anonymous namespace)::SourcePositionEvent, std::__1::allocator<v8::internal::(anonymous namespace)::SourcePositionEvent> >::emplace_back<v8::internal::SourceChangeRange const&, bool>(v8::internal::SourceChangeRange const&, bool&&)",93957336366608,93957336366980],["void std::__1::__sort<bool (*&)(v8::internal::(anonymous namespace)::SourcePositionEvent const&, v8::internal::(anonymous namespace)::SourcePositionEvent const&), v8::internal::(anonymous namespace)::SourcePositionEvent*>(v8::internal::(anonymous namespace)::SourcePositionEvent*, v8::internal::(anonymous namespace)::SourcePositionEvent*, bool (*&)(v8::internal::(anonymous namespace)::SourcePositionEvent const&, v8::internal::(anonymous namespace)::SourcePositionEvent const&))",93957336367184,93957336369428],["bool std::__1::__insertion_sort_incomplete<bool (*&)(v8::internal::(anonymous namespace)::SourcePositionEvent const&, v8::internal::(anonymous namespace)::SourcePositionEvent const&), v8::internal::(anonymous namespace)::SourcePositionEvent*>(v8::internal::(anonymous namespace)::SourcePositionEvent*, v8::internal::(anonymous namespace)::SourcePositionEvent*, bool (*&)(v8::internal::(anonymous namespace)::SourcePositionEvent const&, v8::internal::(anonymous namespace)::SourcePositionEvent const&))",93957336370048,93957336371273],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, v8::Global<v8::Value> >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, v8::Global<v8::Value> >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, v8::Global<v8::Value> >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, v8::Global<v8::Value> >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, v8::Global<v8::Value> > > >::__emplace_unique_key_args<int, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>, std::__1::tuple<> >(int const&, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>&&, std::__1::tuple<>&&)",93957336372352,93957336373263],["v8::internal::JSRegExp::MarkedForTierUp()",93957338816528,93957338816613],["v8::internal::FilterProxyKeys(v8::internal::KeyAccumulator*, v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::PropertyFilter)",93957338831328,93957338832086],["v8::internal::MaybeHandle<v8::internal::FixedArray> v8::internal::(anonymous namespace)::GetOwnKeysWithElements<true>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::GetKeysConversion, bool)",93957338839952,93957338840240],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::(anonymous namespace)::GetOwnEnumPropertyDictionaryKeys<v8::internal::NameDictionary>(v8::internal::Isolate*, v8::internal::KeyCollectionMode, v8::internal::KeyAccumulator*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::NameDictionary)",93957338847696,93957338849119],["v8::internal::PropertyCallbackArguments::CallPropertyEnumerator(v8::internal::Handle<v8::internal::InterceptorInfo>)",93957338853328,93957338853981],["unsigned int std::__1::__sort5<v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&)",93957338856208,93957338856618],["unsigned int std::__1::__sort3<v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&)",93957338859056,93957338859414],["bool std::__1::__insertion_sort_incomplete<v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&)",93957338860448,93957338861015],["v8::base::TemplateHashMapImpl<v8::internal::Handle<v8::internal::Name>, int, v8::internal::(anonymous namespace)::NameComparator, v8::internal::ZoneAllocationPolicy>::FillEmptyEntry(v8::base::TemplateHashMapEntry<v8::internal::Handle<v8::internal::Name>, int>*, v8::internal::Handle<v8::internal::Name> const&, int const&, unsigned int)",93957338861488,93957338861845],["void v8::internal::(anonymous namespace)::AddToDictionaryTemplate<v8::internal::Isolate, v8::internal::NameDictionary, v8::internal::Handle<v8::internal::Name> >(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, int, v8::internal::ClassBoilerplate::ValueKind, v8::internal::Smi)",93957338861872,93957338863289],["void v8::internal::ClassBoilerplate::AddToElementsTemplate<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NumberDictionary>, unsigned int, int, v8::internal::ClassBoilerplate::ValueKind, v8::internal::Smi)",93957338864720,93957338864730],["void v8::internal::(anonymous namespace)::AddToDictionaryTemplate<v8::internal::LocalIsolate, v8::internal::NumberDictionary, unsigned int>(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::NumberDictionary>, unsigned int, int, v8::internal::ClassBoilerplate::ValueKind, v8::internal::Smi)",93957338866256,93957338867818],["v8::internal::ObjectDescriptor<v8::internal::Isolate>::CreateTemplates(v8::internal::Isolate*)",93957338869936,93957338870218],["v8::internal::ObjectDescriptor<v8::internal::Isolate>::AddNamedProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, v8::internal::ClassBoilerplate::ValueKind, int)",93957338870464,93957338871324],["v8::internal::ObjectDescriptor<v8::internal::LocalIsolate>::CreateTemplates(v8::internal::LocalIsolate*)",93957338873536,93957338873818],["v8::internal::ObjectDescriptor<v8::internal::LocalIsolate>::AddNamedProperty(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::Name>, v8::internal::ClassBoilerplate::ValueKind, int)",93957338874064,93957338874924],["v8::internal::compiler::InstructionSelector::VisitI32x4MaxS(v8::internal::compiler::Node*)",93957342144384,93957342144663],["v8::internal::compiler::InstructionSelector::VisitI16x8Add(v8::internal::compiler::Node*)",93957342147840,93957342148119],["v8::internal::compiler::InstructionSelector::VisitI16x8MaxS(v8::internal::compiler::Node*)",93957342149568,93957342149847],["v8::internal::compiler::InstructionSelector::VisitI16x8SubSatU(v8::internal::compiler::Node*)",93957342150720,93957342150999],["v8::internal::compiler::InstructionSelector::VisitI16x8RoundingAverageU(v8::internal::compiler::Node*)",93957342151584,93957342151863],["v8::internal::compiler::InstructionSelector::VisitI16x8ExtMulHighI8x16S(v8::internal::compiler::Node*)",93957342152160,93957342152439],["v8::internal::compiler::InstructionSelector::VisitI16x8ExtMulHighI8x16U(v8::internal::compiler::Node*)",93957342152736,93957342153015],["v8::internal::compiler::InstructionSelector::VisitI8x16SConvertI16x8(v8::internal::compiler::Node*)",93957342153312,93957342153591],["sendto",139871564305232,139871564305421],["sockatmark",139871564306176,139871564306246],["__sendmmsg",139871564306608,139871564306771],["__cmsg_nxthdr",139871564306816,139871564306883],["void std::__1::__function::__policy_invoker<void (v8::internal::Handle<v8::internal::DebugInfo>)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::Debug::ClearAllDebuggerHints()::$_2, void (v8::internal::Handle<v8::internal::DebugInfo>)> >(std::__1::__function::__policy_storage const*, v8::internal::Handle<v8::internal::DebugInfo>&&)",93957336341008,93957336341027],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitWhileStatement(v8::internal::WhileStatement*)",93957336363232,93957336363281],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitWithStatement(v8::internal::WithStatement*)",93957336363936,93957336363985],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitObjectLiteral(v8::internal::ObjectLiteral*)",93957336364368,93957336364498],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitNaryOperation(v8::internal::NaryOperation*)",93957336364704,93957336364852],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitClassLiteral(v8::internal::ClassLiteral*)",93957336365008,93957336365443],["v8::internal::(anonymous namespace)::CollectFunctionLiterals::VisitFunctionLiteral(v8::internal::FunctionLiteral*)",93957336365568,93957336366017],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitTemplateLiteral(v8::internal::TemplateLiteral*)",93957336366112,93957336366219],["v8::internal::Handle<v8::internal::HeapNumber> v8::internal::FactoryBase<v8::internal::Factory>::NewHeapNumberFromBits<(v8::internal::AllocationType)0>(unsigned long)",93957338804960,93957338804988],["v8::internal::JSRelativeTimeFormat::FormatToParts(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSRelativeTimeFormat>)",93957338821536,93957338823854],["v8::internal::KeyAccumulator::AddKey(v8::internal::Object, v8::internal::AddKeyConversion)",93957338830384,93957338830492],["v8::internal::KeyAccumulator::CollectOwnKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>)",93957338835392,93957338835967],["v8::internal::FastKeyAccumulator::GetKeysSlow(v8::internal::GetKeysConversion)",93957338839376,93957338839512],["v8::internal::KeyAccumulator::FilterForEnumerableProperties(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::InterceptorInfo>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator::IndexedOrNamed)",93957338841920,93957338842617],["v8::internal::KeyAccumulator::CollectOwnPropertyNames(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>)",93957338844080,93957338846719],["v8::internal::ExceptionStatus v8::internal::(anonymous namespace)::CollectKeysFromDictionary<v8::internal::GlobalDictionary>(v8::internal::Handle<v8::internal::GlobalDictionary>, v8::internal::KeyAccumulator*)",93957338850064,93957338851261],["v8::internal::KeyAccumulator::CollectAccessCheckInterceptorKeys(v8::internal::Handle<v8::internal::AccessCheckInfo>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>)",93957338853024,93957338853325],["void std::__1::__sort<v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&)",93957338853984,93957338855517],["unsigned int std::__1::__sort4<v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&)",93957338855888,93957338856206],["void std::__1::__insertion_sort_3<v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::GlobalDictionary>&)",93957338856624,93957338856929],["void std::__1::__sort<v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&)",93957338857536,93957338859049],["unsigned int std::__1::__sort4<v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&)",93957338859424,93957338859739],["void std::__1::__insertion_sort_3<v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::EnumIndexComparator<v8::internal::NameDictionary>&)",93957338860144,93957338860436],["v8::base::TemplateHashMapImpl<v8::internal::Handle<v8::internal::Name>, int, v8::internal::(anonymous namespace)::NameComparator, v8::internal::ZoneAllocationPolicy>::Initialize(unsigned int)",93957338861024,93957338861184],["v8::internal::compiler::InstructionSelector::VisitI64x2ExtMulLowI32x4S(v8::internal::compiler::Node*)",93957342142080,93957342142359],["v8::internal::compiler::InstructionSelector::VisitI32x4MaxU(v8::internal::compiler::Node*)",93957342145536,93957342145815],["v8::internal::compiler::InstructionSelector::VisitI16x8SConvertI32x4(v8::internal::compiler::Node*)",93957342147264,93957342147543],["v8::internal::compiler::InstructionSelector::VisitI16x8Sub(v8::internal::compiler::Node*)",93957342148416,93957342148695],["v8::internal::compiler::InstructionSelector::VisitI16x8MinS(v8::internal::compiler::Node*)",93957342149280,93957342149559],["v8::internal::compiler::InstructionSelector::VisitI16x8Eq(v8::internal::compiler::Node*)",93957342149856,93957342150135],["v8::internal::compiler::InstructionSelector::VisitI16x8AddSatU(v8::internal::compiler::Node*)",93957342150432,93957342150711],["v8::internal::compiler::InstructionSelector::VisitI16x8MinU(v8::internal::compiler::Node*)",93957342151008,93957342151287],["recvfrom",139871564304528,139871564304717],["shutdown",139871564305472,139871564305505],["isfdtype",139871564305616,139871564305737],["accept4",139871564306256,139871564306419],["v8::internal::SharedFunctionInfoFinder::NewCandidate(v8::internal::SharedFunctionInfo, v8::internal::JSFunction)",93957336338480,93957336338857],["v8::internal::(anonymous namespace)::FunctionDataMap::AddInterestingLiteral(int, v8::internal::FunctionLiteral*, bool)",93957336360560,93957336360826],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::Visit(v8::internal::AstNode*)",93957336362400,93957336363155],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitForInStatement(v8::internal::ForInStatement*)",93957336363408,93957336363475],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitIfStatement(v8::internal::IfStatement*)",93957336363856,93957336363923],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitTryCatchStatement(v8::internal::TryCatchStatement*)",93957336364000,93957336364049],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitInitializeClassStaticElementsStatement(v8::internal::InitializeClassStaticElementsStatement*)",93957336364192,93957336364355],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitCallRuntime(v8::internal::CallRuntime*)",93957336364512,93957336364609],["v8::internal::JSDate::DoGetField(v8::internal::Isolate*, v8::internal::JSDate::FieldIndex)",93957338797568,93957338798092],["v8::internal::JSArray::SetContent(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338812912,93957338813396],["v8::internal::JSRegExp::Initialize(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957338816768,93957338816900],["v8::internal::JSSegmenter::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338825536,93957338827578],["v8::internal::FastKeyAccumulator::GetKeys(v8::internal::GetKeysConversion)",93957338829776,93957338829986],["v8::internal::KeyAccumulator::IsShadowed(v8::internal::Handle<v8::internal::Object>)",93957338830944,93957338831169],["v8::internal::KeyAccumulator::CollectKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSReceiver>)",93957338832448,93957338832854],["v8::internal::FastKeyAccumulator::Prepare()",93957338836144,93957338836994],["v8::internal::FastKeyAccumulator::GetKeysWithPrototypeInfoCache(v8::internal::GetKeysConversion)",93957338838112,93957338839368],["v8::internal::MaybeHandle<v8::internal::FixedArray> v8::internal::(anonymous namespace)::GetOwnKeysWithElements<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::GetKeysConversion, bool)",93957338839520,93957338839943],["v8::internal::(anonymous namespace)::GetFastEnumPropertyKeys(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>)",93957338840240,93957338841905],["v8::internal::KeyAccumulator::CollectInterceptorKeysInternal(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::InterceptorInfo>, v8::internal::KeyAccumulator::IndexedOrNamed)",93957338842624,93957338843278],["v8::internal::KeyAccumulator::CollectOwnElementIndices(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSObject>)",93957338843808,93957338844066],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::(anonymous namespace)::GetOwnEnumPropertyDictionaryKeys<v8::internal::GlobalDictionary>(v8::internal::Isolate*, v8::internal::KeyCollectionMode, v8::internal::KeyAccumulator*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::GlobalDictionary)",93957338846720,93957338847688],["v8::base::Optional<int> v8::internal::(anonymous namespace)::CollectOwnPropertyNamesInternal<false>(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::Handle<v8::internal::DescriptorArray>, int, int)",93957338849120,93957338850060],["v8::internal::ExceptionStatus v8::internal::(anonymous namespace)::CollectKeysFromDictionary<v8::internal::NameDictionary>(v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::KeyAccumulator*)",93957338851264,93957338852590],["v8::internal::compiler::InstructionSelector::VisitF32x4Div(v8::internal::compiler::Node*)",93957342139776,93957342140055],["v8::internal::compiler::InstructionSelector::VisitI32x4Add(v8::internal::compiler::Node*)",93957342143232,93957342143511],["v8::internal::compiler::InstructionSelector::VisitI32x4GtS(v8::internal::compiler::Node*)",93957342144960,93957342145239],["v8::internal::compiler::InstructionSelector::VisitI32x4ExtMulLowI16x8S(v8::internal::compiler::Node*)",93957342146112,93957342146391],["v8::internal::compiler::InstructionSelector::VisitI32x4ExtMulHighI16x8U(v8::internal::compiler::Node*)",93957342146976,93957342147255],["v8::internal::compiler::InstructionSelector::VisitI16x8UConvertI32x4(v8::internal::compiler::Node*)",93957342147552,93957342147831],["v8::internal::compiler::InstructionSelector::VisitI16x8AddSatS(v8::internal::compiler::Node*)",93957342148128,93957342148407],["v8::internal::compiler::InstructionSelector::VisitI16x8SubSatS(v8::internal::compiler::Node*)",93957342148704,93957342148983],["getsockname",139871564304192,139871564304225],["__send",139871564304880,139871564305061],["setsockopt",139871564305424,139871564305460],["__socket",139871564305520,139871564305553],["v8::internal::Debug::StopSideEffectCheckMode()",93957336335456,93957336335863],["v8::internal::Debug::TemporaryObjectsTracker::~TemporaryObjectsTracker()",93957336339872,93957336339970],["v8::internal::LiveEdit::CompareStrings(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, std::__1::vector<v8::internal::SourceChangeRange, std::__1::allocator<v8::internal::SourceChangeRange> >*)",93957336359488,93957336360182],["v8::internal::(anonymous namespace)::FunctionDataMap::~FunctionDataMap()",93957336361152,93957336361180],["v8::internal::(anonymous namespace)::Comparator::CalculateDifference(v8::internal::(anonymous namespace)::Comparator::Input*, v8::internal::(anonymous namespace)::Comparator::Output*)",93957336361696,93957336362394],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitDoWhileStatement(v8::internal::DoWhileStatement*)",93957336363168,93957336363217],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitForStatement(v8::internal::ForStatement*)",93957336363296,93957336363399],["v8::internal::AstTraversalVisitor<v8::internal::(anonymous namespace)::CollectFunctionLiterals>::VisitBlock(v8::internal::Block*)",93957336363488,93957336363677],["v8::internal::JSObject::ReoptimizeIfPrototype(v8::internal::Handle<v8::internal::JSObject>)",93957338792288,93957338792386],["v8::internal::PropertyCallbackArguments::CallIndexedDefiner(v8::internal::Handle<v8::internal::InterceptorInfo>, unsigned int, v8::PropertyDescriptor const&)",93957338800432,93957338801215],["v8::internal::JSPluralRules::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSPluralRules>)",93957338808064,93957338810064],["v8::internal::JSRegExp::Initialize(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, unsigned int)",93957338814496,93957338816305],["v8::internal::JSRegExp::TierUpTick()",93957338816672,93957338816719],["v8::internal::JSRelativeTimeFormat::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSRelativeTimeFormat>)",93957338820160,93957338820707],["v8::internal::JSSegmentIterator::Create(v8::internal::Isolate*, icu_68::BreakIterator*, v8::internal::JSSegmenter::Granularity)",93957338824320,93957338825240],["v8::internal::JSSegments::Create(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSSegmenter>, v8::internal::Handle<v8::internal::String>)",93957338827936,93957338828635],["v8::internal::KeyAccumulator::GetKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::KeyCollectionMode, v8::internal::PropertyFilter, v8::internal::GetKeysConversion, bool, bool)",93957338829504,93957338829776],["v8::internal::KeyAccumulator::GetKeys(v8::internal::GetKeysConversion)",93957338830000,93957338830369],["v8::internal::KeyAccumulator::AddKey(v8::internal::Handle<v8::internal::Object>, v8::internal::AddKeyConversion)",93957338830496,93957338830932],["v8::internal::Handle<v8::internal::Object> v8::internal::FactoryBase<v8::internal::Factory>::NewNumberFromUint<(v8::internal::AllocationType)0>(unsigned int)",93957338831184,93957338831322],["v8::internal::KeyAccumulator::AddKeysFromJSProxy(v8::internal::Handle<v8::internal::JSProxy>, v8::internal::Handle<v8::internal::FixedArray>)",93957338832096,93957338832436],["v8::internal::KeyAccumulator::CollectOwnJSProxyKeys(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSProxy>)",93957338832864,93957338835388],["v8::internal::KeyAccumulator::AddShadowingKey(v8::internal::Object, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, true>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, true> >*)",93957338835968,93957338836137],["v8::internal::FastKeyAccumulator::TryPrototypeInfoCache(v8::internal::Handle<v8::internal::JSReceiver>)",93957338837008,93957338837711],["v8::internal::compiler::InstructionSelector::VisitF64x2Div(v8::internal::compiler::Node*)",93957342137472,93957342137751],["v8::internal::compiler::InstructionSelector::VisitF32x4Le(v8::internal::compiler::Node*)",93957342140928,93957342141207],["v8::internal::compiler::InstructionSelector::VisitI64x2ExtMulLowI32x4U(v8::internal::compiler::Node*)",93957342142656,93957342142935],["v8::internal::compiler::InstructionSelector::VisitI32x4Mul(v8::internal::compiler::Node*)",93957342143808,93957342144087],["v8::internal::compiler::InstructionSelector::VisitI32x4Eq(v8::internal::compiler::Node*)",93957342144672,93957342144951],["v8::internal::compiler::InstructionSelector::VisitI32x4MinU(v8::internal::compiler::Node*)",93957342145248,93957342145527],["v8::internal::compiler::InstructionSelector::VisitI32x4DotI16x8S(v8::internal::compiler::Node*)",93957342145824,93957342146103],["v8::internal::compiler::InstructionSelector::VisitI32x4ExtMulHighI16x8S(v8::internal::compiler::Node*)",93957342146400,93957342146679],["accept",139871564303776,139871564303931],["listen",139871564304288,139871564304321],["recvmsg",139871564304720,139871564304877],["sendmsg",139871564305072,139871564305229],["v8::internal::DebugScope::~DebugScope()",93957336333920,93957336334041],["v8::internal::Debug::PerformSideEffectCheckAtBytecode(v8::internal::InterpretedFrame*)",93957336337440,93957336337882],["v8::internal::Debug::TemporaryObjectsTracker::MoveEvent(unsigned long, unsigned long, int)",93957336338912,93957336339764],["void std::__1::__function::__policy_invoker<void (v8::internal::Handle<v8::internal::DebugInfo>)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::Debug::ClearAllBreakPoints()::$_0, void (v8::internal::Handle<v8::internal::DebugInfo>)> >(std::__1::__function::__policy_storage const*, v8::internal::Handle<v8::internal::DebugInfo>&&)",93957336340896,93957336340953],["v8::internal::LiveEdit::PatchScript(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::String>, bool, v8::debug::LiveEditResult*)",93957336341040,93957336359478],["v8::internal::(anonymous namespace)::ParseScript(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>, v8::internal::ParseInfo*, bool, std::__1::vector<v8::internal::FunctionLiteral*, std::__1::allocator<v8::internal::FunctionLiteral*> >*, v8::debug::LiveEditResult*)",93957336360192,93957336360550],["v8::internal::(anonymous namespace)::FunctionDataMap::Lookup(v8::internal::SharedFunctionInfo, v8::internal::(anonymous namespace)::FunctionData**)",93957336360832,93957336361148],["v8::internal::LiveEdit::InitializeThreadLocal(v8::internal::Debug*)",93957336361184,93957336361198],["v8::internal::JSObject::SetOwnElementIgnoreAttributes(v8::internal::Handle<v8::internal::JSObject>, unsigned long, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338781952,93957338782059],["v8::internal::JSObject::HasRealNamedProperty(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>)",93957338795632,93957338795905],["v8::internal::JSMessageObject::EnsureSourcePositionsAvailable(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSMessageObject>)",93957338799344,93957338799735],["v8::internal::(anonymous namespace)::TestPropertiesIntegrityLevel(v8::internal::JSObject, v8::internal::PropertyAttributes)",93957338803584,93957338804128],["v8::internal::JSPluralRules::GetAvailableLocales()",93957338807712,93957338807855],["std::__1::pair<std::__1::__tree_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__tree_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void*>*, long>, bool> std::__1::__tree<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&)",93957338811024,93957338811481],["v8::internal::JSRegExp::FlagsFromString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, bool*)",93957338813504,93957338814311],["v8::internal::JSRegExp::Bytecode(bool) const",93957338816368,93957338816412],["v8::internal::JSRegExp::ResetLastTierUpTick()",93957338816624,93957338816663],["v8::internal::JSRegExp::MarkTierUpForNextExec()",93957338816720,93957338816753],["v8::internal::JSRelativeTimeFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338816912,93957338820154],["v8::internal::JSRelativeTimeFormat::Format(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSRelativeTimeFormat>)",93957338820720,93957338821532],["v8::internal::(anonymous namespace)::GetURelativeDateTimeUnit(v8::internal::Handle<v8::internal::String>, URelativeDateTimeUnit*)",93957338823856,93957338824316],["v8::internal::JSSegmentIterator::Next(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSSegmentIterator>)",93957338825248,93957338825531],["v8::internal::JSSegmenter::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSSegmenter>)",93957338827584,93957338827934],["v8::internal::JSSegments::Containing(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSSegments>, double)",93957338828640,93957338828931],["v8::internal::compiler::InstructionSelector::VisitI16x8GeU(v8::internal::compiler::Node*)",93957342135328,93957342135579],["v8::internal::compiler::InstructionSelector::VisitF64x2Le(v8::internal::compiler::Node*)",93957342138624,93957342138903],["v8::internal::compiler::InstructionSelector::VisitF32x4Ne(v8::internal::compiler::Node*)",93957342140352,93957342140631],["v8::internal::compiler::InstructionSelector::VisitI64x2Sub(v8::internal::compiler::Node*)",93957342141504,93957342141783],["v8::internal::compiler::InstructionSelector::VisitI64x2ExtMulHighI32x4S(v8::internal::compiler::Node*)",93957342142368,93957342142647],["v8::internal::compiler::InstructionSelector::VisitI64x2ExtMulHighI32x4U(v8::internal::compiler::Node*)",93957342142944,93957342143223],["v8::internal::compiler::InstructionSelector::VisitI32x4Sub(v8::internal::compiler::Node*)",93957342143520,93957342143799],["v8::internal::compiler::InstructionSelector::VisitI32x4MinS(v8::internal::compiler::Node*)",93957342144096,93957342144375],["pkey_free",139871564303632,139871564303665],["__connect",139871564303984,139871564304139],["getsockopt",139871564304240,139871564304276],["__recv",139871564304336,139871564304517],["v8::internal::Debug::SetScriptSource(v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::String>, bool, v8::debug::LiveEditResult*)",93957336331056,93957336331497],["v8::internal::Debug::UpdateDebugInfosForExecutionMode()",93957336334288,93957336334604],["v8::internal::Debug::PerformSideEffectCheckForObject(v8::internal::Handle<v8::internal::Object>)",93957336336752,93957336336880],["v8::internal::Debug::SetTemporaryObjectTrackingDisabled(bool)",93957336338416,93957336338435],["v8::internal::Debug::TemporaryObjectsTracker::AllocationEvent(unsigned long, int)",93957336338864,93957336338910],["v8::internal::Debug::TemporaryObjectsTracker::~TemporaryObjectsTracker()",93957336339776,93957336339871],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<unsigned long, void*>*>, bool> std::__1::__hash_table<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> >::__emplace_unique_key_args<unsigned long, unsigned long>(unsigned long const&, unsigned long&&)",93957336339984,93957336340883],["void std::__1::__function::__policy_invoker<void (v8::internal::Handle<v8::internal::DebugInfo>)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::Debug::RemoveAllCoverageInfos()::$_1, void (v8::internal::Handle<v8::internal::DebugInfo>)> >(std::__1::__function::__policy_storage const*, v8::internal::Handle<v8::internal::DebugInfo>&&)",93957336340960,93957336341003],["v8::internal::JSObject::UnregisterPrototypeUser(v8::internal::Handle<v8::internal::Map>, v8::internal::Isolate*)",93957338771024,93957338771664],["v8::internal::JSObject::DictionaryPropertyAt(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338788672,93957338788818],["void v8::internal::JSObject::EnsureCanContainElements<v8::internal::FullObjectSlot>(v8::internal::Handle<v8::internal::JSObject>, v8::internal::FullObjectSlot, unsigned int, v8::internal::EnsureElementsMode)",93957338793008,93957338793321],["v8::internal::JSDate::New(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::JSReceiver>, double)",93957338796656,93957338797095],["v8::internal::JSDate::GetUTCField(v8::internal::JSDate::FieldIndex, double, v8::internal::DateCache*)",93957338798592,93957338799079],["v8::internal::JSMessageObject::GetColumnNumber() const",93957338799920,93957338800096],["v8::internal::PropertyCallbackArguments::CallNamedQuery(v8::internal::Handle<v8::internal::InterceptorInfo>, v8::internal::Handle<v8::internal::Name>)",93957338802000,93957338802795],["void v8::internal::JSObject::ApplyAttributesToDictionary<v8::internal::GlobalDictionary>(v8::internal::Isolate*, v8::internal::ReadOnlyRoots, v8::internal::Handle<v8::internal::GlobalDictionary>, v8::internal::PropertyAttributes)",93957338804192,93957338804629],["v8::internal::JSPluralRules::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338804992,93957338807704],["v8::internal::JSPluralRules::ResolvePlural(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSPluralRules>, double)",93957338807856,93957338808059],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::PluralRulesAvailableLocales, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::PluralRulesAvailableLocales>, v8::base::DefaultConstructTrait<v8::internal::(anonymous namespace)::PluralRulesAvailableLocales>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::PluralRulesAvailableLocales> >::InitInstance(void*)",93957338810064,93957338811017],["v8::internal::JSRegExpResultIndices::BuildIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::RegExpMatchInfo>, v8::internal::Handle<v8::internal::Object>)",93957338811488,93957338812905],["v8::internal::JSRegExp::BacktrackLimit() const",93957338813408,93957338813494],["v8::internal::JSRegExp::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, unsigned int)",93957338814320,93957338814490],["v8::internal::JSRegExp::Code(bool) const",93957338816320,93957338816364],["v8::internal::JSRegExp::ShouldProduceBytecode()",93957338816416,93957338816517],["v8::internal::compiler::InstructionSelector::VisitI64x2Ne(v8::internal::compiler::Node*)",93957342133280,93957342133531],["v8::internal::compiler::InstructionSelector::VisitI8x16GeU(v8::internal::compiler::Node*)",93957342136352,93957342136603],["v8::internal::compiler::InstructionSelector::VisitF64x2Ne(v8::internal::compiler::Node*)",93957342138048,93957342138327],["v8::internal::compiler::InstructionSelector::VisitF32x4Sub(v8::internal::compiler::Node*)",93957342139200,93957342139479],["v8::internal::compiler::InstructionSelector::VisitF32x4Eq(v8::internal::compiler::Node*)",93957342140064,93957342140343],["v8::internal::compiler::InstructionSelector::VisitF32x4Lt(v8::internal::compiler::Node*)",93957342140640,93957342140919],["v8::internal::compiler::InstructionSelector::VisitI64x2Add(v8::internal::compiler::Node*)",93957342141216,93957342141495],["v8::internal::compiler::InstructionSelector::VisitI64x2Eq(v8::internal::compiler::Node*)",93957342141792,93957342142071],["name_to_handle_at",139871564303440,139871564303476],["tgkill",139871564303696,139871564303729],["bind",139871564303936,139871564303969],["getpeername",139871564304144,139871564304177],["v8::internal::Debug::ScheduleFrameRestart(v8::internal::StackFrame*)",93957336327408,93957336327593],["v8::internal::Debug::SetDebugDelegate(v8::debug::DebugDelegate*)",93957336332448,93957336332461],["v8::internal::Debug::return_value_handle()",93957336334160,93957336334245],["v8::internal::Debug::SetTerminateOnResume()",93957336335008,93957336335048],["v8::internal::Debug::PerformSideEffectCheck(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>)",93957336335872,93957336336745],["v8::internal::Debug::PerformSideEffectCheckForCallback(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Debug::AccessorKind)",93957336336880,93957336337426],["v8::internal::Debug::TemporaryObjectsTracker::HasObject(v8::internal::Handle<v8::internal::HeapObject>) const",93957336337888,93957336338416],["v8::internal::Debug::GetTemporaryObjectTrackingDisabled() const",93957336338448,93957336338474],["v8::internal::JSObject::AllCanRead(v8::internal::LookupIterator*)",93957338763888,93957338764023],["v8::internal::JSObject::NormalizeElements(v8::internal::Handle<v8::internal::JSObject>)",93957338779376,93957338780138],["v8::internal::PropertyCallbackArguments::CallIndexedDeleter(v8::internal::Handle<v8::internal::InterceptorInfo>, unsigned int)",93957338785184,93957338785971],["v8::internal::JSObject::SlowReverseLookup(v8::internal::Object)",93957338790112,93957338790962],["v8::internal::JSObject::SetImmutableProto(v8::internal::Handle<v8::internal::JSObject>)",93957338792768,93957338792971],["v8::internal::JSObject::AddDataElement(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338793520,93957338795114],["v8::internal::JSGlobalProxy::IsDetached() const",93957338796000,93957338796034],["v8::internal::JSDate::CurrentTimeValue(v8::internal::Isolate*)",93957338797344,93957338797426],["v8::internal::JSDate::SetCachedFields(long, v8::internal::DateCache*)",93957338798096,93957338798588],["v8::internal::JSDate::SetValue(v8::internal::Handle<v8::internal::JSDate>, double)",93957338799088,93957338799335],["v8::internal::JSMessageObject::GetLineNumber() const",93957338799744,93957338799918],["v8::internal::JSMessageObject::GetSourceLine() const",93957338800096,93957338800418],["v8::internal::PropertyCallbackArguments::CallNamedDefiner(v8::internal::Handle<v8::internal::InterceptorInfo>, v8::internal::Handle<v8::internal::Name>, v8::PropertyDescriptor const&)",93957338801216,93957338801999],["v8::internal::PropertyCallbackArguments::CallIndexedSetter(v8::internal::Handle<v8::internal::InterceptorInfo>, unsigned int, v8::internal::Handle<v8::internal::Object>)",93957338802800,93957338803583],["v8::internal::Map::set_elements_kind(v8::internal::ElementsKind)",93957338804128,93957338804183],["void v8::internal::JSObject::ApplyAttributesToDictionary<v8::internal::NameDictionary>(v8::internal::Isolate*, v8::internal::ReadOnlyRoots, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::PropertyAttributes)",93957338804640,93957338804959],["v8::internal::compiler::InstructionSelector::VisitI32x4AllTrue(v8::internal::compiler::Node*)",93957342131616,93957342131769],["v8::internal::compiler::InstructionSelector::VisitI32x4GeU(v8::internal::compiler::Node*)",93957342134304,93957342134555],["v8::internal::compiler::InstructionSelector::VisitI8x16GtU(v8::internal::compiler::Node*)",93957342135840,93957342136091],["v8::internal::compiler::InstructionSelector::VisitF64x2Sub(v8::internal::compiler::Node*)",93957342136896,93957342137175],["v8::internal::compiler::InstructionSelector::VisitF64x2Eq(v8::internal::compiler::Node*)",93957342137760,93957342138039],["v8::internal::compiler::InstructionSelector::VisitF64x2Lt(v8::internal::compiler::Node*)",93957342138336,93957342138615],["v8::internal::compiler::InstructionSelector::VisitF32x4Add(v8::internal::compiler::Node*)",93957342138912,93957342139191],["v8::internal::compiler::InstructionSelector::VisitF32x4Mul(v8::internal::compiler::Node*)",93957342139488,93957342139767],["timerfd_create",139871564303248,139871564303281],["memfd_create",139871564303536,139871564303569],["gettid",139871564303680,139871564303688],["bdflush",139871564303744,139871564303766],["v8::internal::Debug::GetPossibleBreakpoints(v8::internal::Handle<v8::internal::Script>, int, int, bool, std::__1::vector<v8::internal::BreakLocation, std::__1::allocator<v8::internal::BreakLocation> >*)",93957336322640,93957336323253],["v8::internal::Debug::OnPromiseReject(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957336329696,93957336330168],["v8::internal::Debug::ProcessCompileEvent(bool, v8::internal::Handle<v8::internal::Script>)",93957336331536,93957336332430],["v8::internal::Debug::HandleDebugBreak(v8::internal::IgnoreBreakMode)",93957336332608,93957336333717],["v8::internal::ReturnValueScope::ReturnValueScope(v8::internal::Debug*)",93957336334048,93957336334158],["v8::internal::ReturnValueScope::~ReturnValueScope()",93957336334256,93957336334276],["v8::internal::Debug::ClearSideEffectChecks(v8::internal::Handle<v8::internal::DebugInfo>)",93957336334608,93957336335006],["v8::internal::Debug::StartSideEffectCheckMode()",93957336335056,93957336335456],["v8::internal::JSReceiver::ToPrimitive(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::ToPrimitiveHint)",93957338756800,93957338757034],["v8::internal::JSObject::JSObjectShortPrint(v8::internal::StringStream*)",93957338767952,93957338769357],["v8::internal::JSObject::ForceSetPrototype(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::HeapObject>)",93957338777712,93957338777879],["v8::internal::JSObject::TryMigrateInstance(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>)",93957338781088,93957338781312],["v8::internal::JSObject::MigrateSlowToFast(v8::internal::Handle<v8::internal::JSObject>, int, char const*)",93957338782384,93957338785100],["v8::Maybe<bool> v8::internal::JSObject::PreventExtensionsWithTransition<(v8::internal::PropertyAttributes)0>(v8::internal::Handle<v8::internal::JSObject>, v8::internal::ShouldThrow)",93957338786784,93957338788447],["v8::internal::JSObject::DefineAccessor(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338789344,93957338789647],["v8::internal::JSObject::MakePrototypesFast(v8::internal::Handle<v8::internal::Object>, v8::internal::WhereToStart, v8::internal::Isolate*)",93957338791008,93957338791435],["v8::internal::(anonymous namespace)::InvalidatePrototypeChainsInternal(v8::internal::Map)",93957338792400,93957338792764],["v8::internal::JSObject::EnsureCanContainElements(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Arguments<(v8::internal::ArgumentsType)1>*, unsigned int, v8::internal::EnsureElementsMode)",93957338792976,93957338793007],["v8::internal::JSObject::WouldConvertToSlowElements(unsigned int)",93957338793328,93957338793508],["v8::internal::JSObject::GetFastElementsUsage()",93957338795120,93957338795625],["v8::internal::JSObject::IsApiWrapper()",93957338795920,93957338795999],["v8::internal::JSGlobalObject::InvalidatePropertyCell(v8::internal::Handle<v8::internal::JSGlobalObject>, v8::internal::Handle<v8::internal::Name>)",93957338796048,93957338796649],["v8::internal::JSDate::SetValue(v8::internal::Object, bool)",93957338797104,93957338797329],["v8::internal::JSDate::GetField(v8::internal::Isolate*, unsigned long, unsigned long)",93957338797440,93957338797559],["v8::internal::compiler::InstructionSelector::VisitI16x8UConvertI8x16Low(v8::internal::compiler::Node*)",93957342130336,93957342130489],["v8::internal::compiler::InstructionSelector::VisitF64x2Min(v8::internal::compiler::Node*)",93957342132256,93957342132507],["v8::internal::compiler::InstructionSelector::VisitI32x4GtU(v8::internal::compiler::Node*)",93957342133792,93957342134043],["v8::internal::compiler::InstructionSelector::VisitI16x8GtU(v8::internal::compiler::Node*)",93957342134816,93957342135067],["v8::internal::compiler::InstructionSelector::VisitI8x16Ne(v8::internal::compiler::Node*)",93957342135584,93957342135835],["v8::internal::compiler::InstructionSelector::VisitI8x16GeS(v8::internal::compiler::Node*)",93957342136096,93957342136347],["v8::internal::compiler::InstructionSelector::VisitF64x2Add(v8::internal::compiler::Node*)",93957342136608,93957342136887],["v8::internal::compiler::InstructionSelector::VisitF64x2Mul(v8::internal::compiler::Node*)",93957342137184,93957342137463],["quotactl",139871564303056,139871564303092],["timerfd_gettime",139871564303344,139871564303377],["setns",139871564303488,139871564303521],["pkey_alloc",139871564303584,139871564303617],["v8::internal::Debug::PrepareStepInSuspendedGenerator()",93957336317760,93957336318057],["v8::internal::Debug::CreateBreakInfo(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336326240,93957336326616],["v8::internal::Debug::OnThrow(v8::internal::Handle<v8::internal::Object>)",93957336328096,93957336328574],["v8::internal::Debug::AllFramesOnStackAreBlackboxed()",93957336330432,93957336330685],["v8::internal::Debug::OnCompileError(v8::internal::Handle<v8::internal::Script>)",93957336331504,93957336331522],["v8::internal::Debug::OnAfterCompile(v8::internal::Handle<v8::internal::Script>)",93957336332432,93957336332447],["v8::internal::Debug::UpdateState()",93957336332464,93957336332594],["v8::internal::DebugScope::DebugScope(v8::internal::Debug*)",93957336333728,93957336333910],["v8::internal::JSReceiver::ValidateAndApplyPropertyDescriptor(v8::internal::Isolate*, v8::internal::LookupIterator*, bool, v8::internal::PropertyDescriptor*, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>, v8::internal::Handle<v8::internal::Name>)",93957338745904,93957338747589],["v8::internal::JSObject::SetPrototype(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, bool, v8::internal::ShouldThrow)",93957338761472,93957338762569],["v8::internal::(anonymous namespace)::GetPropertyAttributesWithInterceptorInternal(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::InterceptorInfo>)",93957338765376,93957338766398],["void v8::internal::StringStream::Add<char const*>(char const*, char const*)",93957338769680,93957338769746],["v8::internal::JSObject::NotifyMapChange(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>, v8::internal::Isolate*)",93957338772528,93957338772603],["v8::internal::JSObject::GetElementsTransitionMap(v8::internal::Handle<v8::internal::JSObject>, v8::internal::ElementsKind)",93957338777952,93957338778090],["v8::internal::JSObject::FastPropertyAtPut(v8::internal::FieldIndex, v8::internal::Object, v8::internal::WriteBarrierMode)",93957338780512,93957338780859],["v8::internal::JSObject::AddProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338781584,93957338781679],["v8::internal::JSObject::DefinePropertyOrElementIgnoreAttributes(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338782064,93957338782374],["v8::internal::JSObject::RequireSlowElements(v8::internal::NumberDictionary)",93957338785104,93957338785180],["v8::internal::PropertyCallbackArguments::CallNamedDeleter(v8::internal::Handle<v8::internal::InterceptorInfo>, v8::internal::Handle<v8::internal::Name>)",93957338785984,93957338786775],["v8::internal::CreateElementDictionary(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>)",93957338788448,93957338788669],["v8::internal::JSObject::HasEnumerableElements()",93957338788832,93957338789337],["v8::internal::JSObject::SetAccessor(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::AccessorInfo>, v8::internal::PropertyAttributes)",93957338789648,93957338790112],["v8::internal::JSObject::PrototypeRegistryCompactionCallback(v8::internal::HeapObject, int, int)",93957338790976,93957338791004],["v8::internal::JSObject::OptimizeAsPrototype(v8::internal::Handle<v8::internal::JSObject>, bool)",93957338791440,93957338792286],["v8::internal::compiler::InstructionSelector::VisitI32x4Neg(v8::internal::compiler::Node*)",93957342129056,93957342129209],["v8::internal::compiler::InstructionSelector::VisitI8x16Neg(v8::internal::compiler::Node*)",93957342130976,93957342131129],["v8::internal::compiler::InstructionSelector::VisitI8x16AllTrue(v8::internal::compiler::Node*)",93957342131936,93957342132089],["v8::internal::compiler::InstructionSelector::VisitF32x4Min(v8::internal::compiler::Node*)",93957342132768,93957342133019],["v8::internal::compiler::InstructionSelector::VisitI32x4Ne(v8::internal::compiler::Node*)",93957342133536,93957342133787],["v8::internal::compiler::InstructionSelector::VisitI32x4GeS(v8::internal::compiler::Node*)",93957342134048,93957342134299],["v8::internal::compiler::InstructionSelector::VisitI16x8Ne(v8::internal::compiler::Node*)",93957342134560,93957342134811],["v8::internal::compiler::InstructionSelector::VisitI16x8GeS(v8::internal::compiler::Node*)",93957342135072,93957342135323],["mremap",139871564302864,139871564302900],["unshare",139871564303152,139871564303185],["timerfd_settime",139871564303296,139871564303332],["fanotify_init",139871564303392,139871564303425],["v8::internal::Debug::RemoveBreakpointForWasmScript(v8::internal::Handle<v8::internal::Script>, int)",93957336315648,93957336315679],["v8::internal::(anonymous namespace)::DiscardBaselineCodeVisitor::VisitThread(v8::internal::Isolate*, v8::internal::ThreadLocalTop*)",93957336320288,93957336320754],["v8::internal::Debug::FindSharedFunctionInfosIntersectingRange(v8::internal::Handle<v8::internal::Script>, int, int, std::__1::vector<v8::internal::Handle<v8::internal::SharedFunctionInfo>, std::__1::allocator<v8::internal::Handle<v8::internal::SharedFunctionInfo> > >*)",93957336323696,93957336325916],["v8::internal::Debug::FreeDebugInfoListNode(v8::internal::DebugInfoListNode*, v8::internal::DebugInfoListNode*)",93957336326784,93957336326997],["v8::internal::Debug::GetLoadedScripts()",93957336327600,93957336328081],["v8::internal::Debug::OnException(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::debug::ExceptionType)",93957336328576,93957336329696],["v8::internal::Debug::IsFrameBlackboxed(v8::internal::JavaScriptFrame*)",93957336330176,93957336330423],["v8::internal::Debug::ShouldBeSkipped()",93957336330688,93957336331044],["v8::internal::JSReceiver::CreateIdentityHash(v8::internal::Isolate*, v8::internal::JSReceiver)",93957338738224,93957338738270],["v8::internal::JSObject::TestIntegrityLevel(v8::internal::Handle<v8::internal::JSObject>, v8::internal::PropertyAttributes)",93957338750576,93957338751146],["v8::internal::GetOwnValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::PropertyFilter, bool, bool)",93957338760304,93957338761338],["v8::internal::JSObject::ObjectCreate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338763152,93957338763222],["v8::internal::JSObject::GetPropertyWithInterceptor(v8::internal::LookupIterator*, bool*)",93957338764336,93957338764372],["v8::internal::(anonymous namespace)::SetPropertyWithInterceptorInternal(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::InterceptorInfo>, v8::Maybe<v8::internal::ShouldThrow>, v8::internal::Handle<v8::internal::Object>)",93957338766656,93957338767010],["v8::internal::SharedFunctionInfo::Name() const",93957338769408,93957338769593],["v8::internal::JSObject::IsUnmodifiedApiObject(v8::internal::FullObjectSlot)",93957338770320,93957338770671],["v8::internal::JSObject::LazyRegisterPrototypeUser(v8::internal::Handle<v8::internal::Map>, v8::internal::Isolate*)",93957338771664,93957338772525],["v8::internal::JSObject::MigrateToMap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>, int)",93957338772608,93957338777705],["v8::internal::JSObject::SetPropertyWithInterceptor(v8::internal::LookupIterator*, v8::Maybe<v8::internal::ShouldThrow>, v8::internal::Handle<v8::internal::Object>)",93957338777888,93957338777939],["v8::internal::JSObject::AllocateStorageForMap(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338778096,93957338779370],["v8::internal::JSObject::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::ElementsKind)",93957338780144,93957338780499],["v8::internal::JSObject::MigrateInstance(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>)",93957338780864,93957338781073],["v8::internal::JSObject::AddProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338781312,93957338781576],["v8::internal::JSObject::SetOwnPropertyIgnoreAttributes(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338781680,93957338781939],["v8::internal::compiler::InstructionSelector::VisitI64x2Neg(v8::internal::compiler::Node*)",93957342127776,93957342127929],["v8::internal::compiler::InstructionSelector::VisitI32x4BitMask(v8::internal::compiler::Node*)",93957342129696,93957342129849],["v8::internal::compiler::InstructionSelector::VisitI16x8Abs(v8::internal::compiler::Node*)",93957342130656,93957342130809],["v8::internal::compiler::InstructionSelector::VisitI8x16BitMask(v8::internal::compiler::Node*)",93957342131296,93957342131449],["v8::internal::compiler::InstructionSelector::VisitI16x8AllTrue(v8::internal::compiler::Node*)",93957342131776,93957342131929],["v8::internal::compiler::InstructionSelector::VisitS128Not(v8::internal::compiler::Node*)",93957342132096,93957342132249],["v8::internal::compiler::InstructionSelector::VisitF64x2Max(v8::internal::compiler::Node*)",93957342132512,93957342132763],["v8::internal::compiler::InstructionSelector::VisitF32x4Max(v8::internal::compiler::Node*)",93957342133024,93957342133275],["inotify_init1",139871564302672,139871564302705],["pivot_root",139871564302960,139871564302993],["sysinfo",139871564303104,139871564303137],["uselib",139871564303200,139871564303233],["v8::internal::Debug::FindInnermostContainingFunctionInfo(v8::internal::Handle<v8::internal::Script>, int)",93957336312576,93957336313212],["v8::internal::Debug::IsBreakOnException(v8::internal::ExceptionBreakType)",93957336317280,93957336317298],["v8::internal::Debug::GetSourceBreakLocations(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336319344,93957336319871],["v8::internal::Debug::DeoptimizeFunction(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336321088,93957336321326],["v8::internal::(anonymous namespace)::FindBreakablePositions(v8::internal::Handle<v8::internal::DebugInfo>, int, int, std::__1::vector<v8::internal::BreakLocation, std::__1::allocator<v8::internal::BreakLocation> >*)",93957336323264,93957336323693],["v8::internal::(anonymous namespace)::CompileTopLevel(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957336325920,93957336326234],["v8::internal::Debug::InstallCoverageInfo(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::CoverageInfo>)",93957336326624,93957336326778],["v8::internal::Debug::IsBreakAtReturn(v8::internal::JavaScriptFrame*)",93957336327008,93957336327405],["v8::internal::JSReceiver::GetDataProperty(v8::internal::LookupIterator*, v8::internal::AllocationPolicy)",93957338728480,93957338728629],["v8::internal::JSReceiver::DefineProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338740752,93957338741077],["v8::internal::JSObject::DefineOwnPropertyIgnoreAttributes(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::Maybe<v8::internal::ShouldThrow>, v8::internal::JSObject::AccessorInfoHandling)",93957338748176,93957338749026],["v8::internal::JSReceiver::TestIntegrityLevel(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::PropertyAttributes)",93957338755216,93957338755266],["v8::internal::FastGetOwnValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, bool, v8::internal::Handle<v8::internal::FixedArray>*)",93957338757888,93957338760092],["v8::internal::JSReceiver::GetOwnEntries(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::PropertyFilter, bool)",93957338761376,93957338761406],["v8::internal::JSReceiver::IsCodeLike(v8::internal::Isolate*) const",93957338762688,93957338762892],["v8::internal::JSObject::set_elements(v8::internal::FixedArrayBase, v8::internal::WriteBarrierMode)",93957338763568,93957338763692],["v8::internal::JSObject::GetPropertyWithFailedAccessCheck(v8::internal::LookupIterator*)",93957338764032,93957338764335],["v8::internal::(anonymous namespace)::GetPropertyWithInterceptorInternal(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::InterceptorInfo>, bool*)",93957338764384,93957338765373],["v8::internal::JSObject::SetPropertyWithFailedAccessCheck(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>)",93957338766400,93957338766653],["v8::internal::JSObject::SetNormalizedProperty(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails)",93957338767024,93957338767947],["v8::internal::StringStream::Add(char const*)",93957338769360,93957338769404],["void v8::internal::StringStream::Add<char const*, v8::internal::Map>(char const*, char const*, v8::internal::Map)",93957338769600,93957338769680],["v8::internal::JSObject::PrintInstanceMigration(_IO_FILE*, v8::internal::Map, v8::internal::Map)",93957338769760,93957338770306],["v8::internal::JSObject::UpdatePrototypeUserRegistration(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>, v8::internal::Isolate*)",93957338770672,93957338771018],["v8::internal::compiler::InstructionSelector::VisitF64x2PromoteLowF32x4(v8::internal::compiler::Node*)",93957342126496,93957342126649],["v8::internal::compiler::InstructionSelector::VisitI64x2UConvertI32x4Low(v8::internal::compiler::Node*)",93957342128416,93957342128569],["v8::internal::compiler::InstructionSelector::VisitI32x4UConvertI16x8High(v8::internal::compiler::Node*)",93957342129376,93957342129529],["v8::internal::compiler::InstructionSelector::VisitI16x8SConvertI8x16High(v8::internal::compiler::Node*)",93957342130016,93957342130169],["v8::internal::compiler::InstructionSelector::VisitI16x8UConvertI8x16High(v8::internal::compiler::Node*)",93957342130496,93957342130649],["v8::internal::compiler::InstructionSelector::VisitI16x8BitMask(v8::internal::compiler::Node*)",93957342130816,93957342130969],["v8::internal::compiler::InstructionSelector::VisitI8x16Abs(v8::internal::compiler::Node*)",93957342131136,93957342131289],["v8::internal::compiler::InstructionSelector::VisitI64x2AllTrue(v8::internal::compiler::Node*)",93957342131456,93957342131609],["get_kernel_syms",139871564302480,139871564302513],["klogctl",139871564302768,139871564302801],["nfsservctl",139871564302912,139871564302945],["query_module",139871564303008,139871564303044],["v8::internal::Debug::GetHitBreakPoints(v8::internal::Handle<v8::internal::DebugInfo>, int)",93957336308288,93957336309083],["v8::internal::Debug::GetFunctionDebuggingId(v8::internal::Handle<v8::internal::JSFunction>)",93957336314752,93957336314963],["v8::internal::Debug::IsBlackboxed(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336316176,93957336317235],["v8::internal::Debug::ClearBreakOnNextFunctionCall()",93957336317344,93957336317385],["v8::internal::Debug::PrepareStepOnThrow()",93957336318064,93957336319338],["v8::internal::Debug::DiscardBaselineCode(v8::internal::SharedFunctionInfo)",93957336319872,93957336320285],["v8::internal::Debug::DiscardAllBaselineCode()",93957336320768,93957336321088],["v8::internal::Debug::InstallDebugBreakTrampoline()",93957336321328,93957336322640],["v8::internal::(anonymous namespace)::UnitFactory::~UnitFactory()",93957338722928,93957338722956],["v8::internal::JSReceiver::GetConstructorName(v8::internal::Handle<v8::internal::JSReceiver>)",93957338736288,93957338736302],["v8::internal::JSReceiver::DeleteProperty(v8::internal::LookupIterator*, v8::internal::LanguageMode)",93957338739056,93957338739829],["v8::internal::JSReceiver::OrdinaryDefineOwnProperty(v8::internal::LookupIterator*, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>)",93957338742432,93957338743375],["v8::internal::JSObject::DefineOwnPropertyIgnoreAttributes(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::JSObject::AccessorInfoHandling)",93957338747648,93957338747688],["v8::internal::JSReceiver::CreateDataProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>)",93957338749456,93957338749630],["v8::Maybe<bool> v8::internal::JSObject::PreventExtensionsWithTransition<(v8::internal::PropertyAttributes)5>(v8::internal::Handle<v8::internal::JSObject>, v8::internal::ShouldThrow)",93957338753184,93957338755146],["v8::internal::JSObject::PreventExtensions(v8::internal::Handle<v8::internal::JSObject>, v8::internal::ShouldThrow)",93957338755808,93957338756726],["v8::internal::JSReceiver::OrdinaryToPrimitive(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::OrdinaryToPrimitiveHint)",93957338757040,93957338757876],["v8::internal::JSObject::FastPropertyAt(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Representation, v8::internal::FieldIndex)",93957338760096,93957338760289],["v8::internal::JSReceiver::GetOwnValues(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::PropertyFilter, bool)",93957338761344,93957338761371],["v8::internal::JSReceiver::SetPrototype(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, bool, v8::internal::ShouldThrow)",93957338761408,93957338761463],["v8::internal::JSReceiver::HasProxyInPrototype(v8::internal::Isolate*)",93957338762576,93957338762679],["v8::internal::JSObject::New(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::AllocationSite>)",93957338762896,93957338763150],["v8::internal::JSObject::EnsureWritableFastElements(v8::internal::Handle<v8::internal::JSObject>)",93957338763232,93957338763556],["v8::internal::JSObject::GetHeaderSize(v8::internal::InstanceType, bool)",93957338763696,93957338763873],["v8::internal::compiler::InstructionSelector::VisitI32x4ShrU(v8::internal::compiler::Node*)",93957342122656,93957342123197],["v8::internal::compiler::InstructionSelector::VisitF32x4Sqrt(v8::internal::compiler::Node*)",93957342127136,93957342127289],["v8::internal::compiler::InstructionSelector::VisitI64x2SConvertI32x4Low(v8::internal::compiler::Node*)",93957342128096,93957342128249],["v8::internal::compiler::InstructionSelector::VisitI32x4SConvertI16x8Low(v8::internal::compiler::Node*)",93957342128736,93957342128889],["v8::internal::compiler::InstructionSelector::VisitI32x4UConvertI16x8Low(v8::internal::compiler::Node*)",93957342129216,93957342129369],["v8::internal::compiler::InstructionSelector::VisitI32x4Abs(v8::internal::compiler::Node*)",93957342129536,93957342129689],["v8::internal::compiler::InstructionSelector::VisitI16x8SConvertI8x16Low(v8::internal::compiler::Node*)",93957342129856,93957342130009],["v8::internal::compiler::InstructionSelector::VisitI16x8Neg(v8::internal::compiler::Node*)",93957342130176,93957342130329],["delete_module",139871564302288,139871564302321],["inotify_add_watch",139871564302576,139871564302609],["inotify_rm_watch",139871564302720,139871564302753],["mount",139871564302816,139871564302852],["v8::internal::Debug::Unload()",93957336304208,93957336304707],["v8::internal::Debug::ClearBreakPoints(v8::internal::Handle<v8::internal::DebugInfo>)",93957336311024,93957336311494],["v8::internal::Debug::ClearBreakPoint(v8::internal::Handle<v8::internal::BreakPoint>)",93957336314176,93957336314489],["v8::internal::Debug::SetBreakpointForFunction(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::String>, int*)",93957336315216,93957336315591],["v8::internal::Debug::FloodWithOneShot(v8::internal::Handle<v8::internal::SharedFunctionInfo>, bool)",93957336315680,93957336316173],["v8::internal::Debug::ChangeBreakOnException(v8::internal::ExceptionBreakType, bool)",93957336317248,93957336317267],["v8::internal::Debug::SetBreakOnNextFunctionCall()",93957336317312,93957336317329],["v8::internal::Debug::PrepareStepIn(v8::internal::Handle<v8::internal::JSFunction>)",93957336317392,93957336317746],["v8::Maybe<v8::internal::(anonymous namespace)::CurrencySign> v8::internal::Intl::GetStringOption<v8::internal::(anonymous namespace)::CurrencySign>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::(anonymous namespace)::CurrencySign, std::__1::allocator<v8::internal::(anonymous namespace)::CurrencySign> > const&, v8::internal::(anonymous namespace)::CurrencySign)",93957338712688,93957338713103],["bool v8::internal::AllocationSite::DigestTransitionFeedback<(v8::internal::AllocationSiteUpdateMode)1>(v8::internal::Handle<v8::internal::AllocationSite>, v8::internal::ElementsKind)",93957338725696,93957338726149],["v8::internal::JSObject::CreateDataProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>)",93957338733024,93957338733331],["v8::internal::JSReceiver::GetPropertyAttributes(v8::internal::LookupIterator*)",93957338737200,93957338737518],["v8::internal::JSReceiver::DeleteNormalizedProperty(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::InternalIndex)",93957338738432,93957338739018],["v8::internal::JSReceiver::DeleteProperty(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>, v8::internal::LanguageMode)",93957338740224,93957338740452],["v8::internal::JSReceiver::DefineProperties(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338741200,93957338742225],["v8::internal::LookupIterator::GetInterceptor() const",93957338744896,93957338745477],["v8::internal::JSReceiver::IsCompatiblePropertyDescriptor(v8::internal::Isolate*, bool, v8::internal::PropertyDescriptor*, v8::internal::PropertyDescriptor*, v8::internal::Handle<v8::internal::Name>, v8::Maybe<v8::internal::ShouldThrow>)",93957338747600,93957338747636],["v8::internal::JSObject::DefineAccessor(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338747696,93957338748165],["v8::internal::JSReceiver::CreateDataProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>)",93957338749040,93957338749441],["v8::internal::JSReceiver::SetIntegrityLevel(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::PropertyAttributes, v8::internal::ShouldThrow)",93957338749632,93957338750561],["v8::Maybe<bool> v8::internal::JSObject::PreventExtensionsWithTransition<(v8::internal::PropertyAttributes)4>(v8::internal::Handle<v8::internal::JSObject>, v8::internal::ShouldThrow)",93957338751152,93957338753178],["v8::internal::JSReceiver::PreventExtensions(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::ShouldThrow)",93957338755152,93957338755202],["v8::internal::(anonymous namespace)::GenericTestIntegrityLevel(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::PropertyAttributes)",93957338755280,93957338755794],["v8::internal::JSReceiver::IsExtensible(v8::internal::Handle<v8::internal::JSReceiver>)",93957338756736,93957338756796],["v8::internal::compiler::InstructionSelector::VisitF64x2ReplaceLane(v8::internal::compiler::Node*)",93957342119264,93957342119560],["v8::internal::compiler::InstructionSelector::VisitI8x16Shl(v8::internal::compiler::Node*)",93957342124832,93957342125497],["v8::internal::compiler::InstructionSelector::VisitF32x4Abs(v8::internal::compiler::Node*)",93957342126816,93957342126969],["v8::internal::compiler::InstructionSelector::VisitF32x4RecipSqrtApprox(v8::internal::compiler::Node*)",93957342127456,93957342127609],["v8::internal::compiler::InstructionSelector::VisitI64x2BitMask(v8::internal::compiler::Node*)",93957342127936,93957342128089],["v8::internal::compiler::InstructionSelector::VisitI64x2SConvertI32x4High(v8::internal::compiler::Node*)",93957342128256,93957342128409],["v8::internal::compiler::InstructionSelector::VisitI64x2UConvertI32x4High(v8::internal::compiler::Node*)",93957342128576,93957342128729],["v8::internal::compiler::InstructionSelector::VisitI32x4SConvertI16x8High(v8::internal::compiler::Node*)",93957342128896,93957342129049],["capget",139871564302096,139871564302129],["epoll_create1",139871564302384,139871564302417],["init_module",139871564302528,139871564302564],["inotify_init",139871564302624,139871564302657],["v8::internal::BreakLocation::type() const",93957336301120,93957336301156],["v8::internal::Debug::Break(v8::internal::JavaScriptFrame*, v8::internal::Handle<v8::internal::JSFunction>)",93957336305504,93957336306851],["v8::internal::Debug::CheckBreakPoint(v8::internal::Handle<v8::internal::BreakPoint>, bool)",93957336310080,93957336310467],["v8::internal::Debug::SetBreakPointForScript(v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::String>, int*, int*)",93957336311968,93957336312301],["v8::internal::Debug::FindClosestSharedFunctionInfoFromPosition(int, v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336313216,93957336314170],["v8::internal::Debug::RemoveBreakInfoAndMaybeFree(v8::internal::Handle<v8::internal::DebugInfo>)",93957336314496,93957336314747],["v8::internal::Debug::GetOrCreateDebugInfo(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336314976,93957336315205],["v8::internal::Debug::RemoveBreakpoint(int)",93957336315600,93957336315645],["v8::internal::JSLocale::Numeric(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338695088,93957338695338],["v8::internal::Managed<icu_68::number::LocalizedNumberFormatter>::FromRawPtr(v8::internal::Isolate*, unsigned long, icu_68::number::LocalizedNumberFormatter*)",93957338716272,93957338716486],["std::__1::__shared_ptr_pointer<icu_68::number::LocalizedNumberFormatter*, std::__1::shared_ptr<icu_68::number::LocalizedNumberFormatter>::__shared_ptr_default_delete<icu_68::number::LocalizedNumberFormatter, icu_68::number::LocalizedNumberFormatter>, std::__1::allocator<icu_68::number::LocalizedNumberFormatter> >::__on_zero_shared()",93957338723584,93957338723628],["v8::internal::JSObject::GetPropertyAttributesWithInterceptor(v8::internal::LookupIterator*)",93957338727584,93957338727615],["v8::internal::JSReceiver::SetOrCopyDataProperties(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertiesEnumerationMode, v8::internal::ScopedVector<v8::internal::Handle<v8::internal::Object> > const*, bool)",93957338728928,93957338732787],["v8::internal::JSReceiver::GetConstructor(v8::internal::Handle<v8::internal::JSReceiver>)",93957338734560,93957338734570],["v8::internal::JSReceiver::GetFunctionRealm(v8::internal::Handle<v8::internal::JSReceiver>)",93957338736608,93957338736741],["v8::internal::JSReceiver::SetProperties(v8::internal::HeapObject)",93957338737760,93957338738082],["v8::internal::JSReceiver::GetOrCreateIdentityHash(v8::internal::Isolate*)",93957338738272,93957338738423],["v8::internal::JSObject::InvalidatePrototypeChains(v8::internal::Map)",93957338739024,93957338739048],["v8::internal::JSObject::DeletePropertyWithInterceptor(v8::internal::LookupIterator*, v8::internal::ShouldThrow)",93957338739840,93957338740220],["v8::internal::JSReceiver::DeletePropertyOrElement(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>, v8::internal::LanguageMode)",93957338740464,93957338740748],["v8::internal::JSReceiver::DefineOwnProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>)",93957338741088,93957338741194],["v8::internal::JSReceiver::OrdinaryDefineOwnProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>)",93957338742240,93957338742429],["v8::internal::JSReceiver::GetOwnPropertyDescriptor(v8::internal::LookupIterator*, v8::internal::PropertyDescriptor*)",93957338743376,93957338744889],["v8::internal::JSObject::IsExtensible(v8::internal::Handle<v8::internal::JSObject>)",93957338745488,93957338745900],["v8::internal::compiler::InstructionSelector::VisitF32x4ExtractLane(v8::internal::compiler::Node*)",93957342117392,93957342117606],["v8::internal::compiler::InstructionSelector::VisitI64x2Shl(v8::internal::compiler::Node*)",93957342120480,93957342121021],["v8::internal::compiler::InstructionSelector::VisitI16x8ShrS(v8::internal::compiler::Node*)",93957342123744,93957342124285],["v8::internal::compiler::InstructionSelector::VisitF64x2Sqrt(v8::internal::compiler::Node*)",93957342126176,93957342126329],["v8::internal::compiler::InstructionSelector::VisitF32x4SConvertI32x4(v8::internal::compiler::Node*)",93957342126656,93957342126809],["v8::internal::compiler::InstructionSelector::VisitF32x4Neg(v8::internal::compiler::Node*)",93957342126976,93957342127129],["v8::internal::compiler::InstructionSelector::VisitF32x4RecipApprox(v8::internal::compiler::Node*)",93957342127296,93957342127449],["v8::internal::compiler::InstructionSelector::VisitF32x4DemoteF64x2Zero(v8::internal::compiler::Node*)",93957342127616,93957342127769],["process_vm_writev",139871564301888,139871564301932],["clock_adjtime",139871564302192,139871564302225],["epoll_create",139871564302336,139871564302369],["epoll_ctl",139871564302432,139871564302468],["v8::internal::Debug::Debug(v8::internal::Isolate*)",93957336298928,93957336299072],["v8::internal::DebugFeatureTracker::Track(v8::internal::DebugFeatureTracker::Feature)",93957336302128,93957336302189],["v8::internal::Debug::ClearStepping()",93957336305136,93957336305271],["v8::internal::Debug::PrepareFunctionForDebugExecution(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336307168,93957336307485],["v8::internal::Debug::IsMutedAtCurrentLocation(v8::internal::JavaScriptFrame*)",93957336309088,93957336310071],["v8::internal::Debug::SetBreakpoint(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::BreakPoint>, int*)",93957336310480,93957336311010],["v8::internal::Debug::ApplyBreakPoints(v8::internal::Handle<v8::internal::DebugInfo>)",93957336311504,93957336311968],["v8::internal::Debug::RecordWasmScriptWithBreakpoints(v8::internal::Handle<v8::internal::Script>)",93957336312304,93957336312573],["v8::internal::JSLocale::Is3Alpha(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338686000,93957338686125],["v8::internal::JSNumberFormat::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSNumberFormat>)",93957338697504,93957338704297],["v8::Maybe<v8::internal::(anonymous namespace)::Notation> v8::internal::Intl::GetStringOption<v8::internal::(anonymous namespace)::Notation>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::(anonymous namespace)::Notation, std::__1::allocator<v8::internal::(anonymous namespace)::Notation> > const&, v8::internal::(anonymous namespace)::Notation)",93957338714960,93957338715375],["v8::internal::(anonymous namespace)::cmp_NumberFormatSpan(v8::internal::NumberFormatSpan const&, v8::internal::NumberFormatSpan const&)",93957338718080,93957338718129],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&>&&, std::__1::tuple<>&&)",93957338723008,93957338723489],["void v8::internal::JSObject::ApplyAttributesToDictionary<v8::internal::NumberDictionary>(v8::internal::Isolate*, v8::internal::ReadOnlyRoots, v8::internal::Handle<v8::internal::NumberDictionary>, v8::internal::PropertyAttributes)",93957338724976,93957338725295],["bool v8::internal::AllocationSite::DigestTransitionFeedback<(v8::internal::AllocationSiteUpdateMode)0>(v8::internal::Handle<v8::internal::AllocationSite>, v8::internal::ElementsKind)",93957338726560,93957338727316],["v8::internal::JSReceiver::HasOwnProperty(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>)",93957338727904,93957338728359],["v8::internal::JSReceiver::HasInPrototypeChain(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>)",93957338728640,93957338728923],["v8::internal::JSObject::NormalizeProperties(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::PropertyNormalizationMode, int, char const*)",93957338732800,93957338733012],["v8::internal::JSReceiver::class_name()",93957338733344,93957338734558],["v8::internal::(anonymous namespace)::GetConstructorHelper(v8::internal::Handle<v8::internal::JSReceiver>)",93957338734576,93957338736277],["v8::internal::JSReceiver::GetCreationContext()",93957338736304,93957338736601],["v8::internal::JSReceiver::GetContextForMicrotask(v8::internal::Handle<v8::internal::JSReceiver>)",93957338736752,93957338737195],["v8::internal::JSReceiver::SetIdentityHash(int)",93957338737520,93957338737758],["v8::internal::JSReceiver::GetIdentityHash()",93957338738096,93957338738222],["v8::internal::compiler::InstructionSelector::VisitS128Zero(v8::internal::compiler::Node*)",93957342115424,93957342115503],["v8::internal::compiler::InstructionSelector::VisitI16x8ExtractLaneU(v8::internal::compiler::Node*)",93957342118288,93957342118502],["v8::internal::compiler::InstructionSelector::VisitI16x8ReplaceLane(v8::internal::compiler::Node*)",93957342119872,93957342120168],["v8::internal::compiler::InstructionSelector::VisitI32x4Shl(v8::internal::compiler::Node*)",93957342121568,93957342122109],["v8::internal::compiler::InstructionSelector::VisitI16x8Shl(v8::internal::compiler::Node*)",93957342123200,93957342123741],["v8::internal::compiler::InstructionSelector::VisitI16x8ShrU(v8::internal::compiler::Node*)",93957342124288,93957342124829],["v8::internal::compiler::InstructionSelector::VisitI8x16ShrU(v8::internal::compiler::Node*)",93957342125504,93957342126169],["v8::internal::compiler::InstructionSelector::VisitF64x2ConvertLowI32x4S(v8::internal::compiler::Node*)",93957342126336,93957342126489],["pkey_set",139871564301568,139871564301644],["modify_ldt",139871564301984,139871564302017],["capset",139871564302144,139871564302177],["create_module",139871564302240,139871564302273],["v8::internal::DebugStackTraceIterator::GetFunction() const",93957336296032,93957336296084],["v8::internal::BreakLocation::BreakIndexFromCodeOffset(v8::internal::Handle<v8::internal::DebugInfo>, v8::internal::Handle<v8::internal::AbstractCode>, int)",93957336299552,93957336299921],["v8::internal::BreakIterator::BreakIndexFromPosition(int)",93957336301472,93957336301815],["v8::internal::Debug::Iterate(v8::internal::RootVisitor*)",93957336304048,93957336304128],["v8::internal::Debug::ClearAllBreakPoints()",93957336304720,93957336305136],["v8::internal::Debug::RemoveAllCoverageInfos()",93957336305280,93957336305495],["v8::internal::Debug::EnsureBreakInfo(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336306864,93957336307165],["v8::internal::Debug::OnDebugBreak(v8::internal::Handle<v8::internal::FixedArray>, v8::internal::StepAction)",93957336307488,93957336308277],["v8::internal::JSFunction::ComputeInstanceSizeWithMinSlack(v8::internal::Isolate*)",93957338675024,93957338675193],["v8::internal::JSLocale::Script(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338693728,93957338693863],["v8::internal::JSNumberFormat::MinimumIntegerDigitsFromSkeleton(icu_68::UnicodeString const&)",93957338695776,93957338696196],["v8::internal::JSNumberFormat::GetAvailableLocales()",93957338711920,93957338712063],["v8::Maybe<v8::internal::(anonymous namespace)::UnitDisplay> v8::internal::Intl::GetStringOption<v8::internal::(anonymous namespace)::UnitDisplay>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::(anonymous namespace)::UnitDisplay, std::__1::allocator<v8::internal::(anonymous namespace)::UnitDisplay> > const&, v8::internal::(anonymous namespace)::UnitDisplay)",93957338714464,93957338714879],["v8::internal::(anonymous namespace)::ToICUNotation(v8::internal::(anonymous namespace)::Notation, v8::internal::(anonymous namespace)::CompactDisplay)",93957338715792,93957338715848],["v8::internal::(anonymous namespace)::IcuFormatNumber(v8::internal::Isolate*, icu_68::number::LocalizedNumberFormatter const&, v8::internal::Handle<v8::internal::Object>, icu_68::number::FormattedNumber*)",93957338716704,93957338717115],["v8::Maybe<std::__1::pair<icu_68::MeasureUnit, icu_68::MeasureUnit> > v8::Just<std::__1::pair<icu_68::MeasureUnit, icu_68::MeasureUnit> >(std::__1::pair<icu_68::MeasureUnit, icu_68::MeasureUnit> const&)",93957338719488,93957338719540],["v8::internal::(anonymous namespace)::UnitFactory::~UnitFactory()",93957338722960,93957338723006],["std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit> > >::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, icu_68::MeasureUnit>, void*>*)",93957338723504,93957338723579],["v8::base::LazyInstanceImpl<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckNumberElements>, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckNumberElements> >, v8::base::DefaultConstructTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckNumberElements> >, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckNumberElements> > >::InitInstance(void*)",93957338723632,93957338724962],["bool v8::internal::JSObject::UpdateAllocationSite<(v8::internal::AllocationSiteUpdateMode)1>(v8::internal::Handle<v8::internal::JSObject>, v8::internal::ElementsKind)",93957338725296,93957338725695],["bool v8::internal::JSObject::UpdateAllocationSite<(v8::internal::AllocationSiteUpdateMode)0>(v8::internal::Handle<v8::internal::JSObject>, v8::internal::ElementsKind)",93957338726160,93957338726559],["v8::internal::JSReceiver::HasProperty(v8::internal::LookupIterator*)",93957338727328,93957338727574],["v8::internal::JSObject::GetPropertyAttributesWithFailedAccessCheck(v8::internal::LookupIterator*)",93957338727616,93957338727890],["v8::internal::JSReceiver::GetOwnPropertyDescriptor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDescriptor*)",93957338728368,93957338728467],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicOr(v8::internal::compiler::Node*)",93957342114224,93957342114348],["v8::internal::compiler::InstructionSelector::VisitI8x16Splat(v8::internal::compiler::Node*)",93957342116512,93957342116839],["v8::internal::compiler::InstructionSelector::VisitI32x4ExtractLane(v8::internal::compiler::Node*)",93957342117840,93957342118054],["v8::internal::compiler::InstructionSelector::VisitI8x16ExtractLaneU(v8::internal::compiler::Node*)",93957342118736,93957342118950],["v8::internal::compiler::InstructionSelector::VisitI32x4ReplaceLane(v8::internal::compiler::Node*)",93957342119568,93957342119864],["v8::internal::compiler::InstructionSelector::VisitI8x16ReplaceLane(v8::internal::compiler::Node*)",93957342120176,93957342120472],["v8::internal::compiler::InstructionSelector::VisitI64x2ShrU(v8::internal::compiler::Node*)",93957342121024,93957342121565],["v8::internal::compiler::InstructionSelector::VisitI32x4ShrS(v8::internal::compiler::Node*)",93957342122112,93957342122653],["splice",139871564301008,139871564301197],["prctl",139871564301696,139871564301832],["__arch_prctl",139871564301936,139871564301969],["fanotify_mark",139871564302048,139871564302084],["v8::internal::DebugStackTraceIterator::~DebugStackTraceIterator()",93957336294816,93957336294884],["v8::internal::TypeProfile::Collect(v8::internal::Isolate*)",93957336296464,93957336297752],["v8::internal::BreakLocation::FromFrame(v8::internal::Handle<v8::internal::DebugInfo>, v8::internal::JavaScriptFrame*)",93957336299120,93957336299308],["v8::internal::BreakLocation::AllAtCurrentStatement(v8::internal::Handle<v8::internal::DebugInfo>, v8::internal::JavaScriptFrame*, std::__1::vector<v8::internal::BreakLocation, std::__1::allocator<v8::internal::BreakLocation> >*)",93957336300368,93957336300870],["v8::internal::BreakIterator::BreakIterator(v8::internal::Handle<v8::internal::DebugInfo>)",93957336301168,93957336301470],["v8::internal::BreakIterator::SetDebugBreak()",93957336301824,93957336302113],["v8::internal::Debug::PrepareStep(v8::internal::StepAction)",93957336302192,93957336304037],["v8::internal::Debug::Iterate(v8::internal::RootVisitor*, char*)",93957336304128,93957336304207],["v8::internal::JSBoundFunction::GetName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSBoundFunction>)",93957338665568,93957338666039],["v8::internal::JSListFormat::GetAvailableLocales()",93957338681056,93957338681199],["v8::internal::JSLocale::Maximize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338691824,93957338692408],["v8::internal::(anonymous namespace)::UnicodeKeywordValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>, char const*)",93957338694448,93957338694983],["v8::internal::JSLocale::ToString(v8::internal::Handle<v8::internal::JSLocale>)",93957338695376,93957338695512],["v8::internal::JSNumberFormat::SignificantDigitsFromSkeleton(icu_68::UnicodeString const&, int*, int*)",93957338696688,93957338697184],["v8::internal::JSNumberFormat::UnwrapNumberFormat(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>)",93957338704896,93957338705290],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::NewStringFromStaticChars<14ul>(char const (&) [14ul], v8::internal::AllocationType)",93957338712176,93957338712237],["v8::internal::(anonymous namespace)::IsWellFormedUnitIdentifier(v8::internal::Isolate*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338713104,93957338714456],["v8::internal::(anonymous namespace)::CurrencyDigits(icu_68::UnicodeString const&)",93957338714880,93957338714952],["v8::Maybe<v8::internal::(anonymous namespace)::CompactDisplay> v8::internal::Intl::GetStringOption<v8::internal::(anonymous namespace)::CompactDisplay>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::(anonymous namespace)::CompactDisplay, std::__1::allocator<v8::internal::(anonymous namespace)::CompactDisplay> > const&, v8::internal::(anonymous namespace)::CompactDisplay)",93957338715376,93957338715791],["v8::Maybe<v8::internal::(anonymous namespace)::SignDisplay> v8::internal::Intl::GetStringOption<v8::internal::(anonymous namespace)::SignDisplay>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::(anonymous namespace)::SignDisplay, std::__1::allocator<v8::internal::(anonymous namespace)::SignDisplay> > const&, v8::internal::(anonymous namespace)::SignDisplay)",93957338715856,93957338716271],["v8::internal::JSNumberFormat::FormatNumeric(v8::internal::Isolate*, icu_68::number::LocalizedNumberFormatter const&, v8::internal::Handle<v8::internal::Object>)",93957338716496,93957338716704],["v8::internal::FlattenRegionsToParts(std::__1::vector<v8::internal::NumberFormatSpan, std::__1::allocator<v8::internal::NumberFormatSpan> >*)",93957338717120,93957338718070],["v8::internal::JSNumberFormat::FormatToParts(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSNumberFormat>, v8::internal::Handle<v8::internal::Object>)",93957338718144,93957338719488],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::UnitFactory, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::UnitFactory>, v8::base::DefaultConstructTrait<v8::internal::(anonymous namespace)::UnitFactory>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::UnitFactory> >::InitInstance(void*)",93957338719552,93957338722920],["v8::internal::compiler::InstructionSelector::VisitWord64AtomicExchange(v8::internal::compiler::Node*)",93957342112848,93957342112960],["v8::internal::compiler::InstructionSelector::VisitWord64AtomicAnd(v8::internal::compiler::Node*)",93957342114704,93957342114816],["v8::internal::compiler::InstructionSelector::VisitI32x4Splat(v8::internal::compiler::Node*)",93957342115840,93957342116167],["v8::internal::compiler::InstructionSelector::VisitF32x4Splat(v8::internal::compiler::Node*)",93957342117008,93957342117161],["v8::internal::compiler::InstructionSelector::VisitI64x2ExtractLane(v8::internal::compiler::Node*)",93957342117616,93957342117830],["v8::internal::compiler::InstructionSelector::VisitI16x8ExtractLaneS(v8::internal::compiler::Node*)",93957342118064,93957342118278],["v8::internal::compiler::InstructionSelector::VisitI8x16ExtractLaneS(v8::internal::compiler::Node*)",93957342118512,93957342118726],["v8::internal::compiler::InstructionSelector::VisitF32x4ReplaceLane(v8::internal::compiler::Node*)",93957342118960,93957342119256],["personality",139871564300432,139871564300465],["mlock2",139871564301360,139871564301500],["pkey_get",139871564301648,139871564301692],["process_vm_readv",139871564301840,139871564301884],["v8::internal::ScopeIterator::VisitLocals(std::__1::function<bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)> const&, v8::internal::ScopeIterator::Mode, v8::internal::ScopeIterator::ScopeType) const",93957336292432,93957336293792],["v8::internal::DebugStackTraceIterator::GetReturnValue() const",93957336295632,93957336295808],["v8::internal::DebugStackTraceIterator::Restart()",93957336296208,93957336296261],["void std::__1::vector<v8::internal::TypeProfileScript, std::__1::allocator<v8::internal::TypeProfileScript> >::__emplace_back_slow_path<v8::internal::TypeProfileScript&>(v8::internal::TypeProfileScript&)",93957336298144,93957336298624],["v8::internal::Debug::~Debug()",93957336299072,93957336299105],["v8::internal::BreakIterator::SkipTo(int)",93957336299312,93957336299539],["v8::internal::BreakIterator::GetBreakLocation()",93957336299936,93957336300357],["v8::internal::BreakLocation::HasBreakPoint(v8::internal::Isolate*, v8::internal::Handle<v8::internal::DebugInfo>) const",93957336300880,93957336301120],["v8::internal::(anonymous namespace)::DateFormatSymbolsNames::~DateFormatSymbolsNames()",93957338663568,93957338663626],["v8::internal::JSFunction::InitializeFeedbackCell(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::IsCompiledScope*, bool)",93957338668624,93957338669075],["v8::internal::JSFunction::ToString(v8::internal::Handle<v8::internal::JSFunction>)",93957338675984,93957338677045],["v8::internal::(anonymous namespace)::ToUnicodeStringArray(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>)",93957338683136,93957338683749],["v8::internal::JSLocale::StartsWithUnicodeLanguageId(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338686256,93957338688321],["v8::internal::JSLocale::Minimize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338692992,93957338693576],["v8::internal::JSLocale::BaseName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338694016,93957338694403],["v8::internal::JSLocale::Collation(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338695024,93957338695041],["v8::internal::JSLocale::NumberingSystem(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338695344,93957338695361],["v8::internal::JSLocale::ToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338695520,93957338695764],["v8::internal::JSNumberFormat::FractionDigitsFromSkeleton(icu_68::UnicodeString const&, int*, int*)",93957338696208,93957338696685],["v8::internal::JSNumberFormat::SetDigitOptionsToFormatter(icu_68::number::LocalizedNumberFormatter const&, v8::internal::Intl::NumberFormatDigitOptions const&)",93957338697184,93957338697497],["v8::internal::(anonymous namespace)::StyleFromSkeleton(icu_68::UnicodeString const&)",93957338704304,93957338704894],["v8::internal::JSNumberFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)",93957338705296,93957338711906],["v8::internal::(anonymous namespace)::IsWellFormedCurrencyCode(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338712064,93957338712171],["v8::Maybe<v8::internal::(anonymous namespace)::CurrencyDisplay> v8::internal::Intl::GetStringOption<v8::internal::(anonymous namespace)::CurrencyDisplay>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::(anonymous namespace)::CurrencyDisplay, std::__1::allocator<v8::internal::(anonymous namespace)::CurrencyDisplay> > const&, v8::internal::(anonymous namespace)::CurrencyDisplay)",93957338712240,93957338712684],["v8::internal::compiler::InstructionSelector::VisitFloat64InsertHighWord32(v8::internal::compiler::Node*)",93957342111664,93957342111888],["v8::internal::compiler::(anonymous namespace)::VisitAtomicBinop(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342113520,93957342113827],["v8::internal::compiler::InstructionSelector::VisitWord64AtomicAdd(v8::internal::compiler::Node*)",93957342114480,93957342114592],["v8::internal::compiler::InstructionSelector::VisitWord64AtomicXor(v8::internal::compiler::Node*)",93957342114928,93957342115040],["v8::internal::compiler::InstructionSelector::VisitI64x2Splat(v8::internal::compiler::Node*)",93957342115504,93957342115831],["v8::internal::compiler::InstructionSelector::VisitI16x8Splat(v8::internal::compiler::Node*)",93957342116176,93957342116503],["v8::internal::compiler::InstructionSelector::VisitF64x2Splat(v8::internal::compiler::Node*)",93957342116848,93957342117001],["v8::internal::compiler::InstructionSelector::VisitF64x2ExtractLane(v8::internal::compiler::Node*)",93957342117168,93957342117382],["eventfd",139871564300256,139871564300289],["tee",139871564300656,139871564300821],["open_by_handle_at",139871564301200,139871564301355],["pkey_mprotect",139871564301504,139871564301565],["v8::internal::ScopeIterator::SetVariableValue(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957336288864,93957336289257],["v8::debug::StackTraceIterator::Create(v8::Isolate*, int)",93957336294032,93957336294089],["v8::internal::DebugStackTraceIterator::GetContextId() const",93957336294976,93957336295073],["v8::internal::DebugStackTraceIterator::GetScript() const",93957336295840,93957336295899],["v8::internal::DebugStackTraceIterator::GetScopeIterator() const",93957336296096,93957336296197],["v8::internal::DebugStackTraceIterator::Evaluate(v8::Local<v8::String>, bool)",93957336296272,93957336296452],["v8::internal::TypeProfile::SelectMode(v8::internal::Isolate*, v8::debug::TypeProfileMode)",93957336297760,93957336298130],["void std::__1::allocator_traits<std::__1::allocator<v8::internal::TypeProfileScript> >::construct<v8::internal::TypeProfileScript, v8::internal::TypeProfileScript&, void>(std::__1::allocator<v8::internal::TypeProfileScript>&, v8::internal::TypeProfileScript*, v8::internal::TypeProfileScript&)",93957336298624,93957336298921],["v8::internal::(anonymous namespace)::ScriptNames::type() const",93957338661344,93957338661357],["v8::internal::JSFunction::GetActiveTier() const",93957338664832,93957338664892],["v8::internal::JSFunction::GetFunctionRealm(v8::internal::Handle<v8::internal::JSFunction>)",93957338666704,93957338666809],["v8::internal::JSFunction::EnsureHasInitialMap(v8::internal::Handle<v8::internal::JSFunction>)",93957338671184,93957338671725],["v8::internal::JSFunction::GetDebugName(v8::internal::Handle<v8::internal::JSFunction>)",93957338675296,93957338675737],["v8::internal::JSFunction::ClearTypeFeedbackInfo()",93957338678320,93957338678569],["v8::internal::JSListFormat::FormatList(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSListFormat>, v8::internal::Handle<v8::internal::JSArray>)",93957338681648,93957338682166],["v8::base::LazyInstanceImpl<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckListPattern>, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckListPattern> >, v8::base::DefaultConstructTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckListPattern> >, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckListPattern> > >::InitInstance(void*)",93957338684112,93957338685442],["v8::internal::(anonymous namespace)::IsAlpha(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long)",93957338686128,93957338686253],["v8::internal::JSLocale::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::JSReceiver>)",93957338688336,93957338691817],["v8::internal::(anonymous namespace)::Construct(v8::internal::Isolate*, icu_68::Locale const&)",93957338692416,93957338692980],["v8::internal::JSLocale::Language(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338693584,93957338693719],["v8::internal::JSLocale::Region(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338693872,93957338694007],["v8::internal::JSLocale::Calendar(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338694416,93957338694433],["v8::internal::JSLocale::CaseFirst(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338694992,93957338695009],["v8::internal::JSLocale::HourCycle(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSLocale>)",93957338695056,93957338695073],["v8::internal::compiler::InstructionSelector::VisitUint64LessThanOrEqual(v8::internal::compiler::Node*)",93957342109680,93957342109774],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicStore(v8::internal::compiler::Node*)",93957342112272,93957342112337],["v8::internal::compiler::(anonymous namespace)::VisitAtomicCompareExchange(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342113088,93957342113408],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicSub(v8::internal::compiler::Node*)",93957342113968,93957342114092],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicXor(v8::internal::compiler::Node*)",93957342114352,93957342114476],["v8::internal::compiler::InstructionSelector::VisitWord64AtomicSub(v8::internal::compiler::Node*)",93957342114592,93957342114704],["v8::internal::compiler::InstructionSelector::VisitWord64AtomicOr(v8::internal::compiler::Node*)",93957342114816,93957342114928],["v8::internal::compiler::InstructionSelector::VisitS128Const(v8::internal::compiler::Node*)",93957342115040,93957342115424],["setfsuid",139871564299904,139871564299937],["eventfd_write",139871564300336,139871564300377],["epoll_wait",139871564300480,139871564300643],["vmsplice",139871564300832,139871564300997],["v8::internal::ScopeIterator::VisitScope(std::__1::function<bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)> const&, v8::internal::ScopeIterator::Mode) const",93957336285184,93957336285339],["v8::internal::ScopeIterator::SetContextExtensionValue(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957336291008,93957336291544],["bool std::__1::__function::__policy_invoker<bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::ScopeIterator::DeclaresLocals(v8::internal::ScopeIterator::Mode) const::$_0, bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)> >(std::__1::__function::__policy_storage const*, v8::internal::Handle<v8::internal::String>&&, v8::internal::Handle<v8::internal::Object>&&, v8::internal::ScopeIterator::ScopeType)",93957336293904,93957336293918],["v8::internal::DebugStackTraceIterator::Advance()",93957336294368,93957336294784],["v8::internal::DebugStackTraceIterator::~DebugStackTraceIterator()",93957336294896,93957336294967],["v8::internal::DebugStackTraceIterator::GetReceiver() const",93957336295088,93957336295629],["v8::internal::DebugStackTraceIterator::GetFunctionDebugName() const",93957336295808,93957336295825],["v8::internal::DebugStackTraceIterator::GetSourceLocation() const",93957336295904,93957336296020],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::Pattern, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::Pattern>, v8::internal::(anonymous namespace)::H24Trait, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::Pattern> >::InitInstance(void*)",93957338651984,93957338652008],["v8::internal::(anonymous namespace)::DateTimeFieldNames::locale() const",93957338662640,93957338662668],["v8::internal::JSFunction::HasAvailableOptimizedCode() const",93957338664448,93957338664467],["v8::internal::JSFunction::ActiveTierIsMidtierTurboprop() const",93957338665184,93957338665321],["v8::internal::JSBoundFunction::GetLength(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSBoundFunction>)",93957338666336,93957338666666],["v8::internal::JSFunction::SetInterruptBudget()",93957338667712,93957338667934],["v8::internal::JSFunction::SetInitialMap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::HeapObject>)",93957338670624,93957338670637],["v8::internal::JSFunction::CalculateInstanceSizeHelper(v8::internal::InstanceType, bool, int, int, int*, int*)",93957338672208,93957338672403],["v8::internal::JSFunction::PrintName(_IO_FILE*)",93957338675200,93957338675294],["v8::internal::JSFunction::SetName(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::String>)",93957338675744,93957338675974],["v8::internal::(anonymous namespace)::NativeCodeFunctionSourceString(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957338677056,93957338678310],["v8::internal::JSListFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338678576,93957338681048],["v8::internal::JSListFormat::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSListFormat>)",93957338681200,93957338681642],["v8::internal::JSListFormat::FormatListToParts(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSListFormat>, v8::internal::Handle<v8::internal::JSArray>)",93957338682176,93957338683133],["void std::__1::vector<icu_68::UnicodeString, std::__1::allocator<icu_68::UnicodeString> >::__push_back_slow_path<icu_68::UnicodeString>(icu_68::UnicodeString&&)",93957338683760,93957338684105],["v8::internal::JSLocale::Is38AlphaNumList(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338685456,93957338685996],["v8::internal::compiler::InstructionSelector::VisitUint32LessThan(v8::internal::compiler::Node*)",93957342108464,93957342108558],["v8::internal::compiler::InstructionSelector::VisitFloat64Equal(v8::internal::compiler::Node*)",93957342110544,93957342110633],["v8::internal::compiler::InstructionSelector::VisitMemoryBarrier(v8::internal::compiler::Node*)",93957342112048,93957342112070],["v8::internal::compiler::InstructionSelector::VisitWord64AtomicStore(v8::internal::compiler::Node*)",93957342112640,93957342112705],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicCompareExchange(v8::internal::compiler::Node*)",93957342112960,93957342113084],["v8::internal::compiler::InstructionSelector::VisitWord64AtomicCompareExchange(v8::internal::compiler::Node*)",93957342113408,93957342113520],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicAdd(v8::internal::compiler::Node*)",93957342113840,93957342113964],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicAnd(v8::internal::compiler::Node*)",93957342114096,93957342114220],["__clone",139871564299696,139871564299786],["epoll_pwait",139871564300000,139871564300187],["eventfd_read",139871564300304,139871564300335],["prlimit",139871564300384,139871564300420],["v8::internal::ScopeIterator::MaterializeScopeDetails()",93957336283200,93957336284013],["v8::internal::ScopeIterator::WithContextExtension()",93957336286240,93957336286410],["v8::internal::ScopeIterator::SetModuleVariableValue(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957336290560,93957336290782],["v8::internal::ScopeIterator::ClosureScopeHasThisReference() const",93957336291984,93957336292008],["v8::internal::(anonymous namespace)::ScopeChainRetriever::RetrieveScopeChainDefaultConstructor(v8::internal::Scope*)",93957336293792,93957336293892],["bool std::__1::__function::__policy_invoker<bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::ScopeIterator::ScopeObject(v8::internal::ScopeIterator::Mode)::$_1, bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)> >(std::__1::__function::__policy_storage const*, v8::internal::Handle<v8::internal::String>&&, v8::internal::Handle<v8::internal::Object>&&, v8::internal::ScopeIterator::ScopeType)",93957336293920,93957336294030],["v8::internal::DebugStackTraceIterator::DebugStackTraceIterator(v8::internal::Isolate*, int)",93957336294096,93957336294364],["v8::internal::DebugStackTraceIterator::Done() const",93957336294784,93957336294801],["v8::internal::(anonymous namespace)::SpecialTimeZoneMap::Add(char const*)",93957338642304,93957338643298],["v8::internal::JSDisplayNames::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDisplayNames>)",93957338658768,93957338659721],["v8::internal::(anonymous namespace)::CurrencyNames::of(v8::internal::Isolate*, char const*) const",93957338662016,93957338662450],["v8::internal::(anonymous namespace)::DateFormatSymbolsNames::of(v8::internal::Isolate*, char const*) const",93957338663248,93957338663395],["v8::internal::JSFunction::GetAvailableCodeKinds() const",93957338663712,93957338664333],["v8::internal::JSFunction::HasAvailableCodeKind(v8::internal::CodeKind) const",93957338664656,93957338664714],["v8::internal::JSFunction::ActiveTierIsBaseline() const",93957338665008,93957338665036],["v8::internal::JSFunction::CanDiscardCompiled() const",93957338665392,93957338665447],["v8::internal::JSFunction::GetName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957338666048,93957338666327],["v8::internal::JSBoundFunction::ToString(v8::internal::Handle<v8::internal::JSBoundFunction>)",93957338666672,93957338666691],["v8::internal::JSFunction::EnsureClosureFeedbackCellArray(v8::internal::Handle<v8::internal::JSFunction>, bool)",93957338666816,93957338667708],["v8::internal::JSFunction::EnsureFeedbackVector(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::IsCompiledScope*)",93957338667936,93957338668621],["v8::internal::JSFunction::SetPrototype(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>)",93957338669088,93957338670611],["v8::internal::JSFunction::SetInitialMap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::JSFunction>)",93957338670640,93957338671173],["v8::internal::JSFunction::CalculateExpectedNofProperties(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957338671728,93957338672198],["v8::internal::JSFunction::GetDerivedMap(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::JSReceiver>)",93957338672416,93957338675017],["v8::internal::compiler::(anonymous namespace)::VisitWord64EqualImpl(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::FlagsContinuation*)",93957342106544,93957342106817],["v8::internal::compiler::InstructionSelector::VisitInt32SubWithOverflow(v8::internal::compiler::Node*)",93957342109232,93957342109386],["v8::internal::compiler::InstructionSelector::VisitFloat32LessThan(v8::internal::compiler::Node*)",93957342110032,93957342110282],["v8::internal::compiler::InstructionSelector::VisitFloat64LessThanOrEqual(v8::internal::compiler::Node*)",93957342111056,93957342111145],["v8::internal::compiler::InstructionSelector::VisitFloat64SilenceNaN(v8::internal::compiler::Node*)",93957342111888,93957342112041],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicLoad(v8::internal::compiler::Node*)",93957342112080,93957342112262],["v8::internal::compiler::(anonymous namespace)::VisitAtomicExchange(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342112352,93957342112626],["v8::internal::compiler::InstructionSelector::VisitWord32AtomicExchange(v8::internal::compiler::Node*)",93957342112720,93957342112844],["ioperm",139871564299440,139871564299473],["umount2",139871564299808,139871564299841],["setfsgid",139871564299952,139871564299985],["signalfd",139871564300192,139871564300242],["v8::internal::ScopeIterator::TryParseAndRetrieveScopes(v8::internal::ScopeIterator::ReparseStrategy)",93957336279344,93957336281494],["v8::internal::ScopeIterator::start_position()",93957336284688,93957336284802],["v8::internal::ScopeIterator::AdvanceContext()",93957336285552,93957336285854],["v8::internal::ScopeIterator::VisitModuleScope(std::__1::function<bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)> const&) const",93957336287728,93957336288282],["v8::internal::ScopeIterator::SetLocalVariableValue(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957336289264,93957336290558],["v8::internal::ScopeIterator::SetContextVariableValue(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957336290784,93957336290995],["v8::internal::ScopeIterator::SetScriptVariableValue(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957336291552,93957336291970],["v8::internal::ScopeIterator::VisitContextLocals(std::__1::function<bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)> const&, v8::internal::Handle<v8::internal::ScopeInfo>, v8::internal::Handle<v8::internal::Context>, v8::internal::ScopeIterator::ScopeType) const",93957336292016,93957336292426],["v8::internal::JSDateTimeFormat::FormatRange(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDateTimeFormat>, double, double)",93957338623440,93957338624316],["v8::internal::(anonymous namespace)::Pattern::Get() const",93957338650416,93957338650426],["v8::internal::JSDisplayNames::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338653168,93957338656317],["v8::internal::(anonymous namespace)::LocaleDisplayNamesCommon::locale() const",93957338660160,93957338660200],["v8::internal::(anonymous namespace)::LocaleDisplayNamesCommon::~LocaleDisplayNamesCommon()",93957338661952,93957338661995],["v8::internal::(anonymous namespace)::DateTimeFieldNames::~DateTimeFieldNames()",93957338662544,93957338662615],["v8::internal::(anonymous namespace)::MonthNames::~MonthNames()",93957338663152,93957338663215],["v8::internal::(anonymous namespace)::MonthNames::ComputeIndex(char const*) const",93957338663472,93957338663496],["v8::internal::(anonymous namespace)::DayPeriodNames::ComputeIndex(char const*) const",93957338663632,93957338663701],["v8::internal::JSFunction::HasAttachedOptimizedCode() const",93957338664336,93957338664442],["v8::internal::JSFunction::HasAttachedCodeKind(v8::internal::CodeKind) const",93957338664480,93957338664648],["v8::internal::JSFunction::ActiveTierIsIgnition() const",93957338664720,93957338664832],["v8::internal::JSFunction::ActiveTierIsTurbofan() const",93957338664896,93957338664999],["v8::internal::JSFunction::ActiveTierIsToptierTurboprop() const",93957338665040,93957338665176],["v8::internal::JSFunction::NextTier() const",93957338665328,93957338665383],["v8::internal::JSBoundFunction::GetFunctionRealm(v8::internal::Handle<v8::internal::JSBoundFunction>)",93957338665456,93957338665568],["v8::internal::compiler::InstructionSelector::VisitFloat64Ieee754Binop(v8::internal::compiler::Node*, unsigned int)",93957342100000,93957342100248],["v8::internal::compiler::InstructionSelector::VisitSwitch(v8::internal::compiler::Node*, v8::internal::compiler::SwitchInfo const&)",93957342107696,93957342108092],["v8::internal::compiler::InstructionSelector::VisitWord64Equal(v8::internal::compiler::Node*)",93957342108656,93957342109057],["v8::internal::compiler::InstructionSelector::VisitInt64LessThanOrEqual(v8::internal::compiler::Node*)",93957342109488,93957342109582],["v8::internal::compiler::InstructionSelector::VisitFloat32Equal(v8::internal::compiler::Node*)",93957342109776,93957342110026],["v8::internal::compiler::InstructionSelector::VisitFloat32LessThanOrEqual(v8::internal::compiler::Node*)",93957342110288,93957342110538],["v8::internal::compiler::InstructionSelector::VisitFloat64LessThan(v8::internal::compiler::Node*)",93957342110640,93957342111048],["v8::internal::compiler::InstructionSelector::VisitFloat64InsertLowWord32(v8::internal::compiler::Node*)",93957342111152,93957342111650],["gnu_dev_major",139871564299104,139871564299134],["__sysctl",139871564299536,139871564299680],["umount",139871564299792,139871564299799],["readahead",139871564299856,139871564299892],["v8::internal::DebugScopeIterator::GetFunctionDebugName()",93957336278944,93957336278958],["v8::internal::ScopeIterator::UnwrapEvaluationContext()",93957336282208,93957336282435],["v8::internal::ScopeIterator::ScopeObject(v8::internal::ScopeIterator::Mode)",93957336284304,93957336284616],["v8::internal::ScopeIterator::HasPositionInfo()",93957336284944,93957336285000],["v8::internal::ScopeIterator::AdvanceToNonHiddenScope()",93957336285344,93957336285539],["v8::internal::ScopeIterator::Next()",93957336285856,93957336286239],["v8::internal::ScopeIterator::VisitLocalScope(std::__1::function<bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)> const&, v8::internal::ScopeIterator::Mode, v8::internal::ScopeIterator::ScopeType) const",93957336286416,93957336287720],["v8::internal::ScopeIterator::VisitScriptScope(std::__1::function<bool (v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::ScopeIterator::ScopeType)> const&) const",93957336288288,93957336288850],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::DateTimePatternGeneratorCache, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::DateTimePatternGeneratorCache>, v8::base::DefaultConstructTrait<v8::internal::(anonymous namespace)::DateTimePatternGeneratorCache>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::DateTimePatternGeneratorCache> >::Pointer()",93957338611280,93957338611416],["v8::internal::(anonymous namespace)::PatternMap::~PatternMap()",93957338639504,93957338639575],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::Pattern, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::Pattern>, v8::internal::(anonymous namespace)::H11Trait, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::Pattern> >::InitInstance(void*)",93957338643968,93957338643992],["v8::internal::(anonymous namespace)::PatternData::~PatternData()",93957338651296,93957338651375],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338652048,93957338652123],["v8::Maybe<v8::internal::(anonymous namespace)::Type> v8::internal::Intl::GetStringOption<v8::internal::(anonymous namespace)::Type>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::(anonymous namespace)::Type, std::__1::allocator<v8::internal::(anonymous namespace)::Type> > const&, v8::internal::(anonymous namespace)::Type)",93957338656464,93957338656879],["v8::internal::(anonymous namespace)::RegionNames::~RegionNames()",93957338660080,93957338660136],["v8::internal::(anonymous namespace)::RegionNames::type() const",93957338660736,93957338660749],["v8::internal::(anonymous namespace)::ScriptNames::of(v8::internal::Isolate*, char const*) const",93957338661360,93957338661941],["v8::internal::(anonymous namespace)::CurrencyNames::type() const",93957338662000,93957338662013],["v8::internal::(anonymous namespace)::DateTimeFieldNames::~DateTimeFieldNames()",93957338662464,93957338662530],["v8::internal::(anonymous namespace)::DateTimeFieldNames::type() const",93957338662624,93957338662637],["v8::internal::(anonymous namespace)::DateTimeFieldNames::of(v8::internal::Isolate*, char const*) const",93957338662672,93957338663138],["v8::internal::(anonymous namespace)::DateFormatSymbolsNames::locale() const",93957338663216,93957338663244],["v8::internal::(anonymous namespace)::DateFormatSymbolsNames::calendar() const",93957338663408,93957338663458],["v8::internal::(anonymous namespace)::WeekdayNames::ComputeIndex(char const*) const",93957338663504,93957338663556],["v8::internal::compiler::InstructionSelector::VisitFloat64Mul(v8::internal::compiler::Node*)",93957342099440,93957342099460],["v8::internal::compiler::InstructionSelector::VisitWordCompareZero(v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::FlagsContinuation*)",93957342101808,93957342103438],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::FloatMatcher<double, (v8::internal::compiler::IrOpcode::Value)26>, v8::internal::compiler::FloatMatcher<double, (v8::internal::compiler::IrOpcode::Value)26> >::BinopMatcher(v8::internal::compiler::Node*)",93957342107024,93957342107490],["v8::internal::compiler::InstructionSelector::VisitInt32LessThan(v8::internal::compiler::Node*)",93957342108272,93957342108366],["v8::internal::compiler::InstructionSelector::VisitUint32LessThanOrEqual(v8::internal::compiler::Node*)",93957342108560,93957342108654],["v8::internal::compiler::InstructionSelector::VisitInt32AddWithOverflow(v8::internal::compiler::Node*)",93957342109072,93957342109226],["v8::internal::compiler::InstructionSelector::VisitInt64LessThan(v8::internal::compiler::Node*)",93957342109392,93957342109486],["v8::internal::compiler::InstructionSelector::VisitUint64LessThan(v8::internal::compiler::Node*)",93957342109584,93957342109678],["removexattr",139871564291168,139871564291201],["gnu_dev_makedev",139871564299152,139871564299221],["iopl",139871564299488,139871564299521],["__adjtimex",139871564299680,139871564299690],["v8::internal::DebugScopeIterator::DebugScopeIterator(v8::internal::Isolate*, v8::internal::FrameInspector*)",93957336278480,93957336278574],["v8::internal::DebugScopeIterator::SetVariableValue(v8::Local<v8::String>, v8::Local<v8::Value>)",93957336279072,93957336279086],["v8::internal::ScopeIterator::GetFunctionDebugName() const",93957336281568,93957336281788],["v8::internal::ScopeIterator::Restart()",93957336282960,93957336283012],["v8::internal::ScopeIterator::Type() const",93957336284016,93957336284299],["v8::internal::ScopeIterator::HasContext() const",93957336284624,93957336284684],["v8::internal::ScopeIterator::end_position()",93957336284816,93957336284930],["v8::internal::ScopeIterator::DeclaresLocals(v8::internal::ScopeIterator::Mode) const",93957336285008,93957336285178],["v8::internal::JSDateTimeFormat::set_icu_simple_date_format(v8::internal::Managed<icu_68::SimpleDateFormat>, v8::internal::WriteBarrierMode)",93957338595840,93957338595964],["std::__1::vector<v8::internal::JSDateTimeFormat::DateTimeStyle, std::__1::allocator<v8::internal::JSDateTimeFormat::DateTimeStyle> >::vector(std::initializer_list<v8::internal::JSDateTimeFormat::DateTimeStyle>)",93957338617440,93957338617554],["v8::internal::(anonymous namespace)::PatternItems::~PatternItems()",93957338638768,93957338638870],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > >, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > > > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>&&, std::__1::tuple<>&&)",93957338640256,93957338640736],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::CalendarCache, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::CalendarCache>, v8::base::DefaultConstructTrait<v8::internal::(anonymous namespace)::CalendarCache>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::CalendarCache> >::InitInstance(void*)",93957338643824,93957338643868],["v8::internal::(anonymous namespace)::Pattern::~Pattern()",93957338650192,93957338650297],["v8::internal::(anonymous namespace)::PatternData::~PatternData()",93957338650864,93957338650942],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::Pattern, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::Pattern>, v8::internal::(anonymous namespace)::H12Trait, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::Pattern> >::InitInstance(void*)",93957338651920,93957338651944],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::Pattern, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::Pattern>, v8::internal::(anonymous namespace)::HDefaultTrait, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::Pattern> >::InitInstance(void*)",93957338652016,93957338652040],["v8::internal::(anonymous namespace)::LazyCreateDateIntervalFormat(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDateTimeFormat>)",93957338652128,93957338653166],["v8::internal::JSDisplayNames::GetAvailableLocales()",93957338656320,93957338656463],["v8::internal::(anonymous namespace)::CreateInternal(icu_68::Locale const&, v8::internal::JSDisplayNames::Style, v8::internal::(anonymous namespace)::Type, bool)",93957338656880,93957338658767],["v8::internal::JSDisplayNames::Of(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDisplayNames>, v8::internal::Handle<v8::internal::Object>)",93957338659728,93957338660066],["v8::internal::(anonymous namespace)::LanguageNames::type() const",93957338660144,93957338660157],["v8::internal::(anonymous namespace)::LanguageNames::of(v8::internal::Isolate*, char const*) const",93957338660208,93957338660731],["v8::internal::(anonymous namespace)::RegionNames::of(v8::internal::Isolate*, char const*) const",93957338660752,93957338661333],["v8::internal::compiler::InstructionSelector::VisitFloat32Div(v8::internal::compiler::Node*)",93957342098736,93957342098756],["v8::internal::compiler::InstructionSelector::VisitFloat64Min(v8::internal::compiler::Node*)",93957342099792,93957342099807],["v8::internal::compiler::InstructionSelector::EmitPrepareArguments(v8::internal::ZoneVector<v8::internal::compiler::PushParameter>*, v8::internal::compiler::CallDescriptor const*, v8::internal::compiler::Node*)",93957342100432,93957342101468],["v8::internal::compiler::(anonymous namespace)::VisitWordCompare(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, unsigned int, v8::internal::compiler::FlagsContinuation*)",93957342104224,93957342105559],["v8::internal::compiler::(anonymous namespace)::VisitFloat64Compare(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::FlagsContinuation*)",93957342106832,93957342107016],["v8::internal::compiler::(anonymous namespace)::VisitCompare(v8::internal::compiler::InstructionSelector*, unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::FlagsContinuation*, bool)",93957342107504,93957342107691],["v8::internal::compiler::InstructionSelector::VisitWord32Equal(v8::internal::compiler::Node*)",93957342108096,93957342108268],["v8::internal::compiler::InstructionSelector::VisitInt32LessThanOrEqual(v8::internal::compiler::Node*)",93957342108368,93957342108462],["lgetxattr",139871564290976,139871564291012],["__getauxval",139871564291264,139871564291368],["gnu_dev_minor",139871564299136,139871564299152],["__libc_allocate_once_slow",139871564299232,139871564299330],["v8::internal::DebugPropertyIterator::has_native_setter()",93957336277472,93957336277515],["v8::internal::DebugScopeIterator::DebugScopeIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSGeneratorObject>)",93957336278768,93957336278857],["v8::internal::DebugScopeIterator::GetStartLocation()",93957336278976,93957336279011],["v8::internal::DebugScopeIterator::~DebugScopeIterator()",93957336279120,93957336279162],["v8::internal::ScopeIterator::~ScopeIterator()",93957336281504,93957336281556],["v8::internal::ScopeIterator::ScopeIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957336281792,93957336282208],["v8::internal::ScopeIterator::ScopeIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSGeneratorObject>)",93957336282448,93957336282950],["v8::internal::ScopeIterator::GetSourcePosition()",93957336283024,93957336283193],["v8::internal::Managed<icu_68::PluralRules>::FromUniquePtr(v8::internal::Isolate*, unsigned long, std::__1::unique_ptr<icu_68::PluralRules, std::__1::default_delete<icu_68::PluralRules> >)",93957338586224,93957338586448],["v8::internal::JSDateTimeFormat::ToLocaleDateTime(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::JSDateTimeFormat::RequiredOption, v8::internal::JSDateTimeFormat::DefaultsOption, char const*)",93957338600832,93957338601573],["v8::internal::(anonymous namespace)::CreateCalendar(v8::internal::Isolate*, icu_68::Locale const&, icu_68::TimeZone*)",93957338615232,93957338615958],["v8::internal::Managed<icu_68::DateIntervalFormat>::FromRawPtr(v8::internal::Isolate*, unsigned long, icu_68::DateIntervalFormat*)",93957338621408,93957338621622],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::PatternItems, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::PatternItems>, v8::base::DefaultConstructTrait<v8::internal::(anonymous namespace)::PatternItems>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::PatternItems> >::InitInstance(void*)",93957338626640,93957338638655],["v8::internal::(anonymous namespace)::PatternMap::~PatternMap()",93957338639024,93957338639092],["std::__1::vector<v8::internal::(anonymous namespace)::PatternMap, std::__1::allocator<v8::internal::(anonymous namespace)::PatternMap> >::vector(std::__1::vector<v8::internal::(anonymous namespace)::PatternMap, std::__1::allocator<v8::internal::(anonymous namespace)::PatternMap> > const&)",93957338639728,93957338640035],["v8::internal::(anonymous namespace)::ToTitleCaseTimezoneLocation(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338641424,93957338642029],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&&)",93957338643312,93957338643822],["std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > > > >::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<icu_68::SimpleDateFormat, std::__1::default_delete<icu_68::SimpleDateFormat> > >, void*>*)",93957338643872,93957338643961],["v8::internal::(anonymous namespace)::Pattern::Pattern(char const*, char const*)",93957338644000,93957338650192],["v8::internal::(anonymous namespace)::Pattern::~Pattern()",93957338650304,93957338650406],["v8::internal::(anonymous namespace)::PatternData::PatternData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<v8::internal::(anonymous namespace)::PatternMap, std::__1::allocator<v8::internal::(anonymous namespace)::PatternMap> >, std::__1::vector<char const*, std::__1::allocator<char const*> >)",93957338650432,93957338650853],["void std::__1::allocator_traits<std::__1::allocator<v8::internal::(anonymous namespace)::PatternData> >::construct<v8::internal::(anonymous namespace)::PatternData, v8::internal::(anonymous namespace)::PatternData const&, void>(std::__1::allocator<v8::internal::(anonymous namespace)::PatternData>&, v8::internal::(anonymous namespace)::PatternData*, v8::internal::(anonymous namespace)::PatternData const&)",93957338650944,93957338651281],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const> > >::__emplace_unique_impl<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&&)",93957338651376,93957338651917],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::Pattern, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::Pattern>, v8::internal::(anonymous namespace)::H23Trait, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::Pattern> >::InitInstance(void*)",93957338651952,93957338651976],["v8::internal::compiler::InstructionSelector::VisitF64x2Trunc(v8::internal::compiler::Node*)",93957342096416,93957342096569],["v8::internal::compiler::(anonymous namespace)::VisitRRO(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, unsigned int)",93957342099104,93957342099358],["v8::internal::compiler::InstructionSelector::VisitFloat64Mod(v8::internal::compiler::Node*)",93957342099504,93957342099773],["v8::internal::compiler::InstructionSelector::VisitFloat32Neg(v8::internal::compiler::Node*)",93957342099872,93957342099923],["v8::internal::compiler::InstructionSelector::VisitFloat64Ieee754Unop(v8::internal::compiler::Node*, unsigned int)",93957342100256,93957342100422],["v8::internal::compiler::InstructionSelector::EmitPrepareResults(v8::internal::ZoneVector<v8::internal::compiler::PushParameter>*, v8::internal::compiler::CallDescriptor const*, v8::internal::compiler::Node*)",93957342101472,93957342101803],["v8::internal::compiler::(anonymous namespace)::VisitWord32EqualImpl(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::FlagsContinuation*)",93957342103440,93957342104217],["v8::internal::compiler::(anonymous namespace)::VisitCompareZero(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, unsigned int, v8::internal::compiler::FlagsContinuation*)",93957342105568,93957342106532],["fremovexattr",139871564290784,139871564290817],["lremovexattr",139871564291072,139871564291105],["setxattr",139871564291216,139871564291252],["__libc_ifunc_impl_list",139871564291376,139871564299102],["void std::__1::vector<v8::debug::TypeProfile::Entry, std::__1::allocator<v8::debug::TypeProfile::Entry> >::__push_back_slow_path<v8::debug::TypeProfile::Entry>(v8::debug::TypeProfile::Entry&&)",93957336274816,93957336275230],["v8::internal::DebugPropertyIterator::is_own()",93957336278080,93957336278089],["v8::internal::DebugScopeIterator::Advance()",93957336278592,93957336278658],["v8::internal::DebugScopeIterator::GetObject()",93957336278880,93957336278899],["v8::internal::DebugScopeIterator::HasLocationInfo()",93957336278960,93957336278974],["v8::internal::DebugScopeIterator::GetEndLocation()",93957336279024,93957336279059],["v8::internal::DebugScopeIterator::~DebugScopeIterator()",93957336279088,93957336279112],["v8::internal::ScopeIterator::ScopeIterator(v8::internal::Isolate*, v8::internal::FrameInspector*, v8::internal::ScopeIterator::ReparseStrategy)",93957336279168,93957336279340],["v8::base::LazyInstanceImpl<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckCalendar>, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckCalendar> >, v8::base::DefaultConstructTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckCalendar> >, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::Intl::AvailableLocales<v8::internal::(anonymous namespace)::CheckCalendar> > >::InitInstance(void*)",93957338579232,93957338580562],["bool std::__1::operator==<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*)",93957338590272,93957338590350],["v8::internal::(anonymous namespace)::CollatorAvailableLocales::~CollatorAvailableLocales()",93957338596656,93957338596702],["v8::internal::JSDateTimeFormat::UnwrapDateTimeFormat(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>)",93957338610656,93957338611051],["v8::internal::(anonymous namespace)::ToHourCycle(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338612016,93957338612319],["v8::Maybe<v8::internal::JSDateTimeFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)::FormatMatcherOption> v8::internal::Intl::GetStringOption<v8::internal::JSDateTimeFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)::FormatMatcherOption>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::JSDateTimeFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)::FormatMatcherOption, std::__1::allocator<v8::internal::JSDateTimeFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)::FormatMatcherOption> > const&, v8::internal::JSDateTimeFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)::FormatMatcherOption)",93957338616592,93957338617007],["v8::internal::(anonymous namespace)::DateTimeStylePattern(v8::internal::JSDateTimeFormat::DateTimeStyle, v8::internal::JSDateTimeFormat::DateTimeStyle, icu_68::Locale&, v8::internal::JSDateTimeFormat::HourCycle, icu_68::DateTimePatternGenerator*)",93957338617792,93957338620086],["v8::internal::JSFunction::set_code(v8::internal::Code, v8::ReleaseStoreTag, v8::internal::WriteBarrierMode)",93957338621760,93957338621884],["v8::internal::JSDateTimeFormat::FormatRangeToParts(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDateTimeFormat>, double, double)",93957338624320,93957338626628],["v8::internal::(anonymous namespace)::PatternItems::~PatternItems()",93957338638656,93957338638761],["v8::internal::(anonymous namespace)::PatternItem::~PatternItem()",93957338638880,93957338639017],["std::__1::vector<v8::internal::(anonymous namespace)::PatternItem, std::__1::allocator<v8::internal::(anonymous namespace)::PatternItem> >::push_back(v8::internal::(anonymous namespace)::PatternItem&&)",93957338639104,93957338639497],["v8::internal::(anonymous namespace)::PatternItem::~PatternItem()",93957338639584,93957338639718],["void std::__1::allocator_traits<std::__1::allocator<v8::internal::(anonymous namespace)::PatternItem> >::construct<v8::internal::(anonymous namespace)::PatternItem, v8::internal::(anonymous namespace)::PatternItem, void>(std::__1::allocator<v8::internal::(anonymous namespace)::PatternItem>&, v8::internal::(anonymous namespace)::PatternItem*, v8::internal::(anonymous namespace)::PatternItem&&)",93957338640048,93957338640248],["v8::internal::(anonymous namespace)::GetGMTTzID(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338640736,93957338641409],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::SpecialTimeZoneMap, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::SpecialTimeZoneMap>, v8::base::DefaultConstructTrait<v8::internal::(anonymous namespace)::SpecialTimeZoneMap>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::SpecialTimeZoneMap> >::InitInstance(void*)",93957338642032,93957338642298],["v8::internal::compiler::InstructionSelector::VisitFloat32RoundTiesEven(v8::internal::compiler::Node*)",93957342095136,93957342095289],["v8::internal::compiler::InstructionSelector::VisitFloat32Add(v8::internal::compiler::Node*)",93957342097872,93957342097892],["v8::internal::compiler::(anonymous namespace)::VisitFloatUnop(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode, v8::internal::compiler::ArchOpcode)",93957342098832,93957342099081],["v8::internal::compiler::InstructionSelector::VisitFloat64Add(v8::internal::compiler::Node*)",93957342099376,93957342099396],["v8::internal::compiler::InstructionSelector::VisitFloat64Div(v8::internal::compiler::Node*)",93957342099472,93957342099492],["v8::internal::compiler::InstructionSelector::VisitFloat64Max(v8::internal::compiler::Node*)",93957342099776,93957342099791],["v8::internal::compiler::InstructionSelector::VisitFloat64Abs(v8::internal::compiler::Node*)",93957342099808,93957342099859],["v8::internal::compiler::InstructionSelector::VisitFloat64Neg(v8::internal::compiler::Node*)",93957342099936,93957342099987],["dirname",139871564290224,139871564290415],["getxattr",139871564290880,139871564290916],["llistxattr",139871564291024,139871564291057],["lsetxattr",139871564291120,139871564291156],["v8::internal::DebugPropertyIterator::Advance()",93957336268528,93957336268847],["v8::internal::compiler::AbortReasonOf(v8::internal::compiler::Operator const*)",93957336276608,93957336276617],["v8::internal::DebugPropertyIterator::attributes()",93957336277648,93957336277833],["v8::debug::ScopeIterator::CreateForFunction(v8::Isolate*, v8::Local<v8::Function>)",93957336278288,93957336278411],["v8::internal::DebugScopeIterator::Done()",93957336278576,93957336278590],["v8::internal::DebugScopeIterator::DebugScopeIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957336278672,93957336278761],["v8::internal::DebugScopeIterator::GetType()",93957336278864,93957336278878],["v8::internal::DebugScopeIterator::GetScriptId()",93957336278912,93957336278930],["std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::pair<char const*&, char const*&, false>(char const*&, char const*&)",93957338573568,93957338573845],["v8::internal::JSArrayBuffer::YoungMarkExtensionPromoted()",93957338581920,93957338581968],["v8::internal::JSV8BreakIterator::First(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSV8BreakIterator>)",93957338587376,93957338587556],["v8::internal::(anonymous namespace)::SetCaseFirstOption(icu_68::Collator*, v8::internal::(anonymous namespace)::CaseFirst)",93957338595168,93957338595220],["v8::base::LazyInstanceImpl<v8::internal::(anonymous namespace)::CollatorAvailableLocales, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::(anonymous namespace)::CollatorAvailableLocales>, v8::base::DefaultConstructTrait<v8::internal::(anonymous namespace)::CollatorAvailableLocales>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::(anonymous namespace)::CollatorAvailableLocales> >::InitInstance(void*)",93957338596032,93957338596620],["v8::internal::(anonymous namespace)::GetPatternItems()",93957338600336,93957338600472],["v8::internal::JSDateTimeFormat::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)",93957338603616,93957338610543],["v8::internal::JSDateTimeFormat::GetAvailableLocales()",93957338611184,93957338611194],["v8::internal::(anonymous namespace)::DateTimePatternGeneratorCache::CreateGenerator(icu_68::Locale const&)",93957338611424,93957338612011],["v8::internal::(anonymous namespace)::CreateTimeZone(char const*)",93957338612320,93957338615220],["v8::internal::(anonymous namespace)::GetPatternData(v8::internal::JSDateTimeFormat::HourCycle)",93957338615968,93957338616591],["v8::Maybe<v8::internal::JSSegmenter::Granularity> v8::internal::Intl::GetStringOption<v8::internal::JSSegmenter::Granularity>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::JSSegmenter::Granularity, std::__1::allocator<v8::internal::JSSegmenter::Granularity> > const&, v8::internal::JSSegmenter::Granularity)",93957338617008,93957338617434],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char const*, unsigned long) const",93957338617568,93957338617787],["v8::internal::(anonymous namespace)::CreateICUDateFormatFromCache(icu_68::Locale const&, icu_68::UnicodeString const&, icu_68::DateTimePatternGenerator*, v8::internal::JSDateTimeFormat::HourCycle)",93957338620096,93957338621395],["v8::internal::JSNumberFormat::set_icu_number_formatter(v8::internal::Managed<icu_68::number::LocalizedNumberFormatter>, v8::internal::WriteBarrierMode)",93957338621632,93957338621756],["v8::internal::JSDateTimeFormat::FormatToParts(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDateTimeFormat>, double, bool)",93957338621888,93957338623433],["v8::internal::compiler::InstructionSelector::VisitSignExtendWord16ToInt64(v8::internal::compiler::Node*)",93957342093856,93957342094009],["v8::internal::compiler::InstructionSelector::VisitF32x4Trunc(v8::internal::compiler::Node*)",93957342095776,93957342095929],["v8::internal::compiler::InstructionSelector::VisitTruncateFloat64ToWord32(v8::internal::compiler::Node*)",93957342096736,93957342096889],["v8::internal::compiler::InstructionSelector::VisitFloat32Sub(v8::internal::compiler::Node*)",93957342098672,93957342098692],["v8::internal::compiler::InstructionSelector::VisitFloat32Abs(v8::internal::compiler::Node*)",93957342098768,93957342098819],["v8::internal::compiler::InstructionSelector::VisitFloat32Max(v8::internal::compiler::Node*)",93957342099088,93957342099103],["v8::internal::compiler::InstructionSelector::VisitFloat32Min(v8::internal::compiler::Node*)",93957342099360,93957342099375],["v8::internal::compiler::InstructionSelector::VisitFloat64Sub(v8::internal::compiler::Node*)",93957342099408,93957342099428],["get_nprocs",139871564288880,139871564289675],["fgetxattr",139871564290688,139871564290724],["fsetxattr",139871564290832,139871564290868],["listxattr",139871564290928,139871564290961],["v8::debug::TypeProfile::Collect(v8::Isolate*)",93957336266176,93957336266243],["bool std::__1::__insertion_sort_incomplete<bool (*&)(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&), v8::internal::BreakLocation*>(v8::internal::BreakLocation*, v8::internal::BreakLocation*, bool (*&)(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&))",93957336272640,93957336274023],["v8::internal::DebugPropertyIterator::Create(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>)",93957336275440,93957336275991],["v8::internal::DebugPropertyIterator::CalculateNativeAccessorFlags()",93957336276672,93957336277409],["v8::internal::DebugPropertyIterator::name() const",93957336277520,93957336277648],["v8::internal::DebugPropertyIterator::descriptor()",93957336277840,93957336278080],["v8::internal::DebugPropertyIterator::is_array_index()",93957336278096,93957336278288],["v8::debug::ScopeIterator::CreateForGeneratorObject(v8::Isolate*, v8::Local<v8::Object>)",93957336278416,93957336278473],["v8::internal::Intl::GetAvailableLocales()",93957338569792,93957338569935],["std::__1::__tree_node_base<void*>*& std::__1::__tree<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__find_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::__tree_const_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__tree_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void*>*, long>, std::__1::__tree_end_node<std::__1::__tree_node_base<void*>*>*&, std::__1::__tree_node_base<void*>*&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338576656,93957338577429],["v8::internal::JSArrayBuffer::Detach(bool)",93957338581392,93957338581673],["v8::internal::JSTypedArray::type()",93957338583424,93957338583490],["v8::internal::JSV8BreakIterator::AdoptText(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSV8BreakIterator>, v8::internal::Handle<v8::internal::String>)",93957338587008,93957338587184],["v8::internal::JSV8BreakIterator::BreakType(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSV8BreakIterator>)",93957338587760,93957338587916],["std::__1::vector<char const*, std::__1::allocator<char const*> >::vector(std::initializer_list<char const*>)",93957338594896,93957338595010],["v8::Maybe<v8::internal::(anonymous namespace)::Sensitivity> v8::internal::Intl::GetStringOption<v8::internal::(anonymous namespace)::Sensitivity>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::(anonymous namespace)::Sensitivity, std::__1::allocator<v8::internal::(anonymous namespace)::Sensitivity> > const&, v8::internal::(anonymous namespace)::Sensitivity)",93957338595344,93957338595788],["v8::internal::Intl::ResolvedLocale::~ResolvedLocale()",93957338595968,93957338596032],["v8::internal::(anonymous namespace)::CollatorAvailableLocales::~CollatorAvailableLocales()",93957338596624,93957338596652],["v8::internal::JSDateTimeFormat::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDateTimeFormat>)",93957338596704,93957338600329],["v8::internal::JSDateTimeFormat::DateTimeFormat(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDateTimeFormat>, v8::internal::Handle<v8::internal::Object>)",93957338600480,93957338600818],["v8::internal::JSDateTimeFormat::ToDateTimeOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::JSDateTimeFormat::RequiredOption, v8::internal::JSDateTimeFormat::DefaultsOption)",93957338601584,93957338603611],["std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::~vector()",93957338610544,93957338610654],["std::__1::vector<char const*, std::__1::allocator<char const*> >::vector(std::__1::vector<char const*, std::__1::allocator<char const*> > const&)",93957338611056,93957338611183],["bool std::__1::operator!=<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*)",93957338611200,93957338611275],["v8::internal::compiler::InstructionSelector::VisitBitcastFloat64ToInt64(v8::internal::compiler::Node*)",93957342092576,93957342092729],["v8::internal::compiler::InstructionSelector::VisitFloat32RoundUp(v8::internal::compiler::Node*)",93957342094496,93957342094649],["v8::internal::compiler::InstructionSelector::VisitF32x4Ceil(v8::internal::compiler::Node*)",93957342095456,93957342095609],["v8::internal::compiler::InstructionSelector::VisitF64x2Ceil(v8::internal::compiler::Node*)",93957342096096,93957342096249],["v8::internal::compiler::InstructionSelector::VisitF64x2NearestInt(v8::internal::compiler::Node*)",93957342096576,93957342096729],["v8::internal::compiler::InstructionSelector::VisitTruncateInt64ToInt32(v8::internal::compiler::Node*)",93957342096896,93957342097869],["v8::internal::compiler::(anonymous namespace)::VisitFloatBinop(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, unsigned int, unsigned int)",93957342097904,93957342098669],["v8::internal::compiler::InstructionSelector::VisitFloat32Mul(v8::internal::compiler::Node*)",93957342098704,93957342098724],["errx",139871564286944,139871564287092],["get_phys_pages",139871564289936,139871564290078],["getloadavg",139871564290416,139871564290650],["flistxattr",139871564290736,139871564290769],["v8::debug::Coverage::ScriptData::GetFunctionData(unsigned long) const",93957336265136,93957336265231],["v8::debug::WeakMap::New(v8::Isolate*)",93957336267728,93957336267920],["unsigned int std::__1::__sort4<bool (*&)(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&), v8::internal::BreakLocation*>(v8::internal::BreakLocation*, v8::internal::BreakLocation*, v8::internal::BreakLocation*, v8::internal::BreakLocation*, bool (*&)(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&))",93957336271424,93957336272070],["v8::DefaultPersistentValueVectorTraits::Append(std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >*, unsigned long)",93957336274336,93957336274608],["std::__1::__shared_ptr_pointer<v8::internal::TypeProfile*, std::__1::default_delete<v8::internal::TypeProfile>, std::__1::allocator<v8::internal::TypeProfile> >::__on_zero_shared()",93957336275232,93957336275434],["v8::internal::DebugPropertyIterator::AdvanceInternal()",93957336276000,93957336276597],["v8::internal::DebugPropertyIterator::is_native_accessor()",93957336276624,93957336276667],["v8::internal::DebugPropertyIterator::has_native_getter()",93957336277424,93957336277465],["v8::internal::Intl::IsWellFormedCalendar(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338560128,93957338560138],["v8::internal::(anonymous namespace)::BuildLocaleMatcher(v8::internal::Isolate*, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, UErrorCode*)",93957338571312,93957338571801],["v8::Maybe<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::Maybe(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&)",93957338575104,93957338575337],["icu_68::DateTimeRule::~DateTimeRule()",93957338577824,93957338577852],["v8::internal::JSArrayBuffer::Attach(std::__1::shared_ptr<v8::internal::BackingStore>)",93957338580992,93957338581201],["v8::internal::JSArrayBuffer::MarkExtension()",93957338581824,93957338581871],["v8::internal::JSTypedArray::DefineOwnProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSTypedArray>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDescriptor*, v8::Maybe<v8::internal::ShouldThrow>)",93957338582480,93957338583352],["v8::internal::JSV8BreakIterator::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)",93957338583584,93957338586206],["v8::internal::JSV8BreakIterator::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSV8BreakIterator>)",93957338586448,93957338586995],["v8::internal::JSV8BreakIterator::Current(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSV8BreakIterator>)",93957338587184,93957338587364],["v8::internal::JSV8BreakIterator::Next(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSV8BreakIterator>)",93957338587568,93957338587748],["v8::internal::JSCollator::ResolvedOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSCollator>)",93957338587920,93957338590265],["v8::internal::JSCollator::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)",93957338590352,93957338594886],["v8::internal::JSCollator::GetAvailableLocales()",93957338595024,93957338595167],["v8::internal::(anonymous namespace)::ToCaseFirst(char const*)",93957338595232,93957338595332],["v8::internal::Factory::NewFastOrSlowJSObjectFromMap(v8::internal::Handle<v8::internal::Map>, int, v8::internal::AllocationType, v8::internal::Handle<v8::internal::AllocationSite>)",93957338595792,93957338595830],["v8::internal::compiler::InstructionSelector::VisitRoundInt64ToFloat64(v8::internal::compiler::Node*)",93957342091296,93957342091449],["v8::internal::compiler::InstructionSelector::VisitFloat64ExtractHighWord32(v8::internal::compiler::Node*)",93957342093216,93957342093369],["v8::internal::compiler::InstructionSelector::VisitFloat32RoundDown(v8::internal::compiler::Node*)",93957342094176,93957342094329],["v8::internal::compiler::InstructionSelector::VisitFloat32RoundTruncate(v8::internal::compiler::Node*)",93957342094816,93957342094969],["v8::internal::compiler::InstructionSelector::VisitFloat64RoundTiesEven(v8::internal::compiler::Node*)",93957342095296,93957342095449],["v8::internal::compiler::InstructionSelector::VisitF32x4Floor(v8::internal::compiler::Node*)",93957342095616,93957342095769],["v8::internal::compiler::InstructionSelector::VisitF32x4NearestInt(v8::internal::compiler::Node*)",93957342095936,93957342096089],["v8::internal::compiler::InstructionSelector::VisitF64x2Floor(v8::internal::compiler::Node*)",93957342096256,93957342096409],["warnx",139871564286528,139871564286712],["error_at_line",139871564288224,139871564288396],["get_nprocs_conf",139871564289680,139871564289924],["get_avphys_pages",139871564290080,139871564290222],["v8::debug::Coverage::FunctionData::EndOffset() const",93957336264864,93957336264876],["v8::debug::Coverage::CollectBestEffort(v8::Isolate*)",93957336265424,93957336265491],["v8::debug::WeakMap::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957336266272,93957336266986],["v8::debug::GetMessageFromPromise(v8::Local<v8::Promise>)",93957336267968,93957336268242],["void std::__1::__sort<bool (*&)(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&), v8::internal::BreakLocation*>(v8::internal::BreakLocation*, v8::internal::BreakLocation*, bool (*&)(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&))",93957336268848,93957336271414],["void std::__1::__insertion_sort_3<bool (*&)(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&), v8::internal::BreakLocation*>(v8::internal::BreakLocation*, v8::internal::BreakLocation*, bool (*&)(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&))",93957336272080,93957336272628],["void std::__1::vector<v8::debug::BreakLocation, std::__1::allocator<v8::debug::BreakLocation> >::__emplace_back_slow_path<int, int, v8::debug::BreakLocationType>(int&&, int&&, v8::debug::BreakLocationType&&)",93957336274032,93957336274333],["std::__1::__shared_ptr_pointer<v8::internal::Coverage*, std::__1::default_delete<v8::internal::Coverage>, std::__1::allocator<v8::internal::Coverage> >::__on_zero_shared()",93957336274608,93957336274810],["v8::internal::Intl::GetBoolOption(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, bool*)",93957338543600,93957338543759],["v8::internal::ICUTimezoneCache::LocalTimezone(double)",93957338567920,93957338568219],["v8::internal::Intl::GetOptionsObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, char const*)",93957338570752,93957338570867],["v8::internal::(anonymous namespace)::Iterator::~Iterator()",93957338573248,93957338573290],["std::__1::__tree_node_base<void*>*& std::__1::__tree<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__find_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::__tree_end_node<std::__1::__tree_node_base<void*>*>*&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338574320,93957338574623],["_ZNSt3__16vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEE6assignIPS6_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS6_NS_15iterator_traitsISC_E9referenceEEE5valueEvE4typeESC_SC_",93957338575744,93957338576460],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const> > >::__emplace_hint_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const> const&>(std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, void*>*, long>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const> const&)",93957338577536,93957338577786],["v8::base::LazyInstanceImpl<v8::internal::Intl::AvailableLocales<v8::internal::Intl::SkipResourceCheck>, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::Intl::AvailableLocales<v8::internal::Intl::SkipResourceCheck> >, v8::base::DefaultConstructTrait<v8::internal::Intl::AvailableLocales<v8::internal::Intl::SkipResourceCheck> >, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::Intl::AvailableLocales<v8::internal::Intl::SkipResourceCheck> > >::InitInstance(void*)",93957338577888,93957338577898],["v8::internal::JSArrayBuffer::Setup(v8::internal::SharedFlag, std::__1::shared_ptr<v8::internal::BackingStore>)",93957338580576,93957338580982],["v8::internal::JSArrayBuffer::EnsureExtension()",93957338581216,93957338581382],["v8::internal::JSArrayBuffer::GetBackingStore()",93957338581680,93957338581813],["v8::internal::JSArrayBuffer::YoungMarkExtension()",93957338581872,93957338581920],["v8::internal::JSTypedArray::GetBuffer()",93957338581968,93957338582472],["v8::internal::PropertyDescriptor::ToAttributes()",93957338583360,93957338583414],["v8::internal::JSTypedArray::element_size()",93957338583504,93957338583571],["v8::internal::JSSegmenter::GetAvailableLocales()",93957338586208,93957338586218],["v8::internal::compiler::InstructionSelector::VisitChangeFloat64ToUint32(v8::internal::compiler::Node*)",93957342090016,93957342090169],["v8::internal::compiler::InstructionSelector::VisitRoundUint64ToFloat32(v8::internal::compiler::Node*)",93957342091936,93957342092089],["v8::internal::compiler::InstructionSelector::VisitBitcastInt64ToFloat64(v8::internal::compiler::Node*)",93957342092896,93957342093049],["v8::internal::compiler::InstructionSelector::VisitSignExtendWord16ToInt32(v8::internal::compiler::Node*)",93957342093536,93957342093689],["v8::internal::compiler::InstructionSelector::VisitSignExtendWord32ToInt64(v8::internal::compiler::Node*)",93957342094016,93957342094169],["v8::internal::compiler::InstructionSelector::VisitFloat64RoundDown(v8::internal::compiler::Node*)",93957342094336,93957342094489],["v8::internal::compiler::InstructionSelector::VisitFloat64RoundUp(v8::internal::compiler::Node*)",93957342094656,93957342094809],["v8::internal::compiler::InstructionSelector::VisitFloat64RoundTruncate(v8::internal::compiler::Node*)",93957342094976,93957342095129],["lfind",139871564285920,139871564286029],["verrx",139871564286752,139871564286775],["error",139871564287616,139871564287791],["ustat",139871564288400,139871564288476],["v8::debug::SetReturnValue(v8::Isolate*, v8::Local<v8::Value>)",93957336264288,93957336264308],["v8::debug::Coverage::FunctionData::HasBlockCoverage() const",93957336264960,93957336264972],["v8::debug::TypeProfile::GetScriptData(unsigned long) const",93957336265264,93957336265336],["v8::debug::TypeProfile::Entry::Types() const",93957336265520,93957336265939],["v8::debug::TypeProfile::SelectMode(v8::Isolate*, v8::debug::TypeProfileMode)",93957336266256,93957336266266],["v8::debug::WeakMap::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)",93957336266992,93957336267726],["v8::debug::AccessorPair::IsAccessorPair(v8::Local<v8::Value>)",93957336267920,93957336267965],["v8::debug::PropertyIterator::Create(v8::Local<v8::Context>, v8::Local<v8::Object>)",93957336268256,93957336268516],["v8::internal::(anonymous namespace)::GetUCharBufferFromFlat(v8::internal::String::FlatContent const&, std::__1::unique_ptr<unsigned short [], std::__1::default_delete<unsigned short []> >*, int)",93957338535888,93957338536060],["v8::internal::Intl::NumberToLocaleString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)",93957338553376,93957338553909],["v8::internal::Intl::ResolveLocale(v8::internal::Isolate*, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, v8::internal::Intl::MatcherOption, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&)",93957338560864,93957338566416],["v8::internal::Intl::CreateTimeZoneCache()",93957338568656,93957338568723],["v8::internal::Intl::NumberFieldToType(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, int)",93957338570080,93957338570517],["v8::internal::ICUTimezoneCache::~ICUTimezoneCache()",93957338570960,93957338571123],["v8::internal::(anonymous namespace)::BestAvailableLocale(std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338572672,93957338572965],["v8::internal::(anonymous namespace)::Iterator::hasNext() const",93957338573360,93957338573377],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&&)",93957338573856,93957338574318],["std::__1::pair<std::__1::__tree_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__tree_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void*>*, long>, bool> std::__1::__tree<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338574624,93957338575099],["void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&)",93957338575344,93957338575731],["std::__1::pair<std::__1::__tree_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__tree_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void*>*, long>, bool> std::__1::__tree<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__emplace_hint_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(std::__1::__tree_const_iterator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__tree_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void*>*, long>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338576464,93957338576648],["std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const> > >::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>, void*>*)",93957338577440,93957338577529],["std::__1::__shared_ptr_pointer<v8::internal::DisplayNamesInternal*, std::__1::shared_ptr<v8::internal::DisplayNamesInternal>::__shared_ptr_default_delete<v8::internal::DisplayNamesInternal, v8::internal::DisplayNamesInternal>, std::__1::allocator<v8::internal::DisplayNamesInternal> >::__on_zero_shared()",93957338577792,93957338577814],["icu_68::StringByteSink<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::Append(char const*, int)",93957338577856,93957338577873],["v8::internal::Intl::AvailableLocales<v8::internal::Intl::SkipResourceCheck>::AvailableLocales()",93957338577904,93957338579218],["v8::internal::compiler::InstructionSelector::VisitWord64Ctz(v8::internal::compiler::Node*)",93957342088736,93957342088889],["v8::internal::compiler::InstructionSelector::VisitChangeFloat32ToFloat64(v8::internal::compiler::Node*)",93957342090656,93957342090809],["v8::internal::compiler::InstructionSelector::VisitRoundInt32ToFloat32(v8::internal::compiler::Node*)",93957342091616,93957342091769],["v8::internal::compiler::InstructionSelector::VisitRoundUint32ToFloat32(v8::internal::compiler::Node*)",93957342092256,93957342092409],["v8::internal::compiler::InstructionSelector::VisitBitcastInt32ToFloat32(v8::internal::compiler::Node*)",93957342092736,93957342092889],["v8::internal::compiler::InstructionSelector::VisitFloat64ExtractLowWord32(v8::internal::compiler::Node*)",93957342093056,93957342093209],["v8::internal::compiler::InstructionSelector::VisitSignExtendWord8ToInt32(v8::internal::compiler::Node*)",93957342093376,93957342093529],["v8::internal::compiler::InstructionSelector::VisitSignExtendWord8ToInt64(v8::internal::compiler::Node*)",93957342093696,93957342093849],["__twalk",139871564285680,139871564285703],["vwarnx",139871564286320,139871564286327],["verr",139871564286720,139871564286743],["err",139871564286784,139871564286932],["v8::debug::GetDetailedStackTrace(v8::Isolate*, v8::Local<v8::Object>)",93957336262192,93957336262240],["v8::debug::SetFunctionBreakpoint(v8::Local<v8::Function>, v8::Local<v8::String>, int*)",93957336264560,93957336264752],["v8::debug::Coverage::FunctionData::Name() const",93957336264896,93957336264909],["v8::debug::TypeProfile::ScriptData::GetScript() const",93957336265072,93957336265084],["v8::debug::TypeProfile::ScriptCount() const",93957336265232,93957336265252],["v8::debug::Coverage::CollectPrecise(v8::Isolate*)",93957336265344,93957336265411],["v8::debug::Coverage::SelectMode(v8::Isolate*, v8::debug::CoverageMode)",93957336265504,93957336265514],["v8::debug::TypeProfile::ScriptData::Entries() const",93957336265952,93957336266173],["v8::internal::FeedbackNexus::Collect(v8::internal::Handle<v8::internal::String>, int)",93957338531504,93957338532426],["v8::internal::Intl::ToString(v8::internal::Isolate*, icu_68::UnicodeString const&, int, int)",93957338539792,93957338539945],["v8::internal::(anonymous namespace)::DefaultLocale(v8::internal::Isolate*)",93957338550720,93957338551686],["v8::internal::Intl::GetCanonicalLocales(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338556320,93957338556757],["v8::internal::Intl::IsValidCalendar(icu_68::Locale const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338560160,93957338560497],["v8::internal::Intl::Normalize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957338566720,93957338567850],["v8::internal::ICUTimezoneCache::LocalTimeOffset(double, bool)",93957338568336,93957338568511],["v8::Maybe<v8::internal::Intl::MatcherOption> v8::internal::Intl::GetStringOption<v8::internal::Intl::MatcherOption>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> > const&, std::__1::vector<v8::internal::Intl::MatcherOption, std::__1::allocator<v8::internal::Intl::MatcherOption> > const&, v8::internal::Intl::MatcherOption)",93957338568928,93957338569346],["v8::internal::Intl::GetAvailableLocalesForDateFormat()",93957338569936,93957338570079],["v8::internal::Intl::FormattedToString(v8::internal::Isolate*, icu_68::FormattedValue const&)",93957338570528,93957338570738],["v8::internal::Intl::CoerceOptionsToObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, char const*)",93957338570880,93957338570947],["v8::internal::ICUTimezoneCache::~ICUTimezoneCache()",93957338571136,93957338571302],["v8::internal::(anonymous namespace)::ParseBCP47Locale(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338571808,93957338572670],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338572976,93957338573234],["v8::internal::(anonymous namespace)::Iterator::~Iterator()",93957338573296,93957338573346],["v8::internal::(anonymous namespace)::Iterator::next()",93957338573392,93957338573559],["v8::internal::compiler::InstructionSelector::VisitTryTruncateFloat32ToUint64(v8::internal::compiler::Node*)",93957342086768,93957342087039],["v8::internal::compiler::InstructionSelector::VisitFloat64Sqrt(v8::internal::compiler::Node*)",93957342089376,93957342089529],["v8::internal::compiler::InstructionSelector::VisitChangeFloat64ToUint64(v8::internal::compiler::Node*)",93957342090336,93957342090489],["v8::internal::compiler::InstructionSelector::VisitTruncateFloat32ToUint32(v8::internal::compiler::Node*)",93957342090976,93957342091129],["v8::internal::compiler::InstructionSelector::VisitChangeUint32ToFloat64(v8::internal::compiler::Node*)",93957342091456,93957342091609],["v8::internal::compiler::InstructionSelector::VisitRoundInt64ToFloat32(v8::internal::compiler::Node*)",93957342091776,93957342091929],["v8::internal::compiler::InstructionSelector::VisitRoundUint64ToFloat64(v8::internal::compiler::Node*)",93957342092096,93957342092249],["v8::internal::compiler::InstructionSelector::VisitBitcastFloat32ToInt32(v8::internal::compiler::Node*)",93957342092416,93957342092569],["hsearch_r",139871564282448,139871564282986],["tdestroy",139871564285744,139871564285761],["vwarn",139871564286304,139871564286311],["warn",139871564286336,139871564286520],["v8::debug::SetAsyncEventDelegate(v8::Isolate*, v8::debug::AsyncEventDelegate*)",93957336260864,93957336260881],["v8::debug::GeneratorObject::Cast(v8::Local<v8::Value>)",93957336262848,93957336262897],["v8::debug::EnumerateRuntimeCallCounters(v8::Isolate*, std::__1::function<void (char const*, long, v8::base::TimeDelta)>)",93957336264352,93957336264491],["v8::debug::DisableBreakScope::~DisableBreakScope()",93957336264800,93957336264839],["v8::debug::Coverage::FunctionData::Count() const",93957336264880,93957336264892],["v8::debug::Coverage::FunctionData::BlockCount() const",93957336264912,93957336264947],["v8::debug::Coverage::FunctionData::GetBlockData(unsigned long) const",93957336264976,93957336265072],["v8::debug::Coverage::ScriptData::FunctionCount() const",93957336265088,93957336265123],["v8::internal::FeedbackNexus::ConfigureCloneObject(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>)",93957338523760,93957338526057],["v8::internal::FieldType::IsClass() const",93957338535232,93957338535281],["v8::internal::Intl::ConvertToUpper(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957338537760,93957338539292],["v8::internal::(anonymous namespace)::ValidateResource(icu_68::Locale, char const*, char const*)",93957338541648,93957338542592],["v8::internal::(anonymous namespace)::CanonicalizeLanguageTag(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338546224,93957338549874],["v8::internal::Intl::CompareStrings(v8::internal::Isolate*, icu_68::Collator const&, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957338552144,93957338553000],["v8::internal::(anonymous namespace)::DefaultNumberOption(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, int, int, int, v8::internal::Handle<v8::internal::String>)",93957338554208,93957338554476],["v8::internal::Intl::SupportedLocalesOf(v8::internal::Isolate*, char const*, std::__1::set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957338557040,93957338559537],["v8::internal::Intl::IsWellFormedCurrency(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338560144,93957338560154],["v8::internal::Intl::IsValidNumberingSystem(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338560512,93957338560858],["v8::internal::Intl::SetTextToBreakIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, icu_68::BreakIterator*)",93957338566416,93957338566720],["v8::internal::Handle<v8::internal::String> v8::internal::Factory::NewStringFromStaticChars<21ul>(char const (&) [21ul], v8::internal::AllocationType)",93957338567856,93957338567917],["v8::internal::ICUTimezoneCache::DaylightSavingsOffset(double)",93957338568224,93957338568325],["v8::internal::ICUTimezoneCache::Clear(v8::base::TimezoneCache::TimeZoneDetection)",93957338568512,93957338568646],["v8::internal::Intl::GetLocaleMatcher(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*)",93957338568736,93957338568922],["v8::internal::Intl::GetNumberingSystem(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, std::__1::unique_ptr<char [], std::__1::default_delete<char []> >*)",93957338569360,93957338569782],["v8::internal::compiler::InstructionSelector::VisitInt32Mod(v8::internal::compiler::Node*)",93957342085872,93957342085887],["v8::internal::compiler::InstructionSelector::ZeroExtendsWord32ToWord64NoPhis(v8::internal::compiler::Node*)",93957342088032,93957342088216],["v8::internal::compiler::InstructionSelector::VisitWord64Popcnt(v8::internal::compiler::Node*)",93957342089056,93957342089209],["v8::internal::compiler::InstructionSelector::VisitRoundFloat64ToInt32(v8::internal::compiler::Node*)",93957342089696,93957342089849],["v8::internal::compiler::InstructionSelector::VisitTruncateFloat64ToUint32(v8::internal::compiler::Node*)",93957342090176,93957342090329],["v8::internal::compiler::InstructionSelector::VisitTruncateFloat64ToFloat32(v8::internal::compiler::Node*)",93957342090496,93957342090649],["v8::internal::compiler::InstructionSelector::VisitTruncateFloat32ToInt32(v8::internal::compiler::Node*)",93957342090816,93957342090969],["v8::internal::compiler::InstructionSelector::VisitChangeInt32ToFloat64(v8::internal::compiler::Node*)",93957342091136,93957342091289],["hsearch",139871564282096,139871564282161],["__tfind",139871564284144,139871564284249],["__twalk_r",139871564285712,139871564285733],["lsearch",139871564285776,139871564285918],["v8::debug::WasmScript::CodeOffset() const",93957336259776,93957336259823],["v8::debug::GetBuiltin(v8::Isolate*, v8::debug::Builtin)",93957336261248,93957336262080],["v8::debug::GeneratorObject::SuspendedLocation()",93957336262416,93957336262820],["v8::debug::QueryObjects(v8::Local<v8::Context>, v8::debug::QueryObjectPredicate*, v8::PersistentValueVector<v8::Object, v8::DefaultPersistentValueVectorTraits>*)",93957336263264,93957336263355],["v8::debug::GetNextRandomInt64(v8::Isolate*)",93957336264320,93957336264338],["v8::debug::GetDebuggingId(v8::Local<v8::Function>)",93957336264496,93957336264556],["v8::debug::DisableBreakScope::DisableBreakScope(v8::Isolate*)",93957336264752,93957336264800],["v8::debug::TypeProfile::Entry::SourcePosition() const",93957336264848,93957336264859],["v8::internal::NexusConfig::SetFeedbackPair(v8::internal::FeedbackVector, v8::internal::FeedbackSlot, v8::internal::MaybeObject, v8::internal::WriteBarrierMode, v8::internal::MaybeObject, v8::internal::WriteBarrierMode) const",93957338519776,93957338520252],["v8::internal::FeedbackNexus::ExtractMapsAndFeedback(std::__1::vector<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle>, std::__1::allocator<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle> > >*) const",93957338528416,93957338528897],["v8::internal::FeedbackIterator::FeedbackIterator(v8::internal::FeedbackNexus const*)",93957338534224,93957338534762],["v8::internal::FieldType::PrintTo(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957338535520,93957338535630],["v8::internal::Intl::ConvertToLower(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957338536688,93957338537364],["std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string<decltype(nullptr)>(char const*)",93957338539552,93957338539685],["v8::internal::Intl::AddElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, int, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957338540176,93957338540439],["v8::internal::Intl::LegacyUnwrapReceiver(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSFunction>, bool)",93957338542800,93957338543101],["v8::internal::Intl::CanonicalizeLocaleList(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, bool)",93957338543760,93957338546215],["v8::internal::Intl::StringLocaleConvertCase(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, bool, v8::internal::Handle<v8::internal::Object>)",93957338549888,93957338550716],["v8::internal::Intl::StringLocaleCompare(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, char const*)",93957338551696,93957338552132],["v8::internal::(anonymous namespace)::ToICUStringPiece(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957338553008,93957338553364],["v8::internal::Intl::GetNumberOption(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>, int, int, int)",93957338553920,93957338554206],["v8::internal::Intl::SetNumberFormatDigitOptions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, int, int, bool)",93957338554480,93957338556316],["v8::internal::(anonymous namespace)::CreateArrayFromList(v8::internal::Isolate*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, v8::internal::PropertyAttributes)",93957338556768,93957338557036],["v8::internal::Intl::IsValidCollation(icu_68::Locale const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957338559552,93957338560121],["v8::internal::compiler::InstructionSelector::VisitInt64Mul(v8::internal::compiler::Node*)",93957342085168,93957342085183],["v8::internal::compiler::InstructionSelector::VisitUint64Mod(v8::internal::compiler::Node*)",93957342086192,93957342086207],["v8::internal::compiler::InstructionSelector::VisitBitcastWord32ToWord64(v8::internal::compiler::Node*)",93957342087312,93957342087322],["v8::internal::compiler::InstructionSelector::VisitWord64Clz(v8::internal::compiler::Node*)",93957342088416,93957342088569],["v8::internal::compiler::InstructionSelector::VisitWord32Ctz(v8::internal::compiler::Node*)",93957342088896,93957342089049],["v8::internal::compiler::InstructionSelector::VisitWord32Popcnt(v8::internal::compiler::Node*)",93957342089216,93957342089369],["v8::internal::compiler::InstructionSelector::VisitFloat32Sqrt(v8::internal::compiler::Node*)",93957342089536,93957342089689],["v8::internal::compiler::InstructionSelector::VisitChangeFloat64ToInt64(v8::internal::compiler::Node*)",93957342089856,93957342090009],["qgcvt",139871564280928,139871564280977],["hcreate_r",139871564282192,139871564282396],["__tsearch",139871564283728,139871564284139],["__tdelete",139871564284256,139871564285677],["v8::debug::RemoveBreakpoint(v8::Isolate*, int)",93957336259040,93957336259150],["v8::debug::CompileInspectorScript(v8::Isolate*, v8::Local<v8::String>)",93957336260320,93957336260763],["v8::debug::EstimatedValueSize(v8::Isolate*, v8::Local<v8::Value>)",93957336261088,93957336261180],["v8::debug::ConsoleCallArguments::ConsoleCallArguments(v8::FunctionCallbackInfo<v8::Value> const&)",93957336262096,93957336262123],["v8::debug::GeneratorObject::Script()",93957336262240,93957336262408],["v8::debug::GeneratorObject::IsSuspended()",93957336262832,93957336262848],["v8::debug::EvaluateGlobal(v8::Isolate*, v8::Local<v8::String>, v8::debug::EvaluateGlobalMode, bool)",93957336262912,93957336263257],["v8::debug::GlobalLexicalScopeNames(v8::Local<v8::Context>, v8::PersistentValueVector<v8::String, v8::DefaultPersistentValueVectorTraits>*)",93957336263360,93957336264279],["v8::internal::FeedbackVectorSpec::AddTypeProfileSlot()",93957338516416,93957338516953],["v8::internal::FeedbackNexus::GetFirstMap() const",93957338521968,93957338522041],["v8::internal::FeedbackNexus::ConfigureMonomorphic(v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle const&)",93957338526448,93957338527017],["v8::internal::FeedbackNexus::GetKeyedAccessLoadMode() const",93957338529808,93957338530250],["v8::internal::FeedbackNexus::GetTypesForSourcePositions(unsigned int) const",93957338533008,93957338534019],["v8::internal::FieldType::Any(v8::internal::Isolate*)",93957338535056,93957338535142],["v8::internal::FieldType::Equals(v8::internal::FieldType) const",93957338535344,93957338535462],["v8::internal::Intl::ToLatin1LowerTable()",93957338535680,93957338535693],["v8::internal::Intl::ConvertOneByteToLower(v8::internal::String, v8::internal::String)",93957338536064,93957338536685],["v8::internal::(anonymous namespace)::LocaleConvertCase(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, bool, char const*)",93957338537376,93957338537759],["v8::internal::Intl::GetNumberingSystem(icu_68::Locale const&)",93957338539296,93957338539548],["v8::internal::Intl::ToString(v8::internal::Isolate*, icu_68::UnicodeString const&)",93957338539696,93957338539782],["v8::internal::Intl::AddElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, int, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957338539952,93957338540176],["v8::internal::Intl::BuildLocaleSet(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, char const*, char const*)",93957338540448,93957338541644],["v8::internal::Intl::ToLanguageTag(icu_68::Locale const&)",93957338542592,93957338542789],["v8::internal::Intl::GetStringOption(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, char const*, std::__1::vector<char const*, std::__1::allocator<char const*> >, char const*, std::__1::unique_ptr<char [], std::__1::default_delete<char []> >*)",93957338543104,93957338543594],["v8::internal::compiler::VisitBinop(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, unsigned int, v8::internal::compiler::FlagsContinuation*)",93957342081136,93957342082147],["v8::internal::compiler::(anonymous namespace)::VisitDiv(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342085552,93957342085813],["v8::internal::compiler::InstructionSelector::VisitInt64Mod(v8::internal::compiler::Node*)",93957342086160,93957342086175],["v8::internal::compiler::InstructionSelector::VisitTryTruncateFloat32ToInt64(v8::internal::compiler::Node*)",93957342086224,93957342086495],["v8::internal::compiler::InstructionSelector::VisitTryTruncateFloat64ToUint64(v8::internal::compiler::Node*)",93957342087040,93957342087311],["v8::internal::compiler::InstructionSelector::VisitChangeInt32ToInt64(v8::internal::compiler::Node*)",93957342087328,93957342088017],["v8::internal::compiler::InstructionSelector::VisitChangeUint32ToUint64(v8::internal::compiler::Node*)",93957342088224,93957342088416],["v8::internal::compiler::InstructionSelector::VisitWord32Clz(v8::internal::compiler::Node*)",93957342088576,93957342088729],["fcvt_r",139871564279632,139871564280289],["qecvt_r",139871564281680,139871564282079],["hcreate",139871564282176,139871564282188],["hdestroy_r",139871564282400,139871564282447],["v8::debug::Script::GetSourceOffset(v8::debug::Location const&) const",93957336258048,93957336258406],["v8::debug::WasmScript::GetDebugSymbolType() const",93957336259264,93957336259314],["v8::debug::Location::Location()",93957336259840,93957336259864],["v8::debug::TierUpAllModulesPerIsolate(v8::Isolate*)",93957336260800,93957336260820],["v8::debug::ResetBlackboxedStateCache(v8::Isolate*, v8::Local<v8::debug::Script>)",93957336260896,93957336261086],["v8::debug::WasmValueObject::IsWasmValueObject(v8::Local<v8::Value>)",93957336261184,93957336261233],["v8::debug::SetConsoleDelegate(v8::Isolate*, v8::debug::ConsoleDelegate*)",93957336262080,93957336262093],["v8::debug::ConsoleCallArguments::ConsoleCallArguments(v8::internal::BuiltinArguments const&)",93957336262128,93957336262182],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338511344,93957338511603],["v8::internal::FeedbackVector::SetOptimizedCode(v8::internal::Handle<v8::internal::FeedbackVector>, v8::internal::Handle<v8::internal::Code>, v8::internal::FeedbackCell)",93957338518128,93957338518448],["v8::internal::FeedbackNexus::ConfigureUninitialized()",93957338520688,93957338521068],["v8::internal::FeedbackNexus::GetForInFeedback() const",93957338523232,93957338523268],["v8::internal::FeedbackNexus::GetSpeculationMode()",93957338526288,93957338526332],["v8::internal::FeedbackNexus::ExtractMaps(std::__1::vector<v8::internal::Handle<v8::internal::Map>, std::__1::allocator<v8::internal::Handle<v8::internal::Map> > >*) const",93957338527728,93957338528324],["v8::internal::FeedbackNexus::FindHandlerForMap(v8::internal::Handle<v8::internal::Map>) const",93957338529408,93957338529593],["v8::internal::FeedbackNexus::GetKeyedAccessStoreMode() const",93957338530416,93957338531310],["v8::internal::FeedbackNexus::GetSourcePositions() const",93957338532432,93957338532995],["v8::internal::FeedbackNexus::ResetTypeProfile()",93957338534032,93957338534211],["v8::internal::FeedbackIterator::AdvancePolymorphic()",93957338534768,93957338535055],["v8::internal::FieldType::Class(v8::internal::Handle<v8::internal::Map>, v8::internal::Isolate*)",93957338535152,93957338535232],["v8::internal::FieldType::NowIs(v8::internal::FieldType) const",93957338535296,93957338535338],["v8::internal::FieldType::NowIs(v8::internal::Handle<v8::internal::FieldType>) const",93957338535472,93957338535517],["v8::internal::FieldType::NowContains(v8::internal::Object) const",93957338535632,93957338535672],["v8::internal::Intl::ToICUUnicodeString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957338535696,93957338535873],["v8::internal::compiler::InstructionSelector::VisitWord64Rol(v8::internal::compiler::Node*)",93957342079248,93957342079263],["v8::internal::compiler::InstructionSelector::VisitInt64SubWithOverflow(v8::internal::compiler::Node*)",93957342083920,93957342084074],["v8::internal::compiler::(anonymous namespace)::VisitMulHigh(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342085200,93957342085523],["v8::internal::compiler::InstructionSelector::VisitUint32Div(v8::internal::compiler::Node*)",93957342085840,93957342085855],["v8::internal::compiler::(anonymous namespace)::VisitMod(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342085888,93957342086159],["v8::internal::compiler::InstructionSelector::VisitUint32Mod(v8::internal::compiler::Node*)",93957342086176,93957342086191],["v8::internal::compiler::InstructionSelector::VisitUint32MulHigh(v8::internal::compiler::Node*)",93957342086208,93957342086223],["v8::internal::compiler::InstructionSelector::VisitTryTruncateFloat64ToInt64(v8::internal::compiler::Node*)",93957342086496,93957342086767],["munlockall",139871564279312,139871564279345],["qfcvt",139871564280720,139871564280875],["qfcvt_r",139871564280992,139871564281671],["hdestroy",139871564282080,139871564282092],["v8::debug::Script::SourceURL() const",93957336256000,93957336256350],["v8::debug::Script::SetScriptSource(v8::Local<v8::String>, bool, v8::debug::LiveEditResult*) const",93957336258496,93957336258531],["v8::debug::ForceGarbageCollection(v8::Isolate*, cppgc::EmbedderStackState)",93957336259168,93957336259203],["v8::debug::WasmScript::Bytecode() const",93957336259552,93957336259713],["v8::debug::Location::Location(int, int)",93957336259824,93957336259839],["v8::debug::GetLoadedScripts(v8::Isolate*, v8::PersistentValueVector<v8::debug::Script, v8::DefaultPersistentValueVectorTraits>&)",93957336259872,93957336260308],["v8::debug::TierDownAllModulesPerIsolate(v8::Isolate*)",93957336260768,93957336260788],["v8::debug::SetDebugDelegate(v8::Isolate*, v8::debug::DebugDelegate*)",93957336260832,93957336260849],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::CopyTypedArrayElementsSlice(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338501568,93957338503607],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338513504,93957338513688],["v8::internal::ClosureFeedbackCellArray::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957338517152,93957338517403],["v8::internal::FeedbackVector::InitializeOptimizationState()",93957338518592,93957338518617],["v8::internal::FeedbackNexus::FeedbackNexus(v8::internal::FeedbackVector, v8::internal::FeedbackSlot)",93957338520416,93957338520556],["v8::internal::FeedbackNexus::ConfigureMegamorphic(v8::internal::IcCheckType)",93957338521200,93957338521411],["v8::internal::FeedbackNexus::GetBinaryOperationFeedback() const",93957338523024,93957338523089],["v8::internal::FeedbackNexus::ConfigureLexicalVarMode(int, int, bool)",93957338523376,93957338523624],["v8::internal::FeedbackNexus::SetSpeculationMode(v8::internal::SpeculationMode)",93957338526064,93957338526276],["v8::internal::FeedbackNexus::ComputeCallFrequency()",93957338526336,93957338526437],["v8::internal::FeedbackNexus::ConfigurePolymorphic(v8::internal::Handle<v8::internal::Name>, std::__1::vector<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle>, std::__1::allocator<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle> > > const&)",93957338527024,93957338527720],["v8::internal::FeedbackIterator::Advance()",93957338528336,93957338528412],["v8::internal::FeedbackNexus::ExtractMapsAndHandlers(std::__1::vector<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle>, std::__1::allocator<std::__1::pair<v8::internal::Handle<v8::internal::Map>, v8::internal::MaybeObjectHandle> > >*, std::__1::function<v8::internal::MaybeHandle<v8::internal::Map> (v8::internal::Handle<v8::internal::Map>)>) const",93957338528912,93957338529403],["v8::internal::FeedbackNexus::GetName() const",93957338529600,93957338529805],["v8::internal::FeedbackNexus::GetKeyType() const",93957338530256,93957338530409],["v8::internal::FeedbackNexus::GetConstructorFeedback() const",93957338531312,93957338531495],["v8::internal::compiler::ScaleMatcher<v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23>, v8::internal::compiler::IntMatcher<long, (v8::internal::compiler::IrOpcode::Value)23> >, (v8::internal::compiler::IrOpcode::Value)334, (v8::internal::compiler::IrOpcode::Value)325>::ScaleMatcher(v8::internal::compiler::Node*, bool)",93957342076688,93957342077123],["v8::internal::compiler::InstructionSelector::VisitWord32ReverseBytes(v8::internal::compiler::Node*)",93957342079456,93957342079609],["v8::internal::compiler::OperandGenerator::TempImmediate(int)",93957342083120,93957342083170],["v8::internal::compiler::(anonymous namespace)::VisitMul(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342084512,93957342084999],["v8::internal::compiler::InstructionSelector::VisitInt32MulHigh(v8::internal::compiler::Node*)",93957342085184,93957342085199],["v8::internal::compiler::InstructionSelector::VisitInt32Div(v8::internal::compiler::Node*)",93957342085536,93957342085551],["v8::internal::compiler::InstructionSelector::VisitInt64Div(v8::internal::compiler::Node*)",93957342085824,93957342085839],["v8::internal::compiler::InstructionSelector::VisitUint64Div(v8::internal::compiler::Node*)",93957342085856,93957342085871],["remap_file_pages",139871564279120,139871564279156],["ecvt",139871564279536,139871564279570],["ecvt_r",139871564280304,139871564280706],["qecvt",139871564280880,139871564280922],["v8::debug::CanBreakProgram(v8::Isolate*)",93957336254896,93957336254967],["v8::debug::Script::IsWasm() const",93957336257136,93957336257157],["v8::debug::Location::GetColumnNumber() const",93957336258432,93957336258441],["v8::debug::Script::SetBreakpointOnScriptEntry(int*) const",93957336258688,93957336258994],["v8::debug::GetCurrentPlatform()",93957336259152,93957336259162],["v8::debug::WasmScript::Cast(v8::debug::Script*)",93957336259216,93957336259260],["v8::debug::WasmScript::ExternalSymbolsURL() const",93957336259328,93957336259543],["v8::debug::WasmScript::GetContainingFunction(int) const",93957336259728,93957336259776],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::Reverse(v8::internal::JSObject)",93957338492928,93957338493012],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338509504,93957338509803],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338512720,93957338513019],["v8::internal::EmbedderDataArray::EnsureCapacity(v8::internal::Isolate*, v8::internal::Handle<v8::internal::EmbedderDataArray>, int)",93957338514752,93957338514829],["v8::internal::FeedbackMetadata::HasTypeProfileSlot() const",93957338517024,93957338517055],["v8::internal::FeedbackVector::AddToVectorsForProfilingTools(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FeedbackVector>)",93957338517904,93957338518082],["v8::internal::FeedbackVector::ClearOptimizationMarker()",93957338518544,93957338518557],["v8::internal::FeedbackVector::ClearSlots(v8::internal::Isolate*)",93957338518912,93957338519417],["v8::internal::FeedbackNexus::FeedbackNexus(v8::internal::Handle<v8::internal::FeedbackVector>, v8::internal::FeedbackSlot)",93957338520256,93957338520403],["v8::internal::FeedbackNexus::FeedbackNexus(v8::internal::Handle<v8::internal::FeedbackVector>, v8::internal::FeedbackSlot, v8::internal::NexusConfig const&)",93957338520560,93957338520684],["v8::internal::FeedbackNexus::ConfigureMegamorphic()",93957338521072,93957338521198],["v8::internal::FeedbackNexus::GetFeedbackPair() const",93957338521424,93957338521959],["v8::internal::FeedbackNexus::ic_state() const",93957338522048,93957338523023],["v8::internal::FeedbackNexus::GetCompareOperationFeedback() const",93957338523104,93957338523227],["v8::internal::FeedbackNexus::ConfigurePropertyCellMode(v8::internal::Handle<v8::internal::PropertyCell>)",93957338523280,93957338523363],["v8::internal::FeedbackNexus::ConfigureHandlerMode(v8::internal::MaybeObjectHandle const&)",93957338523632,93957338523760],["v8::internal::compiler::InstructionSelector::VisitWord64Or(v8::internal::compiler::Node*)",93957342073712,93957342073795],["v8::internal::compiler::(anonymous namespace)::TryMatchLoadWord64AndShiftRight(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, unsigned int)",93957342078032,93957342078778],["v8::internal::compiler::InstructionSelector::VisitWord64Ror(v8::internal::compiler::Node*)",93957342079280,93957342079295],["v8::internal::compiler::InstructionSelector::VisitInt64Add(v8::internal::compiler::Node*)",93957342080464,93957342080970],["v8::internal::compiler::InstructionSelector::VisitInt32Sub(v8::internal::compiler::Node*)",93957342082160,93957342083120],["v8::internal::compiler::InstructionSelector::VisitInt64Sub(v8::internal::compiler::Node*)",93957342083184,93957342083905],["v8::internal::compiler::InstructionSelector::VisitInt32Mul(v8::internal::compiler::Node*)",93957342084080,93957342084509],["v8::internal::compiler::InstructionSelector::VisitInt32MulWithOverflow(v8::internal::compiler::Node*)",93957342085008,93957342085162],["__mprotect",139871564278816,139871564278849],["munlock",139871564279216,139871564279249],["fcvt",139871564279360,139871564279531],["gcvt",139871564279584,139871564279626],["v8::debug::(anonymous namespace)::CollectPrivateMethodsAndAccessorsFromContext(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>, v8::internal::IsStaticFlag, std::__1::vector<v8::Local<v8::Value>, std::__1::allocator<v8::Local<v8::Value> > >*, std::__1::vector<v8::Local<v8::Value>, std::__1::allocator<v8::Local<v8::Value> > >*)",93957336253888,93957336254424],["v8::debug::Script::LineOffset() const",93957336255072,93957336255086],["v8::debug::Script::ContextId() const",93957336256704,93957336256770],["v8::debug::Script::GetPossibleBreakpoints(v8::debug::Location const&, v8::debug::Location const&, bool, std::__1::vector<v8::debug::BreakLocation, std::__1::allocator<v8::debug::BreakLocation> >*) const",93957336257184,93957336258028],["v8::debug::(anonymous namespace)::CompareBreakLocation(v8::internal::BreakLocation const&, v8::internal::BreakLocation const&)",93957336258416,93957336258431],["v8::debug::Script::GetSourceLocation(int) const",93957336258448,93957336258491],["v8::debug::Script::SetBreakpoint(v8::Local<v8::String>, v8::debug::Location*, int*) const",93957336258544,93957336258682],["v8::debug::Script::RemoveWasmBreakpoint(int)",93957336259008,93957336259037],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)22, int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)22> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338488224,93957338488240],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338499296,93957338499372],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)25, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)25> >::CopyElements(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, unsigned long, unsigned long)",93957338504160,93957338505121],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338510288,93957338510472],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338512144,93957338512181],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338513088,93957338513276],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::CopyElements(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, unsigned long, unsigned long)",93957338513840,93957338514477],["v8::internal::Handle<v8::internal::FeedbackMetadata> v8::internal::FeedbackMetadata::New<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::FeedbackVectorSpec const*)",93957338515072,93957338515289],["v8::internal::FeedbackMetadata::GetKind(v8::internal::FeedbackSlot) const",93957338516960,93957338517013],["v8::internal::FeedbackVector::GetKind(v8::internal::FeedbackSlot) const",93957338517056,93957338517139],["v8::internal::FeedbackVector::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::ClosureFeedbackCellArray>, v8::internal::IsCompiledScope*)",93957338517408,93957338517894],["v8::internal::FeedbackVector::SaturatingIncrementProfilerTicks()",93957338518096,93957338518122],["v8::internal::FeedbackVector::SetInterruptBudget(v8::internal::FeedbackCell)",93957338518448,93957338518535],["v8::internal::FeedbackVector::SetOptimizationMarker(v8::internal::OptimizationMarker)",93957338518560,93957338518580],["v8::internal::FeedbackVector::EvictOptimizedCodeMarkedForDeoptimization(v8::internal::FeedbackCell, v8::internal::SharedFunctionInfo, char const*)",93957338518624,93957338518903],["v8::internal::NexusConfig::NewHandle(v8::internal::MaybeObject) const",93957338519424,93957338519766],["v8::internal::compiler::InstructionSelector::VisitStore(v8::internal::compiler::Node*)",93957342070912,93957342071689],["v8::internal::compiler::X64OperandGenerator::CanBeMemoryOperand(unsigned int, v8::internal::compiler::Node*, v8::internal::compiler::Node*, int)",93957342074848,93957342075028],["v8::internal::compiler::InstructionSelector::VisitWord32Shr(v8::internal::compiler::Node*)",93957342077952,93957342077967],["v8::internal::compiler::InstructionSelector::VisitWord64Sar(v8::internal::compiler::Node*)",93957342079168,93957342079220],["v8::internal::compiler::InstructionSelector::VisitWord32Ror(v8::internal::compiler::Node*)",93957342079264,93957342079279],["v8::internal::compiler::InstructionSelector::VisitWord64ReverseBytes(v8::internal::compiler::Node*)",93957342079296,93957342079449],["v8::internal::compiler::InstructionSelector::VisitInt32Add(v8::internal::compiler::Node*)",93957342079616,93957342080460],["v8::internal::compiler::InstructionSelector::VisitInt64AddWithOverflow(v8::internal::compiler::Node*)",93957342080976,93957342081130],["syscall",139871564278176,139871564278227],["__madvise",139871564279024,139871564279057],["mlock",139871564279168,139871564279201],["mlockall",139871564279264,139871564279297],["v8::debug::SetContextId(v8::Local<v8::Context>, int)",93957336250400,93957336250417],["v8::debug::PrepareStep(v8::Isolate*, v8::debug::StepAction)",93957336254592,93957336254698],["v8::debug::Script::IsEmbedded() const",93957336255008,93957336255042],["v8::debug::Script::LineEnds() const",93957336255104,93957336255643],["v8::debug::Script::SourceMappingURL() const",93957336256352,93957336256702],["v8::debug::Script::Source() const",93957336256784,93957336257134],["v8::debug::Script::IsModule() const",93957336257168,93957336257183],["v8::debug::Location::IsEmpty() const",93957336258032,93957336258041],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)20, short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)20> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338479504,93957338479726],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338490320,93957338490336],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>::GetInternalImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338498128,93957338498343],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338500128,93957338500359],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)25, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)25> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338503840,93957338503973],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338508928,93957338508965],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338509872,93957338510060],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::Reverse(v8::internal::JSObject)",93957338510624,93957338510699],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::CopyTypedArrayElementsSlice(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338511616,93957338512142],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338512192,93957338512718],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338513024,93957338513076],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338513280,93957338513504],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338513696,93957338513831],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)27, long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)27> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338514480,93957338514739],["v8::internal::Handle<v8::internal::FeedbackMetadata> v8::internal::FeedbackMetadata::New<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::FeedbackVectorSpec const*)",93957338514832,93957338515067],["v8::internal::FeedbackVectorSpec::AddSlot(v8::internal::FeedbackSlotKind)",93957338515296,93957338516412],["v8::internal::compiler::InstructionSelector::VisitStackSlot(v8::internal::compiler::Node*)",93957342068224,93957342068483],["v8::internal::compiler::InstructionSelector::VisitWord32And(v8::internal::compiler::Node*)",93957342072672,93957342073053],["v8::internal::compiler::InstructionSelector::VisitWord64Xor(v8::internal::compiler::Node*)",93957342074080,93957342074500],["v8::internal::compiler::(anonymous namespace)::VisitWord32Shift(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342075472,93957342075958],["v8::internal::compiler::(anonymous namespace)::VisitWord64Shift(v8::internal::compiler::InstructionSelector*, v8::internal::compiler::Node*, v8::internal::compiler::ArchOpcode)",93957342077136,93957342077946],["v8::internal::compiler::InstructionSelector::VisitWord64Shr(v8::internal::compiler::Node*)",93957342077968,93957342078020],["v8::internal::compiler::InstructionSelector::VisitWord32Sar(v8::internal::compiler::Node*)",93957342078784,93957342079154],["v8::internal::compiler::InstructionSelector::VisitWord32Rol(v8::internal::compiler::Node*)",93957342079232,93957342079247],["__vsyslog_chk",139871564277712,139871564277736],["__mmap",139871564278592,139871564278757],["msync",139871564278864,139871564279019],["mincore",139871564279072,139871564279105],["v8::internal::FrameInspector::~FrameInspector()",93957336249600,93957336249680],["v8::debug::SetBreakOnNextFunctionCall(v8::Isolate*)",93957336250496,93957336250513],["v8::debug::ChangeBreakOnException(v8::Isolate*, v8::debug::ExceptionBreakState)",93957336254496,93957336254560],["v8::debug::BreakRightNow(v8::Isolate*)",93957336254768,93957336254821],["v8::debug::Script::WasCompiled() const",93957336254976,93957336254993],["v8::debug::Script::Id() const",93957336255056,93957336255070],["v8::debug::Script::ColumnOffset() const",93957336255088,93957336255102],["v8::debug::Script::Name() const",93957336255648,93957336255998],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338469984,93957338470089],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338482240,93957338482520],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)22, int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)22> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338489456,93957338489677],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338491520,93957338492074],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338494000,93957338494244],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338498368,93957338499023],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338499568,93957338499880],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::CopyElements(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, unsigned long, unsigned long)",93957338500448,93957338501303],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>::GetInternalImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338503616,93957338503827],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)25, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)25> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338503984,93957338504149],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)25, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)25> >::CopyTypedArrayElementsSlice(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338505136,93957338508919],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338508976,93957338509502],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338509808,93957338509860],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338510064,93957338510288],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338510480,93957338510615],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)26> >::CopyElements(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, unsigned long, unsigned long)",93957338510704,93957338511341],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand>::emit<&v8::internal::Assembler::vpmovsxbw, &v8::internal::Assembler::pmovsxbw>(v8::internal::XMMRegister, v8::internal::Operand)",93957342067296,93957342067384],["v8::internal::compiler::X64OperandGenerator::GetEffectiveAddressMemoryOperand(v8::internal::compiler::Node*, v8::internal::compiler::InstructionOperand*, unsigned long*)",93957342069392,93957342070390],["v8::internal::compiler::InstructionSelector::VisitProtectedStore(v8::internal::compiler::Node*)",93957342071904,93957342072335],["v8::internal::compiler::InstructionSelector::VisitWord64And(v8::internal::compiler::Node*)",93957342073520,93957342073603],["v8::internal::compiler::InstructionSelector::VisitWord32Xor(v8::internal::compiler::Node*)",93957342073808,93957342074078],["v8::internal::compiler::InstructionSelector::VisitStackPointerGreaterThan(v8::internal::compiler::Node*, v8::internal::compiler::FlagsContinuation*)",93957342074512,93957342074836],["v8::internal::compiler::InstructionSelector::VisitWord32Shl(v8::internal::compiler::Node*)",93957342075040,93957342075469],["v8::internal::compiler::InstructionSelector::VisitWord64Shl(v8::internal::compiler::Node*)",93957342075968,93957342076673],["ttyslot",139871564275136,139871564275372],["closelog",139871564277920,139871564278141],["daemon",139871564278240,139871564278590],["__munmap",139871564278768,139871564278801],["v8::internal::DebugEvaluate::Local(v8::internal::Isolate*, v8::internal::StackFrameId, int, v8::internal::Handle<v8::internal::String>, bool)",93957336244288,93957336245532],["v8::internal::FrameInspector::IsWasm()",93957336250048,93957336250068],["v8::debug::SetInspector(v8::Isolate*, v8_inspector::V8Inspector*)",93957336250464,93957336250477],["v8::debug::GetInternalProperties(v8::Isolate*, v8::Local<v8::Value>)",93957336250560,93957336250604],["v8::debug::GetCreationContext(v8::Local<v8::Object>)",93957336254432,93957336254484],["v8::debug::SetBreakPointsActive(v8::Isolate*, bool)",93957336254560,93957336254589],["v8::debug::ClearStepping(v8::Isolate*)",93957336254704,93957336254755],["v8::debug::SetTerminateOnResume(v8::Isolate*)",93957336254832,93957336254883],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338461280,93957338461605],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::Reverse(v8::internal::JSObject)",93957338472800,93957338472880],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338480320,93957338480975],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::CopyElements(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, unsigned long, unsigned long)",93957338483040,93957338484154],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)22, int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)22> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338488896,93957338489154],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)22, int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)22> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338489888,93957338490132],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338490992,93957338491250],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338492432,93957338492676],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::CopyElements(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, unsigned long, unsigned long)",93957338493024,93957338493990],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::CopyTypedArrayElementsSlice(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338494256,93957338498117],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338498352,93957338498368],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338499024,93957338499282],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338499376,93957338499562],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338499888,93957338500117],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::Reverse(v8::internal::JSObject)",93957338500368,93957338500447],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)24> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338501312,93957338501556],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpsignb, &v8::internal::Assembler::psignb>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342066480,93957342066577],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand, unsigned char>::emit<&v8::internal::Assembler::vpshufhw, &v8::internal::Assembler::pshufhw>(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957342067680,93957342067787],["v8::internal::compiler::InstructionSelector::VisitAbortCSAAssert(v8::internal::compiler::Node*)",93957342068816,93957342068930],["v8::internal::compiler::InstructionSelector::VisitLoad(v8::internal::compiler::Node*, v8::internal::compiler::Node*, unsigned int)",93957342070496,93957342070733],["v8::internal::compiler::X64OperandGenerator::GetEffectiveIndexOperand(v8::internal::compiler::Node*, v8::internal::compiler::AddressingMode*)",93957342071696,93957342071890],["v8::internal::compiler::InstructionSelector::VisitStoreLane(v8::internal::compiler::Node*)",93957342072336,93957342072665],["v8::internal::compiler::BinopMatcher<v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22>, v8::internal::compiler::IntMatcher<int, (v8::internal::compiler::IrOpcode::Value)22> >::BinopMatcher(v8::internal::compiler::Node*)",93957342073056,93957342073518],["v8::internal::compiler::InstructionSelector::VisitWord32Or(v8::internal::compiler::Node*)",93957342073616,93957342073699],["getusershell",139871564274432,139871564274515],["vsyslog",139871564277504,139871564277511],["openlog",139871564277744,139871564277906],["setlogmask",139871564278144,139871564278161],["void std::__1::vector<v8::internal::CoverageScript, std::__1::allocator<v8::internal::CoverageScript> >::__emplace_back_slow_path<v8::internal::Handle<v8::internal::Script>&>(v8::internal::Handle<v8::internal::Script>&)",93957336237344,93957336237804],["v8::internal::DebugEvaluate::FunctionGetSideEffectState(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336247712,93957336248755],["v8::internal::FrameInspector::GetExpression(int)",93957336249808,93957336249927],["v8::internal::RedirectActiveFunctions::RedirectActiveFunctions(v8::internal::SharedFunctionInfo, v8::internal::RedirectActiveFunctions::Mode)",93957336250112,93957336250135],["v8::debug::GetContextId(v8::Local<v8::Context>)",93957336250432,93957336250459],["v8::debug::GetInspector(v8::Isolate*)",93957336250480,93957336250493],["v8::debug::ClearBreakOnNextFunctionCall(v8::Isolate*)",93957336250528,93957336250545],["v8::debug::GetPrivateMembers(v8::Local<v8::Context>, v8::Local<v8::Object>, std::__1::vector<v8::Local<v8::Value>, std::__1::allocator<v8::Local<v8::Value> > >*, std::__1::vector<v8::Local<v8::Value>, std::__1::allocator<v8::Local<v8::Value> > >*)",93957336250608,93957336253880],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338456288,93957338456584],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338467728,93957338467775],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338471424,93957338472092],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)20, short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)20> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338478096,93957338478201],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)20, short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)20> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338479952,93957338480290],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338481248,93957338481560],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338482752,93957338482959],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::CopyTypedArrayElementsSlice(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338484416,93957338488059],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)22, int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)22> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338488240,93957338488895],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)22, int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)22> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338489168,93957338489448],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)22, int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)22> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338489680,93957338489887],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)22, int>::GetInternalImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338490144,93957338490308],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338490336,93957338490991],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338491264,93957338491517],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338492080,93957338492425],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)23> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338492688,93957338492923],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpsubw, &v8::internal::Assembler::psubw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065584,93957342065670],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmaxub, &v8::internal::Assembler::pmaxub>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342066896,93957342066982],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand>::emit<&v8::internal::Assembler::vpmovsxwd, &v8::internal::Assembler::pmovsxwd>(v8::internal::XMMRegister, v8::internal::Operand)",93957342067488,93957342067576],["v8::internal::compiler::InstructionScheduler::GetTargetInstructionFlags(v8::internal::compiler::Instruction const*) const",93957342067904,93957342068086],["v8::internal::compiler::InstructionSequence::AddImmediate(v8::internal::compiler::Constant const&)",93957342068496,93957342068816],["v8::internal::compiler::InstructionSelector::VisitLoadLane(v8::internal::compiler::Node*)",93957342068944,93957342069386],["v8::internal::compiler::InstructionSelector::VisitLoadTransform(v8::internal::compiler::Node*)",93957342070400,93957342070487],["v8::internal::compiler::InstructionSelector::VisitPoisonedLoad(v8::internal::compiler::Node*)",93957342070736,93957342070910],["getttyent",139871564273424,139871564273503],["setusershell",139871564274608,139871564274629],["syslog",139871564277312,139871564277491],["__syslog_chk",139871564277520,139871564277708],["void std::__1::vector<v8::HeapStatsUpdate, std::__1::allocator<v8::HeapStatsUpdate> >::__emplace_back_slow_path<unsigned int, unsigned int&, unsigned int&>(unsigned int&&, unsigned int&, unsigned int&)",93957336231216,93957336231519],["unsigned int std::__1::__sort5<std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*>(v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&)",93957336241664,93957336242357],["v8::internal::DebugEvaluate::WithTopmostArguments(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957336246160,93957336246937],["void std::__1::vector<v8::JitCodeEvent::line_info_t, std::__1::allocator<v8::JitCodeEvent::line_info_t> >::__push_back_slow_path<v8::JitCodeEvent::line_info_t>(v8::JitCodeEvent::line_info_t&&)",93957336248992,93957336249284],["v8::internal::FrameInspector::GetParameter(int)",93957336249680,93957336249799],["v8::internal::FrameInspector::GetContext()",93957336249936,93957336250046],["v8::internal::FrameInspector::IsJavaScript()",93957336250080,93957336250103],["v8::internal::RedirectActiveFunctions::VisitThread(v8::internal::Isolate*, v8::internal::ThreadLocalTop*)",93957336250144,93957336250394],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338449536,93957338449714],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338458048,93957338458094],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::Reverse(v8::internal::JSObject)",93957338462320,93957338462399],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)18, signed char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)18> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338468896,93957338469176],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338470736,93957338471089],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338472384,93957338472590],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338474000,93957338474338],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)20, short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)20> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338478848,93957338479201],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)20, short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)20> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338479728,93957338479952],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338480304,93957338480320],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338480976,93957338481234],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338481568,93957338482235],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338482528,93957338482749],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::Reverse(v8::internal::JSObject)",93957338482960,93957338483036],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)21> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338484160,93957338484404],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>::GetInternalImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338488064,93957338488222],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmaxsd, &v8::internal::Assembler::pmaxsd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342064704,93957342064801],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpminuw, &v8::internal::Assembler::pminuw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342066000,93957342066097],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpsllw, &v8::internal::Assembler::psllw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342066688,93957342066774],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpabsb, &v8::internal::Assembler::pabsb>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342067088,93957342067185],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand>::emit<&v8::internal::Assembler::vpmovzxbw, &v8::internal::Assembler::pmovzxbw>(v8::internal::XMMRegister, v8::internal::Operand)",93957342067392,93957342067480],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand>::emit<&v8::internal::Assembler::vpmovzxwd, &v8::internal::Assembler::pmovzxwd>(v8::internal::XMMRegister, v8::internal::Operand)",93957342067584,93957342067672],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand, unsigned char>::emit<&v8::internal::Assembler::vpblendw, &v8::internal::Assembler::pblendw>(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957342067792,93957342067899],["v8::internal::compiler::InstructionScheduler::GetInstructionLatency(v8::internal::compiler::Instruction const*)",93957342068096,93957342068216],["chflags",139871564272240,139871564272268],["getttynam",139871564273600,139871564273748],["endusershell",139871564274528,139871564274594],["getpass",139871564274640,139871564275134],["v8::internal::DateParser::ReadMilliseconds(v8::internal::DateParser::DateToken)",93957336201008,93957336201396],["void std::__1::__sort<bool (*&)(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&), v8::internal::CoverageBlock*>(v8::internal::CoverageBlock*, v8::internal::CoverageBlock*, bool (*&)(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&))",93957336232464,93957336234906],["unsigned int std::__1::__sort3<std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*>(v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&)",93957336240288,93957336241105],["void std::__1::vector<v8::internal::CoverageFunction, std::__1::allocator<v8::internal::CoverageFunction> >::__emplace_back_slow_path<v8::internal::CoverageFunction&>(v8::internal::CoverageFunction&)",93957336243152,93957336243816],["v8::internal::DebugEvaluate::ContextBuilder::UpdateValues()",93957336245536,93957336246156],["v8::internal::DebugEvaluate::ContextBuilder::ContextBuilder(v8::internal::Isolate*, v8::internal::JavaScriptFrame*, int)",93957336246944,93957336247709],["v8::internal::DebugEvaluate::ApplySideEffectChecks(v8::internal::Handle<v8::internal::BytecodeArray>)",93957336248768,93957336248985],["v8::internal::FrameInspector::FrameInspector(v8::internal::CommonFrame*, int, v8::internal::Isolate*)",93957336249296,93957336249599],["v8::internal::(anonymous namespace)::SloppyArgumentsElementsAccessor<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::DirectCollectElementIndicesImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter, v8::internal::Handle<v8::internal::FixedArray>, unsigned int*, unsigned int)",93957338442176,93957338442715],["v8::internal::(anonymous namespace)::StringWrapperElementsAccessor<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338451104,93957338451436],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::GetDetails(v8::internal::JSObject, v8::internal::InternalIndex)",93957338457504,93957338457582],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338458688,93957338459324],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338461904,93957338462109],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338463520,93957338463858],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)18, signed char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)18> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338467888,93957338468524],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)18, signed char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)18> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338469408,93957338469632],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338470096,93957338470732],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338471104,93957338471420],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338472096,93957338472377],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338472592,93957338472800],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::CopyElements(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, unsigned long, unsigned long)",93957338472880,93957338473994],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)19> >::CopyTypedArrayElementsSlice(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338474352,93957338478093],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)20, short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)20> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338478208,93957338478844],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)20, short>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)20> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338479216,93957338479497],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmovsxdq, &v8::internal::Assembler::pmovsxdq>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342063824,93957342063921],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpminud, &v8::internal::Assembler::pminud>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065136,93957342065233],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmovzxbw, &v8::internal::Assembler::pmovzxbw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065776,93957342065873],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::Operand, v8::internal::XMMRegister, unsigned char>::emit<&v8::internal::Assembler::vpextrb, &v8::internal::Assembler::pextrb>(v8::internal::Operand, v8::internal::XMMRegister, unsigned char)",93957342066224,93957342066352],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpsubb, &v8::internal::Assembler::psubb>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342066592,93957342066678],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpminsb, &v8::internal::Assembler::pminsb>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342066784,93957342066881],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpminub, &v8::internal::Assembler::pminub>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342066992,93957342067078],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpunpcklqdq, &v8::internal::Assembler::punpcklqdq>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342067200,93957342067286],["futimes",139871564271872,139871564272074],["insque",139871564272304,139871564272352],["setttyent",139871564273504,139871564273598],["endttyent",139871564273760,139871564273818],["v8::internal::DateCache::ProbeDST(int)",93957336199600,93957336200018],["v8::internal::Coverage::SelectMode(v8::internal::Isolate*, v8::debug::CoverageMode)",93957336229056,93957336230122],["std::__1::vector<v8::internal::CoverageBlock, std::__1::allocator<v8::internal::CoverageBlock> >::__append(unsigned long)",93957336231824,93957336232430],["void std::__1::__insertion_sort_3<bool (*&)(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&), v8::internal::CoverageBlock*>(v8::internal::CoverageBlock*, v8::internal::CoverageBlock*, bool (*&)(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&))",93957336235520,93957336236031],["void std::__1::__sort<std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*>(v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&)",93957336237808,93957336240285],["unsigned int std::__1::__sort4<std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*>(v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&)",93957336241120,93957336241651],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*>(v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount*, std::__1::__less<v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount, v8::internal::(anonymous namespace)::SharedFunctionInfoAndCount>&)",93957336242368,93957336243138],["v8::internal::DebugEvaluate::Global(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::debug::EvaluateGlobalMode, v8::internal::REPLMode)",93957336243824,93957336244283],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::NumberOfElements(v8::internal::JSObject)",93957338435024,93957338435205],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338446528,93957338447827],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::Reconfigure(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338450080,93957338450469],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::NumberOfElements(v8::internal::JSObject)",93957338452128,93957338452163],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338456976,93957338457169],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338457648,93957338457696],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::GetCapacity(v8::internal::JSObject, v8::internal::FixedArrayBase)",93957338458208,93957338458246],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338460592,93957338460945],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338461616,93957338461896],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::LastIndexOfValue(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long)",93957338462112,93957338462320],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::CopyElements(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, unsigned long, unsigned long)",93957338462400,93957338463514],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::CopyTypedArrayElementsSlice(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338463872,93957338467719],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)18, signed char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)18> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338467776,93957338467881],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)18, signed char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)18> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338468528,93957338468881],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)18, signed char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)18> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338469184,93957338469405],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)18, signed char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)18> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338469632,93957338469970],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char>::emit<&v8::internal::Assembler::vinsertps, &v8::internal::Assembler::insertps>(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957342063088,93957342063194],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmovsxwd, &v8::internal::Assembler::pmovsxwd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342064272,93957342064369],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmovzxwd, &v8::internal::Assembler::pmovzxwd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342064912,93957342065009],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmovsxbw, &v8::internal::Assembler::pmovsxbw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065360,93957342065457],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpminsw, &v8::internal::Assembler::pminsw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065680,93957342065766],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmaxuw, &v8::internal::Assembler::pmaxuw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065888,93957342065985],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpabsw, &v8::internal::Assembler::pabsw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342066112,93957342066209],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::Operand, v8::internal::XMMRegister, unsigned char>::emit<&v8::internal::Assembler::vpextrw, &v8::internal::Assembler::pextrw>(v8::internal::Operand, v8::internal::XMMRegister, unsigned char)",93957342066352,93957342066480],["hasmntopt",139871564271328,139871564271456],["truncate",139871564272144,139871564272178],["fchflags",139871564272272,139871564272297],["remque",139871564272352,139871564272377],["non-virtual thunk to v8::internal::ScavengeJob::Task::~Task()",93957336195936,93957336195971],["v8::internal::DateParser::DayComposer::Write(double*)",93957336200208,93957336200524],["v8::internal::Coverage::Collect(v8::internal::Isolate*, v8::debug::CoverageMode)",93957336201504,93957336229026],["v8::base::TemplateHashMapImpl<v8::internal::SharedFunctionInfo, unsigned int, v8::base::KeyEqualityMatcher<v8::internal::Object>, v8::base::DefaultAllocationPolicy>::Resize()",93957336230368,93957336230756],["void std::__1::vector<v8::internal::ParserBase<v8::internal::PreParser>::DeclarationParsingResult::Declaration, std::__1::allocator<v8::internal::ParserBase<v8::internal::PreParser>::DeclarationParsingResult::Declaration> >::__push_back_slow_path<v8::internal::ParserBase<v8::internal::PreParser>::DeclarationParsingResult::Declaration const&>(v8::internal::ParserBase<v8::internal::PreParser>::DeclarationParsingResult::Declaration const&)",93957336231520,93957336231810],["v8::internal::(anonymous namespace)::CompareCoverageBlock(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&)",93957336232432,93957336232461],["unsigned int std::__1::__sort4<bool (*&)(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&), v8::internal::CoverageBlock*>(v8::internal::CoverageBlock*, v8::internal::CoverageBlock*, v8::internal::CoverageBlock*, v8::internal::CoverageBlock*, bool (*&)(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&))",93957336234912,93957336235510],["bool std::__1::__insertion_sort_incomplete<bool (*&)(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&), v8::internal::CoverageBlock*>(v8::internal::CoverageBlock*, v8::internal::CoverageBlock*, bool (*&)(v8::internal::CoverageBlock const&, v8::internal::CoverageBlock const&))",93957336236032,93957336237333],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::GetDetails(v8::internal::JSObject, v8::internal::InternalIndex)",93957338430400,93957338430432],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338439824,93957338440490],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::NumberOfElements(v8::internal::JSObject)",93957338442912,93957338443105],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338448752,93957338449186],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338449904,93957338450024],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338450528,93957338450763],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338451712,93957338452097],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338452464,93957338454855],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338456592,93957338456964],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338457184,93957338457493],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::Reconfigure(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338457584,93957338457641],["v8::internal::(anonymous namespace)::StringWrapperElementsAccessor<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::GetInternalImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338457696,93957338458045],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338458096,93957338458201],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338458256,93957338458673],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338459328,93957338460591],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338460960,93957338461273],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand>::emit<&v8::internal::Assembler::vmovups, &v8::internal::Assembler::movups>(v8::internal::XMMRegister, v8::internal::Operand)",93957342062512,93957342062566],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vrsqrtps, &v8::internal::Assembler::rsqrtps>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342063440,93957342063499],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vcmpeqps, &v8::internal::Assembler::cmpeqps>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342064048,93957342064132],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpminsd, &v8::internal::Assembler::pminsd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342064496,93957342064593],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpaddd, &v8::internal::Assembler::paddd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342064816,93957342064902],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmaxud, &v8::internal::Assembler::pmaxud>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065024,93957342065121],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpabsd, &v8::internal::Assembler::pabsd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065248,93957342065345],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpsignw, &v8::internal::Assembler::psignw>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342065472,93957342065569],["getmntent",139871564269008,139871564269088],["utimes",139871564271600,139871564271634],["futimesat",139871564272080,139871564272136],["ftruncate",139871564272192,139871564272226],["v8::internal::OptimizingCompileDispatcher::Stop()",93957336194192,93957336194206],["v8::internal::DateCache::DaysFromYearMonth(int, int)",93957336197168,93957336197378],["v8::internal::DateCache::~DateCache()",93957336200096,93957336200147],["v8::internal::DateParser::TimeZoneComposer::Write(double*)",93957336200736,93957336200851],["v8::internal::Coverage::CollectPrecise(v8::internal::Isolate*)",93957336201408,93957336201492],["v8::internal::Coverage::CollectBestEffort(v8::internal::Isolate*)",93957336229040,93957336229052],["v8::base::TemplateHashMapEntry<v8::internal::SharedFunctionInfo, unsigned int> v8::base::TemplateHashMapImpl<v8::internal::SharedFunctionInfo, unsigned int, v8::base::KeyEqualityMatcher<v8::internal::Object>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<v8::internal::SharedFunctionInfo, v8::base::TemplateHashMapImpl<v8::internal::SharedFunctionInfo, unsigned int, v8::base::KeyEqualityMatcher<v8::internal::Object>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<v8::internal::SharedToCounterMap::Add(v8::internal::SharedFunctionInfo, unsigned int)::{lambda()#1}>(v8::internal::SharedFunctionInfo const&, unsigned int, v8::internal::SharedToCounterMap::Add(v8::internal::SharedFunctionInfo, unsigned int)::{lambda()#1} const&)::{lambda()#1}, {lambda()#1}>(v8::internal::SharedFunctionInfo const, unsigned int, v8::base::TemplateHashMapImpl<v8::internal::SharedFunctionInfo, unsigned int, v8::base::KeyEqualityMatcher<v8::internal::Object>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<v8::internal::SharedToCounterMap::Add(v8::internal::SharedFunctionInfo, unsigned int)::{lambda()#1}>(v8::internal::SharedFunctionInfo const&, unsigned int, v8::internal::SharedToCounterMap::Add(v8::internal::SharedFunctionInfo, unsigned int)::{lambda()#1} const&)::{lambda()#1} const&, {lambda()#1} const&)",93957336230128,93957336230356],["v8::internal::(anonymous namespace)::CoverageBlockIterator::Next()",93957336230768,93957336231205],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338423328,93957338423360],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::ConvertElementsWithCapacity(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, unsigned int)",93957338432720,93957338432977],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338437920,93957338438352],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338440656,93957338440963],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::HasEntry(v8::internal::JSObject, v8::internal::InternalIndex)",93957338442864,93957338442882],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338444112,93957338444400],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338448144,93957338448728],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338449376,93957338449489],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338449728,93957338449891],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::GetDetails(v8::internal::JSObject, v8::internal::InternalIndex)",93957338450032,93957338450068],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338450480,93957338450528],["v8::internal::(anonymous namespace)::StringWrapperElementsAccessor<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::GetInternalImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338450768,93957338451099],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::ConvertElementsWithCapacity(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, unsigned int)",93957338451440,93957338451697],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338452112,93957338452128],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338452176,93957338452464],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)16> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338454864,93957338456273],["v8::internal::compiler::(anonymous namespace)::OutOfLineRecordWrite::Generate()",93957342061312,93957342061642],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vcvtps2pd, &v8::internal::Assembler::cvtps2pd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342062832,93957342062891],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vsqrtps, &v8::internal::Assembler::sqrtps>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342063312,93957342063371],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode>::emit<&v8::internal::Assembler::vroundpd, &v8::internal::Assembler::roundpd>(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode)",93957342063616,93957342063725],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpmovzxdq, &v8::internal::Assembler::pmovzxdq>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342063936,93957342064033],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, unsigned char>::emit<&v8::internal::Assembler::vpsrad, &v8::internal::Assembler::psrad>(v8::internal::XMMRegister, unsigned char)",93957342064144,93957342064266],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpsignd, &v8::internal::Assembler::psignd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342064384,93957342064481],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vcmpleps, &v8::internal::Assembler::cmpleps>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342064608,93957342064695],["getfsent",139871564268656,139871564268716],["__endmntent",139871564270048,139871564270086],["__getmntent_r",139871564271456,139871564271591],["lutimes",139871564271648,139871564271866],["std::__1::__tree<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > >, std::__1::__map_value_compare<unsigned long, std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > >, std::__1::less<unsigned long>, true>, std::__1::allocator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > > > >::erase(std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > >, std::__1::__tree_node<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > >, void*>*, long>)",93957336192576,93957336192757],["v8::internal::CancelableTask::~CancelableTask()",93957336195184,93957336195194],["v8::internal::DateCache::TimeClip(double)",93957336196368,93957336196492],["v8::internal::DateCache::GetLocalOffsetFromOS(long, bool)",93957336197728,93957336197917],["v8::internal::DateCache::~DateCache()",93957336200032,93957336200087],["v8::internal::DateCache::GetDaylightSavingsOffsetFromOS(long)",93957336200160,93957336200195],["v8::internal::DateParser::TimeComposer::Write(double*)",93957336200528,93957336200723],["v8::internal::DateParser::KeywordTable::Lookup(unsigned int const*, int)",93957336200864,93957336200998],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338416784,93957338416805],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338427328,93957338427727],["v8::internal::(anonymous namespace)::SloppyArgumentsElementsAccessor<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::GetImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, v8::internal::InternalIndex)",93957338431168,93957338431427],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338434672,93957338434711],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338435248,93957338437173],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338438784,93957338439207],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::GetDetails(v8::internal::JSObject, v8::internal::InternalIndex)",93957338440528,93957338440610],["v8::internal::(anonymous namespace)::SloppyArgumentsElementsAccessor<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::GetImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, v8::internal::InternalIndex)",93957338441392,93957338441832],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338442720,93957338442855],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338442896,93957338442912],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338443120,93957338444099],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338444400,93957338446523],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338447840,93957338448136],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338448736,93957338448751],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338449200,93957338449370],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastStringWrapperElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)15> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338449504,93957338449529],["v8::internal::compiler::InstructionOperandConverter::ToExternalReference(v8::internal::compiler::InstructionOperand*)",93957342059568,93957342059733],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vsqrtsd, &v8::internal::Assembler::sqrtsd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342062112,93957342062198],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vaddpd, &v8::internal::Assembler::addpd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342062656,93957342062742],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vmovshdup, &v8::internal::Assembler::movshdup>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342062976,93957342063007],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand, unsigned char>::emit<&v8::internal::Assembler::vinsertps, &v8::internal::Assembler::insertps>(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957342063200,93957342063307],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vrcpps, &v8::internal::Assembler::rcpps>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342063376,93957342063435],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode>::emit<&v8::internal::Assembler::vroundps, &v8::internal::Assembler::roundps>(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode)",93957342063504,93957342063613],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vpsubq, &v8::internal::Assembler::psubq>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342063728,93957342063814],["gtty",139871564267840,139871564267868],["getfsfile",139871564268816,139871564268916],["__setmntent",139871564269904,139871564270034],["addmntent",139871564270096,139871564271325],["v8::internal::CompilerDispatcher::AbortJob(unsigned long)",93957336189152,93957336189457],["v8::internal::(anonymous namespace)::DisposeCompilationJob(v8::internal::OptimizedCompilationJob*, bool)",93957336193264,93957336193624],["v8::internal::OptimizingCompileDispatcher::QueueForOptimization(v8::internal::OptimizedCompilationJob*)",93957336194736,93957336194975],["v8::internal::OptimizingCompileDispatcher::CompileTask::RunInternal()",93957336195232,93957336195913],["v8::internal::DateCache::DateCache()",93957336195984,93957336196356],["v8::internal::DateCache::YearMonthDayFromDays(int, int*, int*, int*)",93957336196496,93957336197161],["v8::internal::DateCache::BreakDownTime(long, int*, int*, int*, int*, int*, int*, int*, int*)",93957336197392,93957336197719],["v8::internal::DateCache::DaylightSavingsOffsetInMs(long)",93957336197920,93957336199595],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338411040,93957338411280],["v8::internal::(anonymous namespace)::DictionaryElementsAccessor::CollectElementIndicesImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338420288,93957338421027],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338425712,93957338426469],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338428384,93957338429206],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338430592,93957338430918],["v8::internal::(anonymous namespace)::SloppyArgumentsElementsAccessor<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::DirectCollectElementIndicesImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter, v8::internal::Handle<v8::internal::FixedArray>, unsigned int*, unsigned int)",93957338431776,93957338432334],["v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor::ReconfigureImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338433504,93957338434393],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338434832,93957338434864],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338435216,93957338435245],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338437184,93957338437909],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338438352,93957338438776],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338439216,93957338439815],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338440496,93957338440517],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::Reconfigure(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338440624,93957338440649],["v8::internal::(anonymous namespace)::SloppyArgumentsElementsAccessor<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::GetEntryForIndexImpl(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long, v8::internal::PropertyFilter)",93957338440976,93957338441390],["v8::internal::(anonymous namespace)::SloppyArgumentsElementsAccessor<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::CollectElementIndicesImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338441840,93957338442166],["v8::internal::compiler::CodeGenerator::FinishCode()",93957342053696,93957342053713],["v8::internal::compiler::(anonymous namespace)::WasmOutOfLineTrap::Generate()",93957342060000,93957342060176],["v8::internal::compiler::(anonymous namespace)::OutOfLineLoadFloat32NaN::Generate()",93957342061760,93957342061917],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode>::emit<&v8::internal::Assembler::vroundsd, &v8::internal::Assembler::roundsd>(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode)",93957342062304,93957342062413],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vsqrtpd, &v8::internal::Assembler::sqrtpd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342062576,93957342062641],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vcvtdq2pd, &v8::internal::Assembler::cvtdq2pd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342062752,93957342062821],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vcvtpd2ps, &v8::internal::Assembler::cvtpd2ps>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342062896,93957342062961],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vmovhlps, &v8::internal::Assembler::movhlps>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342063008,93957342063085],["mkstemps",139871564267520,139871564267556],["ptrace",139871564267904,139871564268090],["getfsspec",139871564268720,139871564268812],["endfsent",139871564268928,139871564268969],["v8::internal::CompilerDispatcher::~CompilerDispatcher()",93957336185456,93957336185819],["std::__1::__tree<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > >, std::__1::__map_value_compare<unsigned long, std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > >, std::__1::less<unsigned long>, true>, std::__1::allocator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > > > >::destroy(std::__1::__tree_node<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> > >, void*>*)",93957336191536,93957336191652],["v8::internal::OptimizingCompileDispatcher::CompileNext(v8::internal::OptimizedCompilationJob*, v8::internal::RuntimeCallStats*, v8::internal::LocalIsolate*)",93957336192864,93957336193059],["v8::internal::OptimizingCompileDispatcher::Unblock()",93957336193872,93957336194099],["v8::internal::OptimizingCompileDispatcher::InstallOptimizedFunctions()",93957336194208,93957336194722],["std::__1::__deque_base<unsigned long, std::__1::allocator<unsigned long> >::~__deque_base()",93957336194976,93957336195183],["v8::internal::ScavengeJob::Task::~Task()",93957336195200,93957336195228],["non-virtual thunk to v8::internal::ScavengeJob::Task::~Task()",93957336195920,93957336195934],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338406704,93957338406820],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338412624,93957338412653],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::GetDetails(v8::internal::JSObject, v8::internal::InternalIndex)",93957338420112,93957338420171],["v8::internal::(anonymous namespace)::IncludesValueSlowPath(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338422448,93957338422800],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338423728,93957338423757],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338426864,93957338426879],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338428128,93957338428327],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338430080,93957338430243],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::Reconfigure(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338430432,93957338430591],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338430928,93957338431163],["v8::internal::(anonymous namespace)::SloppyArgumentsElementsAccessor<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::CollectElementIndicesImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338431440,93957338431766],["v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338432336,93957338432717],["v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor::NormalizeArgumentsElements(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::SloppyArgumentsElements>, v8::internal::InternalIndex*)",93957338432992,93957338433504],["v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor::SloppyDeleteImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::SloppyArgumentsElements>, v8::internal::InternalIndex)",93957338434400,93957338434662],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::HasEntry(v8::internal::JSObject, v8::internal::InternalIndex)",93957338434720,93957338434822],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::SlowSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)14> >::HasAccessors(v8::internal::JSObject)",93957338434864,93957338435022],["void v8::internal::TurboAssembler::Ptest<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342049696,93957342049790],["v8::internal::compiler::CodeGenerator::AssembleSwap(v8::internal::compiler::InstructionOperand*, v8::internal::compiler::InstructionOperand*)",93957342056832,93957342059152],["v8::internal::compiler::(anonymous namespace)::WasmOutOfLineTrap::~WasmOutOfLineTrap()",93957342059904,93957342059927],["std::__1::__deque_base<v8::internal::compiler::DeoptimizationLiteral, v8::internal::RecyclingZoneAllocator<v8::internal::compiler::DeoptimizationLiteral> >::~__deque_base()",93957342060528,93957342060853],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode>::emit<&v8::internal::Assembler::vroundss, &v8::internal::Assembler::roundss>(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode)",93957342061648,93957342061757],["v8::internal::compiler::(anonymous namespace)::OutOfLineLoadFloat64NaN::Generate()",93957342061920,93957342062103],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand>::emit<&v8::internal::Assembler::vsqrtsd, &v8::internal::Assembler::sqrtsd>(v8::internal::XMMRegister, v8::internal::Operand)",93957342062208,93957342062298],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::XMMRegister>::emit<&v8::internal::Assembler::vsubsd, &v8::internal::Assembler::subsd>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342062416,93957342062502],["__mktemp",139871564267408,139871564267442],["ualarm",139871564267616,139871564267740],["stty",139871564267872,139871564267900],["setfsent",139871564268512,139871564268652],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)1, false>::Close(v8::internal::Isolate*, bool)",93957336184864,93957336184888],["v8::internal::CompilerDispatcher::IsEnqueued(v8::internal::Handle<v8::internal::SharedFunctionInfo>) const",93957336187296,93957336187419],["v8::internal::CompilerDispatcher::DoBackgroundWork()",93957336189744,93957336190628],["void std::__1::__function::__policy_invoker<void (double)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CompilerDispatcher::ScheduleIdleTaskFromAnyThread(v8::base::LockGuard<v8::base::Mutex, (v8::base::NullBehavior)0> const&)::$_0, void (double)> >(std::__1::__function::__policy_storage const*, double)",93957336192544,93957336192557],["v8::internal::OptimizingCompileDispatcher::~OptimizingCompileDispatcher()",93957336192768,93957336192851],["v8::internal::OptimizingCompileDispatcher::FlushOutputQueue(bool)",93957336193072,93957336193251],["v8::internal::OptimizingCompileDispatcher::FlushQueues(v8::internal::BlockingBehavior, bool)",93957336193632,93957336193863],["v8::internal::OptimizingCompileDispatcher::Flush(v8::internal::BlockingBehavior)",93957336194112,93957336194189],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)8> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338401568,93957338401583],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338408960,93957338409200],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338412160,93957338412289],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338415664,93957338416172],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338418576,93957338419820],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338420208,93957338420224],["v8::internal::(anonymous namespace)::DictionaryElementsAccessor::AddElementsToKeyAccumulatorImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338421696,93957338422004],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338423056,93957338423224],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::NumberOfElements(v8::internal::JSObject)",93957338423360,93957338423716],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338423760,93957338425697],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338426480,93957338426863],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338426880,93957338427314],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338427728,93957338428125],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::GetCapacity(v8::internal::JSObject, v8::internal::FixedArrayBase)",93957338428336,93957338428371],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338429216,93957338430072],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338430256,93957338430399],["void v8::internal::TurboAssembler::Psraw<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342048848,93957342048931],["v8::internal::compiler::CodeGenerator::AssembleArchTrap(v8::internal::compiler::Instruction*, v8::internal::compiler::FlagsCondition)",93957342050576,93957342050938],["v8::internal::compiler::CodeGenerator::AssembleMove(v8::internal::compiler::InstructionOperand*, v8::internal::compiler::InstructionOperand*)",93957342053952,93957342056313],["v8::internal::compiler::CodeGenerator::~CodeGenerator()",93957342059232,93957342059534],["v8::internal::compiler::InstructionOperandConverter::ToRpoNumber(v8::internal::compiler::InstructionOperand*)",93957342059744,93957342059899],["v8::internal::compiler::(anonymous namespace)::WasmProtectedInstructionTrap::Generate()",93957342059936,93957342059986],["v8::internal::compiler::(anonymous namespace)::WasmOutOfLineTrap::GenerateWithTrapId(v8::internal::compiler::TrapId)",93957342060176,93957342060524],["v8::internal::compiler::(anonymous namespace)::OutOfLineTruncateDoubleToI::Generate()",93957342060864,93957342061300],["revoke",139871564267232,139871564267252],["mkdtemp",139871564267472,139871564267503],["mkostemps",139871564267568,139871564267604],["usleep",139871564267744,139871564267839],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)0, false>::~PerIsolateAssertScope()",93957336184640,93957336184658],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)2, false>::Close(v8::internal::Isolate*, bool)",93957336184992,93957336185016],["v8::internal::CompilerDispatcher::InsertJob(std::__1::unique_ptr<v8::internal::CompilerDispatcher::Job, std::__1::default_delete<v8::internal::CompilerDispatcher::Job> >)",93957336186528,93957336186798],["v8::internal::CompilerDispatcher::WaitForJobIfRunningOnBackground(v8::internal::CompilerDispatcher::Job*)",93957336187824,93957336188453],["v8::internal::CompilerDispatcher::AbortAll()",93957336189472,93957336189729],["v8::internal::CompilerDispatcher::DoIdleWork(double)",93957336190640,93957336191533],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::Zone const*, void*>*>, bool> std::__1::__hash_table<v8::internal::Zone const*, std::__1::hash<v8::internal::Zone const*>, std::__1::equal_to<v8::internal::Zone const*>, std::__1::allocator<v8::internal::Zone const*> >::__emplace_unique_key_args<v8::internal::Zone const*, v8::internal::Zone const* const&>(v8::internal::Zone const* const&, v8::internal::Zone const* const&)",93957336191664,93957336192532],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::CompilerDispatcher::ScheduleMoreWorkerTasksIfNeeded()::$_1, void ()> >(std::__1::__function::__policy_storage const*)",93957336192560,93957336192573],["v8::internal::(anonymous namespace)::FastNonextensibleObjectElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::SetLengthImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, unsigned int, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338394480,93957338395246],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338404384,93957338405064],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338407968,93957338408683],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338410336,93957338410767],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338411712,93957338412075],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::NumberOfElements(v8::internal::JSObject)",93957338412464,93957338412492],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338414912,93957338415621],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338416384,93957338416584],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338416816,93957338418561],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338419824,93957338420106],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::Reconfigure(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338420176,93957338420201],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338420224,93957338420284],["v8::internal::(anonymous namespace)::DictionaryElementsAccessor::DirectCollectElementIndicesImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter, v8::internal::Handle<v8::internal::FixedArray>, unsigned int*, unsigned int)",93957338421040,93957338421693],["v8::internal::(anonymous namespace)::DictionaryElementsAccessor::AddImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338422016,93957338422439],["v8::internal::(anonymous namespace)::DictionaryElementsAccessor::DeleteImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338422800,93957338423052],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastSloppyArgumentsElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)13> >::HasEntry(v8::internal::JSObject, v8::internal::InternalIndex)",93957338423232,93957338423314],["void v8::internal::TurboAssembler::Pextrb<v8::internal::Register, v8::internal::XMMRegister, unsigned char>(v8::internal::Register, v8::internal::XMMRegister, unsigned char)",93957342047904,93957342048031],["void v8::internal::TurboAssembler::Pshufd<v8::internal::XMMRegister, v8::internal::Operand, unsigned char>(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957342049264,93957342049371],["v8::internal::compiler::CodeGenerator::AssembleBranchPoisoning(v8::internal::compiler::FlagsCondition, v8::internal::compiler::Instruction*)",93957342050016,93957342050137],["v8::internal::compiler::CodeGenerator::FinishFrame(v8::internal::compiler::Frame*)",93957342051392,93957342051698],["v8::internal::compiler::CodeGenerator::IncrementStackAccessCounter(v8::internal::compiler::InstructionOperand*, v8::internal::compiler::InstructionOperand*)",93957342053728,93957342053942],["v8::internal::compiler::CodeGenerator::AssembleMove(v8::internal::compiler::InstructionOperand*, v8::internal::compiler::InstructionOperand*)::$_1::operator()(v8::internal::Register, v8::internal::compiler::Constant) const",93957342056320,93957342056822],["v8::internal::compiler::CodeGenerator::AssembleJumpTable(v8::internal::Label**, unsigned long)",93957342059152,93957342059230],["v8::internal::compiler::CodeGenerator::~CodeGenerator()",93957342059536,93957342059564],["syncfs",139871564266448,139871564266481],["swapon",139871564267312,139871564267345],["mkstemp",139871564267456,139871564267467],["mkostemp",139871564267504,139871564267515],["v8::internal::TurboAssemblerBase::RootRegisterOffsetForRootIndex(v8::internal::RootIndex)",93957336183248,93957336183261],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)0, true>::IsAllowed(v8::internal::Isolate*)",93957336184768,93957336184782],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)2, false>::IsAllowed(v8::internal::Isolate*)",93957336184928,93957336184945],["v8::internal::CompilerDispatcher::CompilerDispatcher(v8::internal::Isolate*, v8::Platform*, unsigned long)",93957336185056,93957336185430],["v8::internal::CompilerDispatcher::Enqueue(v8::internal::ParseInfo const*, v8::internal::AstRawString const*, v8::internal::FunctionLiteral const*)",93957336185824,93957336186517],["v8::internal::CompilerDispatcher::ScheduleMoreWorkerTasksIfNeeded()",93957336186800,93957336187295],["v8::internal::CompilerDispatcher::RegisterSharedFunctionInfo(unsigned long, v8::internal::SharedFunctionInfo)",93957336187424,93957336187820],["v8::internal::CompilerDispatcher::FinishNow(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336188464,93957336189147],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::SetLengthImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, unsigned int, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338387984,93957338388867],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338398416,93957338398843],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)8> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338403584,93957338403626],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338405904,93957338405946],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338407520,93957338407535],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338408832,93957338408874],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338409632,93957338410312],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338410912,93957338410954],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338411280,93957338411702],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::HasEntry(v8::internal::JSObject, v8::internal::InternalIndex)",93957338412080,93957338412147],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::HasAccessors(v8::internal::JSObject)",93957338412304,93957338412462],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338412496,93957338412624],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338412656,93957338414902],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338415632,93957338415650],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338416176,93957338416380],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338416592,93957338416771],["void v8::internal::TurboAssembler::Cvttps2dq<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342047088,93957342047154],["void v8::internal::TurboAssembler::Packuswb<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342048432,93957342048515],["void v8::internal::TurboAssembler::Psrlw<v8::internal::XMMRegister, unsigned char>(v8::internal::XMMRegister, unsigned char)",93957342049040,93957342049162],["void v8::internal::TurboAssembler::Pshufhw<v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char>(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957342049488,93957342049594],["v8::internal::compiler::CodeGenerator::AssembleArchBranch(v8::internal::compiler::Instruction*, v8::internal::compiler::BranchInfo*)",93957342049792,93957342050001],["v8::internal::compiler::CodeGenerator::AssembleArchDeoptBranch(v8::internal::compiler::Instruction*, v8::internal::compiler::BranchInfo*)",93957342050144,93957342050563],["v8::internal::compiler::CodeGenerator::AssembleArchBoolean(v8::internal::compiler::Instruction*, v8::internal::compiler::FlagsCondition)",93957342050944,93957342051379],["v8::internal::compiler::CodeGenerator::AssembleConstructFrame()",93957342051712,93957342053689],["chroot",139871564266064,139871564266097],["gethostid",139871564266560,139871564267017],["vhangup",139871564267264,139871564267297],["swapoff",139871564267360,139871564267393],["v8::internal::TickCounter::AttachLocalHeap(v8::internal::LocalHeap*)",93957336182432,93957336182442],["v8::internal::UnoptimizedCompilationInfo::scope() const",93957336184512,93957336184526],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)0, false>::Close(v8::internal::Isolate*, bool)",93957336184704,93957336184727],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)1, false>::IsAllowed(v8::internal::Isolate*)",93957336184816,93957336184832],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)1, true>::Open(v8::internal::Isolate*, bool*)",93957336184896,93957336184926],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)2, false>::Open(v8::internal::Isolate*, bool*)",93957336184960,93957336184991],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)2, true>::Open(v8::internal::Isolate*, bool*)",93957336185024,93957336185055],["v8::internal::CompilerDispatcher::IsEnabled() const",93957336185440,93957336185455],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::NumberOfElements(v8::internal::JSObject)",93957338382336,93957338382515],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338391888,93957338392796],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::RemoveElement(v8::internal::Handle<v8::internal::JSArray>, v8::internal::(anonymous namespace)::Where)",93957338396960,93957338397270],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338399360,93957338399600],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338402016,93957338403194],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastPackedSealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)8> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338403712,93957338403952],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338405088,93957338405519],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338406032,93957338406272],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338406832,93957338407512],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338407536,93957338407967],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338408688,93957338408825],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338408880,93957338408954],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338409200,93957338409622],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338410320,93957338410335],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338410768,93957338410905],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)11> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338410960,93957338411034],["void v8::internal::TurboAssembler::Subps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046352,93957342046408],["void v8::internal::TurboAssembler::Pcmpeqw<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342047584,93957342047667],["void v8::internal::TurboAssembler::Psllw<v8::internal::XMMRegister, unsigned char>(v8::internal::XMMRegister, unsigned char)",93957342048208,93957342048330],["void v8::internal::TurboAssembler::Punpcklbw<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342048624,93957342048707],["void v8::internal::TurboAssembler::Pcmpeqb<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342048944,93957342049027],["void v8::internal::TurboAssembler::Por<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342049168,93957342049251],["void v8::internal::TurboAssembler::Pshuflw<v8::internal::XMMRegister, v8::internal::Operand, unsigned char>(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957342049376,93957342049483],["void v8::internal::TurboAssembler::Packusdw<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342049600,93957342049694],["setdomainname",139871564265504,139871564265537],["sync",139871564266256,139871564266289],["reboot",139871564266496,139871564266546],["sethostid",139871564267024,139871564267226],["v8::internal::SourcePosition::InliningStack(v8::internal::Handle<v8::internal::Code>) const",93957336180032,93957336180657],["v8::internal::TurboAssemblerBase::IndirectLoadExternalReference(v8::internal::Register, v8::internal::ExternalReference)",93957336182912,93957336183092],["v8_inspector::InjectedScript::Scope::~Scope()",93957336184048,93957336184054],["v8::internal::UnoptimizedCompilationInfo::SourcePositionRecordingMode() const",93957336184560,93957336184596],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)0, false>::Open(v8::internal::Isolate*, bool*)",93957336184672,93957336184700],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)0, true>::PerIsolateAssertScope(v8::internal::Isolate*)",93957336184736,93957336184763],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)0, true>::Open(v8::internal::Isolate*, bool*)",93957336184784,93957336184812],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)1, false>::Open(v8::internal::Isolate*, bool*)",93957336184832,93957336184862],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338375232,93957338375757],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Push(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338386176,93957338386322],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338390624,93957338390746],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338393232,93957338393603],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338396272,93957338396512],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338397968,93957338397983],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338399232,93957338399274],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338400032,93957338400871],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)8> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338401584,93957338402015],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)8> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338403200,93957338403571],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)8> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338403632,93957338403706],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)8> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338403952,93957338404374],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338405072,93957338405087],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338405520,93957338405891],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338405952,93957338406026],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)9> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338406272,93957338406694],["void v8::internal::TurboAssembler::Pblendw<v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char>(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957342045728,93957342045834],["void v8::internal::TurboAssembler::Pmuludq<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046704,93957342046787],["void v8::internal::TurboAssembler::Pextrw<v8::internal::Register, v8::internal::XMMRegister, unsigned char>(v8::internal::Register, v8::internal::XMMRegister, unsigned char)",93957342047280,93957342047407],["void v8::internal::TurboAssembler::Pmovmskb<v8::internal::Register, v8::internal::XMMRegister>(v8::internal::Register, v8::internal::XMMRegister)",93957342047776,93957342047804],["v8::internal::compiler::InstructionOperandConverter::InputInt3(unsigned long)",93957342048032,93957342048207],["void v8::internal::TurboAssembler::Psrlw<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342048336,93957342048419],["void v8::internal::TurboAssembler::Punpckhbw<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342048528,93957342048611],["void v8::internal::TurboAssembler::Psraw<v8::internal::XMMRegister, unsigned char>(v8::internal::XMMRegister, unsigned char)",93957342048720,93957342048842],["getdtablesize",139871564264816,139871564264886],["pselect",139871564265728,139871564266008],["fsync",139871564266112,139871564266251],["fdatasync",139871564266304,139871564266443],["v8::internal::SourcePositionTableIterator::Advance()",93957336178400,93957336178792],["v8::internal::SourcePositionInfo::SourcePositionInfo(v8::internal::SourcePosition, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336181568,93957336181910],["v8::internal::TurboAssemblerBase::TurboAssemblerBase(v8::internal::Isolate*, v8::internal::AssemblerOptions const&, v8::internal::CodeObjectRequired, std::__1::unique_ptr<v8::internal::AssemblerBuffer, std::__1::default_delete<v8::internal::AssemblerBuffer> >)",93957336182464,93957336182624],["v8::internal::TurboAssemblerBase::RootRegisterOffsetForExternalReference(v8::internal::Isolate*, v8::internal::ExternalReference const&)",93957336183136,93957336183148],["v8::internal::TurboAssemblerBase::RecordCommentForOffHeapTrampoline(int)",93957336183264,93957336184039],["v8::internal::UnoptimizedCompilationInfo::UnoptimizedCompilationInfo(v8::internal::Zone*, v8::internal::ParseInfo*, v8::internal::FunctionLiteral*)",93957336184064,93957336184512],["v8::internal::UnoptimizedCompilationInfo::num_parameters_including_this() const",93957336184528,93957336184551],["v8::internal::PerIsolateAssertScope<(v8::internal::PerIsolateAssertType)0, false>::PerIsolateAssertScope(v8::internal::Isolate*)",93957336184608,93957336184635],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338370768,93957338371310],["v8::internal::(anonymous namespace)::CopyDoubleToDoubleElements(v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, unsigned int, int)",93957338378800,93957338379358],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338384768,93957338385082],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338386528,93957338386882],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::AddArguments(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::BuiltinArguments*, unsigned int, v8::internal::(anonymous namespace)::Where)",93957338389312,93957338390365],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338391440,93957338391455],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::Shift(v8::internal::Handle<v8::internal::JSArray>)",93957338392832,93957338392847],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338393664,93957338394386],["v8::internal::(anonymous namespace)::DictionaryElementsAccessor::SetLengthImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, unsigned int, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338395248,93957338396259],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338396512,93957338396954],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338397280,93957338397960],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338397984,93957338398415],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338398848,93957338399219],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338399280,93957338399354],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338399600,93957338400022],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSealedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)8> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338400880,93957338401560],["void v8::internal::TurboAssembler::Cmppd<v8::internal::XMMRegister, v8::internal::XMMRegister, signed char>(v8::internal::XMMRegister, v8::internal::XMMRegister, signed char)",93957342044976,93957342045062],["void v8::internal::TurboAssembler::Orps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046064,93957342046120],["void v8::internal::TurboAssembler::Pextrq<v8::internal::Register, v8::internal::XMMRegister, signed char>(v8::internal::Register, v8::internal::XMMRegister, signed char)",93957342046480,93957342046585],["void v8::internal::TurboAssembler::Pcmpeqq<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046896,93957342046990],["void v8::internal::TurboAssembler::Pshuflw<v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char>(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957342047168,93957342047274],["v8::internal::compiler::InstructionOperandConverter::InputInt4(unsigned long)",93957342047408,93957342047583],["void v8::internal::TurboAssembler::Packsswb<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342047680,93957342047763],["void v8::internal::TurboAssembler::Pshufb<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342047808,93957342047899],["setregid",139871564264176,139871564264328],["sethostname",139871564265184,139871564265217],["__select",139871564265552,139871564265723],["acct",139871564266016,139871564266049],["v8::internal::SafepointTableBuilder::Emit(v8::internal::Assembler*, int)",93957336175152,93957336176172],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::SourcePositionInfo const&)",93957336179120,93957336179398],["v8::internal::SourcePosition::PrintJson(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957336181104,93957336181340],["v8::internal::StringConstantBase::GetMaxStringConstantLength() const",93957336182288,93957336182384],["v8::internal::TickCounter::DetachLocalHeap()",93957336182448,93957336182462],["v8::internal::TurboAssemblerBase::IndirectLoadConstant(v8::internal::Register, v8::internal::Handle<v8::internal::HeapObject>)",93957336182624,93957336182902],["v8::internal::TurboAssemblerBase::IsAddressableThroughRootRegister(v8::internal::Isolate*, v8::internal::ExternalReference const&)",93957336183104,93957336183125],["v8::internal::TurboAssemblerBase::RootRegisterOffsetForExternalReferenceTableEntry(v8::internal::Isolate*, v8::internal::ExternalReference const&)",93957336183152,93957336183233],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338364240,93957338364256],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338373696,93957338373839],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::SetLengthImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, unsigned int, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338376832,93957338377715],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::MoveElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, int, int, int, int, int)",93957338381408,93957338381688],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338382656,93957338383125],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338385104,93957338385954],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Pop(v8::internal::Handle<v8::internal::JSArray>)",93957338386480,93957338386498],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338387184,93957338387281],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338388880,93957338389307],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::RemoveElement(v8::internal::Handle<v8::internal::JSArray>, v8::internal::(anonymous namespace)::Where)",93957338390368,93957338390624],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338390752,93957338391432],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338391456,93957338391887],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)7> >::Pop(v8::internal::Handle<v8::internal::JSArray>)",93957338392800,93957338392818],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedFrozenObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)10> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338392848,93957338393222],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338393616,93957338393658],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedNonextensibleObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)6> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338394400,93957338394474],["void v8::internal::TurboAssembler::Movss<v8::internal::Operand, v8::internal::XMMRegister>(v8::internal::Operand, v8::internal::XMMRegister)",93957342044528,93957342044577],["void v8::internal::TurboAssembler::Mulpd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342045360,93957342045443],["void v8::internal::TurboAssembler::Addps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342045936,93957342045992],["void v8::internal::TurboAssembler::Andnps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046224,93957342046280],["void v8::internal::TurboAssembler::Mulps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046416,93957342046472],["void v8::internal::TurboAssembler::Pinsrq<v8::internal::XMMRegister, v8::internal::Register, unsigned char>(v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957342046592,93957342046701],["void v8::internal::TurboAssembler::Paddq<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046800,93957342046883],["void v8::internal::TurboAssembler::Pand<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046992,93957342047075],["pwritev",139871564263136,139871564263309],["setegid",139871564264544,139871564264752],["gethostname",139871564264896,139871564265182],["getdomainname",139871564265232,139871564265500],["v8::internal::SafepointTable::SafepointTable(v8::internal::Isolate*, unsigned long, v8::internal::Code)",93957336173776,93957336173888],["v8::internal::SourcePositionTableBuilder::SourcePositionTableBuilder(v8::internal::Zone*, v8::internal::SourcePositionTableBuilder::RecordingMode)",93957336176928,93957336176974],["v8::internal::SourcePositionTableIterator::SourcePositionTableIterator(v8::internal::Handle<v8::internal::ByteArray>, v8::internal::SourcePositionTableIterator::IterationFilter, v8::internal::SourcePositionTableIterator::FunctionEntryFilter)",93957336178912,93957336179007],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::SourcePosition const&)",93957336179520,93957336179741],["v8::internal::SourcePosition::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::SharedFunctionInfo) const",93957336180672,93957336181091],["v8::internal::SourcePosition::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::Code) const",93957336181344,93957336181557],["v8::internal::StringConstantBase::AllocateStringConstant(v8::internal::Isolate*) const",93957336181920,93957336182283],["v8::internal::TickCounter::TickAndMaybeEnterSafepoint()",93957336182384,93957336182417],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::RemoveElement(v8::internal::Handle<v8::internal::JSArray>, v8::internal::(anonymous namespace)::Where)",93957338360976,93957338361370],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::AddImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338368000,93957338368307],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338372336,93957338373218],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338374320,93957338374603],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338376464,93957338376589],["v8::internal::(anonymous namespace)::FastDoubleElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338378192,93957338378575],["v8::internal::(anonymous namespace)::CopyDictionaryToDoubleElements(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, unsigned int, int)",93957338379648,93957338380287],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::DeleteAtEnd(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedDoubleArray>, unsigned int)",93957338381936,93957338382217],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338382528,93957338382656],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338383136,93957338384759],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338385088,93957338385103],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338385968,93957338386174],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338386336,93957338386479],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Shift(v8::internal::Handle<v8::internal::JSArray>)",93957338386512,93957338386527],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338386896,93957338387179],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338387296,93957338387975],["void v8::internal::TurboAssembler::Movmskpd<v8::internal::Register, v8::internal::XMMRegister>(v8::internal::Register, v8::internal::XMMRegister)",93957342044032,93957342044077],["void v8::internal::TurboAssembler::Movddup<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342044720,93957342044748],["void v8::internal::TurboAssembler::Maxpd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342045168,93957342045251],["void v8::internal::TurboAssembler::Cvtdq2ps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342045568,93957342045624],["void v8::internal::TurboAssembler::Psubd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342045840,93957342045923],["void v8::internal::TurboAssembler::Minps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046000,93957342046056],["void v8::internal::TurboAssembler::Cmpps<v8::internal::XMMRegister, v8::internal::XMMRegister, signed char>(v8::internal::XMMRegister, v8::internal::XMMRegister, signed char)",93957342046128,93957342046214],["void v8::internal::TurboAssembler::Maxps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342046288,93957342046344],["ioctl",139871564262592,139871564262625],["pwritev2",139871564263664,139871564264010],["seteuid",139871564264336,139871564264544],["__getpagesize",139871564264752,139871564264801],["v8::internal::RelocIterator::next()",93957336172368,93957336172838],["v8::internal::SafepointTableBuilder::DefineSafepoint(v8::internal::Assembler*)",93957336174256,93957336174540],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::SourcePositionTableBuilder::ToSourcePositionTable<v8::internal::Isolate>(v8::internal::Isolate*)",93957336176736,93957336176820],["v8::internal::SourcePositionTableBuilder::AddEntry(v8::internal::PositionTableEntry const&)",93957336177056,93957336178305],["v8::internal::SourcePositionTableIterator::SourcePositionTableIterator(v8::internal::ByteArray, v8::internal::SourcePositionTableIterator::IterationFilter, v8::internal::SourcePositionTableIterator::FunctionEntryFilter)",93957336178800,93957336178911],["v8::internal::SourcePositionTableIterator::SourcePositionTableIterator(v8::internal::Vector<unsigned char const>, v8::internal::SourcePositionTableIterator::IterationFilter, v8::internal::SourcePositionTableIterator::FunctionEntryFilter)",93957336179008,93957336179109],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::vector<v8::internal::SourcePositionInfo, std::__1::allocator<v8::internal::SourcePositionInfo> > const&)",93957336179408,93957336179520],["v8::internal::SourcePosition::InliningStack(v8::internal::OptimizedCompilationInfo*) const",93957336179744,93957336180022],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338355440,93957338355749],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338363296,93957338363317],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338365792,93957338366043],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::DeleteImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338369824,93957338370530],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338371616,93957338372320],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338373328,93957338373534],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::Shift(v8::internal::Handle<v8::internal::JSArray>)",93957338374032,93957338374047],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338374976,93957338375173],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338375760,93957338376455],["v8::internal::(anonymous namespace)::FastDoubleElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::GetImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, v8::internal::InternalIndex)",93957338376592,93957338376825],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338377728,93957338378190],["v8::internal::(anonymous namespace)::CopySmiToDoubleElements(v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, unsigned int, int)",93957338378576,93957338378796],["v8::internal::(anonymous namespace)::CopyObjectToDoubleElements(v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, unsigned int, int)",93957338379360,93957338379645],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::AddArguments(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::BuiltinArguments*, unsigned int, v8::internal::(anonymous namespace)::Where)",93957338380288,93957338381402],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::RemoveElement(v8::internal::Handle<v8::internal::JSArray>, v8::internal::(anonymous namespace)::Where)",93957338381696,93957338381931],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338382224,93957338382332],["v8::internal::compiler::UnwindingInfoWriter::MaybeIncreaseBaseOffsetAt(int, int)",93957342043424,93957342043506],["void v8::internal::TurboAssembler::Movd<v8::internal::XMMRegister, v8::internal::Operand>(v8::internal::XMMRegister, v8::internal::Operand)",93957342044224,93957342044252],["void v8::internal::TurboAssembler::Movq<v8::internal::Register, v8::internal::XMMRegister>(v8::internal::Register, v8::internal::XMMRegister)",93957342044624,93957342044652],["void v8::internal::TurboAssembler::Minpd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342044784,93957342044867],["void v8::internal::TurboAssembler::Andnpd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342045072,93957342045155],["void v8::internal::TurboAssembler::Subpd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342045264,93957342045347],["void v8::internal::TurboAssembler::Pshufd<v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char>(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957342045456,93957342045562],["void v8::internal::TurboAssembler::Pxor<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342045632,93957342045715],["nice",139871564262208,139871564262311],["writev",139871564262800,139871564262957],["preadv2",139871564263312,139871564263658],["setreuid",139871564264016,139871564264168],["v8::internal::PendingOptimizationTable::MarkedForOptimization(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957336168896,93957336169483],["v8::internal::RelocIterator::RelocIterator(v8::internal::Vector<unsigned char>, v8::internal::Vector<unsigned char const>, unsigned long, int)",93957336173456,93957336173522],["v8::internal::SafepointTable::find_return_pc(unsigned int)",93957336173936,93957336174020],["v8::internal::SafepointTableBuilder::GetCodeOffset() const",93957336174848,93957336174857],["v8::internal::SafepointTableBuilder::RemoveDuplicates()",93957336176176,93957336176729],["v8::internal::Handle<v8::internal::ByteArray> v8::internal::SourcePositionTableBuilder::ToSourcePositionTable<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957336176832,93957336176917],["v8::internal::SourcePositionTableBuilder::AddPosition(unsigned long, v8::internal::SourcePosition, bool)",93957336176976,93957336177047],["v8::internal::SourcePositionTableBuilder::ToSourcePositionTableVector()",93957336178320,93957336178397],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Shift(v8::internal::Handle<v8::internal::JSArray>)",93957338349488,93957338349503],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338357280,93957338357322],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338362112,93957338362130],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::Shift(v8::internal::Handle<v8::internal::JSArray>)",93957338363664,93957338363679],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::SetLengthImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, unsigned int, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338364336,93957338365347],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::DirectCollectElementIndicesImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter, v8::internal::Handle<v8::internal::FixedArray>, unsigned int*, unsigned int)",93957338366544,93957338367584],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::RemoveElement(v8::internal::Handle<v8::internal::JSArray>, v8::internal::(anonymous namespace)::Where)",93957338369072,93957338369486],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338370608,93957338370640],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338371312,93957338371610],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338372320,93957338372335],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338373232,93957338373325],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::Push(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338373536,93957338373682],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::Pop(v8::internal::Handle<v8::internal::JSArray>)",93957338373840,93957338374017],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338374048,93957338374305],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338374608,93957338374966],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338375184,93957338375225],["v8::internal::compiler::InstructionOperandConverter::InputInt6(unsigned long)",93957342042800,93957342042975],["void v8::internal::TurboAssembler::Movmskps<v8::internal::Register, v8::internal::XMMRegister>(v8::internal::Register, v8::internal::XMMRegister)",93957342043760,93957342043805],["void v8::internal::TurboAssembler::Movd<v8::internal::Register, v8::internal::XMMRegister>(v8::internal::Register, v8::internal::XMMRegister)",93957342044160,93957342044188],["void v8::internal::TurboAssembler::Xorpd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342044304,93957342044387],["void v8::internal::TurboAssembler::Movq<v8::internal::XMMRegister, v8::internal::Register>(v8::internal::XMMRegister, v8::internal::Register)",93957342044592,93957342044620],["void v8::internal::TurboAssembler::Movups<v8::internal::Operand, v8::internal::XMMRegister>(v8::internal::Operand, v8::internal::XMMRegister)",93957342044656,93957342044705],["void v8::internal::TurboAssembler::Movddup<v8::internal::XMMRegister, v8::internal::Operand>(v8::internal::XMMRegister, v8::internal::Operand)",93957342044752,93957342044780],["void v8::internal::TurboAssembler::Orpd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342044880,93957342044963],["vlimit",139871564261632,139871564261770],["__sbrk",139871564262416,139871564262552],["readv",139871564262640,139871564262797],["preadv",139871564262960,139871564263133],["v8::internal::OptimizedCompilationInfo::SetWasmCompilationResult(std::__1::unique_ptr<v8::internal::wasm::WasmCompilationResult, std::__1::default_delete<v8::internal::wasm::WasmCompilationResult> >)",93957336167376,93957336167482],["v8::internal::RegisterConfiguration::RestrictGeneralRegisters(unsigned int)",93957336170592,93957336171620],["v8::internal::RelocIterator::RelocIterator(v8::internal::Code, v8::internal::ByteArray, int)",93957336173056,93957336173241],["v8::internal::RelocInfo::set_wasm_call_address(unsigned long, v8::internal::ICacheFlushMode)",93957336173568,93957336173599],["v8::internal::SafepointTable::SafepointTable(v8::internal::wasm::WasmCode const*)",93957336173888,93957336173936],["v8::internal::SafepointTable::FindEntry(unsigned long) const",93957336174032,93957336174255],["v8::internal::ZoneChunkList<v8::internal::GDBJITInterface::ELFSymbol>::push_back(v8::internal::GDBJITInterface::ELFSymbol const&)",93957336174544,93957336174835],["v8::internal::SafepointTableBuilder::UpdateDeoptimizationInfo(int, int, int, unsigned int)",93957336174864,93957336175143],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::RemoveElement(v8::internal::Handle<v8::internal::JSArray>, v8::internal::(anonymous namespace)::Where)",93957338343840,93957338344234],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338352304,93957338352726],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::Shift(v8::internal::Handle<v8::internal::JSArray>)",93957338356096,93957338356111],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338359168,93957338359610],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338361504,93957338361533],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338362832,93957338362847],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338363488,93957338363631],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338363808,93957338364192],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338364256,93957338364330],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338365360,93957338365782],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::CollectElementIndicesImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338366048,93957338366536],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::AddElementsToKeyAccumulatorImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338367584,93957338368000],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::AddArguments(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::BuiltinArguments*, unsigned int, v8::internal::(anonymous namespace)::Where)",93957338368320,93957338369067],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::NormalizeImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338369488,93957338369819],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)5> >::HasEntry(v8::internal::JSObject, v8::internal::InternalIndex)",93957338370544,93957338370596],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedDoubleElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)4> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338370640,93957338370768],["v8::internal::compiler::CodeGenerator::AssembleReturn(v8::internal::compiler::InstructionOperand*)",93957342038048,93957342039872],["void v8::internal::TurboAssembler::Andps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342043136,93957342043192],["void v8::internal::TurboAssembler::Movsd<v8::internal::XMMRegister, v8::internal::Operand>(v8::internal::XMMRegister, v8::internal::Operand)",93957342043584,93957342043648],["void v8::internal::TurboAssembler::Movss<v8::internal::XMMRegister, v8::internal::Operand>(v8::internal::XMMRegister, v8::internal::Operand)",93957342043856,93957342043907],["void v8::internal::TurboAssembler::Movsd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342044080,93957342044146],["void v8::internal::TurboAssembler::Movd<v8::internal::XMMRegister, v8::internal::Register>(v8::internal::XMMRegister, v8::internal::Register)",93957342044192,93957342044220],["void v8::internal::TurboAssembler::Movaps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342044256,93957342044301],["v8::internal::compiler::(anonymous namespace)::EmitOOLTrapIfNeeded(v8::internal::Zone*, v8::internal::compiler::CodeGenerator*, unsigned int, v8::internal::compiler::Instruction*, int)",93957342044400,93957342044516],["__getrlimit",139871564261136,139871564261186],["getpriority",139871564262096,139871564262146],["brk",139871564262320,139871564262412],["sstk",139871564262560,139871564262582],["v8::internal::OptimizedCompilationInfo::OptimizedCompilationInfo(v8::internal::Vector<char const>, v8::internal::Zone*, v8::internal::CodeKind)",93957336166304,93957336166592],["v8::internal::OptimizedCompilationInfo::AddInlinedFunction(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::BytecodeArray>, v8::internal::SourcePosition)",93957336167600,93957336167733],["v8::internal::RegisterConfiguration::Default()",93957336169952,93957336170233],["v8::internal::(anonymous namespace)::RestrictedRegisterConfiguration::~RestrictedRegisterConfiguration()",93957336171728,93957336171817],["v8::internal::RelocIterator::RelocIterator(v8::internal::Code, int)",93957336172848,93957336173048],["v8::internal::RelocIterator::RelocIterator(v8::internal::EmbeddedData*, v8::internal::Code, int)",93957336173248,93957336173456],["v8::internal::RelocInfo::wasm_call_address() const",93957336173536,93957336173555],["v8::internal::RelocInfo::set_target_address(unsigned long, v8::internal::WriteBarrierMode, v8::internal::ICacheFlushMode)",93957336173600,93957336173766],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338332656,93957338332717],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338347280,93957338347696],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::GetEntryForIndex(v8::internal::Isolate*, v8::internal::JSObject, v8::internal::FixedArrayBase, unsigned long)",93957338350384,93957338350472],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338354144,93957338354272],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338355920,93957338356063],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338356496,93957338357041],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338358064,93957338358138],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::AddArguments(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::BuiltinArguments*, unsigned int, v8::internal::(anonymous namespace)::Where)",93957338359872,93957338360651],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338361376,93957338361504],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338361536,93957338362099],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338362144,93957338362824],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338362848,93957338363282],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::Push(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338363328,93957338363474],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::Pop(v8::internal::Handle<v8::internal::JSArray>)",93957338363632,93957338363650],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338363680,93957338363800],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338364192,93957338364234],["v8::internal::compiler::CodeGenerator::AssembleRegisterArgumentPoisoning()",93957341957328,93957341957437],["v8::internal::compiler::InstructionOperandConverter::InputInt32(unsigned long)",93957342042032,93957342042203],["void v8::internal::TurboAssembler::Ucomiss<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342043008,93957342043036],["void v8::internal::TurboAssembler::Ucomisd<v8::internal::XMMRegister, v8::internal::Operand>(v8::internal::XMMRegister, v8::internal::Operand)",93957342043264,93957342043347],["void v8::internal::TurboAssembler::Movsd<v8::internal::Operand, v8::internal::XMMRegister>(v8::internal::Operand, v8::internal::XMMRegister)",93957342043520,93957342043582],["v8::internal::compiler::(anonymous namespace)::OutOfLineLoadFloat32NaN* v8::internal::Zone::New<v8::internal::compiler::(anonymous namespace)::OutOfLineLoadFloat32NaN, v8::internal::compiler::CodeGenerator*, v8::internal::XMMRegister>(v8::internal::compiler::CodeGenerator*&&, v8::internal::XMMRegister&&)",93957342043648,93957342043746],["void v8::internal::TurboAssembler::Movss<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342043808,93957342043853],["v8::internal::compiler::(anonymous namespace)::OutOfLineLoadFloat64NaN* v8::internal::Zone::New<v8::internal::compiler::(anonymous namespace)::OutOfLineLoadFloat64NaN, v8::internal::compiler::CodeGenerator*, v8::internal::XMMRegister>(v8::internal::compiler::CodeGenerator*&&, v8::internal::XMMRegister&&)",93957342043920,93957342044018],["tcflush",139871564260816,139871564260830],["getrusage",139871564261264,139871564261297],["vtimes",139871564262032,139871564262084],["setpriority",139871564262160,139871564262193],["v8::internal::WasmI64AtomicWait64Descriptor::ParameterTypes()",93957336165104,93957336165120],["v8::internal::OptimizedCompilationInfo::RetryOptimization(v8::internal::BailoutReason)",93957336167152,93957336167167],["v8::internal::OptimizedCompilationInfo::context() const",93957336167520,93957336167552],["v8::internal::PendingOptimizationTable::PreparedForOptimization(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, bool)",93957336168032,93957336168501],["v8::internal::PendingOptimizationTable::FunctionWasOptimized(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957336169488,93957336169948],["v8::internal::RegisterConfiguration::Poisoning()",93957336170240,93957336170582],["v8::internal::(anonymous namespace)::RestrictedRegisterConfiguration::~RestrictedRegisterConfiguration()",93957336171632,93957336171716],["v8::internal::RelocInfoWriter::Write(v8::internal::RelocInfo const*)",93957336171824,93957336172366],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338328592,93957338329272],["v8::internal::(anonymous namespace)::CopyDictionaryToObjectElements(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int)",93957338336656,93957338337404],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::NumberOfElements(v8::internal::JSObject)",93957338344880,93957338345072],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338348832,93957338349141],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338349952,93957338350336],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338351200,93957338351274],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::AddArguments(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::BuiltinArguments*, unsigned int, v8::internal::(anonymous namespace)::Where)",93957338352976,93957338353723],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338354960,93957338354975],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::Push(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338355760,93957338355906],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::Pop(v8::internal::Handle<v8::internal::JSArray>)",93957338356064,93957338356082],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338356112,93957338356496],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338357056,93957338357280],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338357328,93957338358050],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::SetLengthImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, unsigned int, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338358144,93957338359155],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338359616,93957338359867],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleyObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)3> >::MoveElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, int, int, int, int, int)",93957338360656,93957338360963],["v8::internal::compiler::CodeGenerator::AssemblePrepareTailCall()",93957341955456,93957341955523],["v8::internal::compiler::CodeGenerator::AssembleArchJump(v8::internal::compiler::RpoNumber)",93957342036368,93957342036433],["v8::internal::compiler::X64OperandConverter::MemoryOperand(unsigned long*)",93957342040048,93957342041761],["v8::internal::compiler::X64OperandConverter::OutputOperand()",93957342042432,93957342042616],["void v8::internal::TurboAssembler::Ucomiss<v8::internal::XMMRegister, v8::internal::Operand>(v8::internal::XMMRegister, v8::internal::Operand)",93957342042976,93957342043004],["void v8::internal::TurboAssembler::Pcmpeqd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342043040,93957342043123],["void v8::internal::TurboAssembler::Xorps<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342043200,93957342043256],["void v8::internal::TurboAssembler::Ucomisd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957342043360,93957342043422],["tcgetpgrp",139871564260512,139871564260588],["cfmakeraw",139871564260880,139871564260924],["setrlimit",139871564261200,139871564261250],["ulimit",139871564261312,139871564261618],["v8::internal::WasmRefFuncDescriptor::ParameterTypes()",93957336164928,93957336164938],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::MachineSemantic)",93957336165264,93957336165454],["v8::internal::OptimizedCompilationInfo::ReopenHandlesInNewHandleScope(v8::internal::Isolate*)",93957336166864,93957336167119],["v8::internal::OptimizedCompilationInfo::GetOutputStackFrameType() const",93957336167296,93957336167346],["v8::internal::OptimizedCompilationInfo::ReleaseWasmCompilationResult()",93957336167488,93957336167506],["v8::internal::OptimizedCompilationInfo::native_context() const",93957336167552,93957336167592],["void std::__1::vector<v8_inspector::V8StackTraceId, std::__1::allocator<v8_inspector::V8StackTraceId> >::__push_back_slow_path<v8_inspector::V8StackTraceId const&>(v8_inspector::V8StackTraceId const&)",93957336167744,93957336168022],["v8::internal::PendingOptimizationTable::IsHeuristicOptimizationAllowed(v8::internal::Isolate*, v8::internal::JSFunction)",93957336168512,93957336168888],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)25, unsigned char>::CopyElementsFromTypedArray(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338317984,93957338321982],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::Shift(v8::internal::Handle<v8::internal::JSArray>)",93957338330576,93957338330591],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::SetLengthImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, unsigned int, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338333888,93957338334899],["unsigned int std::__1::__sort5<v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&)",93957338341360,93957338341971],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::DeleteAtEnd(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)",93957338344496,93957338344765],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338345200,93957338345659],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338348384,93957338348399],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338349312,93957338349455],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338349504,93957338349947],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338350336,93957338350378],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338350480,93957338351186],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::SetLengthImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, unsigned int, v8::internal::Handle<v8::internal::FixedArrayBase>)",93957338351280,93957338352291],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338352736,93957338352976],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::RemoveElement(v8::internal::Handle<v8::internal::JSArray>, v8::internal::(anonymous namespace)::Where)",93957338353728,93957338354142],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338354272,93957338354952],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338354976,93957338355434],["v8::internal::MacroAssembler::LoadNativeContextSlot(v8::internal::Register, int)",93957341953792,93957341954323],["v8::internal::compiler::CodeGenerator::AssembleCodeStartRegisterCheck()",93957341956736,93957341956818],["v8::internal::compiler::InstructionOperandConverter::InputCode(unsigned long)",93957342036000,93957342036180],["v8::internal::compiler::CodeGenerator::AssembleArchTableSwitch(v8::internal::compiler::Instruction*)",93957342037168,93957342037853],["v8::internal::compiler::(anonymous namespace)::OutOfLineTruncateDoubleToI* v8::internal::Zone::New<v8::internal::compiler::(anonymous namespace)::OutOfLineTruncateDoubleToI, v8::internal::compiler::CodeGenerator*, v8::internal::Register&, v8::internal::XMMRegister&, v8::internal::StubCallMode, v8::internal::compiler::UnwindingInfoWriter*>(v8::internal::compiler::CodeGenerator*&&, v8::internal::Register&, v8::internal::XMMRegister&, v8::internal::StubCallMode&&, v8::internal::compiler::UnwindingInfoWriter*&&)",93957342039872,93957342040040],["v8::internal::compiler::(anonymous namespace)::OutOfLineRecordWrite* v8::internal::Zone::New<v8::internal::compiler::(anonymous namespace)::OutOfLineRecordWrite, v8::internal::compiler::CodeGenerator*, v8::internal::Register&, v8::internal::Operand&, v8::internal::Register&, v8::internal::Register&, v8::internal::Register&, v8::internal::compiler::RecordWriteMode&, v8::internal::StubCallMode>(v8::internal::compiler::CodeGenerator*&&, v8::internal::Register&, v8::internal::Operand&, v8::internal::Register&, v8::internal::Register&, v8::internal::Register&, v8::internal::compiler::RecordWriteMode&, v8::internal::StubCallMode&&)",93957342041776,93957342042017],["v8::internal::compiler::X64OperandConverter::InputImmediate(unsigned long)",93957342042208,93957342042423],["v8::internal::compiler::InstructionOperandConverter::InputInt5(unsigned long)",93957342042624,93957342042799],["cfsetispeed",139871564259616,139871564259703],["tcdrain",139871564260624,139871564260787],["tcsendbreak",139871564260832,139871564260878],["tcgetsid",139871564260928,139871564261134],["v8::internal::TorqueInterfaceDescriptor<1, 5, false>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336164400,93957336164535],["v8::internal::UintPtr53ToNumberDescriptor::ParameterTypes()",93957336164992,93957336165002],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::MachineRepresentation)",93957336165136,93957336165207],["v8::internal::OptimizedCompilationInfo::OptimizedCompilationInfo(v8::internal::Zone*, v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::CodeKind)",93957336165664,93957336166099],["v8::internal::OptimizedCompilationInfo::~OptimizedCompilationInfo()",93957336166592,93957336166854],["v8::internal::OptimizedCompilationInfo::AbortOptimization(v8::internal::BailoutReason)",93957336167120,93957336167144],["v8::internal::OptimizedCompilationInfo::GetDebugName() const",93957336167168,93957336167294],["v8::internal::OptimizedCompilationInfo::SetCode(v8::internal::Handle<v8::internal::Code>)",93957336167360,93957336167370],["v8::internal::IsMoreGeneralElementsKindTransition(v8::internal::ElementsKind, v8::internal::ElementsKind)",93957338287760,93957338287868],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::HasEntry(v8::internal::JSObject, v8::internal::InternalIndex)",93957338325280,93957338325327],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::Add(v8::internal::Handle<v8::internal::JSObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, unsigned int)",93957338329920,93957338330226],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::IncludesValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338331392,93957338331748],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::Delete(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338333072,93957338333794],["v8::internal::(anonymous namespace)::FastSmiOrObjectElementsAccessor<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::CopyElementsImpl(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, v8::internal::ElementsKind, unsigned int, int, int)",93957338335344,93957338335581],["unsigned int std::__1::__sort3<v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&)",93957338340064,93957338340889],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::AddArguments(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::BuiltinArguments*, unsigned int, v8::internal::(anonymous namespace)::Where)",93957338342752,93957338343531],["v8::internal::(anonymous namespace)::DictionaryElementsAccessor::ReconfigureImpl(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338344240,93957338344484],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338344768,93957338344866],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338345072,93957338345200],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338345664,93957338347272],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::TransitionElementsKind(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Map>)",93957338347696,93957338348376],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338348400,93957338348831],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Push(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338349152,93957338349298],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Pop(v8::internal::Handle<v8::internal::JSArray>)",93957338349456,93957338349474],["v8::internal::TurboAssembler::Popcntq(v8::internal::Register, v8::internal::Operand)",93957341952912,93957341952949],["v8::internal::TurboAssembler::ResetSpeculationPoisonRegister()",93957341955152,93957341955177],["v8::internal::compiler::X64OperandConverter::SlotToOperand(int, int)",93957341956384,93957341956562],["v8::internal::FieldOperand(v8::internal::Register, int)",93957341956960,93957341957172],["v8::internal::compiler::CodeGenerator::AssembleArchInstruction(v8::internal::compiler::Instruction*)",93957341957440,93957342035985],["v8::internal::compiler::InstructionOperandConverter::ToConstant(v8::internal::compiler::InstructionOperand*) const",93957342036192,93957342036355],["v8::internal::compiler::CodeGenerator::AssembleArchBinarySearchSwitch(v8::internal::compiler::Instruction*)",93957342036448,93957342037156],["v8::internal::compiler::InstructionOperandConverter::InputInt64(unsigned long)",93957342037856,93957342038040],["__write_nocancel",139871564259456,139871564259492],["tcsetattr",139871564259840,139871564260302],["tcsetpgrp",139871564260592,139871564260622],["tcflow",139871564260800,139871564260814],["v8::internal::ReturnTwoValuesDescriptor::ReturnType()",93957336164096,93957336164146],["v8::internal::WasmTableGrowDescriptor::ParameterTypes()",93957336164736,93957336164752],["v8::internal::WasmAllocateRttDescriptor::ParameterTypes()",93957336164960,93957336164971],["v8::internal::WasmAtomicNotifyDescriptor::ParameterTypes()",93957336165072,93957336165083],["v8::internal::StoreTypedElementJSAny_Int32Elements_0Descriptor::ParameterTypes()",93957336165120,93957336165136],["v8::internal::MachineReprToString(v8::internal::MachineRepresentation)",93957336165216,93957336165257],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::MachineType)",93957336165456,93957336165663],["v8::internal::OptimizedCompilationInfo::ConfigureFlags()",93957336166112,93957336166296],["v8::internal::DebugInfo::GetBreakPoints(v8::internal::Isolate*, int)",93957338285360,93957338285579],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>::TryCopyElementsFastNumber(v8::internal::Context, v8::internal::JSArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338296848,93957338297848],["v8::internal::ElementsAccessor::TearDown()",93957338323680,93957338324357],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::CollectElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::KeyAccumulator*)",93957338325632,93957338326084],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338329296,93957338329748],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::Unshift(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338330400,93957338330543],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::DictionaryElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)12> >::GetCapacity(v8::internal::JSObject, v8::internal::FixedArrayBase)",93957338330992,93957338331003],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::CopyElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, int)",93957338331984,93957338332026],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Reconfigure(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::InternalIndex, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957338332720,93957338333061],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::CopyElements(v8::internal::JSObject, unsigned int, v8::internal::ElementsKind, v8::internal::Handle<v8::internal::FixedArrayBase>, unsigned int, int)",93957338333808,93957338333882],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::GrowCapacityAndConvertImpl(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338334912,93957338335332],["v8::internal::(anonymous namespace)::CopyDoubleToObjectElements(v8::internal::Isolate*, v8::internal::FixedArrayBase, unsigned int, v8::internal::FixedArrayBase, unsigned int, int)",93957338335584,93957338336641],["void std::__1::__sort<v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&)",93957338337408,93957338340060],["unsigned int std::__1::__sort4<v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&)",93957338340896,93957338341354],["bool std::__1::__insertion_sort_incomplete<v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&, v8::internal::AtomicSlot>(v8::internal::AtomicSlot, v8::internal::AtomicSlot, v8::internal::(anonymous namespace)::SortIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)::$_0&)",93957338341984,93957338342744],["v8::internal::(anonymous namespace)::FastElementsAccessor<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::MoveElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, v8::internal::Handle<v8::internal::FixedArrayBase>, int, int, int, int, int)",93957338343536,93957338343840],["v8::internal::TurboAssembler::Lzcntq(v8::internal::Register, v8::internal::Operand)",93957341952016,93957341952177],["v8::internal::TurboAssembler::StubPrologue(v8::internal::StackFrame::Type)",93957341953376,93957341953440],["v8::internal::TurboAssembler::CallCFunction(v8::internal::Register, int)",93957341954384,93957341955002],["v8::internal::TurboAssembler::DebugBreak()",93957341955360,93957341955370],["v8::internal::compiler::CodeGenerator::AssembleTailCallBeforeGap(v8::internal::compiler::Instruction*, int)",93957341955536,93957341956371],["v8::internal::compiler::CodeGenerator::AssembleTailCallAfterGap(v8::internal::compiler::Instruction*, int)",93957341956576,93957341956723],["v8::internal::compiler::CodeGenerator::BailoutIfDeoptimized()",93957341956832,93957341956945],["v8::internal::compiler::CodeGenerator::GenerateSpeculationPoisonFromCodeStartRegister()",93957341957184,93957341957323],["__close_nocancel",139871564258672,139871564258706],["cfgetispeed",139871564259520,139871564259537],["cfsetspeed",139871564259712,139871564259827],["tcgetattr",139871564260304,139871564260505],["v8::internal::CreateHTMLDescriptor::ParameterTypes()",93957336163632,93957336163652],["v8::internal::GallopLeftDescriptor::ParameterTypes()",93957336164224,93957336164245],["v8::internal::TorqueInterfaceDescriptor<1, 4, false>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336164576,93957336164707],["v8::internal::WasmTableGetDescriptor::ParameterTypes()",93957336164896,93957336164907],["v8::internal::WasmAllocateFixedArrayDescriptor::ParameterTypes()",93957336164944,93957336164954],["v8::internal::WasmAllocateArrayWithRttDescriptor::ParameterTypes()",93957336164976,93957336164992],["v8::internal::WasmAtomicNotifyDescriptor::ReturnType()",93957336165008,93957336165057],["v8::internal::WasmI32AtomicWait64Descriptor::ParameterTypes()",93957336165088,93957336165104],["v8::internal::NativeContext::GetErrorsThrown()",93957338281136,93957338281153],["v8::internal::CoverageInfo::ResetBlockCount(int)",93957338286896,93957338286919],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>::TryCopyElementsFastNumber(v8::internal::Context, v8::internal::JSArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338289872,93957338291720],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>::CopyElementsFromTypedArray(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338303552,93957338307521],["v8::internal::CopyTypedArrayElementsSlice(unsigned long, unsigned long, unsigned long, unsigned long)",93957338322768,93957338322836],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)17> >::Validate(v8::internal::JSObject)",93957338325136,93957338325214],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::NumberOfElements(v8::internal::JSObject)",93957338325440,93957338325497],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::PrependElementIndices(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArrayBase>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::GetKeysConversion, v8::internal::PropertyFilter)",93957338326944,93957338328170],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::GrowCapacityAndConvert(v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338329280,93957338329295],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Set(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex, v8::internal::Object)",93957338329760,93957338329917],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::Push(v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, unsigned int)",93957338330240,93957338330386],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::Pop(v8::internal::Handle<v8::internal::JSArray>)",93957338330544,93957338330562],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::Normalize(v8::internal::Handle<v8::internal::JSObject>)",93957338330592,93957338330982],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::Fill(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338331008,93957338331392],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::IndexOfValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Object>, unsigned long, unsigned long)",93957338331760,93957338331984],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::CreateListFromArrayLike(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int)",93957338332032,93957338332650],["v8::internal::TurboAssembler::I32x4ExtAddPairwiseI16x8U(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341950112,93957341950653],["v8::internal::TurboAssembler::Tzcntl(v8::internal::Register, v8::internal::Operand)",93957341952624,93957341952758],["v8::internal::MacroAssembler::CmpObjectType(v8::internal::Register, v8::internal::InstanceType, v8::internal::Register)",93957341953056,93957341953223],["v8::internal::TurboAssembler::EnterFrame(v8::internal::StackFrame::Type)",93957341953536,93957341953614],["v8::internal::TurboAssembler::CallCFunction(v8::internal::ExternalReference, int)",93957341954336,93957341954376],["v8::internal::TurboAssembler::ComputeCodeStartAddress(v8::internal::Register)",93957341955008,93957341955138],["v8::internal::TurboAssembler::CallForDeoptimization(v8::internal::Builtins::Name, int, v8::internal::Label*, v8::internal::DeoptimizeKind, v8::internal::Label*, v8::internal::Label*)",93957341955184,93957341955345],["v8::internal::compiler::CodeGenerator::AssembleDeconstructFrame()",93957341955376,93957341955455],["utimensat",139871564258080,139871564258150],["__read_nocancel",139871564259360,139871564259396],["cfgetospeed",139871564259504,139871564259513],["cfsetospeed",139871564259552,139871564259610],["v8::internal::PerformPromiseThenDescriptor::ParameterTypes()",93957336163376,93957336163392],["v8::internal::NewRestArgumentsElementsDescriptor::ParameterTypes()",93957336163872,93957336163888],["v8::internal::Store_FastSmiElements_0Descriptor::ParameterTypes()",93957336164176,93957336164192],["v8::internal::WasmMemoryGrowDescriptor::ReturnType()",93957336164272,93957336164321],["v8::internal::WasmTableCopyDescriptor::ParameterTypes()",93957336164544,93957336164564],["v8::internal::WasmTableFillDescriptor::ParameterTypes()",93957336164720,93957336164736],["v8::internal::TorqueInterfaceDescriptor<1, 2, false>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336164752,93957336164882],["v8::internal::WasmTableSetDescriptor::ParameterTypes()",93957336164912,93957336164928],["v8::internal::Context::extension_object()",93957338276000,93957338276041],["v8::internal::DebugInfo::BreakAtEntry() const",93957338281664,93957338281681],["v8::internal::DebugInfo::ClearCoverageInfo(v8::internal::Isolate*)",93957338286256,93957338286397],["v8::internal::ElementsKindToString(v8::internal::ElementsKind)",93957338287584,93957338287605],["v8::internal::ArrayConstructInitializeElements(v8::internal::Handle<v8::internal::JSArray>, v8::internal::Arguments<(v8::internal::ArgumentsType)1>*)",93957338288016,93957338289454],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>::TryCopyElementsFastNumber(v8::internal::Context, v8::internal::JSArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338293600,93957338295448],["v8::internal::CopyTypedArrayElementsToTypedArray(unsigned long, unsigned long, unsigned long, unsigned long)",93957338299328,93957338299461],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>::CopyElementsFromTypedArray(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338311424,93957338315575],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)26, unsigned long>::CopyElementsFromTypedArray(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338321984,93957338322766],["v8::internal::ElementsAccessor::InitializeOncePerProcess()",93957338322848,93957338323678],["v8::internal::ElementsAccessor::Concat(v8::internal::Isolate*, v8::internal::BuiltinArguments*, unsigned int, unsigned int)",93957338324368,93957338325121],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::HasElement(v8::internal::JSObject, unsigned int, v8::internal::FixedArrayBase, v8::internal::PropertyFilter)",93957338325216,93957338325268],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::Get(v8::internal::Handle<v8::internal::JSObject>, v8::internal::InternalIndex)",93957338325328,93957338325438],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::SetLength(v8::internal::Handle<v8::internal::JSArray>, unsigned int)",93957338325504,93957338325632],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastHoleySmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)1> >::CollectValuesOrEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::FixedArray>, bool, int*, v8::internal::PropertyFilter)",93957338326096,93957338326941],["v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedSmiElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)0> >::AddElementsToKeyAccumulator(v8::internal::Handle<v8::internal::JSObject>, v8::internal::KeyAccumulator*, v8::internal::AddKeyConversion)",93957338328176,93957338328583],["v8::internal::TurboAssembler::I8x16Popcnt(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341945840,93957341947144],["v8::internal::TurboAssembler::S128Select(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341951200,93957341951484],["v8::internal::TurboAssembler::Tzcntq(v8::internal::Register, v8::internal::Operand)",93957341952336,93957341952470],["v8::internal::TurboAssembler::Popcntl(v8::internal::Register, v8::internal::Operand)",93957341952816,93957341952853],["v8::internal::TurboAssembler::Ret(int, v8::internal::Register)",93957341952960,93957341953052],["v8::internal::TurboAssembler::AssertZeroExtended(v8::internal::Register)",93957341953232,93957341953376],["v8::internal::TurboAssembler::Prologue()",93957341953440,93957341953524],["v8::internal::TurboAssembler::LeaveFrame(v8::internal::StackFrame::Type)",93957341953616,93957341953782],["posix_fallocate",139871564257136,139871564257195],["sync_file_range",139871564258320,139871564258483],["__open64_nocancel",139871564259024,139871564259192],["__pread64_nocancel",139871564259408,139871564259452],["v8::internal::TorqueInterfaceDescriptor<1, 0, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336162928,93957336163022],["v8::internal::ProxyGetPropertyDescriptor::ParameterTypes()",93957336163440,93957336163456],["v8::internal::TypedArrayMergeSortDescriptor::ParameterTypes()",93957336163696,93957336163717],["v8::internal::WasmTrapDescriptor::ParameterTypes()",93957336163952,93957336163962],["v8::internal::ReturnTwoValuesDescriptor::ParameterTypes()",93957336164160,93957336164171],["v8::internal::CopyDescriptor::ParameterTypes()",93957336164192,93957336164212],["v8::internal::WasmMemoryGrowDescriptor::ParameterTypes()",93957336164256,93957336164266],["v8::internal::WasmTaggedToFloat64Descriptor::ReturnType()",93957336164336,93957336164385],["v8::internal::(anonymous namespace)::StringSharedKey::AsHandle(v8::internal::Isolate*)",93957338269776,93957338270149],["v8::internal::NativeContext::OptimizedCodeListHead()",93957338280192,93957338280223],["v8::internal::DebugInfo::SetDebugExecutionMode(v8::internal::DebugInfo::ExecutionMode)",93957338281248,93957338281279],["v8::internal::DebugInfo::ClearBreakPoint(v8::internal::Isolate*, v8::internal::Handle<v8::internal::DebugInfo>, v8::internal::Handle<v8::internal::BreakPoint>)",93957338282000,93957338282399],["v8::internal::DebugInfo::FindBreakPointInfo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::DebugInfo>, v8::internal::Handle<v8::internal::BreakPoint>)",93957338285824,93957338286212],["v8::internal::BreakPointInfo::GetBreakPointById(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BreakPointInfo>, int)",93957338286560,93957338286832],["v8::internal::ElementsKindToShiftSize(v8::internal::ElementsKind)",93957338287424,93957338287489],["v8::internal::GetSequenceIndexFromFastElementsKind(v8::internal::ElementsKind)",93957338287648,93957338287688],["v8::internal::UnionElementsKindUptoSize(v8::internal::ElementsKind*, v8::internal::ElementsKind)",93957338287872,93957338288011],["v8::internal::CopyFastNumberJSArrayElementsToTypedArray(unsigned long, unsigned long, unsigned long, unsigned long, unsigned long)",93957338289456,93957338289857],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)19, unsigned short>::TryCopyElementsFastNumber(v8::internal::Context, v8::internal::JSArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338291728,93957338293594],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)23, float>::TryCopyElementsFastNumber(v8::internal::Context, v8::internal::JSArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338295456,93957338296837],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)25, unsigned char>::TryCopyElementsFastNumber(v8::internal::Context, v8::internal::JSArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338297856,93957338299316],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)17, unsigned char>::CopyElementsFromTypedArray(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338299472,93957338303541],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)21, unsigned int>::CopyElementsFromTypedArray(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338307536,93957338311409],["v8::internal::(anonymous namespace)::TypedElementsAccessor<(v8::internal::ElementsKind)24, double>::CopyElementsFromTypedArray(v8::internal::JSTypedArray, v8::internal::JSTypedArray, unsigned long, unsigned long)",93957338315584,93957338317975],["v8::internal::TurboAssembler::I64x2ExtMul(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, bool, bool)",93957341942512,93957341942883],["v8::internal::TurboAssembler::I64x2Abs(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341948528,93957341948871],["v8::internal::TurboAssembler::Abspd(v8::internal::XMMRegister)",93957341950976,93957341951084],["v8::internal::TurboAssembler::Lzcntl(v8::internal::Register, v8::internal::Operand)",93957341951664,93957341951825],["v8::internal::TurboAssembler::Tzcntq(v8::internal::Register, v8::internal::Register)",93957341952192,93957341952326],["v8::internal::TurboAssembler::Tzcntl(v8::internal::Register, v8::internal::Register)",93957341952480,93957341952614],["v8::internal::TurboAssembler::Popcntl(v8::internal::Register, v8::internal::Register)",93957341952768,93957341952805],["v8::internal::TurboAssembler::Popcntq(v8::internal::Register, v8::internal::Register)",93957341952864,93957341952901],["fts64_children",139871564255856,139871564256165],["sendfile",139871564257792,139871564257828],["futimens",139871564258160,139871564258196],["fallocate",139871564258496,139871564258659],["v8::internal::ArrayTimSortDescriptor::ParameterTypes()",93957336162800,93957336162810],["v8::internal::TorqueInterfaceDescriptor<1, 0, false>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336163088,93957336163185],["v8::internal::RegExpSplitDescriptor::ParameterTypes()",93957336163408,93957336163424],["v8::internal::ProxySetPrototypeOfDescriptor::ParameterTypes()",93957336163472,93957336163488],["v8::internal::CreateTypedArrayDescriptor::ParameterTypes()",93957336163664,93957336163684],["v8::internal::TorqueInterfaceDescriptor<1, 3, false>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336163728,93957336163866],["v8::internal::MergeAtDescriptor::ReturnType()",93957336163888,93957336163937],["v8::internal::TorqueInterfaceDescriptor<2, 2, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336163968,93957336164095],["v8::internal::DependentCode::InstallDependency(v8::internal::Isolate*, v8::internal::MaybeObjectHandle const&, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::DependentCode::DependencyGroup)",93957338263200,93957338263700],["v8::internal::(anonymous namespace)::CodeKey::IsMatch(v8::internal::Object)",93957338274624,93957338274639],["v8::internal::Context::global_proxy()",93957338276240,93957338276276],["v8::internal::String::IsOneByteEqualTo(v8::internal::Vector<char const>)",93957338280528,93957338280657],["v8::internal::DebugInfo::HasBreakInfo() const",93957338281200,93957338281216],["v8::internal::DebugInfo::SetBreakAtEntry()",93957338281600,93957338281621],["v8::internal::DebugInfo::HasBreakPoint(v8::internal::Isolate*, int)",93957338281728,93957338281912],["v8::internal::DebugInfo::SetBreakPoint(v8::internal::Isolate*, v8::internal::Handle<v8::internal::DebugInfo>, int, v8::internal::Handle<v8::internal::BreakPoint>)",93957338283184,93957338284208],["v8::internal::DebugInfo::GetBreakPointCount(v8::internal::Isolate*)",93957338285584,93957338285812],["v8::internal::DebugInfo::HasCoverageInfo() const",93957338286224,93957338286241],["v8::internal::DebugInfo::GetSideEffectState(v8::internal::Isolate*)",93957338286400,93957338286560],["v8::internal::CoverageInfo::InitializeSlot(int, int, int)",93957338286832,93957338286885],["v8::internal::CoverageInfo::CoverageInfoPrint(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::unique_ptr<char [], std::__1::default_delete<char []> >)",93957338286928,93957338287422],["v8::internal::ElementsKindToByteSize(v8::internal::ElementsKind)",93957338287504,93957338287574],["v8::internal::GetFastElementsKindFromSequenceIndex(int)",93957338287616,93957338287635],["v8::internal::GetNextTransitionElementsKind(v8::internal::ElementsKind)",93957338287696,93957338287747],["v8::internal::TurboAssembler::Pinsrq(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341940832,93957341940990],["v8::internal::TurboAssembler::I16x8ExtMulHighU(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341944320,93957341944999],["v8::internal::TurboAssembler::I32x4TruncSatF64x2SZero(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341947408,93957341947930],["v8::internal::TurboAssembler::I64x2GeS(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341949248,93957341949779],["v8::internal::TurboAssembler::I8x16Swizzle(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, bool)",93957341950656,93957341950962],["v8::internal::TurboAssembler::Negpd(v8::internal::XMMRegister)",93957341951088,93957341951196],["v8::internal::TurboAssembler::Lzcntl(v8::internal::Register, v8::internal::Register)",93957341951488,93957341951649],["v8::internal::TurboAssembler::Lzcntq(v8::internal::Register, v8::internal::Register)",93957341951840,93957341952001],["fts64_open",139871564253376,139871564254181],["ppoll",139871564256336,139871564256576],["posix_fallocate64",139871564257728,139871564257787],["copy_file_range",139871564257840,139871564258029],["v8::internal::TorqueInterfaceDescriptor<1, 7, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336162304,93957336162443],["v8::internal::CreateRegExpLiteralDescriptor::ParameterTypes()",93957336162864,93957336162880],["v8::internal::GetTemplateObjectDescriptor::ParameterTypes()",93957336163040,93957336163056],["v8::internal::TorqueInterfaceDescriptor<1, 1, false>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336163216,93957336163347],["v8::internal::PromiseRejectReactionJobDescriptor::ParameterTypes()",93957336163392,93957336163408],["v8::internal::StringIndexOfDescriptor::ParameterTypes()",93957336163424,93957336163440],["v8::internal::ProxySetPropertyDescriptor::ParameterTypes()",93957336163456,93957336163472],["v8::internal::TorqueInterfaceDescriptor<1, 5, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336163488,93957336163620],["v8::internal::AbstractCode::SourcePosition(int)",93957338257024,93957338257371],["v8::internal::Code::SetMarkedForDeoptimization(char const*)",93957338266416,93957338266456],["v8::internal::CompilationCacheTable::Age(v8::internal::Isolate*)",93957338273664,93957338274065],["v8::internal::ScriptContextTable::Lookup(v8::internal::Isolate*, v8::internal::ScriptContextTable, v8::internal::String, v8::internal::ScriptContextTable::LookupResult*)",93957338275328,93957338275518],["v8::internal::Context::module()",93957338276112,93957338276192],["v8::internal::NativeContext::AddOptimizedCode(v8::internal::Code)",93957338279840,93957338280110],["v8::internal::NativeContext::DeoptimizedCodeListHead()",93957338280304,93957338280335],["v8::internal::NativeContext::ResetErrorsThrown()",93957338281072,93957338281091],["v8::internal::DebugInfo::IsEmpty() const",93957338281168,93957338281194],["v8::internal::DebugInfo::DebugExecutionMode() const",93957338281216,93957338281233],["v8::internal::DebugInfo::ClearBreakInfo(v8::internal::Isolate*)",93957338281280,93957338281585],["v8::internal::DebugInfo::ClearBreakAtEntry()",93957338281632,93957338281650],["v8::internal::DebugInfo::CanBreakAtEntry() const",93957338281696,93957338281713],["v8::internal::BreakPointInfo::GetBreakPointCount(v8::internal::Isolate*)",93957338281920,93957338281988],["v8::internal::BreakPointInfo::ClearBreakPoint(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BreakPointInfo>, v8::internal::Handle<v8::internal::BreakPoint>)",93957338282400,93957338283173],["v8::internal::BreakPointInfo::SetBreakPoint(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BreakPointInfo>, v8::internal::Handle<v8::internal::BreakPoint>)",93957338284208,93957338285348],["v8::internal::TurboAssembler::Pinsrb(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341939456,93957341939611],["v8::internal::TurboAssembler::I16x8SConvertI8x16High(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341941616,93957341941824],["v8::internal::TurboAssembler::I16x8ExtMulLow(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, bool)",93957341943296,93957341943789],["v8::internal::TurboAssembler::S128Store32Lane(v8::internal::Operand, v8::internal::XMMRegister, unsigned char)",93957341945600,93957341945771],["v8::internal::TurboAssembler::F64x2ConvertLowI32x4U(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341947152,93957341947405],["v8::internal::TurboAssembler::I32x4TruncSatF64x2UZero(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341947936,93957341948519],["v8::internal::TurboAssembler::I64x2GtS(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341948880,93957341949241],["v8::internal::TurboAssembler::I16x8ExtAddPairwiseI8x16S(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341949792,93957341950104],["unlinkat",139871564245888,139871564245921],["fts64_read",139871564254448,139871564255805],["__poll",139871564256176,139871564256331],["posix_fadvise",139871564256576,139871564256604],["v8::internal::TorqueInterfaceDescriptor<1, 6, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336161744,93957336161875],["v8::internal::FastCreateDataPropertyDescriptor::ParameterTypes()",93957336162624,93957336162640],["v8::internal::FulfillPromiseDescriptor::ParameterTypes()",93957336162832,93957336162843],["v8::internal::CreateShallowObjectLiteralDescriptor::ParameterTypes()",93957336162896,93957336162912],["v8::internal::MergeAtDescriptor::ParameterTypes()",93957336163024,93957336163035],["v8::internal::ForInNextDescriptor::ParameterTypes()",93957336163056,93957336163077],["v8::internal::GetIteratorWithFeedbackDescriptor::ParameterTypes()",93957336163200,93957336163216],["v8::internal::CallIteratorWithFeedbackDescriptor::ParameterTypes()",93957336163360,93957336163376],["v8::internal::Code::SafepointTableAddress() const",93957338253632,93957338253801],["v8::internal::DeoptimizationData::New(v8::internal::Isolate*, int, v8::internal::AllocationType)",93957338258896,93957338258912],["v8::internal::DependentCode::InsertWeakCode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::DependentCode>, v8::internal::DependentCode::DependencyGroup, v8::internal::MaybeObjectHandle const&)",93957338263920,93957338264796],["v8::internal::CompilationCacheTable::LookupEval(v8::internal::Handle<v8::internal::CompilationCacheTable>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode, int)",93957338267344,93957338268261],["v8::internal::CompilationCacheTable::PutRegExp(v8::internal::Isolate*, v8::internal::Handle<v8::internal::CompilationCacheTable>, v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::FixedArray>)",93957338272368,93957338272773],["v8::internal::(anonymous namespace)::StringSharedKey::IsMatch(v8::internal::Object)",93957338274272,93957338274486],["v8::internal::Context::Initialize(v8::internal::Isolate*)",93957338274992,93957338275285],["v8::internal::Context::declaration_context()",93957338275728,93957338275815],["v8::internal::Context::extension_receiver()",93957338276048,93957338276108],["v8::internal::Context::global_object()",93957338276192,93957338276228],["v8::internal::Context::Lookup(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::String>, v8::internal::ContextLookupFlags, int*, v8::internal::PropertyAttributes*, v8::internal::InitializationFlag*, v8::internal::VariableMode*, bool*)",93957338276288,93957338279834],["v8::internal::NativeContext::SetOptimizedCodeListHead(v8::internal::Object)",93957338280112,93957338280181],["v8::internal::NativeContext::SetDeoptimizedCodeListHead(v8::internal::Object)",93957338280224,93957338280293],["v8::internal::Context::ErrorMessageForCodeGenerationFromStrings()",93957338280336,93957338280522],["v8::internal::Context::IntrinsicIndexForName(unsigned char const*, int)",93957338280672,93957338281065],["v8::internal::NativeContext::IncrementErrorsThrown()",93957338281104,93957338281131],["v8::internal::TurboAssembler::RetpolineCall(v8::internal::Register)",93957341938208,93957341938432],["v8::internal::TurboAssembler::Pinsrd(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341940256,93957341940600],["v8::internal::TurboAssembler::I32x4SConvertI16x8High(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341941136,93957341941344],["v8::internal::TurboAssembler::I64x2SConvertI32x4High(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341942096,93957341942286],["v8::internal::TurboAssembler::I32x4ExtMul(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, bool, bool)",93957341942896,93957341943282],["v8::internal::TurboAssembler::I16x8ExtMulHighS(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341943792,93957341944320],["v8::internal::TurboAssembler::I16x8Q15MulRSatS(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341945008,93957341945586],["v8::internal::TurboAssembler::S128Store64Lane(v8::internal::Operand, v8::internal::XMMRegister, unsigned char)",93957341945776,93957341945826],["symlinkat",139871564245696,139871564245729],["ftw",139871564249952,139871564249967],["fts64_close",139871564254192,139871564254434],["fts64_set",139871564255808,139871564255844],["v8::internal::GetPropertyDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336158512,93957336158627],["v8::internal::TorqueInterfaceDescriptor<1, 3, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336162064,93957336162199],["v8::internal::TorqueInterfaceDescriptor<1, 1, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336162480,93957336162608],["v8::internal::CheckNumberInRangeDescriptor::ParameterTypes()",93957336162768,93957336162784],["v8::internal::WasmThrowDescriptor::ParameterTypes()",93957336162816,93957336162827],["v8::internal::FastNewFunctionContextEvalDescriptor::ParameterTypes()",93957336162848,93957336162859],["v8::internal::RejectPromiseDescriptor::ParameterTypes()",93957336162880,93957336162896],["v8::internal::TorqueInterfaceDescriptor<1, 0, false>::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336162912,93957336162927],["v8::internal::MutableBigInt::TruncateToNBits(v8::internal::Isolate*, int, v8::internal::Handle<v8::internal::BigInt>)",93957338250640,93957338251204],["v8::internal::Code::GetSafepointEntry(v8::internal::Isolate*, unsigned long)",93957338255424,93957338255492],["v8::internal::Code::IsNativeContextIndependent(v8::internal::Isolate*)",93957338258144,93957338258570],["v8::internal::BytecodeArray::CopyBytecodesTo(v8::internal::BytecodeArray)",93957338262656,93957338262869],["v8::internal::MaybeObjectHandle::operator->() const",93957338263808,93957338263866],["v8::internal::DependentCode::Compact()",93957338265216,93957338265840],["v8::internal::StdoutStream::~StdoutStream()",93957338266512,93957338266599],["v8::internal::CompilationCacheTable::LookupCode(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957338268704,93957338269054],["v8::internal::CompilationCacheTable::PutEval(v8::internal::Handle<v8::internal::CompilationCacheTable>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::FeedbackCell>, int)",93957338270160,93957338272366],["v8::internal::CompilationCacheTable::PutCode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::CompilationCacheTable>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Code>)",93957338272784,93957338273662],["v8::internal::CompilationCacheTable::Remove(v8::internal::Object)",93957338274080,93957338274257],["v8::internal::(anonymous namespace)::RegExpKey::IsMatch(v8::internal::Object)",93957338274496,93957338274623],["v8::internal::ScriptContextTable::Extend(v8::internal::Handle<v8::internal::ScriptContextTable>, v8::internal::Handle<v8::internal::Context>)",93957338274640,93957338274991],["v8::internal::Context::scope_info()",93957338275296,93957338275324],["v8::internal::Context::is_declaration_context()",93957338275520,93957338275715],["v8::internal::Context::closure_context()",93957338275824,93957338275987],["v8::internal::TurboAssembler::Call(v8::internal::Operand)",93957341937136,93957341937220],["v8::internal::TurboAssembler::Pmaddubsw(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand)",93957341938800,93957341938932],["v8::internal::TurboAssembler::Pinsrw(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341939760,93957341939915],["v8::internal::TurboAssembler::Pinsrd(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341940640,93957341940661],["v8::internal::TurboAssembler::Pshufb(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341940992,93957341941124],["v8::internal::TurboAssembler::I32x4UConvertI16x8High(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341941344,93957341941613],["v8::internal::TurboAssembler::I16x8UConvertI8x16High(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341941824,93957341942093],["v8::internal::TurboAssembler::I64x2UConvertI32x4High(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341942288,93957341942507],["isatty",139871564245488,139871564245550],["readlinkat",139871564245792,139871564245828],["rmdir",139871564245936,139871564245969],["nftw",139871564249968,139871564250020],["v8::internal::CloneObjectWithVectorDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336157424,93957336157559],["v8::internal::AddDescriptor::ReturnType()",93957336159040,93957336159089],["v8::internal::TorqueInterfaceDescriptor<1, 2, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336161920,93957336162047],["v8::internal::SortCompareUserFnDescriptor::ParameterTypes()",93957336162272,93957336162288],["v8::internal::ArrayMapLoopContinuationDescriptor::ParameterTypes()",93957336162448,93957336162474],["v8::internal::NegateDescriptor::ParameterTypes()",93957336162608,93957336162618],["v8::internal::TorqueInterfaceDescriptor<1, 4, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336162640,93957336162768],["v8::internal::AddDescriptor::ParameterTypes()",93957336162784,93957336162795],["v8::internal::BigInt::FromNumber(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338246592,93957338246782],["v8::internal::MutableBigInt_AbsoluteCompare(unsigned long, unsigned long)",93957338253216,93957338253257],["v8::internal::Code::ClearEmbeddedObjects(v8::internal::Heap*)",93957338254048,93957338254189],["v8::internal::Code::OffHeapInstructionStart(v8::internal::Isolate*, unsigned long) const",93957338256128,93957338256378],["v8::internal::Code::CanDeoptAt(v8::internal::Isolate*, unsigned long)",93957338257696,93957338257878],["v8::internal::Code::OptimizedCodeIterator::OptimizedCodeIterator(v8::internal::Isolate*)",93957338258688,93957338258726],["v8::internal::DeoptimizationData::GetInlinedFunction(int)",93957338258928,93957338258986],["v8::internal::BytecodeArray::IsOld() const",93957338262912,93957338262929],["v8::internal::StdoutStream::StdoutStream()",93957338263712,93957338263802],["v8::internal::DependentCode::DependencyGroupName(v8::internal::DependentCode::DependencyGroup)",93957338263872,93957338263911],["v8::internal::DependentCode::New(v8::internal::Isolate*, v8::internal::DependentCode::DependencyGroup, v8::internal::MaybeObjectHandle const&, v8::internal::Handle<v8::internal::DependentCode>)",93957338264800,93957338265201],["v8::internal::DependentCode::MarkCodeForDeoptimization(v8::internal::DependentCode::DependencyGroup)",93957338265840,93957338266405],["v8::internal::DependentCode::DeoptimizeDependentCodeGroup(v8::internal::DependentCode::DependencyGroup)",93957338266464,93957338266507],["v8::internal::CompilationCacheTable::LookupScript(v8::internal::Handle<v8::internal::CompilationCacheTable>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode)",93957338266608,93957338267330],["v8::internal::CompilationCacheTable::LookupRegExp(v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957338268272,93957338268691],["v8::internal::CompilationCacheTable::PutScript(v8::internal::Handle<v8::internal::CompilationCacheTable>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957338269056,93957338269774],["v8::internal::TurboAssembler::Move(v8::internal::Register, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::RelocInfo::Mode)",93957341936384,93957341936505],["v8::internal::TurboAssembler::LoadCodeObjectEntry(v8::internal::Register, v8::internal::Register)",93957341937520,93957341938028],["v8::internal::TurboAssembler::RetpolineJump(v8::internal::Register)",93957341938496,93957341938645],["v8::internal::TurboAssembler::Pextrd(v8::internal::Register, v8::internal::XMMRegister, unsigned char)",93957341939056,93957341939297],["v8::internal::TurboAssembler::Pinsrw(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341939616,93957341939760],["v8::internal::TurboAssembler::Pinsrd(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341939920,93957341940250],["v8::internal::TurboAssembler::Pinsrd(v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341940608,93957341940625],["v8::internal::TurboAssembler::Pinsrq(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341940672,93957341940819],["lchown",139871564243504,139871564243537],["linkat",139871564245600,139871564245636],["readlink",139871564245744,139871564245777],["unlink",139871564245840,139871564245873],["v8::internal::InterpreterCEntry2Descriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336156368,93957336156503],["v8::internal::ArrayConstructorDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336157968,93957336158076],["v8::internal::JSTrampolineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336158768,93957336158891],["_ZNSt3__16vectorIN2v88internal11MachineTypeENS_9allocatorIS3_EEE6insertIPS3_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS3_NS_15iterator_traitsISA_E9referenceEEE5valueENS_11__wrap_iterIS8_EEE4typeENSE_IPKS3_EESA_SA_",93957336159136,93957336161698],["v8::internal::ArrayFindLoopContinuationDescriptor::ParameterTypes()",93957336161888,93957336161909],["v8::internal::StringCharAtDescriptor::ParameterTypes()",93957336162048,93957336162059],["v8::internal::ToNameDescriptor::ReturnType()",93957336162208,93957336162257],["v8::internal::JoinStackPopDescriptor::ParameterTypes()",93957336162288,93957336162299],["v8::internal::BigInt::BitwiseAnd(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338240752,93957338240966],["v8::internal::MutableBigInt::InternalMultiplyAdd(v8::internal::BigIntBase, unsigned long, unsigned long, int, v8::internal::MutableBigInt)",93957338249136,93957338249386],["v8::internal::BigInt::FromUint64(v8::internal::Isolate*, unsigned long)",93957338252544,93957338252788],["unsigned long std::__1::__function::__policy_invoker<unsigned long (unsigned long, unsigned long)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::MutableBigInt::AbsoluteOr(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::MutableBigInt)::$_2, unsigned long (unsigned long, unsigned long)> >(std::__1::__function::__policy_storage const*, unsigned long, unsigned long)",93957338253504,93957338253516],["v8::internal::Code::handler_table_size() const",93957338254000,93957338254015],["v8::internal::Code::FlushICache() const",93957338254336,93957338254357],["v8::internal::Code::OffHeapInstructionStart() const",93957338255664,93957338255876],["v8::internal::Code::OffHeapMetadataStart() const",93957338256672,93957338256827],["v8::internal::AbstractCode::SourceStatementPosition(int)",93957338257376,93957338257686],["v8::internal::Code::IsIsolateIndependent(v8::internal::Isolate*)",93957338257888,93957338258142],["v8::internal::Code::Inlines(v8::internal::SharedFunctionInfo)",93957338258576,93957338258686],["v8::internal::Code::OptimizedCodeIterator::Next()",93957338258736,93957338258883],["v8::internal::DeoptimizationData::Empty(v8::internal::Isolate*)",93957338258912,93957338258925],["v8::internal::BytecodeArray::Disassemble(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957338258992,93957338262641],["v8::internal::BytecodeArray::MakeOlder()",93957338262880,93957338262904],["v8::internal::DependentCode::SetDependentCode(v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::DependentCode>)",93957338262944,93957338263194],["v8::internal::TurboAssembler::MoveNumber(v8::internal::Register, double)",93957341934256,93957341934342],["v8::internal::TurboAssembler::Jump(v8::internal::ExternalReference const&)",93957341936640,93957341936739],["v8::internal::TurboAssembler::EntryFromBuiltinIndexAsOperand(v8::internal::Builtins::Name)",93957341937296,93957341937381],["v8::internal::TurboAssembler::JumpCodeObject(v8::internal::Register, v8::internal::JumpMode)",93957341938080,93957341938181],["v8::internal::TurboAssembler::RetpolineCall(unsigned long, v8::internal::RelocInfo::Mode)",93957341938432,93957341938481],["v8::internal::TurboAssembler::Pmaddwd(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand)",93957341938656,93957341938793],["v8::internal::TurboAssembler::Shufps(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341938944,93957341939051],["v8::internal::TurboAssembler::Pinsrb(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341939312,93957341939456],["getwd",139871564243040,139871564243206],["ttyname",139871564243600,139871564244522],["link",139871564245552,139871564245585],["symlink",139871564245648,139871564245681],["v8::internal::ArrayNArgumentsConstructorDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336155280,93957336155403],["v8::internal::I64ToBigIntDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336156912,93957336157027],["v8::internal::CallTrampoline_BaselineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336157696,93957336157819],["v8::internal::Construct_BaselineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336158224,93957336158359],["v8::internal::JSTrampolineDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336158640,93957336158758],["v8::internal::TorqueInterfaceDescriptor<1, 8, true>::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336158896,93957336159028],["v8::internal::ArraySomeLoopContinuationDescriptor::ParameterTypes()",93957336159104,93957336159130],["v8::internal::ArrayFilterLoopContinuationDescriptor::ParameterTypes()",93957336161712,93957336161738],["v8::internal::MutableBigInt::MultiplyAccumulate(v8::internal::Handle<v8::internal::BigIntBase>, unsigned long, v8::internal::Handle<v8::internal::MutableBigInt>, int)",93957338233664,93957338233961],["v8::internal::BigInt::CompareToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::String>)",93957338243792,93957338243946],["v8::internal::BigInt::BigIntShortPrint(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)",93957338247840,93957338247972],["v8::internal::BigInt::DigitsByteLengthForBitfield(unsigned int)",93957338250016,93957338250031],["v8::internal::BigInt::AsUintN(v8::internal::Isolate*, unsigned long, v8::internal::Handle<v8::internal::BigInt>)",93957338252000,93957338252264],["v8::internal::BigInt::AsUint64(bool*)",93957338252912,93957338253007],["unsigned long std::__1::__function::__policy_invoker<unsigned long (unsigned long, unsigned long)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::MutableBigInt::AbsoluteAnd(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::MutableBigInt)::$_0, unsigned long (unsigned long, unsigned long)> >(std::__1::__function::__policy_storage const*, unsigned long, unsigned long)",93957338253472,93957338253484],["v8::internal::CodeKindToString(v8::internal::CodeKind)",93957338253536,93957338253575],["v8::internal::Code::HandlerTableAddress() const",93957338253808,93957338253986],["v8::internal::Code::has_handler_table() const",93957338254016,93957338254034],["v8::internal::Code::Relocate(long)",93957338254192,93957338254329],["v8::internal::Code::CopyFromNoFlush(v8::internal::Heap*, v8::internal::CodeDesc const&)",93957338254368,93957338255409],["v8::internal::Code::OffHeapInstructionSize() const",93957338255504,93957338255658],["v8::internal::Code::OffHeapInstructionEnd() const",93957338255888,93957338256125],["v8::internal::Code::OffHeapInstructionEnd(v8::internal::Isolate*, unsigned long) const",93957338256384,93957338256662],["v8::internal::Code::OffHeapMetadataEnd() const",93957338256832,93957338257012],["v8::internal::TurboAssembler::Set(v8::internal::Operand, long)",93957341933648,93957341933787],["v8::internal::TurboAssembler::Move(v8::internal::XMMRegister, unsigned long)",93957341935232,93957341935948],["v8::internal::TurboAssembler::MoveStringConstant(v8::internal::Register, v8::internal::StringConstantBase const*, v8::internal::RelocInfo::Mode)",93957341936608,93957341936618],["v8::internal::TurboAssembler::TailCallBuiltin(int)",93957341936768,93957341937062],["v8::internal::TurboAssembler::Call(unsigned long, v8::internal::RelocInfo::Mode)",93957341937232,93957341937281],["v8::internal::TurboAssembler::CallBuiltinByIndex(v8::internal::Register)",93957341937392,93957341937514],["v8::internal::TurboAssembler::CallCodeObject(v8::internal::Register)",93957341938032,93957341938068],["v8::internal::TurboAssembler::Ret()",93957341938192,93957341938204],["creat",139871564240944,139871564241083],["chown",139871564243408,139871564243441],["fchownat",139871564243552,139871564243588],["ttyname_r",139871564244528,139871564245488],["v8::internal::TypeConversionDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336154160,93957336154275],["v8::internal::ApiGetterDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336155840,93957336155963],["v8::internal::WasmFloat32ToNumberDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336156656,93957336156771],["v8::internal::BigIntToI64Descriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336157168,93957336157283],["v8::internal::CloneObjectBaselineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336157568,93957336157691],["v8::internal::CallTrampoline_WithFeedbackDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336157824,93957336157959],["v8::internal::ArrayConstructorDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336158080,93957336158215],["v8::internal::CppBuiltinAdaptorDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336158368,93957336158503],["v8::internal::Handle<v8::internal::BigInt> v8::internal::BigInt::Zero<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::AllocationType)",93957338228672,93957338228923],["v8::internal::BigInt::Subtract(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338238208,93957338238363],["v8::internal::BigInt::BitwiseOr(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338242256,93957338242470],["v8::internal::BigInt::CompareToNumber(v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::Object>)",93957338244656,93957338244770],["v8::internal::BigInt::ToNumber(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>)",93957338247120,93957338247364],["v8::internal::MutableBigInt::AbsoluteSub(v8::internal::MutableBigInt, v8::internal::BigInt, v8::internal::BigInt)",93957338248208,93957338248403],["v8::internal::MutableBigInt::SpecialLeftShift(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, int, v8::internal::MutableBigInt::SpecialLeftShiftMode)",93957338249424,93957338249969],["v8::internal::BigInt::FromSerializedDigits(v8::internal::Isolate*, unsigned int, v8::internal::Vector<unsigned char const>)",93957338250080,93957338250381],["v8::internal::MutableBigInt::TruncateAndSubFromPowerOfTwo(v8::internal::Isolate*, int, v8::internal::Handle<v8::internal::BigInt>, bool)",93957338251216,93957338251996],["v8::internal::BigInt::FromInt64(v8::internal::Isolate*, long)",93957338252272,93957338252532],["v8::internal::BigInt::AsInt64(bool*)",93957338252800,93957338252904],["v8::internal::MutableBigInt_AbsoluteAddAndCanonicalize(unsigned long, unsigned long, unsigned long)",93957338253008,93957338253202],["v8::internal::MutableBigInt_AbsoluteSubAndCanonicalize(unsigned long, unsigned long, unsigned long)",93957338253264,93957338253458],["unsigned long std::__1::__function::__policy_invoker<unsigned long (unsigned long, unsigned long)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::MutableBigInt::AbsoluteAndNot(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::MutableBigInt)::$_1, unsigned long (unsigned long, unsigned long)> >(std::__1::__function::__policy_storage const*, unsigned long, unsigned long)",93957338253488,93957338253503],["unsigned long std::__1::__function::__policy_invoker<unsigned long (unsigned long, unsigned long)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::MutableBigInt::AbsoluteXor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::MutableBigInt)::$_3, unsigned long (unsigned long, unsigned long)> >(std::__1::__function::__policy_storage const*, unsigned long, unsigned long)",93957338253520,93957338253532],["v8::internal::CodeKindToMarker(v8::internal::CodeKind)",93957338253584,93957338253620],["v8::internal::TurboAssembler::Cvttss2siq(v8::internal::Register, v8::internal::XMMRegister)",93957341931088,93957341931157],["v8::internal::TurboAssembler::Push(v8::internal::Immediate)",93957341934144,93957341934154],["v8::internal::TurboAssembler::Pslld(v8::internal::XMMRegister, unsigned char)",93957341934976,93957341935098],["v8::internal::TurboAssembler::Psrlq(v8::internal::XMMRegister, unsigned char)",93957341936080,93957341936202],["v8::internal::TurboAssembler::Push(v8::internal::Handle<v8::internal::HeapObject>)",93957341936512,93957341936600],["v8::internal::MacroAssembler::Pop(v8::internal::Register)",93957341936624,93957341936634],["v8::internal::TurboAssembler::Jump(v8::internal::Operand)",93957341936752,93957341936762],["v8::internal::MacroAssembler::JumpToInstructionStream(unsigned long)",93957341937072,93957341937124],["__dup2",139871564240752,139871564240785],["fchdir",139871564241136,139871564241169],["get_current_dir_name",139871564243216,139871564243397],["fchown",139871564243456,139871564243489],["v8::internal::ForInPrepareDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336153424,93957336153442],["v8::internal::Compare_WithFeedbackDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336154704,93957336154839],["v8::internal::ArraySingleArgumentConstructorDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336155552,93957336155689],["v8::internal::BaselineLeaveFrameDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336156112,93957336156239],["v8::internal::ForInPrepareDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336156512,93957336156647],["v8::internal::WasmFloat64ToNumberDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336156784,93957336156899],["v8::internal::I32PairToBigIntDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336157040,93957336157167],["v8::internal::BigIntToI32PairDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336157296,93957336157423],["v8::internal::BackingStore::AttachSharedWasmMemoryObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmMemoryObject>)",93957338224112,93957338224131],["v8::internal::MutableBigInt::Copy(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>)",93957338230752,93957338230939],["v8::internal::BigInt::Remainder(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338236448,93957338237041],["v8::internal::BigInt::SignedRightShift(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338240416,93957338240472],["v8::internal::BigInt::BitwiseXor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338241504,93957338241718],["v8::internal::BigInt::Increment(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>)",93957338242976,93957338243457],["v8::internal::BigInt::EqualToNumber(v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::Object>)",93957338244128,93957338244222],["v8::internal::MutableBigInt::ToStringBasePowerOfTwo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, int, v8::internal::ShouldThrow)",93957338244912,93957338245508],["v8::internal::BigInt::FromObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957338246784,93957338247111],["v8::internal::MutableBigInt::ToDouble(v8::internal::Handle<v8::internal::BigIntBase>)",93957338247376,93957338247833],["v8::internal::MutableBigInt::AbsoluteAdd(v8::internal::MutableBigInt, v8::internal::BigInt, v8::internal::BigInt)",93957338247984,93957338248205],["v8::internal::MutableBigInt::AbsoluteBitwiseOp(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::MutableBigInt, v8::internal::MutableBigInt::ExtraDigitsHandling, v8::internal::MutableBigInt::SymmetricOp, std::__1::function<unsigned long (unsigned long, unsigned long)> const&)",93957338248416,93957338249128],["v8::internal::BigInt::InplaceMultiplyAdd(v8::internal::FreshlyAllocatedBigInt, unsigned long, unsigned long)",93957338249392,93957338249416],["v8::internal::BigInt::GetBitfieldForSerialization() const",93957338249984,93957338250008],["v8::internal::BigInt::SerializeDigits(unsigned char*)",93957338250032,93957338250068],["v8::internal::BigInt::AsIntN(v8::internal::Isolate*, unsigned long, v8::internal::Handle<v8::internal::BigInt>)",93957338250384,93957338250634],["v8::internal::TurboAssembler::Cvtqui2ss(v8::internal::XMMRegister, v8::internal::Register)",93957341929632,93957341930142],["v8::internal::TurboAssembler::Cvttsd2uiq(v8::internal::Register, v8::internal::Operand, v8::internal::Label*)",93957341931408,93957341931985],["v8::internal::TurboAssembler::SmiUntag(v8::internal::Register, v8::internal::Register)",93957341933856,93957341933905],["v8::internal::TurboAssembler::Move(v8::internal::Register, v8::internal::Immediate)",93957341934176,93957341934191],["v8::internal::TurboAssembler::Move(v8::internal::XMMRegister, unsigned int)",93957341934352,93957341934972],["v8::internal::TurboAssembler::Psrld(v8::internal::XMMRegister, unsigned char)",93957341935104,93957341935226],["v8::internal::TurboAssembler::Psllq(v8::internal::XMMRegister, unsigned char)",93957341935952,93957341936074],["v8::internal::TurboAssembler::Move(v8::internal::XMMRegister, unsigned long, unsigned long)",93957341936208,93957341936376],["lockf",139871564239952,139871564240243],["__pipe",139871564240848,139871564240881],["chdir",139871564241088,139871564241121],["getcwd",139871564241184,139871564243029],["v8::internal::LoadWithVectorDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336152576,93957336152737],["v8::internal::NoContextDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336153648,93957336153761],["v8::internal::CallWithSpread_BaselineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336154416,93957336154551],["v8::internal::ConstructWithSpread_WithFeedbackDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336154992,93957336155136],["v8::internal::ArrayNoArgumentConstructorDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336155408,93957336155543],["v8::internal::CEntry1ArgvOnStackDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336155696,93957336155840],["v8::internal::BaselineOutOfLinePrologueDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336155968,93957336156112],["v8::internal::InterpreterCEntry1Descriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336156240,93957336156363],["v8::internal::FillDigits64(unsigned long, v8::internal::Vector<char>, int*)",93957338216048,93957338217182],["v8::internal::BackingStore::WrapAllocation(void*, unsigned long, void (*)(void*, unsigned long, void*), void*, v8::internal::SharedFlag)",93957338226432,93957338226543],["v8::internal::Handle<v8::internal::BigInt> v8::internal::BigInt::Finalize<v8::internal::Isolate>(v8::internal::Handle<v8::internal::FreshlyAllocatedBigInt>, bool)",93957338229520,93957338229734],["v8::internal::MutableBigInt::AbsoluteAddOne(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, bool, v8::internal::MutableBigInt)",93957338231824,93957338232358],["v8::internal::MutableBigInt::AbsoluteDivSmall(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, unsigned long, v8::internal::Handle<v8::internal::MutableBigInt>*, unsigned long*)",93957338234496,93957338234895],["v8::internal::MutableBigInt::AbsoluteAdd(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>, bool)",93957338237216,93957338237728],["v8::internal::MutableBigInt::RightShiftByAbsolute(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::BigIntBase>)",93957338238432,93957338239401],["v8::internal::BigInt::CompareToBigInt(v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338240528,93957338240627],["v8::internal::MutableBigInt::BitwiseAnd(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338240976,93957338241493],["v8::internal::MutableBigInt::BitwiseXor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338241728,93957338242242],["v8::internal::MutableBigInt::BitwiseOr(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338242480,93957338242973],["v8::internal::BigInt::Decrement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>)",93957338243472,93957338243787],["v8::internal::BigInt::EqualToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::String>)",93957338243952,93957338244125],["v8::internal::BigInt::CompareToDouble(v8::internal::Handle<v8::internal::BigInt>, double)",93957338244224,93957338244655],["v8::internal::BigInt::ToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, int, v8::internal::ShouldThrow)",93957338244784,93957338244900],["v8::internal::MutableBigInt::ToStringGeneric(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, int, v8::internal::ShouldThrow)",93957338245520,93957338246581],["v8::internal::TurboAssembler::Cvtqsi2ss(v8::internal::XMMRegister, v8::internal::Register)",93957341928448,93957341928577],["v8::internal::TurboAssembler::Cvttss2si(v8::internal::Register, v8::internal::XMMRegister)",93957341930800,93957341930866],["v8::internal::TurboAssembler::Cvttsd2siq(v8::internal::Register, v8::internal::XMMRegister)",93957341931248,93957341931317],["v8::internal::TurboAssembler::Cvttss2uiq(v8::internal::Register, v8::internal::Operand, v8::internal::Label*)",93957341932544,93957341933113],["v8::internal::TurboAssembler::SmiUntag(v8::internal::Register)",93957341933792,93957341933841],["v8::internal::TurboAssembler::Push(v8::internal::Smi)",93957341933920,93957341934139],["v8::internal::TurboAssembler::Move(v8::internal::Register, v8::internal::Operand)",93957341934160,93957341934176],["v8::internal::TurboAssembler::Move(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341934192,93957341934241],["eaccess",139871564238880,139871564239208],["__close",139871564240560,139871564240699],["dup3",139871564240800,139871564240833],["pipe2",139871564240896,139871564240929],["v8::internal::LoadWithReceiverBaselineDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336151328,93957336151489],["v8::internal::GrowArrayElementsDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336153088,93957336153217],["v8::internal::TorqueInterfaceDescriptor<1, 5, false>::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336153488,93957336153506],["v8::internal::LoadGlobalBaselineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336153904,93957336154031],["v8::internal::TypeConversionNoContextDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336154288,93957336154403],["v8::internal::CallWithSpread_WithFeedbackDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336154560,93957336154697],["v8::internal::Construct_WithFeedbackDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336154848,93957336154985],["v8::internal::ConstructWithArrayLike_WithFeedbackDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336155136,93957336155273],["double v8::internal::InternalStringToIntDouble<4, unsigned short const*, unsigned short const*>(unsigned short const*, unsigned short const*, bool, bool)",93957338205920,93957338206766],["v8::internal::GlobalBackingStoreRegistry::Unregister(v8::internal::BackingStore*)",93957338221264,93957338221836],["v8::internal::BackingStore::RemoveSharedWasmMemoryObjects(v8::internal::Isolate*)",93957338225152,93957338225162],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<void const*, std::__1::weak_ptr<v8::internal::BackingStore> >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<void const*, std::__1::weak_ptr<v8::internal::BackingStore> >, std::__1::__unordered_map_hasher<void const*, std::__1::__hash_value_type<void const*, std::__1::weak_ptr<v8::internal::BackingStore> >, std::__1::hash<void const*>, std::__1::equal_to<void const*>, true>, std::__1::__unordered_map_equal<void const*, std::__1::__hash_value_type<void const*, std::__1::weak_ptr<v8::internal::BackingStore> >, std::__1::equal_to<void const*>, std::__1::hash<void const*>, true>, std::__1::allocator<std::__1::__hash_value_type<void const*, std::__1::weak_ptr<v8::internal::BackingStore> > > >::__emplace_unique_key_args<void const*, std::__1::pair<void const* const, std::__1::weak_ptr<v8::internal::BackingStore> > >(void const* const&, std::__1::pair<void const* const, std::__1::weak_ptr<v8::internal::BackingStore> >&&)",93957338227104,93957338228001],["v8::internal::MaybeHandle<v8::internal::MutableBigInt> v8::internal::MutableBigInt::New<v8::internal::Isolate>(v8::internal::Isolate*, int, v8::internal::AllocationType)",93957338229184,93957338229307],["v8::internal::MutableBigInt::NewFromInt(v8::internal::Isolate*, int)",93957338229952,93957338230230],["v8::internal::BigInt::BitwiseNot(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>)",93957338231200,93957338231462],["v8::internal::MaybeHandle<v8::internal::BigInt> v8::internal::ThrowBigIntTooBig<v8::internal::BigInt, v8::internal::Isolate>(v8::internal::Isolate*)",93957338232944,93957338233018],["v8::internal::BigInt::Divide(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338233968,93957338234495],["v8::internal::MutableBigInt::AbsoluteDivLarge(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::MutableBigInt>*, v8::internal::Handle<v8::internal::MutableBigInt>*)",93957338234896,93957338236448],["v8::internal::BigInt::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338237056,93957338237206],["v8::internal::MutableBigInt::AbsoluteSub(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>, bool)",93957338237728,93957338238197],["v8::internal::BigInt::LeftShift(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338238368,93957338238424],["v8::internal::MutableBigInt::LeftShiftByAbsolute(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, v8::internal::Handle<v8::internal::BigIntBase>)",93957338239408,93957338240405],["v8::internal::BigInt::UnsignedRightShift(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338240480,93957338240528],["v8::internal::BigInt::EqualToBigInt(v8::internal::BigInt, v8::internal::BigInt)",93957338240640,93957338240749],["v8::internal::TurboAssembler::Cvtss2sd(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341927568,93957341927633],["v8::internal::TurboAssembler::Cvtlui2ss(v8::internal::XMMRegister, v8::internal::Register)",93957341929024,93957341929164],["v8::internal::TurboAssembler::Cvtqui2sd(v8::internal::XMMRegister, v8::internal::Register)",93957341930208,93957341930730],["v8::internal::TurboAssembler::Cvttsd2si(v8::internal::Register, v8::internal::XMMRegister)",93957341930944,93957341931010],["v8::internal::TurboAssembler::Cvttss2siq(v8::internal::Register, v8::internal::Operand)",93957341931168,93957341931235],["v8::internal::TurboAssembler::Cvttsd2siq(v8::internal::Register, v8::internal::Operand)",93957341931328,93957341931395],["v8::internal::TurboAssembler::Cvttsd2uiq(v8::internal::Register, v8::internal::XMMRegister, v8::internal::Label*)",93957341932000,93957341932530],["v8::internal::TurboAssembler::Cvttss2uiq(v8::internal::Register, v8::internal::XMMRegister, v8::internal::Label*)",93957341933120,93957341933642],["access",139871564238832,139871564238866],["__fcntl",139871564239664,139871564239898],["lockf64",139871564240256,139871564240547],["dup",139871564240704,139871564240737],["v8::internal::CEntry1ArgvOnStackDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336150256,93957336150367],["v8::internal::StoreTransitionDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336152000,93957336152189],["v8::internal::ApiGetterDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336152928,93957336153068],["v8::internal::BigIntToI64Descriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336153360,93957336153378],["v8::internal::GetPropertyDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336153456,93957336153474],["v8::internal::AllocateDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336153520,93957336153635],["v8::internal::LoadGlobalDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336153776,93957336153903],["v8::internal::FastNewObjectDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957336154032,93957336154159],["v8::internal::DoubleToRadixCString(double, int)",93957338197536,93957338198487],["v8::internal::StringToBigIntHelper<v8::internal::Isolate>::AllocateResult()",93957338210848,93957338210929],["v8::internal::MathRandom::RefillCache(v8::internal::Isolate*, unsigned long)",93957338218272,93957338218641],["v8::internal::BackingStore::TryAllocateWasmMemory(v8::internal::Isolate*, unsigned long, unsigned long, v8::internal::SharedFlag)",93957338222496,93957338223567],["v8::internal::BackingStore::BroadcastSharedWasmMemoryGrow(v8::internal::Isolate*, std::__1::shared_ptr<v8::internal::BackingStore>)",93957338224688,93957338224774],["v8::internal::BackingStore::UpdateSharedWasmMemoryObjects(v8::internal::Isolate*)",93957338225968,93957338225978],["v8::internal::GlobalBackingStoreRegistry::Register(std::__1::shared_ptr<v8::internal::BackingStore>)",93957338226592,93957338227070],["v8::internal::Handle<v8::internal::BigInt> v8::internal::BigInt::Zero<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::AllocationType)",93957338228400,93957338228410],["v8::internal::MaybeHandle<v8::internal::FreshlyAllocatedBigInt> v8::internal::BigInt::AllocateFor<v8::internal::Isolate>(v8::internal::Isolate*, int, int, v8::internal::ShouldThrow, v8::internal::AllocationType)",93957338228928,93957338229172],["v8::internal::MaybeHandle<v8::internal::FreshlyAllocatedBigInt> v8::internal::BigInt::AllocateFor<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, int, int, v8::internal::ShouldThrow, v8::internal::AllocationType)",93957338229312,93957338229517],["v8::internal::Handle<v8::internal::BigInt> v8::internal::MutableBigInt::MakeImmutable<v8::internal::Isolate>(v8::internal::Handle<v8::internal::MutableBigInt>)",93957338229744,93957338229942],["v8::internal::MutableBigInt::NewFromDouble(v8::internal::Isolate*, double)",93957338230240,93957338230748],["v8::internal::BigInt::UnaryMinus(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>)",93957338230944,93957338231195],["v8::internal::MutableBigInt::AbsoluteSubOne(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigIntBase>, int)",93957338231472,93957338231814],["v8::internal::BigInt::Exponentiate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338232368,93957338232939],["v8::internal::BigInt::Multiply(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BigInt>, v8::internal::Handle<v8::internal::BigInt>)",93957338233024,93957338233653],["v8::internal::MacroAssembler::CallRuntime(v8::internal::Runtime::Function const*, int, v8::internal::SaveFPRegsMode)",93957341925344,93957341925599],["v8::internal::TurboAssembler::Cvtlsi2sd(v8::internal::XMMRegister, v8::internal::Register)",93957341927904,93957341928036],["v8::internal::TurboAssembler::Cvtqsi2sd(v8::internal::XMMRegister, v8::internal::Register)",93957341928736,93957341928871],["v8::internal::TurboAssembler::Cvtlui2sd(v8::internal::XMMRegister, v8::internal::Register)",93957341929312,93957341929458],["v8::internal::TurboAssembler::Cvtqui2ss(v8::internal::XMMRegister, v8::internal::Operand)",93957341930144,93957341930193],["v8::internal::TurboAssembler::Cvtqui2sd(v8::internal::XMMRegister, v8::internal::Operand)",93957341930736,93957341930785],["v8::internal::TurboAssembler::Cvttss2si(v8::internal::Register, v8::internal::Operand)",93957341930880,93957341930944],["v8::internal::TurboAssembler::Cvttsd2si(v8::internal::Register, v8::internal::Operand)",93957341931024,93957341931088],["faccessat",139871564239216,139871564239662],["flock",139871564239904,139871564239937],["v8::internal::HandlerTable::LookupRange(int, int*, v8::internal::HandlerTable::CatchPrediction*)",93957336099888,93957336100237],["v8::internal::LoadDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336150720,93957336150860],["v8::internal::StoreGlobalWithVectorDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336151648,93957336151809],["v8::internal::BaselineLeaveFrameDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336152320,93957336152449],["v8::internal::StoreWithVectorDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336152752,93957336152927],["v8::internal::NoContextDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336153072,93957336153084],["v8::internal::ArrayNArgumentsConstructorDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336153232,93957336153350],["v8::internal::TorqueInterfaceDescriptor<1, 4, false>::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336153392,93957336153410],["v8::internal::MaybeHandle<v8::internal::BigInt> v8::internal::BigIntLiteral<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, char const*)",93957338190048,93957338190201],["double v8::internal::InternalStringToIntDouble<1, unsigned char const*, unsigned char const*>(unsigned char const*, unsigned char const*, bool, bool)",93957338200672,93957338201260],["void v8::internal::StringToIntHelper<v8::internal::LocalIsolate>::DetectRadixInternal<unsigned short const*>(unsigned short const*, int)",93957338208592,93957338209241],["v8::internal::DoubleToAscii(double, v8::internal::DtoaMode, int, v8::internal::Vector<char>, int*, int*, int*)",93957338211184,93957338211497],["v8::internal::MathRandom::InitializeContext(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>)",93957338217792,93957338218206],["v8::internal::BignumStrtod(v8::internal::Vector<char const>, int, double)",93957338220304,93957338220807],["v8::internal::BackingStore::Allocate(v8::internal::Isolate*, unsigned long, v8::internal::SharedFlag, v8::internal::InitializedFlag)",93957338221856,93957338222373],["v8::internal::BackingStore::CopyWasmMemory(v8::internal::Isolate*, unsigned long)",93957338223776,93957338223893],["v8::internal::GlobalBackingStoreRegistry::AddSharedWasmMemoryObject(v8::internal::Isolate*, v8::internal::BackingStore*, v8::internal::Handle<v8::internal::WasmMemoryObject>)",93957338224144,93957338224678],["v8::internal::GlobalBackingStoreRegistry::BroadcastSharedWasmMemoryGrow(v8::internal::Isolate*, std::__1::shared_ptr<v8::internal::BackingStore>)",93957338224784,93957338225141],["v8::internal::GlobalBackingStoreRegistry::Purge(v8::internal::Isolate*)",93957338225168,93957338225958],["v8::internal::GlobalBackingStoreRegistry::UpdateSharedWasmMemoryObjects(v8::internal::Isolate*)",93957338225984,93957338226427],["v8::internal::BackingStore::EmptyBackingStore(v8::internal::SharedFlag)",93957338226544,93957338226591],["void* std::__1::__function::__policy_invoker<void* (unsigned long)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::BackingStore::Allocate(v8::internal::Isolate*, unsigned long, v8::internal::SharedFlag, v8::internal::InitializedFlag)::$_0, void* (unsigned long)> >(std::__1::__function::__policy_storage const*, unsigned long)",93957338227072,93957338227102],["void std::__1::vector<std::__1::shared_ptr<v8_inspector::AsyncStackTrace>, std::__1::allocator<std::__1::shared_ptr<v8_inspector::AsyncStackTrace> > >::__push_back_slow_path<std::__1::shared_ptr<v8_inspector::AsyncStackTrace> const&>(std::__1::shared_ptr<v8_inspector::AsyncStackTrace> const&)",93957338228016,93957338228398],["v8::internal::Handle<v8::internal::BigInt> v8::internal::MutableBigInt::Zero<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::AllocationType)",93957338228416,93957338228667],["v8::internal::TurboAssembler::CallRecordWriteStub(v8::internal::Register, v8::internal::Register, v8::internal::RememberedSetAction, v8::internal::SaveFPRegsMode, unsigned long)",93957341923632,93957341923661],["v8::internal::TurboAssembler::PushCallerSaved(v8::internal::SaveFPRegsMode, v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341926144,93957341926813],["v8::internal::TurboAssembler::Cvtsd2ss(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341927712,93957341927794],["v8::internal::TurboAssembler::Cvtlsi2ss(v8::internal::XMMRegister, v8::internal::Register)",93957341928192,93957341928318],["v8::internal::TurboAssembler::Cvtqsi2ss(v8::internal::XMMRegister, v8::internal::Operand)",93957341928592,93957341928723],["v8::internal::TurboAssembler::Cvtqsi2sd(v8::internal::XMMRegister, v8::internal::Operand)",93957341928880,93957341929017],["v8::internal::TurboAssembler::Cvtlui2ss(v8::internal::XMMRegister, v8::internal::Operand)",93957341929168,93957341929309],["v8::internal::TurboAssembler::Cvtlui2sd(v8::internal::XMMRegister, v8::internal::Operand)",93957341929472,93957341929619],["v8::internal::HandlerTable::SetRangeStart(int, int)",93957336099536,93957336099555],["v8::internal::CallDescriptors::InitializeOncePerProcess()",93957336101440,93957336149948],["v8::internal::FastNewObjectDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336150496,93957336150607],["v8::internal::LoadGlobalWithVectorDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336151008,93957336151148],["v8::internal::StoreGlobalDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336151504,93957336151644],["v8::internal::StoreDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336151824,93957336151985],["v8::internal::BaselineOutOfLinePrologueDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336152192,93957336152314],["v8::internal::TypeConversionDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336152464,93957336152572],["v8::internal::Bignum::MultiplyByPowerOfTen(int)",93957338182496,93957338183313],["v8::internal::StringToBigIntHelper<v8::internal::Isolate>::CheckTermination()",93957338194384,93957338194450],["v8::internal::NumberParseIntHelper::ResultMultiplyAdd(unsigned int, unsigned int)",93957338199824,93957338199858],["double v8::internal::InternalStringToIntDouble<5, unsigned char const*, unsigned char const*>(unsigned char const*, unsigned char const*, bool, bool)",93957338203024,93957338203663],["v8::internal::StringToIntHelper<v8::internal::LocalIsolate>::ParseInt()",93957338207664,93957338208095],["bool v8::internal::StringToIntHelper<v8::internal::LocalIsolate>::ParseChunkInternal<unsigned short const*>(unsigned short const*)",93957338209648,93957338210110],["v8::internal::StringToBigIntHelper<v8::internal::LocalIsolate>::AllocateResult()",93957338210976,93957338211057],["v8::internal::BiggestPowerTen(unsigned int, int, unsigned int*, int*)",93957338213840,93957338214137],["v8::internal::FillFractionals(unsigned long, int, int, v8::internal::Vector<char>, int*, int*)",93957338217184,93957338217792],["v8::internal::MathRandom::ResetContext(v8::internal::Context)",93957338218208,93957338218259],["v8::internal::Strtod(v8::internal::Vector<char const>, int)",93957338218656,93957338220299],["v8::internal::BackingStore::~BackingStore()",93957338220816,93957338221254],["v8::internal::BackingStore::ReleaseReservation(unsigned long)",93957338221840,93957338221854],["v8::internal::BackingStore::ReserveAddressSpace(unsigned long)",93957338222384,93957338222495],["v8::internal::BackingStore::AllocateWasmMemory(v8::internal::Isolate*, unsigned long, unsigned long, v8::internal::SharedFlag)",93957338223568,93957338223762],["v8::internal::BackingStore::GrowWasmMemoryInPlace(v8::internal::Isolate*, unsigned long, unsigned long)",93957338223904,93957338224104],["v8::internal::TurboAssembler::SaveRegisters(unsigned int)",93957341921424,93957341921969],["v8::internal::TurboAssembler::Assert(v8::internal::Condition, v8::internal::AbortReason)",93957341924448,93957341924529],["v8::internal::TurboAssembler::Jump(v8::internal::Handle<v8::internal::Code>, v8::internal::RelocInfo::Mode, v8::internal::Condition)",93957341925696,93957341925864],["v8::internal::TurboAssembler::Movdqa(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341927488,93957341927516],["v8::internal::TurboAssembler::Cvtss2sd(v8::internal::XMMRegister, v8::internal::Operand)",93957341927648,93957341927712],["v8::internal::TurboAssembler::Cvtsd2ss(v8::internal::XMMRegister, v8::internal::Operand)",93957341927808,93957341927895],["v8::internal::TurboAssembler::Cvtlsi2sd(v8::internal::XMMRegister, v8::internal::Operand)",93957341928048,93957341928182],["v8::internal::TurboAssembler::Cvtlsi2ss(v8::internal::XMMRegister, v8::internal::Operand)",93957341928320,93957341928448],["v8::internal::HandlerTable::HandlerTable(unsigned long, int, v8::internal::HandlerTable::EncodingMode)",93957336099184,93957336099240],["v8::internal::HandlerTable::LengthForRange(int)",93957336099664,93957336099675],["v8::internal::CallInterfaceDescriptorData::InitializePlatformSpecific(int, v8::internal::Register const*)",93957336100384,93957336100706],["v8::internal::CallInterfaceDescriptor::DebugName() const",93957336150064,93957336150131],["v8::internal::InterpreterCEntry1Descriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336150368,93957336150486],["v8::internal::TailCallOptimizedCodeSlotDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336150608,93957336150712],["v8::internal::LoadGlobalDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336150864,93957336150993],["v8::internal::LoadWithReceiverAndVectorDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336151152,93957336151327],["v8::internal::Ticker::~Ticker()",93957338176880,93957338176951],["v8::internal::Bignum::DivideModuloIntBignum(v8::internal::Bignum const&)",93957338187536,93957338188582],["double v8::internal::InternalStringToDouble<unsigned char const*, unsigned char const*>(unsigned char const*, unsigned char const*, int, double)",93957338190448,93957338192128],["v8::internal::DoubleToFixedCString(double, int)",93957338195776,93957338196336],["v8::internal::TryStringToDouble(v8::internal::LocalIsolate*, v8::internal::Handle<v8::internal::String>, int)",93957338198624,93957338198870],["double v8::internal::NumberParseIntHelper::HandlePowerOfTwoCase<unsigned char const*>(unsigned char const*)",93957338200384,93957338200514],["double v8::internal::InternalStringToIntDouble<3, unsigned char const*, unsigned char const*>(unsigned char const*, unsigned char const*, bool, bool)",93957338201824,93957338202382],["double v8::internal::InternalStringToIntDouble<2, unsigned short const*, unsigned short const*>(unsigned short const*, unsigned short const*, bool, bool)",93957338204416,93957338205167],["double v8::internal::InternalStringToIntDouble<5, unsigned short const*, unsigned short const*>(unsigned short const*, unsigned short const*, bool, bool)",93957338206768,93957338207651],["void v8::internal::StringToIntHelper<v8::internal::LocalIsolate>::DetectRadixInternal<unsigned char const*>(unsigned char const*, int)",93957338208096,93957338208583],["bool v8::internal::StringToIntHelper<v8::internal::LocalIsolate>::ParseChunkInternal<unsigned char const*>(unsigned char const*)",93957338209248,93957338209638],["double v8::internal::InternalStringToIntDouble<3, char*, char*>(char*, char*, bool, bool)",93957338210112,93957338210839],["v8::internal::StringToBigIntHelper<v8::internal::LocalIsolate>::ResultMultiplyAdd(unsigned int, unsigned int)",93957338210944,93957338210965],["v8::internal::DiyFp::Multiply(v8::internal::DiyFp const&)",93957338211072,93957338211176],["v8::internal::FastDtoa(double, v8::internal::FastDtoaMode, int, v8::internal::Vector<char>, int*, int*)",93957338211504,93957338213839],["v8::internal::FastFixedDtoa(double, int, v8::internal::Vector<char>, int*, int*)",93957338214144,93957338216047],["v8::internal::TurboAssembler::LoadAnyTaggedField(v8::internal::Register, v8::internal::Operand)",93957341919904,93957341920012],["v8::internal::TurboAssembler::Move(v8::internal::Register, v8::internal::Smi)",93957341922960,93957341923139],["v8::internal::MacroAssembler::AssertNotSmi(v8::internal::Register)",93957341923968,93957341924064],["v8::internal::TurboAssembler::Abort(v8::internal::AbortReason)",93957341924576,93957341925091],["v8::internal::TurboAssembler::Set(v8::internal::Register, long)",93957341925600,93957341925691],["v8::internal::TurboAssembler::RequiredStackSizeForCallerSaved(v8::internal::SaveFPRegsMode, v8::internal::Register, v8::internal::Register, v8::internal::Register) const",93957341925872,93957341926137],["v8::internal::TurboAssembler::PopCallerSaved(v8::internal::SaveFPRegsMode, v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341926816,93957341927487],["v8::internal::TurboAssembler::Movapd(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341927520,93957341927565],["v8::internal::StringSearch<unsigned char, unsigned short>::BoyerMooreSearch(v8::internal::StringSearch<unsigned char, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336096176,93957336096598],["v8::internal::HandlerTable::GetRangeStart(int) const",93957336099408,93957336099427],["v8::internal::HandlerTable::SetRangeHandler(int, int, v8::internal::HandlerTable::CatchPrediction)",93957336099600,93957336099627],["v8::internal::HandlerTable::EmitReturnEntry(v8::internal::Assembler*, int, int)",93957336099824,93957336099866],["v8::internal::HandlerTable::LookupReturn(int)",93957336100240,93957336100374],["v8::internal::CallInterfaceDescriptorData::InitializePlatformIndependent(v8::base::Flags<v8::internal::CallInterfaceDescriptorData::Flag, int>, int, int, v8::internal::MachineType const*, int, v8::internal::StackArgumentOrder)",93957336100720,93957336101440],["v8::internal::CallDescriptors::TearDown()",93957336149952,93957336150050],["v8::internal::AllocateDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957336150144,93957336150248],["v8::internal::ExistingCodeLogger::LogExistingFunction(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::CodeEventListener::LogEventsAndTags)",93957338170480,93957338171686],["v8::internal::metrics::Recorder::Task::Run()",93957338177920,93957338178327],["v8::internal::Bignum::MultiplyByUInt32(unsigned int)",93957338184832,93957338185058],["v8::internal::PowersOfTenCache::GetCachedPowerForBinaryExponentRange(int, int, v8::internal::DiyFp*, int*)",93957338189552,93957338189650],["v8::internal::StringToDouble(char const*, int, double)",93957338190368,93957338190423],["double v8::internal::InternalStringToDouble<unsigned short const*, unsigned short const*>(unsigned short const*, unsigned short const*, int, double)",93957338192160,93957338194179],["v8::internal::DoubleToCString(double, v8::internal::Vector<char>)",93957338194608,93957338195547],["v8::internal::CreateExponentialRepresentation(char*, int, bool, int)",93957338196592,93957338196890],["v8::internal::StringToDouble(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, int, double)",93957338198496,93957338198610],["v8::internal::IsSpecialIndex(v8::internal::String)",93957338198880,93957338199810],["v8::internal::NumberParseIntHelper::HandleSpecialCases()",93957338199872,93957338200379],["double v8::internal::NumberParseIntHelper::HandlePowerOfTwoCase<unsigned short const*>(unsigned short const*)",93957338200528,93957338200657],["double v8::internal::InternalStringToIntDouble<2, unsigned char const*, unsigned char const*>(unsigned char const*, unsigned char const*, bool, bool)",93957338201264,93957338201822],["double v8::internal::InternalStringToIntDouble<4, unsigned char const*, unsigned char const*>(unsigned char const*, unsigned char const*, bool, bool)",93957338202384,93957338203023],["double v8::internal::InternalStringToIntDouble<1, unsigned short const*, unsigned short const*>(unsigned short const*, unsigned short const*, bool, bool)",93957338203664,93957338204415],["double v8::internal::InternalStringToIntDouble<3, unsigned short const*, unsigned short const*>(unsigned short const*, unsigned short const*, bool, bool)",93957338205168,93957338205919],["v8::internal::TurboAssembler::Move(v8::internal::Register, v8::internal::ExternalReference)",93957341919072,93957341919117],["v8::internal::TurboAssembler::DecompressTaggedPointer(v8::internal::Register, v8::internal::Register)",93957341920080,93957341920182],["v8::internal::TurboAssembler::CallEphemeronKeyBarrier(v8::internal::Register, v8::internal::Register, v8::internal::SaveFPRegsMode)",93957341922544,93957341922766],["v8::internal::TurboAssembler::CallRecordWriteStub(v8::internal::Register, v8::internal::Register, v8::internal::RememberedSetAction, v8::internal::SaveFPRegsMode)",93957341923264,93957341923294],["v8::internal::TurboAssembler::CallBuiltin(int)",93957341923664,93957341923958],["v8::internal::TurboAssembler::CheckPageFlag(v8::internal::Register, v8::internal::Register, int, v8::internal::Condition, v8::internal::Label*, v8::internal::Label::Distance)",93957341924064,93957341924448],["v8::internal::TurboAssembler::AssertUnreachable(v8::internal::AbortReason)",93957341924544,93957341924569],["v8::internal::TurboAssembler::PrepareCallCFunction(int)",93957341925104,93957341925342],["v8::internal::StringSearch<unsigned short, unsigned char>::InitialSearch(v8::internal::StringSearch<unsigned short, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336090896,93957336091989],["v8::internal::StringSearch<unsigned short, unsigned short>::BoyerMooreHorspoolSearch(v8::internal::StringSearch<unsigned short, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336098352,93957336098698],["v8::internal::HandlerTable::HandlerTable(v8::internal::BytecodeArray)",93957336099312,93957336099364],["v8::internal::HandlerTable::GetRangeHandler(int) const",93957336099472,93957336099497],["v8::internal::HandlerTable::SetRangeEnd(int, int)",93957336099568,93957336099590],["v8::internal::HandlerTable::SetRangeData(int, int)",93957336099632,93957336099654],["v8::internal::HandlerTable::EmitReturnTableStart(v8::internal::Assembler*)",93957336099680,93957336099824],["v8::internal::wasm::SimdShuffle::Pack4Lanes(unsigned char const*)",93957336099872,93957336099880],["v8::internal::Logger::CodeLinePosInfoRecordEvent(unsigned long, v8::internal::Vector<unsigned char const>)",93957338165456,93957338165564],["v8::internal::Logger::TearDownAndGetLogFile()",93957338175184,93957338175913],["v8::internal::metrics::Recorder::NotifyIsolateDisposal()",93957338177424,93957338177446],["v8::internal::Bignum::AssignUInt16(unsigned short)",93957338180880,93957338180966],["v8::internal::Bignum::SubtractBignum(v8::internal::Bignum const&)",93957338184000,93957338184627],["v8::internal::Bignum::Square()",93957338185344,93957338186294],["v8::internal::Bignum::Compare(v8::internal::Bignum const&, v8::internal::Bignum const&)",93957338188960,93957338189178],["v8::internal::MaybeHandle<v8::internal::BigInt> v8::internal::BigIntLiteral<v8::internal::Isolate>(v8::internal::Isolate*, char const*)",93957338189728,93957338189881],["v8::internal::StringToBigIntHelper<v8::internal::LocalIsolate>::GetResult()",93957338190208,93957338190354],["v8::internal::StringToDouble(v8::internal::Vector<unsigned char const>, int, double)",93957338190432,93957338190445],["v8::internal::StringToDouble(v8::internal::Vector<unsigned short const>, int, double)",93957338192128,93957338192145],["v8::internal::StringToInt(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, int)",93957338194192,93957338194381],["v8::internal::StringToBigInt(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957338194464,93957338194604],["v8::internal::IntToCString(int, v8::internal::Vector<char>)",93957338195552,93957338195769],["v8::internal::DoubleToExponentialCString(double, int)",93957338196336,93957338196580],["v8::internal::DoubleToPrecisionCString(double, int)",93957338196896,93957338197527],["void v8::internal::TurboAssembler::Movdqu<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341917632,93957341917660],["v8::internal::TurboAssembler::Push(v8::internal::Operand)",93957341919344,93957341919354],["v8::internal::TurboAssembler::StoreTaggedField(v8::internal::Operand, v8::internal::Register)",93957341920032,93957341920048],["v8::internal::TurboAssembler::JumpIfSmi(v8::internal::Register, v8::internal::Label*, v8::internal::Label::Distance)",93957341920720,93957341920778],["v8::internal::TurboAssembler::RestoreRegisters(unsigned int)",93957341921984,93957341922529],["v8::internal::TurboAssembler::MovePair(v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341922768,93957341922952],["v8::internal::TurboAssembler::Call(v8::internal::Handle<v8::internal::Code>, v8::internal::RelocInfo::Mode)",93957341923152,93957341923254],["v8::internal::TurboAssembler::CallRecordWriteStub(v8::internal::Register, v8::internal::Register, v8::internal::RememberedSetAction, v8::internal::SaveFPRegsMode, int, unsigned long)",93957341923296,93957341923627],["v8::internal::StringSearch<unsigned char, unsigned char>::LinearSearch(v8::internal::StringSearch<unsigned char, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336087024,93957336087254],["v8::internal::StringSearch<unsigned char, unsigned short>::SingleCharSearch(v8::internal::StringSearch<unsigned char, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336094048,93957336094227],["v8::internal::StringSearch<unsigned short, unsigned short>::LinearSearch(v8::internal::StringSearch<unsigned short, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336096816,93957336097164],["v8::internal::FlushInstructionCache(void*, unsigned long)",93957336099072,93957336099100],["v8::internal::HandlerTable::HandlerTable(v8::internal::wasm::WasmCode const*)",93957336099248,93957336099311],["v8::internal::HandlerTable::HandlerTable(v8::internal::ByteArray)",93957336099376,93957336099408],["v8::internal::HandlerTable::GetRangeEnd(int) const",93957336099440,93957336099462],["v8::internal::HandlerTable::GetRangeData(int) const",93957336099504,93957336099526],["v8::internal::(anonymous namespace)::AppendCodeCreateHeader(v8::internal::Log::MessageBuilder&, v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::CodeKind, unsigned char*, int, unsigned long)",93957338161792,93957338161992],["v8::internal::Logger::ScriptEvent(v8::internal::Logger::ScriptEventType, int)",93957338167456,93957338167711],["v8::internal::Logger::SetUp(v8::internal::Isolate*)",93957338172400,93957338174578],["v8::internal::Profiler::~Profiler()",93957338176560,93957338176605],["v8::internal::Ticker::SampleStack(v8::RegisterState const&)",93957338177040,93957338177342],["v8::internal::metrics::Recorder::Task::~Task()",93957338177760,93957338177833],["v8::internal::GenerateCountedDigits(int, int*, v8::internal::Bignum*, v8::internal::Bignum*, v8::internal::Vector<char>, int*)",93957338180480,93957338180744],["v8::internal::Bignum::AssignBignum(v8::internal::Bignum const&)",93957338181168,93957338181292],["v8::internal::Bignum::AddBignum(v8::internal::Bignum const&)",93957338183328,93957338183988],["v8::internal::Bignum::ShiftLeft(int)",93957338184640,93957338184828],["v8::internal::Bignum::MultiplyByUInt64(unsigned long)",93957338185072,93957338185335],["v8::internal::Bignum::AssignPowerUInt16(unsigned short, int)",93957338186304,93957338187526],["v8::internal::Bignum::SubtractTimes(v8::internal::Bignum const&, int)",93957338188592,93957338188950],["v8::internal::Bignum::PlusCompare(v8::internal::Bignum const&, v8::internal::Bignum const&, v8::internal::Bignum const&)",93957338189184,93957338189537],["v8::internal::PowersOfTenCache::GetCachedPowerForDecimalExponent(int, v8::internal::DiyFp*, int*)",93957338189664,93957338189728],["v8::internal::StringToBigIntHelper<v8::internal::Isolate>::GetResult()",93957338189888,93957338190034],["v8::internal::ApiCallbackDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341917104,93957341917178],["v8::internal::TurboAssembler::LoadRootRegisterOffset(v8::internal::Register, long)",93957341918592,93957341918702],["v8::internal::TurboAssembler::LoadRoot(v8::internal::Register, v8::internal::RootIndex)",93957341919136,93957341919248],["v8::internal::TurboAssembler::LoadMap(v8::internal::Register, v8::internal::Register)",93957341919568,93957341919793],["v8::internal::TurboAssembler::StoreTaggedField(v8::internal::Operand, v8::internal::Immediate)",93957341920016,93957341920032],["v8::internal::TurboAssembler::StoreTaggedSignedField(v8::internal::Operand, v8::internal::Smi)",93957341920048,93957341920066],["v8::internal::MacroAssembler::RecordWriteField(v8::internal::Register, int, v8::internal::Register, v8::internal::Register, v8::internal::SaveFPRegsMode, v8::internal::RememberedSetAction, v8::internal::SmiCheck)",93957341920192,93957341920720],["v8::internal::MacroAssembler::RecordWrite(v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::SaveFPRegsMode, v8::internal::RememberedSetAction, v8::internal::SmiCheck)",93957341920784,93957341921409],["v8::internal::ExternalReference::call_enter_context_function()",93957336086368,93957336086381],["v8::internal::StringSearch<unsigned char, unsigned char>::BoyerMooreSearch(v8::internal::StringSearch<unsigned char, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336090112,93957336090447],["v8::internal::StringSearch<unsigned short, unsigned char>::PopulateBoyerMooreTable()",93957336092640,93957336093678],["v8::internal::StringSearch<unsigned char, unsigned short>::InitialSearch(v8::internal::StringSearch<unsigned char, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336094528,93957336095764],["v8::internal::StringSearch<unsigned short, unsigned short>::SingleCharSearch(v8::internal::StringSearch<unsigned short, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336096608,93957336096809],["v8::internal::StringSearch<unsigned short, unsigned short>::InitialSearch(v8::internal::StringSearch<unsigned short, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336097168,93957336098345],["v8::internal::StringSearch<unsigned short, unsigned short>::BoyerMooreSearch(v8::internal::StringSearch<unsigned short, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336098704,93957336099065],["v8::internal::HandlerTable::HandlerTable(v8::internal::Code)",93957336099104,93957336099171],["v8::internal::Logger::BuiltinHashEvent(char const*, int)",93957338154800,93957338154978],["v8::internal::Logger::SharedFunctionInfoMoveEvent(unsigned long, unsigned long)",93957338163280,93957338163352],["v8::internal::Logger::FunctionEvent(char const*, int, double, int, int, v8::internal::String)",93957338166272,93957338166479],["v8::internal::Logger::MapEvent(char const*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Map>, char const*, v8::internal::Handle<v8::internal::HeapObject>)",93957338168832,93957338169527],["v8::internal::Logger::LogAccessorCallbacks()",93957338171712,93957338172213],["v8::internal::Logger::file_name() const",93957338175088,93957338175116],["v8::internal::JitLogger::~JitLogger()",93957338176400,93957338176469],["v8::internal::Logger::is_listening_to_code_events()",93957338176672,93957338176710],["v8::internal::Ticker::~Ticker()",93957338176960,93957338177039],["v8::internal::SamplingThread::Run()",93957338177344,93957338177409],["v8::internal::metrics::Recorder::Delay(std::__1::unique_ptr<v8::internal::metrics::Recorder::DelayedEventBase, std::__1::default_delete<v8::internal::metrics::Recorder::DelayedEventBase> >&&)",93957338177456,93957338177759],["v8::internal::metrics::Recorder::Task::~Task()",93957338177840,93957338177916],["v8::internal::BignumDtoa(double, v8::internal::BignumDtoaMode, int, v8::internal::Vector<char>, int*, int*)",93957338178336,93957338180469],["v8::internal::Bignum::Bignum()",93957338180752,93957338180874],["v8::internal::Bignum::AssignUInt64(unsigned long)",93957338180976,93957338181159],["v8::internal::Bignum::AssignDecimalString(v8::internal::Vector<char const>)",93957338181296,93957338182482],["v8::internal::CallWithSpreadDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916496,93957341916564],["v8::internal::FrameDropperTrampolineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341917424,93957341917482],["v8::internal::TurboAssembler::LoadFromConstantsTable(v8::internal::Register, int)",93957341918176,93957341918476],["v8::internal::TurboAssembler::LoadRootRelative(v8::internal::Register, int)",93957341918736,93957341918820],["v8::internal::TurboAssembler::Push(v8::internal::Register)",93957341919120,93957341919130],["v8::internal::MacroAssembler::PushRoot(v8::internal::RootIndex)",93957341919248,93957341919339],["v8::internal::TurboAssembler::CompareRoot(v8::internal::Register, v8::internal::RootIndex)",93957341919360,93957341919566],["v8::internal::TurboAssembler::DecompressTaggedSigned(v8::internal::Register, v8::internal::Operand)",93957341919808,93957341919889],["v8::internal::ExternalReference::atomic_pair_and_function()",93957336086176,93957336086189],["v8::internal::hash_value(v8::internal::ExternalReference)",93957336086432,93957336086464],["v8::internal::StringSearch<unsigned char, unsigned char>::BoyerMooreHorspoolSearch(v8::internal::StringSearch<unsigned char, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336088416,93957336089056],["v8::internal::StringSearch<unsigned short, unsigned char>::SingleCharSearch(v8::internal::StringSearch<unsigned short, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336090464,93957336090614],["v8::internal::StringSearch<unsigned short, unsigned char>::BoyerMooreHorspoolSearch(v8::internal::StringSearch<unsigned short, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336092000,93957336092631],["v8::internal::StringSearch<unsigned short, unsigned char>::BoyerMooreSearch(v8::internal::StringSearch<unsigned short, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336093680,93957336094040],["v8::internal::StringSearch<unsigned char, unsigned short>::LinearSearch(v8::internal::StringSearch<unsigned char, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336094240,93957336094528],["v8::internal::StringSearch<unsigned char, unsigned short>::BoyerMooreHorspoolSearch(v8::internal::StringSearch<unsigned char, unsigned short>*, v8::internal::Vector<unsigned short const>, int)",93957336095776,93957336096170],["v8::internal::Logger::ProfilerBeginEvent()",93957338151776,93957338151930],["v8::internal::Logger::LogSourceCodeInformation(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957338156160,93957338157565],["v8::internal::Logger::SetterCallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957338162416,93957338162439],["v8::internal::Logger::CodeDeoptEvent(v8::internal::Handle<v8::internal::Code>, v8::internal::DeoptimizeKind, unsigned long, int, bool)",93957338164688,93957338164840],["v8::internal::Logger::ResourceEvent(char const*, char const*)",93957338165760,93957338166015],["v8::internal::Logger::FunctionEvent(char const*, int, double, int, int, char const*, unsigned long, bool)",93957338166752,93957338166972],["v8::internal::Logger::RuntimeCallTimerEvent()",93957338168096,93957338168235],["v8::internal::Logger::MapCreate(v8::internal::Map)",93957338170224,93957338170449],["v8::internal::Logger::LogCompiledFunctions()",93957338171696,93957338171710],["v8::internal::Logger::LogAllMaps()",93957338172224,93957338172398],["v8::internal::Logger::SetCodeEventHandler(unsigned int, void (*)(v8::JitCodeEvent const*))",93957338174592,93957338175086],["v8::internal::Logger::StopProfilerThread()",93957338175120,93957338175179],["v8::internal::ExistingCodeLogger::LogCodeObject(v8::internal::Object)",93957338175920,93957338176390],["v8::internal::JitLogger::~JitLogger()",93957338176480,93957338176554],["v8::internal::Profiler::~Profiler()",93957338176608,93957338176661],["std::__1::default_delete<v8::internal::Log>::operator()(v8::internal::Log*) const",93957338176720,93957338176878],["v8::internal::DynamicCheckMapsDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341915872,93957341915937],["v8::internal::ConstructStubDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916800,93957341916874],["v8::internal::InterpreterPushArgsThenCallDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341917264,93957341917329],["void v8::internal::TurboAssembler::Movdqu<v8::internal::XMMRegister, v8::internal::Operand>(v8::internal::XMMRegister, v8::internal::Operand)",93957341917568,93957341917596],["v8::internal::TurboAssembler::ExternalReferenceAsOperand(v8::internal::ExternalReference, v8::internal::Register)",93957341917664,93957341918176],["v8::internal::TurboAssembler::LoadTaggedPointerField(v8::internal::Register, v8::internal::Operand)",93957341918480,93957341918588],["v8::internal::TurboAssembler::Move(v8::internal::Register, v8::internal::Register)",93957341918704,93957341918725],["v8::internal::TurboAssembler::LoadAddress(v8::internal::Register, v8::internal::ExternalReference)",93957341918832,93957341919069],["v8::internal::ExternalReference::call_enqueue_microtask_function()",93957336086000,93957336086013],["v8::internal::ExternalReference::atomic_pair_xor_function()",93957336086272,93957336086285],["v8::internal::ExternalReference::js_finalization_registry_remove_cell_from_unregister_token_map()",93957336086400,93957336086413],["v8::internal::HandleScopeImplementer::EnterMicrotaskContext(v8::internal::Context)",93957336086592,93957336086881],["v8::internal::StringSearch<unsigned char, unsigned char>::InitialSearch(v8::internal::StringSearch<unsigned char, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336087264,93957336088408],["v8::internal::StringSearch<unsigned char, unsigned char>::PopulateBoyerMooreTable()",93957336089056,93957336090103],["noopCurrent(UCharIterator*)",93957336090448,93957336090459],["v8::internal::StringSearch<unsigned short, unsigned char>::LinearSearch(v8::internal::StringSearch<unsigned short, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336090624,93957336090887],["v8::internal::PerfBasicLogger::LogRecordedBuffer(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo>, char const*, int)",93957338144672,93957338144959],["v8::internal::Logger::AddCodeEventListener(v8::internal::CodeEventListener*)",93957338153600,93957338153702],["v8::internal::Logger::ApiObjectAccess(char const*, v8::internal::JSReceiver)",93957338155456,93957338155632],["v8::internal::Logger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::Name>)",93957338159408,93957338159860],["v8::internal::Logger::CallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957338162352,93957338162375],["v8::internal::Logger::CodeMoveEvent(v8::internal::AbstractCode, v8::internal::AbstractCode)",93957338162864,93957338163077],["v8::internal::Logger::CodeDisableOptEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957338163408,93957338163675],["v8::internal::Logger::CodeLinePosInfoRecordEvent(unsigned long, v8::internal::ByteArray)",93957338164976,93957338165080],["v8::internal::Logger::CodeNameEvent(unsigned long, int, char const*)",93957338165568,93957338165759],["v8::internal::Logger::SuspectReadEvent(v8::internal::Name, v8::internal::Object)",93957338166016,93957338166264],["v8::internal::(anonymous namespace)::AppendFunctionMessage(v8::internal::Log::MessageBuilder&, char const*, int, double, int, int, unsigned long)",93957338166480,93957338166741],["v8::internal::Logger::CompilationCacheEvent(char const*, char const*, v8::internal::SharedFunctionInfo)",93957338166976,93957338167447],["v8::internal::Logger::ScriptDetails(v8::internal::Script)",93957338167712,93957338168081],["v8::internal::Logger::ICEvent(char const*, bool, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Object>, char, char, char const*, char const*)",93957338168240,93957338168825],["v8::internal::Logger::MapDetails(v8::internal::Map)",93957338169536,93957338170223],["v8::internal::Logger::LogCodeObjects()",93957338170464,93957338170478],["v8::internal::CompareDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915456,93957341915495],["v8::internal::CallTrampolineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916176,93957341916243],["v8::internal::ConstructVarargsDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916640,93957341916715],["v8::internal::AbortDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916960,93957341917021],["v8::internal::InterpreterDispatchDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341917184,93957341917255],["v8::internal::InterpreterPushArgsThenConstructDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341917344,93957341917416],["v8::internal::RunMicrotasksEntryDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341917488,93957341917555],["void v8::internal::TurboAssembler::Movdqu<v8::internal::Operand, v8::internal::XMMRegister>(v8::internal::Operand, v8::internal::XMMRegister)",93957341917600,93957341917628],["uprv_fmod_68",93957336085840,93957336085850],["v8::internal::ExternalReference::atomic_pair_add_function()",93957336086080,93957336086093],["v8::internal::ExternalReference::atomic_pair_or_function()",93957336086224,93957336086237],["v8::internal::ExternalReference::atomic_pair_compare_exchange_function()",93957336086320,93957336086333],["v8::internal::EnterMicrotaskContextWrapper(v8::internal::HandleScopeImplementer*, unsigned long)",93957336086384,93957336086397],["v8::internal::operator==(v8::internal::ExternalReference, v8::internal::ExternalReference)",93957336086416,93957336086428],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::ExternalReference)",93957336086464,93957336086584],["v8::internal::StringSearch<unsigned char, unsigned char>::SingleCharSearch(v8::internal::StringSearch<unsigned char, unsigned char>*, v8::internal::Vector<unsigned char const>, int)",93957336086896,93957336087013],["v8::internal::Log::MessageBuilder& v8::internal::Log::MessageBuilder::operator<< <v8::internal::Name>(v8::internal::Name)",93957338140784,93957338140844],["v8::internal::LowLevelLogger::LogRecordedBuffer(v8::internal::wasm::WasmCode const*, char const*, int)",93957338149072,93957338149207],["v8::internal::Logger::TickEvent(v8::internal::TickSample*, bool)",93957338152816,93957338153251],["v8::internal::Logger::ApiSecurityCheck()",93957338154064,93957338154199],["v8::internal::Logger::ApiNamedPropertyAccess(char const*, v8::internal::JSObject, v8::internal::Object)",93957338155024,93957338155229],["v8::internal::Logger::NewEvent(char const*, void*, unsigned long)",93957338155776,93957338155979],["v8::internal::Logger::LogCodeDisassemble(v8::internal::Handle<v8::internal::AbstractCode>)",93957338158128,93957338158939],["v8::internal::Logger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>, int, int)",93957338160624,93957338161471],["v8::internal::Logger::CallbackEventInternal(char const*, v8::internal::Handle<v8::internal::Name>, unsigned long)",93957338162000,93957338162345],["v8::internal::Logger::GetterCallbackEvent(v8::internal::Handle<v8::internal::Name>, unsigned long)",93957338162384,93957338162407],["v8::internal::Logger::RegExpCodeCreateEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::String>)",93957338162448,93957338162853],["v8::internal::Logger::MoveEventInternal(v8::internal::CodeEventListener::LogEventsAndTags, unsigned long, unsigned long)",93957338163088,93957338163269],["v8::internal::Logger::CodeMovingGCEvent()",93957338163360,93957338163397],["v8::internal::Logger::ProcessDeoptEvent(v8::internal::Handle<v8::internal::Code>, v8::internal::SourcePosition, char const*, char const*)",93957338163680,93957338164683],["v8::internal::Logger::CodeDependencyChangeEvent(v8::internal::Handle<v8::internal::Code>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, char const*)",93957338164848,93957338164970],["v8::internal::(anonymous namespace)::CodeLinePosEvent(v8::internal::JitLogger&, unsigned long, v8::internal::SourcePositionTableIterator&)",93957338165088,93957338165456],["v8::internal::CallFunctionTemplateDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915040,93957341915085],["v8::internal::InterpreterPushArgsThenCallDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915648,93957341915700],["v8::internal::EphemeronKeyBarrierDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916032,93957341916100],["v8::internal::CallForwardVarargsDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916336,93957341916404],["v8::internal::ResumeGeneratorDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916576,93957341916640],["v8::internal::ConstructForwardVarargsDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916720,93957341916794],["v8::internal::ConstructWithArrayLikeDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916880,93957341916945],["v8::internal::Compare_BaselineDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341917024,93957341917092],["v8::internal::ExternalReference::async_event_delegate_address(v8::internal::Isolate*)",93957336085680,93957336085693],["v8::internal::ExternalReference::fast_c_call_caller_fp_address(v8::internal::Isolate*)",93957336085936,93957336085946],["v8::internal::ExternalReference::atomic_pair_store_function()",93957336086032,93957336086045],["v8::internal::ExternalReference::atomic_pair_sub_function()",93957336086128,93957336086141],["v8::internal::atomic_pair_and(long, int, int)",93957336086192,93957336086223],["v8::internal::atomic_pair_or(long, int, int)",93957336086240,93957336086271],["v8::internal::atomic_pair_xor(long, int, int)",93957336086288,93957336086319],["v8::internal::atomic_pair_compare_exchange(long, int, int, int, int)",93957336086336,93957336086365],["v8::internal::Log::MessageBuilder::AppendTwoByteCharacter(char, char)",93957338139696,93957338139845],["v8::internal::CodeEventLogger::NameBuffer::AppendName(v8::internal::Name)",93957338141600,93957338142185],["v8::internal::LowLevelLogger::LowLevelLogger(v8::internal::Isolate*, char const*)",93957338148160,93957338148422],["v8::internal::JitLogger::LogRecordedBuffer(v8::internal::wasm::WasmCode const*, char const*, int)",93957338149904,93957338150779],["v8::internal::Logger::UncheckedStringEvent(char const*, char const*)",93957338152320,93957338152453],["v8::internal::Logger::~Logger()",93957338153344,93957338153553],["v8::internal::Logger::StringEvent(char const*, char const*)",93957338153872,93957338153896],["v8::internal::Logger::TimerEvent(v8::internal::Logger::StartEnd, char const*)",93957338154368,93957338154575],["v8::internal::Logger::is_logging()",93957338154992,93957338155021],["v8::internal::Logger::ApiIndexedPropertyAccess(char const*, v8::internal::JSObject, unsigned int)",93957338155232,93957338155441],["v8::internal::Logger::ApiEntryCall(char const*)",93957338155632,93957338155763],["v8::internal::Logger::DeleteEvent(char const*, void*)",93957338155984,93957338156158],["v8::internal::Logger::EnsureLogScriptSource(v8::internal::Script)",93957338157568,93957338158121],["v8::internal::Logger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, char const*)",93957338158944,93957338159393],["v8::internal::Logger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>)",93957338159872,93957338160612],["v8::internal::Logger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::wasm::WasmCode const*, v8::internal::Vector<char const>, char const*, int, int)",93957338161472,93957338161789],["v8::internal::CallInterfaceDescriptor::DefaultInitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*, int)",93957341914576,93957341914645],["v8::internal::ConstructForwardVarargsDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915248,93957341915290],["v8::internal::ApiCallbackDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915552,93957341915594],["v8::internal::ResumeGeneratorDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915776,93957341915821],["v8::internal::RecordWriteDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341915952,93957341916026],["v8::internal::TypeofDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916112,93957341916170],["v8::internal::CallVarargsDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916256,93957341916330],["v8::internal::CallFunctionTemplateDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957341916416,93957341916483],["v8::internal::ExternalReference::mutable_big_int_absolute_compare_function()",93957336085552,93957336085565],["v8::internal::ExternalReference::debug_is_active_address(v8::internal::Isolate*)",93957336085744,93957336085761],["v8::internal::ExternalReference::debug_suspended_generator_address(v8::internal::Isolate*)",93957336085872,93957336085889],["v8::internal::ExternalReference::fast_api_call_target_address(v8::internal::Isolate*)",93957336085968,93957336085978],["v8::internal::ExternalReference::atomic_pair_load_function()",93957336086016,93957336086029],["v8::internal::atomic_pair_store(long, int, int)",93957336086048,93957336086066],["v8::internal::atomic_pair_add(long, int, int)",93957336086096,93957336086116],["v8::internal::atomic_pair_sub(long, int, int)",93957336086144,93957336086167],["v8::internal::Log::MessageBuilder::AppendSymbolName(v8::internal::Symbol)",93957338140224,93957338140485],["v8::internal::CodeEventLogger::CodeEventLogger(v8::internal::Isolate*)",93957338141088,93957338141138],["v8::internal::CodeEventLogger::RegExpCodeCreateEvent(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::String>)",93957338143984,93957338144214],["v8::internal::ExistingCodeLogger::LogCodeObjects()",93957338145008,93957338145199],["v8::internal::LowLevelLogger::~LowLevelLogger()",93957338148512,93957338148594],["v8::internal::LowLevelLogger::CodeMovingGCEvent()",93957338149440,93957338149459],["v8::internal::Profiler::Engage()",93957338151136,93957338151516],["v8::internal::Profiler::Disengage()",93957338151936,93957338152318],["v8::internal::Profiler::Run()",93957338152464,93957338152814],["v8::internal::Logger::Logger(v8::internal::Isolate*)",93957338153264,93957338153342],["v8::internal::Logger::~Logger()",93957338153568,93957338153596],["v8::internal::Logger::RemoveCodeEventListener(v8::internal::CodeEventListener*)",93957338153712,93957338153858],["v8::internal::Logger::IntPtrTEvent(char const*, long)",93957338153904,93957338154058],["v8::internal::Logger::CurrentTimeEvent()",93957338154208,93957338154364],["v8::internal::Logger::BasicBlockCounterEvent(char const*, int, unsigned int)",93957338154576,93957338154786],["v8::internal::Assembler::pshufd(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341912416,93957341912597],["v8::internal::TypeofDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341914848,93957341914886],["v8::internal::CallWithArrayLikeDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915136,93957341915181],["v8::internal::ConstructWithArrayLikeDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915344,93957341915396],["v8::internal::Compare_BaselineDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915504,93957341915550],["v8::internal::InterpreterDispatchDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915600,93957341915642],["v8::internal::InterpreterPushArgsThenConstructDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915712,93957341915763],["v8::internal::RunMicrotasksEntryDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915824,93957341915869],["v8::internal::ExternalReference::copy_fast_number_jsarray_elements_to_typed_array()",93957336085424,93957336085437],["v8::internal::ConvertOneByteToLower(unsigned long, unsigned long)",93957336085616,93957336085626],["v8::internal::ExternalReference::promise_hook_or_debug_is_active_or_async_event_delegate_address(v8::internal::Isolate*)",93957336085712,93957336085725],["v8::internal::ExternalReference::invalidate_prototype_chains_function()",93957336085808,93957336085821],["v8::internal::ExternalReference::mod_two_doubles_operation()",93957336085856,93957336085869],["v8::internal::ExternalReference::debug_restart_fp_address(v8::internal::Isolate*)",93957336085904,93957336085921],["v8::internal::ExternalReference::fast_c_call_caller_pc_address(v8::internal::Isolate*)",93957336085952,93957336085962],["v8::internal::ExternalReference::stack_is_iterable_address(v8::internal::Isolate*)",93957336085984,93957336085997],["v8::internal::Log::MessageBuilder::AppendFormatString(char const*, ...)",93957338139856,93957338140217],["v8::internal::Log::MessageBuilder& v8::internal::Log::MessageBuilder::operator<< <char>(char)",93957338140608,93957338140737],["v8::internal::TimerEventScope<v8::internal::TimerEventDeoptimizeCode>::LogTimerEvent(v8::internal::Logger::StartEnd)",93957338140928,93957338141003],["v8::internal::CodeEventLogger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, char const*)",93957338141200,93957338141424],["v8::internal::CodeEventLogger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>, int, int)",93957338142624,93957338143520],["v8::internal::PerfBasicLogger::~PerfBasicLogger()",93957338144496,93957338144573],["v8::internal::PerfBasicLogger::LogRecordedBuffer(v8::internal::wasm::WasmCode const*, char const*, int)",93957338144960,93957338144996],["v8::internal::ExistingCodeLogger::LogCompiledFunctions()",93957338145200,93957338148155],["v8::internal::LowLevelLogger::~LowLevelLogger()",93957338148432,93957338148509],["v8::internal::LowLevelLogger::LogRecordedBuffer(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo>, char const*, int)",93957338148608,93957338149057],["v8::internal::LowLevelLogger::CodeMoveEvent(v8::internal::AbstractCode, v8::internal::AbstractCode)",93957338149216,93957338149427],["v8::internal::JitLogger::LogRecordedBuffer(v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::MaybeHandle<v8::internal::SharedFunctionInfo>, char const*, int)",93957338149472,93957338149899],["v8::internal::JitLogger::CodeMoveEvent(v8::internal::AbstractCode, v8::internal::AbstractCode)",93957338150784,93957338151134],["v8::internal::Logger::SharedLibraryEvent(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, long)",93957338151520,93957338151771],["v8::internal::Assembler::sse4_instr(v8::internal::Operand, v8::internal::XMMRegister, unsigned char, unsigned char, unsigned char, unsigned char, signed char)",93957341910912,93957341911130],["v8::internal::Assembler::dq(unsigned long, v8::internal::RelocInfo::Mode)",93957341913024,93957341913181],["v8::internal::DynamicCheckMapsDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341914720,93957341914777],["v8::internal::CallVarargsDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341914944,93957341914986],["v8::internal::CallWithSpreadDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915088,93957341915134],["v8::internal::ConstructVarargsDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915184,93957341915235],["v8::internal::ConstructStubDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915296,93957341915338],["v8::internal::AbortDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341915408,93957341915446],["v8::internal::(anonymous namespace)::ExternalTwoByteStringGetChars(unsigned long)",93957336085040,93957336085198],["v8::internal::ExternalReference::string_to_array_index_function()",93957336085488,93957336085501],["v8::internal::ExternalReference::check_object_type()",93957336085584,93957336085597],["v8::internal::ExternalReference::cpu_features()",93957336085648,93957336085661],["v8::internal::ExternalReference::promise_hook_or_async_event_delegate_address(v8::internal::Isolate*)",93957336085696,93957336085709],["v8::internal::ExternalReference::debug_execution_mode_address(v8::internal::Isolate*)",93957336085728,93957336085741],["v8::internal::ExternalReference::debug_hook_on_function_call_address(v8::internal::Isolate*)",93957336085776,93957336085793],["v8::internal::InvalidatePrototypeChainsWrapper(unsigned long)",93957336085824,93957336085834],["v8::internal::Log::MessageBuilder& v8::internal::Log::MessageBuilder::operator<< <void*>(void*)",93957338140496,93957338140594],["v8::internal::Log::MessageBuilder& v8::internal::Log::MessageBuilder::operator<< <v8::internal::String>(v8::internal::String)",93957338140752,93957338140778],["v8::internal::TimerEventScope<v8::internal::TimerEventRecompileConcurrent>::LogTimerEvent(v8::internal::Logger::StartEnd)",93957338140848,93957338140923],["v8::internal::TimerEventScope<v8::internal::TimerEventExecute>::LogTimerEvent(v8::internal::Logger::StartEnd)",93957338141008,93957338141083],["v8::internal::CodeEventLogger::~CodeEventLogger()",93957338141152,93957338141194],["v8::internal::CodeEventLogger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::Name>)",93957338141424,93957338141598],["v8::internal::CodeEventLogger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Name>)",93957338142192,93957338142621],["v8::internal::CodeEventLogger::CodeCreateEvent(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::wasm::WasmCode const*, v8::internal::Vector<char const>, char const*, int, int)",93957338143520,93957338143975],["v8::internal::PerfBasicLogger::PerfBasicLogger(v8::internal::Isolate*)",93957338144224,93957338144490],["v8::internal::PerfBasicLogger::~PerfBasicLogger()",93957338144576,93957338144658],["v8::internal::Assembler::pause()",93957341909600,93957341909636],["v8::internal::Assembler::pshufhw(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341911648,93957341911829],["v8::internal::Assembler::db(unsigned char)",93957341912800,93957341912861],["v8::internal::RelocInfo::IsCodedSpecially()",93957341913648,93957341913668],["v8::internal::RecordWriteDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341914656,93957341914711],["v8::internal::EphemeronKeyBarrierDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341914784,93957341914839],["v8::internal::CallTrampolineDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341914896,93957341914935],["v8::internal::CallForwardVarargsDescriptor::InitializePlatformSpecific(v8::internal::CallInterfaceDescriptorData*)",93957341914992,93957341915038],["v8::internal::ExternalReference::search_string_raw_two_two()",93957336084768,93957336084781],["v8::internal::ExternalReference::jsreceiver_create_identity_hash()",93957336085280,93957336085293],["v8::internal::ExternalReference::copy_typed_array_elements_slice()",93957336085456,93957336085469],["v8::internal::LexicographicCompareWrapper(v8::internal::Isolate*, unsigned long, unsigned long)",93957336085520,93957336085530],["v8::internal::ExternalReference::mutable_big_int_absolute_sub_and_canonicalize_function()",93957336085568,93957336085581],["v8::internal::ExternalReference::intl_convert_one_byte_to_lower()",93957336085600,93957336085613],["v8::internal::ExternalReference::intl_to_latin1_lower_table()",93957336085632,93957336085642],["v8::internal::ExternalReference::promise_hook_address(v8::internal::Isolate*)",93957336085664,93957336085677],["v8::internal::Assembler::lzcntq(v8::internal::Register, v8::internal::Register)",93957341908256,93957341908418],["v8::internal::Assembler::sse_instr(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char, unsigned char)",93957341910176,93957341910336],["v8::internal::Assembler::movddup(v8::internal::XMMRegister, v8::internal::Operand)",93957341911312,93957341911465],["v8::internal::Assembler::pshuflw(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341912032,93957341912213],["v8::internal::Assembler::pshufd(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341912608,93957341912789],["v8::internal::Assembler::dd(unsigned int, v8::internal::RelocInfo::Mode)",93957341912864,93957341913021],["v8::internal::Assembler::dq(v8::internal::Label*)",93957341913184,93957341913648],["std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >::__append(unsigned long, unsigned int const&)",93957341913680,93957341914567],["v8::internal::libc_memset(void*, int, unsigned long)",93957336084624,93957336084648],["v8::internal::(anonymous namespace)::StringWriteToFlatTwoByte(unsigned long, unsigned short*, int, int)",93957336084832,93957336084842],["v8::internal::GetOrCreateHash(v8::internal::Isolate*, unsigned long)",93957336085216,93957336085249],["v8::internal::ExternalReference::compute_integer_hash()",93957336085312,93957336085325],["v8::internal::ExternalReference::copy_typed_array_elements_to_typed_array()",93957336085440,93957336085453],["v8::internal::ExternalReference::try_string_to_index_or_lookup_existing()",93957336085472,93957336085485],["v8::internal::ExternalReference::smi_lexicographic_compare_function()",93957336085504,93957336085517],["v8::internal::ExternalReference::mutable_big_int_absolute_add_and_canonicalize_function()",93957336085536,93957336085549],["v8::internal::Assembler::vucomiss(v8::internal::XMMRegister, v8::internal::Operand)",93957341906736,93957341906923],["v8::internal::Assembler::popcntq(v8::internal::Register, v8::internal::Register)",93957341908928,93957341909090],["v8::internal::Assembler::movups(v8::internal::XMMRegister, v8::internal::Operand)",93957341909888,93957341910023],["v8::internal::Assembler::sse2_instr(v8::internal::XMMRegister, v8::internal::Operand, unsigned char, unsigned char, unsigned char)",93957341910496,93957341910677],["v8::internal::Assembler::movddup(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341911136,93957341911300],["v8::internal::Assembler::movshdup(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341911472,93957341911636],["v8::internal::Assembler::pshufhw(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341911840,93957341912021],["v8::internal::Assembler::pshuflw(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341912224,93957341912405],["v8::internal::ExternalReference::ieee754_tanh_function()",93957336084464,93957336084477],["v8::internal::ExternalReference::jsarray_array_join_concat_to_sequential_string()",93957336084704,93957336084717],["v8::internal::(anonymous namespace)::StringWriteToFlatOneByte(unsigned long, unsigned char*, int, int)",93957336084800,93957336084810],["v8::internal::(anonymous namespace)::ExternalOneByteStringGetChars(unsigned long)",93957336084864,93957336085022],["v8::internal::ExternalReference::orderedhashmap_gethash_raw()",93957336085200,93957336085213],["v8::internal::ExternalReference::get_or_create_hash_raw()",93957336085264,93957336085277],["v8::internal::JSReceiverCreateIdentityHash(v8::internal::Isolate*, unsigned long)",93957336085296,93957336085306],["v8::internal::ComputeSeededIntegerHash(v8::internal::Isolate*, int)",93957336085328,93957336085412],["v8::internal::Assembler::vinstr(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Assembler::SIMDPrefix, v8::internal::Assembler::LeadingOpcode, v8::internal::Assembler::VexW, v8::internal::CpuFeature)",93957341904848,93957341905105],["v8::internal::Assembler::tzcntq(v8::internal::Register, v8::internal::Register)",93957341907584,93957341907746],["v8::internal::Assembler::lzcntl(v8::internal::Register, v8::internal::Register)",93957341908592,93957341908755],["v8::internal::Assembler::popcntl(v8::internal::Register, v8::internal::Register)",93957341909264,93957341909427],["v8::internal::Assembler::movups(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341909648,93957341909881],["v8::internal::Assembler::movups(v8::internal::Operand, v8::internal::XMMRegister)",93957341910032,93957341910167],["v8::internal::Assembler::sse_instr(v8::internal::XMMRegister, v8::internal::Operand, unsigned char, unsigned char)",93957341910336,93957341910491],["v8::internal::Assembler::sse4_instr(v8::internal::Register, v8::internal::XMMRegister, unsigned char, unsigned char, unsigned char, unsigned char, signed char)",93957341910688,93957341910912],["v8::internal::ExternalReference::ieee754_expm1_function()",93957336084336,93957336084349],["v8::internal::libc_memcpy(void*, void const*, unsigned long)",93957336084528,93957336084552],["v8::internal::ExternalReference::printf_function()",93957336084672,93957336084685],["v8::internal::ExternalReference::search_string_raw_one_two()",93957336084736,93957336084749],["v8::internal::ExternalReference::string_write_to_flat_one_byte()",93957336084784,93957336084797],["v8::internal::ExternalReference::string_write_to_flat_two_byte()",93957336084816,93957336084829],["v8::internal::ExternalReference::external_one_byte_string_get_chars()",93957336084848,93957336084861],["v8::internal::ExternalReference::external_two_byte_string_get_chars()",93957336085024,93957336085037],["v8::internal::Assembler::vmovq(v8::internal::Register, v8::internal::XMMRegister)",93957341903296,93957341903460],["v8::internal::Assembler::vps(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341905840,93957341906078],["v8::internal::Assembler::vss(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341907136,93957341907354],["v8::internal::Assembler::tzcntl(v8::internal::Register, v8::internal::Register)",93957341907920,93957341908083],["v8::internal::Assembler::lzcntq(v8::internal::Register, v8::internal::Operand)",93957341908432,93957341908583],["v8::internal::Assembler::lzcntl(v8::internal::Register, v8::internal::Operand)",93957341908768,93957341908921],["v8::internal::Assembler::popcntq(v8::internal::Register, v8::internal::Operand)",93957341909104,93957341909255],["v8::internal::Assembler::popcntl(v8::internal::Register, v8::internal::Operand)",93957341909440,93957341909593],["v8::internal::ExternalReference::ieee754_asinh_function()",93957336084208,93957336084221],["v8::internal::ExternalReference::ieee754_log2_function()",93957336084400,93957336084413],["v8::internal::libc_memchr(void*, int, unsigned long)",93957336084496,93957336084506],["v8::internal::libc_memmove(void*, void const*, unsigned long)",93957336084576,93957336084600],["v8::internal::ExternalReference::libc_memset_function()",93957336084656,93957336084669],["v8::internal::ExternalReference::refill_math_random()",93957336084688,93957336084701],["v8::internal::ExternalReference::search_string_raw_one_one()",93957336084720,93957336084733],["v8::internal::ExternalReference::search_string_raw_two_one()",93957336084752,93957336084765],["v8::internal::Assembler::vmovshdup(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341901696,93957341901892],["v8::internal::Assembler::vmovdqu(v8::internal::Operand, v8::internal::XMMRegister)",93957341904064,93957341904251],["v8::internal::Assembler::vps(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341905392,93957341905609],["v8::internal::Assembler::vpd(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand)",93957341906304,93957341906525],["v8::internal::Assembler::vpmovmskb(v8::internal::Register, v8::internal::XMMRegister)",93957341906928,93957341907124],["v8::internal::Assembler::vss(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand)",93957341907360,93957341907581],["v8::internal::Assembler::tzcntq(v8::internal::Register, v8::internal::Operand)",93957341907760,93957341907911],["v8::internal::Assembler::tzcntl(v8::internal::Register, v8::internal::Operand)",93957341908096,93957341908249],["v8::internal::ExternalReference::re_case_insensitive_compare_non_unicode(v8::internal::Isolate*)",93957336084048,93957336084061],["v8::internal::ExternalReference::ieee754_cbrt_function()",93957336084272,93957336084285],["v8::internal::ExternalReference::ieee754_log1p_function()",93957336084368,93957336084381],["v8::internal::ExternalReference::ieee754_sinh_function()",93957336084432,93957336084445],["v8::internal::ExternalReference::ieee754_pow_function()",93957336084480,93957336084493],["v8::internal::ExternalReference::libc_memchr_function()",93957336084512,93957336084525],["v8::internal::ExternalReference::libc_memcpy_function()",93957336084560,93957336084573],["v8::internal::ExternalReference::libc_memmove_function()",93957336084608,93957336084621],["v8::internal::Assembler::roundsd(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode)",93957341900160,93957341900360],["v8::internal::Assembler::vmovd(v8::internal::XMMRegister, v8::internal::Register)",93957341902512,93957341902708],["v8::internal::Assembler::vmovdqa(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341903664,93957341903860],["v8::internal::Assembler::vmovlps(v8::internal::Operand, v8::internal::XMMRegister)",93957341904464,93957341904651],["v8::internal::Assembler::vinstr(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand, v8::internal::Assembler::SIMDPrefix, v8::internal::Assembler::LeadingOpcode, v8::internal::Assembler::VexW, v8::internal::CpuFeature)",93957341905120,93957341905386],["v8::internal::Assembler::vps(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Operand)",93957341905616,93957341905836],["v8::internal::Assembler::vpd(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341906080,93957341906298],["v8::internal::Assembler::vucomiss(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341906528,93957341906724],["v8::internal::ExternalReference::is_profiling_address(v8::internal::Isolate*)",93957336083920,93957336083933],["v8::internal::ExternalReference::address_of_regexp_stack_memory_top_address(v8::internal::Isolate*)",93957336084128,93957336084146],["v8::internal::ExternalReference::ieee754_atanh_function()",93957336084240,93957336084253],["v8::internal::ExternalReference::ieee754_cosh_function()",93957336084304,93957336084317],["v8::internal::ExternalReference::ieee754_log_function()",93957336084352,93957336084365],["v8::internal::ExternalReference::ieee754_log10_function()",93957336084384,93957336084397],["v8::internal::ExternalReference::ieee754_sin_function()",93957336084416,93957336084429],["v8::internal::ExternalReference::ieee754_tan_function()",93957336084448,93957336084461],["v8::internal::Assembler::cvtlsi2ss(v8::internal::XMMRegister, v8::internal::Register)",93957341898800,93957341898964],["v8::internal::Assembler::movmskps(v8::internal::Register, v8::internal::XMMRegister)",93957341900960,93957341901106],["v8::internal::Assembler::vbroadcastss(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341902064,93957341902228],["v8::internal::Assembler::vmovd(v8::internal::Register, v8::internal::XMMRegister)",93957341902912,93957341903108],["v8::internal::Assembler::vmovdqa(v8::internal::XMMRegister, v8::internal::Operand)",93957341903472,93957341903659],["v8::internal::Assembler::vmovdqu(v8::internal::XMMRegister, v8::internal::Operand)",93957341903872,93957341904059],["v8::internal::Assembler::vmovdqu(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341904256,93957341904452],["v8::internal::Assembler::vmovhps(v8::internal::Operand, v8::internal::XMMRegister)",93957341904656,93957341904843],["v8::internal::ExternalReference::address_of_wasm_i16x8_splat_0x0001()",93957336083792,93957336083805],["v8::internal::ExternalReference::re_grow_stack(v8::internal::Isolate*)",93957336083984,93957336083997],["v8::internal::ExternalReference::address_of_static_offsets_vector(v8::internal::Isolate*)",93957336084080,93957336084093],["v8::internal::ExternalReference::ieee754_acosh_function()",93957336084176,93957336084189],["v8::internal::ExternalReference::ieee754_atan_function()",93957336084224,93957336084237],["v8::internal::ExternalReference::ieee754_atan2_function()",93957336084256,93957336084269],["v8::internal::ExternalReference::ieee754_cos_function()",93957336084288,93957336084301],["v8::internal::ExternalReference::ieee754_exp_function()",93957336084320,93957336084333],["v8::internal::Assembler::cvttss2siq(v8::internal::Register, v8::internal::XMMRegister)",93957341897504,93957341897664],["v8::internal::Assembler::cvtqsi2sd(v8::internal::XMMRegister, v8::internal::Register)",93957341899456,93957341899616],["v8::internal::Assembler::roundpd(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode)",93957341900576,93957341900776],["v8::internal::Assembler::vmovddup(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341901296,93957341901492],["v8::internal::Assembler::vbroadcastss(v8::internal::XMMRegister, v8::internal::Operand)",93957341901904,93957341902060],["v8::internal::Assembler::fma_instr(unsigned char, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::Assembler::VectorLength, v8::internal::Assembler::SIMDPrefix, v8::internal::Assembler::LeadingOpcode, v8::internal::Assembler::VexW)",93957341902240,93957341902505],["v8::internal::Assembler::vmovd(v8::internal::XMMRegister, v8::internal::Operand)",93957341902720,93957341902907],["v8::internal::Assembler::vmovq(v8::internal::XMMRegister, v8::internal::Register)",93957341903120,93957341903284],["v8::internal::ExternalReference::address_of_double_abs_constant()",93957336083664,93957336083677],["v8::internal::ExternalReference::address_of_wasm_int32_max_as_double()",93957336083856,93957336083869],["v8::internal::ExternalReference::invoke_accessor_getter_callback()",93957336083952,93957336083965],["v8::internal::ExternalReference::re_experimental_match_for_call_from_js()",93957336084016,93957336084029],["v8::internal::ExternalReference::re_word_character_map(v8::internal::Isolate*)",93957336084064,93957336084077],["v8::internal::ExternalReference::address_of_regexp_stack_limit_address(v8::internal::Isolate*)",93957336084096,93957336084114],["v8::internal::ExternalReference::ieee754_acos_function()",93957336084160,93957336084173],["v8::internal::ExternalReference::ieee754_asin_function()",93957336084192,93957336084205],["v8::internal::Assembler::cmpps(v8::internal::XMMRegister, v8::internal::XMMRegister, signed char)",93957341896096,93957341896259],["v8::internal::Assembler::cvttps2dq(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341898144,93957341898304],["v8::internal::Assembler::cvtqsi2ss(v8::internal::XMMRegister, v8::internal::Register)",93957341899136,93957341899296],["v8::internal::Assembler::cvtss2sd(v8::internal::XMMRegister, v8::internal::Operand)",93957341899792,93957341899945],["v8::internal::Assembler::roundps(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode)",93957341900368,93957341900568],["v8::internal::Assembler::movmskpd(v8::internal::Register, v8::internal::XMMRegister)",93957341900784,93957341900948],["v8::internal::Assembler::pmovmskb(v8::internal::Register, v8::internal::XMMRegister)",93957341901120,93957341901284],["v8::internal::Assembler::vmovddup(v8::internal::XMMRegister, v8::internal::Operand)",93957341901504,93957341901691],["v8::internal::ExternalReference::address_of_runtime_stats_flag()",93957336083536,93957336083549],["v8::internal::ExternalReference::address_of_wasm_i8x16_splat_0x01()",93957336083728,93957336083741],["v8::internal::ExternalReference::supports_wasm_simd_128_address()",93957336083824,93957336083837],["v8::internal::ExternalReference::address_of_enable_experimental_regexp_engine()",93957336083888,93957336083901],["v8::internal::ExternalReference::invoke_function_callback()",93957336083936,93957336083949],["v8::internal::ExternalReference::re_check_stack_guard_state(v8::internal::Isolate*)",93957336083968,93957336083981],["v8::internal::ExternalReference::re_match_for_call_from_js()",93957336084000,93957336084013],["v8::internal::ExternalReference::re_case_insensitive_compare_unicode(v8::internal::Isolate*)",93957336084032,93957336084045],["v8::internal::Assembler::shufps(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341894832,93957341894995],["v8::internal::Assembler::cvttss2si(v8::internal::Register, v8::internal::Operand)",93957341896832,93957341896985],["v8::internal::Assembler::cvttsd2siq(v8::internal::Register, v8::internal::XMMRegister)",93957341897824,93957341897984],["v8::internal::Assembler::cvtlsi2sd(v8::internal::XMMRegister, v8::internal::Register)",93957341898464,93957341898628],["v8::internal::Assembler::cvtqsi2ss(v8::internal::XMMRegister, v8::internal::Operand)",93957341898976,93957341899127],["v8::internal::Assembler::cvtqsi2sd(v8::internal::XMMRegister, v8::internal::Operand)",93957341899296,93957341899447],["v8::internal::Assembler::cvtss2sd(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341899616,93957341899780],["v8::internal::Assembler::roundss(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::RoundingMode)",93957341899952,93957341900152],["v8::internal::ExternalReference::scheduled_exception_address(v8::internal::Isolate*)",93957336083344,93957336083357],["v8::internal::ExternalReference::address_of_the_hole_nan()",93957336083600,93957336083613],["v8::internal::ExternalReference::address_of_wasm_i8x16_swizzle_mask()",93957336083696,93957336083709],["v8::internal::ExternalReference::address_of_wasm_i8x16_splat_0x33()",93957336083760,93957336083773],["v8::internal::ExternalReference::address_of_wasm_f64x2_convert_low_i32x4_u_int_mask()",93957336083808,93957336083821],["v8::internal::ExternalReference::address_of_wasm_double_2_power_52()",93957336083840,93957336083853],["v8::internal::ExternalReference::address_of_wasm_uint32_max_as_double()",93957336083872,93957336083885],["v8::internal::ExternalReference::thread_in_wasm_flag_address_address(v8::internal::Isolate*)",93957336083904,93957336083917],["v8::internal::Assembler::pinsrb(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341893328,93957341893524],["v8::internal::Assembler::movss(v8::internal::XMMRegister, v8::internal::Operand)",93957341895488,93957341895641],["v8::internal::Assembler::cvtdq2pd(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341896464,93957341896628],["v8::internal::Assembler::cvttsd2si(v8::internal::Register, v8::internal::Operand)",93957341897168,93957341897321],["v8::internal::Assembler::cvttss2siq(v8::internal::Register, v8::internal::Operand)",93957341897664,93957341897815],["v8::internal::Assembler::cvttsd2siq(v8::internal::Register, v8::internal::Operand)",93957341897984,93957341898135],["v8::internal::Assembler::cvtlsi2sd(v8::internal::XMMRegister, v8::internal::Operand)",93957341898304,93957341898457],["v8::internal::Assembler::cvtlsi2ss(v8::internal::XMMRegister, v8::internal::Operand)",93957341898640,93957341898793],["v8::internal::ExternalReference::heap_is_marking_flag_address(v8::internal::Isolate*)",93957336083152,93957336083165],["v8::internal::ExternalReference::address_of_min_int()",93957336083472,93957336083485],["v8::internal::ExternalReference::address_of_store_to_stack_count(char const*)",93957336083568,93957336083578],["v8::internal::ExternalReference::address_of_float_abs_constant()",93957336083632,93957336083645],["v8::internal::ExternalReference::address_of_double_neg_constant()",93957336083680,93957336083693],["v8::internal::ExternalReference::address_of_wasm_i8x16_popcnt_mask()",93957336083712,93957336083725],["v8::internal::ExternalReference::address_of_wasm_i8x16_splat_0x0f()",93957336083744,93957336083757],["v8::internal::ExternalReference::address_of_wasm_i8x16_splat_0x55()",93957336083776,93957336083789],["v8::internal::Assembler::pinsrw(v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341891728,93957341891909],["v8::internal::Assembler::movsd(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341894112,93957341894276],["v8::internal::Assembler::ucomiss(v8::internal::XMMRegister, v8::internal::Operand)",93957341895168,93957341895303],["v8::internal::Assembler::movlps(v8::internal::Operand, v8::internal::XMMRegister)",93957341895808,93957341895943],["v8::internal::Assembler::cmppd(v8::internal::XMMRegister, v8::internal::XMMRegister, signed char)",93957341896272,93957341896453],["v8::internal::Assembler::sse2_instr(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char, unsigned char, unsigned char)",93957341896640,93957341896825],["v8::internal::Assembler::cvttss2si(v8::internal::Register, v8::internal::XMMRegister)",93957341896992,93957341897156],["v8::internal::Assembler::cvttsd2si(v8::internal::Register, v8::internal::XMMRegister)",93957341897328,93957341897492],["v8::internal::f64_acos_wrapper(unsigned long)",93957336082960,93957336082989],["v8::internal::ExternalReference::old_space_allocation_limit_address(v8::internal::Isolate*)",93957336083264,93957336083282],["v8::internal::ExternalReference::abort_with_reason()",93957336083376,93957336083389],["v8::internal::ExternalReference::address_of_builtin_subclassing_flag()",93957336083504,93957336083517],["v8::internal::ExternalReference::address_of_load_from_stack_count(char const*)",93957336083552,93957336083562],["v8::internal::ExternalReference::address_of_one_half()",93957336083584,93957336083597],["v8::internal::ExternalReference::address_of_uint32_bias()",93957336083616,93957336083629],["v8::internal::ExternalReference::address_of_float_neg_constant()",93957336083648,93957336083661],["v8::internal::Assembler::fprem()",93957341890672,93957341890746],["v8::internal::Assembler::pinsrq(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341892496,93957341892690],["v8::internal::Assembler::insertps(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341893744,93957341893940],["v8::internal::Assembler::movaps(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341894448,93957341894681],["v8::internal::Assembler::ucomiss(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341895008,93957341895154],["v8::internal::Assembler::movss(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341895312,93957341895476],["v8::internal::Assembler::movss(v8::internal::Operand, v8::internal::XMMRegister)",93957341895648,93957341895801],["v8::internal::Assembler::movhps(v8::internal::Operand, v8::internal::XMMRegister)",93957341895952,93957341896087],["v8::internal::ExternalReference::wasm_f32x4_trunc()",93957336082832,93957336082845],["v8::internal::f64_mod_wrapper(unsigned long)",93957336083056,93957336083090],["v8::internal::ExternalReference::new_space_allocation_limit_address(v8::internal::Isolate*)",93957336083200,93957336083218],["v8::internal::ExternalReference::handle_scope_next_address(v8::internal::Isolate*)",93957336083312,93957336083322],["v8::internal::ExternalReference::address_of_pending_message_obj(v8::internal::Isolate*)",93957336083360,93957336083373],["v8::internal::abort_with_reason(int)",93957336083392,93957336083460],["v8::internal::ExternalReference::address_of_mock_arraybuffer_allocator_flag()",93957336083488,93957336083501],["v8::internal::ExternalReference::address_of_harmony_regexp_match_indices_flag()",93957336083520,93957336083533],["v8::internal::Assembler::emit_test(v8::internal::Operand, v8::internal::Register, int)",93957341889760,93957341890005],["v8::internal::Assembler::movd(v8::internal::XMMRegister, v8::internal::Operand)",93957341891072,93957341891225],["v8::internal::Assembler::pextrq(v8::internal::Register, v8::internal::XMMRegister, signed char)",93957341892112,93957341892304],["v8::internal::Assembler::pinsrd(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341892912,93957341893108],["v8::internal::Assembler::insertps(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341893536,93957341893732],["v8::internal::Assembler::movsd(v8::internal::Operand, v8::internal::XMMRegister)",93957341893952,93957341894105],["v8::internal::Assembler::movsd(v8::internal::XMMRegister, v8::internal::Operand)",93957341894288,93957341894441],["v8::internal::Assembler::movaps(v8::internal::XMMRegister, v8::internal::Operand)",93957341894688,93957341894823],["v8::internal::ExternalReference::wasm_word64_rol()",93957336082704,93957336082717],["v8::internal::ExternalReference::wasm_memory_fill()",93957336082896,93957336082909],["v8::internal::f64_asin_wrapper(unsigned long)",93957336083008,93957336083037],["v8::internal::ExternalReference::address_of_jslimit(v8::internal::Isolate*)",93957336083120,93957336083130],["v8::internal::ExternalReference::new_space_allocation_top_address(v8::internal::Isolate*)",93957336083168,93957336083186],["v8::internal::ExternalReference::old_space_allocation_top_address(v8::internal::Isolate*)",93957336083232,93957336083250],["v8::internal::ExternalReference::handle_scope_level_address(v8::internal::Isolate*)",93957336083296,93957336083306],["v8::internal::ExternalReference::handle_scope_limit_address(v8::internal::Isolate*)",93957336083328,93957336083338],["v8::internal::Assembler::sub_sp_32(unsigned int)",93957341888192,93957341888254],["v8::internal::Assembler::testw(v8::internal::Operand, v8::internal::Register)",93957341890224,93957341890362],["v8::internal::Assembler::sahf()",93957341890832,93957341890891],["v8::internal::Assembler::movq(v8::internal::XMMRegister, v8::internal::Register)",93957341891408,93957341891568],["v8::internal::Assembler::pinsrw(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341891920,93957341892101],["v8::internal::Assembler::pinsrq(v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341892304,93957341892496],["v8::internal::Assembler::pinsrd(v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341892704,93957341892900],["v8::internal::Assembler::pinsrb(v8::internal::XMMRegister, v8::internal::Register, unsigned char)",93957341893120,93957341893316],["v8::internal::ExternalReference::wasm_uint64_div()",93957336082576,93957336082589],["v8::internal::ExternalReference::wasm_f64x2_trunc()",93957336082768,93957336082781],["v8::internal::ExternalReference::wasm_memory_init()",93957336082864,93957336082877],["v8::internal::ExternalReference::wasm_call_trap_callback_for_testing()",93957336082928,93957336082941],["v8::internal::ExternalReference::f64_asin_wrapper_function()",93957336082992,93957336083005],["v8::internal::ExternalReference::f64_mod_wrapper_function()",93957336083040,93957336083053],["v8::internal::ExternalReference::allocation_sites_list_address(v8::internal::Isolate*)",93957336083104,93957336083117],["v8::internal::ExternalReference::address_of_real_jslimit(v8::internal::Isolate*)",93957336083136,93957336083146],["v8::internal::Assembler::pushfq()",93957341886768,93957341886827],["v8::internal::Assembler::emit_test(v8::internal::Register, v8::internal::Immediate, int)",93957341888752,93957341889203],["v8::internal::Assembler::testw(v8::internal::Register, v8::internal::Immediate)",93957341890192,93957341890207],["v8::internal::Assembler::fstp_d(v8::internal::Operand)",93957341890480,93957341890592],["v8::internal::Assembler::fnstsw_ax()",93957341890752,93957341890826],["v8::internal::Assembler::movd(v8::internal::XMMRegister, v8::internal::Register)",93957341890896,93957341891060],["v8::internal::Assembler::movd(v8::internal::Register, v8::internal::XMMRegister)",93957341891232,93957341891396],["v8::internal::Assembler::movq(v8::internal::Register, v8::internal::XMMRegister)",93957341891568,93957341891728],["v8::internal::ExternalReference::wasm_float64_to_int64()",93957336082448,93957336082461],["v8::internal::ExternalReference::wasm_word32_popcnt()",93957336082640,93957336082653],["v8::internal::ExternalReference::wasm_f64x2_ceil()",93957336082736,93957336082749],["v8::internal::ExternalReference::wasm_f32x4_ceil()",93957336082800,93957336082813],["v8::internal::ExternalReference::wasm_f32x4_nearest_int()",93957336082848,93957336082861],["v8::internal::ExternalReference::wasm_memory_copy()",93957336082880,93957336082893],["v8::internal::ExternalReference::wasm_float64_pow()",93957336082912,93957336082925],["v8::internal::ExternalReference::f64_acos_wrapper_function()",93957336082944,93957336082957],["v8::internal::Assembler::emit_not(v8::internal::Operand, int)",93957341885952,93957341886079],["v8::internal::Assembler::xchgw(v8::internal::Register, v8::internal::Operand)",93957341887344,93957341887482],["v8::internal::Assembler::emit_test(v8::internal::Register, v8::internal::Register, int)",93957341888448,93957341888733],["v8::internal::Assembler::emit_test(v8::internal::Operand, v8::internal::Immediate, int)",93957341889232,93957341889606],["v8::internal::Assembler::testw(v8::internal::Register, v8::internal::Register)",93957341890016,93957341890183],["v8::internal::Assembler::testw(v8::internal::Operand, v8::internal::Immediate)",93957341890208,93957341890224],["v8::internal::Assembler::fld_d(v8::internal::Operand)",93957341890368,93957341890477],["v8::internal::Assembler::fstp(int)",93957341890592,93957341890672],["v8::internal::ExternalReference::wasm_f64_ceil()",93957336082320,93957336082333],["v8::internal::ExternalReference::wasm_float64_to_int64_sat()",93957336082512,93957336082525],["v8::internal::ExternalReference::wasm_word32_ctz()",93957336082608,93957336082621],["v8::internal::ExternalReference::wasm_word32_rol()",93957336082672,93957336082685],["v8::internal::ExternalReference::wasm_word64_ror()",93957336082720,93957336082733],["v8::internal::ExternalReference::wasm_f64x2_floor()",93957336082752,93957336082765],["v8::internal::ExternalReference::wasm_f64x2_nearest_int()",93957336082784,93957336082797],["v8::internal::ExternalReference::wasm_f32x4_floor()",93957336082816,93957336082829],["v8::internal::Assembler::negb(v8::internal::Register)",93957341885056,93957341885165],["v8::internal::Assembler::pushq(v8::internal::Register)",93957341886352,93957341886434],["v8::internal::Assembler::setcc(v8::internal::Condition, v8::internal::Register)",93957341886944,93957341887186],["v8::internal::Assembler::emit_xchg(v8::internal::Register, v8::internal::Operand, int)",93957341887856,93957341888003],["v8::internal::Assembler::testb(v8::internal::Register, v8::internal::Register)",93957341888256,93957341888446],["v8::internal::Assembler::testb(v8::internal::Register, v8::internal::Immediate)",93957341888736,93957341888751],["v8::internal::Assembler::testb(v8::internal::Operand, v8::internal::Immediate)",93957341889216,93957341889232],["v8::internal::Assembler::testb(v8::internal::Operand, v8::internal::Register)",93957341889616,93957341889749],["v8::internal::ExternalReference::new_deoptimizer_function()",93957336082192,93957336082205],["v8::internal::ExternalReference::wasm_int64_to_float64()",93957336082384,93957336082397],["v8::internal::ExternalReference::wasm_float32_to_int64_sat()",93957336082480,93957336082493],["v8::internal::ExternalReference::wasm_int64_div()",93957336082544,93957336082557],["v8::internal::ExternalReference::wasm_uint64_mod()",93957336082592,93957336082605],["v8::internal::ExternalReference::wasm_word64_ctz()",93957336082624,93957336082637],["v8::internal::ExternalReference::wasm_word64_popcnt()",93957336082656,93957336082669],["v8::internal::ExternalReference::wasm_word32_ror()",93957336082688,93957336082701],["v8::internal::Assembler::movsxlq(v8::internal::Register, v8::internal::Operand)",93957341883984,93957341884107],["v8::internal::Assembler::negl(v8::internal::Operand)",93957341885520,93957341885632],["v8::internal::Assembler::popq(v8::internal::Operand)",93957341886176,93957341886285],["v8::internal::Assembler::pushq(v8::internal::Immediate)",93957341886560,93957341886677],["v8::internal::Assembler::ret(int)",93957341886832,93957341886935],["v8::internal::Assembler::xchgb(v8::internal::Register, v8::internal::Operand)",93957341887200,93957341887333],["v8::internal::Assembler::emit_xchg(v8::internal::Register, v8::internal::Register, int)",93957341887488,93957341887847],["v8::internal::Assembler::store_rax(v8::internal::ExternalReference)",93957341888016,93957341888182],["v8::internal::ExternalReference::insert_remembered_set_function()",93957336082048,93957336082061],["v8::internal::ExternalReference::wasm_f32_ceil()",93957336082256,93957336082269],["v8::internal::ExternalReference::wasm_int64_to_float32()",93957336082352,93957336082365],["v8::internal::ExternalReference::wasm_float32_to_int64()",93957336082416,93957336082429],["v8::internal::ExternalReference::wasm_float64_to_uint64()",93957336082464,93957336082477],["v8::internal::ExternalReference::wasm_float32_to_uint64_sat()",93957336082496,93957336082509],["v8::internal::ExternalReference::wasm_float64_to_uint64_sat()",93957336082528,93957336082541],["v8::internal::ExternalReference::wasm_int64_mod()",93957336082560,93957336082573],["v8::internal::Assembler::movsxbl(v8::internal::Register, v8::internal::Operand)",93957341882784,93957341882919],["v8::internal::Assembler::emit_movzxw(v8::internal::Register, v8::internal::Register, int)",93957341884592,93957341884737],["v8::internal::Assembler::negl(v8::internal::Register)",93957341885296,93957341885398],["v8::internal::Assembler::nop()",93957341885744,93957341885803],["v8::internal::Assembler::popq(v8::internal::Register)",93957341886080,93957341886162],["v8::internal::Assembler::popfq()",93957341886288,93957341886347],["v8::internal::Assembler::pushq(v8::internal::Operand)",93957341886448,93957341886560],["v8::internal::Assembler::pushq_imm32(int)",93957341886688,93957341886761],["v8::internal::ExternalReference::Create(v8::internal::Runtime::Function const*)",93957336081824,93957336081860],["v8::internal::ExternalReference::date_cache_stamp(v8::internal::Isolate*)",93957336082112,93957336082129],["v8::internal::ExternalReference::wasm_f32_trunc()",93957336082224,93957336082237],["v8::internal::ExternalReference::wasm_f64_trunc()",93957336082288,93957336082301],["v8::internal::ExternalReference::wasm_f64_nearest_int()",93957336082336,93957336082349],["v8::internal::ExternalReference::wasm_uint64_to_float32()",93957336082368,93957336082381],["v8::internal::ExternalReference::wasm_uint64_to_float64()",93957336082400,93957336082413],["v8::internal::ExternalReference::wasm_float32_to_uint64()",93957336082432,93957336082445],["v8::internal::Assembler::emit_mov(v8::internal::Operand, v8::internal::Register, int)",93957341880656,93957341880803],["v8::internal::Assembler::movsxwl(v8::internal::Register, v8::internal::Operand)",93957341883392,93957341883527],["v8::internal::Assembler::emit_movzxb(v8::internal::Register, v8::internal::Register, int)",93957341884256,93957341884444],["v8::internal::Assembler::mull(v8::internal::Register)",93957341884832,93957341884934],["v8::internal::Assembler::negw(v8::internal::Register)",93957341885168,93957341885288],["v8::internal::Assembler::negq(v8::internal::Register)",93957341885408,93957341885515],["v8::internal::Assembler::negq(v8::internal::Operand)",93957341885632,93957341885743],["v8::internal::Assembler::emit_not(v8::internal::Register, int)",93957341885808,93957341885952],["v8::internal::ExternalReferenceTable::AddIsolateAddresses(v8::internal::Isolate*, int*)",93957336079248,93957336079637],["v8::internal::ExternalReference::interpreter_dispatch_counters(v8::internal::Isolate*)",93957336081952,93957336081972],["v8::internal::ExternalReference::ephemeron_key_write_barrier_function()",93957336082080,93957336082093],["v8::internal::ExternalReference::stress_deopt_count(v8::internal::Isolate*)",93957336082160,93957336082173],["v8::internal::ExternalReference::compute_output_frames_function()",93957336082208,93957336082221],["v8::internal::ExternalReference::wasm_f32_floor()",93957336082240,93957336082253],["v8::internal::ExternalReference::wasm_f32_nearest_int()",93957336082272,93957336082285],["v8::internal::ExternalReference::wasm_f64_floor()",93957336082304,93957336082317],["v8::internal::Assembler::movb(v8::internal::Register, v8::internal::Immediate)",93957341879344,93957341879465],["v8::internal::Assembler::movq_heap_number(v8::internal::Register, double)",93957341881872,93957341882122],["v8::internal::Assembler::movsxbq(v8::internal::Register, v8::internal::Register)",93957341883072,93957341883220],["v8::internal::Assembler::movsxwq(v8::internal::Register, v8::internal::Register)",93957341883680,93957341883828],["v8::internal::Assembler::emit_movzxb(v8::internal::Register, v8::internal::Operand, int)",93957341884112,93957341884247],["v8::internal::Assembler::emit_movzxw(v8::internal::Register, v8::internal::Operand, int)",93957341884448,93957341884583],["v8::internal::Assembler::repstosl()",93957341884752,93957341884826],["v8::internal::Assembler::mull(v8::internal::Operand)",93957341884944,93957341885056],["v8::internal::Scanner::~Scanner()",93957336073152,93957336073402],["long v8::internal::SearchStringRaw<unsigned char const, unsigned short const>(v8::internal::Isolate*, unsigned char const*, int, unsigned short const*, int, int)",93957336081120,93957336081480],["v8::internal::ExternalReference::handle_scope_implementer_address(v8::internal::Isolate*)",93957336081904,93957336081917],["v8::internal::ExternalReference::bytecode_size_table_address()",93957336082016,93957336082029],["v8::internal::ExternalReference::delete_handle_scope_extensions()",93957336082064,93957336082077],["v8::internal::ExternalReference::get_date_field_function()",93957336082096,93957336082109],["v8::internal::ExternalReference::runtime_function_table_address(v8::internal::Isolate*)",93957336082144,93957336082154],["v8::internal::ExternalReference::force_slow_path(v8::internal::Isolate*)",93957336082176,93957336082189],["v8::internal::Assembler::j(v8::internal::Condition, v8::internal::Handle<v8::internal::Code>, v8::internal::RelocInfo::Mode)",93957341877984,93957341878244],["v8::internal::Assembler::movw(v8::internal::Operand, v8::internal::Register)",93957341879888,93957341880026],["v8::internal::Assembler::emit_mov(v8::internal::Operand, v8::internal::Immediate, int)",93957341881088,93957341881328],["v8::internal::Assembler::movl(v8::internal::Operand, v8::internal::Label*)",93957341882384,93957341882584],["v8::internal::Assembler::movsxbq(v8::internal::Register, v8::internal::Operand)",93957341882928,93957341883066],["v8::internal::Assembler::movsxwl(v8::internal::Register, v8::internal::Register)",93957341883232,93957341883377],["v8::internal::Assembler::movsxwq(v8::internal::Register, v8::internal::Operand)",93957341883536,93957341883674],["v8::internal::Assembler::movsxlq(v8::internal::Register, v8::internal::Register)",93957341883840,93957341883973],["v8::internal::(anonymous namespace)::GetOptimizedCodeNow(v8::internal::OptimizedCompilationJob*, v8::internal::Isolate*, v8::internal::OptimizedCompilationInfo*)",93957336070320,93957336071378],["v8::base::TemplateHashMapEntry<unsigned long, unsigned int> v8::base::TemplateHashMapImpl<unsigned long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<unsigned long, v8::base::TemplateHashMapImpl<unsigned long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<v8::base::TemplateHashMapImpl<unsigned long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::base::DefaultAllocationPolicy>::LookupOrInsert(unsigned long const&, unsigned int)::{lambda()#1}>(unsigned long const&, unsigned int, v8::base::TemplateHashMapImpl<unsigned long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::base::DefaultAllocationPolicy>::LookupOrInsert(unsigned long const&, unsigned int)::{lambda()#1} const&)::{lambda()#1}, {lambda()#1}>(unsigned long const, unsigned int, v8::base::TemplateHashMapImpl<unsigned long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::base::DefaultAllocationPolicy>::LookupOrInsert<v8::base::TemplateHashMapImpl<unsigned long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::base::DefaultAllocationPolicy>::LookupOrInsert(unsigned long const&, unsigned int)::{lambda()#1}>(unsigned long const&, unsigned int, v8::base::TemplateHashMapImpl<unsigned long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::base::DefaultAllocationPolicy>::LookupOrInsert(unsigned long const&, unsigned int)::{lambda()#1} const&)::{lambda()#1} const&, {lambda()#1} const&)",93957336074208,93957336074436],["v8::internal::ExternalReferenceTable::ResolveSymbol(void*)",93957336080960,93957336080973],["long v8::internal::SearchStringRaw<unsigned short const, unsigned short const>(v8::internal::Isolate*, unsigned short const*, int, unsigned short const*, int, int)",93957336081632,93957336081771],["v8::internal::ExternalReference::builtins_address(v8::internal::Isolate*)",93957336081872,93957336081891],["v8::internal::ExternalReference::interpreter_dispatch_table_address(v8::internal::Isolate*)",93957336081920,93957336081937],["v8::internal::ExternalReference::address_of_interpreter_entry_trampoline_instruction_start(v8::internal::Isolate*)",93957336081984,93957336082002],["v8::internal::ExternalReference::write_barrier_marking_from_code_function()",93957336082032,93957336082045],["v8::internal::Assembler::emit_imul(v8::internal::Register, v8::internal::Operand, int)",93957341875744,93957341875906],["v8::internal::Assembler::jmp(v8::internal::Operand)",93957341878752,93957341878864],["v8::internal::Assembler::movb(v8::internal::Operand, v8::internal::Immediate)",93957341879616,93957341879743],["v8::internal::Assembler::emit_mov(v8::internal::Register, v8::internal::Operand, int)",93957341880208,93957341880355],["v8::internal::Assembler::emit_mov(v8::internal::Register, v8::internal::Immediate, int)",93957341880816,93957341881078],["v8::internal::Assembler::emit_mov(v8::internal::Register, v8::internal::Immediate64, int)",93957341881328,93957341881870],["v8::internal::Assembler::movq_string(v8::internal::Register, v8::internal::StringConstantBase const*)",93957341882128,93957341882378],["v8::internal::Assembler::movsxbl(v8::internal::Register, v8::internal::Register)",93957341882592,93957341882780],["v8::internal::SharedFunctionInfo::SetScopeInfo(v8::internal::ScopeInfo, v8::internal::WriteBarrierMode)",93957336066512,93957336067195],["v8::internal::(anonymous namespace)::StressBackgroundCompileThread::~StressBackgroundCompileThread()",93957336072752,93957336072794],["v8::internal::ExternalReferenceEncoder::TryEncode(unsigned long)",93957336073952,93957336074052],["v8::internal::ExternalReferenceTable::Init(v8::internal::Isolate*)",93957336074848,93957336075606],["v8::internal::ExternalReferenceTable::AddNativeCodeStatsCounters(v8::internal::Isolate*, int*)",93957336079648,93957336080955],["long v8::internal::SearchStringRaw<unsigned char const, unsigned char const>(v8::internal::Isolate*, unsigned char const*, int, unsigned char const*, int, int)",93957336080976,93957336081115],["long v8::internal::SearchStringRaw<unsigned short const, unsigned char const>(v8::internal::Isolate*, unsigned short const*, int, unsigned char const*, int, int)",93957336081488,93957336081627],["v8::internal::ExternalReference::Create(v8::internal::Runtime::FunctionId)",93957336081776,93957336081817],["v8::internal::Assembler::lfence()",93957341874672,93957341874761],["v8::internal::Assembler::emit_inc(v8::internal::Operand, int)",93957341876576,93957341876700],["v8::internal::Assembler::jmp(unsigned long, v8::internal::RelocInfo::Mode)",93957341878448,93957341878625],["v8::internal::Assembler::load_rax(v8::internal::ExternalReference)",93957341879024,93957341879190],["v8::internal::Assembler::movb(v8::internal::Operand, v8::internal::Register)",93957341879472,93957341879605],["v8::internal::Assembler::movw(v8::internal::Register, v8::internal::Operand)",93957341879744,93957341879882],["v8::internal::Assembler::movw(v8::internal::Operand, v8::internal::Immediate)",93957341880032,93957341880193],["v8::internal::Assembler::emit_mov(v8::internal::Register, v8::internal::Register, int)",93957341880368,93957341880641],["v8::internal::(anonymous namespace)::CompilerTracer::TraceAbortedJob(v8::internal::Isolate*, v8::internal::OptimizedCompilationInfo*)",93957336064080,93957336064409],["v8::internal::IsCompiledScope::IsCompiledScope(v8::internal::SharedFunctionInfo, v8::internal::Isolate*)",93957336068400,93957336068654],["v8::internal::CompilationJob::Status v8::internal::(anonymous namespace)::FinalizeSingleUnoptimizedCompilationJob<v8::internal::Isolate>(v8::internal::UnoptimizedCompilationJob*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Isolate*, std::__1::vector<v8::internal::FinalizeUnoptimizedCompilationData, std::__1::allocator<v8::internal::FinalizeUnoptimizedCompilationData> >*)",93957336071568,93957336072419],["v8::internal::(anonymous namespace)::StressBackgroundCompileThread::Run()",93957336072864,93957336072882],["v8::internal::ExternalReferenceEncoder::ExternalReferenceEncoder(v8::internal::Isolate*)",93957336073408,93957336073944],["v8::internal::ExternalReferenceEncoder::Encode(unsigned long)",93957336074064,93957336074205],["v8::base::TemplateHashMapImpl<unsigned long, unsigned int, v8::base::KeyEqualityMatcher<long>, v8::base::DefaultAllocationPolicy>::Resize()",93957336074448,93957336074837],["v8::internal::ExternalReferenceTable::AddReferences(v8::internal::Isolate*, int*)",93957336075616,93957336079246],["v8::internal::Assembler::xaddb(v8::internal::Operand, v8::internal::Register)",93957341873472,93957341873620],["v8::internal::Assembler::emit_div(v8::internal::Register, int)",93957341875136,93957341875280],["v8::internal::Assembler::emit_imul(v8::internal::Register, v8::internal::Operand, v8::internal::Immediate, int)",93957341876192,93957341876420],["v8::internal::Assembler::j(v8::internal::Condition, v8::internal::Label*, v8::internal::Label::Distance)",93957341876768,93957341877371],["v8::internal::Assembler::jmp(v8::internal::Handle<v8::internal::Code>, v8::internal::RelocInfo::Mode)",93957341878256,93957341878436],["v8::internal::Assembler::jmp(v8::internal::Register)",93957341878640,93957341878742],["v8::internal::Assembler::emit_lea(v8::internal::Register, v8::internal::Operand, int)",93957341878864,93957341879011],["v8::internal::Assembler::movb(v8::internal::Register, v8::internal::Operand)",93957341879200,93957341879333],["v8::internal::Compiler::GetSharedFunctionInfoForStreamedScript(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Compiler::ScriptDetails const&, v8::ScriptOriginOptions, v8::internal::ScriptStreamingData*)",93957336057648,93957336060714],["v8::internal::(anonymous namespace)::RecursivelyExecuteUnoptimizedCompilationJobs(v8::internal::ParseInfo*, v8::internal::FunctionLiteral*, v8::internal::AccountingAllocator*, std::__1::forward_list<std::__1::unique_ptr<v8::internal::UnoptimizedCompilationJob, std::__1::default_delete<v8::internal::UnoptimizedCompilationJob> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::UnoptimizedCompilationJob, std::__1::default_delete<v8::internal::UnoptimizedCompilationJob> > > >*)",93957336065552,93957336065752],["v8::internal::BytecodeArray v8::internal::SharedFunctionInfo::GetBytecodeArray<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957336067632,93957336067951],["v8::internal::(anonymous namespace)::CompilerTracer::TraceOptimizedCodeCacheHit(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::BytecodeOffset, v8::internal::CodeKind)",93957336068976,93957336069302],["v8::internal::(anonymous namespace)::PrepareJobWithHandleScope(v8::internal::OptimizedCompilationJob*, v8::internal::Isolate*, v8::internal::OptimizedCompilationInfo*)",93957336071392,93957336071564],["void std::__1::vector<v8::internal::FinalizeUnoptimizedCompilationData, std::__1::allocator<v8::internal::FinalizeUnoptimizedCompilationData> >::__emplace_back_slow_path<v8::internal::Isolate*&, v8::internal::Handle<v8::internal::SharedFunctionInfo>&, v8::internal::MaybeHandle<v8::internal::CoverageInfo>&, v8::base::TimeDelta, v8::base::TimeDelta>(v8::internal::Isolate*&, v8::internal::Handle<v8::internal::SharedFunctionInfo>&, v8::internal::MaybeHandle<v8::internal::CoverageInfo>&, v8::base::TimeDelta&&, v8::base::TimeDelta&&)",93957336072432,93957336072740],["v8::internal::(anonymous namespace)::StressBackgroundCompileThread::~StressBackgroundCompileThread()",93957336072800,93957336072850],["v8::internal::Parser::~Parser()",93957336072896,93957336073150],["v8::internal::Assembler::near_call(long, v8::internal::RelocInfo::Mode)",93957341872064,93957341872234],["v8::internal::Assembler::cmpxchgb(v8::internal::Operand, v8::internal::Register)",93957341874080,93957341874228],["v8::internal::Assembler::emit_dec(v8::internal::Register, int)",93957341874848,93957341874992],["v8::internal::Assembler::emit_imul(v8::internal::Operand, int)",93957341875424,93957341875551],["v8::internal::Assembler::emit_imul(v8::internal::Register, v8::internal::Register, v8::internal::Immediate, int)",93957341875920,93957341876187],["v8::internal::Assembler::emit_inc(v8::internal::Register, int)",93957341876432,93957341876576],["v8::internal::Assembler::int3()",93957341876704,93957341876763],["v8::internal::Assembler::jmp(v8::internal::Label*, v8::internal::Label::Distance)",93957341877376,93957341877976],["v8::internal::Compiler::CompileForLiveEdit(v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::Script>, v8::internal::Isolate*)",93957336050240,93957336050313],["v8::internal::Compiler::GetOptimizedCodeForOSR(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::BytecodeOffset, v8::internal::JavaScriptFrame*)",93957336061600,93957336061647],["v8::internal::ScriptStreamingData::ScriptStreamingData(std::__1::unique_ptr<v8::ScriptCompiler::ExternalSourceStream, std::__1::default_delete<v8::ScriptCompiler::ExternalSourceStream> >, v8::ScriptCompiler::StreamedSource::Encoding)",93957336065440,93957336065460],["v8::internal::(anonymous namespace)::UpdateSharedFunctionFlagsAfterCompilation(v8::internal::FunctionLiteral*, v8::internal::SharedFunctionInfo)",93957336066080,93957336066269],["void std::__1::vector<v8::internal::FinalizeUnoptimizedCompilationData, std::__1::allocator<v8::internal::FinalizeUnoptimizedCompilationData> >::__emplace_back_slow_path<v8::internal::LocalIsolate*&, v8::internal::Handle<v8::internal::SharedFunctionInfo>&, v8::internal::MaybeHandle<v8::internal::CoverageInfo>&, v8::base::TimeDelta, v8::base::TimeDelta>(v8::internal::LocalIsolate*&, v8::internal::Handle<v8::internal::SharedFunctionInfo>&, v8::internal::MaybeHandle<v8::internal::CoverageInfo>&, v8::base::TimeDelta&&, v8::base::TimeDelta&&)",93957336067200,93957336067619],["void std::__1::vector<v8::internal::DeferredFinalizationJobData, std::__1::allocator<v8::internal::DeferredFinalizationJobData> >::__emplace_back_slow_path<v8::internal::LocalIsolate*&, v8::internal::Handle<v8::internal::SharedFunctionInfo>&, std::__1::unique_ptr<v8::internal::UnoptimizedCompilationJob, std::__1::default_delete<v8::internal::UnoptimizedCompilationJob> > >(v8::internal::LocalIsolate*&, v8::internal::Handle<v8::internal::SharedFunctionInfo>&, std::__1::unique_ptr<v8::internal::UnoptimizedCompilationJob, std::__1::default_delete<v8::internal::UnoptimizedCompilationJob> >&&)",93957336067952,93957336068398],["v8::internal::FeedbackCell::reset_feedback_vector(v8::base::Optional<std::__1::function<void (v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::HeapObject)> >)",93957336068656,93957336068970],["v8::internal::(anonymous namespace)::GetOptimizedCodeLater(std::__1::unique_ptr<v8::internal::OptimizedCompilationJob, std::__1::default_delete<v8::internal::OptimizedCompilationJob> >, v8::internal::Isolate*, v8::internal::OptimizedCompilationInfo*, v8::internal::CodeKind, v8::internal::Handle<v8::internal::JSFunction>)",93957336069312,93957336070308],["v8::internal::Assembler::pblendw(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341870576,93957341870772],["v8::internal::Assembler::cdq()",93957341872640,93957341872699],["v8::internal::Assembler::xaddl(v8::internal::Operand, v8::internal::Register)",93957341873792,93957341873927],["v8::internal::Assembler::emit_cmpxchg(v8::internal::Operand, v8::internal::Register, int)",93957341874400,93957341874562],["v8::internal::Assembler::cqo()",93957341874768,93957341874842],["v8::internal::Assembler::emit_idiv(v8::internal::Register, int)",93957341874992,93957341875132],["v8::internal::Assembler::emit_imul(v8::internal::Register, int)",93957341875280,93957341875424],["v8::internal::Assembler::emit_imul(v8::internal::Register, v8::internal::Register, int)",93957341875552,93957341875742],["v8::internal::Compiler::CompileBaseline(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Compiler::ClearExceptionFlag, v8::internal::IsCompiledScope*)",93957336044960,93957336045197],["v8::internal::Compiler::GetFunctionFromString(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::Object>, v8::internal::ParseRestriction, int, bool)",93957336053488,93957336053555],["v8::internal::(anonymous namespace)::SetScriptFieldsFromDetails(v8::internal::Isolate*, v8::internal::Script, v8::internal::Compiler::ScriptDetails, v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false> >*)",93957336060976,93957336061389],["v8::internal::(anonymous namespace)::InsertCodeIntoOptimizedCodeCache(v8::internal::OptimizedCompilationInfo*)",93957336063440,93957336063999],["v8::internal::Compiler::PostInstantiation(v8::internal::Handle<v8::internal::JSFunction>)",93957336064416,93957336065438],["v8::internal::ScriptStreamingData::~ScriptStreamingData()",93957336065472,93957336065545],["v8::internal::(anonymous namespace)::ExecuteSingleUnoptimizedCompilationJob(v8::internal::ParseInfo*, v8::internal::FunctionLiteral*, v8::internal::AccountingAllocator*, std::__1::vector<v8::internal::FunctionLiteral*, std::__1::allocator<v8::internal::FunctionLiteral*> >*, v8::internal::LocalIsolate*)",93957336065760,93957336066079],["v8::internal::IsCompiledScope v8::internal::SharedFunctionInfo::is_compiled_scope<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957336066272,93957336066498],["v8::internal::Assembler::bsrq(v8::internal::Register, v8::internal::Register)",93957341869232,93957341869380],["v8::internal::Assembler::call(v8::internal::Label*)",93957341871408,93957341871563],["v8::internal::Assembler::call(v8::internal::Register)",93957341872416,93957341872518],["v8::internal::Assembler::cmovl(v8::internal::Condition, v8::internal::Register, v8::internal::Register)",93957341873056,93957341873396],["v8::internal::Assembler::xaddw(v8::internal::Operand, v8::internal::Register)",93957341873632,93957341873785],["v8::internal::Assembler::xaddq(v8::internal::Operand, v8::internal::Register)",93957341873936,93957341874074],["v8::internal::Assembler::cmpxchgw(v8::internal::Operand, v8::internal::Register)",93957341874240,93957341874393],["v8::internal::Assembler::mfence()",93957341874576,93957341874665],["v8::internal::BytecodeArray::set_source_position_table(v8::internal::Object, v8::ReleaseStoreTag, v8::internal::WriteBarrierMode)",93957336035680,93957336035811],["v8::internal::Compiler::FinalizeBackgroundCompileTask(v8::internal::BackgroundCompileTask*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Isolate*, v8::internal::Compiler::ClearExceptionFlag)",93957336048208,93957336049126],["v8::internal::Compiler::ValidateDynamicCompilationSource(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::Object>, bool)",93957336052464,93957336053151],["v8::internal::(anonymous namespace)::CompileScriptOnMainThread(v8::internal::UnoptimizedCompileFlags, v8::internal::Handle<v8::internal::String>, v8::internal::Compiler::ScriptDetails const&, v8::ScriptOriginOptions, v8::internal::NativesFlag, v8::Extension*, v8::internal::Isolate*, v8::internal::IsCompiledScope*)",93957336056656,93957336057081],["v8::internal::Handle<v8::internal::SharedFunctionInfo> v8::internal::(anonymous namespace)::CreateTopLevelSharedFunctionInfo<v8::internal::Isolate>(v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::Script>, v8::internal::Isolate*)",93957336060720,93957336060971],["v8::internal::(anonymous namespace)::FinalizeUnoptimizedScriptCompilation(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>, v8::internal::UnoptimizedCompileFlags const&, v8::internal::UnoptimizedCompileState const*, std::__1::vector<v8::internal::FinalizeUnoptimizedCompilationData, std::__1::allocator<v8::internal::FinalizeUnoptimizedCompilationData> > const&)",93957336061392,93957336061590],["v8::internal::Compiler::FinalizeOptimizedCompilationJob(v8::internal::OptimizedCompilationJob*, v8::internal::Isolate*)",93957336061648,93957336063429],["v8::internal::(anonymous namespace)::InsertCodeIntoCompilationCache(v8::internal::Isolate*, v8::internal::OptimizedCompilationInfo*)",93957336064000,93957336064078],["v8::internal::Assembler::shift(v8::internal::Operand, v8::internal::Immediate, int, int)",93957341867984,93957341868240],["v8::internal::Assembler::bsfq(v8::internal::Register, v8::internal::Register)",93957341869840,93957341869988],["v8::internal::Assembler::palignr(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341870992,93957341871188],["v8::internal::Assembler::call(v8::internal::Handle<v8::internal::Code>, v8::internal::RelocInfo::Mode)",93957341871760,93957341871940],["v8::internal::Assembler::near_jmp(long, v8::internal::RelocInfo::Mode)",93957341872240,93957341872415],["v8::internal::Assembler::call(v8::internal::Operand)",93957341872528,93957341872640],["v8::internal::Assembler::cmovq(v8::internal::Condition, v8::internal::Register, v8::internal::Register)",93957341872704,93957341873045],["v8::internal::Assembler::lock()",93957341873408,93957341873467],["v8::internal::OptimizedCompilationJob::RecordFunctionCompilation(v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Isolate*) const",93957336027216,93957336027473],["v8::internal::(anonymous namespace)::CompileAllWithBaseline(v8::internal::Isolate*, std::__1::vector<v8::internal::FinalizeUnoptimizedCompilationData, std::__1::allocator<v8::internal::FinalizeUnoptimizedCompilationData> > const&, v8::internal::Compiler::ClearExceptionFlag)",93957336040944,93957336041282],["v8::internal::Compiler::CompileToplevel(v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::Script>, v8::internal::Isolate*, v8::internal::IsCompiledScope*)",93957336046544,93957336046562],["v8::internal::Compiler::CompileOptimized(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::ConcurrencyMode, v8::internal::CodeKind)",93957336049376,93957336049555],["v8::internal::Compiler::GetFunctionFromEval(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode, v8::internal::ParseRestriction, int, int, int)",93957336050320,93957336052450],["v8::internal::Compiler::GetFunctionFromValidatedString(v8::internal::Handle<v8::internal::Context>, v8::internal::MaybeHandle<v8::internal::String>, v8::internal::ParseRestriction, int)",93957336053152,93957336053476],["v8::internal::Compiler::GetSharedFunctionInfoForScript(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Compiler::ScriptDetails const&, v8::ScriptOriginOptions, v8::Extension*, v8::internal::ScriptData*, v8::ScriptCompiler::CompileOptions, v8::ScriptCompiler::NoCacheReason, v8::internal::NativesFlag)",93957336053568,93957336056651],["v8::internal::(anonymous namespace)::ScriptCompileTimerScope::~ScriptCompileTimerScope()",93957336057088,93957336057646],["v8::internal::Assembler::arithmetic_op_8(unsigned char, v8::internal::Register, v8::internal::Register)",93957341865968,93957341866196],["v8::internal::Assembler::bswapq(v8::internal::Register)",93957341868656,93957341868763],["v8::internal::Assembler::bsfl(v8::internal::Register, v8::internal::Register)",93957341869536,93957341869681],["v8::internal::Assembler::pblendw(v8::internal::XMMRegister, v8::internal::Operand, unsigned char)",93957341870144,93957341870340],["v8::internal::Assembler::sse4_instr(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char, unsigned char, unsigned char, unsigned char)",93957341870784,93957341870987],["v8::internal::Assembler::palignr(v8::internal::XMMRegister, v8::internal::XMMRegister, unsigned char)",93957341871200,93957341871396],["v8::internal::Assembler::call(unsigned long, v8::internal::RelocInfo::Mode)",93957341871568,93957341871745],["v8::internal::Assembler::RecordRelocInfo(v8::internal::RelocInfo::Mode, long)",93957341871952,93957341872050],["v8::internal::Handle<v8::internal::SharedFunctionInfo> v8::internal::Compiler::GetSharedFunctionInfo<v8::internal::LocalIsolate>(v8::internal::FunctionLiteral*, v8::internal::Handle<v8::internal::Script>, v8::internal::LocalIsolate*)",93957336023984,93957336024454],["v8::internal::BackgroundCompileTask::Run()",93957336028720,93957336033430],["bool v8::internal::(anonymous namespace)::IterativelyExecuteAndFinalizeUnoptimizedCompilationJobs<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Script>, v8::internal::ParseInfo*, v8::internal::AccountingAllocator*, v8::internal::IsCompiledScope*, std::__1::vector<v8::internal::FinalizeUnoptimizedCompilationData, std::__1::allocator<v8::internal::FinalizeUnoptimizedCompilationData> >*, std::__1::vector<v8::internal::DeferredFinalizationJobData, std::__1::allocator<v8::internal::DeferredFinalizationJobData> >*)",93957336037952,93957336038616],["v8::internal::JSFunction::ResetIfBytecodeFlushed(v8::base::Optional<std::__1::function<void (v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::HeapObject)> >)",93957336042304,93957336042729],["v8::internal::(anonymous namespace)::CompileSharedWithBaseline(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Compiler::ClearExceptionFlag, v8::internal::IsCompiledScope*)",93957336045200,93957336046531],["v8::internal::(anonymous namespace)::CompileToplevel(v8::internal::ParseInfo*, v8::internal::Handle<v8::internal::Script>, v8::internal::MaybeHandle<v8::internal::ScopeInfo>, v8::internal::Isolate*, v8::internal::IsCompiledScope*)",93957336046576,93957336048208],["v8::internal::(anonymous namespace)::FinalizeAllUnoptimizedCompilationJobs(v8::internal::ParseInfo*, v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>, std::__1::forward_list<std::__1::unique_ptr<v8::internal::UnoptimizedCompilationJob, std::__1::default_delete<v8::internal::UnoptimizedCompilationJob> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::UnoptimizedCompilationJob, std::__1::default_delete<v8::internal::UnoptimizedCompilationJob> > > >*, std::__1::vector<v8::internal::FinalizeUnoptimizedCompilationData, std::__1::allocator<v8::internal::FinalizeUnoptimizedCompilationData> >*)",93957336049136,93957336049363],["v8::internal::(anonymous namespace)::ContinuationForConcurrentOptimization(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957336049568,93957336050237],["v8::internal::Assembler::is_optimizable_farjmp(int)",93957341864016,93957341864131],["v8::internal::Assembler::immediate_arithmetic_op_16(unsigned char, v8::internal::Operand, v8::internal::Immediate)",93957341867216,93957341867423],["v8::internal::Assembler::shift(v8::internal::Operand, int, int)",93957341868400,93957341868537],["v8::internal::Assembler::bsrl(v8::internal::Register, v8::internal::Register)",93957341868928,93957341869073],["v8::internal::Assembler::bsrq(v8::internal::Register, v8::internal::Operand)",93957341869392,93957341869530],["v8::internal::Assembler::bsfl(v8::internal::Register, v8::internal::Operand)",93957341869696,93957341869831],["v8::internal::Assembler::bsfq(v8::internal::Register, v8::internal::Operand)",93957341870000,93957341870138],["v8::internal::Assembler::sse4_instr(v8::internal::XMMRegister, v8::internal::Operand, unsigned char, unsigned char, unsigned char, unsigned char)",93957341870352,93957341870563],["v8::internal::CompilationCache::PutRegExp(v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::FixedArray>)",93957336022816,93957336022830],["v8::internal::OptimizedCompilationJob::FinalizeJob(v8::internal::Isolate*)",93957336025872,93957336026024],["v8::internal::BackgroundCompileTask::BackgroundCompileTask(v8::internal::ParseInfo const*, v8::internal::AstRawString const*, v8::internal::FunctionLiteral const*, v8::internal::WorkerThreadRuntimeCallStats*, v8::internal::TimedHistogram*, int)",93957336027840,93957336028277],["v8::internal::BytecodeArray::SourcePositionTable() const",93957336035472,93957336035536],["v8::internal::Compiler::Compile(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Compiler::ClearExceptionFlag, v8::internal::IsCompiledScope*)",93957336035824,93957336037943],["v8::internal::(anonymous namespace)::FinalizeUnoptimizedCompilation(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>, v8::internal::UnoptimizedCompileFlags const&, v8::internal::UnoptimizedCompileState const*, std::__1::vector<v8::internal::FinalizeUnoptimizedCompilationData, std::__1::allocator<v8::internal::FinalizeUnoptimizedCompilationData> > const&)",93957336038624,93957336040930],["v8::internal::Compiler::Compile(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Compiler::ClearExceptionFlag, v8::internal::IsCompiledScope*)",93957336041296,93957336042291],["v8::internal::(anonymous namespace)::GetOptimizedCode(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::ConcurrencyMode, v8::internal::CodeKind, v8::internal::BytecodeOffset, v8::internal::JavaScriptFrame*)",93957336042736,93957336044952],["v8::internal::Assembler::FinalizeJumpOptimizationInfo()",93957341861696,93957341861954],["v8::internal::Assembler::arithmetic_op(unsigned char, v8::internal::Register, v8::internal::Register, int)",93957341865120,93957341865409],["v8::internal::Assembler::immediate_arithmetic_op(unsigned char, v8::internal::Operand, v8::internal::Immediate, int)",93957341866608,93957341866919],["v8::internal::Assembler::immediate_arithmetic_op_8(unsigned char, v8::internal::Register, v8::internal::Immediate)",93957341867568,93957341867711],["v8::internal::Assembler::shift(v8::internal::Register, int, int)",93957341868240,93957341868387],["v8::internal::Assembler::bswapl(v8::internal::Register)",93957341868544,93957341868651],["v8::internal::Assembler::btrq(v8::internal::Register, v8::internal::Immediate)",93957341868768,93957341868917],["v8::internal::Assembler::bsrl(v8::internal::Register, v8::internal::Operand)",93957341869088,93957341869223],["v8::internal::CompilationCacheCode::TraceHit(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Code>)",93957336021184,93957336021590],["v8::internal::CompilationCache::MarkCompactPrologue()",93957336023248,93957336023323],["v8::internal::OptimizedCompilationJob::PrepareJob(v8::internal::Isolate*)",93957336025280,93957336025775],["v8::internal::OptimizedCompilationJob::AbortOptimization(v8::internal::BailoutReason)",93957336026080,93957336026117],["v8::internal::BackgroundCompileTask::BackgroundCompileTask(v8::internal::ScriptStreamingData*, v8::internal::Isolate*, v8::ScriptType)",93957336027488,93957336027831],["v8::internal::BackgroundCompileTask::~BackgroundCompileTask()",93957336028288,93957336028720],["v8::internal::Compiler::CollectSourcePositions(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336033440,93957336035464],["v8::internal::SharedFunctionInfo::GetActiveBytecodeArray() const",93957336035536,93957336035679],["v8::internal::CpuFeatures::ProbeImpl(bool)",93957341859408,93957341860036],["v8::internal::Assembler::bind_to(v8::internal::Label*, int)",93957341862416,93957341863375],["v8::internal::Assembler::emit_operand(int, v8::internal::Operand)",93957341864496,93957341864952],["v8::internal::Assembler::arithmetic_op_16(unsigned char, v8::internal::Register, v8::internal::Operand)",93957341865648,93957341865798],["v8::internal::Assembler::immediate_arithmetic_op(unsigned char, v8::internal::Register, v8::internal::Immediate, int)",93957341866208,93957341866604],["v8::internal::Assembler::immediate_arithmetic_op_16(unsigned char, v8::internal::Register, v8::internal::Immediate)",93957341866928,93957341867204],["v8::internal::Assembler::immediate_arithmetic_op_8(unsigned char, v8::internal::Operand, v8::internal::Immediate)",93957341867424,93957341867565],["v8::internal::Assembler::shift(v8::internal::Register, v8::internal::Immediate, int, int)",93957341867712,93957341867984],["v8::internal::CompilationCacheScript::Put(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336017264,93957336017611],["v8::internal::CompilationCache::LookupRegExp(v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957336022128,93957336022142],["v8::internal::CompilationCache::Clear()",93957336022864,93957336023023],["v8::internal::CompilationCache::DisableScriptAndEval()",93957336023344,93957336023510],["v8::internal::Compiler::LogFunctionCompilation(v8::internal::Isolate*, v8::internal::CodeEventListener::LogEventsAndTags, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::AbstractCode>, v8::internal::CodeKind, double)",93957336024464,93957336025279],["v8::internal::OptimizedCompilationJob::ExecuteJob(v8::internal::RuntimeCallStats*, v8::internal::LocalIsolate*)",93957336025776,93957336025871],["v8::internal::OptimizedCompilationJob::RetryOptimization(v8::internal::BailoutReason)",93957336026032,93957336026069],["v8::internal::OptimizedCompilationJob::RecordCompilationStats(v8::internal::OptimizedCompilationJob::CompilationMode, v8::internal::Isolate*) const",93957336026128,93957336027201],["v8::internal::wasm::(anonymous namespace)::FunctionEquivalentIndices(unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*)",93957341855008,93957341855681],["v8::internal::ConstPool::PatchEntries()",93957341860784,93957341861236],["v8::internal::Assembler::Nop(int)",93957341862128,93957341862269],["v8::internal::Assembler::bind(v8::internal::Label*)",93957341863504,93957341863520],["v8::internal::Assembler::GrowBuffer()",93957341864144,93957341864492],["v8::internal::Assembler::arithmetic_op(unsigned char, v8::internal::Register, v8::internal::Operand, int)",93957341864960,93957341865119],["v8::internal::Assembler::arithmetic_op_16(unsigned char, v8::internal::Register, v8::internal::Register)",93957341865424,93957341865646],["v8::internal::Assembler::arithmetic_op_8(unsigned char, v8::internal::Register, v8::internal::Operand)",93957341865808,93957341865953],["v8::internal::CompilationCacheEval::Age()",93957336014432,93957336014475],["v8::internal::CompilationCacheRegExp::Put(v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::FixedArray>)",93957336019440,93957336019765],["v8::internal::CompilationCache::LookupScript(v8::internal::Handle<v8::internal::String>, v8::internal::MaybeHandle<v8::internal::Object>, int, int, v8::ScriptOriginOptions, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode)",93957336021680,93957336021719],["v8::internal::CompilationCache::PutScript(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336022176,93957336022325],["v8::internal::CompilationCache::PutCode(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Code>)",93957336022832,93957336022849],["v8::internal::CompilationCache::Iterate(v8::internal::RootVisitor*)",93957336023024,93957336023236],["v8::internal::CompilationCache::EnableScriptAndEval()",93957336023328,93957336023341],["v8::internal::Handle<v8::internal::SharedFunctionInfo> v8::internal::Compiler::GetSharedFunctionInfo<v8::internal::Isolate>(v8::internal::FunctionLiteral*, v8::internal::Handle<v8::internal::Script>, v8::internal::Isolate*)",93957336023520,93957336023978],["v8::internal::wasm::IsSubtypeOfImpl(v8::internal::wasm::ValueType, v8::internal::wasm::ValueType, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*)",93957341850080,93957341851916],["std::__1::__hash_table<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*>, v8::internal::wasm::(anonymous namespace)::CacheKeyHasher, std::__1::equal_to<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> >, v8::internal::ZoneAllocator<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> > >::__rehash(unsigned long)",93957341857584,93957341858361],["v8::internal::Assembler::AllocateAndInstallRequestedHeapObjects(v8::internal::Isolate*)",93957341860256,93957341860423],["v8::internal::Assembler::Assembler(v8::internal::AssemblerOptions const&, std::__1::unique_ptr<v8::internal::AssemblerBuffer, std::__1::default_delete<v8::internal::AssemblerBuffer> >)",93957341861280,93957341861498],["v8::internal::Assembler::Align(int)",93957341861968,93957341862125],["v8::internal::Assembler::CodeTargetAlign()",93957341862272,93957341862413],["std::__1::deque<int, std::__1::allocator<int> >::push_back(int&&)",93957341863376,93957341863503],["v8::internal::Assembler::record_farjmp_position(v8::internal::Label*, int)",93957341863520,93957341864007],["v8::internal::CodeFactory::CallFunction(v8::internal::Isolate*, v8::internal::ConvertReceiverMode)",93957336013904,93957336013967],["v8::internal::CompilationSubCache::Remove(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336015744,93957336016032],["v8::internal::CompilationCacheEval::Put(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::FeedbackCell>, int)",93957336018208,93957336018606],["v8::internal::CompilationCacheCode::Put(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Code>)",93957336020464,93957336020763],["v8::internal::CompilationCache::Remove(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336021600,93957336021679],["v8::internal::CompilationCache::LookupEval(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode, int)",93957336021728,93957336022113],["v8::internal::CompilationCache::LookupCode(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336022144,93957336022161],["v8::internal::CompilationCache::PutEval(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::FeedbackCell>, int)",93957336022336,93957336022812],["_ZNSt3__16vectorIN2v88internal4wasm19DeserializationUnitENS_9allocatorIS4_EEE6insertINS_13move_iteratorINS_11__wrap_iterIPS4_EEEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISF_E9referenceEEE5valueESC_E4typeENSA_IPKS4_EESF_SF_",93957341847056,93957341848251],["v8::internal::wasm::EquivalentTypes(v8::internal::wasm::ValueType, v8::internal::wasm::ValueType, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*)",93957341853312,93957341853895],["std::__1::pair<std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*>, void*>*>, bool> std::__1::unordered_set<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*>, v8::internal::wasm::(anonymous namespace)::CacheKeyHasher, std::__1::equal_to<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> >, v8::internal::ZoneAllocator<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> > >::emplace<unsigned int&, unsigned int&, v8::internal::wasm::WasmModule const*&, v8::internal::wasm::WasmModule const*&>(unsigned int&, unsigned int&, v8::internal::wasm::WasmModule const*&, v8::internal::wasm::WasmModule const*&)",93957341856176,93957341857186],["v8::base::LazyInstanceImpl<v8::internal::wasm::(anonymous namespace)::TypeJudgementCache, v8::base::StaticallyAllocatedInstanceTrait<v8::internal::wasm::(anonymous namespace)::TypeJudgementCache>, v8::base::DefaultConstructTrait<v8::internal::wasm::(anonymous namespace)::TypeJudgementCache>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::internal::wasm::(anonymous namespace)::TypeJudgementCache> >::InitInstance(void*)",93957341859168,93957341859357],["v8::internal::CpuFeatures::PrintFeatures()",93957341860048,93957341860246],["v8::internal::ConstPool::AddSharedEntry(unsigned long, int)",93957341860432,93957341860782],["v8::internal::Assembler::PatchConstPool()",93957341861248,93957341861277],["v8::internal::Assembler::GetCode(v8::internal::Isolate*, v8::internal::CodeDesc*, v8::internal::SafepointTableBuilder*, int)",93957341861504,93957341861691],["v8::internal::CodeFactory::ElementsTransitionAndStore(v8::internal::Isolate*, v8::internal::KeyedAccessStoreMode)",93957336013472,93957336013521],["v8::internal::CodeFactory::ConstructForwardVarargs(v8::internal::Isolate*)",93957336014064,93957336014093],["v8::internal::CompilationCacheCode::Age()",93957336014928,93957336015378],["v8::internal::String::Equals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957336016464,93957336016554],["v8::internal::CompilationCacheEval::Lookup(v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode, int)",93957336017616,93957336018205],["v8::internal::CompilationCacheRegExp::Lookup(v8::internal::Handle<v8::internal::String>, v8::base::Flags<v8::internal::JSRegExp::Flag, int>)",93957336018608,93957336019427],["v8::internal::CompilationCacheCode::Lookup(v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957336019776,93957336020453],["v8::internal::CompilationCacheCode::TraceInsertion(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::Code>)",93957336020768,93957336021174],["v8::internal::Version::Hash()",93957341832448,93957341832568],["v8::internal::wasm::CopyAndRelocTask::Run(v8::JobDelegate*)",93957341848672,93957341849159],["v8::internal::wasm::(anonymous namespace)::StructIsSubtypeOf(unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*)",93957341852064,93957341852810],["v8::internal::wasm::(anonymous namespace)::StructEquivalentIndices(unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*)",93957341853984,93957341854523],["std::__1::unordered_set<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*>, v8::internal::wasm::(anonymous namespace)::CacheKeyHasher, std::__1::equal_to<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> >, v8::internal::ZoneAllocator<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> > >::count(std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> const&) const",93957341855696,93957341856162],["std::__1::__hash_table<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*>, v8::internal::wasm::(anonymous namespace)::CacheKeyHasher, std::__1::equal_to<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> >, v8::internal::ZoneAllocator<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> > >::rehash(unsigned long)",93957341857200,93957341857571],["std::__1::unordered_set<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*>, v8::internal::wasm::(anonymous namespace)::CacheKeyHasher, std::__1::equal_to<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> >, v8::internal::ZoneAllocator<std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> > >::erase(std::__1::tuple<unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*> const&)",93957341858368,93957341859158],["v8::internal::CpuFeatures::SupportsWasmSimd128()",93957341859360,93957341859401],["v8::internal::CodeDesc::Initialize(v8::internal::CodeDesc*, v8::internal::Assembler*, int, int, int, int, int)",93957336012816,93957336012975],["v8::internal::CodeFactory::Call(v8::internal::Isolate*, v8::internal::ConvertReceiverMode)",93957336013728,93957336013791],["v8::internal::CodeFactory::CallFunctionForwardVarargs(v8::internal::Isolate*)",93957336014000,93957336014029],["v8::internal::CompilationCache::CompilationCache(v8::internal::Isolate*)",93957336014128,93957336014355],["v8::internal::CompilationCacheRegExp::Age()",93957336014480,93957336014914],["v8::internal::CompilationCacheCode::TraceAgeing()",93957336015392,93957336015733],["v8::internal::CompilationCacheScript::HasOrigin(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::MaybeHandle<v8::internal::Object>, int, int, v8::ScriptOriginOptions)",93957336016032,93957336016457],["v8::internal::CompilationCacheScript::Lookup(v8::internal::Handle<v8::internal::String>, v8::internal::MaybeHandle<v8::internal::Object>, int, int, v8::ScriptOriginOptions, v8::internal::Handle<v8::internal::Context>, v8::internal::LanguageMode)",93957336016560,93957336017256],["v8::internal::wasm::ScheduledErrorThrower::~ScheduledErrorThrower()",93957341825888,93957341826114],["bool std::__1::__insertion_sort_incomplete<v8::internal::wasm::(anonymous namespace)::ExternalReferenceList::ExternalReferenceList()::{lambda(unsigned int, unsigned int)#1}&, unsigned int*>(unsigned int*, unsigned int*, v8::internal::wasm::(anonymous namespace)::ExternalReferenceList::ExternalReferenceList()::{lambda(unsigned int, unsigned int)#1}&)",93957341845488,93957341846242],["v8::internal::wasm::CopyAndRelocTask::~CopyAndRelocTask()",93957341848512,93957341848585],["void std::__1::vector<v8::internal::wasm::DeserializationUnit, std::__1::allocator<v8::internal::wasm::DeserializationUnit> >::__emplace_back_slow_path<v8::internal::wasm::DeserializationUnit>(v8::internal::wasm::DeserializationUnit&&)",93957341849216,93957341849620],["v8::internal::wasm::(anonymous namespace)::TypeJudgementCache::instance()",93957341851920,93957341852056],["v8::internal::wasm::(anonymous namespace)::ArrayIsSubtypeOf(unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*)",93957341852816,93957341853300],["v8::internal::wasm::CommonSubtype(v8::internal::wasm::ValueType, v8::internal::wasm::ValueType, v8::internal::wasm::WasmModule const*)",93957341853904,93957341853982],["v8::internal::wasm::(anonymous namespace)::ArrayEquivalentIndices(unsigned int, unsigned int, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmModule const*)",93957341854528,93957341854994],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::HeapObject>, unsigned long>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::HeapObject>, unsigned long>, std::__1::__unordered_map_hasher<v8::internal::Handle<v8::internal::HeapObject>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::HeapObject>, unsigned long>, v8::internal::Handle<v8::internal::HeapObject>::hash, v8::internal::Handle<v8::internal::HeapObject>::equal_to, true>, std::__1::__unordered_map_equal<v8::internal::Handle<v8::internal::HeapObject>, std::__1::__hash_value_type<v8::internal::Handle<v8::internal::HeapObject>, unsigned long>, v8::internal::Handle<v8::internal::HeapObject>::equal_to, v8::internal::Handle<v8::internal::HeapObject>::hash, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Handle<v8::internal::HeapObject>, unsigned long> > >::__emplace_unique_key_args<v8::internal::Handle<v8::internal::HeapObject>, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::Handle<v8::internal::HeapObject> const&>, std::__1::tuple<> >(v8::internal::Handle<v8::internal::HeapObject> const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::Handle<v8::internal::HeapObject> const&>&&, std::__1::tuple<>&&)",93957336010960,93957336011883],["v8::internal::CodeFactory::LoadGlobalICInOptimizedCode(v8::internal::Isolate*, v8::internal::TypeofMode)",93957336013312,93957336013351],["v8::internal::CodeFactory::StringAdd(v8::internal::Isolate*, v8::internal::StringAddFlags)",93957336013600,93957336013656],["v8::internal::CodeFactory::CallWithArrayLike(v8::internal::Isolate*)",93957336013840,93957336013869],["v8::internal::CodeFactory::CallForwardVarargs(v8::internal::Isolate*)",93957336013968,93957336013997],["v8::internal::CodeFactory::ConstructWithSpread(v8::internal::Isolate*)",93957336014032,93957336014061],["v8::internal::CodeFactory::ConstructFunctionForwardVarargs(v8::internal::Isolate*)",93957336014096,93957336014125],["v8::internal::CompilationCacheScript::Age()",93957336014368,93957336014423],["v8::internal::wasm::ErrorThrower::TypeError(char const*, ...)",93957341824480,93957341824623],["v8::internal::wasm::(anonymous namespace)::WriteHeader(v8::internal::wasm::(anonymous namespace)::Writer*)",93957341827792,93957341827904],["void std::__1::__sort<v8::internal::wasm::(anonymous namespace)::ExternalReferenceList::ExternalReferenceList()::{lambda(unsigned int, unsigned int)#1}&, unsigned int*>(unsigned int*, unsigned int*, v8::internal::wasm::(anonymous namespace)::ExternalReferenceList::ExternalReferenceList()::{lambda(unsigned int, unsigned int)#1}&)",93957341843520,93957341845224],["v8::internal::wasm::PublishTask::GetMaxConcurrency(unsigned long) const",93957341846624,93957341846678],["std::__1::deque<std::__1::vector<v8::internal::wasm::DeserializationUnit, std::__1::allocator<v8::internal::wasm::DeserializationUnit> >, std::__1::allocator<std::__1::vector<v8::internal::wasm::DeserializationUnit, std::__1::allocator<v8::internal::wasm::DeserializationUnit> > > >::pop_front()",93957341848256,93957341848499],["v8::internal::wasm::CopyAndRelocTask::~CopyAndRelocTask()",93957341848592,93957341848668],["v8::internal::wasm::CopyAndRelocTask::GetMaxConcurrency(unsigned long) const",93957341849168,93957341849207],["std::__1::__deque_base<std::__1::vector<v8::internal::wasm::DeserializationUnit, std::__1::allocator<v8::internal::wasm::DeserializationUnit> >, std::__1::allocator<std::__1::vector<v8::internal::wasm::DeserializationUnit, std::__1::allocator<v8::internal::wasm::DeserializationUnit> > > >::clear()",93957341849632,93957341850080],["v8::internal::StdoutStream::~StdoutStream()",93957336010272,93957336010381],["v8::internal::CodeCommentsWriter::Emit(v8::internal::Assembler*)",93957336011968,93957336012233],["v8::internal::CodeFactory::CallApiCallback(v8::internal::Isolate*)",93957336013232,93957336013261],["v8::internal::CodeFactory::StoreOwnICInOptimizedCode(v8::internal::Isolate*)",93957336013392,93957336013421],["v8::internal::CodeFactory::StoreFastElementIC(v8::internal::Isolate*, v8::internal::KeyedAccessStoreMode)",93957336013536,93957336013585],["v8::internal::CodeFactory::FastNewFunctionContext(v8::internal::Isolate*, v8::internal::ScopeType)",93957336013664,93957336013725],["v8::internal::CodeFactory::Call_WithFeedback(v8::internal::Isolate*, v8::internal::ConvertReceiverMode)",93957336013792,93957336013838],["v8::internal::CodeFactory::CallWithSpread(v8::internal::Isolate*)",93957336013872,93957336013901],["std::__1::__shared_ptr_emplace<v8::internal::(anonymous namespace)::WasmInstanceNativeAllocations, std::__1::allocator<v8::internal::(anonymous namespace)::WasmInstanceNativeAllocations> >::~__shared_ptr_emplace()",93957341823040,93957341823060],["v8::internal::wasm::ErrorThrower::RuntimeError(char const*, ...)",93957341825056,93957341825199],["v8::internal::wasm::WasmSerializer::GetSerializedNativeModuleSize() const",93957341826176,93957341826400],["v8::internal::wasm::NativeModuleDeserializer::Publish(std::__1::vector<v8::internal::wasm::DeserializationUnit, std::__1::allocator<v8::internal::wasm::DeserializationUnit> >)",93957341828320,93957341828678],["v8::internal::wasm::(anonymous namespace)::ExternalReferenceList::ExternalReferenceList()",93957341832576,93957341843511],["unsigned int std::__1::__sort4<v8::internal::wasm::(anonymous namespace)::ExternalReferenceList::ExternalReferenceList()::{lambda(unsigned int, unsigned int)#1}&, unsigned int*>(unsigned int*, unsigned int*, unsigned int*, unsigned int*, v8::internal::wasm::(anonymous namespace)::ExternalReferenceList::ExternalReferenceList()::{lambda(unsigned int, unsigned int)#1}&)",93957341845232,93957341845488],["v8::internal::wasm::PublishTask::Run(v8::JobDelegate*)",93957341846256,93957341846617],["v8::internal::wasm::DeserializationQueue::PopAll()",93957341846688,93957341847041],["v8::internal::AssemblerBase::GetCodeTarget(long) const",93957336009008,93957336009022],["v8::internal::(anonymous namespace)::DefaultAssemblerBuffer::~DefaultAssemblerBuffer()",93957336010720,93957336010775],["v8::internal::GetAbortReason(v8::internal::AbortReason)",93957336011920,93957336011939],["v8::internal::CodeCommentsWriter::entry_count() const",93957336012384,93957336012402],["v8::internal::CodeFactory::CEntry(v8::internal::Isolate*, int, v8::internal::SaveFPRegsMode, v8::internal::ArgvMode, bool)",93957336012976,93957336013229],["v8::internal::CodeFactory::LoadGlobalIC(v8::internal::Isolate*, v8::internal::TypeofMode)",93957336013264,93957336013305],["v8::internal::CodeFactory::StoreOwnIC(v8::internal::Isolate*)",93957336013360,93957336013389],["v8::internal::CodeFactory::KeyedStoreIC_SloppyArguments(v8::internal::Isolate*, v8::internal::KeyedAccessStoreMode)",93957336013424,93957336013470],["v8::internal::WasmJSFunction::New(v8::internal::Isolate*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::Handle<v8::internal::JSReceiver>)",93957341820672,93957341821936],["v8::internal::wasm::IsJSCompatibleSignature(v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures const&)",93957341823584,93957341823766],["v8::internal::wasm::ErrorThrower::CompileError(char const*, ...)",93957341824768,93957341824911],["v8::internal::wasm::ErrorThrower::Reset()",93957341825760,93957341825804],["v8::internal::wasm::WasmSerializer::WasmSerializer(v8::internal::wasm::NativeModule*)",93957341826128,93957341826173],["v8::internal::wasm::WasmSerializer::SerializeNativeModule(v8::internal::Vector<unsigned char>) const",93957341826400,93957341827787],["v8::internal::wasm::NativeModuleDeserializer::CopyAndRelocate(v8::internal::wasm::DeserializationUnit const&)",93957341827904,93957341828313],["v8::internal::wasm::DeserializeNativeModule(v8::internal::Isolate*, v8::internal::Vector<unsigned char const>, v8::internal::Vector<unsigned char const>, v8::internal::Vector<char const>)",93957341828688,93957341832442],["v8::internal::AssemblerBase::~AssemblerBase()",93957336008240,93957336008268],["v8::internal::OFStream::~OFStream()",93957336009920,93957336009991],["virtual thunk to v8::internal::StdoutStream::~StdoutStream()",93957336010528,93957336010666],["v8::internal::(anonymous namespace)::ExternalAssemblerBufferImpl::~ExternalAssemblerBufferImpl()",93957336010864,93957336010928],["v8::internal::GetBailoutReason(v8::internal::BailoutReason)",93957336011888,93957336011907],["v8::internal::IsValidAbortReason(int)",93957336011952,93957336011964],["v8::internal::CodeCommentsWriter::Add(unsigned int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957336012240,93957336012379],["void std::__1::vector<v8::internal::CodeCommentEntry, std::__1::allocator<v8::internal::CodeCommentEntry> >::__push_back_slow_path<v8::internal::CodeCommentEntry>(v8::internal::CodeCommentEntry&&)",93957336012416,93957336012803],["v8::internal::WasmCapiFunction::MatchesSignature(v8::internal::Signature<v8::internal::wasm::ValueType> const*) const",93957341818864,93957341819174],["v8::internal::AsmWasmData::New(v8::internal::Isolate*, std::__1::shared_ptr<v8::internal::wasm::NativeModule>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Handle<v8::internal::HeapNumber>)",93957341822320,93957341822881],["std::__1::__shared_ptr_emplace<v8::internal::(anonymous namespace)::WasmInstanceNativeAllocations, std::__1::allocator<v8::internal::(anonymous namespace)::WasmInstanceNativeAllocations> >::__on_zero_shared()",93957341823120,93957341823292],["v8::internal::wasm::ErrorThrower::Format(v8::internal::wasm::ErrorThrower::ErrorType, char const*, __va_list_tag*)",93957341823952,93957341824194],["v8::internal::wasm::ErrorThrower::RangeError(char const*, ...)",93957341824624,93957341824767],["v8::internal::wasm::ErrorThrower::LinkError(char const*, ...)",93957341824912,93957341825055],["v8::internal::wasm::ErrorThrower::Reify()",93957341825200,93957341825749],["v8::internal::wasm::ErrorThrower::~ErrorThrower()",93957341825808,93957341825888],["v8::internal::AlignedSlotAllocator::AllocateUnaligned(int)",93957336007056,93957336007151],["v8::internal::Assembler::RecordDeoptReason(v8::internal::DeoptimizeReason, v8::internal::SourcePosition, int)",93957336008448,93957336008590],["v8::internal::AssemblerBase::GetEmbeddedObject(unsigned long) const",93957336009776,93957336009790],["virtual thunk to v8::internal::OFStream::~OFStream()",93957336010080,93957336010165],["virtual thunk to v8::internal::StdoutStream::~StdoutStream()",93957336010384,93957336010514],["v8::internal::(anonymous namespace)::DefaultAssemblerBuffer::~DefaultAssemblerBuffer()",93957336010672,93957336010714],["v8::internal::(anonymous namespace)::DefaultAssemblerBuffer::Grow(int)",93957336010784,93957336010853],["v8::internal::(anonymous namespace)::ExternalAssemblerBufferImpl::Grow(int)",93957336010928,93957336010946],["v8::internal::WasmJSFunction::GetSignature(v8::internal::Zone*)",93957341816272,93957341816534],["v8::internal::WasmExportedFunction::GetWasmCallTarget()",93957341819824,93957341819983],["v8::internal::WasmExternalFunction::IsWasmExternalFunction(v8::internal::Object)",93957341822112,93957341822260],["std::__1::__shared_ptr_emplace<v8::internal::(anonymous namespace)::IftNativeAllocations, std::__1::allocator<v8::internal::(anonymous namespace)::IftNativeAllocations> >::~__shared_ptr_emplace()",93957341822928,93957341822966],["std::__1::__shared_ptr_emplace<v8::internal::(anonymous namespace)::WasmInstanceNativeAllocations, std::__1::allocator<v8::internal::(anonymous namespace)::WasmInstanceNativeAllocations> >::~__shared_ptr_emplace()",93957341823072,93957341823110],["v8::internal::wasm::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::Signature<v8::internal::wasm::ValueType> const&)",93957341823296,93957341823576],["v8::internal::wasm::WasmError::FormatError(char const*, __va_list_tag*)",93957341823776,93957341823948],["v8::internal::wasm::(anonymous namespace)::PrintFToString(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, unsigned long, char const*, ...)",93957341824208,93957341824475],["v8::internal::BuiltinsConstantsTableBuilder::PatchSelfReference(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Code>)",93957336005984,93957336006052],["v8::internal::ExternalAssemblerBuffer(void*, int)",93957336007520,93957336007609],["v8::internal::HeapObjectRequest::HeapObjectRequest(double, int)",93957336008384,93957336008404],["v8::internal::AssemblerBase::RequestHeapObject(v8::internal::HeapObjectRequest)",93957336008656,93957336008718],["v8::internal::AssemblerBase::AddEmbeddedObject(v8::internal::Handle<v8::internal::HeapObject>)",93957336009024,93957336009769],["v8::internal::Assembler::WriteCodeComments()",93957336009792,93957336009908],["v8::internal::OFStream::~OFStream()",93957336010000,93957336010079],["virtual thunk to v8::internal::OFStream::~OFStream()",93957336010176,93957336010269],["v8::internal::WasmInstanceObject::SetRawMemory(unsigned char*, unsigned long)",93957341810480,93957341810580],["v8::internal::WasmStruct::GetFieldValue(unsigned int)",93957341817232,93957341817671],["v8::internal::WasmExceptionPackage::GetExceptionValues(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmExceptionPackage>)",93957341819440,93957341819686],["v8::internal::WasmExportedFunction::MatchesSignature(v8::internal::wasm::WasmModule const*, v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957341820128,93957341820525],["v8::internal::WasmJSFunction::MatchesSignature(v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957341821936,93957341822110],["v8::internal::WasmExceptionTag::New(v8::internal::Isolate*, int)",93957341822272,93957341822310],["std::__1::__shared_ptr_emplace<v8::internal::(anonymous namespace)::IftNativeAllocations, std::__1::allocator<v8::internal::(anonymous namespace)::IftNativeAllocations> >::~__shared_ptr_emplace()",93957341822896,93957341822916],["std::__1::__shared_ptr_emplace<v8::internal::(anonymous namespace)::IftNativeAllocations, std::__1::allocator<v8::internal::(anonymous namespace)::IftNativeAllocations> >::__on_zero_shared()",93957341822976,93957341823034],["v8::internal::Builtins::InitializeBuiltinEntryTable(v8::internal::Isolate*)",93957336003888,93957336004105],["v8::internal::IdentityMap<unsigned int, v8::internal::FreeStoreAllocationPolicy>::~IdentityMap()",93957336006816,93957336006862],["v8::internal::AssemblerOptions::Default(v8::internal::Isolate*)",93957336007264,93957336007387],["v8::internal::AssemblerBase::AssemblerBase(v8::internal::AssemblerOptions const&, std::__1::unique_ptr<v8::internal::AssemblerBuffer, std::__1::default_delete<v8::internal::AssemblerBuffer> >)",93957336007696,93957336007932],["v8::internal::StdoutStream::~StdoutStream()",93957336008272,93957336008373],["v8::internal::HeapObjectRequest::HeapObjectRequest(v8::internal::StringConstantBase const*, int)",93957336008416,93957336008435],["v8::internal::Assembler::DataAlign(int)",93957336008592,93957336008653],["v8::internal::AssemblerBase::AddCodeTarget(v8::internal::Handle<v8::internal::Code>)",93957336008720,93957336009003],["v8::internal::(anonymous namespace)::SetInstanceMemory(v8::internal::Handle<v8::internal::WasmInstanceObject>, v8::internal::Handle<v8::internal::JSArrayBuffer>)",93957341807200,93957341807411],["v8::internal::WasmInstanceObject::InitTableEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)",93957341813952,93957341813962],["v8::internal::WasmInstanceObject::GetGlobalBufferAndIndex(v8::internal::Handle<v8::internal::WasmInstanceObject>, v8::internal::wasm::WasmGlobal const&)",93957341816608,93957341816840],["v8::internal::WasmExceptionObject::New(v8::internal::Isolate*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::Handle<v8::internal::HeapObject>)",93957341818096,93957341818715],["v8::internal::WasmExceptionPackage::GetExceptionTag(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmExceptionPackage>)",93957341819184,93957341819430],["v8::internal::WasmExceptionPackage::GetEncodedSize(v8::internal::wasm::WasmException const*)",93957341819696,93957341819820],["v8::internal::WasmExportedFunction::sig()",93957341819984,93957341820123],["v8::internal::WasmExportedFunction::GetDebugName(v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957341820528,93957341820663],["v8::internal::Builtins::builtin(int)",93957335998720,93957335998741],["v8::internal::Builtins::AllowDynamicFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::JSObject>)",93957336005552,93957336005744],["v8::internal::BuiltinsConstantsTableBuilder::Finalize()",93957336006144,93957336006754],["v8::internal::IdentityMap<unsigned int, v8::internal::FreeStoreAllocationPolicy>::DeletePointerArray(unsigned long*, unsigned long)",93957336006896,93957336006909],["v8::internal::AlignedSlotAllocator::Align(int)",93957336007152,93957336007260],["v8::internal::AssemblerOptions::DefaultForOffHeapTrampoline(v8::internal::Isolate*)",93957336007392,93957336007507],["v8::internal::NewAssemblerBuffer(int)",93957336007616,93957336007685],["v8::internal::AssemblerBase::~AssemblerBase()",93957336007936,93957336008228],["v8::internal::IndirectFunctionTableEntry::clear()",93957341803520,93957341803803],["v8::internal::ImportedFunctionEntry::SetWasmToJs(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::wasm::WasmCode const*)",93957341809904,93957341810126],["v8::internal::WasmInstanceObject::InitDataSegmentArrays(v8::internal::Handle<v8::internal::WasmInstanceObject>, v8::internal::Handle<v8::internal::WasmModuleObject>)",93957341813120,93957341813396],["v8::internal::WasmExportedFunction::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, int, int, v8::internal::Handle<v8::internal::Code>)",93957341814112,93957341815784],["v8::internal::WasmJSFunction::GetCallable() const",93957341816544,93957341816601],["v8::internal::WasmInstanceObject::GetGlobalValue(v8::internal::Handle<v8::internal::WasmInstanceObject>, v8::internal::wasm::WasmGlobal const&)",93957341816848,93957341817227],["v8::internal::WasmArray::GetElement(unsigned int)",93957341817680,93957341818090],["v8::internal::WasmExceptionObject::MatchesSignature(v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957341818720,93957341818861],["v8::internal::Builtins::GetContinuationBytecodeOffset(v8::internal::Builtins::Name)",93957335998480,93957335998489],["v8::internal::Builtins::CallableFor(v8::internal::Isolate*, v8::internal::Builtins::Name)",93957336003632,93957336003721],["v8::internal::Builtins::GenerateOffHeapTrampolineFor(v8::internal::Isolate*, unsigned long, int, bool)",93957336004640,93957336005507],["v8::internal::BuiltinsConstantsTableBuilder::BuiltinsConstantsTableBuilder(v8::internal::Isolate*)",93957336005872,93957336005929],["v8::internal::BuiltinsConstantsTableBuilder::PatchBasicBlockCountersReference(v8::internal::Handle<v8::internal::ByteArray>)",93957336006064,93957336006139],["v8::internal::IdentityMap<unsigned int, v8::internal::FreeStoreAllocationPolicy>::~IdentityMap()",93957336006768,93957336006806],["v8::internal::IdentityMap<unsigned int, v8::internal::FreeStoreAllocationPolicy>::NewPointerArray(unsigned long)",93957336006864,93957336006882],["v8::internal::AlignedSlotAllocator::Allocate(int)",93957336006912,93957336007041],["v8::internal::WasmTableObject::Get(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, unsigned int)",93957341799984,93957341800913],["v8::internal::WasmIndirectFunctionTable::Resize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmIndirectFunctionTable>, unsigned int)",93957341805504,93957341806020],["v8::internal::WasmMemoryObject::Grow(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmMemoryObject>, unsigned int)",93957341807872,93957341809122],["v8::internal::ImportedFunctionEntry::maybe_callable()",93957341810336,93957341810413],["v8::internal::WasmInstanceObject::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>)",93957341810592,93957341813113],["v8::internal::WasmInstanceObject::CopyTableEntries(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)",93957341813408,93957341813951],["v8::internal::WasmInstanceObject::GetWasmExternalFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, int)",93957341813968,93957341814106],["v8::internal::WasmInstanceObject::SetWasmExternalFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, int, v8::internal::Handle<v8::internal::WasmExternalFunction>)",93957341815792,93957341816260],["v8::internal::Builtin_Impl_TypedArrayPrototypeReverse(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335994336,93957335994711],["v8::internal::Builtins::CallFunction(v8::internal::ConvertReceiverMode)",93957335998560,93957335998603],["v8::internal::Builtins::CallInterfaceDescriptorFor(v8::internal::Builtins::Name)",93957335998784,93957336003594],["v8::internal::Builtins::IsBuiltinHandle(v8::internal::Handle<v8::internal::HeapObject>, int*) const",93957336003760,93957336003856],["v8::internal::Builtins::EmitCodeCreateEvents(v8::internal::Isolate*)",93957336004112,93957336004633],["v8::internal::Builtins::IsCpp(int)",93957336005520,93957336005548],["v8::internal::Builtins::CodeObjectIsExecutable(int)",93957336005744,93957336005872],["v8::internal::BuiltinsConstantsTableBuilder::AddObject(v8::internal::Handle<v8::internal::Object>)",93957336005936,93957336005983],["v8::internal::WasmTableObject::ClearDispatchTables(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, int)",93957341796688,93957341797214],["v8::internal::IndirectFunctionTableEntry::Set(int, v8::internal::Handle<v8::internal::WasmInstanceObject>, int)",93957341801936,93957341802086],["v8::internal::WasmTableObject::GetFunctionTableEntry(v8::internal::Isolate*, v8::internal::wasm::WasmModule const*, v8::internal::Handle<v8::internal::WasmTableObject>, int, bool*, bool*, v8::internal::MaybeHandle<v8::internal::WasmInstanceObject>*, int*, v8::internal::MaybeHandle<v8::internal::WasmJSFunction>*)",93957341804080,93957341804726],["v8::internal::WasmMemoryObject::New(v8::internal::Isolate*, int, int, v8::internal::SharedFlag)",93957341806624,93957341806777],["v8::internal::WasmMemoryObject::update_instances(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArrayBuffer>)",93957341807424,93957341807871],["v8::internal::WasmGlobalObject::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, v8::internal::MaybeHandle<v8::internal::JSArrayBuffer>, v8::internal::MaybeHandle<v8::internal::FixedArray>, v8::internal::wasm::ValueType, int, bool)",93957341809136,93957341809898],["v8::internal::ImportedFunctionEntry::SetWasmToWasm(v8::internal::WasmInstanceObject, unsigned long)",93957341810128,93957341810329],["v8::internal::ImportedFunctionEntry::callable()",93957341810416,93957341810465],["v8::internal::Builtin_TypedArrayPrototypeIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957335991040,93957335991072],["v8::internal::Builtin_Impl_FinalizationRegistryUnregister(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335995408,93957335995788],["v8::internal::Builtins::TearDown()",93957335998512,93957335998522],["v8::internal::Builtins::Call(v8::internal::ConvertReceiverMode)",93957335998640,93957335998683],["v8::internal::Builtins::GetStackParameterCount(v8::internal::Builtins::Name)",93957335998752,93957335998777],["v8::internal::Builtins::KindOf(int)",93957336003600,93957336003624],["v8::internal::Builtins::CppEntryOf(int)",93957336003728,93957336003753],["v8::internal::Builtins::IsIsolateIndependentBuiltin(v8::internal::Code)",93957336003856,93957336003873],["v8::internal::WasmTableObject::AddDispatchTable(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, v8::internal::Handle<v8::internal::WasmInstanceObject>, int)",93957341791904,93957341792352],["v8::internal::WasmTableObject::UpdateDispatchTables(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, int, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::Handle<v8::internal::WasmInstanceObject>, int)",93957341797440,93957341798318],["v8::internal::WasmInstanceObject::GetOrCreateWasmExternalFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, int)",93957341801024,93957341801836],["v8::internal::WasmCapiFunction::GetHostCallTarget() const",93957341803184,93957341803237],["v8::internal::WasmTableObject::SetFunctionTablePlaceholder(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, int, v8::internal::Handle<v8::internal::WasmInstanceObject>, int)",93957341803808,93957341804077],["v8::internal::WasmIndirectFunctionTable::New(v8::internal::Isolate*, unsigned int)",93957341804736,93957341805493],["v8::internal::WasmMemoryObject::New(v8::internal::Isolate*, v8::internal::MaybeHandle<v8::internal::JSArrayBuffer>, int)",93957341806032,93957341806614],["v8::internal::WasmMemoryObject::AddInstance(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmMemoryObject>, v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341806784,93957341807185],["v8::internal::Builtin_Impl_Stats_TypedArrayPrototypeCopyWithin(int, unsigned long*, v8::internal::Isolate*)",93957335986544,93957335987016],["v8::internal::Builtin_Impl_Stats_TypedArrayPrototypeLastIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957335992448,93957335992920],["v8::internal::Builtin_FinalizationRegistryUnregister(int, unsigned long*, v8::internal::Isolate*)",93957335994896,93957335994928],["v8::internal::Object::GetSimpleHash(v8::internal::Object)",93957335997216,93957335997784],["v8::internal::SourceTextModule::ExportIndex(int)",93957335998496,93957335998505],["v8::internal::Builtins::name(int)",93957335998528,93957335998552],["v8::internal::Builtins::builtin_handle(int)",93957335998608,93957335998629],["v8::internal::Builtins::set_builtin(int, v8::internal::Code)",93957335998688,93957335998709],["v8::internal::WasmModuleObject::ExtractUtf8StringFromModuleBytes(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>, v8::internal::wasm::WireBytesRef, v8::internal::InternalizeString)",93957341789248,93957341789520],["v8::internal::WasmTableObject::IsInBounds(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, unsigned int)",93957341794720,93957341794739],["v8::internal::WasmExportedFunction::instance()",93957341797312,93957341797369],["v8::internal::WasmTableObject::UpdateDispatchTables(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, int, v8::internal::Handle<v8::internal::WasmJSFunction>)",93957341798416,93957341798785],["v8::internal::WasmCapiFunction::IsWasmCapiFunction(v8::internal::Object)",93957341800928,93957341801018],["v8::internal::WasmTableObject::Fill(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, unsigned int, v8::internal::Handle<v8::internal::Object>, unsigned int)",93957341801840,93957341801928],["v8::internal::WasmInstanceObject::ImportWasmJSFunctionIntoTable(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, int, int, v8::internal::Handle<v8::internal::WasmJSFunction>)",93957341802096,93957341803179],["v8::internal::IndirectFunctionTableEntry::Set(int, unsigned long, v8::internal::Object)",93957341803248,93957341803511],["v8::internal::(anonymous namespace)::JsonTraceValue::JsonTraceValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957335985440,93957335985573],["v8::internal::Builtin_Impl_TypedArrayPrototypeFill(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335988752,93957335989773],["v8::internal::Builtin_Impl_TypedArrayPrototypeIndexOf(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335991552,93957335992410],["v8::internal::Builtin_TypedArrayPrototypeReverse(int, unsigned long*, v8::internal::Isolate*)",93957335993824,93957335993856],["v8::internal::(anonymous namespace)::CapRelativeIndex(v8::internal::Handle<v8::internal::Object>, long, long)",93957335994720,93957335994893],["v8::internal::Builtin_Impl_Stats_FinalizationRegistryUnregister(int, unsigned long*, v8::internal::Isolate*)",93957335994928,93957335995400],["bool v8::internal::JSFinalizationRegistry::RemoveUnregisterToken<v8::internal::JSFinalizationRegistry::Unregister(v8::internal::Handle<v8::internal::JSFinalizationRegistry>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Isolate*)::{lambda(v8::internal::WeakCell)#1}, v8::internal::JSFinalizationRegistry::Unregister(v8::internal::Handle<v8::internal::JSFinalizationRegistry>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Isolate*)::{lambda(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::Object)#1}>(v8::internal::JSReceiver, v8::internal::Isolate*, v8::internal::JSFinalizationRegistry::Unregister(v8::internal::Handle<v8::internal::JSFinalizationRegistry>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Isolate*)::{lambda(v8::internal::WeakCell)#1}, v8::internal::JSFinalizationRegistry::Unregister(v8::internal::Handle<v8::internal::JSFinalizationRegistry>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Isolate*)::{lambda(v8::internal::HeapObject, v8::internal::CompressedObjectSlot, v8::internal::Object)#1})",93957335995792,93957335997215],["v8::internal::WeakCell::RemoveFromFinalizationRegistryCells(v8::internal::Isolate*)",93957335997792,93957335998473],["v8::internal::wasm::GetImports(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>)",93957341783328,93957341784890],["v8::internal::WasmModuleObject::GetFunctionName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>, unsigned int)",93957341790000,93957341790159],["v8::internal::WasmInstanceObject::EnsureIndirectFunctionTableWithMinimumSize(v8::internal::Handle<v8::internal::WasmInstanceObject>, int, unsigned int)",93957341793248,93957341794272],["v8::internal::wasm::TypecheckJSObject(v8::internal::Isolate*, v8::internal::wasm::WasmModule const*, v8::internal::Handle<v8::internal::Object>, v8::internal::wasm::ValueType, char const**)",93957341794864,93957341795945],["v8::internal::WasmExportedFunction::IsWasmExportedFunction(v8::internal::Object)",93957341797216,93957341797305],["v8::internal::WasmExportedFunction::function_index()",93957341797376,93957341797430],["v8::internal::WasmJSFunction::IsWasmJSFunction(v8::internal::Object)",93957341798320,93957341798406],["v8::internal::WasmTableObject::UpdateDispatchTables(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, int, v8::internal::Handle<v8::internal::WasmCapiFunction>)",93957341798800,93957341799971],["v8::internal::Builtin_IsTraceCategoryEnabled(int, unsigned long*, v8::internal::Isolate*)",93957335982016,93957335982048],["v8::internal::Builtin_TypedArrayPrototypeBuffer(int, unsigned long*, v8::internal::Isolate*)",93957335985728,93957335985760],["v8::internal::Builtin_TypedArrayPrototypeFill(int, unsigned long*, v8::internal::Isolate*)",93957335988240,93957335988272],["v8::internal::Builtin_Impl_Stats_TypedArrayPrototypeIncludes(int, unsigned long*, v8::internal::Isolate*)",93957335989808,93957335990280],["v8::internal::Builtin_Impl_Stats_TypedArrayPrototypeIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957335991072,93957335991544],["v8::internal::Builtin_TypedArrayPrototypeLastIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957335992416,93957335992448],["v8::internal::Builtin_Impl_TypedArrayPrototypeLastIndexOf(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335992928,93957335993818],["v8::internal::Builtin_Impl_Stats_TypedArrayPrototypeReverse(int, unsigned long*, v8::internal::Isolate*)",93957335993856,93957335994328],["v8::internal::wasm::ModuleWireBytes::GetNameOrNull(v8::internal::wasm::WasmFunction const*, v8::internal::wasm::WasmModule const*) const",93957341780096,93957341780188],["v8::internal::wasm::EstimateStoredSize(v8::internal::wasm::WasmModule const*)",93957341787616,93957341787830],["v8::internal::WasmModuleObject::GetModuleNameOrNull(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>)",93957341789632,93957341789696],["v8::internal::WasmTableObject::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, v8::internal::wasm::ValueType, unsigned int, bool, unsigned int, v8::internal::Handle<v8::internal::FixedArray>*)",93957341790432,93957341791853],["v8::internal::WasmTableObject::Grow(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, unsigned int, v8::internal::Handle<v8::internal::Object>)",93957341792352,93957341793248],["v8::internal::WasmTableObject::Set(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, unsigned int, v8::internal::Handle<v8::internal::Object>)",93957341794272,93957341794715],["v8::internal::WasmTableObject::IsValidElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, v8::internal::Handle<v8::internal::Object>)",93957341794752,93957341794855],["v8::internal::WasmTableObject::SetFunctionTableEntry(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmTableObject>, v8::internal::Handle<v8::internal::FixedArray>, int, v8::internal::Handle<v8::internal::Object>)",93957341795952,93957341796685],["v8::internal::Builtin_Impl_Stats_SymbolConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335979632,93957335980104],["v8::internal::Builtin_Impl_Stats_Trace(int, unsigned long*, v8::internal::Isolate*)",93957335982880,93957335983352],["v8::internal::(anonymous namespace)::JsonTraceValue::~JsonTraceValue()",93957335985616,93957335985664],["v8::internal::Builtin_Impl_TypedArrayPrototypeBuffer(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335986240,93957335986512],["v8::internal::Builtin_Impl_TypedArrayPrototypeCopyWithin(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335987024,93957335988238],["v8::internal::Builtin_Impl_Stats_TypedArrayPrototypeFill(int, unsigned long*, v8::internal::Isolate*)",93957335988272,93957335988744],["v8::internal::Builtin_TypedArrayPrototypeIncludes(int, unsigned long*, v8::internal::Isolate*)",93957335989776,93957335989808],["v8::internal::Builtin_Impl_TypedArrayPrototypeIncludes(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335990288,93957335991040],["v8::internal::wasm::GetWasmFunctionOffset(v8::internal::wasm::WasmModule const*, unsigned int)",93957341779184,93957341779231],["v8::internal::wasm::GetTypeForFunction(v8::internal::Isolate*, v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957341780528,93957341781600],["v8::internal::wasm::GetCustomSections(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>, v8::internal::Handle<v8::internal::String>, v8::internal::wasm::ErrorThrower*)",93957341786304,93957341787378],["v8::internal::WasmModuleObject::New(v8::internal::Isolate*, std::__1::shared_ptr<v8::internal::wasm::NativeModule>, v8::internal::Handle<v8::internal::Script>)",93957341788352,93957341788412],["v8::internal::WasmModuleObject::ExtractUtf8StringFromModuleBytes(v8::internal::Isolate*, v8::internal::Vector<unsigned char const>, v8::internal::wasm::WireBytesRef, v8::internal::InternalizeString)",93957341789520,93957341789620],["v8::internal::WasmModuleObject::GetFunctionNameOrNull(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>, unsigned int)",93957341789696,93957341789992],["v8::internal::WasmModuleObject::GetRawFunctionName(unsigned int)",93957341790160,93957341790426],["v8::internal::WasmInstanceObject::module()",93957341791856,93957341791904],["v8::internal::Builtin_Impl_StringPrototypeLocaleCompare(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335976080,93957335976564],["v8::internal::Builtin_Impl_SymbolFor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335981072,93957335981279],["v8::internal::Builtin_Impl_IsTraceCategoryEnabled(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335982528,93957335982848],["v8::internal::(anonymous namespace)::MaybeUtf8::MaybeUtf8(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957335984928,93957335985201],["v8::internal::(anonymous namespace)::JsonTraceValue::~JsonTraceValue()",93957335985584,93957335985616],["v8::internal::(anonymous namespace)::JsonTraceValue::AppendAsTraceFormat(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) const",93957335985664,93957335985715],["v8::internal::Builtin_Impl_Stats_TypedArrayPrototypeBuffer(int, unsigned long*, v8::internal::Isolate*)",93957335985760,93957335986232],["v8::internal::Builtin_TypedArrayPrototypeCopyWithin(int, unsigned long*, v8::internal::Isolate*)",93957335986512,93957335986544],["v8::internal::wasm::WasmModuleSourceMap::GetSourceLine(unsigned long) const",93957341777616,93957341777731],["v8::internal::wasm::AsmJsOffsetInformation::~AsmJsOffsetInformation()",93957341779584,93957341779738],["v8::internal::wasm::WasmModule::WasmModule(std::__1::unique_ptr<v8::internal::Zone, std::__1::default_delete<v8::internal::Zone> >)",93957341780320,93957341780455],["v8::internal::wasm::GetTypeForMemory(v8::internal::Isolate*, unsigned int, v8::base::Optional<unsigned int>)",93957341782016,93957341782572],["v8::internal::wasm::GetExports(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>)",93957341784896,93957341786304],["v8::internal::wasm::GetSourcePosition(v8::internal::wasm::WasmModule const*, unsigned int, unsigned int, bool)",93957341787392,93957341787603],["v8::internal::wasm::PrintSignature(v8::internal::Vector<char>, v8::internal::Signature<v8::internal::wasm::ValueType> const*, char)",93957341787840,93957341788337],["v8::internal::WasmModuleObject::New(v8::internal::Isolate*, std::__1::shared_ptr<v8::internal::wasm::NativeModule>, v8::internal::Handle<v8::internal::Script>, v8::internal::Handle<v8::internal::FixedArray>)",93957341788416,93957341789241],["v8::internal::Builtin_Impl_Stats_AtomicsWaitAsync(int, unsigned long*, v8::internal::Isolate*)",93957335972560,93957335973242],["v8::internal::(anonymous namespace)::NextCodePoint(v8::internal::Isolate*, v8::internal::BuiltinArguments, int)",93957335978640,93957335979263],["v8::internal::Builtin_SymbolFor(int, unsigned long*, v8::internal::Isolate*)",93957335980560,93957335980592],["v8::internal::Builtin_Impl_Stats_SymbolKeyFor(int, unsigned long*, v8::internal::Isolate*)",93957335981312,93957335981784],["v8::internal::Builtin_Impl_Stats_IsTraceCategoryEnabled(int, unsigned long*, v8::internal::Isolate*)",93957335982048,93957335982520],["v8::internal::Builtin_Trace(int, unsigned long*, v8::internal::Isolate*)",93957335982848,93957335982880],["v8::internal::Builtin_Impl_Trace(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335983360,93957335984923],["v8::internal::DoubleToInt32(double)",93957335985216,93957335985427],["v8::internal::wasm::WasmModuleBuilder::WriteAsmJsOffsetTable(v8::internal::wasm::ZoneBuffer*) const",93957341772272,93957341772624],["void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__emplace_back_slow_path<char*>(char*&&)",93957341778064,93957341778593],["v8::internal::wasm::GetContainingWasmFunction(v8::internal::wasm::WasmModule const*, unsigned int)",93957341779344,93957341779478],["v8::internal::wasm::AsmJsOffsetInformation::GetFunctionOffsets(int)",93957341780016,93957341780057],["v8::internal::wasm::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::wasm::WasmFunctionName const&)",93957341780192,93957341780316],["v8::internal::wasm::IsWasmCodegenAllowed(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Context>)",93957341780464,93957341780514],["v8::internal::wasm::GetTypeForGlobal(v8::internal::Isolate*, bool, v8::internal::wasm::ValueType)",93957341781600,93957341782004],["v8::internal::wasm::GetTypeForTable(v8::internal::Isolate*, v8::internal::wasm::ValueType, unsigned int, v8::base::Optional<unsigned int>)",93957341782576,93957341783323],["v8::internal::ValidateIntegerTypedArray(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, char const*, bool)",93957335968720,93957335969082],["v8::internal::Builtin_StringPrototypeLastIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957335974736,93957335974943],["v8::internal::Builtin_Impl_Stats_StringRaw(int, unsigned long*, v8::internal::Isolate*)",93957335976608,93957335977080],["v8::internal::Object::ToString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957335979536,93957335979585],["v8::internal::Builtin_Impl_SymbolConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335980112,93957335980554],["v8::internal::Builtin_Impl_Stats_SymbolFor(int, unsigned long*, v8::internal::Isolate*)",93957335980592,93957335981064],["v8::internal::Builtin_SymbolKeyFor(int, unsigned long*, v8::internal::Isolate*)",93957335981280,93957335981312],["v8::internal::Builtin_Impl_SymbolKeyFor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335981792,93957335982012],["v8::internal::wasm::WasmModuleBuilder::AddExport(v8::internal::Vector<char const>, v8::internal::wasm::ImportExportKindCode, unsigned int)",93957341746080,93957341746480],["void std::__1::vector<v8::internal::wasm::WasmModuleBuilder::WasmTable, v8::internal::ZoneAllocator<v8::internal::wasm::WasmModuleBuilder::WasmTable> >::__push_back_slow_path<v8::internal::wasm::WasmModuleBuilder::WasmTable>(v8::internal::wasm::WasmModuleBuilder::WasmTable&&)",93957341775312,93957341775725],["v8::internal::wasm::WasmModuleSourceMap::HasSource(unsigned long, unsigned long) const",93957341777936,93957341777965],["v8::internal::wasm::MaxNumExportWrappers(v8::internal::wasm::WasmModule const*)",93957341779088,93957341779102],["v8::internal::wasm::GetNearestWasmFunction(v8::internal::wasm::WasmModule const*, unsigned int)",93957341779232,93957341779329],["v8::internal::wasm::AsmJsOffsetInformation::AsmJsOffsetInformation(v8::internal::Vector<unsigned char const>)",93957341779488,93957341779573],["v8::internal::wasm::AsmJsOffsetInformation::EnsureDecodedOffsets()",93957341779744,93957341780015],["v8::internal::wasm::ModuleWireBytes::GetNameOrNull(v8::internal::wasm::WireBytesRef) const",93957341780064,93957341780096],["v8::internal::Builtin_Impl_Stats_RegExpLeftContextGetter(int, unsigned long*, v8::internal::Isolate*)",93957335966304,93957335966738],["v8::internal::DoWait(v8::internal::Isolate*, v8::internal::FutexEmulation::WaitMode, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>)",93957335970320,93957335971414],["v8::internal::Builtin_Impl_Stats_StringFromCodePoint(int, unsigned long*, v8::internal::Isolate*)",93957335973280,93957335973752],["v8::internal::Builtin_StringPrototypeLocaleCompare(int, unsigned long*, v8::internal::Isolate*)",93957335975568,93957335975600],["v8::internal::Builtin_StringRaw(int, unsigned long*, v8::internal::Isolate*)",93957335976576,93957335976608],["v8::internal::Builtin_Impl_StringRaw(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335977088,93957335978635],["std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >::push_back(unsigned short&&)",93957335979264,93957335979536],["v8::internal::Builtin_SymbolConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335979600,93957335979632],["v8::internal::wasm::WasmFunctionBuilder::WriteAsmWasmOffsetTable(v8::internal::wasm::ZoneBuffer*) const",93957341742192,93957341743278],["v8::internal::wasm::ZoneBuffer::write_u32(unsigned int)",93957341768080,93957341768236],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::__emplace_unique_key_args<v8::internal::Signature<v8::internal::wasm::ValueType>, v8::internal::Signature<v8::internal::wasm::ValueType>&, unsigned int&>(v8::internal::Signature<v8::internal::wasm::ValueType> const&, v8::internal::Signature<v8::internal::wasm::ValueType>&, unsigned int&)",93957341772784,93957341774056],["v8::internal::wasm::WasmModuleSourceMap::WasmModuleSourceMap(v8::Isolate*, v8::Local<v8::String>)",93957341776144,93957341777156],["v8::internal::wasm::WasmModuleSourceMap::GetFilename(unsigned long) const",93957341777744,93957341777933],["v8::internal::wasm::WasmModuleSourceMap::HasValidEntry(unsigned long, unsigned long) const",93957341777968,93957341778061],["v8::internal::wasm::LazilyGeneratedNames::LookupFunctionName(v8::internal::wasm::ModuleWireBytes const&, unsigned int, v8::internal::Vector<v8::internal::wasm::WasmExport const>) const",93957341778608,93957341779085],["v8::internal::wasm::GetExportWrapperIndex(v8::internal::wasm::WasmModule const*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, bool)",93957341779104,93957341779176],["v8::internal::Builtin_Impl_RegExpInputSetter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335964400,93957335964858],["v8::internal::Builtin_Impl_RegExpRightContextGetter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335967568,93957335967887],["v8::internal::Builtin_Impl_Stats_AtomicsNotify(int, unsigned long*, v8::internal::Isolate*)",93957335969120,93957335969592],["v8::internal::Builtin_Impl_Stats_AtomicsWait(int, unsigned long*, v8::internal::Isolate*)",93957335971648,93957335972327],["v8::internal::Builtin_StringFromCodePoint(int, unsigned long*, v8::internal::Isolate*)",93957335973248,93957335973280],["v8::internal::Builtin_Impl_StringFromCodePoint(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335973760,93957335974722],["v8::internal::Builtin_Impl_Stats_StringPrototypeLastIndexOf(int, unsigned long*, v8::internal::Isolate*)",93957335974944,93957335975564],["v8::internal::Builtin_Impl_Stats_StringPrototypeLocaleCompare(int, unsigned long*, v8::internal::Isolate*)",93957335975600,93957335976072],["v8::internal::wasm::WasmFunctionBuilder::EmitF64Const(double)",93957341740176,93957341740363],["v8::internal::wasm::WasmModuleBuilder::SetIndirectFunction(unsigned int, unsigned int)",93957341744784,93957341744802],["v8::internal::wasm::WasmModuleBuilder::SetMinMemorySize(unsigned int)",93957341746736,93957341746748],["v8::internal::wasm::ZoneBuffer::write_string(v8::internal::Vector<char const>)",93957341769056,93957341769340],["v8::internal::wasm::ZoneBuffer::write_u64(unsigned long)",93957341772624,93957341772780],["std::__1::vector<int, v8::internal::ZoneAllocator<int> >::__append(unsigned long, int const&)",93957341774064,93957341775312],["void std::__1::vector<v8::internal::wasm::WasmModuleBuilder::WasmGlobal, v8::internal::ZoneAllocator<v8::internal::wasm::WasmModuleBuilder::WasmGlobal> >::__push_back_slow_path<v8::internal::wasm::WasmModuleBuilder::WasmGlobal>(v8::internal::wasm::WasmModuleBuilder::WasmGlobal&&)",93957341775728,93957341776141],["v8::internal::wasm::WasmModuleSourceMap::DecodeMapping(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957341777168,93957341777607],["v8::internal::Builtin_RegExpCapture9Getter(int, unsigned long*, v8::internal::Isolate*)",93957335962416,93957335962448],["v8::internal::Builtin_RegExpLastParenGetter(int, unsigned long*, v8::internal::Isolate*)",93957335965552,93957335965584],["v8::internal::Builtin_RegExpRightContextGetter(int, unsigned long*, v8::internal::Isolate*)",93957335967088,93957335967120],["v8::internal::Builtin_Impl_Stats_AtomicsIsLockFree(int, unsigned long*, v8::internal::Isolate*)",93957335967920,93957335968392],["v8::internal::Builtin_AtomicsNotify(int, unsigned long*, v8::internal::Isolate*)",93957335969088,93957335969120],["v8::internal::Builtin_Impl_AtomicsNotify(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335969600,93957335970311],["v8::internal::Builtin_AtomicsWait(int, unsigned long*, v8::internal::Isolate*)",93957335971424,93957335971641],["v8::internal::Builtin_AtomicsWaitAsync(int, unsigned long*, v8::internal::Isolate*)",93957335972336,93957335972556],["v8::internal::wasm::WasmFunctionBuilder::EmitTeeLocal(unsigned int)",93957341738544,93957341738561],["v8::internal::wasm::WasmFunctionBuilder::SetAsmFunctionStartPosition(unsigned long)",93957341741280,93957341741298],["v8::internal::wasm::WasmModuleBuilder::AddFunction(v8::internal::Signature<v8::internal::wasm::ValueType>*)",93957341743616,93957341744427],["v8::internal::wasm::WasmModuleBuilder::AddGlobalImport(v8::internal::Vector<char const>, v8::internal::wasm::ValueType, bool, v8::internal::Vector<char const>)",93957341745248,93957341746060],["v8::internal::wasm::WasmModuleBuilder::AddGlobal(v8::internal::wasm::ValueType, bool, v8::internal::wasm::WasmInitExpr)",93957341746480,93957341746722],["v8::internal::wasm::WasmModuleBuilder::WriteTo(v8::internal::wasm::ZoneBuffer*) const",93957341746752,93957341768078],["v8::internal::wasm::(anonymous namespace)::WriteValueType(v8::internal::wasm::ZoneBuffer*, v8::internal::wasm::ValueType const&)",93957341768240,93957341769055],["v8::internal::wasm::(anonymous namespace)::WriteInitializerExpression(v8::internal::wasm::ZoneBuffer*, v8::internal::wasm::WasmInitExpr const&, v8::internal::wasm::ValueType)",93957341769344,93957341772259],["v8::internal::Builtin_Impl_Stats_RegExpCapture6Getter(int, unsigned long*, v8::internal::Isolate*)",93957335960384,93957335960818],["v8::internal::Builtin_Impl_Stats_RegExpInputGetter(int, unsigned long*, v8::internal::Isolate*)",93957335963136,93957335963570],["v8::internal::Builtin_Impl_Stats_RegExpLastMatchGetter(int, unsigned long*, v8::internal::Isolate*)",93957335964896,93957335965330],["v8::internal::Builtin_Impl_RegExpLastParenGetter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335966032,93957335966270],["v8::internal::Builtin_Impl_RegExpLeftContextGetter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335966752,93957335967087],["v8::internal::Builtin_Impl_Stats_RegExpRightContextGetter(int, unsigned long*, v8::internal::Isolate*)",93957335967120,93957335967554],["v8::internal::Builtin_AtomicsIsLockFree(int, unsigned long*, v8::internal::Isolate*)",93957335967888,93957335967920],["v8::internal::Builtin_Impl_AtomicsIsLockFree(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335968400,93957335968709],["v8::internal::wasm::ZoneBuffer::write_i32v(int)",93957341737088,93957341737402],["v8::internal::wasm::WasmFunctionBuilder::EmitWithI32V(v8::internal::wasm::WasmOpcode, int)",93957341739248,93957341739432],["v8::internal::wasm::WasmFunctionBuilder::SetName(v8::internal::Vector<char const>)",93957341740864,93957341740878],["v8::internal::wasm::WasmFunctionBuilder::WriteSignature(v8::internal::wasm::ZoneBuffer*) const",93957341741328,93957341741575],["v8::internal::wasm::WasmModuleBuilder::WasmModuleBuilder(v8::internal::Zone*)",93957341743280,93957341743612],["v8::internal::wasm::WasmModuleBuilder::AllocateIndirectFunctions(unsigned int)",93957341744432,93957341744770],["v8::internal::wasm::WasmModuleBuilder::AddImport(v8::internal::Vector<char const>, v8::internal::Signature<v8::internal::wasm::ValueType>*, v8::internal::Vector<char const>)",93957341744816,93957341745242],["v8::internal::wasm::WasmModuleBuilder::MarkStartFunction(v8::internal::wasm::WasmFunctionBuilder*)",93957341746064,93957341746079],["v8::internal::Builtin_Impl_RegExpCapture3Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335958768,93957335958972],["v8::internal::Builtin_Impl_RegExpCapture7Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335961520,93957335961724],["v8::internal::Builtin_Impl_RegExpCapture9Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335962896,93957335963100],["v8::internal::Builtin_RegExpInputSetter(int, unsigned long*, v8::internal::Isolate*)",93957335963888,93957335963920],["v8::internal::Builtin_RegExpLastMatchGetter(int, unsigned long*, v8::internal::Isolate*)",93957335964864,93957335964896],["v8::internal::Builtin_Impl_RegExpLastMatchGetter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335965344,93957335965545],["v8::internal::Builtin_Impl_Stats_RegExpLastParenGetter(int, unsigned long*, v8::internal::Isolate*)",93957335965584,93957335966018],["v8::internal::Builtin_RegExpLeftContextGetter(int, unsigned long*, v8::internal::Isolate*)",93957335966272,93957335966304],["v8::internal::WasmGlobalObject::SetFuncRef(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957341735424,93957341735639],["v8::internal::wasm::WasmFunctionBuilder::AddLocal(v8::internal::wasm::ValueType)",93957341738048,93957341738069],["v8::internal::wasm::WasmFunctionBuilder::Emit(v8::internal::wasm::WasmOpcode)",93957341738768,93957341738924],["v8::internal::wasm::ZoneBuffer::write_i64v(long)",93957341739632,93957341739981],["v8::internal::wasm::WasmFunctionBuilder::EmitDirectCallIndex(unsigned int)",93957341740368,93957341740861],["v8::internal::wasm::WasmFunctionBuilder::AddAsmWasmOffset(unsigned long, unsigned long)",93957341740880,93957341741278],["v8::internal::wasm::WasmFunctionBuilder::DeleteCodeAfter(unsigned long)",93957341741312,93957341741326],["v8::internal::wasm::WasmFunctionBuilder::WriteBody(v8::internal::wasm::ZoneBuffer*) const",93957341741584,93957341742184],["v8::internal::Builtin_RegExpCapture1Getter(int, unsigned long*, v8::internal::Isolate*)",93957335956912,93957335956944],["v8::internal::Builtin_RegExpCapture5Getter(int, unsigned long*, v8::internal::Isolate*)",93957335959664,93957335959696],["v8::internal::Builtin_RegExpCapture7Getter(int, unsigned long*, v8::internal::Isolate*)",93957335961040,93957335961072],["v8::internal::Builtin_Impl_Stats_RegExpCapture8Getter(int, unsigned long*, v8::internal::Isolate*)",93957335961760,93957335962194],["v8::internal::Builtin_Impl_Stats_RegExpCapture9Getter(int, unsigned long*, v8::internal::Isolate*)",93957335962448,93957335962882],["v8::internal::Builtin_RegExpInputGetter(int, unsigned long*, v8::internal::Isolate*)",93957335963104,93957335963136],["v8::internal::Builtin_Impl_RegExpInputGetter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335963584,93957335963888],["v8::internal::Builtin_Impl_Stats_RegExpInputSetter(int, unsigned long*, v8::internal::Isolate*)",93957335963920,93957335964392],["v8::(anonymous namespace)::(anonymous namespace)::ToString(v8::internal::Handle<v8::internal::String>)",93957341734048,93957341734263],["v8::internal::wasm::ValueType* v8::internal::Zone::NewArray<v8::internal::wasm::ValueType, v8::internal::wasm::ValueType []>(unsigned long)",93957341736464,93957341736512],["v8::internal::wasm::WasmFunctionBuilder::SetSignature(v8::internal::Signature<v8::internal::wasm::ValueType>*)",93957341737664,93957341737695],["v8::internal::wasm::WasmFunctionBuilder::EmitWithU32V(v8::internal::wasm::WasmOpcode, unsigned int)",93957341738112,93957341738506],["v8::internal::wasm::ZoneBuffer::write(unsigned char const*, unsigned long)",93957341738576,93957341738756],["v8::internal::wasm::WasmFunctionBuilder::EmitWithU8(v8::internal::wasm::WasmOpcode, unsigned char)",93957341738928,93957341739233],["v8::internal::wasm::WasmFunctionBuilder::EmitI32Const(int)",93957341739440,93957341739619],["v8::internal::wasm::WasmFunctionBuilder::EmitF32Const(float)",93957341739984,93957341740170],["v8::internal::Builtin_Impl_Stats_ReflectOwnKeys(int, unsigned long*, v8::internal::Isolate*)",93957335952896,93957335953368],["v8::internal::Builtin_Impl_Stats_RegExpCapture2Getter(int, unsigned long*, v8::internal::Isolate*)",93957335957632,93957335958066],["v8::internal::Builtin_Impl_Stats_RegExpCapture4Getter(int, unsigned long*, v8::internal::Isolate*)",93957335959008,93957335959442],["v8::internal::Builtin_Impl_RegExpCapture5Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335960144,93957335960348],["v8::internal::Builtin_Impl_RegExpCapture6Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335960832,93957335961036],["v8::internal::Builtin_Impl_Stats_RegExpCapture7Getter(int, unsigned long*, v8::internal::Isolate*)",93957335961072,93957335961506],["v8::internal::Builtin_RegExpCapture8Getter(int, unsigned long*, v8::internal::Isolate*)",93957335961728,93957335961760],["v8::internal::Builtin_Impl_RegExpCapture8Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335962208,93957335962412],["std::__1::__shared_ptr_emplace<v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver, std::__1::allocator<v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver> >::~__shared_ptr_emplace()",93957341732640,93957341732678],["v8::internal::WasmGlobalObject::SetI64(long)",93957341735104,93957341735145],["v8::(anonymous namespace)::(anonymous namespace)::GetIterableLength(v8::internal::Isolate*, v8::Local<v8::Context>, v8::Local<v8::Object>)",93957341736288,93957341736362],["v8::internal::wasm::ZoneBuffer::write_u8(unsigned char)",93957341736912,93957341737067],["v8::internal::wasm::WasmFunctionBuilder::EmitU32V(unsigned int)",93957341737408,93957341737655],["v8::internal::wasm::WasmModuleBuilder::AddSignature(v8::internal::Signature<v8::internal::wasm::ValueType>*)",93957341737696,93957341738040],["v8::internal::wasm::WasmFunctionBuilder::EmitGetLocal(unsigned int)",93957341738080,93957341738097],["v8::internal::wasm::WasmFunctionBuilder::EmitSetLocal(unsigned int)",93957341738512,93957341738529],["v8::internal::PrototypeIterator::AdvanceFollowingProxiesIgnoringAccessChecks()",93957335950640,93957335950972],["v8::internal::Builtin_Impl_ReflectSet(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335954224,93957335954994],["v8::internal::Builtin_Impl_RegExpCapture1Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335957392,93957335957596],["v8::internal::Builtin_RegExpCapture3Getter(int, unsigned long*, v8::internal::Isolate*)",93957335958288,93957335958320],["v8::internal::Builtin_RegExpCapture4Getter(int, unsigned long*, v8::internal::Isolate*)",93957335958976,93957335959008],["v8::internal::Builtin_Impl_RegExpCapture4Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335959456,93957335959660],["v8::internal::Builtin_Impl_Stats_RegExpCapture5Getter(int, unsigned long*, v8::internal::Isolate*)",93957335959696,93957335960130],["v8::internal::Builtin_RegExpCapture6Getter(int, unsigned long*, v8::internal::Isolate*)",93957335960352,93957335960384],["v8::(anonymous namespace)::(anonymous namespace)::AsyncInstantiateCompileResultResolver::~AsyncInstantiateCompileResultResolver()",93957341731776,93957341731827],["std::__1::__shared_ptr_emplace<v8::WasmStreaming, std::__1::allocator<v8::WasmStreaming> >::__on_zero_shared()",93957341732784,93957341732913],["v8::(anonymous namespace)::GetValueType(v8::Isolate*, v8::MaybeLocal<v8::Value>, v8::Local<v8::Context>, v8::internal::wasm::ValueType*, v8::internal::wasm::WasmFeatures)",93957341734544,93957341735047],["v8::internal::WasmGlobalObject::SetF64(double)",93957341735200,93957341735242],["v8::(anonymous namespace)::WebAssemblyGlobalGetValueCommon(v8::FunctionCallbackInfo<v8::Value> const&, char const*)",93957341735648,93957341736275],["v8::internal::Signature<v8::internal::wasm::ValueType>::operator==(v8::internal::Signature<v8::internal::wasm::ValueType> const&) const",93957341736368,93957341736458],["v8::internal::wasm::WasmFunctionBuilder::WasmFunctionBuilder(v8::internal::wasm::WasmModuleBuilder*)",93957341736512,93957341736906],["v8::internal::wasm::WasmFunctionBuilder::EmitI32V(int)",93957341737072,93957341737086],["v8::internal::Builtin_Impl_Stats_ObjectGetOwnPropertyDescriptors(int, unsigned long*, v8::internal::Isolate*)",93957335946928,93957335947400],["v8::internal::Builtin_ReflectGetOwnPropertyDescriptor(int, unsigned long*, v8::internal::Isolate*)",93957335951936,93957335951968],["v8::internal::Builtin_ReflectSet(int, unsigned long*, v8::internal::Isolate*)",93957335953712,93957335953744],["v8::internal::Builtin_Impl_Stats_RegExpPrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335955040,93957335955512],["v8::internal::Builtin_Impl_Stats_RegExpCapture1Getter(int, unsigned long*, v8::internal::Isolate*)",93957335956944,93957335957378],["v8::internal::Builtin_RegExpCapture2Getter(int, unsigned long*, v8::internal::Isolate*)",93957335957600,93957335957632],["v8::internal::Builtin_Impl_RegExpCapture2Getter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335958080,93957335958284],["v8::internal::Builtin_Impl_Stats_RegExpCapture3Getter(int, unsigned long*, v8::internal::Isolate*)",93957335958320,93957335958754],["v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver::~AsyncCompilationResolver()",93957341731104,93957341731146],["v8::(anonymous namespace)::(anonymous namespace)::InstantiateBytesResultResolver::~InstantiateBytesResultResolver()",93957341732368,93957341732411],["std::__1::__shared_ptr_emplace<v8::WasmStreaming, std::__1::allocator<v8::WasmStreaming> >::~__shared_ptr_emplace()",93957341732704,93957341732724],["v8::(anonymous namespace)::GetInitialOrMinimumProperty(v8::Isolate*, v8::internal::wasm::ErrorThrower*, v8::Local<v8::Context>, v8::Local<v8::Object>, long*, long, unsigned long)",93957341733184,93957341733497],["bool v8::(anonymous namespace)::(anonymous namespace)::EnforceUint32<char const*>(char const*, v8::Local<v8::Value>, v8::Local<v8::Context>, v8::internal::wasm::ErrorThrower*, unsigned int*)",93957341734272,93957341734541],["v8::internal::WasmGlobalObject::SetI32(int)",93957341735056,93957341735096],["v8::internal::WasmGlobalObject::SetF32(float)",93957341735152,93957341735194],["v8::internal::WasmGlobalObject::SetExternRef(v8::internal::Handle<v8::internal::Object>)",93957341735248,93957341735410],["v8::internal::Builtin_ObjectGetOwnPropertySymbols(int, unsigned long*, v8::internal::Isolate*)",93957335944272,93957335944304],["v8::internal::JSReceiver::GetOwnPropertyAttributes(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>)",93957335948992,93957335949265],["v8::internal::Builtin_Impl_Stats_ReflectDefineProperty(int, unsigned long*, v8::internal::Isolate*)",93957335951008,93957335951480],["v8::internal::Builtin_Impl_ReflectGetOwnPropertyDescriptor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335952448,93957335952857],["v8::internal::Builtin_Impl_ReflectOwnKeys(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335953376,93957335953700],["v8::internal::Builtin_Impl_Stats_ReflectSet(int, unsigned long*, v8::internal::Isolate*)",93957335953744,93957335954216],["v8::internal::Builtin_RegExpPrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335955008,93957335955040],["v8::internal::Builtin_Impl_RegExpPrototypeToString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335955520,93957335956899],["v8::(anonymous namespace)::WebAssemblyGlobalType(v8::FunctionCallbackInfo<v8::Value> const&)",93957341728208,93957341728504],["v8::(anonymous namespace)::(anonymous namespace)::InstantiateModuleResultResolver::~InstantiateModuleResultResolver()",93957341731376,93957341731400],["v8::(anonymous namespace)::(anonymous namespace)::InstantiateBytesResultResolver::OnInstantiationSucceeded(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341731904,93957341732283],["v8::(anonymous namespace)::WasmStreamingPromiseFailedCallback(v8::FunctionCallbackInfo<v8::Value> const&)",93957341732480,93957341732603],["std::__1::__shared_ptr_emplace<v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver, std::__1::allocator<v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver> >::__on_zero_shared()",93957341732688,93957341732704],["std::__1::__shared_ptr_emplace<v8::WasmStreaming, std::__1::allocator<v8::WasmStreaming> >::~__shared_ptr_emplace()",93957341732736,93957341732774],["v8::WasmStreaming::WasmStreamingImpl::WasmStreamingImpl(v8::Isolate*, char const*, std::__1::shared_ptr<v8::internal::wasm::CompilationResultResolver>)",93957341732928,93957341733183],["v8::(anonymous namespace)::GetOptionalIntegerProperty(v8::Isolate*, v8::internal::wasm::ErrorThrower*, v8::Local<v8::Context>, v8::Local<v8::Object>, v8::Local<v8::String>, bool*, long*, long, unsigned long)",93957341733504,93957341734041],["v8::internal::Builtin_ObjectFreeze(int, unsigned long*, v8::internal::Isolate*)",93957335941664,93957335941902],["v8::internal::Builtin_Impl_Stats_ObjectIsFrozen(int, unsigned long*, v8::internal::Isolate*)",93957335945296,93957335945957],["v8::internal::Builtin_ObjectSeal(int, unsigned long*, v8::internal::Isolate*)",93957335948128,93957335948366],["v8::internal::LookupIterator::Key::Key(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957335949952,93957335950351],["v8::internal::Builtin_ReflectDefineProperty(int, unsigned long*, v8::internal::Isolate*)",93957335950976,93957335951008],["v8::internal::Builtin_Impl_ReflectDefineProperty(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335951488,93957335951928],["v8::internal::Builtin_Impl_Stats_ReflectGetOwnPropertyDescriptor(int, unsigned long*, v8::internal::Isolate*)",93957335951968,93957335952440],["v8::internal::Builtin_ReflectOwnKeys(int, unsigned long*, v8::internal::Isolate*)",93957335952864,93957335952896],["v8::(anonymous namespace)::WebAssemblyMemory(v8::FunctionCallbackInfo<v8::Value> const&)",93957341723536,93957341724347],["v8::(anonymous namespace)::GetFirstArgumentAsBytes(v8::FunctionCallbackInfo<v8::Value> const&, v8::internal::wasm::ErrorThrower*, bool*)",93957341730384,93957341730858],["v8::(anonymous namespace)::(anonymous namespace)::InstantiateModuleResultResolver::OnInstantiationSucceeded(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341731184,93957341731266],["v8::(anonymous namespace)::(anonymous namespace)::AsyncInstantiateCompileResultResolver::OnCompilationSucceeded(v8::internal::Handle<v8::internal::WasmModuleObject>)",93957341731456,93957341731669],["v8::(anonymous namespace)::(anonymous namespace)::AsyncInstantiateCompileResultResolver::~AsyncInstantiateCompileResultResolver()",93957341731840,93957341731896],["v8::(anonymous namespace)::(anonymous namespace)::InstantiateBytesResultResolver::OnInstantiationFailed(v8::internal::Handle<v8::internal::Object>)",93957341732288,93957341732368],["v8::(anonymous namespace)::(anonymous namespace)::InstantiateBytesResultResolver::~InstantiateBytesResultResolver()",93957341732416,93957341732467],["std::__1::__shared_ptr_emplace<v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver, std::__1::allocator<v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver> >::~__shared_ptr_emplace()",93957341732608,93957341732628],["v8::internal::Builtin_Impl_ObjectDefineGetter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335938816,93957335939249],["v8::internal::Builtin_Impl_ObjectPrototypeGetProto(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335943040,93957335943345],["v8::internal::Builtin_Impl_ObjectGetOwnPropertySymbols(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335944784,93957335945035],["v8::internal::Builtin_Impl_Stats_ObjectIsSealed(int, unsigned long*, v8::internal::Isolate*)",93957335946224,93957335946885],["v8::internal::Builtin_Impl_ObjectGetOwnPropertyDescriptors(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335947408,93957335948114],["v8::internal::Builtin_Impl_Stats_ObjectSeal(int, unsigned long*, v8::internal::Isolate*)",93957335948368,93957335948990],["v8::internal::(anonymous namespace)::ObjectLookupAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::AccessorComponent)",93957335949280,93957335949948],["v8::internal::PrototypeIterator::HasAccess() const",93957335950352,93957335950639],["v8::(anonymous namespace)::WebAssemblyInstance(v8::FunctionCallbackInfo<v8::Value> const&)",93957341720048,93957341720684],["v8::(anonymous namespace)::WebAssemblyGlobal(v8::FunctionCallbackInfo<v8::Value> const&)",93957341725728,93957341727143],["v8::(anonymous namespace)::WebAssemblyFunction(v8::FunctionCallbackInfo<v8::Value> const&)",93957341728640,93957341730032],["v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver::OnCompilationFailed(v8::internal::Handle<v8::internal::Object>)",93957341730960,93957341731057],["std::__1::__shared_ptr_pointer<v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver*, std::__1::shared_ptr<v8::internal::wasm::CompilationResultResolver>::__shared_ptr_default_delete<v8::internal::wasm::CompilationResultResolver, v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver>, std::__1::allocator<v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver> >::__on_zero_shared()",93957341731152,93957341731174],["v8::(anonymous namespace)::(anonymous namespace)::InstantiateModuleResultResolver::OnInstantiationFailed(v8::internal::Handle<v8::internal::Object>)",93957341731280,93957341731367],["v8::(anonymous namespace)::(anonymous namespace)::InstantiateModuleResultResolver::~InstantiateModuleResultResolver()",93957341731408,93957341731450],["v8::(anonymous namespace)::(anonymous namespace)::AsyncInstantiateCompileResultResolver::OnCompilationFailed(v8::internal::Handle<v8::internal::Object>)",93957341731680,93957341731770],["v8::internal::Builtin_Impl_Stats_ObjectPrototypePropertyIsEnumerable(int, unsigned long*, v8::internal::Isolate*)",93957335936016,93957335936488],["v8::internal::Builtin_ObjectLookupGetter(int, unsigned long*, v8::internal::Isolate*)",93957335940224,93957335940380],["v8::internal::Builtin_ObjectPrototypeGetProto(int, unsigned long*, v8::internal::Isolate*)",93957335942528,93957335942560],["v8::internal::Builtin_Impl_Stats_ObjectPrototypeSetProto(int, unsigned long*, v8::internal::Isolate*)",93957335943392,93957335943864],["v8::internal::Builtin_Impl_Stats_ObjectGetOwnPropertySymbols(int, unsigned long*, v8::internal::Isolate*)",93957335944304,93957335944776],["v8::internal::Builtin_ObjectIsFrozen(int, unsigned long*, v8::internal::Isolate*)",93957335945040,93957335945294],["v8::internal::Builtin_ObjectIsSealed(int, unsigned long*, v8::internal::Isolate*)",93957335945968,93957335946222],["v8::internal::Builtin_ObjectGetOwnPropertyDescriptors(int, unsigned long*, v8::internal::Isolate*)",93957335946896,93957335946928],["v8::(anonymous namespace)::WebAssemblyInstantiate(v8::FunctionCallbackInfo<v8::Value> const&)",93957341714912,93957341715997],["v8::(anonymous namespace)::WebAssemblyTableGrow(v8::FunctionCallbackInfo<v8::Value> const&)",93957341721952,93957341722415],["v8::(anonymous namespace)::WebAssemblyMemoryGetBuffer(v8::FunctionCallbackInfo<v8::Value> const&)",93957341724848,93957341725292],["v8::(anonymous namespace)::WebAssemblyGlobalGetValue(v8::FunctionCallbackInfo<v8::Value> const&)",93957341727184,93957341727201],["v8::(anonymous namespace)::WebAssemblyException(v8::FunctionCallbackInfo<v8::Value> const&)",93957341728512,93957341728628],["v8::(anonymous namespace)::WebAssemblyFunctionType(v8::FunctionCallbackInfo<v8::Value> const&)",93957341730032,93957341730376],["v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver::OnCompilationSucceeded(v8::internal::Handle<v8::internal::WasmModuleObject>)",93957341730864,93957341730956],["v8::(anonymous namespace)::(anonymous namespace)::AsyncCompilationResolver::~AsyncCompilationResolver()",93957341731072,93957341731096],["v8::internal::Builtin_Impl_NumberPrototypeToFixed(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335932832,93957335933583],["v8::internal::Builtin_ObjectDefineProperty(int, unsigned long*, v8::internal::Isolate*)",93957335937584,93957335937742],["v8::internal::Builtin_Impl_Stats_ObjectDefineSetter(int, unsigned long*, v8::internal::Isolate*)",93957335939296,93957335939768],["v8::internal::Builtin_ObjectLookupSetter(int, unsigned long*, v8::internal::Isolate*)",93957335940944,93957335941103],["v8::internal::Builtin_Impl_Stats_ObjectFreeze(int, unsigned long*, v8::internal::Isolate*)",93957335941904,93957335942526],["v8::internal::Builtin_Impl_Stats_ObjectPrototypeGetProto(int, unsigned long*, v8::internal::Isolate*)",93957335942560,93957335943032],["v8::internal::Builtin_ObjectPrototypeSetProto(int, unsigned long*, v8::internal::Isolate*)",93957335943360,93957335943392],["v8::internal::Builtin_Impl_ObjectPrototypeSetProto(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335943872,93957335944258],["v8::internal::InstallFunc(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), int, bool, v8::internal::PropertyAttributes, v8::SideEffectType)",93957341706832,93957341707068],["v8::(anonymous namespace)::WebAssemblyModule(v8::FunctionCallbackInfo<v8::Value> const&)",93957341718432,93957341718992],["v8::(anonymous namespace)::WebAssemblyTable(v8::FunctionCallbackInfo<v8::Value> const&)",93957341720960,93957341721720],["v8::(anonymous namespace)::WebAssemblyTableSet(v8::FunctionCallbackInfo<v8::Value> const&)",93957341722736,93957341723097],["v8::(anonymous namespace)::WebAssemblyMemoryGrow(v8::FunctionCallbackInfo<v8::Value> const&)",93957341724352,93957341724837],["v8::(anonymous namespace)::WebAssemblyMemoryType(v8::FunctionCallbackInfo<v8::Value> const&)",93957341725296,93957341725714],["v8::(anonymous namespace)::WebAssemblyGlobalValueOf(v8::FunctionCallbackInfo<v8::Value> const&)",93957341727152,93957341727169],["v8::(anonymous namespace)::WebAssemblyGlobalSetValue(v8::FunctionCallbackInfo<v8::Value> const&)",93957341727216,93957341728194],["v8::internal::Builtin_Impl_JsonParse(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335929696,93957335930145],["v8::internal::Builtin_NumberPrototypeToPrecision(int, unsigned long*, v8::internal::Isolate*)",93957335934672,93957335934704],["v8::internal::Builtin_ObjectDefineProperties(int, unsigned long*, v8::internal::Isolate*)",93957335936848,93957335937016],["v8::internal::Builtin_ObjectDefineGetter(int, unsigned long*, v8::internal::Isolate*)",93957335938304,93957335938336],["v8::internal::Builtin_ObjectDefineSetter(int, unsigned long*, v8::internal::Isolate*)",93957335939264,93957335939296],["v8::internal::Builtin_Impl_ObjectDefineSetter(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335939776,93957335940209],["v8::internal::Builtin_Impl_Stats_ObjectLookupGetter(int, unsigned long*, v8::internal::Isolate*)",93957335940384,93957335940929],["v8::internal::Builtin_Impl_Stats_ObjectLookupSetter(int, unsigned long*, v8::internal::Isolate*)",93957335941104,93957335941652],["v8::internal::wasm::WasmImportWrapperCache::~WasmImportWrapperCache()",93957341702880,93957341703386],["v8::internal::SetDummyInstanceTemplate(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957341707696,93957341707984],["v8::(anonymous namespace)::WebAssemblyCompileStreaming(v8::FunctionCallbackInfo<v8::Value> const&)",93957341716272,93957341717175],["v8::(anonymous namespace)::WebAssemblyModuleExports(v8::FunctionCallbackInfo<v8::Value> const&)",93957341719264,93957341719533],["v8::(anonymous namespace)::WebAssemblyInstanceGetExports(v8::FunctionCallbackInfo<v8::Value> const&)",93957341720688,93957341720954],["v8::(anonymous namespace)::WebAssemblyTableGetLength(v8::FunctionCallbackInfo<v8::Value> const&)",93957341721728,93957341721939],["v8::(anonymous namespace)::WebAssemblyTableGet(v8::FunctionCallbackInfo<v8::Value> const&)",93957341722416,93957341722731],["v8::(anonymous namespace)::WebAssemblyTableType(v8::FunctionCallbackInfo<v8::Value> const&)",93957341723104,93957341723530],["v8::internal::Builtin_Impl_V8BreakIteratorPrototypeBreakType(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335926896,93957335927393],["v8::internal::Builtin_Impl_Stats_NumberPrototypeToExponential(int, unsigned long*, v8::internal::Isolate*)",93957335931040,93957335931512],["v8::internal::Builtin_Impl_Stats_NumberPrototypeToLocaleString(int, unsigned long*, v8::internal::Isolate*)",93957335933616,93957335934088],["v8::internal::Builtin_Impl_NumberPrototypeToPrecision(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335935184,93957335935981],["v8::internal::Builtin_Impl_ObjectPrototypePropertyIsEnumerable(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335936496,93957335936843],["v8::internal::Builtin_Impl_Stats_ObjectDefineProperties(int, unsigned long*, v8::internal::Isolate*)",93957335937024,93957335937580],["v8::internal::Builtin_Impl_Stats_ObjectDefineProperty(int, unsigned long*, v8::internal::Isolate*)",93957335937744,93957335938292],["v8::internal::Builtin_Impl_Stats_ObjectDefineGetter(int, unsigned long*, v8::internal::Isolate*)",93957335938336,93957335938808],["v8::internal::wasm::memory_copy_wrapper(unsigned long)",93957341701840,93957341701905],["v8::WasmStreaming::OnBytesReceived(unsigned char const*, unsigned long)",93957341705248,93957341705605],["v8::internal::InstallGetter(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&))",93957341707168,93957341707367],["v8::(anonymous namespace)::WebAssemblyCompile(v8::FunctionCallbackInfo<v8::Value> const&)",93957341713936,93957341714538],["v8::(anonymous namespace)::WasmStreamingCallbackForTesting(v8::FunctionCallbackInfo<v8::Value> const&)",93957341716000,93957341716265],["v8::(anonymous namespace)::WebAssemblyInstantiateStreaming(v8::FunctionCallbackInfo<v8::Value> const&)",93957341717184,93957341718422],["v8::(anonymous namespace)::WebAssemblyModuleImports(v8::FunctionCallbackInfo<v8::Value> const&)",93957341718992,93957341719261],["v8::(anonymous namespace)::WebAssemblyModuleCustomSections(v8::FunctionCallbackInfo<v8::Value> const&)",93957341719536,93957341720036],["v8::internal::Builtin_V8BreakIteratorPrototypeCurrent(int, unsigned long*, v8::internal::Isolate*)",93957335924624,93957335924656],["v8::internal::Object v8::internal::DateTimeFormatRange<v8::internal::String>(v8::internal::BuiltinArguments, v8::internal::Isolate*, char const*, v8::internal::MaybeHandle<v8::internal::String> (*)(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSDateTimeFormat>, double, double))",93957335928144,93957335928698],["v8::internal::Builtin_Impl_Stats_JsonStringify(int, unsigned long*, v8::internal::Isolate*)",93957335930384,93957335930994],["v8::internal::Builtin_NumberPrototypeToFixed(int, unsigned long*, v8::internal::Isolate*)",93957335932320,93957335932352],["v8::internal::Builtin_NumberPrototypeToLocaleString(int, unsigned long*, v8::internal::Isolate*)",93957335933584,93957335933616],["v8::internal::Builtin_Impl_NumberPrototypeToLocaleString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335934096,93957335934662],["v8::internal::Builtin_Impl_Stats_NumberPrototypeToPrecision(int, unsigned long*, v8::internal::Isolate*)",93957335934704,93957335935176],["v8::internal::Builtin_ObjectPrototypePropertyIsEnumerable(int, unsigned long*, v8::internal::Isolate*)",93957335935984,93957335936016],["v8::internal::wasm::f64x2_floor_wrapper(unsigned long)",93957341701168,93957341701222],["v8::internal::wasm::WasmFeatures::FromIsolate(v8::internal::Isolate*)",93957341702256,93957341702621],["std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*>, std::__1::__unordered_map_hasher<v8::internal::wasm::WasmImportWrapperCache::CacheKey, std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*>, v8::internal::wasm::WasmImportWrapperCache::CacheKeyHash, std::__1::equal_to<v8::internal::wasm::WasmImportWrapperCache::CacheKey>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::WasmImportWrapperCache::CacheKey, std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*>, std::__1::equal_to<v8::internal::wasm::WasmImportWrapperCache::CacheKey>, v8::internal::wasm::WasmImportWrapperCache::CacheKeyHash, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*> > >::find<v8::internal::wasm::WasmImportWrapperCache::CacheKey>(v8::internal::wasm::WasmImportWrapperCache::CacheKey const&) const",93957341704432,93957341704925],["v8::WasmStreaming::Abort(v8::MaybeLocal<v8::Value>)",93957341705952,93957341706377],["v8::(anonymous namespace)::v8_str(v8::internal::Isolate*, char const*)",93957341707072,93957341707154],["v8::internal::InstallGetterSetter(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), void (*)(v8::FunctionCallbackInfo<v8::Value> const&))",93957341707376,93957341707693],["v8::internal::WasmJs::Install(v8::internal::Isolate*, bool)",93957341707984,93957341713925],["v8::(anonymous namespace)::WebAssemblyValidate(v8::FunctionCallbackInfo<v8::Value> const&)",93957341714544,93957341714903],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorInternalFirst(int, unsigned long*, v8::internal::Isolate*)",93957335922160,93957335922594],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorInternalCurrent(int, unsigned long*, v8::internal::Isolate*)",93957335925680,93957335926114],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorInternalBreakType(int, unsigned long*, v8::internal::Isolate*)",93957335927440,93957335927874],["v8::internal::Builtin_JsonParse(int, unsigned long*, v8::internal::Isolate*)",93957335929184,93957335929216],["v8::internal::Builtin_JsonStringify(int, unsigned long*, v8::internal::Isolate*)",93957335930160,93957335930373],["v8::internal::Builtin_NumberPrototypeToExponential(int, unsigned long*, v8::internal::Isolate*)",93957335931008,93957335931040],["v8::internal::Builtin_Impl_NumberPrototypeToExponential(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335931520,93957335932308],["v8::internal::Builtin_Impl_Stats_NumberPrototypeToFixed(int, unsigned long*, v8::internal::Isolate*)",93957335932352,93957335932824],["v8::internal::wasm::word32_popcnt_wrapper(unsigned long)",93957341700816,93957341700876],["v8::internal::wasm::f32x4_floor_wrapper(unsigned long)",93957341701456,93957341701540],["v8::internal::wasm::call_trap_callback_for_testing()",93957341701984,93957341702005],["v8::internal::wasm::WasmImportWrapperCache::operator[](v8::internal::wasm::WasmImportWrapperCache::CacheKey const&)",93957341702688,93957341702734],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*>, std::__1::__unordered_map_hasher<v8::internal::wasm::WasmImportWrapperCache::CacheKey, std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*>, v8::internal::wasm::WasmImportWrapperCache::CacheKeyHash, std::__1::equal_to<v8::internal::wasm::WasmImportWrapperCache::CacheKey>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::WasmImportWrapperCache::CacheKey, std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*>, std::__1::equal_to<v8::internal::wasm::WasmImportWrapperCache::CacheKey>, v8::internal::wasm::WasmImportWrapperCache::CacheKeyHash, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmCode*> > >::__emplace_unique_key_args<v8::internal::wasm::WasmImportWrapperCache::CacheKey, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::wasm::WasmImportWrapperCache::CacheKey const&>, std::__1::tuple<> >(v8::internal::wasm::WasmImportWrapperCache::CacheKey const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::wasm::WasmImportWrapperCache::CacheKey const&>&&, std::__1::tuple<>&&)",93957341703392,93957341704430],["v8::WasmStreaming::WasmStreaming(std::__1::unique_ptr<v8::WasmStreaming::WasmStreamingImpl, std::__1::default_delete<v8::WasmStreaming::WasmStreamingImpl> >)",93957341704928,93957341705237],["v8::WasmStreaming::Finish()",93957341705616,93957341705948],["v8::WasmStreaming::Unpack(v8::Isolate*, v8::Local<v8::Value>)",93957341706384,93957341706821],["v8::internal::Builtin_Impl_V8BreakIteratorPrototypeAdoptText(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335919680,93957335920180],["v8::internal::Builtin_Impl_V8BreakIteratorPrototypeNext(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335923376,93957335923873],["v8::internal::Builtin_Impl_V8BreakIteratorPrototypeCurrent(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335925136,93957335925633],["v8::internal::Builtin_V8BreakIteratorPrototypeBreakType(int, unsigned long*, v8::internal::Isolate*)",93957335926384,93957335926416],["v8::internal::Builtin_V8BreakIteratorInternalBreakType(int, unsigned long*, v8::internal::Isolate*)",93957335927408,93957335927440],["v8::internal::Builtin_Impl_V8BreakIteratorInternalBreakType(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335927888,93957335928137],["v8::internal::(anonymous namespace)::CreateBoundFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Builtins::Name, int)",93957335928704,93957335929172],["v8::internal::Builtin_Impl_Stats_JsonParse(int, unsigned long*, v8::internal::Isolate*)",93957335929216,93957335929688],["v8::internal::wasm::float64_to_int64_sat_wrapper(unsigned long)",93957341700224,93957341700310],["v8::internal::wasm::word64_rol_wrapper(unsigned long)",93957341701024,93957341701036],["v8::internal::wasm::f64x2_nearest_int_wrapper(unsigned long)",93957341701296,93957341701350],["v8::internal::wasm::f32x4_nearest_int_wrapper(unsigned long)",93957341701648,93957341701732],["v8::internal::wasm::memory_fill_wrapper(unsigned long)",93957341701920,93957341701971],["v8::internal::wasm::WasmFeatures::FromFlags()",93957341702016,93957341702244],["v8::internal::wasm::WasmImportWrapperCache::ModificationScope::operator[](v8::internal::wasm::WasmImportWrapperCache::CacheKey const&)",93957341702624,93957341702673],["v8::internal::wasm::WasmImportWrapperCache::Get(v8::internal::compiler::WasmImportCallKind, v8::internal::Signature<v8::internal::wasm::ValueType> const*, int) const",93957341702736,93957341702866],["v8::internal::Builtin_Impl_SegmentsPrototypeIterator(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335917072,93957335917389],["v8::internal::Builtin_V8BreakIteratorPrototypeFirst(int, unsigned long*, v8::internal::Isolate*)",93957335921104,93957335921136],["v8::internal::Builtin_V8BreakIteratorPrototypeNext(int, unsigned long*, v8::internal::Isolate*)",93957335922864,93957335922896],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorInternalNext(int, unsigned long*, v8::internal::Isolate*)",93957335923920,93957335924354],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorPrototypeCurrent(int, unsigned long*, v8::internal::Isolate*)",93957335924656,93957335925128],["v8::internal::Builtin_V8BreakIteratorInternalCurrent(int, unsigned long*, v8::internal::Isolate*)",93957335925648,93957335925680],["v8::internal::Builtin_Impl_V8BreakIteratorInternalCurrent(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335926128,93957335926377],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorPrototypeBreakType(int, unsigned long*, v8::internal::Isolate*)",93957335926416,93957335926888],["v8::internal::wasm::int64_to_float64_wrapper(unsigned long)",93957341699648,93957341699663],["v8::internal::wasm::uint64_div_wrapper(unsigned long)",93957341700624,93957341700685],["v8::internal::wasm::word32_rol_wrapper(unsigned long)",93957341700992,93957341701005],["v8::internal::wasm::float64_pow_wrapper(unsigned long)",93957341701056,93957341701090],["v8::internal::wasm::f64x2_trunc_wrapper(unsigned long)",93957341701232,93957341701286],["v8::internal::wasm::f32x4_ceil_wrapper(unsigned long)",93957341701360,93957341701444],["v8::internal::wasm::f32x4_trunc_wrapper(unsigned long)",93957341701552,93957341701636],["v8::internal::wasm::memory_init_wrapper(unsigned long)",93957341701744,93957341701831],["v8::internal::Builtin_SegmenterPrototypeSegment(int, unsigned long*, v8::internal::Isolate*)",93957335914784,93957335914816],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335918416,93957335918888],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorInternalAdoptText(int, unsigned long*, v8::internal::Isolate*)",93957335920224,93957335920696],["v8::internal::Builtin_Impl_V8BreakIteratorPrototypeFirst(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335921616,93957335922113],["v8::internal::Builtin_Impl_V8BreakIteratorInternalFirst(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335922608,93957335922857],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorPrototypeNext(int, unsigned long*, v8::internal::Isolate*)",93957335922896,93957335923368],["v8::internal::Builtin_V8BreakIteratorInternalNext(int, unsigned long*, v8::internal::Isolate*)",93957335923888,93957335923920],["v8::internal::Builtin_Impl_V8BreakIteratorInternalNext(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335924368,93957335924617],["v8::internal::wasm::f32_ceil_wrapper(unsigned long)",93957341699376,93957341699405],["v8::internal::wasm::float64_to_int64_wrapper(unsigned long)",93957341699856,93957341699905],["v8::internal::wasm::int64_div_wrapper(unsigned long)",93957341700432,93957341700515],["v8::internal::wasm::word32_ctz_wrapper(unsigned long)",93957341700752,93957341700774],["v8::internal::wasm::word64_popcnt_wrapper(unsigned long)",93957341700880,93957341700978],["v8::internal::wasm::word32_ror_wrapper(unsigned long)",93957341701008,93957341701021],["v8::internal::wasm::word64_ror_wrapper(unsigned long)",93957341701040,93957341701052],["v8::internal::wasm::f64x2_ceil_wrapper(unsigned long)",93957341701104,93957341701158],["v8::internal::Builtin_SegmenterConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335912240,93957335912272],["v8::internal::Builtin_Impl_Stats_SegmentsPrototypeContaining(int, unsigned long*, v8::internal::Isolate*)",93957335915712,93957335916184],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335917680,93957335918371],["v8::internal::Builtin_V8BreakIteratorPrototypeAdoptText(int, unsigned long*, v8::internal::Isolate*)",93957335919168,93957335919200],["v8::internal::Builtin_V8BreakIteratorInternalAdoptText(int, unsigned long*, v8::internal::Isolate*)",93957335920192,93957335920224],["v8::internal::Builtin_Impl_V8BreakIteratorInternalAdoptText(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335920704,93957335921093],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorPrototypeFirst(int, unsigned long*, v8::internal::Isolate*)",93957335921136,93957335921608],["v8::internal::Builtin_V8BreakIteratorInternalFirst(int, unsigned long*, v8::internal::Isolate*)",93957335922128,93957335922160],["non-virtual thunk to v8::internal::wasm::(anonymous namespace)::SampleTopTierCodeSizeTask::~SampleTopTierCodeSizeTask()",93957341699040,93957341699099],["v8::internal::wasm::f64_ceil_wrapper(unsigned long)",93957341699504,93957341699533],["v8::internal::wasm::float32_to_int64_wrapper(unsigned long)",93957341699712,93957341699759],["v8::internal::wasm::float32_to_int64_sat_wrapper(unsigned long)",93957341700016,93957341700097],["v8::internal::wasm::float64_to_uint64_sat_wrapper(unsigned long)",93957341700320,93957341700432],["v8::internal::wasm::int64_mod_wrapper(unsigned long)",93957341700528,93957341700622],["v8::internal::wasm::uint64_mod_wrapper(unsigned long)",93957341700688,93957341700749],["v8::internal::wasm::word64_ctz_wrapper(unsigned long)",93957341700784,93957341700809],["v8::internal::Builtin_Impl_Stats_CollatorPrototypeCompare(int, unsigned long*, v8::internal::Isolate*)",93957335909376,93957335909848],["v8::internal::Builtin_Impl_Stats_SegmenterSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335913360,93957335913988],["v8::internal::Builtin_Impl_SegmenterPrototypeSegment(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335915296,93957335915672],["v8::internal::Builtin_SegmentsPrototypeIterator(int, unsigned long*, v8::internal::Isolate*)",93957335916560,93957335916592],["v8::internal::Builtin_V8BreakIteratorConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335917392,93957335917668],["v8::internal::Builtin_V8BreakIteratorPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335918384,93957335918416],["v8::internal::Builtin_Impl_V8BreakIteratorPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335918896,93957335919166],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorPrototypeAdoptText(int, unsigned long*, v8::internal::Isolate*)",93957335919200,93957335919672],["std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle>, std::__1::__unordered_map_hasher<v8::internal::wasm::NativeModule*, std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle>, std::__1::hash<v8::internal::wasm::NativeModule*>, std::__1::equal_to<v8::internal::wasm::NativeModule*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::NativeModule*, std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle>, std::__1::equal_to<v8::internal::wasm::NativeModule*>, std::__1::hash<v8::internal::wasm::NativeModule*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle> > >::find<v8::internal::wasm::NativeModule*>(v8::internal::wasm::NativeModule* const&)",93957341695776,93957341696150],["std::__1::__shared_ptr_emplace<v8::internal::wasm::WasmEngine, std::__1::allocator<v8::internal::wasm::WasmEngine> >::~__shared_ptr_emplace()",93957341699248,93957341699286],["v8::internal::wasm::f64_trunc_wrapper(unsigned long)",93957341699440,93957341699469],["v8::internal::wasm::int64_to_float32_wrapper(unsigned long)",93957341699568,93957341699583],["v8::internal::wasm::uint64_to_float64_wrapper(unsigned long)",93957341699664,93957341699705],["v8::internal::wasm::float32_to_uint64_wrapper(unsigned long)",93957341699760,93957341699847],["v8::internal::wasm::float64_to_uint64_wrapper(unsigned long)",93957341699920,93957341700011],["v8::internal::wasm::float32_to_uint64_sat_wrapper(unsigned long)",93957341700112,93957341700219],["v8::internal::Builtin_Impl_Stats_CollatorConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335906880,93957335907352],["v8::internal::Builtin_Impl_CollatorInternalCompare(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335910880,93957335911415],["v8::internal::Builtin_Impl_SegmenterConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335912752,93957335913095],["v8::internal::Builtin_Impl_Stats_SegmenterPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335914032,93957335914504],["v8::internal::Builtin_Impl_Stats_SegmenterPrototypeSegment(int, unsigned long*, v8::internal::Isolate*)",93957335914816,93957335915288],["v8::internal::Builtin_SegmentsPrototypeContaining(int, unsigned long*, v8::internal::Isolate*)",93957335915680,93957335915712],["v8::internal::Builtin_Impl_SegmentsPrototypeContaining(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335916192,93957335916554],["v8::internal::Builtin_Impl_Stats_SegmentsPrototypeIterator(int, unsigned long*, v8::internal::Isolate*)",93957335916592,93957335917064],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::__tree_node<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::__map_value_compare<v8::internal::wasm::NativeModuleCache::Key, std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::less<v8::internal::wasm::NativeModuleCache::Key>, true>, std::__1::allocator<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > > > >::__emplace_unique_key_args<v8::internal::wasm::NativeModuleCache::Key, v8::internal::wasm::NativeModuleCache::Key&, v8::base::nullopt_t const&>(v8::internal::wasm::NativeModuleCache::Key const&, v8::internal::wasm::NativeModuleCache::Key&, v8::base::nullopt_t const&)",93957341692976,93957341693340],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle>, std::__1::__unordered_map_hasher<v8::internal::wasm::NativeModule*, std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle>, std::__1::hash<v8::internal::wasm::NativeModule*>, std::__1::equal_to<v8::internal::wasm::NativeModule*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::NativeModule*, std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle>, std::__1::equal_to<v8::internal::wasm::NativeModule*>, std::__1::hash<v8::internal::wasm::NativeModule*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle> > >::erase(std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::WeakScriptHandle>, void*>*>)",93957341698176,93957341698783],["v8::internal::wasm::(anonymous namespace)::WasmGCForegroundTask::RunInternal()",93957341699184,93957341699205],["v8::internal::wasm::f32_trunc_wrapper(unsigned long)",93957341699312,93957341699341],["v8::internal::wasm::f32_nearest_int_wrapper(unsigned long)",93957341699408,93957341699437],["v8::internal::wasm::f64_floor_wrapper(unsigned long)",93957341699472,93957341699501],["v8::internal::wasm::f64_nearest_int_wrapper(unsigned long)",93957341699536,93957341699565],["v8::internal::wasm::uint64_to_float32_wrapper(unsigned long)",93957341699584,93957341699634],["v8::internal::Builtin_Impl_Stats_PluralRulesPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335904288,93957335904760],["v8::internal::Builtin_Impl_CollatorPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335908176,93957335908446],["v8::internal::Builtin_CollatorInternalCompare(int, unsigned long*, v8::internal::Isolate*)",93957335910368,93957335910400],["v8::internal::Builtin_Impl_Stats_SegmentIteratorPrototypeNext(int, unsigned long*, v8::internal::Isolate*)",93957335911456,93957335911928],["v8::internal::Builtin_Impl_Stats_SegmenterConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335912272,93957335912744],["v8::internal::Builtin_SegmenterSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335913104,93957335913346],["v8::internal::Builtin_SegmenterPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335914000,93957335914032],["v8::internal::Builtin_Impl_SegmenterPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335914512,93957335914782],["std::__1::__tree<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::__map_value_compare<v8::internal::wasm::NativeModuleCache::Key, std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::less<v8::internal::wasm::NativeModuleCache::Key>, true>, std::__1::allocator<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > > > >::destroy(std::__1::__tree_node<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, void*>*)",93957341692304,93957341692375],["v8::internal::wasm::WasmEngine::IsolateInfo::~IsolateInfo()",93957341694992,93957341695485],["v8::internal::wasm::WasmEngine::NativeModuleInfo::~NativeModuleInfo()",93957341697088,93957341697277],["v8::internal::wasm::(anonymous namespace)::SampleTopTierCodeSizeTask::~SampleTopTierCodeSizeTask()",93957341698848,93957341698914],["non-virtual thunk to v8::internal::wasm::(anonymous namespace)::SampleTopTierCodeSizeTask::~SampleTopTierCodeSizeTask()",93957341699104,93957341699171],["std::__1::__shared_ptr_emplace<v8::internal::wasm::WasmEngine, std::__1::allocator<v8::internal::wasm::WasmEngine> >::~__shared_ptr_emplace()",93957341699216,93957341699236],["std::__1::__shared_ptr_emplace<v8::internal::wasm::WasmEngine, std::__1::allocator<v8::internal::wasm::WasmEngine> >::__on_zero_shared()",93957341699296,93957341699310],["v8::internal::wasm::f32_floor_wrapper(unsigned long)",93957341699344,93957341699373],["v8::internal::Builtin_Impl_StringPrototypeToLocaleLowerCase(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335902112,93957335902488],["v8::internal::Builtin_Impl_PluralRulesPrototypeSelect(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335905552,93957335905940],["v8::internal::Builtin_CollatorPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335907664,93957335907696],["v8::internal::Builtin_Impl_Stats_CollatorSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335908704,93957335909332],["v8::internal::Builtin_Impl_CollatorPrototypeCompare(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335909856,93957335910356],["v8::internal::Builtin_Impl_Stats_CollatorInternalCompare(int, unsigned long*, v8::internal::Isolate*)",93957335910400,93957335910872],["v8::internal::Builtin_SegmentIteratorPrototypeNext(int, unsigned long*, v8::internal::Isolate*)",93957335911424,93957335911456],["v8::internal::Builtin_Impl_SegmentIteratorPrototypeNext(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335911936,93957335912229],["v8::internal::wasm::WasmEngine::SampleCatchEvent(v8::internal::Isolate*)",93957341691104,93957341691328],["std::__1::__shared_ptr_emplace<v8::internal::OperationsBarrier, std::__1::allocator<v8::internal::OperationsBarrier> >::~__shared_ptr_emplace()",93957341692608,93957341692628],["void std::__1::vector<std::__1::pair<std::__1::shared_ptr<v8::internal::wasm::NativeModule>, bool>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<v8::internal::wasm::NativeModule>, bool> > >::__emplace_back_slow_path<std::__1::shared_ptr<v8::internal::wasm::NativeModule>, bool&>(std::__1::shared_ptr<v8::internal::wasm::NativeModule>&&, bool&)",93957341693760,93957341694196],["v8::internal::wasm::(anonymous namespace)::LogCodesTask::~LogCodesTask()",93957341695584,93957341695669],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, v8::internal::wasm::WasmEngine::IsolateInfo::CodeToLogPerScript>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, v8::internal::wasm::WasmEngine::IsolateInfo::CodeToLogPerScript>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, v8::internal::wasm::WasmEngine::IsolateInfo::CodeToLogPerScript>, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, v8::internal::wasm::WasmEngine::IsolateInfo::CodeToLogPerScript>, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, v8::internal::wasm::WasmEngine::IsolateInfo::CodeToLogPerScript> > >::__emplace_unique_key_args<int, std::__1::piecewise_construct_t const&, std::__1::tuple<int&&>, std::__1::tuple<> >(int const&, std::__1::piecewise_construct_t const&, std::__1::tuple<int&&>&&, std::__1::tuple<>&&)",93957341696160,93957341697088],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::unique_ptr<v8::internal::wasm::WasmEngine::NativeModuleInfo, std::__1::default_delete<v8::internal::wasm::WasmEngine::NativeModuleInfo> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::unique_ptr<v8::internal::wasm::WasmEngine::NativeModuleInfo, std::__1::default_delete<v8::internal::wasm::WasmEngine::NativeModuleInfo> > >, std::__1::__unordered_map_hasher<v8::internal::wasm::NativeModule*, std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::unique_ptr<v8::internal::wasm::WasmEngine::NativeModuleInfo, std::__1::default_delete<v8::internal::wasm::WasmEngine::NativeModuleInfo> > >, std::__1::hash<v8::internal::wasm::NativeModule*>, std::__1::equal_to<v8::internal::wasm::NativeModule*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::NativeModule*, std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::unique_ptr<v8::internal::wasm::WasmEngine::NativeModuleInfo, std::__1::default_delete<v8::internal::wasm::WasmEngine::NativeModuleInfo> > >, std::__1::equal_to<v8::internal::wasm::NativeModule*>, std::__1::hash<v8::internal::wasm::NativeModule*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::unique_ptr<v8::internal::wasm::WasmEngine::NativeModuleInfo, std::__1::default_delete<v8::internal::wasm::WasmEngine::NativeModuleInfo> > > > >::__emplace_unique_key_args<v8::internal::wasm::NativeModule*, std::__1::pair<v8::internal::wasm::NativeModule*, std::__1::unique_ptr<v8::internal::wasm::WasmEngine::NativeModuleInfo, std::__1::default_delete<v8::internal::wasm::WasmEngine::NativeModuleInfo> > > >(v8::internal::wasm::NativeModule* const&, std::__1::pair<v8::internal::wasm::NativeModule*, std::__1::unique_ptr<v8::internal::wasm::WasmEngine::NativeModuleInfo, std::__1::default_delete<v8::internal::wasm::WasmEngine::NativeModuleInfo> > >&&)",93957341697280,93957341698164],["v8::internal::wasm::(anonymous namespace)::SampleTopTierCodeSizeTask::~SampleTopTierCodeSizeTask()",93957341698784,93957341698842],["v8::internal::wasm::(anonymous namespace)::SampleTopTierCodeSizeTask::RunInternal()",93957341698928,93957341699034],["v8::internal::Builtin_RelativeTimeFormatConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335899952,93957335899984],["v8::internal::Builtin_PluralRulesConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335903392,93957335903424],["v8::internal::Builtin_PluralRulesPrototypeSelect(int, unsigned long*, v8::internal::Isolate*)",93957335905040,93957335905072],["v8::internal::Builtin_Impl_Stats_PluralRulesSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335906208,93957335906836],["v8::internal::Builtin_Impl_CollatorConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335907360,93957335907660],["v8::internal::Builtin_Impl_Stats_CollatorPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335907696,93957335908168],["v8::internal::Builtin_CollatorSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335908448,93957335908690],["v8::internal::Builtin_CollatorPrototypeCompare(int, unsigned long*, v8::internal::Isolate*)",93957335909344,93957335909376],["v8::internal::wasm::WasmEngine::ReportLiveCodeFromStackForGC(v8::internal::Isolate*)",93957341686576,93957341687032],["v8::internal::wasm::WasmEngine::GetWasmEngine()",93957341692112,93957341692193],["v8::internal::wasm::(anonymous namespace)::CheckNoArchivedThreads(v8::internal::Isolate*)::ArchivedThreadsVisitor::VisitThread(v8::internal::Isolate*, v8::internal::ThreadLocalTop*)",93957341692544,93957341692562],["std::__1::__shared_ptr_emplace<v8::internal::OperationsBarrier, std::__1::allocator<v8::internal::OperationsBarrier> >::__on_zero_shared()",93957341692688,93957341692721],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::__tree_node<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::__map_value_compare<v8::internal::wasm::NativeModuleCache::Key, std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::less<v8::internal::wasm::NativeModuleCache::Key>, true>, std::__1::allocator<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > > > >::__emplace_unique_key_args<v8::internal::wasm::NativeModuleCache::Key, v8::internal::wasm::NativeModuleCache::Key const&, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >(v8::internal::wasm::NativeModuleCache::Key const&, v8::internal::wasm::NativeModuleCache::Key const&, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> >&&)",93957341693344,93957341693759],["void std::__1::vector<std::__1::unique_ptr<v8::internal::wasm::AsyncCompileJob, std::__1::default_delete<v8::internal::wasm::AsyncCompileJob> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::wasm::AsyncCompileJob, std::__1::default_delete<v8::internal::wasm::AsyncCompileJob> > > >::__push_back_slow_path<std::__1::unique_ptr<v8::internal::wasm::AsyncCompileJob, std::__1::default_delete<v8::internal::wasm::AsyncCompileJob> > >(std::__1::unique_ptr<v8::internal::wasm::AsyncCompileJob, std::__1::default_delete<v8::internal::wasm::AsyncCompileJob> >&&)",93957341694208,93957341694979],["v8::internal::wasm::(anonymous namespace)::LogCodesTask::~LogCodesTask()",93957341695488,93957341695570],["v8::internal::wasm::(anonymous namespace)::LogCodesTask::Run()",93957341695680,93957341695767],["v8::internal::Builtin_Impl_Stats_LocalePrototypeNumeric(int, unsigned long*, v8::internal::Isolate*)",93957335897632,93957335898104],["v8::internal::Builtin_Impl_Stats_RelativeTimeFormatPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335900848,93957335901320],["v8::internal::Builtin_Impl_Stats_StringPrototypeToLocaleUpperCase(int, unsigned long*, v8::internal::Isolate*)",93957335902528,93957335903000],["v8::internal::Builtin_Impl_PluralRulesConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335903904,93957335904247],["v8::internal::Builtin_Impl_PluralRulesPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335904768,93957335905038],["v8::internal::Builtin_Impl_Stats_PluralRulesPrototypeSelect(int, unsigned long*, v8::internal::Isolate*)",93957335905072,93957335905544],["v8::internal::Builtin_PluralRulesSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335905952,93957335906194],["v8::internal::Builtin_CollatorConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335906848,93957335906880],["v8::internal::wasm::WasmEngine::NewNativeModule(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, std::__1::shared_ptr<v8::internal::wasm::WasmModule const>, unsigned long)",93957341682640,93957341683099],["v8::internal::wasm::WasmEngine::FreeDeadCodeLocked(std::__1::unordered_map<v8::internal::wasm::NativeModule*, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> >, std::__1::hash<v8::internal::wasm::NativeModule*>, std::__1::equal_to<v8::internal::wasm::NativeModule*>, std::__1::allocator<std::__1::pair<v8::internal::wasm::NativeModule* const, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> > > > > const&)",93957341689296,93957341690615],["v8::internal::wasm::WasmEngine::InitializeOncePerProcess()",93957341691472,93957341691955],["v8::internal::wasm::max_table_init_entries()",93957341692240,93957341692269],["v8::internal::wasm::WasmEngine::AddIsolate(v8::internal::Isolate*)::$_1::__invoke(v8::Isolate*, v8::GCType, v8::GCCallbackFlags, void*)",93957341692384,93957341692542],["std::__1::__shared_ptr_pointer<char*, std::__1::default_delete<char []>, std::__1::allocator<char> >::__on_zero_shared()",93957341692576,93957341692597],["std::__1::__shared_ptr_emplace<v8::internal::OperationsBarrier, std::__1::allocator<v8::internal::OperationsBarrier> >::~__shared_ptr_emplace()",93957341692640,93957341692678],["std::__1::__tree_iterator<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::__tree_node<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, void*>*, long> std::__1::__tree<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::__map_value_compare<v8::internal::wasm::NativeModuleCache::Key, std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > >, std::__1::less<v8::internal::wasm::NativeModuleCache::Key>, true>, std::__1::allocator<std::__1::__value_type<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > > > >::find<v8::internal::wasm::NativeModuleCache::Key>(v8::internal::wasm::NativeModuleCache::Key const&)",93957341692736,93957341692967],["v8::internal::Builtin_Impl_LocalePrototypeCaseFirst(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335895760,93957335896030],["v8::internal::Builtin_Impl_LocalePrototypeNumberingSystem(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335898896,93957335899166],["v8::internal::Builtin_Impl_RelativeTimeFormatConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335900464,93957335900807],["v8::internal::Builtin_StringPrototypeToLocaleLowerCase(int, unsigned long*, v8::internal::Isolate*)",93957335901600,93957335901632],["v8::internal::Builtin_StringPrototypeToLocaleUpperCase(int, unsigned long*, v8::internal::Isolate*)",93957335902496,93957335902528],["v8::internal::Builtin_Impl_StringPrototypeToLocaleUpperCase(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335903008,93957335903387],["v8::internal::Builtin_Impl_Stats_PluralRulesConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335903424,93957335903896],["v8::internal::Builtin_PluralRulesPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335904256,93957335904288],["v8::internal::wasm::WasmEngine::AddIsolate(v8::internal::Isolate*)",93957341674816,93957341675156],["v8::internal::wasm::WasmEngine::StreamingCompilationFailed(unsigned long)",93957341684128,93957341684230],["v8::internal::wasm::WasmEngine::TriggerGC(signed char)",93957341687472,93957341689220],["v8::internal::wasm::WasmEngine::SampleThrowEvent(v8::internal::Isolate*)",93957341690656,93957341690880],["std::__1::unique_ptr<v8::internal::wasm::WasmEngine::CurrentGCInfo, std::__1::default_delete<v8::internal::wasm::WasmEngine::CurrentGCInfo> >::reset(v8::internal::wasm::WasmEngine::CurrentGCInfo*)",93957341691328,93957341691461],["v8::internal::wasm::WasmEngine::GlobalTearDown()",93957341691968,93957341692106],["v8::internal::wasm::max_mem_pages()",93957341692208,93957341692237],["v8::internal::wasm::max_module_size()",93957341692272,93957341692302],["v8::internal::Builtin_LocalePrototypeBaseName(int, unsigned long*, v8::internal::Isolate*)",93957335893680,93957335893712],["v8::internal::Builtin_LocalePrototypeHourCycle(int, unsigned long*, v8::internal::Isolate*)",93957335896816,93957335896848],["v8::internal::Builtin_LocalePrototypeNumberingSystem(int, unsigned long*, v8::internal::Isolate*)",93957335898384,93957335898416],["v8::internal::Builtin_Impl_Stats_LocalePrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335899200,93957335899672],["v8::internal::Builtin_Impl_Stats_RelativeTimeFormatConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335899984,93957335900456],["v8::internal::Builtin_RelativeTimeFormatPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335900816,93957335900848],["v8::internal::Builtin_Impl_RelativeTimeFormatPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335901328,93957335901598],["v8::internal::Builtin_Impl_Stats_StringPrototypeToLocaleLowerCase(int, unsigned long*, v8::internal::Isolate*)",93957335901632,93957335902104],["v8::internal::wasm::WasmEngine::ImportNativeModule(v8::internal::Isolate*, std::__1::shared_ptr<v8::internal::wasm::NativeModule>, v8::internal::Vector<char const>)",93957341672064,93957341672467],["v8::internal::wasm::WasmEngine::LogCode(v8::internal::Vector<v8::internal::wasm::WasmCode*>)",93957341678384,93957341679137],["v8::internal::wasm::WasmEngine::UpdateNativeModuleCache(bool, std::__1::shared_ptr<v8::internal::wasm::NativeModule>*, v8::internal::Isolate*)",93957341683536,93957341683936],["v8::internal::wasm::WasmEngine::SampleTopTierCodeSizeInAllIsolates(std::__1::shared_ptr<v8::internal::wasm::NativeModule> const&)",93957341685632,93957341685968],["v8::internal::wasm::WasmEngine::AddPotentiallyDeadCode(v8::internal::wasm::WasmCode*)",93957341687040,93957341687465],["v8::internal::wasm::WasmEngine::FreeDeadCode(std::__1::unordered_map<v8::internal::wasm::NativeModule*, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> >, std::__1::hash<v8::internal::wasm::NativeModule*>, std::__1::equal_to<v8::internal::wasm::NativeModule*>, std::__1::allocator<std::__1::pair<v8::internal::wasm::NativeModule* const, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> > > > > const&)",93957341689232,93957341689292],["v8::internal::wasm::WasmEngine::GetBarrierForBackgroundCompile()",93957341690624,93957341690655],["v8::internal::wasm::WasmEngine::SampleRethrowEvent(v8::internal::Isolate*)",93957341690880,93957341691104],["v8::internal::Builtin_Impl_Stats_LocalePrototypeLanguage(int, unsigned long*, v8::internal::Isolate*)",93957335891360,93957335891832],["v8::internal::Builtin_Impl_Stats_LocalePrototypeCalendar(int, unsigned long*, v8::internal::Isolate*)",93957335894496,93957335894968],["v8::internal::Builtin_Impl_Stats_LocalePrototypeCollation(int, unsigned long*, v8::internal::Isolate*)",93957335896064,93957335896536],["v8::internal::Builtin_Impl_LocalePrototypeHourCycle(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335897328,93957335897598],["v8::internal::Builtin_Impl_LocalePrototypeNumeric(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335898112,93957335898382],["v8::internal::Builtin_Impl_Stats_LocalePrototypeNumberingSystem(int, unsigned long*, v8::internal::Isolate*)",93957335898416,93957335898888],["v8::internal::Builtin_LocalePrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335899168,93957335899200],["v8::internal::Builtin_Impl_LocalePrototypeToString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335899680,93957335899950],["v8::internal::wasm::WasmEngine::SyncInstantiate(v8::internal::Isolate*, v8::internal::wasm::ErrorThrower*, v8::internal::Handle<v8::internal::WasmModuleObject>, v8::internal::MaybeHandle<v8::internal::JSReceiver>, v8::internal::MaybeHandle<v8::internal::JSArrayBuffer>)",93957341667264,93957341667655],["v8::internal::wasm::WasmEngine::RemoveCompileJob(v8::internal::wasm::AsyncCompileJob*)",93957341673552,93957341673756],["v8::internal::wasm::WasmEngine::RemoveIsolateFromCurrentGC(v8::internal::Isolate*)",93957341676832,93957341677495],["v8::internal::wasm::WasmEngine::EnableCodeLogging(v8::internal::Isolate*)",93957341681792,93957341681869],["v8::internal::wasm::WasmEngine::MaybeGetNativeModule(v8::internal::wasm::ModuleOrigin, v8::internal::Vector<unsigned char const>, v8::internal::Isolate*)",93957341683104,93957341683524],["v8::internal::wasm::WasmEngine::GetStreamingCompilationOwnership(unsigned long)",93957341683936,93957341684115],["v8::internal::wasm::WasmEngine::FreeNativeModule(v8::internal::wasm::NativeModule*)",93957341684240,93957341685631],["v8::internal::wasm::WasmEngine::ReportLiveCodeForGC(v8::internal::Isolate*, v8::internal::Vector<v8::internal::wasm::WasmCode*>)",93957341685968,93957341686576],["v8::internal::Builtin_Impl_Stats_RelativeTimeFormatSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335888928,93957335889556],["v8::internal::Builtin_Impl_LocalePrototypeScript(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335892624,93957335892894],["v8::internal::Builtin_Impl_LocalePrototypeBaseName(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335894192,93957335894462],["v8::internal::Builtin_LocalePrototypeCaseFirst(int, unsigned long*, v8::internal::Isolate*)",93957335895248,93957335895280],["v8::internal::Builtin_LocalePrototypeCollation(int, unsigned long*, v8::internal::Isolate*)",93957335896032,93957335896064],["v8::internal::Builtin_Impl_LocalePrototypeCollation(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335896544,93957335896814],["v8::internal::Builtin_Impl_Stats_LocalePrototypeHourCycle(int, unsigned long*, v8::internal::Isolate*)",93957335896848,93957335897320],["v8::internal::Builtin_LocalePrototypeNumeric(int, unsigned long*, v8::internal::Isolate*)",93957335897600,93957335897632],["v8::internal::wasm::NativeModuleCache::WireBytesHash(v8::internal::Vector<unsigned char const>)",93957341660048,93957341660063],["v8::internal::wasm::WasmEngine::CreateAsyncCompileJob(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, std::__1::unique_ptr<unsigned char [], std::__1::default_delete<unsigned char []> >, unsigned long, v8::internal::Handle<v8::internal::Context>, char const*, std::__1::shared_ptr<v8::internal::wasm::CompilationResultResolver>, int)",93957341670240,93957341670536],["v8::internal::wasm::WasmEngine::DumpAndResetTurboStatistics()",93957341672736,93957341673262],["v8::internal::wasm::WasmEngine::DeleteCompileJobsOnContext(v8::internal::Handle<v8::internal::Context>)",93957341673856,93957341674428],["v8::internal::wasm::WasmEngine::RemoveIsolate(v8::internal::Isolate*)",93957341675168,93957341676817],["v8::internal::wasm::WasmEngine::PotentiallyFinishCurrentGC()",93957341677504,93957341678377],["_ZNSt3__16vectorIPN2v88internal4wasm8WasmCodeENS_9allocatorIS5_EEE6insertIPS5_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS5_NS_15iterator_traitsISC_E9referenceEEE5valueENS_11__wrap_iterISA_EEE4typeENSG_IPKS5_EESC_SC_",93957341679152,93957341681782],["v8::internal::wasm::WasmEngine::LogOutstandingCodesForIsolate(v8::internal::Isolate*)",93957341681872,93957341682636],["v8::internal::Builtin_Impl_LocaleConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335886416,93957335887029],["v8::internal::Builtin_RelativeTimeFormatPrototypeFormatToParts(int, unsigned long*, v8::internal::Isolate*)",93957335890448,93957335890480],["v8::internal::Builtin_LocalePrototypeScript(int, unsigned long*, v8::internal::Isolate*)",93957335892112,93957335892144],["v8::internal::Builtin_Impl_Stats_LocalePrototypeRegion(int, unsigned long*, v8::internal::Isolate*)",93957335892928,93957335893400],["v8::internal::Builtin_Impl_Stats_LocalePrototypeBaseName(int, unsigned long*, v8::internal::Isolate*)",93957335893712,93957335894184],["v8::internal::Builtin_LocalePrototypeCalendar(int, unsigned long*, v8::internal::Isolate*)",93957335894464,93957335894496],["v8::internal::Builtin_Impl_LocalePrototypeCalendar(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335894976,93957335895246],["v8::internal::Builtin_Impl_Stats_LocalePrototypeCaseFirst(int, unsigned long*, v8::internal::Isolate*)",93957335895280,93957335895752],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::__unordered_map_hasher<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::hash<v8::internal::Isolate*>, std::__1::equal_to<v8::internal::Isolate*>, true>, std::__1::__unordered_map_equal<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::equal_to<v8::internal::Isolate*>, std::__1::hash<v8::internal::Isolate*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData> > >::~__hash_table()",93957341656624,93957341656802],["std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<< <char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957341662512,93957341662537],["v8::internal::wasm::WasmEngine::AsyncCompile(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, std::__1::shared_ptr<v8::internal::wasm::CompilationResultResolver>, v8::internal::wasm::ModuleWireBytes const&, bool, char const*)",93957341668400,93957341669620],["v8::internal::wasm::WasmEngine::TierDownAllModulesPerIsolate(v8::internal::Isolate*)",93957341670608,93957341671219],["v8::internal::wasm::WasmEngine::GetOrCreateTurboStatistics()",93957341672480,93957341672727],["v8::internal::wasm::WasmEngine::GetCodeTracer()",93957341673264,93957341673542],["v8::internal::wasm::WasmEngine::HasRunningCompileJob(v8::internal::Isolate*)",93957341673760,93957341673853],["v8::internal::wasm::WasmEngine::DeleteCompileJobsOnIsolate(v8::internal::Isolate*)",93957341674432,93957341674812],["v8::internal::Builtin_Impl_ListFormatConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335883872,93957335884215],["v8::internal::Builtin_LocalePrototypeMinimize(int, unsigned long*, v8::internal::Isolate*)",93957335887856,93957335887888],["v8::internal::Builtin_Impl_Stats_RelativeTimeFormatPrototypeFormat(int, unsigned long*, v8::internal::Isolate*)",93957335889600,93957335890072],["v8::internal::Builtin_Impl_RelativeTimeFormatPrototypeFormatToParts(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335890960,93957335891314],["v8::internal::Builtin_Impl_LocalePrototypeLanguage(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335891840,93957335892110],["v8::internal::Builtin_Impl_Stats_LocalePrototypeScript(int, unsigned long*, v8::internal::Isolate*)",93957335892144,93957335892616],["v8::internal::Builtin_LocalePrototypeRegion(int, unsigned long*, v8::internal::Isolate*)",93957335892896,93957335892928],["v8::internal::Builtin_Impl_LocalePrototypeRegion(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335893408,93957335893678],["std::__1::vector<v8::internal::wasm::DebugInfoImpl::CachedDebuggingCode, std::__1::allocator<v8::internal::wasm::DebugInfoImpl::CachedDebuggingCode> >::insert(std::__1::__wrap_iter<v8::internal::wasm::DebugInfoImpl::CachedDebuggingCode const*>, v8::internal::wasm::DebugInfoImpl::CachedDebuggingCode&&)",93957341652944,93957341653857],["v8::internal::wasm::NativeModuleCache::PrefixHash(v8::internal::Vector<unsigned char const>)",93957341657856,93957341658490],["v8::internal::wasm::WasmEngine::SyncValidate(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::ModuleWireBytes const&)",93957341660704,93957341661399],["v8::internal::wasm::WasmEngine::SyncCompile(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::ErrorThrower*, v8::internal::wasm::ModuleWireBytes const&)",93957341662736,93957341663825],["v8::internal::wasm::WasmEngine::AsyncInstantiate(v8::internal::Isolate*, std::__1::unique_ptr<v8::internal::wasm::InstantiationResultResolver, std::__1::default_delete<v8::internal::wasm::InstantiationResultResolver> >, v8::internal::Handle<v8::internal::WasmModuleObject>, v8::internal::MaybeHandle<v8::internal::JSReceiver>)",93957341667664,93957341668395],["v8::internal::wasm::WasmEngine::StartStreamingCompilation(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, v8::internal::Handle<v8::internal::Context>, char const*, std::__1::shared_ptr<v8::internal::wasm::CompilationResultResolver>)",93957341669632,93957341670226],["v8::internal::wasm::WasmEngine::CompileFunction(v8::internal::Isolate*, v8::internal::wasm::NativeModule*, unsigned int, v8::internal::wasm::ExecutionTier)",93957341670544,93957341670603],["v8::internal::wasm::WasmEngine::TierUpAllModulesPerIsolate(v8::internal::Isolate*)",93957341671232,93957341672051],["v8::internal::Builtin_Impl_DateTimeFormatPrototypeFormat(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335881200,93957335881754],["v8::internal::Builtin_ListFormatSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335885008,93957335885250],["v8::internal::Builtin_Impl_Stats_LocalePrototypeMaximize(int, unsigned long*, v8::internal::Isolate*)",93957335887072,93957335887544],["v8::internal::Builtin_Impl_LocalePrototypeMinimize(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335888368,93957335888661],["v8::internal::Builtin_RelativeTimeFormatPrototypeFormat(int, unsigned long*, v8::internal::Isolate*)",93957335889568,93957335889600],["v8::internal::Builtin_Impl_RelativeTimeFormatPrototypeFormat(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335890080,93957335890434],["v8::internal::Builtin_Impl_Stats_RelativeTimeFormatPrototypeFormatToParts(int, unsigned long*, v8::internal::Isolate*)",93957335890480,93957335890952],["v8::internal::Builtin_LocalePrototypeLanguage(int, unsigned long*, v8::internal::Isolate*)",93957335891328,93957335891360],["v8::internal::wasm::DebugInfoImpl::FindAllBreakpoints(int)",93957341645984,93957341647128],["v8::internal::wasm::DebugInfoImpl::IsAtReturn(v8::internal::WasmFrame*)",93957341655408,93957341655665],["void std::__1::vector<v8::debug::BreakLocation, std::__1::allocator<v8::debug::BreakLocation> >::__emplace_back_slow_path<int, unsigned int&, v8::debug::BreakLocationType>(int&&, unsigned int&, v8::debug::BreakLocationType&&)",93957341657040,93957341657345],["v8::internal::wasm::NativeModuleCache::Update(std::__1::shared_ptr<v8::internal::wasm::NativeModule>, bool)",93957341658672,93957341659579],["v8::internal::wasm::WasmEngine::~WasmEngine()",93957341660064,93957341660698],["v8::internal::wasm::WasmEngine::SyncCompileTranslatedAsmJs(v8::internal::Isolate*, v8::internal::wasm::ErrorThrower*, v8::internal::wasm::ModuleWireBytes const&, v8::internal::Vector<unsigned char const>, v8::internal::Handle<v8::internal::HeapNumber>, v8::internal::LanguageMode)",93957341661408,93957341662509],["v8::internal::wasm::WasmEngine::FinalizeTranslatedAsmJs(v8::internal::Isolate*, v8::internal::Handle<v8::internal::AsmWasmData>, v8::internal::Handle<v8::internal::Script>)",93957341662544,93957341662726],["v8::internal::wasm::WasmEngine::GetOrCreateScript(v8::internal::Isolate*, std::__1::shared_ptr<v8::internal::wasm::NativeModule> const&, v8::internal::Vector<char const>)",93957341663840,93957341667253],["v8::internal::Builtin_NumberFormatInternalFormatNumber(int, unsigned long*, v8::internal::Isolate*)",93957335878416,93957335878448],["v8::internal::Builtin_IntlGetCanonicalLocales(int, unsigned long*, v8::internal::Isolate*)",93957335882592,93957335882771],["v8::internal::Builtin_Impl_Stats_ListFormatPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335884256,93957335884728],["v8::internal::Builtin_LocaleConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335885904,93957335885936],["v8::internal::Builtin_LocalePrototypeMaximize(int, unsigned long*, v8::internal::Isolate*)",93957335887040,93957335887072],["v8::internal::Builtin_Impl_LocalePrototypeMaximize(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335887552,93957335887845],["v8::internal::Builtin_Impl_Stats_LocalePrototypeMinimize(int, unsigned long*, v8::internal::Isolate*)",93957335887888,93957335888360],["v8::internal::Builtin_RelativeTimeFormatSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335888672,93957335888914],["v8::internal::WasmScript::ClearBreakPointById(v8::internal::Handle<v8::internal::Script>, int)",93957341641568,93957341641965],["v8::internal::wasm::DebugInfoImpl::UpdateReturnAddresses(v8::internal::Isolate*, v8::internal::wasm::WasmCode*, v8::internal::StackFrameId)",93957341650448,93957341650785],["std::__1::__split_buffer<v8::internal::wasm::DebugInfoImpl::CachedDebuggingCode, std::__1::allocator<v8::internal::wasm::DebugInfoImpl::CachedDebuggingCode>&>::push_back(v8::internal::wasm::DebugInfoImpl::CachedDebuggingCode&&)",93957341654176,93957341654902],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::__unordered_map_hasher<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::hash<v8::internal::Isolate*>, std::__1::equal_to<v8::internal::Isolate*>, true>, std::__1::__unordered_map_equal<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::equal_to<v8::internal::Isolate*>, std::__1::hash<v8::internal::Isolate*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData> > >::erase(std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, void*>*>)",93957341655920,93957341656108],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::__unordered_map_hasher<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::hash<v8::internal::wasm::WasmCode const*>, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, std::__1::hash<v8::internal::wasm::WasmCode const*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > > > >::~__hash_table()",93957341656816,93957341657035],["v8::internal::wasm::NativeModuleCache::MaybeGetNativeModule(v8::internal::wasm::ModuleOrigin, v8::internal::Vector<unsigned char const>)",93957341657360,93957341657845],["std::__1::map<v8::internal::wasm::NativeModuleCache::Key, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> >, std::__1::less<v8::internal::wasm::NativeModuleCache::Key>, std::__1::allocator<std::__1::pair<v8::internal::wasm::NativeModuleCache::Key const, v8::base::Optional<std::__1::weak_ptr<v8::internal::wasm::NativeModule> > > > >::erase(v8::internal::wasm::NativeModuleCache::Key const&)",93957341658496,93957341658671],["v8::internal::wasm::NativeModuleCache::Erase(v8::internal::wasm::NativeModule*)",93957341659584,93957341660038],["v8::internal::Builtin_Impl_Stats_NumberFormatConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335875264,93957335875736],["v8::internal::Builtin_Impl_Stats_DateTimeFormatConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335879424,93957335879896],["v8::internal::Builtin_Impl_Stats_DateTimeFormatInternalFormat(int, unsigned long*, v8::internal::Isolate*)",93957335881792,93957335882264],["v8::internal::Builtin_ListFormatConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335883360,93957335883392],["v8::internal::Builtin_ListFormatPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335884224,93957335884256],["v8::internal::Builtin_Impl_ListFormatPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335884736,93957335885006],["v8::internal::Builtin_Impl_Stats_ListFormatSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335885264,93957335885892],["v8::internal::Builtin_Impl_Stats_LocaleConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335885936,93957335886408],["v8::internal::wasm::DebugInfo::GetDebugSideTableIfExists(v8::internal::wasm::WasmCode const*) const",93957341637184,93957341637265],["v8::internal::(anonymous namespace)::CheckBreakPoint(v8::internal::Isolate*, v8::internal::Handle<v8::internal::BreakPoint>, v8::internal::StackFrameId)",93957341644304,93957341644578],["v8::internal::wasm::DebugInfoImpl::DeadBreakpoint(int, v8::internal::Vector<int const>, v8::internal::Isolate*)",93957341648448,93957341648751],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::__unordered_map_hasher<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::hash<v8::internal::Isolate*>, std::__1::equal_to<v8::internal::Isolate*>, true>, std::__1::__unordered_map_equal<v8::internal::Isolate*, std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData>, std::__1::equal_to<v8::internal::Isolate*>, std::__1::hash<v8::internal::Isolate*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Isolate*, v8::internal::wasm::DebugInfoImpl::PerIsolateDebugData> > >::__emplace_unique_key_args<v8::internal::Isolate*, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::Isolate*&&>, std::__1::tuple<> >(v8::internal::Isolate* const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::Isolate*&&>&&, std::__1::tuple<>&&)",93957341651104,93957341652013],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::__unordered_map_hasher<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::hash<v8::internal::wasm::WasmCode const*>, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, std::__1::hash<v8::internal::wasm::WasmCode const*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > > > >::__emplace_unique_impl<v8::internal::wasm::WasmCode*&, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >(v8::internal::wasm::WasmCode*&, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> >&&)",93957341653872,93957341654173],["v8::internal::wasm::DebugInfoImpl::UpdateReturnAddress(v8::internal::WasmFrame*, v8::internal::wasm::WasmCode*, v8::internal::wasm::(anonymous namespace)::ReturnLocation)",93957341654912,93957341655408],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::__unordered_map_hasher<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::hash<v8::internal::wasm::WasmCode const*>, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::WasmCode const*, std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, std::__1::equal_to<v8::internal::wasm::WasmCode const*>, std::__1::hash<v8::internal::wasm::WasmCode const*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > > > >::erase(std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::WasmCode const*, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> > >, void*>*>)",93957341655680,93957341655907],["v8::internal::wasm::DebugInfoImpl::~DebugInfoImpl()",93957341656112,93957341656618],["v8::internal::Builtin_Impl_Stats_DisplayNamesPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335872736,93957335873208],["v8::internal::Builtin_Impl_NumberFormatPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335877040,93957335877344],["v8::internal::Builtin_Impl_NumberFormatInternalFormatNumber(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335878928,93957335879386],["v8::internal::Builtin_DateTimeFormatPrototypeFormat(int, unsigned long*, v8::internal::Isolate*)",93957335880688,93957335880720],["v8::internal::Builtin_DateTimeFormatInternalFormat(int, unsigned long*, v8::internal::Isolate*)",93957335881760,93957335881792],["v8::internal::Builtin_Impl_DateTimeFormatInternalFormat(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335882272,93957335882588],["v8::internal::Builtin_Impl_Stats_IntlGetCanonicalLocales(int, unsigned long*, v8::internal::Isolate*)",93957335882784,93957335883352],["v8::internal::Builtin_Impl_Stats_ListFormatConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335883392,93957335883864],["v8::internal::wasm::DebugInfo::PrepareStep(v8::internal::WasmFrame*)",93957341635488,93957341635711],["v8::internal::WasmScript::AddBreakpointToInfo(v8::internal::Handle<v8::internal::Script>, int, v8::internal::Handle<v8::internal::BreakPoint>)",93957341638368,93957341639940],["v8::internal::WasmScript::GetPossibleBreakpoints(v8::internal::wasm::NativeModule*, v8::debug::Location const&, v8::debug::Location const&, std::__1::vector<v8::debug::BreakLocation, std::__1::allocator<v8::debug::BreakLocation> >*)",93957341642128,93957341643201],["v8::internal::wasm::DebugInfoImpl::GetDebugSideTable(v8::internal::wasm::WasmCode*)",93957341644800,93957341645081],["std::__1::vector<int, std::__1::allocator<int> >::insert(std::__1::__wrap_iter<int const*>, int const&)",93957341647136,93957341648439],["v8::internal::wasm::DebugInfoImpl::RecompileLiftoffWithBreakpoints(int, v8::internal::Vector<int const>, int)",93957341648752,93957341650437],["_ZNSt3__16vectorIiNS_9allocatorIiEEEC2INS_21__tree_const_iteratorIiPNS_11__tree_nodeIiPvEElEEEET_NS_9enable_ifIXaasr27__is_cpp17_forward_iteratorISB_EE5valuesr16is_constructibleIiNS_15iterator_traitsISB_E9referenceEEE5valueESB_E4typeE",93957341650800,93957341651095],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<int, std::__1::vector<int, std::__1::allocator<int> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<int, std::__1::vector<int, std::__1::allocator<int> > >, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, std::__1::vector<int, std::__1::allocator<int> > >, std::__1::hash<int>, std::__1::equal_to<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, std::__1::vector<int, std::__1::allocator<int> > >, std::__1::equal_to<int>, std::__1::hash<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, std::__1::vector<int, std::__1::allocator<int> > > > >::__emplace_unique_key_args<int, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>, std::__1::tuple<> >(int const&, std::__1::piecewise_construct_t const&, std::__1::tuple<int const&>&&, std::__1::tuple<>&&)",93957341652016,93957341652940],["v8::internal::Builtin_DateTimeFormatPrototypeFormatRange(int, unsigned long*, v8::internal::Isolate*)",93957335870400,93957335870547],["v8::internal::Builtin_DisplayNamesPrototypeOf(int, unsigned long*, v8::internal::Isolate*)",93957335874384,93957335874416],["v8::internal::Builtin_NumberFormatPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335876528,93957335876560],["v8::internal::Builtin_Impl_Stats_NumberFormatPrototypeFormatNumber(int, unsigned long*, v8::internal::Isolate*)",93957335877376,93957335877848],["v8::internal::Builtin_Impl_Stats_NumberFormatInternalFormatNumber(int, unsigned long*, v8::internal::Isolate*)",93957335878448,93957335878920],["v8::internal::Builtin_DateTimeFormatConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335879392,93957335879424],["v8::internal::Builtin_Impl_DateTimeFormatConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335879904,93957335880682],["v8::internal::Builtin_Impl_Stats_DateTimeFormatPrototypeFormat(int, unsigned long*, v8::internal::Isolate*)",93957335880720,93957335881192],["v8::internal::wasm::DebugInfoImpl::GetImportName(v8::internal::wasm::ImportExportKindCode, unsigned int)",93957341632576,93957341633106],["v8::internal::wasm::DebugInfoImpl::ClearStepping(v8::internal::WasmFrame*)",93957341636016,93957341636339],["v8::internal::wasm::DebugInfoImpl::RemoveIsolate(v8::internal::Isolate*)",93957341637296,93957341637916],["v8::internal::WasmScript::SetBreakPointOnFirstBreakableForFunction(v8::internal::Handle<v8::internal::Script>, int, v8::internal::Handle<v8::internal::BreakPoint>)",93957341640448,93957341640637],["v8::internal::WasmScript::ClearAllBreakpoints(v8::internal::Script)",93957341641968,93957341642116],["v8::internal::WasmScript::CheckBreakPoints(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>, int, v8::internal::StackFrameId)",93957341643216,93957341644291],["v8::internal::wasm::DebugInfoImpl::FrameInspectionScope::FrameInspectionScope(v8::internal::wasm::DebugInfoImpl*, unsigned long)",93957341644592,93957341644798],["v8::internal::wasm::DebugInfoImpl::GetValue(v8::internal::wasm::DebugSideTable const*, v8::internal::wasm::DebugSideTable::Entry const*, int, unsigned long, unsigned long, v8::internal::Isolate*) const",93957341645088,93957341645977],["v8::internal::Builtin_DateTimeFormatPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335867456,93957335867488],["v8::internal::Builtin_DisplayNamesConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335871840,93957335871872],["v8::internal::Builtin_DisplayNamesSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335873488,93957335873730],["v8::internal::Builtin_Impl_DisplayNamesPrototypeOf(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335874896,93957335875217],["v8::internal::Builtin_Impl_NumberFormatConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335875744,93957335876522],["v8::internal::Builtin_Impl_Stats_NumberFormatPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335876560,93957335877032],["v8::internal::Builtin_NumberFormatPrototypeFormatNumber(int, unsigned long*, v8::internal::Isolate*)",93957335877344,93957335877376],["v8::internal::Builtin_Impl_NumberFormatPrototypeFormatNumber(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335877856,93957335878410],["v8::internal::wasm::DebugInfo::GetNumLocals(unsigned long)",93957341631408,93957341631467],["v8::internal::wasm::DebugInfoImpl::GetLocalName(int, int)",93957341633616,93957341634293],["v8::internal::wasm::DebugInfo::ClearStepping(v8::internal::Isolate*)",93957341635920,93957341635998],["v8::internal::wasm::DebugInfoImpl::RemoveBreakpoint(int, int, v8::internal::Isolate*)",93957341636512,93957341637038],["v8::internal::wasm::DebugInfo::RemoveIsolate(v8::internal::Isolate*)",93957341637280,93957341637293],["v8::internal::WasmScript::SetBreakPoint(v8::internal::Handle<v8::internal::Script>, int*, v8::internal::Handle<v8::internal::BreakPoint>)",93957341637920,93957341638363],["v8::internal::(anonymous namespace)::FindNextBreakablePosition(v8::internal::wasm::NativeModule*, int, int)",93957341639952,93957341640446],["v8::internal::WasmScript::ClearBreakPoint(v8::internal::Handle<v8::internal::Script>, int, v8::internal::Handle<v8::internal::BreakPoint>)",93957341640640,93957341641566],["v8::internal::Builtin_Impl_StringPrototypeNormalizeIntl(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335864368,93957335864742],["v8::internal::Builtin_Impl_Stats_DateTimeFormatSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335868544,93957335869172],["v8::internal::Builtin_DateTimeFormatPrototypeFormatRangeToParts(int, unsigned long*, v8::internal::Isolate*)",93957335871120,93957335871267],["v8::internal::Builtin_Impl_DisplayNamesConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335872352,93957335872695],["v8::internal::Builtin_Impl_DisplayNamesPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335873216,93957335873486],["v8::internal::Builtin_Impl_Stats_DisplayNamesSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335873744,93957335874372],["v8::internal::Builtin_Impl_Stats_DisplayNamesPrototypeOf(int, unsigned long*, v8::internal::Isolate*)",93957335874416,93957335874888],["v8::internal::Builtin_NumberFormatConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335875232,93957335875264],["unsigned int std::__1::__sort4<v8::internal::wasm::NativeModule::TransferNewOwnedCodeLocked() const::$_0&, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*>(std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*, v8::internal::wasm::NativeModule::TransferNewOwnedCodeLocked() const::$_0&)",93957341628960,93957341629210],["v8::internal::wasm::DebugInfo::GetFunctionAtAddress(unsigned long)",93957341631792,93957341631872],["v8::internal::wasm::DebugInfoImpl::GetTypeName(int)",93957341633136,93957341633587],["v8::internal::wasm::DebugInfoImpl::GetFieldName(int, int)",93957341634320,93957341634997],["v8::internal::wasm::DebugInfo::PrepareStepOutTo(v8::internal::WasmFrame*)",93957341635712,93957341635916],["v8::internal::wasm::DebugInfo::ClearStepping(v8::internal::WasmFrame*)",93957341636000,93957341636013],["v8::internal::wasm::DebugInfo::IsStepping(v8::internal::WasmFrame*)",93957341636352,93957341636497],["v8::internal::wasm::DebugInfo::RemoveDebugSideTables(v8::internal::Vector<v8::internal::wasm::WasmCode* const>)",93957341637040,93957341637174],["v8::internal::Builtin_Impl_Stats_UnsupportedThrower(int, unsigned long*, v8::internal::Isolate*)",93957335861792,93957335862316],["v8::internal::Builtin_Impl_Stats_NumberFormatSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335865904,93957335866532],["v8::internal::Builtin_Impl_DateTimeFormatPrototypeResolvedOptions(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335867968,93957335868281],["v8::internal::Builtin_Impl_Stats_DateTimeFormatPrototypeFormatToParts(int, unsigned long*, v8::internal::Isolate*)",93957335869216,93957335869688],["v8::internal::Builtin_Impl_Stats_DateTimeFormatPrototypeFormatRange(int, unsigned long*, v8::internal::Isolate*)",93957335870560,93957335871111],["v8::internal::Builtin_Impl_Stats_DateTimeFormatPrototypeFormatRangeToParts(int, unsigned long*, v8::internal::Isolate*)",93957335871280,93957335871831],["v8::internal::Builtin_Impl_Stats_DisplayNamesConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335871872,93957335872344],["v8::internal::Builtin_DisplayNamesPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335872704,93957335872736],["std::__1::__shared_ptr_emplace<v8::internal::OwnedVector<unsigned char const>, std::__1::allocator<v8::internal::OwnedVector<unsigned char const> > >::__on_zero_shared()",93957341626640,93957341626672],["v8::internal::wasm::DebugSideTable::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957341630576,93957341630754],["v8::internal::wasm::DebugInfo::GetStackDepth(unsigned long)",93957341631584,93957341631648],["v8::internal::wasm::DebugInfoImpl::GetExportName(v8::internal::wasm::ImportExportKindCode, unsigned int)",93957341631888,93957341632552],["v8::internal::wasm::DebugInfo::GetTypeName(int)",93957341633120,93957341633133],["v8::internal::wasm::DebugInfo::GetLocalName(int, int)",93957341633600,93957341633613],["v8::internal::wasm::DebugInfo::GetFieldName(int, int)",93957341634304,93957341634317],["v8::internal::wasm::DebugInfoImpl::SetBreakpoint(int, int, v8::internal::Isolate*)",93957341635008,93957341635486],["v8::internal::Builtin_GlobalEval(int, unsigned long*, v8::internal::Isolate*)",93957335859552,93957335859584],["v8::internal::Builtin_Impl_Stats_StringPrototypeToUpperCaseIntl(int, unsigned long*, v8::internal::Isolate*)",93957335863040,93957335863512],["v8::internal::Builtin_Impl_Stats_V8BreakIteratorSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335865008,93957335865636],["v8::internal::Builtin_Impl_Stats_NumberFormatPrototypeFormatToParts(int, unsigned long*, v8::internal::Isolate*)",93957335866576,93957335867048],["v8::internal::Builtin_Impl_Stats_DateTimeFormatPrototypeResolvedOptions(int, unsigned long*, v8::internal::Isolate*)",93957335867488,93957335867960],["v8::internal::Builtin_DateTimeFormatSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335868288,93957335868530],["v8::internal::Builtin_DateTimeFormatPrototypeFormatToParts(int, unsigned long*, v8::internal::Isolate*)",93957335869184,93957335869216],["v8::internal::Builtin_Impl_DateTimeFormatPrototypeFormatToParts(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335869696,93957335870391],["std::__1::__tree_node_base<void*>*& std::__1::__tree<v8::base::AddressRegion, v8::base::AddressRegion::StartAddressLess, std::__1::allocator<v8::base::AddressRegion> >::__find_equal<v8::base::AddressRegion>(std::__1::__tree_const_iterator<v8::base::AddressRegion, std::__1::__tree_node<v8::base::AddressRegion, void*>*, long>, std::__1::__tree_end_node<std::__1::__tree_node_base<void*>*>*&, std::__1::__tree_node_base<void*>*&, v8::base::AddressRegion const&)",93957341624448,93957341624882],["v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage::~NativeModuleWireBytesStorage()",93957341626832,93957341626905],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::pair<v8::internal::wasm::ExecutionTier, int>, v8::internal::wasm::WasmCode*>, std::__1::__tree_node<std::__1::__value_type<std::__1::pair<v8::internal::wasm::ExecutionTier, int>, v8::internal::wasm::WasmCode*>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::pair<v8::internal::wasm::ExecutionTier, int>, v8::internal::wasm::WasmCode*>, std::__1::__map_value_compare<std::__1::pair<v8::internal::wasm::ExecutionTier, int>, std::__1::__value_type<std::__1::pair<v8::internal::wasm::ExecutionTier, int>, v8::internal::wasm::WasmCode*>, std::__1::less<std::__1::pair<v8::internal::wasm::ExecutionTier, int> >, true>, std::__1::allocator<std::__1::__value_type<std::__1::pair<v8::internal::wasm::ExecutionTier, int>, v8::internal::wasm::WasmCode*> > >::__emplace_unique_impl<std::__1::pair<std::__1::pair<v8::internal::wasm::ExecutionTier, unsigned int>, v8::internal::wasm::WasmCode*> >(std::__1::pair<std::__1::pair<v8::internal::wasm::ExecutionTier, unsigned int>, v8::internal::wasm::WasmCode*>&&)",93957341630160,93957341630383],["v8::internal::wasm::DebugInfo::DebugInfo(v8::internal::wasm::NativeModule*)",93957341631200,93957341631337],["v8::internal::wasm::DebugInfo::GetLocalValue(int, unsigned long, unsigned long, unsigned long, v8::internal::Isolate*)",93957341631472,93957341631580],["v8::internal::wasm::DebugInfo::GetStackValue(int, unsigned long, unsigned long, unsigned long, v8::internal::Isolate*)",93957341631648,93957341631781],["v8::internal::wasm::DebugInfo::GetExportName(v8::internal::wasm::ImportExportKindCode, unsigned int)",93957341631872,93957341631885],["v8::internal::wasm::DebugInfo::GetImportName(v8::internal::wasm::ImportExportKindCode, unsigned int)",93957341632560,93957341632573],["v8::internal::Builtin_Impl_Stats_GlobalEncodeURIComponent(int, unsigned long*, v8::internal::Isolate*)",93957335857376,93957335857848],["v8::internal::Builtin_Impl_Stats_Illegal(int, unsigned long*, v8::internal::Isolate*)",93957335860768,93957335861122],["v8::internal::Builtin_Impl_Stats_StrictPoisonPillThrower(int, unsigned long*, v8::internal::Isolate*)",93957335862480,93957335863004],["v8::internal::Builtin_StringPrototypeNormalizeIntl(int, unsigned long*, v8::internal::Isolate*)",93957335863856,93957335863888],["v8::internal::Builtin_V8BreakIteratorSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335864752,93957335864994],["v8::internal::Builtin_NumberFormatSupportedLocalesOf(int, unsigned long*, v8::internal::Isolate*)",93957335865648,93957335865890],["v8::internal::Builtin_NumberFormatPrototypeFormatToParts(int, unsigned long*, v8::internal::Isolate*)",93957335866544,93957335866576],["v8::internal::Builtin_Impl_NumberFormatPrototypeFormatToParts(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335867056,93957335867452],["v8::internal::wasm::NativeModule::FreeCode(v8::internal::Vector<v8::internal::wasm::WasmCode* const>)",93957341623104,93957341623366],["std::__1::__tree<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >, std::__1::__map_value_compare<unsigned long, std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >, std::__1::less<unsigned long>, true>, std::__1::allocator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > > > >::destroy(std::__1::__tree_node<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >, void*>*)",93957341626400,93957341626511],["std::__1::__shared_ptr_emplace<v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage, std::__1::allocator<v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage> >::~__shared_ptr_emplace()",93957341626704,93957341626742],["v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage::GetCode(v8::internal::wasm::WireBytesRef) const",93957341626992,93957341627131],["bool std::__1::__insertion_sort_incomplete<v8::internal::wasm::NativeModule::TransferNewOwnedCodeLocked() const::$_0&, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*>(std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*, v8::internal::wasm::NativeModule::TransferNewOwnedCodeLocked() const::$_0&)",93957341629216,93957341630158],["std::__1::__tree<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >, std::__1::__map_value_compare<unsigned long, std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >, std::__1::less<unsigned long>, true>, std::__1::allocator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > > > >::erase(std::__1::__tree_const_iterator<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >, std::__1::__tree_node<std::__1::__value_type<unsigned long, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >, void*>*, long>)",93957341630384,93957341630571],["v8::internal::wasm::DebugSideTable::Entry::Print(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const",93957341630768,93957341631194],["v8::internal::wasm::DebugInfo::~DebugInfo()",93957341631344,93957341631394],["v8::internal::Builtin_Impl_GlobalDecodeURI(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335855648,93957335855866],["v8::internal::Builtin_Impl_GlobalEscape(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335858592,93957335858805],["v8::internal::Builtin_Impl_GlobalEval(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335860064,93957335860713],["v8::internal::Builtin_Impl_Stats_EmptyFunction(int, unsigned long*, v8::internal::Isolate*)",93957335861168,93957335861624],["v8::internal::Builtin_StrictPoisonPillThrower(int, unsigned long*, v8::internal::Isolate*)",93957335862320,93957335862475],["v8::internal::Builtin_StringPrototypeToUpperCaseIntl(int, unsigned long*, v8::internal::Isolate*)",93957335863008,93957335863040],["v8::internal::Builtin_Impl_StringPrototypeToUpperCaseIntl(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335863520,93957335863846],["v8::internal::Builtin_Impl_Stats_StringPrototypeNormalizeIntl(int, unsigned long*, v8::internal::Isolate*)",93957335863888,93957335864360],["v8::internal::wasm::WasmCodeManager::NewNativeModule(v8::internal::wasm::WasmEngine*, v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, unsigned long, std::__1::shared_ptr<v8::internal::wasm::WasmModule const>)",93957341619200,93957341620017],["v8::internal::wasm::NativeModuleModificationScope::~NativeModuleModificationScope()",93957341623792,93957341623880],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> > >, std::__1::__unordered_map_hasher<v8::internal::wasm::NativeModule*, std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> > >, std::__1::hash<v8::internal::wasm::NativeModule*>, std::__1::equal_to<v8::internal::wasm::NativeModule*>, true>, std::__1::__unordered_map_equal<v8::internal::wasm::NativeModule*, std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> > >, std::__1::equal_to<v8::internal::wasm::NativeModule*>, std::__1::hash<v8::internal::wasm::NativeModule*>, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::wasm::NativeModule*, std::__1::vector<v8::internal::wasm::WasmCode*, std::__1::allocator<v8::internal::wasm::WasmCode*> > > > >::__emplace_unique_key_args<v8::internal::wasm::NativeModule*, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::wasm::NativeModule*&&>, std::__1::tuple<> >(v8::internal::wasm::NativeModule* const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::wasm::NativeModule*&&>&&, std::__1::tuple<>&&)",93957341625056,93957341625951],["std::__1::__shared_ptr_emplace<v8::internal::OwnedVector<unsigned char const>, std::__1::allocator<v8::internal::OwnedVector<unsigned char const> > >::~__shared_ptr_emplace()",93957341626560,93957341626580],["std::__1::__shared_ptr_emplace<v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage, std::__1::allocator<v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage> >::~__shared_ptr_emplace()",93957341626672,93957341626692],["std::__1::__shared_ptr_emplace<v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage, std::__1::allocator<v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage> >::__on_zero_shared()",93957341626752,93957341626826],["v8::internal::wasm::(anonymous namespace)::NativeModuleWireBytesStorage::~NativeModuleWireBytesStorage()",93957341626912,93957341626988],["void std::__1::__sort<v8::internal::wasm::NativeModule::TransferNewOwnedCodeLocked() const::$_0&, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*>(std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*, std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >*, v8::internal::wasm::NativeModule::TransferNewOwnedCodeLocked() const::$_0&)",93957341627136,93957341628954],["v8::internal::Builtin_Impl_Stats_FunctionPrototypeBind(int, unsigned long*, v8::internal::Isolate*)",93957335847952,93957335848424],["v8::internal::Builtin_GlobalEncodeURI(int, unsigned long*, v8::internal::Isolate*)",93957335856608,93957335856640],["v8::internal::Builtin_GlobalEscape(int, unsigned long*, v8::internal::Isolate*)",93957335858080,93957335858112],["v8::internal::Builtin_Impl_Stats_GlobalUnescape(int, unsigned long*, v8::internal::Isolate*)",93957335858848,93957335859320],["v8::internal::Builtin_Impl_Stats_GlobalEval(int, unsigned long*, v8::internal::Isolate*)",93957335859584,93957335860056],["v8::internal::Builtin_Illegal(int, unsigned long*, v8::internal::Isolate*)",93957335860720,93957335860757],["v8::internal::Builtin_EmptyFunction(int, unsigned long*, v8::internal::Isolate*)",93957335861136,93957335861168],["v8::internal::Builtin_UnsupportedThrower(int, unsigned long*, v8::internal::Isolate*)",93957335861632,93957335861787],["v8::internal::wasm::NativeModule::GetFunctionIndexFromJumpTableSlot(unsigned long) const",93957341617760,93957341617943],["v8::internal::wasm::NativeModule::SetTieringState(v8::internal::wasm::TieringState)",93957341621584,93957341621667],["v8::internal::wasm::WasmCodeManager::LookupCode(unsigned long) const",93957341623456,93957341623690],["v8::internal::wasm::WasmCodeRefScope::~WasmCodeRefScope()",93957341623952,93957341624031],["std::__1::default_delete<v8::internal::wasm::WasmModuleSourceMap>::operator()(v8::internal::wasm::WasmModuleSourceMap*) const",93957341624896,93957341625054],["void std::__1::vector<v8::internal::VirtualMemory, std::__1::allocator<v8::internal::VirtualMemory> >::__emplace_back_slow_path<v8::internal::VirtualMemory>(v8::internal::VirtualMemory&&)",93957341625952,93957341626389],["std::__1::__shared_ptr_pointer<v8::internal::wasm::NativeModule*, std::__1::shared_ptr<v8::internal::wasm::NativeModule>::__shared_ptr_default_delete<v8::internal::wasm::NativeModule, v8::internal::wasm::NativeModule>, std::__1::allocator<v8::internal::wasm::NativeModule> >::__on_zero_shared()",93957341626512,93957341626556],["std::__1::__shared_ptr_emplace<v8::internal::OwnedVector<unsigned char const>, std::__1::allocator<v8::internal::OwnedVector<unsigned char const> > >::~__shared_ptr_emplace()",93957341626592,93957341626630],["v8::internal::Builtin_Impl_Stats_GeneratorFunctionConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335845696,93957335846254],["v8::internal::Builtin_Impl_FunctionPrototypeToString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335851440,93957335851810],["v8::internal::Builtin_Impl_Stats_GlobalDecodeURIComponent(int, unsigned long*, v8::internal::Isolate*)",93957335855904,93957335856376],["v8::internal::Builtin_Impl_GlobalEncodeURI(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335857120,93957335857338],["v8::internal::Builtin_Impl_GlobalEncodeURIComponent(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335857856,93957335858071],["v8::internal::Builtin_Impl_Stats_GlobalEscape(int, unsigned long*, v8::internal::Isolate*)",93957335858112,93957335858584],["v8::internal::Builtin_GlobalUnescape(int, unsigned long*, v8::internal::Isolate*)",93957335858816,93957335858848],["v8::internal::Builtin_Impl_GlobalUnescape(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335859328,93957335859541],["v8::internal::wasm::NativeModule::GetCode(unsigned int) const",93957341614880,93957341615008],["v8::internal::wasm::WasmCodeManager::EstimateLiftoffCodeSize(int)",93957341618848,93957341618865],["v8::internal::wasm::NativeModule::AddCompiledCode(v8::internal::wasm::WasmCompilationResult)",93957341620224,93957341620471],["v8::internal::wasm::NativeModule::RecompileForTiering()",93957341621744,93957341622086],["v8::internal::wasm::NativeModule::GetNumberOfCodeSpacesForTesting() const",93957341623376,93957341623446],["v8::internal::wasm::NativeModuleModificationScope::NativeModuleModificationScope(v8::internal::wasm::NativeModule*)",93957341623696,93957341623780],["v8::internal::wasm::WasmCodeRefScope::WasmCodeRefScope()",93957341623888,93957341623948],["void std::__1::set<v8::base::AddressRegion, v8::base::AddressRegion::StartAddressLess, std::__1::allocator<v8::base::AddressRegion> >::insert<v8::base::AddressRegion const*>(v8::base::AddressRegion const*, v8::base::AddressRegion const*)",93957341624032,93957341624439],["v8::internal::Builtin_ErrorCaptureStackTrace(int, unsigned long*, v8::internal::Isolate*)",93957335843008,93957335843040],["v8::internal::Builtin_AsyncGeneratorFunctionConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335847088,93957335847120],["v8::internal::Builtin_FunctionPrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335850928,93957335850960],["v8::internal::Builtin_GlobalDecodeURI(int, unsigned long*, v8::internal::Isolate*)",93957335855136,93957335855168],["v8::internal::Builtin_GlobalDecodeURIComponent(int, unsigned long*, v8::internal::Isolate*)",93957335855872,93957335855904],["v8::internal::Builtin_Impl_GlobalDecodeURIComponent(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335856384,93957335856599],["v8::internal::Builtin_Impl_Stats_GlobalEncodeURI(int, unsigned long*, v8::internal::Isolate*)",93957335856640,93957335857112],["v8::internal::Builtin_GlobalEncodeURIComponent(int, unsigned long*, v8::internal::Isolate*)",93957335857344,93957335857376],["v8::internal::wasm::NativeModule::PublishCode(v8::internal::Vector<std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >)",93957341612784,93957341613602],["v8::internal::wasm::NativeModule::TransferNewOwnedCodeLocked() const",93957341616944,93957341617334],["v8::internal::wasm::NativeModule::~NativeModule()",93957341618112,93957341618781],["v8::internal::wasm::WasmCodeManager::EstimateNativeModuleCodeSize(int, int, int, bool)",93957341619040,93957341619144],["v8::internal::wasm::NativeModule::SampleCodeSize(v8::internal::Counters*, v8::internal::wasm::NativeModule::CodeSamplingTime) const",93957341620032,93957341620212],["v8::internal::wasm::NativeModule::AddCompiledCode(v8::internal::Vector<v8::internal::wasm::WasmCompilationResult>)",93957341620480,93957341621584],["v8::internal::wasm::NativeModule::IsTieredDown()",93957341621680,93957341621730],["v8::internal::wasm::NativeModule::FindFunctionsToRecompile(v8::internal::wasm::TieringState)",93957341622096,93957341623091],["v8::internal::DateParser::DateToken v8::internal::DateParser::ParseES5DateTime<unsigned short const>(v8::internal::DateParser::DateStringTokenizer<unsigned short const>*, v8::internal::DateParser::DayComposer*, v8::internal::DateParser::TimeComposer*, v8::internal::DateParser::TimeZoneComposer*)",93957335839744,93957335841123],["v8::internal::Builtin_Impl_Stats_ErrorPrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335844256,93957335844808],["v8::internal::Builtin_Impl_Stats_AsyncFunctionConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335846288,93957335846760],["v8::internal::Builtin_Impl_AsyncGeneratorFunctionConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335847600,93957335847908],["v8::internal::Builtin_Impl_FunctionPrototypeBind(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335848432,93957335850914],["v8::internal::Builtin_Impl_Stats_FunctionPrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335850960,93957335851432],["v8::internal::(anonymous namespace)::CreateDynamicFunction(v8::internal::Isolate*, v8::internal::BuiltinArguments, char const*)",93957335851824,93957335855135],["v8::internal::Builtin_Impl_Stats_GlobalDecodeURI(int, unsigned long*, v8::internal::Isolate*)",93957335855168,93957335855640],["v8::internal::wasm::NativeModule::GetNearRuntimeStubEntry(v8::internal::wasm::WasmCode::RuntimeStubId, v8::internal::wasm::NativeModule::JumpTablesRef const&) const",93957341609184,93957341609199],["v8::internal::wasm::NativeModule::ReinstallDebugCode(v8::internal::wasm::WasmCode*)",93957341613840,93957341614150],["v8::internal::wasm::JumpTableAssembler::GenerateFarJumpTable(unsigned long, unsigned long*, int, int)",93957341615792,93957341616589],["v8::internal::wasm::NativeModule::GetJumpTableOffset(unsigned int) const",93957341617632,93957341617681],["v8::internal::wasm::NativeModule::GetRuntimeStubId(unsigned long) const",93957341617952,93957341618102],["v8::internal::wasm::WasmCodeManager::WasmCodeManager(unsigned long)",93957341618784,93957341618842],["v8::internal::wasm::WasmCodeManager::EstimateNativeModuleCodeSize(v8::internal::wasm::WasmModule const*, bool)",93957341618880,93957341619034],["v8::internal::wasm::WasmCodeManager::EstimateNativeModuleMetaDataSize(v8::internal::wasm::WasmModule const*)",93957341619152,93957341619193],["bool v8::internal::DateParser::Parse<unsigned char const>(v8::internal::Isolate*, v8::internal::Vector<unsigned char const>, double*)",93957335834096,93957335835679],["v8::internal::DateParser::InputReader<unsigned short const>::SkipWhiteSpace()",93957335841984,93957335842086],["v8::internal::Builtin_Impl_ErrorCaptureStackTrace(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335843520,93957335844087],["v8::internal::Builtin_Impl_Stats_FunctionConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335844976,93957335845534],["v8::internal::Builtin_AsyncFunctionConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335846256,93957335846288],["v8::internal::Builtin_Impl_AsyncFunctionConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335846768,93957335847076],["v8::internal::Builtin_Impl_Stats_AsyncGeneratorFunctionConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335847120,93957335847592],["v8::internal::Builtin_FunctionPrototypeBind(int, unsigned long*, v8::internal::Isolate*)",93957335847920,93957335847952],["v8::internal::wasm::WasmCodeManager::AssignRange(v8::base::AddressRegion, v8::internal::wasm::NativeModule*)",93957341605136,93957341605372],["v8::internal::wasm::NativeModule::AddCode(int, v8::internal::CodeDesc const&, int, int, v8::internal::Vector<unsigned char const>, v8::internal::Vector<unsigned char const>, v8::internal::wasm::WasmCode::Kind, v8::internal::wasm::ExecutionTier, v8::internal::wasm::ForDebugging)",93957341610832,93957341611044],["v8::internal::wasm::WasmCodeRefScope::AddRef(v8::internal::wasm::WasmCode*)",93957341613664,93957341613723],["v8::internal::wasm::NativeModule::AddDeserializedCode(int, v8::internal::Vector<unsigned char>, int, int, int, int, int, int, int, v8::internal::Vector<unsigned char const>, v8::internal::Vector<unsigned char const>, v8::internal::Vector<unsigned char const>, v8::internal::wasm::WasmCode::Kind, v8::internal::wasm::ExecutionTier)",93957341614224,93957341614603],["v8::internal::wasm::JumpTableAssembler::PatchJumpTableSlot(unsigned long, unsigned long, unsigned long)",93957341615008,93957341615792],["v8::internal::wasm::NativeModule::SetWireBytes(v8::internal::OwnedVector<unsigned char const>)",93957341616592,93957341616935],["v8::internal::wasm::NativeModule::Lookup(unsigned long) const",93957341617344,93957341617620],["v8::internal::wasm::NativeModule::GetCallTargetForFunction(unsigned int) const",93957341617696,93957341617756],["v8::internal::Builtin_Impl_DatePrototypeToJson(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335830176,93957335830954],["v8::internal::DateParser::DateStringTokenizer<unsigned char const>::Scan()",93957335838720,93957335839331],["v8::internal::DateParser::DateStringTokenizer<unsigned short const>::Scan()",93957335841200,93957335841828],["v8::internal::Builtin_ErrorConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335842240,93957335842427],["v8::internal::Builtin_Impl_Stats_ErrorCaptureStackTrace(int, unsigned long*, v8::internal::Isolate*)",93957335843040,93957335843512],["v8::internal::Builtin_ErrorPrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335844096,93957335844254],["v8::internal::Builtin_FunctionConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335844816,93957335844976],["v8::internal::Builtin_GeneratorFunctionConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335845536,93957335845696],["std::__1::vector<v8::internal::VirtualMemory, std::__1::allocator<v8::internal::VirtualMemory> >::reserve(unsigned long)",93957341601904,93957341602208],["v8::internal::wasm::NativeModule::CreateEmptyJumpTableInRegion(int, v8::base::AddressRegion, v8::internal::wasm::WasmCodeAllocator::OptionalLock const&)",93957341607712,93957341607911],["v8::internal::wasm::NativeModule::UseLazyStub(unsigned int)",93957341609568,93957341610070],["v8::internal::wasm::NativeModule::GetNearCallTargetForFunction(unsigned int, v8::internal::wasm::NativeModule::JumpTablesRef const&) const",93957341611968,93957341612020],["v8::internal::wasm::GetCodeKind(v8::internal::wasm::WasmCompilationResult const&)",93957341613616,93957341613659],["v8::internal::wasm::NativeModule::InsertToCodeCache(v8::internal::wasm::WasmCode*)",93957341613728,93957341613832],["v8::internal::wasm::NativeModule::AllocateForDeserializedCode(unsigned long)",93957341614160,93957341614210],["v8::internal::wasm::NativeModule::SnapshotCodeTable() const",93957341614608,93957341614876],["v8::internal::Builtin_DatePrototypeGetYear(int, unsigned long*, v8::internal::Isolate*)",93957335826912,93957335826944],["v8::internal::SmallStringOptimizedAllocator<128ul>::allocate(unsigned int)",93957335833408,93957335833482],["v8::internal::DateParser::DateToken v8::internal::DateParser::ParseES5DateTime<unsigned char const>(v8::internal::DateParser::DateStringTokenizer<unsigned char const>*, v8::internal::DateParser::DayComposer*, v8::internal::DateParser::TimeComposer*, v8::internal::DateParser::TimeZoneComposer*)",93957335837264,93957335838643],["v8::internal::DateParser::InputReader<unsigned char const>::SkipWhiteSpace()",93957335839488,93957335839590],["v8::internal::DateParser::DateStringTokenizer<unsigned short const>::SkipSymbol(char)",93957335841136,93957335841190],["v8::internal::DateParser::InputReader<unsigned short const>::ReadWord(unsigned int*, int)",93957335841840,93957335841978],["v8::internal::DateParser::InputReader<unsigned short const>::SkipParentheses()",93957335842096,93957335842225],["v8::internal::Builtin_Impl_Stats_ErrorConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335842432,93957335843008],["v8::internal::wasm::WasmCode::Disassemble(char const*, std::__1::basic_ostream<char, std::__1::char_traits<char> >&, unsigned long) const",93957341600304,93957341600773],["v8::internal::wasm::NativeModule::AddCodeSpace(v8::base::AddressRegion, v8::internal::wasm::WasmCodeAllocator::OptionalLock const&)",93957341602864,93957341603903],["v8::internal::wasm::WasmCodeAllocator::FreeCode(v8::internal::Vector<v8::internal::wasm::WasmCode* const>)",93957341605680,93957341606494],["v8::internal::wasm::NativeModule::CreateCompilationEnv() const",93957341608656,93957341608799],["v8::internal::wasm::NativeModule::PublishCode(std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >)",93957341609200,93957341609566],["v8::internal::wasm::JumpTableAssembler::GenerateLazyCompileTable(unsigned long, unsigned int, unsigned int, unsigned long)",93957341610080,93957341610829],["v8::internal::wasm::NativeModule::AddCodeWithCodeSpace(int, v8::internal::CodeDesc const&, int, int, v8::internal::Vector<unsigned char const>, v8::internal::Vector<unsigned char const>, v8::internal::wasm::WasmCode::Kind, v8::internal::wasm::ExecutionTier, v8::internal::wasm::ForDebugging, v8::internal::Vector<unsigned char>, v8::internal::wasm::NativeModule::JumpTablesRef const&)",93957341611056,93957341611965],["v8::internal::wasm::NativeModule::PublishCodeLocked(std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >)",93957341612032,93957341612781],["v8::internal::Builtin_Impl_Stats_DatePrototypeToLocaleString(int, unsigned long*, v8::internal::Isolate*)",93957335823904,93957335824376],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetYear(int, unsigned long*, v8::internal::Isolate*)",93957335827872,93957335828344],["v8::internal::(anonymous namespace)::ParseDateTimeString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957335832160,93957335833344],["v8::base::SmallVector<char, 128ul>::Grow(unsigned long)",93957335833600,93957335833732],["bool v8::internal::DateParser::Parse<unsigned short const>(v8::internal::Isolate*, v8::internal::Vector<unsigned short const>, double*)",93957335835680,93957335837263],["v8::internal::DateParser::DateStringTokenizer<unsigned char const>::SkipSymbol(char)",93957335838656,93957335838710],["v8::internal::DateParser::InputReader<unsigned char const>::ReadWord(unsigned int*, int)",93957335839344,93957335839482],["v8::internal::DateParser::InputReader<unsigned char const>::SkipParentheses()",93957335839600,93957335839729],["v8::internal::wasm::DisjointAllocationPool::AllocateInRegion(unsigned long, v8::base::AddressRegion)",93957341597552,93957341598398],["v8::internal::wasm::WasmCode::DecRefOnPotentiallyDeadCode()",93957341601040,93957341601091],["v8::internal::wasm::WasmCodeAllocator::~WasmCodeAllocator()",93957341602304,93957341602543],["v8::internal::wasm::(anonymous namespace)::ReservationSize(unsigned long, int, unsigned long)",93957341604768,93957341604866],["v8::internal::wasm::WasmCodeAllocator::SetExecutable(bool)",93957341605376,93957341605673],["v8::internal::wasm::NativeModule::NativeModule(v8::internal::wasm::WasmEngine*, v8::internal::wasm::WasmFeatures const&, v8::internal::VirtualMemory, std::__1::shared_ptr<v8::internal::wasm::WasmModule const>, std::__1::shared_ptr<v8::internal::Counters>, std::__1::shared_ptr<v8::internal::wasm::NativeModule>*)",93957341606496,93957341607709],["v8::internal::wasm::NativeModule::LogWasmCodes(v8::internal::Isolate*, v8::internal::Script)",93957341607920,93957341608643],["v8::internal::wasm::NativeModule::FindJumpTablesForRegion(v8::base::AddressRegion) const",93957341608800,93957341609171],["v8::internal::Builtin_Impl_DatePrototypeToString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335821504,93957335821965],["v8::internal::Builtin_Impl_DatePrototypeToLocaleTimeString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335825312,93957335825727],["v8::internal::Builtin_Impl_DatePrototypeGetYear(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335827424,93957335827827],["v8::internal::Builtin_DatePrototypeToJson(int, unsigned long*, v8::internal::Isolate*)",93957335829664,93957335829696],["v8::internal::(anonymous namespace)::ToDateString(double, v8::internal::DateCache*, v8::internal::(anonymous namespace)::ToDateStringMode)",93957335830960,93957335832148],["v8::internal::Object::ToNumber(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957335833344,93957335833395],["v8::internal::SmallStringOptimizedAllocator<128ul>::grow(unsigned int*)",93957335833488,93957335833587],["v8::internal::DateCache::EquivalentTime(long)",93957335833744,93957335834095],["v8::internal::wasm::SyncStreamingDecoder::~SyncStreamingDecoder()",93957341594560,93957341594785],["v8::internal::wasm::WasmCode::LogCode(v8::internal::Isolate*, char const*, int) const",93957341598560,93957341599699],["v8::internal::wasm::NativeModule::GetDebugInfo()",93957341600848,93957341600975],["v8::internal::wasm::WasmCode::GetSourcePositionBefore(int)",93957341601440,93957341601604],["void std::__1::vector<v8::internal::VirtualMemory, std::__1::allocator<v8::internal::VirtualMemory> >::emplace_back<v8::internal::VirtualMemory>(v8::internal::VirtualMemory&&)",93957341602208,93957341602289],["v8::internal::wasm::WasmCodeManager::FreeNativeModule(v8::internal::Vector<v8::internal::VirtualMemory>, unsigned long)",93957341602544,93957341602850],["v8::internal::wasm::WasmCodeAllocator::AllocateForCodeInRegion(v8::internal::wasm::NativeModule*, unsigned long, v8::base::AddressRegion, v8::internal::wasm::WasmCodeAllocator::OptionalLock const&)",93957341603904,93957341604767],["v8::internal::wasm::WasmCodeManager::TryAllocate(unsigned long, void*)",93957341604880,93957341605124],["v8::internal::Builtin_DatePrototypeToDateString(int, unsigned long*, v8::internal::Isolate*)",93957335818768,93957335818800],["v8::internal::Builtin_DatePrototypeToLocaleDateString(int, unsigned long*, v8::internal::Isolate*)",93957335822944,93957335822976],["v8::internal::Builtin_DatePrototypeToLocaleTimeString(int, unsigned long*, v8::internal::Isolate*)",93957335824800,93957335824832],["v8::internal::Builtin_Impl_Stats_DatePrototypeToUTCString(int, unsigned long*, v8::internal::Isolate*)",93957335825760,93957335826232],["v8::internal::Builtin_Impl_Stats_DatePrototypeGetYear(int, unsigned long*, v8::internal::Isolate*)",93957335826944,93957335827416],["v8::internal::Builtin_DatePrototypeSetYear(int, unsigned long*, v8::internal::Isolate*)",93957335827840,93957335827872],["v8::internal::Builtin_Impl_DatePrototypeSetYear(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335828352,93957335829650],["v8::internal::Builtin_Impl_Stats_DatePrototypeToJson(int, unsigned long*, v8::internal::Isolate*)",93957335829696,93957335830168],["void std::__1::__function::__policy::__large_destroy<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::TopTierCompiledCallback, void (v8::internal::wasm::CompilationEvent)> >(void*)",93957341594016,93957341594072],["v8::internal::wasm::SyncStreamingDecoder::NotifyCompilationEnded()",93957341595936,93957341596032],["v8::internal::wasm::WasmCode::handler_table_size() const",93957341598416,93957341598428],["v8::internal::wasm::WasmCode::MaybePrint(char const*) const",93957341599728,93957341599795],["v8::internal::wasm::NativeModule::HasDebugInfo() const",93957341600784,93957341600835],["v8::internal::wasm::WasmCode::~WasmCode()",93957341600976,93957341601028],["v8::internal::wasm::WasmCode::DecrementRefCount(v8::internal::Vector<v8::internal::wasm::WasmCode* const>)",93957341601104,93957341601436],["v8::internal::wasm::WasmCodeAllocator::WasmCodeAllocator(v8::internal::wasm::WasmCodeManager*, v8::internal::VirtualMemory, std::__1::shared_ptr<v8::internal::Counters>)",93957341601616,93957341601897],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetUTCMinutes(int, unsigned long*, v8::internal::Isolate*)",93957335813488,93957335813960],["v8::internal::Builtin_Impl_Stats_DatePrototypeToISOString(int, unsigned long*, v8::internal::Isolate*)",93957335819776,93957335820248],["v8::internal::Builtin_Impl_Stats_DatePrototypeToTimeString(int, unsigned long*, v8::internal::Isolate*)",93957335822000,93957335822472],["v8::internal::Builtin_Impl_DatePrototypeToLocaleDateString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335823456,93957335823862],["v8::internal::Builtin_Impl_DatePrototypeToLocaleString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335824384,93957335824799],["v8::internal::Builtin_Impl_Stats_DatePrototypeToLocaleTimeString(int, unsigned long*, v8::internal::Isolate*)",93957335824832,93957335825304],["v8::internal::Builtin_DatePrototypeToUTCString(int, unsigned long*, v8::internal::Isolate*)",93957335825728,93957335825760],["v8::internal::Builtin_Impl_DatePrototypeToUTCString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335826240,93957335826900],["v8::internal::wasm::AsyncStreamingDecoder::DecodeVarInt32::buffer()",93957341593568,93957341593583],["v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer::~SectionBuffer()",93957341594176,93957341594218],["v8::internal::wasm::SyncStreamingDecoder::OnBytesReceived(v8::internal::Vector<unsigned char const>)",93957341595024,93957341595242],["v8::internal::wasm::WasmReturnTypeFromSignature(v8::internal::Signature<v8::internal::wasm::ValueType> const*)",93957341596544,93957341596612],["v8::internal::wasm::WasmCode::handler_table() const",93957341598400,93957341598414],["v8::internal::wasm::WasmCode::ShouldBeLogged(v8::internal::Isolate*)",93957341598432,93957341598546],["v8::internal::wasm::NativeModule::GetWasmSourceMap() const",93957341599712,93957341599725],["v8::internal::wasm::WasmCode::Print(char const*) const",93957341599808,93957341600303],["v8::internal::Builtin_Impl_DatePrototypeSetUTCFullYear(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335808544,93957335809918],["v8::internal::Builtin_Impl_DatePrototypeSetUTCMonth(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335815872,93957335817032],["v8::internal::Builtin_Impl_DatePrototypeToDateString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335819280,93957335819738],["v8::internal::Builtin_DatePrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335820992,93957335821024],["v8::internal::Builtin_DatePrototypeToTimeString(int, unsigned long*, v8::internal::Isolate*)",93957335821968,93957335822000],["v8::internal::Builtin_Impl_DatePrototypeToTimeString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335822480,93957335822941],["v8::internal::Builtin_Impl_Stats_DatePrototypeToLocaleDateString(int, unsigned long*, v8::internal::Isolate*)",93957335822976,93957335823448],["v8::internal::Builtin_DatePrototypeToLocaleString(int, unsigned long*, v8::internal::Isolate*)",93957335823872,93957335823904],["v8::internal::wasm::AsyncStreamingDecoder::DecodeSectionPayload::Next(v8::internal::wasm::AsyncStreamingDecoder*)",93957341591376,93957341591520],["v8::internal::wasm::AsyncStreamingDecoder::DecodeModuleHeader::buffer()",93957341593664,93957341593679],["std::__1::__shared_ptr_emplace<v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer, std::__1::allocator<v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer> >::~__shared_ptr_emplace()",93957341594112,93957341594150],["v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer::GetCode(v8::internal::wasm::WireBytesRef) const",93957341594288,93957341594320],["v8::internal::wasm::SyncStreamingDecoder::~SyncStreamingDecoder()",93957341594800,93957341595022],["v8::internal::wasm::SyncStreamingDecoder::Finish()",93957341595248,93957341595930],["void std::__1::vector<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >, std::__1::allocator<std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > >::__emplace_back_slow_path<unsigned long>(unsigned long&&)",93957341596032,93957341596529],["v8::internal::wasm::DisjointAllocationPool::Merge(v8::base::AddressRegion)",93957341596624,93957341597547],["v8::internal::Builtin_DatePrototypeSetTime(int, unsigned long*, v8::internal::Isolate*)",93957335805600,93957335805632],["v8::internal::Builtin_DatePrototypeSetUTCMilliseconds(int, unsigned long*, v8::internal::Isolate*)",93957335811952,93957335811984],["v8::internal::Builtin_DatePrototypeSetUTCMonth(int, unsigned long*, v8::internal::Isolate*)",93957335815360,93957335815392],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetUTCSeconds(int, unsigned long*, v8::internal::Isolate*)",93957335817072,93957335817544],["v8::internal::Builtin_Impl_Stats_DatePrototypeToDateString(int, unsigned long*, v8::internal::Isolate*)",93957335818800,93957335819272],["v8::internal::Builtin_DatePrototypeToISOString(int, unsigned long*, v8::internal::Isolate*)",93957335819744,93957335819776],["v8::internal::Builtin_Impl_DatePrototypeToISOString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335820256,93957335820984],["v8::internal::Builtin_Impl_Stats_DatePrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335821024,93957335821496],["v8::internal::wasm::AsyncStreamingDecoder::Abort()",93957341588464,93957341588540],["v8::internal::wasm::StreamingDecoder::CreateAsyncStreamingDecoder(std::__1::unique_ptr<v8::internal::wasm::StreamingProcessor, std::__1::default_delete<v8::internal::wasm::StreamingProcessor> >)",93957341593040,93957341593215],["v8::internal::wasm::AsyncStreamingDecoder::DecodeSectionPayload::buffer()",93957341593600,93957341593628],["void std::__1::__function::__policy_invoker<void (v8::internal::wasm::CompilationEvent)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::TopTierCompiledCallback, void (v8::internal::wasm::CompilationEvent)> >(std::__1::__function::__policy_storage const*, v8::internal::wasm::CompilationEvent)",93957341593760,93957341593882],["std::__1::__shared_ptr_emplace<v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer, std::__1::allocator<v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer> >::~__shared_ptr_emplace()",93957341594080,93957341594100],["std::__1::__shared_ptr_emplace<v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer, std::__1::allocator<v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer> >::__on_zero_shared()",93957341594160,93957341594175],["v8::internal::wasm::AsyncStreamingDecoder::SectionBuffer::~SectionBuffer()",93957341594224,93957341594279],["v8::internal::wasm::StreamingDecoder::CreateSyncStreamingDecoder(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, v8::internal::Handle<v8::internal::Context>, char const*, std::__1::shared_ptr<v8::internal::wasm::CompilationResultResolver>)",93957341594320,93957341594549],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetMinutes(int, unsigned long*, v8::internal::Isolate*)",93957335799968,93957335800440],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetUTCDate(int, unsigned long*, v8::internal::Isolate*)",93957335806544,93957335807016],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetUTCHours(int, unsigned long*, v8::internal::Isolate*)",93957335809952,93957335810424],["v8::internal::Builtin_Impl_DatePrototypeSetUTCMilliseconds(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335812464,93957335813456],["v8::internal::Builtin_Impl_DatePrototypeSetUTCMinutes(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335813968,93957335815351],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetUTCMonth(int, unsigned long*, v8::internal::Isolate*)",93957335815392,93957335815864],["v8::internal::Builtin_DatePrototypeSetUTCSeconds(int, unsigned long*, v8::internal::Isolate*)",93957335817040,93957335817072],["v8::internal::Builtin_Impl_DatePrototypeSetUTCSeconds(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335817552,93957335818762],["v8::internal::wasm::SimdShuffle::PackShuffle4(unsigned char*)",93957341587344,93957341587384],["v8::internal::wasm::AsyncStreamingDecoder::DecodeModuleHeader::Next(v8::internal::wasm::AsyncStreamingDecoder*)",93957341590144,93957341590273],["v8::internal::wasm::AsyncStreamingDecoder::DecodeFunctionLength::NextWithValue(v8::internal::wasm::AsyncStreamingDecoder*)",93957341592192,93957341592636],["v8::internal::wasm::AsyncStreamingDecoder::~AsyncStreamingDecoder()",93957341593488,93957341593516],["v8::internal::wasm::AsyncStreamingDecoder::DecodeSectionID::buffer()",93957341593584,93957341593599],["v8::internal::wasm::AsyncStreamingDecoder::DecodeFunctionBody::buffer()",93957341593632,93957341593654],["v8::internal::wasm::StreamingDecoder::~StreamingDecoder()",93957341593680,93957341593746],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::TopTierCompiledCallback, void (v8::internal::wasm::CompilationEvent)> >(void const*)",93957341593888,93957341594005],["v8::internal::Builtin_Impl_DatePrototypeSetFullYear(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335794688,93957335796152],["v8::internal::Builtin_Impl_DatePrototypeSetMonth(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335802496,93957335803754],["v8::internal::Builtin_Impl_DatePrototypeSetTime(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335806112,93957335806497],["v8::internal::Builtin_DatePrototypeSetUTCFullYear(int, unsigned long*, v8::internal::Isolate*)",93957335808032,93957335808064],["v8::internal::Builtin_DatePrototypeSetUTCHours(int, unsigned long*, v8::internal::Isolate*)",93957335809920,93957335809952],["v8::internal::Builtin_Impl_DatePrototypeSetUTCHours(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335810432,93957335811942],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetUTCMilliseconds(int, unsigned long*, v8::internal::Isolate*)",93957335811984,93957335812456],["v8::internal::Builtin_DatePrototypeSetUTCMinutes(int, unsigned long*, v8::internal::Isolate*)",93957335813456,93957335813488],["std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::find<v8::internal::Signature<v8::internal::wasm::ValueType> >(v8::internal::Signature<v8::internal::wasm::ValueType> const&) const",93957341585072,93957341585792],["v8::internal::wasm::SimdSwizzle::AllInRangeOrTopBitSet(std::__1::array<unsigned char, 16ul>)",93957341587584,93957341587685],["v8::internal::wasm::AsyncStreamingDecoder::DecodeVarInt32::ReadBytes(v8::internal::wasm::AsyncStreamingDecoder*, v8::internal::Vector<unsigned char const>)",93957341588944,93957341589371],["v8::internal::wasm::AsyncStreamingDecoder::DecodeSectionLength::NextWithValue(v8::internal::wasm::AsyncStreamingDecoder*)",93957341590576,93957341591062],["v8::internal::wasm::AsyncStreamingDecoder::DecodeNumberOfFunctions::NextWithValue(v8::internal::wasm::AsyncStreamingDecoder*)",93957341591520,93957341592179],["v8::internal::wasm::AsyncStreamingDecoder::DecodeFunctionBody::Next(v8::internal::wasm::AsyncStreamingDecoder*)",93957341592640,93957341593035],["v8::internal::wasm::AsyncStreamingDecoder::~AsyncStreamingDecoder()",93957341593216,93957341593473],["v8::internal::wasm::AsyncStreamingDecoder::NotifyCompilationEnded()",93957341593520,93957341593553],["v8::internal::Builtin_DateUTC(int, unsigned long*, v8::internal::Isolate*)",93957335789520,93957335789552],["v8::internal::Builtin_DatePrototypeSetMilliseconds(int, unsigned long*, v8::internal::Isolate*)",93957335798304,93957335798336],["v8::internal::Builtin_DatePrototypeSetMonth(int, unsigned long*, v8::internal::Isolate*)",93957335801984,93957335802016],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetSeconds(int, unsigned long*, v8::internal::Isolate*)",93957335803792,93957335804264],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetTime(int, unsigned long*, v8::internal::Isolate*)",93957335805632,93957335806104],["v8::internal::Builtin_DatePrototypeSetUTCDate(int, unsigned long*, v8::internal::Isolate*)",93957335806512,93957335806544],["v8::internal::Builtin_Impl_DatePrototypeSetUTCDate(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335807024,93957335808028],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetUTCFullYear(int, unsigned long*, v8::internal::Isolate*)",93957335808064,93957335808536],["v8::internal::metrics::Recorder::DelayedEvent<v8::metrics::WasmModuleInstantiated>::Run(std::__1::shared_ptr<v8::internal::metrics::Recorder> const&)",93957341582064,93957341582106],["v8::internal::wasm::SimdShuffle::TryMatchConcat(unsigned char const*, unsigned char*)",93957341586192,93957341586677],["v8::internal::wasm::SimdShuffle::PackBlend4(unsigned char const*)",93957341587488,93957341587552],["v8::internal::wasm::AsyncStreamingDecoder::DecodingState::ReadBytes(v8::internal::wasm::AsyncStreamingDecoder*, v8::internal::Vector<unsigned char const>)",93957341587952,93957341588028],["v8::internal::wasm::AsyncStreamingDecoder::NotifyNativeModuleCreated(std::__1::shared_ptr<v8::internal::wasm::NativeModule> const&)",93957341588544,93957341588939],["v8::internal::wasm::AsyncStreamingDecoder::DecodeVarInt32::Next(v8::internal::wasm::AsyncStreamingDecoder*)",93957341589376,93957341590134],["v8::internal::wasm::AsyncStreamingDecoder::DecodeSectionID::Next(v8::internal::wasm::AsyncStreamingDecoder*)",93957341590288,93957341590574],["v8::internal::wasm::AsyncStreamingDecoder::CreateNewBuffer(unsigned int, unsigned char, unsigned long, v8::internal::Vector<unsigned char const>)",93957341591072,93957341591367],["v8::internal::Builtin_DateConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335784064,93957335784096],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetDate(int, unsigned long*, v8::internal::Isolate*)",93957335792592,93957335793064],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetHours(int, unsigned long*, v8::internal::Isolate*)",93957335796192,93957335796664],["v8::internal::Builtin_Impl_DatePrototypeSetMilliseconds(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335798816,93957335799931],["v8::internal::Builtin_Impl_DatePrototypeSetMinutes(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335800448,93957335801975],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetMonth(int, unsigned long*, v8::internal::Isolate*)",93957335802016,93957335802488],["v8::internal::Builtin_DatePrototypeSetSeconds(int, unsigned long*, v8::internal::Isolate*)",93957335803760,93957335803792],["v8::internal::Builtin_Impl_DatePrototypeSetSeconds(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335804272,93957335805589],["v8::internal::wasm::InstanceBuilder::ProcessImportedTable(v8::internal::Handle<v8::internal::WasmInstanceObject>, int, int, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957341575904,93957341576749],["v8::internal::wasm::SignatureMap::Find(v8::internal::Signature<v8::internal::wasm::ValueType> const&) const",93957341582624,93957341582654],["v8::internal::wasm::SimdShuffle::TryMatchIdentity(unsigned char const*)",93957341585968,93957341586074],["v8::internal::wasm::SimdShuffle::TryMatch16x8Shuffle(unsigned char const*, unsigned char*)",93957341586944,93957341587170],["v8::internal::wasm::SimdShuffle::PackBlend8(unsigned char const*)",93957341587392,93957341587487],["v8::internal::wasm::SimdShuffle::Pack16Lanes(unsigned int*, unsigned char const*)",93957341587552,93957341587580],["v8::internal::wasm::AsyncStreamingDecoder::OnBytesReceived(v8::internal::Vector<unsigned char const>)",93957341587696,93957341587942],["v8::internal::wasm::AsyncStreamingDecoder::Finish()",93957341588032,93957341588462],["v8::internal::Builtin_Impl_ConsoleContext(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335778240,93957335779653],["v8::internal::Builtin_Impl_Stats_DateNow(int, unsigned long*, v8::internal::Isolate*)",93957335787920,93957335788614],["v8::internal::Builtin_Impl_DateUTC(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335790032,93957335792560],["v8::internal::Builtin_DatePrototypeSetFullYear(int, unsigned long*, v8::internal::Isolate*)",93957335794176,93957335794208],["v8::internal::Builtin_DatePrototypeSetHours(int, unsigned long*, v8::internal::Isolate*)",93957335796160,93957335796192],["v8::internal::Builtin_Impl_DatePrototypeSetHours(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335796672,93957335798289],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetMilliseconds(int, unsigned long*, v8::internal::Isolate*)",93957335798336,93957335798808],["v8::internal::Builtin_DatePrototypeSetMinutes(int, unsigned long*, v8::internal::Isolate*)",93957335799936,93957335799968],["v8::internal::JSFunction::set_context(v8::internal::HeapObject)",93957341571936,93957341572059],["v8::internal::wasm::InstanceBuilder::CompileImportWrappers(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341579504,93957341580209],["v8::internal::wasm::(anonymous namespace)::CompileImportWrapperJob::GetMaxConcurrency(unsigned long) const",93957341582336,93957341582413],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::rehash(unsigned long)",93957341583904,93957341584275],["v8::internal::wasm::SimdShuffle::CanonicalizeShuffle(bool, unsigned char*, bool*, bool*)",93957341585792,93957341585961],["v8::internal::wasm::SimdShuffle::TryMatch32x4Rotate(unsigned char const*, unsigned char*, bool)",93957341586080,93957341586178],["v8::internal::wasm::SimdShuffle::TryMatch32x4Shuffle(unsigned char const*, unsigned char*)",93957341586688,93957341586942],["v8::internal::wasm::SimdShuffle::TryMatchBlend(unsigned char const*)",93957341587184,93957341587343],["v8::internal::Builtin_ConsoleTime(int, unsigned long*, v8::internal::Isolate*)",93957335775680,93957335775806],["v8::internal::Builtin_DataViewConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335782304,93957335782336],["v8::internal::Builtin_Impl_DateConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335784576,93957335787596],["v8::internal::Builtin_Impl_Stats_DateParse(int, unsigned long*, v8::internal::Isolate*)",93957335788656,93957335789128],["v8::internal::Builtin_Impl_Stats_DateUTC(int, unsigned long*, v8::internal::Isolate*)",93957335789552,93957335790024],["v8::internal::Builtin_DatePrototypeSetDate(int, unsigned long*, v8::internal::Isolate*)",93957335792560,93957335792592],["v8::internal::Builtin_Impl_DatePrototypeSetDate(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335793072,93957335794171],["v8::internal::Builtin_Impl_Stats_DatePrototypeSetFullYear(int, unsigned long*, v8::internal::Isolate*)",93957335794208,93957335794680],["v8::internal::wasm::InstanceBuilder::AllocateMemory()",93957341563600,93957341563853],["v8::internal::wasm::InstanceBuilder::WriteGlobalValue(v8::internal::wasm::WasmGlobal const&, long)",93957341573552,93957341573603],["v8::internal::wasm::InstanceBuilder::ProcessImportedWasmGlobalObject(v8::internal::Handle<v8::internal::WasmInstanceObject>, int, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::wasm::WasmGlobal const&, v8::internal::Handle<v8::internal::WasmGlobalObject>)",93957341577280,93957341578229],["v8::internal::wasm::LoadElemSegmentImpl(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, v8::internal::Handle<v8::internal::WasmTableObject>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned long)",93957341580496,93957341581818],["v8::internal::wasm::(anonymous namespace)::CompileImportWrapperJob::Run(v8::JobDelegate*)",93957341582112,93957341582330],["v8::internal::wasm::SignatureMap::FindOrInsert(v8::internal::Signature<v8::internal::wasm::ValueType> const&)",93957341582416,93957341582623],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::__emplace_unique_key_args<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::pair<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> >(v8::internal::Signature<v8::internal::wasm::ValueType> const&, std::__1::pair<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>&&)",93957341582656,93957341583890],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::allocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::__rehash(unsigned long)",93957341584288,93957341585064],["v8::internal::Builtin_ConsoleAssert(int, unsigned long*, v8::internal::Isolate*)",93957335773120,93957335773230],["v8::internal::Builtin_ConsoleTimeStamp(int, unsigned long*, v8::internal::Isolate*)",93957335777040,93957335777169],["v8::internal::(anonymous namespace)::LogTimerEvent(v8::internal::Isolate*, v8::internal::BuiltinArguments, v8::internal::Logger::StartEnd)",93957335781088,93957335781376],["v8::internal::Builtin_Impl_DataViewConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335782816,93957335783932],["v8::internal::Builtin_Impl_Stats_DateConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335784096,93957335784568],["v8::internal::Builtin_DateNow(int, unsigned long*, v8::internal::Isolate*)",93957335787600,93957335787919],["v8::internal::Builtin_DateParse(int, unsigned long*, v8::internal::Isolate*)",93957335788624,93957335788656],["v8::internal::Builtin_Impl_DateParse(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335789136,93957335789520],["v8::internal::wasm::CreateStructMap(v8::internal::Isolate*, v8::internal::wasm::WasmModule const*, int, v8::internal::Handle<v8::internal::Map>)",93957341556400,93957341556602],["v8::internal::wasm::InstanceBuilder::InitializeExceptions(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341566832,93957341567193],["v8::internal::wasm::InstanceBuilder::LookupImportAsm(unsigned int, v8::internal::Handle<v8::internal::String>)",93957341572496,93957341573025],["v8::internal::wasm::InstanceBuilder::ProcessImportedFunction(v8::internal::Handle<v8::internal::WasmInstanceObject>, int, int, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957341574240,93957341575217],["v8::internal::wasm::InstanceBuilder::ProcessImportedMemory(v8::internal::Handle<v8::internal::WasmInstanceObject>, int, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957341576752,93957341577269],["v8::internal::wasm::InstanceBuilder::ProcessImportedGlobal(v8::internal::Handle<v8::internal::WasmInstanceObject>, int, int, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957341578240,93957341579498],["v8::internal::wasm::InstanceBuilder::RecursivelyEvaluateGlobalInitializer(v8::internal::wasm::WasmInitExpr const&, v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341580224,93957341580493],["v8::internal::wasm::LoadElemSegment(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)",93957341581824,93957341582054],["v8::internal::Builtin_ConsoleGroupEnd(int, unsigned long*, v8::internal::Isolate*)",93957335770560,93957335770670],["v8::internal::Builtin_ConsoleProfileEnd(int, unsigned long*, v8::internal::Isolate*)",93957335774400,93957335774510],["v8::internal::Builtin_ConsoleTimeEnd(int, unsigned long*, v8::internal::Isolate*)",93957335776352,93957335776481],["v8::internal::Builtin_ConsoleContext(int, unsigned long*, v8::internal::Isolate*)",93957335777728,93957335777760],["v8::internal::(anonymous namespace)::ConsoleCall(v8::internal::Isolate*, v8::internal::BuiltinArguments const&, void (v8::debug::ConsoleDelegate::*)(v8::debug::ConsoleCallArguments const&, v8::debug::ConsoleContext const&))",93957335779664,93957335781081],["v8::internal::(anonymous namespace)::InstallContextFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, char const*, v8::internal::Builtins::Name, int, v8::internal::Handle<v8::internal::Object>)",93957335781376,93957335782300],["v8::internal::Builtin_Impl_Stats_DataViewConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335782336,93957335782808],["v8::internal::JSCollator::set_icu_collator(v8::internal::Managed<icu_68::Collator>, v8::internal::WriteBarrierMode)",93957335783936,93957335784060],["void std::__1::__stable_sort_move<v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >(std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::value_type*)",93957341552064,93957341552900],["v8::internal::wasm::InstanceBuilder::Build()",93957341558080,93957341562198],["v8::internal::wasm::InstanceBuilder::InitGlobals(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341564864,93957341565830],["v8::internal::wasm::InstanceBuilder::LoadTableSegments(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341570480,93957341571394],["v8::internal::wasm::InstanceBuilder::LookupImport(unsigned int, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>)",93957341572064,93957341572490],["v8::internal::wasm::InstanceBuilder::WriteGlobalValue(v8::internal::wasm::WasmGlobal const&, double)",93957341573040,93957341573545],["v8::internal::wasm::InstanceBuilder::WriteGlobalValue(v8::internal::wasm::WasmGlobal const&, v8::internal::Handle<v8::internal::WasmGlobalObject>)",93957341573616,93957341574230],["v8::internal::wasm::InstanceBuilder::InitializeImportedIndirectFunctionTable(v8::internal::Handle<v8::internal::WasmInstanceObject>, int, int, v8::internal::Handle<v8::internal::WasmTableObject>)",93957341575232,93957341575904],["v8::internal::Builtin_ConsoleTable(int, unsigned long*, v8::internal::Isolate*)",93957335768000,93957335768110],["v8::internal::Builtin_ConsoleCount(int, unsigned long*, v8::internal::Isolate*)",93957335771840,93957335771950],["v8::internal::Builtin_ConsoleProfile(int, unsigned long*, v8::internal::Isolate*)",93957335773760,93957335773870],["v8::internal::Builtin_ConsoleTimeLog(int, unsigned long*, v8::internal::Isolate*)",93957335775040,93957335775150],["v8::internal::Builtin_Impl_Stats_ConsoleTime(int, unsigned long*, v8::internal::Isolate*)",93957335775808,93957335776341],["v8::internal::Builtin_Impl_Stats_ConsoleTimeEnd(int, unsigned long*, v8::internal::Isolate*)",93957335776496,93957335777032],["v8::internal::Builtin_Impl_Stats_ConsoleTimeStamp(int, unsigned long*, v8::internal::Isolate*)",93957335777184,93957335777720],["v8::internal::Builtin_Impl_Stats_ConsoleContext(int, unsigned long*, v8::internal::Isolate*)",93957335777760,93957335778232],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<unsigned int, v8::internal::wasm::WireBytesRef>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<unsigned int, v8::internal::wasm::WireBytesRef>, std::__1::__unordered_map_hasher<unsigned int, std::__1::__hash_value_type<unsigned int, v8::internal::wasm::WireBytesRef>, std::__1::hash<unsigned int>, std::__1::equal_to<unsigned int>, true>, std::__1::__unordered_map_equal<unsigned int, std::__1::__hash_value_type<unsigned int, v8::internal::wasm::WireBytesRef>, std::__1::equal_to<unsigned int>, std::__1::hash<unsigned int>, true>, std::__1::allocator<std::__1::__hash_value_type<unsigned int, v8::internal::wasm::WireBytesRef> > >::__emplace_unique_key_args<unsigned int, std::__1::pair<unsigned int, v8::internal::wasm::WireBytesRef> >(unsigned int const&, std::__1::pair<unsigned int, v8::internal::wasm::WireBytesRef>&&)",93957341546864,93957341547678],["void std::__1::__buffered_inplace_merge<v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >(std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::value_type*)",93957341554784,93957341555163],["v8::internal::wasm::AllocateSubRtt(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, unsigned int, v8::internal::Handle<v8::internal::Map>)",93957341556784,93957341557574],["v8::internal::wasm::InstanceBuilder::SanitizeImports()",93957341562736,93957341563338],["v8::internal::wasm::InstanceBuilder::ProcessImports(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341563856,93957341564853],["v8::internal::wasm::InstanceBuilder::InitializeIndirectFunctionTables(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341565840,93957341566820],["v8::internal::wasm::InstanceBuilder::ProcessExports(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341567200,93957341570468],["v8::internal::wasm::InstanceBuilder::LoadDataSegments(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957341571408,93957341571925],["v8::internal::Builtin_ConsoleLog(int, unsigned long*, v8::internal::Isolate*)",93957335765440,93957335765550],["v8::internal::Builtin_ConsoleGroup(int, unsigned long*, v8::internal::Isolate*)",93957335769280,93957335769390],["v8::internal::Builtin_ConsoleClear(int, unsigned long*, v8::internal::Isolate*)",93957335771200,93957335771310],["v8::internal::Builtin_ConsoleCountReset(int, unsigned long*, v8::internal::Isolate*)",93957335772480,93957335772590],["v8::internal::Builtin_Impl_Stats_ConsoleAssert(int, unsigned long*, v8::internal::Isolate*)",93957335773232,93957335773755],["v8::internal::Builtin_Impl_Stats_ConsoleProfile(int, unsigned long*, v8::internal::Isolate*)",93957335773872,93957335774395],["v8::internal::Builtin_Impl_Stats_ConsoleProfileEnd(int, unsigned long*, v8::internal::Isolate*)",93957335774512,93957335775035],["v8::internal::Builtin_Impl_Stats_ConsoleTimeLog(int, unsigned long*, v8::internal::Isolate*)",93957335775152,93957335775675],["void std::__1::vector<v8::internal::wasm::WasmElemSegment, std::__1::allocator<v8::internal::wasm::WasmElemSegment> >::__emplace_back_slow_path<bool>(bool&&)",93957341543008,93957341543506],["void std::__1::__inplace_merge<v8::internal::wasm::NameAssoc::IndexLess&, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >(std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, v8::internal::wasm::NameAssoc::IndexLess&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >::value_type*, long)",93957341549216,93957341550342],["void std::__1::__inplace_merge<v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >(std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::value_type*, long)",93957341553472,93957341554256],["void std::__1::__half_inplace_merge<std::__1::__invert<v8::internal::wasm::IndirectNameMapEntry::IndexLess&>, std::__1::reverse_iterator<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> > >(std::__1::reverse_iterator<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::reverse_iterator<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >, std::__1::reverse_iterator<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >, std::__1::__invert<v8::internal::wasm::IndirectNameMapEntry::IndexLess&>)",93957341555584,93957341555986],["v8::internal::wasm::CreateArrayMap(v8::internal::Isolate*, v8::internal::wasm::WasmModule const*, int, v8::internal::Handle<v8::internal::Map>)",93957341556608,93957341556781],["v8::internal::wasm::InstantiateToInstanceObject(v8::internal::Isolate*, v8::internal::wasm::ErrorThrower*, v8::internal::Handle<v8::internal::WasmModuleObject>, v8::internal::MaybeHandle<v8::internal::JSReceiver>, v8::internal::MaybeHandle<v8::internal::JSArrayBuffer>)",93957341557584,93957341558065],["v8::internal::wasm::InstanceBuilder::ExecuteStartFunction()",93957341562208,93957341562727],["v8::internal::wasm::InstanceBuilder::FindImportedMemory()",93957341563344,93957341563590],["v8::internal::Builtin_Impl_Stats_SetPrototypeClear(int, unsigned long*, v8::internal::Isolate*)",93957335762752,93957335763224],["v8::internal::Builtin_ConsoleDir(int, unsigned long*, v8::internal::Isolate*)",93957335766720,93957335766830],["v8::internal::Builtin_ConsoleTrace(int, unsigned long*, v8::internal::Isolate*)",93957335768640,93957335768750],["v8::internal::Builtin_ConsoleGroupCollapsed(int, unsigned long*, v8::internal::Isolate*)",93957335769920,93957335770030],["v8::internal::Builtin_Impl_Stats_ConsoleGroupEnd(int, unsigned long*, v8::internal::Isolate*)",93957335770672,93957335771195],["v8::internal::Builtin_Impl_Stats_ConsoleClear(int, unsigned long*, v8::internal::Isolate*)",93957335771312,93957335771835],["v8::internal::Builtin_Impl_Stats_ConsoleCount(int, unsigned long*, v8::internal::Isolate*)",93957335771952,93957335772475],["v8::internal::Builtin_Impl_Stats_ConsoleCountReset(int, unsigned long*, v8::internal::Isolate*)",93957335772592,93957335773115],["void std::__1::__stable_sort_move<v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >(std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >::difference_type, std::__1::iterator_traits::value_type*)",93957341538016,93957341538531],["void std::__1::vector<v8::internal::wasm::WasmDataSegment, std::__1::allocator<v8::internal::wasm::WasmDataSegment> >::__emplace_back_slow_path<>()",93957341544784,93957341545184],["void std::__1::__stable_sort<v8::internal::wasm::NameAssoc::IndexLess&, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >(std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, v8::internal::wasm::NameAssoc::IndexLess&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >::value_type*, long)",93957341547984,93957341548584],["void std::__1::vector<v8::internal::wasm::IndirectNameMapEntry, std::__1::allocator<v8::internal::wasm::IndirectNameMapEntry> >::__emplace_back_slow_path<int, std::__1::vector<v8::internal::wasm::NameAssoc, std::__1::allocator<v8::internal::wasm::NameAssoc> > >(int&&, std::__1::vector<v8::internal::wasm::NameAssoc, std::__1::allocator<v8::internal::wasm::NameAssoc> >&&)",93957341550864,93957341551292],["void std::__1::__merge_move_assign<v8::internal::wasm::IndirectNameMapEntry::IndexLess&, v8::internal::wasm::IndirectNameMapEntry*, v8::internal::wasm::IndirectNameMapEntry*, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >(v8::internal::wasm::IndirectNameMapEntry*, v8::internal::wasm::IndirectNameMapEntry*, v8::internal::wasm::IndirectNameMapEntry*, v8::internal::wasm::IndirectNameMapEntry*, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, v8::internal::wasm::IndirectNameMapEntry::IndexLess&)",93957341552912,93957341553468],["void std::__1::__insertion_sort_move<v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >(std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::value_type*, v8::internal::wasm::IndirectNameMapEntry::IndexLess&)",93957341554256,93957341554771],["void std::__1::__half_inplace_merge<v8::internal::wasm::IndirectNameMapEntry::IndexLess&, v8::internal::wasm::IndirectNameMapEntry*, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >(v8::internal::wasm::IndirectNameMapEntry*, v8::internal::wasm::IndirectNameMapEntry*, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, v8::internal::wasm::IndirectNameMapEntry::IndexLess&)",93957341555168,93957341555578],["std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> std::__1::__rotate_forward<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >(std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>)",93957341556000,93957341556398],["v8::internal::Builtin_Impl_CallSitePrototypeIsToplevel(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335760304,93957335760859],["v8::internal::Builtin_ConsoleError(int, unsigned long*, v8::internal::Isolate*)",93957335764160,93957335764270],["v8::internal::Builtin_ConsoleWarn(int, unsigned long*, v8::internal::Isolate*)",93957335766080,93957335766190],["v8::internal::Builtin_ConsoleDirXml(int, unsigned long*, v8::internal::Isolate*)",93957335767360,93957335767470],["v8::internal::Builtin_Impl_Stats_ConsoleTable(int, unsigned long*, v8::internal::Isolate*)",93957335768112,93957335768635],["v8::internal::Builtin_Impl_Stats_ConsoleTrace(int, unsigned long*, v8::internal::Isolate*)",93957335768752,93957335769275],["v8::internal::Builtin_Impl_Stats_ConsoleGroup(int, unsigned long*, v8::internal::Isolate*)",93957335769392,93957335769915],["v8::internal::Builtin_Impl_Stats_ConsoleGroupCollapsed(int, unsigned long*, v8::internal::Isolate*)",93957335770032,93957335770555],["void std::__1::vector<v8::internal::wasm::WasmInitExpr, std::__1::allocator<v8::internal::wasm::WasmInitExpr> >::__push_back_slow_path<v8::internal::wasm::WasmInitExpr>(v8::internal::wasm::WasmInitExpr&&)",93957341534784,93957341535148],["std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> std::__1::__rotate<std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >(std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::random_access_iterator_tag)",93957341540560,93957341540964],["v8::internal::wasm::ModuleDecoderImpl::consume_data_segment_header(bool*, unsigned int*, v8::internal::wasm::WasmInitExpr*)",93957341543824,93957341544267],["v8::internal::wasm::ModuleDecoderImpl::VerifyFunctionBody(v8::internal::AccountingAllocator*, unsigned int, v8::internal::wasm::ModuleWireBytes const&, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFunction*)",93957341545456,93957341546460],["void std::__1::vector<v8::internal::wasm::NameAssoc, std::__1::allocator<v8::internal::wasm::NameAssoc> >::__emplace_back_slow_path<int, v8::internal::wasm::WireBytesRef&>(int&&, v8::internal::wasm::WireBytesRef&)",93957341547680,93957341547971],["void std::__1::__stable_sort_move<v8::internal::wasm::NameAssoc::IndexLess&, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >(std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, v8::internal::wasm::NameAssoc::IndexLess&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >::value_type*)",93957341548592,93957341549209],["std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> std::__1::__rotate<std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*> >(std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, std::__1::__wrap_iter<v8::internal::wasm::NameAssoc*>, std::__1::random_access_iterator_tag)",93957341550352,93957341550851],["void std::__1::__stable_sort<v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >(std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*>, v8::internal::wasm::IndirectNameMapEntry::IndexLess&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::IndirectNameMapEntry*> >::value_type*, long)",93957341551296,93957341552049],["v8::internal::Builtin_CallSitePrototypeIsNative(int, unsigned long*, v8::internal::Isolate*)",93957335757648,93957335757680],["v8::internal::Builtin_MapPrototypeClear(int, unsigned long*, v8::internal::Isolate*)",93957335761920,93957335761952],["v8::internal::Builtin_ConsoleDebug(int, unsigned long*, v8::internal::Isolate*)",93957335763520,93957335763630],["v8::internal::Builtin_ConsoleInfo(int, unsigned long*, v8::internal::Isolate*)",93957335764800,93957335764910],["v8::internal::Builtin_Impl_Stats_ConsoleLog(int, unsigned long*, v8::internal::Isolate*)",93957335765552,93957335766075],["v8::internal::Builtin_Impl_Stats_ConsoleWarn(int, unsigned long*, v8::internal::Isolate*)",93957335766192,93957335766715],["v8::internal::Builtin_Impl_Stats_ConsoleDir(int, unsigned long*, v8::internal::Isolate*)",93957335766832,93957335767355],["v8::internal::Builtin_Impl_Stats_ConsoleDirXml(int, unsigned long*, v8::internal::Isolate*)",93957335767472,93957335767995],["v8::internal::wasm::ModuleDecoderImpl::consume_reference_type()",93957341528608,93957341528860],["void std::__1::vector<v8::internal::wasm::WasmInitExpr, std::__1::allocator<v8::internal::wasm::WasmInitExpr> >::__emplace_back_slow_path<double&>(double&)",93957341536208,93957341536556],["void std::__1::__insertion_sort_move<v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >(std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >::value_type*, v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&)",93957341539648,93957341540001],["v8::internal::wasm::ModuleDecoderImpl::consume_element_expr()",93957341541712,93957341542377],["std::__1::vector<v8::internal::wasm::WasmDataSegment, std::__1::allocator<v8::internal::wasm::WasmDataSegment> >::reserve(unsigned long)",93957341543520,93957341543812],["void std::__1::vector<v8::internal::wasm::WasmDataSegment, std::__1::allocator<v8::internal::wasm::WasmDataSegment> >::__emplace_back_slow_path<v8::internal::wasm::WasmInitExpr>(v8::internal::wasm::WasmInitExpr&&)",93957341544272,93957341544781],["void std::__1::vector<v8::internal::wasm::WasmCompilationHint, std::__1::allocator<v8::internal::wasm::WasmCompilationHint> >::__push_back_slow_path<v8::internal::wasm::WasmCompilationHint>(v8::internal::wasm::WasmCompilationHint&&)",93957341545184,93957341545443],["void std::__1::vector<v8::internal::wasm::AsmJsOffsetFunctionEntries, std::__1::allocator<v8::internal::wasm::AsmJsOffsetFunctionEntries> >::__emplace_back_slow_path<>()",93957341546464,93957341546854],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeIsAsync(int, unsigned long*, v8::internal::Isolate*)",93957335754496,93957335754968],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeIsPromiseAll(int, unsigned long*, v8::internal::Isolate*)",93957335758752,93957335759224],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335760896,93957335761368],["v8::internal::Builtin_Impl_MapPrototypeClear(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335762432,93957335762705],["v8::internal::Builtin_Impl_SetPrototypeClear(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335763232,93957335763505],["v8::internal::Builtin_Impl_Stats_ConsoleDebug(int, unsigned long*, v8::internal::Isolate*)",93957335763632,93957335764155],["v8::internal::Builtin_Impl_Stats_ConsoleError(int, unsigned long*, v8::internal::Isolate*)",93957335764272,93957335764795],["v8::internal::Builtin_Impl_Stats_ConsoleInfo(int, unsigned long*, v8::internal::Isolate*)",93957335764912,93957335765435],["v8::internal::wasm::ModuleDecoderImpl::DecodeExternalDebugInfoSection()",93957341524464,93957341524702],["void std::__1::vector<v8::internal::wasm::WasmTable, std::__1::allocator<v8::internal::wasm::WasmTable> >::__emplace_back_slow_path<>()",93957341530032,93957341530420],["void std::__1::vector<v8::internal::wasm::WasmInitExpr, std::__1::allocator<v8::internal::wasm::WasmInitExpr> >::__emplace_back_slow_path<float&>(float&)",93957341535504,93957341535852],["std::__1::vector<v8::internal::wasm::WasmGlobal, std::__1::allocator<v8::internal::wasm::WasmGlobal> >::reserve(unsigned long)",93957341536912,93957341537208],["void std::__1::__inplace_merge<v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >(std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >, std::__1::iterator_traits::value_type*, long)",93957341538544,93957341539634],["void std::__1::__buffered_inplace_merge<v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >(std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >::difference_type, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >, std::__1::iterator_traits::value_type*)",93957341540016,93957341540553],["v8::internal::wasm::ModuleDecoderImpl::consume_element_segment_header(v8::internal::wasm::WasmElemSegment::Status*, bool*, v8::internal::wasm::ValueType*, unsigned int*, v8::internal::wasm::WasmInitExpr*)",93957341540976,93957341541704],["void std::__1::vector<v8::internal::wasm::WasmElemSegment, std::__1::allocator<v8::internal::wasm::WasmElemSegment> >::__emplace_back_slow_path<unsigned int&, v8::internal::wasm::WasmInitExpr>(unsigned int&, v8::internal::wasm::WasmInitExpr&&)",93957341542384,93957341543000],["v8::internal::Builtin_Impl_CallSitePrototypeGetScriptNameOrSourceURL(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335751712,93957335752257],["v8::internal::Builtin_Impl_CallSitePrototypeIsConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335756032,93957335756566],["v8::internal::Builtin_Impl_CallSitePrototypeIsNative(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335758160,93957335758715],["v8::internal::Builtin_CallSitePrototypeIsToplevel(int, unsigned long*, v8::internal::Isolate*)",93957335759792,93957335759824],["v8::internal::Builtin_CallSitePrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335760864,93957335760896],["v8::internal::Builtin_Impl_CallSitePrototypeToString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335761376,93957335761912],["v8::internal::Builtin_Impl_Stats_MapPrototypeClear(int, unsigned long*, v8::internal::Isolate*)",93957335761952,93957335762424],["v8::internal::Builtin_SetPrototypeClear(int, unsigned long*, v8::internal::Isolate*)",93957335762720,93957335762752],["v8::internal::wasm::ModuleDecoderImpl::DecodeGlobalSection()",93957341516384,93957341517368],["v8::internal::wasm::ModuleDecoderImpl::consume_sig(v8::internal::Zone*)",93957341526032,93957341527384],["v8::internal::wasm::ModuleDecoderImpl::validate_memory_flags(bool*, bool*)",93957341529504,93957341529788],["v8::internal::wasm::ModuleDecoderImpl::consume_init_expr(v8::internal::wasm::WasmModule*, v8::internal::wasm::ValueType, unsigned long)",93957341530880,93957341534470],["void std::__1::vector<v8::internal::wasm::WasmInitExpr, std::__1::allocator<v8::internal::wasm::WasmInitExpr> >::__emplace_back_slow_path<int&>(int&)",93957341535152,93957341535500],["void std::__1::vector<v8::internal::wasm::WasmInitExpr, std::__1::allocator<v8::internal::wasm::WasmInitExpr> >::__emplace_back_slow_path<long&>(long&)",93957341535856,93957341536204],["void std::__1::vector<v8::internal::wasm::WasmInitExpr, std::__1::allocator<v8::internal::wasm::WasmInitExpr> >::__emplace_back_slow_path<unsigned char (&) [16]>(unsigned char (&) [16])",93957341536560,93957341536908],["void std::__1::__stable_sort<v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >(std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, std::__1::__wrap_iter<v8::internal::wasm::WasmExport*>, v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()::{lambda(v8::internal::wasm::WasmExport const&, v8::internal::wasm::WasmExport const&)#1}&, std::__1::iterator_traits<std::__1::__wrap_iter<v8::internal::wasm::WasmExport*> >::difference_type, std::__1::iterator_traits::value_type*, long)",93957341537216,93957341538008],["v8::internal::Builtin_CallSitePrototypeGetPosition(int, unsigned long*, v8::internal::Isolate*)",93957335749040,93957335749072],["v8::internal::Builtin_CallSitePrototypeGetTypeName(int, unsigned long*, v8::internal::Isolate*)",93957335753424,93957335753456],["v8::internal::Builtin_CallSitePrototypeIsConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335755520,93957335755552],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeIsEval(int, unsigned long*, v8::internal::Isolate*)",93957335756608,93957335757080],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeIsNative(int, unsigned long*, v8::internal::Isolate*)",93957335757680,93957335758152],["v8::internal::Builtin_CallSitePrototypeIsPromiseAll(int, unsigned long*, v8::internal::Isolate*)",93957335758720,93957335758752],["v8::internal::Builtin_Impl_CallSitePrototypeIsPromiseAll(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335759232,93957335759787],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeIsToplevel(int, unsigned long*, v8::internal::Isolate*)",93957335759824,93957335760296],["v8::internal::wasm::WasmModule::~WasmModule()",93957341509440,93957341510215],["v8::internal::wasm::ModuleDecoderImpl::DecodeElementSection()",93957341520928,93957341522645],["v8::internal::wasm::ModuleDecoderImpl::DecodeDataCountSection()",93957341525488,93957341525637],["v8::internal::wasm::ModuleDecoderImpl::consume_array(v8::internal::Zone*)",93957341528192,93957341528407],["v8::internal::wasm::ModuleDecoderImpl::consume_resizable_limits(char const*, char const*, unsigned int, unsigned int*, bool*, unsigned int, unsigned int*, unsigned char)",93957341528864,93957341529504],["v8::internal::wasm::ModuleDecoderImpl::consume_exception_sig_index(v8::internal::wasm::WasmModule*, v8::internal::Signature<v8::internal::wasm::ValueType> const**)",93957341529792,93957341530020],["void std::__1::vector<v8::internal::wasm::WasmGlobal, std::__1::allocator<v8::internal::wasm::WasmGlobal> >::__push_back_slow_path<v8::internal::wasm::WasmGlobal>(v8::internal::wasm::WasmGlobal&&)",93957341530432,93957341530880],["v8::internal::wasm::ModuleDecoderImpl::TypeOf(v8::internal::wasm::WasmInitExpr const&)",93957341534480,93957341534770],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetFunctionName(int, unsigned long*, v8::internal::Isolate*)",93957335745760,93957335746232],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetPromiseIndex(int, unsigned long*, v8::internal::Isolate*)",93957335750112,93957335750584],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetThis(int, unsigned long*, v8::internal::Isolate*)",93957335752304,93957335752776],["v8::internal::Builtin_Impl_CallSitePrototypeGetTypeName(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335753936,93957335754461],["v8::internal::Builtin_Impl_CallSitePrototypeIsAsync(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335754976,93957335755510],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeIsConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335755552,93957335756024],["v8::internal::Builtin_CallSitePrototypeIsEval(int, unsigned long*, v8::internal::Isolate*)",93957335756576,93957335756608],["v8::internal::Builtin_Impl_CallSitePrototypeIsEval(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335757088,93957335757643],["v8::internal::wasm::DecodeFunctionNames(unsigned char const*, unsigned char const*, std::__1::unordered_map<unsigned int, v8::internal::wasm::WireBytesRef, std::__1::hash<unsigned int>, std::__1::equal_to<unsigned int>, std::__1::allocator<std::__1::pair<unsigned int const, v8::internal::wasm::WireBytesRef> > >*, v8::internal::Vector<v8::internal::wasm::WasmExport const>)",93957341503440,93957341504708],["v8::internal::wasm::ModuleDecoderImpl::DecodeImportSection()",93957341512064,93957341514396],["v8::internal::wasm::ModuleDecoderImpl::DecodeStartSection()",93957341519856,93957341520112],["v8::internal::wasm::ModuleDecoderImpl::DecodeNameSection()",93957341523648,93957341524221],["v8::internal::wasm::ModuleDecoderImpl::DecodeCompilationHintsSection()",93957341524704,93957341525481],["v8::internal::wasm::ModuleDecoderImpl::DecodeExceptionSection()",93957341525648,93957341526019],["v8::internal::wasm::ModuleDecoderImpl::consume_struct(v8::internal::Zone*)",93957341527392,93957341528178],["v8::internal::wasm::ModuleDecoderImpl::consume_storage_type()",93957341528416,93957341528606],["v8::internal::Builtin_Impl_CallSitePrototypeGetEvalOrigin(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335742992,93957335743517],["v8::internal::Builtin_Impl_CallSitePrototypeGetLineNumber(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335747280,93957335747985],["v8::internal::Builtin_Impl_CallSitePrototypeGetPosition(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335749552,93957335750080],["v8::internal::Builtin_CallSitePrototypeGetScriptNameOrSourceURL(int, unsigned long*, v8::internal::Isolate*)",93957335751200,93957335751232],["v8::internal::Builtin_CallSitePrototypeGetThis(int, unsigned long*, v8::internal::Isolate*)",93957335752272,93957335752304],["v8::internal::Builtin_Impl_CallSitePrototypeGetThis(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335752784,93957335753409],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetTypeName(int, unsigned long*, v8::internal::Isolate*)",93957335753456,93957335753928],["v8::internal::Builtin_CallSitePrototypeIsAsync(int, unsigned long*, v8::internal::Isolate*)",93957335754464,93957335754496],["v8::internal::wasm::ModuleDecoder::FinishDecoding(bool)",93957341498416,93957341498488],["v8::internal::wasm::DecodeIndirectNameMap(v8::internal::Vector<unsigned char const>, unsigned char)",93957341506736,93957341508741],["v8::internal::wasm::ModuleDecoderImpl::CheckSectionOrder(v8::internal::wasm::SectionCode, v8::internal::wasm::SectionCode, v8::internal::wasm::SectionCode)",93957341510272,93957341510387],["v8::internal::wasm::ModuleDecoderImpl::DecodeTableSection()",93957341515152,93957341515978],["v8::internal::wasm::ModuleDecoderImpl::DecodeExportSection()",93957341517376,93957341519849],["v8::internal::wasm::ModuleDecoderImpl::DecodeCodeSection(bool)",93957341520112,93957341520922],["v8::internal::wasm::ModuleDecoderImpl::DecodeDataSection()",93957341522656,93957341523635],["v8::internal::wasm::ModuleDecoderImpl::DecodeSourceMappingURLSection()",93957341524224,93957341524462],["v8::internal::Builtin_CallSitePrototypeGetEnclosingColumnNumber(int, unsigned long*, v8::internal::Isolate*)",93957335740016,93957335740048],["v8::internal::Builtin_CallSitePrototypeGetFunction(int, unsigned long*, v8::internal::Isolate*)",93957335744592,93957335744624],["v8::internal::Builtin_CallSitePrototypeGetLineNumber(int, unsigned long*, v8::internal::Isolate*)",93957335746768,93957335746800],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetMethodName(int, unsigned long*, v8::internal::Isolate*)",93957335748032,93957335748504],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetPosition(int, unsigned long*, v8::internal::Isolate*)",93957335749072,93957335749544],["v8::internal::Builtin_CallSitePrototypeGetPromiseIndex(int, unsigned long*, v8::internal::Isolate*)",93957335750080,93957335750112],["v8::internal::Builtin_Impl_CallSitePrototypeGetPromiseIndex(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335750592,93957335751187],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetScriptNameOrSourceURL(int, unsigned long*, v8::internal::Isolate*)",93957335751232,93957335751704],["v8::internal::wasm::ModuleDecoderImpl::StartDecoding(v8::internal::Counters*, v8::internal::AccountingAllocator*)",93957341496176,93957341496424],["v8::internal::wasm::ModuleDecoder::ok()",93957341499632,93957341499668],["v8::internal::wasm::(anonymous namespace)::consume_string(v8::internal::wasm::Decoder*, bool, char const*)",93957341505280,93957341505610],["v8::internal::wasm::ModuleDecoderImpl::onFirstError()",93957341508912,93957341508926],["std::__1::__shared_ptr_pointer<v8::internal::wasm::WasmModule*, std::__1::shared_ptr<v8::internal::wasm::WasmModule>::__shared_ptr_default_delete<v8::internal::wasm::WasmModule, v8::internal::wasm::WasmModule>, std::__1::allocator<v8::internal::wasm::WasmModule> >::__on_zero_shared()",93957341510224,93957341510268],["v8::internal::wasm::ModuleDecoderImpl::DecodeTypeSection()",93957341510400,93957341512056],["v8::internal::wasm::ModuleDecoderImpl::DecodeFunctionSection()",93957341514400,93957341515146],["v8::internal::wasm::ModuleDecoderImpl::DecodeMemorySection()",93957341515984,93957341516384],["v8::internal::Builtin_Impl_Stats_BigIntPrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335736912,93957335737384],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetEnclosingLineNumber(int, unsigned long*, v8::internal::Isolate*)",93957335741280,93957335741752],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetFileName(int, unsigned long*, v8::internal::Isolate*)",93957335743552,93957335744024],["v8::internal::Builtin_Impl_CallSitePrototypeGetFunction(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335745104,93957335745726],["v8::internal::Builtin_Impl_CallSitePrototypeGetFunctionName(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335746240,93957335746765],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetLineNumber(int, unsigned long*, v8::internal::Isolate*)",93957335746800,93957335747272],["v8::internal::Builtin_CallSitePrototypeGetMethodName(int, unsigned long*, v8::internal::Isolate*)",93957335748000,93957335748032],["v8::internal::Builtin_Impl_CallSitePrototypeGetMethodName(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335748512,93957335749037],["v8::internal::wasm::SectionName(v8::internal::wasm::SectionCode)",93957341493472,93957341493507],["v8::internal::wasm::ModuleDecoderImpl::DecodeSection(v8::internal::wasm::SectionCode, v8::internal::Vector<unsigned char const>, unsigned int, bool)",93957341496976,93957341498061],["v8::internal::wasm::ModuleDecoder::set_code_section(unsigned int, unsigned int)",93957341499360,93957341499387],["v8::internal::wasm::DecodeAsmJsOffsets(v8::internal::Vector<unsigned char const>)",93957341500016,93957341502398],["v8::internal::wasm::(anonymous namespace)::FindNameSection(v8::internal::wasm::Decoder*)",93957341504720,93957341505271],["v8::internal::wasm::DecodeNameMap(v8::internal::Vector<unsigned char const>, unsigned char)",93957341505616,93957341506723],["v8::internal::wasm::ModuleDecoderImpl::~ModuleDecoderImpl()",93957341508752,93957341508903],["v8::internal::wasm::(anonymous namespace)::WasmSectionIterator::next()",93957341508928,93957341509435],["v8::internal::Builtin_Impl_Stats_BigIntAsUintN(int, unsigned long*, v8::internal::Isolate*)",93957335734240,93957335734712],["v8::internal::(anonymous namespace)::ThisBigIntValue(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, char const*)",93957335738480,93957335738777],["v8::internal::Builtin_Impl_CallSitePrototypeGetEnclosingColumnNumber(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335740528,93957335741233],["v8::internal::Builtin_CallSitePrototypeGetEvalOrigin(int, unsigned long*, v8::internal::Isolate*)",93957335742480,93957335742512],["v8::internal::Builtin_CallSitePrototypeGetFileName(int, unsigned long*, v8::internal::Isolate*)",93957335743520,93957335743552],["v8::internal::Builtin_Impl_CallSitePrototypeGetFileName(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335744032,93957335744577],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetFunction(int, unsigned long*, v8::internal::Isolate*)",93957335744624,93957335745096],["v8::internal::Builtin_CallSitePrototypeGetFunctionName(int, unsigned long*, v8::internal::Isolate*)",93957335745728,93957335745760],["v8::internal::wasm::AsyncCompileJob::CompileFinished::RunInForeground(v8::internal::wasm::AsyncCompileJob*)",93957341491632,93957341491957],["v8::internal::wasm::ModuleDecoder::ModuleDecoder(v8::internal::wasm::WasmFeatures const&)",93957341495824,93957341495842],["v8::internal::wasm::ModuleDecoderImpl::DecodeModuleHeader(v8::internal::Vector<unsigned char const>, unsigned char)",93957341496464,93957341496956],["v8::internal::wasm::ModuleDecoder::StartCodeSection()",93957341498176,93957341498352],["v8::internal::wasm::ModuleDecoderImpl::FinishDecoding(bool)",93957341498496,93957341499360],["v8::internal::wasm::ModuleDecoder::IdentifyUnknownSection(v8::internal::wasm::ModuleDecoder*, v8::internal::Vector<unsigned char const>, unsigned int, v8::internal::wasm::SectionCode*)",93957341499392,93957341499623],["v8::internal::wasm::(anonymous namespace)::(anonymous namespace)::IdentifyUnknownSectionInternal(v8::internal::wasm::Decoder*)",93957341499680,93957341500005],["v8::internal::wasm::DecodeCustomSections(unsigned char const*, unsigned char const*)",93957341502400,93957341503439],["v8::internal::Builtin_CallAsyncModuleFulfilled(int, unsigned long*, v8::internal::Isolate*)",93957335731936,93957335732084],["v8::internal::Builtin_Impl_BigIntAsIntN(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335735584,93957335735912],["v8::internal::Builtin_BigIntPrototypeValueOf(int, unsigned long*, v8::internal::Isolate*)",93957335737744,93957335737909],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetColumnNumber(int, unsigned long*, v8::internal::Isolate*)",93957335738816,93957335739288],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetEnclosingColumnNumber(int, unsigned long*, v8::internal::Isolate*)",93957335740048,93957335740520],["v8::internal::Builtin_CallSitePrototypeGetEnclosingLineNumber(int, unsigned long*, v8::internal::Isolate*)",93957335741248,93957335741280],["v8::internal::Builtin_Impl_CallSitePrototypeGetEnclosingLineNumber(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335741760,93957335742465],["v8::internal::Builtin_Impl_Stats_CallSitePrototypeGetEvalOrigin(int, unsigned long*, v8::internal::Isolate*)",93957335742512,93957335742984],["non-virtual thunk to v8::internal::wasm::AsyncCompileJob::CompileTask::~CompileTask()",93957341490096,93957341490175],["v8::internal::wasm::AsyncCompileJob::CompileFailed::RunInForeground(v8::internal::wasm::AsyncCompileJob*)",93957341492208,93957341492221],["v8::internal::wasm::ModuleDecoderImpl::DecodeModule(v8::internal::Counters*, v8::internal::AccountingAllocator*, bool)",93957341494736,93957341495651],["v8::internal::wasm::ModuleDecoder::shared_module() const",93957341495904,93957341495918],["v8::internal::wasm::ModuleDecoder::DecodeModuleHeader(v8::internal::Vector<unsigned char const>, unsigned int)",93957341496432,93957341496449],["v8::internal::wasm::ModuleDecoder::DecodeSection(v8::internal::wasm::SectionCode, v8::internal::Vector<unsigned char const>, unsigned int, bool)",93957341496960,93957341496974],["v8::internal::wasm::ModuleDecoder::DecodeFunctionBody(unsigned int, unsigned int, unsigned int, bool)",93957341498064,93957341498175],["v8::internal::wasm::ModuleDecoder::CheckFunctionsCount(unsigned int, unsigned int)",93957341498352,93957341498413],["v8::internal::Builtin_SharedArrayBufferPrototypeSlice(int, unsigned long*, v8::internal::Isolate*)",93957335727952,93957335727997],["v8::internal::Builtin_BigIntConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335733360,93957335733392],["v8::internal::Builtin_BigIntAsIntN(int, unsigned long*, v8::internal::Isolate*)",93957335735072,93957335735104],["v8::internal::Builtin_Impl_Stats_BigIntPrototypeToLocaleString(int, unsigned long*, v8::internal::Isolate*)",93957335736208,93957335736880],["v8::internal::Builtin_Impl_BigIntPrototypeToString(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335737392,93957335737739],["v8::internal::Builtin_Impl_Stats_BigIntPrototypeValueOf(int, unsigned long*, v8::internal::Isolate*)",93957335737920,93957335738479],["v8::internal::Builtin_CallSitePrototypeGetColumnNumber(int, unsigned long*, v8::internal::Isolate*)",93957335738784,93957335738816],["v8::internal::Builtin_Impl_CallSitePrototypeGetColumnNumber(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335739296,93957335740001],["v8::internal::wasm::AsyncCompileJob::DecodeFail::~DecodeFail()",93957341489472,93957341489504],["void std::__1::__function::__policy_invoker<void (v8::internal::wasm::CompilationEvent)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::wasm::AsyncCompileJob::CompilationStateCallback, void (v8::internal::wasm::CompilationEvent)> >(std::__1::__function::__policy_storage const*, v8::internal::wasm::CompilationEvent)",93957341490992,93957341491002],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::SampleTopTierCodeSizeCallback, void (v8::internal::wasm::CompilationEvent)> >(void const*)",93957341492096,93957341492147],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, std::__1::__unordered_map_hasher<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>, std::__1::__unordered_map_equal<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > > > >::__emplace_unique_key_args<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >&, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >(std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > const&, std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >&, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> >&&)",93957341492272,93957341493427],["v8::internal::wasm::DecodeWasmModule(v8::internal::wasm::WasmFeatures const&, unsigned char const*, unsigned char const*, bool, v8::internal::wasm::ModuleOrigin, v8::internal::Counters*, std::__1::shared_ptr<v8::internal::metrics::Recorder>, v8::metrics::Recorder::ContextId, v8::internal::wasm::DecodingMethod, v8::internal::AccountingAllocator*)",93957341493520,93957341494723],["v8::internal::wasm::ModuleDecoderImpl::~ModuleDecoderImpl()",93957341495664,93957341495810],["v8::internal::wasm::ModuleDecoder::~ModuleDecoder()",93957341495856,93957341495889],["v8::internal::wasm::ModuleDecoder::StartDecoding(v8::internal::Counters*, std::__1::shared_ptr<v8::internal::metrics::Recorder>, v8::metrics::Recorder::ContextId, v8::internal::AccountingAllocator*, v8::internal::wasm::ModuleOrigin)",93957341495920,93957341496166],["std::__1::vector<int, std::__1::allocator<int> >::push_back(int const&)",93957335724960,93957335725236],["v8::internal::(anonymous namespace)::ConstructBuffer(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, v8::internal::InitializedFlag)",93957335729040,93957335729413],["v8::internal::Builtin_CallAsyncModuleRejected(int, unsigned long*, v8::internal::Isolate*)",93957335732640,93957335732798],["v8::internal::Builtin_Impl_BigIntConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335733872,93957335734195],["v8::internal::Builtin_Impl_BigIntAsUintN(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335734720,93957335735062],["v8::internal::Builtin_Impl_Stats_BigIntAsIntN(int, unsigned long*, v8::internal::Isolate*)",93957335735104,93957335735576],["v8::internal::Builtin_BigIntPrototypeToLocaleString(int, unsigned long*, v8::internal::Isolate*)",93957335735920,93957335736204],["v8::internal::Builtin_BigIntPrototypeToString(int, unsigned long*, v8::internal::Isolate*)",93957335736880,93957335736912],["std::__1::__shared_ptr_emplace<v8::base::Semaphore, std::__1::allocator<v8::base::Semaphore> >::~__shared_ptr_emplace()",93957341486944,93957341486982],["v8::internal::wasm::AsyncCompileJob::CompileTask::~CompileTask()",93957341489632,93957341489689],["v8::internal::wasm::AsyncCompileJob::PrepareAndStartCompile::~PrepareAndStartCompile()",93957341490256,93957341490332],["v8::internal::wasm::AsyncCompileJob::CompileFinished::~CompileFinished()",93957341491472,93957341491545],["void std::__1::__function::__policy_invoker<void (v8::internal::wasm::CompilationEvent)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::SampleTopTierCodeSizeCallback, void (v8::internal::wasm::CompilationEvent)> >(std::__1::__function::__policy_storage const*, v8::internal::wasm::CompilationEvent)",93957341491968,93957341492091],["void std::__1::__function::__policy::__large_destroy<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::SampleTopTierCodeSizeCallback, void (v8::internal::wasm::CompilationEvent)> >(void*)",93957341492160,93957341492197],["v8::internal::metrics::Recorder::DelayedEvent<v8::metrics::WasmModuleDecoded>::Run(std::__1::shared_ptr<v8::internal::metrics::Recorder> const&)",93957341492224,93957341492266],["v8::internal::wasm::(anonymous namespace)::CompileJSToWasmWrapperJob::GetMaxConcurrency(unsigned long) const",93957341493440,93957341493467],["v8::internal::JSReceiver::GetElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, unsigned int)",93957335720496,93957335720572],["v8::internal::Builtin_Impl_ArrayBufferConstructor(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335726464,93957335727088],["v8::internal::Builtin_ArrayBufferPrototypeSlice(int, unsigned long*, v8::internal::Isolate*)",93957335728496,93957335728538],["v8::internal::Factory::NewStringFromAsciiChecked(char const*, v8::internal::AllocationType)",93957335731648,93957335731738],["v8::internal::Builtin_Impl_Stats_CallAsyncModuleFulfilled(int, unsigned long*, v8::internal::Isolate*)",93957335732096,93957335732638],["v8::internal::Builtin_Impl_Stats_CallAsyncModuleRejected(int, unsigned long*, v8::internal::Isolate*)",93957335732800,93957335733346],["v8::internal::Builtin_Impl_Stats_BigIntConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335733392,93957335733864],["v8::internal::Builtin_BigIntAsUintN(int, unsigned long*, v8::internal::Isolate*)",93957335734208,93957335734240],["void std::__1::__function::__policy_invoker<void (v8::internal::wasm::CompilationEvent)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::WaitForCompilationEvent(v8::internal::wasm::CompilationEvent)::$_1, void (v8::internal::wasm::CompilationEvent)> >(std::__1::__function::__policy_storage const*, v8::internal::wasm::CompilationEvent)",93957341485248,93957341485281],["void std::__1::__function::__policy::__large_destroy<std::__1::__function::__default_alloc_func<v8::internal::wasm::RecompileNativeModule(v8::internal::wasm::NativeModule*, v8::internal::wasm::TieringState)::$_0, void (v8::internal::wasm::CompilationEvent)> >(void*)",93957341487104,93957341487170],["v8::internal::wasm::AsyncCompileJob::DecodeFail::RunInForeground(v8::internal::wasm::AsyncCompileJob*)",93957341489552,93957341489572],["v8::internal::wasm::AsyncCompileJob::CompileTask::RunInternal()",93957341489776,93957341490029],["v8::internal::wasm::AsyncCompileJob::PrepareAndStartCompile::~PrepareAndStartCompile()",93957341490176,93957341490249],["v8::internal::wasm::AsyncCompileJob::PrepareAndStartCompile::RunInForeground(v8::internal::wasm::AsyncCompileJob*)",93957341490336,93957341490981],["v8::internal::wasm::AsyncCompileJob::CompilationStateCallback::operator()(v8::internal::wasm::CompilationEvent)",93957341491008,93957341491468],["v8::internal::wasm::AsyncCompileJob::CompileFinished::~CompileFinished()",93957341491552,93957341491628],["v8::internal::Builtin_Impl_ArrayConcat(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335708992,93957335717617],["v8::internal::(anonymous namespace)::ArrayConcatVisitor::visit(unsigned int, v8::internal::Handle<v8::internal::Object>)",93957335722096,93957335722555],["v8::internal::Builtin_ArrayBufferConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335725952,93957335725984],["v8::internal::Builtin_Impl_Stats_ArrayBufferConstructor_DoNotInitialize(int, unsigned long*, v8::internal::Isolate*)",93957335727120,93957335727592],["v8::internal::Builtin_Impl_Stats_SharedArrayBufferPrototypeSlice(int, unsigned long*, v8::internal::Isolate*)",93957335728000,93957335728485],["v8::internal::Builtin_Impl_Stats_ArrayBufferPrototypeSlice(int, unsigned long*, v8::internal::Isolate*)",93957335728544,93957335729026],["v8::internal::SliceHelper(v8::internal::BuiltinArguments, v8::internal::Isolate*, char const*, bool)",93957335729424,93957335731643],["void v8::internal::CopyImpl<8ul, unsigned char>(unsigned char*, unsigned char const*, unsigned long)",93957335731744,93957335731927],["v8::internal::wasm::(anonymous namespace)::BackgroundCompileJob::~BackgroundCompileJob()",93957341483360,93957341483505],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, std::__1::__unordered_map_hasher<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>, std::__1::__unordered_map_equal<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > > > >::__emplace_unique_key_args<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > const&>, std::__1::tuple<> >(std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > const&>&&, std::__1::tuple<>&&)",93957341485536,93957341486684],["void std::__1::__function::__policy_invoker<void (v8::internal::wasm::CompilationEvent)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::wasm::RecompileNativeModule(v8::internal::wasm::NativeModule*, v8::internal::wasm::TieringState)::$_0, void (v8::internal::wasm::CompilationEvent)> >(std::__1::__function::__policy_storage const*, v8::internal::wasm::CompilationEvent)",93957341487008,93957341487031],["v8::internal::wasm::AsyncCompileJob::DecodeModule::~DecodeModule()",93957341487264,93957341487340],["v8::internal::wasm::AsyncCompileJob::DecodeFail::~DecodeFail()",93957341489504,93957341489552],["std::__1::__shared_ptr_pointer<v8::internal::wasm::AsyncCompileJob*, std::__1::default_delete<v8::internal::wasm::AsyncCompileJob>, std::__1::allocator<v8::internal::wasm::AsyncCompileJob> >::__on_zero_shared()",93957341489584,93957341489628],["v8::internal::wasm::AsyncCompileJob::CompileTask::~CompileTask()",93957341489696,93957341489774],["non-virtual thunk to v8::internal::wasm::AsyncCompileJob::CompileTask::~CompileTask()",93957341490032,93957341490096],["v8::internal::Builtin_ArrayShift(int, unsigned long*, v8::internal::Isolate*)",93957335705456,93957335705488],["v8::internal::(anonymous namespace)::MatchArrayElementsKindToArguments(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSArray>, v8::internal::BuiltinArguments*, int, int)",93957335718336,93957335718631],["v8::internal::(anonymous namespace)::SetLengthProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, double)",93957335720848,93957335721155],["std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >::reserve(unsigned long)",93957335723200,93957335723367],["v8::internal::(anonymous namespace)::ArrayConcatVisitor::SetDictionaryMode()",93957335725248,93957335725937],["v8::internal::Builtin_Impl_Stats_ArrayBufferConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335725984,93957335726456],["v8::internal::Builtin_ArrayBufferConstructor_DoNotInitialize(int, unsigned long*, v8::internal::Isolate*)",93957335727088,93957335727120],["v8::internal::Builtin_Impl_ArrayBufferConstructor_DoNotInitialize(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335727600,93957335727945],["std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, std::__1::__unordered_map_hasher<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>, std::__1::__unordered_map_equal<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > > > >::rehash(unsigned long)",93957341479440,93957341479811],["void std::__1::vector<std::__1::function<void (v8::internal::wasm::CompilationEvent)>, std::__1::allocator<std::__1::function<void (v8::internal::wasm::CompilationEvent)> > >::emplace_back<std::__1::function<void (v8::internal::wasm::CompilationEvent)> >(std::__1::function<void (v8::internal::wasm::CompilationEvent)>&&)",93957341484640,93957341484721],["void std::__1::__function::__policy::__large_destroy<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::WaitForCompilationEvent(v8::internal::wasm::CompilationEvent)::$_1, void (v8::internal::wasm::CompilationEvent)> >(void*)",93957341485392,93957341485513],["v8::internal::metrics::Recorder::DelayedEvent<v8::metrics::WasmModuleCompiled>::Run(std::__1::shared_ptr<v8::internal::metrics::Recorder> const&)",93957341486864,93957341486906],["std::__1::__shared_ptr_emplace<v8::base::Semaphore, std::__1::allocator<v8::base::Semaphore> >::__on_zero_shared()",93957341486992,93957341487006],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::wasm::RecompileNativeModule(v8::internal::wasm::NativeModule*, v8::internal::wasm::TieringState)::$_0, void (v8::internal::wasm::CompilationEvent)> >(void const*)",93957341487040,93957341487091],["v8::internal::wasm::AsyncCompileJob::DecodeModule::~DecodeModule()",93957341487184,93957341487257],["v8::internal::wasm::AsyncCompileJob::DecodeModule::RunInBackground(v8::internal::wasm::AsyncCompileJob*)",93957341487344,93957341489468],["v8::internal::Builtin_Impl_Stats_ArrayPrototypeFill(int, unsigned long*, v8::internal::Isolate*)",93957335701344,93957335701816],["v8::internal::Builtin_Impl_Stats_ArrayUnshift(int, unsigned long*, v8::internal::Isolate*)",93957335707712,93957335708184],["v8::internal::HandleScope::~HandleScope()",93957335717968,93957335718029],["v8::internal::(anonymous namespace)::GenericArrayPush(v8::internal::Isolate*, v8::internal::BuiltinArguments*)",93957335718960,93957335719856],["v8::internal::Object::GetPropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>)",93957335720576,93957335720846],["v8::internal::(anonymous namespace)::Fast_ArrayConcat(v8::internal::Isolate*, v8::internal::BuiltinArguments*)",93957335721168,93957335722082],["v8::internal::(anonymous namespace)::IterateElementsSlow(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, unsigned int, v8::internal::(anonymous namespace)::ArrayConcatVisitor*)",93957335722560,93957335723195],["v8::internal::(anonymous namespace)::CollectElementIndices(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, unsigned int, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >*)",93957335723376,93957335724947],["_ZNSt3__16vectorIN2v88internal4wasm19WasmCompilationUnitENS_9allocatorIS4_EEE6insertINS_11__wrap_iterIPS4_EEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISD_E9referenceEEE5valueESB_E4typeENS9_IPKS4_EESD_SD_",93957341470672,93957341473818],["std::__1::__shared_ptr_emplace<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::allocator<v8::internal::wasm::JSToWasmWrapperCompilationUnit> >::__on_zero_shared()",93957341480752,93957341480766],["v8::internal::wasm::(anonymous namespace)::BackgroundCompileJob::GetMaxConcurrency(unsigned long) const",93957341483616,93957341483814],["std::__1::__shared_ptr_emplace<std::__1::atomic<bool>, std::__1::allocator<std::__1::atomic<bool> > >::~__shared_ptr_emplace()",93957341485168,93957341485188],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::WaitForCompilationEvent(v8::internal::wasm::CompilationEvent)::$_1, void (v8::internal::wasm::CompilationEvent)> >(void const*)",93957341485296,93957341485380],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::WaitForCompilationEvent(v8::internal::wasm::CompilationEvent)::WaitForEventDelegate::ShouldYield()",93957341485520,93957341485534],["std::__1::__unordered_map_hasher<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>::operator()(std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > const&) const",93957341486688,93957341486855],["std::__1::__shared_ptr_emplace<v8::base::Semaphore, std::__1::allocator<v8::base::Semaphore> >::~__shared_ptr_emplace()",93957341486912,93957341486932],["v8::internal::Builtin_HandleApiCallAsFunction(int, unsigned long*, v8::internal::Isolate*)",93957335698672,93957335698718],["v8::internal::Builtin_Impl_ArrayPush(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335703632,93957335704257],["v8::internal::Builtin_Impl_ArrayShift(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335705968,93957335707669],["v8::internal::Builtin_ArrayConcat(int, unsigned long*, v8::internal::Isolate*)",93957335708480,93957335708512],["v8::internal::(anonymous namespace)::GenericArrayFill(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>, double, double)",93957335717632,93957335717961],["v8::internal::(anonymous namespace)::EnsureJSArrayWithWritableFastElements(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments*, int, int)",93957335718032,93957335718331],["v8::internal::Object::SetPropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>, v8::internal::StoreOrigin)",93957335718640,93957335718949],["v8::internal::(anonymous namespace)::GenericArrayPop(v8::internal::Isolate*, v8::internal::BuiltinArguments*)",93957335719856,93957335720481],["void* std::__1::__function::__policy::__large_clone<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::CompilationTimeCallback, void (v8::internal::wasm::CompilationEvent)> >(void const*)",93957341463568,93957341463695],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<v8::internal::wasm::WasmImportWrapperCache::CacheKey, void*>*>, bool> std::__1::__hash_table<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmImportWrapperCache::CacheKeyHash, std::__1::equal_to<v8::internal::wasm::WasmImportWrapperCache::CacheKey>, std::__1::allocator<v8::internal::wasm::WasmImportWrapperCache::CacheKey> >::__emplace_unique_key_args<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmImportWrapperCache::CacheKey const&>(v8::internal::wasm::WasmImportWrapperCache::CacheKey const&, v8::internal::wasm::WasmImportWrapperCache::CacheKey const&)",93957341475984,93957341477011],["std::__1::__shared_ptr_emplace<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::allocator<v8::internal::wasm::JSToWasmWrapperCompilationUnit> >::~__shared_ptr_emplace()",93957341480672,93957341480692],["_ZNSt3__16vectorINS_10shared_ptrIN2v88internal4wasm30JSToWasmWrapperCompilationUnitEEENS_9allocatorIS6_EEE6insertIPS6_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS6_NS_15iterator_traitsISD_E9referenceEEE5valueENS_11__wrap_iterISB_EEE4typeENSH_IPKS6_EESD_SD_",93957341482112,93957341483201],["v8::internal::wasm::(anonymous namespace)::BackgroundCompileJob::Run(v8::JobDelegate*)",93957341483520,93957341483614],["std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::assign(unsigned long, unsigned char const&)",93957341483824,93957341484637],["void std::__1::vector<std::__1::function<void (v8::internal::wasm::CompilationEvent)>, std::__1::allocator<std::__1::function<void (v8::internal::wasm::CompilationEvent)> > >::__emplace_back_slow_path<std::__1::function<void (v8::internal::wasm::CompilationEvent)> >(std::__1::function<void (v8::internal::wasm::CompilationEvent)>&&)",93957341484736,93957341485159],["std::__1::__shared_ptr_emplace<std::__1::atomic<bool>, std::__1::allocator<std::__1::atomic<bool> > >::~__shared_ptr_emplace()",93957341485200,93957341485238],["std::__1::__deque_base<v8::internal::TranslatedValue, std::__1::allocator<v8::internal::TranslatedValue> >::~__deque_base()",93957335694160,93957335694367],["v8::internal::(anonymous namespace)::RelocatableArguments::IterateInstance(v8::internal::RootVisitor*)",93957335699744,93957335699833],["v8::internal::Builtin_ArrayPush(int, unsigned long*, v8::internal::Isolate*)",93957335703120,93957335703152],["v8::internal::Builtin_Impl_Stats_ArrayPop(int, unsigned long*, v8::internal::Isolate*)",93957335704304,93957335704776],["v8::internal::Builtin_Impl_Stats_ArrayShift(int, unsigned long*, v8::internal::Isolate*)",93957335705488,93957335705960],["v8::internal::Builtin_ArrayUnshift(int, unsigned long*, v8::internal::Isolate*)",93957335707680,93957335707712],["v8::internal::Builtin_Impl_ArrayUnshift(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335708192,93957335708468],["v8::internal::Builtin_Impl_Stats_ArrayConcat(int, unsigned long*, v8::internal::Isolate*)",93957335708512,93957335708984],["v8::internal::wasm::AsyncStreamingProcessor::OnAbort()",93957341459312,93957341459374],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::TriggerCallbacks(v8::base::EnumSet<v8::internal::wasm::CompilationEvent, int>)",93957341467776,93957341468495],["std::__1::vector<std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > > >::reserve(unsigned long)",93957341474528,93957341475193],["std::__1::__hash_table<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmImportWrapperCache::CacheKeyHash, std::__1::equal_to<v8::internal::wasm::WasmImportWrapperCache::CacheKey>, std::__1::allocator<v8::internal::wasm::WasmImportWrapperCache::CacheKey> >::__rehash(unsigned long)",93957341477408,93957341478158],["std::__1::__hash_table<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, std::__1::__unordered_map_hasher<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>, std::__1::__unordered_map_equal<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::unique_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::default_delete<v8::internal::wasm::JSToWasmWrapperCompilationUnit> > > > >::__rehash(unsigned long)",93957341479824,93957341480661],["std::__1::__shared_ptr_emplace<v8::internal::wasm::JSToWasmWrapperCompilationUnit, std::__1::allocator<v8::internal::wasm::JSToWasmWrapperCompilationUnit> >::~__shared_ptr_emplace()",93957341480704,93957341480742],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::AddCompilationUnits(v8::internal::Vector<v8::internal::wasm::WasmCompilationUnit>, v8::internal::Vector<v8::internal::wasm::WasmCompilationUnit>, v8::internal::Vector<std::__1::shared_ptr<v8::internal::wasm::JSToWasmWrapperCompilationUnit> >)",93957341480768,93957341482107],["v8::internal::wasm::(anonymous namespace)::BackgroundCompileJob::~BackgroundCompileJob()",93957341483216,93957341483358],["v8::internal::FindCaller(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>)",93957335691216,93957335691874],["v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335695248,93957335695620],["v8::internal::Builtin_HandleApiCallAsConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335699200,93957335699249],["v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo)",93957335700368,93957335701304],["v8::internal::Builtin_Impl_ArrayPrototypeFill(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335701824,93957335703113],["v8::internal::Builtin_Impl_Stats_ArrayPush(int, unsigned long*, v8::internal::Isolate*)",93957335703152,93957335703624],["v8::internal::Builtin_ArrayPop(int, unsigned long*, v8::internal::Isolate*)",93957335704272,93957335704304],["v8::internal::Builtin_Impl_ArrayPop(v8::internal::BuiltinArguments, v8::internal::Isolate*)",93957335704784,93957335705447],["v8::internal::wasm::(anonymous namespace)::AddImportWrapperUnits(v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::CompilationUnitBuilder*)",93957341454256,93957341454626],["v8::internal::wasm::(anonymous namespace)::ApplyHintToExecutionTier(v8::internal::wasm::WasmCompilationHintTier, v8::internal::wasm::ExecutionTier)",93957341461168,93957341461211],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::GetNextCompilationUnit(v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::Queue*, v8::internal::wasm::(anonymous namespace)::CompileBaselineOnly)",93957341463840,93957341465880],["v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::GetBigUnitOfTier(int)",93957341469360,93957341469804],["void std::__1::vector<v8::internal::wasm::WasmCompilationResult, std::__1::allocator<v8::internal::wasm::WasmCompilationResult> >::__emplace_back_slow_path<v8::internal::wasm::WasmCompilationResult>(v8::internal::wasm::WasmCompilationResult&&)",93957341473824,93957341474521],["void std::__1::vector<std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > > >::__emplace_back_slow_path<std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > >(std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >&&)",93957341475200,93957341475971],["std::__1::__hash_table<v8::internal::wasm::WasmImportWrapperCache::CacheKey, v8::internal::wasm::WasmImportWrapperCache::CacheKeyHash, std::__1::equal_to<v8::internal::wasm::WasmImportWrapperCache::CacheKey>, std::__1::allocator<v8::internal::wasm::WasmImportWrapperCache::CacheKey> >::rehash(unsigned long)",93957341477024,93957341477395],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, void*>*>, bool> std::__1::__hash_table<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, std::__1::equal_to<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > >, std::__1::allocator<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > > >::__emplace_unique_key_args<std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > const&>(std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > const&, std::__1::pair<bool, v8::internal::Signature<v8::internal::wasm::ValueType> > const&)",93957341478160,93957341479429],["v8::internal::Accessors::StringLengthGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335687152,93957335687501],["v8::internal::Accessors::BoundFunctionLengthGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335692816,93957335693176],["v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*)",93957335694736,93957335694768],["v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<true>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments)",93957335696560,93957335697316],["v8::internal::Builtin_Impl_Stats_HandleApiCallAsFunction(int, unsigned long*, v8::internal::Isolate*)",93957335698720,93957335699194],["v8::internal::Builtin_Impl_Stats_HandleApiCallAsConstructor(int, unsigned long*, v8::internal::Isolate*)",93957335699264,93957335699741],["v8::internal::HandleApiCallAsFunctionOrConstructor(v8::internal::Isolate*, bool, v8::internal::BuiltinArguments)",93957335699840,93957335700361],["v8::internal::Builtin_ArrayPrototypeFill(int, unsigned long*, v8::internal::Isolate*)",93957335701312,93957335701344],["v8::internal::wasm::AsyncStreamingProcessor::~AsyncStreamingProcessor()",93957341451248,93957341451276],["v8::internal::wasm::(anonymous namespace)::CompilationUnitBuilder::AddUnits(unsigned int)",93957341457408,93957341458302],["v8::internal::wasm::(anonymous namespace)::CompileJSToWasmWrapperJob::Run(v8::JobDelegate*)",93957341460240,93957341460668],["void std::__1::__function::__policy_invoker<void (v8::internal::wasm::CompilationEvent)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::CompilationTimeCallback, void (v8::internal::wasm::CompilationEvent)> >(std::__1::__function::__policy_storage const*, v8::internal::wasm::CompilationEvent)",93957341462816,93957341463519],["void std::__1::__function::__policy::__large_destroy<std::__1::__function::__default_alloc_func<v8::internal::wasm::(anonymous namespace)::CompilationTimeCallback, void (v8::internal::wasm::CompilationEvent)> >(void*)",93957341463696,93957341463831],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::SchedulePublishCompilationResults(std::__1::vector<std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::wasm::WasmCode, std::__1::default_delete<v8::internal::wasm::WasmCode> > > >)",93957341465888,93957341467765],["void std::__1::vector<std::__1::unique_ptr<v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::QueueImpl, std::__1::default_delete<v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::QueueImpl> >, std::__1::allocator<std::__1::unique_ptr<v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::QueueImpl, std::__1::default_delete<v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::QueueImpl> > > >::emplace_back<std::__1::unique_ptr<v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::QueueImpl, std::__1::default_delete<v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::QueueImpl> > >(std::__1::unique_ptr<v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::QueueImpl, std::__1::default_delete<v8::internal::wasm::(anonymous namespace)::CompilationUnitQueues::QueueImpl> >&&)",93957341468496,93957341469354],["_ZNSt3__16vectorIN2v88internal4wasm19WasmCompilationUnitENS_9allocatorIS4_EEE6assignINS_11__wrap_iterIPS4_EEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISD_E9referenceEEE5valueEvE4typeESD_SD_",93957341469808,93957341470670],["v8::internal::Accessors::IsJSObjectFieldAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::Name>, v8::internal::FieldIndex*)",93957335684336,93957335684736],["v8::internal::Accessors::FunctionNameGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335688704,93957335688852],["v8::internal::FrameFunctionIterator::MaterializeFunction()",93957335692144,93957335692628],["v8::internal::Accessors::ErrorStackGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335693424,93957335693999],["v8::internal::FrameFunctionIterator::next()",93957335694368,93957335694724],["v8::internal::Builtin_Impl_Stats_HandleApiCall(int, unsigned long*, v8::internal::Isolate*)",93957335694768,93957335695240],["v8::internal::Builtins::InvokeApiFunction(v8::internal::Isolate*, bool, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Handle<v8::internal::HeapObject>)",93957335695632,93957335696554],["v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments)",93957335697328,93957335698665],["v8::internal::wasm::AsyncCompileJob::FinishCompile(bool)",93957341445776,93957341447768],["v8::internal::wasm::AsyncStreamingProcessor::ProcessSection(v8::internal::wasm::SectionCode, v8::internal::Vector<unsigned char const>, unsigned int)",93957341452608,93957341452934],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::InitializeCompilationProgress(bool, int, int)",93957341455248,93957341456458],["v8::internal::wasm::AsyncStreamingProcessor::OnFinishedStream(v8::internal::OwnedVector<unsigned char>)",93957341458336,93957341459292],["v8::internal::wasm::AsyncStreamingProcessor::Deserialize(v8::internal::Vector<unsigned char const>, v8::internal::Vector<unsigned char const>)",93957341459376,93957341460233],["v8::internal::wasm::CompileImportWrapper(v8::internal::wasm::WasmEngine*, v8::internal::wasm::NativeModule*, v8::internal::Counters*, v8::internal::compiler::WasmImportCallKind, v8::internal::Signature<v8::internal::wasm::ValueType> const*, int, v8::internal::wasm::WasmImportWrapperCache::ModificationScope*)",93957341460672,93957341461158],["v8::internal::wasm::(anonymous namespace)::InitializeCompilationUnits(v8::internal::Isolate*, v8::internal::wasm::NativeModule*)",93957341461216,93957341462814],["v8::internal::metrics::Recorder::DelayedEvent<v8::metrics::WasmModuleTieredUp>::Run(std::__1::shared_ptr<v8::internal::metrics::Recorder> const&)",93957341463520,93957341463562],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Operand, v8::internal::Smi>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Operand, v8::internal::Smi)",93957335681632,93957335681843],["v8::internal::Accessors::ArrayLengthSetter(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)",93957335685808,93957335686704],["v8::internal::Accessors::FunctionPrototypeSetter(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)",93957335688128,93957335688357],["v8::internal::(anonymous namespace)::GetFrameArguments(v8::internal::Isolate*, v8::internal::JavaScriptFrameIterator*, int)",93957335689056,93957335690584],["v8::internal::FrameFunctionIterator::FindFirstNativeOrUserJavaScript()",93957335691888,93957335692138],["v8::internal::Accessors::FunctionCallerGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335692640,93957335692802],["v8::internal::Accessors::BoundFunctionNameGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335693184,93957335693424],["v8::internal::Accessors::ErrorStackSetter(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)",93957335694000,93957335694158],["v8::internal::wasm::RecompileNativeModule(v8::internal::wasm::NativeModule*, v8::internal::wasm::TieringState)",93957341435696,93957341437632],["v8::internal::wasm::AsyncCompileJob::AsyncCompileFailed()",93957341449248,93957341449487],["void v8::internal::wasm::AsyncCompileJob::DoSync<v8::internal::wasm::AsyncCompileJob::DecodeFail, (v8::internal::wasm::AsyncCompileJob::UseExistingForegroundTask)0, v8::internal::wasm::WasmError const&>(v8::internal::wasm::WasmError const&)",93957341452048,93957341452323],["std::__1::unique_ptr<v8::internal::wasm::(anonymous namespace)::CompilationUnitBuilder, std::__1::default_delete<v8::internal::wasm::(anonymous namespace)::CompilationUnitBuilder> >::reset(v8::internal::wasm::(anonymous namespace)::CompilationUnitBuilder*)",93957341453168,93957341453346],["v8::internal::wasm::(anonymous namespace)::AddExportWrapperUnits(v8::internal::Isolate*, v8::internal::wasm::WasmEngine*, v8::internal::wasm::NativeModule*, v8::internal::wasm::(anonymous namespace)::CompilationUnitBuilder*, v8::internal::wasm::WasmFeatures const&)",93957341454640,93957341455237],["v8::internal::wasm::AsyncStreamingProcessor::ProcessFunctionBody(v8::internal::Vector<unsigned char const>, unsigned int)",93957341456464,93957341457395],["v8::internal::wasm::AsyncStreamingProcessor::OnFinishedChunk()",93957341458304,93957341458323],["v8::internal::wasm::AsyncStreamingProcessor::OnError(v8::internal::wasm::WasmError const&)",93957341459296,93957341459306],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand)",93957335678384,93957335678874],["v8::internal::baseline::BytecodeOffsetIterator::BytecodeOffsetIterator(v8::internal::ByteArray, v8::internal::BytecodeArray)",93957335683008,93957335683175],["v8::internal::Accessors::ArgumentsIteratorGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335685152,93957335685480],["v8::internal::Accessors::ModuleNamespaceEntrySetter(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)",93957335686864,93957335687113],["v8::internal::Accessors::FunctionPrototypeGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335687504,93957335688125],["v8::internal::Accessors::FunctionLengthGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335688368,93957335688690],["v8::internal::Accessors::FunctionGetArguments(v8::internal::JavaScriptFrame*, int)",93957335688864,93957335689051],["v8::internal::Accessors::FunctionArgumentsGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335690592,93957335691209],["v8::internal::wasm::CompilationState::failed() const",93957341428016,93957341428027],["v8::internal::wasm::AsyncCompileJob::CreateStreamingDecoder()",93957341444400,93957341444752],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::PublishDetectedFeatures(v8::internal::Isolate*)",93957341448800,93957341449004],["v8::internal::wasm::AsyncCompileJob::AsyncCompileSucceeded(v8::internal::Handle<v8::internal::WasmModuleObject>)",93957341450592,93957341450954],["v8::internal::wasm::AsyncStreamingProcessor::FinishAsyncCompileJobWithError(v8::internal::wasm::WasmError const&)",93957341451280,93957341452036],["v8::internal::wasm::AsyncStreamingProcessor::ProcessModuleHeader(v8::internal::Vector<unsigned char const>, unsigned int)",93957341452336,93957341452599],["v8::internal::wasm::AsyncStreamingProcessor::CommitCompilationUnits()",93957341452944,93957341453160],["v8::internal::wasm::AsyncStreamingProcessor::ProcessCodeSectionHeader(int, unsigned int, std::__1::shared_ptr<v8::internal::wasm::WireBytesStorage>, int, int)",93957341453360,93957341454255],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Handle<v8::internal::HeapObject>, unsigned int, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Handle<v8::internal::HeapObject>, unsigned int, v8::internal::Operand)",93957335676256,93957335676510],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand>::Push(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand)",93957335680288,93957335680638],["v8::internal::baseline::BytecodeOffsetIterator::BytecodeOffsetIterator(v8::internal::Handle<v8::internal::ByteArray>, v8::internal::Handle<v8::internal::BytecodeArray>)",93957335682752,93957335682962],["v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&))",93957335683248,93957335684037],["v8::internal::Accessors::ReplaceAccessorWithDataProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>)",93957335684736,93957335685138],["v8::internal::Accessors::ArrayLengthGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335685488,93957335685797],["v8::internal::Accessors::ModuleNamespaceEntryGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957335686704,93957335686864],["v8::internal::Accessors::MakeModuleNamespaceEntryInfo(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>)",93957335687120,93957335687144],["v8::internal::wasm::CompilationState::SetError()",93957341426064,93957341426202],["v8::internal::wasm::(anonymous namespace)::GetRequestedExecutionTiers(v8::internal::wasm::WasmModule const*, v8::internal::wasm::(anonymous namespace)::CompileMode, v8::internal::wasm::WasmFeatures const&, unsigned int)",93957341431472,93957341431672],["v8::internal::wasm::AsyncCompileJob::AsyncCompileJob(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, std::__1::unique_ptr<unsigned char [], std::__1::default_delete<unsigned char []> >, unsigned long, v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::Context>, char const*, std::__1::shared_ptr<v8::internal::wasm::CompilationResultResolver>, int)",93957341443376,93957341444155],["v8::internal::wasm::AsyncCompileJob::CreateNativeModule(std::__1::shared_ptr<v8::internal::wasm::WasmModule const>, unsigned long)",93957341445344,93957341445538],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::FinalizeJSToWasmWrappers(v8::internal::Isolate*, v8::internal::wasm::WasmModule const*, v8::internal::Handle<v8::internal::FixedArray>*)",93957341447776,93957341448792],["v8::internal::wasm::AsyncCompileJob::DecodeFailed(v8::internal::wasm::WasmError const&)",93957341449008,93957341449237],["v8::internal::wasm::(anonymous namespace)::ValidateSequentially(v8::internal::wasm::WasmModule const*, v8::internal::wasm::NativeModule*, v8::internal::Counters*, v8::internal::AccountingAllocator*, v8::internal::wasm::ErrorThrower*, bool, v8::internal::wasm::(anonymous namespace)::OnlyLazyFunctions)",93957341449488,93957341450581],["v8::internal::wasm::AsyncStreamingProcessor::~AsyncStreamingProcessor()",93957341450960,93957341451235],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi)",93957335674208,93957335674442],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::TaggedIndex, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::TaggedIndex, v8::internal::Operand)",93957335677120,93957335677367],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand)",93957335679168,93957335679860],["v8::internal::baseline::detail::ArgumentSettingHelper<int, int>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, int, int)",93957335680992,93957335681156],["v8::internal::GenerateBaselineCode(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>)",93957335681856,93957335682751],["v8::internal::baseline::BytecodeOffsetIterator::UpdatePointersCallback(void*)",93957335682976,93957335682996],["v8::internal::baseline::BytecodeOffsetIterator::~BytecodeOffsetIterator()",93957335683184,93957335683235],["v8::internal::Accessors::ReconfigureToDataProperty(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)",93957335684048,93957335684324],["v8::internal::wasm::JumpTableAssembler::NopBytes(int)",93957341422528,93957341422538],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::AddCallback(std::__1::function<void (v8::internal::wasm::CompilationEvent)>)",93957341426608,93957341426788],["v8::internal::wasm::CompilationState::New(std::__1::shared_ptr<v8::internal::wasm::NativeModule> const&, std::__1::shared_ptr<v8::internal::Counters>)",93957341428048,93957341428833],["v8::internal::wasm::CompileToNativeModule(v8::internal::Isolate*, v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::ErrorThrower*, std::__1::shared_ptr<v8::internal::wasm::WasmModule const>, v8::internal::wasm::ModuleWireBytes const&, v8::internal::Handle<v8::internal::FixedArray>*, int)",93957341432368,93957341434113],["v8::internal::wasm::(anonymous namespace)::ExecuteCompilationUnits(std::__1::weak_ptr<v8::internal::wasm::NativeModule>, v8::internal::Counters*, v8::JobDelegate*, v8::internal::wasm::(anonymous namespace)::CompileBaselineOnly)",93957341437632,93957341443368],["v8::internal::wasm::AsyncCompileJob::Start()",93957341444160,93957341444396],["v8::internal::wasm::AsyncCompileJob::~AsyncCompileJob()",93957341444752,93957341445340],["v8::internal::wasm::AsyncCompileJob::GetOrCreateNativeModule(std::__1::shared_ptr<v8::internal::wasm::WasmModule const>, unsigned long)",93957341445552,93957341445771],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335671856,93957335672120],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Operand, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Operand, v8::internal::TaggedIndex)",93957335675088,93957335675302],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Register)",93957335676736,93957335676922],["void std::__1::__function::__policy_invoker<void (v8::internal::Label*, v8::internal::Label::Distance)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::baseline::BaselineCompiler::VisitForInContinue()::$_8, void (v8::internal::Label*, v8::internal::Label::Distance)> >(std::__1::__function::__policy_storage const*, v8::internal::Label*, v8::internal::Label::Distance)",93957335677600,93957335677912],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand)",93957335678880,93957335679158],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Operand)",93957335679872,93957335680280],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand)",93957335680640,93957335680977],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::TaggedIndex, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::TaggedIndex, v8::internal::TaggedIndex)",93957335681168,93957335681618],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::SimdReplaceLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, unsigned int)",93957341417616,93957341418627],["v8::internal::wasm::TraceMemoryOperation(v8::base::Optional<v8::internal::wasm::ExecutionTier>, v8::internal::wasm::MemoryTracingInfo const*, int, int, unsigned char*)",93957341424336,93957341424877],["v8::internal::wasm::CompilationState::GetWireBytesStorage() const",93957341426400,93957341426478],["v8::internal::wasm::(anonymous namespace)::CompilationStateImpl::WaitForCompilationEvent(v8::internal::wasm::CompilationEvent)",93957341426816,93957341427914],["v8::internal::wasm::CompilationState::set_compilation_id(int)",93957341428032,93957341428044],["v8::internal::wasm::CompileLazy(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmModuleObject>, int)",93957341428848,93957341431459],["v8::internal::wasm::TriggerTierUp(v8::internal::Isolate*, v8::internal::wasm::NativeModule*, int)",93957341431680,93957341432359],["v8::internal::wasm::CompileJsToWasmWrappers(v8::internal::Isolate*, v8::internal::wasm::WasmModule const*, v8::internal::Handle<v8::internal::FixedArray>*)",93957341434128,93957341435684],["void std::__1::__function::__policy_invoker<void (v8::internal::Label*, v8::internal::Label::Distance)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::baseline::BaselineCompiler::VisitIntrinsicIsJSReceiver(v8::internal::interpreter::RegisterList)::$_2, void (v8::internal::Label*, v8::internal::Label::Distance)> >(std::__1::__function::__policy_storage const*, v8::internal::Label*, v8::internal::Label::Distance)",93957335668720,93957335669057],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335672880,93957335673151],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject> >::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>)",93957335674640,93957335674881],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Smi, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Smi, v8::internal::TaggedIndex)",93957335675776,93957335675962],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::Operand)",93957335676512,93957335676724],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Handle<v8::internal::ScopeInfo>, unsigned int>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Handle<v8::internal::ScopeInfo>, unsigned int)",93957335676928,93957335677114],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::TaggedIndex, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::TaggedIndex, v8::internal::Operand)",93957335677376,93957335677593],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand)",93957335677920,93957335678373],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::RefTest(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341414688,93957341414894],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::SimdOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode, v8::internal::Vector<v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value>, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341421904,93957341422261],["v8::internal::wasm::LocalDeclEncoder::Emit(unsigned char*) const",93957341422896,93957341423540],["v8::internal::wasm::CompilationState::InitCompileJob(v8::internal::wasm::WasmEngine*)",93957341425712,93957341425926],["v8::internal::wasm::CompilationState::SetWireBytesStorage(std::__1::shared_ptr<v8::internal::wasm::WireBytesStorage>)",93957341426208,93957341426395],["v8::internal::wasm::CompilationState::AddCallback(std::__1::function<void (v8::internal::wasm::CompilationEvent)>)",93957341426480,93957341426607],["v8::internal::wasm::CompilationState::WaitForTopTierFinished()",93957341426800,93957341426815],["v8::internal::wasm::CompilationState::InitializeAfterDeserialization()",93957341427920,93957341428011],["v8::internal::baseline::detail::PushAllHelper<unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Push(v8::internal::baseline::BaselineAssembler*, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335666160,93957335666425],["v8::internal::baseline::detail::PushAllHelper<v8::internal::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Push(v8::internal::baseline::BaselineAssembler*, v8::internal::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335670512,93957335670726],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335672368,93957335672640],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::TaggedIndex)",93957335673520,93957335673918],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi)",93957335674448,93957335674634],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject> >::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>)",93957335674896,93957335675087],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Smi, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Smi, v8::internal::TaggedIndex)",93957335675312,93957335675764],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::HeapObject>, unsigned int, v8::internal::Operand>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::HeapObject>, unsigned int, v8::internal::Operand)",93957335675968,93957335676255],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLoadMem(v8::internal::wasm::LoadType, int)",93957341391808,93957341392713],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::BrOnFunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*, unsigned int)",93957341415792,93957341416136],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLoadLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::LoadType, unsigned int)",93957341419552,93957341420732],["v8::internal::wasm::JumpTableAssembler::EmitJumpSlot(unsigned long)",93957341422336,93957341422383],["v8::internal::wasm::LocalDeclEncoder::Size() const",93957341422544,93957341422891],["v8::internal::wasm::LocalDeclEncoder::AddLocals(unsigned int, v8::internal::wasm::ValueType)",93957341423552,93957341424321],["v8::internal::wasm::CompilationState::~CompilationState()",93957341424880,93957341425712],["v8::internal::wasm::CompilationState::CancelCompilation()",93957341425936,93957341426049],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register)",93957335662896,93957335663293],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335667216,93957335667486],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, unsigned int, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335669424,93957335669862],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335670976,93957335671551],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335672128,93957335672356],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Push(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335672640,93957335672880],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::interpreter::Register, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::interpreter::Register, v8::internal::TaggedIndex)",93957335673152,93957335673515],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi)",93957335673920,93957335674200],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::TypeCheckBranch(v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Control*, bool, unsigned int)",93957341383648,93957341383827],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::StructNewWithRtt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::StructIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2> const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341413728,93957341414170],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::AssertNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341415136,93957341415243],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::BrOnI31(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*, unsigned int)",93957341416496,93957341416840],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLoadTransformMem(v8::internal::wasm::LoadType, v8::internal::wasm::LoadTransformationKind, unsigned int)",93957341418640,93957341419545],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeStoreLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::StoreType, unsigned int)",93957341420736,93957341421891],["v8::internal::wasm::JumpTableAssembler::EmitLazyCompileJumpSlot(unsigned int, unsigned long)",93957341422272,93957341422333],["v8::internal::wasm::JumpTableAssembler::EmitFarJumpSlot(unsigned long)",93957341422384,93957341422524],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335659968,93957335660390],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335664288,93957335664652],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335666704,93957335666973],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335668000,93957335668226],["void std::__1::__function::__policy_invoker<void (v8::internal::Label*, v8::internal::Label::Distance)>::__call_impl<std::__1::__function::__default_alloc_func<v8::internal::baseline::BaselineCompiler::VisitIntrinsicIsArray(v8::internal::interpreter::RegisterList)::$_3, void (v8::internal::Label*, v8::internal::Label::Distance)> >(std::__1::__function::__policy_storage const*, v8::internal::Label*, v8::internal::Label::Distance)",93957335669072,93957335669409],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335669872,93957335670501],["v8::internal::baseline::detail::PushAllHelper<v8::internal::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335670736,93957335670973],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335671552,93957335671849],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::MergeValuesInto(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Control*, v8::internal::wasm::Merge<v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341377520,93957341377767],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::DoReturnCall(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::CallMode, unsigned int, v8::internal::compiler::WasmGraphBuilder::CheckForNull, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, v8::internal::Signature<v8::internal::wasm::ValueType> const*, unsigned int, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const*)",93957341386368,93957341387244],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeGCOpcode(v8::internal::wasm::WasmOpcode, unsigned int)",93957341393936,93957341413651],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::ArrayNewDefault(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::ArrayIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2> const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341414480,93957341414588],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::RefCast(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341414896,93957341415125],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::BrOnCast(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*, unsigned int)",93957341415248,93957341415779],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::BrOnData(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*, unsigned int)",93957341416144,93957341416488],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::SimdExtractLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, unsigned int)",93957341416848,93957341417603],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335656960,93957335657185],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::RootIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::RootIndex)",93957335661568,93957335661803],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::RootIndex, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::RootIndex, v8::internal::interpreter::Register)",93957335663664,93957335663996],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335665200,93957335665445],["v8::internal::baseline::detail::PushAllHelper<unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::PushReverse(v8::internal::baseline::BaselineAssembler*, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335666432,93957335666698],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList>::Push(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335666976,93957335667216],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335667488,93957335667993],["void v8::internal::baseline::detail::MoveArgumentsForDescriptor<v8::internal::Register, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, v8::internal::Register, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335668240,93957335668710],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::PopTypeError(int, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, v8::internal::wasm::ValueType)",93957341373856,93957341374049],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::CheckForExceptionImpl(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::compiler::Node*)",93957341380256,93957341380847],["v8::base::SmallVector<v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, 2ul>::SmallVector(v8::base::SmallVector<v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, 2ul> const&)",93957341385200,93957341385339],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::BuildSimpleOperator(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType)",93957341390176,93957341390849],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeStoreMem(v8::internal::wasm::StoreType, int)",93957341392720,93957341393934],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::PopTypeError(int, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957341413664,93957341413725],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::StructNewDefault(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::StructIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2> const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341414176,93957341414475],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::ObjectRelatedWithRtt(v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value)",93957341414592,93957341414687],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335653488,93957335653967],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335658128,93957335658483],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex)",93957335660720,93957335661070],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register)",93957335662000,93957335662356],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register)",93957335663296,93957335663662],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register)",93957335664000,93957335664284],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335664656,93957335665187],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335665456,93957335666160],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeAtomic(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341367968,93957341370944],["void std::__1::vector<v8::internal::compiler::WasmLoopInfo, std::__1::allocator<v8::internal::compiler::WasmLoopInfo> >::__emplace_back_slow_path<v8::internal::compiler::Node*&, unsigned int&, bool>(v8::internal::compiler::Node*&, unsigned int&, bool&&)",93957341375424,93957341375721],["_ZNSt3__16vectorIN2v88internal6HandleINS2_3MapEEENS2_13ZoneAllocatorIS5_EEE6assignIPS5_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS5_NS_15iterator_traitsISC_E9referenceEEE5valueEvE4typeESC_SC_",93957341378656,93957341379822],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::DoReturn(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, unsigned int)",93957341382240,93957341383486],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::BrOrRet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, unsigned int, unsigned int)",93957341383840,93957341385194],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::DoCall(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::CallMode, unsigned int, v8::internal::compiler::WasmGraphBuilder::CheckForNull, v8::internal::compiler::Node*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, unsigned int, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value const*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341385344,93957341386357],["std::__1::vector<v8::internal::compiler::Node*, v8::internal::ZoneAllocator<v8::internal::compiler::Node*> >::insert(std::__1::__wrap_iter<v8::internal::compiler::Node* const*>, unsigned long, v8::internal::compiler::Node* const&)",93957341387248,93957341390173],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::BuildSimpleOperator(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType)",93957341390864,93957341391802],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::RegisterList>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::RegisterList)",93957335650784,93957335651078],["v8::internal::baseline::detail::PushAllHelper<unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::PushReverse(v8::internal::baseline::BaselineAssembler*, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335655504,93957335655769],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Push(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335657472,93957335657793],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335659024,93957335659511],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335660400,93957335660706],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex)",93957335661072,93957335661562],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::RootIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::RootIndex)",93957335661808,93957335662000],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::Register)",93957335662368,93957335662887],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeRefIsNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352688,93957341353365],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::WrapLocalsAtLoopExit(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Control*)",93957341371616,93957341371985],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Steal(v8::internal::Zone*, v8::internal::wasm::(anonymous namespace)::SsaEnv*)",93957341374512,93957341374787],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::TypeCheckMergeValues(v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Control*, unsigned int, v8::internal::wasm::Merge<v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value>*)",93957341375888,93957341376216],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Goto(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::(anonymous namespace)::SsaEnv*)",93957341377776,93957341378650],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::TerminateThrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*)",93957341379824,93957341380254],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::PopControl(v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Control*)",93957341380848,93957341382233],["v8::base::SmallVector<v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, 2ul>::Grow(unsigned long)",93957341383488,93957341383646],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Smi, unsigned int>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Smi, unsigned int)",93957335647744,93957335647925],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::interpreter::Register)",93957335652304,93957335652629],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335654672,93957335655217],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335656144,93957335656674],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335657200,93957335657467],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335657808,93957335658126],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335658496,93957335659015],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335659520,93957335659958],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32ReinterpretI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352240,93957341352271],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeRefEq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341355600,93957341355887],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::EndControl()",93957341371152,93957341371298],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::SetBlockType(v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Control*, v8::internal::wasm::BlockTypeImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>&, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value*)",93957341372720,93957341373395],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::PopTypeError(int, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, char const*)",93957341374064,93957341374499],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Split(v8::internal::Zone*, v8::internal::wasm::(anonymous namespace)::SsaEnv*)",93957341374800,93957341375413],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::TypeCheckFallThru()",93957341375728,93957341375875],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::TypeCheckUnreachableMerge(v8::internal::wasm::Merge<v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value>&, bool, unsigned int)",93957341376224,93957341377516],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex)",93957335644896,93957335645125],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::RegisterList)",93957335648944,93957335649431],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register)",93957335651440,93957335651928],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register)",93957335652848,93957335653116],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335653968,93957335654667],["v8::internal::baseline::detail::PushAllHelper<unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Push(v8::internal::baseline::BaselineAssembler*, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335655232,93957335655497],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335655776,93957335656140],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335656688,93957335656949],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32ConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351984,93957341352015],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64SExtendI8(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352368,93957341352399],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeRefAsNonNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341353696,93957341354199],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeNumeric(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341356112,93957341364588],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Trap(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::TrapReason)",93957341370944,93957341371149],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::BuildNestedLoopExits(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, unsigned int, bool, v8::base::SmallVector<v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::Value, 8ul>&, v8::internal::compiler::Node**)",93957341371312,93957341371615],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::PushControl(v8::internal::wasm::ControlKind, unsigned int, unsigned int)",93957341372000,93957341372710],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::EnsureStackArguments_Slow(int, unsigned int)",93957341373408,93957341373841],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex)",93957335642496,93957335642687],["v8::internal::baseline::detail::PushAllHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex>::PushReverse(v8::internal::baseline::BaselineAssembler*, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex)",93957335646592,93957335646858],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::Smi>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::Smi)",93957335648400,93957335648581],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, v8::internal::interpreter::RegisterList)",93957335649888,93957335650310],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register)",93957335651088,93957335651438],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::interpreter::Register)",93957335651936,93957335652299],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register)",93957335652640,93957335652838],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register)",93957335653120,93957335653476],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64SConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351728,93957341351759],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64UConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352112,93957341352143],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32SExtendI8(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352304,93957341352335],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64SExtendI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352432,93957341352463],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeRefFunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341353376,93957341353684],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeBrOnNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341354208,93957341355594],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeGC(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341355888,93957341356110],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeSimd(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341364592,93957341367955],["void std::__1::__function::__policy_invoker<void (unsigned char)>::__call_impl<std::__1::__function::__default_alloc_func<v8::base::VLQEncodeUnsigned<std::__1::allocator<unsigned char> >(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned int)::{lambda(unsigned char)#1}, void (unsigned char)> >(std::__1::__function::__policy_storage const*, unsigned char)",93957335640848,93957335640875],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::TaggedIndex, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::TaggedIndex, v8::internal::TaggedIndex)",93957335643360,93957335643534],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::Register, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::Register, v8::internal::TaggedIndex)",93957335645600,93957335646087],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, unsigned int>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, unsigned int)",93957335647312,93957335647493],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Smi>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Smi)",93957335647936,93957335648386],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, unsigned int, v8::internal::interpreter::RegisterList)",93957335648592,93957335648942],["v8::internal::baseline::detail::ArgumentSettingHelper<unsigned int, unsigned int, v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, unsigned int, unsigned int, v8::internal::interpreter::RegisterList)",93957335649440,93957335649878],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::RegisterList>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::RegisterList)",93957335650320,93957335650773],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64CopySign(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351456,93957341351493],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351856,93957341351887],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352048,93957341352079],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32ReinterpretF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352176,93957341352207],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64ReinterpretI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352272,93957341352303],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32SExtendI16(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352336,93957341352367],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64SExtendI16(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352400,93957341352431],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeRefNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352464,93957341352683],["void v8::internal::baseline::BaselineCompiler::CallRuntime<v8::internal::Register, v8::internal::Operand>(v8::internal::Runtime::FunctionId, v8::internal::Register, v8::internal::Operand)",93957335639232,93957335639438],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray> >::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray>)",93957335641744,93957335642001],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::TaggedIndex)",93957335642928,93957335643114],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name> >::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>)",93957335644000,93957335644398],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex)",93957335645136,93957335645585],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex)",93957335646096,93957335646583],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Register, unsigned int>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Register, unsigned int)",93957335646864,93957335647312],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::Smi, unsigned int>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::Smi, unsigned int)",93957335647504,93957335647733],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64NearestInt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351104,93957341351135],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32SConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351600,93957341351631],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64SConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351792,93957341351823],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32SConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351920,93957341351951],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352016,93957341352047],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64SConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352080,93957341352111],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64ConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352144,93957341352175],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64ReinterpretF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341352208,93957341352239],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Register>(v8::internal::Builtins::Name, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Register)",93957335636272,93957335636599],["v8::internal::MacroAssembler::~MacroAssembler()",93957335640352,93957335640455],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::Register, v8::internal::Register, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray> >::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::Register, v8::internal::Register, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray>)",93957335641120,93957335641446],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray> >::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray>)",93957335642256,93957335642442],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Handle<v8::internal::Name>, v8::internal::Register, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Handle<v8::internal::Name>, v8::internal::Register, v8::internal::TaggedIndex)",93957335642688,93957335642921],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex, v8::internal::TaggedIndex)",93957335643120,93957335643354],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex)",93957335643536,93957335643988],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex>::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex)",93957335644400,93957335644888],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Min(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350800,93957341350837],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351264,93957341351301],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32SConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351536,93957341351567],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351664,93957341351695],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64UConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351760,93957341351791],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64UConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351824,93957341351855],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351888,93957341351919],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32UConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351952,93957341351983],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Register, unsigned int, unsigned int, v8::internal::interpreter::Register, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335633568,93957335633936],["v8::internal::baseline::BaselineAssembler::Switch(v8::internal::Register, int, v8::internal::Label**, int)",93957335637664,93957335638146],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Operand, v8::internal::Smi>(v8::internal::Builtins::Name, v8::internal::Operand, v8::internal::Smi)",93957335639776,93957335640111],["v8::internal::Assembler::~Assembler()",93957335640672,93957335640767],["void std::__1::__invoke_void_return_wrapper<void, true>::__call<v8::base::VLQEncodeUnsigned<std::__1::allocator<unsigned char> >(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned int)::{lambda(unsigned char)#1}&, unsigned char>(v8::base::VLQEncodeUnsigned<std::__1::allocator<unsigned char> >(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >*, unsigned int)::{lambda(unsigned char)#1}&, unsigned char&&)",93957335640880,93957335641113],["v8::internal::baseline::detail::ArgumentSettingHelper<v8::internal::Register, v8::internal::Register, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray> >::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, v8::internal::Register, v8::internal::Register, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray>)",93957335641456,93957335641743],["v8::internal::baseline::detail::ArgumentSettingHelper<int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray> >::Set(v8::internal::baseline::BaselineAssembler*, v8::internal::CallInterfaceDescriptor, int, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray>)",93957335642016,93957335642245],["v8::internal::CallInterfaceDescriptor::InitializePlatformIndependent(v8::internal::CallInterfaceDescriptorData*)",93957335642448,93957335642492],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Floor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350480,93957341350511],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Neg(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350976,93957341351007],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351168,93957341351205],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Min(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351360,93957341351397],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32ConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351504,93957341351535],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32UConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351568,93957341351599],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32UConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351632,93957341351663],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351696,93957341351727],["void v8::internal::baseline::BaselineCompiler::CallRuntime<v8::internal::interpreter::RegisterList>(v8::internal::Runtime::FunctionId, v8::internal::interpreter::RegisterList)",93957335631024,93957335631315],["void v8::internal::baseline::BaselineCompiler::CallRuntime<v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi>(v8::internal::Runtime::FunctionId, v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi)",93957335634992,93957335635240],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Handle<v8::internal::ScopeInfo>, unsigned int>(v8::internal::Builtins::Name, v8::internal::Handle<v8::internal::ScopeInfo>, unsigned int)",93957335636928,93957335637255],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand>(v8::internal::Builtins::Name, unsigned int, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Operand)",93957335638560,93957335638919],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::TaggedIndex, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::TaggedIndex, v8::internal::TaggedIndex)",93957335639440,93957335639775],["v8::internal::AssemblerBase::RecordComment(char const*)",93957335640112,93957335640338],["std::__1::__deque_base<int, std::__1::allocator<int> >::~__deque_base()",93957335640464,93957335640671],["std::__1::__tree<std::__1::__value_type<int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> > >, std::__1::__map_value_compare<int, std::__1::__value_type<int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> > >, std::__1::less<int>, true>, std::__1::allocator<std::__1::__value_type<int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> > > > >::destroy(std::__1::__tree_node<std::__1::__value_type<int, std::__1::vector<v8::internal::HeapObject, std::__1::allocator<v8::internal::HeapObject> > >, void*>*)",93957335640768,93957335640837],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Shl(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350144,93957341350181],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350608,93957341350645],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32CopySign(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350896,93957341350933],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Floor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351040,93957341351071],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Sqrt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351136,93957341351167],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351216,93957341351253],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Div(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351312,93957341351349],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Max(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351408,93957341351445],["void v8::internal::baseline::BaselineCompiler::CallRuntime<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Smi, v8::internal::Operand, v8::internal::TaggedIndex>(v8::internal::Runtime::FunctionId, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Smi, v8::internal::Operand, v8::internal::TaggedIndex)",93957335628272,93957335628750],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Register, unsigned int, v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335632256,93957335632591],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi>(v8::internal::Builtins::Name, v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Smi)",93957335634272,93957335634627],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Smi, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Smi, v8::internal::TaggedIndex)",93957335635584,93957335635919],["void v8::internal::baseline::BaselineCompiler::CallRuntime<v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::ScopeInfo> >(v8::internal::Runtime::FunctionId, v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::ScopeInfo>)",93957335636608,93957335636916],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Operand>(v8::internal::Builtins::Name, v8::internal::Operand)",93957335637264,93957335637653],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Register, v8::internal::TaggedIndex, v8::internal::Operand>(v8::internal::Builtins::Name, v8::internal::Register, v8::internal::TaggedIndex, v8::internal::Operand)",93957335638160,93957335638549],["void v8::internal::baseline::BaselineCompiler::TailCallBuiltin<int, int>(v8::internal::Builtins::Name, int, int)",93957335638928,93957335639218],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349760,93957341349797],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Ror(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350336,93957341350373],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32NearestInt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350544,93957341350575],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350704,93957341350741],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Max(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350848,93957341350885],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Abs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350944,93957341350975],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Ceil(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351008,93957341351039],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Trunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341351072,93957341351103],["void v8::internal::baseline::BaselineCompiler::CallRuntime<v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Register>(v8::internal::Runtime::FunctionId, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Register)",93957335625680,93957335625871],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Register, unsigned int>(v8::internal::Builtins::Name, v8::internal::Register, unsigned int)",93957335629648,93957335629975],["v8::internal::baseline::BaselineCompiler::VisitIntrinsicIsSmi(v8::internal::interpreter::RegisterList)",93957335631680,93957335631926],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<>(v8::internal::Builtins::Name)",93957335632912,93957335633199],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Register, v8::internal::interpreter::Register, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::Register, v8::internal::interpreter::Register, v8::internal::TaggedIndex)",93957335633936,93957335634271],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject> >(v8::internal::Builtins::Name, v8::internal::Operand, v8::internal::TaggedIndex, v8::internal::Handle<v8::internal::HeapObject>)",93957335634640,93957335634990],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Operand, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::Operand, v8::internal::TaggedIndex)",93957335635248,93957335635583],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::HeapObject>, unsigned int, v8::internal::Operand>(v8::internal::Builtins::Name, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::HeapObject>, unsigned int, v8::internal::Operand)",93957335635920,93957335636268],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32ShrU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349424,93957341349461],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64RemU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349952,93957341349989],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64ShrU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350240,93957341350277],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Neg(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350416,93957341350447],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Trunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350512,93957341350543],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Sqrt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350576,93957341350607],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350656,93957341350693],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Div(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350752,93957341350789],["v8::internal::baseline::BaselineAssembler::AddToInterruptBudget(int)",93957335622880,93957335623288],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex)",93957335626896,93957335627231],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Register, unsigned int>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Register, unsigned int)",93957335628976,93957335629311],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335630320,93957335630655],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Register, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::Register, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335631328,93957335631675],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::interpreter::RegisterList)",93957335631936,93957335632253],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register>(v8::internal::Builtins::Name, v8::internal::interpreter::Register)",93957335632592,93957335632909],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Register, unsigned int, unsigned int, v8::internal::RootIndex, v8::internal::interpreter::RegisterList)",93957335633200,93957335633568],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32DivU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349040,93957341349077],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Ctz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349600,93957341349631],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64DivU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349856,93957341349893],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Ior(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350048,93957341350085],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64ShrS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350192,93957341350229],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Rol(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350288,93957341350325],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Abs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350384,93957341350415],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Ceil(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350448,93957341350479],["v8::internal::baseline::BaselineCompiler::VisitThrowIfNotSuperConstructor()",93957335617904,93957335618428],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex)",93957335624304,93957335624631],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name> >(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>)",93957335626208,93957335626535],["void v8::internal::baseline::BaselineCompiler::CallRuntime<v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::Register>(v8::internal::Runtime::FunctionId, v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::Register)",93957335627584,93957335627907],["void v8::internal::baseline::BaselineCompiler::CallRuntime<v8::internal::Smi, v8::internal::Register, v8::internal::Operand>(v8::internal::Runtime::FunctionId, v8::internal::Smi, v8::internal::Register, v8::internal::Operand)",93957335628752,93957335628976],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Register, v8::internal::Smi, unsigned int>(v8::internal::Builtins::Name, v8::internal::Register, v8::internal::Smi, unsigned int)",93957335629312,93957335629647],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Smi>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Smi)",93957335629984,93957335630319],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::Register, unsigned int, v8::internal::interpreter::RegisterList)",93957335630656,93957335631011],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Ge(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348704,93957341348741],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Ior(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349232,93957341349269],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Ror(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349520,93957341349557],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349664,93957341349701],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64DivS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349808,93957341349845],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64RemS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349904,93957341349941],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64And(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350000,93957341350037],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Xor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341350096,93957341350133],["v8::internal::baseline::BaselineCompiler::VisitForInStep()",93957335616032,93957335616176],["v8::internal::baseline::BaselineCompiler::VisitGetIterator()",93957335621936,93957335622034],["v8::internal::baseline::BaselineCompiler::JumpIfToBoolean(bool, v8::internal::Register, v8::internal::Label*, v8::internal::Label::Distance)",93957335623552,93957335623908],["v8::internal::baseline::BaselineAssembler::StoreTaggedFieldWithWriteBarrier(v8::internal::Register, int, v8::internal::Register)",93957335624976,93957335625341],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex)",93957335625872,93957335626207],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex)",93957335626544,93957335626894],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::Register, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::Handle<v8::internal::Name>, v8::internal::Register, v8::internal::TaggedIndex)",93957335627232,93957335627582],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::interpreter::Register, v8::internal::interpreter::Register, v8::internal::Register, v8::internal::TaggedIndex)",93957335627920,93957335628270],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Gt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348320,93957341348357],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348848,93957341348885],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32RemU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349136,93957341349173],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Shl(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349328,93957341349365],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Rol(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349472,93957341349509],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Clz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349568,93957341349599],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Popcnt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349632,93957341349663],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349712,93957341349749],["v8::internal::baseline::BaselineCompiler::VisitJumpIfToBooleanFalse()",93957335613808,93957335613936],["v8::internal::baseline::BaselineCompiler::VisitReturn()",93957335616992,93957335617124],["v8::internal::baseline::BaselineCompiler::VisitSuspendGenerator()",93957335619600,93957335621080],["v8::internal::baseline::BaselineCompiler::VisitAbort()",93957335622192,93957335622395],["v8::internal::baseline::BaselineCompiler::BuildForwardJumpLabel()",93957335623296,93957335623547],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Register>(v8::internal::Builtins::Name, v8::internal::Register)",93957335623920,93957335624297],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Handle<v8::internal::Name>, v8::internal::Register, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::Handle<v8::internal::Name>, v8::internal::Register, v8::internal::TaggedIndex)",93957335624640,93957335624975],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex, v8::internal::TaggedIndex>(v8::internal::Builtins::Name, v8::internal::Handle<v8::internal::Name>, v8::internal::TaggedIndex, v8::internal::TaggedIndex)",93957335625344,93957335625679],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64GtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347936,93957341347973],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348512,93957341348549],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Ctz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348784,93957341348815],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348944,93957341348981],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32RemS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349088,93957341349125],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32And(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349184,93957341349221],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Xor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349280,93957341349317],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32ShrS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341349376,93957341349413],["v8::internal::baseline::BaselineCompiler::VisitJumpConstant()",93957335612640,93957335612713],["v8::internal::baseline::BaselineCompiler::VisitForInEnumerate()",93957335615136,93957335615180],["v8::internal::baseline::BaselineCompiler::VisitThrow()",93957335616640,93957335616809],["v8::internal::baseline::BaselineCompiler::VisitThrowSuperNotCalledIfHole()",93957335617424,93957335617656],["v8::internal::baseline::BaselineCompiler::VisitSwitchOnGeneratorState()",93957335618432,93957335619590],["v8::internal::baseline::BaselineCompiler::VisitResumeGenerator()",93957335621088,93957335621931],["v8::internal::baseline::BaselineCompiler::VisitIncBlockCounter()",93957335622048,93957335622186],["v8::internal::baseline::BaselineCompiler::UpdateInterruptBudgetAndJumpToLabel(int, v8::internal::Label*, v8::internal::Label*)",93957335622400,93957335622867],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32GeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347568,93957341347605],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64GeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348128,93957341348165],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Ge(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348416,93957341348453],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Gt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348608,93957341348645],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Clz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348752,93957341348783],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Popcnt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348816,93957341348847],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348896,93957341348933],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32DivS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348992,93957341349029],["v8::internal::baseline::BaselineCompiler::VisitCreateCatchContext()",93957335610752,93957335610830],["v8::internal::baseline::BaselineCompiler::VisitJumpIfNotUndefined()",93957335613200,93957335613350],["v8::internal::baseline::BaselineCompiler::VisitJumpIfJSReceiver()",93957335614160,93957335614496],["v8::internal::baseline::BaselineCompiler::VisitForInContinue()",93957335615600,93957335615811],["v8::internal::baseline::BaselineCompiler::VisitSetPendingMessage()",93957335616176,93957335616639],["v8::internal::baseline::BaselineCompiler::VisitReThrow()",93957335616816,93957335616985],["v8::internal::baseline::BaselineCompiler::VisitThrowReferenceErrorIfHole()",93957335617136,93957335617413],["v8::internal::baseline::BaselineCompiler::VisitThrowSuperAlreadyCalledIfNotHole()",93957335617664,93957335617896],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347184,93957341347221],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347744,93957341347781],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64LeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348032,93957341348069],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348224,93957341348261],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Le(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348368,93957341348405],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348464,93957341348501],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Lt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348560,93957341348597],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Le(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348656,93957341348693],["v8::internal::baseline::BaselineCompiler::VisitCreateRegExpLiteral()",93957335609296,93957335609420],["v8::internal::baseline::BaselineCompiler::VisitCreateMappedArguments()",93957335611456,93957335611851],["v8::internal::baseline::BaselineCompiler::VisitJumpIfNotNull()",93957335612880,93957335613030],["v8::internal::baseline::BaselineCompiler::VisitJumpIfFalse()",93957335613520,93957335613670],["v8::internal::baseline::BaselineCompiler::VisitJumpIfUndefinedOrNull()",93957335613936,93957335614158],["v8::internal::baseline::BaselineCompiler::VisitSwitchOnSmiNoFeedback()",93957335614496,93957335615122],["v8::internal::baseline::BaselineCompiler::VisitForInPrepare()",93957335615184,93957335615594],["v8::internal::baseline::BaselineCompiler::VisitForInNext()",93957335615824,93957335616023],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLoadMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341345744,93957341345774],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32GtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347376,93957341347413],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Eqz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347664,93957341347695],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64LtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347840,93957341347877],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64LeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347984,93957341348021],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64GeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348080,93957341348117],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348176,93957341348213],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Lt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341348272,93957341348309],["v8::internal::baseline::BaselineCompiler::VisitTestUndetectable()",93957335606560,93957335606829],["v8::internal::baseline::BaselineCompiler::VisitCloneObject()",93957335609840,93957335609952],["v8::internal::baseline::BaselineCompiler::VisitCreateEvalContext()",93957335611104,93957335611376],["v8::internal::baseline::BaselineCompiler::VisitCreateRestParameter()",93957335611968,93957335612069],["v8::internal::baseline::BaselineCompiler::VisitJumpIfNull()",93957335612720,93957335612870],["v8::internal::baseline::BaselineCompiler::VisitJumpIfUndefined()",93957335613040,93957335613190],["v8::internal::baseline::BaselineCompiler::VisitJumpIfTrue()",93957335613360,93957335613510],["v8::internal::baseline::BaselineCompiler::VisitJumpIfToBooleanTrue()",93957335613680,93957335613805],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeSelectWithType(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341340528,93957341341831],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341346656,93957341346852],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32LtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347280,93957341347317],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32LeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347472,93957341347509],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32GeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347616,93957341347653],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347696,93957341347733],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64LtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347792,93957341347829],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI64GtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347888,93957341347925],["v8::internal::baseline::BaselineCompiler::VisitTestEqualStrict()",93957335605648,93957335605725],["v8::internal::baseline::BaselineCompiler::VisitToName()",93957335608848,93957335609014],["v8::internal::baseline::BaselineCompiler::VisitCreateEmptyArrayLiteral()",93957335609600,93957335609658],["v8::internal::baseline::BaselineCompiler::VisitCreateClosure()",93957335610176,93957335610551],["v8::internal::baseline::BaselineCompiler::VisitCreateFunctionContext()",93957335610832,93957335611104],["v8::internal::baseline::BaselineCompiler::VisitCreateWithContext()",93957335611376,93957335611454],["v8::internal::baseline::BaselineCompiler::VisitCreateUnmappedArguments()",93957335611856,93957335611957],["v8::internal::baseline::BaselineCompiler::VisitJumpLoop()",93957335612080,93957335612630],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeReturnCallIndirect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341330688,93957341332361],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeGlobalGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341343168,93957341343458],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeMemorySize(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341345808,93957341346024],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF64Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347008,93957341347141],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347232,93957341347269],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32LtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347328,93957341347365],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32GtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347424,93957341347461],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32LeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347520,93957341347557],["v8::internal::baseline::BaselineCompiler::VisitCallWithSpread()",93957335603184,93957335603329],["v8::internal::baseline::BaselineCompiler::VisitTestGreaterThanOrEqual()",93957335605968,93957335606045],["v8::internal::baseline::BaselineCompiler::VisitTestUndefined()",93957335607024,93957335607202],["v8::internal::baseline::BaselineCompiler::VisitToNumeric()",93957335609072,93957335609118],["v8::internal::baseline::BaselineCompiler::VisitCreateArrayLiteral()",93957335609424,93957335609597],["v8::internal::baseline::BaselineCompiler::VisitCreateObjectLiteral()",93957335609664,93957335609832],["v8::internal::baseline::BaselineCompiler::VisitGetTemplateObject()",93957335609952,93957335610169],["v8::internal::baseline::BaselineCompiler::VisitCreateBlockContext()",93957335610560,93957335610750],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeEnd(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341317536,93957341319339],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeDelegate(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341337648,93957341338805],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLocalSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341341984,93957341342550],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeTableGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341344160,93957341344839],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeStoreMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341345776,93957341345806],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeMemoryGrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341346032,93957341346645],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeF32Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341346864,93957341346997],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Eqz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341347152,93957341347183],["v8::internal::baseline::BaselineCompiler::VisitCallProperty0()",93957335602224,93957335602318],["v8::internal::baseline::BaselineCompiler::VisitInvokeIntrinsic()",93957335603968,93957335605218],["v8::internal::baseline::BaselineCompiler::VisitTestGreaterThan()",93957335605808,93957335605885],["v8::internal::baseline::BaselineCompiler::VisitTestInstanceOf()",93957335606336,93957335606465],["v8::internal::baseline::BaselineCompiler::VisitTestNull()",93957335606832,93957335607010],["v8::internal::baseline::BaselineCompiler::VisitTestTypeOf()",93957335607216,93957335608839],["v8::internal::baseline::BaselineCompiler::VisitToNumber()",93957335609024,93957335609070],["v8::internal::baseline::BaselineCompiler::VisitToObject()",93957335609120,93957335609286],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLoop(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341306288,93957341308833],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeReturn(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341324960,93957341326067],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeReturnCallRef(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341334128,93957341335396],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeDrop(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341339344,93957341339572],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeUnknownOrAsmJs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341341840,93957341341984],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLocalTee(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341342560,93957341343163],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeGlobalSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341343472,93957341344149],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeTableSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341344848,93957341345739],["v8::internal::baseline::BaselineCompiler::VisitBitwiseNot()",93957335600848,93957335600894],["v8::internal::baseline::BaselineCompiler::VisitCallUndefinedReceiver0()",93957335602720,93957335602802],["v8::internal::baseline::BaselineCompiler::VisitCallRuntimeForPair()",93957335603424,93957335603747],["v8::internal::baseline::BaselineCompiler::VisitConstructWithSpread()",93957335605360,93957335605559],["v8::internal::baseline::BaselineCompiler::VisitTestLessThan()",93957335605728,93957335605805],["v8::internal::baseline::BaselineCompiler::VisitTestLessThanOrEqual()",93957335605888,93957335605965],["v8::internal::baseline::BaselineCompiler::VisitTestReferenceEqual()",93957335606048,93957335606322],["v8::internal::baseline::BaselineCompiler::VisitTestIn()",93957335606480,93957335606560],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::~WasmFullDecoder()",93957341303696,93957341303810],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeCatch(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341313200,93957341314882],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeBrIf(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341319856,93957341320946],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeCallIndirect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341327504,93957341329499],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeCallRef(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341332368,93957341334118],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341335408,93957341337635],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeCatchAll(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341338816,93957341339338],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeSelect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341339584,93957341340526],["v8::internal::baseline::BaselineCompiler::VisitBitwiseXorSmi()",93957335600304,93957335600384],["v8::internal::baseline::BaselineCompiler::VisitDeletePropertySloppy()",93957335601440,93957335601624],["v8::internal::baseline::BaselineCompiler::VisitCallProperty2()",93957335602448,93957335602592],["v8::internal::baseline::BaselineCompiler::VisitCallUndefinedReceiver2()",93957335602944,93957335603074],["v8::internal::baseline::BaselineCompiler::VisitCallRuntime()",93957335603344,93957335603414],["v8::internal::baseline::BaselineCompiler::VisitCallJSRuntime()",93957335603760,93957335603965],["v8::internal::baseline::BaselineCompiler::VisitConstruct()",93957335605232,93957335605348],["v8::internal::baseline::BaselineCompiler::VisitTestEqual()",93957335605568,93957335605645],["v8::internal::wasm::JSToWasmWrapperCompilationUnit::CompileJSToWasmWrapper(v8::internal::Isolate*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::WasmModule const*, bool)",93957341299504,93957341299761],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeI32Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341304176,93957341304334],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeElse(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341310768,93957341311629],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeRethrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341316320,93957341316794],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeBr(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341319344,93957341319849],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeBrTable(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341320960,93957341324947],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeCallFunction(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341326080,93957341327493],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeReturnCall(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341329504,93957341330678],["v8::internal::baseline::BaselineCompiler::VisitShiftRightLogical()",93957335599664,93957335599741],["v8::internal::baseline::BaselineCompiler::VisitShiftRightLogicalSmi()",93957335600624,93957335600704],["v8::internal::baseline::BaselineCompiler::VisitLogicalNot()",93957335601056,93957335601234],["v8::internal::baseline::BaselineCompiler::VisitCallAnyReceiver()",93957335602000,93957335602112],["v8::internal::baseline::BaselineCompiler::VisitCallProperty1()",93957335602320,93957335602447],["v8::internal::baseline::BaselineCompiler::VisitCallUndefinedReceiver()",93957335602592,93957335602711],["v8::internal::baseline::BaselineCompiler::VisitCallUndefinedReceiver1()",93957335602816,93957335602929],["v8::internal::baseline::BaselineCompiler::VisitCallNoFeedback()",93957335603088,93957335603171],["v8::internal::wasm::WasmCompilationUnit::ExecuteCompilation(v8::internal::wasm::WasmEngine*, v8::internal::wasm::CompilationEnv*, std::__1::shared_ptr<v8::internal::wasm::WireBytesStorage> const&, v8::internal::Counters*, v8::internal::wasm::WasmFeatures*)",93957341296064,93957341296560],["v8::internal::wasm::(anonymous namespace)::WasmInstructionBufferImpl::View::Grow(int)",93957341300080,93957341300237],["v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface::DefaultValue(v8::internal::wasm::ValueType)",93957341303856,93957341303963],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeUnreachable(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341304560,93957341304910],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeIf(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341308848,93957341310765],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeTry(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341311632,93957341313192],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeThrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341314896,93957341316310],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeUnwind(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341316800,93957341317528],["v8::internal::baseline::BaselineCompiler::VisitDiv()",93957335599024,93957335599101],["v8::internal::baseline::BaselineCompiler::VisitDivSmi()",93957335599984,93957335600064],["v8::internal::baseline::BaselineCompiler::VisitShiftLeftSmi()",93957335600464,93957335600544],["v8::internal::baseline::BaselineCompiler::VisitDec()",93957335600752,93957335600798],["v8::internal::baseline::BaselineCompiler::VisitToBooleanLogicalNot()",93957335600896,93957335601049],["v8::internal::baseline::BaselineCompiler::VisitDeletePropertyStrict()",93957335601248,93957335601435],["v8::internal::baseline::BaselineCompiler::VisitGetSuperConstructor()",93957335601632,93957335601994],["v8::internal::baseline::BaselineCompiler::VisitCallProperty()",93957335602112,93957335602224],["unsigned long v8::internal::wasm::Decoder::read_leb_slowpath<unsigned long, (v8::internal::wasm::Decoder::ValidateFlag)0, (v8::internal::wasm::Decoder::TraceFlag)0, 64ul>(unsigned char const*, unsigned int*, char const*)",93957341293280,93957341293550],["v8::internal::wasm::JSToWasmWrapperCompilationUnit::~JSToWasmWrapperCompilationUnit()",93957341298480,93957341298513],["v8::internal::wasm::(anonymous namespace)::WasmInstructionBufferImpl::View::~View()",93957341299920,93957341299993],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::Decode()",93957341301264,93957341303559],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::onFirstError()",93957341303824,93957341303845],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeLocalGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341303968,93957341304164],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::GrowStackSpace(int)",93957341304336,93957341304549],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeBlock(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341304912,93957341306275],["v8::internal::baseline::BaselineCompiler::VisitStaNamedPropertyNoFeedback()",93957335598192,93957335598273],["v8::internal::baseline::BaselineCompiler::VisitBitwiseXor()",93957335599344,93957335599421],["v8::internal::baseline::BaselineCompiler::VisitSubSmi()",93957335599824,93957335599904],["v8::internal::baseline::BaselineCompiler::VisitExpSmi()",93957335600144,93957335600224],["v8::internal::baseline::BaselineCompiler::VisitBitwiseAndSmi()",93957335600384,93957335600464],["v8::internal::baseline::BaselineCompiler::VisitShiftRightSmi()",93957335600544,93957335600624],["v8::internal::baseline::BaselineCompiler::VisitInc()",93957335600704,93957335600750],["v8::internal::baseline::BaselineCompiler::VisitNegate()",93957335600800,93957335600846],["v8::internal::wasm::TableCopyImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::TableCopyImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341291904,93957341292094],["v8::internal::wasm::WasmInstructionBuffer::CreateView()",93957341295840,93957341295898],["v8::internal::wasm::WasmCompilationUnit::CompileWasmFunction(v8::internal::Isolate*, v8::internal::wasm::NativeModule*, v8::internal::wasm::WasmFeatures*, v8::internal::wasm::WasmFunction const*, v8::internal::wasm::ExecutionTier)",93957341297552,93957341298276],["v8::internal::wasm::JSToWasmWrapperCompilationUnit::Finalize(v8::internal::Isolate*)",93957341298928,93957341299123],["v8::internal::wasm::JSToWasmWrapperCompilationUnit::CompileSpecificJSToWasmWrapper(v8::internal::Isolate*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::WasmModule const*)",93957341299776,93957341299907],["v8::internal::wasm::(anonymous namespace)::WasmInstructionBufferImpl::View::~View()",93957341300000,93957341300072],["v8::internal::wasm::BuildTFGraph(v8::internal::AccountingAllocator*, v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::WasmModule const*, v8::internal::compiler::WasmGraphBuilder*, v8::internal::wasm::WasmFeatures*, v8::internal::wasm::FunctionBody const&, std::__1::vector<v8::internal::compiler::WasmLoopInfo, std::__1::allocator<v8::internal::compiler::WasmLoopInfo> >*, v8::internal::compiler::NodeOriginTable*)",93957341300240,93957341301260],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::~WasmFullDecoder()",93957341303568,93957341303681],["v8::internal::baseline::BaselineCompiler::VisitMov()",93957335594976,93957335595352],["v8::internal::baseline::BaselineCompiler::VisitCollectTypeProfile()",93957335598720,93957335598782],["v8::internal::baseline::BaselineCompiler::VisitExp()",93957335599184,93957335599261],["v8::internal::baseline::BaselineCompiler::VisitShiftLeft()",93957335599504,93957335599581],["v8::internal::baseline::BaselineCompiler::VisitAddSmi()",93957335599744,93957335599824],["v8::internal::baseline::BaselineCompiler::VisitMulSmi()",93957335599904,93957335599984],["v8::internal::baseline::BaselineCompiler::VisitModSmi()",93957335600064,93957335600144],["v8::internal::baseline::BaselineCompiler::VisitBitwiseOrSmi()",93957335600224,93957335600304],["v8::internal::wasm::SelectTypeImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::SelectTypeImmediate(v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::Decoder*, unsigned char const*, v8::internal::wasm::WasmModule const*)",93957341290928,93957341291059],["int v8::internal::wasm::Decoder::read_leb_slowpath<int, (v8::internal::wasm::Decoder::ValidateFlag)0, (v8::internal::wasm::Decoder::TraceFlag)0, 32ul>(unsigned char const*, unsigned int*, char const*)",93957341292432,93957341292582],["v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::MemoryAccessImmediate(v8::internal::wasm::Decoder*, unsigned char const*, unsigned int, bool)",93957341295504,93957341295762],["v8::internal::wasm::WasmInstructionBuffer::New(unsigned long)",93957341295936,93957341296015],["v8::internal::wasm::WasmCompilationUnit::ExecuteFunctionCompilation(v8::internal::wasm::WasmEngine*, v8::internal::wasm::CompilationEnv*, std::__1::shared_ptr<v8::internal::wasm::WireBytesStorage> const&, v8::internal::Counters*, v8::internal::wasm::WasmFeatures*)",93957341296560,93957341297538],["v8::internal::wasm::JSToWasmWrapperCompilationUnit::JSToWasmWrapperCompilationUnit(v8::internal::Isolate*, v8::internal::wasm::WasmEngine*, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::WasmModule const*, bool, v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::JSToWasmWrapperCompilationUnit::AllowGeneric)",93957341298288,93957341298476],["v8::internal::wasm::JSToWasmWrapperCompilationUnit::Execute()",93957341298528,93957341298913],["v8::internal::wasm::(anonymous namespace)::RecordWasmHeapStubCompilation(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Code>, char const*, ...)",93957341299136,93957341299494],["v8::internal::baseline::BaselineCompiler::VisitLdaLookupContextSlot()",93957335593968,93957335594069],["v8::internal::baseline::BaselineCompiler::VisitLdaKeyedProperty()",93957335595840,93957335595920],["v8::internal::baseline::BaselineCompiler::VisitStaInArrayLiteral()",93957335598400,93957335598499],["v8::internal::baseline::BaselineCompiler::VisitSub()",93957335598864,93957335598941],["v8::internal::baseline::BaselineCompiler::VisitMod()",93957335599104,93957335599181],["v8::internal::baseline::BaselineCompiler::VisitBitwiseOr()",93957335599264,93957335599341],["v8::internal::baseline::BaselineCompiler::VisitBitwiseAnd()",93957335599424,93957335599501],["v8::internal::baseline::BaselineCompiler::VisitShiftRight()",93957335599584,93957335599661],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::Simd8x16ShuffleOp(unsigned int)",93957341285648,93957341286282],["v8::internal::wasm::FunctionIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::FunctionIndexImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341291312,93957341291384],["v8::internal::wasm::TypeIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::TypeIndexImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341292272,93957341292344],["v8::internal::wasm::HeapType v8::internal::wasm::value_type_reader::read_heap_type<(v8::internal::wasm::Decoder::ValidateFlag)0>(v8::internal::wasm::Decoder*, unsigned char const*, unsigned int*, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures const&)",93957341292960,93957341293089],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>::OpcodeLength(v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>*, unsigned char const*)",93957341293552,93957341295503],["v8::internal::wasm::WasmInstructionBuffer::~WasmInstructionBuffer()",93957341295776,93957341295836],["v8::internal::wasm::WasmInstructionBuffer::ReleaseBuffer()",93957341295904,93957341295928],["v8::internal::wasm::WasmCompilationUnit::GetBaselineExecutionTier(v8::internal::wasm::WasmModule const*)",93957341296016,93957341296054],["v8::internal::baseline::BaselineCompiler::VisitStaGlobal()",93957335590896,93957335590979],["v8::internal::baseline::BaselineCompiler::VisitLdaLookupGlobalSlotInsideTypeof()",93957335594496,93957335594597],["v8::internal::baseline::BaselineCompiler::VisitLdaNamedPropertyNoFeedback()",93957335595472,93957335595550],["v8::internal::baseline::BaselineCompiler::VisitStaModuleVariable()",93957335596864,93957335598072],["v8::internal::baseline::BaselineCompiler::VisitStaKeyedProperty()",93957335598288,93957335598387],["v8::internal::baseline::BaselineCompiler::VisitStaDataPropertyInLiteral()",93957335598512,93957335598712],["v8::internal::baseline::BaselineCompiler::VisitAdd()",93957335598784,93957335598861],["v8::internal::baseline::BaselineCompiler::VisitMul()",93957335598944,93957335599021],["v8::internal::wasm::MemoryCopyImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::MemoryCopyImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341281248,93957341281495],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>::Validate(unsigned char const*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::SimdLaneImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>&)",93957341288832,93957341288955],["v8::internal::wasm::ImmI32Immediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::ImmI32Immediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341291152,93957341291217],["v8::internal::wasm::MemoryInitImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::MemoryInitImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341291584,93957341291698],["v8::internal::wasm::FieldIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::FieldIndexImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341292096,93957341292266],["v8::internal::wasm::BranchTableIterator<(v8::internal::wasm::Decoder::ValidateFlag)0>::next()",93957341292352,93957341292427],["long v8::internal::wasm::Decoder::read_leb_slowpath<long, (v8::internal::wasm::Decoder::ValidateFlag)0, (v8::internal::wasm::Decoder::TraceFlag)0, 64ul>(unsigned char const*, unsigned int*, char const*)",93957341292592,93957341292952],["long v8::internal::wasm::Decoder::read_leb_slowpath<long, (v8::internal::wasm::Decoder::ValidateFlag)0, (v8::internal::wasm::Decoder::TraceFlag)0, 33ul>(unsigned char const*, unsigned int*, char const*)",93957341293104,93957341293280],["v8::internal::baseline::BaselineCompiler::VisitSingleBytecode()",93957335586272,93957335589645],["v8::internal::baseline::BaselineCompiler::VisitLdaCurrentContextSlot()",93957335592480,93957335592890],["v8::internal::baseline::BaselineCompiler::VisitLdaLookupSlotInsideTypeof()",93957335594192,93957335594382],["v8::internal::baseline::BaselineCompiler::VisitLdar()",93957335594720,93957335594835],["v8::internal::baseline::BaselineCompiler::VisitLdaNamedProperty()",93957335595360,93957335595459],["v8::internal::baseline::BaselineCompiler::VisitLdaNamedPropertyFromSuper()",93957335595552,93957335595826],["v8::internal::baseline::BaselineCompiler::VisitLdaModuleVariable()",93957335595920,93957335596850],["v8::internal::baseline::BaselineCompiler::VisitStaNamedProperty()",93957335598080,93957335598182],["long v8::internal::wasm::Decoder::read_leb_slowpath<long, (v8::internal::wasm::Decoder::ValidateFlag)2, (v8::internal::wasm::Decoder::TraceFlag)0, 64ul>(unsigned char const*, unsigned int*, char const*)",93957341258736,93957341259524],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>::Validate(unsigned char const*, v8::internal::wasm::TableCopyImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>&)",93957341282240,93957341282518],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLoadLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::LoadType, unsigned int)",93957341286976,93957341287910],["v8::internal::wasm::BranchTableIterator<(v8::internal::wasm::Decoder::ValidateFlag)0>::length()",93957341290320,93957341290381],["v8::internal::wasm::TableIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::TableIndexImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341291072,93957341291144],["v8::internal::wasm::ImmI64Immediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::ImmI64Immediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341291232,93957341291300],["v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::MemoryAccessImmediate(v8::internal::wasm::Decoder*, unsigned char const*, unsigned int, bool)",93957341291392,93957341291581],["v8::internal::wasm::TableInitImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::TableInitImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341291712,93957341291893],["v8::internal::Variable::Variable(v8::internal::Variable*)",93957335583152,93957335583199],["v8::internal::baseline::BaselineCompiler::VisitLdaSmi()",93957335590608,93957335590657],["v8::internal::baseline::BaselineCompiler::VisitPopContext()",93957335591472,93957335591835],["v8::internal::baseline::BaselineCompiler::VisitStaCurrentContextSlot()",93957335593456,93957335593765],["v8::internal::baseline::BaselineCompiler::VisitLdaLookupGlobalSlot()",93957335594080,93957335594181],["v8::internal::baseline::BaselineCompiler::VisitLdaLookupContextSlotInsideTypeof()",93957335594384,93957335594485],["v8::internal::baseline::BaselineCompiler::VisitStaLookupSlot()",93957335594608,93957335594705],["v8::internal::baseline::BaselineCompiler::VisitStar()",93957335594848,93957335594969],["v8::internal::wasm::SelectTypeImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::SelectTypeImmediate(v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::Decoder*, unsigned char const*, v8::internal::wasm::WasmModule const*)",93957341254992,93957341255166],["v8::internal::wasm::FieldIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::FieldIndexImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341274224,93957341274408],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>::Validate(unsigned char const*, v8::internal::wasm::TableInitImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>&)",93957341281696,93957341282017],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::SimdExtractLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, unsigned int)",93957341284512,93957341284966],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLoadTransformMem(v8::internal::wasm::LoadType, v8::internal::wasm::LoadTransformationKind, unsigned int)",93957341286288,93957341286968],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeStoreLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::StoreType, unsigned int)",93957341287920,93957341288827],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeAtomicOpcode(v8::internal::wasm::WasmOpcode, unsigned int)",93957341288960,93957341290310],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)0>::DecodeLocals(unsigned char const*, unsigned int*, v8::base::Optional<unsigned int>)",93957341290384,93957341290924],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitConditional(v8::internal::Conditional*)",93957335580384,93957335580567],["v8::internal::baseline::BaselineCompiler::PrologueFillFrame()",93957335583664,93957335584280],["v8::internal::baseline::BaselineCompiler::LoadClosureFeedbackArray(v8::internal::Register)",93957335589856,93957335590079],["v8::internal::baseline::BaselineCompiler::VisitLdaGlobal()",93957335590736,93957335590816],["v8::internal::baseline::BaselineCompiler::VisitPushContext()",93957335590992,93957335591460],["v8::internal::baseline::BaselineCompiler::VisitLdaContextSlot()",93957335591840,93957335592477],["v8::internal::baseline::BaselineCompiler::VisitStaContextSlot()",93957335592896,93957335593451],["v8::internal::baseline::BaselineCompiler::VisitLdaLookupSlot()",93957335593776,93957335593966],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::TypeCheckBrTable(std::__1::vector<v8::internal::wasm::ValueType, std::__1::allocator<v8::internal::wasm::ValueType> > const&, unsigned int)",93957341252608,93957341253477],["unsigned long v8::internal::wasm::Decoder::read_leb_slowpath<unsigned long, (v8::internal::wasm::Decoder::ValidateFlag)2, (v8::internal::wasm::Decoder::TraceFlag)0, 64ul>(unsigned char const*, unsigned int*, char const*)",93957341257040,93957341257709],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeGCOpcode(v8::internal::wasm::WasmOpcode, unsigned int)",93957341259808,93957341274180],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeNumericOpcode(v8::internal::wasm::WasmOpcode, unsigned int)",93957341274528,93957341281040],["v8::internal::wasm::TableInitImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::TableInitImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341281504,93957341281696],["v8::internal::wasm::TableCopyImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::TableCopyImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341282032,93957341282234],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeSimdOpcode(v8::internal::wasm::WasmOpcode, unsigned int)",93957341282528,93957341284498],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::SimdReplaceLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, unsigned int)",93957341284976,93957341285634],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitInitializeClassStaticElementsStatement(v8::internal::InitializeClassStaticElementsStatement*)",93957335578512,93957335578749],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitTemplateLiteral(v8::internal::TemplateLiteral*)",93957335580896,93957335581137],["v8::internal::Variable::RewriteLocationForRepl()",93957335583264,93957335583294],["v8::internal::baseline::BaselineCompiler::GenerateCode()",93957335584640,93957335585956],["v8::internal::baseline::BaselineCompiler::Build(v8::internal::Isolate*)",93957335589648,93957335589856],["v8::internal::baseline::BaselineCompiler::VerifyFrame()",93957335590080,93957335590604],["v8::internal::baseline::BaselineCompiler::VisitLdaConstant()",93957335590672,93957335590726],["v8::internal::baseline::BaselineCompiler::VisitLdaGlobalInsideTypeof()",93957335590816,93957335590896],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::PopTypeError(int, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, char const*)",93957341249088,93957341249573],["v8::base::SmallVector<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, 2ul>::operator=(v8::base::SmallVector<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, 2ul> const&)",93957341254160,93957341254301],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::BuildSimpleOperator(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType)",93957341255664,93957341256337],["v8::internal::wasm::MemoryIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::MemoryIndexImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341258576,93957341258683],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::BuildSimplePrototypeOperator(v8::internal::wasm::WasmOpcode)",93957341259536,93957341259797],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::PopTypeError(int, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957341274192,93957341274218],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::ObjectRelatedWithRtt(v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>)",93957341274416,93957341274514],["v8::internal::wasm::MemoryInitImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::MemoryInitImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341281040,93957341281244],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitWhileStatement(v8::internal::WhileStatement*)",93957335577424,93957335577534],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitAwait(v8::internal::Await*)",93957335579312,93957335579380],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitSpread(v8::internal::Spread*)",93957335580736,93957335580804],["std::__1::__hash_table<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> >::rehash(unsigned long)",93957335582064,93957335582435],["v8::internal::Variable::IsGlobalObjectProperty() const",93957335583200,93957335583251],["void v8::internal::baseline::BaselineCompiler::CallBuiltin<v8::internal::Register, v8::internal::Register, v8::internal::Register, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray> >(v8::internal::Builtins::Name, v8::internal::Register, v8::internal::Register, v8::internal::Register, int, v8::internal::Register, v8::internal::Handle<v8::internal::BytecodeArray>)",93957335583296,93957335583659],["v8::internal::baseline::BaselineCompiler::BaselineCompiler(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::BytecodeArray>)",93957335584288,93957335584625],["v8::internal::baseline::BaselineCompiler::PreVisitSingleBytecode()",93957335585968,93957335586260],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeAtomic(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341246896,93957341247121],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::TypeCheckOneArmedIf(v8::internal::wasm::ControlBase<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, (v8::internal::wasm::Decoder::ValidateFlag)2>*)",93957341251312,93957341251663],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::TypeCheckReturn()",93957341253648,93957341254009],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>::Validate(unsigned char const*, v8::internal::wasm::CallIndirectImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>&)",93957341254560,93957341254905],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::BuildSimpleOperator(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType)",93957341255168,93957341255658],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLoadMem(v8::internal::wasm::LoadType, int)",93957341256352,93957341257030],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeStoreMem(v8::internal::wasm::StoreType, int)",93957341257712,93957341258569],["long v8::internal::wasm::Decoder::read_i64v<(v8::internal::wasm::Decoder::ValidateFlag)2>(unsigned char const*, unsigned int*, char const*)",93957341258688,93957341258728],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitFunctionLiteral(v8::internal::FunctionLiteral*)",93957335574832,93957335575124],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitSloppyBlockFunctionStatement(v8::internal::SloppyBlockFunctionStatement*)",93957335577968,93957335578035],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitCallRuntime(v8::internal::CallRuntime*)",93957335579008,93957335579157],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitCallNew(v8::internal::CallNew*)",93957335579616,93957335579803],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitImportCallExpression(v8::internal::ImportCallExpression*)",93957335580576,93957335580723],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitSuperCallReference(v8::internal::SuperCallReference*)",93957335580816,93957335580894],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<int, void*>*>, bool> std::__1::__hash_table<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> >::__emplace_unique_key_args<int, int>(int const&, int&&)",93957335581152,93957335582050],["std::__1::__hash_table<int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<int> >::__rehash(unsigned long)",93957335582448,93957335583141],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeRefIsNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244432,93957341244778],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::EnsureStackArguments_Slow(int, unsigned int)",93957341248192,93957341248548],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::TypeCheckMergeValues(v8::internal::wasm::ControlBase<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, (v8::internal::wasm::Decoder::ValidateFlag)2>*, unsigned int, v8::internal::wasm::Merge<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2> >*)",93957341249728,93957341250053],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::TypeCheckBranch(v8::internal::wasm::ControlBase<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, (v8::internal::wasm::Decoder::ValidateFlag)2>*, bool, unsigned int)",93957341251968,93957341252126],["v8::internal::wasm::BranchTableIterator<(v8::internal::wasm::Decoder::ValidateFlag)2>::length()",93957341253488,93957341253645],["v8::base::SmallVector<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, 2ul>::Grow(unsigned long)",93957341254016,93957341254153],["v8::internal::wasm::CallIndirectImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::CallIndirectImmediate(v8::internal::wasm::WasmFeatures, v8::internal::wasm::Decoder*, unsigned char const*)",93957341254304,93957341254554],["v8::internal::wasm::TableIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::TableIndexImmediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341254912,93957341254990],["v8::internal::Scope::RecordEvalCall()",93957335573024,93957335573348],["v8::internal::SourceRangeAstVisitor::VisitNode(v8::internal::AstNode*)",93957335576032,93957335576510],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitForInStatement(v8::internal::ForInStatement*)",93957335577744,93957335577885],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitWithStatement(v8::internal::WithStatement*)",93957335578192,93957335578302],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitObjectLiteral(v8::internal::ObjectLiteral*)",93957335578752,93957335578994],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitProperty(v8::internal::Property*)",93957335579168,93957335579308],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitNaryOperation(v8::internal::NaryOperation*)",93957335579392,93957335579613],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitClassLiteral(v8::internal::ClassLiteral*)",93957335579808,93957335580376],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32ReinterpretI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244016,93957341244041],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeRefEq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341246000,93957341246010],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::PushControl(v8::internal::wasm::ControlKind, unsigned int, unsigned int)",93957341247376,93957341247633],["v8::internal::wasm::WasmOpcode v8::internal::wasm::Decoder::read_prefixed_opcode<(v8::internal::wasm::Decoder::ValidateFlag)2>(unsigned char const*, unsigned int*, char const*)",93957341248752,93957341248886],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::TypeCheckFallThru()",93957341249584,93957341249715],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::TypeCheckUnreachableMerge(v8::internal::wasm::Merge<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2> >&, bool, unsigned int)",93957341250064,93957341251304],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::PopControl(v8::internal::wasm::ControlBase<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, (v8::internal::wasm::Decoder::ValidateFlag)2>*)",93957341251664,93957341251953],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::UpdateBrTableResultTypes(std::__1::vector<v8::internal::wasm::ValueType, std::__1::allocator<v8::internal::wasm::ValueType> >*, unsigned int, unsigned char const*, int)",93957341252128,93957341252600],["v8::internal::ClassScope::ResetUnresolvedPrivateNameTail(v8::base::ThreadedListBase<v8::internal::VariableProxy, v8::base::EmptyBase, v8::internal::VariableProxy::UnresolvedNext>::Iterator)",93957335570368,93957335570422],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitBlock(v8::internal::Block*)",93957335573968,93957335574235],["v8::internal::SourceRangeAstVisitor::MaybeRemoveContinuationRangeOfAsyncReturn(v8::internal::TryCatchStatement*)",93957335575440,93957335575715],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitFunctionDeclaration(v8::internal::FunctionDeclaration*)",93957335577232,93957335577299],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitForStatement(v8::internal::ForStatement*)",93957335577536,93957335577744],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitReturnStatement(v8::internal::ReturnStatement*)",93957335577888,93957335577955],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitIfStatement(v8::internal::IfStatement*)",93957335578048,93957335578189],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitInitializeClassMembersStatement(v8::internal::InitializeClassMembersStatement*)",93957335578304,93957335578499],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32ConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243760,93957341243785],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64SExtendI8(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244144,93957341244169],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeRefAsNonNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341245056,93957341245259],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeNumeric(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341246240,93957341246483],["v8::internal::wasm::BlockTypeImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>::BlockTypeImmediate(v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::Decoder*, unsigned char const*, v8::internal::wasm::WasmModule const*)",93957341247136,93957341247365],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::SetBlockType(v8::internal::wasm::ControlBase<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, (v8::internal::wasm::Decoder::ValidateFlag)2>*, v8::internal::wasm::BlockTypeImmediate<(v8::internal::wasm::Decoder::ValidateFlag)2>&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>*)",93957341247648,93957341248187],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::NotEnoughArgumentsError(int)",93957341248560,93957341248751],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::PopTypeError(int, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, v8::internal::wasm::ValueType)",93957341248896,93957341249077],["v8::internal::DeclarationScope::ResetAfterPreparsing(v8::internal::AstValueFactory*, bool)",93957335568512,93957335568898],["v8::internal::PrivateNameScopeIterator::AddUnresolvedPrivateName(v8::internal::VariableProxy*)",93957335572256,93957335572448],["v8::internal::SourceRangeAstVisitor::SourceRangeAstVisitor(unsigned long, v8::internal::Expression*, v8::internal::SourceRangeMap*)",93957335573760,93957335573806],["v8::internal::SourceRangeAstVisitor::VisitSwitchStatement(v8::internal::SwitchStatement*)",93957335574480,93957335574562],["v8::internal::SourceRangeAstVisitor::VisitTryCatchStatement(v8::internal::TryCatchStatement*)",93957335575136,93957335575435],["v8::internal::SourceRangeAstVisitor::VisitTryFinallyStatement(v8::internal::TryFinallyStatement*)",93957335575728,93957335576027],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitNoStackOverflowCheck(v8::internal::AstNode*)",93957335576512,93957335577225],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitDoWhileStatement(v8::internal::DoWhileStatement*)",93957335577312,93957335577422],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64SConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243504,93957341243529],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64UConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243888,93957341243913],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32SExtendI8(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244080,93957341244105],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64SExtendI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244208,93957341244233],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeRefFunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244784,93957341245055],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeBrOnNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341245264,93957341245999],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeGC(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341246016,93957341246238],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeSimd(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341246496,93957341246893],["v8::internal::DeclarationScope::AllowsLazyCompilation() const",93957335567680,93957335567706],["v8::internal::Scope::AllocateNonParameterLocal(v8::internal::Variable*)",93957335569696,93957335569962],["v8::internal::ClassScope::LookupPrivateName(v8::internal::VariableProxy*)",93957335570896,93957335571399],["v8::internal::PrivateNameScopeIterator::PrivateNameScopeIterator(v8::internal::Scope*)",93957335572672,93957335572759],["v8::base::TemplateHashMapImpl<void*, void*, v8::base::KeyEqualityMatcher<void*>, v8::internal::ZoneAllocationPolicy>::Resize()",93957335573360,93957335573757],["v8::internal::SourceRangeAstVisitor::VisitBlock(v8::internal::Block*)",93957335573808,93957335573967],["v8::internal::SourceRangeAstVisitor::MaybeRemoveLastContinuationRange(v8::internal::ZoneList<v8::internal::Statement*>*)",93957335574240,93957335574467],["v8::internal::AstTraversalVisitor<v8::internal::SourceRangeAstVisitor>::VisitSwitchStatement(v8::internal::SwitchStatement*)",93957335574576,93957335574832],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64CopySign(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243248,93957341243279],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243632,93957341243657],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243824,93957341243849],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32ReinterpretF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243952,93957341243977],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64ReinterpretI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244048,93957341244073],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32SExtendI16(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244112,93957341244137],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64SExtendI16(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244176,93957341244201],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeRefNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341244240,93957341244417],["v8::internal::Scope::FindVariableDeclaredIn(v8::internal::Scope*, v8::internal::VariableMode)",93957335563248,93957335563466],["v8::internal::Scope::GetReceiverScope()",93957335567888,93957335567927],["v8::internal::DeclarationScope::AnalyzePartially(v8::internal::Parser*, v8::internal::AstNodeFactory*, bool)",93957335568960,93957335569441],["v8::internal::ClassScope::DeclarePrivateName(v8::internal::AstRawString const*, v8::internal::VariableMode, v8::internal::IsStaticFlag, bool*)",93957335570064,93957335570334],["v8::internal::ClassScope::MigrateUnresolvedPrivateNameTail(v8::internal::AstNodeFactory*, v8::base::ThreadedListBase<v8::internal::VariableProxy, v8::base::EmptyBase, v8::internal::VariableProxy::UnresolvedNext>::Iterator)",93957335570432,93957335570890],["v8::internal::ClassScope::ResolvePrivateNamesPartially()",93957335571408,93957335572248],["v8::internal::ClassScope::DeclareBrandVariable(v8::internal::AstValueFactory*, v8::internal::IsStaticFlag, int)",93957335572448,93957335572658],["v8::internal::ClassScope::RareData* v8::internal::Zone::New<v8::internal::ClassScope::RareData, v8::internal::Zone*>(v8::internal::Zone*&&)",93957335572768,93957335573013],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64NearestInt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242992,93957341243017],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32SConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243376,93957341243401],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64SConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243568,93957341243593],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32SConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243696,93957341243721],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243792,93957341243817],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64SConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243856,93957341243881],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64ConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243920,93957341243945],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64ReinterpretF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243984,93957341244009],["v8::internal::DeclarationScope::RecordParameter(bool)",93957335561872,93957335561903],["v8::internal::Scope::ResolveVariablesRecursively(v8::internal::Scope*)",93957335564656,93957335565304],["v8::internal::Scope::ContextChainLengthUntilOutermostSloppyEval() const",93957335567760,93957335567817],["v8::internal::Scope::GetOuterScopeWithContext()",93957335568080,93957335568112],["v8::internal::Scope::IsSkippableFunctionScope()",93957335568912,93957335568948],["v8::internal::Scope::ResolveTo(v8::internal::VariableProxy*, v8::internal::Variable*)",93957335569456,93957335569683],["v8::internal::DeclarationScope::RecordNeedsPrivateNameContextChainRecalc()",93957335569968,93957335570057],["v8::internal::ClassScope::GetUnresolvedPrivateNameTail()",93957335570336,93957335570363],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Min(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242736,93957341242767],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243120,93957341243151],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32SConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243312,93957341243337],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243440,93957341243465],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64UConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243536,93957341243561],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64UConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243600,93957341243625],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243664,93957341243689],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32UConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243728,93957341243753],["v8::internal::DeclarationScope::DeclareArguments(v8::internal::AstValueFactory*)",93957335559424,93957335559545],["v8::internal::Scope::AddUnresolved(v8::internal::VariableProxy*)",93957335562160,93957335562220],["v8::internal::ModuleScope::AllocateModuleVariables()",93957335563712,93957335564296],["v8::internal::Scope::HasThisReference() const",93957335567520,93957335567605],["v8::internal::Scope::ContextChainLength(v8::internal::Scope*) const",93957335567712,93957335567749],["v8::internal::Scope::ShouldBanArguments()",93957335567824,93957335567873],["v8::internal::Scope::GetHomeObjectScope()",93957335567936,93957335568066],["v8::internal::Scope::AnalyzePartially(v8::internal::DeclarationScope*, v8::internal::AstNodeFactory*, v8::base::ThreadedListBase<v8::internal::VariableProxy, v8::base::EmptyBase, v8::internal::VariableProxy::UnresolvedNext>*, bool)",93957335568112,93957335568500],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Floor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242480,93957341242505],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Neg(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242864,93957341242889],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243056,93957341243087],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Min(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243184,93957341243215],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32ConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243280,93957341243305],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32UConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243344,93957341243369],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32UConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243408,93957341243433],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243472,93957341243497],["v8::internal::DeclarationScope::DeclareSloppyBlockFunction(v8::internal::SloppyBlockFunctionStatement*)",93957335556256,93957335556283],["v8::internal::Scope::FinalizeBlockScope()",93957335560480,93957335560712],["v8::internal::Scope::GetDeclarationScope()",93957335562032,93957335562059],["v8::internal::Scope::DeleteUnresolved(v8::internal::VariableProxy*)",93957335562784,93957335562794],["v8::internal::DeclarationScope::DeserializeReceiver(v8::internal::AstValueFactory*)",93957335563472,93957335563707],["v8::internal::ClassScope::ResolvePrivateNames(v8::internal::ParseInfo*)",93957335564304,93957335564656],["v8::internal::Scope::AllocateVariablesRecursively()",93957335565312,93957335567516],["v8::internal::Scope::AllowsLazyParsingWithoutUnresolvedVariables(v8::internal::Scope const*) const",93957335567616,93957335567672],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Shl(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242224,93957341242255],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242608,93957341242639],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32CopySign(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242800,93957341242831],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Floor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242928,93957341242953],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Sqrt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243024,93957341243049],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243088,93957341243119],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Div(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243152,93957341243183],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Max(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341243216,93957341243247],["v8::internal::Scope::HasSimpleParameters()",93957335553376,93957335553428],["v8::internal::AstNodeFactory::NewAssignment(v8::internal::Token::Value, v8::internal::Expression*, v8::internal::Expression*, int)",93957335557872,93957335558267],["v8::internal::DeclarationScope::DeclareFunctionVar(v8::internal::AstRawString const*, v8::internal::Scope*)",93957335559968,93957335560212],["v8::internal::DeclarationScope::DeclareParameter(v8::internal::AstRawString const*, v8::internal::VariableMode, bool, bool, v8::internal::AstValueFactory*, int)",93957335561104,93957335561691],["v8::internal::Scope::DeclareLocal(v8::internal::AstRawString const*, v8::internal::VariableMode, v8::internal::VariableKind, bool*, v8::internal::InitializationFlag)",93957335561904,93957335562031],["v8::internal::Scope::DeclareCatchVariableName(v8::internal::AstRawString const*)",93957335562064,93957335562147],["v8::base::ThreadedListBase<v8::internal::VariableProxy, v8::base::EmptyBase, v8::internal::VariableProxy::UnresolvedNext>::Remove(v8::internal::VariableProxy*)",93957335562224,93957335562770],["v8::internal::DeclarationScope::CheckConflictingVarDeclarations(bool*)",93957335562800,93957335563245],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241968,93957341241999],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Ror(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242352,93957341242383],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32NearestInt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242544,93957341242569],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242672,93957341242703],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Max(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242768,93957341242799],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Abs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242832,93957341242857],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Ceil(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242896,93957341242921],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Trunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242960,93957341242985],["v8::internal::DeclarationScope::DeclarationScope(v8::internal::Zone*, v8::internal::Scope*, v8::internal::ScopeType, v8::internal::FunctionKind)",93957335550720,93957335550956],["v8::internal::Scope::IsAsmModule() const",93957335553536,93957335553559],["v8::internal::Scope::LookupInScopeOrScopeInfo(v8::internal::AstRawString const*, v8::internal::Scope*)",93957335557280,93957335557410],["v8::internal::DeclarationScope::Analyze(v8::internal::ParseInfo*)",93957335558592,93957335559233],["v8::internal::DeclarationScope::DeclareDefaultFunctionVariables(v8::internal::AstValueFactory*)",93957335559552,93957335559961],["v8::internal::DeclarationScope::DeclareGeneratorObjectVar(v8::internal::AstRawString const*)",93957335560224,93957335560468],["v8::internal::Scope::Snapshot::Reparent(v8::internal::DeclarationScope*)",93957335560720,93957335561104],["v8::internal::Scope::NewTemporary(v8::internal::AstRawString const*)",93957335561696,93957335561860],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32ShrU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241712,93957341241743],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64RemU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242096,93957341242127],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64ShrU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242288,93957341242319],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Neg(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242416,93957341242441],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Trunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242512,93957341242537],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Sqrt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242576,93957341242601],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242640,93957341242671],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Div(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242704,93957341242735],["v8::internal::VariableMap::VariableMap(v8::internal::VariableMap const&, v8::internal::Zone*)",93957335548416,93957335548524],["v8::internal::ClassScope::ClassScope(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::AstValueFactory*, v8::internal::Handle<v8::internal::ScopeInfo>)",93957335551840,93957335552291],["v8::internal::DeclarationScope::set_should_eager_compile()",93957335553488,93957335553517],["v8::internal::Scope::DeserializeScopeChain(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::ScopeInfo, v8::internal::DeclarationScope*, v8::internal::AstValueFactory*, v8::internal::Scope::DeserializationMode)",93957335553664,93957335555955],["v8::internal::DeclarationScope::HoistSloppyBlockFunctions(v8::internal::AstNodeFactory*)",93957335556288,93957335557275],["v8::internal::Scope::DeclareVariable(v8::internal::Declaration*, v8::internal::AstRawString const*, int, v8::internal::VariableMode, v8::internal::VariableKind, v8::internal::InitializationFlag, bool*, bool*, bool*)",93957335557424,93957335557862],["v8::internal::Scope::DeclareVariableName(v8::internal::AstRawString const*, v8::internal::VariableMode, bool*, v8::internal::VariableKind)",93957335558272,93957335558580],["v8::internal::DeclarationScope::AllocateVariables(v8::internal::ParseInfo*)",93957335559248,93957335559415],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32DivU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241456,93957341241487],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Ctz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241840,93957341241865],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64DivU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242032,93957341242063],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Ior(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242160,93957341242191],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64ShrS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242256,93957341242287],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Rol(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242320,93957341242351],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Abs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242384,93957341242409],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Ceil(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242448,93957341242473],["v8::internal::Variable* v8::internal::Scope::Lookup<(v8::internal::Scope::ScopeLookupMode)1>(v8::internal::VariableProxy*, v8::internal::Scope*, v8::internal::Scope*, v8::internal::Scope*, bool)",93957335546288,93957335547030],["v8::internal::Scope::Scope(v8::internal::Zone*, v8::internal::Scope*, v8::internal::ScopeType)",93957335549488,93957335549886],["v8::internal::ModuleScope::ModuleScope(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ScopeInfo>, v8::internal::AstValueFactory*)",93957335551536,93957335551771],["v8::internal::ClassScope::DeclareClassVariable(v8::internal::AstValueFactory*, v8::internal::AstRawString const*, int)",93957335552800,93957335552930],["v8::internal::Scope::GetClosureScope()",93957335553440,93957335553480],["v8::internal::DeclarationScope::set_is_asm_module()",93957335553520,93957335553530],["v8::internal::Scope::ContainsAsmModule() const",93957335553568,93957335553653],["v8::internal::DeclarationScope* v8::internal::Zone::New<v8::internal::DeclarationScope, v8::internal::Zone*&, v8::internal::ScopeType, v8::internal::AstValueFactory*&, v8::internal::Handle<v8::internal::ScopeInfo> >(v8::internal::Zone*&, v8::internal::ScopeType&&, v8::internal::AstValueFactory*&, v8::internal::Handle<v8::internal::ScopeInfo>&&)",93957335555968,93957335556255],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Ge(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241200,93957341241231],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Ior(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241584,93957341241615],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Ror(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241776,93957341241807],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241904,93957341241935],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64DivS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242000,93957341242031],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64RemS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242064,93957341242095],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64And(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242128,93957341242159],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Xor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341242192,93957341242223],["v8::internal::CallPrinter::VisitNaryOperation(v8::internal::NaryOperation*)",93957335542320,93957335542762],["void v8::internal::Scope::AllocateScopeInfosRecursively<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::MaybeHandle<v8::internal::ScopeInfo>)",93957335547616,93957335547744],["v8::internal::VariableMap::Remove(v8::internal::Variable*)",93957335549008,93957335549231],["v8::internal::Scope::DeclareStaticHomeObjectVariable(v8::internal::AstValueFactory*)",93957335550000,93957335550099],["v8::internal::ModuleScope::ModuleScope(v8::internal::DeclarationScope*, v8::internal::AstValueFactory*)",93957335550960,93957335551531],["v8::internal::ClassScope::ClassScope(v8::internal::Zone*, v8::internal::Scope*, bool)",93957335551776,93957335551838],["v8::internal::Scope::Scope(v8::internal::Zone*, v8::internal::ScopeType, v8::internal::AstValueFactory*, v8::internal::Handle<v8::internal::ScopeInfo>)",93957335552304,93957335552786],["v8::internal::Scope::Scope(v8::internal::Zone*, v8::internal::AstRawString const*, v8::internal::MaybeAssignedFlag, v8::internal::Handle<v8::internal::ScopeInfo>)",93957335552944,93957335553361],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Gt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240944,93957341240975],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241328,93957341241359],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32RemU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241520,93957341241551],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Shl(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241648,93957341241679],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Rol(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241744,93957341241775],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Clz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241808,93957341241833],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Popcnt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241872,93957341241897],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241936,93957341241967],["v8::internal::CallPrinter::VisitArrayLiteral(v8::internal::ArrayLiteral*)",93957335538240,93957335538718],["v8::internal::CallPrinter::VisitNoStackOverflowCheck(v8::internal::AstNode*)",93957335543456,93957335545123],["v8::internal::Scope::NonLocal(v8::internal::AstRawString const*, v8::internal::VariableMode)",93957335547152,93957335547231],["void v8::internal::DeclarationScope::AllocateScopeInfos<v8::internal::Isolate>(v8::internal::ParseInfo*, v8::internal::Isolate*)",93957335547872,93957335548139],["v8::internal::VariableMap::Declare(v8::internal::Zone*, v8::internal::Scope*, v8::internal::AstRawString const*, v8::internal::VariableMode, v8::internal::VariableKind, v8::internal::InitializationFlag, v8::internal::MaybeAssignedFlag, v8::internal::IsStaticFlag, bool*)",93957335548528,93957335549007],["v8::internal::VariableMap::Add(v8::internal::Variable*)",93957335549232,93957335549480],["v8::internal::Scope::DeclareHomeObjectVariable(v8::internal::AstValueFactory*)",93957335549888,93957335549987],["v8::internal::DeclarationScope::DeclarationScope(v8::internal::Zone*, v8::internal::AstValueFactory*, v8::internal::REPLMode)",93957335550112,93957335550719],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64GtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240688,93957341240719],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241072,93957341241103],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Ctz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241264,93957341241289],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241392,93957341241423],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32RemS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241488,93957341241519],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32And(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241552,93957341241583],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Xor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241616,93957341241647],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32ShrS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241680,93957341241711],["v8::internal::CallPrinter::VisitForOfStatement(v8::internal::ForOfStatement*)",93957335535856,93957335536379],["v8::internal::CallPrinter::VisitCallNew(v8::internal::CallNew*)",93957335540672,93957335541453],["v8::internal::CallPrinter::VisitTemplateLiteral(v8::internal::TemplateLiteral*)",93957335542944,93957335543162],["v8::internal::Scope::LookupWith(v8::internal::VariableProxy*, v8::internal::Scope*, v8::internal::Scope*, v8::internal::Scope*, bool)",93957335545616,93957335545901],["v8::internal::VariableMap::Lookup(v8::internal::AstRawString const*)",93957335547040,93957335547150],["v8::internal::Scope::LookupInScopeInfo(v8::internal::AstRawString const*, v8::internal::Scope*)",93957335547232,93957335547615],["void v8::internal::Scope::AllocateScopeInfosRecursively<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::MaybeHandle<v8::internal::ScopeInfo>)",93957335547744,93957335547872],["void v8::internal::DeclarationScope::AllocateScopeInfos<v8::internal::LocalIsolate>(v8::internal::ParseInfo*, v8::internal::LocalIsolate*)",93957335548144,93957335548412],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32GeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240432,93957341240463],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64GeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240816,93957341240847],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Ge(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241008,93957341241039],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Gt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241136,93957341241167],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Clz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241232,93957341241257],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Popcnt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241296,93957341241321],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241360,93957341241391],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32DivS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241424,93957341241455],["v8::internal::CallPrinter::Print(v8::internal::Handle<v8::internal::String>)",93957335533824,93957335533856],["v8::internal::CallPrinter::VisitConditional(v8::internal::Conditional*)",93957335537088,93957335537334],["v8::internal::CallPrinter::VisitProperty(v8::internal::Property*)",93957335539344,93957335539955],["v8::internal::CallPrinter::VisitCountOperation(v8::internal::CountOperation*)",93957335541728,93957335541973],["v8::internal::CallPrinter::VisitSpread(v8::internal::Spread*)",93957335542768,93957335542932],["v8::internal::CallPrinter::VisitImportCallExpression(v8::internal::ImportCallExpression*)",93957335543168,93957335543447],["v8::internal::Variable* v8::internal::Scope::Lookup<(v8::internal::Scope::ScopeLookupMode)0>(v8::internal::VariableProxy*, v8::internal::Scope*, v8::internal::Scope*, v8::internal::Scope*, bool)",93957335545136,93957335545615],["v8::internal::Scope::LookupSloppyEval(v8::internal::VariableProxy*, v8::internal::Scope*, v8::internal::Scope*, v8::internal::Scope*, bool)",93957335545904,93957335546285],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240176,93957341240207],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240560,93957341240591],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64LeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240752,93957341240783],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240880,93957341240911],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Le(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240976,93957341241007],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241040,93957341241071],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Lt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241104,93957341241135],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Le(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341241168,93957341241199],["std::__1::__tree_iterator<std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>, std::__1::__tree_node<std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>, void*>*, long> std::__1::__tree<std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>, std::__1::__map_value_compare<v8::internal::AstRawString const*, std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>, v8::internal::SourceTextModuleDescriptor::AstRawStringComparer, true>, v8::internal::ZoneAllocator<std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*> > >::__emplace_multi<std::__1::pair<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*> >(std::__1::pair<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>&&)",93957335532272,93957335532492],["v8::internal::CallPrinter::VisitDoWhileStatement(v8::internal::DoWhileStatement*)",93957335534928,93957335535103],["v8::internal::CallPrinter::VisitClassLiteral(v8::internal::ClassLiteral*)",93957335536560,93957335536883],["v8::internal::CallPrinter::VisitRegExpLiteral(v8::internal::RegExpLiteral*)",93957335537776,93957335538057],["v8::internal::CallPrinter::VisitAssignment(v8::internal::Assignment*)",93957335538720,93957335539333],["v8::internal::CallPrinter::VisitCall(v8::internal::Call*)",93957335539968,93957335540669],["v8::internal::CallPrinter::VisitUnaryOperation(v8::internal::UnaryOperation*)",93957335541456,93957335541719],["v8::internal::CallPrinter::VisitBinaryOperation(v8::internal::BinaryOperation*)",93957335541984,93957335542319],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLoadMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341239104,93957341239134],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32GtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240304,93957341240335],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Eqz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240496,93957341240521],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64LtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240624,93957341240655],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64LeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240720,93957341240751],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64GeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240784,93957341240815],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240848,93957341240879],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Lt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240912,93957341240943],["v8::internal::SourceTextModuleDescriptor::AddExport(v8::internal::AstRawString const*, v8::internal::AstRawString const*, v8::internal::AstRawString const*, v8::internal::ImportAssertions const*, v8::internal::Scanner::Location, v8::internal::Scanner::Location, v8::internal::Zone*)",93957335527600,93957335528475],["v8::internal::CallPrinter::~CallPrinter()",93957335533392,93957335533424],["v8::internal::CallPrinter::VisitWithStatement(v8::internal::WithStatement*)",93957335534112,93957335534287],["v8::internal::CallPrinter::VisitForStatement(v8::internal::ForStatement*)",93957335535280,93957335535592],["v8::internal::CallPrinter::VisitTryCatchStatement(v8::internal::TryCatchStatement*)",93957335536384,93957335536559],["v8::internal::CallPrinter::VisitInitializeClassStaticElementsStatement(v8::internal::InitializeClassStaticElementsStatement*)",93957335536896,93957335537081],["v8::internal::CallPrinter::PrintLiteral(v8::internal::Handle<v8::internal::Object>, bool)",93957335537344,93957335537766],["v8::internal::CallPrinter::VisitObjectLiteral(v8::internal::ObjectLiteral*)",93957335538064,93957335538238],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeSelectWithType(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341234912,93957341235863],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341239808,93957341239942],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32LtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240240,93957341240271],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32LeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240368,93957341240399],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32GeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240464,93957341240495],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240528,93957341240559],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64LtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240592,93957341240623],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI64GtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240656,93957341240687],["v8::internal::Handle<v8::internal::SourceTextModuleInfoEntry> v8::internal::SourceTextModuleDescriptor::Entry::Serialize<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957335523488,93957335523639],["v8::internal::SourceTextModuleDescriptor::FindDuplicateExport(v8::internal::Zone*) const",93957335530448,93957335531207],["std::__1::vector<v8::internal::Handle<v8::internal::Object>, v8::internal::ZoneAllocator<v8::internal::Handle<v8::internal::Object> > >::__append(unsigned long)",93957335532560,93957335533246],["v8::internal::CallPrinter::Print(v8::internal::FunctionLiteral*, int)",93957335533488,93957335533608],["v8::internal::CallPrinter::VisitIfStatement(v8::internal::IfStatement*)",93957335533856,93957335534106],["v8::internal::CallPrinter::VisitSwitchStatement(v8::internal::SwitchStatement*)",93957335534288,93957335534916],["v8::internal::CallPrinter::VisitWhileStatement(v8::internal::WhileStatement*)",93957335535104,93957335535279],["v8::internal::CallPrinter::VisitForInStatement(v8::internal::ForInStatement*)",93957335535600,93957335535846],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeCallRef(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341229600,93957341231022],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeGlobalGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341236944,93957341237193],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeMemorySize(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341239168,93957341239334],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF64Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240048,93957341240139],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240208,93957341240239],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32LtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240272,93957341240303],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32GtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240336,93957341240367],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32LeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240400,93957341240431],["v8::internal::CaseClause::CaseClause(v8::internal::Zone*, v8::internal::Expression*, v8::internal::ScopedList<v8::internal::Statement*, void*> const&)",93957335520544,93957335520882],["v8::internal::SourceTextModuleDescriptor::AddImport(v8::internal::AstRawString const*, v8::internal::AstRawString const*, v8::internal::AstRawString const*, v8::internal::ImportAssertions const*, v8::internal::Scanner::Location, v8::internal::Scanner::Location, v8::internal::Zone*)",93957335526144,93957335526437],["v8::internal::SourceTextModuleDescriptor::MakeIndirectExportsExplicit(v8::internal::Zone*)",93957335529328,93957335530414],["std::__1::pair<std::__1::__tree_iterator<v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*, std::__1::__tree_node<v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*, void*>*, long>, bool> std::__1::__tree<v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*, v8::internal::SourceTextModuleDescriptor::ModuleRequestComparer, v8::internal::ZoneAllocator<v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*> >::__emplace_unique_key_args<v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*, v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*>(v8::internal::SourceTextModuleDescriptor::AstModuleRequest const* const&, v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*&&)",93957335531712,93957335531977],["std::__1::__tree<int, std::__1::less<int>, v8::internal::ZoneAllocator<int> >::destroy(std::__1::__tree_node<int, void*>*)",93957335532496,93957335532553],["v8::internal::CallPrinter::CallPrinter(v8::internal::Isolate*, bool, v8::internal::CallPrinter::SpreadErrorInArgsHint)",93957335533248,93957335533390],["v8::internal::CallPrinter::GetErrorHint() const",93957335533424,93957335533485],["v8::internal::CallPrinter::Print(char const*)",93957335533616,93957335533817],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeBr(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341221280,93957341221643],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeDelegate(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341233408,93957341233819],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLocalSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341236016,93957341236464],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeTableGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341237808,93957341238359],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeStoreMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341239136,93957341239166],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeMemoryGrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341239344,93957341239804],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeF32Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341239952,93957341240043],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Eqz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341240144,93957341240169],["v8::internal::ArrayLiteral::InitDepthAndFlags()",93957335518640,93957335519175],["v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::internal::ZoneAllocationPolicy>::Resize()",93957335521616,93957335522137],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::SourceTextModuleDescriptor::SerializeRegularExports<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*, v8::internal::Zone*) const",93957335524736,93957335525840],["v8::internal::SourceTextModuleDescriptor::AddEmptyImport(v8::internal::AstRawString const*, v8::internal::ImportAssertions const*, v8::internal::Scanner::Location, v8::internal::Zone*)",93957335527328,93957335527447],["v8::internal::SourceTextModuleDescriptor::AddStarExport(v8::internal::AstRawString const*, v8::internal::ImportAssertions const*, v8::internal::Scanner::Location, v8::internal::Scanner::Location, v8::internal::Zone*)",93957335528480,93957335529328],["v8::internal::SourceTextModuleDescriptor::GetCellIndexKind(int)",93957335530416,93957335530441],["v8::internal::SourceTextModuleDescriptor::Validate(v8::internal::ModuleScope*, v8::internal::PendingCompilationErrorHandler*, v8::internal::Zone*)",93957335531216,93957335531707],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>, std::__1::__tree_node<std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>, std::__1::__map_value_compare<v8::internal::AstRawString const*, std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>, v8::internal::SourceTextModuleDescriptor::AstRawStringComparer, true>, v8::internal::ZoneAllocator<std::__1::__value_type<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*> > >::__emplace_unique_key_args<v8::internal::AstRawString const*, std::__1::pair<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*> >(v8::internal::AstRawString const* const&, std::__1::pair<v8::internal::AstRawString const*, v8::internal::SourceTextModuleDescriptor::Entry*>&&)",93957335531984,93957335532258],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeIf(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341216096,93957341217456],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeCallFunction(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341224544,93957341225766],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>::DecodeNopForTestingUnsupportedInLiftoff(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::(anonymous namespace)::WasmGraphBuildingInterface>*, v8::internal::wasm::WasmOpcode)",93957341231872,93957341231896],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeDrop(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341234064,93957341234261],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeUnknownOrAsmJs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341235872,93957341236005],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLocalTee(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341236464,93957341236934],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeGlobalSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341237200,93957341237799],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeTableSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341238368,93957341239090],["v8::internal::ClassLiteralProperty::ClassLiteralProperty(v8::internal::Expression*, v8::internal::Expression*, v8::internal::ClassLiteralProperty::Kind, bool, bool, bool)",93957335516656,93957335516698],["v8::internal::CompareOperation::IsLiteralCompareUndefined(v8::internal::Expression**)",93957335519600,93957335519977],["v8::internal::MemCopy(void*, void const*, unsigned long)",93957335521104,93957335521313],["v8::internal::Handle<v8::internal::ModuleRequest> v8::internal::SourceTextModuleDescriptor::AstModuleRequest::Serialize<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957335522736,93957335523325],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::SourceTextModuleDescriptor::SerializeRegularExports<v8::internal::Isolate>(v8::internal::Isolate*, v8::internal::Zone*) const",93957335523648,93957335524736],["v8::internal::SourceTextModuleDescriptor::ModuleRequestComparer::operator()(v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*, v8::internal::SourceTextModuleDescriptor::AstModuleRequest const*) const",93957335525840,93957335526137],["v8::internal::SourceTextModuleDescriptor::AddStarImport(v8::internal::AstRawString const*, v8::internal::AstRawString const*, v8::internal::ImportAssertions const*, v8::internal::Scanner::Location, v8::internal::Scanner::Location, v8::internal::Zone*)",93957335526448,93957335527326],["v8::internal::SourceTextModuleDescriptor::AddExport(v8::internal::AstRawString const*, v8::internal::AstRawString const*, v8::internal::Scanner::Location, v8::internal::Zone*)",93957335527456,93957335527588],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeI32Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341212720,93957341212818],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeThrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341219584,93957341220262],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeBrTable(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341222192,93957341223978],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeReturnCall(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341227456,93957341228323],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeReturnCallRef(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341231024,93957341231865],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341231904,93957341233395],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeCatchAll(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341233824,93957341234049],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeSelect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341234272,93957341234906],["v8::internal::FunctionLiteral::AllowsLazyCompilation()",93957335515728,93957335515742],["v8::internal::Literal::Match(void*, void*)",93957335517376,93957335517547],["v8::internal::BinaryOperation::IsSmiLiteralOperation(v8::internal::Expression**, v8::internal::Smi*)",93957335519216,93957335519363],["v8::internal::CallBase::ComputeSpreadPosition()",93957335520064,93957335520147],["v8::internal::AstNodeFactory::NewNumberLiteral(double, int)",93957335520896,93957335521101],["v8::base::TemplateHashMapEntry<void*, void*> v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::internal::ZoneAllocationPolicy>::LookupOrInsert<void*, v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::internal::ZoneAllocationPolicy>::LookupOrInsert<v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::internal::ZoneAllocationPolicy>::LookupOrInsert(void* const&, unsigned int)::{lambda()#1}>(void* const&, unsigned int, v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::internal::ZoneAllocationPolicy>::LookupOrInsert(void* const&, unsigned int)::{lambda()#1} const&)::{lambda()#1}, {lambda()#1}>(void* const, unsigned int, v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::internal::ZoneAllocationPolicy>::LookupOrInsert<v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::internal::ZoneAllocationPolicy>::LookupOrInsert(void* const&, unsigned int)::{lambda()#1}>(void* const&, unsigned int, v8::base::TemplateHashMapImpl<void*, void*, v8::base::HashEqualityThenKeyMatcher<void*, bool (*)(void*, void*)>, v8::internal::ZoneAllocationPolicy>::LookupOrInsert(void* const&, unsigned int)::{lambda()#1} const&)::{lambda()#1} const&, {lambda()#1} const&)",93957335521328,93957335521605],["v8::internal::Handle<v8::internal::ModuleRequest> v8::internal::SourceTextModuleDescriptor::AstModuleRequest::Serialize<v8::internal::Isolate>(v8::internal::Isolate*) const",93957335522144,93957335522733],["v8::internal::Handle<v8::internal::SourceTextModuleInfoEntry> v8::internal::SourceTextModuleDescriptor::Entry::Serialize<v8::internal::Isolate>(v8::internal::Isolate*) const",93957335523328,93957335523479],["v8::internal::wasm::WasmOpcode v8::internal::wasm::Decoder::read_prefixed_opcode<(v8::internal::wasm::Decoder::ValidateFlag)0>(unsigned char const*, unsigned int*, char const*)",93957341208960,93957341209039],["int v8::internal::wasm::Decoder::read_leb_slowpath<int, (v8::internal::wasm::Decoder::ValidateFlag)2, (v8::internal::wasm::Decoder::TraceFlag)0, 32ul>(unsigned char const*, unsigned int*, char const*)",93957341213520,93957341213974],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeTry(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341217792,93957341218862],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeUnwind(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341220544,93957341220766],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeBrIf(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341221648,93957341222180],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeReturn(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341223984,93957341224530],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeCallIndirect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341225776,93957341227445],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeReturnCallIndirect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341228336,93957341229591],["v8::internal::VariableProxy::BindTo(v8::internal::Variable*)",93957335515376,93957335515409],["v8::internal::FunctionLiteral::GetDebugName() const",93957335515792,93957335516396],["v8::internal::ObjectLiteralProperty::emit_store() const",93957335516784,93957335516793],["v8::internal::ObjectLiteral::InitDepthAndFlags()",93957335517712,93957335518592],["v8::internal::ArrayLiteral::IsFastCloningSupported() const",93957335519184,93957335519214],["v8::internal::CompareOperation::IsLiteralCompareTypeof(v8::internal::Expression**, v8::internal::Literal**)",93957335519376,93957335519587],["v8::internal::CompareOperation::IsLiteralCompareNull(v8::internal::Expression**)",93957335519984,93957335520064],["v8::internal::Call::GetCallType() const",93957335520160,93957335520542],["v8::internal::wasm::PrintRawWasmCode(v8::internal::AccountingAllocator*, v8::internal::wasm::FunctionBody const&, v8::internal::wasm::WasmModule const*, v8::internal::wasm::PrintLocals)",93957341187936,93957341188216],["long v8::internal::wasm::Decoder::read_leb_slowpath<long, (v8::internal::wasm::Decoder::ValidateFlag)2, (v8::internal::wasm::Decoder::TraceFlag)0, 33ul>(unsigned char const*, unsigned int*, char const*)",93957341210976,93957341211459],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::GrowStackSpace(int)",93957341213264,93957341213461],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeBlock(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341214048,93957341215070],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeElse(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341217456,93957341217784],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeCatch(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341218864,93957341219577],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeRethrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341220272,93957341220543],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeEnd(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341220768,93957341221276],["v8::internal::Literal::ToBooleanIsTrue() const",93957335514832,93957335515030],["v8::internal::FunctionLiteral::set_inferred_name(v8::internal::Handle<v8::internal::String>)",93957335515616,93957335515644],["v8::internal::FunctionLiteral::end_position() const",93957335515760,93957335515773],["v8::internal::ObjectLiteralProperty::ObjectLiteralProperty(v8::internal::AstValueFactory*, v8::internal::Expression*, v8::internal::Expression*, bool)",93957335516432,93957335516560],["v8::internal::ObjectLiteralProperty::IsCompileTimeValue() const",93957335516704,93957335516783],["v8::internal::ObjectLiteral::CalculateEmitStore(v8::internal::Zone*)",93957335516800,93957335517370],["v8::internal::Literal::Hash()",93957335517552,93957335517700],["v8::internal::ObjectLiteral::IsFastCloningSupported() const",93957335518592,93957335518631],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>::DecodeLocals(unsigned char const*, unsigned int*, v8::base::Optional<unsigned int>)",93957341183808,93957341184446],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>::AnalyzeLoopAssignment(v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2>*, unsigned char const*, unsigned int, v8::internal::Zone*)",93957341206032,93957341207346],["v8::internal::wasm::ValueType v8::internal::wasm::value_type_reader::read_value_type<(v8::internal::wasm::Decoder::ValidateFlag)2>(v8::internal::wasm::Decoder*, unsigned char const*, unsigned int*, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures const&)",93957341209168,93957341210263],["v8::internal::wasm::Decoder::errorf(char const*, ...)",93957341212384,93957341212531],["void std::__1::vector<v8::internal::wasm::ControlBase<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, (v8::internal::wasm::Decoder::ValidateFlag)2>, v8::internal::ZoneAllocator<v8::internal::wasm::ControlBase<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)2>, (v8::internal::wasm::Decoder::ValidateFlag)2> > >::__emplace_back_slow_path<v8::internal::wasm::ControlKind, int, int, unsigned char const*&, v8::internal::wasm::Reachability>(v8::internal::wasm::ControlKind&&, int&&, int&&, unsigned char const*&, v8::internal::wasm::Reachability&&)",93957341212832,93957341213251],["int v8::internal::wasm::Decoder::read_i32v<(v8::internal::wasm::Decoder::ValidateFlag)2>(unsigned char const*, unsigned int*, char const*)",93957341213472,93957341213510],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeUnreachable(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341213984,93957341214034],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLoop(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341215072,93957341216094],["v8::internal::Expression::IsNumberLiteral() const",93957335514432,93957335514452],["v8::internal::Expression::IsConciseMethodDefinition() const",93957335515216,93957335515262],["v8::internal::Variable::SetMaybeAssigned()",93957335515472,93957335515570],["v8::internal::FunctionLiteral::ShouldEagerCompile() const",93957335515680,93957335515697],["v8::internal::FunctionLiteral::start_position() const",93957335515744,93957335515757],["v8::internal::FunctionLiteral::language_mode() const",93957335515776,93957335515791],["v8::internal::ObjectLiteralProperty::ObjectLiteralProperty(v8::internal::Expression*, v8::internal::Expression*, v8::internal::ObjectLiteralProperty::Kind, bool)",93957335516400,93957335516426],["v8::internal::LiteralProperty::NeedsSetFunctionName() const",93957335516560,93957335516656],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AtomicWait(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueKind, v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&)",93957341179136,93957341180169],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::~WasmFullDecoder()",93957341185744,93957341185808],["v8::internal::wasm::ValueType v8::internal::wasm::value_type_reader::read_value_type<(v8::internal::wasm::Decoder::ValidateFlag)0>(v8::internal::wasm::Decoder*, unsigned char const*, unsigned int*, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures const&)",93957341205168,93957341205842],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::~WasmFullDecoder()",93957341208848,93957341208928],["unsigned int v8::internal::wasm::Decoder::read_leb_slowpath<unsigned int, (v8::internal::wasm::Decoder::ValidateFlag)0, (v8::internal::wasm::Decoder::TraceFlag)0, 32ul>(unsigned char const*, unsigned int*, char const*)",93957341209040,93957341209156],["v8::internal::wasm::HeapType v8::internal::wasm::value_type_reader::read_heap_type<(v8::internal::wasm::Decoder::ValidateFlag)2>(v8::internal::wasm::Decoder*, unsigned char const*, unsigned int*, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures const&)",93957341210272,93957341210972],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeFunctionBody()",93957341211472,93957341212373],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::DecodeLocalGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>*, v8::internal::wasm::WasmOpcode)",93957341212544,93957341212708],["void v8::internal::ArrayLiteral::BuildBoilerplateDescription<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957335511088,93957335512215],["v8::internal::Expression::IsTheHoleLiteral() const",93957335514592,93957335514614],["v8::internal::Expression::IsPrivateName() const",93957335515072,93957335515168],["v8::internal::Expression::IsAccessorFunctionDefinition() const",93957335515280,93957335515315],["v8::internal::VariableProxy::VariableProxy(v8::internal::VariableProxy const*)",93957335515424,93957335515463],["v8::internal::Assignment::Assignment(v8::internal::AstNode::NodeType, v8::internal::Token::Value, v8::internal::Expression*, v8::internal::Expression*, int)",93957335515584,93957335515609],["v8::internal::FunctionLiteral::set_raw_inferred_name(v8::internal::AstConsString*)",93957335515648,93957335515676],["v8::internal::FunctionLiteral::SetShouldEagerCompile()",93957335515712,93957335515726],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AtomicBinop(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::StoreType, v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType))",93957341175392,93957341176507],["v8::internal::wasm::liftoff::AtomicBinop(v8::internal::wasm::LiftoffAssembler*, void (v8::internal::Assembler::*)(v8::internal::Register, v8::internal::Register), void (v8::internal::Assembler::*)(v8::internal::Register, v8::internal::Register), v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType)",93957341181584,93957341182380],["v8::internal::wasm::VerifyWasmCode(v8::internal::AccountingAllocator*, v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures*, v8::internal::wasm::FunctionBody const&)",93957341184592,93957341185245],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)0>::OpcodeLength(v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)0>*, unsigned char const*)",93957341186016,93957341187919],["v8::internal::wasm::PrintRawWasmCode(v8::internal::AccountingAllocator*, v8::internal::wasm::FunctionBody const&, v8::internal::wasm::WasmModule const*, v8::internal::wasm::PrintLocals, std::__1::basic_ostream<char, std::__1::char_traits<char> >&, std::__1::vector<int, std::__1::allocator<int> >*)",93957341188224,93957341205163],["v8::internal::wasm::BlockTypeImmediate<(v8::internal::wasm::Decoder::ValidateFlag)0>::BlockTypeImmediate(v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::Decoder*, unsigned char const*, v8::internal::wasm::WasmModule const*)",93957341205856,93957341206020],["_ZNSt3__16vectorIN2v88internal4wasm9ValueTypeENS2_13ZoneAllocatorIS4_EEE6assignINS_13move_iteratorINS_11__wrap_iterIPS4_EEEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISF_E9referenceEEE5valueEvE4typeESF_SF_",93957341207360,93957341208844],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::onFirstError()",93957341208928,93957341208949],["v8::internal::AstValueFactory::NewConsString(v8::internal::AstRawString const*, v8::internal::AstRawString const*)",93957335506816,93957335507084],["v8::internal::Handle<v8::internal::TemplateObjectDescription> v8::internal::GetTemplateObject::GetOrBuildDescription<v8::internal::Isolate>(v8::internal::Isolate*)",93957335513072,93957335513701],["v8::internal::Expression::IsPropertyName() const",93957335514496,93957335514548],["v8::internal::Expression::IsLiteralButNotNullOrUndefined() const",93957335514736,93957335514788],["v8::internal::Expression::ToBooleanIsFalse() const",93957335515040,93957335515068],["v8::internal::Expression::IsAnonymousFunctionDefinition() const",93957335515168,93957335515212],["v8::internal::FunctionLiteral::kind() const",93957335515264,93957335515277],["v8::internal::VariableProxy::VariableProxy(v8::internal::Variable*, int)",93957335515328,93957335515374],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpackssdw, &v8::internal::Assembler::packssdw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341171440,93957341171661],["v8::internal::wasm::LiftoffAssembler::AtomicOr(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType)",93957341177424,93957341177494],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AlignmentCheckMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, unsigned int, unsigned long, v8::internal::Register, v8::internal::wasm::LiftoffRegList)",93957341181056,93957341181339],["v8::internal::wasm::LiftoffAssembler::PatchPrepareStackFrame(int)",93957341182816,93957341183447],["v8::internal::wasm::BytecodeIterator::BytecodeIterator(unsigned char const*, unsigned char const*, v8::internal::wasm::BodyLocalDecls*)",93957341184448,93957341184583],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)2, v8::internal::wasm::EmptyInterface>::Decode()",93957341185248,93957341185731],["v8::internal::wasm::OpcodeLength(unsigned char const*, unsigned char const*)",93957341185808,93957341186011],["v8::internal::wasm::CheckHardwareSupportsSimd()",93957341187920,93957341187930],["v8::internal::AstValueFactory::GetOneByteStringInternal(v8::internal::Vector<unsigned char const>)",93957335504848,93957335504995],["v8::internal::Literal::AsArrayIndex(unsigned int*) const",93957335508736,93957335508876],["v8::internal::Expression::IsCompileTimeValue()",93957335512624,93957335512687],["v8::internal::AstNode::AsIterationStatement()",93957335514352,93957335514398],["v8::internal::Expression::IsStringLiteral() const",93957335514464,93957335514486],["v8::internal::Expression::IsNullLiteral() const",93957335514560,93957335514582],["v8::internal::Expression::IsUndefinedLiteral() const",93957335514624,93957335514724],["v8::internal::Expression::ToBooleanIsTrue() const",93957335514800,93957335514825],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vaddpd, &v8::internal::Assembler::addpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341169712,93957341169896],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpavgw, &v8::internal::Assembler::pavgw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341172320,93957341172504],["v8::internal::wasm::LiftoffAssembler::AtomicSub(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType)",93957341176896,93957341177331],["v8::internal::wasm::LiftoffAssembler::AtomicExchange(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType)",93957341177584,93957341177942],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AtomicNotify(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&)",93957341180176,93957341181056],["v8::internal::wasm::LiftoffAssembler::AtomicStore(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType, v8::internal::wasm::LiftoffRegList)",93957341181344,93957341181575],["v8::internal::wasm::LiftoffAssembler::AtomicCompareExchange(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType)",93957341182384,93957341182801],["v8::internal::wasm::DecodeLocalDecls(v8::internal::wasm::WasmFeatures const&, v8::internal::wasm::BodyLocalDecls*, v8::internal::wasm::WasmModule const*, unsigned char const*, unsigned char const*)",93957341183456,93957341183793],["v8::internal::AstRawString::IsOneByteEqualTo(char const*) const",93957335495136,93957335495210],["v8::internal::AstValueFactory::GetString(v8::internal::Handle<v8::internal::String>)",93957335506240,93957335506535],["void v8::internal::ObjectLiteral::BuildBoilerplateDescription<v8::internal::Isolate>(v8::internal::Isolate*)",93957335507808,93957335508659],["void v8::internal::ObjectLiteral::BuildBoilerplateDescription<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957335509184,93957335510016],["v8::internal::Handle<v8::internal::Object> v8::internal::Literal::BuildValue<v8::internal::Isolate>(v8::internal::Isolate*) const",93957335512224,93957335512612],["v8::internal::Handle<v8::internal::Object> v8::internal::Literal::BuildValue<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957335512688,93957335513061],["v8::internal::Handle<v8::internal::TemplateObjectDescription> v8::internal::GetTemplateObject::GetOrBuildDescription<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957335513712,93957335514341],["v8::internal::Expression::IsSmiLiteral() const",93957335514400,93957335514420],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpaddq, &v8::internal::Assembler::paddq>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341168112,93957341168296],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vminpd, &v8::internal::Assembler::minpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341170544,93957341170765],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vandnps, &v8::internal::Assembler::andnps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341171920,93957341172114],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AtomicStoreMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::StoreType, v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&)",93957341173488,93957341174310],["v8::internal::wasm::LiftoffAssembler::AtomicAdd(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType)",93957341176512,93957341176882],["v8::internal::wasm::LiftoffAssembler::AtomicAnd(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType)",93957341177344,93957341177414],["v8::internal::wasm::LiftoffAssembler::AtomicXor(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType)",93957341177504,93957341177574],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AtomicCompareExchange(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::StoreType, v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&)",93957341177952,93957341179124],["v8::internal::Handle<v8::internal::String> v8::internal::AstConsString::AllocateFlat<v8::internal::Isolate>(v8::internal::Isolate*) const",93957335491472,93957335491927],["v8::internal::AstConsString::ToRawStrings() const",93957335495792,93957335495919],["v8::internal::AstValueFactory::GetTwoByteStringInternal(v8::internal::Vector<unsigned short const>)",93957335505568,93957335505633],["v8::internal::AstValueFactory::NewConsString()",93957335506576,93957335506640],["v8::base::TemplateHashMapImpl<v8::internal::AstRawString const*, v8::base::NoHashMapValue, v8::internal::AstRawStringMapMatcher, v8::base::DefaultAllocationPolicy>::Resize()",93957335507088,93957335507807],["v8::internal::Literal::IsPropertyName() const",93957335508672,93957335508724],["v8::internal::ObjectBoilerplateDescription::set_key_value(int, v8::internal::Object, v8::internal::Object)",93957335508880,93957335509172],["void v8::internal::ArrayLiteral::BuildBoilerplateDescription<v8::internal::Isolate>(v8::internal::Isolate*)",93957335510016,93957335511076],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmulld, &v8::internal::Assembler::pmulld>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341165296,93957341165502],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vmulps, &v8::internal::Assembler::mulps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341168912,93957341169073],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vmulpd, &v8::internal::Assembler::mulpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341170128,93957341170312],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpacksswb, &v8::internal::Assembler::packsswb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341170992,93957341171213],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpackusdw, &v8::internal::Assembler::packusdw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341171664,93957341171910],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpavgb, &v8::internal::Assembler::pavgb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341172128,93957341172312],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AtomicOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::Vector<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> >, v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341172512,93957341173486],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AtomicLoadMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::LoadType, v8::internal::wasm::MemoryAccessImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&)",93957341174320,93957341175380],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitObjectLiteral(v8::internal::ObjectLiteral*)",93957335490112,93957335490338],["v8::internal::Handle<v8::internal::String> v8::internal::AstConsString::AllocateFlat<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957335493872,93957335494325],["v8::internal::AstRawString::Equal(v8::internal::AstRawString const*, v8::internal::AstRawString const*)",93957335495248,93957335495497],["unsigned int v8::internal::StringHasher::HashSequentialString<char>(char const*, int, unsigned long)",93957335503968,93957335504513],["v8::internal::AstValueFactory::GetString(unsigned int, bool, v8::internal::Vector<unsigned char const>)",93957335505008,93957335505563],["unsigned int v8::internal::StringHasher::HashSequentialString<unsigned short>(unsigned short const*, int, unsigned long)",93957335505648,93957335506225],["v8::internal::AstValueFactory::CloneFromOtherFactory(v8::internal::AstRawString const*)",93957335506544,93957335506571],["v8::internal::AstValueFactory::NewConsString(v8::internal::AstRawString const*)",93957335506640,93957335506808],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmullw, &v8::internal::Assembler::pmullw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341163216,93957341163400],["void v8::internal::wasm::liftoff::EmitSimdShiftOp<&v8::internal::Assembler::vpsllq, &v8::internal::Assembler::psllq, (unsigned char)6>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341166320,93957341166595],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vaddps, &v8::internal::Assembler::addps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341168528,93957341168689],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vminps, &v8::internal::Assembler::minps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341169296,93957341169490],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vsubpd, &v8::internal::Assembler::subpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341169904,93957341170125],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vdivpd, &v8::internal::Assembler::divpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341170320,93957341170541],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vmaxpd, &v8::internal::Assembler::maxpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341170768,93957341170989],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpackuswb, &v8::internal::Assembler::packuswb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341171216,93957341171437],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitNoStackOverflowCheck(v8::internal::AstNode*)",93957335487040,93957335488635],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitConditional(v8::internal::Conditional*)",93957335490912,93957335491090],["void v8::internal::CopyChars<unsigned char, char16_t>(char16_t*, unsigned char const*, unsigned long)",93957335492208,93957335493584],["void v8::internal::AstValueFactory::Internalize<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*)",93957335494640,93957335494933],["v8::internal::AstRawString::FirstCharacter() const",93957335495216,93957335495244],["v8::internal::AstRawString::Compare(v8::internal::AstRawString const*, v8::internal::AstRawString const*)",93957335495504,93957335495784],["v8::internal::AstStringConstants::AstStringConstants(v8::internal::Isolate*, unsigned long)",93957335495920,93957335503962],["v8::base::TemplateHashMapImpl<v8::internal::AstRawString const*, v8::base::NoHashMapValue, v8::internal::AstRawStringMapMatcher, v8::base::DefaultAllocationPolicy>::InsertNew(v8::internal::AstRawString const* const&, unsigned int)",93957335504528,93957335504840],["void v8::internal::wasm::liftoff::EmitSimdShiftOp<&v8::internal::Assembler::vpsraw, &v8::internal::Assembler::psraw, (unsigned char)4>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341161392,93957341161667],["void v8::internal::wasm::liftoff::EmitSimdShiftOp<&v8::internal::Assembler::vpsrad, &v8::internal::Assembler::psrad, (unsigned char)5>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341164304,93957341164579],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmaddwd, &v8::internal::Assembler::pmaddwd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341165712,93957341165896],["void v8::internal::wasm::liftoff::EmitI64x2ShrS<v8::internal::Immediate>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::Immediate, bool)",93957341167216,93957341167821],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpsubq, &v8::internal::Assembler::psubq>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341168304,93957341168525],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vsubps, &v8::internal::Assembler::subps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341168704,93957341168898],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vdivps, &v8::internal::Assembler::divps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341169088,93957341169282],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vmaxps, &v8::internal::Assembler::maxps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341169504,93957341169698],["v8::internal::Handle<v8::internal::AccessorInfo> v8::(anonymous namespace)::MakeAccessorInfo<void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&)>(v8::internal::Isolate*, v8::Local<v8::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&), v8::Local<v8::Value>, v8::AccessControl, v8::Local<v8::AccessorSignature>, bool, bool)",93957335484880,93957335486021],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitSwitchStatement(v8::internal::SwitchStatement*)",93957335489264,93957335489520],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitNaryOperation(v8::internal::NaryOperation*)",93957335490496,93957335490717],["v8::internal::Handle<v8::internal::String> v8::internal::AstConsString::Allocate<v8::internal::Isolate>(v8::internal::Isolate*) const",93957335491248,93957335491357],["void v8::internal::CopyChars<unsigned char, unsigned char>(unsigned char*, unsigned char const*, unsigned long)",93957335491936,93957335492201],["void v8::internal::CopyChars<unsigned short, unsigned short>(unsigned short*, unsigned short const*, unsigned long)",93957335493584,93957335493866],["void v8::internal::AstValueFactory::Internalize<v8::internal::Isolate>(v8::internal::Isolate*)",93957335494336,93957335494637],["v8::internal::AstRawString::AsArrayIndex(unsigned int*) const",93957335494944,93957335495128],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpaddsb, &v8::internal::Assembler::paddsb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341159424,93957341159608],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpaddusw, &v8::internal::Assembler::paddusw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341162352,93957341162536],["void v8::internal::wasm::liftoff::EmitAllTrue<&(void v8::internal::TurboAssembler::Pcmpeqd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister))>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341163600,93957341164001],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpaddd, &v8::internal::Assembler::paddd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341164880,93957341165064],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmaxsd, &v8::internal::Assembler::pmaxsd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341165504,93957341165710],["void v8::internal::wasm::liftoff::EmitAllTrue<&(void v8::internal::TurboAssembler::Pcmpeqq<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister))>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341165904,93957341166315],["void v8::internal::wasm::liftoff::EmitI64x2ShrS<v8::internal::Register>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::Register, bool)",93957341166608,93957341167213],["void v8::internal::wasm::liftoff::EmitSimdShiftOp<&v8::internal::Assembler::vpsrlq, &v8::internal::Assembler::psrlq, (unsigned char)6>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341167824,93957341168099],["v8::internal::EmbedderNode::WrapperNode()",93957335483008,93957335483018],["v8::internal::AstFunctionLiteralIdReindexer::AstFunctionLiteralIdReindexer(unsigned long, int)",93957335486160,93957335486191],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitForInStatement(v8::internal::ForInStatement*)",93957335488848,93957335488984],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitInitializeClassMembersStatement(v8::internal::InitializeClassMembersStatement*)",93957335489664,93957335489859],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitProperty(v8::internal::Property*)",93957335490352,93957335490487],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitCallNew(v8::internal::CallNew*)",93957335490720,93957335490907],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitImportCallExpression(v8::internal::ImportCallExpression*)",93957335491104,93957335491246],["v8::internal::Handle<v8::internal::String> v8::internal::AstConsString::Allocate<v8::internal::LocalIsolate>(v8::internal::LocalIsolate*) const",93957335491360,93957335491466],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vcmpltpd, &v8::internal::Assembler::cmpltpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341156640,93957341156848],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpsubusb, &v8::internal::Assembler::psubusb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341160256,93957341160477],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpaddw, &v8::internal::Assembler::paddw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341161968,93957341162152],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpsubsw, &v8::internal::Assembler::psubsw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341162768,93957341162989],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmaxsw, &v8::internal::Assembler::pmaxsw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341163408,93957341163592],["void v8::internal::wasm::liftoff::EmitSimdShiftOp<&v8::internal::Assembler::vpslld, &v8::internal::Assembler::pslld, (unsigned char)5>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341164016,93957341164291],["void v8::internal::wasm::liftoff::EmitSimdShiftOp<&v8::internal::Assembler::vpsrld, &v8::internal::Assembler::psrld, (unsigned char)5>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341164592,93957341164867],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpsubd, &v8::internal::Assembler::psubd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341165072,93957341165293],["v8::internal::HandleScopeImplementer::DetachPersistent(unsigned long*)",93957335480528,93957335481007],["v8::(anonymous namespace)::ArrayBufferAllocator::Reallocate(void*, unsigned long, unsigned long)",93957335483392,93957335483457],["v8::internal::InterruptsScope::~InterruptsScope()",93957335486064,93957335486112],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitFunctionLiteral(v8::internal::FunctionLiteral*)",93957335486256,93957335486520],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitForStatement(v8::internal::ForStatement*)",93957335488640,93957335488843],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitBlock(v8::internal::Block*)",93957335488992,93957335489259],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitIfStatement(v8::internal::IfStatement*)",93957335489520,93957335489656],["v8::internal::AstTraversalVisitor<v8::internal::AstFunctionLiteralIdReindexer>::VisitInitializeClassStaticElementsStatement(v8::internal::InitializeClassStaticElementsStatement*)",93957335489872,93957335490109],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpminud, &v8::internal::Assembler::pminud>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341155104,93957341155310],["void v8::internal::wasm::liftoff::EmitAllTrue<&(void v8::internal::TurboAssembler::Pcmpeqb<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister))>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341157440,93957341157841],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpsubb, &v8::internal::Assembler::psubb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341159808,93957341160029],["void v8::internal::wasm::liftoff::EmitAllTrue<&(void v8::internal::TurboAssembler::Pcmpeqw<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister))>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341160688,93957341161089],["void v8::internal::wasm::liftoff::EmitSimdShiftOp<&v8::internal::Assembler::vpsrlw, &v8::internal::Assembler::psrlw, (unsigned char)4>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341161680,93957341161955],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpaddsw, &v8::internal::Assembler::paddsw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341162160,93957341162344],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpsubw, &v8::internal::Assembler::psubw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341162544,93957341162765],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpsubusw, &v8::internal::Assembler::psubusw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341162992,93957341163213],["v8::EmbedderHeapTracer::FinalizeTracing()",93957335479680,93957335479727],["v8::internal::InvokeFinalizationRegistryCleanupFromTask(v8::internal::Handle<v8::internal::Context>, v8::internal::Handle<v8::internal::JSFinalizationRegistry>, v8::internal::Handle<v8::internal::Object>)",93957335482288,93957335482900],["v8::(anonymous namespace)::ArrayBufferAllocator::Allocate(unsigned long)",93957335483344,93957335483362],["void std::__1::vector<v8::MemoryRange, std::__1::allocator<v8::MemoryRange> >::__push_back_slow_path<v8::MemoryRange const&>(v8::MemoryRange const&)",93957335483488,93957335483755],["v8::internal::InterruptsScope::~InterruptsScope()",93957335486032,93957335486064],["std::__1::__shared_ptr_pointer<v8::internal::BackingStore*, std::__1::default_delete<v8::internal::BackingStore>, std::__1::allocator<v8::internal::BackingStore> >::__on_zero_shared()",93957335486112,93957335486156],["v8::internal::AstFunctionLiteralIdReindexer::Reindex(v8::internal::Expression*)",93957335486192,93957335486250],["v8::internal::AstFunctionLiteralIdReindexer::VisitClassLiteral(v8::internal::ClassLiteral*)",93957335486528,93957335487032],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpcmpeqw, &v8::internal::Assembler::pcmpeqw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341153440,93957341153624],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vcmpltps, &v8::internal::Assembler::cmpltps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341155872,93957341156080],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpand, &v8::internal::Assembler::pand>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341157056,93957341157240],["void v8::internal::wasm::liftoff::EmitI8x16Shr<false>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341158544,93957341159224],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpaddusb, &v8::internal::Assembler::paddusb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341159616,93957341159800],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpsubsb, &v8::internal::Assembler::psubsb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341160032,93957341160253],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmaxsb, &v8::internal::Assembler::pmaxsb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341160480,93957341160686],["void v8::internal::wasm::liftoff::EmitSimdShiftOp<&v8::internal::Assembler::vpsllw, &v8::internal::Assembler::psllw, (unsigned char)4>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341161104,93957341161379],["v8::HeapProfiler::TakeHeapSnapshot(v8::ActivityControl*, v8::HeapProfiler::ObjectNameResolver*, bool)",93957335479520,93957335479530],["v8::internal::HandleScopeImplementer::ArchiveSpacePerThread()",93957335479872,93957335479883],["v8::internal::InvokeAccessorGetterCallback(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&))",93957335481040,93957335481669],["v8::internal::GCExtension::~GCExtension()",93957335482944,93957335482992],["_ZN2v88internal11StringShape33DispatchToSpecificTypeWithoutCastIZNS1_22DispatchToSpecificTypeIZNKS0_6String7GetImplEiE19StringGetDispatchertJRiEEET0_S4_DpOT1_E17CastingDispatchertJRS4_S6_EEES7_SA_",93957335483024,93957335483333],["v8::(anonymous namespace)::ArrayBufferAllocator::AllocateUninitialized(unsigned long)",93957335483376,93957335483389],["v8::internal::StringsStorage::StringsMatch(void*, void*)",93957335483472,93957335483488],["v8::internal::Handle<v8::internal::AccessorInfo> v8::(anonymous namespace)::MakeAccessorInfo<void (*)(v8::Local<v8::String>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&)>(v8::internal::Isolate*, v8::Local<v8::Name>, void (*)(v8::Local<v8::String>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&), v8::Local<v8::Value>, v8::AccessControl, v8::Local<v8::AccessorSignature>, bool, bool)",93957335483760,93957335484880],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_demote_f64x2_zero(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341152288,93957341152362],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpminuw, &v8::internal::Assembler::pminuw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341154256,93957341154462],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vcmpeqps, &v8::internal::Assembler::cmpeqps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341155520,93957341155688],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vcmpeqpd, &v8::internal::Assembler::cmpeqpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341156288,93957341156456],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vcmplepd, &v8::internal::Assembler::cmplepd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341156848,93957341157056],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpor, &v8::internal::Assembler::por>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341157248,93957341157432],["void v8::internal::wasm::liftoff::EmitI8x16Shr<true>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341157856,93957341158536],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpaddb, &v8::internal::Assembler::paddb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341159232,93957341159416],["v8::CpuProfiler::StartProfiling(v8::Local<v8::String>, v8::CpuProfilingOptions, std::__1::unique_ptr<v8::DiscardedSamplesDelegate, std::__1::default_delete<v8::DiscardedSamplesDelegate> >)",93957335478832,93957335478845],["v8::HeapProfiler::StartSamplingHeapProfiler(unsigned long, int, v8::HeapProfiler::SamplingFlags)",93957335479584,93957335479594],["v8::RegisterState::~RegisterState()",93957335479744,93957335479776],["v8::internal::HandleScopeImplementer::Iterate(v8::internal::RootVisitor*)",93957335480432,93957335480470],["v8::internal::HandleScopeImplementer::BeginDeferredScope()",93957335481008,93957335481028],["v8::internal::InvokeFunctionCallback(v8::FunctionCallbackInfo<v8::Value> const&, void (*)(v8::FunctionCallbackInfo<v8::Value> const&))",93957335481680,93957335482288],["v8::Extension::~Extension()",93957335482912,93957335482944],["v8::base::PageAllocator::CommitPageSize()",93957335482992,93957335483002],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_rounding_average_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151712,93957341151725],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpcmpgtb, &v8::internal::Assembler::pcmpgtb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341152624,93957341152845],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmaxuw, &v8::internal::Assembler::pmaxuw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341153856,93957341154062],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmaxud, &v8::internal::Assembler::pmaxud>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341154688,93957341154894],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpcmpeqq, &v8::internal::Assembler::pcmpeqq>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341155312,93957341155518],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vcmpneqps, &v8::internal::Assembler::cmpneqps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341155696,93957341155867],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vcmpleps, &v8::internal::Assembler::cmpleps>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341156080,93957341156288],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vcmpneqpd, &v8::internal::Assembler::cmpneqpd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341156464,93957341156635],["v8::CpuProfile::GetSampleTimestamp(int) const",93957335478512,93957335478593],["v8::HeapSnapshot::Serialize(v8::OutputStream*, v8::HeapSnapshot::SerializationFormat) const",93957335479008,93957335479460],["v8::HeapProfiler::StopTrackingHeapObjects()",93957335479552,93957335479562],["v8::HeapProfiler::GetAllocationProfile()",93957335479616,93957335479626],["v8::CFunctionInfo::ArgumentInfo(unsigned int) const",93957335479728,93957335479743],["v8::RegisterState::RegisterState(v8::RegisterState const&)",93957335479776,93957335479871],["v8::internal::HandleScopeImplementer::IterateThis(v8::internal::RootVisitor*)",93957335479888,93957335480425],["v8::internal::HandleScopeImplementer::Iterate(v8::internal::RootVisitor*, char*)",93957335480480,93957335480514],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_uconvert_i8x16_low(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151232,93957341151338],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_abs(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341152064,93957341152087],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_trunc_sat_f64x2_u_zero(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341152400,93957341152423],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpminsb, &v8::internal::Assembler::pminsb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341153040,93957341153246],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpcmpgtw, &v8::internal::Assembler::pcmpgtw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341153632,93957341153853],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpminsw, &v8::internal::Assembler::pminsw>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341154064,93957341154248],["void v8::internal::wasm::liftoff::EmitSimdNonCommutativeBinOp<&v8::internal::Assembler::vpcmpgtd, &v8::internal::Assembler::pcmpgtd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341154464,93957341154685],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpminsd, &v8::internal::Assembler::pminsd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341154896,93957341155102],["v8::CpuProfileNode::GetBailoutReason() const",93957335478240,93957335478278],["v8::CpuProfiler::New(v8::Isolate*, v8::CpuProfilingNamingMode, v8::CpuProfilingLoggingMode)",93957335478688,93957335478750],["v8::CpuProfiler::StopProfiling(v8::Local<v8::String>)",93957335478896,93957335478909],["v8::HeapProfiler::FindObjectById(unsigned int)",93957335479488,93957335479498],["v8::HeapProfiler::StartTrackingHeapObjects(bool)",93957335479536,93957335479546],["v8::HeapProfiler::GetHeapStats(v8::OutputStream*, long*)",93957335479568,93957335479578],["v8::HeapProfiler::StopSamplingHeapProfiler()",93957335479600,93957335479610],["v8::EmbedderHeapTracer::NotifyEmptyEmbedderStack()",93957335479632,93957335479679],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_sconvert_i32x4(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341150304,93957341150372],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_uconvert_i16x8_low(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151520,93957341151626],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_abs(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151840,93957341151946],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_convert_low_i32x4_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341152176,93957341152199],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_trunc_sat_f64x2_s_zero(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341152368,93957341152391],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpcmpeqb, &v8::internal::Assembler::pcmpeqb>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341152432,93957341152616],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpmaxub, &v8::internal::Assembler::pmaxub>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341152848,93957341153032],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpminub, &v8::internal::Assembler::pminub>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341153248,93957341153432],["v8::Object::PreviewEntries(bool*)",93957335477584,93957335478013],["v8::CpuProfileNode::GetChild(int) const",93957335478352,93957335478394],["v8::CpuProfile::GetEndTime() const",93957335478640,93957335478671],["v8::CpuProfiler::Dispose()",93957335478768,93957335478802],["v8::CpuProfiler::StartProfiling(v8::Local<v8::String>, bool)",93957335478848,93957335478889],["v8::HeapSnapshot::Delete()",93957335478912,93957335478994],["v8::HeapProfiler::GetObjectId(v8::Local<v8::Value>)",93957335479472,93957335479482],["v8::HeapProfiler::ClearObjectIds()",93957335479504,93957335479514],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_mul(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341146528,93957341146541],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_sconvert_i32x4(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151040,93957341151053],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_sconvert_i16x8_low(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151376,93957341151482],["v8::internal::wasm::LiftoffAssembler::emit_s128_and_not(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151664,93957341151683],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_abs(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151728,93957341151834],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_abs(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151952,93957341152058],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_convert_low_i32x4_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341152096,93957341152174],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_promote_low_f32x4(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341152208,93957341152276],["v8::Isolate::IsInUse()",93957335475744,93957335475761],["v8::CpuProfileNode::GetLineNumber() const",93957335478160,93957335478182],["v8::CpuProfileNode::GetNodeId() const",93957335478304,93957335478313],["v8::CpuProfile::GetTopDownRoot() const",93957335478432,93957335478445],["v8::CpuProfile::GetStartTime() const",93957335478608,93957335478639],["v8::CpuProfile::GetSamplesCount() const",93957335478672,93957335478681],["v8::CpuProfilingOptions::CpuProfilingOptions(v8::CpuProfilingMode, unsigned int, int, v8::MaybeLocal<v8::Context>)",93957335478752,93957335478766],["v8::CpuProfiler::SetSamplingInterval(int)",93957335478816,93957335478829],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_neg(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341145520,93957341145899],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_pmin(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341148256,93957341148275],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_sconvert_i16x8(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151008,93957341151021],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_sconvert_i8x16_low(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151088,93957341151194],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_uconvert_i8x16_high(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151344,93957341151367],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_sconvert_i16x8_high(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151488,93957341151511],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_uconvert_i16x8_high(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151632,93957341151655],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_rounding_average_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151696,93957341151709],["v8::Isolate::SetAllowWasmCodeGenerationCallback(bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>))",93957335475120,93957335475133],["v8::String::Utf8Value::~Utf8Value()",93957335476416,93957335476436],["v8::CpuProfileNode::GetScriptId() const",93957335478080,93957335478093],["v8::CpuProfileNode::GetHitLineCount() const",93957335478208,93957335478220],["v8::internal::RegExpAtom::max_match()",93957335478288,93957335478297],["v8::CpuProfileNode::GetChildrenCount() const",93957335478320,93957335478338],["v8::CpuProfile::Delete()",93957335478400,93957335478420],["v8::CpuProfile::GetSample(int) const",93957335478448,93957335478507],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_sub(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143648,93957341143661],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_trunc(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341146240,93957341146357],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_min(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341146560,93957341147351],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_sconvert_f32x4(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341148320,93957341149055],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_uconvert_i32x4(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341150384,93957341151002],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_uconvert_i16x8(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151024,93957341151037],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_uconvert_i32x4(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151056,93957341151076],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_sconvert_i8x16_high(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341151200,93957341151223],["v8::Isolate::EnqueueMicrotask(void (*)(void*), void*)",93957335474160,93957335474186],["v8::Isolate::AddNearHeapLimitCallback(unsigned long (*)(void*, unsigned long, unsigned long), void*)",93957335475184,93957335475201],["v8::MicrotasksScope::~MicrotasksScope()",93957335475824,93957335475880],["v8::Exception::Error(v8::Local<v8::String>)",93957335476912,93957335477373],["v8::CpuProfileNode::GetFunctionName() const",93957335478016,93957335478079],["v8::CpuProfileNode::GetScriptResourceName() const",93957335478096,93957335478159],["v8::CpuProfileNode::GetColumnNumber() const",93957335478192,93957335478205],["v8::CpuProfileNode::GetLineTicks(v8::CpuProfileNode::LineTick*, unsigned int) const",93957335478224,93957335478234],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_neg(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141936,93957341142284],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_max(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341144352,93957341145066],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_ceil(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341145984,93957341146101],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_add(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341146496,93957341146509],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_div(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341146544,93957341146557],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_max(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341147360,93957341148247],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_pmax(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341148288,93957341148307],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_uconvert_f32x4(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341149056,93957341150292],["v8::Isolate::MeasureMemory(std::__1::unique_ptr<v8::MeasureMemoryDelegate, std::__1::default_delete<v8::MeasureMemoryDelegate> >, v8::MeasureMemoryExecution)",93957335473696,93957335473713],["v8::Isolate::LowMemoryNotification()",93957335474304,93957335474724],["v8::Isolate::SetWasmInstanceCallback(bool (*)(v8::FunctionCallbackInfo<v8::Value> const&))",93957335475152,93957335475165],["v8::Isolate::AddMessageListenerWithErrorLevel(void (*)(v8::Local<v8::Message>, v8::Local<v8::Value>), int, v8::Local<v8::Value>)",93957335475248,93957335475724],["v8::MicrotasksScope::MicrotasksScope(v8::Isolate*, v8::MicrotasksScope::Type)",93957335475776,93957335475810],["v8::String::Utf8Value::Utf8Value(v8::Isolate*, v8::Local<v8::Value>)",93957335475888,93957335476413],["v8::Exception::RangeError(v8::Local<v8::String>)",93957335476448,93957335476909],["v8::Exception::CreateMessage(v8::Isolate*, v8::Local<v8::Value>)",93957335477376,93957335477572],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_extmul_high_i32x4_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141136,93957341141174],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_floor(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143248,93957341143365],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_div(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143680,93957341143693],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_pmax(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341145104,93957341145123],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_sqrt(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341145904,93957341145978],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_floor(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341146112,93957341146229],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_nearest_int(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341146368,93957341146482],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_sub(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341146512,93957341146525],["v8::Isolate::AllowJavascriptExecutionScope::AllowJavascriptExecutionScope(v8::Isolate*)",93957335472912,93957335472968],["v8::Isolate::RemoveCallCompletedCallback(void (*)(v8::Isolate*))",93957335474064,93957335474074],["v8::Isolate::RemoveMicrotasksCompletedCallback(void (*)(v8::Isolate*, void*), void*)",93957335474224,93957335474241],["v8::Isolate::MemoryPressureNotification(v8::MemoryPressureLevel)",93957335475008,93957335475101],["v8::Isolate::SetWasmModuleCallback(bool (*)(v8::FunctionCallbackInfo<v8::Value> const&))",93957335475136,93957335475149],["v8::Isolate::SetWasmLoadSourceMapCallback(v8::Local<v8::String> (*)(v8::Isolate*, char const*))",93957335475168,93957335475181],["v8::Isolate::RemoveNearHeapLimitCallback(unsigned long (*)(void*, unsigned long, unsigned long), unsigned long)",93957335475216,93957335475233],["v8::Isolate::SetCaptureStackTraceForUncaughtExceptions(bool, int, v8::StackTrace::StackTraceOptions)",93957335475728,93957335475738],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_shri_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341139824,93957341139839],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_sconvert_i32x4_high(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141408,93957341141431],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitSimdFloatRoundingOpWithCFallback(bool (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), v8::internal::ExternalReference (*)())",93957341142368,93957341143108],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_nearest_int(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143504,93957341143618],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_mul(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143664,93957341143677],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_min(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143696,93957341144340],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_pmin(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341145072,93957341145091],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_abs(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341145136,93957341145515],["v8::Isolate::SetCounterFunction(int* (*)(char const*))",93957335472560,93957335472577],["v8::Isolate::SafeForTerminationScope::SafeForTerminationScope(v8::Isolate*)",93957335473136,93957335473161],["v8::Isolate::AdjustAmountOfExternalAllocatedMemory(long)",93957335473872,93957335474031],["v8::Isolate::SetPromiseRejectCallback(void (*)(v8::PromiseRejectMessage))",93957335474096,93957335474113],["v8::Isolate::AddMicrotasksCompletedCallback(void (*)(v8::Isolate*, void*), void*)",93957335474192,93957335474209],["v8::Isolate::IdleNotificationDeadline(double)",93957335474256,93957335474289],["v8::Isolate::ContextDisposedNotification(bool)",93957335474736,93957335475006],["v8::Isolate::SetModifyCodeGenerationFromStringsCallback(v8::ModifyCodeGenerationFromStringsResult (*)(v8::Local<v8::Context>, v8::Local<v8::Value>, bool))",93957335475104,93957335475117],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_extmul_low_i16x8_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138864,93957341139005],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_sub(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341140048,93957341140061],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_bitmask(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141232,93957341141286],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_uconvert_i32x4_high(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141552,93957341141575],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_sqrt(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341142288,93957341142356],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_ceil(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143120,93957341143237],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_trunc(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143376,93957341143493],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_add(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341143632,93957341143645],["v8::Isolate::CancelTerminateExecution()",93957335471200,93957335471237],["v8::Isolate::SetHostImportModuleDynamicallyCallback(v8::MaybeLocal<v8::Promise> (*)(v8::Local<v8::Context>, v8::Local<v8::ScriptOrModule>, v8::Local<v8::String>, v8::Local<v8::FixedArray>))",93957335472704,93957335472714],["v8::Isolate::SuppressMicrotaskExecutionScope::SuppressMicrotaskExecutionScope(v8::Isolate*, v8::MicrotaskQueue*)",93957335473040,93957335473091],["v8::Isolate::GetHeapStatistics(v8::HeapStatistics*)",93957335473200,93957335473506],["v8::MeasureMemoryDelegate::Default(v8::Isolate*, v8::Local<v8::Context>, v8::Local<v8::Promise::Resolver>, v8::MeasureMemoryMode)",93957335473728,93957335473870],["v8::Isolate::AddCallCompletedCallback(void (*)(v8::Isolate*))",93957335474032,93957335474049],["v8::Isolate::SetPromiseHook(void (*)(v8::PromiseHookType, v8::Local<v8::Promise>, v8::Local<v8::Value>))",93957335474080,93957335474090],["v8::MicrotasksScope::PerformCheckpoint(v8::Isolate*)",93957335474128,93957335474148],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_min_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138464,93957341138484],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_alltrue(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341139568,93957341139588],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_shri_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341139856,93957341140032],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_extmul_low_i32x4_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141040,93957341141081],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_extmul_high_i32x4_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141184,93957341141219],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_sconvert_i32x4_low(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141296,93957341141402],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_uconvert_i32x4_low(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141440,93957341141546],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_abs(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141584,93957341141932],["v8::BigInt::Int64Value(bool*) const",93957335470896,93957335470926],["v8::Isolate::GetCurrent()",93957335471504,93957335471523],["v8::Isolate::SetAddHistogramSampleFunction(void (*)(void*, int))",93957335472624,93957335472641],["v8::Isolate::DisallowJavascriptExecutionScope::DisallowJavascriptExecutionScope(v8::Isolate*, v8::Isolate::DisallowJavascriptExecutionScope::OnFailure)",93957335472736,93957335472825],["v8::Isolate::AllowJavascriptExecutionScope::~AllowJavascriptExecutionScope()",93957335472976,93957335473029],["v8::Isolate::SuppressMicrotaskExecutionScope::~SuppressMicrotaskExecutionScope()",93957335473104,93957335473132],["v8::Isolate::SafeForTerminationScope::~SafeForTerminationScope()",93957335473168,93957335473186],["v8::Isolate::GetHeapSpaceStatistics(v8::HeapSpaceStatistics*, unsigned long)",93957335473520,93957335473690],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_shli(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341137840,93957341138016],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_dot_i16x8_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138592,93957341138605],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_extmul_high_i16x8_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341139152,93957341139290],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_shli(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341139616,93957341139792],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_shr_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341139840,93957341139850],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_add(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341140032,93957341140045],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_mul(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341140064,93957341141037],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_extmul_low_i32x4_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341141088,93957341141126],["v8::ArrayBufferView::ByteLength()",93957335469344,93957335469386],["v8::Isolate::GetEnteredOrMicrotaskContext()",93957335470976,93957335471085],["v8::Isolate::HasPendingBackgroundTasks()",93957335471264,93957335471284],["v8::Isolate::CreateParams::~CreateParams()",93957335471616,93957335471777],["v8::Isolate::SetCreateHistogramFunction(void* (*)(char const*, int, int, unsigned long))",93957335472592,93957335472609],["v8::Isolate::New(v8::Isolate::CreateParams const&)",93957335472656,93957335472693],["v8::Isolate::SetHostInitializeImportMetaObjectCallback(void (*)(v8::Local<v8::Context>, v8::Local<v8::Module>, v8::Local<v8::Object>))",93957335472720,93957335472730],["v8::Isolate::DisallowJavascriptExecutionScope::~DisallowJavascriptExecutionScope()",93957335472832,93957335472903],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_extmul_low_i8x16_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137184,93957341137216],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_shri_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341138224,93957341138400],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_max_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138528,93957341138548],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_extadd_pairwise_i16x8_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138688,93957341138711],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_extmul_high_i16x8_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341139008,93957341139149],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_neg(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341139296,93957341139562],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_shl(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341139600,93957341139610],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_shr_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341139792,93957341139815],["v8::ArrayBuffer::IsDetachable() const",93957335467968,93957335467985],["v8::Private::New(v8::Isolate*, v8::Local<v8::String>)",93957335470000,93957335470335],["v8::Isolate::SetIdle(bool)",93957335470944,93957335470954],["v8::Isolate::TerminateExecution()",93957335471120,93957335471139],["v8::Isolate::RequestInterrupt(void (*)(v8::Isolate*, void*), void*)",93957335471248,93957335471258],["v8::Isolate::RequestGarbageCollectionForTesting(v8::Isolate::GarbageCollectionType)",93957335471296,93957335471504],["v8::Isolate::CreateParams::CreateParams()",93957335471536,93957335471612],["v8::Isolate::Initialize(v8::Isolate*, v8::Isolate::CreateParams const&)",93957335471792,93957335472545],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_mul(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136912,93957341136925],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_neg(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137312,93957341137740],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_shri_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341138032,93957341138208],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_sub(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138416,93957341138429],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_min_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138496,93957341138516],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_max_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138560,93957341138580],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_extadd_pairwise_i16x8_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138608,93957341138686],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_extmul_low_i16x8_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138720,93957341138864],["v8::Promise::Then(v8::Local<v8::Context>, v8::Local<v8::Function>, v8::Local<v8::Function>)",93957335465504,93957335466580],["v8::ArrayBuffer::New(v8::Isolate*, std::__1::shared_ptr<v8::BackingStore>)",93957335468576,93957335469011],["v8::SharedArrayBuffer::New(v8::Isolate*, std::__1::shared_ptr<v8::BackingStore>)",93957335469440,93957335469977],["v8::Integer::New(v8::Isolate*, int)",93957335470576,93957335470839],["v8::Isolate::GetHeapProfiler()",93957335470928,93957335470941],["v8::Isolate::InContext()",93957335470960,93957335470976],["v8::Isolate::SetEmbedderHeapTracer(v8::EmbedderHeapTracer*)",93957335471088,93957335471105],["v8::Isolate::IsExecutionTerminating()",93957335471152,93957335471185],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_shr_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136624,93957341136634],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_max_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136992,93957341137012],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_extmul_high_i8x16_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137248,93957341137277],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_bitmask(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137760,93957341137814],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_shr_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138016,93957341138026],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_shr_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138208,93957341138218],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_add(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138400,93957341138413],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_mul(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341138432,93957341138452],["v8::Set::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335460512,93957335461332],["v8::WasmModuleObject::GetCompiledModule()",93957335467328,93957335467687],["v8::ArrayBuffer::ByteLength() const",93957335468320,93957335468333],["v8::ArrayBufferView::Buffer()",93957335469072,93957335469290],["v8::TypedArray::Length()",93957335469392,93957335469434],["v8::Symbol::GetToStringTag(v8::Isolate*)",93957335469984,93957335469997],["v8::Number::New(v8::Isolate*, double)",93957335470336,93957335470573],["v8::BigInt::New(v8::Isolate*, long)",93957335470848,93957335470892],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_max_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135568,93957341135581],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_add_sat_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136848,93957341136861],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_min_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136944,93957341136964],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_extadd_pairwise_i8x16_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137056,93957341137134],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_extmul_high_i8x16_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137216,93957341137245],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_q15mulr_sat_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137280,93957341137309],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_alltrue(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137744,93957341137756],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_shl(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137824,93957341137834],["v8::RegExp::GetFlags() const",93957335457504,93957335457535],["v8::Promise::Resolver::New(v8::Local<v8::Context>)",93957335463184,93957335464113],["v8::Promise::State()",93957335466992,93957335467169],["v8::ArrayBuffer::Allocator::Reallocate(void*, unsigned long, unsigned long)",93957335467776,93957335467921],["v8::ArrayBuffer::Detach()",93957335468000,93957335468318],["v8::ArrayBuffer::New(v8::Isolate*, unsigned long)",93957335468336,93957335468565],["v8::ArrayBuffer::NewBackingStore(void*, unsigned long, void (*)(void*, unsigned long, void*), void*)",93957335469024,93957335469066],["v8::ArrayBufferView::ByteOffset()",93957335469296,93957335469338],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_add_sat_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135408,93957341135421],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_shl(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136240,93957341136250],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_add(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136816,93957341136829],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_sub_sat_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136880,93957341136893],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_min_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136928,93957341136941],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_max_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136976,93957341136989],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_extadd_pairwise_i8x16_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137024,93957341137047],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_extmul_low_i8x16_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341137136,93957341137171],["v8::Object::New(v8::Isolate*)",93957335454832,93957335455141],["v8::Map::AsArray() const",93957335458112,93957335458361],["v8::Set::AsArray() const",93957335462176,93957335462425],["v8::Promise::Resolver::Resolve(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335464144,93957335464813],["v8::Promise::Result()",93957335466592,93957335466981],["v8::CompiledWasmModule::GetWireBytesRef()",93957335467184,93957335467317],["v8::WasmModuleObject::FromCompiledModule(v8::Isolate*, v8::CompiledWasmModule const&)",93957335467696,93957335467765],["v8::ArrayBuffer::Allocator::NewDefaultAllocator()",93957335467936,93957335467962],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitSimdShiftOp<void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int))",93957341131984,93957341132890],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_sub_sat_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135472,93957341135485],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_alltrue(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136016,93957341136028],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_shr_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136432,93957341136442],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_shri_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341136640,93957341136816],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_add_sat_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136832,93957341136845],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_sub(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136864,93957341136877],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_sub_sat_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136896,93957341136909],["v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)",93957335452560,93957335452922],["v8::StringObject::ValueOf() const",93957335455856,93957335456142],["v8::Array::Length() const",93957335458016,93957335458059],["v8::Set::New(v8::Isolate*)",93957335459232,93957335459424],["v8::Set::Delete(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335461344,93957335462164],["v8::(anonymous namespace)::SetAsArray(v8::internal::Isolate*, v8::internal::Object, int, v8::(anonymous namespace)::SetAsArrayKind)",93957335462432,93957335463182],["uhash_hashLong_68",93957335464128,93957335464137],["v8::Promise::Resolver::Reject(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335464816,93957335465490],["v8::internal::wasm::LiftoffAssembler::emit_s128_and(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341130176,93957341130189],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_shri_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341134304,93957341134896],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_sub(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135440,93957341135453],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_min_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135520,93957341135533],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_neg(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135584,93957341136012],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_bitmask(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341136032,93957341136235],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_shli(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341136256,93957341136432],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_shri_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341136448,93957341136624],["v8::Context::DetachGlobal()",93957335450480,93957335450538],["v8::String::NewExternalOneByte(v8::Isolate*, v8::String::ExternalOneByteStringResource*)",93957335453968,93957335454340],["v8::BigIntObject::ValueOf() const",93957335455376,93957335455662],["v8::RegExp::New(v8::Local<v8::Context>, v8::Local<v8::String>, v8::RegExp::Flags)",93957335456432,93957335457391],["v8::Array::New(v8::Isolate*, int)",93957335457536,93957335458002],["v8::Map::Size() const",93957335458064,93957335458097],["v8::(anonymous namespace)::MapAsArray(v8::internal::Isolate*, v8::internal::Object, int, v8::(anonymous namespace)::MapAsArrayKind)",93957335458368,93957335459222],["v8::Set::Add(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335459424,93957335460508],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_ne(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129680,93957341129693],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)5, (v8::internal::wasm::ValueKind)1, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341131344,93957341131738],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_shli(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341133792,93957341134276],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_shri_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341134912,93957341135386],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_add_sat_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135424,93957341135437],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_sub_sat_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135456,93957341135469],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_min_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135488,93957341135508],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_max_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135536,93957341135556],["v8::V8::InitializeExternalStartupData(char const*)",93957335446944,93957335446954],["v8::FunctionTemplate::HasInstance(v8::Local<v8::Value>)",93957335451728,93957335451942],["v8::String::NewFromTwoByte(v8::Isolate*, unsigned short const*, v8::NewStringType, int)",93957335453296,93957335453665],["v8::String::MakeExternal(v8::String::ExternalOneByteStringResource*)",93957335454544,93957335454732],["v8::NumberObject::ValueOf() const",93957335455152,93957335455362],["v8::BooleanObject::ValueOf() const",93957335455664,93957335455844],["v8::SymbolObject::ValueOf() const",93957335456144,93957335456430],["v8::RegExp::GetSource() const",93957335457392,93957335457493],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_gt_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341128048,93957341128491],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_ne(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129744,93957341129757],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTerOp<(v8::internal::wasm::ValueKind)5, (v8::internal::wasm::ValueKind)5, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341130208,93957341130905],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_alltrue(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341131920,93957341131932],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_shl(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341132896,93957341133786],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_shr_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341134288,93957341134298],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_shr_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341134896,93957341134906],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_add(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341135392,93957341135405],["v8::V8::InitializePlatform(v8::Platform*)",93957335446688,93957335446698],["v8::Context::New(v8::Isolate*, v8::ExtensionConfiguration*, v8::MaybeLocal<v8::ObjectTemplate>, v8::MaybeLocal<v8::Value>, v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*)",93957335449808,93957335449853],["v8::Context::IsCodeGenerationFromStringsAllowed() const",93957335450736,93957335450770],["v8::External::Value() const",93957335452160,93957335452271],["v8::String::NewFromOneByte(v8::Isolate*, unsigned char const*, v8::NewStringType, int)",93957335452928,93957335453290],["v8::String::Concat(v8::Isolate*, v8::Local<v8::String>, v8::Local<v8::String>)",93957335453680,93957335453954],["v8::String::MakeExternal(v8::String::ExternalStringResource*)",93957335454352,93957335454540],["v8::String::StringEquals(v8::Local<v8::String>) const",93957335454736,93957335454830],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_eq(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341126592,93957341126605],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_ne(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129008,93957341129262],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_le(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129712,93957341129725],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_le(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129776,93957341129789],["v8::internal::wasm::LiftoffAssembler::emit_s128_or(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341130192,93957341130205],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_neg(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341130912,93957341131340],["v8::internal::wasm::LiftoffAssembler::emit_v128_anytrue(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341131744,93957341131905],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_bitmask(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341131936,93957341131974],["v8::Number::Value() const",93957335445472,93957335445498],["v8::V8::Dispose()",93957335446848,93957335446861],["v8::V8::GetVersion()",93957335446976,93957335446992],["v8::Context::GetSecurityToken()",93957335450000,93957335450100],["v8::Context::AllowCodeGenerationFromStrings(bool)",93957335450544,93957335450731],["v8::ObjectTemplate::NewInstance(v8::Local<v8::Context>)",93957335450784,93957335451721],["v8::External::New(v8::Isolate*, void*)",93957335451952,93957335452150],["v8::String::NewFromUtf8Literal(v8::Isolate*, char const*, v8::NewStringType, int)",93957335452272,93957335452549],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)4, (v8::internal::wasm::ValueKind)5, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341124448,93957341124856],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_ge_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341127312,93957341127541],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_ge_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341128736,93957341128972],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_ge_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129456,93957341129651],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_lt(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129696,93957341129709],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_eq(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129728,93957341129741],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_lt(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129760,93957341129773],["v8::internal::wasm::LiftoffAssembler::emit_s128_not(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129792,93957341130176],["v8::Function::GetBoundFunction() const",93957335439712,93957335439844],["v8::Uint32::Value() const",93957335445616,93957335445639],["v8::V8::Initialize(int)",93957335446720,93957335446831],["v8::RegisterState::RegisterState()",93957335446896,93957335446920],["v8::V8::InitializeExternalStartupDataFromFile(char const*)",93957335446960,93957335446970],["v8::NewContext(v8::Isolate*, v8::ExtensionConfiguration*, v8::MaybeLocal<v8::ObjectTemplate>, v8::MaybeLocal<v8::Value>, unsigned long, v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*)",93957335446992,93957335449805],["v8::Context::SetSecurityToken(v8::Local<v8::Value>)",93957335449856,93957335449988],["v8::Context::Global()",93957335450112,93957335450465],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_swizzle(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341122192,93957341122224],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_gt_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341125648,93957341125661],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_gt_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341126848,93957341126861],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_ne(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341127792,93957341128029],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_ge_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341128496,93957341128732],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_eq(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341128976,93957341128996],["v8::internal::wasm::LiftoffAssembler::emit_i64x2_gt_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129264,93957341129450],["v8::internal::wasm::LiftoffAssembler::emit_f32x4_eq(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341129664,93957341129677],["v8::Function::NewInstanceWithSideEffectType(v8::Local<v8::Context>, int, v8::Local<v8::Value>*, v8::SideEffectType) const",93957335434960,93957335436542],["v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const",93957335442016,93957335444991],["v8::Integer::Value() const",93957335445552,93957335445577],["v8::Object::SlowGetInternalField(int)",93957335445792,93957335446222],["v8::V8::ShutdownPlatform()",93957335446704,93957335446714],["v8::V8::EnableWebAssemblyTrapHandler(bool)",93957335446832,93957335446842],["v8::HeapStatistics::HeapStatistics()",93957335446864,93957335446896],["v8::V8::InitializeICUDefaultLocation(char const*, char const*)",93957335446928,93957335446938],["v8::internal::wasm::LiftoffAssembler::LoadTransform(v8::internal::wasm::LiftoffRegister, v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LoadType, v8::internal::wasm::LoadTransformationKind, unsigned int*)",93957341119152,93957341120586],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_splat(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341123088,93957341123343],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_ne(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341124880,93957341125117],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_ge_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341126112,93957341126348],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_ne(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341126608,93957341126845],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_gt_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341126864,93957341127300],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_ge_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341127552,93957341127788],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_gt_s(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341128032,93957341128045],["v8::Maybe<bool> v8::ObjectSetAccessor<void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&), v8::Local<v8::Value> >(v8::Local<v8::Context>, v8::Object*, v8::Local<v8::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&), v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, bool, bool, v8::SideEffectType, v8::SideEffectType)",93957335430624,93957335431627],["v8::Function::GetInferredName() const",93957335438576,93957335438902],["v8::String::Length() const",93957335440896,93957335440908],["v8::String::ExternalStringResource::UpdateDataCache()",93957335445328,93957335445354],["v8::Boolean::Value() const",93957335445504,93957335445543],["v8::Int32::Value() const",93957335445584,93957335445606],["v8::Object::InternalFieldCount() const",93957335445648,93957335445787],["v8::Object::SetInternalField(int, v8::Local<v8::Value>)",93957335446224,93957335446683],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLoadLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::LoadType, unsigned int)",93957341103808,93957341105795],["v8::internal::wasm::LiftoffAssembler::StoreLane(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType, unsigned char, unsigned int*)",93957341121088,93957341121446],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_popcnt(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341122656,93957341122684],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)5, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341123600,93957341124033],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_eq(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341124864,93957341124877],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)5, (v8::internal::wasm::ValueKind)5, true, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341125120,93957341125634],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_gt_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341125664,93957341126107],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_ge_u(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341126352,93957341126581],["v8::Object::GetOwnPropertyNames(v8::Local<v8::Context>)",93957335426656,93957335426682],["v8::Object::GetCreationContext()",93957335433648,93957335433678],["v8::Function::SetName(v8::Local<v8::String>)",93957335437776,93957335438242],["v8::Function::GetScriptColumnNumber() const",93957335439232,93957335439541],["v8::Function::FunctionProtoToString(v8::Local<v8::Context>)",93957335439856,93957335440893],["v8::String::Utf8Length(v8::Isolate*) const",93957335440912,93957335442001],["v8::String::Write(v8::Isolate*, unsigned short*, int, int, int) const",93957335444992,93957335445323],["v8::WasmMemoryObject::Buffer()",93957335445360,93957335445457],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpxor, &v8::internal::Assembler::pxor>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341095408,93957341095592],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::SimdLaneOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::SimdLaneImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::Vector<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> >, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341110416,93957341116942],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand>::emit<&v8::internal::Assembler::vpmovzxdq, &v8::internal::Assembler::pmovzxdq>(v8::internal::XMMRegister, v8::internal::Operand)",93957341120688,93957341120776],["void v8::internal::wasm::liftoff::EmitSimdCommutativeBinOp<&v8::internal::Assembler::vpcmpeqd, &v8::internal::Assembler::pcmpeqd>(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::base::Optional<v8::internal::CpuFeature>)",93957341121472,93957341121656],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)5, (v8::internal::wasm::ValueKind)5, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341122224,93957341122642],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)5, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341122688,93957341123082],["v8::internal::wasm::LiftoffAssembler::emit_i16x8_splat(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341123344,93957341123595],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)3, (v8::internal::wasm::ValueKind)5, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341124048,93957341124437],["v8::Object::GetPrivate(v8::Local<v8::Context>, v8::Local<v8::Private>)",93957335422896,93957335422906],["v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335428992,93957335429847],["v8::Object::HasRealNamedProperty(v8::Local<v8::Context>, v8::Local<v8::Name>)",93957335431808,93957335432449],["v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)",93957335434000,93957335434934],["v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*)",93957335436544,93957335437765],["v8::Function::GetName() const",93957335438256,93957335438567],["v8::Function::GetScriptLineNumber() const",93957335438912,93957335439221],["v8::Function::ScriptId() const",93957335439552,93957335439701],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::RefAsFunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341091856,93957341092058],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::FuncCheck(v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::Label*, v8::internal::wasm::LiftoffRegList, v8::internal::Register)",93957341100432,93957341100941],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::SimdOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::Vector<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> >, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341107504,93957341110288],["v8::internal::wasm::Simd128Immediate<(v8::internal::wasm::Decoder::ValidateFlag)1>::Simd128Immediate(v8::internal::wasm::Decoder*, unsigned char const*)",93957341117184,93957341118069],["void v8::internal::TurboAssembler::AvxHelper<v8::internal::XMMRegister, v8::internal::Operand>::emit<&v8::internal::Assembler::vpmovsxdq, &v8::internal::Assembler::pmovsxdq>(v8::internal::XMMRegister, v8::internal::Operand)",93957341120592,93957341120680],["v8::internal::wasm::LiftoffAssembler::LoadLane(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LoadType, unsigned char, unsigned int*)",93957341120784,93957341121079],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_eq(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341121456,93957341121469],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)5, (v8::internal::wasm::ValueKind)5, false, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341121664,93957341122182],["v8::PropertyDescriptor::PropertyDescriptor(v8::Local<v8::Value>, v8::Local<v8::Value>)",93957335418608,93957335418673],["v8::Object::SetPrototype(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335424384,93957335425155],["v8::Object::GetConstructorName()",93957335427728,93957335427738],["v8::Object::HasOwnProperty(v8::Local<v8::Context>, v8::Local<v8::Name>)",93957335429872,93957335430531],["v8::Object::SetAccessorProperty(v8::Local<v8::Name>, v8::Local<v8::Function>, v8::Local<v8::Function>, v8::PropertyAttribute, v8::AccessControl)",93957335431632,93957335431805],["v8::Object::GetRealNamedProperty(v8::Local<v8::Context>, v8::Local<v8::Name>)",93957335432464,93957335433648],["v8::Function::New(v8::Local<v8::Context>, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, int, v8::ConstructorBehavior, v8::SideEffectType)",93957335433680,93957335433992],["v8::Function::NewInstance(v8::Local<v8::Context>, int, v8::Local<v8::Value>*) const",93957335434944,93957335434957],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::RttCanon(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, unsigned int, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341088640,93957341089226],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BrOnI31(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*, unsigned int)",93957341093472,93957341094099],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::SubtypeCheck(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::Label*, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::NullSucceeds, v8::internal::wasm::LiftoffRegList, v8::internal::Register)",93957341097200,93957341099657],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::SimdReplaceLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, unsigned int)",93957341101440,93957341102132],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeStoreLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::StoreType, unsigned int)",93957341105808,93957341107504],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1>::Validate(unsigned char const*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::SimdLaneImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1>&)",93957341110288,93957341110404],["v8::internal::wasm::LiftoffAssembler::emit_f64x2_replace_lane(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, unsigned char)",93957341116944,93957341117171],["v8::internal::wasm::LiftoffAssembler::emit_i8x16_shuffle(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, unsigned char const*, bool)",93957341118080,93957341119152],["v8::Value::InstanceOf(v8::Local<v8::Context>, v8::Local<v8::Object>)",93957335414880,93957335415562],["v8::Object::DefineOwnProperty(v8::Local<v8::Context>, v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyAttribute)",93957335418784,93957335419951],["v8::Object::GetOwnPropertyDescriptor(v8::Local<v8::Context>, v8::Local<v8::Name>)",93957335423200,93957335424255],["v8::Object::GetPropertyNames(v8::Local<v8::Context>)",93957335425488,93957335425517],["v8::Object::ObjectProtoToString(v8::Local<v8::Context>)",93957335426688,93957335427725],["v8::Object::Delete(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335427744,93957335428982],["v8::Object::HasPrivate(v8::Local<v8::Context>, v8::Local<v8::Private>)",93957335429856,93957335429866],["v8::Object::SetAccessor(v8::Local<v8::Context>, v8::Local<v8::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&), v8::MaybeLocal<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::SideEffectType, v8::SideEffectType)",93957335430544,93957335430616],["long v8::internal::wasm::Decoder::read_leb_slowpath<long, (v8::internal::wasm::Decoder::ValidateFlag)1, (v8::internal::wasm::Decoder::TraceFlag)0, 64ul>(unsigned char const*, unsigned int*, char const*)",93957341066288,93957341066999],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::RefCast(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341090352,93957341090597],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BrOnFunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*, unsigned int)",93957341092384,93957341092916],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::SetDefaultValue(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::ValueKind, v8::internal::wasm::LiftoffRegList)",93957341095248,93957341095385],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::ArrayNew(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ArrayIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueKind, bool)",93957341095600,93957341097186],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::DataCheck(v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::Label*, v8::internal::wasm::LiftoffRegList, v8::internal::Register)",93957341099664,93957341100432],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::SimdExtractLane(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, unsigned int)",93957341100944,93957341101432],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLoadTransformMem(v8::internal::wasm::LoadType, v8::internal::wasm::LoadTransformationKind, unsigned int)",93957341102144,93957341103803],["v8::base::PageAllocator::AllocatePageSize()",93957335410112,93957335410122],["v8::Object::CreateDataProperty(v8::Local<v8::Context>, unsigned int, v8::Local<v8::Value>)",93957335417696,93957335418412],["v8::PropertyDescriptor::set_enumerable(bool)",93957335418720,93957335418742],["v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335420896,93957335421858],["v8::internal::JSReceiver::GetPropertyAttributes(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>)",93957335422912,93957335423185],["v8::Object::GetPrototype()",93957335424256,93957335424383],["v8::internal::PrototypeIterator::Advance()",93957335425168,93957335425478],["v8::Object::GetPropertyNames(v8::Local<v8::Context>, v8::KeyCollectionMode, v8::PropertyFilter, v8::IndexFilter, v8::KeyConversionMode)",93957335425520,93957335426643],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::GetBaseAndOffsetForImportedMutableExternRefGlobal(v8::internal::wasm::WasmGlobal const*, v8::internal::wasm::LiftoffRegList*, v8::internal::Register*, v8::internal::Register*)",93957341057984,93957341058855],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::StructSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::FieldIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&)",93957341084928,93957341085530],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::ObjectRelatedWithRtt(v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>)",93957341089824,93957341089919],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BrOnCast(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*, unsigned int)",93957341091056,93957341091638],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::RefAsI31(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341092064,93957341092373],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BrOnData(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*, unsigned int)",93957341092928,93957341093460],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::StructNew(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::StructIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, bool)",93957341094112,93957341095237],["v8::internal::wasm::LiftoffAssembler::emit_s128_xor(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341095392,93957341095405],["v8::Value::BooleanValue(v8::Isolate*) const",93957335407968,93957335407998],["v8::Value::Int32Value(v8::Local<v8::Context>) const",93957335411456,93957335412467],["v8::Object::Set(v8::Local<v8::Context>, unsigned int, v8::Local<v8::Value>)",93957335416272,93957335417000],["v8::PropertyDescriptor::PropertyDescriptor(v8::Local<v8::Value>)",93957335418464,93957335418517],["v8::PropertyDescriptor::~PropertyDescriptor()",93957335418688,93957335418708],["v8::PropertyDescriptor::set_configurable(bool)",93957335418752,93957335418780],["v8::Object::SetPrivate(v8::Local<v8::Context>, v8::Local<v8::Private>, v8::Local<v8::Value>)",93957335419952,93957335420881],["v8::Object::Get(v8::Local<v8::Context>, unsigned int)",93957335421872,93957335422887],["void v8::internal::wasm::liftoff::EmitIntDivOrRem<unsigned int, (v8::internal::wasm::liftoff::DivOrRem)0>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Label*, v8::internal::Label*)",93957341054016,93957341054428],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BoundsCheckMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, unsigned int, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegList, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::ForceCheck)",93957341061952,93957341062928],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::PopTypeError(int, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)",93957341083952,93957341083962],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::ArraySet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ArrayIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&)",93957341086912,93957341087907],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::RttSub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, unsigned int, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341089232,93957341089813],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::RefTest(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341089920,93957341090345],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AssertNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341090608,93957341091046],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::RefAsData(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341091648,93957341091850],["v8::Value::IsMapIterator() const",93957335403776,93957335403826],["v8::internal::IsolateFromNeverReadOnlySpaceObject(unsigned long)",93957335410016,93957335410035],["v8::SharedArrayBuffer::GetBackingStore()",93957335410400,93957335410674],["v8::Value::ToArrayIndex(v8::Local<v8::Context>) const",93957335413584,93957335414822],["v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)",93957335415568,93957335416259],["v8::Object::CreateDataProperty(v8::Local<v8::Context>, v8::Local<v8::Name>, v8::Local<v8::Value>)",93957335417008,93957335417694],["v8::PropertyDescriptor::PropertyDescriptor()",93957335418416,93957335418459],["v8::PropertyDescriptor::PropertyDescriptor(v8::Local<v8::Value>, bool)",93957335418528,93957335418597],["void v8::internal::wasm::liftoff::EmitFloatSetCond<&(void v8::internal::TurboAssembler::Ucomiss<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister))>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Condition, v8::internal::Register, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341050688,93957341050927],["void v8::internal::wasm::liftoff::EmitIntDivOrRem<unsigned long, (v8::internal::wasm::liftoff::DivOrRem)0>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Label*, v8::internal::Label*)",93957341055888,93957341056300],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLoadMem(v8::internal::wasm::LoadType, int)",93957341059616,93957341061357],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TraceMemoryOperation(bool, v8::internal::MachineRepresentation, v8::internal::Register, unsigned long, int)",93957341063680,93957341064528],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeGCOpcode(v8::internal::wasm::WasmOpcode, unsigned int)",93957341067008,93957341083943],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::StructGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::FieldIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, bool, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341083968,93957341084926],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::ArrayGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ArrayIndexImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, bool, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341085536,93957341086911],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::ArrayLen(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341087920,93957341088637],["v8::Value::IsWeakSet() const",93957335403008,93957335403057],["v8::Value::ToString(v8::Local<v8::Context>) const",93957335404032,93957335405042],["v8::Value::ToNumber(v8::Local<v8::Context>) const",93957335408048,93957335409054],["v8::BackingStore::~BackingStore()",93957335410080,93957335410090],["v8::ArrayBuffer::GetBackingStore()",93957335410128,93957335410400],["v8::Value::NumberValue(v8::Local<v8::Context>) const",93957335410688,93957335411441],["v8::Value::Uint32Value(v8::Local<v8::Context>) const",93957335412480,93957335413581],["v8::Value::StrictEquals(v8::Local<v8::Value>) const",93957335414832,93957335414865],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#12}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#12})",93957341048064,93957341048623],["v8::internal::wasm::LiftoffAssembler::emit_i64_shr(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::Register)",93957341051808,93957341052110],["void v8::internal::wasm::liftoff::EmitIntDivOrRem<unsigned int, (v8::internal::wasm::liftoff::DivOrRem)1>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Label*, v8::internal::Label*)",93957341054960,93957341055376],["void v8::internal::wasm::liftoff::EmitIntDivOrRem<unsigned long, (v8::internal::wasm::liftoff::DivOrRem)1>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Label*, v8::internal::Label*)",93957341056832,93957341057248],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::GetGlobalBaseAndOffset(v8::internal::wasm::WasmGlobal const*, v8::internal::wasm::LiftoffRegList*, unsigned int*)",93957341058864,93957341059612],["unsigned long v8::internal::wasm::Decoder::read_leb_slowpath<unsigned long, (v8::internal::wasm::Decoder::ValidateFlag)1, (v8::internal::wasm::Decoder::TraceFlag)0, 64ul>(unsigned char const*, unsigned int*, char const*)",93957341061360,93957341061938],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AddMemoryMasking(v8::internal::Register, unsigned long*, v8::internal::wasm::LiftoffRegList*)",93957341062928,93957341063674],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeStoreMem(v8::internal::wasm::StoreType, int)",93957341064528,93957341066273],["v8::Value::IsStringObject() const",93957335402464,93957335402541],["v8::Value::IsNativeError() const",93957335403504,93957335403553],["v8::Value::IsPromise() const",93957335403904,93957335403953],["v8::Value::ToObject(v8::Local<v8::Context>) const",93957335405968,93957335406988],["v8::Value::ToBoolean(v8::Isolate*) const",93957335408000,93957335408047],["v8::Value::ToInt32(v8::Local<v8::Context>) const",93957335409056,93957335410010],["v8::internal::ShouldThrowOnError(v8::internal::Isolate*)",93957335410048,93957335410066],["__cxxabiv1::__getExceptionClass(_Unwind_Exception const*)",93957335410096,93957335410105],["v8::internal::wasm::LiftoffAssembler::emit_f64_div(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341045376,93957341045561],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitFnWithFirstArg<void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::Register, v8::internal::Register), v8::internal::wasm::LiftoffCondition> >(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitFnWithFirstArg<void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::Register, v8::internal::Register), v8::internal::wasm::LiftoffCondition>)",93957341050256,93957341050505],["v8::internal::wasm::LiftoffAssembler::emit_i64_shl(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::Register)",93957341051200,93957341051502],["void v8::internal::wasm::liftoff::EmitFloatMinOrMax<double>(v8::internal::wasm::LiftoffAssembler*, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::wasm::liftoff::MinOrMax)",93957341052768,93957341053503],["void v8::internal::wasm::liftoff::EmitIntDivOrRem<int, (v8::internal::wasm::liftoff::DivOrRem)1>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Label*, v8::internal::Label*)",93957341054432,93957341054949],["void v8::internal::wasm::liftoff::EmitIntDivOrRem<long, (v8::internal::wasm::liftoff::DivOrRem)0>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Label*, v8::internal::Label*)",93957341055376,93957341055877],["void v8::internal::wasm::liftoff::EmitIntDivOrRem<long, (v8::internal::wasm::liftoff::DivOrRem)1>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Label*, v8::internal::Label*)",93957341056304,93957341056821],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::LocalSet(unsigned int, bool)",93957341057248,93957341057971],["v8::Value::IsObject() const",93957335401920,93957335401969],["v8::Value::IsSet() const",93957335402752,93957335402801],["v8::Value::IsInt32() const",93957335403136,93957335403255],["v8::Value::IsGeneratorFunction() const",93957335403632,93957335403701],["v8::Value::IsSetIterator() const",93957335403840,93957335403890],["v8::Value::IsModuleNamespaceObject() const",93957335403968,93957335404017],["v8::Value::ToDetailString(v8::Local<v8::Context>) const",93957335405056,93957335405961],["v8::Value::ToBigInt(v8::Local<v8::Context>) const",93957335406992,93957335407962],["v8::internal::wasm::LiftoffAssembler::emit_f32_div(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341043856,93957341044041],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#8}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#8})",93957341045872,93957341046431],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#14}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#14})",93957341049168,93957341049699],["void v8::internal::Assembler::andq<v8::internal::Register, v8::internal::Register>(v8::internal::Register, v8::internal::Register)",93957341050608,93957341050633],["void v8::internal::wasm::liftoff::EmitFloatSetCond<&(void v8::internal::TurboAssembler::Ucomisd<v8::internal::XMMRegister, v8::internal::XMMRegister>(v8::internal::XMMRegister, v8::internal::XMMRegister))>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Condition, v8::internal::Register, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341050928,93957341051188],["v8::internal::wasm::LiftoffAssembler::emit_i64_sar(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::Register)",93957341051504,93957341051806],["void v8::internal::wasm::liftoff::EmitFloatMinOrMax<float>(v8::internal::wasm::LiftoffAssembler*, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::wasm::liftoff::MinOrMax)",93957341052112,93957341052757],["void v8::internal::wasm::liftoff::EmitIntDivOrRem<int, (v8::internal::wasm::liftoff::DivOrRem)0>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Label*, v8::internal::Label*)",93957341053504,93957341054005],["v8::Value::IsName() const",93957335401424,93957335401469],["v8::Value::IsArgumentsObject() const",93957335402144,93957335402193],["v8::Value::IsDate() const",93957335402624,93957335402673],["v8::Value::IsWasmModuleObject() const",93957335402880,93957335402929],["v8::Value::IsBoolean() const",93957335403072,93957335403126],["v8::Value::IsUint32() const",93957335403264,93957335403493],["v8::Value::IsRegExp() const",93957335403568,93957335403617],["v8::Value::IsGeneratorObject() const",93957335403712,93957335403762],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOpImm<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#4}, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#4}, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int))",93957341039760,93957341040666],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)4, (v8::internal::wasm::ValueKind)4, false, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister))",93957341044336,93957341044864],["v8::internal::wasm::LiftoffAssembler::emit_f64_max(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341045584,93957341045600],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#10}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#10})",93957341046976,93957341047507],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#13}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#13})",93957341048624,93957341049155],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#15}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#15})",93957341049712,93957341050243],["v8::internal::wasm::LiftoffAssembler::emit_i32_set_cond(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341050512,93957341050606],["void v8::internal::Assembler::xorq<v8::internal::Register, v8::internal::Register>(v8::internal::Register, v8::internal::Register)",93957341050640,93957341050688],["v8::ValueDeserializer::Delegate::ReadHostObject(v8::Isolate*)",93957335399264,93957335399416],["v8::Value::IsArrayBufferView() const",93957335401664,93957335401714],["v8::Value::IsBigInt() const",93957335402032,93957335402077],["v8::Value::IsBooleanObject() const",93957335402288,93957335402376],["v8::Value::IsSymbolObject() const",93957335402544,93957335402621],["v8::Value::IsMap() const",93957335402688,93957335402737],["v8::Value::IsWasmMemoryObject() const",93957335402816,93957335402865],["v8::Value::IsWeakMap() const",93957335402944,93957335402993],["v8::internal::wasm::LiftoffAssembler::emit_f32_set_cond(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341036608,93957341036631],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)3, (v8::internal::wasm::ValueKind)3, false, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister))",93957341042816,93957341043344],["v8::internal::wasm::LiftoffAssembler::emit_f32_max(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341044064,93957341044080],["v8::internal::wasm::LiftoffAssembler::emit_f64_sub(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341045024,93957341045209],["v8::internal::wasm::LiftoffAssembler::emit_f64_min(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341045568,93957341045581],["v8::internal::wasm::LiftoffAssembler::emit_f64_copysign(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341045600,93957341045867],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#9}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#9})",93957341046432,93957341046963],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#11}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#11})",93957341047520,93957341048051],["v8::JSON::Stringify(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::String>)",93957335397184,93957335398197],["v8::ValueDeserializer::SetSupportsLegacyWireFormat(bool)",93957335400304,93957335400317],["v8::Value::IsArray() const",93957335401536,93957335401585],["v8::Value::IsDataView() const",93957335401792,93957335401841],["v8::Value::IsNumber() const",93957335401984,93957335402028],["v8::Value::IsProxy() const",93957335402080,93957335402129],["v8::Value::IsBigIntObject() const",93957335402208,93957335402285],["v8::Value::IsNumberObject() const",93957335402384,93957335402462],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOpImm<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int))",93957341034640,93957341035109],["v8::internal::wasm::LiftoffAssembler::emit_i32_shr(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341037312,93957341037628],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#6}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#6})",93957341041600,93957341042201],["v8::internal::wasm::LiftoffAssembler::emit_f32_sub(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341043504,93957341043689],["v8::internal::wasm::LiftoffAssembler::emit_f32_min(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341044048,93957341044061],["v8::internal::wasm::LiftoffAssembler::emit_f32_copysign(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341044080,93957341044325],["v8::internal::wasm::LiftoffAssembler::emit_f64_add(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341044864,93957341045011],["v8::internal::wasm::LiftoffAssembler::emit_f64_mul(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341045216,93957341045363],["v8::StackFrame::GetLineNumber() const",93957335395280,93957335395290],["v8::ValueSerializer::WriteHeader()",93957335398496,93957335398513],["v8::ValueDeserializer::~ValueDeserializer()",93957335399552,93957335399596],["v8::ValueDeserializer::TransferArrayBuffer(unsigned int, v8::Local<v8::ArrayBuffer>)",93957335401328,93957335401372],["v8::Value::IsSymbol() const",93957335401472,93957335401523],["v8::Value::IsArrayBuffer() const",93957335401600,93957335401657],["v8::Value::IsTypedArray() const",93957335401728,93957335401777],["v8::Value::IsSharedArrayBuffer() const",93957335401856,93957335401914],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)76>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341033008,93957341033118],["v8::internal::wasm::LiftoffAssembler::emit_i64_xor(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341035376,93957341035496],["v8::internal::wasm::LiftoffAssembler::emit_i32_shl(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341036672,93957341036988],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#2}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#2})",93957341038240,93957341038833],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOpImm<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#5}, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#5}, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int))",93957341040672,93957341041590],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#7}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#7})",93957341042208,93957341042809],["v8::internal::wasm::LiftoffAssembler::emit_f32_add(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341043344,93957341043491],["v8::internal::wasm::LiftoffAssembler::emit_f32_mul(v8::internal::XMMRegister, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341043696,93957341043843],["v8::Message::GetStartColumn() const",93957335393280,93957335393618],["v8::StackFrame::GetScriptNameOrSourceURL() const",93957335395504,93957335395663],["v8::ValueSerializer::ValueSerializer(v8::Isolate*, v8::ValueSerializer::Delegate*)",93957335398384,93957335398447],["v8::ValueSerializer::Release()",93957335399200,93957335399217],["v8::ValueDeserializer::ValueDeserializer(v8::Isolate*, unsigned char const*, unsigned long, v8::ValueDeserializer::Delegate*)",93957335399424,93957335399550],["v8::ValueDeserializer::ReadHeader(v8::Local<v8::Context>)",93957335399600,93957335400300],["v8::ValueDeserializer::ReadValue(v8::Local<v8::Context>)",93957335400320,93957335401327],["v8::Value::IsFunction() const",93957335401376,93957335401417],["v8::internal::wasm::LiftoffAssembler::emit_i32_ori(v8::internal::Register, v8::internal::Register, int)",93957341032176,93957341032247],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOpImm<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, long)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, long))",93957341033456,93957341033893],["v8::internal::wasm::LiftoffAssembler::emit_i64_andi(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341035216,93957341035292],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)11, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitFnWithFirstArg<void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), v8::internal::wasm::LiftoffCondition> >(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitFnWithFirstArg<void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister), v8::internal::wasm::LiftoffCondition>)",93957341035584,93957341036100],["v8::internal::wasm::LiftoffAssembler::emit_f64_set_cond(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341036640,93957341036663],["v8::internal::wasm::LiftoffAssembler::emit_i32_sar(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341036992,93957341037308],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#1}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#1})",93957341037632,93957341038225],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOpImm<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#3}, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#3}, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int))",93957341038848,93957341039754],["v8::TryCatch::SetVerbose(bool)",93957335391088,93957335391105],["v8::Message::GetEndColumn(v8::Local<v8::Context>) const",93957335394592,93957335394611],["v8::StackFrame::GetScriptId() const",93957335395312,93957335395342],["v8::JSON::Parse(v8::Local<v8::Context>, v8::Local<v8::String>)",93957335395728,93957335396833],["v8::ValueSerializer::Delegate::WriteHostObject(v8::Isolate*, v8::Local<v8::Object>)",93957335398208,93957335398373],["v8::ValueSerializer::~ValueSerializer()",93957335398448,93957335398492],["v8::ValueSerializer::WriteValue(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335398528,93957335399191],["v8::ValueSerializer::TransferArrayBuffer(unsigned int, v8::Local<v8::ArrayBuffer>)",93957335399232,93957335399249],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::UnOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#2}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::UnOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#2})",93957341027456,93957341028228],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)72>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341032560,93957341032670],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)78>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341033232,93957341033342],["v8::internal::wasm::LiftoffAssembler::emit_i64_sub(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341034432,93957341034543],["v8::internal::wasm::LiftoffAssembler::emit_i64_and(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341035120,93957341035209],["v8::internal::wasm::LiftoffAssembler::emit_i64_ori(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341035296,93957341035372],["v8::internal::wasm::LiftoffAssembler::emit_i64_xori(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, int)",93957341035504,93957341035580],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)3, (v8::internal::wasm::ValueKind)1, false, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitFnWithFirstArg<void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::XMMRegister, v8::internal::XMMRegister), v8::internal::wasm::LiftoffCondition> >(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitFnWithFirstArg<void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::XMMRegister, v8::internal::XMMRegister), v8::internal::wasm::LiftoffCondition>)",93957341036112,93957341036607],["v8::Isolate::ThrowException(v8::Local<v8::Value>)",93957335389168,93957335389241],["v8::GetScriptOriginForScript(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Script>)",93957335391792,93957335392181],["v8::Message::GetStartColumn(v8::Local<v8::Context>) const",93957335394144,93957335394163],["v8::StackTrace::GetFrame(v8::Isolate*, unsigned int) const",93957335395120,93957335395223],["v8::StackFrame::GetColumn() const",93957335395296,93957335395306],["v8::StackFrame::GetScriptName() const",93957335395344,93957335395503],["v8::StackFrame::GetFunctionName() const",93957335395664,93957335395721],["v8::internal::String::Flatten(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::AllocationType)",93957335396848,93957335397175],["v8::internal::wasm::LiftoffAssembler::emit_i64_signextend_i32(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341025168,93957341025185],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BinOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341028848,93957341031078],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)70>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341032336,93957341032446],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)74>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341032784,93957341032894],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)77>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341033120,93957341033230],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)79>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341033344,93957341033454],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, false, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341033904,93957341034422],["v8::internal::wasm::LiftoffAssembler::emit_i64_mul(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341034544,93957341034627],["v8::ScriptCompiler::Compile(v8::Local<v8::Context>, v8::ScriptCompiler::StreamedSource*, v8::Local<v8::String>, v8::ScriptOrigin const&)",93957335384816,93957335386586],["v8::TryCatch::StackTrace(v8::Local<v8::Context>, v8::Local<v8::Value>)",93957335389328,93957335390603],["v8::Message::Get() const",93957335391152,93957335391629],["v8::Message::GetLineNumber(v8::Local<v8::Context>) const",93957335392912,93957335393258],["v8::Message::GetWasmFunctionIndex() const",93957335393632,93957335394134],["v8::Message::GetEndColumn() const",93957335394176,93957335394578],["v8::Message::GetSourceLine(v8::Local<v8::Context>) const",93957335394624,93957335395117],["v8::StackTrace::CurrentStackTrace(v8::Isolate*, int, v8::StackTrace::StackTraceOptions)",93957335395232,93957335395276],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)4, (v8::internal::wasm::ValueKind)1, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341023280,93957341023758],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)3, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341025744,93957341026235],["v8::internal::wasm::LiftoffAssembler::CallC(v8::internal::Signature<v8::internal::wasm::ValueKind> const*, v8::internal::wasm::LiftoffRegister const*, v8::internal::wasm::LiftoffRegister const*, v8::internal::wasm::ValueKind, int, v8::internal::ExternalReference)",93957341028256,93957341028745],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, false, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register, v8::internal::Register)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register, v8::internal::Register))",93957341031568,93957341032087],["v8::internal::wasm::LiftoffAssembler::emit_i32_xori(v8::internal::Register, v8::internal::Register, int)",93957341032256,93957341032327],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)71>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341032448,93957341032558],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)73>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341032672,93957341032782],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitI32CmpOp<(v8::internal::wasm::WasmOpcode)75>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957341032896,93957341033006],["v8::Isolate::GetCurrentContext()",93957335381504,93957335381628],["v8::TryCatch::TryCatch(v8::Isolate*)",93957335388352,93957335388426],["v8::TryCatch::HasTerminated() const",93957335389264,93957335389278],["v8::TryCatch::Message() const",93957335390896,93957335390996],["v8::TryCatch::SetCaptureMessage(bool)",93957335391120,93957335391141],["v8::Message::GetScriptOrigin() const",93957335391632,93957335391789],["v8::Message::GetStackTrace() const",93957335392192,93957335392901],["v8::Message::ErrorLevel() const",93957335393264,93957335393278],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)3, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341018576,93957341019054],["v8::internal::wasm::LiftoffAssembler::emit_i32_signextend_i16(v8::internal::Register, v8::internal::Register)",93957341024656,93957341024666],["v8::internal::wasm::LiftoffAssembler::emit_i64_ctz(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341025232,93957341025249],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)1, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::wasm::LiftoffRegister))",93957341026304,93957341026720],["v8::internal::wasm::LiftoffAssembler::emit_ptrsize_set_cond(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341028240,93957341028250],["v8::internal::wasm::LiftoffAssembler::emit_i64_set_cond(v8::internal::wasm::LiftoffCondition, v8::internal::Register, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341028752,93957341028848],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitBinOpImm<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register, v8::internal::Register), void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register, int)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register, v8::internal::Register), void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register, int))",93957341031088,93957341031557],["v8::internal::wasm::LiftoffAssembler::emit_i32_mul(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341032096,93957341032170],["v8::debug::AccessorPair::setter()",93957335377664,93957335377761],["v8::ScriptCompiler::Compile(v8::Local<v8::Context>, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::ScriptCompiler::NoCacheReason)",93957335383952,93957335384353],["v8::ScriptCompiler::CreateCodeCache(v8::Local<v8::UnboundScript>)",93957335388208,93957335388218],["v8::TryCatch::Exception() const",93957335389024,93957335389122],["v8::TryCatch::CanContinue() const",93957335389248,93957335389261],["v8::TryCatch::ReThrow()",93957335389280,93957335389314],["v8::internal::JSReceiver::HasProperty(v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>)",93957335390608,93957335390881],["v8::TryCatch::Reset()",93957335391008,93957335391078],["v8::internal::wasm::LiftoffAssembler::emit_f64_ceil(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341015760,93957341015876],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)4, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341021424,93957341021915],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)4, (v8::internal::wasm::ValueKind)3, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341024256,93957341024639],["v8::internal::wasm::LiftoffAssembler::emit_i64_signextend_i8(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341025104,93957341025121],["v8::internal::wasm::LiftoffAssembler::emit_i64_clz(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341025200,93957341025217],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)4, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341025264,93957341025742],["v8::internal::wasm::LiftoffAssembler::emit_i32_eqz(v8::internal::Register, v8::internal::Register)",93957341026240,93957341026304],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::UnOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#1}>(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::UnOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)::{lambda(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)#1})",93957341026720,93957341027447],["v8::Script::Run(v8::Local<v8::Context>)",93957335375264,93957335376621],["v8::Module::InstantiateModule(v8::Local<v8::Context>, v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::String>, v8::Local<v8::FixedArray>, v8::Local<v8::Module>))",93957335378192,93957335378872],["v8::ScriptCompiler::CompileUnboundInternal(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::ScriptCompiler::NoCacheReason)",93957335382032,93957335383789],["v8::ScriptCompiler::ScriptStreamingTask::Run()",93957335384656,93957335384673],["v8::ScriptCompiler::CompileModule(v8::Local<v8::Context>, v8::ScriptCompiler::StreamedSource*, v8::Local<v8::String>, v8::ScriptOrigin const&)",93957335386592,93957335388200],["v8::Script::Compile(v8::Local<v8::Context>, v8::Local<v8::String>, v8::ScriptOrigin*)",93957335388224,93957335388338],["v8::TryCatch::~TryCatch()",93957335388432,93957335389012],["v8::TryCatch::HasCaught() const",93957335389136,93957335389157],["v8::internal::wasm::LiftoffAssembler::emit_f32_floor(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341013632,93957341013748],["v8::internal::wasm::LiftoffAssembler::emit_f64_sqrt(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341016272,93957341016355],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)3, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)1>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341019568,93957341020496],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)3, (v8::internal::wasm::ValueKind)2, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341022400,93957341022891],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)4, (v8::internal::wasm::ValueKind)2, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341023760,93957341024251],["v8::internal::wasm::LiftoffAssembler::emit_i32_signextend_i8(v8::internal::Register, v8::internal::Register)",93957341024640,93957341024650],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)2, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister))",93957341024672,93957341025090],["v8::internal::wasm::LiftoffAssembler::emit_i64_signextend_i16(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341025136,93957341025153],["v8::ObjectTemplate::SetInternalFieldCount(int)",93957335374400,93957335374601],["v8::Script::GetUnboundScript()",93957335377280,93957335377377],["v8::Module::GetModuleNamespace()",93957335378000,93957335378164],["v8::Module::CreateSyntheticModule(v8::Isolate*, v8::Local<v8::String>, std::__1::vector<v8::Local<v8::String>, std::__1::allocator<v8::Local<v8::String> > > const&, v8::MaybeLocal<v8::Value> (*)(v8::Local<v8::Context>, v8::Local<v8::Module>))",93957335380272,93957335380653],["v8::CallDepthScope<false>::CallDepthScope(v8::internal::Isolate*, v8::Local<v8::Context>)",93957335381632,93957335382021],["v8::ScriptCompiler::CompileUnboundScript(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::ScriptCompiler::NoCacheReason)",93957335383792,93957335383946],["v8::ScriptCompiler::CompileModule(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::ScriptCompiler::NoCacheReason)",93957335384368,93957335384648],["v8::ScriptCompiler::StartStreaming(v8::Isolate*, v8::ScriptCompiler::StreamedSource*, v8::ScriptType)",93957335384688,93957335384816],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)1, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::Register, v8::internal::Register))",93957341011456,93957341011874],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)4, (v8::internal::wasm::ValueKind)4, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister))",93957341014112,93957341014535],["v8::internal::wasm::LiftoffAssembler::emit_f64_trunc(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341016016,93957341016132],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)3, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)1>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341016752,93957341017655],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)1, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341019056,93957341019557],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)2, (v8::internal::wasm::ValueKind)4, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)1>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341020496,93957341021424],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)3, (v8::internal::wasm::ValueKind)1, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341021920,93957341022398],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)3, (v8::internal::wasm::ValueKind)4, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341022896,93957341023279],["v8::ObjectTemplate::SetHandler(v8::NamedPropertyHandlerConfiguration const&)",93957335369056,93957335369636],["v8::ScriptCompiler::StreamedSource::StreamedSource(std::__1::unique_ptr<v8::ScriptCompiler::ExternalSourceStream, std::__1::default_delete<v8::ScriptCompiler::ExternalSourceStream> >, v8::ScriptCompiler::StreamedSource::Encoding)",93957335374704,93957335374763],["v8::HandleScope::~HandleScope()",93957335377072,93957335377128],["v8::FixedArray::Get(v8::Local<v8::Context>, int) const",93957335377408,93957335377546],["v8::Module::GetModuleRequests() const",93957335377776,93957335377995],["v8::Module::GetIdentityHash() const",93957335378176,93957335378190],["v8::Module::Evaluate(v8::Local<v8::Context>)",93957335378880,93957335380259],["v8::Module::SetSyntheticModuleExport(v8::Isolate*, v8::Local<v8::String>, v8::Local<v8::Value>)",93957335380656,93957335381503],["v8::internal::wasm::LiftoffAssembler::emit_i64_add(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957341006944,93957341007078],["v8::internal::wasm::LiftoffAssembler::emit_f32_abs(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341012352,93957341012527],["v8::internal::wasm::LiftoffAssembler::emit_f32_nearest_int(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341013888,93957341014001],["v8::internal::wasm::LiftoffAssembler::emit_f64_neg(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341014752,93957341014949],["v8::internal::wasm::LiftoffAssembler::emit_f64_floor(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341015888,93957341016004],["v8::internal::wasm::LiftoffAssembler::emit_f64_nearest_int(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341016144,93957341016257],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)2, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)0>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341016368,93957341016751],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitTypeConversion<(v8::internal::wasm::ValueKind)1, (v8::internal::wasm::ValueKind)4, (v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TypeConversionTrapping)1>(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::ExternalReference (*)())",93957341017664,93957341018567],["v8::FunctionTemplateNew(v8::internal::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v8::Signature>, int, v8::ConstructorBehavior, bool, v8::Local<v8::Private>, v8::SideEffectType, v8::CFunction const*)",93957335365760,93957335366239],["v8::internal::Handle<v8::internal::InterceptorInfo> v8::CreateIndexedInterceptorInfo<void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(unsigned int, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&), void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Boolean> const&), void (*)(v8::PropertyCallbackInfo<v8::Array> const&), void (*)(unsigned int, v8::PropertyDescriptor const&, v8::PropertyCallbackInfo<v8::Value> const&)>(v8::internal::Isolate*, void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(unsigned int, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&), void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(unsigned int, v8::PropertyCallbackInfo<v8::Boolean> const&), void (*)(v8::PropertyCallbackInfo<v8::Array> const&), void (*)(unsigned int, v8::PropertyDescriptor const&, v8::PropertyCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::PropertyHandlerFlags)",93957335371728,93957335372922],["v8::ScriptCompiler::CachedData::~CachedData()",93957335374640,93957335374666],["v8::UnboundScript::BindToCurrentContext()",93957335374832,93957335375050],["v8::CallDepthScope<true>::CallDepthScope(v8::internal::Isolate*, v8::Local<v8::Context>)",93957335376624,93957335377069],["v8::ScriptOrModule::GetResourceName()",93957335377136,93957335377271],["v8::FixedArray::Length() const",93957335377392,93957335377406],["v8::debug::AccessorPair::getter()",93957335377552,93957335377649],["v8::base::SmallVector<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>, 2ul>::operator=(v8::base::SmallVector<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>, 2ul> const&)",93957340997456,93957340997591],["v8::internal::wasm::LiftoffAssembler::emit_select(v8::internal::wasm::LiftoffRegister, v8::internal::Register, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::ValueKind)",93957341008512,93957341008733],["v8::internal::wasm::LiftoffAssembler::emit_i32_ctz(v8::internal::Register, v8::internal::Register)",93957341011904,93957341011914],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitFloatUnOpWithCFallback<(v8::internal::wasm::ValueKind)3>(bool (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister), v8::internal::ExternalReference (*)())",93957341012704,93957341013491],["v8::internal::wasm::LiftoffAssembler::emit_f32_trunc(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341013760,93957341013876],["v8::internal::wasm::LiftoffAssembler::emit_f32_sqrt(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341014016,93957341014099],["v8::internal::wasm::LiftoffAssembler::emit_f64_abs(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341014544,93957341014741],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitFloatUnOpWithCFallback<(v8::internal::wasm::ValueKind)4>(bool (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister), v8::internal::ExternalReference (*)())",93957341014960,93957341015747],["v8::Context::BackupIncumbentScope::BackupIncumbentScope(v8::Local<v8::Context>)",93957335363376,93957335363436],["v8::FunctionTemplate::SetClassName(v8::Local<v8::String>)",93957335368272,93957335368559],["v8::EnsureConstructor(v8::internal::Isolate*, v8::ObjectTemplate*)",93957335369920,93957335370519],["v8::ObjectTemplate::SetCallAsFunctionHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>)",93957335373392,93957335374358],["v8::ScriptCompiler::CachedData::CachedData(unsigned char const*, int, v8::ScriptCompiler::CachedData::BufferPolicy)",93957335374608,93957335374627],["v8_inspector::V8InspectorSessionImpl::FallThrough(int, v8_crdtp::span<unsigned char>, v8_crdtp::span<unsigned char>)",93957335374672,93957335374690],["v8::ScriptCompiler::StreamedSource::~StreamedSource()",93957335374768,93957335374818],["v8::UnboundScript::GetId() const",93957335375056,93957335375262],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::DoReturn(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, unsigned int)",93957340992992,93957340993612],["v8::internal::wasm::LiftoffAssembler::emit_i32_sub(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341002160,93957341002285],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Select(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341007504,93957341008329],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::BuildSimpleOperator(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType)",93957341009264,93957341009994],["v8::internal::wasm::LiftoffAssembler::emit_i32_clz(v8::internal::Register, v8::internal::Register)",93957341011888,93957341011898],["void v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitUnOp<(v8::internal::wasm::ValueKind)3, (v8::internal::wasm::ValueKind)3, void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister)>(void (v8::internal::wasm::LiftoffAssembler::*)(v8::internal::XMMRegister, v8::internal::XMMRegister))",93957341011920,93957341012343],["v8::internal::wasm::LiftoffAssembler::emit_f32_neg(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341012528,93957341012703],["v8::internal::wasm::LiftoffAssembler::emit_f32_ceil(v8::internal::XMMRegister, v8::internal::XMMRegister)",93957341013504,93957341013620],["v8::HandleScope::CreateHandle(v8::internal::Isolate*, unsigned long)",93957335362128,93957335362184],["v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)",93957335364256,93957335364682],["v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffectType, v8::CFunction const*)",93957335366256,93957335367766],["v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)",93957335368736,93957335368748],["v8::ObjectTemplate::MarkAsUndetectable()",93957335369648,93957335369917],["v8::internal::Handle<v8::internal::InterceptorInfo> v8::CreateNamedInterceptorInfo<void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Integer> const&), void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Boolean> const&), void (*)(v8::PropertyCallbackInfo<v8::Array> const&), void (*)(v8::Local<v8::Name>, v8::PropertyDescriptor const&, v8::PropertyCallbackInfo<v8::Value> const&)>(v8::internal::Isolate*, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Integer> const&), void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Boolean> const&), void (*)(v8::PropertyCallbackInfo<v8::Array> const&), void (*)(v8::Local<v8::Name>, v8::PropertyDescriptor const&, v8::PropertyCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::PropertyHandlerFlags)",93957335370528,93957335371725],["v8::ObjectTemplate::SetHandler(v8::IndexedPropertyHandlerConfiguration const&)",93957335372928,93957335373385],["v8::ObjectTemplate::InternalFieldCount() const",93957335374368,93957335374388],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitLandingPad(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*)",93957340989824,93957340990605],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::GenerateBrCase(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, unsigned int, std::__1::map<unsigned int, v8::internal::wasm::(anonymous namespace)::MovableLabel, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<unsigned int const, v8::internal::wasm::(anonymous namespace)::MovableLabel> > >*)",93957340994400,93957340994682],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::CallIndirect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::CallIndirectImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TailCall)",93957340997856,93957341001866],["v8::internal::wasm::LiftoffAssembler::emit_i32_add(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341002368,93957341002488],["v8::internal::wasm::LiftoffAssembler::emit_i64_addi(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, long)",93957341007088,93957341007490],["v8::internal::wasm::LiftoffAssembler::GetUnusedRegister(v8::internal::wasm::RegClass, std::initializer_list<v8::internal::wasm::LiftoffRegister>, v8::internal::wasm::LiftoffRegList)",93957341008336,93957341008509],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::BuildSimpleOperator(v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueType, v8::internal::wasm::ValueType)",93957341008736,93957341009261],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::UnOp(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957341010000,93957341011449],["v8::V8::MakeWeak(unsigned long**)",93957335361632,93957335361642],["v8::SealHandleScope::~SealHandleScope()",93957335362528,93957335362557],["v8::EmbedderDataFor(v8::Context*, int, bool, char const*)",93957335363472,93957335364072],["v8::ObjectTemplateNew(v8::internal::Isolate*, v8::Local<v8::FunctionTemplate>, bool)",93957335365056,93957335365467],["v8::Signature::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)",93957335366240,93957335366249],["v8::FunctionTemplate::InstanceTemplate()",93957335367776,93957335368268],["v8::FunctionTemplate::ReadOnlyPrototype()",93957335368560,93957335368728],["v8::ObjectTemplate::SetAccessor(v8::Local<v8::String>, void (*)(v8::Local<v8::String>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<void> const&), v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::Local<v8::AccessorSignature>, v8::SideEffectType, v8::SideEffectType)",93957335368752,93957335369050],["bool v8::internal::wasm::liftoff::EmitTruncateFloatToInt<long, float>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister, v8::internal::Label*)",93957340987040,93957340987332],["v8::internal::wasm::LiftoffAssembler::emit_i32_shri(v8::internal::Register, v8::internal::Register, int)",93957340991536,93957340991612],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::BrOrRet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, unsigned int, unsigned int)",93957340993760,93957340993987],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::CallDirect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::CallFunctionImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1> const&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> const*, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TailCall)",93957340994752,93957340996925],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1>::Validate(unsigned char const*, v8::internal::wasm::CallIndirectImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1>&)",93957340997600,93957340997847],["v8::internal::wasm::LiftoffAssembler::PopToModifiableRegister(v8::internal::wasm::LiftoffRegList)",93957341001872,93957341002155],["v8::internal::wasm::LiftoffAssembler::emit_i32_xor(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957341002288,93957341002368],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::CallRef(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueType, v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::TailCall)",93957341002496,93957341006939],["v8::V8::SetFlagsFromString(char const*)",93957335360944,93957335360980],["v8::V8::FromJustIsNothing()",93957335361696,93957335361799],["v8::EscapableHandleScope::Escape(unsigned long*)",93957335362288,93957335362462],["v8::internal::HandleScopeImplementer::EnterContext(v8::internal::Context)",93957335362848,93957335363137],["v8::Context::BackupIncumbentScope::~BackupIncumbentScope()",93957335363440,93957335363467],["v8::Context::SetAlignedPointerInEmbedderData(int, void*)",93957335364080,93957335364241],["v8::FunctionTemplate::PrototypeTemplate()",93957335364688,93957335365050],["v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v8::Signature>, int, v8::ConstructorBehavior, v8::SideEffectType, v8::CFunction const*)",93957335365472,93957335365759],["bool v8::internal::wasm::liftoff::EmitTruncateFloatToInt<int, float>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister, v8::internal::Label*)",93957340983264,93957340983556],["bool v8::internal::wasm::liftoff::EmitSatTruncateFloatToInt<long, double>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister)",93957340988640,93957340989282],["v8::internal::wasm::LiftoffAssembler::StoreTaggedPointer(v8::internal::Register, v8::internal::Register, int, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegList, v8::internal::wasm::LiftoffAssembler::SkipWriteBarrier)",93957340991024,93957340991454],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Rethrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Control*)",93957340991648,93957340992032],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::TypeCheckBranch(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Control*, bool, unsigned int)",93957340993616,93957340993750],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::GenerateBrTable(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, unsigned int, unsigned int, v8::internal::wasm::BranchTableIterator<(v8::internal::wasm::Decoder::ValidateFlag)1>*, std::__1::map<unsigned int, v8::internal::wasm::(anonymous namespace)::MovableLabel, std::__1::less<unsigned int>, std::__1::allocator<std::__1::pair<unsigned int const, v8::internal::wasm::(anonymous namespace)::MovableLabel> > >*)",93957340994000,93957340994385],["std::__1::__tree<std::__1::__value_type<unsigned int, v8::internal::wasm::(anonymous namespace)::MovableLabel>, std::__1::__map_value_compare<unsigned int, std::__1::__value_type<unsigned int, v8::internal::wasm::(anonymous namespace)::MovableLabel>, std::__1::less<unsigned int>, true>, std::__1::allocator<std::__1::__value_type<unsigned int, v8::internal::wasm::(anonymous namespace)::MovableLabel> > >::destroy(std::__1::__tree_node<std::__1::__value_type<unsigned int, v8::internal::wasm::(anonymous namespace)::MovableLabel>, void*>*)",93957340994688,93957340994739],["v8::internal::wasm::LiftoffAssembler::PrepareTailCall(int, int)",93957340996928,93957340997454],["v8::SnapshotCreator::~SnapshotCreator()",93957335357296,93957335357666],["v8::ResourceConstraints::ConfigureDefaults(unsigned long, unsigned long)",93957335361328,93957335361422],["v8::V8::AnnotateStrongRetainer(unsigned long*, char const*)",93957335361664,93957335361674],["v8::HandleScope::HandleScope(v8::Isolate*)",93957335361920,93957335361930],["v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)",93957335362192,93957335362278],["v8::SealHandleScope::SealHandleScope(v8::Isolate*)",93957335362464,93957335362519],["v8::Context::Enter()",93957335362560,93957335362843],["v8::Context::Exit()",93957335363152,93957335363366],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Load32BitExceptionValue(v8::internal::Register, v8::internal::wasm::LiftoffRegister, unsigned int*, v8::internal::wasm::LiftoffRegList)",93957340980560,93957340980932],["bool v8::internal::wasm::liftoff::EmitSatTruncateFloatToInt<int, float>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister)",93957340984544,93957340985122],["bool v8::internal::wasm::liftoff::EmitSatTruncateFloatToInt<long, float>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister)",93957340987664,93957340988256],["v8::internal::wasm::LiftoffAssembler::emit_i64_or(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957340989696,93957340989785],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Store32BitExceptionValue(v8::internal::Register, int*, v8::internal::Register, v8::internal::wasm::LiftoffRegList)",93957340990608,93957340991019],["v8::internal::wasm::LiftoffAssembler::emit_i32_andi(v8::internal::Register, v8::internal::Register, int)",93957340991456,93957340991527],["v8::internal::wasm::Decoder::error(char const*)",93957340991616,93957340991647],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::PopControl(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Control*)",93957340992032,93957340992988],["v8::internal::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*)",93957335356144,93957335356155],["v8::Object::GetIsolate()",93957335358112,93957335358125],["v8::RegisterExtension(std::__1::unique_ptr<v8::Extension, std::__1::default_delete<v8::Extension> >)",93957335361088,93957335361135],["v8::V8::MoveGlobalReference(unsigned long**, unsigned long**)",93957335361600,93957335361610],["v8::V8::ClearWeak(unsigned long*)",93957335361648,93957335361658],["v8::V8::DisposeGlobal(unsigned long*)",93957335361680,93957335361690],["v8::V8::ToLocalEmpty()",93957335361808,93957335361911],["v8::HandleScope::Initialize(v8::Isolate*)",93957335361936,93957335362125],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::PopTypeError(int, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>, v8::internal::wasm::ValueType)",93957340977408,93957340977554],["v8::internal::wasm::LiftoffAssembler::emit_i32_shli(v8::internal::Register, v8::internal::Register, int)",93957340982992,93957340983068],["bool v8::internal::wasm::liftoff::EmitTruncateFloatToInt<int, double>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister, v8::internal::Label*)",93957340983888,93957340984205],["bool v8::internal::wasm::liftoff::EmitSatTruncateFloatToInt<int, double>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister)",93957340985744,93957340986372],["bool v8::internal::wasm::liftoff::EmitTruncateFloatToInt<long, double>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister, v8::internal::Label*)",93957340987344,93957340987661],["bool v8::internal::wasm::liftoff::EmitSatTruncateFloatToUInt64<float>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister)",93957340988256,93957340988630],["bool v8::internal::wasm::liftoff::EmitSatTruncateFloatToUInt64<double>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister)",93957340989296,93957340989695],["void v8::internal::Assembler::orq<v8::internal::Register, v8::internal::Register>(v8::internal::Register, v8::internal::Register)",93957340989792,93957340989817],["v8::internal::(anonymous namespace)::(anonymous namespace)::GetInstancePrototype(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>)",93957335352736,93957335353379],["v8::V8::SetSnapshotDataBlob(v8::StartupData*)",93957335357056,93957335357066],["v8::Isolate::Dispose()",93957335357696,93957335357820],["v8::(anonymous namespace)::ConvertSerializedObjectsToFixedArray(v8::Local<v8::Context>)",93957335360256,93957335360634],["v8::RegisteredExtension::UnregisterAll()",93957335360992,93957335361083],["v8::Extension::Extension(char const*, char const*, int, char const**, int)",93957335361136,93957335361313],["v8::V8::GlobalizeReference(v8::internal::Isolate*, unsigned long*)",93957335361424,93957335361598],["v8::V8::MakeWeak(unsigned long*, void*, void (*)(v8::WeakCallbackInfo<void> const&), v8::WeakCallbackType)",93957335361616,93957335361626],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::AddOutOfLineTrap(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmCode::RuntimeStubId, unsigned int)",93957340968112,93957340968875],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::TypeCheckMergeValues(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Control*, unsigned int, v8::internal::wasm::Merge<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> >*)",93957340977952,93957340978183],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Load64BitExceptionValue(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, unsigned int*, v8::internal::wasm::LiftoffRegList)",93957340982192,93957340982821],["v8::internal::wasm::LiftoffAssembler::emit_i32_sari(v8::internal::Register, v8::internal::Register, int)",93957340983152,93957340983228],["bool v8::internal::wasm::liftoff::EmitTruncateFloatToInt<unsigned int, float>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister, v8::internal::Label*)",93957340983568,93957340983879],["bool v8::internal::wasm::liftoff::EmitTruncateFloatToInt<unsigned int, double>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister, v8::internal::Label*)",93957340984208,93957340984544],["bool v8::internal::wasm::liftoff::EmitSatTruncateFloatToInt<unsigned int, float>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister)",93957340985136,93957340985730],["bool v8::internal::wasm::liftoff::EmitSatTruncateFloatToInt<unsigned int, double>(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::XMMRegister)",93957340986384,93957340987028],["v8::internal::ApiNatives::InstantiateFunction(v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::MaybeHandle<v8::internal::Name>)",93957335346240,93957335346462],["v8::internal::(anonymous namespace)::DefineDataProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957335354544,93957335355092],["v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool)",93957335356816,93957335356943],["v8::Isolate::Enter()",93957335357264,93957335357274],["v8::Isolate::Exit()",93957335357680,93957335357690],["v8::SnapshotCreator::SetDefaultContext(v8::Local<v8::Context>, v8::SerializeInternalFieldsCallback)",93957335357824,93957335358098],["v8::SnapshotCreator::CreateBlob(v8::SnapshotCreator::FunctionCodeHandling)",93957335358128,93957335360244],["std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >::push_back(unsigned long&&)",93957335360640,93957335360933],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeRefAsNonNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340944016,93957340944828],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::NotEnoughArgumentsError(int)",93957340971296,93957340971446],["v8::internal::wasm::LiftoffAssembler::PopToRegister(v8::internal::wasm::LiftoffRegList)",93957340977760,93957340977840],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::FallThruTo(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Control*)",93957340979312,93957340979500],["v8::internal::wasm::LiftoffAssembler::emit_type_conversion(v8::internal::wasm::WasmOpcode, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::Label*)",93957340980944,93957340982182],["v8::internal::wasm::LiftoffAssembler::emit_i32x4_splat(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister)",93957340982832,93957340982990],["v8::internal::wasm::LiftoffAssembler::emit_i32_or(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957340983072,93957340983152],["void v8::internal::Assembler::orl<v8::internal::Register, v8::internal::Register>(v8::internal::Register, v8::internal::Register)",93957340983232,93957340983257],["v8::internal::CustomArguments<v8::PropertyCallbackInfo<v8::Value> >::~CustomArguments()",93957335342144,93957335342189],["v8::internal::(anonymous namespace)::AddPropertyToPropertyList(v8::internal::Isolate*, v8::internal::Handle<v8::internal::TemplateInfo>, int, v8::internal::Handle<v8::internal::Object>*)",93957335350432,93957335350772],["v8::internal::LookupIterator::LookupIterator(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, unsigned long, v8::internal::Handle<v8::internal::Object>, v8::internal::LookupIterator::Configuration)",93957335353920,93957335354336],["v8::internal::(anonymous namespace)::GetIntrinsic(v8::internal::Isolate*, v8::Intrinsic)",93957335355712,93957335355967],["v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool)",93957335356160,93957335356803],["v8::Utils::ReportApiFailure(char const*, char const*)",93957335356944,93957335357045],["v8::SnapshotCreator::SnapshotCreator(v8::Isolate*, long const*, v8::StartupData*)",93957335357072,93957335357259],["v8::Isolate::Allocate()",93957335357280,93957335357290],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32SExtendI8(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941856,93957340941887],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeNumeric(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340946688,93957340962109],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::SetBlockType(v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Control*, v8::internal::wasm::BlockTypeImmediate<(v8::internal::wasm::Decoder::ValidateFlag)1>&, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>*)",93957340970336,93957340970939],["v8::internal::wasm::WasmOpcodes::OpcodeName(v8::internal::wasm::WasmOpcode)",93957340971632,93957340976994],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::PopTypeError(int, v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1>, char const*)",93957340977568,93957340977749],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::TypeCheckFallThru()",93957340977840,93957340977943],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::TypeCheckUnreachableMerge(v8::internal::wasm::Merge<v8::internal::wasm::ValueBase<(v8::internal::wasm::Decoder::ValidateFlag)1> >&, bool, unsigned int)",93957340978192,93957340979300],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::GetExceptionProperty(v8::internal::wasm::LiftoffAssembler::VarState&, v8::internal::RootIndex)",93957340979504,93957340980549],["v8::Shell::RemoveDirectory(v8::FunctionCallbackInfo<v8::Value> const&)",93957335339712,93957335339897],["v8::internal::Relocatable::~Relocatable()",93957335342288,93957335342319],["v8::internal::(anonymous namespace)::InstantiateObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectTemplateInfo>, v8::internal::Handle<v8::internal::JSReceiver>, bool)",93957335346592,93957335350262],["v8::internal::ApiNatives::CreateApiFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::InstanceType, v8::internal::MaybeHandle<v8::internal::Name>)",93957335351056,93957335352199],["v8::internal::(anonymous namespace)::CacheTemplateInstantiation(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, int, v8::internal::(anonymous namespace)::CachingMode, v8::internal::Handle<v8::internal::JSObject>)",93957335353392,93957335353911],["v8::internal::(anonymous namespace)::AccessCheckDisableScope::AccessCheckDisableScope(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>)",93957335354336,93957335354535],["v8::internal::(anonymous namespace)::DefineAccessorProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957335355104,93957335355707],["v8::internal::(anonymous namespace)::AccessCheckDisableScope::~AccessCheckDisableScope()",93957335355968,93957335356136],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941600,93957340941631],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64SExtendI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941984,93957340942015],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeRefEq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340946192,93957340946465],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeAtomic(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340966432,93957340968022],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::PushControl(v8::internal::wasm::ControlKind, unsigned int, unsigned int)",93957340968880,93957340970328],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::EnsureStackArguments_Slow(int, unsigned int)",93957340970944,93957340971295],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::SafeOpcodeNameAt(unsigned char const*)",93957340971456,93957340971626],["unsigned int v8::internal::wasm::Decoder::read_leb_slowpath<unsigned int, (v8::internal::wasm::Decoder::ValidateFlag)2, (v8::internal::wasm::Decoder::TraceFlag)0, 32ul>(unsigned char const*, unsigned int*, char const*)",93957340977008,93957340977393],["v8::ExecSubprocess(int*, int*, v8::ExecArgs const&)",93957335336144,93957335336311],["v8::Shell::AddOSMethods(v8::Isolate*, v8::Local<v8::ObjectTemplate>)",93957335341056,93957335341804],["v8::internal::CustomArguments<v8::PropertyCallbackInfo<v8::Value> >::IterateInstance(v8::internal::RootVisitor*)",93957335342224,93957335342256],["v8::internal::ApiNatives::InstantiateFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::MaybeHandle<v8::internal::Name>)",93957335342368,93957335342495],["v8::internal::ApiNatives::InstantiateObject(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ObjectTemplateInfo>, v8::internal::Handle<v8::internal::JSReceiver>)",93957335346464,93957335346583],["v8::internal::ApiNatives::AddDataProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::TemplateInfo>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes)",93957335350272,93957335350421],["v8::internal::ApiNatives::AddNativeDataProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::TemplateInfo>, v8::internal::Handle<v8::internal::AccessorInfo>)",93957335350784,93957335351050],["v8::internal::(anonymous namespace)::ProbeInstantiationsCache(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, int, v8::internal::(anonymous namespace)::CachingMode)",93957335352208,93957335352721],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64SConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941344,93957340941375],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32ReinterpretF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941728,93957340941759],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64SExtendI8(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941920,93957340941951],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeRefIsNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340942576,93957340943214],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeBrOnNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340944832,93957340946188],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeGC(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340946480,93957340946677],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeSimd(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340962112,93957340966420],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Trap(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::TrapReason)",93957340968032,93957340968102],["v8::SerializationData::~SerializationData()",93957335331984,93957335332378],["v8::Shell::ChangeDirectory(v8::FunctionCallbackInfo<v8::Value> const&)",93957335338560,93957335338810],["v8::Shell::UnsetEnvironment(v8::FunctionCallbackInfo<v8::Value> const&)",93957335340192,93957335340377],["v8::internal::PropertyCallbackArguments::PropertyCallbackArguments(v8::internal::Isolate*, v8::internal::Object, v8::internal::Object, v8::internal::JSObject, v8::Maybe<v8::internal::ShouldThrow>)",93957335341936,93957335342042],["v8::internal::Relocatable::~Relocatable()",93957335342192,93957335342217],["v8::internal::CustomArguments<v8::FunctionCallbackInfo<v8::Value> >::IterateInstance(v8::internal::RootVisitor*)",93957335342256,93957335342288],["v8::internal::CustomArguments<v8::FunctionCallbackInfo<v8::Value> >::~CustomArguments()",93957335342320,93957335342365],["v8::internal::(anonymous namespace)::InstantiateFunction(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NativeContext>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::MaybeHandle<v8::internal::Name>)",93957335342496,93957335346236],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32SConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941088,93957340941119],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32SConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941472,93957340941503],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64UConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941664,93957340941695],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32ReinterpretI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941792,93957340941823],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32SExtendI16(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941888,93957340941919],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64SExtendI16(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941952,93957340941983],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeRefNull(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340942016,93957340942565],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeRefFunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340943216,93957340944011],["void std::__1::__sort<std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*>(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&)",93957335322480,93957335325958],["std::__1::__hash_table<std::__1::shared_ptr<v8::Worker>, std::__1::hash<std::__1::shared_ptr<v8::Worker> >, std::__1::equal_to<std::__1::shared_ptr<v8::Worker> >, std::__1::allocator<std::__1::shared_ptr<v8::Worker> > >::swap(std::__1::__hash_table<std::__1::shared_ptr<v8::Worker>, std::__1::hash<std::__1::shared_ptr<v8::Worker> >, std::__1::equal_to<std::__1::shared_ptr<v8::Worker> >, std::__1::allocator<std::__1::shared_ptr<v8::Worker> > >&)",93957335333936,93957335334239],["v8::GetStdout(v8::Isolate*, int, timeval const&, int, int)",93957335336464,93957335337697],["v8::Shell::MakeDirectory(v8::FunctionCallbackInfo<v8::Value> const&)",93957335339072,93957335339445],["v8::Shell::SetEnvironment(v8::FunctionCallbackInfo<v8::Value> const&)",93957335339904,93957335340177],["v8::Shell::ReadCharsFromTcpPort(char const*, int*)",93957335340384,93957335341041],["v8::CheckItsADirectory(v8::Isolate*, char*)",93957335341808,93957335341934],["v8::internal::FunctionCallbackArguments::FunctionCallbackArguments(v8::internal::Isolate*, v8::internal::Object, v8::internal::HeapObject, v8::internal::Object, v8::internal::HeapObject, unsigned long*, int)",93957335342048,93957335342143],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940720,93957340940757],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941216,93957340941247],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941408,93957340941439],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32ConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941536,93957340941567],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64SConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941632,93957340941663],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64ConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941696,93957340941727],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64ReinterpretF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941760,93957340941791],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64ReinterpretI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941824,93957340941855],["std::__1::__shared_ptr_emplace<v8::Worker, std::__1::allocator<v8::Worker> >::~__shared_ptr_emplace()",93957335318784,93957335318804],["void std::__1::__insertion_sort_3<std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*>(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&)",93957335329248,93957335329981],["v8::platform::MessageLoopBehavior std::__1::__function::__policy_invoker<v8::platform::MessageLoopBehavior ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::Shell::CompleteMessageLoop(v8::Isolate*)::$_2, v8::platform::MessageLoopBehavior ()> >(std::__1::__function::__policy_storage const*)",93957335332400,93957335333029],["v8::Shell::System(v8::FunctionCallbackInfo<v8::Value> const&)",93957335334592,93957335335627],["v8::ChildLaunchedOK(v8::Isolate*, int*)",93957335336320,93957335336459],["v8::WaitForChild(v8::Isolate*, int, v8::ZombieProtector&, timeval const&, int, int)",93957335337712,93957335338560],["v8::Shell::SetUMask(v8::FunctionCallbackInfo<v8::Value> const&)",93957335338816,93957335339058],["v8::mkdirp(v8::Isolate*, char*, unsigned int)",93957335339456,93957335339709],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32CopySign(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940448,93957340940485],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Min(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940912,93957340940949],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32SConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941152,93957340941183],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64SConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941280,93957340941311],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64UConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941376,93957340941407],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941440,93957340941471],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32UConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941504,93957340941535],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64SConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941568,93957340941599],["v8::StreamingCompileTask::~StreamingCompileTask()",93957335316800,93957335316842],["std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int> > >::find<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957335318960,93957335319667],["unsigned int std::__1::__sort4<std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*>(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&)",93957335327360,93957335328162],["std::__1::__shared_ptr_pointer<v8::BackingStore*, std::__1::default_delete<v8::BackingStore>, std::__1::allocator<v8::BackingStore> >::__on_zero_shared()",93957335331152,93957335331196],["icu_68::WholeStringBreakIterator::adoptText(icu_68::CharacterIterator*)",93957335332384,93957335332393],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::shared_ptr<v8::Worker>, void*>*>, bool> std::__1::__hash_table<std::__1::shared_ptr<v8::Worker>, std::__1::hash<std::__1::shared_ptr<v8::Worker> >, std::__1::equal_to<std::__1::shared_ptr<v8::Worker> >, std::__1::allocator<std::__1::shared_ptr<v8::Worker> > >::__emplace_unique_key_args<std::__1::shared_ptr<v8::Worker>, std::__1::shared_ptr<v8::Worker> const&>(std::__1::shared_ptr<v8::Worker> const&, std::__1::shared_ptr<v8::Worker> const&)",93957335333040,93957335333926],["_GLOBAL__sub_I_d8.cc",93957335334240,93957335334592],["v8::ExecArgs::Init(v8::Isolate*, v8::Local<v8::Value>, v8::Local<v8::Array>)",93957335335632,93957335336134],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32NearestInt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940096,93957340940127],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Floor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940592,93957340940623],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940816,93957340940853],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64CopySign(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941008,93957340941045],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32UConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941120,93957340941151],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32UConvertF64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941184,93957340941215],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64UConvertI32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941248,93957340941279],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64UConvertF32(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941312,93957340941343],["std::__1::__tree<int, std::__1::less<int>, std::__1::allocator<int> >::destroy(std::__1::__tree_node<int, void*>*)",93957335315968,93957335316019],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, std::__1::__tree_node<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, std::__1::__map_value_compare<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, std::__1::less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> >, true>, std::__1::allocator<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> > > >::__emplace_unique_key_args<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, std::__1::pair<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> > >(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> const&, std::__1::pair<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >&&)",93957335317072,93957335317291],["std::__1::__shared_ptr_emplace<v8::Worker, std::__1::allocator<v8::Worker> >::__on_zero_shared()",93957335318864,93957335318878],["std::__1::__hash_table<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::rehash(unsigned long)",93957335320896,93957335321267],["unsigned int std::__1::__sort3<std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*>(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&)",93957335325968,93957335327352],["unsigned int std::__1::__sort5<std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*>(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&)",93957335328176,93957335329242],["bool std::__1::__insertion_sort_incomplete<std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*>(std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>*, std::__1::__less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> >&)",93957335329984,93957335331147],["void std::__1::vector<std::__1::unique_ptr<v8::SerializationData, std::__1::default_delete<v8::SerializationData> >, std::__1::allocator<std::__1::unique_ptr<v8::SerializationData, std::__1::default_delete<v8::SerializationData> > > >::__push_back_slow_path<std::__1::unique_ptr<v8::SerializationData, std::__1::default_delete<v8::SerializationData> > >(std::__1::unique_ptr<v8::SerializationData, std::__1::default_delete<v8::SerializationData> >&&)",93957335331200,93957335331971],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64ShrU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939792,93957340939829],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940256,93957340940293],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Neg(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940528,93957340940559],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64NearestInt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940656,93957340940687],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940768,93957340940805],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Div(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940864,93957340940901],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Max(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940960,93957340940997],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32ConvertI64(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340941056,93957340941087],["std::__1::pair<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > >, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > >, void*>*, long>, bool> std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > > > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&>&&, std::__1::tuple<>&&)",93957335316176,93957335316639],["v8::StreamingCompileTask::Run()",93957335316912,93957335317041],["void std::__1::vector<std::__1::tuple<v8::Global<v8::Promise>, v8::Global<v8::Message>, v8::Global<v8::Value> >, std::__1::allocator<std::__1::tuple<v8::Global<v8::Promise>, v8::Global<v8::Message>, v8::Global<v8::Value> > > >::__emplace_back_slow_path<v8::Global<v8::Promise>, v8::Global<v8::Message>, v8::Global<v8::Value> >(v8::Global<v8::Promise>&&, v8::Global<v8::Message>&&, v8::Global<v8::Value>&&)",93957335317776,93957335318493],["std::__1::__shared_ptr_emplace<v8::Worker, std::__1::allocator<v8::Worker> >::~__shared_ptr_emplace()",93957335318816,93957335318854],["v8::internal::Managed<icu_68::PluralRules>::Destructor(void*)",93957335318880,93957335318952],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Counter*> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&>&&, std::__1::tuple<>&&)",93957335319680,93957335320896],["std::__1::__hash_table<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__rehash(unsigned long)",93957335321280,93957335322469],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64DivU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939408,93957340939445],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Neg(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939968,93957340939999],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940160,93957340940197],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Min(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940352,93957340940389],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Abs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940496,93957340940527],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Ceil(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940560,93957340940591],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Trunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940624,93957340940655],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Sqrt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940688,93957340940719],["v8::base::LazyInstanceImpl<v8::base::Mutex, v8::base::StaticallyAllocatedInstanceTrait<v8::base::Mutex>, v8::base::DefaultConstructTrait<v8::base::Mutex>, v8::base::ThreadSafeInitOnceTrait, v8::base::LeakyInstanceTrait<v8::base::Mutex> >::InitInstance(void*)",93957335316144,93957335316154],["v8::DummySourceStream::~DummySourceStream()",93957335316688,93957335316743],["v8::StreamingCompileTask::~StreamingCompileTask()",93957335316848,93957335316903],["v8::StreamingCompileTask::FinishTask::Run()",93957335317056,93957335317070],["std::__1::__tree_node_base<void*>*& std::__1::__tree<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, std::__1::__map_value_compare<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> >, std::__1::less<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> >, true>, std::__1::allocator<std::__1::__value_type<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType>, v8::Global<v8::Module> > > >::__find_equal<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> >(std::__1::__tree_end_node<std::__1::__tree_node_base<void*>*>*&, std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::ModuleType> const&)",93957335317296,93957335317764],["std::__1::shared_ptr<v8::Worker> std::__1::allocate_shared<v8::Worker, std::__1::allocator<v8::Worker>, char*, void>(std::__1::allocator<v8::Worker> const&, char*&&)",93957335318496,93957335318780],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Ror(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939072,93957340939109],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Ior(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939600,93957340939637],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Ror(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939888,93957340939925],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Floor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940032,93957340940063],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Sqrt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940128,93957340940159],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940208,93957340940245],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Div(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940304,93957340940341],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Max(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940400,93957340940437],["std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > >, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > > > >::destroy(std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::unique_ptr<v8::ScriptCompiler::CachedData, std::__1::default_delete<v8::ScriptCompiler::CachedData> > >, void*>*)",93957335316032,93957335316131],["void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<v8::base::CallOnce<v8::StartupData>(std::__1::atomic<unsigned char>*, v8::base::OneArgFunction<v8::StartupData*>::type, v8::StartupData*)::{lambda()#1}, void ()> >(std::__1::__function::__policy_storage const*)",93957335316160,93957335316174],["v8::DummySourceStream::~DummySourceStream()",93957335316640,93957335316682],["v8::DummySourceStream::GetMoreData(unsigned char const**)",93957335316752,93957335316791],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32RemU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938688,93957340938725],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939216,93957340939253],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64RemU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939504,93957340939541],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Shl(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939696,93957340939733],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Rol(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939840,93957340939877],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Abs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939936,93957340939967],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Ceil(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940000,93957340940031],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Trunc(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340940064,93957340940095],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Ctz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938336,93957340938367],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Shl(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938880,93957340938917],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Ctz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939152,93957340939183],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939312,93957340939349],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64RemS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939456,93957340939493],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64And(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939552,93957340939589],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Xor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939648,93957340939685],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64ShrS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939744,93957340939781],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Ge(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937968,93957340938005],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Mul(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938496,93957340938533],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Ior(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938784,93957340938821],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32ShrU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938976,93957340939013],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Clz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939120,93957340939151],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Popcnt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939184,93957340939215],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939264,93957340939301],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64DivS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939360,93957340939397],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64LeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937584,93957340937621],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Gt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938160,93957340938197],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Add(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938400,93957340938437],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32DivU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938592,93957340938629],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32And(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938736,93957340938773],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Xor(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938832,93957340938869],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32ShrS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938928,93957340938965],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Rol(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340939024,93957340939061],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Eqz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937216,93957340937247],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937776,93957340937813],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938064,93957340938101],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Ge(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938256,93957340938293],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Popcnt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938368,93957340938399],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Sub(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938448,93957340938485],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32DivS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938544,93957340938581],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32RemS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938640,93957340938677],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32LtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340936832,93957340936869],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64LtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937392,93957340937429],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64GeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937680,93957340937717],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Gt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937872,93957340937909],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938016,93957340938053],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Lt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938112,93957340938149],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Le(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938208,93957340938245],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Clz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340938304,93957340938335],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeMemorySize(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340933088,93957340933871],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32LeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937024,93957340937061],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937296,93957340937333],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64GtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937488,93957340937525],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64GeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937632,93957340937669],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937728,93957340937765],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Lt(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937824,93957340937861],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Le(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937920,93957340937957],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLocalSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340926016,93957340926457],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF64Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340936304,93957340936700],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32GtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340936928,93957340936965],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32GeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937120,93957340937157],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937248,93957340937285],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64LtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937344,93957340937381],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64GtS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937440,93957340937477],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64LeS(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937536,93957340937573],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeNopForTestingUnsupportedInLiftoff(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340921200,93957340921213],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeTableGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340930496,93957340931763],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI64Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340935360,93957340935900],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Eq(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340936736,93957340936773],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32LtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340936880,93957340936917],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32GtU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340936976,93957340937013],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32LeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937072,93957340937109],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32GeU(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340937168,93957340937205],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeBrTable(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340910096,93957340913336],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeDrop(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340924112,93957340924334],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeGlobalGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340926928,93957340928875],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLoadMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340933024,93957340933054],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeMemoryGrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340933872,93957340935349],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeF32Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340935904,93957340936300],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Eqz(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340936704,93957340936735],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Ne(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340936784,93957340936821],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeTry(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340899120,93957340900355],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeReturnCall(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340916928,93957340917695],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeDelegate(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340922688,93957340923703],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeSelectWithType(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340924976,93957340925883],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLocalTee(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340926464,93957340926920],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeGlobalSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340928880,93957340930484],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeTableSet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340931776,93957340933017],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeStoreMem(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340933056,93957340933086],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::EmitDebuggingInfo(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340892432,93957340894066],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeUnwind(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340906912,93957340907288],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeCallFunction(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340914224,93957340915352],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeCallRef(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340918944,93957340920311],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340921216,93957340922682],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeCatchAll(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340923712,93957340924099],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeSelect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340924336,93957340924965],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeUnknownOrAsmJs(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340925888,93957340926013],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::OutOfLineSafepointInfo* v8::internal::Zone::New<v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::OutOfLineSafepointInfo, v8::internal::Zone*&>(v8::internal::Zone*&)",93957340888864,93957340888945],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeBlock(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340895136,93957340896030],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeThrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340903552,93957340906611],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeBr(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340908464,93957340908834],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeReturn(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340913344,93957340914222],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeCallIndirect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340915360,93957340916928],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeReturnCallIndirect(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340917696,93957340918929],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeReturnCallRef(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340920320,93957340921187],["v8::internal::wasm::LiftoffAssembler::Store(v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::StoreType, v8::internal::wasm::LiftoffRegList, unsigned int*, bool)",93957340887072,93957340887434],["v8::internal::wasm::(anonymous namespace)::DebugSideTableBuilder::GetChangedStackValues(std::__1::vector<v8::internal::wasm::DebugSideTable::Entry::Value, std::__1::allocator<v8::internal::wasm::DebugSideTable::Entry::Value> >&, v8::internal::Vector<v8::internal::wasm::DebugSideTable::Entry::Value>)",93957340891520,93957340891857],["int v8::internal::wasm::Decoder::read_leb_slowpath<int, (v8::internal::wasm::Decoder::ValidateFlag)1, (v8::internal::wasm::Decoder::TraceFlag)0, 32ul>(unsigned char const*, unsigned int*, char const*)",93957340894608,93957340894999],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeIf(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340897024,93957340898570],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeCatch(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340900368,93957340903540],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeRethrow(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340906624,93957340906900],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeEnd(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340907296,93957340908457],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeBrIf(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340908848,93957340910096],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLocalGet(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340882992,93957340883630],["v8::internal::wasm::LiftoffAssembler::PushRegister(v8::internal::wasm::ValueKind, v8::internal::wasm::LiftoffRegister)",93957340888096,93957340888278],["v8::internal::wasm::(anonymous namespace)::DebugSideTableBuilder::NewOOLEntry(v8::internal::Vector<v8::internal::wasm::DebugSideTable::Entry::Value>)",93957340889984,93957340890105],["void v8::internal::Assembler::andl<v8::internal::Register, v8::internal::Register>(v8::internal::Register, v8::internal::Register)",93957340892192,93957340892217],["v8::internal::wasm::(anonymous namespace)::DebugSideTableBuilder::NewEntry(int, v8::internal::Vector<v8::internal::wasm::DebugSideTable::Entry::Value>)",93957340894080,93957340894599],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeUnreachable(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340895008,93957340895133],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeLoop(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340896032,93957340897022],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeElse(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340898576,93957340899111],["v8::internal::wasm::Decoder::MarkError()",93957340880960,93957340881084],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::LoadNullValue(v8::internal::Register, v8::internal::wasm::LiftoffRegList)",93957340884528,93957340884894],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::MaybeBailoutForUnsupportedType(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::ValueKind, char const*)",93957340887520,93957340887938],["void v8::internal::Assembler::xorl<v8::internal::Register, v8::internal::Register>(v8::internal::Register, v8::internal::Register)",93957340888384,93957340888409],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::GetSpilledRegistersForInspection()",93957340888960,93957340889979],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::GetCurrentDebugSideTableEntries(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::(anonymous namespace)::DebugSideTableBuilder::AssumeSpilling)",93957340890112,93957340891506],["std::__1::vector<v8::internal::wasm::DebugSideTable::Entry::Value, std::__1::allocator<v8::internal::wasm::DebugSideTable::Entry::Value> >::__append(unsigned long)",93957340891872,93957340892185],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::GrowStackSpace(int)",93957340892224,93957340892427],["v8::internal::wasm::Decoder::~Decoder()",93957340873616,93957340873648],["v8::internal::wasm::Decoder::errorf(unsigned int, char const*, ...)",93957340881824,93957340881949],["v8::internal::wasm::LiftoffAssembler::FillStackSlotsWithZero(int, int)",93957340883872,93957340884360],["v8::internal::wasm::LiftoffAssembler::Load(v8::internal::wasm::LiftoffRegister, v8::internal::Register, v8::internal::Register, unsigned long, v8::internal::wasm::LoadType, v8::internal::wasm::LiftoffRegList, unsigned int*, bool)",93957340886288,93957340886802],["v8::internal::wasm::LiftoffAssembler::emit_i32_and(v8::internal::Register, v8::internal::Register, v8::internal::Register)",93957340887440,93957340887520],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::unsupported(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::LiftoffBailoutReason, char const*)",93957340887952,93957340888094],["v8::internal::wasm::LiftoffAssembler::GetUnusedRegister(v8::internal::wasm::LiftoffRegList)",93957340888288,93957340888384],["v8::internal::wasm::liftoff::GetMemOp(v8::internal::wasm::LiftoffAssembler*, v8::internal::Register, v8::internal::Register, unsigned long)",93957340888416,93957340888855],["v8::internal::wasm::(anonymous namespace)::DebugSideTableBuilder::~DebugSideTableBuilder()",93957340872096,93957340872336],["_ZNSt3__16vectorIN2v88internal4wasm9ValueTypeENS2_13ZoneAllocatorIS4_EEE6assignIPKS4_EENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIS4_NS_15iterator_traitsISC_E9referenceEEE5valueEvE4typeESC_SC_",93957340875776,93957340876941],["v8::internal::wasm::HeapType v8::internal::wasm::value_type_reader::read_heap_type<(v8::internal::wasm::Decoder::ValidateFlag)1>(v8::internal::wasm::Decoder*, unsigned char const*, unsigned int*, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures const&)",93957340881296,93957340881777],["long v8::internal::wasm::Decoder::read_leb_slowpath<long, (v8::internal::wasm::Decoder::ValidateFlag)1, (v8::internal::wasm::Decoder::TraceFlag)0, 33ul>(unsigned char const*, unsigned int*, char const*)",93957340882432,93957340882847],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::DecodeI32Const(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, v8::internal::wasm::WasmOpcode)",93957340883632,93957340883857],["v8::internal::wasm::LiftoffAssembler::PushConstant(v8::internal::wasm::ValueKind, int)",93957340884368,93957340884519],["v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::StackCheck(v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>*, int)",93957340884896,93957340886282],["v8::internal::wasm::LiftoffAssembler::emit_i32_addi(v8::internal::Register, v8::internal::Register, int)",93957340886816,93957340887060],["v8::base::SmallVector<v8::internal::wasm::LiftoffAssembler::VarState, 8ul>::Grow()",93957340857360,93957340857372],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::onFirstError()",93957340873264,93957340873303],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1>::DecodeLocals(unsigned char const*, unsigned int*, v8::base::Optional<unsigned int>)",93957340873696,93957340874268],["std::__1::vector<v8::internal::wasm::ValueType, v8::internal::ZoneAllocator<v8::internal::wasm::ValueType> >::insert(std::__1::__wrap_iter<v8::internal::wasm::ValueType const*>, unsigned long, v8::internal::wasm::ValueType const&)",93957340877776,93957340880653],["v8::internal::wasm::WasmError::WasmError(unsigned int, char const*, ...)",93957340881088,93957340881292],["v8::internal::wasm::Decoder::error(unsigned char const*, char const*)",93957340881792,93957340881820],["v8::internal::wasm::Decoder::verrorf(unsigned int, char const*, __va_list_tag*)",93957340881952,93957340882422],["v8::internal::wasm::Decoder::errorf(unsigned char const*, char const*, ...)",93957340882848,93957340882979],["v8::internal::wasm::LiftoffAssembler::set_num_locals(unsigned int)",93957340851680,93957340851721],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::Decode()",93957340860288,93957340869697],["void std::__1::vector<v8::internal::wasm::DebugSideTable::Entry, std::__1::allocator<v8::internal::wasm::DebugSideTable::Entry> >::__push_back_slow_path<v8::internal::wasm::DebugSideTable::Entry>(v8::internal::wasm::DebugSideTable::Entry&&)",93957340872624,93957340873062],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)0>::~WasmDecoder()",93957340873504,93957340873549],["v8::internal::wasm::BytecodeIterator::~BytecodeIterator()",93957340873648,93957340873696],["v8::internal::wasm::ValueType::name() const",93957340874272,93957340875772],["v8::internal::wasm::ValueType v8::internal::wasm::value_type_reader::read_value_type<(v8::internal::wasm::Decoder::ValidateFlag)1>(v8::internal::wasm::Decoder*, unsigned char const*, unsigned int*, v8::internal::wasm::WasmModule const*, v8::internal::wasm::WasmFeatures const&)",93957340876944,93957340877775],["unsigned int v8::internal::wasm::Decoder::read_leb_slowpath<unsigned int, (v8::internal::wasm::Decoder::ValidateFlag)1, (v8::internal::wasm::Decoder::TraceFlag)0, 32ul>(unsigned char const*, unsigned int*, char const*)",93957340880656,93957340880949],["v8::internal::wasm::LiftoffAssembler::PrepareBuiltinCall(v8::internal::Signature<v8::internal::wasm::ValueKind> const*, v8::internal::compiler::CallDescriptor*, std::initializer_list<v8::internal::wasm::LiftoffAssembler::VarState>)",93957340845152,93957340845706],["v8::internal::wasm::liftoff::push(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::ValueKind, int)",93957340852272,93957340852658],["v8::internal::wasm::liftoff::Store(v8::internal::wasm::LiftoffAssembler*, v8::internal::Operand, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::ValueKind)",93957340857552,93957340857794],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::~WasmFullDecoder()",93957340870368,93957340870548],["std::__1::vector<v8::internal::wasm::DebugSideTable::Entry, std::__1::allocator<v8::internal::wasm::DebugSideTable::Entry> >::reserve(unsigned long)",93957340872336,93957340872622],["v8::internal::wasm::WasmFullDecoder<(v8::internal::wasm::Decoder::ValidateFlag)1, v8::internal::wasm::(anonymous namespace)::LiftoffCompiler>::~WasmFullDecoder()",93957340873072,93957340873253],["std::__1::__vector_base<v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Control, v8::internal::ZoneAllocator<v8::internal::wasm::(anonymous namespace)::LiftoffCompiler::Control> >::clear()",93957340873312,93957340873503],["v8::internal::wasm::WasmDecoder<(v8::internal::wasm::Decoder::ValidateFlag)0>::~WasmDecoder()",93957340873552,93957340873613],["v8::internal::wasm::LiftoffAssembler::Spill(int, v8::internal::wasm::WasmValue)",93957340840256,93957340840526],["v8::internal::wasm::LiftoffAssembler::PrepareCall(v8::internal::Signature<v8::internal::wasm::ValueKind> const*, v8::internal::compiler::CallDescriptor*, v8::internal::Register*, v8::internal::Register*)",93957340848256,93957340849217],["v8::internal::ZoneChunkList<int>::push_back(int const&)",93957340851744,93957340852018],["unsigned int std::__1::__sort4<v8::internal::wasm::LiftoffStackSlots::SortInPushOrder()::{lambda(v8::internal::wasm::LiftoffStackSlots::Slot const&, v8::internal::wasm::LiftoffStackSlots::Slot const&)#1}&, v8::internal::wasm::LiftoffStackSlots::Slot*>(v8::internal::wasm::LiftoffStackSlots::Slot*, v8::internal::wasm::LiftoffStackSlots::Slot*, v8::internal::wasm::LiftoffStackSlots::Slot*, v8::internal::wasm::LiftoffStackSlots::Slot*, v8::internal::wasm::LiftoffStackSlots::SortInPushOrder()::{lambda(v8::internal::wasm::LiftoffStackSlots::Slot const&, v8::internal::wasm::LiftoffStackSlots::Slot const&)#1}&)",93957340855648,93957340856134],["v8::base::SmallVector<v8::internal::wasm::LiftoffAssembler::VarState, 8ul>::Grow(unsigned long)",93957340857376,93957340857537],["v8::internal::wasm::ExecuteLiftoffCompilation(v8::internal::AccountingAllocator*, v8::internal::wasm::CompilationEnv*, v8::internal::wasm::FunctionBody const&, int, v8::internal::wasm::ForDebugging, v8::internal::Counters*, v8::internal::wasm::WasmFeatures*, v8::internal::Vector<int const>, std::__1::unique_ptr<v8::internal::wasm::DebugSideTable, std::__1::default_delete<v8::internal::wasm::DebugSideTable> >*, int)",93957340857808,93957340860280],["v8::internal::wasm::(anonymous namespace)::DebugSideTableBuilder::GenerateDebugSideTable()",93957340869712,93957340870365],["v8::internal::wasm::GenerateLiftoffDebugSideTable(v8::internal::wasm::WasmCode const*)",93957340870560,93957340872088],["v8::internal::wasm::LiftoffAssembler::~LiftoffAssembler()",93957340837664,93957340837692],["v8::internal::wasm::LiftoffAssembler::SpillLocals()",93957340843824,93957340844133],["v8::internal::wasm::LiftoffStackSlots::Construct(int)",93957340846352,93957340847061],["v8::internal::wasm::LiftoffAssembler::MoveToReturnLocations(v8::internal::Signature<v8::internal::wasm::ValueType> const*, v8::internal::compiler::CallDescriptor*)",93957340849968,93957340851419],["v8::base::SmallVector<v8::internal::wasm::LiftoffRegister, 8ul>::Grow()",93957340851728,93957340851740],["v8::internal::wasm::liftoff::Load(v8::internal::wasm::LiftoffAssembler*, v8::internal::wasm::LiftoffRegister, v8::internal::Operand, v8::internal::wasm::ValueKind)",93957340852032,93957340852264],["void std::__1::__sort<v8::internal::wasm::LiftoffStackSlots::SortInPushOrder()::{lambda(v8::internal::wasm::LiftoffStackSlots::Slot const&, v8::internal::wasm::LiftoffStackSlots::Slot const&)#1}&, v8::internal::wasm::LiftoffStackSlots::Slot*>(v8::internal::wasm::LiftoffStackSlots::Slot*, v8::internal::wasm::LiftoffStackSlots::Slot*, v8::internal::wasm::LiftoffStackSlots::SortInPushOrder()::{lambda(v8::internal::wasm::LiftoffStackSlots::Slot const&, v8::internal::wasm::LiftoffStackSlots::Slot const&)#1}&)",93957340852672,93957340855645],["bool std::__1::__insertion_sort_incomplete<v8::internal::wasm::LiftoffStackSlots::SortInPushOrder()::{lambda(v8::internal::wasm::LiftoffStackSlots::Slot const&, v8::internal::wasm::LiftoffStackSlots::Slot const&)#1}&, v8::internal::wasm::LiftoffStackSlots::Slot*>(v8::internal::wasm::LiftoffStackSlots::Slot*, v8::internal::wasm::LiftoffStackSlots::Slot*, v8::internal::wasm::LiftoffStackSlots::SortInPushOrder()::{lambda(v8::internal::wasm::LiftoffStackSlots::Slot const&, v8::internal::wasm::LiftoffStackSlots::Slot const&)#1}&)",93957340856144,93957340857352],["v8::internal::wasm::(anonymous namespace)::InitMergeRegion(v8::internal::wasm::LiftoffAssembler::CacheState*, v8::internal::wasm::LiftoffAssembler::VarState const*, v8::internal::wasm::LiftoffAssembler::VarState*, unsigned int, v8::internal::wasm::(anonymous namespace)::MergeKeepStackSlots, v8::internal::wasm::(anonymous namespace)::MergeAllowConstants, v8::internal::wasm::(anonymous namespace)::ReuseRegisters, v8::internal::wasm::LiftoffRegList)",93957340835216,93957340835872],["v8::internal::wasm::LiftoffAssembler::DropValue(int)",93957340838304,93957340838414],["v8::internal::wasm::LiftoffAssembler::MergeStackWith(v8::internal::wasm::LiftoffAssembler::CacheState&, unsigned int, v8::internal::wasm::LiftoffAssembler::JumpDirection)",93957340841552,93957340843511],["v8::internal::wasm::LiftoffAssembler::ClearRegister(v8::internal::Register, std::initializer_list<v8::internal::Register*>, v8::internal::wasm::LiftoffRegList)",93957340844400,93957340844927],["v8::internal::wasm::(anonymous namespace)::PrepareStackTransfers(v8::internal::Signature<v8::internal::wasm::ValueKind> const*, v8::internal::compiler::CallDescriptor*, v8::internal::wasm::LiftoffAssembler::VarState const*, v8::internal::wasm::LiftoffStackSlots*, v8::internal::wasm::(anonymous namespace)::StackTransferRecipe*, v8::internal::wasm::LiftoffRegList*)",93957340845712,93957340846343],["v8::internal::wasm::(anonymous namespace)::StackTransferRecipe::Execute()",93957340847072,93957340848249],["v8::internal::wasm::LiftoffAssembler::FinishCall(v8::internal::Signature<v8::internal::wasm::ValueKind> const*, v8::internal::compiler::CallDescriptor*)",93957340849232,93957340849958],["v8::internal::wasm::LiftoffAssembler::SpillOneRegister(v8::internal::wasm::LiftoffRegList)",93957340851424,93957340851668],["v8::internal::Runtime_WasmTableFill(int, unsigned long*, v8::internal::Isolate*)",93957340826848,93957340828055],["v8::internal::wasm::LiftoffAssembler::CacheState::DefineSafepointWithCalleeSavedRegisters(v8::internal::Safepoint&)",93957340837056,93957340837191],["v8::internal::wasm::LiftoffAssembler::PeekToRegister(int, v8::internal::wasm::LiftoffRegList)",93957340838096,93957340838207],["v8::internal::wasm::LiftoffAssembler::Move(v8::internal::wasm::LiftoffRegister, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::ValueKind)",93957340839120,93957340839295],["v8::internal::wasm::LiftoffAssembler::MergeFullStackWith(v8::internal::wasm::LiftoffAssembler::CacheState&, v8::internal::wasm::LiftoffAssembler::CacheState const&)",93957340840528,93957340841543],["v8::internal::wasm::LiftoffAssembler::Spill(int, v8::internal::wasm::LiftoffRegister, v8::internal::wasm::ValueKind)",93957340843520,93957340843816],["v8::internal::wasm::LiftoffAssembler::SpillAllRegisters()",93957340844144,93957340844387],["v8::internal::wasm::LiftoffAssembler::SpillRegister(v8::internal::wasm::LiftoffRegister)",93957340844928,93957340845139],["v8::internal::Runtime_WasmFunctionTableSet(int, unsigned long*, v8::internal::Isolate*)",93957340815840,93957340816950],["v8::internal::Runtime_WasmAllocateRtt(int, unsigned long*, v8::internal::Isolate*)",93957340832368,93957340833073],["v8::internal::wasm::LiftoffAssembler::CacheState::GetTaggedSlotsForOOLCode(v8::internal::ZoneVector<int>*, v8::internal::wasm::LiftoffRegList*, v8::internal::wasm::LiftoffAssembler::CacheState::SpillLocation)",93957340836112,93957340836926],["v8::internal::wasm::LiftoffAssembler::LiftoffAssembler(std::__1::unique_ptr<v8::internal::AssemblerBuffer, std::__1::default_delete<v8::internal::AssemblerBuffer> >)",93957340837248,93957340837498],["v8::internal::wasm::LiftoffAssembler::LoadToRegister(v8::internal::wasm::LiftoffAssembler::VarState, v8::internal::wasm::LiftoffRegList)",93957340837696,93957340838083],["v8::internal::wasm::LiftoffAssembler::DropValues(int)",93957340838208,93957340838295],["v8::internal::wasm::LiftoffAssembler::PrepareLoopArgs(int)",93957340838416,93957340839105],["v8::internal::wasm::LiftoffAssembler::MaterializeMergedConstants(unsigned int)",93957340839296,93957340840255],["v8::internal::Runtime_WasmI32AtomicWait(int, unsigned long*, v8::internal::Isolate*)",93957340806960,93957340808108],["v8::internal::Runtime_WasmTableCopy(int, unsigned long*, v8::internal::Isolate*)",93957340821520,93957340822816],["v8::internal::Runtime_WasmDebugBreak(int, unsigned long*, v8::internal::Isolate*)",93957340829680,93957340830791],["v8::internal::(anonymous namespace)::ReplaceWrapper(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, int, v8::internal::Handle<v8::internal::Code>)",93957340834272,93957340834514],["v8::internal::wasm::LiftoffAssembler::CacheState::Split(v8::internal::wasm::LiftoffAssembler::CacheState const&)",93957340835872,93957340836105],["v8::internal::wasm::LiftoffAssembler::CacheState::DefineSafepoint(v8::internal::Safepoint&)",93957340836928,93957340837041],["v8::internal::wasm::LiftoffAssembler::GetTotalFrameSlotCountForGC() const",93957340837200,93957340837237],["v8::internal::wasm::LiftoffAssembler::~LiftoffAssembler()",93957340837504,93957340837654],["v8::internal::Runtime_WasmCompileLazy(int, unsigned long*, v8::internal::Isolate*)",93957340800656,93957340801194],["v8::internal::Runtime_WasmRefFunc(int, unsigned long*, v8::internal::Isolate*)",93957340811968,93957340812483],["v8::internal::Runtime_WasmTableInit(int, unsigned long*, v8::internal::Isolate*)",93957340818496,93957340819792],["v8::internal::Runtime_WasmTableGrow(int, unsigned long*, v8::internal::Isolate*)",93957340824544,93957340825474],["v8::internal::Stats_Runtime_WasmTableFill(int, unsigned long*, v8::internal::Isolate*)",93957340828064,93957340829673],["v8::internal::Stats_Runtime_WasmDebugBreak(int, unsigned long*, v8::internal::Isolate*)",93957340830800,93957340832353],["v8::internal::Stats_Runtime_WasmAllocateRtt(int, unsigned long*, v8::internal::Isolate*)",93957340833088,93957340834268],["v8::internal::wasm::LiftoffAssembler::CacheState::InitMerge(v8::internal::wasm::LiftoffAssembler::CacheState const&, unsigned int, unsigned int, unsigned int)",93957340834528,93957340835208],["v8::internal::Runtime_WasmThrowJSTypeError(int, unsigned long*, v8::internal::Isolate*)",93957340795728,93957340795972],["v8::internal::Runtime_WasmTriggerTierUp(int, unsigned long*, v8::internal::Isolate*)",93957340803616,93957340803981],["v8::internal::Runtime_WasmI64AtomicWait(int, unsigned long*, v8::internal::Isolate*)",93957340809680,93957340810609],["v8::internal::Runtime_WasmFunctionTableGet(int, unsigned long*, v8::internal::Isolate*)",93957340813440,93957340814415],["v8::internal::Stats_Runtime_WasmFunctionTableSet(int, unsigned long*, v8::internal::Isolate*)",93957340816960,93957340818488],["v8::internal::Stats_Runtime_WasmTableInit(int, unsigned long*, v8::internal::Isolate*)",93957340819792,93957340821511],["v8::internal::Stats_Runtime_WasmTableCopy(int, unsigned long*, v8::internal::Isolate*)",93957340822816,93957340824535],["v8::internal::Stats_Runtime_WasmTableGrow(int, unsigned long*, v8::internal::Isolate*)",93957340825488,93957340826837],["v8::internal::Runtime_WasmIsValidRefValue(int, unsigned long*, v8::internal::Isolate*)",93957340791200,93957340791491],["v8::internal::Runtime_WasmReThrow(int, unsigned long*, v8::internal::Isolate*)",93957340798768,93957340799052],["v8::internal::Runtime_WasmCompileWrapper(int, unsigned long*, v8::internal::Isolate*)",93957340802160,93957340802693],["v8::internal::Runtime_WasmAtomicNotify(int, unsigned long*, v8::internal::Isolate*)",93957340804784,93957340805655],["v8::internal::Stats_Runtime_WasmI32AtomicWait(int, unsigned long*, v8::internal::Isolate*)",93957340808112,93957340809680],["v8::internal::Stats_Runtime_WasmI64AtomicWait(int, unsigned long*, v8::internal::Isolate*)",93957340810624,93957340811965],["v8::internal::Stats_Runtime_WasmRefFunc(int, unsigned long*, v8::internal::Isolate*)",93957340812496,93957340813432],["v8::internal::Stats_Runtime_WasmFunctionTableGet(int, unsigned long*, v8::internal::Isolate*)",93957340814416,93957340815829],["v8::internal::Stats_Runtime_WasmTierUp(int, unsigned long*, v8::internal::Isolate*)",93957340787632,93957340788142],["v8::internal::Runtime_ThrowWasmError(int, unsigned long*, v8::internal::Isolate*)",93957340793792,93957340794145],["v8::internal::Runtime_WasmThrow(int, unsigned long*, v8::internal::Isolate*)",93957340796640,93957340797462],["v8::internal::Runtime_WasmStackGuard(int, unsigned long*, v8::internal::Isolate*)",93957340799760,93957340799997],["v8::internal::Stats_Runtime_WasmCompileLazy(int, unsigned long*, v8::internal::Isolate*)",93957340801200,93957340802153],["v8::internal::Stats_Runtime_WasmCompileWrapper(int, unsigned long*, v8::internal::Isolate*)",93957340802704,93957340803615],["v8::internal::Stats_Runtime_WasmTriggerTierUp(int, unsigned long*, v8::internal::Isolate*)",93957340803984,93957340804781],["v8::internal::Stats_Runtime_WasmAtomicNotify(int, unsigned long*, v8::internal::Isolate*)",93957340805664,93957340806948],["v8::internal::Stats_Runtime_WasmNumCodeSpaces(int, unsigned long*, v8::internal::Isolate*)",93957340783504,93957340784394],["v8::internal::Stats_Runtime_FreezeWasmLazyCompilation(int, unsigned long*, v8::internal::Isolate*)",93957340789488,93957340790064],["v8::internal::Runtime_WasmMemoryGrow(int, unsigned long*, v8::internal::Isolate*)",93957340792176,93957340792766],["v8::internal::Runtime_ThrowWasmStackOverflow(int, unsigned long*, v8::internal::Isolate*)",93957340794944,93957340795122],["v8::internal::Stats_Runtime_WasmThrowJSTypeError(int, unsigned long*, v8::internal::Isolate*)",93957340795984,93957340796633],["v8::internal::Stats_Runtime_WasmThrow(int, unsigned long*, v8::internal::Isolate*)",93957340797472,93957340798768],["v8::internal::Stats_Runtime_WasmReThrow(int, unsigned long*, v8::internal::Isolate*)",93957340799056,93957340799747],["v8::internal::Stats_Runtime_WasmStackGuard(int, unsigned long*, v8::internal::Isolate*)",93957340800000,93957340800652],["v8::internal::Stats_Runtime_GetWasmExceptionValues(int, unsigned long*, v8::internal::Isolate*)",93957340778864,93957340779540],["v8::internal::Stats_Runtime_WasmTierUpFunction(int, unsigned long*, v8::internal::Isolate*)",93957340786112,93957340786828],["v8::internal::Stats_Runtime_IsLiftoffFunction(int, unsigned long*, v8::internal::Isolate*)",93957340788576,93957340789352],["v8::internal::(anonymous namespace)::IsWasmCompileAllowed(v8::Isolate*, v8::Local<v8::Value>, bool)",93957340790208,93957340790588],["v8::internal::Stats_Runtime_WasmIsValidRefValue(int, unsigned long*, v8::internal::Isolate*)",93957340791504,93957340792161],["v8::internal::Stats_Runtime_WasmMemoryGrow(int, unsigned long*, v8::internal::Isolate*)",93957340792768,93957340793782],["v8::internal::Stats_Runtime_ThrowWasmError(int, unsigned long*, v8::internal::Isolate*)",93957340794160,93957340794941],["v8::internal::Stats_Runtime_ThrowWasmStackOverflow(int, unsigned long*, v8::internal::Isolate*)",93957340795136,93957340795715],["v8::internal::Stats_Runtime_IsWasmTrapHandlerEnabled(int, unsigned long*, v8::internal::Isolate*)",93957340775088,93957340775592],["v8::internal::Stats_Runtime_DeserializeWasmModule(int, unsigned long*, v8::internal::Isolate*)",93957340781184,93957340781988],["v8::internal::Stats_Runtime_WasmTraceMemory(int, unsigned long*, v8::internal::Isolate*)",93957340784864,93957340785764],["v8::internal::Stats_Runtime_WasmTierDown(int, unsigned long*, v8::internal::Isolate*)",93957340786976,93957340787486],["v8::internal::Runtime_IsLiftoffFunction(int, unsigned long*, v8::internal::Isolate*)",93957340788144,93957340788561],["v8::internal::Runtime_FreezeWasmLazyCompilation(int, unsigned long*, v8::internal::Isolate*)",93957340789360,93957340789488],["v8::internal::(anonymous namespace)::WasmModuleOverride(v8::FunctionCallbackInfo<v8::Value> const&)",93957340790064,93957340790208],["v8::internal::(anonymous namespace)::WasmInstanceOverride(v8::FunctionCallbackInfo<v8::Value> const&)",93957340790592,93957340791185],["v8::internal::Stats_Runtime_WasmTraceExit(int, unsigned long*, v8::internal::Isolate*)",93957340771664,93957340772718],["v8::internal::Stats_Runtime_GetWasmRecoveredTrapCount(int, unsigned long*, v8::internal::Isolate*)",93957340776464,93957340777120],["v8::internal::Stats_Runtime_SerializeWasmModule(int, unsigned long*, v8::internal::Isolate*)",93957340779952,93957340780727],["v8::internal::Stats_Runtime_WasmGetNumberOfInstances(int, unsigned long*, v8::internal::Isolate*)",93957340782288,93957340782988],["v8::internal::Runtime_WasmTraceMemory(int, unsigned long*, v8::internal::Isolate*)",93957340784400,93957340784858],["v8::internal::Runtime_WasmTierUpFunction(int, unsigned long*, v8::internal::Isolate*)",93957340785776,93957340786100],["v8::internal::Runtime_WasmTierDown(int, unsigned long*, v8::internal::Isolate*)",93957340786832,93957340786973],["v8::internal::Runtime_WasmTierUp(int, unsigned long*, v8::internal::Isolate*)",93957340787488,93957340787629],["v8::internal::(anonymous namespace)::DebugWasmScopeIterator::GetEndLocation()",93957340766368,93957340766398],["v8::internal::Stats_Runtime_DisallowWasmCodegen(int, unsigned long*, v8::internal::Isolate*)",93957340773648,93957340774197],["v8::internal::Stats_Runtime_IsThreadInWasm(int, unsigned long*, v8::internal::Isolate*)",93957340775680,93957340776152],["v8::internal::Stats_Runtime_GetWasmExceptionId(int, unsigned long*, v8::internal::Isolate*)",93957340777664,93957340778558],["v8::internal::Runtime_SerializeWasmModule(int, unsigned long*, v8::internal::Isolate*)",93957340779552,93957340779945],["v8::internal::Runtime_DeserializeWasmModule(int, unsigned long*, v8::internal::Isolate*)",93957340780736,93957340781170],["v8::internal::Runtime_WasmGetNumberOfInstances(int, unsigned long*, v8::internal::Isolate*)",93957340782000,93957340782279],["v8::internal::Runtime_WasmNumCodeSpaces(int, unsigned long*, v8::internal::Isolate*)",93957340782992,93957340783496],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::IndexedQuery(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340763456,93957340763720],["v8::internal::Stats_Runtime_SetWasmInstantiateControls(int, unsigned long*, v8::internal::Isolate*)",93957340768560,93957340769122],["v8::internal::Stats_Runtime_IsAsmWasmCode(int, unsigned long*, v8::internal::Isolate*)",93957340772896,93957340773503],["v8::internal::Stats_Runtime_IsWasmCode(int, unsigned long*, v8::internal::Isolate*)",93957340774384,93957340775000],["v8::internal::Runtime_IsThreadInWasm(int, unsigned long*, v8::internal::Isolate*)",93957340775600,93957340775675],["v8::internal::Runtime_GetWasmRecoveredTrapCount(int, unsigned long*, v8::internal::Isolate*)",93957340776160,93957340776456],["v8::internal::Runtime_GetWasmExceptionId(int, unsigned long*, v8::internal::Isolate*)",93957340777120,93957340777649],["v8::internal::Runtime_GetWasmExceptionValues(int, unsigned long*, v8::internal::Isolate*)",93957340778560,93957340778858],["v8::base::Optional<unsigned int> v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::FindName<v8::Value>(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340760544,93957340760894],["v8::internal::(anonymous namespace)::DebugWasmScopeIterator::Done()",93957340765600,93957340765613],["v8::internal::Stats_Runtime_SetWasmCompileControls(int, unsigned long*, v8::internal::Isolate*)",93957340767184,93957340768381],["v8::internal::Stats_Runtime_WasmTraceEnter(int, unsigned long*, v8::internal::Isolate*)",93957340769872,93957340771027],["v8::internal::Runtime_IsAsmWasmCode(int, unsigned long*, v8::internal::Isolate*)",93957340772720,93957340772896],["v8::internal::Runtime_DisallowWasmCodegen(int, unsigned long*, v8::internal::Isolate*)",93957340773504,93957340773646],["v8::internal::Runtime_IsWasmCode(int, unsigned long*, v8::internal::Isolate*)",93957340774208,93957340774369],["v8::internal::Runtime_IsWasmTrapHandlerEnabled(int, unsigned long*, v8::internal::Isolate*)",93957340775008,93957340775073],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::NamedGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340758576,93957340758621],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::NamedQuery(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340762368,93957340762707],["v8::base::Optional<unsigned int> v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::FindName<v8::Value>(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340764048,93957340764398],["v8::internal::(anonymous namespace)::DebugWasmScopeIterator::GetObject()",93957340765696,93957340766331],["v8::internal::Runtime_SetWasmCompileControls(int, unsigned long*, v8::internal::Isolate*)",93957340766400,93957340767173],["v8::internal::Runtime_SetWasmInstantiateControls(int, unsigned long*, v8::internal::Isolate*)",93957340768384,93957340768550],["v8::internal::Runtime_WasmTraceEnter(int, unsigned long*, v8::internal::Isolate*)",93957340769136,93957340769867],["v8::internal::Runtime_WasmTraceExit(int, unsigned long*, v8::internal::Isolate*)",93957340771040,93957340771652],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::NamedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340755392,93957340755787],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::IndexedGetter(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340759424,93957340759700],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::CreateTemplate(v8::Isolate*)",93957340761936,93957340762308],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::NamedDescriptor(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340763120,93957340763165],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::IndexedDescriptor(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340763728,93957340764035],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::GetNameTable(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Isolate*)",93957340764400,93957340765600],["v8::internal::(anonymous namespace)::DebugWasmScopeIterator::Advance()",93957340765616,93957340765682],["v8::internal::(anonymous namespace)::DebugWasmScopeIterator::GetFunctionDebugName()",93957340766336,93957340766355],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::IndexedQuery(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340752128,93957340752376],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::IndexedDescriptor(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340756432,93957340756802],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::NamedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340758976,93957340759371],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::IndexedDescriptor(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340759984,93957340760291],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::GetNameTable(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Isolate*)",93957340760896,93957340761934],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::NamedGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340762320,93957340762365],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::NamedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340762720,93957340763115],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::FunctionsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)0, v8::internal::WasmInstanceObject>::IndexedGetter(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340763168,93957340763444],["v8::internal::(anonymous namespace)::ContextProxyPrototype::NamedGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340749616,93957340750216],["v8::internal::(anonymous namespace)::GetNameFromImportsAndExportsOrNull(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, v8::internal::wasm::ImportExportKindCode, unsigned int)",93957340754064,93957340754602],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::IndexedGetter(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340755840,93957340756173],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::GetNameTable(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Isolate*)",93957340757168,93957340758190],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::NamedQuery(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340758624,93957340758963],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::NamedDescriptor(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340759376,93957340759421],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::IndexedQuery(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340759712,93957340759976],["v8::internal::(anonymous namespace)::GlobalsProxy::Get(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>, unsigned int)",93957340760304,93957340760530],["v8::base::Optional<unsigned int> v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::FindName<v8::Value>(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340746192,93957340746542],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::NamedQuery(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340751008,93957340751347],["v8::base::Optional<unsigned int> v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::FindName<v8::Value>(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340752736,93957340753086],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::NamedGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340754992,93957340755037],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::NamedDescriptor(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340755792,93957340755837],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::IndexedQuery(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340756176,93957340756426],["v8::base::Optional<unsigned int> v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::FindName<v8::Value>(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340756816,93957340757166],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::GlobalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)1, v8::internal::WasmInstanceObject>::CreateTemplate(v8::Isolate*)",93957340758192,93957340758564],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::CreateTemplate(v8::Isolate*)",93957340744048,93957340744420],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::StackProxy, (v8::internal::(anonymous namespace)::DebugProxyId)6, v8::internal::FixedArray>::IndexedQuery(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340748496,93957340748741],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::CreateTemplate(v8::Isolate*)",93957340750576,93957340750948],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::NamedDescriptor(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340751760,93957340751805],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::IndexedDescriptor(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340752384,93957340752732],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::GetNameTable(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Isolate*)",93957340753088,93957340754049],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::CreateTemplate(v8::Isolate*)",93957340754608,93957340754980],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::TablesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)3, v8::internal::WasmInstanceObject>::NamedQuery(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340755040,93957340755379],["v8::internal::ArrayProxy::CreateTemplate(v8::Isolate*)",93957340740512,93957340740874],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::NamedDescriptor(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340745232,93957340745277],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::StackProxy, (v8::internal::(anonymous namespace)::DebugProxyId)6, v8::internal::FixedArray>::CreateTemplate(v8::Isolate*)",93957340747888,93957340748157],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::StackProxy, (v8::internal::(anonymous namespace)::DebugProxyId)6, v8::internal::FixedArray>::IndexedDescriptor(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340749104,93957340749461],["v8::internal::(anonymous namespace)::GetOrCreateInstanceProxyCache(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957340750224,93957340750570],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::NamedGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340750960,93957340751005],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::NamedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340751360,93957340751755],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::MemoriesProxy, (v8::internal::(anonymous namespace)::DebugProxyId)2, v8::internal::WasmInstanceObject>::IndexedGetter(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340751808,93957340752116],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::IndexedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340737760,93957340737805],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::ArrayProxy, (v8::internal::(anonymous namespace)::DebugProxyId)8, v8::internal::FixedArray>::IndexedDescriptor(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340741760,93957340742045],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::NamedQuery(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340744480,93957340744819],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::IndexedQuery(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340745600,93957340745838],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::GetNameTable(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Isolate*)",93957340746544,93957340747876],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::StackProxy, (v8::internal::(anonymous namespace)::DebugProxyId)6, v8::internal::FixedArray>::IndexedGetter(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340748160,93957340748483],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::StackProxy, (v8::internal::(anonymous namespace)::DebugProxyId)6, v8::internal::FixedArray>::IndexedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340748752,93957340749094],["v8::internal::(anonymous namespace)::ContextProxyPrototype::CreateTemplate(v8::Isolate*)",93957340749472,93957340749616],["v8::internal::(anonymous namespace)::GetOrCreateDebugProxyMap(v8::internal::Isolate*, v8::internal::(anonymous namespace)::DebugProxyId, v8::Local<v8::FunctionTemplate> (*)(v8::Isolate*), bool)",93957340735456,93957340735892],["v8::base::Optional<unsigned int> v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::FindName<v8::Value>(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340738576,93957340738926],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::ArrayProxy, (v8::internal::(anonymous namespace)::DebugProxyId)8, v8::internal::FixedArray>::IndexedQuery(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340741136,93957340741381],["v8::internal::(anonymous namespace)::LocalsProxy::Create(v8::internal::WasmFrame*)",93957340742336,93957340743283],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::NamedGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340744432,93957340744477],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::NamedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340744832,93957340745227],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::IndexedGetter(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340745280,93957340745596],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::(anonymous namespace)::LocalsProxy, (v8::internal::(anonymous namespace)::DebugProxyId)5, v8::internal::FixedArray>::IndexedDescriptor(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340745840,93957340746187],["v8::internal::GetWasmDebugProxy(v8::internal::WasmFrame*)",93957340730288,93957340730846],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::NamedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340736928,93957340737323],["v8::internal::Handle<v8::internal::FixedArray> v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::GetProvider<v8::Value>(v8::PropertyCallbackInfo<v8::Value> const&)",93957340738112,93957340738282],["v8::internal::StructProxy::GetName(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)",93957340739936,93957340740226],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::ArrayProxy, (v8::internal::(anonymous namespace)::DebugProxyId)8, v8::internal::FixedArray>::IndexedGetter(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340740880,93957340741127],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::ArrayProxy, (v8::internal::(anonymous namespace)::DebugProxyId)8, v8::internal::FixedArray>::IndexedEnumerator(v8::PropertyCallbackInfo<v8::Array> const&)",93957340741392,93957340741750],["v8::internal::ArrayProxy::Get(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)",93957340742048,93957340742331],["v8::internal::(anonymous namespace)::StackProxy::Create(v8::internal::WasmFrame*)",93957340743296,93957340744038],["v8::internal::wasm::(anonymous namespace)::AsmFroundType::CanBeInvokedWith(v8::internal::wasm::AsmType*, v8::internal::ZoneVector<v8::internal::wasm::AsmType*> const&)",93957340724944,93957340725143],["v8::internal::Handle<v8::internal::JSObject> v8::internal::(anonymous namespace)::GetOrCreateInstanceProxy<v8::internal::(anonymous namespace)::GlobalsProxy>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957340733280,93957340733767],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::NamedGetter(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340736288,93957340736570],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::IndexedGetter(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340737376,93957340737484],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::IndexedDescriptor(unsigned int, v8::PropertyCallbackInfo<v8::Value> const&)",93957340737808,93957340738111],["v8::internal::StructProxy::Get(v8::internal::Isolate*, v8::internal::Handle<v8::internal::FixedArray>, unsigned int)",93957340738288,93957340738571],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::GetNameTable(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Isolate*)",93957340738928,93957340739934],["v8::internal::(anonymous namespace)::GetNameOrDefault(v8::internal::Isolate*, v8::internal::MaybeHandle<v8::internal::String>, char const*, unsigned int)",93957340740240,93957340740511],["v8::internal::wasm::AsmOverloadedFunctionType::Name()",93957340723664,93957340723949],["v8::internal::(anonymous namespace)::GetOrCreateDebugMaps(v8::internal::Isolate*)",93957340726704,93957340727100],["v8::internal::GetWasmInstanceObjectInternalProperties(v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957340730928,93957340732781],["v8::internal::Handle<v8::internal::JSObject> v8::internal::(anonymous namespace)::GetOrCreateInstanceProxy<v8::internal::(anonymous namespace)::TablesProxy>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957340734272,93957340734759],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::CreateTemplate(v8::Isolate*)",93957340735904,93957340736276],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::NamedQuery(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340736576,93957340736915],["v8::internal::(anonymous namespace)::NamedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::NamedDescriptor(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&)",93957340737328,93957340737373],["v8::internal::(anonymous namespace)::IndexedDebugProxy<v8::internal::StructProxy, (v8::internal::(anonymous namespace)::DebugProxyId)7, v8::internal::FixedArray>::IndexedQuery(unsigned int, v8::PropertyCallbackInfo<v8::Integer> const&)",93957340737488,93957340737750],["v8::internal::wasm::AsmType::LoadType()",93957340722352,93957340722485],["v8::internal::wasm::AsmFunctionType::~AsmFunctionType()",93957340724784,93957340724825],["v8::internal::wasm::(anonymous namespace)::AsmMinMaxType::CanBeInvokedWith(v8::internal::wasm::AsmType*, v8::internal::ZoneVector<v8::internal::wasm::AsmType*> const&)",93957340725696,93957340725924],["v8::internal::StructProxy::Create(v8::internal::Isolate*, v8::internal::wasm::WasmValue const&, v8::internal::Handle<v8::internal::WasmModuleObject>)",93957340729024,93957340729572],["v8::internal::GetWasmScopeIterator(v8::internal::WasmFrame*)",93957340730848,93957340730919],["v8::internal::Handle<v8::internal::JSObject> v8::internal::(anonymous namespace)::GetOrCreateInstanceProxy<v8::internal::(anonymous namespace)::FunctionsProxy>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957340732784,93957340733268],["v8::internal::Handle<v8::internal::JSObject> v8::internal::(anonymous namespace)::GetOrCreateInstanceProxy<v8::internal::(anonymous namespace)::MemoriesProxy>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::WasmInstanceObject>)",93957340733776,93957340734263],["v8::internal::GetWasmModuleObjectInternalProperties(v8::internal::Handle<v8::internal::WasmModuleObject>)",93957340734768,93957340735444],["v8::internal::AsmJsScanner::Seek(unsigned long)",93957340718512,93957340718632],["v8::internal::wasm::AsmType::FroundType(v8::internal::Zone*)",93957340722960,93957340723023],["v8::internal::wasm::AsmOverloadedFunctionType::AddOverload(v8::internal::wasm::AsmType*)",93957340724080,93957340724739],["v8::internal::wasm::AsmOverloadedFunctionType::~AsmOverloadedFunctionType()",93957340724864,93957340724905],["v8::internal::wasm::(anonymous namespace)::AsmMinMaxType::Name()",93957340725152,93957340725683],["v8::internal::WasmValueObject::New(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>)",93957340725936,93957340726703],["v8::internal::WasmValueObject::New(v8::internal::Isolate*, v8::internal::wasm::WasmValue const&, v8::internal::Handle<v8::internal::WasmModuleObject>)",93957340727104,93957340729012],["v8::internal::ArrayProxy::Create(v8::internal::Isolate*, v8::internal::wasm::WasmValue const&, v8::internal::Handle<v8::internal::WasmModuleObject>)",93957340729584,93957340730286],["v8::internal::AsmJsScanner::AsmJsScanner(v8::internal::Utf16CharacterStream*)",93957340710816,93957340714820],["v8::internal::wasm::AsmType::Name()",93957340721104,93957340722047],["v8::internal::wasm::AsmCallableType::IsA(v8::internal::wasm::AsmType*)",93957340722640,93957340722662],["v8::internal::wasm::AsmFunctionType::IsA(v8::internal::wasm::AsmType*)",93957340723104,93957340723390],["v8::internal::wasm::AsmOverloadedFunctionType::CanBeInvokedWith(v8::internal::wasm::AsmType*, v8::internal::ZoneVector<v8::internal::wasm::AsmType*> const&)",93957340723952,93957340724071],["v8::internal::wasm::AsmFunctionType::~AsmFunctionType()",93957340724752,93957340724781],["v8::internal::wasm::AsmOverloadedFunctionType::~AsmOverloadedFunctionType()",93957340724832,93957340724861],["v8::internal::wasm::(anonymous namespace)::AsmFroundType::Name()",93957340724912,93957340724941],["v8::internal::wasm::AsmJsParser::BitwiseORExpression()",93957340705968,93957340706468],["v8::internal::AsmJsScanner::ConsumeIdentifier(unsigned int)",93957340716720,93957340717367],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>&&, std::__1::tuple<>&&)",93957340719856,93957340721083],["v8::internal::wasm::AsmType::IsA(v8::internal::wasm::AsmType*)",93957340722112,93957340722179],["v8::internal::wasm::AsmType::StoreType()",93957340722496,93957340722629],["v8::internal::wasm::AsmFunctionType::Name()",93957340722672,93957340722958],["v8::internal::wasm::AsmType::MinMaxType(v8::internal::Zone*, v8::internal::wasm::AsmType*, v8::internal::wasm::AsmType*)",93957340723024,93957340723097],["v8::internal::wasm::AsmFunctionType::CanBeInvokedWith(v8::internal::wasm::AsmType*, v8::internal::ZoneVector<v8::internal::wasm::AsmType*> const&)",93957340723392,93957340723662],["v8::internal::wasm::AsmJsParser::UnaryExpression()",93957340699536,93957340700759],["void std::__1::vector<v8::internal::ZoneVector<int>, v8::internal::ZoneAllocator<v8::internal::ZoneVector<int> > >::__emplace_back_slow_path<v8::internal::ZoneVector<int> >(v8::internal::ZoneVector<int>&&)",93957340707744,93957340708161],["v8::internal::AsmJsScanner::ConsumeString(unsigned int)",93957340715600,93957340716228],["v8::internal::AsmJsScanner::Rewind()",93957340718160,93957340718244],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int> > >::__emplace_unique_key_args<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&>, std::__1::tuple<> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::piecewise_construct_t const&, std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&>&&, std::__1::tuple<>&&)",93957340718640,93957340719855],["v8::internal::wasm::AsmType::AsCallableType()",93957340721088,93957340721104],["v8::internal::wasm::AsmType::IsExactly(v8::internal::wasm::AsmType*, v8::internal::wasm::AsmType*)",93957340722048,93957340722099],["v8::internal::wasm::AsmType::ElementSizeInBytes()",93957340722192,93957340722337],["v8::internal::wasm::AsmJsParser::CallExpression()",93957340689008,93957340689320],["v8::internal::wasm::AsmJsParser::RelationalExpression()",93957340703600,93957340704794],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::rehash(unsigned long)",93957340706592,93957340706963],["std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::find<v8::internal::Signature<v8::internal::wasm::ValueType> >(v8::internal::Signature<v8::internal::wasm::ValueType> const&)",93957340708800,93957340709520],["v8::internal::AsmJsScanner::Next()",93957340714832,93957340715594],["v8::internal::AsmJsScanner::ConsumeCompareOrShift(unsigned int)",93957340716240,93957340716707],["v8::internal::AsmJsScanner::ConsumeNumber(unsigned int)",93957340717376,93957340718156],["v8::internal::AsmJsScanner::ResetLocals()",93957340718256,93957340718505],["v8::internal::wasm::AsmJsParser::DoStatement()",93957340683696,93957340684818],["v8::internal::wasm::AsmJsParser::PeekCall()",93957340690288,93957340690437],["v8::internal::wasm::AsmJsParser::AdditiveExpression()",93957340702128,93957340702848],["v8::internal::wasm::AsmJsParser::BitwiseANDExpression()",93957340705456,93957340705697],["v8::internal::wasm::AsmFunctionType* v8::internal::Zone::New<v8::internal::wasm::AsmFunctionType, v8::internal::Zone*&, v8::internal::wasm::AsmType*&>(v8::internal::Zone*&, v8::internal::wasm::AsmType*&)",93957340706480,93957340706578],["std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::__rehash(unsigned long)",93957340706976,93957340707740],["void std::__1::vector<v8::internal::wasm::AsmType*, v8::internal::ZoneAllocator<v8::internal::wasm::AsmType*> >::__push_back_slow_path<v8::internal::wasm::AsmType*>(v8::internal::wasm::AsmType*&&)",93957340708176,93957340708798],["std::__1::pair<std::__1::__hash_iterator<std::__1::__hash_node<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, void*>*>, bool> std::__1::__hash_table<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::__unordered_map_hasher<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, std::__1::__unordered_map_equal<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int>, std::__1::equal_to<v8::internal::Signature<v8::internal::wasm::ValueType> >, v8::base::hash<v8::internal::Signature<v8::internal::wasm::ValueType> >, true>, v8::internal::ZoneAllocator<std::__1::__hash_value_type<v8::internal::Signature<v8::internal::wasm::ValueType>, unsigned int> > >::__emplace_unique_key_args<v8::internal::Signature<v8::internal::wasm::ValueType>, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::Signature<v8::internal::wasm::ValueType> const&>, std::__1::tuple<> >(v8::internal::Signature<v8::internal::wasm::ValueType> const&, std::__1::piecewise_construct_t const&, std::__1::tuple<v8::internal::Signature<v8::internal::wasm::ValueType> const&>&&, std::__1::tuple<>&&)",93957340709520,93957340710802],["v8::internal::wasm::AsmJsParser::IfStatement()",93957340678992,93957340679935],["v8::internal::wasm::AsmJsParser::ValidateDefault()",93957340687424,93957340687571],["v8::internal::wasm::AsmJsParser::MemberExpression()",93957340689680,93957340690112],["v8::internal::wasm::AsmJsParser::ValidateHeapAccess()",93957340698384,93957340698969],["v8::internal::wasm::AsmJsParser::MultiplicativeExpression()",93957340700768,93957340702125],["v8::internal::wasm::AsmJsParser::ShiftExpression()",93957340702848,93957340703591],["v8::internal::wasm::AsmJsParser::EqualityExpression()",93957340704800,93957340705444],["v8::internal::wasm::AsmJsParser::BitwiseXORExpression()",93957340705712,93957340705953],["v8::internal::wasm::AsmJsParser::ValidateModuleVarImport(v8::internal::wasm::AsmJsParser::VarInfo*, bool)",93957340667424,93957340668614],["v8::internal::wasm::AsmJsParser::SwitchStatement()",93957340680976,93957340682577],["v8::internal::wasm::AsmJsParser::GatherCases(v8::internal::ZoneVector<int>*)",93957340686224,93957340687136],["v8::internal::wasm::AsmJsParser::NumericLiteral()",93957340688608,93957340688783],["v8::internal::wasm::AsmJsParser::ValidateFloatCoercion()",93957340689328,93957340689679],["v8::internal::wasm::AsmJsParser::ParenthesizedExpression()",93957340690112,93957340690274],["v8::internal::wasm::AsmJsParser::ValidateCall()",93957340690448,93957340698378],["v8::internal::wasm::AsmJsParser::ConditionalExpression()",93957340698976,93957340699535],["v8::internal::wasm::AsmJsParser::ValidateModuleParameters()",93957340658992,93957340659305],["v8::internal::wasm::AsmJsParser::ValidateStatement()",93957340677504,93957340677913],["v8::internal::wasm::AsmJsParser::BreakStatement()",93957340680336,93957340680672],["v8::internal::wasm::AsmJsParser::Expression(v8::internal::wasm::AsmType*)",93957340682976,93957340683281],["v8::internal::wasm::AsmJsParser::ForStatement()",93957340684832,93957340686210],["v8::internal::wasm::AsmJsParser::ValidateCase()",93957340687136,93957340687422],["v8::internal::wasm::AsmJsParser::AssignmentExpression()",93957340687584,93957340688608],["v8::internal::wasm::AsmJsParser::Identifier()",93957340688784,93957340688999],["v8::internal::wasm::AsmJsParser::Run()",93957340655840,93957340655871],["v8::internal::wasm::AsmJsParser::ValidateExport()",93957340662736,93957340663386],["v8::internal::wasm::AsmJsParser::ValidateFunctionParams(v8::internal::ZoneVector<v8::internal::wasm::AsmType*>*)",93957340669440,93957340671294],["std::__1::vector<v8::internal::wasm::ValueType, v8::internal::ZoneAllocator<v8::internal::wasm::ValueType> >::push_back(v8::internal::wasm::ValueType const&)",93957340678048,93957340678707],["v8::internal::wasm::AsmJsParser::ReturnStatement()",93957340679936,93957340680332],["v8::internal::wasm::AsmJsParser::ContinueStatement()",93957340680672,93957340680964],["v8::internal::wasm::AsmJsParser::ExpressionStatement()",93957340682592,93957340682964],["v8::internal::wasm::AsmJsParser::WhileStatement()",93957340683296,93957340683686],["v8::internal::Isolate::int32_array_fun()",93957340648080,93957340648194],["v8::internal::wasm::WasmInitExpr::~WasmInitExpr()",93957340657424,93957340657476],["v8::internal::wasm::AsmJsParser::ValidateFunction()",93957340659536,93957340662162],["v8::internal::wasm::AsmJsParser::ValidateModuleVarNewStdlib(v8::internal::wasm::AsmJsParser::VarInfo*)",93957340664544,93957340664905],["v8::internal::wasm::AsmJsParser::ValidateModuleVarFromGlobal(v8::internal::wasm::AsmJsParser::VarInfo*, bool)",93957340668624,93957340669434],["v8::internal::wasm::AsmJsParser::ValidateFunctionLocals(unsigned long, v8::internal::ZoneVector<v8::internal::wasm::ValueType>*)",93957340671296,93957340677493],["v8::internal::wasm::AsmJsParser::CachedVector<int>::~CachedVector()",93957340677920,93957340678043],["v8::internal::wasm::AsmJsParser::Block()",93957340678720,93957340678984],["v8::internal::AsmJsCompilationJob::~AsmJsCompilationJob()",93957340646512,93957340646573],["v8::internal::wasm::AsmJsParser::AsmJsParser(v8::internal::Zone*, unsigned long, v8::internal::Utf16CharacterStream*)",93957340648592,93957340649002],["v8::internal::wasm::AsmJsParser::GetVarInfo(int)",93957340656784,93957340657251],["v8::internal::wasm::AsmJsParser::Begin(int)",93957340657568,93957340658270],["v8::internal::wasm::AsmJsParser::ValidateModuleVars()",93957340659312,93957340659535],["v8::internal::wasm::AsmJsParser::ValidateFunctionTable()",93957340662176,93957340662721],["v8::internal::wasm::AsmJsParser::ValidateModuleVar(bool)",93957340663392,93957340664529],["v8::internal::wasm::AsmJsParser::ValidateModuleVarStdlib(v8::internal::wasm::AsmJsParser::VarInfo*)",93957340664912,93957340667411],["v8::internal::Zone::NewExpand(unsigned long)",93957340634544,93957340634828],["v8::internal::Isolate::int8_array_fun()",93957340647568,93957340647682],["v8::internal::Isolate::float32_array_fun()",93957340648336,93957340648450],["v8::internal::wasm::AsmJsParser::ConvertSignature(v8::internal::wasm::AsmType*, v8::internal::ZoneVector<v8::internal::wasm::AsmType*> const&)",93957340655296,93957340655759],["v8::internal::wasm::AsmJsParser::ValidateModule()",93957340655872,93957340656775],["v8::internal::wasm::AsmJsParser::DeclareGlobal(v8::internal::wasm::AsmJsParser::VarInfo*, bool, v8::internal::wasm::AsmType*, v8::internal::wasm::ValueType, v8::internal::wasm::WasmInitExpr)",93957340657264,93957340657416],["v8::internal::wasm::AsmJsParser::SkipSemicolon()",93957340657488,93957340657558],["v8::internal::wasm::AsmJsParser::BareBegin(v8::internal::wasm::AsmJsParser::BlockKind, int)",93957340658272,93957340658982],["v8::internal::WebSnapshotDeserializer::ReadValue(v8::internal::ValueDeserializer&, v8::internal::Handle<v8::internal::Object>&, v8::internal::Representation&)",93957340633520,93957340633919],["v8::internal::AsmJsCompilationJob::FinalizeJobImpl(v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Isolate*)",93957340636080,93957340636865],["v8::internal::(anonymous namespace)::Report(v8::internal::Handle<v8::internal::Script>, int, v8::internal::Vector<char const>, v8::internal::MessageTemplate, v8::Isolate::MessageErrorLevel)",93957340646896,93957340647022],["v8::internal::Isolate::int16_array_fun()",93957340647824,93957340647938],["v8::internal::Isolate::uint32_array_fun()",93957340648208,93957340648322],["v8::internal::Isolate::float64_array_fun()",93957340648464,93957340648578],["v8::internal::wasm::AsmJsParser::InitializeStdlibTypes()",93957340649008,93957340655284],["v8::internal::Signature<v8::internal::wasm::ValueType>::Builder::Build()",93957340655760,93957340655831],["v8::internal::WebSnapshotDeserializer::DeserializeStrings(unsigned char const*, unsigned long&, unsigned long)",93957340625088,93957340625675],["v8::internal::AccountingAllocator::AllocateSegment(unsigned long, bool)",93957340634144,93957340634227],["v8::internal::AsmJsCompilationJob::ExecuteJobImpl()",93957340635024,93957340635704],["v8::internal::AsmJs::InstantiateAsmWasm(v8::internal::Isolate*, v8::internal::Handle<v8::internal::SharedFunctionInfo>, v8::internal::Handle<v8::internal::AsmWasmData>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::JSArrayBuffer>)",93957340637088,93957340646449],["v8::internal::AsmJsScanner::~AsmJsScanner()",93957340646576,93957340646891],["v8::internal::(anonymous namespace)::StdlibMathMember(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Name>)",93957340647024,93957340647564],["v8::internal::Isolate::uint8_array_fun()",93957340647696,93957340647810],["v8::internal::Isolate::uint16_array_fun()",93957340647952,93957340648066],["v8::internal::WebSnapshotSerializer::InsertIntoIndexMap(v8::internal::ObjectCacheIndexMap&, v8::internal::Handle<v8::internal::HeapObject>, unsigned int&)",93957340621312,93957340621488],["v8::internal::WebSnapshotDeserializer::DeserializeObjects(unsigned char const*, unsigned long&, unsigned long)",93957340631024,93957340632400],["v8::internal::AccountingAllocator::~AccountingAllocator()",93957340633952,93957340634037],["v8::internal::Zone::Zone(v8::internal::AccountingAllocator*, char const*, bool)",93957340634304,93957340634375],["v8::internal::Zone::ReleaseMemory()",93957340634832,93957340635017],["v8::internal::wasm::AsmJsParser::~AsmJsParser()",93957340635712,93957340636079],["v8::internal::AsmJs::NewCompilationJob(v8::internal::ParseInfo*, v8::internal::FunctionLiteral*, v8::internal::AccountingAllocator*)",93957340636880,93957340637082],["v8::internal::AsmJsCompilationJob::~AsmJsCompilationJob()",93957340646464,93957340646507],["v8::internal::PassesFilter(v8::internal::Vector<char const>, v8::internal::Vector<char const>)",93957340617952,93957340618208],["v8::internal::WebSnapshotSerializer::SerializeContext(v8::internal::Handle<v8::internal::Context>, unsigned int&)",93957340623184,93957340623935],["v8::internal::WebSnapshotDeserializer::DeserializeContexts(unsigned char const*, unsigned long&, unsigned long)",93957340627648,93957340628893],["v8::internal::WebSnapshotDeserializer::ReadString(v8::internal::ValueDeserializer&, bool)",93957340632976,93957340633245],["v8::internal::AccountingAllocator::AccountingAllocator()",93957340633920,93957340633947],["v8::internal::AccountingAllocator::~AccountingAllocator()",93957340634048,93957340634136],["v8::internal::AccountingAllocator::ReturnSegment(v8::internal::Segment*, bool)",93957340634240,93957340634290],["v8::internal::Zone::~Zone()",93957340634384,93957340634540],["v8::internal::VSNPrintF(v8::internal::Vector<char>, char const*, __va_list_tag*)",93957340616848,93957340616858],["v8::internal::WebSnapshotSerializer::TakeSnapshot(v8::Local<v8::Context>, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, v8::internal::WebSnapshotData&)",93957340619088,93957340619654],["v8::internal::WebSnapshotSerializer::SerializeMap(v8::internal::Handle<v8::internal::Map>, unsigned int&)",93957340621648,93957340622538],["v8::internal::WebSnapshotDeserializer::WebSnapshotDeserializer(v8::Isolate*)",93957340624464,93957340624508],["v8::internal::WebSnapshotDeserializer::DeserializeMaps(unsigned char const*, unsigned long&, unsigned long)",93957340625680,93957340627636],["v8::internal::WebSnapshotDeserializer::DeserializeFunctions(unsigned char const*, unsigned long&, unsigned long)",93957340628896,93957340631010],["v8::internal::WebSnapshotDeserializer::DeserializeExports(unsigned char const*, unsigned long&, unsigned long)",93957340632400,93957340632975],["v8::internal::TorqueGeneratedScopeInfo<v8::internal::ScopeInfo, v8::internal::HeapObject>::set_outer_scope_info(v8::internal::HeapObject, v8::internal::WriteBarrierMode)",93957340633248,93957340633518],["v8::internal::SimpleStringBuilder::Finalize()",93957340616064,93957340616162],["v8::internal::WriteChars(char const*, char const*, int, bool)",93957340617504,93957340617656],["v8::internal::WebSnapshotSerializer::WebSnapshotSerializer(v8::Isolate*)",93957340618336,93957340618803],["v8::internal::WebSnapshotSerializer::WriteSnapshot(unsigned char*&, unsigned long&)",93957340620000,93957340620686],["v8::internal::WebSnapshotSerializer::SerializeString(v8::internal::Handle<v8::internal::String>, unsigned int&)",93957340621488,93957340621641],["v8::internal::WebSnapshotSerializer::SerializeFunction(v8::internal::Handle<v8::internal::JSFunction>, unsigned int&)",93957340622544,93957340623181],["v8::internal::WebSnapshotSerializer::WriteValue(v8::internal::Handle<v8::internal::Object>, v8::internal::ValueSerializer&)",93957340623936,93957340624457],["v8::internal::WebSnapshotDeserializer::UseWebSnapshot(unsigned char const*, unsigned long)",93957340624512,93957340625074],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::AsUC32 const&)",93957340615152,93957340615325],["v8::internal::PrintF(char const*, ...)",93957340616256,93957340616395],["v8::internal::ReadFile(_IO_FILE*, bool*, bool)",93957340616880,93957340617080],["v8::internal::DoubleToBoolean(double)",93957340617856,93957340617930],["v8::internal::Version::GetString(v8::internal::Vector<char>)",93957340618208,93957340618331],["v8::internal::WebSnapshotSerializer::~WebSnapshotSerializer()",93957340618816,93957340619080],["v8::internal::WebSnapshotSerializer::SerializeExport(v8::internal::Handle<v8::internal::JSObject>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)",93957340619664,93957340619992],["v8::internal::WebSnapshotSerializer::SerializePendingObject(v8::internal::Handle<v8::internal::JSObject>)",93957340620688,93957340621300],["v8::internal::OFStreamBase::overflow(int)",93957340614128,93957340614158],["v8::internal::SimpleStringBuilder::AddString(char const*)",93957340615616,93957340615676],["v8::internal::hash_value(v8::internal::BytecodeOffset)",93957340616224,93957340616234],["v8::internal::PrintIsolate(void*, char const*, ...)",93957340616544,93957340616718],["v8::internal::StrNCpy(v8::internal::Vector<char>, char const*, unsigned long)",93957340616864,93957340616874],["v8::internal::(anonymous namespace)::ReadCharsFromFile(_IO_FILE*, bool*, bool, char const*)",93957340617088,93957340617501],["v8::internal::StringBuilder::AddFormatted(char const*, ...)",93957340617664,93957340617843],["v8::base::Stack::GetCurrentStackPosition()",93957340617936,93957340617945],["v8::internal::IdentityMapBase::FindOrInsertEntry(unsigned long)",93957340613152,93957340613247],["v8::internal::StdoutStream::GetStdoutMutex()",93957340614512,93957340614584],["v8::internal::OFStreamBase::~OFStreamBase()",93957340615472,93957340615500],["v8::internal::SimpleStringBuilder::AddPadding(char, int)",93957340615728,93957340615825],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::FeedbackSlot)",93957340616176,93957340616217],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::BytecodeOffset)",93957340616240,93957340616250],["v8::internal::PrintF(_IO_FILE*, char const*, ...)",93957340616400,93957340616532],["v8::internal::SNPrintF(v8::internal::Vector<char>, char const*, ...)",93957340616720,93957340616845],["v8::internal::IdentityMapBase::Clear()",93957340610736,93957340610824],["v8::internal::IdentityMapBase::KeyAtIndex(int) const",93957340613888,93957340613932],["v8::internal::OFStream::OFStream(_IO_FILE*)",93957340614192,93957340614348],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::AsEscapedUC16ForJSON const&)",93957340614768,93957340615002],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::AsHex const&)",93957340615328,93957340615462],["v8::internal::SimpleStringBuilder::SimpleStringBuilder(int)",93957340615504,93957340615610],["v8::internal::SimpleStringBuilder::AddSubstring(char const*, int)",93957340615680,93957340615717],["v8::internal::SimpleStringBuilder::AddDecimalInteger(int)",93957340615840,93957340616056],["v8::internal::VirtualMemory::VirtualMemory(v8::PageAllocator*, unsigned long, void*, unsigned long, v8::internal::VirtualMemory::JitPermission)",93957340610064,93957340610190],["v8::internal::IdentityMapBase::DeleteIndex(int, unsigned long*)",93957340611504,93957340611844],["v8::internal::IdentityMapBase::FindEntry(unsigned long) const",93957340613696,93957340613776],["v8::internal::IdentityMapBase::NextIndex(int) const",93957340613984,93957340614089],["v8::internal::OFStreamBase::xsputn(char const*, long)",93957340614160,93957340614185],["v8::internal::OFStream::OFStream(_IO_FILE*)",93957340614352,93957340614502],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::AsReversiblyEscapedUC16 const&)",93957340614592,93957340614755],["v8::internal::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, v8::internal::AsUC16 const&)",93957340615008,93957340615150],["v8::internal::AlignedAlloc(unsigned long, unsigned long)",93957340609456,93957340609626],["v8::internal::VirtualMemory::SetPermissions(unsigned long, unsigned long, v8::PageAllocator::Permission)",93957340610448,93957340610510],["v8::internal::IdentityMapBase::DisableIteration()",93957340610880,93957340610917],["v8::internal::IdentityMapBase::Rehash()",93957340612256,93957340612795],["v8::internal::IdentityMapBase::InsertEntry(unsigned long)",93957340613248,93957340613681],["v8::internal::IdentityMapBase::DeleteEntry(unsigned long, unsigned long*)",93957340613776,93957340613875],["v8::internal::IdentityMapBase::EntryAtIndex(int) const",93957340613936,93957340613980],["v8::internal::OFStreamBase::sync()",93957340614096,93957340614113],["v8::internal::StrDup(char const*)",93957340609312,93957340609443],["v8::internal::GetRandomMmapAddr()",93957340609744,93957340609763],["v8::internal::VirtualMemory::Free()",93957340610304,93957340610410],["v8::internal::VirtualMemory::FreeReadOnly()",93957340610624,93957340610716],["v8::internal::IdentityMapBase::EnableIteration()",93957340610832,93957340610869],["v8::internal::IdentityMapBase::Resize(int)",93957340610928,93957340611489],["v8::internal::IdentityMapBase::Lookup(unsigned long) const",93957340611856,93957340612241],["v8::internal::IdentityMapBase::LookupOrInsert(unsigned long)",93957340612800,93957340613146],["v8::internal::CommitPageSize()",93957340609664,93957340609683],["v8::internal::SetPermissions(v8::PageAllocator*, void*, unsigned long, v8::PageAllocator::Permission)",93957340610016,93957340610030],["v8::internal::VirtualMemory::~VirtualMemory()",93957340610192,93957340610303],["v8::internal::VirtualMemory::Reset()",93957340610416,93957340610436],["v8::internal::VirtualMemory::Release(unsigned long)",93957340610512,93957340610609],["v8::internal::IdentityMapBase::~IdentityMapBase()",93957340610720,93957340610736],["v8::internal::AllocatePageSize()",93957340609632,93957340609651],["v8::internal::SetRandomMmapSeed(long)",93957340609696,93957340609731],["v8::internal::AllocatePages(v8::PageAllocator*, void*, unsigned long, unsigned long, v8::PageAllocator::Permission)",93957340609776,93957340610016],["v8_inspector::String16Builder::String16Builder()",93957340610032,93957340610052]]
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor-test.log.symbols.json b/deps/v8/test/mjsunit/tools/tickprocessor-test.log.symbols.json
new file mode 100644
index 0000000000..eccc52c346
--- /dev/null
+++ b/deps/v8/test/mjsunit/tools/tickprocessor-test.log.symbols.json
@@ -0,0 +1,7 @@
+[
+ ["exp",4158389888,4158390051],
+ ["fegetexcept",4158374368,4158374389],
+ ["v8::internal::Runtime_Math_exp(v8::internal::Arguments)",135412512,135412608],
+ ["v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)",135235584,135237008],
+ ["v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)",135234064,135235584]
+] \ No newline at end of file
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor-test.separate-baseline-handlers b/deps/v8/test/mjsunit/tools/tickprocessor-test.separate-baseline-handlers
new file mode 100644
index 0000000000..73d005a058
--- /dev/null
+++ b/deps/v8/test/mjsunit/tools/tickprocessor-test.separate-baseline-handlers
@@ -0,0 +1,61 @@
+Statistical profiling result from v8.log, (13 ticks, 2 unaccounted, 0 excluded).
+
+ [Shared libraries]:
+ ticks total nonlib name
+ 3 23.1% /lib32/libm-2.7.so
+ 1 7.7% ffffe000-fffff000
+
+ [JavaScript]:
+ ticks total nonlib name
+
+ [C++]:
+ ticks total nonlib name
+ 2 15.4% 22.2% v8::internal::Runtime_Math_exp(v8::internal::Arguments)
+ 1 7.7% 11.1% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)
+ 1 7.7% 11.1% v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)
+ 1 7.7% 11.1% exp
+
+ [Summary]:
+ ticks total nonlib name
+ 0 0.0% 0.0% JavaScript
+ 5 38.5% 55.6% C++
+ 0 0.0% 0.0% GC
+ 4 30.8% Shared libraries
+ 2 15.4% Unaccounted
+
+ [C++ entry points]:
+ ticks cpp total name
+ 2 40.0% 15.4% v8::internal::Runtime_Math_exp(v8::internal::Arguments)
+ 1 20.0% 7.7% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)
+ 1 20.0% 7.7% v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)
+ 1 20.0% 7.7% exp
+
+ [Bottom up (heavy) profile]:
+ Note: percentage shows a share of a particular caller in the total
+ amount of its parent calls.
+ Callers occupying less than 1.0% are not shown.
+
+ ticks parent name
+ 3 23.1% /lib32/libm-2.7.so
+ 3 100.0% LazyCompile: exp native math.js:41
+ 3 100.0% Script: exp.js
+
+ 2 15.4% v8::internal::Runtime_Math_exp(v8::internal::Arguments)
+ 2 100.0% LazyCompile: exp native math.js:41
+ 2 100.0% Script: exp.js
+
+ 2 15.4% UNKNOWN
+ 1 50.0% LazyCompile: exp native math.js:41
+ 1 100.0% Script: exp.js
+
+ 1 7.7% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)
+ 1 100.0% Script: exp.js
+
+ 1 7.7% v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)
+ 1 100.0% Script: exp.js
+
+ 1 7.7% ffffe000-fffff000
+
+ 1 7.7% exp
+ 1 100.0% LazyCompile: exp native math.js:41
+ 1 100.0% Script: exp.js
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor-test.separate-bytecodes b/deps/v8/test/mjsunit/tools/tickprocessor-test.separate-bytecodes
new file mode 100644
index 0000000000..73d005a058
--- /dev/null
+++ b/deps/v8/test/mjsunit/tools/tickprocessor-test.separate-bytecodes
@@ -0,0 +1,61 @@
+Statistical profiling result from v8.log, (13 ticks, 2 unaccounted, 0 excluded).
+
+ [Shared libraries]:
+ ticks total nonlib name
+ 3 23.1% /lib32/libm-2.7.so
+ 1 7.7% ffffe000-fffff000
+
+ [JavaScript]:
+ ticks total nonlib name
+
+ [C++]:
+ ticks total nonlib name
+ 2 15.4% 22.2% v8::internal::Runtime_Math_exp(v8::internal::Arguments)
+ 1 7.7% 11.1% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)
+ 1 7.7% 11.1% v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)
+ 1 7.7% 11.1% exp
+
+ [Summary]:
+ ticks total nonlib name
+ 0 0.0% 0.0% JavaScript
+ 5 38.5% 55.6% C++
+ 0 0.0% 0.0% GC
+ 4 30.8% Shared libraries
+ 2 15.4% Unaccounted
+
+ [C++ entry points]:
+ ticks cpp total name
+ 2 40.0% 15.4% v8::internal::Runtime_Math_exp(v8::internal::Arguments)
+ 1 20.0% 7.7% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)
+ 1 20.0% 7.7% v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)
+ 1 20.0% 7.7% exp
+
+ [Bottom up (heavy) profile]:
+ Note: percentage shows a share of a particular caller in the total
+ amount of its parent calls.
+ Callers occupying less than 1.0% are not shown.
+
+ ticks parent name
+ 3 23.1% /lib32/libm-2.7.so
+ 3 100.0% LazyCompile: exp native math.js:41
+ 3 100.0% Script: exp.js
+
+ 2 15.4% v8::internal::Runtime_Math_exp(v8::internal::Arguments)
+ 2 100.0% LazyCompile: exp native math.js:41
+ 2 100.0% Script: exp.js
+
+ 2 15.4% UNKNOWN
+ 1 50.0% LazyCompile: exp native math.js:41
+ 1 100.0% Script: exp.js
+
+ 1 7.7% v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)
+ 1 100.0% Script: exp.js
+
+ 1 7.7% v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)
+ 1 100.0% Script: exp.js
+
+ 1 7.7% ffffe000-fffff000
+
+ 1 7.7% exp
+ 1 100.0% LazyCompile: exp native math.js:41
+ 1 100.0% Script: exp.js
diff --git a/deps/v8/test/mjsunit/tools/tickprocessor.mjs b/deps/v8/test/mjsunit/tools/tickprocessor.mjs
index 5ba23f51fc..29dc82dbaf 100644
--- a/deps/v8/test/mjsunit/tools/tickprocessor.mjs
+++ b/deps/v8/test/mjsunit/tools/tickprocessor.mjs
@@ -26,12 +26,19 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Resources: test/mjsunit/tools/tickprocessor-test-func-info.log
+// Resources: test/mjsunit/tools/tickprocessor-test-func-info.log.symbols.json
+// Resources: test/mjsunit/tools/tickprocessor-test-large.default
+// Resources: test/mjsunit/tools/tickprocessor-test-large.log
+// Resources: test/mjsunit/tools/tickprocessor-test-large.log.symbols.json
// Resources: test/mjsunit/tools/tickprocessor-test.default
// Resources: test/mjsunit/tools/tickprocessor-test.func-info
// Resources: test/mjsunit/tools/tickprocessor-test.gc-state
// Resources: test/mjsunit/tools/tickprocessor-test.ignore-unknown
// Resources: test/mjsunit/tools/tickprocessor-test.log
+// Resources: test/mjsunit/tools/tickprocessor-test.log.symbols.json
// Resources: test/mjsunit/tools/tickprocessor-test.only-summary
+// Resources: test/mjsunit/tools/tickprocessor-test.separate-baseline-handlers
+// Resources: test/mjsunit/tools/tickprocessor-test.separate-bytecodes
// Resources: test/mjsunit/tools/tickprocessor-test.separate-ic
// Env: TEST_FILE_NAME
@@ -353,87 +360,83 @@ import {
})();
-function CppEntriesProviderMock() {
-};
-
-
-CppEntriesProviderMock.prototype.parseVmSymbols = function(
- name, startAddr, endAddr, slideAddr, symbolAdder) {
- var symbols = {
- 'shell':
- [['v8::internal::JSObject::LookupOwnRealNamedProperty(v8::internal::String*, v8::internal::LookupResult*)', 0x080f8800, 0x080f8d90],
- ['v8::internal::HashTable<v8::internal::StringDictionaryShape, v8::internal::String*>::FindEntry(v8::internal::String*)', 0x080f8210, 0x080f8800],
- ['v8::internal::Runtime_Math_exp(v8::internal::Arguments)', 0x08123b20, 0x08123b80]],
- '/lib32/libm-2.7.so':
- [['exp', startAddr + 0x00009e80, startAddr + 0x00009e80 + 0xa3],
- ['fegetexcept', startAddr + 0x000061e0, startAddr + 0x000061e0 + 0x15]],
- 'ffffe000-fffff000': []};
- assertTrue(name in symbols);
- var syms = symbols[name];
- for (var i = 0; i < syms.length; ++i) {
- symbolAdder.apply(null, syms[i]);
+class CppEntriesProviderMock {
+ constructor(filename) {
+ this.isLoaded = false;
+ this.symbols = JSON.parse(readFile(filename));
}
-};
+ parseVmSymbols(name, startAddr, endAddr, slideAddr, symbolAdder) {
+ if (this.isLoaded) return;
+ this.isLoaded = true;
+ for (let symbol of this.symbols) {
+ symbolAdder.apply(null, symbol);
+ }
+ }
+}
-function PrintMonitor(outputOrFileName) {
- this.expectedOut = outputOrFileName;
- this.outputFile = undefined;
- if (typeof outputOrFileName == 'string') {
- this.expectedOut = this.loadExpectedOutput(outputOrFileName)
- this.outputFile = outputOrFileName;
- }
- var expectedOut = this.expectedOut;
- var outputPos = 0;
- var diffs = this.diffs = [];
- var realOut = this.realOut = [];
- var unexpectedOut = this.unexpectedOut = null;
-
- this.oldPrint = print;
- print = function(str) {
- var strSplit = str.split('\n');
- for (var i = 0; i < strSplit.length; ++i) {
- var s = strSplit[i];
- realOut.push(s);
- if (outputPos < expectedOut.length) {
- if (expectedOut[outputPos] != s) {
- diffs.push('line ' + outputPos + ': expected <' +
- expectedOut[outputPos] + '> found <' + s + '>\n');
+class PrintMonitor {
+ constructor(outputOrFileName) {
+ this.expectedOut = outputOrFileName;
+ this.outputFile = undefined;
+ if (typeof outputOrFileName == 'string') {
+ this.expectedOut = this.loadExpectedOutput(outputOrFileName)
+ this.outputFile = outputOrFileName;
+ }
+ var expectedOut = this.expectedOut;
+ var outputPos = 0;
+ var diffs = this.diffs = [];
+ var realOut = this.realOut = [];
+ var unexpectedOut = this.unexpectedOut = null;
+
+ this.oldPrint = print;
+ print = function(str) {
+ var strSplit = str.split('\n');
+ for (var i = 0; i < strSplit.length; ++i) {
+ var s = strSplit[i];
+ realOut.push(s);
+ if (outputPos < expectedOut.length) {
+ if (expectedOut[outputPos] != s) {
+ diffs.push('line ' + outputPos + ': expected <' +
+ expectedOut[outputPos] + '> found <' + s + '>\n');
+ }
+ outputPos++;
+ } else {
+ unexpectedOut = true;
}
- outputPos++;
- } else {
- unexpectedOut = true;
}
- }
- };
-};
-
-
-PrintMonitor.prototype.loadExpectedOutput = function(fileName) {
- var output = readFile(fileName);
- return output.split('\n');
-};
+ };
+ }
+ loadExpectedOutput(fileName) {
+ var output = readFile(fileName);
+ return output.split('\n');
+ }
-PrintMonitor.prototype.finish = function() {
- print = this.oldPrint;
- if (this.diffs.length > 0 || this.unexpectedOut != null) {
- print("===== actual output: =====");
- print(this.realOut.join('\n'));
- print("===== expected output: =====");
- if (this.outputFile) {
- print("===== File: " + this.outputFile + " =====");
+ finish() {
+ print = this.oldPrint;
+ if (this.diffs.length > 0 || this.unexpectedOut != null) {
+ console.log("===== actual output: =====");
+ console.log(this.realOut.join('\n'));
+ console.log("===== expected output: =====");
+ if (this.outputFile) {
+ console.log("===== File: " + this.outputFile + " =====");
+ }
+ console.log(this.expectedOut.join('\n'));
+ if (this.diffs.length > 0) {
+ this.diffs.forEach(line => console.log(line))
+ assertEquals([], this.diffs);
+ }
+ assertNull(this.unexpectedOut);
}
- print(this.expectedOut.join('\n'));
- assertEquals([], this.diffs);
- assertNull(this.unexpectedOut);
}
-};
+}
function driveTickProcessorTest(
separateIc, separateBytecodes, separateBuiltins, separateStubs,
- ignoreUnknown, stateFilter, logInput, refOutput, onlySummary) {
+ separateBaselineHandlers, ignoreUnknown, stateFilter, logInput,
+ refOutput, onlySummary) {
// TEST_FILE_NAME must be provided by test runner.
assertEquals('string', typeof TEST_FILE_NAME);
var pathLen = TEST_FILE_NAME.lastIndexOf('/');
@@ -441,22 +444,24 @@ function driveTickProcessorTest(
pathLen = TEST_FILE_NAME.lastIndexOf('\\');
}
assertTrue(pathLen != -1);
- var testsPath = TEST_FILE_NAME.substr(0, pathLen + 1);
- var tp = new TickProcessor(new CppEntriesProviderMock(),
+ const testsPath = TEST_FILE_NAME.substr(0, pathLen + 1);
+ const symbolsFile = testsPath + logInput + '.symbols.json';
+ const tp = new TickProcessor(new CppEntriesProviderMock(symbolsFile),
separateIc,
separateBytecodes,
separateBuiltins,
separateStubs,
+ separateBaselineHandlers,
TickProcessor.CALL_GRAPH_SIZE,
ignoreUnknown,
stateFilter,
"0",
"auto,auto",
- false,
+ null,
false,
false,
onlySummary);
- var pm = new PrintMonitor(testsPath + refOutput);
+ const pm = new PrintMonitor(testsPath + refOutput);
tp.processLogFileInTest(testsPath + logInput);
tp.printStatistics();
pm.finish();
@@ -466,27 +471,36 @@ function driveTickProcessorTest(
(function testProcessing() {
var testData = {
'Default': [
- false, false, true, true, false, null,
+ false, false, true, true, false, false, null,
'tickprocessor-test.log', 'tickprocessor-test.default', false],
+ 'SeparateBytecodes': [
+ false, true, true, true, false, false, null,
+ 'tickprocessor-test.log', 'tickprocessor-test.separate-bytecodes', false],
+ 'SeparateBaselineHandlers': [
+ false, false, true, true, true, false, null,
+ 'tickprocessor-test.log', 'tickprocessor-test.separate-baseline-handlers', false],
'SeparateIc': [
- true, false, true, true, false, null,
+ true, false, true, true, false, false, null,
'tickprocessor-test.log', 'tickprocessor-test.separate-ic', false],
'IgnoreUnknown': [
- false, false, true, true, true, null,
+ false, false, true, true, false, true, null,
'tickprocessor-test.log', 'tickprocessor-test.ignore-unknown', false],
'GcState': [
- false, false, true, true, false, TickProcessor.VmStates.GC,
+ false, false, true, true, false, false, TickProcessor.VmStates.GC,
'tickprocessor-test.log', 'tickprocessor-test.gc-state', false],
+ 'OnlySummary': [
+ false, false, true, true, false, false, null,
+ 'tickprocessor-test.log', 'tickprocessor-test.only-summary', true],
'FunctionInfo': [
- false, false, true, true, false, null,
+ false, false, true, true, false, false, null,
'tickprocessor-test-func-info.log', 'tickprocessor-test.func-info',
false],
- 'OnlySummary': [
- false, false, true, true, false, null,
- 'tickprocessor-test.log', 'tickprocessor-test.only-summary', true]
+ 'DefaultLarge': [
+ false, false, true, true, false, false, null,
+ 'tickprocessor-test-large.log', 'tickprocessor-test-large.default', false],
};
for (var testName in testData) {
- print('=== testProcessing-' + testName + ' ===');
- driveTickProcessorTest.apply(null, testData[testName]);
+ console.log('=== testProcessing-' + testName + ' ===');
+ driveTickProcessorTest(...testData[testName]);
}
})();
diff --git a/deps/v8/test/mjsunit/typedarray-growablesharedarraybuffer.js b/deps/v8/test/mjsunit/typedarray-growablesharedarraybuffer.js
new file mode 100644
index 0000000000..d4d76bf83b
--- /dev/null
+++ b/deps/v8/test/mjsunit/typedarray-growablesharedarraybuffer.js
@@ -0,0 +1,354 @@
+// Copyright 2021 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.
+
+// Flags: --harmony-rab-gsab --allow-natives-syntax
+
+"use strict";
+
+class MyUint8Array extends Uint8Array {};
+
+const ctors = [
+ Uint8Array,
+ Int8Array,
+ Uint16Array,
+ Int16Array,
+ Int32Array,
+ Float32Array,
+ Float64Array,
+ Uint8ClampedArray,
+ BigUint64Array,
+ BigInt64Array,
+ MyUint8Array
+];
+
+(function TypedArrayPrototype() {
+ const gsab = new GrowableSharedArrayBuffer(40, 80);
+ const sab = new SharedArrayBuffer(80);
+
+ for (let ctor of ctors) {
+ const ta_gsab = new ctor(gsab, 0, 3);
+ const ta_sab = new ctor(sab, 0, 3);
+ assertEquals(ta_gsab.__proto__, ta_sab.__proto__);
+ }
+})();
+
+(function TypedArrayLengthAndByteLength() {
+ const gsab = new GrowableSharedArrayBuffer(40, 80);
+
+ for (let ctor of ctors) {
+ const ta = new ctor(gsab, 0, 3);
+ assertEquals(gsab, ta.buffer);
+ assertEquals(3, ta.length);
+ assertEquals(3 * ctor.BYTES_PER_ELEMENT, ta.byteLength);
+
+ const empty_ta = new ctor(gsab, 0, 0);
+ assertEquals(gsab, empty_ta.buffer);
+ assertEquals(0, empty_ta.length);
+ assertEquals(0, empty_ta.byteLength);
+
+ const ta_with_offset = new ctor(gsab, 2 * ctor.BYTES_PER_ELEMENT, 3);
+ assertEquals(gsab, ta_with_offset.buffer);
+ assertEquals(3, ta_with_offset.length);
+ assertEquals(3 * ctor.BYTES_PER_ELEMENT, ta_with_offset.byteLength);
+
+ const empty_ta_with_offset = new ctor(gsab, 2 * ctor.BYTES_PER_ELEMENT, 0);
+ assertEquals(gsab, empty_ta_with_offset.buffer);
+ assertEquals(0, empty_ta_with_offset.length);
+ assertEquals(0, empty_ta_with_offset.byteLength);
+
+ const length_tracking_ta = new ctor(gsab);
+ assertEquals(gsab, length_tracking_ta.buffer);
+ assertEquals(40 / ctor.BYTES_PER_ELEMENT, length_tracking_ta.length);
+ assertEquals(40, length_tracking_ta.byteLength);
+
+ const offset = 8;
+ const length_tracking_ta_with_offset = new ctor(gsab, offset);
+ assertEquals(gsab, length_tracking_ta_with_offset.buffer);
+ assertEquals((40 - offset) / ctor.BYTES_PER_ELEMENT,
+ length_tracking_ta_with_offset.length);
+ assertEquals(40 - offset, length_tracking_ta_with_offset.byteLength);
+
+ const length_tracking_ta_zero = new ctor(gsab, 40);
+ assertEquals(gsab, length_tracking_ta_zero.buffer);
+ assertEquals(0, length_tracking_ta_zero.length);
+ assertEquals(0, length_tracking_ta_zero.byteLength);
+ }
+})();
+
+(function ConstructInvalid() {
+ const gsab = new GrowableSharedArrayBuffer(40, 80);
+
+ for (let ctor of ctors) {
+ // Length too big.
+ assertThrows(() => { new ctor(gsab, 0, 40 / ctor.BYTES_PER_ELEMENT + 1); },
+ RangeError);
+
+ // Offset too close to the end.
+ assertThrows(() => { new ctor(gsab, 40 - ctor.BYTES_PER_ELEMENT, 2); },
+ RangeError);
+
+ // Offset beyond end.
+ assertThrows(() => { new ctor(gsab, 40, 1); }, RangeError);
+
+ if (ctor.BYTES_PER_ELEMENT > 1) {
+ // Offset not a multiple of ctor.BYTES_PER_ELEMENT.
+ assertThrows(() => { new ctor(gsab, 1, 1); }, RangeError);
+ assertThrows(() => { new ctor(gsab, 1); }, RangeError);
+ }
+ }
+
+ // Verify the error messages.
+ assertThrows(() => { new Int16Array(gsab, 1, 1); }, RangeError,
+ /start offset of Int16Array should be a multiple of 2/);
+
+ assertThrows(() => { new Int16Array(gsab, 38, 2); }, RangeError,
+ /Invalid typed array length: 2/);
+})();
+
+(function TypedArrayLengthWhenGrown1() {
+ const gsab = new GrowableSharedArrayBuffer(16, 40);
+
+ // Create TAs which cover the bytes 0-7.
+ let tas_and_lengths = [];
+ for (let ctor of ctors) {
+ const length = 8 / ctor.BYTES_PER_ELEMENT;
+ tas_and_lengths.push([new ctor(gsab, 0, length), length]);
+ }
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ gsab.grow(20);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ gsab.grow(40);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+})();
+
+// The previous test with offsets.
+(function TypedArrayLengthWhenGrown2() {
+ const gsab = new GrowableSharedArrayBuffer(20, 40);
+
+ // Create TAs which cover the bytes 8-15.
+ let tas_and_lengths = [];
+ for (let ctor of ctors) {
+ const length = 8 / ctor.BYTES_PER_ELEMENT;
+ tas_and_lengths.push([new ctor(gsab, 8, length), length]);
+ }
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ gsab.grow(20);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ gsab.grow(40);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+})();
+
+(function LengthTracking1() {
+ const gsab = new GrowableSharedArrayBuffer(16, 40);
+
+ let tas = [];
+ for (let ctor of ctors) {
+ tas.push(new ctor(gsab));
+ }
+
+ for (let ta of tas) {
+ assertEquals(16 / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(16, ta.byteLength);
+ }
+
+ gsab.grow(24);
+ for (let ta of tas) {
+ assertEquals(24 / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(24, ta.byteLength);
+ }
+
+ // Grow to a number which is not a multiple of all byte_lengths.
+ gsab.grow(26);
+ for (let ta of tas) {
+ const expected_length = Math.floor(26 / ta.BYTES_PER_ELEMENT);
+ assertEquals(expected_length, ta.length);
+ assertEquals(expected_length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ gsab.grow(40);
+
+ for (let ta of tas) {
+ assertEquals(40 / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(40, ta.byteLength);
+ }
+})();
+
+// The previous test with offsets.
+(function LengthTracking2() {
+ const gsab = new GrowableSharedArrayBuffer(16, 40);
+
+ const offset = 8;
+ let tas = [];
+ for (let ctor of ctors) {
+ tas.push(new ctor(gsab, offset));
+ }
+
+ for (let ta of tas) {
+ assertEquals((16 - offset) / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(16 - offset, ta.byteLength);
+ }
+
+ gsab.grow(24);
+ for (let ta of tas) {
+ assertEquals((24 - offset) / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(24 - offset, ta.byteLength);
+ }
+
+ // Grow to a number which is not a multiple of all byte_lengths.
+ gsab.grow(26);
+ for (let ta of tas) {
+ const expected_length = Math.floor((26 - offset)/ ta.BYTES_PER_ELEMENT);
+ assertEquals(expected_length, ta.length);
+ assertEquals(expected_length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ gsab.grow(40);
+
+ for (let ta of tas) {
+ assertEquals((40 - offset) / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(40 - offset, ta.byteLength);
+ }
+})();
+
+(function LoadWithFeedback() {
+ function ReadElement2(ta) {
+ return ta[2];
+ }
+ %EnsureFeedbackVectorForFunction(ReadElement2);
+
+ const gsab = new GrowableSharedArrayBuffer(16, 40);
+
+ const i8a = new Int8Array(gsab, 0, 4);
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(0, ReadElement2(i8a));
+ }
+
+ // Within-bounds write
+ for (let i = 0; i < 4; ++i) {
+ i8a[i] = i;
+ }
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(2, ReadElement2(i8a));
+ }
+
+ gsab.grow(20);
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(2, ReadElement2(i8a));
+ }
+
+ gsab.grow(40);
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(2, ReadElement2(i8a));
+ }
+})();
+
+(function LoadAndStoreWithFeedback() {
+ function ReadElement(ta, i) {
+ return ta[i];
+ }
+
+ function HasElement(ta, i) {
+ return i in ta;
+ }
+
+ function WriteElement(ta, i, v) {
+ ta[i] = v;
+ }
+
+ %EnsureFeedbackVectorForFunction(ReadElement);
+ %EnsureFeedbackVectorForFunction(HasElement);
+ %EnsureFeedbackVectorForFunction(WriteElement);
+
+ const gsab = new GrowableSharedArrayBuffer(16, 40);
+
+ const i8a = new Int8Array(gsab); // length-tracking
+ assertEquals(16, i8a.length);
+
+ // Within-bounds read
+ for (let i = 0; i < i8a.length; ++i) {
+ assertEquals(0, ReadElement(i8a, i));
+ assertTrue(HasElement(i8a, i));
+ }
+ assertFalse(HasElement(i8a, 17));
+
+ // Within-bounds write
+ for (let i = 0; i < i8a.length; ++i) {
+ WriteElement(i8a, i, i);
+ }
+
+ // Within-bounds read
+ for (let i = 0; i < i8a.length; ++i) {
+ assertEquals(i, ReadElement(i8a, i));
+ }
+
+ let old_length = i8a.length;
+ gsab.grow(20);
+ assertEquals(20, i8a.length);
+
+ for (let i = 0; i < i8a.length; ++i) {
+ if (i < old_length) {
+ assertEquals(i, ReadElement(i8a, i));
+ } else {
+ assertEquals(0, ReadElement(i8a, i));
+ }
+ assertTrue(HasElement(i8a, i));
+ }
+ assertFalse(HasElement(i8a, 21));
+
+ // Within-bounds write
+ for (let i = 0; i < i8a.length; ++i) {
+ WriteElement(i8a, i, i + 1);
+ }
+
+ // Within-bounds read
+ for (let i = 0; i < i8a.length; ++i) {
+ assertEquals(i + 1, ReadElement(i8a, i));
+ }
+})();
+
+(function EnumerateElements() {
+ let gsab = new GrowableSharedArrayBuffer(100, 200);
+ for (let ctor of ctors) {
+ const ta = new ctor(gsab, 0, 3);
+ let keys = '';
+ for (const key in ta) {
+ keys += key;
+ }
+ assertEquals('012', keys);
+ }
+}());
diff --git a/deps/v8/test/mjsunit/typedarray-resizablearraybuffer-detach.js b/deps/v8/test/mjsunit/typedarray-resizablearraybuffer-detach.js
new file mode 100644
index 0000000000..95e2a99ecd
--- /dev/null
+++ b/deps/v8/test/mjsunit/typedarray-resizablearraybuffer-detach.js
@@ -0,0 +1,138 @@
+// Copyright 2021 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.
+
+// Flags: --harmony-rab-gsab --allow-natives-syntax
+
+"use strict";
+
+class MyUint8Array extends Uint8Array {};
+
+const ctors = [
+ Uint8Array,
+ Int8Array,
+ Uint16Array,
+ Int16Array,
+ Int32Array,
+ Float32Array,
+ Float64Array,
+ Uint8ClampedArray,
+ BigUint64Array,
+ BigInt64Array,
+ MyUint8Array
+];
+
+(function ConstructorThrowsIfBufferDetached() {
+ const rab = new ResizableArrayBuffer(40, 80);
+ %ArrayBufferDetach(rab);
+
+ for (let ctor of ctors) {
+ assertThrows(() => { ctor(rab); }, TypeError);
+ assertThrows(() => { ctor(rab, 8); }, TypeError);
+ assertThrows(() => { ctor(rab, 8, 1); }, TypeError);
+ }
+})();
+
+(function TypedArrayLengthAndByteLength() {
+ const rab = new ResizableArrayBuffer(40, 80);
+
+ let tas = [];
+ for (let ctor of ctors) {
+ tas.push(new ctor(rab, 0, 3));
+ tas.push(new ctor(rab, 8, 3));
+ tas.push(new ctor(rab));
+ tas.push(new ctor(rab, 8));
+ }
+
+ %ArrayBufferDetach(rab);
+
+ for (let ta of tas) {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+})();
+
+(function AccessDetachedTypedArray() {
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ const i8a = new Int8Array(rab, 0, 4);
+
+ // Initial values
+ for (let i = 0; i < 4; ++i) {
+ assertEquals(0, i8a[i]);
+ }
+
+ // Within-bounds write
+ for (let i = 0; i < 4; ++i) {
+ i8a[i] = i;
+ }
+
+ %ArrayBufferDetach(rab);
+
+ // OOB read
+ for (let i = 0; i < 4; ++i) {
+ assertEquals(undefined, i8a[i]);
+ }
+
+ // OOB write (has no effect)
+ for (let i = 0; i < 4; ++i) {
+ i8a[i] = 10;
+ }
+
+ for (let i = 0; i < 4; ++i) {
+ assertEquals(undefined, i8a[i]);
+ }
+})();
+
+(function LoadFromOutOfScopeTypedArrayWithFeedback() {
+ function ReadElement2(ta) {
+ return ta[2];
+ }
+ %EnsureFeedbackVectorForFunction(ReadElement2);
+
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ const i8a = new Int8Array(rab, 0, 4);
+ assertEquals(0, ReadElement2(i8a));
+
+ // Within-bounds write
+ for (let i = 0; i < 4; ++i) {
+ i8a[i] = i;
+ }
+
+ %ArrayBufferDetach(rab);
+
+ // OOB read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(undefined, ReadElement2(i8a));
+ }
+})();
+
+(function StoreToOutOfScopeTypedArrayWithFeedback() {
+ function WriteElement2(ta, i) {
+ ta[2] = i;
+ }
+ %EnsureFeedbackVectorForFunction(WriteElement2);
+
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ const i8a = new Int8Array(rab, 0, 4);
+ assertEquals(0, i8a[2]);
+
+ // Within-bounds write
+ for (let i = 0; i < 3; ++i) {
+ WriteElement2(i8a, 3);
+ }
+
+ %ArrayBufferDetach(rab);
+
+ // OOB write (has no effect)
+ for (let i = 0; i < 3; ++i) {
+ WriteElement2(i8a, 4);
+ }
+
+ // OOB read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(undefined, i8a[2]);
+ }
+})();
diff --git a/deps/v8/test/mjsunit/typedarray-resizablearraybuffer.js b/deps/v8/test/mjsunit/typedarray-resizablearraybuffer.js
new file mode 100644
index 0000000000..6e6b1b1e3a
--- /dev/null
+++ b/deps/v8/test/mjsunit/typedarray-resizablearraybuffer.js
@@ -0,0 +1,605 @@
+// Copyright 2021 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.
+
+// Flags: --harmony-rab-gsab --allow-natives-syntax
+
+"use strict";
+
+class MyUint8Array extends Uint8Array {};
+
+const ctors = [
+ Uint8Array,
+ Int8Array,
+ Uint16Array,
+ Int16Array,
+ Int32Array,
+ Float32Array,
+ Float64Array,
+ Uint8ClampedArray,
+ BigUint64Array,
+ BigInt64Array,
+ MyUint8Array
+];
+
+(function TypedArrayPrototype() {
+ const rab = new ResizableArrayBuffer(40, 80);
+ const ab = new ArrayBuffer(80);
+
+ for (let ctor of ctors) {
+ const ta_rab = new ctor(rab, 0, 3);
+ const ta_ab = new ctor(ab, 0, 3);
+ assertEquals(ta_rab.__proto__, ta_ab.__proto__);
+ }
+})();
+
+(function TypedArrayLengthAndByteLength() {
+ const rab = new ResizableArrayBuffer(40, 80);
+
+ for (let ctor of ctors) {
+ const ta = new ctor(rab, 0, 3);
+ assertEquals(rab, ta.buffer);
+ assertEquals(3, ta.length);
+ assertEquals(3 * ctor.BYTES_PER_ELEMENT, ta.byteLength);
+
+ const empty_ta = new ctor(rab, 0, 0);
+ assertEquals(rab, empty_ta.buffer);
+ assertEquals(0, empty_ta.length);
+ assertEquals(0, empty_ta.byteLength);
+
+ const ta_with_offset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 3);
+ assertEquals(rab, ta_with_offset.buffer);
+ assertEquals(3, ta_with_offset.length);
+ assertEquals(3 * ctor.BYTES_PER_ELEMENT, ta_with_offset.byteLength);
+
+ const empty_ta_with_offset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 0);
+ assertEquals(rab, empty_ta_with_offset.buffer);
+ assertEquals(0, empty_ta_with_offset.length);
+ assertEquals(0, empty_ta_with_offset.byteLength);
+
+ const length_tracking_ta = new ctor(rab);
+ assertEquals(rab, length_tracking_ta.buffer);
+ assertEquals(40 / ctor.BYTES_PER_ELEMENT, length_tracking_ta.length);
+ assertEquals(40, length_tracking_ta.byteLength);
+
+ const offset = 8;
+ const length_tracking_ta_with_offset = new ctor(rab, offset);
+ assertEquals(rab, length_tracking_ta_with_offset.buffer);
+ assertEquals((40 - offset) / ctor.BYTES_PER_ELEMENT,
+ length_tracking_ta_with_offset.length);
+ assertEquals(40 - offset, length_tracking_ta_with_offset.byteLength);
+
+ const empty_length_tracking_ta_with_offset = new ctor(rab, 40);
+ assertEquals(rab, empty_length_tracking_ta_with_offset.buffer);
+ assertEquals(0, empty_length_tracking_ta_with_offset.length);
+ assertEquals(0, empty_length_tracking_ta_with_offset.byteLength);
+ }
+})();
+
+(function ConstructInvalid() {
+ const rab = new ResizableArrayBuffer(40, 80);
+
+ for (let ctor of ctors) {
+ // Length too big.
+ assertThrows(() => { new ctor(rab, 0, 40 / ctor.BYTES_PER_ELEMENT + 1); },
+ RangeError);
+
+ // Offset too close to the end.
+ assertThrows(() => { new ctor(rab, 40 - ctor.BYTES_PER_ELEMENT, 2); },
+ RangeError);
+
+ // Offset beyond end.
+ assertThrows(() => { new ctor(rab, 40, 1); }, RangeError);
+
+ if (ctor.BYTES_PER_ELEMENT > 1) {
+ // Offset not a multiple of the byte size.
+ assertThrows(() => { new ctor(rab, 1, 1); }, RangeError);
+ assertThrows(() => { new ctor(rab, 1); }, RangeError);
+ }
+ }
+
+ // Verify the error messages.
+ assertThrows(() => { new Int16Array(rab, 1, 1); }, RangeError,
+ /start offset of Int16Array should be a multiple of 2/);
+
+ assertThrows(() => { new Int16Array(rab, 38, 2); }, RangeError,
+ /Invalid typed array length: 2/);
+})();
+
+(function TypedArrayLengthWhenResizedOutOfBounds1() {
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ // Create TAs which cover the bytes 0-7.
+ let tas_and_lengths = [];
+ for (let ctor of ctors) {
+ const length = 8 / ctor.BYTES_PER_ELEMENT;
+ tas_and_lengths.push([new ctor(rab, 0, length), length]);
+ }
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ rab.resize(2);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+
+ // Resize the rab so that it just barely covers the needed 8 bytes.
+ rab.resize(8);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ rab.resize(40);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+})();
+
+// The previous test with offsets.
+(function TypedArrayLengthWhenResizedOutOfBounds2() {
+ const rab = new ResizableArrayBuffer(20, 40);
+
+ // Create TAs which cover the bytes 8-15.
+ let tas_and_lengths = [];
+ for (let ctor of ctors) {
+ const length = 8 / ctor.BYTES_PER_ELEMENT;
+ tas_and_lengths.push([new ctor(rab, 8, length), length]);
+ }
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ rab.resize(10);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+
+ // Resize the rab so that it just barely covers the needed 8 bytes.
+ rab.resize(16);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ rab.resize(40);
+
+ for (let [ta, length] of tas_and_lengths) {
+ assertEquals(length, ta.length);
+ assertEquals(length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+})();
+
+(function LengthTracking1() {
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ let tas = [];
+ for (let ctor of ctors) {
+ tas.push(new ctor(rab));
+ }
+
+ for (let ta of tas) {
+ assertEquals(16 / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(16, ta.byteLength);
+ }
+
+ rab.resize(40);
+ for (let ta of tas) {
+ assertEquals(40 / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(40, ta.byteLength);
+ }
+
+ // Resize to a number which is not a multiple of all byte_lengths.
+ rab.resize(19);
+ for (let ta of tas) {
+ const expected_length = Math.floor(19 / ta.BYTES_PER_ELEMENT);
+ assertEquals(expected_length, ta.length);
+ assertEquals(expected_length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ rab.resize(1);
+
+ for (let ta of tas) {
+ if (ta.BYTES_PER_ELEMENT == 1) {
+ assertEquals(1, ta.length);
+ assertEquals(1, ta.byteLength);
+ } else {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+ }
+
+ rab.resize(0);
+
+ for (let ta of tas) {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+
+ rab.resize(8);
+
+ for (let ta of tas) {
+ assertEquals(8 / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(8, ta.byteLength);
+ }
+
+ rab.resize(40);
+
+ for (let ta of tas) {
+ assertEquals(40 / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(40, ta.byteLength);
+ }
+})();
+
+// The previous test with offsets.
+(function LengthTracking2() {
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ const offset = 8;
+ let tas = [];
+ for (let ctor of ctors) {
+ tas.push(new ctor(rab, offset));
+ }
+
+ for (let ta of tas) {
+ assertEquals((16 - offset) / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(16 - offset, ta.byteLength);
+ }
+
+ rab.resize(40);
+ for (let ta of tas) {
+ assertEquals((40 - offset) / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(40 - offset, ta.byteLength);
+ }
+
+ // Resize to a number which is not a multiple of all byte_lengths.
+ rab.resize(20);
+ for (let ta of tas) {
+ const expected_length = Math.floor((20 - offset)/ ta.BYTES_PER_ELEMENT);
+ assertEquals(expected_length, ta.length);
+ assertEquals(expected_length * ta.BYTES_PER_ELEMENT, ta.byteLength);
+ }
+
+ // Resize so that all TypedArrays go out of bounds (because of the offset).
+ rab.resize(7);
+
+ for (let ta of tas) {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+
+ rab.resize(0);
+
+ for (let ta of tas) {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+
+ rab.resize(8);
+
+ for (let ta of tas) {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+
+ // Resize so that the TypedArrays which have element size > 1 go out of bounds
+ // (because less than 1 full element would fit).
+ rab.resize(offset + 1);
+
+ for (let ta of tas) {
+ if (ta.BYTES_PER_ELEMENT == 1) {
+ assertEquals(1, ta.length);
+ assertEquals(1, ta.byteLength);
+ } else {
+ assertEquals(0, ta.length);
+ assertEquals(0, ta.byteLength);
+ }
+ }
+
+ rab.resize(40);
+
+ for (let ta of tas) {
+ assertEquals((40 - offset) / ta.BYTES_PER_ELEMENT, ta.length);
+ assertEquals(40 - offset, ta.byteLength);
+ }
+})();
+
+(function AccessOutOfBoundsTypedArray() {
+ for (let ctor of ctors) {
+ if (ctor.BYTES_PER_ELEMENT != 1) {
+ continue;
+ }
+ const rab = new ResizableArrayBuffer(16, 40);
+ const array = new ctor(rab, 0, 4);
+
+ // Initial values
+ for (let i = 0; i < 4; ++i) {
+ assertEquals(0, array[i]);
+ }
+
+ // Within-bounds write
+ for (let i = 0; i < 4; ++i) {
+ array[i] = i;
+ }
+
+ // Within-bounds read
+ for (let i = 0; i < 4; ++i) {
+ assertEquals(i, array[i]);
+ }
+
+ rab.resize(2);
+
+ // OOB read. If the RAB isn't large enough to fit the entire TypedArray,
+ // the length of the TypedArray is treated as 0.
+ for (let i = 0; i < 4; ++i) {
+ assertEquals(undefined, array[i]);
+ }
+
+ // OOB write (has no effect)
+ for (let i = 0; i < 4; ++i) {
+ array[i] = 10;
+ }
+
+ rab.resize(4);
+
+ // Within-bounds read
+ for (let i = 0; i < 2; ++i) {
+ assertEquals(i, array[i]);
+ }
+ // The shrunk-and-regrown part got zeroed.
+ for (let i = 2; i < 4; ++i) {
+ assertEquals(0, array[i]);
+ }
+
+ rab.resize(40);
+
+ // Within-bounds read
+ for (let i = 0; i < 2; ++i) {
+ assertEquals(i, array[i]);
+ }
+ for (let i = 2; i < 4; ++i) {
+ assertEquals(0, array[i]);
+ }
+ }
+})();
+
+(function OutOfBoundsTypedArrayAndHas() {
+ for (let ctor of ctors) {
+ if (ctor.BYTES_PER_ELEMENT != 1) {
+ continue;
+ }
+ const rab = new ResizableArrayBuffer(16, 40);
+ const array = new ctor(rab, 0, 4);
+
+ // Within-bounds read
+ for (let i = 0; i < 4; ++i) {
+ assertTrue(i in array);
+ }
+
+ rab.resize(2);
+
+ // OOB read. If the RAB isn't large enough to fit the entire TypedArray,
+ // the length of the TypedArray is treated as 0.
+ for (let i = 0; i < 4; ++i) {
+ assertFalse(i in array);
+ }
+
+ rab.resize(4);
+
+ // Within-bounds read
+ for (let i = 0; i < 4; ++i) {
+ assertTrue(i in array);
+ }
+
+ rab.resize(40);
+
+ // Within-bounds read
+ for (let i = 0; i < 4; ++i) {
+ assertTrue(i in array);
+ }
+ }
+})();
+
+(function LoadFromOutOfBoundsTypedArrayWithFeedback() {
+ function ReadElement2(ta) {
+ return ta[2];
+ }
+ %EnsureFeedbackVectorForFunction(ReadElement2);
+
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ const i8a = new Int8Array(rab, 0, 4);
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(0, ReadElement2(i8a));
+ }
+
+ // Within-bounds write
+ for (let i = 0; i < 4; ++i) {
+ i8a[i] = i;
+ }
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(2, ReadElement2(i8a));
+ }
+
+ rab.resize(2);
+
+ // OOB read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(undefined, ReadElement2(i8a));
+ }
+
+ rab.resize(4);
+
+ // Within-bounds read (the memory got zeroed)
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(0, ReadElement2(i8a));
+ }
+
+ i8a[2] = 3;
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(3, ReadElement2(i8a));
+ }
+
+ rab.resize(40);
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(3, ReadElement2(i8a));
+ }
+})();
+
+(function HasAndOutOfBoundsTypedArrayWithFeedback() {
+ function HasElement2(ta) {
+ return 2 in ta;
+ }
+ %EnsureFeedbackVectorForFunction(HasElement2);
+
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ const i8a = new Int8Array(rab, 0, 4);
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertTrue(HasElement2(i8a));
+ }
+
+ rab.resize(2);
+
+ // OOB read
+ for (let i = 0; i < 3; ++i) {
+ assertFalse(HasElement2(i8a));
+ }
+ rab.resize(4);
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertTrue(HasElement2(i8a));
+ }
+
+ rab.resize(40);
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertTrue(HasElement2(i8a));
+ }
+})();
+
+(function StoreToOutOfBoundsTypedArrayWithFeedback() {
+ function WriteElement2(ta, i) {
+ ta[2] = i;
+ }
+ %EnsureFeedbackVectorForFunction(WriteElement2);
+
+ const rab = new ResizableArrayBuffer(16, 40);
+
+ const i8a = new Int8Array(rab, 0, 4);
+ assertEquals(0, i8a[2]);
+
+ // Within-bounds write
+ for (let i = 0; i < 3; ++i) {
+ WriteElement2(i8a, 3);
+ }
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(3, i8a[2]);
+ }
+
+ rab.resize(2);
+
+ // OOB write (has no effect)
+ for (let i = 0; i < 3; ++i) {
+ WriteElement2(i8a, 4);
+ }
+
+ rab.resize(4);
+
+ // Within-bounds read (the memory got zeroed)
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(0, i8a[2]);
+ }
+
+ // Within-bounds write
+ for (let i = 0; i < 3; ++i) {
+ WriteElement2(i8a, 5);
+ }
+
+ rab.resize(40);
+
+ // Within-bounds read
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(5, i8a[2]);
+ }
+})();
+
+(function OOBBehavesLikeDetached() {
+ function ReadElement2(ta) {
+ return ta[2];
+ }
+ function HasElement2(ta) {
+ return 2 in ta;
+ }
+
+ const rab = new ResizableArrayBuffer(16, 40);
+ const i8a = new Int8Array(rab, 0, 4);
+ i8a.__proto__ = {2: 'wrong value'};
+ i8a[2] = 10;
+ assertEquals(10, ReadElement2(i8a));
+ assertTrue(HasElement2(i8a));
+
+ rab.resize(0);
+ assertEquals(undefined, ReadElement2(i8a));
+ assertFalse(HasElement2(i8a));
+})();
+
+(function OOBBehavesLikeDetachedWithFeedback() {
+ function ReadElement2(ta) {
+ return ta[2];
+ }
+ function HasElement2(ta) {
+ return 2 in ta;
+ }
+ %EnsureFeedbackVectorForFunction(ReadElement2);
+ %EnsureFeedbackVectorForFunction(HasElement2);
+
+ const rab = new ResizableArrayBuffer(16, 40);
+ const i8a = new Int8Array(rab, 0, 4);
+ i8a.__proto__ = {2: 'wrong value'};
+ i8a[2] = 10;
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(10, ReadElement2(i8a));
+ assertTrue(HasElement2(i8a));
+ }
+ rab.resize(0);
+
+ for (let i = 0; i < 3; ++i) {
+ assertEquals(undefined, ReadElement2(i8a));
+ assertFalse(HasElement2(i8a));
+ }
+})();
+
+(function EnumerateElements() {
+ let rab = new ResizableArrayBuffer(100, 200);
+ for (let ctor of ctors) {
+ const ta = new ctor(rab, 0, 3);
+ let keys = '';
+ for (const key in ta) {
+ keys += key;
+ }
+ assertEquals('012', keys);
+ }
+}());
diff --git a/deps/v8/test/mjsunit/wasm/async-compile.js b/deps/v8/test/mjsunit/wasm/async-compile.js
index 4660ec7986..6da5184a1b 100644
--- a/deps/v8/test/mjsunit/wasm/async-compile.js
+++ b/deps/v8/test/mjsunit/wasm/async-compile.js
@@ -67,7 +67,7 @@ assertPromiseResult(async function badFunctionInTheMiddle() {
await assertCompileError(
buffer,
'Compiling function #10:\"bad\" failed: ' +
- 'expected 1 elements on the stack for fallthru to @1, found 0 @+94');
+ 'expected 1 elements on the stack for fallthru, found 0 @+94');
}());
assertPromiseResult(async function importWithoutCode() {
diff --git a/deps/v8/test/mjsunit/wasm/bulk-memory.js b/deps/v8/test/mjsunit/wasm/bulk-memory.js
index 2e41fa9ee0..d4ad5ce0bd 100644
--- a/deps/v8/test/mjsunit/wasm/bulk-memory.js
+++ b/deps/v8/test/mjsunit/wasm/bulk-memory.js
@@ -2,9 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --experimental-wasm-bulk-memory
-
-load("test/mjsunit/wasm/wasm-module-builder.js");
+load('test/mjsunit/wasm/wasm-module-builder.js');
(function TestPassiveDataSegment() {
const builder = new WasmModuleBuilder();
@@ -29,7 +27,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
function getMemoryInit(mem, segment_data) {
const builder = new WasmModuleBuilder();
- builder.addImportedMemory("", "mem", 0);
+ builder.addImportedMemory('', 'mem', 0);
builder.addPassiveDataSegment(segment_data);
builder.addFunction('init', kSig_v_iii)
.addBody([
@@ -160,7 +158,7 @@ function getMemoryFill(mem) {
(function TestElemDropActive() {
const builder = new WasmModuleBuilder();
builder.setTableBounds(5, 5);
- builder.addElementSegment(0, 0, false, [0, 0, 0]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0, 0, 0]);
builder.addFunction('drop', kSig_v_v)
.addBody([
kNumericPrefix, kExprElemDrop,
@@ -185,7 +183,8 @@ function getMemoryFill(mem) {
assertEquals(0, view[kPageSize - 1]);
// Instantiation fails, memory remains unmodified.
- assertThrows(() => builder.instantiate({m: {memory}}), WebAssembly.RuntimeError);
+ assertThrows(
+ () => builder.instantiate({m: {memory}}), WebAssembly.RuntimeError);
assertEquals(0, view[kPageSize - 1]);
// The second segment is not initialized.
@@ -203,14 +202,17 @@ function getMemoryFill(mem) {
const f = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 42]);
const tableIndex = 0;
- const isGlobal = false;
- builder.addElementSegment(tableIndex, 0, isGlobal, [f.index, f.index]);
+ builder.addActiveElementSegment(
+ tableIndex,
+ WasmInitExpr.I32Const(0),
+ [f.index, f.index]);
builder.addDataSegment(0, [42]);
// Instantiation fails, but still modifies the table. The memory is not
// modified, since data segments are initialized after element segments.
assertThrows(
- () => builder.instantiate({m: {memory, table}}), WebAssembly.RuntimeError);
+ () => builder.instantiate({m: {memory, table}}),
+ WebAssembly.RuntimeError);
assertEquals(0, view[0]);
})();
diff --git a/deps/v8/test/mjsunit/wasm/call-ref.js b/deps/v8/test/mjsunit/wasm/call-ref.js
index 7ad056c1a3..26836e89cb 100644
--- a/deps/v8/test/mjsunit/wasm/call-ref.js
+++ b/deps/v8/test/mjsunit/wasm/call-ref.js
@@ -115,3 +115,20 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
function(a) { return a * a; }),
10, 15));
})();
+
+(function TestFromJSSlowPath() {
+ var builder = new WasmModuleBuilder();
+ var sig_index = builder.addType(kSig_i_i);
+
+ builder.addFunction("main", makeSig(
+ [wasmRefType(sig_index), kWasmI32], [kWasmI32]))
+ .addBody([kExprLocalGet, 1, kExprLocalGet, 0, kExprCallRef])
+ .exportFunc();
+
+ var instance = builder.instantiate({});
+
+ var fun = new WebAssembly.Function(
+ { parameters: ['i32'], results: ['i32'] }, (a) => undefined);
+ // {undefined} is converted to 0.
+ assertEquals(0, instance.exports.main(fun, 1000));
+})();
diff --git a/deps/v8/test/mjsunit/wasm/compilation-hints-async-compilation.js b/deps/v8/test/mjsunit/wasm/compilation-hints-async-compilation.js
index b01d0e55b7..de8a6e70e2 100644
--- a/deps/v8/test/mjsunit/wasm/compilation-hints-async-compilation.js
+++ b/deps/v8/test/mjsunit/wasm/compilation-hints-async-compilation.js
@@ -35,7 +35,7 @@ load('test/mjsunit/wasm/wasm-module-builder.js');
assertPromiseResult(WebAssembly.compile(bytes)
.then(assertUnreachable,
error => assertEquals("WebAssembly.compile(): type error in " +
- "merge[0] (expected i32, got i64) @+56", error.message)));
+ "fallthru[0] (expected i32, got i64) @+56", error.message)));
})();
(function testCompileEmptyModule() {
diff --git a/deps/v8/test/mjsunit/wasm/compilation-hints-sync-compilation.js b/deps/v8/test/mjsunit/wasm/compilation-hints-sync-compilation.js
index 1f9c00a1f7..94d7fb04c8 100644
--- a/deps/v8/test/mjsunit/wasm/compilation-hints-sync-compilation.js
+++ b/deps/v8/test/mjsunit/wasm/compilation-hints-sync-compilation.js
@@ -33,7 +33,7 @@ load('test/mjsunit/wasm/wasm-module-builder.js');
assertThrows(() => builder.toModule(),
WebAssembly.CompileError,
"WebAssembly.Module(): Compiling function #0:\"id\" failed: type error " +
- "in merge[0] (expected i32, got i64) @+56");
+ "in fallthru[0] (expected i32, got i64) @+56");
})();
(function testCompileEmptyModule() {
diff --git a/deps/v8/test/mjsunit/wasm/compiled-module-serialization.js b/deps/v8/test/mjsunit/wasm/compiled-module-serialization.js
index d527a72ca6..a90e3b03ae 100644
--- a/deps/v8/test/mjsunit/wasm/compiled-module-serialization.js
+++ b/deps/v8/test/mjsunit/wasm/compiled-module-serialization.js
@@ -220,7 +220,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
.exportAs("main");
builder.setTableBounds(kTableSize, kTableSize);
- builder.addElementSegment(0, 0, false, [f1.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [f1.index]);
builder.addExportOfKind("table", kExternalTable, 0);
return new WebAssembly.Module(builder.toBuffer());
@@ -241,7 +241,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
.exportAs("main");
builder.addImportedTable("z", "table", kTableSize, kTableSize);
- builder.addElementSegment(0, 1, false, [f2.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(1), [f2.index]);
var m2_bytes = builder.toBuffer();
var m2 = new WebAssembly.Module(m2_bytes);
diff --git a/deps/v8/test/mjsunit/wasm/data-segments.js b/deps/v8/test/mjsunit/wasm/data-segments.js
index 38fd5ee06b..005122c00d 100644
--- a/deps/v8/test/mjsunit/wasm/data-segments.js
+++ b/deps/v8/test/mjsunit/wasm/data-segments.js
@@ -38,7 +38,7 @@ function GlobalImportedInitTest(pad) {
var g = builder.addImportedGlobal("mod", "offset", kWasmI32);
- while (pad-- > 0) builder.addGlobal(kWasmI32); // pad
+ while (pad-- > 0) builder.addGlobal(kWasmI32, false); // pad
builder.addFunction("load", kSig_i_i)
.addBody([kExprLocalGet, 0, kExprI32LoadMem, 0, 0])
diff --git a/deps/v8/test/mjsunit/wasm/element-segments-with-reftypes.js b/deps/v8/test/mjsunit/wasm/element-segments-with-reftypes.js
new file mode 100644
index 0000000000..7d2cc006b7
--- /dev/null
+++ b/deps/v8/test/mjsunit/wasm/element-segments-with-reftypes.js
@@ -0,0 +1,99 @@
+// Copyright 2021 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.
+
+// Flags: --experimental-wasm-typed-funcref
+
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+(function TestGlobalGetElement() {
+ print(arguments.callee.name);
+ let builder = new WasmModuleBuilder();
+ let table = builder.addTable(kWasmFuncRef, 10, 10).exportAs('table');
+ let f0 = builder.addFunction('double', kSig_i_i).addBody([
+ kExprLocalGet, 0, kExprLocalGet, 0, kExprI32Add
+ ]);
+ let f1 = builder.addFunction('inc', kSig_i_i).addBody([
+ kExprLocalGet, 0, kExprI32Const, 1, kExprI32Add
+ ]);
+ let global0 =
+ builder.addGlobal(kWasmFuncRef, false, WasmInitExpr.RefFunc(f0.index));
+ let global1 =
+ builder.addGlobal(kWasmFuncRef, false, WasmInitExpr.RefFunc(f1.index));
+ // At instantiation, table[0] = global0, table[1] = global1.
+ builder.addActiveElementSegment(
+ table.index, WasmInitExpr.I32Const(0),
+ [
+ WasmInitExpr.GlobalGet(global0.index),
+ WasmInitExpr.GlobalGet(global1.index)
+ ],
+ kWasmFuncRef);
+
+ let passive = builder.addPassiveElementSegment(
+ [
+ WasmInitExpr.GlobalGet(global0.index),
+ WasmInitExpr.GlobalGet(global1.index)
+ ],
+ kWasmFuncRef);
+
+ // table[2] = global0, table[3] = global1.
+ builder.addFunction('init', kSig_v_v)
+ .addBody([
+ kExprI32Const, 2, // table index
+ kExprI32Const, 0, // element index
+ kExprI32Const, 2, // length
+ kNumericPrefix, kExprTableInit, passive, table.index
+ ])
+ .exportFunc();
+
+ let instance = builder.instantiate({});
+
+ instance.exports.init();
+ assertEquals(instance.exports.table.get(0)(10), 20);
+ assertEquals(instance.exports.table.get(1)(10), 11);
+ assertEquals(instance.exports.table.get(2)(10), 20);
+ assertEquals(instance.exports.table.get(3)(10), 11);
+})();
+
+(function TestTypedFunctionElementSegment() {
+ print(arguments.callee.name);
+ let builder = new WasmModuleBuilder();
+ let sig = builder.addType(kSig_i_i);
+
+ let f0 = builder.addFunction('double', sig).addBody([
+ kExprLocalGet, 0, kExprLocalGet, 0, kExprI32Add
+ ]);
+ let f1 = builder.addFunction('inc', sig).addBody([
+ kExprLocalGet, 0, kExprI32Const, 1, kExprI32Add
+ ]);
+
+ let table =
+ builder.addTable(wasmRefType(sig), 10, 10, WasmInitExpr.RefFunc(f0.index))
+ .exportAs('table');
+
+ builder.addActiveElementSegment(
+ table.index, WasmInitExpr.I32Const(0),
+ [WasmInitExpr.RefFunc(f0.index), WasmInitExpr.RefFunc(f1.index)],
+ wasmRefType(sig));
+
+ let passive = builder.addPassiveElementSegment(
+ [WasmInitExpr.RefFunc(f0.index), WasmInitExpr.RefFunc(f1.index)],
+ wasmRefType(sig));
+
+ builder.addFunction('init', kSig_v_v)
+ .addBody([
+ kExprI32Const, 2, // table index
+ kExprI32Const, 0, // element index
+ kExprI32Const, 2, // length
+ kNumericPrefix, kExprTableInit, passive, table.index
+ ])
+ .exportFunc();
+
+ let instance = builder.instantiate({});
+
+ instance.exports.init();
+ assertEquals(instance.exports.table.get(0)(10), 20);
+ assertEquals(instance.exports.table.get(1)(10), 11);
+ assertEquals(instance.exports.table.get(2)(10), 20);
+ assertEquals(instance.exports.table.get(3)(10), 11);
+})();
diff --git a/deps/v8/test/mjsunit/wasm/exceptions.js b/deps/v8/test/mjsunit/wasm/exceptions.js
index 88e92fa3bb..bc64d83ee2 100644
--- a/deps/v8/test/mjsunit/wasm/exceptions.js
+++ b/deps/v8/test/mjsunit/wasm/exceptions.js
@@ -263,6 +263,27 @@ load("test/mjsunit/wasm/exceptions-utils.js");
assertInstanceof(caught.__proto__, WebAssembly.RuntimeError);
})();
+(function TestStackOverflowNotCaught() {
+ print(arguments.callee.name);
+ function stack_overflow() {
+ %ThrowStackOverflow();
+ }
+ let builder = new WasmModuleBuilder();
+ let sig_v_v = builder.addType(kSig_v_v);
+ let kStackOverflow = builder.addImport('', 'stack_overflow', sig_v_v);
+ builder.addFunction('try_stack_overflow', kSig_v_v)
+ .addBody([
+ kExprTry, kWasmVoid,
+ kExprCallFunction, 0,
+ kExprCatchAll,
+ kExprEnd
+ ]).exportFunc();
+ let instance = builder.instantiate({'': {'stack_overflow': stack_overflow}});
+
+ assertThrows(() => instance.exports.try_stack_overflow(),
+ RangeError, 'Maximum call stack size exceeded');
+})();
+
// Test that we can distinguish which exception was thrown by using a cascaded
// sequence of nested try blocks with a single catch block each.
(function TestCatchComplex1() {
diff --git a/deps/v8/test/mjsunit/wasm/export-mutable-global.js b/deps/v8/test/mjsunit/wasm/export-mutable-global.js
index 90238f3cf9..09a7aed457 100644
--- a/deps/v8/test/mjsunit/wasm/export-mutable-global.js
+++ b/deps/v8/test/mjsunit/wasm/export-mutable-global.js
@@ -7,16 +7,12 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
(function exportImmutableGlobal() {
var builder = new WasmModuleBuilder();
let globals = [
- [kWasmI32, 'i32_noinit'],
- [kWasmI32, 'i32', 4711],
- [kWasmF32, 'f32_noinit'],
- [kWasmF32, 'f32', Math.fround(3.14)],
- [kWasmF64, 'f64_noinit'],
- [kWasmF64, 'f64', 1 / 7]
+ [kWasmI32, 'i32', WasmInitExpr.I32Const(4711)],
+ [kWasmF32, 'f32', WasmInitExpr.F32Const(Math.fround(3.14))],
+ [kWasmF64, 'f64', WasmInitExpr.F64Const(1 / 7)]
];
for (let [type, name, value] of globals) {
- let global_builder = builder.addGlobal(type, false).exportAs(name);
- if (value) global_builder.init = value;
+ builder.addGlobal(type, false, value).exportAs(name);
}
var instance = builder.instantiate();
@@ -24,7 +20,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
let obj = instance.exports[name];
assertEquals("object", typeof obj, name);
assertTrue(obj instanceof WebAssembly.Global, name);
- assertEquals(value || 0, obj.value, name);
+ assertEquals(value.value || 0, obj.value, name);
assertThrows(() => obj.value = 0);
}
})();
@@ -48,16 +44,12 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
(function exportMutableGlobal() {
var builder = new WasmModuleBuilder();
let globals = [
- [kWasmI32, 'i32_noinit'], // -
- [kWasmI32, 'i32', 4711], // -
- [kWasmF32, 'f32_noinit'], // -
- [kWasmF32, 'f32', Math.fround(3.14)], // -
- [kWasmF64, 'f64_noinit'], // -
- [kWasmF64, 'f64', 1 / 7] // -
+ [kWasmI32, 'i32', WasmInitExpr.I32Const(4711)], // -
+ [kWasmF32, 'f32', WasmInitExpr.F32Const(Math.fround(3.14))], // -
+ [kWasmF64, 'f64', WasmInitExpr.F64Const(1 / 7)] // -
];
for (let [index, [type, name, value]] of globals.entries()) {
- let global_builder = builder.addGlobal(type, true).exportAs(name);
- if (value) global_builder.init = value;
+ builder.addGlobal(type, true, value).exportAs(name);
builder.addFunction("get " + name, makeSig([], [type]))
.addBody([kExprGlobalGet, index])
.exportFunc();
@@ -70,7 +62,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
for (let [type, name, value] of globals) {
let obj = instance.exports[name];
- assertEquals(value || 0, obj.value, name);
+ assertEquals(value.value || 0, obj.value, name);
// Changing the exported global should change the instance's global.
obj.value = 1001;
diff --git a/deps/v8/test/mjsunit/wasm/externref-globals.js b/deps/v8/test/mjsunit/wasm/externref-globals.js
index 278d1ab27b..d685b5c93b 100644
--- a/deps/v8/test/mjsunit/wasm/externref-globals.js
+++ b/deps/v8/test/mjsunit/wasm/externref-globals.js
@@ -546,12 +546,13 @@ function dummy_func() {
(function TestRefFuncGlobalInit() {
print(arguments.callee.name);
let builder = new WasmModuleBuilder();
- const g_func = builder.addGlobal(kWasmAnyFunc, true);
const f_func = builder.addFunction('get_anyfunc_global', kSig_a_v)
- .addBody([kExprGlobalGet, g_func.index])
- .exportAs('get_anyfunc_global');
builder.addDeclarativeElementSegment([f_func.index]);
- g_func.function_index = f_func.index;
+ const g_func = builder.addGlobal(kWasmAnyFunc, true,
+ WasmInitExpr.RefFunc(f_func.index));
+ // Doing this here to break the cyclic dependency with g_func.
+ f_func.addBody([kExprGlobalGet, g_func.index])
+ .exportAs('get_anyfunc_global');
const instance = builder.instantiate();
assertEquals(
@@ -565,11 +566,11 @@ function dummy_func() {
const sig_index = builder.addType(kSig_i_v);
const import_wasm = builder.addImport('m', 'wasm', sig_index);
const import_js = builder.addImport('m', 'js', sig_index);
- const g_wasm = builder.addGlobal(kWasmAnyFunc, true);
- const g_js = builder.addGlobal(kWasmAnyFunc, true);
+ const g_wasm = builder.addGlobal(kWasmAnyFunc, true,
+ WasmInitExpr.RefFunc(import_wasm));
+ const g_js = builder.addGlobal(kWasmAnyFunc, true,
+ WasmInitExpr.RefFunc(import_js));
builder.addDeclarativeElementSegment([import_wasm, import_js]);
- g_wasm.function_index = import_wasm;
- g_js.function_index = import_js;
builder.addFunction('get_global_wasm', kSig_a_v)
.addBody([kExprGlobalGet, g_wasm.index])
.exportFunc();
diff --git a/deps/v8/test/mjsunit/wasm/externref-table.js b/deps/v8/test/mjsunit/wasm/externref-table.js
index 69c00279ca..9415fd2acb 100644
--- a/deps/v8/test/mjsunit/wasm/externref-table.js
+++ b/deps/v8/test/mjsunit/wasm/externref-table.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --experimental-wasm-reftypes --experimental-wasm-bulk-memory
+// Flags: --experimental-wasm-reftypes
load("test/mjsunit/wasm/wasm-module-builder.js");
@@ -50,7 +50,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
print(arguments.callee.name);
const builder = new WasmModuleBuilder();
- builder.addDeclarativeElementSegment([null]);
+ builder.addDeclarativeElementSegment([WasmInitExpr.RefNull(kWasmFuncRef)],
+ kWasmFuncRef);
builder.addFunction('drop', kSig_v_v)
.addBody([kNumericPrefix, kExprElemDrop, 0])
.exportFunc();
@@ -66,7 +67,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const builder = new WasmModuleBuilder();
const table = builder.addTable(kWasmAnyFunc, 10);
- builder.addDeclarativeElementSegment([null]);
+ builder.addDeclarativeElementSegment([WasmInitExpr.RefNull(kWasmFuncRef)],
+ kWasmFuncRef);
builder.addFunction('init', kSig_v_v)
.addBody([
kExprI32Const, 0, kExprI32Const, 0, kExprI32Const, 1, kNumericPrefix,
diff --git a/deps/v8/test/mjsunit/wasm/globals.js b/deps/v8/test/mjsunit/wasm/globals.js
index 8a9bb2517e..1ad04a37c6 100644
--- a/deps/v8/test/mjsunit/wasm/globals.js
+++ b/deps/v8/test/mjsunit/wasm/globals.js
@@ -93,28 +93,24 @@ TestImported(kWasmF64, 77777.88888, 77777.88888);
function TestExported(type, val, expected) {
print("TestExported " + type + "(" + val +")" + " = " + expected);
var builder = new WasmModuleBuilder();
- var sig = makeSig([type], []);
builder.addGlobal(kWasmI32); // pad
- var g = builder.addGlobal(type, false)
- .exportAs("foo");
- g.init = val;
+ builder.addGlobal(type, false, val).exportAs("foo");
builder.addGlobal(kWasmI32); // pad
var instance = builder.instantiate();
assertEquals(expected, instance.exports.foo.value);
}
-TestExported(kWasmI32, 455.5, 455);
-TestExported(kWasmF32, -999.34343, Math.fround(-999.34343));
-TestExported(kWasmF64, 87347.66666, 87347.66666);
+TestExported(kWasmI32, WasmInitExpr.I32Const(455.5), 455);
+TestExported(kWasmF32, WasmInitExpr.F32Const(-999.34343),
+ Math.fround(-999.34343));
+TestExported(kWasmF64, WasmInitExpr.F64Const(87347.66666), 87347.66666);
(function TestI64Exported() {
var builder = new WasmModuleBuilder();
- var sig = makeSig([kWasmI64], []);
builder.addGlobal(kWasmI32); // pad
- var g = builder.addGlobal(kWasmI64, false)
+ builder.addGlobal(kWasmI64, false, WasmInitExpr.I64Const(1234))
.exportAs("foo");
- g.init = 1234;
builder.addGlobal(kWasmI32); // pad
var instance = builder.instantiate();
@@ -123,14 +119,12 @@ TestExported(kWasmF64, 87347.66666, 87347.66666);
})();
function TestImportedExported(type, val, expected) {
- print("TestImportedExported " + type + "(" + val +")" + " = " + expected);
+ print("TestImportedExported " + type + "(" + val + ")" + " = " + expected);
var builder = new WasmModuleBuilder();
- var sig = makeSig([type], []);
var i = builder.addImportedGlobal("ttt", "foo", type);
builder.addGlobal(kWasmI32); // pad
- var o = builder.addGlobal(type, false)
+ builder.addGlobal(type, false, WasmInitExpr.GlobalGet(i))
.exportAs("bar");
- o.init_index = i;
builder.addGlobal(kWasmI32); // pad
var instance = builder.instantiate({ttt: {foo: val}});
@@ -146,9 +140,8 @@ function TestGlobalIndexSpace(type, val) {
var builder = new WasmModuleBuilder();
var im = builder.addImportedGlobal("nnn", "foo", type);
assertEquals(0, im);
- var def = builder.addGlobal(type, false);
+ var def = builder.addGlobal(type, false, WasmInitExpr.GlobalGet(im));
assertEquals(1, def.index);
- def.init_index = im;
var sig = makeSig([], [type]);
builder.addFunction("main", sig)
diff --git a/deps/v8/test/mjsunit/wasm/import-table.js b/deps/v8/test/mjsunit/wasm/import-table.js
index 6693559c8f..1fa98eaa8a 100644
--- a/deps/v8/test/mjsunit/wasm/import-table.js
+++ b/deps/v8/test/mjsunit/wasm/import-table.js
@@ -41,8 +41,8 @@ let kTableSize = 50;
let f17 = addConstFunc(builder, 17);
builder.addExport("f15", f15);
builder.addExport("f17", f17);
- builder.addElementSegment(0, 15, false, [f15]);
- builder.addElementSegment(0, 1, false, [call.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(15), [f15]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(1), [call.index]);
var mod1 = builder.toModule();
}
@@ -62,10 +62,10 @@ let kTableSize = 50;
])
.exportAs("call");
let f26 = addConstFunc(builder, 26);
- builder.addElementSegment(0, 17, false, [f17]);
- builder.addElementSegment(0, 21, false, [f21]);
- builder.addElementSegment(0, 26, false, [f26]);
- builder.addElementSegment(0, 5, false, [call.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(17), [f17]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(21), [f21]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(26), [f26]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(5), [call.index]);
var mod2 = builder.toModule();
}
@@ -89,8 +89,7 @@ let kTableSize = 50;
})();
function addConstFuncUsingGlobal(builder, val) {
- let g = builder.addGlobal(kWasmI32, false);
- g.init = val;
+ let g = builder.addGlobal(kWasmI32, false, WasmInitExpr.I32Const(val));
return builder.addFunction("global" + val, kSig_i_v)
.addBody([kExprGlobalGet, g.index]).index;
}
@@ -113,8 +112,8 @@ function addConstFuncUsingGlobal(builder, val) {
let f18 = addConstFuncUsingGlobal(builder, 18);
builder.addExport("f14", f14);
builder.addExport("f18", f18);
- builder.addElementSegment(0, 14, false, [f14]);
- builder.addElementSegment(0, 1, false, [call.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(14), [f14]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(1), [call.index]);
var mod1 = builder.toModule();
}
@@ -134,10 +133,10 @@ function addConstFuncUsingGlobal(builder, val) {
])
.exportAs("call");
let f28 = addConstFuncUsingGlobal(builder, 28);
- builder.addElementSegment(0, 18, false, [f18]);
- builder.addElementSegment(0, 22, false, [f22]);
- builder.addElementSegment(0, 28, false, [f28]);
- builder.addElementSegment(0, 5, false, [call.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(18), [f18]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(22), [f22]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(28), [f28]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(5), [call.index]);
var mod2 = builder.toModule();
}
@@ -193,8 +192,8 @@ function addConstFuncUsingMemory(builder, val) {
let f19 = addConstFuncUsingMemory(builder, 19);
builder.addExport("f13", f13);
builder.addExport("f19", f19);
- builder.addElementSegment(0, 13, false, [f13]);
- builder.addElementSegment(0, 1, false, [call.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(13), [f13]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(1), [call.index]);
var mod1 = builder.toModule();
}
@@ -216,10 +215,10 @@ function addConstFuncUsingMemory(builder, val) {
])
.exportAs("call");
let f29 = addConstFuncUsingMemory(builder, 29);
- builder.addElementSegment(0, 19, false, [f19]);
- builder.addElementSegment(0, 23, false, [f23]);
- builder.addElementSegment(0, 29, false, [f29]);
- builder.addElementSegment(0, 5, false, [call.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(19), [f19]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(23), [f23]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(29), [f29]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(5), [call.index]);
var mod2 = builder.toModule();
}
diff --git a/deps/v8/test/mjsunit/wasm/indirect-call-non-zero-table.js b/deps/v8/test/mjsunit/wasm/indirect-call-non-zero-table.js
index 821bc47c46..dfc04dd3bf 100644
--- a/deps/v8/test/mjsunit/wasm/indirect-call-non-zero-table.js
+++ b/deps/v8/test/mjsunit/wasm/indirect-call-non-zero-table.js
@@ -67,11 +67,12 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
.exportAs('return_call_invalid_sig');
// We want to crash if we call through the table with index 0.
- builder.addElementSegment(placeholder, 0, false,
+ builder.addActiveElementSegment(placeholder, WasmInitExpr.I32Const(0),
[f_unreachable, f_unreachable, f_unreachable]);
- builder.addElementSegment(table1, 0, false, [f1, f2, f3]);
+ builder.addActiveElementSegment(table1, WasmInitExpr.I32Const(0),
+ [f1, f2, f3]);
// Keep one slot in table2 uninitialized. We should trap if we call it.
- builder.addElementSegment(table2, 1, false,
+ builder.addActiveElementSegment(table2, WasmInitExpr.I32Const(1),
[f_unreachable, f_unreachable, f4, f5]);
const instance = builder.instantiate();
@@ -126,7 +127,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
kExprCallIndirect, sig_index, t1])
.exportAs('call');
- builder.addElementSegment(t1, g, true, [f1.index]);
+ builder.addActiveElementSegment(t1, WasmInitExpr.GlobalGet(g), [f1.index]);
const base1 = 3;
const base2 = 5;
@@ -162,14 +163,16 @@ function js_div(a, b) { return (a / b) | 0; }
let div = builder.addImport("q", "js_div", kSig_i_ii);
builder.addImportedTable("q", "placeholder", kTableSize, kTableSize);
- let table_index = builder.addImportedTable("q", "table", kTableSize, kTableSize);
+ let table_index = builder.addImportedTable("q", "table", kTableSize,
+ kTableSize);
let g = builder.addImportedGlobal("q", "base", kWasmI32);
let sig_index = builder.addType(kSig_i_ii);
builder.addFunction("placeholder", sig_index)
.addBody([kExprLocalGet, 0]);
- builder.addElementSegment(table_index, g, true, [div]);
+ builder.addActiveElementSegment(table_index, WasmInitExpr.GlobalGet(g),
+ [div]);
builder.addFunction("main", kSig_i_ii)
.addBody([
kExprI32Const, 55, // --
diff --git a/deps/v8/test/mjsunit/wasm/indirect-calls.js b/deps/v8/test/mjsunit/wasm/indirect-calls.js
index f866b41d10..b5786174ed 100644
--- a/deps/v8/test/mjsunit/wasm/indirect-calls.js
+++ b/deps/v8/test/mjsunit/wasm/indirect-calls.js
@@ -169,7 +169,8 @@ function AddFunctions(builder) {
.exportAs("main");
builder.setTableBounds(length, length);
- builder.addElementSegment(0, base, false, [f.add.index, f.sub.index, f.mul.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(base),
+ [f.add.index, f.sub.index, f.mul.index]);
return builder.instantiate();
}
@@ -207,7 +208,8 @@ function AddFunctions(builder) {
builder.setTableBounds(10, 10);
var g = builder.addImportedGlobal("fff", "base", kWasmI32);
- builder.addElementSegment(0, g, true, [f.mul.index, f.add.index, f.sub.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g),
+ [f.mul.index, f.add.index, f.sub.index]);
var module = new WebAssembly.Module(builder.toBuffer());
diff --git a/deps/v8/test/mjsunit/wasm/indirect-tables.js b/deps/v8/test/mjsunit/wasm/indirect-tables.js
index 8296e97b8e..e0c619b0f5 100644
--- a/deps/v8/test/mjsunit/wasm/indirect-tables.js
+++ b/deps/v8/test/mjsunit/wasm/indirect-tables.js
@@ -50,8 +50,8 @@ function js_div(a, b) { return (a / b) | 0; }
builder.setTableBounds(10, 10);
let g = builder.addImportedGlobal("q", "base", kWasmI32);
- builder.addElementSegment(
- 0, g, true, [f.mul.index, f.add.index, f.sub.index, d]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g),
+ [f.mul.index, f.add.index, f.sub.index, d]);
builder.addExportOfKind("table", kExternalTable, 0);
let module = new WebAssembly.Module(builder.toBuffer());
@@ -109,8 +109,8 @@ function js_div(a, b) { return (a / b) | 0; }
let f = AddFunctions(builder);
builder.setTableBounds(kTableSize, kTableSize);
let g = builder.addImportedGlobal("q", "base", kWasmI32);
- builder.addElementSegment(
- 0, g, true, [f.mul.index, f.add.index, f.sub.index, d]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g),
+ [f.mul.index, f.add.index, f.sub.index, d]);
builder.addExportOfKind("table", kExternalTable, 0);
let m1 = new WebAssembly.Module(builder.toBuffer());
@@ -179,8 +179,8 @@ function js_div(a, b) { return (a / b) | 0; }
builder.addImportedTable("q", "table", kTableSize, kTableSize);
let g = builder.addImportedGlobal("q", "base", kWasmI32);
let f = AddFunctions(builder);
- builder.addElementSegment(
- 0, g, true, [f.mul.index, f.add.index, f.sub.index, d]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g),
+ [f.mul.index, f.add.index, f.sub.index, d]);
builder.addFunction("main", kSig_i_ii)
.addBody([
kExprI32Const, 55, // --
@@ -256,7 +256,7 @@ function js_div(a, b) { return (a / b) | 0; }
kExprLocalGet, 0,
kExprCallIndirect, sig_index, kTableZero]) // --
.exportAs("main");
- builder.addElementSegment(0, g, true, [f.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g), [f.index]);
let module = new WebAssembly.Module(builder.toBuffer());
@@ -297,7 +297,7 @@ function js_div(a, b) { return (a / b) | 0; }
.exportAs("main");
builder.setTableBounds(kTableSize, kTableSize);
- builder.addElementSegment(0, 0, false, [f1.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [f1.index]);
builder.addExportOfKind("table", kExternalTable, 0);
var m1 = new WebAssembly.Module(builder.toBuffer());
@@ -316,7 +316,7 @@ function js_div(a, b) { return (a / b) | 0; }
.exportAs("main");
builder.addImportedTable("z", "table", kTableSize, kTableSize);
- builder.addElementSegment(0, 1, false, [f2.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(1), [f2.index]);
var m2 = new WebAssembly.Module(builder.toBuffer());
@@ -411,7 +411,7 @@ function js_div(a, b) { return (a / b) | 0; }
kExprLocalGet, 0,
kExprCallIndirect, sig_index, kTableZero]) // --
.exportAs("main");
- builder.addElementSegment(0, g, true, [g]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g), [g]);
let module = new WebAssembly.Module(builder.toBuffer());
var instances = [];
@@ -542,7 +542,8 @@ function js_div(a, b) { return (a / b) | 0; }
let offset = i + 1;
let len = i + 2;
let index = indexes[i];
- builder.addElementSegment(0, offset, false, new Array(len).fill(index));
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ new Array(len).fill(index));
}
let instance = builder.instantiate();
@@ -586,7 +587,7 @@ function js_div(a, b) { return (a / b) | 0; }
builder1.setName('module_1');
builder1.addFunction('f', kSig_i_i).addBody([kExprLocalGet, 0]);
builder1.addImportedTable('z', 'table');
- builder1.addElementSegment(0, 0, false, [0]);
+ builder1.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0]);
let module1 = new WebAssembly.Module(builder1.toBuffer());
let instance1 =
new WebAssembly.Instance(module1, {z: {table: instance0.exports.table}});
@@ -622,9 +623,10 @@ function js_div(a, b) { return (a / b) | 0; }
let instance1 = new WebAssembly.Instance(module1, {'':{memory:mem_1}});
builder = new WasmModuleBuilder();
- builder.addFunction('main', kSig_i_v).addBody([kExprI32Const, 0, kExprI32LoadMem, 0, 0]);
+ builder.addFunction('main', kSig_i_v)
+ .addBody([kExprI32Const, 0, kExprI32LoadMem, 0, 0]);
builder.addImportedTable('', 'table');
- builder.addElementSegment(0, 0, false, [0]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0]);
builder.addImportedMemory('', 'memory', 1);
@@ -732,7 +734,7 @@ function js_div(a, b) { return (a / b) | 0; }
builder.setTableBounds(10, 10);
let g = builder.addImportedGlobal("q", "base", kWasmI32);
- builder.addElementSegment(0, g, true, [j, w]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g), [j, w]);
let module = new WebAssembly.Module(builder.toBuffer());
for (var i = 0; i < 5; i++) {
@@ -781,11 +783,12 @@ function js_div(a, b) { return (a / b) | 0; }
.exportAs("main");
let g = builder.addImportedGlobal("q", "base", kWasmI32);
- builder.addElementSegment(0, g, true, [j, w]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g), [j, w]);
let module = new WebAssembly.Module(builder.toBuffer());
for (var i = 0; i < 5; i++) {
- let instance = new WebAssembly.Instance(module, {q: {base: i, js_div: js_div, wasm_mul: wasm_mul, table: table}});
+ let instance = new WebAssembly.Instance(
+ module, {q: {base: i, js_div: js_div, wasm_mul: wasm_mul, table: table}});
let j = i + 1;
assertEquals((44/j)|0, instance.exports.main(j, i+0));
@@ -821,7 +824,7 @@ function js_div(a, b) { return (a / b) | 0; }
kExprCallIndirect, 0, kTableZero
])
.exportFunc();
- builder.addElementSegment(0, 0, false, [0, 1, 1, 0]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0, 1, 1, 0]);
return builder.instantiate({q: {f2: i1.exports.f2, f1: i1.exports.f1}});
})();
@@ -884,7 +887,7 @@ function js_div(a, b) { return (a / b) | 0; }
])
.exportFunc();
builder.exportMemoryAs("memory");
- builder.addElementSegment(0, 0, false, [0, 1, 2, 3]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0, 1, 2, 3]);
var instance = builder.instantiate({q: {f1: f100, f2: f200, f3: f300}});
setMemI32(instance, 0, 5000000);
setMemI32(instance, 4, 6000000);
diff --git a/deps/v8/test/mjsunit/wasm/loop-unrolling.js b/deps/v8/test/mjsunit/wasm/loop-unrolling.js
index 43852dec26..c281d30945 100644
--- a/deps/v8/test/mjsunit/wasm/loop-unrolling.js
+++ b/deps/v8/test/mjsunit/wasm/loop-unrolling.js
@@ -10,6 +10,29 @@
load("test/mjsunit/wasm/wasm-module-builder.js");
load("test/mjsunit/wasm/exceptions-utils.js");
+// Test that lowering a ror operator with int64-lowering does not produce
+// floating control, which is incompatible with loop unrolling.
+(function I64RorLoweringTest() {
+ let builder = new WasmModuleBuilder();
+ builder.addMemory(1000, 1000);
+
+ builder.addFunction("main", makeSig([kWasmI32, kWasmI64], []))
+ .addBody([
+ kExprLoop, kWasmVoid,
+ kExprLocalGet, 0x00,
+ kExprI32LoadMem, 0x00, 0x00,
+ kExprI64UConvertI32,
+ kExprLocalGet, 0x01,
+ kExprI64Ror,
+ kExprI32ConvertI64,
+ kExprBrIf, 0x00,
+ kExprEnd])
+ .exportFunc();
+
+ let module = new WebAssembly.Module(builder.toBuffer());
+ let instance = new WebAssembly.Instance(module);
+})();
+
// Test the interaction between multireturn and loop unrolling.
(function MultiBlockResultTest() {
let builder = new WasmModuleBuilder();
diff --git a/deps/v8/test/mjsunit/wasm/memory64.js b/deps/v8/test/mjsunit/wasm/memory64.js
index 5376ba87db..f9af2dc94d 100644
--- a/deps/v8/test/mjsunit/wasm/memory64.js
+++ b/deps/v8/test/mjsunit/wasm/memory64.js
@@ -50,11 +50,16 @@ function BasicMemory64Tests(num_pages) {
store(kStoreOffset, 11);
assertEquals(11, load(kStoreOffset));
- // Now check 100 random positions. All except for kStoreOffset should be zero.
+ // Now check 100 random positions.
for (let i = 0; i < 100; ++i) {
let position = Math.floor(Math.random() * num_bytes);
- if (position == kStoreOffset) continue;
- assertEquals(0, array[position]);
+ let expected = 0;
+ if (position == kStoreOffset) {
+ expected = 11;
+ } else if (num_bytes - position <= 4) {
+ expected = [0x12, 0x34, 0x56, 0x78][num_bytes - position - 1];
+ }
+ assertEquals(expected, array[position]);
}
}
diff --git a/deps/v8/test/mjsunit/wasm/multi-table-element-section.js b/deps/v8/test/mjsunit/wasm/multi-table-element-section.js
index 8e099c4ed3..68587f02d5 100644
--- a/deps/v8/test/mjsunit/wasm/multi-table-element-section.js
+++ b/deps/v8/test/mjsunit/wasm/multi-table-element-section.js
@@ -32,7 +32,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const f2 = builder_for_import.addFunction('f2', kSig_i_v)
.addBody([kExprI32Const, value2]).index;
- builder_for_import.addElementSegment(t1, offset1, false, [f1, f2]);
+ builder_for_import.addActiveElementSegment(t1, WasmInitExpr.I32Const(offset1),
+ [f1, f2]);
const instance_for_import = builder_for_import.instantiate();
const table1 = instance_for_import.exports.table;
assertEquals(value1, table1.get(offset1)());
@@ -55,11 +56,12 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
.addBody([kExprI32Const, value5]).index;
- builder.addElementSegment(t2, offset2, false, [f3, f4]);
- builder.addElementSegment(t3, offset3, false, [f5, f4]);
- builder.addElementSegment(t4, offset4, false, [f3, f5]);
+ builder.addActiveElementSegment(t2, WasmInitExpr.I32Const(offset2), [f3, f4]);
+ builder.addActiveElementSegment(t3, WasmInitExpr.I32Const(offset3), [f5, f4]);
+ builder.addActiveElementSegment(t4, WasmInitExpr.I32Const(offset4), [f3, f5]);
// Add one more overlapping offset
- builder.addElementSegment(t4, offset4 + 1, false, [f4, f3]);
+ builder.addActiveElementSegment(t4, WasmInitExpr.I32Const(offset4 + 1),
+ [f4, f3]);
const instance = builder.instantiate(instance_for_import);
// table2 == table1
diff --git a/deps/v8/test/mjsunit/wasm/reference-globals.js b/deps/v8/test/mjsunit/wasm/reference-globals.js
index 57f23ffb83..6edca3461b 100644
--- a/deps/v8/test/mjsunit/wasm/reference-globals.js
+++ b/deps/v8/test/mjsunit/wasm/reference-globals.js
@@ -17,9 +17,9 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
.addBody([kExprLocalGet, 0, kExprLocalGet, 1, kExprI32Add])
.exportFunc();
- var global = builder.addGlobal(wasmRefType(sig_index), false);
- global.function_index = addition_index;
- global.exportAs("global");
+ builder.addGlobal(wasmRefType(sig_index), false,
+ WasmInitExpr.RefFunc(addition_index))
+ .exportAs("global");
builder.addGlobal(wasmOptRefType(wrong_sig_index), false)
.exportAs("mistyped_global");
diff --git a/deps/v8/test/mjsunit/wasm/reference-tables.js b/deps/v8/test/mjsunit/wasm/reference-tables.js
index cfbe238e6b..7788a80668 100644
--- a/deps/v8/test/mjsunit/wasm/reference-tables.js
+++ b/deps/v8/test/mjsunit/wasm/reference-tables.js
@@ -115,7 +115,8 @@ load('test/mjsunit/wasm/wasm-module-builder.js');
.addBody([kExprLocalGet, 0, kExprLocalGet, 1, kExprI32Sub])
.exportFunc();
- var table = builder.addTable(wasmRefType(binary_type), 3, 3, addition.index);
+ var table = builder.addTable(wasmRefType(binary_type), 3, 3,
+ WasmInitExpr.RefFunc(addition.index));
builder.addFunction('init', kSig_v_v)
.addBody([
diff --git a/deps/v8/test/mjsunit/wasm/return-calls.js b/deps/v8/test/mjsunit/wasm/return-calls.js
index 0cf2639d5b..9613b638db 100644
--- a/deps/v8/test/mjsunit/wasm/return-calls.js
+++ b/deps/v8/test/mjsunit/wasm/return-calls.js
@@ -140,7 +140,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
// Arbitrary location in the table.
const tableIndex = 3;
- builder.addElementSegment(0, tableIndex,false,[pick]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(tableIndex),[pick]);
let main = builder.addFunction("main", kSig_i_iii)
.addBody([
diff --git a/deps/v8/test/mjsunit/wasm/simd-globals.js b/deps/v8/test/mjsunit/wasm/simd-globals.js
index f678b59f65..ea87d9f09b 100644
--- a/deps/v8/test/mjsunit/wasm/simd-globals.js
+++ b/deps/v8/test/mjsunit/wasm/simd-globals.js
@@ -11,8 +11,9 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
// initialization expression into the globals area of the module.
(function TestS128GlobalInitialization() {
var builder = new WasmModuleBuilder();
- var g = builder.addGlobal(kWasmS128);
- g.init = [1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0];
+ var g = builder.addGlobal(
+ kWasmS128, false, WasmInitExpr.S128Const(
+ [1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0]));
// Check that all lanes have the right values by creating 4 functions that
// extract each lane.
diff --git a/deps/v8/test/mjsunit/wasm/stack.js b/deps/v8/test/mjsunit/wasm/stack.js
index be9d54a064..9f377a376b 100644
--- a/deps/v8/test/mjsunit/wasm/stack.js
+++ b/deps/v8/test/mjsunit/wasm/stack.js
@@ -56,8 +56,7 @@ builder.addFunction("exec_unreachable", kSig_v_v)
// Make this function unnamed, just to test also this case.
var mem_oob_func = builder.addFunction(undefined, kSig_i_v)
// Access the memory at offset -1, to provoke a trap.
- .addBody([kExprI32Const, 0x7f, kExprI32LoadMem8S, 0, 0])
- .exportAs("mem_out_of_bounds");
+ .addBody([kExprI32Const, 0x7f, kExprI32LoadMem8S, 0, 0]);
// Call the mem_out_of_bounds function, in order to have two wasm stack frames.
builder.addFunction("call_mem_out_of_bounds", kSig_i_v)
@@ -70,9 +69,9 @@ var module = builder.instantiate({mod: {func: STACK}});
var expected_string = 'Error\n' +
// The line numbers below will change as this test gains / loses lines..
' at STACK (stack.js:38:11)\n' + // --
- ' at main (<anonymous>:wasm-function[1]:0x86)\n' + // --
- ' at testSimpleStack (stack.js:77:18)\n' + // --
- ' at stack.js:79:3'; // --
+ ' at main (<anonymous>:wasm-function[1]:0x72)\n' + // --
+ ' at testSimpleStack (stack.js:76:18)\n' + // --
+ ' at stack.js:78:3'; // --
module.exports.main();
assertEquals(expected_string, stripPath(stack));
@@ -90,9 +89,9 @@ Error.prepareStackTrace = function(error, frames) {
verifyStack(stack, [
// isWasm function line pos file offset funcIndex
[ false, "STACK", 38, 0, "stack.js"],
- [ true, "main", 1, 0x86, "wasm://wasm/7168ab72", '0x86', 1],
- [ false, "testStackFrames", 88, 0, "stack.js"],
- [ false, null, 97, 0, "stack.js"]
+ [ true, "main", 1, 0x72, "wasm://wasm/862e1cf6", '0x72', 1],
+ [ false, "testStackFrames", 87, 0, "stack.js"],
+ [ false, null, 96, 0, "stack.js"]
]);
})();
@@ -104,9 +103,9 @@ Error.prepareStackTrace = function(error, frames) {
assertContains("unreachable", e.message);
verifyStack(e.stack, [
// isWasm function line pos file offset funcIndex
- [ true, "exec_unreachable", 1, 0x8b, "wasm://wasm/7168ab72", '0x8b', 2],
- [ false, "testWasmUnreachable", 101, 0, "stack.js"],
- [ false, null, 112, 0, "stack.js"]
+ [ true, "exec_unreachable", 1, 0x77, "wasm://wasm/862e1cf6", '0x77', 2],
+ [ false, "testWasmUnreachable", 100, 0, "stack.js"],
+ [ false, null, 111, 0, "stack.js"]
]);
}
})();
@@ -119,10 +118,10 @@ Error.prepareStackTrace = function(error, frames) {
assertContains("out of bounds", e.message);
verifyStack(e.stack, [
// isWasm function line pos file offset funcIndex
- [ true, "mem_out_of_bounds", 1, 0x91, "wasm://wasm/7168ab72", '0x91', 3],
- [ true, "call_mem_out_of_bounds", 1, 0x97, "wasm://wasm/7168ab72", '0x97', 4],
- [ false, "testWasmMemOutOfBounds", 116, 0, "stack.js"],
- [ false, null, 128, 0, "stack.js"]
+ [ true, null, 1, 0x7d, "wasm://wasm/862e1cf6", '0x7d', 3],
+ [ true, "call_mem_out_of_bounds", 1, 0x83, "wasm://wasm/862e1cf6", '0x83', 4],
+ [ false, "testWasmMemOutOfBounds", 115, 0, "stack.js"],
+ [ false, null, 127, 0, "stack.js"]
]);
}
})();
@@ -177,8 +176,8 @@ Error.prepareStackTrace = function(error, frames) {
verifyStack(e.stack, [
// isWasm function line pos file offset funcIndex
[ true, 'main', 1, unreachable_pos + 0x25, 'wasm://wasm/000600e6', hexOffset, 0],
- [ false, 'testBigOffset', 172, 0, 'stack.js'],
- [ false, null, 184, 0, 'stack.js']
+ [ false, 'testBigOffset', 171, 0, 'stack.js'],
+ [ false, null, 183, 0, 'stack.js']
]);
}
})();
diff --git a/deps/v8/test/mjsunit/wasm/table-access.js b/deps/v8/test/mjsunit/wasm/table-access.js
index 1f070d01f9..febdd41c38 100644
--- a/deps/v8/test/mjsunit/wasm/table-access.js
+++ b/deps/v8/test/mjsunit/wasm/table-access.js
@@ -117,8 +117,10 @@ const dummy_func = exports.set_table_func1;
const offset1 = 3;
const offset2 = 9;
- builder.addElementSegment(t1, offset1, false, [f1.index, f2.index]);
- builder.addElementSegment(t2, offset2, false, [f3.index, f1.index]);
+ builder.addActiveElementSegment(t1, WasmInitExpr.I32Const(offset1),
+ [f1.index, f2.index]);
+ builder.addActiveElementSegment(t2, WasmInitExpr.I32Const(offset2),
+ [f3.index, f1.index]);
const instance = builder.instantiate();
diff --git a/deps/v8/test/mjsunit/wasm/table-copy-externref.js b/deps/v8/test/mjsunit/wasm/table-copy-externref.js
index 391fb606bd..c3579c83ae 100644
--- a/deps/v8/test/mjsunit/wasm/table-copy-externref.js
+++ b/deps/v8/test/mjsunit/wasm/table-copy-externref.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --experimental-wasm-bulk-memory --experimental-wasm-reftypes
+// Flags: --experimental-wasm-reftypes
load('test/mjsunit/wasm/wasm-module-builder.js');
diff --git a/deps/v8/test/mjsunit/wasm/table-copy.js b/deps/v8/test/mjsunit/wasm/table-copy.js
index ead06f4f23..754c7dfd52 100644
--- a/deps/v8/test/mjsunit/wasm/table-copy.js
+++ b/deps/v8/test/mjsunit/wasm/table-copy.js
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --experimental-wasm-bulk-memory
-
load("test/mjsunit/wasm/wasm-module-builder.js");
function addFunction(builder, k) {
diff --git a/deps/v8/test/mjsunit/wasm/table-get.js b/deps/v8/test/mjsunit/wasm/table-get.js
index 9ec0667dbc..534c5a109f 100644
--- a/deps/v8/test/mjsunit/wasm/table-get.js
+++ b/deps/v8/test/mjsunit/wasm/table-get.js
@@ -11,7 +11,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const f1 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 11]);
const f2 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 22]);
const offset = 3;
- builder.addElementSegment(0, offset, false, [f1.index, f2.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ [f1.index, f2.index]);
const instance = builder.instantiate();
@@ -27,7 +28,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const f2 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 22])
.exportAs("f2");
const offset = 3;
- builder.addElementSegment(0, offset, false, [f1.index, f2.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ [f1.index, f2.index]);
const instance = builder.instantiate();
@@ -42,8 +44,10 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const f1 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 11]);
const f2 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 22]);
const offset = 3;
- builder.addElementSegment(0, offset, false, [f1.index, f2.index]);
- builder.addElementSegment(0, offset + 1, false, [f1.index, f2.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ [f1.index, f2.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset + 1),
+ [f1.index, f2.index]);
const instance = builder.instantiate();
@@ -55,10 +59,12 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
print(arguments.callee.name);
const builder = new WasmModuleBuilder();
const table = builder.addTable(kWasmAnyFunc, 20).exportAs("table");
- const f1 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 11]).exportAs("f1");
+ const f1 = builder.addFunction('f', kSig_i_v)
+ .addBody([kExprI32Const, 11]).exportAs("f1");
const f2 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 22]);
const offset = 3;
- builder.addElementSegment(0, offset, false, [f1.index, f1.index, f1.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ [f1.index, f1.index, f1.index]);
const instance = builder.instantiate();
@@ -78,7 +84,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const f1 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 11]);
const f2 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 22]);
const offset = 3;
- builder.addElementSegment(0, offset, false, [f1.index, f1.index, f1.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ [f1.index, f1.index, f1.index]);
const instance = builder.instantiate();
@@ -97,7 +104,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const f1 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 11]);
const f2 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 22]);
const offset = 3;
- builder.addElementSegment(0, offset, false, [f1.index, f1.index, f1.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ [f1.index, f1.index, f1.index]);
const instance = builder.instantiate();
assertEquals(null, instance.exports.table.get(offset - 1));
@@ -111,7 +119,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const f1 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 11]);
const f2 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 22]);
const offset = 3;
- builder.addElementSegment(0, offset, false, [f1.index, f1.index, f1.index]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ [f1.index, f1.index, f1.index]);
const instance = builder.instantiate();
assertThrows(() => instance.exports.table.get(size + 3), RangeError);
@@ -125,7 +134,8 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const import1 = builder.addImport("q", "fun", kSig_i_ii);
const f1 = builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 11]);
const offset = 3;
- builder.addElementSegment(0, offset, false, [f1.index, import1]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(offset),
+ [f1.index, import1]);
const instance = builder.instantiate({q: {fun: () => 33}});
assertEquals(33, instance.exports.table.get(offset + 1)());
diff --git a/deps/v8/test/mjsunit/wasm/table-grow.js b/deps/v8/test/mjsunit/wasm/table-grow.js
index 2ed529463c..a8f7fd3418 100644
--- a/deps/v8/test/mjsunit/wasm/table-grow.js
+++ b/deps/v8/test/mjsunit/wasm/table-grow.js
@@ -132,7 +132,7 @@ let id = (() => { // identity exported function
builder.addImportedTable("q", "table", 5, 32);
let g = builder.addImportedGlobal("q", "base", kWasmI32);
- builder.addElementSegment(0, g, true,
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g),
[funcs.mul.index, funcs.add.index, funcs.sub.index]);
builder.addExportOfKind("table", kExternalTable, 0);
let module = new WebAssembly.Module(builder.toBuffer());
@@ -179,7 +179,7 @@ let id = (() => { // identity exported function
let t = builder.addImport("q", "exp_ten", sig_i_v);
builder.setTableBounds(7, 35);
- builder.addElementSegment(0, g1, true, [a, i, t]);
+ builder.addActiveElementSegment(0, WasmInitExpr.GlobalGet(g1), [a, i, t]);
builder.addExportOfKind("table", kExternalTable, 0);
let module = new WebAssembly.Module(builder.toBuffer());
@@ -212,7 +212,8 @@ let id = (() => { // identity exported function
let funcs = addFunctions(builder1);
builder1.addImportedTable("q", "table", 6, 36);
- builder1.addElementSegment(0, g, true,
+ builder1.addActiveElementSegment(
+ 0, WasmInitExpr.GlobalGet(g),
[funcs.mul.index, funcs.add.index, funcs.sub.index]);
let module1 = new WebAssembly.Module(builder1.toBuffer());
@@ -228,7 +229,7 @@ let id = (() => { // identity exported function
}
for (let i = 3; i < 10; i++) {
- let instance1 = new WebAssembly.Instance(module1, {q: {base: i, table: table}});
+ new WebAssembly.Instance(module1, {q: {base: i, table: table}});
verifyTableFuncs(i);
var prev = table.length;
assertEquals(prev, table.grow(3));
@@ -264,7 +265,7 @@ let id = (() => { // identity exported function
kExprLocalGet, 0,
kExprCallIndirect, index_i_ii, kTableZero])
.exportAs("main");
- builder.addElementSegment(0, 0, false, [0]);
+ builder.addActiveElementSegment(0, WasmInitExpr.I32Const(0), [0]);
return new WebAssembly.Module(builder.toBuffer());
}
diff --git a/deps/v8/test/mjsunit/wasm/unreachable-validation.js b/deps/v8/test/mjsunit/wasm/unreachable-validation.js
index a9165639ab..f463379367 100644
--- a/deps/v8/test/mjsunit/wasm/unreachable-validation.js
+++ b/deps/v8/test/mjsunit/wasm/unreachable-validation.js
@@ -125,7 +125,7 @@ run(I, "U (iblock 0 (block br1)) drop", [unr, ...iblock, ...zero, ...block, ...b
run(I, "U (iblock 0 (block 0 brt1)) drop", [unr, ...iblock, ...zero, ...block, ...zero, ...brt1, end, end, drop]);
run(I, "U (block (iblock 0 0 brt01) drop)", [unr, ...block, ...iblock, ...zero, ...zero, ...brt01, end, drop, end]);
run(V, "(iblock (iblock U 0 brt01)) drop", [...iblock, ...iblock, unr, ...zero, ...brt01, end, end, drop]);
-run(I, "(block (fblock U 0 brt01) drop)", [...iblock, ...fblock, unr, ...zero, ...brt01, end, drop, end]);
-run(I, "(iblock (fblock U 0 brt01) drop 0) drop", [...iblock, ...fblock, unr, ...zero, ...brt01, end, drop, ...zero, end, drop]);
+run(I, "(block (fblock U 0 brt01) drop)", [...block, ...fblock, unr, ...zero, ...brt01, end, drop, end]);
+run(V, "(iblock (fblock U 0 brt01) drop 0) drop", [...iblock, ...fblock, unr, ...zero, ...brt01, end, drop, ...zero, end, drop]);
run(I, "(iblock (block (U brif 1))", [...iblock, ...block, unr, kExprBrIf, 0, end, end, kExprDrop]);
diff --git a/deps/v8/test/mjsunit/wasm/wasm-module-builder.js b/deps/v8/test/mjsunit/wasm/wasm-module-builder.js
index d3ae3a9b4a..ca813a8a87 100644
--- a/deps/v8/test/mjsunit/wasm/wasm-module-builder.js
+++ b/deps/v8/test/mjsunit/wasm/wasm-module-builder.js
@@ -24,7 +24,9 @@ function bytes(...input) {
for (let i = 0; i < input.length; i++) {
let val = input[i];
if (typeof val == 'string') {
- assertEquals(1, val.length, 'string inputs must have length 1');
+ if (val.length != 1) {
+ throw new Error('string inputs must have length 1');
+ }
val = val.charCodeAt(0);
}
view[i] = val | 0;
@@ -122,11 +124,11 @@ function wasmRefType(index) {
let kWasmI31Ref = 0x6a;
let kWasmRttWithDepth = 0x69;
function wasmRtt(index, depth) {
- return { opcode: kWasmRttWithDepth, index: index, depth: depth };
+ return {opcode: kWasmRttWithDepth, index: index, depth: depth};
}
let kWasmRtt = 0x68;
function wasmRttNoDepth(index) {
- return { opcode: kWasmRtt, index: index };
+ return {opcode: kWasmRtt, index: index};
}
let kWasmDataRef = 0x67;
@@ -413,6 +415,7 @@ const kWasmOpcodes = {
'RefAsNonNull': 0xd3,
'BrOnNull': 0xd4,
'RefEq': 0xd5,
+ 'BrOnNonNull': 0xd6
};
function defineWasmOpcode(name, value) {
@@ -463,6 +466,7 @@ let kExprRttSub = 0x31;
let kExprRefTest = 0x40;
let kExprRefCast = 0x41;
let kExprBrOnCast = 0x42;
+let kExprBrOnCastFail = 0x43;
let kExprRefIsFunc = 0x50;
let kExprRefIsData = 0x51;
let kExprRefIsI31 = 0x52;
@@ -824,20 +828,21 @@ let kTrapElemSegmentDropped = 10;
let kTrapRethrowNull = 11;
let kTrapMsgs = [
- 'unreachable',
- 'memory access out of bounds',
- 'divide by zero',
- 'divide result unrepresentable',
- 'remainder by zero',
- 'float unrepresentable in integer range',
- 'table index is out of bounds',
- 'function signature mismatch',
- 'operation does not support unaligned accesses',
- 'data segment has been dropped',
- 'element segment has been dropped',
- 'rethrowing null value'
+ 'unreachable', // --
+ 'memory access out of bounds', // --
+ 'divide by zero', // --
+ 'divide result unrepresentable', // --
+ 'remainder by zero', // --
+ 'float unrepresentable in integer range', // --
+ 'table index is out of bounds', // --
+ 'null function or function signature mismatch', // --
+ 'operation does not support unaligned accesses', // --
+ 'data segment has been dropped', // --
+ 'element segment has been dropped', // --
+ 'rethrowing null value' // --
];
+// This requires test/mjsunit/mjsunit.js.
function assertTraps(trap, code) {
assertThrows(code, WebAssembly.RuntimeError, kTrapMsgs[trap]);
}
@@ -939,6 +944,39 @@ class Binary {
}
}
+ emit_init_expr(expr) {
+ switch (expr.kind) {
+ case kExprGlobalGet:
+ this.emit_u8(kExprGlobalGet);
+ this.emit_u32v(expr.value);
+ break;
+ case kExprI32Const:
+ this.emit_bytes(wasmI32Const(expr.value));
+ break;
+ case kExprI64Const:
+ this.emit_bytes(wasmI64Const(expr.value));
+ break;
+ case kExprF32Const:
+ this.emit_bytes(wasmF32Const(expr.value));
+ break;
+ case kExprF64Const:
+ this.emit_bytes(wasmF64Const(expr.value));
+ break;
+ case kSimdPrefix:
+ this.emit_bytes(wasmS128Const(expr.value));
+ break;
+ case kExprRefFunc:
+ this.emit_u8(kExprRefFunc);
+ this.emit_u32v(expr.value);
+ break;
+ case kExprRefNull:
+ this.emit_u8(kExprRefNull);
+ this.emit_u32v(expr.value);
+ break;
+ }
+ this.emit_u8(kExprEnd); // end of init expression
+ }
+
emit_header() {
this.emit_bytes([
kWasmH0, kWasmH1, kWasmH2, kWasmH3, kWasmV0, kWasmV1, kWasmV2, kWasmV3
@@ -1035,12 +1073,58 @@ class WasmFunctionBuilder {
}
}
+class WasmInitExpr {
+ static I32Const(value) {
+ return {kind: kExprI32Const, value: value};
+ }
+ static I64Const(value) {
+ return {kind: kExprI64Const, value: value};
+ }
+ static F32Const(value) {
+ return {kind: kExprF32Const, value: value};
+ }
+ static F64Const(value) {
+ return {kind: kExprF64Const, value: value};
+ }
+ static S128Const(value) {
+ return {kind: kSimdPrefix, value: value};
+ }
+ static GlobalGet(index) {
+ return {kind: kExprGlobalGet, value: index};
+ }
+ static RefFunc(index) {
+ return {kind: kExprRefFunc, value: index};
+ }
+ static RefNull(type) {
+ return {kind: kExprRefNull, value: type};
+ }
+
+ static defaultFor(type) {
+ switch (type) {
+ case kWasmI32:
+ return this.I32Const(0);
+ case kWasmI64:
+ return this.I64Const(0);
+ case kWasmF32:
+ return this.F32Const(0);
+ case kWasmF64:
+ return this.F64Const(0);
+ case kWasmS128:
+ return this.S128Const(new Array(16).fill(0));
+ default:
+ let heap_type = (typeof type) == 'number' ? type : type.index;
+ return this.RefNull(heap_type);
+ }
+ }
+}
+
class WasmGlobalBuilder {
- constructor(module, type, mutable) {
+ // {init} a pair {type, immediate}. Construct it with WasmInitExpr.
+ constructor(module, type, mutable, init) {
this.module = module;
this.type = type;
this.mutable = mutable;
- this.init = 0;
+ this.init = init;
}
exportAs(name) {
@@ -1051,14 +1135,14 @@ class WasmGlobalBuilder {
}
class WasmTableBuilder {
- constructor(module, type, initial_size, max_size, init_func_index) {
+ constructor(module, type, initial_size, max_size, init_expr) {
this.module = module;
this.type = type;
this.initial_size = initial_size;
- this.has_max = max_size != undefined;
+ this.has_max = max_size !== undefined;
this.max_size = max_size;
- this.init_func_index = init_func_index;
- this.has_init = init_func_index != undefined;
+ this.init_expr = init_expr;
+ this.has_init = init_expr !== undefined;
}
exportAs(name) {
@@ -1069,14 +1153,17 @@ class WasmTableBuilder {
}
function makeField(type, mutability) {
- assertEquals(
- 'boolean', typeof mutability, 'field mutability must be boolean');
+ if ((typeof mutability) != 'boolean') {
+ throw new Error('field mutability must be boolean');
+ }
return {type: type, mutability: mutability};
}
class WasmStruct {
constructor(fields) {
- assertTrue(Array.isArray(fields), 'struct fields must be an array');
+ if (!Array.isArray(fields)) {
+ throw new Error('struct fields must be an array');
+ }
this.fields = fields;
}
}
@@ -1087,6 +1174,41 @@ class WasmArray {
}
}
+class WasmElemSegment {
+ constructor(table, offset, type, elements, is_decl) {
+ this.table = table;
+ this.offset = offset;
+ this.type = type;
+ this.elements = elements;
+ this.is_decl = is_decl;
+ // Invariant checks.
+ if ((table === undefined) != (offset === undefined)) {
+ throw new Error("invalid element segment");
+ }
+ for (let elem of elements) {
+ if (((typeof elem) == 'number') != (type === undefined)) {
+ throw new Error("invalid element");
+ }
+ }
+ }
+
+ is_active() {
+ return this.table !== undefined;
+ }
+
+ is_passive() {
+ return this.table === undefined && !this.is_decl;
+ }
+
+ is_declarative() {
+ return this.table === undefined && this.is_decl;
+ }
+
+ expressions_as_elements() {
+ return this.type !== undefined;
+ }
+}
+
class WasmModuleBuilder {
constructor() {
this.types = [];
@@ -1179,21 +1301,22 @@ class WasmModuleBuilder {
return this.types.length - 1;
}
- addGlobal(type, mutable) {
- let glob = new WasmGlobalBuilder(this, type, mutable);
+ addGlobal(type, mutable, init) {
+ if (init === undefined) init = WasmInitExpr.defaultFor(type);
+ let glob = new WasmGlobalBuilder(this, type, mutable, init);
glob.index = this.globals.length + this.num_imported_globals;
this.globals.push(glob);
return glob;
}
addTable(
- type, initial_size, max_size = undefined, init_func_index = undefined) {
+ type, initial_size, max_size = undefined, init_expr = undefined) {
if (type == kWasmI32 || type == kWasmI64 || type == kWasmF32 ||
type == kWasmF64 || type == kWasmS128 || type == kWasmVoid) {
throw new Error('Tables must be of a reference type');
}
let table = new WasmTableBuilder(
- this, type, initial_size, max_size, init_func_index);
+ this, type, initial_size, max_size, init_expr);
table.index = this.tables.length + this.num_imported_tables;
this.tables.push(table);
return table;
@@ -1299,7 +1422,7 @@ class WasmModuleBuilder {
}
addExportOfKind(name, kind, index) {
- if (index == undefined && kind != kExternalTable &&
+ if (index === undefined && kind != kExternalTable &&
kind != kExternalMemory) {
throw new Error(
'Index for exports other than tables/memories must be provided');
@@ -1335,28 +1458,29 @@ class WasmModuleBuilder {
this.exports.push({name: name, kind: kExternalMemory, index: 0});
}
- addElementSegment(table, base, is_global, array) {
- this.element_segments.push({
- table: table,
- base: base,
- is_global: is_global,
- array: array,
- is_active: true,
- is_declarative: false
- });
- return this;
+ // {offset} is an initializer expression.
+ // If {type} is undefined, then {elements} are function indices. Otherwise,
+ // they are initializer expressions.
+ addActiveElementSegment(table, offset, elements, type) {
+ this.element_segments.push(
+ new WasmElemSegment(table, offset, type, elements, false));
+ return this.element_segments.length - 1;
}
- addPassiveElementSegment(array) {
+ // If {type} is undefined, then {elements} are function indices. Otherwise,
+ // they are initializer expressions.
+ addPassiveElementSegment(elements, type) {
this.element_segments.push(
- {array: array, is_active: false, is_declarative: false});
- return this;
+ new WasmElemSegment(undefined, undefined, type, elements, false));
+ return this.element_segments.length - 1;
}
- addDeclarativeElementSegment(array) {
+ // If {type} is undefined, then {elements} are function indices. Otherwise,
+ // they are initializer expressions.
+ addDeclarativeElementSegment(elements, type) {
this.element_segments.push(
- {array: array, is_active: false, is_declarative: true});
- return this;
+ new WasmElemSegment(undefined, undefined, type, elements, true));
+ return this.element_segments.length - 1;
}
appendToTable(array) {
@@ -1375,7 +1499,7 @@ class WasmModuleBuilder {
if (table.has_max && table_size > table.max_size) {
table.max_size = table_size;
}
- return this.addElementSegment(0, base, false, array);
+ return this.addActiveElementSegment(0, WasmInitExpr.I32Const(base), array);
}
setTableBounds(min, max = undefined) {
@@ -1492,9 +1616,7 @@ class WasmModuleBuilder {
section.emit_u32v(table.initial_size);
if (table.has_max) section.emit_u32v(table.max_size);
if (table.has_init) {
- section.emit_u8(kExprRefFunc);
- section.emit_u32v(table.init_func_index);
- section.emit_u8(kExprEnd);
+ section.emit_init_expr(table.init_expr);
}
}
});
@@ -1507,8 +1629,9 @@ class WasmModuleBuilder {
section.emit_u8(1); // one memory entry
const has_max = wasm.memory.max !== undefined;
if (wasm.memory.is_memory64) {
- assertFalse(
- wasm.memory.shared, 'sharing memory64 is not supported (yet)');
+ if (wasm.memory.shared) {
+ throw new Error('sharing memory64 is not supported (yet)');
+ }
section.emit_u8(
has_max ? kLimitsMemory64WithMaximum : kLimitsMemory64NoMaximum);
section.emit_u64v(wasm.memory.min);
@@ -1545,56 +1668,7 @@ class WasmModuleBuilder {
for (let global of wasm.globals) {
section.emit_type(global.type);
section.emit_u8(global.mutable);
- if ((typeof global.init_index) == 'undefined') {
- // Emit a constant initializer.
- switch (global.type) {
- case kWasmI32:
- section.emit_u8(kExprI32Const);
- section.emit_u32v(global.init);
- break;
- case kWasmI64:
- section.emit_u8(kExprI64Const);
- section.emit_u64v(global.init);
- break;
- case kWasmF32:
- section.emit_bytes(wasmF32Const(global.init));
- break;
- case kWasmF64:
- section.emit_bytes(wasmF64Const(global.init));
- break;
- case kWasmS128:
- section.emit_bytes(wasmS128Const(global.init));
- break;
- case kWasmExternRef:
- section.emit_u8(kExprRefNull);
- section.emit_u8(kWasmExternRef);
- assertEquals(global.function_index, undefined);
- break;
- case kWasmAnyFunc:
- if (global.function_index !== undefined) {
- section.emit_u8(kExprRefFunc);
- section.emit_u32v(global.function_index);
- } else {
- section.emit_u8(kExprRefNull);
- section.emit_u8(kWasmAnyFunc);
- }
- break;
- default:
- if (global.function_index !== undefined) {
- section.emit_u8(kExprRefFunc);
- section.emit_u32v(global.function_index);
- } else {
- section.emit_u8(kExprRefNull);
- section.emit_u32v(global.type.index);
- }
- break;
- }
- } else {
- // Emit a global-index initializer.
- section.emit_u8(kExprGlobalGet);
- section.emit_u32v(global.init_index);
- }
- section.emit_u8(kExprEnd); // end of init expression
+ section.emit_init_expr(global.init);
}
});
}
@@ -1631,62 +1705,65 @@ class WasmModuleBuilder {
if (wasm.element_segments.length > 0) {
if (debug) print('emitting element segments @ ' + binary.length);
binary.emit_section(kElementSectionCode, section => {
- var inits = wasm.element_segments;
- section.emit_u32v(inits.length);
-
- for (let init of inits) {
- if (init.is_active) {
- // Active segment.
- if (init.table == 0) {
- section.emit_u32v(kActiveNoIndex);
- } else {
- section.emit_u32v(kActiveWithIndex);
- section.emit_u32v(init.table);
- }
- if (init.is_global) {
- section.emit_u8(kExprGlobalGet);
+ var segments = wasm.element_segments;
+ section.emit_u32v(segments.length);
+
+ for (let segment of segments) {
+ // Emit flag and header.
+ // Each case below corresponds to a flag from
+ // https://webassembly.github.io/spec/core/binary/modules.html#element-section
+ // (not in increasing order).
+ if (segment.is_active()) {
+ if (segment.table == 0 && segment.type === undefined) {
+ if (segment.expressions_as_elements()) {
+ section.emit_u8(0x04);
+ section.emit_init_expr(segment.offset);
+ } else {
+ section.emit_u8(0x00)
+ section.emit_init_expr(segment.offset);
+ }
} else {
- section.emit_u8(kExprI32Const);
- }
- section.emit_u32v(init.base);
- section.emit_u8(kExprEnd);
- if (init.table != 0) {
- section.emit_u8(kExternalFunction);
- }
- section.emit_u32v(init.array.length);
- for (let index of init.array) {
- section.emit_u32v(index);
- }
- } else if (
- init.is_declarative &&
- init.array.every(index => index !== null)) {
- section.emit_u8(kDeclarative);
- section.emit_u8(kExternalFunction);
- section.emit_u32v(init.array.length);
- for (let index of init.array) {
- section.emit_u32v(index);
+ if (segment.expressions_as_elements()) {
+ section.emit_u8(0x06);
+ section.emit_u32v(segment.table);
+ section.emit_init_expr(segment.offset);
+ section.emit_type(segment.type);
+ } else {
+ section.emit_u8(0x02);
+ section.emit_u32v(segment.table);
+ section.emit_init_expr(segment.offset);
+ section.emit_u8(kExternalFunction);
+ }
}
} else {
- // Passive or declarative segment with elements.
- section.emit_u8(
- init.is_declarative ? kDeclarativeWithElements :
- kPassiveWithElements); // flags
- section.emit_u8(kWasmAnyFunc);
- section.emit_u32v(init.array.length);
- for (let index of init.array) {
- if (index === null) {
- section.emit_u8(kExprRefNull);
- section.emit_u8(kWasmAnyFunc);
- section.emit_u8(kExprEnd);
+ if (segment.expressions_as_elements()) {
+ if (segment.is_passive()) {
+ section.emit_u8(0x05);
+ } else {
+ section.emit_u8(0x07);
+ }
+ section.emit_type(segment.type);
+ } else {
+ if (segment.is_passive()) {
+ section.emit_u8(0x01);
} else {
- section.emit_u8(kExprRefFunc);
- section.emit_u32v(index);
- section.emit_u8(kExprEnd);
+ section.emit_u8(0x03);
}
+ section.emit_u8(kExternalFunction);
+ }
+ }
+
+ // Emit elements.
+ section.emit_u32v(segment.elements.length);
+ for (let element of segment.elements) {
+ if (segment.expressions_as_elements()) {
+ section.emit_init_expr(element);
+ } else {
+ section.emit_u32v(element);
}
}
}
- });
+ })
}
// If there are any passive data segments, add the DataCount section.
@@ -1889,6 +1966,12 @@ function wasmI32Const(val) {
return [kExprI32Const, ...wasmSignedLeb(val, 5)];
}
+// Note: Since {val} is a JS number, the generated constant only has 53 bits of
+// precision.
+function wasmI64Const(val) {
+ return [kExprI64Const, ...wasmSignedLeb(val, 10)];
+}
+
function wasmF32Const(f) {
// Write in little-endian order at offset 0.
data_view.setFloat32(0, f, true);
diff --git a/deps/v8/test/test262/test262.status b/deps/v8/test/test262/test262.status
index 8cae693b58..189ccc382c 100644
--- a/deps/v8/test/test262/test262.status
+++ b/deps/v8/test/test262/test262.status
@@ -71,14 +71,15 @@
'language/expressions/prefix-increment/S11.4.4_A5_*': [FAIL],
'language/statements/variable/binding-resolution': [FAIL],
+ # https://code.google.com/p/v8/issues/detail?id=10958
+ 'language/module-code/eval-gtbndng-indirect-faux-assertion': [FAIL],
+
# https://code.google.com/p/v8/issues/detail?id=8771
'language/computed-property-names/class/static/method-number': [FAIL],
'language/computed-property-names/class/static/method-string': [FAIL],
'language/computed-property-names/class/static/method-symbol': [FAIL],
# https://bugs.chromium.org/p/v8/issues/detail?id=4895
- 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer': [FAIL],
- 'built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer': [FAIL],
# Some TypedArray methods throw due to the same bug, from Get
'built-ins/TypedArray/prototype/every/callbackfn-detachbuffer': [FAIL],
'built-ins/TypedArray/prototype/every/BigInt/callbackfn-detachbuffer': [FAIL],
@@ -573,11 +574,6 @@
# http://crbug/v8/10905
'language/identifier-resolution/assign-to-global-undefined': [FAIL],
- # https://bugs.chromium.org/p/chromium/issues/detail?id=1159764
- 'built-ins/Array/prototype/at/*': [FAIL],
- 'built-ins/String/prototype/at/*': [FAIL],
- 'built-ins/TypedArray/prototype/at/*': [FAIL],
-
# http://crbug/v8/11530
'built-ins/Function/internals/Call/class-ctor-realm': [FAIL],
@@ -590,6 +586,12 @@
# http://crbug/v8/11533
'language/statements/class/subclass/default-constructor-spread-override': [FAIL],
+ # https://bugs.chromium.org/p/v8/issues/detail?id=11689
+ 'built-ins/BigInt/wrapper-object-ordinary-toprimitive': [FAIL],
+
+ # https://bugs.chromium.org/p/v8/issues/detail?id=11690
+ 'language/module-code/export-expname-binding-index': [FAIL],
+
######################## NEEDS INVESTIGATION ###########################
# https://bugs.chromium.org/p/v8/issues/detail?id=7833
diff --git a/deps/v8/test/test262/testcfg.py b/deps/v8/test/test262/testcfg.py
index 42aeac4723..68c0b99cc7 100644
--- a/deps/v8/test/test262/testcfg.py
+++ b/deps/v8/test/test262/testcfg.py
@@ -45,6 +45,7 @@ from testrunner.outproc import test262
# TODO(littledan): move the flag mapping into the status file
FEATURE_FLAGS = {
'Intl.DateTimeFormat-dayPeriod': '--harmony-intl-dateformat-day-period',
+ 'Intl.Locale-info': '--harmony_intl_locale_info',
'Symbol.prototype.description': '--harmony-symbol-description',
'FinalizationRegistry': '--harmony-weak-refs-with-cleanup-some',
'WeakRef': '--harmony-weak-refs-with-cleanup-some',
@@ -54,6 +55,8 @@ FEATURE_FLAGS = {
'regexp-match-indices': '--harmony-regexp-match-indices',
# https://github.com/tc39/test262/pull/2395
'regexp-named-groups': '--harmony-regexp-match-indices',
+ 'error-cause': '--harmony-error-cause',
+ 'import-assertions': '--harmony-import-assertions',
}
SKIPPED_FEATURES = set([])
diff --git a/deps/v8/test/unittests/BUILD.gn b/deps/v8/test/unittests/BUILD.gn
index 43858603dc..f47b499413 100644
--- a/deps/v8/test/unittests/BUILD.gn
+++ b/deps/v8/test/unittests/BUILD.gn
@@ -86,6 +86,7 @@ v8_source_set("cppgc_unittests_sources") {
testonly = true
sources = [
+ "heap/cppgc/allocation-unittest.cc",
"heap/cppgc/compactor-unittest.cc",
"heap/cppgc/concurrent-marking-unittest.cc",
"heap/cppgc/concurrent-sweeper-unittest.cc",
@@ -101,6 +102,7 @@ v8_source_set("cppgc_unittests_sources") {
"heap/cppgc/heap-growing-unittest.cc",
"heap/cppgc/heap-object-header-unittest.cc",
"heap/cppgc/heap-page-unittest.cc",
+ "heap/cppgc/heap-registry-unittest.cc",
"heap/cppgc/heap-statistics-collector-unittest.cc",
"heap/cppgc/heap-unittest.cc",
"heap/cppgc/incremental-marking-schedule-unittest.cc",
@@ -117,6 +119,7 @@ v8_source_set("cppgc_unittests_sources") {
"heap/cppgc/page-memory-unittest.cc",
"heap/cppgc/persistent-family-unittest.cc",
"heap/cppgc/prefinalizer-unittest.cc",
+ "heap/cppgc/sanitizer-unittest.cc",
"heap/cppgc/source-location-unittest.cc",
"heap/cppgc/stack-unittest.cc",
"heap/cppgc/stats-collector-scopes-unittest.cc",
@@ -129,6 +132,7 @@ v8_source_set("cppgc_unittests_sources") {
"heap/cppgc/tests.h",
"heap/cppgc/visitor-unittest.cc",
"heap/cppgc/weak-container-unittest.cc",
+ "heap/cppgc/workloads-unittest.cc",
"heap/cppgc/write-barrier-unittest.cc",
]
@@ -359,6 +363,7 @@ v8_source_set("unittests_sources") {
"parser/ast-value-unittest.cc",
"parser/preparser-unittest.cc",
"profiler/strings-storage-unittest.cc",
+ "regexp/regexp-unittest.cc",
"regress/regress-crbug-1041240-unittest.cc",
"regress/regress-crbug-1056054-unittest.cc",
"regress/regress-crbug-938251-unittest.cc",
@@ -387,6 +392,10 @@ v8_source_set("unittests_sources") {
"zone/zone-unittest.cc",
]
+ if (v8_enable_runtime_call_stats) {
+ sources += [ "logging/runtime-call-stats-unittest.cc" ]
+ }
+
if (v8_enable_webassembly) {
sources += [
"../../test/common/wasm/wasm-macro-gen.h",
diff --git a/deps/v8/test/unittests/base/division-by-constant-unittest.cc b/deps/v8/test/unittests/base/division-by-constant-unittest.cc
index 19a084c5de..8fe57c21bd 100644
--- a/deps/v8/test/unittests/base/division-by-constant-unittest.cc
+++ b/deps/v8/test/unittests/base/division-by-constant-unittest.cc
@@ -8,7 +8,7 @@
#include <stdint.h>
-#include <ostream> // NOLINT
+#include <ostream>
#include "testing/gtest-support.h"
diff --git a/deps/v8/test/unittests/base/platform/platform-unittest.cc b/deps/v8/test/unittests/base/platform/platform-unittest.cc
index 192b51cf9c..c3a2874864 100644
--- a/deps/v8/test/unittests/base/platform/platform-unittest.cc
+++ b/deps/v8/test/unittests/base/platform/platform-unittest.cc
@@ -89,6 +89,7 @@ TEST(StackTest, GetCurrentStackPosition) {
EXPECT_NE(nullptr, Stack::GetCurrentStackPosition());
}
+#if !V8_OS_FUCHSIA
TEST(StackTest, StackVariableInBounds) {
void* dummy;
ASSERT_GT(static_cast<void*>(Stack::GetStackStart()),
@@ -98,6 +99,7 @@ TEST(StackTest, StackVariableInBounds) {
EXPECT_LT(static_cast<void*>(Stack::GetCurrentStackPosition()),
Stack::GetRealStackAddressForSlot(&dummy));
}
+#endif // !V8_OS_FUCHSIA
} // namespace base
} // namespace v8
diff --git a/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc b/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc
index 6137b3425a..121190bdb8 100644
--- a/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc
+++ b/deps/v8/test/unittests/codegen/code-stub-assembler-unittest.cc
@@ -5,7 +5,7 @@
#include "test/unittests/codegen/code-stub-assembler-unittest.h"
#include "src/codegen/code-factory.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/compiler/node.h"
#include "src/execution/isolate.h"
#include "src/objects/objects-inl.h"
diff --git a/deps/v8/test/unittests/compiler/arm64/instruction-selector-arm64-unittest.cc b/deps/v8/test/unittests/compiler/arm64/instruction-selector-arm64-unittest.cc
index 7a865c6d7f..f14f6a962e 100644
--- a/deps/v8/test/unittests/compiler/arm64/instruction-selector-arm64-unittest.cc
+++ b/deps/v8/test/unittests/compiler/arm64/instruction-selector-arm64-unittest.cc
@@ -642,6 +642,21 @@ TEST_P(InstructionSelectorAddSubTest, SignedExtendHalfword) {
ASSERT_EQ(1U, s[0]->OutputCount());
}
+TEST_P(InstructionSelectorAddSubTest, SignedExtendWord) {
+ const AddSub dpi = GetParam();
+ const MachineType type = dpi.mi.machine_type;
+ if (type != MachineType::Int64()) return;
+ StreamBuilder m(this, type, type, type);
+ m.Return((m.*dpi.mi.constructor)(m.Parameter(0),
+ m.ChangeInt32ToInt64(m.Parameter(1))));
+ Stream s = m.Build();
+ ASSERT_EQ(1U, s.size());
+ EXPECT_EQ(dpi.mi.arch_opcode, s[0]->arch_opcode());
+ EXPECT_EQ(kMode_Operand2_R_SXTW, s[0]->addressing_mode());
+ ASSERT_EQ(2U, s[0]->InputCount());
+ ASSERT_EQ(1U, s[0]->OutputCount());
+}
+
INSTANTIATE_TEST_SUITE_P(InstructionSelectorTest, InstructionSelectorAddSubTest,
::testing::ValuesIn(kAddSubInstructions));
@@ -5103,11 +5118,9 @@ namespace {
// Builds a call with the specified signature and nodes as arguments.
// Then checks that the correct number of kArm64Poke and kArm64PokePair were
// generated.
-void TestPokePair(
- InstructionSelectorTest::StreamBuilder* m, // NOLINT(runtime/references)
- Zone* zone,
- MachineSignature::Builder* builder, // NOLINT(runtime/references)
- Node* nodes[], int num_nodes, int expected_poke_pair, int expected_poke) {
+void TestPokePair(InstructionSelectorTest::StreamBuilder* m, Zone* zone,
+ MachineSignature::Builder* builder, Node* nodes[],
+ int num_nodes, int expected_poke_pair, int expected_poke) {
auto call_descriptor =
InstructionSelectorTest::StreamBuilder::MakeSimpleCallDescriptor(
zone, builder->Build());
diff --git a/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc b/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc
index 60ba115713..11ee5d2075 100644
--- a/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc
+++ b/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.cc
@@ -138,6 +138,14 @@ bool InstructionSelectorTest::Stream::IsSameAsFirst(
return unallocated->HasSameAsInputPolicy();
}
+bool InstructionSelectorTest::Stream::IsSameAsInput(
+ const InstructionOperand* operand, int input_index) const {
+ if (!operand->IsUnallocated()) return false;
+ const UnallocatedOperand* unallocated = UnallocatedOperand::cast(operand);
+ return unallocated->HasSameAsInputPolicy() &&
+ unallocated->input_index() == input_index;
+}
+
bool InstructionSelectorTest::Stream::IsUsedAtStart(
const InstructionOperand* operand) const {
if (!operand->IsUnallocated()) return false;
diff --git a/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.h b/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.h
index 203daca69f..3af4f7b587 100644
--- a/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.h
+++ b/deps/v8/test/unittests/compiler/backend/instruction-selector-unittest.h
@@ -234,6 +234,8 @@ class InstructionSelectorTest : public TestWithNativeContextAndZone {
bool IsFixed(const InstructionOperand* operand, Register reg) const;
bool IsSameAsFirst(const InstructionOperand* operand) const;
+ bool IsSameAsInput(const InstructionOperand* operand,
+ int input_index) const;
bool IsUsedAtStart(const InstructionOperand* operand) const;
FrameStateDescriptor* GetFrameStateDescriptor(int deoptimization_id) {
diff --git a/deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.cc b/deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.cc
index 3cfb050c79..d644906f1c 100644
--- a/deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.cc
+++ b/deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.cc
@@ -394,8 +394,8 @@ InstructionOperand InstructionSequenceTest::ConvertOutputOp(VReg vreg,
CHECK_EQ(op.vreg_.value_, kNoValue);
op.vreg_ = vreg;
switch (op.type_) {
- case kSameAsFirst:
- return Unallocated(op, UnallocatedOperand::SAME_AS_FIRST_INPUT);
+ case kSameAsInput:
+ return Unallocated(op, UnallocatedOperand::SAME_AS_INPUT);
case kRegister:
return Unallocated(op, UnallocatedOperand::MUST_HAVE_REGISTER);
case kFixedSlot:
diff --git a/deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.h b/deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.h
index 988bc37281..0a8768d063 100644
--- a/deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.h
+++ b/deps/v8/test/unittests/compiler/backend/instruction-sequence-unittest.h
@@ -42,7 +42,7 @@ class InstructionSequenceTest : public TestWithIsolateAndZone {
enum TestOperandType {
kInvalid,
- kSameAsFirst,
+ kSameAsInput,
kRegister,
kFixedRegister,
kSlot,
@@ -73,7 +73,7 @@ class InstructionSequenceTest : public TestWithIsolateAndZone {
MachineRepresentation rep_;
};
- static TestOperand Same() { return TestOperand(kSameAsFirst); }
+ static TestOperand Same() { return TestOperand(kSameAsInput); }
static TestOperand Reg(VReg vreg, int index = kNoValue) {
TestOperandType type = (index == kNoValue) ? kRegister : kFixedRegister;
diff --git a/deps/v8/test/unittests/compiler/dead-code-elimination-unittest.cc b/deps/v8/test/unittests/compiler/dead-code-elimination-unittest.cc
index 72e02e1416..8f30e54839 100644
--- a/deps/v8/test/unittests/compiler/dead-code-elimination-unittest.cc
+++ b/deps/v8/test/unittests/compiler/dead-code-elimination-unittest.cc
@@ -24,7 +24,8 @@ class DeadCodeEliminationTest : public GraphTest {
protected:
Reduction Reduce(AdvancedReducer::Editor* editor, Node* node) {
- DeadCodeElimination reducer(editor, graph(), common(), zone());
+ DeadCodeElimination reducer(editor, graph(), common(), zone(),
+ FLAG_concurrent_inlining);
return reducer.Reduce(node);
}
diff --git a/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc b/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc
index f01b1adddc..2b76e5289f 100644
--- a/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc
+++ b/deps/v8/test/unittests/compiler/effect-control-linearizer-unittest.cc
@@ -86,9 +86,8 @@ TEST_F(EffectControlLinearizerTest, SimpleLoad) {
// Run the state effect introducer.
LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(),
- node_origins(),
- MaskArrayIndexEnable::kDoNotMaskArrayIndex,
- MaintainSchedule::kDiscard, broker());
+ node_origins(), PoisoningMitigationLevel::kDontPoison,
+ broker());
EXPECT_THAT(load,
IsLoadField(AccessBuilder::ForHeapNumberValue(), heap_number,
@@ -149,9 +148,8 @@ TEST_F(EffectControlLinearizerTest, DiamondLoad) {
// Run the state effect introducer.
LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(),
- node_origins(),
- MaskArrayIndexEnable::kDoNotMaskArrayIndex,
- MaintainSchedule::kDiscard, broker());
+ node_origins(), PoisoningMitigationLevel::kDontPoison,
+ broker());
// The effect input to the return should be an effect phi with the
// newly introduced effectful change operators.
@@ -217,9 +215,8 @@ TEST_F(EffectControlLinearizerTest, LoopLoad) {
// Run the state effect introducer.
LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(),
- node_origins(),
- MaskArrayIndexEnable::kDoNotMaskArrayIndex,
- MaintainSchedule::kDiscard, broker());
+ node_origins(), PoisoningMitigationLevel::kDontPoison,
+ broker());
ASSERT_THAT(ret, IsReturn(load, load, if_true));
EXPECT_THAT(load, IsLoadField(AccessBuilder::ForHeapNumberValue(),
@@ -281,9 +278,8 @@ TEST_F(EffectControlLinearizerTest, CloneBranch) {
schedule.AddNode(mblock, graph()->end());
LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(),
- node_origins(),
- MaskArrayIndexEnable::kDoNotMaskArrayIndex,
- MaintainSchedule::kDiscard, broker());
+ node_origins(), PoisoningMitigationLevel::kDontPoison,
+ broker());
Capture<Node *> branch1_capture, branch2_capture;
EXPECT_THAT(
@@ -338,11 +334,11 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenBranch) {
ASSERT_THAT(end(), IsEnd(IsThrow(), IsThrow()));
ASSERT_THAT(end()->op()->ControlInputCount(), 2);
- // Run the state effect linearizer, maintaining the schedule.
- LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(),
- node_origins(),
- MaskArrayIndexEnable::kDoNotMaskArrayIndex,
- MaintainSchedule::kMaintain, broker());
+ // Run the state effect linearizer and machine lowering, maintaining the
+ // schedule.
+ LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(),
+ node_origins(), PoisoningMitigationLevel::kDontPoison,
+ broker());
ASSERT_THAT(end(), IsEnd(IsThrow()));
}
@@ -391,11 +387,11 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenDiamond) {
ASSERT_THAT(end(), IsEnd(IsThrow()));
ASSERT_THAT(end()->op()->ControlInputCount(), 1);
- // Run the state effect linearizer, maintaining the schedule.
- LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(),
- node_origins(),
- MaskArrayIndexEnable::kDoNotMaskArrayIndex,
- MaintainSchedule::kMaintain, broker());
+ // Run the state effect linearizer and machine lowering, maintaining the
+ // schedule.
+ LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(),
+ node_origins(), PoisoningMitigationLevel::kDontPoison,
+ broker());
ASSERT_THAT(end(), IsEnd(IsThrow()));
}
@@ -449,11 +445,11 @@ TEST_F(EffectControlLinearizerTest, UnreachableThenLoop) {
ASSERT_THAT(end(), IsEnd(IsThrow()));
ASSERT_THAT(end()->op()->ControlInputCount(), 1);
- // Run the state effect linearizer, maintaining the schedule.
- LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(),
- node_origins(),
- MaskArrayIndexEnable::kDoNotMaskArrayIndex,
- MaintainSchedule::kMaintain, broker());
+ // Run the state effect linearizer and machine lowering, maintaining the
+ // schedule.
+ LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(),
+ node_origins(), PoisoningMitigationLevel::kDontPoison,
+ broker());
ASSERT_THAT(end(), IsEnd(IsThrow()));
}
@@ -503,11 +499,11 @@ TEST_F(EffectControlLinearizerTest, UnreachableInChangedBlockThenBranch) {
ASSERT_THAT(end(), IsEnd(IsThrow(), IsThrow()));
ASSERT_THAT(end()->op()->ControlInputCount(), 2);
- // Run the state effect linearizer, maintaining the schedule.
- LinearizeEffectControl(jsgraph(), &schedule, zone(), source_positions(),
- node_origins(),
- MaskArrayIndexEnable::kDoNotMaskArrayIndex,
- MaintainSchedule::kMaintain, broker());
+ // Run the state effect linearizer and machine lowering, maintaining the
+ // schedule.
+ LowerToMachineSchedule(jsgraph(), &schedule, zone(), source_positions(),
+ node_origins(), PoisoningMitigationLevel::kDontPoison,
+ broker());
ASSERT_THAT(end(), IsEnd(IsThrow()));
}
diff --git a/deps/v8/test/unittests/compiler/ia32/instruction-selector-ia32-unittest.cc b/deps/v8/test/unittests/compiler/ia32/instruction-selector-ia32-unittest.cc
index 4478b36047..f3942b776e 100644
--- a/deps/v8/test/unittests/compiler/ia32/instruction-selector-ia32-unittest.cc
+++ b/deps/v8/test/unittests/compiler/ia32/instruction-selector-ia32-unittest.cc
@@ -658,6 +658,21 @@ TEST_F(InstructionSelectorTest, LoadAnd32) {
EXPECT_EQ(s.ToVreg(p1), s.ToVreg(s[0]->InputAt(1)));
}
+TEST_F(InstructionSelectorTest, LoadImmutableAnd32) {
+ StreamBuilder m(this, MachineType::Int32(), MachineType::Int32(),
+ MachineType::Int32());
+ Node* const p0 = m.Parameter(0);
+ Node* const p1 = m.Parameter(1);
+ m.Return(m.Word32And(
+ p0, m.LoadImmutable(MachineType::Int32(), p1, m.Int32Constant(127))));
+ Stream s = m.Build();
+ ASSERT_EQ(1U, s.size());
+ EXPECT_EQ(kIA32And, s[0]->arch_opcode());
+ ASSERT_EQ(3U, s[0]->InputCount());
+ EXPECT_EQ(s.ToVreg(p0), s.ToVreg(s[0]->InputAt(0)));
+ EXPECT_EQ(s.ToVreg(p1), s.ToVreg(s[0]->InputAt(1)));
+}
+
TEST_F(InstructionSelectorTest, LoadOr32) {
StreamBuilder m(this, MachineType::Int32(), MachineType::Int32(),
MachineType::Int32());
diff --git a/deps/v8/test/unittests/compiler/int64-lowering-unittest.cc b/deps/v8/test/unittests/compiler/int64-lowering-unittest.cc
index 8eafd4fe15..da23e61b93 100644
--- a/deps/v8/test/unittests/compiler/int64-lowering-unittest.cc
+++ b/deps/v8/test/unittests/compiler/int64-lowering-unittest.cc
@@ -4,7 +4,7 @@
#include "src/compiler/int64-lowering.h"
-#include "src/codegen/interface-descriptors.h"
+#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/machine-type.h"
#include "src/codegen/signature.h"
#include "src/compiler/common-operator.h"
@@ -429,9 +429,10 @@ TEST_F(Int64LoweringTest, ParameterWithJSClosureParam) {
IsReturn(js_closure, start(), start()));
}
-// The following tests assume that pointers are 32 bit and therefore pointers do
-// not get lowered. This assumption does not hold on 64 bit platforms, which
-// invalidates these tests.
+// The following tests are only valid in 32-bit platforms, due to one of these
+// two assumptions:
+// - Pointers are 32 bit and therefore pointers do not get lowered.
+// - 64-bit rol/ror/clz/ctz instructions have a control input.
// TODO(wasm): We can find an alternative to re-activate these tests.
#if V8_TARGET_ARCH_32_BIT
TEST_F(Int64LoweringTest, CallI64Return) {
@@ -514,6 +515,154 @@ TEST_F(Int64LoweringTest, Int64Add) {
IsProjection(1, AllOf(CaptureEq(&add), add_matcher)),
start(), start()));
}
+
+TEST_F(Int64LoweringTest, I64Clz) {
+ LowerGraph(graph()->NewNode(machine()->Word64ClzLowerable(),
+ Int64Constant(value(0)), graph()->start()),
+ MachineRepresentation::kWord64);
+
+ Capture<Node*> branch_capture;
+ Matcher<Node*> branch_matcher = IsBranch(
+ IsWord32Equal(IsInt32Constant(high_word_value(0)), IsInt32Constant(0)),
+ start());
+
+ EXPECT_THAT(
+ graph()->end()->InputAt(1),
+ IsReturn2(
+ IsPhi(MachineRepresentation::kWord32,
+ IsInt32Add(IsWord32Clz(IsInt32Constant(low_word_value(0))),
+ IsInt32Constant(32)),
+ IsWord32Clz(IsInt32Constant(high_word_value(0))),
+ IsMerge(
+ IsIfTrue(AllOf(CaptureEq(&branch_capture), branch_matcher)),
+ IsIfFalse(
+ AllOf(CaptureEq(&branch_capture), branch_matcher)))),
+ IsInt32Constant(0), start(), start()));
+}
+
+TEST_F(Int64LoweringTest, I64Ctz) {
+ LowerGraph(graph()->NewNode(machine()->Word64CtzLowerable().placeholder(),
+ Int64Constant(value(0)), graph()->start()),
+ MachineRepresentation::kWord64);
+ Capture<Node*> branch_capture;
+ Matcher<Node*> branch_matcher = IsBranch(
+ IsWord32Equal(IsInt32Constant(low_word_value(0)), IsInt32Constant(0)),
+ start());
+ EXPECT_THAT(
+ graph()->end()->InputAt(1),
+ IsReturn2(
+ IsPhi(MachineRepresentation::kWord32,
+ IsInt32Add(IsWord32Ctz(IsInt32Constant(high_word_value(0))),
+ IsInt32Constant(32)),
+ IsWord32Ctz(IsInt32Constant(low_word_value(0))),
+ IsMerge(
+ IsIfTrue(AllOf(CaptureEq(&branch_capture), branch_matcher)),
+ IsIfFalse(
+ AllOf(CaptureEq(&branch_capture), branch_matcher)))),
+ IsInt32Constant(0), start(), start()));
+}
+
+TEST_F(Int64LoweringTest, I64Ror) {
+ LowerGraph(
+ graph()->NewNode(machine()->Word64RorLowerable(), Int64Constant(value(0)),
+ Parameter(0), graph()->start()),
+ MachineRepresentation::kWord64, MachineRepresentation::kWord64, 1);
+
+ Matcher<Node*> branch_lt32_matcher =
+ IsBranch(IsInt32LessThan(IsParameter(0), IsInt32Constant(32)), start());
+
+ Matcher<Node*> low_input_matcher = IsPhi(
+ MachineRepresentation::kWord32, IsInt32Constant(low_word_value(0)),
+ IsInt32Constant(high_word_value(0)),
+ IsMerge(IsIfTrue(branch_lt32_matcher), IsIfFalse(branch_lt32_matcher)));
+
+ Matcher<Node*> high_input_matcher = IsPhi(
+ MachineRepresentation::kWord32, IsInt32Constant(high_word_value(0)),
+ IsInt32Constant(low_word_value(0)),
+ IsMerge(IsIfTrue(branch_lt32_matcher), IsIfFalse(branch_lt32_matcher)));
+
+ Matcher<Node*> shift_matcher =
+ IsWord32And(IsParameter(0), IsInt32Constant(0x1F));
+
+ Matcher<Node*> bit_mask_matcher = IsWord32Xor(
+ IsWord32Shr(IsInt32Constant(-1), shift_matcher), IsInt32Constant(-1));
+
+ Matcher<Node*> inv_mask_matcher =
+ IsWord32Xor(bit_mask_matcher, IsInt32Constant(-1));
+
+ EXPECT_THAT(
+ graph()->end()->InputAt(1),
+ IsReturn2(
+ IsWord32Or(IsWord32And(IsWord32Ror(low_input_matcher, shift_matcher),
+ inv_mask_matcher),
+ IsWord32And(IsWord32Ror(high_input_matcher, shift_matcher),
+ bit_mask_matcher)),
+ IsWord32Or(IsWord32And(IsWord32Ror(high_input_matcher, shift_matcher),
+ inv_mask_matcher),
+ IsWord32And(IsWord32Ror(low_input_matcher, shift_matcher),
+ bit_mask_matcher)),
+ start(), start()));
+}
+
+TEST_F(Int64LoweringTest, I64Ror_0) {
+ LowerGraph(
+ graph()->NewNode(machine()->Word64RorLowerable(), Int64Constant(value(0)),
+ Int32Constant(0), graph()->start()),
+ MachineRepresentation::kWord64);
+
+ EXPECT_THAT(graph()->end()->InputAt(1),
+ IsReturn2(IsInt32Constant(low_word_value(0)),
+ IsInt32Constant(high_word_value(0)), start(), start()));
+}
+
+TEST_F(Int64LoweringTest, I64Ror_32) {
+ LowerGraph(
+ graph()->NewNode(machine()->Word64RorLowerable(), Int64Constant(value(0)),
+ Int32Constant(32), graph()->start()),
+ MachineRepresentation::kWord64);
+
+ EXPECT_THAT(graph()->end()->InputAt(1),
+ IsReturn2(IsInt32Constant(high_word_value(0)),
+ IsInt32Constant(low_word_value(0)), start(), start()));
+}
+
+TEST_F(Int64LoweringTest, I64Ror_11) {
+ LowerGraph(
+ graph()->NewNode(machine()->Word64RorLowerable(), Int64Constant(value(0)),
+ Int32Constant(11), graph()->start()),
+ MachineRepresentation::kWord64);
+
+ EXPECT_THAT(
+ graph()->end()->InputAt(1),
+ IsReturn2(IsWord32Or(IsWord32Shr(IsInt32Constant(low_word_value(0)),
+ IsInt32Constant(11)),
+ IsWord32Shl(IsInt32Constant(high_word_value(0)),
+ IsInt32Constant(21))),
+ IsWord32Or(IsWord32Shr(IsInt32Constant(high_word_value(0)),
+ IsInt32Constant(11)),
+ IsWord32Shl(IsInt32Constant(low_word_value(0)),
+ IsInt32Constant(21))),
+ start(), start()));
+}
+
+TEST_F(Int64LoweringTest, I64Ror_43) {
+ LowerGraph(
+ graph()->NewNode(machine()->Word64RorLowerable(), Int64Constant(value(0)),
+ Int32Constant(43), graph()->start()),
+ MachineRepresentation::kWord64);
+
+ EXPECT_THAT(
+ graph()->end()->InputAt(1),
+ IsReturn2(IsWord32Or(IsWord32Shr(IsInt32Constant(high_word_value(0)),
+ IsInt32Constant(11)),
+ IsWord32Shl(IsInt32Constant(low_word_value(0)),
+ IsInt32Constant(21))),
+ IsWord32Or(IsWord32Shr(IsInt32Constant(low_word_value(0)),
+ IsInt32Constant(11)),
+ IsWord32Shl(IsInt32Constant(high_word_value(0)),
+ IsInt32Constant(21))),
+ start(), start()));
+}
#endif
TEST_F(Int64LoweringTest, Int64Sub) {
@@ -772,51 +921,6 @@ TEST_F(Int64LoweringTest, I64ReinterpretF64) {
start(), start()));
}
-TEST_F(Int64LoweringTest, I64Clz) {
- LowerGraph(graph()->NewNode(machine()->Word64Clz(), Int64Constant(value(0))),
- MachineRepresentation::kWord64);
-
- Capture<Node*> branch_capture;
- Matcher<Node*> branch_matcher = IsBranch(
- IsWord32Equal(IsInt32Constant(high_word_value(0)), IsInt32Constant(0)),
- start());
-
- EXPECT_THAT(
- graph()->end()->InputAt(1),
- IsReturn2(
- IsPhi(MachineRepresentation::kWord32,
- IsInt32Add(IsWord32Clz(IsInt32Constant(low_word_value(0))),
- IsInt32Constant(32)),
- IsWord32Clz(IsInt32Constant(high_word_value(0))),
- IsMerge(
- IsIfTrue(AllOf(CaptureEq(&branch_capture), branch_matcher)),
- IsIfFalse(
- AllOf(CaptureEq(&branch_capture), branch_matcher)))),
- IsInt32Constant(0), start(), start()));
-}
-
-TEST_F(Int64LoweringTest, I64Ctz) {
- LowerGraph(graph()->NewNode(machine()->Word64Ctz().placeholder(),
- Int64Constant(value(0))),
- MachineRepresentation::kWord64);
- Capture<Node*> branch_capture;
- Matcher<Node*> branch_matcher = IsBranch(
- IsWord32Equal(IsInt32Constant(low_word_value(0)), IsInt32Constant(0)),
- start());
- EXPECT_THAT(
- graph()->end()->InputAt(1),
- IsReturn2(
- IsPhi(MachineRepresentation::kWord32,
- IsInt32Add(IsWord32Ctz(IsInt32Constant(high_word_value(0))),
- IsInt32Constant(32)),
- IsWord32Ctz(IsInt32Constant(low_word_value(0))),
- IsMerge(
- IsIfTrue(AllOf(CaptureEq(&branch_capture), branch_matcher)),
- IsIfFalse(
- AllOf(CaptureEq(&branch_capture), branch_matcher)))),
- IsInt32Constant(0), start(), start()));
-}
-
TEST_F(Int64LoweringTest, Dfs) {
Node* common = Int64Constant(value(0));
LowerGraph(graph()->NewNode(machine()->Word64And(), common,
@@ -847,103 +951,6 @@ TEST_F(Int64LoweringTest, I64Popcnt) {
IsInt32Constant(0), start(), start()));
}
-TEST_F(Int64LoweringTest, I64Ror) {
- LowerGraph(graph()->NewNode(machine()->Word64Ror(), Int64Constant(value(0)),
- Parameter(0)),
- MachineRepresentation::kWord64, MachineRepresentation::kWord64, 1);
-
- Matcher<Node*> branch_lt32_matcher =
- IsBranch(IsInt32LessThan(IsParameter(0), IsInt32Constant(32)), start());
-
- Matcher<Node*> low_input_matcher = IsPhi(
- MachineRepresentation::kWord32, IsInt32Constant(low_word_value(0)),
- IsInt32Constant(high_word_value(0)),
- IsMerge(IsIfTrue(branch_lt32_matcher), IsIfFalse(branch_lt32_matcher)));
-
- Matcher<Node*> high_input_matcher = IsPhi(
- MachineRepresentation::kWord32, IsInt32Constant(high_word_value(0)),
- IsInt32Constant(low_word_value(0)),
- IsMerge(IsIfTrue(branch_lt32_matcher), IsIfFalse(branch_lt32_matcher)));
-
- Matcher<Node*> shift_matcher =
- IsWord32And(IsParameter(0), IsInt32Constant(0x1F));
-
- Matcher<Node*> bit_mask_matcher = IsWord32Xor(
- IsWord32Shr(IsInt32Constant(-1), shift_matcher), IsInt32Constant(-1));
-
- Matcher<Node*> inv_mask_matcher =
- IsWord32Xor(bit_mask_matcher, IsInt32Constant(-1));
-
- EXPECT_THAT(
- graph()->end()->InputAt(1),
- IsReturn2(
- IsWord32Or(IsWord32And(IsWord32Ror(low_input_matcher, shift_matcher),
- inv_mask_matcher),
- IsWord32And(IsWord32Ror(high_input_matcher, shift_matcher),
- bit_mask_matcher)),
- IsWord32Or(IsWord32And(IsWord32Ror(high_input_matcher, shift_matcher),
- inv_mask_matcher),
- IsWord32And(IsWord32Ror(low_input_matcher, shift_matcher),
- bit_mask_matcher)),
- start(), start()));
-}
-
-TEST_F(Int64LoweringTest, I64Ror_0) {
- LowerGraph(graph()->NewNode(machine()->Word64Ror(), Int64Constant(value(0)),
- Int32Constant(0)),
- MachineRepresentation::kWord64);
-
- EXPECT_THAT(graph()->end()->InputAt(1),
- IsReturn2(IsInt32Constant(low_word_value(0)),
- IsInt32Constant(high_word_value(0)), start(), start()));
-}
-
-TEST_F(Int64LoweringTest, I64Ror_32) {
- LowerGraph(graph()->NewNode(machine()->Word64Ror(), Int64Constant(value(0)),
- Int32Constant(32)),
- MachineRepresentation::kWord64);
-
- EXPECT_THAT(graph()->end()->InputAt(1),
- IsReturn2(IsInt32Constant(high_word_value(0)),
- IsInt32Constant(low_word_value(0)), start(), start()));
-}
-
-TEST_F(Int64LoweringTest, I64Ror_11) {
- LowerGraph(graph()->NewNode(machine()->Word64Ror(), Int64Constant(value(0)),
- Int32Constant(11)),
- MachineRepresentation::kWord64);
-
- EXPECT_THAT(
- graph()->end()->InputAt(1),
- IsReturn2(IsWord32Or(IsWord32Shr(IsInt32Constant(low_word_value(0)),
- IsInt32Constant(11)),
- IsWord32Shl(IsInt32Constant(high_word_value(0)),
- IsInt32Constant(21))),
- IsWord32Or(IsWord32Shr(IsInt32Constant(high_word_value(0)),
- IsInt32Constant(11)),
- IsWord32Shl(IsInt32Constant(low_word_value(0)),
- IsInt32Constant(21))),
- start(), start()));
-}
-
-TEST_F(Int64LoweringTest, I64Ror_43) {
- LowerGraph(graph()->NewNode(machine()->Word64Ror(), Int64Constant(value(0)),
- Int32Constant(43)),
- MachineRepresentation::kWord64);
-
- EXPECT_THAT(
- graph()->end()->InputAt(1),
- IsReturn2(IsWord32Or(IsWord32Shr(IsInt32Constant(high_word_value(0)),
- IsInt32Constant(11)),
- IsWord32Shl(IsInt32Constant(low_word_value(0)),
- IsInt32Constant(21))),
- IsWord32Or(IsWord32Shr(IsInt32Constant(low_word_value(0)),
- IsInt32Constant(11)),
- IsWord32Shl(IsInt32Constant(high_word_value(0)),
- IsInt32Constant(21))),
- start(), start()));
-}
-
TEST_F(Int64LoweringTest, I64PhiWord64) {
LowerGraph(graph()->NewNode(common()->Phi(MachineRepresentation::kWord64, 2),
Int64Constant(value(0)), Int64Constant(value(1)),
@@ -1063,20 +1070,20 @@ TEST_F(Int64LoweringTest, WasmBigIntSpecialCaseBigIntToI64) {
CallDescriptor* bigint_to_i64_call_descriptor =
Linkage::GetStubCallDescriptor(
- zone(), // zone
- BigIntToI64Descriptor(), // descriptor
- BigIntToI64Descriptor()
- .GetStackParameterCount(), // stack parameter count
- CallDescriptor::kNoFlags, // flags
- Operator::kNoProperties, // properties
- StubCallMode::kCallCodeObject); // stub call mode
+ zone(), // zone
+ BigIntToI64Descriptor(), // descriptor
+ BigIntToI64Descriptor::GetStackParameterCount(), // stack parameter
+ // count
+ CallDescriptor::kNoFlags, // flags
+ Operator::kNoProperties, // properties
+ StubCallMode::kCallCodeObject); // stub call mode
CallDescriptor* bigint_to_i32_pair_call_descriptor =
Linkage::GetStubCallDescriptor(
zone(), // zone
BigIntToI32PairDescriptor(), // descriptor
- BigIntToI32PairDescriptor()
- .GetStackParameterCount(), // stack parameter count
+ BigIntToI32PairDescriptor::
+ GetStackParameterCount(), // stack parameter count
CallDescriptor::kNoFlags, // flags
Operator::kNoProperties, // properties
StubCallMode::kCallCodeObject); // stub call mode
@@ -1109,20 +1116,20 @@ TEST_F(Int64LoweringTest, WasmBigIntSpecialCaseI64ToBigInt) {
CallDescriptor* i64_to_bigint_call_descriptor =
Linkage::GetStubCallDescriptor(
- zone(), // zone
- I64ToBigIntDescriptor(), // descriptor
- I64ToBigIntDescriptor()
- .GetStackParameterCount(), // stack parameter count
- CallDescriptor::kNoFlags, // flags
- Operator::kNoProperties, // properties
- StubCallMode::kCallCodeObject); // stub call mode
+ zone(), // zone
+ I64ToBigIntDescriptor(), // descriptor
+ I64ToBigIntDescriptor::GetStackParameterCount(), // stack parameter
+ // count
+ CallDescriptor::kNoFlags, // flags
+ Operator::kNoProperties, // properties
+ StubCallMode::kCallCodeObject); // stub call mode
CallDescriptor* i32_pair_to_bigint_call_descriptor =
Linkage::GetStubCallDescriptor(
zone(), // zone
I32PairToBigIntDescriptor(), // descriptor
- I32PairToBigIntDescriptor()
- .GetStackParameterCount(), // stack parameter count
+ I32PairToBigIntDescriptor::
+ GetStackParameterCount(), // stack parameter count
CallDescriptor::kNoFlags, // flags
Operator::kNoProperties, // properties
StubCallMode::kCallCodeObject); // stub call mode
diff --git a/deps/v8/test/unittests/compiler/js-call-reducer-unittest.cc b/deps/v8/test/unittests/compiler/js-call-reducer-unittest.cc
index a8020b6244..435495169a 100644
--- a/deps/v8/test/unittests/compiler/js-call-reducer-unittest.cc
+++ b/deps/v8/test/unittests/compiler/js-call-reducer-unittest.cc
@@ -117,7 +117,7 @@ class JSCallReducerTest : public TypedGraphTest {
return javascript()->Call(JSCallNode::ArityForArgc(arity), CallFrequency(),
feedback, ConvertReceiverMode::kAny,
SpeculationMode::kAllowSpeculation,
- CallFeedbackRelation::kRelated);
+ CallFeedbackRelation::kTarget);
}
private:
diff --git a/deps/v8/test/unittests/compiler/js-native-context-specialization-unittest.cc b/deps/v8/test/unittests/compiler/js-native-context-specialization-unittest.cc
index db11bd28ca..ca4d2a4f9a 100644
--- a/deps/v8/test/unittests/compiler/js-native-context-specialization-unittest.cc
+++ b/deps/v8/test/unittests/compiler/js-native-context-specialization-unittest.cc
@@ -8,7 +8,6 @@
#include "src/compiler/js-operator.h"
#include "src/compiler/machine-operator.h"
#include "src/compiler/simplified-operator.h"
-#include "src/numbers/dtoa.h"
namespace v8 {
namespace internal {
@@ -30,7 +29,7 @@ class JSNativeContextSpecializationTest : public GraphTest {
TEST_F(JSNativeContextSpecializationTest, GetMaxStringLengthOfString) {
const size_t str_len = 3;
- const size_t num_len = kBase10MaximalLength + 1;
+ const size_t num_len = kMaxDoubleStringLength;
Node* const str_node = graph()->NewNode(
common()->HeapConstant(factory()->InternalizeUtf8String("str")));
diff --git a/deps/v8/test/unittests/compiler/machine-operator-unittest.cc b/deps/v8/test/unittests/compiler/machine-operator-unittest.cc
index edb2942084..faa04e8a7a 100644
--- a/deps/v8/test/unittests/compiler/machine-operator-unittest.cc
+++ b/deps/v8/test/unittests/compiler/machine-operator-unittest.cc
@@ -191,6 +191,7 @@ const PureOperator kPureOperators[] = {
PURE(Word64Shr, 2, 0, 1), // --
PURE(Word64Sar, 2, 0, 1), // --
PURE(Word64Ror, 2, 0, 1), // --
+ PURE(Word64RorLowerable, 2, 1, 1), // --
PURE(Word64Equal, 2, 0, 1), // --
PURE(Int32Add, 2, 0, 1), // --
PURE(Int32Sub, 2, 0, 1), // --
@@ -253,7 +254,6 @@ const PureOperator kPureOperators[] = {
#undef PURE
};
-
class MachinePureOperatorTest : public TestWithZone {
protected:
MachineRepresentation word_type() {
@@ -308,6 +308,8 @@ const OptionalOperatorEntry kOptionalOperators[] = {
OPTIONAL_ENTRY(Float64RoundTiesAway, 1, 0, 1), // --
OPTIONAL_ENTRY(Float64Select, 3, 0, 1), // --
OPTIONAL_ENTRY(Float32Select, 3, 0, 1), // --
+ OPTIONAL_ENTRY(Word32Select, 3, 0, 1), // --
+ OPTIONAL_ENTRY(Word64Select, 3, 0, 1), // --
#undef OPTIONAL_ENTRY
};
diff --git a/deps/v8/test/unittests/compiler/node-test-utils.h b/deps/v8/test/unittests/compiler/node-test-utils.h
index d9afb36963..0e5e99679c 100644
--- a/deps/v8/test/unittests/compiler/node-test-utils.h
+++ b/deps/v8/test/unittests/compiler/node-test-utils.h
@@ -21,7 +21,7 @@ template <typename T>
class Handle;
class HeapObject;
class Type;
-enum TypeofMode : int;
+enum class TypeofMode;
namespace compiler {
diff --git a/deps/v8/test/unittests/compiler/ppc/OWNERS b/deps/v8/test/unittests/compiler/ppc/OWNERS
deleted file mode 100644
index 02c2cd757c..0000000000
--- a/deps/v8/test/unittests/compiler/ppc/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-junyan@redhat.com
-joransiu@ca.ibm.com
-midawson@redhat.com
-mfarazma@redhat.com
-vasili.skurydzin@ibm.com
diff --git a/deps/v8/test/unittests/compiler/riscv64/instruction-selector-riscv64-unittest.cc b/deps/v8/test/unittests/compiler/riscv64/instruction-selector-riscv64-unittest.cc
index 9df179139e..81dc2d3be9 100644
--- a/deps/v8/test/unittests/compiler/riscv64/instruction-selector-riscv64-unittest.cc
+++ b/deps/v8/test/unittests/compiler/riscv64/instruction-selector-riscv64-unittest.cc
@@ -1396,9 +1396,9 @@ TEST_F(InstructionSelectorTest, Word32EqualWithZero) {
m.Return(m.Word32Equal(m.Parameter(0), m.Int32Constant(0)));
Stream s = m.Build();
ASSERT_EQ(1U, s.size());
- EXPECT_EQ(kRiscvCmp, s[0]->arch_opcode());
+ EXPECT_EQ(kRiscvCmpZero, s[0]->arch_opcode());
EXPECT_EQ(kMode_None, s[0]->addressing_mode());
- ASSERT_EQ(2U, s[0]->InputCount());
+ ASSERT_EQ(1U, s[0]->InputCount());
EXPECT_EQ(1U, s[0]->OutputCount());
EXPECT_EQ(kFlags_set, s[0]->flags_mode());
EXPECT_EQ(kEqual, s[0]->flags_condition());
@@ -1408,9 +1408,9 @@ TEST_F(InstructionSelectorTest, Word32EqualWithZero) {
m.Return(m.Word32Equal(m.Int32Constant(0), m.Parameter(0)));
Stream s = m.Build();
ASSERT_EQ(1U, s.size());
- EXPECT_EQ(kRiscvCmp, s[0]->arch_opcode());
+ EXPECT_EQ(kRiscvCmpZero, s[0]->arch_opcode());
EXPECT_EQ(kMode_None, s[0]->addressing_mode());
- ASSERT_EQ(2U, s[0]->InputCount());
+ ASSERT_EQ(1U, s[0]->InputCount());
EXPECT_EQ(1U, s[0]->OutputCount());
EXPECT_EQ(kFlags_set, s[0]->flags_mode());
EXPECT_EQ(kEqual, s[0]->flags_condition());
@@ -1423,9 +1423,9 @@ TEST_F(InstructionSelectorTest, Word64EqualWithZero) {
m.Return(m.Word64Equal(m.Parameter(0), m.Int64Constant(0)));
Stream s = m.Build();
ASSERT_EQ(1U, s.size());
- EXPECT_EQ(kRiscvCmp, s[0]->arch_opcode());
+ EXPECT_EQ(kRiscvCmpZero, s[0]->arch_opcode());
EXPECT_EQ(kMode_None, s[0]->addressing_mode());
- ASSERT_EQ(2U, s[0]->InputCount());
+ ASSERT_EQ(1U, s[0]->InputCount());
EXPECT_EQ(1U, s[0]->OutputCount());
EXPECT_EQ(kFlags_set, s[0]->flags_mode());
EXPECT_EQ(kEqual, s[0]->flags_condition());
@@ -1435,9 +1435,9 @@ TEST_F(InstructionSelectorTest, Word64EqualWithZero) {
m.Return(m.Word64Equal(m.Int32Constant(0), m.Parameter(0)));
Stream s = m.Build();
ASSERT_EQ(1U, s.size());
- EXPECT_EQ(kRiscvCmp, s[0]->arch_opcode());
+ EXPECT_EQ(kRiscvCmpZero, s[0]->arch_opcode());
EXPECT_EQ(kMode_None, s[0]->addressing_mode());
- ASSERT_EQ(2U, s[0]->InputCount());
+ ASSERT_EQ(1U, s[0]->InputCount());
EXPECT_EQ(1U, s[0]->OutputCount());
EXPECT_EQ(kFlags_set, s[0]->flags_mode());
EXPECT_EQ(kEqual, s[0]->flags_condition());
diff --git a/deps/v8/test/unittests/compiler/x64/instruction-selector-x64-unittest.cc b/deps/v8/test/unittests/compiler/x64/instruction-selector-x64-unittest.cc
index 4dcbbf2eb8..d2591a52ef 100644
--- a/deps/v8/test/unittests/compiler/x64/instruction-selector-x64-unittest.cc
+++ b/deps/v8/test/unittests/compiler/x64/instruction-selector-x64-unittest.cc
@@ -77,6 +77,34 @@ TEST_F(InstructionSelectorTest, TruncateInt64ToInt32WithParameter) {
EXPECT_EQ(kX64Movl, s[0]->arch_opcode());
}
+TEST_F(InstructionSelectorTest, SelectWord32) {
+ StreamBuilder m(this, MachineType::Int32(), MachineType::Int32(),
+ MachineType::Int32());
+ Node* cond = m.Int32Constant(1);
+ m.Return(m.Word32Select(cond, m.Parameter(0), m.Parameter(1)));
+ Stream s = m.Build();
+ EXPECT_EQ(kX64Cmp32, s[0]->arch_opcode());
+ EXPECT_EQ(4U, s[0]->InputCount());
+ EXPECT_EQ(1U, s[0]->OutputCount());
+ EXPECT_EQ(kFlags_select, s[0]->flags_mode());
+ EXPECT_EQ(kNotEqual, s[0]->flags_condition());
+ EXPECT_TRUE(s.IsSameAsInput(s[0]->Output(), 2));
+}
+
+TEST_F(InstructionSelectorTest, SelectWord64) {
+ StreamBuilder m(this, MachineType::Int64(), MachineType::Int64(),
+ MachineType::Int64());
+ Node* cond = m.Int32Constant(1);
+ m.Return(m.Word64Select(cond, m.Parameter(0), m.Parameter(1)));
+ Stream s = m.Build();
+ EXPECT_EQ(kX64Cmp32, s[0]->arch_opcode());
+ EXPECT_EQ(4U, s[0]->InputCount());
+ EXPECT_EQ(1U, s[0]->OutputCount());
+ EXPECT_EQ(kFlags_select, s[0]->flags_mode());
+ EXPECT_EQ(kNotEqual, s[0]->flags_condition());
+ EXPECT_TRUE(s.IsSameAsInput(s[0]->Output(), 2));
+}
+
namespace {
struct LoadWithToInt64Extension {
MachineType type;
@@ -1288,6 +1316,24 @@ TEST_F(InstructionSelectorTest, LoadCmp32) {
EXPECT_TRUE(s[0]->InputAt(2)->IsImmediate());
}
{
+ // Word32Equal(LoadImmutable[Int8](p0, p1), Int32Constant(0)) ->
+ // cmpb [p0,p1], 0
+ StreamBuilder m(this, MachineType::Int32(), MachineType::Int64(),
+ MachineType::Int64());
+ Node* const p0 = m.Parameter(0);
+ Node* const p1 = m.Parameter(1);
+ m.Return(m.Word32Equal(m.LoadImmutable(MachineType::Int8(), p0, p1),
+ m.Int32Constant(0)));
+ Stream s = m.Build();
+ ASSERT_EQ(1U, s.size());
+ EXPECT_EQ(kX64Cmp8, s[0]->arch_opcode());
+ EXPECT_EQ(kMode_MR1, s[0]->addressing_mode());
+ ASSERT_EQ(3U, s[0]->InputCount());
+ EXPECT_EQ(s.ToVreg(p0), s.ToVreg(s[0]->InputAt(0)));
+ EXPECT_EQ(s.ToVreg(p1), s.ToVreg(s[0]->InputAt(1)));
+ EXPECT_TRUE(s[0]->InputAt(2)->IsImmediate());
+ }
+ {
// Word32Equal(Load[Uint8](p0, p1), Int32Constant(0)) -> cmpb [p0,p1], 0
StreamBuilder m(this, MachineType::Int32(), MachineType::Int64(),
MachineType::Int64());
diff --git a/deps/v8/test/unittests/execution/microtask-queue-unittest.cc b/deps/v8/test/unittests/execution/microtask-queue-unittest.cc
index 84e29f2596..6c136b7b33 100644
--- a/deps/v8/test/unittests/execution/microtask-queue-unittest.cc
+++ b/deps/v8/test/unittests/execution/microtask-queue-unittest.cc
@@ -248,6 +248,7 @@ TEST_P(MicrotaskQueueTest, VisitRoot) {
}
TEST_P(MicrotaskQueueTest, PromiseHandlerContext) {
+ microtask_queue()->set_microtasks_policy(MicrotasksPolicy::kExplicit);
Local<v8::Context> v8_context2 = v8::Context::New(v8_isolate());
Local<v8::Context> v8_context3 = v8::Context::New(v8_isolate());
Local<v8::Context> v8_context4 = v8::Context::New(v8_isolate());
@@ -354,6 +355,7 @@ TEST_P(MicrotaskQueueTest, DetachGlobal_Enqueue) {
}
TEST_P(MicrotaskQueueTest, DetachGlobal_Run) {
+ microtask_queue()->set_microtasks_policy(MicrotasksPolicy::kExplicit);
EXPECT_EQ(0, microtask_queue()->size());
// Enqueue microtasks to the current context.
@@ -392,6 +394,7 @@ TEST_P(MicrotaskQueueTest, DetachGlobal_Run) {
}
TEST_P(MicrotaskQueueTest, DetachGlobal_PromiseResolveThenableJobTask) {
+ microtask_queue()->set_microtasks_policy(MicrotasksPolicy::kExplicit);
RunJS(
"var resolve;"
"var promise = new Promise(r => { resolve = r; });"
@@ -414,6 +417,7 @@ TEST_P(MicrotaskQueueTest, DetachGlobal_PromiseResolveThenableJobTask) {
}
TEST_P(MicrotaskQueueTest, DetachGlobal_ResolveThenableForeignThen) {
+ microtask_queue()->set_microtasks_policy(MicrotasksPolicy::kExplicit);
Handle<JSArray> result = RunJS<JSArray>(
"let result = [false];"
"result");
@@ -425,6 +429,7 @@ TEST_P(MicrotaskQueueTest, DetachGlobal_ResolveThenableForeignThen) {
// Create a context with its own microtask queue.
std::unique_ptr<MicrotaskQueue> sub_microtask_queue =
MicrotaskQueue::New(isolate());
+ sub_microtask_queue->set_microtasks_policy(MicrotasksPolicy::kExplicit);
Local<v8::Context> sub_context = v8::Context::New(
v8_isolate(),
/* extensions= */ nullptr,
diff --git a/deps/v8/test/unittests/heap/cppgc/allocation-unittest.cc b/deps/v8/test/unittests/heap/cppgc/allocation-unittest.cc
new file mode 100644
index 0000000000..bf21d5ce6e
--- /dev/null
+++ b/deps/v8/test/unittests/heap/cppgc/allocation-unittest.cc
@@ -0,0 +1,134 @@
+// Copyright 2021 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.
+
+#include "include/cppgc/allocation.h"
+
+#include "include/cppgc/visitor.h"
+#include "src/heap/cppgc/heap-object-header.h"
+#include "test/unittests/heap/cppgc/tests.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace cppgc {
+namespace internal {
+
+namespace {
+
+class CppgcAllocationTest : public testing::TestWithHeap {};
+
+struct GCed final : GarbageCollected<GCed> {
+ void Trace(cppgc::Visitor*) const {}
+};
+
+class HeapAllocatedArray final : public GarbageCollected<HeapAllocatedArray> {
+ public:
+ HeapAllocatedArray() {
+ for (int i = 0; i < kArraySize; ++i) {
+ array_[i] = i % 128;
+ }
+ }
+
+ int8_t at(size_t i) { return array_[i]; }
+ void Trace(Visitor* visitor) const {}
+
+ private:
+ static const int kArraySize = 1000;
+ int8_t array_[kArraySize];
+};
+
+} // namespace
+
+TEST_F(CppgcAllocationTest, MakeGarbageCollectedPreservesPayload) {
+ // Allocate an object in the heap.
+ HeapAllocatedArray* array =
+ MakeGarbageCollected<HeapAllocatedArray>(GetAllocationHandle());
+
+ // Sanity check of the contents in the heap.
+ EXPECT_EQ(0, array->at(0));
+ EXPECT_EQ(42, array->at(42));
+ EXPECT_EQ(0, array->at(128));
+ EXPECT_EQ(999 % 128, array->at(999));
+}
+
+TEST_F(CppgcAllocationTest, ReuseMemoryFromFreelist) {
+ // Allocate 3 objects so that the address we look for below is not at the
+ // start of the page.
+ MakeGarbageCollected<GCed>(GetAllocationHandle());
+ MakeGarbageCollected<GCed>(GetAllocationHandle());
+ GCed* p1 = MakeGarbageCollected<GCed>(GetAllocationHandle());
+ // GC reclaims all objects. LABs are reset during the GC.
+ PreciseGC();
+ // Now the freed memory in the first GC should be reused. Allocating 3
+ // objects again should suffice but allocating 5 to give the test some slack.
+ bool reused_memory_found = false;
+ for (int i = 0; i < 5; i++) {
+ GCed* p2 = MakeGarbageCollected<GCed>(GetAllocationHandle());
+ if (p1 == p2) {
+ reused_memory_found = true;
+ break;
+ }
+ }
+ EXPECT_TRUE(reused_memory_found);
+}
+
+namespace {
+class CallbackInCtor final : public GarbageCollected<CallbackInCtor> {
+ public:
+ template <typename Callback>
+ explicit CallbackInCtor(Callback callback) {
+ callback();
+ }
+
+ void Trace(Visitor*) const {}
+};
+} // namespace
+
+TEST_F(CppgcAllocationTest,
+ ConservativeGCDuringAllocationDoesNotReclaimObject) {
+ CallbackInCtor* obj = MakeGarbageCollected<CallbackInCtor>(
+ GetAllocationHandle(), [this]() { ConservativeGC(); });
+ EXPECT_FALSE(HeapObjectHeader::FromObject(obj).IsFree());
+}
+
+namespace {
+class LargeObject : public GarbageCollected<LargeObject> {
+ public:
+ static constexpr size_t kDataSize = kLargeObjectSizeThreshold + 1;
+ static size_t destructor_calls;
+
+ explicit LargeObject(bool check) {
+ if (!check) return;
+ for (size_t i = 0; i < LargeObject::kDataSize; ++i) {
+ EXPECT_EQ(0, data[i]);
+ }
+ }
+ ~LargeObject() { ++destructor_calls; }
+ void Trace(Visitor*) const {}
+
+ char data[kDataSize];
+};
+size_t LargeObject::destructor_calls = 0u;
+} // namespace
+
+TEST_F(CppgcAllocationTest, LargePagesAreZeroedOut) {
+ static constexpr size_t kNumObjects = 1u;
+ LargeObject::destructor_calls = 0u;
+ std::vector<void*> pages;
+ for (size_t i = 0; i < kNumObjects; ++i) {
+ auto* obj = MakeGarbageCollected<LargeObject>(GetAllocationHandle(), false);
+ pages.push_back(obj);
+ memset(obj->data, 0xff, LargeObject::kDataSize);
+ }
+ PreciseGC();
+ EXPECT_EQ(kNumObjects, LargeObject::destructor_calls);
+ bool reused_page = false;
+ for (size_t i = 0; i < kNumObjects; ++i) {
+ auto* obj = MakeGarbageCollected<LargeObject>(GetAllocationHandle(), true);
+ if (std::find(pages.begin(), pages.end(), obj) != pages.end())
+ reused_page = true;
+ }
+ EXPECT_TRUE(reused_page);
+}
+
+} // namespace internal
+} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/concurrent-sweeper-unittest.cc b/deps/v8/test/unittests/heap/cppgc/concurrent-sweeper-unittest.cc
index b03f3388d5..fb302abbaf 100644
--- a/deps/v8/test/unittests/heap/cppgc/concurrent-sweeper-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/concurrent-sweeper-unittest.cc
@@ -145,7 +145,7 @@ TEST_F(ConcurrentSweeperTest, BackgroundSweepOfNormalPage) {
auto* unmarked_object = MakeGarbageCollected<GCedType>(GetAllocationHandle());
auto* marked_object = MakeGarbageCollected<GCedType>(GetAllocationHandle());
- HeapObjectHeader::FromPayload(marked_object).TryMarkAtomic();
+ HeapObjectHeader::FromObject(marked_object).TryMarkAtomic();
auto* page = BasePage::FromPayload(unmarked_object);
auto* space = page->space();
@@ -160,10 +160,10 @@ TEST_F(ConcurrentSweeperTest, BackgroundSweepOfNormalPage) {
#if !defined(CPPGC_YOUNG_GENERATION)
// Check that the marked object was unmarked.
- EXPECT_FALSE(HeapObjectHeader::FromPayload(marked_object).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(marked_object).IsMarked());
#else
// Check that the marked object is still marked.
- EXPECT_TRUE(HeapObjectHeader::FromPayload(marked_object).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(marked_object).IsMarked());
#endif
// Check that free list entries are created right away for non-finalizable
@@ -184,7 +184,7 @@ TEST_F(ConcurrentSweeperTest, BackgroundSweepOfLargePage) {
auto* unmarked_object = MakeGarbageCollected<GCedType>(GetAllocationHandle());
auto* marked_object = MakeGarbageCollected<GCedType>(GetAllocationHandle());
- HeapObjectHeader::FromPayload(marked_object).TryMarkAtomic();
+ HeapObjectHeader::FromObject(marked_object).TryMarkAtomic();
auto* unmarked_page = BasePage::FromPayload(unmarked_object);
auto* marked_page = BasePage::FromPayload(marked_object);
@@ -199,10 +199,10 @@ TEST_F(ConcurrentSweeperTest, BackgroundSweepOfLargePage) {
#if !defined(CPPGC_YOUNG_GENERATION)
// Check that the marked object was unmarked.
- EXPECT_FALSE(HeapObjectHeader::FromPayload(marked_object).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(marked_object).IsMarked());
#else
// Check that the marked object is still marked.
- EXPECT_TRUE(HeapObjectHeader::FromPayload(marked_object).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(marked_object).IsMarked());
#endif
// Check that free list entries are created right away for non-finalizable
@@ -299,9 +299,8 @@ TEST_F(ConcurrentSweeperTest, IncrementalSweeping) {
MakeGarbageCollected<LargeFinalizable>(GetAllocationHandle());
auto& marked_normal_header =
- HeapObjectHeader::FromPayload(marked_normal_object);
- auto& marked_large_header =
- HeapObjectHeader::FromPayload(marked_large_object);
+ HeapObjectHeader::FromObject(marked_normal_object);
+ auto& marked_large_header = HeapObjectHeader::FromObject(marked_large_object);
marked_normal_header.TryMarkAtomic();
marked_large_header.TryMarkAtomic();
diff --git a/deps/v8/test/unittests/heap/cppgc/custom-spaces-unittest.cc b/deps/v8/test/unittests/heap/cppgc/custom-spaces-unittest.cc
index 7e73a73178..ccc642bfcc 100644
--- a/deps/v8/test/unittests/heap/cppgc/custom-spaces-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/custom-spaces-unittest.cc
@@ -114,6 +114,18 @@ TEST_F(TestWithHeapWithCustomSpaces, AllocateOnCustomSpaces) {
NormalPage::FromPayload(regular)->space()->index());
}
+TEST_F(TestWithHeapWithCustomSpaces, DifferentSpacesUsesDifferentPages) {
+ auto* regular =
+ MakeGarbageCollected<RegularGCed>(GetHeap()->GetAllocationHandle());
+ auto* custom1 =
+ MakeGarbageCollected<CustomGCed1>(GetHeap()->GetAllocationHandle());
+ auto* custom2 =
+ MakeGarbageCollected<CustomGCed2>(GetHeap()->GetAllocationHandle());
+ EXPECT_NE(NormalPage::FromPayload(regular), NormalPage::FromPayload(custom1));
+ EXPECT_NE(NormalPage::FromPayload(regular), NormalPage::FromPayload(custom2));
+ EXPECT_NE(NormalPage::FromPayload(custom1), NormalPage::FromPayload(custom2));
+}
+
TEST_F(TestWithHeapWithCustomSpaces,
AllocateOnCustomSpacesSpecifiedThroughBase) {
auto* regular =
diff --git a/deps/v8/test/unittests/heap/cppgc/ephemeron-pair-unittest.cc b/deps/v8/test/unittests/heap/cppgc/ephemeron-pair-unittest.cc
index 32a5929fe4..c759308723 100644
--- a/deps/v8/test/unittests/heap/cppgc/ephemeron-pair-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/ephemeron-pair-unittest.cc
@@ -96,10 +96,10 @@ TEST_F(EphemeronPairTest, ValueMarkedWhenKeyIsMarked) {
GCed* value = MakeGarbageCollected<GCed>(GetAllocationHandle());
Persistent<EphemeronHolder> holder =
MakeGarbageCollected<EphemeronHolder>(GetAllocationHandle(), key, value);
- HeapObjectHeader::FromPayload(key).TryMarkAtomic();
+ HeapObjectHeader::FromObject(key).TryMarkAtomic();
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get());
FinishMarking();
- EXPECT_TRUE(HeapObjectHeader::FromPayload(value).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(value).IsMarked());
}
TEST_F(EphemeronPairTest, ValueNotMarkedWhenKeyIsNotMarked) {
@@ -109,8 +109,8 @@ TEST_F(EphemeronPairTest, ValueNotMarkedWhenKeyIsNotMarked) {
MakeGarbageCollected<EphemeronHolder>(GetAllocationHandle(), key, value);
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get());
FinishMarking();
- EXPECT_FALSE(HeapObjectHeader::FromPayload(key).IsMarked());
- EXPECT_FALSE(HeapObjectHeader::FromPayload(value).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(key).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(value).IsMarked());
}
TEST_F(EphemeronPairTest, ValueNotMarkedBeforeKey) {
@@ -120,10 +120,10 @@ TEST_F(EphemeronPairTest, ValueNotMarkedBeforeKey) {
MakeGarbageCollected<EphemeronHolder>(GetAllocationHandle(), key, value);
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get());
FinishSteps();
- EXPECT_FALSE(HeapObjectHeader::FromPayload(value).IsMarked());
- HeapObjectHeader::FromPayload(key).TryMarkAtomic();
+ EXPECT_FALSE(HeapObjectHeader::FromObject(value).IsMarked());
+ HeapObjectHeader::FromObject(key).TryMarkAtomic();
FinishMarking();
- EXPECT_TRUE(HeapObjectHeader::FromPayload(value).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(value).IsMarked());
}
TEST_F(EphemeronPairTest, TraceEphemeronDispatch) {
@@ -132,10 +132,10 @@ TEST_F(EphemeronPairTest, TraceEphemeronDispatch) {
Persistent<EphemeronHolderTraceEphemeron> holder =
MakeGarbageCollected<EphemeronHolderTraceEphemeron>(GetAllocationHandle(),
key, value);
- HeapObjectHeader::FromPayload(key).TryMarkAtomic();
+ HeapObjectHeader::FromObject(key).TryMarkAtomic();
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get());
FinishMarking();
- EXPECT_TRUE(HeapObjectHeader::FromPayload(value).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(value).IsMarked());
}
TEST_F(EphemeronPairTest, EmptyValue) {
@@ -143,7 +143,7 @@ TEST_F(EphemeronPairTest, EmptyValue) {
Persistent<EphemeronHolderTraceEphemeron> holder =
MakeGarbageCollected<EphemeronHolderTraceEphemeron>(GetAllocationHandle(),
key, nullptr);
- HeapObjectHeader::FromPayload(key).TryMarkAtomic();
+ HeapObjectHeader::FromObject(key).TryMarkAtomic();
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get());
FinishMarking();
}
@@ -156,7 +156,7 @@ TEST_F(EphemeronPairTest, EmptyKey) {
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get());
FinishMarking();
// Key is not alive and value should thus not be held alive.
- EXPECT_FALSE(HeapObjectHeader::FromPayload(value).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(value).IsMarked());
}
using EphemeronPairGCTest = testing::TestWithHeap;
@@ -220,10 +220,10 @@ TEST_F(EphemeronPairTest, EphemeronPairWithMixinKey) {
EXPECT_NE(static_cast<void*>(value), holder->ephemeron_pair().value.Get());
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get());
FinishSteps();
- EXPECT_FALSE(HeapObjectHeader::FromPayload(value).IsMarked());
- EXPECT_TRUE(HeapObjectHeader::FromPayload(key).TryMarkAtomic());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(value).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(key).TryMarkAtomic());
FinishMarking();
- EXPECT_TRUE(HeapObjectHeader::FromPayload(value).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(value).IsMarked());
}
TEST_F(EphemeronPairTest, EphemeronPairWithEmptyMixinValue) {
@@ -233,7 +233,7 @@ TEST_F(EphemeronPairTest, EphemeronPairWithEmptyMixinValue) {
MakeGarbageCollected<EphemeronHolderWithMixins>(GetAllocationHandle(),
key, nullptr);
EXPECT_NE(static_cast<void*>(key), holder->ephemeron_pair().key.Get());
- EXPECT_TRUE(HeapObjectHeader::FromPayload(key).TryMarkAtomic());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(key).TryMarkAtomic());
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get());
FinishSteps();
FinishMarking();
diff --git a/deps/v8/test/unittests/heap/cppgc/explicit-management-unittest.cc b/deps/v8/test/unittests/heap/cppgc/explicit-management-unittest.cc
index 6ca8569b3f..ffc23214ff 100644
--- a/deps/v8/test/unittests/heap/cppgc/explicit-management-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/explicit-management-unittest.cc
@@ -51,14 +51,14 @@ TEST_F(ExplicitManagementTest, FreeRegularObjectToLAB) {
MakeGarbageCollected<DynamicallySized>(GetHeap()->GetAllocationHandle());
const auto* space = NormalPageSpace::From(BasePage::FromPayload(o)->space());
const auto& lab = space->linear_allocation_buffer();
- auto& header = HeapObjectHeader::FromPayload(o);
- const size_t size = header.GetSize();
+ auto& header = HeapObjectHeader::FromObject(o);
+ const size_t size = header.AllocatedSize();
Address needle = reinterpret_cast<Address>(&header);
// Test checks freeing to LAB.
- ASSERT_EQ(lab.start(), header.PayloadEnd());
+ ASSERT_EQ(lab.start(), header.ObjectEnd());
const size_t lab_size_before_free = lab.size();
const size_t allocated_size_before = AllocatedObjectSize();
- subtle::FreeUnreferencedObject(o);
+ subtle::FreeUnreferencedObject(GetHeapHandle(), *o);
EXPECT_EQ(lab.start(), reinterpret_cast<Address>(needle));
EXPECT_EQ(lab_size_before_free + size, lab.size());
// LAB is included in allocated object size, so no change is expected.
@@ -71,14 +71,14 @@ TEST_F(ExplicitManagementTest, FreeRegularObjectToFreeList) {
MakeGarbageCollected<DynamicallySized>(GetHeap()->GetAllocationHandle());
const auto* space = NormalPageSpace::From(BasePage::FromPayload(o)->space());
const auto& lab = space->linear_allocation_buffer();
- auto& header = HeapObjectHeader::FromPayload(o);
- const size_t size = header.GetSize();
+ auto& header = HeapObjectHeader::FromObject(o);
+ const size_t size = header.AllocatedSize();
Address needle = reinterpret_cast<Address>(&header);
// Test checks freeing to free list.
ResetLinearAllocationBuffers();
ASSERT_EQ(lab.start(), nullptr);
const size_t allocated_size_before = AllocatedObjectSize();
- subtle::FreeUnreferencedObject(o);
+ subtle::FreeUnreferencedObject(GetHeapHandle(), *o);
EXPECT_EQ(lab.start(), nullptr);
EXPECT_EQ(allocated_size_before - size, AllocatedObjectSize());
EXPECT_TRUE(space->free_list().ContainsForTesting({needle, size}));
@@ -95,7 +95,7 @@ TEST_F(ExplicitManagementTest, FreeLargeObject) {
const size_t size = LargePage::From(page)->PayloadSize();
EXPECT_TRUE(heap->page_backend()->Lookup(needle));
const size_t allocated_size_before = AllocatedObjectSize();
- subtle::FreeUnreferencedObject(o);
+ subtle::FreeUnreferencedObject(GetHeapHandle(), *o);
EXPECT_FALSE(heap->page_backend()->Lookup(needle));
EXPECT_EQ(allocated_size_before - size, AllocatedObjectSize());
}
@@ -107,24 +107,19 @@ TEST_F(ExplicitManagementTest, FreeBailsOutDuringGC) {
auto* heap = BasePage::FromPayload(o)->heap();
heap->SetInAtomicPauseForTesting(true);
const size_t allocated_size_before = AllocatedObjectSize();
- subtle::FreeUnreferencedObject(o);
+ subtle::FreeUnreferencedObject(GetHeapHandle(), *o);
EXPECT_EQ(allocated_size_before, AllocatedObjectSize());
heap->SetInAtomicPauseForTesting(false);
ResetLinearAllocationBuffers();
- subtle::FreeUnreferencedObject(o);
+ subtle::FreeUnreferencedObject(GetHeapHandle(), *o);
EXPECT_EQ(snapshot_before, AllocatedObjectSize());
}
-TEST_F(ExplicitManagementTest, FreeNull) {
- DynamicallySized* o = nullptr;
- // Noop.
- subtle::FreeUnreferencedObject(o);
-}
-
TEST_F(ExplicitManagementTest, GrowAtLAB) {
auto* o =
MakeGarbageCollected<DynamicallySized>(GetHeap()->GetAllocationHandle());
- auto& header = HeapObjectHeader::FromPayload(o);
+ auto& header = HeapObjectHeader::FromObject(o);
+ ASSERT_TRUE(!header.IsLargeObject());
constexpr size_t size_of_o = sizeof(DynamicallySized);
constexpr size_t kFirstDelta = 8;
EXPECT_TRUE(subtle::Resize(*o, AdditionalBytes(kFirstDelta)));
@@ -147,7 +142,8 @@ TEST_F(ExplicitManagementTest, GrowAtLAB) {
TEST_F(ExplicitManagementTest, GrowShrinkAtLAB) {
auto* o =
MakeGarbageCollected<DynamicallySized>(GetHeap()->GetAllocationHandle());
- auto& header = HeapObjectHeader::FromPayload(o);
+ auto& header = HeapObjectHeader::FromObject(o);
+ ASSERT_TRUE(!header.IsLargeObject());
constexpr size_t size_of_o = sizeof(DynamicallySized);
constexpr size_t kDelta = 27;
EXPECT_TRUE(subtle::Resize(*o, AdditionalBytes(kDelta)));
@@ -164,12 +160,13 @@ TEST_F(ExplicitManagementTest, ShrinkFreeList) {
const auto* space = NormalPageSpace::From(BasePage::FromPayload(o)->space());
// Force returning to free list by removing the LAB.
ResetLinearAllocationBuffers();
- auto& header = HeapObjectHeader::FromPayload(o);
+ auto& header = HeapObjectHeader::FromObject(o);
+ ASSERT_TRUE(!header.IsLargeObject());
constexpr size_t size_of_o = sizeof(DynamicallySized);
EXPECT_TRUE(subtle::Resize(*o, AdditionalBytes(0)));
EXPECT_EQ(RoundUp<kAllocationGranularity>(size_of_o), header.ObjectSize());
EXPECT_TRUE(space->free_list().ContainsForTesting(
- {header.PayloadEnd(), ObjectAllocator::kSmallestSpaceSize}));
+ {header.ObjectEnd(), ObjectAllocator::kSmallestSpaceSize}));
}
TEST_F(ExplicitManagementTest, ShrinkFreeListBailoutAvoidFragmentation) {
@@ -179,16 +176,33 @@ TEST_F(ExplicitManagementTest, ShrinkFreeListBailoutAvoidFragmentation) {
const auto* space = NormalPageSpace::From(BasePage::FromPayload(o)->space());
// Force returning to free list by removing the LAB.
ResetLinearAllocationBuffers();
- auto& header = HeapObjectHeader::FromPayload(o);
+ auto& header = HeapObjectHeader::FromObject(o);
+ ASSERT_TRUE(!header.IsLargeObject());
constexpr size_t size_of_o = sizeof(DynamicallySized);
EXPECT_TRUE(subtle::Resize(*o, AdditionalBytes(0)));
EXPECT_EQ(RoundUp<kAllocationGranularity>(
size_of_o + ObjectAllocator::kSmallestSpaceSize - 1),
header.ObjectSize());
EXPECT_FALSE(space->free_list().ContainsForTesting(
- {header.Payload() + RoundUp<kAllocationGranularity>(size_of_o),
+ {header.ObjectStart() + RoundUp<kAllocationGranularity>(size_of_o),
ObjectAllocator::kSmallestSpaceSize - 1}));
}
+TEST_F(ExplicitManagementTest, ResizeBailsOutDuringGC) {
+ auto* o = MakeGarbageCollected<DynamicallySized>(
+ GetHeap()->GetAllocationHandle(),
+ AdditionalBytes(ObjectAllocator::kSmallestSpaceSize - 1));
+ auto* heap = BasePage::FromPayload(o)->heap();
+ heap->SetInAtomicPauseForTesting(true);
+ const size_t allocated_size_before = AllocatedObjectSize();
+ // Grow:
+ EXPECT_FALSE(
+ subtle::Resize(*o, AdditionalBytes(ObjectAllocator::kSmallestSpaceSize)));
+ // Shrink:
+ EXPECT_FALSE(subtle::Resize(*o, AdditionalBytes(0)));
+ EXPECT_EQ(allocated_size_before, AllocatedObjectSize());
+ heap->SetInAtomicPauseForTesting(false);
+}
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/garbage-collected-unittest.cc b/deps/v8/test/unittests/heap/cppgc/garbage-collected-unittest.cc
index 7155aa6914..815aa1e915 100644
--- a/deps/v8/test/unittests/heap/cppgc/garbage-collected-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/garbage-collected-unittest.cc
@@ -6,6 +6,7 @@
#include "include/cppgc/allocation.h"
#include "include/cppgc/type-traits.h"
+#include "src/base/platform/mutex.h"
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap.h"
#include "test/unittests/heap/cppgc/tests.h"
@@ -83,6 +84,17 @@ TEST(GarbageCollectedTest, GarbageCollectedWithMixinTrait) {
STATIC_ASSERT(IsGarbageCollectedWithMixinTypeV<GCWithMergedMixins>);
}
+namespace {
+
+class ForwardDeclaredType;
+
+} // namespace
+
+TEST(GarbageCollectedTest, CompleteTypeTrait) {
+ STATIC_ASSERT(IsCompleteV<GCed>);
+ STATIC_ASSERT(!IsCompleteV<ForwardDeclaredType>);
+}
+
TEST_F(GarbageCollectedTestWithHeap, GetObjectStartReturnsCurrentAddress) {
GCed* gced = MakeGarbageCollected<GCed>(GetAllocationHandle());
GCedWithMixin* gced_with_mixin =
@@ -123,7 +135,7 @@ struct PostConstructionCallbackTrait<
internal::GCedWithPostConstructionCallback> {
static void Call(internal::GCedWithPostConstructionCallback* object) {
EXPECT_FALSE(
- internal::HeapObjectHeader::FromPayload(object).IsInConstruction());
+ internal::HeapObjectHeader::FromObject(object).IsInConstruction());
internal::GCedWithPostConstructionCallback::cb_callcount++;
}
};
@@ -136,7 +148,7 @@ struct PostConstructionCallbackTrait<
static void Call(
internal::GCedWithMixinWithPostConstructionCallback* object) {
EXPECT_FALSE(
- internal::HeapObjectHeader::FromPayload(object).IsInConstruction());
+ internal::HeapObjectHeader::FromObject(object).IsInConstruction());
internal::GCedWithMixinWithPostConstructionCallback::cb_callcount++;
}
};
@@ -156,5 +168,85 @@ TEST_F(GarbageCollectedTestWithHeap, PostConstructionCallbackForMixin) {
EXPECT_EQ(1u, MixinWithPostConstructionCallback::cb_callcount);
}
+namespace {
+
+int GetDummyValue() {
+ static v8::base::Mutex mutex;
+ static int ret = 43;
+ // Global lock access to avoid reordering.
+ v8::base::MutexGuard guard(&mutex);
+ return ret;
+}
+
+class CheckObjectInConstructionBeforeInitializerList final
+ : public GarbageCollected<CheckObjectInConstructionBeforeInitializerList> {
+ public:
+ CheckObjectInConstructionBeforeInitializerList()
+ : in_construction_before_initializer_list_(
+ HeapObjectHeader::FromObject(this).IsInConstruction()),
+ unused_int_(GetDummyValue()) {
+ EXPECT_TRUE(in_construction_before_initializer_list_);
+ EXPECT_TRUE(HeapObjectHeader::FromObject(this).IsInConstruction());
+ }
+
+ void Trace(Visitor*) const {}
+
+ private:
+ bool in_construction_before_initializer_list_;
+ int unused_int_;
+};
+
+class CheckMixinInConstructionBeforeInitializerList
+ : public GarbageCollectedMixin {
+ public:
+ explicit CheckMixinInConstructionBeforeInitializerList(void* payload_start)
+ : in_construction_before_initializer_list_(
+ HeapObjectHeader::FromObject(payload_start).IsInConstruction()),
+ unused_int_(GetDummyValue()) {
+ EXPECT_TRUE(in_construction_before_initializer_list_);
+ EXPECT_TRUE(HeapObjectHeader::FromObject(payload_start).IsInConstruction());
+ }
+
+ void Trace(Visitor*) const override {}
+
+ private:
+ bool in_construction_before_initializer_list_;
+ int unused_int_;
+};
+
+class UnmanagedMixinForcingVTable {
+ protected:
+ virtual void ForceVTable() {}
+};
+
+class CheckGCedWithMixinInConstructionBeforeInitializerList
+ : public GarbageCollected<
+ CheckGCedWithMixinInConstructionBeforeInitializerList>,
+ public UnmanagedMixinForcingVTable,
+ public CheckMixinInConstructionBeforeInitializerList {
+ public:
+ CheckGCedWithMixinInConstructionBeforeInitializerList()
+ : CheckMixinInConstructionBeforeInitializerList(this) {
+ // Ensure that compiler indeed generated an inner object.
+ CHECK_NE(
+ this,
+ static_cast<void*>(
+ static_cast<CheckMixinInConstructionBeforeInitializerList*>(this)));
+ }
+};
+
+} // namespace
+
+TEST_F(GarbageCollectedTestWithHeap, GarbageCollectedInConstructionDuringCtor) {
+ MakeGarbageCollected<CheckObjectInConstructionBeforeInitializerList>(
+ GetAllocationHandle());
+}
+
+TEST_F(GarbageCollectedTestWithHeap,
+ GarbageCollectedMixinInConstructionDuringCtor) {
+ MakeGarbageCollected<CheckGCedWithMixinInConstructionBeforeInitializerList>(
+ GetAllocationHandle());
+}
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/gc-info-unittest.cc b/deps/v8/test/unittests/heap/cppgc/gc-info-unittest.cc
index da02212176..c5effba8a7 100644
--- a/deps/v8/test/unittests/heap/cppgc/gc-info-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/gc-info-unittest.cc
@@ -22,18 +22,14 @@ constexpr GCInfo GetEmptyGCInfo() { return {nullptr, nullptr, nullptr, false}; }
class GCInfoTableTest : public ::testing::Test {
public:
+ GCInfoTableTest() : table_(std::make_unique<GCInfoTable>(&page_allocator_)) {}
+
GCInfoIndex RegisterNewGCInfoForTesting(const GCInfo& info) {
// Unused registered index will result in registering a new index.
std::atomic<GCInfoIndex> registered_index{0};
return table().RegisterNewGCInfo(registered_index, info);
}
- void SetUp() override {
- table_ = std::make_unique<GCInfoTable>(&page_allocator_);
- }
-
- void TearDown() override { table_.reset(); }
-
GCInfoTable& table() { return *table_; }
const GCInfoTable& table() const { return *table_; }
diff --git a/deps/v8/test/unittests/heap/cppgc/gc-invoker-unittest.cc b/deps/v8/test/unittests/heap/cppgc/gc-invoker-unittest.cc
index c43531494f..a48f27f56c 100644
--- a/deps/v8/test/unittests/heap/cppgc/gc-invoker-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/gc-invoker-unittest.cc
@@ -36,11 +36,9 @@ class MockTaskRunner : public cppgc::TaskRunner {
MOCK_METHOD(void, PostIdleTask, (std::unique_ptr<cppgc::IdleTask>),
(override));
- virtual bool IdleTasksEnabled() override { return true; } // NOLINT
- bool NonNestableTasksEnabled() const override { return true; } // NOLINT
- virtual bool NonNestableDelayedTasksEnabled() const override { // NOLINT
- return true;
- }
+ bool IdleTasksEnabled() override { return true; }
+ bool NonNestableTasksEnabled() const override { return true; }
+ bool NonNestableDelayedTasksEnabled() const override { return true; }
};
class MockPlatform : public cppgc::Platform {
diff --git a/deps/v8/test/unittests/heap/cppgc/heap-growing-unittest.cc b/deps/v8/test/unittests/heap/cppgc/heap-growing-unittest.cc
index 17ab9680c9..9f63e14c87 100644
--- a/deps/v8/test/unittests/heap/cppgc/heap-growing-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/heap-growing-unittest.cc
@@ -69,7 +69,10 @@ TEST(HeapGrowingTest, ConservativeGCInvoked) {
HeapGrowing growing(&gc, &stats_collector, constraints,
cppgc::Heap::MarkingType::kIncrementalAndConcurrent,
cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
- EXPECT_CALL(gc, CollectGarbage(::testing::_));
+ EXPECT_CALL(
+ gc, CollectGarbage(::testing::Field(
+ &GarbageCollector::Config::stack_state,
+ GarbageCollector::Config::StackState::kMayContainHeapPointers)));
FakeAllocate(&stats_collector, 100 * kMB);
}
@@ -85,7 +88,10 @@ TEST(HeapGrowingTest, InitialHeapSize) {
cppgc::Heap::MarkingType::kIncrementalAndConcurrent,
cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
FakeAllocate(&stats_collector, kObjectSize - 1);
- EXPECT_CALL(gc, CollectGarbage(::testing::_));
+ EXPECT_CALL(
+ gc, CollectGarbage(::testing::Field(
+ &GarbageCollector::Config::stack_state,
+ GarbageCollector::Config::StackState::kMayContainHeapPointers)));
FakeAllocate(&stats_collector, kObjectSize);
}
@@ -135,7 +141,11 @@ TEST(HeapGrowingTest, IncrementalGCStarted) {
HeapGrowing growing(&gc, &stats_collector, constraints,
cppgc::Heap::MarkingType::kIncrementalAndConcurrent,
cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
- EXPECT_CALL(gc, CollectGarbage(::testing::_)).Times(0);
+ EXPECT_CALL(
+ gc, CollectGarbage(::testing::Field(
+ &GarbageCollector::Config::stack_state,
+ GarbageCollector::Config::StackState::kMayContainHeapPointers)))
+ .Times(0);
EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_));
// Allocate 1 byte less the limit for atomic gc to trigger incremental gc.
FakeAllocate(&stats_collector, growing.limit_for_atomic_gc() - 1);
@@ -149,13 +159,20 @@ TEST(HeapGrowingTest, IncrementalGCFinalized) {
HeapGrowing growing(&gc, &stats_collector, constraints,
cppgc::Heap::MarkingType::kIncrementalAndConcurrent,
cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
- EXPECT_CALL(gc, CollectGarbage(::testing::_)).Times(0);
+ EXPECT_CALL(
+ gc, CollectGarbage(::testing::Field(
+ &GarbageCollector::Config::stack_state,
+ GarbageCollector::Config::StackState::kMayContainHeapPointers)))
+ .Times(0);
EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_));
// Allocate 1 byte less the limit for atomic gc to trigger incremental gc.
size_t bytes_for_incremental_gc = growing.limit_for_atomic_gc() - 1;
FakeAllocate(&stats_collector, bytes_for_incremental_gc);
::testing::Mock::VerifyAndClearExpectations(&gc);
- EXPECT_CALL(gc, CollectGarbage(::testing::_));
+ EXPECT_CALL(
+ gc, CollectGarbage(::testing::Field(
+ &GarbageCollector::Config::stack_state,
+ GarbageCollector::Config::StackState::kMayContainHeapPointers)));
EXPECT_CALL(gc, StartIncrementalGarbageCollection(::testing::_)).Times(0);
// Allocate the rest needed to trigger atomic gc ().
FakeAllocate(&stats_collector, StatsCollector::kAllocationThresholdBytes);
diff --git a/deps/v8/test/unittests/heap/cppgc/heap-object-header-unittest.cc b/deps/v8/test/unittests/heap/cppgc/heap-object-header-unittest.cc
index 11f4498aa0..8c27bacfed 100644
--- a/deps/v8/test/unittests/heap/cppgc/heap-object-header-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/heap-object-header-unittest.cc
@@ -21,7 +21,7 @@ TEST(HeapObjectHeaderTest, Constructor) {
constexpr GCInfoIndex kGCInfoIndex = 17;
constexpr size_t kSize = kAllocationGranularity;
HeapObjectHeader header(kSize, kGCInfoIndex);
- EXPECT_EQ(kSize, header.GetSize());
+ EXPECT_EQ(kSize, header.AllocatedSize());
EXPECT_EQ(kGCInfoIndex, header.GetGCInfoIndex());
EXPECT_TRUE(header.IsInConstruction());
EXPECT_FALSE(header.IsMarked());
@@ -32,7 +32,7 @@ TEST(HeapObjectHeaderTest, Payload) {
constexpr size_t kSize = kAllocationGranularity;
HeapObjectHeader header(kSize, kGCInfoIndex);
EXPECT_EQ(reinterpret_cast<ConstAddress>(&header) + sizeof(HeapObjectHeader),
- header.Payload());
+ header.ObjectStart());
}
TEST(HeapObjectHeaderTest, PayloadEnd) {
@@ -40,7 +40,7 @@ TEST(HeapObjectHeaderTest, PayloadEnd) {
constexpr size_t kSize = kAllocationGranularity;
HeapObjectHeader header(kSize, kGCInfoIndex);
EXPECT_EQ(reinterpret_cast<ConstAddress>(&header) + kSize,
- header.PayloadEnd());
+ header.ObjectEnd());
}
TEST(HeapObjectHeaderTest, GetGCInfoIndex) {
@@ -51,12 +51,12 @@ TEST(HeapObjectHeaderTest, GetGCInfoIndex) {
EXPECT_EQ(kGCInfoIndex, header.GetGCInfoIndex<AccessMode::kAtomic>());
}
-TEST(HeapObjectHeaderTest, GetSize) {
+TEST(HeapObjectHeaderTest, AllocatedSize) {
constexpr GCInfoIndex kGCInfoIndex = 17;
constexpr size_t kSize = kAllocationGranularity * 23;
HeapObjectHeader header(kSize, kGCInfoIndex);
- EXPECT_EQ(kSize, header.GetSize());
- EXPECT_EQ(kSize, header.GetSize<AccessMode::kAtomic>());
+ EXPECT_EQ(kSize, header.AllocatedSize());
+ EXPECT_EQ(kSize, header.AllocatedSize<AccessMode::kAtomic>());
}
TEST(HeapObjectHeaderTest, IsLargeObject) {
@@ -79,7 +79,7 @@ TEST(HeapObjectHeaderTest, MarkObjectAsFullyConstructed) {
EXPECT_FALSE(header.IsInConstruction());
// Size shares the same bitfield and should be unaffected by
// MarkObjectAsFullyConstructed.
- EXPECT_EQ(kSize, header.GetSize());
+ EXPECT_EQ(kSize, header.AllocatedSize());
}
TEST(HeapObjectHeaderTest, TryMark) {
@@ -156,10 +156,10 @@ TEST(HeapObjectHeaderTest, ConstructionBitProtectsNonAtomicWrites) {
~kAllocationMask;
typename std::aligned_storage<kSize, kAllocationGranularity>::type data;
HeapObjectHeader* header = new (&data) HeapObjectHeader(kSize, 1);
- ConcurrentGCThread gc_thread(header,
- reinterpret_cast<Payload*>(header->Payload()));
+ ConcurrentGCThread gc_thread(
+ header, reinterpret_cast<Payload*>(header->ObjectStart()));
CHECK(gc_thread.Start());
- new (header->Payload()) Payload();
+ new (header->ObjectStart()) Payload();
header->MarkAsFullyConstructed();
gc_thread.Join();
}
diff --git a/deps/v8/test/unittests/heap/cppgc/heap-page-unittest.cc b/deps/v8/test/unittests/heap/cppgc/heap-page-unittest.cc
index acfcd2d401..cff54298e4 100644
--- a/deps/v8/test/unittests/heap/cppgc/heap-page-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/heap-page-unittest.cc
@@ -161,8 +161,8 @@ TEST_F(PageTest, HeapObjectHeaderOnBasePageIndexing) {
size_t num = 0;
for (const HeapObjectHeader& header : *page) {
EXPECT_EQ(reinterpret_cast<Address>(persistents[num].Get()),
- header.Payload());
- size += header.GetSize();
+ header.ObjectStart());
+ size += header.AllocatedSize();
++num;
}
EXPECT_EQ(num, persistents.size());
@@ -180,7 +180,7 @@ TEST_F(PageTest, HeapObjectHeaderOnLargePageIndexing) {
EXPECT_EQ(expected_payload_size, page->PayloadSize());
const HeapObjectHeader* header = page->ObjectHeader();
- EXPECT_EQ(reinterpret_cast<Address>(gced), header->Payload());
+ EXPECT_EQ(reinterpret_cast<Address>(gced), header->ObjectStart());
}
TEST_F(PageTest, NormalPageCreationDestruction) {
@@ -253,7 +253,7 @@ TEST_F(PageTest, UnsweptPageDestruction) {
TEST_F(PageTest, ObjectHeaderFromInnerAddress) {
{
auto* object = MakeGarbageCollected<GCed<64>>(GetAllocationHandle());
- const HeapObjectHeader& expected = HeapObjectHeader::FromPayload(object);
+ const HeapObjectHeader& expected = HeapObjectHeader::FromObject(object);
for (auto* inner_ptr = reinterpret_cast<ConstAddress>(object);
inner_ptr < reinterpret_cast<ConstAddress>(object + 1); ++inner_ptr) {
@@ -266,7 +266,7 @@ TEST_F(PageTest, ObjectHeaderFromInnerAddress) {
{
auto* object = MakeGarbageCollected<GCed<2 * kLargeObjectSizeThreshold>>(
GetAllocationHandle());
- const HeapObjectHeader& expected = HeapObjectHeader::FromPayload(object);
+ const HeapObjectHeader& expected = HeapObjectHeader::FromObject(object);
const HeapObjectHeader& hoh =
BasePage::FromPayload(object)->ObjectHeaderFromInnerAddress(
diff --git a/deps/v8/test/unittests/heap/cppgc/heap-registry-unittest.cc b/deps/v8/test/unittests/heap/cppgc/heap-registry-unittest.cc
new file mode 100644
index 0000000000..3726eab946
--- /dev/null
+++ b/deps/v8/test/unittests/heap/cppgc/heap-registry-unittest.cc
@@ -0,0 +1,88 @@
+// Copyright 2020 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.
+
+#include <algorithm>
+
+#include "include/cppgc/allocation.h"
+#include "include/cppgc/heap.h"
+#include "src/heap/cppgc/heap-base.h"
+#include "src/heap/cppgc/process-heap.h"
+#include "test/unittests/heap/cppgc/tests.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace cppgc {
+namespace internal {
+
+class HeapRegistryTest : public testing::TestWithPlatform {};
+
+TEST_F(HeapRegistryTest, Empty) {
+ EXPECT_EQ(0u, HeapRegistry::GetRegisteredHeapsForTesting().size());
+}
+
+namespace {
+
+bool Contains(const HeapRegistry::Storage& storage, const cppgc::Heap* needle) {
+ return storage.end() !=
+ std::find(storage.begin(), storage.end(),
+ &cppgc::internal::Heap::From(needle)->AsBase());
+}
+
+} // namespace
+
+TEST_F(HeapRegistryTest, RegisterUnregisterHeaps) {
+ const auto& storage = HeapRegistry::GetRegisteredHeapsForTesting();
+ EXPECT_EQ(0u, storage.size());
+ {
+ const auto heap1 = Heap::Create(platform_);
+ EXPECT_TRUE(Contains(storage, heap1.get()));
+ EXPECT_EQ(1u, storage.size());
+ {
+ const auto heap2 = Heap::Create(platform_);
+ EXPECT_TRUE(Contains(storage, heap1.get()));
+ EXPECT_TRUE(Contains(storage, heap2.get()));
+ EXPECT_EQ(2u, storage.size());
+ }
+ EXPECT_TRUE(Contains(storage, heap1.get()));
+ EXPECT_EQ(1u, storage.size());
+ }
+ EXPECT_EQ(0u, storage.size());
+}
+
+TEST_F(HeapRegistryTest, DoesNotFindNullptr) {
+ const auto heap = Heap::Create(platform_);
+ EXPECT_EQ(nullptr, HeapRegistry::TryFromManagedPointer(nullptr));
+}
+
+TEST_F(HeapRegistryTest, DoesNotFindStackAddress) {
+ const auto heap = Heap::Create(platform_);
+ EXPECT_EQ(nullptr, HeapRegistry::TryFromManagedPointer(&heap));
+}
+
+TEST_F(HeapRegistryTest, DoesNotFindOffHeap) {
+ const auto heap = Heap::Create(platform_);
+ auto dummy = std::make_unique<char>();
+ EXPECT_EQ(nullptr, HeapRegistry::TryFromManagedPointer(dummy.get()));
+}
+
+namespace {
+
+class GCed final : public GarbageCollected<GCed> {
+ public:
+ void Trace(Visitor*) const {}
+};
+
+} // namespace
+
+TEST_F(HeapRegistryTest, FindsRightHeapForOnHeapAddress) {
+ const auto heap1 = Heap::Create(platform_);
+ const auto heap2 = Heap::Create(platform_);
+ auto* o = MakeGarbageCollected<GCed>(heap1->GetAllocationHandle());
+ EXPECT_EQ(&cppgc::internal::Heap::From(heap1.get())->AsBase(),
+ HeapRegistry::TryFromManagedPointer(o));
+ EXPECT_NE(&cppgc::internal::Heap::From(heap2.get())->AsBase(),
+ HeapRegistry::TryFromManagedPointer(o));
+}
+
+} // namespace internal
+} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/heap-unittest.cc b/deps/v8/test/unittests/heap/cppgc/heap-unittest.cc
index f664afdd17..e3a1d671df 100644
--- a/deps/v8/test/unittests/heap/cppgc/heap-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/heap-unittest.cc
@@ -48,7 +48,7 @@ class Foo : public GarbageCollected<Foo> {
size_t Foo::destructor_callcount;
template <size_t Size>
-class GCed : public GarbageCollected<Foo> {
+class GCed : public GarbageCollected<GCed<Size>> {
public:
void Trace(cppgc::Visitor*) const {}
char buf[Size];
@@ -89,37 +89,81 @@ TEST_F(GCHeapTest, ConservativeGCRetainsObjectOnStack) {
EXPECT_EQ(1u, Foo::destructor_callcount);
}
+namespace {
+
+class GCedWithFinalizer final : public GarbageCollected<GCedWithFinalizer> {
+ public:
+ static size_t destructor_counter;
+
+ GCedWithFinalizer() { destructor_counter = 0; }
+ ~GCedWithFinalizer() { destructor_counter++; }
+ void Trace(Visitor* visitor) const {}
+};
+// static
+size_t GCedWithFinalizer::destructor_counter = 0;
+
+class LargeObjectGCDuringCtor final
+ : public GarbageCollected<LargeObjectGCDuringCtor> {
+ public:
+ static constexpr size_t kDataSize = kLargeObjectSizeThreshold + 1;
+
+ explicit LargeObjectGCDuringCtor(cppgc::Heap* heap)
+ : child_(MakeGarbageCollected<GCedWithFinalizer>(
+ heap->GetAllocationHandle())) {
+ internal::Heap::From(heap)->CollectGarbage(
+ Heap::Config::ConservativeAtomicConfig());
+ }
+
+ void Trace(Visitor* visitor) const { visitor->Trace(child_); }
+
+ char data[kDataSize];
+ Member<GCedWithFinalizer> child_;
+};
+
+} // namespace
+
+TEST_F(GCHeapTest, ConservativeGCFromLargeObjectCtorFindsObject) {
+ GCedWithFinalizer::destructor_counter = 0;
+ MakeGarbageCollected<LargeObjectGCDuringCtor>(GetAllocationHandle(),
+ GetHeap());
+ EXPECT_EQ(0u, GCedWithFinalizer::destructor_counter);
+}
+
TEST_F(GCHeapTest, ObjectPayloadSize) {
static constexpr size_t kNumberOfObjectsPerArena = 16;
static constexpr size_t kObjectSizes[] = {1, 32, 64, 128,
2 * kLargeObjectSizeThreshold};
- Heap::From(GetHeap())->CollectGarbage(
- GarbageCollector::Config::ConservativeAtomicConfig());
+ EXPECT_EQ(0u, Heap::From(GetHeap())->ObjectPayloadSize());
- subtle::NoGarbageCollectionScope no_gc(*Heap::From(GetHeap()));
+ {
+ subtle::NoGarbageCollectionScope no_gc(*Heap::From(GetHeap()));
+
+ for (size_t k = 0; k < kNumberOfObjectsPerArena; ++k) {
+ MakeGarbageCollected<GCed<kObjectSizes[0]>>(GetAllocationHandle());
+ MakeGarbageCollected<GCed<kObjectSizes[1]>>(GetAllocationHandle());
+ MakeGarbageCollected<GCed<kObjectSizes[2]>>(GetAllocationHandle());
+ MakeGarbageCollected<GCed<kObjectSizes[3]>>(GetAllocationHandle());
+ MakeGarbageCollected<GCed<kObjectSizes[4]>>(GetAllocationHandle());
+ }
- for (size_t k = 0; k < kNumberOfObjectsPerArena; ++k) {
- MakeGarbageCollected<GCed<kObjectSizes[0]>>(GetAllocationHandle());
- MakeGarbageCollected<GCed<kObjectSizes[1]>>(GetAllocationHandle());
- MakeGarbageCollected<GCed<kObjectSizes[2]>>(GetAllocationHandle());
- MakeGarbageCollected<GCed<kObjectSizes[3]>>(GetAllocationHandle());
- MakeGarbageCollected<GCed<kObjectSizes[4]>>(GetAllocationHandle());
+ size_t aligned_object_sizes[arraysize(kObjectSizes)];
+ std::transform(std::cbegin(kObjectSizes), std::cend(kObjectSizes),
+ std::begin(aligned_object_sizes), [](size_t size) {
+ return RoundUp(size, kAllocationGranularity);
+ });
+ const size_t expected_size = std::accumulate(
+ std::cbegin(aligned_object_sizes), std::cend(aligned_object_sizes), 0u,
+ [](size_t acc, size_t size) {
+ return acc + kNumberOfObjectsPerArena * size;
+ });
+ // TODO(chromium:1056170): Change to EXPECT_EQ when proper sweeping is
+ // implemented.
+ EXPECT_LE(expected_size, Heap::From(GetHeap())->ObjectPayloadSize());
}
- size_t aligned_object_sizes[arraysize(kObjectSizes)];
- std::transform(std::cbegin(kObjectSizes), std::cend(kObjectSizes),
- std::begin(aligned_object_sizes), [](size_t size) {
- return RoundUp(size, kAllocationGranularity);
- });
- const size_t expected_size = std::accumulate(
- std::cbegin(aligned_object_sizes), std::cend(aligned_object_sizes), 0u,
- [](size_t acc, size_t size) {
- return acc + kNumberOfObjectsPerArena * size;
- });
- // TODO(chromium:1056170): Change to EXPECT_EQ when proper sweeping is
- // implemented.
- EXPECT_LE(expected_size, Heap::From(GetHeap())->ObjectPayloadSize());
+ PreciseGC();
+ EXPECT_EQ(0u, Heap::From(GetHeap())->ObjectPayloadSize());
}
TEST_F(GCHeapTest, AllocateWithAdditionalBytes) {
@@ -127,20 +171,20 @@ TEST_F(GCHeapTest, AllocateWithAdditionalBytes) {
static constexpr size_t kAdditionalBytes = 10u * kAllocationGranularity;
{
Foo* object = MakeGarbageCollected<Foo>(GetAllocationHandle());
- EXPECT_LE(kBaseSize, HeapObjectHeader::FromPayload(object).GetSize());
+ EXPECT_LE(kBaseSize, HeapObjectHeader::FromObject(object).AllocatedSize());
}
{
Foo* object = MakeGarbageCollected<Foo>(GetAllocationHandle(),
AdditionalBytes(kAdditionalBytes));
EXPECT_LE(kBaseSize + kAdditionalBytes,
- HeapObjectHeader::FromPayload(object).GetSize());
+ HeapObjectHeader::FromObject(object).AllocatedSize());
}
{
Foo* object = MakeGarbageCollected<Foo>(
GetAllocationHandle(),
AdditionalBytes(kAdditionalBytes * kAdditionalBytes));
EXPECT_LE(kBaseSize + kAdditionalBytes * kAdditionalBytes,
- HeapObjectHeader::FromPayload(object).GetSize());
+ HeapObjectHeader::FromObject(object).AllocatedSize());
}
}
@@ -152,10 +196,11 @@ TEST_F(GCHeapTest, AllocatedSizeDependOnAdditionalBytes) {
Foo* object_with_more_bytes = MakeGarbageCollected<Foo>(
GetAllocationHandle(),
AdditionalBytes(kAdditionalBytes * kAdditionalBytes));
- EXPECT_LT(HeapObjectHeader::FromPayload(object).GetSize(),
- HeapObjectHeader::FromPayload(object_with_bytes).GetSize());
- EXPECT_LT(HeapObjectHeader::FromPayload(object_with_bytes).GetSize(),
- HeapObjectHeader::FromPayload(object_with_more_bytes).GetSize());
+ EXPECT_LT(HeapObjectHeader::FromObject(object).AllocatedSize(),
+ HeapObjectHeader::FromObject(object_with_bytes).AllocatedSize());
+ EXPECT_LT(
+ HeapObjectHeader::FromObject(object_with_bytes).AllocatedSize(),
+ HeapObjectHeader::FromObject(object_with_more_bytes).AllocatedSize());
}
TEST_F(GCHeapTest, Epoch) {
@@ -322,5 +367,16 @@ TEST_F(GCHeapDeathTest, LargeChainOfNewStates) {
EXPECT_DEATH_IF_SUPPORTED(Heap::From(GetHeap())->Terminate(), "");
}
+TEST_F(GCHeapTest, IsHeapObjectAliveForConstPointer) {
+ // Regression test: http://crbug.com/661363.
+ GCed<64>* object = MakeGarbageCollected<GCed<64>>(GetAllocationHandle());
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
+ LivenessBroker broker = internal::LivenessBrokerFactory::Create();
+ EXPECT_TRUE(header.TryMarkAtomic());
+ EXPECT_TRUE(broker.IsHeapObjectAlive(object));
+ const GCed<64>* const_object = const_cast<const GCed<64>*>(object);
+ EXPECT_TRUE(broker.IsHeapObjectAlive(const_object));
+}
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/logging-unittest.cc b/deps/v8/test/unittests/heap/cppgc/logging-unittest.cc
index d9ff910686..8f4bb9fb75 100644
--- a/deps/v8/test/unittests/heap/cppgc/logging-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/logging-unittest.cc
@@ -63,13 +63,11 @@ TEST(LoggingTest, Message) {
TEST(LoggingTest, SourceLocation) {
using ::testing::AllOf;
using ::testing::HasSubstr;
+ // clang-format off
constexpr auto loc = SourceLocation::Current();
- EXPECT_DEATH_IF_SUPPORTED(CPPGC_DCHECK(false),
- AllOf(HasSubstr(loc.FileName()),
- HasSubstr(std::to_string(loc.Line() + 3))));
- EXPECT_DEATH_IF_SUPPORTED(CPPGC_CHECK(false),
- AllOf(HasSubstr(loc.FileName()),
- HasSubstr(std::to_string(loc.Line() + 6))));
+ EXPECT_DEATH_IF_SUPPORTED(CPPGC_DCHECK(false), AllOf(HasSubstr(loc.FileName()), HasSubstr(std::to_string(loc.Line() + 1)))); // NOLINT(whitespace/line_length)
+ EXPECT_DEATH_IF_SUPPORTED(CPPGC_CHECK(false), AllOf(HasSubstr(loc.FileName()), HasSubstr(std::to_string(loc.Line() + 2)))); // NOLINT(whitespace/line_length)
+ // clang-format on
}
#endif // CPPGC_SUPPORTS_SOURCE_LOCATION
diff --git a/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc b/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc
index 8f8191c6d0..f96e5f4a25 100644
--- a/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc
@@ -73,7 +73,7 @@ V8_NOINLINE T access(volatile const T& t) {
TEST_F(MarkerTest, PersistentIsMarked) {
Persistent<GCed> object = MakeGarbageCollected<GCed>(GetAllocationHandle());
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
EXPECT_FALSE(header.IsMarked());
DoMarking(MarkingConfig::StackState::kNoHeapPointers);
EXPECT_TRUE(header.IsMarked());
@@ -82,7 +82,7 @@ TEST_F(MarkerTest, PersistentIsMarked) {
TEST_F(MarkerTest, ReachableMemberIsMarked) {
Persistent<GCed> parent = MakeGarbageCollected<GCed>(GetAllocationHandle());
parent->SetChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(parent->child());
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(parent->child());
EXPECT_FALSE(header.IsMarked());
DoMarking(MarkingConfig::StackState::kNoHeapPointers);
EXPECT_TRUE(header.IsMarked());
@@ -90,7 +90,7 @@ TEST_F(MarkerTest, ReachableMemberIsMarked) {
TEST_F(MarkerTest, UnreachableMemberIsNotMarked) {
Member<GCed> object = MakeGarbageCollected<GCed>(GetAllocationHandle());
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
EXPECT_FALSE(header.IsMarked());
DoMarking(MarkingConfig::StackState::kNoHeapPointers);
EXPECT_FALSE(header.IsMarked());
@@ -98,15 +98,15 @@ TEST_F(MarkerTest, UnreachableMemberIsNotMarked) {
TEST_F(MarkerTest, ObjectReachableFromStackIsMarked) {
GCed* object = MakeGarbageCollected<GCed>(GetAllocationHandle());
- EXPECT_FALSE(HeapObjectHeader::FromPayload(object).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(object).IsMarked());
DoMarking(MarkingConfig::StackState::kMayContainHeapPointers);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(object).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(object).IsMarked());
access(object);
}
TEST_F(MarkerTest, ObjectReachableOnlyFromStackIsNotMarkedIfStackIsEmpty) {
GCed* object = MakeGarbageCollected<GCed>(GetAllocationHandle());
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
EXPECT_FALSE(header.IsMarked());
DoMarking(MarkingConfig::StackState::kNoHeapPointers);
EXPECT_FALSE(header.IsMarked());
@@ -195,10 +195,10 @@ TEST_F(MarkerTest, DeepHierarchyIsMarked) {
parent = parent->child();
}
DoMarking(MarkingConfig::StackState::kNoHeapPointers);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(root).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(root).IsMarked());
parent = root;
for (int i = 0; i < kHierarchyDepth; ++i) {
- EXPECT_TRUE(HeapObjectHeader::FromPayload(parent->child()).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(parent->child()).IsMarked());
EXPECT_TRUE(parent->weak_child());
parent = parent->child();
}
@@ -209,9 +209,9 @@ TEST_F(MarkerTest, NestedObjectsOnStackAreMarked) {
root->SetChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
root->child()->SetChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
DoMarking(MarkingConfig::StackState::kMayContainHeapPointers);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(root).IsMarked());
- EXPECT_TRUE(HeapObjectHeader::FromPayload(root->child()).IsMarked());
- EXPECT_TRUE(HeapObjectHeader::FromPayload(root->child()->child()).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(root).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(root->child()).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(root->child()->child()).IsMarked());
}
namespace {
@@ -248,9 +248,9 @@ TEST_F(MarkerTest, InConstructionObjectIsEventuallyMarkedEmptyStack) {
Member<GCedWithCallback> member(obj);
marker->Visitor().Trace(member);
});
- EXPECT_FALSE(HeapObjectHeader::FromPayload(object).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(object).IsMarked());
marker()->FinishMarking(MarkingConfig::StackState::kMayContainHeapPointers);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(object).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(object).IsMarked());
}
TEST_F(MarkerTest, InConstructionObjectIsEventuallyMarkedNonEmptyStack) {
@@ -262,10 +262,10 @@ TEST_F(MarkerTest, InConstructionObjectIsEventuallyMarkedNonEmptyStack) {
GetAllocationHandle(), [marker = marker()](GCedWithCallback* obj) {
Member<GCedWithCallback> member(obj);
marker->Visitor().Trace(member);
- EXPECT_FALSE(HeapObjectHeader::FromPayload(obj).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(obj).IsMarked());
marker->FinishMarking(
MarkingConfig::StackState::kMayContainHeapPointers);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(obj).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(obj).IsMarked());
});
}
@@ -301,7 +301,7 @@ V8_NOINLINE void RegisterInConstructionObject(
Member<GCedWithCallback> member(obj);
// Adds GCedWithCallback to in-construction objects.
visitor.Trace(member);
- EXPECT_FALSE(HeapObjectHeader::FromPayload(obj).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(obj).IsMarked());
// The inner object GCed is only found if GCedWithCallback is processed.
storage.set_object(obj->gced());
},
@@ -321,9 +321,9 @@ TEST_F(MarkerTest,
GCObliviousObjectStorage storage;
RegisterInConstructionObject(GetAllocationHandle(), marker()->Visitor(),
storage);
- EXPECT_FALSE(HeapObjectHeader::FromPayload(storage.object()).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(storage.object()).IsMarked());
marker()->FinishMarking(MarkingConfig::StackState::kMayContainHeapPointers);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(storage.object()).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(storage.object()).IsMarked());
}
TEST_F(MarkerTest, SentinelNotClearedOnWeakPersistentHandling) {
@@ -340,7 +340,7 @@ TEST_F(MarkerTest, SentinelNotClearedOnWeakPersistentHandling) {
}
// {root} object must be marked at this point because we do not allow
// encountering kSentinelPointer in WeakMember on regular Trace() calls.
- ASSERT_TRUE(HeapObjectHeader::FromPayload(root.Get()).IsMarked());
+ ASSERT_TRUE(HeapObjectHeader::FromObject(root.Get()).IsMarked());
root->SetWeakChild(kSentinelPointer);
marker()->FinishMarking(MarkingConfig::StackState::kNoHeapPointers);
EXPECT_EQ(kSentinelPointer, root->weak_child());
@@ -356,10 +356,6 @@ class IncrementalMarkingTest : public testing::TestWithHeap {
MarkingConfig::CollectionType::kMajor,
MarkingConfig::StackState::kNoHeapPointers,
MarkingConfig::MarkingType::kIncremental};
- static constexpr MarkingConfig IncrementalConservativeMarkingConfig = {
- MarkingConfig::CollectionType::kMajor,
- MarkingConfig::StackState::kMayContainHeapPointers,
- MarkingConfig::MarkingType::kIncremental};
void FinishSteps(MarkingConfig::StackState stack_state) {
while (!SingleStep(stack_state)) {
@@ -391,22 +387,20 @@ class IncrementalMarkingTest : public testing::TestWithHeap {
constexpr IncrementalMarkingTest::MarkingConfig
IncrementalMarkingTest::IncrementalPreciseMarkingConfig;
-constexpr IncrementalMarkingTest::MarkingConfig
- IncrementalMarkingTest::IncrementalConservativeMarkingConfig;
TEST_F(IncrementalMarkingTest, RootIsMarkedAfterMarkingStarted) {
Persistent<GCed> root = MakeGarbageCollected<GCed>(GetAllocationHandle());
- EXPECT_FALSE(HeapObjectHeader::FromPayload(root).IsMarked());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(root).IsMarked());
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get(),
IncrementalPreciseMarkingConfig);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(root).IsMarked());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(root).IsMarked());
FinishMarking();
}
TEST_F(IncrementalMarkingTest, MemberIsMarkedAfterMarkingSteps) {
Persistent<GCed> root = MakeGarbageCollected<GCed>(GetAllocationHandle());
root->SetChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(root->child());
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(root->child());
EXPECT_FALSE(header.IsMarked());
InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get(),
IncrementalPreciseMarkingConfig);
@@ -422,7 +416,7 @@ TEST_F(IncrementalMarkingTest,
IncrementalPreciseMarkingConfig);
root->SetChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
FinishSteps(MarkingConfig::StackState::kNoHeapPointers);
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(root->child());
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(root->child());
EXPECT_TRUE(header.IsMarked());
FinishMarking();
}
@@ -444,7 +438,7 @@ TEST_F(IncrementalMarkingTest, IncrementalStepDuringAllocation) {
const HeapObjectHeader* header;
MakeGarbageCollected<GCedWithCallback>(
GetAllocationHandle(), [this, &holder, &header](GCedWithCallback* obj) {
- header = &HeapObjectHeader::FromPayload(obj);
+ header = &HeapObjectHeader::FromObject(obj);
holder->member_ = obj;
EXPECT_FALSE(header->IsMarked());
FinishSteps(MarkingConfig::StackState::kMayContainHeapPointers);
diff --git a/deps/v8/test/unittests/heap/cppgc/marking-verifier-unittest.cc b/deps/v8/test/unittests/heap/cppgc/marking-verifier-unittest.cc
index c4e34655fe..733a6383da 100644
--- a/deps/v8/test/unittests/heap/cppgc/marking-verifier-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/marking-verifier-unittest.cc
@@ -22,10 +22,12 @@ class MarkingVerifierTest : public testing::TestWithHeap {
public:
using StackState = Heap::Config::StackState;
- void VerifyMarking(HeapBase& heap, StackState stack_state) {
+ V8_NOINLINE void VerifyMarking(HeapBase& heap, StackState stack_state,
+ size_t expected_marked_bytes) {
Heap::From(GetHeap())->object_allocator().ResetLinearAllocationBuffers();
MarkingVerifier verifier(heap);
- verifier.Run(stack_state);
+ verifier.Run(stack_state, v8::base::Stack::GetCurrentStackPosition(),
+ expected_marked_bytes);
}
};
@@ -54,28 +56,35 @@ V8_NOINLINE T access(volatile const T& t) {
// Following tests should not crash.
-TEST_F(MarkingVerifierTest, DoesntDieOnMarkedOnStackReference) {
+TEST_F(MarkingVerifierTest, DoesNotDieOnMarkedOnStackReference) {
GCed* object = MakeGarbageCollected<GCed>(GetAllocationHandle());
- HeapObjectHeader::FromPayload(object).TryMarkAtomic();
+ auto& header = HeapObjectHeader::FromObject(object);
+ ASSERT_TRUE(header.TryMarkAtomic());
VerifyMarking(Heap::From(GetHeap())->AsBase(),
- StackState::kMayContainHeapPointers);
+ StackState::kMayContainHeapPointers, header.AllocatedSize());
access(object);
}
-TEST_F(MarkingVerifierTest, DoesntDieOnMarkedMember) {
+TEST_F(MarkingVerifierTest, DoesNotDieOnMarkedMember) {
Persistent<GCed> parent = MakeGarbageCollected<GCed>(GetAllocationHandle());
- HeapObjectHeader::FromPayload(parent.Get()).TryMarkAtomic();
+ auto& parent_header = HeapObjectHeader::FromObject(parent.Get());
+ ASSERT_TRUE(parent_header.TryMarkAtomic());
parent->SetChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader::FromPayload(parent->child()).TryMarkAtomic();
- VerifyMarking(Heap::From(GetHeap())->AsBase(), StackState::kNoHeapPointers);
+ auto& child_header = HeapObjectHeader::FromObject(parent->child());
+ ASSERT_TRUE(child_header.TryMarkAtomic());
+ VerifyMarking(Heap::From(GetHeap())->AsBase(), StackState::kNoHeapPointers,
+ parent_header.AllocatedSize() + child_header.AllocatedSize());
}
-TEST_F(MarkingVerifierTest, DoesntDieOnMarkedWeakMember) {
+TEST_F(MarkingVerifierTest, DoesNotDieOnMarkedWeakMember) {
Persistent<GCed> parent = MakeGarbageCollected<GCed>(GetAllocationHandle());
- HeapObjectHeader::FromPayload(parent.Get()).TryMarkAtomic();
+ auto& parent_header = HeapObjectHeader::FromObject(parent.Get());
+ ASSERT_TRUE(parent_header.TryMarkAtomic());
parent->SetWeakChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader::FromPayload(parent->weak_child()).TryMarkAtomic();
- VerifyMarking(Heap::From(GetHeap())->AsBase(), StackState::kNoHeapPointers);
+ auto& child_header = HeapObjectHeader::FromObject(parent->weak_child());
+ ASSERT_TRUE(child_header.TryMarkAtomic());
+ VerifyMarking(Heap::From(GetHeap())->AsBase(), StackState::kNoHeapPointers,
+ parent_header.AllocatedSize() + child_header.AllocatedSize());
}
namespace {
@@ -91,12 +100,14 @@ class GCedWithCallback : public GarbageCollected<GCedWithCallback> {
} // namespace
-TEST_F(MarkingVerifierTest, DoesntDieOnInConstructionOnObject) {
+TEST_F(MarkingVerifierTest, DoesNotDieOnInConstructionOnObject) {
MakeGarbageCollected<GCedWithCallback>(
GetAllocationHandle(), [this](GCedWithCallback* obj) {
- HeapObjectHeader::FromPayload(obj).TryMarkAtomic();
+ auto& header = HeapObjectHeader::FromObject(obj);
+ CHECK(header.TryMarkAtomic());
VerifyMarking(Heap::From(GetHeap())->AsBase(),
- StackState::kMayContainHeapPointers);
+ StackState::kMayContainHeapPointers,
+ header.AllocatedSize());
});
}
@@ -123,7 +134,7 @@ struct Holder : public GarbageCollected<Holder<T>> {
} // namespace
TEST_F(MarkingVerifierTest, DoesntDieOnInConstructionObjectWithWriteBarrier) {
- // Regression test: https://crbug.com/v8/10989.
+ // Regression test: https://crbug.com/v8/10989.
// GCedWithCallbackAndChild is marked by write barrier and then discarded by
// FlushNotFullyConstructedObjects because it is already marked.
Persistent<Holder<GCedWithCallbackAndChild>> persistent =
@@ -156,30 +167,51 @@ class MarkingVerifierDeathTest : public MarkingVerifierTest {
TEST_F(MarkingVerifierDeathTest, DieOnUnmarkedOnStackReference) {
GCed* object = MakeGarbageCollected<GCed>(GetAllocationHandle());
+ auto& header = HeapObjectHeader::FromObject(object);
+ USE(header);
EXPECT_DEATH_IF_SUPPORTED(VerifyMarking(Heap::From(GetHeap())->AsBase(),
- StackState::kMayContainHeapPointers),
+ StackState::kMayContainHeapPointers,
+ header.AllocatedSize()),
"");
access(object);
}
TEST_F(MarkingVerifierDeathTest, DieOnUnmarkedMember) {
Persistent<GCed> parent = MakeGarbageCollected<GCed>(GetAllocationHandle());
- HeapObjectHeader::FromPayload(parent.Get()).TryMarkAtomic();
+ auto& parent_header = HeapObjectHeader::FromObject(parent);
+ ASSERT_TRUE(parent_header.TryMarkAtomic());
parent->SetChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- EXPECT_DEATH_IF_SUPPORTED(VerifyMarking(Heap::From(GetHeap())->AsBase(),
- StackState::kNoHeapPointers),
- "");
+ EXPECT_DEATH_IF_SUPPORTED(
+ VerifyMarking(Heap::From(GetHeap())->AsBase(),
+ StackState::kNoHeapPointers, parent_header.AllocatedSize()),
+ "");
}
TEST_F(MarkingVerifierDeathTest, DieOnUnmarkedWeakMember) {
Persistent<GCed> parent = MakeGarbageCollected<GCed>(GetAllocationHandle());
- HeapObjectHeader::FromPayload(parent.Get()).TryMarkAtomic();
+ auto& parent_header = HeapObjectHeader::FromObject(parent);
+ ASSERT_TRUE(parent_header.TryMarkAtomic());
parent->SetWeakChild(MakeGarbageCollected<GCed>(GetAllocationHandle()));
+ EXPECT_DEATH_IF_SUPPORTED(
+ VerifyMarking(Heap::From(GetHeap())->AsBase(),
+ StackState::kNoHeapPointers, parent_header.AllocatedSize()),
+ "");
+}
+
+#ifdef CPPGC_VERIFY_LIVE_BYTES
+
+TEST_F(MarkingVerifierDeathTest, DieOnUnexpectedLiveByteCount) {
+ GCed* object = MakeGarbageCollected<GCed>(GetAllocationHandle());
+ auto& header = HeapObjectHeader::FromObject(object);
+ ASSERT_TRUE(header.TryMarkAtomic());
EXPECT_DEATH_IF_SUPPORTED(VerifyMarking(Heap::From(GetHeap())->AsBase(),
- StackState::kNoHeapPointers),
+ StackState::kMayContainHeapPointers,
+ header.AllocatedSize() - 1),
"");
}
+#endif // CPPGC_VERIFY_LIVE_BYTES
+
namespace {
template <template <typename T> class Reference>
@@ -223,7 +255,9 @@ void MarkingVerifierDeathTest::TestResurrectingPreFinalizer() {
MakeGarbageCollected<GCed>(GetAllocationHandle()));
EXPECT_DEATH_IF_SUPPORTED(PreciseGC(), "");
}
+
#if DEBUG
+
TEST_F(MarkingVerifierDeathTest, DiesOnResurrectedMember) {
TestResurrectingPreFinalizer<Member>();
}
@@ -231,6 +265,7 @@ TEST_F(MarkingVerifierDeathTest, DiesOnResurrectedMember) {
TEST_F(MarkingVerifierDeathTest, DiesOnResurrectedWeakMember) {
TestResurrectingPreFinalizer<WeakMember>();
}
+
#endif // DEBUG
} // namespace internal
diff --git a/deps/v8/test/unittests/heap/cppgc/marking-visitor-unittest.cc b/deps/v8/test/unittests/heap/cppgc/marking-visitor-unittest.cc
index a411c7e63a..a2768c86e5 100644
--- a/deps/v8/test/unittests/heap/cppgc/marking-visitor-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/marking-visitor-unittest.cc
@@ -64,7 +64,7 @@ TEST_F(MarkingVisitorTest, MarkedBytesAreInitiallyZero) {
TEST_F(MarkingVisitorTest, MarkMember) {
Member<GCed> object(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
@@ -79,7 +79,7 @@ TEST_F(MarkingVisitorTest, MarkMemberMixin) {
GCedWithMixin* object(
MakeGarbageCollected<GCedWithMixin>(GetAllocationHandle()));
Member<Mixin> mixin(object);
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
@@ -92,7 +92,7 @@ TEST_F(MarkingVisitorTest, MarkMemberMixin) {
TEST_F(MarkingVisitorTest, MarkPersistent) {
Persistent<GCed> object(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
@@ -107,7 +107,7 @@ TEST_F(MarkingVisitorTest, MarkPersistentMixin) {
GCedWithMixin* object(
MakeGarbageCollected<GCedWithMixin>(GetAllocationHandle()));
Persistent<Mixin> mixin(object);
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
@@ -122,7 +122,7 @@ TEST_F(MarkingVisitorTest, MarkPersistentMixin) {
TEST_F(MarkingVisitorTest, DontMarkWeakMember) {
WeakMember<GCed> object(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
@@ -137,7 +137,7 @@ TEST_F(MarkingVisitorTest, DontMarkWeakMemberMixin) {
GCedWithMixin* object(
MakeGarbageCollected<GCedWithMixin>(GetAllocationHandle()));
WeakMember<Mixin> mixin(object);
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
@@ -151,7 +151,7 @@ TEST_F(MarkingVisitorTest, DontMarkWeakMemberMixin) {
TEST_F(MarkingVisitorTest, DontMarkWeakPersistent) {
WeakPersistent<GCed> object(
MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
@@ -166,7 +166,7 @@ TEST_F(MarkingVisitorTest, DontMarkWeakPersistentMixin) {
GCedWithMixin* object(
MakeGarbageCollected<GCedWithMixin>(GetAllocationHandle()));
WeakPersistent<Mixin> mixin(object);
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
@@ -219,7 +219,7 @@ TEST_F(MarkingVisitorTest, MarkMemberInConstruction) {
Member<GCedWithInConstructionCallback> object(obj);
visitor.Trace(object);
});
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(gced);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(gced);
EXPECT_TRUE(visitor.marking_state().not_fully_constructed_worklist().Contains(
&header));
EXPECT_FALSE(header.IsMarked());
@@ -234,7 +234,7 @@ TEST_F(MarkingVisitorTest, MarkMemberMixinInConstruction) {
Member<MixinWithInConstructionCallback> mixin(obj);
visitor.Trace(mixin);
});
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(gced);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(gced);
EXPECT_TRUE(visitor.marking_state().not_fully_constructed_worklist().Contains(
&header));
EXPECT_FALSE(header.IsMarked());
@@ -249,7 +249,7 @@ TEST_F(MarkingVisitorTest, DontMarkWeakMemberInConstruction) {
WeakMember<GCedWithInConstructionCallback> object(obj);
visitor.Trace(object);
});
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(gced);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(gced);
EXPECT_FALSE(
visitor.marking_state().not_fully_constructed_worklist().Contains(
&header));
@@ -265,7 +265,7 @@ TEST_F(MarkingVisitorTest, DontMarkWeakMemberMixinInConstruction) {
WeakMember<MixinWithInConstructionCallback> mixin(obj);
visitor.Trace(mixin);
});
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(gced);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(gced);
EXPECT_FALSE(
visitor.marking_state().not_fully_constructed_worklist().Contains(
&header));
@@ -281,7 +281,7 @@ TEST_F(MarkingVisitorTest, MarkPersistentInConstruction) {
Persistent<GCedWithInConstructionCallback> object(obj);
visitor.TraceRootForTesting(object, SourceLocation::Current());
});
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(gced);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(gced);
EXPECT_TRUE(visitor.marking_state().not_fully_constructed_worklist().Contains(
&header));
EXPECT_FALSE(header.IsMarked());
@@ -296,7 +296,7 @@ TEST_F(MarkingVisitorTest, MarkPersistentMixinInConstruction) {
Persistent<MixinWithInConstructionCallback> mixin(obj);
visitor.TraceRootForTesting(mixin, SourceLocation::Current());
});
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(gced);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(gced);
EXPECT_TRUE(visitor.marking_state().not_fully_constructed_worklist().Contains(
&header));
EXPECT_FALSE(header.IsMarked());
@@ -304,7 +304,7 @@ TEST_F(MarkingVisitorTest, MarkPersistentMixinInConstruction) {
TEST_F(MarkingVisitorTest, StrongTracingMarksWeakMember) {
WeakMember<GCed> object(MakeGarbageCollected<GCed>(GetAllocationHandle()));
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(object);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(object);
TestMarkingVisitor visitor(GetMarker());
diff --git a/deps/v8/test/unittests/heap/cppgc/member-unittest.cc b/deps/v8/test/unittests/heap/cppgc/member-unittest.cc
index 67c51f10bd..ff9ee73ceb 100644
--- a/deps/v8/test/unittests/heap/cppgc/member-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/member-unittest.cc
@@ -10,6 +10,7 @@
#include "include/cppgc/allocation.h"
#include "include/cppgc/garbage-collected.h"
#include "include/cppgc/persistent.h"
+#include "include/cppgc/sentinel-pointer.h"
#include "include/cppgc/type-traits.h"
#include "test/unittests/heap/cppgc/tests.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -113,6 +114,40 @@ TEST_F(MemberTest, Empty) {
}
template <template <typename> class MemberType>
+void AtomicCtorTest(cppgc::Heap* heap) {
+ {
+ GCed* gced = MakeGarbageCollected<GCed>(heap->GetAllocationHandle());
+ MemberType<GCed> member(gced,
+ typename MemberType<GCed>::AtomicInitializerTag());
+ EXPECT_EQ(gced, member.Get());
+ }
+ {
+ GCed* gced = MakeGarbageCollected<GCed>(heap->GetAllocationHandle());
+ MemberType<GCed> member(*gced,
+ typename MemberType<GCed>::AtomicInitializerTag());
+ EXPECT_EQ(gced, member.Get());
+ }
+ {
+ MemberType<GCed> member(nullptr,
+ typename MemberType<GCed>::AtomicInitializerTag());
+ EXPECT_FALSE(member.Get());
+ }
+ {
+ SentinelPointer s;
+ MemberType<GCed> member(s,
+ typename MemberType<GCed>::AtomicInitializerTag());
+ EXPECT_EQ(s, member.Get());
+ }
+}
+
+TEST_F(MemberTest, AtomicCtor) {
+ cppgc::Heap* heap = GetHeap();
+ AtomicCtorTest<Member>(heap);
+ AtomicCtorTest<WeakMember>(heap);
+ AtomicCtorTest<UntracedMember>(heap);
+}
+
+template <template <typename> class MemberType>
void ClearTest(cppgc::Heap* heap) {
MemberType<GCed> member =
MakeGarbageCollected<GCed>(heap->GetAllocationHandle());
@@ -371,5 +406,163 @@ TEST_F(MemberTest, CheckingPolicy) {
EXPECT_EQ(CustomCheckingPolicy::Cached.size(),
CustomCheckingPolicy::ChecksTriggered);
}
+
+namespace {
+
+class MemberHeapTest : public testing::TestWithHeap {};
+
+class GCedWithMembers final : public GarbageCollected<GCedWithMembers> {
+ public:
+ static size_t live_count_;
+
+ GCedWithMembers() : GCedWithMembers(nullptr, nullptr) {}
+ explicit GCedWithMembers(GCedWithMembers* strong, GCedWithMembers* weak)
+ : strong_nested_(strong), weak_nested_(weak) {
+ ++live_count_;
+ }
+
+ ~GCedWithMembers() { --live_count_; }
+
+ void Trace(cppgc::Visitor* visitor) const {
+ visitor->Trace(strong_nested_);
+ visitor->Trace(weak_nested_);
+ }
+
+ bool WasNestedCleared() const { return !weak_nested_; }
+
+ private:
+ Member<GCedWithMembers> strong_nested_;
+ WeakMember<GCedWithMembers> weak_nested_;
+};
+size_t GCedWithMembers::live_count_ = 0;
+
+} // namespace
+
+TEST_F(MemberHeapTest, MemberRetainsObject) {
+ EXPECT_EQ(0u, GCedWithMembers::live_count_);
+ {
+ GCedWithMembers* nested_object =
+ MakeGarbageCollected<GCedWithMembers>(GetAllocationHandle());
+ Persistent<GCedWithMembers> gced_with_members =
+ MakeGarbageCollected<GCedWithMembers>(GetAllocationHandle(),
+ nested_object, nested_object);
+ EXPECT_EQ(2u, GCedWithMembers::live_count_);
+ PreciseGC();
+ EXPECT_EQ(2u, GCedWithMembers::live_count_);
+ EXPECT_FALSE(gced_with_members->WasNestedCleared());
+ }
+ PreciseGC();
+ EXPECT_EQ(0u, GCedWithMembers::live_count_);
+ {
+ GCedWithMembers* nested_object =
+ MakeGarbageCollected<GCedWithMembers>(GetAllocationHandle());
+ GCedWithMembers* gced_with_members = MakeGarbageCollected<GCedWithMembers>(
+ GetAllocationHandle(), nested_object, nested_object);
+ EXPECT_EQ(2u, GCedWithMembers::live_count_);
+ ConservativeGC();
+ EXPECT_EQ(2u, GCedWithMembers::live_count_);
+ EXPECT_FALSE(gced_with_members->WasNestedCleared());
+ }
+ PreciseGC();
+ EXPECT_EQ(0u, GCedWithMembers::live_count_);
+}
+
+TEST_F(MemberHeapTest, WeakMemberDoesNotRetainObject) {
+ EXPECT_EQ(0u, GCedWithMembers::live_count_);
+ auto* weak_nested =
+ MakeGarbageCollected<GCedWithMembers>(GetAllocationHandle());
+ Persistent<GCedWithMembers> gced_with_members(
+ MakeGarbageCollected<GCedWithMembers>(GetAllocationHandle(), nullptr,
+ weak_nested));
+ PreciseGC();
+ EXPECT_EQ(1u, GCedWithMembers::live_count_);
+ EXPECT_TRUE(gced_with_members->WasNestedCleared());
+}
+
+namespace {
+class GCedWithConstWeakMember
+ : public GarbageCollected<GCedWithConstWeakMember> {
+ public:
+ explicit GCedWithConstWeakMember(const GCedWithMembers* weak)
+ : weak_member_(weak) {}
+
+ void Trace(Visitor* visitor) const { visitor->Trace(weak_member_); }
+
+ const GCedWithMembers* weak_member() const { return weak_member_; }
+
+ private:
+ const WeakMember<const GCedWithMembers> weak_member_;
+};
+} // namespace
+
+TEST_F(MemberHeapTest, ConstWeakRefIsClearedOnGC) {
+ const WeakPersistent<const GCedWithMembers> weak_persistent =
+ MakeGarbageCollected<GCedWithMembers>(GetAllocationHandle());
+ Persistent<GCedWithConstWeakMember> persistent =
+ MakeGarbageCollected<GCedWithConstWeakMember>(GetAllocationHandle(),
+ weak_persistent);
+ PreciseGC();
+ EXPECT_FALSE(weak_persistent);
+ EXPECT_FALSE(persistent->weak_member());
+}
+
+#if V8_ENABLE_CHECKS
+
+namespace {
+class MemberHeapDeathTest : public testing::TestWithHeap {};
+
+class LinkedNode final : public GarbageCollected<LinkedNode> {
+ public:
+ explicit LinkedNode(LinkedNode* next) : next_(next) {}
+ void Trace(Visitor* v) const { v->Trace(next_); }
+
+ void SetNext(LinkedNode* next) { next_ = next; }
+
+ private:
+ Member<LinkedNode> next_;
+};
+
+} // namespace
+
+TEST_F(MemberHeapDeathTest, CheckForOffHeapMemberCrashesOnReassignment) {
+ std::vector<Member<LinkedNode>> off_heap_member;
+ // Verification state is constructed on first assignment.
+ off_heap_member.emplace_back(
+ MakeGarbageCollected<LinkedNode>(GetAllocationHandle(), nullptr));
+ {
+ auto tmp_heap = cppgc::Heap::Create(platform_);
+ auto* tmp_obj = MakeGarbageCollected<LinkedNode>(
+ tmp_heap->GetAllocationHandle(), nullptr);
+ EXPECT_DEATH_IF_SUPPORTED(off_heap_member[0] = tmp_obj, "");
+ }
+}
+
+TEST_F(MemberHeapDeathTest, CheckForOnStackMemberCrashesOnReassignment) {
+ Member<LinkedNode> stack_member;
+ // Verification state is constructed on first assignment.
+ stack_member =
+ MakeGarbageCollected<LinkedNode>(GetAllocationHandle(), nullptr);
+ {
+ auto tmp_heap = cppgc::Heap::Create(platform_);
+ auto* tmp_obj = MakeGarbageCollected<LinkedNode>(
+ tmp_heap->GetAllocationHandle(), nullptr);
+ EXPECT_DEATH_IF_SUPPORTED(stack_member = tmp_obj, "");
+ }
+}
+
+TEST_F(MemberHeapDeathTest, CheckForOnHeapMemberCrashesOnInitialAssignment) {
+ auto* obj = MakeGarbageCollected<LinkedNode>(GetAllocationHandle(), nullptr);
+ {
+ auto tmp_heap = cppgc::Heap::Create(platform_);
+ EXPECT_DEATH_IF_SUPPORTED(
+ // For regular on-heap Member references the verification state is
+ // constructed eagerly on creating the reference.
+ MakeGarbageCollected<LinkedNode>(tmp_heap->GetAllocationHandle(), obj),
+ "");
+ }
+}
+
+#endif // V8_ENABLE_CHECKS
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/minor-gc-unittest.cc b/deps/v8/test/unittests/heap/cppgc/minor-gc-unittest.cc
index eac88b498a..27d2cf7911 100644
--- a/deps/v8/test/unittests/heap/cppgc/minor-gc-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/minor-gc-unittest.cc
@@ -108,9 +108,9 @@ TYPED_TEST(MinorGCTestForType, StickyBits) {
Persistent<Type> p1 = MakeGarbageCollected<Type>(this->GetAllocationHandle());
TestFixture::CollectMinor();
- EXPECT_FALSE(HeapObjectHeader::FromPayload(p1.Get()).IsYoung());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(p1.Get()).IsYoung());
TestFixture::CollectMajor();
- EXPECT_FALSE(HeapObjectHeader::FromPayload(p1.Get()).IsYoung());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(p1.Get()).IsYoung());
EXPECT_EQ(0u, TestFixture::DestructedObjects());
}
@@ -120,14 +120,14 @@ TYPED_TEST(MinorGCTestForType, OldObjectIsNotVisited) {
Persistent<Type> p = MakeGarbageCollected<Type>(this->GetAllocationHandle());
TestFixture::CollectMinor();
EXPECT_EQ(0u, TestFixture::DestructedObjects());
- EXPECT_FALSE(HeapObjectHeader::FromPayload(p.Get()).IsYoung());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(p.Get()).IsYoung());
// Check that the old deleted object won't be visited during minor GC.
Type* raw = p.Release();
TestFixture::CollectMinor();
EXPECT_EQ(0u, TestFixture::DestructedObjects());
- EXPECT_FALSE(HeapObjectHeader::FromPayload(raw).IsYoung());
- EXPECT_FALSE(HeapObjectHeader::FromPayload(raw).IsFree());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(raw).IsYoung());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(raw).IsFree());
// Check that the old deleted object will be revisited in major GC.
TestFixture::CollectMajor();
@@ -139,7 +139,7 @@ void InterGenerationalPointerTest(MinorGCTest* test, cppgc::Heap* heap) {
Persistent<Type1> old =
MakeGarbageCollected<Type1>(heap->GetAllocationHandle());
test->CollectMinor();
- EXPECT_FALSE(HeapObjectHeader::FromPayload(old.Get()).IsYoung());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(old.Get()).IsYoung());
Type2* young = nullptr;
@@ -151,7 +151,7 @@ void InterGenerationalPointerTest(MinorGCTest* test, cppgc::Heap* heap) {
auto* ptr = MakeGarbageCollected<Type2>(heap->GetAllocationHandle());
ptr->next = young;
young = ptr;
- EXPECT_TRUE(HeapObjectHeader::FromPayload(young).IsYoung());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(young).IsYoung());
}
}
@@ -170,8 +170,8 @@ void InterGenerationalPointerTest(MinorGCTest* test, cppgc::Heap* heap) {
EXPECT_TRUE(set.empty());
for (size_t i = 0; i < 64; ++i) {
- EXPECT_FALSE(HeapObjectHeader::FromPayload(young).IsFree());
- EXPECT_FALSE(HeapObjectHeader::FromPayload(young).IsYoung());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(young).IsFree());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(young).IsYoung());
young = static_cast<Type2*>(young->next.Get());
}
@@ -217,7 +217,7 @@ TYPED_TEST(MinorGCTestForType, OmitGenerationalBarrierForSentinels) {
MakeGarbageCollected<Type>(this->GetAllocationHandle());
TestFixture::CollectMinor();
- EXPECT_FALSE(HeapObjectHeader::FromPayload(old.Get()).IsYoung());
+ EXPECT_FALSE(HeapObjectHeader::FromObject(old.Get()).IsYoung());
const auto& set = Heap::From(this->GetHeap())->remembered_slots();
const size_t set_size_before_barrier = set.size();
diff --git a/deps/v8/test/unittests/heap/cppgc/name-trait-unittest.cc b/deps/v8/test/unittests/heap/cppgc/name-trait-unittest.cc
index 57f100379d..7789fd43fa 100644
--- a/deps/v8/test/unittests/heap/cppgc/name-trait-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/name-trait-unittest.cc
@@ -23,7 +23,7 @@ struct OtherNoName : public GarbageCollected<OtherNoName> {
virtual void Trace(Visitor*) const {}
};
-class ClassWithName final : public GarbageCollected<OtherNoName>,
+class ClassWithName final : public GarbageCollected<ClassWithName>,
public NameProvider {
public:
explicit ClassWithName(const char* name) : name_(name) {}
@@ -98,7 +98,7 @@ class HeapObjectHeaderNameTest : public testing::TestWithHeap {};
TEST_F(HeapObjectHeaderNameTest, LookupNameThroughGCInfo) {
auto* no_name = MakeGarbageCollected<NoName>(GetAllocationHandle());
- auto no_name_tuple = HeapObjectHeader::FromPayload(no_name).GetName();
+ auto no_name_tuple = HeapObjectHeader::FromObject(no_name).GetName();
if (NameProvider::HideInternalNames()) {
EXPECT_STREQ(NameProvider::kHiddenName, no_name_tuple.value);
EXPECT_TRUE(no_name_tuple.name_was_hidden);
@@ -111,7 +111,7 @@ TEST_F(HeapObjectHeaderNameTest, LookupNameThroughGCInfo) {
auto* other_no_name =
MakeGarbageCollected<OtherNoName>(GetAllocationHandle());
auto other_no_name_tuple =
- HeapObjectHeader::FromPayload(other_no_name).GetName();
+ HeapObjectHeader::FromObject(other_no_name).GetName();
if (NameProvider::HideInternalNames()) {
EXPECT_STREQ(NameProvider::kHiddenName, no_name_tuple.value);
EXPECT_TRUE(no_name_tuple.name_was_hidden);
@@ -124,7 +124,7 @@ TEST_F(HeapObjectHeaderNameTest, LookupNameThroughGCInfo) {
auto* class_with_name =
MakeGarbageCollected<ClassWithName>(GetAllocationHandle(), "CustomName");
auto class_with_name_tuple =
- HeapObjectHeader::FromPayload(class_with_name).GetName();
+ HeapObjectHeader::FromObject(class_with_name).GetName();
EXPECT_STREQ("CustomName", class_with_name_tuple.value);
EXPECT_FALSE(class_with_name_tuple.name_was_hidden);
}
diff --git a/deps/v8/test/unittests/heap/cppgc/persistent-family-unittest.cc b/deps/v8/test/unittests/heap/cppgc/persistent-family-unittest.cc
index 1fff7e2c11..4d5bdb6a1d 100644
--- a/deps/v8/test/unittests/heap/cppgc/persistent-family-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/persistent-family-unittest.cc
@@ -12,6 +12,7 @@
#include "include/cppgc/persistent.h"
#include "include/cppgc/source-location.h"
#include "include/cppgc/type-traits.h"
+#include "src/base/logging.h"
#include "src/heap/cppgc/heap.h"
#include "src/heap/cppgc/liveness-broker.h"
#include "src/heap/cppgc/visitor.h"
@@ -73,12 +74,12 @@ template <typename T>
using LocalizedPersistent =
internal::BasicPersistent<T, internal::StrongPersistentPolicy,
internal::KeepLocationPolicy,
- internal::DefaultCheckingPolicy>;
+ internal::DefaultPersistentCheckingPolicy>;
template <typename T>
using LocalizedCrossThreadPersistent = internal::BasicCrossThreadPersistent<
T, internal::StrongCrossThreadPersistentPolicy,
- internal::KeepLocationPolicy, internal::DefaultCheckingPolicy>;
+ internal::KeepLocationPolicy, internal::DisabledCheckingPolicy>;
class RootVisitor final : public VisitorBase {
public:
@@ -108,7 +109,7 @@ class RootVisitor final : public VisitorBase {
std::vector<std::pair<WeakCallback, const void*>> weak_callbacks_;
};
-class PersistentTest : public testing::TestSupportingAllocationOnly {};
+class PersistentTest : public testing::TestWithHeap {};
} // namespace
@@ -339,13 +340,13 @@ void NullStateAssignment(cppgc::Heap* heap) {
PersistentType<GCed> p =
MakeGarbageCollected<GCed>(heap->GetAllocationHandle());
EXPECT_EQ(1u, GetRegion<PersistentType>(heap).NodesInUse());
- p = static_cast<GCed*>(0);
+ p = static_cast<GCed*>(nullptr);
EXPECT_EQ(nullptr, p.Get());
EXPECT_EQ(0u, GetRegion<PersistentType>(heap).NodesInUse());
}
}
-TEST_F(PersistentTest, NullStateAssignemnt) {
+TEST_F(PersistentTest, NullStateAssignment) {
auto* heap = GetHeap();
NullStateAssignment<Persistent>(heap);
NullStateAssignment<WeakPersistent>(heap);
@@ -683,6 +684,55 @@ TEST_F(PersistentTest, ExplicitDowncast) {
ExplicitDowncast<subtle::WeakCrossThreadPersistent>(heap);
}
+namespace {
+template <template <typename> class PersistentType1,
+ template <typename> class PersistentType2>
+void EqualityTest(cppgc::Heap* heap) {
+ {
+ GCed* gced = MakeGarbageCollected<GCed>(heap->GetAllocationHandle());
+ PersistentType1<GCed> persistent1 = gced;
+ PersistentType2<GCed> persistent2 = gced;
+ EXPECT_TRUE(persistent1 == persistent2);
+ EXPECT_FALSE(persistent1 != persistent2);
+ persistent2 = persistent1;
+ EXPECT_TRUE(persistent1 == persistent2);
+ EXPECT_FALSE(persistent1 != persistent2);
+ }
+ {
+ PersistentType1<GCed> persistent1 =
+ MakeGarbageCollected<GCed>(heap->GetAllocationHandle());
+ PersistentType2<GCed> persistent2 =
+ MakeGarbageCollected<GCed>(heap->GetAllocationHandle());
+ EXPECT_TRUE(persistent1 != persistent2);
+ EXPECT_FALSE(persistent1 == persistent2);
+ }
+}
+} // namespace
+
+TEST_F(PersistentTest, EqualityTest) {
+ cppgc::Heap* heap = GetHeap();
+ EqualityTest<Persistent, Persistent>(heap);
+ EqualityTest<Persistent, WeakPersistent>(heap);
+ EqualityTest<Persistent, subtle::CrossThreadPersistent>(heap);
+ EqualityTest<Persistent, subtle::WeakCrossThreadPersistent>(heap);
+ EqualityTest<WeakPersistent, Persistent>(heap);
+ EqualityTest<WeakPersistent, WeakPersistent>(heap);
+ EqualityTest<WeakPersistent, subtle::CrossThreadPersistent>(heap);
+ EqualityTest<WeakPersistent, subtle::WeakCrossThreadPersistent>(heap);
+ EqualityTest<subtle::CrossThreadPersistent, Persistent>(heap);
+ EqualityTest<subtle::CrossThreadPersistent, WeakPersistent>(heap);
+ EqualityTest<subtle::CrossThreadPersistent, subtle::CrossThreadPersistent>(
+ heap);
+ EqualityTest<subtle::CrossThreadPersistent,
+ subtle::WeakCrossThreadPersistent>(heap);
+ EqualityTest<subtle::WeakCrossThreadPersistent, Persistent>(heap);
+ EqualityTest<subtle::WeakCrossThreadPersistent, WeakPersistent>(heap);
+ EqualityTest<subtle::WeakCrossThreadPersistent,
+ subtle::CrossThreadPersistent>(heap);
+ EqualityTest<subtle::WeakCrossThreadPersistent,
+ subtle::WeakCrossThreadPersistent>(heap);
+}
+
TEST_F(PersistentTest, TraceStrong) {
auto* heap = GetHeap();
static constexpr size_t kItems = 512;
@@ -928,5 +978,69 @@ TEST_F(PersistentTest, Lock) {
auto strong = weak.Lock();
}
+namespace {
+
+class TraceCounter final : public GarbageCollected<TraceCounter> {
+ public:
+ void Trace(cppgc::Visitor* visitor) const {
+ trace_calls_++;
+ }
+
+ size_t trace_calls() const { return trace_calls_; }
+
+ private:
+ mutable size_t trace_calls_ = 0;
+};
+
+class DestructionCounter final : public GarbageCollected<DestructionCounter> {
+ public:
+ static size_t destructor_calls_;
+
+ ~DestructionCounter() { destructor_calls_++; }
+
+ void Trace(cppgc::Visitor*) const {}
+};
+size_t DestructionCounter::destructor_calls_;
+
+} // namespace
+
+TEST_F(PersistentTest, PersistentRetainsObject) {
+ Persistent<TraceCounter> trace_counter =
+ MakeGarbageCollected<TraceCounter>(GetAllocationHandle());
+ WeakPersistent<TraceCounter> weak_trace_counter(trace_counter.Get());
+ EXPECT_EQ(0u, trace_counter->trace_calls());
+ PreciseGC();
+ size_t saved_trace_count = trace_counter->trace_calls();
+ EXPECT_LT(0u, saved_trace_count);
+ PreciseGC();
+ EXPECT_LT(saved_trace_count, trace_counter->trace_calls());
+ EXPECT_TRUE(weak_trace_counter);
+}
+
+TEST_F(PersistentTest, WeakPersistentDoesNotRetainObject) {
+ WeakPersistent<TraceCounter> weak_trace_counter =
+ MakeGarbageCollected<TraceCounter>(GetAllocationHandle());
+ PreciseGC();
+ EXPECT_FALSE(weak_trace_counter);
+}
+
+TEST_F(PersistentTest, ObjectReclaimedAfterClearedPersistent) {
+ WeakPersistent<DestructionCounter> weak_finalized;
+ {
+ DestructionCounter::destructor_calls_ = 0;
+ Persistent<DestructionCounter> finalized =
+ MakeGarbageCollected<DestructionCounter>(GetAllocationHandle());
+ weak_finalized = finalized.Get();
+ EXPECT_EQ(0u, DestructionCounter::destructor_calls_);
+ PreciseGC();
+ EXPECT_EQ(0u, DestructionCounter::destructor_calls_);
+ USE(finalized);
+ EXPECT_TRUE(weak_finalized);
+ }
+ PreciseGC();
+ EXPECT_EQ(1u, DestructionCounter::destructor_calls_);
+ EXPECT_FALSE(weak_finalized);
+}
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/sanitizer-unittest.cc b/deps/v8/test/unittests/heap/cppgc/sanitizer-unittest.cc
new file mode 100644
index 0000000000..687904b825
--- /dev/null
+++ b/deps/v8/test/unittests/heap/cppgc/sanitizer-unittest.cc
@@ -0,0 +1,59 @@
+// Copyright 2021 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.
+
+#include "include/cppgc/allocation.h"
+#include "src/base/macros.h"
+#include "src/base/sanitizer/asan.h"
+#include "test/unittests/heap/cppgc/tests.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#if defined(LEAK_SANITIZER)
+#include <sanitizer/lsan_interface.h>
+#endif // LEAK_SANITIZER
+
+namespace cppgc {
+namespace internal {
+
+#if defined(LEAK_SANITIZER)
+
+using LsanTest = testing::TestWithHeap;
+
+class GCed final : public GarbageCollected<GCed> {
+ public:
+ void Trace(cppgc::Visitor*) const {}
+ std::unique_ptr<int> dummy{std::make_unique<int>(17)};
+};
+
+TEST_F(LsanTest, LeakDetectionDoesNotFindMemoryRetainedFromManaged) {
+ auto* o = MakeGarbageCollected<GCed>(GetAllocationHandle());
+ __lsan_do_leak_check();
+ USE(o);
+}
+
+#endif // LEAK_SANITIZER
+
+#ifdef V8_USE_ADDRESS_SANITIZER
+
+using AsanTest = testing::TestWithHeap;
+
+class ObjectPoisoningInDestructor final
+ : public GarbageCollected<ObjectPoisoningInDestructor> {
+ public:
+ ~ObjectPoisoningInDestructor() {
+ ASAN_POISON_MEMORY_REGION(this, sizeof(ObjectPoisoningInDestructor));
+ }
+ void Trace(cppgc::Visitor*) const {}
+
+ void* dummy{0};
+};
+
+TEST_F(AsanTest, ObjectPoisoningInDestructor) {
+ MakeGarbageCollected<ObjectPoisoningInDestructor>(GetAllocationHandle());
+ PreciseGC();
+}
+
+#endif // V8_USE_ADDRESS_SANITIZER
+
+} // namespace internal
+} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/stack-unittest.cc b/deps/v8/test/unittests/heap/cppgc/stack-unittest.cc
index 0fff908b36..040baa7a82 100644
--- a/deps/v8/test/unittests/heap/cppgc/stack-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/stack-unittest.cc
@@ -24,12 +24,9 @@ using heap::base::StackVisitor;
namespace {
class GCStackTest : public ::testing::Test {
- protected:
- void SetUp() override {
- stack_.reset(new Stack(v8::base::Stack::GetStackStart()));
- }
-
- void TearDown() override { stack_.reset(); }
+ public:
+ GCStackTest()
+ : stack_(std::make_unique<Stack>(v8::base::Stack::GetStackStart())) {}
Stack* GetStack() const { return stack_.get(); }
@@ -39,10 +36,12 @@ class GCStackTest : public ::testing::Test {
} // namespace
+#if !V8_OS_FUCHSIA
TEST_F(GCStackTest, IsOnStackForStackValue) {
void* dummy;
EXPECT_TRUE(GetStack()->IsOnStack(&dummy));
}
+#endif // !V8_OS_FUCHSIA
TEST_F(GCStackTest, IsOnStackForHeapValue) {
auto dummy = std::make_unique<int>();
@@ -109,7 +108,7 @@ namespace {
// Prevent inlining as that would allow the compiler to prove that the parameter
// must not actually be materialized.
//
-// Parameter positiosn are explicit to test various calling conventions.
+// Parameter positions are explicit to test various calling conventions.
V8_NOINLINE void* RecursivelyPassOnParameterImpl(void* p1, void* p2, void* p3,
void* p4, void* p5, void* p6,
void* p7, void* p8,
@@ -272,8 +271,32 @@ TEST_F(GCStackTest, IteratePointersFindsParameterNesting8) {
}
#endif // !_MSC_VER || __clang__
-// The following test uses inline assembly and has been checked to work on clang
-// to verify that the stack-scanning trampoline pushes callee-saved registers.
+namespace {
+// We manually call into this function from inline assembly. Therefore we need
+// to make sure that:
+// 1) there is no .plt indirection (i.e. visibility is hidden);
+// 2) stack is realigned in the function prologue.
+extern "C" V8_NOINLINE
+#if defined(__clang__)
+ __attribute__((used))
+#if !defined(V8_OS_WIN)
+ __attribute__((visibility("hidden")))
+#endif // !defined(V8_OS_WIN)
+#ifdef __has_attribute
+#if __has_attribute(force_align_arg_pointer)
+ __attribute__((force_align_arg_pointer))
+#endif // __has_attribute(force_align_arg_pointer)
+#endif // __has_attribute
+#endif // defined(__clang__)
+ void
+ IteratePointersNoMangling(Stack* stack, StackVisitor* visitor) {
+ stack->IteratePointers(visitor);
+}
+} // namespace
+
+// The following tests use inline assembly and have been checked to work on
+// clang to verify that the stack-scanning trampoline pushes callee-saved
+// registers.
//
// The test uses a macro loop as asm() can only be passed string literals.
#ifdef __clang__
@@ -322,27 +345,117 @@ TEST_F(GCStackTest, IteratePointersFindsCalleeSavedRegisters) {
auto* local_stack = GetStack();
auto* local_scanner = scanner.get();
+#define MOVE_TO_REG_AND_CALL_IMPL(needle_reg, arg1, arg2) \
+ asm volatile("mov %0, %%" needle_reg "\n mov %1, %%" arg1 \
+ "\n mov %2, %%" arg2 \
+ "\n call %P3" \
+ "\n mov $0, %%" needle_reg \
+ : \
+ : "r"(local_scanner->needle()), "r"(local_stack), \
+ "r"(local_scanner), "i"(IteratePointersNoMangling) \
+ : "memory", needle_reg, arg1, arg2, "cc");
+
+#ifdef V8_OS_WIN
+#define MOVE_TO_REG_AND_CALL(reg) MOVE_TO_REG_AND_CALL_IMPL(reg, "rcx", "rdx")
+#else // !V8_OS_WIN
+#define MOVE_TO_REG_AND_CALL(reg) MOVE_TO_REG_AND_CALL_IMPL(reg, "rdi", "rsi")
+#endif // V8_OS_WIN
+
// Moves |local_scanner->needle()| into a callee-saved register, leaving the
// callee-saved register as the only register referencing the needle.
// (Ignoring implementation-dependent dirty registers/stack.)
-#define KEEP_ALIVE_FROM_CALLEE_SAVED(reg) \
- local_scanner->Reset(); \
- /* This moves the temporary into the calee-saved register. */ \
- asm("mov %0, %%" reg : : "r"(local_scanner->needle()) : reg); \
- /* Register is unprotected from here till the actual invocation. */ \
- local_stack->IteratePointers(local_scanner); \
- EXPECT_TRUE(local_scanner->found()) \
- << "pointer in callee-saved register not found. register: " << reg \
- << std::endl; \
- /* Clear out the register again */ \
- asm("mov $0, %%" reg : : : reg);
+#define KEEP_ALIVE_FROM_CALLEE_SAVED(reg) \
+ local_scanner->Reset(); \
+ /* Wrap the inline assembly in a lambda to rely on the compiler for saving \
+ caller-saved registers. */ \
+ [local_stack, local_scanner]() V8_NOINLINE { MOVE_TO_REG_AND_CALL(reg) }(); \
+ EXPECT_TRUE(local_scanner->found()) \
+ << "pointer in callee-saved register not found. register: " << reg \
+ << std::endl;
FOR_ALL_CALLEE_SAVED_REGS(KEEP_ALIVE_FROM_CALLEE_SAVED)
+#undef MOVE_TO_REG_AND_CALL
+#undef MOVE_TO_REG_AND_CALL_IMPL
#undef KEEP_ALIVE_FROM_CALLEE_SAVED
#undef FOR_ALL_CALLEE_SAVED_REGS
}
#endif // FOR_ALL_CALLEE_SAVED_REGS
+#if defined(__clang__) && defined(V8_TARGET_ARCH_X64) && defined(V8_OS_WIN)
+
+#define FOR_ALL_XMM_CALLEE_SAVED_REGS(V) \
+ V("xmm6") \
+ V("xmm7") \
+ V("xmm8") \
+ V("xmm9") \
+ V("xmm10") \
+ V("xmm11") \
+ V("xmm12") \
+ V("xmm13") \
+ V("xmm14") \
+ V("xmm15")
+
+TEST_F(GCStackTest, IteratePointersFindsCalleeSavedXMMRegisters) {
+ auto scanner = std::make_unique<StackScanner>();
+
+ // No check that the needle is initially not found as on some platforms it
+ // may be part of temporaries after setting it up through StackScanner.
+
+// First, clear all callee-saved xmm registers.
+#define CLEAR_REGISTER(reg) asm("pxor %%" reg ", %%" reg : : : reg);
+
+ FOR_ALL_XMM_CALLEE_SAVED_REGS(CLEAR_REGISTER)
+#undef CLEAR_REGISTER
+
+ // Keep local raw pointers to keep instruction sequences small below.
+ auto* local_stack = GetStack();
+ auto* local_scanner = scanner.get();
+
+// Moves |local_scanner->needle()| into a callee-saved register, leaving the
+// callee-saved register as the only register referencing the needle.
+// (Ignoring implementation-dependent dirty registers/stack.)
+#define KEEP_ALIVE_FROM_CALLEE_SAVED(reg) \
+ local_scanner->Reset(); \
+ [local_stack, local_scanner]() V8_NOINLINE { MOVE_TO_REG_AND_CALL(reg) }(); \
+ EXPECT_TRUE(local_scanner->found()) \
+ << "pointer in callee-saved xmm register not found. register: " << reg \
+ << std::endl;
+
+ // First, test the pointer in the low quadword.
+#define MOVE_TO_REG_AND_CALL(reg) \
+ asm volatile("mov %0, %%rax \n movq %%rax, %%" reg \
+ "\n mov %1, %%rcx \n mov %2, %%rdx" \
+ "\n call %P3" \
+ "\n pxor %%" reg ", %%" reg \
+ : \
+ : "r"(local_scanner->needle()), "r"(local_stack), \
+ "r"(local_scanner), "i"(IteratePointersNoMangling) \
+ : "memory", "rax", reg, "rcx", "rdx", "cc");
+
+ FOR_ALL_XMM_CALLEE_SAVED_REGS(KEEP_ALIVE_FROM_CALLEE_SAVED)
+
+#undef MOVE_TO_REG_AND_CALL
+ // Then, test the pointer in the upper quadword.
+#define MOVE_TO_REG_AND_CALL(reg) \
+ asm volatile("mov %0, %%rax \n movq %%rax, %%" reg \
+ "\n pshufd $0b01001110, %%" reg ", %%" reg \
+ "\n mov %1, %%rcx \n mov %2, %%rdx" \
+ "\n call %P3" \
+ "\n pxor %%" reg ", %%" reg \
+ : \
+ : "r"(local_scanner->needle()), "r"(local_stack), \
+ "r"(local_scanner), "i"(IteratePointersNoMangling) \
+ : "memory", "rax", reg, "rcx", "rdx", "cc");
+
+ FOR_ALL_XMM_CALLEE_SAVED_REGS(KEEP_ALIVE_FROM_CALLEE_SAVED)
+#undef MOVE_TO_REG_AND_CALL
+#undef KEEP_ALIVE_FROM_CALLEE_SAVED
+#undef FOR_ALL_XMM_CALLEE_SAVED_REGS
+}
+
+#endif // defined(__clang__) && defined(V8_TARGET_ARCH_X64) &&
+ // defined(V8_OS_WIN)
+
#if V8_OS_LINUX && (V8_HOST_ARCH_IA32 || V8_HOST_ARCH_X64)
class CheckStackAlignmentVisitor final : public StackVisitor {
public:
diff --git a/deps/v8/test/unittests/heap/cppgc/sweeper-unittest.cc b/deps/v8/test/unittests/heap/cppgc/sweeper-unittest.cc
index 932ff9bb96..c7aaa2495b 100644
--- a/deps/v8/test/unittests/heap/cppgc/sweeper-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/sweeper-unittest.cc
@@ -58,7 +58,7 @@ class SweeperTest : public testing::TestWithHeap {
}
void MarkObject(void* payload) {
- HeapObjectHeader& header = HeapObjectHeader::FromPayload(payload);
+ HeapObjectHeader& header = HeapObjectHeader::FromObject(payload);
header.TryMarkAtomic();
}
@@ -196,10 +196,10 @@ TEST_F(SweeperTest, CoalesceFreeListEntries) {
MarkObject(object4);
Address object2_start =
- reinterpret_cast<Address>(&HeapObjectHeader::FromPayload(object2));
+ reinterpret_cast<Address>(&HeapObjectHeader::FromObject(object2));
Address object3_end =
- reinterpret_cast<Address>(&HeapObjectHeader::FromPayload(object3)) +
- HeapObjectHeader::FromPayload(object3).GetSize();
+ reinterpret_cast<Address>(&HeapObjectHeader::FromObject(object3)) +
+ HeapObjectHeader::FromObject(object3).AllocatedSize();
const BasePage* page = BasePage::FromPayload(object2);
const FreeList& freelist = NormalPageSpace::From(page->space())->free_list();
@@ -249,8 +249,8 @@ TEST_F(SweeperTest, UnmarkObjects) {
MakeGarbageCollected<GCed<kLargeObjectSizeThreshold * 2>>(
GetAllocationHandle());
- auto& normal_object_header = HeapObjectHeader::FromPayload(normal_object);
- auto& large_object_header = HeapObjectHeader::FromPayload(large_object);
+ auto& normal_object_header = HeapObjectHeader::FromObject(normal_object);
+ auto& large_object_header = HeapObjectHeader::FromObject(large_object);
normal_object_header.TryMarkAtomic();
large_object_header.TryMarkAtomic();
@@ -326,5 +326,52 @@ TEST_F(SweeperTest, LazySweepingDuringAllocation) {
EXPECT_NE(new_object1, new_object2);
}
+TEST_F(SweeperTest, LazySweepingNormalPages) {
+ using GCedObject = GCed<sizeof(size_t)>;
+ EXPECT_EQ(0u, g_destructor_callcount);
+ PreciseGC();
+ EXPECT_EQ(0u, g_destructor_callcount);
+ MakeGarbageCollected<GCedObject>(GetAllocationHandle());
+ static constexpr Heap::Config config = {
+ Heap::Config::CollectionType::kMajor,
+ Heap::Config::StackState::kNoHeapPointers,
+ Heap::Config::MarkingType::kAtomic,
+ Heap::Config::SweepingType::kIncrementalAndConcurrent};
+ Heap::From(GetHeap())->CollectGarbage(config);
+ EXPECT_EQ(0u, g_destructor_callcount);
+ MakeGarbageCollected<GCedObject>(GetAllocationHandle());
+ EXPECT_EQ(1u, g_destructor_callcount);
+ PreciseGC();
+ EXPECT_EQ(2u, g_destructor_callcount);
+}
+
+namespace {
+class AllocatingFinalizer : public GarbageCollected<AllocatingFinalizer> {
+ public:
+ static size_t destructor_callcount_;
+ explicit AllocatingFinalizer(AllocationHandle& allocation_handle)
+ : allocation_handle_(allocation_handle) {}
+ ~AllocatingFinalizer() {
+ MakeGarbageCollected<GCed<sizeof(size_t)>>(allocation_handle_);
+ ++destructor_callcount_;
+ }
+ void Trace(Visitor*) const {}
+
+ private:
+ AllocationHandle& allocation_handle_;
+};
+size_t AllocatingFinalizer::destructor_callcount_ = 0;
+} // namespace
+
+TEST_F(SweeperTest, AllocationDuringFinalizationIsNotSwept) {
+ AllocatingFinalizer::destructor_callcount_ = 0;
+ g_destructor_callcount = 0;
+ MakeGarbageCollected<AllocatingFinalizer>(GetAllocationHandle(),
+ GetAllocationHandle());
+ PreciseGC();
+ EXPECT_LT(0u, AllocatingFinalizer::destructor_callcount_);
+ EXPECT_EQ(0u, g_destructor_callcount);
+}
+
} // namespace internal
} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/tests.h b/deps/v8/test/unittests/heap/cppgc/tests.h
index d367e45dad..9b2db5d04a 100644
--- a/deps/v8/test/unittests/heap/cppgc/tests.h
+++ b/deps/v8/test/unittests/heap/cppgc/tests.h
@@ -76,12 +76,22 @@ class TestWithHeap : public TestWithPlatform {
"Testing", cppgc::Heap::StackState::kNoHeapPointers);
}
+ void ConservativeGC() {
+ heap_->ForceGarbageCollectionSlow(
+ ::testing::UnitTest::GetInstance()->current_test_info()->name(),
+ "Testing", cppgc::Heap::StackState::kMayContainHeapPointers);
+ }
+
cppgc::Heap* GetHeap() const { return heap_.get(); }
cppgc::AllocationHandle& GetAllocationHandle() const {
return allocation_handle_;
}
+ cppgc::HeapHandle& GetHeapHandle() const {
+ return GetHeap()->GetHeapHandle();
+ }
+
std::unique_ptr<MarkerBase>& GetMarkerRef() {
return Heap::From(GetHeap())->marker_;
}
diff --git a/deps/v8/test/unittests/heap/cppgc/visitor-unittest.cc b/deps/v8/test/unittests/heap/cppgc/visitor-unittest.cc
index b57eb8f050..9f716df314 100644
--- a/deps/v8/test/unittests/heap/cppgc/visitor-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/visitor-unittest.cc
@@ -29,10 +29,17 @@ class GCed : public GarbageCollected<GCed> {
virtual void Trace(cppgc::Visitor* visitor) const { trace_callcount++; }
};
-
size_t GCed::trace_callcount;
-class GCedMixin : public GarbageCollectedMixin {};
+class GCedMixin : public GarbageCollectedMixin {
+ public:
+ static size_t trace_callcount;
+
+ GCedMixin() { trace_callcount = 0; }
+
+ virtual void Trace(cppgc::Visitor* visitor) const { trace_callcount++; }
+};
+size_t GCedMixin::trace_callcount;
class OtherPayload {
public:
@@ -101,6 +108,33 @@ TEST_F(TraceTraitTest, TraceGCedMixinThroughTraceDescriptor) {
}
namespace {
+class MixinInstanceWithoutTrace
+ : public GarbageCollected<MixinInstanceWithoutTrace>,
+ public GCedMixin {};
+} // namespace
+
+TEST_F(TraceTraitTest, MixinInstanceWithoutTrace) {
+ // Verify that a mixin instance without any traceable
+ // references inherits the mixin's trace implementation.
+ auto* mixin_without_trace =
+ MakeGarbageCollected<MixinInstanceWithoutTrace>(GetAllocationHandle());
+ auto* mixin = static_cast<GCedMixin*>(mixin_without_trace);
+ EXPECT_EQ(0u, GCedMixin::trace_callcount);
+ TraceDescriptor mixin_without_trace_desc =
+ TraceTrait<MixinInstanceWithoutTrace>::GetTraceDescriptor(
+ mixin_without_trace);
+ TraceDescriptor mixin_desc = TraceTrait<GCedMixin>::GetTraceDescriptor(mixin);
+ EXPECT_EQ(mixin_without_trace_desc.callback, mixin_desc.callback);
+ EXPECT_EQ(mixin_without_trace_desc.base_object_payload,
+ mixin_desc.base_object_payload);
+ TraceDescriptor desc =
+ TraceTrait<MixinInstanceWithoutTrace>::GetTraceDescriptor(
+ mixin_without_trace);
+ desc.callback(nullptr, desc.base_object_payload);
+ EXPECT_EQ(1u, GCedMixin::trace_callcount);
+}
+
+namespace {
class DispatchingVisitor final : public VisitorBase {
public:
diff --git a/deps/v8/test/unittests/heap/cppgc/weak-container-unittest.cc b/deps/v8/test/unittests/heap/cppgc/weak-container-unittest.cc
index 0aee3287ef..4176a2d618 100644
--- a/deps/v8/test/unittests/heap/cppgc/weak-container-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/weak-container-unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "include/cppgc/allocation.h"
+#include "src/base/macros.h"
#include "src/heap/cppgc/marker.h"
#include "src/heap/cppgc/marking-visitor.h"
#include "src/heap/cppgc/stats-collector.h"
@@ -18,6 +19,8 @@ class WeakContainerTest : public testing::TestWithHeap {
using Config = Marker::MarkingConfig;
void StartMarking() {
+ CHECK_EQ(0u,
+ Heap::From(GetHeap())->AsBase().stats_collector()->marked_bytes());
Config config = {Config::CollectionType::kMajor,
Config::StackState::kNoHeapPointers,
Config::MarkingType::kIncremental};
@@ -27,11 +30,23 @@ class WeakContainerTest : public testing::TestWithHeap {
void FinishMarking(Config::StackState stack_state) {
GetMarkerRef()->FinishMarking(stack_state);
+ marked_bytes_ =
+ Heap::From(GetHeap())->AsBase().stats_collector()->marked_bytes();
GetMarkerRef().reset();
Heap::From(GetHeap())->stats_collector()->NotifySweepingCompleted();
}
+
+ size_t GetMarkedBytes() const { return marked_bytes_; }
+
+ private:
+ size_t marked_bytes_ = 0;
};
+template <typename T>
+constexpr size_t SizeOf() {
+ return RoundUp<kAllocationGranularity>(sizeof(T) + sizeof(HeapObjectHeader));
+}
+
class TraceableGCed : public GarbageCollected<TraceableGCed> {
public:
void Trace(cppgc::Visitor*) const { n_trace_calls++; }
@@ -83,6 +98,7 @@ TEST_F(WeakContainerTest, TraceableGCedTraced) {
GetMarkerRef()->Visitor().TraceWeakContainer(obj, EmptyWeakCallback, nullptr);
FinishMarking(Config::StackState::kNoHeapPointers);
EXPECT_NE(0u, TraceableGCed::n_trace_calls);
+ EXPECT_EQ(SizeOf<TraceableGCed>(), GetMarkedBytes());
access(obj);
}
@@ -94,6 +110,7 @@ TEST_F(WeakContainerTest, NonTraceableGCedNotTraced) {
GetMarkerRef()->Visitor().TraceWeakContainer(obj, EmptyWeakCallback, nullptr);
FinishMarking(Config::StackState::kNoHeapPointers);
EXPECT_EQ(0u, NonTraceableGCed::n_trace_calls);
+ EXPECT_EQ(SizeOf<NonTraceableGCed>(), GetMarkedBytes());
access(obj);
}
@@ -105,33 +122,32 @@ TEST_F(WeakContainerTest, NonTraceableGCedNotTracedConservatively) {
GetMarkerRef()->Visitor().TraceWeakContainer(obj, EmptyWeakCallback, nullptr);
FinishMarking(Config::StackState::kMayContainHeapPointers);
EXPECT_NE(0u, NonTraceableGCed::n_trace_calls);
+ EXPECT_EQ(SizeOf<NonTraceableGCed>(), GetMarkedBytes());
+ access(obj);
+}
+
+TEST_F(WeakContainerTest, PreciseGCTracesWeakContainerWhenTraced) {
+ TraceableGCed* obj =
+ MakeGarbageCollected<TraceableGCed>(GetAllocationHandle());
+ TraceableGCed::n_trace_calls = 0u;
+ StartMarking();
+ GetMarkerRef()->Visitor().TraceWeakContainer(obj, EmptyWeakCallback, nullptr);
+ FinishMarking(Config::StackState::kNoHeapPointers);
+ EXPECT_EQ(1u, TraceableGCed::n_trace_calls);
+ EXPECT_EQ(SizeOf<TraceableGCed>(), GetMarkedBytes());
access(obj);
}
TEST_F(WeakContainerTest, ConservativeGCTracesWeakContainer) {
- size_t trace_count_without_conservative;
- {
- TraceableGCed* obj =
- MakeGarbageCollected<TraceableGCed>(GetAllocationHandle());
- TraceableGCed::n_trace_calls = 0u;
- StartMarking();
- GetMarkerRef()->Visitor().TraceWeakContainer(obj, EmptyWeakCallback,
- nullptr);
- FinishMarking(Config::StackState::kNoHeapPointers);
- trace_count_without_conservative = TraceableGCed::n_trace_calls;
- access(obj);
- }
- {
- TraceableGCed* obj =
- MakeGarbageCollected<TraceableGCed>(GetAllocationHandle());
- TraceableGCed::n_trace_calls = 0u;
- StartMarking();
- GetMarkerRef()->Visitor().TraceWeakContainer(obj, EmptyWeakCallback,
- nullptr);
- FinishMarking(Config::StackState::kMayContainHeapPointers);
- EXPECT_LT(trace_count_without_conservative, TraceableGCed::n_trace_calls);
- access(obj);
- }
+ TraceableGCed* obj =
+ MakeGarbageCollected<TraceableGCed>(GetAllocationHandle());
+ TraceableGCed::n_trace_calls = 0u;
+ StartMarking();
+ GetMarkerRef()->Visitor().TraceWeakContainer(obj, EmptyWeakCallback, nullptr);
+ FinishMarking(Config::StackState::kMayContainHeapPointers);
+ EXPECT_EQ(2u, TraceableGCed::n_trace_calls);
+ EXPECT_EQ(SizeOf<TraceableGCed>(), GetMarkedBytes());
+ access(obj);
}
TEST_F(WeakContainerTest, ConservativeGCTracesWeakContainerOnce) {
@@ -146,6 +162,7 @@ TEST_F(WeakContainerTest, ConservativeGCTracesWeakContainerOnce) {
GetMarkerRef()->Visitor().TraceWeakContainer(obj, EmptyWeakCallback, nullptr);
FinishMarking(Config::StackState::kMayContainHeapPointers);
EXPECT_EQ(1u, NonTraceableGCed::n_trace_calls);
+ EXPECT_EQ(SizeOf<NonTraceableGCed>(), GetMarkedBytes());
access(obj);
}
@@ -174,6 +191,7 @@ TEST_F(WeakContainerTest, WeakContainerWeakCallbackCalled) {
obj);
FinishMarking(Config::StackState::kMayContainHeapPointers);
EXPECT_NE(0u, WeakCallback::n_callback_called);
+ EXPECT_EQ(SizeOf<TraceableGCed>(), GetMarkedBytes());
EXPECT_EQ(obj, WeakCallback::obj);
}
diff --git a/deps/v8/test/unittests/heap/cppgc/workloads-unittest.cc b/deps/v8/test/unittests/heap/cppgc/workloads-unittest.cc
new file mode 100644
index 0000000000..8ab82f6da8
--- /dev/null
+++ b/deps/v8/test/unittests/heap/cppgc/workloads-unittest.cc
@@ -0,0 +1,351 @@
+// Copyright 2020 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.
+
+#include <algorithm>
+#include <iterator>
+#include <numeric>
+
+#include "include/cppgc/allocation.h"
+#include "include/cppgc/heap-consistency.h"
+#include "include/cppgc/persistent.h"
+#include "include/cppgc/prefinalizer.h"
+#include "src/heap/cppgc/globals.h"
+#include "src/heap/cppgc/heap-visitor.h"
+#include "src/heap/cppgc/heap.h"
+#include "src/heap/cppgc/object-view.h"
+#include "test/unittests/heap/cppgc/tests.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace cppgc {
+namespace internal {
+
+namespace {
+
+class WorkloadsTest : public testing::TestWithHeap {
+ public:
+ void ConservativeGC() {
+ internal::Heap::From(GetHeap())->CollectGarbage(
+ Heap::Config::ConservativeAtomicConfig());
+ }
+ void PreciseGC() {
+ internal::Heap::From(GetHeap())->CollectGarbage(
+ Heap::Config::PreciseAtomicConfig());
+ }
+};
+
+class SuperClass;
+
+class PointsBack final : public GarbageCollected<PointsBack> {
+ public:
+ PointsBack() { ++alive_count_; }
+ ~PointsBack() { --alive_count_; }
+
+ void SetBackPointer(SuperClass* back_pointer) {
+ back_pointer_ = back_pointer;
+ }
+
+ SuperClass* BackPointer() const { return back_pointer_; }
+
+ void Trace(Visitor* visitor) const { visitor->Trace(back_pointer_); }
+
+ static int alive_count_;
+
+ private:
+ WeakMember<SuperClass> back_pointer_;
+};
+int PointsBack::alive_count_ = 0;
+
+class SuperClass : public GarbageCollected<SuperClass> {
+ public:
+ explicit SuperClass(PointsBack* points_back) : points_back_(points_back) {
+ points_back_->SetBackPointer(this);
+ ++alive_count_;
+ }
+ virtual ~SuperClass() { --alive_count_; }
+
+ void InvokeConservativeGCAndExpect(WorkloadsTest* test, SuperClass* target,
+ PointsBack* points_back,
+ int super_class_count) {
+ test->ConservativeGC();
+ EXPECT_EQ(points_back, target->GetPointsBack());
+ EXPECT_EQ(super_class_count, SuperClass::alive_count_);
+ }
+
+ virtual void Trace(Visitor* visitor) const { visitor->Trace(points_back_); }
+
+ PointsBack* GetPointsBack() const { return points_back_.Get(); }
+
+ static int alive_count_;
+
+ private:
+ Member<PointsBack> points_back_;
+};
+int SuperClass::alive_count_ = 0;
+
+class SubData final : public GarbageCollected<SubData> {
+ public:
+ SubData() { ++alive_count_; }
+ ~SubData() { --alive_count_; }
+
+ void Trace(Visitor* visitor) const {}
+
+ static int alive_count_;
+};
+int SubData::alive_count_ = 0;
+
+class SubClass final : public SuperClass {
+ public:
+ explicit SubClass(AllocationHandle& allocation_handle,
+ PointsBack* points_back)
+ : SuperClass(points_back),
+ data_(MakeGarbageCollected<SubData>(allocation_handle)) {
+ ++alive_count_;
+ }
+ ~SubClass() final { --alive_count_; }
+
+ void Trace(Visitor* visitor) const final {
+ visitor->Trace(data_);
+ SuperClass::Trace(visitor);
+ }
+
+ static int alive_count_;
+
+ private:
+ Member<SubData> data_;
+};
+int SubClass::alive_count_ = 0;
+
+} // namespace
+
+TEST_F(WorkloadsTest, Transition) {
+ PointsBack::alive_count_ = 0;
+ SuperClass::alive_count_ = 0;
+ SubClass::alive_count_ = 0;
+ SubData::alive_count_ = 0;
+
+ Persistent<PointsBack> points_back1 =
+ MakeGarbageCollected<PointsBack>(GetAllocationHandle());
+ Persistent<PointsBack> points_back2 =
+ MakeGarbageCollected<PointsBack>(GetAllocationHandle());
+ Persistent<SuperClass> super_class =
+ MakeGarbageCollected<SuperClass>(GetAllocationHandle(), points_back1);
+ Persistent<SubClass> sub_class = MakeGarbageCollected<SubClass>(
+ GetAllocationHandle(), GetAllocationHandle(), points_back2);
+ EXPECT_EQ(2, PointsBack::alive_count_);
+ EXPECT_EQ(2, SuperClass::alive_count_);
+ EXPECT_EQ(1, SubClass::alive_count_);
+ EXPECT_EQ(1, SubData::alive_count_);
+
+ PreciseGC();
+ EXPECT_EQ(2, PointsBack::alive_count_);
+ EXPECT_EQ(2, SuperClass::alive_count_);
+ EXPECT_EQ(1, SubClass::alive_count_);
+ EXPECT_EQ(1, SubData::alive_count_);
+
+ super_class->InvokeConservativeGCAndExpect(this, super_class.Release(),
+ points_back1.Get(), 2);
+ PreciseGC();
+ EXPECT_EQ(2, PointsBack::alive_count_);
+ EXPECT_EQ(1, SuperClass::alive_count_);
+ EXPECT_EQ(1, SubClass::alive_count_);
+ EXPECT_EQ(1, SubData::alive_count_);
+ EXPECT_EQ(nullptr, points_back1->BackPointer());
+
+ points_back1.Release();
+ PreciseGC();
+ EXPECT_EQ(1, PointsBack::alive_count_);
+ EXPECT_EQ(1, SuperClass::alive_count_);
+ EXPECT_EQ(1, SubClass::alive_count_);
+ EXPECT_EQ(1, SubData::alive_count_);
+
+ sub_class->InvokeConservativeGCAndExpect(this, sub_class.Release(),
+ points_back2.Get(), 1);
+ PreciseGC();
+ EXPECT_EQ(1, PointsBack::alive_count_);
+ EXPECT_EQ(0, SuperClass::alive_count_);
+ EXPECT_EQ(0, SubClass::alive_count_);
+ EXPECT_EQ(0, SubData::alive_count_);
+ EXPECT_EQ(nullptr, points_back2->BackPointer());
+
+ points_back2.Release();
+ PreciseGC();
+ EXPECT_EQ(0, PointsBack::alive_count_);
+ EXPECT_EQ(0, SuperClass::alive_count_);
+ EXPECT_EQ(0, SubClass::alive_count_);
+ EXPECT_EQ(0, SubData::alive_count_);
+
+ EXPECT_EQ(super_class, sub_class);
+}
+
+namespace {
+
+class DynamicallySizedObject final
+ : public GarbageCollected<DynamicallySizedObject> {
+ public:
+ static DynamicallySizedObject* Create(AllocationHandle& allocation_handle,
+ size_t size) {
+ CHECK_GT(size, sizeof(DynamicallySizedObject));
+ return MakeGarbageCollected<DynamicallySizedObject>(
+ allocation_handle,
+ AdditionalBytes(size - sizeof(DynamicallySizedObject)));
+ }
+
+ uint8_t Get(int i) { return *(reinterpret_cast<uint8_t*>(this) + i); }
+
+ void Trace(Visitor* visitor) const {}
+};
+
+class ObjectSizeCounter final : private HeapVisitor<ObjectSizeCounter> {
+ friend class HeapVisitor<ObjectSizeCounter>;
+
+ public:
+ size_t GetSize(RawHeap* heap) {
+ Traverse(heap);
+ return accumulated_size_;
+ }
+
+ private:
+ static size_t ObjectSize(const HeapObjectHeader* header) {
+ return ObjectView(*header).Size();
+ }
+
+ bool VisitHeapObjectHeader(HeapObjectHeader* header) {
+ if (header->IsFree()) return true;
+ accumulated_size_ += ObjectSize(header);
+ return true;
+ }
+
+ size_t accumulated_size_ = 0;
+};
+
+} // namespace
+
+TEST_F(WorkloadsTest, BasicFunctionality) {
+ static_assert(kAllocationGranularity % 4 == 0,
+ "Allocation granularity is expected to be a multiple of 4");
+ Heap* heap = internal::Heap::From(GetHeap());
+ size_t initial_object_payload_size =
+ ObjectSizeCounter().GetSize(&heap->raw_heap());
+ {
+ // When the test starts there may already have been leaked some memory
+ // on the heap, so we establish a base line.
+ size_t base_level = initial_object_payload_size;
+ bool test_pages_allocated = !base_level;
+ if (test_pages_allocated) {
+ EXPECT_EQ(0ul, heap->stats_collector()->allocated_memory_size());
+ }
+
+ // This allocates objects on the general heap which should add a page of
+ // memory.
+ DynamicallySizedObject* alloc32 =
+ DynamicallySizedObject::Create(GetAllocationHandle(), 32);
+ memset(alloc32, 40, 32);
+ DynamicallySizedObject* alloc64 =
+ DynamicallySizedObject::Create(GetAllocationHandle(), 64);
+ memset(alloc64, 27, 64);
+
+ size_t total = 96;
+
+ EXPECT_EQ(base_level + total,
+ ObjectSizeCounter().GetSize(&heap->raw_heap()));
+ if (test_pages_allocated) {
+ EXPECT_EQ(kPageSize * 2,
+ heap->stats_collector()->allocated_memory_size());
+ }
+
+ EXPECT_EQ(alloc32->Get(0), 40);
+ EXPECT_EQ(alloc32->Get(31), 40);
+ EXPECT_EQ(alloc64->Get(0), 27);
+ EXPECT_EQ(alloc64->Get(63), 27);
+
+ ConservativeGC();
+
+ EXPECT_EQ(alloc32->Get(0), 40);
+ EXPECT_EQ(alloc32->Get(31), 40);
+ EXPECT_EQ(alloc64->Get(0), 27);
+ EXPECT_EQ(alloc64->Get(63), 27);
+ }
+
+ PreciseGC();
+ size_t total = 0;
+ size_t base_level = ObjectSizeCounter().GetSize(&heap->raw_heap());
+ bool test_pages_allocated = !base_level;
+ if (test_pages_allocated) {
+ EXPECT_EQ(0ul, heap->stats_collector()->allocated_memory_size());
+ }
+
+ size_t big = 1008;
+ Persistent<DynamicallySizedObject> big_area =
+ DynamicallySizedObject::Create(GetAllocationHandle(), big);
+ total += big;
+
+ size_t persistent_count = 0;
+ const size_t kNumPersistents = 100000;
+ Persistent<DynamicallySizedObject>* persistents[kNumPersistents];
+
+ for (int i = 0; i < 1000; i++) {
+ size_t size = 128 + i * 8;
+ total += size;
+ persistents[persistent_count++] = new Persistent<DynamicallySizedObject>(
+ DynamicallySizedObject::Create(GetAllocationHandle(), size));
+ // The allocations in the loop may trigger GC with lazy sweeping.
+ heap->sweeper().FinishIfRunning();
+ EXPECT_EQ(base_level + total,
+ ObjectSizeCounter().GetSize(&heap->raw_heap()));
+ if (test_pages_allocated) {
+ EXPECT_EQ(0ul, heap->stats_collector()->allocated_memory_size() &
+ (kPageSize - 1));
+ }
+ }
+
+ {
+ DynamicallySizedObject* alloc32b(
+ DynamicallySizedObject::Create(GetAllocationHandle(), 32));
+ memset(alloc32b, 40, 32);
+ DynamicallySizedObject* alloc64b(
+ DynamicallySizedObject::Create(GetAllocationHandle(), 64));
+ memset(alloc64b, 27, 64);
+ EXPECT_TRUE(alloc32b != alloc64b);
+
+ total += 96;
+ EXPECT_EQ(base_level + total,
+ ObjectSizeCounter().GetSize(&heap->raw_heap()));
+ if (test_pages_allocated) {
+ EXPECT_EQ(0ul, heap->stats_collector()->allocated_memory_size() &
+ (kPageSize - 1));
+ }
+ }
+
+ PreciseGC();
+ total -= 96;
+ if (test_pages_allocated) {
+ EXPECT_EQ(0ul, heap->stats_collector()->allocated_memory_size() &
+ (kPageSize - 1));
+ }
+
+ // Clear the persistent, so that the big area will be garbage collected.
+ big_area.Release();
+ PreciseGC();
+
+ total -= big;
+ EXPECT_EQ(base_level + total, ObjectSizeCounter().GetSize(&heap->raw_heap()));
+ if (test_pages_allocated) {
+ EXPECT_EQ(0ul, heap->stats_collector()->allocated_memory_size() &
+ (kPageSize - 1));
+ }
+
+ EXPECT_EQ(base_level + total, ObjectSizeCounter().GetSize(&heap->raw_heap()));
+ if (test_pages_allocated) {
+ EXPECT_EQ(0ul, heap->stats_collector()->allocated_memory_size() &
+ (kPageSize - 1));
+ }
+
+ for (size_t i = 0; i < persistent_count; i++) {
+ delete persistents[i];
+ persistents[i] = nullptr;
+ }
+}
+
+} // namespace internal
+} // namespace cppgc
diff --git a/deps/v8/test/unittests/heap/cppgc/write-barrier-unittest.cc b/deps/v8/test/unittests/heap/cppgc/write-barrier-unittest.cc
index ba340743ea..605029dee3 100644
--- a/deps/v8/test/unittests/heap/cppgc/write-barrier-unittest.cc
+++ b/deps/v8/test/unittests/heap/cppgc/write-barrier-unittest.cc
@@ -54,7 +54,7 @@ class V8_NODISCARD ExpectWriteBarrierFires final
EXPECT_TRUE(marking_worklist_.IsGlobalEmpty());
EXPECT_TRUE(write_barrier_worklist_.IsGlobalEmpty());
for (void* object : objects) {
- headers_.push_back(&HeapObjectHeader::FromPayload(object));
+ headers_.push_back(&HeapObjectHeader::FromObject(object));
EXPECT_FALSE(headers_.back()->IsMarked());
}
}
@@ -71,7 +71,8 @@ class V8_NODISCARD ExpectWriteBarrierFires final
{
HeapObjectHeader* item;
while (write_barrier_worklist_.Pop(&item)) {
- auto pos = std::find(objects_.begin(), objects_.end(), item->Payload());
+ auto pos =
+ std::find(objects_.begin(), objects_.end(), item->ObjectStart());
if (pos != objects_.end()) objects_.erase(pos);
}
}
@@ -104,7 +105,7 @@ class V8_NODISCARD ExpectNoWriteBarrierFires final
EXPECT_TRUE(marking_worklist_.IsGlobalEmpty());
EXPECT_TRUE(write_barrier_worklist_.IsGlobalEmpty());
for (void* object : objects) {
- auto* header = &HeapObjectHeader::FromPayload(object);
+ auto* header = &HeapObjectHeader::FromObject(object);
headers_.emplace_back(header, header->IsMarked());
}
}
@@ -131,7 +132,7 @@ class GCed : public GarbageCollected<GCed> {
void Trace(cppgc::Visitor* v) const { v->Trace(next_); }
bool IsMarked() const {
- return HeapObjectHeader::FromPayload(this).IsMarked();
+ return HeapObjectHeader::FromObject(this).IsMarked();
}
void set_next(GCed* next) { next_ = next; }
@@ -201,7 +202,7 @@ TEST_F(NoWriteBarrierTest, BailoutWhenMarkingIsOff) {
TEST_F(WriteBarrierTest, BailoutIfMarked) {
auto* object1 = MakeGarbageCollected<GCed>(GetAllocationHandle());
auto* object2 = MakeGarbageCollected<GCed>(GetAllocationHandle());
- EXPECT_TRUE(HeapObjectHeader::FromPayload(object1).TryMarkAtomic());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(object1).TryMarkAtomic());
{
ExpectNoWriteBarrierFires scope(marker(), {object1});
object2->set_next(object1);
@@ -213,7 +214,7 @@ TEST_F(WriteBarrierTest, MemberInitializingStoreNoBarrier) {
{
ExpectNoWriteBarrierFires scope(marker(), {object1});
auto* object2 = MakeGarbageCollected<GCed>(GetAllocationHandle(), object1);
- HeapObjectHeader& object2_header = HeapObjectHeader::FromPayload(object2);
+ HeapObjectHeader& object2_header = HeapObjectHeader::FromObject(object2);
EXPECT_FALSE(object2_header.IsMarked());
}
}
@@ -313,7 +314,7 @@ TEST_F(WriteBarrierTest, NoWriteBarrierOnMarkedMixinApplication) {
ParentWithMixinPointer* parent =
MakeGarbageCollected<ParentWithMixinPointer>(GetAllocationHandle());
auto* child = MakeGarbageCollected<Child>(GetAllocationHandle());
- EXPECT_TRUE(HeapObjectHeader::FromPayload(child).TryMarkAtomic());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(child).TryMarkAtomic());
Mixin* mixin = static_cast<Mixin*>(child);
EXPECT_NE(static_cast<void*>(child), static_cast<void*>(mixin));
{
@@ -367,7 +368,7 @@ TEST_F(WriteBarrierTest, DijkstraWriteBarrierTriggersWhenMarkingIsOn) {
TEST_F(WriteBarrierTest, DijkstraWriteBarrierBailoutIfMarked) {
auto* object1 = MakeGarbageCollected<GCed>(GetAllocationHandle());
auto* object2 = MakeGarbageCollected<GCed>(GetAllocationHandle(), object1);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(object1).TryMarkAtomic());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(object1).TryMarkAtomic());
{
ExpectNoWriteBarrierFires scope(marker(), {object1});
WriteBarrierParams params;
@@ -387,7 +388,7 @@ struct InlinedObject {
Member<GCed> ref;
};
-class GCedWithInlinedArray : public GarbageCollected<GCed> {
+class GCedWithInlinedArray : public GarbageCollected<GCedWithInlinedArray> {
public:
static constexpr size_t kNumReferences = 4;
@@ -430,7 +431,7 @@ TEST_F(WriteBarrierTest, DijkstraWriteBarrierRangeBailoutIfMarked) {
auto* object1 = MakeGarbageCollected<GCed>(GetAllocationHandle());
auto* object2 = MakeGarbageCollected<GCedWithInlinedArray>(
GetAllocationHandle(), object1);
- EXPECT_TRUE(HeapObjectHeader::FromPayload(object1).TryMarkAtomic());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(object1).TryMarkAtomic());
{
ExpectNoWriteBarrierFires scope(marker(), {object1});
WriteBarrierParams params;
@@ -450,7 +451,7 @@ TEST_F(WriteBarrierTest, SteeleWriteBarrierTriggersWhenMarkingIsOn) {
auto* object2 = MakeGarbageCollected<GCed>(GetAllocationHandle(), object1);
{
ExpectWriteBarrierFires scope(marker(), {object1});
- EXPECT_TRUE(HeapObjectHeader::FromPayload(object1).TryMarkAtomic());
+ EXPECT_TRUE(HeapObjectHeader::FromObject(object1).TryMarkAtomic());
WriteBarrierParams params;
EXPECT_EQ(WriteBarrierType::kMarking,
HeapConsistency::GetWriteBarrierType(
diff --git a/deps/v8/test/unittests/heap/heap-unittest.cc b/deps/v8/test/unittests/heap/heap-unittest.cc
index 2446e14682..9247109930 100644
--- a/deps/v8/test/unittests/heap/heap-unittest.cc
+++ b/deps/v8/test/unittests/heap/heap-unittest.cc
@@ -145,11 +145,16 @@ TEST_F(HeapTest, HeapLayout) {
"}"
"ar.push(Array(32 * 1024 * 1024));");
+ Address cage_base = i_isolate()->cage_base();
+ EXPECT_TRUE(IsAligned(cage_base, size_t{4} * GB));
+
+#ifdef V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE
Address isolate_root = i_isolate()->isolate_root();
- EXPECT_TRUE(IsAligned(isolate_root, size_t{4} * GB));
+ EXPECT_EQ(cage_base, isolate_root);
+#endif
// Check that all memory chunks belong this region.
- base::AddressRegion heap_reservation(isolate_root, size_t{4} * GB);
+ base::AddressRegion heap_reservation(cage_base, size_t{4} * GB);
SafepointScope scope(i_isolate()->heap());
OldGenerationMemoryChunkIterator iter(i_isolate()->heap());
diff --git a/deps/v8/test/unittests/heap/unified-heap-snapshot-unittest.cc b/deps/v8/test/unittests/heap/unified-heap-snapshot-unittest.cc
index f58569eb10..88b81eb17e 100644
--- a/deps/v8/test/unittests/heap/unified-heap-snapshot-unittest.cc
+++ b/deps/v8/test/unittests/heap/unified-heap-snapshot-unittest.cc
@@ -139,11 +139,8 @@ TEST_F(UnifiedHeapSnapshotTest, RetainedByCppRoot) {
cppgc::MakeGarbageCollected<GCed>(allocation_handle());
const v8::HeapSnapshot* snapshot = TakeHeapSnapshot();
EXPECT_TRUE(IsValidSnapshot(snapshot));
- EXPECT_TRUE(
- ContainsRetainingPath(*snapshot, {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<GCed>() // NOLINT
- }));
+ EXPECT_TRUE(ContainsRetainingPath(
+ *snapshot, {kExpectedCppRootsName, GetExpectedName<GCed>()}));
}
TEST_F(UnifiedHeapSnapshotTest, RetainedByCppCrossThreadRoot) {
@@ -152,10 +149,7 @@ TEST_F(UnifiedHeapSnapshotTest, RetainedByCppCrossThreadRoot) {
const v8::HeapSnapshot* snapshot = TakeHeapSnapshot();
EXPECT_TRUE(IsValidSnapshot(snapshot));
EXPECT_TRUE(ContainsRetainingPath(
- *snapshot, {
- kExpectedCppCrossThreadRootsName, // NOLINT
- GetExpectedName<GCed>() // NOLINT
- }));
+ *snapshot, {kExpectedCppCrossThreadRootsName, GetExpectedName<GCed>()}));
}
TEST_F(UnifiedHeapSnapshotTest, RetainingUnnamedType) {
@@ -168,10 +162,8 @@ TEST_F(UnifiedHeapSnapshotTest, RetainingUnnamedType) {
*snapshot, {kExpectedCppRootsName, cppgc::NameProvider::kHiddenName}));
} else {
EXPECT_TRUE(ContainsRetainingPath(
- *snapshot, {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<BaseWithoutName>() // NOLINT
- }));
+ *snapshot,
+ {kExpectedCppRootsName, GetExpectedName<BaseWithoutName>()}));
}
}
@@ -183,11 +175,8 @@ TEST_F(UnifiedHeapSnapshotTest, RetainingNamedThroughUnnamed) {
const v8::HeapSnapshot* snapshot = TakeHeapSnapshot();
EXPECT_TRUE(IsValidSnapshot(snapshot));
EXPECT_TRUE(ContainsRetainingPath(
- *snapshot, {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<BaseWithoutName>(), // NOLINT
- GetExpectedName<GCed>() // NOLINT
- }));
+ *snapshot, {kExpectedCppRootsName, GetExpectedName<BaseWithoutName>(),
+ GetExpectedName<GCed>()}));
}
TEST_F(UnifiedHeapSnapshotTest, PendingCallStack) {
@@ -212,14 +201,10 @@ TEST_F(UnifiedHeapSnapshotTest, PendingCallStack) {
cppgc::Persistent<BaseWithoutName> holder(second);
const v8::HeapSnapshot* snapshot = TakeHeapSnapshot();
EXPECT_TRUE(IsValidSnapshot(snapshot));
- EXPECT_TRUE(
- ContainsRetainingPath(*snapshot,
- {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<BaseWithoutName>(), // NOLINT
- GetExpectedName<BaseWithoutName>(), // NOLINT
- GetExpectedName<GCed>() // NOLINT
- }));
+ EXPECT_TRUE(ContainsRetainingPath(
+ *snapshot,
+ {kExpectedCppRootsName, GetExpectedName<BaseWithoutName>(),
+ GetExpectedName<BaseWithoutName>(), GetExpectedName<GCed>()}));
}
TEST_F(UnifiedHeapSnapshotTest, ReferenceToFinishedSCC) {
@@ -250,15 +235,11 @@ TEST_F(UnifiedHeapSnapshotTest, ReferenceToFinishedSCC) {
cppgc::Persistent<BaseWithoutName> holder(first);
const v8::HeapSnapshot* snapshot = TakeHeapSnapshot();
EXPECT_TRUE(IsValidSnapshot(snapshot));
- EXPECT_TRUE(
- ContainsRetainingPath(*snapshot,
- {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<BaseWithoutName>(), // NOLINT
- GetExpectedName<BaseWithoutName>(), // NOLINT
- GetExpectedName<BaseWithoutName>(), // NOLINT
- GetExpectedName<GCed>() // NOLINT
- }));
+ EXPECT_TRUE(ContainsRetainingPath(
+ *snapshot,
+ {kExpectedCppRootsName, GetExpectedName<BaseWithoutName>(),
+ GetExpectedName<BaseWithoutName>(), GetExpectedName<BaseWithoutName>(),
+ GetExpectedName<GCed>()}));
}
namespace {
@@ -344,13 +325,9 @@ TEST_F(UnifiedHeapSnapshotTest, JSReferenceForcesVisibleObject) {
testing_scope, allocation_handle(), "LeafJSObject");
const v8::HeapSnapshot* snapshot = TakeHeapSnapshot();
EXPECT_TRUE(IsValidSnapshot(snapshot));
- EXPECT_TRUE(
- ContainsRetainingPath(*snapshot,
- {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<GCedWithJSRef>(), // NOLINT
- "LeafJSObject" // NOLINT
- }));
+ EXPECT_TRUE(ContainsRetainingPath(
+ *snapshot, {kExpectedCppRootsName, GetExpectedName<GCedWithJSRef>(),
+ "LeafJSObject"}));
}
TEST_F(UnifiedHeapSnapshotTest, MergedWrapperNode) {
@@ -378,12 +355,9 @@ TEST_F(UnifiedHeapSnapshotTest, MergedWrapperNode) {
EXPECT_TRUE(IsValidSnapshot(snapshot));
EXPECT_TRUE(ContainsRetainingPath(
*snapshot,
- {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<GCedWithJSRef>(), // NOLINT
- // GCedWithJSRef is merged into MergedObject, replacing its name.
- "NextObject" // NOLINT
- }));
+ {kExpectedCppRootsName, GetExpectedName<GCedWithJSRef>(),
+ // GCedWithJSRef is merged into MergedObject, replacing its name.
+ "NextObject"}));
const size_t js_size = Utils::OpenHandle(*wrapper_object)->Size();
#if CPPGC_SUPPORTS_OBJECT_NAMES
const size_t cpp_size =
@@ -447,11 +421,10 @@ TEST_F(UnifiedHeapSnapshotTest, NoTriggerForClassIdZero) {
EXPECT_EQ(0u, DetachednessHandler::callback_count);
EXPECT_TRUE(IsValidSnapshot(snapshot));
EXPECT_TRUE(
- ContainsRetainingPath(*snapshot,
- {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<GCedWithJSRef>(), // NOLINT
- }));
+ ContainsRetainingPath(*snapshot, {
+ kExpectedCppRootsName,
+ GetExpectedName<GCedWithJSRef>(),
+ }));
ForEachEntryWithName(
snapshot, GetExpectedName<GCedWithJSRef>(), [](const HeapEntry& entry) {
EXPECT_EQ(kExpectedDetachedValueForUnknown, entry.detachedness());
@@ -473,11 +446,10 @@ TEST_F(UnifiedHeapSnapshotTest, TriggerDetachednessCallbackSettingAttached) {
EXPECT_EQ(1u, DetachednessHandler::callback_count);
EXPECT_TRUE(IsValidSnapshot(snapshot));
EXPECT_TRUE(
- ContainsRetainingPath(*snapshot,
- {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<GCedWithJSRef>(), // NOLINT
- }));
+ ContainsRetainingPath(*snapshot, {
+ kExpectedCppRootsName,
+ GetExpectedName<GCedWithJSRef>(),
+ }));
ForEachEntryWithName(
snapshot, GetExpectedName<GCedWithJSRef>(), [](const HeapEntry& entry) {
EXPECT_EQ(kExpectedDetachedValueForAttached, entry.detachedness());
@@ -499,11 +471,10 @@ TEST_F(UnifiedHeapSnapshotTest, TriggerDetachednessCallbackSettingDetached) {
EXPECT_EQ(1u, DetachednessHandler::callback_count);
EXPECT_TRUE(IsValidSnapshot(snapshot));
EXPECT_TRUE(
- ContainsRetainingPath(*snapshot,
- {
- kExpectedCppRootsName, // NOLINT
- GetExpectedName<GCedWithJSRef>(), // NOLINT
- }));
+ ContainsRetainingPath(*snapshot, {
+ kExpectedCppRootsName,
+ GetExpectedName<GCedWithJSRef>(),
+ }));
ForEachEntryWithName(
snapshot, GetExpectedName<GCedWithJSRef>(), [](const HeapEntry& entry) {
EXPECT_EQ(kExpectedDetachedValueForDetached, entry.detachedness());
diff --git a/deps/v8/test/unittests/heap/unified-heap-unittest.cc b/deps/v8/test/unittests/heap/unified-heap-unittest.cc
index 404cf2e1a0..82f81cf178 100644
--- a/deps/v8/test/unittests/heap/unified-heap-unittest.cc
+++ b/deps/v8/test/unittests/heap/unified-heap-unittest.cc
@@ -2,15 +2,20 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "include/cppgc/allocation.h"
#include "include/cppgc/garbage-collected.h"
#include "include/cppgc/persistent.h"
#include "include/cppgc/platform.h"
#include "include/cppgc/testing.h"
+#include "include/libplatform/libplatform.h"
#include "include/v8-cppgc.h"
#include "include/v8.h"
#include "src/api/api-inl.h"
+#include "src/base/platform/time.h"
#include "src/heap/cppgc-js/cpp-heap.h"
+#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/sweeper.h"
#include "src/objects/objects-inl.h"
#include "test/unittests/heap/heap-utils.h"
@@ -66,6 +71,7 @@ TEST_F(UnifiedHeapTest, FindingV8ToBlinkReference) {
}
TEST_F(UnifiedHeapTest, WriteBarrierV8ToCppReference) {
+ if (!FLAG_incremental_marking) return;
v8::HandleScope scope(v8_isolate());
v8::Local<v8::Context> context = v8::Context::New(v8_isolate());
v8::Context::Scope context_scope(context);
@@ -92,6 +98,7 @@ TEST_F(UnifiedHeapTest, WriteBarrierV8ToCppReference) {
}
TEST_F(UnifiedHeapTest, WriteBarrierCppToV8Reference) {
+ if (!FLAG_incremental_marking) return;
v8::HandleScope scope(v8_isolate());
v8::Local<v8::Context> context = v8::Context::New(v8_isolate());
v8::Context::Scope context_scope(context);
@@ -189,3 +196,140 @@ TEST_F(UnifiedHeapDetachedTest, StandaloneTestingHeap) {
} // namespace internal
} // namespace v8
+
+namespace cppgc {
+
+class CustomSpaceForTest : public CustomSpace<CustomSpaceForTest> {
+ public:
+ static constexpr size_t kSpaceIndex = 0;
+};
+
+constexpr size_t CustomSpaceForTest::kSpaceIndex;
+
+} // namespace cppgc
+
+namespace v8 {
+namespace internal {
+
+namespace {
+
+class StatisticsReceiver final : public CustomSpaceStatisticsReceiver {
+ public:
+ static size_t num_calls_;
+
+ StatisticsReceiver(cppgc::CustomSpaceIndex space_index, size_t bytes)
+ : expected_space_index_(space_index), expected_bytes_(bytes) {}
+
+ void AllocatedBytes(cppgc::CustomSpaceIndex space_index, size_t bytes) final {
+ EXPECT_EQ(expected_space_index_.value, space_index.value);
+ EXPECT_EQ(expected_bytes_, bytes);
+ ++num_calls_;
+ }
+
+ private:
+ const cppgc::CustomSpaceIndex expected_space_index_;
+ const size_t expected_bytes_;
+};
+
+size_t StatisticsReceiver::num_calls_ = 0u;
+
+class GCed final : public cppgc::GarbageCollected<GCed> {
+ public:
+ ~GCed() {
+ // Force a finalizer to guarantee sweeping can't finish without the main
+ // thread.
+ USE(data_);
+ }
+ static size_t GetAllocatedSize() {
+ return sizeof(GCed) + sizeof(cppgc::internal::HeapObjectHeader);
+ }
+ void Trace(cppgc::Visitor*) const {}
+
+ private:
+ char data_[KB];
+};
+
+} // namespace
+} // namespace internal
+} // namespace v8
+
+namespace cppgc {
+template <>
+struct SpaceTrait<v8::internal::GCed> {
+ using Space = CustomSpaceForTest;
+};
+
+} // namespace cppgc
+
+namespace v8 {
+namespace internal {
+
+namespace {
+
+class UnifiedHeapWithCustomSpaceTest : public UnifiedHeapTest {
+ public:
+ static std::vector<std::unique_ptr<cppgc::CustomSpaceBase>>
+ GetCustomSpaces() {
+ std::vector<std::unique_ptr<cppgc::CustomSpaceBase>> custom_spaces;
+ custom_spaces.emplace_back(std::make_unique<cppgc::CustomSpaceForTest>());
+ return custom_spaces;
+ }
+ UnifiedHeapWithCustomSpaceTest() : UnifiedHeapTest(GetCustomSpaces()) {}
+};
+
+} // namespace
+
+TEST_F(UnifiedHeapWithCustomSpaceTest, CollectCustomSpaceStatisticsAtLastGC) {
+ StatisticsReceiver::num_calls_ = 0;
+ // Initial state.
+ cpp_heap().CollectCustomSpaceStatisticsAtLastGC(
+ {cppgc::CustomSpaceForTest::kSpaceIndex},
+ std::make_unique<StatisticsReceiver>(
+ cppgc::CustomSpaceForTest::kSpaceIndex, 0u));
+ EXPECT_EQ(1u, StatisticsReceiver::num_calls_);
+ // State unpdated only after GC.
+ cppgc::Persistent<GCed> live_obj =
+ cppgc::MakeGarbageCollected<GCed>(allocation_handle());
+ cppgc::MakeGarbageCollected<GCed>(allocation_handle());
+ cpp_heap().CollectCustomSpaceStatisticsAtLastGC(
+ {cppgc::CustomSpaceForTest::kSpaceIndex},
+ std::make_unique<StatisticsReceiver>(
+ cppgc::CustomSpaceForTest::kSpaceIndex, 0u));
+ EXPECT_EQ(2u, StatisticsReceiver::num_calls_);
+ // Check state after GC.
+ CollectGarbageWithoutEmbedderStack(cppgc::Heap::SweepingType::kAtomic);
+ cpp_heap().CollectCustomSpaceStatisticsAtLastGC(
+ {cppgc::CustomSpaceForTest::kSpaceIndex},
+ std::make_unique<StatisticsReceiver>(
+ cppgc::CustomSpaceForTest::kSpaceIndex, GCed::GetAllocatedSize()));
+ EXPECT_EQ(3u, StatisticsReceiver::num_calls_);
+ // State callback delayed during sweeping.
+ cppgc::Persistent<GCed> another_live_obj =
+ cppgc::MakeGarbageCollected<GCed>(allocation_handle());
+ while (v8::platform::PumpMessageLoop(
+ V8::GetCurrentPlatform(), v8_isolate(),
+ v8::platform::MessageLoopBehavior::kDoNotWait)) {
+ // Empty the message loop to avoid finalizing garbage collections through
+ // unrelated tasks.
+ }
+ CollectGarbageWithoutEmbedderStack(
+ cppgc::Heap::SweepingType::kIncrementalAndConcurrent);
+ DCHECK(cpp_heap().sweeper().IsSweepingInProgress());
+ cpp_heap().CollectCustomSpaceStatisticsAtLastGC(
+ {cppgc::CustomSpaceForTest::kSpaceIndex},
+ std::make_unique<StatisticsReceiver>(
+ cppgc::CustomSpaceForTest::kSpaceIndex,
+ 2 * GCed::GetAllocatedSize()));
+ while (v8::platform::PumpMessageLoop(
+ V8::GetCurrentPlatform(), v8_isolate(),
+ v8::platform::MessageLoopBehavior::kWaitForWork)) {
+ if (3 < StatisticsReceiver::num_calls_) {
+ EXPECT_FALSE(cpp_heap().sweeper().IsSweepingInProgress());
+ break;
+ }
+ }
+ EXPECT_EQ(4u, StatisticsReceiver::num_calls_);
+}
+
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/test/unittests/heap/unified-heap-utils.cc b/deps/v8/test/unittests/heap/unified-heap-utils.cc
index 631695b7a5..01b46c03fb 100644
--- a/deps/v8/test/unittests/heap/unified-heap-utils.cc
+++ b/deps/v8/test/unittests/heap/unified-heap-utils.cc
@@ -15,9 +15,14 @@ namespace v8 {
namespace internal {
UnifiedHeapTest::UnifiedHeapTest()
+ : UnifiedHeapTest(std::vector<std::unique_ptr<cppgc::CustomSpaceBase>>()) {}
+
+UnifiedHeapTest::UnifiedHeapTest(
+ std::vector<std::unique_ptr<cppgc::CustomSpaceBase>> custom_spaces)
: cpp_heap_(v8::CppHeap::Create(
V8::GetCurrentPlatform(),
- CppHeapCreateParams{{}, WrapperHelper::DefaultWrapperDescriptor()})) {
+ CppHeapCreateParams{std::move(custom_spaces),
+ WrapperHelper::DefaultWrapperDescriptor()})) {
isolate()->heap()->AttachCppHeap(cpp_heap_.get());
}
diff --git a/deps/v8/test/unittests/heap/unified-heap-utils.h b/deps/v8/test/unittests/heap/unified-heap-utils.h
index 8df67aa7a4..c0f7481f77 100644
--- a/deps/v8/test/unittests/heap/unified-heap-utils.h
+++ b/deps/v8/test/unittests/heap/unified-heap-utils.h
@@ -21,6 +21,8 @@ class CppHeap;
class UnifiedHeapTest : public TestWithHeapInternals {
public:
UnifiedHeapTest();
+ explicit UnifiedHeapTest(
+ std::vector<std::unique_ptr<cppgc::CustomSpaceBase>>);
~UnifiedHeapTest() override = default;
void CollectGarbageWithEmbedderStack(cppgc::Heap::SweepingType sweeping_type =
diff --git a/deps/v8/test/unittests/heap/unmapper-unittest.cc b/deps/v8/test/unittests/heap/unmapper-unittest.cc
index cbabfe4773..115e8bb44f 100644
--- a/deps/v8/test/unittests/heap/unmapper-unittest.cc
+++ b/deps/v8/test/unittests/heap/unmapper-unittest.cc
@@ -239,11 +239,22 @@ class SequentialUnmapperTest : public TestWithIsolate {
SetPlatformPageAllocatorForTesting(tracking_page_allocator_));
old_flag_ = i::FLAG_concurrent_sweeping;
i::FLAG_concurrent_sweeping = false;
+#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+ // Reinitialize the process-wide pointer cage so it can pick up the
+ // TrackingPageAllocator.
+ IsolateAllocator::FreeProcessWidePtrComprCageForTesting();
+ IsolateAllocator::InitializeOncePerProcess();
+#endif
TestWithIsolate::SetUpTestCase();
}
static void TearDownTestCase() {
TestWithIsolate::TearDownTestCase();
+#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
+ // Free the process-wide cage reservation, otherwise the pages won't be
+ // freed until process teardown.
+ IsolateAllocator::FreeProcessWidePtrComprCageForTesting();
+#endif
i::FLAG_concurrent_sweeping = old_flag_;
CHECK(tracking_page_allocator_->IsEmpty());
@@ -275,6 +286,7 @@ bool SequentialUnmapperTest::old_flag_;
// See v8:5945.
TEST_F(SequentialUnmapperTest, UnmapOnTeardownAfterAlreadyFreeingPooled) {
+ if (FLAG_enable_third_party_heap) return;
Page* page = allocator()->AllocatePage(
MemoryChunkLayout::AllocatableMemoryInDataPage(),
static_cast<PagedSpace*>(heap()->old_space()),
@@ -303,6 +315,7 @@ TEST_F(SequentialUnmapperTest, UnmapOnTeardownAfterAlreadyFreeingPooled) {
// See v8:5945.
TEST_F(SequentialUnmapperTest, UnmapOnTeardown) {
+ if (FLAG_enable_third_party_heap) return;
Page* page = allocator()->AllocatePage(
MemoryChunkLayout::AllocatableMemoryInDataPage(),
static_cast<PagedSpace*>(heap()->old_space()),
diff --git a/deps/v8/test/unittests/interpreter/bytecode-array-builder-unittest.cc b/deps/v8/test/unittests/interpreter/bytecode-array-builder-unittest.cc
index e027f12b78..c876f3e242 100644
--- a/deps/v8/test/unittests/interpreter/bytecode-array-builder-unittest.cc
+++ b/deps/v8/test/unittests/interpreter/bytecode-array-builder-unittest.cc
@@ -95,9 +95,9 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
builder.MoveRegister(reg, wide);
FeedbackSlot load_global_slot =
- feedback_spec.AddLoadGlobalICSlot(NOT_INSIDE_TYPEOF);
+ feedback_spec.AddLoadGlobalICSlot(TypeofMode::kNotInside);
FeedbackSlot load_global_typeof_slot =
- feedback_spec.AddLoadGlobalICSlot(INSIDE_TYPEOF);
+ feedback_spec.AddLoadGlobalICSlot(TypeofMode::kInside);
FeedbackSlot sloppy_store_global_slot =
feedback_spec.AddStoreGlobalICSlot(LanguageMode::kSloppy);
FeedbackSlot load_slot = feedback_spec.AddLoadICSlot();
@@ -117,10 +117,8 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
// Emit global load / store operations.
const AstRawString* name = ast_factory.GetOneByteString("var_name");
- builder
- .LoadGlobal(name, load_global_slot.ToInt(), TypeofMode::NOT_INSIDE_TYPEOF)
- .LoadGlobal(name, load_global_typeof_slot.ToInt(),
- TypeofMode::INSIDE_TYPEOF)
+ builder.LoadGlobal(name, load_global_slot.ToInt(), TypeofMode::kNotInside)
+ .LoadGlobal(name, load_global_typeof_slot.ToInt(), TypeofMode::kInside)
.StoreGlobal(name, sloppy_store_global_slot.ToInt());
// Emit context operations.
@@ -162,8 +160,8 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
builder.GetIterator(reg, load_slot.ToInt(), call_slot.ToInt());
// Emit load / store lookup slots.
- builder.LoadLookupSlot(name, TypeofMode::NOT_INSIDE_TYPEOF)
- .LoadLookupSlot(name, TypeofMode::INSIDE_TYPEOF)
+ builder.LoadLookupSlot(name, TypeofMode::kNotInside)
+ .LoadLookupSlot(name, TypeofMode::kInside)
.StoreLookupSlot(name, LanguageMode::kSloppy, LookupHoistingMode::kNormal)
.StoreLookupSlot(name, LanguageMode::kSloppy,
LookupHoistingMode::kLegacySloppy)
@@ -171,12 +169,12 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
LookupHoistingMode::kNormal);
// Emit load / store lookup slots with context fast paths.
- builder.LoadLookupContextSlot(name, TypeofMode::NOT_INSIDE_TYPEOF, 1, 0)
- .LoadLookupContextSlot(name, TypeofMode::INSIDE_TYPEOF, 1, 0);
+ builder.LoadLookupContextSlot(name, TypeofMode::kNotInside, 1, 0)
+ .LoadLookupContextSlot(name, TypeofMode::kInside, 1, 0);
// Emit load / store lookup slots with global fast paths.
- builder.LoadLookupGlobalSlot(name, TypeofMode::NOT_INSIDE_TYPEOF, 1, 0)
- .LoadLookupGlobalSlot(name, TypeofMode::INSIDE_TYPEOF, 1, 0);
+ builder.LoadLookupGlobalSlot(name, TypeofMode::kNotInside, 1, 0)
+ .LoadLookupGlobalSlot(name, TypeofMode::kInside, 1, 0);
// Emit closure operations.
builder.CreateClosure(0, 1, static_cast<int>(AllocationType::kYoung));
@@ -380,8 +378,8 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
.StoreContextSlot(reg, 1024, 0);
// Emit wide load / store lookup slots.
- builder.LoadLookupSlot(wide_name, TypeofMode::NOT_INSIDE_TYPEOF)
- .LoadLookupSlot(wide_name, TypeofMode::INSIDE_TYPEOF)
+ builder.LoadLookupSlot(wide_name, TypeofMode::kNotInside)
+ .LoadLookupSlot(wide_name, TypeofMode::kInside)
.StoreLookupSlot(wide_name, LanguageMode::kSloppy,
LookupHoistingMode::kNormal)
.StoreLookupSlot(wide_name, LanguageMode::kSloppy,
diff --git a/deps/v8/test/unittests/interpreter/bytecode-array-iterator-unittest.cc b/deps/v8/test/unittests/interpreter/bytecode-array-iterator-unittest.cc
index 88e87f7e94..1060e4ee95 100644
--- a/deps/v8/test/unittests/interpreter/bytecode-array-iterator-unittest.cc
+++ b/deps/v8/test/unittests/interpreter/bytecode-array-iterator-unittest.cc
@@ -44,7 +44,7 @@ TEST_F(BytecodeArrayIteratorTest, IteratesBytecodeArray) {
uint32_t load_feedback_slot = feedback_spec.AddLoadICSlot().ToInt();
uint32_t forin_feedback_slot = feedback_spec.AddForInSlot().ToInt();
uint32_t load_global_feedback_slot =
- feedback_spec.AddLoadGlobalICSlot(TypeofMode::NOT_INSIDE_TYPEOF).ToInt();
+ feedback_spec.AddLoadGlobalICSlot(TypeofMode::kNotInside).ToInt();
builder.LoadLiteral(heap_num_0)
.StoreAccumulatorInRegister(reg_0)
@@ -66,8 +66,7 @@ TEST_F(BytecodeArrayIteratorTest, IteratesBytecodeArray) {
.ForInPrepare(triple, forin_feedback_slot)
.CallRuntime(Runtime::kLoadIC_Miss, reg_0)
.Debugger()
- .LoadGlobal(name, load_global_feedback_slot,
- TypeofMode::NOT_INSIDE_TYPEOF)
+ .LoadGlobal(name, load_global_feedback_slot, TypeofMode::kNotInside)
.Return();
// Test iterator sees the expected output from the builder.
diff --git a/deps/v8/test/unittests/logging/counters-unittest.cc b/deps/v8/test/unittests/logging/counters-unittest.cc
index 468ca4fc4e..3558f745f8 100644
--- a/deps/v8/test/unittests/logging/counters-unittest.cc
+++ b/deps/v8/test/unittests/logging/counters-unittest.cc
@@ -8,7 +8,6 @@
#include "src/base/atomic-utils.h"
#include "src/base/platform/time.h"
#include "src/handles/handles-inl.h"
-#include "src/logging/counters-inl.h"
#include "src/logging/counters.h"
#include "src/objects/objects-inl.h"
#include "src/tracing/tracing-category-observer.h"
@@ -46,104 +45,6 @@ class AggregatedMemoryHistogramTest : public ::testing::Test {
MockHistogram mock_;
};
-static base::TimeTicks runtime_call_stats_test_time_ = base::TimeTicks();
-// Time source used for the RuntimeCallTimer during tests. We cannot rely on
-// the native timer since it's too unpredictable on the build bots.
-static base::TimeTicks RuntimeCallStatsTestNow() {
- return runtime_call_stats_test_time_;
-}
-
-class RuntimeCallStatsTest : public TestWithNativeContext {
- public:
- RuntimeCallStatsTest() {
- TracingFlags::runtime_stats.store(
- v8::tracing::TracingCategoryObserver::ENABLED_BY_NATIVE,
- std::memory_order_relaxed);
- // We need to set {time_} to a non-zero value since it would otherwise
- // cause runtime call timers to think they are uninitialized.
- Sleep(1);
- stats()->Reset();
- }
-
- ~RuntimeCallStatsTest() override {
- // Disable RuntimeCallStats before tearing down the isolate to prevent
- // printing the tests table. Comment the following line for debugging
- // purposes.
- TracingFlags::runtime_stats.store(0, std::memory_order_relaxed);
- }
-
- static void SetUpTestCase() {
- TestWithIsolate::SetUpTestCase();
- // Use a custom time source to precisly emulate system time.
- RuntimeCallTimer::Now = &RuntimeCallStatsTestNow;
- }
-
- static void TearDownTestCase() {
- TestWithIsolate::TearDownTestCase();
- // Restore the original time source.
- RuntimeCallTimer::Now = &base::TimeTicks::HighResolutionNow;
- }
-
- RuntimeCallStats* stats() {
- return isolate()->counters()->runtime_call_stats();
- }
-
- RuntimeCallCounterId counter_id() {
- return RuntimeCallCounterId::kTestCounter1;
- }
-
- RuntimeCallCounterId counter_id2() {
- return RuntimeCallCounterId::kTestCounter2;
- }
-
- RuntimeCallCounterId counter_id3() {
- return RuntimeCallCounterId::kTestCounter3;
- }
-
- RuntimeCallCounter* js_counter() {
- return stats()->GetCounter(RuntimeCallCounterId::kJS_Execution);
- }
- RuntimeCallCounter* counter() { return stats()->GetCounter(counter_id()); }
- RuntimeCallCounter* counter2() { return stats()->GetCounter(counter_id2()); }
- RuntimeCallCounter* counter3() { return stats()->GetCounter(counter_id3()); }
-
- void Sleep(int64_t microseconds) {
- base::TimeDelta delta = base::TimeDelta::FromMicroseconds(microseconds);
- time_ += delta;
- runtime_call_stats_test_time_ =
- base::TimeTicks::FromInternalValue(time_.InMicroseconds());
- }
-
- private:
- base::TimeDelta time_;
-};
-
-// Temporarily use the native time to modify the test time.
-class V8_NODISCARD ElapsedTimeScope {
- public:
- explicit ElapsedTimeScope(RuntimeCallStatsTest* test) : test_(test) {
- timer_.Start();
- }
- ~ElapsedTimeScope() { test_->Sleep(timer_.Elapsed().InMicroseconds()); }
-
- private:
- base::ElapsedTimer timer_;
- RuntimeCallStatsTest* test_;
-};
-
-// Temporarily use the default time source.
-class V8_NODISCARD NativeTimeScope {
- public:
- NativeTimeScope() {
- CHECK_EQ(RuntimeCallTimer::Now, &RuntimeCallStatsTestNow);
- RuntimeCallTimer::Now = &base::TimeTicks::HighResolutionNow;
- }
- ~NativeTimeScope() {
- CHECK_EQ(RuntimeCallTimer::Now, &base::TimeTicks::HighResolutionNow);
- RuntimeCallTimer::Now = &RuntimeCallStatsTestNow;
- }
-};
-
class SnapshotNativeCounterTest : public TestWithNativeContextAndCounters {
public:
SnapshotNativeCounterTest() {}
@@ -310,523 +211,6 @@ TEST_F(AggregatedMemoryHistogramTest, ManySamples2) {
}
}
-TEST_F(RuntimeCallStatsTest, RuntimeCallTimer) {
- RuntimeCallTimer timer;
-
- Sleep(50);
- stats()->Enter(&timer, counter_id());
- EXPECT_EQ(counter(), timer.counter());
- EXPECT_EQ(nullptr, timer.parent());
- EXPECT_TRUE(timer.IsStarted());
- EXPECT_EQ(&timer, stats()->current_timer());
-
- Sleep(100);
-
- stats()->Leave(&timer);
- Sleep(50);
- EXPECT_FALSE(timer.IsStarted());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, RuntimeCallTimerSubTimer) {
- RuntimeCallTimer timer;
- RuntimeCallTimer timer2;
-
- stats()->Enter(&timer, counter_id());
- EXPECT_TRUE(timer.IsStarted());
- EXPECT_FALSE(timer2.IsStarted());
- EXPECT_EQ(counter(), timer.counter());
- EXPECT_EQ(nullptr, timer.parent());
- EXPECT_EQ(&timer, stats()->current_timer());
-
- Sleep(50);
-
- stats()->Enter(&timer2, counter_id2());
- // timer 1 is paused, while timer 2 is active.
- EXPECT_TRUE(timer2.IsStarted());
- EXPECT_EQ(counter(), timer.counter());
- EXPECT_EQ(counter2(), timer2.counter());
- EXPECT_EQ(nullptr, timer.parent());
- EXPECT_EQ(&timer, timer2.parent());
- EXPECT_EQ(&timer2, stats()->current_timer());
-
- Sleep(100);
- stats()->Leave(&timer2);
-
- // The subtimer subtracts its time from the parent timer.
- EXPECT_TRUE(timer.IsStarted());
- EXPECT_FALSE(timer2.IsStarted());
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(1, counter2()->count());
- EXPECT_EQ(0, counter()->time().InMicroseconds());
- EXPECT_EQ(100, counter2()->time().InMicroseconds());
- EXPECT_EQ(&timer, stats()->current_timer());
-
- Sleep(100);
-
- stats()->Leave(&timer);
- EXPECT_FALSE(timer.IsStarted());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(1, counter2()->count());
- EXPECT_EQ(150, counter()->time().InMicroseconds());
- EXPECT_EQ(100, counter2()->time().InMicroseconds());
- EXPECT_EQ(nullptr, stats()->current_timer());
-}
-
-TEST_F(RuntimeCallStatsTest, RuntimeCallTimerRecursive) {
- RuntimeCallTimer timer;
- RuntimeCallTimer timer2;
-
- stats()->Enter(&timer, counter_id());
- EXPECT_EQ(counter(), timer.counter());
- EXPECT_EQ(nullptr, timer.parent());
- EXPECT_TRUE(timer.IsStarted());
- EXPECT_EQ(&timer, stats()->current_timer());
-
- stats()->Enter(&timer2, counter_id());
- EXPECT_EQ(counter(), timer2.counter());
- EXPECT_EQ(nullptr, timer.parent());
- EXPECT_EQ(&timer, timer2.parent());
- EXPECT_TRUE(timer2.IsStarted());
- EXPECT_EQ(&timer2, stats()->current_timer());
-
- Sleep(50);
-
- stats()->Leave(&timer2);
- EXPECT_EQ(nullptr, timer.parent());
- EXPECT_FALSE(timer2.IsStarted());
- EXPECT_TRUE(timer.IsStarted());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(50, counter()->time().InMicroseconds());
-
- Sleep(100);
-
- stats()->Leave(&timer);
- EXPECT_FALSE(timer.IsStarted());
- EXPECT_EQ(2, counter()->count());
- EXPECT_EQ(150, counter()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, RuntimeCallTimerScope) {
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(50);
- }
- Sleep(100);
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(50, counter()->time().InMicroseconds());
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(50);
- }
- EXPECT_EQ(2, counter()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, RuntimeCallTimerScopeRecursive) {
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(50);
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, counter()->time().InMicroseconds());
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(50);
- }
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(50, counter()->time().InMicroseconds());
- }
- EXPECT_EQ(2, counter()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, RenameTimer) {
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(50);
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, counter2()->count());
- EXPECT_EQ(0, counter()->time().InMicroseconds());
- EXPECT_EQ(0, counter2()->time().InMicroseconds());
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(100);
- }
- CHANGE_CURRENT_RUNTIME_COUNTER(stats(),
- RuntimeCallCounterId::kTestCounter2);
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(0, counter2()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(0, counter2()->time().InMicroseconds());
- }
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(1, counter2()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(50, counter2()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, BasicPrintAndSnapshot) {
- std::ostringstream out;
- stats()->Print(out);
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, counter2()->count());
- EXPECT_EQ(0, counter3()->count());
- EXPECT_EQ(0, counter()->time().InMicroseconds());
- EXPECT_EQ(0, counter2()->time().InMicroseconds());
- EXPECT_EQ(0, counter3()->time().InMicroseconds());
-
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(50);
- stats()->Print(out);
- }
- stats()->Print(out);
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(0, counter2()->count());
- EXPECT_EQ(0, counter3()->count());
- EXPECT_EQ(50, counter()->time().InMicroseconds());
- EXPECT_EQ(0, counter2()->time().InMicroseconds());
- EXPECT_EQ(0, counter3()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, PrintAndSnapshot) {
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(100);
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, counter()->time().InMicroseconds());
- {
- RuntimeCallTimerScope scope(stats(), counter_id2());
- EXPECT_EQ(0, counter2()->count());
- EXPECT_EQ(0, counter2()->time().InMicroseconds());
- Sleep(50);
-
- // This calls Snapshot on the current active timer and sychronizes and
- // commits the whole timer stack.
- std::ostringstream out;
- stats()->Print(out);
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, counter2()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(50, counter2()->time().InMicroseconds());
- // Calling Print several times shouldn't have a (big) impact on the
- // measured times.
- stats()->Print(out);
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, counter2()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(50, counter2()->time().InMicroseconds());
-
- Sleep(50);
- stats()->Print(out);
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, counter2()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(100, counter2()->time().InMicroseconds());
- Sleep(50);
- }
- Sleep(50);
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(1, counter2()->count());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(150, counter2()->time().InMicroseconds());
- Sleep(50);
- }
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(1, counter2()->count());
- EXPECT_EQ(200, counter()->time().InMicroseconds());
- EXPECT_EQ(150, counter2()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, NestedScopes) {
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(100);
- {
- RuntimeCallTimerScope scope(stats(), counter_id2());
- Sleep(100);
- {
- RuntimeCallTimerScope scope(stats(), counter_id3());
- Sleep(50);
- }
- Sleep(50);
- {
- RuntimeCallTimerScope scope(stats(), counter_id3());
- Sleep(50);
- }
- Sleep(50);
- }
- Sleep(100);
- {
- RuntimeCallTimerScope scope(stats(), counter_id2());
- Sleep(100);
- }
- Sleep(50);
- }
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(2, counter2()->count());
- EXPECT_EQ(2, counter3()->count());
- EXPECT_EQ(250, counter()->time().InMicroseconds());
- EXPECT_EQ(300, counter2()->time().InMicroseconds());
- EXPECT_EQ(100, counter3()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, BasicJavaScript) {
- RuntimeCallCounter* counter =
- stats()->GetCounter(RuntimeCallCounterId::kJS_Execution);
- EXPECT_EQ(0, counter->count());
- EXPECT_EQ(0, counter->time().InMicroseconds());
-
- {
- NativeTimeScope native_timer_scope;
- RunJS("function f() { return 1; };");
- }
- EXPECT_EQ(1, counter->count());
- int64_t time = counter->time().InMicroseconds();
- EXPECT_LT(0, time);
-
- {
- NativeTimeScope native_timer_scope;
- RunJS("f();");
- }
- EXPECT_EQ(2, counter->count());
- EXPECT_LE(time, counter->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, FunctionLengthGetter) {
- RuntimeCallCounter* getter_counter =
- stats()->GetCounter(RuntimeCallCounterId::kFunctionLengthGetter);
- EXPECT_EQ(0, getter_counter->count());
- EXPECT_EQ(0, js_counter()->count());
- EXPECT_EQ(0, getter_counter->time().InMicroseconds());
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
-
- {
- NativeTimeScope native_timer_scope;
- RunJS("function f(array) { return array.length; };");
- }
- EXPECT_EQ(0, getter_counter->count());
- EXPECT_EQ(1, js_counter()->count());
- EXPECT_EQ(0, getter_counter->time().InMicroseconds());
- int64_t js_time = js_counter()->time().InMicroseconds();
- EXPECT_LT(0, js_time);
-
- {
- NativeTimeScope native_timer_scope;
- RunJS("f.length;");
- }
- EXPECT_EQ(1, getter_counter->count());
- EXPECT_EQ(2, js_counter()->count());
- EXPECT_LE(0, getter_counter->time().InMicroseconds());
- EXPECT_LE(js_time, js_counter()->time().InMicroseconds());
-
- {
- NativeTimeScope native_timer_scope;
- RunJS("for (let i = 0; i < 50; i++) { f.length };");
- }
- EXPECT_EQ(51, getter_counter->count());
- EXPECT_EQ(3, js_counter()->count());
-
- {
- NativeTimeScope native_timer_scope;
- RunJS("for (let i = 0; i < 1000; i++) { f.length; };");
- }
- EXPECT_EQ(1051, getter_counter->count());
- EXPECT_EQ(4, js_counter()->count());
-}
-
-namespace {
-static RuntimeCallStatsTest* current_test;
-static const int kCustomCallbackTime = 1234;
-static void CustomCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
- RuntimeCallTimerScope scope(current_test->stats(),
- current_test->counter_id2());
- current_test->Sleep(kCustomCallbackTime);
-}
-} // namespace
-
-TEST_F(RuntimeCallStatsTest, CallbackFunction) {
- FLAG_allow_natives_syntax = true;
- FLAG_incremental_marking = false;
-
- RuntimeCallCounter* callback_counter =
- stats()->GetCounter(RuntimeCallCounterId::kFunctionCallback);
-
- current_test = this;
- // Set up a function template with a custom callback.
- v8::Isolate* isolate = v8_isolate();
- v8::HandleScope scope(isolate);
-
- v8::Local<v8::ObjectTemplate> object_template =
- v8::ObjectTemplate::New(isolate);
- object_template->Set(isolate, "callback",
- v8::FunctionTemplate::New(isolate, CustomCallback));
- v8::Local<v8::Object> object =
- object_template->NewInstance(v8_context()).ToLocalChecked();
- SetGlobalProperty("custom_object", object);
-
- EXPECT_EQ(0, js_counter()->count());
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, callback_counter->count());
- EXPECT_EQ(0, counter2()->count());
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(100);
- RunJS("custom_object.callback();");
- }
- EXPECT_EQ(1, js_counter()->count());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(1, callback_counter->count());
- EXPECT_EQ(1, counter2()->count());
- // Given that no native timers are used, only the two scopes explitly
- // mentioned above will track the time.
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
- EXPECT_EQ(0, callback_counter->time().InMicroseconds());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(kCustomCallbackTime, counter2()->time().InMicroseconds());
-
- RunJS("for (let i = 0; i < 9; i++) { custom_object.callback(); };");
- EXPECT_EQ(2, js_counter()->count());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(10, callback_counter->count());
- EXPECT_EQ(10, counter2()->count());
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
- EXPECT_EQ(0, callback_counter->time().InMicroseconds());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(kCustomCallbackTime * 10, counter2()->time().InMicroseconds());
-
- RunJS("for (let i = 0; i < 4000; i++) { custom_object.callback(); };");
- EXPECT_EQ(3, js_counter()->count());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(4010, callback_counter->count());
- EXPECT_EQ(4010, counter2()->count());
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
- EXPECT_EQ(0, callback_counter->time().InMicroseconds());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(kCustomCallbackTime * 4010, counter2()->time().InMicroseconds());
-
- // Check that the FunctionCallback tracing also works properly
- // when the `callback` is called from optimized code.
- RunJS(
- "function wrap(o) { return o.callback(); };\n"
- "%PrepareFunctionForOptimization(wrap);\n"
- "wrap(custom_object);\n"
- "wrap(custom_object);\n"
- "%OptimizeFunctionOnNextCall(wrap);\n"
- "wrap(custom_object);\n");
- EXPECT_EQ(4, js_counter()->count());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(4013, callback_counter->count());
- EXPECT_EQ(4013, counter2()->count());
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
- EXPECT_EQ(0, callback_counter->time().InMicroseconds());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(kCustomCallbackTime * 4013, counter2()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, ApiGetter) {
- FLAG_allow_natives_syntax = true;
- FLAG_incremental_marking = false;
-
- RuntimeCallCounter* callback_counter =
- stats()->GetCounter(RuntimeCallCounterId::kFunctionCallback);
- current_test = this;
- // Set up a function template with an api accessor.
- v8::Isolate* isolate = v8_isolate();
- v8::HandleScope scope(isolate);
-
- v8::Local<v8::ObjectTemplate> object_template =
- v8::ObjectTemplate::New(isolate);
- object_template->SetAccessorProperty(
- NewString("apiGetter"),
- v8::FunctionTemplate::New(isolate, CustomCallback));
- v8::Local<v8::Object> object =
- object_template->NewInstance(v8_context()).ToLocalChecked();
- SetGlobalProperty("custom_object", object);
-
- // TODO(cbruni): Check api accessor timer (one above the custom callback).
- EXPECT_EQ(0, js_counter()->count());
- EXPECT_EQ(0, counter()->count());
- EXPECT_EQ(0, callback_counter->count());
- EXPECT_EQ(0, counter2()->count());
-
- {
- RuntimeCallTimerScope scope(stats(), counter_id());
- Sleep(100);
- RunJS("custom_object.apiGetter;");
- }
-
- EXPECT_EQ(1, js_counter()->count());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(1, callback_counter->count());
- EXPECT_EQ(1, counter2()->count());
- // Given that no native timers are used, only the two scopes explitly
- // mentioned above will track the time.
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(0, callback_counter->time().InMicroseconds());
- EXPECT_EQ(kCustomCallbackTime, counter2()->time().InMicroseconds());
-
- RunJS("for (let i = 0; i < 9; i++) { custom_object.apiGetter };");
-
- EXPECT_EQ(2, js_counter()->count());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(10, callback_counter->count());
- EXPECT_EQ(10, counter2()->count());
-
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(0, callback_counter->time().InMicroseconds());
- EXPECT_EQ(kCustomCallbackTime * 10, counter2()->time().InMicroseconds());
-
- RunJS("for (let i = 0; i < 4000; i++) { custom_object.apiGetter };");
-
- EXPECT_EQ(3, js_counter()->count());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(4010, callback_counter->count());
- EXPECT_EQ(4010, counter2()->count());
-
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(0, callback_counter->time().InMicroseconds());
- EXPECT_EQ(kCustomCallbackTime * 4010, counter2()->time().InMicroseconds());
-
- // Check that the FunctionCallback tracing also works properly
- // when the `apiGetter` is called from optimized code.
- RunJS(
- "function wrap(o) { return o.apiGetter; };\n"
- "%PrepareFunctionForOptimization(wrap);\n"
- "wrap(custom_object);\n"
- "wrap(custom_object);\n"
- "%OptimizeFunctionOnNextCall(wrap);\n"
- "wrap(custom_object);\n");
-
- EXPECT_EQ(4, js_counter()->count());
- EXPECT_EQ(1, counter()->count());
- EXPECT_EQ(4013, callback_counter->count());
- EXPECT_EQ(4013, counter2()->count());
-
- EXPECT_EQ(0, js_counter()->time().InMicroseconds());
- EXPECT_EQ(100, counter()->time().InMicroseconds());
- EXPECT_EQ(0, callback_counter->time().InMicroseconds());
- EXPECT_EQ(kCustomCallbackTime * 4013, counter2()->time().InMicroseconds());
-}
-
-TEST_F(RuntimeCallStatsTest, GarbageCollection) {
- FLAG_expose_gc = true;
- v8::Isolate* isolate = v8_isolate();
- RunJS(
- "let root = [];"
- "for (let i = 0; i < 10; i++) root.push((new Array(1000)).fill(0));"
- "root.push((new Array(1000000)).fill(0));"
- "((new Array(1000000)).fill(0));");
- isolate->RequestGarbageCollectionForTesting(
- v8::Isolate::kFullGarbageCollection);
- isolate->RequestGarbageCollectionForTesting(
- v8::Isolate::kFullGarbageCollection);
-}
-
TEST_F(SnapshotNativeCounterTest, StringAddNative) {
RunJS("let s = 'hello, ' + 'world!'");
diff --git a/deps/v8/test/unittests/logging/runtime-call-stats-unittest.cc b/deps/v8/test/unittests/logging/runtime-call-stats-unittest.cc
new file mode 100644
index 0000000000..8d0ea594c3
--- /dev/null
+++ b/deps/v8/test/unittests/logging/runtime-call-stats-unittest.cc
@@ -0,0 +1,643 @@
+// Copyright 2021 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.
+
+#include "src/logging/runtime-call-stats.h"
+
+#include "src/api/api-inl.h"
+#include "src/base/atomic-utils.h"
+#include "src/base/platform/time.h"
+#include "src/handles/handles-inl.h"
+#include "src/logging/counters.h"
+#include "src/objects/objects-inl.h"
+#include "src/tracing/tracing-category-observer.h"
+#include "test/unittests/test-utils.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace v8 {
+namespace internal {
+
+namespace {
+
+static base::TimeTicks runtime_call_stats_test_time_ = base::TimeTicks();
+// Time source used for the RuntimeCallTimer during tests. We cannot rely on
+// the native timer since it's too unpredictable on the build bots.
+static base::TimeTicks RuntimeCallStatsTestNow() {
+ return runtime_call_stats_test_time_;
+}
+
+class RuntimeCallStatsTest : public TestWithNativeContext {
+ public:
+ RuntimeCallStatsTest() {
+ TracingFlags::runtime_stats.store(
+ v8::tracing::TracingCategoryObserver::ENABLED_BY_NATIVE,
+ std::memory_order_relaxed);
+ // We need to set {time_} to a non-zero value since it would otherwise
+ // cause runtime call timers to think they are uninitialized.
+ Sleep(1);
+ stats()->Reset();
+ }
+
+ ~RuntimeCallStatsTest() override {
+ // Disable RuntimeCallStats before tearing down the isolate to prevent
+ // printing the tests table. Comment the following line for debugging
+ // purposes.
+ TracingFlags::runtime_stats.store(0, std::memory_order_relaxed);
+ }
+
+ static void SetUpTestCase() {
+ TestWithIsolate::SetUpTestCase();
+ // Use a custom time source to precisly emulate system time.
+ RuntimeCallTimer::Now = &RuntimeCallStatsTestNow;
+ }
+
+ static void TearDownTestCase() {
+ TestWithIsolate::TearDownTestCase();
+ // Restore the original time source.
+ RuntimeCallTimer::Now = &base::TimeTicks::HighResolutionNow;
+ }
+
+ RuntimeCallStats* stats() {
+ return isolate()->counters()->runtime_call_stats();
+ }
+
+ RuntimeCallCounterId counter_id() {
+ return RuntimeCallCounterId::kTestCounter1;
+ }
+
+ RuntimeCallCounterId counter_id2() {
+ return RuntimeCallCounterId::kTestCounter2;
+ }
+
+ RuntimeCallCounterId counter_id3() {
+ return RuntimeCallCounterId::kTestCounter3;
+ }
+
+ RuntimeCallCounter* js_counter() {
+ return stats()->GetCounter(RuntimeCallCounterId::kJS_Execution);
+ }
+ RuntimeCallCounter* counter() { return stats()->GetCounter(counter_id()); }
+ RuntimeCallCounter* counter2() { return stats()->GetCounter(counter_id2()); }
+ RuntimeCallCounter* counter3() { return stats()->GetCounter(counter_id3()); }
+
+ void Sleep(int64_t microseconds) {
+ base::TimeDelta delta = base::TimeDelta::FromMicroseconds(microseconds);
+ time_ += delta;
+ runtime_call_stats_test_time_ =
+ base::TimeTicks::FromInternalValue(time_.InMicroseconds());
+ }
+
+ private:
+ base::TimeDelta time_;
+};
+
+// Temporarily use the native time to modify the test time.
+class V8_NODISCARD ElapsedTimeScope {
+ public:
+ explicit ElapsedTimeScope(RuntimeCallStatsTest* test) : test_(test) {
+ timer_.Start();
+ }
+ ~ElapsedTimeScope() { test_->Sleep(timer_.Elapsed().InMicroseconds()); }
+
+ private:
+ base::ElapsedTimer timer_;
+ RuntimeCallStatsTest* test_;
+};
+
+// Temporarily use the default time source.
+class V8_NODISCARD NativeTimeScope {
+ public:
+ NativeTimeScope() {
+ CHECK_EQ(RuntimeCallTimer::Now, &RuntimeCallStatsTestNow);
+ RuntimeCallTimer::Now = &base::TimeTicks::HighResolutionNow;
+ }
+ ~NativeTimeScope() {
+ CHECK_EQ(RuntimeCallTimer::Now, &base::TimeTicks::HighResolutionNow);
+ RuntimeCallTimer::Now = &RuntimeCallStatsTestNow;
+ }
+};
+
+} // namespace
+
+TEST_F(RuntimeCallStatsTest, RuntimeCallTimer) {
+ RuntimeCallTimer timer;
+
+ Sleep(50);
+ stats()->Enter(&timer, counter_id());
+ EXPECT_EQ(counter(), timer.counter());
+ EXPECT_EQ(nullptr, timer.parent());
+ EXPECT_TRUE(timer.IsStarted());
+ EXPECT_EQ(&timer, stats()->current_timer());
+
+ Sleep(100);
+
+ stats()->Leave(&timer);
+ Sleep(50);
+ EXPECT_FALSE(timer.IsStarted());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, RuntimeCallTimerSubTimer) {
+ RuntimeCallTimer timer;
+ RuntimeCallTimer timer2;
+
+ stats()->Enter(&timer, counter_id());
+ EXPECT_TRUE(timer.IsStarted());
+ EXPECT_FALSE(timer2.IsStarted());
+ EXPECT_EQ(counter(), timer.counter());
+ EXPECT_EQ(nullptr, timer.parent());
+ EXPECT_EQ(&timer, stats()->current_timer());
+
+ Sleep(50);
+
+ stats()->Enter(&timer2, counter_id2());
+ // timer 1 is paused, while timer 2 is active.
+ EXPECT_TRUE(timer2.IsStarted());
+ EXPECT_EQ(counter(), timer.counter());
+ EXPECT_EQ(counter2(), timer2.counter());
+ EXPECT_EQ(nullptr, timer.parent());
+ EXPECT_EQ(&timer, timer2.parent());
+ EXPECT_EQ(&timer2, stats()->current_timer());
+
+ Sleep(100);
+ stats()->Leave(&timer2);
+
+ // The subtimer subtracts its time from the parent timer.
+ EXPECT_TRUE(timer.IsStarted());
+ EXPECT_FALSE(timer2.IsStarted());
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(1, counter2()->count());
+ EXPECT_EQ(0, counter()->time().InMicroseconds());
+ EXPECT_EQ(100, counter2()->time().InMicroseconds());
+ EXPECT_EQ(&timer, stats()->current_timer());
+
+ Sleep(100);
+
+ stats()->Leave(&timer);
+ EXPECT_FALSE(timer.IsStarted());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(1, counter2()->count());
+ EXPECT_EQ(150, counter()->time().InMicroseconds());
+ EXPECT_EQ(100, counter2()->time().InMicroseconds());
+ EXPECT_EQ(nullptr, stats()->current_timer());
+}
+
+TEST_F(RuntimeCallStatsTest, RuntimeCallTimerRecursive) {
+ RuntimeCallTimer timer;
+ RuntimeCallTimer timer2;
+
+ stats()->Enter(&timer, counter_id());
+ EXPECT_EQ(counter(), timer.counter());
+ EXPECT_EQ(nullptr, timer.parent());
+ EXPECT_TRUE(timer.IsStarted());
+ EXPECT_EQ(&timer, stats()->current_timer());
+
+ stats()->Enter(&timer2, counter_id());
+ EXPECT_EQ(counter(), timer2.counter());
+ EXPECT_EQ(nullptr, timer.parent());
+ EXPECT_EQ(&timer, timer2.parent());
+ EXPECT_TRUE(timer2.IsStarted());
+ EXPECT_EQ(&timer2, stats()->current_timer());
+
+ Sleep(50);
+
+ stats()->Leave(&timer2);
+ EXPECT_EQ(nullptr, timer.parent());
+ EXPECT_FALSE(timer2.IsStarted());
+ EXPECT_TRUE(timer.IsStarted());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(50, counter()->time().InMicroseconds());
+
+ Sleep(100);
+
+ stats()->Leave(&timer);
+ EXPECT_FALSE(timer.IsStarted());
+ EXPECT_EQ(2, counter()->count());
+ EXPECT_EQ(150, counter()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, RuntimeCallTimerScope) {
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(50);
+ }
+ Sleep(100);
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(50, counter()->time().InMicroseconds());
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(50);
+ }
+ EXPECT_EQ(2, counter()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, RuntimeCallTimerScopeRecursive) {
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(50);
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, counter()->time().InMicroseconds());
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(50);
+ }
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(50, counter()->time().InMicroseconds());
+ }
+ EXPECT_EQ(2, counter()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, RenameTimer) {
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(50);
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, counter2()->count());
+ EXPECT_EQ(0, counter()->time().InMicroseconds());
+ EXPECT_EQ(0, counter2()->time().InMicroseconds());
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(100);
+ }
+ CHANGE_CURRENT_RUNTIME_COUNTER(stats(),
+ RuntimeCallCounterId::kTestCounter2);
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(0, counter2()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(0, counter2()->time().InMicroseconds());
+ }
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(1, counter2()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(50, counter2()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, BasicPrintAndSnapshot) {
+ std::ostringstream out;
+ stats()->Print(out);
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, counter2()->count());
+ EXPECT_EQ(0, counter3()->count());
+ EXPECT_EQ(0, counter()->time().InMicroseconds());
+ EXPECT_EQ(0, counter2()->time().InMicroseconds());
+ EXPECT_EQ(0, counter3()->time().InMicroseconds());
+
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(50);
+ stats()->Print(out);
+ }
+ stats()->Print(out);
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(0, counter2()->count());
+ EXPECT_EQ(0, counter3()->count());
+ EXPECT_EQ(50, counter()->time().InMicroseconds());
+ EXPECT_EQ(0, counter2()->time().InMicroseconds());
+ EXPECT_EQ(0, counter3()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, PrintAndSnapshot) {
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(100);
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, counter()->time().InMicroseconds());
+ {
+ RCS_SCOPE(stats(), counter_id2());
+ EXPECT_EQ(0, counter2()->count());
+ EXPECT_EQ(0, counter2()->time().InMicroseconds());
+ Sleep(50);
+
+ // This calls Snapshot on the current active timer and sychronizes and
+ // commits the whole timer stack.
+ std::ostringstream out;
+ stats()->Print(out);
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, counter2()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(50, counter2()->time().InMicroseconds());
+ // Calling Print several times shouldn't have a (big) impact on the
+ // measured times.
+ stats()->Print(out);
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, counter2()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(50, counter2()->time().InMicroseconds());
+
+ Sleep(50);
+ stats()->Print(out);
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, counter2()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(100, counter2()->time().InMicroseconds());
+ Sleep(50);
+ }
+ Sleep(50);
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(1, counter2()->count());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(150, counter2()->time().InMicroseconds());
+ Sleep(50);
+ }
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(1, counter2()->count());
+ EXPECT_EQ(200, counter()->time().InMicroseconds());
+ EXPECT_EQ(150, counter2()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, NestedScopes) {
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(100);
+ {
+ RCS_SCOPE(stats(), counter_id2());
+ Sleep(100);
+ {
+ RCS_SCOPE(stats(), counter_id3());
+ Sleep(50);
+ }
+ Sleep(50);
+ {
+ RCS_SCOPE(stats(), counter_id3());
+ Sleep(50);
+ }
+ Sleep(50);
+ }
+ Sleep(100);
+ {
+ RCS_SCOPE(stats(), counter_id2());
+ Sleep(100);
+ }
+ Sleep(50);
+ }
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(2, counter2()->count());
+ EXPECT_EQ(2, counter3()->count());
+ EXPECT_EQ(250, counter()->time().InMicroseconds());
+ EXPECT_EQ(300, counter2()->time().InMicroseconds());
+ EXPECT_EQ(100, counter3()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, BasicJavaScript) {
+ RuntimeCallCounter* counter =
+ stats()->GetCounter(RuntimeCallCounterId::kJS_Execution);
+ EXPECT_EQ(0, counter->count());
+ EXPECT_EQ(0, counter->time().InMicroseconds());
+
+ {
+ NativeTimeScope native_timer_scope;
+ RunJS("function f() { return 1; };");
+ }
+ EXPECT_EQ(1, counter->count());
+ int64_t time = counter->time().InMicroseconds();
+ EXPECT_LT(0, time);
+
+ {
+ NativeTimeScope native_timer_scope;
+ RunJS("f();");
+ }
+ EXPECT_EQ(2, counter->count());
+ EXPECT_LE(time, counter->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, FunctionLengthGetter) {
+ RuntimeCallCounter* getter_counter =
+ stats()->GetCounter(RuntimeCallCounterId::kFunctionLengthGetter);
+ EXPECT_EQ(0, getter_counter->count());
+ EXPECT_EQ(0, js_counter()->count());
+ EXPECT_EQ(0, getter_counter->time().InMicroseconds());
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+
+ {
+ NativeTimeScope native_timer_scope;
+ RunJS("function f(array) { return array.length; };");
+ }
+ EXPECT_EQ(0, getter_counter->count());
+ EXPECT_EQ(1, js_counter()->count());
+ EXPECT_EQ(0, getter_counter->time().InMicroseconds());
+ int64_t js_time = js_counter()->time().InMicroseconds();
+ EXPECT_LT(0, js_time);
+
+ {
+ NativeTimeScope native_timer_scope;
+ RunJS("f.length;");
+ }
+ EXPECT_EQ(1, getter_counter->count());
+ EXPECT_EQ(2, js_counter()->count());
+ EXPECT_LE(0, getter_counter->time().InMicroseconds());
+ EXPECT_LE(js_time, js_counter()->time().InMicroseconds());
+
+ {
+ NativeTimeScope native_timer_scope;
+ RunJS("for (let i = 0; i < 50; i++) { f.length };");
+ }
+ EXPECT_EQ(51, getter_counter->count());
+ EXPECT_EQ(3, js_counter()->count());
+
+ {
+ NativeTimeScope native_timer_scope;
+ RunJS("for (let i = 0; i < 1000; i++) { f.length; };");
+ }
+ EXPECT_EQ(1051, getter_counter->count());
+ EXPECT_EQ(4, js_counter()->count());
+}
+
+namespace {
+static RuntimeCallStatsTest* current_test;
+static const int kCustomCallbackTime = 1234;
+static void CustomCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
+ RCS_SCOPE(current_test->stats(), current_test->counter_id2());
+ current_test->Sleep(kCustomCallbackTime);
+}
+} // namespace
+
+TEST_F(RuntimeCallStatsTest, CallbackFunction) {
+ FLAG_allow_natives_syntax = true;
+ FLAG_incremental_marking = false;
+
+ RuntimeCallCounter* callback_counter =
+ stats()->GetCounter(RuntimeCallCounterId::kFunctionCallback);
+
+ current_test = this;
+ // Set up a function template with a custom callback.
+ v8::Isolate* isolate = v8_isolate();
+ v8::HandleScope scope(isolate);
+
+ v8::Local<v8::ObjectTemplate> object_template =
+ v8::ObjectTemplate::New(isolate);
+ object_template->Set(isolate, "callback",
+ v8::FunctionTemplate::New(isolate, CustomCallback));
+ v8::Local<v8::Object> object =
+ object_template->NewInstance(v8_context()).ToLocalChecked();
+ SetGlobalProperty("custom_object", object);
+
+ EXPECT_EQ(0, js_counter()->count());
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, callback_counter->count());
+ EXPECT_EQ(0, counter2()->count());
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(100);
+ RunJS("custom_object.callback();");
+ }
+ EXPECT_EQ(1, js_counter()->count());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(1, callback_counter->count());
+ EXPECT_EQ(1, counter2()->count());
+ // Given that no native timers are used, only the two scopes explitly
+ // mentioned above will track the time.
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+ EXPECT_EQ(0, callback_counter->time().InMicroseconds());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(kCustomCallbackTime, counter2()->time().InMicroseconds());
+
+ RunJS("for (let i = 0; i < 9; i++) { custom_object.callback(); };");
+ EXPECT_EQ(2, js_counter()->count());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(10, callback_counter->count());
+ EXPECT_EQ(10, counter2()->count());
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+ EXPECT_EQ(0, callback_counter->time().InMicroseconds());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(kCustomCallbackTime * 10, counter2()->time().InMicroseconds());
+
+ RunJS("for (let i = 0; i < 4000; i++) { custom_object.callback(); };");
+ EXPECT_EQ(3, js_counter()->count());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(4010, callback_counter->count());
+ EXPECT_EQ(4010, counter2()->count());
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+ EXPECT_EQ(0, callback_counter->time().InMicroseconds());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(kCustomCallbackTime * 4010, counter2()->time().InMicroseconds());
+
+ // Check that the FunctionCallback tracing also works properly
+ // when the `callback` is called from optimized code.
+ RunJS(
+ "function wrap(o) { return o.callback(); };\n"
+ "%PrepareFunctionForOptimization(wrap);\n"
+ "wrap(custom_object);\n"
+ "wrap(custom_object);\n"
+ "%OptimizeFunctionOnNextCall(wrap);\n"
+ "wrap(custom_object);\n");
+ EXPECT_EQ(4, js_counter()->count());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(4013, callback_counter->count());
+ EXPECT_EQ(4013, counter2()->count());
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+ EXPECT_EQ(0, callback_counter->time().InMicroseconds());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(kCustomCallbackTime * 4013, counter2()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, ApiGetter) {
+ FLAG_allow_natives_syntax = true;
+ FLAG_incremental_marking = false;
+
+ RuntimeCallCounter* callback_counter =
+ stats()->GetCounter(RuntimeCallCounterId::kFunctionCallback);
+ current_test = this;
+ // Set up a function template with an api accessor.
+ v8::Isolate* isolate = v8_isolate();
+ v8::HandleScope scope(isolate);
+
+ v8::Local<v8::ObjectTemplate> object_template =
+ v8::ObjectTemplate::New(isolate);
+ object_template->SetAccessorProperty(
+ NewString("apiGetter"),
+ v8::FunctionTemplate::New(isolate, CustomCallback));
+ v8::Local<v8::Object> object =
+ object_template->NewInstance(v8_context()).ToLocalChecked();
+ SetGlobalProperty("custom_object", object);
+
+ // TODO(cbruni): Check api accessor timer (one above the custom callback).
+ EXPECT_EQ(0, js_counter()->count());
+ EXPECT_EQ(0, counter()->count());
+ EXPECT_EQ(0, callback_counter->count());
+ EXPECT_EQ(0, counter2()->count());
+
+ {
+ RCS_SCOPE(stats(), counter_id());
+ Sleep(100);
+ RunJS("custom_object.apiGetter;");
+ }
+
+ EXPECT_EQ(1, js_counter()->count());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(1, callback_counter->count());
+ EXPECT_EQ(1, counter2()->count());
+ // Given that no native timers are used, only the two scopes explitly
+ // mentioned above will track the time.
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(0, callback_counter->time().InMicroseconds());
+ EXPECT_EQ(kCustomCallbackTime, counter2()->time().InMicroseconds());
+
+ RunJS("for (let i = 0; i < 9; i++) { custom_object.apiGetter };");
+
+ EXPECT_EQ(2, js_counter()->count());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(10, callback_counter->count());
+ EXPECT_EQ(10, counter2()->count());
+
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(0, callback_counter->time().InMicroseconds());
+ EXPECT_EQ(kCustomCallbackTime * 10, counter2()->time().InMicroseconds());
+
+ RunJS("for (let i = 0; i < 4000; i++) { custom_object.apiGetter };");
+
+ EXPECT_EQ(3, js_counter()->count());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(4010, callback_counter->count());
+ EXPECT_EQ(4010, counter2()->count());
+
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(0, callback_counter->time().InMicroseconds());
+ EXPECT_EQ(kCustomCallbackTime * 4010, counter2()->time().InMicroseconds());
+
+ // Check that the FunctionCallback tracing also works properly
+ // when the `apiGetter` is called from optimized code.
+ RunJS(
+ "function wrap(o) { return o.apiGetter; };\n"
+ "%PrepareFunctionForOptimization(wrap);\n"
+ "wrap(custom_object);\n"
+ "wrap(custom_object);\n"
+ "%OptimizeFunctionOnNextCall(wrap);\n"
+ "wrap(custom_object);\n");
+
+ EXPECT_EQ(4, js_counter()->count());
+ EXPECT_EQ(1, counter()->count());
+ EXPECT_EQ(4013, callback_counter->count());
+ EXPECT_EQ(4013, counter2()->count());
+
+ EXPECT_EQ(0, js_counter()->time().InMicroseconds());
+ EXPECT_EQ(100, counter()->time().InMicroseconds());
+ EXPECT_EQ(0, callback_counter->time().InMicroseconds());
+ EXPECT_EQ(kCustomCallbackTime * 4013, counter2()->time().InMicroseconds());
+}
+
+TEST_F(RuntimeCallStatsTest, GarbageCollection) {
+ FLAG_expose_gc = true;
+ // Disable concurrent GC threads because otherwise they may continue
+ // running after this test completes and race with is_runtime_stats_enabled()
+ // updates.
+ FLAG_single_threaded_gc = true;
+ v8::Isolate* isolate = v8_isolate();
+ RunJS(
+ "let root = [];"
+ "for (let i = 0; i < 10; i++) root.push((new Array(1000)).fill(0));"
+ "root.push((new Array(1000000)).fill(0));"
+ "((new Array(1000000)).fill(0));");
+ isolate->RequestGarbageCollectionForTesting(
+ v8::Isolate::kFullGarbageCollection);
+ isolate->RequestGarbageCollectionForTesting(
+ v8::Isolate::kFullGarbageCollection);
+}
+
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/test/unittests/regexp/regexp-unittest.cc b/deps/v8/test/unittests/regexp/regexp-unittest.cc
new file mode 100644
index 0000000000..32c981b269
--- /dev/null
+++ b/deps/v8/test/unittests/regexp/regexp-unittest.cc
@@ -0,0 +1,39 @@
+// Copyright 2021 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.
+
+#include "src/objects/js-regexp-inl.h"
+#include "test/unittests/test-utils.h"
+
+namespace v8 {
+namespace internal {
+
+TEST_F(TestWithNativeContext, ConvertRegExpFlagsToString) {
+ RunJS("let regexp = new RegExp(/ab+c/ig);");
+ Handle<JSRegExp> regexp = RunJS<JSRegExp>("regexp");
+ Handle<String> flags = RunJS<String>("regexp.flags");
+ Handle<String> converted_flags =
+ JSRegExp::StringFromFlags(isolate(), regexp->GetFlags());
+ EXPECT_TRUE(String::Equals(isolate(), flags, converted_flags));
+}
+
+TEST_F(TestWithNativeContext, ConvertRegExpFlagsToStringNoFlags) {
+ RunJS("let regexp = new RegExp(/ab+c/);");
+ Handle<JSRegExp> regexp = RunJS<JSRegExp>("regexp");
+ Handle<String> flags = RunJS<String>("regexp.flags");
+ Handle<String> converted_flags =
+ JSRegExp::StringFromFlags(isolate(), regexp->GetFlags());
+ EXPECT_TRUE(String::Equals(isolate(), flags, converted_flags));
+}
+
+TEST_F(TestWithNativeContext, ConvertRegExpFlagsToStringAllFlags) {
+ RunJS("let regexp = new RegExp(/ab+c/dgimsuy);");
+ Handle<JSRegExp> regexp = RunJS<JSRegExp>("regexp");
+ Handle<String> flags = RunJS<String>("regexp.flags");
+ Handle<String> converted_flags =
+ JSRegExp::StringFromFlags(isolate(), regexp->GetFlags());
+ EXPECT_TRUE(String::Equals(isolate(), flags, converted_flags));
+}
+
+} // namespace internal
+} // namespace v8
diff --git a/deps/v8/test/unittests/regress/regress-crbug-1041240-unittest.cc b/deps/v8/test/unittests/regress/regress-crbug-1041240-unittest.cc
index 0f99632df5..e5b35152cf 100644
--- a/deps/v8/test/unittests/regress/regress-crbug-1041240-unittest.cc
+++ b/deps/v8/test/unittests/regress/regress-crbug-1041240-unittest.cc
@@ -12,8 +12,8 @@ namespace internal {
using NewUninitializedFixedArrayTest = TestWithIsolateAndZone;
TEST_F(NewUninitializedFixedArrayTest, ThrowOnNegativeLength) {
- ASSERT_DEATH_IF_SUPPORTED({ factory()->NewUninitializedFixedArray(-1); },
- "Fatal javascript OOM in invalid array length");
+ ASSERT_DEATH_IF_SUPPORTED({ factory()->NewFixedArray(-1); },
+ "Fatal JavaScript invalid size error -1");
}
} // namespace internal
diff --git a/deps/v8/test/unittests/regress/regress-crbug-938251-unittest.cc b/deps/v8/test/unittests/regress/regress-crbug-938251-unittest.cc
index c5109d92c5..62bcf89935 100644
--- a/deps/v8/test/unittests/regress/regress-crbug-938251-unittest.cc
+++ b/deps/v8/test/unittests/regress/regress-crbug-938251-unittest.cc
@@ -13,7 +13,7 @@ using NewFixedDoubleArrayTest = TestWithIsolateAndZone;
TEST_F(NewFixedDoubleArrayTest, ThrowOnNegativeLength) {
ASSERT_DEATH_IF_SUPPORTED({ factory()->NewFixedDoubleArray(-1); },
- "Fatal javascript OOM in invalid array length");
+ "Fatal JavaScript invalid size error -1");
}
} // namespace internal
diff --git a/deps/v8/test/unittests/test-utils.cc b/deps/v8/test/unittests/test-utils.cc
index 80a773ed7e..4aa9628b67 100644
--- a/deps/v8/test/unittests/test-utils.cc
+++ b/deps/v8/test/unittests/test-utils.cc
@@ -68,7 +68,7 @@ namespace internal {
SaveFlags::SaveFlags() {
// For each flag, save the current flag value.
#define FLAG_MODE_APPLY(ftype, ctype, nam, def, cmt) SAVED_##nam = FLAG_##nam;
-#include "src/flags/flag-definitions.h" // NOLINT
+#include "src/flags/flag-definitions.h"
#undef FLAG_MODE_APPLY
}
diff --git a/deps/v8/test/unittests/test-utils.h b/deps/v8/test/unittests/test-utils.h
index 541574df6d..74eb1bad37 100644
--- a/deps/v8/test/unittests/test-utils.h
+++ b/deps/v8/test/unittests/test-utils.h
@@ -239,7 +239,7 @@ class V8_NODISCARD SaveFlags {
private:
#define FLAG_MODE_APPLY(ftype, ctype, nam, def, cmt) ctype SAVED_##nam;
-#include "src/flags/flag-definitions.h" // NOLINT
+#include "src/flags/flag-definitions.h"
#undef FLAG_MODE_APPLY
};
diff --git a/deps/v8/test/unittests/unittests.status b/deps/v8/test/unittests/unittests.status
index 9acc942ea5..c10f1a2827 100644
--- a/deps/v8/test/unittests/unittests.status
+++ b/deps/v8/test/unittests/unittests.status
@@ -4,12 +4,6 @@
[
##############################################################################
-[ALWAYS, {
- # https://crbug.com/v8/11413
- 'RuntimeCallStatsTest.GarbageCollection': [PASS, ['verify_csa', SKIP]],
-}], # ALWAYS
-
-##############################################################################
['system == macos and asan', {
# BUG(820416).
'BitsDeathTest*': [SKIP],
@@ -35,9 +29,6 @@
# Test uses fancy signal handling. Needs investigation.
'MemoryAllocationPermissionsTest.DoTest': [SKIP],
- # cppgc::internal::kGuardPageSize is smaller than kAppleArmPageSize.
- 'PageMemoryRegionTest.PlatformUsesGuardPages': [FAIL],
-
# Time tick resolution appears to be ~42 microseconds. Tests expect 1 us.
'TimeTicks.NowResolution': [FAIL],
'RuntimeCallStatsTest.BasicJavaScript': [SKIP],
@@ -94,4 +85,34 @@
'LoggingTest.SourceLocation':[SKIP] # issue-174
}],
+################################################################################
+['third_party_heap', {
+ # Tests on OptimizingCompileDispatcher
+ 'OptimizingCompileDispatcherTest.NonBlockingFlush': [SKIP],
+ 'OptimizingCompileDispatcherTest.Construct': [SKIP],
+ # Test V8 stock GC
+ 'SpacesTest.CompactionSpaceMerge': [SKIP],
+ # Requires --concurrent_inlining / --finalize_streaming_on_background:
+ 'LocalFactoryTest.AstConsString_CreatesConsString': [SKIP],
+ 'LocalFactoryTest.AstRawString_IsInternalized': [SKIP],
+ 'LocalFactoryTest.EagerFunction': [SKIP],
+ 'LocalFactoryTest.EmptyScript': [SKIP],
+ 'LocalFactoryTest.GCDuringPublish': [SKIP],
+ 'LocalFactoryTest.ImplicitNameFunction': [SKIP],
+ 'LocalFactoryTest.LazyFunction': [SKIP],
+ 'LocalFactoryTest.OneByteInternalizedString_DuplicateIsDeduplicated': [SKIP],
+ 'LocalFactoryTest.OneByteInternalizedString_IsAddedToStringTable': [SKIP],
+ # Requires write barriers
+ 'SpacesTest.WriteBarrierFromHeapObject': [SKIP],
+ 'SpacesTest.WriteBarrierInYoungGenerationToSpace': [SKIP],
+ 'SpacesTest.WriteBarrierInYoungGenerationFromSpace': [SKIP],
+ # Requires a second isolate
+ 'ValueSerializerTest.DecodeArrayBufferOOM': [SKIP],
+ # Performs GC
+ 'APIExceptionTest.ExceptionMessageDoesNotKeepContextAlive': [SKIP],
+ 'LocalHeapTest.GCEpilogue': [SKIP],
+ 'UnifiedHeapDetachedTest.AllocationBeforeConfigureHeap': [SKIP],
+ 'UnifiedHeapTest.FindingV8ToBlinkReference': [SKIP],
+}], # third_party_heap
+
]
diff --git a/deps/v8/test/unittests/utils/allocation-unittest.cc b/deps/v8/test/unittests/utils/allocation-unittest.cc
index 8110b1f2cd..ac72ab38f1 100644
--- a/deps/v8/test/unittests/utils/allocation-unittest.cc
+++ b/deps/v8/test/unittests/utils/allocation-unittest.cc
@@ -7,8 +7,8 @@
#if V8_OS_POSIX
#include <setjmp.h>
#include <signal.h>
-#include <unistd.h> // NOLINT
-#endif // V8_OS_POSIX
+#include <unistd.h>
+#endif // V8_OS_POSIX
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/deps/v8/test/unittests/wasm/function-body-decoder-unittest.cc b/deps/v8/test/unittests/wasm/function-body-decoder-unittest.cc
index 5dff8b6b87..7dbb0e91d0 100644
--- a/deps/v8/test/unittests/wasm/function-body-decoder-unittest.cc
+++ b/deps/v8/test/unittests/wasm/function-body-decoder-unittest.cc
@@ -158,19 +158,20 @@ class TestModuleBuilder {
}
byte AddPassiveElementSegment(wasm::ValueType type) {
- mod.elem_segments.emplace_back(false);
+ mod.elem_segments.emplace_back(type, false);
auto& init = mod.elem_segments.back();
- init.type = type;
// Add 5 empty elements.
for (uint32_t j = 0; j < 5; j++) {
- init.entries.push_back(WasmElemSegment::kNullIndex);
+ init.entries.push_back(
+ WasmInitExpr::RefNullConst(type.heap_representation()));
}
return static_cast<byte>(mod.elem_segments.size() - 1);
}
byte AddDeclarativeElementSegment() {
- mod.elem_segments.emplace_back(true);
- mod.elem_segments.back().entries.push_back(WasmElemSegment::kNullIndex);
+ mod.elem_segments.emplace_back(kWasmFuncRef, true);
+ mod.elem_segments.back().entries.push_back(
+ WasmInitExpr::RefNullConst(HeapType::kFunc));
return static_cast<byte>(mod.elem_segments.size() - 1);
}
@@ -1796,7 +1797,6 @@ TEST_F(FunctionBodyDecoderTest, IncompleteIndirectReturnCall) {
}
TEST_F(FunctionBodyDecoderTest, MultiReturn) {
- WASM_FEATURE_SCOPE(mv);
ValueType storage[] = {kWasmI32, kWasmI32};
FunctionSig sig_ii_v(2, 0, storage);
FunctionSig sig_v_ii(0, 2, storage);
@@ -1810,7 +1810,6 @@ TEST_F(FunctionBodyDecoderTest, MultiReturn) {
}
TEST_F(FunctionBodyDecoderTest, MultiReturnType) {
- WASM_FEATURE_SCOPE(mv);
for (size_t a = 0; a < arraysize(kValueTypes); a++) {
for (size_t b = 0; b < arraysize(kValueTypes); b++) {
for (size_t c = 0; c < arraysize(kValueTypes); c++) {
@@ -1916,6 +1915,50 @@ TEST_F(FunctionBodyDecoderTest, IndirectCallsWithMismatchedSigs2) {
"call_indirect: immediate table #1 is not of a function type");
}
+TEST_F(FunctionBodyDecoderTest, TablesWithFunctionSubtyping) {
+ WASM_FEATURE_SCOPE(reftypes);
+ WASM_FEATURE_SCOPE(typed_funcref);
+ WASM_FEATURE_SCOPE(gc);
+ EXPERIMENTAL_FLAG_SCOPE(gc);
+
+ byte empty_struct = builder.AddStruct({});
+ byte super_struct = builder.AddStruct({F(kWasmI32, false)});
+ byte sub_struct = builder.AddStruct({F(kWasmI32, false), F(kWasmF64, false)});
+
+ byte table_type = builder.AddSignature(
+ FunctionSig::Build(zone(), {ValueType::Ref(super_struct, kNullable)},
+ {ValueType::Ref(sub_struct, kNullable)}));
+ byte table_supertype = builder.AddSignature(
+ FunctionSig::Build(zone(), {ValueType::Ref(empty_struct, kNullable)},
+ {ValueType::Ref(sub_struct, kNullable)}));
+ auto function_sig =
+ FunctionSig::Build(zone(), {ValueType::Ref(sub_struct, kNullable)},
+ {ValueType::Ref(super_struct, kNullable)});
+ byte function_type = builder.AddSignature(function_sig);
+
+ byte function = builder.AddFunction(function_sig);
+
+ byte table = builder.InitializeTable(ValueType::Ref(table_type, kNullable));
+
+ // We can call-indirect from a typed function table with an immediate type
+ // that is a subtype of the table type.
+ ExpectValidates(
+ FunctionSig::Build(zone(), {ValueType::Ref(sub_struct, kNullable)}, {}),
+ {WASM_CALL_INDIRECT_TABLE(
+ table, function_type,
+ WASM_STRUCT_NEW_DEFAULT(super_struct, WASM_RTT_CANON(super_struct)),
+ WASM_ZERO)});
+
+ // table.set's subtyping works as expected.
+ ExpectValidates(sigs.v_i(), {WASM_TABLE_SET(0, WASM_LOCAL_GET(0),
+ WASM_REF_FUNC(function))});
+ // table.get's subtyping works as expected.
+ ExpectValidates(
+ FunctionSig::Build(zone(), {ValueType::Ref(table_supertype, kNullable)},
+ {kWasmI32}),
+ {WASM_TABLE_GET(0, WASM_LOCAL_GET(0))});
+}
+
TEST_F(FunctionBodyDecoderTest, IndirectCallsWithoutTableCrash) {
const FunctionSig* sig = sigs.i_i();
@@ -2602,6 +2645,29 @@ TEST_F(FunctionBodyDecoderTest, BrTable2b) {
WASM_I32V_2(67), 1, BR_TARGET(0), BR_TARGET(1))))});
}
+TEST_F(FunctionBodyDecoderTest, BrTableSubtyping) {
+ WASM_FEATURE_SCOPE(reftypes);
+ WASM_FEATURE_SCOPE(typed_funcref);
+ WASM_FEATURE_SCOPE(gc);
+
+ TestModuleBuilder builder;
+ byte supertype1 = builder.AddStruct({F(kWasmI8, true), F(kWasmI16, false)});
+ byte supertype2 = builder.AddStruct({F(kWasmI8, true)});
+ byte subtype = builder.AddStruct(
+ {F(kWasmI8, true), F(kWasmI16, false), F(kWasmI32, true)});
+ module = builder.module();
+ ExpectValidates(
+ sigs.v_v(),
+ {WASM_BLOCK_R(
+ wasm::ValueType::Ref(supertype1, kNonNullable),
+ WASM_BLOCK_R(
+ wasm::ValueType::Ref(supertype2, kNonNullable),
+ WASM_STRUCT_NEW_DEFAULT(subtype, WASM_RTT_CANON(subtype)),
+ WASM_BR_TABLE(WASM_I32V(5), 1, BR_TARGET(0), BR_TARGET(1))),
+ WASM_UNREACHABLE),
+ WASM_DROP});
+}
+
TEST_F(FunctionBodyDecoderTest, BrTable_off_end) {
static byte code[] = {B1(WASM_BR_TABLE(WASM_LOCAL_GET(0), 0, BR_TARGET(0)))};
for (size_t len = 1; len < sizeof(code); len++) {
@@ -2957,7 +3023,6 @@ TEST_F(FunctionBodyDecoderTest, TryDelegate) {
#undef WASM_TRY_OP
TEST_F(FunctionBodyDecoderTest, MultiValBlock1) {
- WASM_FEATURE_SCOPE(mv);
byte sig0 = builder.AddSignature(sigs.ii_v());
ExpectValidates(
sigs.i_ii(),
@@ -2975,7 +3040,6 @@ TEST_F(FunctionBodyDecoderTest, MultiValBlock1) {
}
TEST_F(FunctionBodyDecoderTest, MultiValBlock2) {
- WASM_FEATURE_SCOPE(mv);
byte sig0 = builder.AddSignature(sigs.ii_v());
ExpectValidates(sigs.i_ii(),
{WASM_BLOCK_X(sig0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1)),
@@ -2994,7 +3058,6 @@ TEST_F(FunctionBodyDecoderTest, MultiValBlock2) {
}
TEST_F(FunctionBodyDecoderTest, MultiValBlockBr) {
- WASM_FEATURE_SCOPE(mv);
byte sig0 = builder.AddSignature(sigs.ii_v());
ExpectFailure(sigs.i_ii(), {WASM_BLOCK_X(sig0, WASM_LOCAL_GET(0), WASM_BR(0)),
kExprI32Add});
@@ -3004,7 +3067,6 @@ TEST_F(FunctionBodyDecoderTest, MultiValBlockBr) {
}
TEST_F(FunctionBodyDecoderTest, MultiValLoop1) {
- WASM_FEATURE_SCOPE(mv);
byte sig0 = builder.AddSignature(sigs.ii_v());
ExpectValidates(
sigs.i_ii(),
@@ -3021,7 +3083,6 @@ TEST_F(FunctionBodyDecoderTest, MultiValLoop1) {
}
TEST_F(FunctionBodyDecoderTest, MultiValIf) {
- WASM_FEATURE_SCOPE(mv);
byte sig0 = builder.AddSignature(sigs.ii_v());
ExpectValidates(
sigs.i_ii(),
@@ -3081,7 +3142,6 @@ TEST_F(FunctionBodyDecoderTest, MultiValIf) {
}
TEST_F(FunctionBodyDecoderTest, BlockParam) {
- WASM_FEATURE_SCOPE(mv);
byte sig1 = builder.AddSignature(sigs.i_i());
byte sig2 = builder.AddSignature(sigs.i_ii());
ExpectValidates(
@@ -3108,7 +3168,6 @@ TEST_F(FunctionBodyDecoderTest, BlockParam) {
}
TEST_F(FunctionBodyDecoderTest, LoopParam) {
- WASM_FEATURE_SCOPE(mv);
byte sig1 = builder.AddSignature(sigs.i_i());
byte sig2 = builder.AddSignature(sigs.i_ii());
ExpectValidates(sigs.i_ii(), {WASM_LOCAL_GET(0),
@@ -3134,7 +3193,6 @@ TEST_F(FunctionBodyDecoderTest, LoopParam) {
}
TEST_F(FunctionBodyDecoderTest, LoopParamBr) {
- WASM_FEATURE_SCOPE(mv);
byte sig1 = builder.AddSignature(sigs.i_i());
byte sig2 = builder.AddSignature(sigs.i_ii());
ExpectValidates(sigs.i_ii(),
@@ -3156,7 +3214,6 @@ TEST_F(FunctionBodyDecoderTest, LoopParamBr) {
}
TEST_F(FunctionBodyDecoderTest, IfParam) {
- WASM_FEATURE_SCOPE(mv);
byte sig1 = builder.AddSignature(sigs.i_i());
byte sig2 = builder.AddSignature(sigs.i_ii());
ExpectValidates(sigs.i_ii(),
@@ -3785,7 +3842,32 @@ TEST_F(FunctionBodyDecoderTest, BrOnNull) {
WASM_I32V(0), kExprSelectWithType, 1,
WASM_REF_TYPE(reps[0]))},
kAppendEnd,
- "expected 1 elements on the stack for br to @1, found 0");
+ "expected 1 elements on the stack for branch, found 0");
+}
+
+TEST_F(FunctionBodyDecoderTest, BrOnNonNull) {
+ WASM_FEATURE_SCOPE(reftypes);
+ WASM_FEATURE_SCOPE(typed_funcref);
+ WASM_FEATURE_SCOPE(gc);
+
+ const ValueType reps[] = {ValueType::Ref(HeapType::kFunc, kNonNullable),
+ ValueType::Ref(HeapType::kFunc, kNullable)};
+ const FunctionSig sig(1, 1, reps);
+ ExpectValidates(
+ &sig,
+ {WASM_BLOCK_R(reps[0], WASM_BR_ON_NON_NULL(0, WASM_LOCAL_GET(0)),
+ WASM_RETURN(WASM_REF_AS_NON_NULL(WASM_LOCAL_GET(0))))});
+
+ // Wrong branch type.
+ ExpectFailure(
+ &sig,
+ {WASM_BLOCK_I(WASM_BR_ON_NON_NULL(0, WASM_LOCAL_GET(0)),
+ WASM_RETURN(WASM_REF_AS_NON_NULL(WASM_LOCAL_GET(0))))},
+ kAppendEnd, "type error in branch[0] (expected i32, got (ref func))");
+
+ // br_on_non_null does not leave a value on the stack.
+ ExpectFailure(&sig, {WASM_BR_ON_NON_NULL(0, WASM_LOCAL_GET(0))}, kAppendEnd,
+ "expected 1 elements on the stack for fallthru, found 0");
}
TEST_F(FunctionBodyDecoderTest, GCStruct) {
@@ -3824,8 +3906,7 @@ TEST_F(FunctionBodyDecoderTest, GCStruct) {
&sig_r_v,
{WASM_STRUCT_NEW_WITH_RTT(struct_type_index, WASM_I32V(0), WASM_I32V(1),
WASM_RTT_CANON(struct_type_index))},
- kAppendEnd,
- "expected 1 elements on the stack for fallthru to @1, found 2");
+ kAppendEnd, "expected 1 elements on the stack for fallthru, found 2");
// Mistyped arguments.
ExpectFailure(&sig_v_r,
{WASM_STRUCT_NEW_WITH_RTT(struct_type_index, WASM_LOCAL_GET(0),
@@ -3871,7 +3952,7 @@ TEST_F(FunctionBodyDecoderTest, GCStruct) {
ExpectFailure(
&sig_f_r,
{WASM_STRUCT_GET(struct_type_index, field_index, WASM_LOCAL_GET(0))},
- kAppendEnd, "type error in merge[0] (expected f32, got i32)");
+ kAppendEnd, "type error in fallthru[0] (expected f32, got i32)");
/** struct.set **/
ExpectValidates(&sig_v_r, {WASM_STRUCT_SET(struct_type_index, field_index,
@@ -3897,7 +3978,7 @@ TEST_F(FunctionBodyDecoderTest, GCStruct) {
{WASM_STRUCT_SET(struct_type_index, field_index,
WASM_LOCAL_GET(0), WASM_I32V(0))},
kAppendEnd,
- "expected 1 elements on the stack for fallthru to @1, found 0");
+ "expected 1 elements on the stack for fallthru, found 0");
// Setting immutable field.
ExpectFailure(
sigs.v_v(),
@@ -4007,7 +4088,7 @@ TEST_F(FunctionBodyDecoderTest, GCArray) {
ExpectFailure(
&sig_f_r,
{WASM_ARRAY_GET(array_type_index, WASM_LOCAL_GET(0), WASM_I32V(5))},
- kAppendEnd, "type error in merge[0] (expected f32, got funcref)");
+ kAppendEnd, "type error in fallthru[0] (expected f32, got funcref)");
// array.get_s/u fail.
ExpectFailure(
@@ -4056,7 +4137,8 @@ TEST_F(FunctionBodyDecoderTest, GCArray) {
{WASM_ARRAY_LEN(array_type_index, WASM_LOCAL_GET(0))});
// Wrong return type.
ExpectFailure(&sig_f_r, {WASM_ARRAY_LEN(array_type_index, WASM_LOCAL_GET(0))},
- kAppendEnd, "type error in merge[0] (expected f32, got i32)");
+ kAppendEnd,
+ "type error in fallthru[0] (expected f32, got i32)");
// Non-array type index.
ExpectFailure(&sig_i_r,
{WASM_ARRAY_LEN(struct_type_index, WASM_LOCAL_GET(0))},
@@ -4178,7 +4260,7 @@ TEST_F(FunctionBodyDecoderTest, RttCanon) {
ValueType rtt2 = ValueType::Rtt(type_index, 1);
FunctionSig sig2(1, 0, &rtt2);
ExpectFailure(&sig2, {WASM_RTT_CANON(type_index)}, kAppendEnd,
- "type error in merge[0]");
+ "type error in fallthru[0]");
}
}
@@ -4249,7 +4331,6 @@ TEST_F(FunctionBodyDecoderTest, RefTestCast) {
WASM_FEATURE_SCOPE(reftypes);
WASM_FEATURE_SCOPE(typed_funcref);
WASM_FEATURE_SCOPE(gc);
- WASM_FEATURE_SCOPE(eh);
TestModuleBuilder builder;
module = builder.module();
@@ -4342,6 +4423,77 @@ TEST_F(FunctionBodyDecoderTest, RefTestCast) {
"found i32.const of type i32");
}
+TEST_F(FunctionBodyDecoderTest, BrOnCastOrCastFail) {
+ WASM_FEATURE_SCOPE(reftypes);
+ WASM_FEATURE_SCOPE(typed_funcref);
+ WASM_FEATURE_SCOPE(gc);
+
+ TestModuleBuilder builder;
+ module = builder.module();
+
+ byte super_struct = builder.AddStruct({F(kWasmI16, true)});
+ byte sub_struct = builder.AddStruct({F(kWasmI16, true), F(kWasmI32, false)});
+
+ ValueType supertype = ValueType::Ref(super_struct, kNullable);
+ ValueType subtype = ValueType::Ref(sub_struct, kNullable);
+
+ ExpectValidates(
+ FunctionSig::Build(this->zone(), {kWasmI32, subtype}, {supertype}),
+ {WASM_I32V(42), WASM_LOCAL_GET(0),
+ WASM_BR_ON_CAST(0, WASM_RTT_CANON(sub_struct)),
+ WASM_RTT_CANON(sub_struct), WASM_GC_OP(kExprRefCast)});
+ ExpectValidates(
+ FunctionSig::Build(this->zone(), {kWasmI32, supertype}, {supertype}),
+ {WASM_I32V(42), WASM_LOCAL_GET(0),
+ WASM_BR_ON_CAST_FAIL(0, WASM_RTT_CANON(sub_struct))});
+
+ // Wrong branch type.
+ ExpectFailure(
+ FunctionSig::Build(this->zone(), {}, {supertype}),
+ {WASM_LOCAL_GET(0), WASM_BR_ON_CAST(0, WASM_RTT_CANON(sub_struct)),
+ WASM_UNREACHABLE},
+ kAppendEnd, "br_on_cast must target a branch of arity at least 1");
+ ExpectFailure(
+ FunctionSig::Build(this->zone(), {subtype}, {supertype}),
+ {WASM_I32V(42), WASM_LOCAL_GET(0),
+ WASM_BR_ON_CAST_FAIL(0, WASM_RTT_CANON(sub_struct))},
+ kAppendEnd,
+ "type error in branch[0] (expected (ref null 1), got (ref null 0))");
+
+ // Wrong fallthrough type.
+ ExpectFailure(
+ FunctionSig::Build(this->zone(), {subtype}, {supertype}),
+ {WASM_LOCAL_GET(0), WASM_BR_ON_CAST(0, WASM_RTT_CANON(sub_struct))},
+ kAppendEnd,
+ "type error in fallthru[0] (expected (ref null 1), got (ref null 0))");
+ ExpectFailure(
+ FunctionSig::Build(this->zone(), {supertype}, {supertype}),
+ {WASM_BLOCK_I(WASM_LOCAL_GET(0),
+ WASM_BR_ON_CAST_FAIL(0, WASM_RTT_CANON(sub_struct)))},
+ kAppendEnd, "type error in branch[0] (expected i32, got (ref null 0))");
+
+ // Argument type error.
+ ExpectFailure(
+ FunctionSig::Build(this->zone(), {subtype}, {kWasmAnyRef}),
+ {WASM_LOCAL_GET(0), WASM_BR_ON_CAST(0, WASM_RTT_CANON(sub_struct)),
+ WASM_RTT_CANON(sub_struct), WASM_GC_OP(kExprRefCast)},
+ kAppendEnd,
+ "br_on_cast[0] expected subtype of (ref null func) or (ref null data), "
+ "found local.get of type anyref");
+ ExpectFailure(
+ FunctionSig::Build(this->zone(), {supertype}, {kWasmAnyRef}),
+ {WASM_LOCAL_GET(0), WASM_BR_ON_CAST_FAIL(0, WASM_RTT_CANON(sub_struct))},
+ kAppendEnd,
+ "br_on_cast_fail[0] expected subtype of (ref null func) or (ref null "
+ "data), found local.get of type anyref");
+
+ // Trivial rtt type error.
+ ExpectFailure(FunctionSig::Build(this->zone(), {supertype}, {supertype}),
+ {WASM_LOCAL_GET(0), WASM_BR_ON_CAST_FAIL(0, WASM_I64V(42))},
+ kAppendEnd,
+ "br_on_cast_fail[1] expected rtt, found i64.const of type i64");
+}
+
TEST_F(FunctionBodyDecoderTest, LocalTeeTyping) {
WASM_FEATURE_SCOPE(reftypes);
WASM_FEATURE_SCOPE(typed_funcref);
diff --git a/deps/v8/test/unittests/wasm/module-decoder-unittest.cc b/deps/v8/test/unittests/wasm/module-decoder-unittest.cc
index 3a9fec0c99..2547fe9a85 100644
--- a/deps/v8/test/unittests/wasm/module-decoder-unittest.cc
+++ b/deps/v8/test/unittests/wasm/module-decoder-unittest.cc
@@ -6,6 +6,7 @@
#include "src/handles/handles.h"
#include "src/objects/objects-inl.h"
+#include "src/wasm/branch-hint-map.h"
#include "src/wasm/wasm-engine.h"
#include "src/wasm/wasm-features.h"
#include "src/wasm/wasm-limits.h"
@@ -68,6 +69,11 @@ namespace module_decoder_unittest {
'H', 'i', 'n', 't', 's'), \
ADD_COUNT(__VA_ARGS__))
+#define SECTION_BRANCH_HINTS(...) \
+ SECTION(Unknown, \
+ ADD_COUNT('b', 'r', 'a', 'n', 'c', 'h', 'H', 'i', 'n', 't', 's'), \
+ __VA_ARGS__)
+
#define FAIL_IF_NO_EXPERIMENTAL_EH(data) \
do { \
ModuleResult result = DecodeModule((data), (data) + sizeof((data))); \
@@ -897,6 +903,7 @@ TEST_F(WasmModuleVerifyTest, GlobalRttSubOfGlobalTypeError) {
EXPECT_NOT_OK(result, "rtt.sub requires a supertype rtt on stack");
}
+#if !V8_OS_FUCHSIA
TEST_F(WasmModuleVerifyTest, GlobalRttSubIllegalParent) {
WASM_FEATURE_SCOPE(reftypes);
WASM_FEATURE_SCOPE(typed_funcref);
@@ -910,6 +917,7 @@ TEST_F(WasmModuleVerifyTest, GlobalRttSubIllegalParent) {
ModuleResult result = DecodeModule(data, data + sizeof(data));
EXPECT_NOT_OK(result, "rtt.sub requires a supertype rtt on stack");
}
+#endif // !V8_OS_FUCHSIA
TEST_F(WasmModuleVerifyTest, RttSubGlobalTypeError) {
WASM_FEATURE_SCOPE(reftypes);
@@ -1846,8 +1854,10 @@ TEST_F(WasmModuleVerifyTest, ElementSectionInitExternRefTableWithFuncRef) {
ONE_EMPTY_BODY,
};
- EXPECT_FAILURE_WITH_MSG(
- data, "Invalid element segment. Table 0 is not a super-type of funcref");
+ EXPECT_FAILURE_WITH_MSG(data,
+ "An active element segment with function indices as "
+ "elements must reference a table of type funcref. "
+ "Instead, table 0 of type externref is referenced.");
}
TEST_F(WasmModuleVerifyTest, ElementSectionDontInitExternRefImportedTable) {
@@ -1895,6 +1905,17 @@ TEST_F(WasmModuleVerifyTest, ElementSectionDontInitExternRefImportedTable) {
EXPECT_FAILURE(data);
}
+TEST_F(WasmModuleVerifyTest, ElementSectionGlobalGetOutOfBounds) {
+ WASM_FEATURE_SCOPE(reftypes);
+ static const byte data[] = {
+ SECTION(Element, ENTRY_COUNT(1),
+ 0x05, // Mode: Passive with expressions-as-elements
+ kFuncRefCode, // type
+ ENTRY_COUNT(1), // element count
+ kExprGlobalGet, 0x00, kExprEnd)}; // init. expression
+ EXPECT_FAILURE_WITH_MSG(data, "Out-of-bounds global index 0");
+}
+
TEST_F(WasmModuleVerifyTest, IndirectFunctionNoFunctions) {
static const byte data[] = {
// sig#0 -------------------------------------------------------
@@ -2094,6 +2115,30 @@ TEST_F(WasmModuleVerifyTest, TieringCompilationHints) {
result.value()->compilation_hints[2].top_tier);
}
+TEST_F(WasmModuleVerifyTest, BranchHinting) {
+ WASM_FEATURE_SCOPE(branch_hinting);
+ static const byte data[] = {
+ TYPE_SECTION(1, SIG_ENTRY_v_v), FUNCTION_SECTION(2, 0, 0),
+ SECTION_BRANCH_HINTS(ENTRY_COUNT(2), 0 /*func_index*/, 0 /*reserved*/,
+ ENTRY_COUNT(1), 1 /*likely*/, 2 /* if offset*/,
+ 1 /*func_index*/, 0 /*reserved*/, ENTRY_COUNT(1),
+ 0 /*unlikely*/, 4 /* br_if offset*/),
+ SECTION(Code, ENTRY_COUNT(2),
+ ADD_COUNT(0, /*no locals*/
+ WASM_IF(WASM_I32V_1(1), WASM_NOP), WASM_END),
+ ADD_COUNT(0, /*no locals*/
+ WASM_BLOCK(WASM_BR_IF(0, WASM_I32V_1(1))), WASM_END))};
+
+ ModuleResult result = DecodeModule(data, data + sizeof(data));
+ EXPECT_OK(result);
+
+ EXPECT_EQ(2u, result.value()->branch_hints.size());
+ EXPECT_EQ(WasmBranchHint::kLikely,
+ result.value()->branch_hints[0].GetHintFor(2));
+ EXPECT_EQ(WasmBranchHint::kUnlikely,
+ result.value()->branch_hints[1].GetHintFor(4));
+}
+
class WasmSignatureDecodeTest : public TestWithZone {
public:
WasmFeatures enabled_features_ = WasmFeatures::None();
@@ -2162,7 +2207,6 @@ TEST_F(WasmSignatureDecodeTest, Ok_t_t) {
TEST_F(WasmSignatureDecodeTest, Ok_i_tt) {
WASM_FEATURE_SCOPE(reftypes);
- WASM_FEATURE_SCOPE(mv);
for (size_t i = 0; i < arraysize(kValueTypes); i++) {
ValueTypePair p0_type = kValueTypes[i];
for (size_t j = 0; j < arraysize(kValueTypes); j++) {
@@ -2182,7 +2226,6 @@ TEST_F(WasmSignatureDecodeTest, Ok_i_tt) {
TEST_F(WasmSignatureDecodeTest, Ok_tt_tt) {
WASM_FEATURE_SCOPE(reftypes);
- WASM_FEATURE_SCOPE(mv);
for (size_t i = 0; i < arraysize(kValueTypes); i++) {
ValueTypePair p0_type = kValueTypes[i];
for (size_t j = 0; j < arraysize(kValueTypes); j++) {
@@ -2212,12 +2255,8 @@ TEST_F(WasmSignatureDecodeTest, TooManyParams) {
TEST_F(WasmSignatureDecodeTest, TooManyReturns) {
for (int i = 0; i < 2; i++) {
- bool enable_mv = i != 0;
- WASM_FEATURE_SCOPE_VAL(mv, enable_mv);
- const int max_return_count = static_cast<int>(
- enable_mv ? kV8MaxWasmFunctionMultiReturns : kV8MaxWasmFunctionReturns);
- byte data[] = {kWasmFunctionTypeCode, 0, WASM_I32V_3(max_return_count + 1),
- kI32Code};
+ byte data[] = {kWasmFunctionTypeCode, 0,
+ WASM_I32V_3(kV8MaxWasmFunctionReturns + 1), kI32Code};
const FunctionSig* sig = DecodeSig(data, data + sizeof(data));
EXPECT_EQ(nullptr, sig);
}
diff --git a/deps/v8/test/unittests/wasm/subtyping-unittest.cc b/deps/v8/test/unittests/wasm/subtyping-unittest.cc
index d06b4d675b..c7a5470ca1 100644
--- a/deps/v8/test/unittests/wasm/subtyping-unittest.cc
+++ b/deps/v8/test/unittests/wasm/subtyping-unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "src/wasm/wasm-subtyping.h"
+#include "test/common/wasm/flag-utils.h"
#include "test/unittests/test-utils.h"
namespace v8 {
@@ -33,6 +34,13 @@ void DefineArray(WasmModule* module, FieldInit element_type) {
element_type.first, element_type.second));
}
+void DefineSignature(WasmModule* module,
+ std::initializer_list<ValueType> params,
+ std::initializer_list<ValueType> returns) {
+ module->add_signature(
+ FunctionSig::Build(module->signature_zone.get(), returns, params));
+}
+
TEST_F(WasmSubtypingTest, Subtyping) {
v8::internal::AccountingAllocator allocator;
WasmModule module1_(std::make_unique<Zone>(&allocator, ZONE_NAME));
@@ -43,128 +51,168 @@ TEST_F(WasmSubtypingTest, Subtyping) {
// Set up two identical modules.
for (WasmModule* module : {module1, module2}) {
- /* 0 */ DefineStruct(module, {mut(ref(2)), immut(optRef(2))});
- /* 1 */ DefineStruct(module, {mut(ref(2)), immut(ref(2))});
- /* 2 */ DefineArray(module, immut(ref(0)));
- /* 3 */ DefineArray(module, immut(ref(1)));
- /* 4 */ DefineStruct(module, {mut(ref(2)), immut(ref(3)), immut(kWasmF64)});
- /* 5 */ DefineStruct(module, {mut(optRef(2)), immut(ref(2))});
- /* 6 */ DefineArray(module, mut(kWasmI32));
- /* 7 */ DefineArray(module, immut(kWasmI32));
- /* 8 */ DefineStruct(module, {mut(kWasmI32), immut(optRef(8))});
- /* 9 */ DefineStruct(module, {mut(kWasmI32), immut(optRef(8))});
+ /* 0 */ DefineStruct(module, {mut(ref(2)), immut(optRef(2))});
+ /* 1 */ DefineStruct(module, {mut(ref(2)), immut(ref(2))});
+ /* 2 */ DefineArray(module, immut(ref(0)));
+ /* 3 */ DefineArray(module, immut(ref(1)));
+ /* 4 */ DefineStruct(module,
+ {mut(ref(2)), immut(ref(3)), immut(kWasmF64)});
+ /* 5 */ DefineStruct(module, {mut(optRef(2)), immut(ref(2))});
+ /* 6 */ DefineArray(module, mut(kWasmI32));
+ /* 7 */ DefineArray(module, immut(kWasmI32));
+ /* 8 */ DefineStruct(module, {mut(kWasmI32), immut(optRef(8))});
+ /* 9 */ DefineStruct(module, {mut(kWasmI32), immut(optRef(8))});
+ /* 10 */ DefineSignature(module, {}, {});
+ /* 11 */ DefineSignature(module, {kWasmI32}, {kWasmI32});
+ /* 12 */ DefineSignature(module, {kWasmI32, kWasmI32}, {kWasmI32});
+ /* 13 */ DefineSignature(module, {ref(1)}, {kWasmI32});
+ /* 14 */ DefineSignature(module, {ref(0)}, {kWasmI32});
+ /* 15 */ DefineSignature(module, {ref(0)}, {ref(4)});
+ /* 16 */ DefineSignature(module, {ref(0)}, {ref(0)});
}
ValueType numeric_types[] = {kWasmI32, kWasmI64, kWasmF32, kWasmF64,
kWasmS128};
- ValueType ref_types[] = {
- kWasmExternRef, kWasmFuncRef, kWasmEqRef, kWasmI31Ref, kWasmDataRef,
- kWasmAnyRef, optRef(0), ref(0), optRef(2), ref(2)};
+ ValueType ref_types[] = {kWasmExternRef, kWasmFuncRef, kWasmEqRef,
+ kWasmI31Ref, kWasmDataRef, kWasmAnyRef,
+ optRef(0), ref(0), optRef(2),
+ ref(2), optRef(11), ref(11)};
+
+#define SUBTYPE(type1, type2) \
+ EXPECT_TRUE(IsSubtypeOf(type1, type2, module1, module))
+#define NOT_SUBTYPE(type1, type2) \
+ EXPECT_FALSE(IsSubtypeOf(type1, type2, module1, module))
+#define SUBTYPE_IFF(type1, type2, condition) \
+ EXPECT_EQ(IsSubtypeOf(type1, type2, module1, module), condition)
// Type judgements across modules should work the same as within one module.
for (WasmModule* module : {module1, module2}) {
// Value types are unrelated, except if they are equal.
for (ValueType subtype : numeric_types) {
for (ValueType supertype : numeric_types) {
- EXPECT_EQ(IsSubtypeOf(subtype, supertype, module1, module),
- subtype == supertype);
+ SUBTYPE_IFF(subtype, supertype, subtype == supertype);
}
}
// Value types are unrelated with reference types.
for (ValueType value_type : numeric_types) {
for (ValueType ref_type : ref_types) {
- EXPECT_TRUE(!IsSubtypeOf(value_type, ref_type, module1, module));
- EXPECT_TRUE(!IsSubtypeOf(ref_type, value_type, module1, module));
+ NOT_SUBTYPE(value_type, ref_type);
+ NOT_SUBTYPE(ref_type, value_type);
}
}
for (ValueType ref_type : ref_types) {
// Concrete reference types, i31ref and dataref are subtypes of eqref,
- // externref/funcref/anyref are not.
- EXPECT_EQ(IsSubtypeOf(ref_type, kWasmEqRef, module1, module),
- ref_type != kWasmFuncRef && ref_type != kWasmExternRef &&
- ref_type != kWasmAnyRef);
+ // externref/funcref/anyref/functions are not.
+ SUBTYPE_IFF(ref_type, kWasmEqRef,
+ ref_type != kWasmFuncRef && ref_type != kWasmExternRef &&
+ ref_type != kWasmAnyRef && ref_type != optRef(11) &&
+ ref_type != ref(11));
// Non-nullable struct/array types are subtypes of dataref.
- EXPECT_EQ(IsSubtypeOf(ref_type, kWasmDataRef, module1, module),
- ref_type == kWasmDataRef ||
- (ref_type.kind() == kRef && ref_type.has_index()));
+ SUBTYPE_IFF(
+ ref_type, kWasmDataRef,
+ ref_type == kWasmDataRef || ref_type == ref(0) || ref_type == ref(2));
+ // Functions are subtypes of funcref.
+ SUBTYPE_IFF(ref_type, kWasmFuncRef,
+ ref_type == kWasmFuncRef || ref_type == optRef(11) ||
+ ref_type == ref(11));
// Each reference type is a subtype of itself.
- EXPECT_TRUE(IsSubtypeOf(ref_type, ref_type, module1, module));
+ SUBTYPE(ref_type, ref_type);
// Each reference type is a subtype of anyref.
- EXPECT_TRUE(IsSubtypeOf(ref_type, kWasmAnyRef, module1, module));
+ SUBTYPE(ref_type, kWasmAnyRef);
// Only anyref is a subtype of anyref.
- EXPECT_EQ(IsSubtypeOf(kWasmAnyRef, ref_type, module1, module),
- ref_type == kWasmAnyRef);
+ SUBTYPE_IFF(kWasmAnyRef, ref_type, ref_type == kWasmAnyRef);
}
// The rest of ref. types are unrelated.
for (ValueType type_1 : {kWasmExternRef, kWasmFuncRef, kWasmI31Ref}) {
for (ValueType type_2 : {kWasmExternRef, kWasmFuncRef, kWasmI31Ref}) {
- EXPECT_EQ(IsSubtypeOf(type_1, type_2, module1, module),
- type_1 == type_2);
+ SUBTYPE_IFF(type_1, type_2, type_1 == type_2);
}
}
// Unrelated refs are unrelated.
- EXPECT_TRUE(!IsSubtypeOf(ref(0), ref(2), module1, module));
- EXPECT_TRUE(!IsSubtypeOf(optRef(3), optRef(1), module1, module));
+ NOT_SUBTYPE(ref(0), ref(2));
+ NOT_SUBTYPE(optRef(3), optRef(1));
// ref is a subtype of optref for the same struct/array.
- EXPECT_TRUE(IsSubtypeOf(ref(0), optRef(0), module1, module));
- EXPECT_TRUE(IsSubtypeOf(ref(2), optRef(2), module1, module));
+ SUBTYPE(ref(0), optRef(0));
+ SUBTYPE(ref(2), optRef(2));
// optref is not a subtype of ref for the same struct/array.
- EXPECT_TRUE(!IsSubtypeOf(optRef(0), ref(0), module1, module));
- EXPECT_TRUE(!IsSubtypeOf(optRef(2), ref(2), module1, module));
+ NOT_SUBTYPE(optRef(0), ref(0));
+ NOT_SUBTYPE(optRef(2), ref(2));
// ref is a subtype of optref if the same is true for the underlying
// structs/arrays.
- EXPECT_TRUE(IsSubtypeOf(ref(3), optRef(2), module1, module));
+ SUBTYPE(ref(3), optRef(2));
// Prefix subtyping for structs.
- EXPECT_TRUE(IsSubtypeOf(optRef(4), optRef(0), module1, module));
+ SUBTYPE(optRef(4), optRef(0));
// Mutable fields are invariant.
- EXPECT_TRUE(!IsSubtypeOf(ref(0), ref(5), module1, module));
+ NOT_SUBTYPE(ref(0), ref(5));
// Immutable fields are covariant.
- EXPECT_TRUE(IsSubtypeOf(ref(1), ref(0), module1, module));
+ SUBTYPE(ref(1), ref(0));
// Prefix subtyping + immutable field covariance for structs.
- EXPECT_TRUE(IsSubtypeOf(optRef(4), optRef(1), module1, module));
+ SUBTYPE(optRef(4), optRef(1));
// No subtyping between mutable/immutable fields.
- EXPECT_TRUE(!IsSubtypeOf(ref(7), ref(6), module1, module));
- EXPECT_TRUE(!IsSubtypeOf(ref(6), ref(7), module1, module));
+ NOT_SUBTYPE(ref(7), ref(6));
+ NOT_SUBTYPE(ref(6), ref(7));
// Recursive types.
- EXPECT_TRUE(IsSubtypeOf(ref(9), ref(8), module1, module));
+ SUBTYPE(ref(9), ref(8));
// Identical rtts are subtypes of each other.
- EXPECT_TRUE(IsSubtypeOf(ValueType::Rtt(5, 3), ValueType::Rtt(5, 3), module1,
- module2));
- EXPECT_TRUE(
- IsSubtypeOf(ValueType::Rtt(5), ValueType::Rtt(5), module1, module2));
+ SUBTYPE(ValueType::Rtt(5, 3), ValueType::Rtt(5, 3));
+ SUBTYPE(ValueType::Rtt(5), ValueType::Rtt(5));
// Rtts of unrelated types are unrelated.
- EXPECT_TRUE(!IsSubtypeOf(ValueType::Rtt(1, 1), ValueType::Rtt(2, 1),
- module1, module2));
- EXPECT_TRUE(
- !IsSubtypeOf(ValueType::Rtt(1), ValueType::Rtt(2), module1, module2));
- EXPECT_TRUE(!IsSubtypeOf(ValueType::Rtt(1, 0), ValueType::Rtt(2), module1,
- module2));
+ NOT_SUBTYPE(ValueType::Rtt(1, 1), ValueType::Rtt(2, 1));
+ NOT_SUBTYPE(ValueType::Rtt(1), ValueType::Rtt(2));
+ NOT_SUBTYPE(ValueType::Rtt(1, 0), ValueType::Rtt(2));
// Rtts of different depth are unrelated.
- EXPECT_TRUE(!IsSubtypeOf(ValueType::Rtt(5, 1), ValueType::Rtt(5, 3),
- module1, module2));
- EXPECT_TRUE(!IsSubtypeOf(ValueType::Rtt(5, 8), ValueType::Rtt(5, 3),
- module1, module2));
+ NOT_SUBTYPE(ValueType::Rtt(5, 1), ValueType::Rtt(5, 3));
+ NOT_SUBTYPE(ValueType::Rtt(5, 8), ValueType::Rtt(5, 3));
// Rtts of identical types are subtype-related.
- EXPECT_TRUE(IsSubtypeOf(ValueType::Rtt(8, 1), ValueType::Rtt(9, 1), module1,
- module));
- EXPECT_TRUE(
- IsSubtypeOf(ValueType::Rtt(8), ValueType::Rtt(9), module1, module));
+ SUBTYPE(ValueType::Rtt(8, 1), ValueType::Rtt(9, 1));
+ SUBTYPE(ValueType::Rtt(8), ValueType::Rtt(9));
// Rtts of subtypes are not related.
- EXPECT_TRUE(!IsSubtypeOf(ValueType::Rtt(1, 1), ValueType::Rtt(0, 1),
- module1, module));
- EXPECT_TRUE(
- !IsSubtypeOf(ValueType::Rtt(1), ValueType::Rtt(0), module1, module));
+ NOT_SUBTYPE(ValueType::Rtt(1, 1), ValueType::Rtt(0, 1));
+ NOT_SUBTYPE(ValueType::Rtt(1), ValueType::Rtt(0));
// rtt(t, d) <: rtt(t)
for (uint8_t depth : {0, 1, 5}) {
- EXPECT_TRUE(IsSubtypeOf(ValueType::Rtt(1, depth), ValueType::Rtt(1),
- module1, module));
+ SUBTYPE(ValueType::Rtt(1, depth), ValueType::Rtt(1));
+ }
+
+ // Function subtyping depends on the selected wasm features.
+ // Without wasm-gc:
+
+ // Unrelated function types are unrelated.
+ NOT_SUBTYPE(ref(10), ref(11));
+ // Function type with different parameter counts are unrelated.
+ NOT_SUBTYPE(ref(12), ref(11));
+ // Parameter contravariance does not hold.
+ NOT_SUBTYPE(ref(14), ref(13));
+ // Return type covariance does not hold.
+ NOT_SUBTYPE(ref(15), ref(16));
+ // Only identical types are subtype-related.
+ SUBTYPE(ref(10), ref(10));
+ SUBTYPE(ref(11), ref(11));
+
+ {
+ // With wasm-gc:
+ EXPERIMENTAL_FLAG_SCOPE(gc);
+ // Unrelated function types are unrelated.
+ NOT_SUBTYPE(ref(10), ref(11));
+ // Function type with different parameter counts are unrelated.
+ NOT_SUBTYPE(ref(12), ref(11));
+ // Parameter contravariance holds.
+ SUBTYPE(ref(14), ref(13));
+ // Return type covariance holds.
+ SUBTYPE(ref(15), ref(16));
+ // Identical types are subtype-related.
+ SUBTYPE(ref(10), ref(10));
+ SUBTYPE(ref(11), ref(11));
}
}
+#undef SUBTYPE
+#undef NOT_SUBTYPE
+#undef SUBTYPE_IFF
}
} // namespace subtyping_unittest
diff --git a/deps/v8/test/unittests/wasm/trap-handler-x64-unittest.cc b/deps/v8/test/unittests/wasm/trap-handler-x64-unittest.cc
index 1d8efdae75..9feb50fd4f 100644
--- a/deps/v8/test/unittests/wasm/trap-handler-x64-unittest.cc
+++ b/deps/v8/test/unittests/wasm/trap-handler-x64-unittest.cc
@@ -246,7 +246,9 @@ class TrapHandlerTest : public TestWithIsolate,
.Call();
EXPECT_TRUE(g_test_handler_executed);
g_test_handler_executed = false;
- if (check_wasm_flag) EXPECT_FALSE(GetThreadInWasmFlag());
+ if (check_wasm_flag) {
+ EXPECT_FALSE(GetThreadInWasmFlag());
+ }
}
bool test_handler_executed() { return g_test_handler_executed; }
@@ -468,9 +470,11 @@ TEST_P(TrapHandlerTest, TestCrashInOtherThread) {
}
#endif
+#if !V8_OS_FUCHSIA
INSTANTIATE_TEST_SUITE_P(Traps, TrapHandlerTest,
::testing::Values(kDefault, kCallback),
PrintTrapHandlerTestParam);
+#endif // !V8_OS_FUCHSIA
#undef __
} // namespace wasm
diff --git a/deps/v8/test/wasm-api-tests/run-all-wasm-api-tests.cc b/deps/v8/test/wasm-api-tests/run-all-wasm-api-tests.cc
index 1b1c94923a..35ba5c9e9a 100644
--- a/deps/v8/test/wasm-api-tests/run-all-wasm-api-tests.cc
+++ b/deps/v8/test/wasm-api-tests/run-all-wasm-api-tests.cc
@@ -3,6 +3,8 @@
// found in the LICENSE file.
#include "include/v8.h"
+#include "src/flags/flags.h"
+#include "src/trap-handler/trap-handler.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -13,5 +15,12 @@ int main(int argc, char** argv) {
testing::InitGoogleMock(&argc, argv);
v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
v8::V8::InitializeExternalStartupData(argv[0]);
+ if (V8_TRAP_HANDLER_SUPPORTED && i::FLAG_wasm_trap_handler) {
+ constexpr bool use_default_trap_handler = true;
+ if (!v8::V8::EnableWebAssemblyTrapHandler(use_default_trap_handler)) {
+ FATAL("Could not register trap handler");
+ }
+ }
+
return RUN_ALL_TESTS();
}
diff --git a/deps/v8/test/wasm-api-tests/wasm-api-tests.status b/deps/v8/test/wasm-api-tests/wasm-api-tests.status
index 6aa0f51011..e4b1703717 100644
--- a/deps/v8/test/wasm-api-tests/wasm-api-tests.status
+++ b/deps/v8/test/wasm-api-tests/wasm-api-tests.status
@@ -14,4 +14,12 @@
'*': [SKIP], # only relevant for mjsunit tests.
}],
+################################################################################
+['third_party_heap', {
+ # Requires a second isolate
+ 'WasmCapiTest.InstanceFinalization': [SKIP],
+ 'WasmCapiTest.MultiStoresOneThread': [SKIP],
+ 'WasmCapiTest.Threads': [SKIP],
+}], # third_party_heap
+
]
diff --git a/deps/v8/test/wasm-js/tests.tar.gz.sha1 b/deps/v8/test/wasm-js/tests.tar.gz.sha1
index 63fbde0778..acb0eea357 100644
--- a/deps/v8/test/wasm-js/tests.tar.gz.sha1
+++ b/deps/v8/test/wasm-js/tests.tar.gz.sha1
@@ -1 +1 @@
-50b01d97338b464df8daa56355f83011930ec678 \ No newline at end of file
+a7bba39e6681a1133de75369728aa8bdef23def1 \ No newline at end of file
diff --git a/deps/v8/test/wasm-spec-tests/tests.tar.gz.sha1 b/deps/v8/test/wasm-spec-tests/tests.tar.gz.sha1
index 8390796a1a..1c06cef06e 100644
--- a/deps/v8/test/wasm-spec-tests/tests.tar.gz.sha1
+++ b/deps/v8/test/wasm-spec-tests/tests.tar.gz.sha1
@@ -1 +1 @@
-38fd550b9d30afab338b1902dbb78ce86500ad0f \ No newline at end of file
+053a8d8be450a2f85fa455404de33e91477b1586 \ No newline at end of file
diff --git a/deps/v8/test/wasm-spec-tests/wasm-spec-tests.status b/deps/v8/test/wasm-spec-tests/wasm-spec-tests.status
index 17e2d00c59..26271b058e 100644
--- a/deps/v8/test/wasm-spec-tests/wasm-spec-tests.status
+++ b/deps/v8/test/wasm-spec-tests/wasm-spec-tests.status
@@ -27,7 +27,6 @@
'proposals/tail-call/exports': [FAIL],
'proposals/tail-call/func': [FAIL],
'proposals/tail-call/globals': [FAIL],
- 'proposals/tail-call/imports': [FAIL],
'proposals/tail-call/linking': [FAIL],
'proposals/tail-call/type': [FAIL],
'proposals/tail-call/unreached-invalid': [FAIL],
@@ -37,13 +36,9 @@
# TODO(v8:11401): Fix memory64 spec tests / the v8 implementation (whatever
# is broken).
- 'proposals/memory64/address64': [FAIL],
'proposals/memory64/data': [FAIL],
'proposals/memory64/elem': [FAIL],
- 'proposals/memory64/float_memory64': [FAIL],
'proposals/memory64/imports': [FAIL],
- 'proposals/memory64/memory64': [FAIL],
- 'proposals/memory64/memory_trap64': [FAIL],
}], # ALWAYS
['arch == arm and not simulator_run', {
@@ -109,19 +104,6 @@
'proposals/multi-value/conversions': [SKIP],
'proposals/reference-types/conversions': [SKIP],
- 'f32': [SKIP],
- 'f64': [SKIP],
- 'proposals/multi-value/f64': [SKIP],
- 'proposals/JS-BigInt-integration/f64': [SKIP],
- 'proposals/JS-BigInt-integration/f32': [SKIP],
- 'proposals/bulk-memory-operations/f32': [SKIP],
- 'proposals/bulk-memory-operations/f64': [SKIP],
- 'proposals/js-types/f32': [SKIP],
- 'proposals/js-types/f64': [SKIP],
- 'proposals/multi-value/f32': [SKIP],
- 'proposals/reference-types/f32': [SKIP],
- 'proposals/reference-types/f64': [SKIP],
-
# the following all fail w/ symptons captured in issue #166
'float_exprs': [SKIP],
'proposals/tail-call/conversions': [SKIP],
@@ -198,8 +180,8 @@
}],
##############################################################################
-['no_simd_sse == True', {
+['no_simd_hardware == True', {
'proposals/simd/*': [SKIP],
-}], # no_simd_sse == True
+}], # no_simd_hardware == True
]
diff --git a/deps/v8/third_party/google_benchmark/BUILD.gn b/deps/v8/third_party/google_benchmark/BUILD.gn
new file mode 100644
index 0000000000..e746cc421a
--- /dev/null
+++ b/deps/v8/third_party/google_benchmark/BUILD.gn
@@ -0,0 +1,75 @@
+# Copyright 2020 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.
+
+import("//build/config/gclient_args.gni")
+import("../../gni/v8.gni")
+
+if (v8_enable_google_benchmark) {
+ config("benchmark_config") {
+ include_dirs = [ "src/include" ]
+ }
+
+ source_set("google_benchmark") {
+ testonly = true
+
+ public = [ "src/include/benchmark/benchmark.h" ]
+
+ sources = [
+ "src/src/arraysize.h",
+ "src/src/benchmark.cc",
+ "src/src/benchmark_api_internal.cc",
+ "src/src/benchmark_api_internal.h",
+ "src/src/benchmark_name.cc",
+ "src/src/benchmark_register.cc",
+ "src/src/benchmark_register.h",
+ "src/src/benchmark_runner.cc",
+ "src/src/benchmark_runner.h",
+ "src/src/check.h",
+ "src/src/colorprint.cc",
+ "src/src/colorprint.h",
+ "src/src/commandlineflags.cc",
+ "src/src/commandlineflags.h",
+ "src/src/complexity.cc",
+ "src/src/complexity.h",
+ "src/src/console_reporter.cc",
+ "src/src/counter.cc",
+ "src/src/counter.h",
+ "src/src/csv_reporter.cc",
+ "src/src/internal_macros.h",
+ "src/src/json_reporter.cc",
+ "src/src/log.h",
+ "src/src/mutex.h",
+ "src/src/perf_counters.cc",
+ "src/src/perf_counters.h",
+ "src/src/re.h",
+ "src/src/reporter.cc",
+ "src/src/sleep.cc",
+ "src/src/sleep.h",
+ "src/src/statistics.cc",
+ "src/src/statistics.h",
+ "src/src/string_util.cc",
+ "src/src/string_util.h",
+ "src/src/sysinfo.cc",
+ "src/src/thread_manager.h",
+ "src/src/thread_timer.h",
+ "src/src/timers.cc",
+ "src/src/timers.h",
+ ]
+
+ all_dependent_configs = [ ":benchmark_config" ]
+
+ defines = [
+ # Tell google_benchmark to always use standard regular expressions.
+ "HAVE_GNU_POSIX_REGEX=0",
+ "HAVE_POSIX_REGEX=0",
+ "HAVE_STD_REGEX=1",
+ ]
+ }
+
+ source_set("benchmark_main") {
+ testonly = true
+ sources = [ "src/src/benchmark_main.cc" ]
+ public_deps = [ ":google_benchmark" ]
+ }
+}
diff --git a/deps/v8/third_party/google_benchmark/OWNERS b/deps/v8/third_party/google_benchmark/OWNERS
new file mode 100644
index 0000000000..d934f47fe1
--- /dev/null
+++ b/deps/v8/third_party/google_benchmark/OWNERS
@@ -0,0 +1,3 @@
+file:../../INFRA_OWNERS
+
+mlippautz@chromium.org
diff --git a/deps/v8/third_party/google_benchmark/README.v8 b/deps/v8/third_party/google_benchmark/README.v8
new file mode 100644
index 0000000000..fe2ac187ac
--- /dev/null
+++ b/deps/v8/third_party/google_benchmark/README.v8
@@ -0,0 +1,21 @@
+Name: Google Benchmark
+Short Name: benchmark
+URL: https://github.com/google/benchmark
+Version: unknown
+License: Apache 2.0
+License File: NOT_SHIPPED
+Security Critical: no
+
+Description:
+A microbenchmark support library.
+
+To include this library in the V8 checkout, add the following clause to
+your .gclient configuration.
+
+ "custom_vars": {
+ "checkout_google_benchmark": True,
+ }
+
+
+Local Additions:
+* gn file for building in V8
diff --git a/deps/v8/third_party/googletest/BUILD.gn b/deps/v8/third_party/googletest/BUILD.gn
index cfa9205547..4d393efd95 100644
--- a/deps/v8/third_party/googletest/BUILD.gn
+++ b/deps/v8/third_party/googletest/BUILD.gn
@@ -2,6 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("../../gni/v8.gni")
+
config("gtest_config") {
visibility = [ ":*" ] # gmock also shares this config.
@@ -49,8 +51,6 @@ config("gmock_config") {
source_set("gtest") {
testonly = true
sources = [
- # TODO(crbug.com/829773): Remove this after transitioning off <tr1/tuple>.
- "custom/gmock/internal/custom/gmock-port.h",
"src/googletest/include/gtest/gtest-death-test.h",
"src/googletest/include/gtest/gtest-matchers.h",
"src/googletest/include/gtest/gtest-message.h",
@@ -64,12 +64,9 @@ source_set("gtest") {
"src/googletest/include/gtest/internal/gtest-death-test-internal.h",
"src/googletest/include/gtest/internal/gtest-filepath.h",
"src/googletest/include/gtest/internal/gtest-internal.h",
- "src/googletest/include/gtest/internal/gtest-linked_ptr.h",
- "src/googletest/include/gtest/internal/gtest-param-util-generated.h",
"src/googletest/include/gtest/internal/gtest-param-util.h",
"src/googletest/include/gtest/internal/gtest-port.h",
"src/googletest/include/gtest/internal/gtest-string.h",
- "src/googletest/include/gtest/internal/gtest-tuple.h",
"src/googletest/include/gtest/internal/gtest-type-util.h",
#"src/googletest/src/gtest-all.cc", # Not needed by our build.
@@ -92,6 +89,15 @@ source_set("gtest") {
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
+ # V8-only workaround for http://crbug.com/chromium/1191946. Ensures that
+ # googletest is compiled with the same visibility such as the rest of V8, see
+ # https://source.chromium.org/chromium/chromium/src/+/master:v8/gni/v8.gni
+ if ((is_posix || is_fuchsia) &&
+ (v8_enable_backtrace || v8_monolithic || v8_expose_symbols)) {
+ configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
+ configs += [ "//build/config/gcc:symbol_visibility_default" ]
+ }
+
deps = []
if (is_fuchsia) {
@@ -118,22 +124,16 @@ source_set("gmock") {
"src/googlemock/include/gmock/gmock-actions.h",
"src/googlemock/include/gmock/gmock-cardinalities.h",
"src/googlemock/include/gmock/gmock-function-mocker.h",
- "src/googlemock/include/gmock/gmock-generated-actions.h",
- "src/googlemock/include/gmock/gmock-generated-nice-strict.h",
"src/googlemock/include/gmock/gmock-matchers.h",
"src/googlemock/include/gmock/gmock-more-actions.h",
"src/googlemock/include/gmock/gmock-more-matchers.h",
"src/googlemock/include/gmock/gmock-nice-strict.h",
"src/googlemock/include/gmock/gmock-spec-builders.h",
"src/googlemock/include/gmock/gmock.h",
- "src/googlemock/include/gmock/internal/gmock-generated-internal-utils.h",
"src/googlemock/include/gmock/internal/gmock-internal-utils.h",
"src/googlemock/include/gmock/internal/gmock-port.h",
"src/googlemock/include/gmock/internal/gmock-pp.h",
- # gmock helpers.
- "custom/gmock/internal/custom/gmock-port.h",
-
#"src/googlemock/src/gmock-all.cc", # Not needed by our build.
"src/googlemock/src/gmock-cardinalities.cc",
"src/googlemock/src/gmock-internal-utils.cc",
@@ -142,10 +142,21 @@ source_set("gmock") {
"src/googlemock/src/gmock.cc",
]
+ # V8-only workaround for http://crbug.com/chromium/1191946. Ensures that
+ # googletest is compiled with the same visibility such as the rest of V8, see
+ # https://source.chromium.org/chromium/chromium/src/+/master:v8/gni/v8.gni
+ if ((is_posix || is_fuchsia) &&
+ (v8_enable_backtrace || v8_monolithic || v8_expose_symbols)) {
+ configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
+ configs += [ "//build/config/gcc:symbol_visibility_default" ]
+ }
+
public_configs = [
":gmock_config",
":gtest_config",
]
+
+ deps = [ ":gtest" ]
}
# Do NOT depend on this directly. Use //testing/gmock:gmock_main instead.
@@ -153,5 +164,8 @@ source_set("gmock") {
static_library("gmock_main") {
testonly = true
sources = [ "src/googlemock/src/gmock_main.cc" ]
- deps = [ ":gmock" ]
+ deps = [
+ ":gmock",
+ ":gtest",
+ ]
}
diff --git a/deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h b/deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h
index e651671ebd..38b9d85a51 100644
--- a/deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h
+++ b/deps/v8/third_party/googletest/src/googletest/include/gtest/gtest_prod.h
@@ -31,8 +31,8 @@
// Google C++ Testing and Mocking Framework definitions useful in production code.
// GOOGLETEST_CM0003 DO NOT DELETE
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
+#define GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
// When you need to test the private or protected members of a class,
// use the FRIEND_TEST macro to declare your tests as friends of the
@@ -58,4 +58,4 @@
#define FRIEND_TEST(test_case_name, test_name)\
friend class test_case_name##_##test_name##_Test
-#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+#endif // GOOGLETEST_INCLUDE_GTEST_GTEST_PROD_H_
diff --git a/deps/v8/third_party/inspector_protocol/BUILD.gn b/deps/v8/third_party/inspector_protocol/BUILD.gn
index 880b651c09..94b7fe2677 100644
--- a/deps/v8/third_party/inspector_protocol/BUILD.gn
+++ b/deps/v8/third_party/inspector_protocol/BUILD.gn
@@ -5,7 +5,10 @@
import("../../gni/v8.gni")
config("crdtp_config") {
- visibility = [ "../../src/inspector:*", ":*" ]
+ visibility = [
+ ":*",
+ "../../src/inspector:*",
+ ]
configs = [ "../../:internal_config" ]
include_dirs = [ "../../include" ]
}
@@ -46,6 +49,7 @@ v8_source_set("crdtp_platform") {
"crdtp/json_platform_v8.cc",
]
public_deps = [ "../..:v8_libbase" ]
+ deps = [ "../../:v8_internal_headers" ]
configs = [ ":crdtp_config" ]
}
diff --git a/deps/v8/third_party/inspector_protocol/README.v8 b/deps/v8/third_party/inspector_protocol/README.v8
index 97bc1c3414..cc5e083c6a 100644
--- a/deps/v8/third_party/inspector_protocol/README.v8
+++ b/deps/v8/third_party/inspector_protocol/README.v8
@@ -2,7 +2,7 @@ Name: inspector protocol
Short Name: inspector_protocol
URL: https://chromium.googlesource.com/deps/inspector_protocol/
Version: 0
-Revision: 94298cef795ec994106bdaff002c41182911b767
+Revision: 35e8d2d89cb017d72cf905362672de77c978e1e6
License: BSD
License File: LICENSE
Security Critical: no
diff --git a/deps/v8/third_party/inspector_protocol/crdtp/serializable.cc b/deps/v8/third_party/inspector_protocol/crdtp/serializable.cc
index 20de53ecc0..7a21ffd35f 100644
--- a/deps/v8/third_party/inspector_protocol/crdtp/serializable.cc
+++ b/deps/v8/third_party/inspector_protocol/crdtp/serializable.cc
@@ -4,6 +4,8 @@
#include "serializable.h"
+#include <utility>
+
namespace v8_crdtp {
// =============================================================================
// Serializable - An object to be emitted as a sequence of bytes.
@@ -18,7 +20,8 @@ std::vector<uint8_t> Serializable::Serialize() const {
namespace {
class PreSerialized : public Serializable {
public:
- explicit PreSerialized(std::vector<uint8_t> bytes) : bytes_(bytes) {}
+ explicit PreSerialized(std::vector<uint8_t> bytes)
+ : bytes_(std::move(bytes)) {}
void AppendSerialized(std::vector<uint8_t>* out) const override {
out->insert(out->end(), bytes_.begin(), bytes_.end());
diff --git a/deps/v8/third_party/inspector_protocol/crdtp/status.cc b/deps/v8/third_party/inspector_protocol/crdtp/status.cc
index 4a8e03d389..7181df97d1 100644
--- a/deps/v8/third_party/inspector_protocol/crdtp/status.cc
+++ b/deps/v8/third_party/inspector_protocol/crdtp/status.cc
@@ -113,6 +113,8 @@ std::string Status::Message() const {
return "BINDINGS: string8 value expected";
case Error::BINDINGS_BINARY_VALUE_EXPECTED:
return "BINDINGS: binary value expected";
+ case Error::BINDINGS_DICTIONARY_VALUE_EXPECTED:
+ return "BINDINGS: dictionary value expected";
}
// Some compilers can't figure out that we can't get here.
return "INVALID ERROR CODE";
diff --git a/deps/v8/third_party/inspector_protocol/crdtp/status.h b/deps/v8/third_party/inspector_protocol/crdtp/status.h
index 45e0a57acf..1039156942 100644
--- a/deps/v8/third_party/inspector_protocol/crdtp/status.h
+++ b/deps/v8/third_party/inspector_protocol/crdtp/status.h
@@ -77,6 +77,7 @@ enum class Error {
BINDINGS_STRING_VALUE_EXPECTED = 0x34,
BINDINGS_STRING8_VALUE_EXPECTED = 0x35,
BINDINGS_BINARY_VALUE_EXPECTED = 0x36,
+ BINDINGS_DICTIONARY_VALUE_EXPECTED = 0x37,
};
// A status value with position that can be copied. The default status
diff --git a/deps/v8/third_party/inspector_protocol/lib/ValueConversions_cpp.template b/deps/v8/third_party/inspector_protocol/lib/ValueConversions_cpp.template
index 36c8dcc356..a16b522c38 100644
--- a/deps/v8/third_party/inspector_protocol/lib/ValueConversions_cpp.template
+++ b/deps/v8/third_party/inspector_protocol/lib/ValueConversions_cpp.template
@@ -96,6 +96,10 @@ bool ProtocolTypeTraits<std::unique_ptr<DictionaryValue>>::Deserialize(
std::unique_ptr<Value> res;
if (!ProtocolTypeTraits<std::unique_ptr<Value>>::Deserialize(state, &res))
return false;
+ if (res->type() != Value::TypeObject) {
+ state->RegisterError(Error::BINDINGS_DICTIONARY_VALUE_EXPECTED);
+ return false;
+ }
*value = DictionaryValue::cast(std::move(res));
return true;
}
diff --git a/deps/v8/third_party/inspector_protocol/lib/base_string_adapter_cc.template b/deps/v8/third_party/inspector_protocol/lib/base_string_adapter_cc.template
index e503f5c23e..10488f2243 100644
--- a/deps/v8/third_party/inspector_protocol/lib/base_string_adapter_cc.template
+++ b/deps/v8/third_party/inspector_protocol/lib/base_string_adapter_cc.template
@@ -11,7 +11,6 @@
#include "base/base64.h"
#include "base/json/json_reader.h"
#include "base/memory/ptr_util.h"
-#include "base/strings/string16.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
@@ -141,7 +140,7 @@ std::unique_ptr<base::Value> toBaseValue(Value* value, int depth) {
// static
String StringUtil::fromUTF16LE(const uint16_t* data, size_t length) {
std::string utf8;
- base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(data), length, &utf8);
+ base::UTF16ToUTF8(reinterpret_cast<const char16_t*>(data), length, &utf8);
return utf8;
}
@@ -246,4 +245,4 @@ void ProtocolTypeTraits<Binary>::Serialize(const Binary& value, std::vector<uint
value.AppendSerialized(bytes);
}
-} // namespace {{config.crdtp.namespace}} \ No newline at end of file
+} // namespace {{config.crdtp.namespace}}
diff --git a/deps/v8/third_party/inspector_protocol/pdl.py b/deps/v8/third_party/inspector_protocol/pdl.py
index d7733634e5..9a9fec9898 100644
--- a/deps/v8/third_party/inspector_protocol/pdl.py
+++ b/deps/v8/third_party/inspector_protocol/pdl.py
@@ -27,6 +27,9 @@ def assignType(item, type, is_array=False, map_binary_to_string=False):
type = 'string'
if map_binary_to_string and type == 'binary':
type = 'string'
+ if 'description' in item:
+ item['description'] = (item['description'] +
+ ' (Encoded as a base64 string when passed over JSON)')
if type in primitiveTypes:
item['type'] = type
else:
diff --git a/deps/v8/third_party/jsoncpp/BUILD.gn b/deps/v8/third_party/jsoncpp/BUILD.gn
index 411d2d62e7..6324be019c 100644
--- a/deps/v8/third_party/jsoncpp/BUILD.gn
+++ b/deps/v8/third_party/jsoncpp/BUILD.gn
@@ -21,9 +21,7 @@ source_set("jsoncpp") {
sources = [
"generated/version.h",
"source/include/json/assertions.h",
- "source/include/json/autolink.h",
"source/include/json/config.h",
- "source/include/json/features.h",
"source/include/json/forwards.h",
"source/include/json/json.h",
"source/include/json/reader.h",
diff --git a/deps/v8/third_party/zlib/OWNERS b/deps/v8/third_party/zlib/OWNERS
index 632b3f9f43..0bfa9fb9dd 100644
--- a/deps/v8/third_party/zlib/OWNERS
+++ b/deps/v8/third_party/zlib/OWNERS
@@ -2,4 +2,5 @@ agl@chromium.org
cavalcantii@chromium.org
cblume@chromium.org
mtklein@google.com
+noel@chromium.org
scroggo@google.com
diff --git a/deps/v8/third_party/zlib/google/OWNERS b/deps/v8/third_party/zlib/google/OWNERS
index 868af3cc66..411670ca13 100644
--- a/deps/v8/third_party/zlib/google/OWNERS
+++ b/deps/v8/third_party/zlib/google/OWNERS
@@ -1,3 +1,5 @@
+fdegros@chromium.org
+noel@chromium.org
satorux@chromium.org
# compression_utils*
diff --git a/deps/v8/third_party/zlib/google/zip.cc b/deps/v8/third_party/zlib/google/zip.cc
index 907e5da72e..20cdd57bdf 100644
--- a/deps/v8/third_party/zlib/google/zip.cc
+++ b/deps/v8/third_party/zlib/google/zip.cc
@@ -4,7 +4,7 @@
#include "third_party/zlib/google/zip.h"
-#include <list>
+#include <queue>
#include <string>
#include <vector>
@@ -50,12 +50,12 @@ std::unique_ptr<WriterDelegate> CreateFilePathWriterDelegate(
class DirectFileAccessor : public FileAccessor {
public:
- explicit DirectFileAccessor(base::FilePath src_dir) : src_dir_(src_dir) {}
~DirectFileAccessor() override = default;
std::vector<base::File> OpenFilesForReading(
const std::vector<base::FilePath>& paths) override {
std::vector<base::File> files;
+
for (const auto& path : paths) {
base::File file;
if (base::PathExists(path) && !base::DirectoryExists(path)) {
@@ -63,6 +63,7 @@ class DirectFileAccessor : public FileAccessor {
}
files.push_back(std::move(file));
}
+
return files;
}
@@ -73,103 +74,91 @@ class DirectFileAccessor : public FileAccessor {
std::vector<DirectoryContentEntry> ListDirectoryContent(
const base::FilePath& dir) override {
std::vector<DirectoryContentEntry> files;
+
base::FileEnumerator file_enumerator(
dir, false /* recursive */,
base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
- for (base::FilePath path = file_enumerator.Next(); !path.value().empty();
+ for (base::FilePath path = file_enumerator.Next(); !path.empty();
path = file_enumerator.Next()) {
- files.push_back(DirectoryContentEntry(path, base::DirectoryExists(path)));
+ const bool is_directory = base::DirectoryExists(path);
+ files.push_back({std::move(path), is_directory});
}
+
return files;
}
base::Time GetLastModifiedTime(const base::FilePath& path) override {
base::File::Info file_info;
if (!base::GetFileInfo(path, &file_info)) {
- LOG(ERROR) << "Failed to retrieve file modification time for "
- << path.value();
+ LOG(ERROR) << "Cannot get modification time for '" << path << "'";
}
return file_info.last_modified;
}
-
- private:
- base::FilePath src_dir_;
-
- DISALLOW_COPY_AND_ASSIGN(DirectFileAccessor);
};
} // namespace
-ZipParams::ZipParams(const base::FilePath& src_dir,
- const base::FilePath& dest_file)
- : src_dir_(src_dir),
- dest_file_(dest_file),
- file_accessor_(new DirectFileAccessor(src_dir)) {}
-
-#if defined(OS_POSIX)
-// Does not take ownership of |fd|.
-ZipParams::ZipParams(const base::FilePath& src_dir, int dest_fd)
- : src_dir_(src_dir),
- dest_fd_(dest_fd),
- file_accessor_(new DirectFileAccessor(src_dir)) {}
-#endif
+std::ostream& operator<<(std::ostream& out, const Progress& progress) {
+ return out << progress.bytes << " bytes, " << progress.files << " files, "
+ << progress.directories << " dirs";
+}
bool Zip(const ZipParams& params) {
- // Using a pointer to avoid copies of a potentially large array.
- const std::vector<base::FilePath>* files_to_add = &params.files_to_zip();
- std::vector<base::FilePath> all_files;
- if (files_to_add->empty()) {
- // Include all files from the src_dir (modulo the src_dir itself and
- // filtered and hidden files).
-
- files_to_add = &all_files;
- // Using a list so we can call push_back while iterating.
- std::list<FileAccessor::DirectoryContentEntry> entries;
- entries.push_back(FileAccessor::DirectoryContentEntry(
- params.src_dir(), true /* is directory*/));
- const FilterCallback& filter_callback = params.filter_callback();
- for (auto iter = entries.begin(); iter != entries.end(); ++iter) {
- const base::FilePath& entry_path = iter->path;
- if (iter != entries.begin() && // Don't filter the root dir.
- ((!params.include_hidden_files() && IsHiddenFile(entry_path)) ||
- (filter_callback && !filter_callback.Run(entry_path)))) {
- continue;
- }
+ DirectFileAccessor default_accessor;
+ FileAccessor* const file_accessor = params.file_accessor ?: &default_accessor;
+
+ Paths files_to_add = params.src_files;
- if (iter != entries.begin()) { // Exclude the root dir from the ZIP file.
- // Make the path relative for AddEntryToZip.
- base::FilePath relative_path;
- bool success =
- params.src_dir().AppendRelativePath(entry_path, &relative_path);
+ std::vector<base::FilePath> all_files;
+ if (files_to_add.empty()) {
+ // Perform a Breadth First Search (BFS) of the source tree. Note that the
+ // BFS order might not be optimal when storing files in a ZIP (either for
+ // the storing side, or for the program that will extract this ZIP).
+ for (std::queue<base::FilePath> q({params.src_dir}); !q.empty(); q.pop()) {
+ for (FileAccessor::DirectoryContentEntry& entry :
+ file_accessor->ListDirectoryContent(q.front())) {
+ // Skip hidden and filtered files.
+ if ((!params.include_hidden_files && IsHiddenFile(entry.path)) ||
+ (params.filter_callback && !params.filter_callback.Run(entry.path)))
+ continue;
+
+ // Store relative path.
+ all_files.emplace_back();
+ const bool success =
+ params.src_dir.AppendRelativePath(entry.path, &all_files.back());
DCHECK(success);
- all_files.push_back(relative_path);
- }
- if (iter->is_directory) {
- std::vector<FileAccessor::DirectoryContentEntry> subentries =
- params.file_accessor()->ListDirectoryContent(entry_path);
- entries.insert(entries.end(), subentries.begin(), subentries.end());
+ if (entry.is_directory)
+ q.push(std::move(entry.path));
}
}
+
+ files_to_add = all_files;
}
std::unique_ptr<internal::ZipWriter> zip_writer;
+
#if defined(OS_POSIX)
- if (params.dest_fd() != base::kInvalidPlatformFile) {
- DCHECK(params.dest_file().empty());
+ if (params.dest_fd != base::kInvalidPlatformFile) {
+ DCHECK(params.dest_file.empty());
zip_writer = internal::ZipWriter::CreateWithFd(
- params.dest_fd(), params.src_dir(), params.file_accessor());
+ params.dest_fd, params.src_dir, file_accessor);
if (!zip_writer)
return false;
}
#endif
+
if (!zip_writer) {
- zip_writer = internal::ZipWriter::Create(
- params.dest_file(), params.src_dir(), params.file_accessor());
+ zip_writer = internal::ZipWriter::Create(params.dest_file, params.src_dir,
+ file_accessor);
if (!zip_writer)
return false;
}
- return zip_writer->WriteEntries(*files_to_add);
+
+ zip_writer->SetProgressCallback(params.progress_callback,
+ params.progress_period);
+
+ return zip_writer->WriteEntries(files_to_add);
}
bool Unzip(const base::FilePath& src_file, const base::FilePath& dest_dir) {
@@ -179,7 +168,7 @@ bool Unzip(const base::FilePath& src_file, const base::FilePath& dest_dir) {
bool UnzipWithFilterCallback(const base::FilePath& src_file,
const base::FilePath& dest_dir,
- const FilterCallback& filter_cb,
+ FilterCallback filter_cb,
bool log_skipped_files) {
base::File file(src_file, base::File::FLAG_OPEN | base::File::FLAG_READ);
if (!file.IsValid()) {
@@ -189,14 +178,14 @@ bool UnzipWithFilterCallback(const base::FilePath& src_file,
return UnzipWithFilterAndWriters(
file.GetPlatformFile(),
base::BindRepeating(&CreateFilePathWriterDelegate, dest_dir),
- base::BindRepeating(&CreateDirectory, dest_dir), filter_cb,
+ base::BindRepeating(&CreateDirectory, dest_dir), std::move(filter_cb),
log_skipped_files);
}
bool UnzipWithFilterAndWriters(const base::PlatformFile& src_file,
- const WriterFactory& writer_factory,
- const DirectoryCreator& directory_creator,
- const FilterCallback& filter_cb,
+ WriterFactory writer_factory,
+ DirectoryCreator directory_creator,
+ FilterCallback filter_cb,
bool log_skipped_files) {
ZipReader reader;
if (!reader.OpenFromPlatformFile(src_file)) {
@@ -239,14 +228,15 @@ bool UnzipWithFilterAndWriters(const base::PlatformFile& src_file,
bool ZipWithFilterCallback(const base::FilePath& src_dir,
const base::FilePath& dest_file,
- const FilterCallback& filter_cb) {
+ FilterCallback filter_cb) {
DCHECK(base::DirectoryExists(src_dir));
- ZipParams params(src_dir, dest_file);
- params.set_filter_callback(filter_cb);
- return Zip(params);
+ return Zip({.src_dir = src_dir,
+ .dest_file = dest_file,
+ .filter_callback = std::move(filter_cb)});
}
-bool Zip(const base::FilePath& src_dir, const base::FilePath& dest_file,
+bool Zip(const base::FilePath& src_dir,
+ const base::FilePath& dest_file,
bool include_hidden_files) {
if (include_hidden_files) {
return ZipWithFilterCallback(src_dir, dest_file,
@@ -259,12 +249,12 @@ bool Zip(const base::FilePath& src_dir, const base::FilePath& dest_file,
#if defined(OS_POSIX)
bool ZipFiles(const base::FilePath& src_dir,
- const std::vector<base::FilePath>& src_relative_paths,
+ Paths src_relative_paths,
int dest_fd) {
DCHECK(base::DirectoryExists(src_dir));
- ZipParams params(src_dir, dest_fd);
- params.set_files_to_zip(src_relative_paths);
- return Zip(params);
+ return Zip({.src_dir = src_dir,
+ .dest_fd = dest_fd,
+ .src_files = src_relative_paths});
}
#endif // defined(OS_POSIX)
diff --git a/deps/v8/third_party/zlib/google/zip.h b/deps/v8/third_party/zlib/google/zip.h
index 4f64a8aca8..ecd7ba02b4 100644
--- a/deps/v8/third_party/zlib/google/zip.h
+++ b/deps/v8/third_party/zlib/google/zip.h
@@ -5,9 +5,13 @@
#ifndef THIRD_PARTY_ZLIB_GOOGLE_ZIP_H_
#define THIRD_PARTY_ZLIB_GOOGLE_ZIP_H_
+#include <cstdint>
+#include <ostream>
+#include <utility>
#include <vector>
#include "base/callback.h"
+#include "base/containers/span.h"
#include "base/files/file_path.h"
#include "base/files/platform_file.h"
#include "base/time/time.h"
@@ -31,8 +35,6 @@ class FileAccessor {
virtual ~FileAccessor() = default;
struct DirectoryContentEntry {
- DirectoryContentEntry(const base::FilePath& path, bool is_directory)
- : path(path), is_directory(is_directory) {}
base::FilePath path;
bool is_directory = false;
};
@@ -48,72 +50,75 @@ class FileAccessor {
virtual base::Time GetLastModifiedTime(const base::FilePath& path) = 0;
};
-class ZipParams {
- public:
- ZipParams(const base::FilePath& src_dir, const base::FilePath& dest_file);
-#if defined(OS_POSIX)
- // Does not take ownership of |dest_fd|.
- ZipParams(const base::FilePath& src_dir, int dest_fd);
+// Progress of a ZIP creation operation.
+struct Progress {
+ // Total number of bytes read from files getting zipped so far.
+ std::int64_t bytes = 0;
- int dest_fd() const { return dest_fd_; }
-#endif
+ // Number of file entries added to the ZIP so far.
+ // A file entry is added after its bytes have been processed.
+ int files = 0;
+
+ // Number of directory entries added to the ZIP so far.
+ // A directory entry is added before items in it.
+ int directories = 0;
+};
+
+// Prints Progress to output stream.
+std::ostream& operator<<(std::ostream& out, const Progress& progress);
+
+// Callback reporting the progress of a ZIP creation operation.
+//
+// This callback returns a boolean indicating whether the ZIP creation operation
+// should continue. If it returns false once, then the ZIP creation operation is
+// immediately cancelled and the callback won't be called again.
+using ProgressCallback = base::RepeatingCallback<bool(const Progress&)>;
+
+using FilterCallback = base::RepeatingCallback<bool(const base::FilePath&)>;
+
+using Paths = base::span<const base::FilePath>;
+
+// ZIP creation parameters and options.
+struct ZipParams {
+ // Source directory.
+ base::FilePath src_dir;
+
+ // Destination file path.
+ // Either dest_file or dest_fd should be set, but not both.
+ base::FilePath dest_file;
- const base::FilePath& src_dir() const { return src_dir_; }
-
- const base::FilePath& dest_file() const { return dest_file_; }
-
- // Restricts the files actually zipped to the paths listed in
- // |src_relative_paths|. They must be relative to the |src_dir| passed in the
- // constructor and will be used as the file names in the created zip file. All
- // source paths must be under |src_dir| in the file system hierarchy.
- void set_files_to_zip(const std::vector<base::FilePath>& src_relative_paths) {
- src_files_ = src_relative_paths;
- }
- const std::vector<base::FilePath>& files_to_zip() const { return src_files_; }
-
- using FilterCallback = base::RepeatingCallback<bool(const base::FilePath&)>;
- void set_filter_callback(FilterCallback filter_callback) {
- filter_callback_ = filter_callback;
- }
- const FilterCallback& filter_callback() const { return filter_callback_; }
-
- void set_include_hidden_files(bool include_hidden_files) {
- include_hidden_files_ = include_hidden_files;
- }
- bool include_hidden_files() const { return include_hidden_files_; }
-
- // Sets a custom file accessor for file operations. Default is to directly
- // access the files (with fopen and the rest).
- // Useful in cases where running in a sandbox process and file access has to
- // go through IPC, for example.
- void set_file_accessor(std::unique_ptr<FileAccessor> file_accessor) {
- file_accessor_ = std::move(file_accessor);
- }
- FileAccessor* file_accessor() const { return file_accessor_.get(); }
-
- private:
- base::FilePath src_dir_;
-
- base::FilePath dest_file_;
#if defined(OS_POSIX)
- int dest_fd_ = base::kInvalidPlatformFile;
+ // Destination file passed a file descriptor.
+ // Either dest_file or dest_fd should be set, but not both.
+ int dest_fd = base::kInvalidPlatformFile;
#endif
- // The relative paths to the files that should be included in the zip file. If
- // this is empty, all files in |src_dir_| are included.
- std::vector<base::FilePath> src_files_;
+ // The relative paths to the files that should be included in the ZIP file. If
+ // this is empty, all files in |src_dir| are included.
+ //
+ // These paths must be relative to |src_dir| and will be used as the file
+ // names in the created zip file. All files must be under |src_dir| in the
+ // file system hierarchy.
+ Paths src_files;
// Filter used to exclude files from the ZIP file. Only effective when
- // |src_files_| is empty.
- FilterCallback filter_callback_;
+ // |src_files| is empty.
+ FilterCallback filter_callback;
+
+ // Optional progress reporting callback.
+ ProgressCallback progress_callback;
+
+ // Progress reporting period. The final callback is always called when the ZIP
+ // creation operation completes.
+ base::TimeDelta progress_period;
// Whether hidden files should be included in the ZIP file. Only effective
- // when |src_files_| is empty.
- bool include_hidden_files_ = true;
+ // when |src_files| is empty.
+ bool include_hidden_files = true;
- // Abstraction around file system access used to read files. An implementation
- // that accesses files directly is provided by default.
- std::unique_ptr<FileAccessor> file_accessor_;
+ // Abstraction around file system access used to read files. If left null, an
+ // implementation that accesses files directly is used.
+ FileAccessor* file_accessor = nullptr; // Not owned
};
// Zip files specified into a ZIP archives. The source files and ZIP destination
@@ -125,15 +130,15 @@ bool Zip(const ZipParams& params);
// of src_dir will be at the root level of the created zip. For each file in
// src_dir, include it only if the callback |filter_cb| returns true. Otherwise
// omit it.
-using FilterCallback = base::RepeatingCallback<bool(const base::FilePath&)>;
bool ZipWithFilterCallback(const base::FilePath& src_dir,
const base::FilePath& dest_file,
- const FilterCallback& filter_cb);
+ FilterCallback filter_cb);
// Convenience method for callers who don't need to set up the filter callback.
// If |include_hidden_files| is true, files starting with "." are included.
// Otherwise they are omitted.
-bool Zip(const base::FilePath& src_dir, const base::FilePath& dest_file,
+bool Zip(const base::FilePath& src_dir,
+ const base::FilePath& dest_file,
bool include_hidden_files);
#if defined(OS_POSIX)
@@ -143,7 +148,7 @@ bool Zip(const base::FilePath& src_dir, const base::FilePath& dest_file,
// file names in the created zip file. All source paths must be under |src_dir|
// in the file system hierarchy.
bool ZipFiles(const base::FilePath& src_dir,
- const std::vector<base::FilePath>& src_relative_paths,
+ Paths src_relative_paths,
int dest_fd);
#endif // defined(OS_POSIX)
@@ -152,10 +157,9 @@ bool ZipFiles(const base::FilePath& src_dir,
// returns true. Otherwise omit it.
// If |log_skipped_files| is true, files skipped during extraction are printed
// to debug log.
-using FilterCallback = base::RepeatingCallback<bool(const base::FilePath&)>;
bool UnzipWithFilterCallback(const base::FilePath& zip_file,
const base::FilePath& dest_dir,
- const FilterCallback& filter_cb,
+ FilterCallback filter_cb,
bool log_skipped_files);
// Unzip the contents of zip_file, using the writers provided by writer_factory.
@@ -168,9 +172,9 @@ typedef base::RepeatingCallback<std::unique_ptr<WriterDelegate>(
WriterFactory;
typedef base::RepeatingCallback<bool(const base::FilePath&)> DirectoryCreator;
bool UnzipWithFilterAndWriters(const base::PlatformFile& zip_file,
- const WriterFactory& writer_factory,
- const DirectoryCreator& directory_creator,
- const FilterCallback& filter_cb,
+ WriterFactory writer_factory,
+ DirectoryCreator directory_creator,
+ FilterCallback filter_cb,
bool log_skipped_files);
// Unzip the contents of zip_file into dest_dir.
diff --git a/deps/v8/third_party/zlib/google/zip_reader_unittest.cc b/deps/v8/third_party/zlib/google/zip_reader_unittest.cc
index bba4365298..44134f886e 100644
--- a/deps/v8/third_party/zlib/google/zip_reader_unittest.cc
+++ b/deps/v8/third_party/zlib/google/zip_reader_unittest.cc
@@ -20,6 +20,7 @@
#include "base/path_service.h"
#include "base/run_loop.h"
#include "base/stl_util.h"
+#include "base/strings/string_piece.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/task_environment.h"
@@ -510,12 +511,12 @@ TEST_F(ZipReaderTest, ExtractCurrentEntryToString) {
if (i > 0) {
// Exact byte read limit: must pass.
EXPECT_TRUE(reader.ExtractCurrentEntryToString(i, &contents));
- EXPECT_EQ(base::StringPiece("0123456", i).as_string(), contents);
+ EXPECT_EQ(std::string(base::StringPiece("0123456", i)), contents);
}
// More than necessary byte read limit: must pass.
EXPECT_TRUE(reader.ExtractCurrentEntryToString(16, &contents));
- EXPECT_EQ(base::StringPiece("0123456", i).as_string(), contents);
+ EXPECT_EQ(std::string(base::StringPiece("0123456", i)), contents);
}
reader.Close();
}
diff --git a/deps/v8/third_party/zlib/google/zip_unittest.cc b/deps/v8/third_party/zlib/google/zip_unittest.cc
index 10f2ef7a97..cf914d9f06 100644
--- a/deps/v8/third_party/zlib/google/zip_unittest.cc
+++ b/deps/v8/third_party/zlib/google/zip_unittest.cc
@@ -21,6 +21,7 @@
#include "base/path_service.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
+#include "base/test/bind.h"
#include "build/build_config.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
@@ -78,13 +79,10 @@ class VirtualFileSystem : public zip::FileAccessor {
DCHECK(success);
files_[bar2_txt_path] = std::move(file);
- file_tree_[test_dir] = std::vector<DirectoryContentEntry>{
- DirectoryContentEntry(foo_txt_path, /*is_dir=*/false),
- DirectoryContentEntry(bar_dir, /*is_dir=*/true)};
- file_tree_[bar_dir] = std::vector<DirectoryContentEntry>{
- DirectoryContentEntry(bar1_txt_path, /*is_dir=*/false),
- DirectoryContentEntry(bar2_txt_path, /*is_dir=*/false)};
+ file_tree_[test_dir] = {{foo_txt_path, false}, {bar_dir, true}};
+ file_tree_[bar_dir] = {{bar1_txt_path, false}, {bar2_txt_path, false}};
}
+
~VirtualFileSystem() override = default;
private:
@@ -108,7 +106,7 @@ class VirtualFileSystem : public zip::FileAccessor {
auto iter = file_tree_.find(dir);
if (iter == file_tree_.end()) {
NOTREACHED();
- return std::vector<DirectoryContentEntry>();
+ return {};
}
return iter->second;
}
@@ -131,10 +129,7 @@ constexpr char VirtualFileSystem::kBar2Content[];
// Make the test a PlatformTest to setup autorelease pools properly on Mac.
class ZipTest : public PlatformTest {
protected:
- enum ValidYearType {
- VALID_YEAR,
- INVALID_YEAR
- };
+ enum ValidYearType { VALID_YEAR, INVALID_YEAR };
virtual void SetUp() {
PlatformTest::SetUp();
@@ -161,20 +156,17 @@ class ZipTest : public PlatformTest {
base::FilePath(FILE_PATH_LITERAL("foo/bar/.hidden")));
}
- virtual void TearDown() {
- PlatformTest::TearDown();
- }
+ virtual void TearDown() { PlatformTest::TearDown(); }
bool GetTestDataDirectory(base::FilePath* path) {
bool success = base::PathService::Get(base::DIR_SOURCE_ROOT, path);
EXPECT_TRUE(success);
if (!success)
return false;
- *path = path->AppendASCII("third_party");
- *path = path->AppendASCII("zlib");
- *path = path->AppendASCII("google");
- *path = path->AppendASCII("test");
- *path = path->AppendASCII("data");
+ for (const base::StringPiece s :
+ {"third_party", "zlib", "google", "test", "data"}) {
+ *path = path->AppendASCII(s);
+ }
return true;
}
@@ -193,7 +185,8 @@ class ZipTest : public PlatformTest {
ASSERT_TRUE(GetTestDataDirectory(&original_dir));
original_dir = original_dir.AppendASCII("test");
- base::FileEnumerator files(test_dir_, true,
+ base::FileEnumerator files(
+ test_dir_, true,
base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);
base::FilePath unzipped_entry_path = files.Next();
size_t count = 0;
@@ -211,15 +204,19 @@ class ZipTest : public PlatformTest {
bool append_relative_path_success =
test_dir_.AppendRelativePath(unzipped_entry_path, &relative_path);
if (!append_relative_path_success) {
- LOG(ERROR) << "Append relative path failed, params: "
- << test_dir_.value() << " and "
- << unzipped_entry_path.value();
+ LOG(ERROR) << "Append relative path failed, params: " << test_dir_
+ << " and " << unzipped_entry_path;
}
base::FilePath original_path = original_dir.Append(relative_path);
- LOG(ERROR) << "Comparing original " << original_path.value()
- << " and unzipped file " << unzipped_entry_path.value()
- << " result: "
- << base::ContentsEqual(original_path, unzipped_entry_path);
+ const bool equal =
+ base::ContentsEqual(original_path, unzipped_entry_path);
+ if (equal) {
+ LOG(INFO) << "Original and unzipped file '" << relative_path
+ << "' are equal";
+ } else {
+ LOG(ERROR) << "Original and unzipped file '" << relative_path
+ << "' are different";
+ }
// EXPECT_TRUE(base::ContentsEqual(original_path, unzipped_entry_path))
// << "Contents differ between original " << original_path.value()
// << " and unzipped file " << unzipped_entry_path.value();
@@ -487,8 +484,8 @@ TEST_F(ZipTest, ZipFiles) {
base::File zip_file(zip_name,
base::File::FLAG_CREATE | base::File::FLAG_WRITE);
ASSERT_TRUE(zip_file.IsValid());
- EXPECT_TRUE(zip::ZipFiles(src_dir, zip_file_list_,
- zip_file.GetPlatformFile()));
+ EXPECT_TRUE(
+ zip::ZipFiles(src_dir, zip_file_list_, zip_file.GetPlatformFile()));
zip_file.Close();
zip::ZipReader reader;
@@ -524,8 +521,8 @@ TEST_F(ZipTest, UnzipFilesWithIncorrectSize) {
for (int i = 0; i < 8; i++) {
SCOPED_TRACE(base::StringPrintf("Processing %d.txt", i));
- base::FilePath file_path = temp_dir.AppendASCII(
- base::StringPrintf("%d.txt", i));
+ base::FilePath file_path =
+ temp_dir.AppendASCII(base::StringPrintf("%d.txt", i));
int64_t file_size = -1;
EXPECT_TRUE(base::GetFileSize(file_path, &file_size));
EXPECT_EQ(static_cast<int64_t>(i), file_size);
@@ -535,8 +532,11 @@ TEST_F(ZipTest, UnzipFilesWithIncorrectSize) {
TEST_F(ZipTest, ZipWithFileAccessor) {
base::FilePath zip_file;
ASSERT_TRUE(base::CreateTemporaryFile(&zip_file));
- zip::ZipParams params(base::FilePath(FILE_PATH_LITERAL("/test")), zip_file);
- params.set_file_accessor(std::make_unique<VirtualFileSystem>());
+ VirtualFileSystem file_accessor;
+ const zip::ZipParams params{
+ .src_dir = base::FilePath(FILE_PATH_LITERAL("/test")),
+ .dest_file = zip_file,
+ .file_accessor = &file_accessor};
ASSERT_TRUE(zip::Zip(params));
base::ScopedTempDir scoped_temp_dir;
@@ -557,4 +557,125 @@ TEST_F(ZipTest, ZipWithFileAccessor) {
EXPECT_EQ(VirtualFileSystem::kBar2Content, file_content);
}
+// Tests progress reporting while zipping files.
+TEST_F(ZipTest, ZipProgress) {
+ base::FilePath src_dir;
+ ASSERT_TRUE(GetTestDataDirectory(&src_dir));
+ src_dir = src_dir.AppendASCII("test");
+
+ base::ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+ base::FilePath zip_file = temp_dir.GetPath().AppendASCII("out.zip");
+
+ int progress_count = 0;
+ zip::Progress last_progress;
+
+ zip::ProgressCallback progress_callback =
+ base::BindLambdaForTesting([&](const zip::Progress& progress) {
+ progress_count++;
+ LOG(INFO) << "Progress #" << progress_count << ": " << progress;
+
+ // Progress should only go forwards.
+ EXPECT_GE(progress.bytes, last_progress.bytes);
+ EXPECT_GE(progress.files, last_progress.files);
+ EXPECT_GE(progress.directories, last_progress.directories);
+
+ last_progress = progress;
+ return true;
+ });
+
+ EXPECT_TRUE(zip::Zip({.src_dir = src_dir,
+ .dest_file = zip_file,
+ .progress_callback = std::move(progress_callback)}));
+
+ EXPECT_EQ(progress_count, 14);
+ EXPECT_EQ(last_progress.bytes, 13546);
+ EXPECT_EQ(last_progress.files, 5);
+ EXPECT_EQ(last_progress.directories, 2);
+
+ TestUnzipFile(zip_file, true);
+}
+
+// Tests throttling of progress reporting while zipping files.
+TEST_F(ZipTest, ZipProgressPeriod) {
+ base::FilePath src_dir;
+ ASSERT_TRUE(GetTestDataDirectory(&src_dir));
+ src_dir = src_dir.AppendASCII("test");
+
+ base::ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+ base::FilePath zip_file = temp_dir.GetPath().AppendASCII("out.zip");
+
+ int progress_count = 0;
+ zip::Progress last_progress;
+
+ zip::ProgressCallback progress_callback =
+ base::BindLambdaForTesting([&](const zip::Progress& progress) {
+ progress_count++;
+ LOG(INFO) << "Progress #" << progress_count << ": " << progress;
+
+ // Progress should only go forwards.
+ EXPECT_GE(progress.bytes, last_progress.bytes);
+ EXPECT_GE(progress.files, last_progress.files);
+ EXPECT_GE(progress.directories, last_progress.directories);
+
+ last_progress = progress;
+ return true;
+ });
+
+ EXPECT_TRUE(zip::Zip({.src_dir = src_dir,
+ .dest_file = zip_file,
+ .progress_callback = std::move(progress_callback),
+ .progress_period = base::TimeDelta::FromHours(1)}));
+
+ // We expect only 2 progress reports: the first one, and the last one.
+ EXPECT_EQ(progress_count, 2);
+ EXPECT_EQ(last_progress.bytes, 13546);
+ EXPECT_EQ(last_progress.files, 5);
+ EXPECT_EQ(last_progress.directories, 2);
+
+ TestUnzipFile(zip_file, true);
+}
+
+// Tests cancellation while zipping files.
+TEST_F(ZipTest, ZipCancel) {
+ base::FilePath src_dir;
+ ASSERT_TRUE(GetTestDataDirectory(&src_dir));
+ src_dir = src_dir.AppendASCII("test");
+
+ base::ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+ base::FilePath zip_file = temp_dir.GetPath().AppendASCII("out.zip");
+
+ // First: establish the number of possible interruption points.
+ int progress_count = 0;
+
+ EXPECT_TRUE(zip::Zip({.src_dir = src_dir,
+ .dest_file = zip_file,
+ .progress_callback = base::BindLambdaForTesting(
+ [&progress_count](const zip::Progress&) {
+ progress_count++;
+ return true;
+ })}));
+
+ EXPECT_EQ(progress_count, 14);
+
+ // Second: exercise each and every interruption point.
+ for (int i = progress_count; i > 0; i--) {
+ int j = 0;
+ EXPECT_FALSE(zip::Zip({.src_dir = src_dir,
+ .dest_file = zip_file,
+ .progress_callback = base::BindLambdaForTesting(
+ [i, &j](const zip::Progress&) {
+ j++;
+ // Callback shouldn't be called again after
+ // having returned false once.
+ EXPECT_LE(j, i);
+ return j < i;
+ })}));
+
+ EXPECT_EQ(j, i);
+ }
+}
+
} // namespace
diff --git a/deps/v8/third_party/zlib/google/zip_writer.cc b/deps/v8/third_party/zlib/google/zip_writer.cc
index 6f38d42b6b..de1930e803 100644
--- a/deps/v8/third_party/zlib/google/zip_writer.cc
+++ b/deps/v8/third_party/zlib/google/zip_writer.cc
@@ -12,35 +12,51 @@
namespace zip {
namespace internal {
-namespace {
+bool ZipWriter::ShouldContinue() {
+ if (!progress_callback_)
+ return true;
-// Numbers of pending entries that trigger writting them to the ZIP file.
-constexpr size_t kMaxPendingEntriesCount = 50;
+ const base::TimeTicks now = base::TimeTicks::Now();
+ if (next_progress_report_time_ > now)
+ return true;
-bool AddFileContentToZip(zipFile zip_file,
- base::File file,
- const base::FilePath& file_path) {
- int num_bytes;
+ next_progress_report_time_ = now + progress_period_;
+ if (progress_callback_.Run(progress_))
+ return true;
+
+ LOG(ERROR) << "Cancelling ZIP creation";
+ return false;
+}
+
+bool ZipWriter::AddFileContent(const base::FilePath& path, base::File file) {
char buf[zip::internal::kZipBufSize];
- do {
- num_bytes = file.ReadAtCurrentPos(buf, zip::internal::kZipBufSize);
-
- if (num_bytes > 0) {
- if (zipWriteInFileInZip(zip_file, buf, num_bytes) != ZIP_OK) {
- DLOG(ERROR) << "Could not write data to zip for path "
- << file_path.value();
- return false;
- }
+
+ while (ShouldContinue()) {
+ const int num_bytes =
+ file.ReadAtCurrentPos(buf, zip::internal::kZipBufSize);
+
+ if (num_bytes < 0) {
+ DPLOG(ERROR) << "Cannot read file '" << path << "'";
+ return false;
}
- } while (num_bytes > 0);
- return true;
+ if (num_bytes == 0)
+ return true;
+
+ if (zipWriteInFileInZip(zip_file_, buf, num_bytes) != ZIP_OK) {
+ DLOG(ERROR) << "Cannot write data from file '" << path << "' to ZIP";
+ return false;
+ }
+
+ progress_.bytes += num_bytes;
+ }
+
+ return false;
}
-bool OpenNewFileEntry(zipFile zip_file,
- const base::FilePath& path,
- bool is_directory,
- base::Time last_modified) {
+bool ZipWriter::OpenNewFileEntry(const base::FilePath& path,
+ bool is_directory,
+ base::Time last_modified) {
std::string str_path = path.AsUTF8Unsafe();
#if defined(OS_WIN)
base::ReplaceSubstringsAfterOffset(&str_path, 0u, "\\", "/");
@@ -48,41 +64,33 @@ bool OpenNewFileEntry(zipFile zip_file,
if (is_directory)
str_path += "/";
- return zip::internal::ZipOpenNewFileInZip(zip_file, str_path, last_modified);
+ return zip::internal::ZipOpenNewFileInZip(zip_file_, str_path, last_modified);
}
-bool CloseNewFileEntry(zipFile zip_file) {
- return zipCloseFileInZip(zip_file) == ZIP_OK;
+bool ZipWriter::CloseNewFileEntry() {
+ return zipCloseFileInZip(zip_file_) == ZIP_OK;
}
-bool AddFileEntryToZip(zipFile zip_file,
- const base::FilePath& path,
- base::File file) {
+bool ZipWriter::AddFileEntry(const base::FilePath& path, base::File file) {
base::File::Info file_info;
if (!file.GetInfo(&file_info))
return false;
- if (!OpenNewFileEntry(zip_file, path, /*is_directory=*/false,
- file_info.last_modified))
- return false;
-
- bool success = AddFileContentToZip(zip_file, std::move(file), path);
- if (!CloseNewFileEntry(zip_file))
+ if (!OpenNewFileEntry(path, /*is_directory=*/false, file_info.last_modified))
return false;
- return success;
+ const bool success = AddFileContent(path, std::move(file));
+ progress_.files++;
+ return CloseNewFileEntry() && success;
}
-bool AddDirectoryEntryToZip(zipFile zip_file,
- const base::FilePath& path,
- base::Time last_modified) {
- return OpenNewFileEntry(zip_file, path, /*is_directory=*/true,
- last_modified) &&
- CloseNewFileEntry(zip_file);
+bool ZipWriter::AddDirectoryEntry(const base::FilePath& path,
+ base::Time last_modified) {
+ progress_.directories++;
+ return OpenNewFileEntry(path, /*is_directory=*/true, last_modified) &&
+ CloseNewFileEntry() && ShouldContinue();
}
-} // namespace
-
#if defined(OS_POSIX)
// static
std::unique_ptr<ZipWriter> ZipWriter::CreateWithFd(
@@ -92,10 +100,12 @@ std::unique_ptr<ZipWriter> ZipWriter::CreateWithFd(
DCHECK(zip_file_fd != base::kInvalidPlatformFile);
zipFile zip_file =
internal::OpenFdForZipping(zip_file_fd, APPEND_STATUS_CREATE);
+
if (!zip_file) {
- DLOG(ERROR) << "Couldn't create ZIP file for FD " << zip_file_fd;
+ DLOG(ERROR) << "Cannot create ZIP file for FD " << zip_file_fd;
return nullptr;
}
+
return std::unique_ptr<ZipWriter>(
new ZipWriter(zip_file, root_dir, file_accessor));
}
@@ -109,10 +119,12 @@ std::unique_ptr<ZipWriter> ZipWriter::Create(
DCHECK(!zip_file_path.empty());
zipFile zip_file = internal::OpenForZipping(zip_file_path.AsUTF8Unsafe(),
APPEND_STATUS_CREATE);
+
if (!zip_file) {
- DLOG(ERROR) << "Couldn't create ZIP file at path " << zip_file_path;
+ DLOG(ERROR) << "Cannot create ZIP file '" << zip_file_path << "'";
return nullptr;
}
+
return std::unique_ptr<ZipWriter>(
new ZipWriter(zip_file, root_dir, file_accessor));
}
@@ -123,80 +135,83 @@ ZipWriter::ZipWriter(zipFile zip_file,
: zip_file_(zip_file), root_dir_(root_dir), file_accessor_(file_accessor) {}
ZipWriter::~ZipWriter() {
- DCHECK(pending_entries_.empty());
+ if (zip_file_)
+ zipClose(zip_file_, nullptr);
}
-bool ZipWriter::WriteEntries(const std::vector<base::FilePath>& paths) {
+bool ZipWriter::WriteEntries(Paths paths) {
return AddEntries(paths) && Close();
}
-bool ZipWriter::AddEntries(const std::vector<base::FilePath>& paths) {
- DCHECK(zip_file_);
- pending_entries_.insert(pending_entries_.end(), paths.begin(), paths.end());
- return FlushEntriesIfNeeded(/*force=*/false);
-}
-
bool ZipWriter::Close() {
- bool success = FlushEntriesIfNeeded(/*force=*/true) &&
- zipClose(zip_file_, nullptr) == ZIP_OK;
+ const bool success = zipClose(zip_file_, nullptr) == ZIP_OK;
zip_file_ = nullptr;
+
+ // Call the progress callback one last time with the final progress status.
+ if (progress_callback_ && !progress_callback_.Run(progress_)) {
+ LOG(ERROR) << "Cancelling ZIP creation at the end";
+ return false;
+ }
+
return success;
}
-bool ZipWriter::FlushEntriesIfNeeded(bool force) {
- if (pending_entries_.size() < kMaxPendingEntriesCount && !force)
- return true;
-
- while (pending_entries_.size() >= kMaxPendingEntriesCount ||
- (force && !pending_entries_.empty())) {
- size_t entry_count =
- std::min(pending_entries_.size(), kMaxPendingEntriesCount);
- std::vector<base::FilePath> relative_paths;
- std::vector<base::FilePath> absolute_paths;
- relative_paths.insert(relative_paths.begin(), pending_entries_.begin(),
- pending_entries_.begin() + entry_count);
- for (auto iter = pending_entries_.begin();
- iter != pending_entries_.begin() + entry_count; ++iter) {
- // The FileAccessor requires absolute paths.
- absolute_paths.push_back(root_dir_.Append(*iter));
+bool ZipWriter::AddEntries(Paths paths) {
+ // Constructed outside the loop in order to reuse its internal buffer.
+ std::vector<base::FilePath> absolute_paths;
+
+ while (!paths.empty()) {
+ // Work with chunks of 50 paths at most.
+ const size_t n = std::min<size_t>(paths.size(), 50);
+ const Paths relative_paths = paths.subspan(0, n);
+ paths = paths.subspan(n, paths.size() - n);
+
+ // FileAccessor requires absolute paths.
+ absolute_paths.clear();
+ absolute_paths.reserve(n);
+ for (const base::FilePath& relative_path : relative_paths) {
+ absolute_paths.push_back(root_dir_.Append(relative_path));
}
- pending_entries_.erase(pending_entries_.begin(),
- pending_entries_.begin() + entry_count);
+
+ DCHECK_EQ(relative_paths.size(), n);
+ DCHECK_EQ(absolute_paths.size(), n);
// We don't know which paths are files and which ones are directories, and
- // we want to avoid making a call to file_accessor_ for each entry. Open the
- // files instead, invalid files are returned for directories.
+ // we want to avoid making a call to file_accessor_ for each entry. Try to
+ // open all of the paths as files. We'll get invalid file descriptors for
+ // directories.
std::vector<base::File> files =
file_accessor_->OpenFilesForReading(absolute_paths);
- DCHECK_EQ(files.size(), relative_paths.size());
- for (size_t i = 0; i < files.size(); i++) {
+ DCHECK_EQ(files.size(), n);
+
+ for (size_t i = 0; i < n; i++) {
const base::FilePath& relative_path = relative_paths[i];
const base::FilePath& absolute_path = absolute_paths[i];
- base::File file = std::move(files[i]);
+ base::File& file = files[i];
+
if (file.IsValid()) {
- if (!AddFileEntryToZip(zip_file_, relative_path, std::move(file))) {
- LOG(ERROR) << "Failed to write file " << relative_path.value()
- << " to ZIP file.";
+ if (!AddFileEntry(relative_path, std::move(file))) {
+ LOG(ERROR) << "Cannot add file '" << relative_path << "' to ZIP";
return false;
}
} else {
- // Missing file or directory case.
- base::Time last_modified =
+ // Either directory or missing file.
+ const base::Time last_modified =
file_accessor_->GetLastModifiedTime(absolute_path);
if (last_modified.is_null()) {
- LOG(ERROR) << "Failed to write entry " << relative_path.value()
- << " to ZIP file.";
+ LOG(ERROR) << "Missing file or directory '" << relative_path << "'";
return false;
}
+
DCHECK(file_accessor_->DirectoryExists(absolute_path));
- if (!AddDirectoryEntryToZip(zip_file_, relative_path, last_modified)) {
- LOG(ERROR) << "Failed to write directory " << relative_path.value()
- << " to ZIP file.";
+ if (!AddDirectoryEntry(relative_path, last_modified)) {
+ LOG(ERROR) << "Cannot add directory '" << relative_path << "' to ZIP";
return false;
}
}
}
}
+
return true;
}
diff --git a/deps/v8/third_party/zlib/google/zip_writer.h b/deps/v8/third_party/zlib/google/zip_writer.h
index bd2a727b94..489984f843 100644
--- a/deps/v8/third_party/zlib/google/zip_writer.h
+++ b/deps/v8/third_party/zlib/google/zip_writer.h
@@ -9,6 +9,7 @@
#include <vector>
#include "base/files/file_path.h"
+#include "base/time/time.h"
#include "build/build_config.h"
#include "third_party/zlib/google/zip.h"
@@ -31,7 +32,7 @@ namespace internal {
class ZipWriter {
public:
// Creates a writer that will write a ZIP file to |zip_file_fd|/|zip_file|
-// and which entries (specifies with AddEntries) are relative to |root_dir|.
+// and which entries (specified with WriteEntries) are relative to |root_dir|.
// All file reads are performed using |file_accessor|.
#if defined(OS_POSIX)
static std::unique_ptr<ZipWriter> CreateWithFd(int zip_file_fd,
@@ -43,36 +44,56 @@ class ZipWriter {
FileAccessor* file_accessor);
~ZipWriter();
- // Writes the files at |paths| to the ZIP file and closes this Zip file.
- // Note that the the FilePaths must be relative to |root_dir| specified in the
+ // Sets the optional progress callback. The callback is called once for each
+ // time |period|. The final callback is always called when the ZIP operation
+ // completes.
+ void SetProgressCallback(ProgressCallback callback, base::TimeDelta period) {
+ progress_callback_ = std::move(callback);
+ progress_period_ = std::move(period);
+ }
+
+ // Writes the files at |paths| to the ZIP file and closes this ZIP file.
+ // The file paths must be relative to |root_dir| specified in the
// Create method.
// Returns true if all entries were written successfuly.
- bool WriteEntries(const std::vector<base::FilePath>& paths);
+ bool WriteEntries(Paths paths);
private:
+ // Takes ownership of |zip_file|.
ZipWriter(zipFile zip_file,
const base::FilePath& root_dir,
FileAccessor* file_accessor);
- // Writes the pending entries to the ZIP file if there are at least
- // |kMaxPendingEntriesCount| of them. If |force| is true, all pending entries
- // are written regardless of how many there are.
- // Returns false if writing an entry fails, true if no entry was written or
- // there was no error writing entries.
- bool FlushEntriesIfNeeded(bool force);
+ // Regularly called during processing to check whether zipping should continue
+ // or should be cancelled.
+ bool ShouldContinue();
// Adds the files at |paths| to the ZIP file. These FilePaths must be relative
// to |root_dir| specified in the Create method.
- bool AddEntries(const std::vector<base::FilePath>& paths);
+ bool AddEntries(Paths paths);
+
+ // Adds file content to currently open file entry.
+ bool AddFileContent(const base::FilePath& path, base::File file);
+
+ // Adds a file entry (including file contents).
+ bool AddFileEntry(const base::FilePath& path, base::File file);
+
+ // Adds a directory entry.
+ bool AddDirectoryEntry(const base::FilePath& path, base::Time last_modified);
+
+ // Opens a file or directory entry.
+ bool OpenNewFileEntry(const base::FilePath& path,
+ bool is_directory,
+ base::Time last_modified);
+
+ // Closes the currently open entry.
+ bool CloseNewFileEntry();
// Closes the ZIP file.
// Returns true if successful, false otherwise (typically if an entry failed
// to be written).
bool Close();
- // The entries that have been added but not yet written to the ZIP file.
- std::vector<base::FilePath> pending_entries_;
-
// The actual zip file.
zipFile zip_file_;
@@ -82,10 +103,22 @@ class ZipWriter {
// Abstraction over file access methods used to read files.
FileAccessor* file_accessor_;
+ // Progress stats.
+ Progress progress_;
+
+ // Optional progress callback.
+ ProgressCallback progress_callback_;
+
+ // Optional progress reporting period.
+ base::TimeDelta progress_period_;
+
+ // Next time to report progress.
+ base::TimeTicks next_progress_report_time_ = base::TimeTicks::Now();
+
DISALLOW_COPY_AND_ASSIGN(ZipWriter);
};
} // namespace internal
} // namespace zip
-#endif // THIRD_PARTY_ZLIB_GOOGLE_ZIP_WRITER_H_ \ No newline at end of file
+#endif // THIRD_PARTY_ZLIB_GOOGLE_ZIP_WRITER_H_
diff --git a/deps/v8/tools/clusterfuzz/testdata/baseline/d8.py b/deps/v8/tools/clusterfuzz/testdata/baseline/d8.py
index 4a3d008077..cd729b9cf7 100644
--- a/deps/v8/tools/clusterfuzz/testdata/baseline/d8.py
+++ b/deps/v8/tools/clusterfuzz/testdata/baseline/d8.py
@@ -5,6 +5,8 @@
# for py2/py3 compatibility
from __future__ import print_function
+import sys
+
print("""
1
v8-foozzie source: name/to/a/file.js
@@ -15,3 +17,6 @@ v8-foozzie source: name/to/file.js
3
unknown
""")
+
+if '--bad-flag' in sys.argv:
+ print('bad behavior')
diff --git a/deps/v8/tools/clusterfuzz/testdata/build3/d8.py b/deps/v8/tools/clusterfuzz/testdata/build3/d8.py
index 824b222485..a48a591d1e 100644
--- a/deps/v8/tools/clusterfuzz/testdata/build3/d8.py
+++ b/deps/v8/tools/clusterfuzz/testdata/build3/d8.py
@@ -5,6 +5,8 @@
# for py2/py3 compatibility
from __future__ import print_function
+import sys
+
print("""
1
v8-foozzie source: name/to/a/file.js
@@ -15,3 +17,8 @@ v8-foozzie source: name/to/file.js
3
unknown
""")
+
+if '--bad-flag' in sys.argv:
+ print('bad behavior')
+if '--very-bad-flag' in sys.argv:
+ print('very bad behavior')
diff --git a/deps/v8/tools/clusterfuzz/testdata/failure_output_arch.txt b/deps/v8/tools/clusterfuzz/testdata/failure_output_arch.txt
new file mode 100644
index 0000000000..bf72649c3e
--- /dev/null
+++ b/deps/v8/tools/clusterfuzz/testdata/failure_output_arch.txt
@@ -0,0 +1,50 @@
+#
+# V8 correctness failure
+# V8 correctness configs: x64,ignition:x64,ignition_turbo
+# V8 correctness sources: f60
+# V8 correctness suppression:
+#
+# CHECK
+#
+# Compared x64,ignition with x64,ignition_turbo
+#
+# Flags of x64,ignition:
+--correctness-fuzzer-suppressions --expose-gc --fuzzing --allow-natives-for-differential-fuzzing --invoke-weak-callbacks --omit-quit --es-staging --wasm-staging --no-wasm-async-compilation --suppress-asm-messages --random-seed 12345 --turbo-filter=~ --noopt --liftoff --no-wasm-tier-up
+# Flags of x64,ignition_turbo:
+--correctness-fuzzer-suppressions --expose-gc --fuzzing --allow-natives-for-differential-fuzzing --invoke-weak-callbacks --omit-quit --es-staging --wasm-staging --no-wasm-async-compilation --suppress-asm-messages --random-seed 12345 --bad-flag
+#
+# Difference:
++ bad behavior
+#
+# Source file:
+name/to/file.js
+#
+### Start of configuration x64,ignition:
+
+1
+v8-foozzie source: name/to/a/file.js
+2
+v8-foozzie source: name/to/file.js
+ weird error
+ ^
+3
+unknown
+
+
+### End of configuration x64,ignition
+#
+### Start of configuration x64,ignition_turbo:
+
+1
+v8-foozzie source: name/to/a/file.js
+2
+v8-foozzie source: name/to/file.js
+ weird error
+ ^
+3
+unknown
+
+bad behavior
+
+### End of configuration x64,ignition_turbo
+
diff --git a/deps/v8/tools/clusterfuzz/testdata/failure_output_second.txt b/deps/v8/tools/clusterfuzz/testdata/failure_output_second.txt
new file mode 100644
index 0000000000..030168884f
--- /dev/null
+++ b/deps/v8/tools/clusterfuzz/testdata/failure_output_second.txt
@@ -0,0 +1,50 @@
+#
+# V8 correctness failure
+# V8 correctness configs: x64,ignition:ia32,ignition_turbo
+# V8 correctness sources: f60
+# V8 correctness suppression:
+#
+# CHECK
+#
+# Compared x64,ignition with ia32,ignition_turbo
+#
+# Flags of x64,ignition:
+--correctness-fuzzer-suppressions --expose-gc --fuzzing --allow-natives-for-differential-fuzzing --invoke-weak-callbacks --omit-quit --es-staging --wasm-staging --no-wasm-async-compilation --suppress-asm-messages --random-seed 12345 --turbo-filter=~ --noopt --liftoff --no-wasm-tier-up
+# Flags of ia32,ignition_turbo:
+--correctness-fuzzer-suppressions --expose-gc --fuzzing --allow-natives-for-differential-fuzzing --invoke-weak-callbacks --omit-quit --es-staging --wasm-staging --no-wasm-async-compilation --suppress-asm-messages --random-seed 12345 --very-bad-flag
+#
+# Difference:
++ very bad behavior
+#
+# Source file:
+name/to/file.js
+#
+### Start of configuration x64,ignition:
+
+1
+v8-foozzie source: name/to/a/file.js
+2
+v8-foozzie source: name/to/file.js
+ weird error
+ ^
+3
+unknown
+
+
+### End of configuration x64,ignition
+#
+### Start of configuration ia32,ignition_turbo:
+
+1
+v8-foozzie source: name/to/a/file.js
+2
+v8-foozzie source: name/to/file.js
+ weird other error
+^
+3
+unknown
+
+very bad behavior
+
+### End of configuration ia32,ignition_turbo
+
diff --git a/deps/v8/tools/clusterfuzz/v8_foozzie.py b/deps/v8/tools/clusterfuzz/v8_foozzie.py
index 9f3810c9f5..52b7954093 100755
--- a/deps/v8/tools/clusterfuzz/v8_foozzie.py
+++ b/deps/v8/tools/clusterfuzz/v8_foozzie.py
@@ -211,14 +211,14 @@ class ExecutionArgumentsConfig(object):
'default: bundled in the directory of this script',
default=DEFAULT_D8)
- def make_options(self, options, default_config=None):
+ def make_options(self, options, default_config=None, default_d8=None):
def get(name):
return getattr(options, '%s_%s' % (self.label, name))
config = default_config or get('config')
assert config in CONFIGS
- d8 = get('d8')
+ d8 = default_d8 or get('d8')
if not os.path.isabs(d8):
d8 = os.path.join(BASE_PATH, d8)
assert os.path.exists(d8)
@@ -239,6 +239,13 @@ class ExecutionConfig(object):
flags = getattr(options, label).flags
self.command = Command(options, label, d8, flags)
+ # Options for a fallback configuration only exist when comparing
+ # different architectures.
+ fallback_label = label + '_fallback'
+ self.fallback = None
+ if getattr(options, fallback_label, None):
+ self.fallback = ExecutionConfig(options, fallback_label)
+
@property
def flags(self):
return self.command.flags
@@ -278,7 +285,15 @@ def parse_args():
options.first = first_config_arguments.make_options(options)
options.second = second_config_arguments.make_options(options)
options.default = second_config_arguments.make_options(
- options, DEFAULT_CONFIG)
+ options, default_config=DEFAULT_CONFIG)
+
+ # Use fallback configurations only on diffrent architectures. In this
+ # case we are going to re-test against the first architecture.
+ if options.first.arch != options.second.arch:
+ options.second_fallback = second_config_arguments.make_options(
+ options, default_d8=options.first.d8)
+ options.default_fallback = second_config_arguments.make_options(
+ options, default_config=DEFAULT_CONFIG, default_d8=options.first.d8)
# Ensure we make a valid comparison.
if (options.first.d8 == options.second.d8 and
@@ -315,10 +330,12 @@ def fail_bailout(output, ignore_by_output_fun):
def format_difference(
- source_key, first_config, second_config,
- first_config_output, second_config_output, difference, source=None):
+ first_config, second_config,
+ first_config_output, second_config_output,
+ difference, source_key=None, source=None):
# The first three entries will be parsed by clusterfuzz. Format changes
# will require changes on the clusterfuzz side.
+ source_key = source_key or cluster_failures(source)
first_config_label = '%s,%s' % (first_config.arch, first_config.config)
second_config_label = '%s,%s' % (second_config.arch, second_config.config)
source_file_text = SOURCE_FILE_TEMPLATE % source if source else ''
@@ -376,6 +393,29 @@ def cluster_failures(source, known_failures=None):
return long_key[:ORIGINAL_SOURCE_HASH_LENGTH]
+class RepeatedRuns(object):
+ """Helper class for storing statistical data from repeated runs."""
+ def __init__(self, test_case, timeout, verbose):
+ self.test_case = test_case
+ self.timeout = timeout
+ self.verbose = verbose
+
+ # Stores if any run has crashed or was simulated.
+ self.has_crashed = False
+ self.simulated = False
+
+ def run(self, config):
+ comparison_output = config.command.run(
+ self.test_case, timeout=self.timeout, verbose=self.verbose)
+ self.has_crashed = self.has_crashed or comparison_output.HasCrashed()
+ self.simulated = self.simulated or config.is_error_simulation
+ return comparison_output
+
+ @property
+ def crash_state(self):
+ return '_simulated_crash_' if self.simulated else '_unexpected_crash_'
+
+
def run_comparisons(suppress, execution_configs, test_case, timeout,
verbose=True, ignore_crashes=True, source_key=None):
"""Runs different configurations and bails out on output difference.
@@ -393,20 +433,15 @@ def run_comparisons(suppress, execution_configs, test_case, timeout,
source_key: A fixed source key. If not given, it will be inferred from the
output.
"""
- run_test_case = lambda config: config.command.run(
- test_case, timeout=timeout, verbose=verbose)
+ runner = RepeatedRuns(test_case, timeout, verbose)
# Run the baseline configuration.
baseline_config = execution_configs[0]
- baseline_output = run_test_case(baseline_config)
- has_crashed = baseline_output.HasCrashed()
- simulated = baseline_config.is_error_simulation
+ baseline_output = runner.run(baseline_config)
# Iterate over the remaining configurations, run and compare.
for comparison_config in execution_configs[1:]:
- comparison_output = run_test_case(comparison_config)
- has_crashed = has_crashed or comparison_output.HasCrashed()
- simulated = simulated or comparison_config.is_error_simulation
+ comparison_output = runner.run(comparison_config)
difference, source = suppress.diff(baseline_output, comparison_output)
if difference:
@@ -416,12 +451,25 @@ def run_comparisons(suppress, execution_configs, test_case, timeout,
fail_bailout(baseline_output, suppress.ignore_by_output)
fail_bailout(comparison_output, suppress.ignore_by_output)
- source_key = source_key or cluster_failures(source)
+ # Check if a difference also occurs with the fallback configuration and
+ # give it precedence. E.g. we always prefer x64 differences.
+ if comparison_config.fallback:
+ fallback_output = runner.run(comparison_config.fallback)
+ fallback_difference, fallback_source = suppress.diff(
+ baseline_output, fallback_output)
+ if fallback_difference:
+ fail_bailout(fallback_output, suppress.ignore_by_output)
+ source = fallback_source
+ comparison_config = comparison_config.fallback
+ comparison_output = fallback_output
+ difference = fallback_difference
+
raise FailException(format_difference(
- source_key, baseline_config, comparison_config,
- baseline_output, comparison_output, difference, source))
+ baseline_config, comparison_config,
+ baseline_output, comparison_output,
+ difference, source_key, source))
- if has_crashed:
+ if runner.has_crashed:
if ignore_crashes:
# Show if a crash has happened in one of the runs and no difference was
# detected. This is only for the statistics during experiments.
@@ -429,9 +477,8 @@ def run_comparisons(suppress, execution_configs, test_case, timeout,
else:
# Subsume simulated and unexpected crashes (e.g. during smoke tests)
# with one failure state.
- crash_state = '_simulated_crash_' if simulated else '_unexpected_crash_'
raise FailException(FAILURE_HEADER_TEMPLATE % dict(
- configs='', source_key='', suppression=crash_state))
+ configs='', source_key='', suppression=runner.crash_state))
def main():
@@ -448,7 +495,7 @@ def main():
content_bailout(content, suppress.ignore_by_content)
# Prepare the baseline, default and a secondary configuration to compare to.
- # The baseline (turbofan) takes precedence as many of the secondary configs
+ # The default (turbofan) takes precedence as many of the secondary configs
# are based on the turbofan config with additional parameters.
execution_configs = [
ExecutionConfig(options, 'first'),
diff --git a/deps/v8/tools/clusterfuzz/v8_foozzie_test.py b/deps/v8/tools/clusterfuzz/v8_foozzie_test.py
index eb8322ce62..a8ba74364b 100755
--- a/deps/v8/tools/clusterfuzz/v8_foozzie_test.py
+++ b/deps/v8/tools/clusterfuzz/v8_foozzie_test.py
@@ -263,7 +263,7 @@ class SystemTest(unittest.TestCase):
Overview of fakes:
baseline: Example foozzie output including a syntax error.
- build1: Difference to baseline is a stack trace differece expected to
+ build1: Difference to baseline is a stack trace difference expected to
be suppressed.
build2: Difference to baseline is a non-suppressed output difference
causing the script to fail.
@@ -312,6 +312,36 @@ class SystemTest(unittest.TestCase):
self.assertIn('v8_mock_archs.js', lines[1])
self.assertIn('v8_mock_archs.js', lines[3])
+ def testDifferentArchFailFirst(self):
+ """Test that we re-test against x64. This tests the path that also fails
+ on x64 and then reports the error as x64.
+ """
+ with open(os.path.join(TEST_DATA, 'failure_output_arch.txt')) as f:
+ expected_output = f.read()
+ # Build 3 simulates x86 and produces a difference on --bad-flag, but
+ # the baseline build shows the same difference when --bad-flag is passed.
+ with self.assertRaises(subprocess.CalledProcessError) as ctx:
+ run_foozzie('build3', '--skip-smoke-tests',
+ '--second-config-extra-flags=--bad-flag')
+ e = ctx.exception
+ self.assertEqual(v8_foozzie.RETURN_FAIL, e.returncode)
+ self.assertEqual(expected_output, cut_verbose_output(e.output, 3))
+
+ def testDifferentArchFailSecond(self):
+ """As above, but we test the path that only fails in the second (ia32)
+ run and not with x64 and then reports the error as ia32.
+ """
+ with open(os.path.join(TEST_DATA, 'failure_output_second.txt')) as f:
+ expected_output = f.read()
+ # Build 3 simulates x86 and produces a difference on --very-bad-flag,
+ # which the baseline build doesn't.
+ with self.assertRaises(subprocess.CalledProcessError) as ctx:
+ run_foozzie('build3', '--skip-smoke-tests',
+ '--second-config-extra-flags=--very-bad-flag')
+ e = ctx.exception
+ self.assertEqual(v8_foozzie.RETURN_FAIL, e.returncode)
+ self.assertEqual(expected_output, cut_verbose_output(e.output, 3))
+
def testJitless(self):
"""Test that webassembly is mocked out when comparing with jitless."""
stdout = run_foozzie(
diff --git a/deps/v8/tools/clusterfuzz/v8_mock.js b/deps/v8/tools/clusterfuzz/v8_mock.js
index be7a40b70f..41f1901d5d 100644
--- a/deps/v8/tools/clusterfuzz/v8_mock.js
+++ b/deps/v8/tools/clusterfuzz/v8_mock.js
@@ -99,7 +99,11 @@ Object.defineProperty(
// Mock buffer access in float typed arrays because of varying NaN patterns.
(function() {
+ const origArrayFrom = Array.from;
+ const origArrayIsArray = Array.isArray;
+ const origFunctionPrototype = Function.prototype;
const origIsNaN = isNaN;
+ const origIterator = Symbol.iterator;
const deNaNify = function(value) { return origIsNaN(value) ? 1 : value; };
const mock = function(type) {
@@ -117,17 +121,17 @@ Object.defineProperty(
construct: function(target, args) {
for (let i = 0; i < args.length; i++) {
if (args[i] != null &&
- typeof args[i][Symbol.iterator] === 'function') {
+ typeof args[i][origIterator] === 'function') {
// Consume iterators.
- args[i] = Array.from(args[i]);
+ args[i] = origArrayFrom(args[i]);
}
- if (Array.isArray(args[i])) {
+ if (origArrayIsArray(args[i])) {
args[i] = args[i].map(deNaNify);
}
}
const obj = new (
- Function.prototype.bind.call(type, null, ...args));
+ origFunctionPrototype.bind.call(type, null, ...args));
return new Proxy(obj, {
get: function(x, prop) {
if (typeof x[prop] == "function")
diff --git a/deps/v8/tools/codemap.mjs b/deps/v8/tools/codemap.mjs
index 4986fbd3b0..5beeb3b1b6 100644
--- a/deps/v8/tools/codemap.mjs
+++ b/deps/v8/tools/codemap.mjs
@@ -252,11 +252,18 @@ export class CodeMap {
}
/**
- * Returns an array of all libraries entries.
+ * Returns an array of all library entries.
*/
- getAllLibrariesEntries() {
+ getAllLibraryEntries() {
return this.libraries_.exportValues();
}
+
+ /**
+ * Returns an array of pairs of all library entries and their addresses.
+ */
+ getAllLibraryEntriesWithAddresses() {
+ return this.libraries_.exportKeysAndValues();
+ }
}
diff --git a/deps/v8/tools/cppgc/gen_cmake.py b/deps/v8/tools/cppgc/gen_cmake.py
index 6fc1bc0b03..90eda1f3bb 100755
--- a/deps/v8/tools/cppgc/gen_cmake.py
+++ b/deps/v8/tools/cppgc/gen_cmake.py
@@ -244,6 +244,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
option(CPPGC_ENABLE_OBJECT_NAMES "Enable object names in cppgc for debug purposes" OFF)
option(CPPGC_ENABLE_CAGED_HEAP "Enable heap reservation of size 4GB, only possible for 64bit archs" OFF)
+option(CPPGC_ENABLE_VERIFY_LIVE_BYTES " Enable verification of live bytes in the marking verifier" OFF)
option(CPPGC_ENABLE_YOUNG_GENERATION "Enable young generation in cppgc" OFF)
set(CPPGC_TARGET_ARCH "x64" CACHE STRING "Target architecture, possible options: x64, x86, arm, arm64, ppc64, s390x, mipsel, mips64el")
@@ -433,6 +434,9 @@ endif()
if(CPPGC_ENABLE_CAGED_HEAP)
target_compile_definitions({target.name} PRIVATE "-DCPPGC_CAGED_HEAP")
endif()
+if(CPPGC_ENABLE_VERIFY_LIVE_BYTES)
+ target_compile_definitions({target.name} PRIVATE "-DCPPGC_VERIFY_LIVE_BYTES")
+endif()
if(CPPGC_ENABLE_YOUNG_GENERATION)
target_compile_definitions({target.name} PRIVATE "-DCPPGC_YOUNG_GENERATION")
endif()"""
diff --git a/deps/v8/tools/debug_helper/get-object-properties.cc b/deps/v8/tools/debug_helper/get-object-properties.cc
index 7199bc51d2..b85bbc0590 100644
--- a/deps/v8/tools/debug_helper/get-object-properties.cc
+++ b/deps/v8/tools/debug_helper/get-object-properties.cc
@@ -316,7 +316,10 @@ class ReadStringVisitor : public TqObjectVisitor {
bool IsExternalStringCached(const TqExternalString* object) {
// The safest way to get the instance type is to use known map pointers, in
// case the map data is not available.
- uintptr_t map = GetOrFinish(object->GetMapValue(accessor_));
+ Value<uintptr_t> map_ptr = object->GetMapValue(accessor_);
+ DCHECK_IMPLIES(map_ptr.validity == d::MemoryAccessResult::kOk,
+ !v8::internal::MapWord::IsPacked(map_ptr.value));
+ uintptr_t map = GetOrFinish(map_ptr);
if (done_) return false;
auto instance_types = FindKnownMapInstanceTypes(map, heap_addresses_);
// Exactly one of the matched instance types should be a string type,
@@ -347,10 +350,10 @@ class ReadStringVisitor : public TqObjectVisitor {
ExternalPointer_t resource_data =
GetOrFinish(object->GetResourceDataValue(accessor_));
#ifdef V8_COMPRESS_POINTERS
- uintptr_t data_address = static_cast<uintptr_t>(
- DecodeExternalPointer(GetPtrComprCageBaseFromOnHeapAddress(
- heap_addresses_.any_heap_pointer),
- resource_data, kExternalStringResourceDataTag));
+ Isolate* isolate = GetIsolateForHeapSandbox(
+ HeapObject::unchecked_cast(Object(heap_addresses_.any_heap_pointer)));
+ uintptr_t data_address = static_cast<uintptr_t>(DecodeExternalPointer(
+ isolate, resource_data, kExternalStringResourceDataTag));
#else
uintptr_t data_address = static_cast<uintptr_t>(resource_data);
#endif // V8_COMPRESS_POINTERS
@@ -500,6 +503,7 @@ class AddInfoVisitor : public TqObjectVisitor {
if (map_ptr.validity != d::MemoryAccessResult::kOk) {
return; // Can't read the JSObject. Nothing useful to do.
}
+ DCHECK(!v8::internal::MapWord::IsPacked(map_ptr.value));
TqMap map(map_ptr.value);
// On JSObject instances, this value is the start of in-object properties.
diff --git a/deps/v8/tools/dev/gm.py b/deps/v8/tools/dev/gm.py
index 4e318f2f32..8a05da3cc9 100755
--- a/deps/v8/tools/dev/gm.py
+++ b/deps/v8/tools/dev/gm.py
@@ -262,10 +262,10 @@ class Config(object):
cpu = "arm"
elif self.arch == "android_arm64":
cpu = "arm64"
- elif self.arch == "arm64" and _GetMachine() == "aarch64":
+ elif self.arch == "arm64" and _GetMachine() in ("aarch64", "arm64"):
# arm64 build host:
cpu = "arm64"
- elif self.arch == "arm" and _GetMachine() == "aarch64":
+ elif self.arch == "arm" and _GetMachine() in ("aarch64", "arm64"):
cpu = "arm"
elif "64" in self.arch or self.arch == "s390x":
# Native x64 or simulator build.
@@ -291,7 +291,8 @@ class Config(object):
def GetSpecialCompiler(self):
if _GetMachine() == "aarch64":
- # We have no prebuilt Clang for arm64. Use the system Clang instead.
+ # We have no prebuilt Clang for arm64 on Linux, so use the system Clang
+ # instead.
return ["clang_base_path = \"/usr\"", "clang_use_chrome_plugins = false"]
return []
diff --git a/deps/v8/tools/dev/v8gen.py b/deps/v8/tools/dev/v8gen.py
index 18abf8aa25..c6ba1d2174 100755
--- a/deps/v8/tools/dev/v8gen.py
+++ b/deps/v8/tools/dev/v8gen.py
@@ -121,7 +121,7 @@ class GenerateGnArgs(object):
add_common_options(list_cmd)
# Default to "gen" unless global help is requested.
- if not args or args[0] not in subps.choices.keys() + ['-h', '--help']:
+ if not args or args[0] not in list(subps.choices) + ['-h', '--help']:
args = ['gen'] + args
return self.parser.parse_args(args)
@@ -193,14 +193,16 @@ class GenerateGnArgs(object):
return 0
def verbose_print_1(self, text):
- if self._options.verbosity >= 1:
+ if self._options.verbosity and self._options.verbosity >= 1:
print('#' * 80)
print(text)
def verbose_print_2(self, text):
- if self._options.verbosity >= 2:
+ if self._options.verbosity and self._options.verbosity >= 2:
indent = ' ' * 2
for l in text.splitlines():
+ if type(l) == bytes:
+ l = l.decode()
print(indent + l)
def _call_cmd(self, args):
@@ -306,7 +308,7 @@ if __name__ == "__main__":
try:
sys.exit(gen.main())
except Exception:
- if gen._options.verbosity < 2:
+ if not gen._options.verbosity or gen._options.verbosity < 2:
print ('\nHint: You can raise verbosity (-vv) to see the output of '
'failed commands.\n')
raise
diff --git a/deps/v8/tools/generate-header-include-checks.py b/deps/v8/tools/generate-header-include-checks.py
index 4e58a492de..2171ee8a0d 100755
--- a/deps/v8/tools/generate-header-include-checks.py
+++ b/deps/v8/tools/generate-header-include-checks.py
@@ -31,6 +31,8 @@ OUT_DIR = os.path.join(V8_DIR, 'check-header-includes')
AUTO_EXCLUDE = [
# flag-definitions.h needs a mode set for being included.
'src/flags/flag-definitions.h',
+ # recorder.h should only be included conditionally.
+ 'src/libplatform/tracing/recorder.h',
]
AUTO_EXCLUDE_PATTERNS = [
'src/base/atomicops_internals_.*',
diff --git a/deps/v8/tools/mb/mb.py b/deps/v8/tools/mb/mb.py
index 8ca9089944..7031ba50db 100755
--- a/deps/v8/tools/mb/mb.py
+++ b/deps/v8/tools/mb/mb.py
@@ -27,7 +27,16 @@ import sys
import subprocess
import tempfile
import traceback
-import urllib2
+
+# for py2/py3 compatibility
+try:
+ from urllib.parse import quote
+except ImportError:
+ from urllib2 import quote
+try:
+ from urllib.request import urlopen
+except ImportError:
+ from urllib2 import urlopen
from collections import OrderedDict
@@ -869,7 +878,7 @@ class MetaBuildWrapper(object):
return err, labels
def GNCmd(self, subcommand, path, *args):
- if self.platform == 'linux2':
+ if self.platform.startswith('linux'):
subdir, exe = 'linux64', 'gn'
elif self.platform == 'darwin':
subdir, exe = 'mac', 'gn'
@@ -1109,7 +1118,7 @@ class MetaBuildWrapper(object):
def CheckCompile(self, builder_group, builder):
url_template = self.args.url_template + '/{builder}/builds/_all?as_text=1'
- url = urllib2.quote(
+ url = quote(
url_template.format(builder_group=builder_group, builder=builder),
safe=':/()?=')
try:
@@ -1201,7 +1210,7 @@ class MetaBuildWrapper(object):
def Fetch(self, url):
# This function largely exists so it can be overridden for testing.
- f = urllib2.urlopen(url)
+ f = urlopen(url)
contents = f.read()
f.close()
return contents
diff --git a/deps/v8/tools/profile.mjs b/deps/v8/tools/profile.mjs
index f4be41e2da..8001f4b5ae 100644
--- a/deps/v8/tools/profile.mjs
+++ b/deps/v8/tools/profile.mjs
@@ -151,6 +151,14 @@ export class Profile {
scripts_ = [];
urlToScript_ = new Map();
+ serializeVMSymbols() {
+ let result = this.codeMap_.getAllStaticEntriesWithAddresses();
+ result.concat(this.codeMap_.getAllLibraryEntriesWithAddresses())
+ return result.map(([startAddress, codeEntry]) => {
+ return [codeEntry.getName(), startAddress, startAddress + codeEntry.size]
+ });
+ }
+
/**
* Returns whether a function with the specified name must be skipped.
* Should be overriden by subclasses.
@@ -182,7 +190,6 @@ export class Profile {
COMPILED: 0,
IGNITION: 1,
BASELINE: 2,
- NATIVE_CONTEXT_INDEPENDENT: 3,
TURBOPROP: 4,
TURBOFAN: 5,
}
@@ -198,8 +205,6 @@ export class Profile {
return this.CodeState.IGNITION;
case '^':
return this.CodeState.BASELINE;
- case '-':
- return this.CodeState.NATIVE_CONTEXT_INDEPENDENT;
case '+':
return this.CodeState.TURBOPROP;
case '*':
@@ -215,8 +220,6 @@ export class Profile {
return "Unopt";
} else if (state === this.CodeState.BASELINE) {
return "Baseline";
- } else if (state === this.CodeState.NATIVE_CONTEXT_INDEPENDENT) {
- return "NCI";
} else if (state === this.CodeState.TURBOPROP) {
return "Turboprop";
} else if (state === this.CodeState.TURBOFAN) {
diff --git a/deps/v8/tools/profview/profile-utils.js b/deps/v8/tools/profview/profile-utils.js
index 35fe3d7cb2..bd9f248b54 100644
--- a/deps/v8/tools/profview/profile-utils.js
+++ b/deps/v8/tools/profview/profile-utils.js
@@ -6,11 +6,12 @@
let codeKinds = [
"UNKNOWN",
- "CPPPARSE",
- "CPPCOMPBC",
- "CPPCOMP",
- "CPPGC",
- "CPPEXT",
+ "CPP_PARSE",
+ "CPP_COMP_BC",
+ "CPP_COMP_BASELINE",
+ "CPP_COMP",
+ "CPP_GC",
+ "CPP_EXT",
"CPP",
"LIB",
"IC",
@@ -18,11 +19,10 @@ let codeKinds = [
"STUB",
"BUILTIN",
"REGEXP",
- "JSOPT",
- "JSUNOPT",
- "JSNCI",
- "JSTURBOPROP",
- "JSBASELINE",
+ "JS_OPT",
+ "JS_UNOPT",
+ "JS_TURBOPROP",
+ "JS_BASELINE",
];
function resolveCodeKind(code) {
@@ -53,17 +53,15 @@ function resolveCodeKind(code) {
return "CODE";
} else if (code.type === "JS") {
if (code.kind === "Builtin") {
- return "JSUNOPT";
+ return "JS_UNOPT";
} else if (code.kind === "Opt") {
- return "JSOPT";
+ return "JS_OPT";
} else if (code.kind === "Unopt") {
- return "JSUNOPT";
- } else if (code.kind === "NCI") {
- return "JSNCI";
+ return "JS_UNOPT";
} else if (code.kind === "Baseline") {
- return "JSBASELINE";
+ return "JS_BASELINE";
} else if (code.kind === "Turboprop") {
- return "JSTURBOPROP";
+ return "JS_TURBOPROP";
}
}
console.log("Unknown code type '" + type + "'.");
@@ -73,16 +71,17 @@ function resolveCodeKindAndVmState(code, vmState) {
let kind = resolveCodeKind(code);
if (kind === "CPP") {
if (vmState === 1) {
- kind = "CPPGC";
+ kind = "CPP_GC";
} else if (vmState === 2) {
- kind = "CPPPARSE";
+ kind = "CPP_PARSE";
} else if (vmState === 3) {
- kind = "CPPCOMPBC";
+ kind = "CPP_COMP_BC";
} else if (vmState === 4) {
- kind = "CPPCOMP";
+ kind = "CPP_COMP";
} else if (vmState === 6) {
- kind = "CPPEXT";
+ kind = "CPP_EXT";
}
+ // TODO(cbruni): add CPP_COMP_BASELINE
}
return kind;
}
@@ -272,20 +271,20 @@ function buildCategoryTreeAndLookup() {
}
root.children.push(n);
}
- addCategory("JS Optimized", [ "JSOPT" ]);
- addCategory("JS NCI", [ "JSNCI" ]);
- addCategory("JS Turboprop", [ "JSTURBOPROP" ]);
- addCategory("JS Baseline", [ "JSBASELINE" ]);
- addCategory("JS Unoptimized", [ "JSUNOPT", "BC" ]);
+ addCategory("JS Optimized", [ "JS_OPT" ]);
+ addCategory("JS Turboprop", [ "JS_TURBOPROP" ]);
+ addCategory("JS Baseline", [ "JS_BASELINE" ]);
+ addCategory("JS Unoptimized", [ "JS_UNOPT", "BC" ]);
addCategory("IC", [ "IC" ]);
addCategory("RegExp", [ "REGEXP" ]);
addCategory("Other generated", [ "STUB", "BUILTIN" ]);
addCategory("C++", [ "CPP", "LIB" ]);
- addCategory("C++/GC", [ "CPPGC" ]);
- addCategory("C++/Parser", [ "CPPPARSE" ]);
- addCategory("C++/Bytecode compiler", [ "CPPCOMPBC" ]);
- addCategory("C++/Compiler", [ "CPPCOMP" ]);
- addCategory("C++/External", [ "CPPEXT" ]);
+ addCategory("C++/GC", [ "CPP_GC" ]);
+ addCategory("C++/Parser", [ "CPP_PARSE" ]);
+ addCategory("C++/Bytecode Compiler", [ "CPP_COMP_BC" ]);
+ addCategory("C++/Baseline Compiler", [ "CPP_COMP_BASELINE" ]);
+ addCategory("C++/Compiler", [ "CPP_COMP" ]);
+ addCategory("C++/External", [ "CPP_EXT" ]);
addCategory("Unknown", [ "UNKNOWN" ]);
return { categories, root };
diff --git a/deps/v8/tools/profview/profview.js b/deps/v8/tools/profview/profview.js
index 15a74f7240..60fc05e727 100644
--- a/deps/v8/tools/profview/profview.js
+++ b/deps/v8/tools/profview/profview.js
@@ -212,63 +212,91 @@ let main = {
const CATEGORY_COLOR = "#f5f5f5";
const bucketDescriptors =
- [ { kinds : [ "JSOPT" ],
- color : "#64dd17",
- backgroundColor : "#80e27e",
- text : "JS Optimized" },
- { kinds : [ "JSNCI" ],
- color : "#3289a8",
- backgroundColor : "#3289a8",
- text : "JS NCI" },
- { kinds : [ "JSTURBOPROP" ],
- color : "#693eb8",
- backgroundColor : "#a6c452",
- text : "JS Turboprop" },
- { kinds : [ "JSBASELINE" ],
- color : "#b3005b",
- backgroundColor : "#ff9e80",
- text : "JS Baseline" },
- { kinds : [ "JSUNOPT", "BC" ],
- color : "#dd2c00",
- backgroundColor : "#ff9e80",
- text : "JS Unoptimized" },
- { kinds : [ "IC" ],
- color : "#ff6d00",
- backgroundColor : "#ffab40",
- text : "IC" },
- { kinds : [ "STUB", "BUILTIN", "REGEXP" ],
- color : "#ffd600",
- backgroundColor : "#ffea00",
- text : "Other generated" },
- { kinds : [ "CPP", "LIB" ],
- color : "#304ffe",
- backgroundColor : "#6ab7ff",
- text : "C++" },
- { kinds : [ "CPPEXT" ],
- color : "#003c8f",
- backgroundColor : "#c0cfff",
- text : "C++/external" },
- { kinds : [ "CPPPARSE" ],
- color : "#aa00ff",
- backgroundColor : "#ffb2ff",
- text : "C++/Parser" },
- { kinds : [ "CPPCOMPBC" ],
- color : "#43a047",
- backgroundColor : "#88c399",
- text : "C++/Bytecode compiler" },
- { kinds : [ "CPPCOMP" ],
- color : "#00e5ff",
- backgroundColor : "#6effff",
- text : "C++/Compiler" },
- { kinds : [ "CPPGC" ],
- color : "#6200ea",
- backgroundColor : "#e1bee7",
- text : "C++/GC" },
- { kinds : [ "UNKNOWN" ],
- color : "#bdbdbd",
- backgroundColor : "#efefef",
- text : "Unknown" }
- ];
+ [{
+ kinds: ["JS_OPT"],
+ color: "#64dd17",
+ backgroundColor: "#80e27e",
+ text: "JS Optimized"
+ },
+ {
+ kinds: ["JS_TURBOPROP"],
+ color: "#693eb8",
+ backgroundColor: "#a6c452",
+ text: "JS Turboprop"
+ },
+ {
+ kinds: ["JS_BASELINE"],
+ color: "#b3005b",
+ backgroundColor: "#ff9e80",
+ text: "JS Baseline"
+ },
+ {
+ kinds: ["JS_UNOPT", "BC"],
+ color: "#dd2c00",
+ backgroundColor: "#ff9e80",
+ text: "JS Unoptimized"
+ },
+ {
+ kinds: ["IC"],
+ color: "#ff6d00",
+ backgroundColor: "#ffab40",
+ text: "IC"
+ },
+ {
+ kinds: ["STUB", "BUILTIN", "REGEXP"],
+ color: "#ffd600",
+ backgroundColor: "#ffea00",
+ text: "Other generated"
+ },
+ {
+ kinds: ["CPP", "LIB"],
+ color: "#304ffe",
+ backgroundColor: "#6ab7ff",
+ text: "C++"
+ },
+ {
+ kinds: ["CPP_EXT"],
+ color: "#003c8f",
+ backgroundColor: "#c0cfff",
+ text: "C++/external"
+ },
+ {
+ kinds: ["CPP_PARSE"],
+ color: "#aa00ff",
+ backgroundColor: "#ffb2ff",
+ text: "C++/Parser"
+ },
+ {
+ kinds: ["CPP_COMP_BC"],
+ color: "#43a047",
+ backgroundColor: "#88c399",
+ text: "C++/Bytecode compiler"
+ },
+ {
+ kinds: ["CPP_COMP_BASELINE"],
+ color: "#43a047",
+ backgroundColor: "#5a8000",
+ text: "C++/Baseline compiler"
+ },
+ {
+ kinds: ["CPP_COMP"],
+ color: "#00e5ff",
+ backgroundColor: "#6effff",
+ text: "C++/Compiler"
+ },
+ {
+ kinds: ["CPP_GC"],
+ color: "#6200ea",
+ backgroundColor: "#e1bee7",
+ text: "C++/GC"
+ },
+ {
+ kinds: ["UNKNOWN"],
+ color: "#bdbdbd",
+ backgroundColor: "#efefef",
+ text: "Unknown"
+ }
+ ];
let kindToBucketDescriptor = {};
for (let i = 0; i < bucketDescriptors.length; i++) {
@@ -294,15 +322,17 @@ function codeTypeToText(type) {
switch (type) {
case "UNKNOWN":
return "Unknown";
- case "CPPPARSE":
+ case "CPP_PARSE":
return "C++ Parser";
- case "CPPCOMPBC":
- return "C++ Bytecode Compiler)";
- case "CPPCOMP":
+ case "CPP_COMP_BASELINE":
+ return "C++ Baseline Compiler";
+ case "CPP_COMP_BC":
+ return "C++ Bytecode Compiler";
+ case "CPP_COMP":
return "C++ Compiler";
- case "CPPGC":
+ case "CPP_GC":
return "C++ GC";
- case "CPPEXT":
+ case "CPP_EXT":
return "C++ External";
case "CPP":
return "C++";
@@ -318,13 +348,13 @@ function codeTypeToText(type) {
return "Builtin";
case "REGEXP":
return "RegExp";
- case "JSOPT":
+ case "JS_OPT":
return "JS opt";
- case "JSNCI":
- return "JS NCI";
- case "JSTURBOPROP":
+ case "JS_TURBOPROP":
return "JS Turboprop";
- case "JSUNOPT":
+ case "JS_BASELINE":
+ return "JS Baseline";
+ case "JS_UNOPT":
return "JS unopt";
}
console.error("Unknown type: " + type);
diff --git a/deps/v8/tools/release/auto_roll.py b/deps/v8/tools/release/auto_roll.py
index ffba545c8f..76247b1fb3 100755
--- a/deps/v8/tools/release/auto_roll.py
+++ b/deps/v8/tools/release/auto_roll.py
@@ -126,7 +126,7 @@ class UpdateChromiumCheckout(Step):
def RunStep(self):
self['json_output']['monitoring_state'] = 'update_chromium'
cwd = self._options.chromium
- self.GitCheckout("master", cwd=cwd)
+ self.GitCheckout("main", cwd=cwd)
self.DeleteBranch("work-branch", cwd=cwd)
self.GitPull(cwd=cwd)
@@ -168,7 +168,7 @@ class UploadCL(Step):
else:
print("Dry run - don't upload.")
- self.GitCheckout("master", cwd=cwd)
+ self.GitCheckout("main", cwd=cwd)
self.GitDeleteBranch("work-branch", cwd=cwd)
class CleanUp(Step):
diff --git a/deps/v8/tools/release/test_scripts.py b/deps/v8/tools/release/test_scripts.py
index bfac9a4a34..7cf5d14130 100755
--- a/deps/v8/tools/release/test_scripts.py
+++ b/deps/v8/tools/release/test_scripts.py
@@ -612,7 +612,7 @@ deps = {
Cmd("git describe --tags roll_hsh", "3.22.4"),
Cmd("git describe --tags last_roll_hsh", "3.22.2.1"),
Cmd("git status -s -uno", "", cwd=chrome_dir),
- Cmd("git checkout -f master", "", cwd=chrome_dir),
+ Cmd("git checkout -f main", "", cwd=chrome_dir),
Cmd("git branch", "", cwd=chrome_dir),
Cmd("git pull", "", cwd=chrome_dir),
Cmd("git fetch origin", ""),
@@ -626,7 +626,7 @@ deps = {
Cmd("git cl upload --send-mail -f "
"--cq-dry-run --set-bot-commit --bypass-hooks", "",
cwd=chrome_dir),
- Cmd("git checkout -f master", "", cwd=chrome_dir),
+ Cmd("git checkout -f main", "", cwd=chrome_dir),
Cmd("git branch -D work-branch", "", cwd=chrome_dir),
]
self.Expect(expectations)
diff --git a/deps/v8/tools/system-analyzer/index.css b/deps/v8/tools/system-analyzer/index.css
index ad3f24d27b..53110079b2 100644
--- a/deps/v8/tools/system-analyzer/index.css
+++ b/deps/v8/tools/system-analyzer/index.css
@@ -68,7 +68,7 @@ section {
border-radius: 8px;
cursor: pointer;
}
-::-webkit-scrollbar-thumb:hover {
+::-webkit-scrollbar-thumb:hover {
background-color: rgba(128, 128, 128, 0.8);
}
diff --git a/deps/v8/tools/system-analyzer/index.mjs b/deps/v8/tools/system-analyzer/index.mjs
index 4b0ed9f9c5..550838118b 100644
--- a/deps/v8/tools/system-analyzer/index.mjs
+++ b/deps/v8/tools/system-analyzer/index.mjs
@@ -110,7 +110,7 @@ class App {
entries = entry.entries.concat(entry.sourcePositions);
break;
default:
- throw new Error('Unknown selection type!');
+ throw new Error(`Unknown selection type: ${entry.constructor?.name}`);
}
if (entry.sourcePosition) {
entries.push(entry.sourcePosition);
@@ -134,7 +134,11 @@ class App {
}
selectEntriesOfSingleType(entries, type) {
- switch (entries[0]?.constructor ?? type) {
+ const entryType = entries[0]?.constructor ?? type;
+ switch (entryType) {
+ case Script:
+ entries = entries.flatMap(script => script.sourcePositions);
+ return this.showSourcePositions(entries);
case SourcePosition:
return this.showSourcePositions(entries);
case MapLogEntry:
@@ -148,7 +152,7 @@ class App {
case DeoptLogEntry:
return this.showDeoptEntries(entries);
default:
- throw new Error('Unknown selection type!');
+ throw new Error(`Unknown selection type: ${entryType?.name}`);
}
}
@@ -205,6 +209,8 @@ class App {
focusLogEntry(entry) {
switch (entry.constructor) {
+ case Script:
+ return this.focusSourcePosition(entry.sourcePositions[0]);
case SourcePosition:
return this.focusSourcePosition(entry);
case MapLogEntry:
@@ -218,7 +224,7 @@ class App {
case DeoptLogEntry:
return this.focusDeoptLogEntry(entry);
default:
- throw new Error('Unknown selection type!');
+ throw new Error(`Unknown selection type: ${entry.constructor?.name}`);
}
}
diff --git a/deps/v8/tools/system-analyzer/processor.mjs b/deps/v8/tools/system-analyzer/processor.mjs
index 9685e09ad6..806cba132c 100644
--- a/deps/v8/tools/system-analyzer/processor.mjs
+++ b/deps/v8/tools/system-analyzer/processor.mjs
@@ -230,17 +230,21 @@ export class Processor extends LogReader {
this.addSourcePosition(codeEntry, logEntry);
logEntry.functionSourcePosition = logEntry.sourcePosition;
// custom parse deopt location
- if (deoptLocation !== '<unknown>') {
- const colSeparator = deoptLocation.lastIndexOf(':');
- const rowSeparator = deoptLocation.lastIndexOf(':', colSeparator - 1);
- const script = this.getScript(deoptLocation.substring(1, rowSeparator));
- const line =
- parseInt(deoptLocation.substring(rowSeparator + 1, colSeparator));
- const column = parseInt(
- deoptLocation.substring(colSeparator + 1, deoptLocation.length - 1));
- logEntry.sourcePosition =
- script.addSourcePosition(line, column, logEntry);
+ if (deoptLocation === '<unknown>') return;
+ // Handle deopt location for inlined code: <location> inlined at <location>
+ const inlinedPos = deoptLocation.indexOf(' inlined at ');
+ if (inlinedPos > 0) {
+ deoptLocation = deoptLocation.substring(0, inlinedPos)
}
+ const colSeparator = deoptLocation.lastIndexOf(':');
+ const rowSeparator = deoptLocation.lastIndexOf(':', colSeparator - 1);
+ const script = this.getScript(deoptLocation.substring(1, rowSeparator));
+ if (!script) return;
+ const line =
+ parseInt(deoptLocation.substring(rowSeparator + 1, colSeparator));
+ const column = parseInt(
+ deoptLocation.substring(colSeparator + 1, deoptLocation.length - 1));
+ logEntry.sourcePosition = script.addSourcePosition(line, column, logEntry);
}
processScriptSource(scriptId, url, source) {
diff --git a/deps/v8/tools/system-analyzer/view/code-panel-template.html b/deps/v8/tools/system-analyzer/view/code-panel-template.html
index e04c6be8c1..3622c25062 100644
--- a/deps/v8/tools/system-analyzer/view/code-panel-template.html
+++ b/deps/v8/tools/system-analyzer/view/code-panel-template.html
@@ -11,7 +11,9 @@ found in the LICENSE file. -->
}
</style>
<div class="panel">
- <h2>Code Panel</h2>
+ <input type="checkbox" id="closer" class="panelCloserInput" checked>
+ <label class="panelCloserLabel" for="closer">▼</label>
+ <h2 class="title">Code Panel</h2>
<div class="selection">
<select id="codeSelect"></select>
<button id="selectedRelatedButton">Select Related Events</button>
diff --git a/deps/v8/tools/system-analyzer/view/code-panel.mjs b/deps/v8/tools/system-analyzer/view/code-panel.mjs
index 3b5261e03c..34e4ad300e 100644
--- a/deps/v8/tools/system-analyzer/view/code-panel.mjs
+++ b/deps/v8/tools/system-analyzer/view/code-panel.mjs
@@ -5,11 +5,11 @@ import {IcLogEntry} from '../log/ic.mjs';
import {MapLogEntry} from '../log/map.mjs';
import {FocusEvent, SelectionEvent, ToolTipEvent} from './events.mjs';
-import {delay, DOM, formatBytes, formatMicroSeconds, V8CustomElement} from './helper.mjs';
+import {CollapsableElement, delay, DOM, formatBytes, formatMicroSeconds} from './helper.mjs';
DOM.defineCustomElement('view/code-panel',
(templateText) =>
- class CodePanel extends V8CustomElement {
+ class CodePanel extends CollapsableElement {
_timeline;
_selectedEntries;
_entry;
@@ -24,19 +24,17 @@ DOM.defineCustomElement('view/code-panel',
set timeline(timeline) {
this._timeline = timeline;
this.$('.panel').style.display = timeline.isEmpty() ? 'none' : 'inherit';
- this.update();
+ this.requestUpdate();
}
set selectedEntries(entries) {
this._selectedEntries = entries;
- // TODO: add code selection dropdown
- this._updateSelect();
this.entry = entries.first();
}
set entry(entry) {
this._entry = entry;
- this.update();
+ this.requestUpdate();
}
get _disassemblyNode() {
@@ -52,12 +50,15 @@ DOM.defineCustomElement('view/code-panel',
}
_update() {
+ this._updateSelect();
this._disassemblyNode.innerText = this._entry?.disassemble ?? '';
this._sourceNode.innerText = this._entry?.source ?? '';
}
_updateSelect() {
const select = this._codeSelectNode;
+ if (select.data === this._selectedEntries) return;
+ select.data = this._selectedEntries;
select.options.length = 0;
const sorted =
this._selectedEntries.slice().sort((a, b) => a.time - b.time);
diff --git a/deps/v8/tools/system-analyzer/view/helper.mjs b/deps/v8/tools/system-analyzer/view/helper.mjs
index 780864ef5a..44da06ced4 100644
--- a/deps/v8/tools/system-analyzer/view/helper.mjs
+++ b/deps/v8/tools/system-analyzer/view/helper.mjs
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-class CSSColor {
+export class CSSColor {
static _cache = new Map();
static get(name) {
@@ -121,7 +121,7 @@ class CSSColor {
}
}
-class DOM {
+export class DOM {
static element(type, classes) {
const node = document.createElement(type);
if (classes === undefined) return node;
@@ -185,19 +185,18 @@ class DOM {
}
}
-function $(id) {
+export function $(id) {
return document.querySelector(id)
}
-class V8CustomElement extends HTMLElement {
+export class V8CustomElement extends HTMLElement {
_updateTimeoutId;
- _updateCallback = this._update.bind(this);
+ _updateCallback = this.forceUpdate.bind(this);
constructor(templateText) {
super();
const shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.innerHTML = templateText;
- this._updateCallback = this._update.bind(this);
}
$(id) {
@@ -208,7 +207,7 @@ class V8CustomElement extends HTMLElement {
return this.shadowRoot.querySelectorAll(query);
}
- update(useAnimation = false) {
+ requestUpdate(useAnimation = false) {
if (useAnimation) {
window.cancelAnimationFrame(this._updateTimeoutId);
this._updateTimeoutId =
@@ -221,12 +220,54 @@ class V8CustomElement extends HTMLElement {
}
}
+ forceUpdate() {
+ this._update();
+ }
+
_update() {
throw Error('Subclass responsibility');
}
}
-class Chunked {
+export class CollapsableElement extends V8CustomElement {
+ constructor(templateText) {
+ super(templateText);
+ this._hasPendingUpdate = false;
+ this._closer.onclick = _ => this.tryUpdateOnVisibilityChange();
+ }
+
+ get _closer() {
+ return this.$('#closer');
+ }
+
+ _contentIsVisible() {
+ return !this._closer.checked;
+ }
+
+ requestUpdate(useAnimation = false) {
+ // A pending update will be resolved later, no need to try again.
+ if (this._hasPendingUpdate) return;
+ this._hasPendingUpdate = true;
+ this.requestUpdateIfVisible(useAnimation);
+ }
+
+ tryUpdateOnVisibilityChange() {
+ if (!this._hasPendingUpdate) return;
+ this.requestUpdateIfVisible(true);
+ }
+
+ requestUpdateIfVisible(useAnimation) {
+ if (!this._contentIsVisible()) return;
+ return super.requestUpdate(useAnimation);
+ }
+
+ forceUpdate() {
+ this._hasPendingUpdate = false;
+ super.forceUpdate();
+ }
+}
+
+export class Chunked {
constructor(iterable, limit) {
this._iterator = iterable[Symbol.iterator]();
this._limit = limit;
@@ -248,7 +289,7 @@ class Chunked {
}
}
-class LazyTable {
+export class LazyTable {
constructor(table, rowData, rowElementCreator, limit = 100) {
this._table = table;
this._chunkedRowData = new Chunked(rowData, limit);
@@ -258,22 +299,25 @@ class LazyTable {
} else {
table.replaceChild(DOM.tbody(), table.tBodies[0]);
}
- if (!table.tFoot) {
- const td = table.appendChild(DOM.element('tfoot'))
- .appendChild(DOM.tr())
- .appendChild(DOM.td());
- for (let count of [10, 100]) {
- const button = DOM.element('button');
- button.innerText = `+${count}`;
- button.onclick = (e) => this._addMoreRows(count);
- td.appendChild(button);
- }
- td.setAttribute('colspan', 100);
- }
+ if (!table.tFoot) this._addFooter();
table.tFoot.addEventListener('click', this._clickHandler);
this._addMoreRows();
}
+ _addFooter() {
+ const td = DOM.td();
+ td.setAttribute('colspan', 100);
+ for (let addCount of [10, 100, 250, 500]) {
+ const button = DOM.element('button');
+ button.innerText = `+${addCount}`;
+ button.onclick = (e) => this._addMoreRows(addCount);
+ td.appendChild(button);
+ }
+ this._table.appendChild(DOM.element('tfoot'))
+ .appendChild(DOM.tr())
+ .appendChild(td);
+ }
+
_addMoreRows(count = undefined) {
const fragment = new DocumentFragment();
for (let row of this._chunkedRowData.next(count)) {
@@ -304,11 +348,4 @@ export function gradientStopsFromGroups(
return stops;
}
-export * from '../helper.mjs';
-export {
- DOM,
- $,
- V8CustomElement,
- CSSColor,
- LazyTable,
-};
+export * from '../helper.mjs'; \ No newline at end of file
diff --git a/deps/v8/tools/system-analyzer/view/list-panel-template.html b/deps/v8/tools/system-analyzer/view/list-panel-template.html
index 4714f97c02..fb38f5b459 100644
--- a/deps/v8/tools/system-analyzer/view/list-panel-template.html
+++ b/deps/v8/tools/system-analyzer/view/list-panel-template.html
@@ -30,11 +30,13 @@ found in the LICENSE file. -->
text-align: left;
cursor: -webkit-zoom-in;
color: rgba(var(--border-color), 1);
+ user-select: none;
}
.toggle::before {
content: "▶";
}
+
.open .toggle::before {
content: "▼";
}
@@ -58,7 +60,7 @@ found in the LICENSE file. -->
</style>
<div class="panel">
- <input type="checkbox" id="closer" class="panelCloserInput">
+ <input type="checkbox" id="closer" class="panelCloserInput" checked>
<label class="panelCloserLabel" for="closer">▼</label>
<h2 id="title"></h2>
<div class="selection">
diff --git a/deps/v8/tools/system-analyzer/view/list-panel.mjs b/deps/v8/tools/system-analyzer/view/list-panel.mjs
index 85e3cd47e2..bc3b2f89d5 100644
--- a/deps/v8/tools/system-analyzer/view/list-panel.mjs
+++ b/deps/v8/tools/system-analyzer/view/list-panel.mjs
@@ -5,23 +5,24 @@
import {Script, SourcePosition} from '../../profile.mjs';
import {LogEntry} from '../log/log.mjs';
-import {FocusEvent} from './events.mjs';
+import {FocusEvent, ToolTipEvent} from './events.mjs';
import {groupBy, LazyTable} from './helper.mjs';
-import {DOM, V8CustomElement} from './helper.mjs';
+import {CollapsableElement, DOM} from './helper.mjs';
DOM.defineCustomElement('view/list-panel',
(templateText) =>
- class ListPanel extends V8CustomElement {
+ class ListPanel extends CollapsableElement {
_selectedLogEntries = [];
_displayedLogEntries = [];
_timeline;
_detailsClickHandler = this._handleDetailsClick.bind(this);
_logEntryClickHandler = this._handleLogEntryClick.bind(this);
+ _logEntryMouseOverHandler = this._logEntryMouseOverHandler.bind(this);
constructor() {
super(templateText);
- this.groupKey.addEventListener('change', e => this.update());
+ this.groupKey.addEventListener('change', e => this.requestUpdate());
this.showAllRadio.onclick = _ => this._showEntries(this._timeline);
this.showTimerangeRadio.onclick = _ =>
this._showEntries(this._timeline.selectionOrSelf);
@@ -72,9 +73,11 @@ DOM.defineCustomElement('view/list-panel',
get showAllRadio() {
return this.$('#show-all');
}
+
get showTimerangeRadio() {
return this.$('#show-timerange');
}
+
get showSelectionRadio() {
return this.$('#show-selection');
}
@@ -95,7 +98,7 @@ DOM.defineCustomElement('view/list-panel',
_showEntries(entries) {
this._displayedLogEntries = entries;
- this.update();
+ this.requestUpdate();
}
_update() {
@@ -123,6 +126,12 @@ DOM.defineCustomElement('view/list-panel',
this.dispatchEvent(new FocusEvent(group.key));
}
+ _logEntryMouseOverHandler(e) {
+ const group = e.currentTarget.group;
+ this.dispatchEvent(
+ new ToolTipEvent(group.key.toStringLong(), e.currentTarget));
+ }
+
_handleDetailsClick(event) {
event.stopPropagation();
const tr = event.target.parentNode;
@@ -182,6 +191,7 @@ DOM.defineCustomElement('view/list-panel',
const valueTd = tr.appendChild(DOM.td(`${group.key}`, 'key'));
if (this._isClickable(group.key)) {
tr.onclick = this._logEntryClickHandler;
+ tr.onmouseover = this._logEntryMouseOverHandler;
valueTd.classList.add('clickable');
}
return tr;
diff --git a/deps/v8/tools/system-analyzer/view/map-panel-template.html b/deps/v8/tools/system-analyzer/view/map-panel-template.html
index 8a2b23ee3d..4790e376f9 100644
--- a/deps/v8/tools/system-analyzer/view/map-panel-template.html
+++ b/deps/v8/tools/system-analyzer/view/map-panel-template.html
@@ -11,7 +11,7 @@ found in the LICENSE file. -->
}
</style>
<div class="panel">
- <input type="checkbox" id="closer" class="panelCloserInput">
+ <input type="checkbox" id="closer" class="panelCloserInput" checked>
<label class="panelCloserLabel" for="closer">▼</label>
<h2>Map Panel</h2>
<div class="selection">
diff --git a/deps/v8/tools/system-analyzer/view/map-panel.mjs b/deps/v8/tools/system-analyzer/view/map-panel.mjs
index 7ee2325f34..be00ef0124 100644
--- a/deps/v8/tools/system-analyzer/view/map-panel.mjs
+++ b/deps/v8/tools/system-analyzer/view/map-panel.mjs
@@ -7,100 +7,103 @@ import './map-panel/map-transitions.mjs';
import {MapLogEntry} from '../log/map.mjs';
import {FocusEvent} from './events.mjs';
-import {DOM, V8CustomElement} from './helper.mjs';
-
-DOM.defineCustomElement(
- 'view/map-panel', (templateText) => class MapPanel extends V8CustomElement {
- _map;
- _timeline;
- _selectedLogEntries = [];
- _displayedLogEntries = [];
-
- constructor() {
- super(templateText);
- this.searchBarBtn.addEventListener('click', e => this._handleSearch(e));
- this.showAllRadio.onclick = _ => this._showEntries(this._timeline);
- this.showTimerangeRadio.onclick = _ =>
- this._showEntries(this._timeline.selectionOrSelf);
- this.showSelectionRadio.onclick = _ =>
- this._showEntries(this._selectedLogEntries);
- }
-
- get showAllRadio() {
- return this.$('#show-all');
- }
- get showTimerangeRadio() {
- return this.$('#show-timerange');
- }
- get showSelectionRadio() {
- return this.$('#show-selection');
- }
-
- get mapTransitionsPanel() {
- return this.$('#map-transitions');
- }
-
- get mapDetailsTransitionsPanel() {
- return this.$('#map-details-transitions');
- }
-
- get mapDetailsPanel() {
- return this.$('#map-details');
- }
-
- get searchBarBtn() {
- return this.$('#searchBarBtn');
- }
-
- get searchBar() {
- return this.$('#searchBar');
- }
-
- set timeline(timeline) {
- console.assert(timeline !== undefined, 'timeline undefined!');
- this._timeline = timeline;
- this.$('.panel').style.display =
- timeline.isEmpty() ? 'none' : 'inherit';
- this.mapTransitionsPanel.timeline = timeline;
- this.mapDetailsTransitionsPanel.timeline = timeline;
- }
-
- set selectedLogEntries(entries) {
- if (entries === this._timeline.selection) {
- this.showTimerangeRadio.click();
- } else if (entries == this._timeline) {
- this.showAllRadio.click();
- } else {
- this._selectedLogEntries = entries;
- this.showSelectionRadio.click();
- }
- }
-
- set map(map) {
- this._map = map;
- this.mapDetailsTransitionsPanel.selectedLogEntries = [map];
- this.mapDetailsPanel.map = map;
- }
-
- _showEntries(entries) {
- this._displayedLogEntries = entries;
- this.mapTransitionsPanel.selectedLogEntries = entries;
- }
-
- update() {
- // nothing to do
- }
-
- _handleSearch(e) {
- let searchBar = this.$('#searchBarInput');
- let searchBarInput = searchBar.value;
- // access the map from model cache
- let selectedMap = MapLogEntry.get(searchBarInput);
- if (selectedMap) {
- searchBar.className = 'success';
- this.dispatchEvent(new FocusEvent(selectedMap));
- } else {
- searchBar.className = 'failure';
- }
- }
- });
+import {CollapsableElement, DOM} from './helper.mjs';
+
+DOM.defineCustomElement('view/map-panel',
+ (templateText) =>
+ class MapPanel extends CollapsableElement {
+ _map;
+ _timeline;
+ _selectedLogEntries = [];
+ _displayedLogEntries = [];
+
+ constructor() {
+ super(templateText);
+ this.searchBarBtn.addEventListener('click', e => this._handleSearch(e));
+ this.showAllRadio.onclick = _ => this._showEntries(this._timeline);
+ this.showTimerangeRadio.onclick = _ =>
+ this._showEntries(this._timeline.selectionOrSelf);
+ this.showSelectionRadio.onclick = _ =>
+ this._showEntries(this._selectedLogEntries);
+ }
+
+ get showAllRadio() {
+ return this.$('#show-all');
+ }
+
+ get showTimerangeRadio() {
+ return this.$('#show-timerange');
+ }
+
+ get showSelectionRadio() {
+ return this.$('#show-selection');
+ }
+
+ get mapTransitionsPanel() {
+ return this.$('#map-transitions');
+ }
+
+ get mapDetailsTransitionsPanel() {
+ return this.$('#map-details-transitions');
+ }
+
+ get mapDetailsPanel() {
+ return this.$('#map-details');
+ }
+
+ get searchBarBtn() {
+ return this.$('#searchBarBtn');
+ }
+
+ get searchBar() {
+ return this.$('#searchBar');
+ }
+
+ set timeline(timeline) {
+ console.assert(timeline !== undefined, 'timeline undefined!');
+ this._timeline = timeline;
+ this.$('.panel').style.display = timeline.isEmpty() ? 'none' : 'inherit';
+ this.mapTransitionsPanel.timeline = timeline;
+ this.mapDetailsTransitionsPanel.timeline = timeline;
+ }
+
+ set selectedLogEntries(entries) {
+ if (entries === this._timeline.selection) {
+ this.showTimerangeRadio.click();
+ } else if (entries == this._timeline) {
+ this.showAllRadio.click();
+ } else {
+ this._selectedLogEntries = entries;
+ this.showSelectionRadio.click();
+ }
+ }
+
+ set map(map) {
+ this._map = map;
+ this.requestUpdate();
+ }
+
+ _showEntries(entries) {
+ this._displayedLogEntries = entries;
+ this.requestUpdate();
+ }
+
+ _update() {
+ this.mapDetailsTransitionsPanel.selectedLogEntries = [this._map];
+ this.mapDetailsPanel.map = this._map;
+ this.mapTransitionsPanel.selectedLogEntries = this._displayedLogEntries;
+ }
+
+ _handleSearch(e) {
+ const searchBar = this.$('#searchBarInput');
+ const searchBarInput = searchBar.value;
+ // access the map from model cache
+ const selectedMap = MapLogEntry.get(searchBarInput);
+ if (selectedMap) {
+ searchBar.className = 'success';
+ this.dispatchEvent(new FocusEvent(selectedMap));
+ } else {
+ searchBar.className = 'failure';
+ }
+ }
+});
diff --git a/deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs b/deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs
index 446475a5b0..a8ea27e2e4 100644
--- a/deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs
+++ b/deps/v8/tools/system-analyzer/view/map-panel/map-details.mjs
@@ -25,7 +25,7 @@ DOM.defineCustomElement(
set map(map) {
if (this._map === map) return;
this._map = map;
- this.update();
+ this.requestUpdate();
}
_update() {
diff --git a/deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs b/deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs
index f60bd37d39..fbe78f9156 100644
--- a/deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs
+++ b/deps/v8/tools/system-analyzer/view/map-panel/map-transitions.mjs
@@ -37,7 +37,7 @@ DOM.defineCustomElement(
set selectedLogEntries(list) {
this._selectedLogEntries = list;
- this.update();
+ this.requestUpdate();
}
_update() {
diff --git a/deps/v8/tools/system-analyzer/view/script-panel-template.html b/deps/v8/tools/system-analyzer/view/script-panel-template.html
index 27fd3d83eb..ab5c3f95f3 100644
--- a/deps/v8/tools/system-analyzer/view/script-panel-template.html
+++ b/deps/v8/tools/system-analyzer/view/script-panel-template.html
@@ -40,11 +40,15 @@ found in the LICENSE file. -->
.marked {
background-color: var(--secondary-color);
+ box-shadow: 0px 0px 2px 3px var(--secondary-color);
+ animation-name: pulse;
+ animation-duration: 3s;
+ animation-delay: 500ms;
}
@keyframes pulse {
0% {
- box-shadow: 0px 0px 0px 0px var(--secondary-color);
+ box-shadow: 0px 0px 0px 3px var(--secondary-color);
}
5% {
box-shadow: 0px 0px 0px 10px var(--secondary-color);
@@ -56,11 +60,13 @@ found in the LICENSE file. -->
box-shadow: 0px 0px 0px 10px var(--secondary-color);
}
20% {
- box-shadow: 0px 0px 0px 0px var(--secondary-color);
+ box-shadow: 0px 0px 2px 3px var(--secondary-color);
}
}
</style>
<div class="panel">
+ <input type="checkbox" id="closer" class="panelCloserInput" checked>
+ <label class="panelCloserLabel" for="closer">▼</label>
<h2>Source Panel</h2>
<div class="selection">
<select id="script-dropdown"></select>
diff --git a/deps/v8/tools/system-analyzer/view/script-panel.mjs b/deps/v8/tools/system-analyzer/view/script-panel.mjs
index b0dac6960c..6f5befcc16 100644
--- a/deps/v8/tools/system-analyzer/view/script-panel.mjs
+++ b/deps/v8/tools/system-analyzer/view/script-panel.mjs
@@ -5,11 +5,11 @@ import {groupBy} from '../helper.mjs';
import {App} from '../index.mjs'
import {SelectRelatedEvent, ToolTipEvent} from './events.mjs';
-import {CSSColor, delay, DOM, formatBytes, gradientStopsFromGroups, V8CustomElement} from './helper.mjs';
+import {CollapsableElement, CSSColor, delay, DOM, formatBytes, gradientStopsFromGroups} from './helper.mjs';
DOM.defineCustomElement('view/script-panel',
(templateText) =>
- class SourcePanel extends V8CustomElement {
+ class SourcePanel extends CollapsableElement {
_selectedSourcePositions = [];
_sourcePositionsToMarkNodes = [];
_scripts = [];
@@ -110,7 +110,7 @@ DOM.defineCustomElement('view/script-panel',
if (!sourcePosition) return;
const markNode = this._sourcePositionsToMarkNodes.get(sourcePosition);
markNode.scrollIntoView(
- {behavior: 'smooth', block: 'nearest', inline: 'center'});
+ {behavior: 'auto', block: 'center', inline: 'center'});
}
_handleSelectScript(e) {
diff --git a/deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs b/deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs
index 60216af2ee..6f05b772d8 100644
--- a/deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs
+++ b/deps/v8/tools/system-analyzer/view/timeline/timeline-track.mjs
@@ -112,7 +112,7 @@ DOM.defineCustomElement('view/timeline/timeline-track',
_updateChunks() {
this._chunks =
this._timeline.chunks(this.nofChunks, this._legend.filterPredicate);
- this.update();
+ this.requestUpdate();
}
get chunks() {
@@ -180,7 +180,7 @@ DOM.defineCustomElement('view/timeline/timeline-track',
node.ondblclick = this._chunkDoubleClickHandler;
}
const style = node.style;
- style.left = `${((chunk.start - start) * this._timeToPixel) | 0}px`;
+ style.left = `${i * kChunkWidth}px`;
style.height = `${height | 0}px`;
style.backgroundImage = this._createBackgroundImage(chunk);
node.chunk = chunk;
diff --git a/deps/v8/tools/system-analyzer/view/tool-tip-template.html b/deps/v8/tools/system-analyzer/view/tool-tip-template.html
index b0e9c72c45..dc56997825 100644
--- a/deps/v8/tools/system-analyzer/view/tool-tip-template.html
+++ b/deps/v8/tools/system-analyzer/view/tool-tip-template.html
@@ -24,6 +24,7 @@ found in the LICENSE file. -->
.textContent {
font-family: monospace;
white-space: pre;
+ overflow-wrap: anywhere;
overflow-x: hidden;
max-width: 500px;
}
diff --git a/deps/v8/tools/system-analyzer/view/tool-tip.mjs b/deps/v8/tools/system-analyzer/view/tool-tip.mjs
index 896c04dd29..a01ee1bdbf 100644
--- a/deps/v8/tools/system-analyzer/view/tool-tip.mjs
+++ b/deps/v8/tools/system-analyzer/view/tool-tip.mjs
@@ -16,9 +16,10 @@ DOM.defineCustomElement(
this.hide();
} else {
this.show();
- this.update(true);
+ this.requestUpdate(true);
}
});
+ document.addEventListener('click', (e) => this.hide());
}
_update() {
@@ -31,7 +32,7 @@ DOM.defineCustomElement(
rect.y += rect.height;
}
this._setPosition(rect, atRight, atBottom);
- this.update(true);
+ this.requestUpdate(true);
}
set positionOrTargetNode(positionOrTargetNode) {
@@ -47,7 +48,7 @@ DOM.defineCustomElement(
this._targetNode = targetNode;
if (targetNode) {
this._intersectionObserver.observe(targetNode);
- this.update(true);
+ this.requestUpdate(true);
}
}
diff --git a/deps/v8/tools/testrunner/base_runner.py b/deps/v8/tools/testrunner/base_runner.py
index 76aff630ff..b6889a3773 100644
--- a/deps/v8/tools/testrunner/base_runner.py
+++ b/deps/v8/tools/testrunner/base_runner.py
@@ -172,6 +172,7 @@ class BuildConfig(object):
self.cfi_vptr = build_config['is_cfi']
self.control_flow_integrity = build_config['v8_control_flow_integrity']
self.concurrent_marking = build_config['v8_enable_concurrent_marking']
+ self.single_generation = build_config['v8_enable_single_generation']
self.dcheck_always_on = build_config['dcheck_always_on']
self.gcov_coverage = build_config['is_gcov_coverage']
self.is_android = build_config['is_android']
@@ -189,6 +190,8 @@ class BuildConfig(object):
self.verify_csa = build_config['v8_enable_verify_csa']
self.lite_mode = build_config['v8_enable_lite_mode']
self.pointer_compression = build_config['v8_enable_pointer_compression']
+ self.pointer_compression_shared_cage = build_config['v8_enable_pointer_compression_shared_cage']
+ self.third_party_heap = build_config['v8_enable_third_party_heap']
self.webassembly = build_config['v8_enable_webassembly']
# Export only for MIPS target
if self.arch in ['mips', 'mipsel', 'mips64', 'mips64el']:
@@ -229,6 +232,10 @@ class BuildConfig(object):
detected_options.append('lite_mode')
if self.pointer_compression:
detected_options.append('pointer_compression')
+ if self.pointer_compression_shared_cage:
+ detected_options.append('pointer_compression_shared_cage')
+ if self.third_party_heap:
+ detected_options.append('third_party_heap')
if self.webassembly:
detected_options.append('webassembly')
@@ -351,16 +358,13 @@ class BaseTestRunner(object):
# Progress
parser.add_option("-p", "--progress",
- choices=PROGRESS_INDICATORS.keys(), default="mono",
+ choices=list(PROGRESS_INDICATORS), default="mono",
help="The style of progress indicator (verbose, dots, "
"color, mono)")
parser.add_option("--json-test-results",
help="Path to a file for storing json results.")
parser.add_option('--slow-tests-cutoff', type="int", default=100,
help='Collect N slowest tests')
- parser.add_option("--junitout", help="File name of the JUnit output")
- parser.add_option("--junittestsuite", default="v8tests",
- help="The testsuite name in the JUnit output file")
parser.add_option("--exit-after-n-failures", type="int", default=100,
help="Exit after the first N failures instead of "
"running all tests. Pass 0 to disable this feature.")
@@ -641,7 +645,7 @@ class BaseTestRunner(object):
self.build_config.arch in ['mipsel', 'mips', 'mips64', 'mips64el'] and
self.build_config.mips_arch_variant)
- no_simd_sse = any(
+ no_simd_hardware = any(
i in options.extra_flags for i in ['--noenable-sse3',
'--no-enable-sse3'
'--noenable-ssse3',
@@ -649,14 +653,16 @@ class BaseTestRunner(object):
'--noenable-sse4-1',
'--no-enable-sse4_1'])
- # Set no_simd_sse on architectures without Simd enabled.
+ # Set no_simd_hardware on architectures without Simd enabled.
if self.build_config.arch == 'mips64el' or \
self.build_config.arch == 'mipsel':
- no_simd_sse = not simd_mips
+ no_simd_hardware = not simd_mips
- # Set no_simd_sse on architectures without Simd enabled.
- if self.build_config.arch == 'ppc64':
- no_simd_sse = True
+ # Ppc64 processors earlier than POWER9 do not support Simd instructions
+ if self.build_config.arch == 'ppc64' and \
+ not self.build_config.simulator_run and \
+ utils.GuessPowerProcessorVersion() < 9:
+ no_simd_hardware = True
return {
"arch": self.build_config.arch,
@@ -665,6 +671,7 @@ class BaseTestRunner(object):
"cfi_vptr": self.build_config.cfi_vptr,
"control_flow_integrity": self.build_config.control_flow_integrity,
"concurrent_marking": self.build_config.concurrent_marking,
+ "single_generation": self.build_config.single_generation,
"dcheck_always_on": self.build_config.dcheck_always_on,
"deopt_fuzzer": False,
"endurance_fuzzer": False,
@@ -680,7 +687,7 @@ class BaseTestRunner(object):
"msan": self.build_config.msan,
"no_harness": options.no_harness,
"no_i18n": self.build_config.no_i18n,
- "no_simd_sse": no_simd_sse,
+ "no_simd_hardware": no_simd_hardware,
"novfp3": False,
"optimize_for_size": "--optimize-for-size" in options.extra_flags,
"predictable": self.build_config.predictable,
@@ -688,11 +695,13 @@ class BaseTestRunner(object):
"simulator_run": self.build_config.simulator_run and
not options.dont_skip_simulator_slow_tests,
"system": self.target_os,
+ "third_party_heap": self.build_config.third_party_heap,
"tsan": self.build_config.tsan,
"ubsan_vptr": self.build_config.ubsan_vptr,
"verify_csa": self.build_config.verify_csa,
"lite_mode": self.build_config.lite_mode,
"pointer_compression": self.build_config.pointer_compression,
+ "pointer_compression_shared_cage": self.build_config.pointer_compression_shared_cage,
}
def _runner_flags(self):
@@ -725,6 +734,8 @@ class BaseTestRunner(object):
factor *= 2
if self.build_config.predictable:
factor *= 4
+ if self.build_config.tsan:
+ factor *= 1.5
if self.build_config.use_sanitizer:
factor *= 1.5
if self.build_config.is_full_debug:
@@ -787,9 +798,6 @@ class BaseTestRunner(object):
def _create_progress_indicators(self, test_count, options):
procs = [PROGRESS_INDICATORS[options.progress]()]
- if options.junitout:
- procs.append(progress.JUnitTestProgressIndicator(options.junitout,
- options.junittestsuite))
if options.json_test_results:
procs.append(progress.JsonTestProgressIndicator(self.framework_name))
diff --git a/deps/v8/tools/testrunner/local/junit_output.py b/deps/v8/tools/testrunner/local/junit_output.py
deleted file mode 100644
index 52f31ec422..0000000000
--- a/deps/v8/tools/testrunner/local/junit_output.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2013 the V8 project authors. All rights reserved.
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-import xml.etree.ElementTree as xml
-
-
-class JUnitTestOutput:
- def __init__(self, test_suite_name):
- self.root = xml.Element("testsuite")
- self.root.attrib["name"] = test_suite_name
-
- def HasRunTest(self, test_name, test_cmd, test_duration, test_failure):
- testCaseElement = xml.Element("testcase")
- testCaseElement.attrib["name"] = test_name
- testCaseElement.attrib["cmd"] = test_cmd
- testCaseElement.attrib["time"] = str(round(test_duration, 3))
- if len(test_failure):
- failureElement = xml.Element("failure")
- failureElement.text = test_failure
- testCaseElement.append(failureElement)
- self.root.append(testCaseElement)
-
- def FinishAndWrite(self, f):
- xml.ElementTree(self.root).write(f, "UTF-8")
diff --git a/deps/v8/tools/testrunner/local/statusfile.py b/deps/v8/tools/testrunner/local/statusfile.py
index 6c2cc01fb8..b6f97cd564 100644
--- a/deps/v8/tools/testrunner/local/statusfile.py
+++ b/deps/v8/tools/testrunner/local/statusfile.py
@@ -282,7 +282,7 @@ def ReadStatusFile(content, variables):
def _ReadSection(section, variables, rules, prefix_rules):
assert type(section) == dict
- for rule, outcome_list in section.iteritems():
+ for rule, outcome_list in section.items():
assert type(rule) == str
if rule[-1] == '*':
diff --git a/deps/v8/tools/testrunner/local/utils.py b/deps/v8/tools/testrunner/local/utils.py
index 8fdc16b4bb..94429a9fde 100644
--- a/deps/v8/tools/testrunner/local/utils.py
+++ b/deps/v8/tools/testrunner/local/utils.py
@@ -97,6 +97,58 @@ def GuessOS():
return None
+# Returns power processor version, taking compatibility mode into account.
+# (Power9 running in Power8 compatibility mode returns 8)
+# Only useful if arch is ppc64
+def GuessPowerProcessorVersion():
+ import ctypes, ctypes.util
+ os = GuessOS()
+ if os == 'linux':
+ AT_PLATFORM = 15 # from linux/auxvec.h
+ _LIBC = ctypes.CDLL(ctypes.util.find_library('c'))
+ _LIBC.getauxval.argtypes = [ctypes.c_ulong]
+ _LIBC.getauxval.restype = ctypes.c_char_p
+ at_platform = _LIBC.getauxval(AT_PLATFORM).decode('utf-8').lower()
+ if at_platform.startswith('power6'):
+ return 6
+ elif at_platform.startswith('power7'):
+ return 7
+ elif at_platform.startswith('power8'):
+ return 8
+ elif at_platform.startswith('power9'):
+ return 9
+ elif at_platform.startswith('power10'):
+ return 10
+ else:
+ raise Exception('Unable to guess power processor version')
+ elif os == 'aix':
+ # covers aix and os400
+ RTLD_MEMBER = 0x00040000
+ _LIBC = ctypes.CDLL(ctypes.util.find_library('c'),
+ ctypes.DEFAULT_MODE | RTLD_MEMBER)
+ class _system_configuration(ctypes.Structure):
+ _fields_ = [
+ ('architecture', ctypes.c_int),
+ ('implementation', ctypes.c_int),
+ ]
+ cfg = _system_configuration.in_dll(_LIBC, '_system_configuration')
+ # Values found in sys/systemcfg.h
+ if cfg.implementation == 0x4000:
+ return 6
+ elif cfg.implementation == 0x8000:
+ return 7
+ elif cfg.implementation == 0x10000:
+ return 8
+ elif cfg.implementation == 0x20000:
+ return 9
+ elif cfg.implementation == 0x40000:
+ return 10
+ else:
+ raise Exception('Unable to guess power processor version')
+ else:
+ raise Exception('Unable to guess power processor version')
+
+
def UseSimulator(arch):
machine = platform.machine()
return (machine and
diff --git a/deps/v8/tools/testrunner/local/variants.py b/deps/v8/tools/testrunner/local/variants.py
index 0af6d3ab0e..e214de0540 100644
--- a/deps/v8/tools/testrunner/local/variants.py
+++ b/deps/v8/tools/testrunner/local/variants.py
@@ -44,6 +44,7 @@ ALL_VARIANT_FLAGS = {
"instruction_scheduling": [["--turbo-instruction-scheduling"]],
"stress_instruction_scheduling": [["--turbo-stress-instruction-scheduling"]],
"top_level_await": [["--harmony-top-level-await"]],
+ "wasm_write_protect_code": [["--wasm-write-protect-code-memory"]],
}
# Flags that lead to a contradiction with the flags provided by the respective
@@ -59,9 +60,9 @@ INCOMPATIBLE_FLAGS_PER_VARIANT = {
"slow_path": ["--no-force-slow-path"],
"stress_concurrent_allocation": ["--single-threaded-gc", "--predictable"],
"stress_concurrent_inlining": ["--single-threaded", "--predictable",
- "--no-turbo-direct-heap-access"],
+ "--no-concurrent-inlining"],
+ "concurrent_inlining": ["--no-concurrent-inlining"],
"stress_incremental_marking": ["--no-stress-incremental-marking"],
- "future": ["--no-turbo-direct-heap-access"],
"stress_js_bg_compile_wasm_code_gc": ["--no-stress-background-compile"],
"stress": ["--no-stress-opt", "--always-opt", "--no-always-opt", "--liftoff",
"--max-inlined-bytecode-size=*",
@@ -69,16 +70,17 @@ INCOMPATIBLE_FLAGS_PER_VARIANT = {
"--wasm-generic-wrapper"],
"sparkplug": ["--jitless", "--no-sparkplug" ],
"always_sparkplug": ["--jitless", "--no-sparkplug", "--no-always-sparkplug"],
- "turboprop": ["--interrupt-budget=*", "--no-turbo-direct-heap-access",
- "--no-turboprop"],
- "turboprop_as_toptier": ["--interrupt-budget=*",
- "--no-turbo-direct-heap-access", "--no-turboprop",
+ "turboprop": ["--interrupt-budget=*", "--no-turboprop"],
+ "turboprop_as_toptier": ["--interrupt-budget=*", "--no-turboprop",
"--no-turboprop-as-toptier"],
"code_serializer": ["--cache=after-execute", "--cache=full-code-cache",
"--cache=none"],
"no_local_heaps": ["--concurrent-inlining", "--turboprop"],
"experimental_regexp": ["--no-enable-experimental-regexp-engine",
"--no-default-to-experimental-regexp-engine"],
+ # There is a negative implication: --perf-prof disables
+ # --wasm-write-protect-code-memory.
+ "wasm_write_protect_code": ["--perf-prof"],
}
# Flags that lead to a contradiction under certain build variables.
@@ -101,6 +103,8 @@ INCOMPATIBLE_FLAGS_PER_BUILD_VARIABLE = {
# The conflicts might be directly contradictory flags or be caused by the
# implications defined in flag-definitions.h.
INCOMPATIBLE_FLAGS_PER_EXTRA_FLAG = {
+ "--concurrent-inlining":
+ INCOMPATIBLE_FLAGS_PER_VARIANT["concurrent_inlining"],
"--concurrent-recompilation": ["--no-concurrent-recompilation", "--predictable"],
"--enable-armv8": ["--no-enable-armv8"],
"--gc-interval=*": ["--gc-interval=*"],
@@ -109,9 +113,9 @@ INCOMPATIBLE_FLAGS_PER_EXTRA_FLAG = {
"--no-enable-sse4-1": ["--enable-sse4-1"],
"--optimize-for-size": ["--max-semi-space-size=*"],
"--stress_concurrent_allocation": ["--single-threaded-gc", "--predictable"],
- "--stress_concurrent_inlining": ["--single-threaded", "--predictable"],
+ "--stress-concurrent-inlining":
+ INCOMPATIBLE_FLAGS_PER_VARIANT["stress_concurrent_inlining"],
"--stress-flush-bytecode": ["--no-stress-flush-bytecode"],
- "--future": ["--no-turbo-direct-heap-access"],
"--stress-incremental-marking": INCOMPATIBLE_FLAGS_PER_VARIANT["stress_incremental_marking"],
}
diff --git a/deps/v8/tools/testrunner/outproc/message.py b/deps/v8/tools/testrunner/outproc/message.py
index c253b6f8e0..c301529eb7 100644
--- a/deps/v8/tools/testrunner/outproc/message.py
+++ b/deps/v8/tools/testrunner/outproc/message.py
@@ -9,9 +9,11 @@ import re
from . import base
-class OutProc(base.OutProc):
- def __init__(self, expected_outcomes, basepath, expected_fail):
- super(OutProc, self).__init__(expected_outcomes)
+class OutProc(base.ExpectedOutProc):
+ def __init__(self, expected_outcomes, basepath, expected_fail,
+ expected_filename, regenerate_expected_files):
+ super(OutProc, self).__init__(expected_outcomes, expected_filename,
+ regenerate_expected_files)
self._basepath = basepath
self._expected_fail = expected_fail
diff --git a/deps/v8/tools/testrunner/standard_runner.py b/deps/v8/tools/testrunner/standard_runner.py
index f3551d01b8..94c2576682 100755
--- a/deps/v8/tools/testrunner/standard_runner.py
+++ b/deps/v8/tools/testrunner/standard_runner.py
@@ -46,7 +46,7 @@ VARIANT_ALIASES = {
'exhaustive': MORE_VARIANTS + VARIANTS,
# Additional variants, run on a subset of bots.
'extra': ['nooptimization', 'future', 'no_wasm_traps', 'turboprop',
- 'instruction_scheduling', 'turboprop_as_toptier'],
+ 'instruction_scheduling', 'always_sparkplug'],
}
# Extra flags passed to all tests using the standard test runner.
diff --git a/deps/v8/tools/testrunner/testproc/fuzzer.py b/deps/v8/tools/testrunner/testproc/fuzzer.py
index 965ba23d04..1237da56b2 100644
--- a/deps/v8/tools/testrunner/testproc/fuzzer.py
+++ b/deps/v8/tools/testrunner/testproc/fuzzer.py
@@ -43,6 +43,7 @@ EXTRA_FLAGS = [
(0.1, '--regexp-tier-up-ticks=10'),
(0.1, '--regexp-tier-up-ticks=100'),
(0.1, '--stress-background-compile'),
+ (0.1, '--stress-concurrent-inlining'),
(0.1, '--stress-lazy-source-positions'),
(0.1, '--stress-wasm-code-gc'),
(0.1, '--turbo-instruction-scheduling'),
diff --git a/deps/v8/tools/testrunner/testproc/progress.py b/deps/v8/tools/testrunner/testproc/progress.py
index 634ef7c2f2..9ff943a5c2 100644
--- a/deps/v8/tools/testrunner/testproc/progress.py
+++ b/deps/v8/tools/testrunner/testproc/progress.py
@@ -15,7 +15,6 @@ import time
from . import base
from . import util
-from ..local import junit_output
def print_failure_header(test):
@@ -349,45 +348,6 @@ class MonochromeProgressIndicator(CompactProgressIndicator):
print(("\r" + (" " * last_length) + "\r"), end='')
-class JUnitTestProgressIndicator(ProgressIndicator):
- def __init__(self, junitout, junittestsuite):
- super(JUnitTestProgressIndicator, self).__init__()
- self._requirement = base.DROP_PASS_STDOUT
-
- self.outputter = junit_output.JUnitTestOutput(junittestsuite)
- if junitout:
- self.outfile = open(junitout, "w")
- else:
- self.outfile = sys.stdout
-
- def _on_result_for(self, test, result):
- # TODO(majeski): Support for dummy/grouped results
- fail_text = ""
- output = result.output
- if result.has_unexpected_output:
- stdout = output.stdout.strip()
- if len(stdout):
- fail_text += "stdout:\n%s\n" % stdout
- stderr = output.stderr.strip()
- if len(stderr):
- fail_text += "stderr:\n%s\n" % stderr
- fail_text += "Command: %s" % result.cmd.to_string()
- if output.HasCrashed():
- fail_text += "exit code: %d\n--- CRASHED ---" % output.exit_code
- if output.HasTimedOut():
- fail_text += "--- TIMEOUT ---"
- self.outputter.HasRunTest(
- test_name=str(test),
- test_cmd=result.cmd.to_string(relative=True),
- test_duration=output.duration,
- test_failure=fail_text)
-
- def finished(self):
- self.outputter.FinishAndWrite(self.outfile)
- if self.outfile != sys.stdout:
- self.outfile.close()
-
-
class JsonTestProgressIndicator(ProgressIndicator):
def __init__(self, framework_name):
super(JsonTestProgressIndicator, self).__init__()
diff --git a/deps/v8/tools/tickprocessor-driver.mjs b/deps/v8/tools/tickprocessor-driver.mjs
index e7020e388d..c0507bfffe 100644
--- a/deps/v8/tools/tickprocessor-driver.mjs
+++ b/deps/v8/tools/tickprocessor-driver.mjs
@@ -73,6 +73,7 @@ const tickProcessor = new TickProcessor(
params.separateBytecodes,
params.separateBuiltins,
params.separateStubs,
+ params.separateBaselineHandlers,
params.callGraphSize,
params.ignoreUnknown,
params.stateFilter,
@@ -85,4 +86,9 @@ const tickProcessor = new TickProcessor(
params.runtimeTimerFilter,
params.preprocessJson);
tickProcessor.processLogFile(params.logFileName);
-tickProcessor.printStatistics();
+
+if (params.serializeVMSymbols) {
+ tickProcessor.printVMSymbols();
+} else {
+ tickProcessor.printStatistics();
+}
diff --git a/deps/v8/tools/tickprocessor.mjs b/deps/v8/tools/tickprocessor.mjs
index 1ad67e22c0..8b59e57335 100644
--- a/deps/v8/tools/tickprocessor.mjs
+++ b/deps/v8/tools/tickprocessor.mjs
@@ -35,10 +35,12 @@ class V8Profile extends Profile {
static IC_RE =
/^(LoadGlobalIC: )|(Handler: )|(?:CallIC|LoadIC|StoreIC)|(?:Builtin: (?:Keyed)?(?:Load|Store)IC_)/;
static BYTECODES_RE = /^(BytecodeHandler: )/;
+ static BASELINE_HANDLERS_RE = /^(Builtin: .*Baseline.*)/;
static BUILTINS_RE = /^(Builtin: )/;
static STUBS_RE = /^(Stub: )/;
- constructor(separateIc, separateBytecodes, separateBuiltins, separateStubs) {
+ constructor(separateIc, separateBytecodes, separateBuiltins, separateStubs,
+ separateBaselineHandlers) {
super();
const regexps = [];
if (!separateIc) regexps.push(V8Profile.IC_RE);
@@ -46,7 +48,7 @@ class V8Profile extends Profile {
if (!separateBuiltins) regexps.push(V8Profile.BUILTINS_RE);
if (!separateStubs) regexps.push(V8Profile.STUBS_RE);
if (regexps.length > 0) {
- this.skipThisFunction = function (name) {
+ this.skipThisFunction = function(name) {
for (let i = 0; i < regexps.length; i++) {
if (regexps[i].test(name)) return true;
}
@@ -64,7 +66,7 @@ export function readFile(fileName) {
try {
return read(fileName);
} catch (e) {
- printErr(`${fileName}: ${e.message || e}`);
+ printErr(`file="${fileName}": ${e.message || e}`);
throw e;
}
}
@@ -77,6 +79,7 @@ export class TickProcessor extends LogReader {
separateBytecodes,
separateBuiltins,
separateStubs,
+ separateBaselineHandlers,
callGraphSize,
ignoreUnknown,
stateFilter,
@@ -211,7 +214,7 @@ export class TickProcessor extends LogReader {
this.profile_ = new JsonProfile();
} else {
this.profile_ = new V8Profile(separateIc, separateBytecodes,
- separateBuiltins, separateStubs);
+ separateBuiltins, separateStubs, separateBaselineHandlers);
}
this.codeTypes_ = {};
// Count each tick as a time unit.
@@ -228,6 +231,7 @@ export class TickProcessor extends LogReader {
GC: 1,
PARSER: 2,
BYTECODE_COMPILER: 3,
+ // TODO(cbruni): add BASELINE_COMPILER
COMPILER: 4,
OTHER: 5,
EXTERNAL: 6,
@@ -285,7 +289,7 @@ export class TickProcessor extends LogReader {
processSharedLibrary(name, startAddr, endAddr, aslrSlide) {
const entry = this.profile_.addLibrary(name, startAddr, endAddr, aslrSlide);
this.setCodeType(entry.getName(), 'SHARED_LIB');
- const libFuncs = this.cppEntriesProvider_.parseVmSymbols(
+ this.cppEntriesProvider_.parseVmSymbols(
name, startAddr, endAddr, aslrSlide, (fName, fStart, fEnd) => {
this.profile_.addStaticCode(fName, fStart, fEnd);
this.setCodeType(fName, 'CPP');
@@ -409,6 +413,11 @@ export class TickProcessor extends LogReader {
this.generation_++;
}
+ printVMSymbols() {
+ console.log(
+ JSON.stringify(this.profile_.serializeVMSymbols()));
+ }
+
printStatistics() {
if (this.preprocessJson) {
this.profile_.writeJson();
@@ -854,6 +863,8 @@ export class ArgumentsProcessor extends BaseArgumentsProcessor {
'Separate Builtin entries'],
'--separate-stubs': ['separateStubs', parseBool,
'Separate Stub entries'],
+ '--separate-baseline-handlers': ['separateBaselineHandlers', parseBool,
+ 'Separate Baseline Handler entries'],
'--unix': ['platform', 'unix',
'Specify that we are running on *nix platform'],
'--windows': ['platform', 'windows',
@@ -880,6 +891,8 @@ export class ArgumentsProcessor extends BaseArgumentsProcessor {
'Ignore ticks outside pairs of Date.now() calls'],
'--only-summary': ['onlySummary', true,
'Print only tick summary, exclude other information'],
+ '--serialize-vm-symbols': ['serializeVMSymbols', true,
+ 'Print all C++ symbols and library addresses as JSON data'],
'--preprocess': ['preprocessJson', true,
'Preprocess for consumption with web interface']
};
@@ -903,6 +916,7 @@ export class ArgumentsProcessor extends BaseArgumentsProcessor {
separateBytecodes: false,
separateBuiltins: true,
separateStubs: true,
+ separateBaselineHandlers: false,
preprocessJson: null,
targetRootFS: '',
nm: 'nm',
@@ -913,6 +927,7 @@ export class ArgumentsProcessor extends BaseArgumentsProcessor {
pairwiseTimedRange: false,
onlySummary: false,
runtimeTimerFilter: null,
+ serializeVMSymbols: false,
};
}
}
diff --git a/deps/v8/tools/ubsan/blacklist.txt b/deps/v8/tools/ubsan/ignorelist.txt
index ea4e79bf52..4e476abe49 100644
--- a/deps/v8/tools/ubsan/blacklist.txt
+++ b/deps/v8/tools/ubsan/ignorelist.txt
@@ -1,5 +1,5 @@
#############################################################################
-# UBSan blacklist.
+# UBSan ignorelist.
# Bug 8735: PropertyCallbackInfo<void> vs PropertyCallbackInfo<T>.
fun:*v8*internal*PropertyCallbackArguments*CallAccessorSetter*
diff --git a/deps/v8/tools/ubsan/vptr_blacklist.txt b/deps/v8/tools/ubsan/vptr_ignorelist.txt
index ccad5b1061..26c30ed02d 100644
--- a/deps/v8/tools/ubsan/vptr_blacklist.txt
+++ b/deps/v8/tools/ubsan/vptr_ignorelist.txt
@@ -1,9 +1,9 @@
#############################################################################
-# UBSan vptr blacklist.
-# Function and type based blacklisting use a mangled name, and it is especially
+# UBSan vptr ignorelist.
+# Function and type based ignorelisting use a mangled name, and it is especially
# tricky to represent C++ types. For now, any possible changes by name manglings
# are simply represented as wildcard expressions of regexp, and thus it might be
-# over-blacklisted.
+# over-ignorelisted.
#############################################################################
# UBsan goes into an infinite recursion when __dynamic_cast instrumented with
diff --git a/deps/v8/tools/unittests/run_tests_test.py b/deps/v8/tools/unittests/run_tests_test.py
index f174a239bf..ae3833abc8 100755
--- a/deps/v8/tools/unittests/run_tests_test.py
+++ b/deps/v8/tools/unittests/run_tests_test.py
@@ -334,7 +334,8 @@ class SystemTest(unittest.TestCase):
is_msan=True, is_tsan=True, is_ubsan_vptr=True, target_cpu='x86',
v8_enable_i18n_support=False, v8_target_cpu='x86',
v8_enable_verify_csa=False, v8_enable_lite_mode=False,
- v8_enable_pointer_compression=False)
+ v8_enable_pointer_compression=False,
+ v8_enable_pointer_compression_shared_cage=False)
result = run_tests(
basedir,
'--progress=verbose',
diff --git a/deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json b/deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json
index eb30c4d28f..04ccbb1600 100644
--- a/deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json
+++ b/deps/v8/tools/unittests/testdata/testroot1/v8_build_config.json
@@ -21,6 +21,9 @@
"v8_enable_verify_csa": false,
"v8_enable_lite_mode": false,
"v8_enable_pointer_compression": true,
+ "v8_enable_pointer_compression_shared_cage": true,
"v8_control_flow_integrity": false,
+ "v8_enable_single_generation": false,
+ "v8_enable_third_party_heap": false,
"v8_enable_webassembly": true
}
diff --git a/deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json b/deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json
index e6d5b52942..b3e36ef6de 100644
--- a/deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json
+++ b/deps/v8/tools/unittests/testdata/testroot2/v8_build_config.json
@@ -21,6 +21,9 @@
"v8_enable_verify_csa": false,
"v8_enable_lite_mode": false,
"v8_enable_pointer_compression": false,
+ "v8_enable_pointer_compression_shared_cage": false,
"v8_control_flow_integrity": false,
+ "v8_enable_single_generation": false,
+ "v8_enable_third_party_heap": false,
"v8_enable_webassembly": true
}
diff --git a/deps/v8/tools/v8.xcodeproj/README.txt b/deps/v8/tools/v8.xcodeproj/README.txt
new file mode 100644
index 0000000000..e064ff6bf1
--- /dev/null
+++ b/deps/v8/tools/v8.xcodeproj/README.txt
@@ -0,0 +1,11 @@
+The Xcode project for V8 has been retired. If an Xcode project
+is needed for building on a Mac there is the option of using GYP to
+generate it. Please look in the build directory in the root of the
+V8 project. It contains the required infrastructure and a README.txt
+file explaining how to get started.
+
+Generating Xcode projects using GYP is how the Chromium
+project integrated V8 into the Mac build.
+
+The main build system for V8 is still SCons, see
+http://code.google.com/apis/v8/build.html for details.
diff --git a/deps/v8/tools/v8_presubmit.py b/deps/v8/tools/v8_presubmit.py
index db008aabf1..f421279451 100755
--- a/deps/v8/tools/v8_presubmit.py
+++ b/deps/v8/tools/v8_presubmit.py
@@ -63,6 +63,8 @@ from testrunner.local import utils
# runtime/references: As of May 2020 the C++ style guide suggests using
# references for out parameters, see
# https://google.github.io/styleguide/cppguide.html#Inputs_and_Outputs.
+# whitespace/braces: Doesn't handle {}-initialization for custom types
+# well; also should be subsumed by clang-format.
LINT_RULES = """
-build/header_guard
@@ -70,6 +72,7 @@ LINT_RULES = """
-readability/fn_size
-readability/multiline_comment
-runtime/references
+-whitespace/braces
-whitespace/comments
""".split()
diff --git a/deps/v8/tools/v8heapconst.py b/deps/v8/tools/v8heapconst.py
index f0cc6481a8..c28123dcec 100644
--- a/deps/v8/tools/v8heapconst.py
+++ b/deps/v8/tools/v8heapconst.py
@@ -32,126 +32,128 @@ INSTANCE_TYPES = {
68: "ABSTRACT_INTERNAL_CLASS_SUBCLASS1_TYPE",
69: "ABSTRACT_INTERNAL_CLASS_SUBCLASS2_TYPE",
70: "FOREIGN_TYPE",
- 71: "WASM_TYPE_INFO_TYPE",
- 72: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE",
- 73: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE",
- 74: "CALLABLE_TASK_TYPE",
- 75: "CALLBACK_TASK_TYPE",
- 76: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE",
- 77: "LOAD_HANDLER_TYPE",
- 78: "STORE_HANDLER_TYPE",
- 79: "FUNCTION_TEMPLATE_INFO_TYPE",
- 80: "OBJECT_TEMPLATE_INFO_TYPE",
- 81: "ACCESS_CHECK_INFO_TYPE",
- 82: "ACCESSOR_INFO_TYPE",
- 83: "ACCESSOR_PAIR_TYPE",
- 84: "ALIASED_ARGUMENTS_ENTRY_TYPE",
- 85: "ALLOCATION_MEMENTO_TYPE",
- 86: "ALLOCATION_SITE_TYPE",
- 87: "ARRAY_BOILERPLATE_DESCRIPTION_TYPE",
- 88: "ASM_WASM_DATA_TYPE",
- 89: "ASYNC_GENERATOR_REQUEST_TYPE",
- 90: "BASELINE_DATA_TYPE",
- 91: "BREAK_POINT_TYPE",
- 92: "BREAK_POINT_INFO_TYPE",
- 93: "CACHED_TEMPLATE_OBJECT_TYPE",
- 94: "CALL_HANDLER_INFO_TYPE",
- 95: "CLASS_POSITIONS_TYPE",
- 96: "DEBUG_INFO_TYPE",
- 97: "ENUM_CACHE_TYPE",
- 98: "FEEDBACK_CELL_TYPE",
- 99: "FUNCTION_TEMPLATE_RARE_DATA_TYPE",
- 100: "INTERCEPTOR_INFO_TYPE",
- 101: "INTERPRETER_DATA_TYPE",
- 102: "MODULE_REQUEST_TYPE",
- 103: "PROMISE_CAPABILITY_TYPE",
- 104: "PROMISE_REACTION_TYPE",
- 105: "PROPERTY_DESCRIPTOR_OBJECT_TYPE",
- 106: "PROTOTYPE_INFO_TYPE",
- 107: "REG_EXP_BOILERPLATE_DESCRIPTION_TYPE",
- 108: "SCRIPT_TYPE",
- 109: "SOURCE_TEXT_MODULE_INFO_ENTRY_TYPE",
- 110: "STACK_FRAME_INFO_TYPE",
- 111: "TEMPLATE_OBJECT_DESCRIPTION_TYPE",
- 112: "TUPLE2_TYPE",
- 113: "WASM_EXCEPTION_TAG_TYPE",
- 114: "WASM_EXPORTED_FUNCTION_DATA_TYPE",
- 115: "WASM_INDIRECT_FUNCTION_TABLE_TYPE",
- 116: "WASM_JS_FUNCTION_DATA_TYPE",
- 117: "FIXED_ARRAY_TYPE",
- 118: "HASH_TABLE_TYPE",
- 119: "EPHEMERON_HASH_TABLE_TYPE",
- 120: "GLOBAL_DICTIONARY_TYPE",
- 121: "NAME_DICTIONARY_TYPE",
- 122: "NUMBER_DICTIONARY_TYPE",
- 123: "ORDERED_HASH_MAP_TYPE",
- 124: "ORDERED_HASH_SET_TYPE",
- 125: "ORDERED_NAME_DICTIONARY_TYPE",
- 126: "SIMPLE_NUMBER_DICTIONARY_TYPE",
- 127: "CLOSURE_FEEDBACK_CELL_ARRAY_TYPE",
- 128: "OBJECT_BOILERPLATE_DESCRIPTION_TYPE",
- 129: "SCRIPT_CONTEXT_TABLE_TYPE",
- 130: "BYTE_ARRAY_TYPE",
- 131: "BYTECODE_ARRAY_TYPE",
- 132: "FIXED_DOUBLE_ARRAY_TYPE",
- 133: "INTERNAL_CLASS_WITH_SMI_ELEMENTS_TYPE",
- 134: "SLOPPY_ARGUMENTS_ELEMENTS_TYPE",
- 135: "AWAIT_CONTEXT_TYPE",
- 136: "BLOCK_CONTEXT_TYPE",
- 137: "CATCH_CONTEXT_TYPE",
- 138: "DEBUG_EVALUATE_CONTEXT_TYPE",
- 139: "EVAL_CONTEXT_TYPE",
- 140: "FUNCTION_CONTEXT_TYPE",
- 141: "MODULE_CONTEXT_TYPE",
- 142: "NATIVE_CONTEXT_TYPE",
- 143: "SCRIPT_CONTEXT_TYPE",
- 144: "WITH_CONTEXT_TYPE",
- 145: "EXPORTED_SUB_CLASS_BASE_TYPE",
- 146: "EXPORTED_SUB_CLASS_TYPE",
- 147: "EXPORTED_SUB_CLASS2_TYPE",
- 148: "SMALL_ORDERED_HASH_MAP_TYPE",
- 149: "SMALL_ORDERED_HASH_SET_TYPE",
- 150: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
- 151: "DESCRIPTOR_ARRAY_TYPE",
- 152: "STRONG_DESCRIPTOR_ARRAY_TYPE",
- 153: "SOURCE_TEXT_MODULE_TYPE",
- 154: "SYNTHETIC_MODULE_TYPE",
- 155: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
- 156: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
- 157: "WEAK_FIXED_ARRAY_TYPE",
- 158: "TRANSITION_ARRAY_TYPE",
- 159: "CELL_TYPE",
- 160: "CODE_TYPE",
- 161: "CODE_DATA_CONTAINER_TYPE",
- 162: "COVERAGE_INFO_TYPE",
- 163: "EMBEDDER_DATA_ARRAY_TYPE",
- 164: "FEEDBACK_METADATA_TYPE",
- 165: "FEEDBACK_VECTOR_TYPE",
- 166: "FILLER_TYPE",
- 167: "FREE_SPACE_TYPE",
- 168: "INTERNAL_CLASS_TYPE",
- 169: "INTERNAL_CLASS_WITH_STRUCT_ELEMENTS_TYPE",
- 170: "MAP_TYPE",
- 171: "ON_HEAP_BASIC_BLOCK_PROFILER_DATA_TYPE",
- 172: "PREPARSE_DATA_TYPE",
- 173: "PROPERTY_ARRAY_TYPE",
- 174: "PROPERTY_CELL_TYPE",
- 175: "SCOPE_INFO_TYPE",
- 176: "SHARED_FUNCTION_INFO_TYPE",
- 177: "SMI_BOX_TYPE",
- 178: "SMI_PAIR_TYPE",
- 179: "SORT_STATE_TYPE",
- 180: "SWISS_NAME_DICTIONARY_TYPE",
- 181: "WASM_ARRAY_TYPE",
- 182: "WASM_CAPI_FUNCTION_DATA_TYPE",
- 183: "WASM_STRUCT_TYPE",
- 184: "WEAK_ARRAY_LIST_TYPE",
- 185: "WEAK_CELL_TYPE",
- 186: "JS_PROXY_TYPE",
+ 71: "WASM_FUNCTION_DATA_TYPE",
+ 72: "WASM_EXPORTED_FUNCTION_DATA_TYPE",
+ 73: "WASM_JS_FUNCTION_DATA_TYPE",
+ 74: "WASM_TYPE_INFO_TYPE",
+ 75: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE",
+ 76: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE",
+ 77: "CALLABLE_TASK_TYPE",
+ 78: "CALLBACK_TASK_TYPE",
+ 79: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE",
+ 80: "LOAD_HANDLER_TYPE",
+ 81: "STORE_HANDLER_TYPE",
+ 82: "FUNCTION_TEMPLATE_INFO_TYPE",
+ 83: "OBJECT_TEMPLATE_INFO_TYPE",
+ 84: "ACCESS_CHECK_INFO_TYPE",
+ 85: "ACCESSOR_INFO_TYPE",
+ 86: "ACCESSOR_PAIR_TYPE",
+ 87: "ALIASED_ARGUMENTS_ENTRY_TYPE",
+ 88: "ALLOCATION_MEMENTO_TYPE",
+ 89: "ALLOCATION_SITE_TYPE",
+ 90: "ARRAY_BOILERPLATE_DESCRIPTION_TYPE",
+ 91: "ASM_WASM_DATA_TYPE",
+ 92: "ASYNC_GENERATOR_REQUEST_TYPE",
+ 93: "BASELINE_DATA_TYPE",
+ 94: "BREAK_POINT_TYPE",
+ 95: "BREAK_POINT_INFO_TYPE",
+ 96: "CACHED_TEMPLATE_OBJECT_TYPE",
+ 97: "CALL_HANDLER_INFO_TYPE",
+ 98: "CLASS_POSITIONS_TYPE",
+ 99: "DEBUG_INFO_TYPE",
+ 100: "ENUM_CACHE_TYPE",
+ 101: "FEEDBACK_CELL_TYPE",
+ 102: "FUNCTION_TEMPLATE_RARE_DATA_TYPE",
+ 103: "INTERCEPTOR_INFO_TYPE",
+ 104: "INTERPRETER_DATA_TYPE",
+ 105: "MODULE_REQUEST_TYPE",
+ 106: "PROMISE_CAPABILITY_TYPE",
+ 107: "PROMISE_REACTION_TYPE",
+ 108: "PROPERTY_DESCRIPTOR_OBJECT_TYPE",
+ 109: "PROTOTYPE_INFO_TYPE",
+ 110: "REG_EXP_BOILERPLATE_DESCRIPTION_TYPE",
+ 111: "SCRIPT_TYPE",
+ 112: "SOURCE_TEXT_MODULE_INFO_ENTRY_TYPE",
+ 113: "STACK_FRAME_INFO_TYPE",
+ 114: "TEMPLATE_OBJECT_DESCRIPTION_TYPE",
+ 115: "TUPLE2_TYPE",
+ 116: "WASM_EXCEPTION_TAG_TYPE",
+ 117: "WASM_INDIRECT_FUNCTION_TABLE_TYPE",
+ 118: "FIXED_ARRAY_TYPE",
+ 119: "HASH_TABLE_TYPE",
+ 120: "EPHEMERON_HASH_TABLE_TYPE",
+ 121: "GLOBAL_DICTIONARY_TYPE",
+ 122: "NAME_DICTIONARY_TYPE",
+ 123: "NUMBER_DICTIONARY_TYPE",
+ 124: "ORDERED_HASH_MAP_TYPE",
+ 125: "ORDERED_HASH_SET_TYPE",
+ 126: "ORDERED_NAME_DICTIONARY_TYPE",
+ 127: "SIMPLE_NUMBER_DICTIONARY_TYPE",
+ 128: "CLOSURE_FEEDBACK_CELL_ARRAY_TYPE",
+ 129: "OBJECT_BOILERPLATE_DESCRIPTION_TYPE",
+ 130: "SCRIPT_CONTEXT_TABLE_TYPE",
+ 131: "BYTE_ARRAY_TYPE",
+ 132: "BYTECODE_ARRAY_TYPE",
+ 133: "FIXED_DOUBLE_ARRAY_TYPE",
+ 134: "INTERNAL_CLASS_WITH_SMI_ELEMENTS_TYPE",
+ 135: "SLOPPY_ARGUMENTS_ELEMENTS_TYPE",
+ 136: "AWAIT_CONTEXT_TYPE",
+ 137: "BLOCK_CONTEXT_TYPE",
+ 138: "CATCH_CONTEXT_TYPE",
+ 139: "DEBUG_EVALUATE_CONTEXT_TYPE",
+ 140: "EVAL_CONTEXT_TYPE",
+ 141: "FUNCTION_CONTEXT_TYPE",
+ 142: "MODULE_CONTEXT_TYPE",
+ 143: "NATIVE_CONTEXT_TYPE",
+ 144: "SCRIPT_CONTEXT_TYPE",
+ 145: "WITH_CONTEXT_TYPE",
+ 146: "EXPORTED_SUB_CLASS_BASE_TYPE",
+ 147: "EXPORTED_SUB_CLASS_TYPE",
+ 148: "EXPORTED_SUB_CLASS2_TYPE",
+ 149: "SMALL_ORDERED_HASH_MAP_TYPE",
+ 150: "SMALL_ORDERED_HASH_SET_TYPE",
+ 151: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
+ 152: "DESCRIPTOR_ARRAY_TYPE",
+ 153: "STRONG_DESCRIPTOR_ARRAY_TYPE",
+ 154: "SOURCE_TEXT_MODULE_TYPE",
+ 155: "SYNTHETIC_MODULE_TYPE",
+ 156: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
+ 157: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
+ 158: "WEAK_FIXED_ARRAY_TYPE",
+ 159: "TRANSITION_ARRAY_TYPE",
+ 160: "CELL_TYPE",
+ 161: "CODE_TYPE",
+ 162: "CODE_DATA_CONTAINER_TYPE",
+ 163: "COVERAGE_INFO_TYPE",
+ 164: "EMBEDDER_DATA_ARRAY_TYPE",
+ 165: "FEEDBACK_METADATA_TYPE",
+ 166: "FEEDBACK_VECTOR_TYPE",
+ 167: "FILLER_TYPE",
+ 168: "FREE_SPACE_TYPE",
+ 169: "INTERNAL_CLASS_TYPE",
+ 170: "INTERNAL_CLASS_WITH_STRUCT_ELEMENTS_TYPE",
+ 171: "MAP_TYPE",
+ 172: "MEGA_DOM_HANDLER_TYPE",
+ 173: "ON_HEAP_BASIC_BLOCK_PROFILER_DATA_TYPE",
+ 174: "PREPARSE_DATA_TYPE",
+ 175: "PROPERTY_ARRAY_TYPE",
+ 176: "PROPERTY_CELL_TYPE",
+ 177: "SCOPE_INFO_TYPE",
+ 178: "SHARED_FUNCTION_INFO_TYPE",
+ 179: "SMI_BOX_TYPE",
+ 180: "SMI_PAIR_TYPE",
+ 181: "SORT_STATE_TYPE",
+ 182: "SWISS_NAME_DICTIONARY_TYPE",
+ 183: "WASM_ARRAY_TYPE",
+ 184: "WASM_CAPI_FUNCTION_DATA_TYPE",
+ 185: "WASM_STRUCT_TYPE",
+ 186: "WEAK_ARRAY_LIST_TYPE",
+ 187: "WEAK_CELL_TYPE",
+ 188: "JS_PROXY_TYPE",
1057: "JS_OBJECT_TYPE",
- 187: "JS_GLOBAL_OBJECT_TYPE",
- 188: "JS_GLOBAL_PROXY_TYPE",
- 189: "JS_MODULE_NAMESPACE_TYPE",
+ 189: "JS_GLOBAL_OBJECT_TYPE",
+ 190: "JS_GLOBAL_PROXY_TYPE",
+ 191: "JS_MODULE_NAMESPACE_TYPE",
1040: "JS_SPECIAL_API_OBJECT_TYPE",
1041: "JS_PRIMITIVE_WRAPPER_TYPE",
1042: "JS_ARRAY_ITERATOR_PROTOTYPE_TYPE",
@@ -233,159 +235,160 @@ INSTANCE_TYPES = {
# List of known V8 maps.
KNOWN_MAPS = {
- ("read_only_space", 0x02119): (170, "MetaMap"),
+ ("read_only_space", 0x02119): (171, "MetaMap"),
("read_only_space", 0x02141): (67, "NullMap"),
- ("read_only_space", 0x02169): (152, "StrongDescriptorArrayMap"),
- ("read_only_space", 0x02191): (157, "WeakFixedArrayMap"),
- ("read_only_space", 0x021d1): (97, "EnumCacheMap"),
- ("read_only_space", 0x02205): (117, "FixedArrayMap"),
+ ("read_only_space", 0x02169): (153, "StrongDescriptorArrayMap"),
+ ("read_only_space", 0x02191): (158, "WeakFixedArrayMap"),
+ ("read_only_space", 0x021d1): (100, "EnumCacheMap"),
+ ("read_only_space", 0x02205): (118, "FixedArrayMap"),
("read_only_space", 0x02251): (8, "OneByteInternalizedStringMap"),
- ("read_only_space", 0x0229d): (167, "FreeSpaceMap"),
- ("read_only_space", 0x022c5): (166, "OnePointerFillerMap"),
- ("read_only_space", 0x022ed): (166, "TwoPointerFillerMap"),
+ ("read_only_space", 0x0229d): (168, "FreeSpaceMap"),
+ ("read_only_space", 0x022c5): (167, "OnePointerFillerMap"),
+ ("read_only_space", 0x022ed): (167, "TwoPointerFillerMap"),
("read_only_space", 0x02315): (67, "UninitializedMap"),
("read_only_space", 0x0238d): (67, "UndefinedMap"),
("read_only_space", 0x023d1): (66, "HeapNumberMap"),
("read_only_space", 0x02405): (67, "TheHoleMap"),
("read_only_space", 0x02465): (67, "BooleanMap"),
- ("read_only_space", 0x02509): (130, "ByteArrayMap"),
- ("read_only_space", 0x02531): (117, "FixedCOWArrayMap"),
- ("read_only_space", 0x02559): (118, "HashTableMap"),
+ ("read_only_space", 0x02509): (131, "ByteArrayMap"),
+ ("read_only_space", 0x02531): (118, "FixedCOWArrayMap"),
+ ("read_only_space", 0x02559): (119, "HashTableMap"),
("read_only_space", 0x02581): (64, "SymbolMap"),
("read_only_space", 0x025a9): (40, "OneByteStringMap"),
- ("read_only_space", 0x025d1): (175, "ScopeInfoMap"),
- ("read_only_space", 0x025f9): (176, "SharedFunctionInfoMap"),
- ("read_only_space", 0x02621): (160, "CodeMap"),
- ("read_only_space", 0x02649): (159, "CellMap"),
- ("read_only_space", 0x02671): (174, "GlobalPropertyCellMap"),
+ ("read_only_space", 0x025d1): (177, "ScopeInfoMap"),
+ ("read_only_space", 0x025f9): (178, "SharedFunctionInfoMap"),
+ ("read_only_space", 0x02621): (161, "CodeMap"),
+ ("read_only_space", 0x02649): (160, "CellMap"),
+ ("read_only_space", 0x02671): (176, "GlobalPropertyCellMap"),
("read_only_space", 0x02699): (70, "ForeignMap"),
- ("read_only_space", 0x026c1): (158, "TransitionArrayMap"),
+ ("read_only_space", 0x026c1): (159, "TransitionArrayMap"),
("read_only_space", 0x026e9): (45, "ThinOneByteStringMap"),
- ("read_only_space", 0x02711): (165, "FeedbackVectorMap"),
+ ("read_only_space", 0x02711): (166, "FeedbackVectorMap"),
("read_only_space", 0x02749): (67, "ArgumentsMarkerMap"),
("read_only_space", 0x027a9): (67, "ExceptionMap"),
("read_only_space", 0x02805): (67, "TerminationExceptionMap"),
("read_only_space", 0x0286d): (67, "OptimizedOutMap"),
("read_only_space", 0x028cd): (67, "StaleRegisterMap"),
- ("read_only_space", 0x0292d): (129, "ScriptContextTableMap"),
- ("read_only_space", 0x02955): (127, "ClosureFeedbackCellArrayMap"),
- ("read_only_space", 0x0297d): (164, "FeedbackMetadataArrayMap"),
- ("read_only_space", 0x029a5): (117, "ArrayListMap"),
+ ("read_only_space", 0x0292d): (130, "ScriptContextTableMap"),
+ ("read_only_space", 0x02955): (128, "ClosureFeedbackCellArrayMap"),
+ ("read_only_space", 0x0297d): (165, "FeedbackMetadataArrayMap"),
+ ("read_only_space", 0x029a5): (118, "ArrayListMap"),
("read_only_space", 0x029cd): (65, "BigIntMap"),
- ("read_only_space", 0x029f5): (128, "ObjectBoilerplateDescriptionMap"),
- ("read_only_space", 0x02a1d): (131, "BytecodeArrayMap"),
- ("read_only_space", 0x02a45): (161, "CodeDataContainerMap"),
- ("read_only_space", 0x02a6d): (162, "CoverageInfoMap"),
- ("read_only_space", 0x02a95): (132, "FixedDoubleArrayMap"),
- ("read_only_space", 0x02abd): (120, "GlobalDictionaryMap"),
- ("read_only_space", 0x02ae5): (98, "ManyClosuresCellMap"),
- ("read_only_space", 0x02b0d): (117, "ModuleInfoMap"),
- ("read_only_space", 0x02b35): (121, "NameDictionaryMap"),
- ("read_only_space", 0x02b5d): (98, "NoClosuresCellMap"),
- ("read_only_space", 0x02b85): (122, "NumberDictionaryMap"),
- ("read_only_space", 0x02bad): (98, "OneClosureCellMap"),
- ("read_only_space", 0x02bd5): (123, "OrderedHashMapMap"),
- ("read_only_space", 0x02bfd): (124, "OrderedHashSetMap"),
- ("read_only_space", 0x02c25): (125, "OrderedNameDictionaryMap"),
- ("read_only_space", 0x02c4d): (172, "PreparseDataMap"),
- ("read_only_space", 0x02c75): (173, "PropertyArrayMap"),
- ("read_only_space", 0x02c9d): (94, "SideEffectCallHandlerInfoMap"),
- ("read_only_space", 0x02cc5): (94, "SideEffectFreeCallHandlerInfoMap"),
- ("read_only_space", 0x02ced): (94, "NextCallSideEffectFreeCallHandlerInfoMap"),
- ("read_only_space", 0x02d15): (126, "SimpleNumberDictionaryMap"),
- ("read_only_space", 0x02d3d): (148, "SmallOrderedHashMapMap"),
- ("read_only_space", 0x02d65): (149, "SmallOrderedHashSetMap"),
- ("read_only_space", 0x02d8d): (150, "SmallOrderedNameDictionaryMap"),
- ("read_only_space", 0x02db5): (153, "SourceTextModuleMap"),
- ("read_only_space", 0x02ddd): (180, "SwissNameDictionaryMap"),
- ("read_only_space", 0x02e05): (154, "SyntheticModuleMap"),
- ("read_only_space", 0x02e2d): (71, "WasmTypeInfoMap"),
- ("read_only_space", 0x02e55): (184, "WeakArrayListMap"),
- ("read_only_space", 0x02e7d): (119, "EphemeronHashTableMap"),
- ("read_only_space", 0x02ea5): (163, "EmbedderDataArrayMap"),
- ("read_only_space", 0x02ecd): (185, "WeakCellMap"),
- ("read_only_space", 0x02ef5): (32, "StringMap"),
- ("read_only_space", 0x02f1d): (41, "ConsOneByteStringMap"),
- ("read_only_space", 0x02f45): (33, "ConsStringMap"),
- ("read_only_space", 0x02f6d): (37, "ThinStringMap"),
- ("read_only_space", 0x02f95): (35, "SlicedStringMap"),
- ("read_only_space", 0x02fbd): (43, "SlicedOneByteStringMap"),
- ("read_only_space", 0x02fe5): (34, "ExternalStringMap"),
- ("read_only_space", 0x0300d): (42, "ExternalOneByteStringMap"),
- ("read_only_space", 0x03035): (50, "UncachedExternalStringMap"),
- ("read_only_space", 0x0305d): (0, "InternalizedStringMap"),
- ("read_only_space", 0x03085): (2, "ExternalInternalizedStringMap"),
- ("read_only_space", 0x030ad): (10, "ExternalOneByteInternalizedStringMap"),
- ("read_only_space", 0x030d5): (18, "UncachedExternalInternalizedStringMap"),
- ("read_only_space", 0x030fd): (26, "UncachedExternalOneByteInternalizedStringMap"),
- ("read_only_space", 0x03125): (58, "UncachedExternalOneByteStringMap"),
- ("read_only_space", 0x0314d): (67, "SelfReferenceMarkerMap"),
- ("read_only_space", 0x03175): (67, "BasicBlockCountersMarkerMap"),
- ("read_only_space", 0x031b9): (87, "ArrayBoilerplateDescriptionMap"),
- ("read_only_space", 0x032b9): (100, "InterceptorInfoMap"),
- ("read_only_space", 0x05401): (72, "PromiseFulfillReactionJobTaskMap"),
- ("read_only_space", 0x05429): (73, "PromiseRejectReactionJobTaskMap"),
- ("read_only_space", 0x05451): (74, "CallableTaskMap"),
- ("read_only_space", 0x05479): (75, "CallbackTaskMap"),
- ("read_only_space", 0x054a1): (76, "PromiseResolveThenableJobTaskMap"),
- ("read_only_space", 0x054c9): (79, "FunctionTemplateInfoMap"),
- ("read_only_space", 0x054f1): (80, "ObjectTemplateInfoMap"),
- ("read_only_space", 0x05519): (81, "AccessCheckInfoMap"),
- ("read_only_space", 0x05541): (82, "AccessorInfoMap"),
- ("read_only_space", 0x05569): (83, "AccessorPairMap"),
- ("read_only_space", 0x05591): (84, "AliasedArgumentsEntryMap"),
- ("read_only_space", 0x055b9): (85, "AllocationMementoMap"),
- ("read_only_space", 0x055e1): (88, "AsmWasmDataMap"),
- ("read_only_space", 0x05609): (89, "AsyncGeneratorRequestMap"),
- ("read_only_space", 0x05631): (90, "BaselineDataMap"),
- ("read_only_space", 0x05659): (91, "BreakPointMap"),
- ("read_only_space", 0x05681): (92, "BreakPointInfoMap"),
- ("read_only_space", 0x056a9): (93, "CachedTemplateObjectMap"),
- ("read_only_space", 0x056d1): (95, "ClassPositionsMap"),
- ("read_only_space", 0x056f9): (96, "DebugInfoMap"),
- ("read_only_space", 0x05721): (99, "FunctionTemplateRareDataMap"),
- ("read_only_space", 0x05749): (101, "InterpreterDataMap"),
- ("read_only_space", 0x05771): (102, "ModuleRequestMap"),
- ("read_only_space", 0x05799): (103, "PromiseCapabilityMap"),
- ("read_only_space", 0x057c1): (104, "PromiseReactionMap"),
- ("read_only_space", 0x057e9): (105, "PropertyDescriptorObjectMap"),
- ("read_only_space", 0x05811): (106, "PrototypeInfoMap"),
- ("read_only_space", 0x05839): (107, "RegExpBoilerplateDescriptionMap"),
- ("read_only_space", 0x05861): (108, "ScriptMap"),
- ("read_only_space", 0x05889): (109, "SourceTextModuleInfoEntryMap"),
- ("read_only_space", 0x058b1): (110, "StackFrameInfoMap"),
- ("read_only_space", 0x058d9): (111, "TemplateObjectDescriptionMap"),
- ("read_only_space", 0x05901): (112, "Tuple2Map"),
- ("read_only_space", 0x05929): (113, "WasmExceptionTagMap"),
- ("read_only_space", 0x05951): (114, "WasmExportedFunctionDataMap"),
- ("read_only_space", 0x05979): (115, "WasmIndirectFunctionTableMap"),
- ("read_only_space", 0x059a1): (116, "WasmJSFunctionDataMap"),
- ("read_only_space", 0x059c9): (134, "SloppyArgumentsElementsMap"),
- ("read_only_space", 0x059f1): (151, "DescriptorArrayMap"),
- ("read_only_space", 0x05a19): (156, "UncompiledDataWithoutPreparseDataMap"),
- ("read_only_space", 0x05a41): (155, "UncompiledDataWithPreparseDataMap"),
- ("read_only_space", 0x05a69): (171, "OnHeapBasicBlockProfilerDataMap"),
- ("read_only_space", 0x05a91): (168, "InternalClassMap"),
- ("read_only_space", 0x05ab9): (178, "SmiPairMap"),
- ("read_only_space", 0x05ae1): (177, "SmiBoxMap"),
- ("read_only_space", 0x05b09): (145, "ExportedSubClassBaseMap"),
- ("read_only_space", 0x05b31): (146, "ExportedSubClassMap"),
- ("read_only_space", 0x05b59): (68, "AbstractInternalClassSubclass1Map"),
- ("read_only_space", 0x05b81): (69, "AbstractInternalClassSubclass2Map"),
- ("read_only_space", 0x05ba9): (133, "InternalClassWithSmiElementsMap"),
- ("read_only_space", 0x05bd1): (169, "InternalClassWithStructElementsMap"),
- ("read_only_space", 0x05bf9): (147, "ExportedSubClass2Map"),
- ("read_only_space", 0x05c21): (179, "SortStateMap"),
- ("read_only_space", 0x05c49): (182, "WasmCapiFunctionDataMap"),
- ("read_only_space", 0x05c71): (86, "AllocationSiteWithWeakNextMap"),
- ("read_only_space", 0x05c99): (86, "AllocationSiteWithoutWeakNextMap"),
- ("read_only_space", 0x05cc1): (77, "LoadHandler1Map"),
- ("read_only_space", 0x05ce9): (77, "LoadHandler2Map"),
- ("read_only_space", 0x05d11): (77, "LoadHandler3Map"),
- ("read_only_space", 0x05d39): (78, "StoreHandler0Map"),
- ("read_only_space", 0x05d61): (78, "StoreHandler1Map"),
- ("read_only_space", 0x05d89): (78, "StoreHandler2Map"),
- ("read_only_space", 0x05db1): (78, "StoreHandler3Map"),
+ ("read_only_space", 0x029f5): (129, "ObjectBoilerplateDescriptionMap"),
+ ("read_only_space", 0x02a1d): (132, "BytecodeArrayMap"),
+ ("read_only_space", 0x02a45): (162, "CodeDataContainerMap"),
+ ("read_only_space", 0x02a6d): (163, "CoverageInfoMap"),
+ ("read_only_space", 0x02a95): (133, "FixedDoubleArrayMap"),
+ ("read_only_space", 0x02abd): (121, "GlobalDictionaryMap"),
+ ("read_only_space", 0x02ae5): (101, "ManyClosuresCellMap"),
+ ("read_only_space", 0x02b0d): (172, "MegaDomHandlerMap"),
+ ("read_only_space", 0x02b35): (118, "ModuleInfoMap"),
+ ("read_only_space", 0x02b5d): (122, "NameDictionaryMap"),
+ ("read_only_space", 0x02b85): (101, "NoClosuresCellMap"),
+ ("read_only_space", 0x02bad): (123, "NumberDictionaryMap"),
+ ("read_only_space", 0x02bd5): (101, "OneClosureCellMap"),
+ ("read_only_space", 0x02bfd): (124, "OrderedHashMapMap"),
+ ("read_only_space", 0x02c25): (125, "OrderedHashSetMap"),
+ ("read_only_space", 0x02c4d): (126, "OrderedNameDictionaryMap"),
+ ("read_only_space", 0x02c75): (174, "PreparseDataMap"),
+ ("read_only_space", 0x02c9d): (175, "PropertyArrayMap"),
+ ("read_only_space", 0x02cc5): (97, "SideEffectCallHandlerInfoMap"),
+ ("read_only_space", 0x02ced): (97, "SideEffectFreeCallHandlerInfoMap"),
+ ("read_only_space", 0x02d15): (97, "NextCallSideEffectFreeCallHandlerInfoMap"),
+ ("read_only_space", 0x02d3d): (127, "SimpleNumberDictionaryMap"),
+ ("read_only_space", 0x02d65): (149, "SmallOrderedHashMapMap"),
+ ("read_only_space", 0x02d8d): (150, "SmallOrderedHashSetMap"),
+ ("read_only_space", 0x02db5): (151, "SmallOrderedNameDictionaryMap"),
+ ("read_only_space", 0x02ddd): (154, "SourceTextModuleMap"),
+ ("read_only_space", 0x02e05): (182, "SwissNameDictionaryMap"),
+ ("read_only_space", 0x02e2d): (155, "SyntheticModuleMap"),
+ ("read_only_space", 0x02e55): (72, "WasmExportedFunctionDataMap"),
+ ("read_only_space", 0x02e7d): (73, "WasmJSFunctionDataMap"),
+ ("read_only_space", 0x02ea5): (74, "WasmTypeInfoMap"),
+ ("read_only_space", 0x02ecd): (186, "WeakArrayListMap"),
+ ("read_only_space", 0x02ef5): (120, "EphemeronHashTableMap"),
+ ("read_only_space", 0x02f1d): (164, "EmbedderDataArrayMap"),
+ ("read_only_space", 0x02f45): (187, "WeakCellMap"),
+ ("read_only_space", 0x02f6d): (32, "StringMap"),
+ ("read_only_space", 0x02f95): (41, "ConsOneByteStringMap"),
+ ("read_only_space", 0x02fbd): (33, "ConsStringMap"),
+ ("read_only_space", 0x02fe5): (37, "ThinStringMap"),
+ ("read_only_space", 0x0300d): (35, "SlicedStringMap"),
+ ("read_only_space", 0x03035): (43, "SlicedOneByteStringMap"),
+ ("read_only_space", 0x0305d): (34, "ExternalStringMap"),
+ ("read_only_space", 0x03085): (42, "ExternalOneByteStringMap"),
+ ("read_only_space", 0x030ad): (50, "UncachedExternalStringMap"),
+ ("read_only_space", 0x030d5): (0, "InternalizedStringMap"),
+ ("read_only_space", 0x030fd): (2, "ExternalInternalizedStringMap"),
+ ("read_only_space", 0x03125): (10, "ExternalOneByteInternalizedStringMap"),
+ ("read_only_space", 0x0314d): (18, "UncachedExternalInternalizedStringMap"),
+ ("read_only_space", 0x03175): (26, "UncachedExternalOneByteInternalizedStringMap"),
+ ("read_only_space", 0x0319d): (58, "UncachedExternalOneByteStringMap"),
+ ("read_only_space", 0x031c5): (67, "SelfReferenceMarkerMap"),
+ ("read_only_space", 0x031ed): (67, "BasicBlockCountersMarkerMap"),
+ ("read_only_space", 0x03231): (90, "ArrayBoilerplateDescriptionMap"),
+ ("read_only_space", 0x03331): (103, "InterceptorInfoMap"),
+ ("read_only_space", 0x05639): (75, "PromiseFulfillReactionJobTaskMap"),
+ ("read_only_space", 0x05661): (76, "PromiseRejectReactionJobTaskMap"),
+ ("read_only_space", 0x05689): (77, "CallableTaskMap"),
+ ("read_only_space", 0x056b1): (78, "CallbackTaskMap"),
+ ("read_only_space", 0x056d9): (79, "PromiseResolveThenableJobTaskMap"),
+ ("read_only_space", 0x05701): (82, "FunctionTemplateInfoMap"),
+ ("read_only_space", 0x05729): (83, "ObjectTemplateInfoMap"),
+ ("read_only_space", 0x05751): (84, "AccessCheckInfoMap"),
+ ("read_only_space", 0x05779): (85, "AccessorInfoMap"),
+ ("read_only_space", 0x057a1): (86, "AccessorPairMap"),
+ ("read_only_space", 0x057c9): (87, "AliasedArgumentsEntryMap"),
+ ("read_only_space", 0x057f1): (88, "AllocationMementoMap"),
+ ("read_only_space", 0x05819): (91, "AsmWasmDataMap"),
+ ("read_only_space", 0x05841): (92, "AsyncGeneratorRequestMap"),
+ ("read_only_space", 0x05869): (93, "BaselineDataMap"),
+ ("read_only_space", 0x05891): (94, "BreakPointMap"),
+ ("read_only_space", 0x058b9): (95, "BreakPointInfoMap"),
+ ("read_only_space", 0x058e1): (96, "CachedTemplateObjectMap"),
+ ("read_only_space", 0x05909): (98, "ClassPositionsMap"),
+ ("read_only_space", 0x05931): (99, "DebugInfoMap"),
+ ("read_only_space", 0x05959): (102, "FunctionTemplateRareDataMap"),
+ ("read_only_space", 0x05981): (104, "InterpreterDataMap"),
+ ("read_only_space", 0x059a9): (105, "ModuleRequestMap"),
+ ("read_only_space", 0x059d1): (106, "PromiseCapabilityMap"),
+ ("read_only_space", 0x059f9): (107, "PromiseReactionMap"),
+ ("read_only_space", 0x05a21): (108, "PropertyDescriptorObjectMap"),
+ ("read_only_space", 0x05a49): (109, "PrototypeInfoMap"),
+ ("read_only_space", 0x05a71): (110, "RegExpBoilerplateDescriptionMap"),
+ ("read_only_space", 0x05a99): (111, "ScriptMap"),
+ ("read_only_space", 0x05ac1): (112, "SourceTextModuleInfoEntryMap"),
+ ("read_only_space", 0x05ae9): (113, "StackFrameInfoMap"),
+ ("read_only_space", 0x05b11): (114, "TemplateObjectDescriptionMap"),
+ ("read_only_space", 0x05b39): (115, "Tuple2Map"),
+ ("read_only_space", 0x05b61): (116, "WasmExceptionTagMap"),
+ ("read_only_space", 0x05b89): (117, "WasmIndirectFunctionTableMap"),
+ ("read_only_space", 0x05bb1): (135, "SloppyArgumentsElementsMap"),
+ ("read_only_space", 0x05bd9): (152, "DescriptorArrayMap"),
+ ("read_only_space", 0x05c01): (157, "UncompiledDataWithoutPreparseDataMap"),
+ ("read_only_space", 0x05c29): (156, "UncompiledDataWithPreparseDataMap"),
+ ("read_only_space", 0x05c51): (173, "OnHeapBasicBlockProfilerDataMap"),
+ ("read_only_space", 0x05c79): (169, "InternalClassMap"),
+ ("read_only_space", 0x05ca1): (180, "SmiPairMap"),
+ ("read_only_space", 0x05cc9): (179, "SmiBoxMap"),
+ ("read_only_space", 0x05cf1): (146, "ExportedSubClassBaseMap"),
+ ("read_only_space", 0x05d19): (147, "ExportedSubClassMap"),
+ ("read_only_space", 0x05d41): (68, "AbstractInternalClassSubclass1Map"),
+ ("read_only_space", 0x05d69): (69, "AbstractInternalClassSubclass2Map"),
+ ("read_only_space", 0x05d91): (134, "InternalClassWithSmiElementsMap"),
+ ("read_only_space", 0x05db9): (170, "InternalClassWithStructElementsMap"),
+ ("read_only_space", 0x05de1): (148, "ExportedSubClass2Map"),
+ ("read_only_space", 0x05e09): (181, "SortStateMap"),
+ ("read_only_space", 0x05e31): (184, "WasmCapiFunctionDataMap"),
+ ("read_only_space", 0x05e59): (89, "AllocationSiteWithWeakNextMap"),
+ ("read_only_space", 0x05e81): (89, "AllocationSiteWithoutWeakNextMap"),
+ ("read_only_space", 0x05ea9): (80, "LoadHandler1Map"),
+ ("read_only_space", 0x05ed1): (80, "LoadHandler2Map"),
+ ("read_only_space", 0x05ef9): (80, "LoadHandler3Map"),
+ ("read_only_space", 0x05f21): (81, "StoreHandler0Map"),
+ ("read_only_space", 0x05f49): (81, "StoreHandler1Map"),
+ ("read_only_space", 0x05f71): (81, "StoreHandler2Map"),
+ ("read_only_space", 0x05f99): (81, "StoreHandler3Map"),
("map_space", 0x02119): (1057, "ExternalMap"),
("map_space", 0x02141): (1098, "JSMessageObjectMap"),
}
@@ -411,32 +414,32 @@ KNOWN_OBJECTS = {
("read_only_space", 0x0282d): "TerminationException",
("read_only_space", 0x02895): "OptimizedOut",
("read_only_space", 0x028f5): "StaleRegister",
- ("read_only_space", 0x0319d): "EmptyPropertyArray",
- ("read_only_space", 0x031a5): "EmptyByteArray",
- ("read_only_space", 0x031ad): "EmptyObjectBoilerplateDescription",
- ("read_only_space", 0x031e1): "EmptyArrayBoilerplateDescription",
- ("read_only_space", 0x031ed): "EmptyClosureFeedbackCellArray",
- ("read_only_space", 0x031f5): "EmptySlowElementDictionary",
- ("read_only_space", 0x03219): "EmptyOrderedHashMap",
- ("read_only_space", 0x0322d): "EmptyOrderedHashSet",
- ("read_only_space", 0x03241): "EmptyFeedbackMetadata",
- ("read_only_space", 0x0324d): "EmptyPropertyDictionary",
- ("read_only_space", 0x03275): "EmptyOrderedPropertyDictionary",
- ("read_only_space", 0x0328d): "EmptySwissPropertyDictionary",
- ("read_only_space", 0x032e1): "NoOpInterceptorInfo",
- ("read_only_space", 0x03309): "EmptyWeakArrayList",
- ("read_only_space", 0x03315): "InfinityValue",
- ("read_only_space", 0x03321): "MinusZeroValue",
- ("read_only_space", 0x0332d): "MinusInfinityValue",
- ("read_only_space", 0x03339): "SelfReferenceMarker",
- ("read_only_space", 0x03379): "BasicBlockCountersMarker",
- ("read_only_space", 0x033bd): "OffHeapTrampolineRelocationInfo",
- ("read_only_space", 0x033c9): "TrampolineTrivialCodeDataContainer",
- ("read_only_space", 0x033d5): "TrampolinePromiseRejectionCodeDataContainer",
- ("read_only_space", 0x033e1): "GlobalThisBindingScopeInfo",
- ("read_only_space", 0x03415): "EmptyFunctionScopeInfo",
- ("read_only_space", 0x03439): "NativeScopeInfo",
- ("read_only_space", 0x03451): "HashSeed",
+ ("read_only_space", 0x03215): "EmptyPropertyArray",
+ ("read_only_space", 0x0321d): "EmptyByteArray",
+ ("read_only_space", 0x03225): "EmptyObjectBoilerplateDescription",
+ ("read_only_space", 0x03259): "EmptyArrayBoilerplateDescription",
+ ("read_only_space", 0x03265): "EmptyClosureFeedbackCellArray",
+ ("read_only_space", 0x0326d): "EmptySlowElementDictionary",
+ ("read_only_space", 0x03291): "EmptyOrderedHashMap",
+ ("read_only_space", 0x032a5): "EmptyOrderedHashSet",
+ ("read_only_space", 0x032b9): "EmptyFeedbackMetadata",
+ ("read_only_space", 0x032c5): "EmptyPropertyDictionary",
+ ("read_only_space", 0x032ed): "EmptyOrderedPropertyDictionary",
+ ("read_only_space", 0x03305): "EmptySwissPropertyDictionary",
+ ("read_only_space", 0x03359): "NoOpInterceptorInfo",
+ ("read_only_space", 0x03381): "EmptyWeakArrayList",
+ ("read_only_space", 0x0338d): "InfinityValue",
+ ("read_only_space", 0x03399): "MinusZeroValue",
+ ("read_only_space", 0x033a5): "MinusInfinityValue",
+ ("read_only_space", 0x033b1): "SelfReferenceMarker",
+ ("read_only_space", 0x033f1): "BasicBlockCountersMarker",
+ ("read_only_space", 0x03435): "OffHeapTrampolineRelocationInfo",
+ ("read_only_space", 0x03441): "TrampolineTrivialCodeDataContainer",
+ ("read_only_space", 0x0344d): "TrampolinePromiseRejectionCodeDataContainer",
+ ("read_only_space", 0x03459): "GlobalThisBindingScopeInfo",
+ ("read_only_space", 0x0348d): "EmptyFunctionScopeInfo",
+ ("read_only_space", 0x034b1): "NativeScopeInfo",
+ ("read_only_space", 0x034c9): "HashSeed",
("old_space", 0x02119): "ArgumentsIteratorAccessor",
("old_space", 0x0215d): "ArrayLengthAccessor",
("old_space", 0x021a1): "BoundFunctionLengthAccessor",
@@ -453,52 +456,53 @@ KNOWN_OBJECTS = {
("old_space", 0x0244d): "ManyClosuresCell",
("old_space", 0x02459): "ArrayConstructorProtector",
("old_space", 0x0246d): "NoElementsProtector",
- ("old_space", 0x02481): "IsConcatSpreadableProtector",
- ("old_space", 0x02495): "ArraySpeciesProtector",
- ("old_space", 0x024a9): "TypedArraySpeciesProtector",
- ("old_space", 0x024bd): "PromiseSpeciesProtector",
- ("old_space", 0x024d1): "RegExpSpeciesProtector",
- ("old_space", 0x024e5): "StringLengthProtector",
- ("old_space", 0x024f9): "ArrayIteratorProtector",
- ("old_space", 0x0250d): "ArrayBufferDetachingProtector",
- ("old_space", 0x02521): "PromiseHookProtector",
- ("old_space", 0x02535): "PromiseResolveProtector",
- ("old_space", 0x02549): "MapIteratorProtector",
- ("old_space", 0x0255d): "PromiseThenProtector",
- ("old_space", 0x02571): "SetIteratorProtector",
- ("old_space", 0x02585): "StringIteratorProtector",
- ("old_space", 0x02599): "SingleCharacterStringCache",
- ("old_space", 0x029a1): "StringSplitCache",
- ("old_space", 0x02da9): "RegExpMultipleCache",
- ("old_space", 0x031b1): "BuiltinsConstantsTable",
- ("old_space", 0x035b1): "AsyncFunctionAwaitRejectSharedFun",
- ("old_space", 0x035d5): "AsyncFunctionAwaitResolveSharedFun",
- ("old_space", 0x035f9): "AsyncGeneratorAwaitRejectSharedFun",
- ("old_space", 0x0361d): "AsyncGeneratorAwaitResolveSharedFun",
- ("old_space", 0x03641): "AsyncGeneratorYieldResolveSharedFun",
- ("old_space", 0x03665): "AsyncGeneratorReturnResolveSharedFun",
- ("old_space", 0x03689): "AsyncGeneratorReturnClosedRejectSharedFun",
- ("old_space", 0x036ad): "AsyncGeneratorReturnClosedResolveSharedFun",
- ("old_space", 0x036d1): "AsyncIteratorValueUnwrapSharedFun",
- ("old_space", 0x036f5): "PromiseAllResolveElementSharedFun",
- ("old_space", 0x03719): "PromiseAllSettledResolveElementSharedFun",
- ("old_space", 0x0373d): "PromiseAllSettledRejectElementSharedFun",
- ("old_space", 0x03761): "PromiseAnyRejectElementSharedFun",
- ("old_space", 0x03785): "PromiseCapabilityDefaultRejectSharedFun",
- ("old_space", 0x037a9): "PromiseCapabilityDefaultResolveSharedFun",
- ("old_space", 0x037cd): "PromiseCatchFinallySharedFun",
- ("old_space", 0x037f1): "PromiseGetCapabilitiesExecutorSharedFun",
- ("old_space", 0x03815): "PromiseThenFinallySharedFun",
- ("old_space", 0x03839): "PromiseThrowerFinallySharedFun",
- ("old_space", 0x0385d): "PromiseValueThunkFinallySharedFun",
- ("old_space", 0x03881): "ProxyRevokeSharedFun",
+ ("old_space", 0x02481): "MegaDOMProtector",
+ ("old_space", 0x02495): "IsConcatSpreadableProtector",
+ ("old_space", 0x024a9): "ArraySpeciesProtector",
+ ("old_space", 0x024bd): "TypedArraySpeciesProtector",
+ ("old_space", 0x024d1): "PromiseSpeciesProtector",
+ ("old_space", 0x024e5): "RegExpSpeciesProtector",
+ ("old_space", 0x024f9): "StringLengthProtector",
+ ("old_space", 0x0250d): "ArrayIteratorProtector",
+ ("old_space", 0x02521): "ArrayBufferDetachingProtector",
+ ("old_space", 0x02535): "PromiseHookProtector",
+ ("old_space", 0x02549): "PromiseResolveProtector",
+ ("old_space", 0x0255d): "MapIteratorProtector",
+ ("old_space", 0x02571): "PromiseThenProtector",
+ ("old_space", 0x02585): "SetIteratorProtector",
+ ("old_space", 0x02599): "StringIteratorProtector",
+ ("old_space", 0x025ad): "SingleCharacterStringCache",
+ ("old_space", 0x029b5): "StringSplitCache",
+ ("old_space", 0x02dbd): "RegExpMultipleCache",
+ ("old_space", 0x031c5): "BuiltinsConstantsTable",
+ ("old_space", 0x035d1): "AsyncFunctionAwaitRejectSharedFun",
+ ("old_space", 0x035f5): "AsyncFunctionAwaitResolveSharedFun",
+ ("old_space", 0x03619): "AsyncGeneratorAwaitRejectSharedFun",
+ ("old_space", 0x0363d): "AsyncGeneratorAwaitResolveSharedFun",
+ ("old_space", 0x03661): "AsyncGeneratorYieldResolveSharedFun",
+ ("old_space", 0x03685): "AsyncGeneratorReturnResolveSharedFun",
+ ("old_space", 0x036a9): "AsyncGeneratorReturnClosedRejectSharedFun",
+ ("old_space", 0x036cd): "AsyncGeneratorReturnClosedResolveSharedFun",
+ ("old_space", 0x036f1): "AsyncIteratorValueUnwrapSharedFun",
+ ("old_space", 0x03715): "PromiseAllResolveElementSharedFun",
+ ("old_space", 0x03739): "PromiseAllSettledResolveElementSharedFun",
+ ("old_space", 0x0375d): "PromiseAllSettledRejectElementSharedFun",
+ ("old_space", 0x03781): "PromiseAnyRejectElementSharedFun",
+ ("old_space", 0x037a5): "PromiseCapabilityDefaultRejectSharedFun",
+ ("old_space", 0x037c9): "PromiseCapabilityDefaultResolveSharedFun",
+ ("old_space", 0x037ed): "PromiseCatchFinallySharedFun",
+ ("old_space", 0x03811): "PromiseGetCapabilitiesExecutorSharedFun",
+ ("old_space", 0x03835): "PromiseThenFinallySharedFun",
+ ("old_space", 0x03859): "PromiseThrowerFinallySharedFun",
+ ("old_space", 0x0387d): "PromiseValueThunkFinallySharedFun",
+ ("old_space", 0x038a1): "ProxyRevokeSharedFun",
}
# Lower 32 bits of first page addresses for various heap spaces.
HEAP_FIRST_PAGES = {
- 0x08100000: "old_space",
- 0x08140000: "map_space",
- 0x08040000: "read_only_space",
+ 0x080c0000: "old_space",
+ 0x08100000: "map_space",
+ 0x08000000: "read_only_space",
}
# List of known V8 Frame Markers.
diff --git a/deps/v8/tools/v8windbg/BUILD.gn b/deps/v8/tools/v8windbg/BUILD.gn
index 5618d2d945..e30b826b0f 100644
--- a/deps/v8/tools/v8windbg/BUILD.gn
+++ b/deps/v8/tools/v8windbg/BUILD.gn
@@ -42,8 +42,6 @@ v8_shared_library("v8windbg") {
"src/cur-isolate.h",
"src/js-stack.cc",
"src/js-stack.h",
- "src/list-chunks.cc",
- "src/list-chunks.h",
"src/local-variables.cc",
"src/local-variables.h",
"src/object-inspection.cc",
@@ -56,6 +54,9 @@ v8_shared_library("v8windbg") {
deps = [
":v8windbg_base",
+ "../../:v8_flags",
+ "../../:v8_libbase",
+ "../../:v8_shared_internal_headers",
"../debug_helper:v8_debug_helper",
]
}
diff --git a/deps/v8/tools/v8windbg/README.md b/deps/v8/tools/v8windbg/README.md
index de6638e4d4..887f437b0d 100644
--- a/deps/v8/tools/v8windbg/README.md
+++ b/deps/v8/tools/v8windbg/README.md
@@ -41,8 +41,6 @@ functions that can be called from within `dx` commands:
like `dx @$v8object(0x34f49880471, "v8::internal::JSArray")`.
- `@$curisolate()` gets the Isolate pointer for the current thread, if the
current thread has a JavaScript Isolate associated.
-- `@$listchunks()` returns a list of the memory chunks in the Heap for the
- current Isolate.
- `@$jsstack()` returns a list of the JS stack frames, including information
about script and function.
@@ -67,8 +65,6 @@ functions declared in `dbgext.h` to create and destroy the extension instance.
`./src` file index:
- `cur-isolate.{cc,h}` implements the `IModelMethod` for `@$curisolate()`.
-- `list-chunks.{cc,h}` implements the `IModelMethod` for `@$listchunks()`. Its
- result is a custom object that supports iteration and indexing.
- `js-stack.{cc,h}` implements the `IModelMethod` for `@$jsstack()`. Its
result is a custom object that supports iteration and indexing.
- `local-variables.{cc,h}` implements the `IModelPropertyAccessor` that provides
diff --git a/deps/v8/tools/v8windbg/src/list-chunks.cc b/deps/v8/tools/v8windbg/src/list-chunks.cc
deleted file mode 100644
index 90b3ff6af6..0000000000
--- a/deps/v8/tools/v8windbg/src/list-chunks.cc
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2020 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.
-
-#include "tools/v8windbg/src/list-chunks.h"
-
-#include "tools/v8windbg/src/cur-isolate.h"
-
-// v8windbg!ListChunksAlias::Call
-IFACEMETHODIMP ListChunksAlias::Call(IModelObject* p_context_object,
- ULONG64 arg_count,
- _In_reads_(arg_count)
- IModelObject** pp_arguments,
- IModelObject** pp_result,
- IKeyStore** pp_metadata) noexcept {
- WRL::ComPtr<IDebugHostContext> sp_ctx;
- RETURN_IF_FAIL(sp_debug_host->GetCurrentContext(&sp_ctx));
-
- WRL::ComPtr<IModelObject> result;
- RETURN_IF_FAIL(
- sp_data_model_manager->CreateSyntheticObject(sp_ctx.Get(), &result));
-
- auto sp_iterator{WRL::Make<MemoryChunks>()};
-
- RETURN_IF_FAIL(result->SetConcept(
- __uuidof(IIndexableConcept),
- static_cast<IIndexableConcept*>(sp_iterator.Get()), nullptr));
- RETURN_IF_FAIL(result->SetConcept(
- __uuidof(IIterableConcept),
- static_cast<IIterableConcept*>(sp_iterator.Get()), nullptr));
-
- *pp_result = result.Detach();
- if (pp_metadata) {
- *pp_metadata = nullptr;
- }
- return S_OK;
-}
-
-ChunkData::ChunkData() = default;
-ChunkData::~ChunkData() = default;
-ChunkData::ChunkData(const ChunkData&) = default;
-ChunkData::ChunkData(ChunkData&&) = default;
-ChunkData& ChunkData::operator=(const ChunkData&) = default;
-ChunkData& ChunkData::operator=(ChunkData&&) = default;
-
-MemoryChunkIterator::MemoryChunkIterator(
- WRL::ComPtr<IDebugHostContext>& host_context)
- : sp_ctx_(host_context) {}
-MemoryChunkIterator::~MemoryChunkIterator() = default;
-
-HRESULT MemoryChunkIterator::PopulateChunkData() {
- WRL::ComPtr<IModelObject> sp_isolate, sp_heap, sp_space;
- chunks_.clear();
-
- RETURN_IF_FAIL(GetCurrentIsolate(sp_isolate));
-
- RETURN_IF_FAIL(
- sp_isolate->GetRawValue(SymbolField, L"heap_", RawSearchNone, &sp_heap));
- RETURN_IF_FAIL(
- sp_heap->GetRawValue(SymbolField, L"space_", RawSearchNone, &sp_space));
-
- WRL::ComPtr<IDebugHostType> sp_space_type;
- RETURN_IF_FAIL(sp_space->GetTypeInfo(&sp_space_type));
-
- // Iterate over the array of Space pointers
- WRL::ComPtr<IIterableConcept> sp_iterable;
- RETURN_IF_FAIL(
- sp_space->GetConcept(__uuidof(IIterableConcept), &sp_iterable, nullptr));
-
- WRL::ComPtr<IModelIterator> sp_space_iterator;
- RETURN_IF_FAIL(sp_iterable->GetIterator(sp_space.Get(), &sp_space_iterator));
-
- // Loop through all the spaces in the array
- WRL::ComPtr<IModelObject> sp_space_ptr;
- while (sp_space_iterator->GetNext(&sp_space_ptr, 0, nullptr, nullptr) !=
- E_BOUNDS) {
- // Should have gotten a "v8::internal::Space *". Dereference, then get field
- // "memory_chunk_list_" [Type: v8::base::List<v8::internal::MemoryChunk>]
- WRL::ComPtr<IModelObject> sp_space, sp_chunk_list, sp_mem_chunk_ptr,
- sp_mem_chunk;
- RETURN_IF_FAIL(sp_space_ptr->Dereference(&sp_space));
- RETURN_IF_FAIL(sp_space->GetRawValue(SymbolField, L"memory_chunk_list_",
- RawSearchNone, &sp_chunk_list));
-
- // Then get field "front_" [Type: v8::internal::MemoryChunk *]
- RETURN_IF_FAIL(sp_chunk_list->GetRawValue(
- SymbolField, L"front_", RawSearchNone, &sp_mem_chunk_ptr));
-
- // Loop here on the list of MemoryChunks for the space
- while (true) {
- // See if it is a nullptr (i.e. no chunks in this space)
- uint64_t front_val;
- RETURN_IF_FAIL(
- UnboxULong64(sp_mem_chunk_ptr.Get(), &front_val, true /*convert*/));
- if (front_val == 0) {
- break;
- }
-
- // Dereference and get fields "area_start_" and "area_end_" (both uint64)
- RETURN_IF_FAIL(sp_mem_chunk_ptr->Dereference(&sp_mem_chunk));
-
- WRL::ComPtr<IModelObject> sp_start, sp_end;
- RETURN_IF_FAIL(sp_mem_chunk->GetRawValue(SymbolField, L"area_start_",
- RawSearchNone, &sp_start));
- RETURN_IF_FAIL(sp_mem_chunk->GetRawValue(SymbolField, L"area_end_",
- RawSearchNone, &sp_end));
-
- ChunkData chunk_entry;
- chunk_entry.area_start = sp_start;
- chunk_entry.area_end = sp_end;
- chunk_entry.space = sp_space;
- chunks_.push_back(chunk_entry);
-
- // Follow the list_node_.next_ to the next memory chunk
- WRL::ComPtr<IModelObject> sp_list_node;
- RETURN_IF_FAIL(sp_mem_chunk->GetRawValue(SymbolField, L"list_node_",
- RawSearchNone, &sp_list_node));
-
- sp_mem_chunk_ptr = nullptr;
- sp_mem_chunk = nullptr;
- RETURN_IF_FAIL(sp_list_node->GetRawValue(
- SymbolField, L"next_", RawSearchNone, &sp_mem_chunk_ptr));
- // Top of the loop will check if this is a nullptr and exit if so
- }
- sp_space_ptr = nullptr;
- }
-
- return S_OK;
-}
-
-IFACEMETHODIMP MemoryChunkIterator::Reset() noexcept {
- position_ = 0;
- return S_OK;
-}
-
-IFACEMETHODIMP MemoryChunkIterator::GetNext(IModelObject** object,
- ULONG64 dimensions,
- IModelObject** indexers,
- IKeyStore** metadata) noexcept {
- if (dimensions > 1) return E_INVALIDARG;
-
- if (position_ == 0) {
- RETURN_IF_FAIL(PopulateChunkData());
- }
-
- if (metadata != nullptr) *metadata = nullptr;
-
- WRL::ComPtr<IModelObject> sp_index, sp_value;
-
- if (dimensions == 1) {
- RETURN_IF_FAIL(CreateULong64(position_, &sp_index));
- }
-
- RETURN_IF_FAIL(GetAt(position_, &sp_value));
-
- // Now update counter and transfer ownership of results, because nothing can
- // fail from this point onward.
- ++position_;
- if (dimensions == 1) {
- *indexers = sp_index.Detach();
- }
- *object = sp_value.Detach();
- return S_OK;
-}
-
-HRESULT MemoryChunkIterator::GetAt(uint64_t index,
- IModelObject** result) const {
- if (index >= chunks_.size()) return E_BOUNDS;
-
- // Create the synthetic object representing the chunk here
- const ChunkData& curr_chunk = chunks_.at(index);
- WRL::ComPtr<IModelObject> sp_value;
- RETURN_IF_FAIL(
- sp_data_model_manager->CreateSyntheticObject(sp_ctx_.Get(), &sp_value));
- RETURN_IF_FAIL(
- sp_value->SetKey(L"area_start", curr_chunk.area_start.Get(), nullptr));
- RETURN_IF_FAIL(
- sp_value->SetKey(L"area_end", curr_chunk.area_end.Get(), nullptr));
- RETURN_IF_FAIL(sp_value->SetKey(L"space", curr_chunk.space.Get(), nullptr));
-
- *result = sp_value.Detach();
- return S_OK;
-}
-
-MemoryChunks::MemoryChunks() = default;
-MemoryChunks::~MemoryChunks() = default;
-
-IFACEMETHODIMP MemoryChunks::GetDimensionality(
- IModelObject* context_object, ULONG64* dimensionality) noexcept {
- *dimensionality = 1;
- return S_OK;
-}
-
-IFACEMETHODIMP MemoryChunks::GetAt(IModelObject* context_object,
- ULONG64 indexer_count,
- IModelObject** indexers,
- IModelObject** object,
- IKeyStore** metadata) noexcept {
- if (indexer_count != 1) return E_INVALIDARG;
- if (metadata != nullptr) *metadata = nullptr;
- WRL::ComPtr<IDebugHostContext> sp_ctx;
- RETURN_IF_FAIL(context_object->GetContext(&sp_ctx));
-
- // This should be instantiated once for each synthetic object returned,
- // so should be able to cache/reuse an iterator
- if (opt_chunks_ == nullptr) {
- opt_chunks_ = WRL::Make<MemoryChunkIterator>(sp_ctx);
- _ASSERT(opt_chunks_ != nullptr);
- RETURN_IF_FAIL(opt_chunks_->PopulateChunkData());
- }
-
- uint64_t index;
- RETURN_IF_FAIL(UnboxULong64(indexers[0], &index, true /*convert*/));
-
- return opt_chunks_->GetAt(index, object);
-}
-
-IFACEMETHODIMP MemoryChunks::SetAt(IModelObject* context_object,
- ULONG64 indexer_count,
- IModelObject** indexers,
- IModelObject* value) noexcept {
- return E_NOTIMPL;
-}
-
-IFACEMETHODIMP MemoryChunks::GetDefaultIndexDimensionality(
- IModelObject* context_object, ULONG64* dimensionality) noexcept {
- *dimensionality = 1;
- return S_OK;
-}
-
-IFACEMETHODIMP MemoryChunks::GetIterator(IModelObject* context_object,
- IModelIterator** iterator) noexcept {
- WRL::ComPtr<IDebugHostContext> sp_ctx;
- RETURN_IF_FAIL(context_object->GetContext(&sp_ctx));
- auto sp_memory_iterator{WRL::Make<MemoryChunkIterator>(sp_ctx)};
- *iterator = sp_memory_iterator.Detach();
- return S_OK;
-}
diff --git a/deps/v8/tools/v8windbg/src/list-chunks.h b/deps/v8/tools/v8windbg/src/list-chunks.h
deleted file mode 100644
index 10eec100d1..0000000000
--- a/deps/v8/tools/v8windbg/src/list-chunks.h
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2020 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_TOOLS_V8WINDBG_SRC_LIST_CHUNKS_H_
-#define V8_TOOLS_V8WINDBG_SRC_LIST_CHUNKS_H_
-
-#include <crtdbg.h>
-#include <wrl/implements.h>
-
-#include <optional>
-#include <string>
-#include <vector>
-
-#include "src/base/optional.h"
-#include "tools/v8windbg/base/utilities.h"
-#include "tools/v8windbg/src/v8-debug-helper-interop.h"
-#include "tools/v8windbg/src/v8windbg-extension.h"
-
-class ListChunksAlias
- : public WRL::RuntimeClass<
- WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
- IModelMethod> {
- public:
- IFACEMETHOD(Call)
- (IModelObject* p_context_object, ULONG64 arg_count,
- _In_reads_(arg_count) IModelObject** pp_arguments, IModelObject** pp_result,
- IKeyStore** pp_metadata);
-};
-
-struct ChunkData {
- ChunkData();
- ~ChunkData();
- ChunkData(const ChunkData&);
- ChunkData(ChunkData&&);
- ChunkData& operator=(const ChunkData&);
- ChunkData& operator=(ChunkData&&);
- WRL::ComPtr<IModelObject> area_start;
- WRL::ComPtr<IModelObject> area_end;
- WRL::ComPtr<IModelObject> space;
-};
-
-class MemoryChunkIterator
- : public WRL::RuntimeClass<
- WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
- IModelIterator> {
- public:
- MemoryChunkIterator(WRL::ComPtr<IDebugHostContext>& host_context);
- ~MemoryChunkIterator() override;
-
- HRESULT PopulateChunkData();
-
- IFACEMETHOD(Reset)();
-
- IFACEMETHOD(GetNext)
- (IModelObject** object, ULONG64 dimensions, IModelObject** indexers,
- IKeyStore** metadata);
-
- const std::vector<ChunkData>& GetChunks() const { return chunks_; }
-
- HRESULT GetAt(uint64_t index, IModelObject** result) const;
-
- private:
- ULONG position_ = 0;
- std::vector<ChunkData> chunks_;
- WRL::ComPtr<IDebugHostContext> sp_ctx_;
-};
-
-class MemoryChunks
- : public WRL::RuntimeClass<
- WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
- IIndexableConcept, IIterableConcept> {
- public:
- MemoryChunks();
- ~MemoryChunks() override;
-
- // IIndexableConcept members
- IFACEMETHOD(GetDimensionality)
- (IModelObject* context_object, ULONG64* dimensionality);
-
- IFACEMETHOD(GetAt)
- (IModelObject* context_object, ULONG64 indexer_count, IModelObject** indexers,
- IModelObject** object, IKeyStore** metadata);
-
- IFACEMETHOD(SetAt)
- (IModelObject* context_object, ULONG64 indexer_count, IModelObject** indexers,
- IModelObject* value);
-
- // IIterableConcept
- IFACEMETHOD(GetDefaultIndexDimensionality)
- (IModelObject* context_object, ULONG64* dimensionality);
-
- IFACEMETHOD(GetIterator)
- (IModelObject* context_object, IModelIterator** iterator);
-
- private:
- WRL::ComPtr<MemoryChunkIterator> opt_chunks_;
-};
-
-#endif // V8_TOOLS_V8WINDBG_SRC_LIST_CHUNKS_H_
diff --git a/deps/v8/tools/v8windbg/src/v8windbg-extension.cc b/deps/v8/tools/v8windbg/src/v8windbg-extension.cc
index 7fbe39d192..55014cfc8e 100644
--- a/deps/v8/tools/v8windbg/src/v8windbg-extension.cc
+++ b/deps/v8/tools/v8windbg/src/v8windbg-extension.cc
@@ -9,14 +9,12 @@
#include "tools/v8windbg/base/utilities.h"
#include "tools/v8windbg/src/cur-isolate.h"
#include "tools/v8windbg/src/js-stack.h"
-#include "tools/v8windbg/src/list-chunks.h"
#include "tools/v8windbg/src/local-variables.h"
#include "tools/v8windbg/src/object-inspection.h"
std::unique_ptr<Extension> Extension::current_extension_ = nullptr;
const wchar_t* pcur_isolate = L"curisolate";
const wchar_t* pjs_stack = L"jsstack";
-const wchar_t* plist_chunks = L"listchunks";
const wchar_t* pv8_object = L"v8object";
HRESULT CreateExtension() {
@@ -263,7 +261,6 @@ HRESULT Extension::Initialize() {
std::vector<std::pair<const wchar_t*, WRL::ComPtr<IModelMethod>>> functions =
{{pcur_isolate, WRL::Make<CurrIsolateAlias>()},
{pjs_stack, WRL::Make<JSStackAlias>()},
- {plist_chunks, WRL::Make<ListChunksAlias>()},
{pv8_object, WRL::Make<InspectV8ObjectMethod>()}};
for (const auto& function : functions) {
WRL::ComPtr<IModelObject> method;
@@ -375,7 +372,6 @@ Extension::RegistrationType& Extension::RegistrationType::operator=(
Extension::~Extension() {
sp_debug_host_extensibility->DestroyFunctionAlias(pcur_isolate);
sp_debug_host_extensibility->DestroyFunctionAlias(pjs_stack);
- sp_debug_host_extensibility->DestroyFunctionAlias(plist_chunks);
sp_debug_host_extensibility->DestroyFunctionAlias(pv8_object);
for (const auto& registered : registered_types_) {
diff --git a/deps/v8/tools/whitespace.txt b/deps/v8/tools/whitespace.txt
index 61fd2e9486..f890e67970 100644
--- a/deps/v8/tools/whitespace.txt
+++ b/deps/v8/tools/whitespace.txt
@@ -6,9 +6,9 @@ A Smi balks into a war and says:
"I'm so deoptimized today!"
The doubles heard this and started to unbox.
The Smi looked at them when a crazy v8-autoroll account showed up...
-The autoroller bought a round of Himbeerbrause. Suddenly.....
+The autoroller bought a round of Himbeerbrause. Suddenly.......
The bartender starts to shake the bottles...........................
-I can't add trailing whitespaces, so I'm adding this line...........
+I can't add trailing whitespaces, so I'm adding this line............
I'm starting to think that just adding trailing whitespaces might not be bad.
Because whitespaces are not that funny......